cscope.out   [plain text]


cscope 15 $HOME/berkeleydb/db-4.6.21/dist               0004923159
	@../btree/bt_compact.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/txn.h
"

19 
__bam_com_dups
 
__P
((
DBC
 *,

20 
PAGE
 **, 
u_t32_t
, , 
DB_COMPACT
 *, *));

21 
__bam_com_t
 
__P
((
DBC
 *,

22 
DBT
 *, DBT *, 
u_t32_t
, *, 
DB_COMPACT
 *, *));

23 
__bam_cch
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
, ));

24 
__bam_mge
 
__P
((
DBC
 *,

25 
DBC
 *, 
u_t32_t
, 
DBT
 *, 
DB_COMPACT
 *,*));

26 
__bam_mge_
 
__P
((
DBC
 *, DBC *, , 
DB_COMPACT
 *, *));

27 
__bam_mge_ges
 
__P
((
DBC
 *, DBC *, 
DB_COMPACT
 *));

28 
__bam_mge_cds
 
__P
((
DBC
 *, DBC*, 
u_t32_t
, 
DB_COMPACT
 *));

29 
__bam_un__ovow
 
__P
((
DBC
 *, 
PAGE
 *, 
DB_COMPACT
 *));

30 
__bam_un_ovow
 
__P
((
DBC
 *,

31 
db_pgno_t
, db_pgno_t, 
DB_COMPACT
 *));

32 
__bam_un_ge
 
__P
((
DBC
 *, 
PAGE
 **, ));

33 
__bam_un_ro_ge
 
__P
((
DBC
 *,

34 
PAGE
 *, 
u_t32_t
, 
DB_COMPACT
 *));

36 #ifde
HAVE_FTRUNCATE


37 
__bam__li
 
__P
((
DB
 *, 
DB_TXN
 *));

38 
__bam_vekey
 
__P
((
DBC
 *, , 
DBT
 *));

39 
__bam_tup_li
 
__P
((
DB
 *, 
pgli
 *, 
u_t32_t
));

40 
__bam_un_
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_COMPACT
 *));

43 
	#SAVE_START
 \

45 
ve_da
 = *
c_da
; \

46 
t
 = 
	`__db_tcy
(
dbv
, \

47 &
ve_t
, 
cut
.
da
, cut.
size
, \

48 &
ve_t
.
da
, &ve_t.
un
); \

49 } 0)

	)

56 
	#RESTORE_START
 \

58 
c_da
->
com_ges_
 = \

59 
ve_da
.
com_ges_
; \

60 
c_da
->
com_vs
 = 
ve_da
.compact_levels; \

61 
c_da
->
com_un
 = 
ve_da
.compact_truncate; \

62 
t
 = 
	`__db_tcy
(
dbv
, &
cut
, \

63 
ve_t
.
da
, save_t.
size
, \

64 &
cut
.
da
, &cut.
un
); \

65 } 0)

	)

73 
	$__bam_com
(
dbp
, 
txn
, 
t
, 

, 
c_da
, 
ags
, 
d
)

74 
DB
 *
dbp
;

75 
DB_TXN
 *
txn
;

76 
DBT
 *
t
, *

;

77 
DB_COMPACT
 *
c_da
;

78 
u_t32_t
 
ags
;

79 
DBT
 *
d
;

81 
DBT
 
cut
, 
ve_t
;

82 
DBC
 *
dbc
;

83 
DB_COMPACT
 
ve_da
;

84 
DB_ENV
 *
dbv
;

85 
u_t32_t
 

;

86 
ddlock
, 
de
, 
t
, 

, 
t_t
, 
txn_lol
;

88 #ifde
HAVE_FTRUNCATE


89 
pgli
 *
li
;

90 
db_pgno_t
 
ϡ_pgno
;

91 
u_t32_t
 
ms
, 
und
;

94 
dbv
 = 
dbp
->dbenv;

96 
	`memt
(&
cut
, 0, (current));

97 
	`memt
(&
ve_t
, 0, (save_start));

98 
dbc
 = 
NULL
;

99 

 = 0;

100 
ddlock
 = 
de
 = 
t
 = 

 = 0;

102 #ifde
HAVE_FTRUNCATE


103 
li
 = 
NULL
;

104 
ϡ_pgno
 = 0;

105 
ms
 = 
und
 = 0;

113 i(
t
 !
NULL
 && (
t
 = 
	`__db_tcy
(
dbv
,

114 &
cut
, 
t
->
da
, s->
size
,

115 &
cut
.
da
, &cut.
un
)) != 0)

116  (
t
);

118 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
))

119 
txn_lol
 = 1;

121 
txn_lol
 = 0;

122 i(!
	`LF_ISSET
(
DB_FREE_SPACE
 | 
DB_FREELIST_ONLY
))

123 
no_
;

124 i(
	`LF_ISSET
(
DB_FREELIST_ONLY
))

125 
	`LF_SET
(
DB_FREE_SPACE
);

127 #ifde
HAVE_FTRUNCATE


129 i(
txn_lol
 && (
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

130 
r
;

132 i((
t
 = 
	`__db__un
(
dbp
,

133 
txn
, 
ags
, 
c_da
, &
li
, &
ms
, &
ϡ_pgno
)) != 0) {

134 
	`LF_CLR
(
DB_FREE_SPACE
);

135 

;

139 i(
ms
 =0 && 
	`LF_ISSET
(
DB_FREELIST_ONLY
)) {

140 
t
 = 0;

141 
	`LF_CLR
(
DB_FREE_SPACE
);

142 

;

144 i((
t
 = 
	`__bam_tup_li
(
dbp
, 
li
, 
ms
)) != 0) {

146 i(
t
 =
EBUSY
)

147 
t
 = 0;

151 

: i(
txn_lol
) {

152 i((
t_t
 = 
	`__txn_comm
(
txn
, 
DB_TXN_NOSYNC
)!0 && 
t
 == 0)

153 
t
 = 
t_t
;

154 
txn
 = 
NULL
;

156 i(
t
 != 0)

157 
r
;

160 
und
 = 
c_da
->
com_ges_und
;

161 i(
	`LF_ISSET
(
DB_FREELIST_ONLY
))

162 
de
;

172 
no_
:

173 

 = 
dbp
->
pgsize
 - 
SIZEOF_PAGE
;

174 i(
c_da
->
com_f͔
 != 0) {

175 

 *
c_da
->
com_f͔
;

176 

 /= 100;

179 

 = (
dbp
->
pgsize
 - 
SIZEOF_PAGE
) - factor;

181 i(
c_da
->
com_ges
 == 0)

182 
c_da
->
com_ges
 = 
DB_MAX_PAGES
;

185 
ddlock
 = 0;

187 
SAVE_START
;

188 i(
t
 != 0)

191 i(
txn_lol
) {

192 i((
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

195 i(
c_da
->
com_timeout
 != 0 &&

196 (
t
 = 
	`__txn_t_timeout
(
txn
,

197 
c_da
->
com_timeout
, 
DB_SET_LOCK_TIMEOUT
)) != 0)

198 
r
;

201 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 0)) != 0)

202 
r
;

204 i((
t
 = 
	`__bam_com_t
(
dbc
, &
cut
, 

, 

,

205 &

, 
c_da
, &
de
)=
DB_LOCK_DEADLOCK
 && 
txn_lol
) {

211 
ddlock
 = 1;

212 
c_da
->
com_ddlock
++;

213 
RESTORE_START
;

216 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

217 
t
 = 
t_t
;

219 
r
: i(
txn_lol
 && 
txn
 !
NULL
) {

220 i(
t
 =0 && 
ddlock
 == 0)

221 
t
 = 
	`__txn_comm
(
txn
, 
DB_TXN_NOSYNC
);

222 i((
t_t
 = 
	`__txn_abt
(
txn
)!0 && 
t
 == 0)

223 
t
 = 
t_t
;

224 
txn
 = 
NULL
;

226 } 
t
 =0 && !
de
);

228 i(
t
 =0 && 
d
 !
NULL
)

229 
t
 = 
	`__db_tcy
(
dbv
, 
d
, 
cut
.
da
, cut.
size
,

230 &
d
->
da
, &d->
un
);

231 i(
cut
.
da
 !
NULL
)

232 
	`__os_
(
dbv
, 
cut
.
da
);

233 i(
ve_t
.
da
 !
NULL
)

234 
	`__os_
(
dbv
, 
ve_t
.
da
);

236 #ifde
HAVE_FTRUNCATE


243 
de
: i(
	`LF_ISSET
(
DB_FREE_SPACE
)) {

244 
DBMETA
 *
ma
;

245 
db_pgno_t
 
pgno
;

247 
pgno
 = 
PGNO_BASE_MD
;

248 
de
 = 1;

249 i(
t
 =0 && !
	`LF_ISSET
(
DB_FREELIST_ONLY
&& (
t_t
 =

250 
	`__memp_fg
(
dbp
->
mpf
, &
pgno
, 
txn
, 0, &
ma
)) == 0) {

251 
de
 = 
ma
->

 =
PGNO_INVALID
;

252 
t
 = 
	`__memp_ut
(
dbp
->
mpf
, 
ma
, 
dbc
->
iܙy
);

255 i(!
de
)

256 
t
 = 
	`__bam_un_
(
dbp
, 
txn
, 
c_da
);

259 i(
li
 !
NULL
)

260 
	`__os_
(
dbv
, 
li
);

262 i((
t_t
 =

263 
	`__memp_fg
(
dbp
->
mpf
, &
pgno
, 
txn
, 0, &
ma
)) == 0) {

264 
c_da
->
com_ges_und
 =

265 
und
 + 
ϡ_pgno
 - 
ma
->last_pgno;

266 i((
t_t
 = 
	`__memp_ut
(

267 
dbp
->
mpf
, 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

268 
t
 = 
t_t
;

269 } i(
t
 == 0)

270 
t
 = 
t_t
;

272 i((
t_t
 = 
	`__bam__li
(
dbp
, 
txn
)!0 && 
t
 == 0)

273 
t_t
 = 
t
;

277  (
t
);

278 
	}
}

285 
	#CS_READ
 0

	)

286 
	#CS_PARENT
 1

	)

287 
	#CS_NEXT
 2

	)

288 
	#CS_NEXT_WRITE
 3

	)

289 
	#CS_DEL
 4

	)

290 
	#CS_START
 5

	)

291 
	#CS_GETRECNO
 0x80

	)

294 
	$__bam_cch
(
dbc
, 
t
, 
sag
, 
v
)

295 
DBC
 *
dbc
;

296 
DBT
 *
t
;

297 
u_t32_t
 
sag
;

298 
v
;

300 
BTREE_CURSOR
 *

;

301 
n_ud
, 
t
;

303 

 = (
BTREE_CURSOR
 *)
dbc
->

;

305 i(
dbc
->
dbty
 =
DB_RECNO
) {

307 i(
	`FLD_ISSET
(
sag
, 
CS_GETRECNO
)) {

308 i(
t
 =
NULL
 || s->
size
 == 0)

309 

->
o
 = 1;

310 i((
t
 =

311 
	`__m_gno
(
dbc
, 
t
, &

->
o
, 0)) != 0)

312  (
t
);

313 
	`FLD_CLR
(
sag
, 
CS_GETRECNO
);

315 
sag
) {

316 
CS_READ
:

317 
sag
 = 
SR_READ
;

319 
CS_NEXT
:

320 
sag
 = 
SR_PARENT
 | 
SR_READ
;

322 
CS_START
:

323 
v
 = 
LEAFLEVEL
;

325 
CS_DEL
:

326 
CS_NEXT_WRITE
:

327 
sag
 = 
SR_STACK
;

329 
CS_PARENT
:

330 
sag
 = 
SR_PARENT
 | 
SR_WRITE
;

333  (
	`__db_nic
(
dbc
->
dbp
->
dbv
, 
EINVAL
));

335 i((
t
 = 
	`__bam_rch
(
dbc
,

336 &

->
o
, 
sag
, 
v
, &
n_ud
)) != 0)

337  (
t
);

339 

->
o
 -->
c
->
dx
;

341 
	`FLD_CLR
(
sag
, 
CS_GETRECNO
);

342 
sag
) {

343 
CS_READ
:

344 
sag
 = 
SR_READ
 | 
SR_DUPFIRST
;

346 
CS_DEL
:

347 
sag
 = 
SR_DEL
;

349 
CS_NEXT
:

350 
sag
 = 
SR_NEXT
;

352 
CS_NEXT_WRITE
:

353 
sag
 = 
SR_NEXT
 | 
SR_WRITE
;

355 
CS_START
:

356 
sag
 = 
SR_START
 | 
SR_WRITE
;

358 
CS_PARENT
:

359 
sag
 = 
SR_PARENT
 | 
SR_WRITE
;

362  (
	`__db_nic
(
dbc
->
dbp
->
dbv
, 
EINVAL
));

364 i(
t
 =
NULL
 || s->
size
 == 0)

365 
	`FLD_SET
(
sag
, 
SR_MIN
);

367 i((
t
 = 
	`__bam_ch
(
dbc
,

368 

->
ro
, 
t
, 
sag
, 
v
, 
NULL
, &
n_ud
)) != 0)

369  (
t
);

373 
	}
}

382 
	$__bam_com_t
(
dbc
, 
t
, 

, 

, 
p
, 
c_da
, 
dڕ
)

383 
DBC
 *
dbc
;

384 
DBT
 *
t
, *

;

385 
u_t32_t
 

;

386 *
p
;

387 
DB_COMPACT
 *
c_da
;

388 *
dڕ
;

390 
BTREE_CURSOR
 *

, *
n
;

391 
DB
 *
dbp
;

392 
DBC
 *
ndbc
;

393 
DB_ENV
 *
dbv
;

394 
DB_LOCK
 
nock
;

395 
EPG
 *
g
;

396 
DB_MPOOLFILE
 *
dbmp
;

397 
PAGE
 *
pg
, *
g
, *
g
;

398 
db_pgno_t
 
gno
;

399 
db_o_t
 
xt_o
;

400 
u_t32_t
 
sag
;

401 
check_dups
, 
check_unc
, 
de
, 
v
;

402 
mged
, 
ry
, 
xt_ge
, 
pgs_de
, 
t
, 
t_t
, 
tde
;

404 #ifdef 
DEBUG


405 
	#CTRACE
(
dbc
, 
loti
, 
t
, 
t
, 
f
) do { \

406 
DBT
 
__a
; \

407 
	`DB_SET_DBT
(
__a
, 
t
, 
	`
(t)); \

408 
	`DEBUG_LWRITE
( \

409 
dbc
, (dbc)->
txn
, 
loti
, &
__a
, 
t
, 
f
) \

410 } 0)

	)

411 
	#PTRACE
(
dbc
, 
loti
, 
p
, 
t
, 
f
) do { \

412 
__buf
[32]; \

413 ()
	`tf
(
__buf
, \

414 (
__buf
), "pgno: %lu", (
u_lg
)
p
); \

415 
	`CTRACE
(
dbc
, 
loti
, 
__buf
, 
t
, 
f
); \

416 } 0)

	)

418 
	#CTRACE
(
dbc
, 
loti
, 
t
, 
t
, 
f
)

	)

419 
	#PTRACE
(
dbc
, 
loti
, 
p
, 
t
, 
f
)

	)

422 
ndbc
 = 
NULL
;

423 
pg
 = 
NULL
;

424 
g
 = 
NULL
;

425 
de
 = 0;

426 
tde
 = 0;

427 
pgs_de
 = 0;

428 
xt_o
 = 0;

429 
xt_ge
 = 0;

430 
	`LOCK_INIT
(
nock
);

431 
check_unc
 = 
c_da
->
com_un
 !
PGNO_INVALID
;

432 
check_dups
 = (!
	`F_ISSET
(
dbc
, 
DBC_OPD
) &&

433 
	`F_ISSET
(
dbc
->
dbp
, 
DB_AM_DUP
)|| 
check_unc
;

435 
dbp
 = 
dbc
->dbp;

436 
dbv
 = 
dbp
->dbenv;

437 
dbmp
 = 
dbp
->
mpf
;

438 

 = (
BTREE_CURSOR
 *)
dbc
->

;

441 i((
t
 = 
	`__bam_cch
(
dbc
,

442 
t
, 
CS_READ
 | 
CS_GETRECNO
, 
LEAFLEVEL
)) != 0) {

444 i(
t
 =
DB_NOTFOUND
)

445 
t
 = 0;

446 
de
 = 1;

447 
r
;

454 
pg
 = 

->
c
->
ge
;

455 

->
c
->
ge
 = 
NULL
;

456 
xt_o
 = 

->
o
;

457 
xt
:

474 (
gno
 = 
	`NEXT_PGNO
(
pg
)!
PGNO_INVALID
) {

475 
c_da
->
com_ges_exame
++;

476 
	`PTRACE
(
dbc
, "Next", 
	`PGNO
(
pg
), 
t
, 0);

479 i(
xt_ge
 == 1 &&

480 
dbc
->
dbty
 !
DB_RECNO
 && 
	`NUM_ENT
(
pg
) != 0) {

481 i((
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
, 
pg
,

482 0, 
t
, &t->
da
, &t->
un
)) != 0)

483 
r
;

485 
xt_o
 +
	`NUM_ENT
(
pg
);

486 i(
	`P_FREESPACE
(
dbp
, 
pg
> 

 ||

487 (
check_unc
 && 
	`PGNO
(
pg
> 
c_da
->
com_un
))

494 

->
o
 +
	`NUM_ENT
(
pg
);

495 
xt_ge
 = 1;

496 
tde
 = 
pgs_de
;

497 
	`PTRACE
(
dbc
, "Dups", 
	`PGNO
(
pg
), 
t
, 0);

498 i(
check_dups
 && (
t
 = 
	`__bam_com_dups
(

499 
dbc
, &
pg
, 

, 0, 
c_da
, &
pgs_de
)) != 0)

500 
r
;

501 
gno
 = 
	`NEXT_PGNO
(
pg
);

502 i((
t
 = 
	`__memp_ut
(
dbmp
, 
pg
, 
dbc
->
iܙy
)) != 0)

503 
r
;

504 
pg
 = 
NULL
;

509 i((
t
 = 
	`__db_lg
(
dbc
,

510 
tde
 =
pgs_de
 ? 
LCK_COUPLE_ALWAYS
 : 
LCK_COUPLE
,

511 
gno
, 
DB_LOCK_READ
, 0, &

->
c
->
lock
)) != 0)

512 
r
;

513 i((
t
 = 
	`__memp_fg
(
dbmp
, &
gno
, 
dbc
->
txn
, 0, &
pg
)) != 0)

514 
r
;

527 i((
ry
 = 
	`NUM_ENT
(
pg
)) != 0) {

528 
xt_ge
 = 0;

530 i(
dbc
->
dbty
 =
DB_RECNO
) {

531 i((
t
 = 
	`__db_tcy
(
dbp
->
dbv
, 
t
,

532 &

->
o
, (cp->recno),

533 &
t
->
da
, &t->
un
)) != 0)

534 
r
;

535 } i(
t
->
size
 == 0 &&

536 (
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
, 
pg
,

537 0, 
t
, &t->
da
, &t->
un
)) != 0)

538 
r
;

540 i(
gno
 =
PGNO_INVALID
) {

542 
	`PTRACE
(
dbc
, "GoDe", 
	`PGNO
(
pg
), 
t
, 0);

543 i(
check_dups
 && (
t
 = 
	`__bam_com_dups
(
dbc
,

544 &
pg
, 

, 0, 
c_da
, &
pgs_de
)) != 0)

545 
r
;

546 
c_da
->
com_ges_exame
++;

547 
de
 = 1;

548 
de
;

553 i((
t
 = 
	`__LPUT
(
dbc
, 

->
c
->
lock
)) != 0)

554 
r
;

555 i((
t
 = 
	`__memp_ut
(
dbmp
, 
pg
, 
dbc
->
iܙy
)) != 0)

556 
r
;

557 
	`BT_STK_CLR
(

);

558 
pg
 = 
NULL
;

582 i(
ry
 == 0) {

583 
	`CTRACE
(
dbc
, "Emy", "", 
t
, 0);

584 i(
xt_ge
 == 1)

585 
sag
 = 
CS_NEXT_WRITE
;

587 
sag
 = 
CS_DEL
;

588 i((
t
 = 
	`__bam_cch
(
dbc
, 
t
, 
sag
, 
LEAFLEVEL
)) != 0)

589 
r
;

591 
pg
 = 

->
c
->
ge
;

593 i(
	`NUM_ENT
(
pg
) != 0)

594 
gno
 = 
	`PGNO
(
pg
);

596 
gno
 = 
	`NEXT_PGNO
(
pg
);

598 i(
	`PGNO
(
pg
=

->
ro
)

599 
de
 = 1;

601 i((
t
 = 
	`__bam_dges
(
dbc
, 0, 0)) != 0)

602 
r
;

603 
c_da
->
com_ges_
++;

604 
xt_no_a
;

607 
xt_ge
;

611 i(*
p
) {

612 
	`CTRACE
(
dbc
, "Sn", "", 
t
, 0);

613 i(
ndbc
 =
NULL
 && (
t
 = 
	`__dbc_dup
(
dbc
, &ndbc, 0)) != 0)

614 
r
;

615 
n
 = (
BTREE_CURSOR
 *)
ndbc
->

;

616 
n
->
o
 = 
xt_o
;

623 i((
t
 = 
	`__bam_cch
(
ndbc
, 
t
, 
CS_NEXT_WRITE
, 0)) != 0)

624 
r
;

626 i(
dbc
->
dbty
 =
DB_RECNO
) {

633 i(
n
->
c
[-1].
dx
 != 0) {

634 *
p
 = 0;

635 
ded
;

639 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

640 &
n
->
c
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

641 
r
;

642 
	`PTRACE
(
dbc
, "SDups", 
	`PGNO
(
n
->
c
->
ge
), 
t
, 0);

643 i(
check_dups
 && (
t
 = 
	`__bam_com_dups
(
ndbc
,

644 &
n
->
c
->
ge
, 

, 1, 
c_da
, &
pgs_de
)) != 0)

645 
r
;

648 i(
	`PGNO
(
n
->
c
->
ge
=n->
ro
)

649 
de
;

654 
v
 = 
	`LEVEL
(
n
->

->
ge
);

655 
sag
 = 
CS_START
;

656 i((
t
 = 
	`__bam_cch
(
dbc
, 
t
, 
sag
, 
v
)) != 0)

657 
r
;

658 
pg
 = 

->
c
->
ge
;

659 *
p
 = 0;

666 i(
	`NUM_ENT
(
pg
) == 0) {

667 
gno
 = 
	`PGNO
(
pg
);

668 
xt_ge
;

670 i(
check_unc
 && 
	`PGNO
(
pg
> 
c_da
->
com_un
) {

671 
pgs_de
++;

673 i((
t
 = 
	`__bam_un_ge
(
dbc
, &
pg
, 1)) != 0)

674 
r1
;

677 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

678 &

->
c
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

679 
r1
;

680 
pg
 = 

->
c
->
ge
;

681 
gno
 = 
	`NEXT_PGNO
(
pg
);

682 
	`PTRACE
(
dbc
, "SDups", 
	`PGNO
(
pg
), 
t
, 0);

683 i(
check_dups
 && (
t
 =

684 
	`__bam_com_dups
(
dbc
, &

->
c
->
ge
,

685 

, 1, 
c_da
, &
pgs_de
)) != 0)

686 
r1
;

694 i(
	`P_FREESPACE
(
dbp
, 
pg
<

 ||

695 

->
c
[-1].
dx
 !
	`NUM_ENT
(->c[-1].
ge
) - 1)

696 
xt_ge
;

701 
mged
 = 0;

702 
g
 = 

->

;pg !->
c
;pg++) {

703 i(
	`PGNO
(
g
->
ge
=

->
ro
)

705 
	`PTRACE
(
dbc
, "PMge", 
	`PGNO
(
g
->
ge
), 
t
, 0);

706 i((
t
 = 
	`__bam_mge_
(
dbc
,

707 
ndbc
, 
	`LEVEL
(
g
->
ge
), 
c_da
, &
mged
)) != 0)

708 
r1
;

709 i(
mged
)

714 i(
mged
) {

715 
pgs_de
++;

716 i(

->
c
->
ge
 =
NULL
)

717 
ded
;

718 
gno
 = 
	`PGNO
(
pg
);

719 
xt_ge
;

721 
	`PTRACE
(
dbc
, "SMge", 
	`PGNO
(

->
c
->
ge
), 
t
, 0);

722 
gno
 = 
	`NEXT_PGNO
(
n
->
c
->
ge
);

723 i((
t
 = 
	`__bam_mge
(
dbc
,

724 
ndbc
, 

, 

, 
c_da
, &
de
)) != 0)

725 
r1
;

726 
pgs_de
++;

731 i(

->
c
->
ge
 =
NULL
)

732 
ded
;

733 

->
o
 +
	`NUM_ENT
(
pg
);

736 i(
gno
 !
	`NEXT_PGNO
(
pg
)) {

737 
gno
 = 
	`NEXT_PGNO
(
pg
);

738 
xt_ge
;

742 
	`CTRACE
(
dbc
, "Sib", "", 
t
, 0);

743 i((
t
 =

744 
	`__bam_cch
(
dbc
, 
t
, 
CS_PARENT
, 
LEAFLEVEL
)) != 0)

745 
r
;

747 
pg
 = 

->
c
->
ge
;

748 
gno
 = 
	`PGNO
(
pg
);

751 i((
ry
 = 
	`NUM_ENT
(
pg
)) == 0)

752 
xt_ge
;

754 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
, &

->
c
->
ge
,

755 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

756 
r
;

757 
pg
 = 

->
c
->
ge
;

759 
gno
 = 
	`NEXT_PGNO
(
pg
);

762 
	`PTRACE
(
dbc
, "SibDup", 
	`PGNO
(
pg
), 
t
, 0);

763 i(
check_dups
 && (
t
 =

764 
	`__bam_com_dups
(
dbc
, &

->
c
->
ge
,

765 

, 1, 
c_da
, &
pgs_de
)) != 0)

766 
r1
;

767 
pg
 = 

->
c
->
ge
;

770 i(
	`PGNO
(
pg
=

->
ro
)

771 
r1
;

772 
	`DB_ASSERT
(
dbv
, 

->
c
 - cp->

 == 1);

774 i(
check_unc
 && 
	`PGNO
(
pg
> 
c_da
->
com_un
) {

775 
pgs_de
++;

777 i((
t
 = 
	`__bam_un_ge
(
dbc
, &
pg
, 1)) != 0)

778 
r1
;

782 i(
	`P_FREESPACE
(
dbp
, 
pg
<

)

783 
xt_ge
;

786 i(
ndbc
 !
NULL
 && (
t
 = 
	`__dbc_o
(ndbc)) != 0)

787 
r1
;

788 i((
t
 = 
	`__dbc_dup
(
dbc
, &
ndbc
, 
DB_POSITION
)) != 0)

789 
r1
;

790 
n
 = (
BTREE_CURSOR
 *)
ndbc
->

;

796 
n
->
o
 +
	`NUM_ENT
(
pg
);

800 !
de
 && 
gno
 !
PGNO_INVALID
 &&

801 
	`P_FREESPACE
(
dbp
, 
pg
> 

 && 
c_da
->
com_ges
 != 0) {

810 i(

->
c
[-1].
dx
 =
	`NUM_ENT
(->c[-1].
ge
) - 1) {

811 *
p
 = 1;

812 
gno
 = 
	`PGNO
(
pg
);

813 
xt_o
 = 

->
o
;

814 
xt_ge
;

818 i((
t
 = 
	`__db_lg
(
dbc
, 
LCK_COUPLE
,

819 
gno
, 
DB_LOCK_WRITE
, 0, &
n
->
lock
)) != 0)

820 
r1
;

821 i((
t
 = 
	`__memp_fg
(
dbmp
, &
gno
, 
dbc
->
txn
,

822 
DB_MPOOL_DIRTY
, &
g
)) != 0)

823 
r1
;

826 i((
t
 = 
	`__memp_fg
(
dbmp
, &
	`PGNO
(

->
c
[-1].
ge
),

827 
dbc
->
txn
, 0, &
g
)) != 0)

828 
r1
;

829 
	`BT_STK_PUSH
(
dbv
, 
n
, 
g
,

830 

->
c
[-1].
dx
 + 1, 
nock
, 
DB_LOCK_NG
, 
t
);

831 i(
t
 != 0)

832 
r1
;

835 
	`BT_STK_ENTER
(
dbv
, 
n
, 
g
, 0,->
lock
, 
DB_LOCK_WRITE
, 
t
);

837 
	`LOCK_INIT
(
n
->
lock
);

838 
g
 = 
NULL
;

840 
c_da
->
com_ges_exame
++;

842 
	`PTRACE
(
dbc
, "MDups", 
	`PGNO
(
n
->
c
->
ge
), 
t
, 0);

843 i(
check_dups
 && (
t
 = 
	`__bam_com_dups
(
ndbc
,

844 &
n
->
c
->
ge
, 

, 1, 
c_da
, &
pgs_de
)) != 0)

845 
r1
;

847 
gno
 = 
	`NEXT_PGNO
(
n
->
c
->
ge
);

852 
	`PTRACE
(
dbc
, "Mge", 
	`PGNO
(

->
c
->
ge
), 
t
, 0);

853 i((
t
 = 
	`__bam_mge
(
dbc
,

854 
ndbc
, 

, 

, 
c_da
, &
de
)) != 0)

855 
r1
;

857 
pgs_de
++;

863 i(

->
c
->
ge
 =
NULL
)

864 
ded
;

866 i(
gno
 !
	`NEXT_PGNO
(
pg
))

871 
gno
 = 
	`NEXT_PGNO
(
pg
);

872 

->
o
 +
	`NUM_ENT
(
pg
);

873 
xt_o
 = 

->
o
;

875 
xt_ge
:

876 i((
t
 = 
	`__bam_kl
(
dbc
, 
pgs_de
 =0 ? 
STK_NOLOCK
 : 0)) != 0)

877 
r1
;

878 i(
ndbc
 !
NULL
 &&

879 (
t
 = 
	`__bam_kl
(
ndbc
, 
pgs_de
 =0 ? 
STK_NOLOCK
 : 0)) != 0)

880 
r1
;

882 
xt_no_a
:

883 
pg
 = 
NULL
;

885 i(
gno
 =
PGNO_INVALID
 || 
c_da
->
com_ges
 == 0)

886 
de
 = 1;

887 i(!
de
) {

892 i(
pgs_de
 !0 && *
p
) {

893 
ded
: i(((
t
 = 
	`__bam_kl
(
ndbc
, 0)) != 0 ||

894 (
t
 = 
	`__dbc_o
(
ndbc
)) != 0))

895 
r
;

896 *
dڕ
 = 0;

901 

->
o
 = 
xt_o
;

902 i((
t
 = 
	`__db_lg
(
dbc
,

903 
pgs_de
 ? 
LCK_COUPLE_ALWAYS
 : 
LCK_COUPLE
,

904 
gno
, 
DB_LOCK_READ
, 0, &

->
c
->
lock
)) != 0 ||

905 (
t
 = 
	`__memp_fg
(
dbmp
, &
gno
, 
dbc
->
txn
, 0, &
pg
)) != 0)

906 
r
;

907 
xt_ge
 = 1;

908 
xt
;

911 
de
:

914 
r1
: 
pg
 = 
NULL
;

916 
r
: i(
dbc
 !
NULL
 &&

917 (
t_t
 = 
	`__bam_kl
(
dbc
, 
STK_CLRDBC
)!0 && 
t
 == 0)

918 
t
 = 
t_t
;

919 i(
ndbc
 !
NULL
) {

920 i((
t_t
 = 
	`__bam_kl
(
ndbc
, 
STK_CLRDBC
)!0 && 
t
 == 0)

921 
t
 = 
t_t
;

922 i((
t_t
 = 
	`__dbc_o
(
ndbc
)!0 && 
t
 == 0)

923 
t
 = 
t_t
;

926 i(
pg
 !
NULL
 && (
t_t
 =

927 
	`__memp_ut
(
dbmp
, 
pg
, 
dbc
->
iܙy
!0&& 
t
 == 0)

928 
t
 = 
t_t
;

929 i(
g
 !
NULL
 && (
t_t
 =

930 
	`__memp_ut
(
dbmp
, 
g
, 
dbc
->
iܙy
!0&& 
t
 == 0)

931 
t
 = 
t_t
;

933 *
dڕ
 = 
de
;

935  (
t
);

936 
	}
}

942 
	$__bam_mge
(
dbc
, 
ndbc
, 

, 

, 
c_da
, 
dڕ
)

943 
DBC
 *
dbc
, *
ndbc
;

944 
u_t32_t
 

;

945 
DBT
 *

;

946 
DB_COMPACT
 *
c_da
;

947 *
dڕ
;

949 
BTREE_CURSOR
 *

, *
n
;

950 
BTREE
 *
t
;

951 
DB
 *
dbp
;

952 
PAGE
 *
pg
, *
g
;

953 
db_dx_t
 
adj
, 

;

954 
db_o_t
 
o
;

955 
cmp
, 
t
;

956 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

958 
dbp
 = 
dbc
->dbp;

959 
t
 = 
dbp
->
bt_
;

960 

 = (
BTREE_CURSOR
 *)
dbc
->

;

961 
n
 = (
BTREE_CURSOR
 *)
ndbc
->

;

962 
pg
 = 

->
c
->
ge
;

963 
g
 = 
n
->
c
->
ge
;

965 

 = 
	`NUM_ENT
(
g
);

968 i(

 == 0)

969 

;

970 
adj
 = 
	`TYPE
(
g
=
P_LBTREE
 ? 
P_INDX
 : 
O_INDX
;

972 i(

 !
NULL
 && st->
size
 != 0) {

973 i(
dbc
->
dbty
 =
DB_RECNO
) {

974 i((
t
 = 
	`__m_gno
(
dbc
, 

, &
o
, 0)) != 0)

975 
r
;

976 i(
n
->
o
 >ecno) {

977 *
dڕ
 = 1;

978 i(

->
o
 >ecno)

979 
de
;

982 
func
 = 
	`TYPE
(
g
=
P_LBTREE
 ?

983 (
dbp
->
dup_com
 =
NULL
 ?

984 
__bam_defcmp
 : 
dbp
->
dup_com
: 
t
->
bt_com
;

986 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
,

987 

, 
g
, 

 - 
adj
, 
func
, &
cmp
)) != 0)

988 
r
;

996 i(
cmp
 <= 0) {

997 *
dڕ
 = 1;

998 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
,

999 

, 
g
, 0, 
func
, &
cmp
)) != 0)

1000 
r
;

1001 i(
cmp
 <= 0)

1002 
de
;

1013 i((
dbc
->
dbty
 =
DB_BTREE
 &&

1014 
n
->
c
[-1].
dx
 =0 &&->c[-1].
s
 != 1) ||

1015 ()(
	`P_FREESPACE
(
dbp
, 
pg
) -

1016 ((
dbp
->
pgsize
 - 
	`P_OVERHEAD
(dbp)) -

1017 
	`P_FREESPACE
(
dbp
, 
g
))< ()

)

1018 
t
 = 
	`__bam_mge_cds
(
dbc
, 
ndbc
, 

, 
c_da
);

1020 

: 
t
 = 
	`__bam_mge_ges
(
dbc
, 
ndbc
, 
c_da
);

1022 
de
:

1023 
r
:  (
t
);

1024 
	}
}

1027 
	$__bam_mge_cds
(
dbc
, 
ndbc
, 

, 
c_da
)

1028 
DBC
 *
dbc
, *
ndbc
;

1029 
u_t32_t
 

;

1030 
DB_COMPACT
 *
c_da
;

1032 
BINTERNAL
 *
bi
;

1033 
BKEYDATA
 *
bk
, *
tmp_bk
;

1034 
BTREE
 *
t
;

1035 
BTREE_CURSOR
 *

, *
n
;

1036 
DB
 *
dbp
;

1037 
DBT
 
a
, 
b
, 
da
, 
hdr
;

1038 
DB_ENV
 *
dbv
;

1039 
EPG
 *
g
;

1040 
PAGE
 *
pg
, *
g
;

1041 
db_dx_t
 
adj
, 
dx
, 

, *
np
, 
pd
;

1042 
t32_t
 
adju
;

1043 
u_t32_t
 
䓥a
, 
nksize
, 
p
, 
size
;

1044 
f_dup
, 
is_dup
, 
xt_dup
, 
n_ok
, 
t
;

1045 
	`size_t
 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

1047 
dbp
 = 
dbc
->dbp;

1048 
dbv
 = 
dbp
->dbenv;

1049 
t
 = 
dbp
->
bt_
;

1050 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1051 
n
 = (
BTREE_CURSOR
 *)
ndbc
->

;

1052 
pg
 = 

->
c
->
ge
;

1053 
g
 = 
n
->
c
->
ge
;

1054 
	`memt
(&
hdr
, 0, (hdr));

1055 
pd
 = 
	`NUM_ENT
(
pg
);

1056 
n_ok
 = 0;

1057 
adju
 = 0;

1058 
t
 = 0;

1059 

 = 
	`NUM_ENT
(
g
);

1061 
	`DB_ASSERT
(
dbv
, 

 != 0);

1064 i(
c_da
->
com_un
 !
PGNO_INVALID
 &&

1065 
	`PGNO
(
g
> 
c_da
->
com_un
) {

1067 i((
t
 = 
	`__bam_un_ge
(
ndbc
, &
g
, 1)) != 0)

1068 
r
;

1071 
np
 = 
	`P_INP
(
dbp
, 
g
);

1077 
䓥a
 = 
	`P_FREESPACE
(
dbp
, 
pg
);

1079 
adj
 = 
	`TYPE
(
g
=
P_LBTREE
 ? 
P_INDX
 : 
O_INDX
;

1083 
dx
 = 0; indx < 

; indx +
adj
) {

1084 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
g
, 
dx
);

1087 
size
 = 
	`BITEM_PSIZE
(
bk
);

1090 i(
	`TYPE
(
pg
=
P_LBTREE
)

1091 
size
 +
	`BITEM_PSIZE
(
	`GET_BKEYDATA
(
dbp
, 
g
, 
dx
 + 1));

1096 
n_ok
 = 
adj
;

1097 i(
	`TYPE
(
pg
=
P_LBTREE
 &&

1098 
dx
 < 

 - 
adj
 &&

1099 
np
[
dx
] =np[dx + 
adj
]) {

1102 
size
 +(
db_dx_t
);

1103 
n_ok
++;

1105 
size
 +
	`BITEM_PSIZE
(

1106 
	`GET_BKEYDATA
(
dbp
, 
g
, 
dx
 + 
n_ok
));

1107 
n_ok
++;

1108 } 
dx
 + 
n_ok
 < 

 &&

1109 
np
[
dx
] =np[dx + 
n_ok
]);

1112 i(
䓥a
 < 
size
)

1120 i((
䓥a
 - 
size
< 

) {

1121 i(
䓥a
 - 

 > fa - (䓥a - 
size
))

1122 
dx
 +
n_ok
;

1125 
䓥a
 -
size
;

1126 
dx
 +
n_ok
 - 
adj
;

1128 i(
dx
 == 0)

1129 
de
;

1130 i(
	`TYPE
(
pg
!
P_LBTREE
 && TYPEg!
P_LDUP
) {

1131 i(
dx
 =

)

1132  (
	`__bam_mge_ges
(
dbc
, 
ndbc
, 
c_da
));

1133 
no_check
;

1145 
p
 = 
dbp
->
pgsize
;

1146 
g
 = &
n
->
c
[-1];pg >n->

;pg--)

1147 i((
䓥a
 = 
	`P_FREESPACE
(
dbp
, 
g
->
ge
)< 
p
) {

1148 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
g
->
ge
,pg->
dx
);

1150 
䓥a
 +
	`BINTERNAL_PSIZE
(
bi
->
n
);

1151 i(
䓥a
 < 
p
)

1152 
p
 = 
䓥a
;

1153 i(
g
->
dx
 != 0)

1162 i(
dx
 =

) {

1163 i(
n
->
c
[-1].
dx
 !0 ||->c[-1].
s
 == 1 ||

1164 
	`BINTERNAL_PSIZE
(
	`GET_BINTERNAL
(
dbp
,

1165 
n
->
c
[-1].
ge
, 1)->
n
<
p
)

1166  (
	`__bam_mge_ges
(
dbc
, 
ndbc
, 
c_da
));

1167 
dx
 -
adj
;

1169 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
g
, 
dx
);

1170 i(
dx
 !0 && 
	`BINTERNAL_SIZE
(
bk
->
n
>
p
) {

1171 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

1172 i(
dbp
->
dup_com
 =
__bam_defcmp
)

1173 
func
 = 
__bam_defx
;

1175 
func
 = 
NULL
;

1177 
func
 = 
t
->
bt_efix
;

1179 
func
 = 
NULL
;

1182 
dx
 !0 && 
np
[dx] =np[dx - 
adj
])

1183 
dx
 -
adj
;

1185 
dx
 !0 && 
	`BINTERNAL_SIZE
(
bk
->
n
>
p
) {

1186 i(
	`B_TYPE
(
bk
->
ty
!
B_KEYDATA
)

1187 
nݻfix
;

1192 i(
func
 =
NULL
)

1193 
nݻfix
;

1194 
tmp_bk
 = 
	`GET_BKEYDATA
(
dbp
, 
g
, 
dx
 - 
adj
);

1195 i(
	`B_TYPE
(
tmp_bk
->
ty
!
B_KEYDATA
)

1196 
nݻfix
;

1197 
	`memt
(&
a
, 0, (a));

1198 
a
.
size
 = 
tmp_bk
->
n
;

1199 
a
.
da
 = 
tmp_bk
->data;

1200 
	`memt
(&
b
, 0, (b));

1201 
b
.
size
 = 
bk
->
n
;

1202 
b
.
da
 = 
bk
->data;

1203 
nksize
 = (
u_t32_t
)
	`func
(
dbp
, &
a
, &
b
);

1204 i(
	`BINTERNAL_PSIZE
(
nksize
< 
p
)

1206 
nݻfix
:

1209 
dx
 -
adj
;

1210 } 
dx
 !0 && 
np
[dx] =np[dx - 
adj
]);

1212 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
g
, 
dx
);

1215 i(
dx
 == 0)

1216 
de
;

1217 
	`DB_ASSERT
(
dbv
, 
dx
 <

);

1220 
no_check
: 
is_dup
 = 
f_dup
 = 
xt_dup
 = 0;

1221 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

1222 &

->
c
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0 ||

1223 (
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

1224 &
n
->
c
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1225 
r
;

1226 
pg
 = 

->
c
->
ge
;

1227 
g
 = 
n
->
c
->
ge
;

1228 
np
 = 
	`P_INP
(
dbp
, 
g
);

1230 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
g
, 0);

1232 i((
	`NUM_ENT
(
g
) % 2) == 0) {

1233 i(
	`NUM_ENT
(
g
> 2 && 
np
[0] ==inp[2]) {

1234 i(!
is_dup
) {

1235 
f_dup
 = 1;

1236 
is_dup
 = 1;

1238 
f_dup
 = 0;

1240 
xt_dup
 = 1;

1241 } i(
xt_dup
) {

1242 
is_dup
 = 1;

1243 
f_dup
 = 0;

1244 
xt_dup
 = 0;

1246 
is_dup
 = 0;

1249 i(
is_dup
 && !
f_dup
 && (
pd
 % 2) == 0) {

1251 i((
t
 = 
	`__bam_adjdx
(
dbc
,

1252 
pg
, 
pd
,d - 
P_INDX
, 1)) != 0)

1253 
r
;

1254 i(!
xt_dup
)

1255 
is_dup
 = 0;

1256 } 
	`B_TYPE
(
bk
->
ty
)) {

1257 
B_KEYDATA
:

1258 
hdr
.
da
 = 
bk
;

1259 
hdr
.
size
 = 
	`SSZA
(
BKEYDATA
, 
da
);

1260 
da
.
size
 = 
bk
->
n
;

1261 
da
.d
bk
->data;

1262 i((
t
 = 
	`__db_pem
(
dbc
, 
pg
, 
pd
,

1263 
	`BKEYDATA_SIZE
(
bk
->
n
), &
hdr
, &
da
)) != 0)

1264 
r
;

1266 
B_OVERFLOW
:

1267 
B_DUPLICATE
:

1268 
da
.
size
 = 
BOVERFLOW_SIZE
;

1269 
da
.d
bk
;

1270 i((
t
 = 
	`__db_pem
(
dbc
, 
pg
, 
pd
,

1271 
BOVERFLOW_SIZE
, &
da
, 
NULL
)) != 0)

1272 
r
;

1275 
	`__db_rx
(
dbv
,

1277 (
u_lg
)
	`PGNO
(
pg
));

1278 
t
 = 
EINVAL
;

1279 
r
;

1281 
pd
++;

1282 i(
xt_dup
 && (
	`NUM_ENT
(
g
) % 2) == 0) {

1283 i((
t
 = 
	`__bam_adjdx
(
ndbc
,

1284 
g
, 0, 
O_INDX
, 0)) != 0)

1285 
r
;

1287 i((
t
 = 
	`__db_dem
(
ndbc
,

1288 
g
, 0, 
	`BITEM_SIZE
(
bk
))) != 0)

1289 
r
;

1291 
adju
++;

1292 } --
dx
 != 0);

1294 
	`DB_ASSERT
(
dbv
, 
	`NUM_ENT
(
g
) != 0);

1296 i(
adju
 != 0 &&

1297 (
	`F_ISSET
(

, 
C_RECNUM
|| F_ISSET(
dbc
, 
DBC_OPD
))) {

1298 
	`DB_ASSERT
(
dbv
, 

->
c
 - cp->

 =
n
->csp -cp->sp);

1299 i(
	`TYPE
(
pg
=
P_LBTREE
)

1300 
adju
 /
P_INDX
;

1301 i((
t
 = 
	`__bam_adju
(
ndbc
, -
adju
)) != 0)

1302 
r
;

1304 i((
t
 = 
	`__bam_adju
(
dbc
, 
adju
)) != 0)

1305 
r
;

1309 i(
ndbc
->
dbty
 =
DB_BTREE
 &&

1310 (
t
 = 
	`__bam_pupde
(
ndbc
, 
pg
)) != 0)

1311 
r
;

1313 
de
: 
t
 = 
	`__bam_kl
(
ndbc
, 
STK_CLRDBC
);

1315 
r
:  (
t
);

1316 
	}
}

1319 
	$__bam_mge_ges
(
dbc
, 
ndbc
, 
c_da
)

1320 
DBC
 *
dbc
, *
ndbc
;

1321 
DB_COMPACT
 *
c_da
;

1323 
BTREE_CURSOR
 *

, *
n
;

1324 
DB
 *
dbp
;

1325 
DBT
 
da
, 
hdr
, 
d
;

1326 
DB_MPOOLFILE
 *
dbmp
;

1327 
PAGE
 *
pg
, *
g
;

1328 
db_dx_t
 

, *
np
, *
pp
;

1329 
db_pgno_t
 
gno
;

1330 
u_t8_t
 *
bp
;

1331 
u_t32_t
 
n
;

1332 
i
, 
v
, 
t
;

1334 
	`COMPQUIET
(
gno
, 
PGNO_INVALID
);

1335 
dbp
 = 
dbc
->dbp;

1336 
dbmp
 = 
dbp
->
mpf
;

1337 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1338 
n
 = (
BTREE_CURSOR
 *)
ndbc
->

;

1339 
pg
 = 

->
c
->
ge
;

1340 
g
 = 
n
->
c
->
ge
;

1341 
	`memt
(&
hdr
, 0, (hdr));

1342 

 = 
	`NUM_ENT
(
g
);

1345 i(

 == 0)

1346 

;

1348 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

1349 &

->
c
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0 ||

1350 (
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

1351 &
n
->
c
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1352 
r
;

1353 
pg
 = 

->
c
->
ge
;

1354 
g
 = 
n
->
c
->
ge
;

1355 
	`DB_ASSERT
(
dbp
->
dbv
, 

 =
	`NUM_ENT
(
g
));

1358 
n
 = 
dbp
->
pgsize
 - 
	`HOFFSET
(
g
);

1359 i(
	`DBC_LOGGING
(
dbc
)) {

1360 
da
.d(
u_t8_t
 *)
g
 + 
	`HOFFSET
(npg);

1361 
da
.
size
 = 
n
;

1362 
d
.
da
 = 
	`P_INP
(
dbp
, 
g
);

1363 
d
.
size
 = 
	`NUM_ENT
(
g
* (
db_dx_t
);

1364 i((
t
 = 
	`__bam_mge_log
(
dbp
,

1365 
dbc
->
txn
, &
	`LSN
(
pg
), 0, 
	`PGNO
(pg),

1366 &
	`LSN
(
pg
), 
	`PGNO
(
g
), &LSNpg), 
NULL
, &
da
, &
d
)) != 0)

1367 
r
;

1369 
	`LSN_NOT_LOGGED
(
	`LSN
(
pg
));

1370 
	`LSN
(
g
LSN(
pg
);

1371 
bp
 = (
u_t8_t
 *)
pg
 + 
	`HOFFSET
g- 
n
;

1372 
	`memy
(
bp
, (
u_t8_t
 *)
g
 + 
	`HOFFSET
pg), 
n
);

1375 
pp
 = 
	`P_INP
(
dbp
, 
pg
+ 
	`NUM_ENT
(pg);

1376 
np
 = 
	`P_INP
(
dbp
, 
g
);

1377 
i
 = 0; i < 
	`NUM_ENT
(
g
); i++)

1378 *
pp
++ = *
np
++ - (
dbp
->
pgsize
 - 
	`HOFFSET
(
pg
));

1379 
	`HOFFSET
(
pg
-
n
;

1380 
	`NUM_ENT
(
pg
+
i
;

1382 
	`NUM_ENT
(
g
) = 0;

1383 
	`HOFFSET
(
g
+
n
;

1385 i(
	`F_ISSET
(

, 
C_RECNUM
|| F_ISSET(
dbc
, 
DBC_OPD
)) {

1386 
	`DB_ASSERT
(
dbp
->
dbv
, 

->
c
 - cp->

 =
n
->csp -cp->sp);

1387 i(
	`TYPE
(
pg
=
P_LBTREE
)

1388 
i
 /
P_INDX
;

1389 i((
t
 = 
	`__bam_adju
(
ndbc
, -
i
)) != 0)

1390 
r
;

1392 i((
t
 = 
	`__bam_adju
(
dbc
, 
i
)) != 0)

1393 
r
;

1396 

:

1405 i(
	`PGNO
(
n
->

->
ge
=n->
ro
 &&

1406 
	`NUM_ENT
(
n
->

->
ge
) == 2) {

1407 i((
t
 = 
	`__bam_kl
(
dbc
, 
STK_CLRDBC
 | 
STK_PGONLY
)) != 0)

1408 
r
;

1409 
v
 = 
	`LEVEL
(
n
->

->
ge
);

1410 
gno
 = 
	`PGNO
(
n
->
c
[-1].
ge
);

1412 
v
 = 0;

1413 i(
c_da
->
com_un
 > 
	`PGNO
(
g
))

1414 
c_da
->
com_un
--;

1415 i((
t
 = 
	`__bam_dges
(
ndbc
,

1416 0, 
ndbc
->
dbty
 =
DB_RECNO
 ? 0 : 1)) != 0)

1417 
r
;

1418 
g
 = 
NULL
;

1419 
c_da
->
com_ges_
++;

1420 
c_da
->
com_ges
--;

1421 i(
v
 != 0) {

1422 i((
t
 = 
	`__memp_fg
(
dbmp
, &
n
->
ro
, 
dbc
->
txn
,

1423 0, &
g
)) != 0)

1424 
r
;

1425 i(
v
 =
	`LEVEL
(
g
))

1426 
v
 = 0;

1427 i((
t
 = 
	`__memp_ut
(
dbmp
, 
g
, 
dbc
->
iܙy
)) != 0)

1428 
r
;

1429 
g
 = 
NULL
;

1430 i(
v
 != 0) {

1431 
c_da
->
com_vs
++;

1432 
c_da
->
com_ges_
++;

1433 i(
c_da
->
com_un
 > 
gno
)

1434 
c_da
->
com_un
--;

1435 i(
c_da
->
com_ges
 != 0)

1436 
c_da
->
com_ges
--;

1440 
r
:  (
t
);

1441 
	}
}

1448 
	$__bam_mge_
(
dbc
, 
ndbc
, 
v
, 
c_da
, 
mged
)

1449 
DBC
 *
dbc
, *
ndbc
;

1450 
v
;

1451 
DB_COMPACT
 *
c_da
;

1452 *
mged
;

1454 
BINTERNAL
 
bi
, *
b
, *
f
;

1455 
BTREE_CURSOR
 *

, *
n
;

1456 
DB
 *
dbp
;

1457 
DBT
 
da
, 
hdr
;

1458 
DB_MPOOLFILE
 *
dbmp
;

1459 
EPG
 *
g
, *
ve_c
, *
nve_c
;

1460 
PAGE
 *
pg
, *
g
;

1461 
RINTERNAL
 *
rk
;

1462 
db_dx_t
 
dx
, 
pd
;

1463 
db_pgno_t
 
gno
;

1464 
t32_t
 
ecs
;

1465 
u_t16_t
 
size
;

1466 
u_t32_t
 
䓥a
, 
p
;

1467 
t
;

1469 
	`COMPQUIET
(
b
, 
NULL
);

1470 
	`COMPQUIET
(
gno
, 
PGNO_INVALID
);

1479 
dbp
 = 
dbc
->dbp;

1480 
dbmp
 = 
dbp
->
mpf
;

1481 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1482 
n
 = (
BTREE_CURSOR
 *)
ndbc
->

;

1483 *
mged
 = 0;

1484 
t
 = 0;

1490 
ve_c
 = 

->
c
;

1491 

->
c
 = &->c[-
v
 + 1];

1492 
pg
 = 

->
c
->
ge
;

1493 
pd
 = 
	`NUM_ENT
(
pg
);

1495 
nve_c
 = 
n
->
c
;

1496 
n
->
c
 = &n->c[-
v
 + 1];

1497 
g
 = 
n
->
c
->
ge
;

1498 
dx
 = 
	`NUM_ENT
(
g
);

1504 i(
g
 =
pg
)

1505 
de
;

1507 i((
t
 = 
	`__memp_dty
(
dbmp
,

1508 &

->
c
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0 ||

1509 (
t
 = 
	`__memp_dty
(
dbmp
,

1510 &
n
->
c
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1511 
r
;

1512 
pg
 = 

->
c
->
ge
;

1513 
g
 = 
n
->
c
->
ge
;

1515 i(
	`TYPE
(
pg
=
P_IBTREE
) {

1520 i((
t
 =

1521 
	`__bam_un__ovow
(
dbc
, 
pg
, 
c_da
)) != 0)

1522 
r
;

1523 i((
t
 =

1524 
	`__bam_un__ovow
(
dbc
, 
g
, 
c_da
)) != 0)

1525 
r
;

1534 
f
 = 
NULL
;

1535 i(
	`TYPE
(
pg
=
P_IBTREE
) {

1537 
䓥a
 = 
	`P_FREESPACE
(
dbp
, 
pg
);

1542 
g
 = 
n
->
c
;

1543 --
g
 >
n
->

 &&pg->
dx
 == 0)

1545 
f
 = 
b
 = 
	`GET_BINTERNAL
(
dbp
, 
g
->
ge
,pg->
dx
);

1546 
g
 = 
n
->
c
;

1548 
dx
 = 0;;) {

1549 
size
 = 
	`BINTERNAL_PSIZE
(
b
->
n
);

1550 i(
size
 > 
䓥a
)

1552 
䓥a
 -
size
;

1553 i(++
dx
 >
	`NUM_ENT
(
g
))

1555 
b
 = 
	`GET_BINTERNAL
(
dbp
, 
g
, 
dx
);

1559 i(
dx
 =
	`NUM_ENT
(
g
&& 
g
[-1].indx != 0)

1560 
fs
;

1562 
p
 = 
dbp
->
pgsize
;

1563 
g
--;pg >
n
->

;pg--)

1564 i((
䓥a
 = 
	`P_FREESPACE
(
dbp
, 
g
->
ge
)< 
p
) {

1565 
b
 = 
	`GET_BINTERNAL
(
dbp
, 
g
->
ge
,pg->
dx
);

1567 
䓥a
 +
	`BINTERNAL_PSIZE
(
b
->
n
);

1568 i(
䓥a
 < 
p
)

1569 
p
 = 
䓥a
;

1570 i(
g
->
dx
 != 0)

1573 
g
 = 
n
->
c
;

1576 i(
dx
 =
	`NUM_ENT
(
g
)) {

1577 i(
	`NUM_ENT
(
g
[-1].
ge
) == 1)

1578 
fs
;

1579 
b
 =

1580 
	`GET_BINTERNAL
(
dbp
, 
g
[-1].
ge
,pg[-1].
dx
 + 1);

1582 
b
 = 
	`GET_BINTERNAL
(
dbp
, 
g
, 
dx
);

1585 
dx
 !0 && 
	`BINTERNAL_PSIZE
(
b
->
n
> 
p
) {

1586 
dx
--;

1587 
b
 = 
	`GET_BINTERNAL
(
dbp
, 
g
, 
dx
);

1589 i(
dx
 == 0)

1590 
de
;

1593 
fs
: 
	`memt
(&
bi
, 0, (bi));

1594 
	`memt
(&
hdr
, 0, (hdr));

1595 
	`memt
(&
da
, 0, (data));

1596 
ecs
 = 0;

1603 i(
dbc
->
dbty
 =
DB_BTREE
) {

1604 
b
 = 
	`GET_BINTERNAL
(
dbp
, 
g
, 0);

1605 
size
 = 
f
 =
NULL
 ?

1606 
	`BINTERNAL_SIZE
(
b
->
n
) :

1607 
	`BINTERNAL_SIZE
(
f
->
n
);

1608 i(
	`P_FREESPACE
(
dbp
, 
pg
< 
size
 + (
db_dx_t
))

1611 i(
f
 =
NULL
) {

1612 
da
.
size
 = 
b
->
n
;

1613 
da
.d
b
->data;

1615 
da
.
size
 = 
f
->
n
;

1616 
da
.d
f
->data;

1618 
bi
.
n
 = 
da
.
size
;

1619 
	`B_TSET
(
bi
.
ty
, 
b
->type);

1620 
bi
.
pgno
 = 
b
->pgno;

1621 
bi
.
ecs
 = 
b
->nrecs;

1622 
hdr
.
da
 = &
bi
;

1623 
hdr
.
size
 = 
	`SSZA
(
BINTERNAL
, 
da
);

1624 i(
	`F_ISSET
(

, 
C_RECNUM
|| F_ISSET(
dbc
, 
DBC_OPD
))

1625 
ecs
 +(
t32_t
)
b
->
ecs
;

1627 
rk
 = 
	`GET_RINTERNAL
(
dbp
, 
g
, 0);

1628 
size
 = 
RINTERNAL_SIZE
;

1629 i(
	`P_FREESPACE
(
dbp
, 
pg
< 
size
 + (
db_dx_t
))

1632 
hdr
.
da
 = 
rk
;

1633 
hdr
.
size
 = size;

1634 
ecs
 +(
t32_t
)
rk
->
ecs
;

1636 i((
t
 = 
	`__db_pem
(
dbc
, 
pg
, 
pd
, 
size
, &
hdr
, &
da
)) != 0)

1637 
r
;

1638 
pd
++;

1639 i(
f
 !
NULL
) {

1641 
size
 = 
	`BINTERNAL_SIZE
(
b
->
n
);

1642 
f
 = 
NULL
;

1644 i((
t
 = 
	`__db_dem
(
ndbc
, 
g
, 0, 
size
)) != 0)

1645 
r
;

1646 *
mged
 = 1;

1647 } --
dx
 != 0);

1649 i(
c_da
->
com_un
 !
PGNO_INVALID
 &&

1650 
	`PGNO
(
pg
> 
c_da
->
com_un
 && 

->
c
 !->

) {

1651 i((
t
 = 
	`__bam_un_ge
(
dbc
, &
pg
, 1)) != 0)

1652 
r
;

1655 i(
	`NUM_ENT
(
g
!0 && 
c_da
->
com_un
 !
PGNO_INVALID
 &&

1656 
	`PGNO
(
g
> 
c_da
->
com_un
 && 
n
->
c
 !n->

) {

1657 i((
t
 = 
	`__bam_un_ge
(
ndbc
, &
g
, 1)) != 0)

1658 
r
;

1661 i(!*
mged
)

1662 
de
;

1664 i(
ecs
 != 0) {

1665 
	`DB_ASSERT
(
dbp
->
dbv
, 

->
c
 - cp->

 =
n
->csp -cp->sp);

1666 

->
c
--;

1667 i((
t
 = 
	`__bam_adju
(
dbc
, 
ecs
)) != 0)

1668 
r
;

1670 
n
->
c
--;

1671 i((
t
 = 
	`__bam_adju
(
ndbc
, -
ecs
)) != 0)

1672 
r
;

1673 
n
->
c
++;

1675 

->
c
 = 
ve_c
;

1686 i((
t
 =

1687 
	`__memp_ut
(
dbmp
, 
nve_c
->
ge
, 
dbc
->
iܙy
)) != 0)

1688 
r
;

1689 i((
t
 = 
	`__LPUT
(
dbc
, 
nve_c
->
lock
)) != 0)

1690 
r
;

1691 
nve_c
--;

1692 } 
nve_c
 !
n
->
c
);

1694 i(
	`NUM_ENT
(
g
) == 0) {

1701 i(
	`PGNO
(
n
->

->
ge
=n->
ro
 &&

1702 
	`NUM_ENT
(
n
->

->
ge
) == 2) {

1703 i((
t
 = 
	`__bam_kl
(
dbc
, 
STK_CLRDBC
)) != 0)

1704 
r
;

1705 
v
 = 
	`LEVEL
(
n
->

->
ge
);

1706 
gno
 = 
	`PGNO
(
n
->
c
[-1].
ge
);

1708 
v
 = 0;

1710 i(
c_da
->
com_un
 > 
	`PGNO
(
g
))

1711 
c_da
->
com_un
--;

1712 
t
 = 
	`__bam_dges
(
ndbc
,

1713 0, 
ndbc
->
dbty
 =
DB_RECNO
 ? 0 : 1);

1714 
c_da
->
com_ges_
++;

1715 i(
t
 =0 && 
v
 != 0) {

1716 i((
t
 = 
	`__memp_fg
(
dbmp
, &
n
->
ro
, 
dbc
->
txn
,

1717 0, &
g
)) != 0)

1718 
r
;

1719 i(
v
 =
	`LEVEL
(
g
))

1720 
v
 = 0;

1721 i((
t
 =

1722 
	`__memp_ut
(
dbmp
, 
g
, 
dbc
->
iܙy
)) != 0)

1723 
r
;

1724 
g
 = 
NULL
;

1725 i(
v
 != 0) {

1726 
c_da
->
com_vs
++;

1727 
c_da
->
com_ges_
++;

1728 i(
c_da
->
com_un
 > 
gno
)

1729 
c_da
->
com_un
--;

1730 i(
c_da
->
com_ges
 != 0)

1731 
c_da
->
com_ges
--;

1735 
t
 = 
	`__bam_pupde
(
ndbc
, 
g
);

1736  (
t
);

1738 
de
:

1739 
r
: 

->
c
 = 
ve_c
;

1740 
n
->
c
 = 
nve_c
;

1742  (
t
);

1743 
	}
}

1750 
	$__bam_com_dups
(
dbc
, 
g
, 

, 
have_lock
, 
c_da
, 
dڕ
)

1751 
DBC
 *
dbc
;

1752 
PAGE
 **
g
;

1753 
u_t32_t
 

;

1754 
have_lock
;

1755 
DB_COMPACT
 *
c_da
;

1756 *
dڕ
;

1758 
BOVERFLOW
 *
bo
;

1759 
BTREE_CURSOR
 *

;

1760 
DB
 *
dbp
;

1761 
DBC
 *
d
;

1762 
DBT
 
t
;

1763 
DB_ENV
 *
dbv
;

1764 
DB_MPOOLFILE
 *
dbmp
;

1765 
PAGE
 *
dpg
, *
pg
;

1766 
db_dx_t
 
i
;

1767 
de
, 
v
, 
t
, 

, 
t_t
;

1769 

 = 0;

1770 
t
 = 0;

1771 
d
 = 
NULL
;

1773 
dbp
 = 
dbc
->dbp;

1774 
dbv
 = 
dbp
->dbenv;

1775 
dbmp
 = 
dbp
->
mpf
;

1776 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1777 
pg
 = *
g
;

1779 
i
 = 0; i < 
	`NUM_ENT
(
pg
); i++) {

1780 
bo
 = 
	`GET_BOVERFLOW
(
dbp
, 
pg
, 
i
);

1781 i(
	`B_TYPE
(
bo
->
ty
=
B_KEYDATA
)

1783 
c_da
->
com_ges_exame
++;

1784 i(
bo
->
pgno
 > 
c_da
->
com_un
) {

1785 (*
dڕ
)++;

1786 i(!
have_lock
) {

1787 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
	`PGNO
(
pg
),

1788 
DB_LOCK_WRITE
, 0, &

->
c
->
lock
)) != 0)

1789 
r
;

1790 
have_lock
 = 1;

1791 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
, 
g
,

1792 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1793 
r
;

1794 
pg
 = *
g
;

1796 i((
t
 =

1797 
	`__bam_un_ro_ge
(
dbc
, 
pg
, 
i
, 
c_da
)) != 0)

1798 
r
;

1800 
bo
 = 
	`GET_BOVERFLOW
(
dbp
, 
pg
, 
i
);

1803 i(
	`B_TYPE
(
bo
->
ty
=
B_OVERFLOW
) {

1804 i((
t
 = 
	`__bam_un_ovow
(
dbc
, 
bo
->
pgno
,

1805 
have_lock
 ? 
PGNO_INVALID
 : 
	`PGNO
(
pg
), 
c_da
)) != 0)

1806 
r
;

1807 (*
dڕ
)++;

1814 i((
t
 = 
	`__memp_fg
(
dbmp
, &
bo
->
pgno
, 
dbc
->
txn
,

1815 0, &
dpg
)) != 0)

1816 
r
;

1818 
v
 = 
dpg
->level;

1819 i((
t
 = 
	`__memp_ut
(
dbmp
, 
dpg
, 
dbc
->
iܙy
)) != 0)

1820 
r
;

1821 i(
v
 =
LEAFLEVEL
)

1823 i((
t
 = 
	`__dbc_wd
(
dbc
, 
bo
->
pgno
, 
NULL
, &
d
)) != 0)

1824  (
t
);

1825 i(!
have_lock
) {

1826 i((
t
 = 
	`__db_lg
(
dbc
, 0,

1827 
	`PGNO
(
pg
), 
DB_LOCK_WRITE
, 0, &

->
c
->
lock
)) != 0)

1828 
r
;

1829 
have_lock
 = 1;

1830 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
, 
g
,

1831 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1832 
r
;

1833 
pg
 = *
g
;

1835 (*
dڕ
)++;

1836 
	`memt
(&
t
, 0, (start));

1838 i((
t
 = 
	`__bam_com_t
(
d
, &
t
,

1839 
NULL
, 

, &

, 
c_da
, &
de
)) != 0)

1841 } !
de
);

1843 i(
t
.
da
 !
NULL
)

1844 
	`__os_
(
dbv
, 
t
.
da
);

1846 i(
t
 != 0)

1847 
r
;

1849 
t
 = 
	`__dbc_o
(
d
);

1850 
d
 = 
NULL
;

1851 i(
t
 != 0)

1852 
r
;

1855 
r
: i(
d
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(d)!0 && 
t
 == 0)

1856 
t
 = 
t_t
;

1857  (
t
);

1858 
	}
}

1866 
	$__bam_un_ge
(
dbc
, 
pgp
, 
upde_
)

1867 
DBC
 *
dbc
;

1868 
PAGE
 **
pgp
;

1869 
upde_
;

1871 
BTREE_CURSOR
 *

;

1872 
DB
 *
dbp
;

1873 
DBT
 
da
, 
hdr
, 
d
;

1874 
DB_LSN
 
l
;

1875 
EPG
 *
g
;

1876 
PAGE
 *
wge
;

1877 
db_pgno_t
 
wpgno
, *
pgn
;

1878 
t
;

1880 
dbp
 = 
dbc
->dbp;

1890 i((
t
 = 
	`__db_w
(
dbc
, 
P_DONTEXTEND
 | 
	`TYPE
(*
pgp
), &
wge
)) != 0)

1891  (
t
);

1898 i(
wge
 =
NULL
)

1905 i(
	`PGNO
(
wge
> PGNO(*
pgp
)) {

1907 i(
	`TYPE
(
wge
=
P_OVERFLOW
)

1908 
	`OV_LEN
(
wge
) = 0;

1909  (
	`__db_
(
dbc
, 
wge
));

1912 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

1913 &
wge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1914 
r
;

1917 i(
	`DBC_LOGGING
(
dbc
)) {

1918 
hdr
.
da
 = *
pgp
;

1919 
hdr
.
size
 = 
	`P_OVERHEAD
(
dbp
);

1920 i(
	`TYPE
(*
pgp
=
P_OVERFLOW
) {

1921 
da
.d(
u_t8_t
 *)*
pgp
 + 
	`P_OVERHEAD
(
dbp
);

1922 
da
.
size
 = 
	`OV_LEN
(*
pgp
);

1923 
d
.
size
 = 0;

1925 
da
.d(
u_t8_t
 *)*
pgp
 + 
	`HOFFSET
(*pgp);

1926 
da
.
size
 = 
dbp
->
pgsize
 - 
	`HOFFSET
(*
pgp
);

1927 
d
.
da
 = 
	`P_INP
(
dbp
, *
pgp
);

1928 
d
.
size
 = 
	`NUM_ENT
(*
pgp
* (
db_dx_t
);

1930 i((
t
 = 
	`__bam_mge_log
(
dbp
, 
dbc
->
txn
,

1931 &
	`LSN
(
wge
), 0, 
	`PGNO
(newpage), &LSN(newpage),

1932 
	`PGNO
(*
pgp
), &
	`LSN
(*pgp), &
hdr
, &
da
, &
d
)) != 0)

1933 
r
;

1935 
	`LSN_NOT_LOGGED
(
	`LSN
(
wge
));

1937 
wpgno
 = 
	`PGNO
(
wge
);

1938 
l
 = 
	`LSN
(
wge
);

1939 
	`memy
(
wge
, *
pgp
, 
dbp
->
pgsize
);

1940 
	`PGNO
(
wge

wpgno
;

1941 
	`LSN
(
wge

l
;

1944 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

1945 
pgp
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1946 
r
;

1947 i(
	`TYPE
(*
pgp
=
P_OVERFLOW
)

1948 
	`OV_LEN
(*
pgp
) = 0;

1950 
	`HOFFSET
(*
pgp

dbp
->
pgsize
;

1951 
	`NUM_ENT
(*
pgp
) = 0;

1953 
	`LSN
(*
pgp

l
;

1956 
	`TYPE
(
wge
)) {

1957 
P_OVERFLOW
:

1958 
P_LBTREE
:

1959 
P_LRECNO
:

1960 
P_LDUP
:

1961 i(
	`NEXT_PGNO
(
wge
=
PGNO_INVALID
 &&

1962 
	`PREV_PGNO
(
wge
=
PGNO_INVALID
)

1964 i((
t
 = 
	`__bam_lk
(
dbc
, *
pgp
, 
	`PGNO
(
wge
))) != 0)

1965 
r
;

1970 

 = (
BTREE_CURSOR
*)
dbc
->

;

1976 
t
 = 
	`__db_
(
dbc
, *
pgp
);

1978 *
pgp
 = 
wge
;

1980 i(
t
 != 0)

1981  (
t
);

1983 i(!
upde_
)

1984 
de
;

1987 
g
 = &

->
c
[-1];

1988 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

1989 &
g
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1990  (
t
);

1992 
	`TYPE
(
g
->
ge
)) {

1993 
P_IBTREE
:

1994 
pgn
 = &
	`GET_BINTERNAL
(
dbp
, 
g
->
ge
,pg->
dx
)->
pgno
;

1996 
P_IRECNO
:

1997 
pgn
 = &
	`GET_RINTERNAL
(
dbp
, 
g
->
ge
,pg->
dx
)->
pgno
;

2000 
pgn
 = &
	`GET_BOVERFLOW
(
dbp
, 
g
->
ge
,pg->
dx
)->
pgno
;

2003 i(
	`DBC_LOGGING
(
dbc
)) {

2004 i((
t
 = 
	`__bam_pgno_log
(
dbp
, 
dbc
->
txn
, &
	`LSN
(
g
->
ge
),

2005 0, 
	`PGNO
(
g
->
ge
), &
	`LSN
pg->ge), (
u_t32_t
pg->
dx
,

2006 *
pgn
, 
	`PGNO
(
wge
))) != 0)

2007  (
t
);

2009 
	`LSN_NOT_LOGGED
(
	`LSN
(
g
->
ge
));

2011 *
pgn
 = 
	`PGNO
(
wge
);

2012 

->
c
->
ge
 = 
wge
;

2014 
de
:  (0);

2016 
r
: ()
	`__memp_ut
(
dbp
->
mpf
, 
wge
, 
dbc
->
iܙy
);

2017  (
t
);

2018 
	}
}

2028 
	$__bam_un_ovow
(
dbc
, 
pgno
, 
pg_lock
, 
c_da
)

2029 
DBC
 *
dbc
;

2030 
db_pgno_t
 
pgno
;

2031 
db_pgno_t
 
pg_lock
;

2032 
DB_COMPACT
 *
c_da
;

2034 
DB
 *
dbp
;

2035 
DB_LOCK
 
lock
;

2036 
PAGE
 *
ge
;

2037 
t
, 
t_t
;

2039 
dbp
 = 
dbc
->dbp;

2040 
ge
 = 
NULL
;

2041 
	`LOCK_INIT
(
lock
);

2043 i((
t
 = 
	`__memp_fg
(
dbp
->
mpf
, &
pgno
, 
dbc
->
txn
, 0, &
ge
)) != 0)

2044  (
t
);

2046 (
pgno
 = 
	`NEXT_PGNO
(
ge
)!
PGNO_INVALID
) {

2047 i((
t
 = 
	`__memp_ut
(
dbp
->
mpf
, 
ge
, 
dbc
->
iܙy
)) != 0)

2048  (
t
);

2049 i((
t
 = 
	`__memp_fg
(
dbp
->
mpf
, &
pgno
, 
dbc
->
txn
,

2050 0, &
ge
)) != 0)

2051  (
t
);

2052 i(
pgno
 <
c_da
->
com_un
)

2054 i(
pg_lock
 !
PGNO_INVALID
) {

2055 i((
t
 = 
	`__db_lg
(
dbc
,

2056 0, 
pg_lock
, 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

2058 
pg_lock
 = 
PGNO_INVALID
;

2060 i((
t
 = 
	`__bam_un_ge
(
dbc
, &
ge
, 0)) != 0)

2064 i(
ge
 !
NULL
 &&

2065 (
t_t
 = 
	`__memp_ut
(

2066 
dbp
->
mpf
, 
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

2067 
t
 = 
t_t
;

2068 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

2069 
t
 = 
t_t
;

2070  (
t
);

2071 
	}
}

2079 
	$__bam_un_ro_ge
(
dbc
, 
pg
, 
dx
, 
c_da
)

2080 
DBC
 *
dbc
;

2081 
PAGE
 *
pg
;

2082 
u_t32_t
 
dx
;

2083 
DB_COMPACT
 *
c_da
;

2085 
BINTERNAL
 *
bi
;

2086 
BOVERFLOW
 *
bo
;

2087 
DB
 *
dbp
;

2088 
DBT
 
ig
;

2089 
PAGE
 *
ge
;

2090 
db_pgno_t
 
wpgno
, *
pgn
;

2091 
t
, 
t_t
;

2093 
	`COMPQUIET
(
c_da
, 
NULL
);

2094 
	`COMPQUIET
(
bo
, 
NULL
);

2095 
	`COMPQUIET
(
wpgno
, 
PGNO_INVALID
);

2096 
dbp
 = 
dbc
->dbp;

2097 
ge
 = 
NULL
;

2098 i(
	`TYPE
(
pg
=
P_IBTREE
) {

2099 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
pg
, 
dx
);

2100 i(
	`B_TYPE
(
bi
->
ty
=
B_OVERFLOW
) {

2101 
bo
 = (
BOVERFLOW
 *)(
bi
->
da
);

2102 
pgn
 = &
bo
->
pgno
;

2104 
pgn
 = &
bi
->
pgno
;

2106 
bo
 = 
	`GET_BOVERFLOW
(
dbp
, 
pg
, 
dx
);

2107 
pgn
 = &
bo
->
pgno
;

2110 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`IS_DIRTY
(
pg
));

2112 i((
t
 = 
	`__memp_fg
(
dbp
->
mpf
, 
pgn
, 
dbc
->
txn
, 0, &
ge
)) != 0)

2113 
r
;

2120 i(
	`TYPE
(
ge
=
P_OVERFLOW
 && 
	`OV_REF
(page) > 1) {

2121 i((
t
 = 
	`__db_ovf
(
dbc
, 
bo
->
pgno
)) != 0)

2122 
r
;

2123 
	`memt
(&
ig
, 0, (orig));

2124 i((
t
 = 
	`__db_goff
(
dbp
, 
dbc
->
txn
, &
ig
,

2125 
bo
->

, bo->
pgno
, &
ig
.
da
, &ig.
size
)) == 0)

2126 
t
 = 
	`__db_poff
(
dbc
, &
ig
, &
wpgno
);

2127 i(
ig
.
da
 !
NULL
)

2128 
	`__os_
(
dbp
->
dbv
, 
ig
.
da
);

2129 i(
t
 != 0)

2130 
r
;

2132 i((
t
 = 
	`__bam_un_ge
(
dbc
, &
ge
, 0)) != 0)

2133 
r
;

2134 
wpgno
 = 
	`PGNO
(
ge
);

2136 i(
wpgno
 =*
pgn
)

2137 
r
;

2141 i(
	`DBC_LOGGING
(
dbc
)) {

2142 i((
t
 = 
	`__bam_pgno_log
(
dbp
,

2143 
dbc
->
txn
, &
	`LSN
(
pg
), 0, 
	`PGNO
(pg),

2144 &
	`LSN
(
pg
), (
u_t32_t
)
dx
, *
pgn
, 
wpgno
)) != 0)

2145 
r
;

2147 
	`LSN_NOT_LOGGED
(
	`LSN
(
pg
));

2149 *
pgn
 = 
wpgno
;

2151 
r
: i(
ge
 !
NULL
 && (
t_t
 =

2152 
	`__memp_ut
(
dbp
->
mpf
, 
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

2153 
t
 = 
t_t
;

2154  (
t
);

2155 
	}
}

2165 
	$__bam_un__ovow
(
dbc
, 
ge
, 
c_da
)

2166 
DBC
 *
dbc
;

2167 
PAGE
 *
ge
;

2168 
DB_COMPACT
 *
c_da
;

2170 
BINTERNAL
 *
bi
;

2171 
BOVERFLOW
 *
bo
;

2172 
db_dx_t
 
dx
;

2173 
t
;

2175 
	`COMPQUIET
(
bo
, 
NULL
);

2176 
t
 = 0;

2177 
dx
 = 0; indx < 
	`NUM_ENT
(
ge
); indx++) {

2178 
bi
 = 
	`GET_BINTERNAL
(
dbc
->
dbp
, 
ge
, 
dx
);

2179 i(
	`B_TYPE
(
bi
->
ty
!
B_OVERFLOW
)

2181 
bo
 = (
BOVERFLOW
 *)(
bi
->
da
);

2182 i(
bo
->
pgno
 > 
c_da
->
com_un
 && (
t
 =

2183 
	`__bam_un_ro_ge
(
dbc
, 
ge
, 
dx
, 
c_da
)) != 0)

2185 i((
t
 = 
	`__bam_un_ovow
(

2186 
dbc
, 
bo
->
pgno
, 
PGNO_INVALID
, 
c_da
)) != 0)

2189  (
t
);

2190 
	}
}

2192 #ifde
HAVE_FTRUNCATE


2201 
	$__bam_vekey
(
dbc
, 
xt
, 
t
)

2202 
DBC
 *
dbc
;

2203 
xt
;

2204 
DBT
 *
t
;

2206 
BINTERNAL
 *
bi
;

2207 
BOVERFLOW
 *
bo
;

2208 
BTREE_CURSOR
 *

;

2209 
DB
 *
dbp
;

2210 
DB_ENV
 *
dbv
;

2211 
PAGE
 *
pg
;

2212 
RINTERNAL
 *
ri
;

2213 
db_dx_t
 
dx
, 
t
;

2215 
dbp
 = 
dbc
->dbp;

2216 
dbv
 = 
dbp
->dbenv;

2217 

 = (
BTREE_CURSOR
 *)
dbc
->

;

2218 
pg
 = 

->
c
->
ge
;

2220 i(
dbc
->
dbty
 =
DB_RECNO
) {

2221 i(
xt
)

2222 
dx
 = 0, 
t
 = 
	`NUM_ENT
(
pg
); indx !=op; indx++) {

2223 
ri
 = 
	`GET_RINTERNAL
(
dbp
, 
pg
, 
dx
);

2224 

->
o
 +
ri
->
ecs
;

2226  (
	`__db_tcy
(
dbv
, 
t
, &

->
o
,

2227 (

->
o
), &
t
->
da
, &t->
un
));

2230 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
pg
, 
	`NUM_ENT
(pg) - 1);

2231 i(
	`B_TYPE
(
bi
->
ty
=
B_OVERFLOW
) {

2232 
bo
 = (
BOVERFLOW
 *)(
bi
->
da
);

2233  (
	`__db_goff
(
dbp
, 
dbc
->
txn
, 
t
,

2234 
bo
->

, bo->
pgno
, &
t
->
da
, &t->
un
));

2236  (
	`__db_tcy
(
dbv
,

2237 
t
, 
bi
->
da
, bi->
n
, &t->da, &t->
un
));

2238 
	}
}

2246 
	$__bam_un_
(
dbp
, 
txn
, 
c_da
)

2247 
DB
 *
dbp
;

2248 
DB_TXN
 *
txn
;

2249 
DB_COMPACT
 *
c_da
;

2251 
BTREE_CURSOR
 *

;

2252 
DBC
 *
dbc
;

2253 
DBT
 
t
;

2254 
PAGE
 *
pg
;

2255 
db_pgno_t
 
pgno
;

2256 
u_t32_t
 
sag
;

2257 
v
, 
lol_txn
, 
t
, 
t_t
;

2259 
dbc
 = 
NULL
;

2260 
	`memt
(&
t
, 0, (start));

2262 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

2263 
lol_txn
 = 1;

2264 
txn
 = 
NULL
;

2266 
lol_txn
 = 0;

2268 
v
 = 
LEAFLEVEL
 + 1;

2269 
sag
 = 
CS_READ
 | 
CS_GETRECNO
;

2271 
w_txn
:

2272 i(
lol_txn
 && (
t
 = 
	`__txn_beg
(
dbp
->
dbv
, 
NULL
, &
txn
, 0)) != 0)

2273 
r
;

2275 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 0)) != 0)

2276 
r
;

2277 

 = (
BTREE_CURSOR
 *)
dbc
->

;

2279 
pgno
 = 
PGNO_INVALID
;

2281 i((
t
 = 
	`__bam_cch
(
dbc
, &
t
, 
sag
, 
v
)) != 0) {

2283 i(
t
 =
DB_NOTFOUND
) {

2284 
v
++;

2285 i(
t
.
da
 !
NULL
)

2286 
	`__os_
(
dbp
->
dbv
, 
t
.
da
);

2287 
	`memt
(&
t
, 0, (start));

2288 
sag
 = 
CS_READ
 | 
CS_GETRECNO
;

2291 
r
;

2293 
c_da
->
com_ges_exame
++;

2295 
pg
 = 

->
c
->
ge
;

2296 
pgno
 = 
	`PGNO
(
pg
);

2298 
sag
 = 
CS_NEXT
 | 
CS_GETRECNO
;

2300 i(
pgno
 !

->
ro
 && (
t
 = 
	`__bam_vekey
(
dbc
,

2301 
pgno
 <
c_da
->
com_un
, &
t
)) != 0)

2302 
r
;

2304 i((
t
 = 
	`__bam_kl
(
dbc
, 
STK_NOLOCK
)) != 0)

2305 
r
;

2306 i(
pgno
 =

->
ro
)

2309 i(
pgno
 <
c_da
->
com_un
)

2313 i((
t
 = 
	`__bam_cch
(
dbc
,

2314 &
t
, 
CS_PARENT
 | 
CS_GETRECNO
, 
v
)) != 0)

2315 
r
;

2316 
pg
 = 

->
c
->
ge
;

2317 
pgno
 = 
	`PGNO
(
pg
);

2319 i(
pgno
 > 
c_da
->
com_un
) {

2320 i((
t
 = 
	`__bam_un_ge
(
dbc
, &
pg
, 1)) != 0)

2321 
r
;

2323 i((
t
 = 
	`__bam_kl
(
dbc
,

2324 
pgno
 > 
c_da
->
com_un
 ? 0 : 
STK_NOLOCK
)) != 0)

2325 
r
;

2328 i(
lol_txn
 && 
pgno
 > 
c_da
->
com_un
)

2330 } 
pgno
 !

->
ro
);

2332 i((
t
 = 
	`__dbc_o
(
dbc
)) != 0)

2333 
r
;

2334 
dbc
 = 
NULL
;

2335 i(
lol_txn
) {

2336 i((
t
 = 
	`__txn_comm
(
txn
, 
DB_TXN_NOSYNC
)) != 0)

2337 
r
;

2338 
txn
 = 
NULL
;

2340 i(
pgno
 !((
BTREE
 *)
dbp
->
bt_
)->
bt_ro
)

2341 
w_txn
;

2343 
r
: i(
dbc
 !
NULL
 && (
t_t
 = 
	`__bam_kl
(dbc, 0)!0 && 
t
 == 0)

2344 
t
 = 
t_t
;

2345 i(
dbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc)!0 && 
t
 == 0)

2346 
t
 = 
t_t
;

2347 i(
lol_txn
 &&

2348 
txn
 !
NULL
 && (
t_t
 = 
	`__txn_abt
xn)!0 && 
t
 == 0)

2349 
t
 = 
t_t
;

2350 i(
t
.
da
 !
NULL
)

2351 
	`__os_
(
dbp
->
dbv
, 
t
.
da
);

2352  (
t
);

2353 
	}
}

2356 
	$__bam_tup_li
(
dbp
, 
li
, 
ms
)

2357 
DB
 *
dbp
;

2358 
pgli
 *
li
;

2359 
u_t32_t
 
ms
;

2361 
DB_MPOOLFILE
 *
mpf
;

2362 
db_pgno_t
 *
i
;

2363 
t
;

2365 
mpf
 = 
dbp
->mpf;

2367 i((
t
 = 
	`__memp_loc_li
(
mpf
, 
ms
, &
i
)) != 0)

2368  (
t
);

2370 
ms
-- != 0)

2371 *
i
++ = 
li
++->
pgno
;

2374 
	}
}

2377 
	$__bam__li
(
dbp
, 
txn
)

2378 
DB
 *
dbp
;

2379 
DB_TXN
 *
txn
;

2381 
DBC
 *
dbc
;

2382 
DB_LOCK
 
lock
;

2383 
auto_comm
, 
t
, 
t_t
;

2385 
	`LOCK_INIT
(
lock
);

2386 
auto_comm
 = 
t
 = 0;

2394 
dbc
 = 
NULL
;

2395 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

2402 i(
	`__txn_beg
(
dbp
->
dbv
, 
NULL
, &
txn
, 0) == 0) {

2403 ()
	`__lock_t_timeout
(
dbp
->
dbv
,

2404 
txn
->
lock
, 0, 
DB_SET_TXN_TIMEOUT
);

2405 ()
	`__lock_t_timeout
(
dbp
->
dbv
,

2406 
txn
->
lock
, 0, 
DB_SET_LOCK_TIMEOUT
);

2407 
auto_comm
 = 1;

2410 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 0)) != 0)

2411  (
t
);

2413 i((
t
 = 
	`__db_lg
(
dbc
,

2414 0, 
PGNO_BASE_MD
, 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

2415 
r
;

2418 
t
 = 
	`__memp__li
(
dbp
->
mpf
);

2420 
r
: i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

2421 
t
 = 
t_t
;

2423 i(
dbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc)!0 && 
t
 == 0)

2424 
t
 = 
t_t
;

2426 i(
auto_comm
 && 
	`__txn_abt
(
txn
!0 && 
t
 == 0)

2427 
t
 = 
t_t
;

2429  (
t
);

2430 
	}
}

	@../btree/bt_compare.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/b.h
"

58 
	$__bam_cmp
(
dbp
, 
txn
, 
dbt
, 
h
, 
dx
, 
func
, 
cm
)

59 
DB
 *
dbp
;

60 
DB_TXN
 *
txn
;

61 cڡ 
DBT
 *
dbt
;

62 
PAGE
 *
h
;

63 
u_t32_t
 
dx
;

64 (*
func
)
	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

65 *
cm
;

67 
BINTERNAL
 *
bi
;

68 
BKEYDATA
 *
bk
;

69 
BOVERFLOW
 *
bo
;

70 
DBT
 
pg_dbt
;

85 
	`TYPE
(
h
)) {

86 
P_LBTREE
:

87 
P_LDUP
:

88 
P_LRECNO
:

89 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
);

90 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
)

91 
bo
 = (
BOVERFLOW
 *)
bk
;

93 
pg_dbt
.
p_da
 = 
NULL
;

94 
pg_dbt
.
da
 = 
bk
->data;

95 
pg_dbt
.
size
 = 
bk
->
n
;

96 *
cm
 = 
	`func
(
dbp
, 
dbt
, &
pg_dbt
);

100 
P_IBTREE
:

118 i(
dx
 == 0) {

119 *
cm
 = 1;

123 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 
dx
);

124 i(
	`B_TYPE
(
bi
->
ty
=
B_OVERFLOW
)

125 
bo
 = (
BOVERFLOW
 *)(
bi
->
da
);

127 
pg_dbt
.
p_da
 = 
NULL
;

128 
pg_dbt
.
da
 = 
bi
->data;

129 
pg_dbt
.
size
 = 
bi
->
n
;

130 *
cm
 = 
	`func
(
dbp
, 
dbt
, &
pg_dbt
);

135  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
h
)));

141  (
	`__db_moff
(
dbp
, 
txn
, 
dbt
,

142 
bo
->
pgno
, bo->

, 
func
 =
__bam_defcmp
 ? 
NULL
 : func, 
cm
));

143 
	}
}

152 
	$__bam_defcmp
(
dbp
, 
a
, 
b
)

153 
DB
 *
dbp
;

154 cڡ 
DBT
 *
a
, *
b
;

156 
size_t
 
n
;

157 
u_t8_t
 *
p1
, *
p2
;

159 
	`COMPQUIET
(
dbp
, 
NULL
);

173 
n
 = 
a
->
size
 > 
b
->size ? b->size :->size;

174 
p1
 = 
a
->
da
, 
p2
 = 
b
->da; 
n
--; ++p1, ++p2)

175 i(*
p1
 !*
p2
)

176  (()*
p1
 - ()*
p2
);

177  (()
a
->
size
 - ()
b
->size);

178 
	}
}

186 
size_t


187 
	$__bam_defx
(
dbp
, 
a
, 
b
)

188 
DB
 *
dbp
;

189 cڡ 
DBT
 *
a
, *
b
;

191 
size_t
 
t
, 
n
;

192 
u_t8_t
 *
p1
, *
p2
;

194 
	`COMPQUIET
(
dbp
, 
NULL
);

196 
t
 = 1;

197 
n
 = 
a
->
size
 > 
b
->size ? b->size :->size;

198 
p1
 = 
a
->
da
, 
p2
 = 
b
->da; 
n
--; ++p1, ++p2, ++
t
)

199 i(*
p1
 !*
p2
)

200  (
t
);

206 i(
a
->
size
 < 
b
->size)

207  (
a
->
size
 + 1);

208 i(
b
->
size
 < 
a
->size)

209  (
b
->
size
 + 1);

210  (
b
->
size
);

211 
	}
}

	@../btree/bt_conv.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_sw.h
"

14 
	~"dbc/b.h
"

24 
	$__bam_pg
(
dbv
, 
dummydbp
, 
pg
, 

, 
cook
)

25 
DB_ENV
 *
dbv
;

26 
DB
 *
dummydbp
;

27 
db_pgno_t
 
pg
;

28 *

;

29 
DBT
 *
cook
;

31 
DB_PGINFO
 *
pgfo
;

32 
PAGE
 *
h
;

34 
pgfo
 = (
DB_PGINFO
 *)
cook
->
da
;

35 i(!
	`F_ISSET
(
pgfo
, 
DB_AM_SWAP
))

38 
h
 = 

;

39  (
	`TYPE
(
h
=
P_BTREEMETA
 ? 
	`__bam_msw
(

) :

40 
	`__db_bysw
(
dbv
, 
dummydbp
, 
pg
, 

, 
pgfo
->
db_gesize
, 1));

41 
	}
}

51 
	$__bam_pgout
(
dbv
, 
dummydbp
, 
pg
, 

, 
cook
)

52 
DB_ENV
 *
dbv
;

53 
DB
 *
dummydbp
;

54 
db_pgno_t
 
pg
;

55 *

;

56 
DBT
 *
cook
;

58 
DB_PGINFO
 *
pgfo
;

59 
PAGE
 *
h
;

61 
pgfo
 = (
DB_PGINFO
 *)
cook
->
da
;

62 i(!
	`F_ISSET
(
pgfo
, 
DB_AM_SWAP
))

65 
h
 = 

;

66  (
	`TYPE
(
h
=
P_BTREEMETA
 ? 
	`__bam_msw
(

) :

67 
	`__db_bysw
(
dbv
, 
dummydbp
, 
pg
, 

, 
pgfo
->
db_gesize
, 0));

68 
	}
}

77 
	$__bam_msw
(
pg
)

78 
PAGE
 *
pg
;

80 
u_t8_t
 *
p
;

82 
	`__db_masw
(
pg
);

84 
p
 = (
u_t8_t
 *)
pg
 + (
DBMETA
);

86 
p
 +(
u_t32_t
);

87 
	`SWAP32
(
p
);

88 
	`SWAP32
(
p
);

89 
	`SWAP32
(
p
);

90 
	`SWAP32
(
p
);

91 
p
 +92 * (
u_t32_t
);

92 
	`SWAP32
(
p
);

95 
	}
}

	@../btree/bt_curadj.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/mp.h
"

16 
__bam_d_curs
 
__P
((
DB
 *, 
DBC
 *, 
db_pgno_t
, 
u_t32_t
, u_int32_t));

37 
	$__bam__de
(
dbp
, 
pgno
, 
dx
, 
de
, 
coup
)

38 
DB
 *
dbp
;

39 
db_pgno_t
 
pgno
;

40 
u_t32_t
 
dx
;

41 
de
, *
coup
;

43 
BTREE_CURSOR
 *

;

44 
DB
 *
ldbp
;

45 
DB_ENV
 *
dbv
;

46 
DBC
 *
dbc
;

47 
cou
;

49 
dbv
 = 
dbp
->dbenv;

62 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

63 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

64 
cou
 = 0;

65 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

66 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

67 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

68 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
) {

69 

 = (
BTREE_CURSOR
 *)
dbc
->

;

70 i(

->
pgno
 =pgn&& cp->
dx
 == indx &&

71 !
	`MVCC_SKIP_CURADJ
(
dbc
, 
pgno
)) {

85 i(
de
)

86 
	`F_SET
(

, 
C_DELETED
);

88 
	`F_CLR
(

, 
C_DELETED
);

89 ++
cou
;

92 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

94 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

96 i(
coup
 !
NULL
)

97 *
coup
 = 
cou
;

99 
	}
}

108 
	$__m__de
(
dbp
, 
ro_pgno
, 
foundp
)

109 
DB
 *
dbp
;

110 
db_pgno_t
 
ro_pgno
;

111 *
foundp
;

113 
DB
 *
ldbp
;

114 
DBC
 *
dbc
;

115 
DB_ENV
 *
dbv
;

116 
found
;

118 
dbv
 = 
dbp
->dbenv;

123 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

124 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

125 
found
 = 0;

126 
found
 =0 && 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

127 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

128 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

129 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
)

130 i(
dbc
->

->
ro
 =
ro_pgno
 &&

131 !
	`MVCC_SKIP_CURADJ
(
dbc
, 
ro_pgno
)) {

132 
found
 = 1;

135 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

137 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

139 *
foundp
 = 
found
;

141 
	}
}

150 
	$__bam__di
(
my_dbc
, 
pgno
, 
dx
, 
adju
)

151 
DBC
 *
my_dbc
;

152 
db_pgno_t
 
pgno
;

153 
u_t32_t
 
dx
;

154 
adju
;

156 
DB
 *
dbp
, *
ldbp
;

157 
DB_ENV
 *
dbv
;

158 
DB_LSN
 
l
;

159 
DB_TXN
 *
my_txn
;

160 
DBC
 *
dbc
;

161 
DBC_INTERNAL
 *

;

162 
found
, 
t
;

164 
dbp
 = 
my_dbc
->dbp;

165 
dbv
 = 
dbp
->dbenv;

167 
my_txn
 = 
	`IS_SUBTRANSACTION
(
my_dbc
->
txn
? my_dbc->tx: 
NULL
;

172 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

173 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

174 
found
 = 0;

175 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

176 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

177 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

178 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
) {

179 i(
dbc
->
dbty
 =
DB_RECNO
)

181 

 = 
dbc
->

;

182 i(

->
pgno
 =pgn&& cp->
dx
 >= indx &&

183 (
dbc
 =
my_dbc
 || !
	`MVCC_SKIP_CURADJ
(dbc, 
pgno
))) {

185 
	`DB_ASSERT
(
dbv
, 

->
dx
 !0 || 
adju
 > 0);

190 

->
dx
 +
adju
;

191 i(
my_txn
 !
NULL
 && 
dbc
->
txn
 != my_txn)

192 
found
 = 1;

195 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

197 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

199 i(
found
 !0 && 
	`DBC_LOGGING
(
my_dbc
)) {

200 i((
t
 = 
	`__bam_cudj_log
(
dbp
, 
my_dbc
->
txn
, &
l
, 0,

201 
DB_CA_DI
, 
pgno
, 0, 0, (
u_t32_t
)
adju
, 
dx
, 0)) != 0)

202  (
t
);

206 
	}
}

212 
	$__bam_d_curs
(
dbp
, 
dbc
, 
f
, 
gno
, 
ti
)

213 
DB
 *
dbp
;

214 
DBC
 *
dbc
;

215 
db_pgno_t
 
gno
;

216 
u_t32_t
 
f
, 
ti
;

218 
BTREE_CURSOR
 *

, *
ig_
;

219 
DBC
 *
dbc_nd
;

220 
t
;

222 
ig_
 = (
BTREE_CURSOR
 *)
dbc
->

;

223 
dbc_nd
 = 
NULL
;

234 
	`DB_ASSERT
(
dbp
->
dbv
, 
ig_
->
d
 =
NULL
);

235 i((
t
 = 
	`__dbc_wd
(
dbc
, 
gno
, 
ig_
->
d
, &
dbc_nd
)) != 0)

236  (
t
);

238 

 = (
BTREE_CURSOR
 *)
dbc_nd
->

;

239 

->
pgno
 = 
gno
;

240 

->
dx
 = 
ti
;

242 i(
dbp
->
dup_com
 =
NULL
) {

248 

->
o
 = 
ti
 + 1;

255 i(
	`F_ISSET
(
ig_
, 
C_DELETED
)) {

256 
	`F_SET
(

, 
C_DELETED
);

257 
	`F_CLR
(
ig_
, 
C_DELETED
);

261 
ig_
->
d
 = 
dbc_nd
;

262 
ig_
->
dx
 = 
f
;

264 
	}
}

275 
	$__bam__dup
(
my_dbc
, 
f
, 
gno
, 
fi
, 
gno
, 
ti
)

276 
DBC
 *
my_dbc
;

277 
db_pgno_t
 
gno
, 
gno
;

278 
u_t32_t
 
f
, 
fi
, 
ti
;

280 
BTREE_CURSOR
 *
ig_
;

281 
DB
 *
dbp
, *
ldbp
;

282 
DBC
 *
dbc
;

283 
DB_ENV
 *
dbv
;

284 
DB_LSN
 
l
;

285 
DB_TXN
 *
my_txn
;

286 
found
, 
t
, 
t_t
;

288 
dbp
 = 
my_dbc
->dbp;

289 
dbv
 = 
dbp
->dbenv;

290 
my_txn
 = 
	`IS_SUBTRANSACTION
(
my_dbc
->
txn
? my_dbc->tx: 
NULL
;

291 
t
 = 0;

296 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

297 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

298 
found
 = 0;

299 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

300 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

301 
lo
: 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

302 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
) {

304 
ig_
 = (
BTREE_CURSOR
 *)
dbc
->

;

305 i(
ig_
->
pgno
 !
gno
 || orig_->
dx
 !
fi
 ||

306 
	`MVCC_SKIP_CURADJ
(
dbc
, 
gno
))

313 i(
ig_
->
d
 !
NULL
)

316 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

321 i((
t
 = 
	`__bam_d_curs
(
dbp
,

322 
dbc
, 
f
, 
gno
, 
ti
)) != 0)

323 
r
;

324 i(
my_txn
 !
NULL
 && 
dbc
->
txn
 != my_txn)

325 
found
 = 1;

327 
lo
;

329 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

331 
r
: 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

333 i(
found
 !0 && 
	`DBC_LOGGING
(
my_dbc
)) {

334 i((
t_t
 = 
	`__bam_cudj_log
(
dbp
, 
my_dbc
->
txn
,

335 &
l
, 0, 
DB_CA_DUP
, 
gno
, 
gno
, 0, 
f
, 
fi
, 
ti
)) != 0 &&

336 
t
 == 0)

337 
t
 = 
t_t
;

340  (
t
);

341 
	}
}

353 
	$__bam__undodup
(
dbp
, 
f
, 
gno
, 
fi
, 
ti
)

354 
DB
 *
dbp
;

355 
db_pgno_t
 
gno
;

356 
u_t32_t
 
f
, 
fi
, 
ti
;

358 
BTREE_CURSOR
 *
ig_
;

359 
DB
 *
ldbp
;

360 
DBC
 *
dbc
;

361 
DB_ENV
 *
dbv
;

362 
t
;

364 
dbv
 = 
dbp
->dbenv;

365 
t
 = 0;

370 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

371 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

373 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

374 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

375 
lo
: 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

376 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
) {

377 
ig_
 = (
BTREE_CURSOR
 *)
dbc
->

;

386 i(
ig_
->
pgno
 !
gno
 ||

387 
ig_
->
dx
 !
f
 ||

388 
ig_
->
d
 =
NULL
 || ((
BTREE_CURSOR
 *)

389 
ig_
->
d
->

)->
dx
 !
ti
 ||

390 
	`MVCC_SKIP_CURADJ
(
dbc
, 
gno
))

392 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

393 i((
t
 = 
	`__dbc_o
(
ig_
->
d
)) != 0)

394 
r
;

395 
ig_
->
d
 = 
NULL
;

396 
ig_
->
dx
 = 
fi
;

401 
lo
;

403 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

405 
r
: 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

407  (
t
);

408 
	}
}

417 
	$__bam__rl
(
my_dbc
, 
gno
, 
gno
)

418 
DBC
* 
my_dbc
;

419 
db_pgno_t
 
gno
, 
gno
;

421 
DB
 *
dbp
, *
ldbp
;

422 
DBC
 *
dbc
;

423 
DB_ENV
 *
dbv
;

424 
DB_LSN
 
l
;

425 
DB_TXN
 *
my_txn
;

426 
found
, 
t
;

428 
dbp
 = 
my_dbc
->dbp;

429 
dbv
 = 
dbp
->dbenv;

430 
my_txn
 = 
	`IS_SUBTRANSACTION
(
my_dbc
->
txn
? my_dbc->tx: 
NULL
;

435 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

436 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

437 
found
 = 0;

438 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

439 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

440 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

441 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
) {

442 i(
dbc
->
dbty
 =
DB_RECNO
)

444 i(
dbc
->

->
pgno
 =
gno
 &&

445 !
	`MVCC_SKIP_CURADJ
(
dbc
, 
gno
)) {

446 
dbc
->

->
pgno
 = 
gno
;

451 i(
my_txn
 !
NULL
 && 
dbc
->
txn
 != my_txn)

452 
found
 = 1;

455 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

457 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

459 i(
found
 !0 && 
	`DBC_LOGGING
(
my_dbc
)) {

460 i((
t
 = 
	`__bam_cudj_log
(
dbp
, 
my_dbc
->
txn
,

461 &
l
, 0, 
DB_CA_RSPLIT
, 
gno
, 
gno
, 0, 0, 0, 0)) != 0)

462  (
t
);

465 
	}
}

475 
	$__bam__l
(
my_dbc
, 
gno
, 
gno
, 
gno
, 
l_dx
, 
e
)

476 
DBC
 *
my_dbc
;

477 
db_pgno_t
 
gno
, 
gno
, 
gno
;

478 
u_t32_t
 
l_dx
;

479 
e
;

481 
DB
 *
dbp
, *
ldbp
;

482 
DBC
 *
dbc
;

483 
DBC_INTERNAL
 *

;

484 
DB_ENV
 *
dbv
;

485 
DB_LSN
 
l
;

486 
DB_TXN
 *
my_txn
;

487 
found
, 
t
;

489 
dbp
 = 
my_dbc
->dbp;

490 
dbv
 = 
dbp
->dbenv;

491 
my_txn
 = 
	`IS_SUBTRANSACTION
(
my_dbc
->
txn
? my_dbc->tx: 
NULL
;

503 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

504 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

505 
found
 = 0;

506 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

507 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

508 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

509 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
) {

510 i(
dbc
->
dbty
 =
DB_RECNO
)

512 

 = 
dbc
->

;

513 i(

->
pgno
 =
gno
 &&

514 !
	`MVCC_SKIP_CURADJ
(
dbc
, 
gno
)) {

519 i(
my_txn
 !
NULL
 && 
dbc
->
txn
 != my_txn)

520 
found
 = 1;

521 i(

->
dx
 < 
l_dx
) {

522 i(
e
)

523 

->
pgno
 = 
gno
;

525 

->
pgno
 = 
gno
;

526 

->
dx
 -
l_dx
;

530 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

532 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

534 i(
found
 !0 && 
	`DBC_LOGGING
(
my_dbc
)) {

535 i((
t
 = 
	`__bam_cudj_log
(
dbp
,

536 
my_dbc
->
txn
, &
l
, 0, 
DB_CA_SPLIT
, 
gno
, 
gno
,

537 
e
 ? 
gno
 : 
PGNO_INVALID
, 0, 
l_dx
, 0)) != 0)

538  (
t
);

542 
	}
}

555 
	$__bam__undol
(
dbp
, 
ompgno
, 
tgno
, 
gno
, 
l_dx
)

556 
DB
 *
dbp
;

557 
db_pgno_t
 
ompgno
, 
tgno
, 
gno
;

558 
u_t32_t
 
l_dx
;

560 
DB
 *
ldbp
;

561 
DBC
 *
dbc
;

562 
DB_ENV
 *
dbv
;

563 
DBC_INTERNAL
 *

;

565 
dbv
 = 
dbp
->dbenv;

573 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

574 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

576 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

577 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

578 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

579 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
) {

580 i(
dbc
->
dbty
 =
DB_RECNO
)

582 

 = 
dbc
->

;

583 i(

->
pgno
 =
tgno
 &&

584 !
	`MVCC_SKIP_CURADJ
(
dbc
, 
tgno
)) {

585 

->
pgno
 = 
ompgno
;

586 

->
dx
 +
l_dx
;

587 } i(

->
pgno
 =
gno
 &&

588 !
	`MVCC_SKIP_CURADJ
(
dbc
, 
gno
))

589 

->
pgno
 = 
ompgno
;

591 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

593 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

596 
	}
}

	@../btree/bt_cursor.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/mp.h
"

17 
__bam_bulk
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
));

18 
__bamc_o
 
__P
((
DBC
 *, 
db_pgno_t
, *));

19 
__bamc_d
 
__P
((
DBC
 *));

20 
__bamc_deroy
 
__P
((
DBC
 *));

21 
__bamc_g
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

22 
__bamc_gack
 
__P
((
DBC
 *));

23 
__bamc_xt
 
__P
((
DBC
 *, , ));

24 
__bamc_physd
 
__P
((
DBC
 *));

25 
__bamc_ev
 
__P
((
DBC
 *));

26 
__bamc_put
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

27 
__bamc_ch
 
__P
((
DBC
 *,

28 
db_pgno_t
, cڡ 
DBT
 *, 
u_t32_t
, *));

29 
__bamc_wrock
 
__P
((
DBC
 *));

30 
__bam_gbh_fddum
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
));

31 
__bam_gbhc
 
__P
((
DBC
 *, 
DBT
 *));

32 
__bam_g_ev
 
__P
((
DBC
 *));

33 
__bam_isd
 
__P
((
DBC
 *, 
db_pgno_t
 *));

47 #unde
ACQUIRE


48 
	#ACQUIRE
(
dbc
, 
mode
, 
gno
, 
lock
, 
gno
, 
g
, 
ags
, 
t
) do { \

49 
DB_MPOOLFILE
 *
__mpf
 = (
dbc
)->
dbp
->
mpf
; \

50 i((
g
!
NULL
) { \

51 
t
 = 
	`__memp_ut
(
__mpf
, 
g
, 
dbc
->
iܙy
); \

52 
g
 = 
NULL
; \

54 
t
 = 0; \

55 i((
t
=0 && 
	`STD_LOCKING
(
dbc
)) \

56 
t
 = 
	`__db_lg
( \

57 
dbc
, 
LCK_COUPLE
, 
gno
, 
mode
, 
ags
, &(
lock
)); \

58 i((
t
) == 0) \

59 
t
 = 
	`__memp_fg
(
__mpf
, &(
gno
), (
dbc
)->
txn
, \

60 0, &(
g
)); \

61 } 0)

	)

64 #unde
ACQUIRE_CUR


65 
	#ACQUIRE_CUR
(
dbc
, 
mode
, 
p
, 
ags
, 
t
) do { \

66 
BTREE_CURSOR
 *
__
 = (BTREE_CURSOR *)(
dbc
)->

; \

67 i(
p
 !
__
->
pgno
) \

68 
__
->
pgno
 = 
PGNO_INVALID
; \

69 
	`ACQUIRE
(
dbc
, 
mode
, 
p
, 
__
->
lock
,, __->
ge
, 
ags
, 
t
); \

70 i((
t
) == 0) { \

71 
__
->
pgno
 = 
p
; \

72 
__
->
lock_mode
 = (
mode
); \

74 } 0)

	)

82 #unde
ACQUIRE_WRITE_LOCK


83 
	#ACQUIRE_WRITE_LOCK
(
dbc
, 
t
) do { \

84 
BTREE_CURSOR
 *
__
 = (BTREE_CURSOR *)(
dbc
)->

; \

85 
t
 = 0; \

86 i(
	`STD_LOCKING
(
dbc
) && \

87 
__
->
lock_mode
 !
DB_LOCK_WRITE
 && \

88 ((
t

	`__db_lg
(
dbc
, \

89 
	`LOCK_ISSET
(
__
->
lock
? 
LCK_COUPLE
 : 0, \

90 
__
->
pgno
, 
DB_LOCK_WRITE
, 0, &__->
lock
)) == 0) \

91 
__
->
lock_mode
 = 
DB_LOCK_WRITE
; \

92 } 0)

	)

95 #unde
DISCARD_CUR


96 
	#DISCARD_CUR
(
dbc
, 
t
) do { \

97 
BTREE_CURSOR
 *
__
 = (BTREE_CURSOR *)(
dbc
)->

; \

98 
DB_MPOOLFILE
 *
__mpf
 = (
dbc
)->
dbp
->
mpf
; \

99 
__t_t
; \

100 i((
__
->
ge
!
NULL
) { \

101 
__t_t
 = 
	`__memp_ut
(
__mpf
, 
__
->
ge
, 
dbc
->
iܙy
);\

102 
__
->
ge
 = 
NULL
; \

104 
__t_t
 = 0; \

105 i(
__t_t
 !0 && (
t
) == 0) \

106 
t
 = 
__t_t
; \

107 
__t_t
 = 
	`__TLPUT
((
dbc
), 
__
->
lock
); \

108 i(
__t_t
 !0 && (
t
) == 0) \

109 
t
 = 
__t_t
; \

110 i((
t
=0 && !
	`LOCK_ISSET
(
__
->
lock
)) \

111 
__
->
lock_mode
 = 
DB_LOCK_NG
; \

112 } 0)

	)

115 #unde
IS_DELETED


116 
	#IS_DELETED
(
dbp
, 
ge
, 
dx
) \

117 
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 
ge
, \

118 (
dx
+ (
	`TYPE
(
ge
=
P_LBTREE
 ? 
O_INDX
 : 0))->
ty
)

	)

119 #unde
IS_CUR_DELETED


120 
	#IS_CUR_DELETED
(
dbc
) \

121 
	`IS_DELETED
((
dbc
)->
dbp
, (dbc)->

->
ge
, (dbc)->->
dx
)

	)

131 #unde
IS_DUPLICATE


132 
	#IS_DUPLICATE
(
dbc
, 
i1
, 
i2
) \

133 (
	`P_INP
((
dbc
)->
dbp
,((
PAGE
 *)(dbc)->

->
ge
))[
i1
] == \

134 
	`P_INP
((
dbc
)->
dbp
,((
PAGE
 *)(dbc)->

->
ge
))[
i2
])

	)

135 #unde
IS_CUR_DUPLICATE


136 
	#IS_CUR_DUPLICATE
(
dbc
, 
ig_pgno
, 
ig_dx
) \

137 (
	`F_ISSET
(
dbc
, 
DBC_OPD
) || \

138 (
ig_pgno
 =(
dbc
)->

->
pgno
 && \

139 
	`IS_DUPLICATE
(
dbc
, (dbc)->

->
dx
, 
ig_dx
)))

	)

148 
	$__bamc_
(
dbc
, 
dbty
)

149 
DBC
 *
dbc
;

150 
DBTYPE
 
dbty
;

152 
DB_ENV
 *
dbv
;

153 
t
;

155 
dbv
 = 
dbc
->
dbp
->dbenv;

158 i(
dbc
->

 =
NULL
 && (
t
 =

159 
	`__os_oc
(
dbv
, 1, (
BTREE_CURSOR
), &
dbc
->

)) != 0)

160  (
t
);

163 
dbc
->
o
 = dbc->
c_o
 = 
__dbc_o_
;

164 
dbc
->
cou
 = dbc->
c_cou
 = 
__dbc_cou_
;

165 
dbc
->
d
 = dbc->
c_d
 = 
__dbc_d_
;

166 
dbc
->
dup
 = dbc->
c_dup
 = 
__dbc_dup_
;

167 
dbc
->
g
 = dbc->
c_g
 = 
__dbc_g_
;

168 
dbc
->
pg
 = dbc->
c_pg
 = 
__dbc_pg_
;

169 
dbc
->
put
 = dbc->
c_put
 = 
__dbc_put_
;

170 i(
dbty
 =
DB_BTREE
) {

171 
dbc
->
am_bulk
 = 
__bam_bulk
;

172 
dbc
->
am_o
 = 
__bamc_o
;

173 
dbc
->
am_d
 = 
__bamc_d
;

174 
dbc
->
am_deroy
 = 
__bamc_deroy
;

175 
dbc
->
am_g
 = 
__bamc_g
;

176 
dbc
->
am_put
 = 
__bamc_put
;

177 
dbc
->
am_wrock
 = 
__bamc_wrock
;

179 
dbc
->
am_bulk
 = 
__bam_bulk
;

180 
dbc
->
am_o
 = 
__bamc_o
;

181 
dbc
->
am_d
 = 
__mc_d
;

182 
dbc
->
am_deroy
 = 
__bamc_deroy
;

183 
dbc
->
am_g
 = 
__mc_g
;

184 
dbc
->
am_put
 = 
__mc_put
;

185 
dbc
->
am_wrock
 = 
__bamc_wrock
;

189 
	}
}

198 
	$__bamc_esh
(
dbc
)

199 
DBC
 *
dbc
;

201 
BTREE
 *
t
;

202 
BTREE_CURSOR
 *

;

203 
DB
 *
dbp
;

205 
dbp
 = 
dbc
->dbp;

206 
t
 = 
dbp
->
bt_
;

207 

 = (
BTREE_CURSOR
 *)
dbc
->

;

214 i(

->
ro
 =
PGNO_INVALID
)

215 

->
ro
 = 
t
->
bt_ro
;

217 
	`LOCK_INIT
(

->
lock
);

218 

->
lock_mode
 = 
DB_LOCK_NG
;

220 i(

->

 =
NULL
) {

221 

->

 = cp->
ack
;

222 

->
e
 = cp->
ack
 + (cp->stack) / (cp->stack[0]);

224 
	`BT_STK_CLR
(

);

234 

->
ovsize
 = 
	`B_MINKEY_TO_OVFLSIZE
(

235 
dbp
, 
	`F_ISSET
(
dbc
, 
DBC_OPD
? 2 : 
t
->
bt_mkey
, dbp->
pgsize
);

237 

->
o
 = 
RECNO_OOB
;

238 

->
d
 = 
INVALID_ORDER
;

239 

->
ags
 = 0;

242 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
) ||

243 
dbc
->
dbty
 =
DB_RECNO
 || 
	`F_ISSET
(
dbp
, 
DB_AM_RECNUM
)) {

244 
	`F_SET
(

, 
C_RECNUM
);

251 i((
	`F_ISSET
(
dbc
, 
DBC_OPD
&& dbc->
dbty
 =
DB_RECNO
) ||

252 
	`F_ISSET
(
dbp
, 
DB_AM_RECNUM
 | 
DB_AM_RENUMBER
))

253 
	`F_SET
(

, 
C_RENUMBER
);

257 
	}
}

264 
	$__bamc_o
(
dbc
, 
ro_pgno
, 
rmro
)

265 
DBC
 *
dbc
;

266 
db_pgno_t
 
ro_pgno
;

267 *
rmro
;

269 
BTREE_CURSOR
 *

, *
_d
, *
_c
;

270 
DB
 *
dbp
;

271 
DBC
 *
dbc_d
, *
dbc_c
;

272 
DB_MPOOLFILE
 *
mpf
;

273 
PAGE
 *
h
;

274 
cdb_lock
, 
cou
, 
t
;

276 
dbp
 = 
dbc
->dbp;

277 
mpf
 = 
dbp
->mpf;

278 

 = (
BTREE_CURSOR
 *)
dbc
->

;

279 
_d
 = (
dbc_d
 = 

->
d
=
NULL
 ?

280 
NULL
 : (
BTREE_CURSOR
 *)
dbc_d
->

;

281 
cdb_lock
 = 
t
 = 0;

340 i(
	`F_ISSET
(

, 
C_DELETED
)) {

341 
dbc_c
 = 
dbc
;

342 
dbc
->
dbty
) {

343 
DB_BTREE
:

344 i((
t
 = 
	`__bam__de
(

345 
dbp
, 

->
pgno
, cp->
dx
, 1, &
cou
)) != 0)

346 
r
;

347 i(
cou
 == 0)

348 
lock
;

349 
de
;

350 
DB_RECNO
:

351 i(!
	`F_ISSET
(
dbc
, 
DBC_OPD
))

352 
de
;

354 i((
t
 = 
	`__m__de
(
dbp
, 

->
ro
, &
cou
)) != 0)

355 
r
;

356 i(
cou
 == 0)

357 
lock
;

358 
de
;

359 
DB_HASH
:

360 
DB_QUEUE
:

361 
DB_UNKNOWN
:

363 
t
 = 
	`__db_unknown_ty
(
dbp
->
dbv
,

364 "__bamc_o", 
dbc
->
dbty
);

365 
r
;

369 i(
dbc_d
 =
NULL
)

370 
de
;

372 i(
	`F_ISSET
(
_d
, 
C_DELETED
)) {

377 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
dbc
->
txn
, 0, &
h
)) != 0)

378 
r
;

379 
ro_pgno
 = 
	`GET_BOVERFLOW
(
dbp
, 
h
, 

->
dx
 + 
O_INDX
)->
pgno
;

380 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)) != 0)

381 
r
;

383 
dbc_c
 = 
dbc_d
;

384 
dbc_d
->
dbty
) {

385 
DB_BTREE
:

386 i((
t
 = 
	`__bam__de
(

387 
dbp
, 
_d
->
pgno
, cp_d->
dx
, 1, &
cou
)) != 0)

388 
r
;

389 i(
cou
 == 0)

390 
lock
;

391 
de
;

392 
DB_RECNO
:

393 i((
t
 =

394 
	`__m__de
(
dbp
, 
_d
->
ro
, &
cou
)) != 0)

395 
r
;

396 i(
cou
 == 0)

397 
lock
;

398 
de
;

399 
DB_HASH
:

400 
DB_QUEUE
:

401 
DB_UNKNOWN
:

403 
t
 = 
	`__db_unknown_ty
(

404 
dbp
->
dbv
, "__bamc_o", 
dbc
->
dbty
);

405 
r
;

408 
de
;

410 
lock
: 
_c
 = (
BTREE_CURSOR
 *)
dbc_c
->

;

418 i(
	`CDB_LOCKING
(
dbp
->
dbv
)) {

419 i(
	`F_ISSET
(
dbc
, 
DBC_WRITECURSOR
)) {

420 i((
t
 = 
	`__lock_g
(
dbp
->
dbv
,

421 
dbc
->
lock
, 
DB_LOCK_UPGRADE
, &dbc->
lock_dbt
,

422 
DB_LOCK_WRITE
, &
dbc
->
mylock
)) != 0)

423 
r
;

424 
cdb_lock
 = 1;

426 
de
;

438 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
))

439 
de
;

472 i(
	`STD_LOCKING
(
dbc
))

473 i((
t
 = 
	`__db_lg
(
dbc
,

474 
LCK_COUPLE
, 

->
pgno
, 
DB_LOCK_WRITE
, 0, &->
lock
)) != 0)

475 
r
;

477 
de
:

485 i(
dbc_c
->
dbty
 =
DB_BTREE
) {

486 i((
t
 = 
	`__memp_fg
(
mpf
, &
_c
->
pgno
, 
dbc
->
txn
,

487 
DB_MPOOL_DIRTY
, &
_c
->
ge
)) != 0)

488 
r
;

489 i((
t
 = 
	`__bamc_physd
(
dbc_c
)) != 0)

490 
r
;

497 i(!
	`F_ISSET
(
dbc_c
, 
DBC_OPD
|| 
ro_pgno
 =
PGNO_INVALID
)

498 
de
;

509 i((
t
 = 
	`__memp_fg
(
mpf
, &
ro_pgno
, 
dbc
->
txn
, 0, &
h
)) != 0)

510 
r
;

511 i(
	`NUM_ENT
(
h
) == 0) {

512 
	`DISCARD_CUR
(
dbc_c
, 
t
);

513 i(
t
 != 0)

514 
r
;

515 i((
t
 = 
	`__db_
(
dbc
, 
h
)) != 0)

516 
r
;

518 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)) != 0)

519 
r
;

520 
de
;

535 i(
dbc_d
 !
NULL
) {

536 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
dbc
->
txn
,

537 
DB_MPOOL_DIRTY
, &

->
ge
)) != 0)

538 
r
;

539 i((
t
 = 
	`__bamc_physd
(
dbc
)) != 0)

540 
r
;

542 *
rmro
 = 1;

543 
r
:

544 
de
:

548 i(
dbc_d
 !
NULL
)

549 
	`DISCARD_CUR
(
dbc_d
, 
t
);

550 
	`DISCARD_CUR
(
dbc
, 
t
);

553 i(
cdb_lock
)

554 ()
	`__lock_downgde
(

555 
dbp
->
dbv
, &
dbc
->
mylock
, 
DB_LOCK_IWRITE
, 0);

557  (
t
);

558 
	}
}

565 
	$__bamc_deroy
(
dbc
)

566 
DBC
 *
dbc
;

568 
BTREE_CURSOR
 *

;

570 

 = (
BTREE_CURSOR
 *)
dbc
->

;

573 i(

->

 !->
ack
)

574 
	`__os_
(
dbc
->
dbp
->
dbv
, 

->

);

575 
	`__os_
(
dbc
->
dbp
->
dbv
, 

);

578 
	}
}

587 
	$__bamc_cou
(
dbc
, 

)

588 
DBC
 *
dbc
;

589 
db_o_t
 *

;

591 
BTREE_CURSOR
 *

;

592 
DB
 *
dbp
;

593 
DB_MPOOLFILE
 *
mpf
;

594 
db_dx_t
 
dx
, 
t
;

595 
db_o_t
 
o
;

596 
t
;

598 
dbp
 = 
dbc
->dbp;

599 
mpf
 = 
dbp
->mpf;

600 

 = (
BTREE_CURSOR
 *)
dbc
->

;

607 i(

->
d
 =
NULL
) {

611 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
dbc
->
txn
,

612 0, &

->
ge
)) != 0)

613  (
t
);

619 
dx
 = 

->dx;; indx -
P_INDX
)

620 i(
dx
 == 0 ||

621 !
	`IS_DUPLICATE
(
dbc
, 
dx
, indx - 
P_INDX
))

623 
o
 = 0,

624 
t
 = 
	`NUM_ENT
(

->
ge
- 
P_INDX
;; 
dx
 += P_INDX) {

625 i(!
	`IS_DELETED
(
dbp
, 

->
ge
, 
dx
))

626 ++
o
;

627 i(
dx
 =
t
 ||

628 !
	`IS_DUPLICATE
(
dbc
, 
dx
, indx + 
P_INDX
))

636 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
d
->

->
ro
,

637 
dbc
->
txn
, 0, &

->
ge
)) != 0)

638  (
t
);

649 i(
	`TYPE
(

->
ge
=
P_LDUP
)

650 
o
 = 0, 
dx
 = 0,

651 
t
 = 
	`NUM_ENT
(

->
ge
- 
O_INDX
;; 
dx
 += O_INDX) {

652 i(!
	`IS_DELETED
(
dbp
, 

->
ge
, 
dx
))

653 ++
o
;

654 i(
dx
 =
t
)

658 
o
 = 
	`RE_NREC
(

->
ge
);

661 *

 = 
o
;

663 
t
 = 
	`__memp_ut
(
mpf
, 

->
ge
, 
dbc
->
iܙy
);

664 

->
ge
 = 
NULL
;

666  (
t
);

667 
	}
}

674 
	$__bamc_d
(
dbc
)

675 
DBC
 *
dbc
;

677 
BTREE_CURSOR
 *

;

678 
DB
 *
dbp
;

679 
DB_MPOOLFILE
 *
mpf
;

680 
cou
, 
t
, 
t_t
;

682 
dbp
 = 
dbc
->dbp;

683 
mpf
 = 
dbp
->mpf;

684 

 = (
BTREE_CURSOR
 *)
dbc
->

;

685 
t
 = 0;

688 i(
	`F_ISSET
(

, 
C_DELETED
))

689  (
DB_KEYEMPTY
);

694 
	`DB_ASSERT
(
dbp
->
dbv
, 

->
ge
 =
NULL
);

705 i(
	`F_ISSET
(

, 
C_RECNUM
)) {

706 i((
t
 = 
	`__bamc_gack
(
dbc
)) != 0)

707 
r
;

708 

->
ge
 = cp->
c
->page;

710 
	`ACQUIRE_CUR
(
dbc
, 
DB_LOCK_WRITE
, 

->
pgno
, 0, 
t
);

711 i(
t
 != 0)

712 
r
;

716 i((
t
 = 
	`__memp_dty
(
mpf
,

717 &

->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

718 
r
;

721 i(
	`DBC_LOGGING
(
dbc
)) {

722 i((
t
 = 
	`__bam_cd_log
(
dbp
, 
dbc
->
txn
, &
	`LSN
(

->
ge
), 0,

723 
	`PGNO
(

->
ge
), &
	`LSN
(->ge), cp->
dx
)) != 0)

724 
r
;

726 
	`LSN_NOT_LOGGED
(
	`LSN
(

->
ge
));

729 i(
	`TYPE
(

->
ge
=
P_LBTREE
)

730 
	`B_DSET
(
	`GET_BKEYDATA
(
dbp
, 

->
ge
, cp->
dx
 + 
O_INDX
)->
ty
);

732 
	`B_DSET
(
	`GET_BKEYDATA
(
dbp
, 

->
ge
, cp->
dx
)->
ty
);

734 
r
:

738 i(
	`F_ISSET
(

, 
C_RECNUM
)) {

739 

->
c
->
ge
 = cp->page;

740 i(
t
 == 0)

741 
t
 = 
	`__bam_adju
(
dbc
, -1);

742 ()
	`__bam_kl
(
dbc
, 0);

744 i(

->
ge
 !
NULL
 &&

745 (
t_t
 = 
	`__memp_ut
(
mpf
,

746 

->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

747 
t
 = 
t_t
;

749 

->
ge
 = 
NULL
;

755 i(
t
 == 0)

756 
t
 = 
	`__bam__de
(
dbp
, 

->
pgno
, cp->
dx
, 1, &
cou
);

758  (
t
);

759 
	}
}

769 
	$__bamc_dup
(
ig_dbc
, 
w_dbc
)

770 
DBC
 *
ig_dbc
, *
w_dbc
;

772 
BTREE_CURSOR
 *
ig
, *
w
;

774 
ig
 = (
BTREE_CURSOR
 *)
ig_dbc
->

;

775 
w
 = (
BTREE_CURSOR
 *)
w_dbc
->

;

777 
w
->
ovsize
 = 
ig
->ovflsize;

778 
w
->
o
 = 
ig
->recno;

779 
w
->
ags
 = 
ig
->flags;

782 
	}
}

789 
	$__bamc_g
(
dbc
, 
key
, 
da
, 
ags
, 
pgn
)

790 
DBC
 *
dbc
;

791 
DBT
 *
key
, *
da
;

792 
u_t32_t
 
ags
;

793 
db_pgno_t
 *
pgn
;

795 
BTREE_CURSOR
 *

;

796 
DB
 *
dbp
;

797 
DB_MPOOLFILE
 *
mpf
;

798 
db_pgno_t
 
ig_pgno
;

799 
db_dx_t
 
ig_dx
;

800 
exa
, 
wd
, 
t
;

802 
dbp
 = 
dbc
->dbp;

803 
mpf
 = 
dbp
->mpf;

804 

 = (
BTREE_CURSOR
 *)
dbc
->

;

805 
ig_pgno
 = 

->
pgno
;

806 
ig_dx
 = 

->
dx
;

808 
wd
 = 0;

809 
ags
) {

810 
DB_CURRENT
:

812 i(
	`F_ISSET
(

, 
C_DELETED
)) {

813 
t
 = 
DB_KEYEMPTY
;

814 
r
;

823 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
dbc
->
txn
,

824 0, &

->
ge
)) != 0)

825 
r
;

827 
DB_FIRST
:

828 
wd
 = 1;

829 i((
t
 = 
	`__bamc_ch
(
dbc
,

830 
PGNO_INVALID
, 
NULL
, 
ags
, &
exa
)) != 0)

831 
r
;

833 
DB_GET_BOTH
:

834 
DB_GET_BOTH_RANGE
:

848 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

849 i((
t
 = 
	`__bamc_ch
(

850 
dbc
, 
PGNO_INVALID
, 
da
, 
ags
, &
exa
)) != 0)

851 
r
;

852 i(
ags
 =
DB_GET_BOTH
) {

853 i(!
exa
) {

854 
t
 = 
DB_NOTFOUND
;

855 
r
;

866 i((

->
dx
 =
	`NUM_ENT
(->
ge
) ||

867 
	`IS_CUR_DELETED
(
dbc
)) &&

868 (
t
 = 
	`__bamc_xt
(
dbc
, 1, 0)) != 0)

869 
r
;

871 i((
t
 = 
	`__bamc_ch
(

872 
dbc
, 
PGNO_INVALID
, 
key
, 
ags
, &
exa
)) != 0)

873  (
t
);

874 i(!
exa
) {

875 
t
 = 
DB_NOTFOUND
;

876 
r
;

879 i(
pgn
 !
NULL
 && 
	`__bam_isd
(
dbc
,gnop)) {

880 
wd
 = 1;

883 i((
t
 =

884 
	`__bam_gbh_fddum
(
dbc
, 
da
, 
ags
)) != 0)

885 
r
;

888 
DB_GET_BOTHC
:

889 i((
t
 = 
	`__bam_gbhc
(
dbc
, 
da
)) != 0)

890 
r
;

892 
DB_LAST
:

893 
wd
 = 1;

894 i((
t
 = 
	`__bamc_ch
(
dbc
,

895 
PGNO_INVALID
, 
NULL
, 
ags
, &
exa
)) != 0)

896 
r
;

898 
DB_NEXT
:

899 
wd
 = 1;

900 i(

->
pgno
 =
PGNO_INVALID
) {

901 i((
t
 = 
	`__bamc_ch
(
dbc
,

902 
PGNO_INVALID
, 
NULL
, 
DB_FIRST
, &
exa
)) != 0)

903 
r
;

905 i((
t
 = 
	`__bamc_xt
(
dbc
, 1, 0)) != 0)

906 
r
;

908 
DB_NEXT_DUP
:

909 i((
t
 = 
	`__bamc_xt
(
dbc
, 1, 0)) != 0)

910 
r
;

911 i(!
	`IS_CUR_DUPLICATE
(
dbc
, 
ig_pgno
, 
ig_dx
)) {

912 
t
 = 
DB_NOTFOUND
;

913 
r
;

916 
DB_NEXT_NODUP
:

917 
wd
 = 1;

918 i(

->
pgno
 =
PGNO_INVALID
) {

919 i((
t
 = 
	`__bamc_ch
(
dbc
,

920 
PGNO_INVALID
, 
NULL
, 
DB_FIRST
, &
exa
)) != 0)

921 
r
;

924 i((
t
 = 
	`__bamc_xt
(
dbc
, 1, 0)) != 0)

925 
r
;

926 } 
	`IS_CUR_DUPLICATE
(
dbc
, 
ig_pgno
, 
ig_dx
));

928 
DB_PREV
:

929 
wd
 = 1;

930 i(

->
pgno
 =
PGNO_INVALID
) {

931 i((
t
 = 
	`__bamc_ch
(
dbc
,

932 
PGNO_INVALID
, 
NULL
, 
DB_LAST
, &
exa
)) != 0)

933 
r
;

935 i((
t
 = 
	`__bamc_ev
(
dbc
)) != 0)

936 
r
;

938 
DB_PREV_DUP
:

939 i((
t
 = 
	`__bamc_ev
(
dbc
)) != 0)

940 
r
;

941 i(!
	`IS_CUR_DUPLICATE
(
dbc
, 
ig_pgno
, 
ig_dx
)) {

942 
t
 = 
DB_NOTFOUND
;

943 
r
;

946 
DB_PREV_NODUP
:

947 
wd
 = 1;

948 i(

->
pgno
 =
PGNO_INVALID
) {

949 i((
t
 = 
	`__bamc_ch
(
dbc
,

950 
PGNO_INVALID
, 
NULL
, 
DB_LAST
, &
exa
)) != 0)

951 
r
;

954 i((
t
 = 
	`__bamc_ev
(
dbc
)) != 0)

955 
r
;

956 } 
	`IS_CUR_DUPLICATE
(
dbc
, 
ig_pgno
, 
ig_dx
));

958 
DB_SET
:

959 
DB_SET_RECNO
:

960 
wd
 = 1;

961 i((
t
 = 
	`__bamc_ch
(
dbc
,

962 
PGNO_INVALID
, 
key
, 
ags
, &
exa
)) != 0)

963 
r
;

965 
DB_SET_RANGE
:

966 
wd
 = 1;

967 i((
t
 = 
	`__bamc_ch
(
dbc
,

968 
PGNO_INVALID
, 
key
, 
ags
, &
exa
)) != 0)

969 
r
;

977 i(

->
dx
 =
	`NUM_ENT
(->
ge
|| 
	`IS_CUR_DELETED
(
dbc
))

978 i((
t
 = 
	`__bamc_xt
(
dbc
, 0, 0)) != 0)

979 
r
;

982 
t
 = 
	`__db_unknown_ag
(
dbp
->
dbv
, "__bamc_g", 
ags
);

983 
r
;

990 i(
wd
 && 
pgn
 !
NULL
)

991 ()
	`__bam_isd
(
dbc
, 
pgn
);

993 
r
:

998 i(
	`F_ISSET
(

, 
C_DELETED
) &&

999 (

->
pgno
 !
ig_pgno
 || cp->
dx
 !
ig_dx
))

1000 
	`F_CLR
(

, 
C_DELETED
);

1002  (
t
);

1003 
	}
}

1006 
	$__bam_g_ev
(
dbc
)

1007 
DBC
 *
dbc
;

1009 
BTREE_CURSOR
 *

;

1010 
DBT
 
key
, 
da
;

1011 
db_pgno_t
 
pgno
;

1012 
t
;

1014 i((
t
 = 
	`__bamc_ev
(
dbc
)) != 0)

1015  (
t
);

1017 i(
	`__bam_isd
(
dbc
, &
pgno
)) {

1018 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1019 i((
t
 = 
	`__dbc_wd
(
dbc
, 
pgno
, 

->
d
, &cp->opd)) != 0)

1020  (
t
);

1021 i((
t
 = 

->
d
->
	`am_g
(cp->opd,

1022 &
key
, &
da
, 
DB_LAST
, 
NULL
)) != 0)

1023  (
t
);

1027 
	}
}

1033 
	$__bam_bulk
(
dbc
, 
da
, 
ags
)

1034 
DBC
 *
dbc
;

1035 
DBT
 *
da
;

1036 
u_t32_t
 
ags
;

1038 
BKEYDATA
 *
bk
;

1039 
BOVERFLOW
 *
bo
;

1040 
BTREE_CURSOR
 *

;

1041 
PAGE
 *
pg
;

1042 
db_dx_t
 *
p
, 
dx
, 
pg_keyoff
;

1043 
t32_t
 *
dp
, 
key_off
, *
of
, *
veof
;

1044 
u_t8_t
 *
dbuf
, *
dp
, *

;

1045 
u_t32_t
 
key_size
, 
gesize
, 
size
, 
a
;

1046 
adj
, 
is_key
, 
ed_pg
, 
xt_key
, 
no_dup
, 
c_key
, 
t
;

1048 
t
 = 0;

1049 
key_off
 = 0;

1050 
size
 = 0;

1051 
gesize
 = 
dbc
->
dbp
->
pgsize
;

1052 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1059 
dbuf
 = 
da
->data;

1060 

 = 
dp
 = 
dbuf
;

1063 
a
 = 
da
->
un
;

1064 
a
 -(*
of
);

1067 
dp
 = (
t32_t
 *)((
u_t8_t
 *)
dbuf
 + 
da
->
un
);

1068 
dp
--;

1069 
of
 = 
dp
;

1071 
key_size
 = 0;

1081 i(
dbc
->
dbty
 =
DB_BTREE
) {

1082 
is_key
 = 
	`LF_ISSET
(
DB_MULTIPLE_KEY
) ? 1: 0;

1083 
c_key
 = 0;

1084 
xt_key
 = 
is_key
 && 
	`LF_ISSET
(
DB_OPFLAGS_MASK
!
DB_NEXT_DUP
;

1085 
adj
 = 2;

1087 
is_key
 = 0;

1088 
c_key
 = 
	`LF_ISSET
(
DB_MULTIPLE_KEY
) ? 1 : 0;

1089 
xt_key
 = 
	`LF_ISSET
(
DB_OPFLAGS_MASK
!
DB_NEXT_DUP
;

1090 
adj
 = 1;

1092 
no_dup
 = 
	`LF_ISSET
(
DB_OPFLAGS_MASK
=
DB_NEXT_NODUP
;

1094 
xt_pg
:

1095 
dx
 = 

->indx;

1096 
pg
 = 

->
ge
;

1098 
p
 = 
	`P_INP
(
dbc
->
dbp
, 
pg
);

1100 
ed_pg
 = 1;

1107 
pg_keyoff
 = 0;

1108 i(
is_key
 == 0)

1109 
pg_keyoff
 = 
p
[
dx
];

1112 i(
	`IS_DELETED
(
dbc
->
dbp
, 
pg
, 
dx
)) {

1113 i(
dbc
->
dbty
 !
DB_RECNO
)

1116 

->
o
++;

1122 i(
c_key
 != 0)

1125 
a
 -2 * (*
of
);

1127 i(
a
 > 
da
->
un
)

1128 
back_up
;

1131 *
of
-- = 0;

1132 *
of
-- = 0;

1142 i(
is_key
 && 
pg_keyoff
 !
p
[
dx
]) {

1143 
bk
 = 
	`GET_BKEYDATA
(
dbc
->
dbp
, 
pg
, 
dx
);

1144 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
) {

1145 
bo
 = (
BOVERFLOW
 *)
bk
;

1146 
size
 = 
key_size
 = 
bo
->

;

1147 i(
key_size
 > 
a
)

1148 
g_key_a
;

1149 i((
t
 = 
	`__bam_bulk_ovow
(
dbc
,

1150 
bo
->

, bo->
pgno
, 

)) != 0)

1151  (
t
);

1152 
a
 -
key_size
;

1153 
key_off
 = (
t32_t
)(

 - 
dbuf
);

1154 

 +
key_size
;

1156 i(
ed_pg
) {

1157 
dp
 = 

;

1158 
size
 = 
gesize
 - 
	`HOFFSET
(
pg
);

1159 i(
a
 < 
size
) {

1160 
g_key_a
:

1162 i(
of
 =
dp
) {

1163 
da
->
size
 = (
u_t32_t
)

1164 
	`DB_ALIGN
(
size
 +

1165 
gesize
, 1024);

1167 (
DB_BUFFER_SMALL
);

1175 i(
dx
 != 0)

1176 
dx
 -
P_INDX
;

1178 i((
t
 =

1179 
	`__bam_g_ev
(

1180 
dbc
)) != 0)

1181  (
t
);

1182 
dx
 = 

->indx;

1183 
pg
 = 

->
ge
;

1191 
	`memy
(
dp
,

1192 (
u_t8_t
 *)
pg
 + 
	`HOFFSET
g), 
size
);

1193 
ed_pg
 = 0;

1194 
a
 -
size
;

1195 

 +
size
;

1197 
key_size
 = 
bk
->
n
;

1198 
key_off
 = (
t32_t
)((
p
[
dx
] - 
	`HOFFSET
(
pg
))

1199 + (
dp
 - 
dbuf
+ 
	`SSZA
(
BKEYDATA
, 
da
));

1200 
pg_keyoff
 = 
p
[
dx
];

1208 
a
 -(
is_key
 ? 4 : 2* (*
of
);

1209 i(
c_key
)

1210 
a
 -(*
of
);

1213 i(
a
 > 
da
->
un
)

1214 
back_up
;

1222 
bk
 = 
	`GET_BKEYDATA
(
dbc
->
dbp
, 
pg
, 
dx
 + 
adj
 - 1);

1223 i(
	`B_TYPE
(
bk
->
ty
=
B_DUPLICATE
) {

1224 
bo
 = (
BOVERFLOW
 *)
bk
;

1225 i(
is_key
) {

1226 *
of
-- = (
t32_t
)
key_off
;

1227 *
of
-- = (
t32_t
)
key_size
;

1234 
veof
 = 
of
;

1235 i((
t
 = 
	`__bam_bulk_duis
(
dbc
, 
bo
->
pgno
,

1236 
dbuf
, 
is_key
 ? 
of
 + 
P_INDX
 : 
NULL
,

1237 &
of
, &

, &
a
, 
no_dup
)) != 0) {

1238 i(
t
 =
DB_BUFFER_SMALL
) {

1239 
size
 = 
a
;

1240 
a
 = 0;

1242 i(
of
 =
veof
) {

1243 
of
 += 2;

1244 
back_up
;

1246 
g_a
;

1248  (
t
);

1250 } i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
) {

1251 
bo
 = (
BOVERFLOW
 *)
bk
;

1252 
size
 = 
bo
->

;

1253 i(
size
 > 
a
)

1254 
back_up
;

1255 i((
t
 =

1256 
	`__bam_bulk_ovow
(
dbc
,

1257 
bo
->

, bo->
pgno
, 

)) != 0)

1258  (
t
);

1259 
a
 -
size
;

1260 i(
is_key
) {

1261 *
of
-- = (
t32_t
)
key_off
;

1262 *
of
-- = (
t32_t
)
key_size
;

1263 } i(
c_key
)

1264 *
of
-- = (
t32_t
)

->
o
;

1265 *
of
-- = (
t32_t
)(

 - 
dbuf
);

1266 

 +
size
;

1267 *
of
-- = (
t32_t
)
size
;

1269 i(
ed_pg
) {

1270 
dp
 = 

;

1271 
size
 = 
gesize
 - 
	`HOFFSET
(
pg
);

1272 i(
a
 < 
size
) {

1273 
back_up
:

1278 i(
dx
 >
adj
)

1279 
dx
 -
adj
;

1281 i((
t
 =

1282 
	`__bam_g_ev
(
dbc
)) != 0 &&

1283 
t
 !
DB_NOTFOUND
)

1284  (
t
);

1285 
dx
 = 

->indx;

1286 
pg
 = 

->
ge
;

1288 i(
dbc
->
dbty
 =
DB_RECNO
)

1289 

->
o
--;

1290 
g_a
:

1296 i(
of
 >=

1297 (
is_key
 ? &
dp
[-1] :ndp) ||

1298 
	`F_ISSET
(
dbc
, 
DBC_TRANSIENT
)) {

1299 
da
->
size
 = (
u_t32_t
)

1300 
	`DB_ALIGN
(
size
 +

1301 
da
->
un
 - 
a
, 1024);

1302  (
DB_BUFFER_SMALL
);

1306 
	`memy
(
dp
, (
u_t8_t
 *)
pg
 + 
	`HOFFSET
g), 
size
);

1307 
ed_pg
 = 0;

1308 
a
 -
size
;

1309 

 +
size
;

1315 i(
is_key
) {

1316 *
of
-- = (
t32_t
)
key_off
;

1317 *
of
-- = (
t32_t
)
key_size
;

1318 } i(
c_key
)

1319 *
of
-- = (
t32_t
)

->
o
;

1320 *
of
-- = (
t32_t
)((
p
[
dx
 + 
adj
 - 1] - 
	`HOFFSET
(
pg
))

1321 + (
dp
 - 
dbuf
+ 
	`SSZA
(
BKEYDATA
, 
da
));

1322 *
of
-- = 
bk
->
n
;

1324 i(
dbc
->
dbty
 =
DB_RECNO
)

1325 

->
o
++;

1326 i(
no_dup
) {

1327 
dx
 + 
adj
 < 
	`NUM_ENT
(
pg
) &&

1328 
pg_keyoff
 =
p
[
dx
 + 
adj
])

1329 
dx
 +
adj
;

1335 } (
dx
 +
adj
< 
	`NUM_ENT
(
pg
) &&

1336 (
xt_key
 || 
pg_keyoff
 =
p
[
dx
]));

1339 i(
t
 =0 && 
xt_key
 && 
dx
 >
	`NUM_ENT
(
pg
)) {

1340 

->
dx
 = indx;

1341 
t
 = 
	`__bamc_xt
(
dbc
, 0, 1);

1342 i(
t
 == 0)

1343 
xt_pg
;

1344 i(
t
 !
DB_NOTFOUND
)

1345  (
t
);

1355 i(
t
 =0 && 
dx
 < 
pg
->
s
 &&

1356 
	`F_ISSET
(
dbc
, 
DBC_TRANSIENT
&& 
pg_keyoff
 =
p
[
dx
]) {

1357 
da
->
size
 = (da->
un
 - 
a
) + size;

1358  (
DB_BUFFER_SMALL
);

1365 i(
t
 =
DB_BUFFER_SMALL
 || 
xt_key
 || 
pg_keyoff
 =
p
[
dx
])

1366 

->
dx
 = indx;

1368 

->
dx
 = indx - 
P_INDX
;

1370 i(
c_key
 == 1)

1371 *
of
 = 
RECNO_OOB
;

1373 *
of
 = -1;

1375 
	}
}

1385 
	$__bam_bulk_ovow
(
dbc
, 
n
, 
pgno
, 
dp
)

1386 
DBC
 *
dbc
;

1387 
u_t32_t
 
n
;

1388 
db_pgno_t
 
pgno
;

1389 
u_t8_t
 *
dp
;

1391 
DBT
 
dbt
;

1393 
	`memt
(&
dbt
, 0, (dbt));

1394 
	`F_SET
(&
dbt
, 
DB_DBT_USERMEM
);

1395 
dbt
.
un
 = 
n
;

1396 
dbt
.
da
 = (*)
dp
;

1397  (
	`__db_goff
(
dbc
->
dbp
,

1398 
dbc
->
txn
, &
dbt
, 
n
, 
pgno
, 
NULL
, NULL));

1399 
	}
}

1411 
	$__bam_bulk_duis
(
dbc
, 
pgno
, 
dbuf
, 
keyoff
, 
ofp
, 
d
, 
ap
, 
no_dup
)

1412 
DBC
 *
dbc
;

1413 
db_pgno_t
 
pgno
;

1414 
u_t8_t
 *
dbuf
;

1415 
t32_t
 *
keyoff
, **
ofp
;

1416 
u_t8_t
 **
d
;

1417 
u_t32_t
 *
ap
;

1418 
no_dup
;

1420 
DB
 *
dbp
;

1421 
BKEYDATA
 *
bk
;

1422 
BOVERFLOW
 *
bo
;

1423 
BTREE_CURSOR
 *

;

1424 
DBC
 *
d
;

1425 
DBT
 
key
, 
da
;

1426 
PAGE
 *
pg
;

1427 
db_dx_t
 
dx
, *
p
;

1428 
t32_t
 *
of
;

1429 
u_t32_t
 
gesize
, 
size
, 
a
;

1430 
u_t8_t
 *
dp
, *

;

1431 
f
, 
ed_pg
, 
t
, 
t_t
;

1433 
t
 = 0;

1435 
dbp
 = 
dbc
->dbp;

1436 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1437 
d
 = 

->opd;

1439 i(
d
 =
NULL
) {

1440 i((
t
 = 
	`__dbc_wd
(
dbc
, 
pgno
, 
NULL
, &
d
)) != 0)

1441  (
t
);

1442 

->
d
 = opd;

1443 i((
t
 = 
d
->
	`am_g
(opd,

1444 &
key
, &
da
, 
DB_FIRST
, 
NULL
)) != 0)

1445 
o_d
;

1448 
gesize
 = 
d
->
dbp
->
pgsize
;

1449 

 = (
BTREE_CURSOR
 *)
d
->

;

1450 
a
 = *
ap
;

1452 
of
 = *
ofp
;

1458 

 = 
dp
 = *
d
;

1459 
f
 = 1;

1460 
dx
 = 

->indx;

1464 i((
t
 = 
	`__bamc_xt
(
d
, 0, 0)) != 0)

1466 
pg
 = 

->
ge
;

1467 
dx
 = 

->indx;

1468 
p
 = 
	`P_INP
(
dbp
, 
pg
);

1470 
ed_pg
 = 1;

1473 i(
	`IS_DELETED
(
dbp
, 
pg
, 
dx
))

1474 
ct
;

1475 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
pg
, 
dx
);

1476 
a
 -2 * (*
of
);

1478 i(
f
 =0 && 
keyoff
 !
NULL
)

1479 
a
 -2 * (*
of
);

1482 i(
a
 > *
ap
) {

1483 
t
 = 
DB_BUFFER_SMALL
;

1484 i(
f
 == 1) {

1486 
a
 = -(
t32_t
)space;

1487 
a
 = *
ap
 + space;

1488 i(
ed_pg
)

1489 
a
 +
gesize
 - 
	`HOFFSET
(
pg
);

1493 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
) {

1494 
bo
 = (
BOVERFLOW
 *)
bk
;

1495 
size
 = 
bo
->

;

1496 i(
size
 > 
a
) {

1497 
t
 = 
DB_BUFFER_SMALL
;

1498 
a
 = *
ap
 + 
size
;

1501 i(
f
 =0 && 
keyoff
 !
NULL
) {

1502 *
of
-- = 
keyoff
[0];

1503 *
of
-- = 
keyoff
[-1];

1505 i((
t
 = 
	`__bam_bulk_ovow
(
dbc
,

1506 
bo
->

, bo->
pgno
, 

)) != 0)

1507  (
t
);

1508 
a
 -
size
;

1509 *
of
-- = (
t32_t
)(

 - 
dbuf
);

1510 

 +
size
;

1512 i(
ed_pg
) {

1513 
dp
 = 

;

1514 
size
 = 
gesize
 - 
	`HOFFSET
(
pg
);

1515 i(
a
 < 
size
) {

1516 
t
 = 
DB_BUFFER_SMALL
;

1518 
a
 = *
ap
 + 
size
;

1521 
	`memy
(
dp
,

1522 (
u_t8_t
 *)
pg
 + 
	`HOFFSET
g), 
size
);

1523 
ed_pg
 = 0;

1524 
a
 -
size
;

1525 

 +
size
;

1527 i(
f
 =0 && 
keyoff
 !
NULL
) {

1528 *
of
-- = 
keyoff
[0];

1529 *
of
-- = 
keyoff
[-1];

1531 
size
 = 
bk
->
n
;

1532 *
of
-- = (
t32_t
)((
p
[
dx
] - 
	`HOFFSET
(
pg
))

1533 + (
dp
 - 
dbuf
+ 
	`SSZA
(
BKEYDATA
, 
da
));

1535 *
of
-- = (
t32_t
)
size
;

1536 
f
 = 0;

1537 i(
no_dup
)

1539 
ct
:

1540 
dx
++;

1541 i(
d
->
dbty
 =
DB_RECNO
)

1542 

->
o
++;

1543 } 
dx
 < 
	`NUM_ENT
(
pg
));

1544 i(
no_dup
)

1546 

->
dx
 = indx;

1548 } 
t
 == 0);

1551 *
ap
 = 
a
;

1552 *
ofp
 = 
of
;

1553 *
d
 = 

;

1559 i(
t
 =
DB_BUFFER_SMALL
) {

1560 i(
d
->
dbty
 =
DB_RECNO
) {

1561 i(--

->
o
 == 0)

1562 
o_d
;

1563 } i(
dx
 != 0)

1564 

->
dx
--;

1566 
t_t
 = 
	`__bamc_ev
(
d
);

1567 i(
t_t
 =
DB_NOTFOUND
)

1568 
o_d
;

1569 i(
t_t
 != 0)

1570 
t
 = 
t_t
;

1572 } i(
keyoff
 =
NULL
 && 
t
 =
DB_NOTFOUND
) {

1573 

->
dx
--;

1574 i(
d
->
dbty
 =
DB_RECNO
)

1575 --

->
o
;

1576 } i(
dx
 =0 || 
t
 =
DB_NOTFOUND
) {

1577 
o_d
:

1578 i(
t
 =
DB_NOTFOUND
)

1579 
t
 = 0;

1580 i((
t_t
 = 
	`__dbc_o
(
d
)!0 && 
t
 == 0)

1581 
t
 = 
t_t
;

1582 ((
BTREE_CURSOR
 *)
dbc
->

)->
d
 = 
NULL
;

1584 i(
t
 =
DB_NOTFOUND
)

1585 
t
 = 0;

1587  (
t
);

1588 
	}
}

1595 
	$__bam_gbhc
(
dbc
, 
da
)

1596 
DBC
 *
dbc
;

1597 
DBT
 *
da
;

1599 
BTREE_CURSOR
 *

;

1600 
DB
 *
dbp
;

1601 
DB_MPOOLFILE
 *
mpf
;

1602 
cmp
, 
exa
, 
t
;

1604 
dbp
 = 
dbc
->dbp;

1605 
mpf
 = 
dbp
->mpf;

1606 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1614 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
dbc
->
txn
, 0, &->
ge
)) != 0)

1615  (
t
);

1622 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

1627 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
,

1628 
da
, 

->
ge
, cp->
dx
,

1629 
dbp
->
dup_com
 =
NULL
 ? 
__bam_defcmp
 : dbp->dup_compare,

1630 &
cmp
)) != 0)

1631  (
t
);

1633 i(
cmp
 <= 0)

1634  (
DB_NOTFOUND
);

1637 i((
t
 = 
	`__memp_ut
(
mpf
, 

->
ge
, 
dbc
->
iܙy
)) != 0)

1638  (
t
);

1639 

->
ge
 = 
NULL
;

1641  (
	`__bamc_ch
(
dbc
,

1642 
PGNO_INVALID
, 
da
, 
DB_GET_BOTH
, &
exa
));

1654 i(

->
dx
 + 
P_INDX
 >
	`NUM_ENT
(->
ge
) ||

1655 !
	`IS_DUPLICATE
(
dbc
, 

->
dx
, cp->dx + 
P_INDX
))

1656  (
DB_NOTFOUND
);

1657 

->
dx
 +
P_INDX
;

1659  (
	`__bam_gbh_fddum
(
dbc
, 
da
, 
DB_GET_BOTH
));

1660 
	}
}

1667 
	$__bam_gbh_fddum
(
dbc
, 
da
, 
ags
)

1668 
DBC
 *
dbc
;

1669 
DBT
 *
da
;

1670 
u_t32_t
 
ags
;

1672 
BTREE_CURSOR
 *

;

1673 
DB
 *
dbp
;

1674 
db_dx_t
 
ba
, 
lim
, 
t
;

1675 
cmp
, 
t
;

1677 
	`COMPQUIET
(
cmp
, 0);

1679 
dbp
 = 
dbc
->dbp;

1680 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1693 i(
dbp
->
dup_com
 =
NULL
) {

1694 ;; 

->
dx
 +
P_INDX
) {

1695 i(!
	`IS_CUR_DELETED
(
dbc
) &&

1696 (
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
, 
da
, 

->
ge
,

1697 

->
dx
 + 
O_INDX
, 
__bam_defcmp
, &
cmp
)) != 0)

1698  (
t
);

1699 i(
cmp
 == 0)

1702 i(

->
dx
 + 
P_INDX
 >
	`NUM_ENT
(->
ge
) ||

1703 !
	`IS_DUPLICATE
(
dbc
, 

->
dx
, cp->dx + 
P_INDX
))

1706  (
DB_NOTFOUND
);

1717 
ba
 = 
t
 = 

->
dx
; < 
	`NUM_ENT
(->
ge
); +
P_INDX
)

1718 i(!
	`IS_DUPLICATE
(
dbc
, 

->
dx
, 
t
))

1720 i(
ba
 =(
t
 - 
P_INDX
)) {

1721 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
, 
da
,

1722 

->
ge
, cp->
dx
 + 
O_INDX
, 
dbp
->
dup_com
, &
cmp
)) != 0)

1723  (
t
);

1724  (
cmp
 == 0 ||

1725 (
cmp
 < 0 && 
ags
 =
DB_GET_BOTH_RANGE
? 0 : 
DB_NOTFOUND
);

1728 
lim
 = (
t
 - 
ba
/ (
db_dx_t
)
P_INDX
;im != 0;im >>= 1) {

1729 

->
dx
 = 
ba
 + ((
lim
 >> 1* 
P_INDX
);

1730 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
, 
da
, 

->
ge
,

1731 

->
dx
 + 
O_INDX
, 
dbp
->
dup_com
, &
cmp
)) != 0)

1732  (
t
);

1733 i(
cmp
 == 0) {

1739 i(!
	`IS_CUR_DELETED
(
dbc
))

1743 i(
cmp
 > 0) {

1744 
ba
 = 

->
dx
 + 
P_INDX
;

1745 --
lim
;

1750 i(
ags
 =
DB_GET_BOTH
)

1751  (
DB_NOTFOUND
);

1758 

->
dx
 = 
ba
;

1759 

->
dx
 < 
t
 && 
	`IS_CUR_DELETED
(
dbc
))

1760 

->
dx
 +
P_INDX
;

1761  (

->
dx
 < 
t
 ? 0 : 
DB_NOTFOUND
);

1762 
	}
}

1769 
	$__bamc_put
(
dbc
, 
key
, 
da
, 
ags
, 
pgn
)

1770 
DBC
 *
dbc
;

1771 
DBT
 *
key
, *
da
;

1772 
u_t32_t
 
ags
;

1773 
db_pgno_t
 *
pgn
;

1775 
BTREE
 *
t
;

1776 
BTREE_CURSOR
 *

;

1777 
DB
 *
dbp
;

1778 
DBT
 
dbt
;

1779 
DB_MPOOLFILE
 *
mpf
;

1780 
db_pgno_t
 
ro_pgno
;

1781 
u_t32_t
 
ii
;

1782 
cmp
, 
exa
, 
own
, 
t
, 
ack
;

1783 *
g
;

1785 
dbp
 = 
dbc
->dbp;

1786 
mpf
 = 
dbp
->mpf;

1787 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1788 
ro_pgno
 = 

->
ro
;

1790 
l
: 
t
 = 
ack
 = 0;

1791 
ags
) {

1792 
DB_CURRENT
:

1793 i(
	`F_ISSET
(

, 
C_DELETED
))

1794  (
DB_NOTFOUND
);

1797 
DB_AFTER
:

1798 
DB_BEFORE
:

1799 
ii
 = 
ags
;

1800 
own
 = 1;

1803 
	`ACQUIRE_WRITE_LOCK
(
dbc
, 
t
);

1804 i(
t
 != 0)

1805 
r
;

1806 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
dbc
->
txn
,

1807 0, &

->
ge
)) != 0)

1808 
r
;

1810 
DB_KEYFIRST
:

1811 
DB_KEYLAST
:

1812 
DB_NODUPDATA
:

1813 
DB_NOOVERWRITE
:

1814 
own
 = 0;

1822 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

1823 i((
t
 = 
	`__bamc_ch
(
dbc
,

1824 
	`F_ISSET
(

, 
C_RECNUM
? cp->
ro
 : 
ro_pgno
,

1825 
da
, 
ags
, &
exa
)) != 0)

1826 
r
;

1827 
ack
 = 1;

1830 i(
exa
) {

1831 i(
	`IS_DELETED
(
dbp
, 

->
ge
, cp->
dx
)) {

1832 
ii
 = 
DB_CURRENT
;

1835 
t
 = 
	`__db_du
(
dbp
, 
ags
);

1836 
r
;

1838 
ii
 = 
DB_BEFORE
;

1851 i((
t
 = 
	`__bamc_ch
(
dbc
,

1852 
	`F_ISSET
(

, 
C_RECNUM
? cp->
ro
 : 
ro_pgno
, 
key
,

1853 
ags
 =
DB_KEYFIRST
 || 
dbp
->
dup_com
 !
NULL
 ?

1854 
DB_KEYFIRST
 : 
DB_KEYLAST
, &
exa
)) != 0)

1855 
r
;

1856 
ack
 = 1;

1862 i(!
exa
) {

1863 
ii
 = 
DB_KEYFIRST
;

1870 } i(
ags
 =
DB_NOOVERWRITE
 && !
	`IS_CUR_DELETED
(
dbc
)) {

1871 i(
pgn
 !
NULL
 && 
	`__bam_isd
(
dbc
,gnop))

1872 
t
 = 
	`__bam_d_exis
(
dbc
, *
pgn
);

1874 
t
 = 
DB_KEYEXIST
;

1875 i(
t
 != 0)

1876 
r
;

1882 i(!
	`F_ISSET
(
dbp
, 
DB_AM_DUP
)) {

1883 
ii
 = 
DB_CURRENT
;

1892 i(
pgn
 !
NULL
 && 
	`__bam_isd
(
dbc
,gnop))

1893 
de
;

1896 i(
dbp
->
dup_com
 =
NULL
) {

1897 i(
ags
 =
DB_KEYFIRST
)

1898 
ii
 = 
DB_BEFORE
;

1900 ;; 

->
dx
 +
P_INDX
)

1901 i(

->
dx
 + 
P_INDX
 >=

1902 
	`NUM_ENT
(

->
ge
) ||

1903 !
	`IS_DUPLICATE
(
dbc
, 

->
dx
,

1904 

->
dx
 + 
P_INDX
)) {

1905 
ii
 = 
DB_AFTER
;

1915 ;; 

->
dx
 +
P_INDX
) {

1916 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
, 
da
, 

->
ge
,

1917 

->
dx
 + 
O_INDX
, 
dbp
->
dup_com
, &
cmp
)) != 0)

1918 
r
;

1919 i(
cmp
 < 0) {

1920 
ii
 = 
DB_BEFORE
;

1925 i(
cmp
 == 0) {

1926 i(
	`IS_DELETED
(
dbp
, 

->
ge
, cp->
dx
)) {

1927 
ii
 = 
DB_CURRENT
;

1930 
t
 = 
	`__db_du
(
dbp
, 
ags
);

1931 
r
;

1934 i(

->
dx
 + 
P_INDX
 >
	`NUM_ENT
(->
ge
) ||

1935 
	`P_INP
(
dbp
, ((
PAGE
 *)

->
ge
))[->
dx
] !=

1936 
	`P_INP
(
dbp
, ((
PAGE
 *)

->
ge
))[->
dx
 + 
P_INDX
]) {

1937 
ii
 = 
DB_AFTER
;

1943 
t
 = 
	`__db_unknown_ag
(
dbp
->
dbv
, "__bamc_put", 
ags
);

1944 
r
;

1947 
t
 = 
	`__bam_iem
(
dbc
, 
key
, 
da
, 
ii
, 0)) {

1950 
DB_NEEDSPLIT
:

1955 i(
ags
 =
DB_AFTER
 ||

1956 
ags
 =
DB_BEFORE
 || fg=
DB_CURRENT
) {

1957 
	`memt
(&
dbt
, 0, (
DBT
));

1958 i((
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
, 

->
ge
, 0,

1959 &
dbt
, &
dbc
->
my_rkey
.
da
, &dbc->my_rkey.
un
)) != 0)

1960 
r
;

1961 
g
 = &
dbt
;

1963 
g
 = 
	`F_ISSET
(
dbc
, 
DBC_OPD
? 
da
 : 
key
;

1972 i(
ack
)

1973 
t
 = 
	`__bam_kl
(
dbc
, 
STK_CLRDBC
 | 
STK_NOLOCK
);

1975 
	`DISCARD_CUR
(
dbc
, 
t
);

1976 i(
t
 != 0)

1977 
r
;

1987 i(
own
 == 0) {

1988 

->
pgno
 = 
PGNO_INVALID
;

1989 

->
dx
 = 0;

1993 i((
t
 = 
	`__bam_l
(
dbc
, 
g
, &
ro_pgno
)) != 0)

1994  (
t
);

1996 
l
;

1998 
r
;

2001 
r
:

2002 
de
:

2015 
t
 = 
dbp
->
bt_
;

2016 i(
t
 =0 && 
	`TYPE
(

->
ge
=
P_LBTREE
 &&

2017 (
ags
 =
DB_KEYFIRST
 || fg=
DB_KEYLAST
) &&

2018 !
	`F_ISSET
(

, 
C_RECNUM
) &&

2019 (!
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
) ||

2020 (
	`LOGGING_ON
(
dbp
->
dbv
&& !
	`F_ISSET
(dbp, 
DB_AM_NOT_DURABLE
))) &&

2021 ((
	`NEXT_PGNO
(

->
ge
=
PGNO_INVALID
 &&

2022 

->
dx
 >
	`NUM_ENT
(->
ge
- 
P_INDX
) ||

2023 (
	`PREV_PGNO
(

->
ge
=
PGNO_INVALID
 && cp->
dx
 == 0))) {

2024 
t
->
bt_gno
 = 

->
pgno
;

2025 i(
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
))

2026 
t
->
bt_΢
 = 
	`LSN
(

->
ge
);

2028 
t
->
bt_gno
 = 
PGNO_INVALID
;

2036 i(
ack
 && 
	`BT_STK_POP
(

!
NULL
)

2037 ()
	`__bam_kl
(
dbc
, 0);

2048 
	`F_CLR
(

, 
C_DELETED
);

2049 i(

->
d
 !
NULL
) {

2050 

 = (
BTREE_CURSOR
 *)->
d
->

;

2051 
	`F_CLR
(

, 
C_DELETED
);

2054  (
t
);

2055 
	}
}

2064 
	$__bamc_rg
(
dbc
, 
da
)

2065 
DBC
 *
dbc
;

2066 
DBT
 *
da
;

2068 
BTREE_CURSOR
 *

;

2069 
DB
 *
dbp
;

2070 
DBT
 
dbt
;

2071 
DB_MPOOLFILE
 *
mpf
;

2072 
db_o_t
 
o
;

2073 
exa
, 
t
, 
t_t
;

2075 
dbp
 = 
dbc
->dbp;

2076 
mpf
 = 
dbp
->mpf;

2077 

 = (
BTREE_CURSOR
 *)
dbc
->

;

2084 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
dbc
->
txn
, 0, &->
ge
)) != 0)

2085  (
t
);

2086 
	`memt
(&
dbt
, 0, (
DBT
));

2087 i((
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
, 

->
ge
,

2088 

->
dx
, &
dbt
, &
dbc
->
my_rkey
.
da
, &dbc->my_rkey.
un
)) != 0)

2089 
r
;

2090 
t
 = 
	`__memp_ut
(
mpf
, 

->
ge
, 
dbc
->
iܙy
);

2091 

->
ge
 = 
NULL
;

2092 i(
t
 != 0)

2093  (
t
);

2095 i((
t
 = 
	`__bam_ch
(
dbc
, 
PGNO_INVALID
, &
dbt
,

2096 
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
SR_FIND_WR
 : 
SR_FIND
,

2097 1, &
o
, &
exa
)) != 0)

2098 
r
;

2100 
t
 = 
	`__db_tcy
(
dbp
->
dbv
, 
da
,

2101 &
o
, eo), &
dbc
->
rda
->
da
, &dbc->rda->
un
);

2104 
r
: i((
t_t
 = 
	`__bam_kl
(
dbc
, 0)!0 && 
t
 == 0)

2105 
t
 = 
t_t
;

2107  (
t
);

2108 
	}
}

2115 
	$__bamc_wrock
(
dbc
)

2116 
DBC
 *
dbc
;

2118 
BTREE_CURSOR
 *

;

2119 
t
;

2121 

 = (
BTREE_CURSOR
 *)
dbc
->

;

2123 i(

->
lock_mode
 =
DB_LOCK_WRITE
)

2132 
	`ACQUIRE_WRITE_LOCK
(
dbc
, 
t
);

2133  (
t
);

2134 
	}
}

2141 
	$__bamc_xt
(
dbc
, 
l_move
, 
ded_okay
)

2142 
DBC
 *
dbc
;

2143 
l_move
, 
ded_okay
;

2145 
BTREE_CURSOR
 *

;

2146 
db_dx_t
 
adju
;

2147 
db_lockmode_t
 
lock_mode
;

2148 
db_pgno_t
 
pgno
;

2149 
t
;

2151 

 = (
BTREE_CURSOR
 *)
dbc
->

;

2152 
t
 = 0;

2161 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

2162 
adju
 = 
O_INDX
;

2163 
lock_mode
 = 
DB_LOCK_NG
;

2165 
adju
 = 
dbc
->
dbty
 =
DB_BTREE
 ? 
P_INDX
 : 
O_INDX
;

2166 
lock_mode
 =

2167 
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
DB_LOCK_WRITE
 : 
DB_LOCK_READ
;

2169 i(

->
ge
 =
NULL
) {

2170 
	`ACQUIRE_CUR
(
dbc
, 
lock_mode
, 

->
pgno
, 0, 
t
);

2171 i(
t
 != 0)

2172  (
t
);

2175 i(
l_move
)

2176 

->
dx
 +
adju
;

2186 i(

->
dx
 >
	`NUM_ENT
(->
ge
)) {

2187 i((
pgno
 = 
	`NEXT_PGNO
(

->
ge
)=
PGNO_INVALID
)

2188  (
DB_NOTFOUND
);

2190 
	`ACQUIRE_CUR
(
dbc
, 
lock_mode
, 
pgno
, 0, 
t
);

2191 i(
t
 != 0)

2192  (
t
);

2193 

->
dx
 = 0;

2196 i(!
ded_okay
 && 
	`IS_CUR_DELETED
(
dbc
)) {

2197 

->
dx
 +
adju
;

2203 
	}
}

2210 
	$__bamc_ev
(
dbc
)

2211 
DBC
 *
dbc
;

2213 
BTREE_CURSOR
 *

;

2214 
db_dx_t
 
adju
;

2215 
db_lockmode_t
 
lock_mode
;

2216 
db_pgno_t
 
pgno
;

2217 
t
;

2219 

 = (
BTREE_CURSOR
 *)
dbc
->

;

2220 
t
 = 0;

2229 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

2230 
adju
 = 
O_INDX
;

2231 
lock_mode
 = 
DB_LOCK_NG
;

2233 
adju
 = 
dbc
->
dbty
 =
DB_BTREE
 ? 
P_INDX
 : 
O_INDX
;

2234 
lock_mode
 =

2235 
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
DB_LOCK_WRITE
 : 
DB_LOCK_READ
;

2237 i(

->
ge
 =
NULL
) {

2238 
	`ACQUIRE_CUR
(
dbc
, 
lock_mode
, 

->
pgno
, 0, 
t
);

2239 i(
t
 != 0)

2240  (
t
);

2245 i(

->
dx
 == 0) {

2246 i((
pgno
 =

2247 
	`PREV_PGNO
(

->
ge
)=
PGNO_INVALID
)

2248  (
DB_NOTFOUND
);

2250 
	`ACQUIRE_CUR
(
dbc
, 
lock_mode
, 
pgno
, 0, 
t
);

2251 i(
t
 != 0)

2252  (
t
);

2254 i((

->
dx
 = 
	`NUM_ENT
(->
ge
)) == 0)

2259 

->
dx
 -
adju
;

2260 i(
	`IS_CUR_DELETED
(
dbc
))

2266 
	}
}

2273 
	$__bamc_ch
(
dbc
, 
ro_pgno
, 
key
, 
ags
, 
exap
)

2274 
DBC
 *
dbc
;

2275 
db_pgno_t
 
ro_pgno
;

2276 cڡ 
DBT
 *
key
;

2277 
u_t32_t
 
ags
;

2278 *
exap
;

2280 
BTREE
 *
t
;

2281 
BTREE_CURSOR
 *

;

2282 
DB
 *
dbp
;

2283 
PAGE
 *
h
;

2284 
db_dx_t
 
dx
, *
p
;

2285 
db_pgno_t
 
bt_gno
;

2286 
db_o_t
 
o
;

2287 
u_t32_t
 
sags
;

2288 
cmp
, 
t
, 
t_t
;

2290 
dbp
 = 
dbc
->dbp;

2291 

 = (
BTREE_CURSOR
 *)
dbc
->

;

2292 
t
 = 
dbp
->
bt_
;

2293 
t
 = 0;

2299 
	`DISCARD_CUR
(
dbc
, 
t
);

2300 i(
t
 != 0)

2301  (
t
);

2303 
ags
) {

2304 
DB_FIRST
:

2305 
sags
 = (
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
SR_WRITE
 : 
SR_READ
| 
SR_MIN
;

2306 
ch
;

2307 
DB_LAST
:

2308 
sags
 = (
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
SR_WRITE
 : 
SR_READ
| 
SR_MAX
;

2309 
ch
;

2310 
DB_SET_RECNO
:

2311 i((
t
 = 
	`__m_gno
(
dbc
, 
key
, &
o
, 0)) != 0)

2312  (
t
);

2313 
sags
 =

2314 (
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
SR_FIND_WR
 : 
SR_FIND
| 
SR_EXACT
;

2315 i((
t
 = 
	`__bam_rch
(
dbc
, &
o
, 
sags
, 1, 
exap
)) != 0)

2316  (
t
);

2318 
DB_SET
:

2319 
DB_GET_BOTH
:

2320 
sags
 =

2321 (
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
SR_FIND_WR
 : 
SR_FIND
| 
SR_EXACT
;

2322 
ch
;

2323 
DB_GET_BOTH_RANGE
:

2324 
sags
 = (
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
SR_FIND_WR
 : 
SR_FIND
);

2325 
ch
;

2326 
DB_SET_RANGE
:

2327 
sags
 =

2328 (
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
SR_WRITE
 : 
SR_READ
| 
SR_DUPFIRST
;

2329 
ch
;

2330 
DB_KEYFIRST
:

2331 
DB_NOOVERWRITE
:

2332 
sags
 = 
SR_KEYFIRST
;

2333 
_ch
;

2334 
DB_KEYLAST
:

2335 
DB_NODUPDATA
:

2336 
sags
 = 
SR_KEYLAST
;

2337 
_ch
:

2342 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
))

2343 
ch
;

2354 
bt_gno
 = 
t
->bt_lpgno;

2359 i(
bt_gno
 =
PGNO_INVALID
)

2360 
ch
;

2370 
h
 = 
NULL
;

2371 
	`ACQUIRE_CUR
(
dbc
, 
DB_LOCK_WRITE
, 
bt_gno
, 
DB_LOCK_NOWAIT
, 
t
);

2372 i(
t
 != 0) {

2373 i(
t
 =
DB_LOCK_DEADLOCK
 ||

2374 
t
 =
DB_LOCK_NOTGRANTED
 ||

2375 
t
 =
DB_PAGE_NOTFOUND
)

2376 
t
 = 0;

2377 
_miss
;

2380 
h
 = 

->
ge
;

2381 
p
 = 
	`P_INP
(
dbp
, 
h
);

2387 i(
	`TYPE
(
h
!
P_LBTREE
 || 
	`NUM_ENT
(h) == 0)

2388 
_miss
;

2391 i(
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
) &&

2392 
	`LOG_COMPARE
(&
t
->
bt_΢
, &
	`LSN
(
h
)) != 0)

2393 
_miss
;

2402 i(
h
->
xt_pgno
 =
PGNO_INVALID
) {

2403 
dx
 = 
	`NUM_ENT
(
h
- 
P_INDX
;

2404 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
,

2405 
key
, 
h
, 
dx
, 
t
->
bt_com
, &
cmp
)) != 0)

2406 
_miss
;

2408 i(
cmp
 < 0)

2409 
y_beg
;

2410 i(
cmp
 > 0) {

2411 
dx
 +
P_INDX
;

2412 
_h
;

2422 i(
ags
 =
DB_KEYLAST
)

2423 
_h
;

2425 
dx
 > 0 && 
p
[dx - 
P_INDX
] == inp[indx];

2426 
dx
 -
P_INDX
)

2428 
_h
;

2430 
y_beg
: i(
h
->
ev_pgno
 =
PGNO_INVALID
) {

2431 
dx
 = 0;

2432 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
,

2433 
key
, 
h
, 
dx
, 
t
->
bt_com
, &
cmp
)) != 0)

2434 
_miss
;

2436 i(
cmp
 > 0)

2437 
_miss
;

2438 i(
cmp
 < 0)

2439 
_h
;

2448 i(
ags
 =
DB_KEYFIRST
)

2449 
_h
;

2451 
dx
 < (
db_dx_t
)(
	`NUM_ENT
(
h
- 
P_INDX
) &&

2452 
p
[
dx
] =p[dx + 
P_INDX
];

2453 
dx
 +
P_INDX
)

2455 
_h
;

2457 
_miss
;

2459 
_h
:

2460 *
exap
 = 
cmp
 == 0;

2466 
	`BT_STK_CLR
(

);

2467 
	`BT_STK_ENTER
(
dbp
->
dbv
,

2468 

, 
h
, 
dx
, cp->
lock
, cp->
lock_mode
, 
t
);

2469 i(
t
 != 0)

2470  (
t
);

2473 
_miss
:

2479 
	`DISCARD_CUR
(
dbc
, 
t
);

2480 

->
pgno
 = 
PGNO_INVALID
;

2481 i((
t_t
 = 
	`__LPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

2482 
t
 = 
t_t
;

2483 i(
t
 != 0)

2484  (
t
);

2486 
ch
: i((
t
 = 
	`__bam_ch
(
dbc
, 
ro_pgno
,

2487 
key
, 
sags
, 1, 
NULL
, 
exap
)) != 0)

2488  (
t
);

2491  (
	`__db_unknown_ag
(
dbp
->
dbv
, "__bamc_ch", 
ags
));

2494 

->
ge
 = cp->
c
->page;

2495 

->
pgno
 = cp->
c
->
ge
->pgno;

2496 

->
dx
 = cp->
c
->indx;

2497 

->
lock
 = cp->
c
->lock;

2498 

->
lock_mode
 = cp->
c
->lock_mode;

2501 i(
ags
 =
DB_FIRST
 &&

2502 (
	`NUM_ENT
(

->
ge
=0 || 
	`IS_CUR_DELETED
(
dbc
)))

2503 i((
t
 = 
	`__bamc_xt
(
dbc
, 0, 0)) != 0)

2504  (
t
);

2505 i(
ags
 =
DB_LAST
 &&

2506 (
	`NUM_ENT
(

->
ge
=0 || 
	`IS_CUR_DELETED
(
dbc
)))

2507 i((
t
 = 
	`__bamc_ev
(
dbc
)) != 0)

2508  (
t
);

2511 
	}
}

2518 
	$__bamc_physd
(
dbc
)

2519 
DBC
 *
dbc
;

2521 
BTREE_CURSOR
 *

;

2522 
DB
 *
dbp
;

2523 
DBT
 
key
;

2524 
de_ge
, 
emy_ge
, 
exa
, 
t
;

2526 
dbp
 = 
dbc
->dbp;

2527 
	`memt
(&
key
, 0, (
DBT
));

2528 

 = (
BTREE_CURSOR
 *)
dbc
->

;

2529 
de_ge
 = 
emy_ge
 = 
t
 = 0;

2532 
de_ge
 = 
emy_ge
 =

2533 
	`NUM_ENT
(

->
ge
=(
	`TYPE
(->ge=
P_LBTREE
 ? 2 : 1);

2540 i(
de_ge
 &&

2541 !
	`F_ISSET
(
dbc
, 
DBC_OPD
&& F_ISSET(
dbp
, 
DB_AM_REVSPLITOFF
))

2542 
de_ge
 = 0;

2549 i(
de_ge
 && 

->
pgno
 =->
ro
)

2550 
de_ge
 = 0;

2563 i(
de_ge
) {

2564 i((
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
, 

->
ge
,

2565 0, &
key
, &
dbc
->
my_rkey
.
da
, &dbc->my_rkey.
un
)) != 0)

2566  (
t
);

2584 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

2585 &

->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

2586  (
t
);

2587 i(
	`TYPE
(

->
ge
=
P_LBTREE
) {

2588 i((
t
 = 
	`__bam_dem
(
dbc
, 

->
ge
, cp->
dx
)) != 0)

2589  (
t
);

2590 i(!
emy_ge
)

2591 i((
t
 = 
	`__bam__di
(
dbc
,

2592 
	`PGNO
(

->
ge
), cp->
dx
, -1)) != 0)

2593  (
t
);

2595 i((
t
 = 
	`__bam_dem
(
dbc
, 

->
ge
, cp->
dx
)) != 0)

2596  (
t
);

2599 
	`F_CLR
(

, 
C_DELETED
);

2601 i(!
emy_ge
)

2602 i((
t
 = 
	`__bam__di
(
dbc
, 
	`PGNO
(

->
ge
), cp->
dx
, -1)) != 0)

2603  (
t
);

2608 i(
	`F_ISSET
(
dbc
->
dbp
, 
DB_AM_READ_UNCOMMITTED
)) {

2609 i((
t
 = 
	`__TLPUT
(
dbc
, 

->
lock
)) != 0)

2610  (
t
);

2611 

->
lock_mode
 = 
DB_LOCK_WWRITE
;

2614 i(!
de_ge
)

2617 
t
 = 
	`__bam_ch
(
dbc
, 
PGNO_INVALID
, &
key
, 
SR_DEL
, 0, 
NULL
, &
exa
);

2623 i(
t
 == 0)

2624 
	`DISCARD_CUR
(
dbc
, 
t
);

2625 i(
t
 == 0)

2626 
t
 = 
	`__bam_dges
(
dbc
, 1, 0);

2628 ()
	`__bam_kl
(
dbc
, 0);

2630  (
t
);

2631 
	}
}

2638 
	$__bamc_gack
(
dbc
)

2639 
DBC
 *
dbc
;

2641 
BTREE_CURSOR
 *

;

2642 
DB
 *
dbp
;

2643 
DBT
 
dbt
;

2644 
DB_MPOOLFILE
 *
mpf
;

2645 
PAGE
 *
h
;

2646 
exa
, 
t
, 
t_t
;

2648 
dbp
 = 
dbc
->dbp;

2649 
mpf
 = 
dbp
->mpf;

2650 

 = (
BTREE_CURSOR
 *)
dbc
->

;

2657 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
dbc
->
txn
, 0, &
h
)) != 0)

2658  (
t
);

2661 
	`memt
(&
dbt
, 0, (
DBT
));

2662 i((
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
,

2663 
h
, 0, &
dbt
, &
dbc
->
my_rkey
.
da
, &dbc->my_rkey.
un
)) != 0)

2664 
r
;

2667 
exa
 = 0;

2668 
t
 = 
	`__bam_ch
(
dbc
, 
PGNO_INVALID
,

2669 &
dbt
, 
SR_KEYFIRST
, 1, 
NULL
, &
exa
);

2671 
r
:

2672 i((
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

2673 
t
 = 
t_t
;

2675  (
t
);

2676 
	}
}

2684 
	$__bam_isd
(
dbc
, 
pgn
)

2685 
DBC
 *
dbc
;

2686 
db_pgno_t
 *
pgn
;

2688 
BOVERFLOW
 *
bo
;

2690 i(
	`TYPE
(
dbc
->

->
ge
!
P_LBTREE
)

2693 
bo
 = 
	`GET_BOVERFLOW
(
dbc
->
dbp
,

2694 
dbc
->

->
ge
, dbc->->
dx
 + 
O_INDX
);

2695 i(
	`B_TYPE
(
bo
->
ty
=
B_DUPLICATE
) {

2696 *
pgn
 = 
bo
->
pgno
;

2700 
	}
}

2708 
	$__bam_d_exis
(
dbc
, 
pgno
)

2709 
DBC
 *
dbc
;

2710 
db_pgno_t
 
pgno
;

2712 
PAGE
 *
h
;

2713 
t
;

2715 i((
t
 = 
	`__memp_fg
(
dbc
->
dbp
->
mpf
, &
pgno
, dbc->
txn
, 0, &
h
)) != 0)

2716  (
t
);

2723 i(
	`NUM_ENT
(
h
) == 0)

2724 
t
 = 0;

2726 
t
 = 
DB_KEYEXIST
;

2728 ()
	`__memp_ut
(
dbc
->
dbp
->
mpf
, 
h
, dbc->
iܙy
);

2730  (
t
);

2731 
	}
}

	@../btree/bt_delete.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/b.h
"

49 
	~"dbc/lock.h
"

50 
	~"dbc/mp.h
"

59 
	$__bam_dem
(
dbc
, 
h
, 
dx
)

60 
DBC
 *
dbc
;

61 
PAGE
 *
h
;

62 
u_t32_t
 
dx
;

64 
BINTERNAL
 *
bi
;

65 
BKEYDATA
 *
bk
;

66 
DB
 *
dbp
;

67 
u_t32_t
 
nbys
;

68 
t
;

69 
db_dx_t
 *
p
;

71 
dbp
 = 
dbc
->dbp;

72 
p
 = 
	`P_INP
(
dbp
, 
h
);

75 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`IS_DIRTY
(
h
));

77 
	`TYPE
(
h
)) {

78 
P_IBTREE
:

79 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 
dx
);

80 
	`B_TYPE
(
bi
->
ty
)) {

81 
B_DUPLICATE
:

82 
B_KEYDATA
:

83 
nbys
 = 
	`BINTERNAL_SIZE
(
bi
->
n
);

85 
B_OVERFLOW
:

86 
nbys
 = 
	`BINTERNAL_SIZE
(
bi
->
n
);

87 i((
t
 =

88 
	`__db_doff
(
dbc
, ((
BOVERFLOW
 *)
bi
->
da
)->
pgno
)) != 0)

89  (
t
);

92  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
h
)));

95 
P_IRECNO
:

96 
nbys
 = 
RINTERNAL_SIZE
;

98 
P_LBTREE
:

108 i((
dx
 % 2) == 0) {

115 i(
dx
 + 
P_INDX
 < (
u_t32_t
)
	`NUM_ENT
(
h
) &&

116 
p
[
dx
] =p[dx + 
P_INDX
])

117  (
	`__bam_adjdx
(
dbc
,

118 
h
, 
dx
, indx + 
O_INDX
, 0));

124 i(
dx
 > 0 && 
p
[dx] =p[dx - 
P_INDX
])

125  (
	`__bam_adjdx
(
dbc
,

126 
h
, 
dx
, indx - 
P_INDX
, 0));

129 
P_LDUP
:

130 
P_LRECNO
:

131 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
);

132 
	`B_TYPE
(
bk
->
ty
)) {

133 
B_DUPLICATE
:

134 
nbys
 = 
BOVERFLOW_SIZE
;

136 
B_OVERFLOW
:

137 
nbys
 = 
BOVERFLOW_SIZE
;

138 i((
t
 = 
	`__db_doff
(

139 
dbc
, (
	`GET_BOVERFLOW
(
dbp
, 
h
, 
dx
))->
pgno
)) != 0)

140  (
t
);

142 
B_KEYDATA
:

143 
nbys
 = 
	`BKEYDATA_SIZE
(
bk
->
n
);

146  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
h
)));

150  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
h
)));

154 i((
t
 = 
	`__db_dem
(
dbc
, 
h
, 
dx
, 
nbys
)) != 0)

155  (
t
);

158 
	}
}

167 
	$__bam_adjdx
(
dbc
, 
h
, 
dx
, 
dx_cy
, 
is_
)

168 
DBC
 *
dbc
;

169 
PAGE
 *
h
;

170 
u_t32_t
 
dx
, 
dx_cy
;

171 
is_
;

173 
DB
 *
dbp
;

174 
db_dx_t
 
cy
, *
p
;

175 
t
;

177 
dbp
 = 
dbc
->dbp;

178 
p
 = 
	`P_INP
(
dbp
, 
h
);

181 i(
	`DBC_LOGGING
(
dbc
)) {

182 i((
t
 = 
	`__bam_adj_log
(
dbp
, 
dbc
->
txn
, &
	`LSN
(
h
), 0,

183 
	`PGNO
(
h
), &
	`LSN
(h), 
dx
, 
dx_cy
, (
u_t32_t
)
is_
)) != 0)

184  (
t
);

186 
	`LSN_NOT_LOGGED
(
	`LSN
(
h
));

189 i(
is_
) {

190 
cy
 = 
p
[
dx_cy
];

191 i(
dx
 !
	`NUM_ENT
(
h
))

192 
	`memmove
(&
p
[
dx
 + 
O_INDX
], &inp[indx],

193 (
db_dx_t
* (
	`NUM_ENT
(
h
- 
dx
));

194 
p
[
dx
] = 
cy
;

195 ++
	`NUM_ENT
(
h
);

197 --
	`NUM_ENT
(
h
);

198 i(
dx
 !
	`NUM_ENT
(
h
))

199 
	`memmove
(&
p
[
dx
], &p[dx + 
O_INDX
],

200 (
db_dx_t
* (
	`NUM_ENT
(
h
- 
dx
));

204 
	}
}

213 
	$__bam_dges
(
dbc
, 
u_t
, 
upde
)

214 
DBC
 *
dbc
;

215 
u_t
;

216 
upde
;

218 
BINTERNAL
 *
bi
;

219 
BTREE_CURSOR
 *

;

220 
DB
 *
dbp
;

221 
DBT
 
a
, 
b
;

222 
DB_LOCK
 
c_lock
, 
p_lock
;

223 
DB_MPOOLFILE
 *
mpf
;

224 
EPG
 *
g
, *
ve_
, *
ack_g
;

225 
PAGE
 *
chd
, *

;

226 
db_dx_t
 
nems
;

227 
db_pgno_t
 
pgno
, 
ro_pgno
;

228 
db_o_t
 
rt
;

229 
de
, 
t
, 
t_t
;

231 
dbp
 = 
dbc
->dbp;

232 
mpf
 = 
dbp
->mpf;

233 

 = (
BTREE_CURSOR
 *)
dbc
->

;

234 
nems
 = 0;

235 
pgno
 = 
PGNO_INVALID
;

247 
t
 = 0;

248 i(
u_t
)

249 
ack_g
 = 

->

;

251 
ack_g
 = 

->
c
; sck_g > cp->

; --stack_epg)

252 i(
	`NUM_ENT
(
ack_g
->
ge
) > 1)

254 
g
 = 
ack_g
;

264 i(
	`LEVEL
(

->
c
->
ge
) == 1 &&

265 (
t
 = 
	`__bam_lk
(
dbc
, 

->
c
->
ge
, 
PGNO_INVALID
)) != 0)

266 
disrd
;

276 i((
t
 = 
	`__memp_dty
(
mpf
,

277 &
g
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

278 
disrd
;

279 i((
t
 = 
	`__bam_dem
(
dbc
, 
g
->
ge
,pg->
dx
)) != 0)

280 
disrd
;

281 i((
t
 = 
	`__bam__di
(
dbc
, 
	`PGNO
(
g
->
ge
),pg->
dx
, -1)) != 0)

282 
disrd
;

284 i(
upde
 && 
g
->
dx
 == 0) {

285 
ve_
 = 

->
c
;

286 

->
c
 = 
g
;

287 
t
 = 
	`__bam_pupde
(
dbc
, 
g
->
ge
);

288 

->
c
 = 
ve_
;

289 i(
t
 != 0)

290 
disrd
;

293 
pgno
 = 
	`PGNO
(
g
->
ge
);

294 
nems
 = 
	`NUM_ENT
(
g
->
ge
);

296 
t
 = 
	`__memp_ut
(
mpf
, 
g
->
ge
, 
dbc
->
iܙy
);

297 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
g
->
lock
)!0 && 
t
 == 0)

298 
t
 = 
t_t
;

299 i(
t
 != 0)

300 
r_c
;

303 
disrd
: 
g
 = 

->

;pg < 
ack_g
; ++epg) {

304 i((
t_t
 = 
	`__memp_ut
(
mpf
,

305 
g
->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

306 
t
 = 
t_t
;

307 
g
->
ge
 = 
NULL
;

308 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
g
->
lock
)!0 && 
t
 == 0)

309 
t
 = 
t_t
;

311 i(
t
 != 0)

312 
r
;

315 ++
g
 <

->
c
) {

316 i((
t
 = 
	`__memp_dty
(
mpf
,

317 &
g
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

318 
r
;

325 i(
	`NUM_ENT
(
g
->
ge
) != 0) {

326 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`LEVEL
(
g
->
ge
) != 1);

328 i((
t
 = 
	`__bam_dem
(
dbc
, 
g
->
ge
,pg->
dx
)) != 0)

329 
r
;

337 i(
	`NUM_ENT
(
g
->
ge
) != 0)

338 
r
;

341 
t
 = 
	`__db_
(
dbc
, 
g
->
ge
);

342 i(

->
ge
 =
g
->page)

343 

->
ge
 = 
NULL
;

344 
g
->
ge
 = 
NULL
;

345 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
g
->
lock
)!0 && 
t
 == 0)

346 
t
 = 
t_t
;

347 i(
t
 != 0)

348 
r_c
;

352 
r_c
: ++
g
;

353 
r
: ; 
g
 <

->
c
; ++epg) {

354 i(
g
->
ge
 !
NULL
)

355 ()
	`__memp_ut
(
mpf
,

356 
g
->
ge
, 
dbc
->
iܙy
);

357 ()
	`__TLPUT
(
dbc
, 
g
->
lock
);

359 
	`BT_STK_CLR
(

);

360  (
t
);

362 
	`BT_STK_CLR
(

);

370 
ro_pgno
 = 

->
ro
;

371 i(
pgno
 !
ro_pgno
 || 
nems
 != 1)

374 
de
 = 0; !done;) {

376 

 = 
chd
 = 
NULL
;

377 
	`LOCK_INIT
(
p_lock
);

378 
	`LOCK_INIT
(
c_lock
);

381 
pgno
 = 
ro_pgno
;

382 i((
t
 =

383 
	`__db_lg
(
dbc
, 0, 
pgno
, 
DB_LOCK_WRITE
, 0, &
p_lock
)) != 0)

384 

;

385 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

386 
DB_MPOOL_DIRTY
, &

)) != 0)

387 

;

389 i(
	`NUM_ENT
(

) != 1)

390 

;

392 
	`TYPE
(

)) {

393 
P_IBTREE
:

398 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 

, 0);

399 i(
	`B_TYPE
(
bi
->
ty
=
B_OVERFLOW
)

400 i((
t
 = 
	`__db_doff
(
dbc
,

401 ((
BOVERFLOW
 *)
bi
->
da
)->
pgno
)) != 0)

402 

;

403 
pgno
 = 
bi
->pgno;

405 
P_IRECNO
:

406 
pgno
 = 
	`GET_RINTERNAL
(
dbp
, 

, 0)->pgno;

409 

;

413 i((
t
 =

414 
	`__db_lg
(
dbc
, 0, 
pgno
, 
DB_LOCK_WRITE
, 0, &
c_lock
)) != 0)

415 

;

416 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

417 
DB_MPOOL_DIRTY
, &
chd
)) != 0)

418 

;

421 i(
	`DBC_LOGGING
(
dbc
)) {

422 
	`memt
(&
a
, 0, (a));

423 
a
.
da
 = 
chd
;

424 
a
.
size
 = 
dbp
->
pgsize
;

425 
	`memt
(&
b
, 0, (b));

426 
b
.
da
 = 
	`P_ENTRY
(
dbp
, 

, 0);

427 
b
.
size
 = 
	`TYPE
(

=
P_IRECNO
 ? 
RINTERNAL_SIZE
 :

428 
	`BINTERNAL_SIZE
(((
BINTERNAL
 *)
b
.
da
)->
n
);

429 i((
t
 = 
	`__bam_rl_log
(
dbp
, 
dbc
->
txn
,

430 &
chd
->
l
, 0, 
	`PGNO
(chd), &
a
, PGNO(

),

431 
	`RE_NREC
(

), &
b
, &->
l
)) != 0)

432 

;

434 
	`LSN_NOT_LOGGED
(
chd
->
l
);

447 
	`COMPQUIET
(
rt
, 0);

448 i(
	`F_ISSET
(

, 
C_RECNUM
&& 
	`LEVEL
(
chd
> 
LEAFLEVEL
)

449 
rt
 = 
	`RE_NREC
(

);

450 
	`memy
(

, 
chd
, 
dbp
->
pgsize
);

451 
	`PGNO
(


ro_pgno
;

452 i(
	`F_ISSET
(

, 
C_RECNUM
&& 
	`LEVEL
(
chd
> 
LEAFLEVEL
)

453 
	`RE_NREC_SET
(

, 
rt
);

456 i((
t
 = 
	`__bam__rl
(
dbc
, 
	`PGNO
(
chd
), 
ro_pgno
)) != 0)

457 

;

464 i((
t
 = 
	`__db_
(
dbc
, 
chd
)) != 0) {

465 
chd
 = 
NULL
;

466 

;

468 
chd
 = 
NULL
;

471 

: 
de
 = 1;

473 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
p_lock
)!0 && 
t
 == 0)

474 
t
 = 
t_t
;

475 i(

 !
NULL
 &&

476 (
t_t
 = 
	`__memp_ut
(
mpf
,

477 

, 
dbc
->
iܙy
)!0 && 
t
 == 0)

478 
t
 = 
t_t
;

479 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
c_lock
)!0 && 
t
 == 0)

480 
t
 = 
t_t
;

481 i(
chd
 !
NULL
 &&

482 (
t_t
 = 
	`__memp_ut
(
mpf
,

483 
chd
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

484 
t
 = 
t_t
;

487  (
t
);

488 
	}
}

497 
	$__bam_lk
(
dbc
, 
g
, 
w_pgno
)

498 
DBC
 *
dbc
;

499 
PAGE
 *
g
;

500 
db_pgno_t
 
w_pgno
;

502 
DB
 *
dbp
;

503 
PAGE
 *

, *

;

504 
DB_LOCK
 
l
, 
l
;

505 
DB_LSN
 *
Ƣp
, *
p
, 
t_l
;

506 
DB_MPOOLFILE
 *
mpf
;

507 
t
, 
t_t
;

509 
dbp
 = 
dbc
->dbp;

510 

 = 

 = 
NULL
;

511 
	`LOCK_INIT
(
l
);

512 
	`LOCK_INIT
(
l
);

513 
Ƣp
 = 
p
 = 
NULL
;

514 
mpf
 = 
dbp
->mpf;

515 
t
 = 0;

522 i(
g
->
xt_pgno
 !
PGNO_INVALID
) {

523 i((
t
 = 
	`__db_lg
(
dbc
,

524 0, 
g
->
xt_pgno
, 
DB_LOCK_WRITE
, 0, &
l
)) != 0)

525 
r
;

526 i((
t
 = 
	`__memp_fg
(
mpf
, &
g
->
xt_pgno
, 
dbc
->
txn
,

527 
DB_MPOOL_DIRTY
, &

)) != 0) {

528 
t
 = 
	`__db_pgr
(
dbp
, 
g
->
xt_pgno
,et);

529 
r
;

531 
Ƣp
 = &

->
l
;

533 i(
g
->
ev_pgno
 !
PGNO_INVALID
) {

534 i((
t
 = 
	`__db_lg
(
dbc
,

535 0, 
g
->
ev_pgno
, 
DB_LOCK_WRITE
, 0, &
l
)) != 0)

536 
r
;

537 i((
t
 = 
	`__memp_fg
(
mpf
, &
g
->
ev_pgno
,

538 
dbc
->
txn
, 
DB_MPOOL_DIRTY
, &

)) != 0) {

539 
t
 = 
	`__db_pgr
(
dbp
, 
g
->
ev_pgno
,et);

540 
r
;

542 
p
 = &

->
l
;

546 i(
	`DBC_LOGGING
(
dbc
)) {

547 i((
t
 = 
	`__bam_lk_log
(
dbp
, 
dbc
->
txn
, &
t_l
, 0,

548 
g
->
pgno
, 
w_pgno
,ag->
ev_pgno
, 
p
,

549 
g
->
xt_pgno
, 
Ƣp
)) != 0)

550 
r
;

552 
	`LSN_NOT_LOGGED
(
t_l
);

553 i(

 !
NULL
)

554 

->
l
 = 
t_l
;

555 i(

 !
NULL
)

556 

->
l
 = 
t_l
;

561 i(

 !
NULL
) {

562 i(
w_pgno
 =
PGNO_INVALID
)

563 

->
ev_pgno
 = 
g
->prev_pgno;

565 

->
ev_pgno
 = 
w_pgno
;

566 
t
 = 
	`__memp_ut
(
mpf
, 

, 
dbc
->
iܙy
);

567 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
l
)!0 && 
t
 == 0)

568 
t
 = 
t_t
;

569 i(
t
 != 0)

570 
r
;

573 i(

 !
NULL
) {

574 i(
w_pgno
 =
PGNO_INVALID
)

575 

->
xt_pgno
 = 
g
->next_pgno;

577 

->
xt_pgno
 = 
w_pgno
;

578 
t
 = 
	`__memp_ut
(
mpf
, 

, 
dbc
->
iܙy
);

579 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
l
)!0 && 
t
 == 0)

580 
t
 = 
t_t
;

581 i(
t
 != 0)

582 
r
;

586 
r
: i(

 !
NULL
)

587 ()
	`__memp_ut
(
mpf
, 

, 
dbc
->
iܙy
);

588 ()
	`__TLPUT
(
dbc
, 
l
);

589 i(

 !
NULL
)

590 ()
	`__memp_ut
(
mpf
, 

, 
dbc
->
iܙy
);

591 ()
	`__TLPUT
(
dbc
, 
l
);

592  (
t
);

593 
	}
}

602 
	$__bam_pupde
(
dbc
, 
g
)

603 
DBC
 *
dbc
;

604 
PAGE
 *
g
;

606 
BTREE_CURSOR
 *

;

607 
DB_ENV
 *
dbv
;

608 
EPG
 *
g
;

609 
t
;

611 
dbv
 = 
dbc
->
dbp
->dbenv;

612 

 = (
BTREE_CURSOR
 *)
dbc
->

;

613 
t
 = 0;

621 
g
 = &

->
c
[-1];pg >->

;pg--) {

622 i((
t
 = 
	`__memp_dty
(
dbc
->
dbp
->
mpf
,

623 &
g
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

624  (
t
);

625 i((
t
 = 
	`__bam_dem
(
dbc
, 
g
->
ge
,pg->
dx
)) != 0)

626  (
t
);

627 
g
->
dx
--;

628 i((
t
 = 
	`__bam_p
(
dbc
, 
g
, 0,

629 
g
, 
g
[1].
ge
, 
BPI_NORECNUM
)) != 0) {

630 i(
t
 =
DB_NEEDSPLIT
) {

632 
	`__db_rx
(
dbv
,

634 
dbc
->
dbp
->
ame
, (
u_lg
)
	`PGNO
(
g
->
ge
));

635 
t
 = 
	`__db_nic
(
dbv
, 
EINVAL
);

637  (
t
);

640  (
t
);

641 
	}
}

	@../btree/bt_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/qam.h
"

16 
__bam_t_bt_mkey
 
__P
((
DB
 *, 
u_t32_t
));

17 
__bam_t_bt_efix


18 
__P
((
DB
 *, 
	$size_t
(*)(
DB
 *, cڡ 
DBT
 *, const DBT *)));

19 
__m_g__dim
 
	`__P
((
DB
 *, *));

20 
__m_t__dim
 
	`__P
((
DB
 *, ));

21 
__m_t__n
 
	`__P
((
DB
 *, 
u_t32_t
));

22 
__m_t__d
 
	`__P
((
DB
 *, ));

23 
__m_g__sour
 
	`__P
((
DB
 *, const **));

24 
__m_t__sour
 
	`__P
((
DB
 *, const *));

33 
	$__bam_db_
(
dbp
)

34 
DB
 *
dbp
;

36 
BTREE
 *
t
;

37 
t
;

40 i((
t
 = 
	`__os_oc
(
dbp
->
dbv
, 1, (
BTREE
), &
t
)) != 0)

41  (
t
);

42 
dbp
->
bt_
 = 
t
;

44 
t
->
bt_mkey
 = 
DEFMINKEYPAGE
;

45 
t
->
bt_com
 = 
__bam_defcmp
;

46 
t
->
bt_efix
 = 
__bam_defx
;

48 
dbp
->
t_bt_com
 = 
__bam_t_bt_com
;

49 
dbp
->
g_bt_mkey
 = 
__bam_g_bt_mkey
;

50 
dbp
->
t_bt_mkey
 = 
__bam_t_bt_mkey
;

51 
dbp
->
t_bt_efix
 = 
__bam_t_bt_efix
;

53 
t
->
_d
 = ' ';

54 
t
->
_dim
 = '\n';

55 
t
->
_eof
 = 1;

57 
dbp
->
g__dim
 = 
__m_g__dim
;

58 
dbp
->
t__dim
 = 
__m_t__dim
;

59 
dbp
->
g__n
 = 
__m_g__n
;

60 
dbp
->
t__n
 = 
__m_t__n
;

61 
dbp
->
g__d
 = 
__m_g__d
;

62 
dbp
->
t__d
 = 
__m_t__d
;

63 
dbp
->
g__sour
 = 
__m_g__sour
;

64 
dbp
->
t__sour
 = 
__m_t__sour
;

67 
	}
}

76 
	$__bam_db_o
(
dbp
)

77 
DB
 *
dbp
;

79 
BTREE
 *
t
;

81 i((
t
 = 
dbp
->
bt_
=
NULL
)

85 i(
t
->
_
 !
NULL
)

86 ()
	`fo
(
t
->
_
);

89 i(
t
->
_sour
 !
NULL
)

90 
	`__os_
(
dbp
->
dbv
, 
t
->
_sour
);

92 
	`__os_
(
dbp
->
dbv
, 
t
);

93 
dbp
->
bt_
 = 
NULL
;

96 
	}
}

105 
	$__bam_m_ags
(
dbp
, 
ag
, 
outag
)

106 
DB
 *
dbp
;

107 
u_t32_t
 *
ag
, *
outag
;

109 
	`COMPQUIET
(
dbp
, 
NULL
);

111 i(
	`FLD_ISSET
(*
ag
, 
DB_DUP
)) {

112 
	`FLD_SET
(*
outag
, 
DB_AM_DUP
);

113 
	`FLD_CLR
(*
ag
, 
DB_DUP
);

115 i(
	`FLD_ISSET
(*
ag
, 
DB_DUPSORT
)) {

116 
	`FLD_SET
(*
outag
, 
DB_AM_DUP
 | 
DB_AM_DUPSORT
);

117 
	`FLD_CLR
(*
ag
, 
DB_DUPSORT
);

119 i(
	`FLD_ISSET
(*
ag
, 
DB_RECNUM
)) {

120 
	`FLD_SET
(*
outag
, 
DB_AM_RECNUM
);

121 
	`FLD_CLR
(*
ag
, 
DB_RECNUM
);

123 i(
	`FLD_ISSET
(*
ag
, 
DB_REVSPLITOFF
)) {

124 
	`FLD_SET
(*
outag
, 
DB_AM_REVSPLITOFF
);

125 
	`FLD_CLR
(*
ag
, 
DB_REVSPLITOFF
);

127 
	}
}

136 
	$__bam_t_ags
(
dbp
, 
ag
)

137 
DB
 *
dbp
;

138 
u_t32_t
 *
ag
;

140 
u_t32_t
 
ags
;

142 
ags
 = *
ag
;

143 i(
	`LF_ISSET
(
DB_DUP
 | 
DB_DUPSORT
 | 
DB_RECNUM
 | 
DB_REVSPLITOFF
))

144 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_flags");

150 i(
	`LF_ISSET
(
DB_DUP
 | 
DB_DUPSORT
))

151 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_BTREE
 | 
DB_OK_HASH
);

153 i(
	`LF_ISSET
(
DB_RECNUM
 | 
DB_REVSPLITOFF
))

154 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_BTREE
);

157 i(
	`LF_ISSET
(
DB_DUP
 | 
DB_DUPSORT
&& 
	`F_ISSET
(
dbp
, 
DB_AM_RECNUM
))

158 
comt
;

161 i(
	`LF_ISSET
(
DB_RECNUM
&& 
	`F_ISSET
(
dbp
, 
DB_AM_DUP
))

162 
comt
;

164 i(
	`LF_ISSET
(
DB_DUPSORT
&& 
dbp
->
dup_com
 =
NULL
)

165 
dbp
->
dup_com
 = 
__bam_defcmp
;

167 
	`__bam_m_ags
(
dbp
, 
ag
, &dbp->
ags
);

170 
comt
:

171  (
	`__db_
(
dbp
->
dbv
, "DB->set_flags", 1));

172 
	}
}

182 
	$__bam_t_bt_com
(
dbp
, 
func
)

183 
DB
 *
dbp
;

184 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

186 
BTREE
 *
t
;

188 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_bt_compare");

189 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_BTREE
);

191 
t
 = 
dbp
->
bt_
;

197 
t
->
bt_com
 = 
func
;

198 i(
t
->
bt_efix
 =
__bam_defx
)

199 
t
->
bt_efix
 = 
NULL
;

202 
	}
}

211 
	$__bam_g_bt_mkey
(
dbp
, 
bt_mkeyp
)

212 
DB
 *
dbp
;

213 
u_t32_t
 *
bt_mkeyp
;

215 
BTREE
 *
t
;

217 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_BTREE
);

219 
t
 = 
dbp
->
bt_
;

220 *
bt_mkeyp
 = 
t
->
bt_mkey
;

222 
	}
}

229 
	$__bam_t_bt_mkey
(
dbp
, 
bt_mkey
)

230 
DB
 *
dbp
;

231 
u_t32_t
 
bt_mkey
;

233 
BTREE
 *
t
;

235 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_bt_minkey");

236 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_BTREE
);

238 
t
 = 
dbp
->
bt_
;

240 i(
bt_mkey
 < 2) {

241 
	`__db_rx
(
dbp
->
dbv
, "minimum bt_minkey value is 2");

242  (
EINVAL
);

245 
t
->
bt_mkey
 = bt_minkey;

247 
	}
}

254 
	$__bam_t_bt_efix
(
dbp
, 
func
)

255 
DB
 *
dbp
;

256 
	$size_t
 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

258 
BTREE
 *
t
;

260 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_bt_prefix");

261 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_BTREE
);

263 
t
 = 
dbp
->
bt_
;

265 
t
->
bt_efix
 = 
func
;

267 
	}
}

276 
	$__m_m_ags
(
dbp
, 
ag
, 
outag
)

277 
DB
 *
dbp
;

278 
u_t32_t
 *
ag
, *
outag
;

280 
	`COMPQUIET
(
dbp
, 
NULL
);

282 i(
	`FLD_ISSET
(*
ag
, 
DB_RENUMBER
)) {

283 
	`FLD_SET
(*
outag
, 
DB_AM_RENUMBER
);

284 
	`FLD_CLR
(*
ag
, 
DB_RENUMBER
);

286 i(
	`FLD_ISSET
(*
ag
, 
DB_SNAPSHOT
)) {

287 
	`FLD_SET
(*
outag
, 
DB_AM_SNAPSHOT
);

288 
	`FLD_CLR
(*
ag
, 
DB_SNAPSHOT
);

290 
	}
}

299 
	$__m_t_ags
(
dbp
, 
ag
)

300 
DB
 *
dbp
;

301 
u_t32_t
 *
ag
;

303 
u_t32_t
 
ags
;

305 
ags
 = *
ag
;

306 i(
	`LF_ISSET
(
DB_RENUMBER
 | 
DB_SNAPSHOT
)) {

307 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_flags");

308 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_RECNO
);

311 
	`__m_m_ags
(
dbp
, 
ag
, &dbp->
ags
);

313 
	}
}

320 
	$__m_g__dim
(
dbp
, 
_dimp
)

321 
DB
 *
dbp
;

322 *
_dimp
;

324 
BTREE
 *
t
;

326 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_RECNO
);

327 
t
 = 
dbp
->
bt_
;

328 *
_dimp
 = 
t
->
_dim
;

330 
	}
}

337 
	$__m_t__dim
(
dbp
, 
_dim
)

338 
DB
 *
dbp
;

339 
_dim
;

341 
BTREE
 *
t
;

343 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_re_delim");

344 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_RECNO
);

346 
t
 = 
dbp
->
bt_
;

348 
t
->
_dim
 =e_delim;

349 
	`F_SET
(
dbp
, 
DB_AM_DELIMITER
);

352 
	}
}

361 
	$__m_g__n
(
dbp
, 
_
)

362 
DB
 *
dbp
;

363 
u_t32_t
 *
_
;

365 
BTREE
 *
t
;

366 
QUEUE
 *
q
;

368 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_QUEUE
 | 
DB_OK_RECNO
);

377 i(
dbp
->
ty
 =
DB_QUEUE
) {

378 
q
 = 
dbp
->
q_
;

379 *
_
 = 
q
->
_n
;

381 
t
 = 
dbp
->
bt_
;

382 *
_
 = 
t
->
_n
;

386 
	}
}

393 
	$__m_t__n
(
dbp
, 
_n
)

394 
DB
 *
dbp
;

395 
u_t32_t
 
_n
;

397 
BTREE
 *
t
;

398 
QUEUE
 *
q
;

400 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_re_len");

401 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_QUEUE
 | 
DB_OK_RECNO
);

403 
t
 = 
dbp
->
bt_
;

404 
t
->
_n
 =e_len;

406 
q
 = 
dbp
->
q_
;

407 
q
->
_n
 =e_len;

409 
	`F_SET
(
dbp
, 
DB_AM_FIXEDLEN
);

412 
	}
}

421 
	$__m_g__d
(
dbp
, 
_dp
)

422 
DB
 *
dbp
;

423 *
_dp
;

425 
BTREE
 *
t
;

426 
QUEUE
 *
q
;

428 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_QUEUE
 | 
DB_OK_RECNO
);

437 i(
dbp
->
ty
 =
DB_QUEUE
) {

438 
q
 = 
dbp
->
q_
;

439 *
_dp
 = 
q
->
_d
;

441 
t
 = 
dbp
->
bt_
;

442 *
_dp
 = 
t
->
_d
;

446 
	}
}

453 
	$__m_t__d
(
dbp
, 
_d
)

454 
DB
 *
dbp
;

455 
_d
;

457 
BTREE
 *
t
;

458 
QUEUE
 *
q
;

460 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_re_pad");

461 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_QUEUE
 | 
DB_OK_RECNO
);

463 
t
 = 
dbp
->
bt_
;

464 
t
->
_d
 =e_pad;

466 
q
 = 
dbp
->
q_
;

467 
q
->
_d
 =e_pad;

469 
	`F_SET
(
dbp
, 
DB_AM_PAD
);

472 
	}
}

479 
	$__m_g__sour
(
dbp
, 
_sourp
)

480 
DB
 *
dbp
;

481 cڡ **
_sourp
;

483 
BTREE
 *
t
;

485 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_RECNO
);

487 
t
 = 
dbp
->
bt_
;

488 *
_sourp
 = 
t
->
_sour
;

490 
	}
}

497 
	$__m_t__sour
(
dbp
, 
_sour
)

498 
DB
 *
dbp
;

499 cڡ *
_sour
;

501 
BTREE
 *
t
;

503 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_re_source");

504 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_RECNO
);

506 
t
 = 
dbp
->
bt_
;

508  (
	`__os_rdup
(
dbp
->
dbv
, 
_sour
, &
t
->re_source));

509 
	}
}

	@../btree/bt_open.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/yo.h
"

48 
	~"dbc/db_ge.h
"

49 
	~"dbc/db_sw.h
"

50 
	~"dbc/b.h
"

51 
	~"dbc/lock.h
"

52 
	~"dbc/log.h
"

53 
	~"dbc/mp.h
"

54 
	~"dbc/f.h
"

56 
__bam__ma
 
__P
((
DB
 *, 
BTMETA
 *, 
db_pgno_t
, 
DB_LSN
 *));

66 
	$__bam_ݒ
(
dbp
, 
txn
, 
me
, 
ba_pgno
, 
ags
)

67 
DB
 *
dbp
;

68 
DB_TXN
 *
txn
;

69 cڡ *
me
;

70 
db_pgno_t
 
ba_pgno
;

71 
u_t32_t
 
ags
;

73 
BTREE
 *
t
;

75 
	`COMPQUIET
(
me
, 
NULL
);

76 
t
 = 
dbp
->
bt_
;

83 i(
t
->
bt_com
 =
__bam_defcmp
 &&->
bt_efix
 !
__bam_defx
) {

84 
	`__db_rx
(
dbp
->
dbv
,

86  (
EINVAL
);

93 i(
	`B_MINKEY_TO_OVFLSIZE
(
dbp
, 
t
->
bt_mkey
, dbp->
pgsize
) >

94 
	`B_MINKEY_TO_OVFLSIZE
(
dbp
, 
DEFMINKEYPAGE
, dbp->
pgsize
)) {

95 
	`__db_rx
(
dbp
->
dbv
,

97 (
u_lg
)
t
->
bt_mkey
, (u_lg)
dbp
->
pgsize
);

98  (
EINVAL
);

102  (
	`__bam_ad_ro
(
dbp
, 
txn
, 
ba_pgno
, 
ags
));

103 
	}
}

111 
	$__bam_machk
(
dbp
, 
me
, 
btm
)

112 
DB
 *
dbp
;

113 cڡ *
me
;

114 
BTMETA
 *
btm
;

116 
DB_ENV
 *
dbv
;

117 
u_t32_t
 
vs
;

118 
t
;

120 
dbv
 = 
dbp
->dbenv;

126 
vs
 = 
btm
->
dbma
.
vsi
;

127 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
))

128 
	`M_32_SWAP
(
vs
);

129 
vs
) {

132 
	`__db_rx
(
dbv
,

134 
me
, (
u_lg
)
vs
);

135  (
DB_OLD_VERSION
);

140 
	`__db_rx
(
dbv
,

141 "%s: unsu܋d b vsi: %lu", 
me
, (
u_lg
)
vs
);

142  (
EINVAL
);

146 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
&& (
t
 = 
	`__bam_msw
((
PAGE
 *)
btm
)) != 0)

147  (
t
);

153 i((
t
 =

154 
	`__db_fchk
(
dbv
, "DB->ݒ", 
btm
->
dbma
.
ags
, 
BTM_MASK
)) != 0)

155  (
t
);

157 i(
	`F_ISSET
(&
btm
->
dbma
, 
BTM_RECNO
)) {

158 i(
dbp
->
ty
 =
DB_BTREE
)

159 
wrg_ty
;

160 
dbp
->
ty
 = 
DB_RECNO
;

161 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_RECNO
);

163 i(
dbp
->
ty
 =
DB_RECNO
)

164 
wrg_ty
;

165 
dbp
->
ty
 = 
DB_BTREE
;

166 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_BTREE
);

169 i(
	`F_ISSET
(&
btm
->
dbma
, 
BTM_DUP
))

170 
	`F_SET
(
dbp
, 
DB_AM_DUP
);

172 i(
	`F_ISSET
(
dbp
, 
DB_AM_DUP
)) {

173 
	`__db_rx
(
dbv
,

175 
me
);

176  (
EINVAL
);

179 i(
	`F_ISSET
(&
btm
->
dbma
, 
BTM_RECNUM
)) {

180 i(
dbp
->
ty
 !
DB_BTREE
)

181 
wrg_ty
;

182 
	`F_SET
(
dbp
, 
DB_AM_RECNUM
);

184 i((
t
 = 
	`__db_fcchk
(
dbv
,

185 "DB->ݒ", 
dbp
->
ags
, 
DB_AM_DUP
, 
DB_AM_RECNUM
)) != 0)

186  (
t
);

188 i(
	`F_ISSET
(
dbp
, 
DB_AM_RECNUM
)) {

189 
	`__db_rx
(
dbv
,

191 
me
);

192  (
EINVAL
);

195 i(
	`F_ISSET
(&
btm
->
dbma
, 
BTM_FIXEDLEN
)) {

196 i(
dbp
->
ty
 !
DB_RECNO
)

197 
wrg_ty
;

198 
	`F_SET
(
dbp
, 
DB_AM_FIXEDLEN
);

200 i(
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
)) {

201 
	`__db_rx
(
dbv
,

203 
me
);

204  (
EINVAL
);

207 i(
	`F_ISSET
(&
btm
->
dbma
, 
BTM_RENUMBER
)) {

208 i(
dbp
->
ty
 !
DB_RECNO
)

209 
wrg_ty
;

210 
	`F_SET
(
dbp
, 
DB_AM_RENUMBER
);

212 i(
	`F_ISSET
(
dbp
, 
DB_AM_RENUMBER
)) {

213 
	`__db_rx
(
dbv
,

215 
me
);

216  (
EINVAL
);

219 i(
	`F_ISSET
(&
btm
->
dbma
, 
BTM_SUBDB
))

220 
	`F_SET
(
dbp
, 
DB_AM_SUBDB
);

222 i(
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
)) {

223 
	`__db_rx
(
dbv
,

225 
me
);

226  (
EINVAL
);

229 i(
	`F_ISSET
(&
btm
->
dbma
, 
BTM_DUPSORT
)) {

230 i(
dbp
->
dup_com
 =
NULL
)

231 
dbp
->
dup_com
 = 
__bam_defcmp
;

232 
	`F_SET
(
dbp
, 
DB_AM_DUPSORT
);

234 i(
dbp
->
dup_com
 !
NULL
) {

235 
	`__db_rx
(
dbv
,

237 
me
);

238  (
EINVAL
);

242 
dbp
->
pgsize
 = 
btm
->
dbma
.
gesize
;

245 
	`memy
(
dbp
->
feid
, 
btm
->
dbma
.
uid
, 
DB_FILE_ID_LEN
);

249 
wrg_ty
:

250 i(
dbp
->
ty
 =
DB_BTREE
)

251 
	`__db_rx
(
dbv
,

254 
	`__db_rx
(
dbv
,

256  (
EINVAL
);

257 
	}
}

266 
	$__bam_ad_ro
(
dbp
, 
txn
, 
ba_pgno
, 
ags
)

267 
DB
 *
dbp
;

268 
DB_TXN
 *
txn
;

269 
db_pgno_t
 
ba_pgno
;

270 
u_t32_t
 
ags
;

272 
BTMETA
 *
ma
;

273 
BTREE
 *
t
;

274 
DBC
 *
dbc
;

275 
DB_LOCK
 
mock
;

276 
DB_MPOOLFILE
 *
mpf
;

277 
t
, 
t_t
;

279 
	`COMPQUIET
(
ags
, 0);

281 
ma
 = 
NULL
;

282 
t
 = 
dbp
->
bt_
;

283 
	`LOCK_INIT
(
mock
);

284 
mpf
 = 
dbp
->mpf;

285 
t
 = 0;

288 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 0)) != 0)

289  (
t
);

292 i((
t
 =

293 
	`__db_lg
(
dbc
, 0, 
ba_pgno
, 
DB_LOCK_READ
, 0, &
mock
)) != 0)

294 
r
;

295 i((
t
 = 
	`__memp_fg
(
mpf
, &
ba_pgno
, 
dbc
->
txn
, 0, &
ma
)) != 0)

296 
r
;

306 i(
ma
->
dbma
.
magic
 =
DB_BTREEMAGIC
) {

307 
t
->
bt_mkey
 = 
ma
->
mkey
;

308 
t
->
_d
 = ()
ma
->re_pad;

309 
t
->
_n
 = 
ma
->re_len;

311 
t
->
bt_ma
 = 
ba_pgno
;

312 
t
->
bt_ro
 = 
ma
->
ro
;

314 
	`DB_ASSERT
(
dbp
->
dbv
,

315 
	`IS_RECOVERING
(
dbp
->
dbv
|| 
	`F_ISSET
(dbp, 
DB_AM_RECOVER
));

327 
t
->
bt_gno
 = 
PGNO_INVALID
;

329 
r
:

330 i(
ma
 !
NULL
 &&

331 (
t_t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

332 
t
 = 
t_t
;

333 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

334 
t
 = 
t_t
;

336 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

337 
t
 = 
t_t
;

338  (
t
);

339 
	}
}

348 
	$__bam__ma
(
dbp
, 
ma
, 
pgno
, 
lp
)

349 
DB
 *
dbp
;

350 
BTMETA
 *
ma
;

351 
db_pgno_t
 
pgno
;

352 
DB_LSN
 *
lp
;

354 
DB_ENV
 *
dbv
;

355 
BTREE
 *
t
;

357 
dbv
 = 
dbp
->dbenv;

358 
t
 = 
dbp
->
bt_
;

360 
	`memt
(
ma
, 0, (
BTMETA
));

361 
ma
->
dbma
.
l
 = *
lp
;

362 
ma
->
dbma
.
pgno
 =gno;

363 
ma
->
dbma
.
magic
 = 
DB_BTREEMAGIC
;

364 
ma
->
dbma
.
vsi
 = 
DB_BTREEVERSION
;

365 
ma
->
dbma
.
gesize
 = 
dbp
->
pgsize
;

366 i(
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
))

367 
	`FLD_SET
(
ma
->
dbma
.
maags
, 
DBMETA_CHKSUM
);

368 i(
	`F_ISSET
(
dbp
, 
DB_AM_ENCRYPT
)) {

369 
ma
->
dbma
.
y_g
 =

370 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
g
;

371 
	`DB_ASSERT
(
dbv
, 
ma
->
dbma
.
y_g
 != 0);

372 
ma
->
yo_magic
 = ma->
dbma
.
magic
;

374 
ma
->
dbma
.
ty
 = 
P_BTREEMETA
;

375 
ma
->
dbma
.

 = 
PGNO_INVALID
;

376 
ma
->
dbma
.
ϡ_pgno
 = 
pgno
;

377 i(
	`F_ISSET
(
dbp
, 
DB_AM_DUP
))

378 
	`F_SET
(&
ma
->
dbma
, 
BTM_DUP
);

379 i(
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
))

380 
	`F_SET
(&
ma
->
dbma
, 
BTM_FIXEDLEN
);

381 i(
	`F_ISSET
(
dbp
, 
DB_AM_RECNUM
))

382 
	`F_SET
(&
ma
->
dbma
, 
BTM_RECNUM
);

383 i(
	`F_ISSET
(
dbp
, 
DB_AM_RENUMBER
))

384 
	`F_SET
(&
ma
->
dbma
, 
BTM_RENUMBER
);

385 i(
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
))

386 
	`F_SET
(&
ma
->
dbma
, 
BTM_SUBDB
);

387 i(
dbp
->
dup_com
 !
NULL
)

388 
	`F_SET
(&
ma
->
dbma
, 
BTM_DUPSORT
);

389 i(
dbp
->
ty
 =
DB_RECNO
)

390 
	`F_SET
(&
ma
->
dbma
, 
BTM_RECNO
);

391 
	`memy
(
ma
->
dbma
.
uid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

393 
ma
->
mkey
 = 
t
->
bt_mkey
;

394 
ma
->
_n
 = 
t
->re_len;

395 
ma
->
_d
 = (
u_t32_t
)
t
->re_pad;

396 
	}
}

411 
	$__bam_w_fe
(
dbp
, 
txn
, 
fhp
, 
me
)

412 
DB
 *
dbp
;

413 
DB_TXN
 *
txn
;

414 
DB_FH
 *
fhp
;

415 cڡ *
me
;

417 
BTMETA
 *
ma
;

418 
DB_ENV
 *
dbv
;

419 
DB_LSN
 
l
;

420 
DB_MPOOLFILE
 *
mpf
;

421 
DB_PGINFO
 
pgfo
;

422 
DBT
 
pdbt
;

423 
PAGE
 *
ro
;

424 
db_pgno_t
 
pgno
;

425 
t
, 
t_t
;

426 *
buf
;

428 
dbv
 = 
dbp
->dbenv;

429 
mpf
 = 
dbp
->mpf;

430 
ro
 = 
NULL
;

431 
ma
 = 
NULL
;

432 
buf
 = 
NULL
;

434 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

436 
pgno
 = 
PGNO_BASE_MD
;

437 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
txn
,

438 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
ma
)) != 0)

439  (
t
);

440 
	`LSN_NOT_LOGGED
(
l
);

441 
	`__bam__ma
(
dbp
, 
ma
, 
PGNO_BASE_MD
, &
l
);

442 
ma
->
ro
 = 1;

443 
ma
->
dbma
.
ϡ_pgno
 = 1;

444 i((
t
 =

445 
	`__db_log_ge
(
dbp
, 
txn
, &
l
, 
pgno
, (
PAGE
 *)
ma
)) != 0)

446 
r
;

447 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbp
->
iܙy
);

448 
ma
 = 
NULL
;

449 i(
t
 != 0)

450 
r
;

453 
pgno
 = 1;

454 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
,

455 
txn
, 
DB_MPOOL_CREATE
, &
ro
)) != 0)

456 
r
;

457 
	`P_INIT
(
ro
, 
dbp
->
pgsize
, 1, 
PGNO_INVALID
, PGNO_INVALID,

458 
LEAFLEVEL
, 
dbp
->
ty
 =
DB_RECNO
 ? 
P_LRECNO
 : 
P_LBTREE
);

459 
	`LSN_NOT_LOGGED
(
ro
->
l
);

460 i((
t
 =

461 
	`__db_log_ge
(
dbp
, 
txn
, &
ro
->
l
, 
pgno
,oot)) != 0)

462 
r
;

463 
t
 = 
	`__memp_ut
(
mpf
, 
ro
, 
dbp
->
iܙy
);

464 
ro
 = 
NULL
;

465 i(
t
 != 0)

466 
r
;

468 
	`memt
(&
pdbt
, 0, (pdbt));

471 
pgfo
.
db_gesize
 = 
dbp
->
pgsize
;

472 
pgfo
.
ags
 =

473 
	`F_ISSET
(
dbp
, (
DB_AM_CHKSUM
 | 
DB_AM_ENCRYPT
 | 
DB_AM_SWAP
));

474 
pgfo
.
ty
 = 
dbp
->type;

475 
pdbt
.
da
 = &
pgfo
;

476 
pdbt
.
size
 = (
pgfo
);

477 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
dbp
->
pgsize
, &
buf
)) != 0)

478  (
t
);

479 
ma
 = (
BTMETA
 *)
buf
;

480 
	`LSN_NOT_LOGGED
(
l
);

481 
	`__bam__ma
(
dbp
, 
ma
, 
PGNO_BASE_MD
, &
l
);

482 
ma
->
ro
 = 1;

483 
ma
->
dbma
.
ϡ_pgno
 = 1;

484 i((
t
 = 
	`__db_pgout
(
dbv
, 
PGNO_BASE_MD
, 
ma
, &
pdbt
)) != 0)

485 
r
;

486 i((
t
 = 
	`__f_wre
(
dbv
, 
txn
, 
me
, 
DB_APP_DATA
, 
fhp
,

487 
dbp
->
pgsize
, 0, 0, 
buf
, dbp->pgsize, 1, 
	`F_ISSET
(

488 
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0)) != 0)

489 
r
;

490 
ma
 = 
NULL
;

493 #ifde
DIAGNOSTIC


494 
	`memt
(
buf
, 
CLEAR_BYTE
, 
dbp
->
pgsize
);

496 
ro
 = (
PAGE
 *)
buf
;

497 
	`P_INIT
(
ro
, 
dbp
->
pgsize
, 1, 
PGNO_INVALID
, PGNO_INVALID,

498 
LEAFLEVEL
, 
dbp
->
ty
 =
DB_RECNO
 ? 
P_LRECNO
 : 
P_LBTREE
);

499 
	`LSN_NOT_LOGGED
(
ro
->
l
);

500 i((
t
 = 
	`__db_pgout
(
dbv
, 
ro
->
pgno
,o, &
pdbt
)) != 0)

501 
r
;

502 i((
t
 = 
	`__f_wre
(
dbv
, 
txn
, 
me
, 
DB_APP_DATA
, 
fhp
,

503 
dbp
->
pgsize
, 1, 0, 
buf
, dbp->pgsize, 1, 
	`F_ISSET
(

504 
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0)) != 0)

505 
r
;

506 
ro
 = 
NULL
;

509 
r
: i(
buf
 !
NULL
)

510 
	`__os_
(
dbv
, 
buf
);

512 i(
ma
 !
NULL
 &&

513 (
t_t
 = 
	`__memp_ut
(
mpf
,

514 
ma
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

515 
t
 = 
t_t
;

516 i(
ro
 !
NULL
 &&

517 (
t_t
 = 
	`__memp_ut
(
mpf
,

518 
ro
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

519 
t
 = 
t_t
;

521  (
t
);

522 
	}
}

531 
	$__bam_w_subdb
(
mdbp
, 
dbp
, 
txn
)

532 
DB
 *
mdbp
, *
dbp
;

533 
DB_TXN
 *
txn
;

535 
BTMETA
 *
ma
;

536 
DBC
 *
dbc
;

537 
DB_ENV
 *
dbv
;

538 
DB_LOCK
 
mock
;

539 
DB_LSN
 
l
;

540 
DB_MPOOLFILE
 *
mpf
;

541 
PAGE
 *
ro
;

542 
t
, 
t_t
;

544 
dbv
 = 
mdbp
->dbenv;

545 
mpf
 = 
mdbp
->mpf;

546 
dbc
 = 
NULL
;

547 
ma
 = 
NULL
;

548 
ro
 = 
NULL
;

550 i((
t
 = 
	`__db_curs
(
mdbp
, 
txn
,

551 &
dbc
, 
	`CDB_LOCKING
(
dbv
? 
DB_WRITECURSOR
 : 0)) != 0)

552  (
t
);

555 i((
t
 = 
	`__db_lg
(
dbc
,

556 0, 
dbp
->
ma_pgno
, 
DB_LOCK_WRITE
, 0, &
mock
)) != 0)

557 
r
;

558 i((
t
 = 
	`__memp_fg
(
mpf
, &
dbp
->
ma_pgno
,

559 
txn
, 
DB_MPOOL_CREATE
, &
ma
)) != 0)

560 
r
;

563 
l
 = 
ma
->
dbma
.lsn;

564 
	`__bam__ma
(
dbp
, 
ma
, dbp->
ma_pgno
, &
l
);

565 i((
t
 = 
	`__db_log_ge
(
mdbp
,

566 
txn
, &
ma
->
dbma
.
l
, 
dbp
->
ma_pgno
, (
PAGE
 *)meta)) != 0)

567 
r
;

570 i((
t
 = 
	`__db_w
(
dbc
,

571 
dbp
->
ty
 =
DB_RECNO
 ? 
P_LRECNO
 : 
P_LBTREE
, &
ro
)) != 0)

572 
r
;

573 
ro
->
v
 = 
LEAFLEVEL
;

575 i(
	`DBENV_LOGGING
(
dbv
) &&

576 #i!
	`defed
(
DEBUG_WOP
)

577 
txn
 !
NULL
 &&

580 (
t
 = 
	`__bam_ro_log
(
mdbp
, 
txn
, &
ma
->
dbma
.
l
, 0,

581 
ma
->
dbma
.
pgno
, 
ro
->pgno, &ma->dbma.
l
)) != 0)

582 
r
;

584 
ma
->
ro
 =o->
pgno
;

585 i((
t
 =

586 
	`__db_log_ge
(
mdbp
, 
txn
, &
ro
->
l
,o->
pgno
,oot)) != 0)

587 
r
;

590 i((
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)) != 0)

591 
r
;

592 
ma
 = 
NULL
;

593 i((
t
 = 
	`__memp_ut
(
mpf
, 
ro
, 
dbc
->
iܙy
)) != 0)

594 
r
;

595 
ro
 = 
NULL
;

596 
r
:

597 i(
ma
 !
NULL
)

598 i((
t_t
 = 
	`__memp_ut
(
mpf
,

599 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

600 
t
 = 
t_t
;

601 i(
ro
 !
NULL
)

602 i((
t_t
 = 
	`__memp_ut
(
mpf
,

603 
ro
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

604 
t
 = 
t_t
;

605 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

606 
t
 = 
t_t
;

607 i(
dbc
 !
NULL
)

608 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

609 
t
 = 
t_t
;

610  (
t
);

611 
	}
}

	@../btree/bt_put.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/b.h
"

49 
	~"dbc/mp.h
"

51 
__bam_bud


52 
__P
((
DBC
 *, 
u_t32_t
, 
DBT
 *, 
PAGE
 *, u_int32_t, u_int32_t));

53 
__bam_dup_check
 
__P
((
DBC
 *, 
u_t32_t
,

54 
PAGE
 *, 
u_t32_t
, u_t32_t, 
db_dx_t
 *));

55 
__bam_dup_cvt
 
__P
((
DBC
 *, 
PAGE
 *, 
u_t32_t
, u_int32_t));

56 
__bam_ovput


57 
__P
((
DBC
 *, 
u_t32_t
, 
db_pgno_t
, 
PAGE
 *, u_t32_t, 
DBT
 *));

58 
u_t32_t


59 
__bam_size
 
__P
((
DB
 *, 
u_t32_t
, 
DBT
 *, 
PAGE
 *, u_int32_t));

68 
	$__bam_iem
(
dbc
, 
key
, 
da
, 

, 
ags
)

69 
DBC
 *
dbc
;

70 
DBT
 *
key
, *
da
;

71 
u_t32_t
 

, 
ags
;

73 
DB_ENV
 *
dbv
;

74 
BKEYDATA
 *
bk
, 
bk_tmp
;

75 
BTREE
 *
t
;

76 
BTREE_CURSOR
 *

;

77 
DB
 *
dbp
;

78 
DBT
 
bk_hdr
, 
tdbt
;

79 
DB_MPOOLFILE
 *
mpf
;

80 
PAGE
 *
h
;

81 
db_dx_t
 
t
, 
dx
;

82 
u_t32_t
 
da_size
, 
have_bys
, 
ed_bys
, 
eded
, 
ges
, 
gea
;

83 
cmp
, 
bigkey
, 
bigda
, 
d
, 
dudju
;

84 
dc
, 
a
, 
t
, 
t_t
, 
was_ded
;

86 
	`COMPQUIET
(
t
, 0);

88 
dbp
 = 
dbc
->dbp;

89 
dbv
 = 
dbp
->dbenv;

90 
mpf
 = 
dbp
->mpf;

91 

 = (
BTREE_CURSOR
 *)
dbc
->

;

92 
t
 = 
dbp
->
bt_
;

93 
h
 = 

->
ge
;

94 
dx
 = 

->indx;

95 
d
 = 
dudju
 = 
a
 = 
was_ded
 = 0;

101 i(
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
) &&

102 
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
&& da->
size
 !da->
dn
)

103  (
	`__db_c_
(
dbv
, 
da
->
size
, da->
dn
));

113 
da_size
 = 
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
) ?

114 
	`__bam_size
(
dbp
, 

, 
da
, 
h
, 
dx
: da->
size
;

115 
dc
 = 0;

116 i(
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
)) {

117 i(
da_size
 > 
t
->
_n
)

118  (
	`__db_c_toobig
(
dbv
, 
da_size
, 
t
->
_n
));

121 i(!
	`LF_ISSET
(
BI_DELETED
&& 
da_size
 < 
t
->
_n
) {

122 
dc
 = 1;

123 
da_size
 = 
t
->
_n
;

131 i(
dc
 || 
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
)) {

132 
tdbt
 = *
da
;

133 i((
t
 =

134 
	`__bam_bud
(
dbc
, 

, &
tdbt
, 
h
, 
dx
, 
da_size
)) != 0)

135  (
t
);

136 
da
 = &
tdbt
;

146 i(

 =
DB_CURRENT
 && 
dbp
->
dup_com
 !
NULL
) {

147 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
, 
da
, 
h
,

148 
dx
 + (
	`TYPE
(
h
=
P_LBTREE
 ? 
O_INDX
 : 0),

149 
dbp
->
dup_com
, &
cmp
)) != 0)

150  (
t
);

151 i(
cmp
 != 0) {

152 
	`__db_rx
(
dbv
,

154  (
EINVAL
);

162 
eded
 = 0;

163 
bigda
 = 
da_size
 > 

->
ovsize
;

164 

) {

165 
DB_KEYFIRST
:

167 
bigkey
 = 
key
->
size
 > 

->
ovsize
;

168 i(
bigkey
)

169 
eded
 +
BOVERFLOW_PSIZE
;

171 
eded
 +
	`BKEYDATA_PSIZE
(
key
->
size
);

172 i(
bigda
)

173 
eded
 +
BOVERFLOW_PSIZE
;

175 
eded
 +
	`BKEYDATA_PSIZE
(
da_size
);

177 
DB_AFTER
:

178 
DB_BEFORE
:

179 
DB_CURRENT
:

190 
bigkey
 = 0;

191 i(

 =
DB_CURRENT
) {

192 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
,

193 
dx
 + (
	`TYPE
(
h
=
P_LBTREE
 ? 
O_INDX
 : 0));

194 i(
	`B_TYPE
(
bk
->
ty
=
B_KEYDATA
)

195 
have_bys
 = 
	`BKEYDATA_PSIZE
(
bk
->
n
);

197 
have_bys
 = 
BOVERFLOW_PSIZE
;

198 
ed_bys
 = 0;

200 
have_bys
 = 0;

201 
ed_bys
 = (
db_dx_t
);

203 i(
bigda
)

204 
ed_bys
 +
BOVERFLOW_PSIZE
;

206 
ed_bys
 +
	`BKEYDATA_PSIZE
(
da_size
);

208 i(
have_bys
 < 
ed_bys
)

209 
eded
 +
ed_bys
 - 
have_bys
;

212  (
	`__db_unknown_ag
(
dbv
, "DB->put", 

));

216 i(
	`P_FREESPACE
(
dbp
, 
h
< 
eded
)

217  (
DB_NEEDSPLIT
);

223 i(
	`F_ISSET
(
dbp
, 
DB_AM_DUP
) &&

224 
	`TYPE
(
h
=
P_LBTREE
 && 

 !
DB_KEYFIRST
 &&

225 
	`P_FREESPACE
(
dbp
, 
h
- 
eded
 <dbp->
pgsize
 / 2 &&

226 
	`__bam_dup_check
(
dbc
, 

, 
h
, 
dx
, 
eded
, &
t
)) {

227 
ges
 = 1;

228 
dudju
 = 1;

230 
ges
 = 0;

237 i(
dbc
->
txn
 =
NULL
 && 
mpf
->
m
->
maxpgno
 != 0) {

238 
gea
 = 
	`P_MAXSPACE
(
dbp
, dbp->
pgsize
);

239 i(
bigda
)

240 
ges
 +((
da_size
 - 1/ 
gea
) + 1;

241 i(
bigkey
)

242 
ges
 +((
key
->
size
 - 1/ 
gea
) + 1;

244 i(
ges
 > (
mpf
->
m
->
maxpgno
 - mpf->m->
ϡ_pgno
))

245  (
	`__db_a_r
(
dbp
));

248 i((
t
 = 
	`__memp_dty
(
mpf
, &
h
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

249  (
t
);

250 i(

->
c
->
ge
 == cp->page)

251 

->
c
->
ge
 = 
h
;

252 

->
ge
 = 
h
;

263 

) {

264 
DB_KEYFIRST
:

265 i(
bigkey
) {

266 i((
t
 = 
	`__bam_ovput
(
dbc
,

267 
B_OVERFLOW
, 
PGNO_INVALID
, 
h
, 
dx
, 
key
)) != 0)

268  (
t
);

270 i((
t
 = 
	`__db_pem
(
dbc
, 
h
, 
dx
,

271 
	`BKEYDATA_SIZE
(
key
->
size
), 
NULL
, key)) != 0)

272  (
t
);

274 i((
t
 = 
	`__bam__di
(
dbc
, 
	`PGNO
(
h
), 
dx
, 1)) != 0)

275  (
t
);

276 ++
dx
;

278 
DB_AFTER
:

279 i(
	`TYPE
(
h
=
P_LBTREE
) {

281 i((
t
 =

282 
	`__bam_adjdx
(
dbc
, 
h
, 
dx
 + 
P_INDX
, indx, 1)) != 0)

283  (
t
);

284 i((
t
 =

285 
	`__bam__di
(
dbc
, 
	`PGNO
(
h
), 
dx
 + 
P_INDX
, 1)) != 0)

286  (
t
);

288 
dx
 += 3;

290 

->
dx
 += 2;

292 ++
dx
;

293 

->
dx
 += 1;

296 
DB_BEFORE
:

297 i(
	`TYPE
(
h
=
P_LBTREE
) {

299 i((
t
 = 
	`__bam_adjdx
(
dbc
, 
h
, 
dx
, indx, 1)) != 0)

300  (
t
);

301 i((
t
 = 
	`__bam__di
(
dbc
, 
	`PGNO
(
h
), 
dx
, 1)) != 0)

302  (
t
);

304 ++
dx
;

307 
DB_CURRENT
:

315 i((
t
 = 
	`__bam__de
(
dbp
, 
	`PGNO
(
h
), 
dx
, 0, 
NULL
)) != 0)

316  (
t
);

318 i(
	`TYPE
(
h
=
P_LBTREE
)

319 ++
dx
;

320 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
);

329 i(
	`TYPE
(
h
=
P_LBTREE
 || TYPE(h=
P_LDUP
)

330 
was_ded
 = 
	`B_DISSET
(
bk
->
ty
);

341 i(
bigda
 || 
	`B_TYPE
(
bk
->
ty
!
B_KEYDATA
) {

342 i((
t
 = 
	`__bam_dem
(
dbc
, 
h
, 
dx
)) != 0)

343  (
t
);

344 
d
 = 1;

349 
a
 = 1;

352  (
	`__db_unknown_ag
(
dbv
, "DB->put", 

));

356 i(
bigda
) {

361 
	`DB_ASSERT
(
dbv
, !
	`LF_ISSET
(
BI_DELETED
));

362 
t
 = 
	`__bam_ovput
(
dbc
,

363 
B_OVERFLOW
, 
PGNO_INVALID
, 
h
, 
dx
, 
da
);

365 i(
	`LF_ISSET
(
BI_DELETED
)) {

366 
	`B_TSET_DELETED
(
bk_tmp
.
ty
, 
B_KEYDATA
);

367 
bk_tmp
.
n
 = 
da
->
size
;

368 
bk_hdr
.
da
 = &
bk_tmp
;

369 
bk_hdr
.
size
 = 
	`SSZA
(
BKEYDATA
, 
da
);

370 
t
 = 
	`__db_pem
(
dbc
, 
h
, 
dx
,

371 
	`BKEYDATA_SIZE
(
da
->
size
), &
bk_hdr
, data);

372 } i(
a
)

373 
t
 = 
	`__bam_rem
(
dbc
, 
h
, 
dx
, 
da
);

375 
t
 = 
	`__db_pem
(
dbc
, 
h
, 
dx
,

376 
	`BKEYDATA_SIZE
(
da
->
size
), 
NULL
, data);

378 i(
t
 != 0) {

379 i(
d
 =1 && (
t_t
 =

380 
	`__bam__di
(
dbc
, 
	`PGNO
(
h
), 
dx
 + 1, -1)) != 0) {

381 
	`__db_r
(
dbv
, 
t_t
,

383  (
	`__db_nic
(
dbv
, 
t_t
));

385  (
t
);

392 i(

 !
DB_CURRENT
) {

393 i((
t
 = 
	`__bam__di
(
dbc
, 
	`PGNO
(
h
), 
dx
, 1)) != 0)

394  (
t
);

395 

->
dx
 = 
	`TYPE
(
h
=
P_LBTREE
 ? indx - 
O_INDX
 : indx;

403 i(
	`F_ISSET
(

, 
C_RECNUM
&& (

 !
DB_CURRENT
 || 
was_ded
))

404 i((
t
 = 
	`__bam_adju
(
dbc
, 1)) != 0)

405  (
t
);

413 i(
dudju
 &&

414 (
t
 = 
	`__bam_dup_cvt
(
dbc
, 
h
, 
dx
 - 
O_INDX
, 
t
)) != 0)

415  (
t
);

418 i(
dbc
->
dbty
 =
DB_RECNO
)

419 
t
->
_modifd
 = 1;

421  (
t
);

422 
	}
}

428 
u_t32_t


429 
	$__bam_size
(
dbp
, 

, 
da
, 
h
, 
dx
)

430 
DB
 *
dbp
;

431 
u_t32_t
 

, 
dx
;

432 
DBT
 *
da
;

433 
PAGE
 *
h
;

435 
BKEYDATA
 *
bk
;

436 
u_t32_t
 
nbys
;

442 i(

 !
DB_CURRENT
)

443  (
da
->
doff
 + da->
size
);

449 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
 + (
	`TYPE
(h=
P_LBTREE
 ? 
O_INDX
 : 0));

450 
nbys
 =

451 
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
 ? ((
BOVERFLOW
 *)bk)->

 : bk->
n
;

453  (
	`__db_size
(
nbys
, 
da
));

454 
	}
}

461 
	$__bam_bud
(
dbc
, 

, 
dbt
, 
h
, 
dx
, 
nbys
)

462 
DBC
 *
dbc
;

463 
u_t32_t
 

, 
dx
, 
nbys
;

464 
DBT
 *
dbt
;

465 
PAGE
 *
h
;

467 
BKEYDATA
 *
bk
, 
tbk
;

468 
BOVERFLOW
 *
bo
;

469 
BTREE
 *
t
;

470 
DB
 *
dbp
;

471 
DBT
 
cy
, *
rda
;

472 
u_t32_t
 
n
, 

;

473 
u_t8_t
 *
p
;

474 
t
;

476 
	`COMPQUIET
(
bo
, 
NULL
);

478 
dbp
 = 
dbc
->dbp;

479 
t
 = 
dbp
->
bt_
;

482 
rda
 = &
dbc
->
my_rda
;

483 i(
rda
->
un
 < 
nbys
) {

484 i((
t
 = 
	`__os_loc
(
dbp
->
dbv
,

485 
nbys
, &
rda
->
da
)) != 0) {

486 
rda
->
un
 = 0;

487 
rda
->
da
 = 
NULL
;

488  (
t
);

490 
rda
->
un
 = 
nbys
;

497 
	`memt
(
rda
->
da
,

498 
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
? 
t
->
_d
 : 0, 
nbys
);

509 i(!
	`F_ISSET
(
dbt
, 
DB_DBT_PARTIAL
|| 

 !
DB_CURRENT
) {

510 
p
 = (
u_t8_t
 *)
rda
->
da
 + 
dbt
->
doff
;

511 

 = 
dbt
->
doff
;

512 
ur_cy
;

516 i(
dx
 < 
	`NUM_ENT
(
h
)) {

517 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
 + (
	`TYPE
(h=
P_LBTREE
 ?

518 
O_INDX
 : 0));

519 
bo
 = (
BOVERFLOW
 *)
bk
;

521 
bk
 = &
tbk
;

522 
	`B_TSET
(
bk
->
ty
, 
B_KEYDATA
);

523 
bk
->
n
 = 0;

525 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
) {

530 
	`memt
(&
cy
, 0, (copy));

531 i((
t
 = 
	`__db_goff
(
dbp
, 
dbc
->
txn
, &
cy
, 
bo
->

,

532 
bo
->
pgno
, &
rda
->
da
, &rda->
un
)) != 0)

533  (
t
);

536 

 = 
dbt
->
doff
;

537 
p
 = (
u_t8_t
 *)
rda
->
da
 + 
dbt
->
doff
;

550 i(
bo
->

 > 
dbt
->
doff
 + dbt->
dn
) {

551 
n
 = 
bo
->

 - (
dbt
->
doff
 + dbt->
dn
);

552 i(
dbt
->
dn
 !dbt->
size
)

553 
	`memmove
(
p
 + 
dbt
->
size
, + dbt->
dn
, 
n
);

554 

 +
n
;

558 
	`memy
(
rda
->
da
,

559 
bk
->
da
, 
dbt
->
doff
 > bk->
n
 ? bk->len : dbt->doff);

560 

 = 
dbt
->
doff
;

561 
p
 = (
u_t8_t
 *)
rda
->
da
 + 
dbt
->
doff
;

564 
n
 = 
dbt
->
doff
 + dbt->
dn
;

565 i(
bk
->
n
 >en) {

566 
	`memy
(
p
 + 
dbt
->
size
, 
bk
->
da
 + 
n
, bk->len -en);

567 

 +
bk
->
n
 -en;

571 
ur_cy
:

576 
	`memy
(
p
, 
dbt
->
da
, dbt->
size
);

577 

 +
dbt
->
size
;

580 
rda
->
size
 = 
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
? 
t
->
_n
 : 

;

581 
rda
->
dn
 = 0;

582 
rda
->
doff
 = 0;

583 
rda
->
ags
 = 0;

584 *
dbt
 = *
rda
;

586 
	}
}

595 
	$__bam_rem
(
dbc
, 
h
, 
dx
, 
da
)

596 
DBC
 *
dbc
;

597 
PAGE
 *
h
;

598 
u_t32_t
 
dx
;

599 
DBT
 *
da
;

601 
BKEYDATA
 *
bk
;

602 
DB
 *
dbp
;

603 
DBT
 
ig
, 

;

604 
db_dx_t
 
t
, 
lo
, 

, 
m
, 
off
, 
efix
, 
suffix
;

605 
t32_t
 
nbys
;

606 
t
;

607 
db_dx_t
 *
p
;

608 
u_t8_t
 *
p
, *
t
;

610 
dbp
 = 
dbc
->dbp;

617 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
);

620 i(
	`DBC_LOGGING
(
dbc
)) {

626 
m
 = 
da
->
size
 < 
bk
->
n
 ? data->size : bk->len;

627 
efix
 = 0,

628 
p
 = 
bk
->
da
, 
t
 = data->data;

629 
efix
 < 
m
 && *
p
 =*
t
; ++prefix, ++p, ++t)

632 
m
 -
efix
;

633 
suffix
 = 0,

634 
p
 = (
u_t8_t
 *)
bk
->
da
 + bk->
n
 - 1,

635 
t
 = (
u_t8_t
 *)
da
->d+ da->
size
 - 1;

636 
suffix
 < 
m
 && *
p
 =*
t
; ++suffix, --p, --t)

640 
ig
.
da
 = (
u_t8_t
 *)
bk
->d+ 
efix
;

641 
ig
.
size
 = 
bk
->
n
 - (
efix
 + 
suffix
);

642 

.
da
 = (
u_t8_t
 *)da->d+ 
efix
;

643 

.
size
 = 
da
->siz- (
efix
 + 
suffix
);

644 i((
t
 = 
	`__bam__log
(
dbp
, 
dbc
->
txn
, &
	`LSN
(
h
), 0, 
	`PGNO
(h),

645 &
	`LSN
(
h
), (
u_t32_t
)
dx
, (u_t32_t)
	`B_DISSET
(
bk
->
ty
),

646 &
ig
, &

, (
u_t32_t
)
efix
, (u_t32_t)
suffix
)) != 0)

647  (
t
);

649 
	`LSN_NOT_LOGGED
(
	`LSN
(
h
));

655 
p
 = 
	`P_INP
(
dbp
, 
h
);

656 
p
 = (
u_t8_t
 *)
h
 + 
	`HOFFSET
(h);

657 
t
 = (
u_t8_t
 *)
bk
;

665 
lo
 = 
	`BKEYDATA_SIZE
(
bk
->
n
);

666 

 = (
db_dx_t
)
	`BKEYDATA_SIZE
(
da
->
size
);

667 i(
lo
 !

) {

668 
nbys
 = 
lo
 - 

;

669 i(
p
 =
t
)

670 
p
[
dx
] +
nbys
;

672 
	`memmove
(
p
 + 
nbys
,, (
size_t
)(
t
 -));

675 
off
 = 
p
[
dx
];

676 
t
 = 0; c < 
	`NUM_ENT
(
h
); ++cnt)

677 i(
p
[
t
] <
off
)

678 
p
[
t
] +
nbys
;

682 
	`HOFFSET
(
h
+
nbys
;

683 
t
 +
nbys
;

687 
bk
 = (
BKEYDATA
 *)
t
;

688 
	`B_TSET
(
bk
->
ty
, 
B_KEYDATA
);

689 
bk
->
n
 = 
da
->
size
;

690 
	`memy
(
bk
->
da
, da->da, da->
size
);

693 
	}
}

700 
	$__bam_dup_check
(
dbc
, 

, 
h
, 
dx
, 
sz
, 

)

701 
DBC
 *
dbc
;

702 
u_t32_t
 

;

703 
PAGE
 *
h
;

704 
u_t32_t
 
dx
, 
sz
;

705 
db_dx_t
 *

;

707 
BKEYDATA
 *
bk
;

708 
DB
 *
dbp
;

709 
db_dx_t
 
t
, 
f
, *
p
;

711 
dbp
 = 
dbc
->dbp;

712 
p
 = 
	`P_INP
(
dbp
, 
h
);

718 
dx
 > 0 && 
p
[dx] =p[dx - 
P_INDX
])

719 
dx
 -
P_INDX
;

722 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
);

723 
sz
 +
	`B_TYPE
(
bk
->
ty
=
B_KEYDATA
 ?

724 
	`BKEYDATA_PSIZE
(
bk
->
n
: 
BOVERFLOW_PSIZE
;

727 
f
 = 
dx
;

736 
t
 = 

 =
DB_CURRENT
 ? 0 : 1;

737 
f
 = 
dx
;

738 
dx
 < 
	`NUM_ENT
(
h
&& 
p
[
f
] == inp[indx];

739 ++
t
, 
dx
 +
P_INDX
) {

740 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
 + 
O_INDX
);

741 
sz
 +
	`B_TYPE
(
bk
->
ty
=
B_KEYDATA
 ?

742 
	`BKEYDATA_PSIZE
(
bk
->
n
: 
BOVERFLOW_PSIZE
;

752 i(
t
 == 1)

761 i(
sz
 < 
dbp
->
pgsize
 / 4)

764 *

 = 
t
;

766 
	}
}

773 
	$__bam_dup_cvt
(
dbc
, 
h
, 
dx
, 
t
)

774 
DBC
 *
dbc
;

775 
PAGE
 *
h
;

776 
u_t32_t
 
dx
, 
t
;

778 
BKEYDATA
 *
bk
;

779 
DB
 *
dbp
;

780 
DBT
 
hdr
;

781 
DB_MPOOLFILE
 *
mpf
;

782 
PAGE
 *
dp
;

783 
db_dx_t
 
dx
, 
ddx
, 
f
, *
p
;

784 
t
, 
t_t
;

786 
dbp
 = 
dbc
->dbp;

787 
mpf
 = 
dbp
->mpf;

788 
p
 = 
	`P_INP
(
dbp
, 
h
);

791 
dx
 > 0 && 
p
[dx] =p[dx - 
P_INDX
])

792 
dx
 -
P_INDX
;

795 i((
t
 = 
	`__db_w
(
dbc
,

796 
dbp
->
dup_com
 =
NULL
 ? 
P_LRECNO
 : 
P_LDUP
, &
dp
)) != 0)

797  (
t
);

798 
	`P_INIT
(
dp
, 
dbp
->
pgsize
, dp->
pgno
,

799 
PGNO_INVALID
, PGNO_INVALID, 
LEAFLEVEL
, 
	`TYPE
(
dp
));

806 
	`memt
(&
hdr
, 0, (hdr));

807 
f
 = 
dx
;

808 
ddx
 = 
dx
;

809 
dx
 = 0;

812 i((
t
 = 
	`__bam__dup
(
dbc
, 
f
,

813 
	`PGNO
(
h
), 
dx
, PGNO(
dp
), 
dx
)) != 0)

814 
r
;

825 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
ddx
 + 1);

826 
hdr
.
da
 = 
bk
;

827 
hdr
.
size
 = 
	`B_TYPE
(
bk
->
ty
=
B_KEYDATA
 ?

828 
	`BKEYDATA_SIZE
(
bk
->
n
: 
BOVERFLOW_SIZE
;

829 i(
dbp
->
dup_com
 =
NULL
 && 
	`B_DISSET
(
bk
->
ty
)) {

835 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
 &&

836 (
t
 = 
	`__db_doff
(
dbc
,

837 (
	`GET_BOVERFLOW
(
dbp
, 
h
, 
ddx
 + 1))->
pgno
)) != 0)

838 
r
;

840 i((
t
 = 
	`__db_pem
(

841 
dbc
, 
dp
, 
dx
, 
hdr
.
size
, &hdr, 
NULL
)) != 0)

842 
r
;

843 ++
dx
;

846 i(
t
 != 1) {

847 i((
t
 = 
	`__bam_adjdx
(
dbc
,

848 
h
, 
ddx
, 
f
 + 1, 0)) != 0)

849 
r
;

851 
ddx
++;

854 i((
t
 = 
	`__db_dem
(
dbc
, 
h
, 
ddx
, 
hdr
.
size
)) != 0)

855 
r
;

856 
dx
 +
P_INDX
;

857 } --
t
);

860 i((
t
 = 
	`__bam_ovput
(
dbc
,

861 
B_DUPLICATE
, 
dp
->
pgno
, 
h
, 
f
 + 1, 
NULL
)) != 0)

862 
r
;

865 
t
 = 
	`__bam__di
(
dbc
,

866 
	`PGNO
(
h
), 
f
 + 
P_INDX
, ()(f + P_INDX - 
dx
));

868 
r
: i((
t_t
 = 
	`__memp_ut
(
mpf
, 
dp
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

869 
t
 = 
t_t
;

871  (
t
);

872 
	}
}

880 
	$__bam_ovput
(
dbc
, 
ty
, 
pgno
, 
h
, 
dx
, 
em
)

881 
DBC
 *
dbc
;

882 
u_t32_t
 
ty
, 
dx
;

883 
db_pgno_t
 
pgno
;

884 
PAGE
 *
h
;

885 
DBT
 *
em
;

887 
BOVERFLOW
 
bo
;

888 
DBT
 
hdr
;

889 
t
;

891 
	`UMRW_SET
(
bo
.
unud1
);

892 
	`B_TSET
(
bo
.
ty
,ype);

893 
	`UMRW_SET
(
bo
.
unud2
);

900 i(
ty
 =
B_OVERFLOW
) {

901 i((
t
 = 
	`__db_poff
(
dbc
, 
em
, &
bo
.
pgno
)) != 0)

902  (
t
);

903 
bo
.

 = 
em
->
size
;

905 
bo
.
pgno
 =gno;

906 
bo
.

 = 0;

910 
	`memt
(&
hdr
, 0, (hdr));

911 
hdr
.
da
 = &
bo
;

912 
hdr
.
size
 = 
BOVERFLOW_SIZE
;

913  (
	`__db_pem
(
dbc
, 
h
, 
dx
, 
BOVERFLOW_SIZE
, &
hdr
, 
NULL
));

914 
	}
}

	@../btree/bt_rec.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/mp.h
"

18 
	#IS_BTREE_PAGE
(
g
) \

19 (
	`TYPE
(
g
=
P_IBTREE
 || \

20 
	`TYPE
(
g
=
P_LBTREE
 || TYPEag=
P_LDUP
)

	)

30 
	$__bam_l_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

31 
DB_ENV
 *
dbv
;

32 
DBT
 *
db
;

33 
DB_LSN
 *
lp
;

34 
db_cs
 

;

35 *
fo
;

37 
__bam_l_gs
 *
gp
;

38 
DB
 *
fe_dbp
;

39 
DBC
 *
dbc
;

40 
DB_MPOOLFILE
 *
mpf
;

41 
PAGE
 *
_
, *

, *

, *

, *
_
, *

, *

;

42 
db_pgno_t
 
pgno
, 
ro_pgno
;

43 
u_t32_t
 
y
;

44 
cmp
, 
l_upde
, 
p_upde
, 
r_upde
, 
rc
, 
t
, 
ro٥l
, 
t_t
;

46 
	`REC_PRINT
(
__bam_l_t
);

48 
mpf
 = 
NULL
;

49 
_
 = 

 = 

 = 

 = 
_
 = 

 = 
NULL
;

50 

 = 
NULL
;

52 
	`REC_INTRO
(
__bam_l_ad
, 1, 0);

68 i((
t
 = 
	`__os_mloc
(
dbv
, 
gp
->
pg
.
size
, &

)) != 0)

69 
out
;

70 
	`memy
(

, 
gp
->
pg
.
da
,rgp->pg.
size
);

72 
pgno
 = 
	`PGNO
(

);

73 
ro_pgno
 = 
gp
->root_pgno;

74 
ro٥l
 = 
ro_pgno
 !
PGNO_INVALID
;

75 
	`REC_FGET
(
mpf
, 
gp
->

, &

, 
right
);

76 
right
: 
	`REC_FGET
(
mpf
, 
gp
->right, &

, 
do
);

78 
do
: i(
	`DB_REDO
(

)) {

79 
l_upde
 = 
r_upde
 = 
p_upde
 = 0;

86 i(
ro٥l
) {

87 
	`REC_FGET
(
mpf
, 
ro_pgno
, &

, 
do_
);

88 
cmp
 =

89 
	`LOG_COMPARE
(&
	`LSN
(

), &LSN(
gp
->
pg
.
da
));

90 
	`CHECK_LSN
(
dbv
, 

,

91 
cmp
, &
	`LSN
(

), &LSN(
gp
->
pg
.
da
));

92 
p_upde
 = 
cmp
 == 0;

95 
do_
: i(

 !
NULL
) {

96 
cmp
 = 
	`LOG_COMPARE
(&
	`LSN
(

), &
gp
->
΢
);

97 
	`CHECK_LSN
(
dbv
, 

, 
cmp
, &
	`LSN
(

), &
gp
->
΢
);

98 i(
cmp
 == 0)

99 
l_upde
 = 1;

102 i(

 !
NULL
) {

103 
cmp
 = 
	`LOG_COMPARE
(&
	`LSN
(

), &
gp
->

);

104 
	`CHECK_LSN
(
dbv
, 

, 
cmp
, &
	`LSN
(

), &
gp
->

);

105 i(
cmp
 == 0)

106 
r_upde
 = 1;

109 i(!
p_upde
 && !
l_upde
 && !
r_upde
)

110 
check_xt
;

113 i((
t
 = 
	`__os_mloc
(
dbv
, 
fe_dbp
->
pgsize
, &
_
)) != 0 ||

114 (
t
 = 
	`__os_mloc
(
dbv
, 
fe_dbp
->
pgsize
, &
_
)) != 0)

115 
out
;

116 i(
ro٥l
) {

117 
	`P_INIT
(
_
, 
fe_dbp
->
pgsize
, 
gp
->

,

118 
PGNO_INVALID
,

119 
	`ISINTERNAL
(

? 
PGNO_INVALID
 : 
gp
->
right
,

120 
	`LEVEL
(

), 
	`TYPE
(sp));

121 
	`P_INIT
(
_
, 
fe_dbp
->
pgsize
, 
gp
->
right
,

122 
	`ISINTERNAL
(

? 
PGNO_INVALID
 : 
gp
->

,

123 
PGNO_INVALID
, 
	`LEVEL
(

), 
	`TYPE
(sp));

125 
	`P_INIT
(
_
, 
fe_dbp
->
pgsize
, 
	`PGNO
(

),

126 
	`ISINTERNAL
(

? 
PGNO_INVALID
 : 
	`PREV_PGNO
(sp),

127 
	`ISINTERNAL
(

? 
PGNO_INVALID
 : 
gp
->
right
,

128 
	`LEVEL
(

), 
	`TYPE
(sp));

129 
	`P_INIT
(
_
, 
fe_dbp
->
pgsize
, 
gp
->
right
,

130 
	`ISINTERNAL
(

? 
PGNO_INVALID
 : sp->
pgno
,

131 
	`ISINTERNAL
(

? 
PGNO_INVALID
 : 
	`NEXT_PGNO
(sp),

132 
	`LEVEL
(

), 
	`TYPE
(sp));

136 i((
t
 = 
	`__bam_cy
(
fe_dbp
, 

, 
_
, 0, 
gp
->
dx
)) != 0 ||

137 (
t
 = 
	`__bam_cy
(
fe_dbp
, 

, 
_
, 
gp
->
dx
,

138 
	`NUM_ENT
(

))) != 0)

139 
out
;

141 i(
l_upde
) {

142 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &

);

143 
	`memy
(

, 
_
, 
fe_dbp
->
pgsize
);

144 

->
l
 = *
lp
;

145 i((
t
 =

146 
	`__memp_ut
(
mpf
, 

, 
fe_dbp
->
iܙy
)) != 0)

147 
out
;

148 

 = 
NULL
;

151 i(
r_upde
) {

152 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &

);

153 
	`memy
(

, 
_
, 
fe_dbp
->
pgsize
);

154 

->
l
 = *
lp
;

155 i((
t
 =

156 
	`__memp_ut
(
mpf
, 

, 
fe_dbp
->
iܙy
)) != 0)

157 
out
;

158 

 = 
NULL
;

167 i(
ro٥l
 && 
p_upde
) {

168 i(
	`IS_BTREE_PAGE
(

)) {

169 
y
 = 
P_IBTREE
;

170 
rc
 = 
gp
->
ags
 & 
SPL_NRECS
 ? 1 : 0;

172 
y
 = 
P_IRECNO
;

173 
rc
 = 1;

176 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &

);

177 
	`P_INIT
(

, 
fe_dbp
->
pgsize
, 
ro_pgno
,

178 
PGNO_INVALID
, PGNO_INVALID, 
_
->
v
 + 1, 
y
);

179 
	`RE_NREC_SET
(

, 
rc
 ? 
	`__bam_tٮ
(
fe_dbp
, 
_
) +

180 
	`__bam_tٮ
(
fe_dbp
, 
_
) : 0);

182 

->
l
 = *
lp
;

183 i((
t
 =

184 
	`__memp_ut
(
mpf
, 

, 
fe_dbp
->
iܙy
)) != 0)

185 
out
;

186 

 = 
NULL
;

189 
check_xt
:

196 i(!
ro٥l
 && 
gp
->
gno
 !
PGNO_INVALID
) {

197 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
gno
, 
NULL
,

198 0, &

)) != 0) {

199 i(
t
 !
DB_PAGE_NOTFOUND


200 #ide
HAVE_FTRUNCATE


201 || 
	`DB_REDO
(

)

204 
t
 = 
	`__db_pgr
(

205 
fe_dbp
, 
gp
->
gno
, 
t
);

206 
out
;

208 
de
;

210 
cmp
 = 
	`LOG_COMPARE
(&
	`LSN
(

), &
gp
->
Ƣ
);

211 
	`CHECK_LSN
(
dbv
, 

, 
cmp
, &
	`LSN
(

), &
gp
->
Ƣ
);

212 i(
cmp
 == 0) {

213 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &

);

214 
	`PREV_PGNO
(


gp
->
right
;

215 

->
l
 = *
lp
;

216 i((
t
 = 
	`__memp_ut
(
mpf
,

217 

, 
fe_dbp
->
iܙy
)) != 0)

218 
out
;

219 

 = 
NULL
;

230 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
,

231 
DB_MPOOL_EDIT
, &

)) != 0) {

232 

 = 
NULL
;

233 
undo
;

235 i(
	`LOG_COMPARE
(
lp
, &
	`LSN
(

)) == 0) {

236 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &

);

237 
	`memy
(

, 
gp
->
pg
.
da
,rgp->pg.
size
);

238 i((
t
 =

239 
	`__memp_ut
(
mpf
, 

, 
fe_dbp
->
iܙy
)) != 0)

240 
out
;

241 

 = 
NULL
;

252 
undo
: i((
ro٥l
 && 

 !
NULL
|| 

 != NULL) {

253 i(
ro٥l
 && 

 !
NULL
 &&

254 
	`LOG_COMPARE
(
lp
, &
	`LSN
(

)) == 0) {

255 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &

);

256 

->
l
 = 
gp
->
΢
;

257 i((
t
 = 
	`__memp_ut
(
mpf
,

258 

, 
fe_dbp
->
iܙy
)) != 0)

259 
out
;

260 

 = 
NULL
;

262 i(

 !
NULL
 &&

263 
	`LOG_COMPARE
(
lp
, &
	`LSN
(

)) == 0) {

264 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &

);

265 

->
l
 = 
gp
->

;

266 i((
t
 = 
	`__memp_ut
(
mpf
,

267 

, 
fe_dbp
->
iܙy
)) != 0)

268 
out
;

269 

 = 
NULL
;

281 i(!
ro٥l
 && 
gp
->
gno
 !
PGNO_INVALID
) {

282 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
gno
, 
NULL
,

283 
DB_MPOOL_EDIT
, &

)) != 0) {

284 

 = 
NULL
;

285 
de
;

287 i(
	`LOG_COMPARE
(
lp
, &
	`LSN
(

)) == 0) {

288 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &

);

289 
	`PREV_PGNO
(


gp
->

;

290 

->
l
 = 
gp
->
Ƣ
;

291 i(
	`__memp_ut
(
mpf
, 

, 
fe_dbp
->
iܙy
))

292 
out
;

293 

 = 
NULL
;

298 
de
: *
lp
 = 
gp
->
ev_l
;

299 
t
 = 0;

301 
out
:

302 i(

 !
NULL
 &&

303 (
t_t
 = 
	`__memp_ut
(
mpf
, 

, 
fe_dbp
->
iܙy
)!0 && 
t
 == 0)

304 
t
 = 
t_t
;

305 i(

 !
NULL
 &&

306 (
t_t
 = 
	`__memp_ut
(
mpf
, 

, 
fe_dbp
->
iܙy
)!0 && 
t
 == 0)

307 
t
 = 
t_t
;

308 i(

 !
NULL
 &&

309 (
t_t
 = 
	`__memp_ut
(
mpf
, 

, 
fe_dbp
->
iܙy
)!0 && 
t
 == 0)

310 
t
 = 
t_t
;

311 i(

 !
NULL
 &&

312 (
t_t
 = 
	`__memp_ut
(
mpf
, 

, 
fe_dbp
->
iܙy
)!0 && 
t
 == 0)

313 
t
 = 
t_t
;

316 i(
_
 !
NULL
)

317 
	`__os_
(
dbv
, 
_
);

318 i(
_
 !
NULL
)

319 
	`__os_
(
dbv
, 
_
);

320 i(

 !
NULL
)

321 
	`__os_
(
dbv
, 

);

323 
REC_CLOSE
;

324 
	}
}

334 
	$__bam_rl_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

335 
DB_ENV
 *
dbv
;

336 
DBT
 *
db
;

337 
DB_LSN
 *
lp
;

338 
db_cs
 

;

339 *
fo
;

341 
__bam_rl_gs
 *
gp
;

342 
DB
 *
fe_dbp
;

343 
DBC
 *
dbc
;

344 
DB_LSN
 
cy_l
;

345 
DB_MPOOLFILE
 *
mpf
;

346 
PAGE
 *
g
;

347 
db_pgno_t
 
pgno
, 
ro_pgno
;

348 
db_o_t
 
rt
;

349 
cmp_n
, 
cmp_p
, 
t
;

351 
g
 = 
NULL
;

352 
	`REC_PRINT
(
__bam_rl_t
);

353 
	`REC_INTRO
(
__bam_rl_ad
, 1, 1);

356 
pgno
 = 
ro_pgno
 = 
gp
->root_pgno;

357 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
,

358 0, &
g
)) != 0) {

359 i(
t
 !
DB_PAGE_NOTFOUND


360 #ide
HAVE_FTRUNCATE


361 || 
	`DB_REDO
(

)

364 
t
 = 
	`__db_pgr
(
fe_dbp
, 
pgno
,et);

365 
out
;

367 
do_ge
;

370 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

371 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
rol
);

372 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
rol
);

373 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

381 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

382 
rt
 = 
	`RE_NREC
(
g
);

383 
	`memy
(
g
, 
gp
->
pgdbt
.
da
,rgp->pgdbt.
size
);

384 i(
	`LEVEL
(
g
> 
LEAFLEVEL
)

385 
	`RE_NREC_SET
(
g
, 
rt
);

386 
g
->
pgno
 = 
ro_pgno
;

387 
g
->
l
 = *
lp
;

388 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

390 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

391 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
, 
ro_pgno
,

392 
gp
->
ec
, 
PGNO_INVALID
, 
g
->
v
 + 1,

393 
	`IS_BTREE_PAGE
(
g
? 
P_IBTREE
 : 
P_IRECNO
);

394 i((
t
 = 
	`__db_pem
(
dbc
, 
g
, 0,

395 
gp
->
roْt
.
size
, &gp->roْt, 
NULL
)) != 0)

396 
out
;

397 
g
->
l
 = 
gp
->
rol
;

399 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)) != 0)

400 
out
;

402 
do_ge
:

408 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

409 0, &
g
)) != 0) {

410 i(
t
 !
DB_PAGE_NOTFOUND


411 #ide
HAVE_FTRUNCATE


412 || 
	`DB_REDO
(

)

415 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

416 
out
;

418 
de
;

420 ()
	`__ua_memy
(&
cy_l
, &
	`LSN
(
gp
->
pgdbt
.
da
), (
DB_LSN
));

421 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

422 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
cy_l
);

423 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
cy_l
);

424 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

426 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

427 
g
->
l
 = *
lp
;

428 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

430 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

431 
	`memy
(
g
, 
gp
->
pgdbt
.
da
,rgp->pgdbt.
size
);

433 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)) != 0)

434 
out
;

435 
g
 = 
NULL
;

437 
de
: *
lp
 = 
gp
->
ev_l
;

438 
t
 = 0;

440 
out
: i(
g
 !
NULL
)

441 ()
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
);

442 
REC_CLOSE
;

443 
	}
}

453 
	$__bam_adj_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

454 
DB_ENV
 *
dbv
;

455 
DBT
 *
db
;

456 
DB_LSN
 *
lp
;

457 
db_cs
 

;

458 *
fo
;

460 
__bam_adj_gs
 *
gp
;

461 
DB
 *
fe_dbp
;

462 
DBC
 *
dbc
;

463 
DB_MPOOLFILE
 *
mpf
;

464 
PAGE
 *
g
;

465 
cmp_n
, 
cmp_p
, 
t
;

467 
g
 = 
NULL
;

468 
	`REC_PRINT
(
__bam_adj_t
);

469 
	`REC_INTRO
(
__bam_adj_ad
, 1, 1);

472 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

473 0, &
g
)) != 0) {

474 i(
t
 !
DB_PAGE_NOTFOUND


475 #ide
HAVE_FTRUNCATE


476 || 
	`DB_REDO
(

)

479 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

480 
out
;

482 
de
;

485 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

486 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

487 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l
);

488 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

490 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

491 i((
t
 = 
	`__bam_adjdx
(
dbc
,

492 
g
, 
gp
->
dx
,rgp->
dx_cy
,rgp->
is_
)) != 0)

493 
out
;

495 
	`LSN
(
g
*
lp
;

496 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

498 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

499 i((
t
 = 
	`__bam_adjdx
(
dbc
,

500 
g
, 
gp
->
dx
,rgp->
dx_cy
, !gp->
is_
)) != 0)

501 
out
;

503 
	`LSN
(
g

gp
->
l
;

505 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)) != 0)

506 
out
;

507 
g
 = 
NULL
;

509 
de
: *
lp
 = 
gp
->
ev_l
;

510 
t
 = 0;

512 
out
: i(
g
 !
NULL
)

513 ()
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
);

514 
REC_CLOSE
;

515 
	}
}

526 
	$__bam_dju_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

527 
DB_ENV
 *
dbv
;

528 
DBT
 *
db
;

529 
DB_LSN
 *
lp
;

530 
db_cs
 

;

531 *
fo
;

533 
__bam_dju_gs
 *
gp
;

534 
DB
 *
fe_dbp
;

535 
DBC
 *
dbc
;

536 
DB_MPOOLFILE
 *
mpf
;

537 
PAGE
 *
g
;

538 
cmp_n
, 
cmp_p
, 
t
;

540 
g
 = 
NULL
;

541 
	`REC_PRINT
(
__bam_dju_t
);

542 
	`REC_INTRO
(
__bam_dju_ad
, 1, 0);

545 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

546 0, &
g
)) != 0) {

547 i(
t
 !
DB_PAGE_NOTFOUND


548 #ide
HAVE_FTRUNCATE


549 || 
	`DB_REDO
(

)

552 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

553 
out
;

555 
de
;

558 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

559 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

560 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l
);

561 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

563 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

564 i(
	`IS_BTREE_PAGE
(
g
)) {

565 
	`GET_BINTERNAL
(
fe_dbp
, 
g
, 
gp
->
dx
)->
ecs
 +=

566 
gp
->
adju
;

567 i(
gp
->
ags
 & 
CAD_UPDATEROOT
)

568 
	`RE_NREC_ADJ
(
g
, 
gp
->
adju
);

570 
	`GET_RINTERNAL
(
fe_dbp
, 
g
, 
gp
->
dx
)->
ecs
 +=

571 
gp
->
adju
;

572 i(
gp
->
ags
 & 
CAD_UPDATEROOT
)

573 
	`RE_NREC_ADJ
(
g
, 
gp
->
adju
);

576 
	`LSN
(
g
*
lp
;

577 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

579 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

580 i(
	`IS_BTREE_PAGE
(
g
)) {

581 
	`GET_BINTERNAL
(
fe_dbp
, 
g
, 
gp
->
dx
)->
ecs
 -=

582 
gp
->
adju
;

583 i(
gp
->
ags
 & 
CAD_UPDATEROOT
)

584 
	`RE_NREC_ADJ
(
g
, -(
gp
->
adju
));

586 
	`GET_RINTERNAL
(
fe_dbp
, 
g
, 
gp
->
dx
)->
ecs
 -=

587 
gp
->
adju
;

588 i(
gp
->
ags
 & 
CAD_UPDATEROOT
)

589 
	`RE_NREC_ADJ
(
g
, -(
gp
->
adju
));

591 
	`LSN
(
g

gp
->
l
;

593 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

594 
out
;

595 
g
 = 
NULL
;

597 
de
: *
lp
 = 
gp
->
ev_l
;

598 
t
 = 0;

600 
out
: i(
g
 !
NULL
)

601 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

602 
REC_CLOSE
;

603 
	}
}

613 
	$__bam_cd_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

614 
DB_ENV
 *
dbv
;

615 
DBT
 *
db
;

616 
DB_LSN
 *
lp
;

617 
db_cs
 

;

618 *
fo
;

620 
__bam_cd_gs
 *
gp
;

621 
DB
 *
fe_dbp
;

622 
DBC
 *
dbc
;

623 
DB_MPOOLFILE
 *
mpf
;

624 
PAGE
 *
g
;

625 
u_t32_t
 
dx
;

626 
cmp_n
, 
cmp_p
, 
t
;

628 
g
 = 
NULL
;

629 
	`REC_PRINT
(
__bam_cd_t
);

630 
	`REC_INTRO
(
__bam_cd_ad
, 1, 0);

633 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

634 0, &
g
)) != 0) {

635 i(
t
 !
DB_PAGE_NOTFOUND


636 #ide
HAVE_FTRUNCATE


637 || 
	`DB_REDO
(

)

640 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

641 
out
;

643 
de
;

646 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

647 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

648 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l
);

649 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

651 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

652 
dx
 = 
gp
->dx + (
	`TYPE
(
g
=
P_LBTREE
 ? 
O_INDX
 : 0);

653 
	`B_DSET
(
	`GET_BKEYDATA
(
fe_dbp
, 
g
, 
dx
)->
ty
);

655 
	`LSN
(
g
*
lp
;

656 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

658 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

659 
dx
 = 
gp
->dx + (
	`TYPE
(
g
=
P_LBTREE
 ? 
O_INDX
 : 0);

660 
	`B_DCLR
(
	`GET_BKEYDATA
(
fe_dbp
, 
g
, 
dx
)->
ty
);

662 i((
t
 = 
	`__bam__de
(

663 
fe_dbp
, 
gp
->
pgno
,rgp->
dx
, 0, 
NULL
)) != 0)

664 
out
;

666 
	`LSN
(
g

gp
->
l
;

668 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

669 
out
;

670 
g
 = 
NULL
;

672 
de
: *
lp
 = 
gp
->
ev_l
;

673 
t
 = 0;

675 
out
: i(
g
 !
NULL
)

676 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

677 
REC_CLOSE
;

678 
	}
}

688 
	$__bam__cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

689 
DB_ENV
 *
dbv
;

690 
DBT
 *
db
;

691 
DB_LSN
 *
lp
;

692 
db_cs
 

;

693 *
fo
;

695 
__bam__gs
 *
gp
;

696 
BKEYDATA
 *
bk
;

697 
DB
 *
fe_dbp
;

698 
DBC
 *
dbc
;

699 
DBT
 
dbt
;

700 
DB_MPOOLFILE
 *
mpf
;

701 
PAGE
 *
g
;

702 
cmp_n
, 
cmp_p
, 
t
;

703 
u_t8_t
 *
p
;

705 
g
 = 
NULL
;

706 
	`REC_PRINT
(
__bam__t
);

707 
	`REC_INTRO
(
__bam__ad
, 1, 1);

710 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

711 0, &
g
)) != 0) {

712 i(
t
 !
DB_PAGE_NOTFOUND


713 #ide
HAVE_FTRUNCATE


714 || 
	`DB_REDO
(

)

717 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

718 
out
;

720 
de
;

722 
bk
 = 
	`GET_BKEYDATA
(
fe_dbp
, 
g
, 
gp
->
dx
);

724 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

725 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

726 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l
);

727 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

733 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

734 
	`memt
(&
dbt
, 0, (dbt));

735 
dbt
.
size
 = 
gp
->
efix
 +rgp->
suffix
 +rgp->

.size;

736 i((
t
 = 
	`__os_mloc
(
dbv
, 
dbt
.
size
, &dbt.
da
)) != 0)

737 
out
;

738 
p
 = 
dbt
.
da
;

739 
	`memy
(
p
, 
bk
->
da
, 
gp
->
efix
);

740 
p
 +
gp
->
efix
;

741 
	`memy
(
p
, 
gp
->

.
da
,rgp->.
size
);

742 
p
 +
gp
->

.
size
;

743 
	`memy
(
p
, 
bk
->
da
 + (bk->
n
 - 
gp
->
suffix
),rgp->suffix);

745 
t
 = 
	`__bam_rem
(
dbc
, 
g
, 
gp
->
dx
, &
dbt
);

746 
	`__os_
(
dbv
, 
dbt
.
da
);

747 i(
t
 != 0)

748 
out
;

750 
	`LSN
(
g
*
lp
;

751 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

757 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

758 
	`memt
(&
dbt
, 0, (dbt));

759 
dbt
.
size
 = 
gp
->
efix
 +rgp->
suffix
 +rgp->
ig
.size;

760 i((
t
 = 
	`__os_mloc
(
dbv
, 
dbt
.
size
, &dbt.
da
)) != 0)

761 
out
;

762 
p
 = 
dbt
.
da
;

763 
	`memy
(
p
, 
bk
->
da
, 
gp
->
efix
);

764 
p
 +
gp
->
efix
;

765 
	`memy
(
p
, 
gp
->
ig
.
da
,rgp->ig.
size
);

766 
p
 +
gp
->
ig
.
size
;

767 
	`memy
(
p
, 
bk
->
da
 + (bk->
n
 - 
gp
->
suffix
),rgp->suffix);

769 
t
 = 
	`__bam_rem
(
dbc
, 
g
, 
gp
->
dx
, &
dbt
);

770 
	`__os_
(
dbv
, 
dbt
.
da
);

771 i(
t
 != 0)

772 
out
;

775 i(
gp
->
isded
)

776 
	`B_DSET
(
	`GET_BKEYDATA
(
fe_dbp
, 
g
, 
gp
->
dx
)->
ty
);

778 
	`LSN
(
g

gp
->
l
;

780 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)) != 0)

781 
out
;

782 
g
 = 
NULL
;

784 
de
: *
lp
 = 
gp
->
ev_l
;

785 
t
 = 0;

787 
out
: i(
g
 !
NULL
)

788 ()
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
);

789 
REC_CLOSE
;

790 
	}
}

800 
	$__bam_ro_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

801 
DB_ENV
 *
dbv
;

802 
DBT
 *
db
;

803 
DB_LSN
 *
lp
;

804 
db_cs
 

;

805 *
fo
;

807 
__bam_ro_gs
 *
gp
;

808 
BTMETA
 *
ma
;

809 
DB
 *
fe_dbp
;

810 
DBC
 *
dbc
;

811 
DB_MPOOLFILE
 *
mpf
;

812 
cmp_n
, 
cmp_p
, 
t
;

814 
ma
 = 
NULL
;

815 
	`REC_PRINT
(
__bam_ro_t
);

816 
	`REC_INTRO
(
__bam_ro_ad
, 0, 0);

818 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
ma_pgno
, 
NULL
,

819 0, &
ma
)) != 0) {

820 i(
t
 !
DB_PAGE_NOTFOUND


821 #ide
HAVE_FTRUNCATE


822 || 
	`DB_REDO
(

)

825 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
ma_pgno
,et);

826 
out
;

828 
de
;

831 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
ma
));

832 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
ma
), &
gp
->
ma_l
);

833 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
ma
), &
gp
->
ma_l
);

834 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

836 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

837 
ma
->
ro
 = 
gp
->
ro_pgno
;

838 
ma
->
dbma
.
l
 = *
lp
;

839 ((
BTREE
 *)
fe_dbp
->
bt_
)->
bt_ro
 = 
ma
->
ro
;

840 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

842 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

843 
ma
->
dbma
.
l
 = 
gp
->
ma_l
;

845 i((
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
)) != 0)

846 
out
;

847 
ma
 = 
NULL
;

849 
de
: *
lp
 = 
gp
->
ev_l
;

850 
t
 = 0;

852 
out
: i(
ma
 !
NULL
)

853 ()
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
);

854 
REC_CLOSE
;

855 
	}
}

866 
	$__bam_cudj_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

867 
DB_ENV
 *
dbv
;

868 
DBT
 *
db
;

869 
DB_LSN
 *
lp
;

870 
db_cs
 

;

871 *
fo
;

873 
__bam_cudj_gs
 *
gp
;

874 
DB
 *
fe_dbp
;

875 
DBC
 *
dbc
;

876 
DB_MPOOLFILE
 *
mpf
;

877 
t
;

879 
	`COMPQUIET
(
mpf
, 
NULL
);

881 
	`REC_PRINT
(
__bam_cudj_t
);

882 
	`REC_INTRO
(
__bam_cudj_ad
, 0, 1);

884 
t
 = 0;

885 i(

 !
DB_TXN_ABORT
)

886 
de
;

888 
gp
->
mode
) {

889 
DB_CA_DI
:

890 i((
t
 = 
	`__bam__di
(
dbc
, 
gp
->
om_pgno
,

891 
gp
->
om_dx
, -(rgp->
f_dx
)) != 0)

892 
out
;

894 
DB_CA_DUP
:

895 i((
t
 = 
	`__bam__undodup
(
fe_dbp
, 
gp
->
f_dx
,

896 
gp
->
om_pgno
,rgp->
om_dx
,rgp->
to_dx
)) != 0)

897 
out
;

900 
DB_CA_RSPLIT
:

901 i((
t
 =

902 
	`__bam__rl
(
dbc
, 
gp
->
to_pgno
,rgp->
om_pgno
)) != 0)

903 
out
;

906 
DB_CA_SPLIT
:

907 i((
t
 = 
	`__bam__undol
(
fe_dbp
, 
gp
->
om_pgno
,

908 
gp
->
to_pgno
,rgp->
_pgno
,rgp->
om_dx
)) != 0)

909 
out
;

913 
de
: *
lp
 = 
gp
->
ev_l
;

914 
out
: 
REC_CLOSE
;

915 
	}
}

926 
	$__bam_rcudj_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

927 
DB_ENV
 *
dbv
;

928 
DBT
 *
db
;

929 
DB_LSN
 *
lp
;

930 
db_cs
 

;

931 *
fo
;

933 
__bam_rcudj_gs
 *
gp
;

934 
BTREE_CURSOR
 *

;

935 
DB
 *
fe_dbp
;

936 
DBC
 *
dbc
, *
rdbc
;

937 
DB_MPOOLFILE
 *
mpf
;

938 
t
, 
t_t
;

940 
	`COMPQUIET
(
mpf
, 
NULL
);

941 
rdbc
 = 
NULL
;

943 
	`REC_PRINT
(
__bam_rcudj_t
);

944 
	`REC_INTRO
(
__bam_rcudj_ad
, 0, 1);

946 
t
 = 
t_t
 = 0;

948 i(

 !
DB_TXN_ABORT
)

949 
de
;

961 i((
t
 = 
	`__db_curs_t
(
fe_dbp
,

962 
NULL
, 
DB_RECNO
, 
gp
->
ro
, 0, 
DB_LOCK_INVALIDID
, &
rdbc
)) != 0)

963 
out
;

965 

 = (
BTREE_CURSOR
 *)
rdbc
->

;

966 
	`F_SET
(

, 
C_RENUMBER
);

967 

->
o
 = 
gp
->recno;

969 
gp
->
mode
) {

970 
CA_DELETE
:

975 
	`F_SET
(

, 
C_DELETED
);

976 
	`F_SET
(

, 
C_RENUMBER
);

977 

->
d
 = 
gp
->order;

978 i((
t
 = 
	`__m_
(
rdbc
, 
CA_ICURRENT
, 
NULL
)) != 0)

979 
out
;

981 
CA_IAFTER
:

982 
CA_IBEFORE
:

983 
CA_ICURRENT
:

988 
	`F_CLR
(

, 
C_DELETED
);

989 

->
d
 = 
INVALID_ORDER
;

990 i((
t
 = 
	`__m_
(
rdbc
, 
CA_DELETE
, 
NULL
)) != 0)

991 
out
;

995 
de
: *
lp
 = 
gp
->
ev_l
;

996 
out
: i(
rdbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
dbc)!0 && 
t
 == 0)

997 
t
 = 
t_t
;

998 
REC_CLOSE
;

999 
	}
}

1009 
	$__bam_lk_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1010 
DB_ENV
 *
dbv
;

1011 
DBT
 *
db
;

1012 
DB_LSN
 *
lp
;

1013 
db_cs
 

;

1014 *
fo
;

1016 
__bam_lk_gs
 *
gp
;

1017 
DB
 *
fe_dbp
;

1018 
DBC
 *
dbc
;

1019 
DB_MPOOLFILE
 *
mpf
;

1020 
PAGE
 *
g
;

1021 
cmp_n
, 
cmp_p
, 
t
;

1023 
g
 = 
NULL
;

1024 
	`REC_PRINT
(
__bam_lk_t
);

1025 
	`REC_INTRO
(
__bam_lk_ad
, 1, 0);

1033 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
xt
, 
NULL
,

1034 0, &
g
)) != 0) {

1035 i(
t
 !
DB_PAGE_NOTFOUND


1036 #ide
HAVE_FTRUNCATE


1037 || 
	`DB_REDO
(

)

1040 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
xt
,et);

1041 
out
;

1043 
ev
;

1046 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

1047 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l_xt
);

1048 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l_xt
);

1049 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1051 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1052 i(
gp
->
w_pgno
 =
PGNO_INVALID
)

1053 
g
->
ev_pgno
 = 
gp
->
ev
;

1055 
g
->
ev_pgno
 = 
gp
->
w_pgno
;

1057 
g
->
l
 = *
lp
;

1058 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

1060 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1061 
g
->
ev_pgno
 = 
gp
->
pgno
;

1063 
g
->
l
 = 
gp
->
l_xt
;

1066 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1067 
out
;

1068 
g
 = 
NULL
;

1070 
ev
: i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->ev, 
NULL
,

1071 0, &
g
)) != 0) {

1072 i(
t
 !
DB_PAGE_NOTFOUND


1073 #ide
HAVE_FTRUNCATE


1074 || 
	`DB_REDO
(

)

1077 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
ev
,et);

1078 
out
;

1080 
de
;

1083 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l_ev
);

1084 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l_ev
);

1085 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1087 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1088 i(
gp
->
w_pgno
 =
PGNO_INVALID
)

1089 
g
->
xt_pgno
 = 
gp
->
xt
;

1091 
g
->
xt_pgno
 = 
gp
->
w_pgno
;

1093 
g
->
l
 = *
lp
;

1094 } i(
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
)=0 && 
	`DB_UNDO
(

)) {

1096 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1097 
g
->
xt_pgno
 = 
gp
->
pgno
;

1098 
g
->
l
 = 
gp
->
l_ev
;

1101 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1102 
out
;

1103 
g
 = 
NULL
;

1105 
de
: *
lp
 = 
gp
->
ev_l
;

1106 
t
 = 0;

1108 
out
: i(
g
 !
NULL
)

1109 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

1110 
REC_CLOSE
;

1111 
	}
}

1121 
	$__bam_mge_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1122 
DB_ENV
 *
dbv
;

1123 
DBT
 *
db
;

1124 
DB_LSN
 *
lp
;

1125 
db_cs
 

;

1126 *
fo
;

1128 
__bam_mge_gs
 *
gp
;

1129 
BKEYDATA
 *
bk
;

1130 
DB
 *
fe_dbp
;

1131 
DBC
 *
dbc
;

1132 
DB_MPOOLFILE
 *
mpf
;

1133 
PAGE
 *
g
;

1134 
db_dx_t
 
dx
, *
np
, *
pp
;

1135 
u_t32_t
 
size
;

1136 
u_t8_t
 *
bp
;

1137 
cmp_n
, 
cmp_p
, 
i
, 
t
;

1139 
	`REC_PRINT
(
__bam_mge_t
);

1140 
	`REC_INTRO
(
__bam_mge_ad
, 1, 1);

1142 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

1143 0, &
g
)) != 0) {

1144 i(
t
 !
DB_PAGE_NOTFOUND


1145 #ide
HAVE_FTRUNCATE


1146 || 
	`DB_REDO
(

)

1149 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

1150 
out
;

1152 
xt
;

1155 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

1156 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

1157 
	`CHECK_LSN
(
fe_dbp
->
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l
);

1159 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1164 
	`DB_ASSERT
(
dbv
, 
gp
->
hdr
.
size
 =0 || 
	`NUM_ENT
(
g
) == 0);

1165 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

1166 i(
gp
->
hdr
.
size
 != 0) {

1167 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,ag->
pgno
,

1168 
	`PREV_PGNO
(
gp
->
hdr
.
da
),

1169 
	`NEXT_PGNO
(
gp
->
hdr
.
da
),

1170 
	`LEVEL
(
gp
->
hdr
.
da
), 
	`TYPE
(argp->hdr.data));

1172 i(
	`TYPE
(
g
=
P_OVERFLOW
) {

1173 
	`OV_REF
(
g
OV_REF(
gp
->
hdr
.
da
);

1174 
	`OV_LEN
(
g
OV_LEN(
gp
->
hdr
.
da
);

1175 
bp
 = (
u_t8_t
 *
g
 + 
	`P_OVERHEAD
(
fe_dbp
);

1176 
	`memy
(
bp
, 
gp
->
da
.da,rgp->da.
size
);

1179 
bp
 = (
u_t8_t
 *)
g
 +

1180 (
db_dx_t
)(
	`HOFFSET
(
g
- 
gp
->
da
.
size
);

1181 
	`memy
(
bp
, 
gp
->
da
.da,rgp->da.
size
);

1184 
pp
 = 
	`P_INP
(
fe_dbp
, 
g
+ 
	`NUM_ENT
(pagep);

1185 
np
 = 
gp
->
d
.
da
;

1186 
i
 = 0;

1187 
i
 < ()(
gp
->
d
.
size
 / (*
np
)); i++)

1188 *
pp
++ = *
np
++

1189 - (
fe_dbp
->
pgsize
 - 
	`HOFFSET
(
g
));

1190 
	`HOFFSET
(
g
-
gp
->
da
.
size
;

1191 
	`NUM_ENT
(
g
+
i
;

1193 
g
->
l
 = *
lp
;

1194 } i(
cmp_n
 =0 && !
	`DB_REDO
(

)) {

1201 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

1202 
i
 = 0; i < ()(
gp
->
d
.
size
 / (*
np
)); i++) {

1203 
dx
 = 
	`NUM_ENT
(
g
) - 1;

1204 i(
	`P_INP
(
fe_dbp
, 
g
)[
dx
] ==

1205 
	`P_INP
(
fe_dbp
, 
g
)[
dx
 - 
P_INDX
]) {

1206 
	`NUM_ENT
(
g
)--;

1209 
	`TYPE
(
g
)) {

1210 
P_LBTREE
:

1211 
P_LRECNO
:

1212 
P_LDUP
:

1213 
bk
 = 
	`GET_BKEYDATA
(
fe_dbp
, 
g
, 
dx
);

1214 
size
 = 
	`BITEM_SIZE
(
bk
);

1217 
P_IBTREE
:

1218 
size
 = 
	`BINTERNAL_SIZE
(

1219 
	`GET_BINTERNAL
(
fe_dbp
, 
g
, 
dx
)->
n
);

1221 
P_IRECNO
:

1222 
size
 = 
RINTERNAL_SIZE
;

1226 
t
 = 
	`__db_pgfmt
(
dbv
, 
	`PGNO
(
g
));

1227 
out
;

1229 i((
t
 =

1230 
	`__db_dem
(
dbc
, 
g
, 
dx
, 
size
)) != 0)

1231 
out
;

1233 i(
gp
->
d
.
size
 == 0)

1234 
	`HOFFSET
(
g

fe_dbp
->
pgsize
;

1235 
g
->
l
 = 
gp
->lsn;

1238 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)) != 0)

1239 
out
;

1241 
xt
: i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
gno
, 
NULL
,

1242 0, &
g
)) != 0) {

1243 i(
t
 !
DB_PAGE_NOTFOUND


1244 #ide
HAVE_FTRUNCATE


1245 || 
	`DB_REDO
(

)

1248 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

1249 
out
;

1251 
de
;

1254 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

1255 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
Ƣ
);

1256 
	`CHECK_LSN
(
fe_dbp
->
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
Ƣ
);

1258 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1260 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

1261 
	`HOFFSET
(
g

fe_dbp
->
pgsize
;

1262 
	`NUM_ENT
(
g
) = 0;

1263 
g
->
l
 = *
lp
;

1264 } i(
cmp_n
 =0 && !
	`DB_REDO
(

)) {

1266 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

1267 i(
	`TYPE
(
g
=
P_OVERFLOW
) {

1268 
	`OV_REF
(
g
OV_REF(
gp
->
hdr
.
da
);

1269 
	`OV_LEN
(
g
OV_LEN(
gp
->
hdr
.
da
);

1270 
bp
 = (
u_t8_t
 *
g
 + 
	`P_OVERHEAD
(
fe_dbp
);

1271 
	`memy
(
bp
, 
gp
->
da
.da,rgp->da.
size
);

1273 
bp
 = (
u_t8_t
 *)
g
 +

1274 (
db_dx_t
)(
	`HOFFSET
(
g
- 
gp
->
da
.
size
);

1275 
	`memy
(
bp
, 
gp
->
da
.da,rgp->da.
size
);

1278 
pp
 = 
	`P_INP
(
fe_dbp
, 
g
+ 
	`NUM_ENT
(pagep);

1279 
np
 = 
gp
->
d
.
da
;

1280 
i
 = 0;

1281 
i
 < ()(
gp
->
d
.
size
 / (*
np
)); i++)

1282 *
pp
++ = *
np
++;

1283 
	`HOFFSET
(
g
-
gp
->
da
.
size
;

1284 
	`NUM_ENT
(
g

i
;

1286 
g
->
l
 = 
gp
->
Ƣ
;

1289 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)) != 0)

1290 
out
;

1291 
de
:

1292 *
lp
 = 
gp
->
ev_l
;

1293 
t
 = 0;

1295 
out
: 
REC_CLOSE
;

1296 
	}
}

1306 
	$__bam_pgno_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1307 
DB_ENV
 *
dbv
;

1308 
DBT
 *
db
;

1309 
DB_LSN
 *
lp
;

1310 
db_cs
 

;

1311 *
fo
;

1313 
BINTERNAL
 *
bi
;

1314 
__bam_pgno_gs
 *
gp
;

1315 
DB
 *
fe_dbp
;

1316 
DBC
 *
dbc
;

1317 
DB_MPOOLFILE
 *
mpf
;

1318 
PAGE
 *
g
, *
ag
;

1319 
db_pgno_t
 *
pgn
;

1320 
cmp_n
, 
cmp_p
, 
t
;

1322 
	`REC_PRINT
(
__bam_pgno_t
);

1323 
	`REC_INTRO
(
__bam_pgno_ad
, 1, 0);

1325 
	`REC_FGET
(
mpf
, 
gp
->
pgno
, &
g
, 
de
);

1327 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

1328 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

1329 
	`CHECK_LSN
(
fe_dbp
->
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l
);

1331 i((
cmp_p
 =0 && 
	`DB_REDO
(

)|| (
cmp_n
 == 0 && !DB_REDO(op))) {

1332 
	`TYPE
(
g
)) {

1333 
P_IBTREE
:

1339 
bi
 = 
	`GET_BINTERNAL
(
fe_dbp
, 
g
, 
gp
->
dx
);

1340 i(
	`B_TYPE
(
bi
->
ty
=
B_OVERFLOW
) {

1341 
	`REC_FGET
(
mpf
, 
gp
->
gno
, &
ag
, 
out
);

1343 i(
	`TYPE
(
ag
=
P_OVERFLOW
)

1344 
pgn
 =

1345 &((
BOVERFLOW
 *)(
bi
->
da
))->
pgno
;

1347 
pgn
 = &
bi
->
pgno
;

1348 i((
t
 = 
	`__memp_ut
(
mpf
,

1349 
ag
, 
fe_dbp
->
iܙy
)) != 0)

1350 
out
;

1353 
pgn
 = &
bi
->
pgno
;

1355 
P_IRECNO
:

1356 
pgn
 =

1357 &
	`GET_RINTERNAL
(
fe_dbp
, 
g
, 
gp
->
dx
)->
pgno
;

1360 
pgn
 =

1361 &
	`GET_BOVERFLOW
(
fe_dbp
, 
g
, 
gp
->
dx
)->
pgno
;

1365 i(
	`DB_REDO
(

)) {

1367 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1368 *
pgn
 = 
gp
->
gno
;

1369 
g
->
l
 = *
lp
;

1371 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1372 *
pgn
 = 
gp
->
gno
;

1373 
g
->
l
 = 
gp
->lsn;

1377 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1378 
out
;

1380 
de
:

1381 *
lp
 = 
gp
->
ev_l
;

1382 
t
 = 0;

1384 
out
: 
REC_CLOSE
;

1385 
	}
}

1395 
	$__bam_lk_43_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1396 
DB_ENV
 *
dbv
;

1397 
DBT
 *
db
;

1398 
DB_LSN
 *
lp
;

1399 
db_cs
 

;

1400 *
fo
;

1402 
__bam_lk_43_gs
 *
gp
;

1403 
DB
 *
fe_dbp
;

1404 
DBC
 *
dbc
;

1405 
DB_MPOOLFILE
 *
mpf
;

1406 
PAGE
 *
g
;

1407 
cmp_n
, 
cmp_p
, 
modifd
, 
t
;

1409 
g
 = 
NULL
;

1410 
	`REC_PRINT
(
__bam_lk_43_t
);

1411 
	`REC_INTRO
(
__bam_lk_43_ad
, 1, 0);

1419 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
, 0, &
g
)) != 0) {

1420 i(
t
 !
DB_PAGE_NOTFOUND


1421 #ide
HAVE_FTRUNCATE


1422 || 
	`DB_REDO
(

)

1425 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

1426 
out
;

1428 
xt2
;

1431 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

1432 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l
);

1433 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1435 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1436 
g
->
l
 = *
lp
;

1437 } i(
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
)=0 && 
	`DB_UNDO
(

)) {

1439 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1440 
g
->
xt_pgno
 = 
gp
->
xt
;

1441 
g
->
ev_pgno
 = 
gp
->
ev
;

1442 
g
->
l
 = 
gp
->lsn;

1444 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1445 
out
;

1446 
g
 = 
NULL
;

1448 
xt2
: i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
xt
, 
NULL
, 0, &
g
)) != 0) {

1449 i(
t
 !
DB_PAGE_NOTFOUND


1450 #ide
HAVE_FTRUNCATE


1451 || 
	`DB_REDO
(

)

1454 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
xt
,et);

1455 
out
;

1457 
ev
;

1460 
modifd
 = 0;

1461 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

1462 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l_xt
);

1463 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l_xt
);

1464 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1466 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1467 
g
->
ev_pgno
 = 
gp
->
ev
;

1468 
modifd
 = 1;

1469 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

1471 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1472 
g
->
ev_pgno
 = 
gp
->
pgno
;

1473 
modifd
 = 1;

1475 i(
modifd
) {

1476 i(
	`DB_UNDO
(

))

1477 
g
->
l
 = 
gp
->
l_xt
;

1479 
g
->
l
 = *
lp
;

1481 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1482 
out
;

1483 
g
 = 
NULL
;

1485 
ev
: i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->ev, 
NULL
, 0, &
g
)) != 0) {

1486 i(
t
 !
DB_PAGE_NOTFOUND


1487 #ide
HAVE_FTRUNCATE


1488 || 
	`DB_REDO
(

)

1491 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
ev
,et);

1492 
out
;

1494 
de
;

1497 
modifd
 = 0;

1498 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l_ev
);

1499 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l_ev
);

1500 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1502 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1503 
g
->
xt_pgno
 = 
gp
->
xt
;

1504 
modifd
 = 1;

1505 } i(
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
)=0 && 
	`DB_UNDO
(

)) {

1507 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1508 
g
->
xt_pgno
 = 
gp
->
pgno
;

1509 
modifd
 = 1;

1511 i(
modifd
) {

1512 i(
	`DB_UNDO
(

))

1513 
g
->
l
 = 
gp
->
l_ev
;

1515 
g
->
l
 = *
lp
;

1517 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1518 
out
;

1519 
g
 = 
NULL
;

1521 
de
: *
lp
 = 
gp
->
ev_l
;

1522 
t
 = 0;

1524 
out
: i(
g
 !
NULL
)

1525 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

1526 
REC_CLOSE
;

1527 
	}
}

	@../btree/bt_reclaim.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/lock.h
"

23 
	$__bam_aim
(
dbp
, 
txn
)

24 
DB
 *
dbp
;

25 
DB_TXN
 *
txn
;

27 
DBC
 *
dbc
;

28 
DB_LOCK
 
ma_lock
;

29 
t
, 
t_t
;

32 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 0)) != 0)

33  (
t
);

36 i((
t
 = 
	`__db_lg
(
dbc
,

37 0, 
PGNO_BASE_MD
, 
DB_LOCK_WRITE
, 0, &
ma_lock
)) != 0)

38 
r
;

41 
	`F_SET
(
dbc
, 
DBC_DONTLOCK
);

44 
t
 = 
	`__bam_av
(
dbc
,

45 
DB_LOCK_WRITE
, 
dbc
->

->
ro
, 
__db_aim_back
, dbc);

47 
	`__TLPUT
(
dbc
, 
ma_lock
);

49 
r
: i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

50 
t
 = 
t_t
;

52  (
t
);

53 
	}
}

62 
	$__bam_un
(
dbc
, 
coup
)

63 
DBC
 *
dbc
;

64 
u_t32_t
 *
coup
;

66 
db_unc_m
 
unc
;

67 
t
;

69 
unc
.
cou
 = 0;

70 
unc
.
dbc
 = dbc;

73 
t
 = 
	`__bam_av
(
dbc
,

74 
DB_LOCK_WRITE
, 
dbc
->

->
ro
, 
__db_un_back
, &
unc
);

76 i(
coup
 !
NULL
)

77 *
coup
 = 
unc
.
cou
;

79  (
t
);

80 
	}
}

	@../btree/bt_recno.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/mp.h
"

17 
__m_add
 
__P
((
DBC
 *, 
db_o_t
 *, 
DBT
 *, 
u_t32_t
, u_int32_t));

18 
__m_sour
 
__P
((
DB
 *));

19 
__m_d
 
__P
((
DBC
 *, 
db_o_t
));

20 
__m_upde
 
__P
((
DBC
 *, 
db_o_t
, ));

39 
	#CD_SET
(

) { \

40 i(
	`F_ISSET
(

, 
C_RENUMBER
)) \

41 
	`F_SET
(

, 
C_DELETED
); \

42 }

	)

43 
	#CD_CLR
(

) { \

44 i(
	`F_ISSET
(

, 
C_RENUMBER
)) { \

45 
	`F_CLR
(

, 
C_DELETED
); \

46 

->
d
 = 
INVALID_ORDER
; \

48 }

	)

49 
	#CD_ISSET
(

) \

50 (
	`F_ISSET
(

, 
C_RENUMBER
&& F_ISSET(, 
C_DELETED
? 1 : 0)

	)

59 
	#C_LESSTHAN
(
1
, 
2
) \

60 (((
1
)->
o
 < (
2
)->recno) || \

61 (((
1
)->
o
 =(
2
)->recno) && \

62 ((
	`CD_ISSET
((
1
)&& CD_ISSET((
2
)&& (1)->
d
 < (cp2)->order) || \

63 (
	`CD_ISSET
((
1
)&& !CD_ISSET((
2
))))))

	)

69 
	#C_EQUAL
(
1
, 
2
) \

70 ((
1
)->
o
 =(
2
)->&& 
	`CD_ISSET
((cp1)) == CD_ISSET((cp2)) && \

71 (!
	`CD_ISSET
((
1
)|| (1)->
d
 =(
2
)->d))

	)

76 
	#CURADJ_LOG
(
dbc
) \

77 (
	`DBC_LOGGING
((
dbc
)&& (dbc)->
txn
 !
NULL
 && (dbc)->txn->

 !NULL)

	)

83 
	#STACK_TO_CURSOR
(

, 
t
) { \

84 
__t_t
; \

85 (

)->
ge
 = ()->
c
->page; \

86 (

)->
pgno
 = ()->
c
->
ge
->pgno; \

87 (

)->
dx
 = ()->
c
->indx; \

88 i((
__t_t
 = 
	`__TLPUT
(
dbc
, (

)->
lock
)!0 && (
t
) == 0) \

89 
t
 = 
__t_t
; \

90 (

)->
lock
 = ()->
c
->lock; \

91 (

)->
lock_mode
 = ()->
c
->lock_mode; \

92 }

	)

102 
	$__m_ݒ
(
dbp
, 
txn
, 
me
, 
ba_pgno
, 
ags
)

103 
DB
 *
dbp
;

104 
DB_TXN
 *
txn
;

105 cڡ *
me
;

106 
db_pgno_t
 
ba_pgno
;

107 
u_t32_t
 
ags
;

109 
BTREE
 *
t
;

110 
DBC
 *
dbc
;

111 
t
, 
t_t
;

113 
	`COMPQUIET
(
me
, 
NULL
);

114 
t
 = 
dbp
->
bt_
;

117 i((
t
 = 
	`__bam_ad_ro
(
dbp
, 
txn
, 
ba_pgno
, 
ags
)) != 0)

118  (
t
);

128 i(
t
->
_sour
 !
NULL
 && (
t
 = 
	`__m_sour
(
dbp
)) != 0)

129  (
t
);

132 i(
	`F_ISSET
(
dbp
, 
DB_AM_SNAPSHOT
)) {

134 i((
t
 = 
	`__db_curs
(
dbp
, 
NULL
, &
dbc
, 0)) != 0)

135  (
t
);

138 i((
t
 = 
	`__m_upde
(
dbc
,

139 
DB_MAX_RECORDS
, 0)!0 && 
t
 =
DB_NOTFOUND
)

140 
t
 = 0;

143 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

144 
t
 = 
t_t
;

147  (
t
);

148 
	}
}

157 
	$__m_nd
(
dbc
, 
key
, 
da
)

158 
DBC
 *
dbc
;

159 
DBT
 *
key
, *
da
;

161 
BTREE_CURSOR
 *

;

162 
t
;

164 

 = (
BTREE_CURSOR
 *)
dbc
->

;

171 
t
 = 
	`__m_upde
(
dbc
, 
DB_MAX_RECORDS
, 0);

172 i(
t
 =0 || =
DB_NOTFOUND
)

173 
t
 = 
	`__m_add
(
dbc
, &

->
o
, 
da
, 
DB_APPEND
, 0);

176 i(
t
 =0 && 
key
 !
NULL
)

177 
t
 = 
	`__db_tcy
(
dbc
->
dbp
->
dbv
, 
key
, &

->
o
,

178 (

->
o
), &
dbc
->
rkey
->
da
, &dbc->rkey->
un
);

180  (
t
);

181 
	}
}

190 
	$__mc_d
(
dbc
)

191 
DBC
 *
dbc
;

193 
BKEYDATA
 
bk
;

194 
BTREE
 *
t
;

195 
BTREE_CURSOR
 *

;

196 
DB
 *
dbp
;

197 
DB_LSN
 
l
;

198 
DBT
 
hdr
, 
da
;

199 
exa
, 
nc
, 
t
, 
ack
, 
t_t
;

201 
dbp
 = 
dbc
->dbp;

202 

 = (
BTREE_CURSOR
 *)
dbc
->

;

203 
t
 = 
dbp
->
bt_
;

204 
ack
 = 0;

217 i(
	`CD_ISSET
(

))

218  (
DB_KEYEMPTY
);

221 i((
t
 = 
	`__bam_rch
(
dbc
, &

->
o
, 
SR_DELETE
, 1, &
exa
)) != 0)

222 
r
;

223 i(!
exa
) {

224 
t
 = 
DB_NOTFOUND
;

225 
r
;

227 
ack
 = 1;

230 i((
t
 = 
	`__memp_dty
(
dbp
->
mpf
,

231 &

->
c
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

232 
r
;

233 
	`STACK_TO_CURSOR
(

, 
t
);

234 i(
t
 != 0)

235 
r
;

248 i(
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 

->
ge
, cp->
dx
)->
ty
)) {

249 
t
 = 
DB_KEYEMPTY
;

250 
r
;

253 i(
	`F_ISSET
(

, 
C_RENUMBER
)) {

255 i((
t
 = 
	`__bam_dem
(
dbc
, 

->
ge
, cp->
dx
)) != 0)

256 
r
;

257 i((
t
 = 
	`__bam_adju
(
dbc
, -1)) != 0)

258 
r
;

259 i((
t
 = 
	`__m_
(
dbc
, 
CA_DELETE
, &
nc
)) != 0)

260 
r
;

261 i(
nc
 > 0 &&

262 
	`CURADJ_LOG
(
dbc
&& (
t
 = 
	`__bam_rcudj_log
(
dbp
, dbc->
txn
,

263 &
l
, 0, 
CA_DELETE
, 

->
ro
, cp->
o
, cp->
d
)) != 0)

264 
r
;

279 i(
	`NUM_ENT
(

->
ge
=0 && 
	`PGNO
(->ge!->
ro
) {

284 
t
 = 
	`__bam_dges
(
dbc
, 0, 0);

290 
ack
 = 0;

291 

->
ge
 = 
NULL
;

295 i((
t
 = 
	`__bam_dem
(
dbc
, 

->
ge
, cp->
dx
)) != 0)

296 
r
;

298 
	`B_TSET_DELETED
(
bk
.
ty
, 
B_KEYDATA
);

299 
bk
.
n
 = 0;

300 
	`DB_INIT_DBT
(
hdr
, &
bk
, 
	`SSZA
(
BKEYDATA
, 
da
));

301 
	`DB_INIT_DBT
(
da
, "", 0);

302 i((
t
 = 
	`__db_pem
(
dbc
,

303 

->
ge
, cp->
dx
, 
	`BKEYDATA_SIZE
(0), &
hdr
, &
da
)) != 0)

304 
r
;

307 
t
->
_modifd
 = 1;

309 
r
: i(
ack
 && (
t_t
 = 
	`__bam_kl
(
dbc
, 
STK_CLRDBC
)!0 && 
t
 == 0)

310 
t
 = 
t_t
;

312  (
t
);

313 
	}
}

323 
	$__mc_g
(
dbc
, 
key
, 
da
, 
ags
, 
pgn
)

324 
DBC
 *
dbc
;

325 
DBT
 *
key
, *
da
;

326 
u_t32_t
 
ags
;

327 
db_pgno_t
 *
pgn
;

329 
BTREE_CURSOR
 *

;

330 
DB
 *
dbp
;

331 
cmp
, 
exa
, 
t
;

333 
	`COMPQUIET
(
pgn
, 
NULL
);

335 
dbp
 = 
dbc
->dbp;

336 

 = (
BTREE_CURSOR
 *)
dbc
->

;

338 
	`LF_CLR
(
DB_MULTIPLE
|
DB_MULTIPLE_KEY
);

339 
y
: 
ags
) {

340 
DB_CURRENT
:

346 i(
	`CD_ISSET
(

))

347  (
DB_KEYEMPTY
);

349 
DB_NEXT_DUP
:

356 i(!
	`F_ISSET
(
dbc
, 
DBC_OPD
))

357  (
DB_NOTFOUND
);

359 
DB_NEXT_NODUP
:

365 
DB_NEXT
:

366 
ags
 = 
DB_NEXT
;

372 i(
	`CD_ISSET
(

)) {

376 
	`CD_CLR
(

);

380 i(

->
o
 !
RECNO_OOB
) {

381 ++

->
o
;

385 
DB_FIRST
:

386 
ags
 = 
DB_NEXT
;

387 

->
o
 = 1;

389 
DB_PREV_DUP
:

396 i(!
	`F_ISSET
(
dbc
, 
DBC_OPD
))

397  (
DB_NOTFOUND
);

399 
DB_PREV_NODUP
:

405 
DB_PREV
:

406 
ags
 = 
DB_PREV
;

407 i(

->
o
 !
RECNO_OOB
) {

408 i(

->
o
 == 1) {

409 
t
 = 
DB_NOTFOUND
;

410 
r
;

412 --

->
o
;

416 
DB_LAST
:

417 
ags
 = 
DB_PREV
;

418 i(((
t
 = 
	`__m_upde
(
dbc
,

419 
DB_MAX_RECORDS
, 0)!0&& 
t
 !
DB_NOTFOUND
)

420 
r
;

421 i((
t
 = 
	`__bam_ecs
(
dbc
, &

->
o
)) != 0)

422 
r
;

423 i(

->
o
 == 0) {

424 
t
 = 
DB_NOTFOUND
;

425 
r
;

428 
DB_GET_BOTHC
:

438 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

439 

->
o
++;

442 
t
 = 
DB_NOTFOUND
;

443 
r
;

445 
DB_GET_BOTH
:

446 
DB_GET_BOTH_RANGE
:

453 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

454 

->
o
 = 1;

458 
DB_SET
:

459 
DB_SET_RANGE
:

460 i((
t
 = 
	`__m_gno
(
dbc
, 
key
, &

->
o
, 0)) != 0)

461 
r
;

464 
t
 = 
	`__db_unknown_ag
(
dbp
->
dbv
, "__mc_g", 
ags
);

465 
r
;

477 i((
ags
 =
DB_NEXT
 || fg=
DB_CURRENT
&& ((
t
 =

478 
	`__m_upde
(
dbc
, 

->
o
, 0)!0&& 
t
 !
DB_NOTFOUND
)

479 
r
;

481 ;; ++

->
o
) {

483 i((
t
 = 
	`__bam_rch
(
dbc
, &

->
o
,

484 
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
SR_FIND_WR
 : 
SR_FIND
,

485 1, &
exa
)) != 0)

486 
r
;

487 i(!
exa
) {

488 
t
 = 
DB_NOTFOUND
;

489 
r
;

493 
	`STACK_TO_CURSOR
(

, 
t
);

494 i(
t
 != 0)

495 
r
;

506 i(
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 

->
ge
, cp->
dx
)->
ty
))

507 
ags
) {

508 
DB_NEXT
:

509 
DB_PREV
:

510 ()
	`__bam_kl
(
dbc
, 
STK_CLRDBC
);

511 
y
;

512 
DB_GET_BOTH
:

513 
DB_GET_BOTH_RANGE
:

521 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

522 ()
	`__bam_kl
(
dbc
, 
STK_CLRDBC
);

525 
t
 = 
DB_NOTFOUND
;

526 
r
;

528 
t
 = 
DB_KEYEMPTY
;

529 
r
;

532 i(
ags
 =
DB_GET_BOTH
 ||

533 
ags
 =
DB_GET_BOTHC
 || fg=
DB_GET_BOTH_RANGE
) {

534 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
, 
da
,

535 

->
ge
, cp->
dx
, 
__bam_defcmp
, &
cmp
)) != 0)

536  (
t
);

537 i(
cmp
 == 0)

539 i(!
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

540 
t
 = 
DB_NOTFOUND
;

541 
r
;

543 ()
	`__bam_kl
(
dbc
, 
STK_CLRDBC
);

549 i(!
	`F_ISSET
(
dbc
, 
DBC_OPD
&& !F_ISSET(
key
, 
DB_DBT_ISSET
)) {

550 
t
 = 
	`__db_tcy
(
dbp
->
dbv
,

551 
key
, &

->
o
, (cp->recno),

552 &
dbc
->
rkey
->
da
, &dbc->rkey->
un
);

553 
	`F_SET
(
key
, 
DB_DBT_ISSET
);

557 
r
: 
	`CD_CLR
(

);

559  (
t
);

560 
	}
}

569 
	$__mc_put
(
dbc
, 
key
, 
da
, 
ags
, 
pgn
)

570 
DBC
 *
dbc
;

571 
DBT
 *
key
, *
da
;

572 
u_t32_t
 
ags
;

573 
db_pgno_t
 *
pgn
;

575 
BTREE_CURSOR
 *

;

576 
DB
 *
dbp
;

577 
DB_ENV
 *
dbv
;

578 
DB_LSN
 
l
;

579 
u_t32_t
 
iiags
;

580 
exa
, 
nc
, 
t
, 
t_t
;

581 *
g
;

583 
	`COMPQUIET
(
pgn
, 
NULL
);

585 
dbp
 = 
dbc
->dbp;

586 
dbv
 = 
dbp
->dbenv;

587 

 = (
BTREE_CURSOR
 *)
dbc
->

;

596 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
))

597 
ags
) {

598 
DB_KEYFIRST
:

599 

->
o
 = 1;

600 
ags
 = 
DB_BEFORE
;

602 
DB_KEYLAST
:

603 i((
t
 = 
	`__m_add
(
dbc
,

604 &

->
o
, 
da
, 
DB_APPEND
, 0)) != 0)

605  (
t
);

606 i(
	`CURADJ_LOG
(
dbc
) &&

607 (
t
 = 
	`__bam_rcudj_log
(
dbp
, 
dbc
->
txn
, &
l
, 0,

608 
CA_ICURRENT
, 

->
ro
, cp->
o
, cp->
d
)) != 0)

609  (
t
);

620 i(
ags
 =
DB_KEYFIRST
 ||

621 
ags
 =
DB_KEYLAST
 || fg=
DB_NOOVERWRITE
) {

622 
t
 = 
	`__m_gno
(
dbc
, 
key
, &

->
o
, 1);

623 i(
t
 =0 || =
DB_NOTFOUND
)

624 
t
 = 
	`__m_add
(
dbc
, &

->
o
, 
da
, 
ags
, 0);

625  (
t
);

636 i(
	`CD_ISSET
(

))

637 
iiags
 = 
DB_BEFORE
;

639 
iiags
 = 
ags
;

641 
l
: i((
t
 = 
	`__bam_rch
(
dbc
, &

->
o
, 
SR_INSERT
, 1, &
exa
)) != 0)

642 
r
;

647 
	`DB_ASSERT
(
dbv
, 
exa
 || 
	`CD_ISSET
(

));

650 
	`STACK_TO_CURSOR
(

, 
t
);

651 i(
t
 != 0)

652 
r
;

654 
t
 = 
	`__bam_iem
(
dbc
, 
key
, 
da
, 
iiags
, 0);

655 
t_t
 = 
	`__bam_kl
(
dbc
, 
STK_CLRDBC
);

657 i(
t_t
 !0 && (
t
 =0 || =
DB_NEEDSPLIT
))

658 
t
 = 
t_t
;

659 i(
t
 =
DB_NEEDSPLIT
) {

660 
g
 = &

->
o
;

661 i((
t
 = 
	`__bam_l
(
dbc
, 
g
, 
NULL
)) != 0)

662 
r
;

663 
l
;

665 i(
t
 != 0)

666 
r
;

668 
ags
) {

669 
DB_AFTER
:

670 i((
t
 = 
	`__m_
(
dbc
, 
CA_IAFTER
, &
nc
)) != 0)

671 
r
;

678 i(
iiags
 =
DB_AFTER
)

679 ++

->
o
;

682 i(
nc
 > 0 && 
	`CURADJ_LOG
(
dbc
) &&

683 (
t
 = 
	`__bam_rcudj_log
(
dbp
, 
dbc
->
txn
, &
l
, 0, 
CA_IAFTER
,

684 

->
ro
, cp->
o
, cp->
d
)) != 0)

685 
r
;

687 
DB_BEFORE
:

688 i((
t
 = 
	`__m_
(
dbc
, 
CA_IBEFORE
, &
nc
)) != 0)

689 
r
;

690 --

->
o
;

693 i(
nc
 > 0 && 
	`CURADJ_LOG
(
dbc
) &&

694 (
t
 = 
	`__bam_rcudj_log
(
dbp
, 
dbc
->
txn
, &
l
, 0, 
CA_IBEFORE
,

695 

->
ro
, cp->
o
, cp->
d
)) != 0)

696 
r
;

698 
DB_CURRENT
:

704 i(!
	`CD_ISSET
(

))

708 i((
t
 = 
	`__m_
(
dbc
, 
CA_ICURRENT
, &
nc
)) != 0)

709 
r
;

710 i(
nc
 > 0 && 
	`CURADJ_LOG
(
dbc
) &&

711 (
t
 = 
	`__bam_rcudj_log
(
dbp
, 
dbc
->
txn
, &
l
, 0,

712 
CA_ICURRENT
, 

->
ro
, cp->
o
, cp->
d
)) != 0)

713 
r
;

720 i(!
	`F_ISSET
(
dbc
, 
DBC_OPD
) &&

721 (
ags
 =
DB_AFTER
 || fg=
DB_BEFORE
&& 
key
 !
NULL
)

722 
t
 = 
	`__db_tcy
(
dbv
, 
key
, &

->
o
,

723 (

->
o
), &
dbc
->
rkey
->
da
, &dbc->rkey->
un
);

726 
r
: 
	`CD_CLR
(

);

728  (
t
);

729 
	}
}

738 
	$__m_
(
dbc_g
, 

, 
foundp
)

739 
DBC
 *
dbc_g
;

740 
_o_g
 

;

741 *
foundp
;

743 
BTREE_CURSOR
 *

, *
_g
;

744 
DB
 *
dbp
, *
ldbp
;

745 
DB_ENV
 *
dbv
;

746 
DBC
 *
dbc
;

747 
db_o_t
 
o
;

748 
u_t32_t
 
d
;

749 
adjued
, 
found
;

751 
dbp
 = 
dbc_g
->dbp;

752 
dbv
 = 
dbp
->dbenv;

753 
_g
 = (
BTREE_CURSOR
 *)
dbc_g
->

;

754 
o
 = 
_g
->recno;

760 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
_g
, 
C_RENUMBER
));

762 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

772 i(

 =
CA_DELETE
) {

773 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

774 
d
 = 1;

775 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

776 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

777 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

778 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
) {

779 

 = (
BTREE_CURSOR
 *)
dbc
->

;

780 i(
_g
->
ro
 =

->root &&

781 
o
 =

->&& 
	`CD_ISSET
(cp) &&

782 
d
 <

->order &&

783 !
	`MVCC_SKIP_CURADJ
(
dbc
, 

->
ro
))

784 
d
 = 

->order + 1;

786 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

789 
d
 = 
INVALID_ORDER
;

792 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

793 
found
 = 0;

794 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

795 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

796 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

797 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
) {

798 

 = (
BTREE_CURSOR
 *)
dbc
->

;

799 i(
_g
->
ro
 !

->root ||

800 
	`MVCC_SKIP_CURADJ
(
dbc
, 

->
ro
))

802 ++
found
;

803 
adjued
 = 0;

804 

) {

805 
CA_DELETE
:

806 i(
o
 < 

->recno) {

807 --

->
o
;

812 i(
o
 =

->&& 
	`CD_ISSET
(cp))

813 

->
d
 += order;

814 } i(
o
 =

->recno &&

815 !
	`CD_ISSET
(

)) {

816 
	`CD_SET
(

);

817 

->
d
 = order;

820 
CA_IBEFORE
:

825 i(
	`C_EQUAL
(
_g
, 

)) {

826 ++

->
o
;

827 
adjued
 = 1;

829 

;

830 
CA_ICURRENT
:

842 
	`DB_ASSERT
(
dbv
, 
	`CD_ISSET
(
_g
));

843 i(
	`C_EQUAL
(
_g
, 

)) {

844 
	`CD_CLR
(

);

848 
CA_IAFTER
:

849 

: i(!
adjued
 && 
	`C_LESSTHAN
(
_g
, 

)) {

850 ++

->
o
;

851 
adjued
 = 1;

853 i(
o
 =

->&& 
adjued
)

862 

->
d
 -(
_g
->order - 1);

866 
	`MUTEX_UNLOCK
(
dbp
->
dbv
, dbp->
mux
);

868 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

870 i(
foundp
 !
NULL
)

871 *
foundp
 = 
found
;

873 
	}
}

882 
	$__m_gno
(
dbc
, 
key
, 
p
, 
n_
)

883 
DBC
 *
dbc
;

884 cڡ 
DBT
 *
key
;

885 
db_o_t
 *
p
;

886 
n_
;

888 
DB
 *
dbp
;

889 
db_o_t
 
o
;

891 
dbp
 = 
dbc
->dbp;

894 i((
o
 = *(
db_o_t
 *)
key
->
da
) == 0) {

895 
	`__db_rx
(
dbp
->
dbv
, "illegalecordumber of 0");

896  (
EINVAL
);

898 i(
p
 !
NULL
)

899 *
p
 = 
o
;

905  (
dbc
->
dbty
 =
DB_RECNO
 ?

906 
	`__m_upde
(
dbc
, 
o
, 
n_
) : 0);

907 
	}
}

914 
	$__m_upde
(
dbc
, 
o
, 
n_
)

915 
DBC
 *
dbc
;

916 
db_o_t
 
o
;

917 
n_
;

919 
BTREE
 *
t
;

920 
DB
 *
dbp
;

921 
DBT
 *
rda
;

922 
db_o_t
 
ecs
;

923 
t
;

925 
dbp
 = 
dbc
->dbp;

926 
t
 = 
dbp
->
bt_
;

932 i(!
n_
 && 
t
->
_eof
)

939 i((
t
 = 
	`__bam_ecs
(
dbc
, &
ecs
)) != 0)

940  (
t
);

941 i(!
t
->
_eof
 && 
o
 > 
ecs
) {

942 i((
t
 = 
	`__m_d
(
dbc
, 
o
)!0 && !
DB_NOTFOUND
)

943  (
t
);

944 i((
t
 = 
	`__bam_ecs
(
dbc
, &
ecs
)) != 0)

945  (
t
);

952 i(!
n_
 || 
o
 <
ecs
 + 1)

955 
rda
 = &
dbc
->
my_rda
;

956 
rda
->
ags
 = 0;

957 
rda
->
size
 = 0;

959 
o
 > ++
ecs
)

960 i((
t
 = 
	`__m_add
(
dbc
,

961 &
ecs
, 
rda
, 0, 
BI_DELETED
)) != 0)

962  (
t
);

964 
	}
}

971 
	$__m_sour
(
dbp
)

972 
DB
 *
dbp
;

974 
DB_ENV
 *
dbv
;

975 
BTREE
 *
t
;

976 *
sour
;

977 
t
;

979 
dbv
 = 
dbp
->dbenv;

980 
t
 = 
dbp
->
bt_
;

983 i((
t
 = 
	`__db_ame
(
dbv
,

984 
DB_APP_DATA
, 
t
->
_sour
, 0, 
NULL
, &
sour
)) != 0)

985  (
t
);

986 
	`__os_
(
dbv
, 
t
->
_sour
);

987 
t
->
_sour
 = 
sour
;

995 i((
t
->
_
 = 
	`fݒ
->
_sour
, "rb")=
NULL
) {

996 
t
 = 
	`__os_g_o
();

997 
	`__db_r
(
dbv
, 
t
, "%s", 
t
->
_sour
);

998  (
t
);

1001 
t
->
_eof
 = 0;

1003 
	}
}

1012 
	$__m_wreback
(
dbp
)

1013 
DB
 *
dbp
;

1015 
BTREE
 *
t
;

1016 
DB_ENV
 *
dbv
;

1017 
DBC
 *
dbc
;

1018 
DBT
 
key
, 
da
;

1019 
FILE
 *

;

1020 
db_o_t
 
keyno
;

1021 
t
, 
t_t
;

1022 
u_t8_t
 
dim
, *
d
;

1024 
t
 = 
dbp
->
bt_
;

1025 
dbv
 = 
dbp
->dbenv;

1026 

 = 
NULL
;

1027 
d
 = 
NULL
;

1030 i(!
t
->
_modifd
)

1034 i(
t
->
_sour
 =
NULL
) {

1035 
t
->
_modifd
 = 0;

1045 
	`memt
(&
key
, 0, (key));

1046 
key
.
size
 = (
db_o_t
);

1047 
key
.
da
 = &
keyno
;

1048 
	`memt
(&
da
, 0, (data));

1049 
	`F_SET
(&
da
, 
DB_DBT_REALLOC
);

1052 i((
t
 = 
	`__db_curs
(
dbp
, 
NULL
, &
dbc
, 0)) != 0)

1053  (
t
);

1076 i((
t
 =

1077 
	`__m_upde
(
dbc
, 
DB_MAX_RECORDS
, 0)!0 && 
t
 !
DB_NOTFOUND
)

1078 
r
;

1083 i(
t
->
_
 !
NULL
) {

1084 i(
	`fo
(
t
->
_
) != 0) {

1085 
t
 = 
	`__os_g_o
();

1086 
	`__db_r
(
dbv
, 
t
, "%s", 
t
->
_sour
);

1087 
r
;

1089 
t
->
_
 = 
NULL
;

1091 i((

 = 
	`fݒ
(
t
->
_sour
, "wb")=
NULL
) {

1092 
t
 = 
	`__os_g_o
();

1093 
	`__db_r
(
dbv
, 
t
, "%s", 
t
->
_sour
);

1094 
r
;

1101 
dim
 = 
t
->
_dim
;

1102 
keyno
 = 1;; ++keyno) {

1103 
t
 = 
	`__db_g
(
dbp
, 
NULL
, &
key
, &
da
, 0)) {

1105 i(
da
.
size
 != 0 &&

1106 
	`fwre
(
da
.da, 1, da.
size
, 

) != data.size)

1107 
wre_r
;

1109 
DB_KEYEMPTY
:

1110 i(
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
)) {

1111 i(
d
 =
NULL
) {

1112 i((
t
 = 
	`__os_mloc
(

1113 
dbv
, 
t
->
_n
, &
d
)) != 0)

1114 
r
;

1115 
	`memt
(
d
, 
t
->
_d
,->
_n
);

1117 i(
	`fwre
(
d
, 1, 
t
->
_n
, 

) !=->re_len)

1118 
wre_r
;

1121 
DB_NOTFOUND
:

1122 
t
 = 0;

1123 
de
;

1125 
r
;

1127 i(!
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
) &&

1128 
	`fwre
(&
dim
, 1, 1, 

) != 1) {

1129 
wre_r
: 
t
 = 
	`__os_g_o
();

1130 
	`__db_r
(
dbv
, 
t
,

1131 "%s: wredbackg fe", 
t
->
_sour
);

1132 
r
;

1136 
r
:

1137 
de
:

1138 i(

 !
NULL
 && 
	`fo
(fp) != 0) {

1139 
t_t
 = 
	`__os_g_o
();

1140 
	`__db_r
(
dbv
, 
t_t
, "%s", 
t
->
_sour
);

1141 i(
t
 == 0)

1142 
t
 = 
t_t
;

1146 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

1147 
t
 = 
t_t
;

1150 i(
da
.d!
NULL
)

1151 
	`__os_u
(
dbv
, 
da
.data);

1152 i(
d
 !
NULL
)

1153 
	`__os_
(
dbv
, 
d
);

1155 i(
t
 == 0)

1156 
t
->
_modifd
 = 0;

1158  (
t
);

1159 
	}
}

1166 
	$__m_d
(
dbc
, 
t
)

1167 
DBC
 *
dbc
;

1168 
db_o_t
 
t
;

1170 
BTREE
 *
t
;

1171 
DB
 *
dbp
;

1172 
DBT
 
da
, *
rda
;

1173 
db_o_t
 
o
;

1174 
size_t
 
n
;

1175 
ch
, 
t
, 
was_modifd
;

1177 
t
 = 
dbc
->
dbp
->
bt_
;

1178 
dbp
 = 
dbc
->dbp;

1179 
was_modifd
 = 
t
->
_modifd
;

1181 i((
t
 = 
	`__bam_ecs
(
dbc
, &
o
)) != 0)

1182  (
t
);

1189 
n
 = 
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
? 
t
->
_n
 : 256;

1190 
rda
 = &
dbc
->
my_rkey
;

1191 i(
rda
->
un
 < 
n
) {

1192 i((
t
 = 
	`__os_loc
(

1193 
dbp
->
dbv
, 
n
, &
rda
->
da
)) != 0) {

1194 
rda
->
un
 = 0;

1195 
rda
->
da
 = 
NULL
;

1196  (
t
);

1198 
rda
->
un
 = (
u_t32_t
)
n
;

1201 
	`memt
(&
da
, 0, (data));

1202 
o
 < 
t
) {

1203 
da
.d
rda
->data;

1204 
da
.
size
 = 0;

1205 i(
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
))

1206 
n
 = 
t
->
_n
;en > 0; --len) {

1207 i((
ch
 = 
	`fgc
(
t
->
_
)=
EOF
) {

1208 i(
da
.
size
 == 0)

1209 
eof
;

1212 ((
u_t8_t
 *)
da
.da)[da.
size
++] = 
ch
;

1216 i((
ch
 = 
	`fgc
(
t
->
_
)=
EOF
) {

1217 i(
da
.
size
 == 0)

1218 
eof
;

1221 i(
ch
 =
t
->
_dim
)

1224 ((
u_t8_t
 *)
da
.da)[da.
size
++] = 
ch
;

1225 i(
da
.
size
 =
rda
->
un
) {

1226 i((
t
 = 
	`__os_loc
(
dbp
->
dbv
,

1227 
rda
->
un
 *= 2,

1228 &
rda
->
da
)) != 0) {

1229 
rda
->
un
 = 0;

1230 
rda
->
da
 = 
NULL
;

1231  (
t
);

1233 
da
.d
rda
->data;

1244 i(
t
->
_ϡ
 >
o
) {

1245 ++
o
;

1246 i((
t
 = 
	`__m_add
(
dbc
, &
o
, &
da
, 0, 0)) != 0)

1247 
r
;

1249 ++
t
->
_ϡ
;

1253 
eof
: 
t
->
_eof
 = 1;

1254 
t
 = 
DB_NOTFOUND
;

1256 
r
: i(!
was_modifd
)

1257 
t
->
_modifd
 = 0;

1259  (
t
);

1260 
	}
}

1267 
	$__m_add
(
dbc
, 

, 
da
, 
ags
, 
bi_ags
)

1268 
DBC
 *
dbc
;

1269 
db_o_t
 *

;

1270 
DBT
 *
da
;

1271 
u_t32_t
 
ags
, 
bi_ags
;

1273 
BTREE_CURSOR
 *

;

1274 
exa
, 
t
, 
ack
, 
t_t
;

1276 

 = (
BTREE_CURSOR
 *)
dbc
->

;

1278 
y
:

1279 i((
t
 = 
	`__bam_rch
(
dbc
, 

,

1280 
SR_INSERT
 | (
ags
 =
DB_APPEND
 ? 
SR_APPEND
 : 0), 1, &
exa
)) != 0)

1281  (
t
);

1282 
ack
 = 1;

1285 
	`STACK_TO_CURSOR
(

, 
t
);

1286 i(
t
 != 0)

1287 
r
;

1289 i(
exa
 && 
ags
 =
DB_NOOVERWRITE
 && !
	`CD_ISSET
(

) &&

1290 !
	`B_DISSET
(
	`GET_BKEYDATA
(
dbc
->
dbp
, 

->
ge
, cp->
dx
)->
ty
)) {

1291 
t
 = 
DB_KEYEXIST
;

1292 
r
;

1299 i(
ags
 =
DB_APPEND
 && 
dbc
->
dbp
->
db_nd_o
 !
NULL
 &&

1300 (
t
 = 
dbc
->
dbp
->
	`db_nd_o
(dbc->dbp, 
da
, *

)) != 0)

1301 
r
;

1310 
t
 = 
	`__bam_iem
(
dbc
,

1311 
NULL
, 
da
, 
exa
 ? 
DB_CURRENT
 : 
DB_BEFORE
, 
bi_ags
)) {

1329 
DB_NEEDSPLIT
:

1331 ()
	`__bam_kl
(
dbc
, 
STK_CLRDBC
);

1332 
ack
 = 0;

1334 i((
t
 = 
	`__bam_l
(
dbc
, 

, 
NULL
)) != 0)

1335 
r
;

1337 
y
;

1340 
r
;

1343 
r
: i(
ack
 && (
t_t
 = 
	`__bam_kl
(
dbc
, 
STK_CLRDBC
)!0 && 
t
 == 0)

1344 
t
 = 
t_t
;

1346  (
t
);

1347 
	}
}

	@../btree/bt_rsearch.c

41 
	~"db_cfig.h
"

43 
	~"db_t.h
"

44 
	~"dbc/db_ge.h
"

45 
	~"dbc/b.h
"

46 
	~"dbc/lock.h
"

47 
	~"dbc/mp.h
"

56 
	$__bam_rch
(
dbc
, 

, 
ags
, 

, 
exap
)

57 
DBC
 *
dbc
;

58 
db_o_t
 *

;

59 
u_t32_t
 
ags
;

60 

, *
exap
;

62 
BINTERNAL
 *
bi
;

63 
BTREE_CURSOR
 *

;

64 
DB
 *
dbp
;

65 
DB_LOCK
 
lock
;

66 
DB_MPOOLFILE
 *
mpf
;

67 
PAGE
 *
h
;

68 
RINTERNAL
 *
ri
;

69 
db_dx_t
 
adju
, 
dofft
, 
dx
, 
t
;

70 
db_lockmode_t
 
lock_mode
;

71 
db_pgno_t
 
pg
;

72 
db_o_t
 
o
, 
t_o
, 
tٮ
;

73 
t
, 
ack
, 
t_t
;

75 
dbp
 = 
dbc
->dbp;

76 
mpf
 = 
dbp
->mpf;

77 

 = (
BTREE_CURSOR
 *)
dbc
->

;

78 
h
 = 
NULL
;

80 
	`BT_STK_CLR
(

);

98 i((
t
 = 
	`__bam_g_ro
(
dbc
, 

->
ro
, 

, 
ags
, &
ack
)) != 0)

99  (
t
);

100 
lock_mode
 = 

->
c
->lock_mode;

101 
lock
 = 

->
c
->lock;

102 
h
 = 

->
c
->
ge
;

104 
	`BT_STK_CLR
(

);

117 
tٮ
 = 
	`RE_NREC
(
h
);

118 i(
	`LF_ISSET
(
SR_APPEND
)) {

119 *
exap
 = 0;

120 *

 = 
o
 = 
tٮ
 + 1;

122 
o
 = *

;

123 i(
o
 <
tٮ
)

124 *
exap
 = 1;

126 *
exap
 = 0;

127 i(!
	`LF_ISSET
(
SR_PAST_EOF
|| 
o
 > 
tٮ
 + 1) {

136 
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

137 i((
t_t
 =

138 
	`__TLPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

139 
t
 = 
t_t
;

140  (
t
 =0 ? 
DB_NOTFOUND
 :et);

151 
tٮ
 = 0;;) {

152 
	`TYPE
(
h
)) {

153 
P_LBTREE
:

154 
P_LDUP
:

155 
o
 -
tٮ
;

160 i(
	`TYPE
(
h
=
P_LBTREE
) {

161 
adju
 = 
P_INDX
;

162 
dofft
 = 
O_INDX
;

164 
adju
 = 
O_INDX
;

165 
dofft
 = 0;

167 
t_o
 = 0, 
dx
 = 0;; indx +
adju
) {

168 i(
dx
 >
	`NUM_ENT
(
h
)) {

169 *
exap
 = 0;

170 i(!
	`LF_ISSET
(
SR_PAST_EOF
) ||

171 
o
 > 
t_o
 + 1) {

172 
t
 = 
	`__memp_ut
(
mpf
,

173 
h
, 
dbc
->
iܙy
);

174 
h
 = 
NULL
;

175 i((
t_t
 = 
	`__TLPUT
(
dbc
,

176 
lock
)!0 && 
t
 == 0)

177 
t
 = 
t_t
;

178 i(
t
 == 0)

179 
t
 = 
DB_NOTFOUND
;

180 
r
;

183 i(!
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 
h
,

184 
dx
 + 
dofft
)->
ty
) &&

185 ++
t_o
 =
o
)

190 
	`BT_STK_ENTER
(
dbp
->
dbv
,

191 

, 
h
, 
dx
, 
lock
, 
lock_mode
, 
t
);

192 i(
t
 != 0)

193 
r
;

195 
P_IBTREE
:

196 
dx
 = 0, 
t
 = 
	`NUM_ENT
(
h
);;) {

197 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 
dx
);

198 i(++
dx
 =
t
 || 
tٮ
 + 
bi
->
ecs
 >
o
)

200 
tٮ
 +
bi
->
ecs
;

202 
pg
 = 
bi
->
pgno
;

204 
P_LRECNO
:

205 
o
 -
tٮ
;

208 --
o
;

209 
	`BT_STK_ENTER
(
dbp
->
dbv
,

210 

, 
h
, 
o
, 
lock
, 
lock_mode
, 
t
);

211 i(
t
 != 0)

212 
r
;

214 
P_IRECNO
:

215 
dx
 = 0, 
t
 = 
	`NUM_ENT
(
h
);;) {

216 
ri
 = 
	`GET_RINTERNAL
(
dbp
, 
h
, 
dx
);

217 i(++
dx
 =
t
 || 
tٮ
 + 
ri
->
ecs
 >
o
)

219 
tٮ
 +
ri
->
ecs
;

221 
pg
 = 
ri
->
pgno
;

224  (
	`__db_pgfmt
(
dbp
->
dbv
, 
h
->
pgno
));

226 --
dx
;

229 i(

 =
	`LEVEL
(
h
)) {

230 
	`BT_STK_ENTER
(
dbp
->
dbv
,

231 

, 
h
, 
dx
, 
lock
, 
lock_mode
, 
t
);

232 i(
t
 != 0)

233 
r
;

236 i(
ack
) {

237 
	`BT_STK_PUSH
(
dbp
->
dbv
,

238 

, 
h
, 
dx
, 
lock
, 
lock_mode
, 
t
);

239 i(
t
 != 0)

240 
r
;

241 
h
 = 
NULL
;

243 
lock_mode
 = 
DB_LOCK_WRITE
;

244 i((
t
 =

245 
	`__db_lg
(
dbc
, 0, 
pg
, 
lock_mode
, 0, &
lock
)) != 0)

246 
r
;

253 i((
	`LF_ISSET
(
SR_PARENT
) &&

254 (
u_t8_t
)(

 + 1>(u_t8_t)(
	`LEVEL
(
h
) - 1)) ||

255 (
	`LEVEL
(
h
- 1=
LEAFLEVEL
)

256 
ack
 = 1;

258 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)) != 0)

259 
r
;

260 
h
 = 
NULL
;

262 
lock_mode
 = 
ack
 &&

263 
	`LF_ISSET
(
SR_WRITE
? 
DB_LOCK_WRITE
 : 
DB_LOCK_READ
;

264 i((
t
 = 
	`__db_lg
(
dbc
,

265 
LCK_COUPLE_ALWAYS
, 
pg
, 
lock_mode
, 0, &
lock
)) != 0) {

271 ()
	`__LPUT
(
dbc
, 
lock
);

272 
r
;

276 i((
t
 = 
	`__memp_fg
(
mpf
, &
pg
, 
dbc
->
txn
, 0, &
h
)) != 0)

277 
r
;

281 
r
: i(
h
 !
NULL
 &&

282 (
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

283 
t
 = 
t_t
;

285 
	`BT_STK_POP
(

);

286 
	`__bam_kl
(
dbc
, 0);

288  (
t
);

289 
	}
}

298 
	$__bam_adju
(
dbc
, 
adju
)

299 
DBC
 *
dbc
;

300 
t32_t
 
adju
;

302 
BTREE_CURSOR
 *

;

303 
DB
 *
dbp
;

304 
DB_MPOOLFILE
 *
mpf
;

305 
EPG
 *
g
;

306 
PAGE
 *
h
;

307 
db_pgno_t
 
ro_pgno
;

308 
t
;

310 
dbp
 = 
dbc
->dbp;

311 
mpf
 = 
dbp
->mpf;

312 

 = (
BTREE_CURSOR
 *)
dbc
->

;

313 
ro_pgno
 = 

->
ro
;

316 
g
 = 

->

;pg <->
c
; ++epg) {

317 
h
 = 
g
->
ge
;

318 i(
	`TYPE
(
h
=
P_IBTREE
 || TYPE(h=
P_IRECNO
) {

319 i((
t
 = 
	`__memp_dty
(
mpf
,

320 &
h
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

321  (
t
);

322 
g
->
ge
 = 
h
;

323 i(
	`DBC_LOGGING
(
dbc
)) {

324 i((
t
 = 
	`__bam_dju_log
(
dbp
, 
dbc
->
txn
,

325 &
	`LSN
(
h
), 0, 
	`PGNO
(h), &LSN(h),

326 (
u_t32_t
)
g
->
dx
, 
adju
,

327 
	`PGNO
(
h
=
ro_pgno
 ?

328 
CAD_UPDATEROOT
 : 0)) != 0)

329  (
t
);

331 
	`LSN_NOT_LOGGED
(
	`LSN
(
h
));

333 i(
	`TYPE
(
h
=
P_IBTREE
)

334 
	`GET_BINTERNAL
(
dbp
, 
h
, 
g
->
dx
)->
ecs
 +=

335 
adju
;

337 
	`GET_RINTERNAL
(
dbp
, 
h
, 
g
->
dx
)->
ecs
 +=

338 
adju
;

340 i(
	`PGNO
(
h
=
ro_pgno
)

341 
	`RE_NREC_ADJ
(
h
, 
adju
);

345 
	}
}

354 
	$__bam_ecs
(
dbc
, 
p
)

355 
DBC
 *
dbc
;

356 
db_o_t
 *
p
;

358 
DB
 *
dbp
;

359 
DB_LOCK
 
lock
;

360 
DB_MPOOLFILE
 *
mpf
;

361 
PAGE
 *
h
;

362 
db_pgno_t
 
pgno
;

363 
t
, 
t_t
;

365 
dbp
 = 
dbc
->dbp;

366 
mpf
 = 
dbp
->mpf;

368 
pgno
 = 
dbc
->

->
ro
;

369 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
pgno
, 
DB_LOCK_READ
, 0, &
lock
)) != 0)

370  (
t
);

371 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
, 0, &
h
)) != 0)

372  (
t
);

374 *
p
 = 
	`RE_NREC
(
h
);

376 
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

377 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

378 
t
 = 
t_t
;

380  (
t
);

381 
	}
}

389 
db_o_t


390 
	$__bam_tٮ
(
dbp
, 
h
)

391 
DB
 *
dbp
;

392 
PAGE
 *
h
;

394 
db_o_t
 
ecs
;

395 
db_dx_t
 
dx
, 
t
;

397 
ecs
 = 0;

398 
t
 = 
	`NUM_ENT
(
h
);

400 
	`TYPE
(
h
)) {

401 
P_LBTREE
:

403 
dx
 = 0; indx < 
t
; indx +
P_INDX
)

404 i(!
	`B_DISSET
(

405 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
 + 
O_INDX
)->
ty
))

406 ++
ecs
;

408 
P_LDUP
:

410 
dx
 = 0; indx < 
t
; indx +
O_INDX
)

411 i(!
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
)->
ty
))

412 ++
ecs
;

414 
P_IBTREE
:

415 
dx
 = 0; indx < 
t
; indx +
O_INDX
)

416 
ecs
 +
	`GET_BINTERNAL
(
dbp
, 
h
, 
dx
)->nrecs;

418 
P_LRECNO
:

419 
ecs
 = 
	`NUM_ENT
(
h
);

421 
P_IRECNO
:

422 
dx
 = 0; indx < 
t
; indx +
O_INDX
)

423 
ecs
 +
	`GET_RINTERNAL
(
dbp
, 
h
, 
dx
)->nrecs;

427  (
ecs
);

428 
	}
}

	@../btree/bt_search.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/b.h
"

49 
	~"dbc/lock.h
"

50 
	~"dbc/mp.h
"

60 
	$__bam_g_ro
(
dbc
, 
pg
, 
ev
, 
ags
, 
ack
)

61 
DBC
 *
dbc
;

62 
db_pgno_t
 
pg
;

63 
ev
;

64 
u_t32_t
 
ags
;

65 *
ack
;

67 
BTREE_CURSOR
 *

;

68 
DB
 *
dbp
;

69 
DB_LOCK
 
lock
;

70 
DB_MPOOLFILE
 *
mpf
;

71 
PAGE
 *
h
;

72 
db_lockmode_t
 
lock_mode
;

73 
t
, 
t_t
;

75 
dbp
 = 
dbc
->dbp;

76 
mpf
 = 
dbp
->mpf;

77 

 = (
BTREE_CURSOR
 *)
dbc
->

;

87 
y_aga
:

88 *
ack
 = 
	`LF_ISSET
(
SR_STACK
) &&

89 (
dbc
->
dbty
 =
DB_RECNO
 || 
	`F_ISSET
(

, 
C_RECNUM
));

90 
lock_mode
 = 
DB_LOCK_READ
;

91 i(*
ack
 ||

92 
	`LF_ISSET
(
SR_DEL
|| (LF_ISSET(
SR_NEXT
&& LF_ISSET(
SR_WRITE
)))

93 
lock_mode
 = 
DB_LOCK_WRITE
;

94 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
pg
, 
lock_mode
, 0, &
lock
)) != 0)

95  (
t
);

96 i((
t
 = 
	`__memp_fg
(
mpf
, &
pg
, 
dbc
->
txn
, 0, &
h
)) != 0) {

98 ()
	`__LPUT
(
dbc
, 
lock
);

99  (
t
);

110 i(!*
ack
 &&

111 ((
	`LF_ISSET
(
SR_PARENT
&& (
u_t8_t
)(
ev
 + 1>
	`LEVEL
(
h
)) ||

112 (
	`LF_ISSET
(
SR_WRITE
&& 
	`LEVEL
(
h
=
LEAFLEVEL
) ||

113 (
	`LF_ISSET
(
SR_START
&& 
ev
 =
	`LEVEL
(
h
)))) {

114 i(!
	`STD_LOCKING
(
dbc
))

115 
no_lock
;

116 
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

117 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

118 
t
 = 
t_t
;

119 i(
t
 != 0)

120  (
t
);

121 
lock_mode
 = 
DB_LOCK_WRITE
;

122 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
pg
, 
lock_mode
, 0, &
lock
)) != 0)

123  (
t
);

124 i((
t
 = 
	`__memp_fg
(
mpf
, &
pg
, 
dbc
->
txn
, 0, &
h
)) != 0) {

126 ()
	`__LPUT
(
dbc
, 
lock
);

127  (
t
);

129 i(!((
	`LF_ISSET
(
SR_PARENT
) &&

130 (
u_t8_t
)(
ev
 + 1>
	`LEVEL
(
h
)) ||

131 (
	`LF_ISSET
(
SR_WRITE
&& 
	`LEVEL
(
h
=
LEAFLEVEL
) ||

132 (
	`LF_ISSET
(
SR_START
&& 
ev
 =
	`LEVEL
(
h
)))) {

134 
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

135 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

136 
t
 = 
t_t
;

137 i(
t
 != 0)

138  (
t
);

139 
y_aga
;

141 
no_lock
: *
ack
 = 1;

143 
	`BT_STK_ENTER
(
dbp
->
dbv
, 

, 
h
, 0, 
lock
, 
lock_mode
, 
t
);

145  (
t
);

146 
	}
}

156 
	$__bam_ch
(
dbc
, 
ro_pgno
, 
key
, 
ags
, 
ev
, 

, 
exap
)

157 
DBC
 *
dbc
;

158 
db_pgno_t
 
ro_pgno
;

159 cڡ 
DBT
 *
key
;

160 
u_t32_t
 
ags
;

161 
ev
, *
exap
;

162 
db_o_t
 *

;

164 
BTREE
 *
t
;

165 
BTREE_CURSOR
 *

;

166 
DB
 *
dbp
;

167 
DB_ENV
 *
dbv
;

168 
DB_LOCK
 
lock
;

169 
DB_MPOOLFILE
 *
mpf
;

170 
PAGE
 *
h
;

171 
db_dx_t
 
ba
, 
i
, 
dx
, *
p
, 
lim
;

172 
db_lockmode_t
 
lock_mode
;

173 
db_pgno_t
 
pg
;

174 
db_o_t
 
o
;

175 
adju
, 
cmp
, 
dofft
, 
t
, 
ack
, 
t_t
;

176 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

178 
dbp
 = 
dbc
->dbp;

179 
dbv
 = 
dbp
->dbenv;

180 
mpf
 = 
dbp
->mpf;

181 

 = (
BTREE_CURSOR
 *)
dbc
->

;

182 
h
 = 
NULL
;

183 
t
 = 
dbp
->
bt_
;

184 
o
 = 0;

186 
	`BT_STK_CLR
(

);

197 i(
ro_pgno
 =
PGNO_INVALID
)

198 
ro_pgno
 = 

->
ro
;

199 i((
t
 = 
	`__bam_g_ro
(
dbc
, 
ro_pgno
, 
ev
, 
ags
, &
ack
)) != 0)

200  (
t
);

201 
lock_mode
 = 

->
c
->lock_mode;

202 
lock
 = 

->
c
->lock;

203 
h
 = 

->
c
->
ge
;

205 
	`BT_STK_CLR
(

);

208 
func
 = 
	`F_ISSET
(
dbc
, 
DBC_OPD
) ?

209 (
dbp
->
dup_com
 =
NULL
 ? 
__bam_defcmp
 : dbp->dup_compare) :

210 
t
->
bt_com
;

213 
p
 = 
	`P_INP
(
dbp
, 
h
);

214 
adju
 = 
	`TYPE
(
h
=
P_LBTREE
 ? 
P_INDX
 : 
O_INDX
;

215 i(
	`LF_ISSET
(
SR_MIN
 | 
SR_MAX
)) {

216 i(
	`LF_ISSET
(
SR_MIN
|| 
	`NUM_ENT
(
h
) == 0)

217 
dx
 = 0;

218 i(
	`TYPE
(
h
=
P_LBTREE
)

219 
dx
 = 
	`NUM_ENT
(
h
) - 2;

221 
dx
 = 
	`NUM_ENT
(
h
) - 1;

223 i(
	`LEVEL
(
h
=
LEAFLEVEL
 ||

224 (!
	`LF_ISSET
(
SR_START
&& 
	`LEVEL
(
h
=
ev
)) {

225 i(
	`LF_ISSET
(
SR_NEXT
))

226 
g_xt
;

227 
found
;

229 
xt
;

238 
	`DB_BINARY_SEARCH_FOR
(
ba
, 
lim
, 
h
, 
adju
) {

239 
	`DB_BINARY_SEARCH_INCR
(
dx
, 
ba
, 
lim
, 
adju
);

240 i((
t
 = 
	`__bam_cmp
(
dbp
, 
dbc
->
txn
, 
key
,

241 
h
, 
dx
, 
func
, &
cmp
)) != 0)

242 
r
;

243 i(
cmp
 == 0) {

244 i(
	`LEVEL
(
h
=
LEAFLEVEL
 ||

245 (!
	`LF_ISSET
(
SR_START
) &&

246 
	`LEVEL
(
h
=
ev
)) {

247 i(
	`LF_ISSET
(
SR_NEXT
))

248 
g_xt
;

249 
found
;

251 
xt
;

253 i(
cmp
 > 0)

254 
	`DB_BINARY_SEARCH_SHIFT_BASE
(
dx
, 
ba
,

255 
lim
, 
adju
);

266 i(
	`LEVEL
(
h
=
LEAFLEVEL
 ||

267 (!
	`LF_ISSET
(
SR_START
&& 
	`LEVEL
(
h
=
ev
)) {

268 *
exap
 = 0;

270 i(
	`LF_ISSET
(
SR_EXACT
)) {

271 
t
 = 
DB_NOTFOUND
;

272 
r
;

275 i(
	`LF_ISSET
(
SR_STK_ONLY
)) {

276 
	`BT_STK_NUM
(
dbv
, 

, 
h
, 
ba
, 
t
);

277 i((
t_t
 =

278 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

279 
t
 = 
t_t
;

280 i((
t_t
 = 
	`__memp_ut
(
mpf
,

281 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

282 
t
 = 
t_t
;

283  (
t
);

285 i(
	`LF_ISSET
(
SR_NEXT
)) {

286 
g_xt
:

290 i(
	`PGNO
(
h
=
ro_pgno
) {

291 
t
 = 
DB_NOTFOUND
;

292 
r
;

300 i((
t
 = 
	`__LPUT
(
dbc
, 
lock
)) != 0)

301 
r
;

302 i((
t
 =

303 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)) != 0)

304 
r
;

305 
h
 = 
NULL
;

306 
	`LF_SET
(
SR_MIN
);

307 
	`LF_CLR
(
SR_NEXT
);

308 
dx
 = 

->

->indx + 1;

309 i(
dx
 =
	`NUM_ENT
(

->

->
ge
)) {

310 
t
 = 
DB_NOTFOUND
;

311 

->
c
++;

312 
r
;

314 
h
 = 

->

->
ge
;

315 

->

->
ge
 = 
NULL
;

316 
lock
 = 

->

->lock;

317 
	`LOCK_INIT
(

->

->
lock
);

318 i((
t
 = 
	`__bam_kl
(
dbc
, 
STK_NOLOCK
)) != 0)

319 
r
;

320 
ack
 = 1;

321 
xt
;

332 i(
	`LF_ISSET
(
SR_DEL
&& 

->
c
 =->

)

333 

->
c
++;

334 
	`BT_STK_ENTER
(
dbv
, 

, 
h
, 
ba
, 
lock
, 
lock_mode
, 
t
);

335 i(
t
 != 0)

336 
r
;

346 
dx
 = 
ba
 > 0 ? ba - 
O_INDX
 : base;

352 
xt
: i(

 !
NULL
)

353 
i
 = 0; i < 
dx
; ++i)

354 
o
 +
	`GET_BINTERNAL
(
dbp
, 
h
, 
i
)->
ecs
;

356 
pg
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 
dx
)->
pgno
;

359 i(
	`LF_ISSET
(
SR_START
&& 
ev
 =
	`LEVEL
(
h
))

360 
ack
 = 1;

362 i(
	`LF_ISSET
(
SR_STK_ONLY
)) {

363 i(
ev
 =
	`LEVEL
(
h
)) {

364 
	`BT_STK_NUM
(
dbv
, 

, 
h
, 
dx
, 
t
);

365 i((
t_t
 =

366 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

367 
t
 = 
t_t
;

368 i((
t_t
 = 
	`__memp_ut
(
mpf
,

369 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

370 
t
 = 
t_t
;

371  (
t
);

373 
	`BT_STK_NUMPUSH
(
dbv
, 

, 
h
, 
dx
, 
t
);

374 ()
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

375 
h
 = 
NULL
;

376 i((
t
 = 
	`__db_lg
(
dbc
,

377 
LCK_COUPLE_ALWAYS
, 
pg
, 
lock_mode
, 0, &
lock
)) != 0) {

383 ()
	`__LPUT
(
dbc
, 
lock
);

384  (
t
);

386 } i(
ack
) {

388 i(
	`LF_ISSET
(
SR_PARENT
&& 
ev
 =
	`LEVEL
(
h
)) {

389 
	`BT_STK_ENTER
(
dbv
,

390 

, 
h
, 
dx
, 
lock
, 
lock_mode
, 
t
);

391 i(
t
 != 0)

392 
r
;

395 i(
	`LF_ISSET
(
SR_DEL
&& 
	`NUM_ENT
(
h
) > 1) {

400 

->
c
--;

401 i((
t
 = 
	`__bam_kl
(
dbc
, 
STK_NOLOCK
)) != 0)

402 
r
;

403 
ack
 = 0;

404 
do_d
;

406 
	`BT_STK_PUSH
(
dbv
,

407 

, 
h
, 
dx
, 
lock
, 
lock_mode
, 
t
);

408 i(
t
 != 0)

409 
r
;

410 
h
 = 
NULL
;

412 
lock_mode
 = 
DB_LOCK_WRITE
;

413 i((
t
 =

414 
	`__db_lg
(
dbc
, 0, 
pg
, 
lock_mode
, 0, &
lock
)) != 0)

415 
r
;

422 i((
	`LF_ISSET
(
SR_PARENT
) &&

423 (
u_t8_t
)(
ev
 + 1>(
	`LEVEL
(
h
) - 1)) ||

424 (
	`LEVEL
(
h
- 1=
LEAFLEVEL
)

425 
ack
 = 1;

439 i(!
	`LF_ISSET
(
SR_DEL
 | 
SR_NEXT
)) {

440 i((
t
 =

441 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)) != 0)

442 
r
;

443 
lock_xt
;

446 i((
	`LF_ISSET
(
SR_DEL
&& 
	`NUM_ENT
(
h
) == 1)) {

447 
ack
 = 1;

448 
	`LF_SET
(
SR_WRITE
);

450 

->
c
++;

452 
	`BT_STK_PUSH
(
dbv
, 

, 
h
,

453 
dx
, 
lock
, 
lock_mode
, 
t
);

454 i(
t
 != 0)

455 
r
;

456 
	`LOCK_INIT
(
lock
);

467 
do_d
: i(

->
c
->
ge
 !
NULL
) {

468 i(
	`LF_ISSET
(
SR_NEXT
) &&

469 
dx
 =
	`NUM_ENT
(
h
) - 1)

470 

->
c
++;

471 i((
t
 =

472 
	`__bam_kl
(
dbc
, 
STK_NOLOCK
)) != 0)

473 
r
;

476 
	`BT_STK_ENTER
(
dbv
, 

,

477 
h
, 
dx
, 
lock
, 
lock_mode
, 
t
);

478 i(
t
 != 0)

479 
r
;

480 
	`LOCK_INIT
(
lock
);

483 
lock_xt
: 
h
 = 
NULL
;

485 i(
ack
 && 
	`LF_ISSET
(
SR_WRITE
))

486 
lock_mode
 = 
DB_LOCK_WRITE
;

487 i((
t
 = 
	`__db_lg
(
dbc
,

488 
LCK_COUPLE_ALWAYS
, 
pg
, 
lock_mode
, 0, &
lock
)) != 0) {

494 ()
	`__LPUT
(
dbc
, 
lock
);

495 i(
	`LF_ISSET
(
SR_DEL
 | 
SR_NEXT
))

496 

->
c
++;

497 
r
;

500 i((
t
 = 
	`__memp_fg
(
mpf
, &
pg
, 
dbc
->
txn
, 0, &
h
)) != 0)

501 
r
;

505 
found
: *
exap
 = 1;

517 i(
	`TYPE
(
h
=
P_LBTREE
 && 
	`NUM_ENT
(h> 
P_INDX
) {

518 i(
	`LF_ISSET
(
SR_DUPLAST
))

519 
dx
 < (
db_dx_t
)(
	`NUM_ENT
(
h
- 
P_INDX
) &&

520 
p
[
dx
] =p[dx + 
P_INDX
])

521 
dx
 +
P_INDX
;

522 i(
	`LF_ISSET
(
SR_DUPFIRST
))

523 
dx
 > 0 &&

524 
p
[
dx
] =p[dx - 
P_INDX
])

525 
dx
 -
P_INDX
;

534 
	`DB_ASSERT
(
dbv
, 

 =
NULL
 || 
	`LF_ISSET
(
SR_DELNO
));

535 i(
	`LF_ISSET
(
SR_DELNO
)) {

536 
dofft
 = 
	`TYPE
(
h
=
P_LBTREE
 ? 
O_INDX
 : 0;

537 i(
	`LF_ISSET
(
SR_DUPLAST
))

538 
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
,

539 
h
, 
dx
 + 
dofft
)->
ty
) && indx > 0 &&

540 
p
[
dx
] =p[dx - 
adju
])

541 
dx
 -
adju
;

543 
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
,

544 
h
, 
dx
 + 
dofft
)->
ty
) &&

545 
dx
 < (
db_dx_t
)(
	`NUM_ENT
(
h
- 
adju
) &&

546 
p
[
dx
] =p[dx + 
adju
])

547 
dx
 +
adju
;

553 i(
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
 + 
dofft
)->
ty
)) {

554 
t
 = 
DB_NOTFOUND
;

555 
r
;

564 i(

 !
NULL
) {

565 
	`DB_ASSERT
(
dbv
, 
	`TYPE
(
h
=
P_LBTREE
);

567 
i
 = 0; i < 
dx
; i +
P_INDX
)

568 i(!
	`B_DISSET
(

569 
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
 + 
O_INDX
)->
ty
))

570 ++
o
;

573 *

 = 
o
 + 1;

577 i(
	`LF_ISSET
(
SR_STK_ONLY
)) {

578 
	`BT_STK_NUM
(
dbv
, 

, 
h
, 
dx
, 
t
);

579 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

580 
t
 = 
t_t
;

581 i((
t_t
 =

582 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

583 
t
 = 
t_t
;

585 i(
	`LF_ISSET
(
SR_DEL
&& 

->
c
 =->

)

586 

->
c
++;

587 
	`BT_STK_ENTER
(
dbv
, 

, 
h
, 
dx
, 
lock
, 
lock_mode
, 
t
);

589 i(
t
 != 0)

590 
r
;

594 
r
: i(
h
 !
NULL
 && (
t_t
 =

595 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

596 
t
 = 
t_t
;

599 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

600 
t
 = 
t_t
;

602 
	`BT_STK_POP
(

);

603 
	`__bam_kl
(
dbc
, 0);

605  (
t
);

606 
	}
}

615 
	$__bam_kl
(
dbc
, 
ags
)

616 
DBC
 *
dbc
;

617 
u_t32_t
 
ags
;

619 
BTREE_CURSOR
 *

;

620 
DB
 *
dbp
;

621 
DB_MPOOLFILE
 *
mpf
;

622 
EPG
 *
g
;

623 
t
, 
t_t
;

625 
dbp
 = 
dbc
->dbp;

626 
mpf
 = 
dbp
->mpf;

627 

 = (
BTREE_CURSOR
 *)
dbc
->

;

635 
t
 = 0, 
g
 = 

->

;pg <->
c
; ++epg) {

636 i(
g
->
ge
 !
NULL
) {

637 i(
	`LF_ISSET
(
STK_CLRDBC
&& 

->
ge
 =
g
->page) {

638 

->
ge
 = 
NULL
;

639 
	`LOCK_INIT
(

->
lock
);

641 i((
t_t
 = 
	`__memp_ut
(
mpf
,

642 
g
->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

643 
t
 = 
t_t
;

651 
g
->
ge
 = 
NULL
;

658 i(
	`LF_ISSET
(
STK_PGONLY
))

660 i(
	`LF_ISSET
(
STK_NOLOCK
)) {

661 i((
t_t
 = 
	`__LPUT
(
dbc
, 
g
->
lock
)!0 && 
t
 == 0)

662 
t
 = 
t_t
;

664 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
g
->
lock
)!0 && 
t
 == 0)

665 
t
 = 
t_t
;

669 i(!
	`LF_ISSET
(
STK_PGONLY
))

670 
	`BT_STK_CLR
(

);

672  (
t
);

673 
	}
}

682 
	$__bam_kgrow
(
dbv
, 

)

683 
DB_ENV
 *
dbv
;

684 
BTREE_CURSOR
 *

;

686 
EPG
 *
p
;

687 
size_t
 
s
;

688 
t
;

690 
s
 = 

->
e
 - cp->

;

692 i((
t
 = 
	`__os_oc
(
dbv
, 
s
 * 2, (
EPG
), &
p
)) != 0)

693  (
t
);

694 
	`memy
(
p
, 

->

, 
s
 * (
EPG
));

695 i(

->

 !->
ack
)

696 
	`__os_
(
dbv
, 

->

);

697 

->

 = 
p
;

698 

->
c
 = 
p
 + 
s
;

699 

->
e
 = 
p
 + 
s
 * 2;

701 
	}
}

	@../btree/bt_split.c

41 
	~"db_cfig.h
"

43 
	~"db_t.h
"

44 
	~"dbc/db_ge.h
"

45 
	~"dbc/lock.h
"

46 
	~"dbc/mp.h
"

47 
	~"dbc/b.h
"

49 
__bam_bro
 
__P
((
DBC
 *, 
PAGE
 *, 
u_t32_t
, PAGE *, PAGE *));

50 
__bam_ge
 
__P
((
DBC
 *, 
EPG
 *, EPG *));

51 
__bam_pl
 
__P
((
DBC
 *, 
EPG
 *, 
PAGE
 *, PAGE *, 
db_dx_t
 *));

52 
__bam_ro
 
__P
((
DBC
 *, 
EPG
 *));

53 
__m_ro
 
__P
((
DBC
 *, 
PAGE
 *, PAGE *, PAGE *));

62 
	$__bam_l
(
dbc
, 
g
, 
ro_pgn
)

63 
DBC
 *
dbc
;

64 *
g
;

65 
db_pgno_t
 *
ro_pgn
;

67 
BTREE_CURSOR
 *

;

68 um { 
UP
, 
DOWN
 } 
d
;

69 
db_pgno_t
 
ro_pgno
;

70 
exa
, 
v
, 
t
;

72 

 = (
BTREE_CURSOR
 *)
dbc
->

;

73 
ro_pgno
 = 

->
ro
;

102 
d
 = 
UP
, 
v
 = 
LEAFLEVEL
;; dir == UP ? ++level : --level) {

106 i((
t
 = (
dbc
->
dbty
 =
DB_BTREE
 ?

107 
	`__bam_ch
(
dbc
, 
PGNO_INVALID
,

108 
g
, 
SR_WRPAIR
, 
v
, 
NULL
, &
exa
) :

109 
	`__bam_rch
(
dbc
,

110 (
db_o_t
 *)
g
, 
SR_WRPAIR
, 
v
, &
exa
))) != 0)

113 i(
ro_pgn
 !
NULL
)

114 *
ro_pgn
 = 

->
c
[0].
ge
->
pgno
 =
ro_pgno
 ?

115 
ro_pgno
 : 

->
c
[-1].
ge
->
pgno
;

122 i(2 * 
	`B_MAXSIZEONPAGE
(

->
ovsize
)

123 <(
db_dx_t
)
	`P_FREESPACE
(
dbc
->
dbp
, 

->
c
[0].
ge
)) {

124 
	`__bam_kl
(
dbc
, 
STK_NOLOCK
);

127 
t
 = 

->
c
[0].
ge
->
pgno
 =
ro_pgno
 ?

128 
	`__bam_ro
(
dbc
, &

->
c
[0]) :

129 
	`__bam_ge
(
dbc
, &

->
c
[-1], &cp->csp[0]);

130 
	`BT_STK_CLR
(

);

132 
t
) {

135 i(
v
 =
LEAFLEVEL
)

139 i(
d
 =
UP
)

140 
d
 = 
DOWN
;

142 
DB_NEEDSPLIT
:

149 i(
d
 =
DOWN
)

150 
d
 = 
UP
;

153 
r
;

157 
r
: i(
ro_pgn
 !
NULL
)

158 *
ro_pgn
 = 

->
ro
;

159  (
t
);

160 
	}
}

167 
	$__bam_ro
(
dbc
, 

)

168 
DBC
 *
dbc
;

169 
EPG
 *

;

171 
DB
 *
dbp
;

172 
DBT
 
log_dbt
;

173 
DB_LSN
 
log_l
;

174 
DB_MPOOLFILE
 *
mpf
;

175 
PAGE
 *

, *

;

176 
db_dx_t
 
l
;

177 
u_t32_t
 
ags
;

178 
t
, 
t_t
;

180 
dbp
 = 
dbc
->dbp;

181 
mpf
 = 
dbp
->mpf;

182 

 = 

 = 
NULL
;

185 i(

->
ge
->
v
 >
MAXBTREELEVEL
) {

186 
	`__db_rx
(
dbp
->
dbv
,

187 "Tomy bevs: %d", 

->
ge
->
v
);

188 
t
 = 
ENOSPC
;

189 
r
;

192 i((
t
 = 
	`__memp_dty
(
mpf
,

193 &

->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

194 
r
;

197 i((
t
 = 
	`__db_w
(
dbc
, 
	`TYPE
(

->
ge
), &

)) != 0 ||

198 (
t
 = 
	`__db_w
(
dbc
, 
	`TYPE
(

->
ge
), &

)) != 0)

199 
r
;

200 
	`P_INIT
(

, 
dbp
->
pgsize
,p->
pgno
,

201 
PGNO_INVALID
, 
	`ISINTERNAL
(

->
ge
? PGNO_INVALID : 

->
pgno
,

202 

->
ge
->
v
, 
	`TYPE
(cp->page));

203 
	`P_INIT
(

, 
dbp
->
pgsize
,p->
pgno
,

204 
	`ISINTERNAL
(

->
ge
? 
PGNO_INVALID
 : 

->
pgno
, PGNO_INVALID,

205 

->
ge
->
v
, 
	`TYPE
(cp->page));

208 i((
t
 = 
	`__bam_pl
(
dbc
, 

, 

, 

, &
l
)) != 0)

209 
r
;

212 i(
	`DBC_LOGGING
(
dbc
)) {

213 
	`memt
(&
log_dbt
, 0, (log_dbt));

214 
log_dbt
.
da
 = 

->
ge
;

215 
log_dbt
.
size
 = 
dbp
->
pgsize
;

216 
	`ZERO_LSN
(
log_l
);

217 
ags
 = 
	`F_ISSET
(

218 (
BTREE_CURSOR
 *)
dbc
->

, 
C_RECNUM
? 
SPL_NRECS
 : 0;

219 i((
t
 = 
	`__bam_l_log
(
dbp
,

220 
dbc
->
txn
, &
	`LSN
(

->
ge
), 0, 
	`PGNO
(

), &LSNp), PGNO(

),

221 &
	`LSN
(

), (
u_t32_t
)
	`NUM_ENT
(

), 0, &
log_l
,

222 
dbc
->

->
ro
, &
log_dbt
, 
ags
)) != 0)

223 
r
;

225 
	`LSN_NOT_LOGGED
(
	`LSN
(

->
ge
));

226 
	`LSN
(

LSN(

->
ge
);

227 
	`LSN
(

LSN(

->
ge
);

230 i((
t
 = (
dbc
->
dbty
 =
DB_RECNO
 ?

231 
	`__m_ro
(
dbc
, 

->
ge
, 

, 

) :

232 
	`__bam_bro
(
dbc
, 

->
ge
, 
l
, 

, 

))) != 0)

233 
r
;

236 
t
 = 
	`__bam__l
(
dbc
, 

->
ge
->
pgno
, 

->pgno, 

->pgno, 
l
, 1);

239 
r
: i((
t_t
 =

240 
	`__memp_ut
(
mpf
, 

->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

241 
t
 = 
t_t
;

242 i((
t_t
 = 
	`__TLPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

243 
t
 = 
t_t
;

244 i(

 !
NULL
 &&

245 (
t_t
 = 
	`__memp_ut
(
mpf
, 

, 
dbc
->
iܙy
)!0 && 
t
 == 0)

246 
t
 = 
t_t
;

247 i(

 !
NULL
 &&

248 (
t_t
 = 
	`__memp_ut
(
mpf
, 

, 
dbc
->
iܙy
)!0 && 
t
 == 0)

249 
t
 = 
t_t
;

251  (
t
);

252 
	}
}

259 
	$__bam_ge
(
dbc
, 

, 

)

260 
DBC
 *
dbc
;

261 
EPG
 *

, *

;

263 
BTREE_CURSOR
 *
bc
;

264 
DBT
 
log_dbt
;

265 
DB_LSN
 
log_l
;

266 
DB
 *
dbp
;

267 
DB_LOCK
 
lock
, 
lock
;

268 
DB_MPOOLFILE
 *
mpf
;

269 
DB_LSN
 
ve_l
;

270 
PAGE
 *

, *

, *
loc_
, *

;

271 
db_dx_t
 
l
;

272 
u_t32_t
 
ags
;

273 
t
, 
t_t
;

275 
dbp
 = 
dbc
->dbp;

276 
mpf
 = 
dbp
->mpf;

277 
loc_
 = 

 = 

 = 

 = 
NULL
;

278 
	`LOCK_INIT
(
lock
);

279 
	`LOCK_INIT
(
lock
);

280 
t
 = -1;

302 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
, dbp->
pgsize
 * 2, &

)) != 0)

303 
r
;

304 
	`P_INIT
(

, 
dbp
->
pgsize
, 
	`PGNO
(

->
ge
),

305 
	`ISINTERNAL
(

->
ge
? 
PGNO_INVALID
 : 
	`PREV_PGNO
(cp->page),

306 
	`ISINTERNAL
(

->
ge
? 
PGNO_INVALID
 : 0,

307 

->
ge
->
v
, 
	`TYPE
(cp->page));

309 

 = (
PAGE
 *)((
u_t8_t
 *)

 + 
dbp
->
pgsize
);

310 
	`P_INIT
(

, 
dbp
->
pgsize
, 0,

311 
	`ISINTERNAL
(

->
ge
? 
PGNO_INVALID
 : 
	`PGNO
(cp->page),

312 
	`ISINTERNAL
(

->
ge
? 
PGNO_INVALID
 : 
	`NEXT_PGNO
(cp->page),

313 

->
ge
->
v
, 
	`TYPE
(cp->page));

325 i((
t
 = 
	`__bam_pl
(
dbc
, 

, 

, 

, &
l
)) != 0)

326 
r
;

334 i((
t
 = 
	`__bam_p
(
dbc
, 

, 
l
, 

, 

, 
BPI_SPACEONLY
)) != 0)

335 
r
;

348 i(
	`ISLEAF
(

->
ge
&& 
	`NEXT_PGNO
(->ge!
PGNO_INVALID
) {

349 i((
t
 = 
	`__db_lg
(
dbc
,

350 0, 
	`NEXT_PGNO
(

->
ge
), 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

351 
r
;

352 i((
t
 = 
	`__memp_fg
(
mpf
, &
	`NEXT_PGNO
(

->
ge
),

353 
dbc
->
txn
, 
DB_MPOOL_DIRTY
, &

)) != 0)

354 
r
;

361 i((
t
 = 
	`__db_w
(
dbc
, 
	`TYPE
(

->
ge
), &
loc_
)) != 0)

362 
r
;

373 i((
t
 = 
	`__db_lg
(
dbc
,

374 0, 
	`PGNO
(
loc_
), 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

375 
r
;

382 
	`PGNO
(


	`NEXT_PGNO
(

PGNO(
loc_
);

384 i((
t
 = 
	`__memp_dty
(
mpf
,

385 &

->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

386 
r
;

389 i((
t
 = 
	`__memp_dty
(
mpf
,

390 &

->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0 ||

391 (
t
 = 
	`__bam_p
(
dbc
, 

, 
l
, 

, 

, 0)) != 0)

392 
r
;

394 
bc
 = (
BTREE_CURSOR
 *)
dbc
->

;

396 i(
	`DBC_LOGGING
(
dbc
)) {

397 
	`memt
(&
log_dbt
, 0, (log_dbt));

398 
log_dbt
.
da
 = 

->
ge
;

399 
log_dbt
.
size
 = 
dbp
->
pgsize
;

400 i(

 =
NULL
)

401 
	`ZERO_LSN
(
log_l
);

402 
ags
 = 
	`F_ISSET
(
bc
, 
C_RECNUM
? 
SPL_NRECS
 : 0;

403 i((
t
 = 
	`__bam_l_log
(
dbp
, 
dbc
->
txn
, &
	`LSN
(

->
ge
), 0,

404 
	`PGNO
(

->
ge
), &
	`LSN
(->ge), PGNO(
loc_
),

405 &
	`LSN
(
loc_
), (
u_t32_t
)
	`NUM_ENT
(

),

406 

 =
NULL
 ? 0 : 
	`PGNO
(tp),

407 

 =
NULL
 ? &
log_l
 : &
	`LSN
(tp),

408 
PGNO_INVALID
, &
log_dbt
, 
ags
)) != 0)

409 
r
;

412 
	`LSN_NOT_LOGGED
(
	`LSN
(

->
ge
));

415 
	`LSN
(
loc_
LSN(

->
ge
);

416 
	`LSN
(

LSN(

->
ge
);

417 
	`LSN
(

LSN(

->
ge
);

418 i(

 !
NULL
)

419 
	`LSN
(

LSN(

->
ge
);

431 
ve_l
 = 
loc_
->
l
;

432 
	`memy
(
loc_
, 

, 
	`LOFFSET
(
dbp
,p));

433 
	`memy
((
u_t8_t
 *)
loc_
 + 
	`HOFFSET
(

),

434 (
u_t8_t
 *)

 + 
	`HOFFSET
p), 
dbp
->
pgsize
 - HOFFSET(rp));

435 
loc_
->
l
 = 
ve_l
;

437 
ve_l
 = 

->
ge
->
l
;

438 
	`memy
(

->
ge
, 

, 
	`LOFFSET
(
dbp
,p));

439 
	`memy
((
u_t8_t
 *)

->
ge
 + 
	`HOFFSET
(

),

440 (
u_t8_t
 *)

 + 
	`HOFFSET
p), 
dbp
->
pgsize
 - HOFFSET(lp));

441 

->
ge
->
l
 = 
ve_l
;

444 i(

 !
NULL
)

445 
	`PREV_PGNO
(


	`PGNO
(

);

448 i((
t
 = 
	`__bam__l
(
dbc
,

449 
	`PGNO
(

->
ge
), PGNO(->ge), PGNO(

), 
l
, 0)) != 0)

450 
r
;

452 
	`__os_
(
dbp
->
dbv
, 

);

460 i((
t_t
 =

461 
	`__memp_ut
(
mpf
, 
loc_
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

462 
t
 = 
t_t
;

463 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

464 
t
 = 
t_t
;

465 i((
t_t
 =

466 
	`__memp_ut
(
mpf
, 

->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

467 
t
 = 
t_t
;

468 i((
t_t
 = 
	`__TLPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

469 
t
 = 
t_t
;

470 i((
t_t
 =

471 
	`__memp_ut
(
mpf
, 

->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

472 
t
 = 
t_t
;

473 i((
t_t
 = 
	`__TLPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

474 
t
 = 
t_t
;

475 i(

 !
NULL
) {

476 i((
t_t
 =

477 
	`__memp_ut
(
mpf
, 

, 
dbc
->
iܙy
)!0 && 
t
 == 0)

478 
t
 = 
t_t
;

479 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

480 
t
 = 
t_t
;

482  (
t
);

484 
r
: i(

 !
NULL
)

485 
	`__os_
(
dbp
->
dbv
, 

);

486 i(
loc_
 !
NULL
)

487 ()
	`__memp_ut
(
mpf
, 
loc_
, 
dbc
->
iܙy
);

488 i(

 !
NULL
)

489 ()
	`__memp_ut
(
mpf
, 

, 
dbc
->
iܙy
);

492 ()
	`__LPUT
(
dbc
, 
lock
);

493 ()
	`__LPUT
(
dbc
, 
lock
);

495 ()
	`__memp_ut
(
mpf
, 

->
ge
, 
dbc
->
iܙy
);

496 i(
t
 =
DB_NEEDSPLIT
)

497 ()
	`__LPUT
(
dbc
, 

->
lock
);

499 ()
	`__TLPUT
(
dbc
, 

->
lock
);

501 ()
	`__memp_ut
(
mpf
, 

->
ge
, 
dbc
->
iܙy
);

502 i(
t
 =
DB_NEEDSPLIT
)

503 ()
	`__LPUT
(
dbc
, 

->
lock
);

505 ()
	`__TLPUT
(
dbc
, 

->
lock
);

507  (
t
);

508 
	}
}

515 
	$__bam_bro
(
dbc
, 
rop
, 
l
, 

, 

)

516 
DBC
 *
dbc
;

517 
u_t32_t
 
l
;

518 
PAGE
 *
rop
, *

, *

;

520 
BINTERNAL
 
bi
, 
bi0
, *
chd_bi
;

521 
BKEYDATA
 *
chd_bk
;

522 
BOVERFLOW
 
bo
, *
chd_bo
;

523 
BTREE_CURSOR
 *

;

524 
DB
 *
dbp
;

525 
DBT
 
hdr
, 
hdr0
, 
da
;

526 
db_pgno_t
 
ro_pgno
;

527 
t
;

529 
dbp
 = 
dbc
->dbp;

530 

 = (
BTREE_CURSOR
 *)
dbc
->

;

531 
chd_bo
 = 
NULL
;

532 
da
.d
NULL
;

534 
	`TYPE
(
rop
)) {

535 
P_IBTREE
:

537 
chd_bi
 = 
	`GET_BINTERNAL
(
dbp
, 
rop
, 
l
);

538 
	`B_TYPE
(
chd_bi
->
ty
)) {

539 
B_KEYDATA
:

540 
bi
.
n
 = 
chd_bi
->len;

541 
	`B_TSET
(
bi
.
ty
, 
B_KEYDATA
);

542 
bi
.
pgno
 = 

->pgno;

543 
	`DB_SET_DBT
(
hdr
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

544 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
,

545 
chd_bi
->
n
, &
da
.data)) != 0)

546  (
t
);

547 
	`memy
(
da
.da, 
chd_bi
->da, chd_bi->
n
);

548 
da
.
size
 = 
chd_bi
->
n
;

550 
B_OVERFLOW
:

552 
chd_bo
 = (
BOVERFLOW
 *)
chd_bi
->
da
;

553 
	`memt
(&
bo
, 0, (bo));

554 
bo
.
ty
 = 
B_OVERFLOW
;

555 
bo
.

 = 
chd_bo
->tlen;

556 
bo
.
pgno
 = 
chd_bo
->pgno;

557 
bi
.
n
 = 
BOVERFLOW_SIZE
;

558 
	`B_TSET
(
bi
.
ty
, 
B_OVERFLOW
);

559 
bi
.
pgno
 = 

->pgno;

560 
	`DB_SET_DBT
(
hdr
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

561 
	`DB_SET_DBT
(
da
, &
bo
, 
BOVERFLOW_SIZE
);

563 
B_DUPLICATE
:

565 
pgfmt
;

568 
P_LDUP
:

569 
P_LBTREE
:

571 
chd_bk
 = 
	`GET_BKEYDATA
(
dbp
, 
rop
, 
l
);

572 
	`B_TYPE
(
chd_bk
->
ty
)) {

573 
B_KEYDATA
:

574 
bi
.
n
 = 
chd_bk
->len;

575 
	`B_TSET
(
bi
.
ty
, 
B_KEYDATA
);

576 
bi
.
pgno
 = 

->pgno;

577 
	`DB_SET_DBT
(
hdr
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

578 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
,

579 
chd_bk
->
n
, &
da
.data)) != 0)

580  (
t
);

581 
	`memy
(
da
.da, 
chd_bk
->da, chd_bk->
n
);

582 
da
.
size
 = 
chd_bk
->
n
;

584 
B_OVERFLOW
:

586 
chd_bo
 = (
BOVERFLOW
 *)
chd_bk
;

587 
	`memt
(&
bo
, 0, (bo));

588 
bo
.
ty
 = 
B_OVERFLOW
;

589 
bo
.

 = 
chd_bo
->tlen;

590 
	`memt
(&
hdr
, 0, (hdr));

591 i((
t
 = 
	`__db_goff
(
dbp
,

592 
dbc
->
txn
, &
hdr
, 
chd_bo
->

,

593 
chd_bo
->
pgno
, &
hdr
.
da
, &hdr.
size
)) == 0)

594 
t
 = 
	`__db_poff
(
dbc
, &
hdr
, &
bo
.
pgno
);

596 i(
hdr
.
da
 !
NULL
)

597 
	`__os_
(
dbp
->
dbv
, 
hdr
.
da
);

598 i(
t
 != 0)

599  (
t
);

601 
bi
.
n
 = 
BOVERFLOW_SIZE
;

602 
	`B_TSET
(
bi
.
ty
, 
B_OVERFLOW
);

603 
bi
.
pgno
 = 

->pgno;

604 
	`DB_SET_DBT
(
hdr
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

605 
	`DB_SET_DBT
(
da
, &
bo
, 
BOVERFLOW_SIZE
);

607 
B_DUPLICATE
:

609 
pgfmt
;

613 
pgfmt
:  (
	`__db_pgfmt
(
dbp
->
dbv
, 

->
pgno
));

620 
ro_pgno
 = 

->
ro
;

621 
	`P_INIT
(
rop
, 
dbp
->
pgsize
,

622 
ro_pgno
, 
PGNO_INVALID
, PGNO_INVALID, 

->
v
 + 1, 
P_IBTREE
);

629 
	`memt
(&
bi0
, 0, (bi0));

630 
bi0
.
n
 = 0;

631 
	`B_TSET
(
bi0
.
ty
, 
B_KEYDATA
);

632 
bi0
.
pgno
 = 

->pgno;

633 i(
	`F_ISSET
(

, 
C_RECNUM
)) {

634 
bi0
.
ecs
 = 
	`__bam_tٮ
(
dbp
, 

);

635 
	`RE_NREC_SET
(
rop
, 
bi0
.
ecs
);

636 
bi
.
ecs
 = 
	`__bam_tٮ
(
dbp
, 

);

637 
	`RE_NREC_ADJ
(
rop
, 
bi
.
ecs
);

639 
	`DB_SET_DBT
(
hdr0
, &
bi0
, 
	`SSZA
(
BINTERNAL
, 
da
));

640 i((
t
 = 
	`__db_pem
(
dbc
,

641 
rop
, 0, 
	`BINTERNAL_SIZE
(0), &
hdr0
, 
NULL
)) != 0)

642 
r
;

643 
t
 = 
	`__db_pem
(
dbc
, 
rop
, 1, 
	`BINTERNAL_SIZE
(
da
.
size
), &
hdr
, &data);

645 
r
: i(
da
.d!
NULL
 && 
chd_bo
 == NULL)

646 
	`__os_
(
dbp
->
dbv
, 
da
.data);

647  (
t
);

648 
	}
}

655 
	$__m_ro
(
dbc
, 
rop
, 

, 

)

656 
DBC
 *
dbc
;

657 
PAGE
 *
rop
, *

, *

;

659 
DB
 *
dbp
;

660 
DBT
 
hdr
;

661 
RINTERNAL
 
ri
;

662 
db_pgno_t
 
ro_pgno
;

663 
t
;

665 
dbp
 = 
dbc
->dbp;

666 
ro_pgno
 = 
dbc
->

->
ro
;

669 
	`P_INIT
(
rop
, 
dbp
->
pgsize
,

670 
ro_pgno
, 
PGNO_INVALID
, PGNO_INVALID, 

->
v
 + 1, 
P_IRECNO
);

673 
	`DB_SET_DBT
(
hdr
, &
ri
, 
RINTERNAL_SIZE
);

676 
ri
.
pgno
 = 

->pgno;

677 
ri
.
ecs
 = 
	`__bam_tٮ
(
dbp
, 

);

678 i((
t
 = 
	`__db_pem
(
dbc
, 
rop
, 0, 
RINTERNAL_SIZE
, &
hdr
, 
NULL
)) != 0)

679  (
t
);

680 
	`RE_NREC_SET
(
rop
, 
ri
.
ecs
);

681 
ri
.
pgno
 = 

->pgno;

682 
ri
.
ecs
 = 
	`__bam_tٮ
(
dbp
, 

);

683 i((
t
 = 
	`__db_pem
(
dbc
, 
rop
, 1, 
RINTERNAL_SIZE
, &
hdr
, 
NULL
)) != 0)

684  (
t
);

685 
	`RE_NREC_ADJ
(
rop
, 
ri
.
ecs
);

687 
	}
}

697 
	$__bam_p
(
dbc
, 

, 
l
, 
lchd
, 
rchd
, 
ags
)

698 
DBC
 *
dbc
;

699 
EPG
 *

;

700 
u_t32_t
 
l
;

701 
PAGE
 *
lchd
, *
rchd
;

702 
ags
;

704 
BINTERNAL
 
bi
, *
chd_bi
;

705 
BKEYDATA
 *
chd_bk
, *
tmp_bk
;

706 
BOVERFLOW
 
bo
, *
chd_bo
;

707 
BTREE
 *
t
;

708 
BTREE_CURSOR
 *

;

709 
DB
 *
dbp
;

710 
DBT
 
a
, 
b
, 
hdr
, 
da
;

711 
EPG
 *
chd
;

712 
PAGE
 *
age
;

713 
RINTERNAL
 
ri
;

714 
db_dx_t
 
off
;

715 
db_o_t
 
ecs
;

716 
	`size_t
 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

717 
u_t32_t
 
n
, 
nbys
, 
nksize
;

718 
t
;

720 
dbp
 = 
dbc
->dbp;

721 

 = (
BTREE_CURSOR
 *)
dbc
->

;

722 
t
 = 
dbp
->
bt_
;

723 
age
 = 

->
ge
;

724 
chd
 = 

 + 1;

727 
ecs
 = 
	`F_ISSET
(

, 
C_RECNUM
) &&

728 !
	`LF_ISSET
(
BPI_SPACEONLY
? 
	`__bam_tٮ
(
dbp
, 
rchd
) : 0;

743 
off
 = 

->
dx
 + 
O_INDX
;

757 
	`TYPE
(
chd
->
ge
)) {

758 
P_IBTREE
:

759 
chd_bi
 = 
	`GET_BINTERNAL
(
dbp
, 
chd
->
ge
, 
l
);

760 
nbys
 = 
	`BINTERNAL_PSIZE
(
chd_bi
->
n
);

762 i(
	`P_FREESPACE
(
dbp
, 
age
< 
nbys
)

763  (
DB_NEEDSPLIT
);

764 i(
	`LF_ISSET
(
BPI_SPACEONLY
))

767 
	`B_TYPE
(
chd_bi
->
ty
)) {

768 
B_KEYDATA
:

770 
	`memt
(&
bi
, 0, (bi));

771 
bi
.
n
 = 
chd_bi
->len;

772 
	`B_TSET
(
bi
.
ty
, 
B_KEYDATA
);

773 
bi
.
pgno
 = 
rchd
->pgno;

774 
bi
.
ecs
 =recs;

775 
	`DB_SET_DBT
(
hdr
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

776 
	`DB_SET_DBT
(
da
, 
chd_bi
->da, chd_bi->
n
);

777 i((
t
 = 
	`__db_pem
(
dbc
, 
age
, 
off
,

778 
	`BINTERNAL_SIZE
(
chd_bi
->
n
), &
hdr
, &
da
)) != 0)

779  (
t
);

781 
B_OVERFLOW
:

783 
chd_bo
 = (
BOVERFLOW
 *)
chd_bi
->
da
;

784 
	`memt
(&
bo
, 0, (bo));

785 
bo
.
ty
 = 
B_OVERFLOW
;

786 
bo
.

 = 
chd_bo
->tlen;

787 
bo
.
pgno
 = 
chd_bo
->pgno;

788 
bi
.
n
 = 
BOVERFLOW_SIZE
;

789 
	`B_TSET
(
bi
.
ty
, 
B_OVERFLOW
);

790 
bi
.
pgno
 = 
rchd
->pgno;

791 
bi
.
ecs
 =recs;

792 
	`DB_SET_DBT
(
hdr
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

793 
	`DB_SET_DBT
(
da
, &
bo
, 
BOVERFLOW_SIZE
);

794 i((
t
 = 
	`__db_pem
(
dbc
, 
age
, 
off
,

795 
	`BINTERNAL_SIZE
(
BOVERFLOW_SIZE
), &
hdr
, &
da
)) != 0)

796  (
t
);

798 
B_DUPLICATE
:

800 
pgfmt
;

803 
P_LDUP
:

804 
P_LBTREE
:

805 
chd_bk
 = 
	`GET_BKEYDATA
(
dbp
, 
chd
->
ge
, 
l
);

806 
	`B_TYPE
(
chd_bk
->
ty
)) {

807 
B_KEYDATA
:

808 
nbys
 = 
	`BINTERNAL_PSIZE
(
chd_bk
->
n
);

809 
nksize
 = 
chd_bk
->
n
;

833 i(
	`F_ISSET
(
dbc
, 
DBC_OPD
)) {

834 i(
dbp
->
dup_com
 =
__bam_defcmp
)

835 
func
 = 
__bam_defx
;

837 
func
 = 
NULL
;

839 
func
 = 
t
->
bt_efix
;

840 i(
func
 =
NULL
)

841 
nݻfix
;

842 
tmp_bk
 = 
	`GET_BKEYDATA
(
dbp
, 
lchd
, 
	`NUM_ENT
(lchild) -

843 (
	`TYPE
(
lchd
=
P_LDUP
 ? 
O_INDX
 : 
P_INDX
));

844 i(
	`B_TYPE
(
tmp_bk
->
ty
!
B_KEYDATA
)

845 
nݻfix
;

846 
	`DB_SET_DBT
(
a
, 
tmp_bk
->
da
,mp_bk->
n
);

847 
	`DB_SET_DBT
(
b
, 
chd_bk
->
da
, chd_bk->
n
);

848 
nksize
 = (
u_t32_t
)
	`func
(
dbp
, &
a
, &
b
);

849 i((
n
 = 
	`BINTERNAL_PSIZE
(
nksize
)< 
nbys
)

850 
nbys
 = 
n
;

852 
nksize
 = 
chd_bk
->
n
;

854 
nݻfix
: i(
	`P_FREESPACE
(
dbp
, 
age
< 
nbys
)

855  (
DB_NEEDSPLIT
);

856 i(
	`LF_ISSET
(
BPI_SPACEONLY
))

859 
	`memt
(&
bi
, 0, (bi));

860 
bi
.
n
 = 
nksize
;

861 
	`B_TSET
(
bi
.
ty
, 
B_KEYDATA
);

862 
bi
.
pgno
 = 
rchd
->pgno;

863 
bi
.
ecs
 =recs;

864 
	`DB_SET_DBT
(
hdr
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

865 
	`DB_SET_DBT
(
da
, 
chd_bk
->da, 
nksize
);

866 i((
t
 = 
	`__db_pem
(
dbc
, 
age
, 
off
,

867 
	`BINTERNAL_SIZE
(
nksize
), &
hdr
, &
da
)) != 0)

868  (
t
);

870 
B_OVERFLOW
:

871 
nbys
 = 
	`BINTERNAL_PSIZE
(
BOVERFLOW_SIZE
);

873 i(
	`P_FREESPACE
(
dbp
, 
age
< 
nbys
)

874  (
DB_NEEDSPLIT
);

875 i(
	`LF_ISSET
(
BPI_SPACEONLY
))

879 
chd_bo
 = (
BOVERFLOW
 *)
chd_bk
;

880 
	`memt
(&
bo
, 0, (bo));

881 
bo
.
ty
 = 
B_OVERFLOW
;

882 
bo
.

 = 
chd_bo
->tlen;

883 
	`memt
(&
hdr
, 0, (hdr));

884 i((
t
 = 
	`__db_goff
(
dbp
,

885 
dbc
->
txn
, &
hdr
, 
chd_bo
->

,

886 
chd_bo
->
pgno
, &
hdr
.
da
, &hdr.
size
)) == 0)

887 
t
 = 
	`__db_poff
(
dbc
, &
hdr
, &
bo
.
pgno
);

889 i(
hdr
.
da
 !
NULL
)

890 
	`__os_
(
dbp
->
dbv
, 
hdr
.
da
);

891 i(
t
 != 0)

892  (
t
);

894 
	`memt
(&
bi
, 0, (bi));

895 
bi
.
n
 = 
BOVERFLOW_SIZE
;

896 
	`B_TSET
(
bi
.
ty
, 
B_OVERFLOW
);

897 
bi
.
pgno
 = 
rchd
->pgno;

898 
bi
.
ecs
 =recs;

899 
	`DB_SET_DBT
(
hdr
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

900 
	`DB_SET_DBT
(
da
, &
bo
, 
BOVERFLOW_SIZE
);

901 i((
t
 = 
	`__db_pem
(
dbc
, 
age
, 
off
,

902 
	`BINTERNAL_SIZE
(
BOVERFLOW_SIZE
), &
hdr
, &
da
)) != 0)

903  (
t
);

906 
B_DUPLICATE
:

908 
pgfmt
;

911 
P_IRECNO
:

912 
P_LRECNO
:

913 
nbys
 = 
RINTERNAL_PSIZE
;

915 i(
	`P_FREESPACE
(
dbp
, 
age
< 
nbys
)

916  (
DB_NEEDSPLIT
);

917 i(
	`LF_ISSET
(
BPI_SPACEONLY
))

921 
	`DB_SET_DBT
(
hdr
, &
ri
, 
RINTERNAL_SIZE
);

922 
ri
.
pgno
 = 
rchd
->pgno;

923 
ri
.
ecs
 =recs;

924 i((
t
 = 
	`__db_pem
(
dbc
,

925 
age
, 
off
, 
RINTERNAL_SIZE
, &
hdr
, 
NULL
)) != 0)

926  (
t
);

929 
pgfmt
:  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
chd
->
ge
)));

936 i(
	`F_ISSET
(

, 
C_RECNUM
&& !
	`LF_ISSET
(
BPI_NORECNUM
)) {

938 i(
	`DBC_LOGGING
(
dbc
)) {

939 i((
t
 = 
	`__bam_dju_log
(
dbp
, 
dbc
->
txn
,

940 &
	`LSN
(
age
), 0, 
	`PGNO
(ppage), &LSN(ppage),

941 

->
dx
, -(
t32_t
)
ecs
, 0)) != 0)

942  (
t
);

944 
	`LSN_NOT_LOGGED
(
	`LSN
(
age
));

947 i(
dbc
->
dbty
 =
DB_RECNO
)

948 
	`GET_RINTERNAL
(
dbp
, 
age
, 

->
dx
)->
ecs
 -=recs;

950 
	`GET_BINTERNAL
(
dbp
, 
age
, 

->
dx
)->
ecs
 -=recs;

954 
	}
}

961 
	$__bam_pl
(
dbc
, 

, 

, 

, 
lt
)

962 
DBC
 *
dbc
;

963 
EPG
 *

;

964 
PAGE
 *

, *

;

965 
db_dx_t
 *
lt
;

967 
DB
 *
dbp
;

968 
PAGE
 *

;

969 
db_dx_t
 
hf
, *
p
, 
nbys
, 
off
, 
lp
, 
t
;

970 
adju
, 
t
, 
iag
, 
isbigkey
, 
t
;

972 
dbp
 = 
dbc
->dbp;

973 

 = 

->
ge
;

974 
p
 = 
	`P_INP
(
dbp
, 

);

975 
adju
 = 
	`TYPE
(

=
P_LBTREE
 ? 
P_INDX
 : 
O_INDX
;

1010 
off
 = 0;

1011 i(
	`NEXT_PGNO
(

=
PGNO_INVALID
 && 

->
dx
 >
	`NUM_ENT
p- 
adju
)

1012 
off
 = 
	`NUM_ENT
(

- 
adju
;

1013 i(
	`PREV_PGNO
(

=
PGNO_INVALID
 && 

->
dx
 == 0)

1014 
off
 = 
adju
;

1015 i(
off
 != 0)

1016 
st
;

1039 
t
 = 
	`NUM_ENT
(

- 
adju
;

1040 
hf
 = (
dbp
->
pgsize
 - 
	`HOFFSET
(

)) / 2;

1041 
nbys
 = 0, 
off
 = 0; of< 
t
 &&by< 
hf
; ++off)

1042 
	`TYPE
(

)) {

1043 
P_IBTREE
:

1044 i(
	`B_TYPE
(

1045 
	`GET_BINTERNAL
(
dbp
, 

, 
off
)->
ty
=
B_KEYDATA
)

1046 
nbys
 +
	`BINTERNAL_SIZE
(

1047 
	`GET_BINTERNAL
(
dbp
, 

, 
off
)->
n
);

1049 
nbys
 +
	`BINTERNAL_SIZE
(
BOVERFLOW_SIZE
);

1051 
P_LBTREE
:

1052 i(
	`B_TYPE
(
	`GET_BKEYDATA
(
dbp
, 

, 
off
)->
ty
) ==

1053 
B_KEYDATA
)

1054 
nbys
 +
	`BKEYDATA_SIZE
(
	`GET_BKEYDATA
(
dbp
,

1055 

, 
off
)->
n
);

1057 
nbys
 +
BOVERFLOW_SIZE
;

1059 ++
off
;

1061 
P_LDUP
:

1062 
P_LRECNO
:

1063 i(
	`B_TYPE
(
	`GET_BKEYDATA
(
dbp
, 

, 
off
)->
ty
) ==

1064 
B_KEYDATA
)

1065 
nbys
 +
	`BKEYDATA_SIZE
(
	`GET_BKEYDATA
(
dbp
,

1066 

, 
off
)->
n
);

1068 
nbys
 +
BOVERFLOW_SIZE
;

1070 
P_IRECNO
:

1071 
nbys
 +
RINTERNAL_SIZE
;

1074  (
	`__db_pgfmt
(
dbp
->
dbv
, 

->
pgno
));

1076 
st
: 
lp
 = 
off
;

1084 
	`TYPE
(

)) {

1085 
P_IBTREE
:

1086 
iag
 = 1;

1087 
isbigkey
 =

1088 
	`B_TYPE
(
	`GET_BINTERNAL
(
dbp
, 

, 
off
)->
ty
!
B_KEYDATA
;

1090 
P_LBTREE
:

1091 
P_LDUP
:

1092 
iag
 = 0;

1093 
isbigkey
 = 
	`B_TYPE
(
	`GET_BKEYDATA
(
dbp
, 

, 
off
)->
ty
) !=

1094 
B_KEYDATA
;

1097 
iag
 = 
isbigkey
 = 0;

1099 i(
isbigkey
)

1100 
t
 = 1; cnt <= 3; ++cnt) {

1101 
off
 = 
lp
 + 
t
 * 
adju
;

1102 i(
off
 < (
db_dx_t
)
	`NUM_ENT
(

) &&

1103 ((
iag
 && 
	`B_TYPE
(

1104 
	`GET_BINTERNAL
(
dbp
, 

,
off
)->
ty
=
B_KEYDATA
) ||

1105 
	`B_TYPE
(
	`GET_BKEYDATA
(
dbp
, 

, 
off
)->
ty
) ==

1106 
B_KEYDATA
)) {

1107 
lp
 = 
off
;

1110 i(
lp
 <(
db_dx_t
)(
t
 * 
adju
))

1112 
off
 = 
lp
 - 
t
 * 
adju
;

1113 i(
iag
 ? 
	`B_TYPE
(

1114 
	`GET_BINTERNAL
(
dbp
, 

, 
off
)->
ty
=
B_KEYDATA
 :

1115 
	`B_TYPE
(
	`GET_BKEYDATA
(
dbp
, 

, 
off
)->
ty
) ==

1116 
B_KEYDATA
) {

1117 
lp
 = 
off
;

1128 i(
	`TYPE
(

=
P_LBTREE
 &&

1129 
p
[
lp
] =p[l- 
adju
])

1130 
t
 = 1;; ++cnt) {

1131 
off
 = 
lp
 + 
t
 * 
adju
;

1132 i(
off
 < 
	`NUM_ENT
(

) &&

1133 
p
[
lp
] !p[
off
]) {

1134 
lp
 = 
off
;

1137 i(
lp
 <(
db_dx_t
)(
t
 * 
adju
))

1139 
off
 = 
lp
 - 
t
 * 
adju
;

1140 i(
p
[
lp
] !p[
off
]) {

1141 
lp
 = 
off
 + 
adju
;

1147 i((
t
 = 
	`__bam_cy
(
dbp
, 

, 

, 0, 
lp
)) != 0)

1148  (
t
);

1149 i((
t
 = 
	`__bam_cy
(
dbp
, 

, 

, 
lp
, 
	`NUM_ENT
(pp))) != 0)

1150  (
t
);

1152 *
lt
 = 
lp
;

1154 
	}
}

1163 
	$__bam_cy
(
dbp
, 

, 

, 
nxt
, 

)

1164 
DB
 *
dbp
;

1165 
PAGE
 *

, *

;

1166 
u_t32_t
 
nxt
, 

;

1168 
BINTERNAL
 

;

1169 
db_dx_t
 *
cp
, 
nbys
, 
off
, *
pp
;

1171 
cp
 = 
	`P_INP
(
dbp
, 

);

1172 
pp
 = 
	`P_INP
(
dbp
, 

);

1176 
off
 = 0; 
nxt
 < 

; ++nxt, ++
	`NUM_ENT
(

), ++off) {

1177 
	`TYPE
(

)) {

1178 
P_IBTREE
:

1179 i(
off
 =0 && 
nxt
 != 0)

1180 
nbys
 = 
	`BINTERNAL_SIZE
(0);

1181 i(
	`B_TYPE
(

1182 
	`GET_BINTERNAL
(
dbp
, 

, 
nxt
)->
ty
=
B_KEYDATA
)

1183 
nbys
 = 
	`BINTERNAL_SIZE
(

1184 
	`GET_BINTERNAL
(
dbp
, 

, 
nxt
)->
n
);

1186 
nbys
 = 
	`BINTERNAL_SIZE
(
BOVERFLOW_SIZE
);

1188 
P_LBTREE
:

1193 i(
off
 !0 && (
nxt
 % 
P_INDX
) == 0 &&

1194 
pp
[
nxt
] =pp[nx- 
P_INDX
]) {

1195 
cp
[
off
] = cp[of- 
P_INDX
];

1199 
P_LDUP
:

1200 
P_LRECNO
:

1201 i(
	`B_TYPE
(
	`GET_BKEYDATA
(
dbp
, 

, 
nxt
)->
ty
) ==

1202 
B_KEYDATA
)

1203 
nbys
 = 
	`BKEYDATA_SIZE
(
	`GET_BKEYDATA
(
dbp
,

1204 

, 
nxt
)->
n
);

1206 
nbys
 = 
BOVERFLOW_SIZE
;

1208 
P_IRECNO
:

1209 
nbys
 = 
RINTERNAL_SIZE
;

1212  (
	`__db_pgfmt
(
dbp
->
dbv
, 

->
pgno
));

1214 
cp
[
off
] = 
	`HOFFSET
(

-
nbys
;

1215 i(
off
 =0 && 
nxt
 !0 && 
	`TYPE
(

=
P_IBTREE
) {

1216 

.
n
 = 0;

1217 

.
ty
 = 
B_KEYDATA
;

1218 

.
pgno
 = 
	`GET_BINTERNAL
(
dbp
, 

, 
nxt
)->pgno;

1219 

.
ecs
 = 
	`GET_BINTERNAL
(
dbp
, 

, 
nxt
)->nrecs;

1220 
	`memy
(
	`P_ENTRY
(
dbp
, 

, 
off
), &

, 
nbys
);

1223 
	`memy
(
	`P_ENTRY
(
dbp
, 

, 
off
),

1224 
	`P_ENTRY
(
dbp
, 

, 
nxt
), 
nbys
);

1227 
	}
}

	@../btree/bt_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/mp.h
"

17 #ifde
HAVE_STATISTICS


25 
	$__bam_
(
dbc
, 
p
, 
ags
)

26 
DBC
 *
dbc
;

27 *
p
;

28 
u_t32_t
 
ags
;

30 
BTMETA
 *
ma
;

31 
BTREE
 *
t
;

32 
BTREE_CURSOR
 *

;

33 
DB
 *
dbp
;

34 
DB_BTREE_STAT
 *

;

35 
DB_ENV
 *
dbv
;

36 
DB_LOCK
 
lock
, 
mock
;

37 
DB_MPOOLFILE
 *
mpf
;

38 
PAGE
 *
h
;

39 
db_pgno_t
 
pgno
;

40 
t
, 
t_t
, 
wre_ma
;

42 
dbp
 = 
dbc
->dbp;

43 
dbv
 = 
dbp
->dbenv;

45 
ma
 = 
NULL
;

46 
t
 = 
dbp
->
bt_
;

47 

 = 
NULL
;

48 
	`LOCK_INIT
(
mock
);

49 
	`LOCK_INIT
(
lock
);

50 
mpf
 = 
dbp
->mpf;

51 
h
 = 
NULL
;

52 
t
 = 
wre_ma
 = 0;

54 

 = (
BTREE_CURSOR
 *)
dbc
->

;

57 i((
t
 = 
	`__os_umloc
(
dbv
, (*

), &sp)) != 0)

58 
r
;

59 
	`memt
(

, 0, (*sp));

62 
pgno
 = 
PGNO_BASE_MD
;

63 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
pgno
, 
DB_LOCK_READ
, 0, &
mock
)) != 0)

64 
r
;

65 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
, 0, &
ma
)) != 0)

66 
r
;

68 i(
ags
 =
DB_FAST_STAT
)

69 
ma_ly
;

72 

->
bt_
 = 0, 
pgno
 = 
ma
->
dbma
.

;gn!
PGNO_INVALID
;) {

73 ++

->
bt_
;

75 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
, 0, &
h
)) != 0)

76 
r
;

78 
pgno
 = 
h
->
xt_pgno
;

79 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)) != 0)

80 
r
;

81 
h
 = 
NULL
;

85 
pgno
 = 

->
ro
;

86 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
pgno
, 
DB_LOCK_READ
, 0, &
lock
)) != 0)

87 
r
;

88 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
, 0, &
h
)) != 0)

89 
r
;

92 

->
bt_vs
 = 
h
->
v
;

95 
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

96 
h
 = 
NULL
;

97 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

98 
t
 = 
t_t
;

99 i(
t
 != 0)

100 
r
;

103 i((
t
 = 
	`__bam_av
(
dbc
,

104 
DB_LOCK_READ
, 

->
ro
, 
__bam__back
, 

)) != 0)

105 
r
;

111 
wre_ma
 = !
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
) &&

112 (!
	`MULTIVERSION
(
dbp
|| 
dbc
->
txn
 !
NULL
);

113 
ma_ly
:

114 i(
t
->
bt_ma
 !
PGNO_BASE_MD
 || 
wre_ma
) {

115 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

116 
ma
 = 
NULL
;

117 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

118 
t
 = 
t_t
;

119 i(
t
 != 0)

120 
r
;

122 i((
t
 = 
	`__db_lg
(
dbc
,

123 0, 
t
->
bt_ma
, 
wre_ma
 ? 
DB_LOCK_WRITE
 : 
DB_LOCK_READ
,

124 0, &
mock
)) != 0)

125 
r
;

126 i((
t
 = 
	`__memp_fg
(
mpf
, &
t
->
bt_ma
, 
dbc
->
txn
,

127 
wre_ma
 ? 
DB_MPOOL_DIRTY
 : 0, &
ma
)) != 0)

128 
r
;

130 i(
ags
 =
DB_FAST_STAT
) {

131 i(
dbp
->
ty
 =
DB_RECNO
 ||

132 (
dbp
->
ty
 =
DB_BTREE
 && 
	`F_ISSET
(dbp, 
DB_AM_RECNUM
))) {

133 i((
t
 = 
	`__db_lg
(
dbc
, 0,

134 

->
ro
, 
DB_LOCK_READ
, 0, &
lock
)) != 0)

135 
r
;

136 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
ro
, 
dbc
->
txn
,

137 0, &
h
)) != 0)

138 
r
;

140 

->
bt_nkeys
 = 
	`RE_NREC
(
h
);

142 

->
bt_nkeys
 = 
ma
->
dbma
.
key_cou
;

144 

->
bt_nda
 = 
dbp
->
ty
 =
DB_RECNO
 ?

145 

->
bt_nkeys
 : 
ma
->
dbma
.
cd_cou
;

149 

->
bt_maags
 = 
ma
->
dbma
.
ags
;

150 

->
bt_mkey
 = 
ma
->
mkey
;

151 

->
bt__n
 = 
ma
->
_n
;

152 

->
bt__d
 = 
ma
->
_d
;

160 i((
t
 = 
	`__memp_g_ϡ_pgno
(
dbp
->
mpf
, &
pgno
)) != 0)

161 
r
;

162 

->
bt_get
 = 
pgno
 + 1;

163 

->
bt_gesize
 = 
ma
->
dbma
.
gesize
;

164 

->
bt_magic
 = 
ma
->
dbma
.
magic
;

165 

->
bt_vsi
 = 
ma
->
dbma
.
vsi
;

167 i(
wre_ma
 != 0) {

168 
ma
->
dbma
.
key_cou
 = 

->
bt_nkeys
;

169 
ma
->
dbma
.
cd_cou
 = 

->
bt_nda
;

172 *(
DB_BTREE_STAT
 **)
p
 = 

;

174 
r
:

175 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

176 
t
 = 
t_t
;

177 i(
h
 !
NULL
 &&

178 (
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

179 
t
 = 
t_t
;

182 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

183 
t
 = 
t_t
;

184 i(
ma
 !
NULL
 &&

185 (
t_t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

186 
t
 = 
t_t
;

188 i(
t
 !0 && 

 !
NULL
) {

189 
	`__os_u
(
dbv
, 

);

190 *(
DB_BTREE_STAT
 **)
p
 = 
NULL
;

193  (
t
);

194 
	}
}

203 
	$__bam__t
(
dbc
, 
ags
)

204 
DBC
 *
dbc
;

205 
u_t32_t
 
ags
;

207 cڡ 
FN
 

[] = {

208 { 
BTM_DUP
, "duplicates" },

209 { 
BTM_RECNO
, "recno" },

210 { 
BTM_RECNUM
, "record-numbers" },

211 { 
BTM_FIXEDLEN
, "fixed-length" },

212 { 
BTM_RENUMBER
, "renumber" },

213 { 
BTM_SUBDB
, "multiple-databases" },

214 { 
BTM_DUPSORT
, "sorted duplicates" },

215 { 0, 
NULL
 }

217 
DB
 *
dbp
;

218 
DB_BTREE_STAT
 *

;

219 
DB_ENV
 *
dbv
;

220 
ld
, 
t
;

221 cڡ *
s
;

223 
dbp
 = 
dbc
->dbp;

224 
dbv
 = 
dbp
->dbenv;

226 i((
t
 = 
	`__bam_
(
dbc
, &

, 
	`LF_ISSET
(
DB_FAST_STAT
))) != 0)

227  (
t
);

229 i(
	`LF_ISSET
(
DB_STAT_ALL
)) {

230 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

231 
	`__db_msg
(
dbv
, "Default Btree/Recno database information:");

234 
	`__db_msg
(
dbv
, "%lx\tB maginumb", (
u_lg
)

->
bt_magic
);

235 
	`__db_msg
(
dbv
, "%lu\tB vsiڂumb", (
u_lg
)

->
bt_vsi
);

237 ()
	`__db_g_ld
(
dbp
, &
ld
);

238 
ld
) {

240 
s
 = "Little-endian";

243 
s
 = "Big-endian";

246 
s
 = "Unrecognized byte order";

249 
	`__db_msg
(
dbv
, "%s\tBy ord", 
s
);

250 
	`__db_ags
(
dbv
, 
NULL
, 

->
bt_maags
, 

, NULL, "\tFlags");

251 i(
dbp
->
ty
 =
DB_BTREE
)

252 
	`__db_dl
(
dbv
, "Mimum keyr-ge", (
u_lg
)

->
bt_mkey
);

253 i(
dbp
->
ty
 =
DB_RECNO
) {

254 
	`__db_dl
(
dbv
,

255 "Fixed-ngthecd size", (
u_lg
)

->
bt__n
);

256 
	`__db_msg
(
dbv
,

257 "%#x\tFixed-ngthecdad", (
u_t
)

->
bt__d
);

259 
	`__db_dl
(
dbv
,

260 "Undlyg dabaagsize", (
u_lg
)

->
bt_gesize
);

261 i(
dbp
->
ty
 =
DB_BTREE
)

262 
	`__db_dl
(
dbv
, "Overflow key/data size",

263 ((
BTREE_CURSOR
 *)
dbc
->

)->
ovsize
);

264 
	`__db_dl
(
dbv
, "Numb ovh", (
u_lg
)

->
bt_vs
);

265 
	`__db_dl
(
dbv
, 
dbp
->
ty
 =
DB_BTREE
 ?

267 "Numb ocdh", (
u_lg
)

->
bt_nkeys
);

268 
	`__db_dl
(
dbv
,

269 "Numb odemh", (
u_lg
)

->
bt_nda
);

271 
	`__db_dl
(
dbv
,

272 "Numb o iȷges", (
u_lg
)

->
bt_t_pg
);

273 
	`__db_dl_p
(
dbv
,

275 (
u_lg
)

->
bt_t_pg
,

276 
	`DB_PCT_PG
(

->
bt_t_pg
, sp->
bt_t_pg
, sp->
bt_gesize
), "ff");

278 
	`__db_dl
(
dbv
,

279 "Numb oges", (
u_lg
)

->
bt_af_pg
);

280 
	`__db_dl_p
(
dbv
, "Number of bytes free inreeeafages",

281 (
u_lg
)

->
bt_af_pg
, 
	`DB_PCT_PG
(

282 

->
bt_af_pg
, sp->
bt_af_pg
, sp->
bt_gesize
), "ff");

284 
	`__db_dl
(
dbv
,

285 "Numb o duiages", (
u_lg
)

->
bt_dup_pg
);

286 
	`__db_dl_p
(
dbv
,

288 (
u_lg
)

->
bt_dup_pg
,

289 
	`DB_PCT_PG
(

->
bt_dup_pg
, sp->
bt_dup_pg
, sp->
bt_gesize
), "ff");

291 
	`__db_dl
(
dbv
,

292 "Numb o ovowages", (
u_lg
)

->
bt_ov_pg
);

293 
	`__db_dl_p
(
dbv
, "Number of bytes free inree overflowages",

294 (
u_lg
)

->
bt_ov_pg
, 
	`DB_PCT_PG
(

295 

->
bt_ov_pg
, sp->
bt_ov_pg
, sp->
bt_gesize
), "ff");

296 
	`__db_dl
(
dbv
, "Numb oemyages", (
u_lg
)

->
bt_emy_pg
);

298 
	`__db_dl
(
dbv
, "Numb ogeځh䓆i", (
u_lg
)

->
bt_
);

300 
	`__os_u
(
dbv
, 

);

303 
	}
}

312 
	$__bam__back
(
dbp
, 
h
, 
cook
, 
pu
)

313 
DB
 *
dbp
;

314 
PAGE
 *
h
;

315 *
cook
;

316 *
pu
;

318 
DB_BTREE_STAT
 *

;

319 
db_dx_t
 
dx
, *
p
, 
t
;

320 
u_t8_t
 
ty
;

322 

 = 
cook
;

323 *
pu
 = 0;

324 
t
 = 
	`NUM_ENT
(
h
);

325 
p
 = 
	`P_INP
(
dbp
, 
h
);

327 
	`TYPE
(
h
)) {

328 
P_IBTREE
:

329 
P_IRECNO
:

330 ++

->
bt_t_pg
;

331 

->
bt_t_pg
 +
	`P_FREESPACE
(
dbp
, 
h
);

333 
P_LBTREE
:

334 i(
t
 == 0)

335 ++

->
bt_emy_pg
;

338 
dx
 = 0; indx < 
t
; indx +
P_INDX
) {

339 
ty
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
 + 
O_INDX
)->type;

341 i(
	`B_DISSET
(
ty
))

345 i(
dx
 + 
P_INDX
 >
t
 ||

346 
p
[
dx
] !p[dx + 
P_INDX
])

347 ++

->
bt_nkeys
;

350 i(
	`B_TYPE
(
ty
!
B_DUPLICATE
)

351 ++

->
bt_nda
;

354 ++

->
bt_af_pg
;

355 

->
bt_af_pg
 +
	`P_FREESPACE
(
dbp
, 
h
);

357 
P_LRECNO
:

358 i(
t
 == 0)

359 ++

->
bt_emy_pg
;

365 i(
dbp
->
ty
 =
DB_RECNO
) {

370 i(
	`F_ISSET
(
dbp
, 
DB_AM_RENUMBER
)) {

371 

->
bt_nkeys
 +
t
;

372 

->
bt_nda
 +
t
;

374 
dx
 = 0; indx < 
t
; indx +
O_INDX
) {

375 
ty
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
)->type;

376 i(!
	`B_DISSET
(
ty
)) {

377 ++

->
bt_nda
;

378 ++

->
bt_nkeys
;

382 ++

->
bt_af_pg
;

383 

->
bt_af_pg
 +
	`P_FREESPACE
(
dbp
, 
h
);

385 

->
bt_nda
 +
t
;

387 ++

->
bt_dup_pg
;

388 

->
bt_dup_pg
 +
	`P_FREESPACE
(
dbp
, 
h
);

391 
P_LDUP
:

392 i(
t
 == 0)

393 ++

->
bt_emy_pg
;

396 
dx
 = 0; indx < 
t
; indx +
O_INDX
)

397 i(!
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
)->
ty
))

398 ++

->
bt_nda
;

400 ++

->
bt_dup_pg
;

401 

->
bt_dup_pg
 +
	`P_FREESPACE
(
dbp
, 
h
);

403 
P_OVERFLOW
:

404 ++

->
bt_ov_pg
;

405 

->
bt_ov_pg
 +
	`P_OVFLSPACE
(
dbp
, dbp->
pgsize
, 
h
);

408  (
	`__db_pgfmt
(
dbp
->
dbv
, 
h
->
pgno
));

411 
	}
}

420 
	$__bam_t_curs
(
dbc
)

421 
DBC
 *
dbc
;

423 cڡ 
FN
 

[] = {

424 { 
C_DELETED
, "C_DELETED" },

425 { 
C_RECNUM
, "C_RECNUM" },

426 { 
C_RENUMBER
, "C_RENUMBER" },

427 { 0, 
NULL
 }

429 
DB_ENV
 *
dbv
;

430 
BTREE_CURSOR
 *

;

432 
dbv
 = 
dbc
->
dbp
->dbenv;

433 

 = (
BTREE_CURSOR
 *)
dbc
->

;

435 
	`STAT_ULONG
("Ovow size", 

->
ovsize
);

436 i(
dbc
->
dbty
 =
DB_RECNO
)

437 
	`STAT_ULONG
("Reo", 

->
o
);

438 
	`STAT_ULONG
("Ord", 

->
d
);

439 
	`__db_ags
(
dbv
, 
NULL
, 

->
ags
, 

, NULL, "\tInternal Flags");

440 
	}
}

445 
	$__bam_
(
dbc
, 
p
, 
ags
)

446 
DBC
 *
dbc
;

447 *
p
;

448 
u_t32_t
 
ags
;

450 
	`COMPQUIET
(
p
, 
NULL
);

451 
	`COMPQUIET
(
ags
, 0);

453  (
	`__db__n_but
(
dbc
->
dbp
->
dbv
));

454 
	}
}

457 
	$__bam__t
(
dbc
, 
ags
)

458 
DBC
 *
dbc
;

459 
u_t32_t
 
ags
;

461 
	`COMPQUIET
(
ags
, 0);

463  (
	`__db__n_but
(
dbc
->
dbp
->
dbv
));

464 
	}
}

467 #ide
HAVE_BREW


476 
	$__bam_key_nge
(
dbc
, 
dbt
, 
kp
, 
ags
)

477 
DBC
 *
dbc
;

478 
DBT
 *
dbt
;

479 
DB_KEY_RANGE
 *
kp
;

480 
u_t32_t
 
ags
;

482 
BTREE_CURSOR
 *

;

483 
EPG
 *

;

484 

;

485 
exa
, 
t
;

487 
	`COMPQUIET
(
ags
, 0);

489 i((
t
 = 
	`__bam_ch
(
dbc
, 
PGNO_INVALID
,

490 
dbt
, 
SR_STK_ONLY
, 1, 
NULL
, &
exa
)) != 0)

491  (
t
);

493 

 = (
BTREE_CURSOR
 *)
dbc
->

;

494 
kp
->
ss
 = kp->
g
 = 0.0;

496 

 = 1.0;

499 

->
c
->
s
 /= 2;

500 

->
c
->
dx
 /= 2;

501 

 = 

->; s<->
c
; ++sp) {

510 i(

->
dx
 == 0)

511 
kp
->
g
 +

 * (

->
s
 - 1)/sp->entries;

512 i(

->
dx
 =->
s
)

513 
kp
->
ss
 +

;

515 
kp
->
ss
 +

 * 

->
dx
 / sp->
s
;

516 
kp
->
g
 +

 *

517 ((

->
s
 - sp->
dx
) - 1) / sp->entries;

519 

 *1.0/

->
s
;

527 i(
exa
)

528 
kp
->
equ
 = 

;

530 i(
kp
->
ss
 != 1)

531 
kp
->
g
 +

;

532 
kp
->
equ
 = 0;

535 
	`BT_STK_CLR
(

);

538 
	}
}

549 
	$__bam_av
(
dbc
, 
mode
, 
ro_pgno
, 
back
, 
cook
)

550 
DBC
 *
dbc
;

551 
db_lockmode_t
 
mode
;

552 
db_pgno_t
 
ro_pgno
;

553 (*
back
)
	`__P
((
DB
 *, 
PAGE
 *, *, *));

554 *
cook
;

556 
BINTERNAL
 *
bi
;

557 
BKEYDATA
 *
bk
;

558 
DB
 *
dbp
;

559 
DB_LOCK
 
lock
;

560 
DB_MPOOLFILE
 *
mpf
;

561 
PAGE
 *
h
;

562 
RINTERNAL
 *
ri
;

563 
db_dx_t
 
dx
, *
p
;

564 
ady_put
, 
t
, 
t_t
;

566 
dbp
 = 
dbc
->dbp;

567 
mpf
 = 
dbp
->mpf;

568 
ady_put
 = 0;

570 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
ro_pgno
, 
mode
, 0, &
lock
)) != 0)

571  (
t
);

572 i((
t
 = 
	`__memp_fg
(
mpf
, &
ro_pgno
, 
dbc
->
txn
, 0, &
h
)) != 0) {

573 ()
	`__TLPUT
(
dbc
, 
lock
);

574  (
t
);

577 
	`TYPE
(
h
)) {

578 
P_IBTREE
:

579 
dx
 = 0; indx < 
	`NUM_ENT
(
h
); indx +
O_INDX
) {

580 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 
dx
);

581 i(
	`B_TYPE
(
bi
->
ty
=
B_OVERFLOW
 &&

582 (
t
 = 
	`__db_av_big
(
dbp
,

583 ((
BOVERFLOW
 *)
bi
->
da
)->
pgno
, 
dbc
->
txn
,

584 
back
, 
cook
)) != 0)

585 
r
;

586 i((
t
 = 
	`__bam_av
(

587 
dbc
, 
mode
, 
bi
->
pgno
, 
back
, 
cook
)) != 0)

588 
r
;

591 
P_IRECNO
:

592 
dx
 = 0; indx < 
	`NUM_ENT
(
h
); indx +
O_INDX
) {

593 
ri
 = 
	`GET_RINTERNAL
(
dbp
, 
h
, 
dx
);

594 i((
t
 = 
	`__bam_av
(

595 
dbc
, 
mode
, 
ri
->
pgno
, 
back
, 
cook
)) != 0)

596 
r
;

599 
P_LBTREE
:

600 
p
 = 
	`P_INP
(
dbp
, 
h
);

601 
dx
 = 0; indx < 
	`NUM_ENT
(
h
); indx +
P_INDX
) {

602 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
);

603 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
 &&

604 (
dx
 + 
P_INDX
 >
	`NUM_ENT
(
h
) ||

605 
p
[
dx
] !p[dx + 
P_INDX
])) {

606 i((
t
 = 
	`__db_av_big
(
dbp
,

607 
	`GET_BOVERFLOW
(
dbp
, 
h
, 
dx
)->
pgno
,

608 
dbc
->
txn
, 
back
, 
cook
)) != 0)

609 
r
;

611 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
 + 
O_INDX
);

612 i(
	`B_TYPE
(
bk
->
ty
=
B_DUPLICATE
 &&

613 (
t
 = 
	`__bam_av
(
dbc
, 
mode
,

614 
	`GET_BOVERFLOW
(
dbp
, 
h
, 
dx
 + 
O_INDX
)->
pgno
,

615 
back
, 
cook
)) != 0)

616 
r
;

617 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
 &&

618 (
t
 = 
	`__db_av_big
(
dbp
,

619 
	`GET_BOVERFLOW
(
dbp
, 
h
, 
dx
 + 
O_INDX
)->
pgno
,

620 
dbc
->
txn
, 
back
, 
cook
)) != 0)

621 
r
;

624 
P_LDUP
:

625 
P_LRECNO
:

626 
dx
 = 0; indx < 
	`NUM_ENT
(
h
); indx +
O_INDX
) {

627 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
);

628 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
 &&

629 (
t
 = 
	`__db_av_big
(
dbp
,

630 
	`GET_BOVERFLOW
(
dbp
, 
h
, 
dx
)->
pgno
, 
dbc
->
txn
,

631 
back
, 
cook
)) != 0)

632 
r
;

636  (
	`__db_pgfmt
(
dbp
->
dbv
, 
h
->
pgno
));

639 
t
 = 
	`back
(
dbp
, 
h
, 
cook
, &
ady_put
);

641 
r
: i(!
ady_put
 &&

642 (
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

643 
t
 = 
t_t
;

644 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

645 
t
 = 
t_t
;

647  (
t
);

648 
	}
}

	@../btree/bt_upgrade.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_upgde.h
"

14 
	~"dbc/b.h
"

23 
	$__bam_30_bma
(
dbp
, 
_me
, 
buf
)

24 
DB
 *
dbp
;

25 *
_me
;

26 
u_t8_t
 *
buf
;

28 
BTMETA30
 *
wma
;

29 
BTMETA2X
 *
dma
;

30 
DB_ENV
 *
dbv
;

31 
t
;

33 
dbv
 = 
dbp
->dbenv;

35 
wma
 = (
BTMETA30
 *)
buf
;

36 
dma
 = (
BTMETA2X
 *)
buf
;

44 
wma
->
_d
 = 
dma
->re_pad;

45 
wma
->
_n
 = 
dma
->re_len;

46 
wma
->
mkey
 = 
dma
->minkey;

47 
wma
->
maxkey
 = 
dma
->maxkey;

48 
wma
->
dbma
.

 = 
dma
->free;

49 
wma
->
dbma
.
ags
 = 
dma
->flags;

50 
wma
->
dbma
.
ty
 = 
P_BTREEMETA
;

52 
wma
->
dbma
.
vsi
 = 7;

54 i((
t
 = 
	`__os_feid
(
dbv
, 
_me
, 1, 
buf
 + 36)) != 0)

55  (
t
);

57 
wma
->
ro
 = 1;

60 
	}
}

70 
	$__bam_31_bma
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

71 
DB
 *
dbp
;

72 *
_me
;

73 
u_t32_t
 
ags
;

74 
DB_FH
 *
fhp
;

75 
PAGE
 *
h
;

76 *
dtyp
;

78 
BTMETA31
 *
wma
;

79 
BTMETA30
 *
dma
;

81 
	`COMPQUIET
(
dbp
, 
NULL
);

82 
	`COMPQUIET
(
_me
, 
NULL
);

83 
	`COMPQUIET
(
fhp
, 
NULL
);

85 
wma
 = (
BTMETA31
 *)
h
;

86 
dma
 = (
BTMETA30
 *)
h
;

93 
wma
->
ro
 = 
dma
->root;

94 
wma
->
_d
 = 
dma
->re_pad;

95 
wma
->
_n
 = 
dma
->re_len;

96 
wma
->
mkey
 = 
dma
->minkey;

97 
wma
->
maxkey
 = 
dma
->maxkey;

98 
	`memmove
(
wma
->
dbma
.
uid
,

99 
dma
->
dbma
.
uid
, (oldmeta->dbmeta.uid));

100 
wma
->
dbma
.
ags
 = 
dma
->dbmeta.flags;

101 
wma
->
dbma
.
cd_cou
 = 0;

102 
wma
->
dbma
.
key_cou
 = 0;

103 
	`ZERO_LSN
(
wma
->
dbma
.
unud3
);

106 
wma
->
dbma
.
vsi
 = 8;

109 i(
	`LF_ISSET
(
DB_DUPSORT
))

110 
	`F_SET
(&
wma
->
dbma
, 
BTM_DUPSORT
);

112 *
dtyp
 = 1;

114 
	}
}

124 
	$__bam_31_lb
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

125 
DB
 *
dbp
;

126 *
_me
;

127 
u_t32_t
 
ags
;

128 
DB_FH
 *
fhp
;

129 
PAGE
 *
h
;

130 *
dtyp
;

132 
BKEYDATA
 *
bk
;

133 
db_pgno_t
 
pgno
;

134 
db_dx_t
 
dx
;

135 
t
;

137 
t
 = 0;

138 
dx
 = 
O_INDX
; indx < 
	`NUM_ENT
(
h
); indx +
P_INDX
) {

139 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
);

140 i(
	`B_TYPE
(
bk
->
ty
=
B_DUPLICATE
) {

141 
pgno
 = 
	`GET_BOVERFLOW
(
dbp
, 
h
, 
dx
)->pgno;

142 i((
t
 = 
	`__db_31_offdup
(
dbp
, 
_me
, 
fhp
,

143 
	`LF_ISSET
(
DB_DUPSORT
? 1 : 0, &
pgno
)) != 0)

145 i(
pgno
 !
	`GET_BOVERFLOW
(
dbp
, 
h
, 
dx
)->pgno) {

146 *
dtyp
 = 1;

147 
	`GET_BOVERFLOW
(
dbp
, 
h
, 
dx
)->
pgno
 =gno;

152  (
t
);

153 
	}
}

	@../btree/bt_verify.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_vify.h
"

14 
	~"dbc/b.h
"

15 
	~"dbc/mp.h
"

17 
__bam__gda
 
__P
((
DB
 *, 
PAGE
 *, 
u_t32_t
, , 
DBT
 *, *));

18 
__bam_vrfy_p
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
,

19 
db_dx_t
 *, 
u_t32_t
));

20 
__bam_vrfy_d
 
__P
((
DB
 *, 
PAGE
 *, 
BINTERNAL
 *,

21 
BINTERNAL
 *, (*)(
DB
 *, cڡ 
DBT
 *, cڡ DBT *), 
u_t32_t
));

22 
__m_vrfy_p
 
	`__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
,

23 
db_dx_t
 *, 
u_t32_t
));

33 
	$__bam_vrfy_ma
(
dbp
, 
vdp
, 
ma
, 
pgno
, 
ags
)

34 
DB
 *
dbp
;

35 
VRFY_DBINFO
 *
vdp
;

36 
BTMETA
 *
ma
;

37 
db_pgno_t
 
pgno
;

38 
u_t32_t
 
ags
;

40 
DB_ENV
 *
dbv
;

41 
VRFY_PAGEINFO
 *
p
;

42 
isbad
, 
t_t
, 
t
;

43 
db_dx_t
 
ovsize
;

45 
dbv
 = 
dbp
->dbenv;

46 
isbad
 = 0;

48 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

49  (
t
);

60 i(!
	`F_ISSET
(
p
, 
VRFY_INCOMPLETE
) &&

61 (
t
 = 
	`__db_vrfy_ma
(
dbp
, 
vdp
, &
ma
->
dbma
, 
pgno
, 
ags
)) != 0) {

62 i(
t
 =
DB_VERIFY_BAD
)

63 
isbad
 = 1;

65 
r
;

71 
ovsize
 = 
ma
->
mkey
 > 0 ?

72 
	`B_MINKEY_TO_OVFLSIZE
(
dbp
, 
ma
->
mkey
, dbp->
pgsize
) : 0;

74 i(
ma
->
mkey
 < 2 ||

75 
ovsize
 > 
	`B_MINKEY_TO_OVFLSIZE
(
dbp
, 
DEFMINKEYPAGE
, dbp->
pgsize
)) {

76 
p
->
bt_mkey
 = 0;

77 
isbad
 = 1;

78 
	`EPRINT
((
dbv
,

80 (
u_lg
)
pgno
, (u_lg)
ma
->
mkey
));

82 
p
->
bt_mkey
 = 
ma
->
mkey
;

85 
p
->
_d
 = 
ma
->re_pad;

86 
p
->
_n
 = 
ma
->re_len;

93 
p
->
ro
 = 0;

94 i(
ma
->
ro
 =
PGNO_INVALID
 ||

95 
ma
->
ro
 =
pgno
 || !
	`IS_VALID_PGNO
(meta->root) ||

96 (
pgno
 =
PGNO_BASE_MD
 && 
ma
->
ro
 != 1)) {

97 
isbad
 = 1;

98 
	`EPRINT
((
dbv
,

100 (
u_lg
)
pgno
, (u_lg)
ma
->
ro
));

102 
p
->
ro
 = 
ma
->root;

105 i(
	`F_ISSET
(&
ma
->
dbma
, 
BTM_RENUMBER
))

106 
	`F_SET
(
p
, 
VRFY_IS_RRECNO
);

108 i(
	`F_ISSET
(&
ma
->
dbma
, 
BTM_SUBDB
)) {

113 i(
	`F_ISSET
(&
ma
->
dbma
, 
BTM_DUP
&& 
pgno
 =
PGNO_BASE_MD
) {

114 
isbad
 = 1;

115 
	`EPRINT
((
dbv
,

117 (
u_lg
)
pgno
));

119 
	`F_SET
(
p
, 
VRFY_HAS_SUBDBS
);

122 i(
	`F_ISSET
(&
ma
->
dbma
, 
BTM_DUP
))

123 
	`F_SET
(
p
, 
VRFY_HAS_DUPS
);

124 i(
	`F_ISSET
(&
ma
->
dbma
, 
BTM_DUPSORT
))

125 
	`F_SET
(
p
, 
VRFY_HAS_DUPSORT
);

126 i(
	`F_ISSET
(&
ma
->
dbma
, 
BTM_RECNUM
))

127 
	`F_SET
(
p
, 
VRFY_HAS_RECNUMS
);

128 i(
	`F_ISSET
(
p
, 
VRFY_HAS_RECNUMS
&& F_ISSET՝, 
VRFY_HAS_DUPS
)) {

129 
	`EPRINT
((
dbv
,

131 (
u_lg
)
pgno
));

132 
isbad
 = 1;

135 i(
	`F_ISSET
(&
ma
->
dbma
, 
BTM_RECNO
)) {

136 
	`F_SET
(
p
, 
VRFY_IS_RECNO
);

137 
dbp
->
ty
 = 
DB_RECNO
;

138 } i(
	`F_ISSET
(
p
, 
VRFY_IS_RRECNO
)) {

139 
isbad
 = 1;

140 
	`EPRINT
((
dbv
,

142 (
u_lg
)
pgno
));

145 i(
	`F_ISSET
(
p
, 
VRFY_IS_RECNO
&& F_ISSET՝, 
VRFY_HAS_DUPS
)) {

146 
	`EPRINT
((
dbv
,

148 (
u_lg
)
pgno
));

149 
isbad
 = 1;

152 i(
	`F_ISSET
(&
ma
->
dbma
, 
BTM_FIXEDLEN
))

153 
	`F_SET
(
p
, 
VRFY_IS_FIXEDLEN
);

154 i(
p
->
_n
 > 0) {

159 
isbad
 = 1;

160 
	`EPRINT
((
dbv
,

162 (
u_lg
)
pgno
, (u_lg)
p
->
_n
));

170 
r
: i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

171 
t
 = 
t_t
;

172 i(
	`LF_ISSET
(
DB_SALVAGE
) &&

173 (
t_t
 = 
	`__db_lvage_mkde
(
vdp
, 
pgno
)!0 && 
t
 == 0)

174 
t
 = 
t_t
;

175  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

176 
	}
}

186 
	$__m_vrfy_af
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

187 
DB
 *
dbp
;

188 
VRFY_DBINFO
 *
vdp
;

189 
PAGE
 *
h
;

190 
db_pgno_t
 
pgno
;

191 
u_t32_t
 
ags
;

193 
BKEYDATA
 *
bk
;

194 
DB_ENV
 *
dbv
;

195 
VRFY_PAGEINFO
 *
p
;

196 
db_dx_t
 
i
;

197 
t
, 
t_t
, 
isbad
;

198 
u_t32_t
 
_n_guess
, 
n
;

200 
dbv
 = 
dbp
->dbenv;

201 
isbad
 = 0;

203 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

204  (
t
);

206 i(
	`TYPE
(
h
!
P_LRECNO
) {

207 
t
 = 
	`__db_unknown_th
(
dbv
, "__ram_vrfy_leaf");

208 
r
;

215 i((
t
 = 
	`__db_vrfy_dage
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)) != 0) {

216 i(
t
 =
DB_VERIFY_BAD
)

217 
isbad
 = 1;

219 
r
;

226 i((
t
 = 
	`__bam_vrfy_p
(
dbp
,

227 
vdp
, 
h
, 
pgno
, &
p
->
s
, 
ags
)) != 0)

228 
r
;

230 i(
	`F_ISSET
(
p
, 
VRFY_HAS_DUPS
)) {

231 
	`EPRINT
((
dbv
,

232 "Pag%lu: Redaba hadups", (
u_lg
)
pgno
));

233 
t
 = 
DB_VERIFY_BAD
;

234 
r
;

243 
_n_guess
 = 0;

244 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++) {

245 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
);

247 i(
	`B_DISSET
(
bk
->
ty
))

249 i(
bk
->
ty
 =
B_OVERFLOW
)

250 
n
 = ((
BOVERFLOW
 *)
bk
)->

;

251 i(
bk
->
ty
 =
B_KEYDATA
)

252 
n
 = 
bk
->len;

254 
isbad
 = 1;

255 
	`EPRINT
((
dbv
,

257 (
u_lg
)
pgno
, (u_lg)
i
));

260 i(
_n_guess
 == 0)

261 
_n_guess
 = 
n
;

268 i(
_n_guess
 !
n
) {

269 
_n_guess
 = 0;

273 
p
->
_n
 = 
_n_guess
;

276 
p
->
c_t
 = 
	`NUM_ENT
(
h
);

278 
r
: i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

279 
t
 = 
t_t
;

280  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

281 
	}
}

291 
	$__bam_vrfy
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

292 
DB
 *
dbp
;

293 
VRFY_DBINFO
 *
vdp
;

294 
PAGE
 *
h
;

295 
db_pgno_t
 
pgno
;

296 
u_t32_t
 
ags
;

298 
DB_ENV
 *
dbv
;

299 
VRFY_PAGEINFO
 *
p
;

300 
t
, 
t_t
, 
isbad
;

302 
dbv
 = 
dbp
->dbenv;

303 
isbad
 = 0;

305 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

306  (
t
);

308 
	`TYPE
(
h
)) {

309 
P_IBTREE
:

310 
P_IRECNO
:

311 
P_LBTREE
:

312 
P_LDUP
:

315 
t
 = 
	`__db_unknown_th
(
dbv
, "__bam_vrfy");

316 
r
;

323 i((
t
 = 
	`__db_vrfy_dage
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)) != 0) {

324 i(
t
 =
DB_VERIFY_BAD
)

325 
isbad
 = 1;

327 
r
;

337 
p
->
c_t
 = 
	`RE_NREC
(
h
);

342 i(
	`TYPE
(
h
=
P_IRECNO
) {

343 i((
t
 = 
	`__m_vrfy_p
(
dbp
,

344 
vdp
, 
h
, 
pgno
, &
p
->
s
, 
ags
)) != 0)

345 
r
;

346 } i((
t
 = 
	`__bam_vrfy_p
(
dbp
,

347 
vdp
, 
h
, 
pgno
, &
p
->
s
, 
ags
)) != 0) {

348 i(
t
 =
DB_VERIFY_BAD
)

349 
isbad
 = 1;

351 
r
;

352 
	`EPRINT
((
dbv
,

354 (
u_lg
)
pgno
));

355 } i(!
	`LF_ISSET
(
DB_NOORDERCHK
&& (
t
 =

356 
	`__bam_vrfy_emd
(
dbp
, 
vdp
, 
h
, 
pgno
, 0, 0, 0, 
ags
)) != 0) {

362 i(
t
 =
DB_VERIFY_BAD
)

363 
isbad
 = 1;

365 
r
;

368 
r
: i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

369 
t
 = 
t_t
;

370  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

371 
	}
}

381 
	$__m_vrfy_p
(
dbp
, 
vdp
, 
h
, 
pgno
, 
r
, 
ags
)

382 
DB
 *
dbp
;

383 
VRFY_DBINFO
 *
vdp
;

384 
PAGE
 *
h
;

385 
db_pgno_t
 
pgno
;

386 
db_dx_t
 *
r
;

387 
u_t32_t
 
ags
;

389 
DB_ENV
 *
dbv
;

390 
RINTERNAL
 *
ri
;

391 
VRFY_CHILDINFO
 
chd
;

392 
VRFY_PAGEINFO
 *
p
;

393 
t
, 
t_t
, 
isbad
;

394 
u_t32_t
 
himk
, 
i
, 
offt
, 
rs
;

395 
db_dx_t
 *
p
;

396 
u_t8_t
 *
gayout
, *
p
;

398 
dbv
 = 
dbp
->dbenv;

399 
isbad
 = 0;

400 
	`memt
(&
chd
, 0, (
VRFY_CHILDINFO
));

401 
rs
 = 0;

402 
gayout
 = 
NULL
;

404 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

405  (
t
);

407 i(
	`TYPE
(
h
!
P_IRECNO
) {

408 
t
 = 
	`__db_unknown_th
(
dbv
, "__ram_vrfy_inp");

409 
r
;

412 
himk
 = 
dbp
->
pgsize
;

413 i((
t
 = 
	`__os_mloc
(
dbv
, 
dbp
->
pgsize
, &
gayout
)) != 0)

414 
r
;

415 
	`memt
(
gayout
, 0, 
dbp
->
pgsize
);

416 
p
 = 
	`P_INP
(
dbp
, 
h
);

417 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++) {

418 i((
u_t8_t
 *)
p
 + 
i
 >(u_t8_*)
h
 + 
himk
) {

419 
	`EPRINT
((
dbv
,

421 (
u_lg
)
pgno
, (u_lg)
i
));

422 
t
 = 
DB_VERIFY_BAD
;

423 
r
;

425 
offt
 = 
p
[
i
];

431 i(
offt
 <(
u_t32_t
)((
u_t8_t
 *)
p
 + 
i
 -

432 (
u_t8_t
 *)
h
) ||

433 
offt
 > (
u_t32_t
)(
dbp
->
pgsize
 - 
RINTERNAL_SIZE
)) {

434 
isbad
 = 1;

435 
	`EPRINT
((
dbv
,

437 (
u_lg
)
pgno
, (u_lg)
offt
, (u_lg)
i
));

442 i(
offt
 < 
himk
)

443 
himk
 = 
offt
;

445 
rs
++;

448 
ri
 = 
	`GET_RINTERNAL
(
dbp
, 
h
, 
i
);

449 i(
gayout
[
offt
] == 0) {

450 
gayout
[
offt
] = 1;

451 
chd
.
pgno
 = 
ri
->pgno;

452 
chd
.
ty
 = 
V_RECNO
;

453 
chd
.
ecs
 = 
ri
->nrecs;

454 i((
t
 = 
	`__db_vrfy_chdput
(
vdp
, 
pgno
, &
chd
)) != 0)

455 
r
;

457 
	`EPRINT
((
dbv
,

459 (
u_lg
)
pgno
, (u_lg)
offt
));

460 
isbad
 = 1;

464 
p
 = 
gayout
 + 
himk
;

465 
p
 < 
gayout
 + 
dbp
->
pgsize
;

466 
p
 +
RINTERNAL_SIZE
)

467 i(*
p
 != 1) {

468 
	`EPRINT
((
dbv
,

470 (
u_lg
)
pgno
, (u_lg)(
p
 - 
gayout
)));

471 
isbad
 = 1;

474 i((
db_dx_t
)
himk
 !
	`HOFFSET
(
h
)) {

475 
	`EPRINT
((
dbv
,

477 (
u_lg
)
pgno
, (u_lg)(
	`HOFFSET
(
h
)), (u_lg)
himk
));

478 
isbad
 = 1;

481 *
r
 = 
rs
;

483 
r
: i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

484 
t
 = 
t_t
;

485 i(
gayout
 !
NULL
)

486 
	`__os_
(
dbv
, 
gayout
);

487  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

488 
	}
}

490 um { 
	mVRFY_ITEM_NOTSET
=0, 
	mVRFY_ITEM_BEGIN
, 
	mVRFY_ITEM_END
 } 
	tVRFY_ITEM
;

498 
	$__bam_vrfy_p
(
dbp
, 
vdp
, 
h
, 
pgno
, 
r
, 
ags
)

499 
DB
 *
dbp
;

500 
VRFY_DBINFO
 *
vdp
;

501 
PAGE
 *
h
;

502 
db_pgno_t
 
pgno
;

503 
db_dx_t
 *
r
;

504 
u_t32_t
 
ags
;

506 
BKEYDATA
 *
bk
;

507 
BOVERFLOW
 *
bo
;

508 
DB_ENV
 *
dbv
;

509 
VRFY_CHILDINFO
 
chd
;

510 
VRFY_ITEM
 *
gayout
;

511 
VRFY_PAGEINFO
 *
p
;

512 
u_t32_t
 
himk
, 
offt
;

516 
u_t32_t
 
i
, 
doff
, 
rs
;

517 
isbad
, 
em
, 
isdupem
, 
t
, 
t_t
;

519 
dbv
 = 
dbp
->dbenv;

520 
isbad
 = 
isdupem
 = 0;

521 
rs
 = 0;

522 
	`memt
(&
chd
, 0, (
VRFY_CHILDINFO
));

523 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

524  (
t
);

526 
	`TYPE
(
h
)) {

527 
P_IBTREE
:

528 
P_LBTREE
:

529 
P_LDUP
:

530 
P_LRECNO
:

538 i(
	`LF_ISSET
(
DB_SALVAGE
))

540 
t
 = 
	`__db_unknown_th
(
dbv
, "__bam_vrfy_inp");

541 
r
;

555 
himk
 = 
dbp
->
pgsize
;

556 i((
t
 = 
	`__os_oc
(

557 
dbv
, 
dbp
->
pgsize
, (
gayout
[0]), &pagelayout)) != 0)

558 
r
;

559 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++) {

560 
t
 = 
	`__db_vrfy_pem
(
dbp
,

561 
h
, 
pgno
, 
i
, 1, 
ags
, &
himk
, &
offt
)) {

564 
DB_VERIFY_BAD
:

565 
isbad
 = 1;

567 
DB_VERIFY_FATAL
:

568 
isbad
 = 1;

569 
r
;

571 
	`DB_ASSERT
(
dbv
, 
t
 != 0);

582 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
);

583 i(
gayout
[
offt
] =
VRFY_ITEM_NOTSET
)

584 
gayout
[
offt
] = 
VRFY_ITEM_BEGIN
;

585 i(
gayout
[
offt
] =
VRFY_ITEM_BEGIN
) {

592 i((
i
 % 
P_INDX
 =0&& (
	`TYPE
(
h
=
P_LBTREE
)) {

594 
	`F_SET
(
p
, 
VRFY_HAS_DUPS
);

597 
rs
++;

603 
isdupem
 = 1;

605 
isbad
 = 1;

606 
	`EPRINT
((
dbv
, "Page %lu: duplicated item %lu",

607 (
u_lg
)
pgno
, (u_lg)
i
));

618 
	`B_TYPE
(
bk
->
ty
)) {

619 
B_KEYDATA
:

620 i(
	`TYPE
(
h
=
P_IBTREE
)

622 
doff
 = 
offt
 + 
	`BINTERNAL_SIZE
(
bk
->
n
) - 1;

624 
doff
 = 
offt
 + 
	`BKEYDATA_SIZE
(
bk
->
n
) - 1;

626 
B_DUPLICATE
:

631 
	`F_SET
(
p
, 
VRFY_HAS_DUPS
);

633 
B_OVERFLOW
:

639 
doff
 = 
offt
 +

640 ((
	`TYPE
(
h
=
P_IBTREE
) ?

641 
	`BINTERNAL_SIZE
(
BOVERFLOW_SIZE
) :

642 
BOVERFLOW_SIZE
) - 1;

649 
doff
 = 
offt
 + 
	`BKEYDATA_SIZE
(0) - 1;

657 i(
isdupem
 && 
gayout
[
doff
] !
VRFY_ITEM_END
) {

658 
	`EPRINT
((
dbv
, "Page %lu: duplicated item %lu",

659 (
u_lg
)
pgno
, (u_lg)
i
));

660 
isbad
 = 1;

661 } i(
gayout
[
doff
] =
VRFY_ITEM_NOTSET
)

662 
gayout
[
doff
] = 
VRFY_ITEM_END
;

663 
isdupem
 = 0;

669 i(
	`B_DISSET
(
bk
->
ty
&& 
	`TYPE
(
h
!
P_LRECNO
) {

670 
isbad
 = 1;

671 
	`EPRINT
((
dbv
, "Page %lu: item %lu marked deleted",

672 (
u_lg
)
pgno
, (u_lg)
i
));

679 
	`B_TYPE
(
bk
->
ty
)) {

680 
B_KEYDATA
:

687 
B_DUPLICATE
:

688 i(
	`TYPE
(
h
=
P_IBTREE
) {

689 
isbad
 = 1;

690 
	`EPRINT
((
dbv
,

692 (
u_lg
)
pgno
, (u_lg)
i
));

694 } i(
	`TYPE
(
h
=
P_LRECNO
) {

695 
isbad
 = 1;

696 
	`EPRINT
((
dbv
,

698 (
u_lg
)
pgno
, (u_lg)
i
));

702 
B_OVERFLOW
:

703 
bo
 = (
	`TYPE
(
h
=
P_IBTREE
) ?

704 (
BOVERFLOW
 *)(((
BINTERNAL
 *)
bk
)->
da
) :

705 (
BOVERFLOW
 *)
bk
;

707 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
)

709 i(
bo
->

 > 
dbp
->
pgsize
 * 
vdp
->
ϡ_pgno
) {

710 
isbad
 = 1;

711 
	`EPRINT
((
dbv
,

713 (
u_lg
)
pgno
,

714 (
u_lg
)
bo
->

, (u_lg)
i
));

719 i(!
	`IS_VALID_PGNO
(
bo
->
pgno
) || bo->pgno ==gno ||

720 
bo
->
pgno
 =
PGNO_INVALID
) {

721 
isbad
 = 1;

722 
	`EPRINT
((
dbv
,

724 (
u_lg
)
pgno
, (u_lg)
i
, (u_lg)
bo
->pgno));

729 
chd
.
pgno
 = 
bo
->pgno;

730 
chd
.
ty
 = (
	`B_TYPE
(
bk
->ty=
B_OVERFLOW
 ?

731 
V_OVERFLOW
 : 
V_DUPLICATE
);

732 
chd
.

 = 
bo
->tlen;

733 i((
t
 = 
	`__db_vrfy_chdput
(
vdp
, 
pgno
, &
chd
)) != 0)

734 
r
;

737 
isbad
 = 1;

738 
	`EPRINT
((
dbv
, "Page %lu: item %lu of invalidype %lu",

739 (
u_lg
)
pgno
, (u_lg)
i
, (u_lg)
	`B_TYPE
(
bk
->
ty
)));

748 
em
 = 0;

749 
i
 = 
himk
; i < 
dbp
->
pgsize
; i++)

750 i(
em
 == 0)

751 
gayout
[
i
]) {

752 
VRFY_ITEM_NOTSET
:

754 i(
i
 !
	`DB_ALIGN
(i, (
u_t32_t
)))

757 
isbad
 = 1;

758 
	`EPRINT
((
dbv
,

760 (
u_lg
)
pgno
, (u_lg)
i
));

762 ; 
gayout
[
i
 + 1] =
VRFY_ITEM_NOTSET
 &&

763 (
size_t
)(
i
 + 1< 
dbp
->
pgsize
; i++)

766 
VRFY_ITEM_BEGIN
:

768 i(
i
 !
	`DB_ALIGN
(i, (
u_t32_t
))) {

769 
isbad
 = 1;

770 
	`EPRINT
((
dbv
,

772 (
u_lg
)
pgno
, (u_lg)
i
));

774 
em
 = 1;

775 
rs
++;

777 
VRFY_ITEM_END
:

783 
isbad
 = 1;

784 
	`EPRINT
((
dbv
,

786 (
u_lg
)
pgno
, (u_lg)
i
));

790 
gayout
[
i
]) {

791 
VRFY_ITEM_NOTSET
:

794 
VRFY_ITEM_END
:

796 
em
 = 0;

798 
VRFY_ITEM_BEGIN
:

803 
isbad
 = 1;

804 
	`EPRINT
((
dbv
,

806 (
u_lg
)
pgno
, (u_lg)
i
));

810 
	`__os_
(
dbv
, 
gayout
);

813 i((
db_dx_t
)
himk
 !
	`HOFFSET
(
h
)) {

814 
	`EPRINT
((
dbv
, "Page %lu: bad HOFFSET %lu,ppearso be %lu",

815 (
u_lg
)
pgno
, (u_lg)
	`HOFFSET
(
h
), (u_lg)
himk
));

816 
isbad
 = 1;

819 
r
: i(
r
 !
NULL
)

820 *
r
 = 
rs
;

822 i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

823 
t
 = 
t_t
;

825  ((
isbad
 =1 && 
t
 =0? 
DB_VERIFY_BAD
 :et);

826 
	}
}

845 
	$__bam_vrfy_emd
(
dbp
, 
vdp
, 
h
, 
pgno
, 
rs
, 
ovok
, 
hasdups
, 
ags
)

846 
DB
 *
dbp
;

847 
VRFY_DBINFO
 *
vdp
;

848 
PAGE
 *
h
;

849 
db_pgno_t
 
pgno
;

850 
u_t32_t
 
rs
;

851 
ovok
, 
hasdups
;

852 
u_t32_t
 
ags
;

854 
BINTERNAL
 *
bi
;

855 
BKEYDATA
 *
bk
;

856 
BOVERFLOW
 *
bo
;

857 
BTREE
 *
bt
;

858 
DBT
 
db
, 
dbtb
, 
dup_1
, 
dup_2
, *
p1
, *
p2
, *
tmp
;

859 
DB_ENV
 *
dbv
;

860 
VRFY_PAGEINFO
 *
p
;

861 
db_dx_t
 
i
, *
p
;

862 
adj
, 
cmp
, 
dup_1
, 
dup_2
, 
isbad
, 
t
, 
t_t
;

863 (*
dupfunc

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

864 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

865 *
buf1
, *
buf2
, *
tmpbuf
;

872 i(
vdp
 !
NULL
) {

873 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

874  (
t
);

875 
rs
 = 
p
->
s
;

877 
p
 = 
NULL
;

879 
dbv
 = 
dbp
->dbenv;

880 
t
 = 
isbad
 = 0;

881 
bo
 = 
NULL
;

883 
	`memt
(&
db
, 0, (
DBT
));

884 
	`F_SET
(&
db
, 
DB_DBT_REALLOC
);

886 
	`memt
(&
dbtb
, 0, (
DBT
));

887 
	`F_SET
(&
dbtb
, 
DB_DBT_REALLOC
);

889 
buf1
 = 
buf2
 = 
NULL
;

891 
	`DB_ASSERT
(
dbv
, !
	`LF_ISSET
(
DB_NOORDERCHK
));

893 
dupfunc
 = (
dbp
->
dup_com
 =
NULL
? 
__bam_defcmp
 : dbp->dup_compare;

894 i(
	`TYPE
(
h
=
P_LDUP
)

895 
func
 = 
dupfunc
;

897 
func
 = 
__bam_defcmp
;

898 i(
dbp
->
bt_
 !
NULL
) {

899 
bt
 = (
BTREE
 *)
dbp
->
bt_
;

900 i(
bt
->
bt_com
 !
NULL
)

901 
func
 = 
bt
->
bt_com
;

910 
p1
 = &
db
;

911 
p2
 = &
dbtb
;

923 
p
 = 
	`P_INP
(
dbp
, 
h
);

924 
adj
 = (
	`TYPE
(
h
=
P_LBTREE
? 
P_INDX
 : 
O_INDX
;

925 
i
 = (
	`TYPE
(
h
=
P_IBTREE
? 1 : 0; i < 
rs
; i +
adj
) {

929 
tmp
 = 
p1
;

930 
p1
 = 
p2
;

931 
p2
 = 
tmp
;

932 
tmpbuf
 = 
buf1
;

933 
buf1
 = 
buf2
;

934 
buf2
 = 
tmpbuf
;

939 
	`TYPE
(
h
)) {

940 
P_IBTREE
:

941 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 
i
);

942 i(
	`B_TYPE
(
bi
->
ty
=
B_OVERFLOW
) {

943 
bo
 = (
BOVERFLOW
 *)(
bi
->
da
);

944 
ovow
;

946 
p2
->
da
 = 
bi
->data;

947 
p2
->
size
 = 
bi
->
n
;

961 i(
i
 =0 && 
bi
->
n
 != 0) {

962 
isbad
 = 1;

963 
	`EPRINT
((
dbv
,

965 (
u_lg
)
pgno
));

969 
P_LBTREE
:

970 
P_LDUP
:

971 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
);

972 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
) {

973 
bo
 = (
BOVERFLOW
 *)
bk
;

974 
ovow
;

976 
p2
->
da
 = 
bk
->data;

977 
p2
->
size
 = 
bk
->
n
;

985 
t
 = 
	`__db_unknown_th
(
dbv
, "__bam_vrfy_itemorder");

986 
r
;

1000 
ovow
: i(!
ovok
) {

1001 
	`F_SET
(
p
, 
VRFY_INCOMPLETE
);

1002 
r
;

1014 
p2
->
da
 = 
buf2
;

1015 i((
t
 = 
	`__db_goff
(
dbp
, 
NULL
,

1016 
p2
, 
bo
->

, bo->
pgno
, 
NULL
, NULL)) != 0) {

1017 
isbad
 = 1;

1018 
	`EPRINT
((
dbv
,

1020 (
u_lg
)
pgno
, (u_lg)
t
, (u_lg)
i
));

1023 
buf2
 = 
p2
->
da
;

1027 i(
p1
->
da
 !
NULL
 && 
p2
->data != NULL) {

1028 
cmp
 = 
p
[
i
] =p[- 
adj
] ? 0 : 
	`func
(
dbp
, 
p1
, 
p2
);

1031 i(
cmp
 > 0) {

1032 
isbad
 = 1;

1033 
	`EPRINT
((
dbv
,

1035 (
u_lg
)
pgno
, (u_lg)
i
));

1037 } i(
cmp
 == 0) {

1038 i(
p
[
i
] !p[- 
adj
]) {

1039 
	`EPRINT
((
dbv
,

1041 (
u_lg
)
pgno
, (u_lg)
i
));

1042 
isbad
 = 1;

1050 i(
p
 !
NULL
)

1051 
	`F_SET
(
p
, 
VRFY_HAS_DUPS
);

1052 i(
hasdups
 == 0) {

1053 
isbad
 = 1;

1054 
	`EPRINT
((
dbv
,

1056 (
u_lg
)
pgno
));

1071 i(
	`TYPE
(
h
=
P_LBTREE
) {

1076 i(
i
 + 1 >(
db_dx_t
)
rs
)

1086 i(((
t
 = 
	`__bam__gda
(
dbp
,

1087 
h
, 
i
 - 1, 
ovok
, &
dup_1
,

1088 &
dup_1
)) != 0) ||

1089 ((
t
 = 
	`__bam__gda
(
dbp
,

1090 
h
, 
i
 + 1, 
ovok
, &
dup_2
,

1091 &
dup_2
)) != 0))

1092 
r
;

1100 i(
dup_1
.
da
 =
NULL
 ||

1101 
dup_2
.
da
 =
NULL
) {

1102 
	`DB_ASSERT
(
dbv
, !
ovok
);

1103 
	`F_SET
(
p
, 
VRFY_INCOMPLETE
);

1104 
r
;

1113 i(
	`dupfunc
(
dbp
, &
dup_1
, &
dup_2
) > 0)

1114 
	`F_SET
(
p
, 
VRFY_DUPS_UNSORTED
);

1116 i(
dup_1
)

1117 
	`__os_u
(
dbv
, 
dup_1
.
da
);

1118 i(
dup_2
)

1119 
	`__os_u
(
dbv
, 
dup_2
.
da
);

1125 
r
: i(
p
 !
NULL
 && ((
t_t
 =

1126 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0&& 
t
 == 0)

1127 
t
 = 
t_t
;

1129 i(
buf1
 !
NULL
)

1130 
	`__os_u
(
dbv
, 
buf1
);

1131 i(
buf2
 !
NULL
)

1132 
	`__os_u
(
dbv
, 
buf2
);

1134  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

1135 
	}
}

1146 
	$__bam_vrfy_ruu
(
dbp
, 
vdp
, 
ma_pgno
, 
ags
)

1147 
DB
 *
dbp
;

1148 
VRFY_DBINFO
 *
vdp
;

1149 
db_pgno_t
 
ma_pgno
;

1150 
u_t32_t
 
ags
;

1152 
DB
 *
pgt
;

1153 
DB_ENV
 *
dbv
;

1154 
VRFY_PAGEINFO
 *
m
, *
r
;

1155 
db_pgno_t
 
ro
, 
p
;

1156 
t_t
, 
t
;

1157 
u_t32_t
 
ecs
, 
v
, 
n
, 
ags
;

1159 
dbv
 = 
dbp
->dbenv;

1160 
m
 = 
r
 = 0;

1161 
pgt
 = 
vdp
->pgset;

1163 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
ma_pgno
, &
m
)) != 0)

1164  (
t
);

1166 i((
t
 = 
	`__db_vrfy_pgt_g
(
pgt
, 
ma_pgno
, (*)&
p
)) != 0)

1167 
r
;

1168 i(
p
 != 0) {

1169 
	`EPRINT
((
dbv
,

1171 (
u_lg
)
ma_pgno
));

1172 
t
 = 
DB_VERIFY_BAD
;

1173 
r
;

1175 i((
t
 = 
	`__db_vrfy_pgt_c
(
pgt
, 
ma_pgno
)) != 0)

1176 
r
;

1178 
ro
 = 
m
->root;

1180 i(
ro
 == 0) {

1181 
	`EPRINT
((
dbv
,

1183 (
u_lg
)
ma_pgno
));

1184 
t
 = 
DB_VERIFY_BAD
;

1185 
r
;

1188 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
ro
, &
r
)) != 0)

1189 
r
;

1191 
r
->
ty
) {

1192 
P_IBTREE
:

1193 
P_LBTREE
:

1194 
ags
 = 
ags
 | 
ST_TOPLEVEL
;

1195 i(
	`F_ISSET
(
m
, 
VRFY_HAS_DUPS
))

1196 
ags
 |
ST_DUPOK
;

1197 i(
	`F_ISSET
(
m
, 
VRFY_HAS_DUPSORT
))

1198 
ags
 |
ST_DUPSORT
;

1199 i(
	`F_ISSET
(
m
, 
VRFY_HAS_RECNUMS
))

1200 
ags
 |
ST_RECNUM
;

1201 
t
 = 
	`__bam_vrfy_sub
(
dbp
,

1202 
vdp
, 
ro
, 
NULL
, NULL, 
ags
, NULL, NULL, NULL);

1204 
P_IRECNO
:

1205 
P_LRECNO
:

1206 
ags
 = 
ags
 | 
ST_RECNUM
 | 
ST_IS_RECNO
 | 
ST_TOPLEVEL
;

1207 i(
m
->
_n
 > 0)

1208 
ags
 |
ST_RELEN
;

1209 i((
t
 = 
	`__bam_vrfy_sub
(
dbp
, 
vdp
,

1210 
ro
, 
NULL
, NULL, 
ags
, &
v
, &
ecs
, &
n
)) != 0)

1211 
r
;

1218 i(
m
->
_n
 > 0 && 
n
 > 0 && mip->re_len !=elen) {

1219 
	`EPRINT
((
dbv
,

1221 (
u_lg
)
ma_pgno
, (u_lg)
n
));

1222 
t
 = 
DB_VERIFY_BAD
;

1223 
r
;

1225 
t
 = 0;

1227 
P_LDUP
:

1228 
	`EPRINT
((
dbv
,

1230 (
u_lg
)
ma_pgno
));

1231 
t
 = 
DB_VERIFY_BAD
;

1234 
	`EPRINT
((
dbv
,

1236 (
u_lg
)
ma_pgno
, (u_lg)
r
->
ty
));

1237 
t
 = 
DB_VERIFY_BAD
;

1241 
r
: i(
m
 !
NULL
 && ((
t_t
 =

1242 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
m
)!0&& 
t
 == 0)

1243 
t
 = 
t_t
;

1244 i(
r
 !
NULL
 && ((
t_t
 =

1245 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
r
)!0&& 
t
 == 0)

1246 
t
 = 
t_t
;

1247  (
t
);

1248 
	}
}

1261 
	$__bam_vrfy_sub
(
dbp
, 
vdp
, 
pgno
, 
l
, 
r
, 
ags
, 
vp
, 
ec
, 

)

1262 
DB
 *
dbp
;

1263 
VRFY_DBINFO
 *
vdp
;

1264 
db_pgno_t
 
pgno
;

1265 *
l
, *
r
;

1266 
u_t32_t
 
ags
, *
vp
, *
ec
, *

;

1268 
BINTERNAL
 *
li
, *
ri
;

1269 
DB
 *
pgt
;

1270 
DBC
 *
cc
;

1271 
DB_ENV
 *
dbv
;

1272 
DB_MPOOLFILE
 *
mpf
;

1273 
PAGE
 *
h
;

1274 
VRFY_CHILDINFO
 *
chd
;

1275 
VRFY_PAGEINFO
 *
p
;

1276 
db_dx_t
 
i
;

1277 
db_pgno_t
 
xt_pgno
, 
ev_pgno
;

1278 
db_o_t
 
chd_ecs
, 
ecs
;

1279 
u_t32_t
 
chd_v
, 
chd_n
, 
j
, 
v
, 
n
, 
ags
;

1280 
u_t8_t
 
af_ty
;

1281 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

1282 
isbad
, 
p
, 
t
, 
t_t
, 
tv
;

1284 i(
vp
 !
NULL
)

1285 *
vp
 = 0;

1286 i(
ec
 !
NULL
)

1287 *
ec
 = 0;

1289 
dbv
 = 
dbp
->dbenv;

1290 
mpf
 = 
dbp
->mpf;

1291 
h
 = 
NULL
;

1292 
xt_pgno
 = 
ev_pgno
 = 
PGNO_INVALID
;

1293 
ecs
 = 0;

1294 
n
 = 0;

1295 
af_ty
 = 
P_INVALID
;

1296 
isbad
 = 
t
 = 0;

1299 i(!
	`LF_ISSET
(
DB_SALVAGE
))

1300 
	`__db_vrfy_ru_edback
(
dbp
, 
vdp
);

1302 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

1303  (
t
);

1305 
cc
 = 
NULL
;

1306 
v
 = 
p
->
bt_v
;

1308 
tv
 = 
	`LF_ISSET
(
ST_TOPLEVEL
) ? 1 : 0;

1309 
	`LF_CLR
(
ST_TOPLEVEL
);

1321 i(
tv
) {

1327 
ev_pgno
 = 
vdp
->prev_pgno;

1328 
xt_pgno
 = 
vdp
->next_pgno;

1329 
af_ty
 = 
vdp
->leaf_type;

1330 
vdp
->
xt_pgno
 = vdp->
ev_pgno
 = 
PGNO_INVALID
;

1331 
vdp
->
af_ty
 = 
P_INVALID
;

1359 
p
->
ty
) {

1360 
P_LRECNO
:

1361 
P_LDUP
:

1362 
P_LBTREE
:

1369 i(
vdp
->
af_ty
 =
P_INVALID
) {

1375 
vdp
->
af_ty
 = 
p
->
ty
;

1376 i(
p
->
ev_pgno
 !
PGNO_INVALID
)

1377 
bad_ev
;

1383 i(
p
->
ty
 !
vdp
->
af_ty
) {

1384 
isbad
 = 1;

1385 
	`EPRINT
((
dbv
,

1387 (
u_lg
)
p
->
pgno
, (u_lg->
ty
,

1388 (
u_lg
)
vdp
->
af_ty
));

1395 i(!
	`F_ISSET
(
vdp
, 
VRFY_LEAFCHAIN_BROKEN
)) {

1396 i(
p
->
pgno
 !
vdp
->
xt_pgno
) {

1397 
isbad
 = 1;

1398 
	`EPRINT
((
dbv
,

1400 (
u_lg
)
vdp
->
ev_pgno
,

1401 (
u_lg
)
vdp
->
xt_pgno
,

1402 (
u_lg
)
p
->
pgno
));

1404 i(
p
->
ev_pgno
 !
vdp
->prev_pgno) {

1405 
bad_ev
: 
isbad
 = 1;

1406 
	`EPRINT
((
dbv
,

1408 (
u_lg
)
p
->
pgno
,

1409 (
u_lg
)
p
->
ev_pgno
,

1410 (
u_lg
)
vdp
->
ev_pgno
));

1414 
vdp
->
ev_pgno
 = 
p
->
pgno
;

1415 
vdp
->
xt_pgno
 = 
p
->next_pgno;

1416 
	`F_CLR
(
vdp
, 
VRFY_LEAFCHAIN_BROKEN
);

1422 i((
t
 = 
	`__db_vrfy_chdcurs
(
vdp
, &
cc
)) != 0)

1423 
r
;

1424 
t
 = 
	`__db_vrfy_cct
(
cc
, 
pgno
, &
chd
);et == 0;

1425 
t
 = 
	`__db_vrfy_cext
(
cc
, &
chd
))

1426 i(
chd
->
ty
 =
V_OVERFLOW
 &&

1427 (
t
 = 
	`__db_vrfy_ov_ruu
(
dbp
, 
vdp
,

1428 
chd
->
pgno
, chd->

,

1429 
ags
 | 
ST_OVFL_LEAF
)) != 0) {

1430 i(
t
 =
DB_VERIFY_BAD
)

1431 
isbad
 = 1;

1433 
de
;

1436 i((
t
 = 
	`__db_vrfy_cco
(
cc
)) != 0)

1437 
r
;

1438 
cc
 = 
NULL
;

1441 i(
p
->
ty
 =
P_LRECNO
) {

1442 i(!
	`LF_ISSET
(
ST_IS_RECNO
) &&

1443 !(
	`LF_ISSET
(
ST_DUPOK
&& !LF_ISSET(
ST_DUPSORT
))) {

1444 
isbad
 = 1;

1445 
	`EPRINT
((
dbv
,

1447 (
u_lg
)
pgno
));

1448 
de
;

1450 
af
;

1451 } i(
	`LF_ISSET
(
ST_IS_RECNO
)) {

1456 
isbad
 = 1;

1457 
	`EPRINT
((
dbv
,

1459 (
u_lg
)
pgno
));

1460 
de
;

1464 i(
p
->
ty
 =
P_LDUP
)

1465 
af
;

1470 i(
	`F_ISSET
(
p
, 
VRFY_HAS_DUPS
)) {

1472 i(!
	`LF_ISSET
(
ST_DUPOK
)) {

1473 
isbad
 = 1;

1474 
	`EPRINT
((
dbv
,

1476 (
u_lg
)
pgno
));

1482 i((
t
 =

1483 
	`__db_vrfy_chdcurs
(
vdp
, &
cc
)) != 0)

1484 
r
;

1485 
t
 = 
	`__db_vrfy_cct
(
cc
, 
pgno
, &
chd
);

1486 
t
 == 0;

1487 
t
 = 
	`__db_vrfy_cext
(
cc
, &
chd
)) {

1488 
ags
 = 
ags
 | 
ST_RECNUM
 | 
ST_DUPSET
;

1490 i(
chd
->
ty
 =
V_DUPLICATE
) {

1491 i((
t
 = 
	`__db_vrfy_duy
(

1492 
dbp
, 
vdp
, 
chd
->
pgno
,

1493 
ags
)) != 0) {

1494 
isbad
 = 1;

1498 i((
t
 = 
	`__bam_vrfy_sub
(

1499 
dbp
, 
vdp
, 
chd
->
pgno
, 
NULL
,

1500 
NULL
, 
ags
 | 
ST_TOPLEVEL
,

1501 
NULL
, NULL, NULL)) != 0) {

1502 i(
t
 ==

1503 
DB_VERIFY_BAD
)

1504 
isbad
 = 1;

1506 
r
;

1511 i((
t
 = 
	`__db_vrfy_cco
(
cc
)) != 0)

1512 
r
;

1513 
cc
 = 
NULL
;

1519 i(
	`F_ISSET
(
p
, 
VRFY_DUPS_UNSORTED
) &&

1520 
	`LF_ISSET
(
ST_DUPSORT
)) {

1521 
isbad
 = 1;

1522 
	`EPRINT
((
dbv
,

1524 (
u_lg
)
pgno
));

1528 
af
;

1529 
P_IBTREE
:

1530 
P_IRECNO
:

1545 i(
	`F_ISSET
(
p
, 
VRFY_IS_ALLZEROES
))

1546 
	`ZEROPG_ERR_PRINT
(
dbv
, 
pgno
, "btree orecnoage");

1548 
	`EPRINT
((
dbv
,

1550 (
u_lg
)
pgno
, (u_lg)
p
->
ty
));

1559 
	`F_SET
(
vdp
, 
VRFY_LEAFCHAIN_BROKEN
);

1561 
t
 = 
DB_VERIFY_BAD
;

1562 
r
;

1570 i((
t
 = 
	`__db_vrfy_chdcurs
(
vdp
, &
cc
)) != 0)

1571 
r
;

1572 
t
 = 
	`__db_vrfy_cct
(
cc
, 
pgno
, &
chd
);et == 0;

1573 
t
 = 
	`__db_vrfy_cext
(
cc
, &
chd
))

1574 i(
chd
->
ty
 =
V_RECNO
) {

1575 i(
p
->
ty
 !
P_IRECNO
) {

1576 
t
 = 
	`__db_unknown_th
(

1577 
dbv
, "__bam_vrfy_subtree");

1578 
r
;

1580 i((
t
 = 
	`__bam_vrfy_sub
(
dbp
, 
vdp
, 
chd
->
pgno
,

1581 
NULL
, NULL, 
ags
, &
chd_v
, &
chd_ecs
,

1582 &
chd_n
)) != 0) {

1583 i(
t
 =
DB_VERIFY_BAD
)

1584 
isbad
 = 1;

1586 
de
;

1589 i(
	`LF_ISSET
(
ST_RELEN
)) {

1590 i(
n
 == 0)

1591 
n
 = 
chd_n
;

1596 i(
chd_n
 > 0 &&

1597 
n
 !
chd_n
) {

1598 
isbad
 = 1;

1599 
	`EPRINT
((
dbv
,

1601 (
u_lg
)
chd
->
pgno
,

1602 (
u_lg
)
chd_n
));

1604 i(

)

1605 *

 = 
n
;

1607 i(
	`LF_ISSET
(
ST_RECNUM
)) {

1608 i(
chd
->
ecs
 !
chd_ecs
) {

1609 
isbad
 = 1;

1610 
	`EPRINT
((
dbv
,

1612 (
u_lg
)
chd
->
pgno
,

1613 (
u_lg
)
chd_ecs
,

1614 (
u_lg
)
chd
->
ecs
));

1616 
ecs
 +
chd_ecs
;

1618 i(
isbad
 =0 && 
v
 !
chd_v
 + 1) {

1619 
isbad
 = 1;

1620 
	`EPRINT
((
dbv
,

1622 (
u_lg
)
chd
->
pgno
, (u_lg)
chd_v
,

1623 (
u_lg
)(
v
 - 1)));

1625 } i(
chd
->
ty
 =
V_OVERFLOW
) {

1645 
	`DB_ASSERT
(
dbv
, 
chd
->
ft
 >= 1);

1651 i(
chd
->
ft
 > 2) {

1652 
isbad
 = 1;

1653 
	`EPRINT
((
dbv
,

1655 (
u_lg
)
pgno
, (u_lg)
chd
->pgno));

1657 
j
 = 0; j < 
chd
->
ft
; j++)

1658 i((
t
 = 
	`__db_vrfy_ov_ruu
(
dbp
,

1659 
vdp
, 
chd
->
pgno
, chd->

,

1660 
ags
)) != 0) {

1661 i(
t
 =
DB_VERIFY_BAD
)

1662 
isbad
 = 1;

1664 
de
;

1668 i((
t
 = 
	`__db_vrfy_cco
(
cc
)) != 0)

1669 
r
;

1670 
cc
 = 
NULL
;

1673 i(
p
->
ty
 =
P_IRECNO
)

1674 
de
;

1686 i(
h
 =
NULL
 && (
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, NULL, 0, &h)) != 0)

1687 
r
;

1688 
i
 = 0; i < 
p
->
s
; i +
O_INDX
) {

1689 
li
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 
i
);

1690 
ri
 = (
i
 + 
O_INDX
 < 
p
->
s
) ?

1691 
	`GET_BINTERNAL
(
dbp
, 
h
, 
i
 + 
O_INDX
: 
r
;

1697 i((
t
 = 
	`__bam_vrfy_sub
(
dbp
, 
vdp
, 
li
->
pgno
,

1698 
i
 =0 ? 
NULL
 : 
li
, 
ri
, 
ags
, &
chd_v
,

1699 &
chd_ecs
, 
NULL
)) != 0) {

1700 i(
t
 =
DB_VERIFY_BAD
)

1701 
isbad
 = 1;

1703 
de
;

1706 i(
	`LF_ISSET
(
ST_RECNUM
)) {

1712 
ecs
 +
chd_ecs
;

1718 i(
li
->
ecs
 !
chd_ecs
) {

1719 
isbad
 = 1;

1720 
	`EPRINT
((
dbv
,

1722 (
u_lg
)
pgno
, (u_lg)
i
, (u_lg)
li
->
ecs
,

1723 (
u_lg
)
chd_ecs
));

1727 i(
v
 !
chd_v
 + 1) {

1728 
isbad
 = 1;

1729 
	`EPRINT
((
dbv
,

1731 (
u_lg
)
li
->
pgno
,

1732 (
u_lg
)
chd_v
, (u_lg)(
v
 - 1)));

1737 
af
: 
v
 = 
LEAFLEVEL
;

1738 i(
	`LF_ISSET
(
ST_RECNUM
))

1739 
ecs
 = 
p
->
c_t
;

1749 i(
	`LF_ISSET
(
ST_RELEN
&& 

)

1750 *

 = 
p
->
_n
;

1752 
de
: i(
	`F_ISSET
(
p
, 
VRFY_INCOMPLETE
&& 
isbad
 =0 && 
t
 == 0) {

1759 i(
h
 =
NULL
 &&

1760 (
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0)

1761 
r
;

1762 i((
t
 = 
	`__bam_vrfy_emd
(
dbp
,

1763 
vdp
, 
h
, 
pgno
, 0, 1, 0, 
ags
)) != 0)

1764 
r
;

1765 
	`F_CLR
(
p
, 
VRFY_INCOMPLETE
);

1778 i(
isbad
 =0 && 
t
 == 0) {

1779 i(
h
 =
NULL
 &&

1780 (
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0)

1781 
r
;

1783 i(
	`NUM_ENT
(
h
=0 && 
	`ISINTERNAL
(h)) {

1784 
isbad
 = 1;

1785 
	`EPRINT
((
dbv
,

1787 (
u_lg
)
pgno
));

1788 
r
;

1797 i(
isbad
 =0 && 
t
 =0 && !
	`LF_ISSET
(
DB_NOORDERCHK
) &&

1798 
p
->
ty
 !
P_IRECNO
 &&->ty !
P_LRECNO
) {

1799 i(
h
 =
NULL
 &&

1800 (
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0)

1801 
r
;

1809 
func
 = 
	`LF_ISSET
(
ST_DUPSET
? 
dbp
->
dup_com
 :

1810 ((
BTREE
 *)
dbp
->
bt_
)->
bt_com
;

1811 i(
func
 =
NULL
)

1812 
func
 = 
__bam_defcmp
;

1814 i((
t
 = 
	`__bam_vrfy_d
(

1815 
dbp
, 
h
, 
l
, 
r
, 
func
, 
ags
)) != 0) {

1816 i(
t
 =
DB_VERIFY_BAD
)

1817 
isbad
 = 1;

1819 
r
;

1829 i(
	`LF_ISSET
(
ST_RECNUM
&& 
ecs
 !
p
->
c_t
 && 
tv
) {

1830 
isbad
 = 1;

1831 
	`EPRINT
((
dbv
,

1833 (
u_lg
)
pgno
, (u_lg)
ecs
, (u_lg)
p
->
c_t
));

1836 i(
vp
)

1837 *
vp
 = 
v
;

1838 i(
ec
)

1839 *
ec
 = 
ecs
;

1841 
pgt
 = 
vdp
->pgset;

1842 i((
t
 = 
	`__db_vrfy_pgt_g
(
pgt
, 
pgno
, &
p
)) != 0)

1843 
r
;

1844 i(
p
 != 0) {

1845 
isbad
 = 1;

1846 
	`EPRINT
((
dbv
, "Pag%lu:kedwi", (
u_lg
)
pgno
));

1847 } i((
t
 = 
	`__db_vrfy_pgt_c
(
pgt
, 
pgno
)) != 0)

1848 
r
;

1850 i(
tv
)

1855 i(
vdp
->
xt_pgno
 !
PGNO_INVALID
) {

1856 
isbad
 = 1;

1857 
	`EPRINT
((
dbv
, "Page %lu: unterminatedeaf chain",

1858 (
u_lg
)
vdp
->
ev_pgno
));

1861 
r
: i(
tv
) {

1863 
vdp
->
xt_pgno
 =ext_pgno;

1864 
vdp
->
ev_pgno
 =rev_pgno;

1865 
vdp
->
af_ty
 =eaf_type;

1868 i(
h
 !
NULL
 && (
t_t
 =

1869 
	`__memp_ut
(
mpf
, 
h
, 
DB_PRIORITY_UNCHANGED
)!0 && 
t
 == 0)

1870 
t
 = 
t_t
;

1871 i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

1872 
t
 = 
t_t
;

1873 i(
cc
 !
NULL
 && ((
t_t
 = 
	`__db_vrfy_cco
(cc)!0&& 
t
 == 0)

1874 
t
 = 
t_t
;

1875  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

1876 
	}
}

1892 
	$__bam_vrfy_d
(
dbp
, 
h
, 

, 

, 
func
, 
ags
)

1893 
DB
 *
dbp
;

1894 
PAGE
 *
h
;

1895 
BINTERNAL
 *

, *

;

1896 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

1897 
u_t32_t
 
ags
;

1899 
BOVERFLOW
 *
bo
;

1900 
DB_ENV
 *
dbv
;

1901 
DBT
 
dbt
;

1902 
db_dx_t
 
ϡ
;

1903 
t
, 
cmp
;

1905 
dbv
 = 
dbp
->dbenv;

1906 
	`memt
(&
dbt
, 0, (
DBT
));

1907 
	`F_SET
(&
dbt
, 
DB_DBT_MALLOC
);

1908 
t
 = 0;

1915 i(
	`NUM_ENT
(
h
) == 0)

1918 
	`TYPE
(
h
)) {

1919 
P_IBTREE
:

1920 
P_LDUP
:

1921 
ϡ
 = 
	`NUM_ENT
(
h
- 
O_INDX
;

1923 
P_LBTREE
:

1924 
ϡ
 = 
	`NUM_ENT
(
h
- 
P_INDX
;

1927  (
	`__db_unknown_th
(
dbv
, "__bam_vrfy_treeorder"));

1943 i(

 !
NULL
 && 
	`TYPE
(
h
!
P_IBTREE
) {

1944 i(

->
ty
 =
B_KEYDATA
) {

1945 
dbt
.
da
 = 

->data;

1946 
dbt
.
size
 = 

->
n
;

1947 } i(

->
ty
 =
B_OVERFLOW
) {

1948 
bo
 = (
BOVERFLOW
 *)

->
da
;

1949 i((
t
 = 
	`__db_goff
(
dbp
, 
NULL
, &
dbt
,

1950 
bo
->

, bo->
pgno
, 
NULL
, NULL)) != 0)

1951  (
t
);

1954 
	`__db_unknown_th
(
dbv
, "__bam_vrfy_treeorder"));

1957 i((
t
 = 
	`__bam_cmp
(
dbp
, 
NULL
, &
dbt
, 
h
, 0, 
func
, &
cmp
)) == 0) {

1958 i(
cmp
 > 0) {

1959 
	`EPRINT
((
dbv
,

1961 (
u_lg
)
	`PGNO
(
h
)));

1962 
t
 = 
DB_VERIFY_BAD
;

1965 
	`EPRINT
((
dbv
,

1967 (
u_lg
)
	`PGNO
(
h
)));

1969 i(
dbt
.
da
 !

->data)

1970 
	`__os_u
(
dbv
, 
dbt
.
da
);

1971 i(
t
 != 0)

1972  (
t
);

1975 i(

 !
NULL
) {

1976 i(

->
ty
 =
B_KEYDATA
) {

1977 
dbt
.
da
 = 

->data;

1978 
dbt
.
size
 = 

->
n
;

1979 } i(

->
ty
 =
B_OVERFLOW
) {

1980 
bo
 = (
BOVERFLOW
 *)

->
da
;

1981 i((
t
 = 
	`__db_goff
(
dbp
, 
NULL
, &
dbt
,

1982 
bo
->

, bo->
pgno
, 
NULL
, NULL)) != 0)

1983  (
t
);

1986 
	`__db_unknown_th
(
dbv
, "__bam_vrfy_treeorder"));

1989 i((
t
 = 
	`__bam_cmp
(
dbp
, 
NULL
, &
dbt
,

1990 
h
, 
ϡ
, 
func
, &
cmp
)) == 0) {

1991 i(
cmp
 < 0) {

1992 
	`EPRINT
((
dbv
,

1994 (
u_lg
)
	`PGNO
(
h
)));

1995 
t
 = 
DB_VERIFY_BAD
;

1998 
	`EPRINT
((
dbv
,

2000 (
u_lg
)
	`PGNO
(
h
)));

2002 i(
dbt
.
da
 !

->data)

2003 
	`__os_u
(
dbv
, 
dbt
.
da
);

2006  (
t
);

2007 
	}
}

2019 
	$__bam_lvage
(
dbp
, 
vdp
, 
pgno
, 
pgty
, 
h
, 
hd
, 
back
, 
key
, 
ags
)

2020 
DB
 *
dbp
;

2021 
VRFY_DBINFO
 *
vdp
;

2022 
db_pgno_t
 
pgno
;

2023 
u_t32_t
 
pgty
;

2024 
PAGE
 *
h
;

2025 *
hd
;

2026 (*
back

	`__P
((*, const *));

2027 
DBT
 *
key
;

2028 
u_t32_t
 
ags
;

2030 
BKEYDATA
 *
bk
;

2031 
BOVERFLOW
 *
bo
;

2032 
DBT
 
dbt
, 
unknown_key
, 
unknown_da
;

2033 
DB_ENV
 *
dbv
;

2034 
VRFY_ITEM
 *
pgm
;

2035 
db_dx_t
 
i
, 
ϡ
, 
beg
, 
d
, *
p
;

2036 
u_t32_t
 
himk
;

2037 *
ovbuf
;

2038 
t
, 
t_t
, 
t2_t
;

2040 
dbv
 = 
dbp
->dbenv;

2041 
ovbuf
 = 
pgm
 = 
NULL
;

2042 
p
 = 
	`P_INP
(
dbp
, 
h
);

2044 
	`memt
(&
dbt
, 0, (
DBT
));

2045 
dbt
.
ags
 = 
DB_DBT_REALLOC
;

2047 
	`DB_INIT_DBT
(
unknown_key
, "UNKNOWN_KEY", ("UNKNOWN_KEY") - 1);

2048 
	`DB_INIT_DBT
(
unknown_da
, "UNKNOWN_DATA", ("UNKNOWN_DATA") - 1);

2054 i((
t
 = 
	`__os_mloc
(
dbv
, 
dbp
->
pgsize
, &
ovbuf
)) != 0)

2055 
r
;

2057 i(
	`LF_ISSET
(
DB_AGGRESSIVE
&& (
t
 =

2058 
	`__os_oc
(
dbv
, 
dbp
->
pgsize
, (
pgm
[0]), &pgmap)) != 0)

2059 
r
;

2068 
himk
 = 
dbp
->
pgsize
;

2069 
i
 = 0, 
ϡ
 = 
UINT16_MAX
;; i +
O_INDX
) {

2071 i(!
	`LF_ISSET
(
DB_AGGRESSIVE
&& 
i
 >
	`NUM_ENT
(
h
))

2075 
t_t
 =

2076 
	`__db_vrfy_pem
(
dbp
, 
h
, 
pgno
, 
i
, 1, 
ags
, &
himk
, 
NULL
);

2078 i(
t_t
 != 0) {

2084 i(
pgty
 =
P_LBTREE
 && 
i
 % 
P_INDX
 == 1 &&

2085 
ϡ
 =
i
 - 1 && (
t2_t
 = 
	`__db_vrfy_dbt
(

2086 &
unknown_da
,

2087 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0) {

2088 i(
t
 == 0)

2089 
t
 = 
t2_t
;

2090 
r
;

2099 i(
t_t
 =
DB_VERIFY_FATAL
) {

2100 i(
i
 < 
	`NUM_ENT
(
h
&& 
t
 == 0)

2101 
t
 = 
DB_VERIFY_BAD
;

2113 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
);

2114 i(!
	`LF_ISSET
(
DB_AGGRESSIVE
&& 
	`B_DISSET
(
bk
->
ty
))

2122 i(
pgty
 =
P_LBTREE
 && 
i
 % 
P_INDX
 == 1 &&

2123 
ϡ
 !
i
 - 1 && (
t_t
 = 
	`__db_vrfy_dbt
(

2124 &
unknown_key
, 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0) {

2125 i(
t
 == 0)

2126 
t
 = 
t_t
;

2127 
r
;

2129 
ϡ
 = 
i
;

2137 i(
key
 !
NULL
 && (
i
 !0 || !
	`LF_ISSET
(
SA_SKIPFIRSTKEY
)))

2138 i((
t_t
 = 
	`__db_vrfy_dbt
(
key
,

2139 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0) {

2140 i(
t
 == 0)

2141 
t
 = 
t_t
;

2142 
r
;

2145 
beg
 = 
p
[
i
];

2146 
	`B_TYPE
(
bk
->
ty
)) {

2147 
B_DUPLICATE
:

2148 
d
 = 
beg
 + 
BOVERFLOW_SIZE
 - 1;

2156 i(
pgty
 !
P_LBTREE
)

2159 
bo
 = (
BOVERFLOW
 *)
bk
;

2167 i(!
	`IS_VALID_PGNO
(
bo
->
pgno
|| (
i
 % 
P_INDX
 == 0)) {

2169 i((
t_t
 = 
	`__db_vrfy_dbt
(&
unknown_key
,

2170 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0) {

2171 i(
t
 == 0)

2172 
t
 = 
t_t
;

2173 
r
;

2179 i((
t_t
 = 
	`__db_lvage_due
(
dbp
,

2180 
vdp
, 
bo
->
pgno
, &
dbt
, 
hd
, 
back
,

2181 
ags
 | 
SA_SKIPFIRSTKEY
)!0 && 
t
 == 0)

2182 
t
 = 
t_t
;

2185 
B_KEYDATA
:

2186 
d
 = (
db_dx_t
)
	`DB_ALIGN
(

2187 
beg
 + 
bk
->
n
, (
u_t32_t
)) - 1;

2188 
dbt
.
da
 = 
bk
->data;

2189 
dbt
.
size
 = 
bk
->
n
;

2190 i((
t_t
 = 
	`__db_vrfy_dbt
(&
dbt
,

2191 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0) {

2192 i(
t
 == 0)

2193 
t
 = 
t_t
;

2194 
r
;

2197 
B_OVERFLOW
:

2198 
d
 = 
beg
 + 
BOVERFLOW_SIZE
 - 1;

2199 
bo
 = (
BOVERFLOW
 *)
bk
;

2202 i((
t_t
 = 
	`__db__goff
(
dbp
, 
vdp
,

2203 
bo
->
pgno
, &
dbt
, &
ovbuf
, 
ags
)!0 && 
t
 == 0)

2204 
t
 = 
t_t
;

2205 i((
t_t
 = 
	`__db_vrfy_dbt
(

2206 
t_t
 =0 ? &
dbt
 : &
unknown_key
,

2207 0, " ", 
hd
, 
back
, 0, 
vdp
)!0 && 
t
 == 0)

2208 
t
 = 
t_t
;

2215 
t_t
 = 
	`__db_unknown_th
(
dbv
, "__bam_salvage");

2216 i(
t
 == 0)

2217 
t
 = 
t_t
;

2218 
r
;

2227 i(
	`LF_ISSET
(
DB_AGGRESSIVE
)) {

2228 
pgm
[
beg
] = 
VRFY_ITEM_BEGIN
;

2229 
pgm
[
d
] = 
VRFY_ITEM_END
;

2233 
r
: i(
pgm
 !
NULL
)

2234 
	`__os_
(
dbv
, 
pgm
);

2235 i(
ovbuf
 !
NULL
)

2236 
	`__os_
(
dbv
, 
ovbuf
);

2239 i((
t_t
 = 
	`__db_lvage_mkde
(
vdp
, 
pgno
)!0 && 
t
 == 0)

2240 
t
 = 
t_t
;

2242  (
t
);

2243 
	}
}

2254 
	$__bam_lvage_wkdupt
(
dbp
, 
vdp
, 
h
, 
key
, 
hd
, 
back
, 
ags
)

2255 
DB
 *
dbp
;

2256 
VRFY_DBINFO
 *
vdp
;

2257 
PAGE
 *
h
;

2258 
DBT
 *
key
;

2259 *
hd
;

2260 (*
back

	`__P
((*, const *));

2261 
u_t32_t
 
ags
;

2263 
DB_ENV
 *
dbv
;

2264 
RINTERNAL
 *
ri
;

2265 
BINTERNAL
 *
bi
;

2266 
t
, 
t_t
;

2267 
db_dx_t
 
i
;

2269 
dbv
 = 
dbp
->dbenv;

2270 
t
 = 0;

2272 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++) {

2273 
	`TYPE
(
h
)) {

2274 
P_IBTREE
:

2275 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 
i
);

2276 i((
t_t
 = 
	`__db_lvage_due
(
dbp
,

2277 
vdp
, 
bi
->
pgno
, 
key
, 
hd
, 
back
, 
ags
)) != 0)

2278 
t
 = 
t_t
;

2280 
P_IRECNO
:

2281 
ri
 = 
	`GET_RINTERNAL
(
dbp
, 
h
, 
i
);

2282 i((
t_t
 = 
	`__db_lvage_due
(
dbp
,

2283 
vdp
, 
ri
->
pgno
, 
key
, 
hd
, 
back
, 
ags
)) != 0)

2284 
t
 = 
t_t
;

2287  (
	`__db_unknown_th
(

2288 
dbv
, "__bam_salvage_walkdupint"));

2291 
ags
 &~
	`LF_ISSET
(
SA_SKIPFIRSTKEY
);

2294  (
t
);

2295 
	}
}

2315 
	$__bam_ma2pgt
(
dbp
, 
vdp
, 
btma
, 
ags
, 
pgt
)

2316 
DB
 *
dbp
;

2317 
VRFY_DBINFO
 *
vdp
;

2318 
BTMETA
 *
btma
;

2319 
u_t32_t
 
ags
;

2320 
DB
 *
pgt
;

2322 
BINTERNAL
 *
bi
;

2323 
DB_MPOOLFILE
 *
mpf
;

2324 
PAGE
 *
h
;

2325 
RINTERNAL
 *
ri
;

2326 
db_pgno_t
 
cut
, 
p
;

2327 
r_t
, 
t
;

2329 
	`DB_ASSERT
(
dbp
->
dbv
, 
pgt
 !
NULL
);

2331 
mpf
 = 
dbp
->mpf;

2332 
h
 = 
NULL
;

2333 
t
 = 
r_t
 = 0;

2335 
cut
 = 
btma
->
ro
;;) {

2336 i(!
	`IS_VALID_PGNO
(
cut
|| cu=
	`PGNO
(
btma
)) {

2337 
r_t
 = 
DB_VERIFY_BAD
;

2338 
r
;

2340 i((
t
 = 
	`__memp_fg
(
mpf
, &
cut
, 
NULL
, 0, &
h
)) != 0) {

2341 
r_t
 = 
t
;

2342 
r
;

2345 
	`TYPE
(
h
)) {

2346 
P_IBTREE
:

2347 
P_IRECNO
:

2348 i((
t
 = 
	`__bam_vrfy
(
dbp
,

2349 
vdp
, 
h
, 
cut
, 
ags
 | 
DB_NOORDERCHK
)) != 0) {

2350 
r_t
 = 
t
;

2351 
r
;

2353 i(
	`TYPE
(
h
=
P_IBTREE
) {

2354 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 0);

2355 
cut
 = 
bi
->
pgno
;

2357 
ri
 = 
	`GET_RINTERNAL
(
dbp
, 
h
, 0);

2358 
cut
 = 
ri
->
pgno
;

2361 
P_LBTREE
:

2362 
P_LRECNO
:

2363 
av
;

2365 
r_t
 = 
DB_VERIFY_BAD
;

2366 
r
;

2369 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
DB_PRIORITY_UNCHANGED
)) != 0)

2370 
r_t
 = 
t
;

2371 
h
 = 
NULL
;

2378 
av
:

2379 
	`IS_VALID_PGNO
(
cut
&& cu!
PGNO_INVALID
) {

2380 i(
h
 =
NULL
 &&

2381 (
t
 = 
	`__memp_fg
(
mpf
, &
cut
, 
NULL
, 0, &
h
)) != 0) {

2382 
r_t
 = 
t
;

2386 i((
t
 = 
	`__db_vrfy_pgt_g
(
pgt
, 
cut
, (*)&
p
)) != 0)

2387 
r
;

2389 i(
p
 != 0) {

2397 i((
t
 = 
	`__db_vrfy_pgt_c
(
pgt
, 
cut
)) != 0)

2398 
r
;

2400 
cut
 = 
	`NEXT_PGNO
(
h
);

2401 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
DB_PRIORITY_UNCHANGED
)) != 0)

2402 
r_t
 = 
t
;

2403 
h
 = 
NULL
;

2406 
r
: i(
h
 !
NULL
)

2407 ()
	`__memp_ut
(
mpf
, 
h
, 
DB_PRIORITY_UNCHANGED
);

2409  (
t
 =0 ? 
r_t
 :et);

2410 
	}
}

2421 
	$__bam__gda
(
dbp
, 
h
, 
i
, 
ovok
, 
dbt
, 
db
)

2422 
DB
 *
dbp
;

2423 
PAGE
 *
h
;

2424 
u_t32_t
 
i
;

2425 
ovok
;

2426 
DBT
 *
dbt
;

2427 *
db
;

2429 
BKEYDATA
 *
bk
;

2430 
BOVERFLOW
 *
bo
;

2432 
	`memt
(
dbt
, 0, (
DBT
));

2433 *
db
 = 0;

2435 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
);

2436 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
) {

2437 i(!
ovok
)

2440 
bo
 = (
BOVERFLOW
 *)
bk
;

2441 
	`F_SET
(
dbt
, 
DB_DBT_MALLOC
);

2443 *
db
 = 1;

2444  (
	`__db_goff
(
dbp
, 
NULL
, 
dbt
,

2445 
bo
->

, bo->
pgno
, 
NULL
, NULL));

2447 
dbt
->
da
 = 
bk
->data;

2448 
dbt
->
size
 = 
bk
->
n
;

2452 
	}
}

	@../btree/btree_auto.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/b.h
"

11 
	~"dbc/log.h
"

12 
	~"dbc/txn.h
"

20 
	$__bam_l_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 

, 
΢
, 
right
, 

, 
dx
,

21 
gno
, 
Ƣ
, 
ro_pgno
, 
pg
, 
ags
)

22 
DB
 *
dbp
;

23 
DB_TXN
 *
tx
;

24 
DB_LSN
 *
t_lp
;

25 
u_t32_t
 
ags
;

26 
db_pgno_t
 

;

27 
DB_LSN
 * 
΢
;

28 
db_pgno_t
 
right
;

29 
DB_LSN
 * 

;

30 
u_t32_t
 
dx
;

31 
db_pgno_t
 
gno
;

32 
DB_LSN
 * 
Ƣ
;

33 
db_pgno_t
 
ro_pgno
;

34 cڡ 
DBT
 *
pg
;

35 
u_t32_t
 
ags
;

37 
DBT
 
logc
;

38 
DB_ENV
 *
dbv
;

39 
DB_TXNLOGREC
 *

;

40 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

41 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

42 
u_t
 
ad
;

43 
u_t8_t
 *
bp
;

44 
is_dub
, 
t
;

46 
dbv
 = 
dbp
->dbenv;

47 
	`COMPQUIET
(

, 
NULL
);

49 
y
 = 
DB___bam_l
;

50 
ad
 = 0;

51 
p
 = 
t_lp
;

53 
t
 = 0;

55 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

56 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

57 i(
tx
 =
NULL
)

59 
is_dub
 = 0;

61 
is_dub
 = 1;

63 i(
tx
 =
NULL
) {

64 
txn_num
 = 0;

65 
lp
 = &
nu_l
;

66 
nu_l
.
fe
 =u_l.
offt
 = 0;

68 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

69 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

70  (
t
);

77 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

78 
txn_num
 = 
tx
->
txnid
;

81 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

82 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

83 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

84  (
t
);

86 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

87 + (
u_t32_t
)

88 + (
u_t32_t
)

89 + (*
΢
)

90 + (
u_t32_t
)

91 + (*

)

92 + (
u_t32_t
)

93 + (
u_t32_t
)

94 + (*
Ƣ
)

95 + (
u_t32_t
)

96 + (
u_t32_t
+ (
pg
 =
NULL
 ? 0 :g->
size
)

97 + (
u_t32_t
);

98 i(
	`CRYPTO_ON
(
dbv
)) {

99 
ad
 =

100 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

101 
logc
.
size
 +
ad
;

104 i(
is_dub
 || 
tx
 =
NULL
) {

105 i((
t
 =

106 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

107  (
t
);

109 i((
t
 = 
	`__os_mloc
(
dbv
,

110 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

111  (
t
);

112 #ifde
DIAGNOSTIC


113 i((
t
 =

114 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

115 
	`__os_
(
dbv
, 

);

116  (
t
);

119 
logc
.
da
 = 

->data;

122 i(
ad
 > 0)

123 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

125 
bp
 = 
logc
.
da
;

127 
	`memy
(
bp
, &
y
, (rectype));

128 
bp
 +(
y
);

130 
	`memy
(
bp
, &
txn_num
, (txn_num));

131 
bp
 +(
txn_num
);

133 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

134 
bp
 +(
DB_LSN
);

136 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

137 
	`memy
(
bp
, &
ump
, (uinttmp));

138 
bp
 +(
ump
);

140 
ump
 = (
u_t32_t
)

;

141 
	`memy
(
bp
, &
ump
, (uinttmp));

142 
bp
 +(
ump
);

144 i(
΢
 !
NULL
) {

145 i(
tx
 !
NULL
) {

146 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

147 i(
	`LOG_COMPARE
(
΢
, &

->
l
>0 && (
t
 =

148 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
΢
) != 0))

149  (
t
);

151 
	`memy
(
bp
, 
΢
, (*llsn));

153 
	`memt
(
bp
, 0, (*
΢
));

154 
bp
 +(*
΢
);

156 
ump
 = (
u_t32_t
)
right
;

157 
	`memy
(
bp
, &
ump
, (uinttmp));

158 
bp
 +(
ump
);

160 i(

 !
NULL
) {

161 i(
tx
 !
NULL
) {

162 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

163 i(
	`LOG_COMPARE
(

, &

->
l
>0 && (
t
 =

164 
	`__log_check_ge_l
(
dbv
, 
dbp
, 

) != 0))

165  (
t
);

167 
	`memy
(
bp
, 

, (*rlsn));

169 
	`memt
(
bp
, 0, (*

));

170 
bp
 +(*

);

172 
ump
 = (
u_t32_t
)
dx
;

173 
	`memy
(
bp
, &
ump
, (uinttmp));

174 
bp
 +(
ump
);

176 
ump
 = (
u_t32_t
)
gno
;

177 
	`memy
(
bp
, &
ump
, (uinttmp));

178 
bp
 +(
ump
);

180 i(
Ƣ
 !
NULL
) {

181 i(
tx
 !
NULL
) {

182 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

183 i(
	`LOG_COMPARE
(
Ƣ
, &

->
l
>0 && (
t
 =

184 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
Ƣ
) != 0))

185  (
t
);

187 
	`memy
(
bp
, 
Ƣ
, (*nlsn));

189 
	`memt
(
bp
, 0, (*
Ƣ
));

190 
bp
 +(*
Ƣ
);

192 
ump
 = (
u_t32_t
)
ro_pgno
;

193 
	`memy
(
bp
, &
ump
, (uinttmp));

194 
bp
 +(
ump
);

196 i(
pg
 =
NULL
) {

197 
zo
 = 0;

198 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

199 
bp
 +(
u_t32_t
);

201 
	`memy
(
bp
, &
pg
->
size
, (pg->size));

202 
bp
 +(
pg
->
size
);

203 
	`memy
(
bp
, 
pg
->
da
,g->
size
);

204 
bp
 +
pg
->
size
;

207 
ump
 = (
u_t32_t
)
ags
;

208 
	`memy
(
bp
, &
ump
, (uinttmp));

209 
bp
 +(
ump
);

211 
	`DB_ASSERT
(
dbv
,

212 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

214 i(
is_dub
 || 
tx
 =
NULL
) {

215 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

216 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

217 *
lp
 = *
p
;

218 i(
p
 !
t_lp
)

219 *
t_lp
 = *
p
;

222 
t
 = 0;

223 #ifde
DIAGNOSTIC


228 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

229 
y
 |
DB_debug_FLAG
;

230 
	`memy
(
logc
.
da
, &
y
, (rectype));

232 i(!
	`IS_REP_CLIENT
(
dbv
))

233 
t
 = 
	`__log_put
(
dbv
,

234 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

236 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

237 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

238 
	`LSN_NOT_LOGGED
(*
t_lp
);

241 #ifde
LOG_DIAGNOSTIC


242 i(
t
 != 0)

243 ()
	`__bam_l_t
(
dbv
,

244 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

247 #ifde
DIAGNOSTIC


248 
	`__os_
(
dbv
, 
logc
.
da
);

250 i(
is_dub
 || 
tx
 =
NULL
)

251 
	`__os_
(
dbv
, 
logc
.
da
);

253  (
t
);

254 
	}
}

260 
	$__bam_l_ad
(
dbv
, 
cbuf
, 
g
)

261 
DB_ENV
 *
dbv
;

262 *
cbuf
;

263 
__bam_l_gs
 **
g
;

265 
__bam_l_gs
 *
gp
;

266 
u_t32_t
 
ump
;

267 
u_t8_t
 *
bp
;

268 
t
;

270 i((
t
 = 
	`__os_mloc
(
dbv
,

271 (
__bam_l_gs
+ (
DB_TXN
), &
gp
)) != 0)

272  (
t
);

273 
bp
 = 
cbuf
;

274 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

275 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

277 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

278 
bp
 +(
gp
->
ty
);

280 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

281 
bp
 +(
gp
->
tx
->
txnid
);

283 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

284 
bp
 +(
DB_LSN
);

286 
	`memy
(&
ump
, 
bp
, (uinttmp));

287 
gp
->
feid
 = (
t32_t
)
ump
;

288 
bp
 +(
ump
);

290 
	`memy
(&
ump
, 
bp
, (uinttmp));

291 
gp
->

 = (
db_pgno_t
)
ump
;

292 
bp
 +(
ump
);

294 
	`memy
(&
gp
->
΢
, 
bp
, (argp->llsn));

295 
bp
 +(
gp
->
΢
);

297 
	`memy
(&
ump
, 
bp
, (uinttmp));

298 
gp
->
right
 = (
db_pgno_t
)
ump
;

299 
bp
 +(
ump
);

301 
	`memy
(&
gp
->

, 
bp
, (argp->rlsn));

302 
bp
 +(
gp
->

);

304 
	`memy
(&
ump
, 
bp
, (uinttmp));

305 
gp
->
dx
 = (
u_t32_t
)
ump
;

306 
bp
 +(
ump
);

308 
	`memy
(&
ump
, 
bp
, (uinttmp));

309 
gp
->
gno
 = (
db_pgno_t
)
ump
;

310 
bp
 +(
ump
);

312 
	`memy
(&
gp
->
Ƣ
, 
bp
, (argp->nlsn));

313 
bp
 +(
gp
->
Ƣ
);

315 
	`memy
(&
ump
, 
bp
, (uinttmp));

316 
gp
->
ro_pgno
 = (
db_pgno_t
)
ump
;

317 
bp
 +(
ump
);

319 
	`memt
(&
gp
->
pg
, 0, (argp->pg));

320 
	`memy
(&
gp
->
pg
.
size
, 
bp
, (
u_t32_t
));

321 
bp
 +(
u_t32_t
);

322 
gp
->
pg
.
da
 = 
bp
;

323 
bp
 +
gp
->
pg
.
size
;

325 
	`memy
(&
ump
, 
bp
, (uinttmp));

326 
gp
->
ags
 = (
u_t32_t
)
ump
;

327 
bp
 +(
ump
);

329 *
g
 = 
gp
;

331 
	}
}

339 
	$__bam_rl_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
pgdbt
, 
ro_pgno
, 
ec
, 
roْt
,

340 
rol
)

341 
DB
 *
dbp
;

342 
DB_TXN
 *
tx
;

343 
DB_LSN
 *
t_lp
;

344 
u_t32_t
 
ags
;

345 
db_pgno_t
 
pgno
;

346 cڡ 
DBT
 *
pgdbt
;

347 
db_pgno_t
 
ro_pgno
;

348 
db_pgno_t
 
ec
;

349 cڡ 
DBT
 *
roْt
;

350 
DB_LSN
 * 
rol
;

352 
DBT
 
logc
;

353 
DB_ENV
 *
dbv
;

354 
DB_TXNLOGREC
 *

;

355 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

356 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

357 
u_t
 
ad
;

358 
u_t8_t
 *
bp
;

359 
is_dub
, 
t
;

361 
dbv
 = 
dbp
->dbenv;

362 
	`COMPQUIET
(

, 
NULL
);

364 
y
 = 
DB___bam_rl
;

365 
ad
 = 0;

366 
p
 = 
t_lp
;

368 
t
 = 0;

370 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

371 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

372 i(
tx
 =
NULL
)

374 
is_dub
 = 0;

376 
is_dub
 = 1;

378 i(
tx
 =
NULL
) {

379 
txn_num
 = 0;

380 
lp
 = &
nu_l
;

381 
nu_l
.
fe
 =u_l.
offt
 = 0;

383 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

384 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

385  (
t
);

392 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

393 
txn_num
 = 
tx
->
txnid
;

396 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

397 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

398 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

399  (
t
);

401 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

402 + (
u_t32_t
)

403 + (
u_t32_t
)

404 + (
u_t32_t
+ (
pgdbt
 =
NULL
 ? 0 :gdbt->
size
)

405 + (
u_t32_t
)

406 + (
u_t32_t
)

407 + (
u_t32_t
+ (
roْt
 =
NULL
 ? 0 :oْt->
size
)

408 + (*
rol
);

409 i(
	`CRYPTO_ON
(
dbv
)) {

410 
ad
 =

411 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

412 
logc
.
size
 +
ad
;

415 i(
is_dub
 || 
tx
 =
NULL
) {

416 i((
t
 =

417 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

418  (
t
);

420 i((
t
 = 
	`__os_mloc
(
dbv
,

421 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

422  (
t
);

423 #ifde
DIAGNOSTIC


424 i((
t
 =

425 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

426 
	`__os_
(
dbv
, 

);

427  (
t
);

430 
logc
.
da
 = 

->data;

433 i(
ad
 > 0)

434 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

436 
bp
 = 
logc
.
da
;

438 
	`memy
(
bp
, &
y
, (rectype));

439 
bp
 +(
y
);

441 
	`memy
(
bp
, &
txn_num
, (txn_num));

442 
bp
 +(
txn_num
);

444 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

445 
bp
 +(
DB_LSN
);

447 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

448 
	`memy
(
bp
, &
ump
, (uinttmp));

449 
bp
 +(
ump
);

451 
ump
 = (
u_t32_t
)
pgno
;

452 
	`memy
(
bp
, &
ump
, (uinttmp));

453 
bp
 +(
ump
);

455 i(
pgdbt
 =
NULL
) {

456 
zo
 = 0;

457 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

458 
bp
 +(
u_t32_t
);

460 
	`memy
(
bp
, &
pgdbt
->
size
, (pgdbt->size));

461 
bp
 +(
pgdbt
->
size
);

462 
	`memy
(
bp
, 
pgdbt
->
da
,gdbt->
size
);

463 
bp
 +
pgdbt
->
size
;

466 
ump
 = (
u_t32_t
)
ro_pgno
;

467 
	`memy
(
bp
, &
ump
, (uinttmp));

468 
bp
 +(
ump
);

470 
ump
 = (
u_t32_t
)
ec
;

471 
	`memy
(
bp
, &
ump
, (uinttmp));

472 
bp
 +(
ump
);

474 i(
roْt
 =
NULL
) {

475 
zo
 = 0;

476 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

477 
bp
 +(
u_t32_t
);

479 
	`memy
(
bp
, &
roْt
->
size
, (rootent->size));

480 
bp
 +(
roْt
->
size
);

481 
	`memy
(
bp
, 
roْt
->
da
,oْt->
size
);

482 
bp
 +
roْt
->
size
;

485 i(
rol
 !
NULL
) {

486 i(
tx
 !
NULL
) {

487 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

488 i(
	`LOG_COMPARE
(
rol
, &

->
l
>0 && (
t
 =

489 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
rol
) != 0))

490  (
t
);

492 
	`memy
(
bp
, 
rol
, (*rootlsn));

494 
	`memt
(
bp
, 0, (*
rol
));

495 
bp
 +(*
rol
);

497 
	`DB_ASSERT
(
dbv
,

498 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

500 i(
is_dub
 || 
tx
 =
NULL
) {

501 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

502 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

503 *
lp
 = *
p
;

504 i(
p
 !
t_lp
)

505 *
t_lp
 = *
p
;

508 
t
 = 0;

509 #ifde
DIAGNOSTIC


514 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

515 
y
 |
DB_debug_FLAG
;

516 
	`memy
(
logc
.
da
, &
y
, (rectype));

518 i(!
	`IS_REP_CLIENT
(
dbv
))

519 
t
 = 
	`__log_put
(
dbv
,

520 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

522 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

523 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

524 
	`LSN_NOT_LOGGED
(*
t_lp
);

527 #ifde
LOG_DIAGNOSTIC


528 i(
t
 != 0)

529 ()
	`__bam_rl_t
(
dbv
,

530 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

533 #ifde
DIAGNOSTIC


534 
	`__os_
(
dbv
, 
logc
.
da
);

536 i(
is_dub
 || 
tx
 =
NULL
)

537 
	`__os_
(
dbv
, 
logc
.
da
);

539  (
t
);

540 
	}
}

546 
	$__bam_rl_ad
(
dbv
, 
cbuf
, 
g
)

547 
DB_ENV
 *
dbv
;

548 *
cbuf
;

549 
__bam_rl_gs
 **
g
;

551 
__bam_rl_gs
 *
gp
;

552 
u_t32_t
 
ump
;

553 
u_t8_t
 *
bp
;

554 
t
;

556 i((
t
 = 
	`__os_mloc
(
dbv
,

557 (
__bam_rl_gs
+ (
DB_TXN
), &
gp
)) != 0)

558  (
t
);

559 
bp
 = 
cbuf
;

560 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

561 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

563 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

564 
bp
 +(
gp
->
ty
);

566 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

567 
bp
 +(
gp
->
tx
->
txnid
);

569 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

570 
bp
 +(
DB_LSN
);

572 
	`memy
(&
ump
, 
bp
, (uinttmp));

573 
gp
->
feid
 = (
t32_t
)
ump
;

574 
bp
 +(
ump
);

576 
	`memy
(&
ump
, 
bp
, (uinttmp));

577 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

578 
bp
 +(
ump
);

580 
	`memt
(&
gp
->
pgdbt
, 0, (argp->pgdbt));

581 
	`memy
(&
gp
->
pgdbt
.
size
, 
bp
, (
u_t32_t
));

582 
bp
 +(
u_t32_t
);

583 
gp
->
pgdbt
.
da
 = 
bp
;

584 
bp
 +
gp
->
pgdbt
.
size
;

586 
	`memy
(&
ump
, 
bp
, (uinttmp));

587 
gp
->
ro_pgno
 = (
db_pgno_t
)
ump
;

588 
bp
 +(
ump
);

590 
	`memy
(&
ump
, 
bp
, (uinttmp));

591 
gp
->
ec
 = (
db_pgno_t
)
ump
;

592 
bp
 +(
ump
);

594 
	`memt
(&
gp
->
roْt
, 0, (argp->rootent));

595 
	`memy
(&
gp
->
roْt
.
size
, 
bp
, (
u_t32_t
));

596 
bp
 +(
u_t32_t
);

597 
gp
->
roْt
.
da
 = 
bp
;

598 
bp
 +
gp
->
roْt
.
size
;

600 
	`memy
(&
gp
->
rol
, 
bp
, (argp->rootlsn));

601 
bp
 +(
gp
->
rol
);

603 *
g
 = 
gp
;

605 
	}
}

613 
	$__bam_adj_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
l
, 
dx
, 
dx_cy
, 
is_
)

614 
DB
 *
dbp
;

615 
DB_TXN
 *
tx
;

616 
DB_LSN
 *
t_lp
;

617 
u_t32_t
 
ags
;

618 
db_pgno_t
 
pgno
;

619 
DB_LSN
 * 
l
;

620 
u_t32_t
 
dx
;

621 
u_t32_t
 
dx_cy
;

622 
u_t32_t
 
is_
;

624 
DBT
 
logc
;

625 
DB_ENV
 *
dbv
;

626 
DB_TXNLOGREC
 *

;

627 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

628 
u_t32_t
 
ump
, 
y
, 
txn_num
;

629 
u_t
 
ad
;

630 
u_t8_t
 *
bp
;

631 
is_dub
, 
t
;

633 
dbv
 = 
dbp
->dbenv;

634 
	`COMPQUIET
(

, 
NULL
);

636 
y
 = 
DB___bam_adj
;

637 
ad
 = 0;

638 
p
 = 
t_lp
;

640 
t
 = 0;

642 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

643 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

644 i(
tx
 =
NULL
)

646 
is_dub
 = 0;

648 
is_dub
 = 1;

650 i(
tx
 =
NULL
) {

651 
txn_num
 = 0;

652 
lp
 = &
nu_l
;

653 
nu_l
.
fe
 =u_l.
offt
 = 0;

655 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

656 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

657  (
t
);

664 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

665 
txn_num
 = 
tx
->
txnid
;

668 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

669 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

670 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

671  (
t
);

673 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

674 + (
u_t32_t
)

675 + (
u_t32_t
)

676 + (*
l
)

677 + (
u_t32_t
)

678 + (
u_t32_t
)

679 + (
u_t32_t
);

680 i(
	`CRYPTO_ON
(
dbv
)) {

681 
ad
 =

682 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

683 
logc
.
size
 +
ad
;

686 i(
is_dub
 || 
tx
 =
NULL
) {

687 i((
t
 =

688 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

689  (
t
);

691 i((
t
 = 
	`__os_mloc
(
dbv
,

692 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

693  (
t
);

694 #ifde
DIAGNOSTIC


695 i((
t
 =

696 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

697 
	`__os_
(
dbv
, 

);

698  (
t
);

701 
logc
.
da
 = 

->data;

704 i(
ad
 > 0)

705 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

707 
bp
 = 
logc
.
da
;

709 
	`memy
(
bp
, &
y
, (rectype));

710 
bp
 +(
y
);

712 
	`memy
(
bp
, &
txn_num
, (txn_num));

713 
bp
 +(
txn_num
);

715 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

716 
bp
 +(
DB_LSN
);

718 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

719 
	`memy
(
bp
, &
ump
, (uinttmp));

720 
bp
 +(
ump
);

722 
ump
 = (
u_t32_t
)
pgno
;

723 
	`memy
(
bp
, &
ump
, (uinttmp));

724 
bp
 +(
ump
);

726 i(
l
 !
NULL
) {

727 i(
tx
 !
NULL
) {

728 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

729 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

730 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

731  (
t
);

733 
	`memy
(
bp
, 
l
, (*lsn));

735 
	`memt
(
bp
, 0, (*
l
));

736 
bp
 +(*
l
);

738 
ump
 = (
u_t32_t
)
dx
;

739 
	`memy
(
bp
, &
ump
, (uinttmp));

740 
bp
 +(
ump
);

742 
ump
 = (
u_t32_t
)
dx_cy
;

743 
	`memy
(
bp
, &
ump
, (uinttmp));

744 
bp
 +(
ump
);

746 
ump
 = (
u_t32_t
)
is_
;

747 
	`memy
(
bp
, &
ump
, (uinttmp));

748 
bp
 +(
ump
);

750 
	`DB_ASSERT
(
dbv
,

751 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

753 i(
is_dub
 || 
tx
 =
NULL
) {

754 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

755 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

756 *
lp
 = *
p
;

757 i(
p
 !
t_lp
)

758 *
t_lp
 = *
p
;

761 
t
 = 0;

762 #ifde
DIAGNOSTIC


767 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

768 
y
 |
DB_debug_FLAG
;

769 
	`memy
(
logc
.
da
, &
y
, (rectype));

771 i(!
	`IS_REP_CLIENT
(
dbv
))

772 
t
 = 
	`__log_put
(
dbv
,

773 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

775 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

776 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

777 
	`LSN_NOT_LOGGED
(*
t_lp
);

780 #ifde
LOG_DIAGNOSTIC


781 i(
t
 != 0)

782 ()
	`__bam_adj_t
(
dbv
,

783 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

786 #ifde
DIAGNOSTIC


787 
	`__os_
(
dbv
, 
logc
.
da
);

789 i(
is_dub
 || 
tx
 =
NULL
)

790 
	`__os_
(
dbv
, 
logc
.
da
);

792  (
t
);

793 
	}
}

799 
	$__bam_adj_ad
(
dbv
, 
cbuf
, 
g
)

800 
DB_ENV
 *
dbv
;

801 *
cbuf
;

802 
__bam_adj_gs
 **
g
;

804 
__bam_adj_gs
 *
gp
;

805 
u_t32_t
 
ump
;

806 
u_t8_t
 *
bp
;

807 
t
;

809 i((
t
 = 
	`__os_mloc
(
dbv
,

810 (
__bam_adj_gs
+ (
DB_TXN
), &
gp
)) != 0)

811  (
t
);

812 
bp
 = 
cbuf
;

813 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

814 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

816 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

817 
bp
 +(
gp
->
ty
);

819 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

820 
bp
 +(
gp
->
tx
->
txnid
);

822 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

823 
bp
 +(
DB_LSN
);

825 
	`memy
(&
ump
, 
bp
, (uinttmp));

826 
gp
->
feid
 = (
t32_t
)
ump
;

827 
bp
 +(
ump
);

829 
	`memy
(&
ump
, 
bp
, (uinttmp));

830 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

831 
bp
 +(
ump
);

833 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

834 
bp
 +(
gp
->
l
);

836 
	`memy
(&
ump
, 
bp
, (uinttmp));

837 
gp
->
dx
 = (
u_t32_t
)
ump
;

838 
bp
 +(
ump
);

840 
	`memy
(&
ump
, 
bp
, (uinttmp));

841 
gp
->
dx_cy
 = (
u_t32_t
)
ump
;

842 
bp
 +(
ump
);

844 
	`memy
(&
ump
, 
bp
, (uinttmp));

845 
gp
->
is_
 = (
u_t32_t
)
ump
;

846 
bp
 +(
ump
);

848 *
g
 = 
gp
;

850 
	}
}

857 
	$__bam_dju_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
l
, 
dx
, 
adju
, 
ags
)

858 
DB
 *
dbp
;

859 
DB_TXN
 *
tx
;

860 
DB_LSN
 *
t_lp
;

861 
u_t32_t
 
ags
;

862 
db_pgno_t
 
pgno
;

863 
DB_LSN
 * 
l
;

864 
u_t32_t
 
dx
;

865 
t32_t
 
adju
;

866 
u_t32_t
 
ags
;

868 
DBT
 
logc
;

869 
DB_ENV
 *
dbv
;

870 
DB_TXNLOGREC
 *

;

871 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

872 
u_t32_t
 
ump
, 
y
, 
txn_num
;

873 
u_t
 
ad
;

874 
u_t8_t
 *
bp
;

875 
is_dub
, 
t
;

877 
dbv
 = 
dbp
->dbenv;

878 
	`COMPQUIET
(

, 
NULL
);

880 
y
 = 
DB___bam_dju
;

881 
ad
 = 0;

882 
p
 = 
t_lp
;

884 
t
 = 0;

886 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

887 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

888 i(
tx
 =
NULL
)

890 
is_dub
 = 0;

892 
is_dub
 = 1;

894 i(
tx
 =
NULL
) {

895 
txn_num
 = 0;

896 
lp
 = &
nu_l
;

897 
nu_l
.
fe
 =u_l.
offt
 = 0;

899 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

900 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

901  (
t
);

908 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

909 
txn_num
 = 
tx
->
txnid
;

912 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

913 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

914 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

915  (
t
);

917 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

918 + (
u_t32_t
)

919 + (
u_t32_t
)

920 + (*
l
)

921 + (
u_t32_t
)

922 + (
u_t32_t
)

923 + (
u_t32_t
);

924 i(
	`CRYPTO_ON
(
dbv
)) {

925 
ad
 =

926 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

927 
logc
.
size
 +
ad
;

930 i(
is_dub
 || 
tx
 =
NULL
) {

931 i((
t
 =

932 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

933  (
t
);

935 i((
t
 = 
	`__os_mloc
(
dbv
,

936 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

937  (
t
);

938 #ifde
DIAGNOSTIC


939 i((
t
 =

940 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

941 
	`__os_
(
dbv
, 

);

942  (
t
);

945 
logc
.
da
 = 

->data;

948 i(
ad
 > 0)

949 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

951 
bp
 = 
logc
.
da
;

953 
	`memy
(
bp
, &
y
, (rectype));

954 
bp
 +(
y
);

956 
	`memy
(
bp
, &
txn_num
, (txn_num));

957 
bp
 +(
txn_num
);

959 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

960 
bp
 +(
DB_LSN
);

962 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

963 
	`memy
(
bp
, &
ump
, (uinttmp));

964 
bp
 +(
ump
);

966 
ump
 = (
u_t32_t
)
pgno
;

967 
	`memy
(
bp
, &
ump
, (uinttmp));

968 
bp
 +(
ump
);

970 i(
l
 !
NULL
) {

971 i(
tx
 !
NULL
) {

972 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

973 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

974 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

975  (
t
);

977 
	`memy
(
bp
, 
l
, (*lsn));

979 
	`memt
(
bp
, 0, (*
l
));

980 
bp
 +(*
l
);

982 
ump
 = (
u_t32_t
)
dx
;

983 
	`memy
(
bp
, &
ump
, (uinttmp));

984 
bp
 +(
ump
);

986 
ump
 = (
u_t32_t
)
adju
;

987 
	`memy
(
bp
, &
ump
, (uinttmp));

988 
bp
 +(
ump
);

990 
ump
 = (
u_t32_t
)
ags
;

991 
	`memy
(
bp
, &
ump
, (uinttmp));

992 
bp
 +(
ump
);

994 
	`DB_ASSERT
(
dbv
,

995 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

997 i(
is_dub
 || 
tx
 =
NULL
) {

998 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

999 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1000 *
lp
 = *
p
;

1001 i(
p
 !
t_lp
)

1002 *
t_lp
 = *
p
;

1005 
t
 = 0;

1006 #ifde
DIAGNOSTIC


1011 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1012 
y
 |
DB_debug_FLAG
;

1013 
	`memy
(
logc
.
da
, &
y
, (rectype));

1015 i(!
	`IS_REP_CLIENT
(
dbv
))

1016 
t
 = 
	`__log_put
(
dbv
,

1017 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1019 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1020 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1021 
	`LSN_NOT_LOGGED
(*
t_lp
);

1024 #ifde
LOG_DIAGNOSTIC


1025 i(
t
 != 0)

1026 ()
	`__bam_dju_t
(
dbv
,

1027 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1030 #ifde
DIAGNOSTIC


1031 
	`__os_
(
dbv
, 
logc
.
da
);

1033 i(
is_dub
 || 
tx
 =
NULL
)

1034 
	`__os_
(
dbv
, 
logc
.
da
);

1036  (
t
);

1037 
	}
}

1044 
	$__bam_dju_ad
(
dbv
, 
cbuf
, 
g
)

1045 
DB_ENV
 *
dbv
;

1046 *
cbuf
;

1047 
__bam_dju_gs
 **
g
;

1049 
__bam_dju_gs
 *
gp
;

1050 
u_t32_t
 
ump
;

1051 
u_t8_t
 *
bp
;

1052 
t
;

1054 i((
t
 = 
	`__os_mloc
(
dbv
,

1055 (
__bam_dju_gs
+ (
DB_TXN
), &
gp
)) != 0)

1056  (
t
);

1057 
bp
 = 
cbuf
;

1058 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1059 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1061 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1062 
bp
 +(
gp
->
ty
);

1064 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1065 
bp
 +(
gp
->
tx
->
txnid
);

1067 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1068 
bp
 +(
DB_LSN
);

1070 
	`memy
(&
ump
, 
bp
, (uinttmp));

1071 
gp
->
feid
 = (
t32_t
)
ump
;

1072 
bp
 +(
ump
);

1074 
	`memy
(&
ump
, 
bp
, (uinttmp));

1075 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1076 
bp
 +(
ump
);

1078 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

1079 
bp
 +(
gp
->
l
);

1081 
	`memy
(&
ump
, 
bp
, (uinttmp));

1082 
gp
->
dx
 = (
u_t32_t
)
ump
;

1083 
bp
 +(
ump
);

1085 
	`memy
(&
ump
, 
bp
, (uinttmp));

1086 
gp
->
adju
 = (
t32_t
)
ump
;

1087 
bp
 +(
ump
);

1089 
	`memy
(&
ump
, 
bp
, (uinttmp));

1090 
gp
->
ags
 = (
u_t32_t
)
ump
;

1091 
bp
 +(
ump
);

1093 *
g
 = 
gp
;

1095 
	}
}

1102 
	$__bam_cd_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
l
, 
dx
)

1103 
DB
 *
dbp
;

1104 
DB_TXN
 *
tx
;

1105 
DB_LSN
 *
t_lp
;

1106 
u_t32_t
 
ags
;

1107 
db_pgno_t
 
pgno
;

1108 
DB_LSN
 * 
l
;

1109 
u_t32_t
 
dx
;

1111 
DBT
 
logc
;

1112 
DB_ENV
 *
dbv
;

1113 
DB_TXNLOGREC
 *

;

1114 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1115 
u_t32_t
 
ump
, 
y
, 
txn_num
;

1116 
u_t
 
ad
;

1117 
u_t8_t
 *
bp
;

1118 
is_dub
, 
t
;

1120 
dbv
 = 
dbp
->dbenv;

1121 
	`COMPQUIET
(

, 
NULL
);

1123 
y
 = 
DB___bam_cd
;

1124 
ad
 = 0;

1125 
p
 = 
t_lp
;

1127 
t
 = 0;

1129 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1130 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1131 i(
tx
 =
NULL
)

1133 
is_dub
 = 0;

1135 
is_dub
 = 1;

1137 i(
tx
 =
NULL
) {

1138 
txn_num
 = 0;

1139 
lp
 = &
nu_l
;

1140 
nu_l
.
fe
 =u_l.
offt
 = 0;

1142 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1143 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1144  (
t
);

1151 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1152 
txn_num
 = 
tx
->
txnid
;

1155 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1156 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1157 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1158  (
t
);

1160 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1161 + (
u_t32_t
)

1162 + (
u_t32_t
)

1163 + (*
l
)

1164 + (
u_t32_t
);

1165 i(
	`CRYPTO_ON
(
dbv
)) {

1166 
ad
 =

1167 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1168 
logc
.
size
 +
ad
;

1171 i(
is_dub
 || 
tx
 =
NULL
) {

1172 i((
t
 =

1173 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1174  (
t
);

1176 i((
t
 = 
	`__os_mloc
(
dbv
,

1177 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1178  (
t
);

1179 #ifde
DIAGNOSTIC


1180 i((
t
 =

1181 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1182 
	`__os_
(
dbv
, 

);

1183  (
t
);

1186 
logc
.
da
 = 

->data;

1189 i(
ad
 > 0)

1190 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1192 
bp
 = 
logc
.
da
;

1194 
	`memy
(
bp
, &
y
, (rectype));

1195 
bp
 +(
y
);

1197 
	`memy
(
bp
, &
txn_num
, (txn_num));

1198 
bp
 +(
txn_num
);

1200 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1201 
bp
 +(
DB_LSN
);

1203 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1204 
	`memy
(
bp
, &
ump
, (uinttmp));

1205 
bp
 +(
ump
);

1207 
ump
 = (
u_t32_t
)
pgno
;

1208 
	`memy
(
bp
, &
ump
, (uinttmp));

1209 
bp
 +(
ump
);

1211 i(
l
 !
NULL
) {

1212 i(
tx
 !
NULL
) {

1213 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1214 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

1215 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

1216  (
t
);

1218 
	`memy
(
bp
, 
l
, (*lsn));

1220 
	`memt
(
bp
, 0, (*
l
));

1221 
bp
 +(*
l
);

1223 
ump
 = (
u_t32_t
)
dx
;

1224 
	`memy
(
bp
, &
ump
, (uinttmp));

1225 
bp
 +(
ump
);

1227 
	`DB_ASSERT
(
dbv
,

1228 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1230 i(
is_dub
 || 
tx
 =
NULL
) {

1231 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1232 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1233 *
lp
 = *
p
;

1234 i(
p
 !
t_lp
)

1235 *
t_lp
 = *
p
;

1238 
t
 = 0;

1239 #ifde
DIAGNOSTIC


1244 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1245 
y
 |
DB_debug_FLAG
;

1246 
	`memy
(
logc
.
da
, &
y
, (rectype));

1248 i(!
	`IS_REP_CLIENT
(
dbv
))

1249 
t
 = 
	`__log_put
(
dbv
,

1250 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1252 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1253 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1254 
	`LSN_NOT_LOGGED
(*
t_lp
);

1257 #ifde
LOG_DIAGNOSTIC


1258 i(
t
 != 0)

1259 ()
	`__bam_cd_t
(
dbv
,

1260 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1263 #ifde
DIAGNOSTIC


1264 
	`__os_
(
dbv
, 
logc
.
da
);

1266 i(
is_dub
 || 
tx
 =
NULL
)

1267 
	`__os_
(
dbv
, 
logc
.
da
);

1269  (
t
);

1270 
	}
}

1276 
	$__bam_cd_ad
(
dbv
, 
cbuf
, 
g
)

1277 
DB_ENV
 *
dbv
;

1278 *
cbuf
;

1279 
__bam_cd_gs
 **
g
;

1281 
__bam_cd_gs
 *
gp
;

1282 
u_t32_t
 
ump
;

1283 
u_t8_t
 *
bp
;

1284 
t
;

1286 i((
t
 = 
	`__os_mloc
(
dbv
,

1287 (
__bam_cd_gs
+ (
DB_TXN
), &
gp
)) != 0)

1288  (
t
);

1289 
bp
 = 
cbuf
;

1290 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1291 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1293 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1294 
bp
 +(
gp
->
ty
);

1296 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1297 
bp
 +(
gp
->
tx
->
txnid
);

1299 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1300 
bp
 +(
DB_LSN
);

1302 
	`memy
(&
ump
, 
bp
, (uinttmp));

1303 
gp
->
feid
 = (
t32_t
)
ump
;

1304 
bp
 +(
ump
);

1306 
	`memy
(&
ump
, 
bp
, (uinttmp));

1307 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1308 
bp
 +(
ump
);

1310 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

1311 
bp
 +(
gp
->
l
);

1313 
	`memy
(&
ump
, 
bp
, (uinttmp));

1314 
gp
->
dx
 = (
u_t32_t
)
ump
;

1315 
bp
 +(
ump
);

1317 *
g
 = 
gp
;

1319 
	}
}

1327 
	$__bam__log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
l
, 
dx
, 
isded
, 
ig
,

1328 

, 
efix
, 
suffix
)

1329 
DB
 *
dbp
;

1330 
DB_TXN
 *
tx
;

1331 
DB_LSN
 *
t_lp
;

1332 
u_t32_t
 
ags
;

1333 
db_pgno_t
 
pgno
;

1334 
DB_LSN
 * 
l
;

1335 
u_t32_t
 
dx
;

1336 
u_t32_t
 
isded
;

1337 cڡ 
DBT
 *
ig
;

1338 cڡ 
DBT
 *

;

1339 
u_t32_t
 
efix
;

1340 
u_t32_t
 
suffix
;

1342 
DBT
 
logc
;

1343 
DB_ENV
 *
dbv
;

1344 
DB_TXNLOGREC
 *

;

1345 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1346 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

1347 
u_t
 
ad
;

1348 
u_t8_t
 *
bp
;

1349 
is_dub
, 
t
;

1351 
dbv
 = 
dbp
->dbenv;

1352 
	`COMPQUIET
(

, 
NULL
);

1354 
y
 = 
DB___bam_
;

1355 
ad
 = 0;

1356 
p
 = 
t_lp
;

1358 
t
 = 0;

1360 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1361 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1362 i(
tx
 =
NULL
)

1364 
is_dub
 = 0;

1366 
is_dub
 = 1;

1368 i(
tx
 =
NULL
) {

1369 
txn_num
 = 0;

1370 
lp
 = &
nu_l
;

1371 
nu_l
.
fe
 =u_l.
offt
 = 0;

1373 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1374 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1375  (
t
);

1382 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1383 
txn_num
 = 
tx
->
txnid
;

1386 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1387 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1388 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1389  (
t
);

1391 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1392 + (
u_t32_t
)

1393 + (
u_t32_t
)

1394 + (*
l
)

1395 + (
u_t32_t
)

1396 + (
u_t32_t
)

1397 + (
u_t32_t
+ (
ig
 =
NULL
 ? 0 : orig->
size
)

1398 + (
u_t32_t
+ (

 =
NULL
 ? 0 :l->
size
)

1399 + (
u_t32_t
)

1400 + (
u_t32_t
);

1401 i(
	`CRYPTO_ON
(
dbv
)) {

1402 
ad
 =

1403 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1404 
logc
.
size
 +
ad
;

1407 i(
is_dub
 || 
tx
 =
NULL
) {

1408 i((
t
 =

1409 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1410  (
t
);

1412 i((
t
 = 
	`__os_mloc
(
dbv
,

1413 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1414  (
t
);

1415 #ifde
DIAGNOSTIC


1416 i((
t
 =

1417 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1418 
	`__os_
(
dbv
, 

);

1419  (
t
);

1422 
logc
.
da
 = 

->data;

1425 i(
ad
 > 0)

1426 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1428 
bp
 = 
logc
.
da
;

1430 
	`memy
(
bp
, &
y
, (rectype));

1431 
bp
 +(
y
);

1433 
	`memy
(
bp
, &
txn_num
, (txn_num));

1434 
bp
 +(
txn_num
);

1436 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1437 
bp
 +(
DB_LSN
);

1439 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1440 
	`memy
(
bp
, &
ump
, (uinttmp));

1441 
bp
 +(
ump
);

1443 
ump
 = (
u_t32_t
)
pgno
;

1444 
	`memy
(
bp
, &
ump
, (uinttmp));

1445 
bp
 +(
ump
);

1447 i(
l
 !
NULL
) {

1448 i(
tx
 !
NULL
) {

1449 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1450 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

1451 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

1452  (
t
);

1454 
	`memy
(
bp
, 
l
, (*lsn));

1456 
	`memt
(
bp
, 0, (*
l
));

1457 
bp
 +(*
l
);

1459 
ump
 = (
u_t32_t
)
dx
;

1460 
	`memy
(
bp
, &
ump
, (uinttmp));

1461 
bp
 +(
ump
);

1463 
ump
 = (
u_t32_t
)
isded
;

1464 
	`memy
(
bp
, &
ump
, (uinttmp));

1465 
bp
 +(
ump
);

1467 i(
ig
 =
NULL
) {

1468 
zo
 = 0;

1469 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1470 
bp
 +(
u_t32_t
);

1472 
	`memy
(
bp
, &
ig
->
size
, (orig->size));

1473 
bp
 +(
ig
->
size
);

1474 
	`memy
(
bp
, 
ig
->
da
, orig->
size
);

1475 
bp
 +
ig
->
size
;

1478 i(

 =
NULL
) {

1479 
zo
 = 0;

1480 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1481 
bp
 +(
u_t32_t
);

1483 
	`memy
(
bp
, &

->
size
, (repl->size));

1484 
bp
 +(

->
size
);

1485 
	`memy
(
bp
, 

->
da
,l->
size
);

1486 
bp
 +

->
size
;

1489 
ump
 = (
u_t32_t
)
efix
;

1490 
	`memy
(
bp
, &
ump
, (uinttmp));

1491 
bp
 +(
ump
);

1493 
ump
 = (
u_t32_t
)
suffix
;

1494 
	`memy
(
bp
, &
ump
, (uinttmp));

1495 
bp
 +(
ump
);

1497 
	`DB_ASSERT
(
dbv
,

1498 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1500 i(
is_dub
 || 
tx
 =
NULL
) {

1501 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1502 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1503 *
lp
 = *
p
;

1504 i(
p
 !
t_lp
)

1505 *
t_lp
 = *
p
;

1508 
t
 = 0;

1509 #ifde
DIAGNOSTIC


1514 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1515 
y
 |
DB_debug_FLAG
;

1516 
	`memy
(
logc
.
da
, &
y
, (rectype));

1518 i(!
	`IS_REP_CLIENT
(
dbv
))

1519 
t
 = 
	`__log_put
(
dbv
,

1520 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1522 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1523 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1524 
	`LSN_NOT_LOGGED
(*
t_lp
);

1527 #ifde
LOG_DIAGNOSTIC


1528 i(
t
 != 0)

1529 ()
	`__bam__t
(
dbv
,

1530 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1533 #ifde
DIAGNOSTIC


1534 
	`__os_
(
dbv
, 
logc
.
da
);

1536 i(
is_dub
 || 
tx
 =
NULL
)

1537 
	`__os_
(
dbv
, 
logc
.
da
);

1539  (
t
);

1540 
	}
}

1546 
	$__bam__ad
(
dbv
, 
cbuf
, 
g
)

1547 
DB_ENV
 *
dbv
;

1548 *
cbuf
;

1549 
__bam__gs
 **
g
;

1551 
__bam__gs
 *
gp
;

1552 
u_t32_t
 
ump
;

1553 
u_t8_t
 *
bp
;

1554 
t
;

1556 i((
t
 = 
	`__os_mloc
(
dbv
,

1557 (
__bam__gs
+ (
DB_TXN
), &
gp
)) != 0)

1558  (
t
);

1559 
bp
 = 
cbuf
;

1560 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1561 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1563 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1564 
bp
 +(
gp
->
ty
);

1566 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1567 
bp
 +(
gp
->
tx
->
txnid
);

1569 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1570 
bp
 +(
DB_LSN
);

1572 
	`memy
(&
ump
, 
bp
, (uinttmp));

1573 
gp
->
feid
 = (
t32_t
)
ump
;

1574 
bp
 +(
ump
);

1576 
	`memy
(&
ump
, 
bp
, (uinttmp));

1577 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1578 
bp
 +(
ump
);

1580 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

1581 
bp
 +(
gp
->
l
);

1583 
	`memy
(&
ump
, 
bp
, (uinttmp));

1584 
gp
->
dx
 = (
u_t32_t
)
ump
;

1585 
bp
 +(
ump
);

1587 
	`memy
(&
ump
, 
bp
, (uinttmp));

1588 
gp
->
isded
 = (
u_t32_t
)
ump
;

1589 
bp
 +(
ump
);

1591 
	`memt
(&
gp
->
ig
, 0, (argp->orig));

1592 
	`memy
(&
gp
->
ig
.
size
, 
bp
, (
u_t32_t
));

1593 
bp
 +(
u_t32_t
);

1594 
gp
->
ig
.
da
 = 
bp
;

1595 
bp
 +
gp
->
ig
.
size
;

1597 
	`memt
(&
gp
->

, 0, (argp->repl));

1598 
	`memy
(&
gp
->

.
size
, 
bp
, (
u_t32_t
));

1599 
bp
 +(
u_t32_t
);

1600 
gp
->

.
da
 = 
bp
;

1601 
bp
 +
gp
->

.
size
;

1603 
	`memy
(&
ump
, 
bp
, (uinttmp));

1604 
gp
->
efix
 = (
u_t32_t
)
ump
;

1605 
bp
 +(
ump
);

1607 
	`memy
(&
ump
, 
bp
, (uinttmp));

1608 
gp
->
suffix
 = (
u_t32_t
)
ump
;

1609 
bp
 +(
ump
);

1611 *
g
 = 
gp
;

1613 
	}
}

1620 
	$__bam_ro_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
ma_pgno
, 
ro_pgno
, 
ma_l
)

1621 
DB
 *
dbp
;

1622 
DB_TXN
 *
tx
;

1623 
DB_LSN
 *
t_lp
;

1624 
u_t32_t
 
ags
;

1625 
db_pgno_t
 
ma_pgno
;

1626 
db_pgno_t
 
ro_pgno
;

1627 
DB_LSN
 * 
ma_l
;

1629 
DBT
 
logc
;

1630 
DB_ENV
 *
dbv
;

1631 
DB_TXNLOGREC
 *

;

1632 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1633 
u_t32_t
 
ump
, 
y
, 
txn_num
;

1634 
u_t
 
ad
;

1635 
u_t8_t
 *
bp
;

1636 
is_dub
, 
t
;

1638 
dbv
 = 
dbp
->dbenv;

1639 
	`COMPQUIET
(

, 
NULL
);

1641 
y
 = 
DB___bam_ro
;

1642 
ad
 = 0;

1643 
p
 = 
t_lp
;

1645 
t
 = 0;

1647 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1648 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1649 i(
tx
 =
NULL
)

1651 
is_dub
 = 0;

1653 
is_dub
 = 1;

1655 i(
tx
 =
NULL
) {

1656 
txn_num
 = 0;

1657 
lp
 = &
nu_l
;

1658 
nu_l
.
fe
 =u_l.
offt
 = 0;

1660 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1661 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1662  (
t
);

1669 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1670 
txn_num
 = 
tx
->
txnid
;

1673 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1674 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1675 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1676  (
t
);

1678 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1679 + (
u_t32_t
)

1680 + (
u_t32_t
)

1681 + (
u_t32_t
)

1682 + (*
ma_l
);

1683 i(
	`CRYPTO_ON
(
dbv
)) {

1684 
ad
 =

1685 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1686 
logc
.
size
 +
ad
;

1689 i(
is_dub
 || 
tx
 =
NULL
) {

1690 i((
t
 =

1691 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1692  (
t
);

1694 i((
t
 = 
	`__os_mloc
(
dbv
,

1695 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1696  (
t
);

1697 #ifde
DIAGNOSTIC


1698 i((
t
 =

1699 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1700 
	`__os_
(
dbv
, 

);

1701  (
t
);

1704 
logc
.
da
 = 

->data;

1707 i(
ad
 > 0)

1708 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1710 
bp
 = 
logc
.
da
;

1712 
	`memy
(
bp
, &
y
, (rectype));

1713 
bp
 +(
y
);

1715 
	`memy
(
bp
, &
txn_num
, (txn_num));

1716 
bp
 +(
txn_num
);

1718 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1719 
bp
 +(
DB_LSN
);

1721 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1722 
	`memy
(
bp
, &
ump
, (uinttmp));

1723 
bp
 +(
ump
);

1725 
ump
 = (
u_t32_t
)
ma_pgno
;

1726 
	`memy
(
bp
, &
ump
, (uinttmp));

1727 
bp
 +(
ump
);

1729 
ump
 = (
u_t32_t
)
ro_pgno
;

1730 
	`memy
(
bp
, &
ump
, (uinttmp));

1731 
bp
 +(
ump
);

1733 i(
ma_l
 !
NULL
) {

1734 i(
tx
 !
NULL
) {

1735 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1736 i(
	`LOG_COMPARE
(
ma_l
, &

->
l
>0 && (
t
 =

1737 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ma_l
) != 0))

1738  (
t
);

1740 
	`memy
(
bp
, 
ma_l
, (*meta_lsn));

1742 
	`memt
(
bp
, 0, (*
ma_l
));

1743 
bp
 +(*
ma_l
);

1745 
	`DB_ASSERT
(
dbv
,

1746 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1748 i(
is_dub
 || 
tx
 =
NULL
) {

1749 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1750 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1751 *
lp
 = *
p
;

1752 i(
p
 !
t_lp
)

1753 *
t_lp
 = *
p
;

1756 
t
 = 0;

1757 #ifde
DIAGNOSTIC


1762 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1763 
y
 |
DB_debug_FLAG
;

1764 
	`memy
(
logc
.
da
, &
y
, (rectype));

1766 i(!
	`IS_REP_CLIENT
(
dbv
))

1767 
t
 = 
	`__log_put
(
dbv
,

1768 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1770 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1771 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1772 
	`LSN_NOT_LOGGED
(*
t_lp
);

1775 #ifde
LOG_DIAGNOSTIC


1776 i(
t
 != 0)

1777 ()
	`__bam_ro_t
(
dbv
,

1778 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1781 #ifde
DIAGNOSTIC


1782 
	`__os_
(
dbv
, 
logc
.
da
);

1784 i(
is_dub
 || 
tx
 =
NULL
)

1785 
	`__os_
(
dbv
, 
logc
.
da
);

1787  (
t
);

1788 
	}
}

1794 
	$__bam_ro_ad
(
dbv
, 
cbuf
, 
g
)

1795 
DB_ENV
 *
dbv
;

1796 *
cbuf
;

1797 
__bam_ro_gs
 **
g
;

1799 
__bam_ro_gs
 *
gp
;

1800 
u_t32_t
 
ump
;

1801 
u_t8_t
 *
bp
;

1802 
t
;

1804 i((
t
 = 
	`__os_mloc
(
dbv
,

1805 (
__bam_ro_gs
+ (
DB_TXN
), &
gp
)) != 0)

1806  (
t
);

1807 
bp
 = 
cbuf
;

1808 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1809 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1811 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1812 
bp
 +(
gp
->
ty
);

1814 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1815 
bp
 +(
gp
->
tx
->
txnid
);

1817 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1818 
bp
 +(
DB_LSN
);

1820 
	`memy
(&
ump
, 
bp
, (uinttmp));

1821 
gp
->
feid
 = (
t32_t
)
ump
;

1822 
bp
 +(
ump
);

1824 
	`memy
(&
ump
, 
bp
, (uinttmp));

1825 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

1826 
bp
 +(
ump
);

1828 
	`memy
(&
ump
, 
bp
, (uinttmp));

1829 
gp
->
ro_pgno
 = (
db_pgno_t
)
ump
;

1830 
bp
 +(
ump
);

1832 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

1833 
bp
 +(
gp
->
ma_l
);

1835 *
g
 = 
gp
;

1837 
	}
}

1845 
	$__bam_cudj_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
mode
, 
om_pgno
, 
to_pgno
, 
_pgno
, 
f_dx
,

1846 
om_dx
, 
to_dx
)

1847 
DB
 *
dbp
;

1848 
DB_TXN
 *
tx
;

1849 
DB_LSN
 *
t_lp
;

1850 
u_t32_t
 
ags
;

1851 
db__mode
 
mode
;

1852 
db_pgno_t
 
om_pgno
;

1853 
db_pgno_t
 
to_pgno
;

1854 
db_pgno_t
 
_pgno
;

1855 
u_t32_t
 
f_dx
;

1856 
u_t32_t
 
om_dx
;

1857 
u_t32_t
 
to_dx
;

1859 
DBT
 
logc
;

1860 
DB_ENV
 *
dbv
;

1861 
DB_TXNLOGREC
 *

;

1862 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1863 
u_t32_t
 
ump
, 
y
, 
txn_num
;

1864 
u_t
 
ad
;

1865 
u_t8_t
 *
bp
;

1866 
is_dub
, 
t
;

1868 
dbv
 = 
dbp
->dbenv;

1869 
	`COMPQUIET
(

, 
NULL
);

1871 
y
 = 
DB___bam_cudj
;

1872 
ad
 = 0;

1873 
p
 = 
t_lp
;

1875 
t
 = 0;

1877 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1878 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1879 i(
tx
 =
NULL
)

1881 
is_dub
 = 0;

1883 
is_dub
 = 1;

1885 i(
tx
 =
NULL
) {

1886 
txn_num
 = 0;

1887 
lp
 = &
nu_l
;

1888 
nu_l
.
fe
 =u_l.
offt
 = 0;

1890 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1891 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1892  (
t
);

1899 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1900 
txn_num
 = 
tx
->
txnid
;

1903 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1904 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1905 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1906  (
t
);

1908 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1909 + (
u_t32_t
)

1910 + (
u_t32_t
)

1911 + (
u_t32_t
)

1912 + (
u_t32_t
)

1913 + (
u_t32_t
)

1914 + (
u_t32_t
)

1915 + (
u_t32_t
)

1916 + (
u_t32_t
);

1917 i(
	`CRYPTO_ON
(
dbv
)) {

1918 
ad
 =

1919 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1920 
logc
.
size
 +
ad
;

1923 i(
is_dub
 || 
tx
 =
NULL
) {

1924 i((
t
 =

1925 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1926  (
t
);

1928 i((
t
 = 
	`__os_mloc
(
dbv
,

1929 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1930  (
t
);

1931 #ifde
DIAGNOSTIC


1932 i((
t
 =

1933 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1934 
	`__os_
(
dbv
, 

);

1935  (
t
);

1938 
logc
.
da
 = 

->data;

1941 i(
ad
 > 0)

1942 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1944 
bp
 = 
logc
.
da
;

1946 
	`memy
(
bp
, &
y
, (rectype));

1947 
bp
 +(
y
);

1949 
	`memy
(
bp
, &
txn_num
, (txn_num));

1950 
bp
 +(
txn_num
);

1952 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1953 
bp
 +(
DB_LSN
);

1955 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1956 
	`memy
(
bp
, &
ump
, (uinttmp));

1957 
bp
 +(
ump
);

1959 
ump
 = (
u_t32_t
)
mode
;

1960 
	`memy
(
bp
, &
ump
, (uinttmp));

1961 
bp
 +(
ump
);

1963 
ump
 = (
u_t32_t
)
om_pgno
;

1964 
	`memy
(
bp
, &
ump
, (uinttmp));

1965 
bp
 +(
ump
);

1967 
ump
 = (
u_t32_t
)
to_pgno
;

1968 
	`memy
(
bp
, &
ump
, (uinttmp));

1969 
bp
 +(
ump
);

1971 
ump
 = (
u_t32_t
)
_pgno
;

1972 
	`memy
(
bp
, &
ump
, (uinttmp));

1973 
bp
 +(
ump
);

1975 
ump
 = (
u_t32_t
)
f_dx
;

1976 
	`memy
(
bp
, &
ump
, (uinttmp));

1977 
bp
 +(
ump
);

1979 
ump
 = (
u_t32_t
)
om_dx
;

1980 
	`memy
(
bp
, &
ump
, (uinttmp));

1981 
bp
 +(
ump
);

1983 
ump
 = (
u_t32_t
)
to_dx
;

1984 
	`memy
(
bp
, &
ump
, (uinttmp));

1985 
bp
 +(
ump
);

1987 
	`DB_ASSERT
(
dbv
,

1988 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1990 i(
is_dub
 || 
tx
 =
NULL
) {

1991 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1992 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1993 *
lp
 = *
p
;

1994 i(
p
 !
t_lp
)

1995 *
t_lp
 = *
p
;

1998 
t
 = 0;

1999 #ifde
DIAGNOSTIC


2004 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2005 
y
 |
DB_debug_FLAG
;

2006 
	`memy
(
logc
.
da
, &
y
, (rectype));

2008 i(!
	`IS_REP_CLIENT
(
dbv
))

2009 
t
 = 
	`__log_put
(
dbv
,

2010 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2012 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2013 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2014 
	`LSN_NOT_LOGGED
(*
t_lp
);

2017 #ifde
LOG_DIAGNOSTIC


2018 i(
t
 != 0)

2019 ()
	`__bam_cudj_t
(
dbv
,

2020 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2023 #ifde
DIAGNOSTIC


2024 
	`__os_
(
dbv
, 
logc
.
da
);

2026 i(
is_dub
 || 
tx
 =
NULL
)

2027 
	`__os_
(
dbv
, 
logc
.
da
);

2029  (
t
);

2030 
	}
}

2036 
	$__bam_cudj_ad
(
dbv
, 
cbuf
, 
g
)

2037 
DB_ENV
 *
dbv
;

2038 *
cbuf
;

2039 
__bam_cudj_gs
 **
g
;

2041 
__bam_cudj_gs
 *
gp
;

2042 
u_t32_t
 
ump
;

2043 
u_t8_t
 *
bp
;

2044 
t
;

2046 i((
t
 = 
	`__os_mloc
(
dbv
,

2047 (
__bam_cudj_gs
+ (
DB_TXN
), &
gp
)) != 0)

2048  (
t
);

2049 
bp
 = 
cbuf
;

2050 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2051 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2053 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2054 
bp
 +(
gp
->
ty
);

2056 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2057 
bp
 +(
gp
->
tx
->
txnid
);

2059 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2060 
bp
 +(
DB_LSN
);

2062 
	`memy
(&
ump
, 
bp
, (uinttmp));

2063 
gp
->
feid
 = (
t32_t
)
ump
;

2064 
bp
 +(
ump
);

2066 
	`memy
(&
ump
, 
bp
, (uinttmp));

2067 
gp
->
mode
 = (
db__mode
)
ump
;

2068 
bp
 +(
ump
);

2070 
	`memy
(&
ump
, 
bp
, (uinttmp));

2071 
gp
->
om_pgno
 = (
db_pgno_t
)
ump
;

2072 
bp
 +(
ump
);

2074 
	`memy
(&
ump
, 
bp
, (uinttmp));

2075 
gp
->
to_pgno
 = (
db_pgno_t
)
ump
;

2076 
bp
 +(
ump
);

2078 
	`memy
(&
ump
, 
bp
, (uinttmp));

2079 
gp
->
_pgno
 = (
db_pgno_t
)
ump
;

2080 
bp
 +(
ump
);

2082 
	`memy
(&
ump
, 
bp
, (uinttmp));

2083 
gp
->
f_dx
 = (
u_t32_t
)
ump
;

2084 
bp
 +(
ump
);

2086 
	`memy
(&
ump
, 
bp
, (uinttmp));

2087 
gp
->
om_dx
 = (
u_t32_t
)
ump
;

2088 
bp
 +(
ump
);

2090 
	`memy
(&
ump
, 
bp
, (uinttmp));

2091 
gp
->
to_dx
 = (
u_t32_t
)
ump
;

2092 
bp
 +(
ump
);

2094 *
g
 = 
gp
;

2096 
	}
}

2103 
	$__bam_rcudj_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
mode
, 
ro
, 
o
, 
d
)

2104 
DB
 *
dbp
;

2105 
DB_TXN
 *
tx
;

2106 
DB_LSN
 *
t_lp
;

2107 
u_t32_t
 
ags
;

2108 
_o_g
 
mode
;

2109 
db_pgno_t
 
ro
;

2110 
db_o_t
 
o
;

2111 
u_t32_t
 
d
;

2113 
DBT
 
logc
;

2114 
DB_ENV
 *
dbv
;

2115 
DB_TXNLOGREC
 *

;

2116 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2117 
u_t32_t
 
ump
, 
y
, 
txn_num
;

2118 
u_t
 
ad
;

2119 
u_t8_t
 *
bp
;

2120 
is_dub
, 
t
;

2122 
dbv
 = 
dbp
->dbenv;

2123 
	`COMPQUIET
(

, 
NULL
);

2125 
y
 = 
DB___bam_rcudj
;

2126 
ad
 = 0;

2127 
p
 = 
t_lp
;

2129 
t
 = 0;

2131 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

2132 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

2133 i(
tx
 =
NULL
)

2135 
is_dub
 = 0;

2137 
is_dub
 = 1;

2139 i(
tx
 =
NULL
) {

2140 
txn_num
 = 0;

2141 
lp
 = &
nu_l
;

2142 
nu_l
.
fe
 =u_l.
offt
 = 0;

2144 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2145 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2146  (
t
);

2153 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

2154 
txn_num
 = 
tx
->
txnid
;

2157 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

2158 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

2159 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

2160  (
t
);

2162 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

2163 + (
u_t32_t
)

2164 + (
u_t32_t
)

2165 + (
u_t32_t
)

2166 + (
u_t32_t
)

2167 + (
u_t32_t
);

2168 i(
	`CRYPTO_ON
(
dbv
)) {

2169 
ad
 =

2170 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

2171 
logc
.
size
 +
ad
;

2174 i(
is_dub
 || 
tx
 =
NULL
) {

2175 i((
t
 =

2176 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

2177  (
t
);

2179 i((
t
 = 
	`__os_mloc
(
dbv
,

2180 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

2181  (
t
);

2182 #ifde
DIAGNOSTIC


2183 i((
t
 =

2184 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

2185 
	`__os_
(
dbv
, 

);

2186  (
t
);

2189 
logc
.
da
 = 

->data;

2192 i(
ad
 > 0)

2193 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

2195 
bp
 = 
logc
.
da
;

2197 
	`memy
(
bp
, &
y
, (rectype));

2198 
bp
 +(
y
);

2200 
	`memy
(
bp
, &
txn_num
, (txn_num));

2201 
bp
 +(
txn_num
);

2203 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

2204 
bp
 +(
DB_LSN
);

2206 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

2207 
	`memy
(
bp
, &
ump
, (uinttmp));

2208 
bp
 +(
ump
);

2210 
ump
 = (
u_t32_t
)
mode
;

2211 
	`memy
(
bp
, &
ump
, (uinttmp));

2212 
bp
 +(
ump
);

2214 
ump
 = (
u_t32_t
)
ro
;

2215 
	`memy
(
bp
, &
ump
, (uinttmp));

2216 
bp
 +(
ump
);

2218 
ump
 = (
u_t32_t
)
o
;

2219 
	`memy
(
bp
, &
ump
, (uinttmp));

2220 
bp
 +(
ump
);

2222 
ump
 = (
u_t32_t
)
d
;

2223 
	`memy
(
bp
, &
ump
, (uinttmp));

2224 
bp
 +(
ump
);

2226 
	`DB_ASSERT
(
dbv
,

2227 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

2229 i(
is_dub
 || 
tx
 =
NULL
) {

2230 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

2231 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

2232 *
lp
 = *
p
;

2233 i(
p
 !
t_lp
)

2234 *
t_lp
 = *
p
;

2237 
t
 = 0;

2238 #ifde
DIAGNOSTIC


2243 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2244 
y
 |
DB_debug_FLAG
;

2245 
	`memy
(
logc
.
da
, &
y
, (rectype));

2247 i(!
	`IS_REP_CLIENT
(
dbv
))

2248 
t
 = 
	`__log_put
(
dbv
,

2249 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2251 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2252 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2253 
	`LSN_NOT_LOGGED
(*
t_lp
);

2256 #ifde
LOG_DIAGNOSTIC


2257 i(
t
 != 0)

2258 ()
	`__bam_rcudj_t
(
dbv
,

2259 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2262 #ifde
DIAGNOSTIC


2263 
	`__os_
(
dbv
, 
logc
.
da
);

2265 i(
is_dub
 || 
tx
 =
NULL
)

2266 
	`__os_
(
dbv
, 
logc
.
da
);

2268  (
t
);

2269 
	}
}

2276 
	$__bam_rcudj_ad
(
dbv
, 
cbuf
, 
g
)

2277 
DB_ENV
 *
dbv
;

2278 *
cbuf
;

2279 
__bam_rcudj_gs
 **
g
;

2281 
__bam_rcudj_gs
 *
gp
;

2282 
u_t32_t
 
ump
;

2283 
u_t8_t
 *
bp
;

2284 
t
;

2286 i((
t
 = 
	`__os_mloc
(
dbv
,

2287 (
__bam_rcudj_gs
+ (
DB_TXN
), &
gp
)) != 0)

2288  (
t
);

2289 
bp
 = 
cbuf
;

2290 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2291 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2293 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2294 
bp
 +(
gp
->
ty
);

2296 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2297 
bp
 +(
gp
->
tx
->
txnid
);

2299 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2300 
bp
 +(
DB_LSN
);

2302 
	`memy
(&
ump
, 
bp
, (uinttmp));

2303 
gp
->
feid
 = (
t32_t
)
ump
;

2304 
bp
 +(
ump
);

2306 
	`memy
(&
ump
, 
bp
, (uinttmp));

2307 
gp
->
mode
 = (
_o_g
)
ump
;

2308 
bp
 +(
ump
);

2310 
	`memy
(&
ump
, 
bp
, (uinttmp));

2311 
gp
->
ro
 = (
db_pgno_t
)
ump
;

2312 
bp
 +(
ump
);

2314 
	`memy
(&
ump
, 
bp
, (uinttmp));

2315 
gp
->
o
 = (
db_o_t
)
ump
;

2316 
bp
 +(
ump
);

2318 
	`memy
(&
ump
, 
bp
, (uinttmp));

2319 
gp
->
d
 = (
u_t32_t
)
ump
;

2320 
bp
 +(
ump
);

2322 *
g
 = 
gp
;

2324 
	}
}

2331 
	$__bam_lk_43_ad
(
dbv
, 
cbuf
, 
g
)

2332 
DB_ENV
 *
dbv
;

2333 *
cbuf
;

2334 
__bam_lk_43_gs
 **
g
;

2336 
__bam_lk_43_gs
 *
gp
;

2337 
u_t32_t
 
ump
;

2338 
u_t8_t
 *
bp
;

2339 
t
;

2341 i((
t
 = 
	`__os_mloc
(
dbv
,

2342 (
__bam_lk_43_gs
+ (
DB_TXN
), &
gp
)) != 0)

2343  (
t
);

2344 
bp
 = 
cbuf
;

2345 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2346 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2348 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2349 
bp
 +(
gp
->
ty
);

2351 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2352 
bp
 +(
gp
->
tx
->
txnid
);

2354 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2355 
bp
 +(
DB_LSN
);

2357 
	`memy
(&
ump
, 
bp
, (uinttmp));

2358 
gp
->
feid
 = (
t32_t
)
ump
;

2359 
bp
 +(
ump
);

2361 
	`memy
(&
ump
, 
bp
, (uinttmp));

2362 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

2363 
bp
 +(
ump
);

2365 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

2366 
bp
 +(
gp
->
l
);

2368 
	`memy
(&
ump
, 
bp
, (uinttmp));

2369 
gp
->
ev
 = (
db_pgno_t
)
ump
;

2370 
bp
 +(
ump
);

2372 
	`memy
(&
gp
->
l_ev
, 
bp
, (argp->lsn_prev));

2373 
bp
 +(
gp
->
l_ev
);

2375 
	`memy
(&
ump
, 
bp
, (uinttmp));

2376 
gp
->
xt
 = (
db_pgno_t
)
ump
;

2377 
bp
 +(
ump
);

2379 
	`memy
(&
gp
->
l_xt
, 
bp
, (argp->lsn_next));

2380 
bp
 +(
gp
->
l_xt
);

2382 *
g
 = 
gp
;

2384 
	}
}

2392 
	$__bam_lk_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
w_pgno
, 
ev
, 
l_ev
, 
xt
,

2393 
l_xt
)

2394 
DB
 *
dbp
;

2395 
DB_TXN
 *
tx
;

2396 
DB_LSN
 *
t_lp
;

2397 
u_t32_t
 
ags
;

2398 
db_pgno_t
 
pgno
;

2399 
db_pgno_t
 
w_pgno
;

2400 
db_pgno_t
 
ev
;

2401 
DB_LSN
 * 
l_ev
;

2402 
db_pgno_t
 
xt
;

2403 
DB_LSN
 * 
l_xt
;

2405 
DBT
 
logc
;

2406 
DB_ENV
 *
dbv
;

2407 
DB_TXNLOGREC
 *

;

2408 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2409 
u_t32_t
 
ump
, 
y
, 
txn_num
;

2410 
u_t
 
ad
;

2411 
u_t8_t
 *
bp
;

2412 
is_dub
, 
t
;

2414 
dbv
 = 
dbp
->dbenv;

2415 
	`COMPQUIET
(

, 
NULL
);

2417 
y
 = 
DB___bam_lk
;

2418 
ad
 = 0;

2419 
p
 = 
t_lp
;

2421 
t
 = 0;

2423 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

2424 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

2425 i(
tx
 =
NULL
)

2427 
is_dub
 = 0;

2429 
is_dub
 = 1;

2431 i(
tx
 =
NULL
) {

2432 
txn_num
 = 0;

2433 
lp
 = &
nu_l
;

2434 
nu_l
.
fe
 =u_l.
offt
 = 0;

2436 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2437 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2438  (
t
);

2445 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

2446 
txn_num
 = 
tx
->
txnid
;

2449 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

2450 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

2451 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

2452  (
t
);

2454 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

2455 + (
u_t32_t
)

2456 + (
u_t32_t
)

2457 + (
u_t32_t
)

2458 + (
u_t32_t
)

2459 + (*
l_ev
)

2460 + (
u_t32_t
)

2461 + (*
l_xt
);

2462 i(
	`CRYPTO_ON
(
dbv
)) {

2463 
ad
 =

2464 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

2465 
logc
.
size
 +
ad
;

2468 i(
is_dub
 || 
tx
 =
NULL
) {

2469 i((
t
 =

2470 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

2471  (
t
);

2473 i((
t
 = 
	`__os_mloc
(
dbv
,

2474 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

2475  (
t
);

2476 #ifde
DIAGNOSTIC


2477 i((
t
 =

2478 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

2479 
	`__os_
(
dbv
, 

);

2480  (
t
);

2483 
logc
.
da
 = 

->data;

2486 i(
ad
 > 0)

2487 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

2489 
bp
 = 
logc
.
da
;

2491 
	`memy
(
bp
, &
y
, (rectype));

2492 
bp
 +(
y
);

2494 
	`memy
(
bp
, &
txn_num
, (txn_num));

2495 
bp
 +(
txn_num
);

2497 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

2498 
bp
 +(
DB_LSN
);

2500 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

2501 
	`memy
(
bp
, &
ump
, (uinttmp));

2502 
bp
 +(
ump
);

2504 
ump
 = (
u_t32_t
)
pgno
;

2505 
	`memy
(
bp
, &
ump
, (uinttmp));

2506 
bp
 +(
ump
);

2508 
ump
 = (
u_t32_t
)
w_pgno
;

2509 
	`memy
(
bp
, &
ump
, (uinttmp));

2510 
bp
 +(
ump
);

2512 
ump
 = (
u_t32_t
)
ev
;

2513 
	`memy
(
bp
, &
ump
, (uinttmp));

2514 
bp
 +(
ump
);

2516 i(
l_ev
 !
NULL
) {

2517 i(
tx
 !
NULL
) {

2518 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

2519 i(
	`LOG_COMPARE
(
l_ev
, &

->
l
>0 && (
t
 =

2520 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l_ev
) != 0))

2521  (
t
);

2523 
	`memy
(
bp
, 
l_ev
, (*lsn_prev));

2525 
	`memt
(
bp
, 0, (*
l_ev
));

2526 
bp
 +(*
l_ev
);

2528 
ump
 = (
u_t32_t
)
xt
;

2529 
	`memy
(
bp
, &
ump
, (uinttmp));

2530 
bp
 +(
ump
);

2532 i(
l_xt
 !
NULL
) {

2533 i(
tx
 !
NULL
) {

2534 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

2535 i(
	`LOG_COMPARE
(
l_xt
, &

->
l
>0 && (
t
 =

2536 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l_xt
) != 0))

2537  (
t
);

2539 
	`memy
(
bp
, 
l_xt
, (*lsn_next));

2541 
	`memt
(
bp
, 0, (*
l_xt
));

2542 
bp
 +(*
l_xt
);

2544 
	`DB_ASSERT
(
dbv
,

2545 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

2547 i(
is_dub
 || 
tx
 =
NULL
) {

2548 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

2549 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

2550 *
lp
 = *
p
;

2551 i(
p
 !
t_lp
)

2552 *
t_lp
 = *
p
;

2555 
t
 = 0;

2556 #ifde
DIAGNOSTIC


2561 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2562 
y
 |
DB_debug_FLAG
;

2563 
	`memy
(
logc
.
da
, &
y
, (rectype));

2565 i(!
	`IS_REP_CLIENT
(
dbv
))

2566 
t
 = 
	`__log_put
(
dbv
,

2567 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2569 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2570 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2571 
	`LSN_NOT_LOGGED
(*
t_lp
);

2574 #ifde
LOG_DIAGNOSTIC


2575 i(
t
 != 0)

2576 ()
	`__bam_lk_t
(
dbv
,

2577 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2580 #ifde
DIAGNOSTIC


2581 
	`__os_
(
dbv
, 
logc
.
da
);

2583 i(
is_dub
 || 
tx
 =
NULL
)

2584 
	`__os_
(
dbv
, 
logc
.
da
);

2586  (
t
);

2587 
	}
}

2593 
	$__bam_lk_ad
(
dbv
, 
cbuf
, 
g
)

2594 
DB_ENV
 *
dbv
;

2595 *
cbuf
;

2596 
__bam_lk_gs
 **
g
;

2598 
__bam_lk_gs
 *
gp
;

2599 
u_t32_t
 
ump
;

2600 
u_t8_t
 *
bp
;

2601 
t
;

2603 i((
t
 = 
	`__os_mloc
(
dbv
,

2604 (
__bam_lk_gs
+ (
DB_TXN
), &
gp
)) != 0)

2605  (
t
);

2606 
bp
 = 
cbuf
;

2607 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2608 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2610 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2611 
bp
 +(
gp
->
ty
);

2613 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2614 
bp
 +(
gp
->
tx
->
txnid
);

2616 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2617 
bp
 +(
DB_LSN
);

2619 
	`memy
(&
ump
, 
bp
, (uinttmp));

2620 
gp
->
feid
 = (
t32_t
)
ump
;

2621 
bp
 +(
ump
);

2623 
	`memy
(&
ump
, 
bp
, (uinttmp));

2624 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

2625 
bp
 +(
ump
);

2627 
	`memy
(&
ump
, 
bp
, (uinttmp));

2628 
gp
->
w_pgno
 = (
db_pgno_t
)
ump
;

2629 
bp
 +(
ump
);

2631 
	`memy
(&
ump
, 
bp
, (uinttmp));

2632 
gp
->
ev
 = (
db_pgno_t
)
ump
;

2633 
bp
 +(
ump
);

2635 
	`memy
(&
gp
->
l_ev
, 
bp
, (argp->lsn_prev));

2636 
bp
 +(
gp
->
l_ev
);

2638 
	`memy
(&
ump
, 
bp
, (uinttmp));

2639 
gp
->
xt
 = (
db_pgno_t
)
ump
;

2640 
bp
 +(
ump
);

2642 
	`memy
(&
gp
->
l_xt
, 
bp
, (argp->lsn_next));

2643 
bp
 +(
gp
->
l_xt
);

2645 *
g
 = 
gp
;

2647 
	}
}

2655 
	$__bam_mge_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
l
, 
gno
, 
Ƣ
, 
hdr
,

2656 
da
, 
d
)

2657 
DB
 *
dbp
;

2658 
DB_TXN
 *
tx
;

2659 
DB_LSN
 *
t_lp
;

2660 
u_t32_t
 
ags
;

2661 
db_pgno_t
 
pgno
;

2662 
DB_LSN
 * 
l
;

2663 
db_pgno_t
 
gno
;

2664 
DB_LSN
 * 
Ƣ
;

2665 cڡ 
DBT
 *
hdr
;

2666 cڡ 
DBT
 *
da
;

2667 cڡ 
DBT
 *
d
;

2669 
DBT
 
logc
;

2670 
DB_ENV
 *
dbv
;

2671 
DB_TXNLOGREC
 *

;

2672 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2673 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

2674 
u_t
 
ad
;

2675 
u_t8_t
 *
bp
;

2676 
is_dub
, 
t
;

2678 
dbv
 = 
dbp
->dbenv;

2679 
	`COMPQUIET
(

, 
NULL
);

2681 
y
 = 
DB___bam_mge
;

2682 
ad
 = 0;

2683 
p
 = 
t_lp
;

2685 
t
 = 0;

2687 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

2688 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

2689 i(
tx
 =
NULL
)

2691 
is_dub
 = 0;

2693 
is_dub
 = 1;

2695 i(
tx
 =
NULL
) {

2696 
txn_num
 = 0;

2697 
lp
 = &
nu_l
;

2698 
nu_l
.
fe
 =u_l.
offt
 = 0;

2700 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2701 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2702  (
t
);

2709 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

2710 
txn_num
 = 
tx
->
txnid
;

2713 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

2714 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

2715 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

2716  (
t
);

2718 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

2719 + (
u_t32_t
)

2720 + (
u_t32_t
)

2721 + (*
l
)

2722 + (
u_t32_t
)

2723 + (*
Ƣ
)

2724 + (
u_t32_t
+ (
hdr
 =
NULL
 ? 0 : hdr->
size
)

2725 + (
u_t32_t
+ (
da
 =
NULL
 ? 0 : da->
size
)

2726 + (
u_t32_t
+ (
d
 =
NULL
 ? 0 : ind->
size
);

2727 i(
	`CRYPTO_ON
(
dbv
)) {

2728 
ad
 =

2729 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

2730 
logc
.
size
 +
ad
;

2733 i(
is_dub
 || 
tx
 =
NULL
) {

2734 i((
t
 =

2735 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

2736  (
t
);

2738 i((
t
 = 
	`__os_mloc
(
dbv
,

2739 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

2740  (
t
);

2741 #ifde
DIAGNOSTIC


2742 i((
t
 =

2743 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

2744 
	`__os_
(
dbv
, 

);

2745  (
t
);

2748 
logc
.
da
 = 

->data;

2751 i(
ad
 > 0)

2752 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

2754 
bp
 = 
logc
.
da
;

2756 
	`memy
(
bp
, &
y
, (rectype));

2757 
bp
 +(
y
);

2759 
	`memy
(
bp
, &
txn_num
, (txn_num));

2760 
bp
 +(
txn_num
);

2762 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

2763 
bp
 +(
DB_LSN
);

2765 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

2766 
	`memy
(
bp
, &
ump
, (uinttmp));

2767 
bp
 +(
ump
);

2769 
ump
 = (
u_t32_t
)
pgno
;

2770 
	`memy
(
bp
, &
ump
, (uinttmp));

2771 
bp
 +(
ump
);

2773 i(
l
 !
NULL
) {

2774 i(
tx
 !
NULL
) {

2775 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

2776 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

2777 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

2778  (
t
);

2780 
	`memy
(
bp
, 
l
, (*lsn));

2782 
	`memt
(
bp
, 0, (*
l
));

2783 
bp
 +(*
l
);

2785 
ump
 = (
u_t32_t
)
gno
;

2786 
	`memy
(
bp
, &
ump
, (uinttmp));

2787 
bp
 +(
ump
);

2789 i(
Ƣ
 !
NULL
) {

2790 i(
tx
 !
NULL
) {

2791 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

2792 i(
	`LOG_COMPARE
(
Ƣ
, &

->
l
>0 && (
t
 =

2793 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
Ƣ
) != 0))

2794  (
t
);

2796 
	`memy
(
bp
, 
Ƣ
, (*nlsn));

2798 
	`memt
(
bp
, 0, (*
Ƣ
));

2799 
bp
 +(*
Ƣ
);

2801 i(
hdr
 =
NULL
) {

2802 
zo
 = 0;

2803 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

2804 
bp
 +(
u_t32_t
);

2806 
	`memy
(
bp
, &
hdr
->
size
, (hdr->size));

2807 
bp
 +(
hdr
->
size
);

2808 
	`memy
(
bp
, 
hdr
->
da
, hdr->
size
);

2809 
bp
 +
hdr
->
size
;

2812 i(
da
 =
NULL
) {

2813 
zo
 = 0;

2814 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

2815 
bp
 +(
u_t32_t
);

2817 
	`memy
(
bp
, &
da
->
size
, (data->size));

2818 
bp
 +(
da
->
size
);

2819 
	`memy
(
bp
, 
da
->da, da->
size
);

2820 
bp
 +
da
->
size
;

2823 i(
d
 =
NULL
) {

2824 
zo
 = 0;

2825 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

2826 
bp
 +(
u_t32_t
);

2828 
	`memy
(
bp
, &
d
->
size
, (ind->size));

2829 
bp
 +(
d
->
size
);

2830 
	`memy
(
bp
, 
d
->
da
, ind->
size
);

2831 
bp
 +
d
->
size
;

2834 
	`DB_ASSERT
(
dbv
,

2835 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

2837 i(
is_dub
 || 
tx
 =
NULL
) {

2838 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

2839 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

2840 *
lp
 = *
p
;

2841 i(
p
 !
t_lp
)

2842 *
t_lp
 = *
p
;

2845 
t
 = 0;

2846 #ifde
DIAGNOSTIC


2851 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2852 
y
 |
DB_debug_FLAG
;

2853 
	`memy
(
logc
.
da
, &
y
, (rectype));

2855 i(!
	`IS_REP_CLIENT
(
dbv
))

2856 
t
 = 
	`__log_put
(
dbv
,

2857 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2859 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2860 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2861 
	`LSN_NOT_LOGGED
(*
t_lp
);

2864 #ifde
LOG_DIAGNOSTIC


2865 i(
t
 != 0)

2866 ()
	`__bam_mge_t
(
dbv
,

2867 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2870 #ifde
DIAGNOSTIC


2871 
	`__os_
(
dbv
, 
logc
.
da
);

2873 i(
is_dub
 || 
tx
 =
NULL
)

2874 
	`__os_
(
dbv
, 
logc
.
da
);

2876  (
t
);

2877 
	}
}

2883 
	$__bam_mge_ad
(
dbv
, 
cbuf
, 
g
)

2884 
DB_ENV
 *
dbv
;

2885 *
cbuf
;

2886 
__bam_mge_gs
 **
g
;

2888 
__bam_mge_gs
 *
gp
;

2889 
u_t32_t
 
ump
;

2890 
u_t8_t
 *
bp
;

2891 
t
;

2893 i((
t
 = 
	`__os_mloc
(
dbv
,

2894 (
__bam_mge_gs
+ (
DB_TXN
), &
gp
)) != 0)

2895  (
t
);

2896 
bp
 = 
cbuf
;

2897 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2898 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2900 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2901 
bp
 +(
gp
->
ty
);

2903 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2904 
bp
 +(
gp
->
tx
->
txnid
);

2906 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2907 
bp
 +(
DB_LSN
);

2909 
	`memy
(&
ump
, 
bp
, (uinttmp));

2910 
gp
->
feid
 = (
t32_t
)
ump
;

2911 
bp
 +(
ump
);

2913 
	`memy
(&
ump
, 
bp
, (uinttmp));

2914 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

2915 
bp
 +(
ump
);

2917 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

2918 
bp
 +(
gp
->
l
);

2920 
	`memy
(&
ump
, 
bp
, (uinttmp));

2921 
gp
->
gno
 = (
db_pgno_t
)
ump
;

2922 
bp
 +(
ump
);

2924 
	`memy
(&
gp
->
Ƣ
, 
bp
, (argp->nlsn));

2925 
bp
 +(
gp
->
Ƣ
);

2927 
	`memt
(&
gp
->
hdr
, 0, (argp->hdr));

2928 
	`memy
(&
gp
->
hdr
.
size
, 
bp
, (
u_t32_t
));

2929 
bp
 +(
u_t32_t
);

2930 
gp
->
hdr
.
da
 = 
bp
;

2931 
bp
 +
gp
->
hdr
.
size
;

2933 
	`memt
(&
gp
->
da
, 0, (argp->data));

2934 
	`memy
(&
gp
->
da
.
size
, 
bp
, (
u_t32_t
));

2935 
bp
 +(
u_t32_t
);

2936 
gp
->
da
.d
bp
;

2937 
bp
 +
gp
->
da
.
size
;

2939 
	`memt
(&
gp
->
d
, 0, (argp->ind));

2940 
	`memy
(&
gp
->
d
.
size
, 
bp
, (
u_t32_t
));

2941 
bp
 +(
u_t32_t
);

2942 
gp
->
d
.
da
 = 
bp
;

2943 
bp
 +
gp
->
d
.
size
;

2945 *
g
 = 
gp
;

2947 
	}
}

2955 
	$__bam_pgno_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
l
, 
dx
, 
gno
, 
gno
)

2956 
DB
 *
dbp
;

2957 
DB_TXN
 *
tx
;

2958 
DB_LSN
 *
t_lp
;

2959 
u_t32_t
 
ags
;

2960 
db_pgno_t
 
pgno
;

2961 
DB_LSN
 * 
l
;

2962 
u_t32_t
 
dx
;

2963 
db_pgno_t
 
gno
;

2964 
db_pgno_t
 
gno
;

2966 
DBT
 
logc
;

2967 
DB_ENV
 *
dbv
;

2968 
DB_TXNLOGREC
 *

;

2969 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2970 
u_t32_t
 
ump
, 
y
, 
txn_num
;

2971 
u_t
 
ad
;

2972 
u_t8_t
 *
bp
;

2973 
is_dub
, 
t
;

2975 
dbv
 = 
dbp
->dbenv;

2976 
	`COMPQUIET
(

, 
NULL
);

2978 
y
 = 
DB___bam_pgno
;

2979 
ad
 = 0;

2980 
p
 = 
t_lp
;

2982 
t
 = 0;

2984 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

2985 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

2986 i(
tx
 =
NULL
)

2988 
is_dub
 = 0;

2990 
is_dub
 = 1;

2992 i(
tx
 =
NULL
) {

2993 
txn_num
 = 0;

2994 
lp
 = &
nu_l
;

2995 
nu_l
.
fe
 =u_l.
offt
 = 0;

2997 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2998 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2999  (
t
);

3006 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

3007 
txn_num
 = 
tx
->
txnid
;

3010 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

3011 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

3012 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

3013  (
t
);

3015 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

3016 + (
u_t32_t
)

3017 + (
u_t32_t
)

3018 + (*
l
)

3019 + (
u_t32_t
)

3020 + (
u_t32_t
)

3021 + (
u_t32_t
);

3022 i(
	`CRYPTO_ON
(
dbv
)) {

3023 
ad
 =

3024 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

3025 
logc
.
size
 +
ad
;

3028 i(
is_dub
 || 
tx
 =
NULL
) {

3029 i((
t
 =

3030 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

3031  (
t
);

3033 i((
t
 = 
	`__os_mloc
(
dbv
,

3034 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

3035  (
t
);

3036 #ifde
DIAGNOSTIC


3037 i((
t
 =

3038 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

3039 
	`__os_
(
dbv
, 

);

3040  (
t
);

3043 
logc
.
da
 = 

->data;

3046 i(
ad
 > 0)

3047 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

3049 
bp
 = 
logc
.
da
;

3051 
	`memy
(
bp
, &
y
, (rectype));

3052 
bp
 +(
y
);

3054 
	`memy
(
bp
, &
txn_num
, (txn_num));

3055 
bp
 +(
txn_num
);

3057 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

3058 
bp
 +(
DB_LSN
);

3060 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

3061 
	`memy
(
bp
, &
ump
, (uinttmp));

3062 
bp
 +(
ump
);

3064 
ump
 = (
u_t32_t
)
pgno
;

3065 
	`memy
(
bp
, &
ump
, (uinttmp));

3066 
bp
 +(
ump
);

3068 i(
l
 !
NULL
) {

3069 i(
tx
 !
NULL
) {

3070 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

3071 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

3072 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

3073  (
t
);

3075 
	`memy
(
bp
, 
l
, (*lsn));

3077 
	`memt
(
bp
, 0, (*
l
));

3078 
bp
 +(*
l
);

3080 
ump
 = (
u_t32_t
)
dx
;

3081 
	`memy
(
bp
, &
ump
, (uinttmp));

3082 
bp
 +(
ump
);

3084 
ump
 = (
u_t32_t
)
gno
;

3085 
	`memy
(
bp
, &
ump
, (uinttmp));

3086 
bp
 +(
ump
);

3088 
ump
 = (
u_t32_t
)
gno
;

3089 
	`memy
(
bp
, &
ump
, (uinttmp));

3090 
bp
 +(
ump
);

3092 
	`DB_ASSERT
(
dbv
,

3093 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

3095 i(
is_dub
 || 
tx
 =
NULL
) {

3096 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

3097 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

3098 *
lp
 = *
p
;

3099 i(
p
 !
t_lp
)

3100 *
t_lp
 = *
p
;

3103 
t
 = 0;

3104 #ifde
DIAGNOSTIC


3109 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

3110 
y
 |
DB_debug_FLAG
;

3111 
	`memy
(
logc
.
da
, &
y
, (rectype));

3113 i(!
	`IS_REP_CLIENT
(
dbv
))

3114 
t
 = 
	`__log_put
(
dbv
,

3115 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

3117 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

3118 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

3119 
	`LSN_NOT_LOGGED
(*
t_lp
);

3122 #ifde
LOG_DIAGNOSTIC


3123 i(
t
 != 0)

3124 ()
	`__bam_pgno_t
(
dbv
,

3125 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

3128 #ifde
DIAGNOSTIC


3129 
	`__os_
(
dbv
, 
logc
.
da
);

3131 i(
is_dub
 || 
tx
 =
NULL
)

3132 
	`__os_
(
dbv
, 
logc
.
da
);

3134  (
t
);

3135 
	}
}

3141 
	$__bam_pgno_ad
(
dbv
, 
cbuf
, 
g
)

3142 
DB_ENV
 *
dbv
;

3143 *
cbuf
;

3144 
__bam_pgno_gs
 **
g
;

3146 
__bam_pgno_gs
 *
gp
;

3147 
u_t32_t
 
ump
;

3148 
u_t8_t
 *
bp
;

3149 
t
;

3151 i((
t
 = 
	`__os_mloc
(
dbv
,

3152 (
__bam_pgno_gs
+ (
DB_TXN
), &
gp
)) != 0)

3153  (
t
);

3154 
bp
 = 
cbuf
;

3155 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

3156 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

3158 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

3159 
bp
 +(
gp
->
ty
);

3161 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

3162 
bp
 +(
gp
->
tx
->
txnid
);

3164 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

3165 
bp
 +(
DB_LSN
);

3167 
	`memy
(&
ump
, 
bp
, (uinttmp));

3168 
gp
->
feid
 = (
t32_t
)
ump
;

3169 
bp
 +(
ump
);

3171 
	`memy
(&
ump
, 
bp
, (uinttmp));

3172 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

3173 
bp
 +(
ump
);

3175 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

3176 
bp
 +(
gp
->
l
);

3178 
	`memy
(&
ump
, 
bp
, (uinttmp));

3179 
gp
->
dx
 = (
u_t32_t
)
ump
;

3180 
bp
 +(
ump
);

3182 
	`memy
(&
ump
, 
bp
, (uinttmp));

3183 
gp
->
gno
 = (
db_pgno_t
)
ump
;

3184 
bp
 +(
ump
);

3186 
	`memy
(&
ump
, 
bp
, (uinttmp));

3187 
gp
->
gno
 = (
db_pgno_t
)
ump
;

3188 
bp
 +(
ump
);

3190 *
g
 = 
gp
;

3192 
	}
}

3199 
	$__bam__cov
(
dbv
, 
dbp
, 
dbsiz
)

3200 
DB_ENV
 *
dbv
;

3201 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

3202 
size_t
 *
dbsiz
;

3204 
t
;

3206 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3207 
__bam_l_cov
, 
DB___bam_l
)) != 0)

3208  (
t
);

3209 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3210 
__bam_rl_cov
, 
DB___bam_rl
)) != 0)

3211  (
t
);

3212 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3213 
__bam_adj_cov
, 
DB___bam_adj
)) != 0)

3214  (
t
);

3215 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3216 
__bam_dju_cov
, 
DB___bam_dju
)) != 0)

3217  (
t
);

3218 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3219 
__bam_cd_cov
, 
DB___bam_cd
)) != 0)

3220  (
t
);

3221 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3222 
__bam__cov
, 
DB___bam_
)) != 0)

3223  (
t
);

3224 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3225 
__bam_ro_cov
, 
DB___bam_ro
)) != 0)

3226  (
t
);

3227 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3228 
__bam_cudj_cov
, 
DB___bam_cudj
)) != 0)

3229  (
t
);

3230 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3231 
__bam_rcudj_cov
, 
DB___bam_rcudj
)) != 0)

3232  (
t
);

3233 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3234 
__bam_lk_cov
, 
DB___bam_lk
)) != 0)

3235  (
t
);

3236 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3237 
__bam_mge_cov
, 
DB___bam_mge
)) != 0)

3238  (
t
);

3239 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3240 
__bam_pgno_cov
, 
DB___bam_pgno
)) != 0)

3241  (
t
);

3243 
	}
}

	@../btree/btree_autop.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/b.h
"

11 
	~"dbc/log.h
"

12 
	~"dbc/txn.h
"

19 
	$__bam_l_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

20 
DB_ENV
 *
dbv
;

21 
DBT
 *
db
;

22 
DB_LSN
 *
lp
;

23 
db_cs
 
nud2
;

24 *
nud3
;

26 
__bam_l_gs
 *
gp
;

27 
u_t32_t
 
i
;

28 
ch
;

29 
t
;

31 
nud2
 = 
DB_TXN_PRINT
;

32 
nud3
 = 
NULL
;

34 i((
t
 = 
	`__bam_l_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

35  (
t
);

36 ()
	`tf
(

38 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

39 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

40 (
u_lg
)
gp
->
ty
,

41 (
u_lg
)
gp
->
tx
->
txnid
,

42 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

43 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

44 ()
	`tf
("\e: %lu\n", (
u_lg
)
gp
->

);

45 ()
	`tf
("\tllsn: [%lu][%lu]\n",

46 (
u_lg
)
gp
->
΢
.
fe
, (u_lgrgp->΢.
offt
);

47 ()
	`tf
("\ight: %lu\n", (
u_lg
)
gp
->
right
);

48 ()
	`tf
("\trlsn: [%lu][%lu]\n",

49 (
u_lg
)
gp
->

.
fe
, (u_lgrgp->.
offt
);

50 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

51 ()
	`tf
("\pgno: %lu\n", (
u_lg
)
gp
->
gno
);

52 ()
	`tf
("\tnlsn: [%lu][%lu]\n",

53 (
u_lg
)
gp
->
Ƣ
.
fe
, (u_lgrgp->Ƣ.
offt
);

54 ()
	`tf
("\o_pgno: %lu\n", (
u_lg
)
gp
->
ro_pgno
);

55 ()
	`tf
("\tpg: ");

56 
i
 = 0; i < 
gp
->
pg
.
size
; i++) {

57 
ch
 = ((
u_t8_t
 *)
gp
->
pg
.
da
)[
i
];

58 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

60 ()
	`tf
("\n");

61 ()
	`tf
("\tags: %lu\n", (
u_lg
)
gp
->
ags
);

62 ()
	`tf
("\n");

63 
	`__os_
(
dbv
, 
gp
);

65 
	}
}

72 
	$__bam_rl_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

73 
DB_ENV
 *
dbv
;

74 
DBT
 *
db
;

75 
DB_LSN
 *
lp
;

76 
db_cs
 
nud2
;

77 *
nud3
;

79 
__bam_rl_gs
 *
gp
;

80 
u_t32_t
 
i
;

81 
ch
;

82 
t
;

84 
nud2
 = 
DB_TXN_PRINT
;

85 
nud3
 = 
NULL
;

87 i((
t
 = 
	`__bam_rl_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

88  (
t
);

89 ()
	`tf
(

91 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

92 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

93 (
u_lg
)
gp
->
ty
,

94 (
u_lg
)
gp
->
tx
->
txnid
,

95 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

96 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

97 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

98 ()
	`tf
("\tpgdbt: ");

99 
i
 = 0; i < 
gp
->
pgdbt
.
size
; i++) {

100 
ch
 = ((
u_t8_t
 *)
gp
->
pgdbt
.
da
)[
i
];

101 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

103 ()
	`tf
("\n");

104 ()
	`tf
("\o_pgno: %lu\n", (
u_lg
)
gp
->
ro_pgno
);

105 ()
	`tf
("\c: %lu\n", (
u_lg
)
gp
->
ec
);

106 ()
	`tf
("\trootent: ");

107 
i
 = 0; i < 
gp
->
roْt
.
size
; i++) {

108 
ch
 = ((
u_t8_t
 *)
gp
->
roْt
.
da
)[
i
];

109 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

111 ()
	`tf
("\n");

112 ()
	`tf
("\trootlsn: [%lu][%lu]\n",

113 (
u_lg
)
gp
->
rol
.
fe
, (u_lgrgp->rol.
offt
);

114 ()
	`tf
("\n");

115 
	`__os_
(
dbv
, 
gp
);

117 
	}
}

124 
	$__bam_adj_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

125 
DB_ENV
 *
dbv
;

126 
DBT
 *
db
;

127 
DB_LSN
 *
lp
;

128 
db_cs
 
nud2
;

129 *
nud3
;

131 
__bam_adj_gs
 *
gp
;

132 
t
;

134 
nud2
 = 
DB_TXN_PRINT
;

135 
nud3
 = 
NULL
;

137 i((
t
 = 
	`__bam_adj_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

138  (
t
);

139 ()
	`tf
(

141 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

142 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

143 (
u_lg
)
gp
->
ty
,

144 (
u_lg
)
gp
->
tx
->
txnid
,

145 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

146 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

147 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

148 ()
	`tf
("\tlsn: [%lu][%lu]\n",

149 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

150 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

151 ()
	`tf
("\tdx_cy: %lu\n", (
u_lg
)
gp
->
dx_cy
);

152 ()
	`tf
("\tis_: %lu\n", (
u_lg
)
gp
->
is_
);

153 ()
	`tf
("\n");

154 
	`__os_
(
dbv
, 
gp
);

156 
	}
}

163 
	$__bam_dju_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

164 
DB_ENV
 *
dbv
;

165 
DBT
 *
db
;

166 
DB_LSN
 *
lp
;

167 
db_cs
 
nud2
;

168 *
nud3
;

170 
__bam_dju_gs
 *
gp
;

171 
t
;

173 
nud2
 = 
DB_TXN_PRINT
;

174 
nud3
 = 
NULL
;

176 i((
t
 = 
	`__bam_dju_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

177  (
t
);

178 ()
	`tf
(

180 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

181 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

182 (
u_lg
)
gp
->
ty
,

183 (
u_lg
)
gp
->
tx
->
txnid
,

184 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

185 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

186 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

187 ()
	`tf
("\tlsn: [%lu][%lu]\n",

188 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

189 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

190 ()
	`tf
("\dju: %ld\n", ()
gp
->
adju
);

191 ()
	`tf
("\tags: %lu\n", (
u_lg
)
gp
->
ags
);

192 ()
	`tf
("\n");

193 
	`__os_
(
dbv
, 
gp
);

195 
	}
}

202 
	$__bam_cd_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

203 
DB_ENV
 *
dbv
;

204 
DBT
 *
db
;

205 
DB_LSN
 *
lp
;

206 
db_cs
 
nud2
;

207 *
nud3
;

209 
__bam_cd_gs
 *
gp
;

210 
t
;

212 
nud2
 = 
DB_TXN_PRINT
;

213 
nud3
 = 
NULL
;

215 i((
t
 = 
	`__bam_cd_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

216  (
t
);

217 ()
	`tf
(

219 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

220 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

221 (
u_lg
)
gp
->
ty
,

222 (
u_lg
)
gp
->
tx
->
txnid
,

223 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

224 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

225 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

226 ()
	`tf
("\tlsn: [%lu][%lu]\n",

227 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

228 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

229 ()
	`tf
("\n");

230 
	`__os_
(
dbv
, 
gp
);

232 
	}
}

239 
	$__bam__t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

240 
DB_ENV
 *
dbv
;

241 
DBT
 *
db
;

242 
DB_LSN
 *
lp
;

243 
db_cs
 
nud2
;

244 *
nud3
;

246 
__bam__gs
 *
gp
;

247 
u_t32_t
 
i
;

248 
ch
;

249 
t
;

251 
nud2
 = 
DB_TXN_PRINT
;

252 
nud3
 = 
NULL
;

254 i((
t
 = 
	`__bam__ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

255  (
t
);

256 ()
	`tf
(

258 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

259 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

260 (
u_lg
)
gp
->
ty
,

261 (
u_lg
)
gp
->
tx
->
txnid
,

262 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

263 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

264 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

265 ()
	`tf
("\tlsn: [%lu][%lu]\n",

266 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

267 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

268 ()
	`tf
("\tisded: %lu\n", (
u_lg
)
gp
->
isded
);

269 ()
	`tf
("\torig: ");

270 
i
 = 0; i < 
gp
->
ig
.
size
; i++) {

271 
ch
 = ((
u_t8_t
 *)
gp
->
ig
.
da
)[
i
];

272 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

274 ()
	`tf
("\n");

275 ()
	`tf
("\trepl: ");

276 
i
 = 0; i < 
gp
->

.
size
; i++) {

277 
ch
 = ((
u_t8_t
 *)
gp
->

.
da
)[
i
];

278 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

280 ()
	`tf
("\n");

281 ()
	`tf
("\fix: %lu\n", (
u_lg
)
gp
->
efix
);

282 ()
	`tf
("\tsuffix: %lu\n", (
u_lg
)
gp
->
suffix
);

283 ()
	`tf
("\n");

284 
	`__os_
(
dbv
, 
gp
);

286 
	}
}

293 
	$__bam_ro_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

294 
DB_ENV
 *
dbv
;

295 
DBT
 *
db
;

296 
DB_LSN
 *
lp
;

297 
db_cs
 
nud2
;

298 *
nud3
;

300 
__bam_ro_gs
 *
gp
;

301 
t
;

303 
nud2
 = 
DB_TXN_PRINT
;

304 
nud3
 = 
NULL
;

306 i((
t
 = 
	`__bam_ro_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

307  (
t
);

308 ()
	`tf
(

310 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

311 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

312 (
u_lg
)
gp
->
ty
,

313 (
u_lg
)
gp
->
tx
->
txnid
,

314 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

315 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

316 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

317 ()
	`tf
("\o_pgno: %lu\n", (
u_lg
)
gp
->
ro_pgno
);

318 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

319 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

320 ()
	`tf
("\n");

321 
	`__os_
(
dbv
, 
gp
);

323 
	}
}

330 
	$__bam_cudj_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

331 
DB_ENV
 *
dbv
;

332 
DBT
 *
db
;

333 
DB_LSN
 *
lp
;

334 
db_cs
 
nud2
;

335 *
nud3
;

337 
__bam_cudj_gs
 *
gp
;

338 
t
;

340 
nud2
 = 
DB_TXN_PRINT
;

341 
nud3
 = 
NULL
;

343 i((
t
 = 
	`__bam_cudj_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

344  (
t
);

345 ()
	`tf
(

347 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

348 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

349 (
u_lg
)
gp
->
ty
,

350 (
u_lg
)
gp
->
tx
->
txnid
,

351 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

352 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

353 ()
	`tf
("\tmode: %ld\n", ()
gp
->
mode
);

354 ()
	`tf
("\tom_pgno: %lu\n", (
u_lg
)
gp
->
om_pgno
);

355 ()
	`tf
("\o_pgno: %lu\n", (
u_lg
)
gp
->
to_pgno
);

356 ()
	`tf
("\e_pgno: %lu\n", (
u_lg
)
gp
->
_pgno
);

357 ()
	`tf
("\tf_dx: %lu\n", (
u_lg
)
gp
->
f_dx
);

358 ()
	`tf
("\tom_dx: %lu\n", (
u_lg
)
gp
->
om_dx
);

359 ()
	`tf
("\o_dx: %lu\n", (
u_lg
)
gp
->
to_dx
);

360 ()
	`tf
("\n");

361 
	`__os_
(
dbv
, 
gp
);

363 
	}
}

370 
	$__bam_rcudj_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

371 
DB_ENV
 *
dbv
;

372 
DBT
 *
db
;

373 
DB_LSN
 *
lp
;

374 
db_cs
 
nud2
;

375 *
nud3
;

377 
__bam_rcudj_gs
 *
gp
;

378 
t
;

380 
nud2
 = 
DB_TXN_PRINT
;

381 
nud3
 = 
NULL
;

383 i((
t
 = 
	`__bam_rcudj_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

384  (
t
);

385 ()
	`tf
(

387 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

388 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

389 (
u_lg
)
gp
->
ty
,

390 (
u_lg
)
gp
->
tx
->
txnid
,

391 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

392 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

393 ()
	`tf
("\tmode: %ld\n", ()
gp
->
mode
);

394 ()
	`tf
("\o: %ld\n", ()
gp
->
ro
);

395 ()
	`tf
("\eo: %ld\n", ()
gp
->
o
);

396 ()
	`tf
("\td: %lu\n", (
u_lg
)
gp
->
d
);

397 ()
	`tf
("\n");

398 
	`__os_
(
dbv
, 
gp
);

400 
	}
}

407 
	$__bam_lk_43_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

408 
DB_ENV
 *
dbv
;

409 
DBT
 *
db
;

410 
DB_LSN
 *
lp
;

411 
db_cs
 
nud2
;

412 *
nud3
;

414 
__bam_lk_43_gs
 *
gp
;

415 
t
;

417 
nud2
 = 
DB_TXN_PRINT
;

418 
nud3
 = 
NULL
;

420 i((
t
 = 
	`__bam_lk_43_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

421  (
t
);

422 ()
	`tf
(

424 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

425 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

426 (
u_lg
)
gp
->
ty
,

427 (
u_lg
)
gp
->
tx
->
txnid
,

428 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

429 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

430 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

431 ()
	`tf
("\tlsn: [%lu][%lu]\n",

432 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

433 ()
	`tf
("\v: %lu\n", (
u_lg
)
gp
->
ev
);

434 ()
	`tf
("\tlsn_prev: [%lu][%lu]\n",

435 (
u_lg
)
gp
->
l_ev
.
fe
, (u_lgrgp->l_ev.
offt
);

436 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

437 ()
	`tf
("\tlsn_next: [%lu][%lu]\n",

438 (
u_lg
)
gp
->
l_xt
.
fe
, (u_lgrgp->l_xt.
offt
);

439 ()
	`tf
("\n");

440 
	`__os_
(
dbv
, 
gp
);

442 
	}
}

449 
	$__bam_lk_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

450 
DB_ENV
 *
dbv
;

451 
DBT
 *
db
;

452 
DB_LSN
 *
lp
;

453 
db_cs
 
nud2
;

454 *
nud3
;

456 
__bam_lk_gs
 *
gp
;

457 
t
;

459 
nud2
 = 
DB_TXN_PRINT
;

460 
nud3
 = 
NULL
;

462 i((
t
 = 
	`__bam_lk_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

463  (
t
);

464 ()
	`tf
(

466 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

467 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

468 (
u_lg
)
gp
->
ty
,

469 (
u_lg
)
gp
->
tx
->
txnid
,

470 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

471 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

472 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

473 ()
	`tf
("\ew_pgno: %lu\n", (
u_lg
)
gp
->
w_pgno
);

474 ()
	`tf
("\v: %lu\n", (
u_lg
)
gp
->
ev
);

475 ()
	`tf
("\tlsn_prev: [%lu][%lu]\n",

476 (
u_lg
)
gp
->
l_ev
.
fe
, (u_lgrgp->l_ev.
offt
);

477 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

478 ()
	`tf
("\tlsn_next: [%lu][%lu]\n",

479 (
u_lg
)
gp
->
l_xt
.
fe
, (u_lgrgp->l_xt.
offt
);

480 ()
	`tf
("\n");

481 
	`__os_
(
dbv
, 
gp
);

483 
	}
}

490 
	$__bam_mge_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

491 
DB_ENV
 *
dbv
;

492 
DBT
 *
db
;

493 
DB_LSN
 *
lp
;

494 
db_cs
 
nud2
;

495 *
nud3
;

497 
__bam_mge_gs
 *
gp
;

498 
u_t32_t
 
i
;

499 
ch
;

500 
t
;

502 
nud2
 = 
DB_TXN_PRINT
;

503 
nud3
 = 
NULL
;

505 i((
t
 = 
	`__bam_mge_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

506  (
t
);

507 ()
	`tf
(

509 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

510 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

511 (
u_lg
)
gp
->
ty
,

512 (
u_lg
)
gp
->
tx
->
txnid
,

513 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

514 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

515 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

516 ()
	`tf
("\tlsn: [%lu][%lu]\n",

517 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

518 ()
	`tf
("\pgno: %lu\n", (
u_lg
)
gp
->
gno
);

519 ()
	`tf
("\tnlsn: [%lu][%lu]\n",

520 (
u_lg
)
gp
->
Ƣ
.
fe
, (u_lgrgp->Ƣ.
offt
);

521 ()
	`tf
("\thdr: ");

522 
i
 = 0; i < 
gp
->
hdr
.
size
; i++) {

523 
ch
 = ((
u_t8_t
 *)
gp
->
hdr
.
da
)[
i
];

524 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

526 ()
	`tf
("\n");

527 ()
	`tf
("\tdata: ");

528 
i
 = 0; i < 
gp
->
da
.
size
; i++) {

529 
ch
 = ((
u_t8_t
 *)
gp
->
da
.da)[
i
];

530 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

532 ()
	`tf
("\n");

533 ()
	`tf
("\tind: ");

534 
i
 = 0; i < 
gp
->
d
.
size
; i++) {

535 
ch
 = ((
u_t8_t
 *)
gp
->
d
.
da
)[
i
];

536 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

538 ()
	`tf
("\n");

539 ()
	`tf
("\n");

540 
	`__os_
(
dbv
, 
gp
);

542 
	}
}

549 
	$__bam_pgno_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

550 
DB_ENV
 *
dbv
;

551 
DBT
 *
db
;

552 
DB_LSN
 *
lp
;

553 
db_cs
 
nud2
;

554 *
nud3
;

556 
__bam_pgno_gs
 *
gp
;

557 
t
;

559 
nud2
 = 
DB_TXN_PRINT
;

560 
nud3
 = 
NULL
;

562 i((
t
 = 
	`__bam_pgno_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

563  (
t
);

564 ()
	`tf
(

566 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

567 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

568 (
u_lg
)
gp
->
ty
,

569 (
u_lg
)
gp
->
tx
->
txnid
,

570 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

571 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

572 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

573 ()
	`tf
("\tlsn: [%lu][%lu]\n",

574 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

575 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

576 ()
	`tf
("\tgno: %lu\n", (
u_lg
)
gp
->
gno
);

577 ()
	`tf
("\pgno: %lu\n", (
u_lg
)
gp
->
gno
);

578 ()
	`tf
("\n");

579 
	`__os_
(
dbv
, 
gp
);

581 
	}
}

588 
	$__bam__t
(
dbv
, 
dbp
, 
dbsiz
)

589 
DB_ENV
 *
dbv
;

590 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

591 
size_t
 *
dbsiz
;

593 
t
;

595 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

596 
__bam_l_t
, 
DB___bam_l
)) != 0)

597  (
t
);

598 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

599 
__bam_rl_t
, 
DB___bam_rl
)) != 0)

600  (
t
);

601 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

602 
__bam_adj_t
, 
DB___bam_adj
)) != 0)

603  (
t
);

604 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

605 
__bam_dju_t
, 
DB___bam_dju
)) != 0)

606  (
t
);

607 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

608 
__bam_cd_t
, 
DB___bam_cd
)) != 0)

609  (
t
);

610 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

611 
__bam__t
, 
DB___bam_
)) != 0)

612  (
t
);

613 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

614 
__bam_ro_t
, 
DB___bam_ro
)) != 0)

615  (
t
);

616 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

617 
__bam_cudj_t
, 
DB___bam_cudj
)) != 0)

618  (
t
);

619 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

620 
__bam_rcudj_t
, 
DB___bam_rcudj
)) != 0)

621  (
t
);

622 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

623 
__bam_lk_t
, 
DB___bam_lk
)) != 0)

624  (
t
);

625 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

626 
__bam_mge_t
, 
DB___bam_mge
)) != 0)

627  (
t
);

628 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

629 
__bam_pgno_t
, 
DB___bam_pgno
)) != 0)

630  (
t
);

632 
	}
}

	@../build_vxworks/db_archive/db_archive.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
db_chive_ma
 
__P
((, *[]));

19 
db_chive_uge
 
__P
(());

20 
db_chive_vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$db_chive
(
gs
)

26 *
gs
;

28 
gc
;

29 **
gv
;

31 
	`__db_ut_g
("db_chive", 
gs
, &
gc
, &
gv
);

32  (
	`db_chive_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

33 
	}
}

35 
	~<dio.h
>

36 
	#ERROR_RETURN
 
ERROR


	)

39 
	$db_chive_ma
(
gc
, 
gv
)

40 
gc
;

41 *
gv
[];

43 
*
ݏrg
;

44 

td
, 
__db_gt_t
;

45 
DB_ENV
 *
dbv
;

46 
u_t32_t
 
ags
;

47 
ch
, 
exv
, 
t
, 
vbo
;

48 **
fe
, *
home
, **
li
, *
sswd
;

50 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

51 
ogme
 = 
gv
[0];

53 ++
ogme
;

55 i((
t
 = 
	`db_chive_vsi_check
()) != 0)

56  (
t
);

58 
dbv
 = 
NULL
;

59 
ags
 = 0;

60 
exv
 = 
vbo
 = 0;

61 
home
 = 
sswd
 = 
NULL
;

62 
fe
 = 
li
 = 
NULL
;

63 
__db_gt_t
 = 1;

64 (
ch
 = 
	`gt
(
gc
, 
gv
, "adh:lP:sVv")!
EOF
)

65 
ch
) {

67 
	`LF_SET
(
DB_ARCH_ABS
);

70 
	`LF_SET
(
DB_ARCH_REMOVE
);

73 
home
 = 
ݏrg
;

76 
	`LF_SET
(
DB_ARCH_LOG
);

79 
sswd
 = 
	`rdup
(
ݏrg
);

80 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

81 i(
sswd
 =
NULL
) {

82 
	`rtf
(
dr
, "%s: strdup: %s\n",

83 
ogme
, 
	`
(
o
));

84  (
EXIT_FAILURE
);

88 
	`LF_SET
(
DB_ARCH_DATA
);

91 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

92  (
EXIT_SUCCESS
);

100 
vbo
 = 1;

104  (
	`db_chive_uge
());

106 
gc
 -
td
;

107 
gv
 +
td
;

109 i(
gc
 != 0)

110  (
	`db_chive_uge
());

113 
	`__db_ut_sig
();

119 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

120 
	`rtf
(
dr
,

121 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

122 
shutdown
;

125 
dbv
->
	`t_rfe
(dbv, 
dr
);

126 
dbv
->
	`t_fx
(dbv, 
ogme
);

128 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

129 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

130 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

131 
shutdown
;

137 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

138 (
t
 =
DB_VERSION_MISMATCH
 ||

139 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 |

140 
DB_INIT_LOG
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0)) != 0)) {

141 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

142 
shutdown
;

146 i((
t
 = 
dbv
->
	`log_chive
(dbv, &
li
, 
ags
)) != 0) {

147 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_archive");

148 
shutdown
;

152 i(
li
 !
NULL
) {

153 
fe
 = 
li
; *f!
NULL
; ++file)

154 
	`tf
("%s\n", *
fe
);

155 
	`
(
li
);

159 
shutdown
: 
exv
 = 1;

161 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

162 
exv
 = 1;

163 
	`rtf
(
dr
,

164 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

167 i(
sswd
 !
NULL
)

168 
	`
(
sswd
);

171 
	`__db_ut_signd
();

173  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

174 
	}
}

177 
	$db_chive_uge
()

179 ()
	`rtf
(
dr
,

180 "uge: %[-adlsVv] [-h home] [-Passwd]\n", 
ogme
);

181  (
EXIT_FAILURE
);

182 
	}
}

185 
	$db_chive_vsi_check
()

187 
v_maj
, 
v_m
, 
v_tch
;

190 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

191 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

192 
	`rtf
(
dr
,

194 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

195 
v_maj
, 
v_m
);

196  (
EXIT_FAILURE
);

199 
	}
}

	@../build_vxworks/db_checkpoint/db_checkpoint.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
db_checkpot_ma
 
__P
((, *[]));

19 
db_checkpot_uge
 
__P
(());

20 
db_checkpot_vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$db_checkpot
(
gs
)

26 *
gs
;

28 
gc
;

29 **
gv
;

31 
	`__db_ut_g
("db_checkpot", 
gs
, &
gc
, &
gv
);

32  (
	`db_checkpot_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

33 
	}
}

35 
	~<dio.h
>

36 
	#ERROR_RETURN
 
ERROR


	)

39 
	$db_checkpot_ma
(
gc
, 
gv
)

40 
gc
;

41 *
gv
[];

43 
*
ݏrg
;

44 

td
, 
__db_gt_t
;

45 
DB_ENV
 *
dbv
;

46 
time_t
 
now
;

47 
gv
;

48 
u_t32_t
 
ags
, 
kbys
, 
mus
, 
cds
;

49 
ch
, 
exv
, 

, 
t
, 
vbo
;

50 *
home
, *
logfe
, *
sswd
, 
time_buf
[
CTIME_BUFLEN
];

52 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

53 
ogme
 = 
gv
[0];

55 ++
ogme
;

57 i((
t
 = 
	`db_checkpot_vsi_check
()) != 0)

58  (
t
);

65 
	#MAX_UINT32_T
 2147483647

	)

67 
dbv
 = 
NULL
;

68 
kbys
 = 
mus
 = 0;

69 
exv
 = 

 = 
vbo
 = 0;

70 
ags
 = 0;

71 
home
 = 
logfe
 = 
sswd
 = 
NULL
;

72 
__db_gt_t
 = 1;

73 (
ch
 = 
	`gt
(
gc
, 
gv
, "1h:k:L:P:p:Vv")!
EOF
)

74 
ch
) {

76 

 = 1;

77 
ags
 = 
DB_FORCE
;

80 
home
 = 
ݏrg
;

83 i(
	`__db_glg
(
NULL
, 
ogme
,

84 
ݏrg
, 1, ()
MAX_UINT32_T
, &
gv
))

85  (
EXIT_FAILURE
);

86 
kbys
 = (
u_t32_t
)
gv
;

89 
logfe
 = 
ݏrg
;

92 
sswd
 = 
	`rdup
(
ݏrg
);

93 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

94 i(
sswd
 =
NULL
) {

95 
	`rtf
(
dr
, "%s: strdup: %s\n",

96 
ogme
, 
	`
(
o
));

97  (
EXIT_FAILURE
);

101 i(
	`__db_glg
(
NULL
, 
ogme
,

102 
ݏrg
, 1, ()
MAX_UINT32_T
, &
gv
))

103  (
EXIT_FAILURE
);

104 
mus
 = (
u_t32_t
)
gv
;

107 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

108  (
EXIT_SUCCESS
);

110 
vbo
 = 1;

114  (
	`db_checkpot_uge
());

116 
gc
 -
td
;

117 
gv
 +
td
;

119 i(
gc
 != 0)

120  (
	`db_checkpot_uge
());

122 i(

 =0 && 
kbys
 =0 && 
mus
 == 0) {

123 ()
	`rtf
(
dr
,

125 
ogme
);

126  (
	`db_checkpot_uge
());

130 
	`__db_ut_sig
();

133 i(
logfe
 !
NULL
 && 
	`__db_ut_logt
(
ogme
,ogfile))

134 
shutdown
;

140 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

141 
	`rtf
(
dr
,

142 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

143 
shutdown
;

146 
dbv
->
	`t_rfe
(dbv, 
dr
);

147 
dbv
->
	`t_fx
(dbv, 
ogme
);

149 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

150 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

151 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

152 
shutdown
;

159 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

160 (!

 || 
t
 =
DB_VERSION_MISMATCH
 ||

161 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

162 
DB_CREATE
 | 
DB_INIT_TXN
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0)) != 0)) {

163 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

164 
shutdown
;

172 
cds
 = 
kbys
 !0 ? 30 : 
mus
 * 60;

173 !
	`__db_ut_ued
()) {

174 i(
vbo
) {

175 ()
	`time
(&
now
);

176 
dbv
->
	`rx
(dbenv,

177 "checkpobeg: %s", 
	`__db_ime
(&
now
, 
time_buf
));

180 i((
t
 = 
dbv
->
	`txn_checkpot
(dbenv,

181 
kbys
, 
mus
, 
ags
)) != 0) {

182 
dbv
->
	`r
(dbv, 
t
, "txn_checkpoint");

183 
shutdown
;

186 i(
vbo
) {

187 ()
	`time
(&
now
);

188 
dbv
->
	`rx
(dbenv,

189 "checkpocome: %s", 
	`__db_ime
(&
now
, 
time_buf
));

192 i(

)

195 
	`__os_p
(
dbv
, 
cds
, 0);

199 
shutdown
: 
exv
 = 1;

203 i(
logfe
 !
NULL
)

204 ()
	`move
(
logfe
);

207 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

208 
exv
 = 1;

209 
	`rtf
(
dr
,

210 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

213 i(
sswd
 !
NULL
)

214 
	`
(
sswd
);

217 
	`__db_ut_signd
();

219  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

220 
	}
}

223 
	$db_checkpot_uge
()

225 ()
	`rtf
(
dr
, "uge: %[-1Vv]\n\t%s\n", 
ogme
,

227  (
EXIT_FAILURE
);

228 
	}
}

231 
	$db_checkpot_vsi_check
()

233 
v_maj
, 
v_m
, 
v_tch
;

236 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

237 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

238 
	`rtf
(
dr
,

240 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

241 
v_maj
, 
v_m
);

242  (
EXIT_FAILURE
);

245 
	}
}

	@../build_vxworks/db_deadlock/db_deadlock.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
db_ddlock_ma
 
__P
((, *[]));

19 
db_ddlock_uge
 
__P
(());

20 
db_ddlock_vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$db_ddlock
(
gs
)

26 *
gs
;

28 
gc
;

29 **
gv
;

31 
	`__db_ut_g
("db_ddlock", 
gs
, &
gc
, &
gv
);

32  (
	`db_ddlock_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

33 
	}
}

35 
	~<dio.h
>

36 
	#ERROR_RETURN
 
ERROR


	)

39 
	$db_ddlock_ma
(
gc
, 
gv
)

40 
gc
;

41 *
gv
[];

43 
*
ݏrg
;

44 

td
, 
__db_gt_t
;

45 
DB_ENV
 *
dbv
;

46 
u_t32_t
 
y
;

47 
time_t
 
now
;

48 
u_lg
 
cs
, 
ucs
;

49 
jeed
, 
ch
, 
exv
, 
t
, 
vbo
;

50 *
home
, *
logfe
, *
sswd
, *
r
, 
time_buf
[
CTIME_BUFLEN
];

52 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

53 
ogme
 = 
gv
[0];

55 ++
ogme
;

57 i((
t
 = 
	`db_ddlock_vsi_check
()) != 0)

58  (
t
);

60 
dbv
 = 
NULL
;

61 
y
 = 
DB_LOCK_DEFAULT
;

62 
home
 = 
logfe
 = 
sswd
 = 
NULL
;

63 
cs
 = 
ucs
 = 0;

64 
exv
 = 
vbo
 = 0;

65 
__db_gt_t
 = 1;

66 (
ch
 = 
	`gt
(
gc
, 
gv
, "a:h:L:P:t:Vv")!
EOF
)

67 
ch
) {

69 
ݏrg
[0]) {

71 
y
 = 
DB_LOCK_EXPIRE
;

74 
y
 = 
DB_LOCK_MAXLOCKS
;

77 
y
 = 
DB_LOCK_MINLOCKS
;

80 
y
 = 
DB_LOCK_OLDEST
;

83 
y
 = 
DB_LOCK_MAXWRITE
;

86 
y
 = 
DB_LOCK_MINWRITE
;

89 
y
 = 
DB_LOCK_YOUNGEST
;

92  (
	`db_ddlock_uge
());

95 i(
ݏrg
[1] != '\0')

96  (
	`db_ddlock_uge
());

99 
home
 = 
ݏrg
;

102 
logfe
 = 
ݏrg
;

105 
sswd
 = 
	`rdup
(
ݏrg
);

106 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

107 i(
sswd
 =
NULL
) {

108 
	`rtf
(
dr
, "%s: strdup: %s\n",

109 
ogme
, 
	`
(
o
));

110  (
EXIT_FAILURE
);

114 i((
r
 = 
	`rchr
(
ݏrg
, '.')!
NULL
) {

115 *
r
++ = '\0';

116 i(*
r
 !'\0' && 
	`__db_gulg
(

117 
NULL
, 
ogme
, 
r
, 0, 
LONG_MAX
, &
ucs
))

118  (
EXIT_FAILURE
);

120 i(*
ݏrg
 !'\0' && 
	`__db_gulg
(

121 
NULL
, 
ogme
, 
ݏrg
, 0, 
LONG_MAX
, &
cs
))

122  (
EXIT_FAILURE
);

123 i(
cs
 =0 && 
ucs
 == 0)

124  (
	`db_ddlock_uge
());

128 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

129  (
EXIT_SUCCESS
);

131 
vbo
 = 1;

135  (
	`db_ddlock_uge
());

137 
gc
 -
td
;

138 
gv
 +
td
;

140 i(
gc
 != 0)

141  (
	`db_ddlock_uge
());

144 
	`__db_ut_sig
();

147 i(
logfe
 !
NULL
 && 
	`__db_ut_logt
(
ogme
,ogfile))

148 
shutdown
;

154 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

155 
	`rtf
(
dr
,

156 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

157 
shutdown
;

160 
dbv
->
	`t_rfe
(dbv, 
dr
);

161 
dbv
->
	`t_fx
(dbv, 
ogme
);

163 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

164 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

165 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

166 
shutdown
;

169 i(
vbo
) {

170 ()
dbv
->
	`t_vbo
(dbv, 
DB_VERB_DEADLOCK
, 1);

171 ()
dbv
->
	`t_vbo
(dbv, 
DB_VERB_WAITSFOR
, 1);

175 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0) {

176 
dbv
->
	`r
(dbv, 
t
, "open");

177 
shutdown
;

180 !
	`__db_ut_ued
()) {

181 i(
vbo
) {

182 ()
	`time
(&
now
);

183 
dbv
->
	`rx
(dbenv,

184 "rušg%.24s", 
	`__db_ime
(&
now
, 
time_buf
));

187 i((
t
 =

188 
dbv
->
	`lock_de
(dbv, 0, 
y
, &
jeed
)) != 0) {

189 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->lock_detect");

190 
shutdown
;

192 i(
vbo
)

193 
dbv
->
	`rx
(dbv, "jeed %docks", 
jeed
);

196 i(
cs
 =0 && 
ucs
 == 0)

198 
	`__os_p
(
dbv
, 
cs
, 
ucs
);

202 
shutdown
: 
exv
 = 1;

206 i(
logfe
 !
NULL
)

207 ()
	`move
(
logfe
);

210 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

211 
exv
 = 1;

212 
	`rtf
(
dr
,

213 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

216 i(
sswd
 !
NULL
)

217 
	`
(
sswd
);

220 
	`__db_ut_signd
();

222  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

223 
	}
}

226 
	$db_ddlock_uge
()

228 ()
	`rtf
(
dr
,

229 "uge: %[-Vv] [-| m | | o | W | w | y]\n\t%s\n", 
ogme
,

231  (
EXIT_FAILURE
);

232 
	}
}

235 
	$db_ddlock_vsi_check
()

237 
v_maj
, 
v_m
, 
v_tch
;

240 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

241 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

242 
	`rtf
(
dr
,

244 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

245 
v_maj
, 
v_m
);

246  (
EXIT_FAILURE
);

249 
	}
}

	@../build_vxworks/db_dump/db_dump.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

15 #ide
lt


16 cڡ 
	gcyright
[] =

20 
db_dump_db_
 
__P
((
DB_ENV
 *, *, , 
u_t32_t
, *));

21 
db_dump_dump_sub
 
__P
((
DB_ENV
 *, 
DB
 *, *, , ));

22 
db_dump_ma
 
__P
((, *[]));

23 
db_dump_show_subs
 
__P
((
DB
 *));

24 
db_dump_uge
 
__P
(());

25 
db_dump_vsi_check
 
__P
(());

27 cڡ *
	gogme
;

30 
	$db_dump
(
gs
)

31 *
gs
;

33 
gc
;

34 **
gv
;

36 
	`__db_ut_g
("db_dump", 
gs
, &
gc
, &
gv
);

37  (
	`db_dump_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

38 
	}
}

40 
	~<dio.h
>

41 
	#ERROR_RETURN
 
ERROR


	)

44 
	$db_dump_ma
(
gc
, 
gv
)

45 
gc
;

46 *
gv
[];

48 
*
ݏrg
;

49 

td
, 
__db_gt_t
;

50 
DB_ENV
 *
dbv
;

51 
DB
 *
dbp
;

52 
u_t32_t
 
che
;

53 
ch
;

54 
exv
, 
keyag
, 
lag
, 
nag
, 
pag
, 
ive
;

55 
t
, 
Rag
, 
rag
, 
size
;

56 *
dt
, *
home
, *
sswd
, *
subme
;

58 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

59 
ogme
 = 
gv
[0];

61 ++
ogme
;

63 i((
t
 = 
	`db_dump_vsi_check
()) != 0)

64  (
t
);

66 
dbv
 = 
NULL
;

67 
dbp
 = 
NULL
;

68 
exv
 = 
lag
 = 
nag
 = 
pag
 = 
rag
 = 
Rag
 = 0;

69 
keyag
 = 0;

70 
che
 = 
MEGABYTE
;

71 
ive
 = 0;

72 
dt
 = 
home
 = 
sswd
 = 
subme
 = 
NULL
;

73 
__db_gt_t
 = 1;

74 (
ch
 = 
	`gt
(
gc
, 
gv
, "d:f:h:klNpP:rRs:V")!
EOF
)

75 
ch
) {

77 
dt
 = 
ݏrg
;

80 i(
	`eݒ
(
ݏrg
, "w", 
dout
=
NULL
) {

81 
	`rtf
(
dr
, "%s: %s:eopen: %s\n",

82 
ogme
, 
ݏrg
, 
	`
(
o
));

83  (
EXIT_FAILURE
);

87 
home
 = 
ݏrg
;

90 
keyag
 = 1;

93 
lag
 = 1;

96 
nag
 = 1;

99 
sswd
 = 
	`rdup
(
ݏrg
);

100 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

101 i(
sswd
 =
NULL
) {

102 
	`rtf
(
dr
, "%s: strdup: %s\n",

103 
ogme
, 
	`
(
o
));

104  (
EXIT_FAILURE
);

108 
pag
 = 1;

111 
subme
 = 
ݏrg
;

114 
Rag
 = 1;

118 
rag
 = 1;

121 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

122  (
EXIT_SUCCESS
);

125  (
	`db_dump_uge
());

127 
gc
 -
td
;

128 
gv
 +
td
;

130 i(
gc
 != 1)

131  (
	`db_dump_uge
());

133 i(
dt
 !
NULL
 && 
pag
) {

134 
	`rtf
(
dr
,

136 
ogme
);

137  (
EXIT_FAILURE
);

139 i(
lag
 && 
subme
 !
NULL
) {

140 
	`rtf
(
dr
,

142 
ogme
);

143  (
EXIT_FAILURE
);

146 i(
keyag
 && 
rag
) {

147 
	`rtf
(
dr
, "%s: %s",

149 
ogme
);

150  (
EXIT_FAILURE
);

153 i(
subme
 !
NULL
 && 
rag
) {

154 
	`rtf
(
dr
, "%s: %s",

156 
ogme
);

157  (
EXIT_FAILURE
);

161 
	`__db_ut_sig
();

167 
y
: i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

168 
	`rtf
(
dr
,

169 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

170 
r
;

173 
dbv
->
	`t_rfe
(dbv, 
dr
);

174 
dbv
->
	`t_fx
(dbv, 
ogme
);

175 i(
nag
) {

176 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

177 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

178 
r
;

180 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

181 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

182 
r
;

185 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

186 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

187 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

188 
r
;

192 i(
	`db_dump_db_
(
dbv
, 
home
, 
rag
, 
che
, &
ive
) != 0)

193 
r
;

196 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

197 
dbv
->
	`r
(dbv, 
t
, "db_create");

198 
r
;

205 i(
rag
) {

207 
t
 = 
dbp
->
	`vify
(dbp, 
gv
[0], 
NULL
, 
dout
,

208 
DB_SALVAGE
 |

209 (
Rag
 ? 
DB_AGGRESSIVE
 : 0) |

210 (
pag
 ? 
DB_PRINTABLE
 : 0));

211 
dbp
 = 
NULL
;

212 i(
t
 != 0)

213 
r
;

214 
de
;

217 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
,

218 
gv
[0], 
subme
, 
DB_UNKNOWN
, 
DB_RDONLY
, 0)) != 0) {

219 
dbp
->
	`r
(dbp, 
t
, "ݒ: %s", 
gv
[0]);

220 
r
;

222 i(
ive
 != 0) {

223 i((
t
 = 
	`__db_ut_che
(
dbp
, &
che
, &
size
)) != 0)

224 
r
;

225 i(
size
) {

226 ()
dbp
->
	`o
(dbp, 0);

227 
dbp
 = 
NULL
;

229 ()
dbv
->
	`o
(dbenv, 0);

230 
dbv
 = 
NULL
;

231 
y
;

235 i(
dt
 !
NULL
) {

236 i((
t
 = 
	`__db_dume
(
dbp
, 
NULL
, 
dt
, NULL)) != 0) {

237 
dbp
->
	`r
(dbp, 
t
, "__db_dume: %s", 
gv
[0]);

238 
r
;

240 } i(
lag
) {

241 i(
dbp
->
	`g_muɝ
(dbp)) {

242 i(
	`db_dump_show_subs
(
dbp
))

243 
r
;

245 
dbp
->
	`rx
(dbp,

246 "%s: d۠n cڏ muɝ dabas", 
gv
[0]);

247 
r
;

250 i(
subme
 =
NULL
 && 
dbp
->
	`g_muɝ
(dbp)) {

251 i(
	`db_dump_dump_sub
(
dbv
, 
dbp
, 
gv
[0], 
pag
, 
keyag
))

252 
r
;

254 i(
dbp
->
	`dump
(dbp, 
NULL
,

255 
__db__back
, 
dout
, 
pag
, 
keyag
))

256 
r
;

260 
r
: 
exv
 = 1;

262 
de
: i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 0)) != 0) {

263 
exv
 = 1;

264 
dbv
->
	`r
(dbv, 
t
, "close");

266 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

267 
exv
 = 1;

268 
	`rtf
(
dr
,

269 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

272 i(
sswd
 !
NULL
)

273 
	`
(
sswd
);

276 
	`__db_ut_signd
();

278  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

279 
	}
}

286 
	$db_dump_db_
(
dbv
, 
home
, 
is_lvage
, 
che
, 
is_iv
)

287 
DB_ENV
 *
dbv
;

288 *
home
;

289 
is_lvage
;

290 
u_t32_t
 
che
;

291 *
is_iv
;

293 
t
;

313 *
is_iv
 = 0;

314 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

315 
DB_USE_ENVIRON
 | (
is_lvage
 ? 
DB_INIT_MPOOL
 : 0), 0)) == 0)

317 i(
t
 =
DB_VERSION_MISMATCH
)

318 
r
;

330 *
is_iv
 = 1;

331 i((
t
 = 
dbv
->
	`t_chesize
(dbv, 0, 
che
, 1)) == 0 &&

332 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

333 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0)) == 0)

337 
r
: 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

339 
	}
}

346 
	$db_dump_dump_sub
(
dbv
, 
_dbp
, 
_me
, 
pag
, 
keyag
)

347 
DB_ENV
 *
dbv
;

348 
DB
 *
_dbp
;

349 *
_me
;

350 
pag
, 
keyag
;

352 
DB
 *
dbp
;

353 
DBC
 *
db
;

354 
DBT
 
key
, 
da
;

355 
t
;

356 *
subdb
;

362 i((
t
 = 
_dbp
->
	`curs
լt_dbp, 
NULL
, &
db
, 0)) != 0) {

363 
dbv
->
	`r
(dbv, 
t
, "DB->cursor");

367 
	`memt
(&
key
, 0, (key));

368 
	`memt
(&
da
, 0, (data));

369 (
t
 = 
db
->
	`g
(db, &
key
, &
da
,

370 
DB_IGNORE_LEASE
 | 
DB_NEXT
)) == 0) {

372 i((
subdb
 = 
	`mloc
(
key
.
size
 + 1)=
NULL
) {

373 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

376 
	`memy
(
subdb
, 
key
.
da
, key.
size
);

377 
subdb
[
key
.
size
] = '\0';

380 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

381 
dbv
->
	`r
(dbv, 
t
, "db_create");

382 
	`
(
subdb
);

385 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
,

386 
_me
, 
subdb
, 
DB_UNKNOWN
, 
DB_RDONLY
, 0)) != 0)

387 
dbp
->
	`r
(dbp, 
t
,

388 "DB->ݒ: %s:%s", 
_me
, 
subdb
);

389 i(
t
 =0 && 
dbp
->
	`dump
(

390 
dbp
, 
subdb
, 
__db__back
, 
dout
, 
pag
, 
keyag
))

391 
t
 = 1;

392 ()
dbp
->
	`o
(dbp, 0);

393 
	`
(
subdb
);

394 i(
t
 != 0)

397 i(
t
 !
DB_NOTFOUND
) {

398 
_dbp
->
	`r
լt_dbp, 
t
, "DBcursor->get");

402 i((
t
 = 
db
->
	`o
(dbcp)) != 0) {

403 
_dbp
->
	`r
լt_dbp, 
t
, "DBcursor->close");

408 
	}
}

415 
	$db_dump_show_subs
(
dbp
)

416 
DB
 *
dbp
;

418 
DBC
 *
db
;

419 
DBT
 
key
, 
da
;

420 
t
;

426 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &
db
, 0)) != 0) {

427 
dbp
->
	`r
(dbp, 
t
, "DB->cursor");

431 
	`memt
(&
key
, 0, (key));

432 
	`memt
(&
da
, 0, (data));

433 (
t
 = 
db
->
	`g
(db, &
key
, &
da
,

434 
DB_IGNORE_LEASE
 | 
DB_NEXT
)) == 0) {

435 i((
t
 = 
dbp
->
dbv
->
	`dbt
(

436 &
key
, 1, 
NULL
, 
dout
, 
__db__back
, 0)) != 0) {

437 
dbp
->
	`rx
(dbp, 
NULL
);

441 i(
t
 !
DB_NOTFOUND
) {

442 
dbp
->
	`r
(dbp, 
t
, "DBcursor->get");

446 i((
t
 = 
db
->
	`o
(dbcp)) != 0) {

447 
dbp
->
	`r
(dbp, 
t
, "DBcursor->close");

451 
	}
}

458 
	$db_dump_uge
()

460 ()
	`rtf
(
dr
, "usage: %s [-klNprRV]\n\t%s\n",

461 
ogme
,

463  (
EXIT_FAILURE
);

464 
	}
}

467 
	$db_dump_vsi_check
()

469 
v_maj
, 
v_m
, 
v_tch
;

472 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

473 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

474 
	`rtf
(
dr
,

476 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

477 
v_maj
, 
v_m
);

478  (
EXIT_FAILURE
);

481 
	}
}

	@../build_vxworks/db_hotbackup/db_hotbackup.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/qam.h
"

16 #ide
lt


17 cڡ 
	gcyright
[] =

21 
	ewhich_ݒ
 { 
	mOPEN_ORIGINAL
, 
	mOPEN_HOT_BACKUP
 };

23 
db_hbackup_backup_d_n
 
__P
((
DB_ENV
 *, *, *, *, , ));

24 
db_hbackup_da_cy
 
__P
((
DB_ENV
 *, *, *, *, ));

25 
db_hbackup_v_
 
__P
((
DB_ENV
 **,

26 *, **, ***, *, 
which_ݒ
));

27 
db_hbackup_ma
 
__P
((, *[]));

28 
db_hbackup_ad_da_d
 
__P
((
DB_ENV
 *, *, *, *, , ));

29 
db_hbackup_ad_log_d
 
__P
((
DB_ENV
 *, *, *, *, *, , ));

30 
db_hbackup_uge
 
__P
(());

31 
db_hbackup_vsi_check
 
__P
(());

33 cڡ *
	gogme
;

36 
	$db_hbackup
(
gs
)

37 *
gs
;

39 
gc
;

40 **
gv
;

42 
	`__db_ut_g
("db_hbackup", 
gs
, &
gc
, &
gv
);

43  (
	`db_hbackup_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

44 
	}
}

46 
	~<dio.h
>

47 
	#ERROR_RETURN
 
ERROR


	)

50 
	$db_hbackup_ma
(
gc
, 
gv
)

51 
gc
;

52 *
gv
[];

54 
*
ݏrg
;

55 

td
, 
__db_gt_t
;

56 
time_t
 
now
;

57 
DB_ENV
 *
dbv
;

58 
u_t
 
da_t
, 
da_xt
;

59 
ch
, 
checkpot
, 
cy_m
, 
db_cfig
, 
exv
;

60 
move_max
, 
t
, 
upde
, 
vbo
;

61 *
backup_d
, **
da_d
, **
d
, *
home
, *
log_d
, *
sswd
;

62 
home_buf
[
DB_MAXPATHLEN
], 
time_buf
[
CTIME_BUFLEN
];

74 
	`tbuf
(
dout
, 
NULL
);

76 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

77 
ogme
 = 
gv
[0];

79 ++
ogme
;

81 i((
t
 = 
	`db_hbackup_vsi_check
()) != 0)

82  (
t
);

84 
checkpot
 = 
db_cfig
 = 
da_t
 =

85 
da_xt
 = 
exv
 = 
upde
 = 
vbo
 = 0;

86 
da_d
 = 
NULL
;

87 
backup_d
 = 
home
 = 
sswd
 = 
NULL
;

88 
log_d
 = 
NULL
;

89 
cy_m
 = 
move_max
 = 0;

90 
__db_gt_t
 = 1;

91 (
ch
 = 
	`gt
(
gc
, 
gv
, "b:cDd:h:l:P:uVv")!
EOF
)

92 
ch
) {

94 
backup_d
 = 
ݏrg
;

97 
checkpot
 = 1;

100 
db_cfig
 = 1;

107 i(
da_d
 =
NULL
 || 
da_xt
 >
da_t
 - 2) {

108 
da_t
 = data_cnt == 0 ? 20 : data_cnt * 2;

109 i((
da_d
 = 
	`loc
(data_dir,

110 
da_t
 * (*
da_d
))=
NULL
) {

111 
	`rtf
(
dr
, "%s: %s\n",

112 
ogme
, 
	`
(
o
));

113  (
EXIT_FAILURE
);

116 
da_d
[
da_xt
++] = 
ݏrg
;

119 
home
 = 
ݏrg
;

122 
log_d
 = 
ݏrg
;

125 
sswd
 = 
	`rdup
(
ݏrg
);

126 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

127 i(
sswd
 =
NULL
) {

128 
	`rtf
(
dr
, "%s: strdup: %s\n",

129 
ogme
, 
	`
(
o
));

130  (
EXIT_FAILURE
);

134 
upde
 = 1;

137 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

138  (
EXIT_SUCCESS
);

140 
vbo
 = 1;

144  (
	`db_hbackup_uge
());

146 
gc
 -
td
;

147 
gv
 +
td
;

149 i(
gc
 != 0)

150  (
	`db_hbackup_uge
());

153 i(
da_d
 !
NULL
) {

154 
da_d
[
da_xt
] = 
NULL
;

159 i(
checkpot
 == 1) {

160 
	`rtf
(
dr
,

161 "%s: cn scify -dnd -c\n", 
ogme
);

162  (
	`db_hbackup_uge
());

166 i(
db_cfig
 && (
da_d
 !
NULL
 || 
log_d
 != NULL)) {

167 
	`rtf
(
dr
,

168 "%s: cn scify -Dnd -d o-l\n", 
ogme
);

169  (
	`db_hbackup_uge
());

173 
	`__db_ut_sig
();

182 i(
home
 =
NULL
) {

183 
home
 = 
home_buf
;

184 i((
t
 = 
	`__os_gv
(

185 
NULL
, "DB_HOME", &
home
, (
home_buf
))) != 0) {

186 
	`rtf
(
dr
,

188 
ogme
, 
	`db_
(
t
));

189  (
EXIT_FAILURE
);

195 i(
home
 =
NULL
) {

196 
	`rtf
(
dr
,

197 "%s:sour dabanvmecifd\n", 
ogme
);

198  (
	`db_hbackup_uge
());

200 i(
backup_d
 =
NULL
) {

201 
	`rtf
(
dr
,

202 "%s:؏rg backudey scifd\n", 
ogme
);

203  (
	`db_hbackup_uge
());

206 i(
vbo
) {

207 ()
	`time
(&
now
);

208 
	`tf
("%s: hot backup startedt %s",

209 
ogme
, 
	`__db_ime
(&
now
, 
time_buf
));

213 i(
	`db_hbackup_v_
(&
dbv
, 
home
,

214 (
db_cfig
 || 
log_d
 !
NULL
) ? &log_dir : NULL,

215 
db_cfig
 ? &
da_d
 : 
NULL
,

216 
sswd
, 
OPEN_ORIGINAL
) != 0)

217 
shutdown
;

219 i(
db_cfig
 && 
	`__os_abh
(
log_d
)) {

220 
	`rtf
(
dr
,

222 
ogme
);

223 
shutdown
;

230 i(
checkpot
) {

231 i(
vbo
)

232 
	`tf
("%s: %s: f checkpot\n", 
ogme
, 
home
);

233 i((
t
 =

234 
dbv
->
	`txn_checkpot
(dbv, 0, 0, 
DB_FORCE
)) != 0) {

235 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->txn_checkpoint");

236 
shutdown
;

238 i(!
upde
) {

239 i(
vbo
)

240 
	`tf
("%s: %s:emove unnecessaryog files\n",

241 
ogme
, 
home
);

242 i((
t
 = 
dbv
->
	`log_chive
(dbenv,

243 
NULL
, 
DB_ARCH_REMOVE
)) != 0) {

244 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_archive");

245 
shutdown
;

256 ()
	`__os_mkd
(
NULL
, 
backup_d
, 
	`__db_omode
("rwx------"));

267 i(
db_cfig
 && 
log_d
 !
NULL
 &&

268 
	`db_hbackup_backup_d_n
(

269 
dbv
, 
backup_d
, 
log_d
, &
move_max
, 
upde
, 
vbo
) != 0)

270 
shutdown
;

271 i(
	`db_hbackup_backup_d_n
(
dbv
,

272 
backup_d
, 
NULL
, &
move_max
, 
upde
, 
vbo
) != 0)

273 
shutdown
;

280 i(!
upde
) {

281 i(
	`db_hbackup_ad_da_d
(
dbv
, 
home
,

282 
backup_d
, 
home
, 
vbo
, 
db_cfig
) != 0)

283 
shutdown
;

284 i(
da_d
 !
NULL
)

285 
d
 = 
da_d
; *d !
NULL
; ++dir) {

291 i(
db_cfig
 && 
	`__os_abh
(*
d
)) {

292 
	`rtf
(
dr
,

294 
ogme
, *
d
);

295 
shutdown
;

297 i(
	`db_hbackup_ad_da_d
(
dbv
, 
home
,

298 
backup_d
, *
d
, 
vbo
, 
db_cfig
) != 0)

299 
shutdown
;

310 i(
	`db_hbackup_ad_log_d
(
dbv
, 
db_cfig
 ? 
home
 : 
NULL
, 
backup_d
,

311 
log_d
 =
NULL
 ? 
home
 :og_d, &
cy_m
, 
upde
, 
vbo
) != 0)

312 
shutdown
;

320 i(
upde
 && 
move_max
 < 
cy_m
 &&

321 !(
move_max
 =0 && 
cy_m
 == 1)) {

322 
	`rtf
(
dr
,

324 
ogme
, 
move_max
);

325 
	`rtf
(
dr
,

327 
ogme
, 
cy_m
);

328 
shutdown
;

332 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

333 
	`rtf
(
dr
,

334 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

335 
dbv
 = 
NULL
;

336 
shutdown
;

339 i(
vbo
)

340 
	`tf
("%s: %s:un catastrophicecovery\n",

341 
ogme
, 
backup_d
);

342 i(
	`db_hbackup_v_
(

343 &
dbv
, 
backup_d
, 
NULL
, NULL, 
sswd
, 
OPEN_HOT_BACKUP
) != 0)

344 
shutdown
;

349 i(
vbo
)

350 
	`tf
("%s: %s:emove unnecessaryog files\n",

351 
ogme
, 
backup_d
);

352 i((
t
 =

353 
dbv
->
	`log_chive
(dbv, 
NULL
, 
DB_ARCH_REMOVE
)) != 0) {

354 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_archive");

355 
shutdown
;

359 
shutdown
: 
exv
 = 1;

361 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

362 
exv
 = 1;

363 
	`rtf
(
dr
,

364 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

367 i(
exv
 == 0) {

368 i(
vbo
) {

369 ()
	`time
(&
now
);

370 
	`tf
("%s: hot backup completedt %s",

371 
ogme
, 
	`__db_ime
(&
now
, 
time_buf
));

374 
	`rtf
(
dr
, "%s: HOT BACKUP FAILED!\n", 
ogme
);

378 
	`__db_ut_signd
();

380  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

382 
	}
}

389 
	$db_hbackup_v_
(
dbvp
, 
home
, 
log_dp
, 
da_dp
, 
sswd
, 
which
)

390 
DB_ENV
 **
dbvp
;

391 *
home
, **
log_dp
, ***
da_dp
, *
sswd
;

392 
which_ݒ
 
which
;

394 
DB_ENV
 *
dbv
;

395 
t
;

397 *
dbvp
 = 
NULL
;

402 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

403 
	`rtf
(
dr
,

404 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

408 
dbv
->
	`t_rfe
(dbv, 
dr
);

409 
	`tbuf
(
dr
, 
NULL
);

410 
dbv
->
	`t_fx
(dbv, 
ogme
);

416 i(
log_dp
 !
NULL
 && *log_dirp != NULL &&

417 (
t
 = 
dbv
->
	`t_lg_d
(dbv, *
log_dp
)) != 0) {

418 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->t_lg_d: %s", *
log_dp
);

423 i(
sswd
 !
NULL
 &&

424 (
t
 = 
dbv
->
	`t_y
(dbv, 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

425 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->set_encrypt");

429 
which
) {

430 
OPEN_ORIGINAL
:

436 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

437 (
t
 =
DB_VERSION_MISMATCH
 ||

438 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 |

439 
DB_INIT_LOG
 | 
DB_INIT_TXN
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
,

441 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->ݒ: %s", 
home
);

444 i(
log_dp
 !
NULL
 && *log_dirp == NULL)

445 ()
dbv
->
	`g_lg_d
(dbv, (cڡ **)
log_dp
);

446 i(
da_dp
 !
NULL
 && *data_dirp == NULL)

447 ()
dbv
->
	`g_da_ds
(

448 
dbv
, (cڡ ***)
da_dp
);

450 
OPEN_HOT_BACKUP
:

457 i((
t
 =

458 
dbv
->
	`t_chesize
(dbenv, 0, 64 * 1024 * 10, 0)) != 0) {

459 
dbv
->
	`r
(dbenv,

460 
t
, "DB_ENV->t_chesize: %s", 
home
);

463 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 |

464 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
 | 
DB_PRIVATE
 |

465 
DB_RECOVER_FATAL
 | 
DB_USE_ENVIRON
, 0)) != 0) {

466 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->ݒ: %s", 
home
);

472 *
dbvp
 = 
dbv
;

474 
	}
}

481 
	$db_hbackup_backup_d_n
(
dbv
, 
backup_d
, 
log_d
, 
move_maxp
, 
upde
, 
vbo
)

482 
DB_ENV
 *
dbv
;

483 *
backup_d
, *
log_d
;

484 *
move_maxp
, 
upde
, 
vbo
;

486 
t
, 
ft
, 
t
, 
v
;

487 **
mes
, *
d
, 
buf
[
DB_MAXPATHLEN
], 
th
[DB_MAXPATHLEN];

490 i(
log_d
 !
NULL
) {

491 i((
size_t
)
	`tf
(
buf
, (buf), "%s%c%s",

492 
backup_d
, 
PATH_SEPARATOR
[0] ,
log_d
>(
buf
)) {

493 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

494 
backup_d
, 
PATH_SEPARATOR
[0] ,
log_d
);

497 
d
 = 
buf
;

499 
d
 = 
backup_d
;

502 i((
t
 = 
	`__os_dli
(
dbv
, 
d
, &
mes
, &
ft
)) != 0) {

503 i(
log_d
 !
NULL
 && !
upde
)

505 
dbv
->
	`r
(dbv, 
t
, "%s: deyd", 
d
);

508 
t
 = 
ft
; --cnt >= 0;) {

512 i(
	`cmp
(
mes
[
t
], 
LFPREFIX
, (LFPREFIX) - 1)) {

513 i(
upde
)

517 
v
 = 
	`oi
(
mes
[
t
] + (
LFPREFIX
) - 1);

518 i(*
move_maxp
 < 
v
)

519 *
move_maxp
 = 
v
;

521 i((
size_t
)
	`tf
(
th
, (path), "%s%c%s",

522 
d
, 
PATH_SEPARATOR
[0], 
mes
[
t
]>(
th
)) {

523 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

524 
d
, 
PATH_SEPARATOR
[0], 
mes
[
t
]);

527 i(
vbo
)

528 
	`tf
("%s:emovg %s\n", 
ogme
, 
th
);

529 i(
	`__os_uƚk
(
dbv
, 
th
) != 0)

533 
	`__os_d
(
dbv
, 
mes
, 
ft
);

535 i(
vbo
 && *
move_maxp
 != 0)

536 
	`tf
("%s: highestumberedog fileemoved: %d\n",

537 
ogme
, *
move_maxp
);

540 
	}
}

547 
	$db_hbackup_ad_da_d
(
dbv
, 
home
, 
backup_d
, 
d
, 
vbo
, 
db_cfig
)

548 
DB_ENV
 *
dbv
;

549 *
home
, *
backup_d
, *
d
;

550 
vbo
, 
db_cfig
;

552 
t
, 
ft
, 
t
;

553 *
bd
, **
mes
;

554 
buf
[
DB_MAXPATHLEN
], 
bbuf
[DB_MAXPATHLEN];

556 
bd
 = 
backup_d
;

557 i(
db_cfig
 && 
d
 !
home
) {

559 i((
size_t
)(
t
 = 
	`tf
(
bbuf
, (bbuf), "%s%c%s%c",

560 
backup_d
, 
PATH_SEPARATOR
[0],

561 
d
, 
PATH_SEPARATOR
[0])>(
buf
)) {

562 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

563 
backup_d
, 
PATH_SEPARATOR
[0], 
d
);

566 
bd
 = 
bbuf
;

569 i((
t
 = 
dbv
->
	`t_rmed_d
(

570 
dbv
, 
	`__db_omode
("rwx------"), 0)) != 0 ||

571 (
t
 = 
	`__db_mkth
(
dbv
, 
bd
)) != 0) {

572 
dbv
->
	`r
(dbv, 
t
, "%s: cn ce", 
bd
);

576 
bd
[
t
 - 1] = '\0';

579 i((
size_t
)
	`tf
(
buf
, (buf),

580 "%s%c%s", 
home
, 
PATH_SEPARATOR
[0], 
d
>(
buf
)) {

581 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

582 
home
, 
PATH_SEPARATOR
[0], 
d
);

585 
d
 = 
buf
;

588 i((
t
 = 
	`__os_dli
(
dbv
, 
d
, &
mes
, &
ft
)) != 0) {

589 
dbv
->
	`r
(dbv, 
t
, "%s: deyd", 
d
);

592 
t
 = 
ft
; --cnt >= 0;) {

597 i(!
	`cmp
(
mes
[
t
], 
LFPREFIX
, (LFPREFIX) - 1))

599 i(!
	`cmp
(
mes
[
t
],

600 
DB_REGION_PREFIX
, (DB_REGION_PREFIX) - 1) &&

601 
	`cmp
(
mes
[
t
],

602 
QUEUE_EXTENT_PREFIX
, (QUEUE_EXTENT_PREFIX) - 1))

608 i(!
db_cfig
 &&

609 !
	`cmp
(
mes
[
t
], "DB_CONFIG", ("DB_CONFIG")))

613 i(
	`db_hbackup_da_cy
(
dbv
, 
mes
[
t
], 
d
, 
bd
, 
vbo
) != 0)

617 
	`__os_d
(
dbv
, 
mes
, 
ft
);

620 
	}
}

629 
	$db_hbackup_ad_log_d
(
dbv
, 
home
, 
backup_d
, 
log_d
, 
cy_mp
, 
upde
, 
vbo
)

630 
DB_ENV
 *
dbv
;

631 *
home
, *
backup_d
, *
log_d
;

632 *
cy_mp
, 
upde
, 
vbo
;

634 
u_t32_t
 
aag
;

635 
t
, 
t
, 
v
;

636 **
beg
, **
mes
, *
backupd
, *
logd
;

637 
om
[
DB_MAXPATHLEN
], 
to
[DB_MAXPATHLEN];

639 i(
home
 !
NULL
 && 
log_d
 != NULL) {

640 i((
size_t
)
	`tf
(
om
, (from), "%s%c%s",

641 
home
, 
PATH_SEPARATOR
[0], 
log_d
>(
om
)) {

642 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

643 
home
, 
PATH_SEPARATOR
[0], 
log_d
);

646 
logd
 = 
	`rdup
(
om
);

647 i((
size_t
)(
t
 = 
	`tf
(
to
, (to),

648 "%s%c%s%c", 
backup_d
, 
PATH_SEPARATOR
[0],

649 
log_d
, 
PATH_SEPARATOR
[0])>(
to
)) {

650 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

651 
backup_d
, 
PATH_SEPARATOR
[0], 
log_d
);

654 
backupd
 = 
	`rdup
(
to
);

657 i((
t
 = 
dbv
->
	`t_rmed_d
(

658 
dbv
, 
	`__db_omode
("rwx------"), 0)) != 0 ||

659 (
t
 = 
	`__db_mkth
(
dbv
, 
backupd
)) != 0) {

660 
dbv
->
	`r
(dbv, 
t
, "%s: cn ce", 
backupd
);

664 
backupd
[
t
 - 1] = '\0';

666 
backupd
 = 
backup_d
;

667 
logd
 = 
log_d
;

670 
aga
: 
aag
 = 
DB_ARCH_LOG
;

676 i(
upde
)

677 
aag
 = 0;

679 i((
t
 = 
dbv
->
	`log_chive
(dbv, &
mes
, 
aag
)) != 0) {

680 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_archive");

683 i(
mes
 =
NULL
)

684 
de
;

685 
beg
 = 
mes
;

686 ; *
mes
 !
NULL
;ames++) {

688 
v
 = 
	`oi
(*
mes
 + (
LFPREFIX
) - 1);

689 i(*
cy_mp
 =0 || *cy_m> 
v
)

690 *
cy_mp
 = 
v
;

692 i((
size_t
)
	`tf
(
om
, (from), "%s%c%s",

693 
logd
, 
PATH_SEPARATOR
[0], *
mes
>(
om
)) {

694 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

695 
logd
, 
PATH_SEPARATOR
[0], *
mes
);

707 i(
upde
) {

708 i((
size_t
)
	`tf
(
to
, (to), "%s%c%s",

709 
backupd
, 
PATH_SEPARATOR
[0], *
mes
>(
to
)) {

710 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

711 
backupd
, 
PATH_SEPARATOR
[0], *
mes
);

714 i(
	`__os_me
(
dbv
, 
om
, 
to
, 1) == 0) {

715 i(
vbo
)

716 
	`tf
("%s: moving %so %s\n",

717 
ogme
, 
om
, 
to
);

723 i(
	`db_hbackup_da_cy
(
dbv
, *
mes
, 
logd
, 
backupd
, 
vbo
) != 0)

726 i(
upde
) {

727 i(
vbo
)

728 
	`tf
("%s:emovg %s\n", 
ogme
, 
om
);

729 i((
t
 = 
	`__os_uƚk
(
dbv
, 
om
)) != 0) {

730 
dbv
->
	`r
(dbv, 
t
,

731 "uƚk o%ed", 
om
);

738 
	`
(
beg
);

739 
de
: i(
upde
) {

740 
upde
 = 0;

741 
aga
;

744 i(
vbo
 && *
cy_mp
 != 0)

745 
	`tf
("%s:owestumberedog file copied: %d\n",

746 
ogme
, *
cy_mp
);

747 i(
logd
 !
log_d
)

748 
	`
(
logd
);

749 i(
backupd
 !
backup_d
)

750 
	`
(
backupd
);

753 
	}
}

760 
	$db_hbackup_da_cy
(
dbv
, 
fe
, 
om_d
, 
to_d
, 
vbo
)

761 
DB_ENV
 *
dbv
;

762 *
fe
, *
om_d
, *
to_d
;

763 
vbo
;

765 
DB_FH
 *
rfhp
, *
wfhp
;

766 
size_t
 

, 
nw
;

767 
t
;

768 *
buf
;

770 
t
 = 0;

771 
rfhp
 = 
wfhp
 = 
NULL
;

773 i(
vbo
)

774 
	`tf
("%s: cyg %s%c%t%s%c%s\n", 
ogme
, 
om_d
,

775 
PATH_SEPARATOR
[0], 
fe
, 
to_d
, PATH_SEPARATOR[0], file);

787 i((
buf
 = 
	`mloc
(
MEGABYTE
)=
NULL
) {

788 
dbv
->
	`r
(dbenv,

789 
o
, "%lu buf㸮loti", (
u_lg
)
MEGABYTE
);

794 i(
	`tf
(
buf
, 
MEGABYTE
, "%s%c%s",

795 
om_d
, 
PATH_SEPARATOR
[0], 
fe
>
MEGABYTE
) {

796 
dbv
->
	`rx
(dbenv,

797 "%s%c%s:holg", 
om_d
, 
PATH_SEPARATOR
[0], 
fe
);

798 
r
;

800 i((
t
 = 
	`__os_ݒ
(
dbv
, 
buf
, 0, 
DB_OSO_RDONLY
, 0, &
rfhp
)) != 0) {

801 
dbv
->
	`r
(dbv, 
t
, "%s", 
buf
);

802 
r
;

806 i(
	`tf
(
buf
, 
MEGABYTE
, "%s%c%s",

807 
to_d
, 
PATH_SEPARATOR
[0], 
fe
>
MEGABYTE
) {

808 
dbv
->
	`rx
(dbenv,

809 "%s%c%s:holg", 
to_d
, 
PATH_SEPARATOR
[0], 
fe
);

810 
r
;

812 i((
t
 = 
	`__os_ݒ
(
dbv
, 
buf
, 0,

813 
DB_OSO_CREATE
 | 
DB_OSO_TRUNC
, 
	`__db_omode
(
OWNER_RW
), &
wfhp
)) != 0) {

814 
dbv
->
	`r
(dbv, 
t
, "%s", 
buf
);

815 
r
;

819 (
t
 = 
	`__os_ad
(
dbv
, 
rfhp
, 
buf
, 
MEGABYTE
, &

)) == 0 &&

820 

 > 0)

821 i((
t
 = 
	`__os_wre
(
dbv
, 
wfhp
, 
buf
, 

, &
nw
)) != 0)

825 
r
: 
t
 = 1;

827 i(
buf
 !
NULL
)

828 
	`
(
buf
);

830 i(
rfhp
 !
NULL
 && 
	`__os_ohd
(
dbv
,fhp) != 0)

831 
t
 = 1;

834 i(
wfhp
 !
NULL
) {

835 i(
	`__os_fsync
(
dbv
, 
wfhp
) != 0)

836 
t
 = 1;

837 i(
	`__os_ohd
(
dbv
, 
wfhp
) != 0)

838 
t
 = 1;

840  (
t
);

841 
	}
}

844 
	$db_hbackup_uge
()

846 ()
	`rtf
(
dr
, "uge: %[-cDuVv]\n\t%s\n", 
ogme
,

848  (
EXIT_FAILURE
);

849 
	}
}

852 
	$db_hbackup_vsi_check
()

854 
v_maj
, 
v_m
, 
v_tch
;

857 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

858 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

859 
	`rtf
(
dr
,

861 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

862 
v_maj
, 
v_m
);

863  (
EXIT_FAILURE
);

866 
	}
}

	@../build_vxworks/db_load/db_load.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

15 #ide
lt


16 cڡ 
	gcyright
[] =

21 cڡ *
	mogme
;

22 *
	mhdrbuf
;

23 
u_lg
 
	mlo
;

24 
u_lg
 
	migle
;

25 
	mdoda
;

26 
	mdofe
;

27 
	mvsi
;

28 *
	mhome
;

29 *
	msswd
;

30 
	mive
;

31 
u_t32_t
 
	mche
;

32 } 
	tLDG
;

34 
db_ld_badd
 
__P
((
DB_ENV
 *));

35 
db_ld_badnum
 
__P
((
DB_ENV
 *));

36 
db_ld_cfigu
 
__P
((
DB_ENV
 *, 
DB
 *, **, **, *));

37 
db_ld_cvb
 
__P
((
DB_ENV
 *, *, **));

38 
db_ld_db_
 
__P
((
DB_ENV
 *, *, 
u_t32_t
, *));

39 
db_ld_dbt_rdump
 
__P
((
DB_ENV
 *, 
DBT
 *));

40 
db_ld_dbt_rt
 
__P
((
DB_ENV
 *, 
DBT
 *));

41 
db_ld_dbt_eo
 
__P
((
DB_ENV
 *, 
DBT
 *, ));

42 
db_ld_dbt_to_o
 
__P
((
DB_ENV
 *, 
DBT
 *, 
db_o_t
 *));

43 
db_ld_v_
 
__P
((
DB_ENV
 **, 
LDG
 *));

44 
db_ld_ld
 
__P
((
DB_ENV
 *, *, 
DBTYPE
, **, 
u_t
, 
LDG
 *, *));

45 
db_ld_ma
 
__P
((, *[]));

46 
db_ld_rhd
 
__P
((
DB_ENV
 *, 
DB
 *, 
DBTYPE
 *, **, *, *));

47 
db_ld_uge
 
__P
(());

48 
db_ld_vsi_check
 
__P
(());

50 cڡ *
	gogme
;

52 
	#G
(
f
((
LDG
 *)
dbv
->
p_ive
)->
	)
f

55 
	#LDF_NOHEADER
 0x01

	)

56 
	#LDF_NOOVERWRITE
 0x02

	)

57 
	#LDF_PASSWORD
 0x04

	)

60 
	$db_ld
(
gs
)

61 *
gs
;

63 
gc
;

64 **
gv
;

66 
	`__db_ut_g
("db_ld", 
gs
, &
gc
, &
gv
);

67  (
	`db_ld_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

68 
	}
}

70 
	~<dio.h
>

71 
	#ERROR_RETURN
 
ERROR


	)

74 
	$db_ld_ma
(
gc
, 
gv
)

75 
gc
;

76 *
gv
[];

78 um { 
NOTSET
, 
FILEID_RESET
, 
LSN_RESET
, 
STANDARD_LOAD
 } 
mode
;

79 
*
ݏrg
;

80 

td
, 
__db_gt_t
;

81 
DBTYPE
 
dbty
;

82 
DB_ENV
 *
dbv
;

83 
LDG
 
ldg
;

84 
u_t
 
ldf
;

85 
ch
, 
exied
, 
exv
, 
t
;

86 **
i
, **
p
;

88 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

89 
ogme
 = 
gv
[0];

91 ++
ogme
;

93 i((
t
 = 
	`db_ld_vsi_check
()) != 0)

94  (
t
);

96 
ldg
.
ogme
 =rogname;

97 
ldg
.
lo
 = 0;

98 
ldg
.
doda
 =dg.
dofe
 = 0;

99 
ldg
.
vsi
 = 1;

100 
ldg
.
che
 = 
MEGABYTE
;

101 
ldg
.
hdrbuf
 = 
NULL
;

102 
ldg
.
home
 = 
NULL
;

103 
ldg
.
sswd
 = 
NULL
;

105 
mode
 = 
NOTSET
;

106 
ldf
 = 0;

107 
exv
 = 
exied
 = 0;

108 
dbty
 = 
DB_UNKNOWN
;

111 i((
p
 = 
i
 =

112 (**)
	`oc
((
size_t
)
gc
 + 1, (*))=
NULL
) {

113 
	`rtf
(
dr
, "%s: %s\n", 
ldg
.
ogme
, 
	`
(
ENOMEM
));

114  (
EXIT_FAILURE
);

124 
__db_gt_t
 = 1;

125 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:f:h:nP:r:Tt:V")!
EOF
)

126 
ch
) {

128 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

129  (
	`db_ld_uge
());

130 
mode
 = 
STANDARD_LOAD
;

132 *
p
++ = 
ݏrg
;

135 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

136  (
	`db_ld_uge
());

137 
mode
 = 
STANDARD_LOAD
;

139 i(
	`eݒ
(
ݏrg
, "r", 
d
=
NULL
) {

140 
	`rtf
(
dr
, "%s: %s:eopen: %s\n",

141 
ldg
.
ogme
, 
ݏrg
, 
	`
(
o
));

142  (
EXIT_FAILURE
);

146 
ldg
.
home
 = 
ݏrg
;

149 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

150  (
	`db_ld_uge
());

151 
mode
 = 
STANDARD_LOAD
;

153 
ldf
 |
LDF_NOOVERWRITE
;

156 
ldg
.
sswd
 = 
	`rdup
(
ݏrg
);

157 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

158 i(
ldg
.
sswd
 =
NULL
) {

159 
	`rtf
(
dr
, "%s: strdup: %s\n",

160 
ldg
.
ogme
, 
	`
(
o
));

161  (
EXIT_FAILURE
);

163 
ldf
 |
LDF_PASSWORD
;

166 i(
mode
 =
STANDARD_LOAD
)

167  (
	`db_ld_uge
());

168 i(
	`rcmp
(
ݏrg
, "lsn") == 0)

169 
mode
 = 
LSN_RESET
;

170 i(
	`rcmp
(
ݏrg
, "fileid") == 0)

171 
mode
 = 
FILEID_RESET
;

173  (
	`db_ld_uge
());

176 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

177  (
	`db_ld_uge
());

178 
mode
 = 
STANDARD_LOAD
;

180 
ldf
 |
LDF_NOHEADER
;

183 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

184  (
	`db_ld_uge
());

185 
mode
 = 
STANDARD_LOAD
;

187 i(
	`rcmp
(
ݏrg
, "btree") == 0) {

188 
dbty
 = 
DB_BTREE
;

191 i(
	`rcmp
(
ݏrg
, "hash") == 0) {

192 
dbty
 = 
DB_HASH
;

195 i(
	`rcmp
(
ݏrg
, "recno") == 0) {

196 
dbty
 = 
DB_RECNO
;

199 i(
	`rcmp
(
ݏrg
, "queue") == 0) {

200 
dbty
 = 
DB_QUEUE
;

203  (
	`db_ld_uge
());

205 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

206  (
EXIT_SUCCESS
);

209  (
	`db_ld_uge
());

211 
gc
 -
td
;

212 
gv
 +
td
;

214 i(
gc
 != 1)

215  (
	`db_ld_uge
());

218 
	`__db_ut_sig
();

224 i(
	`db_ld_v_
(&
dbv
, &
ldg
) != 0)

225 
shutdown
;

228 
mode
) {

229 
FILEID_RESET
:

230 
exv
 = 
dbv
->
	`feid_t
(

231 
dbv
, 
gv
[0], 
ldf
 & 
LDF_PASSWORD
 ? 
DB_ENCRYPT
 : 0);

233 
LSN_RESET
:

234 
exv
 = 
dbv
->
	`l_t
(

235 
dbv
, 
gv
[0], 
ldf
 & 
LDF_PASSWORD
 ? 
DB_ENCRYPT
 : 0);

237 
NOTSET
:

238 
STANDARD_LOAD
:

239 !
ldg
.
dofe
)

240 i(
	`db_ld_ld
(
dbv
, 
gv
[0], 
dbty
, 
i
, 
ldf
,

241 &
ldg
, &
exied
) != 0)

242 
shutdown
;

247 
shutdown
: 
exv
 = 1;

249 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

250 
exv
 = 1;

251 
	`rtf
(
dr
,

252 "%s: dbv->o: %s\n", 
ldg
.
ogme
, 
	`db_
(
t
));

256 
	`__db_ut_signd
();

257 
	`
(
i
);

258 i(
ldg
.
sswd
 !
NULL
)

259 
	`
(
ldg
.
sswd
);

268  (
exv
 =0 ? (
exied
 == 0 ? 0 : 1) : 2);

269 
	}
}

276 
	$db_ld_ld
(
dbv
, 
me
, 
gty
, 
i
, 
ags
, 
ldg
, 
exiedp
)

277 
DB_ENV
 *
dbv
;

278 *
me
, **
i
;

279 
DBTYPE
 
gty
;

280 
u_t
 
ags
;

281 
LDG
 *
ldg
;

282 *
exiedp
;

284 
DB
 *
dbp
;

285 
DBT
 
key
, 
rkey
, 
da
, *
adp
, *
wr
;

286 
DBTYPE
 
dbty
;

287 
DB_TXN
 *
xn
, *
txn
;

288 
db_o_t
 
o
, 
deo
;

289 
u_t32_t
 
put_ags
;

290 
ascii_o
, 
checkt
, 
hexkeys
, 
keyag
, 
keys
, 
size
, 
t
, 
rv
;

291 *
subdb
;

293 
put_ags
 = 
	`LF_ISSET
(
LDF_NOOVERWRITE
? 
DB_NOOVERWRITE
 : 0;

294 
	`G
(
doda
) = 0;

296 
subdb
 = 
NULL
;

297 
xn
 = 
txn
 = 
NULL
;

298 
	`memt
(&
key
, 0, (
DBT
));

299 
	`memt
(&
da
, 0, (
DBT
));

300 
	`memt
(&
rkey
, 0, (
DBT
));

302 
y_db
:

303 
dbty
 = 
DB_UNKNOWN
;

304 
keys
 = -1;

305 
hexkeys
 = -1;

306 
keyag
 = -1;

309 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

310 
dbv
->
	`r
(dbv, 
t
, "db_create");

311 
r
;

315 i(
	`LF_ISSET
(
LDF_NOHEADER
)) {

316 
checkt
 = 1;

317 
dbty
 = 
gty
;

319 i(
	`db_ld_rhd
(
dbv
,

320 
dbp
, &
dbty
, &
subdb
, &
checkt
, &
keys
) != 0)

321 
r
;

322 i(
	`G
(
dofe
))

323 
de
;

331 i(
	`db_ld_cfigu
(
dbv
, 
dbp
, 
i
, &
subdb
, &
keyag
))

332 
r
;

334 i(
keys
 != 1) {

335 i(
keyag
 == 1) {

336 
dbp
->
	`r
(dbp, 
EINVAL
, "No keys specified in file");

337 
r
;

340 i(
keyag
 == 0) {

341 
dbp
->
	`r
(dbp, 
EINVAL
, "Keys specified in file");

342 
r
;

345 
keyag
 = 1;

347 i(
dbty
 =
DB_BTREE
 || dbty =
DB_HASH
) {

348 i(
keyag
 == 0)

349 
dbp
->
	`r
(dbp,

350 
EINVAL
, "Btreend Hash must specify keys");

352 
keyag
 = 1;

355 i(
gty
 !
DB_UNKNOWN
) {

357 i(
dbty
 =
DB_RECNO
 || dbty =
DB_QUEUE
)

358 i(
keyag
 !1 && 
gty
 !
DB_RECNO
 &&

359 
gty
 !
DB_QUEUE
) {

360 
dbv
->
	`rx
(dbenv,

362 
r
;

364 
dbty
 = 
gty
;

367 i(
dbty
 =
DB_UNKNOWN
) {

368 
dbv
->
	`rx
(dbenv, "no databaseype specified");

369 
r
;

372 i(
keyag
 == -1)

373 
keyag
 = 0;

383 
hexkeys
 = (
	`G
(
vsi
>3 && 
keyag
 =1 && 
checkt
 == 0);

385 i(
keyag
 =1 && (
dbty
 =
DB_RECNO
 || dbty =
DB_QUEUE
))

386 
ascii_o
 = 1;

388 
ascii_o
 = 0;

391 i(
	`LF_ISSET
(
LDF_PASSWORD
) &&

392 (
t
 = 
dbp
->
	`t_ags
(dbp, 
DB_ENCRYPT
)) != 0) {

393 
dbp
->
	`r
(dbp, 
t
, "DB->set_flags: DB_ENCRYPT");

394 
r
;

398 
S
 
iti
-
ecific
 
b
 
comris
 

 
hash
 
funis
 
he
.

399 
F
 
exame
:

401 i((
t
 = 
dbp
->
	`t_bt_com
(dbp, 
lol_comris_func
)) != 0) {

402 
dbp
->
	`r
(dbp, 
t
, "DB->set_bt_compare");

403 
r
;

405 i((
t
 = 
dbp
->
	`t_h_hash
(dbp, 
lol_hash_func
)) != 0) {

406 
dbp
->
	`r
(dbp, 
t
, "DB->set_h_hash");

407 
r
;

412 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, 
me
, 
subdb
, 
dbty
,

413 
DB_CREATE
 | (
	`TXN_ON
(
dbv
? 
DB_AUTO_COMMIT
 : 0),

414 
	`__db_omode
("rw-rw-rw-"))) != 0) {

415 
dbp
->
	`r
(dbp, 
t
, "DB->ݒ: %s", 
me
);

416 
r
;

418 i(
ldg
->
ive
 != 0) {

419 i((
t
 = 
	`__db_ut_che
(
dbp
, &
ldg
->
che
, &
size
)) != 0)

420 
r
;

421 i(
size
) {

422 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0)

423 
r
;

424 
dbp
 = 
NULL
;

425 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0)

426 
r
;

427 i((
t
 = 
	`db_ld_v_
(&
dbv
, 
ldg
)) != 0)

428 
r
;

429 
y_db
;

434 
adp
 = 
wr
 = &
key
;

435 i(
dbty
 =
DB_RECNO
 || dbty =
DB_QUEUE
) {

436 
key
.
size
 = (
o
);

437 i(
keyag
) {

438 
key
.
da
 = &
deo
;

439 i(
checkt
) {

440 
adp
 = &
rkey
;

441 
key_da
;

444 
key
.
da
 = &
o
;

446 
key_da
: i((
adp
->
da
 = 
	`mloc
ԗdp->
un
 = 1024)=
NULL
) {

447 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

448 
r
;

450 i((
da
.d
	`mloc
(da.
un
 = 1024)=
NULL
) {

451 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

452 
r
;

455 i(
	`TXN_ON
(
dbv
) &&

456 (
t
 = 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
txn
, 0)) != 0)

457 
r
;

460 
o
 = 1; !
	`__db_ut_ued
(); ++recno) {

461 i(!
keyag
) {

462 i(
checkt
) {

463 i(
	`db_ld_dbt_rt
(
dbv
, &
da
))

464 
r
;

466 i(
	`db_ld_dbt_rdump
(
dbv
, &
da
))

467 
r
;

470 i(
checkt
) {

471 i(
	`db_ld_dbt_rt
(
dbv
, 
adp
))

472 
r
;

473 i(
ascii_o
 &&

474 
	`db_ld_dbt_to_o
(
dbv
, 
adp
, &
deo
) != 0)

475 
r
;

477 i(!
	`G
(
doda
&& 
	`db_ld_dbt_rt
(
dbv
, &
da
))

478 
odd_cou
;

480 i(
ascii_o
) {

481 i(
	`db_ld_dbt_eo
(
dbv
, 
adp
, 
hexkeys
))

482 
r
;

484 i(
	`db_ld_dbt_rdump
(
dbv
, 
adp
))

485 
r
;

487 i(!
	`G
(
doda
&& 
	`db_ld_dbt_rdump
(
dbv
, &
da
)) {

488 
odd_cou
: 
dbv
->
	`rx
(dbenv,

490 
r
;

494 i(
	`G
(
doda
))

496 
y
: i(
txn
 !
NULL
)

497 i((
t
 = 
dbv
->
	`txn_beg
(dbv, 
txn
, &
xn
, 0)) != 0)

498 
r
;

499 
t
 = 
dbp
->
	`put
(dbp, 
xn
, 
wr
, &
da
, 
put_ags
)) {

501 i(
xn
 !
NULL
) {

502 i((
t
 =

503 
xn
->
	`comm
(xn, 
DB_TXN_NOSYNC
)) != 0)

504 
r
;

505 
xn
 = 
NULL
;

508 
DB_KEYEXIST
:

509 *
exiedp
 = 1;

510 
dbv
->
	`rx
(dbenv,

512 
me
,

513 !
keyag
 ? 
o
 :ecno * 2 - 1);

515 ()
dbv
->
	`dbt
(&
key
,

516 
checkt
, 0, 
dr
, 
__db__back
, 0);

518 
DB_LOCK_DEADLOCK
:

520 i(
xn
 !
NULL
) {

521 i((
t
 = 
xn
->
	`abt
(ctxn)) != 0)

522 
r
;

523 
xn
 = 
NULL
;

524 
y
;

528 
dbv
->
	`r
(dbv, 
t
, 
NULL
);

529 i(
xn
 !
NULL
) {

530 ()
xn
->
	`abt
(ctxn);

531 
xn
 = 
NULL
;

533 
r
;

535 i(
xn
 !
NULL
) {

536 i((
t
 = 
xn
->
	`abt
(ctxn)) != 0)

537 
r
;

538 
xn
 = 
NULL
;

541 
de
: 
rv
 = 0;

542 
	`DB_ASSERT
(
dbv
, 
xn
 =
NULL
);

543 i(
txn
 !
NULL
 && (
t
 =xn->
	`comm
(txn, 0)) != 0) {

544 
txn
 = 
NULL
;

545 
r
;

549 
r
: 
rv
 = 1;

550 
	`DB_ASSERT
(
dbv
, 
xn
 =
NULL
);

551 i(
txn
 !
NULL
)

552 ()
txn
->
	`abt
(txn);

556 i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 0)) != 0) {

557 
dbv
->
	`r
(dbv, 
t
, "DB->close");

558 
rv
 = 1;

561 i(
	`G
(
hdrbuf
!
NULL
)

562 
	`
(
	`G
(
hdrbuf
));

563 
	`G
(
hdrbuf

NULL
;

565 i(
subdb
 !
NULL
)

566 
	`
(
subdb
);

567 i(
dbty
 !
DB_RECNO
 && dbty !
DB_QUEUE
 && 
key
.
da
 !
NULL
)

568 
	`
(
key
.
da
);

569 i(
rkey
.
da
 !
NULL
)

570 
	`
(
rkey
.
da
);

571 
	`
(
da
.data);

573  (
rv
);

574 
	}
}

581 
	$db_ld_v_
(
dbvp
, 
ldg
)

582 
DB_ENV
 **
dbvp
;

583 
LDG
 *
ldg
;

585 
DB_ENV
 *
dbv
;

586 
t
;

588 i((
t
 = 
	`db_v_
(
dbvp
, 0)) != 0) {

589 
	`rtf
(
dr
,

590 "%s: db_v_: %s\n", 
ldg
->
ogme
, 
	`db_
(
t
));

591  (
t
);

593 
dbv
 = *
dbvp
;

594 
dbv
->
	`t_rfe
(dbv, 
dr
);

595 
dbv
->
	`t_fx
(dbv, 
ldg
->
ogme
);

596 i(
ldg
->
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

597 
ldg
->
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

598 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

599  (
t
);

601 i((
t
 = 
	`db_ld_db_
(
dbv
, 
ldg
->
home
,dg->
che
, &ldg->
ive
)) != 0)

602  (
t
);

603 
dbv
->
p_ive
 = 
ldg
;

606 
	}
}

613 
	$db_ld_db_
(
dbv
, 
home
, 
che
, 
is_ive
)

614 
DB_ENV
 *
dbv
;

615 *
home
;

616 
u_t32_t
 
che
;

617 *
is_ive
;

619 
u_t32_t
 
ags
;

620 
t
;

622 *
is_ive
 = 0;

624 
ags
 = 
DB_USE_ENVIRON
 |

625 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
;

626 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
ags
, 0)) == 0)

628 i(
t
 =
DB_VERSION_MISMATCH
)

629 
r
;

643 
	`LF_CLR
(
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_TXN
);

644 
	`LF_SET
(
DB_CREATE
 | 
DB_PRIVATE
);

645 *
is_ive
 = 1;

646 i((
t
 = 
dbv
->
	`t_chesize
(dbv, 0, 
che
, 1)) != 0) {

647 
dbv
->
	`r
(dbv, 
t
, "set_cachesize");

650 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
ags
, 0)) == 0)

654 
r
: 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

656 
	}
}

658 
	#FLAG
(
me
, 
vue
, 
keywd
, 
ag
) \

659 i(
	`rcmp
(
me
, 
keywd
) == 0) { \

660 *
vue
) { \

662 i((
t
 = 
dbp
->
	`t_ags
(dbp, 
ag
)) != 0) { \

663 
dbp
->
	`r
(dbp, 
t
, "%s: set_flags: %s", \

664 
	`G
(
ogme
), 
me
); \

665 
r
; \

671 
	`db_ld_badnum
(
dbv
); \

672 
r
; \

675 }

	)

676 
	#NUMBER
(
me
, 
vue
, 
keywd
, 
func
, 
t
) \

677 i(
	`rcmp
(
me
, 
keywd
) == 0) { \

678 i((
t
 = 
	`__db_glg
(
dbv
, \

679 
NULL
, 
vue
, 0, 
LONG_MAX
, &
v
)) != 0 || \

680 (
t
 = 
dbp
->
	`func
(dbp, (
t
)
v
)) != 0) \

681 
m
; \

683 }

	)

684 
	#STRING
(
me
, 
vue
, 
keywd
, 
func
) \

685 i(
	`rcmp
(
me
, 
keywd
) == 0) { \

686 i((
t
 = 
dbp
->
	`func
(dbp, 
vue
[0])) != 0) \

687 
m
; \

689 }

	)

696 
	#CONFIGURATION_LIST_COMPARE
 \

697 
	`NUMBER
(
me
, 
vue
, "bt_mkey", 
t_bt_mkey
, 
u_t32_t
); \

698 
	`FLAG
(
me
, 
vue
, "chksum", 
DB_CHKSUM
); \

699 
	`NUMBER
(
me
, 
vue
, "db_ld", 
t_ld
, ); \

700 
	`NUMBER
(
me
, 
vue
, "db_gesize", 
t_gesize
, 
u_t32_t
); \

701 
	`FLAG
(
me
, 
vue
, "duis", 
DB_DUP
); \

702 
	`FLAG
(
me
, 
vue
, "dupst", 
DB_DUPSORT
); \

703 
	`NUMBER
(
me
, 
vue
, "exsize", 
t_q_exsize
, 
u_t32_t
); \

704 
	`NUMBER
(
me
, 
vue
, "h_f", 
t_h_f
, 
u_t32_t
); \

705 
	`NUMBER
(
me
, 
vue
, "h_m", 
t_h_m
, 
u_t32_t
); \

706 
	`NUMBER
(
me
, 
vue
, "_n", 
t__n
, 
u_t32_t
); \

707 
	`STRING
(
me
, 
vue
, "_d", 
t__d
); \

708 
	`FLAG
(
me
, 
vue
, "um", 
DB_RECNUM
); \

709 
	`FLAG
(
me
, 
vue
, "numb", 
DB_RENUMBER
)

	)

716 
	$db_ld_cfigu
(
dbv
, 
dbp
, 
p
, 
subdbp
, 
key
)

717 
DB_ENV
 *
dbv
;

718 
DB
 *
dbp
;

719 **
p
, **
subdbp
;

720 *
key
;

722 
v
;

723 
t
, 
vech
;

724 *
me
, *
vue
;

726 ; (
me
 = *
p
!
NULL
; *--
vue
 = 
vech
, ++clp) {

727 i((
vue
 = 
	`rchr
(
me
, '=')=
NULL
) {

728 
dbp
->
	`rx
(dbp,

732 
vech
 = *
vue
;

733 *
vue
++ = '\0';

735 i(
	`rcmp
(
me
, "database") == 0 ||

736 
	`rcmp
(
me
, "subdatabase") == 0) {

737 i(*
subdbp
 !
NULL
)

738 
	`
(*
subdbp
);

739 i((*
subdbp
 = 
	`rdup
(
vue
)=
NULL
) {

740 
dbp
->
	`r
(dbp, 
ENOMEM
, 
NULL
);

745 i(
	`rcmp
(
me
, "keys") == 0) {

746 i(
	`rcmp
(
vue
, "1") == 0)

747 *
key
 = 1;

748 i(
	`rcmp
(
vue
, "0") == 0)

749 *
key
 = 0;

751 
	`db_ld_badnum
(
dbv
);

757 
CONFIGURATION_LIST_COMPARE
;

759 
dbp
->
	`rx
(dbp,

760 "unknowcommd-lcfiguti keywd \"%s\"", 
me
);

765 
m
:

766 
dbp
->
	`r
(dbp, 
t
, "%s: %s=%s", 
	`G
(
ogme
), 
me
, 
vue
);

767 
r
:  (1);

768 
	}
}

775 
	$db_ld_rhd
(
dbv
, 
dbp
, 
dbtyp
, 
subdbp
, 
check
, 
key
)

776 
DB_ENV
 *
dbv
;

777 
DB
 *
dbp
;

778 
DBTYPE
 *
dbtyp
;

779 **
subdbp
;

780 *
check
, *
key
;

782 
size_t
 
bu
, 
l
, 
t
;

783 
v
;

784 
ch
, 
f
, 
hdr
, 
t
;

785 *
buf
, *
me
, *
p
, *
vue
;

787 *
dbtyp
 = 
DB_UNKNOWN
;

788 *
check
 = 0;

789 
me
 = 
NULL
;

795 
bu
 = 4096;

796 i(
	`G
(
hdrbuf
=
NULL
) {

797 
hdr
 = 0;

798 i((
buf
 = 
	`mloc
(
bu
)=
NULL
)

799 
memr
;

800 
	`G
(
hdrbuf

buf
;

801 
	`G
(
igle
G(
lo
);

803 
hdr
 = 1;

804 
buf
 = 
	`G
(
hdrbuf
);

805 
	`G
(
lo
G(
igle
);

808 
t
 = 0;

809 
f
 = 1;; first = 0) {

810 ++
	`G
(
lo
);

813 
l
 = 0;

814 
buf
 = &
	`G
(
hdrbuf
)[
t
];

815 i(
hdr
 == 0) {

817 i((
ch
 = 
	`gch
()=
EOF
) {

818 i(!
f
 || 
	`
(
d
))

819 
badfmt
;

820 
	`G
(
dofe
) = 1;

827 i(
l
 + 
t
 =
bu
) {

828 
	`G
(
hdrbuf
) =

829 
	`loc
(
	`G
(
hdrbuf
), 
bu
 *= 2);

830 i(
	`G
(
hdrbuf
=
NULL
)

831 
memr
;

832 
buf
 = &
	`G
(
hdrbuf
)[
t
];

835 i(
ch
 == '\n')

838 
buf
[
l
++] = 
ch
;

840 i(
	`G
(
dofe
) == 1)

842 
buf
[
l
++] = '\0';

844 
l
 = 
	`
(
buf
) + 1;

845 
t
 +
l
;

847 i(
me
 !
NULL
) {

848 
	`
(
me
);

849 
me
 = 
NULL
;

852 i((
me
 = 
	`rdup
(
buf
)=
NULL
)

853 
memr
;

854 i((
p
 = 
	`rchr
(
me
, '=')=
NULL
)

855 
badfmt
;

856 *
p
++ = '\0';

858 
vue
 = 
p
--;

860 i(
me
[0] == '\0')

861 
badfmt
;

870 i(
	`rcmp
(
me
, "database") == 0 ||

871 
	`rcmp
(
me
, "subdatabase") == 0) {

872 i((
t
 = 
	`db_ld_cvb
(
dbv
, 
vue
, 
subdbp
)) != 0) {

873 
dbp
->
	`r
(dbp, 
t
, "erroreading dbame");

874 
r
;

880 i(
vue
[0] == '\0')

881 
badfmt
;

883 i(
	`rcmp
(
me
, "HEADER") == 0)

885 i(
	`rcmp
(
me
, "VERSION") == 0) {

890 
	`G
(
vsi

	`oi
(
vue
);

892 i(
	`G
(
vsi
) > 3) {

893 
dbp
->
	`rx
(dbp,

895 
	`G
(
lo
), G(
vsi
));

896 
r
;

900 i(
	`rcmp
(
me
, "format") == 0) {

901 i(
	`rcmp
(
vue
, "bytevalue") == 0) {

902 *
check
 = 0;

905 i(
	`rcmp
(
vue
, "print") == 0) {

906 *
check
 = 1;

909 
badfmt
;

911 i(
	`rcmp
(
me
, "type") == 0) {

912 i(
	`rcmp
(
vue
, "btree") == 0) {

913 *
dbtyp
 = 
DB_BTREE
;

916 i(
	`rcmp
(
vue
, "hash") == 0) {

917 *
dbtyp
 = 
DB_HASH
;

920 i(
	`rcmp
(
vue
, "recno") == 0) {

921 *
dbtyp
 = 
DB_RECNO
;

924 i(
	`rcmp
(
vue
, "queue") == 0) {

925 *
dbtyp
 = 
DB_QUEUE
;

928 
dbp
->
	`rx
(dbp, "l%lu: unknowty", 
	`G
(
lo
));

929 
r
;

931 i(
	`rcmp
(
me
, "keys") == 0) {

932 i(
	`rcmp
(
vue
, "1") == 0)

933 *
key
 = 1;

934 i(
	`rcmp
(
vue
, "0") == 0)

935 *
key
 = 0;

937 
	`db_ld_badnum
(
dbv
);

938 
r
;

943 
CONFIGURATION_LIST_COMPARE
;

945 
dbp
->
	`rx
(dbp,

947 
me
);

948 
r
;

950 
t
 = 0;

953 
m
: 
dbp
->
	`r
(dbp, 
t
, "%s: %s=%s", 
	`G
(
ogme
), 
me
, 
vue
);

954 
t
 = 1;

957 
badfmt
: 
dbp
->
	`rx
(dbp, "l%lu: uxed fm", 
	`G
(
lo
));

958 
t
 = 1;

961 
memr
: 
dbp
->
	`rx
(dbp, "unableollocate memory");

962 
r
: 
t
 = 1;

964 i(
me
 !
NULL
)

965 
	`
(
me
);

966  (
t
);

967 
	}
}

976 
	#DIGITIZE
(
e
, 
v1
, 
v2
) { \

977 
_v1
, 
_v2
; \

978 
_v1
 = (
v1
); \

979 
_v2
 = (
v2
); \

980 i((
_v1
> 'f' || (
_v2
) > 'f') \

981  (
	`db_ld_badd
(
dbv
)); \

982 (
e
) = \

983 ((
_v1
) == '0' ? 0 : \

984 ((
_v1
) == '1' ? 1 : \

985 ((
_v1
) == '2' ? 2 : \

986 ((
_v1
) == '3' ? 3 : \

987 ((
_v1
) == '4' ? 4 : \

988 ((
_v1
) == '5' ? 5 : \

989 ((
_v1
) == '6' ? 6 : \

990 ((
_v1
) == '7' ? 7 : \

991 ((
_v1
) == '8' ? 8 : \

992 ((
_v1
) == '9' ? 9 : \

993 ((
_v1
) == 'a' ? 10 : \

994 ((
_v1
) == 'b' ? 11 : \

995 ((
_v1
) == 'c' ? 12 : \

996 ((
_v1
) == 'd' ? 13 : \

997 ((
_v1
) == 'e' ? 14 : 15))))))))))))))) << 4 | \

998 ((
_v2
) == '0' ? 0 : \

999 ((
_v2
) == '1' ? 1 : \

1000 ((
_v2
) == '2' ? 2 : \

1001 ((
_v2
) == '3' ? 3 : \

1002 ((
_v2
) == '4' ? 4 : \

1003 ((
_v2
) == '5' ? 5 : \

1004 ((
_v2
) == '6' ? 6 : \

1005 ((
_v2
) == '7' ? 7 : \

1006 ((
_v2
) == '8' ? 8 : \

1007 ((
_v2
) == '9' ? 9 : \

1008 ((
_v2
) == 'a' ? 10 : \

1009 ((
_v2
) == 'b' ? 11 : \

1010 ((
_v2
) == 'c' ? 12 : \

1011 ((
_v2
) == 'd' ? 13 : \

1012 ((
_v2
) == 'e' ? 14 : 15))))))))))))))); \

1013 }

	)

1029 
	$db_ld_cvb
(
dbv
, 
r
, 
out
)

1030 
DB_ENV
 *
dbv
;

1031 *
r
, **
out
;

1033 *
outr
;

1042 i((
outr
 = 
	`mloc
(
	`
(
r
+ 1)=
NULL
)

1043  (
ENOMEM
);

1045 *
out
 = 
outr
;

1047  ; *
r
 != '\0'; instr++)

1048 i(*
r
 == '\\') {

1049 i(*++
r
 == '\\') {

1050 *
outr
++ = '\\';

1053 
	`DIGITIZE
(*
outr
++, *
r
, *++instr);

1055 *
outr
++ = *
r
;

1057 *
outr
 = '\0';

1060 
	}
}

1067 
	$db_ld_dbt_rt
(
dbv
, 
db
)

1068 
DB_ENV
 *
dbv
;

1069 
DBT
 *
db
;

1071 
u_t32_t
 
n
;

1072 
u_t8_t
 *
p
;

1073 
c1
, 
c2
, 
es
, 
f
;

1074 
buf
[32];

1076 ++
	`G
(
lo
);

1078 
f
 = 1;

1079 
es
 = 0;

1080 
p
 = 
db
->
da
, 
n
 = 0; (
c1
 = 
	`gch
()) != '\n';) {

1081 i(
c1
 =
EOF
) {

1082 i(
n
 == 0) {

1083 
	`G
(
dofe
G(
doda
) = 1;

1086  (
	`db_ld_badd
(
dbv
));

1088 i(
f
) {

1089 
f
 = 0;

1090 i(
	`G
(
vsi
) > 1) {

1091 i(
c1
 != ' ') {

1092 
buf
[0] = 
c1
;

1093 i(
	`fgs
(
buf
 + 1,

1094 (
buf
- 1, 
d
=
NULL
 ||

1095 
	`rcmp
(
buf
, "DATA=END\n") != 0)

1096  (
	`db_ld_badd
(
dbv
));

1097 
	`G
(
doda
) = 1;

1103 i(
es
) {

1104 i(
c1
 != '\\') {

1105 i((
c2
 = 
	`gch
()=
EOF
)

1106  (
	`db_ld_badd
(
dbv
));

1107 
	`DIGITIZE
(
c1
, c1, 
c2
);

1109 
es
 = 0;

1111 i(
c1
 == '\\') {

1112 
es
 = 1;

1115 i(
n
 >
db
->
un
 - 10) {

1116 
db
->
un
 *= 2;

1117 i((
db
->
da
 =

1118 
	`loc
(
db
->
da
, db->
un
)=
NULL
) {

1119 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

1122 
p
 = (
u_t8_t
 *)
db
->
da
 + 
n
;

1124 ++
n
;

1125 *
p
++ = 
c1
;

1127 
db
->
size
 = 
n
;

1130 
	}
}

1137 
	$db_ld_dbt_rdump
(
dbv
, 
db
)

1138 
DB_ENV
 *
dbv
;

1139 
DBT
 *
db
;

1141 
u_t32_t
 
n
;

1142 
u_t8_t
 *
p
;

1143 
c1
, 
c2
, 
f
;

1144 
buf
[32];

1146 ++
	`G
(
lo
);

1148 
f
 = 1;

1149 
p
 = 
db
->
da
, 
n
 = 0; (
c1
 = 
	`gch
()) != '\n';) {

1150 i(
c1
 =
EOF
) {

1151 i(
n
 == 0) {

1152 
	`G
(
dofe
G(
doda
) = 1;

1155  (
	`db_ld_badd
(
dbv
));

1157 i(
f
) {

1158 
f
 = 0;

1159 i(
	`G
(
vsi
) > 1) {

1160 i(
c1
 != ' ') {

1161 
buf
[0] = 
c1
;

1162 i(
	`fgs
(
buf
 + 1,

1163 (
buf
- 1, 
d
=
NULL
 ||

1164 
	`rcmp
(
buf
, "DATA=END\n") != 0)

1165  (
	`db_ld_badd
(
dbv
));

1166 
	`G
(
doda
) = 1;

1172 i((
c2
 = 
	`gch
()=
EOF
)

1173  (
	`db_ld_badd
(
dbv
));

1174 i(
n
 >
db
->
un
 - 10) {

1175 
db
->
un
 *= 2;

1176 i((
db
->
da
 =

1177 
	`loc
(
db
->
da
, db->
un
)=
NULL
) {

1178 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

1181 
p
 = (
u_t8_t
 *)
db
->
da
 + 
n
;

1183 ++
n
;

1184 
	`DIGITIZE
(*
p
++, 
c1
, 
c2
);

1186 
db
->
size
 = 
n
;

1189 
	}
}

1196 
	$db_ld_dbt_eo
(
dbv
, 
db
, 
ishex
)

1197 
DB_ENV
 *
dbv
;

1198 
DBT
 *
db
;

1199 
ishex
;

1201 
buf
[32], *
p
, *
q
;

1202 
u_lg
 
o
;

1204 ++
	`G
(
lo
);

1206 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
) {

1207 
	`G
(
dofe
G(
doda
) = 1;

1211 i(
	`rcmp
(
buf
, "DATA=END\n") == 0) {

1212 
	`G
(
doda
) = 1;

1216 i(
buf
[0] != ' ')

1217 
r
;

1223 i(
ishex
) {

1224 
p
 = 
q
 = 
buf
 + 1; *q != '\0' && *q != '\n';) {

1232 i(*
q
++ != '3')

1233 
r
;

1234 i(*
q
 == '\n' || *q == '\0')

1235 
r
;

1236 *
p
++ = *
q
++;

1238 *
p
 = '\0';

1241 i(
	`__db_gulg
(
dbv
, 
	`G
(
ogme
), 
buf
 + 1, 0, 0, &
o
))

1242 
r
;

1244 *((
db_o_t
 *)
db
->
da

o
;

1245 
db
->
size
 = (
db_o_t
);

1248 
r
:  (
	`db_ld_badd
(
dbv
));

1249 
	}
}

1252 
	$db_ld_dbt_to_o
(
dbv
, 
dbt
, 

)

1253 
DB_ENV
 *
dbv
;

1254 
DBT
 *
dbt
;

1255 
db_o_t
 *

;

1257 
buf
[32];

1259 
	`memy
(
buf
, 
dbt
->
da
, dbt->
size
);

1260 
buf
[
dbt
->
size
] = '\0';

1262  (
	`__db_gulg
(
dbv
, 
	`G
(
ogme
), 
buf
, 0, 0, (
u_lg
 *)

));

1263 
	}
}

1270 
	$db_ld_badnum
(
dbv
)

1271 
DB_ENV
 *
dbv
;

1273 
dbv
->
	`rx
(dbenv,

1275 
	}
}

1282 
	$db_ld_badd
(
dbv
)

1283 
DB_ENV
 *
dbv
;

1285 
dbv
->
	`rx
(dbenv, "unexpectednd of input data or key/dataair");

1287 
	}
}

1294 
	$db_ld_uge
()

1296 ()
	`rtf
(
dr
, "uge: %%s\n\t%s\n", 
ogme
,

1299 ()
	`rtf
(
dr
, "usage: %s %s\n",

1300 
ogme
, "-rsn | fileid [-h home] [-Password] db_file");

1301  (
EXIT_FAILURE
);

1302 
	}
}

1305 
	$db_ld_vsi_check
()

1307 
v_maj
, 
v_m
, 
v_tch
;

1310 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

1311 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

1312 
	`rtf
(
dr
,

1314 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

1315 
v_maj
, 
v_m
);

1316  (
EXIT_FAILURE
);

1319 
	}
}

	@../build_vxworks/db_printlog/db_printlog.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/f.h
"

15 
	~"dbc/hash.h
"

16 
	~"dbc/log.h
"

17 
	~"dbc/qam.h
"

18 
	~"dbc/txn.h
"

20 #ide
lt


21 cڡ 
	gcyright
[] =

25 
db_og_v__t
 
__P
((
DB_ENV
 *, 
u_t32_t
,

26 (***)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

27 
db_og_v__t_42
 
	`__P
((
DB_ENV
 *,

28 (***)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

29 
db_og_v__t_43
 
	`__P
((
DB_ENV
 *,

30 (***)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

31 
db_og_v__t_45
 
	`__P
((
DB_ENV
 *,

32 (***)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

33 
db_og_l_g
 
	`__P
((*, 
DB_LSN
 *));

34 
db_og_ma
 
	`__P
((, *[]));

35 
db_og_ݒ_p_db
 
	`__P
((
DB_ENV
 *, 
DB
 **, 
DBC
 **));

36 
db_og_t_p_cd
 
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
));

37 
db_og_uge
 
	`__P
(());

38 
db_og_vsi_check
 
	`__P
(());

40 cڡ *
ogme
;

43 
	$db_og
(
gs
)

44 *
gs
;

46 
gc
;

47 **
gv
;

49 
	`__db_ut_g
("db_og", 
gs
, &
gc
, &
gv
);

50  (
	`db_og_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

51 
	}
}

53 
	~<dio.h
>

54 
	#ERROR_RETURN
 
ERROR


	)

57 
	$db_og_ma
(
gc
, 
gv
)

58 
gc
;

59 *
gv
[];

61 
*
ݏrg
;

62 

td
, 
__db_gt_t
;

63 
DB
 *
dbp
;

64 
DBC
 *
dbc
;

65 
DBT
 
da
, 
keydbt
;

66 
DB_ENV
 *
dbv
;

67 
DB_LOGC
 *
logc
;

68 
DB_LSN
 
key
, 
t
, 

, 
v
;

69 
size_t
 
dbsize
;

70 
u_t32_t
 
logcag
, 
wvsi
, 
vsi
;

71 
ch
, 
cmp
, 
exv
, 
nag
, 
rag
, 
t
, 
pag
;

72 (**
db

	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

73 *
home
, *
sswd
;

75 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

76 
ogme
 = 
gv
[0];

78 ++
ogme
;

80 i((
t
 = 
	`db_og_vsi_check
()) != 0)

81  (
t
);

83 
dbp
 = 
NULL
;

84 
dbc
 = 
NULL
;

85 
dbv
 = 
NULL
;

86 
logc
 = 
NULL
;

87 
	`ZERO_LSN
(
t
);

88 
	`ZERO_LSN
(

);

89 
dbsize
 = 0;

90 
exv
 = 
nag
 = 
rag
 = 
pag
 = 0;

91 
db
 = 
NULL
;

92 
home
 = 
sswd
 = 
NULL
;

94 
__db_gt_t
 = 1;

95 (
ch
 = 
	`gt
(
gc
, 
gv
, "b:e:h:NP:rRV")!
EOF
)

96 
ch
) {

99 i(
	`db_og_l_g
(
ݏrg
, &
t
))

100  (
	`db_og_uge
());

104 i(
	`db_og_l_g
(
ݏrg
, &

))

105  (
	`db_og_uge
());

108 
home
 = 
ݏrg
;

111 
nag
 = 1;

114 
sswd
 = 
	`rdup
(
ݏrg
);

115 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

116 i(
sswd
 =
NULL
) {

117 
	`rtf
(
dr
, "%s: strdup: %s\n",

118 
ogme
, 
	`
(
o
));

119  (
EXIT_FAILURE
);

123 
rag
 = 1;

126 
pag
 = 1;

129 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

130  (
EXIT_SUCCESS
);

133  (
	`db_og_uge
());

135 
gc
 -
td
;

136 
gv
 +
td
;

138 i(
gc
 > 0)

139  (
	`db_og_uge
());

142 
	`__db_ut_sig
();

148 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

149 
	`rtf
(
dr
,

150 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

151 
shutdown
;

154 
dbv
->
	`t_rfe
(dbv, 
dr
);

155 
dbv
->
	`t_fx
(dbv, 
ogme
);

157 i(
nag
) {

158 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

159 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

160 
shutdown
;

162 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

163 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

164 
shutdown
;

168 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

169 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

170 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

171 
shutdown
;

178 i((
t
 = 
dbv
->
	`t_p_dich
(dbv, 
db_og_t_p_cd
)) != 0) {

179 
dbv
->
	`r
(dbv, 
t
, "app_dispatch");

180 
shutdown
;

190 i(
pag
) {

191 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

192 
DB_INIT_MPOOL
 | 
DB_USE_ENVIRON
, 0)) != 0 &&

193 (
t
 =
DB_VERSION_MISMATCH
 ||

194 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

195 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0))

197 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

198 
shutdown
;

200 } i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

201 (
t
 =
DB_VERSION_MISMATCH
 ||

202 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

203 
DB_CREATE
 | 
DB_INIT_LOG
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0)) != 0)) {

204 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

205 
shutdown
;

209 i(
pag
) {

210 i((
t
 = 
	`db_og_ݒ_p_db
(
dbv
, &
dbp
, &
dbc
)) != 0)

211 
shutdown
;

212 } i((
t
 = 
dbv
->
	`log_curs
(dbv, &
logc
, 0)) != 0) {

213 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_cursor");

214 
shutdown
;

217 i(
	`IS_ZERO_LSN
(
t
)) {

218 
	`memt
(&
keydbt
, 0, (keydbt));

219 
logcag
 = 
rag
 ? 
DB_PREV
 : 
DB_NEXT
;

221 
key
 = 
t
;

222 
logcag
 = 
DB_SET
;

224 
	`memt
(&
da
, 0, (data));

232 i(
pag
)

233 
vsi
 = 
DB_LOGVERSION
;

235 
vsi
 = 0;

236 
	`ZERO_LSN
(
v
);

239 i(
pag
 &&

240 (
t
 = 
	`db_og_v__t
(
dbv
, 
vsi
, &
db
, &
dbsize
)) != 0) {

241 
dbv
->
	`r
(dbv, 
t
, "callback: initialization");

242 
shutdown
;

244 ; !
	`__db_ut_ued
(); 
logcag
 = 
rag
 ? 
DB_PREV
 : 
DB_NEXT
) {

245 i(
pag
) {

246 
t
 = 
dbc
->
	`g
(dbc, &
keydbt
, &
da
, 
logcag
);

247 i(
t
 == 0)

248 
key
 = ((
REP_CONTROL
 *)
keydbt
.
da
)->
l
;

250 
t
 = 
logc
->
	`g
ogc, &
key
, &
da
, 
logcag
);

251 i(
t
 != 0) {

252 i(
t
 =
DB_NOTFOUND
)

254 
dbv
->
	`r
(dbenv,

255 
t
, 
pag
 ? "DBC->get" : "DB_LOGC->get");

256 
shutdown
;

262 i(!
	`IS_ZERO_LSN
(

)) {

263 
cmp
 = 
	`LOG_COMPARE
(&
key
, &

);

264 i((
rag
 && 
cmp
 < 0) || (!rflag && cmp > 0))

267 i(!
pag
 && 
key
.
fe
 !
v
.file) {

273 i((
t
 = 
logc
->
	`vsi
ogc, &
wvsi
, 0)) != 0) {

274 
dbv
->
	`r
(dbv, 
t
, "DB_LOGC->version");

275 
shutdown
;

277 i(
vsi
 !
wvsi
) {

278 
vsi
 = 
wvsi
;

279 i((
t
 = 
	`db_og_v__t
(
dbv
, 
vsi
,

280 &
db
, &
dbsize
)) != 0) {

281 
dbv
->
	`r
(dbv, 
t
,

283 
shutdown
;

288 
t
 = 
	`__db_dich
(
dbv
,

289 
db
, 
dbsize
, &
da
, &
key
, 
DB_TXN_PRINT
, 
NULL
);

295 ()
	`fush
(
dout
);

297 i(
t
 != 0) {

298 
dbv
->
	`r
(dbv, 
t
, "tx: dispatch");

299 
shutdown
;

304 
shutdown
: 
exv
 = 1;

306 i(
logc
 !
NULL
 && (
t
 =ogc->
	`o
(logc, 0)) != 0)

307 
exv
 = 1;

309 i(
dbc
 !
NULL
 && (
t
 = dbc->
	`o
(dbc)) != 0)

310 
exv
 = 1;

312 i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 0)) != 0)

313 
exv
 = 1;

320 i(
db
 !
NULL
)

321 
	`__os_
(
dbv
, 
db
);

322 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

323 
exv
 = 1;

324 
	`rtf
(
dr
,

325 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

328 i(
sswd
 !
NULL
)

329 
	`
(
sswd
);

332 
	`__db_ut_signd
();

334  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

335 
	}
}

341 
	$db_og_v__t
(
dbv
, 
vsi
, 
dbp
, 
dbsiz
)

342 
DB_ENV
 *
dbv
;

343 
u_t32_t
 
vsi
;

344 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

345 
size_t
 *
dbsiz
;

347 
t
;

354 i((
t
 = 
	`db_og_v__t_45
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

355  (
t
);

357 
vsi
) {

365 
DB_LOGVERSION_46
:

366 
DB_LOGVERSION_45
:

367 
DB_LOGVERSION_44
:

368 
t
 = 0;

370 
DB_LOGVERSION_43
:

371 
t
 = 
	`db_og_v__t_43
(
dbv
, 
dbp
, 
dbsiz
);

373 
DB_LOGVERSION_42
:

374 
t
 = 
	`db_og_v__t_42
(
dbv
, 
dbp
, 
dbsiz
);

377 
	`__db_rx
(
dbv
, "Unknowvsi %lu", (
u_lg
)
vsi
);

378 
t
 = 
EINVAL
;

381  (
t
);

382 
	}
}

385 
	$db_og_v__t_42
(
dbv
, 
dbp
, 
dbsiz
)

386 
DB_ENV
 *
dbv
;

387 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

388 
size_t
 *
dbsiz
;

390 
t
;

392 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

393 
__db_lk_42_t
, 
DB___db_lk_42
)) != 0)

394 
r
;

395 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

396 
__db_pg_loc_42_t
, 
DB___db_pg_loc_42
)) != 0)

397 
r
;

398 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

399 
__db_pg__42_t
, 
DB___db_pg__42
)) != 0)

400 
r
;

401 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

402 
__db_pg_da_42_t
, 
DB___db_pg_da_42
)) != 0)

403 
r
;

404 #i
HAVE_HASH


405 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

406 
__ham_magroup_42_t
, 
DB___ham_magroup_42
)) != 0)

407 
r
;

408 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

409 
__ham_grouoc_42_t
, 
DB___ham_grouoc_42
)) != 0)

410 
r
;

412 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

413 
__txn_ckp_42_t
, 
DB___txn_ckp_42
)) != 0)

414 
r
;

415 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

416 
__txn_g_42_t
, 
DB___txn_g_42
)) != 0)

417 
r
;

418 
r
:

419  (
t
);

420 
	}
}

423 
	$db_og_v__t_43
(
dbv
, 
dbp
, 
dbsiz
)

424 
DB_ENV
 *
dbv
;

425 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

426 
size_t
 *
dbsiz
;

428 
t
;

430 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

431 
__bam_lk_43_t
, 
DB___bam_lk_43
)) != 0)

432 
r
;

436 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

437 
__txn_g_42_t
, 
DB___txn_g_42
)) != 0)

438 
r
;

439 
r
:

440  (
t
);

441 
	}
}

448 
	$db_og_v__t_45
(
dbv
, 
dbp
, 
dbsiz
)

449 
DB_ENV
 *
dbv
;

450 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

451 
size_t
 *
dbsiz
;

453 
t
;

455 i((
t
 = 
	`__bam__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

456 
r
;

457 i((
t
 = 
	`__d__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

458 
r
;

459 i((
t
 = 
	`__db__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

460 
r
;

461 i((
t
 = 
	`__dbg__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

462 
r
;

463 i((
t
 = 
	`__f__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

464 
r
;

465 #ifde
HAVE_HASH


466 i((
t
 = 
	`__ham__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

467 
r
;

469 #ifde
HAVE_QUEUE


470 i((
t
 = 
	`__qam__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

471 
r
;

473 i((
t
 = 
	`__txn__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

474 
r
;

475 
r
:

476  (
t
);

477 
	}
}

480 
	$db_og_uge
()

482 
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

484  (
EXIT_FAILURE
);

485 
	}
}

488 
	$db_og_vsi_check
()

490 
v_maj
, 
v_m
, 
v_tch
;

493 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

494 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

495 
	`rtf
(
dr
,

497 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

498 
v_maj
, 
v_m
);

499  (
EXIT_FAILURE
);

502 
	}
}

506 
	$db_og_t_p_cd
(
dbv
, 
dbt
, 
lp
, 

)

507 
DB_ENV
 *
dbv
;

508 
DBT
 *
dbt
;

509 
DB_LSN
 *
lp
;

510 
db_cs
 

;

512 
ch
;

513 
u_t32_t
 
i
, 
y
;

515 
	`DB_ASSERT
(
dbv
, 

 =
DB_TXN_PRINT
);

517 
	`COMPQUIET
(
dbv
, 
NULL
);

518 
	`COMPQUIET
(

, 
DB_TXN_PRINT
);

524 
	`memy
(&
y
, 
dbt
->
da
, (rectype));

531 
	`tf
("[%lu][%lu]application specificecord:ec: %lu\n",

532 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
, (u_lg)
y
);

533 
	`tf
("\tdata: ");

534 
i
 = 0; i < 
dbt
->
size
; i++) {

535 
ch
 = ((
u_t8_t
 *)
dbt
->
da
)[
i
];

536 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

538 
	`tf
("\n\n");

541 
	}
}

544 
	$db_og_ݒ_p_db
(
dbv
, 
db
, 
db
)

545 
DB_ENV
 *
dbv
;

546 
DB
 **
db
;

547 
DBC
 **
db
;

549 
t
;

551 
DB
 *
dbp
;

552 *
db
 = 
NULL
;

553 *
db
 = 
NULL
;

555 i((
t
 = 
	`db_
(
db
, 
dbv
, 0)) != 0) {

556 
dbv
->
	`r
(dbv, 
t
, "db_create");

557  (
t
);

560 
dbp
 = *
db
;

561 i((
t
 =

562 
dbp
->
	`ݒ
(dbp, 
NULL
, 
REPDBNAME
, NULL, 
DB_BTREE
, 0, 0)) != 0) {

563 
dbv
->
	`r
(dbv, 
t
, "DB->open");

564 
r
;

567 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, 
db
, 0)) != 0) {

568 
dbv
->
	`r
(dbv, 
t
, "DB->cursor");

569 
r
;

574 
r
: i(*
db
 !
NULL
)

575 ()(*
db
)->
	`o
(*dbpp, 0);

576  (
t
);

577 
	}
}

584 
	$db_og_l_g
(
g
, 
lp
)

585 *
g
;

586 
DB_LSN
 *
lp
;

588 
u_lg
 
uv
;

589 *
p
;

594 i((
p
 = 
	`rchr
(
g
, '/')=
NULL
)

596 *
p
 = '\0';

598 i(
	`__db_gulg
(
NULL
, 
ogme
, 
g
, 0, 
UINT32_MAX
, &
uv
))

600 
lp
->
fe
 = 
uv
;

601 i(
	`__db_gulg
(
NULL
, 
ogme
, 
p
 + 1, 0, 
UINT32_MAX
, &
uv
))

603 
lp
->
offt
 = 
uv
;

605 
	}
}

	@../build_vxworks/db_recover/db_recover.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
db_cov_edback
 
__P
((
DB_ENV
 *, , ));

19 
db_cov_ma
 
__P
((, *[]));

20 
db_cov_ad_timeamp
 
__P
((*, 
time_t
 *));

21 
db_cov_uge
 
__P
(());

22 
db_cov_vsi_check
 
__P
(());

24 cڡ *
	gogme
;

25 
	gwle_eded
;

28 
	$db_cov
(
gs
)

29 *
gs
;

31 
gc
;

32 **
gv
;

34 
	`__db_ut_g
("db_cov", 
gs
, &
gc
, &
gv
);

35  (
	`db_cov_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

36 
	}
}

38 
	~<dio.h
>

39 
	#ERROR_RETURN
 
ERROR


	)

42 
	$db_cov_ma
(
gc
, 
gv
)

43 
gc
;

44 *
gv
[];

46 
*
ݏrg
;

47 

td
, 
__db_gt_t
;

48 
DB_ENV
 *
dbv
;

49 
time_t
 
timeamp
;

50 
u_t32_t
 
ags
;

51 
ch
, 
exv
, 
l_cov
, 
t
, 
_v
, 
t_edback
, 
vbo
;

52 *
home
, *
sswd
;

54 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

55 
ogme
 = 
gv
[0];

57 ++
ogme
;

59 i((
t
 = 
	`db_cov_vsi_check
()) != 0)

60  (
t
);

62 
home
 = 
sswd
 = 
NULL
;

63 
timeamp
 = 0;

64 
exv
 = 
l_cov
 = 
_v
 = 
t_edback
 = 
vbo
 = 0;

65 
__db_gt_t
 = 1;

66 (
ch
 = 
	`gt
(
gc
, 
gv
, "fh:P:t:Vv")!
EOF
)

67 
ch
) {

69 
l_cov
 = 1;

72 
_v
 = 1;

75 
t_edback
 = 1;

78 
home
 = 
ݏrg
;

81 
sswd
 = 
	`rdup
(
ݏrg
);

82 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

83 i(
sswd
 =
NULL
) {

84 
	`rtf
(
dr
, "%s: strdup: %s\n",

85 
ogme
, 
	`
(
o
));

86  (
EXIT_FAILURE
);

90 i((
t
 = 
	`db_cov_ad_timeamp
(
ݏrg
, &
timeamp
)) != 0)

91  (
t
);

94 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

95  (
EXIT_SUCCESS
);

97 
vbo
 = 1;

101  (
	`db_cov_uge
());

103 
gc
 -
td
;

104 
gv
 +
td
;

106 i(
gc
 != 0)

107  (
	`db_cov_uge
());

110 
	`__db_ut_sig
();

116 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

117 
	`rtf
(
dr
,

118 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

119  (
EXIT_FAILURE
);

121 
dbv
->
	`t_rfe
(dbv, 
dr
);

122 
dbv
->
	`t_fx
(dbv, 
ogme
);

123 i(
t_edback
)

124 ()
dbv
->
	`t_edback
(dbv, 
db_cov_edback
);

125 i(
vbo
)

126 ()
dbv
->
	`t_vbo
(dbv, 
DB_VERB_RECOVERY
, 1);

127 i(
timeamp
 &&

128 (
t
 = 
dbv
->
	`t_tx_timeamp
(dbv, &
timeamp
)) != 0) {

129 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->set_timestamp");

130 
shutdown
;

133 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

134 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

135 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

136 
shutdown
;

151 
ags
 = 0;

152 
	`LF_SET
(
DB_CREATE
 | 
DB_INIT_LOG
 |

153 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
 | 
DB_USE_ENVIRON
);

154 
	`LF_SET
(
l_cov
 ? 
DB_RECOVER_FATAL
 : 
DB_RECOVER
);

155 
	`LF_SET
(
_v
 ? 
DB_INIT_LOCK
 : 
DB_PRIVATE
);

156 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
ags
, 0)) != 0) {

157 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

158 
shutdown
;

162 
shutdown
: 
exv
 = 1;

166 i(
wle_eded
)

167 
	`tf
("\n");

170 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

171 
exv
 = 1;

172 
	`rtf
(
dr
,

173 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

175 i(
sswd
 !
NULL
)

176 
	`
(
sswd
);

179 
	`__db_ut_signd
();

181  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

182 
	}
}

189 
	$db_cov_edback
(
dbv
, 
code
, 
r
)

190 
DB_ENV
 *
dbv
;

191 
code
;

192 
r
;

194 
	`COMPQUIET
(
dbv
, 
NULL
);

196 i(
code
 =
DB_RECOVER
) {

197 
	`tf
("\ecovy %d%% come", 
r
);

198 ()
	`fush
(
dout
);

199 
wle_eded
 = 1;

201 
	}
}

203 
	#ATOI2
(

(r)[0] - '0'* 10 + (r)[1] - '0'); (+2;

	)

237 
	$db_cov_ad_timeamp
(
g
, 
tim
)

238 *
g
;

239 
time_t
 *
tim
;

241 
tm
 *
t
;

242 
time_t
 
now
;

243 
yrt
;

244 *
p
;

246 ()
	`time
(&
now
);

247 i((
t
 = 
	`loime
(&
now
)=
NULL
) {

248 
	`rtf
(
dr
,

249 "%s:oime: %s\n", 
ogme
, 
	`
(
o
));

250  (
EXIT_FAILURE
);

253 i((
p
 = 
	`rchr
(
g
, '.')=
NULL
)

254 
t
->
tm_c
 = 0;

256 i(
	`
(
p
 + 1) != 2)

257 

;

258 *
p
++ = '\0';

259 
t
->
tm_c
 = 
	`ATOI2
(
p
);

262 
yrt
 = 0;

263 
	`
(
g
)) {

265 
t
->
tm_yr
 = 
	`ATOI2
(
g
);

266 
t
->
tm_yr
 *= 100;

267 
yrt
 = 1;

270 i(
yrt
) {

271 
yrt
 = 
	`ATOI2
(
g
);

272 
t
->
tm_yr
 +
yrt
;

274 
yrt
 = 
	`ATOI2
(
g
);

275 i(
yrt
 < 69)

276 
t
->
tm_yr
 = 
yrt
 + 2000;

278 
t
->
tm_yr
 = 
yrt
 + 1900;

280 
t
->
tm_yr
 -= 1900;

283 
t
->
tm_m
 = 
	`ATOI2
(
g
);

284 --
t
->
tm_m
;

285 
t
->
tm_mday
 = 
	`ATOI2
(
g
);

286 
t
->
tm_hour
 = 
	`ATOI2
(
g
);

287 
t
->
tm_m
 = 
	`ATOI2
(
g
);

290 

;

293 
t
->
tm_isd
 = -1;

295 *
tim
 = 
	`mktime
(
t
);

296 i(*
tim
 == -1) {

297 

: 
	`rtf
(
dr
,

299 
ogme
);

300  (
EXIT_FAILURE
);

303 
	}
}

306 
	$db_cov_uge
()

308 ()
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

310  (
EXIT_FAILURE
);

311 
	}
}

314 
	$db_cov_vsi_check
()

316 
v_maj
, 
v_m
, 
v_tch
;

319 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

320 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

321 
	`rtf
(
dr
,

323 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

324 
v_maj
, 
v_m
);

325  (
EXIT_FAILURE
);

328 
	}
}

	@../build_vxworks/db_stat/db_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 um { 
	mT_NOTSET
, 
	mT_DB
,

19 
	mT_ENV
, 
	mT_LOCK
, 
	mT_LOG
, 
	mT_MPOOL
, 
	mT_MUTEX
, 
	mT_REP
, 
	mT_TXN
 } 
	t_t
;

21 
db__db_
 
__P
((
DB_ENV
 *, *, 
_t
, 
u_t32_t
, *));

22 
db__ma
 
__P
((, *[]));

23 
db__uge
 
__P
(());

24 
db__vsi_check
 
__P
(());

26 cڡ *
	gogme
;

29 
	$db_
(
gs
)

30 *
gs
;

32 
gc
;

33 **
gv
;

35 
	`__db_ut_g
("db_", 
gs
, &
gc
, &
gv
);

36  (
	`db__ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

37 
	}
}

39 
	~<dio.h
>

40 
	#ERROR_RETURN
 
ERROR


	)

43 
	$db__ma
(
gc
, 
gv
)

44 
gc
;

45 *
gv
[];

47 
*
ݏrg
;

48 

td
, 
__db_gt_t
;

49 
DB_ENV
 *
dbv
;

50 
DB
 *
dbp
;

51 
_t
 
y
;

52 
u_t32_t
 
che
, 
ags
;

53 
ch
, 
exv
;

54 
nag
, 
ive
, 
size
, 
t
;

55 *
db
, *
home
, *
p
, *
sswd
, *
subdb
;

57 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

58 
ogme
 = 
gv
[0];

60 ++
ogme
;

62 i((
t
 = 
	`db__vsi_check
()) != 0)

63  (
t
);

65 
dbv
 = 
NULL
;

66 
dbp
 = 
NULL
;

67 
y
 = 
T_NOTSET
;

68 
che
 = 
MEGABYTE
;

69 
exv
 = 
ags
 = 
nag
 = 
ive
 = 0;

70 
db
 = 
home
 = 
sswd
 = 
subdb
 = 
NULL
;

72 
__db_gt_t
 = 1;

73 (
ch
 = 
	`gt
(
gc
,

74 
gv
, "C:cd:Eefgh:L:lM:mNP:R:rs:tVxX:Z")!
EOF
)

75 
ch
) {

77 i(
y
 !
T_NOTSET
 &&ty !
T_LOCK
)

78 
gcombo
;

79 
y
 = 
T_LOCK
;

80 i(
ch
 != 'c')

81 
p
 = 
ݏrg
; *p; ++p)

82 *
p
) {

84 
	`LF_SET
(
DB_STAT_ALL
);

87 
	`LF_SET
(
DB_STAT_LOCK_CONF
);

90 
	`LF_SET
(
DB_STAT_LOCK_LOCKERS
);

95 
	`LF_SET
(
DB_STAT_LOCK_OBJECTS
);

98 
	`LF_SET
(
DB_STAT_LOCK_PARAMS
);

101  (
	`db__uge
());

105 i(
y
 !
T_NOTSET
 &&ty !
T_DB
)

106 
gcombo
;

107 
y
 = 
T_DB
;

108 
db
 = 
ݏrg
;

111 i(
y
 !
T_NOTSET
 &&ty !
T_ENV
)

112 
gcombo
;

113 
y
 = 
T_ENV
;

114 
	`LF_SET
(
DB_STAT_SUBSYSTEM
);

115 i(
ch
 == 'E')

116 
	`LF_SET
(
DB_STAT_ALL
);

119 i(
y
 !
T_NOTSET
 &&ty !
T_DB
)

120 
gcombo
;

121 
y
 = 
T_DB
;

122 
	`LF_SET
(
DB_FAST_STAT
);

125 
home
 = 
ݏrg
;

128 i(
y
 !
T_NOTSET
 &&ty !
T_LOG
)

129 
gcombo
;

130 
y
 = 
T_LOG
;

131 i(
ch
 != 'l')

132 
p
 = 
ݏrg
; *p; ++p)

133 *
p
) {

135 
	`LF_SET
(
DB_STAT_ALL
);

138  (
	`db__uge
());

142 i(
y
 !
T_NOTSET
 &&ty !
T_MPOOL
)

143 
gcombo
;

144 
y
 = 
T_MPOOL
;

145 i(
ch
 != 'm')

146 
p
 = 
ݏrg
; *p; ++p)

147 *
p
) {

149 
	`LF_SET
(
DB_STAT_ALL
);

152 
	`LF_SET
(
DB_STAT_MEMP_HASH
);

157  (
	`db__uge
());

161 
nag
 = 1;

164 
sswd
 = 
	`rdup
(
ݏrg
);

165 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

166 i(
sswd
 =
NULL
) {

167 
	`rtf
(
dr
, "%s: strdup: %s\n",

168 
ogme
, 
	`
(
o
));

169  (
EXIT_FAILURE
);

173 i(
y
 !
T_NOTSET
 &&ty !
T_REP
)

174 
gcombo
;

175 
y
 = 
T_REP
;

176 i(
ch
 != 'r')

177 
p
 = 
ݏrg
; *p; ++p)

178 *
p
) {

180 
	`LF_SET
(
DB_STAT_ALL
);

183  (
	`db__uge
());

187 i(
y
 !
T_NOTSET
 &&ty !
T_DB
)

188 
gcombo
;

189 
y
 = 
T_DB
;

190 
subdb
 = 
ݏrg
;

193 i(
y
 !
T_NOTSET
) {

194 
gcombo
: 
	`rtf
(
dr
,

196 
ogme
);

197  (
	`db__uge
());

199 
y
 = 
T_TXN
;

202 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

203  (
EXIT_SUCCESS
);

205 i(
y
 !
T_NOTSET
 &&ty !
T_MUTEX
)

206 
gcombo
;

207 
y
 = 
T_MUTEX
;

208 i(
ch
 != 'x')

209 
p
 = 
ݏrg
; *p; ++p)

210 *
p
) {

212 
	`LF_SET
(
DB_STAT_ALL
);

215  (
	`db__uge
());

219 
	`LF_SET
(
DB_STAT_CLEAR
);

223  (
	`db__uge
());

225 
gc
 -
td
;

226 
gv
 +
td
;

228 
y
) {

229 
T_DB
:

230 i(
db
 =
NULL
)

231  (
	`db__uge
());

233 
T_ENV
:

234 
T_LOCK
:

235 
T_LOG
:

236 
T_MPOOL
:

237 
T_MUTEX
:

238 
T_REP
:

239 
T_TXN
:

241 
T_NOTSET
:

242  (
	`db__uge
());

246 
	`__db_ut_sig
();

252 
y
: i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

253 
	`rtf
(
dr
,

254 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

255 
r
;

258 
dbv
->
	`t_rfe
(dbv, 
dr
);

259 
dbv
->
	`t_fx
(dbv, 
ogme
);

261 i(
nag
) {

262 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

263 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

264 
r
;

266 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

267 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

268 
r
;

272 i(
sswd
 !
NULL
 &&

273 (
t
 = 
dbv
->
	`t_y
(dbv, 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

274 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

275 
r
;

279 i(
	`db__db_
(
dbv
, 
home
, 
y
, 
che
, &
ive
) != 0)

280 
r
;

282 
y
) {

283 
T_DB
:

285 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

286 
dbv
->
	`r
(dbv, 
t
, "db_create");

287 
r
;

299 
dbv
->
	`t_rfe
(dbv, 
NULL
);

300 
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, 
db
, 
subdb
, 
DB_UNKNOWN
, 0, 0);

301 
dbv
->
	`t_rfe
(dbv, 
dr
);

302 i(
t
 !0 && (
dbp
->
	`ݒ
(

303 
dbp
, 
NULL
, 
db
, 
subdb
, 
DB_UNKNOWN
, 
DB_RDONLY
, 0)) != 0) {

304 
dbv
->
	`r
(dbv, 
t
, "DB->ݒ: %s", 
db
);

305 
r
;

309 i(
ive
) {

310 i((
t
 = 
	`__db_ut_che
(
dbp
, &
che
, &
size
)) != 0)

311 
r
;

312 i(
size
) {

313 ()
dbp
->
	`o
(dbp, 
DB_NOSYNC
);

314 
dbp
 = 
NULL
;

316 ()
dbv
->
	`o
(dbenv, 0);

317 
dbv
 = 
NULL
;

318 
y
;

322 i(
dbp
->
	`_t
(dbp, 
ags
))

323 
r
;

325 
T_ENV
:

326 i(
dbv
->
	`_t
(dbv, 
ags
))

327 
r
;

329 
T_LOCK
:

330 i(
dbv
->
	`lock__t
(dbv, 
ags
))

331 
r
;

333 
T_LOG
:

334 i(
dbv
->
	`log__t
(dbv, 
ags
))

335 
r
;

337 
T_MPOOL
:

338 i(
dbv
->
	`memp__t
(dbv, 
ags
))

339 
r
;

341 
T_MUTEX
:

342 i(
dbv
->
	`mux__t
(dbv, 
ags
))

343 
r
;

345 
T_REP
:

346 #ifde
HAVE_REPLICATION_THREADS


347 i(
dbv
->
	`pmgr__t
(dbv, 
ags
))

348 
r
;

350 i(
dbv
->
	`p__t
(dbv, 
ags
))

351 
r
;

353 
T_TXN
:

354 i(
dbv
->
	`txn__t
(dbv, 
ags
))

355 
r
;

357 
T_NOTSET
:

358 
dbv
->
	`rx
(dbenv, "Unknown statistics flag");

359 
r
;

363 
r
: 
exv
 = 1;

365 i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 
DB_NOSYNC
)) != 0) {

366 
exv
 = 1;

367 
dbv
->
	`r
(dbv, 
t
, "close");

369 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

370 
exv
 = 1;

371 
	`rtf
(
dr
,

372 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

375 i(
sswd
 !
NULL
)

376 
	`
(
sswd
);

379 
	`__db_ut_signd
();

381  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

382 
	}
}

389 
	$db__db_
(
dbv
, 
home
, 
y
, 
che
, 
is_ive
)

390 
DB_ENV
 *
dbv
;

391 *
home
;

392 
_t
 
y
;

393 
u_t32_t
 
che
;

394 *
is_ive
;

396 
u_t32_t
 
oags
;

397 
t
;

409 *
is_ive
 = 0;

410 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) == 0)

412 i(
t
 =
DB_VERSION_MISMATCH
)

413 
r
;

414 i(
y
 !
T_DB
 &&ty !
T_LOG
) {

415 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open%s%s",

416 
home
 =
NULL
 ? "" : ": ", home == NULL ? "" : home);

430 i((
t
 = 
dbv
->
	`t_chesize
(dbv, 0, 
che
, 1)) != 0) {

431 
dbv
->
	`r
(dbv, 
t
, "set_cachesize");

434 *
is_ive
 = 1;

435 
oags
 = 
DB_CREATE
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
;

436 i(
y
 =
T_DB
)

437 
oags
 |
DB_INIT_MPOOL
;

438 i(
y
 =
T_LOG
)

439 
oags
 |
DB_INIT_LOG
;

440 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
oags
, 0)) == 0)

444 
r
: 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

446 
	}
}

449 
	$db__uge
()

451 
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

453 
	`rtf
(
dr
, "uge: %%s\n\t%s\n", 
ogme
,

456  (
EXIT_FAILURE
);

457 
	}
}

460 
	$db__vsi_check
()

462 
v_maj
, 
v_m
, 
v_tch
;

465 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

466 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

467 
	`rtf
(
dr
,

469 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

470 
v_maj
, 
v_m
);

471  (
EXIT_FAILURE
);

474 
	}
}

	@../build_vxworks/db_upgrade/db_upgrade.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
db_upgde_ma
 
__P
((, *[]));

19 
db_upgde_uge
 
__P
(());

20 
db_upgde_vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$db_upgde
(
gs
)

26 *
gs
;

28 
gc
;

29 **
gv
;

31 
	`__db_ut_g
("db_upgde", 
gs
, &
gc
, &
gv
);

32  (
	`db_upgde_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

33 
	}
}

35 
	~<dio.h
>

36 
	#ERROR_RETURN
 
ERROR


	)

39 
	$db_upgde_ma
(
gc
, 
gv
)

40 
gc
;

41 *
gv
[];

43 
*
ݏrg
;

44 

td
, 
__db_gt_t
;

45 
DB
 *
dbp
;

46 
DB_ENV
 *
dbv
;

47 
u_t32_t
 
ags
;

48 
ch
, 
exv
, 
nag
, 
t
, 
t_t
, 
vbo
;

49 *
home
, *
sswd
;

51 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

52 
ogme
 = 
gv
[0];

54 ++
ogme
;

56 i((
t
 = 
	`db_upgde_vsi_check
()) != 0)

57  (
t
);

59 
dbv
 = 
NULL
;

60 
ags
 = 
nag
 = 
vbo
 = 0;

61 
exv
 = 0;

62 
home
 = 
sswd
 = 
NULL
;

63 
__db_gt_t
 = 1;

64 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:NP:sVv")!
EOF
)

65 
ch
) {

67 
home
 = 
ݏrg
;

70 
nag
 = 1;

73 
sswd
 = 
	`rdup
(
ݏrg
);

74 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

75 i(
sswd
 =
NULL
) {

76 
	`rtf
(
dr
, "%s: strdup: %s\n",

77 
ogme
, 
	`
(
o
));

78  (
EXIT_FAILURE
);

82 
	`LF_SET
(
DB_DUPSORT
);

85 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

86  (
EXIT_SUCCESS
);

88 
vbo
 = 1;

92  (
	`db_upgde_uge
());

94 
gc
 -
td
;

95 
gv
 +
td
;

97 i(
gc
 <= 0)

98  (
	`db_upgde_uge
());

101 
	`__db_ut_sig
();

107 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

108 
	`rtf
(
dr
, "%s: db_env_create: %s\n",

109 
ogme
, 
	`db_
(
t
));

110 
shutdown
;

113 
dbv
->
	`t_rfe
(dbv, 
dr
);

114 
dbv
->
	`t_fx
(dbv, 
ogme
);

116 i(
nag
) {

117 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

118 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

119 
shutdown
;

121 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

122 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

123 
shutdown
;

127 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

128 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

129 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

130 
shutdown
;

137 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

138 (
t
 =
DB_VERSION_MISMATCH
 ||

139 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

140 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
,

142 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

143 
shutdown
;

146 ; !
	`__db_ut_ued
(&& 
gv
[0] !
NULL
; ++argv) {

147 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

148 
	`rtf
(
dr
,

149 "%s: db_: %s\n", 
ogme
, 
	`db_
(
t
));

150 
shutdown
;

152 
dbp
->
	`t_rfe
(dbp, 
dr
);

153 
dbp
->
	`t_fx
(dbp, 
ogme
);

154 i((
t
 = 
dbp
->
	`upgde
(dbp, 
gv
[0], 
ags
)) != 0)

155 
dbp
->
	`r
(dbp, 
t
, "DB->upgde: %s", 
gv
[0]);

156 i((
t_t
 = 
dbp
->
	`o
(dbp, 0)!0 && 
t
 == 0) {

157 
dbv
->
	`r
(dbv, 
t
, "DB->o: %s", 
gv
[0]);

158 
t
 = 
t_t
;

160 i(
t
 != 0)

161 
shutdown
;

166 i(
vbo
)

167 
	`tf
("%s: %s upgraded successfully\n",

168 
ogme
, 
gv
[0]);

172 
shutdown
: 
exv
 = 1;

174 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

175 
exv
 = 1;

176 
	`rtf
(
dr
,

177 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

180 i(
sswd
 !
NULL
)

181 
	`
(
sswd
);

184 
	`__db_ut_signd
();

186  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

187 
	}
}

190 
	$db_upgde_uge
()

192 
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

194  (
EXIT_FAILURE
);

195 
	}
}

198 
	$db_upgde_vsi_check
()

200 
v_maj
, 
v_m
, 
v_tch
;

203 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

204 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

205 
	`rtf
(
dr
,

207 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

208 
v_maj
, 
v_m
);

209  (
EXIT_FAILURE
);

212 
	}
}

	@../build_vxworks/db_verify/db_verify.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
db_vify_ma
 
__P
((, *[]));

19 
db_vify_uge
 
__P
(());

20 
db_vify_vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$db_vify
(
gs
)

26 *
gs
;

28 
gc
;

29 **
gv
;

31 
	`__db_ut_g
("db_vify", 
gs
, &
gc
, &
gv
);

32  (
	`db_vify_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

33 
	}
}

35 
	~<dio.h
>

36 
	#ERROR_RETURN
 
ERROR


	)

39 
	$db_vify_ma
(
gc
, 
gv
)

40 
gc
;

41 *
gv
[];

43 
*
ݏrg
;

44 

td
, 
__db_gt_t
;

45 
DB
 *
dbp
, *
dbp1
;

46 
DB_ENV
 *
dbv
;

47 
u_t32_t
 
ags
, 
che
;

48 
ch
, 
exv
, 
nag
, 
ive
;

49 
qut
, 
size
, 
t
;

50 *
home
, *
sswd
;

52 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

53 
ogme
 = 
gv
[0];

55 ++
ogme
;

57 i((
t
 = 
	`db_vify_vsi_check
()) != 0)

58  (
t
);

60 
dbv
 = 
NULL
;

61 
dbp
 = 
NULL
;

62 
che
 = 
MEGABYTE
;

63 
exv
 = 
nag
 = 
qut
 = 0;

64 
ags
 = 0;

65 
home
 = 
sswd
 = 
NULL
;

66 
__db_gt_t
 = 1;

67 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:NoP:quV")!
EOF
)

68 
ch
) {

70 
home
 = 
ݏrg
;

73 
nag
 = 1;

76 
sswd
 = 
	`rdup
(
ݏrg
);

77 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

78 i(
sswd
 =
NULL
) {

79 
	`rtf
(
dr
, "%s: strdup: %s\n",

80 
ogme
, 
	`
(
o
));

81  (
EXIT_FAILURE
);

85 
	`LF_SET
(
DB_NOORDERCHK
);

88 
qut
 = 1;

91 
	`LF_SET
(
DB_UNREF
);

94 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

95  (
EXIT_SUCCESS
);

98  (
	`db_vify_uge
());

100 
gc
 -
td
;

101 
gv
 +
td
;

103 i(
gc
 <= 0)

104  (
	`db_vify_uge
());

107 
	`__db_ut_sig
();

113 
y
: i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

114 
	`rtf
(
dr
,

115 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

116 
shutdown
;

119 i(!
qut
) {

120 
dbv
->
	`t_rfe
(dbv, 
dr
);

121 
dbv
->
	`t_fx
(dbv, 
ogme
);

124 i(
nag
) {

125 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

126 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

127 
shutdown
;

129 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

130 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

131 
shutdown
;

135 i(
sswd
 !
NULL
 &&

136 (
t
 = 
dbv
->
	`t_y
(dbv, 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

137 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

138 
shutdown
;

145 
ive
 = 0;

146 i((
t
 =

147 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_INIT_MPOOL
 | 
DB_USE_ENVIRON
, 0)) != 0) {

148 i(
t
 !
DB_VERSION_MISMATCH
) {

149 i((
t
 =

150 
dbv
->
	`t_chesize
(dbv, 0, 
che
, 1)) != 0) {

151 
dbv
->
	`r
(dbv, 
t
, "set_cachesize");

152 
shutdown
;

154 
ive
 = 1;

155 
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 |

156 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0);

158 i(
t
 != 0) {

159 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

160 
shutdown
;

169 ; !
	`__db_ut_ued
(&& 
gv
[0] !
NULL
; ++argv) {

170 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

171 
dbv
->
	`r
(dbv, 
t
, "%s: db_", 
ogme
);

172 
shutdown
;

175 i(
	`TXN_ON
(
dbv
) &&

176 (
t
 = 
dbp
->
	`t_ags
(dbp, 
DB_TXN_NOT_DURABLE
)) != 0) {

177 
dbv
->
	`r
(

178 
dbv
, 
t
, "%s: db_t_ags", 
ogme
);

179 
shutdown
;

190 i(
ive
) {

191 i((
t
 = 
	`db_
(&
dbp1
, 
dbv
, 0)) != 0) {

192 
dbv
->
	`r
(

193 
dbv
, 
t
, "%s: db_", 
ogme
);

194 
shutdown
;

197 i(
	`TXN_ON
(
dbv
&& (
t
 =

198 
dbp1
->
	`t_ags
(dbp1, 
DB_TXN_NOT_DURABLE
)) != 0) {

199 
dbv
->
	`r
(

200 
dbv
, 
t
, "%s: db_t_ags", 
ogme
);

201 
shutdown
;

204 
t
 = 
dbp1
->
	`ݒ
(dbp1,

205 
NULL
, 
gv
[0], NULL, 
DB_UNKNOWN
, 
DB_RDONLY
, 0);

215 i(
t
 == 0) {

216 i(
	`__db_ut_che
(

217 
dbp1
, &
che
, &
size
) == 0 &&esize) {

218 ()
dbp1
->
	`o
(dbp1, 0);

219 ()
dbp
->
	`o
(dbp, 0);

220 
dbp
 = 
NULL
;

222 ()
dbv
->
	`o
(dbenv, 0);

223 
dbv
 = 
NULL
;

224 
y
;

227 ()
dbp1
->
	`o
(dbp1, 0);

231 
t
 = 
dbp
->
	`vify
(dbp, 
gv
[0], 
NULL
, NULL, 
ags
);

232 
dbp
 = 
NULL
;

233 i(
t
 != 0)

234 
shutdown
;

238 
shutdown
: 
exv
 = 1;

241 i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 0)) != 0) {

242 
exv
 = 1;

243 
dbv
->
	`r
(dbv, 
t
, "close");

245 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

246 
exv
 = 1;

247 
	`rtf
(
dr
,

248 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

251 i(
sswd
 !
NULL
)

252 
	`
(
sswd
);

255 
	`__db_ut_signd
();

257  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

258 
	}
}

261 
	$db_vify_uge
()

263 
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

265  (
EXIT_FAILURE
);

266 
	}
}

269 
	$db_vify_vsi_check
()

271 
v_maj
, 
v_m
, 
v_tch
;

274 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

275 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

276 
	`rtf
(
dr
,

278 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

279 
v_maj
, 
v_m
);

280  (
EXIT_FAILURE
);

283 
	}
}

	@../build_vxworks/dbdemo/dbdemo.c

9 
	~<sys/tys.h
>

11 
	~<dio.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

15 #ifde
_WIN32


16 

gt
(, * const *, const *);

18 
	~<unid.h
>

21 
	~<db_cfig.h
>

22 
	~<db_t.h
>

24 
	#DATABASE
 "acss.db"

	)

25 
dbdemo_ma
 
__P
((, *[]));

26 
dbdemo_uge
 
__P
(());

29 
	$dbdemo
(
gs
)

30 *
gs
;

32 
gc
;

33 **
gv
;

35 
	`__db_ut_g
("dbdemo", 
gs
, &
gc
, &
gv
);

36  (
	`dbdemo_ma
(
gc
, 
gv
? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

37 
	}
}

39 
	~<dio.h
>

40 
	#ERROR_RETURN
 
ERROR


	)

43 
	$dbdemo_ma
(
gc
, 
gv
)

44 
gc
;

45 *
gv
[];

47 

td
, 
__db_gt_t
;

48 
DB
 *
dbp
;

49 
DBC
 *
db
;

50 
DBT
 
key
, 
da
;

51 
size_t
 
n
;

52 
ch
, 
t
, 
rag
;

53 *
daba
, *
p
, *
t
, 
buf
[1024], 
rbuf
[1024];

54 cڡ *
ogme
 = "dbdemo";

56 
rag
 = 0;

57 
__db_gt_t
 = 1;

58 (
ch
 = 
	`gt
(
gc
, 
gv
, "r")!
EOF
)

59 
ch
) {

61 
rag
 = 1;

65  (
	`dbdemo_uge
());

67 
gc
 -
td
;

68 
gv
 +
td
;

71 
daba
 = *
gv
 =
NULL
 ? 
DATABASE
 :rgv[0];

74 i(
rag
)

75 ()
	`move
(
daba
);

78 i((
t
 = 
	`db_
(&
dbp
, 
NULL
, 0)) != 0) {

79 
	`rtf
(
dr
,

80 "%s: db_: %s\n", 
ogme
, 
	`db_
(
t
));

81  (
EXIT_FAILURE
);

83 
dbp
->
	`t_rfe
(dbp, 
dr
);

84 
dbp
->
	`t_fx
(dbp, 
ogme
);

85 i((
t
 = 
dbp
->
	`t_gesize
(dbp, 1024)) != 0) {

86 
dbp
->
	`r
(dbp, 
t
, "set_pagesize");

87 
r1
;

89 i((
t
 = 
dbp
->
	`t_chesize
(dbp, 0, 32 * 1024, 0)) != 0) {

90 
dbp
->
	`r
(dbp, 
t
, "set_cachesize");

91 
r1
;

93 i((
t
 = 
dbp
->
	`ݒ
(dbp,

94 
NULL
, 
daba
, NULL, 
DB_BTREE
, 
DB_CREATE
, 0664)) != 0) {

95 
dbp
->
	`r
(dbp, 
t
, "%s: on", 
daba
);

96 
r1
;

103 
	`memt
(&
key
, 0, (
DBT
));

104 
	`memt
(&
da
, 0, (
DBT
));

106 
	`tf
("input> ");

107 
	`fush
(
dout
);

108 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
)

110 i(
	`rcmp
(
buf
, "exit\n") == 0 || strcmp(buf, "quit\n") == 0)

112 i((
n
 = 
	`
(
buf
)) <= 1)

114 
t
 = 
rbuf
, 
p
 = 
buf
 + (
n
 - 2); >= buf;)

115 *
t
++ = *
p
--;

116 *
t
++ = '\0';

118 
key
.
da
 = 
buf
;

119 
da
.d
rbuf
;

120 
da
.
size
 = 
key
.siz(
u_t32_t
)
n
 - 1;

122 
t
 =

123 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 
DB_NOOVERWRITE
)) {

127 
dbp
->
	`r
(dbp, 
t
, "DB->put");

128 i(
t
 !
DB_KEYEXIST
)

129 
r1
;

133 
	`tf
("\n");

136 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &
db
, 0)) != 0) {

137 
dbp
->
	`r
(dbp, 
t
, "DB->cursor");

138 
r1
;

142 
	`memt
(&
key
, 0, (key));

143 
	`memt
(&
da
, 0, (data));

146 (
t
 = 
db
->
	`g
(db, &
key
, &
da
, 
DB_NEXT
)) == 0)

147 
	`tf
("%.*s : %.*s\n",

148 ()
key
.
size
, (*)key.
da
,

149 ()
da
.
size
, (*)data.data);

150 i(
t
 !
DB_NOTFOUND
) {

151 
dbp
->
	`r
(dbp, 
t
, "DBcursor->get");

152 
r2
;

156 i((
t
 = 
db
->
	`o
(dbcp)) != 0) {

157 
dbp
->
	`r
(dbp, 
t
, "DBcursor->close");

158 
r1
;

160 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

161 
	`rtf
(
dr
,

162 "%s: DB->o: %s\n", 
ogme
, 
	`db_
(
t
));

163  (
EXIT_FAILURE
);

165  (
EXIT_SUCCESS
);

167 
r2
: ()
db
->
	`o
(dbcp);

168 
r1
: ()
dbp
->
	`o
(dbp, 0);

169  (
EXIT_FAILURE
);

170 
	}
}

173 
	$dbdemo_uge
()

175 ()
	`rtf
(
dr
, "usage:x_access [-r] [database]\n");

176  (
EXIT_FAILURE
);

177 
	}
}

	@../build_windows/dbkill.cpp

24 
	~<wdows.h
>

25 
	~<dio.h
>

26 
	~<dlib.h
>

27 
	~<lims.h
>

35 
	$my
(*
s
, 
ba
)

37 
su
 = 0;

38 
ch
;

39 
sign
 = 1;

40 i(
ba
 == 0)

41 
ba
 = 10;

42 i(
ba
 != 10 && base != 16)

43  
LONG_MAX
;

44 (
ch
 = *
s
++) != '\0') {

45 i(
ch
 == '-') {

46 
sign
 = -sign;

48 i(
ch
 >= '0' && ch <= '9') {

49 
su
 =esu * 
ba
 + (
ch
 - '0');

51 i(
ch
 == 'x' || ch == 'X') {

53 
ba
 = 16;

55 i(
ba
 =16 && 
ch
 >= 'a' && ch <= 'f') {

56 
su
 =esu * 
ba
 + (
ch
 - 'a' + 10);

58 i(
ba
 =16 && 
ch
 >= 'A' && ch <= 'F') {

59 
su
 =esu * 
ba
 + (
ch
 - 'A' + 10);

62 i(
sign
 > 1)

63  
LONG_MAX
;

65  
LONG_MIN
;

68  
sign
 * 
su
;

69 
	}
}

72 
	$uge_ex
()

74 
	`rtf
(
dr
, "Usage: kill [ -sig ]id\n");

75 
	`rtf
(
dr
, " for win32, sig must be or 0, 15 (TERM)\n");

76 
	`ex
(
EXIT_FAILURE
);

77 
	}
}

80 
	$ma
(
gc
, **
gv
)

82 
HANDLE
 
hPross
 ;

83 
DWORD
 
acssag
;

84 
pid
;

85 
sig
 = 15;

87 i(
gc
 > 2) {

88 i(
gv
[1][0] != '-')

89 
	`uge_ex
();

91 i(
	`rcmp
(
gv
[1], "-TERM") == 0)

92 
sig
 = 15;

97 
sig
 = 
	`oi
(&
gv
[1][1]);

98 i(
sig
 < 0)

99 
	`uge_ex
();

101 
gc
--;

102 
gv
++;

104 i(
gc
 < 2)

105 
	`uge_ex
();

107 
pid
 = 
	`my
(
gv
[1], 10);

109 i(
pid
 =
LONG_MAX
 ||id =
LONG_MIN
)

110 
	`uge_ex
();

112 i(
sig
 == 0)

113 
acssag
 = 
PROCESS_QUERY_INFORMATION
 | 
PROCESS_VM_READ
;

115 
acssag
 = 
STANDARD_RIGHTS_REQUIRED
 | 
PROCESS_TERMINATE
;

116 
hPross
 = 
	`OnPross
(
acssag
, 
FALSE
, 
pid
);

117 i(
hPross
 =
NULL
) {

118 
	`rtf
(
dr
, "dbkl: %s:suchross\n", 
gv
[1]);

119 
	`ex
(
EXIT_FAILURE
);

121 i(
sig
 == 0)

122 
	`ex
(
EXIT_SUCCESS
);

123 i(!
	`TmePross
(
hPross
, 99)) {

124 
DWORD
 
r
 = 
	`GLaE
();

125 
	`rtf
(
dr
,

126 "dbkl: cn kȴoss: %d (0x%lx)\n", 
r
,rr);

127 
	`ex
(
EXIT_FAILURE
);

129  
EXIT_SUCCESS
;

130 
	}
}

	@../build_windows/libdb.def

1 ; 
DO
 
NOT
 
	gEDIT
: 
automiy
 
but
 
by
 
di
/
s_wdows
.

3 
EXPORTS


4 
db_
 @1

5 
db_v_
 @2

6 
db_qu_
 @3

7 
db_
 @4

8 
db_vsi
 @5

9 
db_xa_swch
 @6

10 
log_com
 @7

11 
__db_add_covy
 @8

12 
__db_dbm_o
 @9

13 
__db_dbm_de
 @10

14 
__db_dbm_tch
 @11

15 
__db_dbm_fkey
 @12

16 
__db_dbm_
 @13

17 
__db_dbm_xtkey
 @14

18 
__db_dbm_e
 @15

19 
__db_g_ags_
 @16

20 
__db_g_q_ags_
 @17

21 
__db_h
 @18

22 
__db_hderoy
 @19

23 
__db_hch
 @20

24 
__db_ldme
 @21

25 
__db_ndbm_
 @22

26 
__db_ndbm_o
 @23

27 
__db_ndbm_de
 @24

28 
__db_ndbm_do
 @25

29 
__db_ndbm_r
 @26

30 
__db_ndbm_tch
 @27

31 
__db_ndbm_fkey
 @28

32 
__db_ndbm_xtkey
 @29

33 
__db_ndbm_ݒ
 @30

34 
__db_ndbm_go
 @31

35 
__db_ndbm_rdly
 @32

36 
__db_ndbm_e
 @33

37 
__db_nic
 @34

38 
__db_w32_mux_lock
 @35

39 
__db_w32_mux_uock
 @36

40 
__ham_func2
 @37

41 
__ham_func3
 @38

42 
__ham_func4
 @39

43 
__ham_func5
 @40

44 
__ham_
 @41

45 
__lock_id_t
 @42

46 
__os_oc
 @43

47 
__os_ohd
 @44

48 
__os_d
 @45

49 
__os_dli
 @46

50 
__os_
 @47

51 
__os_fsync
 @48

52 
__os_g_sy
 @49

53 
__os_gv
 @50

54 
__os_iofo
 @51

55 
__os_mloc
 @52

56 
__os_mkd
 @53

57 
__os_ݒ
 @54

58 
__os_ݒhd
 @55

59 
__os_posix_r
 @56

60 
__os_ad
 @57

61 
__os_loc
 @58

62 
__os_me
 @59

63 
__os_rdup
 @60

64 
__os_umloc
 @61

65 
__os_uƚk
 @62

66 
__os_wre
 @63

67 
__txn_id_t
 @64

68 
__bam_adj_ad
 @65

69 
__bam_dju_ad
 @66

70 
__bam_cd_ad
 @67

71 
__bam_cudj_ad
 @68

72 
__bam_mge_ad
 @69

73 
__bam_pg
 @70

74 
__bam_pgno_ad
 @71

75 
__bam_pgout
 @72

76 
__bam_rcudj_ad
 @73

77 
__bam_lk_43_ad
 @74

78 
__bam_lk_ad
 @75

79 
__bam__ad
 @76

80 
__bam_ro_ad
 @77

81 
__bam_rl_ad
 @78

82 
__bam_l_ad
 @79

83 
__cfig_l
 @80

84 
__d_mem__ad
 @81

85 
__d_mem_move_ad
 @82

86 
__d_mem_me_ad
 @83

87 
__d_masub_ad
 @84

88 
__db_addm_ad
 @85

89 
__db_big_ad
 @86

90 
__db_cksum_ad
 @87

91 
__db_ime
 @88

92 
__db_debug_ad
 @89

93 
__db_dich
 @90

94 
__db_dl
 @91

95 
__db_dume
 @92

96 
__db_r
 @93

97 
__db_rx
 @94

98 
__db_glg
 @95

99 
__db_gulg
 @96

100 
__db_glob_vues
 @97

101 
__db_isbigdn
 @98

102 
__db_mkth
 @99

103 
__db_msg
 @100

104 
__db_no_ad
 @101

105 
__db_omode
 @102

106 
__db_ovf_ad
 @103

107 
__db_pg_loc_42_ad
 @104

108 
__db_pg_loc_ad
 @105

109 
__db_pg__42_ad
 @106

110 
__db_pg__ad
 @107

111 
__db_pg_da_42_ad
 @108

112 
__db_pg_da_ad
 @109

113 
__db_pg__ad
 @110

114 
__db_pg_w_ad
 @111

115 
__db_pg_e_ad
 @112

116 
__db_pg_st_ad
 @113

117 
__db_pg
 @114

118 
__db_pgout
 @115

119 
__db__back
 @116

120 
__db_lk_42_ad
 @117

121 
__db_h
 @118

122 
__db__
 @119

123 
__db__t_
 @120

124 
__db_ut_che
 @121

125 
__db_ut_ued
 @122

126 
__db_ut_logt
 @123

127 
__db_ut_sig
 @124

128 
__db_ut_signd
 @125

129 
__db_vify_
 @126

130 
__dbg_gi_ad
 @127

131 
__f__ad
 @128

132 
__f_fe_move_ad
 @129

133 
__f_move_ad
 @130

134 
__f_me_ad
 @131

135 
__f_wre_ad
 @132

136 
__ham_chgpg_ad
 @133

137 
__ham_cyge_ad
 @134

138 
__ham_cudj_ad
 @135

139 
__ham_g_ma
 @136

140 
__ham_grouoc_42_ad
 @137

141 
__ham_grouoc_ad
 @138

142 
__ham_sd_ad
 @139

143 
__ham_magroup_42_ad
 @140

144 
__ham_magroup_ad
 @141

145 
__ham_wge_ad
 @142

146 
__ham_pg
 @143

147 
__ham_pgout
 @144

148 
__ham_a_ma
 @145

149 
__ham_a_ad
 @146

150 
__ham_lda_ad
 @147

151 
__lock_li_t
 @148

152 
__log__
 @149

153 
__mux_t_wa_fo
 @150

154 
__os_abh
 @151

155 
__os_exis
 @152

156 
__os_g_o
 @153

157 
__os_gtime
 @154

158 
__os_id
 @155

159 
__os_mfe
 @156

160 
__os_ek
 @157

161 
__os_t_o
 @158

162 
__os_p
 @159

163 
__os_
 @160

164 
__os_u
 @161

165 
__os_unmfe
 @162

166 
__os_yld
 @163

167 
__qam_add_ad
 @164

168 
__qam_d_ad
 @165

169 
__qam_dext_ad
 @166

170 
__qam_cf_ad
 @167

171 
__qam_mvr_ad
 @168

172 
__qam_pg_out
 @169

173 
__p__t
 @170

174 
__txn_chd_ad
 @171

175 
__txn_ckp_42_ad
 @172

176 
__txn_ckp_ad
 @173

177 
__txn_cye_ad
 @174

178 
__txn_g_42_ad
 @175

179 
__txn_g_ad
 @176

180 
__txn_xa_g_ad
 @177

	@../build_windows/libdb.rc

1 1 
VERSIONINFO


2 
	gFILEVERSION
 4,0,6,21

3 
	gPRODUCTVERSION
 4,0,6,21

4 
	gFILEFLAGSMASK
 0x3fL

5 #ifde
_DEBUG


6 
	gFILEFLAGS
 0x1L

8 
	gFILEFLAGS
 0x0L

10 
	gFILEOS
 0x4L

11 
	gFILETYPE
 0x2L

12 
	gFILESUBTYPE
 0x0L

14 
BEGIN


15 
	gBLOCK
 "StringFileInfo"

16 
BEGIN


17 
	gBLOCK
 "040904b0"

18 
BEGIN


19 
	gVALUE
 "CompanyName", "Oracle\0"

20 
	gVALUE
 "FileDescription", "Berkeley DB 4.6 DLL\0"

21 
	gVALUE
 "FileVersion", "4.6.21\0"

22 
	gVALUE
 "InternalName", "libdb46.dll\0"

23 
	gVALUE
 "LegalCopyright", "Copyright  Oracle 1997,2007\0"

24 
	gVALUE
 "OriginalFilename", "libdb46.dll\0"

25 
	gVALUE
 "ProductName", "Oracleibdb\0"

26 
	gVALUE
 "ProductVersion", "4.6.21\0"

27 
END


28 
END


29 
	gBLOCK
 "VarFileInfo"

30 
BEGIN


31 
	gVALUE
 "Translation", 0x409, 1200

32 
END


33 
	gEND


	@../build_windows/libdb_tcl.def

1 ; 
	g$Id
: 
libdb_t
.
def
,
	gv
 12.0 2004/11/17 03:48:15 
boic
 
Exp
 
$


3 
DESCRIPTION
 'Berkeley DB TCL interface Library'

4 
EXPORTS


5 
Db_t_In


6 
_NameToP


	@../clib/atoi.c

34 
	~"db_cfig.h
"

36 
	~"db_t.h
"

46 
	$oi
(
r
)

47 cڡ *
r
;

49  ()
	`
(
r
, (**)
NULL
, 10);

50 
	}
}

	@../clib/atol.c

34 
	~"db_cfig.h
"

36 
	~"db_t.h
"

46 
	$
(
r
)

47 cڡ *
r
;

49  
	`
(
r
, (**)
NULL
, 10);

50 
	}
}

	@../clib/ctime.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__db_ime
(
tod
, 
time_buf
)

21 cڡ 
time_t
 *
tod
;

22 *
time_buf
;

24 
time_buf
[
CTIME_BUFLEN
 - 1] = '\0';

32 #i
	`defed
(
HAVE_CTIME_R_3ARG
)

33 ()
	`ime_r
(
tod
, 
time_buf
, 
CTIME_BUFLEN
);

34 #i
	`defed
(
HAVE_CTIME_R
)

35 ()
	`ime_r
(
tod
, 
time_buf
);

37 ()
	`y
(
time_buf
, 
	`ime
(
tod
), 
CTIME_BUFLEN
 - 1);

39  (
time_buf
);

40 
	}
}

	@../clib/getaddrinfo.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

29 
	$__db_gaddrfo
(
dbv
, 
nodame
, 
pt
, 
rvme
, 
hts
, 
s
)

30 
DB_ENV
 *
dbv
;

31 cڡ *
nodame
, *
rvme
;

32 
u_t
 
pt
;

33 cڡ 
ADDRINFO
 *
hts
;

34 
ADDRINFO
 **
s
;

36 #ifde
HAVE_GETADDRINFO


37 
t
;

39 i((
t
 = 
	`gaddrfo
(
nodame
, 
rvme
, 
hts
, 
s
)) == 0)

42 
	`__db_rx
(
dbv
, "%s(%u): hostookup failed: %s",

43 
nodame
 =
NULL
 ? "" :odame, 
pt
,

44 #ifde
DB_WIN32


45 
	`gai_A
(
t
));

47 
	`gai_
(
t
));

49  (
	`__os_posix_r
(
t
));

51 
ADDRINFO
 *
sw
;

52 
hot
 *
hoaddr
;

53 
sockaddr_
 
s
;

54 
u_t32_t
 
tmddr
;

55 
t
;

57 
	`COMPQUIET
(
hts
, 
NULL
);

58 
	`COMPQUIET
(
rvme
, 
NULL
);

61 #idef 
INADDR_NONE


62 
	#INADDR_NONE
 ((
u_lg
)0xffffffff)

	)

69 
	`memt
(&
s
, 0, (sin));

70 
s
.
s_my
 = 
AF_INET
;

71 i(
nodame
) {

72 i(
nodame
[0] == '\0')

73 
s
.
s_addr
.
s_addr
 = 
	`htl
(
INADDR_ANY
);

74 i((
tmddr
 = 
	`_addr
(
nodame
)!
INADDR_NONE
) {

75 
s
.
s_addr
.
s_addr
 = 
tmddr
;

77 
hoaddr
 = 
	`ghobyme
(
nodame
);

78 i(
hoaddr
 =
NULL
) {

79 #ifde
DB_WIN32


80 
t
 = 
	`__os_g_Ë
();

81 
	`__db_sy
(
dbv
, 
t
,

83 
nodame
 =
NULL
 ? "" :odame, 
pt
);

84  (
	`__os_posix_r
(
t
));

97 #ifde
HAVE_HSTRERROR


98 
	`__db_rx
(
dbv
,

100 
nodame
 =
NULL
 ? "" :odame, 
pt
,

101 
	`h
(
h_o
));

103 
	`__db_rx
(
dbv
,

105 
nodame
 =
NULL
 ? "" :odame, 
pt
,

106 
h_o
);

108 
h_o
) {

109 
HOST_NOT_FOUND
:

110 
NO_DATA
:

111  (
EHOSTUNREACH
);

112 
TRY_AGAIN
:

113  (
EAGAIN
);

114 
NO_RECOVERY
:

116  (
EFAULT
);

121 
	`memy
(&(
s
.
s_addr
),

122 
hoaddr
->
h_addr
, (
size_t
)hoaddr->
h_ngth
);

125 
s
.
s_addr
.
s_addr
 = 
	`htl
(
INADDR_ANY
);

126 
s
.
s_pt
 = 
	`hts
((
u_t16_t
)
pt
);

128 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
ADDRINFO
), &
sw
)) != 0)

129  (
t
);

130 i((
t
 = 
	`__os_mloc
(
dbv
, (
s
), &
sw
->
ai_addr
)) != 0) {

131 
	`__os_
(
dbv
, 
sw
);

132  (
t
);

135 
sw
->
ai_my
 = 
AF_INET
;

136 
sw
->
ai_oc
 = 
IPPROTO_TCP
;

137 
sw
->
ai_sockty
 = 
SOCK_STREAM
;

138 
sw
->
ai_add
 = (
s
);

139 
	`memy
(
sw
->
ai_addr
, &
s
, (sin));

140 *
s
 = 
sw
;

144 
	}
}

154 
	$__db_addrfo
(
dbv
, 
ai
)

155 
DB_ENV
 *
dbv
;

156 
ADDRINFO
 *
ai
;

158 #ifde
HAVE_GETADDRINFO


159 
	`COMPQUIET
(
dbv
, 
NULL
);

161 
	`addrfo
(
ai
);

163 
ADDRINFO
 *
xt
, *
tmddr
;

165 
xt
 = 
ai
;ex!
NULL
;ex
tmddr
) {

166 i(
xt
->
ai_nme
 !
NULL
)

167 
	`__os_
(
dbv
, 
xt
->
ai_nme
);

169 i(
xt
->
ai_addr
 !
NULL
)

170 
	`__os_
(
dbv
, 
xt
->
ai_addr
);

172 
tmddr
 = 
xt
->
ai_xt
;

173 
	`__os_
(
dbv
, 
xt
);

176 
	}
}

	@../clib/getcwd.c

37 
	~"db_cfig.h
"

39 
	~"db_t.h
"

41 #ifde
HAVE_SYSTEM_INCLUDE_FILES


42 #i
HAVE_DIRENT_H


43 
	~<dt.h
>

44 
	#NAMLEN
(
dt

	`
((dt)->
d_me
)

	)

46 
	#dt
 
de


	)

47 
	#NAMLEN
(
dt
(dt)->
d_mn


	)

48 #i
HAVE_SYS_NDIR_H


49 
	~<sys/nd.h
>

51 #i
HAVE_SYS_DIR_H


52 
	~<sys/d.h
>

54 #i
HAVE_NDIR_H


55 
	~<nd.h
>

60 
	#ISDOT
(
dp
) \

61 (
dp
->
d_me
[0] == '.' && (dp->d_name[1] == '\0' || \

62 (
dp
->
d_me
[1] ='.' && dp->d_me[2] ='\0')))

	)

64 #ide
dfd


65 
	#dfd
(
dp
((dp)->
dd_fd
)

	)

77 
	$gcwd
(

, 
size
)

78 *

;

79 
size_t
 
size
;

81 
dt
 *
dp
;

82 
DIR
 *
d
;

83 
dev_t
 
dev
;

84 
o_t
 
o
;

85 
f
;

86 *
b
, *
bup
;

87 

 
s
;

88 
dev_t
 
ro_dev
;

89 
o_t
 
ro_o
;

90 
size_t
 
size
, 
upsize
;

91 
t
, 
ve_o
;

92 *
t
, *
eup
, *
up
;

99 i(

) {

100 
size
 = 0;

101 i(!
size
) {

102 
	`__os_t_o
(
EINVAL
);

103  (
NULL
);

105 i(
size
 == 1) {

106 
	`__os_t_o
(
ERANGE
);

107  (
NULL
);

109 
t
 = 

 + 
size
;

111 i((
t
 =

112 
	`__os_mloc
(
NULL
, 
size
 = 1024 - 4, &

)) != 0) {

113 
	`__os_t_o
(
t
);

114  (
NULL
);

116 
t
 = 

 + 
size
;

118 
b
 = 
t
 - 1;

119 *
b
 = '\0';

126 i((
t
 = 
	`__os_mloc
(
NULL
, 
upsize
 = 1024 - 4, &
up
)) != 0)

127 
r
;

128 
eup
 = 
up
 + 1024;

129 
bup
 = 
up
;

130 
up
[0] = '.';

131 
up
[1] = '\0';

134 i(
	`
("/", &
s
))

135 
r
;

136 
ro_dev
 = 
s
.
_dev
;

137 
ro_o
 = 
s
.
_o
;

139 
	`__os_t_o
(0);

141 
f
 = 1;; first = 0) {

143 i(
	`l
(
up
, &
s
))

144 
r
;

147 
o
 = 
s
.
_o
;

148 
dev
 = 
s
.
_dev
;

151 i(
ro_dev
 =
dev
 && 
ro_o
 =
o
) {

152 *--
b
 = 
PATH_SEPARATOR
[0];

158 
	`bcy
(
b
, 

, 
t
 - bpt);

159 
	`__os_
(
NULL
, 
up
);

160  (

);

168 i(
bup
 + 3 + 
MAXNAMLEN
 + 1 >
eup
) {

169 i(
	`__os_loc
(
NULL
, 
upsize
 *2, &
up
) != 0)

170 
r
;

171 
bup
 = 
up
;

172 
eup
 = 
up
 + 
upsize
;

174 *
bup
++ = '.';

175 *
bup
++ = '.';

176 *
bup
 = '\0';

179 i(!(
d
 = 
	`ݒd
(
up
)|| 
	`f
(
	`dfd
(d), &
s
))

180 
r
;

183 *
bup
++ = 
PATH_SEPARATOR
[0];

190 
ve_o
 = 0;

191 i(
s
.
_dev
 =
dev
) {

193 i(!(
dp
 = 
	`add
(
d
)))

194 
nfound
;

195 i(
dp
->
d_fo
 =
o
)

200 i(!(
dp
 = 
	`add
(
d
)))

201 
nfound
;

202 i(
	`ISDOT
(
dp
))

204 
	`bcy
(
dp
->
d_me
, 
bup
, dp->
d_mn
 + 1);

207 i(
	`l
(
up
, &
s
)) {

208 i(
ve_o
 == 0)

209 
ve_o
 = 
	`__os_g_o
();

210 
	`__os_t_o
(0);

213 i(
s
.
_dev
 =
dev
 && s.
_o
 =
o
)

221 i(
b
 - 

 < 
dp
->
d_mn
 + (
f
 ? 1 : 2)) {

222 
size_t
 
n
, 
off
;

224 i(!
size
) {

225 
	`__os_t_o
(
ERANGE
);

226 
r
;

228 
off
 = 
b
 - 

;

229 
n
 = 
t
 - 
b
;

230 i(
	`__os_loc
(
NULL
, 
size
 *2, &

) != 0)

231 
r
;

232 
b
 = 

 + 
off
;

233 
t
 = 

 + 
size
;

234 
	`bcy
(
b
, 
t
 - 
n
,en);

235 
b
 = 
t
 - 
n
;

237 i(!
f
)

238 *--
b
 = 
PATH_SEPARATOR
[0];

239 
b
 -
dp
->
d_mn
;

240 
	`bcy
(
dp
->
d_me
, 
b
, dp->
d_mn
);

241 ()
	`od
(
d
);

244 *
bup
 = '\0';

247 
nfound
:

253 i(
	`__os_g_o_t_zo
() == 0)

254 
	`__os_t_o
(
ve_o
 =0 ? 
ENOENT
 : save_errno);

256 
r
:

257 i(
size
)

258 
	`__os_
(
NULL
, 

);

259 
	`__os_
(
NULL
, 
up
);

260  (
NULL
);

261 
	}
}

	@../clib/getopt.c

37 
	~"db_cfig.h
"

39 
	~"db_t.h
"

41 
	g__db_gt_t
;

43 
	g݋
 = 1,

44 
	gtd
 = 1,

45 
	gtt
,

46 
	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 if(
swty
 <= 1)

70 
	`swcode
(, 
a
, 
b
, 
n
)

72 
	`swcode
(, 
a
, 
b
, 
n
)

73 
	}
}

75 
	#sw
(
a
, 
b
) \

76 i(
swty
 == 0) { \

77 
t
 = *(*)(
a
); \

78 *(*)(
a
*(*)(
b
); \

79 *(*)(
b

t
; \

81 
	`swfunc
(
a
, 
b
, 
es
, 
swty
)

	)

83 
	#vecsw
(
a
, 
b
, 
n
i(> 0
	`swfunc
, b,, 
swty
)

	)

85 
le
 *

86 
	$med3
(
a
, 
b
, 
c
, 
cmp
)

87 *
a
, *
b
, *
c
;

88 (*
cmp
)(const *, const *);

90  
	`cmp
(
a
, 
b
) < 0 ?

91 (
	`cmp
(
b
, 
c
< 0 ? b : (cmp(
a
, c) < 0 ? c : ))

92 :(
	`cmp
(
b
, 
c
> 0 ? b : (cmp(
a
, c) < 0 ? : c ));

93 
	}
}

102 
	$qst
(
a
, 
n
, 
es
, 
cmp
)

103 *
a
;

104 
size_t
 
n
, 
es
;

105 (*
cmp

	`__P
((const *, const *));

107 *

, *
pb
, *
pc
, *
pd
, *

, *
pm
, *

;

108 
d
, 
r
, 
swty
, 
sw_t
;

110 
lo
: 
	`SWAPINIT
(
a
, 
es
);

111 
sw_t
 = 0;

112 i(
n
 < 7) {

113 
pm
 = (*)
a
 + 
es
;m < (* + 
n
 *s;m +=s)

114 

 = 
pm
;> (*)
a
 && 
	`cmp
- 
es
,l) > 0;

115 

 -
es
)

116 
	`sw
(

,- 
es
);

119 
pm
 = (*)
a
 + (
n
 / 2* 
es
;

120 i(
n
 > 7) {

121 

 = 
a
;

122 

 = (*)
a
 + (
n
 - 1* 
es
;

123 i(
n
 > 40) {

124 
d
 = (
n
 / 8* 
es
;

125 

 = 
	`med3
l,+ 
d
,+ 2 * d, 
cmp
);

126 
pm
 = 
	`med3
m - 
d
,m,m + d, 
cmp
);

127 

 = 
	`med3
- 2 * 
d
,- d,n, 
cmp
);

129 
pm
 = 
	`med3
(

,m, 

, 
cmp
);

131 
	`sw
(
a
, 
pm
);

132 

 = 
pb
 = (*)
a
 + 
es
;

134 
pc
 = 
pd
 = (*)
a
 + (
n
 - 1* 
es
;

136 
pb
 <
pc
 && (
r
 = 
	`cmp
b, 
a
)) <= 0) {

137 i(
r
 == 0) {

138 
sw_t
 = 1;

139 
	`sw
(

, 
pb
);

140 

 +
es
;

142 
pb
 +
es
;

144 
pb
 <
pc
 && (
r
 = 
	`cmp
c, 
a
)) >= 0) {

145 i(
r
 == 0) {

146 
sw_t
 = 1;

147 
	`sw
(
pc
, 
pd
);

148 
pd
 -
es
;

150 
pc
 -
es
;

152 i(
pb
 > 
pc
)

154 
	`sw
(
pb
, 
pc
);

155 
sw_t
 = 1;

156 
pb
 +
es
;

157 
pc
 -
es
;

159 i(
sw_t
 == 0) {

160 
pm
 = (*)
a
 + 
es
;m < (* + 
n
 *s;m +=s)

161 

 = 
pm
;> (*)
a
 && 
	`cmp
- 
es
,l) > 0;

162 

 -
es
)

163 
	`sw
(

,- 
es
);

167 

 = (*)
a
 + 
n
 * 
es
;

168 
r
 = 
	`m
(

 - (*)
a
, 
pb
 -a);

169 
	`vecsw
(
a
, 
pb
 - 
r
,);

170 
r
 = 
	`m
(()(
pd
 - 
pc
), ()(

 -d - 
es
));

171 
	`vecsw
(
pb
, 

 - 
r
,);

172 i((
r
 = ()(
pb
 - 

)> ()
es
)

173 
	`qst
(
a
, 
r
 / 
es
,s, 
cmp
);

174 i((
r
 = ()(
pd
 - 
pc
)> ()
es
) {

176 
a
 = 

 - 
r
;

177 
n
 = 
r
 / 
es
;

178 
lo
;

181 
	}
}

	@../clib/raise.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

22 
	$i
(
s
)

23 
s
;

25  (
	`kl
(
	`gpid
(), 
s
));

26 
	}
}

	@../clib/rand.c

4 
	~"db_cfig.h
"

6 
	~"db_t.h
"

16 
	$nd
()

18 
	`DB_GLOBAL
(
nd_xt
) = DB_GLOBAL(rand_next) * 1103515245 + 12345;

19  ((
	`DB_GLOBAL
(
nd_xt
)/65536) % 32768;

20 
	}
}

22 
	$d
(
ed
)

24 
	`DB_GLOBAL
(
nd_xt

ed
;

25 
	}
}

	@../clib/snprintf.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #i!
defed
(
HAVE_SNPRINTF
|| !defed(
HAVE_VSNPRINTF
)

14 
rtf_ovow
 
__P
(());

15 
rtf_tcht
 
__P
(());

26 #ide
HAVE_SNPRINTF


28 #ifde
STDC_HEADERS


29 
	$tf
(*
r
, 
size_t
 
n
, cڡ *
fmt
, ...)

31 
	$tf
(
r
, 
n
, 
fmt
, 
va_i
)

32 *
r
;

33 
size_t
 
n
;

34 cڡ *
fmt
;

35 
va_d


38 
t_cht
 = -1;

39 
va_li
 

;

40 
size_t
 
n
;

42 i(
t_cht
 == -1)

43 
t_cht
 = 
	`rtf_tcht
();

45 #ifde
STDC_HEADERS


46 
	`va_t
(

, 
fmt
);

48 
	`va_t
(

);

50 
n
 = (
size_t
)
	`vrtf
(
r
, 
fmt
, 

);

51 i(
t_cht
)

52 
n
 = 
	`
(
r
);

54 
	`va_d
(

);

56 i(
n
 >
n
) {

57 
	`rtf_ovow
();

60  (()
n
);

61 
	}
}

72 #ide
HAVE_VSNPRINTF


74 
	$vtf
(
r
, 
n
, 
fmt
, 

)

75 *
r
;

76 
size_t
 
n
;

77 cڡ *
fmt
;

78 
va_li
 

;

80 
t_cht
 = -1;

81 
size_t
 
n
;

83 i(
t_cht
 == -1)

84 
t_cht
 = 
	`rtf_tcht
();

86 
n
 = (
size_t
)
	`vrtf
(
r
, 
fmt
, 

);

87 i(
t_cht
)

88 
n
 = 
	`
(
r
);

90 i(
n
 >
n
) {

91 
	`rtf_ovow
();

94  (()
n
);

95 
	}
}

98 #i!
defed
(
HAVE_SNPRINTF
|| !defed(
HAVE_VSNPRINTF
)

100 
	$rtf_ovow
()

112 
	#OVERFLOW_ERROR
 " bufovow,rosded\n"

	)

113 #idef 
STDERR_FILENO


114 
	#STDERR_FILENO
 2

	)

116 ()
	`wre
(
STDERR_FILENO
, 
OVERFLOW_ERROR
, (OVERFLOW_ERROR) - 1);

119 
	`ex
(1);

122 
	`__os_abt
();

125 
	}
}

128 
	$rtf_tcht
()

130 
t_cht
;

131 
buf
[10];

142 
t_cht
 =

143 ()
	`rtf
(
buf
, "123") != 3 ||

144 ()
	`rtf
(
buf
, "123456789") != 9 ||

145 ()
	`rtf
(
buf
, "1234") != 4;

147  (
t_cht
);

148 
	}
}

	@../clib/strcasecmp.c

36 
	~"db_cfig.h
"

38 
	~"db_t.h
"

49 
	$rcmp
(
s1
, 
s2
)

50 cڡ *
s1
, *
s2
;

52 
u_ch
 
s1ch
, 
s2ch
;

55 
s1ch
 = *
s1
++;

56 
s2ch
 = *
s2
++;

57 i(
s1ch
 >= 'A' && s1ch <= 'Z')

58 
s1ch
 += 32;

59 i(
s2ch
 >= 'A' && s2ch <= 'Z')

60 
s2ch
 += 32;

61 i(
s1ch
 !
s2ch
)

62  (
s1ch
 - 
s2ch
);

63 i(
s1ch
 == '\0')

67 
	}
}

78 
	$cmp
(
s1
, 
s2
, 
n
)

79 cڡ *
s1
, *
s2
;

80 
size_t
 
n
;

82 
u_ch
 
s1ch
, 
s2ch
;

84 ; 
n
 != 0; --n) {

85 
s1ch
 = *
s1
++;

86 
s2ch
 = *
s2
++;

87 i(
s1ch
 >= 'A' && s1ch <= 'Z')

88 
s1ch
 += 32;

89 i(
s2ch
 >= 'A' && s2ch <= 'Z')

90 
s2ch
 += 32;

91 i(
s1ch
 !
s2ch
)

92  (
s1ch
 - 
s2ch
);

93 i(
s1ch
 == '\0')

97 
	}
}

	@../clib/strcat.c

34 
	~"db_cfig.h
"

36 
	~"db_t.h
"

46 
	$rt
(*
s
, cڡ *
nd
)

48 *
ve
 = 
s
;

50 ; *
s
; ++s);

51 (*
s
++ = *
nd
++));

52 (
ve
);

53 
	}
}

	@../clib/strchr.c

34 
	~"db_cfig.h
"

36 
	~"db_t.h
"

45 *
	$rchr
(cڡ *
p
, 
ch
)

47 
c
;

49 
c
 = 
ch
;

50 ;; ++
p
) {

51 i(*
p
 =
c
)

52  ((*)
p
);

53 i(*
p
 == '\0')

54  (
NULL
);

57 
	}
}

	@../clib/strdup.c

36 
	~"db_cfig.h
"

38 
	~"db_t.h
"

48 
	$rdup
(
r
)

49 cڡ *
r
;

51 
size_t
 
n
;

52 *
cy
;

54 
n
 = 
	`
(
r
) + 1;

55 i(!(
cy
 = 
	`mloc
((
u_t
)
n
)))

56  (
NULL
);

57 
	`memy
(
cy
, 
r
, 
n
);

58  (
cy
);

59 
	}
}

	@../clib/strerror.c

72 
	~"db_cfig.h
"

74 
	~"db_t.h
"

85 
	$
(
num
)

86 
num
;

88 
	#ERRSTR
(
v
, 
s
) do { \

89 i(
num
 =(
v
)) \

90  (
s
); \

91 } 0)

	)

92 
	`ERRSTR
(0, "Undefinedrror: 0");

93 
	`ERRSTR
(
EPERM
, "Operationotermitted");

94 
	`ERRSTR
(
ENOENT
, "No such file or directory");

95 
	`ERRSTR
(
ESRCH
, "No suchrocess");

96 
	`ERRSTR
(
EINTR
, "Interrupted system call");

97 
	`ERRSTR
(
EIO
, "Input/outputrror");

98 
	`ERRSTR
(
ENXIO
, "Deviceot configured");

99 
	`ERRSTR
(
E2BIG
, "Argumentistooong");

100 
	`ERRSTR
(
ENOEXEC
, "Exec formatrror");

101 
	`ERRSTR
(
EBADF
, "Bad file descriptor");

102 
	`ERRSTR
(
ECHILD
, "No childrocesses");

103 
	`ERRSTR
(
EDEADLK
, "Resource deadlockvoided");

104 
	`ERRSTR
(
ENOMEM
, "Cannotllocate memory");

105 
	`ERRSTR
(
EACCES
, "Permission denied");

106 
	`ERRSTR
(
EFAULT
, "Badddress");

107 
	`ERRSTR
(
ENOTBLK
, "Block deviceequired");

108 
	`ERRSTR
(
EBUSY
, "Device busy");

109 
	`ERRSTR
(
EEXIST
, "Filexists");

110 
	`ERRSTR
(
EXDEV
, "Cross-deviceink");

111 
	`ERRSTR
(
ENODEV
, "Operationot supported by device");

112 
	`ERRSTR
(
ENOTDIR
, "Not directory");

113 
	`ERRSTR
(
EISDIR
, "Is directory");

114 
	`ERRSTR
(
EINVAL
, "Invalidrgument");

115 
	`ERRSTR
(
ENFILE
, "Too many open files in system");

116 
	`ERRSTR
(
EMFILE
, "Too many open files");

117 
	`ERRSTR
(
ENOTTY
, "Inappropriate ioctl for device");

118 
	`ERRSTR
(
ETXTBSY
, "Text file busy");

119 
	`ERRSTR
(
EFBIG
, "Fileooarge");

120 
	`ERRSTR
(
ENOSPC
, "No spaceeft on device");

121 
	`ERRSTR
(
ESPIPE
, "Illegal seek");

122 
	`ERRSTR
(
EROFS
, "Read-only file system");

123 
	`ERRSTR
(
EMLINK
, "Too manyinks");

124 
	`ERRSTR
(
EPIPE
, "Brokenipe");

127 
	`ERRSTR
(
EDOM
, "Numericalrgument out of domain");

128 
	`ERRSTR
(
ERANGE
, "Resultooarge");

131 
	`ERRSTR
(
EAGAIN
, "Resourceemporarily unavailable");

132 
	`ERRSTR
(
EWOULDBLOCK
, "Resourceemporarily unavailable");

133 
	`ERRSTR
(
EINPROGRESS
, "Operationow inrogress");

134 
	`ERRSTR
(
EALREADY
, "Operationlready inrogress");

137 
	`ERRSTR
(
ENOTSOCK
, "Socket operation onon-socket");

138 
	`ERRSTR
(
EDESTADDRREQ
, "Destinationddressequired");

139 
	`ERRSTR
(
EMSGSIZE
, "Messageooong");

140 
	`ERRSTR
(
EPROTOTYPE
, "Protocol wrongype for socket");

141 
	`ERRSTR
(
ENOPROTOOPT
, "Protocolotvailable");

142 
	`ERRSTR
(
EPROTONOSUPPORT
, "Protocolot supported");

143 
	`ERRSTR
(
ESOCKTNOSUPPORT
, "Socketypeot supported");

144 
	`ERRSTR
(
EOPNOTSUPP
, "Operationot supported");

145 
	`ERRSTR
(
EPFNOSUPPORT
, "Protocol familyot supported");

146 
	`ERRSTR
(
EAFNOSUPPORT
, "Address familyot supported byrotocol family");

147 
	`ERRSTR
(
EADDRINUSE
, "Addresslready in use");

148 
	`ERRSTR
(
EADDRNOTAVAIL
, "Can'tssignequestedddress");

151 
	`ERRSTR
(
ENETDOWN
, "Network is down");

152 
	`ERRSTR
(
ENETUNREACH
, "Network is unreachable");

153 
	`ERRSTR
(
ENETRESET
, "Network dropped connection oneset");

154 
	`ERRSTR
(
ECONNABORTED
, "Software caused connectionbort");

155 
	`ERRSTR
(
ECONNRESET
, "Connectioneset byeer");

156 
	`ERRSTR
(
ENOBUFS
, "No buffer spacevailable");

157 
	`ERRSTR
(
EISCONN
, "Socket islready connected");

158 
	`ERRSTR
(
ENOTCONN
, "Socket isot connected");

159 
	`ERRSTR
(
ESHUTDOWN
, "Can't sendfter socket shutdown");

160 
	`ERRSTR
(
ETOOMANYREFS
, "Too manyeferences: can't splice");

161 
	`ERRSTR
(
ETIMEDOUT
, "Operationimed out");

162 
	`ERRSTR
(
ECONNREFUSED
, "Connectionefused");

164 
	`ERRSTR
(
ELOOP
, "Too manyevels of symbolicinks");

165 
	`ERRSTR
(
ENAMETOOLONG
, "Fileameooong");

168 
	`ERRSTR
(
EHOSTDOWN
, "Host is down");

169 
	`ERRSTR
(
EHOSTUNREACH
, "Noouteo host");

170 
	`ERRSTR
(
ENOTEMPTY
, "Directoryotmpty");

173 
	`ERRSTR
(
EPROCLIM
, "Too manyrocesses");

174 
	`ERRSTR
(
EUSERS
, "Too many users");

175 
	`ERRSTR
(
EDQUOT
, "Disc quotaxceeded");

178 
	`ERRSTR
(
ESTALE
, "Stale NFS file handle");

179 
	`ERRSTR
(
EREMOTE
, "Too manyevels ofemote inath");

180 
	`ERRSTR
(
EBADRPC
, "RPC struct is bad");

181 
	`ERRSTR
(
ERPCMISMATCH
, "RPC version wrong");

182 
	`ERRSTR
(
EPROGUNAVAIL
, "RPCrog.otvail");

183 
	`ERRSTR
(
EPROGMISMATCH
, "Program version wrong");

184 
	`ERRSTR
(
EPROCUNAVAIL
, "Badrocedure forrogram");

186 
	`ERRSTR
(
ENOLCK
, "Noocksvailable");

187 
	`ERRSTR
(
ENOSYS
, "Functionot implemented");

188 
	`ERRSTR
(
EFTYPE
, "Inappropriate fileype or format");

189 #ifde
EAUTH


190 
	`ERRSTR
(
EAUTH
, "Authenticationrror");

192 #ifde
ENEEDAUTH


193 
	`ERRSTR
(
ENEEDAUTH
, "Needuthenticator");

195 
	`ERRSTR
(
EIDRM
, "Identifieremoved");

196 
	`ERRSTR
(
ENOMSG
, "No message of desiredype");

197 #ifde
EOVERFLOW


198 
	`ERRSTR
(
EOVERFLOW
, "Valueooargeo be stored in dataype");

200 
	`ERRSTR
(
ECANCELED
, "Operation canceled");

201 
	`ERRSTR
(
EILSEQ
, "Illegal byte sequence");

202 #ifde
ENOATTR


203 
	`ERRSTR
(
ENOATTR
, "Attributeot found");

207 #ifde
EDOOFUS


208 
	`ERRSTR
(
EDOOFUS
, "Programmingrror");

211 #ifde
EBADMSG


212 
	`ERRSTR
(
EBADMSG
, "Bad message");

214 #ifde
EMULTIHOP


215 
	`ERRSTR
(
EMULTIHOP
, "Multihopttempted");

217 #ifde
ENOLINK


218 
	`ERRSTR
(
ENOLINK
, "Link has been severed");

220 #ifde
EPROTO


221 
	`ERRSTR
(
EPROTO
, "Protocolrror");

224  (
	`__db_unknown_r
(
num
));

225 
	}
}

	@../clib/strncat.c

37 
	~"db_cfig.h
"

39 
	~"db_t.h
"

53 
	$t
(*
d
, cڡ *
c
, 
size_t
 
n
)

55 i(
n
 != 0) {

56 *
d
 = 
d
;

57 cڡ *
s
 = 
c
;

59 *
d
 != 0)

60 
d
++;

62 i((*
d
 = *
s
++) == 0)

64 
d
++;

65 } --
n
 != 0);

66 *
d
 = 0;

68  (
d
);

69 
	}
}

	@../clib/strncmp.c

34 
	~"db_cfig.h
"

36 
	~"db_t.h
"

46 
	$cmp
(
s1
, 
s2
, 
n
)

47 cڡ *
s1
, *
s2
;

48 
size_t
 
n
;

51 i(
n
 == 0)

54 i(*
s1
 !*
s2
++)

55  (*(cڡ *)
s1
 -

56 *(cڡ *)(
s2
 - 1));

57 i(*
s1
++ == 0)

59 } --
n
 != 0);

61 
	}
}

	@../clib/strrchr.c

34 
	~"db_cfig.h
"

36 
	~"db_t.h
"

45 *
	$chr
(cڡ *
p
, 
ch
)

47 *
ve
;

48 
c
;

50 
c
 = 
ch
;

51 
ve
 = 
NULL
;; ++
p
) {

52 i(*
p
 =
c
)

53 
ve
 = (*)
p
;

54 i(*
p
 == '\0')

55  (
ve
);

58 
	}
}

	@../clib/strsep.c

34 
	~"db_cfig.h
"

36 
	~"db_t.h
"

54 
	$rp
(
rgp
, 
dim
)

55 **
rgp
;

56 cڡ *
dim
;

58 *
s
;

59 cڡ *
p
;

60 
c
, 
sc
;

61 *
tok
;

63 i((
s
 = *
rgp
=
NULL
)

64  (
NULL
);

65 
tok
 = 
s
;;) {

66 
c
 = *
s
++;

67 
p
 = 
dim
;

69 i((
sc
 = *
p
++=
c
) {

70 i(
c
 == 0)

71 
s
 = 
NULL
;

73 
s
[-1] = 0;

74 *
rgp
 = 
s
;

75  (
tok
);

77 } 
sc
 != 0);

80 
	}
}

	@../clib/strtol.c

36 
	~"db_cfig.h
"

38 
	~"db_t.h
"

51 
	$
(
Ō
, 
dr
, 
ba
)

52 cڡ * 
Ō
;

53 ** 
dr
;

54 
ba
;

56 cڡ *
s
;

57 
acc
;

58 
c
;

59 
cutoff
;

60 
g
, 
y
, 
cuim
;

67 
s
 = 
Ō
;

69 
c
 = *
s
++;

70 } 
	`isa
(()
c
));

71 i(
c
 == '-') {

72 
g
 = 1;

73 
c
 = *
s
++;

75 
g
 = 0;

76 i(
c
 == '+')

77 
c
 = *
s
++;

79 i((
ba
 == 0 || base == 16) &&

80 
c
 ='0' && (*
s
 == 'x' || *s == 'X')) {

81 
c
 = 
s
[1];

82 
s
 += 2;

83 
ba
 = 16;

85 i(
ba
 == 0)

86 
ba
 = 
c
 == '0' ? 8 : 10;

87 
acc
 = 
y
 = 0;

88 i(
ba
 < 2 || base > 36)

89 
nocv
;

108 
cutoff
 = 
g
 ? ()-(
LONG_MIN
 + 
LONG_MAX
) + LONG_MAX

109 : 
LONG_MAX
;

110 
cuim
 = 
cutoff
 % 
ba
;

111 
cutoff
 /
ba
;

112  ; ; 
c
 = *
s
++) {

113 i(
c
 >= '0' && c <= '9')

114 
c
 -= '0';

115 i(
c
 >= 'A' && c <= 'Z')

116 
c
 -= 'A' - 10;

117 i(
c
 >= 'a' && c <= 'z')

118 
c
 -= 'a' - 10;

121 i(
c
 >
ba
)

123 i(
y
 < 0 || 
acc
 > 
cutoff
 || (ac=cutof&& 
c
 > 
cuim
))

124 
y
 = -1;

126 
y
 = 1;

127 
acc
 *
ba
;

128 
acc
 +
c
;

131 i(
y
 < 0) {

132 
acc
 = 
g
 ? 
LONG_MIN
 : 
LONG_MAX
;

133 
o
 = 
ERANGE
;

134 } i(!
y
) {

135 
nocv
:

136 
o
 = 
EINVAL
;

137 } i(
g
)

138 
acc
 = -()acc;

139 i(
dr
 !
NULL
)

140 *
dr
 = (*)(
y
 ? 
s
 - 1 : 
Ō
);

141  (
acc
);

142 
	}
}

	@../clib/strtoul.c

36 
	~"db_cfig.h
"

38 
	~"db_t.h
"

51 
	$oul
(
Ō
, 
dr
, 
ba
)

52 cڡ * 
Ō
;

53 ** 
dr
;

54 
ba
;

56 cڡ *
s
;

57 
acc
;

58 
c
;

59 
cutoff
;

60 
g
, 
y
, 
cuim
;

65 
s
 = 
Ō
;

67 
c
 = *
s
++;

68 } 
	`isa
(()
c
));

69 i(
c
 == '-') {

70 
g
 = 1;

71 
c
 = *
s
++;

73 
g
 = 0;

74 i(
c
 == '+')

75 
c
 = *
s
++;

77 i((
ba
 == 0 || base == 16) &&

78 
c
 ='0' && (*
s
 == 'x' || *s == 'X')) {

79 
c
 = 
s
[1];

80 
s
 += 2;

81 
ba
 = 16;

83 i(
ba
 == 0)

84 
ba
 = 
c
 == '0' ? 8 : 10;

85 
acc
 = 
y
 = 0;

86 i(
ba
 < 2 || base > 36)

87 
nocv
;

89 
cutoff
 = 
ULONG_MAX
 / 
ba
;

90 
cuim
 = 
ULONG_MAX
 % 
ba
;

91  ; ; 
c
 = *
s
++) {

92 i(
c
 >= '0' && c <= '9')

93 
c
 -= '0';

94 i(
c
 >= 'A' && c <= 'Z')

95 
c
 -= 'A' - 10;

96 i(
c
 >= 'a' && c <= 'z')

97 
c
 -= 'a' - 10;

100 i(
c
 >
ba
)

102 i(
y
 < 0 || 
acc
 > 
cutoff
 || (ac=cutof&& 
c
 > 
cuim
))

103 
y
 = -1;

105 
y
 = 1;

106 
acc
 *
ba
;

107 
acc
 +
c
;

110 i(
y
 < 0) {

111 
acc
 = 
ULONG_MAX
;

112 
o
 = 
ERANGE
;

113 } i(!
y
) {

114 
nocv
:

115 
o
 = 
EINVAL
;

116 } i(
g
)

117 
acc
 = -acc;

118 i(
dr
 !
NULL
)

119 *
dr
 = (*)(
y
 ? 
s
 - 1 : 
Ō
);

120  (
acc
);

121 
	}
}

	@../common/crypto_stub.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

25 
	$__yo_gi_
(
dbv
)

26 
DB_ENV
 *
dbv
;

28 
REGENV
 *
nv
;

29 
REGINFO
 *
f
;

30 
t
;

32 
f
 = 
dbv
->
gfo
;

33 
nv
 = 
f
->
imy
;

34 
	`MUTEX_LOCK
(
dbv
, 
nv
->
mtx_gv
);

35 
t
 = !(
nv
->
ch_off
 =
INVALID_ROFF
);

36 
	`MUTEX_UNLOCK
(
dbv
, 
nv
->
mtx_gv
);

38 i(
t
 == 0)

41 
	`__db_rx
(
dbv
,

43  (
DB_OPNOTSUP
);

44 
	}
}

	@../common/db_byteorder.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

23 
	$__db_isbigdn
()

26 
l
;

27 
c
[()];

28 } 
u
;

30 
u
.
l
 = 1;

31  (
u
.
c
[() - 1] == 1);

32 
	}
}

42 
	$__db_byd
(
dbv
, 
ld
)

43 
DB_ENV
 *
dbv
;

44 
ld
;

46 
is_bigdn
;

48 
is_bigdn
 = 
	`__db_isbigdn
();

50 
ld
) {

54 i(
is_bigdn
)

55  (
DB_SWAPBYTES
);

58 i(!
is_bigdn
)

59  (
DB_SWAPBYTES
);

62 
	`__db_rx
(
dbv
,

64  (
EINVAL
);

67 
	}
}

	@../common/db_err.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/txn.h
"

19 
__db_msg
 
__P
((cڡ 
DB_ENV
 *, cڡ *, 
va_li
));

20 
__db_msgfe
 
__P
((cڡ 
DB_ENV
 *, cڡ *, 
va_li
));

29 
	$__db_fchk
(
dbv
, 
me
, 
ags
, 
ok_ags
)

30 
DB_ENV
 *
dbv
;

31 cڡ *
me
;

32 
u_t32_t
 
ags
, 
ok_ags
;

34  (
	`LF_ISSET
(~
ok_ags
? 
	`__db_
(
dbv
, 
me
, 0) : 0);

35 
	}
}

45 
	$__db_fcchk
(
dbv
, 
me
, 
ags
, 
ag1
, 
ag2
)

46 
DB_ENV
 *
dbv
;

47 cڡ *
me
;

48 
u_t32_t
 
ags
, 
ag1
, 
ag2
;

50  (
	`LF_ISSET
(
ag1
) &&

51 
	`LF_ISSET
(
ag2
? 
	`__db_
(
dbv
, 
me
, 1) : 0);

52 
	}
}

61 
	$__db_
(
dbv
, 
me
, 
iscombo
)

62 cڡ 
DB_ENV
 *
dbv
;

63 cڡ *
me
;

64 
iscombo
;

66 
	`__db_rx
(
dbv
, "illegal flag %sspecifiedo %s",

67 
iscombo
 ? "combi " : "", 
me
);

68  (
EINVAL
);

69 
	}
}

78 
	$__db_l
(
dbv
, 
me
)

79 cڡ 
DB_ENV
 *
dbv
;

80 cڡ *
me
;

82 
	`__db_rx
(
dbv
,

84 
me
);

85  (
EINVAL
);

86 
	}
}

95 
	$__db_pgr
(
dbp
, 
pgno
, 
rv
)

96 
DB
 *
dbp
;

97 
db_pgno_t
 
pgno
;

98 
rv
;

105 
	`__db_rx
(
dbp
->
dbv
,

106 "ubˁ/vg%lu", (
u_lg
)
pgno
);

107  (
	`__db_nic
(
dbp
->
dbv
, 
rv
));

108 
	}
}

117 
	$__db_pgfmt
(
dbv
, 
pgno
)

118 
DB_ENV
 *
dbv
;

119 
db_pgno_t
 
pgno
;

121 
	`__db_rx
(
dbv
, "g%lu: iegagty ofm", (
u_lg
)
pgno
);

122  (
	`__db_nic
(
dbv
, 
EINVAL
));

123 
	}
}

125 #ifde
DIAGNOSTIC


135 
	$__db_as
(
dbv
, 
e
, 
fe
, 
le
)

136 
DB_ENV
 *
dbv
;

137 cڡ *
e
, *
fe
;

138 
le
;

140 
	`__db_rx
(
dbv
, "as fau: %s/%d: \"%s\"", 
fe
, 
le
, 
e
);

142 
	`__os_abt
();

144 
	}
}

154 
	$__db_nic_msg
(
dbv
)

155 
DB_ENV
 *
dbv
;

157 
t
;

159 
t
 = 
DB_RUNRECOVERY
;

161 
	`__db_rx
(
dbv
, "PANIC: fatalegionrror detected;unecovery");

163 i(
dbv
->
db_nic
 !
NULL
)

164 
dbv
->
	`db_nic
(dbv, 
t
);

165 
	`DB_EVENT
(
dbv
, 
DB_EVENT_PANIC
, &
t
);

167  (
t
);

168 
	}
}

177 
	$__db_nic
(
dbv
, 
rv
)

178 
DB_ENV
 *
dbv
;

179 
rv
;

181 i(
dbv
 !
NULL
) {

182 
	`__v_nic_t
(
dbv
, 1);

184 
	`__db_r
(
dbv
, 
rv
, "PANIC");

186 i(
dbv
->
db_nic
 !
NULL
)

187 
dbv
->
	`db_nic
(dbv, 
rv
);

188 
	`DB_EVENT
(
dbv
, 
DB_EVENT_PANIC
, &
rv
);

191 #i
	`defed
(
DIAGNOSTIC
&& !defed(
CONFIG_TEST
)

199 
	`__os_abt
();

208  (
DB_RUNRECOVERY
);

209 
	}
}

218 
	$db_
(
r
)

219 
r
;

221 *
p
;

223 i(
r
 == 0)

225 i(
r
 > 0) {

226 i((
p
 = 
	`
(
r
)!
NULL
)

227  (
p
);

228  (
	`__db_unknown_r
(
r
));

238 
r
) {

239 
DB_BUFFER_SMALL
:

242 
DB_DONOTINDEX
:

244 
DB_KEYEMPTY
:

246 
DB_KEYEXIST
:

248 
DB_LOCK_DEADLOCK
:

251 
DB_LOCK_NOTGRANTED
:

253 
DB_LOG_BUFFER_FULL
:

255 
DB_NOSERVER
:

257 
DB_NOSERVER_HOME
:

259 
DB_NOSERVER_ID
:

261 
DB_NOTFOUND
:

263 
DB_OLD_VERSION
:

265 
DB_PAGE_NOTFOUND
:

267 
DB_REP_DUPMASTER
:

269 
DB_REP_HANDLE_DEAD
:

271 
DB_REP_HOLDELECTION
:

273 
DB_REP_IGNORE
:

275 
DB_REP_ISPERM
:

277 
DB_REP_JOIN_FAILURE
:

280 
DB_REP_LEASE_EXPIRED
:

283 
DB_REP_LOCKOUT
:

286 
DB_REP_NEWSITE
:

288 
DB_REP_NOTPERM
:

290 
DB_REP_UNAVAIL
:

292 
DB_RUNRECOVERY
:

294 
DB_SECONDARY_BAD
:

297 
DB_VERIFY_BAD
:

299 
DB_VERSION_MISMATCH
:

306  (
	`__db_unknown_r
(
r
));

307 
	}
}

316 
	$__db_unknown_r
(
r
)

317 
r
;

330 ()
	`tf
(
	`DB_GLOBAL
(
r_buf
),

331 (
	`DB_GLOBAL
(
r_buf
)), "Unknowr: %d", 
r
);

332  (
	`DB_GLOBAL
(
r_buf
));

333 
	}
}

343 #ifde
STDC_HEADERS


344 
	$__db_sy
(cڡ 
DB_ENV
 *
dbv
, 
r
, cڡ *
fmt
, ...)

346 
	$__db_sy
(
dbv
, 
r
, 
fmt
, 
va_i
)

347 cڡ 
DB_ENV
 *
dbv
;

348 
r
;

349 cڡ *
fmt
;

350 
va_d


358 
	`DB_REAL_ERR
(
dbv
, 
r
, 
DB_ERROR_SYSTEM
, 0, 
fmt
);

359 
	}
}

369 #ifde
STDC_HEADERS


370 
	$__db_r
(cڡ 
DB_ENV
 *
dbv
, 
r
, cڡ *
fmt
, ...)

372 
	$__db_r
(
dbv
, 
r
, 
fmt
, 
va_i
)

373 cڡ 
DB_ENV
 *
dbv
;

374 
r
;

375 cڡ *
fmt
;

376 
va_d


383 
	`DB_REAL_ERR
(
dbv
, 
r
, 
DB_ERROR_SET
, 0, 
fmt
);

384 
	}
}

394 #ifde
STDC_HEADERS


395 
	$__db_rx
(cڡ 
DB_ENV
 *
dbv
, cڡ *
fmt
, ...)

397 
	$__db_rx
(
dbv
, 
fmt
, 
va_i
)

398 cڡ 
DB_ENV
 *
dbv
;

399 cڡ *
fmt
;

400 
va_d


407 
	`DB_REAL_ERR
(
dbv
, 0, 
DB_ERROR_NOT_SET
, 0, 
fmt
);

408 
	}
}

418 
	$__db_r
(
dbv
, 
r
, 
r_t
, 
fmt
, 

)

419 cڡ 
DB_ENV
 *
dbv
;

420 
r
;

421 
db_r_t_t
 
r_t
;

422 cڡ *
fmt
;

423 
va_li
 

;

425 *
p
;

426 
buf
[2048];

427 
sysbuf
[1024];

429 
p
 = 
buf
;

430 i(
fmt
 !
NULL
)

431 
p
 +
	`vtf
(
buf
, (buf), 
fmt
, 

);

432 i(
r_t
 !
DB_ERROR_NOT_SET
)

433 
p
 +
	`tf
(p,

434 (
buf
- (
size_t
)(
p
 - buf), ": %s",

435 
r_t
 =
DB_ERROR_SET
 ? 
	`db_
(
r
) :

436 
	`__os_
(
r
, 
sysbuf
, (sysbuf)));

438 
dbv
->
	`db_r
(dbv, dbv->
db_fx
, 
buf
);

439 
	}
}

449 
	$__db_rfe
(
dbv
, 
r
, 
r_t
, 
fmt
, 

)

450 cڡ 
DB_ENV
 *
dbv
;

451 
r
;

452 
db_r_t_t
 
r_t
;

453 cڡ *
fmt
;

454 
va_li
 

;

456 
FILE
 *

;

457 
sysbuf
[1024];

459 

 = 
dbv
 =
NULL
 ||

460 
dbv
->
db_rfe
 =
NULL
 ? 
dr
 : dbenv->db_errfile;

462 i(
dbv
 !
NULL
 && dbv->
db_fx
 != NULL)

463 ()
	`rtf
(

, "%s: ", 
dbv
->
db_fx
);

464 i(
fmt
 !
NULL
) {

465 ()
	`vrtf
(

, 
fmt
, 

);

466 i(
r_t
 !
DB_ERROR_NOT_SET
)

467 ()
	`rtf
(

, ": ");

469 i(
r_t
 !
DB_ERROR_NOT_SET
)

470 ()
	`rtf
(

, "%s",

471 
r_t
 =
DB_ERROR_SET
 ? 
	`db_
(
r
) :

472 
	`__os_
(
r
, 
sysbuf
, (sysbuf)));

473 ()
	`rtf
(

, "\n");

474 ()
	`fush
(

);

475 
	}
}

485 #ifde
STDC_HEADERS


486 
	$__db_msgadd
(
DB_ENV
 *
dbv
, 
DB_MSGBUF
 *
mbp
, cڡ *
fmt
, ...)

488 
	$__db_msgadd
(
dbv
, 
mbp
, 
fmt
, 
va_i
)

489 
DB_ENV
 *
dbv
;

490 
DB_MSGBUF
 *
mbp
;

491 cڡ *
fmt
;

492 
va_d


495 
va_li
 

;

497 #ifde
STDC_HEADERS


498 
	`va_t
(

, 
fmt
);

500 
	`va_t
(

);

502 
	`__db_msgadd_
(
dbv
, 
mbp
, 
fmt
, 

);

503 
	`va_d
(

);

504 
	}
}

514 
	$__db_msgadd_
(
dbv
, 
mbp
, 
fmt
, 

)

515 
DB_ENV
 *
dbv
;

516 
DB_MSGBUF
 *
mbp
;

517 cڡ *
fmt
;

518 
va_li
 

;

520 
size_t
 
n
, 
ޒ
;

521 
buf
[2048];

523 
n
 = (
size_t
)
	`vtf
(
buf
, (buf), 
fmt
, 

);

530 
ޒ
 = (
size_t
)(
mbp
->
cur
 - mbp->
buf
);

531 i(
ޒ
 + 
n
 >
mbp
->len) {

532 i(
	`__os_loc
(
dbv
, 
mbp
->
n
 + + 256, &mbp->
buf
))

534 
mbp
->
n
 += (len + 256);

535 
mbp
->
cur
 = mbp->
buf
 + 
ޒ
;

538 
	`memy
(
mbp
->
cur
, 
buf
, 
n
 + 1);

539 
mbp
->
cur
 +
n
;

540 
	}
}

550 #ifde
STDC_HEADERS


551 
	$__db_msg
(cڡ 
DB_ENV
 *
dbv
, cڡ *
fmt
, ...)

553 
	$__db_msg
(
dbv
, 
fmt
, 
va_i
)

554 cڡ 
DB_ENV
 *
dbv
;

555 cڡ *
fmt
;

556 
va_d


559 
	`DB_REAL_MSG
(
dbv
, 
fmt
);

560 
	}
}

567 
	$__db_msg
(
dbv
, 
fmt
, 

)

568 cڡ 
DB_ENV
 *
dbv
;

569 cڡ *
fmt
;

570 
va_li
 

;

572 
buf
[2048];

574 ()
	`vtf
(
buf
, (buf), 
fmt
, 

);

576 
dbv
->
	`db_msg
(dbv, 
buf
);

577 
	}
}

584 
	$__db_msgfe
(
dbv
, 
fmt
, 

)

585 cڡ 
DB_ENV
 *
dbv
;

586 cڡ *
fmt
;

587 
va_li
 

;

589 
FILE
 *

;

591 

 = 
dbv
 =
NULL
 ||

592 
dbv
->
db_msgfe
 =
NULL
 ? 
dout
 : dbenv->db_msgfile;

593 ()
	`vrtf
(

, 
fmt
, 

);

595 ()
	`rtf
(

, "\n");

596 ()
	`fush
(

);

597 
	}
}

605 
	$__db_unknown_ag
(
dbv
, 
route
, 
ag
)

606 
DB_ENV
 *
dbv
;

607 *
route
;

608 
u_t32_t
 
ag
;

610 
	`__db_rx
(
dbv
, "%s: Unknowag: %#x", 
route
, (
u_t
)
ag
);

612 #ifde
DIAGNOSTIC


613 
	`__os_abt
();

616  (
EINVAL
);

617 
	}
}

625 
	$__db_unknown_ty
(
dbv
, 
route
, 
ty
)

626 
DB_ENV
 *
dbv
;

627 *
route
;

628 
DBTYPE
 
ty
;

630 
	`__db_rx
(
dbv
,

632 
route
, 
	`__db_dbty_to_rg
(
ty
));

634 #ifde
DIAGNOSTIC


635 
	`__os_abt
();

638  (
EINVAL
);

639 
	}
}

647 
	$__db_unknown_th
(
dbv
, 
route
)

648 
DB_ENV
 *
dbv
;

649 *
route
;

651 
	`__db_rx
(
dbv
, "%s: Uxed codth", 
route
);

653 #ifde
DIAGNOSTIC


654 
	`__os_abt
();

657  (
EINVAL
);

658 
	}
}

667 
	$__db_check_txn
(
dbp
, 
txn
, 
assoc_lock
, 
ad_
)

668 
DB
 *
dbp
;

669 
DB_TXN
 *
txn
;

670 
DB_LOCKER
 *
assoc_lock
;

671 
ad_
;

673 
DB_ENV
 *
dbv
;

674 
i
, 
t
;

676 
dbv
 = 
dbp
->dbenv;

686 i(
	`IS_RECOVERING
(
dbv
|| 
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
))

695 i(
txn
 =
NULL
 || 
	`F_ISSET
xn, 
TXN_PRIVATE
)) {

696 i(
dbp
->
cur_lock
 !
NULL
 &&

697 
dbp
->
cur_lock
->
id
 >
TXN_MINIMUM
)

698 
ݒ_r
;

700 i(!
ad_
 && 
	`F_ISSET
(
dbp
, 
DB_AM_TXN
)) {

701 
	`__db_rx
(
dbv
,

703  (
EINVAL
);

705 } i(
	`F_ISSET
(
txn
, 
TXN_CDSGROUP
)) {

706 i(!
	`CDB_LOCKING
(
dbv
)) {

707 
	`__db_rx
(
dbv
,

709  (
EINVAL
);

717 i(!
	`TXN_ON
(
dbv
))

718  (
	`__db_n_txn_v
(
dbv
));

720 i(!
	`F_ISSET
(
dbp
, 
DB_AM_TXN
)) {

721 
	`__db_rx
(
dbv
,

723  (
EINVAL
);

726 i(
	`F_ISSET
(
txn
, 
TXN_DEADLOCK
))

727  (
	`__db_txn_ddlock_r
(
dbv
, 
txn
));

728 i(
dbp
->
cur_lock
 !
NULL
 &&

729 
dbp
->
cur_lock
->
id
 >
TXN_MINIMUM
 &&

730 
dbp
->
cur_lock
->
id
 !
txn
->
txnid
) {

731 i((
t
 = 
	`__lock_lock_is_
(
dbv
,

732 
dbp
->
cur_lock
, 
txn
->
lock
, &
i
)) != 0)

733  (
t
);

734 i(!
i
)

735 
ݒ_r
;

754 i(!
ad_
 && 
dbp
->
assoc_lock
 !
NULL
 &&

755 
txn
 !
NULL
 && 
dbp
->
assoc_lock
 !
assoc_lock
) {

756 
	`__db_rx
(
dbv
,

758  (
EINVAL
);

764 i(
txn
 !
NULL
 && 
dbv
 !txn->
mg
->dbenv) {

765 
	`__db_rx
(
dbv
,

767  (
EINVAL
);

771 
ݒ_r
:

772 
	`__db_rx
(
dbv
,

774  (
EINVAL
);

775 
	}
}

784 
	$__db_txn_ddlock_r
(
dbv
, 
txn
)

785 
DB_ENV
 *
dbv
;

786 
DB_TXN
 *
txn
;

788 cڡ *
me
;

790 
me
 = 
NULL
;

791 ()
	`__txn_g_me
(
txn
, &
me
);

793 
	`__db_rx
(
dbv
,

795 
me
 =
NULL
 ? "" :ame,ame == NULL ? "" : ": ");

797  (
EINVAL
);

798 
	}
}

807 
	$__db_n_txn_v
(
dbv
)

808 
DB_ENV
 *
dbv
;

810 
	`__db_rx
(
dbv
, "DBnvironmentot configured forransactions");

811  (
EINVAL
);

812 
	}
}

821 
	$__db_c_toobig
(
dbv
, 
da_n
, 
fixed_c_n
)

822 
DB_ENV
 *
dbv
;

823 
u_t32_t
 
da_n
, 
fixed_c_n
;

825 
	`__db_rx
(
dbv
,

827 (
u_lg
)
da_n
, (u_lg)
fixed_c_n
);

828  (
EINVAL
);

829 
	}
}

838 
	$__db_c_
(
dbv
, 
da_size
, 
da_dn
)

839 
DB_ENV
 *
dbv
;

840 
u_t32_t
 
da_size
, 
da_dn
;

842 
	`__db_rx
(
dbv
,

844 "Recdgth", (
u_lg
)
da_size
, (u_lg)
da_dn
);

845  (
EINVAL
);

846 
	}
}

848 #i
defed
(
DIAGNOSTIC
|| defed(
DEBUG_ROP
|| defed(
DEBUG_WOP
)

856 
	$__dbc_loggg
(
dbc
)

857 
DBC
 *
dbc
;

859 
DB_ENV
 *
dbv
;

860 
DB_REP
 *
db_p
;

861 
t
;

863 
dbv
 = 
dbc
->
dbp
->dbenv;

864 
db_p
 = 
dbv
->
p_hd
;

866 
t
 = 
	`LOGGING_ON
(
dbv
) &&

867 !
	`F_ISSET
(
dbc
, 
DBC_RECOVER
&& !
	`IS_REP_CLIENT
(
dbv
);

872 i(
db_p
 =
NULL
 || 
	`F_ISSET
(
dbc
, 
DBC_RECOVER
))

873  (
t
);

875 #idef 
DEBUG_ROP


882 
REP
 *
p
;

884 
p
 = 
db_p
->
gi
;

889 i(
	`IS_REP_CLIENT
(
dbv
&& !
	`F_ISSET
(
dbc
->
dbp
, 
DB_AM_NOT_DURABLE
)) {

890 
	`__db_rx
(
dbv
, "dbc_logging: Client update");

891 
r
;

894 #ide
DEBUG_WOP


899 i(
	`IS_REP_MASTER
(
dbv
) &&

900 
dbc
->
txn
 =
NULL
 && !
	`F_ISSET
(dbc->
dbp
, 
DB_AM_NOT_DURABLE
)) {

901 
	`__db_rx
(
dbv
, "Dbc_logging: Masteron-txn update");

902 
r
;

907 
r
: 
	`__db_rx
(
dbv
, "Rep: flags 0x%lx msg_th %lu",

908 (
u_lg
)
p
->
ags
, (u_lg->
msg_th
);

909 
	`__db_rx
(
dbv
, "Rep: handle %lu, opcnt %lu",

910 (
u_lg
)
p
->
hd_t
, (u_lg->
_t
);

911 
	`__os_abt
();

916  (
t
);

917 
	}
}

927 
	$__db_check_l
(
dbv
, 
l
, 
ev
)

928 
DB_ENV
 *
dbv
;

929 
DB_LSN
 *
l
, *
ev
;

931 
	`__db_rx
(
dbv
,

933 (
u_lg
)(
l
)->
fe
, (u_lg)֢)->
offt
,

934 (
u_lg
)(
ev
)->
fe
, (u_lg)ջv)->
offt
);

935  (
EINVAL
);

936 
	}
}

944 
	$__db_rdly
(
dbv
, 
me
)

945 cڡ 
DB_ENV
 *
dbv
;

946 cڡ *
me
;

948 
	`__db_rx
(
dbv
, "%s:emmodifyd-ly daba", 
me
);

949  (
EACCES
);

950 
	}
}

958 
	$__db_a_r
(
dbp
)

959 cڡ 
DB
 *
dbp
;

961 
	`__db_rx
(
dbp
->
dbv
,

963 
dbp
->
ame
, (
u_lg
)dbp->
mpf
->
m
->
maxpgno
);

964  (
ENOSPC
);

965 
	}
}

975 
	$__db_ed
(
dbv
, 
msg
, 
pid
, 
tid
)

976 cڡ 
DB_ENV
 *
dbv
;

977 cڡ *
msg
;

978 
pid_t
 
pid
;

979 
db_thadid_t
 
tid
;

981 
buf
[
DB_THREADID_STRLEN
];

983 
	`__db_rx
(
dbv
, "Thread/process %s failed: %s",

984 
dbv
->
	`thad_id_rg
((
DB_ENV
*)dbv, 
pid
, 
tid
, 
buf
), 
msg
);

985  (
DB_RUNRECOVERY
);

986 
	}
}

	@../common/db_getlong.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

21 
	$__db_glg
(
dbv
, 
ogme
, 
p
, 
m
, 
max
, 
ܕ
)

22 
DB_ENV
 *
dbv
;

23 cڡ *
ogme
;

24 *
p
;

25 
m
, 
max
, *
ܕ
;

27 
v
;

28 *
d
;

30 
	`__os_t_o
(0);

31 
v
 = 
	`
(
p
, &
d
, 10);

32 i((
v
 =
LONG_MIN
 || v =
LONG_MAX
) &&

33 
	`__os_g_o
(=
ERANGE
) {

34 i(
dbv
 =
NULL
)

35 
	`rtf
(
dr
,

36 "%s: %s: %s\n", 
ogme
, 
p
, 
	`
(
ERANGE
));

38 
dbv
->
	`r
(dbv, 
ERANGE
, "%s", 
p
);

39  (
ERANGE
);

41 i(
p
[0] ='\0' || (
d
[0] != '\0' &&nd[0] != '\n')) {

42 i(
dbv
 =
NULL
)

43 
	`rtf
(
dr
,

44 "%s: %s: Invidumigumt\n", 
ogme
, 
p
);

46 
dbv
->
	`rx
(dbv, "%s: Invidumigumt", 
p
);

47  (
EINVAL
);

49 i(
v
 < 
m
) {

50 i(
dbv
 =
NULL
)

51 
	`rtf
(
dr
,

53 
ogme
, 
p
, 
m
);

55 
dbv
->
	`rx
(dbenv,

56 "%s: Lesth mimum vu(%ld)", 
p
, 
m
);

57  (
ERANGE
);

59 i(
v
 > 
max
) {

60 i(
dbv
 =
NULL
)

61 
	`rtf
(
dr
,

63 
ogme
, 
p
, 
max
);

65 
dbv
->
	`rx
(dbenv,

66 "%s: Gh maximum vu(%ld)", 
p
, 
max
);

67  (
ERANGE
);

69 *
ܕ
 = 
v
;

71 
	}
}

81 
	$__db_gulg
(
dbv
, 
ogme
, 
p
, 
m
, 
max
, 
ܕ
)

82 
DB_ENV
 *
dbv
;

83 cڡ *
ogme
;

84 *
p
;

85 
u_lg
 
m
, 
max
, *
ܕ
;

87 
u_lg
 
v
;

88 *
d
;

90 
	`__os_t_o
(0);

91 
v
 = 
	`oul
(
p
, &
d
, 10);

92 i(
v
 =
ULONG_MAX
 && 
	`__os_g_o
(=
ERANGE
) {

93 i(
dbv
 =
NULL
)

94 
	`rtf
(
dr
,

95 "%s: %s: %s\n", 
ogme
, 
p
, 
	`
(
ERANGE
));

97 
dbv
->
	`r
(dbv, 
ERANGE
, "%s", 
p
);

98  (
ERANGE
);

100 i(
p
[0] ='\0' || (
d
[0] != '\0' &&nd[0] != '\n')) {

101 i(
dbv
 =
NULL
)

102 
	`rtf
(
dr
,

103 "%s: %s: Invidumigumt\n", 
ogme
, 
p
);

105 
dbv
->
	`rx
(dbv, "%s: Invidumigumt", 
p
);

106  (
EINVAL
);

108 i(
v
 < 
m
) {

109 i(
dbv
 =
NULL
)

110 
	`rtf
(
dr
,

112 
ogme
, 
p
, 
m
);

114 
dbv
->
	`rx
(dbenv,

115 "%s: Lesth mimum vu(%lu)", 
p
, 
m
);

116  (
ERANGE
);

125 i(
max
 !0 && 
v
 > max) {

126 i(
dbv
 =
NULL
)

127 
	`rtf
(
dr
,

129 
ogme
, 
p
, 
max
);

131 
dbv
->
	`rx
(dbenv,

132 "%s: Gh maximum vu(%lu)", 
p
, 
max
);

133  (
ERANGE
);

135 *
ܕ
 = 
v
;

137 
	}
}

	@../common/db_idspace.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
__db_idcmp
 
__P
((const *, const *));

16 
	$__db_idcmp
(
a
, 
b
)

17 cڡ *
a
;

18 cڡ *
b
;

20 
u_t32_t
 
i
, 
j
;

22 
i
 = *(
u_t32_t
 *)
a
;

23 
j
 = *(
u_t32_t
 *)
b
;

25 i(
i
 < 
j
)

27 i(
i
 > 
j
)

31 
	}
}

44 
	$__db_ida
(
u
, 
n
, 
mp
, 
maxp
)

45 
u_t32_t
 *
u
;

46 
n
;

47 
u_t32_t
 *
mp
, *
maxp
;

49 
i
, 
low
;

50 
u_t32_t
 
g
, 
t
;

53 i(
n
 == 1) {

60 i(
u
[0] !*
maxp
)

61 *
mp
 = 
u
[0];

62 *
maxp
 = 
u
[0] - 1;

66 
g
 = 0;

67 
low
 = 0;

68 
	`qst
(
u
, (
size_t
)
n
, (
u_t32_t
), 
__db_idcmp
);

69 
i
 = 0; i < 
n
 - 1; i++)

70 i((
t
 = (
u
[
i
 + 1] - inu[i])> 
g
) {

71 
g
 = 
t
;

72 
low
 = 
i
;

76 i((*
maxp
 - 
u
[
n
 - 1]+ (u[0] - *
mp
> 
g
) {

78 i(
u
[
n
 - 1] !*
maxp
)

79 *
mp
 = 
u
[
n
 - 1];

80 *
maxp
 = 
u
[0] - 1;

82 *
mp
 = 
u
[
low
];

83 *
maxp
 = 
u
[
low
 + 1] - 1;

85 
	}
}

	@../common/db_log2.c

40 
	~"db_cfig.h
"

42 
	~"db_t.h
"

47 
u_t32_t


48 
	$__db_log2
(
num
)

49 
u_t32_t
 
num
;

51 
u_t32_t
 
i
, 
lim
;

53 
lim
 = 1;

54 
i
 = 0; 
lim
 < 
num
;imit =imit << 1)

55 ++
i
;

56  (
i
);

57 
	}
}

	@../common/db_shash.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

19 
u_t32_t


20 
	$__db_bsize
(
n_bucks
)

21 
u_t32_t
 
n_bucks
;

41 
	#HASH_SIZE
(
pow
, 
ime
) { \

42 i((
pow
>
n_bucks
) \

43  (
ime
); \

44 }

	)

45 
	`HASH_SIZE
(32, 37);

46 
	`HASH_SIZE
(64, 67);

47 
	`HASH_SIZE
(128, 131);

48 
	`HASH_SIZE
(256, 257);

49 
	`HASH_SIZE
(512, 521);

50 
	`HASH_SIZE
(1024, 1031);

51 
	`HASH_SIZE
(2048, 2053);

52 
	`HASH_SIZE
(4096, 4099);

53 
	`HASH_SIZE
(8192, 8191);

54 
	`HASH_SIZE
(16384, 16381);

55 
	`HASH_SIZE
(32768, 32771);

56 
	`HASH_SIZE
(65536, 65537);

57 
	`HASH_SIZE
(131072, 131071);

58 
	`HASH_SIZE
(262144, 262147);

59 
	`HASH_SIZE
(393216, 393209);

60 
	`HASH_SIZE
(524288, 524287);

61 
	`HASH_SIZE
(786432, 786431);

62 
	`HASH_SIZE
(1048576, 1048573);

63 
	`HASH_SIZE
(1572864, 1572869);

64 
	`HASH_SIZE
(2097152, 2097169);

65 
	`HASH_SIZE
(3145728, 3145721);

66 
	`HASH_SIZE
(4194304, 4194301);

67 
	`HASH_SIZE
(6291456, 6291449);

68 
	`HASH_SIZE
(8388608, 8388617);

69 
	`HASH_SIZE
(12582912, 12582917);

70 
	`HASH_SIZE
(16777216, 16777213);

71 
	`HASH_SIZE
(25165824, 25165813);

72 
	`HASH_SIZE
(33554432, 33554393);

73 
	`HASH_SIZE
(50331648, 50331653);

74 
	`HASH_SIZE
(67108864, 67108859);

75 
	`HASH_SIZE
(100663296, 100663291);

76 
	`HASH_SIZE
(134217728, 134217757);

77 
	`HASH_SIZE
(201326592, 201326611);

78 
	`HASH_SIZE
(268435456, 268435459);

79 
	`HASH_SIZE
(402653184, 402653189);

80 
	`HASH_SIZE
(536870912, 536870909);

81 
	`HASH_SIZE
(805306368, 805306357);

82 
	`HASH_SIZE
(1073741824, 1073741827);

84 
	}
}

93 
	$__db_hash
(
beg
, 
mts
)

94 *
beg
;

95 
u_t32_t
 
mts
;

97 
u_t32_t
 
i
;

98 
	`SH_TAILQ_HEAD
(
hash_hd
*
hdp
;

100 
hdp
 = (
hash_hd
 *)
beg
;

102 
i
 = 0; i < 
mts
; i++, 
hdp
++)

103 
	`SH_TAILQ_INIT
(
hdp
);

104 
	}
}

	@../common/mkpath.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__db_mkth
(
dbv
, 
me
)

21 
DB_ENV
 *
dbv
;

22 cڡ *
me
;

24 
size_t
 
n
;

25 
t
;

26 *
p
, *
t
, 
vech
;

32 
n
 = 
	`
(
me
) + 1;

33 i((
t
 = 
	`__os_mloc
(
dbv
, 
n
, &
t
)) != 0)

34  (
t
);

35 
	`memy
(
t
, 
me
, 
n
);

43 i(
PATH_SEPARATOR
[1] == '\0') {

44 
p
 = 
t
 + 1;[0] != '\0'; ++p)

45 i(
p
[0] =
PATH_SEPARATOR
[0]) {

46 
vech
 = *
p
;

47 *
p
 = '\0';

48 i(
	`__os_exis
(
dbv
, 
t
, 
NULL
) &&

49 (
t
 = 
	`__os_mkd
(

50 
dbv
, 
t
, dbv->
d_mode
)) != 0)

52 *
p
 = 
vech
;

55 
p
 = 
t
 + 1;[0] != '\0'; ++p)

56 i(
	`rchr
(
PATH_SEPARATOR
, 
p
[0]!
NULL
) {

57 
vech
 = *
p
;

58 *
p
 = '\0';

59 i(
	`__os_exis
(
dbv
, 
t
, 
NULL
) &&

60 (
t
 = 
	`__os_mkd
(

61 
dbv
, 
t
, dbv->
d_mode
)) != 0)

63 *
p
 = 
vech
;

66 
	`__os_
(
dbv
, 
t
);

67  (
t
);

68 
	}
}

	@../common/util_arg.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 *
__db_rp
 
__P
((**, const *));

22 
	$__db_ut_g
(
g0
, 
r
, 
g
, 
gvp
)

23 *
g0
, *
r
, ***
gvp
;

24 *
g
;

26 
n
, 
t
;

27 **

, **
gv
;

29 
	#MAXARGS
 25

	)

30 i((
t
 =

31 
	`__os_mloc
(
NULL
, (
MAXARGS
 + 1* (**), &
gv
)) != 0)

32  (
t
);

34 

 = 
gv
;

35 *

++ = 
g0
;

36 
n
 = 1; (*

 = 
	`__db_rp
(&
r
, " \t")!
NULL
;)

37 i(**

 != '\0') {

38 ++

;

39 i(++
n
 =
MAXARGS
)

42 *

 = 
NULL
;

44 *
g
 = 

 - 
gv
;

45 *
gvp
 = 
gv
;

48 
	}
}

94 
	$__db_rp
(
rgp
, 
dim
)

95 **
rgp
;

96 cڡ *
dim
;

98 cڡ *
p
;

99 
c
, 
sc
;

100 *
s
, *
tok
;

102 i((
s
 = *
rgp
=
NULL
)

103  (
NULL
);

104 
tok
 = 
s
;;) {

105 
c
 = *
s
++;

106 
p
 = 
dim
;

108 i((
sc
 = *
p
++=
c
) {

109 i(
c
 == 0)

110 
s
 = 
NULL
;

112 
s
[-1] = 0;

113 *
rgp
 = 
s
;

114  (
tok
);

116 } 
sc
 != 0);

119 
	}
}

	@../common/util_cache.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__db_ut_che
(
dbp
, 
ch
, 
siz
)

21 
DB
 *
dbp
;

22 
u_t32_t
 *
ch
;

23 *
siz
;

25 
u_t32_t
 
pgsize
;

26 
t
;

29 i((
t
 = 
dbp
->
	`g_gesize
(dbp, &
pgsize
)) != 0)

30  (
t
);

40 i((*
ch
 / 
pgsize
< 
DB_MINPAGECACHE
) {

41 *
siz
 = 1;

42 *
ch
 = 
pgsize
 * 
DB_MINPAGECACHE
;

44 *
siz
 = 0;

47 
	}
}

	@../common/util_log.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__db_ut_logt
(
ogme
, 
ame
)

21 cڡ *
ogme
;

22 *
ame
;

24 
pid_t
 
pid
;

25 
FILE
 *

;

26 
time_t
 
now
;

27 
time_buf
[
CTIME_BUFLEN
];

29 i((

 = 
	`fݒ
(
ame
, "w")=
NULL
)

30 
r
;

32 ()
	`time
(&
now
);

34 
	`__os_id
(
NULL
, &
pid
, NULL);

35 
	`rtf
(

,

36 "%s: %lu %s", 
ogme
, (
u_lg
)
pid
, 
	`__db_ime
(&
now
, 
time_buf
));

38 i(
	`fo
(

=
EOF
)

39 
r
;

43 
r
: 
	`rtf
(
dr
, "%s: %s: %s\n", 
ogme
, 
ame
, 
	`
(
o
));

45 
	}
}

	@../common/util_sig.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	gu
;

14 
t_sigl
 
__P
((, ));

15 
sigl_hdr
 
__P
(());

22 
	$sigl_hdr
(
signo
)

23 
signo
;

25 #ide
HAVE_SIGACTION


27 
	`t_sigl
(
signo
, 0);

30 i((
u
 = 
signo
) == 0)

31 
u
 = 
SIGINT
;

32 
	}
}

38 
	$t_sigl
(
s
, 
is_dt
)

39 
s
, 
is_dt
;

44 #ifde
HAVE_SIGACTION


45 
sigai
 

, 
o
;

47 

.
_hdr
 = 
is_dt
 ? 
SIG_DFL
 : 
sigl_hdr
;

48 ()
	`sigemyt
(&

.
_mask
);

49 

.
_ags
 = 0;

50 ()
	`sigai
(
s
, &

, &
o
);

52 ()
	`sigl
(
s
, 
is_dt
 ? 
SIG_DFL
 : 
sigl_hdr
);

54 
	}
}

62 
	$__db_ut_sig
()

69 #ifde
SIGHUP


70 
	`t_sigl
(
SIGHUP
, 0);

72 #ifde
SIGINT


73 
	`t_sigl
(
SIGINT
, 0);

75 #ifde
SIGPIPE


76 
	`t_sigl
(
SIGPIPE
, 0);

78 #ifde
SIGTERM


79 
	`t_sigl
(
SIGTERM
, 0);

81 
	}
}

90 
	$__db_ut_ued
()

92  (
u
 != 0);

93 
	}
}

101 
	$__db_ut_signd
()

104 i(
u
 != 0) {

105 
	`t_sigl
(
u
, 1);

107 ()
	`i
(
u
);

110 
	}
}

	@../crypto/aes_method.c

12 
	~"db_cfig.h
"

14 
	~"db_t.h
"

15 
	~"dbc/yo.h
"

16 
	~"dbc/hmac.h
"

18 
__s_r
 
__P
((
DB_ENV
 *, ));

19 
__s_divekeys
 
__P
((
DB_ENV
 *, 
DB_CIPHER
 *, 
u_t8_t
 *, 
size_t
));

28 
	$__s_tup
(
dbv
, 
db_ch
)

29 
DB_ENV
 *
dbv
;

30 
DB_CIPHER
 *
db_ch
;

32 
AES_CIPHER
 *
s_ch
;

33 
t
;

35 
db_ch
->
adj_size
 = 
__s_adj_size
;

36 
db_ch
->
o
 = 
__s_o
;

37 
db_ch
->
dey
 = 
__s_dey
;

38 
db_ch
->
y
 = 
__s_y
;

39 
db_ch
->

 = 
__s_
;

40 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
AES_CIPHER
), &
s_ch
)) != 0)

41  (
t
);

42 
db_ch
->
da
 = 
s_ch
;

44 
	}
}

53 
u_t


54 
	$__s_adj_size
(
n
)

55 
size_t
 
n
;

57 i(
n
 % 
DB_AES_CHUNK
 == 0)

59  (
DB_AES_CHUNK
 - (
u_t
)(
n
 % DB_AES_CHUNK));

60 
	}
}

69 
	$__s_o
(
dbv
, 
da
)

70 
DB_ENV
 *
dbv
;

71 *
da
;

73 
	`__os_
(
dbv
, 
da
);

75 
	}
}

85 
	$__s_dey
(
dbv
, 
s_da
, 
iv
, 
ch
, 
ch_n
)

86 
DB_ENV
 *
dbv
;

87 *
s_da
;

88 *
iv
;

89 
u_t8_t
 *
ch
;

90 
size_t
 
ch_n
;

92 
AES_CIPHER
 *
s
;

93 
chIn
 
c
;

94 
t
;

96 
s
 = (
AES_CIPHER
 *)
s_da
;

97 i(
iv
 =
NULL
 || 
ch
 == NULL)

98  (
EINVAL
);

99 i((
ch_n
 % 
DB_AES_CHUNK
) != 0)

100  (
EINVAL
);

104 i((
t
 = 
	`__db_chIn
(&
c
, 
MODE_CBC
, 
iv
)) < 0) {

105 
	`__s_r
(
dbv
, 
t
);

106  (
EAGAIN
);

110 i((
t
 = 
	`__db_blockDey
(&
c
, &
s
->
dey_ki
, 
ch
,

111 
ch_n
 * 8, 
ch
)) < 0) {

112 
	`__s_r
(
dbv
, 
t
);

113  (
EAGAIN
);

116 
	}
}

126 
	$__s_y
(
dbv
, 
s_da
, 
iv
, 
da
, 
da_n
)

127 
DB_ENV
 *
dbv
;

128 *
s_da
;

129 *
iv
;

130 
u_t8_t
 *
da
;

131 
size_t
 
da_n
;

133 
AES_CIPHER
 *
s
;

134 
chIn
 
c
;

135 
u_t32_t
 
tmp_iv
[
DB_IV_BYTES
/4];

136 
t
;

138 
s
 = (
AES_CIPHER
 *)
s_da
;

139 i(
s
 =
NULL
 || 
da
 == NULL)

140  (
EINVAL
);

141 i((
da_n
 % 
DB_AES_CHUNK
) != 0)

142  (
EINVAL
);

152 i((
t
 = 
	`__db_ge_iv
(
dbv
, 
tmp_iv
)) != 0)

153  (
t
);

158 i((
t
 = 
	`__db_chIn
(&
c
, 
MODE_CBC
, (*)
tmp_iv
)) < 0) {

159 
	`__s_r
(
dbv
, 
t
);

160  (
EAGAIN
);

164 i((
t
 = 
	`__db_blockEny
(&
c
, &
s
->
y_ki
, 
da
, 
da_n
 * 8,

165 
da
)) < 0) {

166 
	`__s_r
(
dbv
, 
t
);

167  (
EAGAIN
);

169 
	`memy
(
iv
, 
tmp_iv
, 
DB_IV_BYTES
);

171 
	}
}

180 
	$__s_
(
dbv
, 
db_ch
)

181 
DB_ENV
 *
dbv
;

182 
DB_CIPHER
 *
db_ch
;

184  (
	`__s_divekeys
(
dbv
, 
db_ch
, (
u_t8_t
 *)dbv->
sswd
,

185 
dbv
->
sswd_n
));

186 
	}
}

189 
	$__s_divekeys
(
dbv
, 
db_ch
, 
sswd
, 

)

190 
DB_ENV
 *
dbv
;

191 
DB_CIPHER
 *
db_ch
;

192 
u_t8_t
 *
sswd
;

193 
size_t
 

;

195 
SHA1_CTX
 
x
;

196 
AES_CIPHER
 *
s
;

197 
t
;

198 
u_t32_t
 
mp
[
DB_MAC_KEY
/4];

200 i(
sswd
 =
NULL
)

201  (
EINVAL
);

203 
s
 = (
AES_CIPHER
 *)
db_ch
->
da
;

206 
	`__db_SHA1In
(&
x
);

207 
	`__db_SHA1Upde
(&
x
, 
sswd
, 

);

208 
	`__db_SHA1Upde
(&
x
, (
u_t8_t
 *)
DB_ENC_MAGIC
, 
	`
(DB_ENC_MAGIC));

209 
	`__db_SHA1Upde
(&
x
, 
sswd
, 

);

210 
	`__db_SHA1F
((
u_t8_t
 *)
mp
, &
x
);

212 i((
t
 = 
	`__db_makeKey
(&
s
->
y_ki
, 
DIR_ENCRYPT
,

213 
DB_AES_KEYLEN
, (*)
mp
)!
TRUE
) {

214 
	`__s_r
(
dbv
, 
t
);

215  (
EAGAIN
);

217 i((
t
 = 
	`__db_makeKey
(&
s
->
dey_ki
, 
DIR_DECRYPT
,

218 
DB_AES_KEYLEN
, (*)
mp
)!
TRUE
) {

219 
	`__s_r
(
dbv
, 
t
);

220  (
EAGAIN
);

223 
	}
}

231 
	$__s_r
(
dbv
, 
r
)

232 
DB_ENV
 *
dbv
;

233 
r
;

235 *
rr
;

237 
r
) {

238 
BAD_KEY_DIR
:

239 
rr
 = "AES key direction is invalid";

241 
BAD_KEY_MAT
:

242 
rr
 = "AES key materialot of correctength";

244 
BAD_KEY_INSTANCE
:

245 
rr
 = "AES keyasswdot valid";

247 
BAD_CIPHER_MODE
:

248 
rr
 = "AES cipher in wrong state (not initialized)";

250 
BAD_BLOCK_LENGTH
:

251 
rr
 = "AES bad blockength";

253 
BAD_CIPHER_INSTANCE
:

254 
rr
 = "AES cipher instance is invalid";

256 
BAD_DATA
:

257 
rr
 = "AES data contentsre invalid";

259 
BAD_OTHER
:

260 
rr
 = "AES unknownrror";

263 
rr
 = "AESrror unrecognized";

266 
	`__db_rx
(
dbv
, 
rr
);

268 
	}
}

	@../crypto/crypto.c

12 
	~"db_cfig.h
"

14 
	~"db_t.h
"

15 
	~"dbc/db_ge.h
"

16 
	~"dbc/yo.h
"

23 
	$__yo_gi_
(
dbv
)

24 
DB_ENV
 *
dbv
;

26 
REGENV
 *
nv
;

27 
REGINFO
 *
f
;

28 
CIPHER
 *
ch
;

29 
DB_CIPHER
 *
db_ch
;

30 *
sh_sswd
;

31 
t
;

33 
db_ch
 = 
dbv
->
yo_hd
;

35 
t
 = 0;

36 
f
 = 
dbv
->
gfo
;

37 
nv
 = 
f
->
imy
;

38 i(
nv
->
ch_off
 =
INVALID_ROFF
) {

39 i(!
	`CRYPTO_ON
(
dbv
))

41 i(!
	`F_ISSET
(
f
, 
REGION_CREATE
)) {

42 
	`__db_rx
(
dbv
,

44  (
EINVAL
);

46 i(
	`F_ISSET
(
db_ch
, 
CIPHER_ANY
)) {

47 
	`__db_rx
(
dbv
, "Encryptionlgorithmot supplied");

48  (
EINVAL
);

55 i((
t
 = 
	`__v_loc
(
f
, (
CIPHER
), &
ch
)) != 0)

56  (
t
);

57 
	`memt
(
ch
, 0, (*cipher));

58 i((
t
 =

59 
	`__v_loc
(
f
, 
dbv
->
sswd_n
, &
sh_sswd
)) != 0) {

60 
	`__v_loc_
(
f
, 
ch
);

61  (
t
);

63 
	`memt
(
sh_sswd
, 0, 
dbv
->
sswd_n
);

64 
ch
->
sswd
 = 
	`R_OFFSET
(
f
, 
sh_sswd
);

65 
ch
->
sswd_n
 = 
dbv
->passwd_len;

66 
ch
->
ags
 = 
db_ch
->
g
;

67 
	`memy
(
sh_sswd
, 
dbv
->
sswd
, 
ch
->
sswd_n
);

68 
nv
->
ch_off
 = 
	`R_OFFSET
(
f
, 
ch
);

70 i(!
	`CRYPTO_ON
(
dbv
)) {

71 
	`__db_rx
(
dbv
,

73  (
EINVAL
);

75 
ch
 = 
	`R_ADDR
(
f
, 
nv
->
ch_off
);

76 
sh_sswd
 = 
	`R_ADDR
(
f
, 
ch
->
sswd
);

77 i((
ch
->
sswd_n
 !
dbv
->passwd_len) ||

78 
	`memcmp
(
dbv
->
sswd
, 
sh_sswd
, 
ch
->
sswd_n
) != 0) {

79 
	`__db_rx
(
dbv
, "Invalidassword");

80  (
EPERM
);

82 i(!
	`F_ISSET
(
db_ch
, 
CIPHER_ANY
) &&

83 
db_ch
->
g
 !
ch
->
ags
) {

84 
	`__db_rx
(
dbv
,

86  (
EINVAL
);

88 i(
	`F_ISSET
(
db_ch
, 
CIPHER_ANY
))

94 i((
t
 = 
	`__yo_gtup
(
dbv
, 
db_ch
,

95 
ch
->
ags
, 0)) != 0)

96  (
t
);

98 
t
 = 
db_ch
->
	`
(
dbv
, db_cipher);

105 
	`memt
(
dbv
->
sswd
, 0xff, dbv->
sswd_n
-1);

106 
	`__os_
(
dbv
, dbv->
sswd
);

107 
dbv
->
sswd
 = 
NULL
;

108 
dbv
->
sswd_n
 = 0;

110  (
t
);

111 
	}
}

120 
	$__yo_v_o
(
dbv
)

121 
DB_ENV
 *
dbv
;

123 
DB_CIPHER
 *
db_ch
;

124 
t
;

126 i(
dbv
->
sswd
 !
NULL
) {

127 
	`memt
(
dbv
->
sswd
, 0xff, dbv->
sswd_n
-1);

128 
	`__os_
(
dbv
, dbv->
sswd
);

129 
dbv
->
sswd
 = 
NULL
;

132 i(!
	`CRYPTO_ON
(
dbv
))

135 
t
 = 0;

136 
db_ch
 = 
dbv
->
yo_hd
;

137 i(!
	`F_ISSET
(
db_ch
, 
CIPHER_ANY
))

138 
t
 = 
db_ch
->
	`o
(
dbv
, db_ch->
da
);

139 
	`__os_
(
dbv
, 
db_ch
);

141 
dbv
->
yo_hd
 = 
NULL
;

142  (
t
);

143 
	}
}

152 
	$__yo_v_esh
(
dbv
)

153 
DB_ENV
 *
dbv
;

155 
CIPHER
 *
ch
;

156 
REGENV
 *
nv
;

157 
REGINFO
 *
f
;

164 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

165 
f
 = 
dbv
->
gfo
;

166 
nv
 = 
f
->
imy
;

167 i(
nv
->
ch_off
 !
INVALID_ROFF
) {

168 
ch
 = 
	`R_ADDR
(
f
, 
nv
->
ch_off
);

169 
	`__v_loc_
(
f
, 
	`R_ADDR
(f, 
ch
->
sswd
));

170 
	`__v_loc_
(
f
, 
ch
);

174 
	}
}

184 
	$__yo_gtup
(
dbv
, 
db_ch
, 
g
, 
do_
)

185 
DB_ENV
 *
dbv
;

186 
DB_CIPHER
 *
db_ch
;

187 
u_t32_t
 
g
;

188 
do_
;

190 
t
;

192 
t
 = 0;

193 i(!
	`CRYPTO_ON
(
dbv
)) {

194 
	`__db_rx
(
dbv
, "No cipher structure given");

195  (
EINVAL
);

197 
	`F_CLR
(
db_ch
, 
CIPHER_ANY
);

198 
g
) {

199 
CIPHER_AES
:

200 
db_ch
->
g
 = 
CIPHER_AES
;

201 
t
 = 
	`__s_tup
(
dbv
, 
db_ch
);

204 
t
 = 
	`__db_nic
(
dbv
, 
EINVAL
);

207 i(
t
 =0 && 
do_
)

208 
t
 = 
db_ch
->
	`
(
dbv
, db_cipher);

209  (
t
);

210 
	}
}

219 
	$__yo_dey_ma
(
dbv
, 
dbp
, 
mbuf
, 
do_machk
)

220 
DB_ENV
 *
dbv
;

221 
DB
 *
dbp
;

222 
u_t8_t
 *
mbuf
;

223 
do_machk
;

225 
DB_CIPHER
 *
db_ch
;

226 
DB
 
dummydb
;

227 
DBMETA
 *
ma
;

228 
size_t
 
pg_off
;

229 
t
;

230 
u_t8_t
 *
iv
;

238 i(
dbp
 =
NULL
) {

239 
	`memt
(&
dummydb
, 0, (
DB
));

240 
dbp
 = &
dummydb
;

243 
t
 = 0;

244 
ma
 = (
DBMETA
 *)
mbuf
;

262 i(
ma
->
magic
 =
DB_HASHMAGIC
 && ma->
vsi
 <= 5)

280 i(
ma
->
y_g
 != 0) {

281 
db_ch
 = (
DB_CIPHER
 *)
dbv
->
yo_hd
;

282 i(!
	`F_ISSET
(
dbp
, 
DB_AM_ENCRYPT
)) {

283 i(!
	`CRYPTO_ON
(
dbv
)) {

284 
	`__db_rx
(
dbv
,

286  (
EINVAL
);

294 
	`F_SET
(
dbp
, 
DB_AM_ENCRYPT
|
DB_AM_CHKSUM
);

300 
	`DB_ASSERT
(
dbv
, 
	`CRYPTO_ON
(dbenv));

301 i(!
	`F_ISSET
(
db_ch
, 
CIPHER_ANY
) &&

302 
ma
->
y_g
 !
db_ch
->
g
) {

303 
	`__db_rx
(
dbv
,

305  (
EINVAL
);

307 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
));

308 
iv
 = ((
BTMETA
 *)
mbuf
)->iv;

314 
pg_off
 = 
	`P_OVERHEAD
(
dbp
);

315 
g_y
:

320 i(!
	`F_ISSET
(
db_ch
, 
CIPHER_ANY
)) {

321 i(
do_machk
 && (
t
 = 
db_ch
->
	`dey
(
dbv
,

322 
db_ch
->
da
, 
iv
, 
mbuf
 + 
pg_off
,

323 
DBMETASIZE
 - 
pg_off
)))

324  (
t
);

325 i(((
BTMETA
 *)
ma
)->
yo_magic
 !=

326 
ma
->
magic
) {

327 
	`__db_rx
(
dbv
, "Invalidassword");

328  (
EINVAL
);

342 
t
 = 
	`__yo_gtup
(
dbv
, 
db_ch
, 
ma
->
y_g
, 1);

343 
g_y
;

344 } i(
	`F_ISSET
(
dbp
, 
DB_AM_ENCRYPT
)) {

365 
	`__db_rx
(
dbv
,

367  (
EINVAL
);

369  (
t
);

370 
	}
}

380 
	$__yo_t_sswd
(
dbv_c
, 
dbv_de
)

381 
DB_ENV
 *
dbv_c
, *
dbv_de
;

383 
CIPHER
 *
ch
;

384 
REGENV
 *
nv
;

385 
REGINFO
 *
f
;

386 *
sh_sswd
;

388 
f
 = 
dbv_c
->
gfo
;

389 
nv
 = 
f
->
imy
;

391 
	`DB_ASSERT
(
dbv_c
, 
	`CRYPTO_ON
(dbenv_src));

393 
ch
 = 
	`R_ADDR
(
f
, 
nv
->
ch_off
);

394 
sh_sswd
 = 
	`R_ADDR
(
f
, 
ch
->
sswd
);

395  (
	`__v_t_y
(
dbv_de
, 
sh_sswd
, 
DB_ENCRYPT_AES
));

396 
	}
}

	@../crypto/mersenne/mt19937db.c

4 
	~"db_cfig.h
"

6 
	~"db_t.h
"

7 
	~"dbc/yo.h
"

8 
	~"dbc/hmac.h
"

37 
	#N
 624

	)

38 
	#M
 397

	)

39 
	#MATRIX_A
 0x9908b0d

	)

40 
	#UPPER_MASK
 0x80000000

	)

41 
	#LOWER_MASK
 0x7ffffff

	)

44 
	#TEMPERING_MASK_B
 0x9d2c5680

	)

45 
	#TEMPERING_MASK_C
 0xefc60000

	)

46 
	#TEMPERING_SHIFT_U
(
y
(y >> 11)

	)

47 
	#TEMPERING_SHIFT_S
(
y
(y << 7)

	)

48 
	#TEMPERING_SHIFT_T
(
y
(y << 15)

	)

49 
	#TEMPERING_SHIFT_L
(
y
(y >> 18)

	)

51 
__db_sgnd
 
__P
((, *, *));

52 #ifdef 
NOT_USED


53 
__db_lsgnd
 
__P
((*, *, *));

55 
__db_gnd
 
__P
((
DB_ENV
 *));

64 
	$__db_ge_iv
(
dbv
, 
iv
)

65 
DB_ENV
 *
dbv
;

66 
u_t32_t
 *
iv
;

68 
i
, 
n
, 
t
;

70 
t
 = 0;

71 
n
 = 
DB_IV_BYTES
 / (
u_t32_t
);

72 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_mt
);

73 i(
dbv
->
mt
 =
NULL
) {

74 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
N
*(),

75 &
dbv
->
mt
)) != 0)

76  (
t
);

78 
dbv
->
mti
 = 
N
 + 1;

80 
i
 = 0; i < 
n
; i++) {

85 
iv
[
i
] = (
u_t32_t
)
	`__db_gnd
(
dbv
);

86 } 
iv
[
i
] == 0);

89 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_mt
);

91 
	}
}

95 
	$__db_sgnd
(
ed
, 
mt
, 
mt
)

96 
ed
;

97 
mt
[];

98 *
mt
;

100 
i
;

102 
	`DB_ASSERT
(
NULL
, 
ed
 != 0);

103 
i
=0;i<
N
;i++) {

104 
mt
[
i
] = 
ed
 & 0xffff0000;

105 
ed
 = 69069 * seed + 1;

106 
mt
[
i
] |(
ed
 & 0xffff0000) >> 16;

107 
ed
 = 69069 * seed + 1;

109 *
mt
 = 
N
;

110 
	}
}

112 #ifdef 
NOT_USED


123 
	$__db_lsgnd
(
ed_y
, 
mt
, 
mt
)

124 
ed_y
[];

125 
mt
[];

126 *
mt
;

129 
i
;

131 
i
=0;i<
N
;i++)

132 
mt
[
i
] = 
ed_y
[i];

133 *
mt
=
N
;

134 
	}
}

138 
	$__db_gnd
(
dbv
)

139 
DB_ENV
 *
dbv
;

141 
db_timeec
 
ts
;

142 
y
;

143 
mag01
[2]={0x0, 
MATRIX_A
};

145 
u_t32_t
 
ed
;

150 i(
dbv
->
mti
 >
N
) {

151 
kk
;

153 i(
dbv
->
mti
 =
N
+1) {

159 
	`__os_gtime
(
dbv
, &
ts
);

160 
	`__db_chksum
(
NULL
, (
u_t8_t
 *)&
ts
.
tv_c
,

161 (
ts
.
tv_c
), 
NULL
, (
u_t8_t
 *)&
ed
);

162 } 
ed
 == 0);

163 
	`__db_sgnd
(()
ed
, 
dbv
->
mt
, &dbv->
mti
);

166 
kk
=0;kk<
N
-
M
;kk++) {

167 
y
 = (
dbv
->
mt
[
kk
]&
UPPER_MASK
)|(dbv->mt[kk+1]&
LOWER_MASK
);

168 
dbv
->
mt
[
kk
] = dbv->mt[kk+
M
] ^ (
y
 >> 1^ 
mag01
[y & 0x1];

170 ;
kk
<
N
-1;kk++) {

171 
y
 = (
dbv
->
mt
[
kk
]&
UPPER_MASK
)|(dbv->mt[kk+1]&
LOWER_MASK
);

172 
dbv
->
mt
[
kk
] = dbv->mt[kk+(
M
-
N
)] ^ (
y
 >> 1^ 
mag01
[y & 0x1];

174 
y
 = (
dbv
->
mt
[
N
-1]&
UPPER_MASK
)|(dbv->mt[0]&
LOWER_MASK
);

175 
dbv
->
mt
[
N
-1] = dbv->mt[
M
-1] ^ (
y
 >> 1^ 
mag01
[y & 0x1];

177 
dbv
->
mti
 = 0;

180 
y
 = 
dbv
->
mt
[dbv->
mti
++];

181 
y
 ^
	`TEMPERING_SHIFT_U
(y);

182 
y
 ^
	`TEMPERING_SHIFT_S
(y& 
TEMPERING_MASK_B
;

183 
y
 ^
	`TEMPERING_SHIFT_T
(y& 
TEMPERING_MASK_C
;

184 
y
 ^
	`TEMPERING_SHIFT_L
(y);

186  
y
;

187 
	}
}

	@../crypto/rijndael/rijndael-alg-fst.c

26 
	~"db_cfig.h
"

28 
	~"db_t.h
"

29 
	~"dbc/yo.h
"

31 
	~"yo/rijndl/rijndl-g-f.h
"

47 cڡ 
u32
 
	gTe0
[256] = {

48 (
u_t
)0xc66363a5, (u_int)0xf87c7c84, (u_int)0xee777799, (u_int)0xf67b7b8d,

49 (
u_t
)0xfff2f20d, (u_int)0xd66b6bbd, (u_int)0xde6f6fb1, (u_int)0x91c5c554,

50 (
u_t
)0x60303050, (u_int)0x02010103, (u_int)0xce6767a9, (u_int)0x562b2b7d,

51 (
u_t
)0xe7fefe19, (u_int)0xb5d7d762, (u_int)0x4dababe6, (u_int)0xec76769a,

52 (
u_t
)0x8fcaca45, (u_int)0x1f82829d, (u_int)0x89c9c940, (u_int)0xfa7d7d87,

53 (
u_t
)0xeffafa15, (u_int)0xb25959eb, (u_int)0x8e4747c9, (u_int)0xfbf0f00b,

54 (
u_t
)0x41adadec, (u_int)0xb3d4d467, (u_int)0x5fa2a2fd, (u_int)0x45afafea,

55 (
u_t
)0x239c9cbf, (u_int)0x53a4a4f7, (u_int)0xe4727296, (u_int)0x9bc0c05b,

56 (
u_t
)0x75b7b7c2, (u_int)0xe1fdfd1c, (u_int)0x3d9393ae, (u_int)0x4c26266a,

57 (
u_t
)0x6c36365a, (u_int)0x7e3f3f41, (u_int)0xf5f7f702, (u_int)0x83cccc4f,

58 (
u_t
)0x6834345c, (u_int)0x51a5a5f4, (u_int)0xd1e5e534, (u_int)0xf9f1f108,

59 (
u_t
)0xe2717193, (u_int)0xabd8d873, (u_int)0x62313153, (u_int)0x2a15153f,

60 (
u_t
)0x0804040c, (u_int)0x95c7c752, (u_int)0x46232365, (u_int)0x9dc3c35e,

61 (
u_t
)0x30181828, (u_int)0x379696a1, (u_int)0x0a05050f, (u_int)0x2f9a9ab5,

62 (
u_t
)0x0e070709, (u_int)0x24121236, (u_int)0x1b80809b, (u_int)0xdfe2e23d,

63 (
u_t
)0xcdebeb26, (u_int)0x4e272769, (u_int)0x7fb2b2cd, (u_int)0xea75759f,

64 (
u_t
)0x1209091b, (u_int)0x1d83839e, (u_int)0x582c2c74, (u_int)0x341a1a2e,

65 (
u_t
)0x361b1b2d, (u_int)0xdc6e6eb2, (u_int)0xb45a5aee, (u_int)0x5ba0a0fb,

66 (
u_t
)0xa45252f6, (u_int)0x763b3b4d, (u_int)0xb7d6d661, (u_int)0x7db3b3ce,

67 (
u_t
)0x5229297b, (u_int)0xdde3e33e, (u_int)0x5e2f2f71, (u_int)0x13848497,

68 (
u_t
)0xa65353f5, (u_int)0xb9d1d168, (u_int)0x00000000, (u_int)0xc1eded2c,

69 (
u_t
)0x40202060, (u_int)0xe3fcfc1f, (u_int)0x79b1b1c8, (u_int)0xb65b5bed,

70 (
u_t
)0xd46a6abe, (u_int)0x8dcbcb46, (u_int)0x67bebed9, (u_int)0x7239394b,

71 (
u_t
)0x944a4ade, (u_int)0x984c4cd4, (u_int)0xb05858e8, (u_int)0x85cfcf4a,

72 (
u_t
)0xbbd0d06b, (u_int)0xc5efef2a, (u_int)0x4faaaae5, (u_int)0xedfbfb16,

73 (
u_t
)0x864343c5, (u_int)0x9a4d4dd7, (u_int)0x66333355, (u_int)0x11858594,

74 (
u_t
)0x8a4545cf, (u_int)0xe9f9f910, (u_int)0x04020206, (u_int)0xfe7f7f81,

75 (
u_t
)0xa05050f0, (u_int)0x783c3c44, (u_int)0x259f9fba, (u_int)0x4ba8a8e3,

76 (
u_t
)0xa25151f3, (u_int)0x5da3a3fe, (u_int)0x804040c0, (u_int)0x058f8f8a,

77 (
u_t
)0x3f9292ad, (u_int)0x219d9dbc, (u_int)0x70383848, (u_int)0xf1f5f504,

78 (
u_t
)0x63bcbcdf, (u_int)0x77b6b6c1, (u_int)0xafdada75, (u_int)0x42212163,

79 (
u_t
)0x20101030, (u_int)0xe5ffff1a, (u_int)0xfdf3f30e, (u_int)0xbfd2d26d,

80 (
u_t
)0x81cdcd4c, (u_int)0x180c0c14, (u_int)0x26131335, (u_int)0xc3ecec2f,

81 (
u_t
)0xbe5f5fe1, (u_int)0x359797a2, (u_int)0x884444cc, (u_int)0x2e171739,

82 (
u_t
)0x93c4c457, (u_int)0x55a7a7f2, (u_int)0xfc7e7e82, (u_int)0x7a3d3d47,

83 (
u_t
)0xc86464ac, (u_int)0xba5d5de7, (u_int)0x3219192b, (u_int)0xe6737395,

84 (
u_t
)0xc06060a0, (u_int)0x19818198, (u_int)0x9e4f4fd1, (u_int)0xa3dcdc7f,

85 (
u_t
)0x44222266, (u_int)0x542a2a7e, (u_int)0x3b9090ab, (u_int)0x0b888883,

86 (
u_t
)0x8c4646ca, (u_int)0xc7eeee29, (u_int)0x6bb8b8d3, (u_int)0x2814143c,

87 (
u_t
)0xa7dede79, (u_int)0xbc5e5ee2, (u_int)0x160b0b1d, (u_int)0xaddbdb76,

88 (
u_t
)0xdbe0e03b, (u_int)0x64323256, (u_int)0x743a3a4e, (u_int)0x140a0a1e,

89 (
u_t
)0x924949db, (u_int)0x0c06060a, (u_int)0x4824246c, (u_int)0xb85c5ce4,

90 (
u_t
)0x9fc2c25d, (u_int)0xbdd3d36e, (u_int)0x43acacef, (u_int)0xc46262a6,

91 (
u_t
)0x399191a8, (u_int)0x319595a4, (u_int)0xd3e4e437, (u_int)0xf279798b,

92 (
u_t
)0xd5e7e732, (u_int)0x8bc8c843, (u_int)0x6e373759, (u_int)0xda6d6db7,

93 (
u_t
)0x018d8d8c, (u_int)0xb1d5d564, (u_int)0x9c4e4ed2, (u_int)0x49a9a9e0,

94 (
u_t
)0xd86c6cb4, (u_int)0xac5656fa, (u_int)0xf3f4f407, (u_int)0xcfeaea25,

95 (
u_t
)0xca6565af, (u_int)0xf47a7a8e, (u_int)0x47aeaee9, (u_int)0x10080818,

96 (
u_t
)0x6fbabad5, (u_int)0xf0787888, (u_int)0x4a25256f, (u_int)0x5c2e2e72,

97 (
u_t
)0x381c1c24, (u_int)0x57a6a6f1, (u_int)0x73b4b4c7, (u_int)0x97c6c651,

98 (
u_t
)0xcbe8e823, (u_int)0xa1dddd7c, (u_int)0xe874749c, (u_int)0x3e1f1f21,

99 (
u_t
)0x964b4bdd, (u_int)0x61bdbddc, (u_int)0x0d8b8b86, (u_int)0x0f8a8a85,

100 (
u_t
)0xe0707090, (u_int)0x7c3e3e42, (u_int)0x71b5b5c4, (u_int)0xcc6666aa,

101 (
u_t
)0x904848d8, (u_int)0x06030305, (u_int)0xf7f6f601, (u_int)0x1c0e0e12,

102 (
u_t
)0xc26161a3, (u_int)0x6a35355f, (u_int)0xae5757f9, (u_int)0x69b9b9d0,

103 (
u_t
)0x17868691, (u_int)0x99c1c158, (u_int)0x3a1d1d27, (u_int)0x279e9eb9,

104 (
u_t
)0xd9e1e138, (u_int)0xebf8f813, (u_int)0x2b9898b3, (u_int)0x22111133,

105 (
u_t
)0xd26969bb, (u_int)0xa9d9d970, (u_int)0x078e8e89, (u_int)0x339494a7,

106 (
u_t
)0x2d9b9bb6, (u_int)0x3c1e1e22, (u_int)0x15878792, (u_int)0xc9e9e920,

107 (
u_t
)0x87cece49, (u_int)0xaa5555ff, (u_int)0x50282878, (u_int)0xa5dfdf7a,

108 (
u_t
)0x038c8c8f, (u_int)0x59a1a1f8, (u_int)0x09898980, (u_int)0x1a0d0d17,

109 (
u_t
)0x65bfbfda, (u_int)0xd7e6e631, (u_int)0x844242c6, (u_int)0xd06868b8,

110 (
u_t
)0x824141c3, (u_int)0x299999b0, (u_int)0x5a2d2d77, (u_int)0x1e0f0f11,

111 (
u_t
)0x7bb0b0cb, (u_int)0xa85454fc, (u_int)0x6dbbbbd6, (u_int)0x2c16163a,

113 cڡ 
u32
 
	gTe1
[256] = {

114 (
u_t
)0xa5c66363, (u_int)0x84f87c7c, (u_int)0x99ee7777, (u_int)0x8df67b7b,

115 (
u_t
)0x0dfff2f2, (u_int)0xbdd66b6b, (u_int)0xb1de6f6f, (u_int)0x5491c5c5,

116 (
u_t
)0x50603030, (u_int)0x03020101, (u_int)0xa9ce6767, (u_int)0x7d562b2b,

117 (
u_t
)0x19e7fefe, (u_int)0x62b5d7d7, (u_int)0xe64dabab, (u_int)0x9aec7676,

118 (
u_t
)0x458fcaca, (u_int)0x9d1f8282, (u_int)0x4089c9c9, (u_int)0x87fa7d7d,

119 (
u_t
)0x15effafa, (u_int)0xebb25959, (u_int)0xc98e4747, (u_int)0x0bfbf0f0,

120 (
u_t
)0xec41adad, (u_int)0x67b3d4d4, (u_int)0xfd5fa2a2, (u_int)0xea45afaf,

121 (
u_t
)0xbf239c9c, (u_int)0xf753a4a4, (u_int)0x96e47272, (u_int)0x5b9bc0c0,

122 (
u_t
)0xc275b7b7, (u_int)0x1ce1fdfd, (u_int)0xae3d9393, (u_int)0x6a4c2626,

123 (
u_t
)0x5a6c3636, (u_int)0x417e3f3f, (u_int)0x02f5f7f7, (u_int)0x4f83cccc,

124 (
u_t
)0x5c683434, (u_int)0xf451a5a5, (u_int)0x34d1e5e5, (u_int)0x08f9f1f1,

125 (
u_t
)0x93e27171, (u_int)0x73abd8d8, (u_int)0x53623131, (u_int)0x3f2a1515,

126 (
u_t
)0x0c080404, (u_int)0x5295c7c7, (u_int)0x65462323, (u_int)0x5e9dc3c3,

127 (
u_t
)0x28301818, (u_int)0xa1379696, (u_int)0x0f0a0505, (u_int)0xb52f9a9a,

128 (
u_t
)0x090e0707, (u_int)0x36241212, (u_int)0x9b1b8080, (u_int)0x3ddfe2e2,

129 (
u_t
)0x26cdebeb, (u_int)0x694e2727, (u_int)0xcd7fb2b2, (u_int)0x9fea7575,

130 (
u_t
)0x1b120909, (u_int)0x9e1d8383, (u_int)0x74582c2c, (u_int)0x2e341a1a,

131 (
u_t
)0x2d361b1b, (u_int)0xb2dc6e6e, (u_int)0xeeb45a5a, (u_int)0xfb5ba0a0,

132 (
u_t
)0xf6a45252, (u_int)0x4d763b3b, (u_int)0x61b7d6d6, (u_int)0xce7db3b3,

133 (
u_t
)0x7b522929, (u_int)0x3edde3e3, (u_int)0x715e2f2f, (u_int)0x97138484,

134 (
u_t
)0xf5a65353, (u_int)0x68b9d1d1, (u_int)0x00000000, (u_int)0x2cc1eded,

135 (
u_t
)0x60402020, (u_int)0x1fe3fcfc, (u_int)0xc879b1b1, (u_int)0xedb65b5b,

136 (
u_t
)0xbed46a6a, (u_int)0x468dcbcb, (u_int)0xd967bebe, (u_int)0x4b723939,

137 (
u_t
)0xde944a4a, (u_int)0xd4984c4c, (u_int)0xe8b05858, (u_int)0x4a85cfcf,

138 (
u_t
)0x6bbbd0d0, (u_int)0x2ac5efef, (u_int)0xe54faaaa, (u_int)0x16edfbfb,

139 (
u_t
)0xc5864343, (u_int)0xd79a4d4d, (u_int)0x55663333, (u_int)0x94118585,

140 (
u_t
)0xcf8a4545, (u_int)0x10e9f9f9, (u_int)0x06040202, (u_int)0x81fe7f7f,

141 (
u_t
)0xf0a05050, (u_int)0x44783c3c, (u_int)0xba259f9f, (u_int)0xe34ba8a8,

142 (
u_t
)0xf3a25151, (u_int)0xfe5da3a3, (u_int)0xc0804040, (u_int)0x8a058f8f,

143 (
u_t
)0xad3f9292, (u_int)0xbc219d9d, (u_int)0x48703838, (u_int)0x04f1f5f5,

144 (
u_t
)0xdf63bcbc, (u_int)0xc177b6b6, (u_int)0x75afdada, (u_int)0x63422121,

145 (
u_t
)0x30201010, (u_int)0x1ae5ffff, (u_int)0x0efdf3f3, (u_int)0x6dbfd2d2,

146 (
u_t
)0x4c81cdcd, (u_int)0x14180c0c, (u_int)0x35261313, (u_int)0x2fc3ecec,

147 (
u_t
)0xe1be5f5f, (u_int)0xa2359797, (u_int)0xcc884444, (u_int)0x392e1717,

148 (
u_t
)0x5793c4c4, (u_int)0xf255a7a7, (u_int)0x82fc7e7e, (u_int)0x477a3d3d,

149 (
u_t
)0xacc86464, (u_int)0xe7ba5d5d, (u_int)0x2b321919, (u_int)0x95e67373,

150 (
u_t
)0xa0c06060, (u_int)0x98198181, (u_int)0xd19e4f4f, (u_int)0x7fa3dcdc,

151 (
u_t
)0x66442222, (u_int)0x7e542a2a, (u_int)0xab3b9090, (u_int)0x830b8888,

152 (
u_t
)0xca8c4646, (u_int)0x29c7eeee, (u_int)0xd36bb8b8, (u_int)0x3c281414,

153 (
u_t
)0x79a7dede, (u_int)0xe2bc5e5e, (u_int)0x1d160b0b, (u_int)0x76addbdb,

154 (
u_t
)0x3bdbe0e0, (u_int)0x56643232, (u_int)0x4e743a3a, (u_int)0x1e140a0a,

155 (
u_t
)0xdb924949, (u_int)0x0a0c0606, (u_int)0x6c482424, (u_int)0xe4b85c5c,

156 (
u_t
)0x5d9fc2c2, (u_int)0x6ebdd3d3, (u_int)0xef43acac, (u_int)0xa6c46262,

157 (
u_t
)0xa8399191, (u_int)0xa4319595, (u_int)0x37d3e4e4, (u_int)0x8bf27979,

158 (
u_t
)0x32d5e7e7, (u_int)0x438bc8c8, (u_int)0x596e3737, (u_int)0xb7da6d6d,

159 (
u_t
)0x8c018d8d, (u_int)0x64b1d5d5, (u_int)0xd29c4e4e, (u_int)0xe049a9a9,

160 (
u_t
)0xb4d86c6c, (u_int)0xfaac5656, (u_int)0x07f3f4f4, (u_int)0x25cfeaea,

161 (
u_t
)0xafca6565, (u_int)0x8ef47a7a, (u_int)0xe947aeae, (u_int)0x18100808,

162 (
u_t
)0xd56fbaba, (u_int)0x88f07878, (u_int)0x6f4a2525, (u_int)0x725c2e2e,

163 (
u_t
)0x24381c1c, (u_int)0xf157a6a6, (u_int)0xc773b4b4, (u_int)0x5197c6c6,

164 (
u_t
)0x23cbe8e8, (u_int)0x7ca1dddd, (u_int)0x9ce87474, (u_int)0x213e1f1f,

165 (
u_t
)0xdd964b4b, (u_int)0xdc61bdbd, (u_int)0x860d8b8b, (u_int)0x850f8a8a,

166 (
u_t
)0x90e07070, (u_int)0x427c3e3e, (u_int)0xc471b5b5, (u_int)0xaacc6666,

167 (
u_t
)0xd8904848, (u_int)0x05060303, (u_int)0x01f7f6f6, (u_int)0x121c0e0e,

168 (
u_t
)0xa3c26161, (u_int)0x5f6a3535, (u_int)0xf9ae5757, (u_int)0xd069b9b9,

169 (
u_t
)0x91178686, (u_int)0x5899c1c1, (u_int)0x273a1d1d, (u_int)0xb9279e9e,

170 (
u_t
)0x38d9e1e1, (u_int)0x13ebf8f8, (u_int)0xb32b9898, (u_int)0x33221111,

171 (
u_t
)0xbbd26969, (u_int)0x70a9d9d9, (u_int)0x89078e8e, (u_int)0xa7339494,

172 (
u_t
)0xb62d9b9b, (u_int)0x223c1e1e, (u_int)0x92158787, (u_int)0x20c9e9e9,

173 (
u_t
)0x4987cece, (u_int)0xffaa5555, (u_int)0x78502828, (u_int)0x7aa5dfdf,

174 (
u_t
)0x8f038c8c, (u_int)0xf859a1a1, (u_int)0x80098989, (u_int)0x171a0d0d,

175 (
u_t
)0xda65bfbf, (u_int)0x31d7e6e6, (u_int)0xc6844242, (u_int)0xb8d06868,

176 (
u_t
)0xc3824141, (u_int)0xb0299999, (u_int)0x775a2d2d, (u_int)0x111e0f0f,

177 (
u_t
)0xcb7bb0b0, (u_int)0xfca85454, (u_int)0xd66dbbbb, (u_int)0x3a2c1616,

179 cڡ 
u32
 
	gTe2
[256] = {

180 (
u_t
)0x63a5c663, (u_int)0x7c84f87c, (u_int)0x7799ee77, (u_int)0x7b8df67b,

181 (
u_t
)0xf20dfff2, (u_int)0x6bbdd66b, (u_int)0x6fb1de6f, (u_int)0xc55491c5,

182 (
u_t
)0x30506030, (u_int)0x01030201, (u_int)0x67a9ce67, (u_int)0x2b7d562b,

183 (
u_t
)0xfe19e7fe, (u_int)0xd762b5d7, (u_int)0xabe64dab, (u_int)0x769aec76,

184 (
u_t
)0xca458fca, (u_int)0x829d1f82, (u_int)0xc94089c9, (u_int)0x7d87fa7d,

185 (
u_t
)0xfa15effa, (u_int)0x59ebb259, (u_int)0x47c98e47, (u_int)0xf00bfbf0,

186 (
u_t
)0xadec41ad, (u_int)0xd467b3d4, (u_int)0xa2fd5fa2, (u_int)0xafea45af,

187 (
u_t
)0x9cbf239c, (u_int)0xa4f753a4, (u_int)0x7296e472, (u_int)0xc05b9bc0,

188 (
u_t
)0xb7c275b7, (u_int)0xfd1ce1fd, (u_int)0x93ae3d93, (u_int)0x266a4c26,

189 (
u_t
)0x365a6c36, (u_int)0x3f417e3f, (u_int)0xf702f5f7, (u_int)0xcc4f83cc,

190 (
u_t
)0x345c6834, (u_int)0xa5f451a5, (u_int)0xe534d1e5, (u_int)0xf108f9f1,

191 (
u_t
)0x7193e271, (u_int)0xd873abd8, (u_int)0x31536231, (u_int)0x153f2a15,

192 (
u_t
)0x040c0804, (u_int)0xc75295c7, (u_int)0x23654623, (u_int)0xc35e9dc3,

193 (
u_t
)0x18283018, (u_int)0x96a13796, (u_int)0x050f0a05, (u_int)0x9ab52f9a,

194 (
u_t
)0x07090e07, (u_int)0x12362412, (u_int)0x809b1b80, (u_int)0xe23ddfe2,

195 (
u_t
)0xeb26cdeb, (u_int)0x27694e27, (u_int)0xb2cd7fb2, (u_int)0x759fea75,

196 (
u_t
)0x091b1209, (u_int)0x839e1d83, (u_int)0x2c74582c, (u_int)0x1a2e341a,

197 (
u_t
)0x1b2d361b, (u_int)0x6eb2dc6e, (u_int)0x5aeeb45a, (u_int)0xa0fb5ba0,

198 (
u_t
)0x52f6a452, (u_int)0x3b4d763b, (u_int)0xd661b7d6, (u_int)0xb3ce7db3,

199 (
u_t
)0x297b5229, (u_int)0xe33edde3, (u_int)0x2f715e2f, (u_int)0x84971384,

200 (
u_t
)0x53f5a653, (u_int)0xd168b9d1, (u_int)0x00000000, (u_int)0xed2cc1ed,

201 (
u_t
)0x20604020, (u_int)0xfc1fe3fc, (u_int)0xb1c879b1, (u_int)0x5bedb65b,

202 (
u_t
)0x6abed46a, (u_int)0xcb468dcb, (u_int)0xbed967be, (u_int)0x394b7239,

203 (
u_t
)0x4ade944a, (u_int)0x4cd4984c, (u_int)0x58e8b058, (u_int)0xcf4a85cf,

204 (
u_t
)0xd06bbbd0, (u_int)0xef2ac5ef, (u_int)0xaae54faa, (u_int)0xfb16edfb,

205 (
u_t
)0x43c58643, (u_int)0x4dd79a4d, (u_int)0x33556633, (u_int)0x85941185,

206 (
u_t
)0x45cf8a45, (u_int)0xf910e9f9, (u_int)0x02060402, (u_int)0x7f81fe7f,

207 (
u_t
)0x50f0a050, (u_int)0x3c44783c, (u_int)0x9fba259f, (u_int)0xa8e34ba8,

208 (
u_t
)0x51f3a251, (u_int)0xa3fe5da3, (u_int)0x40c08040, (u_int)0x8f8a058f,

209 (
u_t
)0x92ad3f92, (u_int)0x9dbc219d, (u_int)0x38487038, (u_int)0xf504f1f5,

210 (
u_t
)0xbcdf63bc, (u_int)0xb6c177b6, (u_int)0xda75afda, (u_int)0x21634221,

211 (
u_t
)0x10302010, (u_int)0xff1ae5ff, (u_int)0xf30efdf3, (u_int)0xd26dbfd2,

212 (
u_t
)0xcd4c81cd, (u_int)0x0c14180c, (u_int)0x13352613, (u_int)0xec2fc3ec,

213 (
u_t
)0x5fe1be5f, (u_int)0x97a23597, (u_int)0x44cc8844, (u_int)0x17392e17,

214 (
u_t
)0xc45793c4, (u_int)0xa7f255a7, (u_int)0x7e82fc7e, (u_int)0x3d477a3d,

215 (
u_t
)0x64acc864, (u_int)0x5de7ba5d, (u_int)0x192b3219, (u_int)0x7395e673,

216 (
u_t
)0x60a0c060, (u_int)0x81981981, (u_int)0x4fd19e4f, (u_int)0xdc7fa3dc,

217 (
u_t
)0x22664422, (u_int)0x2a7e542a, (u_int)0x90ab3b90, (u_int)0x88830b88,

218 (
u_t
)0x46ca8c46, (u_int)0xee29c7ee, (u_int)0xb8d36bb8, (u_int)0x143c2814,

219 (
u_t
)0xde79a7de, (u_int)0x5ee2bc5e, (u_int)0x0b1d160b, (u_int)0xdb76addb,

220 (
u_t
)0xe03bdbe0, (u_int)0x32566432, (u_int)0x3a4e743a, (u_int)0x0a1e140a,

221 (
u_t
)0x49db9249, (u_int)0x060a0c06, (u_int)0x246c4824, (u_int)0x5ce4b85c,

222 (
u_t
)0xc25d9fc2, (u_int)0xd36ebdd3, (u_int)0xacef43ac, (u_int)0x62a6c462,

223 (
u_t
)0x91a83991, (u_int)0x95a43195, (u_int)0xe437d3e4, (u_int)0x798bf279,

224 (
u_t
)0xe732d5e7, (u_int)0xc8438bc8, (u_int)0x37596e37, (u_int)0x6db7da6d,

225 (
u_t
)0x8d8c018d, (u_int)0xd564b1d5, (u_int)0x4ed29c4e, (u_int)0xa9e049a9,

226 (
u_t
)0x6cb4d86c, (u_int)0x56faac56, (u_int)0xf407f3f4, (u_int)0xea25cfea,

227 (
u_t
)0x65afca65, (u_int)0x7a8ef47a, (u_int)0xaee947ae, (u_int)0x08181008,

228 (
u_t
)0xbad56fba, (u_int)0x7888f078, (u_int)0x256f4a25, (u_int)0x2e725c2e,

229 (
u_t
)0x1c24381c, (u_int)0xa6f157a6, (u_int)0xb4c773b4, (u_int)0xc65197c6,

230 (
u_t
)0xe823cbe8, (u_int)0xdd7ca1dd, (u_int)0x749ce874, (u_int)0x1f213e1f,

231 (
u_t
)0x4bdd964b, (u_int)0xbddc61bd, (u_int)0x8b860d8b, (u_int)0x8a850f8a,

232 (
u_t
)0x7090e070, (u_int)0x3e427c3e, (u_int)0xb5c471b5, (u_int)0x66aacc66,

233 (
u_t
)0x48d89048, (u_int)0x03050603, (u_int)0xf601f7f6, (u_int)0x0e121c0e,

234 (
u_t
)0x61a3c261, (u_int)0x355f6a35, (u_int)0x57f9ae57, (u_int)0xb9d069b9,

235 (
u_t
)0x86911786, (u_int)0xc15899c1, (u_int)0x1d273a1d, (u_int)0x9eb9279e,

236 (
u_t
)0xe138d9e1, (u_int)0xf813ebf8, (u_int)0x98b32b98, (u_int)0x11332211,

237 (
u_t
)0x69bbd269, (u_int)0xd970a9d9, (u_int)0x8e89078e, (u_int)0x94a73394,

238 (
u_t
)0x9bb62d9b, (u_int)0x1e223c1e, (u_int)0x87921587, (u_int)0xe920c9e9,

239 (
u_t
)0xce4987ce, (u_int)0x55ffaa55, (u_int)0x28785028, (u_int)0xdf7aa5df,

240 (
u_t
)0x8c8f038c, (u_int)0xa1f859a1, (u_int)0x89800989, (u_int)0x0d171a0d,

241 (
u_t
)0xbfda65bf, (u_int)0xe631d7e6, (u_int)0x42c68442, (u_int)0x68b8d068,

242 (
u_t
)0x41c38241, (u_int)0x99b02999, (u_int)0x2d775a2d, (u_int)0x0f111e0f,

243 (
u_t
)0xb0cb7bb0, (u_int)0x54fca854, (u_int)0xbbd66dbb, (u_int)0x163a2c16,

245 cڡ 
u32
 
	gTe3
[256] = {

247 (
u_t
)0x6363a5c6, (u_int)0x7c7c84f8, (u_int)0x777799ee, (u_int)0x7b7b8df6,

248 (
u_t
)0xf2f20dff, (u_int)0x6b6bbdd6, (u_int)0x6f6fb1de, (u_int)0xc5c55491,

249 (
u_t
)0x30305060, (u_int)0x01010302, (u_int)0x6767a9ce, (u_int)0x2b2b7d56,

250 (
u_t
)0xfefe19e7, (u_int)0xd7d762b5, (u_int)0xababe64d, (u_int)0x76769aec,

251 (
u_t
)0xcaca458f, (u_int)0x82829d1f, (u_int)0xc9c94089, (u_int)0x7d7d87fa,

252 (
u_t
)0xfafa15ef, (u_int)0x5959ebb2, (u_int)0x4747c98e, (u_int)0xf0f00bfb,

253 (
u_t
)0xadadec41, (u_int)0xd4d467b3, (u_int)0xa2a2fd5f, (u_int)0xafafea45,

254 (
u_t
)0x9c9cbf23, (u_int)0xa4a4f753, (u_int)0x727296e4, (u_int)0xc0c05b9b,

255 (
u_t
)0xb7b7c275, (u_int)0xfdfd1ce1, (u_int)0x9393ae3d, (u_int)0x26266a4c,

256 (
u_t
)0x36365a6c, (u_int)0x3f3f417e, (u_int)0xf7f702f5, (u_int)0xcccc4f83,

257 (
u_t
)0x34345c68, (u_int)0xa5a5f451, (u_int)0xe5e534d1, (u_int)0xf1f108f9,

258 (
u_t
)0x717193e2, (u_int)0xd8d873ab, (u_int)0x31315362, (u_int)0x15153f2a,

259 (
u_t
)0x04040c08, (u_int)0xc7c75295, (u_int)0x23236546, (u_int)0xc3c35e9d,

260 (
u_t
)0x18182830, (u_int)0x9696a137, (u_int)0x05050f0a, (u_int)0x9a9ab52f,

261 (
u_t
)0x0707090e, (u_int)0x12123624, (u_int)0x80809b1b, (u_int)0xe2e23ddf,

262 (
u_t
)0xebeb26cd, (u_int)0x2727694e, (u_int)0xb2b2cd7f, (u_int)0x75759fea,

263 (
u_t
)0x09091b12, (u_int)0x83839e1d, (u_int)0x2c2c7458, (u_int)0x1a1a2e34,

264 (
u_t
)0x1b1b2d36, (u_int)0x6e6eb2dc, (u_int)0x5a5aeeb4, (u_int)0xa0a0fb5b,

265 (
u_t
)0x5252f6a4, (u_int)0x3b3b4d76, (u_int)0xd6d661b7, (u_int)0xb3b3ce7d,

266 (
u_t
)0x29297b52, (u_int)0xe3e33edd, (u_int)0x2f2f715e, (u_int)0x84849713,

267 (
u_t
)0x5353f5a6, (u_int)0xd1d168b9, (u_int)0x00000000, (u_int)0xeded2cc1,

268 (
u_t
)0x20206040, (u_int)0xfcfc1fe3, (u_int)0xb1b1c879, (u_int)0x5b5bedb6,

269 (
u_t
)0x6a6abed4, (u_int)0xcbcb468d, (u_int)0xbebed967, (u_int)0x39394b72,

270 (
u_t
)0x4a4ade94, (u_int)0x4c4cd498, (u_int)0x5858e8b0, (u_int)0xcfcf4a85,

271 (
u_t
)0xd0d06bbb, (u_int)0xefef2ac5, (u_int)0xaaaae54f, (u_int)0xfbfb16ed,

272 (
u_t
)0x4343c586, (u_int)0x4d4dd79a, (u_int)0x33335566, (u_int)0x85859411,

273 (
u_t
)0x4545cf8a, (u_int)0xf9f910e9, (u_int)0x02020604, (u_int)0x7f7f81fe,

274 (
u_t
)0x5050f0a0, (u_int)0x3c3c4478, (u_int)0x9f9fba25, (u_int)0xa8a8e34b,

275 (
u_t
)0x5151f3a2, (u_int)0xa3a3fe5d, (u_int)0x4040c080, (u_int)0x8f8f8a05,

276 (
u_t
)0x9292ad3f, (u_int)0x9d9dbc21, (u_int)0x38384870, (u_int)0xf5f504f1,

277 (
u_t
)0xbcbcdf63, (u_int)0xb6b6c177, (u_int)0xdada75af, (u_int)0x21216342,

278 (
u_t
)0x10103020, (u_int)0xffff1ae5, (u_int)0xf3f30efd, (u_int)0xd2d26dbf,

279 (
u_t
)0xcdcd4c81, (u_int)0x0c0c1418, (u_int)0x13133526, (u_int)0xecec2fc3,

280 (
u_t
)0x5f5fe1be, (u_int)0x9797a235, (u_int)0x4444cc88, (u_int)0x1717392e,

281 (
u_t
)0xc4c45793, (u_int)0xa7a7f255, (u_int)0x7e7e82fc, (u_int)0x3d3d477a,

282 (
u_t
)0x6464acc8, (u_int)0x5d5de7ba, (u_int)0x19192b32, (u_int)0x737395e6,

283 (
u_t
)0x6060a0c0, (u_int)0x81819819, (u_int)0x4f4fd19e, (u_int)0xdcdc7fa3,

284 (
u_t
)0x22226644, (u_int)0x2a2a7e54, (u_int)0x9090ab3b, (u_int)0x8888830b,

285 (
u_t
)0x4646ca8c, (u_int)0xeeee29c7, (u_int)0xb8b8d36b, (u_int)0x14143c28,

286 (
u_t
)0xdede79a7, (u_int)0x5e5ee2bc, (u_int)0x0b0b1d16, (u_int)0xdbdb76ad,

287 (
u_t
)0xe0e03bdb, (u_int)0x32325664, (u_int)0x3a3a4e74, (u_int)0x0a0a1e14,

288 (
u_t
)0x4949db92, (u_int)0x06060a0c, (u_int)0x24246c48, (u_int)0x5c5ce4b8,

289 (
u_t
)0xc2c25d9f, (u_int)0xd3d36ebd, (u_int)0xacacef43, (u_int)0x6262a6c4,

290 (
u_t
)0x9191a839, (u_int)0x9595a431, (u_int)0xe4e437d3, (u_int)0x79798bf2,

291 (
u_t
)0xe7e732d5, (u_int)0xc8c8438b, (u_int)0x3737596e, (u_int)0x6d6db7da,

292 (
u_t
)0x8d8d8c01, (u_int)0xd5d564b1, (u_int)0x4e4ed29c, (u_int)0xa9a9e049,

293 (
u_t
)0x6c6cb4d8, (u_int)0x5656faac, (u_int)0xf4f407f3, (u_int)0xeaea25cf,

294 (
u_t
)0x6565afca, (u_int)0x7a7a8ef4, (u_int)0xaeaee947, (u_int)0x08081810,

295 (
u_t
)0xbabad56f, (u_int)0x787888f0, (u_int)0x25256f4a, (u_int)0x2e2e725c,

296 (
u_t
)0x1c1c2438, (u_int)0xa6a6f157, (u_int)0xb4b4c773, (u_int)0xc6c65197,

297 (
u_t
)0xe8e823cb, (u_int)0xdddd7ca1, (u_int)0x74749ce8, (u_int)0x1f1f213e,

298 (
u_t
)0x4b4bdd96, (u_int)0xbdbddc61, (u_int)0x8b8b860d, (u_int)0x8a8a850f,

299 (
u_t
)0x707090e0, (u_int)0x3e3e427c, (u_int)0xb5b5c471, (u_int)0x6666aacc,

300 (
u_t
)0x4848d890, (u_int)0x03030506, (u_int)0xf6f601f7, (u_int)0x0e0e121c,

301 (
u_t
)0x6161a3c2, (u_int)0x35355f6a, (u_int)0x5757f9ae, (u_int)0xb9b9d069,

302 (
u_t
)0x86869117, (u_int)0xc1c15899, (u_int)0x1d1d273a, (u_int)0x9e9eb927,

303 (
u_t
)0xe1e138d9, (u_int)0xf8f813eb, (u_int)0x9898b32b, (u_int)0x11113322,

304 (
u_t
)0x6969bbd2, (u_int)0xd9d970a9, (u_int)0x8e8e8907, (u_int)0x9494a733,

305 (
u_t
)0x9b9bb62d, (u_int)0x1e1e223c, (u_int)0x87879215, (u_int)0xe9e920c9,

306 (
u_t
)0xcece4987, (u_int)0x5555ffaa, (u_int)0x28287850, (u_int)0xdfdf7aa5,

307 (
u_t
)0x8c8c8f03, (u_int)0xa1a1f859, (u_int)0x89898009, (u_int)0x0d0d171a,

308 (
u_t
)0xbfbfda65, (u_int)0xe6e631d7, (u_int)0x4242c684, (u_int)0x6868b8d0,

309 (
u_t
)0x4141c382, (u_int)0x9999b029, (u_int)0x2d2d775a, (u_int)0x0f0f111e,

310 (
u_t
)0xb0b0cb7b, (u_int)0x5454fca8, (u_int)0xbbbbd66d, (u_int)0x16163a2c,

312 cڡ 
u32
 
	gTe4
[256] = {

313 (
u_t
)0x63636363, (u_int)0x7c7c7c7c, (u_int)0x77777777, (u_int)0x7b7b7b7b,

314 (
u_t
)0xf2f2f2f2, (u_int)0x6b6b6b6b, (u_int)0x6f6f6f6f, (u_int)0xc5c5c5c5,

315 (
u_t
)0x30303030, (u_int)0x01010101, (u_int)0x67676767, (u_int)0x2b2b2b2b,

316 (
u_t
)0xfefefefe, (u_int)0xd7d7d7d7, (u_int)0xabababab, (u_int)0x76767676,

317 (
u_t
)0xcacacaca, (u_int)0x82828282, (u_int)0xc9c9c9c9, (u_int)0x7d7d7d7d,

318 (
u_t
)0xfafafafa, (u_int)0x59595959, (u_int)0x47474747, (u_int)0xf0f0f0f0,

319 (
u_t
)0xadadadad, (u_int)0xd4d4d4d4, (u_int)0xa2a2a2a2, (u_int)0xafafafaf,

320 (
u_t
)0x9c9c9c9c, (u_int)0xa4a4a4a4, (u_int)0x72727272, (u_int)0xc0c0c0c0,

321 (
u_t
)0xb7b7b7b7, (u_int)0xfdfdfdfd, (u_int)0x93939393, (u_int)0x26262626,

322 (
u_t
)0x36363636, (u_int)0x3f3f3f3f, (u_int)0xf7f7f7f7, (u_int)0xcccccccc,

323 (
u_t
)0x34343434, (u_int)0xa5a5a5a5, (u_int)0xe5e5e5e5, (u_int)0xf1f1f1f1,

324 (
u_t
)0x71717171, (u_int)0xd8d8d8d8, (u_int)0x31313131, (u_int)0x15151515,

325 (
u_t
)0x04040404, (u_int)0xc7c7c7c7, (u_int)0x23232323, (u_int)0xc3c3c3c3,

326 (
u_t
)0x18181818, (u_int)0x96969696, (u_int)0x05050505, (u_int)0x9a9a9a9a,

327 (
u_t
)0x07070707, (u_int)0x12121212, (u_int)0x80808080, (u_int)0xe2e2e2e2,

328 (
u_t
)0xebebebeb, (u_int)0x27272727, (u_int)0xb2b2b2b2, (u_int)0x75757575,

329 (
u_t
)0x09090909, (u_int)0x83838383, (u_int)0x2c2c2c2c, (u_int)0x1a1a1a1a,

330 (
u_t
)0x1b1b1b1b, (u_int)0x6e6e6e6e, (u_int)0x5a5a5a5a, (u_int)0xa0a0a0a0,

331 (
u_t
)0x52525252, (u_int)0x3b3b3b3b, (u_int)0xd6d6d6d6, (u_int)0xb3b3b3b3,

332 (
u_t
)0x29292929, (u_int)0xe3e3e3e3, (u_int)0x2f2f2f2f, (u_int)0x84848484,

333 (
u_t
)0x53535353, (u_int)0xd1d1d1d1, (u_int)0x00000000, (u_int)0xedededed,

334 (
u_t
)0x20202020, (u_int)0xfcfcfcfc, (u_int)0xb1b1b1b1, (u_int)0x5b5b5b5b,

335 (
u_t
)0x6a6a6a6a, (u_int)0xcbcbcbcb, (u_int)0xbebebebe, (u_int)0x39393939,

336 (
u_t
)0x4a4a4a4a, (u_int)0x4c4c4c4c, (u_int)0x58585858, (u_int)0xcfcfcfcf,

337 (
u_t
)0xd0d0d0d0, (u_int)0xefefefef, (u_int)0xaaaaaaaa, (u_int)0xfbfbfbfb,

338 (
u_t
)0x43434343, (u_int)0x4d4d4d4d, (u_int)0x33333333, (u_int)0x85858585,

339 (
u_t
)0x45454545, (u_int)0xf9f9f9f9, (u_int)0x02020202, (u_int)0x7f7f7f7f,

340 (
u_t
)0x50505050, (u_int)0x3c3c3c3c, (u_int)0x9f9f9f9f, (u_int)0xa8a8a8a8,

341 (
u_t
)0x51515151, (u_int)0xa3a3a3a3, (u_int)0x40404040, (u_int)0x8f8f8f8f,

342 (
u_t
)0x92929292, (u_int)0x9d9d9d9d, (u_int)0x38383838, (u_int)0xf5f5f5f5,

343 (
u_t
)0xbcbcbcbc, (u_int)0xb6b6b6b6, (u_int)0xdadadada, (u_int)0x21212121,

344 (
u_t
)0x10101010, (u_int)0xffffffff, (u_int)0xf3f3f3f3, (u_int)0xd2d2d2d2,

345 (
u_t
)0xcdcdcdcd, (u_int)0x0c0c0c0c, (u_int)0x13131313, (u_int)0xecececec,

346 (
u_t
)0x5f5f5f5f, (u_int)0x97979797, (u_int)0x44444444, (u_int)0x17171717,

347 (
u_t
)0xc4c4c4c4, (u_int)0xa7a7a7a7, (u_int)0x7e7e7e7e, (u_int)0x3d3d3d3d,

348 (
u_t
)0x64646464, (u_int)0x5d5d5d5d, (u_int)0x19191919, (u_int)0x73737373,

349 (
u_t
)0x60606060, (u_int)0x81818181, (u_int)0x4f4f4f4f, (u_int)0xdcdcdcdc,

350 (
u_t
)0x22222222, (u_int)0x2a2a2a2a, (u_int)0x90909090, (u_int)0x88888888,

351 (
u_t
)0x46464646, (u_int)0xeeeeeeee, (u_int)0xb8b8b8b8, (u_int)0x14141414,

352 (
u_t
)0xdededede, (u_int)0x5e5e5e5e, (u_int)0x0b0b0b0b, (u_int)0xdbdbdbdb,

353 (
u_t
)0xe0e0e0e0, (u_int)0x32323232, (u_int)0x3a3a3a3a, (u_int)0x0a0a0a0a,

354 (
u_t
)0x49494949, (u_int)0x06060606, (u_int)0x24242424, (u_int)0x5c5c5c5c,

355 (
u_t
)0xc2c2c2c2, (u_int)0xd3d3d3d3, (u_int)0xacacacac, (u_int)0x62626262,

356 (
u_t
)0x91919191, (u_int)0x95959595, (u_int)0xe4e4e4e4, (u_int)0x79797979,

357 (
u_t
)0xe7e7e7e7, (u_int)0xc8c8c8c8, (u_int)0x37373737, (u_int)0x6d6d6d6d,

358 (
u_t
)0x8d8d8d8d, (u_int)0xd5d5d5d5, (u_int)0x4e4e4e4e, (u_int)0xa9a9a9a9,

359 (
u_t
)0x6c6c6c6c, (u_int)0x56565656, (u_int)0xf4f4f4f4, (u_int)0xeaeaeaea,

360 (
u_t
)0x65656565, (u_int)0x7a7a7a7a, (u_int)0xaeaeaeae, (u_int)0x08080808,

361 (
u_t
)0xbabababa, (u_int)0x78787878, (u_int)0x25252525, (u_int)0x2e2e2e2e,

362 (
u_t
)0x1c1c1c1c, (u_int)0xa6a6a6a6, (u_int)0xb4b4b4b4, (u_int)0xc6c6c6c6,

363 (
u_t
)0xe8e8e8e8, (u_int)0xdddddddd, (u_int)0x74747474, (u_int)0x1f1f1f1f,

364 (
u_t
)0x4b4b4b4b, (u_int)0xbdbdbdbd, (u_int)0x8b8b8b8b, (u_int)0x8a8a8a8a,

365 (
u_t
)0x70707070, (u_int)0x3e3e3e3e, (u_int)0xb5b5b5b5, (u_int)0x66666666,

366 (
u_t
)0x48484848, (u_int)0x03030303, (u_int)0xf6f6f6f6, (u_int)0x0e0e0e0e,

367 (
u_t
)0x61616161, (u_int)0x35353535, (u_int)0x57575757, (u_int)0xb9b9b9b9,

368 (
u_t
)0x86868686, (u_int)0xc1c1c1c1, (u_int)0x1d1d1d1d, (u_int)0x9e9e9e9e,

369 (
u_t
)0xe1e1e1e1, (u_int)0xf8f8f8f8, (u_int)0x98989898, (u_int)0x11111111,

370 (
u_t
)0x69696969, (u_int)0xd9d9d9d9, (u_int)0x8e8e8e8e, (u_int)0x94949494,

371 (
u_t
)0x9b9b9b9b, (u_int)0x1e1e1e1e, (u_int)0x87878787, (u_int)0xe9e9e9e9,

372 (
u_t
)0xcececece, (u_int)0x55555555, (u_int)0x28282828, (u_int)0xdfdfdfdf,

373 (
u_t
)0x8c8c8c8c, (u_int)0xa1a1a1a1, (u_int)0x89898989, (u_int)0x0d0d0d0d,

374 (
u_t
)0xbfbfbfbf, (u_int)0xe6e6e6e6, (u_int)0x42424242, (u_int)0x68686868,

375 (
u_t
)0x41414141, (u_int)0x99999999, (u_int)0x2d2d2d2d, (u_int)0x0f0f0f0f,

376 (
u_t
)0xb0b0b0b0, (u_int)0x54545454, (u_int)0xbbbbbbbb, (u_int)0x16161616,

378 cڡ 
u32
 
	gTd0
[256] = {

379 (
u_t
)0x51f4a750, (u_int)0x7e416553, (u_int)0x1a17a4c3, (u_int)0x3a275e96,

380 (
u_t
)0x3bab6bcb, (u_int)0x1f9d45f1, (u_int)0xacfa58ab, (u_int)0x4be30393,

381 (
u_t
)0x2030fa55, (u_int)0xad766df6, (u_int)0x88cc7691, (u_int)0xf5024c25,

382 (
u_t
)0x4fe5d7fc, (u_int)0xc52acbd7, (u_int)0x26354480, (u_int)0xb562a38f,

383 (
u_t
)0xdeb15a49, (u_int)0x25ba1b67, (u_int)0x45ea0e98, (u_int)0x5dfec0e1,

384 (
u_t
)0xc32f7502, (u_int)0x814cf012, (u_int)0x8d4697a3, (u_int)0x6bd3f9c6,

385 (
u_t
)0x038f5fe7, (u_int)0x15929c95, (u_int)0xbf6d7aeb, (u_int)0x955259da,

386 (
u_t
)0xd4be832d, (u_int)0x587421d3, (u_int)0x49e06929, (u_int)0x8ec9c844,

387 (
u_t
)0x75c2896a, (u_int)0xf48e7978, (u_int)0x99583e6b, (u_int)0x27b971dd,

388 (
u_t
)0xbee14fb6, (u_int)0xf088ad17, (u_int)0xc920ac66, (u_int)0x7dce3ab4,

389 (
u_t
)0x63df4a18, (u_int)0xe51a3182, (u_int)0x97513360, (u_int)0x62537f45,

390 (
u_t
)0xb16477e0, (u_int)0xbb6bae84, (u_int)0xfe81a01c, (u_int)0xf9082b94,

391 (
u_t
)0x70486858, (u_int)0x8f45fd19, (u_int)0x94de6c87, (u_int)0x527bf8b7,

392 (
u_t
)0xab73d323, (u_int)0x724b02e2, (u_int)0xe31f8f57, (u_int)0x6655ab2a,

393 (
u_t
)0xb2eb2807, (u_int)0x2fb5c203, (u_int)0x86c57b9a, (u_int)0xd33708a5,

394 (
u_t
)0x302887f2, (u_int)0x23bfa5b2, (u_int)0x02036aba, (u_int)0xed16825c,

395 (
u_t
)0x8acf1c2b, (u_int)0xa779b492, (u_int)0xf307f2f0, (u_int)0x4e69e2a1,

396 (
u_t
)0x65daf4cd, (u_int)0x0605bed5, (u_int)0xd134621f, (u_int)0xc4a6fe8a,

397 (
u_t
)0x342e539d, (u_int)0xa2f355a0, (u_int)0x058ae132, (u_int)0xa4f6eb75,

398 (
u_t
)0x0b83ec39, (u_int)0x4060efaa, (u_int)0x5e719f06, (u_int)0xbd6e1051,

399 (
u_t
)0x3e218af9, (u_int)0x96dd063d, (u_int)0xdd3e05ae, (u_int)0x4de6bd46,

400 (
u_t
)0x91548db5, (u_int)0x71c45d05, (u_int)0x0406d46f, (u_int)0x605015ff,

401 (
u_t
)0x1998fb24, (u_int)0xd6bde997, (u_int)0x894043cc, (u_int)0x67d99e77,

402 (
u_t
)0xb0e842bd, (u_int)0x07898b88, (u_int)0xe7195b38, (u_int)0x79c8eedb,

403 (
u_t
)0xa17c0a47, (u_int)0x7c420fe9, (u_int)0xf8841ec9, (u_int)0x00000000,

404 (
u_t
)0x09808683, (u_int)0x322bed48, (u_int)0x1e1170ac, (u_int)0x6c5a724e,

405 (
u_t
)0xfd0efffb, (u_int)0x0f853856, (u_int)0x3daed51e, (u_int)0x362d3927,

406 (
u_t
)0x0a0fd964, (u_int)0x685ca621, (u_int)0x9b5b54d1, (u_int)0x24362e3a,

407 (
u_t
)0x0c0a67b1, (u_int)0x9357e70f, (u_int)0xb4ee96d2, (u_int)0x1b9b919e,

408 (
u_t
)0x80c0c54f, (u_int)0x61dc20a2, (u_int)0x5a774b69, (u_int)0x1c121a16,

409 (
u_t
)0xe293ba0a, (u_int)0xc0a02ae5, (u_int)0x3c22e043, (u_int)0x121b171d,

410 (
u_t
)0x0e090d0b, (u_int)0xf28bc7ad, (u_int)0x2db6a8b9, (u_int)0x141ea9c8,

411 (
u_t
)0x57f11985, (u_int)0xaf75074c, (u_int)0xee99ddbb, (u_int)0xa37f60fd,

412 (
u_t
)0xf701269f, (u_int)0x5c72f5bc, (u_int)0x44663bc5, (u_int)0x5bfb7e34,

413 (
u_t
)0x8b432976, (u_int)0xcb23c6dc, (u_int)0xb6edfc68, (u_int)0xb8e4f163,

414 (
u_t
)0xd731dcca, (u_int)0x42638510, (u_int)0x13972240, (u_int)0x84c61120,

415 (
u_t
)0x854a247d, (u_int)0xd2bb3df8, (u_int)0xaef93211, (u_int)0xc729a16d,

416 (
u_t
)0x1d9e2f4b, (u_int)0xdcb230f3, (u_int)0x0d8652ec, (u_int)0x77c1e3d0,

417 (
u_t
)0x2bb3166c, (u_int)0xa970b999, (u_int)0x119448fa, (u_int)0x47e96422,

418 (
u_t
)0xa8fc8cc4, (u_int)0xa0f03f1a, (u_int)0x567d2cd8, (u_int)0x223390ef,

419 (
u_t
)0x87494ec7, (u_int)0xd938d1c1, (u_int)0x8ccaa2fe, (u_int)0x98d40b36,

420 (
u_t
)0xa6f581cf, (u_int)0xa57ade28, (u_int)0xdab78e26, (u_int)0x3fadbfa4,

421 (
u_t
)0x2c3a9de4, (u_int)0x5078920d, (u_int)0x6a5fcc9b, (u_int)0x547e4662,

422 (
u_t
)0xf68d13c2, (u_int)0x90d8b8e8, (u_int)0x2e39f75e, (u_int)0x82c3aff5,

423 (
u_t
)0x9f5d80be, (u_int)0x69d0937c, (u_int)0x6fd52da9, (u_int)0xcf2512b3,

424 (
u_t
)0xc8ac993b, (u_int)0x10187da7, (u_int)0xe89c636e, (u_int)0xdb3bbb7b,

425 (
u_t
)0xcd267809, (u_int)0x6e5918f4, (u_int)0xec9ab701, (u_int)0x834f9aa8,

426 (
u_t
)0xe6956e65, (u_int)0xaaffe67e, (u_int)0x21bccf08, (u_int)0xef15e8e6,

427 (
u_t
)0xbae79bd9, (u_int)0x4a6f36ce, (u_int)0xea9f09d4, (u_int)0x29b07cd6,

428 (
u_t
)0x31a4b2af, (u_int)0x2a3f2331, (u_int)0xc6a59430, (u_int)0x35a266c0,

429 (
u_t
)0x744ebc37, (u_int)0xfc82caa6, (u_int)0xe090d0b0, (u_int)0x33a7d815,

430 (
u_t
)0xf104984a, (u_int)0x41ecdaf7, (u_int)0x7fcd500e, (u_int)0x1791f62f,

431 (
u_t
)0x764dd68d, (u_int)0x43efb04d, (u_int)0xccaa4d54, (u_int)0xe49604df,

432 (
u_t
)0x9ed1b5e3, (u_int)0x4c6a881b, (u_int)0xc12c1fb8, (u_int)0x4665517f,

433 (
u_t
)0x9d5eea04, (u_int)0x018c355d, (u_int)0xfa877473, (u_int)0xfb0b412e,

434 (
u_t
)0xb3671d5a, (u_int)0x92dbd252, (u_int)0xe9105633, (u_int)0x6dd64713,

435 (
u_t
)0x9ad7618c, (u_int)0x37a10c7a, (u_int)0x59f8148e, (u_int)0xeb133c89,

436 (
u_t
)0xcea927ee, (u_int)0xb761c935, (u_int)0xe11ce5ed, (u_int)0x7a47b13c,

437 (
u_t
)0x9cd2df59, (u_int)0x55f2733f, (u_int)0x1814ce79, (u_int)0x73c737bf,

438 (
u_t
)0x53f7cdea, (u_int)0x5ffdaa5b, (u_int)0xdf3d6f14, (u_int)0x7844db86,

439 (
u_t
)0xcaaff381, (u_int)0xb968c43e, (u_int)0x3824342c, (u_int)0xc2a3405f,

440 (
u_t
)0x161dc372, (u_int)0xbce2250c, (u_int)0x283c498b, (u_int)0xff0d9541,

441 (
u_t
)0x39a80171, (u_int)0x080cb3de, (u_int)0xd8b4e49c, (u_int)0x6456c190,

442 (
u_t
)0x7bcb8461, (u_int)0xd532b670, (u_int)0x486c5c74, (u_int)0xd0b85742,

444 cڡ 
u32
 
	gTd1
[256] = {

445 (
u_t
)0x5051f4a7, (u_int)0x537e4165, (u_int)0xc31a17a4, (u_int)0x963a275e,

446 (
u_t
)0xcb3bab6b, (u_int)0xf11f9d45, (u_int)0xabacfa58, (u_int)0x934be303,

447 (
u_t
)0x552030fa, (u_int)0xf6ad766d, (u_int)0x9188cc76, (u_int)0x25f5024c,

448 (
u_t
)0xfc4fe5d7, (u_int)0xd7c52acb, (u_int)0x80263544, (u_int)0x8fb562a3,

449 (
u_t
)0x49deb15a, (u_int)0x6725ba1b, (u_int)0x9845ea0e, (u_int)0xe15dfec0,

450 (
u_t
)0x02c32f75, (u_int)0x12814cf0, (u_int)0xa38d4697, (u_int)0xc66bd3f9,

451 (
u_t
)0xe7038f5f, (u_int)0x9515929c, (u_int)0xebbf6d7a, (u_int)0xda955259,

452 (
u_t
)0x2dd4be83, (u_int)0xd3587421, (u_int)0x2949e069, (u_int)0x448ec9c8,

453 (
u_t
)0x6a75c289, (u_int)0x78f48e79, (u_int)0x6b99583e, (u_int)0xdd27b971,

454 (
u_t
)0xb6bee14f, (u_int)0x17f088ad, (u_int)0x66c920ac, (u_int)0xb47dce3a,

455 (
u_t
)0x1863df4a, (u_int)0x82e51a31, (u_int)0x60975133, (u_int)0x4562537f,

456 (
u_t
)0xe0b16477, (u_int)0x84bb6bae, (u_int)0x1cfe81a0, (u_int)0x94f9082b,

457 (
u_t
)0x58704868, (u_int)0x198f45fd, (u_int)0x8794de6c, (u_int)0xb7527bf8,

458 (
u_t
)0x23ab73d3, (u_int)0xe2724b02, (u_int)0x57e31f8f, (u_int)0x2a6655ab,

459 (
u_t
)0x07b2eb28, (u_int)0x032fb5c2, (u_int)0x9a86c57b, (u_int)0xa5d33708,

460 (
u_t
)0xf2302887, (u_int)0xb223bfa5, (u_int)0xba02036a, (u_int)0x5ced1682,

461 (
u_t
)0x2b8acf1c, (u_int)0x92a779b4, (u_int)0xf0f307f2, (u_int)0xa14e69e2,

462 (
u_t
)0xcd65daf4, (u_int)0xd50605be, (u_int)0x1fd13462, (u_int)0x8ac4a6fe,

463 (
u_t
)0x9d342e53, (u_int)0xa0a2f355, (u_int)0x32058ae1, (u_int)0x75a4f6eb,

464 (
u_t
)0x390b83ec, (u_int)0xaa4060ef, (u_int)0x065e719f, (u_int)0x51bd6e10,

465 (
u_t
)0xf93e218a, (u_int)0x3d96dd06, (u_int)0xaedd3e05, (u_int)0x464de6bd,

466 (
u_t
)0xb591548d, (u_int)0x0571c45d, (u_int)0x6f0406d4, (u_int)0xff605015,

467 (
u_t
)0x241998fb, (u_int)0x97d6bde9, (u_int)0xcc894043, (u_int)0x7767d99e,

468 (
u_t
)0xbdb0e842, (u_int)0x8807898b, (u_int)0x38e7195b, (u_int)0xdb79c8ee,

469 (
u_t
)0x47a17c0a, (u_int)0xe97c420f, (u_int)0xc9f8841e, (u_int)0x00000000,

470 (
u_t
)0x83098086, (u_int)0x48322bed, (u_int)0xac1e1170, (u_int)0x4e6c5a72,

471 (
u_t
)0xfbfd0eff, (u_int)0x560f8538, (u_int)0x1e3daed5, (u_int)0x27362d39,

472 (
u_t
)0x640a0fd9, (u_int)0x21685ca6, (u_int)0xd19b5b54, (u_int)0x3a24362e,

473 (
u_t
)0xb10c0a67, (u_int)0x0f9357e7, (u_int)0xd2b4ee96, (u_int)0x9e1b9b91,

474 (
u_t
)0x4f80c0c5, (u_int)0xa261dc20, (u_int)0x695a774b, (u_int)0x161c121a,

475 (
u_t
)0x0ae293ba, (u_int)0xe5c0a02a, (u_int)0x433c22e0, (u_int)0x1d121b17,

476 (
u_t
)0x0b0e090d, (u_int)0xadf28bc7, (u_int)0xb92db6a8, (u_int)0xc8141ea9,

477 (
u_t
)0x8557f119, (u_int)0x4caf7507, (u_int)0xbbee99dd, (u_int)0xfda37f60,

478 (
u_t
)0x9ff70126, (u_int)0xbc5c72f5, (u_int)0xc544663b, (u_int)0x345bfb7e,

479 (
u_t
)0x768b4329, (u_int)0xdccb23c6, (u_int)0x68b6edfc, (u_int)0x63b8e4f1,

480 (
u_t
)0xcad731dc, (u_int)0x10426385, (u_int)0x40139722, (u_int)0x2084c611,

481 (
u_t
)0x7d854a24, (u_int)0xf8d2bb3d, (u_int)0x11aef932, (u_int)0x6dc729a1,

482 (
u_t
)0x4b1d9e2f, (u_int)0xf3dcb230, (u_int)0xec0d8652, (u_int)0xd077c1e3,

483 (
u_t
)0x6c2bb316, (u_int)0x99a970b9, (u_int)0xfa119448, (u_int)0x2247e964,

484 (
u_t
)0xc4a8fc8c, (u_int)0x1aa0f03f, (u_int)0xd8567d2c, (u_int)0xef223390,

485 (
u_t
)0xc787494e, (u_int)0xc1d938d1, (u_int)0xfe8ccaa2, (u_int)0x3698d40b,

486 (
u_t
)0xcfa6f581, (u_int)0x28a57ade, (u_int)0x26dab78e, (u_int)0xa43fadbf,

487 (
u_t
)0xe42c3a9d, (u_int)0x0d507892, (u_int)0x9b6a5fcc, (u_int)0x62547e46,

488 (
u_t
)0xc2f68d13, (u_int)0xe890d8b8, (u_int)0x5e2e39f7, (u_int)0xf582c3af,

489 (
u_t
)0xbe9f5d80, (u_int)0x7c69d093, (u_int)0xa96fd52d, (u_int)0xb3cf2512,

490 (
u_t
)0x3bc8ac99, (u_int)0xa710187d, (u_int)0x6ee89c63, (u_int)0x7bdb3bbb,

491 (
u_t
)0x09cd2678, (u_int)0xf46e5918, (u_int)0x01ec9ab7, (u_int)0xa8834f9a,

492 (
u_t
)0x65e6956e, (u_int)0x7eaaffe6, (u_int)0x0821bccf, (u_int)0xe6ef15e8,

493 (
u_t
)0xd9bae79b, (u_int)0xce4a6f36, (u_int)0xd4ea9f09, (u_int)0xd629b07c,

494 (
u_t
)0xaf31a4b2, (u_int)0x312a3f23, (u_int)0x30c6a594, (u_int)0xc035a266,

495 (
u_t
)0x37744ebc, (u_int)0xa6fc82ca, (u_int)0xb0e090d0, (u_int)0x1533a7d8,

496 (
u_t
)0x4af10498, (u_int)0xf741ecda, (u_int)0x0e7fcd50, (u_int)0x2f1791f6,

497 (
u_t
)0x8d764dd6, (u_int)0x4d43efb0, (u_int)0x54ccaa4d, (u_int)0xdfe49604,

498 (
u_t
)0xe39ed1b5, (u_int)0x1b4c6a88, (u_int)0xb8c12c1f, (u_int)0x7f466551,

499 (
u_t
)0x049d5eea, (u_int)0x5d018c35, (u_int)0x73fa8774, (u_int)0x2efb0b41,

500 (
u_t
)0x5ab3671d, (u_int)0x5292dbd2, (u_int)0x33e91056, (u_int)0x136dd647,

501 (
u_t
)0x8c9ad761, (u_int)0x7a37a10c, (u_int)0x8e59f814, (u_int)0x89eb133c,

502 (
u_t
)0xeecea927, (u_int)0x35b761c9, (u_int)0xede11ce5, (u_int)0x3c7a47b1,

503 (
u_t
)0x599cd2df, (u_int)0x3f55f273, (u_int)0x791814ce, (u_int)0xbf73c737,

504 (
u_t
)0xea53f7cd, (u_int)0x5b5ffdaa, (u_int)0x14df3d6f, (u_int)0x867844db,

505 (
u_t
)0x81caaff3, (u_int)0x3eb968c4, (u_int)0x2c382434, (u_int)0x5fc2a340,

506 (
u_t
)0x72161dc3, (u_int)0x0cbce225, (u_int)0x8b283c49, (u_int)0x41ff0d95,

507 (
u_t
)0x7139a801, (u_int)0xde080cb3, (u_int)0x9cd8b4e4, (u_int)0x906456c1,

508 (
u_t
)0x617bcb84, (u_int)0x70d532b6, (u_int)0x74486c5c, (u_int)0x42d0b857,

510 cڡ 
u32
 
	gTd2
[256] = {

511 (
u_t
)0xa75051f4, (u_int)0x65537e41, (u_int)0xa4c31a17, (u_int)0x5e963a27,

512 (
u_t
)0x6bcb3bab, (u_int)0x45f11f9d, (u_int)0x58abacfa, (u_int)0x03934be3,

513 (
u_t
)0xfa552030, (u_int)0x6df6ad76, (u_int)0x769188cc, (u_int)0x4c25f502,

514 (
u_t
)0xd7fc4fe5, (u_int)0xcbd7c52a, (u_int)0x44802635, (u_int)0xa38fb562,

515 (
u_t
)0x5a49deb1, (u_int)0x1b6725ba, (u_int)0x0e9845ea, (u_int)0xc0e15dfe,

516 (
u_t
)0x7502c32f, (u_int)0xf012814c, (u_int)0x97a38d46, (u_int)0xf9c66bd3,

517 (
u_t
)0x5fe7038f, (u_int)0x9c951592, (u_int)0x7aebbf6d, (u_int)0x59da9552,

518 (
u_t
)0x832dd4be, (u_int)0x21d35874, (u_int)0x692949e0, (u_int)0xc8448ec9,

519 (
u_t
)0x896a75c2, (u_int)0x7978f48e, (u_int)0x3e6b9958, (u_int)0x71dd27b9,

520 (
u_t
)0x4fb6bee1, (u_int)0xad17f088, (u_int)0xac66c920, (u_int)0x3ab47dce,

521 (
u_t
)0x4a1863df, (u_int)0x3182e51a, (u_int)0x33609751, (u_int)0x7f456253,

522 (
u_t
)0x77e0b164, (u_int)0xae84bb6b, (u_int)0xa01cfe81, (u_int)0x2b94f908,

523 (
u_t
)0x68587048, (u_int)0xfd198f45, (u_int)0x6c8794de, (u_int)0xf8b7527b,

524 (
u_t
)0xd323ab73, (u_int)0x02e2724b, (u_int)0x8f57e31f, (u_int)0xab2a6655,

525 (
u_t
)0x2807b2eb, (u_int)0xc2032fb5, (u_int)0x7b9a86c5, (u_int)0x08a5d337,

526 (
u_t
)0x87f23028, (u_int)0xa5b223bf, (u_int)0x6aba0203, (u_int)0x825ced16,

527 (
u_t
)0x1c2b8acf, (u_int)0xb492a779, (u_int)0xf2f0f307, (u_int)0xe2a14e69,

528 (
u_t
)0xf4cd65da, (u_int)0xbed50605, (u_int)0x621fd134, (u_int)0xfe8ac4a6,

529 (
u_t
)0x539d342e, (u_int)0x55a0a2f3, (u_int)0xe132058a, (u_int)0xeb75a4f6,

530 (
u_t
)0xec390b83, (u_int)0xefaa4060, (u_int)0x9f065e71, (u_int)0x1051bd6e,

532 (
u_t
)0x8af93e21, (u_int)0x063d96dd, (u_int)0x05aedd3e, (u_int)0xbd464de6,

533 (
u_t
)0x8db59154, (u_int)0x5d0571c4, (u_int)0xd46f0406, (u_int)0x15ff6050,

534 (
u_t
)0xfb241998, (u_int)0xe997d6bd, (u_int)0x43cc8940, (u_int)0x9e7767d9,

535 (
u_t
)0x42bdb0e8, (u_int)0x8b880789, (u_int)0x5b38e719, (u_int)0xeedb79c8,

536 (
u_t
)0x0a47a17c, (u_int)0x0fe97c42, (u_int)0x1ec9f884, (u_int)0x00000000,

537 (
u_t
)0x86830980, (u_int)0xed48322b, (u_int)0x70ac1e11, (u_int)0x724e6c5a,

538 (
u_t
)0xfffbfd0e, (u_int)0x38560f85, (u_int)0xd51e3dae, (u_int)0x3927362d,

539 (
u_t
)0xd9640a0f, (u_int)0xa621685c, (u_int)0x54d19b5b, (u_int)0x2e3a2436,

540 (
u_t
)0x67b10c0a, (u_int)0xe70f9357, (u_int)0x96d2b4ee, (u_int)0x919e1b9b,

541 (
u_t
)0xc54f80c0, (u_int)0x20a261dc, (u_int)0x4b695a77, (u_int)0x1a161c12,

542 (
u_t
)0xba0ae293, (u_int)0x2ae5c0a0, (u_int)0xe0433c22, (u_int)0x171d121b,

543 (
u_t
)0x0d0b0e09, (u_int)0xc7adf28b, (u_int)0xa8b92db6, (u_int)0xa9c8141e,

544 (
u_t
)0x198557f1, (u_int)0x074caf75, (u_int)0xddbbee99, (u_int)0x60fda37f,

545 (
u_t
)0x269ff701, (u_int)0xf5bc5c72, (u_int)0x3bc54466, (u_int)0x7e345bfb,

546 (
u_t
)0x29768b43, (u_int)0xc6dccb23, (u_int)0xfc68b6ed, (u_int)0xf163b8e4,

547 (
u_t
)0xdccad731, (u_int)0x85104263, (u_int)0x22401397, (u_int)0x112084c6,

548 (
u_t
)0x247d854a, (u_int)0x3df8d2bb, (u_int)0x3211aef9, (u_int)0xa16dc729,

549 (
u_t
)0x2f4b1d9e, (u_int)0x30f3dcb2, (u_int)0x52ec0d86, (u_int)0xe3d077c1,

550 (
u_t
)0x166c2bb3, (u_int)0xb999a970, (u_int)0x48fa1194, (u_int)0x642247e9,

551 (
u_t
)0x8cc4a8fc, (u_int)0x3f1aa0f0, (u_int)0x2cd8567d, (u_int)0x90ef2233,

552 (
u_t
)0x4ec78749, (u_int)0xd1c1d938, (u_int)0xa2fe8cca, (u_int)0x0b3698d4,

553 (
u_t
)0x81cfa6f5, (u_int)0xde28a57a, (u_int)0x8e26dab7, (u_int)0xbfa43fad,

554 (
u_t
)0x9de42c3a, (u_int)0x920d5078, (u_int)0xcc9b6a5f, (u_int)0x4662547e,

555 (
u_t
)0x13c2f68d, (u_int)0xb8e890d8, (u_int)0xf75e2e39, (u_int)0xaff582c3,

556 (
u_t
)0x80be9f5d, (u_int)0x937c69d0, (u_int)0x2da96fd5, (u_int)0x12b3cf25,

557 (
u_t
)0x993bc8ac, (u_int)0x7da71018, (u_int)0x636ee89c, (u_int)0xbb7bdb3b,

558 (
u_t
)0x7809cd26, (u_int)0x18f46e59, (u_int)0xb701ec9a, (u_int)0x9aa8834f,

559 (
u_t
)0x6e65e695, (u_int)0xe67eaaff, (u_int)0xcf0821bc, (u_int)0xe8e6ef15,

560 (
u_t
)0x9bd9bae7, (u_int)0x36ce4a6f, (u_int)0x09d4ea9f, (u_int)0x7cd629b0,

561 (
u_t
)0xb2af31a4, (u_int)0x23312a3f, (u_int)0x9430c6a5, (u_int)0x66c035a2,

562 (
u_t
)0xbc37744e, (u_int)0xcaa6fc82, (u_int)0xd0b0e090, (u_int)0xd81533a7,

563 (
u_t
)0x984af104, (u_int)0xdaf741ec, (u_int)0x500e7fcd, (u_int)0xf62f1791,

564 (
u_t
)0xd68d764d, (u_int)0xb04d43ef, (u_int)0x4d54ccaa, (u_int)0x04dfe496,

565 (
u_t
)0xb5e39ed1, (u_int)0x881b4c6a, (u_int)0x1fb8c12c, (u_int)0x517f4665,

566 (
u_t
)0xea049d5e, (u_int)0x355d018c, (u_int)0x7473fa87, (u_int)0x412efb0b,

567 (
u_t
)0x1d5ab367, (u_int)0xd25292db, (u_int)0x5633e910, (u_int)0x47136dd6,

568 (
u_t
)0x618c9ad7, (u_int)0x0c7a37a1, (u_int)0x148e59f8, (u_int)0x3c89eb13,

569 (
u_t
)0x27eecea9, (u_int)0xc935b761, (u_int)0xe5ede11c, (u_int)0xb13c7a47,

570 (
u_t
)0xdf599cd2, (u_int)0x733f55f2, (u_int)0xce791814, (u_int)0x37bf73c7,

571 (
u_t
)0xcdea53f7, (u_int)0xaa5b5ffd, (u_int)0x6f14df3d, (u_int)0xdb867844,

572 (
u_t
)0xf381caaf, (u_int)0xc43eb968, (u_int)0x342c3824, (u_int)0x405fc2a3,

573 (
u_t
)0xc372161d, (u_int)0x250cbce2, (u_int)0x498b283c, (u_int)0x9541ff0d,

574 (
u_t
)0x017139a8, (u_int)0xb3de080c, (u_int)0xe49cd8b4, (u_int)0xc1906456,

575 (
u_t
)0x84617bcb, (u_int)0xb670d532, (u_int)0x5c74486c, (u_int)0x5742d0b8,

577 cڡ 
u32
 
	gTd3
[256] = {

578 (
u_t
)0xf4a75051, (u_int)0x4165537e, (u_int)0x17a4c31a, (u_int)0x275e963a,

579 (
u_t
)0xab6bcb3b, (u_int)0x9d45f11f, (u_int)0xfa58abac, (u_int)0xe303934b,

580 (
u_t
)0x30fa5520, (u_int)0x766df6ad, (u_int)0xcc769188, (u_int)0x024c25f5,

581 (
u_t
)0xe5d7fc4f, (u_int)0x2acbd7c5, (u_int)0x35448026, (u_int)0x62a38fb5,

582 (
u_t
)0xb15a49de, (u_int)0xba1b6725, (u_int)0xea0e9845, (u_int)0xfec0e15d,

583 (
u_t
)0x2f7502c3, (u_int)0x4cf01281, (u_int)0x4697a38d, (u_int)0xd3f9c66b,

584 (
u_t
)0x8f5fe703, (u_int)0x929c9515, (u_int)0x6d7aebbf, (u_int)0x5259da95,

585 (
u_t
)0xbe832dd4, (u_int)0x7421d358, (u_int)0xe0692949, (u_int)0xc9c8448e,

586 (
u_t
)0xc2896a75, (u_int)0x8e7978f4, (u_int)0x583e6b99, (u_int)0xb971dd27,

587 (
u_t
)0xe14fb6be, (u_int)0x88ad17f0, (u_int)0x20ac66c9, (u_int)0xce3ab47d,

588 (
u_t
)0xdf4a1863, (u_int)0x1a3182e5, (u_int)0x51336097, (u_int)0x537f4562,

589 (
u_t
)0x6477e0b1, (u_int)0x6bae84bb, (u_int)0x81a01cfe, (u_int)0x082b94f9,

590 (
u_t
)0x48685870, (u_int)0x45fd198f, (u_int)0xde6c8794, (u_int)0x7bf8b752,

591 (
u_t
)0x73d323ab, (u_int)0x4b02e272, (u_int)0x1f8f57e3, (u_int)0x55ab2a66,

592 (
u_t
)0xeb2807b2, (u_int)0xb5c2032f, (u_int)0xc57b9a86, (u_int)0x3708a5d3,

593 (
u_t
)0x2887f230, (u_int)0xbfa5b223, (u_int)0x036aba02, (u_int)0x16825ced,

594 (
u_t
)0xcf1c2b8a, (u_int)0x79b492a7, (u_int)0x07f2f0f3, (u_int)0x69e2a14e,

595 (
u_t
)0xdaf4cd65, (u_int)0x05bed506, (u_int)0x34621fd1, (u_int)0xa6fe8ac4,

596 (
u_t
)0x2e539d34, (u_int)0xf355a0a2, (u_int)0x8ae13205, (u_int)0xf6eb75a4,

597 (
u_t
)0x83ec390b, (u_int)0x60efaa40, (u_int)0x719f065e, (u_int)0x6e1051bd,

598 (
u_t
)0x218af93e, (u_int)0xdd063d96, (u_int)0x3e05aedd, (u_int)0xe6bd464d,

599 (
u_t
)0x548db591, (u_int)0xc45d0571, (u_int)0x06d46f04, (u_int)0x5015ff60,

600 (
u_t
)0x98fb2419, (u_int)0xbde997d6, (u_int)0x4043cc89, (u_int)0xd99e7767,

601 (
u_t
)0xe842bdb0, (u_int)0x898b8807, (u_int)0x195b38e7, (u_int)0xc8eedb79,

602 (
u_t
)0x7c0a47a1, (u_int)0x420fe97c, (u_int)0x841ec9f8, (u_int)0x00000000,

603 (
u_t
)0x80868309, (u_int)0x2bed4832, (u_int)0x1170ac1e, (u_int)0x5a724e6c,

604 (
u_t
)0x0efffbfd, (u_int)0x8538560f, (u_int)0xaed51e3d, (u_int)0x2d392736,

605 (
u_t
)0x0fd9640a, (u_int)0x5ca62168, (u_int)0x5b54d19b, (u_int)0x362e3a24,

606 (
u_t
)0x0a67b10c, (u_int)0x57e70f93, (u_int)0xee96d2b4, (u_int)0x9b919e1b,

607 (
u_t
)0xc0c54f80, (u_int)0xdc20a261, (u_int)0x774b695a, (u_int)0x121a161c,

608 (
u_t
)0x93ba0ae2, (u_int)0xa02ae5c0, (u_int)0x22e0433c, (u_int)0x1b171d12,

609 (
u_t
)0x090d0b0e, (u_int)0x8bc7adf2, (u_int)0xb6a8b92d, (u_int)0x1ea9c814,

610 (
u_t
)0xf1198557, (u_int)0x75074caf, (u_int)0x99ddbbee, (u_int)0x7f60fda3,

611 (
u_t
)0x01269ff7, (u_int)0x72f5bc5c, (u_int)0x663bc544, (u_int)0xfb7e345b,

612 (
u_t
)0x4329768b, (u_int)0x23c6dccb, (u_int)0xedfc68b6, (u_int)0xe4f163b8,

613 (
u_t
)0x31dccad7, (u_int)0x63851042, (u_int)0x97224013, (u_int)0xc6112084,

614 (
u_t
)0x4a247d85, (u_int)0xbb3df8d2, (u_int)0xf93211ae, (u_int)0x29a16dc7,

615 (
u_t
)0x9e2f4b1d, (u_int)0xb230f3dc, (u_int)0x8652ec0d, (u_int)0xc1e3d077,

616 (
u_t
)0xb3166c2b, (u_int)0x70b999a9, (u_int)0x9448fa11, (u_int)0xe9642247,

617 (
u_t
)0xfc8cc4a8, (u_int)0xf03f1aa0, (u_int)0x7d2cd856, (u_int)0x3390ef22,

618 (
u_t
)0x494ec787, (u_int)0x38d1c1d9, (u_int)0xcaa2fe8c, (u_int)0xd40b3698,

619 (
u_t
)0xf581cfa6, (u_int)0x7ade28a5, (u_int)0xb78e26da, (u_int)0xadbfa43f,

620 (
u_t
)0x3a9de42c, (u_int)0x78920d50, (u_int)0x5fcc9b6a, (u_int)0x7e466254,

621 (
u_t
)0x8d13c2f6, (u_int)0xd8b8e890, (u_int)0x39f75e2e, (u_int)0xc3aff582,

622 (
u_t
)0x5d80be9f, (u_int)0xd0937c69, (u_int)0xd52da96f, (u_int)0x2512b3cf,

623 (
u_t
)0xac993bc8, (u_int)0x187da710, (u_int)0x9c636ee8, (u_int)0x3bbb7bdb,

624 (
u_t
)0x267809cd, (u_int)0x5918f46e, (u_int)0x9ab701ec, (u_int)0x4f9aa883,

625 (
u_t
)0x956e65e6, (u_int)0xffe67eaa, (u_int)0xbccf0821, (u_int)0x15e8e6ef,

626 (
u_t
)0xe79bd9ba, (u_int)0x6f36ce4a, (u_int)0x9f09d4ea, (u_int)0xb07cd629,

627 (
u_t
)0xa4b2af31, (u_int)0x3f23312a, (u_int)0xa59430c6, (u_int)0xa266c035,

628 (
u_t
)0x4ebc3774, (u_int)0x82caa6fc, (u_int)0x90d0b0e0, (u_int)0xa7d81533,

629 (
u_t
)0x04984af1, (u_int)0xecdaf741, (u_int)0xcd500e7f, (u_int)0x91f62f17,

630 (
u_t
)0x4dd68d76, (u_int)0xefb04d43, (u_int)0xaa4d54cc, (u_int)0x9604dfe4,

631 (
u_t
)0xd1b5e39e, (u_int)0x6a881b4c, (u_int)0x2c1fb8c1, (u_int)0x65517f46,

632 (
u_t
)0x5eea049d, (u_int)0x8c355d01, (u_int)0x877473fa, (u_int)0x0b412efb,

633 (
u_t
)0x671d5ab3, (u_int)0xdbd25292, (u_int)0x105633e9, (u_int)0xd647136d,

634 (
u_t
)0xd7618c9a, (u_int)0xa10c7a37, (u_int)0xf8148e59, (u_int)0x133c89eb,

635 (
u_t
)0xa927eece, (u_int)0x61c935b7, (u_int)0x1ce5ede1, (u_int)0x47b13c7a,

636 (
u_t
)0xd2df599c, (u_int)0xf2733f55, (u_int)0x14ce7918, (u_int)0xc737bf73,

637 (
u_t
)0xf7cdea53, (u_int)0xfdaa5b5f, (u_int)0x3d6f14df, (u_int)0x44db8678,

638 (
u_t
)0xaff381ca, (u_int)0x68c43eb9, (u_int)0x24342c38, (u_int)0xa3405fc2,

639 (
u_t
)0x1dc37216, (u_int)0xe2250cbc, (u_int)0x3c498b28, (u_int)0x0d9541ff,

640 (
u_t
)0xa8017139, (u_int)0x0cb3de08, (u_int)0xb4e49cd8, (u_int)0x56c19064,

641 (
u_t
)0xcb84617b, (u_int)0x32b670d5, (u_int)0x6c5c7448, (u_int)0xb85742d0,

643 cڡ 
u32
 
	gTd4
[256] = {

644 (
u_t
)0x52525252, (u_int)0x09090909, (u_int)0x6a6a6a6a, (u_int)0xd5d5d5d5,

645 (
u_t
)0x30303030, (u_int)0x36363636, (u_int)0xa5a5a5a5, (u_int)0x38383838,

646 (
u_t
)0xbfbfbfbf, (u_int)0x40404040, (u_int)0xa3a3a3a3, (u_int)0x9e9e9e9e,

647 (
u_t
)0x81818181, (u_int)0xf3f3f3f3, (u_int)0xd7d7d7d7, (u_int)0xfbfbfbfb,

648 (
u_t
)0x7c7c7c7c, (u_int)0xe3e3e3e3, (u_int)0x39393939, (u_int)0x82828282,

649 (
u_t
)0x9b9b9b9b, (u_int)0x2f2f2f2f, (u_int)0xffffffff, (u_int)0x87878787,

650 (
u_t
)0x34343434, (u_int)0x8e8e8e8e, (u_int)0x43434343, (u_int)0x44444444,

651 (
u_t
)0xc4c4c4c4, (u_int)0xdededede, (u_int)0xe9e9e9e9, (u_int)0xcbcbcbcb,

652 (
u_t
)0x54545454, (u_int)0x7b7b7b7b, (u_int)0x94949494, (u_int)0x32323232,

653 (
u_t
)0xa6a6a6a6, (u_int)0xc2c2c2c2, (u_int)0x23232323, (u_int)0x3d3d3d3d,

654 (
u_t
)0xeeeeeeee, (u_int)0x4c4c4c4c, (u_int)0x95959595, (u_int)0x0b0b0b0b,

655 (
u_t
)0x42424242, (u_int)0xfafafafa, (u_int)0xc3c3c3c3, (u_int)0x4e4e4e4e,

656 (
u_t
)0x08080808, (u_int)0x2e2e2e2e, (u_int)0xa1a1a1a1, (u_int)0x66666666,

657 (
u_t
)0x28282828, (u_int)0xd9d9d9d9, (u_int)0x24242424, (u_int)0xb2b2b2b2,

658 (
u_t
)0x76767676, (u_int)0x5b5b5b5b, (u_int)0xa2a2a2a2, (u_int)0x49494949,

659 (
u_t
)0x6d6d6d6d, (u_int)0x8b8b8b8b, (u_int)0xd1d1d1d1, (u_int)0x25252525,

660 (
u_t
)0x72727272, (u_int)0xf8f8f8f8, (u_int)0xf6f6f6f6, (u_int)0x64646464,

661 (
u_t
)0x86868686, (u_int)0x68686868, (u_int)0x98989898, (u_int)0x16161616,

662 (
u_t
)0xd4d4d4d4, (u_int)0xa4a4a4a4, (u_int)0x5c5c5c5c, (u_int)0xcccccccc,

663 (
u_t
)0x5d5d5d5d, (u_int)0x65656565, (u_int)0xb6b6b6b6, (u_int)0x92929292,

664 (
u_t
)0x6c6c6c6c, (u_int)0x70707070, (u_int)0x48484848, (u_int)0x50505050,

665 (
u_t
)0xfdfdfdfd, (u_int)0xedededed, (u_int)0xb9b9b9b9, (u_int)0xdadadada,

666 (
u_t
)0x5e5e5e5e, (u_int)0x15151515, (u_int)0x46464646, (u_int)0x57575757,

667 (
u_t
)0xa7a7a7a7, (u_int)0x8d8d8d8d, (u_int)0x9d9d9d9d, (u_int)0x84848484,

668 (
u_t
)0x90909090, (u_int)0xd8d8d8d8, (u_int)0xabababab, (u_int)0x00000000,

669 (
u_t
)0x8c8c8c8c, (u_int)0xbcbcbcbc, (u_int)0xd3d3d3d3, (u_int)0x0a0a0a0a,

670 (
u_t
)0xf7f7f7f7, (u_int)0xe4e4e4e4, (u_int)0x58585858, (u_int)0x05050505,

671 (
u_t
)0xb8b8b8b8, (u_int)0xb3b3b3b3, (u_int)0x45454545, (u_int)0x06060606,

672 (
u_t
)0xd0d0d0d0, (u_int)0x2c2c2c2c, (u_int)0x1e1e1e1e, (u_int)0x8f8f8f8f,

673 (
u_t
)0xcacacaca, (u_int)0x3f3f3f3f, (u_int)0x0f0f0f0f, (u_int)0x02020202,

674 (
u_t
)0xc1c1c1c1, (u_int)0xafafafaf, (u_int)0xbdbdbdbd, (u_int)0x03030303,

675 (
u_t
)0x01010101, (u_int)0x13131313, (u_int)0x8a8a8a8a, (u_int)0x6b6b6b6b,

676 (
u_t
)0x3a3a3a3a, (u_int)0x91919191, (u_int)0x11111111, (u_int)0x41414141,

677 (
u_t
)0x4f4f4f4f, (u_int)0x67676767, (u_int)0xdcdcdcdc, (u_int)0xeaeaeaea,

678 (
u_t
)0x97979797, (u_int)0xf2f2f2f2, (u_int)0xcfcfcfcf, (u_int)0xcececece,

679 (
u_t
)0xf0f0f0f0, (u_int)0xb4b4b4b4, (u_int)0xe6e6e6e6, (u_int)0x73737373,

680 (
u_t
)0x96969696, (u_int)0xacacacac, (u_int)0x74747474, (u_int)0x22222222,

681 (
u_t
)0xe7e7e7e7, (u_int)0xadadadad, (u_int)0x35353535, (u_int)0x85858585,

682 (
u_t
)0xe2e2e2e2, (u_int)0xf9f9f9f9, (u_int)0x37373737, (u_int)0xe8e8e8e8,

683 (
u_t
)0x1c1c1c1c, (u_int)0x75757575, (u_int)0xdfdfdfdf, (u_int)0x6e6e6e6e,

684 (
u_t
)0x47474747, (u_int)0xf1f1f1f1, (u_int)0x1a1a1a1a, (u_int)0x71717171,

685 (
u_t
)0x1d1d1d1d, (u_int)0x29292929, (u_int)0xc5c5c5c5, (u_int)0x89898989,

686 (
u_t
)0x6f6f6f6f, (u_int)0xb7b7b7b7, (u_int)0x62626262, (u_int)0x0e0e0e0e,

687 (
u_t
)0xaaaaaaaa, (u_int)0x18181818, (u_int)0xbebebebe, (u_int)0x1b1b1b1b,

688 (
u_t
)0xfcfcfcfc, (u_int)0x56565656, (u_int)0x3e3e3e3e, (u_int)0x4b4b4b4b,

689 (
u_t
)0xc6c6c6c6, (u_int)0xd2d2d2d2, (u_int)0x79797979, (u_int)0x20202020,

690 (
u_t
)0x9a9a9a9a, (u_int)0xdbdbdbdb, (u_int)0xc0c0c0c0, (u_int)0xfefefefe,

691 (
u_t
)0x78787878, (u_int)0xcdcdcdcd, (u_int)0x5a5a5a5a, (u_int)0xf4f4f4f4,

692 (
u_t
)0x1f1f1f1f, (u_int)0xdddddddd, (u_int)0xa8a8a8a8, (u_int)0x33333333,

693 (
u_t
)0x88888888, (u_int)0x07070707, (u_int)0xc7c7c7c7, (u_int)0x31313131,

694 (
u_t
)0xb1b1b1b1, (u_int)0x12121212, (u_int)0x10101010, (u_int)0x59595959,

695 (
u_t
)0x27272727, (u_int)0x80808080, (u_int)0xecececec, (u_int)0x5f5f5f5f,

696 (
u_t
)0x60606060, (u_int)0x51515151, (u_int)0x7f7f7f7f, (u_int)0xa9a9a9a9,

697 (
u_t
)0x19191919, (u_int)0xb5b5b5b5, (u_int)0x4a4a4a4a, (u_int)0x0d0d0d0d,

698 (
u_t
)0x2d2d2d2d, (u_int)0xe5e5e5e5, (u_int)0x7a7a7a7a, (u_int)0x9f9f9f9f,

699 (
u_t
)0x93939393, (u_int)0xc9c9c9c9, (u_int)0x9c9c9c9c, (u_int)0xefefefef,

700 (
u_t
)0xa0a0a0a0, (u_int)0xe0e0e0e0, (u_int)0x3b3b3b3b, (u_int)0x4d4d4d4d,

701 (
u_t
)0xaeaeaeae, (u_int)0x2a2a2a2a, (u_int)0xf5f5f5f5, (u_int)0xb0b0b0b0,

702 (
u_t
)0xc8c8c8c8, (u_int)0xebebebeb, (u_int)0xbbbbbbbb, (u_int)0x3c3c3c3c,

703 (
u_t
)0x83838383, (u_int)0x53535353, (u_int)0x99999999, (u_int)0x61616161,

704 (
u_t
)0x17171717, (u_int)0x2b2b2b2b, (u_int)0x04040404, (u_int)0x7e7e7e7e,

705 (
u_t
)0xbabababa, (u_int)0x77777777, (u_int)0xd6d6d6d6, (u_int)0x26262626,

706 (
u_t
)0xe1e1e1e1, (u_int)0x69696969, (u_int)0x14141414, (u_int)0x63636363,

707 (
u_t
)0x55555555, (u_int)0x21212121, (u_int)0x0c0c0c0c, (u_int)0x7d7d7d7d,

709 cڡ 
u32
 
	grc
[] = {

715 
	#SWAP
(
x
(
	`_l
(x, 8& 0x00ff00f| 
	`_r
(x, 8& 0xff00ff00)

	)

717 #ifde
_MSC_VER


718 
	#GETU32
(
p

	`SWAP
(*((
u32
 *))))

	)

719 
	#PUTU32
(

, 

{ *((
u32
 *)()
	`SWAP
(()); }

	)

721 
	#GETU32
(

(((
u32
)t)[0] << 24^ ((u32)t)[1] << 16^ ((u32)t)[2] << 8^ ((u32)t)[3]))

	)

722 
	#PUTU32
(

, 

{ ()[0] = (
u8
)((>> 24); ()[1] = (u8)((>> 16); ()[2] = (u8)((>> 8); ()[3] = (u8)(); }

	)

736 
	$__db_rijndlKeySupEnc
(
rk
, 
chKey
, 
keyBs
)

737 
u32
 *
rk
;

738 cڡ 
u8
 *
chKey
;

739 
keyBs
;

741 
i
 = 0;

742 
u32
 
mp
;

744 
rk
[0] = 
	`GETU32
(
chKey
 );

745 
rk
[1] = 
	`GETU32
(
chKey
 + 4);

746 
rk
[2] = 
	`GETU32
(
chKey
 + 8);

747 
rk
[3] = 
	`GETU32
(
chKey
 + 12);

748 i(
keyBs
 == 128) {

750 
mp
 = 
rk
[3];

751 
rk
[4] =k[0] ^

752 (
Te4
[(
mp
 >> 16) & 0xff] & 0xff000000) ^

753 (
Te4
[(
mp
 >> 8) & 0xff] & 0x00ff0000) ^

754 (
Te4
[(
mp
 ) & 0xff] & 0x0000ff00) ^

755 (
Te4
[(
mp
 >> 24) ] & 0x000000ff) ^

756 
rc
[
i
];

757 
rk
[5] =k[1] ^k[4];

758 
rk
[6] =k[2] ^k[5];

759 
rk
[7] =k[3] ^k[6];

760 i(++
i
 == 10) {

763 
rk
 += 4;

766 
rk
[4] = 
	`GETU32
(
chKey
 + 16);

767 
rk
[5] = 
	`GETU32
(
chKey
 + 20);

768 i(
keyBs
 == 192) {

770 
mp
 = 
rk
[ 5];

771 
rk
[ 6] =k[ 0] ^

772 (
Te4
[(
mp
 >> 16) & 0xff] & 0xff000000) ^

773 (
Te4
[(
mp
 >> 8) & 0xff] & 0x00ff0000) ^

774 (
Te4
[(
mp
 ) & 0xff] & 0x0000ff00) ^

775 (
Te4
[(
mp
 >> 24) ] & 0x000000ff) ^

776 
rc
[
i
];

777 
rk
[ 7] =k[ 1] ^k[ 6];

778 
rk
[ 8] =k[ 2] ^k[ 7];

779 
rk
[ 9] =k[ 3] ^k[ 8];

780 i(++
i
 == 8) {

783 
rk
[10] =k[ 4] ^k[ 9];

784 
rk
[11] =k[ 5] ^k[10];

785 
rk
 += 6;

788 
rk
[6] = 
	`GETU32
(
chKey
 + 24);

789 
rk
[7] = 
	`GETU32
(
chKey
 + 28);

790 i(
keyBs
 == 256) {

792 
mp
 = 
rk
[ 7];

793 
rk
[ 8] =k[ 0] ^

794 (
Te4
[(
mp
 >> 16) & 0xff] & 0xff000000) ^

795 (
Te4
[(
mp
 >> 8) & 0xff] & 0x00ff0000) ^

796 (
Te4
[(
mp
 ) & 0xff] & 0x0000ff00) ^

797 (
Te4
[(
mp
 >> 24) ] & 0x000000ff) ^

798 
rc
[
i
];

799 
rk
[ 9] =k[ 1] ^k[ 8];

800 
rk
[10] =k[ 2] ^k[ 9];

801 
rk
[11] =k[ 3] ^k[10];

802 i(++
i
 == 7) {

805 
mp
 = 
rk
[11];

806 
rk
[12] =k[ 4] ^

807 (
Te4
[(
mp
 >> 24) ] & 0xff000000) ^

808 (
Te4
[(
mp
 >> 16) & 0xff] & 0x00ff0000) ^

809 (
Te4
[(
mp
 >> 8) & 0xff] & 0x0000ff00) ^

810 (
Te4
[(
mp
 ) & 0xff] & 0x000000ff);

811 
rk
[13] =k[ 5] ^k[12];

812 
rk
[14] =k[ 6] ^k[13];

813 
rk
[15] =k[ 7] ^k[14];

815 
rk
 += 8;

819 
	}
}

832 
	$__db_rijndlKeySupDec
(
rk
, 
chKey
, 
keyBs
)

833 
u32
 *
rk
;

834 cڡ 
u8
 *
chKey
;

835 
keyBs
;

837 
Nr
, 
i
, 
j
;

838 
u32
 
mp
;

841 
Nr
 = 
	`__db_rijndlKeySupEnc
(
rk
, 
chKey
, 
keyBs
);

843 
i
 = 0, 
j
 = 4*
Nr
; i < j; i += 4, j -= 4) {

844 
mp
 = 
rk
[
i
 ];k[] =k[
j
 ];k[j ] =emp;

845 
mp
 = 
rk
[
i
 + 1];k[+ 1] =k[
j
 + 1];k[j + 1] =emp;

846 
mp
 = 
rk
[
i
 + 2];k[+ 2] =k[
j
 + 2];k[j + 2] =emp;

847 
mp
 = 
rk
[
i
 + 3];k[+ 3] =k[
j
 + 3];k[j + 3] =emp;

850 
i
 = 1; i < 
Nr
; i++) {

851 
rk
 += 4;

852 
rk
[0] =

853 
Td0
[
Te4
[(
rk
[0] >> 24) ] & 0xff] ^

854 
Td1
[
Te4
[(
rk
[0] >> 16) & 0xff] & 0xff] ^

855 
Td2
[
Te4
[(
rk
[0] >> 8) & 0xff] & 0xff] ^

856 
Td3
[
Te4
[(
rk
[0] ) & 0xff] & 0xff];

857 
rk
[1] =

858 
Td0
[
Te4
[(
rk
[1] >> 24) ] & 0xff] ^

859 
Td1
[
Te4
[(
rk
[1] >> 16) & 0xff] & 0xff] ^

860 
Td2
[
Te4
[(
rk
[1] >> 8) & 0xff] & 0xff] ^

861 
Td3
[
Te4
[(
rk
[1] ) & 0xff] & 0xff];

862 
rk
[2] =

863 
Td0
[
Te4
[(
rk
[2] >> 24) ] & 0xff] ^

864 
Td1
[
Te4
[(
rk
[2] >> 16) & 0xff] & 0xff] ^

865 
Td2
[
Te4
[(
rk
[2] >> 8) & 0xff] & 0xff] ^

866 
Td3
[
Te4
[(
rk
[2] ) & 0xff] & 0xff];

867 
rk
[3] =

868 
Td0
[
Te4
[(
rk
[3] >> 24) ] & 0xff] ^

869 
Td1
[
Te4
[(
rk
[3] >> 16) & 0xff] & 0xff] ^

870 
Td2
[
Te4
[(
rk
[3] >> 8) & 0xff] & 0xff] ^

871 
Td3
[
Te4
[(
rk
[3] ) & 0xff] & 0xff];

873  
Nr
;

874 
	}
}

882 
	$__db_rijndlEny
(
rk
, 
Nr
, 

, 

)

883 
u32
 *
rk
;

884 
Nr
;

885 cڡ 
u8
 *

;

886 
u8
 *

;

888 
u32
 
s0
, 
s1
, 
s2
, 
s3
, 
t0
, 
t1
, 
t2
, 
t3
;

889 #ide
FULL_UNROLL


890 
r
;

897 
s0
 = 
	`GETU32
(

 ) ^ 
rk
[0];

898 
s1
 = 
	`GETU32
(

 + 4^ 
rk
[1];

899 
s2
 = 
	`GETU32
(

 + 8^ 
rk
[2];

900 
s3
 = 
	`GETU32
(

 + 12^ 
rk
[3];

901 #ifde
FULL_UNROLL


903 
t0
 = 
Te0
[
s0
 >> 24] ^ 
Te1
[(
s1
 >> 16& 0xff] ^ 
Te2
[(
s2
 >> 8& 0xff] ^ 
Te3
[
s3
 & 0xff] ^ 
rk
[ 4];

904 
t1
 = 
Te0
[
s1
 >> 24] ^ 
Te1
[(
s2
 >> 16& 0xff] ^ 
Te2
[(
s3
 >> 8& 0xff] ^ 
Te3
[
s0
 & 0xff] ^ 
rk
[ 5];

905 
t2
 = 
Te0
[
s2
 >> 24] ^ 
Te1
[(
s3
 >> 16& 0xff] ^ 
Te2
[(
s0
 >> 8& 0xff] ^ 
Te3
[
s1
 & 0xff] ^ 
rk
[ 6];

906 
t3
 = 
Te0
[
s3
 >> 24] ^ 
Te1
[(
s0
 >> 16& 0xff] ^ 
Te2
[(
s1
 >> 8& 0xff] ^ 
Te3
[
s2
 & 0xff] ^ 
rk
[ 7];

908 
s0
 = 
Te0
[
t0
 >> 24] ^ 
Te1
[(
t1
 >> 16& 0xff] ^ 
Te2
[(
t2
 >> 8& 0xff] ^ 
Te3
[
t3
 & 0xff] ^ 
rk
[ 8];

909 
s1
 = 
Te0
[
t1
 >> 24] ^ 
Te1
[(
t2
 >> 16& 0xff] ^ 
Te2
[(
t3
 >> 8& 0xff] ^ 
Te3
[
t0
 & 0xff] ^ 
rk
[ 9];

910 
s2
 = 
Te0
[
t2
 >> 24] ^ 
Te1
[(
t3
 >> 16& 0xff] ^ 
Te2
[(
t0
 >> 8& 0xff] ^ 
Te3
[
t1
 & 0xff] ^ 
rk
[10];

911 
s3
 = 
Te0
[
t3
 >> 24] ^ 
Te1
[(
t0
 >> 16& 0xff] ^ 
Te2
[(
t1
 >> 8& 0xff] ^ 
Te3
[
t2
 & 0xff] ^ 
rk
[11];

913 
t0
 = 
Te0
[
s0
 >> 24] ^ 
Te1
[(
s1
 >> 16& 0xff] ^ 
Te2
[(
s2
 >> 8& 0xff] ^ 
Te3
[
s3
 & 0xff] ^ 
rk
[12];

914 
t1
 = 
Te0
[
s1
 >> 24] ^ 
Te1
[(
s2
 >> 16& 0xff] ^ 
Te2
[(
s3
 >> 8& 0xff] ^ 
Te3
[
s0
 & 0xff] ^ 
rk
[13];

915 
t2
 = 
Te0
[
s2
 >> 24] ^ 
Te1
[(
s3
 >> 16& 0xff] ^ 
Te2
[(
s0
 >> 8& 0xff] ^ 
Te3
[
s1
 & 0xff] ^ 
rk
[14];

916 
t3
 = 
Te0
[
s3
 >> 24] ^ 
Te1
[(
s0
 >> 16& 0xff] ^ 
Te2
[(
s1
 >> 8& 0xff] ^ 
Te3
[
s2
 & 0xff] ^ 
rk
[15];

918 
s0
 = 
Te0
[
t0
 >> 24] ^ 
Te1
[(
t1
 >> 16& 0xff] ^ 
Te2
[(
t2
 >> 8& 0xff] ^ 
Te3
[
t3
 & 0xff] ^ 
rk
[16];

919 
s1
 = 
Te0
[
t1
 >> 24] ^ 
Te1
[(
t2
 >> 16& 0xff] ^ 
Te2
[(
t3
 >> 8& 0xff] ^ 
Te3
[
t0
 & 0xff] ^ 
rk
[17];

920 
s2
 = 
Te0
[
t2
 >> 24] ^ 
Te1
[(
t3
 >> 16& 0xff] ^ 
Te2
[(
t0
 >> 8& 0xff] ^ 
Te3
[
t1
 & 0xff] ^ 
rk
[18];

921 
s3
 = 
Te0
[
t3
 >> 24] ^ 
Te1
[(
t0
 >> 16& 0xff] ^ 
Te2
[(
t1
 >> 8& 0xff] ^ 
Te3
[
t2
 & 0xff] ^ 
rk
[19];

923 
t0
 = 
Te0
[
s0
 >> 24] ^ 
Te1
[(
s1
 >> 16& 0xff] ^ 
Te2
[(
s2
 >> 8& 0xff] ^ 
Te3
[
s3
 & 0xff] ^ 
rk
[20];

924 
t1
 = 
Te0
[
s1
 >> 24] ^ 
Te1
[(
s2
 >> 16& 0xff] ^ 
Te2
[(
s3
 >> 8& 0xff] ^ 
Te3
[
s0
 & 0xff] ^ 
rk
[21];

925 
t2
 = 
Te0
[
s2
 >> 24] ^ 
Te1
[(
s3
 >> 16& 0xff] ^ 
Te2
[(
s0
 >> 8& 0xff] ^ 
Te3
[
s1
 & 0xff] ^ 
rk
[22];

926 
t3
 = 
Te0
[
s3
 >> 24] ^ 
Te1
[(
s0
 >> 16& 0xff] ^ 
Te2
[(
s1
 >> 8& 0xff] ^ 
Te3
[
s2
 & 0xff] ^ 
rk
[23];

928 
s0
 = 
Te0
[
t0
 >> 24] ^ 
Te1
[(
t1
 >> 16& 0xff] ^ 
Te2
[(
t2
 >> 8& 0xff] ^ 
Te3
[
t3
 & 0xff] ^ 
rk
[24];

929 
s1
 = 
Te0
[
t1
 >> 24] ^ 
Te1
[(
t2
 >> 16& 0xff] ^ 
Te2
[(
t3
 >> 8& 0xff] ^ 
Te3
[
t0
 & 0xff] ^ 
rk
[25];

930 
s2
 = 
Te0
[
t2
 >> 24] ^ 
Te1
[(
t3
 >> 16& 0xff] ^ 
Te2
[(
t0
 >> 8& 0xff] ^ 
Te3
[
t1
 & 0xff] ^ 
rk
[26];

931 
s3
 = 
Te0
[
t3
 >> 24] ^ 
Te1
[(
t0
 >> 16& 0xff] ^ 
Te2
[(
t1
 >> 8& 0xff] ^ 
Te3
[
t2
 & 0xff] ^ 
rk
[27];

933 
t0
 = 
Te0
[
s0
 >> 24] ^ 
Te1
[(
s1
 >> 16& 0xff] ^ 
Te2
[(
s2
 >> 8& 0xff] ^ 
Te3
[
s3
 & 0xff] ^ 
rk
[28];

934 
t1
 = 
Te0
[
s1
 >> 24] ^ 
Te1
[(
s2
 >> 16& 0xff] ^ 
Te2
[(
s3
 >> 8& 0xff] ^ 
Te3
[
s0
 & 0xff] ^ 
rk
[29];

935 
t2
 = 
Te0
[
s2
 >> 24] ^ 
Te1
[(
s3
 >> 16& 0xff] ^ 
Te2
[(
s0
 >> 8& 0xff] ^ 
Te3
[
s1
 & 0xff] ^ 
rk
[30];

936 
t3
 = 
Te0
[
s3
 >> 24] ^ 
Te1
[(
s0
 >> 16& 0xff] ^ 
Te2
[(
s1
 >> 8& 0xff] ^ 
Te3
[
s2
 & 0xff] ^ 
rk
[31];

938 
s0
 = 
Te0
[
t0
 >> 24] ^ 
Te1
[(
t1
 >> 16& 0xff] ^ 
Te2
[(
t2
 >> 8& 0xff] ^ 
Te3
[
t3
 & 0xff] ^ 
rk
[32];

939 
s1
 = 
Te0
[
t1
 >> 24] ^ 
Te1
[(
t2
 >> 16& 0xff] ^ 
Te2
[(
t3
 >> 8& 0xff] ^ 
Te3
[
t0
 & 0xff] ^ 
rk
[33];

940 
s2
 = 
Te0
[
t2
 >> 24] ^ 
Te1
[(
t3
 >> 16& 0xff] ^ 
Te2
[(
t0
 >> 8& 0xff] ^ 
Te3
[
t1
 & 0xff] ^ 
rk
[34];

941 
s3
 = 
Te0
[
t3
 >> 24] ^ 
Te1
[(
t0
 >> 16& 0xff] ^ 
Te2
[(
t1
 >> 8& 0xff] ^ 
Te3
[
t2
 & 0xff] ^ 
rk
[35];

943 
t0
 = 
Te0
[
s0
 >> 24] ^ 
Te1
[(
s1
 >> 16& 0xff] ^ 
Te2
[(
s2
 >> 8& 0xff] ^ 
Te3
[
s3
 & 0xff] ^ 
rk
[36];

944 
t1
 = 
Te0
[
s1
 >> 24] ^ 
Te1
[(
s2
 >> 16& 0xff] ^ 
Te2
[(
s3
 >> 8& 0xff] ^ 
Te3
[
s0
 & 0xff] ^ 
rk
[37];

945 
t2
 = 
Te0
[
s2
 >> 24] ^ 
Te1
[(
s3
 >> 16& 0xff] ^ 
Te2
[(
s0
 >> 8& 0xff] ^ 
Te3
[
s1
 & 0xff] ^ 
rk
[38];

946 
t3
 = 
Te0
[
s3
 >> 24] ^ 
Te1
[(
s0
 >> 16& 0xff] ^ 
Te2
[(
s1
 >> 8& 0xff] ^ 
Te3
[
s2
 & 0xff] ^ 
rk
[39];

947 i(
Nr
 > 10) {

949 
s0
 = 
Te0
[
t0
 >> 24] ^ 
Te1
[(
t1
 >> 16& 0xff] ^ 
Te2
[(
t2
 >> 8& 0xff] ^ 
Te3
[
t3
 & 0xff] ^ 
rk
[40];

950 
s1
 = 
Te0
[
t1
 >> 24] ^ 
Te1
[(
t2
 >> 16& 0xff] ^ 
Te2
[(
t3
 >> 8& 0xff] ^ 
Te3
[
t0
 & 0xff] ^ 
rk
[41];

951 
s2
 = 
Te0
[
t2
 >> 24] ^ 
Te1
[(
t3
 >> 16& 0xff] ^ 
Te2
[(
t0
 >> 8& 0xff] ^ 
Te3
[
t1
 & 0xff] ^ 
rk
[42];

952 
s3
 = 
Te0
[
t3
 >> 24] ^ 
Te1
[(
t0
 >> 16& 0xff] ^ 
Te2
[(
t1
 >> 8& 0xff] ^ 
Te3
[
t2
 & 0xff] ^ 
rk
[43];

954 
t0
 = 
Te0
[
s0
 >> 24] ^ 
Te1
[(
s1
 >> 16& 0xff] ^ 
Te2
[(
s2
 >> 8& 0xff] ^ 
Te3
[
s3
 & 0xff] ^ 
rk
[44];

955 
t1
 = 
Te0
[
s1
 >> 24] ^ 
Te1
[(
s2
 >> 16& 0xff] ^ 
Te2
[(
s3
 >> 8& 0xff] ^ 
Te3
[
s0
 & 0xff] ^ 
rk
[45];

956 
t2
 = 
Te0
[
s2
 >> 24] ^ 
Te1
[(
s3
 >> 16& 0xff] ^ 
Te2
[(
s0
 >> 8& 0xff] ^ 
Te3
[
s1
 & 0xff] ^ 
rk
[46];

957 
t3
 = 
Te0
[
s3
 >> 24] ^ 
Te1
[(
s0
 >> 16& 0xff] ^ 
Te2
[(
s1
 >> 8& 0xff] ^ 
Te3
[
s2
 & 0xff] ^ 
rk
[47];

958 i(
Nr
 > 12) {

960 
s0
 = 
Te0
[
t0
 >> 24] ^ 
Te1
[(
t1
 >> 16& 0xff] ^ 
Te2
[(
t2
 >> 8& 0xff] ^ 
Te3
[
t3
 & 0xff] ^ 
rk
[48];

961 
s1
 = 
Te0
[
t1
 >> 24] ^ 
Te1
[(
t2
 >> 16& 0xff] ^ 
Te2
[(
t3
 >> 8& 0xff] ^ 
Te3
[
t0
 & 0xff] ^ 
rk
[49];

962 
s2
 = 
Te0
[
t2
 >> 24] ^ 
Te1
[(
t3
 >> 16& 0xff] ^ 
Te2
[(
t0
 >> 8& 0xff] ^ 
Te3
[
t1
 & 0xff] ^ 
rk
[50];

963 
s3
 = 
Te0
[
t3
 >> 24] ^ 
Te1
[(
t0
 >> 16& 0xff] ^ 
Te2
[(
t1
 >> 8& 0xff] ^ 
Te3
[
t2
 & 0xff] ^ 
rk
[51];

965 
t0
 = 
Te0
[
s0
 >> 24] ^ 
Te1
[(
s1
 >> 16& 0xff] ^ 
Te2
[(
s2
 >> 8& 0xff] ^ 
Te3
[
s3
 & 0xff] ^ 
rk
[52];

966 
t1
 = 
Te0
[
s1
 >> 24] ^ 
Te1
[(
s2
 >> 16& 0xff] ^ 
Te2
[(
s3
 >> 8& 0xff] ^ 
Te3
[
s0
 & 0xff] ^ 
rk
[53];

967 
t2
 = 
Te0
[
s2
 >> 24] ^ 
Te1
[(
s3
 >> 16& 0xff] ^ 
Te2
[(
s0
 >> 8& 0xff] ^ 
Te3
[
s1
 & 0xff] ^ 
rk
[54];

968 
t3
 = 
Te0
[
s3
 >> 24] ^ 
Te1
[(
s0
 >> 16& 0xff] ^ 
Te2
[(
s1
 >> 8& 0xff] ^ 
Te3
[
s2
 & 0xff] ^ 
rk
[55];

971 
rk
 +
Nr
 << 2;

976 
r
 = 
Nr
 >> 1;

978 
t0
 =

979 
Te0
[(
s0
 >> 24) ] ^

980 
Te1
[(
s1
 >> 16) & 0xff] ^

981 
Te2
[(
s2
 >> 8) & 0xff] ^

982 
Te3
[(
s3
 ) & 0xff] ^

983 
rk
[4];

984 
t1
 =

985 
Te0
[(
s1
 >> 24) ] ^

986 
Te1
[(
s2
 >> 16) & 0xff] ^

987 
Te2
[(
s3
 >> 8) & 0xff] ^

988 
Te3
[(
s0
 ) & 0xff] ^

989 
rk
[5];

990 
t2
 =

991 
Te0
[(
s2
 >> 24) ] ^

992 
Te1
[(
s3
 >> 16) & 0xff] ^

993 
Te2
[(
s0
 >> 8) & 0xff] ^

994 
Te3
[(
s1
 ) & 0xff] ^

995 
rk
[6];

996 
t3
 =

997 
Te0
[(
s3
 >> 24) ] ^

998 
Te1
[(
s0
 >> 16) & 0xff] ^

999 
Te2
[(
s1
 >> 8) & 0xff] ^

1000 
Te3
[(
s2
 ) & 0xff] ^

1001 
rk
[7];

1003 
rk
 += 8;

1004 i(--
r
 == 0) {

1008 
s0
 =

1009 
Te0
[(
t0
 >> 24) ] ^

1010 
Te1
[(
t1
 >> 16) & 0xff] ^

1011 
Te2
[(
t2
 >> 8) & 0xff] ^

1012 
Te3
[(
t3
 ) & 0xff] ^

1013 
rk
[0];

1014 
s1
 =

1015 
Te0
[(
t1
 >> 24) ] ^

1016 
Te1
[(
t2
 >> 16) & 0xff] ^

1017 
Te2
[(
t3
 >> 8) & 0xff] ^

1018 
Te3
[(
t0
 ) & 0xff] ^

1019 
rk
[1];

1020 
s2
 =

1021 
Te0
[(
t2
 >> 24) ] ^

1022 
Te1
[(
t3
 >> 16) & 0xff] ^

1023 
Te2
[(
t0
 >> 8) & 0xff] ^

1024 
Te3
[(
t1
 ) & 0xff] ^

1025 
rk
[2];

1026 
s3
 =

1027 
Te0
[(
t3
 >> 24) ] ^

1028 
Te1
[(
t0
 >> 16) & 0xff] ^

1029 
Te2
[(
t1
 >> 8) & 0xff] ^

1030 
Te3
[(
t2
 ) & 0xff] ^

1031 
rk
[3];

1038 
s0
 =

1039 (
Te4
[(
t0
 >> 24) ] & 0xff000000) ^

1040 (
Te4
[(
t1
 >> 16) & 0xff] & 0x00ff0000) ^

1041 (
Te4
[(
t2
 >> 8) & 0xff] & 0x0000ff00) ^

1042 (
Te4
[(
t3
 ) & 0xff] & 0x000000ff) ^

1043 
rk
[0];

1044 
	`PUTU32
(

 , 
s0
);

1045 
s1
 =

1046 (
Te4
[(
t1
 >> 24) ] & 0xff000000) ^

1047 (
Te4
[(
t2
 >> 16) & 0xff] & 0x00ff0000) ^

1048 (
Te4
[(
t3
 >> 8) & 0xff] & 0x0000ff00) ^

1049 (
Te4
[(
t0
 ) & 0xff] & 0x000000ff) ^

1050 
rk
[1];

1051 
	`PUTU32
(

 + 4, 
s1
);

1052 
s2
 =

1053 (
Te4
[(
t2
 >> 24) ] & 0xff000000) ^

1054 (
Te4
[(
t3
 >> 16) & 0xff] & 0x00ff0000) ^

1055 (
Te4
[(
t0
 >> 8) & 0xff] & 0x0000ff00) ^

1056 (
Te4
[(
t1
 ) & 0xff] & 0x000000ff) ^

1057 
rk
[2];

1058 
	`PUTU32
(

 + 8, 
s2
);

1059 
s3
 =

1060 (
Te4
[(
t3
 >> 24) ] & 0xff000000) ^

1061 (
Te4
[(
t0
 >> 16) & 0xff] & 0x00ff0000) ^

1062 (
Te4
[(
t1
 >> 8) & 0xff] & 0x0000ff00) ^

1063 (
Te4
[(
t2
 ) & 0xff] & 0x000000ff) ^

1064 
rk
[3];

1065 
	`PUTU32
(

 + 12, 
s3
);

1066 
	}
}

1074 
	$__db_rijndlDey
(
rk
, 
Nr
, 

, 

)

1075 
u32
 *
rk
;

1076 
Nr
;

1077 cڡ 
u8
 *

;

1078 
u8
 *

;

1080 
u32
 
s0
, 
s1
, 
s2
, 
s3
, 
t0
, 
t1
, 
t2
, 
t3
;

1081 #ide
FULL_UNROLL


1082 
r
;

1089 
s0
 = 
	`GETU32
(

 ) ^ 
rk
[0];

1090 
s1
 = 
	`GETU32
(

 + 4^ 
rk
[1];

1091 
s2
 = 
	`GETU32
(

 + 8^ 
rk
[2];

1092 
s3
 = 
	`GETU32
(

 + 12^ 
rk
[3];

1093 #ifde
FULL_UNROLL


1095 
t0
 = 
Td0
[
s0
 >> 24] ^ 
Td1
[(
s3
 >> 16& 0xff] ^ 
Td2
[(
s2
 >> 8& 0xff] ^ 
Td3
[
s1
 & 0xff] ^ 
rk
[ 4];

1096 
t1
 = 
Td0
[
s1
 >> 24] ^ 
Td1
[(
s0
 >> 16& 0xff] ^ 
Td2
[(
s3
 >> 8& 0xff] ^ 
Td3
[
s2
 & 0xff] ^ 
rk
[ 5];

1097 
t2
 = 
Td0
[
s2
 >> 24] ^ 
Td1
[(
s1
 >> 16& 0xff] ^ 
Td2
[(
s0
 >> 8& 0xff] ^ 
Td3
[
s3
 & 0xff] ^ 
rk
[ 6];

1098 
t3
 = 
Td0
[
s3
 >> 24] ^ 
Td1
[(
s2
 >> 16& 0xff] ^ 
Td2
[(
s1
 >> 8& 0xff] ^ 
Td3
[
s0
 & 0xff] ^ 
rk
[ 7];

1100 
s0
 = 
Td0
[
t0
 >> 24] ^ 
Td1
[(
t3
 >> 16& 0xff] ^ 
Td2
[(
t2
 >> 8& 0xff] ^ 
Td3
[
t1
 & 0xff] ^ 
rk
[ 8];

1101 
s1
 = 
Td0
[
t1
 >> 24] ^ 
Td1
[(
t0
 >> 16& 0xff] ^ 
Td2
[(
t3
 >> 8& 0xff] ^ 
Td3
[
t2
 & 0xff] ^ 
rk
[ 9];

1102 
s2
 = 
Td0
[
t2
 >> 24] ^ 
Td1
[(
t1
 >> 16& 0xff] ^ 
Td2
[(
t0
 >> 8& 0xff] ^ 
Td3
[
t3
 & 0xff] ^ 
rk
[10];

1103 
s3
 = 
Td0
[
t3
 >> 24] ^ 
Td1
[(
t2
 >> 16& 0xff] ^ 
Td2
[(
t1
 >> 8& 0xff] ^ 
Td3
[
t0
 & 0xff] ^ 
rk
[11];

1105 
t0
 = 
Td0
[
s0
 >> 24] ^ 
Td1
[(
s3
 >> 16& 0xff] ^ 
Td2
[(
s2
 >> 8& 0xff] ^ 
Td3
[
s1
 & 0xff] ^ 
rk
[12];

1106 
t1
 = 
Td0
[
s1
 >> 24] ^ 
Td1
[(
s0
 >> 16& 0xff] ^ 
Td2
[(
s3
 >> 8& 0xff] ^ 
Td3
[
s2
 & 0xff] ^ 
rk
[13];

1107 
t2
 = 
Td0
[
s2
 >> 24] ^ 
Td1
[(
s1
 >> 16& 0xff] ^ 
Td2
[(
s0
 >> 8& 0xff] ^ 
Td3
[
s3
 & 0xff] ^ 
rk
[14];

1108 
t3
 = 
Td0
[
s3
 >> 24] ^ 
Td1
[(
s2
 >> 16& 0xff] ^ 
Td2
[(
s1
 >> 8& 0xff] ^ 
Td3
[
s0
 & 0xff] ^ 
rk
[15];

1110 
s0
 = 
Td0
[
t0
 >> 24] ^ 
Td1
[(
t3
 >> 16& 0xff] ^ 
Td2
[(
t2
 >> 8& 0xff] ^ 
Td3
[
t1
 & 0xff] ^ 
rk
[16];

1111 
s1
 = 
Td0
[
t1
 >> 24] ^ 
Td1
[(
t0
 >> 16& 0xff] ^ 
Td2
[(
t3
 >> 8& 0xff] ^ 
Td3
[
t2
 & 0xff] ^ 
rk
[17];

1112 
s2
 = 
Td0
[
t2
 >> 24] ^ 
Td1
[(
t1
 >> 16& 0xff] ^ 
Td2
[(
t0
 >> 8& 0xff] ^ 
Td3
[
t3
 & 0xff] ^ 
rk
[18];

1113 
s3
 = 
Td0
[
t3
 >> 24] ^ 
Td1
[(
t2
 >> 16& 0xff] ^ 
Td2
[(
t1
 >> 8& 0xff] ^ 
Td3
[
t0
 & 0xff] ^ 
rk
[19];

1115 
t0
 = 
Td0
[
s0
 >> 24] ^ 
Td1
[(
s3
 >> 16& 0xff] ^ 
Td2
[(
s2
 >> 8& 0xff] ^ 
Td3
[
s1
 & 0xff] ^ 
rk
[20];

1116 
t1
 = 
Td0
[
s1
 >> 24] ^ 
Td1
[(
s0
 >> 16& 0xff] ^ 
Td2
[(
s3
 >> 8& 0xff] ^ 
Td3
[
s2
 & 0xff] ^ 
rk
[21];

1117 
t2
 = 
Td0
[
s2
 >> 24] ^ 
Td1
[(
s1
 >> 16& 0xff] ^ 
Td2
[(
s0
 >> 8& 0xff] ^ 
Td3
[
s3
 & 0xff] ^ 
rk
[22];

1118 
t3
 = 
Td0
[
s3
 >> 24] ^ 
Td1
[(
s2
 >> 16& 0xff] ^ 
Td2
[(
s1
 >> 8& 0xff] ^ 
Td3
[
s0
 & 0xff] ^ 
rk
[23];

1120 
s0
 = 
Td0
[
t0
 >> 24] ^ 
Td1
[(
t3
 >> 16& 0xff] ^ 
Td2
[(
t2
 >> 8& 0xff] ^ 
Td3
[
t1
 & 0xff] ^ 
rk
[24];

1121 
s1
 = 
Td0
[
t1
 >> 24] ^ 
Td1
[(
t0
 >> 16& 0xff] ^ 
Td2
[(
t3
 >> 8& 0xff] ^ 
Td3
[
t2
 & 0xff] ^ 
rk
[25];

1122 
s2
 = 
Td0
[
t2
 >> 24] ^ 
Td1
[(
t1
 >> 16& 0xff] ^ 
Td2
[(
t0
 >> 8& 0xff] ^ 
Td3
[
t3
 & 0xff] ^ 
rk
[26];

1123 
s3
 = 
Td0
[
t3
 >> 24] ^ 
Td1
[(
t2
 >> 16& 0xff] ^ 
Td2
[(
t1
 >> 8& 0xff] ^ 
Td3
[
t0
 & 0xff] ^ 
rk
[27];

1125 
t0
 = 
Td0
[
s0
 >> 24] ^ 
Td1
[(
s3
 >> 16& 0xff] ^ 
Td2
[(
s2
 >> 8& 0xff] ^ 
Td3
[
s1
 & 0xff] ^ 
rk
[28];

1126 
t1
 = 
Td0
[
s1
 >> 24] ^ 
Td1
[(
s0
 >> 16& 0xff] ^ 
Td2
[(
s3
 >> 8& 0xff] ^ 
Td3
[
s2
 & 0xff] ^ 
rk
[29];

1127 
t2
 = 
Td0
[
s2
 >> 24] ^ 
Td1
[(
s1
 >> 16& 0xff] ^ 
Td2
[(
s0
 >> 8& 0xff] ^ 
Td3
[
s3
 & 0xff] ^ 
rk
[30];

1128 
t3
 = 
Td0
[
s3
 >> 24] ^ 
Td1
[(
s2
 >> 16& 0xff] ^ 
Td2
[(
s1
 >> 8& 0xff] ^ 
Td3
[
s0
 & 0xff] ^ 
rk
[31];

1130 
s0
 = 
Td0
[
t0
 >> 24] ^ 
Td1
[(
t3
 >> 16& 0xff] ^ 
Td2
[(
t2
 >> 8& 0xff] ^ 
Td3
[
t1
 & 0xff] ^ 
rk
[32];

1131 
s1
 = 
Td0
[
t1
 >> 24] ^ 
Td1
[(
t0
 >> 16& 0xff] ^ 
Td2
[(
t3
 >> 8& 0xff] ^ 
Td3
[
t2
 & 0xff] ^ 
rk
[33];

1132 
s2
 = 
Td0
[
t2
 >> 24] ^ 
Td1
[(
t1
 >> 16& 0xff] ^ 
Td2
[(
t0
 >> 8& 0xff] ^ 
Td3
[
t3
 & 0xff] ^ 
rk
[34];

1133 
s3
 = 
Td0
[
t3
 >> 24] ^ 
Td1
[(
t2
 >> 16& 0xff] ^ 
Td2
[(
t1
 >> 8& 0xff] ^ 
Td3
[
t0
 & 0xff] ^ 
rk
[35];

1135 
t0
 = 
Td0
[
s0
 >> 24] ^ 
Td1
[(
s3
 >> 16& 0xff] ^ 
Td2
[(
s2
 >> 8& 0xff] ^ 
Td3
[
s1
 & 0xff] ^ 
rk
[36];

1136 
t1
 = 
Td0
[
s1
 >> 24] ^ 
Td1
[(
s0
 >> 16& 0xff] ^ 
Td2
[(
s3
 >> 8& 0xff] ^ 
Td3
[
s2
 & 0xff] ^ 
rk
[37];

1137 
t2
 = 
Td0
[
s2
 >> 24] ^ 
Td1
[(
s1
 >> 16& 0xff] ^ 
Td2
[(
s0
 >> 8& 0xff] ^ 
Td3
[
s3
 & 0xff] ^ 
rk
[38];

1138 
t3
 = 
Td0
[
s3
 >> 24] ^ 
Td1
[(
s2
 >> 16& 0xff] ^ 
Td2
[(
s1
 >> 8& 0xff] ^ 
Td3
[
s0
 & 0xff] ^ 
rk
[39];

1139 i(
Nr
 > 10) {

1141 
s0
 = 
Td0
[
t0
 >> 24] ^ 
Td1
[(
t3
 >> 16& 0xff] ^ 
Td2
[(
t2
 >> 8& 0xff] ^ 
Td3
[
t1
 & 0xff] ^ 
rk
[40];

1142 
s1
 = 
Td0
[
t1
 >> 24] ^ 
Td1
[(
t0
 >> 16& 0xff] ^ 
Td2
[(
t3
 >> 8& 0xff] ^ 
Td3
[
t2
 & 0xff] ^ 
rk
[41];

1143 
s2
 = 
Td0
[
t2
 >> 24] ^ 
Td1
[(
t1
 >> 16& 0xff] ^ 
Td2
[(
t0
 >> 8& 0xff] ^ 
Td3
[
t3
 & 0xff] ^ 
rk
[42];

1144 
s3
 = 
Td0
[
t3
 >> 24] ^ 
Td1
[(
t2
 >> 16& 0xff] ^ 
Td2
[(
t1
 >> 8& 0xff] ^ 
Td3
[
t0
 & 0xff] ^ 
rk
[43];

1146 
t0
 = 
Td0
[
s0
 >> 24] ^ 
Td1
[(
s3
 >> 16& 0xff] ^ 
Td2
[(
s2
 >> 8& 0xff] ^ 
Td3
[
s1
 & 0xff] ^ 
rk
[44];

1147 
t1
 = 
Td0
[
s1
 >> 24] ^ 
Td1
[(
s0
 >> 16& 0xff] ^ 
Td2
[(
s3
 >> 8& 0xff] ^ 
Td3
[
s2
 & 0xff] ^ 
rk
[45];

1148 
t2
 = 
Td0
[
s2
 >> 24] ^ 
Td1
[(
s1
 >> 16& 0xff] ^ 
Td2
[(
s0
 >> 8& 0xff] ^ 
Td3
[
s3
 & 0xff] ^ 
rk
[46];

1149 
t3
 = 
Td0
[
s3
 >> 24] ^ 
Td1
[(
s2
 >> 16& 0xff] ^ 
Td2
[(
s1
 >> 8& 0xff] ^ 
Td3
[
s0
 & 0xff] ^ 
rk
[47];

1150 i(
Nr
 > 12) {

1152 
s0
 = 
Td0
[
t0
 >> 24] ^ 
Td1
[(
t3
 >> 16& 0xff] ^ 
Td2
[(
t2
 >> 8& 0xff] ^ 
Td3
[
t1
 & 0xff] ^ 
rk
[48];

1153 
s1
 = 
Td0
[
t1
 >> 24] ^ 
Td1
[(
t0
 >> 16& 0xff] ^ 
Td2
[(
t3
 >> 8& 0xff] ^ 
Td3
[
t2
 & 0xff] ^ 
rk
[49];

1154 
s2
 = 
Td0
[
t2
 >> 24] ^ 
Td1
[(
t1
 >> 16& 0xff] ^ 
Td2
[(
t0
 >> 8& 0xff] ^ 
Td3
[
t3
 & 0xff] ^ 
rk
[50];

1155 
s3
 = 
Td0
[
t3
 >> 24] ^ 
Td1
[(
t2
 >> 16& 0xff] ^ 
Td2
[(
t1
 >> 8& 0xff] ^ 
Td3
[
t0
 & 0xff] ^ 
rk
[51];

1157 
t0
 = 
Td0
[
s0
 >> 24] ^ 
Td1
[(
s3
 >> 16& 0xff] ^ 
Td2
[(
s2
 >> 8& 0xff] ^ 
Td3
[
s1
 & 0xff] ^ 
rk
[52];

1158 
t1
 = 
Td0
[
s1
 >> 24] ^ 
Td1
[(
s0
 >> 16& 0xff] ^ 
Td2
[(
s3
 >> 8& 0xff] ^ 
Td3
[
s2
 & 0xff] ^ 
rk
[53];

1159 
t2
 = 
Td0
[
s2
 >> 24] ^ 
Td1
[(
s1
 >> 16& 0xff] ^ 
Td2
[(
s0
 >> 8& 0xff] ^ 
Td3
[
s3
 & 0xff] ^ 
rk
[54];

1160 
t3
 = 
Td0
[
s3
 >> 24] ^ 
Td1
[(
s2
 >> 16& 0xff] ^ 
Td2
[(
s1
 >> 8& 0xff] ^ 
Td3
[
s0
 & 0xff] ^ 
rk
[55];

1163 
rk
 +
Nr
 << 2;

1168 
r
 = 
Nr
 >> 1;

1170 
t0
 =

1171 
Td0
[(
s0
 >> 24) ] ^

1172 
Td1
[(
s3
 >> 16) & 0xff] ^

1173 
Td2
[(
s2
 >> 8) & 0xff] ^

1174 
Td3
[(
s1
 ) & 0xff] ^

1175 
rk
[4];

1176 
t1
 =

1177 
Td0
[(
s1
 >> 24) ] ^

1178 
Td1
[(
s0
 >> 16) & 0xff] ^

1179 
Td2
[(
s3
 >> 8) & 0xff] ^

1180 
Td3
[(
s2
 ) & 0xff] ^

1181 
rk
[5];

1182 
t2
 =

1183 
Td0
[(
s2
 >> 24) ] ^

1184 
Td1
[(
s1
 >> 16) & 0xff] ^

1185 
Td2
[(
s0
 >> 8) & 0xff] ^

1186 
Td3
[(
s3
 ) & 0xff] ^

1187 
rk
[6];

1188 
t3
 =

1189 
Td0
[(
s3
 >> 24) ] ^

1190 
Td1
[(
s2
 >> 16) & 0xff] ^

1191 
Td2
[(
s1
 >> 8) & 0xff] ^

1192 
Td3
[(
s0
 ) & 0xff] ^

1193 
rk
[7];

1195 
rk
 += 8;

1196 i(--
r
 == 0) {

1200 
s0
 =

1201 
Td0
[(
t0
 >> 24) ] ^

1202 
Td1
[(
t3
 >> 16) & 0xff] ^

1203 
Td2
[(
t2
 >> 8) & 0xff] ^

1204 
Td3
[(
t1
 ) & 0xff] ^

1205 
rk
[0];

1206 
s1
 =

1207 
Td0
[(
t1
 >> 24) ] ^

1208 
Td1
[(
t0
 >> 16) & 0xff] ^

1209 
Td2
[(
t3
 >> 8) & 0xff] ^

1210 
Td3
[(
t2
 ) & 0xff] ^

1211 
rk
[1];

1212 
s2
 =

1213 
Td0
[(
t2
 >> 24) ] ^

1214 
Td1
[(
t1
 >> 16) & 0xff] ^

1215 
Td2
[(
t0
 >> 8) & 0xff] ^

1216 
Td3
[(
t3
 ) & 0xff] ^

1217 
rk
[2];

1218 
s3
 =

1219 
Td0
[(
t3
 >> 24) ] ^

1220 
Td1
[(
t2
 >> 16) & 0xff] ^

1221 
Td2
[(
t1
 >> 8) & 0xff] ^

1222 
Td3
[(
t0
 ) & 0xff] ^

1223 
rk
[3];

1230 
s0
 =

1231 (
Td4
[(
t0
 >> 24) ] & 0xff000000) ^

1232 (
Td4
[(
t3
 >> 16) & 0xff] & 0x00ff0000) ^

1233 (
Td4
[(
t2
 >> 8) & 0xff] & 0x0000ff00) ^

1234 (
Td4
[(
t1
 ) & 0xff] & 0x000000ff) ^

1235 
rk
[0];

1236 
	`PUTU32
(

 , 
s0
);

1237 
s1
 =

1238 (
Td4
[(
t1
 >> 24) ] & 0xff000000) ^

1239 (
Td4
[(
t0
 >> 16) & 0xff] & 0x00ff0000) ^

1240 (
Td4
[(
t3
 >> 8) & 0xff] & 0x0000ff00) ^

1241 (
Td4
[(
t2
 ) & 0xff] & 0x000000ff) ^

1242 
rk
[1];

1243 
	`PUTU32
(

 + 4, 
s1
);

1244 
s2
 =

1245 (
Td4
[(
t2
 >> 24) ] & 0xff000000) ^

1246 (
Td4
[(
t1
 >> 16) & 0xff] & 0x00ff0000) ^

1247 (
Td4
[(
t0
 >> 8) & 0xff] & 0x0000ff00) ^

1248 (
Td4
[(
t3
 ) & 0xff] & 0x000000ff) ^

1249 
rk
[2];

1250 
	`PUTU32
(

 + 8, 
s2
);

1251 
s3
 =

1252 (
Td4
[(
t3
 >> 24) ] & 0xff000000) ^

1253 (
Td4
[(
t2
 >> 16) & 0xff] & 0x00ff0000) ^

1254 (
Td4
[(
t1
 >> 8) & 0xff] & 0x0000ff00) ^

1255 (
Td4
[(
t0
 ) & 0xff] & 0x000000ff) ^

1256 
rk
[3];

1257 
	`PUTU32
(

 + 12, 
s3
);

1258 
	}
}

1260 #ifde
INTERMEDIATE_VALUE_KAT


1268 
	$__db_rijndlEnyRound
(
rk
, 
Nr
, 

, 

)

1269 cڡ 
u32
 *
rk
;

1270 
Nr
;

1271 
u8
 *
block
;

1272 
rounds
;

1274 
r
;

1275 
u32
 
s0
, 
s1
, 
s2
, 
s3
, 
t0
, 
t1
, 
t2
, 
t3
;

1281 
s0
 = 
	`GETU32
(
block
 ) ^ 
rk
[0];

1282 
s1
 = 
	`GETU32
(
block
 + 4^ 
rk
[1];

1283 
s2
 = 
	`GETU32
(
block
 + 8^ 
rk
[2];

1284 
s3
 = 
	`GETU32
(
block
 + 12^ 
rk
[3];

1285 
rk
 += 4;

1290 
r
 = (
rounds
 < 
Nr
 ?ounds : Nr - 1); > 0;--) {

1291 
t0
 =

1292 
Te0
[(
s0
 >> 24) ] ^

1293 
Te1
[(
s1
 >> 16) & 0xff] ^

1294 
Te2
[(
s2
 >> 8) & 0xff] ^

1295 
Te3
[(
s3
 ) & 0xff] ^

1296 
rk
[0];

1297 
t1
 =

1298 
Te0
[(
s1
 >> 24) ] ^

1299 
Te1
[(
s2
 >> 16) & 0xff] ^

1300 
Te2
[(
s3
 >> 8) & 0xff] ^

1301 
Te3
[(
s0
 ) & 0xff] ^

1302 
rk
[1];

1303 
t2
 =

1304 
Te0
[(
s2
 >> 24) ] ^

1305 
Te1
[(
s3
 >> 16) & 0xff] ^

1306 
Te2
[(
s0
 >> 8) & 0xff] ^

1307 
Te3
[(
s1
 ) & 0xff] ^

1308 
rk
[2];

1309 
t3
 =

1310 
Te0
[(
s3
 >> 24) ] ^

1311 
Te1
[(
s0
 >> 16) & 0xff] ^

1312 
Te2
[(
s1
 >> 8) & 0xff] ^

1313 
Te3
[(
s2
 ) & 0xff] ^

1314 
rk
[3];

1316 
s0
 = 
t0
;

1317 
s1
 = 
t1
;

1318 
s2
 = 
t2
;

1319 
s3
 = 
t3
;

1320 
rk
 += 4;

1328 i(
rounds
 =
Nr
) {

1329 
t0
 =

1330 (
Te4
[(
s0
 >> 24) ] & 0xff000000) ^

1331 (
Te4
[(
s1
 >> 16) & 0xff] & 0x00ff0000) ^

1332 (
Te4
[(
s2
 >> 8) & 0xff] & 0x0000ff00) ^

1333 (
Te4
[(
s3
 ) & 0xff] & 0x000000ff) ^

1334 
rk
[0];

1335 
t1
 =

1336 (
Te4
[(
s1
 >> 24) ] & 0xff000000) ^

1337 (
Te4
[(
s2
 >> 16) & 0xff] & 0x00ff0000) ^

1338 (
Te4
[(
s3
 >> 8) & 0xff] & 0x0000ff00) ^

1339 (
Te4
[(
s0
 ) & 0xff] & 0x000000ff) ^

1340 
rk
[1];

1341 
t2
 =

1342 (
Te4
[(
s2
 >> 24) ] & 0xff000000) ^

1343 (
Te4
[(
s3
 >> 16) & 0xff] & 0x00ff0000) ^

1344 (
Te4
[(
s0
 >> 8) & 0xff] & 0x0000ff00) ^

1345 (
Te4
[(
s1
 ) & 0xff] & 0x000000ff) ^

1346 
rk
[2];

1347 
t3
 =

1348 (
Te4
[(
s3
 >> 24) ] & 0xff000000) ^

1349 (
Te4
[(
s0
 >> 16) & 0xff] & 0x00ff0000) ^

1350 (
Te4
[(
s1
 >> 8) & 0xff] & 0x0000ff00) ^

1351 (
Te4
[(
s2
 ) & 0xff] & 0x000000ff) ^

1352 
rk
[3];

1354 
s0
 = 
t0
;

1355 
s1
 = 
t1
;

1356 
s2
 = 
t2
;

1357 
s3
 = 
t3
;

1360 
	`PUTU32
(
block
 , 
s0
);

1361 
	`PUTU32
(
block
 + 4, 
s1
);

1362 
	`PUTU32
(
block
 + 8, 
s2
);

1363 
	`PUTU32
(
block
 + 12, 
s3
);

1364 
	}
}

1372 
	$__db_rijndlDeyRound
(
rk
, 
Nr
, 

, 

)

1373 cڡ 
u32
 *
rk
;

1374 
Nr
;

1375 
u8
 *
block
;

1376 
rounds
;

1378 
r
;

1379 
u32
 
s0
, 
s1
, 
s2
, 
s3
, 
t0
, 
t1
, 
t2
, 
t3
;

1385 
s0
 = 
	`GETU32
(
block
 ) ^ 
rk
[0];

1386 
s1
 = 
	`GETU32
(
block
 + 4^ 
rk
[1];

1387 
s2
 = 
	`GETU32
(
block
 + 8^ 
rk
[2];

1388 
s3
 = 
	`GETU32
(
block
 + 12^ 
rk
[3];

1389 
rk
 += 4;

1394 
r
 = (
rounds
 < 
Nr
 ?ounds : Nr) - 1; > 0;--) {

1395 
t0
 =

1396 
Td0
[(
s0
 >> 24) ] ^

1397 
Td1
[(
s3
 >> 16) & 0xff] ^

1398 
Td2
[(
s2
 >> 8) & 0xff] ^

1399 
Td3
[(
s1
 ) & 0xff] ^

1400 
rk
[0];

1401 
t1
 =

1402 
Td0
[(
s1
 >> 24) ] ^

1403 
Td1
[(
s0
 >> 16) & 0xff] ^

1404 
Td2
[(
s3
 >> 8) & 0xff] ^

1405 
Td3
[(
s2
 ) & 0xff] ^

1406 
rk
[1];

1407 
t2
 =

1408 
Td0
[(
s2
 >> 24) ] ^

1409 
Td1
[(
s1
 >> 16) & 0xff] ^

1410 
Td2
[(
s0
 >> 8) & 0xff] ^

1411 
Td3
[(
s3
 ) & 0xff] ^

1412 
rk
[2];

1413 
t3
 =

1414 
Td0
[(
s3
 >> 24) ] ^

1415 
Td1
[(
s2
 >> 16) & 0xff] ^

1416 
Td2
[(
s1
 >> 8) & 0xff] ^

1417 
Td3
[(
s0
 ) & 0xff] ^

1418 
rk
[3];

1420 
s0
 = 
t0
;

1421 
s1
 = 
t1
;

1422 
s2
 = 
t2
;

1423 
s3
 = 
t3
;

1424 
rk
 += 4;

1432 
t0
 =

1433 (
Td4
[(
s0
 >> 24) ] & 0xff000000) ^

1434 (
Td4
[(
s3
 >> 16) & 0xff] & 0x00ff0000) ^

1435 (
Td4
[(
s2
 >> 8) & 0xff] & 0x0000ff00) ^

1436 (
Td4
[(
s1
 ) & 0xff] & 0x000000ff);

1437 
t1
 =

1438 (
Td4
[(
s1
 >> 24) ] & 0xff000000) ^

1439 (
Td4
[(
s0
 >> 16) & 0xff] & 0x00ff0000) ^

1440 (
Td4
[(
s3
 >> 8) & 0xff] & 0x0000ff00) ^

1441 (
Td4
[(
s2
 ) & 0xff] & 0x000000ff);

1442 
t2
 =

1443 (
Td4
[(
s2
 >> 24) ] & 0xff000000) ^

1444 (
Td4
[(
s1
 >> 16) & 0xff] & 0x00ff0000) ^

1445 (
Td4
[(
s0
 >> 8) & 0xff] & 0x0000ff00) ^

1446 (
Td4
[(
s3
 ) & 0xff] & 0x000000ff);

1447 
t3
 =

1448 (
Td4
[(
s3
 >> 24) ] & 0xff000000) ^

1449 (
Td4
[(
s2
 >> 16) & 0xff] & 0x00ff0000) ^

1450 (
Td4
[(
s1
 >> 8) & 0xff] & 0x0000ff00) ^

1451 (
Td4
[(
s0
 ) & 0xff] & 0x000000ff);

1453 i(
rounds
 =
Nr
) {

1454 
t0
 ^
rk
[0];

1455 
t1
 ^
rk
[1];

1456 
t2
 ^
rk
[2];

1457 
t3
 ^
rk
[3];

1460 
	`PUTU32
(
block
 , 
t0
);

1461 
	`PUTU32
(
block
 + 4, 
t1
);

1462 
	`PUTU32
(
block
 + 8, 
t2
);

1463 
	`PUTU32
(
block
 + 12, 
t3
);

1464 
	}
}

	@../crypto/rijndael/rijndael-api-fst.c

37 
	~"db_cfig.h
"

39 
	~"db_t.h
"

40 
	~"dbc/yo.h
"

42 
	~"yo/rijndl/rijndl-g-f.h
"

43 
	~"yo/rijndl/rijndl-i-f.h
"

51 
	$__db_makeKey
(
key
, 
dei
, 
keyL
, 
keyMl
)

52 
keyIn
 *
key
;

53 
dei
;

54 
keyL
;

55 *
keyMl
;

57 
u8
 
chKey
[
MAXKB
];

59 i(
key
 =
NULL
) {

60  
BAD_KEY_INSTANCE
;

63 i((
dei
 =
DIR_ENCRYPT
|| (dei =
DIR_DECRYPT
)) {

64 
key
->
dei
 = direction;

66  
BAD_KEY_DIR
;

69 i((
keyL
 == 128) || (keyLen == 192) || (keyLen == 256)) {

70 
key
->
keyL
 = keyLen;

72  
BAD_KEY_MAT
;

75 i(
keyMl
 !
NULL
) {

76 
	`memy
(
chKey
, 
keyMl
, 
key
->
keyL
/8);

79 i(
dei
 =
DIR_ENCRYPT
) {

80 
key
->
Nr
 = 
	`__db_rijndlKeySupEnc
(key->
rk
, 
chKey
, 
keyL
);

82 
key
->
Nr
 = 
	`__db_rijndlKeySupDec
(key->
rk
, 
chKey
, 
keyL
);

84 
	`__db_rijndlKeySupEnc
(
key
->
ek
, 
chKey
, 
keyL
);

85  
TRUE
;

86 
	}
}

94 
	$__db_chIn
(
ch
, 
mode
, 
IV
)

95 
chIn
 *
ch
;

96 
mode
;

97 *
IV
;

99 i((
mode
 =
MODE_ECB
|| (mod=
MODE_CBC
|| (mod=
MODE_CFB1
)) {

100 
ch
->
mode
 = mode;

102  
BAD_CIPHER_MODE
;

104 i(
IV
 !
NULL
) {

105 
	`memy
(
ch
->
IV
, IV, 
MAX_IV_SIZE
);

107  
TRUE
;

108 
	}
}

117 
	$__db_blockEny
(
ch
, 
key
, 
put
, 
putL
, 
outBufr
)

118 
chIn
 *
ch
;

119 
keyIn
 *
key
;

120 
u_t8_t
 *
put
;

121 
size_t
 
putL
;

122 
u_t8_t
 *
outBufr
;

124 
i
, 
k
, 
t
, 
numBlocks
;

125 
u8
 
block
[16], *
iv
;

126 
u32
 
tmpiv
[4];

128 i(
ch
 =
NULL
 ||

129 
key
 =
NULL
 ||

130 
key
->
dei
 =
DIR_DECRYPT
) {

131  
BAD_CIPHER_STATE
;

133 i(
put
 =
NULL
 || 
putL
 <= 0) {

137 
numBlocks
 = ()(
putL
/128);

139 
ch
->
mode
) {

140 
MODE_ECB
:

141 
i
 = 
numBlocks
; i > 0; i--) {

142 
	`__db_rijndlEny
(
key
->
rk
, key->
Nr
, 
put
, 
outBufr
);

143 
put
 += 16;

144 
outBufr
 += 16;

148 
MODE_CBC
:

149 
iv
 = 
ch
->
IV
;

150 
i
 = 
numBlocks
; i > 0; i--) {

151 
	`memy
(
tmpiv
, 
iv
, 
MAX_IV_SIZE
);

152 ((
u32
*)
block
)[0] = ((u32*)
put
)[0] ^ 
tmpiv
[0];

153 ((
u32
*)
block
)[1] = ((u32*)
put
)[1] ^ 
tmpiv
[1];

154 ((
u32
*)
block
)[2] = ((u32*)
put
)[2] ^ 
tmpiv
[2];

155 ((
u32
*)
block
)[3] = ((u32*)
put
)[3] ^ 
tmpiv
[3];

156 
	`__db_rijndlEny
(
key
->
rk
, key->
Nr
, 
block
, 
outBufr
);

157 
iv
 = 
outBufr
;

158 
put
 += 16;

159 
outBufr
 += 16;

163 
MODE_CFB1
:

164 
iv
 = 
ch
->
IV
;

165 
i
 = 
numBlocks
; i > 0; i--) {

166 
	`memy
(
outBufr
, 
put
, 16);

167 
k
 = 0; k < 128; k++) {

168 
	`__db_rijndlEny
(
key
->
ek
, key->
Nr
, 
iv
, 
block
);

169 
outBufr
[
k
 >> 3] ^(
block
[0] & (
u_t
)0x80) >> (k & 7);

170 
t
 = 0; < 15;++) {

171 
iv
[
t
] = (iv[t] << 1) | (iv[t + 1] >> 7);

173 
iv
[15] = (iv[15] << 1| ((
outBufr
[
k
 >> 3] >> (7 - (k & 7))) & 1);

175 
outBufr
 += 16;

176 
put
 += 16;

181  
BAD_CIPHER_STATE
;

184  128*
numBlocks
;

185 
	}
}

203 
	$__db_dEny
(
ch
, 
key
, 
put
, 
putOs
, 
outBufr
)

204 
chIn
 *
ch
;

205 
keyIn
 *
key
;

206 
u_t8_t
 *
put
;

207 
putOs
;

208 
u_t8_t
 *
outBufr
;

210 
i
, 
numBlocks
, 
dL
;

211 
u8
 
block
[16], *
iv
;

212 
u32
 
tmpiv
[4];

214 i(
ch
 =
NULL
 ||

215 
key
 =
NULL
 ||

216 
key
->
dei
 =
DIR_DECRYPT
) {

217  
BAD_CIPHER_STATE
;

219 i(
put
 =
NULL
 || 
putOs
 <= 0) {

223 
numBlocks
 = 
putOs
/16;

225 
ch
->
mode
) {

226 
MODE_ECB
:

227 
i
 = 
numBlocks
; i > 0; i--) {

228 
	`__db_rijndlEny
(
key
->
rk
, key->
Nr
, 
put
, 
outBufr
);

229 
put
 += 16;

230 
outBufr
 += 16;

232 
dL
 = 16 - (
putOs
 - 16*
numBlocks
);

233 
	`DB_ASSERT
(
NULL
, 
dL
 > 0 &&adLen <= 16);

234 
	`memy
(
block
, 
put
, 16 - 
dL
);

235 
	`memt
(
block
 + 16 - 
dL
,adLen,adLen);

236 
	`__db_rijndlEny
(
key
->
rk
, key->
Nr
, 
block
, 
outBufr
);

239 
MODE_CBC
:

240 
iv
 = 
ch
->
IV
;

241 
i
 = 
numBlocks
; i > 0; i--) {

242 
	`memy
(
tmpiv
, 
iv
, 
MAX_IV_SIZE
);

243 ((
u32
*)
block
)[0] = ((u32*)
put
)[0] ^ 
tmpiv
[0];

244 ((
u32
*)
block
)[1] = ((u32*)
put
)[1] ^ 
tmpiv
[1];

245 ((
u32
*)
block
)[2] = ((u32*)
put
)[2] ^ 
tmpiv
[2];

246 ((
u32
*)
block
)[3] = ((u32*)
put
)[3] ^ 
tmpiv
[3];

247 
	`__db_rijndlEny
(
key
->
rk
, key->
Nr
, 
block
, 
outBufr
);

248 
iv
 = 
outBufr
;

249 
put
 += 16;

250 
outBufr
 += 16;

252 
dL
 = 16 - (
putOs
 - 16*
numBlocks
);

253 
	`DB_ASSERT
(
NULL
, 
dL
 > 0 &&adLen <= 16);

254 
i
 = 0; i < 16 - 
dL
; i++) {

255 
block
[
i
] = 
put
[i] ^ 
iv
[i];

257 
i
 = 16 - 
dL
; i < 16; i++) {

258 
block
[
i
] = (
u_t8_t
)
dL
 ^ 
iv
[i];

260 
	`__db_rijndlEny
(
key
->
rk
, key->
Nr
, 
block
, 
outBufr
);

264  
BAD_CIPHER_STATE
;

267  16*(
numBlocks
 + 1);

268 
	}
}

277 
	$__db_blockDey
(
ch
, 
key
, 
put
, 
putL
, 
outBufr
)

278 
chIn
 *
ch
;

279 
keyIn
 *
key
;

280 
u_t8_t
 *
put
;

281 
size_t
 
putL
;

282 
u_t8_t
 *
outBufr
;

284 
i
, 
k
, 
t
, 
numBlocks
;

285 
u8
 
block
[16], *
iv
;

286 
u32
 
tmpiv
[4];

288 i(
ch
 =
NULL
 ||

289 
key
 =
NULL
 ||

290 (
ch
->
mode
 !
MODE_CFB1
 && 
key
->
dei
 =
DIR_ENCRYPT
)) {

291  
BAD_CIPHER_STATE
;

293 i(
put
 =
NULL
 || 
putL
 <= 0) {

297 
numBlocks
 = ()(
putL
/128);

299 
ch
->
mode
) {

300 
MODE_ECB
:

301 
i
 = 
numBlocks
; i > 0; i--) {

302 
	`__db_rijndlDey
(
key
->
rk
, key->
Nr
, 
put
, 
outBufr
);

303 
put
 += 16;

304 
outBufr
 += 16;

308 
MODE_CBC
:

309 
	`memy
(
tmpiv
, 
ch
->
IV
, 
MAX_IV_SIZE
);

310 
i
 = 
numBlocks
; i > 0; i--) {

311 
	`__db_rijndlDey
(
key
->
rk
, key->
Nr
, 
put
, 
block
);

312 ((
u32
*)
block
)[0] ^
tmpiv
[0];

313 ((
u32
*)
block
)[1] ^
tmpiv
[1];

314 ((
u32
*)
block
)[2] ^
tmpiv
[2];

315 ((
u32
*)
block
)[3] ^
tmpiv
[3];

316 
	`memy
(
tmpiv
, 
put
, 16);

317 
	`memy
(
outBufr
, 
block
, 16);

318 
put
 += 16;

319 
outBufr
 += 16;

323 
MODE_CFB1
:

324 
iv
 = 
ch
->
IV
;

325 
i
 = 
numBlocks
; i > 0; i--) {

326 
	`memy
(
outBufr
, 
put
, 16);

327 
k
 = 0; k < 128; k++) {

328 
	`__db_rijndlEny
(
key
->
ek
, key->
Nr
, 
iv
, 
block
);

329 
t
 = 0; < 15;++) {

330 
iv
[
t
] = (iv[t] << 1) | (iv[t + 1] >> 7);

332 
iv
[15] = (iv[15] << 1| ((
put
[
k
 >> 3] >> (7 - (k & 7))) & 1);

333 
outBufr
[
k
 >> 3] ^(
block
[0] & (
u_t
)0x80) >> (k & 7);

335 
outBufr
 += 16;

336 
put
 += 16;

341  
BAD_CIPHER_STATE
;

344  128*
numBlocks
;

345 
	}
}

354 
	$__db_dDey
(
ch
, 
key
, 
put
, 
putOs
, 
outBufr
)

355 
chIn
 *
ch
;

356 
keyIn
 *
key
;

357 
u_t8_t
 *
put
;

358 
putOs
;

359 
u_t8_t
 *
outBufr
;

361 
i
, 
numBlocks
, 
dL
;

362 
u8
 
block
[16];

363 
u32
 
tmpiv
[4];

365 i(
ch
 =
NULL
 ||

366 
key
 =
NULL
 ||

367 
key
->
dei
 =
DIR_ENCRYPT
) {

368  
BAD_CIPHER_STATE
;

370 i(
put
 =
NULL
 || 
putOs
 <= 0) {

373 i(
putOs
 % 16 != 0) {

374  
BAD_DATA
;

377 
numBlocks
 = 
putOs
/16;

379 
ch
->
mode
) {

380 
MODE_ECB
:

382 
i
 = 
numBlocks
 - 1; i > 0; i--) {

383 
	`__db_rijndlDey
(
key
->
rk
, key->
Nr
, 
put
, 
outBufr
);

384 
put
 += 16;

385 
outBufr
 += 16;

388 
	`__db_rijndlDey
(
key
->
rk
, key->
Nr
, 
put
, 
block
);

389 
dL
 = 
block
[15];

390 i(
dL
 >= 16) {

391  
BAD_DATA
;

393 
i
 = 16 - 
dL
; i < 16; i++) {

394 i(
block
[
i
] !
dL
) {

395  
BAD_DATA
;

398 
	`memy
(
outBufr
, 
block
, 16 - 
dL
);

401 
MODE_CBC
:

403 
	`memy
(
tmpiv
, 
ch
->
IV
, 
MAX_IV_SIZE
);

404 
i
 = 
numBlocks
 - 1; i > 0; i--) {

405 
	`__db_rijndlDey
(
key
->
rk
, key->
Nr
, 
put
, 
block
);

406 ((
u32
*)
block
)[0] ^
tmpiv
[0];

407 ((
u32
*)
block
)[1] ^
tmpiv
[1];

408 ((
u32
*)
block
)[2] ^
tmpiv
[2];

409 ((
u32
*)
block
)[3] ^
tmpiv
[3];

410 
	`memy
(
tmpiv
, 
put
, 16);

411 
	`memy
(
outBufr
, 
block
, 16);

412 
put
 += 16;

413 
outBufr
 += 16;

416 
	`__db_rijndlDey
(
key
->
rk
, key->
Nr
, 
put
, 
block
);

417 ((
u32
*)
block
)[0] ^
tmpiv
[0];

418 ((
u32
*)
block
)[1] ^
tmpiv
[1];

419 ((
u32
*)
block
)[2] ^
tmpiv
[2];

420 ((
u32
*)
block
)[3] ^
tmpiv
[3];

421 
dL
 = 
block
[15];

422 i(
dL
 <= 0 ||adLen > 16) {

423  
BAD_DATA
;

425 
i
 = 16 - 
dL
; i < 16; i++) {

426 i(
block
[
i
] !
dL
) {

427  
BAD_DATA
;

430 
	`memy
(
outBufr
, 
block
, 16 - 
dL
);

434  
BAD_CIPHER_STATE
;

437  16*
numBlocks
 - 
dL
;

438 
	}
}

440 #ifde
INTERMEDIATE_VALUE_KAT


458 
	$__db_chUpdeRounds
(
ch
, 
key
, 
put
, 
putL
, 
outBufr
, 
rounds
)

459 
chIn
 *
ch
;

460 
keyIn
 *
key
;

461 
u_t8_t
 *
put
;

462 
size_t
 
putL
;

463 
u_t8_t
 *
outBufr
;

464 
rounds
;

466 
u8
 
block
[16];

468 i(
ch
 =
NULL
 || 
key
 == NULL) {

469  
BAD_CIPHER_STATE
;

472 
	`memy
(
block
, 
put
, 16);

474 
key
->
dei
) {

475 
DIR_ENCRYPT
:

476 
	`__db_rijndlEnyRound
(
key
->
rk
, key->
Nr
, 
block
, 
rounds
);

479 
DIR_DECRYPT
:

480 
	`__db_rijndlDeyRound
(
key
->
rk
, key->
Nr
, 
block
, 
rounds
);

484  
BAD_KEY_DIR
;

487 
	`memy
(
outBufr
, 
block
, 16);

489  
TRUE
;

490 
	}
}

	@../cxx/cxx_db.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

16 
	~"dbc/db_ge.h
"

17 
	~"dbc_auto/db_auto.h
"

18 
	~"dbc_auto/d_auto.h
"

19 
	~"dbc/db_dich.h
"

20 
	~"dbc_auto/db_ext.h
"

21 
	~"dbc_auto/comm_ext.h
"

29 
	#DB_METHOD
(
_me
, 
_gec
, 
_gli
, 
_tok
) \

30 
Db
::
_me
 
_gec
 \

32 
t
; \

33 
DB
 *
db
 = 
	`unwp
(
this
); \

35 
t
 = 
db
->
_me
 
_gli
; \

36 i(!
	`_tok
(
t
)) \

37 
	`DB_ERROR
(
v_
, "Db::" #_me, 
t
, 
	`r_picy
()); \

38  (
t
); \

39 }

	)

41 
	#DB_DESTRUCTOR
(
_me
, 
_gec
, 
_gli
, 
_tok
) \

42 
Db
::
_me
 
_gec
 \

44 
t
; \

45 
DB
 *
db
 = 
	`unwp
(
this
); \

47 i(!
db
) { \

48 
	`DB_ERROR
(
v_
, "Db::" #_me, 
EINVAL
, 
	`r_picy
()); \

49  (
EINVAL
); \

51 
t
 = 
db
->
_me
 
_gli
; \

52 
	`nup
(); \

53 i(!
	`_tok
(
t
)) \

54 
	`DB_ERROR
(
v_
, "Db::" #_me, 
t
, 
	`r_picy
()); \

55  (
t
); \

56 }

	)

58 
	#DB_METHOD_QUIET
(
_me
, 
_gec
, 
_gli
) \

59 
Db
::
_me
 
_gec
 \

61 
DB
 *
db
 = 
	`unwp
(
this
); \

63  (
db
->
_me
 
_gli
); \

64 }

	)

66 
	#DB_METHOD_VOID
(
_me
, 
_gec
, 
_gli
) \

67 
Db
::
_me
 
_gec
 \

69 
DB
 *
db
 = 
	`unwp
(
this
); \

71 
db
->
_me
 
_gli
; \

72 }

	)

86 
	gDb
::
	$Db
(
DbEnv
 *
v
, 
u_t32_t
 
ags
)

87 : 
	`imp_
(0)

88 , 
	`v_
(
v
)

89 , 
	`mpf_
(0)

90 , 
	`cڡru_r_
(0)

91 , 
	`ags_
(0)

92 , 
	`cڡru_ags_
(
ags
)

93 , 
	`nd_o_back_
(0)

94 , 
	`assoc_back_
(0)

95 , 
	`bt_com_back_
(0)

96 , 
	`bt_efix_back_
(0)

97 , 
	`dup_com_back_
(0)

98 , 
	`edback_back_
(0)

99 , 
	`h_com_back_
(0)

100 , 
	$h_hash_back_
(0)

102 i(
v_
 == 0)

103 
ags_
 |
DB_CXX_PRIVATE_ENV
;

105 i((
cڡru_r_
 = 
	`lize
()) != 0)

106 
	`DB_ERROR
(
v_
, "Db::Db", 
cڡru_r_
, 
	`r_picy
());

107 
	}
}

116 
	gDb
::~
	$Db
()

118 
DB
 *
db
;

120 
db
 = 
	`unwp
(
this
);

121 i(
db
 !
NULL
) {

122 ()
db
->
	`o
(db, 0);

123 
	`nup
();

125 
	}
}

131 
	gDb
::
	$lize
()

133 
DB
 *
db
;

134 
DB_ENV
 *
nv
 = 
	`unwp
(
v_
);

135 
t
;

136 
u_t32_t
 
cxx_ags
;

138 
cxx_ags
 = 
cڡru_ags_
 & 
DB_CXX_NO_EXCEPTIONS
;

144 i((
t
 = 
	`db_
(&
db
, 
nv
,

145 
cڡru_ags_
 & ~
cxx_ags
)) != 0)

146  (
t
);

149 
imp_
 = 
db
;

150 
db
->
i_
 = 
this
;

155 i((
ags_
 & 
DB_CXX_PRIVATE_ENV
) != 0)

156 
v_
 = 
w
 
	`DbEnv
(
db
->
dbv
, 
cxx_ags
);

159 
mpf_
 = 
w
 
	`DbMpoFe
();

160 
mpf_
->
imp_
 = 
db
->
mpf
;

163 
	}
}

168 
	gDb
::
	$nup
()

170 i(
imp_
 != 0) {

171 
imp_
 = 0;

179 i((
ags_
 & 
DB_CXX_PRIVATE_ENV
) != 0) {

180 
v_
->
	`nup
();

181 
de
 
v_
;

182 
v_
 = 0;

185 
de
 
mpf_
;

187 
	}
}

195 
	gDb
::
	$r_picy
()

197 i(
v_
 !
NULL
)

198  (
v_
->
	`r_picy
());

205 i((
cڡru_ags_
 & 
DB_CXX_NO_EXCEPTIONS
) != 0) {

206  (
ON_ERROR_RETURN
);

209  (
ON_ERROR_THROW
);

212 
	}
}

214 
DB_DESTRUCTOR
(
o
, (
u_t32_t
 
ags
), (
db
, fgs), 
DB_RETOK_STD
)

215 
DB_METHOD
(
com
, (
DbTxn
 *
txnid
, 
Dbt
 *
t
, Db*

,

216 
DB_COMPACT
 *
c_da
, 
u_t32_t
 
ags
, 
Dbt
 *
d
),

217 (
db
, 
unwp
(
txnid
), 
t
, 

, 
c_da
, 
ags
, 
d
), 
DB_RETOK_STD
)

220 
DB_METHOD
(
curs
, (
DbTxn
 *
txnid
, 
Dbc
 **
cursp
, 
u_t32_t
 
ags
),

221 (
db
, 
unwp
(
txnid
), (
DBC
 **)
cursp
, 
ags
),

222 
DB_RETOK_STD
)

224 
DB_METHOD
(
d
, (
DbTxn
 *
txnid
, 
Dbt
 *
key
, 
u_t32_t
 
ags
),

225 (
db
, 
unwp
(
txnid
), 
key
, 
ags
),

226 
DB_RETOK_DBDEL
)

228 
	gDb
::
	$r
(
r
, cڡ *
fm
, ...)

230 
DB
 *
db
 = 
	`unwp
(
this
);

232 
	`DB_REAL_ERR
(
db
->
dbv
, 
r
, 
DB_ERROR_SET
, 1, 
fm
);

233 
	}
}

235 
	gDb
::
	$rx
(cڡ *
fm
, ...)

237 
DB
 *
db
 = 
	`unwp
(
this
);

239 
	`DB_REAL_ERR
(
db
->
dbv
, 0, 
DB_ERROR_NOT_SET
, 1, 
fm
);

240 
	}
}

242 
DB_METHOD
(
exis
, (
DbTxn
 *
txnid
, 
Dbt
 *
key
, 
u_t32_t
 
ags
),

243 (
db
, 
unwp
(
txnid
), 
key
, 
ags
), 
DB_RETOK_EXISTS
)

245 
DB_METHOD
(
fd
, (*
fdp
), (
db
, fdp), 
DB_RETOK_STD
)

247 
	gDb
::
	$g
(
DbTxn
 *
txnid
, 
Dbt
 *
key
, Db*
vue
, 
u_t32_t
 
ags
)

249 
DB
 *
db
 = 
	`unwp
(
this
);

250 
t
;

252 
t
 = 
db
->
	`g
(db, 
	`unwp
(
txnid
), 
key
, 
vue
, 
ags
);

254 i(!
	`DB_RETOK_DBGET
(
t
)) {

255 i(
t
 =
DB_BUFFER_SMALL
)

256 
	`DB_ERROR_DBT
(
v_
, "Db::g", 
vue
, 
	`r_picy
());

258 
	`DB_ERROR
(
v_
, "Db::g", 
t
, 
	`r_picy
());

261  (
t
);

262 
	}
}

264 
	gDb
::
	$g_byswd
(*
isswd
)

266 
DB
 *
db
 = (DB *)
	`unwpCڡ
(
this
);

267  (
db
->
	`g_byswd
(db, 
isswd
));

268 
	}
}

270 
DbEnv
 *
	gDb
::
	$g_v
()

272 
DB
 *
db
 = (DB *)
	`unwpCڡ
(
this
);

273 
DB_ENV
 *
dbv
 = 
db
->
	`g_v
(db);

274  (
dbv
 !
NULL
 ? 
DbEnv
::
	`g_DbEnv
(dbenv) : NULL);

275 
	}
}

277 
DbMpoFe
 *
	gDb
::
	$g_mpf
()

279  (
mpf_
);

280 
	}
}

282 
DB_METHOD
(
g_dbme
, (cڡ **
fam
, cڡ **
dbm
),

283 (
db
, 
fam
, 
dbm
), 
DB_RETOK_STD
)

285 
DB_METHOD
(
g_ݒ_ags
, (
u_t32_t
 *
ag
), (
db
, fg), 
DB_RETOK_STD
)

287 
	gDb
::
	$g_ty
(
DBTYPE
 *
dbty
)

289 
DB
 *
db
 = (DB *)
	`unwpCڡ
(
this
);

290  (
db
->
	`g_ty
(db, 
dbty
));

291 
	}
}

296 
DB_METHOD
(
jo
, (
Dbc
 **
curi
, Db**
cursp
, 
u_t32_t
 
ags
),

297 (
db
, (
DBC
 **)
curi
, (DBC **)
cursp
, 
ags
), 
DB_RETOK_STD
)

299 
DB_METHOD
(
key_nge
,

300 (
DbTxn
 *
txnid
, 
Dbt
 *
key
, 
DB_KEY_RANGE
 *
sus
, 
u_t32_t
 
ags
),

301 (
db
, 
unwp
(
txnid
), 
key
, 
sus
, 
ags
), 
DB_RETOK_STD
)

306 
	gDb
::
	$ݒ
(
DbTxn
 *
txnid
, cڡ *
fe
, cڡ *
daba
,

307 
DBTYPE
 
ty
, 
u_t32_t
 
ags
, 
mode
)

309 
t
;

310 
DB
 *
db
 = 
	`unwp
(
this
);

312 i(
cڡru_r_
 != 0)

313 
t
 = 
cڡru_r_
;

315 
t
 = 
db
->
	`ݒ
(db, 
	`unwp
(
txnid
), 
fe
, 
daba
, 
ty
, 
ags
,

316 
mode
);

318 i(!
	`DB_RETOK_STD
(
t
))

319 
	`DB_ERROR
(
v_
, "Db::ݒ", 
t
, 
	`r_picy
());

321  (
t
);

322 
	}
}

324 
	gDb
::
	$pg
(
DbTxn
 *
txnid
, 
Dbt
 *
key
, Db*
pkey
, Db*
vue
, 
u_t32_t
 
ags
)

326 
DB
 *
db
 = 
	`unwp
(
this
);

327 
t
;

329 
t
 = 
db
->
	`pg
(db, 
	`unwp
(
txnid
), 
key
, 
pkey
, 
vue
, 
ags
);

332 i(!
	`DB_RETOK_DBGET
(
t
)) {

333 i(
t
 =
DB_BUFFER_SMALL
 && 
	`DB_OVERFLOWED_DBT
(
vue
))

334 
	`DB_ERROR_DBT
(
v_
, "Db::pg", 
vue
, 
	`r_picy
());

336 
	`DB_ERROR
(
v_
, "Db::pg", 
t
, 
	`r_picy
());

339  (
t
);

340 
	}
}

342 
DB_METHOD
(
put
, (
DbTxn
 *
txnid
, 
Dbt
 *
key
, Db*
vue
, 
u_t32_t
 
ags
),

343 (
db
, 
unwp
(
txnid
), 
key
, 
vue
, 
ags
), 
DB_RETOK_DBPUT
)

345 
DB_DESTRUCTOR
(
me
,

346 (cڡ *
fe
, cڡ *
daba
, cڡ *
wme
,

347 
u_t32_t
 
ags
),

348 (
db
, 
fe
, 
daba
, 
wme
, 
ags
), 
DB_RETOK_STD
)

350 
DB_DESTRUCTOR
(
move
, (cڡ *
fe
, cڡ *
daba
, 
u_t32_t
 
ags
),

351 (
db
, 
fe
, 
daba
, 
ags
), 
DB_RETOK_STD
)

353 
DB_METHOD
(
un
, (
DbTxn
 *
txnid
, 
u_t32_t
 *
coup
, u_t32_
ags
),

354 (
db
, 
unwp
(
txnid
), 
coup
, 
ags
), 
DB_RETOK_STD
)

356 
DB_METHOD
(

, (
DbTxn
 *
txnid
, *

, 
u_t32_t
 
ags
),

357 (
db
, 
unwp
(
txnid
), 

, 
ags
), 
DB_RETOK_STD
)

359 
DB_METHOD
(
_t
, (
u_t32_t
 
ags
), (
db
, fgs), 
DB_RETOK_STD
)

361 
DB_METHOD
(
sync
, (
u_t32_t
 
ags
), (
db
, fgs), 
DB_RETOK_STD
)

363 
DB_METHOD
(
upgde
,

364 (cڡ *
me
, 
u_t32_t
 
ags
), (
db
,ame, fgs), 
DB_RETOK_STD
)

401 
	#DB_CALLBACK_C_INTERCEPT
(
_me
, 
_y
, 
_rgec
, \

402 
_tu
, 
_cxxgs
) \

403 
"C" 
_y
 
_db_
##
_me
##
_r_c
 
_rgec
 \

405 
Db
 *
cxxthis
; \

408 
	`DB_ASSERT
(
NULL
, 
his
 != NULL); \

409 
cxxthis
 = 
Db
::
	`g_Db
(
his
); \

410 
	`DB_ASSERT
(
his
->
dbv
, 
cxxthis
 !
NULL
); \

411 
	`DB_ASSERT
(
his
->
dbv
, 
cxxthis
->
_me
##
_back_
 != 0); \

413 
	`_tu
 (*
cxxthis
->
_me
##
_back_

_cxxgs
; \

414 }

	)

416 
	#DB_SET_CALLBACK
(
_cxxme
, 
_me
, 
_cxxgec
, 
_cb
) \

417 
Db
::
_cxxme
 
_cxxgec
 \

419 
DB
 *
his
 = 
	`unwp
(
this
); \

421 
_me
##
_back_
 = 
_cb
; \

422  ((*(
his
->
_cxxme
))(cthis, \

423 (
_cb
? 
_db_
##
_me
##
_r_c
 : 
NULL
)); \

424 }

	)

427 
DB_CALLBACK_C_INTERCEPT
(
assoc
,

428 , (
DB
 *
his
, cڡ 
DBT
 *
key
, cڡ DBT *
da
, DBT *
tv
),

429 , (
cxxthis
, 
Dbt
::
g_cڡ_Dbt
(
key
), Dbt::g_cڡ_Dbt(
da
),

430 
Dbt
::
	$g_Dbt
(
tv
)))

432 
Db
::
	`assoc
(
DbTxn
 *
txn
, Db *
cdy
, (*
back
)(Db *, cڡ 
Dbt
 *,

433 cڡ 
Dbt
 *, Db*), 
u_t32_t
 
ags
)

435 
DB
 *
his
 = 
	`unwp
(
this
);

441 
cdy
->
assoc_back_
 = 
back
;

442  ((*(
his
->
assoc
))(his, 
	`unwp
(
txn
), unwp(
cdy
),

443 (
back
? 
_db_assoc_r_c
 : 
NULL
, 
ags
));

444 
	}
}

446 
DB_CALLBACK_C_INTERCEPT
(
edback
,

447 , (
DB
 *
his
, 
code
, 
p
),

448  (), (
cxxthis
, 
code
, 
p
))

450 
DB_SET_CALLBACK
(
t_edback
, 
edback
,

451 ((*
g
)(
Db
 *
cxxthis
, 
code
, 
p
)),rg)

453 
	`DB_CALLBACK_C_INTERCEPT
(
nd_o
,

454 , (
DB
 *
his
, 
DBT
 *
da
, 
db_o_t
 
o
),

455 , (
cxxthis
, 
Dbt
::
	`g_Dbt
(
da
), 
o
))

457 
	`DB_SET_CALLBACK
(
t_nd_o
, 
nd_o
,

458 ((*
g
)(
Db
 *
cxxthis
, 
Dbt
 *
da
, 
db_o_t
 
o
)),rg)

460 
	`DB_CALLBACK_C_INTERCEPT
(
bt_com
,

461 , (
DB
 *
his
, cڡ 
DBT
 *
da1
, cڡ DBT *
da2
),

463 (
cxxthis
, 
Dbt
::
	`g_cڡ_Dbt
(
da1
), Dbt::
	$g_cڡ_Dbt
(
da2
)))

465 
	`DB_SET_CALLBACK
(
t_bt_com
, 
bt_com
,

466 ((*
g
)(
Db
 *
cxxthis
, cڡ 
Dbt
 *
da1
, cڡ Db*
da2
)),rg)

468 
	`DB_CALLBACK_C_INTERCEPT
(
bt_efix
,

469 
size_t
, (
DB
 *
his
, cڡ 
DBT
 *
da1
, cڡ DBT *
da2
),

471 (
cxxthis
, 
Dbt
::
	`g_cڡ_Dbt
(
da1
), Dbt::
	$g_cڡ_Dbt
(
da2
)))

473 
	`DB_SET_CALLBACK
(
t_bt_efix
, 
bt_efix
,

474 (
	$size_t
 (*
g
)(
Db
 *
cxxthis
, cڡ 
Dbt
 *
da1
, cڡ Db*
da2
)),rg)

476 
	`DB_CALLBACK_C_INTERCEPT
(
dup_com
,

477 , (
DB
 *
his
, cڡ 
DBT
 *
da1
, cڡ DBT *
da2
),

479 (
cxxthis
, 
Dbt
::
	`g_cڡ_Dbt
(
da1
), Dbt::
	$g_cڡ_Dbt
(
da2
)))

481 
	`DB_SET_CALLBACK
(
t_dup_com
, 
dup_com
,

482 ((*
g
)(
Db
 *
cxxthis
, cڡ 
Dbt
 *
da1
, cڡ Db*
da2
)),rg)

484 
	`DB_CALLBACK_C_INTERCEPT
(
h_com
,

485 , (
DB
 *
his
, cڡ 
DBT
 *
da1
, cڡ DBT *
da2
),

487 (
cxxthis
, 
Dbt
::
	`g_cڡ_Dbt
(
da1
), Dbt::
	$g_cڡ_Dbt
(
da2
)))

489 
	`DB_SET_CALLBACK
(
t_h_com
, 
h_com
,

490 ((*
g
)(
Db
 *
cxxthis
, cڡ 
Dbt
 *
da1
, cڡ Db*
da2
)),rg)

492 
	`DB_CALLBACK_C_INTERCEPT
(
h_hash
,

493 
u_t32_t
, (
DB
 *
his
, cڡ *
da
, u_t32_
n
),

494 , (
cxxthis
, 
da
, 
n
))

496 
	`DB_SET_CALLBACK
(
t_h_hash
, 
h_hash
,

497 (
	$u_t32_t
 (*
g
)(
Db
 *
cxxthis
, cڡ *
da
, 
u_t32_t
 
n
)),rg)

505 
	$_vify_back_c
(*
hd
, cڡ *
r_g
)

507 *
r
;

508 
	`__DB_STD
(
oam
*
out
;

510 
r
 = (*)
r_g
;

511 
out
 = (
	`__DB_STD
(
oam
*)
hd
;

513 (*
out
<< 
r
;

514 i(
out
->
	`
())

515  (
EIO
);

518 
	}
}

520 
Db
::
vify
(cڡ *
me
, cڡ *
subdb
,

521 
__DB_STD
(
oam
*
or
, 
u_t32_t
 
ags
)

523 
DB
 *
db
 = 
unwp
(
this
);

524 
t
;

526 i(!
db
)

527 
t
 = 
EINVAL
;

529 
t
 = 
__db_vify_
(
db
, 
me
, 
subdb
, 
or
,

530 
_vify_back_c
, 
ags
);

535 
nup
();

538 i(!
DB_RETOK_STD
(
t
))

539 
DB_ERROR
(
v_
, "Db::vify", 
t
, 
r_picy
());

541  (
t
);

544 
DB_METHOD
(
t_bt_com
, (
bt_com_f_ty
 
func
),

545 (
db
, 
func
), 
DB_RETOK_STD
)

546 
DB_METHOD
(
g_bt_mkey
, (
u_t32_t
 *
bt_mkeyp
),

547 (
db
, 
bt_mkeyp
), 
DB_RETOK_STD
)

548 
DB_METHOD
(
t_bt_mkey
, (
u_t32_t
 
bt_mkey
),

549 (
db
, 
bt_mkey
), 
DB_RETOK_STD
)

550 
DB_METHOD
(
t_bt_efix
, (
bt_efix_f_ty
 
func
),

551 (
db
, 
func
), 
DB_RETOK_STD
)

552 
DB_METHOD
(
t_dup_com
, (
dup_com_f_ty
 
func
),

553 (
db
, 
func
), 
DB_RETOK_STD
)

554 
DB_METHOD
(
g_y_ags
, (
u_t32_t
 *
ag
),

555 (
db
, 
ag
), 
DB_RETOK_STD
)

556 
DB_METHOD
(
t_y
, (cڡ *
sswd
, 
u_t32_t
 
ags
),

557 (
db
, 
sswd
, 
ags
), 
DB_RETOK_STD
)

558 
DB_METHOD_VOID
(
g_rfe
, (
FILE
 **
rf
), (
db
,rrfilep))

559 
DB_METHOD_VOID
(
t_rfe
, (
FILE
 *
rfe
), (
db
,rrfile))

560 
DB_METHOD_VOID
(
g_fx
, (cڡ **
fx
), (
db
,rrpfx))

561 
DB_METHOD_VOID
(
t_fx
, (cڡ *
fx
), (
db
,rrpfx))

562 
DB_METHOD
(
g_ags
, (
u_t32_t
 *
ag
), (
db
, flagsp),

563 
DB_RETOK_STD
)

564 
DB_METHOD
(
t_ags
, (
u_t32_t
 
ags
), (
db
, flags),

565 
DB_RETOK_STD
)

566 
DB_METHOD
(
t_h_com
, (
h_com_f_ty
 
func
),

567 (
db
, 
func
), 
DB_RETOK_STD
)

568 
DB_METHOD
(
g_h_f
, (
u_t32_t
 *
h_fp
),

569 (
db
, 
h_fp
), 
DB_RETOK_STD
)

570 
DB_METHOD
(
t_h_f
, (
u_t32_t
 
h_f
),

571 (
db
, 
h_f
), 
DB_RETOK_STD
)

572 
DB_METHOD
(
t_h_hash
, (
h_hash_f_ty
 
func
),

573 (
db
, 
func
), 
DB_RETOK_STD
)

574 
DB_METHOD
(
g_h_m
, (
u_t32_t
 *
h_mp
),

575 (
db
, 
h_mp
), 
DB_RETOK_STD
)

576 
DB_METHOD
(
t_h_m
, (
u_t32_t
 
h_m
),

577 (
db
, 
h_m
), 
DB_RETOK_STD
)

578 
DB_METHOD
(
g_ld
, (*
db_ldp
), (
db
, db_lorderp),

579 
DB_RETOK_STD
)

580 
DB_METHOD
(
t_ld
, (
db_ld
), (
db
, db_lorder),

581 
DB_RETOK_STD
)

582 
DB_METHOD_VOID
(
g_msgfe
, (
FILE
 **
msgf
), (
db
, msgfilep))

583 
DB_METHOD_VOID
(
t_msgfe
, (
FILE
 *
msgfe
), (
db
, msgfile))

584 
DB_METHOD_QUIET
(
g_muɝ
, (), (
db
))

585 
DB_METHOD
(
g_gesize
, (
u_t32_t
 *
db_gesiz
),

586 (
db
, 
db_gesiz
), 
DB_RETOK_STD
)

587 
DB_METHOD
(
t_gesize
, (
u_t32_t
 
db_gesize
),

588 (
db
, 
db_gesize
), 
DB_RETOK_STD
)

589 
DB_METHOD
(
g_iܙy
, (
DB_CACHE_PRIORITY
 *
iܙyp
),

590 (
db
, 
iܙyp
), 
DB_RETOK_STD
)

591 
DB_METHOD
(
t_iܙy
, (
DB_CACHE_PRIORITY
 
iܙy
),

592 (
db
, 
iܙy
), 
DB_RETOK_STD
)

593 
DB_METHOD
(
g__dim
, (*
_dimp
),

594 (
db
, 
_dimp
), 
DB_RETOK_STD
)

595 
DB_METHOD
(
t__dim
, (
_dim
),

596 (
db
, 
_dim
), 
DB_RETOK_STD
)

597 
DB_METHOD
(
g__n
, (
u_t32_t
 *
_
),

598 (
db
, 
_
), 
DB_RETOK_STD
)

599 
DB_METHOD
(
t__n
, (
u_t32_t
 
_n
),

600 (
db
, 
_n
), 
DB_RETOK_STD
)

601 
DB_METHOD
(
g__d
, (*
_dp
),

602 (
db
, 
_dp
), 
DB_RETOK_STD
)

603 
DB_METHOD
(
t__d
, (
_d
),

604 (
db
, 
_d
), 
DB_RETOK_STD
)

605 
DB_METHOD
(
g__sour
, (cڡ **
_sour
),

606 (
db
, 
_sour
), 
DB_RETOK_STD
)

607 
DB_METHOD
(
t__sour
, (cڡ *
_sour
),

608 (
db
, 
_sour
), 
DB_RETOK_STD
)

609 
DB_METHOD
(
g_q_exsize
, (
u_t32_t
 *
exsiz
),

610 (
db
, 
exsiz
), 
DB_RETOK_STD
)

611 
DB_METHOD
(
t_q_exsize
, (
u_t32_t
 
exsize
),

612 (
db
, 
exsize
), 
DB_RETOK_STD
)

614 
DB_METHOD_QUIET
(
t_loc
, (
db_mloc_f_ty
 
mloc_f
,

615 
db_loc_f_ty
 
loc_f
, 
db__f_ty
 
_f
),

616 (
db
, 
mloc_f
, 
loc_f
, 
_f
))

618 
Db
::
t_r
((*
g
)(cڡ 
DbEnv
 *, const *, const *))

620 
v_
->
	`t_r
(
g
);

621 
	}
}

623 
Db
::
t_msg
((*
g
)(cڡ 
DbEnv
 *, const *))

625 
v_
->
	`t_msg
(
g
);

626 
	}
}

628 *
Db
::
	$g_p_ive
() const

630  
	`unwpCڡ
(
this
)->
p_ive
;

631 
	}
}

633 
Db
::
	$t_p_ive
(*
vue
)

635 
	`unwp
(
this
)->
p_ive
 = 
vue
;

636 
	}
}

638 
DB_METHOD
(
g_chesize
, (
u_t32_t
 *
gby
, u_t32_*
by
, *
nch
),

639 (
db
, 
gby
, 
by
, 
nch
), 
DB_RETOK_STD
)

640 
DB_METHOD
(
t_chesize
, (
u_t32_t
 
gbys
, u_t32_
bys
, 
nche
),

641 (
db
, 
gbys
, 
bys
, 
nche
), 
DB_RETOK_STD
)

643 
Db
::
t_nic
((*
back
)(
DbEnv
 *, ))

645  (
v_
->
	`t_nic
(
back
));

646 
	}
}

648 
__DB_STD
(
oam
*
Db
::
	$g_r_am
()

650  
v_
->
	`g_r_am
();

651 
	}
}

653 
Db
::
t_r_am
(
__DB_STD
(
oam
*
r_am
)

655 
v_
->
t_r_am
(
r_am
);

658 
__DB_STD
(
oam
*
Db
::
	$g_mesge_am
()

660  
v_
->
	`g_mesge_am
();

661 
	}
}

663 
Db
::
t_mesge_am
(
__DB_STD
(
oam
*
mesge_am
)

665 
v_
->
t_mesge_am
(
mesge_am
);

668 
DB_METHOD_QUIET
(
g_iڮ
, (), (
db
))

	@../cxx/cxx_dbc.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

16 
	~"dbc/db_ge.h
"

17 
	~"dbc_auto/db_auto.h
"

18 
	~"dbc_auto/d_auto.h
"

19 
	~"dbc/db_dich.h
"

20 
	~"dbc_auto/db_ext.h
"

21 
	~"dbc_auto/comm_ext.h
"

29 
	#DBC_METHOD
(
_me
, 
_gec
, 
_gli
, 
_tok
) \

30 
Dbc
::
_me
 
_gec
 \

32 
t
; \

33 
DBC
 *
dbc
 = 
this
; \

35 
t
 = 
dbc
->
_me
 
_gli
; \

36 i(!
	`_tok
(
t
)) \

37 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
dbc
->
dbp
->
dbv
), \

38 "Dbc::" #_me, 
t
, 
ON_ERROR_UNKNOWN
); \

39  (
t
); \

40 }

	)

44 
	gDbc
::~
	$Dbc
()

46 
	}
}

48 
DBC_METHOD
(
o
, (), (
dbc
), 
DB_RETOK_STD
)

49 
DBC_METHOD
(
cou
, (
db_o_t
 *
coup
, 
u_t32_t
 
_ags
),

50 (
dbc
, 
coup
, 
_ags
), 
DB_RETOK_STD
)

51 
DBC_METHOD
(
d
, (
u_t32_t
 
_ags
),

52 (
dbc
, 
_ags
), 
DB_RETOK_DBCDEL
)

54 
	gDbc
::
	$dup
(
Dbc
** 
cursp
, 
u_t32_t
 
_ags
)

56 
t
;

57 
DBC
 *
dbc
 = 
this
;

58 
DBC
 *
w_curs
 = 0;

60 
t
 = 
dbc
->
	`dup
(dbc, &
w_curs
, 
_ags
);

62 i(
	`DB_RETOK_STD
(
t
))

64 *
cursp
 = (
Dbc
*)
w_curs
;

66 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
dbc
->
dbp
->
dbv
),

67 "Dbc::dup", 
t
, 
ON_ERROR_UNKNOWN
);

69  (
t
);

70 
	}
}

72 
	gDbc
::
	$g
(
Dbt
* 
key
, Db*
da
, 
u_t32_t
 
_ags
)

74 
t
;

75 
DBC
 *
dbc
 = 
this
;

77 
t
 = 
dbc
->
	`g
(dbc, 
key
, 
da
, 
_ags
);

79 i(!
	`DB_RETOK_DBCGET
(
t
)) {

80 i(
t
 =
DB_BUFFER_SMALL
 && 
	`DB_OVERFLOWED_DBT
(
key
))

81 
	`DB_ERROR_DBT
(
DbEnv
::
	`g_DbEnv
(
dbc
->
dbp
->
dbv
),

82 "Dbc::g", 
key
, 
ON_ERROR_UNKNOWN
);

83 i(
t
 =
DB_BUFFER_SMALL
 && 
	`DB_OVERFLOWED_DBT
(
da
))

84 
	`DB_ERROR_DBT
(
DbEnv
::
	`g_DbEnv
(
dbc
->
dbp
->
dbv
),

85 "Dbc::g", 
da
, 
ON_ERROR_UNKNOWN
);

87 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
dbc
->
dbp
->
dbv
),

88 "Dbc::g", 
t
, 
ON_ERROR_UNKNOWN
);

91  (
t
);

92 
	}
}

94 
	gDbc
::
	$pg
(
Dbt
* 
key
, Db*
pkey
, Db*
da
, 
u_t32_t
 
_ags
)

96 
t
;

97 
DBC
 *
dbc
 = 
this
;

99 
t
 = 
dbc
->
	`pg
(dbc, 
key
, 
pkey
, 
da
, 
_ags
);

102 i(!
	`DB_RETOK_DBCGET
(
t
)) {

103 i(
t
 =
DB_BUFFER_SMALL
 && 
	`DB_OVERFLOWED_DBT
(
key
))

104 
	`DB_ERROR_DBT
(
DbEnv
::
	`g_DbEnv
(
dbc
->
dbp
->
dbv
),

105 "Dbc::pg", 
key
, 
ON_ERROR_UNKNOWN
);

106 i(
t
 =
DB_BUFFER_SMALL
 && 
	`DB_OVERFLOWED_DBT
(
da
))

107 
	`DB_ERROR_DBT
(
DbEnv
::
	`g_DbEnv
(
dbc
->
dbp
->
dbv
),

108 "Dbc::pg", 
da
, 
ON_ERROR_UNKNOWN
);

110 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
dbc
->
dbp
->
dbv
),

111 "Dbc::pg", 
t
, 
ON_ERROR_UNKNOWN
);

114  (
t
);

115 
	}
}

117 
DBC_METHOD
(
put
, (
Dbt
* 
key
, Db*
da
, 
u_t32_t
 
_ags
),

118 (
dbc
, 
key
, 
da
, 
_ags
), 
DB_RETOK_DBCPUT
)

119 
DBC_METHOD
(
g_iܙy
, (
DB_CACHE_PRIORITY
 *
iܙyp
),

120 (
dbc
, 
iܙyp
), 
DB_RETOK_STD
)

121 
DBC_METHOD
(
t_iܙy
, (
DB_CACHE_PRIORITY
 
i
), (
dbc
,ri), 
DB_RETOK_STD
)

	@../cxx/cxx_dbt.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

16 
	~"dbc/db_ge.h
"

17 
	~"dbc_auto/db_auto.h
"

18 
	~"dbc_auto/d_auto.h
"

19 
	~"dbc/db_dich.h
"

20 
	~"dbc_auto/db_ext.h
"

21 
	~"dbc_auto/comm_ext.h
"

23 
	gDbt
::
	$Dbt
()

25 
DBT
 *
dbt
 = 
this
;

26 
	`memt
(
dbt
, 0, (
DBT
));

27 
	}
}

29 
	gDbt
::
	$Dbt
(*
da_g
, 
u_t32_t
 
size_g
)

31 
DBT
 *
dbt
 = 
this
;

32 
	`memt
(
dbt
, 0, (
DBT
));

33 
	`t_da
(
da_g
);

34 
	`t_size
(
size_g
);

35 
	}
}

37 
	gDbt
::~
	$Dbt
()

39 
	}
}

41 
Dbt
::
	$Dbt
(cڡ 
Dbt
 &
th
)

43 cڡ 
DBT
 *
om
 = &
th
;

44 
DBT
 *
to
 = 
this
;

45 
	`memy
(
to
, 
om
, (
DBT
));

46 
	}
}

48 
	gDbt
 &Dbt::
ݔ
 = (cڡ 
Dbt
 &
th
)

50 i(
this
 !&
th
) {

51 cڡ 
DBT
 *
om
 = &
th
;

52 
DBT
 *
	gto
 = 
this
;

53 
memy
(
to
, 
om
, (
DBT
));

55  (*
	gthis
);

	@../cxx/cxx_env.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

16 
	~"dbc/db_ge.h
"

17 
	~"dbc/db_am.h
"

18 
	~"dbc/log.h
"

19 
	~"dbc_auto/comm_ext.h
"

20 
	~"dbc_auto/log_ext.h
"

22 #ifde
HAVE_CXX_STDHEADERS


23 
usg
 
	gd
::

;

32 
	#DBENV_METHOD_ERR
(
_me
, 
_gec
, 
_gli
, 
__r
) \

33 
DbEnv
::
_me
 
_gec
 \

35 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
); \

36 
t
; \

38 i((
t
 = 
dbv
->
_me
 
_gli
) != 0) { \

39 
__r
; \

41  (
t
); \

42 }

	)

44 
	#DBENV_METHOD
(
_me
, 
_gec
, 
_gli
) \

45 
	`DBENV_METHOD_ERR
(
_me
, 
_gec
, 
_gli
, \

46 
	`DB_ERROR
(
this
, "DbEnv::" #_me, 
t
, 
	`r_picy
()))

	)

48 
	#DBENV_METHOD_QUIET
(
_me
, 
_gec
, 
_gli
) \

49 
DbEnv
::
_me
 
_gec
 \

51 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
); \

53  (
dbv
->
_me
 
_gli
); \

54 }

	)

56 
	#DBENV_METHOD_VOID
(
_me
, 
_gec
, 
_gli
) \

57 
DbEnv
::
_me
 
_gec
 \

59 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
); \

61 
dbv
->
_me
 
_gli
; \

62 }

	)

73 
	gϡ_known_r_picy
 = 
ON_ERROR_UNKNOWN
;

81 
	$_edback_r_c
(
DB_ENV
 *
v
, 
code
, 
p
)

83 
DbEnv
::
	`_edback_r
(
v
, 
code
, 
p
);

84 
	}
}

87 
	$_nic_r_c
(
DB_ENV
 *
v
, 
rv
)

89 
DbEnv
::
	`_nic_r
(
v
, 
rv
);

90 
	}
}

93 
	$_evt_func_r_c
(
DB_ENV
 *
v
, 
u_t32_t
 
evt
, *
evt_fo
)

95 
DbEnv
::
	`_evt_func_r
(
v
, 
evt
, 
evt_fo
);

96 
	}
}

99 
	$_am_r_funi_c
(cڡ 
DB_ENV
 *
v
,

100 cڡ *
efix
, cڡ *
mesge
)

102 
DbEnv
::
	`_am_r_funi
(
v
, 
efix
, 
mesge
);

103 
	}
}

106 
	$_am_mesge_funi_c
(cڡ 
DB_ENV
 *
v
, cڡ *
mesge
)

108 
DbEnv
::
	`_am_mesge_funi
(
v
, 
mesge
);

109 
	}
}

112 
	$_p_dich_r_c
(
DB_ENV
 *
v
, 
DBT
 *
dbt
, 
DB_LSN
 *
l
, 
db_cs
 

)

114  (
DbEnv
::
	`_p_dich_r
(
v
, 
dbt
, 
l
, 

));

115 
	}
}

118 
	$_p_nd_r_c
(
DB_ENV
 *
v
, cڡ 
DBT
 *
l
, cڡ DBT *
da
,

119 cڡ 
DB_LSN
 *
l
, 
id
, 
u_t32_t
 
ags
)

121  (
DbEnv
::
	`_p_nd_r
(
v
,

122 
l
, 
da
, 
l
, 
id
, 
ags
));

123 
	}
}

126 
	$_ilive_r_c
(

127 
DB_ENV
 *
v
, 
pid_t
 
pid
, 
db_thadid_t
 
thrid
, 
u_t32_t
 
ags
)

129  (
DbEnv
::
	`_ilive_r
(
v
, 
pid
, 
thrid
, 
ags
));

130 
	}
}

133 
	$_thad_id_r_c
(
DB_ENV
 *
v
, 
pid_t
 *
pidp
, 
db_thadid_t
 *
thridp
)

135 
DbEnv
::
	`_thad_id_r
(
v
, 
pidp
, 
thridp
);

136 
	}
}

139 *
	$_thad_id_rg_r_c
(
DB_ENV
 *
v
, 
pid_t
 
pid
,

140 
db_thadid_t
 
thrid
, *
buf
)

142  (
DbEnv
::
	`_thad_id_rg_r
(
v
, 
pid
, 
thrid
, 
buf
));

143 
	}
}

145 
DbEnv
::
	$_edback_r
(
DB_ENV
 *
v
, 
code
, 
p
)

147 
DbEnv
 *
cxxv
 = DbEnv::
	`g_DbEnv
(
v
);

148 i(
cxxv
 == 0) {

149 
	`DB_ERROR
(0,

150 "DbEnv::edback_back", 
EINVAL
, 
ON_ERROR_UNKNOWN
);

153 i(
cxxv
->
edback_back_
 == 0) {

154 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
v
),

155 "DbEnv::edback_back", 
EINVAL
, 
cxxv
->
	`r_picy
());

158 (*
cxxv
->
edback_back_
)(cxxv, 
code
, 
p
);

159 
	}
}

161 
DbEnv
::
	$_nic_r
(
DB_ENV
 *
v
, 
rv
)

163 
DbEnv
 *
cxxv
 = DbEnv::
	`g_DbEnv
(
v
);

164 i(
cxxv
 == 0) {

165 
	`DB_ERROR
(0,

166 "DbEnv::nic_back", 
EINVAL
, 
ON_ERROR_UNKNOWN
);

169 i(
cxxv
->
nic_back_
 == 0) {

170 
	`DB_ERROR
(
cxxv
, "DbEnv::nic_back", 
EINVAL
,

171 
cxxv
->
	`r_picy
());

174 (*
cxxv
->
nic_back_
)(cxxv, 
rv
);

175 
	}
}

177 
DbEnv
::
	$_evt_func_r
(

178 
DB_ENV
 *
v
, 
u_t32_t
 
evt
, *
evt_fo
)

180 
DbEnv
 *
cxxv
 = DbEnv::
	`g_DbEnv
(
v
);

181 i(
cxxv
 == 0) {

182 
	`DB_ERROR
(0,

183 "DbEnv::evt_func_back", 
EINVAL
, 
ON_ERROR_UNKNOWN
);

186 i(
cxxv
->
evt_func_back_
 == 0) {

187 
	`DB_ERROR
(
cxxv
, "DbEnv::evt_func_back", 
EINVAL
,

188 
cxxv
->
	`r_picy
());

191 (*
cxxv
->
evt_func_back_
)(cxxv, 
evt
, 
evt_fo
);

192 
	}
}

194 
DbEnv
::
	$_p_dich_r
(
DB_ENV
 *
v
, 
DBT
 *
dbt
, 
DB_LSN
 *
l
,

195 
db_cs
 

)

197 
DbEnv
 *
cxxv
 = DbEnv::
	`g_DbEnv
(
v
);

198 i(
cxxv
 == 0) {

199 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
v
),

200 "DbEnv::p_dich_back", 
EINVAL
, 
ON_ERROR_UNKNOWN
);

201  (
EINVAL
);

203 i(
cxxv
->
p_dich_back_
 == 0) {

204 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
v
),

205 "DbEnv::p_dich_back", 
EINVAL
,

206 
cxxv
->
	`r_picy
());

207  (
EINVAL
);

209 
Dbt
 *
cxxdbt
 = (Db*)
dbt
;

210 
DbL
 *
cxxl
 = (DbL *)
l
;

211  ((*
cxxv
->
p_dich_back_
)(cxxv, 
cxxdbt
, 
cxxl
, 

));

212 
	}
}

214 
DbEnv
::
	$_ilive_r
(

215 
DB_ENV
 *
v
, 
pid_t
 
pid
, 
db_thadid_t
 
thrid
, 
u_t32_t
 
ags
)

217 
DbEnv
 *
cxxv
 = DbEnv::
	`g_DbEnv
(
v
);

218 i(
cxxv
 == 0) {

219 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
v
),

220 "DbEnv::ilive_back", 
EINVAL
, 
ON_ERROR_UNKNOWN
);

223  ((*
cxxv
->
ilive_back_
)(cxxv, 
pid
, 
thrid
, 
ags
));

224 
	}
}

226 
DbEnv
::
	$_p_nd_r
(
DB_ENV
 *
v
, cڡ 
DBT
 *
l
, cڡ DBT *
da
,

227 cڡ 
DB_LSN
 *
l
, 
id
, 
u_t32_t
 
ags
)

229 
DbEnv
 *
cxxv
 = DbEnv::
	`g_DbEnv
(
v
);

230 i(
cxxv
 == 0) {

231 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
v
),

232 "DbEnv::p_nd_back", 
EINVAL
, 
ON_ERROR_UNKNOWN
);

233  (
EINVAL
);

235 cڡ 
Dbt
 *
cxxl
 = (cڡ Db*)
l
;

236 cڡ 
DbL
 *
cxxl
 = (cڡ DbL *)
l
;

237 
Dbt
 *
cxxda
 = (Db*)
da
;

238  ((*
cxxv
->
p_nd_back_
)(cxxenv,

239 
cxxl
, 
cxxda
, 
cxxl
, 
id
, 
ags
));

240 
	}
}

242 
DbEnv
::
	$_thad_id_r
(
DB_ENV
 *
v
,

243 
pid_t
 *
pidp
, 
db_thadid_t
 *
thridp
)

245 
DbEnv
 *
cxxv
 = DbEnv::
	`g_DbEnv
(
v
);

246 i(
cxxv
 == 0) {

247 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
v
),

248 "DbEnv::thad_id_back", 
EINVAL
, 
ON_ERROR_UNKNOWN
);

250 
cxxv
->
	`thad_id_back_
(cxxv, 
pidp
, 
thridp
);

251 
	}
}

253 *
DbEnv
::
	$_thad_id_rg_r
(
DB_ENV
 *
v
,

254 
pid_t
 
pid
, 
db_thadid_t
 
thrid
, *
buf
)

256 
DbEnv
 *
cxxv
 = DbEnv::
	`g_DbEnv
(
v
);

257 i(
cxxv
 == 0) {

258 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
v
),

259 "DbEnv::thad_id_rg_back", 
EINVAL
,

260 
ON_ERROR_UNKNOWN
);

261  (
NULL
);

263  (
cxxv
->
	`thad_id_rg_back_
(cxxv, 
pid
, 
thrid
, 
buf
));

264 
	}
}

278 
DbEnv
::
	$DbEnv
(
u_t32_t
 
ags
)

279 : 
	`imp_
(0)

280 , 
	`cڡru_r_
(0)

281 , 
	`cڡru_ags_
(
ags
)

282 , 
	`r_am_
(0)

283 , 
	`mesge_am_
(0)

284 , 
	`p_dich_back_
(0)

285 , 
	`edback_back_
(0)

286 , 
	`nic_back_
(0)

287 , 
	`evt_func_back_
(0)

288 , 
	$p_nd_back_
(0)

290 i((
cڡru_r_
 = 
	`lize
(0)) != 0)

291 
	`DB_ERROR
(
this
, "DbEnv::DbEnv", 
cڡru_r_
,

292 
	`r_picy
());

293 
	}
}

295 
DbEnv
::
	$DbEnv
(
DB_ENV
 *
v
, 
u_t32_t
 
ags
)

296 : 
	`imp_
(0)

297 , 
	`cڡru_r_
(0)

298 , 
	`cڡru_ags_
(
ags
)

299 , 
	`r_am_
(0)

300 , 
	`mesge_am_
(0)

301 , 
	`p_dich_back_
(0)

302 , 
	`edback_back_
(0)

303 , 
	`nic_back_
(0)

304 , 
	`evt_func_back_
(0)

305 , 
	$p_nd_back_
(0)

307 i((
cڡru_r_
 = 
	`lize
(
v
)) != 0)

308 
	`DB_ERROR
(
this
, "DbEnv::DbEnv", 
cڡru_r_
,

309 
	`r_picy
());

310 
	}
}

319 
DbEnv
::~
	$DbEnv
()

321 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

323 i(
v
 !
NULL
) {

324 ()
v
->
	`o
(env, 0);

325 
	`nup
();

327 
	}
}

330 
DbEnv
::
	$nup
()

332 
imp_
 = 0;

333 
	}
}

335 
DbEnv
::
	$o
(
u_t32_t
 
ags
)

337 
t
;

338 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

340 
t
 = 
v
->
	`o
nv, 
ags
);

344 
	`nup
();

350 i(
t
 != 0)

351 
	`DB_ERROR
(
this
, "DbEnv::o", 
t
, 
	`r_picy
());

353  (
t
);

354 
	}
}

356 
DBENV_METHOD
(
dbmove
,

357 (
DbTxn
 *
txn
, cڡ *
me
, cڡ *
subdb
, 
u_t32_t
 
ags
),

358 (
dbv
, 
unwp
(
txn
), 
me
, 
subdb
, 
ags
))

359 
DBENV_METHOD
(
dbme
, (
DbTxn
 *
txn
, cڡ *
me
, cڡ *
subdb
,

360 cڡ *
wme
, 
u_t32_t
 
ags
),

361 (
dbv
, 
unwp
(
txn
), 
me
, 
subdb
, 
wme
, 
ags
))

363 
DbEnv
::
	$r
(
r
, cڡ *
fm
, ...)

365 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

367 
	`DB_REAL_ERR
(
v
, 
r
, 
DB_ERROR_SET
, 1, 
fm
);

368 
	}
}

376 
DbEnv
::
	$r_picy
()

378 i((
cڡru_ags_
 & 
DB_CXX_NO_EXCEPTIONS
) != 0) {

379  (
ON_ERROR_RETURN
);

382  (
ON_ERROR_THROW
);

384 
	}
}

386 
DbEnv
::
	$rx
(cڡ *
fm
, ...)

388 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

390 
	`DB_REAL_ERR
(
v
, 0, 
DB_ERROR_NOT_SET
, 1, 
fm
);

391 
	}
}

393 *
DbEnv
::
	$g_p_ive
() const

395  
	`unwpCڡ
(
this
)->
p_ive
;

396 
	}
}

398 
DBENV_METHOD
(
chk
, (
u_t32_t
 
ags
), (
dbv
, flags))

399 
DBENV_METHOD
(
feid_t
, (cڡ *
fe
, 
u_t32_t
 
ags
),

400 (
dbv
, 
fe
, 
ags
))

401 
DBENV_METHOD
(
g_home
, (cڡ **
hom
), (
dbv
, homep))

402 
DBENV_METHOD
(
g_ݒ_ags
, (
u_t32_t
 *
ag
), (
dbv
, flagsp))

403 
DBENV_METHOD
(
g_da_ds
, (cڡ ***
dp
), (
dbv
, dirspp))

405 
bo
 
DbEnv
::
	$is_bigdn
()

407  
	`unwp
(
this
)->
	`is_bigdn
(? 
ue
 : 
l
;

408 
	}
}

410 
DBENV_METHOD
(
g_thad_cou
, (
u_t32_t
 *
cou
), (
dbv
, count))

411 
DBENV_METHOD
(
t_thad_cou
, (
u_t32_t
 
cou
), (
dbv
, count))

417 
DbEnv
::
	$lize
(
DB_ENV
 *
v
)

419 
t
;

421 
ϡ_known_r_picy
 = 
	`r_picy
();

423 i(
v
 == 0) {

425 i((
t
 = ::
	`db_v_
(&
v
,

426 
cڡru_ags_
 & ~
DB_CXX_NO_EXCEPTIONS
)) != 0)

427  (
t
);

429 
imp_
 = 
v
;

430 
v
->
i1_
 = 
this
;

432 
	}
}

435 
DBENV_METHOD
(
lock_de
, (
u_t32_t
 
ags
, u_t32_
y
, *
ab܋d
),

436 (
dbv
, 
ags
, 
y
, 
ab܋d
))

437 
DBENV_METHOD_ERR
(
lock_g
,

438 (
u_t32_t
 
lock
, u_t32_
ags
, cڡ 
Dbt
 *
obj
,

439 
db_lockmode_t
 
lock_mode
, 
DbLock
 *
lock
),

440 (
dbv
, 
lock
, 
ags
, 
obj
, 
lock_mode
, &
lock
->
lock_
),

441 
DbEnv
::
ruime_r_lock_g
(
this
, "DbEnv::lock_g", 
t
,

442 
DB_LOCK_GET
, 
lock_mode
, 
obj
, *
lock
,

443 -1, 
	$r_picy
()))

444 
	`DBENV_METHOD
(
lock_id
, (
u_t32_t
 *
idp
), (
dbv
, idp))

445 
	`DBENV_METHOD
(
lock_id_
, (
u_t32_t
 
id
), (
dbv
, id))

446 
	`DBENV_METHOD
(
lock_put
, (
DbLock
 *
lock
), (
dbv
, &lock->
lock_
))

447 
	`DBENV_METHOD
(
lock_
, (
DB_LOCK_STAT
 **
p
, 
u_t32_t
 
ags
),

448 (
dbv
, 
p
, 
ags
))

449 
	`DBENV_METHOD
(
lock__t
, (
u_t32_t
 
ags
), (
dbv
, flags))

450 
	`DBENV_METHOD_ERR
(
lock_vec
,

451 (
u_t32_t
 
lock
, u_t32_
ags
, 
DB_LOCKREQ
 
li
[],

452 
i
, 
DB_LOCKREQ
 **
i_tued
),

453 (
dbv
, 
lock
, 
ags
, 
li
, 
i
, 
i_tued
),

454 
DbEnv
::
	`ruime_r_lock_g
(
this
, "DbEnv::lock_vec", 
t
,

455 (*
i_tued
)->

, (*i_tued)->
mode
,

456 
Dbt
::
	`g_Dbt
((*
i_tued
)->
obj
), 
	`DbLock
((*i_tued)->
lock
),

457 (*
i_tued
- 
li
, 
	$r_picy
()))

459 
	`DBENV_METHOD
(
log_chive
, (**
li
[], 
u_t32_t
 
ags
),

460 (
dbv
, 
li
, 
ags
))

462 
DbEnv
::
	$log_com
(cڡ 
DbL
 *
l0
, cڡ DbL *
l1
)

464  (::
	`log_com
(
l0
, 
l1
));

465 
	}
}

468 
DBENV_METHOD
(
log_curs
, (
DbLogc
 **
cursp
, 
u_t32_t
 
ags
),

469 (
dbv
, (
DB_LOGC
 **)
cursp
, 
ags
))

470 
DBENV_METHOD
(
log_fe
, (
DbL
 *
l
, *
m
, 
size_t
 
n
),

471 (
dbv
, 
l
, 
m
, 
n
))

472 
DBENV_METHOD
(
log_ush
, (cڡ 
DbL
 *
l
), (
dbv
,sn))

473 
DBENV_METHOD
(
log_put
, (
DbL
 *
l
, cڡ 
Dbt
 *
da
, 
u_t32_t
 
ags
),

474 (
dbv
, 
l
, 
da
, 
ags
))

476 
DbEnv
::
	$log_tf
(
DbTxn
 *
txn
, cڡ *
fmt
, ...)

478 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

479 
va_li
 

;

480 
t
;

482 
	`va_t
(

, 
fmt
);

483 
t
 = 
	`__log_tf_
(
v
, 
	`unwp
(
txn
), 
fmt
, 

);

484 
	`va_d
(

);

486  (
t
);

487 
	}
}

489 
DBENV_METHOD
(
log_
, (
DB_LOG_STAT
 **
p
, 
u_t32_t
 
ags
),

490 (
dbv
, 
p
, 
ags
))

491 
DBENV_METHOD
(
log__t
, (
u_t32_t
 
ags
), (
dbv
, flags))

493 
DBENV_METHOD
(
l_t
, (cڡ *
fe
, 
u_t32_t
 
ags
),

494 (
dbv
, 
fe
, 
ags
))

496 
DbEnv
::
	$memp_f
(
DbMpoFe
 **
dbm
, 
u_t32_t
 
ags
)

498 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

499 
t
;

500 
DB_MPOOLFILE
 *
mpf
;

502 i(
v
 =
NULL
)

503 
t
 = 
EINVAL
;

505 
t
 = 
v
->
	`memp_f
nv, &
mpf
, 
ags
);

507 i(
	`DB_RETOK_STD
(
t
)) {

508 *
dbm
 = 
w
 
	`DbMpoFe
();

509 (*
dbm
)->
imp_
 = 
mpf
;

511 
	`DB_ERROR
(
this
, "DbMpoFe::f_", 
t
, 
ON_ERROR_UNKNOWN
);

513  (
t
);

514 
	}
}

516 
DBENV_METHOD
(
memp_gi
,

517 (
y
, 
pg_f_ty
 
pg_f
, 
pgout_f_ty
 
pgout_f
),

518 (
dbv
, 
y
, 
pg_f
, 
pgout_f
))

521 
DBENV_METHOD
(
memp_
,

522 (
DB_MPOOL_STAT
 **
g
, 
DB_MPOOL_FSTAT
 ***
f
, 
u_t32_t
 
ags
),

523 (
dbv
, 
g
, 
f
, 
ags
))

524 
DBENV_METHOD
(
memp__t
, (
u_t32_t
 
ags
), (
dbv
, flags))

525 
DBENV_METHOD
(
memp_sync
, (
DbL
 *

), (
dbv
, sn))

526 
DBENV_METHOD
(
memp_ick
, (
p
, *
nwrٕ
), (
dbv
,ct,wrotep))

531 
DbEnv
::
	$ݒ
(cڡ *
db_home
, 
u_t32_t
 
ags
, 
mode
)

533 
t
;

534 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

536 i(
cڡru_r_
 != 0)

537 
t
 = 
cڡru_r_
;

539 
t
 = 
v
->
	`ݒ
nv, 
db_home
, 
ags
, 
mode
);

541 i(!
	`DB_RETOK_STD
(
t
))

542 
	`DB_ERROR
(
this
, "DbEnv::ݒ", 
t
, 
	`r_picy
());

544  (
t
);

545 
	}
}

547 
DbEnv
::
	$move
(cڡ *
db_home
, 
u_t32_t
 
ags
)

549 
t
;

550 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

552 
t
 = 
v
->
	`move
nv, 
db_home
, 
ags
);

558 
	`nup
();

560 i(
t
 != 0)

561 
	`DB_ERROR
(
this
, "DbEnv::move", 
t
, 
	`r_picy
());

563  (
t
);

564 
	}
}

572 
DbEnv
::
	$ruime_r
(
DbEnv
 *
v
,

573 cڡ *
Δ
, 
r
, 
r_picy
)

575 i(
r_picy
 =
ON_ERROR_UNKNOWN
)

576 
r_picy
 = 
ϡ_known_r_picy
;

577 i(
r_picy
 =
ON_ERROR_THROW
) {

580 
r
) {

581 
DB_LOCK_DEADLOCK
:

583 
DbDdlockExi
 
	`dl_ex
(
Δ
);

584 
dl_ex
.
	`t_v
(
v
);

585 
throw
 
dl_ex
;

587 
DB_LOCK_NOTGRANTED
:

589 
DbLockNGedExi
 
	`g_ex
(
Δ
);

590 
g_ex
.
	`t_v
(
v
);

591 
throw
 
g_ex
;

593 
DB_REP_HANDLE_DEAD
:

595 
DbRHdDdExi
 
	`hd_ex
(
Δ
);

596 
hd_ex
.
	`t_v
(
v
);

597 
throw
 
hd_ex
;

599 
DB_RUNRECOVERY
:

601 
DbRunRecovyExi
 
	`_ex
(
Δ
);

602 
_ex
.
	`t_v
(
v
);

603 
throw
 
_ex
;

607 
DbExi
 
	`ex
(
Δ
, 
r
);

608 
ex
.
	`t_v
(
v
);

609 
throw
 
ex
;

613 
	}
}

617 
DbEnv
::
	$ruime_r_dbt
(
DbEnv
 *
v
,

618 cڡ *
Δ
, 
Dbt
 *
dbt
, 
r_picy
)

620 i(
r_picy
 =
ON_ERROR_UNKNOWN
)

621 
r_picy
 = 
ϡ_known_r_picy
;

622 i(
r_picy
 =
ON_ERROR_THROW
) {

625 
DbMemyExi
 
	`ex
(
Δ
, 
dbt
);

626 
ex
.
	`t_v
(
v
);

627 
throw
 
ex
;

629 
	}
}

634 
DbEnv
::
	$ruime_r_lock_g
(
DbEnv
 *
v
,

635 cڡ *
Δ
, 
r
,

636 
db_lock_t
 

, 
db_lockmode_t
 
mode
, cڡ 
Dbt
 *
obj
,

637 
DbLock
 
lock
, 
dex
, 
r_picy
)

639 i(
r
 !
DB_LOCK_NOTGRANTED
) {

640 
	`ruime_r
(
v
, 
Δ
, 
r
, 
r_picy
);

644 i(
r_picy
 =
ON_ERROR_UNKNOWN
)

645 
r_picy
 = 
ϡ_known_r_picy
;

646 i(
r_picy
 =
ON_ERROR_THROW
) {

649 
DbLockNGedExi
 
	`ex
(
Δ
, 

, 
mode
,

650 
obj
, 
lock
, 
dex
);

651 
ex
.
	`t_v
(
v
);

652 
throw
 
ex
;

654 
	}
}

656 
DbEnv
::
	$_am_r_funi
(

657 cڡ 
DB_ENV
 *
v
, cڡ *
efix
, cڡ *
mesge
)

659 cڡ 
DbEnv
 *
cxxv
 = DbEnv::
	`g_cڡ_DbEnv
(
v
);

660 i(
cxxv
 == 0) {

661 
	`DB_ERROR
(0,

662 "DbEnv::am_r", 
EINVAL
, 
ON_ERROR_UNKNOWN
);

666 i(
cxxv
->
r_back_
)

667 
cxxv
->
	`r_back_
(cxxv, 
efix
, 
mesge
);

668 i(
cxxv
->
r_am_
) {

670 i(
efix
) {

671 (*
cxxv
->
r_am_
<< 
efix
;

672 (*
cxxv
->
r_am_
) << (const *)": ";

674 i(
mesge
)

675 (*
cxxv
->
r_am_
<< (cڡ *)
mesge
;

676 (*
cxxv
->
r_am_
) << (const *)"\n";

678 
	}
}

680 
DbEnv
::
	$_am_mesge_funi
(cڡ 
DB_ENV
 *
v
, cڡ *
mesge
)

682 cڡ 
DbEnv
 *
cxxv
 = DbEnv::
	`g_cڡ_DbEnv
(
v
);

683 i(
cxxv
 == 0) {

684 
	`DB_ERROR
(0,

685 "DbEnv::am_mesge", 
EINVAL
, 
ON_ERROR_UNKNOWN
);

689 i(
cxxv
->
mesge_back_
)

690 
cxxv
->
	`mesge_back_
(cxxv, 
mesge
);

691 i(
cxxv
->
mesge_am_
) {

693 (*
cxxv
->
mesge_am_
<< (cڡ *)
mesge
;

694 (*
cxxv
->
mesge_am_
) << (const *)"\n";

696 
	}
}

699 *
DbEnv
::
	$
(
r
)

701  (
	`db_
(
r
));

702 
	}
}

707 
DBENV_METHOD
(
t_da_d
, (cڡ *
d
), (
dbv
, dir))

708 
DBENV_METHOD
(
g_y_ags
, (
u_t32_t
 *
ag
),

709 (
dbv
, 
ag
))

710 
DBENV_METHOD
(
t_y
, (cڡ *
sswd
, 
u_t32_t
 
ags
),

711 (
dbv
, 
sswd
, 
ags
))

712 
DBENV_METHOD_VOID
(
g_rfe
, (
FILE
 **
rf
), (
dbv
,rrfilep))

713 
DBENV_METHOD_VOID
(
t_rfe
, (
FILE
 *
rfe
), (
dbv
,rrfile))

714 
DBENV_METHOD_VOID
(
g_fx
, (cڡ **
fxp
), (
dbv
,rrpfxp))

715 
DBENV_METHOD_VOID
(
t_fx
, (cڡ *
fx
), (
dbv
,rrpfx))

716 
DBENV_METHOD
(
t_rmed_d
, (
mode
, 
u_t32_t
 
ags
),

717 (
dbv
, 
mode
, 
ags
))

718 
DBENV_METHOD
(
g_lg_bsize
, (
u_t32_t
 *
bsiz
), (
dbv
, bsizep))

719 
DBENV_METHOD
(
t_lg_bsize
, (
u_t32_t
 
bsize
), (
dbv
, bsize))

720 
DBENV_METHOD
(
g_lg_d
, (cڡ **
dp
), (
dbv
, dirp))

721 
DBENV_METHOD
(
t_lg_d
, (cڡ *
d
), (
dbv
, dir))

722 
DBENV_METHOD
(
g_lg_femode
, (*
mod
), (
dbv
, modep))

723 
DBENV_METHOD
(
t_lg_femode
, (
mode
), (
dbv
, mode))

724 
DBENV_METHOD
(
g_lg_max
, (
u_t32_t
 *
maxp
), (
dbv
, maxp))

725 
DBENV_METHOD
(
t_lg_max
, (
u_t32_t
 
max
), (
dbv
, max))

726 
DBENV_METHOD
(
g_lg_gimax
, (
u_t32_t
 *
gimaxp
), (
dbv
,egionmaxp))

727 
DBENV_METHOD
(
t_lg_gimax
, (
u_t32_t
 
gimax
), (
dbv
,egionmax))

728 
DBENV_METHOD
(
g_lk_cis
, (cڡ 
u_t8_t
 **
lk_ci
, *
lk_maxp
),

729 (
dbv
, 
lk_ci
, 
lk_maxp
))

730 
DBENV_METHOD
(
t_lk_cis
, (
u_t8_t
 *
lk_cis
, 
lk_max
),

731 (
dbv
, 
lk_cis
, 
lk_max
))

732 
DBENV_METHOD
(
g_lk_de
, (
u_t32_t
 *
dep
), (
dbv
, detectp))

733 
DBENV_METHOD
(
t_lk_de
, (
u_t32_t
 
de
), (
dbv
, detect))

734 
DBENV_METHOD
(
g_lk_max_locks
, (
u_t32_t
 *
max_lock
),

735 (
dbv
, 
max_lock
))

736 
DBENV_METHOD
(
t_lk_max_locks
, (
u_t32_t
 
max_locks
), (
dbv
, max_lockers))

737 
DBENV_METHOD
(
g_lk_max_locks
, (
u_t32_t
 *
max_lock
), (
dbv
, max_locksp))

738 
DBENV_METHOD
(
t_lk_max_locks
, (
u_t32_t
 
max_locks
), (
dbv
, max_locks))

739 
DBENV_METHOD
(
g_lk_max_objes
, (
u_t32_t
 *
max_obje
),

740 (
dbv
, 
max_obje
))

741 
DBENV_METHOD
(
t_lk_max_objes
, (
u_t32_t
 
max_objes
), (
dbv
, max_objects))

742 
DBENV_METHOD
(
g_mp_max_ݒfd
, (*
maxݒfdp
), (
dbv
, maxopenfdp))

743 
DBENV_METHOD
(
t_mp_max_ݒfd
, (
maxݒfd
), (
dbv
, maxopenfd))

744 
DBENV_METHOD
(
g_mp_max_wre
, (*
maxwr
, 
db_timeout_t
 *
maxwre_
),

745 (
dbv
, 
maxwr
, 
maxwre_
))

746 
DBENV_METHOD
(
t_mp_max_wre
, (
maxwre
, 
db_timeout_t
 
maxwre_p
),

747 (
dbv
, 
maxwre
, 
maxwre_p
))

748 
DBENV_METHOD
(
g_mp_mmsize
, (
size_t
 *
mmsiz
), (
dbv
, mmapsizep))

749 
DBENV_METHOD
(
t_mp_mmsize
, (
size_t
 
mmsize
), (
dbv
, mmapsize))

750 
DBENV_METHOD_VOID
(
g_msgfe
, (
FILE
 **
msgf
), (
dbv
, msgfilep))

751 
DBENV_METHOD_VOID
(
t_msgfe
, (
FILE
 *
msgfe
), (
dbv
, msgfile))

752 
DBENV_METHOD
(
g_tmp_d
, (cڡ **
tmp_dp
), (
dbv
,mp_dirp))

753 
DBENV_METHOD
(
t_tmp_d
, (cڡ *
tmp_d
), (
dbv
,mp_dir))

754 
DBENV_METHOD
(
g_tx_max
, (
u_t32_t
 *
tx_maxp
), (
dbv
,x_maxp))

755 
DBENV_METHOD
(
t_tx_max
, (
u_t32_t
 
tx_max
), (
dbv
,x_max))

757 
DBENV_METHOD
(
_t
, (
u_t32_t
 
ags
), (
dbv
, flags))

759 
DBENV_METHOD_QUIET
(
t_loc
,

760 (
db_mloc_f_ty
 
mloc_f
, 
db_loc_f_ty
 
loc_f
,

761 
db__f_ty
 
_f
),

762 (
dbv
, 
mloc_f
, 
loc_f
, 
_f
))

764 
DbEnv
::
	$t_p_ive
(*
vue
)

766 
	`unwp
(
this
)->
p_ive
 = 
vue
;

767 
	}
}

769 
DBENV_METHOD
(
g_chesize
,

770 (
u_t32_t
 *
gby
, u_t32_*
by
, *
nch
),

771 (
dbv
, 
gby
, 
by
, 
nch
))

772 
DBENV_METHOD
(
t_chesize
,

773 (
u_t32_t
 
gbys
, u_t32_
bys
, 
nche
),

774 (
dbv
, 
gbys
, 
bys
, 
nche
))

775 
DBENV_METHOD
(
g_che_max
, (
u_t32_t
 *
gby
, u_t32_*
by
),

776 (
dbv
, 
gby
, 
by
))

777 
DBENV_METHOD
(
t_che_max
, (
u_t32_t
 
gbys
, u_t32_
bys
),

778 (
dbv
, 
gbys
, 
bys
))

780 
DbEnv
::
t_r
((*
g
)(const DbEnv *, const *, const *))

782 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

784 
r_back_
 = 
g
;

785 
r_am_
 = 0;

787 
dbv
->
	`t_r
(dbv, (
g
 == 0) ? 0 :

788 
_am_r_funi_c
);

789 
	}
}

791 
__DB_STD
(
oam
*
DbEnv
::
	$g_r_am
()

793  (
r_am_
);

794 
	}
}

796 
DbEnv
::
t_r_am
(
__DB_STD
(
oam
*
am
)

798 
DB_ENV
 *
dbv
 = 
unwp
(
this
);

800 
r_am_
 = 
am
;

801 
r_back_
 = 0;

803 
dbv
->
t_r
(dbv, (
am
 == 0) ? 0 :

804 
_am_r_funi_c
);

807 
DbEnv
::
t_edback
((*
g
)(DbEnv *, , ))

809 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

811 
edback_back_
 = 
g
;

813  (
dbv
->
	`t_edback
(dbenv,

814 
g
 =0 ? 0 : 
_edback_r_c
));

815 
	}
}

817 
DBENV_METHOD
(
g_ags
, (
u_t32_t
 *
ag
), (
dbv
, flagsp))

818 
DBENV_METHOD
(
t_ags
, (
u_t32_t
 
ags
, 
off
), (
dbv
, flags, onoff))

820 
DbEnv
::
t_msg
((*
g
)(const DbEnv *, const *))

822 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

824 
mesge_back_
 = 
g
;

825 
mesge_am_
 = 0;

827 
dbv
->
	`t_msg
(dbv, (
g
 == 0) ? 0 :

828 
_am_mesge_funi_c
);

829 
	}
}

831 
__DB_STD
(
oam
*
DbEnv
::
	$g_mesge_am
()

833  (
mesge_am_
);

834 
	}
}

836 
DbEnv
::
t_mesge_am
(
__DB_STD
(
oam
*
am
)

838 
DB_ENV
 *
dbv
 = 
unwp
(
this
);

840 
mesge_am_
 = 
am
;

841 
mesge_back_
 = 0;

843 
dbv
->
t_msg
(dbv, (
am
 == 0) ? 0 :

844 
_am_mesge_funi_c
);

847 
DbEnv
::
t_nic
((*
g
)(DbEnv *, ))

849 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

851 
nic_back_
 = 
g
;

853  (
dbv
->
	`t_nic
(dbenv,

854 
g
 =0 ? 0 : 
_nic_r_c
));

855 
	}
}

857 
DbEnv
::
t_evt_nify
((*
g
)(DbEnv *, 
u_t32_t
, *))

859 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

861 
evt_func_back_
 = 
g
;

863  (
dbv
->
	`t_evt_nify
(dbenv,

864 
g
 =0 ? 0 : 
_evt_func_r_c
));

865 
	}
}

867 
DBENV_METHOD
(
t_c_rv
,

868 (*

, *
ho
, 
tc
, 
sc
, 
u_t32_t
 
ags
),

869 (
dbv
, 

, 
ho
, 
tc
, 
sc
, 
ags
))

870 
DBENV_METHOD
(
g_shm_key
, (*
shm_keyp
), (
dbv
, shm_keyp))

871 
DBENV_METHOD
(
t_shm_key
, (
shm_key
), (
dbv
, shm_key))

873 
DbEnv
::
t_p_dich


874 ((*
g
)(
DbEnv
 *, 
Dbt
 *, 
DbL
 *, 
db_cs
))

876 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

877 
t
;

879 
p_dich_back_
 = 
g
;

880 i((
t
 = 
dbv
->
	`t_p_dich
(dbenv,

881 
g
 =0 ? 0 : 
_p_dich_r_c
)) != 0)

882 
	`DB_ERROR
(
this
, "DbEnv::t_p_dich", 
t
, 
	`r_picy
());

884  (
t
);

885 
	}
}

887 
DbEnv
::
t_ilive


888 ((*
g
)(
DbEnv
 *, 
pid_t
, 
db_thadid_t
, 
u_t32_t
))

890 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

891 
t
;

893 
ilive_back_
 = 
g
;

894 i((
t
 = 
dbv
->
	`t_ilive
(dbenv,

895 
g
 =0 ? 0 : 
_ilive_r_c
)) != 0)

896 
	`DB_ERROR
(
this
, "DbEnv::t_ilive", 
t
, 
	`r_picy
());

898  (
t
);

899 
	}
}

901 
DBENV_METHOD
(
g_tx_timeamp
, (
time_t
 *
timeamp
), (
dbv
,imestamp))

902 
DBENV_METHOD
(
t_tx_timeamp
, (
time_t
 *
timeamp
), (
dbv
,imestamp))

903 
DBENV_METHOD
(
g_vbo
, (
u_t32_t
 
which
, *
of
),

904 (
dbv
, 
which
, 
of
))

905 
DBENV_METHOD
(
t_vbo
, (
u_t32_t
 
which
, 
off
), (
dbv
, which, onoff))

907 
DBENV_METHOD
(
mux_loc
,

908 (
u_t32_t
 
ags
, 
db_mux_t
 *
muxp
), (
dbv
, flags, mutexp))

909 
DBENV_METHOD
(
mux_
, (
db_mux_t
 
mux
), (
dbv
, mutex))

910 
DBENV_METHOD
(
mux_g_ign
, (
u_t32_t
 *
gp
), (
dbv
,rgp))

911 
DBENV_METHOD
(
mux_g_emt
, (
u_t32_t
 *
gp
), (
dbv
,rgp))

912 
DBENV_METHOD
(
mux_g_max
, (
u_t32_t
 *
gp
), (
dbv
,rgp))

913 
DBENV_METHOD
(
mux_g_s_s
, (
u_t32_t
 *
gp
), (
dbv
,rgp))

914 
DBENV_METHOD
(
mux_lock
, (
db_mux_t
 
mux
), (
dbv
, mutex))

915 
DBENV_METHOD
(
mux_t_ign
, (
u_t32_t
 
g
), (
dbv
,rg))

916 
DBENV_METHOD
(
mux_t_emt
, (
u_t32_t
 
g
), (
dbv
,rg))

917 
DBENV_METHOD
(
mux_t_max
, (
u_t32_t
 
g
), (
dbv
,rg))

918 
DBENV_METHOD
(
mux_t_s_s
, (
u_t32_t
 
g
), (
dbv
,rg))

919 
DBENV_METHOD
(
mux_
,

920 (
DB_MUTEX_STAT
 **
p
, 
u_t32_t
 
ags
), (
dbv
, statp, flags))

921 
DBENV_METHOD
(
mux__t
, (
u_t32_t
 
ags
), (
dbv
, flags))

922 
DBENV_METHOD
(
mux_uock
, (
db_mux_t
 
mux
), (
dbv
, mutex))

924 
DbEnv
::
t_thad_id
((*
g
)(DbEnv *, 
pid_t
 *, 
db_thadid_t
 *))

926 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

927 
t
;

929 
thad_id_back_
 = 
g
;

930 i((
t
 = 
dbv
->
	`t_thad_id
(dbenv,

931 
g
 =0 ? 0 : 
_thad_id_r_c
)) != 0)

932 
	`DB_ERROR
(
this
, "DbEnv::t_thad_id", 
t
, 
	`r_picy
());

934  (
t
);

935 
	}
}

937 
DbEnv
::
t_thad_id_rg
(

938 *(*
g
)(
DbEnv
 *, 
pid_t
, 
db_thadid_t
, *))

940 
DB_ENV
 *
dbv
 = 
unwp
(
this
);

941 
t
;

943 
thad_id_rg_back_
 = 
g
;

944 i((
t
 = 
dbv
->
t_thad_id_rg
(dbenv,

945 
g
 =0 ? 0 : 
_thad_id_rg_r_c
)) != 0)

946 
DB_ERROR
(
this
, "DbEnv::t_thad_id_rg", 
t
,

947 
r_picy
());

949  (
t
);

952 
DbEnv
::
	$cdsgroup_beg
(
DbTxn
 **
tid
)

954 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

955 
DB_TXN
 *
txn
;

956 
t
;

958 
t
 = 
v
->
	`cdsgroup_beg
nv, &
txn
);

959 i(
	`DB_RETOK_STD
(
t
))

960 *
tid
 = 
w
 
	`DbTxn
(
txn
);

962 
	`DB_ERROR
(
this
, "DbEnv::cdsgroup_beg", 
t
, 
	`r_picy
());

964  (
t
);

965 
	}
}

967 
DbEnv
::
	$txn_beg
(
DbTxn
 *
pid
, DbTx**
tid
, 
u_t32_t
 
ags
)

969 
DB_ENV
 *
v
 = 
	`unwp
(
this
);

970 
DB_TXN
 *
txn
;

971 
t
;

973 
t
 = 
v
->
	`txn_beg
nv, 
	`unwp
(
pid
), &
txn
, 
ags
);

974 i(
	`DB_RETOK_STD
(
t
))

975 *
tid
 = 
w
 
	`DbTxn
(
txn
);

977 
	`DB_ERROR
(
this
, "DbEnv::txn_beg", 
t
, 
	`r_picy
());

979  (
t
);

980 
	}
}

982 
DBENV_METHOD
(
txn_checkpot
, (
u_t32_t
 
kby
, u_t32_
m
, u_t32_
ags
),

983 (
dbv
, 
kby
, 
m
, 
ags
))

985 
DbEnv
::
	$txn_cov
(
DbPi
 *
li
, 
cou
,

986 *

, 
u_t32_t
 
ags
)

988 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

989 
DB_PREPLIST
 *
c_li
;

990 
i
;

991 
t
;

998 i(
cou
 <= 0)

999 
t
 = 
EINVAL
;

1001 
t
 = 
	`__os_mloc
(
dbv
, (
DB_PREPLIST
* 
cou
,

1002 &
c_li
);

1004 i(
t
 != 0) {

1005 
	`DB_ERROR
(
this
, "DbEnv::txn_cov", 
t
, 
	`r_picy
());

1006  (
t
);

1009 i((
t
 =

1010 
dbv
->
	`txn_cov
(dbv, 
c_li
, 
cou
, 

, 
ags
)) != 0) {

1011 
	`__os_
(
dbv
, 
c_li
);

1012 
	`DB_ERROR
(
this
, "DbEnv::txn_cov", 
t
, 
	`r_picy
());

1013  (
t
);

1016 
i
 = 0; i < *

; i++) {

1017 
li
[
i
].
txn
 = 
w
 
	`DbTxn
();

1018 
li
[
i
].
txn
->
imp_
 = 
c_li
[i].txn;

1019 
	`memy
(
li
[
i
].
gid
, 
c_li
[i].gid,

1020 (
li
[
i
].
gid
));

1023 
	`__os_
(
dbv
, 
c_li
);

1026 
	}
}

1028 
DBENV_METHOD
(
txn_
, (
DB_TXN_STAT
 **
p
, 
u_t32_t
 
ags
),

1029 (
dbv
, 
p
, 
ags
))

1030 
DBENV_METHOD
(
txn__t
, (
u_t32_t
 
ags
), (
dbv
, flags))

1032 
DbEnv
::
p_t_t
(
myid
, (*
g
)(DbEnv *,

1033 cڡ 
Dbt
 *, cڡ Db*, cڡ 
DbL
 *, , 
u_t32_t
))

1035 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

1036 
t
;

1038 
p_nd_back_
 = 
g
;

1039 i((
t
 = 
dbv
->
	`p_t_t
(dbv, 
myid
,

1040 
g
 =0 ? 0 : 
_p_nd_r_c
)) != 0)

1041 
	`DB_ERROR
(
this
, "DbEnv::p_t_t", 
t
, 
	`r_picy
());

1043  (
t
);

1044 
	}
}

1046 
DBENV_METHOD
(
p_e
, (
nses
, 
nves
, 
u_t32_t
 
ags
),

1047 (
dbv
, 
nses
, 
nves
, 
ags
))

1048 
DBENV_METHOD
(
p_ush
, (), (
dbv
))

1049 
DBENV_METHOD
(
p_g_cfig
, (
u_t32_t
 
which
, *
of
),

1050 (
dbv
, 
which
, 
of
))

1051 
DBENV_METHOD
(
t_p_que
, (
u_t32_t
 
m
, u_t32_
max
), (
dbv
, min, max))

1053 
DbEnv
::
	$p_oss_mesge
(
Dbt
 *
cڌ
,

1054 
Dbt
 *
c
, 
id
, 
DbL
 *
t_lp
)

1056 
DB_ENV
 *
dbv
 = 
	`unwp
(
this
);

1057 
t
;

1059 
t
 = 
dbv
->
	`p_oss_mesge
(dbv, 
cڌ
, 
c
, 
id
, 
t_lp
);

1060 i(!
	`DB_RETOK_REPPMSG
(
t
))

1061 
	`DB_ERROR
(
this
, "DbEnv::p_oss_mesge", 
t
,

1062 
	`r_picy
());

1064  (
t
);

1065 
	}
}

1067 
DBENV_METHOD
(
p_t_cfig
,

1068 (
u_t32_t
 
which
, 
off
), (
dbv
, which, onoff))

1069 
DBENV_METHOD
(
p_t
,

1070 (
Dbt
 *
cook
, 
u_t32_t
 
ags
),

1071 (
dbv
, (
DBT
 *)
cook
, 
ags
))

1073 
DBENV_METHOD
(
p_
, (
DB_REP_STAT
 **
p
, 
u_t32_t
 
ags
),

1074 (
dbv
, 
p
, 
ags
))

1075 
DBENV_METHOD
(
p__t
, (
u_t32_t
 
ags
), (
dbv
, flags))

1076 
DBENV_METHOD
(
p_sync
, (
u_t32_t
 
ags
), (
dbv
, flags))

1078 
DBENV_METHOD
(
p_t_a
, (
u_t32_t
 
ock_s_
, u_t32_
ags
),

1079 (
dbv
, 
ock_s_
, 
ags
))

1080 
DBENV_METHOD
(
p_g_lim
, (
u_t32_t
 *
gby
, u_t32_*
by
),

1081 (
dbv
, 
gby
, 
by
))

1082 
DBENV_METHOD
(
p_t_lim
, (
u_t32_t
 
gbys
, u_t32_
bys
),

1083 (
dbv
, 
gbys
, 
bys
))

1087 
DBENV_METHOD
(
p_g_nses
, (*
n
), (
dbv
,))

1088 
DBENV_METHOD
(
p_t_nses
, (
n
), (
dbv
,))

1089 
DBENV_METHOD
(
p_g_iܙy
, (*
iܙy
),

1090 (
dbv
, 
iܙy
))

1091 
DBENV_METHOD
(
p_t_iܙy
, (
iܙy
),

1092 (
dbv
, 
iܙy
))

1093 
DBENV_METHOD
(
p_g_timeout
, (
which
, 
db_timeout_t
 * 
timeout
),

1094 (
dbv
, 
which
, 
timeout
))

1095 
DBENV_METHOD
(
p_t_timeout
, (
which
, 
db_timeout_t
 
timeout
),

1096 (
dbv
, 
which
, 
timeout
))

1097 
DBENV_METHOD
(
pmgr_add_me_se
, (cڡ * 
ho
, 
u_t16_t
 
pt
,

1098 * 
eidp
, 
u_t32_t
 
ags
), (
dbv
, 
ho
, 
pt
,idp, flags))

1099 
DBENV_METHOD
(
pmgr_g_ack_picy
, (*
picy
), (
dbv
,olicy))

1100 
DBENV_METHOD
(
pmgr_t_ack_picy
, (
picy
), (
dbv
,olicy))

1101 
DBENV_METHOD
(
pmgr_t_lol_se
, (cڡ * 
ho
, 
u_t16_t
 
pt
,

1102 
u_t32_t
 
ags
), (
dbv
, 
ho
, 
pt
, flags))

1103 
DBENV_METHOD
(
pmgr_se_li
, (
u_t
 *
coup
, 
DB_REPMGR_SITE
 **
lip
),

1104 (
dbv
, 
coup
, 
lip
))

1105 
DBENV_METHOD
(
pmgr_t
, (
hads
, 
u_t32_t
 
ags
),

1106 (
dbv
, 
hads
, 
ags
))

1107 
DBENV_METHOD
(
pmgr_
, (
DB_REPMGR_STAT
 **
p
, 
u_t32_t
 
ags
),

1108 (
dbv
, 
p
, 
ags
))

1109 
DBENV_METHOD
(
pmgr__t
, (
u_t32_t
 
ags
), (
dbv
, flags))

1113 
DBENV_METHOD
(
g_timeout
,

1114 (
db_timeout_t
 *
timeou
, 
u_t32_t
 
ags
),

1115 (
dbv
, 
timeou
, 
ags
))

1116 
DBENV_METHOD
(
t_timeout
,

1117 (
db_timeout_t
 
timeout
, 
u_t32_t
 
ags
),

1118 (
dbv
, 
timeout
, 
ags
))

1121 *
DbEnv
::
	$vsi
(*
maj
, *
m
, *
tch
)

1123  (
	`db_vsi
(
maj
, 
m
, 
tch
));

1124 
	}
}

1127 
DbEnv
 *DbEnv::
	$wp_DB_ENV
(
DB_ENV
 *
dbv
)

1129 
DbEnv
 *
wed_v
 = 
	`g_DbEnv
(
dbv
);

1130  (
wed_v
 !
NULL
? wed_v : 
w
 
	`DbEnv
(
dbv
, 0);

1131 
	}
}

	@../cxx/cxx_except.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

16 cڡ 
	gMAX_DESCRIPTION_LENGTH
 = 1024;

22 *
	$dupSg
(cڡ *
s
)

24 *
r
 = 
w
 [
	`
(
s
)+1];

25 
	`ry
(
r
, 
s
);

26  (
r
);

27 
	}
}

35 
	gDbExi
::~
	$DbExi
(
	$throw
()

37 
de
 [] 
wh_
;

38 
	}
}

40 
	gDbExi
::
	$DbExi
(
r
)

41 : 
	`r_
(
r
)

42 , 
	$v_
(0)

44 
	`desibe
(0, 0);

45 
	}
}

47 
	gDbExi
::
	$DbExi
(cڡ *
desti
)

48 : 
	`r_
(0)

49 , 
	$v_
(0)

51 
	`desibe
(0, 
desti
);

52 
	}
}

54 
	gDbExi
::
	$DbExi
(cڡ *
desti
, 
r
)

55 : 
	`r_
(
r
)

56 , 
	$v_
(0)

58 
	`desibe
(0, 
desti
);

59 
	}
}

61 
	gDbExi
::
	$DbExi
(cڡ *
efix
, cڡ *
desti
, 
r
)

62 : 
	`r_
(
r
)

63 , 
	$v_
(0)

65 
	`desibe
(
efix
, 
desti
);

66 
	}
}

68 
	gDbExi
::
	$DbExi
(cڡ 
DbExi
 &
th
)

69 : 
	`__DB_STD
(
exi
)()

70 , 
	`wh_
(
	`dupSg
(
th
.
wh_
))

71 , 
	`r_
(
th
.
r_
)

72 , 
	$v_
(0)

74 
	}
}

76 
	gDbExi
 &DbExi::
ݔ
 = (cڡ 
DbExi
 &
th
)

78 i(
this
 !&
th
) {

79 
r_
 = 
th
.err_;

80 
	gde
 [] 
	gwh_
;

81 
	gwh_
 = 
dupSg
(
th
.
wh_
);

83  (*
	gthis
);

86 
	gDbExi
::
	$desibe
(cڡ *
efix
, cڡ *
desti
)

88 *
msgbuf
, *
p
, *
d
;

90 
msgbuf
 = 
w
 [
MAX_DESCRIPTION_LENGTH
];

91 
p
 = 
msgbuf
;

92 
d
 = 
msgbuf
 + 
MAX_DESCRIPTION_LENGTH
 - 1;

94 i(
efix
 !
NULL
) {

95 
	`y
(
p
, 
efix
, (< 
d
) ?nd -: 0);

96 
p
 +
	`
(
efix
);

97 
	`y
(
p
, ": ", (< 
d
) ?nd -: 0);

98 
p
 += 2;

100 i(
desti
 !
NULL
) {

101 
	`y
(
p
, 
desti
, (< 
d
) ?nd -: 0);

102 
p
 +
	`
(
desti
);

103 i(
r_
 != 0) {

104 
	`y
(
p
, ": ", (< 
d
) ?nd -: 0);

105 
p
 += 2;

108 i(
r_
 != 0) {

109 
	`y
(
p
, 
	`db_
(
r_
), (< 
d
) ?nd -: 0);

110 
p
 +
	`
(
	`db_
(
r_
));

117 i(
p
 >
d
)

118 *
d
 = '\0';

120 
wh_
 = 
	`dupSg
(
msgbuf
);

121 
de
 [] 
msgbuf
;

122 
	}
}

124 
	gDbExi
::
	$g_o
() const

126  (
r_
);

127 
	}
}

129 cڡ *
	gDbExi
::
	$wh
(cڡ 
	$throw
()

131  (
wh_
);

132 
	}
}

134 
DbEnv
 *
	gDbExi
::
	$g_v
() const

136  
v_
;

137 
	}
}

139 
	gDbExi
::
	$t_v
(
DbEnv
 *
v
)

141 
v_

v
;

142 
	}
}

150 cڡ *
	gmemy_r_desc
 = "Dbtotargenough forvailable data";

151 
	gDbMemyExi
::~
	$DbMemyExi
(
	$throw
()

153 
	}
}

155 
DbMemyExi
::
	$DbMemyExi
(
Dbt
 *
dbt
)

156 : 
	`DbExi
(
memy_r_desc
, 
DB_BUFFER_SMALL
)

157 , 
	$dbt_
(
dbt
)

159 
	}
}

161 
	gDbMemyExi
::
	$DbMemyExi
(cڡ *
efix
, 
Dbt
 *
dbt
)

162 : 
	`DbExi
(
efix
, 
memy_r_desc
, 
DB_BUFFER_SMALL
)

163 , 
	$dbt_
(
dbt
)

165 
	}
}

167 
	gDbMemyExi
::
	$DbMemyExi
(cڡ 
DbMemyExi
 &
th
)

168 : 
	`DbExi
(
th
)

169 , 
	$dbt_
(
th
.
dbt_
)

171 
	}
}

173 
	gDbMemyExi


174 &
	gDbMemyExi
::
ݔ
 =(cڡ 
DbMemyExi
 &
th
)

176 i(
this
 !&
th
) {

177 
DbExi
::
ݔ
=(
th
);

178 
	gdbt_
 = 
th
.
dbt_
;

180  (*
	gthis
);

183 
Dbt
 *
	gDbMemyExi
::
	$g_dbt
() const

185  (
dbt_
);

186 
	}
}

194 
	gDbDdlockExi
::~
	$DbDdlockExi
(
	$throw
()

196 
	}
}

198 
DbDdlockExi
::
	$DbDdlockExi
(cڡ *
desti
)

199 : 
	$DbExi
(
desti
, 
DB_LOCK_DEADLOCK
)

201 
	}
}

203 
	gDbDdlockExi
::
	$DbDdlockExi
(cڡ 
DbDdlockExi
 &
th
)

204 : 
	$DbExi
(
th
)

206 
	}
}

208 
DbDdlockExi


209 &
DbDdlockExi
::
ݔ
 =(cڡ DbDdlockExi &
th
)

211 i(
this
 !&
th
)

212 
DbExi
::
ݔ
=(
th
);

213  (*
	gthis
);

222 
	gDbLockNGedExi
::~
	$DbLockNGedExi
(
	$throw
()

224 
de
 
lock_
;

225 
	}
}

227 
	gDbLockNGedExi
::
	$DbLockNGedExi
(cڡ *
efix
,

228 
db_lock_t
 

, 
db_lockmode_t
 
mode
, cڡ 
Dbt
 *
obj
, cڡ 
DbLock
 
lock
,

229 
dex
)

230 : 
	`DbExi
(
efix
, 
DbEnv
::
	`
(
DB_LOCK_NOTGRANTED
),

231 
DB_LOCK_NOTGRANTED
)

232 , 
	`_
(

)

233 , 
	`mode_
(
mode
)

234 , 
	`obj_
(
obj
)

235 , 
	`lock_
(
w
 
	`DbLock
(
lock
))

236 , 
	$dex_
(
dex
)

238 
	}
}

240 
	gDbLockNGedExi
::
	$DbLockNGedExi
(cڡ *
desti
)

241 : 
	`DbExi
(
desti
, 
DB_LOCK_NOTGRANTED
)

242 , 
	`_
(
DB_LOCK_GET
)

243 , 
	`mode_
(
DB_LOCK_NG
)

244 , 
	`obj_
(
NULL
)

245 , 
	`lock_
(
NULL
)

246 , 
	$dex_
(0)

248 
	}
}

250 
	gDbLockNGedExi
::
DbLockNGedExi


251 (cڡ 
DbLockNGedExi
 &
th
)

252 : 
	$DbExi
(
th
)

254 
_
 = 
th
.op_;

255 
mode_
 = 
th
.mode_;

256 
obj_
 = 
th
.obj_;

257 
lock_
 = (
th
.lock_ !
NULL
? 
w
 
	`DbLock
(*that.lock_) : NULL;

258 
dex_
 = 
th
.index_;

259 
	}
}

261 
	gDbLockNGedExi


262 &
	gDbLockNGedExi
::
ݔ
 =(cڡ 
DbLockNGedExi
 &
th
)

264 i(
this
 !&
th
) {

265 
DbExi
::
ݔ
=(
th
);

266 
	g_
 = 
th
.
_
;

267 
	gmode_
 = 
th
.
mode_
;

268 
	gobj_
 = 
th
.
obj_
;

269 
	glock_
 = (
th
.
lock_
 !
NULL
? 
w
 
DbLock
(*that.lock_) : NULL;

270 
	gdex_
 = 
th
.
dex_
;

272  (*
	gthis
);

275 
db_lock_t
 
	gDbLockNGedExi
::
	$g_
() const

277  
_
;

278 
	}
}

280 
db_lockmode_t
 
	gDbLockNGedExi
::
	$g_mode
() const

282  
mode_
;

283 
	}
}

285 cڡ 
Dbt
* 
	gDbLockNGedExi
::
	$g_obj
() const

287  
obj_
;

288 
	}
}

290 
DbLock
* 
	gDbLockNGedExi
::
	$g_lock
() const

292  
lock_
;

293 
	}
}

295 
	gDbLockNGedExi
::
	$g_dex
() const

297  
dex_
;

298 
	}
}

306 
	gDbRHdDdExi
::~
	$DbRHdDdExi
(
	$throw
()

308 
	}
}

310 
DbRHdDdExi
::
	$DbRHdDdExi
(cڡ *
desti
)

311 : 
	$DbExi
(
desti
, 
DB_REP_HANDLE_DEAD
)

313 
	}
}

315 
	gDbRHdDdExi
::
DbRHdDdExi


316 (cڡ 
DbRHdDdExi
 &
th
)

317 : 
	$DbExi
(
th
)

319 
	}
}

321 
DbRHdDdExi


322 &
DbRHdDdExi
::
ݔ
 =(cڡ DbRHdDdExi &
th
)

324 i(
this
 !&
th
)

325 
DbExi
::
ݔ
=(
th
);

326  (*
	gthis
);

335 
	gDbRunRecovyExi
::~
	$DbRunRecovyExi
(
	$throw
()

337 
	}
}

339 
DbRunRecovyExi
::
	$DbRunRecovyExi
(cڡ *
desti
)

340 : 
	$DbExi
(
desti
, 
DB_RUNRECOVERY
)

342 
	}
}

344 
	gDbRunRecovyExi
::
DbRunRecovyExi


345 (cڡ 
DbRunRecovyExi
 &
th
)

346 : 
	$DbExi
(
th
)

348 
	}
}

350 
DbRunRecovyExi


351 &
DbRunRecovyExi
::
ݔ
 =(cڡ DbRunRecovyExi &
th
)

353 i(
this
 !&
th
)

354 
DbExi
::
ݔ
=(
th
);

355  (*
	gthis
);

	@../cxx/cxx_lock.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

22 
	gDbLock
::
	$DbLock
(
DB_LOCK
 
vue
)

23 : 
	$lock_
(
vue
)

25 
	}
}

27 
DbLock
::
	$DbLock
()

29 
	`memt
(&
lock_
, 0, (
DB_LOCK
));

30 
	}
}

32 
	gDbLock
::
	$DbLock
(cڡ 
DbLock
 &
th
)

33 : 
	$lock_
(
th
.
lock_
)

35 
	}
}

37 
DbLock
 &DbLock::
ݔ
 = (cڡ DbLock &
th
)

39 
lock_
 = 
th
.lock_;

40  (*
	gthis
);

	@../cxx/cxx_logc.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

16 
	~"dbc/db_ge.h
"

17 
	~"dbc_auto/db_auto.h
"

18 
	~"dbc_auto/d_auto.h
"

19 
	~"dbc/db_dich.h
"

20 
	~"dbc_auto/db_ext.h
"

21 
	~"dbc_auto/comm_ext.h
"

26 
	gDbLogc
::~
	$DbLogc
()

28 
	}
}

31 
DbLogc
::
	$o
(
u_t32_t
 
_ags
)

33 
DB_LOGC
 *
logc
 = 
this
;

34 
t
;

35 
DbEnv
 *
dbv2
 = DbEnv::
	`g_DbEnv
(
logc
->
dbv
);

37 
t
 = 
logc
->
	`o
ogc, 
_ags
);

39 i(!
	`DB_RETOK_STD
(
t
))

40 
	`DB_ERROR
(
dbv2
, "DbLogc::o", 
t
, 
ON_ERROR_UNKNOWN
);

42  (
t
);

43 
	}
}

46 
	gDbLogc
::
	$g
(
DbL
 *
g_l
, 
Dbt
 *
da
, 
u_t32_t
 
_ags
)

48 
DB_LOGC
 *
logc
 = 
this
;

49 
t
;

51 
t
 = 
logc
->
	`g
ogc, 
g_l
, 
da
, 
_ags
);

53 i(!
	`DB_RETOK_LGGET
(
t
)) {

54 i(
t
 =
DB_BUFFER_SMALL
)

55 
	`DB_ERROR_DBT
(
DbEnv
::
	`g_DbEnv
(
logc
->
dbv
),

56 "DbLogc::g", 
da
, 
ON_ERROR_UNKNOWN
);

58 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
logc
->
dbv
),

59 "DbLogc::g", 
t
, 
ON_ERROR_UNKNOWN
);

62  (
t
);

63 
	}
}

66 
	gDbLogc
::
	$vsi
(
u_t32_t
 *
vsip
, u_t32_
_ags
)

68 
DB_LOGC
 *
logc
 = 
this
;

69 
t
;

71 
t
 = 
logc
->
	`vsi
ogc, 
vsip
, 
_ags
);

73 i(!
	`DB_RETOK_LGGET
(
t
))

74 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
logc
->
dbv
),

75 "DbLogc::vsi", 
t
, 
ON_ERROR_UNKNOWN
);

77  (
t
);

78 
	}
}

	@../cxx/cxx_mpool.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

22 
	#DB_MPOOLFILE_METHOD
(
_me
, 
_gec
, 
_gli
, 
_tok
) \

23 
DbMpoFe
::
_me
 
_gec
 \

25 
t
; \

26 
DB_MPOOLFILE
 *
mpf
 = 
	`unwp
(
this
); \

28 i(
mpf
 =
NULL
) \

29 
t
 = 
EINVAL
; \

31 
t
 = 
mpf
->
_me
 
_gli
; \

32 i(!
	`_tok
(
t
)) \

33 
	`DB_ERROR
(
DbEnv
::
	`g_DbEnv
(
mpf
->
dbv
), \

34 "DbMpoFe::"#_me, 
t
, 
ON_ERROR_UNKNOWN
); \

35  (
t
); \

36 }

	)

38 
	#DB_MPOOLFILE_METHOD_VOID
(
_me
, 
_gec
, 
_gli
) \

39 
DbMpoFe
::
_me
 
_gec
 \

41 
DB_MPOOLFILE
 *
mpf
 = 
	`unwp
(
this
); \

43 
mpf
->
_me
 
_gli
; \

44 }

	)

52 
	gDbMpoFe
::
	$DbMpoFe
()

53 : 
	$imp_
(0)

55 
	}
}

57 
DbMpoFe
::~
	$DbMpoFe
()

59 
	}
}

61 
DbMpoFe
::
	$o
(
u_t32_t
 
ags
)

63 
DB_MPOOLFILE
 *
mpf
 = 
	`unwp
(
this
);

64 
t
;

65 
DbEnv
 *
dbv
 = DbEnv::
	`g_DbEnv
(
mpf
->dbenv);

67 i(
mpf
 =
NULL
)

68 
t
 = 
EINVAL
;

70 
t
 = 
mpf
->
	`o
(mpf, 
ags
);

72 
imp_
 = 0;

76 
de
 
this
;

78 i(!
	`DB_RETOK_STD
(
t
))

79 
	`DB_ERROR
(
dbv
, "DbMpoFe::o", 
t
, 
ON_ERROR_UNKNOWN
);

81  (
t
);

82 
	}
}

84 
DB_MPOOLFILE_METHOD
(
g
,

85 (
db_pgno_t
 *
pgnddr
, 
DbTxn
 *
txn
, 
u_t32_t
 
ags
, *
g
),

86 (
mpf
, 
pgnddr
, 
unwp
(
txn
), 
ags
, 
g
), 
DB_RETOK_MPGET
)

87 
DB_MPOOLFILE_METHOD
(
ݒ
,

88 (cڡ *
fe
, 
u_t32_t
 
ags
, 
mode
, 
size_t
 
gesize
),

89 (
mpf
, 
fe
, 
ags
, 
mode
, 
gesize
), 
DB_RETOK_STD
)

90 
DB_MPOOLFILE_METHOD
(
put
,

91 (*
pgaddr
, 
DB_CACHE_PRIORITY
 
iܙy
, 
u_t32_t
 
ags
),

92 (
mpf
, 
pgaddr
, 
iܙy
, 
ags
), 
DB_RETOK_STD
)

93 
DB_MPOOLFILE_METHOD
(
g_r_n
, (
u_t32_t
 *

),

94 (
mpf
, 

), 
DB_RETOK_STD
)

95 
DB_MPOOLFILE_METHOD
(
t_r_n
, (
u_t32_t
 
n
),

96 (
mpf
, 
n
), 
DB_RETOK_STD
)

97 
DB_MPOOLFILE_METHOD
(
g_feid
, (
u_t8_t
 *
feid
),

98 (
mpf
, 
feid
), 
DB_RETOK_STD
)

99 
DB_MPOOLFILE_METHOD
(
t_feid
, (
u_t8_t
 *
feid
),

100 (
mpf
, 
feid
), 
DB_RETOK_STD
)

101 
DB_MPOOLFILE_METHOD
(
g_ags
, (
u_t32_t
 *
ag
),

102 (
mpf
, 
ag
), 
DB_RETOK_STD
)

103 
DB_MPOOLFILE_METHOD
(
t_ags
, (
u_t32_t
 
ags
, 
off
),

104 (
mpf
, 
ags
, 
off
), 
DB_RETOK_STD
)

105 
DB_MPOOLFILE_METHOD
(
g_y
, (*
yp
),

106 (
mpf
, 
yp
), 
DB_RETOK_STD
)

107 
DB_MPOOLFILE_METHOD
(
t_y
, (
y
),

108 (
mpf
, 
y
), 
DB_RETOK_STD
)

109 
DB_MPOOLFILE_METHOD
(
g_ϡ_pgno
, (
db_pgno_t
 *
pgn
),

110 (
mpf
, 
pgn
), 
DB_RETOK_STD
)

111 
DB_MPOOLFILE_METHOD
(
g_l_offt
, (
t32_t
 *
off
),

112 (
mpf
, 
off
), 
DB_RETOK_STD
)

113 
DB_MPOOLFILE_METHOD
(
t_l_offt
, (
t32_t
 
offt
),

114 (
mpf
, 
offt
), 
DB_RETOK_STD
)

115 
DB_MPOOLFILE_METHOD
(
g_maxsize
, (
u_t32_t
 *
gby
, u_t32_*
by
),

116 (
mpf
, 
gby
, 
by
), 
DB_RETOK_STD
)

117 
DB_MPOOLFILE_METHOD
(
t_maxsize
, (
u_t32_t
 
gbys
, u_t32_
bys
),

118 (
mpf
, 
gbys
, 
bys
), 
DB_RETOK_STD
)

119 
DB_MPOOLFILE_METHOD
(
g_pgcook
, (
DBT
 *
dbt
),

120 (
mpf
, 
dbt
), 
DB_RETOK_STD
)

121 
DB_MPOOLFILE_METHOD
(
t_pgcook
, (
DBT
 *
dbt
),

122 (
mpf
, 
dbt
), 
DB_RETOK_STD
)

123 
DB_MPOOLFILE_METHOD
(
g_iܙy
, (
DB_CACHE_PRIORITY
 *
iܙyp
),

124 (
mpf
, 
iܙyp
), 
DB_RETOK_STD
)

125 
DB_MPOOLFILE_METHOD
(
t_iܙy
, (
DB_CACHE_PRIORITY
 
iܙy
),

126 (
mpf
, 
iܙy
), 
DB_RETOK_STD
)

127 
DB_MPOOLFILE_METHOD
(
sync
, (),

128 (
mpf
), 
DB_RETOK_STD
)

	@../cxx/cxx_multi.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

15 
	gDbMuɝIt
::
	$DbMuɝIt
(cڡ 
Dbt
 &
dbt
)

16 : 
	`da_
((
u_t8_t
*)
dbt
.
	`g_da
()),

17 
	`p_
((
u_t32_t
*)(
da_
 + 
dbt
.
	`g_un
() - (u_int32_t)))

19 
	}
}

21 
bo
 
	gDbMuɝDaIt
::
	$xt
(
Dbt
 &
da
)

23 i(*
p_
 =(
u_t32_t
)-1) {

24 
da
.
	`t_da
(0);

25 
da
.
	`t_size
(0);

26 
p_
 = 0;

28 
da
.
	`t_da
(
da_
 + *
p_
--);

29 
da
.
	`t_size
(*
p_
--);

30 i(
da
.
	`g_size
(=0 && da.
	`g_da
(=
da_
)

31 
da
.
	`t_da
(0);

33  (
p_
 != 0);

34 
	}
}

36 
bo
 
	gDbMuɝKeyDaIt
::
	$xt
(
Dbt
 &
key
, Db&
da
)

38 i(*
p_
 =(
u_t32_t
)-1) {

39 
key
.
	`t_da
(0);

40 
key
.
	`t_size
(0);

41 
da
.
	`t_da
(0);

42 
da
.
	`t_size
(0);

43 
p_
 = 0;

45 
key
.
	`t_da
(
da_
 + *
p_
--);

46 
key
.
	`t_size
(*
p_
--);

47 
da
.
	`t_da
(
da_
 + *
p_
--);

48 
da
.
	`t_size
(*
p_
--);

50  (
p_
 != 0);

51 
	}
}

53 
bo
 
	gDbMuɝReoDaIt
::
	$xt
(
db_o_t
 &
o
, 
Dbt
 &
da
)

55 i(*
p_
 =(
u_t32_t
)0) {

56 
o
 = 0;

57 
da
.
	`t_da
(0);

58 
da
.
	`t_size
(0);

59 
p_
 = 0;

61 
o
 = *
p_
--;

62 
da
.
	`t_da
(
da_
 + *
p_
--);

63 
da
.
	`t_size
(*
p_
--);

65  (
p_
 != 0);

66 
	}
}

	@../cxx/cxx_seq.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

22 
	#DBSEQ_METHOD
(
_me
, 
_gec
, 
_gli
, 
_deru
) \

23 
DbSequ
::
_me
 
_gec
 \

25 
t
; \

26 
DB_SEQUENCE
 *
q
 = 
	`unwp
(
this
); \

27 
DbEnv
 *
dbv
 = DbEnv::
	`g_DbEnv
(
q
->
q_dbp
->dbenv); \

29 
t
 = 
q
->
_me
 
_gli
; \

30 i(
_deru
) \

31 
imp_
 = 0; \

32 i(!
	`DB_RETOK_STD
(
t
)) \

33 
	`DB_ERROR
(
dbv
, \

34 "DbSequ::" #_me, 
t
, 
ON_ERROR_UNKNOWN
); \

35  (
t
); \

36 }

	)

38 
	gDbSequ
::
	$DbSequ
(
Db
 *
db
, 
u_t32_t
 
ags
)

39 : 
	$imp_
(0)

41 
DB_SEQUENCE
 *
q
;

42 
t
;

44 i((
t
 = 
	`db_qu_
(&
q
, 
	`unwp
(
db
), 
ags
)) != 0)

45 
	`DB_ERROR
(
db
->
	`g_v
(), "DbSequ::DbSequ", 
t
,

46 
ON_ERROR_UNKNOWN
);

48 
imp_
 = 
q
;

49 
q
->
i_
 = 
this
;

51 
	}
}

53 
	gDbSequ
::
	$DbSequ
(
DB_SEQUENCE
 *
q
)

54 : 
	$imp_
(
q
)

56 
q
->
i_
 = 
this
;

57 
	}
}

59 
	gDbSequ
::~
	$DbSequ
()

61 
DB_SEQUENCE
 *
q
;

63 
q
 = 
	`unwp
(
this
);

64 i(
q
 !
NULL
)

65 ()
q
->
	`o
(seq, 0);

66 
	}
}

68 
DBSEQ_METHOD
(
ݒ
, (
DbTxn
 *
txnid
, 
Dbt
 *
key
, 
u_t32_t
 
ags
),

69 (
q
, 
unwp
(
txnid
), 
key
, 
ags
), 0)

70 
DBSEQ_METHOD
(
l_vue
, (
db_q_t
 
vue
), (
q
, value), 0)

71 
DBSEQ_METHOD
(
o
, (
u_t32_t
 
ags
), (
q
, flags), 1)

72 
DBSEQ_METHOD
(
move
, (
DbTxn
 *
txnid
, 
u_t32_t
 
ags
),

73 (
q
, 
unwp
(
txnid
), 
ags
), 1)

74 
DBSEQ_METHOD
(

, (
DB_SEQUENCE_STAT
 **

, 
u_t32_t
 
ags
),

75 (
q
, 

, 
ags
), 0)

76 
DBSEQ_METHOD
(
_t
, (
u_t32_t
 
ags
), (
q
, flags), 0)

78 
DBSEQ_METHOD
(
g
,

79 (
DbTxn
 *
txnid
, 
t32_t
 
d
, 
db_q_t
 *

, 
u_t32_t
 
ags
),

80 (
q
, 
unwp
(
txnid
), 
d
, 

, 
ags
), 0)

81 
DBSEQ_METHOD
(
g_chesize
, (
t32_t
 *
siz
), (
q
, sizep), 0)

82 
DBSEQ_METHOD
(
t_chesize
, (
t32_t
 
size
), (
q
, size), 0)

83 
DBSEQ_METHOD
(
g_ags
, (
u_t32_t
 *
ag
), (
q
, flagsp), 0)

84 
DBSEQ_METHOD
(
t_ags
, (
u_t32_t
 
ags
), (
q
, flags), 0)

85 
DBSEQ_METHOD
(
g_nge
, (
db_q_t
 *
mp
, db_q_*
maxp
), (
q
, minp, maxp), 0)

86 
DBSEQ_METHOD
(
t_nge
, (
db_q_t
 
m
, db_q_
max
), (
q
, min, max), 0)

88 
Db
 *
	gDbSequ
::
	$g_db
()

90 
DB_SEQUENCE
 *
q
 = 
	`unwp
(
this
);

91 
DB
 *
db
;

92 ()
q
->
	`g_db
(q, &
db
);

93  
Db
::
	`g_Db
(
db
);

94 
	}
}

96 
Dbt
 *
	gDbSequ
::
	$g_key
()

98 
DB_SEQUENCE
 *
q
 = 
	`unwp
(
this
);

99 
	`memt
(&
key_
, 0, (
DBT
));

100 ()
q
->
	`g_key
(q, &
key_
);

101  
Dbt
::
	`g_Dbt
(&
key_
);

102 
	}
}

105 
DbSequ
 *
	gDbSequ
::
	$wp_DB_SEQUENCE
(
DB_SEQUENCE
 *
q
)

107 
DbSequ
 *
wed_q
 = 
	`g_DbSequ
(
q
);

108  (
wed_q
 !
NULL
? wed_q : 
w
 
	`DbSequ
(
q
);

109 
	}
}

	@../cxx/cxx_txn.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"db_cxx.h
"

14 
	~"dbc/cxx_t.h
"

16 
	~"dbc/txn.h
"

24 
	#DBTXN_METHOD
(
_me
, 
_de
, 
_gec
, 
_gli
) \

25 
DbTxn
::
_me
 
_gec
 \

27 
t
; \

28 
DB_TXN
 *
txn
 = 
	`unwp
(
this
); \

29 
DbEnv
 *
dbv
 = DbEnv::
	`g_DbEnv
(
txn
->
mg
->dbenv); \

31 
t
 = 
txn
->
_me
 
_gli
; \

33 i(
_de
) \

34 
de
 
this
; \

35 i(!
	`DB_RETOK_STD
(
t
)) \

36 
	`DB_ERROR
(
dbv
, "DbTxn::" #_me, 
t
, 
ON_ERROR_UNKNOWN
); \

37  (
t
); \

38 }

	)

41 
	gDbTxn
::
	$DbTxn
()

42 : 
	$imp_
(0)

44 
	}
}

46 
DbTxn
::
	$DbTxn
(
DB_TXN
 *
txn
)

47 : 
	$imp_
(
txn
)

49 
txn
->
i_
 = 
this
;

50 
	}
}

52 
	gDbTxn
::~
	$DbTxn
()

54 
	}
}

56 
DBTXN_METHOD
(
abt
, 1, (), (
txn
))

57 
DBTXN_METHOD
(
comm
, 1, (
u_t32_t
 
ags
), (
txn
, flags))

58 
DBTXN_METHOD
(
disrd
, 1, (
u_t32_t
 
ags
), (
txn
, flags))

60 
u_t32_t
 
	gDbTxn
::
	$id
()

62 
DB_TXN
 *
txn
;

64 
txn
 = 
	`unwp
(
this
);

65  (
txn
->
	`id
(txn));

66 
	}
}

68 
DBTXN_METHOD
(
g_me
, 0, (cڡ **
m
), (
txn
,amep))

69 
DBTXN_METHOD
(
e
, 0, (
u_t8_t
 *
gid
), (
txn
, gid))

70 
DBTXN_METHOD
(
t_me
, 0, (cڡ *
me
), (
txn
,ame))

71 
DBTXN_METHOD
(
t_timeout
, 0, (
db_timeout_t
 
timeout
, 
u_t32_t
 
ags
),

72 (
txn
, 
timeout
, 
ags
))

75 
DbTxn
 *
	gDbTxn
::
	$wp_DB_TXN
(
DB_TXN
 *
txn
)

77 
DbTxn
 *
wed_txn
 = 
	`g_DbTxn
(
txn
);

78  (
wed_txn
 !
NULL
? wed_tx: 
w
 
	`DbTxn
(
txn
);

79 
	}
}

	@../db/crdel_auto.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/log.h
"

11 
	~"dbc/txn.h
"

18 
	$__d_masub_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
ge
, 
l
)

19 
DB
 *
dbp
;

20 
DB_TXN
 *
tx
;

21 
DB_LSN
 *
t_lp
;

22 
u_t32_t
 
ags
;

23 
db_pgno_t
 
pgno
;

24 cڡ 
DBT
 *
ge
;

25 
DB_LSN
 * 
l
;

27 
DBT
 
logc
;

28 
DB_ENV
 *
dbv
;

29 
DB_TXNLOGREC
 *

;

30 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

31 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

32 
u_t
 
ad
;

33 
u_t8_t
 *
bp
;

34 
is_dub
, 
t
;

36 
dbv
 = 
dbp
->dbenv;

37 
	`COMPQUIET
(

, 
NULL
);

39 
y
 = 
DB___d_masub
;

40 
ad
 = 0;

41 
p
 = 
t_lp
;

43 
t
 = 0;

45 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

46 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

47 i(
tx
 =
NULL
)

49 
is_dub
 = 0;

51 
is_dub
 = 1;

53 i(
tx
 =
NULL
) {

54 
txn_num
 = 0;

55 
lp
 = &
nu_l
;

56 
nu_l
.
fe
 =u_l.
offt
 = 0;

58 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

59 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

60  (
t
);

67 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

68 
txn_num
 = 
tx
->
txnid
;

71 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

72 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

73 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

74  (
t
);

76 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

77 + (
u_t32_t
)

78 + (
u_t32_t
)

79 + (
u_t32_t
+ (
ge
 =
NULL
 ? 0 :age->
size
)

80 + (*
l
);

81 i(
	`CRYPTO_ON
(
dbv
)) {

82 
ad
 =

83 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

84 
logc
.
size
 +
ad
;

87 i(
is_dub
 || 
tx
 =
NULL
) {

88 i((
t
 =

89 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

90  (
t
);

92 i((
t
 = 
	`__os_mloc
(
dbv
,

93 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

94  (
t
);

95 #ifde
DIAGNOSTIC


96 i((
t
 =

97 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

98 
	`__os_
(
dbv
, 

);

99  (
t
);

102 
logc
.
da
 = 

->data;

105 i(
ad
 > 0)

106 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

108 
bp
 = 
logc
.
da
;

110 
	`memy
(
bp
, &
y
, (rectype));

111 
bp
 +(
y
);

113 
	`memy
(
bp
, &
txn_num
, (txn_num));

114 
bp
 +(
txn_num
);

116 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

117 
bp
 +(
DB_LSN
);

119 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

120 
	`memy
(
bp
, &
ump
, (uinttmp));

121 
bp
 +(
ump
);

123 
ump
 = (
u_t32_t
)
pgno
;

124 
	`memy
(
bp
, &
ump
, (uinttmp));

125 
bp
 +(
ump
);

127 i(
ge
 =
NULL
) {

128 
zo
 = 0;

129 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

130 
bp
 +(
u_t32_t
);

132 
	`memy
(
bp
, &
ge
->
size
, (page->size));

133 
bp
 +(
ge
->
size
);

134 
	`memy
(
bp
, 
ge
->
da
,age->
size
);

135 
bp
 +
ge
->
size
;

138 i(
l
 !
NULL
) {

139 i(
tx
 !
NULL
) {

140 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

141 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

142 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

143  (
t
);

145 
	`memy
(
bp
, 
l
, (*lsn));

147 
	`memt
(
bp
, 0, (*
l
));

148 
bp
 +(*
l
);

150 
	`DB_ASSERT
(
dbv
,

151 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

153 i(
is_dub
 || 
tx
 =
NULL
) {

154 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

155 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

156 *
lp
 = *
p
;

157 i(
p
 !
t_lp
)

158 *
t_lp
 = *
p
;

161 
t
 = 0;

162 #ifde
DIAGNOSTIC


167 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

168 
y
 |
DB_debug_FLAG
;

169 
	`memy
(
logc
.
da
, &
y
, (rectype));

171 i(!
	`IS_REP_CLIENT
(
dbv
))

172 
t
 = 
	`__log_put
(
dbv
,

173 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

175 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

176 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

177 
	`LSN_NOT_LOGGED
(*
t_lp
);

180 #ifde
LOG_DIAGNOSTIC


181 i(
t
 != 0)

182 ()
	`__d_masub_t
(
dbv
,

183 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

186 #ifde
DIAGNOSTIC


187 
	`__os_
(
dbv
, 
logc
.
da
);

189 i(
is_dub
 || 
tx
 =
NULL
)

190 
	`__os_
(
dbv
, 
logc
.
da
);

192  (
t
);

193 
	}
}

200 
	$__d_masub_ad
(
dbv
, 
cbuf
, 
g
)

201 
DB_ENV
 *
dbv
;

202 *
cbuf
;

203 
__d_masub_gs
 **
g
;

205 
__d_masub_gs
 *
gp
;

206 
u_t32_t
 
ump
;

207 
u_t8_t
 *
bp
;

208 
t
;

210 i((
t
 = 
	`__os_mloc
(
dbv
,

211 (
__d_masub_gs
+ (
DB_TXN
), &
gp
)) != 0)

212  (
t
);

213 
bp
 = 
cbuf
;

214 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

215 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

217 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

218 
bp
 +(
gp
->
ty
);

220 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

221 
bp
 +(
gp
->
tx
->
txnid
);

223 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

224 
bp
 +(
DB_LSN
);

226 
	`memy
(&
ump
, 
bp
, (uinttmp));

227 
gp
->
feid
 = (
t32_t
)
ump
;

228 
bp
 +(
ump
);

230 
	`memy
(&
ump
, 
bp
, (uinttmp));

231 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

232 
bp
 +(
ump
);

234 
	`memt
(&
gp
->
ge
, 0, (argp->page));

235 
	`memy
(&
gp
->
ge
.
size
, 
bp
, (
u_t32_t
));

236 
bp
 +(
u_t32_t
);

237 
gp
->
ge
.
da
 = 
bp
;

238 
bp
 +
gp
->
ge
.
size
;

240 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

241 
bp
 +(
gp
->
l
);

243 *
g
 = 
gp
;

245 
	}
}

253 
	$__d_mem__log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

254 
feid
, 
me
, 
fid
, 
pgsize
)

255 
DB_ENV
 *
dbv
;

256 
DB_TXN
 *
tx
;

257 
DB_LSN
 *
t_lp
;

258 
u_t32_t
 
ags
;

259 
t32_t
 
feid
;

260 cڡ 
DBT
 *
me
;

261 cڡ 
DBT
 *
fid
;

262 
u_t32_t
 
pgsize
;

264 
DBT
 
logc
;

265 
DB_TXNLOGREC
 *

;

266 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

267 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

268 
u_t
 
ad
;

269 
u_t8_t
 *
bp
;

270 
is_dub
, 
t
;

272 
	`COMPQUIET
(

, 
NULL
);

274 
y
 = 
DB___d_mem_
;

275 
ad
 = 0;

276 
p
 = 
t_lp
;

278 
t
 = 0;

280 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

281 i(
tx
 =
NULL
)

283 i(
tx
 =
NULL
)

285 
is_dub
 = 0;

287 
is_dub
 = 1;

289 i(
tx
 =
NULL
) {

290 
txn_num
 = 0;

291 
lp
 = &
nu_l
;

292 
nu_l
.
fe
 =u_l.
offt
 = 0;

294 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

295 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

296  (
t
);

303 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

304 
txn_num
 = 
tx
->
txnid
;

307 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

308 + (
u_t32_t
)

309 + (
u_t32_t
+ (
me
 =
NULL
 ? 0 :ame->
size
)

310 + (
u_t32_t
+ (
fid
 =
NULL
 ? 0 : fid->
size
)

311 + (
u_t32_t
);

312 i(
	`CRYPTO_ON
(
dbv
)) {

313 
ad
 =

314 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

315 
logc
.
size
 +
ad
;

318 i(
is_dub
 || 
tx
 =
NULL
) {

319 i((
t
 =

320 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

321  (
t
);

323 i((
t
 = 
	`__os_mloc
(
dbv
,

324 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

325  (
t
);

326 #ifde
DIAGNOSTIC


327 i((
t
 =

328 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

329 
	`__os_
(
dbv
, 

);

330  (
t
);

333 
logc
.
da
 = 

->data;

336 i(
ad
 > 0)

337 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

339 
bp
 = 
logc
.
da
;

341 
	`memy
(
bp
, &
y
, (rectype));

342 
bp
 +(
y
);

344 
	`memy
(
bp
, &
txn_num
, (txn_num));

345 
bp
 +(
txn_num
);

347 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

348 
bp
 +(
DB_LSN
);

350 
ump
 = (
u_t32_t
)
feid
;

351 
	`memy
(
bp
, &
ump
, (uinttmp));

352 
bp
 +(
ump
);

354 i(
me
 =
NULL
) {

355 
zo
 = 0;

356 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

357 
bp
 +(
u_t32_t
);

359 
	`memy
(
bp
, &
me
->
size
, (name->size));

360 
bp
 +(
me
->
size
);

361 
	`memy
(
bp
, 
me
->
da
,ame->
size
);

362 
bp
 +
me
->
size
;

365 i(
fid
 =
NULL
) {

366 
zo
 = 0;

367 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

368 
bp
 +(
u_t32_t
);

370 
	`memy
(
bp
, &
fid
->
size
, (fid->size));

371 
bp
 +(
fid
->
size
);

372 
	`memy
(
bp
, 
fid
->
da
, fid->
size
);

373 
bp
 +
fid
->
size
;

376 
ump
 = (
u_t32_t
)
pgsize
;

377 
	`memy
(
bp
, &
ump
, (uinttmp));

378 
bp
 +(
ump
);

380 
	`DB_ASSERT
(
dbv
,

381 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

383 i(
is_dub
 || 
tx
 =
NULL
) {

384 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

385 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

386 *
lp
 = *
p
;

387 i(
p
 !
t_lp
)

388 *
t_lp
 = *
p
;

391 
t
 = 0;

392 #ifde
DIAGNOSTIC


397 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

398 
y
 |
DB_debug_FLAG
;

399 
	`memy
(
logc
.
da
, &
y
, (rectype));

401 i(!
	`IS_REP_CLIENT
(
dbv
))

402 
t
 = 
	`__log_put
(
dbv
,

403 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

405 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

406 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

407 
	`LSN_NOT_LOGGED
(*
t_lp
);

410 #ifde
LOG_DIAGNOSTIC


411 i(
t
 != 0)

412 ()
	`__d_mem__t
(
dbv
,

413 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

416 #ifde
DIAGNOSTIC


417 
	`__os_
(
dbv
, 
logc
.
da
);

419 i(
is_dub
 || 
tx
 =
NULL
)

420 
	`__os_
(
dbv
, 
logc
.
da
);

422  (
t
);

423 
	}
}

430 
	$__d_mem__ad
(
dbv
, 
cbuf
, 
g
)

431 
DB_ENV
 *
dbv
;

432 *
cbuf
;

433 
__d_mem__gs
 **
g
;

435 
__d_mem__gs
 *
gp
;

436 
u_t32_t
 
ump
;

437 
u_t8_t
 *
bp
;

438 
t
;

440 i((
t
 = 
	`__os_mloc
(
dbv
,

441 (
__d_mem__gs
+ (
DB_TXN
), &
gp
)) != 0)

442  (
t
);

443 
bp
 = 
cbuf
;

444 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

445 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

447 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

448 
bp
 +(
gp
->
ty
);

450 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

451 
bp
 +(
gp
->
tx
->
txnid
);

453 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

454 
bp
 +(
DB_LSN
);

456 
	`memy
(&
ump
, 
bp
, (uinttmp));

457 
gp
->
feid
 = (
t32_t
)
ump
;

458 
bp
 +(
ump
);

460 
	`memt
(&
gp
->
me
, 0, (argp->name));

461 
	`memy
(&
gp
->
me
.
size
, 
bp
, (
u_t32_t
));

462 
bp
 +(
u_t32_t
);

463 
gp
->
me
.
da
 = 
bp
;

464 
bp
 +
gp
->
me
.
size
;

466 
	`memt
(&
gp
->
fid
, 0, (argp->fid));

467 
	`memy
(&
gp
->
fid
.
size
, 
bp
, (
u_t32_t
));

468 
bp
 +(
u_t32_t
);

469 
gp
->
fid
.
da
 = 
bp
;

470 
bp
 +
gp
->
fid
.
size
;

472 
	`memy
(&
ump
, 
bp
, (uinttmp));

473 
gp
->
pgsize
 = (
u_t32_t
)
ump
;

474 
bp
 +(
ump
);

476 *
g
 = 
gp
;

478 
	}
}

485 
	$__d_mem_me_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

486 
dme
, 
wme
, 
fid
)

487 
DB_ENV
 *
dbv
;

488 
DB_TXN
 *
tx
;

489 
DB_LSN
 *
t_lp
;

490 
u_t32_t
 
ags
;

491 cڡ 
DBT
 *
dme
;

492 cڡ 
DBT
 *
wme
;

493 cڡ 
DBT
 *
fid
;

495 
DBT
 
logc
;

496 
DB_TXNLOGREC
 *

;

497 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

498 
u_t32_t
 
zo
, 
y
, 
txn_num
;

499 
u_t
 
ad
;

500 
u_t8_t
 *
bp
;

501 
is_dub
, 
t
;

503 
	`COMPQUIET
(

, 
NULL
);

505 
y
 = 
DB___d_mem_me
;

506 
ad
 = 0;

507 
p
 = 
t_lp
;

509 
t
 = 0;

511 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

512 i(
tx
 =
NULL
)

514 i(
tx
 =
NULL
)

516 
is_dub
 = 0;

518 
is_dub
 = 1;

520 i(
tx
 =
NULL
) {

521 
txn_num
 = 0;

522 
lp
 = &
nu_l
;

523 
nu_l
.
fe
 =u_l.
offt
 = 0;

525 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

526 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

527  (
t
);

534 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

535 
txn_num
 = 
tx
->
txnid
;

538 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

539 + (
u_t32_t
+ (
dme
 =
NULL
 ? 0 : oldme->
size
)

540 + (
u_t32_t
+ (
wme
 =
NULL
 ? 0 :ewme->
size
)

541 + (
u_t32_t
+ (
fid
 =
NULL
 ? 0 : fid->
size
);

542 i(
	`CRYPTO_ON
(
dbv
)) {

543 
ad
 =

544 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

545 
logc
.
size
 +
ad
;

548 i(
is_dub
 || 
tx
 =
NULL
) {

549 i((
t
 =

550 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

551  (
t
);

553 i((
t
 = 
	`__os_mloc
(
dbv
,

554 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

555  (
t
);

556 #ifde
DIAGNOSTIC


557 i((
t
 =

558 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

559 
	`__os_
(
dbv
, 

);

560  (
t
);

563 
logc
.
da
 = 

->data;

566 i(
ad
 > 0)

567 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

569 
bp
 = 
logc
.
da
;

571 
	`memy
(
bp
, &
y
, (rectype));

572 
bp
 +(
y
);

574 
	`memy
(
bp
, &
txn_num
, (txn_num));

575 
bp
 +(
txn_num
);

577 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

578 
bp
 +(
DB_LSN
);

580 i(
dme
 =
NULL
) {

581 
zo
 = 0;

582 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

583 
bp
 +(
u_t32_t
);

585 
	`memy
(
bp
, &
dme
->
size
, (oldname->size));

586 
bp
 +(
dme
->
size
);

587 
	`memy
(
bp
, 
dme
->
da
, oldme->
size
);

588 
bp
 +
dme
->
size
;

591 i(
wme
 =
NULL
) {

592 
zo
 = 0;

593 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

594 
bp
 +(
u_t32_t
);

596 
	`memy
(
bp
, &
wme
->
size
, (newname->size));

597 
bp
 +(
wme
->
size
);

598 
	`memy
(
bp
, 
wme
->
da
,ewme->
size
);

599 
bp
 +
wme
->
size
;

602 i(
fid
 =
NULL
) {

603 
zo
 = 0;

604 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

605 
bp
 +(
u_t32_t
);

607 
	`memy
(
bp
, &
fid
->
size
, (fid->size));

608 
bp
 +(
fid
->
size
);

609 
	`memy
(
bp
, 
fid
->
da
, fid->
size
);

610 
bp
 +
fid
->
size
;

613 
	`DB_ASSERT
(
dbv
,

614 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

616 i(
is_dub
 || 
tx
 =
NULL
) {

617 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

618 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

619 *
lp
 = *
p
;

620 i(
p
 !
t_lp
)

621 *
t_lp
 = *
p
;

624 
t
 = 0;

625 #ifde
DIAGNOSTIC


630 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

631 
y
 |
DB_debug_FLAG
;

632 
	`memy
(
logc
.
da
, &
y
, (rectype));

634 i(!
	`IS_REP_CLIENT
(
dbv
))

635 
t
 = 
	`__log_put
(
dbv
,

636 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

638 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

639 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

640 
	`LSN_NOT_LOGGED
(*
t_lp
);

643 #ifde
LOG_DIAGNOSTIC


644 i(
t
 != 0)

645 ()
	`__d_mem_me_t
(
dbv
,

646 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

649 #ifde
DIAGNOSTIC


650 
	`__os_
(
dbv
, 
logc
.
da
);

652 i(
is_dub
 || 
tx
 =
NULL
)

653 
	`__os_
(
dbv
, 
logc
.
da
);

655  (
t
);

656 
	}
}

663 
	$__d_mem_me_ad
(
dbv
, 
cbuf
, 
g
)

664 
DB_ENV
 *
dbv
;

665 *
cbuf
;

666 
__d_mem_me_gs
 **
g
;

668 
__d_mem_me_gs
 *
gp
;

669 
u_t8_t
 *
bp
;

670 
t
;

672 i((
t
 = 
	`__os_mloc
(
dbv
,

673 (
__d_mem_me_gs
+ (
DB_TXN
), &
gp
)) != 0)

674  (
t
);

675 
bp
 = 
cbuf
;

676 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

677 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

679 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

680 
bp
 +(
gp
->
ty
);

682 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

683 
bp
 +(
gp
->
tx
->
txnid
);

685 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

686 
bp
 +(
DB_LSN
);

688 
	`memt
(&
gp
->
dme
, 0, (argp->oldname));

689 
	`memy
(&
gp
->
dme
.
size
, 
bp
, (
u_t32_t
));

690 
bp
 +(
u_t32_t
);

691 
gp
->
dme
.
da
 = 
bp
;

692 
bp
 +
gp
->
dme
.
size
;

694 
	`memt
(&
gp
->
wme
, 0, (argp->newname));

695 
	`memy
(&
gp
->
wme
.
size
, 
bp
, (
u_t32_t
));

696 
bp
 +(
u_t32_t
);

697 
gp
->
wme
.
da
 = 
bp
;

698 
bp
 +
gp
->
wme
.
size
;

700 
	`memt
(&
gp
->
fid
, 0, (argp->fid));

701 
	`memy
(&
gp
->
fid
.
size
, 
bp
, (
u_t32_t
));

702 
bp
 +(
u_t32_t
);

703 
gp
->
fid
.
da
 = 
bp
;

704 
bp
 +
gp
->
fid
.
size
;

706 *
g
 = 
gp
;

708 
	}
}

715 
	$__d_mem_move_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

716 
me
, 
fid
)

717 
DB_ENV
 *
dbv
;

718 
DB_TXN
 *
tx
;

719 
DB_LSN
 *
t_lp
;

720 
u_t32_t
 
ags
;

721 cڡ 
DBT
 *
me
;

722 cڡ 
DBT
 *
fid
;

724 
DBT
 
logc
;

725 
DB_TXNLOGREC
 *

;

726 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

727 
u_t32_t
 
zo
, 
y
, 
txn_num
;

728 
u_t
 
ad
;

729 
u_t8_t
 *
bp
;

730 
is_dub
, 
t
;

732 
	`COMPQUIET
(

, 
NULL
);

734 
y
 = 
DB___d_mem_move
;

735 
ad
 = 0;

736 
p
 = 
t_lp
;

738 
t
 = 0;

740 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

741 i(
tx
 =
NULL
)

743 i(
tx
 =
NULL
)

745 
is_dub
 = 0;

747 
is_dub
 = 1;

749 i(
tx
 =
NULL
) {

750 
txn_num
 = 0;

751 
lp
 = &
nu_l
;

752 
nu_l
.
fe
 =u_l.
offt
 = 0;

754 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

755 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

756  (
t
);

763 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

764 
txn_num
 = 
tx
->
txnid
;

767 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

768 + (
u_t32_t
+ (
me
 =
NULL
 ? 0 :ame->
size
)

769 + (
u_t32_t
+ (
fid
 =
NULL
 ? 0 : fid->
size
);

770 i(
	`CRYPTO_ON
(
dbv
)) {

771 
ad
 =

772 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

773 
logc
.
size
 +
ad
;

776 i(
is_dub
 || 
tx
 =
NULL
) {

777 i((
t
 =

778 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

779  (
t
);

781 i((
t
 = 
	`__os_mloc
(
dbv
,

782 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

783  (
t
);

784 #ifde
DIAGNOSTIC


785 i((
t
 =

786 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

787 
	`__os_
(
dbv
, 

);

788  (
t
);

791 
logc
.
da
 = 

->data;

794 i(
ad
 > 0)

795 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

797 
bp
 = 
logc
.
da
;

799 
	`memy
(
bp
, &
y
, (rectype));

800 
bp
 +(
y
);

802 
	`memy
(
bp
, &
txn_num
, (txn_num));

803 
bp
 +(
txn_num
);

805 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

806 
bp
 +(
DB_LSN
);

808 i(
me
 =
NULL
) {

809 
zo
 = 0;

810 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

811 
bp
 +(
u_t32_t
);

813 
	`memy
(
bp
, &
me
->
size
, (name->size));

814 
bp
 +(
me
->
size
);

815 
	`memy
(
bp
, 
me
->
da
,ame->
size
);

816 
bp
 +
me
->
size
;

819 i(
fid
 =
NULL
) {

820 
zo
 = 0;

821 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

822 
bp
 +(
u_t32_t
);

824 
	`memy
(
bp
, &
fid
->
size
, (fid->size));

825 
bp
 +(
fid
->
size
);

826 
	`memy
(
bp
, 
fid
->
da
, fid->
size
);

827 
bp
 +
fid
->
size
;

830 
	`DB_ASSERT
(
dbv
,

831 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

833 i(
is_dub
 || 
tx
 =
NULL
) {

834 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

835 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

836 *
lp
 = *
p
;

837 i(
p
 !
t_lp
)

838 *
t_lp
 = *
p
;

841 
t
 = 0;

842 #ifde
DIAGNOSTIC


847 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

848 
y
 |
DB_debug_FLAG
;

849 
	`memy
(
logc
.
da
, &
y
, (rectype));

851 i(!
	`IS_REP_CLIENT
(
dbv
))

852 
t
 = 
	`__log_put
(
dbv
,

853 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

855 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

856 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

857 
	`LSN_NOT_LOGGED
(*
t_lp
);

860 #ifde
LOG_DIAGNOSTIC


861 i(
t
 != 0)

862 ()
	`__d_mem_move_t
(
dbv
,

863 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

866 #ifde
DIAGNOSTIC


867 
	`__os_
(
dbv
, 
logc
.
da
);

869 i(
is_dub
 || 
tx
 =
NULL
)

870 
	`__os_
(
dbv
, 
logc
.
da
);

872  (
t
);

873 
	}
}

880 
	$__d_mem_move_ad
(
dbv
, 
cbuf
, 
g
)

881 
DB_ENV
 *
dbv
;

882 *
cbuf
;

883 
__d_mem_move_gs
 **
g
;

885 
__d_mem_move_gs
 *
gp
;

886 
u_t8_t
 *
bp
;

887 
t
;

889 i((
t
 = 
	`__os_mloc
(
dbv
,

890 (
__d_mem_move_gs
+ (
DB_TXN
), &
gp
)) != 0)

891  (
t
);

892 
bp
 = 
cbuf
;

893 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

894 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

896 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

897 
bp
 +(
gp
->
ty
);

899 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

900 
bp
 +(
gp
->
tx
->
txnid
);

902 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

903 
bp
 +(
DB_LSN
);

905 
	`memt
(&
gp
->
me
, 0, (argp->name));

906 
	`memy
(&
gp
->
me
.
size
, 
bp
, (
u_t32_t
));

907 
bp
 +(
u_t32_t
);

908 
gp
->
me
.
da
 = 
bp
;

909 
bp
 +
gp
->
me
.
size
;

911 
	`memt
(&
gp
->
fid
, 0, (argp->fid));

912 
	`memy
(&
gp
->
fid
.
size
, 
bp
, (
u_t32_t
));

913 
bp
 +(
u_t32_t
);

914 
gp
->
fid
.
da
 = 
bp
;

915 
bp
 +
gp
->
fid
.
size
;

917 *
g
 = 
gp
;

919 
	}
}

926 
	$__d__cov
(
dbv
, 
dbp
, 
dbsiz
)

927 
DB_ENV
 *
dbv
;

928 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

929 
size_t
 *
dbsiz
;

931 
t
;

933 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

934 
__d_masub_cov
, 
DB___d_masub
)) != 0)

935  (
t
);

936 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

937 
__d_mem__cov
, 
DB___d_mem_
)) != 0)

938  (
t
);

939 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

940 
__d_mem_me_cov
, 
DB___d_mem_me
)) != 0)

941  (
t
);

942 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

943 
__d_mem_move_cov
, 
DB___d_mem_move
)) != 0)

944  (
t
);

946 
	}
}

	@../db/crdel_autop.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/log.h
"

11 
	~"dbc/txn.h
"

18 
	$__d_masub_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

19 
DB_ENV
 *
dbv
;

20 
DBT
 *
db
;

21 
DB_LSN
 *
lp
;

22 
db_cs
 
nud2
;

23 *
nud3
;

25 
__d_masub_gs
 *
gp
;

26 
u_t32_t
 
i
;

27 
ch
;

28 
t
;

30 
nud2
 = 
DB_TXN_PRINT
;

31 
nud3
 = 
NULL
;

33 i((
t
 = 
	`__d_masub_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

34  (
t
);

35 ()
	`tf
(

37 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

38 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

39 (
u_lg
)
gp
->
ty
,

40 (
u_lg
)
gp
->
tx
->
txnid
,

41 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

42 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

43 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

44 ()
	`tf
("\tpage: ");

45 
i
 = 0; i < 
gp
->
ge
.
size
; i++) {

46 
ch
 = ((
u_t8_t
 *)
gp
->
ge
.
da
)[
i
];

47 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

49 ()
	`tf
("\n");

50 ()
	`tf
("\tlsn: [%lu][%lu]\n",

51 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

52 ()
	`tf
("\n");

53 
	`__os_
(
dbv
, 
gp
);

55 
	}
}

62 
	$__d_mem__t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

63 
DB_ENV
 *
dbv
;

64 
DBT
 *
db
;

65 
DB_LSN
 *
lp
;

66 
db_cs
 
nud2
;

67 *
nud3
;

69 
__d_mem__gs
 *
gp
;

70 
u_t32_t
 
i
;

71 
ch
;

72 
t
;

74 
nud2
 = 
DB_TXN_PRINT
;

75 
nud3
 = 
NULL
;

77 i((
t
 = 
	`__d_mem__ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

78  (
t
);

79 ()
	`tf
(

81 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

82 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

83 (
u_lg
)
gp
->
ty
,

84 (
u_lg
)
gp
->
tx
->
txnid
,

85 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

86 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

87 ()
	`tf
("\tname: ");

88 
i
 = 0; i < 
gp
->
me
.
size
; i++) {

89 
ch
 = ((
u_t8_t
 *)
gp
->
me
.
da
)[
i
];

90 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

92 ()
	`tf
("\n");

93 ()
	`tf
("\tfid: ");

94 
i
 = 0; i < 
gp
->
fid
.
size
; i++) {

95 
ch
 = ((
u_t8_t
 *)
gp
->
fid
.
da
)[
i
];

96 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

98 ()
	`tf
("\n");

99 ()
	`tf
("\gsize: %lu\n", (
u_lg
)
gp
->
pgsize
);

100 ()
	`tf
("\n");

101 
	`__os_
(
dbv
, 
gp
);

103 
	}
}

110 
	$__d_mem_me_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

111 
DB_ENV
 *
dbv
;

112 
DBT
 *
db
;

113 
DB_LSN
 *
lp
;

114 
db_cs
 
nud2
;

115 *
nud3
;

117 
__d_mem_me_gs
 *
gp
;

118 
u_t32_t
 
i
;

119 
ch
;

120 
t
;

122 
nud2
 = 
DB_TXN_PRINT
;

123 
nud3
 = 
NULL
;

125 i((
t
 = 
	`__d_mem_me_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

126  (
t
);

127 ()
	`tf
(

129 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

130 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

131 (
u_lg
)
gp
->
ty
,

132 (
u_lg
)
gp
->
tx
->
txnid
,

133 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

134 ()
	`tf
("\toldname: ");

135 
i
 = 0; i < 
gp
->
dme
.
size
; i++) {

136 
ch
 = ((
u_t8_t
 *)
gp
->
dme
.
da
)[
i
];

137 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

139 ()
	`tf
("\n");

140 ()
	`tf
("\tnewname: ");

141 
i
 = 0; i < 
gp
->
wme
.
size
; i++) {

142 
ch
 = ((
u_t8_t
 *)
gp
->
wme
.
da
)[
i
];

143 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

145 ()
	`tf
("\n");

146 ()
	`tf
("\tfid: ");

147 
i
 = 0; i < 
gp
->
fid
.
size
; i++) {

148 
ch
 = ((
u_t8_t
 *)
gp
->
fid
.
da
)[
i
];

149 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

151 ()
	`tf
("\n");

152 ()
	`tf
("\n");

153 
	`__os_
(
dbv
, 
gp
);

155 
	}
}

162 
	$__d_mem_move_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

163 
DB_ENV
 *
dbv
;

164 
DBT
 *
db
;

165 
DB_LSN
 *
lp
;

166 
db_cs
 
nud2
;

167 *
nud3
;

169 
__d_mem_move_gs
 *
gp
;

170 
u_t32_t
 
i
;

171 
ch
;

172 
t
;

174 
nud2
 = 
DB_TXN_PRINT
;

175 
nud3
 = 
NULL
;

177 i((
t
 = 
	`__d_mem_move_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

178  (
t
);

179 ()
	`tf
(

181 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

182 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

183 (
u_lg
)
gp
->
ty
,

184 (
u_lg
)
gp
->
tx
->
txnid
,

185 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

186 ()
	`tf
("\tname: ");

187 
i
 = 0; i < 
gp
->
me
.
size
; i++) {

188 
ch
 = ((
u_t8_t
 *)
gp
->
me
.
da
)[
i
];

189 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

191 ()
	`tf
("\n");

192 ()
	`tf
("\tfid: ");

193 
i
 = 0; i < 
gp
->
fid
.
size
; i++) {

194 
ch
 = ((
u_t8_t
 *)
gp
->
fid
.
da
)[
i
];

195 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

197 ()
	`tf
("\n");

198 ()
	`tf
("\n");

199 
	`__os_
(
dbv
, 
gp
);

201 
	}
}

208 
	$__d__t
(
dbv
, 
dbp
, 
dbsiz
)

209 
DB_ENV
 *
dbv
;

210 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

211 
size_t
 *
dbsiz
;

213 
t
;

215 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

216 
__d_masub_t
, 
DB___d_masub
)) != 0)

217  (
t
);

218 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

219 
__d_mem__t
, 
DB___d_mem_
)) != 0)

220  (
t
);

221 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

222 
__d_mem_me_t
, 
DB___d_mem_me
)) != 0)

223  (
t
);

224 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

225 
__d_mem_move_t
, 
DB___d_mem_move
)) != 0)

226  (
t
);

228 
	}
}

	@../db/crdel_rec.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/f.h
"

14 
	~"dbc/hash.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/txn.h
"

27 
	$__d_masub_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

28 
DB_ENV
 *
dbv
;

29 
DBT
 *
db
;

30 
DB_LSN
 *
lp
;

31 
db_cs
 

;

32 *
fo
;

34 
__d_masub_gs
 *
gp
;

35 
DB
 *
fe_dbp
;

36 
DBC
 *
dbc
;

37 
DB_MPOOLFILE
 *
mpf
;

38 
PAGE
 *
g
;

39 
cmp_p
, 
t
, 
t_t
;

41 
g
 = 
NULL
;

42 
	`REC_PRINT
(
__d_masub_t
);

43 
	`REC_INTRO
(
__d_masub_ad
, 0, 0);

45 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

46 0, &
g
)) != 0) {

48 i(
	`F_ISSET
(
fe_dbp
, 
DB_AM_INMEM
) &&

49 (
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

50 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
g
)) == 0) {

51 
	`LSN_NOT_LOGGED
(
	`LSN
(
g
));

53 *
lp
 = 
gp
->
ev_l
;

54 
t
 = 0;

55 
out
;

59 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

60 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l
);

62 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

63 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

64 
	`memy
(
g
, 
gp
->
ge
.
da
,rgp->ge.
size
);

65 
	`LSN
(
g
*
lp
;

72 i(
	`F_ISSET
(
fe_dbp
, 
DB_AM_INMEM
) &&

73 
gp
->
pgno
 =
PGNO_BASE_MD
 &&

74 (
t
 = 
	`__db_ma_tup
(
fe_dbp
->
dbv
, file_dbp,

75 
fe_dbp
->
dme
, (
DBMETA
 *)
g
, 0, 
DB_CHK_META
)) != 0)

76 
out
;

77 } i(
	`DB_UNDO
(

)) {

90 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

91 
	`LSN
(
g

gp
->
l
;

94 
de
: *
lp
 = 
gp
->
ev_l
;

95 
t
 = 0;

97 
out
: i(
g
 !
NULL
 &&

98 (
t_t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0 &&

99 
t
 == 0)

100 
t
 = 
t_t
;

102 
REC_CLOSE
;

103 
	}
}

113 
	$__d_mem__cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

114 
DB_ENV
 *
dbv
;

115 
DBT
 *
db
;

116 
DB_LSN
 *
lp
;

117 
db_cs
 

;

118 *
fo
;

120 
DB
 *
dbp
;

121 
__d_mem__gs
 *
gp
;

122 
do_o
, 
t
, 
t_t
;

124 
	`COMPQUIET
(
fo
, 
NULL
);

125 
dbp
 = 
NULL
;

126 
do_o
 = 0;

127 
	`REC_PRINT
(
__d_mem__t
);

128 
	`REC_NOOP_INTRO
(
__d_mem__ad
);

131 i(
gp
->
feid
 =
DB_LOGFILEID_INVALID
) {

132 i(
	`DB_REDO
(

))

133 
t
 = 
ENOENT
;

135 
t
 = 0;

137 
t
 = 
	`__dbg_id_to_db_t
(
dbv
,

138 
gp
->
tx
, &
dbp
,rgp->
feid
, 0, 0);

140 i(
	`DB_REDO
(

)) {

145 i(
t
 != 0) {

146 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

147 
out
;

149 
	`F_SET
(
dbp
, 
DB_AM_RECOVER
 | 
DB_AM_INMEM
);

150 
	`memy
(
dbp
->
feid
, 
gp
->
fid
.
da
, 
DB_FILE_ID_LEN
);

151 i(((
t
 = 
	`__os_rdup
(
dbv
,

152 
gp
->
me
.
da
, &
dbp
->
dme
)) != 0))

153 
out
;

160 
do_o
 = 1;

164 
	`memy
(
dbp
->
feid
, 
gp
->
fid
.
da
,rgp->fid.
size
);

165 i((
t
 = 
	`__memp_t_feid
(
dbp
->
mpf
, dbp->
feid
)) != 0)

166 
out
;

167 
dbp
->
erve_fid
 = 1;

168 
	`MAKE_INMEM
(
dbp
);

169 i((
t
 = 
	`__db_v_tup
(
dbp
,

170 
NULL
, NULL, 
gp
->
me
.
da
, 
TXN_INVALID
, 0)) != 0)

171 
out
;

172 
t
 = 
	`__db_v_mpo
(
dbp
, 
gp
->
me
.
da
, 0);

174 i(
t
 =
ENOENT
) {

175 
dbp
->
pgsize
 = 
gp
->pgsize;

176 i((
t
 = 
	`__db_v_mpo
(
dbp
,

177 
gp
->
me
.
da
, 
DB_CREATE
)) != 0)

178 
out
;

179 } i(
t
 != 0)

180 
out
;

183 i(
	`DB_UNDO
(

)) {

184 i(
t
 == 0)

185 
t
 = 
	`__memp_me
(
dbv
, 
gp
->
fid
.
da
, 
NULL
,

186 (cڡ *)
gp
->
me
.
da
, 
NULL
, 1);

188 i(
t
 =
ENOENT
 || =
DB_DELETED
)

189 
t
 = 0;

191 
out
;

194 *
lp
 = 
gp
->
ev_l
;

196 
out
: i(
dbp
 !
NULL
) {

197 
t_t
 = 0;

199 i(
do_o
 || 
t
 != 0)

200 
t_t
 = 
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
);

201 i(
t_t
 !0 && 
t
 == 0)

202 
t
 = 
t_t
;

204 
REC_NOOP_CLOSE
;

205 
	}
}

215 
	$__d_mem_me_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

216 
DB_ENV
 *
dbv
;

217 
DBT
 *
db
;

218 
DB_LSN
 *
lp
;

219 
db_cs
 

;

220 *
fo
;

222 
__d_mem_me_gs
 *
gp
;

223 
u_t8_t
 *
feid
;

224 
t
;

226 
	`COMPQUIET
(
fo
, 
NULL
);

227 
	`REC_PRINT
(
__d_mem_me_t
);

228 
	`REC_NOOP_INTRO
(
__d_mem_me_ad
);

229 
feid
 = 
gp
->
fid
.
da
;

232 i(
	`DB_REDO
(

))

233 ()
	`__memp_me
(
dbv
, 
feid
,

234 (cڡ *)
gp
->
wme
.
da
,

235 (cڡ *)
gp
->
dme
.
da
,

236 (cڡ *)
gp
->
wme
.
da
, 1);

238 i(
	`DB_UNDO
(

))

239 ()
	`__memp_me
(
dbv
, 
feid
,

240 (cڡ *)
gp
->
dme
.
da
,

241 (cڡ *)
gp
->
wme
.
da
,

242 (cڡ *)
gp
->
dme
.
da
, 1);

244 *
lp
 = 
gp
->
ev_l
;

245 
t
 = 0;

247 
REC_NOOP_CLOSE
;

248 
	}
}

258 
	$__d_mem_move_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

259 
DB_ENV
 *
dbv
;

260 
DBT
 *
db
;

261 
DB_LSN
 *
lp
;

262 
db_cs
 

;

263 *
fo
;

265 
__d_mem_move_gs
 *
gp
;

266 
t
;

268 
	`COMPQUIET
(
fo
, 
NULL
);

269 
	`REC_PRINT
(
__d_mem_move_t
);

270 
	`REC_NOOP_INTRO
(
__d_mem_move_ad
);

276 i(
	`DB_REDO
(

)) {

277 ()
	`__memp_me
(
dbv
,

278 
gp
->
fid
.
da
, 
NULL
,rgp->
me
.data, NULL, 1);

281 *
lp
 = 
gp
->
ev_l
;

282 
t
 = 0;

284 
REC_NOOP_CLOSE
;

285 
	}
}

	@../db/db.c

41 
	~"db_cfig.h
"

43 
	~"db_t.h
"

44 
	~"dbc/db_ge.h
"

45 
	~"dbc/db_sw.h
"

46 
	~"dbc/b.h
"

47 
	~"dbc/f.h
"

48 
	~"dbc/hash.h
"

49 
	~"dbc/lock.h
"

50 
	~"dbc/log.h
"

51 
	~"dbc/mp.h
"

52 
	~"dbc/qam.h
"

53 
	~"dbc/txn.h
"

55 
__db_dissoc
 
__P
((
DB
 *));

57 #ifde
CONFIG_TEST


58 
__db_makecy
 
__P
((
DB_ENV
 *, const *, const *));

59 
__db_docy
 
__P
((
DB_ENV
 *, const *));

60 
__qam_docy
 
__P
((
DB
 *, const *));

76 
	$__db_ma_ݒ
(
subdbp
, 
txn
, 
me
, 
ags
, 
mode
, 
db
)

77 
DB
 *
subdbp
;

78 
DB_TXN
 *
txn
;

79 cڡ *
me
;

80 
u_t32_t
 
ags
;

81 
mode
;

82 
DB
 **
db
;

84 
DB
 *
dbp
;

85 
t
;

87 *
db
 = 
NULL
;

90 i((
t
 = 
	`__db__
(&
dbp
, 
subdbp
->
dbv
, 0)) != 0)

91  (
t
);

99 
dbp
->
pgsize
 = 
subdbp
->pgsize;

100 
	`F_SET
(
dbp
, 
DB_AM_SUBDB
);

101 
	`F_SET
(
dbp
, 
	`F_ISSET
(
subdbp
,

102 
DB_AM_RECOVER
 | 
DB_AM_SWAP
 |

103 
DB_AM_ENCRYPT
 | 
DB_AM_CHKSUM
 | 
DB_AM_NOT_DURABLE
));

110 
	`LF_CLR
(
DB_EXCL
);

111 
	`LF_SET
(
DB_RDWRMASTER
);

112 i((
t
 = 
	`__db_ݒ
(
dbp
,

113 
txn
, 
me
, 
NULL
, 
DB_BTREE
, 
ags
, 
mode
, 
PGNO_BASE_MD
)) != 0)

114 
r
;

123 i(
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
))

124 
	`F_SET
(
subdbp
, 
DB_AM_CHKSUM
);

130 
subdbp
->
pgsize
 = 
dbp
->pgsize;

131 *
db
 = 
dbp
;

134 
r
: i(!
	`F_ISSET
(
dbp
, 
DB_AM_DISCARD
))

135 ()
	`__db_o
(
dbp
, 
txn
, 0);

138  (
t
);

139 
	}
}

149 
	$__db_ma_upde
(
mdbp
, 
sdbp
, 
txn
, 
subdb
, 
ty
, 
ai
, 
wme
, 
ags
)

150 
DB
 *
mdbp
, *
sdbp
;

151 
DB_TXN
 *
txn
;

152 cڡ *
subdb
;

153 
DBTYPE
 
ty
;

154 
mu_ai
 
ai
;

155 cڡ *
wme
;

156 
u_t32_t
 
ags
;

158 
DB_ENV
 *
dbv
;

159 
DBC
 *
dbc
, *
ndbc
;

160 
DBT
 
key
, 
da
, 
nda
;

161 
PAGE
 *
p
, *
r
;

162 
db_pgno_t
 
t_pgno
;

163 
modify
, 
t
, 
t_t
;

165 
dbv
 = 
mdbp
->dbenv;

166 
dbc
 = 
ndbc
 = 
NULL
;

167 
p
 = 
NULL
;

175 
modify
 = (
ai
 !
MU_OPEN
 || 
	`LF_ISSET
(
DB_CREATE
)) ? 1 : 0;

177 i((
t
 = 
	`__db_curs
(
mdbp
, 
txn
, &
dbc
,

178 (
	`CDB_LOCKING
(
dbv
&& 
modify
? 
DB_WRITECURSOR
 : 0)) != 0)

179  (
t
);

194 
	`DB_INIT_DBT
(
key
, 
subdb
, 
	`
(subdb));

195 
	`memt
(&
da
, 0, (data));

196 
	`F_SET
(&
da
, 
DB_DBT_MALLOC
);

198 
t
 = 
	`__dbc_g
(
dbc
, &
key
, &
da
,

199 
DB_SET
 | ((
	`STD_LOCKING
(
dbc
&& 
modify
? 
DB_RMW
 : 0));

206 
ai
) {

207 
MU_REMOVE
:

214 i(
t
 != 0)

215 
r
;

221 i((
t
 = 
	`__dbc_d
(
dbc
, 0)) != 0)

222 
r
;

229 
	`memy
(&
sdbp
->
ma_pgno
, 
da
.da, (
db_pgno_t
));

230 
	`DB_NTOHL
(&
sdbp
->
ma_pgno
);

231 i((
t
 = 
	`__memp_fg
(
mdbp
->
mpf
, &
sdbp
->
ma_pgno
,

232 
dbc
->
txn
, 
DB_MPOOL_DIRTY
, &
p
)) != 0)

233 
r
;

236 i(
	`TYPE
(
p
=
P_BTREEMETA
 &&

237 ((
BTMETA
 *)
p
)->
ro
 !
PGNO_INVALID
) {

238 i((
t
 = 
	`__memp_fg
(
mdbp
->
mpf
,

239 &((
BTMETA
 *)
p
)->
ro
, 
dbc
->
txn
,

240 
DB_MPOOL_DIRTY
, &
r
)) != 0)

241 
r
;

244 i((
t
 = 
	`__db_
(
dbc
, 
r
)) != 0) {

245 
r
 = 
NULL
;

246 
r
;

250 i((
t
 = 
	`__db_
(
dbc
, 
p
)) != 0) {

251 
p
 = 
NULL
;

252 
r
;

254 
p
 = 
NULL
;

256 
MU_RENAME
:

258 i(
t
 != 0)

259 
r
;

268 i((
t
 = 
	`__db_curs
(
mdbp
, 
txn
, &
ndbc
,

269 
	`CDB_LOCKING
(
dbv
? 
DB_WRITECURSOR
 : 0)) != 0)

270 
r
;

271 
	`DB_SET_DBT
(
key
, 
wme
, 
	`
(newname));

277 
	`memt
(&
nda
, 0, (ndata));

278 
	`F_SET
(&
nda
, 
DB_DBT_USERMEM
 | 
DB_DBT_PARTIAL
);

280 i((
t
 = 
	`__dbc_g
(
ndbc
, &
key
, &
nda
, 
DB_SET
)) == 0) {

282 
t
 = 
EEXIST
;

283 
	`__db_rx
(
dbv
, "me: daba %exis", 
wme
);

284 
r
;

285 } i(
t
 !
DB_NOTFOUND
)

286 
r
;

293 i((
t
 = 
	`__dbc_put
(
ndbc
, &
key
, &
da
, 
DB_KEYFIRST
)) != 0)

294 
r
;

295 i((
t
 = 
	`__dbc_d
(
dbc
, 0)) != 0) {

300 ()
	`__dbc_d
(
ndbc
, 0);

301 
r
;

305 
MU_OPEN
:

310 
t
) {

312 i(
	`LF_ISSET
(
DB_CREATE
&& LF_ISSET(
DB_EXCL
)) {

313 
t
 = 
EEXIST
;

314 
r
;

316 
	`memy
(&
sdbp
->
ma_pgno
, 
da
.da, (
db_pgno_t
));

317 
	`DB_NTOHL
(&
sdbp
->
ma_pgno
);

318 
de
;

319 
DB_NOTFOUND
:

320 i(
	`LF_ISSET
(
DB_CREATE
))

326 
t
 = 
ENOENT
;

327 
r
;

329 
r
;

333 i((
t
 = 
	`__db_w
(
dbc
,

334 
ty
 =
DB_HASH
 ? 
P_HASHMETA
 : 
P_BTREEMETA
, &
p
)) != 0)

335 
r
;

336 
sdbp
->
ma_pgno
 = 
	`PGNO
(
p
);

344 
t_pgno
 = 
	`PGNO
(
p
);

345 
	`DB_HTONL
(&
t_pgno
);

346 
	`memt
(&
nda
, 0, (ndata));

347 
nda
.
da
 = &
t_pgno
;

348 
nda
.
size
 = (
db_pgno_t
);

349 i((
t
 = 
	`__dbc_put
(
dbc
, &
key
, &
nda
, 
DB_KEYLAST
)) != 0)

350 
r
;

351 
	`F_SET
(
sdbp
, 
DB_AM_CREATED
);

355 
r
:

356 
de
:

360 i(
p
 !
NULL
 && (
t_t
 =

361 
	`__memp_ut
(
mdbp
->
mpf
, 
p
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

362 
t
 = 
t_t
;

365 i(
da
.d!
NULL
)

366 
	`__os_u
(
dbv
, 
da
.data);

367 i(
dbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc)!0 && 
t
 == 0)

368 
t
 = 
t_t
;

369 i(
ndbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
dbc)!0 && 
t
 == 0)

370 
t
 = 
t_t
;

372  (
t
);

373 
	}
}

383 
	$__db_v_tup
(
dbp
, 
txn
, 
ame
, 
dme
, 
id
, 
ags
)

384 
DB
 *
dbp
;

385 
DB_TXN
 *
txn
;

386 cڡ *
ame
, *
dme
;

387 
u_t32_t
 
id
, 
ags
;

389 
DB
 *
ldbp
;

390 
DB_ENV
 *
dbv
;

391 
u_t32_t
 
maxid
;

392 
t
;

394 
dbv
 = 
dbp
->dbenv;

397 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_OPEN_CALLED
)) {

399 i(
dbv
->
mp_gbys
 == 0 &&

400 
dbv
->
mp_bys
 < 
dbp
->
pgsize
 * 
DB_MINPAGECACHE
 &&

401 (
t
 = 
	`__memp_t_chesize
(

402 
dbv
, 0, 
dbp
->
pgsize
 * 
DB_MINPAGECACHE
, 0)) != 0)

403  (
t
);

405 i((
t
 = 
	`__v_ݒ
(
dbv
, 
NULL
, 
DB_CREATE
 |

406 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
	`LF_ISSET
(
DB_THREAD
), 0)) != 0)

407  (
t
);

411 i((!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
|| 
dme
 =
NULL
) &&

412 (
t
 = 
	`__db_v_mpo
(
dbp
, 
ame
, 
ags
)) != 0)

413  (
t
);

416 i(
	`LF_ISSET
(
DB_THREAD
&& (
t
 = 
	`__mux_loc
(

417 
dbv
, 
MTX_DB_HANDLE
, 
DB_MUTEX_PROCESS_ONLY
, &
dbp
->
mux
)) != 0)

418  (
t
);

426 i(
	`LOGGING_ON
(
dbv
&& 
dbp
->
log_fame
 =
NULL
 &&

427 #i!
	`defed
(
DEBUG_ROP
&& !defed(
DEBUG_WOP
&& !defed(
DIAGNOSTIC
)

428 (
txn
 !
NULL
 || 
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
)) &&

430 (
t
 = 
	`__dbg_tup
(
dbp
,

431 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
? 
dme
 : 
ame
, 
id
)) != 0)

432  (
t
);

438 i(
	`DBENV_LOGGING
(
dbv
&& !
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
) &&

439 #i!
	`defed
(
DEBUG_ROP
&& !defed(
DEBUG_WOP
&& !defed(
DIAGNOSTIC
)

440 
txn
 !
NULL
 &&

442 #i!
	`defed
(
DEBUG_ROP
)

443 !
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
) &&

445 (
t
 = 
	`__dbg_w_id
(
dbp
, 
txn
)) != 0)

446  (
t
);

457 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

458 
maxid
 = 0;

459 
	`TAILQ_FOREACH
(
ldbp
, &
dbv
->
dbli
, 
dblilks
) {

465 i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

466 i(
	`memcmp
(
ldbp
->
feid
, 
dbp
->feid, 
DB_FILE_ID_LEN
)

467 =0 && 
ldbp
->
ma_pgno
 =
dbp
->meta_pgno)

469 } i(
dme
 !
NULL
) {

470 i(
	`F_ISSET
(
ldbp
, 
DB_AM_INMEM
) &&

471 
ldbp
->
dme
 !
NULL
 &&

472 
	`rcmp
(
ldbp
->
dme
, dname) == 0)

475 i(
ldbp
->
adj_feid
 > 
maxid
)

476 
maxid
 = 
ldbp
->
adj_feid
;

488 i(
ldbp
 =
NULL
) {

489 
dbp
->
adj_feid
 = 
maxid
 + 1;

490 
	`TAILQ_INSERT_HEAD
(&
dbv
->
dbli
, 
dbp
, 
dblilks
);

492 
dbp
->
adj_feid
 = 
ldbp
->adj_fileid;

493 
	`TAILQ_INSERT_AFTER
(&
dbv
->
dbli
, 
ldbp
, 
dbp
, 
dblilks
);

495 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

498 
	}
}

507 
	$__db_v_mpo
(
dbp
, 
ame
, 
ags
)

508 
DB
 *
dbp
;

509 cڡ *
ame
;

510 
u_t32_t
 
ags
;

512 
DB_ENV
 *
dbv
;

513 
DBT
 
pgcook
;

514 
DB_MPOOLFILE
 *
mpf
;

515 
DB_PGINFO
 
pgfo
;

516 
fidt
, 
y
, 
t
;

517 
t32_t
 
l_off
;

518 
u_t8_t
 
nufid
[
DB_FILE_ID_LEN
];

519 
u_t32_t
 
r_n
;

521 
dbv
 = 
dbp
->dbenv;

524 
l_off
 = 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LSN_OFF_NOTSET
 : 0;

527 i(
	`F_ISSET
(
dbp
, 
DB_AM_OPEN_CALLED
))

538 
dbp
->
ty
) {

539 
DB_BTREE
:

540 
DB_RECNO
:

541 
y
 = 
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
 | 
DB_AM_ENCRYPT
 | 
DB_AM_CHKSUM
)

542 ? 
DB_FTYPE_SET
 : 
DB_FTYPE_NOTSET
;

543 
r_n
 = 
	`CRYPTO_ON
(
dbv
) ?

544 (
dbp
->
pgsize
 !0 ? dbp->pgsiz: 
DB_CLEARLEN_NOTSET
) :

545 
DB_PAGE_DB_LEN
;

547 
DB_HASH
:

548 
y
 = 
DB_FTYPE_SET
;

549 
r_n
 = 
	`CRYPTO_ON
(
dbv
) ?

550 (
dbp
->
pgsize
 !0 ? dbp->pgsiz: 
DB_CLEARLEN_NOTSET
) :

551 
DB_PAGE_DB_LEN
;

553 
DB_QUEUE
:

554 
y
 = 
	`F_ISSET
(
dbp
,

555 
DB_AM_SWAP
 | 
DB_AM_ENCRYPT
 | 
DB_AM_CHKSUM
) ?

556 
DB_FTYPE_SET
 : 
DB_FTYPE_NOTSET
;

564 
r_n
 = 
dbp
->
pgsize
 !0 ? dbp->pgsiz: 
DB_CLEARLEN_NOTSET
;

566 
DB_UNKNOWN
:

579 i(
	`F_ISSET
(
dbp
, 
DB_AM_VERIFYING
)) {

580 
y
 = 
DB_FTYPE_NOTSET
;

581 
r_n
 = 
DB_PAGE_DB_LEN
;

590 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

591 
r_n
 = 
DB_CLEARLEN_NOTSET
;

592 
y
 = 
DB_FTYPE_NOTSET
;

593 
l_off
 = 
DB_LSN_OFF_NOTSET
;

598  (
	`__db_unknown_ty
(
dbv
, "DB->ݒ", 
dbp
->
ty
));

601 
mpf
 = 
dbp
->mpf;

603 
	`memt
(
nufid
, 0, 
DB_FILE_ID_LEN
);

604 
fidt
 = 
	`memcmp
(
nufid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

605 i(
fidt
)

606 ()
	`__memp_t_feid
(
mpf
, 
dbp
->
feid
);

608 ()
	`__memp_t_r_n
(
mpf
, 
r_n
);

609 ()
	`__memp_t_y
(
mpf
, 
y
);

610 ()
	`__memp_t_l_offt
(
mpf
, 
l_off
);

612 
pgfo
.
db_gesize
 = 
dbp
->
pgsize
;

613 
pgfo
.
ags
 =

614 
	`F_ISSET
(
dbp
, (
DB_AM_CHKSUM
 | 
DB_AM_ENCRYPT
 | 
DB_AM_SWAP
));

615 
pgfo
.
ty
 = 
dbp
->type;

616 
pgcook
.
da
 = &
pgfo
;

617 
pgcook
.
size
 = (
DB_PGINFO
);

618 ()
	`__memp_t_pgcook
(
mpf
, &
pgcook
);

620 #ide
DIAG_MVCC


621 i(
	`F_ISSET
(
dbv
, 
DB_ENV_MULTIVERSION
))

623 i(
	`F_ISSET
(
dbp
, 
DB_AM_TXN
) &&

624 
dbp
->
ty
 !
DB_QUEUE
 && dbp->ty !
DB_UNKNOWN
)

625 
	`LF_SET
(
DB_MULTIVERSION
);

627 i((
t
 = 
	`__memp_fݒ
(
mpf
, 
NULL
, 
ame
,

628 
	`LF_ISSET
(
DB_CREATE
 | 
DB_DURABLE_UNKNOWN
 | 
DB_MULTIVERSION
 |

629 
DB_NOMMAP
 | 
DB_ODDFILESIZE
 | 
DB_RDONLY
 | 
DB_TRUNCATE
) |

630 (
	`F_ISSET
(
dbv
, 
DB_ENV_DIRECT_DB
? 
DB_DIRECT
 : 0) |

631 (
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_TXN_NOT_DURABLE
 : 0),

632 0, 
dbp
->
pgsize
)) != 0) {

637 ()
	`__memp_fo
(
dbp
->
mpf
, 0);

638 ()
	`__memp_f
(
dbv
, &
dbp
->
mpf
);

639 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

640 
	`MAKE_INMEM
(
dbp
);

641  (
t
);

651 
	`F_SET
(
dbp
, 
DB_AM_OPEN_CALLED
);

652 i(!
fidt
 && 
ame
 !
NULL
) {

653 ()
	`__memp_g_feid
(
dbp
->
mpf
, dbp->
feid
);

654 
dbp
->
erve_fid
 = 1;

658 
	}
}

667 
	$__db_o
(
dbp
, 
txn
, 
ags
)

668 
DB
 *
dbp
;

669 
DB_TXN
 *
txn
;

670 
u_t32_t
 
ags
;

672 
DB_ENV
 *
dbv
;

673 
db_f
, 
deed_o
, 
t
, 
t_t
;

675 
dbv
 = 
dbp
->dbenv;

676 
deed_o
 = 
t
 = 0;

685 i(
txn
 !
NULL
)

686 ()
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
, 0);

689 
t
 = 
	`__db_esh
(
dbp
, 
txn
, 
ags
, &
deed_o
, 0);

695 i(
deed_o
)

696  (
t
);

709 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

710 
db_f
 = --
dbv
->db_ref;

711 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

712 i(
	`F_ISSET
(
dbv
, 
DB_ENV_DBLOCAL
&& 
db_f
 == 0 &&

713 (
t_t
 = 
	`__v_o
(
dbv
, 0)!0 && 
t
 == 0)

714 
t
 = 
t_t
;

717 
	`memt
(
dbp
, 
CLEAR_BYTE
, (*dbp));

718 
	`__os_
(
dbv
, 
dbp
);

720  (
t
);

721 
	}
}

734 
	$__db_esh
(
dbp
, 
txn
, 
ags
, 
deed_op
, 
u
)

735 
DB
 *
dbp
;

736 
DB_TXN
 *
txn
;

737 
u_t32_t
 
ags
;

738 *
deed_op
, 
u
;

740 
DB
 *
sdbp
;

741 
DBC
 *
dbc
;

742 
DB_ENV
 *
dbv
;

743 
DB_LOCKREQ
 
eq
;

744 
DB_LOCKER
 *
lock
;

745 
REGENV
 *
nv
;

746 
REGINFO
 *
f
;

747 
u_t32_t
 
ve_ags
;

748 
sync
, 
t
, 
t_t
;

750 
t
 = 0;

752 
dbv
 = 
dbp
->dbenv;

753 
f
 = 
dbv
->
gfo
;

754 i(
f
 !
NULL
)

755 
nv
 = 
f
->
imy
;

757 
nv
 = 
NULL
;

763 i(
dbp
->
mpf
 =
NULL
)

764 
	`LF_SET
(
DB_NOSYNC
);

767 i(!
	`F_ISSET
(
dbp
, 
DB_AM_OPEN_CALLED
))

768 
v_ݒed
;

779 
	`LIST_FOREACH
(
sdbp
, &
dbp
->
s_cds
, 
s_lks
) {

780 
	`LIST_REMOVE
(
sdbp
, 
s_lks
);

781 i((
t_t
 = 
	`__db_dissoc
(
sdbp
)!0 && 
t
 == 0)

782 
t
 = 
t_t
;

794 i(!
	`LF_ISSET
(
DB_NOSYNC
) &&

795 !
	`F_ISSET
(
dbp
, 
DB_AM_DISCARD
 | 
DB_AM_RECOVER
) &&

796 (
t_t
 = 
	`__db_sync
(
dbp
)!0 && 
t
 == 0)

797 
t
 = 
t_t
;

806 
sync
 = 
	`TAILQ_FIRST
(&
dbp
->
aive_queue
=
NULL
 ? 0 : 1;

807 (
dbc
 = 
	`TAILQ_FIRST
(&
dbp
->
aive_queue
)!
NULL
)

808 i((
t_t
 = 
	`__dbc_o
(
dbc
)) != 0) {

809 i(
t
 == 0)

810 
t
 = 
t_t
;

814 (
dbc
 = 
	`TAILQ_FIRST
(&
dbp
->
_queue
)!
NULL
)

815 i((
t_t
 = 
	`__dbc_deroy
(
dbc
)) != 0) {

816 i(
t
 == 0)

817 
t
 = 
t_t
;

826 (
dbc
 = 
	`TAILQ_FIRST
(&
dbp
->
jo_queue
)!
NULL
)

827 i((
t_t
 = 
	`__db_jo_o
(
dbc
)) != 0) {

828 i(
t
 == 0)

829 
t
 = 
t_t
;

842 i(
sync
 && !
	`LF_ISSET
(
DB_NOSYNC
) &&

843 !
	`F_ISSET
(
dbp
, 
DB_AM_DISCARD
 | 
DB_AM_RECOVER
) &&

844 (
t_t
 = 
	`__memp_fsync
(
dbp
->
mpf
)!0 && 
t
 == 0)

845 
t
 = 
t_t
;

847 
v_ݒed
:

859 i(!
u
 && 
	`LOGGING_ON
(
dbp
->
dbv
&& dbp->
log_fame
 !
NULL
) {

865 
	`DB_ASSERT
(
dbv
, 
nv
 !
NULL
);

866 i(
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
|| 
	`IS_REP_CLIENT
(
dbv
) ||

867 
dbp
->
timeamp
 !
nv
->
p_timeamp
) {

868 i((
t_t
 = 
	`__dbg_voke_id
(
dbp
,

869 0, 
DB_LOGFILEID_INVALID
)=0 && 
t
 == 0)

870 
t
 = 
t_t
;

871 i((
t_t
 = 
	`__dbg_down
(
dbp
)!0 && 
t
 == 0)

872 
t
 = 
t_t
;

874 i((
t_t
 = 
	`__dbg_o_id
(
dbp
,

875 
txn
, 
DBREG_CLOSE
)!0 &&x!
NULL
) {

888 i((
t
 =

889 
	`__txn_oevt
(
dbv
, 
txn
, 
dbp
)) != 0)

890  (
	`__db_nic
(
dbv
, 
t
));

891 i(
deed_op
 !
NULL
)

892 *
deed_op
 = 1;

893  (
t_t
);

911 i(
dbp
->
ved_ݒ_fhp
 !
NULL
 &&

912 (
t_t
 = 
	`__os_ohd
(
dbv
, 
dbp
->
ved_ݒ_fhp
)) != 0 &&

913 
t
 == 0)

914 
t
 = 
t_t
;

927 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

928 i(!
u
 &&

929 (
dbp
->
dblilks
.
tqe_xt
 !
NULL
 ||

930 
dbp
->
dblilks
.
tqe_ev
 !
NULL
)) {

931 
	`TAILQ_REMOVE
(&
dbv
->
dbli
, 
dbp
, 
dblilks
);

932 
dbp
->
dblilks
.
tqe_xt
 = 
NULL
;

933 
dbp
->
dblilks
.
tqe_ev
 = 
NULL
;

937 i(
dbp
->
mpf
 !
NULL
) {

938 i((
t_t
 = 
	`__memp_fo
(
dbp
->
mpf
,

939 
	`F_ISSET
(
dbp
, 
DB_AM_DISCARD
? 
DB_MPOOL_DISCARD
 : 0)) != 0 &&

940 
t
 == 0)

941 
t
 = 
t_t
;

942 
dbp
->
mpf
 = 
NULL
;

943 i(
u
 &&

944 (
t_t
 = 
	`__memp_f
(
dbv
, &
dbp
->
mpf
)) != 0 &&

945 
t
 == 0)

946 
t
 = 
t_t
;

949 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

971 i((
t_t
 = 
	`__bam_db_o
(
dbp
)!0 && 
t
 == 0)

972 
t
 = 
t_t
;

973 i((
t_t
 = 
	`__ham_db_o
(
dbp
)!0 && 
t
 == 0)

974 
t
 = 
t_t
;

975 i((
t_t
 = 
	`__qam_db_o
(
dbp
, dbp->
ags
)!0 && 
t
 == 0)

976 
t
 = 
t_t
;

985 i(!
u
 && 
dbp
->
lock
 !
NULL
) {

987 i(
txn
 =
NULL
)

988 
txn
 = 
dbp
->
cur_txn
;

989 i(
	`IS_REAL_TXN
(
txn
))

990 
	`__txn_mlock
(
dbv
,

991 
txn
, &
dbp
->
hd_lock
, dbp->
lock
);

994 
eq
.

 = 
DB_LOCK_PUT_ALL
;

995 
eq
.
obj
 = 
NULL
;

996 i((
t_t
 = 
	`__lock_vec
(
dbv
,

997 
dbp
->
lock
, 0, &
eq
, 1, 
NULL
)!0 && 
t
 == 0)

998 
t
 = 
t_t
;

1000 i((
t_t
 =

1001 
	`__lock_id_
(
dbv
, 
dbp
->
lock
)!0 && 
t
 == 0)

1002 
t
 = 
t_t
;

1003 
dbp
->
lock
 = 
NULL
;

1004 
	`LOCK_INIT
(
dbp
->
hd_lock
);

1011 i(
	`LOCKING_ON
(
dbv
) &&

1012 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
&& !dbp->
erve_fid
 &&

1013 *(
u_t32_t
 *)
dbp
->
feid
 !
DB_LOCK_INVALIDID
) {

1014 i((
t_t
 = 
	`__lock_glock
(
dbv
->
lk_hd
,

1015 *(
u_t32_t
 *)
dbp
->
feid
, 0, &
lock
)) == 0)

1016 
t_t
 = 
	`__lock_id_
(
dbv
, 
lock
);

1017 i(
t
 == 0)

1018 
t
 = 
t_t
;

1021 i(
u
) {

1028 
ve_ags
 = 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
 | 
DB_AM_TXN
);

1034 i((
t
 = 
	`__bam_db_
(
dbp
)) != 0)

1035  (
t
);

1036 i((
t
 = 
	`__ham_db_
(
dbp
)) != 0)

1037  (
t
);

1038 i((
t
 = 
	`__qam_db_
(
dbp
)) != 0)

1039  (
t
);

1042 
dbp
->
ags
 = dbp->
ig_ags
 | 
ve_ags
;

1044 i(
	`FLD_ISSET
(
ve_ags
, 
DB_AM_INMEM
)) {

1050 
	`memt
(
dbp
->
feid
, 0, (dbp->fileid));

1051 
	`MAKE_INMEM
(
dbp
);

1053  (
t
);

1056 
dbp
->
ty
 = 
DB_UNKNOWN
;

1062 i((
t_t
 = 
	`__mux_
(
dbv
, &
dbp
->
mux
)!0 && 
t
 == 0)

1063 
t
 = 
t_t
;

1066 i(
dbp
->
ame
 !
NULL
) {

1067 
	`__os_
(
dbp
->
dbv
, dbp->
ame
);

1068 
dbp
->
ame
 = 
NULL
;

1070 i(
dbp
->
dme
 !
NULL
) {

1071 
	`__os_
(
dbp
->
dbv
, dbp->
dme
);

1072 
dbp
->
dme
 = 
NULL
;

1076 i(
dbp
->
my_rskey
.
da
 !
NULL
)

1077 
	`__os_
(
dbp
->
dbv
, dbp->
my_rskey
.
da
);

1078 i(
dbp
->
my_rkey
.
da
 !
NULL
)

1079 
	`__os_
(
dbp
->
dbv
, dbp->
my_rkey
.
da
);

1080 i(
dbp
->
my_rda
.
da
 !
NULL
)

1081 
	`__os_
(
dbp
->
dbv
, dbp->
my_rda
.
da
);

1084 
	`memt
(&
dbp
->
my_rskey
, 0, (
DBT
));

1085 
	`memt
(&
dbp
->
my_rkey
, 0, (
DBT
));

1086 
	`memt
(&
dbp
->
my_rda
, 0, (
DBT
));

1089 
	`memt
(
dbp
->
feid
, 0, (dbp->fileid));

1090 
dbp
->
adj_feid
 = 0;

1091 
dbp
->
ma_pgno
 = 0;

1092 
dbp
->
cur_lock
 = 
NULL
;

1093 
dbp
->
cur_txn
 = 
NULL
;

1094 
dbp
->
assoc_lock
 = 
NULL
;

1095 
dbp
->
_id
 = 0;

1096 
dbp
->
ݒ_ags
 = 0;

1105 i(
txn
 !
NULL
)

1106 
	`LOCK_INIT
(
dbp
->
hd_lock
);

1109 
dbp
->
ags
 = dbp->
ig_ags
;

1111  (
t
);

1112 
	}
}

1119 
	$__db_dissoc
(
sdbp
)

1120 
DB
 *
sdbp
;

1122 
DBC
 *
dbc
;

1123 
t
, 
t_t
;

1125 
t
 = 0;

1127 
sdbp
->
s_back
 = 
NULL
;

1128 
sdbp
->
s_imy
 = 
NULL
;

1129 
sdbp
->
g
 = sdbp->
ed_g
;

1130 
sdbp
->
o
 = sdbp->
ed_o
;

1136 i(
sdbp
->
s_ft
 != 1 ||

1137 
	`TAILQ_FIRST
(&
sdbp
->
aive_queue
!
NULL
 ||

1138 
	`TAILQ_FIRST
(&
sdbp
->
jo_queue
!
NULL
) {

1139 
	`__db_rx
(
sdbp
->
dbv
,

1141 
t
 = 
EINVAL
;

1143 
sdbp
->
s_ft
 = 0;

1145 (
dbc
 = 
	`TAILQ_FIRST
(&
sdbp
->
_queue
)!
NULL
)

1146 i((
t_t
 = 
	`__dbc_deroy
(
dbc
)!0 && 
t
 == 0)

1147 
t
 = 
t_t
;

1149 
	`F_CLR
(
sdbp
, 
DB_AM_SECONDARY
);

1150  (
t
);

1151 
	}
}

1160 
	$__db_log_ge
(
dbp
, 
txn
, 
l
, 
pgno
, 
ge
)

1161 
DB
 *
dbp
;

1162 
DB_TXN
 *
txn
;

1163 
DB_LSN
 *
l
;

1164 
db_pgno_t
 
pgno
;

1165 
PAGE
 *
ge
;

1167 
DBT
 
ge_dbt
;

1168 
DB_LSN
 
w_l
;

1169 
t
;

1171 i(!
	`LOGGING_ON
(
dbp
->
dbv
|| 
txn
 =
NULL
)

1174 
	`memt
(&
ge_dbt
, 0, (page_dbt));

1175 
ge_dbt
.
size
 = 
dbp
->
pgsize
;

1176 
ge_dbt
.
da
 = 
ge
;

1178 
t
 = 
	`__d_masub_log
(
dbp
, 
txn
, &
w_l
, 0, 
pgno
, &
ge_dbt
, 
l
);

1180 i(
t
 == 0)

1181 
ge
->
l
 = 
w_l
;

1182  (
t
);

1183 
	}
}

1192 #unde
BACKUP_PREFIX


1193 
	#BACKUP_PREFIX
 "__db."

	)

1195 #unde
MAX_INT_TO_HEX


1196 
	#MAX_INT_TO_HEX
 8

	)

1199 
	$__db_backup_me
(
dbv
, 
me
, 
txn
, 
backup
)

1200 
DB_ENV
 *
dbv
;

1201 cڡ *
me
;

1202 
DB_TXN
 *
txn
;

1203 **
backup
;

1205 
u_t32_t
 
id
;

1206 
size_t
 
n
;

1207 
t
;

1208 *
p
, *

;

1210 *
backup
 = 
NULL
;

1217 
n
 = 
	`
(
me
+ sn(
BACKUP_PREFIX
+ 2 * 
MAX_INT_TO_HEX
 + 1;

1218 i((
t
 = 
	`__os_mloc
(
dbv
, 
n
, &

)) != 0)

1219  (
t
);

1236 
p
 = 
	`__db_h
(
me
);

1237 i(
	`IS_REAL_TXN
(
txn
)) {

1238 
	`__os_unique_id
(
dbv
, &
id
);

1239 i(
p
 =
NULL
)

1240 
	`tf
(

, 
n
, "%s%x.%x",

1241 
BACKUP_PREFIX
, 
txn
->
txnid
, 
id
);

1243 
	`tf
(

, 
n
, "%.*s%x.%x",

1244 ()(
p
 - 
me
+ 1,ame, 
txn
->
txnid
, 
id
);

1246 i(
p
 =
NULL
)

1247 
	`tf
(

, 
n
, "%s%s", 
BACKUP_PREFIX
, 
me
);

1249 
	`tf
(

, 
n
, "%.*s%s%s",

1250 ()(
p
 - 
me
+ 1,ame, 
BACKUP_PREFIX
, + 1);

1253 *
backup
 = 

;

1255 
	}
}

1257 #ifde
CONFIG_TEST


1267 
	$__db_cy
(
dbv
, 
dbp
, 
me
)

1268 
DB_ENV
 *
dbv
;

1269 
DB
 *
dbp
;

1270 cڡ *
me
;

1272 
DB_MPOOL
 *
dbmp
;

1273 
DB_MPOOLFILE
 *
mpf
;

1275 
	`DB_ASSERT
(
dbv
, 
dbp
 !
NULL
 || 
me
 != NULL);

1277 i(
me
 =
NULL
) {

1278 
dbmp
 = 
dbv
->
mp_hd
;

1279 
mpf
 = 
dbp
->mpf;

1280 
me
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mpf
->
m
->
th_off
);

1283 i(
dbp
 !
NULL
 && dbp->
ty
 =
DB_QUEUE
)

1284  (
	`__qam_docy
(
dbp
, 
me
));

1286  (
	`__db_docy
(
dbv
, 
me
));

1287 
	}
}

1290 
	$__qam_docy
(
dbp
, 
me
)

1291 
DB
 *
dbp
;

1292 cڡ *
me
;

1294 
QUEUE_FILELIST
 *
fi
, *

;

1295 
t
;

1296 
buf
[
DB_MAXPATHLEN
], *
d
;

1298 
fi
 = 
NULL
;

1299 i((
t
 = 
	`__db_docy
(
dbp
->
dbv
, 
me
)) != 0)

1300  (
t
);

1301 i(
dbp
->
mpf
 !
NULL
 &&

1302 (
t
 = 
	`__qam_g_fi
(
dbp
, &
fi
)) != 0)

1303  (
t
);

1305 i(
fi
 =
NULL
)

1307 
d
 = ((
QUEUE
 *)
dbp
->
q_
)->dir;

1308 

 = 
fi
; fp->
mpf
 !
NULL
; fp++) {

1309 
	`tf
(
buf
, (buf),

1310 
QUEUE_EXTENT
, 
d
, 
PATH_SEPARATOR
[0], 
me
, 

->
id
);

1311 i((
t
 = 
	`__db_docy
(
dbp
->
dbv
, 
buf
)) != 0)

1312  (
t
);

1315 
	`__os_
(
dbp
->
dbv
, 
fi
);

1317 
	}
}

1324 
	$__db_docy
(
dbv
, 
me
)

1325 
DB_ENV
 *
dbv
;

1326 cڡ *
me
;

1328 
size_t
 
n
;

1329 
dt
, 
i
, 
t
;

1330 *
cy
, **
me
, *
p
, *
_me
;

1332 
dt
 = 0;

1333 
cy
 = 
NULL
;

1334 
me
 = 
NULL
;

1337 i((
t
 = 
	`__db_ame
(
dbv
,

1338 
DB_APP_DATA
, 
me
, 0, 
NULL
, &
_me
)) != 0)

1339  (
t
);

1347 i(
	`__os_exis
(
dbv
, 
_me
, 
NULL
) != 0) {

1348 
	`__os_
(
dbv
, 
_me
);

1358 
n
 = 
	`
(
_me
) + (".afterop");

1359 i((
t
 = 
	`__os_mloc
(
dbv
, 
n
, &
cy
)) != 0)

1360 
r
;

1361 
	`tf
(
cy
, 
n
, "%s.a", 
_me
);

1362 i((
t
 = 
	`__db_makecy
(
dbv
, 
_me
, 
cy
)) != 0)

1363 
r
;

1368 i((
p
 = 
	`__db_h
(
_me
)!
NULL
)

1369 *
p
 = '\0';

1370 i((
t
 = 
	`__os_dli
(
dbv
, 
_me
, &
me
, &
dt
)) != 0)

1371 
r
;

1379 
i
 = 0; i < 
dt
; i++) {

1381 i(
	`cmp
(

1382 
me
[
i
], 
BACKUP_PREFIX
, (BACKUP_PREFIX) - 1) != 0)

1384 
p
 = 
me
[
i
] + (
BACKUP_PREFIX
);

1385 
p
 +
	`rn
(p, "0123456789ABCDEFabcdef");

1386 i(*
p
 != '.')

1388 ++
p
;

1389 
p
 +
	`rn
(p, "0123456789ABCDEFabcdef");

1390 i(*
p
 != '\0')

1399 i(
_me
 !
NULL
) {

1400 
	`__os_
(
dbv
, 
_me
);

1401 
_me
 = 
NULL
;

1403 i((
t
 = 
	`__db_ame
(

1404 
dbv
, 
DB_APP_DATA
, 
me
[
i
], 0, 
NULL
, &
_me
)) != 0)

1405 
r
;

1406 i(
cy
 !
NULL
) {

1407 
	`__os_
(
dbv
, 
cy
);

1408 
cy
 = 
NULL
;

1410 
n
 = 
	`
(
_me
) + (".afterop");

1411 i((
t
 = 
	`__os_mloc
(
dbv
, 
n
, &
cy
)) != 0)

1412 
r
;

1413 
	`tf
(
cy
, 
n
, "%s.a", 
_me
);

1414 i((
t
 = 
	`__db_makecy
(
dbv
, 
_me
, 
cy
)) != 0)

1415 
r
;

1418 
r
: i(
me
 !
NULL
)

1419 
	`__os_d
(
dbv
, 
me
, 
dt
);

1420 i(
cy
 !
NULL
)

1421 
	`__os_
(
dbv
, 
cy
);

1422 i(
_me
 !
NULL
)

1423 
	`__os_
(
dbv
, 
_me
);

1424  (
t
);

1425 
	}
}

1428 
	$__db_makecy
(
dbv
, 
c
, 
de
)

1429 
DB_ENV
 *
dbv
;

1430 cڡ *
c
, *
de
;

1432 
DB_FH
 *
rfhp
, *
wfhp
;

1433 
size_t
 
rt
, 
wt
;

1434 
t
;

1435 *
buf
;

1437 
rfhp
 = 
wfhp
 = 
NULL
;

1439 i((
t
 = 
	`__os_mloc
(
dbv
, 64 * 1024, &
buf
)) != 0)

1440 
r
;

1442 i((
t
 = 
	`__os_ݒ
(
dbv
, 
c
, 0,

1443 
DB_OSO_RDONLY
, 
	`__db_omode
(
OWNER_RW
), &
rfhp
)) != 0)

1444 
r
;

1445 i((
t
 = 
	`__os_ݒ
(
dbv
, 
de
, 0,

1446 
DB_OSO_CREATE
 | 
DB_OSO_TRUNC
, 
	`__db_omode
(
OWNER_RW
), &
wfhp
)) != 0)

1447 
r
;

1450 i((
t
 =

1451 
	`__os_ad
(
dbv
, 
rfhp
, 
buf
, (buf), &
rt
)) != 0)

1452 
r
;

1453 i(
rt
 == 0)

1455 i((
t
 =

1456 
	`__os_wre
(
dbv
, 
wfhp
, 
buf
, (buf), &
wt
)) != 0)

1457 
r
;

1461 
r
: 
	`__db_r
(
dbv
, 
t
, "__db_makecy: %-> %s", 
c
, 
de
);

1464 i(
buf
 !
NULL
)

1465 
	`__os_
(
dbv
, 
buf
);

1466 i(
rfhp
 !
NULL
)

1467 ()
	`__os_ohd
(
dbv
, 
rfhp
);

1468 i(
wfhp
 !
NULL
)

1469 ()
	`__os_ohd
(
dbv
, 
wfhp
);

1470  (
t
);

1471 
	}
}

	@../db/db_am.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/hash.h
"

15 
	~"dbc/lock.h
"

16 
	~"dbc/log.h
"

17 
	~"dbc/mp.h
"

18 
	~"dbc/qam.h
"

19 
	~"dbc/txn.h
"

21 
__db_nd_imy
 
__P
((
DBC
 *, 
DBT
 *, DBT *));

22 
__db_cdy_g
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

23 
__dbc_t_iܙy
 
__P
((
DBC
 *, 
DB_CACHE_PRIORITY
));

24 
__dbc_g_iܙy
 
__P
((
DBC
 *, 
DB_CACHE_PRIORITY
* ));

34 
	$__db_curs_t
(
dbp
, 
txn
, 
dbty
, 
ro
, 
is_d
, 
lock
, 
db
)

35 
DB
 *
dbp
;

36 
DB_TXN
 *
txn
;

37 
DBTYPE
 
dbty
;

38 
db_pgno_t
 
ro
;

39 
is_d
;

40 
DB_LOCKER
 *
lock
;

41 
DBC
 **
db
;

43 
DBC
 *
dbc
;

44 
DBC_INTERNAL
 *

;

45 
DB_ENV
 *
dbv
;

46 
db_thadid_t
 
tid
;

47 
lod
, 
t
;

48 
pid_t
 
pid
;

50 
dbv
 = 
dbp
->dbenv;

51 
lod
 = 0;

61 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

63 #ide
HAVE_NO_DB_REFCOUNT


71 i(
txn
 !
NULL
 && !
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
) &&

72 
dbp
->
log_fame
 !
NULL
 &&

73 !
is_d
 && 
lock
 =
NULL
 && !
	`IS_REP_CLIENT
(
dbv
) &&

74 (
t
 = 
	`__txn_cd_ame
(
dbv
, 
txn
, 
dbp
->
log_fame
)) != 0)

75  (
t
);

78 
	`TAILQ_FOREACH
(
dbc
, &
dbp
->
_queue
, 
lks
)

79 i(
dbty
 =
dbc
->dbtype) {

80 
	`TAILQ_REMOVE
(&
dbp
->
_queue
, 
dbc
, 
lks
);

81 
	`F_CLR
(
dbc
, ~
DBC_OWN_LID
);

84 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

86 i(
dbc
 =
NULL
) {

87 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DBC
), &
dbc
)) != 0)

88  (
t
);

89 
lod
 = 1;

90 
dbc
->
ags
 = 0;

92 
dbc
->
dbp
 = dbp;

95 i(
	`LOCKING_ON
(
dbv
)) {

106 i(!
	`DB_IS_THREADED
(
dbp
)) {

107 i(
dbp
->
dbv
->
v_ef
 =
NULL
 &&

108 (
t
 = 
	`__lock_id
(
dbv
, 
NULL
,

109 (
DB_LOCKER
 **)&
dbp
->
dbv
->
v_ef
)) != 0)

110 
r
;

111 
dbc
->
ef
 = 
dbp
->
dbv
->
v_ef
;

113 i((
t
 = 
	`__lock_id
(
dbv
, 
NULL
,

114 (
DB_LOCKER
 **)&
dbc
->
ef
)) != 0)

115 
r
;

116 
	`F_SET
(
dbc
, 
DBC_OWN_LID
);

132 i(
	`CDB_LOCKING
(
dbv
) &&

133 
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
))

134 
	`memy
(
dbc
->
lock
.
feid
,

135 
dbp
->
s_imy
->
feid
, 
DB_FILE_ID_LEN
);

137 
	`memy
(
dbc
->
lock
.
feid
,

138 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

140 i(
	`CDB_LOCKING
(
dbv
)) {

141 i(
	`F_ISSET
(
dbv
, 
DB_ENV_CDB_ALLDB
)) {

148 
	`DB_ASSERT
(
dbv
, (
db_pgno_t
) ==

149 (
u_t32_t
));

150 
dbc
->
lock_dbt
.
size
 = (
u_t32_t
);

151 
dbc
->
lock_dbt
.
da
 = &dbc->
lock
.
pgno
;

152 
dbc
->
lock
.
pgno
 = 0;

154 
dbc
->
lock_dbt
.
size
 = 
DB_FILE_ID_LEN
;

155 
dbc
->
lock_dbt
.
da
 = dbc->
lock
.
feid
;

158 
dbc
->
lock
.
ty
 = 
DB_PAGE_LOCK
;

159 
dbc
->
lock_dbt
.
size
 = (dbc->
lock
);

160 
dbc
->
lock_dbt
.
da
 = &dbc->
lock
;

164 
dbty
) {

165 
DB_BTREE
:

166 
DB_RECNO
:

167 i((
t
 = 
	`__bamc_
(
dbc
, 
dbty
)) != 0)

168 
r
;

170 
DB_HASH
:

171 i((
t
 = 
	`__hamc_
(
dbc
)) != 0)

172 
r
;

174 
DB_QUEUE
:

175 i((
t
 = 
	`__qamc_
(
dbc
)) != 0)

176 
r
;

178 
DB_UNKNOWN
:

180 
t
 = 
	`__db_unknown_ty
(
dbv
, "DB->curs", 
dbty
);

181 
r
;

184 

 = 
dbc
->

;

188 
dbc
->
dbty
 = dbtype;

189 
	`RESET_RET_MEM
(
dbc
);

190 
dbc
->
t_iܙy
 = 
__dbc_t_iܙy
;

191 
dbc
->
g_iܙy
 = 
__dbc_g_iܙy
;

192 
dbc
->
iܙy
 = 
dbp
->priority;

194 i((
dbc
->
txn
 =xn!
NULL
)

195 
dbc
->
lock
 = 
txn
->locker;

196 i(
	`LOCKING_ON
(
dbv
)) {

218 i(
lock
 !
NULL
)

219 
dbc
->
lock
 =ocker;

225 i(
	`DB_IS_THREADED
(
dbp
)) {

226 
dbv
->
	`thad_id
(dbv, &
pid
, &
tid
);

227 
	`__lock_t_thad_id
(
dbc
->
ef
, 
pid
, 
tid
);

229 
dbc
->
lock
 = (
DB_LOCKER
 *)dbc->
ef
;

240 i(
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
))

241 
dbc
->
g
 = dbc->
c_g
 = 
__dbc_cdy_g_
;

243 i(
is_d
)

244 
	`F_SET
(
dbc
, 
DBC_OPD
);

245 i(
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
))

246 
	`F_SET
(
dbc
, 
DBC_RECOVER
);

247 i(
	`F_ISSET
(
dbp
, 
DB_AM_COMPENSATE
))

248 
	`F_SET
(
dbc
, 
DBC_DONTLOCK
);

251 

 = 
dbc
->

;

252 

->
d
 = 
NULL
;

254 

->
dx
 = 0;

255 

->
ge
 = 
NULL
;

256 

->
pgno
 = 
PGNO_INVALID
;

257 

->
ro
 =oot;

259 
dbty
) {

260 
DB_BTREE
:

261 
DB_RECNO
:

262 i((
t
 = 
	`__bamc_esh
(
dbc
)) != 0)

263 
r
;

265 
DB_HASH
:

266 
DB_QUEUE
:

268 
DB_UNKNOWN
:

270 
t
 = 
	`__db_unknown_ty
(
dbv
, "DB->curs", 
dbp
->
ty
);

271 
r
;

279 i(
txn
 !
NULL
)

280 ++
txn
->
curss
;

282 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

283 
	`TAILQ_INSERT_TAIL
(&
dbp
->
aive_queue
, 
dbc
, 
lks
);

284 
	`F_SET
(
dbc
, 
DBC_ACTIVE
);

285 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

287 *
db
 = 
dbc
;

290 
r
: i(
lod
)

291 
	`__os_
(
dbv
, 
dbc
);

292  (
t
);

293 
	}
}

302 
	$__db_put
(
dbp
, 
txn
, 
key
, 
da
, 
ags
)

303 
DB
 *
dbp
;

304 
DB_TXN
 *
txn
;

305 
DBT
 *
key
, *
da
;

306 
u_t32_t
 
ags
;

308 
DBC
 *
dbc
;

309 
DBT
 
tda
;

310 
DB_ENV
 *
dbv
;

311 
t
, 
t_t
;

313 
dbv
 = 
dbp
->dbenv;

315 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 
DB_WRITELOCK
)) != 0)

316  (
t
);

318 
	`DEBUG_LWRITE
(
dbc
, 
txn
, "DB->put", 
key
, 
da
, 
ags
);

320 
	`SET_RET_MEM
(
dbc
, 
dbp
);

332 
	`F_SET
(
dbc
, 
DBC_TRANSIENT
);

334 
ags
) {

335 
DB_APPEND
:

342 
tda
 = *
da
;

348 
dbp
->
ty
) {

349 
DB_QUEUE
:

350 i((
t
 = 
	`__qam_nd
(
dbc
, 
key
, &
tda
)) != 0)

351 
r
;

353 
DB_RECNO
:

354 i((
t
 = 
	`__m_nd
(
dbc
, 
key
, &
tda
)) != 0)

355 
r
;

357 
DB_BTREE
:

358 
DB_HASH
:

359 
DB_UNKNOWN
:

362 
	`DB_ASSERT
(
dbv
,

363 
dbp
->
ty
 =
DB_QUEUE
 || dbp->ty =
DB_RECNO
);

365 
t
 = 
	`__db_
(
dbv
, "DB->put", 0);

366 
r
;

379 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
));

381 i(
	`LIST_FIRST
(&
dbp
->
s_cds
!
NULL
 &&

382 (
t
 = 
	`__dbt_urcy
(
dbv
, 
key
)) == 0)

383 
t
 = 
	`__db_nd_imy
(
dbc
, 
key
, &
tda
);

389 
	`FREE_IF_NEEDED
(
dbv
, &
tda
);

392 
de
;

398 i(
t
 == 0)

399 
t
 = 
	`__dbc_put
(
dbc
,

400 
key
, 
da
, 
ags
 =0 ? 
DB_KEYLAST
 : flags);

402 
r
:

403 
de
:

404 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

405 
t
 = 
t_t
;

407  (
t
);

408 
	}
}

417 
	$__db_d
(
dbp
, 
txn
, 
key
, 
ags
)

418 
DB
 *
dbp
;

419 
DB_TXN
 *
txn
;

420 
DBT
 *
key
;

421 
u_t32_t
 
ags
;

423 
DBC
 *
dbc
;

424 
DBT
 
da
;

425 
u_t32_t
 
f_
, 
f_xt
;

426 
t
, 
t_t
;

429 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 
DB_WRITELOCK
)) != 0)

430 
r
;

432 
	`DEBUG_LWRITE
(
dbc
, 
txn
, "DB->d", 
key
, 
NULL
, 
ags
);

433 
	`COMPQUIET
(
ags
, 0);

442 
	`memt
(&
da
, 0, (data));

443 
	`F_SET
(&
da
, 
DB_DBT_USERMEM
 | 
DB_DBT_ISSET
);

444 
	`F_SET
(
key
, 
DB_DBT_ISSET
);

450 
f_
 = 
DB_SET
;

451 
f_xt
 = 
DB_NEXT_DUP
;

452 i(
	`STD_LOCKING
(
dbc
)) {

453 
f_
 |
DB_RMW
;

454 
f_xt
 |
DB_RMW
;

481 i(!
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
) &&

482 
	`LIST_FIRST
(&
dbp
->
s_cds
=
NULL
) {

483 #ifde
HAVE_QUEUE


484 i(
dbp
->
ty
 =
DB_QUEUE
) {

485 
t
 = 
	`__qam_de
(
dbc
, 
key
);

486 
	`F_CLR
(
key
, 
DB_DBT_ISSET
);

487 
de
;

492 i((
t
 = 
	`__dbc_g
(
dbc
, 
key
, &
da
, 
f_
)) != 0)

493 
r
;

495 #ifde
HAVE_HASH


496 i(
dbp
->
ty
 =
DB_HASH
 && 
dbc
->

->
d
 =
NULL
) {

497 
t
 = 
	`__ham_quick_de
(
dbc
);

498 
de
;

502 i((
dbp
->
ty
 =
DB_BTREE
 || dbp->ty =
DB_RECNO
) &&

503 !
	`F_ISSET
(
dbp
, 
DB_AM_DUP
)) {

504 
t
 = 
dbc
->
	`am_d
(dbc);

505 
de
;

507 } i((
t
 = 
	`__dbc_g
(
dbc
, 
key
, &
da
, 
f_
)) != 0)

508 
r
;

512 i((
t
 = 
	`__dbc_d
(
dbc
, 0)) != 0)

514 
	`F_SET
(
key
, 
DB_DBT_ISSET
);

515 
	`F_SET
(&
da
, 
DB_DBT_ISSET
);

516 i((
t
 = 
	`__dbc_g
(
dbc
, 
key
, &
da
, 
f_xt
)) != 0) {

517 i(
t
 =
DB_NOTFOUND
)

518 
t
 = 0;

523 
de
:

524 
r
:

525 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

526 
t
 = 
t_t
;

528  (
t
);

529 
	}
}

538 
	$__db_sync
(
dbp
)

539 
DB
 *
dbp
;

541 
t
, 
t_t
;

543 
t
 = 0;

546 i(
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
))

550 i(
dbp
->
ty
 =
DB_RECNO
)

551 
t
 = 
	`__m_wreback
(
dbp
);

554 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

555  (
t
);

557 i(
dbp
->
ty
 =
DB_QUEUE
)

558 
t
 = 
	`__qam_sync
(
dbp
);

561 i((
t_t
 = 
	`__memp_fsync
(
dbp
->
mpf
)!0 && 
t
 == 0)

562 
t
 = 
t_t
;

564  (
t
);

565 
	}
}

575 
	$__db_assoc
(
dbp
, 
txn
, 
sdbp
, 
back
, 
ags
)

576 
DB
 *
dbp
, *
sdbp
;

577 
DB_TXN
 *
txn
;

578 (*
back

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *, DBT *));

579 
u_t32_t
 
ags
;

581 
DB_ENV
 *
dbv
;

582 
DBC
 *
pdbc
, *
sdbc
;

583 
DBT
 
key
, 
da
, 
skey
, *
tskeyp
;

584 
bud
, 
t
, 
t_t
;

585 
u_t32_t
 
nskey
;

587 
dbv
 = 
dbp
->dbenv;

588 
pdbc
 = 
sdbc
 = 
NULL
;

589 
t
 = 0;

591 
	`memt
(&
skey
, 0, (
DBT
));

592 
nskey
 = 0;

593 
tskeyp
 = 
NULL
;

601 
bud
 = 0;

602 i(
	`LF_ISSET
(
DB_CREATE
)) {

603 i((
t
 = 
	`__db_curs
(
sdbp
, 
txn
, &
sdbc
, 0)) != 0)

604 
r
;

610 
	`memt
(&
key
, 0, (
DBT
));

611 
	`memt
(&
da
, 0, (
DBT
));

612 
	`F_SET
(&
key
, 
DB_DBT_PARTIAL
 | 
DB_DBT_USERMEM
);

613 
	`F_SET
(&
da
, 
DB_DBT_PARTIAL
 | 
DB_DBT_USERMEM
);

614 i((
t
 = 
	`__dbc_g
(
sdbc
, &
key
, &
da
,

615 (
	`STD_LOCKING
(
sdbc
? 
DB_RMW
 : 0) |

616 
DB_FIRST
)=
DB_NOTFOUND
) {

617 
bud
 = 1;

618 
t
 = 0;

621 i((
t_t
 = 
	`__dbc_o
(
sdbc
)!0 && 
t
 == 0)

622 
t
 = 
t_t
;

625 
sdbc
 = 
NULL
;

627 i(
t
 != 0)

628 
r
;

634 
sdbp
->
s_back
 = 
back
;

635 
sdbp
->
s_imy
 = 
dbp
;

637 
sdbp
->
ed_g
 = sdbp->
g
;

638 
sdbp
->
g
 = 
__db_cdy_g
;

640 
sdbp
->
ed_o
 = sdbp->
o
;

641 
sdbp
->
o
 = 
__db_cdy_o_
;

643 
	`F_SET
(
sdbp
, 
DB_AM_SECONDARY
);

645 i(
	`LF_ISSET
(
DB_IMMUTABLE_KEY
))

646 
	`FLD_SET
(
sdbp
->
s_assoc_ags
, 
DB_ASSOC_IMMUTABLE_KEY
);

653 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

656 
	`DB_ASSERT
(
dbv
, 
sdbp
->
s_ft
 == 0);

657 
sdbp
->
s_ft
 = 1;

658 
	`LIST_INSERT_HEAD
(&
dbp
->
s_cds
, 
sdbp
, 
s_lks
);

659 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

661 i(
bud
) {

675 i((
t
 = 
	`__db_curs
(
sdbp
, 
txn
, &
sdbc
,

676 
	`CDB_LOCKING
(
sdbp
->
dbv
? 
DB_WRITECURSOR
 : 0)) != 0)

677 
r
;

678 i((
t
 = 
	`__db_curs_t
(
dbp
,

679 
txn
, 
dbp
->
ty
, 
PGNO_INVALID
, 0, 
sdbc
->
lock
, &
pdbc
)) != 0)

680 
r
;

683 
dbp
->
assoc_lock
 = 
sdbc
->
lock
;

685 
	`memt
(&
key
, 0, (
DBT
));

686 
	`memt
(&
da
, 0, (
DBT
));

687 (
t
 = 
	`__dbc_g
(
pdbc
, &
key
, &
da
, 
DB_NEXT
)) == 0) {

688 i((
t
 = 
	`back
(
sdbp
, &
key
, &
da
, &
skey
)) != 0) {

689 i(
t
 =
DB_DONOTINDEX
)

691 
r
;

693 i(
	`F_ISSET
(&
skey
, 
DB_DBT_MULTIPLE
)) {

694 #ifde
DIAGNOSTIC


695 
	`__db_check_skeyt
(
sdbp
, &
skey
);

697 
nskey
 = 
skey
.
size
;

698 
tskeyp
 = (
DBT
 *)
skey
.
da
;

700 
nskey
 = 1;

701 
tskeyp
 = &
skey
;

703 
	`SWAP_IF_NEEDED
(
sdbp
, &
key
);

704 ; 
nskey
 > 0;skey--, 
tskeyp
++) {

705 i((
t
 = 
	`__dbc_put
(
sdbc
,

706 
tskeyp
, &
key
, 
DB_UPDATE_SECONDARY
)) != 0)

707 
r
;

708 
	`FREE_IF_NEEDED
(
dbv
, 
tskeyp
);

710 
	`SWAP_IF_NEEDED
(
sdbp
, &
key
);

711 
	`FREE_IF_NEEDED
(
dbv
, &
skey
);

713 i(
t
 =
DB_NOTFOUND
)

714 
t
 = 0;

717 
r
: i(
sdbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(sdbc)!0 && 
t
 == 0)

718 
t
 = 
t_t
;

720 i(
pdbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
dbc)!0 && 
t
 == 0)

721 
t
 = 
t_t
;

723 
dbp
->
assoc_lock
 = 
NULL
;

725 ; 
nskey
 > 0;skey--, 
tskeyp
++)

726 
	`FREE_IF_NEEDED
(
dbv
, 
tskeyp
);

727 
	`FREE_IF_NEEDED
(
dbv
, &
skey
);

729  (
t
);

730 
	}
}

738 
	$__db_cdy_g
(
sdbp
, 
txn
, 
skey
, 
da
, 
ags
)

739 
DB
 *
sdbp
;

740 
DB_TXN
 *
txn
;

741 
DBT
 *
skey
, *
da
;

742 
u_t32_t
 
ags
;

744 
	`DB_ASSERT
(
sdbp
->
dbv
, 
	`F_ISSET
(sdbp, 
DB_AM_SECONDARY
));

745  (
	`__db_pg_
(
sdbp
, 
txn
, 
skey
, 
NULL
, 
da
, 
ags
));

746 
	}
}

757 
	$__db_cdy_o
(
sdbp
, 
ags
)

758 
DB
 *
sdbp
;

759 
u_t32_t
 
ags
;

761 
DB_ENV
 *
dbv
;

762 
DB
 *
imy
;

763 
doo
;

765 
doo
 = 0;

766 
imy
 = 
sdbp
->
s_imy
;

767 
dbv
 = 
imy
->dbenv;

769 
	`MUTEX_LOCK
(
dbv
, 
imy
->
mux
);

779 
	`DB_ASSERT
(
dbv
, 
sdbp
->
s_ft
 != 0);

780 i(--
sdbp
->
s_ft
 == 0) {

781 
	`LIST_REMOVE
(
sdbp
, 
s_lks
);

783 
doo
 = 1;

785 
	`MUTEX_UNLOCK
(
dbv
, 
imy
->
mux
);

791  (
doo
 ? 
	`__db_o
(
sdbp
, 
NULL
, 
ags
) : 0);

792 
	}
}

800 
	$__db_nd_imy
(
dbc
, 
key
, 
da
)

801 
DBC
 *
dbc
;

802 
DBT
 *
key
, *
da
;

804 
DB
 *
dbp
, *
sdbp
;

805 
DBC
 *
sdbc
, *
pdbc
;

806 
DBT
 
dpkey
, 
pkey
, 
pda
, 
skey
;

807 
DB_ENV
 *
dbv
;

808 
cmp
, 
t
, 
t_t
;

810 
dbp
 = 
dbc
->dbp;

811 
dbv
 = 
dbp
->dbenv;

812 
sdbp
 = 
NULL
;

813 
t
 = 0;

820 
pdbc
 = 
NULL
;

821 i(
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
|| F_ISSET(
key
, DB_DBT_PARTIAL)) {

834 i((
t
 = 
	`__dbc_idup
(
dbc
, &
pdbc
, 
DB_POSITION
)) != 0)

835  (
t
);

836 
	`memt
(&
pkey
, 0, (
DBT
));

837 
	`memt
(&
pda
, 0, (
DBT
));

839 i((
t
 = 
	`__dbc_g
(
pdbc
, &
pkey
, &
pda
, 
DB_CURRENT
)) != 0)

840 
r
;

842 
key
 = &
pkey
;

843 
da
 = &
pda
;

855 i((
t
 = 
	`__db_s_f
(
dbp
, &
sdbp
)) != 0)

856 
r
;

857 ; 
sdbp
 !
NULL
 && 
t
 =0; = 
	`__db_s_xt
(&sdbp, 
dbc
->
txn
)) {

858 
	`memt
(&
skey
, 0, (
DBT
));

859 i((
t
 = 
sdbp
->
	`s_back
(sdbp, 
key
, 
da
, &
skey
)) != 0) {

860 i(
t
 =
DB_DONOTINDEX
)

862 
r
;

865 i((
t
 = 
	`__db_curs_t
(
sdbp
, 
dbc
->
txn
, sdbp->
ty
,

866 
PGNO_INVALID
, 0, 
dbc
->
lock
, &
sdbc
)) != 0) {

867 
	`FREE_IF_NEEDED
(
dbv
, &
skey
);

868 
r
;

870 i(
	`CDB_LOCKING
(
dbv
)) {

871 
	`DB_ASSERT
(
dbv
, 
sdbc
->
mylock
.
off
 =
LOCK_INVALID
);

872 
	`F_SET
(
sdbc
, 
DBC_WRITER
);

882 i(!
	`F_ISSET
(
sdbp
, 
DB_AM_DUP
)) {

883 
	`memt
(&
dpkey
, 0, (
DBT
));

884 
	`F_SET
(&
dpkey
, 
DB_DBT_MALLOC
);

885 
t
 = 
	`__dbc_g
(
sdbc
, &
skey
, &
dpkey
,

886 
DB_SET
 | (
	`STD_LOCKING
(
dbc
? 
DB_RMW
 : 0));

887 i(
t
 == 0) {

888 
cmp
 = 
	`__bam_defcmp
(
sdbp
, &
dpkey
, 
key
);

894 
	`__os_u
(
dbv
, 
dpkey
.
da
);

895 i(
cmp
 != 0) {

896 
	`__db_rx
(
dbv
, "%s%s",

899 
t
 = 
EINVAL
;

900 
r1
;

902 } i(
t
 !
DB_NOTFOUND
 && !
DB_KEYEMPTY
)

903 
r1
;

906 
t
 = 
	`__dbc_put
(
sdbc
, &
skey
, 
key
, 
DB_UPDATE_SECONDARY
);

908 
r1
: 
	`FREE_IF_NEEDED
(
dbv
, &
skey
);

910 i((
t_t
 = 
	`__dbc_o
(
sdbc
)!0 && 
t
 == 0)

911 
t
 = 
t_t
;

912 i(
t
 != 0)

913 
r
;

916 
r
: i(
pdbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
dbc)!0 && 
t
 == 0)

917 
t
 = 
t_t
;

918 i(
sdbp
 !
NULL
 &&

919 (
t_t
 = 
	`__db_s_de
(
sdbp
, 
dbc
->
txn
)!0 && 
t
 == 0)

920 
t
 = 
t_t
;

921  (
t
);

922 
	}
}

925 
	$__dbc_t_iܙy
(
dbc
, 
iܙy
)

926 
DBC
 *
dbc
;

927 
DB_CACHE_PRIORITY
 
iܙy
;

929 
dbc
->
iܙy
 =riority;

931 
	}
}

934 
	$__dbc_g_iܙy
(
dbc
, 
iܙy
)

935 
DBC
 *
dbc
;

936 
DB_CACHE_PRIORITY
 *
iܙy
;

938 *
iܙy
 = 
dbc
->priority;

940 
	}
}

	@../db/db_auto.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/log.h
"

11 
	~"dbc/txn.h
"

19 
	$__db_addm_log
(
dbp
, 
tx
, 
t_lp
, 
ags
,

20 
code
, 
pgno
, 
dx
, 
nbys
, 
hdr
,

21 
dbt
, 
g
)

22 
DB
 *
dbp
;

23 
DB_TXN
 *
tx
;

24 
DB_LSN
 *
t_lp
;

25 
u_t32_t
 
ags
;

26 
u_t32_t
 
code
;

27 
db_pgno_t
 
pgno
;

28 
u_t32_t
 
dx
;

29 
u_t32_t
 
nbys
;

30 cڡ 
DBT
 *
hdr
;

31 cڡ 
DBT
 *
dbt
;

32 
DB_LSN
 * 
g
;

34 
DBT
 
logc
;

35 
DB_ENV
 *
dbv
;

36 
DB_TXNLOGREC
 *

;

37 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

38 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

39 
u_t
 
ad
;

40 
u_t8_t
 *
bp
;

41 
is_dub
, 
t
;

43 
dbv
 = 
dbp
->dbenv;

44 
	`COMPQUIET
(

, 
NULL
);

46 
y
 = 
DB___db_addm
;

47 
ad
 = 0;

48 
p
 = 
t_lp
;

50 
t
 = 0;

52 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

53 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

54 i(
tx
 =
NULL
)

56 
is_dub
 = 0;

58 
is_dub
 = 1;

60 i(
tx
 =
NULL
) {

61 
txn_num
 = 0;

62 
lp
 = &
nu_l
;

63 
nu_l
.
fe
 =u_l.
offt
 = 0;

65 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

66 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

67  (
t
);

74 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

75 
txn_num
 = 
tx
->
txnid
;

78 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

79 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

80 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

81  (
t
);

83 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

84 + (
u_t32_t
)

85 + (
u_t32_t
)

86 + (
u_t32_t
)

87 + (
u_t32_t
)

88 + (
u_t32_t
)

89 + (
u_t32_t
+ (
hdr
 =
NULL
 ? 0 : hdr->
size
)

90 + (
u_t32_t
+ (
dbt
 =
NULL
 ? 0 : dbt->
size
)

91 + (*
g
);

92 i(
	`CRYPTO_ON
(
dbv
)) {

93 
ad
 =

94 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

95 
logc
.
size
 +
ad
;

98 i(
is_dub
 || 
tx
 =
NULL
) {

99 i((
t
 =

100 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

101  (
t
);

103 i((
t
 = 
	`__os_mloc
(
dbv
,

104 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

105  (
t
);

106 #ifde
DIAGNOSTIC


107 i((
t
 =

108 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

109 
	`__os_
(
dbv
, 

);

110  (
t
);

113 
logc
.
da
 = 

->data;

116 i(
ad
 > 0)

117 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

119 
bp
 = 
logc
.
da
;

121 
	`memy
(
bp
, &
y
, (rectype));

122 
bp
 +(
y
);

124 
	`memy
(
bp
, &
txn_num
, (txn_num));

125 
bp
 +(
txn_num
);

127 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

128 
bp
 +(
DB_LSN
);

130 
ump
 = (
u_t32_t
)
code
;

131 
	`memy
(
bp
, &
ump
, (uinttmp));

132 
bp
 +(
ump
);

134 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

135 
	`memy
(
bp
, &
ump
, (uinttmp));

136 
bp
 +(
ump
);

138 
ump
 = (
u_t32_t
)
pgno
;

139 
	`memy
(
bp
, &
ump
, (uinttmp));

140 
bp
 +(
ump
);

142 
ump
 = (
u_t32_t
)
dx
;

143 
	`memy
(
bp
, &
ump
, (uinttmp));

144 
bp
 +(
ump
);

146 
ump
 = (
u_t32_t
)
nbys
;

147 
	`memy
(
bp
, &
ump
, (uinttmp));

148 
bp
 +(
ump
);

150 i(
hdr
 =
NULL
) {

151 
zo
 = 0;

152 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

153 
bp
 +(
u_t32_t
);

155 
	`memy
(
bp
, &
hdr
->
size
, (hdr->size));

156 
bp
 +(
hdr
->
size
);

157 
	`memy
(
bp
, 
hdr
->
da
, hdr->
size
);

158 
bp
 +
hdr
->
size
;

161 i(
dbt
 =
NULL
) {

162 
zo
 = 0;

163 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

164 
bp
 +(
u_t32_t
);

166 
	`memy
(
bp
, &
dbt
->
size
, (dbt->size));

167 
bp
 +(
dbt
->
size
);

168 
	`memy
(
bp
, 
dbt
->
da
, dbt->
size
);

169 
bp
 +
dbt
->
size
;

172 i(
g
 !
NULL
) {

173 i(
tx
 !
NULL
) {

174 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

175 i(
	`LOG_COMPARE
(
g
, &

->
l
>0 && (
t
 =

176 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
g
) != 0))

177  (
t
);

179 
	`memy
(
bp
, 
g
, (*pagelsn));

181 
	`memt
(
bp
, 0, (*
g
));

182 
bp
 +(*
g
);

184 
	`DB_ASSERT
(
dbv
,

185 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

187 i(
is_dub
 || 
tx
 =
NULL
) {

188 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

189 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

190 *
lp
 = *
p
;

191 i(
p
 !
t_lp
)

192 *
t_lp
 = *
p
;

195 
t
 = 0;

196 #ifde
DIAGNOSTIC


201 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

202 
y
 |
DB_debug_FLAG
;

203 
	`memy
(
logc
.
da
, &
y
, (rectype));

205 i(!
	`IS_REP_CLIENT
(
dbv
))

206 
t
 = 
	`__log_put
(
dbv
,

207 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

209 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

210 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

211 
	`LSN_NOT_LOGGED
(*
t_lp
);

214 #ifde
LOG_DIAGNOSTIC


215 i(
t
 != 0)

216 ()
	`__db_addm_t
(
dbv
,

217 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

220 #ifde
DIAGNOSTIC


221 
	`__os_
(
dbv
, 
logc
.
da
);

223 i(
is_dub
 || 
tx
 =
NULL
)

224 
	`__os_
(
dbv
, 
logc
.
da
);

226  (
t
);

227 
	}
}

233 
	$__db_addm_ad
(
dbv
, 
cbuf
, 
g
)

234 
DB_ENV
 *
dbv
;

235 *
cbuf
;

236 
__db_addm_gs
 **
g
;

238 
__db_addm_gs
 *
gp
;

239 
u_t32_t
 
ump
;

240 
u_t8_t
 *
bp
;

241 
t
;

243 i((
t
 = 
	`__os_mloc
(
dbv
,

244 (
__db_addm_gs
+ (
DB_TXN
), &
gp
)) != 0)

245  (
t
);

246 
bp
 = 
cbuf
;

247 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

248 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

250 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

251 
bp
 +(
gp
->
ty
);

253 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

254 
bp
 +(
gp
->
tx
->
txnid
);

256 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

257 
bp
 +(
DB_LSN
);

259 
	`memy
(&
ump
, 
bp
, (uinttmp));

260 
gp
->
code
 = (
u_t32_t
)
ump
;

261 
bp
 +(
ump
);

263 
	`memy
(&
ump
, 
bp
, (uinttmp));

264 
gp
->
feid
 = (
t32_t
)
ump
;

265 
bp
 +(
ump
);

267 
	`memy
(&
ump
, 
bp
, (uinttmp));

268 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

269 
bp
 +(
ump
);

271 
	`memy
(&
ump
, 
bp
, (uinttmp));

272 
gp
->
dx
 = (
u_t32_t
)
ump
;

273 
bp
 +(
ump
);

275 
	`memy
(&
ump
, 
bp
, (uinttmp));

276 
gp
->
nbys
 = (
u_t32_t
)
ump
;

277 
bp
 +(
ump
);

279 
	`memt
(&
gp
->
hdr
, 0, (argp->hdr));

280 
	`memy
(&
gp
->
hdr
.
size
, 
bp
, (
u_t32_t
));

281 
bp
 +(
u_t32_t
);

282 
gp
->
hdr
.
da
 = 
bp
;

283 
bp
 +
gp
->
hdr
.
size
;

285 
	`memt
(&
gp
->
dbt
, 0, (argp->dbt));

286 
	`memy
(&
gp
->
dbt
.
size
, 
bp
, (
u_t32_t
));

287 
bp
 +(
u_t32_t
);

288 
gp
->
dbt
.
da
 = 
bp
;

289 
bp
 +
gp
->
dbt
.
size
;

291 
	`memy
(&
gp
->
g
, 
bp
, (argp->pagelsn));

292 
bp
 +(
gp
->
g
);

294 *
g
 = 
gp
;

296 
	}
}

304 
	$__db_big_log
(
dbp
, 
tx
, 
t_lp
, 
ags
,

305 
code
, 
pgno
, 
ev_pgno
, 
xt_pgno
, 
dbt
,

306 
g
, 
evl
, 
x
)

307 
DB
 *
dbp
;

308 
DB_TXN
 *
tx
;

309 
DB_LSN
 *
t_lp
;

310 
u_t32_t
 
ags
;

311 
u_t32_t
 
code
;

312 
db_pgno_t
 
pgno
;

313 
db_pgno_t
 
ev_pgno
;

314 
db_pgno_t
 
xt_pgno
;

315 cڡ 
DBT
 *
dbt
;

316 
DB_LSN
 * 
g
;

317 
DB_LSN
 * 
evl
;

318 
DB_LSN
 * 
x
;

320 
DBT
 
logc
;

321 
DB_ENV
 *
dbv
;

322 
DB_TXNLOGREC
 *

;

323 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

324 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

325 
u_t
 
ad
;

326 
u_t8_t
 *
bp
;

327 
is_dub
, 
t
;

329 
dbv
 = 
dbp
->dbenv;

330 
	`COMPQUIET
(

, 
NULL
);

332 
y
 = 
DB___db_big
;

333 
ad
 = 0;

334 
p
 = 
t_lp
;

336 
t
 = 0;

338 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

339 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

340 i(
tx
 =
NULL
)

342 
is_dub
 = 0;

344 
is_dub
 = 1;

346 i(
tx
 =
NULL
) {

347 
txn_num
 = 0;

348 
lp
 = &
nu_l
;

349 
nu_l
.
fe
 =u_l.
offt
 = 0;

351 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

352 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

353  (
t
);

360 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

361 
txn_num
 = 
tx
->
txnid
;

364 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

365 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

366 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

367  (
t
);

369 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

370 + (
u_t32_t
)

371 + (
u_t32_t
)

372 + (
u_t32_t
)

373 + (
u_t32_t
)

374 + (
u_t32_t
)

375 + (
u_t32_t
+ (
dbt
 =
NULL
 ? 0 : dbt->
size
)

376 + (*
g
)

377 + (*
evl
)

378 + (*
x
);

379 i(
	`CRYPTO_ON
(
dbv
)) {

380 
ad
 =

381 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

382 
logc
.
size
 +
ad
;

385 i(
is_dub
 || 
tx
 =
NULL
) {

386 i((
t
 =

387 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

388  (
t
);

390 i((
t
 = 
	`__os_mloc
(
dbv
,

391 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

392  (
t
);

393 #ifde
DIAGNOSTIC


394 i((
t
 =

395 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

396 
	`__os_
(
dbv
, 

);

397  (
t
);

400 
logc
.
da
 = 

->data;

403 i(
ad
 > 0)

404 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

406 
bp
 = 
logc
.
da
;

408 
	`memy
(
bp
, &
y
, (rectype));

409 
bp
 +(
y
);

411 
	`memy
(
bp
, &
txn_num
, (txn_num));

412 
bp
 +(
txn_num
);

414 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

415 
bp
 +(
DB_LSN
);

417 
ump
 = (
u_t32_t
)
code
;

418 
	`memy
(
bp
, &
ump
, (uinttmp));

419 
bp
 +(
ump
);

421 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

422 
	`memy
(
bp
, &
ump
, (uinttmp));

423 
bp
 +(
ump
);

425 
ump
 = (
u_t32_t
)
pgno
;

426 
	`memy
(
bp
, &
ump
, (uinttmp));

427 
bp
 +(
ump
);

429 
ump
 = (
u_t32_t
)
ev_pgno
;

430 
	`memy
(
bp
, &
ump
, (uinttmp));

431 
bp
 +(
ump
);

433 
ump
 = (
u_t32_t
)
xt_pgno
;

434 
	`memy
(
bp
, &
ump
, (uinttmp));

435 
bp
 +(
ump
);

437 i(
dbt
 =
NULL
) {

438 
zo
 = 0;

439 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

440 
bp
 +(
u_t32_t
);

442 
	`memy
(
bp
, &
dbt
->
size
, (dbt->size));

443 
bp
 +(
dbt
->
size
);

444 
	`memy
(
bp
, 
dbt
->
da
, dbt->
size
);

445 
bp
 +
dbt
->
size
;

448 i(
g
 !
NULL
) {

449 i(
tx
 !
NULL
) {

450 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

451 i(
	`LOG_COMPARE
(
g
, &

->
l
>0 && (
t
 =

452 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
g
) != 0))

453  (
t
);

455 
	`memy
(
bp
, 
g
, (*pagelsn));

457 
	`memt
(
bp
, 0, (*
g
));

458 
bp
 +(*
g
);

460 i(
evl
 !
NULL
) {

461 i(
tx
 !
NULL
) {

462 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

463 i(
	`LOG_COMPARE
(
evl
, &

->
l
>0 && (
t
 =

464 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
evl
) != 0))

465  (
t
);

467 
	`memy
(
bp
, 
evl
, (*prevlsn));

469 
	`memt
(
bp
, 0, (*
evl
));

470 
bp
 +(*
evl
);

472 i(
x
 !
NULL
) {

473 i(
tx
 !
NULL
) {

474 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

475 i(
	`LOG_COMPARE
(
x
, &

->
l
>0 && (
t
 =

476 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
x
) != 0))

477  (
t
);

479 
	`memy
(
bp
, 
x
, (*nextlsn));

481 
	`memt
(
bp
, 0, (*
x
));

482 
bp
 +(*
x
);

484 
	`DB_ASSERT
(
dbv
,

485 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

487 i(
is_dub
 || 
tx
 =
NULL
) {

488 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

489 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

490 *
lp
 = *
p
;

491 i(
p
 !
t_lp
)

492 *
t_lp
 = *
p
;

495 
t
 = 0;

496 #ifde
DIAGNOSTIC


501 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

502 
y
 |
DB_debug_FLAG
;

503 
	`memy
(
logc
.
da
, &
y
, (rectype));

505 i(!
	`IS_REP_CLIENT
(
dbv
))

506 
t
 = 
	`__log_put
(
dbv
,

507 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

509 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

510 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

511 
	`LSN_NOT_LOGGED
(*
t_lp
);

514 #ifde
LOG_DIAGNOSTIC


515 i(
t
 != 0)

516 ()
	`__db_big_t
(
dbv
,

517 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

520 #ifde
DIAGNOSTIC


521 
	`__os_
(
dbv
, 
logc
.
da
);

523 i(
is_dub
 || 
tx
 =
NULL
)

524 
	`__os_
(
dbv
, 
logc
.
da
);

526  (
t
);

527 
	}
}

533 
	$__db_big_ad
(
dbv
, 
cbuf
, 
g
)

534 
DB_ENV
 *
dbv
;

535 *
cbuf
;

536 
__db_big_gs
 **
g
;

538 
__db_big_gs
 *
gp
;

539 
u_t32_t
 
ump
;

540 
u_t8_t
 *
bp
;

541 
t
;

543 i((
t
 = 
	`__os_mloc
(
dbv
,

544 (
__db_big_gs
+ (
DB_TXN
), &
gp
)) != 0)

545  (
t
);

546 
bp
 = 
cbuf
;

547 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

548 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

550 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

551 
bp
 +(
gp
->
ty
);

553 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

554 
bp
 +(
gp
->
tx
->
txnid
);

556 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

557 
bp
 +(
DB_LSN
);

559 
	`memy
(&
ump
, 
bp
, (uinttmp));

560 
gp
->
code
 = (
u_t32_t
)
ump
;

561 
bp
 +(
ump
);

563 
	`memy
(&
ump
, 
bp
, (uinttmp));

564 
gp
->
feid
 = (
t32_t
)
ump
;

565 
bp
 +(
ump
);

567 
	`memy
(&
ump
, 
bp
, (uinttmp));

568 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

569 
bp
 +(
ump
);

571 
	`memy
(&
ump
, 
bp
, (uinttmp));

572 
gp
->
ev_pgno
 = (
db_pgno_t
)
ump
;

573 
bp
 +(
ump
);

575 
	`memy
(&
ump
, 
bp
, (uinttmp));

576 
gp
->
xt_pgno
 = (
db_pgno_t
)
ump
;

577 
bp
 +(
ump
);

579 
	`memt
(&
gp
->
dbt
, 0, (argp->dbt));

580 
	`memy
(&
gp
->
dbt
.
size
, 
bp
, (
u_t32_t
));

581 
bp
 +(
u_t32_t
);

582 
gp
->
dbt
.
da
 = 
bp
;

583 
bp
 +
gp
->
dbt
.
size
;

585 
	`memy
(&
gp
->
g
, 
bp
, (argp->pagelsn));

586 
bp
 +(
gp
->
g
);

588 
	`memy
(&
gp
->
evl
, 
bp
, (argp->prevlsn));

589 
bp
 +(
gp
->
evl
);

591 
	`memy
(&
gp
->
x
, 
bp
, (argp->nextlsn));

592 
bp
 +(
gp
->
x
);

594 *
g
 = 
gp
;

596 
	}
}

603 
	$__db_ovf_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
adju
, 
l
)

604 
DB
 *
dbp
;

605 
DB_TXN
 *
tx
;

606 
DB_LSN
 *
t_lp
;

607 
u_t32_t
 
ags
;

608 
db_pgno_t
 
pgno
;

609 
t32_t
 
adju
;

610 
DB_LSN
 * 
l
;

612 
DBT
 
logc
;

613 
DB_ENV
 *
dbv
;

614 
DB_TXNLOGREC
 *

;

615 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

616 
u_t32_t
 
ump
, 
y
, 
txn_num
;

617 
u_t
 
ad
;

618 
u_t8_t
 *
bp
;

619 
is_dub
, 
t
;

621 
dbv
 = 
dbp
->dbenv;

622 
	`COMPQUIET
(

, 
NULL
);

624 
y
 = 
DB___db_ovf
;

625 
ad
 = 0;

626 
p
 = 
t_lp
;

628 
t
 = 0;

630 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

631 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

632 i(
tx
 =
NULL
)

634 
is_dub
 = 0;

636 
is_dub
 = 1;

638 i(
tx
 =
NULL
) {

639 
txn_num
 = 0;

640 
lp
 = &
nu_l
;

641 
nu_l
.
fe
 =u_l.
offt
 = 0;

643 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

644 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

645  (
t
);

652 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

653 
txn_num
 = 
tx
->
txnid
;

656 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

657 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

658 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

659  (
t
);

661 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

662 + (
u_t32_t
)

663 + (
u_t32_t
)

664 + (
u_t32_t
)

665 + (*
l
);

666 i(
	`CRYPTO_ON
(
dbv
)) {

667 
ad
 =

668 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

669 
logc
.
size
 +
ad
;

672 i(
is_dub
 || 
tx
 =
NULL
) {

673 i((
t
 =

674 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

675  (
t
);

677 i((
t
 = 
	`__os_mloc
(
dbv
,

678 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

679  (
t
);

680 #ifde
DIAGNOSTIC


681 i((
t
 =

682 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

683 
	`__os_
(
dbv
, 

);

684  (
t
);

687 
logc
.
da
 = 

->data;

690 i(
ad
 > 0)

691 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

693 
bp
 = 
logc
.
da
;

695 
	`memy
(
bp
, &
y
, (rectype));

696 
bp
 +(
y
);

698 
	`memy
(
bp
, &
txn_num
, (txn_num));

699 
bp
 +(
txn_num
);

701 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

702 
bp
 +(
DB_LSN
);

704 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

705 
	`memy
(
bp
, &
ump
, (uinttmp));

706 
bp
 +(
ump
);

708 
ump
 = (
u_t32_t
)
pgno
;

709 
	`memy
(
bp
, &
ump
, (uinttmp));

710 
bp
 +(
ump
);

712 
ump
 = (
u_t32_t
)
adju
;

713 
	`memy
(
bp
, &
ump
, (uinttmp));

714 
bp
 +(
ump
);

716 i(
l
 !
NULL
) {

717 i(
tx
 !
NULL
) {

718 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

719 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

720 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

721  (
t
);

723 
	`memy
(
bp
, 
l
, (*lsn));

725 
	`memt
(
bp
, 0, (*
l
));

726 
bp
 +(*
l
);

728 
	`DB_ASSERT
(
dbv
,

729 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

731 i(
is_dub
 || 
tx
 =
NULL
) {

732 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

733 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

734 *
lp
 = *
p
;

735 i(
p
 !
t_lp
)

736 *
t_lp
 = *
p
;

739 
t
 = 0;

740 #ifde
DIAGNOSTIC


745 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

746 
y
 |
DB_debug_FLAG
;

747 
	`memy
(
logc
.
da
, &
y
, (rectype));

749 i(!
	`IS_REP_CLIENT
(
dbv
))

750 
t
 = 
	`__log_put
(
dbv
,

751 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

753 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

754 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

755 
	`LSN_NOT_LOGGED
(*
t_lp
);

758 #ifde
LOG_DIAGNOSTIC


759 i(
t
 != 0)

760 ()
	`__db_ovf_t
(
dbv
,

761 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

764 #ifde
DIAGNOSTIC


765 
	`__os_
(
dbv
, 
logc
.
da
);

767 i(
is_dub
 || 
tx
 =
NULL
)

768 
	`__os_
(
dbv
, 
logc
.
da
);

770  (
t
);

771 
	}
}

777 
	$__db_ovf_ad
(
dbv
, 
cbuf
, 
g
)

778 
DB_ENV
 *
dbv
;

779 *
cbuf
;

780 
__db_ovf_gs
 **
g
;

782 
__db_ovf_gs
 *
gp
;

783 
u_t32_t
 
ump
;

784 
u_t8_t
 *
bp
;

785 
t
;

787 i((
t
 = 
	`__os_mloc
(
dbv
,

788 (
__db_ovf_gs
+ (
DB_TXN
), &
gp
)) != 0)

789  (
t
);

790 
bp
 = 
cbuf
;

791 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

792 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

794 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

795 
bp
 +(
gp
->
ty
);

797 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

798 
bp
 +(
gp
->
tx
->
txnid
);

800 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

801 
bp
 +(
DB_LSN
);

803 
	`memy
(&
ump
, 
bp
, (uinttmp));

804 
gp
->
feid
 = (
t32_t
)
ump
;

805 
bp
 +(
ump
);

807 
	`memy
(&
ump
, 
bp
, (uinttmp));

808 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

809 
bp
 +(
ump
);

811 
	`memy
(&
ump
, 
bp
, (uinttmp));

812 
gp
->
adju
 = (
t32_t
)
ump
;

813 
bp
 +(
ump
);

815 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

816 
bp
 +(
gp
->
l
);

818 *
g
 = 
gp
;

820 
	}
}

827 
	$__db_lk_42_ad
(
dbv
, 
cbuf
, 
g
)

828 
DB_ENV
 *
dbv
;

829 *
cbuf
;

830 
__db_lk_42_gs
 **
g
;

832 
__db_lk_42_gs
 *
gp
;

833 
u_t32_t
 
ump
;

834 
u_t8_t
 *
bp
;

835 
t
;

837 i((
t
 = 
	`__os_mloc
(
dbv
,

838 (
__db_lk_42_gs
+ (
DB_TXN
), &
gp
)) != 0)

839  (
t
);

840 
bp
 = 
cbuf
;

841 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

842 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

844 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

845 
bp
 +(
gp
->
ty
);

847 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

848 
bp
 +(
gp
->
tx
->
txnid
);

850 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

851 
bp
 +(
DB_LSN
);

853 
	`memy
(&
ump
, 
bp
, (uinttmp));

854 
gp
->
code
 = (
u_t32_t
)
ump
;

855 
bp
 +(
ump
);

857 
	`memy
(&
ump
, 
bp
, (uinttmp));

858 
gp
->
feid
 = (
t32_t
)
ump
;

859 
bp
 +(
ump
);

861 
	`memy
(&
ump
, 
bp
, (uinttmp));

862 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

863 
bp
 +(
ump
);

865 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

866 
bp
 +(
gp
->
l
);

868 
	`memy
(&
ump
, 
bp
, (uinttmp));

869 
gp
->
ev
 = (
db_pgno_t
)
ump
;

870 
bp
 +(
ump
);

872 
	`memy
(&
gp
->
l_ev
, 
bp
, (argp->lsn_prev));

873 
bp
 +(
gp
->
l_ev
);

875 
	`memy
(&
ump
, 
bp
, (uinttmp));

876 
gp
->
xt
 = (
db_pgno_t
)
ump
;

877 
bp
 +(
ump
);

879 
	`memy
(&
gp
->
l_xt
, 
bp
, (argp->lsn_next));

880 
bp
 +(
gp
->
l_xt
);

882 *
g
 = 
gp
;

884 
	}
}

892 
	$__db_debug_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

893 

, 
feid
, 
key
, 
da
, 
g_ags
)

894 
DB_ENV
 *
dbv
;

895 
DB_TXN
 *
tx
;

896 
DB_LSN
 *
t_lp
;

897 
u_t32_t
 
ags
;

898 cڡ 
DBT
 *

;

899 
t32_t
 
feid
;

900 cڡ 
DBT
 *
key
;

901 cڡ 
DBT
 *
da
;

902 
u_t32_t
 
g_ags
;

904 
DBT
 
logc
;

905 
DB_TXNLOGREC
 *

;

906 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

907 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

908 
u_t
 
ad
;

909 
u_t8_t
 *
bp
;

910 
is_dub
, 
t
;

912 
	`COMPQUIET
(

, 
NULL
);

914 
y
 = 
DB___db_debug
;

915 
ad
 = 0;

916 
p
 = 
t_lp
;

918 
t
 = 0;

920 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

921 i(
tx
 =
NULL
)

923 i(
tx
 =
NULL
)

925 
is_dub
 = 0;

927 
is_dub
 = 1;

929 i(
tx
 =
NULL
) {

930 
txn_num
 = 0;

931 
lp
 = &
nu_l
;

932 
nu_l
.
fe
 =u_l.
offt
 = 0;

940 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

941 
txn_num
 = 
tx
->
txnid
;

944 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

945 + (
u_t32_t
+ (

 =
NULL
 ? 0 : op->
size
)

946 + (
u_t32_t
)

947 + (
u_t32_t
+ (
key
 =
NULL
 ? 0 : key->
size
)

948 + (
u_t32_t
+ (
da
 =
NULL
 ? 0 : da->
size
)

949 + (
u_t32_t
);

950 i(
	`CRYPTO_ON
(
dbv
)) {

951 
ad
 =

952 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

953 
logc
.
size
 +
ad
;

956 i(
is_dub
 || 
tx
 =
NULL
) {

957 i((
t
 =

958 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

959  (
t
);

961 i((
t
 = 
	`__os_mloc
(
dbv
,

962 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

963  (
t
);

964 #ifde
DIAGNOSTIC


965 i((
t
 =

966 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

967 
	`__os_
(
dbv
, 

);

968  (
t
);

971 
logc
.
da
 = 

->data;

974 i(
ad
 > 0)

975 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

977 
bp
 = 
logc
.
da
;

979 
	`memy
(
bp
, &
y
, (rectype));

980 
bp
 +(
y
);

982 
	`memy
(
bp
, &
txn_num
, (txn_num));

983 
bp
 +(
txn_num
);

985 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

986 
bp
 +(
DB_LSN
);

988 i(

 =
NULL
) {

989 
zo
 = 0;

990 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

991 
bp
 +(
u_t32_t
);

993 
	`memy
(
bp
, &

->
size
, (op->size));

994 
bp
 +(

->
size
);

995 
	`memy
(
bp
, 

->
da
, op->
size
);

996 
bp
 +

->
size
;

999 
ump
 = (
u_t32_t
)
feid
;

1000 
	`memy
(
bp
, &
ump
, (uinttmp));

1001 
bp
 +(
ump
);

1003 i(
key
 =
NULL
) {

1004 
zo
 = 0;

1005 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1006 
bp
 +(
u_t32_t
);

1008 
	`memy
(
bp
, &
key
->
size
, (key->size));

1009 
bp
 +(
key
->
size
);

1010 
	`memy
(
bp
, 
key
->
da
, key->
size
);

1011 
bp
 +
key
->
size
;

1014 i(
da
 =
NULL
) {

1015 
zo
 = 0;

1016 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1017 
bp
 +(
u_t32_t
);

1019 
	`memy
(
bp
, &
da
->
size
, (data->size));

1020 
bp
 +(
da
->
size
);

1021 
	`memy
(
bp
, 
da
->da, da->
size
);

1022 
bp
 +
da
->
size
;

1025 
ump
 = (
u_t32_t
)
g_ags
;

1026 
	`memy
(
bp
, &
ump
, (uinttmp));

1027 
bp
 +(
ump
);

1029 
	`DB_ASSERT
(
dbv
,

1030 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1032 i(
is_dub
 || 
tx
 =
NULL
) {

1033 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1034 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1035 *
lp
 = *
p
;

1036 i(
p
 !
t_lp
)

1037 *
t_lp
 = *
p
;

1040 
t
 = 0;

1041 #ifde
DIAGNOSTIC


1046 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1047 
y
 |
DB_debug_FLAG
;

1048 
	`memy
(
logc
.
da
, &
y
, (rectype));

1050 i(!
	`IS_REP_CLIENT
(
dbv
))

1051 
t
 = 
	`__log_put
(
dbv
,

1052 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1054 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1055 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1056 
	`LSN_NOT_LOGGED
(*
t_lp
);

1059 #ifde
LOG_DIAGNOSTIC


1060 i(
t
 != 0)

1061 ()
	`__db_debug_t
(
dbv
,

1062 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1065 #ifde
DIAGNOSTIC


1066 
	`__os_
(
dbv
, 
logc
.
da
);

1068 i(
is_dub
 || 
tx
 =
NULL
)

1069 
	`__os_
(
dbv
, 
logc
.
da
);

1071  (
t
);

1072 
	}
}

1078 
	$__db_debug_ad
(
dbv
, 
cbuf
, 
g
)

1079 
DB_ENV
 *
dbv
;

1080 *
cbuf
;

1081 
__db_debug_gs
 **
g
;

1083 
__db_debug_gs
 *
gp
;

1084 
u_t32_t
 
ump
;

1085 
u_t8_t
 *
bp
;

1086 
t
;

1088 i((
t
 = 
	`__os_mloc
(
dbv
,

1089 (
__db_debug_gs
+ (
DB_TXN
), &
gp
)) != 0)

1090  (
t
);

1091 
bp
 = 
cbuf
;

1092 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1093 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1095 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1096 
bp
 +(
gp
->
ty
);

1098 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1099 
bp
 +(
gp
->
tx
->
txnid
);

1101 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1102 
bp
 +(
DB_LSN
);

1104 
	`memt
(&
gp
->

, 0, (argp->op));

1105 
	`memy
(&
gp
->

.
size
, 
bp
, (
u_t32_t
));

1106 
bp
 +(
u_t32_t
);

1107 
gp
->

.
da
 = 
bp
;

1108 
bp
 +
gp
->

.
size
;

1110 
	`memy
(&
ump
, 
bp
, (uinttmp));

1111 
gp
->
feid
 = (
t32_t
)
ump
;

1112 
bp
 +(
ump
);

1114 
	`memt
(&
gp
->
key
, 0, (argp->key));

1115 
	`memy
(&
gp
->
key
.
size
, 
bp
, (
u_t32_t
));

1116 
bp
 +(
u_t32_t
);

1117 
gp
->
key
.
da
 = 
bp
;

1118 
bp
 +
gp
->
key
.
size
;

1120 
	`memt
(&
gp
->
da
, 0, (argp->data));

1121 
	`memy
(&
gp
->
da
.
size
, 
bp
, (
u_t32_t
));

1122 
bp
 +(
u_t32_t
);

1123 
gp
->
da
.d
bp
;

1124 
bp
 +
gp
->
da
.
size
;

1126 
	`memy
(&
ump
, 
bp
, (uinttmp));

1127 
gp
->
g_ags
 = (
u_t32_t
)
ump
;

1128 
bp
 +(
ump
);

1130 *
g
 = 
gp
;

1132 
	}
}

1139 
	$__db_no_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
evl
)

1140 
DB
 *
dbp
;

1141 
DB_TXN
 *
tx
;

1142 
DB_LSN
 *
t_lp
;

1143 
u_t32_t
 
ags
;

1144 
db_pgno_t
 
pgno
;

1145 
DB_LSN
 * 
evl
;

1147 
DBT
 
logc
;

1148 
DB_ENV
 *
dbv
;

1149 
DB_TXNLOGREC
 *

;

1150 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1151 
u_t32_t
 
ump
, 
y
, 
txn_num
;

1152 
u_t
 
ad
;

1153 
u_t8_t
 *
bp
;

1154 
is_dub
, 
t
;

1156 
dbv
 = 
dbp
->dbenv;

1157 
	`COMPQUIET
(

, 
NULL
);

1159 
y
 = 
DB___db_no
;

1160 
ad
 = 0;

1161 
p
 = 
t_lp
;

1163 
t
 = 0;

1165 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1166 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1167 i(
tx
 =
NULL
)

1169 
is_dub
 = 0;

1171 
is_dub
 = 1;

1173 i(
tx
 =
NULL
) {

1174 
txn_num
 = 0;

1175 
lp
 = &
nu_l
;

1176 
nu_l
.
fe
 =u_l.
offt
 = 0;

1178 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1179 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1180  (
t
);

1187 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1188 
txn_num
 = 
tx
->
txnid
;

1191 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1192 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1193 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1194  (
t
);

1196 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1197 + (
u_t32_t
)

1198 + (
u_t32_t
)

1199 + (*
evl
);

1200 i(
	`CRYPTO_ON
(
dbv
)) {

1201 
ad
 =

1202 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1203 
logc
.
size
 +
ad
;

1206 i(
is_dub
 || 
tx
 =
NULL
) {

1207 i((
t
 =

1208 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1209  (
t
);

1211 i((
t
 = 
	`__os_mloc
(
dbv
,

1212 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1213  (
t
);

1214 #ifde
DIAGNOSTIC


1215 i((
t
 =

1216 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1217 
	`__os_
(
dbv
, 

);

1218  (
t
);

1221 
logc
.
da
 = 

->data;

1224 i(
ad
 > 0)

1225 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1227 
bp
 = 
logc
.
da
;

1229 
	`memy
(
bp
, &
y
, (rectype));

1230 
bp
 +(
y
);

1232 
	`memy
(
bp
, &
txn_num
, (txn_num));

1233 
bp
 +(
txn_num
);

1235 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1236 
bp
 +(
DB_LSN
);

1238 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1239 
	`memy
(
bp
, &
ump
, (uinttmp));

1240 
bp
 +(
ump
);

1242 
ump
 = (
u_t32_t
)
pgno
;

1243 
	`memy
(
bp
, &
ump
, (uinttmp));

1244 
bp
 +(
ump
);

1246 i(
evl
 !
NULL
) {

1247 i(
tx
 !
NULL
) {

1248 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1249 i(
	`LOG_COMPARE
(
evl
, &

->
l
>0 && (
t
 =

1250 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
evl
) != 0))

1251  (
t
);

1253 
	`memy
(
bp
, 
evl
, (*prevlsn));

1255 
	`memt
(
bp
, 0, (*
evl
));

1256 
bp
 +(*
evl
);

1258 
	`DB_ASSERT
(
dbv
,

1259 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1261 i(
is_dub
 || 
tx
 =
NULL
) {

1262 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1263 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1264 *
lp
 = *
p
;

1265 i(
p
 !
t_lp
)

1266 *
t_lp
 = *
p
;

1269 
t
 = 0;

1270 #ifde
DIAGNOSTIC


1275 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1276 
y
 |
DB_debug_FLAG
;

1277 
	`memy
(
logc
.
da
, &
y
, (rectype));

1279 i(!
	`IS_REP_CLIENT
(
dbv
))

1280 
t
 = 
	`__log_put
(
dbv
,

1281 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1283 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1284 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1285 
	`LSN_NOT_LOGGED
(*
t_lp
);

1288 #ifde
LOG_DIAGNOSTIC


1289 i(
t
 != 0)

1290 ()
	`__db_no_t
(
dbv
,

1291 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1294 #ifde
DIAGNOSTIC


1295 
	`__os_
(
dbv
, 
logc
.
da
);

1297 i(
is_dub
 || 
tx
 =
NULL
)

1298 
	`__os_
(
dbv
, 
logc
.
da
);

1300  (
t
);

1301 
	}
}

1307 
	$__db_no_ad
(
dbv
, 
cbuf
, 
g
)

1308 
DB_ENV
 *
dbv
;

1309 *
cbuf
;

1310 
__db_no_gs
 **
g
;

1312 
__db_no_gs
 *
gp
;

1313 
u_t32_t
 
ump
;

1314 
u_t8_t
 *
bp
;

1315 
t
;

1317 i((
t
 = 
	`__os_mloc
(
dbv
,

1318 (
__db_no_gs
+ (
DB_TXN
), &
gp
)) != 0)

1319  (
t
);

1320 
bp
 = 
cbuf
;

1321 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1322 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1324 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1325 
bp
 +(
gp
->
ty
);

1327 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1328 
bp
 +(
gp
->
tx
->
txnid
);

1330 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1331 
bp
 +(
DB_LSN
);

1333 
	`memy
(&
ump
, 
bp
, (uinttmp));

1334 
gp
->
feid
 = (
t32_t
)
ump
;

1335 
bp
 +(
ump
);

1337 
	`memy
(&
ump
, 
bp
, (uinttmp));

1338 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1339 
bp
 +(
ump
);

1341 
	`memy
(&
gp
->
evl
, 
bp
, (argp->prevlsn));

1342 
bp
 +(
gp
->
evl
);

1344 *
g
 = 
gp
;

1346 
	}
}

1353 
	$__db_pg_loc_42_ad
(
dbv
, 
cbuf
, 
g
)

1354 
DB_ENV
 *
dbv
;

1355 *
cbuf
;

1356 
__db_pg_loc_42_gs
 **
g
;

1358 
__db_pg_loc_42_gs
 *
gp
;

1359 
u_t32_t
 
ump
;

1360 
u_t8_t
 *
bp
;

1361 
t
;

1363 i((
t
 = 
	`__os_mloc
(
dbv
,

1364 (
__db_pg_loc_42_gs
+ (
DB_TXN
), &
gp
)) != 0)

1365  (
t
);

1366 
bp
 = 
cbuf
;

1367 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1368 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1370 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1371 
bp
 +(
gp
->
ty
);

1373 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1374 
bp
 +(
gp
->
tx
->
txnid
);

1376 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1377 
bp
 +(
DB_LSN
);

1379 
	`memy
(&
ump
, 
bp
, (uinttmp));

1380 
gp
->
feid
 = (
t32_t
)
ump
;

1381 
bp
 +(
ump
);

1383 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

1384 
bp
 +(
gp
->
ma_l
);

1386 
	`memy
(&
ump
, 
bp
, (uinttmp));

1387 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

1388 
bp
 +(
ump
);

1390 
	`memy
(&
gp
->
ge_l
, 
bp
, (argp->page_lsn));

1391 
bp
 +(
gp
->
ge_l
);

1393 
	`memy
(&
ump
, 
bp
, (uinttmp));

1394 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1395 
bp
 +(
ump
);

1397 
	`memy
(&
ump
, 
bp
, (uinttmp));

1398 
gp
->
y
 = (
u_t32_t
)
ump
;

1399 
bp
 +(
ump
);

1401 
	`memy
(&
ump
, 
bp
, (uinttmp));

1402 
gp
->
xt
 = (
db_pgno_t
)
ump
;

1403 
bp
 +(
ump
);

1405 *
g
 = 
gp
;

1407 
	}
}

1415 
	$__db_pg_loc_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
ma_l
, 
ma_pgno
, 
ge_l
, 
pgno
, 
y
,

1416 
xt
, 
ϡ_pgno
)

1417 
DB
 *
dbp
;

1418 
DB_TXN
 *
tx
;

1419 
DB_LSN
 *
t_lp
;

1420 
u_t32_t
 
ags
;

1421 
DB_LSN
 * 
ma_l
;

1422 
db_pgno_t
 
ma_pgno
;

1423 
DB_LSN
 * 
ge_l
;

1424 
db_pgno_t
 
pgno
;

1425 
u_t32_t
 
y
;

1426 
db_pgno_t
 
xt
;

1427 
db_pgno_t
 
ϡ_pgno
;

1429 
DBT
 
logc
;

1430 
DB_ENV
 *
dbv
;

1431 
DB_TXNLOGREC
 *

;

1432 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1433 
u_t32_t
 
ump
, 
y
, 
txn_num
;

1434 
u_t
 
ad
;

1435 
u_t8_t
 *
bp
;

1436 
is_dub
, 
t
;

1438 
dbv
 = 
dbp
->dbenv;

1439 
	`COMPQUIET
(

, 
NULL
);

1441 
y
 = 
DB___db_pg_loc
;

1442 
ad
 = 0;

1443 
p
 = 
t_lp
;

1445 
t
 = 0;

1447 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1448 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1449 i(
tx
 =
NULL
)

1451 
is_dub
 = 0;

1453 
is_dub
 = 1;

1455 i(
tx
 =
NULL
) {

1456 
txn_num
 = 0;

1457 
lp
 = &
nu_l
;

1458 
nu_l
.
fe
 =u_l.
offt
 = 0;

1460 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1461 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1462  (
t
);

1469 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1470 
txn_num
 = 
tx
->
txnid
;

1473 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1474 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1475 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1476  (
t
);

1478 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1479 + (
u_t32_t
)

1480 + (*
ma_l
)

1481 + (
u_t32_t
)

1482 + (*
ge_l
)

1483 + (
u_t32_t
)

1484 + (
u_t32_t
)

1485 + (
u_t32_t
)

1486 + (
u_t32_t
);

1487 i(
	`CRYPTO_ON
(
dbv
)) {

1488 
ad
 =

1489 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1490 
logc
.
size
 +
ad
;

1493 i(
is_dub
 || 
tx
 =
NULL
) {

1494 i((
t
 =

1495 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1496  (
t
);

1498 i((
t
 = 
	`__os_mloc
(
dbv
,

1499 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1500  (
t
);

1501 #ifde
DIAGNOSTIC


1502 i((
t
 =

1503 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1504 
	`__os_
(
dbv
, 

);

1505  (
t
);

1508 
logc
.
da
 = 

->data;

1511 i(
ad
 > 0)

1512 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1514 
bp
 = 
logc
.
da
;

1516 
	`memy
(
bp
, &
y
, (rectype));

1517 
bp
 +(
y
);

1519 
	`memy
(
bp
, &
txn_num
, (txn_num));

1520 
bp
 +(
txn_num
);

1522 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1523 
bp
 +(
DB_LSN
);

1525 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1526 
	`memy
(
bp
, &
ump
, (uinttmp));

1527 
bp
 +(
ump
);

1529 i(
ma_l
 !
NULL
) {

1530 i(
tx
 !
NULL
) {

1531 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1532 i(
	`LOG_COMPARE
(
ma_l
, &

->
l
>0 && (
t
 =

1533 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ma_l
) != 0))

1534  (
t
);

1536 
	`memy
(
bp
, 
ma_l
, (*meta_lsn));

1538 
	`memt
(
bp
, 0, (*
ma_l
));

1539 
bp
 +(*
ma_l
);

1541 
ump
 = (
u_t32_t
)
ma_pgno
;

1542 
	`memy
(
bp
, &
ump
, (uinttmp));

1543 
bp
 +(
ump
);

1545 i(
ge_l
 !
NULL
) {

1546 i(
tx
 !
NULL
) {

1547 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1548 i(
	`LOG_COMPARE
(
ge_l
, &

->
l
>0 && (
t
 =

1549 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ge_l
) != 0))

1550  (
t
);

1552 
	`memy
(
bp
, 
ge_l
, (*page_lsn));

1554 
	`memt
(
bp
, 0, (*
ge_l
));

1555 
bp
 +(*
ge_l
);

1557 
ump
 = (
u_t32_t
)
pgno
;

1558 
	`memy
(
bp
, &
ump
, (uinttmp));

1559 
bp
 +(
ump
);

1561 
ump
 = (
u_t32_t
)
y
;

1562 
	`memy
(
bp
, &
ump
, (uinttmp));

1563 
bp
 +(
ump
);

1565 
ump
 = (
u_t32_t
)
xt
;

1566 
	`memy
(
bp
, &
ump
, (uinttmp));

1567 
bp
 +(
ump
);

1569 
ump
 = (
u_t32_t
)
ϡ_pgno
;

1570 
	`memy
(
bp
, &
ump
, (uinttmp));

1571 
bp
 +(
ump
);

1573 
	`DB_ASSERT
(
dbv
,

1574 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1576 i(
is_dub
 || 
tx
 =
NULL
) {

1577 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1578 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1579 *
lp
 = *
p
;

1580 i(
p
 !
t_lp
)

1581 *
t_lp
 = *
p
;

1584 
t
 = 0;

1585 #ifde
DIAGNOSTIC


1590 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1591 
y
 |
DB_debug_FLAG
;

1592 
	`memy
(
logc
.
da
, &
y
, (rectype));

1594 i(!
	`IS_REP_CLIENT
(
dbv
))

1595 
t
 = 
	`__log_put
(
dbv
,

1596 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1598 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1599 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1600 
	`LSN_NOT_LOGGED
(*
t_lp
);

1603 #ifde
LOG_DIAGNOSTIC


1604 i(
t
 != 0)

1605 ()
	`__db_pg_loc_t
(
dbv
,

1606 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1609 #ifde
DIAGNOSTIC


1610 
	`__os_
(
dbv
, 
logc
.
da
);

1612 i(
is_dub
 || 
tx
 =
NULL
)

1613 
	`__os_
(
dbv
, 
logc
.
da
);

1615  (
t
);

1616 
	}
}

1623 
	$__db_pg_loc_ad
(
dbv
, 
cbuf
, 
g
)

1624 
DB_ENV
 *
dbv
;

1625 *
cbuf
;

1626 
__db_pg_loc_gs
 **
g
;

1628 
__db_pg_loc_gs
 *
gp
;

1629 
u_t32_t
 
ump
;

1630 
u_t8_t
 *
bp
;

1631 
t
;

1633 i((
t
 = 
	`__os_mloc
(
dbv
,

1634 (
__db_pg_loc_gs
+ (
DB_TXN
), &
gp
)) != 0)

1635  (
t
);

1636 
bp
 = 
cbuf
;

1637 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1638 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1640 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1641 
bp
 +(
gp
->
ty
);

1643 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1644 
bp
 +(
gp
->
tx
->
txnid
);

1646 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1647 
bp
 +(
DB_LSN
);

1649 
	`memy
(&
ump
, 
bp
, (uinttmp));

1650 
gp
->
feid
 = (
t32_t
)
ump
;

1651 
bp
 +(
ump
);

1653 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

1654 
bp
 +(
gp
->
ma_l
);

1656 
	`memy
(&
ump
, 
bp
, (uinttmp));

1657 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

1658 
bp
 +(
ump
);

1660 
	`memy
(&
gp
->
ge_l
, 
bp
, (argp->page_lsn));

1661 
bp
 +(
gp
->
ge_l
);

1663 
	`memy
(&
ump
, 
bp
, (uinttmp));

1664 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1665 
bp
 +(
ump
);

1667 
	`memy
(&
ump
, 
bp
, (uinttmp));

1668 
gp
->
y
 = (
u_t32_t
)
ump
;

1669 
bp
 +(
ump
);

1671 
	`memy
(&
ump
, 
bp
, (uinttmp));

1672 
gp
->
xt
 = (
db_pgno_t
)
ump
;

1673 
bp
 +(
ump
);

1675 
	`memy
(&
ump
, 
bp
, (uinttmp));

1676 
gp
->
ϡ_pgno
 = (
db_pgno_t
)
ump
;

1677 
bp
 +(
ump
);

1679 *
g
 = 
gp
;

1681 
	}
}

1688 
	$__db_pg__42_ad
(
dbv
, 
cbuf
, 
g
)

1689 
DB_ENV
 *
dbv
;

1690 *
cbuf
;

1691 
__db_pg__42_gs
 **
g
;

1693 
__db_pg__42_gs
 *
gp
;

1694 
u_t32_t
 
ump
;

1695 
u_t8_t
 *
bp
;

1696 
t
;

1698 i((
t
 = 
	`__os_mloc
(
dbv
,

1699 (
__db_pg__42_gs
+ (
DB_TXN
), &
gp
)) != 0)

1700  (
t
);

1701 
bp
 = 
cbuf
;

1702 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1703 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1705 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1706 
bp
 +(
gp
->
ty
);

1708 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1709 
bp
 +(
gp
->
tx
->
txnid
);

1711 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1712 
bp
 +(
DB_LSN
);

1714 
	`memy
(&
ump
, 
bp
, (uinttmp));

1715 
gp
->
feid
 = (
t32_t
)
ump
;

1716 
bp
 +(
ump
);

1718 
	`memy
(&
ump
, 
bp
, (uinttmp));

1719 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1720 
bp
 +(
ump
);

1722 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

1723 
bp
 +(
gp
->
ma_l
);

1725 
	`memy
(&
ump
, 
bp
, (uinttmp));

1726 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

1727 
bp
 +(
ump
);

1729 
	`memt
(&
gp
->
hd
, 0, (argp->header));

1730 
	`memy
(&
gp
->
hd
.
size
, 
bp
, (
u_t32_t
));

1731 
bp
 +(
u_t32_t
);

1732 
gp
->
hd
.
da
 = 
bp
;

1733 
bp
 +
gp
->
hd
.
size
;

1735 
	`memy
(&
ump
, 
bp
, (uinttmp));

1736 
gp
->
xt
 = (
db_pgno_t
)
ump
;

1737 
bp
 +(
ump
);

1739 *
g
 = 
gp
;

1741 
	}
}

1749 
	$__db_pg__log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
ma_l
, 
ma_pgno
, 
hd
, 
xt
,

1750 
ϡ_pgno
)

1751 
DB
 *
dbp
;

1752 
DB_TXN
 *
tx
;

1753 
DB_LSN
 *
t_lp
;

1754 
u_t32_t
 
ags
;

1755 
db_pgno_t
 
pgno
;

1756 
DB_LSN
 * 
ma_l
;

1757 
db_pgno_t
 
ma_pgno
;

1758 cڡ 
DBT
 *
hd
;

1759 
db_pgno_t
 
xt
;

1760 
db_pgno_t
 
ϡ_pgno
;

1762 
DBT
 
logc
;

1763 
DB_ENV
 *
dbv
;

1764 
DB_TXNLOGREC
 *

;

1765 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1766 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

1767 
u_t
 
ad
;

1768 
u_t8_t
 *
bp
;

1769 
is_dub
, 
t
;

1771 
dbv
 = 
dbp
->dbenv;

1772 
	`COMPQUIET
(

, 
NULL
);

1774 
y
 = 
DB___db_pg_
;

1775 
ad
 = 0;

1776 
p
 = 
t_lp
;

1778 
t
 = 0;

1780 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1781 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1782 i(
tx
 =
NULL
)

1784 
is_dub
 = 0;

1786 
is_dub
 = 1;

1788 i(
tx
 =
NULL
) {

1789 
txn_num
 = 0;

1790 
lp
 = &
nu_l
;

1791 
nu_l
.
fe
 =u_l.
offt
 = 0;

1793 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1794 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1795  (
t
);

1802 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1803 
txn_num
 = 
tx
->
txnid
;

1806 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1807 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1808 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1809  (
t
);

1811 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1812 + (
u_t32_t
)

1813 + (
u_t32_t
)

1814 + (*
ma_l
)

1815 + (
u_t32_t
)

1816 + (
u_t32_t
+ (
hd
 =
NULL
 ? 0 : hd->
size
)

1817 + (
u_t32_t
)

1818 + (
u_t32_t
);

1819 i(
	`CRYPTO_ON
(
dbv
)) {

1820 
ad
 =

1821 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1822 
logc
.
size
 +
ad
;

1825 i(
is_dub
 || 
tx
 =
NULL
) {

1826 i((
t
 =

1827 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1828  (
t
);

1830 i((
t
 = 
	`__os_mloc
(
dbv
,

1831 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1832  (
t
);

1833 #ifde
DIAGNOSTIC


1834 i((
t
 =

1835 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1836 
	`__os_
(
dbv
, 

);

1837  (
t
);

1840 
logc
.
da
 = 

->data;

1843 i(
ad
 > 0)

1844 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1846 
bp
 = 
logc
.
da
;

1848 
	`memy
(
bp
, &
y
, (rectype));

1849 
bp
 +(
y
);

1851 
	`memy
(
bp
, &
txn_num
, (txn_num));

1852 
bp
 +(
txn_num
);

1854 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1855 
bp
 +(
DB_LSN
);

1857 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1858 
	`memy
(
bp
, &
ump
, (uinttmp));

1859 
bp
 +(
ump
);

1861 
ump
 = (
u_t32_t
)
pgno
;

1862 
	`memy
(
bp
, &
ump
, (uinttmp));

1863 
bp
 +(
ump
);

1865 i(
ma_l
 !
NULL
) {

1866 i(
tx
 !
NULL
) {

1867 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1868 i(
	`LOG_COMPARE
(
ma_l
, &

->
l
>0 && (
t
 =

1869 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ma_l
) != 0))

1870  (
t
);

1872 
	`memy
(
bp
, 
ma_l
, (*meta_lsn));

1874 
	`memt
(
bp
, 0, (*
ma_l
));

1875 
bp
 +(*
ma_l
);

1877 
ump
 = (
u_t32_t
)
ma_pgno
;

1878 
	`memy
(
bp
, &
ump
, (uinttmp));

1879 
bp
 +(
ump
);

1881 i(
hd
 =
NULL
) {

1882 
zo
 = 0;

1883 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1884 
bp
 +(
u_t32_t
);

1886 
	`memy
(
bp
, &
hd
->
size
, (header->size));

1887 
bp
 +(
hd
->
size
);

1888 
	`memy
(
bp
, 
hd
->
da
, hd->
size
);

1889 
bp
 +
hd
->
size
;

1892 
ump
 = (
u_t32_t
)
xt
;

1893 
	`memy
(
bp
, &
ump
, (uinttmp));

1894 
bp
 +(
ump
);

1896 
ump
 = (
u_t32_t
)
ϡ_pgno
;

1897 
	`memy
(
bp
, &
ump
, (uinttmp));

1898 
bp
 +(
ump
);

1900 
	`DB_ASSERT
(
dbv
,

1901 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1903 i(
is_dub
 || 
tx
 =
NULL
) {

1904 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1905 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1906 *
lp
 = *
p
;

1907 i(
p
 !
t_lp
)

1908 *
t_lp
 = *
p
;

1911 
t
 = 0;

1912 #ifde
DIAGNOSTIC


1917 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1918 
y
 |
DB_debug_FLAG
;

1919 
	`memy
(
logc
.
da
, &
y
, (rectype));

1921 i(!
	`IS_REP_CLIENT
(
dbv
))

1922 
t
 = 
	`__log_put
(
dbv
,

1923 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1925 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1926 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1927 
	`LSN_NOT_LOGGED
(*
t_lp
);

1930 #ifde
LOG_DIAGNOSTIC


1931 i(
t
 != 0)

1932 ()
	`__db_pg__t
(
dbv
,

1933 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1936 #ifde
DIAGNOSTIC


1937 
	`__os_
(
dbv
, 
logc
.
da
);

1939 i(
is_dub
 || 
tx
 =
NULL
)

1940 
	`__os_
(
dbv
, 
logc
.
da
);

1942  (
t
);

1943 
	}
}

1949 
	$__db_pg__ad
(
dbv
, 
cbuf
, 
g
)

1950 
DB_ENV
 *
dbv
;

1951 *
cbuf
;

1952 
__db_pg__gs
 **
g
;

1954 
__db_pg__gs
 *
gp
;

1955 
u_t32_t
 
ump
;

1956 
u_t8_t
 *
bp
;

1957 
t
;

1959 i((
t
 = 
	`__os_mloc
(
dbv
,

1960 (
__db_pg__gs
+ (
DB_TXN
), &
gp
)) != 0)

1961  (
t
);

1962 
bp
 = 
cbuf
;

1963 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1964 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1966 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1967 
bp
 +(
gp
->
ty
);

1969 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1970 
bp
 +(
gp
->
tx
->
txnid
);

1972 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1973 
bp
 +(
DB_LSN
);

1975 
	`memy
(&
ump
, 
bp
, (uinttmp));

1976 
gp
->
feid
 = (
t32_t
)
ump
;

1977 
bp
 +(
ump
);

1979 
	`memy
(&
ump
, 
bp
, (uinttmp));

1980 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1981 
bp
 +(
ump
);

1983 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

1984 
bp
 +(
gp
->
ma_l
);

1986 
	`memy
(&
ump
, 
bp
, (uinttmp));

1987 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

1988 
bp
 +(
ump
);

1990 
	`memt
(&
gp
->
hd
, 0, (argp->header));

1991 
	`memy
(&
gp
->
hd
.
size
, 
bp
, (
u_t32_t
));

1992 
bp
 +(
u_t32_t
);

1993 
gp
->
hd
.
da
 = 
bp
;

1994 
bp
 +
gp
->
hd
.
size
;

1996 
	`memy
(&
ump
, 
bp
, (uinttmp));

1997 
gp
->
xt
 = (
db_pgno_t
)
ump
;

1998 
bp
 +(
ump
);

2000 
	`memy
(&
ump
, 
bp
, (uinttmp));

2001 
gp
->
ϡ_pgno
 = (
db_pgno_t
)
ump
;

2002 
bp
 +(
ump
);

2004 *
g
 = 
gp
;

2006 
	}
}

2012 
	$__db_cksum_log
(
dbv
, 
tx
, 
t_lp
, 
ags
)

2013 
DB_ENV
 *
dbv
;

2014 
DB_TXN
 *
tx
;

2015 
DB_LSN
 *
t_lp
;

2016 
u_t32_t
 
ags
;

2018 
DBT
 
logc
;

2019 
DB_TXNLOGREC
 *

;

2020 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2021 
u_t32_t
 
y
, 
txn_num
;

2022 
u_t
 
ad
;

2023 
u_t8_t
 *
bp
;

2024 
is_dub
, 
t
;

2026 
	`COMPQUIET
(

, 
NULL
);

2028 
y
 = 
DB___db_cksum
;

2029 
ad
 = 0;

2030 
p
 = 
t_lp
;

2032 
t
 = 0;

2034 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

2035 i(
tx
 =
NULL
)

2037 i(
tx
 =
NULL
)

2039 
is_dub
 = 0;

2041 
is_dub
 = 1;

2043 i(
tx
 =
NULL
) {

2044 
txn_num
 = 0;

2045 
lp
 = &
nu_l
;

2046 
nu_l
.
fe
 =u_l.
offt
 = 0;

2048 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2049 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2050  (
t
);

2057 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

2058 
txn_num
 = 
tx
->
txnid
;

2061 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
);

2062 i(
	`CRYPTO_ON
(
dbv
)) {

2063 
ad
 =

2064 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

2065 
logc
.
size
 +
ad
;

2068 i(
is_dub
 || 
tx
 =
NULL
) {

2069 i((
t
 =

2070 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

2071  (
t
);

2073 i((
t
 = 
	`__os_mloc
(
dbv
,

2074 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

2075  (
t
);

2076 #ifde
DIAGNOSTIC


2077 i((
t
 =

2078 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

2079 
	`__os_
(
dbv
, 

);

2080  (
t
);

2083 
logc
.
da
 = 

->data;

2086 i(
ad
 > 0)

2087 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

2089 
bp
 = 
logc
.
da
;

2091 
	`memy
(
bp
, &
y
, (rectype));

2092 
bp
 +(
y
);

2094 
	`memy
(
bp
, &
txn_num
, (txn_num));

2095 
bp
 +(
txn_num
);

2097 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

2098 
bp
 +(
DB_LSN
);

2100 
	`DB_ASSERT
(
dbv
,

2101 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

2103 i(
is_dub
 || 
tx
 =
NULL
) {

2104 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

2105 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

2106 *
lp
 = *
p
;

2107 i(
p
 !
t_lp
)

2108 *
t_lp
 = *
p
;

2111 
t
 = 0;

2112 #ifde
DIAGNOSTIC


2117 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2118 
y
 |
DB_debug_FLAG
;

2119 
	`memy
(
logc
.
da
, &
y
, (rectype));

2121 i(!
	`IS_REP_CLIENT
(
dbv
))

2122 
t
 = 
	`__log_put
(
dbv
,

2123 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2125 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2126 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2127 
	`LSN_NOT_LOGGED
(*
t_lp
);

2130 #ifde
LOG_DIAGNOSTIC


2131 i(
t
 != 0)

2132 ()
	`__db_cksum_t
(
dbv
,

2133 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2136 #ifde
DIAGNOSTIC


2137 
	`__os_
(
dbv
, 
logc
.
da
);

2139 i(
is_dub
 || 
tx
 =
NULL
)

2140 
	`__os_
(
dbv
, 
logc
.
da
);

2142  (
t
);

2143 
	}
}

2149 
	$__db_cksum_ad
(
dbv
, 
cbuf
, 
g
)

2150 
DB_ENV
 *
dbv
;

2151 *
cbuf
;

2152 
__db_cksum_gs
 **
g
;

2154 
__db_cksum_gs
 *
gp
;

2155 
u_t8_t
 *
bp
;

2156 
t
;

2158 i((
t
 = 
	`__os_mloc
(
dbv
,

2159 (
__db_cksum_gs
+ (
DB_TXN
), &
gp
)) != 0)

2160  (
t
);

2161 
bp
 = 
cbuf
;

2162 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2163 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2165 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2166 
bp
 +(
gp
->
ty
);

2168 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2169 
bp
 +(
gp
->
tx
->
txnid
);

2171 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2172 
bp
 +(
DB_LSN
);

2174 *
g
 = 
gp
;

2176 
	}
}

2183 
	$__db_pg_da_42_ad
(
dbv
, 
cbuf
, 
g
)

2184 
DB_ENV
 *
dbv
;

2185 *
cbuf
;

2186 
__db_pg_da_42_gs
 **
g
;

2188 
__db_pg_da_42_gs
 *
gp
;

2189 
u_t32_t
 
ump
;

2190 
u_t8_t
 *
bp
;

2191 
t
;

2193 i((
t
 = 
	`__os_mloc
(
dbv
,

2194 (
__db_pg_da_42_gs
+ (
DB_TXN
), &
gp
)) != 0)

2195  (
t
);

2196 
bp
 = 
cbuf
;

2197 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2198 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2200 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2201 
bp
 +(
gp
->
ty
);

2203 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2204 
bp
 +(
gp
->
tx
->
txnid
);

2206 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2207 
bp
 +(
DB_LSN
);

2209 
	`memy
(&
ump
, 
bp
, (uinttmp));

2210 
gp
->
feid
 = (
t32_t
)
ump
;

2211 
bp
 +(
ump
);

2213 
	`memy
(&
ump
, 
bp
, (uinttmp));

2214 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

2215 
bp
 +(
ump
);

2217 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

2218 
bp
 +(
gp
->
ma_l
);

2220 
	`memy
(&
ump
, 
bp
, (uinttmp));

2221 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

2222 
bp
 +(
ump
);

2224 
	`memt
(&
gp
->
hd
, 0, (argp->header));

2225 
	`memy
(&
gp
->
hd
.
size
, 
bp
, (
u_t32_t
));

2226 
bp
 +(
u_t32_t
);

2227 
gp
->
hd
.
da
 = 
bp
;

2228 
bp
 +
gp
->
hd
.
size
;

2230 
	`memy
(&
ump
, 
bp
, (uinttmp));

2231 
gp
->
xt
 = (
db_pgno_t
)
ump
;

2232 
bp
 +(
ump
);

2234 
	`memt
(&
gp
->
da
, 0, (argp->data));

2235 
	`memy
(&
gp
->
da
.
size
, 
bp
, (
u_t32_t
));

2236 
bp
 +(
u_t32_t
);

2237 
gp
->
da
.d
bp
;

2238 
bp
 +
gp
->
da
.
size
;

2240 *
g
 = 
gp
;

2242 
	}
}

2250 
	$__db_pg_da_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
ma_l
, 
ma_pgno
, 
hd
, 
xt
,

2251 
ϡ_pgno
, 
da
)

2252 
DB
 *
dbp
;

2253 
DB_TXN
 *
tx
;

2254 
DB_LSN
 *
t_lp
;

2255 
u_t32_t
 
ags
;

2256 
db_pgno_t
 
pgno
;

2257 
DB_LSN
 * 
ma_l
;

2258 
db_pgno_t
 
ma_pgno
;

2259 cڡ 
DBT
 *
hd
;

2260 
db_pgno_t
 
xt
;

2261 
db_pgno_t
 
ϡ_pgno
;

2262 cڡ 
DBT
 *
da
;

2264 
DBT
 
logc
;

2265 
DB_ENV
 *
dbv
;

2266 
DB_TXNLOGREC
 *

;

2267 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2268 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

2269 
u_t
 
ad
;

2270 
u_t8_t
 *
bp
;

2271 
is_dub
, 
t
;

2273 
dbv
 = 
dbp
->dbenv;

2274 
	`COMPQUIET
(

, 
NULL
);

2276 
y
 = 
DB___db_pg_da
;

2277 
ad
 = 0;

2278 
p
 = 
t_lp
;

2280 
t
 = 0;

2282 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

2283 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

2284 i(
tx
 =
NULL
)

2286 
is_dub
 = 0;

2288 
is_dub
 = 1;

2290 i(
tx
 =
NULL
) {

2291 
txn_num
 = 0;

2292 
lp
 = &
nu_l
;

2293 
nu_l
.
fe
 =u_l.
offt
 = 0;

2295 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2296 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2297  (
t
);

2304 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

2305 
txn_num
 = 
tx
->
txnid
;

2308 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

2309 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

2310 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

2311  (
t
);

2313 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

2314 + (
u_t32_t
)

2315 + (
u_t32_t
)

2316 + (*
ma_l
)

2317 + (
u_t32_t
)

2318 + (
u_t32_t
+ (
hd
 =
NULL
 ? 0 : hd->
size
)

2319 + (
u_t32_t
)

2320 + (
u_t32_t
)

2321 + (
u_t32_t
+ (
da
 =
NULL
 ? 0 : da->
size
);

2322 i(
	`CRYPTO_ON
(
dbv
)) {

2323 
ad
 =

2324 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

2325 
logc
.
size
 +
ad
;

2328 i(
is_dub
 || 
tx
 =
NULL
) {

2329 i((
t
 =

2330 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

2331  (
t
);

2333 i((
t
 = 
	`__os_mloc
(
dbv
,

2334 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

2335  (
t
);

2336 #ifde
DIAGNOSTIC


2337 i((
t
 =

2338 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

2339 
	`__os_
(
dbv
, 

);

2340  (
t
);

2343 
logc
.
da
 = 

->data;

2346 i(
ad
 > 0)

2347 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

2349 
bp
 = 
logc
.
da
;

2351 
	`memy
(
bp
, &
y
, (rectype));

2352 
bp
 +(
y
);

2354 
	`memy
(
bp
, &
txn_num
, (txn_num));

2355 
bp
 +(
txn_num
);

2357 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

2358 
bp
 +(
DB_LSN
);

2360 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

2361 
	`memy
(
bp
, &
ump
, (uinttmp));

2362 
bp
 +(
ump
);

2364 
ump
 = (
u_t32_t
)
pgno
;

2365 
	`memy
(
bp
, &
ump
, (uinttmp));

2366 
bp
 +(
ump
);

2368 i(
ma_l
 !
NULL
) {

2369 i(
tx
 !
NULL
) {

2370 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

2371 i(
	`LOG_COMPARE
(
ma_l
, &

->
l
>0 && (
t
 =

2372 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ma_l
) != 0))

2373  (
t
);

2375 
	`memy
(
bp
, 
ma_l
, (*meta_lsn));

2377 
	`memt
(
bp
, 0, (*
ma_l
));

2378 
bp
 +(*
ma_l
);

2380 
ump
 = (
u_t32_t
)
ma_pgno
;

2381 
	`memy
(
bp
, &
ump
, (uinttmp));

2382 
bp
 +(
ump
);

2384 i(
hd
 =
NULL
) {

2385 
zo
 = 0;

2386 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

2387 
bp
 +(
u_t32_t
);

2389 
	`memy
(
bp
, &
hd
->
size
, (header->size));

2390 
bp
 +(
hd
->
size
);

2391 
	`memy
(
bp
, 
hd
->
da
, hd->
size
);

2392 
bp
 +
hd
->
size
;

2395 
ump
 = (
u_t32_t
)
xt
;

2396 
	`memy
(
bp
, &
ump
, (uinttmp));

2397 
bp
 +(
ump
);

2399 
ump
 = (
u_t32_t
)
ϡ_pgno
;

2400 
	`memy
(
bp
, &
ump
, (uinttmp));

2401 
bp
 +(
ump
);

2403 i(
da
 =
NULL
) {

2404 
zo
 = 0;

2405 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

2406 
bp
 +(
u_t32_t
);

2408 
	`memy
(
bp
, &
da
->
size
, (data->size));

2409 
bp
 +(
da
->
size
);

2410 
	`memy
(
bp
, 
da
->da, da->
size
);

2411 
bp
 +
da
->
size
;

2414 
	`DB_ASSERT
(
dbv
,

2415 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

2417 i(
is_dub
 || 
tx
 =
NULL
) {

2418 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

2419 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

2420 *
lp
 = *
p
;

2421 i(
p
 !
t_lp
)

2422 *
t_lp
 = *
p
;

2425 
t
 = 0;

2426 #ifde
DIAGNOSTIC


2431 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2432 
y
 |
DB_debug_FLAG
;

2433 
	`memy
(
logc
.
da
, &
y
, (rectype));

2435 i(!
	`IS_REP_CLIENT
(
dbv
))

2436 
t
 = 
	`__log_put
(
dbv
,

2437 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2439 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2440 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2441 
	`LSN_NOT_LOGGED
(*
t_lp
);

2444 #ifde
LOG_DIAGNOSTIC


2445 i(
t
 != 0)

2446 ()
	`__db_pg_da_t
(
dbv
,

2447 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2450 #ifde
DIAGNOSTIC


2451 
	`__os_
(
dbv
, 
logc
.
da
);

2453 i(
is_dub
 || 
tx
 =
NULL
)

2454 
	`__os_
(
dbv
, 
logc
.
da
);

2456  (
t
);

2457 
	}
}

2464 
	$__db_pg_da_ad
(
dbv
, 
cbuf
, 
g
)

2465 
DB_ENV
 *
dbv
;

2466 *
cbuf
;

2467 
__db_pg_da_gs
 **
g
;

2469 
__db_pg_da_gs
 *
gp
;

2470 
u_t32_t
 
ump
;

2471 
u_t8_t
 *
bp
;

2472 
t
;

2474 i((
t
 = 
	`__os_mloc
(
dbv
,

2475 (
__db_pg_da_gs
+ (
DB_TXN
), &
gp
)) != 0)

2476  (
t
);

2477 
bp
 = 
cbuf
;

2478 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2479 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2481 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2482 
bp
 +(
gp
->
ty
);

2484 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2485 
bp
 +(
gp
->
tx
->
txnid
);

2487 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2488 
bp
 +(
DB_LSN
);

2490 
	`memy
(&
ump
, 
bp
, (uinttmp));

2491 
gp
->
feid
 = (
t32_t
)
ump
;

2492 
bp
 +(
ump
);

2494 
	`memy
(&
ump
, 
bp
, (uinttmp));

2495 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

2496 
bp
 +(
ump
);

2498 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

2499 
bp
 +(
gp
->
ma_l
);

2501 
	`memy
(&
ump
, 
bp
, (uinttmp));

2502 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

2503 
bp
 +(
ump
);

2505 
	`memt
(&
gp
->
hd
, 0, (argp->header));

2506 
	`memy
(&
gp
->
hd
.
size
, 
bp
, (
u_t32_t
));

2507 
bp
 +(
u_t32_t
);

2508 
gp
->
hd
.
da
 = 
bp
;

2509 
bp
 +
gp
->
hd
.
size
;

2511 
	`memy
(&
ump
, 
bp
, (uinttmp));

2512 
gp
->
xt
 = (
db_pgno_t
)
ump
;

2513 
bp
 +(
ump
);

2515 
	`memy
(&
ump
, 
bp
, (uinttmp));

2516 
gp
->
ϡ_pgno
 = (
db_pgno_t
)
ump
;

2517 
bp
 +(
ump
);

2519 
	`memt
(&
gp
->
da
, 0, (argp->data));

2520 
	`memy
(&
gp
->
da
.
size
, 
bp
, (
u_t32_t
));

2521 
bp
 +(
u_t32_t
);

2522 
gp
->
da
.d
bp
;

2523 
bp
 +
gp
->
da
.
size
;

2525 *
g
 = 
gp
;

2527 
	}
}

2534 
	$__db_pg_e_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
)

2535 
DB
 *
dbp
;

2536 
DB_TXN
 *
tx
;

2537 
DB_LSN
 *
t_lp
;

2538 
u_t32_t
 
ags
;

2539 
db_pgno_t
 
pgno
;

2541 
DBT
 
logc
;

2542 
DB_ENV
 *
dbv
;

2543 
DB_TXNLOGREC
 *

;

2544 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2545 
u_t32_t
 
ump
, 
y
, 
txn_num
;

2546 
u_t
 
ad
;

2547 
u_t8_t
 *
bp
;

2548 
is_dub
, 
t
;

2550 
dbv
 = 
dbp
->dbenv;

2551 
	`COMPQUIET
(

, 
NULL
);

2553 
y
 = 
DB___db_pg_e
;

2554 
ad
 = 0;

2555 
p
 = 
t_lp
;

2557 
t
 = 0;

2559 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

2560 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

2561 i(
tx
 =
NULL
)

2563 
is_dub
 = 0;

2565 
is_dub
 = 1;

2567 i(
tx
 =
NULL
) {

2568 
txn_num
 = 0;

2569 
lp
 = &
nu_l
;

2570 
nu_l
.
fe
 =u_l.
offt
 = 0;

2572 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2573 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2574  (
t
);

2581 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

2582 
txn_num
 = 
tx
->
txnid
;

2585 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

2586 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

2587 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

2588  (
t
);

2590 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

2591 + (
u_t32_t
)

2592 + (
u_t32_t
);

2593 i(
	`CRYPTO_ON
(
dbv
)) {

2594 
ad
 =

2595 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

2596 
logc
.
size
 +
ad
;

2599 i(
is_dub
 || 
tx
 =
NULL
) {

2600 i((
t
 =

2601 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

2602  (
t
);

2604 i((
t
 = 
	`__os_mloc
(
dbv
,

2605 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

2606  (
t
);

2607 #ifde
DIAGNOSTIC


2608 i((
t
 =

2609 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

2610 
	`__os_
(
dbv
, 

);

2611  (
t
);

2614 
logc
.
da
 = 

->data;

2617 i(
ad
 > 0)

2618 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

2620 
bp
 = 
logc
.
da
;

2622 
	`memy
(
bp
, &
y
, (rectype));

2623 
bp
 +(
y
);

2625 
	`memy
(
bp
, &
txn_num
, (txn_num));

2626 
bp
 +(
txn_num
);

2628 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

2629 
bp
 +(
DB_LSN
);

2631 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

2632 
	`memy
(
bp
, &
ump
, (uinttmp));

2633 
bp
 +(
ump
);

2635 
ump
 = (
u_t32_t
)
pgno
;

2636 
	`memy
(
bp
, &
ump
, (uinttmp));

2637 
bp
 +(
ump
);

2639 
	`DB_ASSERT
(
dbv
,

2640 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

2642 i(
is_dub
 || 
tx
 =
NULL
) {

2643 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

2644 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

2645 *
lp
 = *
p
;

2646 i(
p
 !
t_lp
)

2647 *
t_lp
 = *
p
;

2650 
t
 = 0;

2651 #ifde
DIAGNOSTIC


2656 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2657 
y
 |
DB_debug_FLAG
;

2658 
	`memy
(
logc
.
da
, &
y
, (rectype));

2660 i(!
	`IS_REP_CLIENT
(
dbv
))

2661 
t
 = 
	`__log_put
(
dbv
,

2662 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2664 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2665 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2666 
	`LSN_NOT_LOGGED
(*
t_lp
);

2669 #ifde
LOG_DIAGNOSTIC


2670 i(
t
 != 0)

2671 ()
	`__db_pg_e_t
(
dbv
,

2672 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2675 #ifde
DIAGNOSTIC


2676 
	`__os_
(
dbv
, 
logc
.
da
);

2678 i(
is_dub
 || 
tx
 =
NULL
)

2679 
	`__os_
(
dbv
, 
logc
.
da
);

2681  (
t
);

2682 
	}
}

2689 
	$__db_pg_e_ad
(
dbv
, 
cbuf
, 
g
)

2690 
DB_ENV
 *
dbv
;

2691 *
cbuf
;

2692 
__db_pg_e_gs
 **
g
;

2694 
__db_pg_e_gs
 *
gp
;

2695 
u_t32_t
 
ump
;

2696 
u_t8_t
 *
bp
;

2697 
t
;

2699 i((
t
 = 
	`__os_mloc
(
dbv
,

2700 (
__db_pg_e_gs
+ (
DB_TXN
), &
gp
)) != 0)

2701  (
t
);

2702 
bp
 = 
cbuf
;

2703 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2704 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2706 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2707 
bp
 +(
gp
->
ty
);

2709 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2710 
bp
 +(
gp
->
tx
->
txnid
);

2712 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2713 
bp
 +(
DB_LSN
);

2715 
	`memy
(&
ump
, 
bp
, (uinttmp));

2716 
gp
->
feid
 = (
t32_t
)
ump
;

2717 
bp
 +(
ump
);

2719 
	`memy
(&
ump
, 
bp
, (uinttmp));

2720 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

2721 
bp
 +(
ump
);

2723 *
g
 = 
gp
;

2725 
	}
}

2733 
	$__db_pg_w_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
ma_l
, 
ma_pgno
, 
hd
, 
xt
)

2734 
DB
 *
dbp
;

2735 
DB_TXN
 *
tx
;

2736 
DB_LSN
 *
t_lp
;

2737 
u_t32_t
 
ags
;

2738 
db_pgno_t
 
pgno
;

2739 
DB_LSN
 * 
ma_l
;

2740 
db_pgno_t
 
ma_pgno
;

2741 cڡ 
DBT
 *
hd
;

2742 
db_pgno_t
 
xt
;

2744 
DBT
 
logc
;

2745 
DB_ENV
 *
dbv
;

2746 
DB_TXNLOGREC
 *

;

2747 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2748 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

2749 
u_t
 
ad
;

2750 
u_t8_t
 *
bp
;

2751 
is_dub
, 
t
;

2753 
dbv
 = 
dbp
->dbenv;

2754 
	`COMPQUIET
(

, 
NULL
);

2756 
y
 = 
DB___db_pg_w
;

2757 
ad
 = 0;

2758 
p
 = 
t_lp
;

2760 
t
 = 0;

2762 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

2763 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

2764 i(
tx
 =
NULL
)

2766 
is_dub
 = 0;

2768 
is_dub
 = 1;

2770 i(
tx
 =
NULL
) {

2771 
txn_num
 = 0;

2772 
lp
 = &
nu_l
;

2773 
nu_l
.
fe
 =u_l.
offt
 = 0;

2775 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2776 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2777  (
t
);

2784 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

2785 
txn_num
 = 
tx
->
txnid
;

2788 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

2789 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

2790 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

2791  (
t
);

2793 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

2794 + (
u_t32_t
)

2795 + (
u_t32_t
)

2796 + (*
ma_l
)

2797 + (
u_t32_t
)

2798 + (
u_t32_t
+ (
hd
 =
NULL
 ? 0 : hd->
size
)

2799 + (
u_t32_t
);

2800 i(
	`CRYPTO_ON
(
dbv
)) {

2801 
ad
 =

2802 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

2803 
logc
.
size
 +
ad
;

2806 i(
is_dub
 || 
tx
 =
NULL
) {

2807 i((
t
 =

2808 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

2809  (
t
);

2811 i((
t
 = 
	`__os_mloc
(
dbv
,

2812 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

2813  (
t
);

2814 #ifde
DIAGNOSTIC


2815 i((
t
 =

2816 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

2817 
	`__os_
(
dbv
, 

);

2818  (
t
);

2821 
logc
.
da
 = 

->data;

2824 i(
ad
 > 0)

2825 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

2827 
bp
 = 
logc
.
da
;

2829 
	`memy
(
bp
, &
y
, (rectype));

2830 
bp
 +(
y
);

2832 
	`memy
(
bp
, &
txn_num
, (txn_num));

2833 
bp
 +(
txn_num
);

2835 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

2836 
bp
 +(
DB_LSN
);

2838 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

2839 
	`memy
(
bp
, &
ump
, (uinttmp));

2840 
bp
 +(
ump
);

2842 
ump
 = (
u_t32_t
)
pgno
;

2843 
	`memy
(
bp
, &
ump
, (uinttmp));

2844 
bp
 +(
ump
);

2846 i(
ma_l
 !
NULL
) {

2847 i(
tx
 !
NULL
) {

2848 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

2849 i(
	`LOG_COMPARE
(
ma_l
, &

->
l
>0 && (
t
 =

2850 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ma_l
) != 0))

2851  (
t
);

2853 
	`memy
(
bp
, 
ma_l
, (*meta_lsn));

2855 
	`memt
(
bp
, 0, (*
ma_l
));

2856 
bp
 +(*
ma_l
);

2858 
ump
 = (
u_t32_t
)
ma_pgno
;

2859 
	`memy
(
bp
, &
ump
, (uinttmp));

2860 
bp
 +(
ump
);

2862 i(
hd
 =
NULL
) {

2863 
zo
 = 0;

2864 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

2865 
bp
 +(
u_t32_t
);

2867 
	`memy
(
bp
, &
hd
->
size
, (header->size));

2868 
bp
 +(
hd
->
size
);

2869 
	`memy
(
bp
, 
hd
->
da
, hd->
size
);

2870 
bp
 +
hd
->
size
;

2873 
ump
 = (
u_t32_t
)
xt
;

2874 
	`memy
(
bp
, &
ump
, (uinttmp));

2875 
bp
 +(
ump
);

2877 
	`DB_ASSERT
(
dbv
,

2878 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

2880 i(
is_dub
 || 
tx
 =
NULL
) {

2881 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

2882 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

2883 *
lp
 = *
p
;

2884 i(
p
 !
t_lp
)

2885 *
t_lp
 = *
p
;

2888 
t
 = 0;

2889 #ifde
DIAGNOSTIC


2894 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2895 
y
 |
DB_debug_FLAG
;

2896 
	`memy
(
logc
.
da
, &
y
, (rectype));

2898 i(!
	`IS_REP_CLIENT
(
dbv
))

2899 
t
 = 
	`__log_put
(
dbv
,

2900 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2902 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2903 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2904 
	`LSN_NOT_LOGGED
(*
t_lp
);

2907 #ifde
LOG_DIAGNOSTIC


2908 i(
t
 != 0)

2909 ()
	`__db_pg_w_t
(
dbv
,

2910 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2913 #ifde
DIAGNOSTIC


2914 
	`__os_
(
dbv
, 
logc
.
da
);

2916 i(
is_dub
 || 
tx
 =
NULL
)

2917 
	`__os_
(
dbv
, 
logc
.
da
);

2919  (
t
);

2920 
	}
}

2926 
	$__db_pg_w_ad
(
dbv
, 
cbuf
, 
g
)

2927 
DB_ENV
 *
dbv
;

2928 *
cbuf
;

2929 
__db_pg_w_gs
 **
g
;

2931 
__db_pg_w_gs
 *
gp
;

2932 
u_t32_t
 
ump
;

2933 
u_t8_t
 *
bp
;

2934 
t
;

2936 i((
t
 = 
	`__os_mloc
(
dbv
,

2937 (
__db_pg_w_gs
+ (
DB_TXN
), &
gp
)) != 0)

2938  (
t
);

2939 
bp
 = 
cbuf
;

2940 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2941 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2943 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2944 
bp
 +(
gp
->
ty
);

2946 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2947 
bp
 +(
gp
->
tx
->
txnid
);

2949 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2950 
bp
 +(
DB_LSN
);

2952 
	`memy
(&
ump
, 
bp
, (uinttmp));

2953 
gp
->
feid
 = (
t32_t
)
ump
;

2954 
bp
 +(
ump
);

2956 
	`memy
(&
ump
, 
bp
, (uinttmp));

2957 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

2958 
bp
 +(
ump
);

2960 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

2961 
bp
 +(
gp
->
ma_l
);

2963 
	`memy
(&
ump
, 
bp
, (uinttmp));

2964 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

2965 
bp
 +(
ump
);

2967 
	`memt
(&
gp
->
hd
, 0, (argp->header));

2968 
	`memy
(&
gp
->
hd
.
size
, 
bp
, (
u_t32_t
));

2969 
bp
 +(
u_t32_t
);

2970 
gp
->
hd
.
da
 = 
bp
;

2971 
bp
 +
gp
->
hd
.
size
;

2973 
	`memy
(&
ump
, 
bp
, (uinttmp));

2974 
gp
->
xt
 = (
db_pgno_t
)
ump
;

2975 
bp
 +(
ump
);

2977 *
g
 = 
gp
;

2979 
	}
}

2986 
	$__db_pg__log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
hd
, 
da
)

2987 
DB
 *
dbp
;

2988 
DB_TXN
 *
tx
;

2989 
DB_LSN
 *
t_lp
;

2990 
u_t32_t
 
ags
;

2991 
db_pgno_t
 
pgno
;

2992 cڡ 
DBT
 *
hd
;

2993 cڡ 
DBT
 *
da
;

2995 
DBT
 
logc
;

2996 
DB_ENV
 *
dbv
;

2997 
DB_TXNLOGREC
 *

;

2998 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2999 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

3000 
u_t
 
ad
;

3001 
u_t8_t
 *
bp
;

3002 
is_dub
, 
t
;

3004 
dbv
 = 
dbp
->dbenv;

3005 
	`COMPQUIET
(

, 
NULL
);

3007 
y
 = 
DB___db_pg_
;

3008 
ad
 = 0;

3009 
p
 = 
t_lp
;

3011 
t
 = 0;

3013 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

3014 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

3015 i(
tx
 =
NULL
)

3017 
is_dub
 = 0;

3019 
is_dub
 = 1;

3021 i(
tx
 =
NULL
) {

3022 
txn_num
 = 0;

3023 
lp
 = &
nu_l
;

3024 
nu_l
.
fe
 =u_l.
offt
 = 0;

3026 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

3027 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

3028  (
t
);

3035 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

3036 
txn_num
 = 
tx
->
txnid
;

3039 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

3040 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

3041 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

3042  (
t
);

3044 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

3045 + (
u_t32_t
)

3046 + (
u_t32_t
)

3047 + (
u_t32_t
+ (
hd
 =
NULL
 ? 0 : hd->
size
)

3048 + (
u_t32_t
+ (
da
 =
NULL
 ? 0 : da->
size
);

3049 i(
	`CRYPTO_ON
(
dbv
)) {

3050 
ad
 =

3051 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

3052 
logc
.
size
 +
ad
;

3055 i(
is_dub
 || 
tx
 =
NULL
) {

3056 i((
t
 =

3057 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

3058  (
t
);

3060 i((
t
 = 
	`__os_mloc
(
dbv
,

3061 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

3062  (
t
);

3063 #ifde
DIAGNOSTIC


3064 i((
t
 =

3065 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

3066 
	`__os_
(
dbv
, 

);

3067  (
t
);

3070 
logc
.
da
 = 

->data;

3073 i(
ad
 > 0)

3074 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

3076 
bp
 = 
logc
.
da
;

3078 
	`memy
(
bp
, &
y
, (rectype));

3079 
bp
 +(
y
);

3081 
	`memy
(
bp
, &
txn_num
, (txn_num));

3082 
bp
 +(
txn_num
);

3084 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

3085 
bp
 +(
DB_LSN
);

3087 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

3088 
	`memy
(
bp
, &
ump
, (uinttmp));

3089 
bp
 +(
ump
);

3091 
ump
 = (
u_t32_t
)
pgno
;

3092 
	`memy
(
bp
, &
ump
, (uinttmp));

3093 
bp
 +(
ump
);

3095 i(
hd
 =
NULL
) {

3096 
zo
 = 0;

3097 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

3098 
bp
 +(
u_t32_t
);

3100 
	`memy
(
bp
, &
hd
->
size
, (header->size));

3101 
bp
 +(
hd
->
size
);

3102 
	`memy
(
bp
, 
hd
->
da
, hd->
size
);

3103 
bp
 +
hd
->
size
;

3106 i(
da
 =
NULL
) {

3107 
zo
 = 0;

3108 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

3109 
bp
 +(
u_t32_t
);

3111 
	`memy
(
bp
, &
da
->
size
, (data->size));

3112 
bp
 +(
da
->
size
);

3113 
	`memy
(
bp
, 
da
->da, da->
size
);

3114 
bp
 +
da
->
size
;

3117 
	`DB_ASSERT
(
dbv
,

3118 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

3120 i(
is_dub
 || 
tx
 =
NULL
) {

3121 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

3122 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

3123 *
lp
 = *
p
;

3124 i(
p
 !
t_lp
)

3125 *
t_lp
 = *
p
;

3128 
t
 = 0;

3129 #ifde
DIAGNOSTIC


3134 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

3135 
y
 |
DB_debug_FLAG
;

3136 
	`memy
(
logc
.
da
, &
y
, (rectype));

3138 i(!
	`IS_REP_CLIENT
(
dbv
))

3139 
t
 = 
	`__log_put
(
dbv
,

3140 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

3142 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

3143 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

3144 
	`LSN_NOT_LOGGED
(*
t_lp
);

3147 #ifde
LOG_DIAGNOSTIC


3148 i(
t
 != 0)

3149 ()
	`__db_pg__t
(
dbv
,

3150 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

3153 #ifde
DIAGNOSTIC


3154 
	`__os_
(
dbv
, 
logc
.
da
);

3156 i(
is_dub
 || 
tx
 =
NULL
)

3157 
	`__os_
(
dbv
, 
logc
.
da
);

3159  (
t
);

3160 
	}
}

3166 
	$__db_pg__ad
(
dbv
, 
cbuf
, 
g
)

3167 
DB_ENV
 *
dbv
;

3168 *
cbuf
;

3169 
__db_pg__gs
 **
g
;

3171 
__db_pg__gs
 *
gp
;

3172 
u_t32_t
 
ump
;

3173 
u_t8_t
 *
bp
;

3174 
t
;

3176 i((
t
 = 
	`__os_mloc
(
dbv
,

3177 (
__db_pg__gs
+ (
DB_TXN
), &
gp
)) != 0)

3178  (
t
);

3179 
bp
 = 
cbuf
;

3180 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

3181 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

3183 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

3184 
bp
 +(
gp
->
ty
);

3186 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

3187 
bp
 +(
gp
->
tx
->
txnid
);

3189 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

3190 
bp
 +(
DB_LSN
);

3192 
	`memy
(&
ump
, 
bp
, (uinttmp));

3193 
gp
->
feid
 = (
t32_t
)
ump
;

3194 
bp
 +(
ump
);

3196 
	`memy
(&
ump
, 
bp
, (uinttmp));

3197 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

3198 
bp
 +(
ump
);

3200 
	`memt
(&
gp
->
hd
, 0, (argp->header));

3201 
	`memy
(&
gp
->
hd
.
size
, 
bp
, (
u_t32_t
));

3202 
bp
 +(
u_t32_t
);

3203 
gp
->
hd
.
da
 = 
bp
;

3204 
bp
 +
gp
->
hd
.
size
;

3206 
	`memt
(&
gp
->
da
, 0, (argp->data));

3207 
	`memy
(&
gp
->
da
.
size
, 
bp
, (
u_t32_t
));

3208 
bp
 +(
u_t32_t
);

3209 
gp
->
da
.d
bp
;

3210 
bp
 +
gp
->
da
.
size
;

3212 *
g
 = 
gp
;

3214 
	}
}

3222 
	$__db_pg_st_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
ma
, 
ma_l
, 
ϡ_
, 
ϡ_l
, 
ϡ_pgno
,

3223 
li
)

3224 
DB
 *
dbp
;

3225 
DB_TXN
 *
tx
;

3226 
DB_LSN
 *
t_lp
;

3227 
u_t32_t
 
ags
;

3228 
db_pgno_t
 
ma
;

3229 
DB_LSN
 * 
ma_l
;

3230 
db_pgno_t
 
ϡ_
;

3231 
DB_LSN
 * 
ϡ_l
;

3232 
db_pgno_t
 
ϡ_pgno
;

3233 cڡ 
DBT
 *
li
;

3235 
DBT
 
logc
;

3236 
DB_ENV
 *
dbv
;

3237 
DB_TXNLOGREC
 *

;

3238 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

3239 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

3240 
u_t
 
ad
;

3241 
u_t8_t
 *
bp
;

3242 
is_dub
, 
t
;

3244 
dbv
 = 
dbp
->dbenv;

3245 
	`COMPQUIET
(

, 
NULL
);

3247 
y
 = 
DB___db_pg_st
;

3248 
ad
 = 0;

3249 
p
 = 
t_lp
;

3251 
t
 = 0;

3253 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

3254 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

3255 i(
tx
 =
NULL
)

3257 
is_dub
 = 0;

3259 
is_dub
 = 1;

3261 i(
tx
 =
NULL
) {

3262 
txn_num
 = 0;

3263 
lp
 = &
nu_l
;

3264 
nu_l
.
fe
 =u_l.
offt
 = 0;

3266 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

3267 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

3268  (
t
);

3275 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

3276 
txn_num
 = 
tx
->
txnid
;

3279 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

3280 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

3281 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

3282  (
t
);

3284 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

3285 + (
u_t32_t
)

3286 + (
u_t32_t
)

3287 + (*
ma_l
)

3288 + (
u_t32_t
)

3289 + (*
ϡ_l
)

3290 + (
u_t32_t
)

3291 + (
u_t32_t
+ (
li
 =
NULL
 ? 0 :i->
size
);

3292 i(
	`CRYPTO_ON
(
dbv
)) {

3293 
ad
 =

3294 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

3295 
logc
.
size
 +
ad
;

3298 i(
is_dub
 || 
tx
 =
NULL
) {

3299 i((
t
 =

3300 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

3301  (
t
);

3303 i((
t
 = 
	`__os_mloc
(
dbv
,

3304 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

3305  (
t
);

3306 #ifde
DIAGNOSTIC


3307 i((
t
 =

3308 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

3309 
	`__os_
(
dbv
, 

);

3310  (
t
);

3313 
logc
.
da
 = 

->data;

3316 i(
ad
 > 0)

3317 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

3319 
bp
 = 
logc
.
da
;

3321 
	`memy
(
bp
, &
y
, (rectype));

3322 
bp
 +(
y
);

3324 
	`memy
(
bp
, &
txn_num
, (txn_num));

3325 
bp
 +(
txn_num
);

3327 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

3328 
bp
 +(
DB_LSN
);

3330 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

3331 
	`memy
(
bp
, &
ump
, (uinttmp));

3332 
bp
 +(
ump
);

3334 
ump
 = (
u_t32_t
)
ma
;

3335 
	`memy
(
bp
, &
ump
, (uinttmp));

3336 
bp
 +(
ump
);

3338 i(
ma_l
 !
NULL
) {

3339 i(
tx
 !
NULL
) {

3340 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

3341 i(
	`LOG_COMPARE
(
ma_l
, &

->
l
>0 && (
t
 =

3342 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ma_l
) != 0))

3343  (
t
);

3345 
	`memy
(
bp
, 
ma_l
, (*meta_lsn));

3347 
	`memt
(
bp
, 0, (*
ma_l
));

3348 
bp
 +(*
ma_l
);

3350 
ump
 = (
u_t32_t
)
ϡ_
;

3351 
	`memy
(
bp
, &
ump
, (uinttmp));

3352 
bp
 +(
ump
);

3354 i(
ϡ_l
 !
NULL
) {

3355 i(
tx
 !
NULL
) {

3356 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

3357 i(
	`LOG_COMPARE
(
ϡ_l
, &

->
l
>0 && (
t
 =

3358 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ϡ_l
) != 0))

3359  (
t
);

3361 
	`memy
(
bp
, 
ϡ_l
, (*last_lsn));

3363 
	`memt
(
bp
, 0, (*
ϡ_l
));

3364 
bp
 +(*
ϡ_l
);

3366 
ump
 = (
u_t32_t
)
ϡ_pgno
;

3367 
	`memy
(
bp
, &
ump
, (uinttmp));

3368 
bp
 +(
ump
);

3370 i(
li
 =
NULL
) {

3371 
zo
 = 0;

3372 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

3373 
bp
 +(
u_t32_t
);

3375 
	`memy
(
bp
, &
li
->
size
, (list->size));

3376 
bp
 +(
li
->
size
);

3377 
	`memy
(
bp
, 
li
->
da
,i->
size
);

3378 
bp
 +
li
->
size
;

3381 
	`DB_ASSERT
(
dbv
,

3382 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

3384 i(
is_dub
 || 
tx
 =
NULL
) {

3385 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

3386 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

3387 *
lp
 = *
p
;

3388 i(
p
 !
t_lp
)

3389 *
t_lp
 = *
p
;

3392 
t
 = 0;

3393 #ifde
DIAGNOSTIC


3398 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

3399 
y
 |
DB_debug_FLAG
;

3400 
	`memy
(
logc
.
da
, &
y
, (rectype));

3402 i(!
	`IS_REP_CLIENT
(
dbv
))

3403 
t
 = 
	`__log_put
(
dbv
,

3404 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

3406 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

3407 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

3408 
	`LSN_NOT_LOGGED
(*
t_lp
);

3411 #ifde
LOG_DIAGNOSTIC


3412 i(
t
 != 0)

3413 ()
	`__db_pg_st_t
(
dbv
,

3414 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

3417 #ifde
DIAGNOSTIC


3418 
	`__os_
(
dbv
, 
logc
.
da
);

3420 i(
is_dub
 || 
tx
 =
NULL
)

3421 
	`__os_
(
dbv
, 
logc
.
da
);

3423  (
t
);

3424 
	}
}

3430 
	$__db_pg_st_ad
(
dbv
, 
cbuf
, 
g
)

3431 
DB_ENV
 *
dbv
;

3432 *
cbuf
;

3433 
__db_pg_st_gs
 **
g
;

3435 
__db_pg_st_gs
 *
gp
;

3436 
u_t32_t
 
ump
;

3437 
u_t8_t
 *
bp
;

3438 
t
;

3440 i((
t
 = 
	`__os_mloc
(
dbv
,

3441 (
__db_pg_st_gs
+ (
DB_TXN
), &
gp
)) != 0)

3442  (
t
);

3443 
bp
 = 
cbuf
;

3444 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

3445 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

3447 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

3448 
bp
 +(
gp
->
ty
);

3450 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

3451 
bp
 +(
gp
->
tx
->
txnid
);

3453 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

3454 
bp
 +(
DB_LSN
);

3456 
	`memy
(&
ump
, 
bp
, (uinttmp));

3457 
gp
->
feid
 = (
t32_t
)
ump
;

3458 
bp
 +(
ump
);

3460 
	`memy
(&
ump
, 
bp
, (uinttmp));

3461 
gp
->
ma
 = (
db_pgno_t
)
ump
;

3462 
bp
 +(
ump
);

3464 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

3465 
bp
 +(
gp
->
ma_l
);

3467 
	`memy
(&
ump
, 
bp
, (uinttmp));

3468 
gp
->
ϡ_
 = (
db_pgno_t
)
ump
;

3469 
bp
 +(
ump
);

3471 
	`memy
(&
gp
->
ϡ_l
, 
bp
, (argp->last_lsn));

3472 
bp
 +(
gp
->
ϡ_l
);

3474 
	`memy
(&
ump
, 
bp
, (uinttmp));

3475 
gp
->
ϡ_pgno
 = (
db_pgno_t
)
ump
;

3476 
bp
 +(
ump
);

3478 
	`memt
(&
gp
->
li
, 0, (argp->list));

3479 
	`memy
(&
gp
->
li
.
size
, 
bp
, (
u_t32_t
));

3480 
bp
 +(
u_t32_t
);

3481 
gp
->
li
.
da
 = 
bp
;

3482 
bp
 +
gp
->
li
.
size
;

3484 *
g
 = 
gp
;

3486 
	}
}

3493 
	$__db__cov
(
dbv
, 
dbp
, 
dbsiz
)

3494 
DB_ENV
 *
dbv
;

3495 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

3496 
size_t
 *
dbsiz
;

3498 
t
;

3500 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3501 
__db_addm_cov
, 
DB___db_addm
)) != 0)

3502  (
t
);

3503 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3504 
__db_big_cov
, 
DB___db_big
)) != 0)

3505  (
t
);

3506 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3507 
__db_ovf_cov
, 
DB___db_ovf
)) != 0)

3508  (
t
);

3509 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3510 
__db_debug_cov
, 
DB___db_debug
)) != 0)

3511  (
t
);

3512 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3513 
__db_no_cov
, 
DB___db_no
)) != 0)

3514  (
t
);

3515 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3516 
__db_pg_loc_cov
, 
DB___db_pg_loc
)) != 0)

3517  (
t
);

3518 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3519 
__db_pg__cov
, 
DB___db_pg_
)) != 0)

3520  (
t
);

3521 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3522 
__db_cksum_cov
, 
DB___db_cksum
)) != 0)

3523  (
t
);

3524 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3525 
__db_pg_da_cov
, 
DB___db_pg_da
)) != 0)

3526  (
t
);

3527 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3528 
__db_pg_e_cov
, 
DB___db_pg_e
)) != 0)

3529  (
t
);

3530 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3531 
__db_pg_w_cov
, 
DB___db_pg_w
)) != 0)

3532  (
t
);

3533 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3534 
__db_pg__cov
, 
DB___db_pg_
)) != 0)

3535  (
t
);

3536 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

3537 
__db_pg_st_cov
, 
DB___db_pg_st
)) != 0)

3538  (
t
);

3540 
	}
}

	@../db/db_autop.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/log.h
"

11 
	~"dbc/txn.h
"

18 
	$__db_addm_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

19 
DB_ENV
 *
dbv
;

20 
DBT
 *
db
;

21 
DB_LSN
 *
lp
;

22 
db_cs
 
nud2
;

23 *
nud3
;

25 
__db_addm_gs
 *
gp
;

26 
u_t32_t
 
i
;

27 
ch
;

28 
t
;

30 
nud2
 = 
DB_TXN_PRINT
;

31 
nud3
 = 
NULL
;

33 i((
t
 = 
	`__db_addm_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

34  (
t
);

35 ()
	`tf
(

37 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

38 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

39 (
u_lg
)
gp
->
ty
,

40 (
u_lg
)
gp
->
tx
->
txnid
,

41 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

42 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

43 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

44 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

45 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

46 ()
	`tf
("\bys: %lu\n", (
u_lg
)
gp
->
nbys
);

47 ()
	`tf
("\thdr: ");

48 
i
 = 0; i < 
gp
->
hdr
.
size
; i++) {

49 
ch
 = ((
u_t8_t
 *)
gp
->
hdr
.
da
)[
i
];

50 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

52 ()
	`tf
("\n");

53 ()
	`tf
("\tdbt: ");

54 
i
 = 0; i < 
gp
->
dbt
.
size
; i++) {

55 
ch
 = ((
u_t8_t
 *)
gp
->
dbt
.
da
)[
i
];

56 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

58 ()
	`tf
("\n");

59 ()
	`tf
("\tpagelsn: [%lu][%lu]\n",

60 (
u_lg
)
gp
->
g
.
fe
, (u_lgrgp->g.
offt
);

61 ()
	`tf
("\n");

62 
	`__os_
(
dbv
, 
gp
);

64 
	}
}

71 
	$__db_big_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

72 
DB_ENV
 *
dbv
;

73 
DBT
 *
db
;

74 
DB_LSN
 *
lp
;

75 
db_cs
 
nud2
;

76 *
nud3
;

78 
__db_big_gs
 *
gp
;

79 
u_t32_t
 
i
;

80 
ch
;

81 
t
;

83 
nud2
 = 
DB_TXN_PRINT
;

84 
nud3
 = 
NULL
;

86 i((
t
 = 
	`__db_big_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

87  (
t
);

88 ()
	`tf
(

90 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

91 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

92 (
u_lg
)
gp
->
ty
,

93 (
u_lg
)
gp
->
tx
->
txnid
,

94 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

95 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

96 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

97 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

98 ()
	`tf
("\v_pgno: %lu\n", (
u_lg
)
gp
->
ev_pgno
);

99 ()
	`tf
("\ext_pgno: %lu\n", (
u_lg
)
gp
->
xt_pgno
);

100 ()
	`tf
("\tdbt: ");

101 
i
 = 0; i < 
gp
->
dbt
.
size
; i++) {

102 
ch
 = ((
u_t8_t
 *)
gp
->
dbt
.
da
)[
i
];

103 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

105 ()
	`tf
("\n");

106 ()
	`tf
("\tpagelsn: [%lu][%lu]\n",

107 (
u_lg
)
gp
->
g
.
fe
, (u_lgrgp->g.
offt
);

108 ()
	`tf
("\tprevlsn: [%lu][%lu]\n",

109 (
u_lg
)
gp
->
evl
.
fe
, (u_lgrgp->evl.
offt
);

110 ()
	`tf
("\tnextlsn: [%lu][%lu]\n",

111 (
u_lg
)
gp
->
x
.
fe
, (u_lgrgp->x.
offt
);

112 ()
	`tf
("\n");

113 
	`__os_
(
dbv
, 
gp
);

115 
	}
}

122 
	$__db_ovf_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

123 
DB_ENV
 *
dbv
;

124 
DBT
 *
db
;

125 
DB_LSN
 *
lp
;

126 
db_cs
 
nud2
;

127 *
nud3
;

129 
__db_ovf_gs
 *
gp
;

130 
t
;

132 
nud2
 = 
DB_TXN_PRINT
;

133 
nud3
 = 
NULL
;

135 i((
t
 = 
	`__db_ovf_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

136  (
t
);

137 ()
	`tf
(

139 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

140 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

141 (
u_lg
)
gp
->
ty
,

142 (
u_lg
)
gp
->
tx
->
txnid
,

143 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

144 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

145 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

146 ()
	`tf
("\dju: %ld\n", ()
gp
->
adju
);

147 ()
	`tf
("\tlsn: [%lu][%lu]\n",

148 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

149 ()
	`tf
("\n");

150 
	`__os_
(
dbv
, 
gp
);

152 
	}
}

159 
	$__db_lk_42_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

160 
DB_ENV
 *
dbv
;

161 
DBT
 *
db
;

162 
DB_LSN
 *
lp
;

163 
db_cs
 
nud2
;

164 *
nud3
;

166 
__db_lk_42_gs
 *
gp
;

167 
t
;

169 
nud2
 = 
DB_TXN_PRINT
;

170 
nud3
 = 
NULL
;

172 i((
t
 = 
	`__db_lk_42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

173  (
t
);

174 ()
	`tf
(

176 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

177 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

178 (
u_lg
)
gp
->
ty
,

179 (
u_lg
)
gp
->
tx
->
txnid
,

180 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

181 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

182 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

183 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

184 ()
	`tf
("\tlsn: [%lu][%lu]\n",

185 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

186 ()
	`tf
("\v: %lu\n", (
u_lg
)
gp
->
ev
);

187 ()
	`tf
("\tlsn_prev: [%lu][%lu]\n",

188 (
u_lg
)
gp
->
l_ev
.
fe
, (u_lgrgp->l_ev.
offt
);

189 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

190 ()
	`tf
("\tlsn_next: [%lu][%lu]\n",

191 (
u_lg
)
gp
->
l_xt
.
fe
, (u_lgrgp->l_xt.
offt
);

192 ()
	`tf
("\n");

193 
	`__os_
(
dbv
, 
gp
);

195 
	}
}

202 
	$__db_debug_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

203 
DB_ENV
 *
dbv
;

204 
DBT
 *
db
;

205 
DB_LSN
 *
lp
;

206 
db_cs
 
nud2
;

207 *
nud3
;

209 
__db_debug_gs
 *
gp
;

210 
u_t32_t
 
i
;

211 
ch
;

212 
t
;

214 
nud2
 = 
DB_TXN_PRINT
;

215 
nud3
 = 
NULL
;

217 i((
t
 = 
	`__db_debug_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

218  (
t
);

219 ()
	`tf
(

221 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

222 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

223 (
u_lg
)
gp
->
ty
,

224 (
u_lg
)
gp
->
tx
->
txnid
,

225 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

226 ()
	`tf
("\top: ");

227 
i
 = 0; i < 
gp
->

.
size
; i++) {

228 
ch
 = ((
u_t8_t
 *)
gp
->

.
da
)[
i
];

229 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

231 ()
	`tf
("\n");

232 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

233 ()
	`tf
("\tkey: ");

234 
i
 = 0; i < 
gp
->
key
.
size
; i++) {

235 
ch
 = ((
u_t8_t
 *)
gp
->
key
.
da
)[
i
];

236 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

238 ()
	`tf
("\n");

239 ()
	`tf
("\tdata: ");

240 
i
 = 0; i < 
gp
->
da
.
size
; i++) {

241 
ch
 = ((
u_t8_t
 *)
gp
->
da
.da)[
i
];

242 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

244 ()
	`tf
("\n");

245 ()
	`tf
("\rg_ags: %lu\n", (
u_lg
)
gp
->
g_ags
);

246 ()
	`tf
("\n");

247 
	`__os_
(
dbv
, 
gp
);

249 
	}
}

256 
	$__db_no_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

257 
DB_ENV
 *
dbv
;

258 
DBT
 *
db
;

259 
DB_LSN
 *
lp
;

260 
db_cs
 
nud2
;

261 *
nud3
;

263 
__db_no_gs
 *
gp
;

264 
t
;

266 
nud2
 = 
DB_TXN_PRINT
;

267 
nud3
 = 
NULL
;

269 i((
t
 = 
	`__db_no_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

270  (
t
);

271 ()
	`tf
(

273 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

274 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

275 (
u_lg
)
gp
->
ty
,

276 (
u_lg
)
gp
->
tx
->
txnid
,

277 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

278 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

279 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

280 ()
	`tf
("\tprevlsn: [%lu][%lu]\n",

281 (
u_lg
)
gp
->
evl
.
fe
, (u_lgrgp->evl.
offt
);

282 ()
	`tf
("\n");

283 
	`__os_
(
dbv
, 
gp
);

285 
	}
}

292 
	$__db_pg_loc_42_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

293 
DB_ENV
 *
dbv
;

294 
DBT
 *
db
;

295 
DB_LSN
 *
lp
;

296 
db_cs
 
nud2
;

297 *
nud3
;

299 
__db_pg_loc_42_gs
 *
gp
;

300 
t
;

302 
nud2
 = 
DB_TXN_PRINT
;

303 
nud3
 = 
NULL
;

305 i((
t
 = 
	`__db_pg_loc_42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

306  (
t
);

307 ()
	`tf
(

309 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

310 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

311 (
u_lg
)
gp
->
ty
,

312 (
u_lg
)
gp
->
tx
->
txnid
,

313 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

314 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

315 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

316 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

317 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

318 ()
	`tf
("\tpage_lsn: [%lu][%lu]\n",

319 (
u_lg
)
gp
->
ge_l
.
fe
, (u_lgrgp->ge_l.
offt
);

320 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

321 ()
	`tf
("\ty: %lu\n", (
u_lg
)
gp
->
y
);

322 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

323 ()
	`tf
("\n");

324 
	`__os_
(
dbv
, 
gp
);

326 
	}
}

333 
	$__db_pg_loc_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

334 
DB_ENV
 *
dbv
;

335 
DBT
 *
db
;

336 
DB_LSN
 *
lp
;

337 
db_cs
 
nud2
;

338 *
nud3
;

340 
__db_pg_loc_gs
 *
gp
;

341 
t
;

343 
nud2
 = 
DB_TXN_PRINT
;

344 
nud3
 = 
NULL
;

346 i((
t
 = 
	`__db_pg_loc_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

347  (
t
);

348 ()
	`tf
(

350 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

351 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

352 (
u_lg
)
gp
->
ty
,

353 (
u_lg
)
gp
->
tx
->
txnid
,

354 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

355 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

356 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

357 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

358 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

359 ()
	`tf
("\tpage_lsn: [%lu][%lu]\n",

360 (
u_lg
)
gp
->
ge_l
.
fe
, (u_lgrgp->ge_l.
offt
);

361 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

362 ()
	`tf
("\ty: %lu\n", (
u_lg
)
gp
->
y
);

363 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

364 ()
	`tf
("\a_pgno: %lu\n", (
u_lg
)
gp
->
ϡ_pgno
);

365 ()
	`tf
("\n");

366 
	`__os_
(
dbv
, 
gp
);

368 
	}
}

375 
	$__db_pg__42_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

376 
DB_ENV
 *
dbv
;

377 
DBT
 *
db
;

378 
DB_LSN
 *
lp
;

379 
db_cs
 
nud2
;

380 *
nud3
;

382 
__db_pg__42_gs
 *
gp
;

383 
u_t32_t
 
i
;

384 
ch
;

385 
t
;

387 
nud2
 = 
DB_TXN_PRINT
;

388 
nud3
 = 
NULL
;

390 i((
t
 = 
	`__db_pg__42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

391  (
t
);

392 ()
	`tf
(

394 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

395 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

396 (
u_lg
)
gp
->
ty
,

397 (
u_lg
)
gp
->
tx
->
txnid
,

398 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

399 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

400 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

401 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

402 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

403 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

404 ()
	`tf
("\theader: ");

405 
i
 = 0; i < 
gp
->
hd
.
size
; i++) {

406 
ch
 = ((
u_t8_t
 *)
gp
->
hd
.
da
)[
i
];

407 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

409 ()
	`tf
("\n");

410 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

411 ()
	`tf
("\n");

412 
	`__os_
(
dbv
, 
gp
);

414 
	}
}

421 
	$__db_pg__t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

422 
DB_ENV
 *
dbv
;

423 
DBT
 *
db
;

424 
DB_LSN
 *
lp
;

425 
db_cs
 
nud2
;

426 *
nud3
;

428 
__db_pg__gs
 *
gp
;

429 
u_t32_t
 
i
;

430 
ch
;

431 
t
;

433 
nud2
 = 
DB_TXN_PRINT
;

434 
nud3
 = 
NULL
;

436 i((
t
 = 
	`__db_pg__ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

437  (
t
);

438 ()
	`tf
(

440 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

441 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

442 (
u_lg
)
gp
->
ty
,

443 (
u_lg
)
gp
->
tx
->
txnid
,

444 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

445 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

446 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

447 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

448 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

449 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

450 ()
	`tf
("\theader: ");

451 
i
 = 0; i < 
gp
->
hd
.
size
; i++) {

452 
ch
 = ((
u_t8_t
 *)
gp
->
hd
.
da
)[
i
];

453 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

455 ()
	`tf
("\n");

456 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

457 ()
	`tf
("\a_pgno: %lu\n", (
u_lg
)
gp
->
ϡ_pgno
);

458 ()
	`tf
("\n");

459 
	`__os_
(
dbv
, 
gp
);

461 
	}
}

468 
	$__db_cksum_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

469 
DB_ENV
 *
dbv
;

470 
DBT
 *
db
;

471 
DB_LSN
 *
lp
;

472 
db_cs
 
nud2
;

473 *
nud3
;

475 
__db_cksum_gs
 *
gp
;

476 
t
;

478 
nud2
 = 
DB_TXN_PRINT
;

479 
nud3
 = 
NULL
;

481 i((
t
 = 
	`__db_cksum_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

482  (
t
);

483 ()
	`tf
(

485 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

486 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

487 (
u_lg
)
gp
->
ty
,

488 (
u_lg
)
gp
->
tx
->
txnid
,

489 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

490 ()
	`tf
("\n");

491 
	`__os_
(
dbv
, 
gp
);

493 
	}
}

500 
	$__db_pg_da_42_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

501 
DB_ENV
 *
dbv
;

502 
DBT
 *
db
;

503 
DB_LSN
 *
lp
;

504 
db_cs
 
nud2
;

505 *
nud3
;

507 
__db_pg_da_42_gs
 *
gp
;

508 
u_t32_t
 
i
;

509 
ch
;

510 
t
;

512 
nud2
 = 
DB_TXN_PRINT
;

513 
nud3
 = 
NULL
;

515 i((
t
 = 
	`__db_pg_da_42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

516  (
t
);

517 ()
	`tf
(

519 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

520 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

521 (
u_lg
)
gp
->
ty
,

522 (
u_lg
)
gp
->
tx
->
txnid
,

523 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

524 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

525 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

526 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

527 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

528 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

529 ()
	`tf
("\theader: ");

530 
i
 = 0; i < 
gp
->
hd
.
size
; i++) {

531 
ch
 = ((
u_t8_t
 *)
gp
->
hd
.
da
)[
i
];

532 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

534 ()
	`tf
("\n");

535 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

536 ()
	`tf
("\tdata: ");

537 
i
 = 0; i < 
gp
->
da
.
size
; i++) {

538 
ch
 = ((
u_t8_t
 *)
gp
->
da
.da)[
i
];

539 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

541 ()
	`tf
("\n");

542 ()
	`tf
("\n");

543 
	`__os_
(
dbv
, 
gp
);

545 
	}
}

552 
	$__db_pg_da_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

553 
DB_ENV
 *
dbv
;

554 
DBT
 *
db
;

555 
DB_LSN
 *
lp
;

556 
db_cs
 
nud2
;

557 *
nud3
;

559 
__db_pg_da_gs
 *
gp
;

560 
u_t32_t
 
i
;

561 
ch
;

562 
t
;

564 
nud2
 = 
DB_TXN_PRINT
;

565 
nud3
 = 
NULL
;

567 i((
t
 = 
	`__db_pg_da_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

568  (
t
);

569 ()
	`tf
(

571 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

572 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

573 (
u_lg
)
gp
->
ty
,

574 (
u_lg
)
gp
->
tx
->
txnid
,

575 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

576 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

577 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

578 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

579 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

580 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

581 ()
	`tf
("\theader: ");

582 
i
 = 0; i < 
gp
->
hd
.
size
; i++) {

583 
ch
 = ((
u_t8_t
 *)
gp
->
hd
.
da
)[
i
];

584 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

586 ()
	`tf
("\n");

587 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

588 ()
	`tf
("\a_pgno: %lu\n", (
u_lg
)
gp
->
ϡ_pgno
);

589 ()
	`tf
("\tdata: ");

590 
i
 = 0; i < 
gp
->
da
.
size
; i++) {

591 
ch
 = ((
u_t8_t
 *)
gp
->
da
.da)[
i
];

592 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

594 ()
	`tf
("\n");

595 ()
	`tf
("\n");

596 
	`__os_
(
dbv
, 
gp
);

598 
	}
}

605 
	$__db_pg_e_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

606 
DB_ENV
 *
dbv
;

607 
DBT
 *
db
;

608 
DB_LSN
 *
lp
;

609 
db_cs
 
nud2
;

610 *
nud3
;

612 
__db_pg_e_gs
 *
gp
;

613 
t
;

615 
nud2
 = 
DB_TXN_PRINT
;

616 
nud3
 = 
NULL
;

618 i((
t
 = 
	`__db_pg_e_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

619  (
t
);

620 ()
	`tf
(

622 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

623 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

624 (
u_lg
)
gp
->
ty
,

625 (
u_lg
)
gp
->
tx
->
txnid
,

626 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

627 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

628 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

629 ()
	`tf
("\n");

630 
	`__os_
(
dbv
, 
gp
);

632 
	}
}

639 
	$__db_pg_w_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

640 
DB_ENV
 *
dbv
;

641 
DBT
 *
db
;

642 
DB_LSN
 *
lp
;

643 
db_cs
 
nud2
;

644 *
nud3
;

646 
__db_pg_w_gs
 *
gp
;

647 
u_t32_t
 
i
;

648 
ch
;

649 
t
;

651 
nud2
 = 
DB_TXN_PRINT
;

652 
nud3
 = 
NULL
;

654 i((
t
 = 
	`__db_pg_w_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

655  (
t
);

656 ()
	`tf
(

658 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

659 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

660 (
u_lg
)
gp
->
ty
,

661 (
u_lg
)
gp
->
tx
->
txnid
,

662 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

663 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

664 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

665 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

666 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

667 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

668 ()
	`tf
("\theader: ");

669 
i
 = 0; i < 
gp
->
hd
.
size
; i++) {

670 
ch
 = ((
u_t8_t
 *)
gp
->
hd
.
da
)[
i
];

671 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

673 ()
	`tf
("\n");

674 ()
	`tf
("\ext: %lu\n", (
u_lg
)
gp
->
xt
);

675 ()
	`tf
("\n");

676 
	`__os_
(
dbv
, 
gp
);

678 
	}
}

685 
	$__db_pg__t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

686 
DB_ENV
 *
dbv
;

687 
DBT
 *
db
;

688 
DB_LSN
 *
lp
;

689 
db_cs
 
nud2
;

690 *
nud3
;

692 
__db_pg__gs
 *
gp
;

693 
u_t32_t
 
i
;

694 
ch
;

695 
t
;

697 
nud2
 = 
DB_TXN_PRINT
;

698 
nud3
 = 
NULL
;

700 i((
t
 = 
	`__db_pg__ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

701  (
t
);

702 ()
	`tf
(

704 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

705 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

706 (
u_lg
)
gp
->
ty
,

707 (
u_lg
)
gp
->
tx
->
txnid
,

708 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

709 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

710 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

711 ()
	`tf
("\theader: ");

712 
i
 = 0; i < 
gp
->
hd
.
size
; i++) {

713 
ch
 = ((
u_t8_t
 *)
gp
->
hd
.
da
)[
i
];

714 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

716 ()
	`tf
("\n");

717 ()
	`tf
("\tdata: ");

718 
i
 = 0; i < 
gp
->
da
.
size
; i++) {

719 
ch
 = ((
u_t8_t
 *)
gp
->
da
.da)[
i
];

720 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

722 ()
	`tf
("\n");

723 ()
	`tf
("\n");

724 
	`__os_
(
dbv
, 
gp
);

726 
	}
}

733 
	$__db_pg_st_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

734 
DB_ENV
 *
dbv
;

735 
DBT
 *
db
;

736 
DB_LSN
 *
lp
;

737 
db_cs
 
nud2
;

738 *
nud3
;

740 
__db_pg_st_gs
 *
gp
;

741 
u_t32_t
 
i
;

742 
ch
;

743 
t
;

745 
nud2
 = 
DB_TXN_PRINT
;

746 
nud3
 = 
NULL
;

748 i((
t
 = 
	`__db_pg_st_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

749  (
t
);

750 ()
	`tf
(

752 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

753 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

754 (
u_lg
)
gp
->
ty
,

755 (
u_lg
)
gp
->
tx
->
txnid
,

756 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

757 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

758 ()
	`tf
("\tma: %lu\n", (
u_lg
)
gp
->
ma
);

759 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

760 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

761 ()
	`tf
("\a_: %lu\n", (
u_lg
)
gp
->
ϡ_
);

762 ()
	`tf
("\tlast_lsn: [%lu][%lu]\n",

763 (
u_lg
)
gp
->
ϡ_l
.
fe
, (u_lgrgp->ϡ_l.
offt
);

764 ()
	`tf
("\a_pgno: %lu\n", (
u_lg
)
gp
->
ϡ_pgno
);

765 ()
	`tf
("\tlist: ");

766 
i
 = 0; i < 
gp
->
li
.
size
; i++) {

767 
ch
 = ((
u_t8_t
 *)
gp
->
li
.
da
)[
i
];

768 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

770 ()
	`tf
("\n");

771 ()
	`tf
("\n");

772 
	`__os_
(
dbv
, 
gp
);

774 
	}
}

781 
	$__db__t
(
dbv
, 
dbp
, 
dbsiz
)

782 
DB_ENV
 *
dbv
;

783 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

784 
size_t
 *
dbsiz
;

786 
t
;

788 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

789 
__db_addm_t
, 
DB___db_addm
)) != 0)

790  (
t
);

791 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

792 
__db_big_t
, 
DB___db_big
)) != 0)

793  (
t
);

794 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

795 
__db_ovf_t
, 
DB___db_ovf
)) != 0)

796  (
t
);

797 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

798 
__db_debug_t
, 
DB___db_debug
)) != 0)

799  (
t
);

800 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

801 
__db_no_t
, 
DB___db_no
)) != 0)

802  (
t
);

803 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

804 
__db_pg_loc_t
, 
DB___db_pg_loc
)) != 0)

805  (
t
);

806 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

807 
__db_pg__t
, 
DB___db_pg_
)) != 0)

808  (
t
);

809 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

810 
__db_cksum_t
, 
DB___db_cksum
)) != 0)

811  (
t
);

812 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

813 
__db_pg_da_t
, 
DB___db_pg_da
)) != 0)

814  (
t
);

815 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

816 
__db_pg_e_t
, 
DB___db_pg_e
)) != 0)

817  (
t
);

818 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

819 
__db_pg_w_t
, 
DB___db_pg_w
)) != 0)

820  (
t
);

821 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

822 
__db_pg__t
, 
DB___db_pg_
)) != 0)

823  (
t
);

824 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

825 
__db_pg_st_t
, 
DB___db_pg_st
)) != 0)

826  (
t
);

828 
	}
}

	@../db/db_cam.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/hash.h
"

15 
	~"dbc/lock.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/qam.h
"

18 
	~"dbc/txn.h
"

20 
__db_budl
 
__P
((
DB
 *, 
DBT
 *, DBT *, DBT *));

21 
__dbc_nup
 
__P
((
DBC
 *, DBC *, ));

22 
__dbc_d_dskey
 
__P
((
DB
 *, 
DBC
 *, 
DBT
 *, DBT *, DBT *));

23 
__dbc_d_cdy
 
__P
((
DBC
 *));

24 
__dbc_pg_o
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

25 
__db_s_cou
 
__P
((
DB
 *));

26 
__db_wock_r
 
__P
((
DB_ENV
 *));

28 
	#CDB_LOCKING_INIT
(
dbv
, 
dbc
) \

35 i(
	`CDB_LOCKING
(
dbv
)) { \

36 i(!
	`F_ISSET
(
dbc
, 
DBC_WRITECURSOR
 | 
DBC_WRITER
)) \

37  (
	`__db_wock_r
(
dbv
)); \

39 i(
	`F_ISSET
(
dbc
, 
DBC_WRITECURSOR
) && \

40 (
t
 = 
	`__lock_g
(
dbv
, \

41 (
dbc
)->
lock
, 
DB_LOCK_UPGRADE
, &(dbc)->
lock_dbt
, \

42 
DB_LOCK_WRITE
, &(
dbc
)->
mylock
)) != 0) \

43  (
t
); \

44 }

	)

45 
	#CDB_LOCKING_DONE
(
dbv
, 
dbc
) \

47 i(
	`F_ISSET
(
dbc
, 
DBC_WRITECURSOR
)) \

48 ()
	`__lock_downgde
( \

49 
dbv
, &(
dbc
)->
mylock
, 
DB_LOCK_IWRITE
, 0);

	)

58 
	$__dbc_o
(
dbc
)

59 
DBC
 *
dbc
;

61 
DB
 *
dbp
;

62 
DBC
 *
d
;

63 
DBC_INTERNAL
 *

;

64 
DB_ENV
 *
dbv
;

65 
DB_TXN
 *
txn
;

66 
t
, 
t_t
;

68 
dbp
 = 
dbc
->dbp;

69 
dbv
 = 
dbp
->dbenv;

70 

 = 
dbc
->

;

71 
d
 = 

->opd;

72 
t
 = 0;

85 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

87 i(
d
 !
NULL
) {

88 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
d
, 
DBC_ACTIVE
));

89 
	`F_CLR
(
d
, 
DBC_ACTIVE
);

90 
	`TAILQ_REMOVE
(&
dbp
->
aive_queue
, 
d
, 
lks
);

92 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
dbc
, 
DBC_ACTIVE
));

93 
	`F_CLR
(
dbc
, 
DBC_ACTIVE
);

94 
	`TAILQ_REMOVE
(&
dbp
->
aive_queue
, 
dbc
, 
lks
);

96 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

99 i((
t_t
 =

100 
dbc
->
	`am_o
(dbc, 
PGNO_INVALID
, 
NULL
)!0 && 
t
 == 0)

101 
t
 = 
t_t
;

107 i(
	`CDB_LOCKING
(
dbv
)) {

114 i((
t_t
 = 
	`__LPUT
(
dbc
, dbc->
mylock
)!0 && 
t
 == 0)

115 
t
 = 
t_t
;

118 
	`memt
(&
dbc
->
mylock
, 0, (dbc->mylock));

119 i(
d
 !
NULL
)

120 
	`memt
(&
d
->
mylock
, 0, (opd->mylock));

123 i((
txn
 = 
dbc
->txn!
NULL
)

124 
txn
->
curss
--;

127 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

128 i(
d
 !
NULL
) {

129 i(
txn
 !
NULL
)

130 
txn
->
curss
--;

131 
	`TAILQ_INSERT_TAIL
(&
dbp
->
_queue
, 
d
, 
lks
);

132 
d
 = 
NULL
;

134 
	`TAILQ_INSERT_TAIL
(&
dbp
->
_queue
, 
dbc
, 
lks
);

135 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

137 i(
txn
 !
NULL
 && 
	`F_ISSET
xn, 
TXN_PRIVATE
&&xn->
curss
 == 0 &&

138 (
t_t
 = 
	`__txn_comm
(
txn
, 0)!0 && 
t
 == 0)

139 
t
 = 
t_t
;

141  (
t
);

142 
	}
}

151 
	$__dbc_deroy
(
dbc
)

152 
DBC
 *
dbc
;

154 
DB
 *
dbp
;

155 
DB_ENV
 *
dbv
;

156 
t
, 
t_t
;

158 
dbp
 = 
dbc
->dbp;

159 
dbv
 = 
dbp
->dbenv;

162 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

163 
	`TAILQ_REMOVE
(&
dbp
->
_queue
, 
dbc
, 
lks
);

164 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

167 i(
dbc
->
my_rskey
.
da
 !
NULL
)

168 
	`__os_
(
dbv
, 
dbc
->
my_rskey
.
da
);

169 i(
dbc
->
my_rkey
.
da
 !
NULL
)

170 
	`__os_
(
dbv
, 
dbc
->
my_rkey
.
da
);

171 i(
dbc
->
my_rda
.
da
 !
NULL
)

172 
	`__os_
(
dbv
, 
dbc
->
my_rda
.
da
);

175 
t
 = 
dbc
->
am_deroy
 =
NULL
 ? 0 : dbc->
	`am_deroy
(dbc);

180 i(
	`LOCKING_ON
(
dbv
) &&

181 
	`F_ISSET
(
dbc
, 
DBC_OWN_LID
) &&

182 (
t_t
 = 
	`__lock_id_
(
dbv
,

183 (
DB_LOCKER
 *)
dbc
->
ef
)!0 && 
t
 == 0)

184 
t
 = 
t_t
;

186 
	`__os_
(
dbv
, 
dbc
);

188  (
t
);

189 
	}
}

198 
	$__dbc_cou
(
dbc
, 

)

199 
DBC
 *
dbc
;

200 
db_o_t
 *

;

202 
DB_ENV
 *
dbv
;

203 
t
;

205 
dbv
 = 
dbc
->
dbp
->dbenv;

214 
dbc
->
dbty
) {

215 
DB_QUEUE
:

216 
DB_RECNO
:

217 *

 = 1;

219 
DB_HASH
:

220 i(
dbc
->

->
d
 =
NULL
) {

221 i((
t
 = 
	`__hamc_cou
(
dbc
, 

)) != 0)

222  (
t
);

226 
DB_BTREE
:

227 i((
t
 = 
	`__bamc_cou
(
dbc
, 

)) != 0)

228  (
t
);

230 
DB_UNKNOWN
:

232  (
	`__db_unknown_ty
(
dbv
, "__dbc_cou", 
dbc
->
dbty
));

235 
	}
}

244 
	$__dbc_d
(
dbc
, 
ags
)

245 
DBC
 *
dbc
;

246 
u_t32_t
 
ags
;

248 
DB
 *
dbp
;

249 
DBC
 *
d
;

250 
DB_ENV
 *
dbv
;

251 
t
, 
t_t
;

253 
dbp
 = 
dbc
->dbp;

254 
dbv
 = 
dbp
->dbenv;

264 
	`CDB_LOCKING_INIT
(
dbv
, 
dbc
);

274 i(
ags
 !
DB_UPDATE_SECONDARY
 && 
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
)) {

275 
t
 = 
	`__dbc_d_cdy
(
dbc
);

276 
de
;

283 i(
	`LIST_FIRST
(&
dbp
->
s_cds
!
NULL
 &&

284 (
t
 = 
	`__dbc_d_imy
(
dbc
)) != 0)

285 
de
;

293 
d
 = 
dbc
->

->opd;

294 i(
d
 =
NULL
)

295 
t
 = 
dbc
->
	`am_d
(dbc);

297 i((
t
 = 
dbc
->
	`am_wrock
(dbc)) == 0)

298 
t
 = 
d
->
	`am_d
(opd);

307 i(
	`F_ISSET
(
dbc
->
dbp
, 
DB_AM_READ_UNCOMMITTED
) &&

308 
dbc
->

->
lock_mode
 =
DB_LOCK_WRITE
) {

309 i((
t_t
 =

310 
	`__TLPUT
(
dbc
, dbc->

->
lock
)!0 && 
t
 == 0)

311 
t
 = 
t_t
;

312 i(
t_t
 == 0)

313 
dbc
->

->
lock_mode
 = 
DB_LOCK_WWRITE
;

316 
de
: 
	`CDB_LOCKING_DONE
(
dbv
, 
dbc
);

318  (
t
);

319 
	}
}

328 
	$__dbc_dup
(
dbc_ig
, 
db
, 
ags
)

329 
DBC
 *
dbc_ig
;

330 
DBC
 **
db
;

331 
u_t32_t
 
ags
;

333 
DBC
 *
dbc_n
, *
dbc_nd
;

334 
t
;

336 
dbc_n
 = 
dbc_nd
 = 
NULL
;

339 i((
t
 = 
	`__dbc_idup
(
dbc_ig
, &
dbc_n
, 
ags
)) != 0)

340 
r
;

341 *
db
 = 
dbc_n
;

347 i(
dbc_ig
->

->
d
 !
NULL
) {

348 i((
t
 =

349 
	`__dbc_idup
(
dbc_ig
->

->
d
, &
dbc_nd
, 
ags
)) != 0)

350 
r
;

351 
dbc_n
->

->
d
 = 
dbc_nd
;

355 
r
: i(
dbc_n
 !
NULL
)

356 ()
	`__dbc_o
(
dbc_n
);

357 i(
dbc_nd
 !
NULL
)

358 ()
	`__dbc_o
(
dbc_nd
);

360  (
t
);

361 
	}
}

370 
	$__dbc_idup
(
dbc_ig
, 
db
, 
ags
)

371 
DBC
 *
dbc_ig
, **
db
;

372 
u_t32_t
 
ags
;

374 
DB
 *
dbp
;

375 
DBC
 *
dbc_n
;

376 
DBC_INTERNAL
 *
t_n
, *
t_ig
;

377 
t
;

379 
dbp
 = 
dbc_ig
->dbp;

380 
dbc_n
 = *
db
;

382 i((
t
 = 
	`__db_curs_t
(
dbp
, 
dbc_ig
->
txn
, dbc_ig->
dbty
,

383 
dbc_ig
->

->
ro
, 
	`F_ISSET
(dbc_ig, 
DBC_OPD
),

384 
dbc_ig
->
lock
, &
dbc_n
)) != 0)

385  (
t
);

388 i(
ags
 =
DB_POSITION
) {

389 
t_n
 = 
dbc_n
->

;

390 
t_ig
 = 
dbc_ig
->

;

392 
dbc_n
->
ags
 |
dbc_ig
->ag& ~
DBC_OWN_LID
;

394 
t_n
->
dx
 = 
t_ig
->indx;

395 
t_n
->
pgno
 = 
t_ig
->pgno;

396 
t_n
->
ro
 = 
t_ig
->root;

397 
t_n
->
lock_mode
 = 
t_ig
->lock_mode;

399 
dbc_ig
->
dbty
) {

400 
DB_QUEUE
:

401 i((
t
 = 
	`__qamc_dup
(
dbc_ig
, 
dbc_n
)) != 0)

402 
r
;

404 
DB_BTREE
:

405 
DB_RECNO
:

406 i((
t
 = 
	`__bamc_dup
(
dbc_ig
, 
dbc_n
)) != 0)

407 
r
;

409 
DB_HASH
:

410 i((
t
 = 
	`__hamc_dup
(
dbc_ig
, 
dbc_n
)) != 0)

411 
r
;

413 
DB_UNKNOWN
:

415 
t
 = 
	`__db_unknown_ty
(
dbp
->
dbv
,

416 "__dbc_idup", 
dbc_ig
->
dbty
);

417 
r
;

422 
	`F_SET
(
dbc_n
, 
	`F_ISSET
(
dbc_ig
,

423 
DBC_READ_COMMITTED
 | 
DBC_READ_UNCOMMITTED
 | 
DBC_WRITECURSOR
));

429 i(
	`CDB_LOCKING
(
dbp
->
dbv
&& !
	`F_ISSET
(
dbc_n
, 
DBC_OPD
) &&

430 (
t
 = 
	`__lock_g
(
dbp
->
dbv
, 
dbc_n
->
lock
, 0,

431 &
dbc_n
->
lock_dbt
, 
	`F_ISSET
(
dbc_ig
, 
DBC_WRITECURSOR
) ?

432 
DB_LOCK_IWRITE
 : 
DB_LOCK_READ
, &
dbc_n
->
mylock
)) != 0)

433 
r
;

435 
dbc_n
->
iܙy
 = 
dbc_ig
->priority;

436 *
db
 = 
dbc_n
;

439 
r
: ()
	`__dbc_o
(
dbc_n
);

440  (
t
);

441 
	}
}

450 
	$__dbc_wd
(
dbc_
, 
ro
, 
dd
, 
db
)

451 
DBC
 *
dbc_
;

452 
db_pgno_t
 
ro
;

453 
DBC
 *
dd
;

454 
DBC
 **
db
;

456 
DB
 *
dbp
;

457 
DBC
 *
d
;

458 
DBTYPE
 
dbty
;

459 
t
;

461 
dbp
 = 
dbc_
->dbp;

462 
dbty
 = (
dbp
->
dup_com
 =
NULL
? 
DB_RECNO
 : 
DB_BTREE
;

471 *
db
 = 
dd
;

473 i((
t
 = 
	`__db_curs_t
(
dbp
,

474 
dbc_
->
txn
, 
dbty
, 
ro
, 1, dbc_->
lock
, &
d
)) != 0)

475  (
t
);

477 
d
->
iܙy
 = 
dbc_
->priority;

478 *
db
 = 
d
;

492 i(
dd
 !
NULL
 && (
t
 = 
	`__dbc_o
(oldopd)) != 0)

493  (
t
);

496 
	}
}

505 
	$__dbc_g
(
dbc_g
, 
key
, 
da
, 
ags
)

506 
DBC
 *
dbc_g
;

507 
DBT
 *
key
, *
da
;

508 
u_t32_t
 
ags
;

510 
DB
 *
dbp
;

511 
DBC
 *
dbc
, *
dbc_n
, *
d
;

512 
DBC_INTERNAL
 *

, *
_n
;

513 
DB_ENV
 *
dbv
;

514 
DB_MPOOLFILE
 *
mpf
;

515 
db_pgno_t
 
pgno
;

516 
db_dx_t
 
dx_off
;

517 
u_t32_t
 
mui
, 
ig_un
, 
tmp_ags
, 
tmp_ad_uncommd
, 
tmp_rmw
;

518 
u_t8_t
 
ty
;

519 
key_sml
, 
t
, 
t_t
;

521 
	`COMPQUIET
(
ig_un
, 0);

523 
key_sml
 = 0;

534 
dbp
 = 
dbc_g
->dbp;

535 
dbv
 = 
dbp
->dbenv;

536 
mpf
 = 
dbp
->mpf;

537 
dbc_n
 = 
NULL
;

538 
d
 = 
NULL
;

541 
tmp_rmw
 = 
	`LF_ISSET
(
DB_RMW
);

542 
	`LF_CLR
(
DB_RMW
);

544 
tmp_ad_uncommd
 =

545 
	`LF_ISSET
(
DB_READ_UNCOMMITTED
) &&

546 !
	`F_ISSET
(
dbc_g
, 
DBC_READ_UNCOMMITTED
);

547 
	`LF_CLR
(
DB_READ_UNCOMMITTED
);

549 
mui
 = 
	`LF_ISSET
(
DB_MULTIPLE
|
DB_MULTIPLE_KEY
);

550 
	`LF_CLR
(
DB_MULTIPLE
|
DB_MULTIPLE_KEY
);

556 i(
ags
 =
DB_GET_RECNO
) {

557 i(
tmp_rmw
)

558 
	`F_SET
(
dbc_g
, 
DBC_RMW
);

559 i(
tmp_ad_uncommd
)

560 
	`F_SET
(
dbc_g
, 
DBC_READ_UNCOMMITTED
);

561 
t
 = 
	`__bamc_rg
(
dbc_g
, 
da
);

562 i(
tmp_rmw
)

563 
	`F_CLR
(
dbc_g
, 
DBC_RMW
);

564 i(
tmp_ad_uncommd
)

565 
	`F_CLR
(
dbc_g
, 
DBC_READ_UNCOMMITTED
);

566  (
t
);

569 i(
ags
 =
DB_CONSUME
 || fg=
DB_CONSUME_WAIT
)

570 
	`CDB_LOCKING_INIT
(
dbv
, 
dbc_g
);

577 i((
ags
 =
DB_GET_BOTH
 ||

578 
ags
 =
DB_GET_BOTH_RANGE
 || fg=
DB_SET
) &&

579 ((
BTREE
 *)
dbp
->
bt_
)->
bt_com
 =
__bam_defcmp


580 #ifde
HAVE_HASH


581 && ((
HASH
 *)
dbp
->
h_
)->
h_com
 =
NULL


584 
	`F_SET
(
key
, 
DB_DBT_ISSET
);

586 i(
ags
 =
DB_GET_BOTH
 && 
dbp
->
dup_com
 =
NULL
)

587 
	`F_SET
(
da
, 
DB_DBT_ISSET
);

600 

 = 
dbc_g
->

;

601 i(

->
d
 !
NULL
 &&

602 (
ags
 =
DB_CURRENT
 || fg=
DB_GET_BOTHC
 ||

603 
ags
 =
DB_NEXT
 || fg=
DB_NEXT_DUP
 ||

604 
ags
 =
DB_PREV
 || fg=
DB_PREV_DUP
)) {

605 i(
tmp_rmw
 && (
t
 = 
dbc_g
->
	`am_wrock
(dbc_arg)) != 0)

606 
r
;

607 i(
	`F_ISSET
(
dbc_g
, 
DBC_TRANSIENT
))

608 
d
 = 

->opd;

609 i((
t
 = 
	`__dbc_idup
(

->
d
, &d, 
DB_POSITION
)) != 0)

610 
r
;

612 
t
 = 
d
->
	`am_g
(d, 
key
, 
da
, 
ags
, 
NULL
)) {

614 
de
;

615 
DB_NOTFOUND
:

621 i(
ags
 =
DB_NEXT
 || fg=
DB_PREV
) {

622 i((
t
 = 
	`__dbc_o
(
d
)) != 0)

623 
r
;

624 
d
 = 
NULL
;

625 i(
	`F_ISSET
(
dbc_g
, 
DBC_TRANSIENT
))

626 

->
d
 = 
NULL
;

629 
r
;

631 
r
;

633 } i(

->
d
 !
NULL
 && 
	`F_ISSET
(
dbc_g
, 
DBC_TRANSIENT
)) {

634 i((
t
 = 
	`__dbc_o
(

->
d
)) != 0)

635 
r
;

636 

->
d
 = 
NULL
;

643 
ags
) {

644 
DB_CURRENT
:

645 
DB_GET_BOTHC
:

646 
DB_NEXT
:

647 
DB_NEXT_DUP
:

648 
DB_NEXT_NODUP
:

649 
DB_PREV
:

650 
DB_PREV_DUP
:

651 
DB_PREV_NODUP
:

652 
tmp_ags
 = 
DB_POSITION
;

655 
tmp_ags
 = 0;

659 i(
tmp_ad_uncommd
)

660 
	`F_SET
(
dbc_g
, 
DBC_READ_UNCOMMITTED
);

666 i(
	`F_ISSET
(
dbc_g
, 
DBC_TRANSIENT
))

667 
dbc_n
 = 
dbc_g
;

669 
t
 = 
	`__dbc_idup
(
dbc_g
, &
dbc_n
, 
tmp_ags
);

670 i(
tmp_ad_uncommd
)

671 
	`F_CLR
(
dbc_g
, 
DBC_READ_UNCOMMITTED
);

673 i(
t
 != 0)

674 
r
;

675 
	`COPY_RET_MEM
(
dbc_g
, 
dbc_n
);

678 i(
tmp_rmw
)

679 
	`F_SET
(
dbc_n
, 
DBC_RMW
);

681 
mui
) {

682 
DB_MULTIPLE
:

683 
	`F_SET
(
dbc_n
, 
DBC_MULTIPLE
);

685 
DB_MULTIPLE_KEY
:

686 
	`F_SET
(
dbc_n
, 
DBC_MULTIPLE_KEY
);

688 
DB_MULTIPLE
 | 
DB_MULTIPLE_KEY
:

689 
	`F_SET
(
dbc_n
, 
DBC_MULTIPLE
|
DBC_MULTIPLE_KEY
);

696 
pgno
 = 
PGNO_INVALID
;

697 
t
 = 
dbc_n
->
	`am_g
(dbc_n, 
key
, 
da
, 
ags
, &
pgno
);

698 i(
tmp_rmw
)

699 
	`F_CLR
(
dbc_n
, 
DBC_RMW
);

700 i(
tmp_ad_uncommd
)

701 
	`F_CLR
(
dbc_g
, 
DBC_READ_UNCOMMITTED
);

702 
	`F_CLR
(
dbc_n
, 
DBC_MULTIPLE
|
DBC_MULTIPLE_KEY
);

703 i(
t
 != 0)

704 
r
;

706 
_n
 = 
dbc_n
->

;

712 i(
pgno
 !
PGNO_INVALID
) {

713 i((
t
 = 
	`__dbc_wd
(
dbc_g
,

714 
pgno
, 
_n
->
d
, &cp_n->opd)) != 0)

715 
r
;

717 
ags
) {

718 
DB_FIRST
:

719 
DB_NEXT
:

720 
DB_NEXT_NODUP
:

721 
DB_SET
:

722 
DB_SET_RECNO
:

723 
DB_SET_RANGE
:

724 
tmp_ags
 = 
DB_FIRST
;

726 
DB_LAST
:

727 
DB_PREV
:

728 
DB_PREV_NODUP
:

729 
tmp_ags
 = 
DB_LAST
;

731 
DB_GET_BOTH
:

732 
DB_GET_BOTHC
:

733 
DB_GET_BOTH_RANGE
:

734 
tmp_ags
 = 
ags
;

737 
t
 = 
	`__db_unknown_ag
(
dbv
, "__dbc_g", 
ags
);

738 
r
;

740 i((
t
 = 
_n
->
d
->
	`am_g
(

741 
_n
->
d
, 
key
, 
da
, 
tmp_ags
, 
NULL
)) != 0)

742 
r
;

745 
de
:

759 
_n
 = 
dbc_n
 =
NULL
 ? 
dbc_g
->

 : dbc_n->internal;

760 i(!
	`F_ISSET
(
key
, 
DB_DBT_ISSET
)) {

761 i(
_n
->
ge
 =
NULL
 && (
t
 = 
	`__memp_fg
(
mpf
, &_n->
pgno
,

762 
dbc_g
->
txn
, 0, &
_n
->
ge
)) != 0)

763 
r
;

765 i((
t
 = 
	`__db_t
(
dbp
, 
dbc_g
->
txn
,

766 
_n
->
ge
, cp_n->
dx
, 
key
,

767 &
dbc_g
->
rkey
->
da
, &dbc_g->rkey->
un
)) != 0) {

775 i(
t
 =
DB_BUFFER_SMALL
 &&

776 
	`F_ISSET
(
da
, 
DB_DBT_USERMEM
)) {

777 
key_sml
 = 1;

778 
ig_un
 = 
da
->
un
;

779 
da
->
un
 = 0;

781 
r
;

784 i(
mui
 != 0) {

789 i(
dbc_n
 =
NULL
) {

796 i((!(
mui
 & 
DB_MULTIPLE_KEY
) &&

797 
dbc_g
->

->
d
 =
NULL
) ||

798 
	`F_ISSET
(
dbc_g
, 
DBC_TRANSIENT
))

799 
dbc_n
 = 
dbc_g
;

801 i((
t
 = 
	`__dbc_idup
(
dbc_g
,

802 &
dbc_n
, 
DB_POSITION
)) != 0)

803 
r
;

804 i((
t
 = 
dbc_n
->
	`am_g
(dbc_n,

805 
key
, 
da
, 
DB_CURRENT
, &
pgno
)) != 0)

806 
r
;

808 
_n
 = 
dbc_n
->

;

816 i(
d
 !
NULL
) {

817 
	`DB_ASSERT
(
dbv
, 
_n
->
d
 =
NULL
);

818 
_n
->
d
 = opd;

819 
d
 = 
NULL
;

830 
da
->
size
 = da->
un
;

831 
t
 = 
dbc_n
->
	`am_bulk
(dbc_n, 
da
, 
ags
 | 
mui
);

832 } i(!
	`F_ISSET
(
da
, 
DB_DBT_ISSET
)) {

833 
dbc
 = 
d
 !
NULL
 ? opd : 
_n
->d !NULL ? cp_n->d : 
dbc_n
;

834 

 = 
dbc
->

;

835 i(

->
ge
 =
NULL
 &&

836 (
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
dbc
->
txn
,

837 0, &

->
ge
)) != 0)

838 
r
;

840 
ty
 = 
	`TYPE
(

->
ge
);

841 
dx_off
 = ((
ty
 =
P_LBTREE
 ||

842 
ty
 =
P_HASH
 ||y =
P_HASH_UNSORTED
? 
O_INDX
 : 0);

843 
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
, 

->
ge
, cp->
dx
 + 
dx_off
,

844 
da
, &
dbc_g
->
rda
->da, &dbc_g->rda->
un
);

847 
r
:

848 
	`F_CLR
(
key
, 
DB_DBT_ISSET
);

849 
	`F_CLR
(
da
, 
DB_DBT_ISSET
);

852 i(
d
 !
NULL
) {

860 i(
	`F_ISSET
(
dbc_g
->
dbp
, 
DB_AM_READ_UNCOMMITTED
) &&

861 
	`F_ISSET
((
BTREE_CURSOR
 *)

862 
dbc_g
->

->
d
->, 
C_DELETED
))

863 i((
t_t
 =

864 
dbc_g
->
	`am_wrock
(dbc_g)!0 && 
t
 == 0)

865 
t
 = 
t_t
;

866 i((
t_t
 = 
	`__dbc_nup
(

867 
dbc_g
->

->
d
, opd, 
t
)) != 0 &&et == 0)

868 
t
 = 
t_t
;

872 i(
key_sml
) {

873 
da
->
un
 = 
ig_un
;

874 i(
t
 == 0)

875 
t
 = 
DB_BUFFER_SMALL
;

878 i((
t_t
 = 
	`__dbc_nup
(
dbc_g
, 
dbc_n
, 
t
)) != 0 &&

879 (
t
 =0 || =
DB_BUFFER_SMALL
))

880 
t
 = 
t_t
;

882 i(
ags
 =
DB_CONSUME
 || fg=
DB_CONSUME_WAIT
)

883 
	`CDB_LOCKING_DONE
(
dbv
, 
dbc_g
);

884  (
t
);

885 
	}
}

894 
	$__dbc_put
(
dbc_g
, 
key
, 
da
, 
ags
)

895 
DBC
 *
dbc_g
;

896 
DBT
 *
key
, *
da
;

897 
u_t32_t
 
ags
;

899 
DB_ENV
 *
dbv
;

900 
DB
 *
dbp
, *
sdbp
;

901 
DBC
 *
dbc_n
, *
dd
, *
d
, *
sdbc
, *
pdbc
;

902 
DBT
 
dda
, 
dpkey
, 
wda
, 
pkey
, 
mkey
, 
mpskey
;

903 
DBT
 *
l_skeys
, *
skeyp
, *
tskeyp
;

904 
db_pgno_t
 
pgno
;

905 
cmp
, 
have_dc
, 
itl
, 
nod
, 
_d
, 
t
, 
s_cou
, 
t_t
;

906 
u_t32_t
 
_n
, 
nskey
, 
rmw
, 
size
, 
tmp_ags
;

917 
dbp
 = 
dbc_g
->dbp;

918 
dbv
 = 
dbp
->dbenv;

919 
sdbp
 = 
NULL
;

920 
pdbc
 = 
dbc_n
 = 
NULL
;

921 
l_skeys
 = 
NULL
;

922 
	`memt
(&
wda
, 0, (
DBT
));

923 
t
 = 
s_cou
 = 0;

930 
	`memt
(&
dda
, 0, (
DBT
));

931 
	`F_SET
(&
dda
, 
DB_DBT_MALLOC
);

939 i(
ags
 =
DB_UPDATE_SECONDARY
)

940 
ags
 = 
DB_KEYLAST
;

942 
	`CDB_LOCKING_INIT
(
dbv
, 
dbc_g
);

949 i(
	`LIST_FIRST
(&
dbp
->
s_cds
=
NULL
)

950 
sk_s_upde
;

1009 
	`memt
(&
pkey
, 0, (
DBT
));

1010 
s_cou
 = 
	`__db_s_cou
(
dbp
);

1011 i((
t
 = 
	`__os_oc
(

1012 
dbv
, (
u_t
)
s_cou
, (
DBT
), &
l_skeys
)) != 0)

1013 
r
;

1014 
have_dc
 = 
nod
 = 0;

1022 
	`DB_ASSERT
(
dbv
, 
ags
 =
DB_CURRENT
 || fg=
DB_KEYFIRST
 ||

1023 
ags
 =
DB_KEYLAST
 || fg=
DB_NOOVERWRITE
);

1029 
rmw
 = 
	`STD_LOCKING
(
dbc_g
? 
DB_RMW
 : 0;

1031 i(
ags
 =
DB_CURRENT
) {

1044 
t
 = 
	`__dbc_g
(
dbc_g
, &
pkey
, &
dda
, 
rmw
 | 
DB_CURRENT
);

1045 i(
t
 =
DB_KEYEMPTY
)

1046 
t
 = 
DB_NOTFOUND
;

1047 i(
t
 != 0)

1048 
r
;

1050 
have_dc
 = 1;

1053 
pkey
.
da
 = 
key
->data;

1054 
pkey
.
size
 = 
key
->size;

1060 i(
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
)) {

1061 i(!
have_dc
 && !
nod
) {

1067 i((
t
 = 
	`__dbc_idup
(
dbc_g
, &
pdbc
, 0)) != 0)

1068 
r
;

1071 
	`DB_ASSERT
(
dbv
, 
ags
 !
DB_CURRENT
);

1073 
t
 = 
	`__dbc_g
(
pdbc
, &
pkey
, &
dda
, 
rmw
 | 
DB_SET
);

1074 i(
t
 =
DB_KEYEMPTY
 || =
DB_NOTFOUND
) {

1075 
nod
 = 1;

1076 
t
 = 0;

1078 i((
t_t
 = 
	`__dbc_o
(
pdbc
)) != 0)

1079 
t
 = 
t_t
;

1080 i(
t
 != 0)

1081 
r
;

1083 
have_dc
 = 1;

1092 i((
t
 =

1093 
	`__db_budl
(
dbp
, &
dda
, 
da
, &
wda
)) != 0)

1094 
r
;

1095 
itl
 = 1;

1097 
itl
 = 0;

1105 i((
dbp
->
ty
 =
DB_RECNO
 && 
	`F_ISSET
(dbp, 
DB_AM_FIXEDLEN
)) ||

1106 (
dbp
->
ty
 =
DB_QUEUE
)) {

1107 i(
dbp
->
ty
 =
DB_QUEUE
) {

1108 
_n
 = ((
QUEUE
 *)
dbp
->
q_
)->re_len;

1109 
_d
 = ((
QUEUE
 *)
dbp
->
q_
)->re_pad;

1111 
_n
 = ((
BTREE
 *)
dbp
->
bt_
)->re_len;

1112 
_d
 = ((
BTREE
 *)
dbp
->
bt_
)->re_pad;

1115 
size
 = 
itl
 ? 
wda
.siz: 
da
->size;

1116 i(
size
 > 
_n
) {

1117 
t
 = 
	`__db_c_toobig
(
dbv
, 
size
, 
_n
);

1118 
r
;

1119 } i(
size
 < 
_n
) {

1131 i((
t
 =

1132 
	`__os_loc
(
dbv
, 
_n
, &
wda
.
da
)) != 0)

1133 
r
;

1134 i(!
itl
)

1135 
	`memy
(
wda
.
da
, da->da, 
size
);

1136 
	`memt
((
u_t8_t
 *)
wda
.
da
 + 
size
, 
_d
,

1137 
_n
 - 
size
);

1138 
wda
.
size
 = 
_n
;

1139 
itl
 = 1;

1149 
t
 = 
	`__db_s_f
(
dbp
, &
sdbp
), 
skeyp
 = 
l_skeys
;

1150 
sdbp
 !
NULL
 && 
t
 == 0;

1151 
t
 = 
	`__db_s_xt
(&
sdbp
, 
dbc_g
->
txn
), ++
skeyp
) {

1152 
	`DB_ASSERT
(
dbv
, 
skeyp
 - 
l_skeys
 < 
s_cou
);

1158 i(
have_dc
 && !
nod
 &&

1159 
	`FLD_ISSET
(
sdbp
->
s_assoc_ags
, 
DB_ASSOC_IMMUTABLE_KEY
))

1166 i((
t
 = 
sdbp
->
	`s_back
(sdbp,

1167 &
pkey
, 
itl
 ? &
wda
 : 
da
, 
skeyp
)) != 0) {

1168 i(
t
 =
DB_DONOTINDEX
)

1176 
r
;

1184 i(
	`F_ISSET
(
skeyp
, 
DB_DBT_MULTIPLE
)) {

1185 #ifde
DIAGNOSTIC


1186 
	`__db_check_skeyt
(
sdbp
, 
skeyp
);

1188 
tskeyp
 = (
DBT
 *)
skeyp
->
da
, 
nskey
 = skeyp->
size
;

1189 
nskey
 > 0;skey--, 
tskeyp
++)

1190 
	`F_SET
(
tskeyp
, 
DB_DBT_ISSET
);

1192 
tskeyp
 = (
DBT
 *)
skeyp
->
da
;

1193 
nskey
 = 
skeyp
->
size
;

1195 
	`F_SET
(
skeyp
, 
DB_DBT_ISSET
);

1196 
tskeyp
 = 
skeyp
;

1197 
nskey
 = 1;

1205 i(
have_dc
) {

1206 i((
t
 = 
	`__dbc_d_dskey
(
sdbp
, 
dbc_g
,

1207 
skeyp
, &
pkey
, &
dda
)=
DB_KEYEXIST
)

1209 i(
t
 != 0)

1210 
r
;

1221 i((
t
 = 
	`__db_curs_t
(
sdbp
, 
dbc_g
->
txn
, sdbp->
ty
,

1222 
PGNO_INVALID
, 0, 
dbc_g
->
lock
, &
sdbc
)) != 0)

1223 
r
;

1234 i(
	`CDB_LOCKING
(
dbv
)) {

1235 
	`DB_ASSERT
(
dbv
, 
sdbc
->
mylock
.
off
 =
LOCK_INVALID
);

1236 
	`F_SET
(
sdbc
, 
DBC_WRITER
);

1245 
	`SWAP_IF_NEEDED
(
sdbp
, &
pkey
);

1247 ; 
nskey
 > 0 && 
t
 =0;skey--, 
tskeyp
++) {

1249 i(!
	`F_ISSET
(
tskeyp
, 
DB_DBT_ISSET
))

1284 i(!
	`F_ISSET
(
sdbp
, 
DB_AM_DUP
)) {

1286 
	`memt
(&
dpkey
, 0, (
DBT
));

1287 
	`F_SET
(&
dpkey
, 
DB_DBT_MALLOC
);

1288 
t
 = 
	`__dbc_g
(
sdbc
,

1289 
tskeyp
, &
dpkey
, 
rmw
 | 
DB_SET
);

1290 i(
t
 == 0) {

1291 
cmp
 = 
	`__bam_defcmp
(
sdbp
,

1292 &
dpkey
, &
pkey
);

1293 
	`__os_u
(
dbv
, 
dpkey
.
da
);

1294 i(
cmp
 != 0) {

1295 
	`__db_rx
(
dbv
, "%s%s",

1298 
t
 = 
EINVAL
;

1301 i(
t
 !
DB_NOTFOUND
 && !
DB_KEYEMPTY
)

1303 } i(!
	`F_ISSET
(
sdbp
, 
DB_AM_DUPSORT
)) {

1305 
	`DB_INIT_DBT
(
mpskey
,

1306 
tskeyp
->
da
,skeyp->
size
);

1307 
	`DB_INIT_DBT
(
mkey
,

1308 
pkey
.
da
,key.
size
);

1309 
t
 = 
	`__dbc_g
(
sdbc
, &
mpskey
, &
mkey
,

1310 
rmw
 | 
DB_GET_BOTH
);

1311 i(
t
 !
DB_NOTFOUND
 && !
DB_KEYEMPTY
)

1315 
t
 = 
	`__dbc_put
(
sdbc
, 
tskeyp
, &
pkey
,

1316 
DB_UPDATE_SECONDARY
);

1323 i(
t
 =
DB_KEYEXIST
)

1324 
t
 = 0;

1328 
	`SWAP_IF_NEEDED
(
sdbp
, &
pkey
);

1330 i((
t_t
 = 
	`__dbc_o
(
sdbc
)!0 && 
t
 == 0)

1331 
t
 = 
t_t
;

1333 i(
t
 != 0)

1334 
r
;

1341 
	`F_SET
(
skeyp
, 
DB_DBT_ISSET
);

1343 i(
t
 != 0)

1344 
r
;

1350 i(
have_dc
)

1351 
sk_s_upde
;

1358 i((
t
 = 
	`__dbc_idup
(
dbc_g
, &
pdbc
, 0)) != 0)

1359 
r
;

1360 
	`DB_ASSERT
(
dbv
, 
ags
 !
DB_CURRENT
);

1361 
pkey
.
da
 = 
key
->data;

1362 
pkey
.
size
 = 
key
->size;

1363 
t
 = 
	`__dbc_g
(
pdbc
, &
pkey
, &
dda
, 
rmw
 | 
DB_SET
);

1364 i(
t
 =
DB_KEYEMPTY
 || =
DB_NOTFOUND
) {

1365 
nod
 = 1;

1366 
t
 = 0;

1368 i((
t_t
 = 
	`__dbc_o
(
pdbc
)!0 && 
t
 == 0)

1369 
t
 = 
t_t
;

1370 i(
t
 != 0)

1371 
r
;

1377 i(
nod
)

1378 
sk_s_upde
;

1380 
t
 = 
	`__db_s_f
(
dbp
, &
sdbp
), 
skeyp
 = 
l_skeys
;

1381 
sdbp
 !
NULL
 && 
t
 == 0;

1382 
t
 = 
	`__db_s_xt
(&
sdbp
, 
dbc_g
->
txn
), 
skeyp
++) {

1383 
	`DB_ASSERT
(
dbv
, 
skeyp
 - 
l_skeys
 < 
s_cou
);

1389 i(
	`FLD_ISSET
(
sdbp
->
s_assoc_ags
, 
DB_ASSOC_IMMUTABLE_KEY
))

1392 
t
 = 
	`__dbc_d_dskey
(
sdbp
, 
dbc_g
, 
skeyp
, &
pkey
, &
dda
);

1393 i(
t
 !0 && !
DB_KEYEXIST
)

1394 
r
;

1396 i(
t
 != 0)

1397 
r
;

1401 
sk_s_upde
:

1412 i(
dbc_g
->

->
d
 !
NULL
 &&

1413 (
ags
 =
DB_AFTER
 || fg=
DB_BEFORE
 || fg=
DB_CURRENT
)) {

1421 i(
dbc_g
->
dbty
 =
DB_HASH
 && 
	`F_ISSET
(

1422 ((
BTREE_CURSOR
 *)(
dbc_g
->

->
d
->internal)),

1423 
C_DELETED
)) {

1424 
t
 = 
DB_NOTFOUND
;

1425 
r
;

1428 i((
t
 = 
dbc_g
->
	`am_wrock
(dbc_arg)) != 0 ||

1429 (
t
 = 
	`__dbc_dup
(
dbc_g
, &
dbc_n
, 
DB_POSITION
)) != 0)

1430 
r
;

1431 
d
 = 
dbc_n
->

->opd;

1432 i((
t
 = 
d
->
	`am_put
(

1433 
d
, 
key
, 
da
, 
ags
, 
NULL
)) != 0)

1434 
r
;

1435 
de
;

1442 
tmp_ags
 = 
ags
 =
DB_AFTER
 ||

1443 
ags
 =
DB_BEFORE
 || fg=
DB_CURRENT
 ? 
DB_POSITION
 : 0;

1449 i(
	`F_ISSET
(
dbc_g
, 
DBC_TRANSIENT
))

1450 
dbc_n
 = 
dbc_g
;

1451 i((
t
 = 
	`__dbc_idup
(
dbc_g
, &
dbc_n
, 
tmp_ags
)) != 0)

1452 
r
;

1454 
pgno
 = 
PGNO_INVALID
;

1455 i((
t
 = 
dbc_n
->
	`am_put
(dbc_n, 
key
, 
da
, 
ags
, &
pgno
)) != 0)

1456 
r
;

1462 i(
pgno
 !
PGNO_INVALID
) {

1463 
dd
 = 
dbc_n
->

->
d
;

1464 i((
t
 = 
	`__dbc_wd
(
dbc_g
, 
pgno
, 
dd
, &
d
)) != 0) {

1465 
dbc_n
->

->
d
 = opd;

1466 
r
;

1469 
dbc_n
->

->
d
 = opd;

1471 i(
ags
 =
DB_NOOVERWRITE
)

1472 
ags
 = 
DB_KEYLAST
;

1473 i((
t
 = 
d
->
	`am_put
(

1474 
d
, 
key
, 
da
, 
ags
, 
NULL
)) != 0)

1475 
r
;

1478 
de
:

1479 
r
:

1480 i((
t_t
 = 
	`__dbc_nup
(
dbc_g
, 
dbc_n
, 
t
)) != 0 &&et == 0)

1481 
t
 = 
t_t
;

1484 i(
wda
.
da
 !
NULL
)

1485 
	`__os_
(
dbv
, 
wda
.
da
);

1486 i(
dda
.
da
 !
NULL
)

1487 
	`__os_u
(
dbv
, 
dda
.
da
);

1489 
	`CDB_LOCKING_DONE
(
dbv
, 
dbc_g
);

1491 i(
sdbp
 !
NULL
 &&

1492 (
t_t
 = 
	`__db_s_de
(
sdbp
, 
dbc_g
->
txn
)!0 && 
t
 == 0)

1493 
t
 = 
t_t
;

1495 
skeyp
 = 
l_skeys
; skey-_skey< 
s_cou
; skeyp++) {

1496 i(
	`F_ISSET
(
skeyp
, 
DB_DBT_MULTIPLE
)) {

1497 
nskey
 = 
skeyp
->
size
, 
tskeyp
 = (
DBT
 *)skeyp->
da
;

1498 
nskey
 > 0;

1499 
nskey
--, 
tskeyp
++)

1500 
	`FREE_IF_NEEDED
(
dbv
, 
tskeyp
);

1502 
	`FREE_IF_NEEDED
(
dbv
, 
skeyp
);

1504 i(
l_skeys
 !
NULL
)

1505 
	`__os_
(
dbv
, 
l_skeys
);

1507  (
t
);

1508 
	}
}

1516 
	$__dbc_d_dskey
(
sdbp
, 
dbc_g
, 
skey
, 
pkey
, 
dda
)

1517 
DB
 *
sdbp
;

1518 
DBC
 *
dbc_g
;

1519 
DBT
 *
skey
, *
pkey
, *
dda
;

1521 
DB_ENV
 *
dbv
;

1522 
DB
 *
dbp
;

1523 
DBC
 *
sdbc
;

1524 
DBT
 *
tdskeyp
, *
tskeyp
;

1525 
DBT
 
dskey
, 
mkey
, 
mpskey
;

1526 
t
, 
t_t
;

1527 
u_t32_t
 
i
, 
ndskey
, 
nme
, 
nskey
, 
rmw
;

1529 
sdbc
 = 
NULL
;

1530 
dbp
 = 
sdbp
->
s_imy
;

1531 
dbv
 = 
dbp
->dbenv;

1532 
nme
 = 0;

1533 
rmw
 = 
	`STD_LOCKING
(
dbc_g
? 
DB_RMW
 : 0;

1538 
	`memt
(&
dskey
, 0, (
DBT
));

1539 i((
t
 = 
sdbp
->
	`s_back
(sdbp, 
pkey
, 
dda
, &
dskey
)) != 0) {

1540 i(
t
 =
DB_DONOTINDEX
)

1542 
t
 = 0;

1543  (
t
);

1546 i(
	`F_ISSET
(&
dskey
, 
DB_DBT_MULTIPLE
)) {

1547 #ifde
DIAGNOSTIC


1548 
	`__db_check_skeyt
(
sdbp
, &
dskey
);

1550 
tdskeyp
 = (
DBT
 *)
dskey
.
da
;

1551 
ndskey
 = 
dskey
.
size
;

1553 
tdskeyp
 = &
dskey
;

1554 
ndskey
 = 1;

1557 i(
	`F_ISSET
(
skey
, 
DB_DBT_MULTIPLE
)) {

1558 
nskey
 = 
skey
->
size
;

1559 
skey
 = (
DBT
 *)skey->
da
;

1561 
nskey
 = 
	`F_ISSET
(
skey
, 
DB_DBT_ISSET
) ? 1 : 0;

1563 ; 
ndskey
 > 0 && 
t
 =0;dskey--, 
tdskeyp
++) {

1569 
i
 = 0, 
tskeyp
 = 
skey
; i < 
nskey
; i++,skeyp++)

1570 i(((
BTREE
 *)
sdbp
->
bt_
)->
	`bt_com
(sdbp,

1571 
tdskeyp
, 
tskeyp
) == 0) {

1572 
nme
++;

1573 
	`F_CLR
(
tskeyp
, 
DB_DBT_ISSET
);

1577 i(
i
 < 
nskey
) {

1578 
	`FREE_IF_NEEDED
(
dbv
, 
tdskeyp
);

1582 i(
sdbc
 =
NULL
) {

1583 i((
t
 = 
	`__db_curs_t
(

1584 
sdbp
, 
dbc_g
->
txn
, sdbp->
ty
,

1585 
PGNO_INVALID
, 0, 
dbc_g
->
lock
, &
sdbc
)) != 0)

1586 
r
;

1587 i(
	`CDB_LOCKING
(
dbv
)) {

1588 
	`DB_ASSERT
(
dbv
,

1589 
sdbc
->
mylock
.
off
 =
LOCK_INVALID
);

1590 
	`F_SET
(
sdbc
, 
DBC_WRITER
);

1598 
	`SWAP_IF_NEEDED
(
sdbp
, 
pkey
);

1599 
	`DB_INIT_DBT
(
mkey
, 
pkey
->
da
,key->
size
);

1600 
	`DB_INIT_DBT
(
mpskey
, 
tdskeyp
->
da
,dskeyp->
size
);

1601 i((
t
 = 
	`__dbc_g
(
sdbc
,

1602 &
mpskey
, &
mkey
, 
rmw
 | 
DB_GET_BOTH
)) == 0)

1603 
t
 = 
	`__dbc_d
(
sdbc
, 
DB_UPDATE_SECONDARY
);

1604 i(
t
 =
DB_NOTFOUND
)

1605 
t
 = 
	`__db_cdy_cru
(
dbp
);

1606 
	`SWAP_IF_NEEDED
(
sdbp
, 
pkey
);

1607 
	`FREE_IF_NEEDED
(
dbv
, 
tdskeyp
);

1610 
r
: ; 
ndskey
 > 0;dskey--, 
tdskeyp
++)

1611 
	`FREE_IF_NEEDED
(
dbv
, 
tdskeyp
);

1612 
	`FREE_IF_NEEDED
(
dbv
, &
dskey
);

1613 i(
sdbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(sdbc)!0 && 
t
 == 0)

1614 
t
 = 
t_t
;

1615 i(
t
 =0 && 
nme
 =
nskey
)

1616  (
DB_KEYEXIST
);

1617  (
t
);

1618 
	}
}

1626 
	$__db_du
(
dbp
, 
ags
)

1627 
DB
 *
dbp
;

1628 
u_t32_t
 
ags
;

1643 i(
ags
 !
DB_NODUPDATA
 && !
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
))

1644 
	`__db_rx
(
dbp
->
dbv
,

1646  (
DB_KEYEXIST
);

1647 
	}
}

1654 
	$__dbc_nup
(
dbc
, 
dbc_n
, 
ed
)

1655 
DBC
 *
dbc
, *
dbc_n
;

1656 
ed
;

1658 
DB
 *
dbp
;

1659 
DBC
 *
d
;

1660 
DBC_INTERNAL
 *

;

1661 
DB_MPOOLFILE
 *
mpf
;

1662 
t
, 
t_t
;

1664 
dbp
 = 
dbc
->dbp;

1665 
mpf
 = 
dbp
->mpf;

1666 

 = 
dbc
->internal;

1667 
t
 = 0;

1670 i(

->
ge
 !
NULL
) {

1671 i((
t_t
 = 
	`__memp_ut
(
mpf
,

1672 

->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1673 
t
 = 
t_t
;

1674 

->
ge
 = 
NULL
;

1676 
d
 = 

->opd;

1677 i(
d
 !
NULL
 && opd->

->
ge
 != NULL) {

1678 i((
t_t
 = 
	`__memp_ut
(
mpf
,

1679 
d
->

->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1680 
t
 = 
t_t
;

1681 
d
->

->
ge
 = 
NULL
;

1698 i(
dbc_n
 =
NULL
 || 
dbc
 == dbc_n)

1699  (
t
);

1701 i(
dbc_n
->

->
ge
 !
NULL
) {

1702 i((
t_t
 = 
	`__memp_ut
(
mpf
,

1703 
dbc_n
->

->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1704 
t
 = 
t_t
;

1705 
dbc_n
->

->
ge
 = 
NULL
;

1707 
d
 = 
dbc_n
->

->opd;

1708 i(
d
 !
NULL
 && opd->

->
ge
 != NULL) {

1709 i((
t_t
 = 
	`__memp_ut
(
mpf
,

1710 
d
->

->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1711 
t
 = 
t_t
;

1712 
d
->

->
ge
 = 
NULL
;

1720 i(!
ed
 && 
t
 == 0) {

1721 
dbc
->

 = 
dbc_n
->internal;

1722 
dbc_n
->

 = internal;

1740 i((
t_t
 = 
	`__dbc_o
(
dbc_n
)!0 && 
t
 == 0)

1741 
t
 = 
t_t
;

1750 i(
	`F_ISSET
(
dbp
, 
DB_AM_READ_UNCOMMITTED
) &&

1751 
dbc
->

->
lock_mode
 =
DB_LOCK_WRITE
) {

1752 i((
t_t
 =

1753 
	`__TLPUT
(
dbc
, dbc->

->
lock
)!0 && 
t
 == 0)

1754 
t
 = 
t_t
;

1755 i(
t_t
 == 0)

1756 
dbc
->

->
lock_mode
 = 
DB_LOCK_WWRITE
;

1759  (
t
);

1760 
	}
}

1770 
	$__dbc_cdy_g_
(
dbc
, 
skey
, 
da
, 
ags
)

1771 
DBC
 *
dbc
;

1772 
DBT
 *
skey
, *
da
;

1773 
u_t32_t
 
ags
;

1775 
	`DB_ASSERT
(
dbc
->
dbp
->
dbv
, 
	`F_ISSET
(dbc->dbp, 
DB_AM_SECONDARY
));

1776  (
	`__dbc_pg_
(
dbc
, 
skey
, 
NULL
, 
da
, 
ags
));

1777 
	}
}

1786 
	$__dbc_pg
(
dbc
, 
skey
, 
pkey
, 
da
, 
ags
)

1787 
DBC
 *
dbc
;

1788 
DBT
 *
skey
, *
pkey
, *
da
;

1789 
u_t32_t
 
ags
;

1791 
DB
 *
pdbp
, *
sdbp
;

1792 
DBC
 *
dbc_n
, *
pdbc
;

1793 
DBT
 
nupkey
;

1794 
u_t32_t
 
ve_pkey_ags
, 
tmp_ags
, 
tmp_ad_uncommd
, 
tmp_rmw
;

1795 
pkeymloc
, 
t
, 
t_t
;

1797 
sdbp
 = 
dbc
->
dbp
;

1798 
pdbp
 = 
sdbp
->
s_imy
;

1799 
dbc_n
 = 
NULL
;

1800 
pkeymloc
 = 
t_t
 = 0;

1814 i(
pkey
 =
NULL
) {

1815 
	`memt
(&
nupkey
, 0, (
DBT
));

1816 
pkey
 = &
nupkey
;

1820 
tmp_rmw
 = 
	`LF_ISSET
(
DB_RMW
);

1821 
	`LF_CLR
(
DB_RMW
);

1823 
tmp_ad_uncommd
 =

1824 
	`LF_ISSET
(
DB_READ_UNCOMMITTED
) &&

1825 !
	`F_ISSET
(
dbc
, 
DBC_READ_UNCOMMITTED
);

1826 
	`LF_CLR
(
DB_READ_UNCOMMITTED
);

1833 i(
ags
 =
DB_GET_RECNO
) {

1834 i(
tmp_rmw
)

1835 
	`F_SET
(
dbc
, 
DBC_RMW
);

1836 i(
tmp_ad_uncommd
)

1837 
	`F_SET
(
dbc
, 
DBC_READ_UNCOMMITTED
);

1838 
t
 = 
	`__dbc_pg_o
(
dbc
, 
pkey
, 
da
, 
ags
);

1839 i(
tmp_rmw
)

1840 
	`F_CLR
(
dbc
, 
DBC_RMW
);

1841 i(
tmp_ad_uncommd
)

1842 
	`F_CLR
(
dbc
, 
DBC_READ_UNCOMMITTED
);

1843  (
t
);

1880 
ve_pkey_ags
 = 
pkey
->
ags
;

1881 
	`F_CLR
(
pkey
, 
DB_DBT_PARTIAL
);

1890 
ags
) {

1891 
DB_CURRENT
:

1892 
DB_GET_BOTHC
:

1893 
DB_NEXT
:

1894 
DB_NEXT_DUP
:

1895 
DB_NEXT_NODUP
:

1896 
DB_PREV
:

1897 
DB_PREV_DUP
:

1898 
DB_PREV_NODUP
:

1899 
tmp_ags
 = 
DB_POSITION
;

1902 
tmp_ags
 = 0;

1906 i((
t
 = 
	`__dbc_dup
(
dbc
, &
dbc_n
, 
tmp_ags
)) != 0)

1907  (
t
);

1909 
	`F_SET
(
dbc_n
, 
DBC_TRANSIENT
);

1911 i(
tmp_rmw
)

1912 
	`F_SET
(
dbc_n
, 
DBC_RMW
);

1913 i(
tmp_ad_uncommd
)

1914 
	`F_SET
(
dbc_n
, 
DBC_READ_UNCOMMITTED
);

1920 i(
ags
 =
DB_GET_BOTH
 || fg=
DB_GET_BOTHC
 ||

1921 
ags
 =
DB_GET_BOTH_RANGE
)

1922 
	`SWAP_IF_NEEDED
(
sdbp
, 
pkey
);

1924 
y
:

1925 
dbc_n
->
rda
 = 
dbc
->
rkey
;

1926 
dbc_n
->
rkey
 = 
dbc
->
rskey
;

1927 
t
 = 
	`__dbc_g
(
dbc_n
, 
skey
, 
pkey
, 
ags
);

1929 
pkey
->
ags
 = 
ve_pkey_ags
;

1936 i(
t
 =0 || 
ags
 =
DB_GET_BOTH
 || fg=
DB_GET_BOTHC
 ||

1937 
ags
 =
DB_GET_BOTH_RANGE
)

1938 
	`SWAP_IF_NEEDED
(
sdbp
, 
pkey
);

1940 i(
t
 != 0)

1941 
r
;

1965 i((
t
 = 
	`__db_curs_t
(
pdbp
,

1966 
dbc
->
txn
, 
pdbp
->
ty
, 
PGNO_INVALID
, 0, dbc->
lock
, &
pdbc
)) != 0)

1967 
r
;

1969 i(
tmp_ad_uncommd
 || 
	`F_ISSET
(
dbc
, 
DBC_READ_UNCOMMITTED
))

1970 
	`F_SET
(
pdbc
, 
DBC_READ_UNCOMMITTED
);

1971 i(
tmp_rmw
 || 
	`F_ISSET
(
dbc
, 
DBC_RMW
))

1972 
	`F_SET
(
pdbc
, 
DBC_RMW
);

1973 i(
	`F_ISSET
(
dbc
, 
DBC_READ_COMMITTED
))

1974 
	`F_SET
(
pdbc
, 
DBC_READ_COMMITTED
);

1992 i(
	`F_ISSET
(
pkey
, 
DB_DBT_MALLOC
)) {

1993 
	`F_CLR
(
pkey
, 
DB_DBT_MALLOC
);

1994 
	`F_SET
(
pkey
, 
DB_DBT_REALLOC
);

1995 
pkeymloc
 = 1;

1996 } i(
	`F_ISSET
(
pkey
, 
DB_DBT_USERCOPY
) &&

1997 (
t
 = 
	`__dbt_urcy
(
sdbp
->
dbv
, 
pkey
)) != 0)

1998 
r
;

2005 
	`F_SET
(
pdbc
, 
DBC_TRANSIENT
);

2006 
	`SET_RET_MEM
(
pdbc
, 
dbc
);

2007 
t
 = 
	`__dbc_g
(
pdbc
, 
pkey
, 
da
, 
DB_SET
);

2016 i((
t_t
 = 
	`__dbc_o
(
pdbc
)!0 && 
t
 == 0)

2017 
t
 = 
t_t
;

2019 i(
t
 =
DB_NOTFOUND
) {

2020 i(!
	`F_ISSET
(
pdbc
, 
DBC_READ_UNCOMMITTED
))

2021 
t
 = 
	`__db_cdy_cru
(
pdbp
);

2022 
ags
) {

2023 
DB_GET_BOTHC
:

2024 
DB_NEXT
:

2025 
DB_NEXT_DUP
:

2026 
DB_NEXT_NODUP
:

2027 
DB_PREV
:

2028 
DB_PREV_DUP
:

2029 
DB_PREV_NODUP
:

2030 
y
;

2036 
r
:

2037 i((
t_t
 = 
	`__dbc_nup
(
dbc
, 
dbc_n
, 
t
)) != 0 &&et == 0)

2038 
t
 = 
t_t
;

2039 i(
pkeymloc
) {

2046 
	`F_CLR
(
pkey
, 
DB_DBT_REALLOC
);

2047 
	`F_SET
(
pkey
, 
DB_DBT_MALLOC
);

2050  (
t
);

2051 
	}
}

2060 
	$__dbc_pg_o
(
sdbc
, 
pkey
, 
da
, 
ags
)

2061 
DBC
 *
sdbc
;

2062 
DBT
 *
pkey
, *
da
;

2063 
u_t32_t
 
ags
;

2065 
DB
 *
pdbp
, *
sdbp
;

2066 
DB_ENV
 *
dbv
;

2067 
DBC
 *
pdbc
;

2068 
DBT
 
disrdme
, 
imy_key
;

2069 
db_o_t
 
oob
;

2070 
u_t32_t
 
rmw
;

2071 
t
, 
t_t
;

2073 
sdbp
 = 
sdbc
->
dbp
;

2074 
pdbp
 = 
sdbp
->
s_imy
;

2075 
dbv
 = 
sdbp
->dbenv;

2076 
pdbc
 = 
NULL
;

2077 
t
 = 
t_t
 = 0;

2079 
rmw
 = 
	`LF_ISSET
(
DB_RMW
);

2081 
	`memt
(&
disrdme
, 0, (
DBT
));

2082 
	`F_SET
(&
disrdme
, 
DB_DBT_USERMEM
 | 
DB_DBT_PARTIAL
);

2084 
oob
 = 
RECNO_OOB
;

2092 i(
	`F_ISSET
(
pdbp
, 
DB_AM_RECNUM
)) {

2097 
	`memt
(&
imy_key
, 0, (
DBT
));

2098 
	`F_SET
(&
imy_key
, 
DB_DBT_MALLOC
);

2099 i((
t
 = 
	`__dbc_g
(
sdbc
,

2100 &
disrdme
, &
imy_key
, 
rmw
 | 
DB_CURRENT
)) != 0)

2101  (
t
);

2112 i((
t
 = 
	`__db_curs_t
(
pdbp
, 
sdbc
->
txn
,

2113 
pdbp
->
ty
, 
PGNO_INVALID
, 0, 
sdbc
->
lock
, &
pdbc
)) != 0)

2114 

;

2115 
	`SET_RET_MEM
(
pdbc
, 
sdbc
);

2116 i((
t
 = 
	`__dbc_g
(
pdbc
,

2117 &
imy_key
, &
disrdme
, 
rmw
 | 
DB_SET
)) != 0)

2118 

;

2120 
t
 = 
	`__dbc_g
(
pdbc
, &
disrdme
, 
da
, 
rmw
 | 
DB_GET_RECNO
);

2122 

: 
	`__os_u
(
sdbp
->
dbv
, 
imy_key
.
da
);

2123 i(
pdbc
 !
NULL
 &&

2124 (
t_t
 = 
	`__dbc_o
(
pdbc
)!0 && 
t
 == 0)

2125 
t
 = 
t_t
;

2126 i(
t
 != 0)

2127  (
t
);

2128 } i((
t
 = 
	`__db_tcy
(
dbv
, 
da
, &
oob
,

2129 (
oob
), &
sdbc
->
rkey
->
da
, &sdbc->rkey->
un
)) != 0)

2130  (
t
);

2138 i(
	`F_ISSET
(
sdbp
, 
DB_AM_RECNUM
))

2139  (
	`__dbc_g
(
sdbc
, &
disrdme
, 
pkey
, 
ags
));

2141  (
	`__db_tcy
(
dbv
, 
pkey
, &
oob
,

2142 (
oob
), &
sdbc
->
rda
->
da
, &sdbc->rda->
un
));

2143 
	}
}

2149 
	$__db_wock_r
(
dbv
)

2150 
DB_ENV
 *
dbv
;

2152 
	`__db_rx
(
dbv
, "Writettempted onead-only cursor");

2153  (
EPERM
);

2154 
	}
}

2167 
	$__dbc_d_cdy
(
dbc
)

2168 
DBC
 *
dbc
;

2170 
DB_ENV
 *
dbv
;

2171 
DB
 *
pdbp
;

2172 
DBC
 *
pdbc
;

2173 
DBT
 
skey
, 
pkey
;

2174 
t
, 
t_t
;

2175 
u_t32_t
 
rmw
;

2177 
pdbp
 = 
dbc
->
dbp
->
s_imy
;

2178 
dbv
 = 
pdbp
->dbenv;

2179 
rmw
 = 
	`STD_LOCKING
(
dbc
? 
DB_RMW
 : 0;

2186 
	`memt
(&
skey
, 0, (
DBT
));

2187 
	`memt
(&
pkey
, 0, (
DBT
));

2188 
	`F_SET
(&
skey
, 
DB_DBT_PARTIAL
 | 
DB_DBT_USERMEM
);

2189 i((
t
 = 
	`__dbc_g
(
dbc
, &
skey
, &
pkey
, 
DB_CURRENT
)) != 0)

2190  (
t
);

2192 
	`SWAP_IF_NEEDED
(
dbc
->
dbp
, &
pkey
);

2204 i((
t
 = 
	`__db_curs_t
(
pdbp
, 
dbc
->
txn
,

2205 
pdbp
->
ty
, 
PGNO_INVALID
, 0, 
dbc
->
lock
, &
pdbc
)) != 0)

2206  (
t
);

2214 i(
	`CDB_LOCKING
(
dbv
)) {

2215 
	`DB_ASSERT
(
dbv
, 
pdbc
->
mylock
.
off
 =
LOCK_INVALID
);

2216 
	`F_SET
(
pdbc
, 
DBC_WRITER
);

2228 i((
t
 = 
	`__dbc_g
(
pdbc
, &
pkey
, &
skey
, 
DB_SET
 | 
rmw
)) == 0)

2229 
t
 = 
	`__dbc_d
(
pdbc
, 0);

2230 i(
t
 =
DB_NOTFOUND
)

2231 
t
 = 
	`__db_cdy_cru
(
pdbp
);

2233 i((
t_t
 = 
	`__dbc_o
(
pdbc
)!0 && 
t
 == 0)

2234 
t
 = 
t_t
;

2236  (
t
);

2237 
	}
}

2249 
	$__dbc_d_imy
(
dbc
)

2250 
DBC
 *
dbc
;

2252 
DB_ENV
 *
dbv
;

2253 
DB
 *
dbp
, *
sdbp
;

2254 
DBC
 *
sdbc
;

2255 
DBT
 *
tskeyp
;

2256 
DBT
 
da
, 
pkey
, 
skey
, 
mkey
, 
mpskey
;

2257 
u_t32_t
 
nskey
, 
rmw
;

2258 
t
, 
t_t
;

2260 
dbp
 = 
dbc
->dbp;

2261 
dbv
 = 
dbp
->dbenv;

2262 
rmw
 = 
	`STD_LOCKING
(
dbc
? 
DB_RMW
 : 0;

2270 
	`memt
(&
pkey
, 0, (
DBT
));

2271 
	`memt
(&
da
, 0, (
DBT
));

2272 i((
t
 = 
	`__dbc_g
(
dbc
, &
pkey
, &
da
, 
DB_CURRENT
)) != 0)

2273  (
t
);

2275 
	`memt
(&
skey
, 0, (
DBT
));

2276 
t
 = 
	`__db_s_f
(
dbp
, &
sdbp
);

2277 
sdbp
 !
NULL
 && 
t
 == 0;

2278 
t
 = 
	`__db_s_xt
(&
sdbp
, 
dbc
->
txn
)) {

2283 i((
t
 = 
sdbp
->
	`s_back
(sdbp, &
pkey
, &
da
, &
skey
)) != 0) {

2288 i(
t
 =
DB_DONOTINDEX
)

2292 
r
;

2295 #ifde
DIAGNOSTIC


2296 i(
	`F_ISSET
(&
skey
, 
DB_DBT_MULTIPLE
))

2297 
	`__db_check_skeyt
(
sdbp
, &
skey
);

2301 i((
t
 = 
	`__db_curs_t
(
sdbp
, 
dbc
->
txn
, sdbp->
ty
,

2302 
PGNO_INVALID
, 0, 
dbc
->
lock
, &
sdbc
)) != 0)

2303 
r
;

2305 i(
	`CDB_LOCKING
(
dbv
)) {

2306 
	`DB_ASSERT
(
dbv
, 
sdbc
->
mylock
.
off
 =
LOCK_INVALID
);

2307 
	`F_SET
(
sdbc
, 
DBC_WRITER
);

2310 i(
	`F_ISSET
(&
skey
, 
DB_DBT_MULTIPLE
)) {

2311 
tskeyp
 = (
DBT
 *)
skey
.
da
;

2312 
nskey
 = 
skey
.
size
;

2314 
tskeyp
 = &
skey
;

2315 
nskey
 = 1;

2318 ; 
nskey
 > 0;skey--, 
tskeyp
++) {

2332 
	`DB_INIT_DBT
(
mpskey
, 
tskeyp
->
da
,skeyp->
size
);

2333 
	`SWAP_IF_NEEDED
(
sdbp
, &
pkey
);

2334 
	`DB_INIT_DBT
(
mkey
, 
pkey
.
da
,key.
size
);

2335 i((
t
 = 
	`__dbc_g
(
sdbc
, &
mpskey
, &
mkey
,

2336 
DB_GET_BOTH
 | 
rmw
)) == 0)

2337 
t
 = 
	`__dbc_d
(
sdbc
, 
DB_UPDATE_SECONDARY
);

2338 i(
t
 =
DB_NOTFOUND
)

2339 
t
 = 
	`__db_cdy_cru
(
dbp
);

2340 
	`SWAP_IF_NEEDED
(
sdbp
, &
pkey
);

2341 
	`FREE_IF_NEEDED
(
dbv
, 
tskeyp
);

2344 i((
t_t
 = 
	`__dbc_o
(
sdbc
)!0 && 
t
 == 0)

2345 
t
 = 
t_t
;

2346 i(
t
 != 0)

2347 
r
;

2356 
	`FREE_IF_NEEDED
(
dbv
, &
skey
);

2359 
r
: i(
sdbp
 !
NULL
 &&

2360 (
t_t
 = 
	`__db_s_de
(
sdbp
, 
dbc
->
txn
)!0 && 
t
 == 0)

2361 
t
 = 
t_t
;

2362 
	`FREE_IF_NEEDED
(
dbv
, &
skey
);

2363  (
t
);

2364 
	}
}

2373 
	$__db_s_f
(
pdbp
, 
sdb
)

2374 
DB
 *
pdbp
, **
sdb
;

2376 
DB
 *
sdbp
;

2378 
	`MUTEX_LOCK
(
pdbp
->
dbv
,dbp->
mux
);

2379 
sdbp
 = 
	`LIST_FIRST
(&
pdbp
->
s_cds
);

2382 i(
sdbp
 !
NULL
)

2383 
sdbp
->
s_ft
++;

2384 
	`MUTEX_UNLOCK
(
pdbp
->
dbv
,dbp->
mux
);

2386 *
sdb
 = 
sdbp
;

2389 
	}
}

2398 
	$__db_s_xt
(
sdb
, 
txn
)

2399 
DB
 **
sdb
;

2400 
DB_TXN
 *
txn
;

2402 
DB_ENV
 *
dbv
;

2403 
DB
 *
sdbp
, *
pdbp
, *
ome
;

2404 
t
;

2429 
sdbp
 = *
sdb
;

2430 
pdbp
 = 
sdbp
->
s_imy
;

2431 
dbv
 = 
pdbp
->dbenv;

2432 
ome
 = 
NULL
;

2434 
	`MUTEX_LOCK
(
dbv
, 
pdbp
->
mux
);

2435 
	`DB_ASSERT
(
dbv
, 
sdbp
->
s_ft
 != 0);

2436 i(--
sdbp
->
s_ft
 == 0) {

2437 
	`LIST_REMOVE
(
sdbp
, 
s_lks
);

2438 
ome
 = 
sdbp
;

2440 
sdbp
 = 
	`LIST_NEXT
(sdbp, 
s_lks
);

2441 i(
sdbp
 !
NULL
)

2442 
sdbp
->
s_ft
++;

2443 
	`MUTEX_UNLOCK
(
dbv
, 
pdbp
->
mux
);

2445 *
sdb
 = 
sdbp
;

2450 i(
ome
 =
NULL
)

2451 
t
 = 0;

2452 i(
txn
 =
NULL
)

2453 
t
 = 
	`__db_o
(
ome
, 
NULL
, 0);

2455 
t
 = 
	`__txn_oevt
(
dbv
, 
txn
, 
ome
);

2457  (
t
);

2458 
	}
}

2468 
	$__db_s_de
(
sdbp
, 
txn
)

2469 
DB
 *
sdbp
;

2470 
DB_TXN
 *
txn
;

2472 
DB_ENV
 *
dbv
;

2473 
DB
 *
pdbp
;

2474 
doo
, 
t
;

2476 
pdbp
 = 
sdbp
->
s_imy
;

2477 
dbv
 = 
pdbp
->dbenv;

2478 
doo
 = 0;

2480 
	`MUTEX_LOCK
(
dbv
, 
pdbp
->
mux
);

2481 
	`DB_ASSERT
(
dbv
, 
sdbp
->
s_ft
 != 0);

2482 i(--
sdbp
->
s_ft
 == 0) {

2483 
	`LIST_REMOVE
(
sdbp
, 
s_lks
);

2484 
doo
 = 1;

2486 
	`MUTEX_UNLOCK
(
dbv
, 
pdbp
->
mux
);

2488 i(
doo
 == 0)

2489 
t
 = 0;

2490 i(
txn
 =
NULL
)

2491 
t
 = 
	`__db_o
(
sdbp
, 
NULL
, 0);

2493 
t
 = 
	`__txn_oevt
(
dbv
, 
txn
, 
sdbp
);

2494  (
t
);

2495 
	}
}

2502 
	$__db_s_cou
(
pdbp
)

2503 
DB
 *
pdbp
;

2505 
DB_ENV
 *
dbv
;

2506 
DB
 *
sdbp
;

2507 
cou
;

2509 
dbv
 = 
pdbp
->dbenv;

2510 
cou
 = 0;

2512 
	`MUTEX_LOCK
(
dbv
, 
pdbp
->
mux
);

2513 
sdbp
 = 
	`LIST_FIRST
(&
pdbp
->
s_cds
);

2514 
sdbp
 !
NULL
;

2515 
sdbp
 = 
	`LIST_NEXT
(sdbp, 
s_lks
))

2516 ++
cou
;

2517 
	`MUTEX_UNLOCK
(
dbv
, 
pdbp
->
mux
);

2519  (
cou
);

2520 
	}
}

2532 
	$__db_budl
(
dbp
, 
dc
, 
l
, 
wc
)

2533 
DB
 *
dbp
;

2534 
DBT
 *
dc
, *
l
, *
wc
;

2536 
DB_ENV
 *
dbv
;

2537 
u_t32_t
 
n
, 
nbys
;

2538 
u_t8_t
 *
buf
;

2539 
t
;

2541 
dbv
 = 
dbp
->dbenv;

2543 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
l
, 
DB_DBT_PARTIAL
));

2545 
	`memt
(
wc
, 0, (
DBT
));

2547 
nbys
 = 
	`__db_size
(
dc
->
size
, 
l
);

2548 
wc
->
size
 = 
nbys
;

2550 i((
t
 = 
	`__os_mloc
(
dbv
, 
nbys
, &
buf
)) != 0)

2551  (
t
);

2552 
wc
->
da
 = 
buf
;

2555 
	`memt
(
buf
,

2556 
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
? ((
BTREE
 *)dbp->
bt_
)->
_d
 :

2557 0, 
nbys
);

2560 
	`memy
(
buf
, 
dc
->
da
,

2561 
l
->
doff
 > 
dc
->
size
 ? oldrec->size :artial->doff);

2564 
	`memy
(
buf
 + 
l
->
doff
,tl->
da
,tl->
size
);

2567 
n
 = 
l
->
doff
 +tl->
dn
;

2568 i(
dc
->
size
 > 
n
)

2569 
	`memy
(
buf
 + 
l
->
doff
 +tl->
size
,

2570 (
u_t8_t
 *)
dc
->
da
 + 
n
, oldc->
size
 -en);

2573 
	}
}

2585 
u_t32_t


2586 
	$__db_size
(
nbys
, 
da
)

2587 
u_t32_t
 
nbys
;

2588 
DBT
 *
da
;

2605 i(
nbys
 < 
da
->
doff
 + da->
dn
)

2606  (
da
->
doff
 + da->
size
);

2608  (
nbys
 + 
da
->
size
 - da->
dn
);

2609 
	}
}

2611 #ifde
DIAGNOSTIC


2622 
	$__db_check_skeyt
(
sdbp
, 
skeyp
)

2623 
DB
 *
sdbp
;

2624 
DBT
 *
skeyp
;

2626 
DB_ENV
 *
dbv
;

2627 
DBT
 *
fkey
, *
ϡkey
, *
key1
, *
key2
;

2629 
dbv
 = 
sdbp
->dbenv;

2631 
fkey
 = (
DBT
 *)
skeyp
->
da
;

2632 
ϡkey
 = 
fkey
 + 
skeyp
->
size
;

2633 
key1
 = 
fkey
; key1 < 
ϡkey
; key1++)

2634 
key2
 = 
key1
 + 1; key2 < 
ϡkey
; key2++)

2635 
	`DB_ASSERT
(
dbv
,

2636 ((
BTREE
 *)
sdbp
->
bt_
)->
	`bt_com
(sdbp,

2637 
key1
, 
key2
) != 0);

2638 
	}
}

	@../db/db_cds.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/txn.h
"

17 
__cdsgroup_abt
 
__P
((
DB_TXN
 *
txn
));

18 
__cdsgroup_comm
 
__P
((
DB_TXN
 *
txn
, 
u_t32_t
 
ags
));

19 
__cdsgroup_disrd
 
__P
((
DB_TXN
 *
txn
, 
u_t32_t
 
ags
));

20 
u_t32_t
 
__cdsgroup_id
 
__P
((
DB_TXN
 *
txn
));

21 
__cdsgroup_nsup
 
__P
((
DB_ENV
 *
dbv
, cڡ *
mh
));

22 
__cdsgroup_e
 
__P
((
DB_TXN
 *
txn
, 
u_t8_t
 *
gid
));

23 
__cdsgroup_t_me
 
__P
((
DB_TXN
 *
txn
, cڡ *
me
));

24 
__cdsgroup_t_timeout


25 
__P
((
DB_TXN
 *
txn
, 
db_timeout_t
 
timeout
, 
u_t32_t
 
ags
));

32 
	$__cdsgroup_nsup
(
dbv
, 
mh
)

33 
DB_ENV
 *
dbv
;

34 cڡ *
mh
;

36 
	`__db_rx
(
dbv
, "CDS groupdn su܈%s", 
mh
);

37  (
DB_OPNOTSUP
);

38 
	}
}

40 
	$__cdsgroup_abt
(
txn
)

41 
DB_TXN
 *
txn
;

43  (
	`__cdsgroup_nsup
(
txn
->
mg
->
dbv
, "abort"));

44 
	}
}

46 
	$__cdsgroup_comm
(
txn
, 
ags
)

47 
DB_TXN
 *
txn
;

48 
u_t32_t
 
ags
;

50 
DB_ENV
 *
dbv
;

51 
DB_LOCKREQ
 
eq
;

52 
DB_LOCKER
 *
lock
;

53 
t
, 
t_t
;

55 
	`COMPQUIET
(
ags
, 0);

56 
dbv
 = 
txn
->
mg
->dbenv;

59 i(
txn
->
curss
 != 0) {

60 
	`__db_rx
(
dbv
, "CDS group hasctive cursors");

61  (
EINVAL
);

65 
eq
.

 = 
DB_LOCK_PUT_ALL
;

66 
eq
.
obj
 = 
NULL
;

67 
t
 = 
	`__lock_vec
(
dbv
, 
txn
->
lock
, 0, &
eq
, 1, 
NULL
);

69 
dbv
 = 
txn
->
mg
->dbenv;

70 
lock
 = 
txn
->locker;

71 
	`__os_
(
dbv
, 
txn
->
mg
);

72 
	`__os_
(
dbv
, 
txn
);

73 i((
t_t
 = 
	`__lock_id_
(
dbv
, 
lock
)!0 && 
t
 == 0)

74 
t
 = 
t_t
;

75  (
t
);

76 
	}
}

78 
	$__cdsgroup_disrd
(
txn
, 
ags
)

79 
DB_TXN
 *
txn
;

80 
u_t32_t
 
ags
;

82 
	`COMPQUIET
(
ags
, 0);

83  (
	`__cdsgroup_nsup
(
txn
->
mg
->
dbv
, "discard"));

84 
	}
}

86 
u_t32_t
 
	$__cdsgroup_id
(
txn
)

87 
DB_TXN
 *
txn
;

89  (
txn
->
txnid
);

90 
	}
}

92 
	$__cdsgroup_e
(
txn
, 
gid
)

93 
DB_TXN
 *
txn
;

94 
u_t8_t
 *
gid
;

96 
	`COMPQUIET
(
gid
, 
NULL
);

97  (
	`__cdsgroup_nsup
(
txn
->
mg
->
dbv
, "prepare"));

98 
	}
}

100 
	$__cdsgroup_t_me
(
txn
, 
me
)

101 
DB_TXN
 *
txn
;

102 cڡ *
me
;

104 
	`COMPQUIET
(
me
, 
NULL
);

105  (
	`__cdsgroup_nsup
(
txn
->
mg
->
dbv
, "set_name"));

106 
	}
}

108 
	$__cdsgroup_t_timeout
(
txn
, 
timeout
, 
ags
)

109 
DB_TXN
 *
txn
;

110 
db_timeout_t
 
timeout
;

111 
u_t32_t
 
ags
;

113 
	`COMPQUIET
(
timeout
, 0);

114 
	`COMPQUIET
(
ags
, 0);

115  (
	`__cdsgroup_nsup
(
txn
->
mg
->
dbv
, "set_timeout"));

116 
	}
}

125 
	$__cdsgroup_beg
(
dbv
, 
txp
)

126 
DB_ENV
 *
dbv
;

127 
DB_TXN
 **
txp
;

129 
DB_THREAD_INFO
 *

;

130 
DB_TXN
 *
txn
;

131 
t
;

133 
	`PANIC_CHECK
(
dbv
);

134 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, "cdsgroup_begin");

135 i(!
	`CDB_LOCKING
(
dbv
))

136  (
	`__db_v_cfig
(
dbv
, "cdsgroup_beg", 
DB_INIT_CDB
));

138 
	`ENV_ENTER
(
dbv
, 

);

139 *
txp
 = 
txn
 = 
NULL
;

140 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_TXN
), &
txn
)) != 0)

141 
r
;

146 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_TXNMGR
), &
txn
->
mg
)) != 0)

147 
r
;

148 
txn
->
mg
->
dbv
 = dbenv;

150 i((
t
 = 
	`__lock_id
(
dbv
, &
txn
->
txnid
, &txn->
lock
)) != 0)

151 
r
;

153 
txn
->
ags
 = 
TXN_CDSGROUP
;

154 
txn
->
abt
 = 
__cdsgroup_abt
;

155 
txn
->
comm
 = 
__cdsgroup_comm
;

156 
txn
->
disrd
 = 
__cdsgroup_disrd
;

157 
txn
->
id
 = 
__cdsgroup_id
;

158 
txn
->
e
 = 
__cdsgroup_e
;

159 
txn
->
t_me
 = 
__cdsgroup_t_me
;

160 
txn
->
t_timeout
 = 
__cdsgroup_t_timeout
;

162 *
txp
 = 
txn
;

165 
r
: i(
txn
 !
NULL
) {

166 i(
txn
->
mg
 !
NULL
)

167 
	`__os_
(
dbv
, 
txn
->
mg
);

168 
	`__os_
(
dbv
, 
txn
);

171 
	`ENV_LEAVE
(
dbv
, 

);

172  (
t
);

173 
	}
}

	@../db/db_conv.c

41 
	~"db_cfig.h
"

43 
	~"db_t.h
"

44 
	~"dbc/yo.h
"

45 
	~"dbc/hmac.h
"

46 
	~"dbc/db_ge.h
"

47 
	~"dbc/db_sw.h
"

48 
	~"dbc/b.h
"

49 
	~"dbc/hash.h
"

50 
	~"dbc/log.h
"

51 
	~"dbc/qam.h
"

60 
	$__db_pg
(
dbv
, 
pg
, 

, 
cook
)

61 
DB_ENV
 *
dbv
;

62 
db_pgno_t
 
pg
;

63 *

;

64 
DBT
 *
cook
;

66 
DB
 
dummydb
, *
dbp
;

67 
DB_PGINFO
 *
pgfo
;

68 
DB_CIPHER
 *
db_ch
;

69 
DB_LSN
 
n_ud
;

70 
PAGE
 *
g
;

71 
size_t
 
sum_n
;

72 
is_hmac
, 
t
;

73 
u_t8_t
 *
chksum
;

75 
pgfo
 = (
DB_PGINFO
 *)
cook
->
da
;

76 
g
 = (
PAGE
 *)

;

78 
t
 = 
is_hmac
 = 0;

79 
chksum
 = 
NULL
;

80 
	`memt
(&
dummydb
, 0, (
DB
));

81 
dbp
 = &
dummydb
;

82 
dummydb
.
ags
 = 
pgfo
->flags;

83 
dummydb
.
pgsize
 = 
pgfo
->
db_gesize
;

84 
db_ch
 = (
DB_CIPHER
 *)
dbv
->
yo_hd
;

85 
g
->
ty
) {

86 
P_HASHMETA
:

87 
P_BTREEMETA
:

88 
P_QAMMETA
:

93 i(
	`FLD_ISSET
(((
DBMETA
 *)

)->
maags
, 
DBMETA_CHKSUM
))

94 
	`F_SET
(
dbp
, 
DB_AM_CHKSUM
);

96 
	`F_CLR
(
dbp
, 
DB_AM_CHKSUM
);

97 i(((
DBMETA
 *)

)->
y_g
 != 0 ||

98 
	`F_ISSET
(
dbp
, 
DB_AM_ENCRYPT
))

99 
is_hmac
 = 1;

106 
chksum
 = ((
BTMETA
 *)

)->chksum;

107 
sum_n
 = 
DBMETASIZE
;

109 
P_INVALID
:

115 i(
	`IS_ZERO_LSN
(
	`LSN
(
g
)&&ag->
pgno
 =
PGNO_INVALID
) {

116 
sum_n
 = 0;

121 
chksum
 = 
	`P_CHKSUM
(
dbp
, 
g
);

122 
sum_n
 = 
pgfo
->
db_gesize
;

127 
is_hmac
 = 
	`CRYPTO_ON
(
dbv
) ? 1 : 0;

136 i(
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
&& 
sum_n
 != 0) {

137 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
&& 
is_hmac
 == 0)

138 
	`P_32_SWAP
(
chksum
);

139 
t
 = 
	`__db_check_chksum
(

140 
dbv
, 
NULL
, 
db_ch
, 
chksum
, 

, 
sum_n
, 
is_hmac
)) {

144 i(
	`DBENV_LOGGING
(
dbv
))

145 ()
	`__db_cksum_log
(

146 
dbv
, 
NULL
, &
n_ud
, 
DB_FLUSH
);

147 
	`__db_rx
(
dbv
,

149 (
u_lg
)
pg
);

150  (
	`__db_nic
(
dbv
, 
DB_RUNRECOVERY
));

152  (
t
);

155 i((
t
 = 
	`__db_dey_pg
(
dbv
, 
dbp
, 
g
)) != 0)

156  (
t
);

157 
g
->
ty
) {

158 
P_INVALID
:

159 i(
pgfo
->
ty
 =
DB_QUEUE
)

160  (
	`__qam_pg_out
(
dbv
, 
pg
, 

, 
cook
));

162  (
	`__ham_pg
(
dbv
, 
dbp
, 
pg
, 

, 
cook
));

163 
P_HASH_UNSORTED
:

164 
P_HASH
:

165 
P_HASHMETA
:

166  (
	`__ham_pg
(
dbv
, 
dbp
, 
pg
, 

, 
cook
));

167 
P_BTREEMETA
:

168 
P_IBTREE
:

169 
P_IRECNO
:

170 
P_LBTREE
:

171 
P_LDUP
:

172 
P_LRECNO
:

173 
P_OVERFLOW
:

174  (
	`__bam_pg
(
dbv
, 
dbp
, 
pg
, 

, 
cook
));

175 
P_QAMMETA
:

176 
P_QAMDATA
:

177  (
	`__qam_pg_out
(
dbv
, 
pg
, 

, 
cook
));

181  (
	`__db_pgfmt
(
dbv
, 
pg
));

182 
	}
}

191 
	$__db_pgout
(
dbv
, 
pg
, 

, 
cook
)

192 
DB_ENV
 *
dbv
;

193 
db_pgno_t
 
pg
;

194 *

;

195 
DBT
 *
cook
;

197 
DB
 
dummydb
, *
dbp
;

198 
DB_PGINFO
 *
pgfo
;

199 
PAGE
 *
g
;

200 
t
;

202 
pgfo
 = (
DB_PGINFO
 *)
cook
->
da
;

203 
g
 = (
PAGE
 *)

;

205 
	`memt
(&
dummydb
, 0, (
DB
));

206 
dbp
 = &
dummydb
;

207 
dummydb
.
ags
 = 
pgfo
->flags;

208 
dummydb
.
pgsize
 = 
pgfo
->
db_gesize
;

209 
t
 = 0;

210 
g
->
ty
) {

211 
P_INVALID
:

212 i(
pgfo
->
ty
 =
DB_QUEUE
)

213 
t
 = 
	`__qam_pg_out
(
dbv
, 
pg
, 

, 
cook
);

215 
t
 = 
	`__ham_pgout
(
dbv
, 
dbp
, 
pg
, 

, 
cook
);

217 
P_HASH
:

218 
P_HASH_UNSORTED
:

226 
P_HASHMETA
:

227 
t
 = 
	`__ham_pgout
(
dbv
, 
dbp
, 
pg
, 

, 
cook
);

229 
P_BTREEMETA
:

230 
P_IBTREE
:

231 
P_IRECNO
:

232 
P_LBTREE
:

233 
P_LDUP
:

234 
P_LRECNO
:

235 
P_OVERFLOW
:

236 
t
 = 
	`__bam_pgout
(
dbv
, 
dbp
, 
pg
, 

, 
cook
);

238 
P_QAMMETA
:

239 
P_QAMDATA
:

240 
t
 = 
	`__qam_pg_out
(
dbv
, 
pg
, 

, 
cook
);

243  (
	`__db_pgfmt
(
dbv
, 
pg
));

245 i(
t
)

246  (
t
);

248  (
	`__db_y_d_checksum_pg
(
dbv
, 
dbp
, 
g
));

249 
	}
}

258 
	$__db_dey_pg
 (
dbv
, 
dbp
, 
g
)

259 
DB_ENV
 *
dbv
;

260 
DB
 *
dbp
;

261 
PAGE
 *
g
;

263 
DB_CIPHER
 *
db_ch
;

264 
size_t
 
pg_n
, 
pg_off
;

265 
u_t8_t
 *
iv
;

266 
t
;

268 
db_ch
 = (
DB_CIPHER
 *)
dbv
->
yo_hd
;

269 
t
 = 0;

270 
iv
 = 
NULL
;

271 i(
	`F_ISSET
(
dbp
, 
DB_AM_ENCRYPT
)) {

272 
	`DB_ASSERT
(
dbv
, 
db_ch
 !
NULL
);

273 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
));

275 
pg_off
 = 
	`P_OVERHEAD
(
dbp
);

276 
	`DB_ASSERT
(
dbv
, 
db_ch
->
	`adj_size
(
pg_off
) == 0);

278 
g
->
ty
) {

279 
P_HASHMETA
:

280 
P_BTREEMETA
:

281 
P_QAMMETA
:

288 
iv
 = ((
BTMETA
 *)
g
)->iv;

289 
pg_n
 = 
DBMETASIZE
;

291 
P_INVALID
:

292 i(
	`IS_ZERO_LSN
(
	`LSN
(
g
)) &&

293 
g
->
pgno
 =
PGNO_INVALID
) {

294 
pg_n
 = 0;

299 
iv
 = 
	`P_IV
(
dbp
, 
g
);

300 
pg_n
 = 
dbp
->
pgsize
;

303 i(
pg_n
 != 0)

304 
t
 = 
db_ch
->
	`dey
(
dbv
, db_ch->
da
,

305 
iv
, ((
u_t8_t
 *)
g
+ 
pg_off
,

306 
pg_n
 - 
pg_off
);

308  (
t
);

309 
	}
}

319 
	$__db_y_d_checksum_pg
 (
dbv
, 
dbp
, 
g
)

320 
DB_ENV
 *
dbv
;

321 
DB
 *
dbp
;

322 
PAGE
 *
g
;

324 
DB_CIPHER
 *
db_ch
;

325 
t
;

326 
size_t
 
pg_off
, 
pg_n
, 
sum_n
;

327 
u_t8_t
 *
chksum
, *
iv
, *
key
;

329 
chksum
 = 
iv
 = 
key
 = 
NULL
;

331 
db_ch
 = (
DB_CIPHER
 *)
dbv
->
yo_hd
;

332 i(
	`F_ISSET
(
dbp
, 
DB_AM_ENCRYPT
)) {

334 
	`DB_ASSERT
(
dbv
, 
db_ch
 !
NULL
);

335 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
));

337 
pg_off
 = 
	`P_OVERHEAD
(
dbp
);

338 
	`DB_ASSERT
(
dbv
, 
db_ch
->
	`adj_size
(
pg_off
) == 0);

340 
key
 = 
db_ch
->
mac_key
;

342 
g
->
ty
) {

343 
P_HASHMETA
:

344 
P_BTREEMETA
:

345 
P_QAMMETA
:

352 
iv
 = ((
BTMETA
 *)
g
)->iv;

353 
pg_n
 = 
DBMETASIZE
;

356 
iv
 = 
	`P_IV
(
dbp
, 
g
);

357 
pg_n
 = 
dbp
->
pgsize
;

360 i((
t
 = 
db_ch
->
	`y
(
dbv
, db_ch->
da
,

361 
iv
, ((
u_t8_t
 *)
g
+ 
pg_off
, 
pg_n
 -g_off)) != 0)

362  (
t
);

364 i(
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
)) {

365 
g
->
ty
) {

366 
P_HASHMETA
:

367 
P_BTREEMETA
:

368 
P_QAMMETA
:

375 
chksum
 = ((
BTMETA
 *)
g
)->chksum;

376 
sum_n
 = 
DBMETASIZE
;

379 
chksum
 = 
	`P_CHKSUM
(
dbp
, 
g
);

380 
sum_n
 = 
dbp
->
pgsize
;

383 
	`__db_chksum
(
NULL
, (
u_t8_t
 *)
g
, 
sum_n
, 
key
, 
chksum
);

384 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
&& !F_ISSET(dbp, 
DB_AM_ENCRYPT
))

385 
	`P_32_SWAP
(
chksum
);

388 
	}
}

397 
	$__db_masw
(
pg
)

398 
PAGE
 *
pg
;

400 
u_t8_t
 *
p
;

402 
p
 = (
u_t8_t
 *)
pg
;

405 
	`SWAP32
(
p
);

406 
	`SWAP32
(
p
);

407 
	`SWAP32
(
p
);

408 
	`SWAP32
(
p
);

409 
	`SWAP32
(
p
);

410 
	`SWAP32
(
p
);

411 
p
 += 4;

412 
	`SWAP32
(
p
);

413 
	`SWAP32
(
p
);

414 
	`SWAP32
(
p
);

415 
	`SWAP32
(
p
);

416 
	`SWAP32
(
p
);

417 
	`SWAP32
(
p
);

418 
	}
}

428 
	$__db_bysw
(
dbv
, 
dbp
, 
pg
, 
h
, 
gesize
, 
pg
)

429 
DB_ENV
 *
dbv
;

430 
DB
 *
dbp
;

431 
db_pgno_t
 
pg
;

432 
PAGE
 *
h
;

433 
size_t
 
gesize
;

434 
pg
;

436 
BINTERNAL
 *
bi
;

437 
BKEYDATA
 *
bk
;

438 
BOVERFLOW
 *
bo
;

439 
RINTERNAL
 *
ri
;

440 
db_dx_t
 
i
, *
p
, 
n
, 
tmp
;

441 
u_t8_t
 *
p
, *
d
;

443 
	`COMPQUIET
(
pg
, 0);

445 
p
 = 
	`P_INP
(
dbp
, 
h
);

446 i(
pg
) {

447 
	`M_32_SWAP
(
h
->
l
.
fe
);

448 
	`M_32_SWAP
(
h
->
l
.
offt
);

449 
	`M_32_SWAP
(
h
->
pgno
);

450 
	`M_32_SWAP
(
h
->
ev_pgno
);

451 
	`M_32_SWAP
(
h
->
xt_pgno
);

452 
	`M_16_SWAP
(
h
->
s
);

453 
	`M_16_SWAP
(
h
->
hf_offt
);

456 
h
->
ty
) {

457 
P_HASH_UNSORTED
:

458 
P_HASH
:

459 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++) {

460 i(
pg
)

461 
	`M_16_SWAP
(
p
[
i
]);

463 
	`HPAGE_TYPE
(
dbp
, 
h
, 
i
)) {

464 
H_KEYDATA
:

466 
H_DUPLICATE
:

467 
n
 = 
	`LEN_HKEYDATA
(
dbp
, 
h
, 
gesize
, 
i
);

468 
p
 = 
	`HKEYDATA_DATA
(
	`P_ENTRY
(
dbp
, 
h
, 
i
));

469 
d
 = 
p
 + 
n
; <nd;) {

470 i(
pg
) {

471 
	`P_16_SWAP
(
p
);

472 
	`memy
(&
tmp
,

473 
p
, (
db_dx_t
));

474 
p
 +(
db_dx_t
);

476 
	`memy
(&
tmp
,

477 
p
, (
db_dx_t
));

478 
	`SWAP16
(
p
);

480 
p
 +
tmp
;

481 
	`SWAP16
(
p
);

484 
H_OFFDUP
:

485 
p
 = 
	`HOFFPAGE_PGNO
(
	`P_ENTRY
(
dbp
, 
h
, 
i
));

486 
	`SWAP32
(
p
);

488 
H_OFFPAGE
:

489 
p
 = 
	`HOFFPAGE_PGNO
(
	`P_ENTRY
(
dbp
, 
h
, 
i
));

490 
	`SWAP32
(
p
);

491 
	`SWAP32
(
p
);

494  (
	`__db_pgfmt
(
dbv
, 
pg
));

505 i(!
pg
)

506 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++)

507 
	`M_16_SWAP
(
p
[
i
]);

509 
P_LBTREE
:

510 
P_LDUP
:

511 
P_LRECNO
:

512 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++) {

513 i(
pg
)

514 
	`M_16_SWAP
(
p
[
i
]);

520 i(
h
->
ty
 =
P_LBTREE
 && 
i
 > 1) {

521 i(
pg
) {

522 i(
p
[
i
] == inp[i - 2])

525 
	`M_16_SWAP
(
p
[
i
]);

526 i(
p
[
i
] == inp[i - 2])

528 
	`M_16_SWAP
(
p
[
i
]);

532 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
);

533 
	`B_TYPE
(
bk
->
ty
)) {

534 
B_KEYDATA
:

535 
	`M_16_SWAP
(
bk
->
n
);

537 
B_DUPLICATE
:

538 
B_OVERFLOW
:

539 
bo
 = (
BOVERFLOW
 *)
bk
;

540 
	`M_32_SWAP
(
bo
->
pgno
);

541 
	`M_32_SWAP
(
bo
->

);

544  (
	`__db_pgfmt
(
dbv
, 
pg
));

547 i(!
pg
)

548 
	`M_16_SWAP
(
p
[
i
]);

551 
P_IBTREE
:

552 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++) {

553 i(
pg
)

554 
	`M_16_SWAP
(
p
[
i
]);

556 
bi
 = 
	`GET_BINTERNAL
(
dbp
, 
h
, 
i
);

557 
	`M_16_SWAP
(
bi
->
n
);

558 
	`M_32_SWAP
(
bi
->
pgno
);

559 
	`M_32_SWAP
(
bi
->
ecs
);

561 
	`B_TYPE
(
bi
->
ty
)) {

562 
B_KEYDATA
:

564 
B_DUPLICATE
:

565 
B_OVERFLOW
:

566 
bo
 = (
BOVERFLOW
 *)
bi
->
da
;

567 
	`M_32_SWAP
(
bo
->
pgno
);

568 
	`M_32_SWAP
(
bo
->

);

571  (
	`__db_pgfmt
(
dbv
, 
pg
));

574 i(!
pg
)

575 
	`M_16_SWAP
(
p
[
i
]);

578 
P_IRECNO
:

579 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++) {

580 i(
pg
)

581 
	`M_16_SWAP
(
p
[
i
]);

583 
ri
 = 
	`GET_RINTERNAL
(
dbp
, 
h
, 
i
);

584 
	`M_32_SWAP
(
ri
->
pgno
);

585 
	`M_32_SWAP
(
ri
->
ecs
);

587 i(!
pg
)

588 
	`M_16_SWAP
(
p
[
i
]);

591 
P_OVERFLOW
:

592 
P_INVALID
:

596  (
	`__db_pgfmt
(
dbv
, 
pg
));

599 i(!
pg
) {

601 
	`M_32_SWAP
(
h
->
l
.
fe
);

602 
	`M_32_SWAP
(
h
->
l
.
offt
);

603 
	`M_32_SWAP
(
h
->
pgno
);

604 
	`M_32_SWAP
(
h
->
ev_pgno
);

605 
	`M_32_SWAP
(
h
->
xt_pgno
);

606 
	`M_16_SWAP
(
h
->
s
);

607 
	`M_16_SWAP
(
h
->
hf_offt
);

610 
	}
}

	@../db/db_dispatch.c

40 
	~"db_cfig.h
"

42 
	~"db_t.h
"

43 
	~"dbc/db_ge.h
"

44 
	~"dbc/hash.h
"

45 
	~"dbc/f.h
"

46 
	~"dbc/lock.h
"

47 
	~"dbc/log.h
"

48 
	~"dbc/mp.h
"

49 
	~"dbc/txn.h
"

51 
__db_limbo_fix
 
__P
((
DB
 *, 
DB_TXN
 *,

52 
DB_TXNLIST
 *, 
db_pgno_t
 *, 
DBMETA
 *, 
db_limbo_e
));

53 
__db_limbo_buck
 
__P
((
DB_ENV
 *,

54 
DB_TXN
 *, 
DB_TXNLIST
 *, 
db_limbo_e
));

55 
__db_limbo_move
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, DB_TXN *, 
DB_TXNLIST
 *));

56 
__db_limbo_e
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_TXNLIST
 *));

57 
__db_lock_move
 
__P
((
DB_ENV
 *,

58 
u_t8_t
 *, 
db_pgno_t
, 
db_lockmode_t
, 
DB_TXN
 *, DB_TXN *));

59 
__db_txi_pgndd
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *,

60 
t32_t
, 
u_t8_t
 *, *, 
db_pgno_t
));

61 
__db_txi_fd_
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *,

62 
db_txi_ty
, 
u_t32_t
, 
u_t8_t
 *, 
DB_TXNLIST
 **,

63 , 
u_t32_t
 *));

79 
	$__db_dich
(
dbv
, 
db
, 
dbsize
, 
db
, 
lp
, 
do
, 
fo
)

80 
DB_ENV
 *
dbv
;

81 (**
db
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

82 
size_t
 
dbsize
;

83 
DBT
 *
db
;

84 
DB_LSN
 *
lp
;

85 
db_cs
 
do
;

86 
DB_TXNHEAD
 *
fo
;

88 
DB_LSN
 
ev_l
;

89 
u_t32_t
 
y
, 
us
, 
txnid
;

90 
make_
, 
t
;

92 
	`memy
(&
y
, 
db
->
da
, (rectype));

93 
	`memy
(&
txnid
, (
u_t8_t
 *)
db
->
da
 + (
y
), (txnid));

94 
make_
 = 
t
 = 0;

97 
	`DB_ASSERT
(
dbv
, 
db
 !
NULL
);

105 
do
) {

106 
DB_TXN_ABORT
:

107 
DB_TXN_APPLY
:

108 
DB_TXN_PRINT
:

109 
make_
 = 1;

111 
DB_TXN_OPENFILES
:

119 
	`memy
(&
ev_l
, (
u_t8_t
 *)
db
->
da
 +

120 (
y
+ (
txnid
), (
ev_l
));

121 i(
txnid
 !0 && 
ev_l
.
fe
 =0 && (
t
 =

122 
	`__db_txi_add
(
dbv
, 
fo
, 
txnid
, 
TXN_OK
, 
NULL
)) != 0)

123  (
t
);

126 
DB_TXN_POPENFILES
:

127 i(
y
 =
DB___dbg_gi
 ||

128 
y
 =
DB___txn_chd
 ||

129 
y
 =
DB___txn_ckp
 ||ey =
DB___txn_cye
)

130  (
db
[
y
](
dbv
, 
db
, 
lp
, 
do
, 
fo
));

132 
DB_TXN_BACKWARD_ROLL
:

155 
y
) {

161 
DB___txn_g
:

162 
DB___txn_cye
:

163 
DB___txn_ckp
:

164 
make_
 = 1;

170 
DB___txn_chd
:

171 
DB___db_no
:

172 
DB___f_fe_move
:

173 
DB___dbg_gi
:

174 
make_
 = 1;

178 i(
txnid
 == 0)

181 
t
 = 
	`__db_txi_fd
(
dbv
, 
fo
, 
txnid
, &
us
);

184 i(
t
 =
DB_NOTFOUND
)

185  (
	`__db_txi_add
(
dbv
,

186 
fo
, 
txnid
, 
TXN_IGNORE
, 
lp
));

187 i(
t
 != 0)

188  (
t
);

196 i(
us
 =
TXN_IGNORE
 && 
y
 !
DB___txn_chd
) {

197 
make_
 = 0;

200 i(
us
 =
TXN_COMMIT
)

204 
make_
 = 1;

205 i(
us
 =
TXN_OK
 &&

206 (
t
 = 
	`__db_txi_upde
(
dbv
,

207 
fo
, 
txnid
, 
y
 =
DB___txn_xa_g
 ?

208 
TXN_PREPARE
 : 
TXN_ABORT
, 
NULL
, &
us
, 0)) != 0)

209  (
t
);

212 
DB_TXN_FORWARD_ROLL
:

220 
y
) {

221 
DB___txn_cye
:

222 
DB___txn_ckp
:

223 
DB___db_no
:

224 
DB___dbg_gi
:

225 
make_
 = 1;

229 i(
txnid
 == 0)

230 
us
 = 0;

232 
t
 = 
	`__db_txi_fd
(
dbv
,

233 
fo
, 
txnid
, &
us
);

235 i(
t
 =
DB_NOTFOUND
)

238 i(
t
 != 0)

239  (
t
);

240 i(
us
 =
TXN_COMMIT
) {

241 
make_
 = 1;

246 #ide
HAVE_FTRUNCATE


247 i(
us
 !
TXN_IGNORE
 &&

248 (
y
 =
DB___ham_magroup
 ||

249 
y
 =
DB___ham_grouoc
 ||

250 
y
 =
DB___db_pg_loc
)) {

258 
make_
 = 1;

259 
do
 = 
DB_TXN_BACKWARD_ALLOC
;

264 
DB_TXN_BACKWARD_ALLOC
:

266  (
	`__db_unknown_ag
(

267 
dbv
, "__db_dich", (
u_t32_t
)
do
));

270 i(
make_
) {

279 i(
y
 & 
DB_debug_FLAG
) {

280 i(
do
 =
DB_TXN_PRINT
)

281 
y
 &~
DB_debug_FLAG
;

283 
	`memy
(
lp
,

284 (
u_t8_t
 *)
db
->
da
 +

285 (
y
) +

286 (
txnid
), (*
lp
));

290 i(
y
 >
DB_ur_BEGIN
 && 
dbv
->
p_dich
 !
NULL
)

291  (
dbv
->
	`p_dich
(dbv, 
db
, 
lp
, 
do
));

298 i(
y
 > 
dbsize
 || 
db
[y] =
NULL
) {

299 
	`__db_rx
(
dbv
,

301 (
u_lg
)
y
);

302  (
EINVAL
);

304  (
db
[
y
](
dbv
, 
db
, 
lp
, 
do
, 
fo
));

309 
	}
}

319 
	$__db_add_covy
(
dbv
, 
db
, 
dbsize
, 
func
, 
ndx
)

320 
DB_ENV
 *
dbv
;

321 (***
db

	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

322 
size_t
 *
dbsize
;

323 (*
func

	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

324 
u_t32_t
 
ndx
;

326 
size_t
 
i
, 
nsize
;

327 
t
;

330 i(
ndx
 >*
dbsize
) {

331 
nsize
 = 
ndx
 + 40;

332 i((
t
 =

333 
	`__os_loc
(
dbv
, 
nsize
 * ((*
db
)[0]), dtab)) != 0)

334  (
t
);

335 
i
 = *
dbsize
; i < 
nsize
; ++i)

336 (*
db
)[
i
] = 
NULL
;

337 *
dbsize
 = 
nsize
;

340 (*
db
)[
ndx
] = 
func
;

342 
	}
}

352 
	$__db_txi_
(
dbv
, 
low_txn
, 
hi_txn
, 
unc_l
, 

)

353 
DB_ENV
 *
dbv
;

354 
u_t32_t
 
low_txn
, 
hi_txn
;

355 
DB_LSN
 *
unc_l
;

356 
DB_TXNHEAD
 **

;

358 
DB_TXNHEAD
 *
hdp
;

359 
u_t32_t
 
size
, 
tmp
;

360 
t
;

370 i(
low_txn
 == 0)

371 
size
 = 1;

373 i(
hi_txn
 < 
low_txn
) {

374 
tmp
 = 
hi_txn
;

375 
hi_txn
 = 
low_txn
;

376 
low_txn
 = 
tmp
;

378 
tmp
 = 
hi_txn
 - 
low_txn
;

380 i(
tmp
 > (
TXN_MAXIMUM
 - 
TXN_MINIMUM
) / 2)

381 
tmp
 = (
low_txn
 - 
TXN_MINIMUM
+ (
TXN_MAXIMUM
 - 
hi_txn
);

382 
size
 = 
tmp
 / 5;

383 i(
size
 < 100)

384 
size
 = 100;

386 i((
t
 = 
	`__os_mloc
(
dbv
,

387 (
DB_TXNHEAD
+ 
size
 * (
hdp
->
hd
), &headp)) != 0)

388  (
t
);

390 
	`memt
(
hdp
, 0, (
DB_TXNHEAD
+ 
size
 * (hdp->
hd
));

391 
hdp
->
maxid
 = 
hi_txn
;

392 
hdp
->
gi
 = 0;

393 
hdp
->
ns
 = 
size
;

394 
hdp
->
g_loc
 = 8;

395 i((
t
 = 
	`__os_mloc
(
dbv
, 
hdp
->
g_loc
 *

396 (
hdp
->
g_y
[0]), &headp->gen_array)) != 0) {

397 
	`__os_
(
dbv
, 
hdp
);

398  (
t
);

400 
hdp
->
g_y
[0].
gi
 = 0;

401 
hdp
->
g_y
[0].
txn_m
 = 
TXN_MINIMUM
;

402 
hdp
->
g_y
[0].
txn_max
 = 
TXN_MAXIMUM
;

403 i(
unc_l
 !
NULL
) {

404 
hdp
->
unc_l
 = *trunc_lsn;

405 
hdp
->
maxl
 = *
unc_l
;

407 
	`ZERO_LSN
(
hdp
->
unc_l
);

408 
	`ZERO_LSN
(
hdp
->
maxl
);

410 
	`ZERO_LSN
(
hdp
->
ck
);

412 *

 = 
hdp
;

414 
	}
}

416 
	#FIND_GENERATION
(
hp
, 
txnid
, 
g
) do { \

417 
u_t32_t
 
__i
; \

418 
__i
 = 0; __<(
hp
)->
gi
; __i++) \

420 i((
hp
)->
g_y
[
__i
].
txn_m
 < \

421 (
hp
)->
g_y
[
__i
].
txn_max
 ? \

422 ((
txnid
>(
hp
)->
g_y
[
__i
].
txn_m
 && \

423 (
txnid
<(
hp
)->
g_y
[
__i
].
txn_max
) : \

424 ((
txnid
>(
hp
)->
g_y
[
__i
].
txn_m
 || \

425 (
txnid
<(
hp
)->
g_y
[
__i
].
txn_max
)) \

427 
	`DB_ASSERT
(
dbv
, 
__i
 <(
hp
)->
gi
); \

428 
g
 = (
hp
)->
g_y
[
__i
].
gi
; \

429 } 0)

	)

439 
	$__db_txi_add
(
dbv
, 
hp
, 
txnid
, 
us
, 
l
)

440 
DB_ENV
 *
dbv
;

441 
DB_TXNHEAD
 *
hp
;

442 
u_t32_t
 
txnid
, 
us
;

443 
DB_LSN
 *
l
;

445 
DB_TXNLIST
 *
p
;

446 
t
;

448 i((
t
 = 
	`__os_mloc
(
dbv
, (
DB_TXNLIST
), &
p
)) != 0)

449  (
t
);

451 
	`LIST_INSERT_HEAD
(&
hp
->
hd
[
	`DB_TXNLIST_MASK
(hp, 
txnid
)], 
p
, 
lks
);

454 
	`FIND_GENERATION
(
hp
, 
txnid
, 
p
->
u
.
t
.
gi
);

455 
p
->
ty
 = 
TXNLIST_TXNID
;

456 
p
->
u
.
t
.
txnid
 =xnid;

457 
p
->
u
.
t
.
us
 = status;

458 i(
txnid
 > 
hp
->
maxid
)

459 
hp
->
maxid
 = 
txnid
;

460 i(
l
 !
NULL
 && 
	`IS_ZERO_LSN
(
hp
->
maxl
&& 
us
 =
TXN_COMMIT
)

461 
hp
->
maxl
 = *
l
;

463 
	`DB_ASSERT
(
dbv
, 
l
 =
NULL
 ||

464 
us
 !
TXN_COMMIT
 || 
	`LOG_COMPARE
(&
hp
->
maxl
, 
l
) >= 0);

467 
	}
}

476 
	$__db_txi_move
(
dbv
, 
hp
, 
txnid
)

477 
DB_ENV
 *
dbv
;

478 
DB_TXNHEAD
 *
hp
;

479 
u_t32_t
 
txnid
;

481 
DB_TXNLIST
 *
y
;

482 
u_t32_t
 
us
;

484  (
	`__db_txi_fd_
(
dbv
,

485 
hp
, 
TXNLIST_TXNID
, 
txnid
, 
NULL
, &
y
, 1, &
us
));

486 
	}
}

499 
	$__db_txi_ckp
(
dbv
, 
hp
, 
ckp_l
)

500 
DB_ENV
 *
dbv
;

501 
DB_TXNHEAD
 *
hp
;

502 
DB_LSN
 *
ckp_l
;

505 
	`COMPQUIET
(
dbv
, 
NULL
);

507 i(
	`IS_ZERO_LSN
(
hp
->
ck
&& !IS_ZERO_LSN(hp->
maxl
) &&

508 
	`LOG_COMPARE
(&
hp
->
maxl
, 
ckp_l
) >= 0)

509 
hp
->
ck
 = *
ckp_l
;

510 
	}
}

519 
	$__db_txi_d
(
dbv
, 
hp
)

520 
DB_ENV
 *
dbv
;

521 
DB_TXNHEAD
 *
hp
;

523 
u_t32_t
 
i
;

524 
DB_TXNLIST
 *
p
;

526 i(
hp
 =
NULL
)

529 
i
 = 0; i < 
hp
->
ns
; i++)

530 
hp
 !
NULL
 && (
p
 = 
	`LIST_FIRST
(&hp->
hd
[
i
])) != NULL) {

531 
p
->
ty
) {

532 
TXNLIST_LSN
:

533 
	`__os_
(
dbv
, 
p
->
u
.
l
.
l_ack
);

535 
TXNLIST_DELETE
:

536 
TXNLIST_PGNO
:

537 
TXNLIST_TXNID
:

545 
	`LIST_REMOVE
(
p
, 
lks
);

546 
	`__os_
(
dbv
, 
p
);

549 i(
hp
->
g_y
 !
NULL
)

550 
	`__os_
(
dbv
, 
hp
->
g_y
);

551 
	`__os_
(
dbv
, 
hp
);

552 
	}
}

566 
	$__db_txi_fd
(
dbv
, 
hp
, 
txnid
, 
u
)

567 
DB_ENV
 *
dbv
;

568 
DB_TXNHEAD
 *
hp
;

569 
u_t32_t
 
txnid
, *
u
;

571 
DB_TXNLIST
 *
y
;

573 i(
txnid
 == 0)

574  (
DB_NOTFOUND
);

576  (
	`__db_txi_fd_
(
dbv
, 
hp
,

577 
TXNLIST_TXNID
, 
txnid
, 
NULL
, &
y
, 0, 
u
));

578 
	}
}

589 
	$__db_txi_upde
(
dbv
, 
hp
, 
txnid
, 
us
, 
l
, 
t_us
, 
add_ok
)

590 
DB_ENV
 *
dbv
;

591 
DB_TXNHEAD
 *
hp
;

592 
u_t32_t
 
txnid
, 
us
;

593 
DB_LSN
 *
l
;

594 
u_t32_t
 *
t_us
;

595 
add_ok
;

597 
DB_TXNLIST
 *
p
;

598 
t
;

600 i(
txnid
 == 0)

601  (
DB_NOTFOUND
);

603 
t
 = 
	`__db_txi_fd_
(
dbv
,

604 
hp
, 
TXNLIST_TXNID
, 
txnid
, 
NULL
, &
p
, 0, 
t_us
);

606 i(
t
 =
DB_NOTFOUND
 && 
add_ok
) {

607 *
t_us
 = 
us
;

608  (
	`__db_txi_add
(
dbv
, 
hp
, 
txnid
, 
us
, 
l
));

610 i(
t
 != 0)

611  (
t
);

613 i(*
t_us
 =
TXN_IGNORE
)

616 
p
->
u
.
t
.
us
 = status;

618 i(
l
 !
NULL
 && 
	`IS_ZERO_LSN
(
hp
->
maxl
&& 
us
 =
TXN_COMMIT
)

619 
hp
->
maxl
 = *
l
;

621  (
t
);

622 
	}
}

632 
	$__db_txi_fd_
(
dbv
,

633 
hp
, 
ty
, 
txnid
, 
uid
, 
txip
, 
de
, 
u
)

634 
DB_ENV
 *
dbv
;

635 
DB_TXNHEAD
 *
hp
;

636 
db_txi_ty
 
ty
;

637 
u_t32_t
 
txnid
;

638 
u_t8_t
 
uid
[
DB_FILE_ID_LEN
];

639 
DB_TXNLIST
 **
txip
;

640 
de
;

641 
u_t32_t
 *
u
;

643 
__db_hdlk
 *
hd
;

644 
DB_TXNLIST
 *
p
;

645 
u_t32_t
 
gi
, 
hash
;

646 
t
;

648 
t
 = 0;

650 i(
hp
 =
NULL
)

651  (
DB_NOTFOUND
);

653 
ty
) {

654 
TXNLIST_TXNID
:

655 
hash
 = 
txnid
;

656 
	`FIND_GENERATION
(
hp
, 
txnid
, 
gi
);

658 
TXNLIST_PGNO
:

659 
	`memy
(&
hash
, 
uid
, (hash));

660 
gi
 = 0;

662 
TXNLIST_DELETE
:

663 
TXNLIST_LSN
:

665  (
	`__db_nic
(
dbv
, 
EINVAL
));

668 
hd
 = &
hp
->hd[
	`DB_TXNLIST_MASK
(hp, 
hash
)];

669 
	`LIST_FOREACH
(
p
, 
hd
, 
lks
) {

670 i(
p
->
ty
 !=ype)

672 
ty
) {

673 
TXNLIST_TXNID
:

674 i(
p
->
u
.
t
.
txnid
 !=xnid ||

675 
gi
 !
p
->
u
.
t
.generation)

677 *
u
 = 
p
->
u
.
t
.
us
;

680 
TXNLIST_PGNO
:

681 i(
	`memcmp
(
uid
, 
p
->
u
.p.uid, 
DB_FILE_ID_LEN
) != 0)

683 *
u
 = 
TXN_OK
;

685 
TXNLIST_DELETE
:

686 
TXNLIST_LSN
:

688  (
	`__db_nic
(
dbv
, 
EINVAL
));

690 i(
de
 == 1) {

691 
	`LIST_REMOVE
(
p
, 
lks
);

692 
	`__os_
(
dbv
, 
p
);

693 *
txip
 = 
NULL
;

694 } i(
p
 !
	`LIST_FIRST
(
hd
)) {

696 
	`LIST_REMOVE
(
p
, 
lks
);

697 
	`LIST_INSERT_HEAD
(
hd
, 
p
, 
lks
);

698 *
txip
 = 
p
;

700 *
txip
 = 
p
;

701  (
t
);

704  (
DB_NOTFOUND
);

705 
	}
}

715 
	$__db_txi_g
(
dbv
, 
hp
, 

, 
m
, 
max
)

716 
DB_ENV
 *
dbv
;

717 
DB_TXNHEAD
 *
hp
;

718 

;

719 
u_t32_t
 
m
, 
max
;

721 
t
;

735 i(

 < 0) {

736 --
hp
->
gi
;

737 
	`memmove
(
hp
->
g_y
, &hp->gen_array[1],

738 (
hp
->
gi
 + 1* (hp->
g_y
[0]));

740 ++
hp
->
gi
;

741 i(
hp
->
gi
 >hp->
g_loc
) {

742 
hp
->
g_loc
 *= 2;

743 i((
t
 = 
	`__os_loc
(
dbv
, 
hp
->
g_loc
 *

744 (
hp
->
g_y
[0]), &hp->gen_array)) != 0)

745  (
t
);

747 
	`memmove
(&
hp
->
g_y
[1], &hp->gen_array[0],

748 
hp
->
gi
 * (hp->
g_y
[0]));

749 
hp
->
g_y
[0].
gi
 = hp->generation;

750 
hp
->
g_y
[0].
txn_m
 = 
m
;

751 
hp
->
g_y
[0].
txn_max
 = 
max
;

754 
	}
}

763 
	$__db_txi_ladd
(
dbv
, 
hp
, 
lp
)

764 
DB_ENV
 *
dbv
;

765 
DB_TXNHEAD
 *
hp
;

766 
DB_LSN
 *
lp
;

768 
DB_TXNLIST
 *
p
;

769 
t
;

771 i(
	`IS_ZERO_LSN
(*
lp
))

774 
	`LIST_FOREACH
(
p
, &
hp
->
hd
[0], 
lks
)

775 i(
p
->
ty
 =
TXNLIST_LSN
)

778 i(
p
 =
NULL
) {

779 i((
t
 = 
	`__db_txi_l
(
dbv
, 
hp
, 
lp
)) != 0)

780  (
t
);

781  (
DB_SURPRISE_KID
);

784 i(
p
->
u
.
l
.
ack_dx
 =p->u.l.
ack_size
) {

785 
p
->
u
.
l
.
ack_size
 <<= 1;

786 i((
t
 = 
	`__os_loc
(
dbv
, (
DB_LSN
) *

787 
p
->
u
.
l
.
ack_size
, &p->u.l.
l_ack
)) != 0) {

788 
	`__db_txi_d
(
dbv
, 
hp
);

789  (
t
);

792 
p
->
u
.
l
.
l_ack
[p->u.l.
ack_dx
++] = *
lp
;

795 
	}
}

805 
	$__db_txi_lg
(
dbv
, 
hp
, 
lp
, 
ags
)

806 
DB_ENV
 *
dbv
;

807 
DB_TXNHEAD
 *
hp
;

808 
DB_LSN
 *
lp
;

809 
u_t32_t
 
ags
;

811 
DB_TXNLIST
 *
p
;

813 
	`COMPQUIET
(
dbv
, 
NULL
);

814 
	`COMPQUIET
(
ags
, 0);

816 
	`LIST_FOREACH
(
p
, &
hp
->
hd
[0], 
lks
)

817 i(
p
->
ty
 =
TXNLIST_LSN
)

820 i(
p
 =
NULL
 ||->
u
.
l
.
ack_dx
 == 0) {

821 
	`ZERO_LSN
(*
lp
);

825 *
lp
 = 
p
->
u
.
l
.
l_ack
[--p->u.l.
ack_dx
];

828 
	}
}

837 
	$__db_txi_l
(
dbv
, 
hp
, 
lp
)

838 
DB_ENV
 *
dbv
;

839 
DB_TXNHEAD
 *
hp
;

840 
DB_LSN
 *
lp
;

842 
DB_TXNLIST
 *
p
;

843 
t
;

845 
p
 = 
NULL
;

847 i((
t
 = 
	`__os_mloc
(
dbv
, (
DB_TXNLIST
), &
p
)) != 0)

848 
r
;

849 
	`LIST_INSERT_HEAD
(&
hp
->
hd
[0], 
p
, 
lks
);

851 
p
->
ty
 = 
TXNLIST_LSN
;

852 i((
t
 = 
	`__os_mloc
(
dbv
,

853 (
DB_LSN
* 
DB_LSN_STACK_SIZE
, &
p
->
u
.
l
.
l_ack
)) != 0)

854 
r
;

855 
p
->
u
.
l
.
ack_dx
 = 1;

856 
p
->
u
.
l
.
ack_size
 = 
DB_LSN_STACK_SIZE
;

857 
p
->
u
.
l
.
l_ack
[0] = *
lp
;

861 
r
: 
	`__db_txi_d
(
dbv
, 
hp
);

862  (
t
);

863 
	}
}

873 
	$__db_add_limbo
(
dbv
, 
hp
, 
feid
, 
pgno
, 
cou
)

874 
DB_ENV
 *
dbv
;

875 
DB_TXNHEAD
 *
hp
;

876 
t32_t
 
feid
;

877 
db_pgno_t
 
pgno
;

878 
u_t32_t
 
cou
;

880 
DB_LOG
 *
db
;

881 
FNAME
 *
p
;

882 
t
;

884 
db
 = 
dbv
->
lg_hd
;

885 i((
t
 = 
	`__dbg_id_to_ame
(
db
, 
feid
, 0, &
p
)) != 0)

886  (
t
);

889 i((
t
 =

890 
	`__db_txi_pgndd
(
dbv
, 
hp
, 
feid
, 
p
->
ufid
,

891 
	`R_ADDR
(&
db
->
gfo
, 
p
->
me_off
), 
pgno
)) != 0)

892  (
t
);

893 
pgno
++;

894 } --
cou
 != 0);

897 
	}
}

935 
	$__db_do_the_limbo
(
dbv
, 
xn
, 
txn
, 
hp
, 
e
)

936 
DB_ENV
 *
dbv
;

937 
DB_TXN
 *
xn
, *
txn
;

938 
DB_TXNHEAD
 *
hp
;

939 
db_limbo_e
 
e
;

941 
DB_TXNLIST
 *
p
;

942 
u_t32_t
 
h
;

943 
t
;

945 
t
 = 0;

951 
h
 = 0; h < 
hp
->
ns
; h++) {

952 i((
p
 = 
	`LIST_FIRST
(&
hp
->
hd
[
h
])=
NULL
)

954 i(
xn
 !
NULL
) {

955 i((
t
 =

956 
	`__db_limbo_move
(
dbv
, 
xn
, 
txn
, 
p
)) != 0)

957 
r
;

958 } i((
t
 =

959 
	`__db_limbo_buck
(
dbv
, 
txn
, 
p
, 
e
)) != 0)

960 
r
;

963 
r
: i(
t
 != 0) {

964 
	`__db_rx
(
dbv
, "Fatalrror inbort ofnllocation");

965 
t
 = 
	`__db_nic
(
dbv
,et);

968  (
t
);

969 
	}
}

978 
	$__db_lock_move
(
dbv
, 
feid
, 
pgno
, 
mode
, 
xn
, 
txn
)

979 
DB_ENV
 *
dbv
;

980 
u_t8_t
 *
feid
;

981 
db_pgno_t
 
pgno
;

982 
db_lockmode_t
 
mode
;

983 
DB_TXN
 *
xn
, *
txn
;

985 
DBT
 
lock_dbt
;

986 
DB_LOCK
 
lock
;

987 
DB_LOCK_ILOCK
 
lock_obj
;

988 
DB_LOCKREQ
 
q
;

989 
t
;

991 
lock_obj
.
pgno
 =gno;

992 
	`memy
(
lock_obj
.
feid
, feid, 
DB_FILE_ID_LEN
);

993 
lock_obj
.
ty
 = 
DB_PAGE_LOCK
;

995 
	`memt
(&
lock_dbt
, 0, (lock_dbt));

996 
lock_dbt
.
da
 = &
lock_obj
;

997 
lock_dbt
.
size
 = (
lock_obj
);

999 i((
t
 = 
	`__lock_g
(
dbv
,

1000 
txn
->
lock
, 0, &
lock_dbt
, 
mode
, &
lock
)) == 0) {

1001 
	`memt
(&
q
, 0, (req));

1002 
q
.
lock
 =ock;

1003 
q
.

 = 
DB_LOCK_TRADE
;

1004 
t
 = 
	`__lock_vec
(
dbv
, 
xn
->
lock
, 0, &
q
, 1, 
NULL
);

1006  (
t
);

1007 
	}
}

1014 
	$__db_limbo_move
(
dbv
, 
xn
, 
txn
, 
p
)

1015 
DB_ENV
 *
dbv
;

1016 
DB_TXN
 *
xn
, *
txn
;

1017 
DB_TXNLIST
 *
p
;

1019 
t
;

1021 ; 
p
 !
NULL
; = 
	`LIST_NEXT
, 
lks
)) {

1022 i(
p
->
ty
 !
TXNLIST_PGNO
 ||->
u
.
p
.
locked
 == 1)

1024 i((
t
 = 
	`__db_lock_move
(
dbv
, 
p
->
u
.
p
.
uid
,

1025 
PGNO_BASE_MD
, 
DB_LOCK_WRITE
, 
xn
, 
txn
)) != 0)

1026  (
t
);

1027 
p
->
u
.
p
.
locked
 = 1;

1031 
	}
}

1039 
	#T_RESTORED
(
txn
(xn!
NULL
 && 
	`F_ISSET
xn, 
TXN_RESTORED
))

	)

1041 
	$__db_limbo_buck
(
dbv
, 
txn
, 
p
, 
e
)

1042 
DB_ENV
 *
dbv
;

1043 
DB_TXN
 *
txn
;

1044 
DB_TXNLIST
 *
p
;

1045 
db_limbo_e
 
e
;

1047 
DB
 *
dbp
;

1048 
DB_MPOOLFILE
 *
mpf
;

1049 
DBMETA
 *
ma
;

1050 
DB_TXN
 *
xn
, *
t
;

1051 
FNAME
 *
ame
;

1052 
db_pgno_t
 
ϡ_pgno
, 
pgno
;

1053 
dbp_d
, 
_y
, 
t
, 
t_t
;

1055 
xn
 = 
NULL
;

1056 
_y
 = 0;

1057 
ma
 = 
NULL
;

1058 
mpf
 = 
NULL
;

1059 
t
 = 0;

1060 ; 
p
 !
NULL
; = 
	`LIST_NEXT
, 
lks
)) {

1061 i(
p
->
ty
 !
TXNLIST_PGNO
)

1063 
y
: 
dbp_d
 = 0;

1069 i(
e
 =
LIMBO_PREPARE
)

1070 
xn
 = 
txn
;

1071 i(!
_y
 && 
e
 !
LIMBO_RECOVER
 &&

1072 
e
 !
LIMBO_TIMESTAMP
 && !
	`T_RESTORED
(
txn
) &&

1073 (
t
 = 
	`__txn_comn_beg
(
dbv
, &
xn
)) != 0)

1074  (
t
);

1080 
t
 = 
xn
 =
NULL
 ? 
txn
 : ctxn;

1083 
t
 = 
	`__dbg_id_to_db
(
dbv
, 
t
, &
dbp
, 
p
->
u
.
p
.
feid
, 0);

1089 i(
t
 =
DB_DELETED
 || =
ENOENT
 ||

1090 ((
t
 == 0 &&

1091 
	`memcmp
(
p
->
u
.
p
.
uid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
) != 0))) {

1092 i((
t
 = 
	`__dbg_fid_to_ame
(

1093 
dbv
->
lg_hd
, 
p
->
u
.
p
.
uid
, 0, &
ame
)) == 0)

1094 
t
 = 
	`__dbg_id_to_db
(

1095 
dbv
, 
t
, &
dbp
, 
ame
->
id
, 0);

1101 i(
t
 =
DB_DELETED
 ||

1102 (
t
 =0 && 
	`F_ISSET
(
dbp
, 
DB_AM_DISCARD
)))

1103 
xt
;

1105 i(
t
 != 0) {

1106 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

1107 
r
;

1113 
	`F_SET
(
dbp
, 
DB_AM_COMPENSATE
);

1114 
dbp_d
 = 1;

1117 
t
 = 
	`__db_ݒ
(
dbp
, 
t
, 
p
->
u
.
p
.
ame
, 
NULL
,

1118 
DB_UNKNOWN
, 
DB_ODDFILESIZE
, 
	`__db_omode
(
OWNER_RW
),

1119 
PGNO_BASE_MD
);

1120 i(
t
 =
ENOENT
)

1121 
xt
;

1128 i(
	`memcmp
(
p
->
u
.
p
.
uid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
) != 0)

1129 
xt
;

1131 
mpf
 = 
dbp
->mpf;

1132 
ϡ_pgno
 = 
PGNO_INVALID
;

1134 i(
ma
 =
NULL
 &&

1135 (
xn
 =
NULL
 || 
e
 =
LIMBO_COMPENSATE
)) {

1136 
pgno
 = 
PGNO_BASE_MD
;

1137 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
txn
,

1138 (
e
 !
LIMBO_PREPARE
? 
DB_MPOOL_DIRTY
 : 0,

1139 &
ma
)) != 0)

1140 
r
;

1141 
ϡ_pgno
 = 
ma
->

;

1144 i(
e
 =
LIMBO_PREPARE
) {

1145 i((
t
 = 
	`__db_limbo_e
(
dbp
, 
xn
, 
p
)) != 0)

1146 
r
;

1148 
t
 = 
	`__db_limbo_fix
(
dbp
,

1149 
xn
, 
p
, &
ϡ_pgno
, 
ma
, 
e
);

1157 i(
t
 != 0) {

1158 i(
t
 =
DB_RUNRECOVERY
 || 
xn
 =
NULL
)

1159 
r
;

1160 
_y
 = 1;

1161 i((
t
 = 
	`__txn_abt
(
xn
)) != 0)

1162 
r
;

1163 
xn
 = 
NULL
;

1164 
y
;

1167 i(
e
 =
LIMBO_PREPARE
)

1168 
xn
 = 
NULL
;

1170 i(
xn
 !
NULL
) {

1176 i(
e
 =
LIMBO_COMPENSATE
)

1177 
	`F_CLR
(
dbv
->
lg_hd
, 
DBLOG_RECOVER
);

1178 
t
 = 
	`__txn_comm
(
xn
, 
DB_TXN_NOSYNC
);

1179 
xn
 = 
NULL
;

1180 i(
e
 =
LIMBO_COMPENSATE
)

1181 
	`F_SET
(
dbv
->
lg_hd
, 
DBLOG_RECOVER
);

1182 i(
t
 != 0)

1183 
y
;

1192 i(
ϡ_pgno
 =
ma
->

) {

1194 i((
t
 =

1195 
	`__memp_ut
(
mpf
, 
ma
, 
DB_PRIORITY_UNCHANGED
)) != 0)

1196 
r
;

1197 
ma
 = 
NULL
;

1206 i(!
	`IS_RECOVERING
(
dbv
&& !
	`T_RESTORED
(
txn
))

1207 
	`__db_rx
(
dbv
, "Flushing freeisto disk");

1208 i((
t
 =

1209 
	`__memp_ut
(
mpf
, 
ma
, 
DB_PRIORITY_UNCHANGED
)) != 0)

1210 
r
;

1211 
ma
 = 
NULL
;

1221 i((
t
 = 
	`__db_sync
(
dbp
)) == 0) {

1222 
pgno
 = 
PGNO_BASE_MD
;

1223 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
txn
,

1224 
DB_MPOOL_DIRTY
, &
ma
)) != 0)

1225 
r
;

1226 
ma
->

 = 
ϡ_pgno
;

1227 i((
t
 = 
	`__memp_ut
(
mpf
,

1228 
ma
, 
DB_PRIORITY_UNCHANGED
)) != 0)

1229 
r
;

1230 
ma
 = 
NULL
;

1232 
	`__db_r
(
dbv
, 
t
, "%s", 
dbp
->
ame
);

1233 
	`__db_rx
(
dbv
, "%s: %%s", 
dbp
->
ame
,

1236 
t
 = 0;

1240 
xt
:

1245 i(
xn
 !
NULL
 &&

1246 (
t_t
 = 
	`__txn_abt
(
xn
)!0 && 
t
 == 0)

1247 
t
 = 
t_t
;

1249 i(
dbp_d
 &&

1250 (
t_t
 = 
	`__db_o
(
dbp
, 
txn
, 
DB_NOSYNC
)!0 && 
t
 == 0)

1251 
t
 = 
t_t
;

1252 
dbp
 = 
NULL
;

1253 i(
e
 !
LIMBO_PREPARE
 && s !
LIMBO_TIMESTAMP
) {

1254 
	`__os_
(
dbv
, 
p
->
u
.
p
.
ame
);

1255 
	`__os_
(
dbv
, 
p
->
u
.
p
.
pgno_y
);

1257 i(
t
 =
ENOENT
)

1258 
t
 = 0;

1259 i(
t
 != 0)

1260 
r
;

1263 
r
: i(
ma
 !
NULL
)

1264 ()
	`__memp_ut
(
mpf
, 
ma
, 
DB_PRIORITY_UNCHANGED
);

1265  (
t
);

1266 
	}
}

1274 
	$__db_limbo_fix
(
dbp
, 
xn
, 
p
, 
ϡp
, 
ma
, 
e
)

1275 
DB
 *
dbp
;

1276 
DB_TXN
 *
xn
;

1277 
DB_TXNLIST
 *
p
;

1278 
db_pgno_t
 *
ϡp
;

1279 
DBMETA
 *
ma
;

1280 
db_limbo_e
 
e
;

1282 
DBC
 *
dbc
;

1283 
DBT
 
ldbt
;

1284 
DB_MPOOLFILE
 *
mpf
;

1285 
PAGE
 *
p
, *
g
;

1286 
db_pgno_t
 
xt
, 
pgno
;

1287 
u_t32_t
 
i
;

1288 
t
, 
t_t
;

1295 
dbc
 = 
NULL
;

1296 
mpf
 = 
dbp
->mpf;

1297 
g
 = 
NULL
;

1298 
t
 = 0;

1300 
i
 = 0; i < 
p
->
u
.
p
.
rs
; i++) {

1301 
pgno
 = 
p
->
u
.
p
.
pgno_y
[
i
];

1303 i(
pgno
 =
PGNO_INVALID
)

1306 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
xn
,

1307 
DB_MPOOL_CREATE
 | 
DB_MPOOL_EDIT
, &
g
)) != 0) {

1308 i(
t
 !
ENOSPC
)

1309 
r
;

1313 i(
e
 =
LIMBO_COMPENSATE
 || 
	`IS_ZERO_LSN
(
	`LSN
(
g
))) {

1314 i(
xn
 =
NULL
) {

1320 
xt
 = *
ϡp
;ext != 0; ) {

1321 i(
xt
 =
pgno
)

1323 i((
t
 = 
	`__memp_fg
(
mpf
,

1324 &
xt
, 
xn
, 0, &
p
)) != 0)

1325 
r
;

1326 
xt
 = 
	`NEXT_PGNO
(
p
);

1327 i((
t
 = 
	`__memp_ut
(
mpf
,

1328 
p
, 
DB_PRIORITY_UNCHANGED
)) != 0)

1329 
r
;

1332 i(
xt
 !
pgno
) {

1333 
	`P_INIT
(
g
, 
dbp
->
pgsize
, 
pgno
,

1334 
PGNO_INVALID
, *
ϡp
, 0, 
P_INVALID
);

1336 
	`INIT_LSN
(
	`LSN
(
g
));

1337 *
ϡp
 = 
pgno
;

1339 } i(
e
 =
LIMBO_COMPENSATE
) {

1345 
	`ZERO_LSN
(
g
->
l
);

1346 
	`memt
(&
ldbt
, 0, (ldbt));

1347 
ldbt
.
da
 = 
g
;

1348 
ldbt
.
size
 = 
	`P_OVERHEAD
(
dbp
);

1349 i((
t
 = 
	`__db_pg_w_log
(
dbp
, 
xn
,

1350 &
	`LSN
(
ma
), 0, 
g
->
pgno
,

1351 &
	`LSN
(
ma
), 
PGNO_BASE_MD
,

1352 &
ldbt
, 
g
->
xt_pgno
)) != 0)

1353 
r
;

1355 i(
dbc
 =
NULL
 && (
t
 =

1356 
	`__db_curs
(
dbp
, 
xn
, &
dbc
, 0)) != 0)

1357 
r
;

1364 
	`F_SET
(
dbc
, 
DBC_DONTLOCK
);

1372 
	`F_CLR
(
dbc
, 
DBC_RECOVER
);

1374 
t
 = 
	`__db_
(
dbc
, 
g
);

1375 
g
 = 
NULL
;

1386 i(
t
 != 0) {

1388 ()
	`__dbc_o
(
dbc
);

1389 
dbc
 = 
NULL
;

1390 
r
;

1395 
p
->
u
.
p
.
pgno_y
[
i
] = 
PGNO_INVALID
;

1397 i(
g
 !
NULL
) {

1398 
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
DB_PRIORITY_UNCHANGED
);

1399 
g
 = 
NULL
;

1401 i(
t
 != 0)

1402 
r
;

1405 
r
: i(
g
 !
NULL
 &&

1406 (
t_t
 = 
	`__memp_ut
(
mpf
, 
g
, 
DB_PRIORITY_UNCHANGED
)) != 0 &&

1407 
t
 == 0)

1408 
t
 = 
t_t
;

1409 i(
dbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc)!0 && 
t
 == 0)

1410 
t
 = 
t_t
;

1411  (
t
);

1412 
	}
}

1415 
	$__db_limbo_e
(
dbp
, 
txn
, 
p
)

1416 
DB
 *
dbp
;

1417 
DB_TXN
 *
txn
;

1418 
DB_TXNLIST
 *
p
;

1420 
DB_LSN
 
l
;

1421 
DB_MPOOLFILE
 *
mpf
;

1422 
PAGE
 *
g
;

1423 
db_pgno_t
 
pgno
;

1424 
u_t32_t
 
i
;

1425 
t
, 
t_t
;

1431 
g
 = 
NULL
;

1432 
t
 = 0;

1433 
mpf
 = 
dbp
->mpf;

1435 
i
 = 0; i < 
p
->
u
.
p
.
rs
; i++) {

1436 
pgno
 = 
p
->
u
.
p
.
pgno_y
[
i
];

1438 i((
t
 = 
	`__memp_fg
(
mpf
,

1439 &
pgno
, 
txn
, 
DB_MPOOL_CREATE
, &
g
)) != 0) {

1440 i(
t
 !
ENOSPC
)

1441  (
t
);

1445 i(
	`IS_ZERO_LSN
(
	`LSN
(
g
)))

1446 
t
 = 
	`__db_pg_e_log
(
dbp
, 
txn
, &
l
, 0, 
pgno
);

1448 i((
t_t
 = 
	`__memp_ut
(
mpf
,

1449 
g
, 
DB_PRIORITY_UNCHANGED
)!0 && 
t
 == 0)

1450 
t
 = 
t_t
;

1452 i(
t
 != 0)

1453  (
t
);

1457 
	}
}

1459 
	#DB_TXNLIST_MAX_PGNO
 8

	)

1467 
	$__db_txi_pgndd
(
dbv
, 
hp
, 
feid
, 
uid
, 
ame
, 
pgno
)

1468 
DB_ENV
 *
dbv
;

1469 
DB_TXNHEAD
 *
hp
;

1470 
t32_t
 
feid
;

1471 
u_t8_t
 
uid
[
DB_FILE_ID_LEN
];

1472 *
ame
;

1473 
db_pgno_t
 
pgno
;

1475 
DB_TXNLIST
 *
p
;

1476 
size_t
 
n
;

1477 
u_t32_t
 
hash
, 
us
;

1478 
t
;

1480 
p
 = 
NULL
;

1482 i((
t
 = 
	`__db_txi_fd_
(
dbv
, 
hp
,

1483 
TXNLIST_PGNO
, 0, 
uid
, &
p
, 0, &
us
)!0 && 
t
 !
DB_NOTFOUND
)

1484 
r
;

1486 i(
t
 =
DB_NOTFOUND
 || 
us
 !
TXN_OK
) {

1487 i((
t
 =

1488 
	`__os_mloc
(
dbv
, (
DB_TXNLIST
), &
p
)) != 0)

1489 
r
;

1490 
	`memy
(&
hash
, 
uid
, (hash));

1491 
	`LIST_INSERT_HEAD
(

1492 &
hp
->
hd
[
	`DB_TXNLIST_MASK
(hp, 
hash
)], 
p
, 
lks
);

1493 
	`memy
(
p
->
u
.
p
.
uid
, uid, 
DB_FILE_ID_LEN
);

1495 
n
 = 
	`
(
ame
) + 1;

1496 i((
t
 = 
	`__os_mloc
(
dbv
, 
n
, &
p
->
u
.
p
.
ame
)) != 0)

1497 
r
;

1498 
	`memy
(
p
->
u
.
p
.
ame
, fme, 
n
);

1500 
p
->
u
.
p
.
maxy
 = 0;

1501 
p
->
u
.
p
.
locked
 = 0;

1502 
p
->
ty
 = 
TXNLIST_PGNO
;

1503 i((
t
 = 
	`__os_mloc
(
dbv
,

1504 8 * (
db_pgno_t
), &
p
->
u
.
p
.
pgno_y
)) != 0)

1505 
r
;

1506 
p
->
u
.
p
.
maxy
 = 
DB_TXNLIST_MAX_PGNO
;

1507 
p
->
u
.
p
.
rs
 = 0;

1508 } i(
p
->
u
.
p
.
rs
 =p->u.p.
maxy
) {

1509 
p
->
u
.
p
.
maxy
 <<= 1;

1510 i((
t
 = 
	`__os_loc
(
dbv
, 
p
->
u
.
p
.
maxy
 *

1511 (
db_pgno_t
), &
p
->
u
.
p
.
pgno_y
)) != 0)

1512 
r
;

1515 
p
->
u
.
p
.
pgno_y
[p->u.p.
rs
++] = 
pgno
;

1517 
p
->
u
.
p
.
feid
 = fileid;

1521 
r
:  (
t
);

1522 
	}
}

1524 #ifde
DEBUG


1532 
	$__db_txi_t
(
hp
)

1533 
DB_TXNHEAD
 *
hp
;

1535 
DB_TXNLIST
 *
p
;

1536 
u_t32_t
 
i
;

1537 *
txy
;

1539 
	`tf
("Maxid: %lu Generation: %lu\n",

1540 (
u_lg
)
hp
->
maxid
, (u_lg)hp->
gi
);

1541 
i
 = 0; i < 
hp
->
ns
; i++)

1542 
	`LIST_FOREACH
(
p
, &
hp
->
hd
[
i
], 
lks
) {

1543 i(
p
->
ty
 !
TXNLIST_TXNID
) {

1544 
	`tf
("Uecognizedy: %d\n", 
p
->
ty
);

1547 
p
->
u
.
t
.
us
) {

1548 
TXN_OK
:

1549 
txy
 = "OK";

1551 
TXN_COMMIT
:

1552 
txy
 = "commit";

1554 
TXN_PREPARE
:

1555 
txy
 = "prepare";

1557 
TXN_ABORT
:

1558 
txy
 = "abort";

1560 
TXN_IGNORE
:

1561 
txy
 = "ignore";

1563 
TXN_EXPECTED
:

1564 
txy
 = "expected";

1566 
TXN_UNEXPECTED
:

1567 
txy
 = "unexpected";

1570 
txy
 = "UNKNOWN";

1573 
	`tf
("TXNID: %lx(%lu): %s\n",

1574 (
u_lg
)
p
->
u
.
t
.
txnid
,

1575 (
u_lg
)
p
->
u
.
t
.
gi
, 
txy
);

1577 
	}
}

	@../db/db_dup.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/mp.h
"

14 
	~"dbc/db_am.h
"

23 
	$__db_dem
(
dbc
, 
g
, 
dx
, 
nbys
)

24 
DBC
 *
dbc
;

25 
PAGE
 *
g
;

26 
u_t32_t
 
dx
, 
nbys
;

28 
DB
 *
dbp
;

29 
DBT
 
ldbt
;

30 
db_dx_t
 
t
, *
p
, 
offt
;

31 
t
;

32 
u_t8_t
 *
om
;

34 
dbp
 = 
dbc
->dbp;

35 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`IS_DIRTY
(
g
));

36 
	`DB_ASSERT
(
dbp
->
dbv
, 
dx
 < 
	`NUM_ENT
(
g
));

38 i(
	`DBC_LOGGING
(
dbc
)) {

39 
ldbt
.
da
 = 
	`P_ENTRY
(
dbp
, 
g
, 
dx
);

40 
ldbt
.
size
 = 
nbys
;

41 i((
t
 = 
	`__db_addm_log
(
dbp
, 
dbc
->
txn
,

42 &
	`LSN
(
g
), 0, 
DB_REM_DUP
, 
	`PGNO
(pagep),

43 (
u_t32_t
)
dx
, 
nbys
, &
ldbt
, 
NULL
, &
	`LSN
(
g
))) != 0)

44  (
t
);

46 
	`LSN_NOT_LOGGED
(
	`LSN
(
g
));

52 i(
	`NUM_ENT
(
g
) == 1) {

53 
	`NUM_ENT
(
g
) = 0;

54 
	`HOFFSET
(
g

dbp
->
pgsize
;

58 
p
 = 
	`P_INP
(
dbp
, 
g
);

63 
om
 = (
u_t8_t
 *)
g
 + 
	`HOFFSET
(pagep);

64 
	`DB_ASSERT
(
dbp
->
dbv
, 
p
[
dx
] >
	`HOFFSET
(
g
));

65 
	`memmove
(
om
 + 
nbys
, from, 
p
[
dx
] - 
	`HOFFSET
(
g
));

66 
	`HOFFSET
(
g
+
nbys
;

69 
offt
 = 
p
[
dx
];

70 
t
 = 0; c < 
	`NUM_ENT
(
g
); ++cnt)

71 i(
p
[
t
] < 
offt
)

72 
p
[
t
] +
nbys
;

75 --
	`NUM_ENT
(
g
);

76 i(
dx
 !
	`NUM_ENT
(
g
))

77 
	`memmove
(&
p
[
dx
], &inp[indx + 1],

78 (
db_dx_t
* (
	`NUM_ENT
(
g
- 
dx
));

81 
	}
}

91 
	$__db_pem
(
dbc
, 
g
, 
dx
, 
nbys
, 
hdr
, 
da
)

92 
DBC
 *
dbc
;

93 
PAGE
 *
g
;

94 
u_t32_t
 
dx
;

95 
u_t32_t
 
nbys
;

96 
DBT
 *
hdr
, *
da
;

98 
DB
 *
dbp
;

99 
BKEYDATA
 
bk
;

100 
DBT
 
thdr
;

101 
db_dx_t
 *
p
;

102 
t
;

103 
u_t8_t
 *
p
;

105 
dbp
 = 
dbc
->dbp;

106 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`IS_DIRTY
(
g
));

108 i(
nbys
 > 
	`P_FREESPACE
(
dbp
, 
g
)) {

109 
	`DB_ASSERT
(
dbp
->
dbv
, 
nbys
 <
	`P_FREESPACE
(dbp, 
g
));

110  (
EINVAL
);

129 i(
	`DBC_LOGGING
(
dbc
)) {

130 i((
t
 = 
	`__db_addm_log
(
dbp
, 
dbc
->
txn
,

131 &
	`LSN
(
g
), 0, 
DB_ADD_DUP
, 
	`PGNO
(pagep),

132 (
u_t32_t
)
dx
, 
nbys
, 
hdr
, 
da
, &
	`LSN
(
g
))) != 0)

133  (
t
);

135 
	`LSN_NOT_LOGGED
(
	`LSN
(
g
));

137 i(
hdr
 =
NULL
) {

138 
	`B_TSET
(
bk
.
ty
, 
B_KEYDATA
);

139 
bk
.
n
 = 
da
 =
NULL
 ? 0 : da->
size
;

141 
thdr
.
da
 = &
bk
;

142 
thdr
.
size
 = 
	`SSZA
(
BKEYDATA
, 
da
);

143 
hdr
 = &
thdr
;

145 
p
 = 
	`P_INP
(
dbp
, 
g
);

148 i(
dx
 !
	`NUM_ENT
(
g
))

149 
	`memmove
(&
p
[
dx
 + 1], &inp[indx],

150 (
db_dx_t
* (
	`NUM_ENT
(
g
- 
dx
));

151 
	`HOFFSET
(
g
-
nbys
;

152 
p
[
dx
] = 
	`HOFFSET
(
g
);

153 ++
	`NUM_ENT
(
g
);

155 
p
 = 
	`P_ENTRY
(
dbp
, 
g
, 
dx
);

156 
	`memy
(
p
, 
hdr
->
da
, hdr->
size
);

157 i(
da
 !
NULL
)

158 
	`memy
(
p
 + 
hdr
->
size
, 
da
->data, data->size);

161 
	}
}

	@../db/db_iface.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 #ide
HAVE_HASH


15 
	~"dbc/hash.h
"

17 #ide
HAVE_QUEUE


18 
	~"dbc/qam.h
"

20 
	~"dbc/lock.h
"

21 
	~"dbc/log.h
"

22 
	~"dbc/mp.h
"

23 
	~"dbc/txn.h
"

25 
__db_assoc_g
 
__P
((
DB
 *, DB *,

26 (*)(
DB
 *, cڡ 
DBT
 *, cڡ DBT *, DBT *), 
u_t32_t
));

27 
__dbc_d_g
 
	`__P
((
DBC
 *, 
u_t32_t
));

28 
__dbc_g_g
 
	`__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

29 
__dbc_pg_g
 
	`__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
));

30 
__dbc_put_g
 
	`__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

31 
__db_curv
 
	`__P
((cڡ 
DB_ENV
 *));

32 
__db_curs_g
 
	`__P
((
DB
 *, 
u_t32_t
));

33 
__db_d_g
 
	`__P
((
DB
 *, 
DBT
 *, 
u_t32_t
));

34 
__db_g_g
 
	`__P
((cڡ 
DB
 *, 
DBT
 *, DBT *, 
u_t32_t
));

35 
__db_jo_g
 
	`__P
((
DB
 *, 
DBC
 **, 
u_t32_t
));

36 
__db_ݒ_g
 
	`__P
((
DB
 *,

37 
DB_TXN
 *, cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
));

38 
__db_pg_g
 
	`__P
((
DB
 *, 
DBT
 *, 
u_t32_t
));

39 
__db_put_g
 
	`__P
((
DB
 *, 
DBT
 *, DBT *, 
u_t32_t
));

40 
__dbt_
 
	`__P
((cڡ 
DB
 *, cڡ *, cڡ 
DBT
 *, ));

70 
	$__db_assoc_
(
dbp
, 
txn
, 
sdbp
, 
back
, 
ags
)

71 
DB
 *
dbp
, *
sdbp
;

72 
DB_TXN
 *
txn
;

73 (*
back

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *, DBT *));

74 
u_t32_t
 
ags
;

76 
DBC
 *
sdbc
;

77 
DB_ENV
 *
dbv
;

78 
DB_THREAD_INFO
 *

;

79 
hd_check
, 
t
, 
t_t
, 
txn_lol
;

81 
dbv
 = 
dbp
->dbenv;

82 
txn_lol
 = 0;

84 
	`PANIC_CHECK
(
dbv
);

85 
	`STRIP_AUTO_COMMIT
(
ags
);

87 
	`ENV_ENTER
(
dbv
, 

);

90 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

91 i(
hd_check
 &&

92 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

93 
hd_check
 = 0;

94 
r
;

102 i(
	`TAILQ_FIRST
(&
sdbp
->
aive_queue
!
NULL
 ||

103 
	`TAILQ_FIRST
(&
sdbp
->
jo_queue
!
NULL
) {

104 
	`__db_rx
(
dbv
,

106 
t
 = 
EINVAL
;

107 
r
;

110 i((
t
 = 
	`__db_assoc_g
(
dbp
, 
sdbp
, 
back
, 
ags
)) != 0)

111 
r
;

118 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

119 i((
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

120 
r
;

121 
txn_lol
 = 1;

125 i((
t
 = 
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
, 0)) != 0)

126 
r
;

128 (
sdbc
 = 
	`TAILQ_FIRST
(&
sdbp
->
_queue
)!
NULL
)

129 i((
t
 = 
	`__dbc_deroy
(
sdbc
)) != 0)

130 
r
;

132 
t
 = 
	`__db_assoc
(
dbp
, 
txn
, 
sdbp
, 
back
, 
ags
);

134 
r
: i(
txn_lol
 &&

135 (
t_t
 = 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 0, 
t
)) &&et == 0)

136 
t
 = 
t_t
;

139 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

140 
t
 = 
t_t
;

141 
	`ENV_LEAVE
(
dbv
, 

);

142  (
t
);

143 
	}
}

150 
	$__db_assoc_g
(
dbp
, 
sdbp
, 
back
, 
ags
)

151 
DB
 *
dbp
, *
sdbp
;

152 (*
back

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *, DBT *));

153 
u_t32_t
 
ags
;

155 
DB_ENV
 *
dbv
;

156 
t
;

158 
dbv
 = 
dbp
->dbenv;

160 i(
	`F_ISSET
(
sdbp
, 
DB_AM_SECONDARY
)) {

161 
	`__db_rx
(
dbv
,

163  (
EINVAL
);

165 i(
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
)) {

166 
	`__db_rx
(
dbv
,

168  (
EINVAL
);

170 i(
	`F_ISSET
(
dbp
, 
DB_AM_DUP
)) {

171 
	`__db_rx
(
dbv
,

173  (
EINVAL
);

175 i(
	`F_ISSET
(
dbp
, 
DB_AM_RENUMBER
)) {

176 
	`__db_rx
(
dbv
,

178  (
EINVAL
);

188 i(
dbp
->
dbv
 !
sdbp
->dbenv &&

189 (!
	`F_ISSET
(
dbp
->
dbv
, 
DB_ENV_DBLOCAL
) ||

190 !
	`F_ISSET
(
sdbp
->
dbv
, 
DB_ENV_DBLOCAL
))) {

191 
	`__db_rx
(
dbv
,

193  (
EINVAL
);

195 i((
	`DB_IS_THREADED
(
dbp
&& !DB_IS_THREADED(
sdbp
)) ||

196 (!
	`DB_IS_THREADED
(
dbp
&& DB_IS_THREADED(
sdbp
))) {

197 
	`__db_rx
(
dbv
,

199  (
EINVAL
);

201 i(
back
 =
NULL
 &&

202 (!
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
|| !F_ISSET(
sdbp
, DB_AM_RDONLY))) {

203 
	`__db_rx
(
dbv
,

205  (
EINVAL
);

208 i((
t
 = 
	`__db_fchk
(
dbv
, "DB->assoc", 
ags
, 
DB_CREATE
 |

209 
DB_IMMUTABLE_KEY
)) != 0)

210  (
t
);

213 
	}
}

222 
	$__db_o_
(
dbp
, 
ags
)

223 
DB
 *
dbp
;

224 
u_t32_t
 
ags
;

226 
DB_ENV
 *
dbv
;

227 
DB_THREAD_INFO
 *

;

228 
hd_check
, 
t
, 
t_t
;

230 
dbv
 = 
dbp
->dbenv;

231 
t
 = 0;

233 
	`PANIC_CHECK
(
dbv
);

242 i(
ags
 !0 && fg!
DB_NOSYNC
)

243 
t
 = 
	`__db_
(
dbv
, "DB->close", 0);

245 
	`ENV_ENTER
(
dbv
, 

);

248 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

249 i(
hd_check
 && (
t_t
 = 
	`__db_p_r
(
dbp
, 0, 0, 0)) != 0) {

250 
hd_check
 = 0;

251 i(
t
 == 0)

252 
t
 = 
t_t
;

255 i((
t_t
 = 
	`__db_o
(
dbp
, 
NULL
, 
ags
)!0 && 
t
 == 0)

256 
t
 = 
t_t
;

259 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

260 
t
 = 
t_t
;

262 
	`ENV_LEAVE
(
dbv
, 

);

263  (
t
);

264 
	}
}

273 
	$__db_curs_
(
dbp
, 
txn
, 
db
, 
ags
)

274 
DB
 *
dbp
;

275 
DB_TXN
 *
txn
;

276 
DBC
 **
db
;

277 
u_t32_t
 
ags
;

279 
DB_ENV
 *
dbv
;

280 
DB_THREAD_INFO
 *

;

281 
hd_check
, 
t
;

283 
dbv
 = 
dbp
->dbenv;

285 
	`PANIC_CHECK
(
dbv
);

286 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->cursor");

288 
	`ENV_ENTER
(
dbv
, 

);

291 i(
txn
 =
NULL
) {

292 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
) ? 1 : 0;

293 i(
hd_check
 && (
t
 = 
	`___p_r
(
dbv
)) != 0) {

294 
hd_check
 = 0;

295 
r
;

298 
hd_check
 = 0;

299 i((
t
 = 
	`__db_curs_g
(
dbp
, 
ags
)) != 0)

300 
r
;

309 i((
t
 = 
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
, 1)) != 0)

310 
r
;

312 
t
 = 
	`__db_curs
(
dbp
, 
txn
, 
db
, 
ags
);

314 
r
:

315 i(
t
 !0 && 
hd_check
)

316 ()
	`___p_ex
(
dbv
);

318 
	`ENV_LEAVE
(
dbv
, 

);

319  (
t
);

320 
	}
}

329 
	$__db_curs
(
dbp
, 
txn
, 
db
, 
ags
)

330 
DB
 *
dbp
;

331 
DB_TXN
 *
txn
;

332 
DBC
 **
db
;

333 
u_t32_t
 
ags
;

335 
DB_ENV
 *
dbv
;

336 
DBC
 *
dbc
;

337 
db_lockmode_t
 
mode
;

338 
u_t32_t
 

;

339 
t
;

341 
dbv
 = 
dbp
->dbenv;

343 i(
	`MULTIVERSION
(
dbp
&& 
txn
 =
NULL
 && (
	`LF_ISSET
(
DB_TXN_SNAPSHOT
) ||

344 
	`F_ISSET
(
dbv
, 
DB_ENV_TXN_SNAPSHOT
))) {

345 i((
t
 =

346 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 
DB_TXN_SNAPSHOT
)) != 0)

347  (
t
);

348 
	`F_SET
(
txn
, 
TXN_PRIVATE
);

351 i((
t
 = 
	`__db_curs_t
(
dbp
,

352 
txn
, 
dbp
->
ty
, 
PGNO_INVALID
, 0, 
DB_LOCK_INVALIDID
, &
dbc
)) != 0)

353  (
t
);

359 i(
	`CDB_LOCKING
(
dbv
)) {

360 

 = 
	`LF_ISSET
(
DB_OPFLAGS_MASK
);

361 
mode
 = (

 =
DB_WRITELOCK
? 
DB_LOCK_WRITE
 :

362 ((

 =
DB_WRITECURSOR
 || 
txn
 !
NULL
? 
DB_LOCK_IWRITE
 :

363 
DB_LOCK_READ
);

364 i((
t
 = 
	`__lock_g
(
dbv
, 
dbc
->
lock
, 0,

365 &
dbc
->
lock_dbt
, 
mode
, &dbc->
mylock
)) != 0)

366 
r
;

367 i(

 =
DB_WRITECURSOR
)

368 
	`F_SET
(
dbc
, 
DBC_WRITECURSOR
);

369 i(

 =
DB_WRITELOCK
)

370 
	`F_SET
(
dbc
, 
DBC_WRITER
);

373 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
) ||

374 (
txn
 !
NULL
 && 
	`F_ISSET
xn, 
TXN_READ_UNCOMMITTED
)))

375 
	`F_SET
(
dbc
, 
DBC_READ_UNCOMMITTED
);

377 i(
	`LF_ISSET
(
DB_READ_COMMITTED
) ||

378 (
txn
 !
NULL
 && 
	`F_ISSET
xn, 
TXN_READ_COMMITTED
)))

379 
	`F_SET
(
dbc
, 
DBC_READ_COMMITTED
);

381 *
db
 = 
dbc
;

384 
r
: ()
	`__dbc_o
(
dbc
);

385  (
t
);

386 
	}
}

393 
	$__db_curs_g
(
dbp
, 
ags
)

394 
DB
 *
dbp
;

395 
u_t32_t
 
ags
;

397 
DB_ENV
 *
dbv
;

399 
dbv
 = 
dbp
->dbenv;

404 i(
	`LF_ISSET
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
)) {

405 i(!
	`LOCKING_ON
(
dbv
))

406  (
	`__db_l
(
dbv
, "DB->cursor"));

409 
	`LF_CLR
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 | 
DB_TXN_SNAPSHOT
);

412 
ags
) {

415 
DB_WRITECURSOR
:

416 i(
	`DB_IS_READONLY
(
dbp
))

417  (
	`__db_rdly
(
dbv
, "DB->cursor"));

418 i(!
	`CDB_LOCKING
(
dbv
))

419  (
	`__db_
(
dbv
, "DB->cursor", 0));

421 
DB_WRITELOCK
:

422 i(
	`DB_IS_READONLY
(
dbp
))

423  (
	`__db_rdly
(
dbv
, "DB->cursor"));

426  (
	`__db_
(
dbv
, "DB->cursor", 0));

430 
	}
}

439 
	$__db_d_
(
dbp
, 
txn
, 
key
, 
ags
)

440 
DB
 *
dbp
;

441 
DB_TXN
 *
txn
;

442 
DBT
 *
key
;

443 
u_t32_t
 
ags
;

445 
DB_ENV
 *
dbv
;

446 
DB_THREAD_INFO
 *

;

447 
hd_check
, 
t
, 
t_t
, 
txn_lol
;

449 
dbv
 = 
dbp
->dbenv;

450 
txn_lol
 = 0;

452 
	`PANIC_CHECK
(
dbv
);

453 
	`STRIP_AUTO_COMMIT
(
ags
);

454 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->del");

456 #ifde
CONFIG_TEST


457 i(
	`IS_REP_MASTER
(
dbv
))

458 
	`DB_TEST_WAIT
(
dbv
, dbv->
_check
);

460 
	`ENV_ENTER
(
dbv
, 

);

463 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

464 i(
hd_check
 &&

465 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

466 
hd_check
 = 0;

467 
r
;

470 i((
t
 = 
	`__db_d_g
(
dbp
, 
key
, 
ags
)) != 0)

471 
r
;

474 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

475 i((
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

476 
r
;

477 
txn_lol
 = 1;

481 i((
t
 = 
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
, 0)) != 0)

482 
r
;

484 
t
 = 
	`__db_d
(
dbp
, 
txn
, 
key
, 
ags
);

486 
r
: i(
txn_lol
 &&

487 (
t_t
 = 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 0, 
t
)) &&et == 0)

488 
t
 = 
t_t
;

491 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

492 
t
 = 
t_t
;

493 
	`ENV_LEAVE
(
dbv
, 

);

494 
	`__dbt_ur
(
dbv
, 
key
, 
NULL
, NULL);

495  (
t
);

496 
	}
}

503 
	$__db_d_g
(
dbp
, 
key
, 
ags
)

504 
DB
 *
dbp
;

505 
DBT
 *
key
;

506 
u_t32_t
 
ags
;

508 
DB_ENV
 *
dbv
;

509 
t
;

511 
dbv
 = 
dbp
->dbenv;

514 i(
	`DB_IS_READONLY
(
dbp
))

515  (
	`__db_rdly
(
dbv
, "DB->del"));

518 
ags
) {

520 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
key
)) != 0)

521  (
t
);

524  (
	`__db_
(
dbv
, "DB->del", 0));

528 
	}
}

537 
	$__db_exis
(
dbp
, 
txn
, 
key
, 
ags
)

538 
DB
 *
dbp
;

539 
DB_TXN
 *
txn
;

540 
DBT
 *
key
;

541 
u_t32_t
 
ags
;

543 
DBT
 
da
;

544 
t
;

551 i((
t
 = 
	`__db_fchk
(
dbp
->
dbv
, "DB->exis", 
ags
,

552 
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 | 
DB_RMW
)) != 0)

553  (
t
);

559 
	`memt
(&
da
, 0, (data));

560 
da
.
dn
 = 0;

561 
da
.
ags
 = 
DB_DBT_PARTIAL
 | 
DB_DBT_USERMEM
;

563  (
dbp
->
	`g
(dbp, 
txn
, 
key
, &
da
, 
ags
));

564 
	}
}

573 
	$__db_fd_
(
dbp
, 
fdp
)

574 
DB
 *
dbp
;

575 *
fdp
;

577 
DB_ENV
 *
dbv
;

578 
DB_THREAD_INFO
 *

;

579 
DB_FH
 *
fhp
;

580 
hd_check
, 
t
, 
t_t
;

582 
dbv
 = 
dbp
->dbenv;

584 
	`PANIC_CHECK
(
dbv
);

585 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->fd");

587 
	`ENV_ENTER
(
dbv
, 

);

590 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

591 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 0)) != 0)

592 
r
;

604 i((
t
 = 
	`__mp_xxx_fh
(
dbp
->
mpf
, &
fhp
)) == 0) {

605 i(
fhp
 =
NULL
) {

606 *
fdp
 = -1;

607 
	`__db_rx
(
dbv
,

609 
t
 = 
ENOENT
;

611 *
fdp
 = 
fhp
->
fd
;

615 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

616 
t
 = 
t_t
;

618 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

619  (
t
);

620 
	}
}

629 
	$__db_g_
(
dbp
, 
txn
, 
key
, 
da
, 
ags
)

630 
DB
 *
dbp
;

631 
DB_TXN
 *
txn
;

632 
DBT
 *
key
, *
da
;

633 
u_t32_t
 
ags
;

635 
DB_ENV
 *
dbv
;

636 
DB_THREAD_INFO
 *

;

637 
u_t32_t
 
mode
;

638 
hd_check
, 
igne_a
, 
t
, 
t_t
, 
txn_lol
;

640 
dbv
 = 
dbp
->dbenv;

641 
mode
 = 0;

642 
txn_lol
 = 0;

644 
	`PANIC_CHECK
(
dbv
);

645 
	`STRIP_AUTO_COMMIT
(
ags
);

646 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->get");

648 
igne_a
 = 
	`LF_ISSET
(
DB_IGNORE_LEASE
);

649 
	`LF_CLR
(
DB_IGNORE_LEASE
);

651 i((
t
 = 
	`__db_g_g
(
dbp
, 
key
, 
da
, 
ags
)) != 0)

652  (
t
);

654 
	`ENV_ENTER
(
dbv
, 

);

657 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

658 i(
hd_check
 &&

659 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

660 
hd_check
 = 0;

661 
r
;

664 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
))

665 
mode
 = 
DB_READ_UNCOMMITTED
;

666 i((
ags
 & 
DB_OPFLAGS_MASK
=
DB_CONSUME
 ||

667 (
ags
 & 
DB_OPFLAGS_MASK
=
DB_CONSUME_WAIT
) {

668 
mode
 = 
DB_WRITELOCK
;

669 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

670 i((
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

671 
r
;

672 
txn_lol
 = 1;

677 i((
t
 = 
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
,

678 
mode
 =
DB_WRITELOCK
 || 
	`LF_ISSET
(
DB_RMW
) ? 0 : 1)) != 0)

679 
r
;

681 
t
 = 
	`__db_g
(
dbp
, 
txn
, 
key
, 
da
, 
ags
);

685 i(
t
 =0 && 
	`IS_REP_MASTER
(
dbv
&& 
	`IS_USING_LEASES
(dbenv) &&

686 !
igne_a
)

687 
t
 = 
	`__p_a_check
(
dbv
, 1);

689 
r
: i(
txn_lol
 &&

690 (
t_t
 = 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 0, 
t
)) &&et == 0)

691 
t
 = 
t_t
;

694 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

695 
t
 = 
t_t
;

697 
	`ENV_LEAVE
(
dbv
, 

);

698 
	`__dbt_ur
(
dbv
, 
key
, 
NULL
, 
da
);

699  (
t
);

700 
	}
}

709 
	$__db_g
(
dbp
, 
txn
, 
key
, 
da
, 
ags
)

710 
DB
 *
dbp
;

711 
DB_TXN
 *
txn
;

712 
DBT
 *
key
, *
da
;

713 
u_t32_t
 
ags
;

715 
DBC
 *
dbc
;

716 
u_t32_t
 
mode
;

717 
t
, 
t_t
;

719 
mode
 = 0;

720 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
)) {

721 
mode
 = 
DB_READ_UNCOMMITTED
;

722 
	`LF_CLR
(
DB_READ_UNCOMMITTED
);

723 } i(
	`LF_ISSET
(
DB_READ_COMMITTED
)) {

724 
mode
 = 
DB_READ_COMMITTED
;

725 
	`LF_CLR
(
DB_READ_COMMITTED
);

726 } i((
ags
 & 
DB_OPFLAGS_MASK
=
DB_CONSUME
 ||

727 (
ags
 & 
DB_OPFLAGS_MASK
=
DB_CONSUME_WAIT
)

728 
mode
 = 
DB_WRITELOCK
;

730 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 
mode
)) != 0)

731  (
t
);

733 
	`DEBUG_LREAD
(
dbc
, 
txn
, "DB->g", 
key
, 
NULL
, 
ags
);

743 
	`F_SET
(
dbc
, 
DBC_TRANSIENT
);

750 
	`SET_RET_MEM
(
dbc
, 
dbp
);

752 i(
	`LF_ISSET
(~(
DB_RMW
 | 
DB_MULTIPLE
)) == 0)

753 
	`LF_SET
(
DB_SET
);

755 
t
 = 
	`__dbc_g
(
dbc
, 
key
, 
da
, 
ags
);

757 i(
dbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc)!0 && 
t
 == 0)

758 
t
 = 
t_t
;

760  (
t
);

761 
	}
}

768 
	$__db_g_g
(
dbp
, 
key
, 
da
, 
ags
)

769 cڡ 
DB
 *
dbp
;

770 
DBT
 *
key
, *
da
;

771 
u_t32_t
 
ags
;

773 
DB_ENV
 *
dbv
;

774 
check_thad
, 
dty
, 
mui
, 
t
;

776 
dbv
 = 
dbp
->dbenv;

786 
check_thad
 = 
dty
 = 0;

787 i(
	`LF_ISSET
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 | 
DB_RMW
)) {

788 i(!
	`LOCKING_ON
(
dbv
))

789  (
	`__db_l
(
dbv
, "DB->get"));

790 i((
t
 = 
	`__db_fcchk
(
dbv
, "DB->get",

791 
ags
, 
DB_READ_UNCOMMITTED
, 
DB_READ_COMMITTED
)) != 0)

792  (
t
);

793 i(
	`LF_ISSET
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
))

794 
dty
 = 1;

795 
	`LF_CLR
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 | 
DB_RMW
);

798 
mui
 = 0;

799 i(
	`LF_ISSET
(
DB_MULTIPLE
 | 
DB_MULTIPLE_KEY
)) {

800 i(
	`LF_ISSET
(
DB_MULTIPLE_KEY
))

801 
mui_r
;

802 
mui
 = 
	`LF_ISSET
(
DB_MULTIPLE
) ? 1 : 0;

803 
	`LF_CLR
(
DB_MULTIPLE
);

807 
ags
) {

808 
DB_GET_BOTH
:

809 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
da
)) != 0)

810  (
t
);

813 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
key
)) != 0) {

814 
	`__dbt_ur
(
dbv
, 
key
, 
NULL
, 
da
);

815  (
t
);

818 
DB_SET_RECNO
:

819 
check_thad
 = 1;

820 i(!
	`F_ISSET
(
dbp
, 
DB_AM_RECNUM
))

821 
r
;

822 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
key
)) != 0)

823  (
t
);

825 
DB_CONSUME
:

826 
DB_CONSUME_WAIT
:

827 
check_thad
 = 1;

828 i(
dty
) {

829 
	`__db_rx
(
dbv
,

831 
	`LF_ISSET
(
DB_READ_UNCOMMITTED
) ?

833  (
EINVAL
);

835 i(
mui
)

836 
mui_r
:  (
	`__db_
(
dbv
, "DB->get", 1));

837 i(
dbp
->
ty
 =
DB_QUEUE
)

841 
r
:  (
	`__db_
(
dbv
, "DB->get", 0));

850 i((
t
 = 
	`__dbt_
(
dbp
, "key", 
key
, 
check_thad
)) != 0)

851  (
t
);

852 i((
t
 = 
	`__dbt_
(
dbp
, "da", 
da
, 1)) != 0)

853  (
t
);

855 i(
mui
) {

856 i(!
	`F_ISSET
(
da
, 
DB_DBT_USERMEM
)) {

857 
	`__db_rx
(
dbv
,

859  (
EINVAL
);

861 i(
	`F_ISSET
(
key
, 
DB_DBT_PARTIAL
) ||

862 
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
)) {

863 
	`__db_rx
(
dbv
,

865  (
EINVAL
);

867 i(
da
->
un
 < 1024 ||

868 
da
->
un
 < 
dbp
->
pgsize
 || data->ulen % 1024 != 0) {

869 
	`__db_rx
(
dbv
, "%s%s",

872  (
EINVAL
);

877 
	}
}

886 
	$__db_jo_
(
imy
, 
curi
, 
db
, 
ags
)

887 
DB
 *
imy
;

888 
DBC
 **
curi
, **
db
;

889 
u_t32_t
 
ags
;

891 
DB_ENV
 *
dbv
;

892 
DB_THREAD_INFO
 *

;

893 
hd_check
, 
t
, 
t_t
;

895 
dbv
 = 
imy
->dbenv;

897 
	`PANIC_CHECK
(
dbv
);

899 
	`ENV_ENTER
(
dbv
, 

);

902 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

903 i(
hd_check
 && (
t
 =

904 
	`__db_p_r
(
imy
, 1, 0, 
curi
[0]->
txn
 !
NULL
)) != 0) {

905 
hd_check
 = 0;

906 
r
;

909 i((
t
 = 
	`__db_jo_g
(
imy
, 
curi
, 
ags
)) == 0)

910 
t
 = 
	`__db_jo
(
imy
, 
curi
, 
db
, 
ags
);

913 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

914 
t
 = 
t_t
;

916 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

917  (
t
);

918 
	}
}

925 
	$__db_jo_g
(
imy
, 
curi
, 
ags
)

926 
DB
 *
imy
;

927 
DBC
 **
curi
;

928 
u_t32_t
 
ags
;

930 
DB_ENV
 *
dbv
;

931 
DB_TXN
 *
txn
;

932 
i
;

934 
dbv
 = 
imy
->dbenv;

936 
ags
) {

938 
DB_JOIN_NOSORT
:

941  (
	`__db_
(
dbv
, "DB->join", 0));

944 i(
curi
 =
NULL
 || curslist[0] == NULL) {

945 
	`__db_rx
(
dbv
,

947  (
EINVAL
);

950 
txn
 = 
curi
[0]->txn;

951 
i
 = 1; 
curi
[i] !
NULL
; i++)

952 i(
curi
[
i
]->
txn
 !=xn) {

953 
	`__db_rx
(
dbv
,

955  (
EINVAL
);

959 
	}
}

969 
	$__db_key_nge_
(
dbp
, 
txn
, 
key
, 
kr
, 
ags
)

970 
DB
 *
dbp
;

971 
DB_TXN
 *
txn
;

972 
DBT
 *
key
;

973 
DB_KEY_RANGE
 *
kr
;

974 
u_t32_t
 
ags
;

976 
DBC
 *
dbc
;

977 
DB_ENV
 *
dbv
;

978 
DB_THREAD_INFO
 *

;

979 
hd_check
, 
t
, 
t_t
;

981 
dbv
 = 
dbp
->dbenv;

983 
	`PANIC_CHECK
(
dbp
->
dbv
);

984 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->key_range");

991 i(
ags
 != 0)

992  (
	`__db_
(
dbv
, "DB->key_range", 0));

994 
	`ENV_ENTER
(
dbv
, 

);

997 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

998 i(
hd_check
 &&

999 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

1000 
hd_check
 = 0;

1001 
r
;

1005 i((
t
 = 
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
, 1)) != 0)

1006 
r
;

1012 
dbp
->
ty
) {

1013 
DB_BTREE
:

1014 #ide
HAVE_BREW


1015 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
key
)) != 0)

1016 
r
;

1019 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 0)) != 0)

1022 
	`DEBUG_LWRITE
(
dbc
, 
NULL
, "bam_key_range", NULL, NULL, 0);

1024 
t
 = 
	`__bam_key_nge
(
dbc
, 
key
, 
kr
, 
ags
);

1026 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

1027 
t
 = 
t_t
;

1028 
	`__dbt_ur
(
dbv
, 
key
, 
NULL
, NULL);

1031 
	`COMPQUIET
(
dbc
, 
NULL
);

1032 
	`COMPQUIET
(
key
, 
NULL
);

1033 
	`COMPQUIET
(
kr
, 
NULL
);

1036 
DB_HASH
:

1037 
DB_QUEUE
:

1038 
DB_RECNO
:

1039 
t
 = 
	`__dbh_am_chk
(
dbp
, 
DB_OK_BTREE
);

1041 
DB_UNKNOWN
:

1043 
t
 = 
	`__db_unknown_ty
(
dbv
, "DB->key_nge", 
dbp
->
ty
);

1047 
r
:

1048 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

1049 
t
 = 
t_t
;

1051 
	`ENV_LEAVE
(
dbv
, 

);

1052  (
t
);

1053 
	}
}

1063 
	$__db_ݒ_
(
dbp
, 
txn
, 
ame
, 
dme
, 
ty
, 
ags
, 
mode
)

1064 
DB
 *
dbp
;

1065 
DB_TXN
 *
txn
;

1066 cڡ *
ame
, *
dme
;

1067 
DBTYPE
 
ty
;

1068 
u_t32_t
 
ags
;

1069 
mode
;

1071 
DB_ENV
 *
dbv
;

1072 
DB_THREAD_INFO
 *

;

1073 
hd_check
, 
nosync
, 
move_me
, 
t
, 
t_t
, 
txn_lol
;

1075 
dbv
 = 
dbp
->dbenv;

1076 
nosync
 = 1;

1077 
move_me
 = 
txn_lol
 = 0;

1078 
hd_check
 = 0;

1080 
	`PANIC_CHECK
(
dbv
);

1082 
	`ENV_ENTER
(
dbv
, 

);

1089 i((
ame
 !
NULL
 &&

1090 (
t
 = 
	`__os_rdup
(
dbv
, 
ame
, &
dbp
->fname)) != 0))

1091 
r
;

1092 i((
dme
 !
NULL
 &&

1093 (
t
 = 
	`__os_rdup
(
dbv
, 
dme
, &
dbp
->dname)) != 0))

1094 
r
;

1095 
dbp
->
ݒ_ags
 = 
ags
;

1098 
dbp
->
ig_ags
 = dbp->
ags
;

1101 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

1102 i(
hd_check
 &&

1103 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

1104 
hd_check
 = 0;

1105 
r
;

1112 i(
	`IS_ENV_AUTO_COMMIT
(
dbv
, 
txn
, 
ags
)) {

1113 i((
t
 = 
	`__db_txn_auto_
(
dbv
, &
txn
)) != 0)

1114 
r
;

1115 
txn_lol
 = 1;

1116 } i(
txn
 !
NULL
 && !
	`TXN_ON
(
dbv
) &&

1117 (!
	`CDB_LOCKING
(
dbv
|| !
	`F_ISSET
(
txn
, 
TXN_CDSGROUP
))) {

1118 
t
 = 
	`__db_n_txn_v
(
dbv
);

1119 
r
;

1121 
	`LF_CLR
(
DB_AUTO_COMMIT
);

1128 i((
t
 = 
	`__db_ݒ_g
(
dbp
, 
txn
, 
ame
, 
dme
, 
ty
, 
ags
)) == 0)

1129 i((
t
 = 
	`__db_ݒ
(
dbp
, 
txn
, 
ame
, 
dme
, 
ty
,

1130 
ags
, 
mode
, 
PGNO_BASE_MD
)) != 0)

1131 
txü
;

1143 i(
dme
 =
NULL
 && !
	`IS_RECOVERING
(
dbv
&& !
	`LF_ISSET
(
DB_RDONLY
) &&

1144 !
	`LF_ISSET
(
DB_RDWRMASTER
&& 
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
)) {

1145 
	`__db_rx
(
dbv
,

1147 
t
 = 
EINVAL
;

1148 
txü
;

1155 i(
	`F_ISSET
(
dbp
, 
DB_AM_CREATED
 | 
DB_AM_CREATED_MSTR
))

1156 
nosync
 = 0;

1159 
	`F_CLR
(
dbp
, 
DB_AM_DISCARD
 | 
DB_AM_CREATED
 | 
DB_AM_CREATED_MSTR
);

1166 
txü
: i(
t
 !0 && !
	`IS_REAL_TXN
(
txn
)) {

1167 
move_me
 = (
	`F_ISSET
(
dbp
, 
DB_AM_CREATED
) &&

1168 (
ame
 !
NULL
 || 
dme
 != NULL)) ? 1 : 0;

1169 i(
	`F_ISSET
(
dbp
, 
DB_AM_CREATED_MSTR
) ||

1170 (
dme
 =
NULL
 && 
move_me
))

1172 ()
	`__db_move_t
(
dbp
, 
txn
, 
ame
, 
NULL
, 
DB_FORCE
);

1173 i(
move_me
)

1175 ()
	`__db_move_t
(
dbp
, 
txn
, 
ame
, 
dme
, 
DB_FORCE
);

1178 i(
txn_lol
 && (
t_t
 =

1179 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 
nosync
, 
t
)) &&et == 0)

1180 
t
 = 
t_t
;

1182 
r
:

1183 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

1184 
t
 = 
t_t
;

1186 
	`ENV_LEAVE
(
dbv
, 

);

1187  (
t
);

1188 
	}
}

1195 
	$__db_ݒ_g
(
dbp
, 
txn
, 
ame
, 
dme
, 
ty
, 
ags
)

1196 
DB
 *
dbp
;

1197 
DB_TXN
 *
txn
;

1198 cڡ *
ame
, *
dme
;

1199 
DBTYPE
 
ty
;

1200 
u_t32_t
 
ags
;

1202 
DB_ENV
 *
dbv
;

1203 
u_t32_t
 
ok_ags
;

1204 
t
;

1206 
dbv
 = 
dbp
->dbenv;

1209 #unde
OKFLAGS


1210 
	#OKFLAGS
 \

1211 (
DB_AUTO_COMMIT
 | 
DB_CREATE
 | 
DB_EXCL
 | 
DB_FCNTL_LOCKING
 | \

1212 
DB_MULTIVERSION
 | 
DB_NOMMAP
 | 
DB_NO_AUTO_COMMIT
 | 
DB_RDONLY
 | \

1213 
DB_RDWRMASTER
 | 
DB_READ_UNCOMMITTED
 | 
DB_THREAD
 | 
DB_TRUNCATE
 | \

1214 
DB_WRITEOPEN
)

	)

1215 i((
t
 = 
	`__db_fchk
(
dbv
, "DB->ݒ", 
ags
, 
OKFLAGS
)) != 0)

1216  (
t
);

1217 i(
	`LF_ISSET
(
DB_EXCL
&& !LF_ISSET(
DB_CREATE
))

1218  (
	`__db_
(
dbv
, "DB->open", 1));

1219 i(
	`LF_ISSET
(
DB_RDONLY
&& LF_ISSET(
DB_CREATE
))

1220  (
	`__db_
(
dbv
, "DB->open", 1));

1222 #ifdef 
HAVE_VXWORKS


1223 i(
	`LF_ISSET
(
DB_TRUNCATE
)) {

1224 
	`__db_rx
(
dbv
, "DB_TRUNCATEot supported on VxWorks");

1225  (
DB_OPNOTSUP
);

1228 
ty
) {

1229 
DB_UNKNOWN
:

1230 i(
	`LF_ISSET
(
DB_CREATE
|
DB_TRUNCATE
)) {

1231 
	`__db_rx
(
dbv
,

1233  (
EINVAL
);

1235 
ok_ags
 = 0;

1237 
DB_BTREE
:

1238 
ok_ags
 = 
DB_OK_BTREE
;

1240 
DB_HASH
:

1241 #ide
HAVE_HASH


1242  (
	`__db_no_hash_am
(
dbv
));

1244 
ok_ags
 = 
DB_OK_HASH
;

1246 
DB_QUEUE
:

1247 #ide
HAVE_QUEUE


1248  (
	`__db_no_queue_am
(
dbv
));

1250 
ok_ags
 = 
DB_OK_QUEUE
;

1252 
DB_RECNO
:

1253 
ok_ags
 = 
DB_OK_RECNO
;

1256 
	`__db_rx
(
dbv
, "unknowty: %lu", (
u_lg
)
ty
);

1257  (
EINVAL
);

1259 i(
ok_ags
)

1260 
	`DB_ILLEGAL_METHOD
(
dbp
, 
ok_ags
);

1263 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_DBLOCAL
 | 
DB_ENV_OPEN_CALLED
)) {

1264 
	`__db_rx
(
dbv
, "databasenvironmentot yet opened");

1265  (
EINVAL
);

1273 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_DBLOCAL
&& !
	`MPOOL_ON
(dbenv)) {

1274 
	`__db_rx
(
dbv
, "environment didot include memoryool");

1275  (
EINVAL
);

1282 i(
	`LF_ISSET
(
DB_THREAD
) &&

1283 !
	`F_ISSET
(
dbv
, 
DB_ENV_DBLOCAL
 | 
DB_ENV_THREAD
)) {

1284 
	`__db_rx
(
dbv
, "environmentot created using DB_THREAD");

1285  (
EINVAL
);

1289 i(
	`LF_ISSET
(
DB_MULTIVERSION
&& !
	`IS_REAL_TXN
(
txn
)) {

1290 
	`__db_rx
(
dbv
,

1292  (
EINVAL
);

1295 i(
	`LF_ISSET
(
DB_MULTIVERSION
&& 
ty
 =
DB_QUEUE
) {

1296 
	`__db_rx
(
dbv
,

1298  (
EINVAL
);

1302 i(
	`LF_ISSET
(
DB_TRUNCATE
&& (
	`LOCKING_ON
(
dbv
|| 
txn
 !
NULL
)) {

1303 
	`__db_rx
(
dbv
,

1305 
	`LOCKING_ON
(
dbv
) ? "locking" : "transactions");

1306  (
EINVAL
);

1310 i(
dme
 !
NULL
) {

1312 i(
ty
 =
DB_QUEUE
 && 
ame
 !
NULL
) {

1313 
	`__db_rx
(

1314 
dbv
, "Queue databases must be one-per-file");

1315  (
EINVAL
);

1322 i(
ame
 =
NULL
)

1323 
	`F_CLR
(
dbp
, 
DB_AM_CHKSUM
 | 
DB_AM_ENCRYPT
);

1327 
	}
}

1337 
	$__db_pg_
(
dbp
, 
txn
, 
skey
, 
pkey
, 
da
, 
ags
)

1338 
DB
 *
dbp
;

1339 
DB_TXN
 *
txn
;

1340 
DBT
 *
skey
, *
pkey
, *
da
;

1341 
u_t32_t
 
ags
;

1343 
DB_ENV
 *
dbv
;

1344 
DB_THREAD_INFO
 *

;

1345 
hd_check
, 
igne_a
, 
t
, 
t_t
;

1347 
dbv
 = 
dbp
->dbenv;

1349 
	`PANIC_CHECK
(
dbv
);

1350 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->pget");

1352 
igne_a
 = 
	`LF_ISSET
(
DB_IGNORE_LEASE
);

1353 
	`LF_CLR
(
DB_IGNORE_LEASE
);

1355 i((
t
 = 
	`__db_pg_g
(
dbp
, 
pkey
, 
ags
)) != 0 ||

1356 (
t
 = 
	`__db_g_g
(
dbp
, 
skey
, 
da
, 
ags
)) != 0) {

1357 
	`__dbt_ur
(
dbv
, 
skey
, 
pkey
, 
da
);

1358  (
t
);

1361 
	`ENV_ENTER
(
dbv
, 

);

1364 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

1365 i(
hd_check
 &&

1366 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

1367 
hd_check
 = 0;

1368 
r
;

1371 
t
 = 
	`__db_pg
(
dbp
, 
txn
, 
skey
, 
pkey
, 
da
, 
ags
);

1375 i(
t
 =0 && 
	`IS_REP_MASTER
(
dbv
&& 
	`IS_USING_LEASES
(dbenv) &&

1376 !
igne_a
)

1377 
t
 = 
	`__p_a_check
(
dbv
, 1);

1379 
r
:

1380 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

1381 
t
 = 
t_t
;

1383 
	`ENV_LEAVE
(
dbv
, 

);

1384 
	`__dbt_ur
(
dbv
, 
skey
, 
pkey
, 
da
);

1385  (
t
);

1386 
	}
}

1396 
	$__db_pg
(
dbp
, 
txn
, 
skey
, 
pkey
, 
da
, 
ags
)

1397 
DB
 *
dbp
;

1398 
DB_TXN
 *
txn
;

1399 
DBT
 *
skey
, *
pkey
, *
da
;

1400 
u_t32_t
 
ags
;

1402 
DBC
 *
dbc
;

1403 
u_t32_t
 
mode
;

1404 
t
, 
t_t
;

1406 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
)) {

1407 
mode
 = 
DB_READ_UNCOMMITTED
;

1408 
	`LF_CLR
(
DB_READ_UNCOMMITTED
);

1409 } i(
	`LF_ISSET
(
DB_READ_COMMITTED
)) {

1410 
mode
 = 
DB_READ_COMMITTED
;

1411 
	`LF_CLR
(
DB_READ_COMMITTED
);

1413 
mode
 = 0;

1415 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 
mode
)) != 0)

1416  (
t
);

1418 
	`SET_RET_MEM
(
dbc
, 
dbp
);

1420 
	`DEBUG_LREAD
(
dbc
, 
txn
, "__db_pg", 
skey
, 
NULL
, 
ags
);

1436 i(
pkey
 =
NULL
)

1437 
dbc
->
rkey
 = &dbc->
my_rkey
;

1443 i(
ags
 =0 || fg=
DB_RMW
)

1444 
ags
 |
DB_SET
;

1446 
t
 = 
	`__dbc_pg
(
dbc
, 
skey
, 
pkey
, 
da
, 
ags
);

1448 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

1449 
t
 = 
t_t
;

1451  (
t
);

1452 
	}
}

1459 
	$__db_pg_g
(
dbp
, 
pkey
, 
ags
)

1460 
DB
 *
dbp
;

1461 
DBT
 *
pkey
;

1462 
u_t32_t
 
ags
;

1464 
DB_ENV
 *
dbv
;

1465 
t
;

1467 
dbv
 = 
dbp
->dbenv;

1469 i(!
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
)) {

1470 
	`__db_rx
(
dbv
,

1472  (
EINVAL
);

1475 i(
	`LF_ISSET
(
DB_MULTIPLE
 | 
DB_MULTIPLE_KEY
)) {

1476 
	`__db_rx
(
dbv
,

1478  (
EINVAL
);

1482 
	`LF_CLR
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 | 
DB_RMW
);

1483 
ags
) {

1484 
DB_CONSUME
:

1485 
DB_CONSUME_WAIT
:

1486  (
	`__db_
(
dbv
, "DB->pget", 0));

1496 i(
pkey
 !
NULL
 &&

1497 (
t
 = 
	`__dbt_
(
dbp
, "imy key", 
pkey
, 1)) != 0)

1498  (
t
);

1500 i(
ags
 =
DB_GET_BOTH
) {

1502 i(
pkey
 =
NULL
) {

1503 
	`__db_rx
(
dbv
,

1505  (
EINVAL
);

1507 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
pkey
)) != 0)

1508  (
t
);

1512 
	}
}

1521 
	$__db_put_
(
dbp
, 
txn
, 
key
, 
da
, 
ags
)

1522 
DB
 *
dbp
;

1523 
DB_TXN
 *
txn
;

1524 
DBT
 *
key
, *
da
;

1525 
u_t32_t
 
ags
;

1527 
DB_ENV
 *
dbv
;

1528 
DB_THREAD_INFO
 *

;

1529 
hd_check
, 
t
, 
txn_lol
, 
t_t
;

1531 
dbv
 = 
dbp
->dbenv;

1532 
txn_lol
 = 0;

1534 
	`PANIC_CHECK
(
dbv
);

1535 
	`STRIP_AUTO_COMMIT
(
ags
);

1536 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->put");

1538 i((
t
 = 
	`__db_put_g
(
dbp
, 
key
, 
da
, 
ags
)) != 0)

1539  (
t
);

1541 
	`ENV_ENTER
(
dbv
, 

);

1544 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

1545 i(
hd_check
 &&

1546 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

1547 
hd_check
 = 0;

1548 
r
;

1552 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

1553 i((
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

1554 
r
;

1555 
txn_lol
 = 1;

1559 i((
t
 = 
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
, 0)) != 0)

1560 
r
;

1562 
t
 = 
	`__db_put
(
dbp
, 
txn
, 
key
, 
da
, 
ags
);

1564 
r
: i(
txn_lol
 &&

1565 (
t_t
 = 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 0, 
t
)) &&et == 0)

1566 
t
 = 
t_t
;

1569 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

1570 
t
 = 
t_t
;

1572 
	`ENV_LEAVE
(
dbv
, 

);

1573 
	`__dbt_ur
(
dbv
, 
key
, 
NULL
, 
da
);

1574  (
t
);

1575 
	}
}

1582 
	$__db_put_g
(
dbp
, 
key
, 
da
, 
ags
)

1583 
DB
 *
dbp
;

1584 
DBT
 *
key
, *
da
;

1585 
u_t32_t
 
ags
;

1587 
DB_ENV
 *
dbv
;

1588 
t
, 
tukey
;

1590 
dbv
 = 
dbp
->dbenv;

1591 
tukey
 = 0;

1594 i(
	`DB_IS_READONLY
(
dbp
))

1595  (
	`__db_rdly
(
dbv
, "DB->put"));

1598 i(
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
)) {

1599 
	`__db_rx
(
dbv
, "DB->put forbidden on secondary indices");

1600  (
EINVAL
);

1604 
ags
) {

1606 
DB_NOOVERWRITE
:

1608 
DB_APPEND
:

1609 i(
dbp
->
ty
 !
DB_RECNO
 && dbp->ty !
DB_QUEUE
)

1610 
r
;

1611 
tukey
 = 1;

1613 
DB_NODUPDATA
:

1614 i(
	`F_ISSET
(
dbp
, 
DB_AM_DUPSORT
))

1618 
r
:  (
	`__db_
(
dbv
, "DB->put", 0));

1626 i(((
tukey
 && 
key
 !
NULL
) || !returnkey) &&

1627 (
t
 = 
	`__dbt_
(
dbp
, "key", 
key
, 
tukey
)) != 0)

1628  (
t
);

1629 i((
t
 = 
	`__dbt_
(
dbp
, "da", 
da
, 0)) != 0)

1630  (
t
);

1641 i((
tukey
 &&

1642 
key
 !
NULL
 && 
	`F_ISSET
(key, 
DB_DBT_PARTIAL
&& key->
dn
 != 0) ||

1643 (!
tukey
 && 
	`F_ISSET
(
key
, 
DB_DBT_PARTIAL
)))

1644  (
	`__db_
(
dbv
, "key DBT", 0));

1647 i(
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
) &&

1648 (
	`F_ISSET
(
dbp
, 
DB_AM_DUP
|| F_ISSET(
key
, 
DB_DBT_DUPOK
))) {

1649 
	`__db_rx
(
dbv
,

1651  (
EINVAL
);

1654 i((
ags
 !
DB_APPEND
 && (
t
 = 
	`__dbt_urcy
(
dbv
, 
key
)) != 0) ||

1655 (
t
 = 
	`__dbt_urcy
(
dbv
, 
da
)) != 0)

1656  (
t
);

1659 
	}
}

1669 
	$__db_com_
(
dbp
, 
txn
, 
t
, 

, 
c_da
, 
ags
, 
d
)

1670 
DB
 *
dbp
;

1671 
DB_TXN
 *
txn
;

1672 
DBT
 *
t
, *

;

1673 
DB_COMPACT
 *
c_da
;

1674 
u_t32_t
 
ags
;

1675 
DBT
 *
d
;

1677 
DB_COMPACT
 *
dp
, 
l_da
;

1678 
DB_ENV
 *
dbv
;

1679 
DB_THREAD_INFO
 *

;

1680 
hd_check
, 
t
, 
t_t
;

1682 
dbv
 = 
dbp
->dbenv;

1684 
	`PANIC_CHECK
(
dbv
);

1685 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->compact");

1692 i((
ags
 & ~
DB_COMPACT_FLAGS
) != 0)

1693  (
	`__db_
(
dbv
, "DB->compact", 0));

1696 i(
	`DB_IS_READONLY
(
dbp
))

1697  (
	`__db_rdly
(
dbv
, "DB->compact"));

1699 i(
t
 !
NULL
 && (
t
 = 
	`__dbt_urcy
(
dbv
, start)) != 0)

1700  (
t
);

1701 i(

 !
NULL
 && (
t
 = 
	`__dbt_urcy
(
dbv
, stop)) != 0)

1702  (
t
);

1704 
	`ENV_ENTER
(
dbv
, 

);

1707 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

1708 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 0)) != 0) {

1709 
hd_check
 = 0;

1710 
r
;

1713 i(
c_da
 =
NULL
) {

1714 
dp
 = &
l_da
;

1715 
	`memt
(
dp
, 0, (*dp));

1717 
dp
 = 
c_da
;

1719 
dbp
->
ty
) {

1720 
DB_HASH
:

1721 i(!
	`LF_ISSET
(
DB_FREELIST_ONLY
))

1722 
r
;

1724 
DB_BTREE
:

1725 
DB_RECNO
:

1726 
t
 = 
	`__bam_com
(
dbp
, 
txn
, 
t
, 

, 
dp
, 
ags
, 
d
);

1730 
r
: 
t
 = 
	`__dbh_am_chk
(
dbp
, 
DB_OK_BTREE
);

1735 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

1736 
t
 = 
t_t
;

1738 
	`ENV_LEAVE
(
dbv
, 

);

1739 
	`__dbt_ur
(
dbv
, 
t
, 

, 
NULL
);

1740  (
t
);

1741 
	}
}

1750 
	$__db_sync_
(
dbp
, 
ags
)

1751 
DB
 *
dbp
;

1752 
u_t32_t
 
ags
;

1754 
DB_ENV
 *
dbv
;

1755 
DB_THREAD_INFO
 *

;

1756 
hd_check
, 
t
, 
t_t
;

1758 
dbv
 = 
dbp
->dbenv;

1760 
	`PANIC_CHECK
(
dbv
);

1761 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->sync");

1768 i(
ags
 != 0)

1769  (
	`__db_
(
dbv
, "DB->sync", 0));

1771 
	`ENV_ENTER
(
dbv
, 

);

1774 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

1775 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 0)) != 0) {

1776 
hd_check
 = 0;

1777 
r
;

1780 
t
 = 
	`__db_sync
(
dbp
);

1783 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

1784 
t
 = 
t_t
;

1786 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

1787  (
t
);

1788 
	}
}

1797 
	$__dbc_o_
(
dbc
)

1798 
DBC
 *
dbc
;

1800 
DB_ENV
 *
dbv
;

1801 
DB_THREAD_INFO
 *

;

1802 
DB
 *
dbp
;

1803 
hd_check
, 
t
, 
t_t
;

1805 
dbp
 = 
dbc
->dbp;

1806 
dbv
 = 
dbp
->dbenv;

1808 
	`PANIC_CHECK
(
dbv
);

1809 
	`ENV_ENTER
(
dbv
, 

);

1816 i(!
	`F_ISSET
(
dbc
, 
DBC_ACTIVE
)) {

1817 
	`__db_rx
(
dbv
, "Closinglready-closed cursor");

1818 
t
 = 
EINVAL
;

1819 
r
;

1823 
hd_check
 = 
dbc
->
txn
 =
NULL
 && 
	`IS_ENV_REPLICATED
(
dbv
);

1824 
t
 = 
	`__dbc_o
(
dbc
);

1827 i(
hd_check
 &&

1828 (
t_t
 = 
	`___p_ex
(
dbv
)!0 && 
t
 == 0)

1829 
t
 = 
t_t
;

1831 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

1832  (
t
);

1833 
	}
}

1842 
	$__dbc_cou_
(
dbc
, 

, 
ags
)

1843 
DBC
 *
dbc
;

1844 
db_o_t
 *

;

1845 
u_t32_t
 
ags
;

1847 
DB_ENV
 *
dbv
;

1848 
DB_THREAD_INFO
 *

;

1849 
DB
 *
dbp
;

1850 
t
;

1852 
dbp
 = 
dbc
->dbp;

1853 
dbv
 = 
dbp
->dbenv;

1855 
	`PANIC_CHECK
(
dbv
);

1864 i(
ags
 != 0)

1865  (
	`__db_
(
dbv
, "DBcursor->count", 0));

1867 i(!
	`IS_INITIALIZED
(
dbc
))

1868  (
	`__db_curv
(
dbv
));

1870 
	`ENV_ENTER
(
dbv
, 

);

1872 
t
 = 
	`__dbc_cou
(
dbc
, 

);

1873 
	`ENV_LEAVE
(
dbv
, 

);

1874  (
t
);

1875 
	}
}

1884 
	$__dbc_d_
(
dbc
, 
ags
)

1885 
DBC
 *
dbc
;

1886 
u_t32_t
 
ags
;

1888 
DB
 *
dbp
;

1889 
DB_ENV
 *
dbv
;

1890 
DB_THREAD_INFO
 *

;

1891 
t
;

1893 
dbp
 = 
dbc
->dbp;

1894 
dbv
 = 
dbp
->dbenv;

1896 
	`PANIC_CHECK
(
dbv
);

1898 i((
t
 = 
	`__dbc_d_g
(
dbc
, 
ags
)) != 0)

1899  (
t
);

1901 
	`ENV_ENTER
(
dbv
, 

);

1904 i((
t
 = 
	`__db_check_txn
(
dbp
, 
dbc
->
txn
, dbc->
lock
, 0)) != 0)

1905 
r
;

1907 
	`DEBUG_LWRITE
(
dbc
, dbc->
txn
, "DBcurs->d", 
NULL
, NULL, 
ags
);

1908 
t
 = 
	`__dbc_d
(
dbc
, 
ags
);

1909 
r
:

1910 
	`ENV_LEAVE
(
dbv
, 

);

1911  (
t
);

1912 
	}
}

1919 
	$__dbc_d_g
(
dbc
, 
ags
)

1920 
DBC
 *
dbc
;

1921 
u_t32_t
 
ags
;

1923 
DB
 *
dbp
;

1924 
DB_ENV
 *
dbv
;

1926 
dbp
 = 
dbc
->dbp;

1927 
dbv
 = 
dbp
->dbenv;

1930 i(
	`DB_IS_READONLY
(
dbp
))

1931  (
	`__db_rdly
(
dbv
, "DBcursor->del"));

1934 
ags
) {

1937 
DB_UPDATE_SECONDARY
:

1938 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
));

1941  (
	`__db_
(
dbv
, "DBcursor->del", 0));

1948 i(!
	`IS_INITIALIZED
(
dbc
))

1949  (
	`__db_curv
(
dbv
));

1952 
	}
}

1961 
	$__dbc_dup_
(
dbc
, 
db
, 
ags
)

1962 
DBC
 *
dbc
, **
db
;

1963 
u_t32_t
 
ags
;

1965 
DB
 *
dbp
;

1966 
DB_ENV
 *
dbv
;

1967 
DB_THREAD_INFO
 *

;

1968 
t
;

1970 
dbp
 = 
dbc
->dbp;

1971 
dbv
 = 
dbp
->dbenv;

1973 
	`PANIC_CHECK
(
dbv
);

1980 i(
ags
 !0 && fg!
DB_POSITION
)

1981  (
	`__db_
(
dbv
, "DBcursor->dup", 0));

1983 
	`ENV_ENTER
(
dbv
, 

);

1985 
t
 = 
	`__dbc_dup
(
dbc
, 
db
, 
ags
);

1986 
	`ENV_LEAVE
(
dbv
, 

);

1987  (
t
);

1988 
	}
}

1997 
	$__dbc_g_
(
dbc
, 
key
, 
da
, 
ags
)

1998 
DBC
 *
dbc
;

1999 
DBT
 *
key
, *
da
;

2000 
u_t32_t
 
ags
;

2002 
DB
 *
dbp
;

2003 
DB_ENV
 *
dbv
;

2004 
igne_a
, 
t
;

2005 
DB_THREAD_INFO
 *

;

2007 
dbp
 = 
dbc
->dbp;

2008 
dbv
 = 
dbp
->dbenv;

2010 
	`PANIC_CHECK
(
dbv
);

2012 
igne_a
 = 
	`LF_ISSET
(
DB_IGNORE_LEASE
);

2013 
	`LF_CLR
(
DB_IGNORE_LEASE
);

2014 i((
t
 = 
	`__dbc_g_g
(
dbc
, 
key
, 
da
, 
ags
)) != 0)

2015  (
t
);

2017 
	`ENV_ENTER
(
dbv
, 

);

2019 
	`DEBUG_LREAD
(
dbc
, dbc->
txn
, "DBcursor->get",

2020 
ags
 =
DB_SET
 || fg=
DB_SET_RANGE
 ? 
key
 : 
NULL
, NULL, flags);

2021 
t
 = 
	`__dbc_g
(
dbc
, 
key
, 
da
, 
ags
);

2026 i(
t
 =0 && 
	`IS_REP_MASTER
(
dbv
&& 
	`IS_USING_LEASES
(dbenv) &&

2027 !
igne_a
)

2028 
t
 = 
	`__p_a_check
(
dbv
, 1);

2030 
	`ENV_LEAVE
(
dbv
, 

);

2031 
	`__dbt_ur
(
dbv
, 
key
, 
NULL
, 
da
);

2032  (
t
);

2033 
	}
}

2040 
	$__dbc_g_g
(
dbc
, 
key
, 
da
, 
ags
)

2041 
DBC
 *
dbc
;

2042 
DBT
 *
key
, *
da
;

2043 
u_t32_t
 
ags
;

2045 
DB
 *
dbp
;

2046 
DB_ENV
 *
dbv
;

2047 
dty
, 
mui
, 
t
;

2049 
dbp
 = 
dbc
->dbp;

2050 
dbv
 = 
dbp
->dbenv;

2067 
dty
 = 0;

2068 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
 | 
DB_RMW
)) {

2069 i(!
	`LOCKING_ON
(
dbv
))

2070  (
	`__db_l
(
dbv
, "DBcursor->get"));

2071 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
))

2072 
dty
 = 1;

2073 
	`LF_CLR
(
DB_READ_UNCOMMITTED
 | 
DB_RMW
);

2076 
mui
 = 0;

2077 i(
	`LF_ISSET
(
DB_MULTIPLE
 | 
DB_MULTIPLE_KEY
)) {

2078 
mui
 = 1;

2079 i(
	`LF_ISSET
(
DB_MULTIPLE
&& LF_ISSET(
DB_MULTIPLE_KEY
))

2080 
mui_r
;

2081 
	`LF_CLR
(
DB_MULTIPLE
 | 
DB_MULTIPLE_KEY
);

2085 
ags
) {

2086 
DB_CONSUME
:

2087 
DB_CONSUME_WAIT
:

2088 i(
dty
) {

2089 
	`__db_rx
(
dbv
,

2091  (
EINVAL
);

2093 i(
dbp
->
ty
 !
DB_QUEUE
)

2094 
r
;

2096 
DB_CURRENT
:

2097 
DB_FIRST
:

2098 
DB_NEXT
:

2099 
DB_NEXT_DUP
:

2100 
DB_NEXT_NODUP
:

2102 
DB_LAST
:

2103 
DB_PREV
:

2104 
DB_PREV_DUP
:

2105 
DB_PREV_NODUP
:

2106 i(
mui
)

2107 
mui_r
:  (
	`__db_
(
dbv
, "DBcursor->get", 1));

2109 
DB_GET_BOTHC
:

2110 i(
dbp
->
ty
 =
DB_QUEUE
)

2111 
r
;

2113 
DB_GET_BOTH
:

2114 
DB_GET_BOTH_RANGE
:

2115 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
da
)) != 0)

2116 
r
;

2118 
DB_SET
:

2119 
DB_SET_RANGE
:

2120 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
key
)) != 0)

2121 
r
;

2123 
DB_GET_RECNO
:

2129 i(!
	`F_ISSET
(
dbp
, 
DB_AM_RECNUM
) &&

2130 (!
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
) ||

2131 !
	`F_ISSET
(
dbp
->
s_imy
, 
DB_AM_RECNUM
)))

2132 
r
;

2134 
DB_SET_RECNO
:

2135 i(!
	`F_ISSET
(
dbp
, 
DB_AM_RECNUM
))

2136 
r
;

2137 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
key
)) != 0)

2138 
r
;

2141 
r
: 
	`__dbt_ur
(
dbv
, 
key
, 
NULL
, 
da
);

2142  (
	`__db_
(
dbv
, "DBcursor->get", 0));

2146 i((
t
 = 
	`__dbt_
(
dbp
, "key", 
key
, 0)) != 0)

2147  (
t
);

2148 i((
t
 = 
	`__dbt_
(
dbp
, "da", 
da
, 0)) != 0)

2149  (
t
);

2151 i(
mui
) {

2152 i(!
	`F_ISSET
(
da
, 
DB_DBT_USERMEM
)) {

2153 
	`__db_rx
(
dbv
,

2155  (
EINVAL
);

2157 i(
	`F_ISSET
(
key
, 
DB_DBT_PARTIAL
) ||

2158 
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
)) {

2159 
	`__db_rx
(
dbv
,

2161  (
EINVAL
);

2163 i(
da
->
un
 < 1024 ||

2164 
da
->
un
 < 
dbp
->
pgsize
 || data->ulen % 1024 != 0) {

2165 
	`__db_rx
(
dbv
, "%s%s",

2168  (
EINVAL
);

2177 i(!
	`IS_INITIALIZED
(
dbc
&& (
ags
 =
DB_CURRENT
 ||

2178 
ags
 =
DB_GET_RECNO
 ||

2179 
ags
 =
DB_NEXT_DUP
 || fg=
DB_PREV_DUP
))

2180  (
	`__db_curv
(
dbv
));

2183 i(
	`LF_ISSET
(
DB_RMW
) &&

2184 (
t
 = 
	`__db_check_txn
(
dbp
, 
dbc
->
txn
, dbc->
lock
, 0)) != 0)

2185  (
t
);

2188 
	}
}

2197 
	$__db_cdy_o_
(
dbp
, 
ags
)

2198 
DB
 *
dbp
;

2199 
u_t32_t
 
ags
;

2201 
DB_ENV
 *
dbv
;

2202 
DB_THREAD_INFO
 *

;

2203 
hd_check
, 
t
, 
t_t
;

2205 
dbv
 = 
dbp
->dbenv;

2206 
t
 = 0;

2208 
	`PANIC_CHECK
(
dbv
);

2217 i(
ags
 !0 && fg!
DB_NOSYNC
)

2218 
t
 = 
	`__db_
(
dbv
, "DB->close", 0);

2220 
	`ENV_ENTER
(
dbv
, 

);

2223 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

2224 i(
hd_check
 && (
t_t
 = 
	`__db_p_r
(
dbp
, 0, 0, 0)) != 0) {

2225 
hd_check
 = 0;

2226 i(
t
 == 0)

2227 
t
 = 
t_t
;

2230 i((
t_t
 = 
	`__db_cdy_o
(
dbp
, 
ags
)!0 && 
t
 == 0)

2231 
t
 = 
t_t
;

2234 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

2235 
t
 = 
t_t
;

2237 
	`ENV_LEAVE
(
dbv
, 

);

2238  (
t
);

2239 
	}
}

2248 
	$__dbc_pg_
(
dbc
, 
skey
, 
pkey
, 
da
, 
ags
)

2249 
DBC
 *
dbc
;

2250 
DBT
 *
skey
, *
pkey
, *
da
;

2251 
u_t32_t
 
ags
;

2253 
DB
 *
dbp
;

2254 
DB_ENV
 *
dbv
;

2255 
DB_THREAD_INFO
 *

;

2256 
igne_a
, 
t
;

2258 
dbp
 = 
dbc
->dbp;

2259 
dbv
 = 
dbp
->dbenv;

2261 
	`PANIC_CHECK
(
dbv
);

2263 
igne_a
 = 
	`LF_ISSET
(
DB_IGNORE_LEASE
);

2264 
	`LF_CLR
(
DB_IGNORE_LEASE
);

2265 i((
t
 = 
	`__dbc_pg_g
(
dbc
, 
pkey
, 
ags
)) != 0 ||

2266 (
t
 = 
	`__dbc_g_g
(
dbc
, 
skey
, 
da
, 
ags
)) != 0)

2267  (
t
);

2269 
	`ENV_ENTER
(
dbv
, 

);

2270 
t
 = 
	`__dbc_pg
(
dbc
, 
skey
, 
pkey
, 
da
, 
ags
);

2274 i(
t
 =0 && 
	`IS_REP_MASTER
(
dbv
&& 
	`IS_USING_LEASES
(dbenv) &&

2275 !
igne_a
)

2276 
t
 = 
	`__p_a_check
(
dbv
, 1);

2278 
	`ENV_LEAVE
(
dbv
, 

);

2280 
	`__dbt_ur
(
dbv
, 
skey
, 
pkey
, 
da
);

2281  (
t
);

2282 
	}
}

2289 
	$__dbc_pg_g
(
dbc
, 
pkey
, 
ags
)

2290 
DBC
 *
dbc
;

2291 
DBT
 *
pkey
;

2292 
u_t32_t
 
ags
;

2294 
DB
 *
dbp
;

2295 
DB_ENV
 *
dbv
;

2296 
t
;

2298 
dbp
 = 
dbc
->dbp;

2299 
dbv
 = 
dbp
->dbenv;

2301 i(!
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
)) {

2302 
	`__db_rx
(
dbv
,

2304  (
EINVAL
);

2307 i(
	`LF_ISSET
(
DB_MULTIPLE
 | 
DB_MULTIPLE_KEY
)) {

2308 
	`__db_rx
(
dbv
,

2310  (
EINVAL
);

2313 
	`LF_ISSET
(~
DB_RMW
)) {

2314 
DB_CONSUME
:

2315 
DB_CONSUME_WAIT
:

2317  (
	`__db_
(
dbv
, "DBcursor->pget", 0));

2318 
DB_GET_BOTH
:

2319 
DB_GET_BOTH_RANGE
:

2321 i(
pkey
 =
NULL
) {

2322 
	`__db_rx
(
dbv
,

2324 
	`LF_ISSET
(
DB_GET_BOTH
) ?

2326  (
EINVAL
);

2328 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
pkey
)) != 0)

2329  (
t
);

2340 i(
pkey
 !
NULL
 &&

2341 (
t
 = 
	`__dbt_
(
dbp
, "imy key", 
pkey
, 0)) != 0)

2342  (
t
);

2345 i(
pkey
 =
NULL
 && (
ags
 & 
DB_OPFLAGS_MASK
=
DB_GET_BOTH
) {

2346 
	`__db_rx
(
dbv
,

2348  (
EINVAL
);

2351 
	}
}

2360 
	$__dbc_put_
(
dbc
, 
key
, 
da
, 
ags
)

2361 
DBC
 *
dbc
;

2362 
DBT
 *
key
, *
da
;

2363 
u_t32_t
 
ags
;

2365 
DB
 *
dbp
;

2366 
DB_ENV
 *
dbv
;

2367 
DB_THREAD_INFO
 *

;

2368 
t
;

2370 
dbp
 = 
dbc
->dbp;

2371 
dbv
 = 
dbp
->dbenv;

2373 
	`PANIC_CHECK
(
dbv
);

2375 i((
t
 = 
	`__dbc_put_g
(
dbc
, 
key
, 
da
, 
ags
)) != 0)

2376  (
t
);

2378 
	`ENV_ENTER
(
dbv
, 

);

2381 i((
t
 = 
	`__db_check_txn
(
dbp
, 
dbc
->
txn
, dbc->
lock
, 0)) != 0)

2382 
r
;

2384 
	`DEBUG_LWRITE
(
dbc
, dbc->
txn
, "DBcursor->put",

2385 
ags
 =
DB_KEYFIRST
 || fg=
DB_KEYLAST
 ||

2386 
ags
 =
DB_NODUPDATA
 || fg=
DB_UPDATE_SECONDARY
 ?

2387 
key
 : 
NULL
, 
da
, 
ags
);

2388 
t
 =
	`__dbc_put
(
dbc
, 
key
, 
da
, 
ags
);

2390 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

2391 
	`__dbt_ur
(
dbv
, 
key
, 
NULL
, 
da
);

2392  (
t
);

2393 
	}
}

2400 
	$__dbc_put_g
(
dbc
, 
key
, 
da
, 
ags
)

2401 
DBC
 *
dbc
;

2402 
DBT
 *
key
, *
da
;

2403 
u_t32_t
 
ags
;

2405 
DB
 *
dbp
;

2406 
DB_ENV
 *
dbv
;

2407 
key_ags
, 
t
;

2409 
dbp
 = 
dbc
->dbp;

2410 
dbv
 = 
dbp
->dbenv;

2411 
key_ags
 = 0;

2414 i(
	`DB_IS_READONLY
(
dbp
))

2415  (
	`__db_rdly
(
dbv
, "DBcursor->put"));

2418 i(
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
)) {

2419 i(
ags
 =
DB_UPDATE_SECONDARY
)

2420 
ags
 = 
DB_KEYLAST
;

2422 
	`__db_rx
(
dbv
,

2424  (
EINVAL
);

2428 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
da
)) != 0)

2429  (
t
);

2432 
ags
) {

2433 
DB_AFTER
:

2434 
DB_BEFORE
:

2435 
dbp
->
ty
) {

2436 
DB_BTREE
:

2437 
DB_HASH
:

2438 i(!
	`F_ISSET
(
dbp
, 
DB_AM_DUP
))

2439 
r
;

2440 i(
dbp
->
dup_com
 !
NULL
)

2441 
r
;

2443 
DB_QUEUE
:

2444 
r
;

2445 
DB_RECNO
:

2446 i(!
	`F_ISSET
(
dbp
, 
DB_AM_RENUMBER
))

2447 
r
;

2448 
key_ags
 = 
key
 =
NULL
 ? 0 : 1;

2450 
DB_UNKNOWN
:

2452 
r
;

2455 
DB_CURRENT
:

2462 
DB_NODUPDATA
:

2463 i(!
	`F_ISSET
(
dbp
, 
DB_AM_DUPSORT
))

2464 
r
;

2466 
DB_KEYFIRST
:

2467 
DB_KEYLAST
:

2468 
key_ags
 = 1;

2469 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
key
)) != 0)

2470  (
t
);

2473 
r
:  (
	`__db_
(
dbv
, "DBcursor->put", 0));

2481 i(
key_ags
 && (
t
 = 
	`__dbt_
(
dbp
, "key", 
key
, 0)) != 0)

2482  (
t
);

2483 i((
t
 = 
	`__dbt_
(
dbp
, "da", 
da
, 0)) != 0)

2484  (
t
);

2495 i(
key_ags
 && 
	`F_ISSET
(
key
, 
DB_DBT_PARTIAL
&& key->
dn
 != 0)

2496  (
	`__db_
(
dbv
, "key DBT", 0));

2502 i(!
	`IS_INITIALIZED
(
dbc
&& 
ags
 !
DB_KEYFIRST
 &&

2503 
ags
 !
DB_KEYLAST
 && fg!
DB_NODUPDATA
)

2504  (
	`__db_curv
(
dbv
));

2507 
	}
}

2514 
	$__dbt_
(
dbp
, 
me
, 
dbt
, 
check_thad
)

2515 cڡ 
DB
 *
dbp
;

2516 cڡ *
me
;

2517 cڡ 
DBT
 *
dbt
;

2518 
check_thad
;

2520 
DB_ENV
 *
dbv
;

2521 
t
;

2523 
dbv
 = 
dbp
->dbenv;

2532 i((
t
 = 
	`__db_fchk
(
dbv
, 
me
, 
dbt
->
ags
, 
DB_DBT_APPMALLOC
 |

2533 
DB_DBT_MALLOC
 | 
DB_DBT_DUPOK
 | 
DB_DBT_REALLOC
 |

2534 
DB_DBT_USERCOPY
 | 
DB_DBT_USERMEM
 | 
DB_DBT_PARTIAL
)) != 0)

2535  (
t
);

2536 
	`F_ISSET
(
dbt
, 
DB_DBT_MALLOC
 | 
DB_DBT_REALLOC
 |

2537 
DB_DBT_USERCOPY
 | 
DB_DBT_USERMEM
)) {

2539 
DB_DBT_MALLOC
:

2540 
DB_DBT_REALLOC
:

2541 
DB_DBT_USERCOPY
:

2542 
DB_DBT_USERMEM
:

2545  (
	`__db_
(
dbv
, 
me
, 1));

2548 i(
check_thad
 && 
	`DB_IS_THREADED
(
dbp
) &&

2549 !
	`F_ISSET
(
dbt
, 
DB_DBT_MALLOC
 | 
DB_DBT_REALLOC
 |

2550 
DB_DBT_USERCOPY
 | 
DB_DBT_USERMEM
)) {

2551 
	`__db_rx
(
dbv
,

2553 
me
);

2554  (
EINVAL
);

2557 
	}
}

2564 
	$__db_curv
(
dbv
)

2565 cڡ 
DB_ENV
 *
dbv
;

2567 
	`__db_rx
(
dbv
,

2569  (
EINVAL
);

2570 
	}
}

2579 
	$__db_txn_auto_
(
dbv
, 
txnidp
)

2580 
DB_ENV
 *
dbv
;

2581 
DB_TXN
 **
txnidp
;

2589 i(*
txnidp
 !
NULL
) {

2590 
	`__db_rx
(
dbv
,

2592  (
EINVAL
);

2595 i(!
	`TXN_ON
(
dbv
)) {

2596 
	`__db_rx
(
dbv
,

2598  (
EINVAL
);

2605  (
	`__txn_beg
(
dbv
, 
NULL
, 
txnidp
, 0));

2606 
	}
}

2615 
	$__db_txn_auto_sve
(
dbv
, 
txn
, 
nosync
, 
t
)

2616 
DB_ENV
 *
dbv
;

2617 
DB_TXN
 *
txn
;

2618 
nosync
, 
t
;

2620 
t_t
;

2626 i(
t
 == 0)

2627  (
	`__txn_comm
(
txn
, 
nosync
 ? 
DB_TXN_NOSYNC
 : 0));

2629 i((
t_t
 = 
	`__txn_abt
(
txn
)) != 0)

2630  (
	`__db_nic
(
dbv
, 
t_t
));

2632  (
t
);

2633 
	}
}

2642 
	$__dbt_urcy
(
dbv
, 
dbt
)

2643 
DB_ENV
 *
dbv
;

2644 
DBT
 *
dbt
;

2646 *
buf
;

2647 
t
;

2649 i(
dbt
 =
NULL
 || !
	`F_ISSET
(dbt, 
DB_DBT_USERCOPY
|| dbt->
size
 == 0 ||

2650 
dbt
->
da
 !
NULL
)

2653 
buf
 = 
NULL
;

2654 i((
t
 = 
	`__os_umloc
(
dbv
, 
dbt
->
size
, &
buf
)) != 0 ||

2655 (
t
 = 
dbv
->
	`dbt_urcy
(
dbt
, 0, 
buf
, dbt->
size
,

2656 
DB_USERCOPY_GETDATA
)) != 0)

2657 
r
;

2658 
dbt
->
da
 = 
buf
;

2662 
r
: i(
buf
 !
NULL
) {

2663 
	`__os_u
(
dbv
, 
buf
);

2664 
dbt
->
da
 = 
NULL
;

2667  (
t
);

2668 
	}
}

2677 
	$__dbt_ur
(
dbv
, 
key
, 
pkey
, 
da
)

2678 
DB_ENV
 *
dbv
;

2679 
DBT
 *
key
, *
pkey
, *
da
;

2681 i(
key
 !
NULL
 &&

2682 
	`F_ISSET
(
key
, 
DB_DBT_USERCOPY
&& key->
da
 !
NULL
) {

2683 
	`__os_u
(
dbv
, 
key
->
da
);

2684 
key
->
da
 = 
NULL
;

2686 i(
pkey
 !
NULL
 &&

2687 
	`F_ISSET
(
pkey
, 
DB_DBT_USERCOPY
&&key->
da
 !
NULL
) {

2688 
	`__os_u
(
dbv
, 
pkey
->
da
);

2689 
pkey
->
da
 = 
NULL
;

2691 i(
da
 !
NULL
 &&

2692 
	`F_ISSET
(
da
, 
DB_DBT_USERCOPY
&& da->d!
NULL
) {

2693 
	`__os_u
(
dbv
, 
da
->data);

2694 
da
->d
NULL
;

2696 
	}
}

	@../db/db_join.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_jo.h
"

14 
	~"dbc/b.h
"

15 
	~"dbc/lock.h
"

17 
__db_jo_o_
 
__P
((
DBC
 *));

18 
__db_jo_cmp
 
__P
((const *, const *));

19 
__db_jo_d
 
__P
((
DBC
 *, 
u_t32_t
));

20 
__db_jo_g
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

21 
__db_jo_g_
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

22 
__db_jo_gxt
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, u_int32_t));

23 
__db_jo_img
 
__P
((
DB
 *,

24 
DB_TXN
 *, 
DB_LOCKER
 *, 
DBT
 *, DBT *, 
u_t32_t
));

25 
__db_jo_put
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

31 
	#SORTED_SET
(
jc
, 
n
((jc)->
j_curi
[)]->
dbp
->
dup_com
 !
NULL
)

	)

71 
	$__db_jo
(
imy
, 
curi
, 
db
, 
ags
)

72 
DB
 *
imy
;

73 
DBC
 **
curi
, **
db
;

74 
u_t32_t
 
ags
;

76 
DB_ENV
 *
dbv
;

77 
DBC
 *
dbc
;

78 
JOIN_CURSOR
 *
jc
;

79 
size_t
 
ncurs
, 
ns
;

80 
u_t32_t
 
i
;

81 
t
;

83 
dbv
 = 
imy
->dbenv;

84 
dbc
 = 
NULL
;

85 
jc
 = 
NULL
;

87 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DBC
), &
dbc
)) != 0)

88 
r
;

90 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
JOIN_CURSOR
), &
jc
)) != 0)

91 
r
;

93 i((
t
 = 
	`__os_mloc
(
dbv
, 256, &
jc
->
j_key
.
da
)) != 0)

94 
r
;

95 
jc
->
j_key
.
un
 = 256;

96 
	`F_SET
(&
jc
->
j_key
, 
DB_DBT_USERMEM
);

98 
	`F_SET
(&
jc
->
j_rda
, 
DB_DBT_REALLOC
);

100 
jc
->
j_curi
 = 
curi
;

101 *
jc
->
j_curi
 !
NULL
; jc->j_curslist++)

109 
ncurs
 = (
size_t
)(
jc
->
j_curi
 - 
curi
);

110 
ns
 = 
ncurs
 + 1;

152 
jc
->
j_curi
 = 
NULL
;

153 
jc
->
j_wkcurs
 = 
NULL
;

154 
jc
->
j_fdupcurs
 = 
NULL
;

155 
jc
->
j_exhaued
 = 
NULL
;

157 i((
t
 = 
	`__os_oc
(
dbv
, 
ns
, (
DBC
 *),

158 &
jc
->
j_curi
)) != 0)

159 
r
;

160 i((
t
 = 
	`__os_oc
(
dbv
, 
ns
, (
DBC
 *),

161 &
jc
->
j_wkcurs
)) != 0)

162 
r
;

163 i((
t
 = 
	`__os_oc
(
dbv
, 
ns
, (
DBC
 *),

164 &
jc
->
j_fdupcurs
)) != 0)

165 
r
;

166 i((
t
 = 
	`__os_oc
(
dbv
, 
ns
, (
u_t8_t
),

167 &
jc
->
j_exhaued
)) != 0)

168 
r
;

169 
i
 = 0; 
curi
[i] !
NULL
; i++) {

170 
jc
->
j_curi
[
i
] = 
curi
[i];

171 
jc
->
j_wkcurs
[
i
] = 
NULL
;

172 
jc
->
j_fdupcurs
[
i
] = 
NULL
;

173 
jc
->
j_exhaued
[
i
] = 0;

175 
jc
->
j_ncurs
 = (
u_t32_t
)
ncurs
;

181 i(!
	`LF_ISSET
(
DB_JOIN_NOSORT
))

182 
	`qst
(
jc
->
j_curi
, 
ncurs
, (
DBC
 *), 
__db_jo_cmp
);

195 i((
t
 =

196 
	`__dbc_dup
(
jc
->
j_curi
[0], jc->
j_wkcurs
, 
DB_POSITION
)) != 0)

197 
r
;

199 
dbc
->
o
 = dbc->
c_o
 = 
__db_jo_o_
;

200 
dbc
->
d
 = dbc->
c_d
 = 
__db_jo_d
;

201 
dbc
->
g
 = dbc->
c_g
 = 
__db_jo_g_
;

202 
dbc
->
put
 = dbc->
c_put
 = 
__db_jo_put
;

203 
dbc
->

 = (
DBC_INTERNAL
 *)
jc
;

204 
dbc
->
dbp
 = 
imy
;

205 
jc
->
j_imy
 = 
imy
;

208 
dbc
->
txn
 = 
curi
[0]->txn;

210 *
db
 = 
dbc
;

212 
	`MUTEX_LOCK
(
dbv
, 
imy
->
mux
);

213 
	`TAILQ_INSERT_TAIL
(&
imy
->
jo_queue
, 
dbc
, 
lks
);

214 
	`MUTEX_UNLOCK
(
dbv
, 
imy
->
mux
);

218 
r
: i(
jc
 !
NULL
) {

219 i(
jc
->
j_curi
 !
NULL
)

220 
	`__os_
(
dbv
, 
jc
->
j_curi
);

221 i(
jc
->
j_wkcurs
 !
NULL
) {

222 i(
jc
->
j_wkcurs
[0] !
NULL
)

223 ()
	`__dbc_o
(
jc
->
j_wkcurs
[0]);

224 
	`__os_
(
dbv
, 
jc
->
j_wkcurs
);

226 i(
jc
->
j_fdupcurs
 !
NULL
)

227 
	`__os_
(
dbv
, 
jc
->
j_fdupcurs
);

228 i(
jc
->
j_exhaued
 !
NULL
)

229 
	`__os_
(
dbv
, 
jc
->
j_exhaued
);

230 
	`__os_
(
dbv
, 
jc
);

232 i(
dbc
 !
NULL
)

233 
	`__os_
(
dbv
, 
dbc
);

234  (
t
);

235 
	}
}

242 
	$__db_jo_o_
(
dbc
)

243 
DBC
 *
dbc
;

245 
DB_ENV
 *
dbv
;

246 
DB_THREAD_INFO
 *

;

247 
DB
 *
dbp
;

248 
hd_check
, 
t
, 
t_t
;

250 
dbp
 = 
dbc
->dbp;

251 
dbv
 = 
dbp
->dbenv;

253 
	`PANIC_CHECK
(
dbv
);

255 
	`ENV_ENTER
(
dbv
, 

);

257 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

258 i(
hd_check
 &&

259 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
dbc
->
txn
 !
NULL
)) != 0) {

260 
hd_check
 = 0;

261 
r
;

264 
t
 = 
	`__db_jo_o
(
dbc
);

266 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

267 
t
 = 
t_t
;

269 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

270  (
t
);

271 
	}
}

274 
	$__db_jo_put
(
dbc
, 
key
, 
da
, 
ags
)

275 
DBC
 *
dbc
;

276 
DBT
 *
key
;

277 
DBT
 *
da
;

278 
u_t32_t
 
ags
;

280 
	`PANIC_CHECK
(
dbc
->
dbp
->
dbv
);

282 
	`COMPQUIET
(
key
, 
NULL
);

283 
	`COMPQUIET
(
da
, 
NULL
);

284 
	`COMPQUIET
(
ags
, 0);

285  (
EINVAL
);

286 
	}
}

289 
	$__db_jo_d
(
dbc
, 
ags
)

290 
DBC
 *
dbc
;

291 
u_t32_t
 
ags
;

293 
	`PANIC_CHECK
(
dbc
->
dbp
->
dbv
);

295 
	`COMPQUIET
(
ags
, 0);

296  (
EINVAL
);

297 
	}
}

304 
	$__db_jo_g_
(
dbc
, 
key
, 
da
, 
ags
)

305 
DBC
 *
dbc
;

306 
DBT
 *
key
, *
da
;

307 
u_t32_t
 
ags
;

309 
DB
 *
dbp
;

310 
DB_ENV
 *
dbv
;

311 
DB_THREAD_INFO
 *

;

312 
u_t32_t
 
hd_check
, 
ve_ags
;

313 
t
, 
t_t
;

315 
dbp
 = 
dbc
->dbp;

316 
dbv
 = 
dbp
->dbenv;

319 
ve_ags
 = 
ags
;

321 
	`PANIC_CHECK
(
dbv
);

323 i(
	`LF_ISSET
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 | 
DB_RMW
)) {

324 i(!
	`LOCKING_ON
(
dbv
))

325  (
	`__db_l
(
dbv
, "DBC->get"));

326 
	`LF_CLR
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 | 
DB_RMW
);

329 
ags
) {

331 
DB_JOIN_ITEM
:

334  (
	`__db_
(
dbv
, "DBC->get", 0));

348 i(
	`F_ISSET
(
key
, 
DB_DBT_PARTIAL
)) {

349 
	`__db_rx
(
dbv
,

351  (
EINVAL
);

354 
	`ENV_ENTER
(
dbv
, 

);

356 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

357 i(
hd_check
 &&

358 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
dbc
->
txn
 !
NULL
)) != 0) {

359 
hd_check
 = 0;

360 
r
;

364 
ags
 = 
ve_ags
;

366 
t
 = 
	`__db_jo_g
(
dbc
, 
key
, 
da
, 
ags
);

368 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

369 
t
 = 
t_t
;

371 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

372 
	`__dbt_ur
(
dbv
, 
key
, 
NULL
, NULL);

373  (
t
);

374 
	}
}

377 
	$__db_jo_g
(
dbc
, 
key_g
, 
da_g
, 
ags
)

378 
DBC
 *
dbc
;

379 
DBT
 *
key_g
, *
da_g
;

380 
u_t32_t
 
ags
;

382 
DB
 *
dbp
;

383 
DBC
 *

;

384 
DBT
 *
key_n
, 
key_n_mem
;

385 
DB_ENV
 *
dbv
;

386 
JOIN_CURSOR
 *
jc
;

387 
db_mage_da
, 
t
;

388 
u_t32_t
 
i
, 
j
, 
ݔi
, 
mods
;

390 
dbp
 = 
dbc
->dbp;

391 
dbv
 = 
dbp
->dbenv;

392 
jc
 = (
JOIN_CURSOR
 *)
dbc
->

;

394 
ݔi
 = 
	`LF_ISSET
(
DB_OPFLAGS_MASK
);

400 
mods
 = 
	`LF_ISSET
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 | 
DB_RMW
);

408 i(
	`F_ISSET
(
key_g
,

409 
DB_DBT_MALLOC
 | 
DB_DBT_USERCOPY
 | 
DB_DBT_USERMEM
)) {

411 
key_n
 = &
key_n_mem
;

412 
	`memt
(
key_n
, 0, (
DBT
));

418 
key_n
 = 
key_g
;

420 i(
	`F_ISSET
(
key_g
, 
DB_DBT_USERCOPY
))

421 
key_g
->
da
 = 
NULL
;

427 i(
	`F_ISSET
(
jc
, 
JOIN_RETRY
))

428 
mekey
;

429 
	`F_CLR
(
jc
, 
JOIN_RETRY
);

431 
y
: 
t
 = 
	`__dbc_g
(
jc
->
j_wkcurs
[0], &jc->
j_key
, 
key_n
,

432 
mods
 | (
jc
->
j_exhaued
[0] ? 
DB_NEXT_DUP
 : 
DB_CURRENT
));

434 i(
t
 =
DB_BUFFER_SMALL
) {

435 
jc
->
j_key
.
un
 <<= 1;

436 i((
t
 = 
	`__os_loc
(
dbv
,

437 
jc
->
j_key
.
un
, &jc->j_key.
da
)) != 0)

438 
mem_r
;

439 
y
;

447 i(
t
 != 0)

448 
r
;

457 
i
 = 1; i < 
jc
->
j_ncurs
; i++) {

458 i(
jc
->
j_fdupcurs
[
i
] !
NULL
 &&

459 (
t
 = 
	`__dbc_o
(
jc
->
j_fdupcurs
[
i
])) != 0)

460 
r
;

461 
jc
->
j_fdupcurs
[
i
] = 
NULL
;

473 i(
jc
->
j_curi
[1] =
NULL
)

474 
jc
->
j_exhaued
[0] = 1;

476 
jc
->
j_exhaued
[0] = 0;

479 
i
 = 1; i < 
jc
->
j_ncurs
; i++) {

480 
	`DB_ASSERT
(
dbv
, 
jc
->
j_curi
[
i
] !
NULL
);

481 i(
jc
->
j_wkcurs
[
i
] =
NULL
)

483 i((
t
 = 
	`__dbc_dup
(
jc
->
j_curi
[
i
],

484 &
jc
->
j_wkcurs
[
i
], 
DB_POSITION
)) != 0)

485 
r
;

487 
y2
: 

 = 
jc
->
j_wkcurs
[
i
];

489 i((
t
 = 
	`__db_jo_gxt
(

, &
jc
->
j_key
, 
key_n
,

490 
jc
->
j_exhaued
[
i
], 
mods
)=
DB_NOTFOUND
) {

502 --
i
;

503 
jc
->
j_exhaued
[
i
] = 1;

505 i(
i
 == 0) {

506 
j
 = 1; 
jc
->
j_wkcurs
[j] !
NULL
; j++) {

535 i((
t
 = 
	`__dbc_o
(

536 
jc
->
j_wkcurs
[
j
])) != 0)

537 
r
;

538 i(!
	`SORTED_SET
(
jc
, 0) ||

539 !
	`SORTED_SET
(
jc
, 
j
) ||

540 
jc
->
j_fdupcurs
[
j
] =
NULL
)

545 
jc
->
j_wkcurs
[
j
] = 
NULL
;

548 i((
	`__dbc_dup
(

549 
jc
->
j_fdupcurs
[
j
],

550 &
jc
->
j_wkcurs
[
j
],

551 
DB_POSITION
)) != 0)

552 
r
;

553 
jc
->
j_exhaued
[
j
] = 0;

555 
y
;

564 
j
 = 
i
 + 1;

565 
jc
->
j_wkcurs
[
j
] !
NULL
;

566 
j
++) {

567 i((
t
 =

568 
	`__dbc_o
(
jc
->
j_wkcurs
[
j
])) != 0)

569 
r
;

570 
jc
->
j_exhaued
[
j
] = 0;

571 i(
jc
->
j_fdupcurs
[
j
] =
NULL
)

572 
jc
->
j_wkcurs
[
j
] = 
NULL
;

573 i((
t
 = 
	`__dbc_dup
(
jc
->
j_fdupcurs
[
j
],

574 &
jc
->
j_wkcurs
[
j
], 
DB_POSITION
)) != 0)

575 
r
;

577 
y2
;

581 i(
t
 =
DB_BUFFER_SMALL
) {

582 
jc
->
j_key
.
un
 <<= 1;

583 i((
t
 = 
	`__os_loc
(
dbv
, 
jc
->
j_key
.
un
,

584 &
jc
->
j_key
.
da
)) != 0) {

585 
mem_r
: 
	`__db_rx
(
dbv
,

587 (
u_lg
)
jc
->
j_key
.
un
);

588 
r
;

590 
y2
;

593 i(
t
 != 0)

594 
r
;

606 i(
i
 + 1 !
jc
->
j_ncurs
)

607 
jc
->
j_exhaued
[
i
] = 0;

609 
jc
->
j_exhaued
[
i
] = 1;

618 i(
	`SORTED_SET
(
jc
, 
i
&& jc->
j_fdupcurs
[i] =
NULL
 && (
t
 =

619 
	`__dbc_dup
(

, &
jc
->
j_fdupcurs
[
i
], 
DB_POSITION
)) != 0)

620 
r
;

623 
r
: i(
t
 != 0)

624  (
t
);

627 
mekey
:

631 i((
t
 = 
	`__dbc_g
(
jc
->
j_wkcurs
[0],

632 &
jc
->
j_key
, 
key_n
, 
DB_CURRENT
 | 
mods
)) != 0)

633  (
t
);

634 
	`F_CLR
(
jc
, 
JOIN_RETRY
);

644 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
key_g
, 
DB_DBT_USERMEM
 | 
DB_DBT_MALLOC
 |

645 
DB_DBT_USERCOPY
|| 
key_n
 =
key_g
);

647 i((
	`F_ISSET
(
key_g
, 
DB_DBT_USERMEM
 | 
DB_DBT_MALLOC
 |

648 
DB_DBT_USERCOPY
)) &&

649 (
t
 = 
	`__db_tcy
(
dbv
,

650 
key_g
, 
key_n
->
da
, key_n->
size
, 
NULL
, NULL)) != 0) {

656 
	`F_SET
(
jc
, 
JOIN_RETRY
);

657  (
t
);

664 i(
ݔi
 =
DB_JOIN_ITEM
)

677 i(!
	`F_ISSET
(
da_g
, 
DB_DBT_MALLOC
 | 
DB_DBT_REALLOC
 |

678 
DB_DBT_USERMEM
 | 
DB_DBT_USERCOPY
))

679 
db_mage_da
 = 1;

681 
db_mage_da
 = 0;

682 i((
t
 = 
	`__db_jo_img
(
jc
->
j_imy
,

683 
jc
->
j_curi
[0]->
txn
, jc->j_curi[0]->
lock
, 
key_n
,

684 
db_mage_da
 ? &
jc
->
j_rda
 : 
da_g
, 
mods
)) != 0) {

685 i(
t
 =
DB_NOTFOUND
) {

686 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
) ||

687 (
jc
->
j_curi
[0]->
txn
 !
NULL
 && 
	`F_ISSET
(

688 
jc
->
j_curi
[0]->
txn
, 
TXN_READ_UNCOMMITTED
)))

689 
y
;

697 
t
 = 
	`__db_cdy_cru
(
jc
->
j_imy
);

705 
	`F_SET
(
jc
, 
JOIN_RETRY
);

707 i(
db_mage_da
 && 
t
 == 0) {

708 
da_g
->
da
 = 
jc
->
j_rda
.data;

709 
da_g
->
size
 = 
jc
->
j_rda
.size;

712  (
t
);

713 
	}
}

722 
	$__db_jo_o
(
dbc
)

723 
DBC
 *
dbc
;

725 
DB
 *
dbp
;

726 
DB_ENV
 *
dbv
;

727 
JOIN_CURSOR
 *
jc
;

728 
t
, 
t_t
;

729 
u_t32_t
 
i
;

731 
jc
 = (
JOIN_CURSOR
 *)
dbc
->

;

732 
dbp
 = 
dbc
->dbp;

733 
dbv
 = 
dbp
->dbenv;

734 
t
 = 
t_t
 = 0;

741 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

742 
	`TAILQ_REMOVE
(&
dbp
->
jo_queue
, 
dbc
, 
lks
);

743 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

745 
	`PANIC_CHECK
(
dbv
);

758 
i
 = 0; i < 
jc
->
j_ncurs
; i++) {

759 i(
jc
->
j_wkcurs
[
i
] !
NULL
 &&

760 (
t_t
 = 
	`__dbc_o
(
jc
->
j_wkcurs
[
i
])) != 0)

761 
t
 = 
t_t
;

762 i(
jc
->
j_fdupcurs
[
i
] !
NULL
 &&

763 (
t_t
 = 
	`__dbc_o
(
jc
->
j_fdupcurs
[
i
])) != 0)

764 
t
 = 
t_t
;

767 
	`__os_
(
dbv
, 
jc
->
j_exhaued
);

768 
	`__os_
(
dbv
, 
jc
->
j_curi
);

769 
	`__os_
(
dbv
, 
jc
->
j_wkcurs
);

770 
	`__os_
(
dbv
, 
jc
->
j_fdupcurs
);

771 
	`__os_
(
dbv
, 
jc
->
j_key
.
da
);

772 i(
jc
->
j_rda
.
da
 !
NULL
)

773 
	`__os_u
(
dbv
, 
jc
->
j_rda
.
da
);

774 
	`__os_
(
dbv
, 
jc
);

775 
	`__os_
(
dbv
, 
dbc
);

777  (
t
);

778 
	}
}

796 
	$__db_jo_gxt
(
dbc
, 
key
, 
da
, 
exhaued
, 
mods
)

797 
DBC
 *
dbc
;

798 
DBT
 *
key
, *
da
;

799 
u_t32_t
 
exhaued
, 
mods
;

801 
t
, 
cmp
;

802 
DB
 *
dbp
;

803 
DBT
 
lda
;

804 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

806 
dbp
 = 
dbc
->dbp;

807 
func
 = (
dbp
->
dup_com
 =
NULL
? 
__bam_defcmp
 : dbp->dup_compare;

809 
exhaued
) {

815 
	`memt
(&
lda
, 0, (
DBT
));

816 
	`F_SET
(&
lda
, 
DB_DBT_MALLOC
);

817 i((
t
 = 
	`__dbc_g
(
dbc
,

818 
key
, &
lda
, 
mods
 | 
DB_CURRENT
)) != 0)

820 
cmp
 = 
	`func
(
dbp
, 
da
, &
lda
);

821 i(
cmp
 == 0) {

827 i((
t
 = 
	`__db_tcy
(
dbp
->
dbv
, 
da
, 
lda
.data,

828 
lda
.
size
, &
da
->data, &data->size)) != 0)

829  (
t
);

830 
	`__os_u
(
dbp
->
dbv
, 
lda
.
da
);

839 
	`__os_u
(
dbp
->
dbv
, 
lda
.
da
);

842 
t
 = 
	`__dbc_g
(
dbc
, 
key
, 
da
, 
mods
 | 
DB_GET_BOTHC
);

845 
t
 = 
EINVAL
;

849  (
t
);

850 
	}
}

857 
	$__db_jo_cmp
(
a
, 
b
)

858 cڡ *
a
, *
b
;

860 
DBC
 *
db
, *
dbcb
;

861 
db_o_t
 
coua
, 
coub
;

863 
db
 = *((
DBC
 * cڡ *)
a
);

864 
dbcb
 = *((
DBC
 * cڡ *)
b
);

866 i(
	`__dbc_cou
(
db
, &
coua
) != 0 ||

867 
	`__dbc_cou
(
dbcb
, &
coub
) != 0)

870  (()
coua
 - ()
coub
);

871 
	}
}

879 
	$__db_jo_img
(
dbp
, 
txn
, 
lock
, 
key
, 
da
, 
ags
)

880 
DB
 *
dbp
;

881 
DB_TXN
 *
txn
;

882 
DB_LOCKER
 *
lock
;

883 
DBT
 *
key
, *
da
;

884 
u_t32_t
 
ags
;

886 
DBC
 *
dbc
;

887 
u_t32_t
 
rmw
;

888 
t
, 
t_t
;

890 i((
t
 = 
	`__db_curs_t
(
dbp
,

891 
txn
, 
dbp
->
ty
, 
PGNO_INVALID
, 0, 
lock
, &
dbc
)) != 0)

892  (
t
);

900 
rmw
 = 
	`LF_ISSET
(
DB_RMW
);

901 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
) ||

902 (
txn
 !
NULL
 && 
	`F_ISSET
xn, 
TXN_READ_UNCOMMITTED
)))

903 
	`F_SET
(
dbc
, 
DBC_READ_UNCOMMITTED
);

905 i(
	`LF_ISSET
(
DB_READ_COMMITTED
) ||

906 (
txn
 !
NULL
 && 
	`F_ISSET
xn, 
TXN_READ_COMMITTED
)))

907 
	`F_SET
(
dbc
, 
DBC_READ_COMMITTED
);

909 
	`LF_CLR
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 | 
DB_RMW
);

910 
	`DB_ASSERT
(
dbp
->
dbv
, 
ags
 == 0);

912 
	`F_SET
(
dbc
, 
DBC_TRANSIENT
);

919 
	`SET_RET_MEM
(
dbc
, 
dbp
);

921 
t
 = 
	`__dbc_g
(
dbc
, 
key
, 
da
, 
DB_SET
 | 
rmw
);

923 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

924 
t
 = 
t_t
;

926  (
t
);

927 
	}
}

937 
	$__db_cdy_cru
(
dbp
)

938 
DB
 *
dbp
;

940 
	`__db_rx
(
dbp
->
dbv
,

942  (
DB_SECONDARY_BAD
);

943 
	}
}

	@../db/db_meta.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/lock.h
"

49 
	~"dbc/mp.h
"

50 
	~"dbc/db_am.h
"

52 
__db__ma
 
__P
((
DB
 *, *, 
db_pgno_t
, 
u_t32_t
));

53 #ifde
HAVE_FTRUNCATE


54 
__db_li_st
 
__P
((
pgli
 *, 
u_t32_t
));

55 
__db_pglicmp
 
__P
((const *, const *));

56 
__db_un_li
 
__P
((
DBC
 *, 
DBMETA
 *,

57 
PAGE
 *, 
db_pgno_t
 *, 
u_t32_t
, u_int32_t));

67 
	$__db__ma
(
dbp
, 
p
, 
pgno
, 
pgty
)

68 
DB
 *
dbp
;

69 *
p
;

70 
db_pgno_t
 
pgno
;

71 
u_t32_t
 
pgty
;

73 
DB_LSN
 
ve_l
;

74 
DBMETA
 *
ma
;

76 
ma
 = (
DBMETA
 *)
p
;

77 
ve_l
 = 
ma
->
l
;

78 
	`memt
(
ma
, 0, (
DBMETA
));

79 
ma
->
l
 = 
ve_l
;

80 
ma
->
gesize
 = 
dbp
->
pgsize
;

81 i(
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
))

82 
	`FLD_SET
(
ma
->
maags
, 
DBMETA_CHKSUM
);

83 
ma
->
pgno
 =gno;

84 
ma
->
ty
 = (
u_t8_t
)
pgty
;

85 
	}
}

94 
	$__db_w
(
dbc
, 
ty
, 
gp
)

95 
DBC
 *
dbc
;

96 
u_t32_t
 
ty
;

97 
PAGE
 **
gp
;

99 
DB_ENV
 *
dbv
;

100 
DBMETA
 *
ma
;

101 
DB
 *
dbp
;

102 
DB_LOCK
 
mock
;

103 
DB_LSN
 
l
;

104 
DB_MPOOLFILE
 *
mpf
;

105 
PAGE
 *
h
;

106 
db_pgno_t
 
ϡ
, *
li
, 
pgno
, 
wxt
;

107 
exnd
, 
t
, 
t_t
;

109 
ma
 = 
NULL
;

110 
dbp
 = 
dbc
->dbp;

111 
dbv
 = 
dbp
->dbenv;

112 
mpf
 = 
dbp
->mpf;

113 
h
 = 
NULL
;

114 
wxt
 = 
PGNO_INVALID
;

116 
pgno
 = 
PGNO_BASE_MD
;

117 i((
t
 = 
	`__db_lg
(
dbc
,

118 
LCK_ALWAYS
, 
pgno
, 
DB_LOCK_WRITE
, 0, &
mock
)) != 0)

119 
r
;

120 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

121 
DB_MPOOL_DIRTY
, &
ma
)) != 0)

122 
r
;

123 
ϡ
 = 
ma
->
ϡ_pgno
;

124 i(
ma
->

 =
PGNO_INVALID
) {

125 i(
	`FLD_ISSET
(
ty
, 
P_DONTEXTEND
)) {

126 *
gp
 = 
NULL
;

127 
r
;

129 
ϡ
 = 
pgno
 = 
ma
->
ϡ_pgno
 + 1;

130 
	`ZERO_LSN
(
l
);

131 
exnd
 = 1;

133 
pgno
 = 
ma
->

;

134 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

135 
DB_MPOOL_DIRTY
, &
h
)) != 0)

136 
r
;

143 
wxt
 = 
h
->
xt_pgno
;

144 
l
 = 
h
->lsn;

145 
exnd
 = 0;

146 
	`DB_ASSERT
(
dbv
, 
	`TYPE
(
h
=
P_INVALID
);

148 i(
	`TYPE
(
h
!
P_INVALID
) {

149 
	`__db_rx
(
dbv
,

151 
dbp
->
ame
, (
u_lg
)
	`PGNO
(
h
), (u_lg)
	`TYPE
(h));

152  (
	`__db_nic
(
dbv
, 
EINVAL
));

157 
	`FLD_CLR
(
ty
, 
P_DONTEXTEND
);

164 i(
	`DBC_LOGGING
(
dbc
)) {

165 i((
t
 = 
	`__db_pg_loc_log
(
dbp
, 
dbc
->
txn
, &
	`LSN
(
ma
), 0,

166 &
	`LSN
(
ma
), 
PGNO_BASE_MD
, &
l
,

167 
pgno
, (
u_t32_t
)
ty
, 
wxt
, 
ma
->
ϡ_pgno
)) != 0)

168 
r
;

170 
	`LSN_NOT_LOGGED
(
	`LSN
(
ma
));

172 
ma
->

 = 
wxt
;

174 i(
exnd
 == 1) {

175 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

176 
DB_MPOOL_NEW
, &
h
)) != 0)

177 
r
;

178 
	`DB_ASSERT
(
dbv
, 
ϡ
 =
pgno
);

179 
ma
->
ϡ_pgno
 = 
pgno
;

180 
	`ZERO_LSN
(
h
->
l
);

181 
h
->
pgno
 =gno;

183 
	`LSN
(
h
LSN(
ma
);

185 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

186 
ma
 = 
NULL
;

187 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

188 
t
 = 
t_t
;

189 i(
t
 != 0)

190 
r
;

192 
ty
) {

193 
P_BTREEMETA
:

194 
P_HASHMETA
:

195 
P_QAMMETA
:

196 
	`__db__ma
(
dbp
, 
h
, h->
pgno
, 
ty
);

199 
	`P_INIT
(
h
, 
dbp
->
pgsize
,

200 
h
->
pgno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
ty
);

205 #ifde
HAVE_FTRUNCATE


206 i(
exnd
 == 0) {

207 
u_t32_t
 
ms
 = 0;

209 i((
t
 = 
	`__memp_g_li
(
dbp
->
mpf
, &
ms
, &
li
)) != 0)

210 
r
;

211 i(
ms
 != 0) {

212 
	`DB_ASSERT
(
dbv
, 
h
->
pgno
 =
li
[0]);

213 
	`memmove
(
li
, &li[1], (
ms
 - 1) * (*list));

214 i((
t
 = 
	`__memp_exnd_li
(

215 
dbp
->
mpf
, 
ms
 - 1, &
li
)) != 0)

216 
r
;

220 
	`COMPQUIET
(
li
, 
NULL
);

231 i(
ty
 !
P_OVERFLOW
 && !
	`F_ISSET
(
dbc
, 
DBC_OPD
) &&

232 
	`F_ISSET
(
dbc
->
dbp
, 
DB_AM_READ_UNCOMMITTED
&& dbc->
txn
 !
NULL
) {

233 i((
t
 = 
	`__db_lg
(
dbc
, 0,

234 
h
->
pgno
, 
DB_LOCK_WWRITE
, 0, &
mock
)) != 0)

235 
r
;

238 *
gp
 = 
h
;

241 
r
: i(
h
 !
NULL
)

242 ()
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

243 i(
ma
 !
NULL
)

244 ()
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

245 ()
	`__TLPUT
(
dbc
, 
mock
);

246  (
t
);

247 
	}
}

256 
	$__db_
(
dbc
, 
h
)

257 
DBC
 *
dbc
;

258 
PAGE
 *
h
;

260 
DBMETA
 *
ma
;

261 
DB
 *
dbp
;

262 
DBT
 
ddbt
, 
ldbt
;

263 
DB_LOCK
 
mock
;

264 
DB_LSN
 *
lp
;

265 
DB_MPOOLFILE
 *
mpf
;

266 
PAGE
 *
ev
;

267 
db_pgno_t
 
ϡ_pgno
, 
xt_pgno
, 
pgno
, 
ev_pgno
;

268 
u_t32_t
 
lag
;

269 
t
, 
t_t
;

270 #ifde
HAVE_FTRUNCATE


271 
db_pgno_t
 *
li
, *

;

272 
u_t32_t
 
m
, 
posi
, 
t
;

273 
do_un
;

276 
dbp
 = 
dbc
->dbp;

277 
mpf
 = 
dbp
->mpf;

278 
ev_pgno
 = 
PGNO_INVALID
;

279 
ma
 = 
NULL
;

280 
ev
 = 
NULL
;

281 #ifde
HAVE_FTRUNCATE


282 

 = 
NULL
;

283 
m
 = 0;

284 
do_un
 = 0;

297 
pgno
 = 
PGNO_BASE_MD
;

298 i((
t
 = 
	`__db_lg
(
dbc
,

299 
LCK_ALWAYS
, 
pgno
, 
DB_LOCK_WRITE
, 0, &
mock
)) != 0)

300 
r
;

303 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

304 #ifde
HAVE_FTRUNCATE


307 
DB_MPOOL_DIRTY
,

309 &
ma
)) != 0)

310 
r1
;

312 
ϡ_pgno
 = 
ma
->last_pgno;

313 
xt_pgno
 = 
ma
->

;

318 
lp
 = &
	`LSN
(
ma
);

320 
	`DB_ASSERT
(
dbp
->
dbv
, 
h
->
pgno
 !
xt_pgno
);

322 #ifde
HAVE_FTRUNCATE


329 i((
t
 = 
	`__memp_g_li
(
mpf
, &
m
, &
li
)) != 0)

330 
r1
;

331 i(
li
 =
NULL
)

332 
no_st
;

334 i(
h
->
pgno
 !
ϡ_pgno
) {

340 
posi
 = 0;

341 i(
m
 != 0) {

342 
	`__db_li_pos
(
h
->
pgno
, 
li
, 
m
, &
posi
);

344 
	`DB_ASSERT
(
dbp
->
dbv
, 
h
->
pgno
 !
li
[
posi
]);

347 i(
posi
 !0 || 
h
->
pgno
 > 
li
[0])

348 
ev_pgno
 = 
li
[
posi
];

352 i((
t
 = 
	`__memp_exnd_li
(
mpf
, 
m
 + 1, &
li
)) != 0)

353  (
t
);

354 i(
ev_pgno
 !
PGNO_INVALID
)

355 

 = &
li
[
posi
 + 1];

357 

 = 
li
;

358 i(
m
 !0 && 
posi
 !=elem)

359 
	`memmove
(

 + 1,p,

360 (
size_t
)((
u_t8_t
*)&
li
[
m
] - (u_t8_t*)

));

361 *

 = 
h
->
pgno
;

362 } i(
m
 != 0) {

364 

 = &
li
[
m
 - 1];p >=ist;p--)

365 i(--
ϡ_pgno
 !*

)

367 i(

 < 
li
 || 
ϡ_pgno
 < 
h
->
pgno
 - 1)

368 
do_un
 = 1;

369 
ϡ_pgno
 = 
ma
->last_pgno;

372 
no_st
:

373 i(
ev_pgno
 =
PGNO_INVALID
) {

374 i((
t
 = 
	`__memp_dty
(
mpf
,

375 &
ma
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

376 
r1
;

377 
lp
 = &
	`LSN
(
ma
);

379 
pgno
 = 
ev_pgno
;

380 i((
t
 = 
	`__memp_fg
(
mpf
,

381 &
pgno
, 
dbc
->
txn
, 
DB_MPOOL_DIRTY
, &
ev
)) != 0)

382 
r1
;

383 
xt_pgno
 = 
	`NEXT_PGNO
(
ev
);

384 
lp
 = &
	`LSN
(
ev
);

393 i(
	`DBC_LOGGING
(
dbc
)) {

394 
	`memt
(&
ldbt
, 0, (ldbt));

395 
ldbt
.
da
 = 
h
;

396 
ldbt
.
size
 = 
	`P_OVERHEAD
(
dbp
);

403 
lag
 = 0;

404 #ifde
HAVE_FTRUNCATE


405 i(
do_un
 =0 && 
h
->
pgno
 =
ϡ_pgno
)

406 
lag
 = 
DB_FLUSH
;

408 
h
->
ty
) {

409 
P_HASH
:

410 
P_IBTREE
:

411 
P_IRECNO
:

412 
P_LBTREE
:

413 
P_LRECNO
:

414 
P_LDUP
:

415 i(
h
->
s
 > 0) {

416 
ldbt
.
size
 +
h
->
s
 * (
db_dx_t
);

417 
ddbt
.
da
 = (
u_t8_t
 *)
h
 + 
	`HOFFSET
(h);

418 
ddbt
.
size
 = 
dbp
->
pgsize
 - 
	`HOFFSET
(
h
);

419 i((
t
 = 
	`__db_pg_da_log
(
dbp
, 
dbc
->
txn
,

420 
lp
, 
lag
,

421 
h
->
pgno
, 
lp
,gno,

422 &
ldbt
, 
xt_pgno
, 
ϡ_pgno
, &
ddbt
)) != 0)

423 
r1
;

424 
logged
;

427 
P_HASHMETA
:

428 
ldbt
.
size
 = (
HMETA
);

430 
P_BTREEMETA
:

431 
ldbt
.
size
 = (
BTMETA
);

433 
P_OVERFLOW
:

434 
ldbt
.
size
 +
	`OV_LEN
(
h
);

437 
	`DB_ASSERT
(
dbp
->
dbv
, 
h
->
ty
 !
P_QAMDATA
);

440 i((
t
 = 
	`__db_pg__log
(
dbp
,

441 
dbc
->
txn
, 
lp
, 
lag
, 
h
->
pgno
,

442 
lp
, 
pgno
, &
ldbt
, 
xt_pgno
, 
ϡ_pgno
)) != 0)

443 
r1
;

445 
	`LSN_NOT_LOGGED
(*
lp
);

447 
logged
:

448 #ifde
HAVE_FTRUNCATE


449 i(
do_un
) {

450 
t
 = (
u_t32_t
(

 - 
li
) + 1;

451 
ma
->
ϡ_pgno
--;

452 
t
 = 
	`__db_un_li
(

453 
dbc
, 
ma
, 
h
, 
li
, 
t
, 
m
);

454 
h
 = 
NULL
;

455 } i(
h
->
pgno
 =
ϡ_pgno
) {

456 
	`LSN
(
h
*
lp
;

457 
	`P_INIT
(
h
, 
dbp
->
pgsize
,

458 
h
->
pgno
, 
PGNO_INVALID
, 
xt_pgno
, 0, 
P_INVALID
);

459 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
DB_PRIORITY_VERY_LOW
)) != 0)

460 
r1
;

461 
h
 = 
NULL
;

463 i((
t
 = 
	`__memp_run
(
mpf
, 
ϡ_pgno
, 0)) != 0)

464 
r1
;

465 
	`DB_ASSERT
(
dbp
->
dbv
, 
ma
->
pgno
 =
PGNO_BASE_MD
);

466 
ma
->
ϡ_pgno
--;

467 
h
 = 
NULL
;

476 i((
t
 = 
	`__memp_dty
(
mpf
,

477 &
h
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

478 
r1
;

479 
	`LSN
(
h
*
lp
;

480 
	`P_INIT
(
h
, 
dbp
->
pgsize
,

481 
h
->
pgno
, 
PGNO_INVALID
, 
xt_pgno
, 0, 
P_INVALID
);

482 #ifde
DIAGNOSTIC


483 
	`memt
((
u_t8_t
 *
h
 + 
	`P_OVERHEAD
(
dbp
),

484 
CLEAR_BYTE
, 
dbp
->
pgsize
 - 
	`P_OVERHEAD
(dbp));

486 i(
ev_pgno
 =
PGNO_INVALID
)

487 
ma
->

 = 
h
->
pgno
;

489 
	`NEXT_PGNO
(
ev

h
->
pgno
;

493 
r1
: i(
ma
 !
NULL
 && (
t_t
 =

494 
	`__memp_ut
(
mpf
, (
PAGE
 *)
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

495 
t
 = 
t_t
;

496 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

497 
t
 = 
t_t
;

498 i(
ev
 !(
PAGE
*
ma
 &&v !
NULL
 &&

499 (
t_t
 = 
	`__memp_ut
(
mpf
, 
ev
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

500 
t
 = 
t_t
;

503 
r
: i(
h
 !
NULL
 &&

504 (
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

505 
t
 = 
t_t
;

511  (
t
);

512 
	}
}

514 #ifde
HAVE_FTRUNCATE


525 
	$__db_li_pos
(
pgno
, 
li
, 
m
, 
po
)

526 
db_pgno_t
 
pgno
;

527 
db_pgno_t
 *
li
;

528 
u_t32_t
 
m
;

529 
u_t32_t
 *
po
;

531 
u_t32_t
 
ba
, 
dx
, 
lim
;

533 
dx
 = 0;

534 
ba
 = 0, 
lim
 = 
m
;im != 0;im >>= 1) {

535 
dx
 = 
ba
 + (
lim
 >> 1);

536 i(
pgno
 =
li
[
dx
]) {

537 *
po
 = 
dx
;

540 i(
pgno
 > 
li
[
dx
]) {

541 
ba
 = 
dx
 + 1;

542 --
lim
;

545 i(
ba
 != 0)

546 
ba
--;

547 *
po
 = 
ba
;

549 
	}
}

552 
	$__db_pglicmp
(
a
, 
b
)

553 cڡ *
a
, *
b
;

555 
pgli
 *

, *
bp
;

557 

 = (
pgli
 *)
a
;

558 
bp
 = (
pgli
 *)
b
;

560  ((

->
pgno
 > 
bp
->pgno) ? 1 : (ap->pgno < bp->pgno) ? -1: 0);

561 
	}
}

567 
	$__db_li_st
(
li
, 
ms
)

568 
pgli
 *
li
;

569 
u_t32_t
 
ms
;

571 
	`qst
(
li
, (
size_t
)
ms
, (
pgli
), 
__db_pglicmp
);

572 
	}
}

584 
	$__db_pg_un
(
dbp
, 
txn
, 
li
, 
c_da
, 
mp
, 
ϡ_pgno
, 
lp
, 
_covy
)

585 
DB
 *
dbp
;

586 
DB_TXN
 *
txn
;

587 
pgli
 *
li
;

588 
DB_COMPACT
 *
c_da
;

589 
u_t32_t
 *
mp
;

590 
db_pgno_t
 *
ϡ_pgno
;

591 
DB_LSN
 *
lp
;

592 
_covy
;

594 
DB_MPOOLFILE
 *
mpf
;

595 
PAGE
 *
h
;

596 
pgli
 *

;

597 
db_pgno_t
 
pgno
;

598 
u_t32_t
 
ms
;

599 
t
;

601 
t
 = 0;

603 
mpf
 = 
dbp
->mpf;

604 
ms
 = *
mp
;

606 
	`__db_li_st
(
li
, 
ms
);

609 
pgno
 = *
ϡ_pgno
;

610 

 = &
li
[
ms
 - 1];

611 
ms
 != 0) {

612 i(

->
pgno
 !=gno)

614 
pgno
--;

615 
ms
--;

616 

--;

625 

 = 
li
;< &li[
ms
];p++) {

626 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
txn
, 0, &
h
)) != 0) {

628 i(
_covy
 && 
t
 =
DB_PAGE_NOTFOUND
) {

629 
t
 = 0;

632 
r
;

634 i(!
_covy
 || 
	`LOG_COMPARE
(&
	`LSN
(
h
), &

->
l
) == 0) {

635 i((
t
 = 
	`__memp_dty
(
mpf
,

636 &
h
, 
txn
, 
dbp
->
iܙy
, 0)) != 0) {

637 ()
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
);

638 
r
;

640 i(

 =&
li
[
ms
 - 1])

641 
	`NEXT_PGNO
(
h

PGNO_INVALID
;

643 
	`NEXT_PGNO
(
h


[1].
pgno
;

644 
	`DB_ASSERT
(
mpf
->
dbv
, 
	`NEXT_PGNO
(
h
< *
ϡ_pgno
);

646 
	`LSN
(
h
*
lp
;

648 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)) != 0)

649 
r
;

652 i(
pgno
 !*
ϡ_pgno
) {

653 i((
t
 = 
	`__memp_run
(
mpf
,

654 
pgno
 + 1, 
_covy
 ? 
MP_TRUNC_RECOVER
 : 0)) != 0)

655 
r
;

656 i(
c_da
)

657 
c_da
->
com_ges_und
 +*
ϡ_pgno
 - 
pgno
;

658 *
ϡ_pgno
 = 
pgno
;

660 *
mp
 = 
ms
;

662 
r
:  (
t
);

663 
	}
}

675 
	$__db__un
(
dbp
, 
txn
, 
ags
, 
c_da
, 
lip
, 
mp
, 
ϡ_pgn
)

676 
DB
 *
dbp
;

677 
DB_TXN
 *
txn
;

678 
u_t32_t
 
ags
;

679 
DB_COMPACT
 *
c_da
;

680 
pgli
 **
lip
;

681 
u_t32_t
 *
mp
;

682 
db_pgno_t
 *
ϡ_pgn
;

684 
DBC
 *
dbc
;

685 
DB_ENV
 *
dbv
;

686 
DBMETA
 *
ma
;

687 
DBT
 
ddbt
;

688 
DB_LOCK
 
mock
;

689 
DB_LSN
 
nu_l
;

690 
DB_MPOOLFILE
 *
mpf
;

691 
PAGE
 *
h
;

692 
db_pgno_t
 
pgno
;

693 
u_t32_t
 
ms
;

694 
pgli
 *
li
, *

;

695 
t
, 
t_t
;

696 
size_t
 
size
;

698 
	`COMPQUIET
(
ags
, 0);

699 
li
 = 
NULL
;

700 
ma
 = 
NULL
;

701 
dbv
 = 
dbp
->dbenv;

702 
mpf
 = 
dbp
->mpf;

703 
h
 = 
NULL
;

704 
ms
 = 0;

705 i(
lip
 !
NULL
) {

706 *
lip
 = 
NULL
;

707 
	`DB_ASSERT
(
dbv
, 
mp
 !
NULL
);

708 *
mp
 = 0;

711 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 
DB_WRITELOCK
)) != 0)

712  (
t
);

714 
pgno
 = 
PGNO_BASE_MD
;

715 i((
t
 = 
	`__db_lg
(
dbc
,

716 
LCK_ALWAYS
, 
pgno
, 
DB_LOCK_WRITE
, 0, &
mock
)) != 0)

717 
r
;

718 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

719 
DB_MPOOL_DIRTY
, &
ma
)) != 0)

720 
r
;

722 i(
ϡ_pgn
 !
NULL
)

723 *
ϡ_pgn
 = 
ma
->
ϡ_pgno
;

724 i((
pgno
 = 
ma
->

=
PGNO_INVALID
)

725 
de
;

727 
size
 = 128;

728 i((
t
 = 
	`__os_mloc
(
dbv
, 
size
 * (*
li
), &list)) != 0)

729 
r
;

730 

 = 
li
;

733 i(

 =&
li
[
size
]) {

734 
size
 *= 2;

735 i((
t
 = 
	`__os_loc
(
dbv
,

736 
size
 * (*
li
), &list)) != 0)

737 
r
;

738 

 = &
li
[
size
 / 2];

740 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
, 0, &
h
)) != 0)

741 
r
;

743 

->
pgno
 =gno;

744 

->
l
 = 
	`LSN
(
h
);

745 
pgno
 = 
	`NEXT_PGNO
(
h
);

746 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)) != 0)

747 
r
;

748 

++;

749 } 
pgno
 !
PGNO_INVALID
);

750 
ms
 = (
u_t32_t
)(

 - 
li
);

753 i(
	`DBC_LOGGING
(
dbc
)) {

754 
ddbt
.
da
 = 
li
;

755 
ddbt
.
size
 = 
ms
 * (*

);

756 
	`ZERO_LSN
(
nu_l
);

757 i((
t
 = 
	`__db_pg_st_log
(
dbp
,

758 
dbc
->
txn
, &
	`LSN
(
ma
), 
DB_FLUSH
, 
PGNO_BASE_MD
, &LSN(meta),

759 
PGNO_INVALID
, &
nu_l
, 
ma
->
ϡ_pgno
, &
ddbt
)) != 0)

760 
r
;

762 
	`LSN_NOT_LOGGED
(
	`LSN
(
ma
));

764 i((
t
 = 
	`__db_pg_un
(
dbp
, 
txn
, 
li
, 
c_da
,

765 &
ms
, &
ma
->
ϡ_pgno
, &
	`LSN
(meta), 0)) != 0)

766 
r
;

768 i(
ms
 == 0)

769 
ma
->

 = 
PGNO_INVALID
;

771 
ma
->

 = 
li
[0].
pgno
;

773 
de
: i(
ϡ_pgn
 !
NULL
)

774 *
ϡ_pgn
 = 
ma
->
ϡ_pgno
;

781 i(
c_da
)

782 
c_da
->
com_un
 = (
u_t32_t
)
ma
->
ϡ_pgno
 - 
ms
;

784 i(
ms
 !0 && 
lip
 !
NULL
) {

785 *
lip
 = 
li
;

786 *
mp
 = 
ms
;

787 
li
 = 
NULL
;

790 
r
: i(
li
 !
NULL
)

791 
	`__os_
(
dbv
, 
li
);

792 i(
ma
 !
NULL
 && (
t_t
 =

793 
	`__memp_ut
(
mpf
, (
PAGE
 *)
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

794 
t
 = 
t_t
;

795 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

796 
t
 = 
t_t
;

797 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

798 
t
 = 
t_t
;

799  (
t
);

800 
	}
}

803 
	$__db_un_li
(
dbc
, 
ma
, 
h
, 
li
, 
t
, 
m
)

804 
DBC
 *
dbc
;

805 
DBMETA
 *
ma
;

806 
PAGE
 *
h
;

807 
db_pgno_t
 *
li
;

808 
u_t32_t
 
t
, 
m
;

810 
DB
 *
dbp
;

811 
DB_LSN
 
nu_l
;

812 
DB_MPOOLFILE
 *
mpf
;

813 
DBT
 
ddbt
;

814 
PAGE
 *
ϡ_
, *
pg
;

815 
db_pgno_t
 *

;

816 
pgli
 *
i
, *

;

817 
t
;

819 
dbp
 = 
dbc
->dbp;

820 
mpf
 = 
dbp
->mpf;

821 
i
 = 
NULL
;

822 
ϡ_
 = 
NULL
;

824 i(
t
 != 0 &&

825 (
t
 = 
	`__memp_fg
(
mpf
, &
li
[
t
 - 1], 
dbc
->
txn
,

826 
DB_MPOOL_DIRTY
, &
ϡ_
)) != 0)

827 
r
;

829 i(
	`DBC_LOGGING
(
dbc
)) {

830 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
,

831 (
m
 - 
t
* (*

), &
i
)) != 0)

832 
r
;

834 

 = 
i
;

835 

 = &
li
[
t
];< &li[
m
];p++) {

836 

->
pgno
 = *

;

837 i((
t
 = 
	`__memp_fg
(
mpf
, 

, 
dbc
->
txn
, 0, &
pg
)) != 0)

838 
r
;

839 

->
l
 = 
	`LSN
(
pg
);

840 i((
t
 =

841 
	`__memp_ut
(
mpf
, 
pg
, 
DB_PRIORITY_VERY_LOW
)) != 0)

842 
r
;

843 

++;

845 
ddbt
.
da
 = 
i
;

846 
ddbt
.
size
 = (
m
 - 
t
* (*

);

847 
	`ZERO_LSN
(
nu_l
);

848 i(
ϡ_
 !
NULL
) {

849 i((
t
 = 
	`__db_pg_st_log
(
dbp
, 
dbc
->
txn
, &
	`LSN
(
ma
),

850 
DB_FLUSH
, 
	`PGNO
(
ma
), &
	`LSN
(ma), PGNO(
ϡ_
),

851 &
	`LSN
(
ϡ_
), 
ma
->
ϡ_pgno
, &
ddbt
)) != 0)

852 
r
;

853 } i((
t
 = 
	`__db_pg_st_log
(
dbp
, 
dbc
->
txn
,

854 &
	`LSN
(
ma
), 
DB_FLUSH
, 
	`PGNO
(meta), &LSN(meta),

855 
PGNO_INVALID
, &
nu_l
, 
ma
->
ϡ_pgno
, &
ddbt
)) != 0)

856 
r
;

858 
	`LSN_NOT_LOGGED
(
	`LSN
(
ma
));

859 i(
ϡ_
 !
NULL
)

860 
	`LSN
(
ϡ_
LSN(
ma
);

862 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
DB_PRIORITY_VERY_LOW
)) != 0)

863 
r
;

864 
h
 = 
NULL
;

865 i((
t
 = 
	`__memp_run
(
mpf
, 
li
[
t
], 0)) != 0)

866 
r
;

867 
ma
->
ϡ_pgno
 = 
li
[
t
] - 1;

869 i(
t
 == 0)

870 
ma
->

 = 
PGNO_INVALID
;

872 
	`NEXT_PGNO
(
ϡ_

PGNO_INVALID
;

873 i((
t
 = 
	`__memp_ut
(
mpf
, 
ϡ_
, 
dbc
->
iܙy
)) != 0)

874 
r
;

875 
ϡ_
 = 
NULL
;

879 
t
 = 
	`__memp_exnd_li
(
mpf
, 
t
, &
li
);

881 
r
: i(
i
 !
NULL
)

882 
	`__os_
(
dbp
->
dbv
, 
i
);

885 i(
h
 !
NULL
)

886 ()
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

887 i(
ϡ_
 !
NULL
)

888 ()
	`__memp_ut
(
mpf
, 
ϡ_
, 
dbc
->
iܙy
);

890  (
t
);

891 
	}
}

894 #ifde
DEBUG


902 
	$__db_rt
(
dbc
)

903 
DBC
 *
dbc
;

905 
DB_ENV
 *
dbv
;

906 
DB
 *
dbp
;

907 
DB_LOCKREQ
 
q
;

909 
dbp
 = 
dbc
->dbp;

910 
dbv
 = 
dbp
->dbenv;

912 i(
	`LOCKING_ON
(
dbv
)) {

913 
q
.

 = 
DB_LOCK_DUMP
;

914 ()
	`__lock_vec
(
dbv
, 
dbc
->
lock
, 0, &
q
, 1, 
NULL
);

917 
	}
}

928 
	$__db_lg
(
dbc
, 
ai
, 
pgno
, 
mode
, 
lkags
, 
lockp
)

929 
DBC
 *
dbc
;

930 
ai
;

931 
db_pgno_t
 
pgno
;

932 
db_lockmode_t
 
mode
;

933 
u_t32_t
 
lkags
;

934 
DB_LOCK
 *
lockp
;

936 
DB
 *
dbp
;

937 
DB_ENV
 *
dbv
;

938 
DB_LOCKREQ
 
coue
[3], *
qp
;

939 
DB_TXN
 *
txn
;

940 
has_timeout
, 
i
, 
t
;

942 
dbp
 = 
dbc
->dbp;

943 
dbv
 = 
dbp
->dbenv;

944 
txn
 = 
dbc
->txn;

950 i(
	`CDB_LOCKING
(
dbv
|| !
	`LOCKING_ON
(dbenv) ||

951 (
	`MULTIVERSION
(
dbp
&& 
mode
 =
DB_LOCK_READ
 &&

952 
dbc
->
txn
 !
NULL
 && 
	`F_ISSET
(dbc->txn, 
TXN_SNAPSHOT
)) ||

953 
	`F_ISSET
(
dbc
, 
DBC_DONTLOCK
|| (F_ISSET(dbc, 
DBC_RECOVER
) &&

954 (
ai
 !
LCK_ROLLBACK
 || 
	`IS_REP_CLIENT
(
dbv
))) ||

955 (
ai
 !
LCK_ALWAYS
 && 
	`F_ISSET
(
dbc
, 
DBC_OPD
))) {

956 
	`LOCK_INIT
(*
lockp
);

960 
dbc
->
lock
.
pgno
 =gno;

961 i(
lkags
 & 
DB_LOCK_RECORD
)

962 
dbc
->
lock
.
ty
 = 
DB_RECORD_LOCK
;

964 
dbc
->
lock
.
ty
 = 
DB_PAGE_LOCK
;

965 
lkags
 &~
DB_LOCK_RECORD
;

966 i(
ai
 =
LCK_ROLLBACK
)

967 
lkags
 |
DB_LOCK_ABORT
;

973 i(
	`DB_NONBLOCK
(
dbc
))

974 
lkags
 |
DB_LOCK_NOWAIT
;

976 i(
	`F_ISSET
(
dbc
, 
DBC_READ_UNCOMMITTED
&& 
mode
 =
DB_LOCK_READ
)

977 
mode
 = 
DB_LOCK_READ_UNCOMMITTED
;

979 
has_timeout
 = 
	`F_ISSET
(
dbc
, 
DBC_RECOVER
) ||

980 (
txn
 !
NULL
 && 
	`F_ISSET
xn, 
TXN_LOCKTIMEOUT
));

989 i((
ai
 !
LCK_COUPLE
 &&i !
LCK_COUPLE_ALWAYS
) ||

990 !
	`LOCK_ISSET
(*
lockp
))

991 
ai
 = 0;

992 i(
dbc
->
txn
 =
NULL
 || 
ai
 =
LCK_COUPLE_ALWAYS
)

993 
ai
 = 
LCK_COUPLE
;

994 i(
	`F_ISSET
(
dbc
,

995 
DBC_READ_COMMITTED
&& 
lockp
->
mode
 =
DB_LOCK_READ
)

996 
ai
 = 
LCK_COUPLE
;

997 i(
	`F_ISSET
(
dbc
,

998 
DBC_READ_UNCOMMITTED
&& 
lockp
->
mode
 =
DB_LOCK_READ_UNCOMMITTED
)

999 
ai
 = 
LCK_COUPLE
;

1000 i(
	`F_ISSET
(
dbc
->
dbp
,

1001 
DB_AM_READ_UNCOMMITTED
&& 
lockp
->
mode
 =
DB_LOCK_WRITE
)

1002 
ai
 = 
LCK_DOWNGRADE
;

1004 
ai
 = 0;

1006 
i
 = 0;

1007 
ai
) {

1009 i(
has_timeout
)

1010 
coue
;

1011 
t
 = 
	`__lock_g
(
dbv
,

1012 
dbc
->
lock
, 
lkags
, &dbc->
lock_dbt
, 
mode
, 
lockp
);

1015 
LCK_DOWNGRADE
:

1016 
coue
[0].

 = 
DB_LOCK_GET
;

1017 
coue
[0].
obj
 = 
NULL
;

1018 
coue
[0].
lock
 = *
lockp
;

1019 
coue
[0].
mode
 = 
DB_LOCK_WWRITE
;

1020 
	`UMRW_SET
(
coue
[0].
timeout
);

1021 
i
++;

1023 
LCK_COUPLE
:

1024 
coue
: coue[
i
].

 = 
has_timeout
? 
DB_LOCK_GET_TIMEOUT
 : 
DB_LOCK_GET
;

1025 
coue
[
i
].
obj
 = &
dbc
->
lock_dbt
;

1026 
coue
[
i
].
mode
 = mode;

1027 
	`UMRW_SET
(
coue
[
i
].
timeout
);

1028 
i
++;

1029 i(
has_timeout
)

1030 
coue
[0].
timeout
 =

1031 
	`F_ISSET
(
dbc
, 
DBC_RECOVER
? 0 : 
txn
->
lock_timeout
;

1032 i(
ai
 =
LCK_COUPLE
 ||i =
LCK_DOWNGRADE
) {

1033 
coue
[
i
].

 = 
DB_LOCK_PUT
;

1034 
coue
[
i
].
lock
 = *
lockp
;

1035 
i
++;

1038 
t
 = 
	`__lock_vec
(
dbv
,

1039 
dbc
->
lock
, 
lkags
, 
coue
, 
i
, &
qp
);

1040 i(
t
 =0 || 
qp
 =&
coue
[
i
 - 1])

1041 *
lockp
 = 
i
 =1 ? 
coue
[0].
lock
 : couple[i - 2].lock;

1045 i(
txn
 !
NULL
 && 
t
 =
DB_LOCK_DEADLOCK
)

1046 
	`F_SET
(
txn
, 
TXN_DEADLOCK
);

1047  ((
t
 =
DB_LOCK_NOTGRANTED
 &&

1048 !
	`F_ISSET
(
dbv
, 
DB_ENV_TIME_NOTGRANTED
)? 
DB_LOCK_DEADLOCK
 : 
t
);

1049 
	}
}

1058 
	$__db_ut
(
dbc
, 
lockp
)

1059 
DBC
 *
dbc
;

1060 
DB_LOCK
 *
lockp
;

1062 
DB_ENV
 *
dbv
;

1063 
DB_LOCKREQ
 
coue
[2], *
qp
;

1064 
ai
, 
t
;

1071 i(
	`F_ISSET
(
dbc
->
dbp
,

1072 
DB_AM_READ_UNCOMMITTED
&& 
lockp
->
mode
 =
DB_LOCK_WRITE
)

1073 
ai
 = 
LCK_DOWNGRADE
;

1074 i(
dbc
->
txn
 =
NULL
)

1075 
ai
 = 
LCK_COUPLE
;

1076 i(
	`F_ISSET
(
dbc
,

1077 
DBC_READ_COMMITTED
&& 
lockp
->
mode
 =
DB_LOCK_READ
)

1078 
ai
 = 
LCK_COUPLE
;

1079 i(
	`F_ISSET
(
dbc
,

1080 
DBC_READ_UNCOMMITTED
&& 
lockp
->
mode
 =
DB_LOCK_READ_UNCOMMITTED
)

1081 
ai
 = 
LCK_COUPLE
;

1083 
ai
 = 0;

1085 
dbv
 = 
dbc
->
dbp
->dbenv;

1086 
ai
) {

1087 
LCK_COUPLE
:

1088 
t
 = 
	`__lock_put
(
dbv
, 
lockp
);

1090 
LCK_DOWNGRADE
:

1091 
coue
[0].

 = 
DB_LOCK_GET
;

1092 
coue
[0].
obj
 = 
NULL
;

1093 
coue
[0].
mode
 = 
DB_LOCK_WWRITE
;

1094 
coue
[0].
lock
 = *
lockp
;

1095 
	`UMRW_SET
(
coue
[0].
timeout
);

1096 
coue
[1].

 = 
DB_LOCK_PUT
;

1097 
coue
[1].
lock
 = *
lockp
;

1098 
t
 = 
	`__lock_vec
(
dbv
, 
dbc
->
lock
, 0, 
coue
, 2, &
qp
);

1099 i(
t
 =0 || 
qp
 =&
coue
[1])

1100 *
lockp
 = 
coue
[0].
lock
;

1103 
t
 = 0;

1107  (
t
);

1108 
	}
}

	@../db/db_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/yo.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/b.h
"

15 
	~"dbc/hash.h
"

16 
	~"dbc/lock.h
"

17 
	~"dbc/mp.h
"

18 
	~"dbc/qam.h
"

19 
	~"dbc/txn.h
"

21 #ifde
HAVE_RPC


22 #ifde
HAVE_SYSTEM_INCLUDE_FILES


23 
	~<c/c.h
>

25 
	~"db_rv.h
"

26 
	~"dbc_auto/c__ext.h
"

29 
__db_g_byswd
 
__P
((
DB
 *, *));

30 
__db_g_dbme
 
__P
((
DB
 *, const **, const **));

31 
DB_ENV
 *
__db_g_v
 
__P
((
DB
 *));

32 
DB_MPOOLFILE
 *
__db_g_mpf
 
__P
((
DB
 *));

33 
__db_g_muɝ
 
__P
((
DB
 *));

34 
__db_g_iڮ
 
__P
((
DB
 *));

35 
__db_g_ty
 
__P
((
DB
 *, 
DBTYPE
 *
dbty
));

36 
__db_
 
__P
((
DB
 *, 
u_t32_t
));

37 
__db_t_loc
 
__P
((
DB
 *, *(*)(
size_t
),

38 *(*)(*, 
size_t
), (*)(*)));

39 
__db_t_nd_o
 
	`__P
((
DB
 *, (*)(DB *, 
DBT
 *, 
db_o_t
)));

40 
__db_g_chesize
 
	`__P
((
DB
 *, 
u_t32_t
 *, u_int32_t *, *));

41 
__db_t_chesize
 
	`__P
((
DB
 *, 
u_t32_t
, u_int32_t, ));

42 
__db_t_dup_com


43 
	`__P
((
DB
 *, (*)(DB *, cڡ 
DBT
 *, const DBT *)));

44 
__db_g_y_ags
 
	`__P
((
DB
 *, 
u_t32_t
 *));

45 
__db_t_y
 
	`__P
((
DB
 *, cڡ *, 
u_t32_t
));

46 
__db_t_edback
 
	`__P
((
DB
 *, (*)(DB *, , )));

47 
__db_m_ags
 
	`__P
((
DB
 *, 
u_t32_t
 *, u_int32_t *));

48 
__db_g_gesize
 
	`__P
((
DB
 *, 
u_t32_t
 *));

49 
__db_t_nic
 
	`__P
((
DB
 *, (*)(
DB_ENV
 *, )));

50 
__db_t_iܙy
 
	`__P
((
DB
 *, 
DB_CACHE_PRIORITY
));

51 
__db_g_iܙy
 
	`__P
((
DB
 *, 
DB_CACHE_PRIORITY
 *));

52 
__db_t_r


53 
	`__P
((
DB
 *, (*)(cڡ 
DB_ENV
 *, const *, const *)));

54 
__db_g_rfe
 
	`__P
((
DB
 *, 
FILE
 **));

55 
__db_t_rfe
 
	`__P
((
DB
 *, 
FILE
 *));

56 
__db_g_fx
 
	`__P
((
DB
 *, const **));

57 
__db_t_fx
 
	`__P
((
DB
 *, const *));

58 
__db_t_msg


59 
	`__P
((
DB
 *, (*)(cڡ 
DB_ENV
 *, const *)));

60 
__db_g_msgfe
 
	`__P
((
DB
 *, 
FILE
 **));

61 
__db_t_msgfe
 
	`__P
((
DB
 *, 
FILE
 *));

62 
__dbh_r
 
	`__P
((
DB
 *, , const *, ...));

63 
__dbh_rx
 
	`__P
((
DB
 *, const *, ...));

72 
	$db_
(
db
, 
dbv
, 
ags
)

73 
DB
 **
db
;

74 
DB_ENV
 *
dbv
;

75 
u_t32_t
 
ags
;

77 
DB_THREAD_INFO
 *

;

78 
t
;

80 

 = 
NULL
;

83 
ags
) {

86 
DB_XA_CREATE
:

87 i(
dbv
 !
NULL
) {

88 
	`__db_rx
(
dbv
,

90  (
EINVAL
);

99 
dbv
 = 
	`TAILQ_FIRST
(&
	`DB_GLOBAL
(
db_vq
));

102  (
	`__db_
(
dbv
, "db_create", 0));

105 i(
dbv
 !
NULL
)

106 
	`ENV_ENTER
(
dbv
, 

);

107 
t
 = 
	`__db__
(
db
, 
dbv
, 
ags
);

108 i(
dbv
 !
NULL
)

109 
	`ENV_LEAVE
(
dbv
, 

);

111  (
t
);

112 
	}
}

121 
	$__db__
(
db
, 
dbv
, 
ags
)

122 
DB
 **
db
;

123 
DB_ENV
 *
dbv
;

124 
u_t32_t
 
ags
;

126 
DB
 *
dbp
;

127 
DB_REP
 *
db_p
;

128 
t
;

130 *
db
 = 
NULL
;

133 i(
dbv
 =
NULL
) {

134 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0)

135  (
t
);

136 
	`F_SET
(
dbv
, 
DB_ENV_DBLOCAL
);

140 i((
t
 = 
	`__os_oc
(
dbv
, 1, (*
dbp
), &dbp)) != 0)

141 
r
;

143 
dbp
->
dbv
 = dbenv;

144 i((
t
 = 
	`__db_
(
dbp
, 
ags
)) != 0)

145 
r
;

147 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

148 ++
dbv
->
db_f
;

149 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

156 
dbp
->
timeamp
 = 
	`REP_ON
(
dbv
) ?

157 ((
REGENV
 *)((
REGINFO
 *)
dbv
->
gfo
)->
imy
)->
p_timeamp
 : 0;

163 
db_p
 = 
dbv
->
p_hd
;

164 
dbp
->
fid_g
 = 
	`REP_ON
(
dbv
? ((
REP
 *)
db_p
->
gi
)->
g
 : 0;

167 i(!
	`RPC_ON
(
dbv
) &&

168 (
t
 = 
	`__memp_f
(
dbv
, &
dbp
->
mpf
)) != 0)

169 
r
;

171 
dbp
->
ty
 = 
DB_UNKNOWN
;

173 *
db
 = 
dbp
;

176 
r
: i(
dbp
 !
NULL
) {

177 i(
dbp
->
mpf
 !
NULL
)

178 ()
	`__memp_fo
(
dbp
->
mpf
, 0);

179 
	`__os_
(
dbv
, 
dbp
);

182 i(
	`F_ISSET
(
dbv
, 
DB_ENV_DBLOCAL
))

183 ()
	`__v_o
(
dbv
, 0);

185  (
t
);

186 
	}
}

193 
	$__db_
(
dbp
, 
ags
)

194 
DB
 *
dbp
;

195 
u_t32_t
 
ags
;

197 
t
;

199 
dbp
->
lock
 = 
NULL
;

200 
	`LOCK_INIT
(
dbp
->
hd_lock
);

202 
	`TAILQ_INIT
(&
dbp
->
_queue
);

203 
	`TAILQ_INIT
(&
dbp
->
aive_queue
);

204 
	`TAILQ_INIT
(&
dbp
->
jo_queue
);

205 
	`LIST_INIT
(&
dbp
->
s_cds
);

207 
	`FLD_SET
(
dbp
->
am_ok
,

208 
DB_OK_BTREE
 | 
DB_OK_HASH
 | 
DB_OK_QUEUE
 | 
DB_OK_RECNO
);

211 
dbp
->
assoc
 = 
__db_assoc_
;

212 
dbp
->
o
 = 
__db_o_
;

213 
dbp
->
com
 = 
__db_com_
;

214 
dbp
->
curs
 = 
__db_curs_
;

215 
dbp
->
d
 = 
__db_d_
;

216 
dbp
->
dump
 = 
__db_dump_
;

217 
dbp
->
r
 = 
__dbh_r
;

218 
dbp
->
rx
 = 
__dbh_rx
;

219 
dbp
->
exis
 = 
__db_exis
;

220 
dbp
->
fd
 = 
__db_fd_
;

221 
dbp
->
g
 = 
__db_g_
;

222 
dbp
->
g_byswd
 = 
__db_g_byswd
;

223 
dbp
->
g_chesize
 = 
__db_g_chesize
;

224 
dbp
->
g_dbme
 = 
__db_g_dbme
;

225 
dbp
->
g_y_ags
 = 
__db_g_y_ags
;

226 
dbp
->
g_v
 = 
__db_g_v
;

227 
dbp
->
g_rfe
 = 
__db_g_rfe
;

228 
dbp
->
g_fx
 = 
__db_g_fx
;

229 
dbp
->
g_ags
 = 
__db_g_ags
;

230 
dbp
->
g_ld
 = 
__db_g_ld
;

231 
dbp
->
g_mpf
 = 
__db_g_mpf
;

232 
dbp
->
g_msgfe
 = 
__db_g_msgfe
;

233 
dbp
->
g_muɝ
 = 
__db_g_muɝ
;

234 
dbp
->
g_ݒ_ags
 = 
__db_g_ݒ_ags
;

235 
dbp
->
g_gesize
 = 
__db_g_gesize
;

236 
dbp
->
g_iڮ
 = 
__db_g_iڮ
;

237 
dbp
->
g_ty
 = 
__db_g_ty
;

238 
dbp
->
jo
 = 
__db_jo_
;

239 
dbp
->
key_nge
 = 
__db_key_nge_
;

240 
dbp
->
ݒ
 = 
__db_ݒ_
;

241 
dbp
->
pg
 = 
__db_pg_
;

242 
dbp
->
put
 = 
__db_put_
;

243 
dbp
->
move
 = 
__db_move_
;

244 
dbp
->
me
 = 
__db_me_
;

245 
dbp
->
t_loc
 = 
__db_t_loc
;

246 
dbp
->
t_nd_o
 = 
__db_t_nd_o
;

247 
dbp
->
t_chesize
 = 
__db_t_chesize
;

248 
dbp
->
t_dup_com
 = 
__db_t_dup_com
;

249 
dbp
->
t_y
 = 
__db_t_y
;

250 
dbp
->
t_r
 = 
__db_t_r
;

251 
dbp
->
t_rfe
 = 
__db_t_rfe
;

252 
dbp
->
t_fx
 = 
__db_t_fx
;

253 
dbp
->
t_edback
 = 
__db_t_edback
;

254 
dbp
->
t_ags
 = 
__db_t_ags
;

255 
dbp
->
t_ld
 = 
__db_t_ld
;

256 
dbp
->
t_msg
 = 
__db_t_msg
;

257 
dbp
->
t_msgfe
 = 
__db_t_msgfe
;

258 
dbp
->
t_gesize
 = 
__db_t_gesize
;

259 
dbp
->
t_nic
 = 
__db_t_nic
;

260 
dbp
->
t_iܙy
 = 
__db_t_iܙy
;

261 
dbp
->
g_iܙy
 = 
__db_g_iܙy
;

262 
dbp
->

 = 
__db__
;

263 
dbp
->
_t
 = 
__db__t_
;

264 
dbp
->
sync
 = 
__db_sync_
;

265 
dbp
->
un
 = 
__db_un_
;

266 
dbp
->
upgde
 = 
__db_upgde_
;

267 
dbp
->
vify
 = 
__db_vify_
;

271 i((
t
 = 
	`__bam_db_
(
dbp
)) != 0)

272  (
t
);

273 i((
t
 = 
	`__ham_db_
(
dbp
)) != 0)

274  (
t
);

275 i((
t
 = 
	`__qam_db_
(
dbp
)) != 0)

276  (
t
);

282 i(
	`LF_ISSET
(
DB_XA_CREATE
&& (
t
 = 
	`__db_xa_
(
dbp
)) != 0)

283  (
t
);

285 #ifde
HAVE_RPC


290 i(
	`RPC_ON
(
dbp
->
dbv
)) {

291 
	`__db_dbp_
(
dbp
);

297 
dbp
->
ݒ
 = 
__db_db_ݒ_wp
;

298 i((
t
 = 
	`__db_db_
(
dbp
, dbp->
dbv
, 
ags
)) != 0)

299  (
t
);

304 
	}
}

313 
	$__dbh_am_chk
(
dbp
, 
ags
)

314 
DB
 *
dbp
;

315 
u_t32_t
 
ags
;

322 i((
	`LF_ISSET
(
DB_OK_BTREE
&& 
	`FLD_ISSET
(
dbp
->
am_ok
, DB_OK_BTREE)) ||

323 (
	`LF_ISSET
(
DB_OK_HASH
&& 
	`FLD_ISSET
(
dbp
->
am_ok
, DB_OK_HASH)) ||

324 (
	`LF_ISSET
(
DB_OK_QUEUE
&& 
	`FLD_ISSET
(
dbp
->
am_ok
, DB_OK_QUEUE)) ||

325 (
	`LF_ISSET
(
DB_OK_RECNO
&& 
	`FLD_ISSET
(
dbp
->
am_ok
, DB_OK_RECNO))) {

326 
	`FLD_CLR
(
dbp
->
am_ok
, ~
ags
);

330 
	`__db_rx
(
dbp
->
dbv
,

332  (
EINVAL
);

333 
	}
}

340 #ifde
STDC_HEADERS


341 
	$__dbh_r
(
DB
 *
dbp
, 
r
, cڡ *
fmt
, ...)

343 
	$__dbh_r
(
dbp
, 
r
, 
fmt
, 
va_i
)

344 
DB
 *
dbp
;

345 
r
;

346 cڡ *
fmt
;

347 
va_d


351 
	`DB_REAL_ERR
(
dbp
->
dbv
, 
r
, 
DB_ERROR_SET
, 1, 
fmt
);

352 
	}
}

359 #ifde
STDC_HEADERS


360 
	$__dbh_rx
(
DB
 *
dbp
, cڡ *
fmt
, ...)

362 
	$__dbh_rx
(
dbp
, 
fmt
, 
va_i
)

363 
DB
 *
dbp
;

364 cڡ *
fmt
;

365 
va_d


369 
	`DB_REAL_ERR
(
dbp
->
dbv
, 0, 
DB_ERROR_NOT_SET
, 1, 
fmt
);

370 
	}
}

377 
	$__db_g_byswd
(
dbp
, 
isswd
)

378 
DB
 *
dbp
;

379 *
isswd
;

381 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->get_byteswapped");

383 *
isswd
 = 
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
) ? 1 : 0;

385 
	}
}

392 
	$__db_g_dbme
(
dbp
, 
am
, 
dm
)

393 
DB
 *
dbp
;

394 cڡ **
am
, **
dm
;

396 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->get_dbname");

398 i(
am
 !
NULL
)

399 *
am
 = 
dbp
->
ame
;

400 i(
dm
 !
NULL
)

401 *
dm
 = 
dbp
->
dme
;

403 
	}
}

409 
DB_ENV
 *

410 
	$__db_g_v
(
dbp
)

411 
DB
 *
dbp
;

413  (
dbp
->
dbv
);

414 
	}
}

420 
DB_MPOOLFILE
 *

421 
	$__db_g_mpf
(
dbp
)

422 
DB
 *
dbp
;

424  (
dbp
->
mpf
);

425 
	}
}

433 
	$__db_g_muɝ
(
dbp
)

434 
DB
 *
dbp
;

436 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->get_multiple");

445  (
dbp
->
ty
 =
DB_BTREE
 &&

446 
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
) &&

447 
dbp
->
ma_pgno
 =
PGNO_BASE_MD
 ? 1 : 0);

448 
	}
}

455 
	$__db_g_iڮ
(
dbp
)

456 
DB
 *
dbp
;

458  (
	`F_ISSET
(
dbp
, 
DB_AM_TXN
) ? 1 : 0);

459 
	}
}

466 
	$__db_g_ty
(
dbp
, 
dbty
)

467 
DB
 *
dbp
;

468 
DBTYPE
 *
dbty
;

470 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->get_type");

472 *
dbty
 = 
dbp
->
ty
;

474 
	}
}

481 
	$__db_t_nd_o
(
dbp
, 
func
)

482 
DB
 *
dbp
;

483 (*
func

	`__P
((
DB
 *, 
DBT
 *, 
db_o_t
));

485 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_append_recno");

486 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_QUEUE
 | 
DB_OK_RECNO
);

488 
dbp
->
db_nd_o
 = 
func
;

491 
	}
}

498 
	$__db_g_chesize
(
dbp
, 
che_gby
, 
che_by
, 
nch
)

499 
DB
 *
dbp
;

500 
u_t32_t
 *
che_gby
, *
che_by
;

501 *
nch
;

503 
	`DB_ILLEGAL_IN_ENV
(
dbp
, "DB->get_cachesize");

505  (
	`__memp_g_chesize
(
dbp
->
dbv
,

506 
che_gby
, 
che_by
, 
nch
));

507 
	}
}

514 
	$__db_t_chesize
(
dbp
, 
che_gbys
, 
che_bys
, 
nche
)

515 
DB
 *
dbp
;

516 
u_t32_t
 
che_gbys
, 
che_bys
;

517 
nche
;

519 
	`DB_ILLEGAL_IN_ENV
(
dbp
, "DB->set_cachesize");

520 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_cachesize");

522  (
	`__memp_t_chesize
(

523 
dbp
->
dbv
, 
che_gbys
, 
che_bys
, 
nche
));

524 
	}
}

531 
	$__db_t_dup_com
(
dbp
, 
func
)

532 
DB
 *
dbp
;

533 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

535 
t
;

537 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->dup_compare");

538 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_BTREE
 | 
DB_OK_HASH
);

540 i((
t
 = 
	`__db_t_ags
(
dbp
, 
DB_DUPSORT
)) != 0)

541  (
t
);

543 
dbp
->
dup_com
 = 
func
;

546 
	}
}

552 
	$__db_g_y_ags
(
dbp
, 
ag
)

553 
DB
 *
dbp
;

554 
u_t32_t
 *
ag
;

556 
	`DB_ILLEGAL_IN_ENV
(
dbp
, "DB->get_encrypt_flags");

558  (
	`__v_g_y_ags
(
dbp
->
dbv
, 
ag
));

559 
	}
}

566 
	$__db_t_y
(
dbp
, 
sswd
, 
ags
)

567 
DB
 *
dbp
;

568 cڡ *
sswd
;

569 
u_t32_t
 
ags
;

571 
DB_CIPHER
 *
db_ch
;

572 
t
;

574 
	`DB_ILLEGAL_IN_ENV
(
dbp
, "DB->set_encrypt");

575 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_encrypt");

577 i((
t
 = 
	`__v_t_y
(
dbp
->
dbv
, 
sswd
, 
ags
)) != 0)

578  (
t
);

584 
db_ch
 = (
DB_CIPHER
 *)
dbp
->
dbv
->
yo_hd
;

585 i(!
	`F_ISSET
(
db_ch
, 
CIPHER_ANY
) &&

586 (
t
 = 
db_ch
->
	`
(
dbp
->
dbv
, db_cipher)) != 0)

587  (
t
);

589  (
	`__db_t_ags
(
dbp
, 
DB_ENCRYPT
));

590 
	}
}

593 
	$__db_t_r
(
dbp
, 
r
)

594 
DB
 *
dbp
;

595 (*
r

	`__P
((cڡ 
DB_ENV
 *, const *, const *));

597 
	`__v_t_r
(
dbp
->
dbv
, 
r
);

598 
	}
}

601 
	$__db_g_rfe
(
dbp
, 
rf
)

602 
DB
 *
dbp
;

603 
FILE
 **
rf
;

605 
	`__v_g_rfe
(
dbp
->
dbv
, 
rf
);

606 
	}
}

609 
	$__db_t_rfe
(
dbp
, 
rfe
)

610 
DB
 *
dbp
;

611 
FILE
 *
rfe
;

613 
	`__v_t_rfe
(
dbp
->
dbv
, 
rfe
);

614 
	}
}

617 
	$__db_g_fx
(
dbp
, 
fxp
)

618 
DB
 *
dbp
;

619 cڡ **
fxp
;

621 
	`__v_g_fx
(
dbp
->
dbv
, 
fxp
);

622 
	}
}

625 
	$__db_t_fx
(
dbp
, 
fx
)

626 
DB
 *
dbp
;

627 cڡ *
fx
;

629 
	`__v_t_fx
(
dbp
->
dbv
, 
fx
);

630 
	}
}

633 
	$__db_t_edback
(
dbp
, 
edback
)

634 
DB
 *
dbp
;

635 (*
edback

	`__P
((
DB
 *, , ));

637 
dbp
->
db_edback
 = 
edback
;

639 
	}
}

647 
	$__db_m_ags
(
dbp
, 
ag
, 
outag
)

648 
DB
 *
dbp
;

649 
u_t32_t
 *
ag
, *
outag
;

651 
	`COMPQUIET
(
dbp
, 
NULL
);

653 i(
	`FLD_ISSET
(*
ag
, 
DB_CHKSUM
)) {

654 
	`FLD_SET
(*
outag
, 
DB_AM_CHKSUM
);

655 
	`FLD_CLR
(*
ag
, 
DB_CHKSUM
);

657 i(
	`FLD_ISSET
(*
ag
, 
DB_ENCRYPT
)) {

658 
	`FLD_SET
(*
outag
, 
DB_AM_ENCRYPT
 | 
DB_AM_CHKSUM
);

659 
	`FLD_CLR
(*
ag
, 
DB_ENCRYPT
);

661 i(
	`FLD_ISSET
(*
ag
, 
DB_TXN_NOT_DURABLE
)) {

662 
	`FLD_SET
(*
outag
, 
DB_AM_NOT_DURABLE
);

663 
	`FLD_CLR
(*
ag
, 
DB_TXN_NOT_DURABLE
);

665 
	}
}

674 
	$__db_g_ags
(
dbp
, 
ag
)

675 
DB
 *
dbp
;

676 
u_t32_t
 *
ag
;

678 cڡ 
u_t32_t
 
db_ags
[] = {

679 
DB_CHKSUM
,

680 
DB_DUP
,

681 
DB_DUPSORT
,

682 
DB_ENCRYPT
,

683 #ifde
HAVE_QUEUE


684 
DB_INORDER
,

686 
DB_RECNUM
,

687 
DB_RENUMBER
,

688 
DB_REVSPLITOFF
,

689 
DB_SNAPSHOT
,

690 
DB_TXN_NOT_DURABLE
,

693 
u_t32_t
 
f
, 
ags
, 
md_ag
;

694 
i
;

696 
ags
 = 0;

697 
i
 = 0; (
f
 = 
db_ags
[i]) != 0; i++) {

698 
md_ag
 = 0;

699 
	`__db_m_ags
(
dbp
, &
f
, &
md_ag
);

700 
	`__bam_m_ags
(
dbp
, &
f
, &
md_ag
);

701 
	`__m_m_ags
(
dbp
, &
f
, &
md_ag
);

702 #ifde
HAVE_QUEUE


703 
	`__qam_m_ags
(
dbp
, &
f
, &
md_ag
);

705 
	`DB_ASSERT
(
dbp
->
dbv
, 
f
 == 0);

706 i(
	`F_ISSET
(
dbp
, 
md_ag
) == mapped_flag)

707 
	`LF_SET
(
db_ags
[
i
]);

710 *
ag
 = 
ags
;

712 
	}
}

721 
	$__db_t_ags
(
dbp
, 
ags
)

722 
DB
 *
dbp
;

723 
u_t32_t
 
ags
;

725 
DB_ENV
 *
dbv
;

726 
t
;

728 
dbv
 = 
dbp
->dbenv;

730 i(
	`LF_ISSET
(
DB_ENCRYPT
&& !
	`CRYPTO_ON
(
dbv
)) {

731 
	`__db_rx
(
dbv
,

733  (
EINVAL
);

735 i(
	`LF_ISSET
(
DB_TXN_NOT_DURABLE
))

736 
	`ENV_REQUIRES_CONFIG
(
dbv
,

737 
dbv
->
tx_hd
, "DB_NOT_DURABLE", 
DB_INIT_TXN
);

739 
	`__db_m_ags
(
dbp
, &
ags
, &dbp->flags);

741 i((
t
 = 
	`__bam_t_ags
(
dbp
, &
ags
)) != 0)

742  (
t
);

743 i((
t
 = 
	`__m_t_ags
(
dbp
, &
ags
)) != 0)

744  (
t
);

745 #ifde
HAVE_QUEUE


746 i((
t
 = 
	`__qam_t_ags
(
dbp
, &
ags
)) != 0)

747  (
t
);

750  (
ags
 =0 ? 0 : 
	`__db_
(
dbv
, "DB->set_flags", 0));

751 
	}
}

760 
	$__db_g_ld
(
dbp
, 
db_ldp
)

761 
DB
 *
dbp
;

762 *
db_ldp
;

764 
t
;

767 
t
 = 
	`__db_byd
(
dbp
->
dbv
, 1234)) {

769 *
db_ldp
 = 
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
) ? 4321 : 1234;

771 
DB_SWAPBYTES
:

772 *
db_ldp
 = 
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
) ? 1234 : 4321;

775  (
t
);

780 
	}
}

789 
	$__db_t_ld
(
dbp
, 
db_ld
)

790 
DB
 *
dbp
;

791 
db_ld
;

793 
t
;

795 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_lorder");

798 
t
 = 
	`__db_byd
(
dbp
->
dbv
, 
db_ld
)) {

800 
	`F_CLR
(
dbp
, 
DB_AM_SWAP
);

802 
DB_SWAPBYTES
:

803 
	`F_SET
(
dbp
, 
DB_AM_SWAP
);

806  (
t
);

810 
	}
}

813 
	$__db_t_loc
(
dbp
, 
m_func
, 
_func
, 
_func
)

814 
DB
 *
dbp
;

815 *(*
m_func

	`__P
((
size_t
));

816 *(*
_func

	`__P
((*, 
size_t
));

817 (*
_func

	`__P
((*));

819 
	`DB_ILLEGAL_IN_ENV
(
dbp
, "DB->set_alloc");

820 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_alloc");

822  (
	`__v_t_loc
(
dbp
->
dbv
, 
m_func
, 
_func
, 
_func
));

823 
	}
}

826 
	$__db_t_msg
(
dbp
, 
msg
)

827 
DB
 *
dbp
;

828 (*
msg

	`__P
((cڡ 
DB_ENV
 *, const *));

830 
	`__v_t_msg
(
dbp
->
dbv
, 
msg
);

831 
	}
}

834 
	$__db_g_msgfe
(
dbp
, 
msgf
)

835 
DB
 *
dbp
;

836 
FILE
 **
msgf
;

838 
	`__v_g_msgfe
(
dbp
->
dbv
, 
msgf
);

839 
	}
}

842 
	$__db_t_msgfe
(
dbp
, 
msgfe
)

843 
DB
 *
dbp
;

844 
FILE
 *
msgfe
;

846 
	`__v_t_msgfe
(
dbp
->
dbv
, 
msgfe
);

847 
	}
}

850 
	$__db_g_gesize
(
dbp
, 
db_gesiz
)

851 
DB
 *
dbp
;

852 
u_t32_t
 *
db_gesiz
;

854 *
db_gesiz
 = 
dbp
->
pgsize
;

856 
	}
}

865 
	$__db_t_gesize
(
dbp
, 
db_gesize
)

866 
DB
 *
dbp
;

867 
u_t32_t
 
db_gesize
;

869 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_pagesize");

871 i(
db_gesize
 < 
DB_MIN_PGSIZE
) {

872 
	`__db_rx
(
dbp
->
dbv
, "page sizes mayot be smallerhan %lu",

873 (
u_lg
)
DB_MIN_PGSIZE
);

874  (
EINVAL
);

876 i(
db_gesize
 > 
DB_MAX_PGSIZE
) {

877 
	`__db_rx
(
dbp
->
dbv
, "page sizes mayot beargerhan %lu",

878 (
u_lg
)
DB_MAX_PGSIZE
);

879  (
EINVAL
);

886 i(!
	`POWER_OF_TWO
(
db_gesize
)) {

887 
	`__db_rx
(
dbp
->
dbv
, "page sizes must beower-of-2");

888  (
EINVAL
);

896 
dbp
->
pgsize
 = 
db_gesize
;

899 
	}
}

902 
	$__db_t_nic
(
dbp
, 
nic
)

903 
DB
 *
dbp
;

904 (*
nic

	`__P
((
DB_ENV
 *, ));

906  (
	`__v_t_nic
(
dbp
->
dbv
, 
nic
));

907 
	}
}

910 
	$__db_t_iܙy
(
dbp
, 
iܙy
)

911 
DB
 *
dbp
;

912 
DB_CACHE_PRIORITY
 
iܙy
;

914 
dbp
->
iܙy
 =riority;

916 
	}
}

919 
	$__db_g_iܙy
(
dbp
, 
iܙy
)

920 
DB
 *
dbp
;

921 
DB_CACHE_PRIORITY
 *
iܙy
;

923 *
iܙy
 = 
dbp
->priority;

925 
	}
}

	@../db/db_open.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_sw.h
"

14 
	~"dbc/b.h
"

15 
	~"dbc/yo.h
"

16 
	~"dbc/hmac.h
"

17 
	~"dbc/f.h
"

18 
	~"dbc/hash.h
"

19 
	~"dbc/lock.h
"

20 
	~"dbc/log.h
"

21 
	~"dbc/mp.h
"

22 
	~"dbc/qam.h
"

23 
	~"dbc/txn.h
"

50 
	$__db_ݒ
(
dbp
, 
txn
, 
ame
, 
dme
, 
ty
, 
ags
, 
mode
, 
ma_pgno
)

51 
DB
 *
dbp
;

52 
DB_TXN
 *
txn
;

53 cڡ *
ame
, *
dme
;

54 
DBTYPE
 
ty
;

55 
u_t32_t
 
ags
;

56 
mode
;

57 
db_pgno_t
 
ma_pgno
;

59 
DB_ENV
 *
dbv
;

60 
t
;

61 
u_t32_t
 
id
;

63 
dbv
 = 
dbp
->dbenv;

64 
id
 = 
TXN_INVALID
;

66 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_PREOPEN
, 
t
, 
ame
);

76 i(
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
))

77 
	`LF_SET
(
DB_THREAD
);

80 i(
	`LF_ISSET
(
DB_RDONLY
))

81 
	`F_SET
(
dbp
, 
DB_AM_RDONLY
);

82 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
))

83 
	`F_SET
(
dbp
, 
DB_AM_READ_UNCOMMITTED
);

85 i(
	`IS_REAL_TXN
(
txn
))

86 
	`F_SET
(
dbp
, 
DB_AM_TXN
);

89 
dbp
->
ty
 =ype;

99 i(
ame
 =
NULL
) {

100 i(
dme
 =
NULL
) {

101 i(!
	`LF_ISSET
(
DB_CREATE
)) {

102 
	`__db_rx
(
dbv
,

104  (
ENOENT
);

107 
	`F_SET
(
dbp
, 
DB_AM_INMEM
);

108 
	`F_SET
(
dbp
, 
DB_AM_CREATED
);

110 i(
dbp
->
ty
 =
DB_UNKNOWN
) {

111 
	`__db_rx
(
dbv
,

113  (
EINVAL
);

116 i(
dbp
->
pgsize
 == 0)

117 
dbp
->
pgsize
 = 
DB_DEF_IOSIZE
;

139 i(
	`LOCKING_ON
(
dbv
&& (
t
 = 
	`__lock_id
(dbenv,

140 (
u_t32_t
 *)
dbp
->
feid
, 
NULL
)) != 0)

141  (
t
);

143 
	`MAKE_INMEM
(
dbp
);

150 } i(
dme
 =
NULL
 && 
ma_pgno
 =
PGNO_BASE_MD
) {

152 i((
t
 =

153 
	`__f_fe_tup
(
dbp
, 
txn
, 
ame
, 
mode
, 
ags
, &
id
)) != 0)

154  (
t
);

156 i((
t
 = 
	`__f_subdb_tup
(
dbp
,

157 
txn
, 
ame
, 
dme
, 
mode
, 
ags
)) != 0)

158  (
t
);

159 
ma_pgno
 = 
dbp
->meta_pgno;

175 i(
dme
 =
NULL
 && 
	`F_ISSET
(
dbp
, 
DB_AM_CREATED
))

176 
	`LF_SET
(
DB_TRUNCATE
);

179 i((
t
 = 
	`__db_v_tup
(
dbp
, 
txn
, 
ame
, 
dme
, 
id
, 
ags
)) != 0)

180  (
t
);

183 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

184 i(
dme
 =
NULL
)

185 
t
 = 
	`__db_w_fe
(
dbp
, 
txn
, 
NULL
, NULL);

187 
id
 = 
TXN_INVALID
;

188 i((
t
 = 
	`__f_fe_tup
(
dbp
,

189 
txn
, 
dme
, 
mode
, 
ags
, &
id
)) == 0 &&

190 
	`DBENV_LOGGING
(
dbv
&& !
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
)

191 #i!
	`defed
(
DEBUG_ROP
&& !defed(
DEBUG_WOP
&& !defed(
DIAGNOSTIC
)

192 && 
txn
 !
NULL


194 #i!
	`defed
(
DEBUG_ROP
)

195 && !
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
)

198 
t
 = 
	`__dbg_log_id
(
dbp
,

199 
txn
, 
dbp
->
log_fame
->
id
, 1);

201 i(
t
 != 0)

202 
r
;

205 
dbp
->
ty
) {

206 
DB_BTREE
:

207 
t
 = 
	`__bam_ݒ
(
dbp
, 
txn
, 
ame
, 
ma_pgno
, 
ags
);

209 
DB_HASH
:

210 
t
 = 
	`__ham_ݒ
(
dbp
, 
txn
, 
ame
, 
ma_pgno
, 
ags
);

212 
DB_RECNO
:

213 
t
 = 
	`__m_ݒ
(
dbp
, 
txn
, 
ame
, 
ma_pgno
, 
ags
);

215 
DB_QUEUE
:

216 
t
 = 
	`__qam_ݒ
(

217 
dbp
, 
txn
, 
ame
, 
ma_pgno
, 
mode
, 
ags
);

219 
DB_UNKNOWN
:

221 
	`__db_unknown_ty
(
dbv
, "__db_dbݒ", 
dbp
->
ty
));

223 i(
t
 != 0)

224 
r
;

226 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTOPEN
, 
t
, 
ame
);

233 i(!
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
&& (
ame
 !
NULL
 || 
dme
 != NULL) &&

234 
	`LOCK_ISSET
(
dbp
->
hd_lock
)) {

235 i(
	`IS_REAL_TXN
(
txn
))

236 
t
 = 
	`__txn_lockevt
(
dbv
,

237 
txn
, 
dbp
, &dbp->
hd_lock
, dbp->
lock
);

238 i(
	`LOCKING_ON
(
dbv
))

240 
t
 = 
	`__lock_downgde
(
dbv
,

241 &
dbp
->
hd_lock
, 
DB_LOCK_READ
, 0);

243 
DB_TEST_RECOVERY_LABEL


244 
r
:

245  (
t
);

246 
	}
}

255 
	$__db_g_ݒ_ags
(
dbp
, 
ag
)

256 
DB
 *
dbp
;

257 
u_t32_t
 *
ag
;

259 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->get_open_flags");

261 *
ag
 = 
dbp
->
ݒ_ags
;

263 
	}
}

272 
	$__db_w_fe
(
dbp
, 
txn
, 
fhp
, 
me
)

273 
DB
 *
dbp
;

274 
DB_TXN
 *
txn
;

275 
DB_FH
 *
fhp
;

276 cڡ *
me
;

278 
t
;

280 
dbp
->
ty
) {

281 
DB_BTREE
:

282 
DB_RECNO
:

283 
t
 = 
	`__bam_w_fe
(
dbp
, 
txn
, 
fhp
, 
me
);

285 
DB_HASH
:

286 
t
 = 
	`__ham_w_fe
(
dbp
, 
txn
, 
fhp
, 
me
);

288 
DB_QUEUE
:

289 
t
 = 
	`__qam_w_fe
(
dbp
, 
txn
, 
fhp
, 
me
);

291 
DB_UNKNOWN
:

293 
	`__db_rx
(
dbp
->
dbv
,

294 "%s: Invidy %d scifd", 
me
, 
dbp
->
ty
);

295 
t
 = 
EINVAL
;

299 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTLOGMETA
, 
t
, 
me
);

301 i(
t
 =0 && 
fhp
 !
NULL
)

302 
t
 = 
	`__os_fsync
(
dbp
->
dbv
, 
fhp
);

304 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTSYNC
, 
t
, 
me
);

306 
DB_TEST_RECOVERY_LABEL


307  (
t
);

308 
	}
}

317 
	$__db__subdb
(
mdbp
, 
dbp
, 
me
, 
txn
)

318 
DB
 *
mdbp
, *
dbp
;

319 cڡ *
me
;

320 
DB_TXN
 *
txn
;

322 
DBMETA
 *
ma
;

323 
DB_MPOOLFILE
 *
mpf
;

324 
t
, 
t_t
;

326 
t
 = 0;

327 i(!
	`F_ISSET
(
dbp
, 
DB_AM_CREATED
)) {

329 
mpf
 = 
mdbp
->mpf;

330 i((
t
 = 
	`__memp_fg
(
mpf
, &
dbp
->
ma_pgno
,

331 
txn
, 0, &
ma
)) != 0)

332 
r
;

333 
t
 = 
	`__db_ma_tup
(
mdbp
->
dbv
, 
dbp
, 
me
, 
ma
, 0, 0);

334 i((
t_t
 =

335 
	`__memp_ut
(
mpf
, 
ma
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

336 
t
 = 
t_t
;

341 i(
t
 =
ENOENT
)

342 
t
 = 0;

343 
r
;

347 
dbp
->
ty
) {

348 
DB_BTREE
:

349 
DB_RECNO
:

350 
t
 = 
	`__bam_w_subdb
(
mdbp
, 
dbp
, 
txn
);

352 
DB_HASH
:

353 
t
 = 
	`__ham_w_subdb
(
mdbp
, 
dbp
, 
txn
);

355 
DB_QUEUE
:

356 
t
 = 
EINVAL
;

358 
DB_UNKNOWN
:

360 
	`__db_rx
(
dbp
->
dbv
,

361 "Invid subdabay %d scifd", 
dbp
->
ty
);

362  (
EINVAL
);

365 
r
:  (
t
);

366 
	}
}

378 
	$__db_chk_ma
(
dbv
, 
dbp
, 
ma
, 
ags
)

379 
DB_ENV
 *
dbv
;

380 
DB
 *
dbp
;

381 
DBMETA
 *
ma
;

382 
u_t32_t
 
ags
;

384 
DB_LSN
 
sw_l
;

385 
is_hmac
, 
t
, 
swd
;

386 
u_t32_t
 
magic
, 
ig_chk
;

387 
u_t8_t
 *
chksum
;

389 
t
 = 0;

390 
swd
 = 0;

392 i(
	`FLD_ISSET
(
ma
->
maags
, 
DBMETA_CHKSUM
)) {

393 i(
dbp
 !
NULL
)

394 
	`F_SET
(
dbp
, 
DB_AM_CHKSUM
);

396 
is_hmac
 = 
ma
->
y_g
 == 0 ? 0 : 1;

397 
chksum
 = ((
BTMETA
 *)
ma
)->chksum;

404 
ig_chk
 = *(
u_t32_t
 *)
chksum
;

410 i(
	`LF_ISSET
(
DB_CHK_META
)) {

411 
swd
 = 0;

412 
chk_y
: i((
t
 = 
	`__db_check_chksum
(
dbv
, 
NULL
,

413 (
DB_CIPHER
 *)
dbv
->
yo_hd
, 
chksum
, 
ma
,

414 
DBMETASIZE
, 
is_hmac
)) != 0) {

415 i(
is_hmac
 || 
swd
)

416  (
t
);

418 
	`M_32_SWAP
(
ig_chk
);

419 
swd
 = 1;

420 *(
u_t32_t
 *)
chksum
 = 
ig_chk
;

421 
chk_y
;

424 } i(
dbp
 !
NULL
)

425 
	`F_CLR
(
dbp
, 
DB_AM_CHKSUM
);

427 #ifde
HAVE_CRYPTO


428 
t
 = 
	`__yo_dey_ma
(
dbv
,

429 
dbp
, (
u_t8_t
 *)
ma
, 
	`LF_ISSET
(
DB_CHK_META
));

433 i(
	`LOGGING_ON
(
dbv
&& !
	`LF_ISSET
(
DB_CHK_NOLSN
)) {

440 
sw_l
 = 
ma
->
l
;

441 
magic
 = 
ma
->magic;

442 
l_y
:

443 i(
swd
) {

444 
	`M_32_SWAP
(
sw_l
.
fe
);

445 
	`M_32_SWAP
(
sw_l
.
offt
);

446 
	`M_32_SWAP
(
magic
);

448 
magic
) {

449 
DB_BTREEMAGIC
:

450 
DB_HASHMAGIC
:

451 
DB_QAMMAGIC
:

452 
DB_RENAMEMAGIC
:

455 i(
swd
)

456  (
EINVAL
);

457 
swd
 = 1;

458 
l_y
;

460 i(!
	`IS_REP_CLIENT
(
dbv
) &&

461 !
	`IS_NOT_LOGGED_LSN
(
sw_l
&& !
	`IS_ZERO_LSN
(swap_lsn))

463 
t
 = 
	`__log_check_ge_l
(
dbv
, 
dbp
, &
sw_l
);

465  (
t
);

466 
	}
}

478 
	$__db_ma_tup
(
dbv
, 
dbp
, 
me
, 
ma
, 
oags
, 
ags
)

479 
DB_ENV
 *
dbv
;

480 
DB
 *
dbp
;

481 cڡ *
me
;

482 
DBMETA
 *
ma
;

483 
u_t32_t
 
oags
;

484 
u_t32_t
 
ags
;

486 
u_t32_t
 
magic
;

487 
t
;

489 
t
 = 0;

499 
	`F_CLR
(
dbp
, 
DB_AM_SWAP
 | 
DB_AM_IN_RENAME
);

500 
magic
 = 
ma
->magic;

502 
sw_y
:

503 
magic
) {

504 
DB_BTREEMAGIC
:

505 
DB_HASHMAGIC
:

506 
DB_QAMMAGIC
:

507 
DB_RENAMEMAGIC
:

516 i(
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
&& ((
	`IS_RECOVERING
(
dbv
) &&

517 
	`F_ISSET
(
dbv
->
lg_hd
, 
DBLOG_FORCE_OPEN
)) ||

518 
ma
->
pgno
 !
PGNO_INVALID
))

519  (
ENOENT
);

521 
bad_fm
;

523 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
))

524 
bad_fm
;

526 
	`M_32_SWAP
(
magic
);

527 
	`F_SET
(
dbp
, 
DB_AM_SWAP
);

528 
sw_y
;

538 i((
t
 = 
	`__db_chk_ma
(
dbv
, 
dbp
, 
ma
, 
ags
)) != 0) {

539 i(
t
 == -1)

540 
	`__db_rx
(
dbv
,

541 "%s: madgchecksum", 
me
);

542 
bad_fm
;

545 
magic
) {

546 
DB_BTREEMAGIC
:

547 i(
dbp
->
ty
 !
DB_UNKNOWN
 &&

548 
dbp
->
ty
 !
DB_RECNO
 && dbp->ty !
DB_BTREE
)

549 
bad_fm
;

551 
ags
 = 
ma
->flags;

552 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
))

553 
	`M_32_SWAP
(
ags
);

554 i(
	`LF_ISSET
(
BTM_RECNO
))

555 
dbp
->
ty
 = 
DB_RECNO
;

557 
dbp
->
ty
 = 
DB_BTREE
;

558 i((
oags
 & 
DB_TRUNCATE
=0 && (
t
 =

559 
	`__bam_machk
(
dbp
, 
me
, (
BTMETA
 *)
ma
)) != 0)

560  (
t
);

562 
DB_HASHMAGIC
:

563 i(
dbp
->
ty
 !
DB_UNKNOWN
 && dbp->ty !
DB_HASH
)

564 
bad_fm
;

566 
dbp
->
ty
 = 
DB_HASH
;

567 i((
oags
 & 
DB_TRUNCATE
=0 && (
t
 =

568 
	`__ham_machk
(
dbp
, 
me
, (
HMETA
 *)
ma
)) != 0)

569  (
t
);

571 
DB_QAMMAGIC
:

572 i(
dbp
->
ty
 !
DB_UNKNOWN
 && dbp->ty !
DB_QUEUE
)

573 
bad_fm
;

574 
dbp
->
ty
 = 
DB_QUEUE
;

575 i((
oags
 & 
DB_TRUNCATE
=0 && (
t
 =

576 
	`__qam_machk
(
dbp
, 
me
, (
QMETA
 *)
ma
)) != 0)

577  (
t
);

579 
DB_RENAMEMAGIC
:

580 
	`F_SET
(
dbp
, 
DB_AM_IN_RENAME
);

583 
	`memy
(
dbp
->
feid
, ((
DBMETA
 *)
ma
)->
uid
, 
DB_FILE_ID_LEN
);

587 
bad_fm
;

591 
bad_fm
:

592 i(
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
))

593 
t
 = 
ENOENT
;

595 
	`__db_rx
(
dbv
, "%s: uxed fty ofm", 
me
);

596  (
t
 =0 ? 
EINVAL
 :et);

597 
	}
}

	@../db/db_overflow.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/db_am.h
"

49 
	~"dbc/mp.h
"

68 
	$__db_goff
(
dbp
, 
txn
, 
dbt
, 

, 
pgno
, 
b
, 
bpsz
)

69 
DB
 *
dbp
;

70 
DB_TXN
 *
txn
;

71 
DBT
 *
dbt
;

72 
u_t32_t
 

;

73 
db_pgno_t
 
pgno
;

74 **
b
;

75 
u_t32_t
 *
bpsz
;

77 
DB_ENV
 *
dbv
;

78 
DB_MPOOLFILE
 *
mpf
;

79 
PAGE
 *
h
;

80 
db_dx_t
 
bys
;

81 
u_t32_t
 
curoff
, 
eded
, 
t
;

82 
u_t8_t
 *
p
, *
c
;

83 
t
;

85 
dbv
 = 
dbp
->dbenv;

86 
mpf
 = 
dbp
->mpf;

94 i(
	`F_ISSET
(
dbt
, 
DB_DBT_PARTIAL
)) {

95 
t
 = 
dbt
->
doff
;

96 i(
t
 > 

)

97 
eded
 = 0;

98 i(
dbt
->
dn
 > 

 - 
t
)

99 
eded
 = 

 - 
t
;

101 
eded
 = 
dbt
->
dn
;

103 
t
 = 0;

104 
eded
 = 

;

107 i(
	`F_ISSET
(
dbt
, 
DB_DBT_USERCOPY
))

108 
sk_loc
;

111 i(
	`F_ISSET
(
dbt
, 
DB_DBT_USERMEM
)) {

112 i(
eded
 > 
dbt
->
un
) {

113 
dbt
->
size
 = 
eded
;

114  (
DB_BUFFER_SMALL
);

116 } i(
	`F_ISSET
(
dbt
, 
DB_DBT_MALLOC
)) {

117 i((
t
 = 
	`__os_umloc
(
dbv
, 
eded
, &
dbt
->
da
)) != 0)

118  (
t
);

119 } i(
	`F_ISSET
(
dbt
, 
DB_DBT_REALLOC
)) {

120 i((
t
 = 
	`__os_uloc
(
dbv
, 
eded
, &
dbt
->
da
)) != 0)

121  (
t
);

122 } i(
bpsz
 !
NULL
 && (*bpsz =0 || *bpsz < 
eded
)) {

123 i((
t
 = 
	`__os_loc
(
dbv
, 
eded
, 
b
)) != 0)

124  (
t
);

125 *
bpsz
 = 
eded
;

126 
dbt
->
da
 = *
b
;

127 } i(
b
 !
NULL
)

128 
dbt
->
da
 = *
b
;

130 
	`DB_ASSERT
(
dbv
,

131 
	`F_ISSET
(
dbt
,

132 
DB_DBT_USERMEM
 | 
DB_DBT_MALLOC
 | 
DB_DBT_REALLOC
) ||

133 
bpsz
 !
NULL
 || 
b
 != NULL);

134  (
DB_BUFFER_SMALL
);

137 
sk_loc
:

142 
dbt
->
size
 = 
eded
;

143 
curoff
 = 0, 
p
 = 
dbt
->
da
; 
pgno
 !
PGNO_INVALID
 && 
eded
 > 0;) {

144 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
txn
, 0, &
h
)) != 0)

145  (
t
);

146 
	`DB_ASSERT
(
dbv
, 
	`TYPE
(
h
=
P_OVERFLOW
);

149 i(
curoff
 + 
	`OV_LEN
(
h
>
t
) {

150 
bys
 = 
	`OV_LEN
(
h
);

151 
c
 = (
u_t8_t
 *)
h
 + 
	`P_OVERHEAD
(
dbp
);

152 i(
t
 > 
curoff
) {

153 
c
 +
t
 - 
curoff
;

154 
bys
 -
t
 - 
curoff
;

156 i(
bys
 > 
eded
)

157 
bys
 = 
eded
;

158 i(
	`F_ISSET
(
dbt
, 
DB_DBT_USERCOPY
)) {

165 i((
t
 = 
dbv
->
	`dbt_urcy
(

166 
dbt
, dbt->
size
 - 
eded
,

167 
c
, 
bys
, 
DB_USERCOPY_SETDATA
)) != 0) {

168 ()
	`__memp_ut
(
mpf
,

169 
h
, 
dbp
->
iܙy
);

170  (
t
);

173 
	`memy
(
p
, 
c
, 
bys
);

174 
p
 +
bys
;

175 
eded
 -
bys
;

177 
curoff
 +
	`OV_LEN
(
h
);

178 
pgno
 = 
h
->
xt_pgno
;

179 ()
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
);

182 
	}
}

191 
	$__db_poff
(
dbc
, 
dbt
, 
pgn
)

192 
DBC
 *
dbc
;

193 cڡ 
DBT
 *
dbt
;

194 
db_pgno_t
 *
pgn
;

196 
DB
 *
dbp
;

197 
DBT
 
tmp_dbt
;

198 
DB_LSN
 
w_l
, 
nu_l
;

199 
DB_MPOOLFILE
 *
mpf
;

200 
PAGE
 *
g
, *
ϡp
;

201 
db_dx_t
 
gea
;

202 
u_t32_t
 
sz
;

203 
u_t8_t
 *
p
;

204 
t
, 
t_t
;

211 
dbp
 = 
dbc
->dbp;

212 
mpf
 = 
dbp
->mpf;

213 
gea
 = 
	`P_MAXSPACE
(
dbp
, dbp->
pgsize
);

215 
t
 = 0;

216 
ϡp
 = 
NULL
;

217 
p
 = 
dbt
->
da
,

218 
sz
 = 
dbt
->
size
; sz > 0; 
p
 +
gea
, sz -=agespace) {

223 i(
sz
 < 
gea
)

224 
gea
 = 
sz
;

231 i((
t
 = 
	`__db_w
(
dbc
, 
P_OVERFLOW
, &
g
)) != 0)

233 i(
	`DBC_LOGGING
(
dbc
)) {

234 
tmp_dbt
.
da
 = 
p
;

235 
tmp_dbt
.
size
 = 
gea
;

236 
	`ZERO_LSN
(
nu_l
);

237 i((
t
 = 
	`__db_big_log
(
dbp
, 
dbc
->
txn
,

238 &
w_l
, 0, 
DB_ADD_BIG
, 
	`PGNO
(
g
),

239 
ϡp
 ? 
	`PGNO
ap: 
PGNO_INVALID
,

240 
PGNO_INVALID
, &
tmp_dbt
, &
	`LSN
(
g
),

241 
ϡp
 =
NULL
 ? &
nu_l
 : &
	`LSN
(lastp),

242 &
nu_l
)) != 0) {

243 i(
ϡp
 !
NULL
)

244 ()
	`__memp_ut
(
mpf
,

245 
ϡp
, 
dbc
->
iܙy
);

246 
ϡp
 = 
g
;

250 
	`LSN_NOT_LOGGED
(
w_l
);

253 i(
ϡp
 !
NULL
)

254 
	`LSN
(
ϡp

w_l
;

255 
	`LSN
(
g

w_l
;

257 
	`OV_LEN
(
g

gea
;

258 
	`OV_REF
(
g
) = 1;

259 
	`memy
((
u_t8_t
 *)
g
 + 
	`P_OVERHEAD
(
dbp
), 
p
, 
gea
);

266 i(
ϡp
 =
NULL
)

267 *
pgn
 = 
	`PGNO
(
g
);

269 
ϡp
->
xt_pgno
 = 
	`PGNO
(
g
);

270 
g
->
ev_pgno
 = 
	`PGNO
(
ϡp
);

271 ()
	`__memp_ut
(
mpf
, 
ϡp
, 
dbc
->
iܙy
);

273 
ϡp
 = 
g
;

275 i(
ϡp
 !
NULL
 && (
t_t
 =

276 
	`__memp_ut
(
mpf
, 
ϡp
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

277 
t
 = 
t_t
;

278  (
t
);

279 
	}
}

288 
	$__db_ovf
(
dbc
, 
pgno
)

289 
DBC
 *
dbc
;

290 
db_pgno_t
 
pgno
;

292 
DB
 *
dbp
;

293 
DB_MPOOLFILE
 *
mpf
;

294 
PAGE
 *
h
;

295 
t
;

297 
dbp
 = 
dbc
->dbp;

298 
mpf
 = 
dbp
->mpf;

300 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
, 
DB_MPOOL_DIRTY
, &
h
)) != 0)

301  (
t
);

303 i(
	`DBC_LOGGING
(
dbc
)) {

304 i((
t
 = 
	`__db_ovf_log
(
dbp
,

305 
dbc
->
txn
, &
	`LSN
(
h
), 0, h->
pgno
, -1, &LSN(h))) != 0) {

306 ()
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

307  (
t
);

310 
	`LSN_NOT_LOGGED
(
	`LSN
(
h
));

321 --
	`OV_REF
(
h
);

323  (
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
));

324 
	}
}

333 
	$__db_doff
(
dbc
, 
pgno
)

334 
DBC
 *
dbc
;

335 
db_pgno_t
 
pgno
;

337 
DB
 *
dbp
;

338 
PAGE
 *
g
;

339 
DB_LSN
 
nu_l
;

340 
DB_MPOOLFILE
 *
mpf
;

341 
DBT
 
tmp_dbt
;

342 
t
;

344 
dbp
 = 
dbc
->dbp;

345 
mpf
 = 
dbp
->mpf;

348 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
, 0, &
g
)) != 0)

349  (
t
);

351 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`TYPE
(
g
=
P_OVERFLOW
);

356 i(
	`OV_REF
(
g
) > 1) {

357 ()
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
);

358  (
	`__db_ovf
(
dbc
, 
pgno
));

361 i((
t
 = 
	`__memp_dty
(
mpf
,

362 &
g
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0) {

363 ()
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
);

364  (
t
);

367 i(
	`DBC_LOGGING
(
dbc
)) {

368 
tmp_dbt
.
da
 = (
u_t8_t
 *)
g
 + 
	`P_OVERHEAD
(
dbp
);

369 
tmp_dbt
.
size
 = 
	`OV_LEN
(
g
);

370 
	`ZERO_LSN
(
nu_l
);

371 i((
t
 = 
	`__db_big_log
(
dbp
, 
dbc
->
txn
,

372 &
	`LSN
(
g
), 0, 
DB_REM_BIG
,

373 
	`PGNO
(
g
), 
	`PREV_PGNO
(pagep),

374 
	`NEXT_PGNO
(
g
), &
tmp_dbt
,

375 &
	`LSN
(
g
), &
nu_l
, &null_lsn)) != 0) {

376 ()
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
);

377  (
t
);

380 
	`LSN_NOT_LOGGED
(
	`LSN
(
g
));

381 
pgno
 = 
g
->
xt_pgno
;

382 
	`OV_LEN
(
g
) = 0;

383 i((
t
 = 
	`__db_
(
dbc
, 
g
)) != 0)

384  (
t
);

385 } 
pgno
 !
PGNO_INVALID
);

388 
	}
}

408 
	$__db_moff
(
dbp
, 
txn
, 
dbt
, 
pgno
, 

, 
cmpfunc
, 
cm
)

409 
DB
 *
dbp
;

410 
DB_TXN
 *
txn
;

411 cڡ 
DBT
 *
dbt
;

412 
db_pgno_t
 
pgno
;

413 
u_t32_t
 

;

414 (*
cmpfunc

	`__P
((
DB
 *, cڡ 
DBT
 *, cڡ DBT *)), *
cm
;

416 
DBT
 
lol_dbt
;

417 
DB_MPOOLFILE
 *
mpf
;

418 
PAGE
 *
g
;

419 *
buf
;

420 
u_t32_t
 
bufsize
, 
cmp_bys
, 
key_
;

421 
u_t8_t
 *
p1
, *
p2
;

422 
t
;

424 
mpf
 = 
dbp
->mpf;

430 i(
cmpfunc
 !
NULL
) {

431 
	`memt
(&
lol_dbt
, 0, (local_dbt));

432 
buf
 = 
NULL
;

433 
bufsize
 = 0;

435 i((
t
 = 
	`__db_goff
(
dbp
, 
txn
,

436 &
lol_dbt
, 

, 
pgno
, &
buf
, &
bufsize
)) != 0)

437  (
t
);

439 *
cm
 = 
	`cmpfunc
(
dbp
, 
dbt
, &
lol_dbt
);

440 
	`__os_
(
dbp
->
dbv
, 
buf
);

445 *
cm
 = 0, 
p1
 = 
dbt
->
da
,

446 
key_
 = 
dbt
->
size
; key_ > 0 && 
pgno
 !
PGNO_INVALID
;) {

447 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
txn
, 0, &
g
)) != 0)

448  (
t
);

450 
cmp_bys
 = 
	`OV_LEN
(
g
< 
key_
 ? OV_LEN(pagep) : key_left;

451 

 -
cmp_bys
;

452 
key_
 -
cmp_bys
;

453 
p2
 = (
u_t8_t
 *)
g
 + 
	`P_OVERHEAD
(
dbp
);

454 
cmp_bys
-- > 0; ++
p1
, ++
p2
)

455 i(*
p1
 !*
p2
) {

456 *
cm
 = ()*
p1
 - ()*
p2
;

459 
pgno
 = 
	`NEXT_PGNO
(
g
);

460 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbp
->
iܙy
)) != 0)

461  (
t
);

462 i(*
cm
 != 0)

465 i(
key_
 > 0)

466 *
cm
 = 1;

467 i(

 > 0)

468 *
cm
 = -1;

470 *
cm
 = 0;

473 
	}
}

493 
	$__db_coff
(
dbp
, 
txn
, 
dbt
, 
mch
, 
cmpfunc
, 
cm
)

494 
DB
 *
dbp
;

495 
DB_TXN
 *
txn
;

496 cڡ 
DBT
 *
dbt
, *
mch
;

497 (*
cmpfunc

	`__P
((
DB
 *, cڡ 
DBT
 *, cڡ DBT *)), *
cm
;

499 
DBT
 
lol_key
, 
lol_mch
;

500 
DB_MPOOLFILE
 *
mpf
;

501 
PAGE
 *
dbt_g
, *
mch_g
;

502 
db_pgno_t
 
dbt_pgno
, 
mch_pgno
;

503 
u_t32_t
 
cmp_bys
, 
dbt_bufsz
, 
dbt_n
, 
mch_bufsz
;

504 
u_t32_t
 
mch_n
, 
max_da
, 
ge_sz
;

505 
u_t8_t
 *
p1
, *
p2
;

506 
t
;

507 *
dbt_buf
, *
mch_buf
;

509 
mpf
 = 
dbp
->mpf;

510 
ge_sz
 = 
dbp
->
pgsize
;

511 *
cm
 = 0;

512 
dbt_buf
 = 
mch_buf
 = 
NULL
;

514 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`HPAGE_PTYPE
(
dbt
->
da
=
H_OFFPAGE
);

515 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`HPAGE_PTYPE
(
mch
->
da
=
H_OFFPAGE
);

518 
	`memy
(&
dbt_n
, 
	`HOFFPAGE_TLEN
(
dbt
->
da
), (
u_t32_t
));

519 
	`memy
(&
dbt_pgno
, 
	`HOFFPAGE_PGNO
(
dbt
->
da
), (
db_pgno_t
));

520 
	`memy
(&
mch_n
, 
	`HOFFPAGE_TLEN
(
mch
->
da
), (
u_t32_t
));

521 
	`memy
(&
mch_pgno
, 
	`HOFFPAGE_PGNO
(
mch
->
da
), (
db_pgno_t
));

522 
max_da
 = (
dbt_n
 < 
mch_n
 ? dbt_len : match_len);

528 i(
cmpfunc
 !
NULL
) {

529 
	`memt
(&
lol_key
, 0, (local_key));

530 
	`memt
(&
lol_mch
, 0, (local_match));

531 
dbt_buf
 = 
mch_buf
 = 
NULL
;

532 
dbt_bufsz
 = 
mch_bufsz
 = 0;

534 i((
t
 = 
	`__db_goff
(
dbp
, 
txn
, &
lol_key
, 
dbt_n
,

535 
dbt_pgno
, &
dbt_buf
, &
dbt_bufsz
)) != 0)

536 
r1
;

537 i((
t
 = 
	`__db_goff
(
dbp
, 
txn
, &
lol_mch
, 
mch_n
,

538 
mch_pgno
, &
mch_buf
, &
mch_bufsz
)) != 0)

539 
r1
;

541 *
cm
 = 
	`cmpfunc
(
dbp
, &
lol_key
, &
lol_mch
);

543 
r1
: i(
dbt_buf
 !
NULL
)

544 
	`__os_
(
dbp
->
dbv
, 
dbt_buf
);

545 i(
mch_buf
 !
NULL
)

546 
	`__os_
(
dbp
->
dbv
, 
mch_buf
);

547  (
t
);

551 
dbt_pgno
 !
PGNO_INVALID
 && 
mch_pgno
 != PGNO_INVALID) {

552 i((
t
 =

553 
	`__memp_fg
(
mpf
, &
dbt_pgno
, 
txn
, 0, &
dbt_g
)) != 0)

554  (
t
);

555 i((
t
 =

556 
	`__memp_fg
(
mpf
, &
mch_pgno
, 
txn
, 0, &
mch_g
)) != 0) {

557 ()
	`__memp_ut
(

558 
mpf
, 
dbt_g
, 
DB_PRIORITY_UNCHANGED
);

559  (
t
);

561 
cmp_bys
 = 
ge_sz
 < 
max_da
 ?age_sz : max_data;

562 
p1
 = (
u_t8_t
 *)
dbt_g
 + 
	`P_OVERHEAD
(
dbp
),

563 
p2
 = (
u_t8_t
 *)
mch_g
 + 
	`P_OVERHEAD
(
dbp
);

564 
cmp_bys
-- > 0; ++
p1
, ++
p2
)

565 i(*
p1
 !*
p2
) {

566 *
cm
 = ()*
p1
 - ()*
p2
;

570 
dbt_pgno
 = 
	`NEXT_PGNO
(
dbt_g
);

571 
mch_pgno
 = 
	`NEXT_PGNO
(
mch_g
);

572 
max_da
 -
ge_sz
;

573 i((
t
 =

574 
	`__memp_ut
(
mpf
, 
dbt_g
, 
DB_PRIORITY_UNCHANGED
)) != 0) {

575 ()
	`__memp_ut
(

576 
mpf
, 
mch_g
, 
DB_PRIORITY_UNCHANGED
);

577  (
t
);

579 i((
t
 = 
	`__memp_ut
(

580 
mpf
, 
mch_g
, 
DB_PRIORITY_UNCHANGED
)) != 0)

581  (
t
);

582 i(*
cm
 != 0)

590 i(
dbt_n
 > 
mch_n
)

591 *
cm
 = 1;

592 i(
mch_n
 > 
dbt_n
)

593 *
cm
 = -1;

595 *
cm
 = 0;

599 
	}
}

	@../db/db_ovfl_vrfy.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/db_am.h
"

49 
	~"dbc/db_vify.h
"

50 
	~"dbc/mp.h
"

60 
	$__db_vrfy_ovow
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

61 
DB
 *
dbp
;

62 
VRFY_DBINFO
 *
vdp
;

63 
PAGE
 *
h
;

64 
db_pgno_t
 
pgno
;

65 
u_t32_t
 
ags
;

67 
VRFY_PAGEINFO
 *
p
;

68 
isbad
, 
t
, 
t_t
;

70 
isbad
 = 0;

71 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

72  (
t
);

74 i((
t
 = 
	`__db_vrfy_dage
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)) != 0) {

75 i(
t
 =
DB_VERIFY_BAD
)

76 
isbad
 = 1;

78 
r
;

81 
p
->
fcou
 = 
	`OV_REF
(
h
);

82 i(
p
->
fcou
 < 1) {

83 
	`EPRINT
((
dbp
->
dbv
,

85 (
u_lg
)
pgno
));

86 
isbad
 = 1;

90 
p
->
ޒ
 = 
	`HOFFSET
(
h
);

92 
r
: i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbp
->
dbv
, 
vdp
, 
p
)) != 0)

93 
t
 = 
t_t
;

94  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

95 
	}
}

106 
	$__db_vrfy_ov_ruu
(
dbp
, 
vdp
, 
pgno
, 

, 
ags
)

107 
DB
 *
dbp
;

108 
VRFY_DBINFO
 *
vdp
;

109 
db_pgno_t
 
pgno
;

110 
u_t32_t
 

;

111 
u_t32_t
 
ags
;

113 
DB
 *
pgt
;

114 
DB_ENV
 *
dbv
;

115 
VRFY_PAGEINFO
 *
p
;

116 
db_pgno_t
 
xt
, 
ev
;

117 
isbad
, 
t
, 
_t
, 
t_t
;

118 
u_t32_t
 
fcou
;

120 
dbv
 = 
dbp
->dbenv;

121 
pgt
 = 
vdp
->pgset;

122 
	`DB_ASSERT
(
dbv
, 
pgt
 !
NULL
);

123 
isbad
 = 0;

126 i(!
	`IS_VALID_PGNO
(
pgno
))

127  (
DB_VERIFY_BAD
);

133 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

134  (
t
);

137 
fcou
 = 
p
->refcount;

139 i(
p
->
ty
 !
P_OVERFLOW
) {

140 
	`EPRINT
((
dbv
,

142 (
u_lg
)
pgno
, (u_lg)
p
->
ty
));

143 
t
 = 
DB_VERIFY_BAD
;

144 
r
;

147 
ev
 = 
p
->
ev_pgno
;

148 i(
ev
 !
PGNO_INVALID
) {

149 
	`EPRINT
((
dbv
,

151 (
u_lg
)
pgno
, (u_lg)
ev
));

152 
isbad
 = 1;

165 i((
t
 = 
	`__db_vrfy_pgt_g
(
pgt
, 
pgno
, &
_t
)) != 0)

166 
r
;

167 i((
u_t32_t
)
_t
 > 
fcou
) {

168 
	`EPRINT
((
dbv
,

170 (
u_lg
)
pgno
));

171 
t
 = 
DB_VERIFY_BAD
;

172 
r
;

174 i((
t
 = 
	`__db_vrfy_pgt_c
(
pgt
, 
pgno
)) != 0)

175 
r
;

201 i(
	`LF_ISSET
(
ST_OVFL_LEAF
)) {

202 i(
	`F_ISSET
(
p
, 
VRFY_OVFL_LEAFSEEN
)) {

203 
	`EPRINT
((
dbv
,

205 (
u_lg
)
pgno
));

206 
t
 = 
DB_VERIFY_BAD
;

207 
r
;

209 
	`F_SET
(
p
, 
VRFY_OVFL_LEAFSEEN
);

222 i(
_t
 == 0) {

227 

 -
p
->
ޒ
;

230 i(!
	`LF_ISSET
(
DB_SALVAGE
))

231 
	`__db_vrfy_ru_edback
(
dbp
, 
vdp
);

233 
de
;

235 
xt
 = 
p
->
xt_pgno
;

238 i(
xt
 =
PGNO_INVALID
)

245 i(!
	`IS_VALID_PGNO
(
xt
)) {

246 
	`EPRINT
((
dbv
,

248 (
u_lg
)
pgno
, (u_lg)
xt
));

249 
t
 = 
DB_VERIFY_BAD
;

250 
r
;

253 i((
t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0 ||

254 (
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
xt
, &
p
)) != 0)

255  (
t
);

256 i(
p
->
ev_pgno
 !
pgno
) {

257 
	`EPRINT
((
dbv
,

259 (
u_lg
)
xt
, (u_lg)
p
->
ev_pgno
,

260 (
u_lg
)
pgno
));

261 
isbad
 = 1;

268 
pgno
 = 
xt
;

271 i(

 > 0) {

272 
isbad
 = 1;

273 
	`EPRINT
((
dbv
,

274 "Pag%lu: ovow im income", (
u_lg
)
pgno
));

277 
de
:

278 
r
: i((
t_t
 =

279 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

280 
t
 = 
t_t
;

281  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

282 
	}
}

293 
	$__db__goff
(
dbp
, 
vdp
, 
pgno
, 
dbt
, 
buf
, 
ags
)

294 
DB
 *
dbp
;

295 
VRFY_DBINFO
 *
vdp
;

296 
db_pgno_t
 
pgno
;

297 
DBT
 *
dbt
;

298 *
buf
;

299 
u_t32_t
 
ags
;

301 
DB_MPOOLFILE
 *
mpf
;

302 
PAGE
 *
h
;

303 
t
, 
t_t
;

304 
u_t32_t
 
bysg
, 
bys
;

305 
u_t8_t
 *
c
, *
de
;

307 
mpf
 = 
dbp
->mpf;

308 
h
 = 
NULL
;

309 
t
 = 
t_t
 = 0;

310 
bysg
 = 
bys
 = 0;

312 (
pgno
 !
PGNO_INVALID
&& (
	`IS_VALID_PGNO
(pgno))) {

317 i((
t
 = 
	`__db_lvage_mkde
(
vdp
, 
pgno
)) != 0)

320 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0)

327 i(!
	`LF_ISSET
(
DB_AGGRESSIVE
&& 
	`TYPE
(
h
!
P_OVERFLOW
) {

328 
t
 = 
DB_VERIFY_BAD
;

332 
c
 = (
u_t8_t
 *)
h
 + 
	`P_OVERHEAD
(
dbp
);

333 
bys
 = 
	`OV_LEN
(
h
);

335 i(
bys
 + 
	`P_OVERHEAD
(
dbp
> dbp->
pgsize
)

336 
bys
 = 
dbp
->
pgsize
 - 
	`P_OVERHEAD
(dbp);

338 i((
t
 = 
	`__os_loc
(
dbp
->
dbv
,

339 
bysg
 + 
bys
, 
buf
)) != 0)

342 
de
 = *(
u_t8_t
 **)
buf
 + 
bysg
;

343 
bysg
 +
bys
;

345 
	`memy
(
de
, 
c
, 
bys
);

347 
pgno
 = 
	`NEXT_PGNO
(
h
);

349 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
DB_PRIORITY_UNCHANGED
)) != 0)

351 
h
 = 
NULL
;

358 i(
t
 =0 || 
	`LF_ISSET
(
DB_AGGRESSIVE
)) {

359 
dbt
->
size
 = 
bysg
;

360 
dbt
->
da
 = *(**)
buf
;

364 i(
h
 !
NULL
 && (
t_t
 =

365 
	`__memp_ut
(
mpf
, 
h
, 
DB_PRIORITY_UNCHANGED
)!0 && 
t
 == 0)

366 
t
 = 
t_t
;

368  (
t
);

369 
	}
}

	@../db/db_pr.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/hash.h
"

15 
	~"dbc/mp.h
"

16 
	~"dbc/qam.h
"

17 
	~"dbc/db_vify.h
"

26 
	$__db_ldme
()

28 
pid_t
 
pid
;

30 
	`__os_id
(
NULL
, &
pid
, NULL);

31 
	}
}

33 #ifde
HAVE_STATISTICS


34 
__db_bma
 
__P
((
DB
 *, 
BTMETA
 *, 
u_t32_t
));

35 
__db_hma
 
__P
((
DB
 *, 
HMETA
 *, 
u_t32_t
));

36 
__db_ma
 
__P
((
DB
 *, 
DBMETA
 *, 
FN
 cڡ *, 
u_t32_t
));

37 cڡ *
__db_gy_to_rg
 
__P
((
u_t32_t
));

38 
__db_db
 
__P
((
DB
 *, 
u_t32_t
));

39 
__db_off
 
__P
((
DB_ENV
 *, 
DB_MSGBUF
 *, *));

40 
__db_
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
));

41 
__db_qma
 
__P
((
DB
 *, 
QMETA
 *, 
u_t32_t
));

50 
	$__db_dume
(
dbp
, 
txn
, 

, 
me
)

51 
DB
 *
dbp
;

52 
DB_TXN
 *
txn
;

53 *

, *
me
;

55 
DB_ENV
 *
dbv
;

56 
FILE
 *

, *
ig_
;

57 
u_t32_t
 
ags
;

58 
t
;

60 
dbv
 = 
dbp
->dbenv;

62 
ags
 = 0; *

 != '\0'; ++op)

63 *

) {

65 
	`LF_SET
(
DB_PR_PAGE
);

70 
	`LF_SET
(
DB_PR_RECOVERYTEST
);

73  (
EINVAL
);

76 i(
me
 !
NULL
) {

77 i((

 = 
	`fݒ
(
me
, "w")=
NULL
)

78  (
	`__os_g_o
());

80 
ig_
 = 
dbv
->
db_msgfe
;

81 
dbv
->
db_msgfe
 = 

;

83 

 = 
ig_
 = 
NULL
;

85 
	`__db_db
(
dbp
, 
ags
);

87 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

89 
t
 = 
	`__db_
(
dbp
, 
txn
, 
ags
);

91 i(

 !
NULL
) {

92 ()
	`fo
(

);

93 
dbv
->
db_msgfe
 = 
ig_
;

96  (
t
);

97 
	}
}

99 cڡ 
FN
 
	g__db_ags_
[] = {

100 { 
DB_AM_CHKSUM
, "checksumming" },

101 { 
DB_AM_COMPENSATE
, "created by compensatingransaction" },

102 { 
DB_AM_CREATED
, "database created" },

103 { 
DB_AM_CREATED_MSTR
, "encompassing file created" },

104 { 
DB_AM_DBM_ERROR
, "dbm/ndbmrror" },

105 { 
DB_AM_DELIMITER
, "variableength" },

106 { 
DB_AM_DISCARD
, "discard cachedages" },

107 { 
DB_AM_DUP
, "duplicates" },

108 { 
DB_AM_DUPSORT
, "sorted duplicates" },

109 { 
DB_AM_ENCRYPT
, "encrypted" },

110 { 
DB_AM_FIXEDLEN
, "fixed-lengthecords" },

111 { 
DB_AM_INMEM
, "in-memory" },

112 { 
DB_AM_IN_RENAME
, "file is beingenamed" },

113 { 
DB_AM_NOT_DURABLE
, "changesotogged" },

114 { 
DB_AM_OPEN_CALLED
, "open called" },

115 { 
DB_AM_PAD
, "pad value" },

116 { 
DB_AM_PGDEF
, "defaultage size" },

117 { 
DB_AM_RDONLY
, "read-only" },

118 { 
DB_AM_READ_UNCOMMITTED
, "read-uncommitted" },

119 { 
DB_AM_RECNUM
, "Btreeecordumbers" },

120 { 
DB_AM_RECOVER
, "opened forecovery" },

121 { 
DB_AM_RENUMBER
, "renumber" },

122 { 
DB_AM_REVSPLITOFF
, "noeverse splits" },

123 { 
DB_AM_SECONDARY
, "secondary" },

124 { 
DB_AM_SNAPSHOT
, "load on open" },

125 { 
DB_AM_SUBDB
, "subdatabases" },

126 { 
DB_AM_SWAP
, "needswap" },

127 { 
DB_AM_TXN
, "transactional" },

128 { 
DB_AM_VERIFYING
, "verifier" },

129 { 0, 
NULL
 }

138 cڡ 
FN
 *

139 
	$__db_g_ags_
()

141  (
__db_ags_
);

142 
	}
}

149 
	$__db_db
(
dbp
, 
ags
)

150 
DB
 *
dbp
;

151 
u_t32_t
 
ags
;

153 
DB_MSGBUF
 
mb
;

154 
DB_ENV
 *
dbv
;

155 
BTREE
 *
bt
;

156 
HASH
 *
h
;

157 
QUEUE
 *
q
;

159 
dbv
 = 
dbp
->dbenv;

161 
	`DB_MSGBUF_INIT
(&
mb
);

162 
	`__db_msg
(
dbv
, "In-memory DB structure:");

163 
	`__db_msgadd
(
dbv
, &
mb
, "%s: %#lx",

164 
	`__db_dbty_to_rg
(
dbp
->
ty
), (
u_lg
)dbp->
ags
);

165 
	`__db_ags
(
dbv
, &
mb
, 
dbp
->
ags
, 
__db_ags_
, " (", ")");

166 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

168 
dbp
->
ty
) {

169 
DB_BTREE
:

170 
DB_RECNO
:

171 
bt
 = 
dbp
->
bt_
;

172 
	`__db_msg
(
dbv
, "bt_meta: %lu bt_root: %lu",

173 (
u_lg
)
bt
->
bt_ma
, (u_lg)bt->
bt_ro
);

174 
	`__db_msg
(
dbv
, "bt_mkey: %lu", (
u_lg
)
bt
->
bt_mkey
);

175 i(!
	`LF_ISSET
(
DB_PR_RECOVERYTEST
))

176 
	`__db_msg
(
dbv
, "bt_compare: %#lx bt_prefix: %#lx",

177 
	`P_TO_ULONG
(
bt
->
bt_com
),

178 
	`P_TO_ULONG
(
bt
->
bt_efix
));

179 
	`__db_msg
(
dbv
, "bt_gno: %lu", (
u_lg
)
bt
->
bt_gno
);

180 i(
dbp
->
ty
 =
DB_RECNO
) {

181 
	`__db_msg
(
dbv
,

183 (
u_lg
)
bt
->
_d
, (u_lg)bt->
_dim
,

184 (
u_lg
)
bt
->
_n
,

185 
bt
->
_sour
 =
NULL
 ? "" : bt->re_source);

186 
	`__db_msg
(
dbv
,

188 
bt
->
_modifd
, bt->
_eof
, (
u_lg
)bt->
_ϡ
);

191 
DB_HASH
:

192 
h
 = 
dbp
->
h_
;

193 
	`__db_msg
(
dbv
, "ma_pgno: %lu", (
u_lg
)
h
->
ma_pgno
);

194 
	`__db_msg
(
dbv
, "h_f: %lu", (
u_lg
)
h
->
h_f
);

195 
	`__db_msg
(
dbv
, "h_m: %lu", (
u_lg
)
h
->
h_m
);

196 i(!
	`LF_ISSET
(
DB_PR_RECOVERYTEST
))

197 
	`__db_msg
(
dbv
, "h_hash: %#lx", 
	`P_TO_ULONG
(
h
->
h_hash
));

199 
DB_QUEUE
:

200 
q
 = 
dbp
->
q_
;

201 
	`__db_msg
(
dbv
, "q_ma: %lu", (
u_lg
)
q
->
q_ma
);

202 
	`__db_msg
(
dbv
, "q_ro: %lu", (
u_lg
)
q
->
q_ro
);

203 
	`__db_msg
(
dbv
, "re_pad: %#lxe_len: %lu",

204 (
u_lg
)
q
->
_d
, (u_lg)q->
_n
);

205 
	`__db_msg
(
dbv
, "c_ge: %lu", (
u_lg
)
q
->
c_ge
);

206 
	`__db_msg
(
dbv
, "ge_ext: %lu", (
u_lg
)
q
->
ge_ext
);

208 
DB_UNKNOWN
:

212 
	}
}

219 
	$__db_
(
dbp
, 
txn
, 
ags
)

220 
DB
 *
dbp
;

221 
DB_TXN
 *
txn
;

222 
u_t32_t
 
ags
;

224 
DB_MPOOLFILE
 *
mpf
;

225 
PAGE
 *
h
;

226 
db_pgno_t
 
i
, 
ϡ
;

227 
t
;

229 
mpf
 = 
dbp
->mpf;

231 i(
dbp
->
ty
 =
DB_QUEUE
)

232  (
	`__db_queue
(
dbp
, 
ags
));

238 i((
t
 = 
	`__memp_g_ϡ_pgno
(
mpf
, &
ϡ
)) != 0)

239  (
t
);

240 
i
 = 0; i <
ϡ
; ++i) {

241 i((
t
 = 
	`__memp_fg
(
mpf
, &
i
, 
txn
, 0, &
h
)) != 0)

242  (
t
);

243 ()
	`__db_ge
(
dbp
, 
h
, 
ags
);

244 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)) != 0)

245  (
t
);

249 
	}
}

256 
	$__db_ma
(
dbp
, 
dbma
, 

, 
ags
)

257 
DB
 *
dbp
;

258 
DBMETA
 *
dbma
;

259 
FN
 cڡ *

;

260 
u_t32_t
 
ags
;

262 
DB_MSGBUF
 
mb
;

263 
DB_ENV
 *
dbv
;

264 
DB_MPOOLFILE
 *
mpf
;

265 
PAGE
 *
h
;

266 
db_pgno_t
 
pgno
;

267 
u_t8_t
 *
p
;

268 
t
, 
t
;

269 cڡ *
p
;

271 
dbv
 = 
dbp
->dbenv;

272 
mpf
 = 
dbp
->mpf;

273 
	`DB_MSGBUF_INIT
(&
mb
);

275 
	`__db_msg
(
dbv
, "\tmagic: %#lx", (
u_lg
)
dbma
->
magic
);

276 
	`__db_msg
(
dbv
, "\tvsi: %lu", (
u_lg
)
dbma
->
vsi
);

277 
	`__db_msg
(
dbv
, "\agesize: %lu", (
u_lg
)
dbma
->
gesize
);

278 
	`__db_msg
(
dbv
, "\y: %lu", (
u_lg
)
dbma
->
ty
);

279 
	`__db_msg
(
dbv
, "\tkeys: %lu\trecords: %lu",

280 (
u_lg
)
dbma
->
key_cou
, (u_lg)dbma->
cd_cou
);

286 i(!
	`LF_ISSET
(
DB_PR_RECOVERYTEST
)) {

287 
	`__db_msgadd
(

288 
dbv
, &
mb
, "\t䓆i: %lu", (
u_lg
)
dbma
->

);

289 
pgno
 = 
dbma
->

,

290 
t
 = 0, 
p
 = ", "; 
pgno
 !
PGNO_INVALID
;) {

291 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0) {

292 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

293 
	`__db_msg
(
dbv
,

295 (
u_lg
)
pgno
, 
	`db_
(
t
));

298 
pgno
 = 
h
->
xt_pgno
;

299 ()
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
);

300 
	`__db_msgadd
(
dbv
, &
mb
, "%s%lu", 
p
, (
u_lg
)
pgno
);

301 i(++
t
 % 10 == 0) {

302 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

303 
t
 = 0;

304 
p
 = "\t";

306 
p
 = ", ";

308 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

309 
	`__db_msg
(
dbv
, "\a_pgno: %lu", (
u_lg
)
dbma
->
ϡ_pgno
);

312 i(

 !
NULL
) {

313 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

314 
	`__db_msgadd
(
dbv
, &
mb
, "\tags: %#lx", (
u_lg
)
dbma
->
ags
);

315 
	`__db_ags
(
dbv
, &
mb
, 
dbma
->
ags
, 

, " (", ")");

318 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

319 
	`__db_msgadd
(
dbv
, &
mb
, "\tuid: ");

320 
p
 = (
u_t8_t
 *)
dbma
->
uid
,

321 
t
 = 0; c < 
DB_FILE_ID_LEN
; ++cnt) {

322 
	`__db_msgadd
(
dbv
, &
mb
, "%x", *
p
++);

323 i(
t
 < 
DB_FILE_ID_LEN
 - 1)

324 
	`__db_msgadd
(
dbv
, &
mb
, " ");

326 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

327 
	}
}

334 
	$__db_bma
(
dbp
, 
h
, 
ags
)

335 
DB
 *
dbp
;

336 
BTMETA
 *
h
;

337 
u_t32_t
 
ags
;

339 cڡ 
FN
 

[] = {

340 { 
BTM_DUP
, "duplicates" },

341 { 
BTM_RECNO
, "recno" },

342 { 
BTM_RECNUM
, "btree:recnum" },

343 { 
BTM_FIXEDLEN
, "recno:fixed-length" },

344 { 
BTM_RENUMBER
, "recno:renumber" },

345 { 
BTM_SUBDB
, "multiple-databases" },

346 { 
BTM_DUPSORT
, "sorted duplicates" },

347 { 0, 
NULL
 }

349 
DB_ENV
 *
dbv
;

351 
dbv
 = 
dbp
->dbenv;

353 
	`__db_ma
(
dbp
, (
DBMETA
 *)
h
, 

, 
ags
);

355 
	`__db_msg
(
dbv
, "\tmkey: %lu", (
u_lg
)
h
->
mkey
);

356 i(
dbp
->
ty
 =
DB_RECNO
)

357 
	`__db_msg
(
dbv
, "\tre_len: %#lxe_pad: %#lx",

358 (
u_lg
)
h
->
_n
, (u_lg)h->
_d
);

359 
	`__db_msg
(
dbv
, "\o: %lu", (
u_lg
)
h
->
ro
);

362 
	}
}

369 
	$__db_hma
(
dbp
, 
h
, 
ags
)

370 
DB
 *
dbp
;

371 
HMETA
 *
h
;

372 
u_t32_t
 
ags
;

374 cڡ 
FN
 

[] = {

375 { 
DB_HASH_DUP
, "duplicates" },

376 { 
DB_HASH_SUBDB
, "multiple-databases" },

377 { 
DB_HASH_DUPSORT
, "sorted duplicates" },

378 { 0, 
NULL
 }

380 
DB_ENV
 *
dbv
;

381 
DB_MSGBUF
 
mb
;

382 
i
;

384 
dbv
 = 
dbp
->dbenv;

385 
	`DB_MSGBUF_INIT
(&
mb
);

387 
	`__db_ma
(
dbp
, (
DBMETA
 *)
h
, 

, 
ags
);

389 
	`__db_msg
(
dbv
, "\tmax_buck: %lu", (
u_lg
)
h
->
max_buck
);

390 
	`__db_msg
(
dbv
, "\thigh_mask: %#lx", (
u_lg
)
h
->
high_mask
);

391 
	`__db_msg
(
dbv
, "\ow_mask: %#lx", (
u_lg
)
h
->
low_mask
);

392 
	`__db_msg
(
dbv
, "\tf: %lu", (
u_lg
)
h
->
f
);

393 
	`__db_msg
(
dbv
, "\em: %lu", (
u_lg
)
h
->
m
);

394 
	`__db_msg
(
dbv
, "\th_chkey: %#lx", (
u_lg
)
h
->
h_chkey
);

395 
	`__db_msgadd
(
dbv
, &
mb
, "\tspareoints: ");

396 
i
 = 0; i < 
NCACHED
; i++)

397 
	`__db_msgadd
(
dbv
, &
mb
, "%lu ", (
u_lg
)
h
->
es
[
i
]);

398 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

401 
	}
}

408 
	$__db_qma
(
dbp
, 
h
, 
ags
)

409 
DB
 *
dbp
;

410 
QMETA
 *
h
;

411 
u_t32_t
 
ags
;

413 
DB_ENV
 *
dbv
;

415 
dbv
 = 
dbp
->dbenv;

417 
	`__db_ma
(
dbp
, (
DBMETA
 *)
h
, 
NULL
, 
ags
);

419 
	`__db_msg
(
dbv
, "\tf_o: %lu", (
u_lg
)
h
->
f_o
);

420 
	`__db_msg
(
dbv
, "\tcur_o: %lu", (
u_lg
)
h
->
cur_o
);

421 
	`__db_msg
(
dbv
, "\tre_len: %#lxe_pad: %lu",

422 (
u_lg
)
h
->
_n
, (u_lg)h->
_d
);

423 
	`__db_msg
(
dbv
, "\ec_ge: %lu", (
u_lg
)
h
->
c_ge
);

424 
	`__db_msg
(
dbv
, "\age_ext: %lu", (
u_lg
)
h
->
ge_ext
);

427 
	}
}

436 
	$__db_age
(
dbp
, 
txn
, 
pgno
)

437 
DB
 *
dbp
;

438 
DB_TXN
 *
txn
;

439 
db_pgno_t
 
pgno
;

441 
DB_MPOOLFILE
 *
mpf
;

442 
PAGE
 *
h
;

443 
t
, 
t_t
;

445 
mpf
 = 
dbp
->mpf;

447 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
txn
, 0, &
h
)) != 0)

448  (
t
);

450 
t
 = 
	`__db_ge
(
dbp
, 
h
, 
DB_PR_PAGE
);

452 i((
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

453 
t
 = 
t_t
;

455  (
t
);

456 
	}
}

465 
	$__db_ge
(
dbp
, 
h
, 
ags
)

466 
DB
 *
dbp
;

467 
PAGE
 *
h
;

468 
u_t32_t
 
ags
;

470 
BINTERNAL
 *
bi
;

471 
BKEYDATA
 *
bk
;

472 
DB_ENV
 *
dbv
;

473 
DB_MSGBUF
 
mb
;

474 
HOFFPAGE
 
a_hkd
;

475 
QAMDATA
 *
qp
, *
q
;

476 
RINTERNAL
 *
ri
;

477 
db_dx_t
 
dn
, 
n
, 
i
, *
p
;

478 
db_pgno_t
 
pgno
;

479 
db_o_t
 
o
;

480 
u_t32_t
 
gesize
, 
qn
;

481 
u_t8_t
 *

, *
hk
, *
p
;

482 
ded
, 
t
;

483 cڡ *
s
;

484 *

;

486 
dbv
 = 
dbp
->dbenv;

487 
	`DB_MSGBUF_INIT
(&
mb
);

493 i(
	`LF_ISSET
(
DB_PR_RECOVERYTEST
&& 
	`TYPE
(
h
=
P_INVALID
)

496 i((
s
 = 
	`__db_gy_to_rg
(
	`TYPE
(
h
))=
NULL
) {

497 
	`__db_msg
(
dbv
, "ILLEGAL PAGE TYPE:age: %luype: %lu",

498 (
u_lg
)
h
->
pgno
, (u_lg)
	`TYPE
(h));

499  (
EINVAL
);

508 
gesize
 = (
u_t32_t
)
dbp
->
mpf
->
m
->

.
_gesize
;

511 
	`__db_msgadd
(
dbv
, &
mb
, "g%lu: %s:", (
u_lg
)
h
->
pgno
, 
s
);

517 i(!
	`LF_ISSET
(
DB_PR_RECOVERYTEST
) ||

518 (
	`TYPE
(
h
!
P_BTREEMETA
 && TYPE(h!
P_HASHMETA
 &&

519 
	`TYPE
(
h
!
P_QAMMETA
 && TYPE(h!
P_QAMDATA
))

520 
	`__db_msgadd
(
dbv
, &
mb
, " LSN [%lu][%lu]:",

521 (
u_lg
)
	`LSN
(
h
).
fe
, (u_lg)LSN(h).
offt
);

527 
	`__db_msgadd
(
dbv
, &
mb
, "ev %lu", (
u_lg
)
h
->
v
);

530 i(
	`TYPE
(
h
=
P_IBTREE
 ||

531 
	`TYPE
(
h
=
P_IRECNO
 || (TYPE(h=
P_LRECNO
 &&

532 
h
->
pgno
 =((
BTREE
 *)
dbp
->
bt_
)->
bt_ro
))

533 
	`__db_msgadd
(
dbv
, &
mb
, "ecds: %lu", (
u_lg
)
	`RE_NREC
(
h
));

534 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

536 
	`TYPE
(
h
)) {

537 
P_BTREEMETA
:

538  (
	`__db_bma
(
dbp
, (
BTMETA
 *)
h
, 
ags
));

539 
P_HASHMETA
:

540  (
	`__db_hma
(
dbp
, (
HMETA
 *)
h
, 
ags
));

541 
P_QAMMETA
:

542  (
	`__db_qma
(
dbp
, (
QMETA
 *)
h
, 
ags
));

543 
P_QAMDATA
:

544 i(!
	`LF_ISSET
(
DB_PR_PAGE
))

547 
qn
 = ((
QUEUE
 *)
dbp
->
q_
)->
_n
;

548 
o
 = (
h
->
pgno
 - 1* 
	`QAM_RECNO_PER_PAGE
(
dbp
) + 1;

549 
i
 = 0;

550 
q
 = (
QAMDATA
 *)((
u_t8_t
 *)
h
 + 
gesize
 - 
qn
);

551 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
h
, 
i
); q< 
q
;

552 
o
++, 
i
++, 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
h
, i)) {

553 i(!
	`F_ISSET
(
qp
, 
QAM_SET
))

556 
	`__db_msgadd
(
dbv
, &
mb
, "%s",

557 
	`F_ISSET
(
qp
, 
QAM_VALID
) ? "\t" : " D");

558 
	`__db_msgadd
(
dbv
, &
mb
, "[%03lu] %4lu ", (
u_lg
)
o
,

559 (
u_lg
)((
u_t8_t
 *)
qp
 - (u_t8_*)
h
));

560 
	`__db_
(
dbv
, &
mb
, 
qp
->
da
, 
qn
);

567 
s
 = "\t";

568 i(
	`TYPE
(
h
!
P_IBTREE
 && TYPE(h!
P_IRECNO
) {

569 
	`__db_msgadd
(
dbv
, &
mb
, "%sprev: %4luext: %4lu",

570 
s
, (
u_lg
)
	`PREV_PGNO
(
h
), (u_lg)
	`NEXT_PGNO
(h));

571 
s
 = " ";

573 i(
	`TYPE
(
h
=
P_OVERFLOW
) {

574 
	`__db_msgadd
(
dbv
, &
mb
,

575 "%et: %4lu ", 
s
, (
u_lg
)
	`OV_REF
(
h
));

576 
	`__db_
(
dbv
, &
mb
, (
u_t8_t
 *)
h
 + 
	`P_OVERHEAD
(
dbp
), 
	`OV_LEN
(h));

579 
	`__db_msgadd
(
dbv
, &
mb
, "%rs: %4lu", 
s
, (
u_lg
)
	`NUM_ENT
(
h
));

580 
	`__db_msgadd
(
dbv
, &
mb
, " offt: %4lu", (
u_lg
)
	`HOFFSET
(
h
));

581 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

583 i(
	`TYPE
(
h
=
P_INVALID
 || !
	`LF_ISSET
(
DB_PR_PAGE
))

586 
t
 = 0;

587 
p
 = 
	`P_INP
(
dbp
, 
h
);

588 
i
 = 0; i < 
	`NUM_ENT
(
h
); i++) {

589 i((
u_t
)(
	`P_ENTRY
(
dbp
, 
h
, 
i
- (
u_t8_t
 *)h) <

590 (
u_t
)(
	`P_OVERHEAD
(
dbp
)) ||

591 (
size_t
)(
	`P_ENTRY
(
dbp
, 
h
, 
i
- (
u_t8_t
 *)h>
gesize
) {

592 
	`__db_msg
(
dbv
,

594 (
u_lg
)
i
, (u_lg)
p
[i]);

595 
t
 = 
EINVAL
;

598 
ded
 = 0;

599 
	`TYPE
(
h
)) {

600 
P_HASH_UNSORTED
:

601 
P_HASH
:

602 
P_IBTREE
:

603 
P_IRECNO
:

604 

 = 
	`P_ENTRY
(
dbp
, 
h
, 
i
);

606 
P_LBTREE
:

607 

 = 
	`P_ENTRY
(
dbp
, 
h
, 
i
);

608 
ded
 = 
i
 % 2 == 0 &&

609 
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
 + 
O_INDX
)->
ty
);

611 
P_LDUP
:

612 
P_LRECNO
:

613 

 = 
	`P_ENTRY
(
dbp
, 
h
, 
i
);

614 
ded
 = 
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
)->
ty
);

617 
ty_r
;

619 
	`__db_msgadd
(
dbv
, &
mb
, "%s", 
ded
 ? " D" : "\t");

620 
	`__db_msgadd
(

621 
dbv
, &
mb
, "[%03lu] %4lu ", (
u_lg
)
i
, (u_lg)
p
[i]);

622 
	`TYPE
(
h
)) {

623 
P_HASH_UNSORTED
:

624 
P_HASH
:

625 
hk
 = 

;

626 
	`HPAGE_PTYPE
(
hk
)) {

627 
H_OFFDUP
:

628 
	`memy
(&
pgno
,

629 
	`HOFFDUP_PGNO
(
hk
), (
db_pgno_t
));

630 
	`__db_msgadd
(
dbv
, &
mb
,

631 "%4lu [ofagdups]", (
u_lg
)
pgno
);

632 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

634 
H_DUPLICATE
:

641 i(
i
 != 0)

642 
n
 = 
	`LEN_HKEYDATA
(
dbp
, 
h
, 0, 
i
);

644 
n
 = 1;

646 
	`__db_msgadd
(
dbv
, &
mb
, "Duplicates:");

647 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

648 
p
 = 
	`HKEYDATA_DATA
(
hk
),

649 

 = 
p
 + 
n
; <p;) {

650 
	`memy
(&
dn
, 
p
, (
db_dx_t
));

651 
p
 +(
db_dx_t
);

652 
	`__db_msgadd
(
dbv
, &
mb
, "\t\t");

653 
	`__db_
(
dbv
, &
mb
, 
p
, 
dn
);

654 
p
 +(
db_dx_t
+ 
dn
;

657 
H_KEYDATA
:

658 
	`__db_
(
dbv
, &
mb
, 
	`HKEYDATA_DATA
(
hk
),

659 
	`LEN_HKEYDATA
(
dbp
, 
h
, 
i
 == 0 ?

660 
gesize
 : 0, 
i
));

662 
H_OFFPAGE
:

663 
	`memy
(&
a_hkd
, 
hk
, 
HOFFPAGE_SIZE
);

664 
	`__db_msgadd
(
dbv
, &
mb
,

666 (
u_lg
)
a_hkd
.

, (u_lg_hkd.
pgno
);

667 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

670 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

671 
	`__db_msg
(
dbv
, "ILLEGAL HASH PAGE TYPE: %lu",

672 (
u_lg
)
	`HPAGE_PTYPE
(
hk
));

673 
t
 = 
EINVAL
;

677 
P_IBTREE
:

678 
bi
 = 

;

679 
	`__db_msgadd
(
dbv
, &
mb
,

681 (
u_lg
)
bi
->
ecs
, (u_lg)bi->
pgno
,

682 (
u_lg
)
bi
->
ty
);

683 
	`B_TYPE
(
bi
->
ty
)) {

684 
B_KEYDATA
:

685 
	`__db_
(
dbv
, &
mb
, 
bi
->
da
, bi->
n
);

687 
B_DUPLICATE
:

688 
B_OVERFLOW
:

689 
	`__db_off
(
dbv
, &
mb
, 
bi
->
da
);

692 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

693 
	`__db_msg
(
dbv
, "ILLEGAL BINTERNAL TYPE: %lu",

694 (
u_lg
)
	`B_TYPE
(
bi
->
ty
));

695 
t
 = 
EINVAL
;

699 
P_IRECNO
:

700 
ri
 = 

;

701 
	`__db_msgadd
(
dbv
, &
mb
, "entries %4lugno %4lu",

702 (
u_lg
)
ri
->
ecs
, (u_lgi->
pgno
);

703 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

705 
P_LBTREE
:

706 
P_LDUP
:

707 
P_LRECNO
:

708 
bk
 = 

;

709 
	`B_TYPE
(
bk
->
ty
)) {

710 
B_KEYDATA
:

711 
	`__db_
(
dbv
, &
mb
, 
bk
->
da
, bk->
n
);

713 
B_DUPLICATE
:

714 
B_OVERFLOW
:

715 
	`__db_off
(
dbv
, &
mb
, 
bk
);

718 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

719 
	`__db_msg
(
dbv
,

721 (
u_lg
)
	`B_TYPE
(
bk
->
ty
));

722 
t
 = 
EINVAL
;

727 
ty_r
: 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

728 
	`__db_msg
(
dbv
,

729 "ILLEGAL PAGE TYPE: %lu", (
u_lg
)
	`TYPE
(
h
));

730 
t
 = 
EINVAL
;

734  (
t
);

735 
	}
}

744 
	$__db_
(
dbv
, 
mbp
, 
p
, 
n
)

745 
DB_ENV
 *
dbv
;

746 
DB_MSGBUF
 *
mbp
;

747 
u_t8_t
 *
p
;

748 
u_t32_t
 
n
;

750 
u_t32_t
 
i
;

752 
	`__db_msgadd
(
dbv
, 
mbp
, "n: %3lu", (
u_lg
)
n
);

753 i(
n
 != 0) {

754 
	`__db_msgadd
(
dbv
, 
mbp
, " data: ");

755 
i
 = 
n
 <20 ? : 20; i > 0; --i, ++
p
) {

756 i(
	`irt
(()*
p
) || *p == '\n')

757 
	`__db_msgadd
(
dbv
, 
mbp
, "%c", *
p
);

759 
	`__db_msgadd
(
dbv
, 
mbp
, "%#.2x", (
u_t
)*
p
);

761 i(
n
 > 20)

762 
	`__db_msgadd
(
dbv
, 
mbp
, "...");

764 
	`DB_MSGBUF_FLUSH
(
dbv
, 
mbp
);

765 
	}
}

772 
	$__db_off
(
dbv
, 
mbp
, 
vp
)

773 
DB_ENV
 *
dbv
;

774 
DB_MSGBUF
 *
mbp
;

775 *
vp
;

777 
BOVERFLOW
 *
bo
;

779 
bo
 = 
vp
;

780 
	`B_TYPE
(
bo
->
ty
)) {

781 
B_OVERFLOW
:

782 
	`__db_msgadd
(
dbv
, 
mbp
, "overflow:otalen: %4luage: %4lu",

783 (
u_lg
)
bo
->

, (u_lg)bo->
pgno
);

785 
B_DUPLICATE
:

786 
	`__db_msgadd
(

787 
dbv
, 
mbp
, "dui:age: %4lu", (
u_lg
)
bo
->
pgno
);

793 
	`DB_MSGBUF_FLUSH
(
dbv
, 
mbp
);

794 
	}
}

804 
	$__db_ags
(
dbv
, 
mbp
, 
ags
, 

, 
efix
, 
suffix
)

805 
DB_ENV
 *
dbv
;

806 
DB_MSGBUF
 *
mbp
;

807 
u_t32_t
 
ags
;

808 
FN
 cڡ *

;

809 cڡ *
efix
, *
suffix
;

811 
DB_MSGBUF
 
mb
;

812 cڡ 
FN
 *
p
;

813 
found
, 
de
;

814 cڡ *
p
;

816 i(

 =
NULL
)

824 i(
mbp
 =
NULL
) {

825 
de
 = 1;

826 
mbp
 = &
mb
;

827 
	`DB_MSGBUF_INIT
(
mbp
);

829 
de
 = 0;

831 
p
 = 
efix
 =
NULL
 ? "" :refix;

832 
found
 = 0, 
p
 = 

; f->
mask
 != 0; ++fnp)

833 i(
	`LF_ISSET
(
p
->
mask
)) {

834 
	`__db_msgadd
(
dbv
, 
mbp
, "%s%s", 
p
, 
p
->
me
);

835 
p
 = ", ";

836 
found
 = 1;

839 i((
de
 || 
found
&& 
suffix
 !
NULL
)

840 
	`__db_msgadd
(
dbv
, 
mbp
, "%s", 
suffix
);

841 i(
de
)

842 
	`DB_MSGBUF_FLUSH
(
dbv
, 
mbp
);

843 
	}
}

852 
	$__db_lockmode_to_rg
(
mode
)

853 
db_lockmode_t
 
mode
;

855 
mode
) {

856 
DB_LOCK_NG
:

858 
DB_LOCK_READ
:

860 
DB_LOCK_WRITE
:

862 
DB_LOCK_WAIT
:

864 
DB_LOCK_IWRITE
:

866 
DB_LOCK_IREAD
:

868 
DB_LOCK_IWR
:

870 
DB_LOCK_READ_UNCOMMITTED
:

872 
DB_LOCK_WWRITE
:

878 
	}
}

885 
	$__db_gy_to_rg
(
ty
)

886 
u_t32_t
 
ty
;

888 *
s
;

890 
s
 = 
NULL
;

891 
ty
) {

892 
P_BTREEMETA
:

893 
s
 = "btree metadata";

895 
P_LDUP
:

896 
s
 = "duplicate";

898 
P_HASH_UNSORTED
:

899 
s
 = "hash unsorted";

901 
P_HASH
:

902 
s
 = "hash";

904 
P_HASHMETA
:

905 
s
 = "hash metadata";

907 
P_IBTREE
:

908 
s
 = "btree internal";

910 
P_INVALID
:

911 
s
 = "invalid";

913 
P_IRECNO
:

914 
s
 = "recno internal";

916 
P_LBTREE
:

917 
s
 = "btreeeaf";

919 
P_LRECNO
:

920 
s
 = "recnoeaf";

922 
P_OVERFLOW
:

923 
s
 = "overflow";

925 
P_QAMMETA
:

926 
s
 = "queue metadata";

928 
P_QAMDATA
:

929 
s
 = "queue";

935  (
s
);

936 
	}
}

947 
	$__db_dume
(
dbp
, 
txn
, 

, 
me
)

948 
DB
 *
dbp
;

949 
DB_TXN
 *
txn
;

950 *

, *
me
;

952 
	`COMPQUIET
(
txn
, 
NULL
);

953 
	`COMPQUIET
(

, 
NULL
);

954 
	`COMPQUIET
(
me
, 
NULL
);

956  (
	`__db__n_but
(
dbp
->
dbv
));

957 
	}
}

965 cڡ 
FN
 *

966 
	$__db_g_ags_
()

972  (
NULL
);

973 
	}
}

984 
	$__db_dump_
(
dbp
, 
subme
, 
back
, 
hd
, 
pag
, 
keyag
)

985 
DB
 *
dbp
;

986 cڡ *
subme
;

987 (*
back

	`__P
((*, const *));

988 *
hd
;

989 
pag
, 
keyag
;

991 
DB_ENV
 *
dbv
;

992 
DB_THREAD_INFO
 *

;

993 
hd_check
, 
t
, 
t_t
;

995 
dbv
 = 
dbp
->dbenv;

997 
	`PANIC_CHECK
(
dbv
);

998 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->dump");

1000 
	`ENV_ENTER
(
dbv
, 

);

1003 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

1004 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 1)) != 0) {

1005 
hd_check
 = 0;

1006 
r
;

1009 
t
 = 
	`__db_dump
(
dbp
, 
subme
, 
back
, 
hd
, 
pag
, 
keyag
);

1012 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

1013 
t
 = 
t_t
;

1015 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

1016  (
t
);

1017 
	}
}

1027 
	$__db_dump
(
dbp
, 
subme
, 
back
, 
hd
, 
pag
, 
keyag
)

1028 
DB
 *
dbp
;

1029 cڡ *
subme
;

1030 (*
back

	`__P
((*, const *));

1031 *
hd
;

1032 
pag
, 
keyag
;

1034 
DB_ENV
 *
dbv
;

1035 
DBC
 *
db
;

1036 
DBT
 
key
, 
da
;

1037 
DBT
 
keyt
, 
d
;

1038 
db_o_t
 
o
;

1039 
is_o
, 
t
, 
t_t
;

1040 *
por
;

1042 
dbv
 = 
dbp
->dbenv;

1044 i((
t
 = 
	`__db_hd
(

1045 
dbp
, 
subme
, 
pag
, 
keyag
, 
hd
, 
back
, 
NULL
, 0)) != 0)

1046  (
t
);

1052 i((
t
 = 
	`__db_curs
(
dbp
, 
NULL
, &
db
, 0)) != 0)

1053  (
t
);

1055 
	`memt
(&
key
, 0, (key));

1056 
	`memt
(&
da
, 0, (data));

1057 i((
t
 = 
	`__os_mloc
(
dbv
, 1024 * 1024, &
da
.data)) != 0)

1058 
r
;

1059 
da
.
un
 = 1024 * 1024;

1060 
da
.
ags
 = 
DB_DBT_USERMEM
;

1061 
is_o
 = (
dbp
->
ty
 =
DB_RECNO
 || dbp->ty =
DB_QUEUE
);

1062 
keyag
 = 
is_o
 ? keyflag : 1;

1063 i(
is_o
) {

1064 
keyt
.
da
 = &
o
;

1065 
keyt
.
size
 = (
o
);

1068 
y
: (
t
 =

1069 
	`__dbc_g
(
db
, &
key
, &
da
, 
DB_NEXT
 | 
DB_MULTIPLE_KEY
)) == 0) {

1070 
	`DB_MULTIPLE_INIT
(
por
, &
da
);

1072 i(
is_o
)

1073 
	`DB_MULTIPLE_RECNO_NEXT
(
por
, &
da
,

1074 
o
, 
d
.
da
, d.
size
);

1076 
	`DB_MULTIPLE_KEY_NEXT
(
por
,

1077 &
da
, 
keyt
.data,

1078 
keyt
.
size
, 
d
.
da
, dataret.size);

1080 i(
d
.
da
 =
NULL
)

1083 i((
keyag
 &&

1084 (
t
 = 
	`__db_dbt
(&
keyt
, 
pag
, " ",

1085 
hd
, 
back
, 
is_o
)) != 0) ||

1086 (
t
 = 
	`__db_dbt
(&
d
, 
pag
, " ",

1087 
hd
, 
back
, 0)) != 0)

1088 
r
;

1091 i(
t
 =
DB_BUFFER_SMALL
) {

1092 
da
.
size
 = (
u_t32_t
)
	`DB_ALIGN
(data.size, 1024);

1093 i((
t
 = 
	`__os_loc
(
dbv
, 
da
.
size
, &data.data)) != 0)

1094 
r
;

1095 
da
.
un
 = da.
size
;

1096 
y
;

1098 i(
t
 =
DB_NOTFOUND
)

1099 
t
 = 0;

1101 i((
t_t
 = 
	`__db_foٔ
(
hd
, 
back
)!0 && 
t
 == 0)

1102 
t
 = 
t_t
;

1104 
r
: i((
t_t
 = 
	`__dbc_o
(
db
)!0 && 
t
 == 0)

1105 
t
 = 
t_t
;

1106 i(
da
.d!
NULL
)

1107 
	`__os_
(
dbv
, 
da
.data);

1109  (
t
);

1110 
	}
}

1120 
	$__db_dbt
(
db
, 
checkt
, 
efix
, 
hd
, 
back
, 
is_o
)

1121 
DBT
 *
db
;

1122 
checkt
;

1123 cڡ *
efix
;

1124 *
hd
;

1125 (*
back

	`__P
((*, const *));

1126 
is_o
;

1128 cڡ 
u_ch
 
hex
[] = "0123456789abcdef";

1129 
db_o_t
 
o
;

1130 
size_t
 
n
;

1131 
t
;

1132 
	#DBTBUFLEN
 100

	)

1133 
u_t8_t
 *
p
, *
hp
;

1134 
buf
[
DBTBUFLEN
], 
hbuf
[DBTBUFLEN];

1142 i(
efix
 !
NULL
 && (
t
 = 
	`back
(
hd
,refix)) != 0)

1143  (
t
);

1144 i(
is_o
) {

1150 ()
	`__ua_memy
(&
o
, 
db
->
da
, (recno));

1151 
	`tf
(
buf
, 
DBTBUFLEN
, "%lu", (
u_lg
)
o
);

1154 i(!
checkt
) {

1155 
n
 = 
	`
(
buf
), 
p
 = (
u_t8_t
 *)buf,

1156 
hp
 = (
u_t8_t
 *)
hbuf
; 
n
-- > 0; ++
p
) {

1157 *
hp
++ = 
hex
[(
u_t8_t
)(*
p
 & 0xf0) >> 4];

1158 *
hp
++ = 
hex
[*
p
 & 0x0f];

1160 *
hp
 = '\0';

1161 
t
 = 
	`back
(
hd
, 
hbuf
);

1163 
t
 = 
	`back
(
hd
, 
buf
);

1165 i(
t
 != 0)

1166  (
t
);

1167 } i(
checkt
) {

1168 
n
 = 
db
->
size
, 
p
 = db->
da
;en--; ++p)

1169 i(
	`irt
(()*
p
)) {

1170 i(*
p
 == '\\' &&

1171 (
t
 = 
	`back
(
hd
, "\\")) != 0)

1172  (
t
);

1173 
	`tf
(
buf
, 
DBTBUFLEN
, "%c", *
p
);

1174 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1175  (
t
);

1177 
	`tf
(
buf
, 
DBTBUFLEN
, "\\%c%c",

1178 
hex
[(
u_t8_t
)(*
p
 & 0xf0) >> 4],

1179 
hex
[*
p
 & 0x0f]);

1180 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1181  (
t
);

1184 
n
 = 
db
->
size
, 
p
 = db->
da
;en--; ++p) {

1185 
	`tf
(
buf
, 
DBTBUFLEN
, "%c%c",

1186 
hex
[(
u_t8_t
)(*
p
 & 0xf0) >> 4],

1187 
hex
[*
p
 & 0x0f]);

1188 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1189  (
t
);

1192  (
	`back
(
hd
, "\n"));

1193 
	}
}

1203 
	$__db_hd
(
dbp
, 
subme
, 
pag
, 
keyag
, 
hd
, 
back
, 
vdp
, 
ma_pgno
)

1204 
DB
 *
dbp
;

1205 cڡ *
subme
;

1206 
pag
, 
keyag
;

1207 *
hd
;

1208 (*
back

	`__P
((*, const *));

1209 
VRFY_DBINFO
 *
vdp
;

1210 
db_pgno_t
 
ma_pgno
;

1212 
DBT
 
dbt
;

1213 
DB_ENV
 *
dbv
;

1214 
DBTYPE
 
dbty
;

1215 
VRFY_PAGEINFO
 *
p
;

1216 
u_t32_t
 
ags
, 
tmp_u_t32
;

1217 
size_t
 
bu
;

1218 *
buf
;

1219 
usg_vdp
, 
t
, 
t_t
, 
tmp_t
;

1221 
t
 = 0;

1222 
buf
 = 
NULL
;

1223 
	`COMPQUIET
(
bu
, 0);

1233 i(
dbp
 =
NULL
)

1234 
dbv
 = 
NULL
;

1236 
dbv
 = 
dbp
->dbenv;

1237 
	`DB_ASSERT
(
dbv
, 
dbp
 !
NULL
 || 
vdp
 != NULL);

1246 i(
vdp
 !
NULL
) {

1247 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
ma_pgno
, &
p
)) != 0)

1248  (
t
);

1250 i(
	`F_ISSET
(
vdp
, 
SALVAGE_PRINTABLE
))

1251 
pag
 = 1;

1252 
usg_vdp
 = 1;

1254 
p
 = 
NULL
;

1255 
usg_vdp
 = 0;

1262 i(
dbp
 =
NULL
)

1263 
dbty
 = 
DB_BTREE
;

1264 i(
usg_vdp
)

1265 
p
->
ty
) {

1266 
P_BTREEMETA
:

1267 i(
	`F_ISSET
(
p
, 
VRFY_IS_RECNO
))

1268 
dbty
 = 
DB_RECNO
;

1270 
dbty
 = 
DB_BTREE
;

1272 
P_HASHMETA
:

1273 
dbty
 = 
DB_HASH
;

1275 
P_QAMMETA
:

1276 
dbty
 = 
DB_QUEUE
;

1285 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
dbp
, 
DB_AM_VERIFYING
));

1286 
dbty
 = 
DB_BTREE
;

1290 
dbty
 = 
dbp
->
ty
;

1292 i((
t
 = 
	`back
(
hd
, "VERSION=3\n")) != 0)

1293 
r
;

1294 i(
pag
) {

1295 i((
t
 = 
	`back
(
hd
, "format=print\n")) != 0)

1296 
r
;

1297 } i((
t
 = 
	`back
(
hd
, "format=bytevalue\n")) != 0)

1298 
r
;

1305 
bu
 = 64;

1306 i((
t
 = 
	`__os_mloc
(
dbv
, 
bu
, &
buf
)) != 0)

1307 
r
;

1308 i(
subme
 !
NULL
) {

1309 
	`tf
(
buf
, 
bu
, "database=");

1310 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1311 
r
;

1312 
	`DB_INIT_DBT
(
dbt
, 
subme
, 
	`
(subname));

1313 i((
t
 = 
	`__db_dbt
(&
dbt
, 1, 
NULL
, 
hd
, 
back
, 0)) != 0)

1314 
r
;

1316 
dbty
) {

1317 
DB_BTREE
:

1318 i((
t
 = 
	`back
(
hd
, "type=btree\n")) != 0)

1319 
r
;

1320 i(
usg_vdp
)

1321 
tmp_t
 = 
	`F_ISSET
(
p
, 
VRFY_HAS_RECNUMS
) ? 1 : 0;

1323 i((
t
 = 
	`__db_g_ags
(
dbp
, &
ags
)) != 0) {

1324 
	`__db_r
(
dbv
, 
t
, "DB->get_flags");

1325 
r
;

1327 
tmp_t
 = 
	`F_ISSET
(
dbp
, 
DB_AM_RECNUM
) ? 1 : 0;

1329 i(
tmp_t
 && (
t
 = 
	`back
(
hd
, "recnum=1\n")) != 0)

1330 
r
;

1332 i(
usg_vdp
)

1333 
tmp_u_t32
 = 
p
->
bt_mkey
;

1335 i((
t
 =

1336 
	`__bam_g_bt_mkey
(
dbp
, &
tmp_u_t32
)) != 0) {

1337 
	`__db_r
(
dbv
, 
t
, "DB->get_bt_minkey");

1338 
r
;

1340 i(
tmp_u_t32
 !0 &&mp_u_t32 !
DEFMINKEYPAGE
) {

1341 
	`tf
(
buf
, 
bu
,

1342 "bt_mkey=%lu\n", (
u_lg
)
tmp_u_t32
);

1343 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1344 
r
;

1347 
DB_HASH
:

1348 #ifde
HAVE_HASH


1349 i((
t
 = 
	`back
(
hd
, "type=hash\n")) != 0)

1350 
r
;

1351 i(
usg_vdp
)

1352 
tmp_u_t32
 = 
p
->
h_f
;

1354 i((
t
 =

1355 
	`__ham_g_h_f
(
dbp
, &
tmp_u_t32
)) != 0) {

1356 
	`__db_r
(
dbv
, 
t
, "DB->get_h_ffactor");

1357 
r
;

1359 i(
tmp_u_t32
 != 0) {

1360 
	`tf
(
buf
, 
bu
,

1361 "h_f=%lu\n", (
u_lg
)
tmp_u_t32
);

1362 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1363 
r
;

1366 i(
usg_vdp
)

1367 
tmp_u_t32
 = 
p
->
h_m
;

1369 i((
t
 = 
	`__ham_g_h_m
(
dbp
, &
tmp_u_t32
)) != 0) {

1370 
	`__db_r
(
dbv
, 
t
, "DB->get_h_nelem");

1371 
r
;

1377 i(
tmp_u_t32
 > 1) {

1378 
	`tf
(
buf
, 
bu
,

1379 "h_m=%lu\n", (
u_lg
)
tmp_u_t32
);

1380 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1381 
r
;

1385 
t
 = 
	`__db_no_hash_am
(
dbv
);

1386 
r
;

1388 
DB_QUEUE
:

1389 #ifde
HAVE_QUEUE


1390 i((
t
 = 
	`back
(
hd
, "type=queue\n")) != 0)

1391 
r
;

1392 i(
usg_vdp
)

1393 
tmp_u_t32
 = 
vdp
->
_n
;

1395 i((
t
 = 
	`__m_g__n
(
dbp
, &
tmp_u_t32
)) != 0) {

1396 
	`__db_r
(
dbv
, 
t
, "DB->get_re_len");

1397 
r
;

1399 
	`tf
(
buf
, 
bu
, "_n=%lu\n", (
u_lg
)
tmp_u_t32
);

1400 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1401 
r
;

1403 i(
usg_vdp
)

1404 
tmp_t
 = ()
vdp
->
_d
;

1406 i((
t
 = 
	`__m_g__d
(
dbp
, &
tmp_t
)) != 0) {

1407 
	`__db_r
(
dbv
, 
t
, "DB->get_re_pad");

1408 
r
;

1410 i(
tmp_t
 != 0 &&mp_int != ' ') {

1411 
	`tf
(
buf
, 
bu
, "_d=%#x\n", 
tmp_t
);

1412 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1413 
r
;

1416 i(
usg_vdp
)

1417 
tmp_u_t32
 = 
vdp
->
ge_ext
;

1419 i((
t
 =

1420 
	`__qam_g_exsize
(
dbp
, &
tmp_u_t32
)) != 0) {

1421 
	`__db_r
(
dbv
, 
t
, "DB->get_q_extentsize");

1422 
r
;

1424 i(
tmp_u_t32
 != 0) {

1425 
	`tf
(
buf
, 
bu
,

1426 "exsize=%lu\n", (
u_lg
)
tmp_u_t32
);

1427 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1428 
r
;

1432 
t
 = 
	`__db_no_queue_am
(
dbv
);

1433 
r
;

1435 
DB_RECNO
:

1436 i((
t
 = 
	`back
(
hd
, "type=recno\n")) != 0)

1437 
r
;

1438 i(
usg_vdp
)

1439 
tmp_t
 = 
	`F_ISSET
(
p
, 
VRFY_IS_RRECNO
) ? 1 : 0;

1441 
tmp_t
 = 
	`F_ISSET
(
dbp
, 
DB_AM_RENUMBER
) ? 1 : 0;

1442 i(
tmp_t
 != 0 &&

1443 (
t
 = 
	`back
(
hd
, "renumber=1\n")) != 0)

1444 
r
;

1446 i(
usg_vdp
)

1447 
tmp_t
 = 
	`F_ISSET
(
p
, 
VRFY_IS_FIXEDLEN
) ? 1 : 0;

1449 
tmp_t
 = 
	`F_ISSET
(
dbp
, 
DB_AM_FIXEDLEN
) ? 1 : 0;

1450 i(
tmp_t
) {

1451 i(
usg_vdp
)

1452 
tmp_u_t32
 = 
p
->
_n
;

1454 i((
t
 =

1455 
	`__m_g__n
(
dbp
, &
tmp_u_t32
)) != 0) {

1456 
	`__db_r
(
dbv
, 
t
, "DB->get_re_len");

1457 
r
;

1459 
	`tf
(
buf
, 
bu
,

1460 "_n=%lu\n", (
u_lg
)
tmp_u_t32
);

1461 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1462 
r
;

1464 i(
usg_vdp
)

1465 
tmp_t
 = ()
p
->
_d
;

1467 i((
t
 =

1468 
	`__m_g__d
(
dbp
, &
tmp_t
)) != 0) {

1469 
	`__db_r
(
dbv
, 
t
, "DB->get_re_pad");

1470 
r
;

1472 i(
tmp_t
 != 0 &&mp_int != ' ') {

1473 
	`tf
(
buf
,

1474 
bu
, "_d=%#x\n", (
u_t
)
tmp_t
);

1475 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1476 
r
;

1480 
DB_UNKNOWN
:

1481 
t
 = 
	`__db_unknown_th
(
dbv
, "__db_prheader");

1482 
r
;

1485 i(
usg_vdp
) {

1486 i(
	`F_ISSET
(
p
, 
VRFY_HAS_CHKSUM
))

1487 i((
t
 = 
	`back
(
hd
, "chksum=1\n")) != 0)

1488 
r
;

1489 i(
	`F_ISSET
(
p
, 
VRFY_HAS_DUPS
))

1490 i((
t
 = 
	`back
(
hd
, "duplicates=1\n")) != 0)

1491 
r
;

1492 i(
	`F_ISSET
(
p
, 
VRFY_HAS_DUPSORT
))

1493 i((
t
 = 
	`back
(
hd
, "dupsort=1\n")) != 0)

1494 
r
;

1502 i(
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
))

1503 i((
t
 = 
	`back
(
hd
, "chksum=1\n")) != 0)

1504 
r
;

1505 i(
	`F_ISSET
(
dbp
, 
DB_AM_DUP
))

1506 i((
t
 = 
	`back
(
hd
, "duplicates=1\n")) != 0)

1507 
r
;

1508 i(
	`F_ISSET
(
dbp
, 
DB_AM_DUPSORT
))

1509 i((
t
 = 
	`back
(
hd
, "dupsort=1\n")) != 0)

1510 
r
;

1511 i(!
	`F_ISSET
(
dbp
, 
DB_AM_PGDEF
)) {

1512 
	`tf
(
buf
, 
bu
,

1513 "db_gesize=%lu\n", (
u_lg
)
dbp
->
pgsize
);

1514 i((
t
 = 
	`back
(
hd
, 
buf
)) != 0)

1515 
r
;

1519 i(
keyag
 && (
t
 = 
	`back
(
hd
, "keys=1\n")) != 0)

1520 
r
;

1522 
t
 = 
	`back
(
hd
, "HEADER=END\n");

1524 
r
: i(
usg_vdp
 &&

1525 (
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

1526 
t
 = 
t_t
;

1527 i(
buf
 !
NULL
)

1528 
	`__os_
(
dbv
, 
buf
);

1530  (
t
);

1531 
	}
}

1542 
	$__db_foٔ
(
hd
, 
back
)

1543 *
hd
;

1544 (*
back

	`__P
((*, const *));

1546  (
	`back
(
hd
, "DATA=END\n"));

1547 
	}
}

1556 
	$__db__back
(
hd
, 
r_g
)

1557 *
hd
;

1558 cڡ *
r_g
;

1560 *
r
;

1561 
FILE
 *
f
;

1563 
r
 = (*)
r_g
;

1564 
f
 = (
FILE
 *)
hd
;

1566 i(
	`rtf
(
f
, "%s", 
r
!()
	`
(str))

1567  (
EIO
);

1570 
	}
}

1579 
	$__db_dbty_to_rg
(
ty
)

1580 
DBTYPE
 
ty
;

1582 
ty
) {

1583 
DB_BTREE
:

1585 
DB_HASH
:

1587 
DB_RECNO
:

1589 
DB_QUEUE
:

1591 
DB_UNKNOWN
:

1596 
	}
}

	@../db/db_rec.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/log.h
"

14 
	~"dbc/mp.h
"

15 
	~"dbc/hash.h
"

17 
__db_pg__cov_t
 
__P
((
DB_ENV
 *,

18 
__db_pg_da_gs
 *, 
DB
 *, 
DB_LSN
 *, 
DB_MPOOLFILE
 *, 
db_cs
, ));

19 
__db_pg__cov_42_t
 
__P
((
DB_ENV
 *,

20 
__db_pg_da_42_gs
 *,

21 
DB
 *, 
DB_LSN
 *, 
DB_MPOOLFILE
 *, 
db_cs
, ));

31 
	$__db_addm_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

32 
DB_ENV
 *
dbv
;

33 
DBT
 *
db
;

34 
DB_LSN
 *
lp
;

35 
db_cs
 

;

36 *
fo
;

38 
__db_addm_gs
 *
gp
;

39 
DB
 *
fe_dbp
;

40 
DBC
 *
dbc
;

41 
DB_MPOOLFILE
 *
mpf
;

42 
PAGE
 *
g
;

43 
cmp_n
, 
cmp_p
, 
modifd
, 
t
;

45 
g
 = 
NULL
;

46 
	`REC_PRINT
(
__db_addm_t
);

47 
	`REC_INTRO
(
__db_addm_ad
, 1, 1);

49 
	`REC_FGET
(
mpf
, 
gp
->
pgno
, &
g
, 
de
);

50 
modifd
 = 0;

52 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

53 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
g
);

54 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
g
);

55 i((
cmp_p
 =0 && 
	`DB_REDO
(

&& 
gp
->
code
 =
DB_ADD_DUP
) ||

56 (
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
DB_REM_DUP
)) {

58 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

59 i((
t
 = 
	`__db_pem
(
dbc
, 
g
, 
gp
->
dx
,rgp->
nbys
,

60 
gp
->
hdr
.
size
 =0 ? 
NULL
 : &argp->hdr,

61 
gp
->
dbt
.
size
 =0 ? 
NULL
 : &argp->dbt)) != 0)

62 
out
;

63 
modifd
 = 1;

65 } i((
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
DB_ADD_DUP
) ||

66 (
cmp_p
 =0 && 
	`DB_REDO
(

&& 
gp
->
code
 =
DB_REM_DUP
)) {

68 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

69 i((
t
 = 
	`__db_dem
(
dbc
,

70 
g
, 
gp
->
dx
,rgp->
nbys
)) != 0)

71 
out
;

72 
modifd
 = 1;

75 i(
modifd
) {

76 i(
	`DB_REDO
(

))

77 
	`LSN
(
g
*
lp
;

79 
	`LSN
(
g

gp
->
g
;

82 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)) != 0)

83 
out
;

84 
g
 = 
NULL
;

86 
de
: *
lp
 = 
gp
->
ev_l
;

87 
t
 = 0;

89 
out
: i(
g
 !
NULL
)

90 ()
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
);

91 
REC_CLOSE
;

92 
	}
}

99 
	$__db_big_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

100 
DB_ENV
 *
dbv
;

101 
DBT
 *
db
;

102 
DB_LSN
 *
lp
;

103 
db_cs
 

;

104 *
fo
;

106 
__db_big_gs
 *
gp
;

107 
DB
 *
fe_dbp
;

108 
DBC
 *
dbc
;

109 
DB_MPOOLFILE
 *
mpf
;

110 
PAGE
 *
g
;

111 
cmp_n
, 
cmp_p
, 
modifd
, 
t
;

113 
g
 = 
NULL
;

114 
	`REC_PRINT
(
__db_big_t
);

115 
	`REC_INTRO
(
__db_big_ad
, 1, 0);

117 
	`REC_FGET
(
mpf
, 
gp
->
pgno
, &
g
, 
age
);

118 
modifd
 = 0;

126 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

127 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
g
);

128 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
g
);

129 i((
cmp_p
 =0 && 
	`DB_REDO
(

&& 
gp
->
code
 =
DB_ADD_BIG
) ||

130 (
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
DB_REM_BIG
)) {

132 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

133 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
, 
gp
->
pgno
,rgp->
ev_pgno
,

134 
gp
->
xt_pgno
, 0, 
P_OVERFLOW
);

135 
	`OV_LEN
(
g

gp
->
dbt
.
size
;

136 
	`OV_REF
(
g
) = 1;

137 
	`memy
((
u_t8_t
 *)
g
 + 
	`P_OVERHEAD
(
fe_dbp
), 
gp
->
dbt
.
da
,

138 
gp
->
dbt
.
size
);

139 
	`PREV_PGNO
(
g

gp
->
ev_pgno
;

140 
modifd
 = 1;

141 } i((
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
DB_ADD_BIG
) ||

142 (
cmp_p
 =0 && 
	`DB_REDO
(

&& 
gp
->
code
 =
DB_REM_BIG
)) {

148 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

149 
modifd
 = 1;

151 i(
modifd
)

152 
	`LSN
(
g

	`DB_REDO
(

? *
lp
 : 
gp
->
g
;

154 
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

155 
g
 = 
NULL
;

156 i(
t
 != 0)

157 
out
;

163 i(
gp
->
code
 =
DB_REM_BIG
)

164 
de
;

167 
age
: i(
gp
->
ev_pgno
 !
PGNO_INVALID
) {

168 
	`REC_FGET
(
mpf
, 
gp
->
ev_pgno
, &
g
, 
age
);

169 
modifd
 = 0;

171 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

172 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
evl
);

173 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
evl
);

175 i(
cmp_p
 =0 && 
	`DB_REDO
(

&& 
gp
->
code
 =
DB_ADD_BIG
) {

177 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

178 
	`NEXT_PGNO
(
g

gp
->
pgno
;

179 
modifd
 = 1;

180 } i(
cmp_n
 == 0 &&

181 
	`DB_UNDO
(

&& 
gp
->
code
 =
DB_ADD_BIG
) {

183 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

184 
	`NEXT_PGNO
(
g

gp
->
xt_pgno
;

185 
modifd
 = 1;

187 i(
modifd
)

188 
	`LSN
(
g

	`DB_REDO
(

? *
lp
 : 
gp
->
evl
;

189 
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

190 
g
 = 
NULL
;

191 i(
t
 != 0)

192 
out
;

194 
g
 = 
NULL
;

197 
age
: i(
gp
->
xt_pgno
 !
PGNO_INVALID
) {

198 
	`REC_FGET
(
mpf
, 
gp
->
xt_pgno
, &
g
, 
de
);

199 
modifd
 = 0;

201 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

202 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
x
);

203 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
x
);

204 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

205 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

206 
	`PREV_PGNO
(
g

PGNO_INVALID
;

207 
modifd
 = 1;

208 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

209 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

210 
	`PREV_PGNO
(
g

gp
->
pgno
;

211 
modifd
 = 1;

213 i(
modifd
)

214 
	`LSN
(
g

	`DB_REDO
(

? *
lp
 : 
gp
->
x
;

215 
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

216 
g
 = 
NULL
;

217 i(
t
 != 0)

218 
out
;

220 
g
 = 
NULL
;

222 
de
: *
lp
 = 
gp
->
ev_l
;

223 
t
 = 0;

225 
out
: i(
g
 !
NULL
)

226 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

227 
REC_CLOSE
;

228 
	}
}

238 
	$__db_ovf_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

239 
DB_ENV
 *
dbv
;

240 
DBT
 *
db
;

241 
DB_LSN
 *
lp
;

242 
db_cs
 

;

243 *
fo
;

245 
__db_ovf_gs
 *
gp
;

246 
DB
 *
fe_dbp
;

247 
DBC
 *
dbc
;

248 
DB_MPOOLFILE
 *
mpf
;

249 
PAGE
 *
g
;

250 
cmp
, 
t
;

252 
g
 = 
NULL
;

253 
	`REC_PRINT
(
__db_ovf_t
);

254 
	`REC_INTRO
(
__db_ovf_ad
, 1, 0);

256 
	`REC_FGET
(
mpf
, 
gp
->
pgno
, &
g
, 
de
);

258 
cmp
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

259 
	`CHECK_LSN
(
dbv
, 

, 
cmp
, &
	`LSN
(
g
), &
gp
->
l
);

260 i(
cmp
 =0 && 
	`DB_REDO
(

)) {

262 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

263 
	`OV_REF
(
g
+
gp
->
adju
;

264 
g
->
l
 = *
lp
;

265 } i(
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
)=0 && 
	`DB_UNDO
(

)) {

267 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

268 
	`OV_REF
(
g
-
gp
->
adju
;

269 
g
->
l
 = 
gp
->lsn;

271 
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

272 
g
 = 
NULL
;

273 i(
t
 != 0)

274 
out
;

275 
g
 = 
NULL
;

277 
de
: *
lp
 = 
gp
->
ev_l
;

278 
t
 = 0;

280 
out
: i(
g
 !
NULL
)

281 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

282 
REC_CLOSE
;

283 
	}
}

293 
	$__db_debug_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

294 
DB_ENV
 *
dbv
;

295 
DBT
 *
db
;

296 
DB_LSN
 *
lp
;

297 
db_cs
 

;

298 *
fo
;

300 
__db_debug_gs
 *
gp
;

301 
t
;

303 
	`COMPQUIET
(
dbv
, 
NULL
);

304 
	`COMPQUIET
(

, 
DB_TXN_ABORT
);

305 
	`COMPQUIET
(
fo
, 
NULL
);

307 
	`REC_PRINT
(
__db_debug_t
);

308 
	`REC_NOOP_INTRO
(
__db_debug_ad
);

310 *
lp
 = 
gp
->
ev_l
;

311 
t
 = 0;

313 
REC_NOOP_CLOSE
;

314 
	}
}

324 
	$__db_no_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

325 
DB_ENV
 *
dbv
;

326 
DBT
 *
db
;

327 
DB_LSN
 *
lp
;

328 
db_cs
 

;

329 *
fo
;

331 
__db_no_gs
 *
gp
;

332 
DB
 *
fe_dbp
;

333 
DBC
 *
dbc
;

334 
DB_MPOOLFILE
 *
mpf
;

335 
PAGE
 *
g
;

336 
cmp_n
, 
cmp_p
, 
t
;

338 
g
 = 
NULL
;

339 
	`REC_PRINT
(
__db_no_t
);

340 
	`REC_INTRO
(
__db_no_ad
, 0, 0);

342 
	`REC_FGET
(
mpf
, 
gp
->
pgno
, &
g
, 
de
);

344 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

345 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
evl
);

346 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
evl
);

347 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

348 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

349 
	`LSN
(
g
*
lp
;

350 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

351 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

352 
	`LSN
(
g

gp
->
evl
;

354 
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

355 
g
 = 
NULL
;

357 
de
: *
lp
 = 
gp
->
ev_l
;

358 
out
: i(
g
 !
NULL
)

359 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

360 
REC_CLOSE
;

361 
	}
}

371 
	$__db_pg_loc_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

372 
DB_ENV
 *
dbv
;

373 
DBT
 *
db
;

374 
DB_LSN
 *
lp
;

375 
db_cs
 

;

376 *
fo
;

378 
__db_pg_loc_gs
 *
gp
;

379 
DB
 *
fe_dbp
;

380 
DBC
 *
dbc
;

381 
DBMETA
 *
ma
;

382 
DB_MPOOLFILE
 *
mpf
;

383 
PAGE
 *
g
;

384 
db_pgno_t
 
pgno
;

385 
cmp_n
, 
cmp_p
, 
d
, 
v
, 
t
;

387 
ma
 = 
NULL
;

388 
g
 = 
NULL
;

389 
d
 = 0;

390 
	`REC_PRINT
(
__db_pg_loc_t
);

391 
	`REC_INTRO
(
__db_pg_loc_ad
, 0, 0);

399 
pgno
 = 
PGNO_BASE_MD
;

400 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
,

401 0, &
ma
)) != 0) {

403 i(
	`DB_REDO
(

)) {

404 
t
 = 
	`__db_pgr
(
fe_dbp
, 
pgno
,et);

405 
out
;

407 
de
;

409 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
ma
));

410 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
ma
), &
gp
->
ma_l
);

411 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
ma
), &
gp
->
ma_l
);

412 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

414 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

415 
	`LSN
(
ma
*
lp
;

416 
ma
->

 = 
gp
->
xt
;

417 i(
gp
->
pgno
 > 
ma
->
ϡ_pgno
)

418 
ma
->
ϡ_pgno
 = 
gp
->
pgno
;

419 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

421 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

422 
	`LSN
(
ma

gp
->
ma_l
;

428 i(!
	`IS_ZERO_LSN
(
gp
->
ge_l
))

429 
ma
->

 = 
gp
->
pgno
;

430 #ifde
HAVE_FTRUNCATE


436 
ma
->
ϡ_pgno
 = 
gp
->last_pgno;

440 #ifde
HAVE_FTRUNCATE


446 i(

 =
DB_TXN_ABORT
 && !
	`IS_ZERO_LSN
(
gp
->
ge_l
)) {

447 
db_pgno_t
 *
li
;

448 
u_t32_t
 
m
;

450 i((
t
 = 
	`__memp_g_li
(
mpf
, &
m
, &
li
)) != 0)

451 
out
;

452 i(
li
 !
NULL
) {

453 i((
t
 =

454 
	`__memp_exnd_li
(
mpf
, 
m
 + 1, &
li
)) != 0)

455 
out
;

456 i(
m
 != 0)

457 
	`memmove
(
li
 + 1,i, 
m
 * (list));

458 *
li
 = 
gp
->
pgno
;

471 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

472 0, &
g
)) != 0) {

481 #ifde
HAVE_FTRUNCATE


482 i(
	`DB_UNDO
(

))

483 
do_un
;

485 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

486 
DB_MPOOL_CREATE
, &
g
)) != 0) {

487 i(
	`DB_UNDO
(

&& 
t
 =
ENOSPC
)

488 
do_un
;

489 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

490 
out
;

492 
d
 = 1;

496 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

497 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
ge_l
);

506 i(
	`IS_ZERO_LSN
(
	`LSN
(
g
)) ||

507 (
	`IS_ZERO_LSN
(
gp
->
ge_l
&& 
	`IS_INIT_LSN
(
	`LSN
(
g
))))

508 
cmp_p
 = 0;

510 #ide
HAVE_FTRUNCATE


519 i(
	`IS_INIT_LSN
(
	`LSN
(
g
)&& IS_INIT_LSN(
gp
->
ge_l
))

520 
cmp_n
 = 0;

523 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
ge_l
);

530 i(
	`DB_REDO
(

&& 
cmp_p
 == 0) {

532 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

533 
gp
->
y
) {

534 
P_LBTREE
:

535 
P_LRECNO
:

536 
P_LDUP
:

537 
v
 = 
LEAFLEVEL
;

540 
v
 = 0;

543 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,

544 
gp
->
pgno
, 
PGNO_INVALID
, PGNO_INVALID, 
v
,rgp->
y
);

546 
g
->
l
 = *
lp
;

547 } i(
	`DB_UNDO
(

&& (
cmp_n
 =0 || 
d
)) {

554 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

555 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,

556 
gp
->
pgno
, 
PGNO_INVALID
,rgp->
xt
, 0, 
P_INVALID
);

558 
g
->
l
 = 
gp
->
ge_l
;

561 
do_un
:

566 i((
g
 =
NULL
 || 
	`IS_ZERO_LSN
(
	`LSN
(pagep))) &&

567 
	`IS_ZERO_LSN
(
gp
->
ge_l
&& 
	`DB_UNDO
(

)) {

568 #ifde
HAVE_FTRUNCATE


570 i(
g
 !
NULL
) {

571 i((
t
 = 
	`__memp_ut
(
mpf
,

572 
g
, 
DB_PRIORITY_VERY_LOW
)) != 0)

573 
out
;

574 
g
 = 
NULL
;

577 i(
ma
->
ϡ_pgno
 <
gp
->
pgno
 && (
t
 =

578 
	`__memp_run
(
mpf
, 
gp
->
pgno
, 
MP_TRUNC_RECOVER
)) != 0)

579 
out
;

582 i((
t
 = 
	`__db_add_limbo
(
dbv
,

583 
fo
, 
gp
->
feid
,rgp->
pgno
, 1)) != 0)

584 
out
;

586 i(
gp
->
pgno
 > 
ma
->
ϡ_pgno
) {

587 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

588 
ma
->
ϡ_pgno
 = 
gp
->
pgno
;

593 i(
g
 !
NULL
) {

594 
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

595 
g
 = 
NULL
;

596 i(
t
 != 0)

597 
out
;

600 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
);

601 
ma
 = 
NULL
;

602 i(
t
 != 0)

603 
out
;

605 
de
: *
lp
 = 
gp
->
ev_l
;

606 
t
 = 0;

608 
out
: i(
g
 !
NULL
)

609 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

610 i(
ma
 !
NULL
)

611 ()
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
);

612 i(
t
 =
ENOENT
 && 

 =
DB_TXN_BACKWARD_ALLOC
)

613 
t
 = 0;

614 
REC_CLOSE
;

615 
	}
}

621 
	$__db_pg__cov_t
(
dbv
, 
gp
, 
fe_dbp
, 
lp
, 
mpf
, 

, 
da
)

622 
DB_ENV
 *
dbv
;

623 
__db_pg_da_gs
 *
gp
;

624 
DB
 *
fe_dbp
;

625 
DB_LSN
 *
lp
;

626 
DB_MPOOLFILE
 *
mpf
;

627 
db_cs
 

;

628 
da
;

630 
DBMETA
 *
ma
;

631 
DB_LSN
 
cy_l
;

632 
PAGE
 *
g
, *
evp
;

633 
cmp_n
, 
cmp_p
, 
is_ma
, 
t
;

635 
ma
 = 
NULL
;

636 
g
 = 
NULL
;

637 
evp
 = 
NULL
;

645 
is_ma
 = 
gp
->
ma_pgno
 =
PGNO_BASE_MD
;

647 
	`REC_FGET
(
mpf
, 
gp
->
ma_pgno
, &
ma
, 
check_ma
);

649 i(
gp
->
ma_pgno
 !
PGNO_BASE_MD
)

650 
evp
 = (
PAGE
 *)
ma
;

652 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
ma
));

653 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
ma
), &
gp
->
ma_l
);

654 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
ma
), &
gp
->
ma_l
);

660 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

661 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

662 #ifde
HAVE_FTRUNCATE


667 i(
gp
->
pgno
 =gp->
ϡ_pgno
)

668 
ma
->
ϡ_pgno
 = 
gp
->
pgno
 - 1;

669 i(
is_ma
)

670 
ma
->

 = 
gp
->
pgno
;

672 
	`NEXT_PGNO
(
evp

gp
->
pgno
;

675 i(
is_ma
)

676 
ma
->

 = 
gp
->
pgno
;

678 
	`NEXT_PGNO
(
evp

gp
->
pgno
;

684 i(
is_ma
 && 
ma
->
ϡ_pgno
 < ma->

)

685 
ma
->
ϡ_pgno
 = ma->

;

687 
	`LSN
(
ma
*
lp
;

688 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

690 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

691 i(
is_ma
) {

692 i(
ma
->
ϡ_pgno
 < 
gp
->
pgno
)

693 
ma
->
ϡ_pgno
 = 
gp
->
pgno
;

694 
ma
->

 = 
gp
->
xt
;

696 
	`NEXT_PGNO
(
evp

gp
->
xt
;

697 
	`LSN
(
ma

gp
->
ma_l
;

700 
check_ma
:

701 i(
t
 !0 && 
is_ma
) {

703 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
ma_pgno
,et);

704 
out
;

716 #ifde
HAVE_FTRUNCATE


717 i(
	`DB_REDO
(

|| (
is_ma
 && 
ma
->
ϡ_pgno
 < 
gp
->
pgno
)) {

718 i((
t
 =

719 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
, 0, &
g
)) != 0) {

720 i(
t
 !
DB_PAGE_NOTFOUND
)

721 
out
;

722 i(
is_ma
 &&

723 
	`DB_REDO
(

&& 
ma
->
ϡ_pgno
 <
gp
->
pgno
)

724 
unc
;

725 
de
;

729 i((
t
 =

730 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
, 
DB_MPOOL_CREATE
, &
g
)) != 0)

731 
out
;

733 ()
	`__ua_memy
(&
cy_l
, &
	`LSN
(
gp
->
hd
.
da
), (
DB_LSN
));

734 
cmp_n
 = 
	`IS_ZERO_LSN
(
	`LSN
(
g
)? 0 : 
	`LOG_COMPARE
(
lp
, &LSN(pagep));

735 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
cy_l
);

737 #ifde
HAVE_FTRUNCATE


743 i(
	`IS_ZERO_LSN
(
	`LSN
(
g
)))

744 
cmp_p
 = 0;

747 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
cy_l
);

748 i(
	`DB_REDO
(

) &&

749 (
cmp_p
 == 0 ||

750 (
	`IS_ZERO_LSN
(
cy_l
) &&

751 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
ma_l
) <= 0))) {

753 #ifde
HAVE_FTRUNCATE


758 i(
is_ma
 && 
ma
->
ϡ_pgno
 <
gp
->
pgno
 &&

759 
gp
->
ϡ_pgno
 <gp->
pgno
) {

760 i((
t
 = 
	`__memp_ut
(
mpf
,

761 
g
, 
DB_PRIORITY_VERY_LOW
)) != 0)

762 
out
;

763 
g
 = 
NULL
;

764 
unc
: i((
t
 = 
	`__memp_run
(
mpf
,

765 
gp
->
pgno
, 
MP_TRUNC_RECOVER
)) != 0)

766 
out
;

767 } i(
gp
->
ϡ_pgno
 =gp->
pgno
) {

769 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

770 
	`P_INIT
(
g
, 0, 
PGNO_INVALID
,

771 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_INVALID
);

772 
	`ZERO_LSN
(
g
->
l
);

776 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

777 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,

778 
gp
->
pgno
, 
PGNO_INVALID
,rgp->
xt
, 0, 
P_INVALID
);

779 
g
->
l
 = *
lp
;

782 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

784 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

785 
	`memy
(
g
, 
gp
->
hd
.
da
,rgp->hd.
size
);

786 i(
da
)

787 
	`memy
((
u_t8_t
*)
g
 + 
	`HOFFSET
(pagep),

788 
gp
->
da
.da,rgp->da.
size
);

790 i(
g
 !
NULL
 &&

791 (
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

792 
out
;

794 
g
 = 
NULL
;

795 #ifde
HAVE_FTRUNCATE


800 i(

 =
DB_TXN_ABORT
 && 
gp
->
pgno
 !gp->
ϡ_pgno
) {

801 
db_pgno_t
 *

;

802 
u_t32_t
 
m
, 
pos
;

804 i((
t
 = 
	`__memp_g_li
(
mpf
, &
m
, &

)) != 0)

805 
out
;

806 i(

 !
NULL
) {

807 
pos
 = 0;

808 i(!
is_ma
) {

809 
	`__db_li_pos
(
gp
->
pgno
, 

, 
m
, &
pos
);

811 
	`DB_ASSERT
(
dbv
, 
gp
->
pgno
 =

[
pos
]);

812 
	`DB_ASSERT
(
dbv
,

813 
gp
->
ma_pgno
 =

[
pos
 - 1]);

816 i(
pos
 < 
m
)

817 
	`memmove
(&

[
pos
], &lp[pos + 1],

818 ((
m
 - 
pos
- 1* (*

));

821 i((
t
 =

822 
	`__memp_exnd_li
(
mpf
, 
m
 - 1, &

)) != 0)

823 
out
;

826 
de
:

828 i(
ma
 !
NULL
 &&

829 (
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
)) != 0)

830 
out
;

831 
ma
 = 
NULL
;

832 
t
 = 0;

834 
out
: i(
g
 !
NULL
)

835 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

836 i(
ma
 !
NULL
)

837 ()
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
);

839  (
t
);

840 
	}
}

850 
	$__db_pg__cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

851 
DB_ENV
 *
dbv
;

852 
DBT
 *
db
;

853 
DB_LSN
 *
lp
;

854 
db_cs
 

;

855 *
fo
;

857 
DB
 *
fe_dbp
;

858 
DBC
 *
dbc
;

859 
DB_MPOOLFILE
 *
mpf
;

860 
__db_pg__gs
 *
gp
;

861 
t
;

863 
	`REC_PRINT
(
__db_pg__t
);

864 
	`REC_INTRO
(
__db_pg__ad
, 1, 0);

866 
t
 = 
	`__db_pg__cov_t
(
dbv
,

867 (
__db_pg_da_gs
 *)
gp
, 
fe_dbp
, 
lp
, 
mpf
, 

, 0);

869 
de
: *
lp
 = 
gp
->
ev_l
;

870 
out
:

871 
REC_CLOSE
;

872 
	}
}

883 
	$__db_pg_w_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

884 
DB_ENV
 *
dbv
;

885 
DBT
 *
db
;

886 
DB_LSN
 *
lp
;

887 
db_cs
 

;

888 *
fo
;

890 #ide
HAVE_FTRUNCATE


891 
DB
 *
fe_dbp
;

892 
DBMETA
 *
ma
;

893 
DBC
 *
dbc
;

894 
DB_MPOOLFILE
 *
mpf
;

895 
__db_pg__gs
 *
gp
;

896 
t
;

898 
	`REC_PRINT
(
__db_pg__t
);

899 
	`REC_INTRO
(
__db_pg__ad
, 1, 0);

901 
	`REC_FGET
(
mpf
, 
gp
->
ma_pgno
, &
ma
, 
de
);

902 i(
	`DB_UNDO
(

)) {

903 i(
	`LOG_COMPARE
(
lp
, &
	`LSN
(
ma
)) == 0) {

904 
ma
->
l
 = 
gp
->
ma_l
;

905 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

908 } i(
	`DB_REDO
(

)) {

909 i(
	`LOG_COMPARE
(&
gp
->
ma_l
, &
	`LSN
(
ma
)) == 0) {

910 
ma
->
l
 = *
lp
;

911 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

914 i((
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
)) != 0)

915 
out
;

917 i((
t
 =

918 
	`__db_add_limbo
(
dbv
, 
fo
, 
gp
->
feid
,rgp->
pgno
, 1)) == 0)

919 *
lp
 = 
gp
->
ev_l
;

921 
de
:

922 
out
:

923 
REC_CLOSE
;

925 
	`COMPQUIET
(
dbv
, 
NULL
);

926 
	`COMPQUIET
(
db
, 
NULL
);

927 
	`COMPQUIET
(
lp
, 
NULL
);

928 
	`COMPQUIET
(

, 
DB_TXN_PRINT
);

929 
	`COMPQUIET
(
fo
, 
NULL
);

932 
	}
}

942 
	$__db_pg_da_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

943 
DB_ENV
 *
dbv
;

944 
DBT
 *
db
;

945 
DB_LSN
 *
lp
;

946 
db_cs
 

;

947 *
fo
;

949 
DB
 *
fe_dbp
;

950 
DBC
 *
dbc
;

951 
DB_MPOOLFILE
 *
mpf
;

952 
__db_pg_da_gs
 *
gp
;

953 
t
;

955 
	`REC_PRINT
(
__db_pg_da_t
);

956 
	`REC_INTRO
(
__db_pg_da_ad
, 1, 0);

958 
t
 = 
	`__db_pg__cov_t
(
dbv
, 
gp
, 
fe_dbp
, 
lp
, 
mpf
, 

, 1);

960 
de
: *
lp
 = 
gp
->
ev_l
;

961 
out
:

962 
REC_CLOSE
;

963 
	}
}

973 
	$__db_cksum_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

974 
DB_ENV
 *
dbv
;

975 
DBT
 *
db
;

976 
DB_LSN
 *
lp
;

977 
db_cs
 

;

978 *
fo
;

980 
__db_cksum_gs
 *
gp
;

982 
t
;

984 
	`COMPQUIET
(
fo
, 
NULL
);

985 
	`COMPQUIET
(
lp
, 
NULL
);

986 
	`COMPQUIET
(

, 
DB_TXN_ABORT
);

988 
	`REC_PRINT
(
__db_cksum_t
);

990 i((
t
 = 
	`__db_cksum_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

991  (
t
);

997 i(
	`F_ISSET
(
dbv
, 
DB_ENV_RECOVER_FATAL
))

998 
t
 = 0;

1000 
	`__db_rx
(
dbv
,

1002 
t
 = 
	`__db_nic
(
dbv
, 
DB_RUNRECOVERY
);

1005 
	`__os_
(
dbv
, 
gp
);

1006  (
t
);

1007 
	}
}

1017 
	$__db_pg_e_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1018 
DB_ENV
 *
dbv
;

1019 
DBT
 *
db
;

1020 
DB_LSN
 *
lp
;

1021 
db_cs
 

;

1022 *
fo
;

1024 #ide
HAVE_FTRUNCATE


1025 
__db_pg_e_gs
 *
gp
;

1026 
DB
 *
fe_dbp
;

1027 
DBC
 *
dbc
;

1028 
DB_MPOOLFILE
 *
mpf
;

1029 
PAGE
 *
g
;

1030 
t
, 
t_t
;

1032 
	`REC_PRINT
(
__db_pg_e_t
);

1033 
	`REC_INTRO
(
__db_pg_e_ad
, 1, 0);

1035 
mpf
 = 
fe_dbp
->mpf;

1053 i(

 =
DB_TXN_ABORT
) {

1054 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
,

1055 
NULL
, 
DB_MPOOL_CREATE
 | 
DB_MPOOL_EDIT
, &
g
)) != 0)

1056 
out
;

1057 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,

1058 
gp
->
pgno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_INVALID
);

1059 
	`ZERO_LSN
(
g
->
l
);

1060 
t
 = 
	`__db_add_limbo
(
dbv
, 
fo
, 
gp
->
feid
,rgp->
pgno
, 1);

1061 i((
t_t
 = 
	`__memp_ut
(

1062 
mpf
, 
g
, 
fe_dbp
->
iܙy
)!0 && 
t
 == 0)

1063 
t
 = 
t_t
;

1066 
de
: i(
t
 == 0)

1067 *
lp
 = 
gp
->
ev_l
;

1068 
out
: 
REC_CLOSE
;

1070 
	`COMPQUIET
(
dbv
, 
NULL
);

1071 
	`COMPQUIET
(
db
, 
NULL
);

1072 
	`COMPQUIET
(
lp
, 
NULL
);

1073 
	`COMPQUIET
(

, 
DB_TXN_PRINT
);

1074 
	`COMPQUIET
(
fo
, 
NULL
);

1078 
	}
}

1088 
	$__db_pg__cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1089 
DB_ENV
 *
dbv
;

1090 
DBT
 *
db
;

1091 
DB_LSN
 *
lp
;

1092 
db_cs
 

;

1093 *
fo
;

1095 
__db_pg__gs
 *
gp
;

1096 
DB
 *
fe_dbp
;

1097 
DBC
 *
dbc
;

1098 
DB_LSN
 
cy_l
;

1099 
DB_MPOOLFILE
 *
mpf
;

1100 
PAGE
 *
g
;

1101 
cmp_n
, 
cmp_p
, 
t
, 
ty
;

1103 
	`REC_PRINT
(
__db_pg__t
);

1104 
	`REC_INTRO
(
__db_pg__ad
, 1, 0);

1106 
mpf
 = 
fe_dbp
->mpf;

1107 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
, 0, &
g
)) != 0) {

1108 i(
	`DB_UNDO
(

)) {

1109 i(
t
 =
DB_PAGE_NOTFOUND
)

1110 
de
;

1112 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

1113 
out
;

1122 
	`DB_ASSERT
(
dbv
, 
fe_dbp
->
ty
 =
DB_HASH
);

1123 i((
t
 = 
	`__memp_fg
(
mpf
,

1124 &
gp
->
pgno
, 
NULL
, 
DB_MPOOL_CREATE
, &
g
)) != 0) {

1125 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

1126 
out
;

1130 ()
	`__ua_memy
(&
cy_l
, &
	`LSN
(
gp
->
hd
.
da
), (
DB_LSN
));

1131 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

1132 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
cy_l
);

1133 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
cy_l
);

1135 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1136 i(
	`TYPE
(
g
=
P_HASH
)

1137 
ty
 = 
P_HASH
;

1139 
ty
 = 
fe_dbp
->ty =
DB_RECNO
 ? 
P_LRECNO
 : 
P_LBTREE
;

1140 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1141 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
, 
	`PGNO
ag), 
PGNO_INVALID
,

1142 
PGNO_INVALID
, 
	`TYPE
(
g
=
P_HASH
 ? 0 : 1, 
ty
);

1143 
g
->
l
 = *
lp
;

1144 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

1146 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1147 
	`memy
(
g
, 
gp
->
hd
.
da
,rgp->hd.
size
);

1148 i(
gp
->
da
.
size
 > 0)

1149 
	`memy
((
u_t8_t
*)
g
 + 
	`HOFFSET
(pagep),

1150 
gp
->
da
.da,rgp->da.
size
);

1152 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1153 
out
;

1155 
de
: *
lp
 = 
gp
->
ev_l
;

1156 
out
:

1157 
REC_CLOSE
;

1158 
	}
}

1168 
	$__db_pg_st_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1169 
DB_ENV
 *
dbv
;

1170 
DBT
 *
db
;

1171 
DB_LSN
 *
lp
;

1172 
db_cs
 

;

1173 *
fo
;

1175 #ifde
HAVE_FTRUNCATE


1176 
__db_pg_st_gs
 *
gp
;

1177 
DB
 *
fe_dbp
;

1178 
DBC
 *
dbc
;

1179 
DBMETA
 *
ma
;

1180 
DB_MPOOLFILE
 *
mpf
;

1181 
PAGE
 *
g
;

1182 
db_pgno_t
 
pgno
, *
li
;

1183 
u_t32_t
 
m
, 
m
;

1184 
pgli
 *pgli, *

;

1185 
t
;

1187 
	`REC_PRINT
(
__db_pg_st_t
);

1188 
	`REC_INTRO
(
__db_pg_st_ad
, 1, 1);

1190 
pgli
 = (pgli *
gp
->
li
.
da
;

1191 
m
 = 
gp
->
li
.
size
 / (
pgli
);

1192 i(
	`DB_REDO
(

)) {

1193 
pgno
 = 
gp
->
ϡ_pgno
;

1194 i((
t
 = 
	`__db_pg_un
(
fe_dbp
, 
NULL
,

1195 
pgli
, 
NULL
, &
m
, &
pgno
, 
lp
, 1)) != 0)

1196 
out
;

1198 i(
gp
->
ϡ_
 !
PGNO_INVALID
) {

1199 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
ϡ_
, 
NULL
,

1200 0, &
ma
)) == 0) {

1201 i(
	`LOG_COMPARE
(&
	`LSN
(
ma
),

1202 &
gp
->
ϡ_l
) == 0) {

1203 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

1204 
	`NEXT_PGNO
(
ma

PGNO_INVALID
;

1205 
	`LSN
(
ma
*
lp
;

1207 i((
t
 = 
	`__memp_ut
(

1208 
mpf
, 
ma
, 
fe_dbp
->
iܙy
)) != 0)

1209 
out
;

1210 
ma
 = 
NULL
;

1211 } i(
t
 !
DB_PAGE_NOTFOUND
)

1212 
out
;

1214 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
ma
, 
NULL
,

1215 0, &
ma
)) != 0)

1216 
out
;

1217 i(
	`LOG_COMPARE
(&
	`LSN
(
ma
), &
gp
->
ma_l
) == 0) {

1218 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

1219 i(
gp
->
ϡ_
 =
PGNO_INVALID
) {

1220 i(
m
 == 0)

1221 
ma
->

 = 
PGNO_INVALID
;

1223 
ma
->

 = 
pgli
->
pgno
;

1225 
ma
->
ϡ_pgno
 = 
pgno
;

1226 
	`LSN
(
ma
*
lp
;

1230 

 = 
pgli
;< &pgli[
m
];p++) {

1231 i((
t
 = 
	`__memp_fg
(
mpf
, &

->
pgno
, 
NULL
,

1232 
DB_MPOOL_CREATE
, &
g
)) != 0)

1233 
out
;

1234 i(
	`IS_ZERO_LSN
(
	`LSN
(
g
)) ||

1235 
	`LOG_COMPARE
(&
	`LSN
(
g
), 
lp
) == 0) {

1236 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

1237 i(

 =&
pgli
[
m
 - 1])

1238 
pgno
 = 
PGNO_INVALID
;

1240 
pgno
 = 

[1].pgno;

1242 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,

1243 

->
pgno
, 
PGNO_INVALID
,gno, 0, 
P_INVALID
);

1244 
	`LSN
(
g


->
l
;

1246 i((
t
 =

1247 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1248 
out
;

1250 i(
gp
->
ϡ_
 !
PGNO_INVALID
) {

1251 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
ϡ_
, 
NULL
,

1252 
DB_MPOOL_EDIT
, &
ma
)) == 0) {

1253 i(
	`LOG_COMPARE
(&
	`LSN
(
ma
), 
lp
) == 0) {

1254 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

1255 
	`NEXT_PGNO
(
ma

pgli
->
pgno
;

1256 
	`LSN
(
ma

gp
->
ϡ_l
;

1258 i((
t
 = 
	`__memp_ut
(
mpf
,

1259 
ma
, 
fe_dbp
->
iܙy
)) != 0)

1260 
out
;

1261 } i(
t
 !
DB_PAGE_NOTFOUND
)

1262 
out
;

1263 
ma
 = 
NULL
;

1265 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
ma
,

1266 
NULL
, 
DB_MPOOL_EDIT
, &
ma
)) != 0)

1267 
out
;

1268 i(
	`LOG_COMPARE
(&
	`LSN
(
ma
), 
lp
) == 0) {

1269 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

1270 
ma
->
ϡ_pgno
 = 
gp
->last_pgno;

1271 i(
gp
->
ϡ_
 =
PGNO_INVALID
)

1272 
ma
->

 = 
pgli
->
pgno
;

1273 
	`LSN
(
ma

gp
->
ma_l
;

1276 i(

 =
DB_TXN_ABORT
) {

1277 i((
t
 = 
	`__memp_g_li
(
mpf
, &
m
, &
li
)) != 0)

1278 
out
;

1279 i(
li
 !
NULL
) {

1280 
	`DB_ASSERT
(
dbv
, 
m
 == 0 ||

1281 
gp
->
ϡ_
 =
li
[
m
 - 1]);

1282 i((
t
 = 
	`__memp_exnd_li
(

1283 
mpf
, 
m
 + 
m
, &
li
)) != 0)

1284 
out
;

1285 

 = 
pgli
;< &pgli[
m
];p++)

1286 
li
[
m
++] = 

->
pgno
;

1290 i((
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
)) != 0)

1291 
out
;

1293 
de
: *
lp
 = 
gp
->
ev_l
;

1294 
t
 = 0;

1296 
out
: 
REC_CLOSE
;

1302 
	`COMPQUIET
(
dbv
, 
NULL
);

1303 
	`COMPQUIET
(
db
, 
NULL
);

1304 
	`COMPQUIET
(
lp
, 
NULL
);

1305 
	`COMPQUIET
(

, 
DB_TXN_ABORT
);

1306 
	`COMPQUIET
(
fo
, 
NULL
);

1307  (
EINVAL
);

1309 
	}
}

1319 
	$__db_pg_loc_42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1320 
DB_ENV
 *
dbv
;

1321 
DBT
 *
db
;

1322 
DB_LSN
 *
lp
;

1323 
db_cs
 

;

1324 *
fo
;

1326 
__db_pg_loc_42_gs
 *
gp
;

1327 
DB
 *
fe_dbp
;

1328 
DBC
 *
dbc
;

1329 
DBMETA
 *
ma
;

1330 
DB_MPOOLFILE
 *
mpf
;

1331 
PAGE
 *
g
;

1332 
db_pgno_t
 
pgno
;

1333 
cmp_n
, 
cmp_p
, 
d
, 
v
, 
t
;

1335 
ma
 = 
NULL
;

1336 
g
 = 
NULL
;

1337 
d
 = 0;

1338 
	`REC_PRINT
(
__db_pg_loc_42_t
);

1339 
	`REC_INTRO
(
__db_pg_loc_42_ad
, 0, 0);

1347 
pgno
 = 
PGNO_BASE_MD
;

1348 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
ma
)) != 0) {

1350 i(
	`DB_REDO
(

)) {

1351 
t
 = 
	`__db_pgr
(
fe_dbp
, 
pgno
,et);

1352 
out
;

1354 
de
;

1356 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
ma
));

1357 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
ma
), &
gp
->
ma_l
);

1358 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
ma
), &
gp
->
ma_l
);

1359 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1361 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

1362 
	`LSN
(
ma
*
lp
;

1363 
ma
->

 = 
gp
->
xt
;

1364 i(
gp
->
pgno
 > 
ma
->
ϡ_pgno
)

1365 
ma
->
ϡ_pgno
 = 
gp
->
pgno
;

1366 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

1368 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

1369 
	`LSN
(
ma

gp
->
ma_l
;

1375 i(!
	`IS_ZERO_LSN
(
gp
->
ge_l
))

1376 
ma
->

 = 
gp
->
pgno
;

1387 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
, 0, &
g
)) != 0) {

1396 i((
t
 = 
	`__memp_fg
(

1397 
mpf
, &
gp
->
pgno
, 
NULL
, 
DB_MPOOL_CREATE
, &
g
)) != 0) {

1398 i(
	`DB_UNDO
(

&& 
t
 =
ENOSPC
)

1399 
do_un
;

1400 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

1401 
out
;

1403 
d
 = 1;

1407 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

1408 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
ge_l
);

1417 i(
	`IS_ZERO_LSN
(
	`LSN
(
g
)) ||

1418 (
	`IS_ZERO_LSN
(
gp
->
ge_l
&& 
	`IS_INIT_LSN
(
	`LSN
(
g
))))

1419 
cmp_p
 = 0;

1421 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
ge_l
);

1428 i(
	`DB_REDO
(

&& 
cmp_p
 == 0) {

1430 
gp
->
y
) {

1431 
P_LBTREE
:

1432 
P_LRECNO
:

1433 
P_LDUP
:

1434 
v
 = 
LEAFLEVEL
;

1437 
v
 = 0;

1440 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1441 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,

1442 
gp
->
pgno
, 
PGNO_INVALID
, PGNO_INVALID, 
v
,rgp->
y
);

1444 
g
->
l
 = *
lp
;

1445 } i(
	`DB_UNDO
(

&& (
cmp_n
 =0 || 
d
)) {

1452 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1453 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,

1454 
gp
->
pgno
, 
PGNO_INVALID
,rgp->
xt
, 0, 
P_INVALID
);

1456 
g
->
l
 = 
gp
->
ge_l
;

1459 
do_un
:

1464 i((
g
 =
NULL
 || 
	`IS_ZERO_LSN
(
	`LSN
(pagep))) &&

1465 
	`IS_ZERO_LSN
(
gp
->
ge_l
&& 
	`DB_UNDO
(

)) {

1467 i((
t
 = 
	`__db_add_limbo
(
dbv
,

1468 
fo
, 
gp
->
feid
,rgp->
pgno
, 1)) != 0)

1469 
out
;

1471 i(
gp
->
pgno
 > 
ma
->
ϡ_pgno
) {

1472 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

1473 
ma
->
ϡ_pgno
 = 
gp
->
pgno
;

1477 i(
g
 !
NULL
 &&

1478 (
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1479 
out
;

1480 
g
 = 
NULL
;

1482 i((
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
)) != 0)

1483 
out
;

1484 
ma
 = 
NULL
;

1486 
de
: *
lp
 = 
gp
->
ev_l
;

1487 
t
 = 0;

1489 
out
: i(
g
 !
NULL
)

1490 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

1491 i(
ma
 !
NULL
)

1492 ()
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
);

1493 i(
t
 =
ENOENT
 && 

 =
DB_TXN_BACKWARD_ALLOC
)

1494 
t
 = 0;

1495 
REC_CLOSE
;

1496 
	}
}

1502 
	$__db_pg__cov_42_t
(
dbv
, 
gp
, 
fe_dbp
, 
lp
, 
mpf
, 

, 
da
)

1503 
DB_ENV
 *
dbv
;

1504 
__db_pg_da_42_gs
 *
gp
;

1505 
DB
 *
fe_dbp
;

1506 
DB_LSN
 *
lp
;

1507 
DB_MPOOLFILE
 *
mpf
;

1508 
db_cs
 

;

1509 
da
;

1511 
DBMETA
 *
ma
;

1512 
DB_LSN
 
cy_l
;

1513 
PAGE
 *
g
, *
evp
;

1514 
cmp_n
, 
cmp_p
, 
is_ma
, 
t
;

1516 
ma
 = 
NULL
;

1517 
g
 = 
NULL
;

1518 
evp
 = 
NULL
;

1526 
is_ma
 = 
gp
->
ma_pgno
 =
PGNO_BASE_MD
;

1528 
	`REC_FGET
(
mpf
, 
gp
->
ma_pgno
, &
ma
, 
check_ma
);

1530 i(
gp
->
ma_pgno
 !
PGNO_BASE_MD
)

1531 
evp
 = (
PAGE
 *)
ma
;

1533 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
ma
));

1534 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
ma
), &
gp
->
ma_l
);

1535 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
ma
), &
gp
->
ma_l
);

1541 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1543 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

1544 i(
evp
 =
NULL
)

1545 
ma
->

 = 
gp
->
pgno
;

1547 
	`NEXT_PGNO
(
evp

gp
->
pgno
;

1553 i(
evp
 =
NULL
 && 
ma
->
ϡ_pgno
 < ma->

)

1554 
ma
->
ϡ_pgno
 = ma->

;

1555 
	`LSN
(
ma
*
lp
;

1556 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

1558 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
ma
);

1559 i(
evp
 =
NULL
)

1560 
ma
->

 = 
gp
->
xt
;

1562 
	`NEXT_PGNO
(
evp

gp
->
xt
;

1563 
	`LSN
(
ma

gp
->
ma_l
;

1564 i(
evp
 =
NULL
 && 
ma
->
ϡ_pgno
 < 
gp
->
pgno
)

1565 
ma
->
ϡ_pgno
 = 
gp
->
pgno
;

1568 
check_ma
:

1569 i(
t
 !0 && 
is_ma
) {

1571 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
ma_pgno
,et);

1572 
out
;

1584 i((
t
 =

1585 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
, 
DB_MPOOL_CREATE
, &
g
)) != 0)

1586 
out
;

1588 ()
	`__ua_memy
(&
cy_l
, &
	`LSN
(
gp
->
hd
.
da
), (
DB_LSN
));

1589 
cmp_n
 = 
	`IS_ZERO_LSN
(
	`LSN
(
g
)? 0 : 
	`LOG_COMPARE
(
lp
, &LSN(pagep));

1590 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
cy_l
);

1592 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
cy_l
);

1593 i(
	`DB_REDO
(

) &&

1594 (
cmp_p
 == 0 ||

1595 (
	`IS_ZERO_LSN
(
cy_l
) &&

1596 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
ma_l
) <= 0))) {

1598 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1599 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,

1600 
gp
->
pgno
, 
PGNO_INVALID
,rgp->
xt
, 0, 
P_INVALID
);

1601 
g
->
l
 = *
lp
;

1602 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

1604 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1605 
	`memy
(
g
, 
gp
->
hd
.
da
,rgp->hd.
size
);

1606 i(
da
)

1607 
	`memy
((
u_t8_t
*)
g
 + 
	`HOFFSET
(pagep),

1608 
gp
->
da
.da,rgp->da.
size
);

1610 i(
g
 !
NULL
 &&

1611 (
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1612 
out
;

1614 
g
 = 
NULL
;

1615 i(
ma
 !
NULL
 &&

1616 (
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
)) != 0)

1617 
out
;

1618 
ma
 = 
NULL
;

1620 
t
 = 0;

1622 
out
: i(
g
 !
NULL
)

1623 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

1624 i(
ma
 !
NULL
)

1625 ()
	`__memp_ut
(
mpf
, 
ma
, 
fe_dbp
->
iܙy
);

1627  (
t
);

1628 
	}
}

1638 
	$__db_pg__42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1639 
DB_ENV
 *
dbv
;

1640 
DBT
 *
db
;

1641 
DB_LSN
 *
lp
;

1642 
db_cs
 

;

1643 *
fo
;

1645 
DB
 *
fe_dbp
;

1646 
DBC
 *
dbc
;

1647 
DB_MPOOLFILE
 *
mpf
;

1648 
__db_pg__42_gs
 *
gp
;

1649 
t
;

1651 
	`REC_PRINT
(
__db_pg__42_t
);

1652 
	`REC_INTRO
(
__db_pg__42_ad
, 1, 0);

1654 
t
 = 
	`__db_pg__cov_42_t
(
dbv
,

1655 (
__db_pg_da_42_gs
 *)
gp
, 
fe_dbp
, 
lp
, 
mpf
, 

, 0);

1657 
de
: *
lp
 = 
gp
->
ev_l
;

1658 
out
:

1659 
REC_CLOSE
;

1660 
	}
}

1670 
	$__db_pg_da_42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1671 
DB_ENV
 *
dbv
;

1672 
DBT
 *
db
;

1673 
DB_LSN
 *
lp
;

1674 
db_cs
 

;

1675 *
fo
;

1677 
DB
 *
fe_dbp
;

1678 
DBC
 *
dbc
;

1679 
DB_MPOOLFILE
 *
mpf
;

1680 
__db_pg_da_42_gs
 *
gp
;

1681 
t
;

1683 
	`REC_PRINT
(
__db_pg_da_42_t
);

1684 
	`REC_INTRO
(
__db_pg_da_42_ad
, 1, 0);

1686 
t
 = 
	`__db_pg__cov_42_t
(

1687 
dbv
, 
gp
, 
fe_dbp
, 
lp
, 
mpf
, 

, 1);

1689 
de
: *
lp
 = 
gp
->
ev_l
;

1690 
out
:

1691 
REC_CLOSE
;

1692 
	}
}

1702 
	$__db_lk_42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1703 
DB_ENV
 *
dbv
;

1704 
DBT
 *
db
;

1705 
DB_LSN
 *
lp
;

1706 
db_cs
 

;

1707 *
fo
;

1709 
__db_lk_42_gs
 *
gp
;

1710 
DB
 *
fe_dbp
;

1711 
DBC
 *
dbc
;

1712 
DB_MPOOLFILE
 *
mpf
;

1713 
PAGE
 *
g
;

1714 
cmp_n
, 
cmp_p
, 
modifd
, 
t
;

1716 
g
 = 
NULL
;

1717 
	`REC_PRINT
(
__db_lk_42_t
);

1718 
	`REC_INTRO
(
__db_lk_42_ad
, 1, 0);

1726 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
, 0, &
g
)) != 0) {

1727 i(
	`DB_REDO
(

)) {

1728 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

1729 
out
;

1731 
xt2
;

1733 i(
gp
->
code
 =
DB_ADD_PAGE_COMPAT
)

1734 
xt1
;

1736 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l
);

1737 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l
);

1738 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1740 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1741 
g
->
l
 = *
lp
;

1742 } i(
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
)=0 && 
	`DB_UNDO
(

)) {

1744 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1745 
g
->
xt_pgno
 = 
gp
->
xt
;

1746 
g
->
ev_pgno
 = 
gp
->
ev
;

1747 
g
->
l
 = 
gp
->lsn;

1749 
xt1
: i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1750 
out
;

1751 
g
 = 
NULL
;

1753 
xt2
: i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
xt
, 
NULL
, 0, &
g
)) != 0) {

1754 i(
	`DB_REDO
(

)) {

1755 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
xt
,et);

1756 
out
;

1758 
ev
;

1760 
modifd
 = 0;

1761 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

1762 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l_xt
);

1763 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l_xt
);

1764 i((
gp
->
code
 =
DB_REM_PAGE_COMPAT
 && 
cmp_p
 =0 && 
	`DB_REDO
(

)) ||

1765 (
gp
->
code
 =
DB_ADD_PAGE_COMPAT
 && 
cmp_n
 =0 && 
	`DB_UNDO
(

))) {

1767 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1768 
g
->
ev_pgno
 = 
gp
->
ev
;

1769 
modifd
 = 1;

1770 } i((
gp
->
code
 =
DB_REM_PAGE_COMPAT
 &&

1771 
cmp_n
 =0 && 
	`DB_UNDO
(

)) ||

1772 (
gp
->
code
 =
DB_ADD_PAGE_COMPAT
 && 
cmp_p
 =0 && 
	`DB_REDO
(

))) {

1774 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1775 
g
->
ev_pgno
 = 
gp
->
pgno
;

1776 
modifd
 = 1;

1778 i(
modifd
) {

1779 i(
	`DB_UNDO
(

))

1780 
g
->
l
 = 
gp
->
l_xt
;

1782 
g
->
l
 = *
lp
;

1784 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1785 
out
;

1786 
g
 = 
NULL
;

1787 i(
gp
->
code
 =
DB_ADD_PAGE_COMPAT
)

1788 
de
;

1790 
ev
: i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->ev, 
NULL
, 0, &
g
)) != 0) {

1791 i(
	`DB_REDO
(

)) {

1792 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
ev
,et);

1793 
out
;

1795 
de
;

1797 
modifd
 = 0;

1798 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
l_ev
);

1799 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
l_ev
);

1800 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1802 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1803 
g
->
xt_pgno
 = 
gp
->
xt
;

1804 
modifd
 = 1;

1805 } i(
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
)=0 && 
	`DB_UNDO
(

)) {

1807 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1808 
g
->
xt_pgno
 = 
gp
->
pgno
;

1809 
modifd
 = 1;

1811 i(
modifd
) {

1812 i(
	`DB_UNDO
(

))

1813 
g
->
l
 = 
gp
->
l_ev
;

1815 
g
->
l
 = *
lp
;

1817 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1818 
out
;

1819 
g
 = 
NULL
;

1821 
de
: *
lp
 = 
gp
->
ev_l
;

1822 
t
 = 0;

1824 
out
: i(
g
 !
NULL
)

1825 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

1826 
REC_CLOSE
;

1827 
	}
}

	@../db/db_reclaim.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/mp.h
"

28 
	$__db_av_big
(
dbp
, 
pgno
, 
txn
, 
back
, 
cook
)

29 
DB
 *
dbp
;

30 
db_pgno_t
 
pgno
;

31 
DB_TXN
 *
txn
;

32 (*
back

	`__P
((
DB
 *, 
PAGE
 *, *, *));

33 *
cook
;

35 
DB_MPOOLFILE
 *
mpf
;

36 
PAGE
 *
p
;

37 
did_put
, 
t
;

39 
mpf
 = 
dbp
->mpf;

42 
did_put
 = 0;

43 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
txn
, 0, &
p
)) != 0)

44  (
t
);

49 
pgno
 = 
	`NEXT_PGNO
(
p
);

50 i(
back
 =
__db_un_back
 && 
	`OV_REF
(
p
) != 1)

51 
pgno
 = 
PGNO_INVALID
;

52 i((
t
 = 
	`back
(
dbp
, 
p
, 
cook
, &
did_put
)) == 0 &&

53 !
did_put
)

54 
t
 = 
	`__memp_ut
(
mpf
, 
p
, 
dbp
->
iܙy
);

55 } 
t
 =0 && 
pgno
 !
PGNO_INVALID
);

57  (
t
);

58 
	}
}

72 
	$__db_aim_back
(
dbp
, 
p
, 
cook
, 
pu
)

73 
DB
 *
dbp
;

74 
PAGE
 *
p
;

75 *
cook
;

76 *
pu
;

78 
t
;

85 i((
dbp
->
ty
 =
DB_BTREE
 || dbp->ty =
DB_RECNO
) &&

86 
	`PGNO
(
p
=((
BTREE
 *)
dbp
->
bt_
)->
bt_ro
)

88 i((
t
 = 
	`__db_
(
cook
, 
p
)) != 0)

89  (
t
);

90 *
pu
 = 1;

93 
	}
}

104 
	$__db_un_back
(
dbp
, 
p
, 
cook
, 
pu
)

105 
DB
 *
dbp
;

106 
PAGE
 *
p
;

107 *
cook
;

108 *
pu
;

110 
DB_MPOOLFILE
 *
mpf
;

111 
DBT
 
ddbt
, 
ldbt
;

112 
db_dx_t
 
dx
, 
n
, 
off
, 

, 
t
;

113 
db_unc_m
 *
m
;

114 
u_t8_t
 *
hk
, 
ty
;

115 
t
;

117 
t
 = 
	`NUM_ENT
(
p
);

118 
mpf
 = 
dbp
->mpf;

119 
m
 = 
cook
;

120 *
pu
 = 1;

122 
	`TYPE
(
p
)) {

123 
P_LBTREE
:

125 
dx
 = 0; indx < 
t
; indx +
P_INDX
) {

126 
ty
 = 
	`GET_BKEYDATA
(
dbp
, 
p
, 
dx
 + 
O_INDX
)->type;

127 i(!
	`B_DISSET
(
ty
&& 
	`B_TYPE
y!
B_DUPLICATE
)

128 ++
m
->
cou
;

131 
P_IBTREE
:

132 
P_IRECNO
:

133 
P_INVALID
:

134 i(
dbp
->
ty
 !
DB_HASH
 &&

135 ((
BTREE
 *)
dbp
->
bt_
)->
bt_ro
 =
	`PGNO
(
p
)) {

136 
ty
 = 
dbp
->ty =
DB_RECNO
 ? 
P_LRECNO
 : 
P_LBTREE
;

137 

;

140 
P_OVERFLOW
:

141 i((
t
 = 
	`__memp_dty
(
mpf
,

142 &
p
, 
m
->
dbc
->
txn
,am->dbc->
iܙy
, 0)) != 0)

143  (
t
);

144 i(
	`DBC_LOGGING
(
m
->
dbc
)) {

145 i((
t
 = 
	`__db_ovf_log
(
dbp
, 
m
->
dbc
->
txn
,

146 &
	`LSN
(
p
), 0,->
pgno
, -1, &LSN(p))) != 0)

147  (
t
);

149 
	`LSN_NOT_LOGGED
(
	`LSN
(
p
));

150 i(--
	`OV_REF
(
p
) != 0)

151 *
pu
 = 0;

153 
P_LRECNO
:

154 
dx
 = 0; indx < 
t
; indx +
O_INDX
) {

155 
ty
 = 
	`GET_BKEYDATA
(
dbp
, 
p
, 
dx
)->type;

156 i(!
	`B_DISSET
(
ty
))

157 ++
m
->
cou
;

160 i(((
BTREE
 *)
dbp
->
bt_
)->
bt_ro
 =
	`PGNO
(
p
)) {

161 
ty
 = 
P_LRECNO
;

162 

;

165 
P_LDUP
:

167 
dx
 = 0; indx < 
t
; indx +
O_INDX
)

168 i(!
	`B_DISSET
(
	`GET_BKEYDATA
(
dbp
, 
p
, 
dx
)->
ty
))

169 ++
m
->
cou
;

172 
P_HASH
:

174 
dx
 = 0; indx < 
t
; indx +
P_INDX
) {

175 *
	`H_PAIRDATA
(
dbp
, 
p
, 
dx
)) {

176 
H_OFFDUP
:

178 
H_OFFPAGE
:

179 
H_KEYDATA
:

180 ++
m
->
cou
;

182 
H_DUPLICATE
:

183 

 = 
	`LEN_HDATA
(
dbp
, 
p
, 0, 
dx
);

184 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
p
, 
dx
);

185 
off
 = 0; of< 

;

186 
off
 +
n
 + 2 * (
db_dx_t
)) {

187 ++
m
->
cou
;

188 
	`memy
(&
n
,

189 
	`HKEYDATA_DATA
(
hk
)

190 + 
off
, (
db_dx_t
));

194  (
	`__db_pgfmt
(
dbp
->
dbv
, 
p
->
pgno
));

198 i(
	`PREV_PGNO
(
p
=
PGNO_INVALID
) {

199 
ty
 = 
P_HASH
;

201 

: i((
t
 = 
	`__memp_dty
(
mpf
,

202 &
p
, 
m
->
dbc
->
txn
,am->dbc->
iܙy
, 0)) != 0)

203  (
t
);

204 *
pu
 = 0;

205 i(
	`DBC_LOGGING
(
m
->
dbc
)) {

206 
	`memt
(&
ldbt
, 0, (ldbt));

207 
	`memt
(&
ddbt
, 0, (ddbt));

208 
ldbt
.
da
 = 
p
;

209 
ldbt
.
size
 = 
	`P_OVERHEAD
(
dbp
);

210 
ldbt
.
size
 +
p
->
s
 * (
db_dx_t
);

211 
ddbt
.
da
 = (
u_t8_t
 *)
p
 + 
	`HOFFSET
(p);

212 
ddbt
.
size
 = 
dbp
->
pgsize
 - 
	`HOFFSET
(
p
);

213 i((
t
 = 
	`__db_pg__log
(
dbp
,

214 
m
->
dbc
->
txn
, &
	`LSN
(
p
), 0,

215 
p
->
pgno
, &
ldbt
, &
ddbt
)) != 0)

216  (
t
);

218 
	`LSN_NOT_LOGGED
(
	`LSN
(
p
));

220 
	`P_INIT
(
p
, 
dbp
->
pgsize
, 
	`PGNO
), 
PGNO_INVALID
,

221 
PGNO_INVALID
, 
ty
 =
P_HASH
 ? 0 : 1,ype);

225  (
	`__db_pgfmt
(
dbp
->
dbv
, 
p
->
pgno
));

228 i(*
pu
 == 1) {

229 i((
t
 = 
	`__db_
(
m
->
dbc
, 
p
)) != 0)

230  (
t
);

232 i((
t
 = 
	`__memp_ut
(
mpf
, 
p
, 
dbp
->
iܙy
)) != 0)

233  (
t
);

234 *
pu
 = 1;

238 
	}
}

	@../db/db_remove.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/f.h
"

14 
	~"dbc/b.h
"

15 
	~"dbc/hash.h
"

16 
	~"dbc/lock.h
"

17 
	~"dbc/mp.h
"

18 
	~"dbc/txn.h
"

20 
__db_dbtxn_move
 
__P
((
DB
 *, 
DB_TXN
 *, const *, const *));

21 
__db_subdb_move
 
__P
((
DB
 *, 
DB_TXN
 *, const *, const *));

31 
	$__v_dbmove_
(
dbv
, 
txn
, 
me
, 
subdb
, 
ags
)

32 
DB_ENV
 *
dbv
;

33 
DB_TXN
 *
txn
;

34 cڡ *
me
, *
subdb
;

35 
u_t32_t
 
ags
;

37 
DB
 *
dbp
;

38 
DB_THREAD_INFO
 *

;

39 
hd_check
, 
t
, 
t_t
, 
txn_lol
;

41 
dbp
 = 
NULL
;

42 
txn_lol
 = 0;

44 
	`PANIC_CHECK
(
dbv
);

45 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, "DB_ENV->dbremove");

51 i((
t
 = 
	`__db_fchk
(
dbv
, "DB->move", 
ags
, 
DB_AUTO_COMMIT
)) != 0)

52  (
t
);

54 
	`ENV_ENTER
(
dbv
, 

);

57 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

58 i(
hd_check
 && (
t
 = 
	`__v_p_r
(
dbv
, 1)) != 0) {

59 
hd_check
 = 0;

60 
r
;

67 i(
	`IS_ENV_AUTO_COMMIT
(
dbv
, 
txn
, 
ags
)) {

68 i((
t
 = 
	`__db_txn_auto_
(
dbv
, &
txn
)) != 0)

69 
r
;

70 
txn_lol
 = 1;

72 i(
txn
 !
NULL
 && !
	`TXN_ON
(
dbv
) &&

73 (!
	`CDB_LOCKING
(
dbv
|| !
	`F_ISSET
(
txn
, 
TXN_CDSGROUP
))) {

74 
t
 = 
	`__db_n_txn_v
(
dbv
);

75 
r
;

77 
	`LF_CLR
(
DB_AUTO_COMMIT
);

79 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

80 
r
;

82 
t
 = 
	`__db_move_t
(
dbp
, 
txn
, 
me
, 
subdb
, 
ags
);

84 i(
txn_lol
) {

90 
	`LOCK_INIT
(
dbp
->
hd_lock
);

91 
dbp
->
lock
 = 
NULL
;

92 } i(
txn
 !
NULL
) {

100 
dbp
->
lock
 = 
NULL
;

103 
r
: i(
txn_lol
 && (
t_t
 =

104 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 0, 
t
)) != 0 &&et == 0)

105 
t
 = 
t_t
;

117 i(
txn_lol
 || 
txn
 =
NULL
) {

118 i(
dbp
 !
NULL
 &&

119 (
t_t
 = 
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
)!0 && 
t
 == 0)

120 
t
 = 
t_t
;

122 i(
dbp
 !
NULL
 && (
t_t
 =

123 
	`__txn_oevt
(
dbv
, 
txn
, 
dbp
)!0 && 
t
 == 0)

124 
t
 = 
t_t
;

127 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

128 
t
 = 
t_t
;

130 
	`ENV_LEAVE
(
dbv
, 

);

131  (
t
);

132 
	}
}

142 
	$__db_move_
(
dbp
, 
me
, 
subdb
, 
ags
)

143 
DB
 *
dbp
;

144 cڡ *
me
, *
subdb
;

145 
u_t32_t
 
ags
;

147 
DB_ENV
 *
dbv
;

148 
DB_THREAD_INFO
 *

;

149 
hd_check
, 
t
, 
t_t
;

151 
dbv
 = 
dbp
->dbenv;

153 
	`PANIC_CHECK
(
dbv
);

165 i(
	`F_ISSET
(
dbp
, 
DB_AM_OPEN_CALLED
)) {

166 
t
 = 
	`__db_mi_ݒ
(
dbv
, "DB->remove", 1);

167  (
t
);

171 i((
t
 = 
	`__db_fchk
(
dbv
, "DB->move", 
ags
, 0)) != 0)

172  (
t
);

175 i((
t
 = 
	`__db_check_txn
(
dbp
, 
NULL
, 
DB_LOCK_INVALIDID
, 0)) != 0)

176  (
t
);

178 
	`ENV_ENTER
(
dbv
, 

);

180 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

181 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 1, 0)) != 0) {

182 
hd_check
 = 0;

183 
r
;

187 
t
 = 
	`__db_move
(
dbp
, 
NULL
, 
me
, 
subdb
, 
ags
);

189 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

190 
t
 = 
t_t
;

192 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

193  (
t
);

194 
	}
}

204 
	$__db_move
(
dbp
, 
txn
, 
me
, 
subdb
, 
ags
)

205 
DB
 *
dbp
;

206 
DB_TXN
 *
txn
;

207 cڡ *
me
, *
subdb
;

208 
u_t32_t
 
ags
;

210 
t
, 
t_t
;

212 
t
 = 
	`__db_move_t
(
dbp
, 
txn
, 
me
, 
subdb
, 
ags
);

214 i(
txn
 =
NULL
) {

215 i((
t_t
 = 
	`__db_o
(
dbp
, 
txn
, 
DB_NOSYNC
)!0 && 
t
 == 0)

216 
t
 = 
t_t
;

218 i((
t_t
 =

219 
	`__txn_oevt
(
dbp
->
dbv
, 
txn
, dbp)!0 && 
t
 == 0)

220 
t
 = 
t_t
;

223  (
t
);

224 
	}
}

234 
	$__db_move_t
(
dbp
, 
txn
, 
me
, 
subdb
, 
ags
)

235 
DB
 *
dbp
;

236 
DB_TXN
 *
txn
;

237 cڡ *
me
, *
subdb
;

238 
u_t32_t
 
ags
;

240 
DB_ENV
 *
dbv
;

241 
t
;

242 *
_me
, *
tmame
;

244 
dbv
 = 
dbp
->dbenv;

245 
_me
 = 
tmame
 = 
NULL
;

247 i(
me
 =
NULL
 && 
subdb
 == NULL) {

248 
	`__db_rx
(
dbv
, "Remove onemporary files invalid");

249 
t
 = 
EINVAL
;

250 
r
;

253 i(
me
 =
NULL
) {

254 
	`MAKE_INMEM
(
dbp
);

255 
_me
 = (*)
subdb
;

256 } i(
subdb
 !
NULL
) {

257 
t
 = 
	`__db_subdb_move
(
dbp
, 
txn
, 
me
, 
subdb
);

258 
r
;

262 i(
	`IS_REAL_TXN
(
txn
)) {

263 
t
 = 
	`__db_dbtxn_move
(
dbp
, 
txn
, 
me
, 
subdb
);

264 
r
;

272 i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
&& (
t
 =

273 
	`__db_ame
(
dbv
, 
DB_APP_DATA
, 
me
, 0, 
NULL
, &
_me
)) != 0)

274 
r
;

281 i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
&& 
	`LF_ISSET
(
DB_FORCE
) &&

282 (
t
 = 
	`__db_backup_me
(
dbv
, 
_me
, 
NULL
, &
tmame
)) == 0)

283 ()
	`__os_uƚk
(
dbv
, 
tmame
);

285 i((
t
 = 
	`__f_move_tup
(
dbp
, 
NULL
, 
_me
, 0)) != 0)

286 
r
;

288 i(
dbp
->
db_am_move
 !
NULL
 &&

289 (
t
 = 
dbp
->
	`db_am_move
(dbp, 
NULL
, 
me
, 
subdb
)) != 0)

290 
r
;

292 
t
 = 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
) ?

293 
	`__db_mem_move
(
dbp
, 
NULL
, 
_me
) :

294 
	`__f_move
(
dbv
, 
NULL
, 
dbp
->
feid
, 
me
, 
DB_APP_DATA
,

295 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0);

297 
r
: i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
&& 
_me
 !
NULL
)

298 
	`__os_
(
dbv
, 
_me
);

299 i(
tmame
 !
NULL
)

300 
	`__os_
(
dbv
, 
tmame
);

302  (
t
);

303 
	}
}

312 
	$__db_mem_move
(
dbp
, 
txn
, 
me
)

313 
DB
 *
dbp
;

314 
DB_TXN
 *
txn
;

315 cڡ *
me
;

317 
DB_ENV
 *
dbv
;

318 
DB_LSN
 
l
;

319 
DBT
 
fid_dbt
, 
me_dbt
;

320 
DB_LOCKER
 *
lock
;

321 
t
;

323 
dbv
 = 
dbp
->dbenv;

324 
lock
 = 
NULL
;

326 
	`DB_ASSERT
(
dbv
, 
me
 !
NULL
);

329 ()
	`__memp_t_ags
(
dbp
->
mpf
, 
DB_MPOOL_NOFILE
, 1);

330 i((
t
 = 
	`__memp_fݒ
(
dbp
->
mpf
, 
NULL
, 
me
, 0, 0, 0)) != 0)

331  (
t
);

332 i((
t
 = 
	`__memp_g_feid
(
dbp
->
mpf
, dbp->
feid
)) != 0)

333  (
t
);

334 
dbp
->
erve_fid
 = 1;

336 i(
	`LOCKING_ON
(
dbv
)) {

337 i(
dbp
->
lock
 =
NULL
 &&

338 (
t
 = 
	`__lock_id
(
dbv
, 
NULL
, &
dbp
->
lock
)) != 0)

339  (
t
);

340 
lock
 = 
txn
 =
NULL
 ? 
dbp
->locker :xn->locker;

350 i((
t
 =

351 
	`__f_lock_hd
(
dbv
, 
dbp
, 
lock
, 
DB_LOCK_WRITE
, 
NULL
, 0)) != 0)

352  (
t
);

354 i(
	`LOGGING_ON
(
dbv
)) {

355 i(
txn
 !
NULL
 && (
t
 =

356 
	`__txn_mevt
(
dbv
, 
txn
, 
me
, 
dbp
->
feid
, 1)) != 0)

357  (
t
);

359 
	`DB_INIT_DBT
(
me_dbt
, 
me
, 
	`
(name) + 1);

360 
	`DB_INIT_DBT
(
fid_dbt
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

361 i((
t
 = 
	`__d_mem_move_log
(

362 
dbv
, 
txn
, &
l
, 0, &
me_dbt
, &
fid_dbt
)) != 0)

363  (
t
);

366  (!
	`IS_REAL_TXN
(
txn
) ?

367 
	`__memp_me
(
dbv
, 
dbp
->
feid
, 
NULL
, 
me
, NULL, 1) : 0);

368 
	}
}

375 
	$__db_subdb_move
(
dbp
, 
txn
, 
me
, 
subdb
)

376 
DB
 *
dbp
;

377 
DB_TXN
 *
txn
;

378 cڡ *
me
, *
subdb
;

380 
DB
 *
mdbp
, *
sdbp
;

381 
t
, 
t_t
;

383 
mdbp
 = 
sdbp
 = 
NULL
;

386 i((
t
 = 
	`__db__
(&
sdbp
, 
dbp
->
dbv
, 0)) != 0)

387 
r
;

388 i((
t
 = 
	`__db_ݒ
(
sdbp
,

389 
txn
, 
me
, 
subdb
, 
DB_UNKNOWN
, 
DB_WRITEOPEN
, 0, 
PGNO_BASE_MD
)) != 0)

390 
r
;

392 
	`DB_TEST_RECOVERY
(
sdbp
, 
DB_TEST_PREDESTROY
, 
t
, 
me
);

395 
sdbp
->
ty
) {

396 
DB_BTREE
:

397 
DB_RECNO
:

398 i((
t
 = 
	`__bam_aim
(
sdbp
, 
txn
)) != 0)

399 
r
;

401 
DB_HASH
:

402 i((
t
 = 
	`__ham_aim
(
sdbp
, 
txn
)) != 0)

403 
r
;

405 
DB_QUEUE
:

406 
DB_UNKNOWN
:

408 
t
 = 
	`__db_unknown_ty
(

409 
sdbp
->
dbv
, "__db_subdb_move", sdbp->
ty
);

410 
r
;

417 i((
t
 = 
	`__db_ma_ݒ
(
sdbp
, 
txn
, 
me
, 0, 0, &
mdbp
)) != 0)

418 
r
;

420 i((
t
 = 
	`__db_ma_upde
(

421 
mdbp
, 
sdbp
, 
txn
, 
subdb
, sdbp->
ty
, 
MU_REMOVE
, 
NULL
, 0)) != 0)

422 
r
;

424 
	`DB_TEST_RECOVERY
(
sdbp
, 
DB_TEST_POSTDESTROY
, 
t
, 
me
);

426 
DB_TEST_RECOVERY_LABEL


427 
r
:

429 i(
txn
 =
NULL
) {

430 i((
t_t
 = 
	`__db_o
(
sdbp
, 
txn
, 0)!0 && 
t
 == 0)

431 
t
 = 
t_t
;

433 i(
mdbp
 !
NULL
 &&

434 (
t_t
 = 
	`__db_o
(
mdbp
, 
txn
, 
DB_NOSYNC
)!0 && 
t
 == 0)

435 
t
 = 
t_t
;

437 i((
t_t
 =

438 
	`__txn_oevt
(
sdbp
->
dbv
, 
txn
, sdbp)!0 && 
t
 == 0)

439 
t
 = 
t_t
;

440 i(
mdbp
 !
NULL
 && (
t_t
 =

441 
	`__txn_oevt
(
mdbp
->
dbv
, 
txn
, mdbp)!0 && 
t
 == 0)

442 
t
 = 
t_t
;

445  (
t
);

446 
	}
}

449 
	$__db_dbtxn_move
(
dbp
, 
txn
, 
me
, 
subdb
)

450 
DB
 *
dbp
;

451 
DB_TXN
 *
txn
;

452 cڡ *
me
, *
subdb
;

454 
DB_ENV
 *
dbv
;

455 
t
;

456 *
tmame
;

458 
dbv
 = 
dbp
->dbenv;

459 
tmame
 = 
NULL
;

469 i((
t
 = 
	`__db_backup_me
(
dbv
,

470 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
? 
subdb
 : 
me
, 
txn
, &
tmame
)) != 0)

471  (
t
);

473 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_PREDESTROY
, 
t
, 
me
);

475 i((
t
 = 
	`__db_me_t
(
dbp
, 
txn
, 
me
, 
subdb
, 
tmame
)) != 0)

476 
r
;

481 i(
dbp
->
db_am_move
 !
NULL
 &&

482 (
t
 = 
dbp
->
	`db_am_move
(dbp, 
txn
, 
tmame
, 
NULL
)) != 0)

483 
r
;

485 
t
 = 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
) ?

486 
	`__db_mem_move
(
dbp
, 
txn
, 
tmame
) :

487 
	`__f_move
(
dbv
, 
txn
, 
dbp
->
feid
, 
tmame
, 
DB_APP_DATA
,

488 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0);

490 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTDESTROY
, 
t
, 
me
);

492 
r
:

493 
DB_TEST_RECOVERY_LABEL


494 i(
tmame
 !
NULL
)

495 
	`__os_
(
dbv
, 
tmame
);

497  (
t
);

498 
	}
}

	@../db/db_rename.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/f.h
"

15 
	~"dbc/lock.h
"

16 
	~"dbc/log.h
"

17 
	~"dbc/mp.h
"

18 
	~"dbc/txn.h
"

20 
__db_subdb_me
 
__P
((
DB
 *,

21 
DB_TXN
 *, const *, const *, const *));

31 
	$__v_dbme_
(
dbv
, 
txn
, 
me
, 
subdb
, 
wme
, 
ags
)

32 
DB_ENV
 *
dbv
;

33 
DB_TXN
 *
txn
;

34 cڡ *
me
, *
subdb
, *
wme
;

35 
u_t32_t
 
ags
;

37 
DB
 *
dbp
;

38 
DB_THREAD_INFO
 *

;

39 
hd_check
, 
t
, 
t_t
, 
txn_lol
;

41 
dbp
 = 
NULL
;

42 
txn_lol
 = 0;

44 
	`PANIC_CHECK
(
dbv
);

45 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, "DB_ENV->dbrename");

51 i((
t
 = 
	`__db_fchk
(
dbv
, "DB->me", 
ags
, 
DB_AUTO_COMMIT
)) != 0)

52  (
t
);

54 
	`ENV_ENTER
(
dbv
, 

);

57 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

58 i(
hd_check
 && (
t
 = 
	`__v_p_r
(
dbv
, 1)) != 0) {

59 
hd_check
 = 0;

60 
r
;

67 i(
	`IS_ENV_AUTO_COMMIT
(
dbv
, 
txn
, 
ags
)) {

68 i((
t
 = 
	`__db_txn_auto_
(
dbv
, &
txn
)) != 0)

69 
r
;

70 
txn_lol
 = 1;

72 i(
txn
 !
NULL
 && !
	`TXN_ON
(
dbv
) &&

73 (!
	`CDB_LOCKING
(
dbv
|| !
	`F_ISSET
(
txn
, 
TXN_CDSGROUP
))) {

74 
t
 = 
	`__db_n_txn_v
(
dbv
);

75 
r
;

78 
	`LF_CLR
(
DB_AUTO_COMMIT
);

80 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

81 
r
;

83 
t
 = 
	`__db_me_t
(
dbp
, 
txn
, 
me
, 
subdb
, 
wme
);

85 i(
txn_lol
) {

91 
	`LOCK_INIT
(
dbp
->
hd_lock
);

92 
dbp
->
lock
 = 
NULL
;

93 } i(
txn
 !
NULL
) {

101 
dbp
->
lock
 = 
NULL
;

104 
r
: i(
txn_lol
 && (
t_t
 =

105 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 0, 
t
)) != 0 &&et == 0)

106 
t
 = 
t_t
;

117 i(
txn_lol
 || 
txn
 =
NULL
) {

118 i(
dbp
 !
NULL
 &&

119 (
t_t
 = 
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
)!0 && 
t
 == 0)

120 
t
 = 
t_t
;

122 i(
dbp
 !
NULL
 && (
t_t
 =

123 
	`__txn_oevt
(
dbv
, 
txn
, 
dbp
)!0 && 
t
 == 0)

124 
t
 = 
t_t
;

127 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

128 
t
 = 
t_t
;

130 
	`ENV_LEAVE
(
dbv
, 

);

131  (
t
);

132 
	}
}

142 
	$__db_me_
(
dbp
, 
me
, 
subdb
, 
wme
, 
ags
)

143 
DB
 *
dbp
;

144 cڡ *
me
, *
subdb
, *
wme
;

145 
u_t32_t
 
ags
;

147 
DB_ENV
 *
dbv
;

148 
DB_THREAD_INFO
 *

;

149 
hd_check
, 
t
, 
t_t
;

151 
dbv
 = 
dbp
->dbenv;

152 
hd_check
 = 0;

154 
	`PANIC_CHECK
(
dbv
);

166 i(
	`F_ISSET
(
dbp
, 
DB_AM_OPEN_CALLED
))

167  (
	`__db_mi_ݒ
(
dbv
, "DB->rename", 1));

170 i((
t
 = 
	`__db_fchk
(
dbv
, "DB->me", 
ags
, 0)) != 0)

171  (
t
);

174 i((
t
 = 
	`__db_check_txn
(
dbp
, 
NULL
, 
DB_LOCK_INVALIDID
, 0)) != 0)

175  (
t
);

177 
	`ENV_ENTER
(
dbv
, 

);

179 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

180 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 1, 0)) != 0) {

181 
hd_check
 = 0;

182 
r
;

186 
t
 = 
	`__db_me
(
dbp
, 
NULL
, 
me
, 
subdb
, 
wme
);

188 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

189 
t
 = 
t_t
;

190 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

191  (
t
);

192 
	}
}

202 
	$__db_me
(
dbp
, 
txn
, 
me
, 
subdb
, 
wme
)

203 
DB
 *
dbp
;

204 
DB_TXN
 *
txn
;

205 cڡ *
me
, *
subdb
, *
wme
;

207 
t
, 
t_t
;

209 
t
 = 
	`__db_me_t
(
dbp
, 
txn
, 
me
, 
subdb
, 
wme
);

211 i(
txn
 =
NULL
) {

212 i((
t_t
 = 
	`__db_o
(
dbp
, 
txn
, 
DB_NOSYNC
)!0 && 
t
 == 0)

213 
t
 = 
t_t
;

215 i((
t_t
 =

216 
	`__txn_oevt
(
dbp
->
dbv
, 
txn
, dbp)!0 && 
t
 == 0)

217 
t
 = 
t_t
;

220  (
t
);

221 
	}
}

232 
	$__db_me_t
(
dbp
, 
txn
, 
me
, 
subdb
, 
wme
)

233 
DB
 *
dbp
;

234 
DB_TXN
 *
txn
;

235 cڡ *
me
, *
subdb
, *
wme
;

237 
DB_ENV
 *
dbv
;

238 
t
;

239 *
d
, *
_me
;

241 
dbv
 = 
dbp
->dbenv;

242 
_me
 = 
NULL
;

244 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_PREDESTROY
, 
t
, 
me
);

246 i(
me
 =
NULL
 && 
subdb
 == NULL) {

247 
	`__db_rx
(
dbv
, "Rename onemporary files invalid");

248 
t
 = 
EINVAL
;

249 
r
;

252 i(
me
 =
NULL
)

253 
	`MAKE_INMEM
(
dbp
);

254 i(
subdb
 !
NULL
) {

255 
t
 = 
	`__db_subdb_me
(
dbp
, 
txn
, 
me
, 
subdb
, 
wme
);

256 
r
;

264 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

265 
d
 = (*)
subdb
;

266 
_me
 = (*)
subdb
;

268 i((
t
 = 
	`__db_ame
(
dbv
,

269 
DB_APP_DATA
, 
me
, 0, 
NULL
, &
_me
)) != 0)

270 
r
;

271 
d
 = (*)
me
;

274 i((
t
 = 
	`__f_move_tup
(
dbp
, 
txn
, 
_me
, 0)) != 0)

275 
r
;

277 i(
dbp
->
db_am_me
 !
NULL
 &&

278 (
t
 = 
dbp
->
	`db_am_me
(dbp, 
txn
, 
me
, 
subdb
, 
wme
)) != 0)

279 
r
;

289 i(
	`IS_REAL_TXN
(
txn
)) {

290 i((
t
 = 
	`__f_dummy
(
dbp
, 
txn
, 
d
, 
wme
, 0)) != 0)

291 
r
;

293 i((
t
 = 
	`__f_dbme
(
dbp
, 
d
, 
wme
)) != 0)

294 
r
;

301 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 =
NULL
 ||

302 
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
);

304 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTDESTROY
, 
t
, 
wme
);

306 
DB_TEST_RECOVERY_LABEL


307 
r
: i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
&& 
_me
 !
NULL
)

308 
	`__os_
(
dbv
, 
_me
);

310  (
t
);

311 
	}
}

318 
	$__db_subdb_me
(
dbp
, 
txn
, 
me
, 
subdb
, 
wme
)

319 
DB
 *
dbp
;

320 
DB_TXN
 *
txn
;

321 cڡ *
me
, *
subdb
, *
wme
;

323 
DB
 *
mdbp
;

324 
DB_ENV
 *
dbv
;

325 
PAGE
 *
ma
;

326 
t
, 
t_t
;

328 
mdbp
 = 
NULL
;

329 
ma
 = 
NULL
;

330 
dbv
 = 
dbp
->dbenv;

336 
	`F_SET
(
dbp
, 
DB_AM_SUBDB
);

344 i((
t
 = 
	`__db_ma_ݒ
(
dbp
, 
txn
, 
me
, 0, 0, &
mdbp
)) != 0)

345 
r
;

347 i((
t
 = 
	`__db_ma_upde
(
mdbp
, 
dbp
, 
txn
, 
subdb
, dbp->
ty
,

348 
MU_OPEN
, 
NULL
, 0)) != 0)

349 
r
;

351 i((
t
 = 
	`__memp_fg
(
mdbp
->
mpf
, &
dbp
->
ma_pgno
,

352 
txn
, 0, &
ma
)) != 0)

353 
r
;

354 
	`memy
(
dbp
->
feid
, ((
DBMETA
 *)
ma
)->
uid
, 
DB_FILE_ID_LEN
);

355 i((
t
 = 
	`__f_lock_hd
(
dbv
,

356 
dbp
, 
mdbp
->
lock
, 
DB_LOCK_WRITE
, 
NULL
, 
	`NOWAIT_FLAG
(
txn
))) != 0)

357 
r
;

359 
t
 = 
	`__memp_ut
(
mdbp
->
mpf
, 
ma
, 
dbp
->
iܙy
);

360 
ma
 = 
NULL
;

361 i(
t
 != 0)

362 
r
;

364 i((
t
 = 
	`__db_ma_upde
(
mdbp
, 
dbp
, 
txn
,

365 
subdb
, 
dbp
->
ty
, 
MU_RENAME
, 
wme
, 0)) != 0)

366 
r
;

368 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTDESTROY
, 
t
, 
me
);

370 
DB_TEST_RECOVERY_LABEL


371 
r
:

372 i(
ma
 !
NULL
 && (
t_t
 =

373 
	`__memp_ut
(
mdbp
->
mpf
, 
ma
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

374 
t
 = 
t_t
;

376 i(
txn
 =
NULL
) {

377 i(
mdbp
 !
NULL
 &&

378 (
t_t
 = 
	`__db_o
(
mdbp
, 
txn
, 
DB_NOSYNC
)!0 && 
t
 == 0)

379 
t
 = 
t_t
;

381 i(
mdbp
 !
NULL
 && (
t_t
 =

382 
	`__txn_oevt
(
dbv
, 
txn
, 
mdbp
)!0 && 
t
 == 0)

383 
t
 = 
t_t
;

386  (
t
);

387 
	}
}

	@../db/db_ret.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

23 
	$__db_t
(
dbp
, 
txn
, 
h
, 
dx
, 
dbt
, 
memp
, 
memsize
)

24 
DB
 *
dbp
;

25 
DB_TXN
 *
txn
;

26 
PAGE
 *
h
;

27 
u_t32_t
 
dx
;

28 
DBT
 *
dbt
;

29 **
memp
;

30 
u_t32_t
 *
memsize
;

32 
BKEYDATA
 *
bk
;

33 
HOFFPAGE
 
ho
;

34 
BOVERFLOW
 *
bo
;

35 
u_t32_t
 
n
;

36 
u_t8_t
 *
hk
;

37 *
da
;

39 
	`TYPE
(
h
)) {

40 
P_HASH_UNSORTED
:

41 
P_HASH
:

42 
hk
 = 
	`P_ENTRY
(
dbp
, 
h
, 
dx
);

43 i(
	`HPAGE_PTYPE
(
hk
=
H_OFFPAGE
) {

44 
	`memy
(&
ho
, 
hk
, (
HOFFPAGE
));

45  (
	`__db_goff
(
dbp
, 
txn
, 
dbt
,

46 
ho
.

, ho.
pgno
, 
memp
, 
memsize
));

48 
n
 = 
	`LEN_HKEYDATA
(
dbp
, 
h
, dbp->
pgsize
, 
dx
);

49 
da
 = 
	`HKEYDATA_DATA
(
hk
);

51 
P_LBTREE
:

52 
P_LDUP
:

53 
P_LRECNO
:

54 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
dx
);

55 i(
	`B_TYPE
(
bk
->
ty
=
B_OVERFLOW
) {

56 
bo
 = (
BOVERFLOW
 *)
bk
;

57  (
	`__db_goff
(
dbp
, 
txn
, 
dbt
,

58 
bo
->

, bo->
pgno
, 
memp
, 
memsize
));

60 
n
 = 
bk
->len;

61 
da
 = 
bk
->data;

64  (
	`__db_pgfmt
(
dbp
->
dbv
, 
h
->
pgno
));

67  (
	`__db_tcy
(
dbp
->
dbv
, 
dbt
, 
da
, 
n
, 
memp
, 
memsize
));

68 
	}
}

78 
	$__db_tcy
(
dbv
, 
dbt
, 
da
, 
n
, 
memp
, 
memsize
)

79 
DB_ENV
 *
dbv
;

80 
DBT
 *
dbt
;

81 *
da
;

82 
u_t32_t
 
n
;

83 **
memp
;

84 
u_t32_t
 *
memsize
;

86 
t
;

88 
t
 = 0;

91 i(
	`F_ISSET
(
dbt
, 
DB_DBT_PARTIAL
)) {

92 
da
 = (
u_t8_t
 *)d+ 
dbt
->
doff
;

93 i(
n
 > 
dbt
->
doff
) {

94 
n
 -
dbt
->
doff
;

95 i(
n
 > 
dbt
->
dn
)

96 
n
 = 
dbt
->
dn
;

98 
n
 = 0;

116 i(
	`F_ISSET
(
dbt
, 
DB_DBT_USERCOPY
)) {

117 
dbt
->
size
 = 
n
;

118  (
n
 =0 ? 0 : 
dbv
->
	`dbt_urcy
(
dbt
, 0, 
da
,

119 
n
, 
DB_USERCOPY_SETDATA
));

121 } i(
	`F_ISSET
(
dbt
, 
DB_DBT_MALLOC
))

122 
t
 = 
	`__os_umloc
(
dbv
, 
n
, &
dbt
->
da
);

123 i(
	`F_ISSET
(
dbt
, 
DB_DBT_REALLOC
)) {

124 i(
dbt
->
da
 =
NULL
 || dbt->
size
 =0 || dbt->siz< 
n
)

125 
t
 = 
	`__os_uloc
(
dbv
, 
n
, &
dbt
->
da
);

126 } i(
	`F_ISSET
(
dbt
, 
DB_DBT_USERMEM
)) {

127 i(
n
 !0 && (
dbt
->
da
 =
NULL
 || dbt->
un
 <en))

128 
t
 = 
DB_BUFFER_SMALL
;

129 } i(
memp
 =
NULL
 || 
memsize
 == NULL)

130 
t
 = 
EINVAL
;

132 i(
n
 !0 && (*
memsize
 == 0 || *memsize <en)) {

133 i((
t
 = 
	`__os_loc
(
dbv
, 
n
, 
memp
)) == 0)

134 *
memsize
 = 
n
;

136 *
memsize
 = 0;

138 i(
t
 == 0)

139 
dbt
->
da
 = *
memp
;

142 i(
t
 =0 && 
n
 != 0)

143 
	`memy
(
dbt
->
da
, da, 
n
);

151 
dbt
->
size
 = 
n
;

153  (
t
);

154 
	}
}

	@../db/db_setid.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_sw.h
"

14 
	~"dbc/db_am.h
"

15 
	~"dbc/mp.h
"

17 
__v_feid_t
 
__P
((
DB_ENV
 *, const *, ));

26 
	$__v_feid_t_
(
dbv
, 
me
, 
ags
)

27 
DB_ENV
 *
dbv
;

28 cڡ *
me
;

29 
u_t32_t
 
ags
;

31 
DB_THREAD_INFO
 *

;

32 
hd_check
, 
t
, 
t_t
;

34 
	`PANIC_CHECK
(
dbv
);

35 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, "DB_ENV->fileid_reset");

42 i(
ags
 !0 && fg!
DB_ENCRYPT
)

43  (
	`__db_
(
dbv
, "DB_ENV->fileid_reset", 0));

45 
	`ENV_ENTER
(
dbv
, 

);

48 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

49 i(
hd_check
 && (
t
 = 
	`__v_p_r
(
dbv
, 1)) != 0)

50 
r
;

52 
t
 = 
	`__v_feid_t
(
dbv
, 
me
, 
	`LF_ISSET
(
DB_ENCRYPT
) ? 1 : 0);

54 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

55 
t
 = 
t_t
;

57 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

58  (
t
);

59 
	}
}

66 
	$__v_feid_t
(
dbv
, 
me
, 
yed
)

67 
DB_ENV
 *
dbv
;

68 cڡ *
me
;

69 
yed
;

71 
DB
 *
dbp
;

72 
DBC
 *
db
;

73 
DBT
 
key
, 
da
;

74 
DB_FH
 *
fhp
;

75 
DB_MPOOLFILE
 *
mpf
;

76 
DB_PGINFO
 
cook
;

77 
db_pgno_t
 
pgno
;

78 
t_t
, 
t
;

79 
size_t
 
n
;

80 *
_me
;

81 
u_t8_t
 
feid
[
DB_FILE_ID_LEN
], 
mbuf
[
DBMETASIZE
];

82 *
g
;

84 
dbp
 = 
NULL
;

85 
db
 = 
NULL
;

86 
fhp
 = 
NULL
;

87 
_me
 = 
NULL
;

90 i((
t
 =

91 
	`__db_ame
(
dbv
, 
DB_APP_DATA
, 
me
, 0, 
NULL
, &
_me
)) != 0)

92  (
t
);

95 i((
t
 = 
	`__os_feid
(
dbv
, 
_me
, 1, 
feid
)) != 0)

96 
r
;

104 i((
t
 = 
	`__os_ݒ
(
dbv
, 
_me
, 0, 0, 0, &
fhp
)) != 0) {

105 
	`__db_r
(
dbv
, 
t
, "%s", 
_me
);

106 
r
;

108 i((
t
 = 
	`__os_ad
(
dbv
, 
fhp
, 
mbuf
, (mbuf), &
n
)) != 0)

109 
r
;

111 i(
n
 !(
mbuf
)) {

112 
t
 = 
EINVAL
;

113 
	`__db_rx
(
dbv
,

114 "%s: uxed fty ofm", 
_me
);

115 
r
;

121 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

122 
r
;

125 i(
yed
 && (
t
 = 
	`__db_t_ags
(
dbp
, 
DB_ENCRYPT
)) != 0)

126 
r
;

128 i((
t
 = 
	`__db_ma_tup
(
dbv
,

129 
dbp
, 
_me
, (
DBMETA
 *)
mbuf
, 0, 
DB_CHK_META
)) != 0)

130 
r
;

131 
	`memy
(((
DBMETA
 *)
mbuf
)->
uid
, 
feid
, 
DB_FILE_ID_LEN
);

132 
cook
.
db_gesize
 = (
mbuf
);

133 
cook
.
ags
 = 
dbp
->flags;

134 
cook
.
ty
 = 
dbp
->type;

135 
key
.
da
 = &
cook
;

137 i((
t
 = 
	`__db_pgout
(
dbv
, 0, 
mbuf
, &
key
)) != 0)

138 
r
;

139 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 0)) != 0)

140 
r
;

141 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
mbuf
, (mbuf), &
n
)) != 0)

142 
r
;

143 i((
t
 = 
	`__os_fsync
(
dbv
, 
fhp
)) != 0)

144 
r
;

161 i((
t
 = 
	`__db_ݒ
(
dbp
, 
NULL
,

162 
me
, 
NULL
, 
DB_UNKNOWN
, 
DB_RDWRMASTER
, 0, 
PGNO_BASE_MD
)) != 0)

163 
r
;

171 i(!
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
))

172 
r
;

174 
mpf
 = 
dbp
->mpf;

175 
	`memt
(&
key
, 0, (key));

176 
	`memt
(&
da
, 0, (data));

177 i((
t
 = 
	`__db_curs
(
dbp
, 
NULL
, &
db
, 0)) != 0)

178 
r
;

179 (
t
 = 
	`__dbc_g
(
db
, &
key
, &
da
, 
DB_NEXT
)) == 0) {

186 
	`memy
(&
pgno
, 
da
.da, (
db_pgno_t
));

187 
	`DB_NTOHL
(&
pgno
);

188 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
,

189 
DB_MPOOL_DIRTY
, &
g
)) != 0)

190 
r
;

191 
	`memy
(((
DBMETA
 *)
g
)->
uid
, 
feid
, 
DB_FILE_ID_LEN
);

192 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
db
->
iܙy
)) != 0)

193 
r
;

195 i(
t
 =
DB_NOTFOUND
)

196 
t
 = 0;

198 
r
: i(
db
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(db)!0 && 
t
 == 0)

199 
t
 = 
t_t
;

200 i(
dbp
 !
NULL
 && (
t_t
 = 
	`__db_o
(dbp, NULL, 0)!0 && 
t
 == 0)

201 
t
 = 
t_t
;

202 i(
fhp
 !
NULL
 &&

203 (
t_t
 = 
	`__os_ohd
(
dbv
, 
fhp
)!0 && 
t
 == 0)

204 
t
 = 
t_t
;

205 i(
_me
 !
NULL
)

206 
	`__os_
(
dbv
, 
_me
);

208  (
t
);

209 
	}
}

	@../db/db_setlsn.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/mp.h
"

16 
__v_l_t
 
__P
((
DB_ENV
 *, const *, ));

25 
	$__v_l_t_
(
dbv
, 
me
, 
ags
)

26 
DB_ENV
 *
dbv
;

27 cڡ *
me
;

28 
u_t32_t
 
ags
;

30 
DB_THREAD_INFO
 *

;

31 
hd_check
, 
t
, 
t_t
;

33 
	`PANIC_CHECK
(
dbv
);

34 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, "DB_ENV->lsn_reset");

41 i(
ags
 !0 && fg!
DB_ENCRYPT
)

42  (
	`__db_
(
dbv
, "DB_ENV->lsn_reset", 0));

44 
	`ENV_ENTER
(
dbv
, 

);

47 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

48 i(
hd_check
 && (
t
 = 
	`__v_p_r
(
dbv
, 1)) != 0)

49 
r
;

51 
t
 = 
	`__v_l_t
(
dbv
, 
me
, 
	`LF_ISSET
(
DB_ENCRYPT
) ? 1 : 0);

53 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

54 
t
 = 
t_t
;

56 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

57  (
t
);

58 
	}
}

65 
	$__v_l_t
(
dbv
, 
me
, 
yed
)

66 
DB_ENV
 *
dbv
;

67 cڡ *
me
;

68 
yed
;

70 
DB
 *
dbp
;

71 
DB_MPOOLFILE
 *
mpf
;

72 
PAGE
 *
g
;

73 
db_pgno_t
 
pgno
;

74 
t_t
, 
t
;

77 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

78  (
t
);

81 i(
yed
 && (
t
 = 
	`__db_t_ags
(
dbp
, 
DB_ENCRYPT
)) != 0)

82 
r
;

91 i((
t
 = 
	`__db_ݒ
(
dbp
, 
NULL
,

92 
me
, 
NULL
, 
DB_UNKNOWN
, 
DB_RDWRMASTER
, 0, 
PGNO_BASE_MD
)) != 0) {

93 
	`__db_r
(
dbv
, 
t
, "%s", 
me
);

94 
r
;

98 
mpf
 = 
dbp
->mpf;

99 
pgno
 = 0;

100 (
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 
DB_MPOOL_DIRTY
, &
g
)) == 0;

101 ++
pgno
) {

102 
	`LSN_NOT_LOGGED
(
g
->
l
);

103 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
DB_PRIORITY_UNCHANGED
)) != 0)

104 
r
;

107 i(
t
 =
DB_PAGE_NOTFOUND
)

108 
t
 = 0;

110 
r
: i((
t_t
 = 
	`__db_o
(
dbp
, 
NULL
, 0)!0 && 
t
 == 0)

111 
t
 = 
t_t
;

112  (
t
);

113 
	}
}

	@../db/db_stati.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/hash.h
"

15 
	~"dbc/qam.h
"

16 
	~"dbc/lock.h
"

17 
	~"dbc/log.h
"

18 
	~"dbc/mp.h
"

20 #ifde
HAVE_STATISTICS


21 
__db_t_l
 
__P
((
DB
 *, 
u_t32_t
));

22 
__db_t_cem
 
__P
((
DBC
 *));

23 
__db_t_curs
 
__P
((
DB
 *));

24 
__db_t_s
 
__P
((
DB
 *, 
u_t32_t
));

25 
__db__g
 
__P
((
DB
 *, 
u_t32_t
));

34 
	$__db__
(
dbp
, 
txn
, 
p
, 
ags
)

35 
DB
 *
dbp
;

36 
DB_TXN
 *
txn
;

37 *
p
;

38 
u_t32_t
 
ags
;

40 
DB_ENV
 *
dbv
;

41 
DB_THREAD_INFO
 *

;

42 
hd_check
, 
t
, 
t_t
;

44 
dbv
 = 
dbp
->dbenv;

46 
	`PANIC_CHECK
(
dbp
->
dbv
);

47 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->stat");

49 i((
t
 = 
	`__db__g
(
dbp
, 
ags
)) != 0)

50  (
t
);

52 
	`ENV_ENTER
(
dbv
, 

);

55 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

56 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 0)) != 0) {

57 
hd_check
 = 0;

58 
r
;

61 
t
 = 
	`__db_
(
dbp
, 
txn
, 
p
, 
ags
);

64 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

65 
t
 = 
t_t
;

67 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

68  (
t
);

69 
	}
}

78 
	$__db_
(
dbp
, 
txn
, 
p
, 
ags
)

79 
DB
 *
dbp
;

80 
DB_TXN
 *
txn
;

81 *
p
;

82 
u_t32_t
 
ags
;

84 
DB_ENV
 *
dbv
;

85 
DBC
 *
dbc
;

86 
t
, 
t_t
;

88 
dbv
 = 
dbp
->dbenv;

91 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
,

92 &
dbc
, 
	`LF_ISSET
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
))) != 0)

93  (
t
);

95 
	`DEBUG_LWRITE
(
dbc
, 
NULL
, "DB->", NULL, NULL, 
ags
);

96 
	`LF_CLR
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
);

98 
dbp
->
ty
) {

99 
DB_BTREE
:

100 
DB_RECNO
:

101 
t
 = 
	`__bam_
(
dbc
, 
p
, 
ags
);

103 
DB_HASH
:

104 
t
 = 
	`__ham_
(
dbc
, 
p
, 
ags
);

106 
DB_QUEUE
:

107 
t
 = 
	`__qam_
(
dbc
, 
p
, 
ags
);

109 
DB_UNKNOWN
:

111 
t
 = (
	`__db_unknown_ty
(
dbv
, "DB->", 
dbp
->
ty
));

115 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

116 
t
 = 
t_t
;

118  (
t
);

119 
	}
}

126 
	$__db__g
(
dbp
, 
ags
)

127 
DB
 *
dbp
;

128 
u_t32_t
 
ags
;

130 
DB_ENV
 *
dbv
;

132 
dbv
 = 
dbp
->dbenv;

135 
	`LF_CLR
(
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
);

136 
ags
) {

138 
DB_FAST_STAT
:

141  (
	`__db_
(
dbv
, "DB->stat", 0));

145 
	}
}

154 
	$__db__t_
(
dbp
, 
ags
)

155 
DB
 *
dbp
;

156 
u_t32_t
 
ags
;

158 
DB_ENV
 *
dbv
;

159 
DB_THREAD_INFO
 *

;

160 
hd_check
, 
t
, 
t_t
;

162 
dbv
 = 
dbp
->dbenv;

164 
	`PANIC_CHECK
(
dbv
);

165 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "DB->stat_print");

171 i((
t
 = 
	`__db_fchk
(
dbv
,

172 "DB->_t", 
ags
, 
DB_FAST_STAT
 | 
DB_STAT_ALL
)) != 0)

173  (
t
);

175 
	`ENV_ENTER
(
dbv
, 

);

178 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

179 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 0)) != 0) {

180 
hd_check
 = 0;

181 
r
;

184 
t
 = 
	`__db__t
(
dbp
, 
ags
);

187 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

188 
t
 = 
t_t
;

190 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

191  (
t
);

192 
	}
}

201 
	$__db__t
(
dbp
, 
ags
)

202 
DB
 *
dbp
;

203 
u_t32_t
 
ags
;

205 
time_t
 
now
;

206 
t
;

207 
time_buf
[
CTIME_BUFLEN
];

209 ()
	`time
(&
now
);

210 
	`__db_msg
(
dbp
->
dbv
, "%.24s\tLotime", 
	`__db_ime
(&
now
, 
time_buf
));

212 i(
	`LF_ISSET
(
DB_STAT_ALL
&& (
t
 = 
	`__db_t_l
(
dbp
, 
ags
)) != 0)

213  (
t
);

215 i((
t
 = 
	`__db_t_s
(
dbp
, 
ags
)) != 0)

216  (
t
);

219 
	}
}

226 
	$__db_t_s
(
dbp
, 
ags
)

227 
DB
 *
dbp
;

228 
u_t32_t
 
ags
;

230 
DBC
 *
dbc
;

231 
DB_ENV
 *
dbv
;

232 
t
, 
t_t
;

234 
dbv
 = 
dbp
->dbenv;

237 i((
t
 = 
	`__db_curs
(
dbp
, 
NULL
, &
dbc
, 0)) != 0)

238  (
t
);

240 
	`DEBUG_LWRITE
(
dbc
, 
NULL
, "DB->stat_print", NULL, NULL, 0);

242 
dbp
->
ty
) {

243 
DB_BTREE
:

244 
DB_RECNO
:

245 
t
 = 
	`__bam__t
(
dbc
, 
ags
);

247 
DB_HASH
:

248 
t
 = 
	`__ham__t
(
dbc
, 
ags
);

250 
DB_QUEUE
:

251 
t
 = 
	`__qam__t
(
dbc
, 
ags
);

253 
DB_UNKNOWN
:

255 
t
 = (
	`__db_unknown_ty
(
dbv
, "DB->_t", 
dbp
->
ty
));

259 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

260 
t
 = 
t_t
;

262  (
t
);

263 
	}
}

270 
	$__db_t_l
(
dbp
, 
ags
)

271 
DB
 *
dbp
;

272 
u_t32_t
 
ags
;

274 cڡ 
FN
 

[] = {

275 { 
DB_AM_CHKSUM
, "DB_AM_CHKSUM" },

276 { 
DB_AM_COMPENSATE
, "DB_AM_COMPENSATE" },

277 { 
DB_AM_CREATED
, "DB_AM_CREATED" },

278 { 
DB_AM_CREATED_MSTR
, "DB_AM_CREATED_MSTR" },

279 { 
DB_AM_DBM_ERROR
, "DB_AM_DBM_ERROR" },

280 { 
DB_AM_DELIMITER
, "DB_AM_DELIMITER" },

281 { 
DB_AM_DISCARD
, "DB_AM_DISCARD" },

282 { 
DB_AM_DUP
, "DB_AM_DUP" },

283 { 
DB_AM_DUPSORT
, "DB_AM_DUPSORT" },

284 { 
DB_AM_ENCRYPT
, "DB_AM_ENCRYPT" },

285 { 
DB_AM_FIXEDLEN
, "DB_AM_FIXEDLEN" },

286 { 
DB_AM_INMEM
, "DB_AM_INMEM" },

287 { 
DB_AM_IN_RENAME
, "DB_AM_IN_RENAME" },

288 { 
DB_AM_NOT_DURABLE
, "DB_AM_NOT_DURABLE" },

289 { 
DB_AM_OPEN_CALLED
, "DB_AM_OPEN_CALLED" },

290 { 
DB_AM_PAD
, "DB_AM_PAD" },

291 { 
DB_AM_PGDEF
, "DB_AM_PGDEF" },

292 { 
DB_AM_RDONLY
, "DB_AM_RDONLY" },

293 { 
DB_AM_READ_UNCOMMITTED
, "DB_AM_READ_UNCOMMITTED" },

294 { 
DB_AM_RECNUM
, "DB_AM_RECNUM" },

295 { 
DB_AM_RECOVER
, "DB_AM_RECOVER" },

296 { 
DB_AM_RENUMBER
, "DB_AM_RENUMBER" },

297 { 
DB_AM_REVSPLITOFF
, "DB_AM_REVSPLITOFF" },

298 { 
DB_AM_SECONDARY
, "DB_AM_SECONDARY" },

299 { 
DB_AM_SNAPSHOT
, "DB_AM_SNAPSHOT" },

300 { 
DB_AM_SUBDB
, "DB_AM_SUBDB" },

301 { 
DB_AM_SWAP
, "DB_AM_SWAP" },

302 { 
DB_AM_TXN
, "DB_AM_TXN" },

303 { 
DB_AM_VERIFYING
, "DB_AM_VERIFYING" },

304 { 0, 
NULL
 }

306 
DB_ENV
 *
dbv
;

307 
time_buf
[
CTIME_BUFLEN
];

309 
dbv
 = 
dbp
->dbenv;

311 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

312 
	`__db_msg
(
dbv
, "DB handle information:");

313 
	`STAT_ULONG
("Pagsize", 
dbp
->
pgsize
);

314 
	`STAT_ISSET
("Adeo", 
dbp
->
db_nd_o
);

315 
	`STAT_ISSET
("Fdback", 
dbp
->
db_edback
);

316 
	`STAT_ISSET
("Ducom", 
dbp
->
dup_com
);

317 
	`STAT_ISSET
("Arive", 
dbp
->
p_ive
);

318 
	`STAT_ISSET
("DbEnv", 
dbp
->
dbv
);

319 
	`STAT_STRING
("Ty", 
	`__db_dbty_to_rg
(
dbp
->
ty
));

321 
	`__mux_t_debug_sg
(
dbv
, "Thad mux", 
dbp
->
mux
, 
ags
);

323 
	`STAT_STRING
("Fe", 
dbp
->
ame
);

324 
	`STAT_STRING
("Daba", 
dbp
->
dme
);

325 
	`STAT_HEX
("Oags", 
dbp
->
ݒ_ags
);

327 
	`__db_t_feid
(
dbv
, 
dbp
->
feid
, "\tFile ID");

329 
	`STAT_ULONG
("Curs܇dju ID", 
dbp
->
adj_feid
);

330 
	`STAT_ULONG
("Mpgno", 
dbp
->
ma_pgno
);

331 i(
dbp
->
lock
 !
NULL
)

332 
	`STAT_ULONG
("Lock ID", 
dbp
->
lock
->
id
);

333 i(
dbp
->
cur_lock
 !
NULL
)

334 
	`STAT_ULONG
("Hdˆock", 
dbp
->
cur_lock
->
id
);

335 i(
dbp
->
assoc_lock
 !
NULL
)

336 
	`STAT_ULONG
("Assocock", 
dbp
->
assoc_lock
->
id
);

337 
	`STAT_ULONG
("RPCemِID", 
dbp
->
_id
);

339 
	`__db_msg
(
dbv
,

341 
dbp
->
timeamp
 =0 ? "0" : 
	`__db_ime
(&dbp->timeamp, 
time_buf
));

343 
	`STAT_ISSET
("Secdy clback", 
dbp
->
s_back
);

344 
	`STAT_ISSET
("Primy hd", 
dbp
->
s_imy
);

346 
	`STAT_ISSET
("", 
dbp
->
i_
);

347 
	`STAT_ISSET
("B/Reؚ", 
dbp
->
bt_
);

348 
	`STAT_ISSET
("Hash il", 
dbp
->
h_
);

349 
	`STAT_ISSET
("Queu", 
dbp
->
q_
);

350 
	`STAT_ISSET
("XA il", 
dbp
->
xa_
);

352 
	`__db_ags
(
dbv
, 
NULL
, 
dbp
->
ags
, 

, NULL, "\tFlags");

354 i(
dbp
->
log_fame
 =
NULL
)

355 
	`STAT_ISSET
("Fmg infmi", 
dbp
->
log_fame
);

357 
	`__dbg_t_ame
(
dbv
, 
dbp
->
log_fame
);

359 ()
	`__db_t_curs
(
dbp
);

362 
	}
}

369 
	$__db_t_curs
(
dbp
)

370 
DB
 *
dbp
;

372 
DB_ENV
 *
dbv
;

373 
DBC
 *
dbc
;

374 
t
, 
t_t
;

376 
dbv
 = 
dbp
->dbenv;

378 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

379 
	`__db_msg
(
dbv
, "DB handle cursors:");

381 
t
 = 0;

382 
	`MUTEX_LOCK
(
dbp
->
dbv
, dbp->
mux
);

383 
	`__db_msg
(
dbv
, "Active queue:");

384 
	`TAILQ_FOREACH
(
dbc
, &
dbp
->
aive_queue
, 
lks
)

385 i((
t_t
 = 
	`__db_t_cem
(
dbc
)!0 && 
t
 == 0)

386 
t
 = 
t_t
;

387 
	`__db_msg
(
dbv
, "Join queue:");

388 
	`TAILQ_FOREACH
(
dbc
, &
dbp
->
jo_queue
, 
lks
)

389 i((
t_t
 = 
	`__db_t_cem
(
dbc
)!0 && 
t
 == 0)

390 
t
 = 
t_t
;

391 
	`__db_msg
(
dbv
, "Free queue:");

392 
	`TAILQ_FOREACH
(
dbc
, &
dbp
->
_queue
, 
lks
)

393 i((
t_t
 = 
	`__db_t_cem
(
dbc
)!0 && 
t
 == 0)

394 
t
 = 
t_t
;

395 
	`MUTEX_UNLOCK
(
dbp
->
dbv
, dbp->
mux
);

397  (
t
);

398 
	}
}

401 
	$__db_t_cem
(
dbc
)

402 
DBC
 *
dbc
;

404 cڡ 
FN
 

[] = {

405 { 
DBC_ACTIVE
, "DBC_ACTIVE" },

406 { 
DBC_DONTLOCK
, "DBC_DONTLOCK" },

407 { 
DBC_MULTIPLE
, "DBC_MULTIPLE" },

408 { 
DBC_MULTIPLE_KEY
, "DBC_MULTIPLE_KEY" },

409 { 
DBC_OPD
, "DBC_OPD" },

410 { 
DBC_OWN_LID
, "DBC_OWN_LID" },

411 { 
DBC_READ_COMMITTED
, "DBC_READ_COMMITTED" },

412 { 
DBC_READ_UNCOMMITTED
, "DBC_READ_UNCOMMITTED" },

413 { 
DBC_RECOVER
, "DBC_RECOVER" },

414 { 
DBC_RMW
, "DBC_RMW" },

415 { 
DBC_TRANSIENT
, "DBC_TRANSIENT" },

416 { 
DBC_WRITECURSOR
, "DBC_WRITECURSOR" },

417 { 
DBC_WRITER
, "DBC_WRITER" },

418 { 0, 
NULL
 }

420 
DB
 *
dbp
;

421 
DBC_INTERNAL
 *

;

422 
DB_ENV
 *
dbv
;

424 
dbp
 = 
dbc
->dbp;

425 
dbv
 = 
dbp
->dbenv;

426 

 = 
dbc
->

;

428 
	`STAT_POINTER
("DBC", 
dbc
);

429 
	`STAT_POINTER
("Assocd dbp", 
dbc
->
dbp
);

430 
	`STAT_POINTER
("Assocdxn", 
dbc
->
txn
);

431 
	`STAT_POINTER
("Il", 

);

432 
	`STAT_HEX
("Defaultocker ID",

433 
dbc
->
ef
 =
NULL
 ? 0 : ((
DB_LOCKER
 *)dbc->ef)->
id
);

434 
	`STAT_HEX
("Lock", 
	`P_TO_ULONG
(
dbc
->
lock
));

435 
	`STAT_STRING
("Ty", 
	`__db_dbty_to_rg
(
dbc
->
dbty
));

437 
	`STAT_POINTER
("Off-gdui curs", 

->
d
);

438 
	`STAT_POINTER
("Rendage", 

->
ge
);

439 
	`STAT_ULONG
("Ro", 

->
ro
);

440 
	`STAT_ULONG
("Pagnumb", 

->
pgno
);

441 
	`STAT_ULONG
("Pagdex", 

->
dx
);

442 
	`STAT_STRING
("Lock mode", 
	`__db_lockmode_to_rg
(

->
lock_mode
));

443 
	`__db_ags
(
dbv
, 
NULL
, 
dbc
->
ags
, 

, NULL, "\tFlags");

445 
dbc
->
dbty
) {

446 
DB_BTREE
:

447 
DB_RECNO
:

448 
	`__bam_t_curs
(
dbc
);

450 
DB_HASH
:

451 
	`__ham_t_curs
(
dbc
);

453 
DB_UNKNOWN
:

454 
	`DB_ASSERT
(
dbv
, 
dbp
->
ty
 !
DB_UNKNOWN
);

456 
DB_QUEUE
:

461 
	}
}

466 
	$__db__
(
dbp
, 
txn
, 
p
, 
ags
)

467 
DB
 *
dbp
;

468 
DB_TXN
 *
txn
;

469 *
p
;

470 
u_t32_t
 
ags
;

472 
	`COMPQUIET
(
p
, 
NULL
);

473 
	`COMPQUIET
(
txn
, 
NULL
);

474 
	`COMPQUIET
(
ags
, 0);

476  (
	`__db__n_but
(
dbp
->
dbv
));

477 
	}
}

480 
	$__db__t_
(
dbp
, 
ags
)

481 
DB
 *
dbp
;

482 
u_t32_t
 
ags
;

484 
	`COMPQUIET
(
ags
, 0);

486  (
	`__db__n_but
(
dbp
->
dbv
));

487 
	}
}

	@../db/db_truncate.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/hash.h
"

15 
	~"dbc/qam.h
"

16 
	~"dbc/lock.h
"

17 
	~"dbc/log.h
"

18 
	~"dbc/txn.h
"

20 
__db_curs_check
 
__P
((
DB
 *));

29 
	$__db_un_
(
dbp
, 
txn
, 
coup
, 
ags
)

30 
DB
 *
dbp
;

31 
DB_TXN
 *
txn
;

32 
u_t32_t
 *
coup
, 
ags
;

34 
DB_ENV
 *
dbv
;

35 
DB_THREAD_INFO
 *

;

36 
hd_check
, 
t
, 
t_t
, 
txn_lol
;

38 
dbv
 = 
dbp
->dbenv;

39 
txn_lol
 = 0;

40 
hd_check
 = 0;

42 
	`PANIC_CHECK
(
dbv
);

43 
	`STRIP_AUTO_COMMIT
(
ags
);

46 i(
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
)) {

47 
	`__db_rx
(
dbv
,

49  (
EINVAL
);

51 i((
t
 = 
	`__db_fchk
(
dbv
, "DB->un", 
ags
, 0)) != 0)

52  (
t
);

54 
	`ENV_ENTER
(
dbv
, 

);

60 i(
	`__db_curs_check
(
dbp
) != 0) {

61 
	`__db_rx
(
dbv
,

63 
r
;

66 #ifde
CONFIG_TEST


67 i(
	`IS_REP_MASTER
(
dbv
))

68 
	`DB_TEST_WAIT
(
dbv
, dbv->
_check
);

71 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

72 i(
hd_check
 &&

73 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

74 
hd_check
 = 0;

75 
r
;

83 i(
	`DB_IS_READONLY
(
dbp
)) {

84 
t
 = 
	`__db_rdly
(
dbv
, "DB->truncate");

85 
r
;

92 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

93 i((
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

94 
r
;

95 
txn_lol
 = 1;

99 i((
t
 = 
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
, 0)) != 0)

100 
r
;

102 
t
 = 
	`__db_un
(
dbp
, 
txn
, 
coup
);

104 
r
: i(
txn_lol
 &&

105 (
t_t
 = 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 0, 
t
)) &&et == 0)

106 
t
 = 
t_t
;

109 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

110 
t
 = 
t_t
;

112 
	`ENV_LEAVE
(
dbv
, 

);

113  (
t
);

114 
	}
}

123 
	$__db_un
(
dbp
, 
txn
, 
coup
)

124 
DB
 *
dbp
;

125 
DB_TXN
 *
txn
;

126 
u_t32_t
 *
coup
;

128 
DB
 *
sdbp
;

129 
DBC
 *
dbc
;

130 
DB_ENV
 *
dbv
;

131 
u_t32_t
 
scou
;

132 
t
, 
t_t
;

134 
dbv
 = 
dbp
->dbenv;

135 
dbc
 = 
NULL
;

136 
t
 = 0;

143 i(
dbp
->
ty
 !
DB_QUEUE
 && 
	`LIST_FIRST
(&dbp->
s_cds
!
NULL
) {

144 i((
t
 = 
	`__db_s_f
(
dbp
, &
sdbp
)) != 0)

145  (
t
);

146 ; 
sdbp
 !
NULL
 && 
t
 =0; = 
	`__db_s_xt
(&sdbp, 
txn
))

147 i((
t
 = 
	`__db_un
(
sdbp
, 
txn
, &
scou
)) != 0)

149 i(
sdbp
 !
NULL
)

150 ()
	`__db_s_de
(
sdbp
, 
txn
);

151 i(
t
 != 0)

152  (
t
);

155 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_PREDESTROY
, 
t
, 
NULL
);

158 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 0)) != 0)

159  (
t
);

161 
	`DEBUG_LWRITE
(
dbc
, 
txn
, "DB->un", 
NULL
, NULL, 0);

163 
dbp
->
ty
) {

164 
DB_BTREE
:

165 
DB_RECNO
:

166 
t
 = 
	`__bam_un
(
dbc
, 
coup
);

168 
DB_HASH
:

169 
t
 = 
	`__ham_un
(
dbc
, 
coup
);

171 
DB_QUEUE
:

172 
t
 = 
	`__qam_un
(
dbc
, 
coup
);

174 
DB_UNKNOWN
:

176 
t
 = 
	`__db_unknown_ty
(
dbv
, "DB->un", 
dbp
->
ty
);

181 i(
dbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc)!0 && 
t
 == 0)

182 
t
 = 
t_t
;

184 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTDESTROY
, 
t
, 
NULL
);

186 
DB_TEST_RECOVERY_LABEL


188  (
t
);

189 
	}
}

196 
	$__db_curs_check
(
dbp
)

197 
DB
 *
dbp
;

199 
DB
 *
ldbp
;

200 
DBC
 *
dbc
;

201 
DB_ENV
 *
dbv
;

202 
found
;

204 
dbv
 = 
dbp
->dbenv;

206 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

207 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

208 
found
 = 0;

209 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

210 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

211 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

212 
	`TAILQ_FOREACH
(
dbc
, &
ldbp
->
aive_queue
, 
lks
)

213 i(
	`IS_INITIALIZED
(
dbc
)) {

214 
found
 = 1;

217 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

218 i(
found
 == 1)

221 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

223  (
found
);

224 
	}
}

	@../db/db_upg.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_sw.h
"

14 
	~"dbc/b.h
"

15 
	~"dbc/hash.h
"

16 
	~"dbc/qam.h
"

25 
	$__db_upgde_
(
dbp
, 
ame
, 
ags
)

26 
DB
 *
dbp
;

27 cڡ *
ame
;

28 
u_t32_t
 
ags
;

30 
DB_ENV
 *
dbv
;

31 
t
;

33 
dbv
 = 
dbp
->dbenv;

35 
	`PANIC_CHECK
(
dbp
->
dbv
);

41 i((
t
 = 
	`__db_fchk
(
dbv
, "DB->upgde", 
ags
, 
DB_DUPSORT
)) != 0)

42  (
t
);

44 #ifde
HAVE_UPGRADE_SUPPORT


45  (
	`__db_upgde
(
dbp
, 
ame
, 
ags
));

47 
	`COMPQUIET
(
ame
, 
NULL
);

48 
	`__db_rx
(
dbv
, "upgradeot supported");

49  (
EINVAL
);

51 
	}
}

53 #ifde
HAVE_UPGRADE_SUPPORT


54 (* cڡ 
func_31_li
[
P_PAGETYPE_MAX
])

55 
	`__P
((
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *)) = {

56 
NULL
,

57 
NULL
,

58 
__ham_31_hash
,

59 
NULL
,

60 
NULL
,

61 
__bam_31_lb
,

62 
NULL
,

63 
NULL
,

64 
__ham_31_hashma
,

65 
__bam_31_bma
,

66 
NULL
,

67 
NULL
,

68 
NULL
,

69 
NULL
,

70 
	}
};

72 (* cڡ 
func_46_li
[
P_PAGETYPE_MAX
])

73 
	`__P
((
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *)) = {

74 
NULL
,

75 
NULL
,

76 
__ham_46_hash
,

77 
NULL
,

78 
NULL
,

79 
NULL
,

80 
NULL
,

81 
NULL
,

82 
__ham_46_hashma
,

83 
NULL
,

84 
NULL
,

85 
NULL
,

86 
NULL
,

87 
NULL
,

88 
	}
};

90 
__db_ge_ss
 
__P
((
DB
 *, *, 
u_t32_t
, (* const [])

91 (
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *), DB_FH *));

92 
__db_t_ϡpgno
 
	`__P
((
DB
 *, *, 
DB_FH
 *));

101 
	$__db_upgde
(
dbp
, 
ame
, 
ags
)

102 
DB
 *
dbp
;

103 cڡ *
ame
;

104 
u_t32_t
 
ags
;

106 
DB_ENV
 *
dbv
;

107 
DB_FH
 *
fhp
;

108 
DBMETA
 *
ma
;

109 
size_t
 
n
;

110 
t
, 
t_t
, 
u_mp_ݒ
;

111 
u_t8_t
 
mbuf
[256], 
tmpags
;

112 *
_me
;

114 
u_mp_ݒ
 = 0;

115 
dbv
 = 
dbp
->dbenv;

116 
fhp
 = 
NULL
;

119 i((
t
 = 
	`__db_ame
(
dbv
,

120 
DB_APP_DATA
, 
ame
, 0, 
NULL
, &
_me
)) != 0)

121  (
t
);

124 i((
t
 = 
	`__os_ݒ
(
dbv
, 
_me
, 0, 0, 0, &
fhp
)) != 0) {

125 
	`__db_r
(
dbv
, 
t
, "%s", 
_me
);

126  (
t
);

130 i(
dbp
->
db_edback
 !
NULL
)

131 
dbp
->
	`db_edback
(dbp, 
DB_UPGRADE
, 0);

137 i((
t
 = 
	`__os_ad
(
dbv
, 
fhp
, 
mbuf
, (mbuf), &
n
)) != 0)

138 
r
;

140 ((
DBMETA
 *)
mbuf
)->
magic
) {

141 
DB_BTREEMAGIC
:

142 ((
DBMETA
 *)
mbuf
)->
vsi
) {

148 i((
t
 =

149 
	`__bam_30_bma
(
dbp
, 
_me
, 
mbuf
)) != 0)

150 
r
;

151 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 0)) != 0)

152 
r
;

153 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
mbuf
, 256, &
n
)) != 0)

154 
r
;

161 
	`memy
(&
dbp
->
pgsize
, 
mbuf
 + 20, (
u_t32_t
));

163 i((
t
 = 
	`__db_ge_ss
(

164 
dbp
, 
_me
, 
ags
, 
func_31_li
, 
fhp
)) != 0)

165 
r
;

168 i((
t
 =

169 
	`__db_t_ϡpgno
(
dbp
, 
_me
, 
fhp
)) != 0)

170 
r
;

175 
	`__db_rx
(
dbv
, "%s: unsupported btree version: %lu",

176 
_me
, (
u_lg
)((
DBMETA
 *)
mbuf
)->
vsi
);

177 
t
 = 
DB_OLD_VERSION
;

178 
r
;

181 
DB_HASHMAGIC
:

182 ((
DBMETA
 *)
mbuf
)->
vsi
) {

189 i((
t
 =

190 
	`__ham_30_hashma
(
dbp
, 
_me
, 
mbuf
)) != 0)

191 
r
;

192 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 0)) != 0)

193 
r
;

194 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
mbuf
, 256, &
n
)) != 0)

195 
r
;

212 i((
t
 =

213 
	`__ham_30_sizefix
(
dbp
, 
fhp
, 
_me
, 
mbuf
)) != 0)

214 
r
;

221 
	`memy
(&
dbp
->
pgsize
, 
mbuf
 + 20, (
u_t32_t
));

223 i((
t
 = 
	`__db_ge_ss
(

224 
dbp
, 
_me
, 
ags
, 
func_31_li
, 
fhp
)) != 0)

225 
r
;

228 i((
t
 =

229 
	`__db_t_ϡpgno
(
dbp
, 
_me
, 
fhp
)) != 0)

230 
r
;

242 
ma
 = (
DBMETA
*)
mbuf
;

247 
	`memy
(&
dbp
->
pgsize
, &
ma
->
gesize
,

248 (
u_t32_t
));

257 
	`memy
(&
tmpags
, &
ma
->
maags
, (
u_t8_t
));

258 i(
	`FLD_ISSET
(
tmpags
, 
DBMETA_CHKSUM
))

259 
	`F_SET
(
dbp
, 
DB_AM_CHKSUM
);

260 
	`memy
(&
tmpags
, &
ma
->
y_g
, (
u_t8_t
));

261 i(
tmpags
 != 0) {

262 i(!
	`CRYPTO_ON
(
dbp
->
dbv
)) {

263 
	`__db_rx
(
dbv
,

265 
t
 = 
EINVAL
;

266 
r
;

268 
	`F_SET
(
dbp
, 
DB_AM_ENCRYPT
);

282 
u_mp_ݒ
 = 1;

283 i((
t
 = 
	`__os_ohd
(
dbv
, 
fhp
)) != 0)

284  (
t
);

285 
dbp
->
ty
 = 
DB_HASH
;

286 i((
t
 = 
	`__db_v_mpo
(
dbp
, 
ame
,

287 
DB_AM_NOT_DURABLE
 | 
DB_AM_VERIFYING
)) != 0)

288  (
t
);

289 
fhp
 = 
dbp
->
mpf
->fhp;

292 i((
t
 = 
	`__db_ge_ss
(

293 
dbp
, 
_me
, 
ags
, 
func_46_li
, 
fhp
)) != 0)

294 
r
;

300 
	`__db_rx
(
dbv
, "%s: unsupported hash version: %lu",

301 
_me
, (
u_lg
)((
DBMETA
 *)
mbuf
)->
vsi
);

302 
t
 = 
DB_OLD_VERSION
;

303 
r
;

306 
DB_QAMMAGIC
:

307 ((
DBMETA
 *)
mbuf
)->
vsi
) {

314 i((
t
 = 
	`__qam_31_qamma
(
dbp
, 
_me
, 
mbuf
)) != 0)

315  (
t
);

318 i((
t
 = 
	`__qam_32_qamma
(
dbp
, 
_me
, 
mbuf
)) != 0)

319  (
t
);

320 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 0)) != 0)

321 
r
;

322 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
mbuf
, 256, &
n
)) != 0)

323 
r
;

329 
	`__db_rx
(
dbv
, "%s: unsupported queue version: %lu",

330 
_me
, (
u_lg
)((
DBMETA
 *)
mbuf
)->
vsi
);

331 
t
 = 
DB_OLD_VERSION
;

332 
r
;

336 
	`M_32_SWAP
(((
DBMETA
 *)
mbuf
)->
magic
);

337 ((
DBMETA
 *)
mbuf
)->
magic
) {

338 
DB_BTREEMAGIC
:

339 
DB_HASHMAGIC
:

340 
DB_QAMMAGIC
:

341 
	`__db_rx
(
dbv
,

343 
_me
);

346 
	`__db_rx
(
dbv
,

347 "%s: uecognized fty", 
_me
);

350 
t
 = 
EINVAL
;

351 
r
;

354 
t
 = 
	`__os_fsync
(
dbv
, 
fhp
);

360 
r
: i(
u_mp_ݒ
 =0 && 
fhp
 !
NULL
 &&

361 (
t_t
 = 
	`__os_ohd
(
dbv
, 
fhp
)!0 && 
t
 == 0)

362 
t
 = 
t_t
;

363 
	`__os_
(
dbv
, 
_me
);

366 i(
dbp
->
db_edback
 !
NULL
)

367 
dbp
->
	`db_edback
(dbp, 
DB_UPGRADE
, 100);

369  (
t
);

370 
	}
}

377 
	$__db_ge_ss
(
dbp
, 
_me
, 
ags
, 

, 
fhp
)

378 
DB
 *
dbp
;

379 *
_me
;

380 
u_t32_t
 
ags
;

381 (* cڡ 

[
P_PAGETYPE_MAX
])

382 
	`__P
((
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *));

383 
DB_FH
 *
fhp
;

385 
DB_ENV
 *
dbv
;

386 
PAGE
 *
ge
;

387 
db_pgno_t
 
i
, 
pgno_ϡ
;

388 
size_t
 
n
;

389 
dty
, 
t
;

391 
dbv
 = 
dbp
->dbenv;

394 i((
t
 = 
	`__db_ϡpgno
(
dbp
, 
_me
, 
fhp
, &
pgno_ϡ
)) != 0)

395  (
t
);

398 i((
t
 = 
	`__os_mloc
(
dbv
, 
dbp
->
pgsize
, &
ge
)) != 0)

399  (
t
);

402 
i
 = 0; i < 
pgno_ϡ
; ++i) {

403 i(
dbp
->
db_edback
 !
NULL
)

404 
dbp
->
	`db_edback
(

405 
dbp
, 
DB_UPGRADE
, ()((
i
 * 100)/
pgno_ϡ
));

406 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
i
, 
dbp
->
pgsize
, 0)) != 0)

408 i((
t
 = 
	`__os_ad
(
dbv
, 
fhp
, 
ge
, 
dbp
->
pgsize
, &
n
)) != 0)

410 
dty
 = 0;

412 i((
t
 = 
	`__db_dey_pg
(
dbv
, 
dbp
, 
ge
)) != 0)

414 i(

[
	`TYPE
(
ge
)] !
NULL
 && (
t
 = fl[TYPE(page)]

415 (
dbp
, 
_me
, 
ags
, 
fhp
, 
ge
, &
dty
)) != 0)

417 i(
dty
) {

418 i((
t
 = 
	`__db_y_d_checksum_pg
(

419 
dbv
, 
dbp
, 
ge
)) != 0)

421 i((
t
 =

422 
	`__os_ek
(
dbv
, 
fhp
, 
i
, 
dbp
->
pgsize
, 0)) != 0)

424 i((
t
 = 
	`__os_wre
(
dbv
,

425 
fhp
, 
ge
, 
dbp
->
pgsize
, &
n
)) != 0)

430 
	`__os_
(
dbp
->
dbv
, 
ge
);

431  (
t
);

432 
	}
}

441 
	$__db_ϡpgno
(
dbp
, 
_me
, 
fhp
, 
pgno_ϡp
)

442 
DB
 *
dbp
;

443 *
_me
;

444 
DB_FH
 *
fhp
;

445 
db_pgno_t
 *
pgno_ϡp
;

447 
DB_ENV
 *
dbv
;

448 
db_pgno_t
 
pgno_ϡ
;

449 
u_t32_t
 
mbys
, 
bys
;

450 
t
;

452 
dbv
 = 
dbp
->dbenv;

454 i((
t
 = 
	`__os_iofo
(
dbv
,

455 
_me
, 
fhp
, &
mbys
, &
bys
, 
NULL
)) != 0) {

456 
	`__db_r
(
dbv
, 
t
, "%s", 
_me
);

457  (
t
);

461 i(
bys
 % 
dbp
->
pgsize
 != 0) {

462 
	`__db_rx
(
dbv
,

463 "%s: fsiznه muɝ othgesize", 
_me
);

464  (
EINVAL
);

466 
pgno_ϡ
 = 
mbys
 * (
MEGABYTE
 / 
dbp
->
pgsize
);

467 
pgno_ϡ
 +
bys
 / 
dbp
->
pgsize
;

469 *
pgno_ϡp
 = 
pgno_ϡ
;

471 
	}
}

480 
	$__db_t_ϡpgno
(
dbp
, 
_me
, 
fhp
)

481 
DB
 *
dbp
;

482 *
_me
;

483 
DB_FH
 *
fhp
;

485 
DB_ENV
 *
dbv
;

486 
DBMETA
 
ma
;

487 
t
;

488 
size_t
 
n
;

490 
dbv
 = 
dbp
->dbenv;

491 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 0)) != 0)

492  (
t
);

493 i((
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
ma
, (ma), &
n
)) != 0)

494  (
t
);

495 
dbp
->
pgsize
 = 
ma
.
gesize
;

496 i((
t
 = 
	`__db_ϡpgno
(
dbp
, 
_me
, 
fhp
, &
ma
.
ϡ_pgno
)) != 0)

497  (
t
);

498 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 0)) != 0)

499  (
t
);

500 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
ma
, (ma), &
n
)) != 0)

501  (
t
);

504 
	}
}

	@../db/db_upg_opd.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

15 
__db_bud_bi
 
__P
((
DB
 *, 
DB_FH
 *, 
PAGE
 *, PAGE *, 
u_t32_t
, *));

16 
__db_bud_ri
 
__P
((
DB
 *, 
DB_FH
 *, 
PAGE
 *, PAGE *, 
u_t32_t
, *));

17 
__db_up_ovf
 
__P
((
DB
 *, 
DB_FH
 *, 
db_pgno_t
));

19 
	#GET_PAGE
(
dbp
, 
fhp
, 
pgno
, 
ge
) { \

20 i((
t
 = 
	`__os_ek
( \

21 
dbp
->
dbv
, 
fhp
, 
pgno
, (dbp)->
pgsize
, 0)) != 0) \

22 
r
; \

23 i((
t
 = 
	`__os_ad
(
dbp
->
dbv
, \

24 
fhp
, 
ge
, (
dbp
)->
pgsize
, &
n
)) != 0) \

25 
r
; \

26 }

	)

27 
	#PUT_PAGE
(
dbp
, 
fhp
, 
pgno
, 
ge
) { \

28 i((
t
 = 
	`__os_ek
( \

29 
dbp
->
dbv
, 
fhp
, 
pgno
, (dbp)->
pgsize
, 0)) != 0) \

30 
r
; \

31 i((
t
 = 
	`__os_wre
(
dbp
->
dbv
, \

32 
fhp
, 
ge
, (
dbp
)->
pgsize
, &
n
)) != 0) \

33 
r
; \

34 }

	)

43 
	$__db_31_offdup
(
dbp
, 
_me
, 
fhp
, 
s܋d
, 
pgn
)

44 
DB
 *
dbp
;

45 *
_me
;

46 
DB_FH
 *
fhp
;

47 
s܋d
;

48 
db_pgno_t
 *
pgn
;

50 
PAGE
 *
age
, *
ge
;

51 
db_dx_t
 
dx
;

52 
db_pgno_t
 
cur_t
, 
i
, 
xt_t
, 
pgno
, *
pgno_cur
, 
pgno_ϡ
;

53 
db_pgno_t
 *
pgno_xt
, 
pgno_max
, *
tmp
;

54 
db_o_t
 
ecs
;

55 
size_t
 
n
;

56 
v
, 
nomem
, 
t
;

58 
age
 = 
ge
 = 
NULL
;

59 
pgno_cur
 = 
pgno_xt
 = 
NULL
;

62 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
, dbp->
pgsize
, &
ge
)) != 0)

63 
r
;

71 
ecs
 = 0, 
cur_t
 = 
pgno_max
 = 0,

72 
pgno
 = *
pgn
;gn!
PGNO_INVALID
;) {

73 i(
pgno_max
 =
cur_t
) {

74 
pgno_max
 += 20;

75 i((
t
 = 
	`__os_loc
(
dbp
->
dbv
, 
pgno_max
 *

76 (
db_pgno_t
), &
pgno_cur
)) != 0)

77 
r
;

79 
pgno_cur
[
cur_t
++] = 
pgno
;

81 
	`GET_PAGE
(
dbp
, 
fhp
, 
pgno
, 
ge
);

82 
ecs
 +
	`NUM_ENT
(
ge
);

83 
	`LEVEL
(
ge

LEAFLEVEL
;

84 
	`TYPE
(
ge

s܋d
 ? 
P_LDUP
 : 
P_LRECNO
;

89 
	`ZERO_LSN
(
	`LSN
(
ge
));

90 
	`PUT_PAGE
(
dbp
, 
fhp
, 
pgno
, 
ge
);

92 
pgno
 = 
	`NEXT_PGNO
(
ge
);

96 i(
cur_t
 <= 1)

97 
de
;

104 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
,

105 
cur_t
 * (
db_pgno_t
), &
pgno_xt
)) != 0)

106 
r
;

109 i((
t
 = 
	`__db_ϡpgno
(
dbp
, 
_me
, 
fhp
, &
pgno_ϡ
)) != 0)

110 
r
;

113 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
, dbp->
pgsize
, &
age
)) != 0)

114 
r
;

115 
	`PGNO
(
age

PGNO_INVALID
;

121 
v
 = 
LEAFLEVEL
 + 1; 
cur_t
 > 1; ++level) {

122 
dx
 = 0, 
i
 = 
xt_t
 = 0; i < 
cur_t
;) {

123 i(
dx
 == 0) {

124 
	`P_INIT
(
age
, 
dbp
->
pgsize
, 
pgno_ϡ
,

125 
PGNO_INVALID
, PGNO_INVALID,

126 
v
, 
s܋d
 ? 
P_IBTREE
 : 
P_IRECNO
);

127 
	`ZERO_LSN
(
	`LSN
(
age
));

129 
pgno_xt
[
xt_t
++] = 
pgno_ϡ
++;

132 
	`GET_PAGE
(
dbp
, 
fhp
, 
pgno_cur
[
i
], 
ge
);

141 
nomem
 = 0;

142 i(
s܋d
) {

143 i((
t
 = 
	`__db_bud_bi
(

144 
dbp
, 
fhp
, 
age
, 
ge
, 
dx
, &
nomem
)) != 0)

145 
r
;

147 i((
t
 = 
	`__db_bud_ri
(

148 
dbp
, 
fhp
, 
age
, 
ge
, 
dx
, &
nomem
)) != 0)

149 
r
;

150 i(
nomem
) {

151 
dx
 = 0;

152 
	`PUT_PAGE
(
dbp
, 
fhp
, 
	`PGNO
(
age
), ipage);

154 ++
dx
;

155 ++
	`NUM_ENT
(
age
);

156 ++
i
;

164 i(
xt_t
 == 1)

165 
	`RE_NREC_SET
(
age
, 
ecs
);

166 
	`PUT_PAGE
(
dbp
, 
fhp
, 
	`PGNO
(
age
), ipage);

169 
cur_t
 = 
xt_t
;

170 
tmp
 = 
pgno_cur
;

171 
pgno_cur
 = 
pgno_xt
;

172 
pgno_xt
 = 
tmp
;

175 
de
: *
pgn
 = 
pgno_cur
[0];

177 
r
: i(
pgno_cur
 !
NULL
)

178 
	`__os_
(
dbp
->
dbv
, 
pgno_cur
);

179 i(
pgno_xt
 !
NULL
)

180 
	`__os_
(
dbp
->
dbv
, 
pgno_xt
);

181 i(
age
 !
NULL
)

182 
	`__os_
(
dbp
->
dbv
, 
age
);

183 i(
ge
 !
NULL
)

184 
	`__os_
(
dbp
->
dbv
, 
ge
);

186  (
t
);

187 
	}
}

194 
	$__db_bud_bi
(
dbp
, 
fhp
, 
age
, 
ge
, 
dx
, 
nomemp
)

195 
DB
 *
dbp
;

196 
DB_FH
 *
fhp
;

197 
PAGE
 *
age
, *
ge
;

198 
u_t32_t
 
dx
;

199 *
nomemp
;

201 
BINTERNAL
 
bi
, *
chd_bi
;

202 
BKEYDATA
 *
chd_bk
;

203 
u_t8_t
 *
p
;

204 
t
;

205 
db_dx_t
 *
p
;

207 
p
 = 
	`P_INP
(
dbp
, 
age
);

208 
	`TYPE
(
ge
)) {

209 
P_IBTREE
:

210 
chd_bi
 = 
	`GET_BINTERNAL
(
dbp
, 
ge
, 0);

211 i(
	`P_FREESPACE
(
dbp
, 
age
< 
	`BINTERNAL_PSIZE
(
chd_bi
->
n
)) {

212 *
nomemp
 = 1;

215 
p
[
dx
] =

216 
	`HOFFSET
(
age
-
	`BINTERNAL_SIZE
(
chd_bi
->
n
);

217 
p
 = 
	`P_ENTRY
(
dbp
, 
age
, 
dx
);

219 
bi
.
n
 = 
chd_bi
->len;

220 
	`B_TSET
(
bi
.
ty
, 
chd_bi
->type);

221 
bi
.
pgno
 = 
	`PGNO
(
ge
);

222 
bi
.
ecs
 = 
	`__bam_tٮ
(
dbp
, 
ge
);

223 
	`memy
(
p
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

224 
p
 +
	`SSZA
(
BINTERNAL
, 
da
);

225 
	`memy
(
p
, 
chd_bi
->
da
, chd_bi->
n
);

228 i(
	`B_TYPE
(
chd_bi
->
ty
=
B_OVERFLOW
)

229 i((
t
 = 
	`__db_up_ovf
(
dbp
, 
fhp
,

230 ((
BOVERFLOW
 *)(
chd_bi
->
da
))->
pgno
)) != 0)

231  (
t
);

233 
P_LDUP
:

234 
chd_bk
 = 
	`GET_BKEYDATA
(
dbp
, 
ge
, 0);

235 
	`B_TYPE
(
chd_bk
->
ty
)) {

236 
B_KEYDATA
:

237 i(
	`P_FREESPACE
(
dbp
, 
age
) <

238 
	`BINTERNAL_PSIZE
(
chd_bk
->
n
)) {

239 *
nomemp
 = 1;

242 
p
[
dx
] =

243 
	`HOFFSET
(
age
-
	`BINTERNAL_SIZE
(
chd_bk
->
n
);

244 
p
 = 
	`P_ENTRY
(
dbp
, 
age
, 
dx
);

246 
bi
.
n
 = 
chd_bk
->len;

247 
	`B_TSET
(
bi
.
ty
, 
chd_bk
->type);

248 
bi
.
pgno
 = 
	`PGNO
(
ge
);

249 
bi
.
ecs
 = 
	`__bam_tٮ
(
dbp
, 
ge
);

250 
	`memy
(
p
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

251 
p
 +
	`SSZA
(
BINTERNAL
, 
da
);

252 
	`memy
(
p
, 
chd_bk
->
da
, chd_bk->
n
);

254 
B_OVERFLOW
:

255 i(
	`P_FREESPACE
(
dbp
, 
age
) <

256 
	`BINTERNAL_PSIZE
(
BOVERFLOW_SIZE
)) {

257 *
nomemp
 = 1;

260 
p
[
dx
] =

261 
	`HOFFSET
(
age
-
	`BINTERNAL_SIZE
(
BOVERFLOW_SIZE
);

262 
p
 = 
	`P_ENTRY
(
dbp
, 
age
, 
dx
);

264 
bi
.
n
 = 
BOVERFLOW_SIZE
;

265 
	`B_TSET
(
bi
.
ty
, 
chd_bk
->type);

266 
bi
.
pgno
 = 
	`PGNO
(
ge
);

267 
bi
.
ecs
 = 
	`__bam_tٮ
(
dbp
, 
ge
);

268 
	`memy
(
p
, &
bi
, 
	`SSZA
(
BINTERNAL
, 
da
));

269 
p
 +
	`SSZA
(
BINTERNAL
, 
da
);

270 
	`memy
(
p
, 
chd_bk
, 
BOVERFLOW_SIZE
);

273 i((
t
 = 
	`__db_up_ovf
(
dbp
, 
fhp
,

274 ((
BOVERFLOW
 *)
chd_bk
)->
pgno
)) != 0)

275  (
t
);

278  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
ge
)));

282  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
ge
)));

286 
	}
}

293 
	$__db_bud_ri
(
dbp
, 
fhp
, 
age
, 
ge
, 
dx
, 
nomemp
)

294 
DB
 *
dbp
;

295 
DB_FH
 *
fhp
;

296 
PAGE
 *
age
, *
ge
;

297 
u_t32_t
 
dx
;

298 *
nomemp
;

300 
RINTERNAL
 
ri
;

301 
db_dx_t
 *
p
;

303 
	`COMPQUIET
(
fhp
, 
NULL
);

304 
p
 = 
	`P_INP
(
dbp
, 
age
);

305 i(
	`P_FREESPACE
(
dbp
, 
age
< 
RINTERNAL_PSIZE
) {

306 *
nomemp
 = 1;

310 
ri
.
pgno
 = 
	`PGNO
(
ge
);

311 
ri
.
ecs
 = 
	`__bam_tٮ
(
dbp
, 
ge
);

312 
p
[
dx
] = 
	`HOFFSET
(
age
-
RINTERNAL_SIZE
;

313 
	`memy
(
	`P_ENTRY
(
dbp
, 
age
, 
dx
), &
ri
, 
RINTERNAL_SIZE
);

316 
	}
}

323 
	$__db_up_ovf
(
dbp
, 
fhp
, 
pgno
)

324 
DB
 *
dbp
;

325 
DB_FH
 *
fhp
;

326 
db_pgno_t
 
pgno
;

328 
PAGE
 *
ge
;

329 
size_t
 
n
;

330 
t
;

333 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
, dbp->
pgsize
, &
ge
)) != 0)

334  (
t
);

336 
	`GET_PAGE
(
dbp
, 
fhp
, 
pgno
, 
ge
);

337 ++
	`OV_REF
(
ge
);

338 
	`PUT_PAGE
(
dbp
, 
fhp
, 
pgno
, 
ge
);

340 
r
: 
	`__os_
(
dbp
->
dbv
, 
ge
);

342  (
t
);

343 
	}
}

	@../db/db_vrfy.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_sw.h
"

14 
	~"dbc/db_vify.h
"

15 
	~"dbc/b.h
"

16 
	~"dbc/hash.h
"

17 
	~"dbc/lock.h
"

18 
	~"dbc/mp.h
"

19 
	~"dbc/qam.h
"

20 
	~"dbc/txn.h
"

29 
u_t
 
__db_guesgsize
 
__P
((
DB_ENV
 *, 
DB_FH
 *));

30 
__db_is_vid_magio
 
__P
((
u_t32_t
, 
DBTYPE
 *));

31 
__db_is_vid_gy
 
__P
((
u_t32_t
));

32 
__db_ma2pgt


33 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
u_t32_t
, DB *));

34 
__db_lvage_subdbpg
 
__P
((
DB
 *, 
VRFY_DBINFO
 *,

35 
PAGE
 *, *, (*)(*, cڡ *), 
u_t32_t
));

36 
__db_lvage_subdbs
 
	`__P
((
DB
 *, 
VRFY_DBINFO
 *, *,

37 (*)(*, cڡ *), 
u_t32_t
, *));

38 
__db_lvage_unknowns
 
	`__P
((
DB
 *, 
VRFY_DBINFO
 *, *,

39 (*)(*, cڡ *), 
u_t32_t
));

40 
__db_vify
 
	`__P
((
DB
 *, const *, const *,

41 *, (*)(*, cڡ *), 
u_t32_t
));

42 
__db_vify_g
 
	`__P
((
DB
 *, cڡ *, *, 
u_t32_t
));

43 
__db_vrfy_li


44 
	`__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
u_t32_t
));

45 
__db_vrfy_vid


46 
	`__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
, 
u_t32_t
));

47 
__db_vrfy_dchkly
 
	`__P
((
DB
 *,

48 
VRFY_DBINFO
 *, cڡ *, cڡ *, 
u_t32_t
));

49 
__db_vrfy_gezo
 
	`__P
((
DB
 *, 
VRFY_DBINFO
 *, 
DB_FH
 *, 
u_t32_t
));

50 
__db_vrfy_subdbs


51 
	`__P
((
DB
 *, 
VRFY_DBINFO
 *, cڡ *, 
u_t32_t
));

52 
__db_vrfy_ruu


53 
	`__P
((
DB
 *, 
VRFY_DBINFO
 *, cڡ *, 
db_pgno_t
, 
u_t32_t
));

54 
__db_vrfy_wkges
 
	`__P
((
DB
 *, 
VRFY_DBINFO
 *,

55 *, (*)(*, cڡ *), 
u_t32_t
));

57 
	#VERIFY_FLAGS
 \

58 (
DB_AGGRESSIVE
 | \

59 
DB_NOORDERCHK
 | 
DB_ORDERCHKONLY
 | 
DB_PRINTABLE
 | 
DB_SALVAGE
 | 
DB_UNREF
)

	)

69 
	$__db_vify_
(
dbp
, 
fe
, 
daba
, 
outfe
, 
ags
)

70 
DB
 *
dbp
;

71 cڡ *
fe
, *
daba
;

72 
FILE
 *
outfe
;

73 
u_t32_t
 
ags
;

79  (
	`__db_vify_
(
dbp
,

80 
fe
, 
daba
, 
outfe
, 
__db__back
, 
ags
));

81 
	}
}

90 
	$__db_vify_
(
dbp
, 
ame
, 
dme
, 
hd
, 
back
, 
ags
)

91 
DB
 *
dbp
;

92 cڡ *
ame
, *
dme
;

93 *
hd
;

94 (*
back

	`__P
((*, const *));

95 
u_t32_t
 
ags
;

97 
DB_ENV
 *
dbv
;

98 
t
, 
t_t
;

100 
dbv
 = 
dbp
->dbenv;

102 
	`PANIC_CHECK
(
dbv
);

103 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->verify");

105 #ifde
HAVE_FTRUNCATE


111 i(!
	`LF_ISSET
(
DB_SALVAGE
))

112 
	`LF_SET
(
DB_UNREF
);

115 i((
t
 = 
	`__db_vify_g
(
dbp
, 
dme
, 
hd
, 
ags
)) == 0)

116 
t
 = 
	`__db_vify
(
dbp
, 
ame
, 
dme
, 
hd
, 
back
, 
ags
);

119 i((
t_t
 = 
	`__db_o
(
dbp
, 
NULL
, 0)!0 && 
t
 == 0)

120 
t
 = 
t_t
;

122  (
t
);

123 
	}
}

130 
	$__db_vify_g
(
dbp
, 
dme
, 
hd
, 
ags
)

131 
DB
 *
dbp
;

132 cڡ *
dme
;

133 *
hd
;

134 
u_t32_t
 
ags
;

136 
DB_ENV
 *
dbv
;

137 
t
;

139 
dbv
 = 
dbp
->dbenv;

141 i((
t
 = 
	`__db_fchk
(
dbv
, "DB->vify", 
ags
, 
VERIFY_FLAGS
)) != 0)

142  (
t
);

152 i(
	`LF_ISSET
(
DB_SALVAGE
)) {

153 i(
	`LF_ISSET
(~(
DB_AGGRESSIVE
 | 
DB_PRINTABLE
 | 
DB_SALVAGE
)))

154  (
	`__db_
(
dbv
, "DB->verify", 1));

155 i(
hd
 =
NULL
) {

156 
	`__db_rx
(
dbv
,

158  (
EINVAL
);

161 i(
	`LF_ISSET
(
DB_AGGRESSIVE
 | 
DB_PRINTABLE
))

162  (
	`__db_
(
dbv
, "DB->verify", 1));

168 i((
t
 = 
	`__db_fcchk
(
dbv
, "DB->vify", 
ags
,

169 
DB_ORDERCHKONLY
, 
DB_SALVAGE
 | 
DB_NOORDERCHK
)) != 0)

170  (
t
);

171 i(
	`LF_ISSET
(
DB_ORDERCHKONLY
&& 
dme
 =
NULL
) {

172 
	`__db_rx
(
dbv
, "DB_ORDERCHKONLYequires databaseame");

173  (
EINVAL
);

176 
	}
}

193 
	$__db_vify
(
dbp
, 
me
, 
subdb
, 
hd
, 
back
, 
ags
)

194 
DB
 *
dbp
;

195 cڡ *
me
, *
subdb
;

196 *
hd
;

197 (*
back

	`__P
((*, const *));

198 
u_t32_t
 
ags
;

200 
DB_ENV
 *
dbv
;

201 
DB_FH
 *
fhp
;

202 
VRFY_DBINFO
 *
vdp
;

203 
has_subdbs
, 
isbad
, 
t
, 
t_t
;

204 *
_me
;

206 
dbv
 = 
dbp
->dbenv;

207 
fhp
 = 
NULL
;

208 
vdp
 = 
NULL
;

209 
_me
 = 
NULL
;

210 
has_subdbs
 = 
isbad
 = 
t
 = 0;

212 
	`F_SET
(
dbp
, 
DB_AM_VERIFYING
);

215 i(!
	`LF_ISSET
(
DB_SALVAGE
&& 
dbp
->
db_edback
 !
NULL
)

216 
dbp
->
	`db_edback
(dbp, 
DB_VERIFY
, 0);

227 i((
t
 = 
	`__db_vrfy_dbfo_
(
dbv
, 1024, &
vdp
)) != 0)

228 
r
;

235 i(
	`LF_ISSET
(
DB_PRINTABLE
))

236 
	`F_SET
(
vdp
, 
SALVAGE_PRINTABLE
);

239 i((
t
 = 
	`__db_ame
(
dbv
,

240 
DB_APP_DATA
, 
me
, 0, 
NULL
, &
_me
)) != 0)

241 
r
;

254 i((
t
 = 
	`__os_ݒ
(
dbv
, 
_me
, 0, 
DB_OSO_RDONLY
, 0, &
fhp
)) != 0)

255 
r
;

258 i((
t
 = 
	`__db_vrfy_gezo
(
dbp
, 
vdp
, 
fhp
, 
ags
)) != 0) {

259 i(
t
 =
DB_VERIFY_BAD
)

260 
isbad
 = 1;

262 
r
;

277 i((
t
 = 
	`__db_v_tup
(
dbp
, 
NULL
,

278 
me
, 
subdb
, 
TXN_INVALID
, 
DB_ODDFILESIZE
 | 
DB_RDONLY
)) != 0)

279 
r
;

285 i(
dbp
->
ty
 =
DB_QUEUE
 &&

286 (
t
 = 
	`__qam_t_ext_da
(
dbp
, 
me
)) != 0)

287 
r
;

290 
	`F_SET
(
dbp
, 
DB_AM_OPEN_CALLED
);

293 i((
t
 = 
	`__memp_g_ϡ_pgno
(
dbp
->
mpf
, &
vdp
->
ϡ_pgno
)) != 0)

294 
r
;

305 i(
	`LF_ISSET
(
DB_ORDERCHKONLY
)) {

306 
t
 = 
	`__db_vrfy_dchkly
(
dbp
, 
vdp
, 
me
, 
subdb
, 
ags
);

307 
de
;

316 i(
	`LF_ISSET
(
DB_SALVAGE
)) {

317 i((
t
 = 
	`__db_lvage_
(
vdp
)) != 0)

318 
r
;

327 i(!
	`LF_ISSET
(
DB_AGGRESSIVE
&& 
	`__db_lvage_subdbs
(

328 
dbp
, 
vdp
, 
hd
, 
back
, 
ags
, &
has_subdbs
) != 0)

329 
isbad
 = 1;

336 i(
has_subdbs
)

337 
	`F_SET
(
vdp
, 
SALVAGE_PRINTHEADER
);

340 i((
t
 =

341 
	`__db_vrfy_wkges
(
dbp
, 
vdp
, 
hd
, 
back
, 
ags
)) != 0) {

342 i(
t
 =
DB_VERIFY_BAD
)

343 
isbad
 = 1;

345 
r
;

349 i(!
	`LF_ISSET
(
DB_SALVAGE
&& 
isbad
 == 0)

350 i((
t
 =

351 
	`__db_vrfy_ruu
(
dbp
, 
vdp
, 
me
, 0, 
ags
)) != 0) {

352 i(
t
 =
DB_VERIFY_BAD
)

353 
isbad
 = 1;

355 
r
;

363 i(
	`LF_ISSET
(
DB_SALVAGE
)) {

364 i((
t
 = 
	`__db_lvage_unknowns
(
dbp
,

365 
vdp
, 
hd
, 
back
, 
ags
)) != 0)

366 
isbad
 = 1;

368 
	`__db_lvage_deroy
(
vdp
);

372 i(
	`LF_ISSET
(
DB_SALVAGE
) &&

373 (!
has_subdbs
 || 
	`F_ISSET
(
vdp
, 
SALVAGE_PRINTFOOTER
)))

374 ()
	`__db_foٔ
(
hd
, 
back
);

376 
de
: 
r
:

378 i(!
	`LF_ISSET
(
DB_SALVAGE
&& 
dbp
->
db_edback
 !
NULL
)

379 
dbp
->
	`db_edback
(dbp, 
DB_VERIFY
, 100);

381 i(
fhp
 !
NULL
 &&

382 (
t_t
 = 
	`__os_ohd
(
dbv
, 
fhp
)!0 && 
t
 == 0)

383 
t
 = 
t_t
;

384 i(
vdp
 !
NULL
 &&

385 (
t_t
 = 
	`__db_vrfy_dbfo_deroy
(
dbv
, 
vdp
)!0 && 
t
 == 0)

386 
t
 = 
t_t
;

387 i(
_me
 !
NULL
)

388 
	`__os_
(
dbv
, 
_me
);

398 i(
t
 =
DB_VERIFY_FATAL
 ||

399 
t
 =
DB_PAGE_NOTFOUND
 || (=0 && 
isbad
 == 1))

400 
t
 = 
DB_VERIFY_BAD
;

403 i(
t
 != 0)

404 
	`__db_r
(
dbv
, 
t
, "%s", 
me
);

406  (
t
);

407 
	}
}

417 
	$__db_vrfy_gezo
(
dbp
, 
vdp
, 
fhp
, 
ags
)

418 
DB
 *
dbp
;

419 
VRFY_DBINFO
 *
vdp
;

420 
DB_FH
 *
fhp
;

421 
u_t32_t
 
ags
;

423 
DBMETA
 *
ma
;

424 
DB_ENV
 *
dbv
;

425 
VRFY_PAGEINFO
 *
p
;

426 
db_pgno_t
 
li
;

427 
size_t
 

;

428 
isbad
, 
t
, 
swd
;

429 
u_t8_t
 
mbuf
[
DBMETASIZE
];

431 
isbad
 = 
t
 = 
swd
 = 0;

432 
li
 = 0;

433 
dbv
 = 
dbp
->dbenv;

434 
ma
 = (
DBMETA
 *)
mbuf
;

435 
dbp
->
ty
 = 
DB_UNKNOWN
;

437 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
PGNO_BASE_MD
, &
p
)) != 0)

438  (
t
);

446 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 0)) != 0 ||

447 (
t
 = 
	`__os_ad
(
dbv
, 
fhp
, 
mbuf
, 
DBMETASIZE
, &

)) != 0) {

448 
	`__db_r
(
dbv
, 
t
,

449 "Madg%lu cn bad", (
u_lg
)
PGNO_BASE_MD
);

450  (
t
);

453 i(

 !
DBMETASIZE
) {

454 
	`EPRINT
((
dbv
,

456 (
u_lg
)
PGNO_BASE_MD
));

457  (
DB_VERIFY_FATAL
);

460 i((
t
 = 
	`__db_chk_ma
(
dbv
, 
dbp
, 
ma
, 1)) != 0) {

461 
	`EPRINT
((
dbv
,

462 "Pag%lu: madgcrued", (
u_lg
)
PGNO_BASE_MD
));

463 
isbad
 = 1;

464 i(
t
 != -1) {

465 
	`EPRINT
((
dbv
,

467 (
u_lg
)
PGNO_BASE_MD
));

468  (
DB_VERIFY_FATAL
);

478 i(
ma
->
pgno
 !
PGNO_BASE_MD
) {

479 
isbad
 = 1;

480 
	`EPRINT
((
dbv
, "Page %lu:gno incorrectly seto %lu",

481 (
u_lg
)
PGNO_BASE_MD
, (u_lg)
ma
->
pgno
));

485 i(
	`__db_is_vid_magio
(
ma
->
magic
, &
dbp
->
ty
))

486 
swd
 = 0;

488 
	`M_32_SWAP
(
ma
->
magic
);

489 i(
	`__db_is_vid_magio
(
ma
->
magic
,

490 &
dbp
->
ty
))

491 
swd
 = 1;

493 
isbad
 = 1;

494 
	`EPRINT
((
dbv
,

496 (
u_lg
)
PGNO_BASE_MD
, (u_lg)
ma
->
magic
));

504 i(
swd
)

505 
	`M_32_SWAP
(
ma
->
vsi
);

506 i((
dbp
->
ty
 =
DB_BTREE
 &&

507 (
ma
->
vsi
 > 
DB_BTREEVERSION
 ||

508 
ma
->
vsi
 < 
DB_BTREEOLDVER
)) ||

509 (
dbp
->
ty
 =
DB_HASH
 &&

510 (
ma
->
vsi
 > 
DB_HASHVERSION
 ||

511 
ma
->
vsi
 < 
DB_HASHOLDVER
)) ||

512 (
dbp
->
ty
 =
DB_QUEUE
 &&

513 (
ma
->
vsi
 > 
DB_QAMVERSION
 ||

514 
ma
->
vsi
 < 
DB_QAMOLDVER
))) {

515 
isbad
 = 1;

516 
	`EPRINT
((
dbv
,

518 (
u_lg
)
PGNO_BASE_MD
, (u_lg)
ma
->
vsi
));

525 i(
swd
)

526 
	`M_32_SWAP
(
ma
->
gesize
);

527 i(
	`IS_VALID_PAGESIZE
(
ma
->
gesize
))

528 
dbp
->
pgsize
 = 
ma
->
gesize
;

530 
isbad
 = 1;

531 
	`EPRINT
((
dbv
, "Page %lu: badage size %lu",

532 (
u_lg
)
PGNO_BASE_MD
, (u_lg)
ma
->
gesize
));

539 i(!
	`IS_VALID_PAGESIZE
(
dbp
->
pgsize
))

540 
dbp
->
pgsize
 = 
	`__db_guesgsize
(
dbv
, 
fhp
);

548 i((
dbp
->
ty
 =
DB_BTREE
 && 
ma
->ty !
P_BTREEMETA
) ||

549 (
dbp
->
ty
 =
DB_HASH
 && 
ma
->ty !
P_HASHMETA
) ||

550 (
dbp
->
ty
 =
DB_QUEUE
 && 
ma
->ty !
P_QAMMETA
)) {

551 
isbad
 = 1;

552 
	`EPRINT
((
dbv
, "Page %lu: badageype %lu",

553 (
u_lg
)
PGNO_BASE_MD
, (u_lg)
ma
->
ty
));

559 i(
ma
->
maags
 != 0) {

560 i(
ma
->
maags
 =
DBMETA_CHKSUM
)

561 
	`F_SET
(
p
, 
VRFY_HAS_CHKSUM
);

563 
isbad
 = 1;

564 
	`EPRINT
((
dbv
,

566 (
u_lg
)
PGNO_BASE_MD
, (u_lg)
ma
->
maags
));

576 i(
swd
)

577 
	`M_32_SWAP
(
ma
->

);

578 
li
 = 
ma
->

;

585 
p
->
pgno
 = 
PGNO_BASE_MD
;

586 
p
->
ty
 = 
ma
->type;

592 
	`F_SET
(
p
, 
VRFY_INCOMPLETE
);

594 
p
->

 = 
li
;

596 i((
t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0)

597  (
t
);

600 
	`memy
(
dbp
->
feid
, 
ma
->
uid
, 
DB_FILE_ID_LEN
);

602 i(
swd
 == 1)

603 
	`F_SET
(
dbp
, 
DB_AM_SWAP
);

605  (
isbad
 ? 
DB_VERIFY_BAD
 : 0);

606 
	}
}

614 
	$__db_vrfy_wkges
(
dbp
, 
vdp
, 
hd
, 
back
, 
ags
)

615 
DB
 *
dbp
;

616 
VRFY_DBINFO
 *
vdp
;

617 *
hd
;

618 (*
back

	`__P
((*, const *));

619 
u_t32_t
 
ags
;

621 
DB_ENV
 *
dbv
;

622 
DB_MPOOLFILE
 *
mpf
;

623 
VRFY_PAGEINFO
 *
p
;

624 
PAGE
 *
h
;

625 
db_pgno_t
 
i
;

626 
t
, 
t_t
, 
isbad
;

628 
dbv
 = 
dbp
->dbenv;

629 
mpf
 = 
dbp
->mpf;

630 
h
 = 
NULL
;

631 
t
 = 
isbad
 = 
t_t
 = 0;

633 
i
 = 0; i <
vdp
->
ϡ_pgno
; i++) {

638 i(
	`LF_ISSET
(
DB_SALVAGE
&& (
	`__db_lvage_isde
(
vdp
, 
i
) != 0))

648 i((
t_t
 = 
	`__memp_fg
(
mpf
, &
i
, 
NULL
, 0, &
h
)) != 0) {

649 i(
dbp
->
ty
 =
DB_HASH
) {

650 i((
t_t
 =

651 
	`__db_vrfy_ggefo
(
vdp
, 
i
, &
p
)) != 0)

652 
r1
;

653 
p
->
ty
 = 
P_INVALID
;

654 
p
->
pgno
 = 
i
;

655 
	`F_CLR
(
p
, 
VRFY_IS_ALLZEROES
);

656 i((
t_t
 = 
	`__db_vrfy_puagefo
(

657 
dbv
, 
vdp
, 
p
)) != 0)

658 
r1
;

661 
r1
: i(
t
 == 0)

662 
t
 = 
t_t
;

663 i(
	`LF_ISSET
(
DB_SALVAGE
))

665  (
t
);

668 i(
	`LF_ISSET
(
DB_SALVAGE
)) {

674 i((
t_t
 = 
	`__db_lvage
(
dbp
,

675 
vdp
, 
i
, 
h
, 
hd
, 
back
, 
ags
)) != 0) {

676 i(
t
 == 0)

677 
t
 = 
t_t
;

678 
isbad
 = 1;

691 i(
i
 !
PGNO_BASE_MD
) {

692 
t
 = 
	`__db_vrfy_comm
(
dbp
, 
vdp
, 
h
, 
i
, 
ags
);

693 i(
t
 =
DB_VERIFY_BAD
)

694 
isbad
 = 1;

695 i(
t
 != 0)

696 
r
;

699 
	`TYPE
(
h
)) {

700 
P_INVALID
:

701 
t
 = 
	`__db_vrfy_vid
(
dbp
, 
vdp
, 
h
, 
i
, 
ags
);

703 
__P_DUPLICATE
:

704 
isbad
 = 1;

705 
	`EPRINT
((
dbv
,

707 (
u_lg
)
i
));

709 
P_HASH_UNSORTED
:

710 
P_HASH
:

711 
t
 = 
	`__ham_vrfy
(
dbp
, 
vdp
, 
h
, 
i
, 
ags
);

713 
P_IBTREE
:

714 
P_IRECNO
:

715 
P_LBTREE
:

716 
P_LDUP
:

717 
t
 = 
	`__bam_vrfy
(
dbp
, 
vdp
, 
h
, 
i
, 
ags
);

719 
P_LRECNO
:

720 
t
 = 
	`__m_vrfy_af
(
dbp
, 
vdp
, 
h
, 
i
, 
ags
);

722 
P_OVERFLOW
:

723 
t
 = 
	`__db_vrfy_ovow
(
dbp
, 
vdp
, 
h
, 
i
, 
ags
);

725 
P_HASHMETA
:

726 
t
 = 
	`__ham_vrfy_ma
(
dbp
,

727 
vdp
, (
HMETA
 *)
h
, 
i
, 
ags
);

729 
P_BTREEMETA
:

730 
t
 = 
	`__bam_vrfy_ma
(
dbp
,

731 
vdp
, (
BTMETA
 *)
h
, 
i
, 
ags
);

733 
P_QAMMETA
:

734 
t
 = 
	`__qam_vrfy_ma
(
dbp
,

735 
vdp
, (
QMETA
 *)
h
, 
i
, 
ags
);

737 
P_QAMDATA
:

738 
t
 = 
	`__qam_vrfy_da
(
dbp
,

739 
vdp
, (
QPAGE
 *)
h
, 
i
, 
ags
);

742 
	`EPRINT
((
dbv
,

744 (
u_lg
)
i
, (u_lg)
	`TYPE
(
h
)));

745 
isbad
 = 1;

752 i(
t
 =
DB_VERIFY_BAD
)

753 
isbad
 = 1;

754 i(
t
 != 0)

755 
r
;

763 i(
dbp
->
db_edback
 !
NULL
)

764 
dbp
->
	`db_edback
(dbp, 
DB_VERIFY
,

765 ()((
i
 + 1* 50 / (
vdp
->
ϡ_pgno
 + 1)));

772 i((
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)) != 0) {

773 i(
t
 == 0)

774 
t
 = 
t_t
;

775 i(!
	`LF_ISSET
(
DB_SALVAGE
))

776  (
t
);

784 i(
	`F_ISSET
(
vdp
, 
VRFY_QMETA_SET
&& (
t_t
 =

785 
	`__qam_vrfy_wkqueue
(
dbp
, 
vdp
, 
hd
, 
back
, 
ags
)) != 0) {

786 i(
t
 == 0)

787 
t
 = 
t_t
;

788 i(
t_t
 =
DB_VERIFY_BAD
)

789 
isbad
 = 1;

790 i(!
	`LF_ISSET
(
DB_SALVAGE
))

791  (
t
);

795 
r
: i(
h
 !
NULL
 &&

796 (
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)) != 0)

797  (
t
 =0 ? 
t_t
 :et);

800  ((
isbad
 =1 && 
t
 =0? 
DB_VERIFY_BAD
 :et);

801 
	}
}

813 
	$__db_vrfy_ruu
(
dbp
, 
vdp
, 
dbme
, 
ma_pgno
, 
ags
)

814 
DB
 *
dbp
;

815 
VRFY_DBINFO
 *
vdp
;

816 cڡ *
dbme
;

817 
db_pgno_t
 
ma_pgno
;

818 
u_t32_t
 
ags
;

820 
DB
 *
pgt
;

821 
DB_ENV
 *
dbv
;

822 
VRFY_PAGEINFO
 *
p
;

823 
db_pgno_t
 
i
;

824 
t
, 
isbad
, 
hassubs
, 
p
;

826 
isbad
 = 0;

827 
p
 = 
NULL
;

828 
dbv
 = 
dbp
->dbenv;

829 
pgt
 = 
vdp
->pgset;

845 i(
dbp
->
db_edback
 !
NULL
)

846 
vdp
->
pgs_mag
 = vdp->
ϡ_pgno
 + 1;

851 
dbp
->
ty
) {

852 
DB_BTREE
:

853 
DB_RECNO
:

854 i((
t
 = 
	`__bam_vrfy_ruu
(
dbp
, 
vdp
, 0, 
ags
)) != 0) {

855 i(
t
 =
DB_VERIFY_BAD
)

856 
isbad
 = 1;

858 
r
;

866 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 0, &
p
)) != 0)

867 
r
;

868 
hassubs
 = 
	`F_ISSET
(
p
, 
VRFY_HAS_SUBDBS
) ? 1 : 0;

869 i((
t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0)

870 
r
;

871 
p
 = 
NULL
;

873 i(
isbad
 =0 && 
hassubs
)

874 i((
t
 =

875 
	`__db_vrfy_subdbs
(
dbp
, 
vdp
, 
dbme
, 
ags
)) != 0) {

876 i(
t
 =
DB_VERIFY_BAD
)

877 
isbad
 = 1;

879 
r
;

882 
DB_HASH
:

883 i((
t
 = 
	`__ham_vrfy_ruu
(
dbp
, 
vdp
, 0, 
ags
)) != 0) {

884 i(
t
 =
DB_VERIFY_BAD
)

885 
isbad
 = 1;

887 
r
;

890 
DB_QUEUE
:

891 i((
t
 = 
	`__qam_vrfy_ruu
(
dbp
, 
vdp
, 
ags
)) != 0) {

892 i(
t
 =
DB_VERIFY_BAD
)

893 
isbad
 = 1;

902 
r
;

903 
DB_UNKNOWN
:

905 
t
 = 
	`__db_unknown_th
(
dbv
, "__db_vrfy_structure");

906 
r
;

910 i((
t
 =

911 
	`__db_vrfy_li
(
dbp
, 
vdp
, 
ma_pgno
, 
ags
)=
DB_VERIFY_BAD
)

912 
isbad
 = 1;

921 i(
t
 !0 || 
isbad
 == 1)

922 
r
;

929 
i
 = 0; i < 
vdp
->
ϡ_pgno
 + 1; i++) {

930 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
i
, &
p
)) != 0)

931 
r
;

932 i((
t
 = 
	`__db_vrfy_pgt_g
(
pgt
, 
i
, &
p
)) != 0)

933 
r
;

934 i(
p
->
ty
 =
P_OVERFLOW
) {

935 i((
u_t32_t
)
p
 !
p
->
fcou
) {

936 
	`EPRINT
((
dbv
,

938 (
u_lg
)
i
,

939 (
u_lg
)
p
->
fcou
, (u_lg)
p
));

940 
isbad
 = 1;

942 } i(
p
 =0 && 
	`LF_ISSET
(
DB_UNREF
) &&

943 !(
dbp
->
ty
 =
DB_HASH
 && 
p
->ty =
P_INVALID
)) {

948 
	`EPRINT
((
dbv
,

949 "Pag%lu: uendage", (
u_lg
)
i
));

950 
isbad
 = 1;

953 i(
	`F_ISSET
(
p
, 
VRFY_IS_ALLZEROES
)) {

954 
	`EPRINT
((
dbv
,

955 "Pag%lu:ٮly zdage", (
u_lg
)
i
));

956 
isbad
 = 1;

958 i((
t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0)

959 
r
;

960 
p
 = 
NULL
;

963 
r
: i(
p
 !
NULL
)

964 ()
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
);

966  ((
isbad
 =1 && 
t
 =0? 
DB_VERIFY_BAD
 :et);

967 
	}
}

973 
	$__db_is_vid_gy
(
ty
)

974 
u_t32_t
 
ty
;

976 
ty
) {

977 
P_INVALID
:

978 
P_HASH_UNSORTED
:

979 
P_IBTREE
:

980 
P_IRECNO
:

981 
P_LBTREE
:

982 
P_LRECNO
:

983 
P_OVERFLOW
:

984 
P_HASHMETA
:

985 
P_BTREEMETA
:

986 
P_QAMMETA
:

987 
P_QAMDATA
:

988 
P_LDUP
:

989 
P_HASH
:

995 
	}
}

1001 
	$__db_is_vid_magio
(
magic
, 
typ
)

1002 
u_t32_t
 
magic
;

1003 
DBTYPE
 *
typ
;

1005 
magic
) {

1006 
DB_BTREEMAGIC
:

1007 *
typ
 = 
DB_BTREE
;

1009 
DB_HASHMAGIC
:

1010 *
typ
 = 
DB_HASH
;

1012 
DB_QAMMAGIC
:

1013 *
typ
 = 
DB_QUEUE
;

1018 *
typ
 = 
DB_UNKNOWN
;

1020 
	}
}

1030 
	$__db_vrfy_comm
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

1031 
DB
 *
dbp
;

1032 
VRFY_DBINFO
 *
vdp
;

1033 
PAGE
 *
h
;

1034 
db_pgno_t
 
pgno
;

1035 
u_t32_t
 
ags
;

1037 
DB_ENV
 *
dbv
;

1038 
VRFY_PAGEINFO
 *
p
;

1039 
t
, 
t_t
;

1040 
u_t8_t
 *
p
;

1042 
dbv
 = 
dbp
->dbenv;

1044 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

1045  (
t
);

1047 
p
->
pgno
 =gno;

1048 
	`F_CLR
(
p
, 
VRFY_IS_ALLZEROES
);

1057 i(
pgno
 !0 && 
	`PGNO
(
h
) == 0) {

1058 
	`F_SET
(
p
, 
VRFY_IS_ALLZEROES
);

1059 
p
 = (
u_t8_t
 *)
h
; < (u_t8_*)h + 
dbp
->
pgsize
;++)

1060 i(*
p
 != 0) {

1061 
	`F_CLR
(
p
, 
VRFY_IS_ALLZEROES
);

1070 
p
->
ty
 = 
P_HASH
;

1071 
t
 = 0;

1072 
r
;

1075 i(
	`PGNO
(
h
!
pgno
) {

1076 
	`EPRINT
((
dbv
, "Page %lu: badageumber %lu",

1077 (
u_lg
)
pgno
, (u_lg)
h
->pgno));

1078 
t
 = 
DB_VERIFY_BAD
;

1081 i(!
	`__db_is_vid_gy
(
h
->
ty
)) {

1082 
	`EPRINT
((
dbv
, "Page %lu: badageype %lu",

1083 (
u_lg
)
pgno
, (u_lg)
h
->
ty
));

1084 
t
 = 
DB_VERIFY_BAD
;

1086 
p
->
ty
 = 
h
->type;

1088 
r
: i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

1089 
t
 = 
t_t
;

1091  (
t
);

1092 
	}
}

1100 
	$__db_vrfy_vid
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

1101 
DB
 *
dbp
;

1102 
VRFY_DBINFO
 *
vdp
;

1103 
PAGE
 *
h
;

1104 
db_pgno_t
 
pgno
;

1105 
u_t32_t
 
ags
;

1107 
DB_ENV
 *
dbv
;

1108 
VRFY_PAGEINFO
 *
p
;

1109 
t
, 
t_t
;

1111 
dbv
 = 
dbp
->dbenv;

1113 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

1114  (
t
);

1115 
p
->
xt_pgno
 =->
ev_pgno
 = 0;

1117 i(!
	`IS_VALID_PGNO
(
	`NEXT_PGNO
(
h
))) {

1118 
	`EPRINT
((
dbv
, "Page %lu: invalidext_pgno %lu",

1119 (
u_lg
)
pgno
, (u_lg)
	`NEXT_PGNO
(
h
)));

1120 
t
 = 
DB_VERIFY_BAD
;

1122 
p
->
xt_pgno
 = 
	`NEXT_PGNO
(
h
);

1124 i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

1125 
t
 = 
t_t
;

1126  (
t
);

1127 
	}
}

1143 
	$__db_vrfy_dage
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

1144 
DB
 *
dbp
;

1145 
VRFY_DBINFO
 *
vdp
;

1146 
PAGE
 *
h
;

1147 
db_pgno_t
 
pgno
;

1148 
u_t32_t
 
ags
;

1150 
DB_ENV
 *
dbv
;

1151 
VRFY_PAGEINFO
 *
p
;

1152 
u_t32_t
 
smˡ_y
;

1153 
isbad
, 
t
, 
t_t
;

1155 
dbv
 = 
dbp
->dbenv;

1157 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

1158  (
t
);

1159 
isbad
 = 0;

1169 i(
	`TYPE
(
h
!
P_IBTREE
 && TYPE(h!
P_IRECNO
) {

1170 i(!
	`IS_VALID_PGNO
(
	`PREV_PGNO
(
h
)|| PREV_PGNO(h=
p
->
pgno
) {

1171 
isbad
 = 1;

1172 
	`EPRINT
((
dbv
, "Page %lu: invalidrev_pgno %lu",

1173 (
u_lg
)
p
->
pgno
, (u_lg)
	`PREV_PGNO
(
h
)));

1175 i(!
	`IS_VALID_PGNO
(
	`NEXT_PGNO
(
h
)|| NEXT_PGNO(h=
p
->
pgno
) {

1176 
isbad
 = 1;

1177 
	`EPRINT
((
dbv
, "Page %lu: invalidext_pgno %lu",

1178 (
u_lg
)
p
->
pgno
, (u_lg)
	`NEXT_PGNO
(
h
)));

1180 
p
->
ev_pgno
 = 
	`PREV_PGNO
(
h
);

1181 
p
->
xt_pgno
 = 
	`NEXT_PGNO
(
h
);

1191 
	`TYPE
(
h
)) {

1192 
P_HASH_UNSORTED
:

1193 
P_HASH
:

1194 
smˡ_y
 = 
	`HKEYDATA_PSIZE
(0);

1196 
P_IBTREE
:

1197 
smˡ_y
 = 
	`BINTERNAL_PSIZE
(0);

1199 
P_IRECNO
:

1200 
smˡ_y
 = 
RINTERNAL_PSIZE
;

1202 
P_LBTREE
:

1203 
P_LDUP
:

1204 
P_LRECNO
:

1205 
smˡ_y
 = 
	`BKEYDATA_PSIZE
(0);

1208 
smˡ_y
 = 0;

1211 i(
smˡ_y
 * 
	`NUM_ENT
(
h
> 
dbp
->
pgsize
) {

1212 
isbad
 = 1;

1213 
	`EPRINT
((
dbv
, "Page %lu:oo manyntries: %lu",

1214 (
u_lg
)
pgno
, (u_lg)
	`NUM_ENT
(
h
)));

1217 i(
	`TYPE
(
h
!
P_OVERFLOW
)

1218 
p
->
s
 = 
	`NUM_ENT
(
h
);

1225 
	`TYPE
(
h
)) {

1226 
P_IBTREE
:

1227 
P_IRECNO
:

1228 i(
	`LEVEL
(
h
< 
LEAFLEVEL
 + 1) {

1229 
isbad
 = 1;

1230 
	`EPRINT
((
dbv
, "Page %lu: bad btreeevel %lu",

1231 (
u_lg
)
pgno
, (u_lg)
	`LEVEL
(
h
)));

1233 
p
->
bt_v
 = 
	`LEVEL
(
h
);

1235 
P_LBTREE
:

1236 
P_LDUP
:

1237 
P_LRECNO
:

1238 i(
	`LEVEL
(
h
!
LEAFLEVEL
) {

1239 
isbad
 = 1;

1240 
	`EPRINT
((
dbv
,

1242 (
u_lg
)
pgno
, (u_lg)
	`LEVEL
(
h
)));

1246 i(
	`LEVEL
(
h
) != 0) {

1247 
isbad
 = 1;

1248 
	`EPRINT
((
dbv
,

1250 (
u_lg
)
pgno
, (u_lg)
	`LEVEL
(
h
)));

1263 i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

1264 
t
 = 
t_t
;

1266  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

1267 
	}
}

1278 
	$__db_vrfy_ma
(
dbp
, 
vdp
, 
ma
, 
pgno
, 
ags
)

1279 
DB
 *
dbp
;

1280 
VRFY_DBINFO
 *
vdp
;

1281 
DBMETA
 *
ma
;

1282 
db_pgno_t
 
pgno
;

1283 
u_t32_t
 
ags
;

1285 
DB_ENV
 *
dbv
;

1286 
DBTYPE
 
dbty
, 
magty
;

1287 
VRFY_PAGEINFO
 *
p
;

1288 
isbad
, 
t
, 
t_t
;

1290 
isbad
 = 0;

1291 
dbv
 = 
dbp
->dbenv;

1293 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

1294  (
t
);

1297 
ma
->
ty
) {

1298 
P_BTREEMETA
:

1299 
dbty
 = 
DB_BTREE
;

1301 
P_HASHMETA
:

1302 
dbty
 = 
DB_HASH
;

1304 
P_QAMMETA
:

1305 
dbty
 = 
DB_QUEUE
;

1308 
t
 = 
	`__db_unknown_th
(
dbv
, "__db_vrfy_meta");

1309 
r
;

1313 i(!
	`__db_is_vid_magio
(
ma
->
magic
, &
magty
)) {

1314 
isbad
 = 1;

1315 
	`EPRINT
((
dbv
,

1316 "Pag%lu: invid maginumb", (
u_lg
)
pgno
));

1318 i(
magty
 !
dbty
) {

1319 
isbad
 = 1;

1320 
	`EPRINT
((
dbv
,

1322 (
u_lg
)
pgno
));

1326 i((
dbty
 =
DB_BTREE
 &&

1327 (
ma
->
vsi
 > 
DB_BTREEVERSION
 ||

1328 
ma
->
vsi
 < 
DB_BTREEOLDVER
)) ||

1329 (
dbty
 =
DB_HASH
 &&

1330 (
ma
->
vsi
 > 
DB_HASHVERSION
 ||

1331 
ma
->
vsi
 < 
DB_HASHOLDVER
)) ||

1332 (
dbty
 =
DB_QUEUE
 &&

1333 (
ma
->
vsi
 > 
DB_QAMVERSION
 ||

1334 
ma
->
vsi
 < 
DB_QAMOLDVER
))) {

1335 
isbad
 = 1;

1336 
	`EPRINT
((
dbv
,

1338 (
u_lg
)
pgno
, (u_lg)
ma
->
vsi
));

1342 i(
ma
->
gesize
 !
dbp
->
pgsize
) {

1343 
isbad
 = 1;

1344 
	`EPRINT
((
dbv
, "Page %lu: invalidagesize %lu",

1345 (
u_lg
)
pgno
, (u_lg)
ma
->
gesize
));

1349 i(
ma
->
maags
 != 0) {

1350 i(
ma
->
maags
 =
DBMETA_CHKSUM
)

1351 
	`F_SET
(
p
, 
VRFY_HAS_CHKSUM
);

1353 
isbad
 = 1;

1354 
	`EPRINT
((
dbv
,

1356 (
u_lg
)
PGNO_BASE_MD
, (u_lg)
ma
->
maags
));

1366 i(
pgno
 !
PGNO_BASE_MD
 && 
ma
->

 !
PGNO_INVALID
) {

1367 
isbad
 = 1;

1368 
	`EPRINT
((
dbv
,

1370 (
u_lg
)
pgno
));

1374 i(
ma
->

 !
PGNO_INVALID
 && 
	`IS_VALID_PGNO
(meta->free))

1375 
p
->

 = 
ma
->free;

1376 i(!
	`IS_VALID_PGNO
(
ma
->

)) {

1377 
isbad
 = 1;

1378 
	`EPRINT
((
dbv
,

1380 (
u_lg
)
pgno
, (u_lg)
ma
->

));

1383 i(
pgno
 =
PGNO_BASE_MD
 && 
ma
->
ϡ_pgno
 !
vdp
->last_pgno) {

1384 
isbad
 = 1;

1385 
	`EPRINT
((
dbv
,

1387 (
u_lg
)
pgno
,

1388 (
u_lg
)
ma
->
ϡ_pgno
, (u_lg)
vdp
->last_pgno));

1395 
	`F_CLR
(
p
, 
VRFY_INCOMPLETE
);

1397 
r
: i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

1398 
t
 = 
t_t
;

1400  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

1401 
	}
}

1409 
	$__db_vrfy_li
(
dbp
, 
vdp
, 
ma
, 
ags
)

1410 
DB
 *
dbp
;

1411 
VRFY_DBINFO
 *
vdp
;

1412 
db_pgno_t
 
ma
;

1413 
u_t32_t
 
ags
;

1415 
DB
 *
pgt
;

1416 
DB_ENV
 *
dbv
;

1417 
VRFY_PAGEINFO
 *
p
;

1418 
db_pgno_t
 
cur_pgno
, 
xt_pgno
;

1419 
p
, 
t
, 
t_t
;

1421 
dbv
 = 
dbp
->dbenv;

1422 
pgt
 = 
vdp
->pgset;

1423 
	`DB_ASSERT
(
dbv
, 
pgt
 !
NULL
);

1425 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
ma
, &
p
)) != 0)

1426  (
t
);

1427 
xt_pgno
 = 
p
->

;

1428 
xt_pgno
 !
PGNO_INVALID
;ext_pgn
p
->next_pgno) {

1429 
cur_pgno
 = 
p
->
pgno
;

1430 i((
t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0)

1431  (
t
);

1434 i(!
	`IS_VALID_PGNO
(
xt_pgno
)) {

1435 
	`EPRINT
((
dbv
,

1437 (
u_lg
)
cur_pgno
, (u_lg)
xt_pgno
));

1438  (
DB_VERIFY_BAD
);

1442 i((
t
 = 
	`__db_vrfy_pgt_g
(
pgt
, 
xt_pgno
, &
p
)) != 0)

1443  (
t
);

1444 i(
p
 != 0) {

1445 
	`EPRINT
((
dbv
,

1447 (
u_lg
)
cur_pgno
, (u_lg)
xt_pgno
));

1448  (
DB_VERIFY_BAD
);

1450 i((
t
 = 
	`__db_vrfy_pgt_c
(
pgt
, 
xt_pgno
)) != 0)

1451  (
t
);

1453 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
xt_pgno
, &
p
)) != 0)

1454  (
t
);

1456 i(
p
->
ty
 !
P_INVALID
) {

1457 
	`EPRINT
((
dbv
,

1459 (
u_lg
)
cur_pgno
, (u_lg)
xt_pgno
));

1460 
t
 = 
DB_VERIFY_BAD
;

1465 i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0)

1466 
t
 = 
t_t
;

1467  (
t
);

1468 
	}
}

1476 
	$__db_vrfy_subdbs
(
dbp
, 
vdp
, 
dbme
, 
ags
)

1477 
DB
 *
dbp
;

1478 
VRFY_DBINFO
 *
vdp
;

1479 cڡ *
dbme
;

1480 
u_t32_t
 
ags
;

1482 
DB
 *
mdbp
;

1483 
DBC
 *
dbc
;

1484 
DBT
 
key
, 
da
;

1485 
DB_ENV
 *
dbv
;

1486 
VRFY_PAGEINFO
 *
p
;

1487 
db_pgno_t
 
ma_pgno
;

1488 
t
, 
t_t
, 
isbad
;

1489 
u_t8_t
 
ty
;

1491 
isbad
 = 0;

1492 
dbc
 = 
NULL
;

1493 
dbv
 = 
dbp
->dbenv;

1495 i((
t
 =

1496 
	`__db_ma_ݒ
(
dbp
, 
NULL
, 
dbme
, 
DB_RDONLY
, 0, &
mdbp
)) != 0)

1497  (
t
);

1499 i((
t
 = 
	`__db_curs_t
(
mdbp
,

1500 
NULL
, 
DB_BTREE
, 
PGNO_INVALID
, 0, 
DB_LOCK_INVALIDID
, &
dbc
)) != 0)

1501 
r
;

1503 
	`memt
(&
key
, 0, (key));

1504 
	`memt
(&
da
, 0, (data));

1505 (
t
 = 
	`__dbc_g
(
dbc
, &
key
, &
da
, 
DB_NEXT
)) == 0) {

1506 i(
da
.
size
 !(
db_pgno_t
)) {

1507 
	`EPRINT
((
dbv
,

1509 
isbad
 = 1;

1510 
r
;

1512 
	`memy
(&
ma_pgno
, 
da
.da, da.
size
);

1517 
	`DB_NTOHL
(&
ma_pgno
);

1518 i(
ma_pgno
 =
PGNO_INVALID
 || ma_pgn> 
vdp
->
ϡ_pgno
) {

1519 
	`EPRINT
((
dbv
,

1521 (
u_lg
)
ma_pgno
));

1522 
isbad
 = 1;

1523 
r
;

1525 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
ma_pgno
, &
p
)) != 0)

1526 
r
;

1527 
ty
 = 
p
->type;

1528 i((
t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0)

1529 
r
;

1530 
ty
) {

1531 
P_BTREEMETA
:

1532 i((
t
 = 
	`__bam_vrfy_ruu
(

1533 
dbp
, 
vdp
, 
ma_pgno
, 
ags
)) != 0) {

1534 i(
t
 =
DB_VERIFY_BAD
)

1535 
isbad
 = 1;

1537 
r
;

1540 
P_HASHMETA
:

1541 i((
t
 = 
	`__ham_vrfy_ruu
(

1542 
dbp
, 
vdp
, 
ma_pgno
, 
ags
)) != 0) {

1543 i(
t
 =
DB_VERIFY_BAD
)

1544 
isbad
 = 1;

1546 
r
;

1549 
P_QAMMETA
:

1551 
	`EPRINT
((
dbv
,

1553 (
u_lg
)
ma_pgno
, (u_lg)
ty
));

1554 
t
 = 
DB_VERIFY_BAD
;

1555 
r
;

1559 i(
t
 =
DB_NOTFOUND
)

1560 
t
 = 0;

1562 
r
: i(
dbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc)!0 && 
t
 == 0)

1563 
t
 = 
t_t
;

1565 i((
t_t
 = 
	`__db_o
(
mdbp
, 
NULL
, 0)!0 && 
t
 == 0)

1566 
t
 = 
t_t
;

1568  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

1569 
	}
}

1579 
	$__db_vrfy_ru_edback
(
dbp
, 
vdp
)

1580 
DB
 *
dbp
;

1581 
VRFY_DBINFO
 *
vdp
;

1583 
ogss
;

1585 i(
dbp
->
db_edback
 =
NULL
)

1588 i(
vdp
->
pgs_mag
 > 0)

1589 
vdp
->
pgs_mag
--;

1592 
ogss
 = 100 - ()(
vdp
->
pgs_mag
 * 50 / (vdp->
ϡ_pgno
 + 1));

1593 
dbp
->
	`db_edback
(dbp, 
DB_VERIFY
, 
ogss
 == 100 ? 99 :rogress);

1594 
	}
}

1601 
	$__db_vrfy_dchkly
(
dbp
, 
vdp
, 
me
, 
subdb
, 
ags
)

1602 
DB
 *
dbp
;

1603 
VRFY_DBINFO
 *
vdp
;

1604 cڡ *
me
, *
subdb
;

1605 
u_t32_t
 
ags
;

1607 
BTMETA
 *
btma
;

1608 
DB
 *
mdbp
, *
pgt
;

1609 
DBC
 *
pgsc
;

1610 
DBT
 
key
, 
da
;

1611 
DB_ENV
 *
dbv
;

1612 
DB_MPOOLFILE
 *
mpf
;

1613 
HASH
 *
h_
;

1614 
HMETA
 *
hma
;

1615 
PAGE
 *
h
, *
cupg
;

1616 
db_pgno_t
 
ma_pgno
, 
p
, 
pgno
;

1617 
u_t32_t
 
buck
;

1618 
t_t
, 
t
;

1620 
pgt
 = 
NULL
;

1621 
pgsc
 = 
NULL
;

1622 
dbv
 = 
dbp
->dbenv;

1623 
mpf
 = 
dbp
->mpf;

1624 
cupg
 = 
h
 = 
NULL
;

1626 
	`LF_CLR
(
DB_NOORDERCHK
);

1629 i((
t
 = 
	`__db_ma_ݒ
(
dbp
, 
NULL
, 
me
, 
DB_RDONLY
, 0, &
mdbp
)) != 0)

1630 
r
;

1632 
	`DB_INIT_DBT
(
key
, 
subdb
, 
	`
(subdb));

1633 
	`memt
(&
da
, 0, (data));

1634 i((
t
 = 
	`__db_g
(
mdbp
, 
NULL
, &
key
, &
da
, 0)) != 0) {

1635 i(
t
 =
DB_NOTFOUND
)

1636 
t
 = 
ENOENT
;

1637 
r
;

1640 i(
da
.
size
 !(
db_pgno_t
)) {

1641 
	`EPRINT
((
dbv
, "Subdatabasentry of invalid size"));

1642 
t
 = 
DB_VERIFY_BAD
;

1643 
r
;

1646 
	`memy
(&
ma_pgno
, 
da
.da, da.
size
);

1652 
	`DB_NTOHL
(&
ma_pgno
);

1654 i((
t
 = 
	`__memp_fg
(
mpf
, &
ma_pgno
, 
NULL
, 0, &
h
)) != 0)

1655 
r
;

1657 i((
t
 = 
	`__db_vrfy_pgt
(
dbv
, 
dbp
->
pgsize
, &
pgt
)) != 0)

1658 
r
;

1660 
	`TYPE
(
h
)) {

1661 
P_BTREEMETA
:

1662 
btma
 = (
BTMETA
 *)
h
;

1663 i(
	`F_ISSET
(&
btma
->
dbma
, 
BTM_RECNO
)) {

1665 
t
 = 0;

1666 
r
;

1668 i((
t
 =

1669 
	`__db_ma2pgt
(
dbp
, 
vdp
, 
ma_pgno
, 
ags
, 
pgt
)) != 0)

1670 
r
;

1671 i((
t
 = 
	`__db_curs_t
(
pgt
, 
NULL
, 
dbp
->
ty
,

1672 
PGNO_INVALID
, 0, 
DB_LOCK_INVALIDID
, &
pgsc
)) != 0)

1673 
r
;

1674 (
t
 = 
	`__db_vrfy_pgt_xt
(
pgsc
, &
p
)) == 0) {

1675 i((
t
 = 
	`__memp_fg
(
mpf
, &
p
, 
NULL
, 0, &
cupg
)) != 0)

1676 
r
;

1677 i((
t
 = 
	`__bam_vrfy_emd
(
dbp
,

1678 
NULL
, 
cupg
, 
p
, 
	`NUM_ENT
(currpg), 1,

1679 
	`F_ISSET
(&
btma
->
dbma
, 
BTM_DUP
), 
ags
)) != 0)

1680 
r
;

1681 i((
t
 =

1682 
	`__memp_ut
(
mpf
, 
cupg
, 
dbp
->
iܙy
)) != 0)

1683 
r
;

1684 
cupg
 = 
NULL
;

1692 i(
t
 =
DB_NOTFOUND
)

1693 
t
 = 0;

1695 
P_HASHMETA
:

1696 
hma
 = (
HMETA
 *)
h
;

1697 
h_
 = (
HASH
 *)
dbp
->h_internal;

1701 i(
h_
 =
NULL
) {

1702 
	`EPRINT
((
dbv
,

1704 (
u_lg
)
ma_pgno
));

1705 
t
 = 
DB_VERIFY_BAD
;

1706 
r
;

1708 i(
h_
->
h_hash
 =
NULL
)

1709 
h_
->
h_hash
 = 
hma
->
dbma
.
vsi
 < 5

1710 ? 
__ham_func4
 : 
__ham_func5
;

1711 i(
hma
->
h_chkey
 !=

1712 
h_
->
	`h_hash
(
dbp
, 
CHARKEY
, (CHARKEY))) {

1713 
	`EPRINT
((
dbv
,

1715 (
u_lg
)
ma_pgno
));

1716 
t
 = 
DB_VERIFY_BAD
;

1717 
r
;

1724 
buck
 = 0; buck <
hma
->
max_buck
; bucket++) {

1725 
pgno
 = 
	`BS_TO_PAGE
(
buck
, 
hma
->
es
);

1726 
pgno
 !
PGNO_INVALID
) {

1727 i((
t
 = 
	`__memp_fg
(
mpf
,

1728 &
pgno
, 
NULL
, 0, &
cupg
)) != 0)

1729 
r
;

1730 i((
t
 = 
	`__ham_vrfy_hashg
(
dbp
,

1731 
	`NUM_ENT
(
cupg
), 
hma
, 
buck
, 
pgno
,

1732 
ags
, 
h_
->
h_hash
)) != 0)

1733 
r
;

1734 
pgno
 = 
	`NEXT_PGNO
(
cupg
);

1735 i((
t
 = 
	`__memp_ut
(
mpf
,

1736 
cupg
, 
dbp
->
iܙy
)) != 0)

1737 
r
;

1738 
cupg
 = 
NULL
;

1743 
	`EPRINT
((
dbv
, "Page %lu: database metapage of badype %lu",

1744 (
u_lg
)
ma_pgno
, (u_lg)
	`TYPE
(
h
)));

1745 
t
 = 
DB_VERIFY_BAD
;

1749 
r
: i(
pgsc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
gsc)!0 && 
t
 == 0)

1750 
t
 = 
t_t
;

1751 i(
pgt
 !
NULL
 &&

1752 (
t_t
 = 
	`__db_o
(
pgt
, 
NULL
, 0)!0 && 
t
 == 0)

1753 
t
 = 
t_t
;

1754 i(
h
 !
NULL
 && (
t_t
 = 
	`__memp_ut
(
mpf
, h, 
dbp
->
iܙy
)) != 0)

1755 
t
 = 
t_t
;

1756 i(
cupg
 !
NULL
 &&

1757 (
t_t
 = 
	`__memp_ut
(
mpf
, 
cupg
, 
dbp
->
iܙy
)) != 0)

1758 
t
 = 
t_t
;

1759 i((
t_t
 = 
	`__db_o
(
mdbp
, 
NULL
, 0)) != 0)

1760 
t
 = 
t_t
;

1761  (
t
);

1762 
	}
}

1773 
	$__db_lvage
(
dbp
, 
vdp
, 
pgno
, 
h
, 
hd
, 
back
, 
ags
)

1774 
DB
 *
dbp
;

1775 
VRFY_DBINFO
 *
vdp
;

1776 
db_pgno_t
 
pgno
;

1777 
PAGE
 *
h
;

1778 *
hd
;

1779 (*
back

	`__P
((*, const *));

1780 
u_t32_t
 
ags
;

1782 
DB_ENV
 *
dbv
;

1783 
VRFY_PAGEINFO
 *
p
;

1784 
keyag
, 
t
, 
t_t
;

1786 
dbv
 = 
dbp
->dbenv;

1787 
	`DB_ASSERT
(
dbv
, 
	`LF_ISSET
(
DB_SALVAGE
));

1796 
keyag
 = 0;

1799 i(
	`__db_lvage_isde
(
vdp
, 
pgno
))

1802 
	`TYPE
(
h
)) {

1803 
P_HASHMETA
:

1804 
t
 = 
	`__ham_vrfy_ma
(
dbp
, 
vdp
, (
HMETA
 *)
h
, 
pgno
, 
ags
);

1806 
P_BTREEMETA
:

1807 
t
 = 
	`__bam_vrfy_ma
(
dbp
, 
vdp
, (
BTMETA
 *)
h
, 
pgno
, 
ags
);

1809 
P_QAMMETA
:

1810 
keyag
 = 1;

1811 
t
 = 
	`__qam_vrfy_ma
(
dbp
, 
vdp
, (
QMETA
 *)
h
, 
pgno
, 
ags
);

1813 
P_HASH_UNSORTED
:

1814 
P_HASH
:

1815  (
	`__ham_lvage
(

1816 
dbp
, 
vdp
, 
pgno
, 
h
, 
hd
, 
back
, 
ags
));

1817 
P_LBTREE
:

1818  (
	`__bam_lvage
(
dbp
,

1819 
vdp
, 
pgno
, 
P_LBTREE
, 
h
, 
hd
, 
back
, 
NULL
, 
ags
));

1820 
P_LDUP
:

1821  (
	`__db_lvage_mkeded
(
vdp
, 
pgno
, 
SALVAGE_LDUP
));

1822 
P_OVERFLOW
:

1823  (
	`__db_lvage_mkeded
(
vdp
, 
pgno
, 
SALVAGE_OVERFLOW
));

1824 
P_LRECNO
:

1837  (
	`__db_lvage_mkeded
(
vdp
, 
pgno
, 
SALVAGE_LRECNO
));

1838 
P_QAMDATA
:

1839  (
	`__qam_lvage
(
dbp
,

1840 
vdp
, 
pgno
, 
h
, 
hd
, 
back
, 
ags
));

1841 
P_IBTREE
:

1842 
P_INVALID
:

1843 
P_IRECNO
:

1844 
__P_DUPLICATE
:

1852 i(
t
 != 0)

1853  (
t
);

1862 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

1863  (
t
);

1864 i(!
	`F_ISSET
(
p
, 
VRFY_HAS_SUBDBS
))

1865 
t
 = 
	`__db_hd
(

1866 
dbp
, 
NULL
, 0, 
keyag
, 
hd
, 
back
, 
vdp
, 
pgno
);

1867 i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

1868 
t
 = 
t_t
;

1869  (
t
);

1870 
	}
}

1878 
	$__db_lvage_unknowns
(
dbp
, 
vdp
, 
hd
, 
back
, 
ags
)

1879 
DB
 *
dbp
;

1880 
VRFY_DBINFO
 *
vdp
;

1881 *
hd
;

1882 (*
back

	`__P
((*, const *));

1883 
u_t32_t
 
ags
;

1885 
DBC
 *
dbc
;

1886 
DBT
 
unkdbt
, 
key
, *
dbt
;

1887 
DB_ENV
 *
dbv
;

1888 
DB_MPOOLFILE
 *
mpf
;

1889 
PAGE
 *
h
;

1890 
db_pgno_t
 
pgno
;

1891 
u_t32_t
 
pgty
;

1892 
t
, 
t_t
;

1893 *
ovbuf
;

1895 
dbc
 = 
NULL
;

1896 
dbv
 = 
dbp
->dbenv;

1897 
mpf
 = 
dbp
->mpf;

1899 
	`DB_INIT_DBT
(
unkdbt
, "UNKNOWN", ("UNKNOWN") - 1);

1901 i((
t
 = 
	`__os_mloc
(
dbv
, 
dbp
->
pgsize
, &
ovbuf
)) != 0)

1902  (
t
);

1909 (
t_t
 =

1910 
	`__db_lvage_gxt
(
vdp
, &
dbc
, &
pgno
, &
pgty
, 1)) == 0) {

1911 i((
t_t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0) {

1912 i(
t
 == 0)

1913 
t
 = 
t_t
;

1917 
dbt
 = 
NULL
;

1918 
pgty
) {

1919 
SALVAGE_LDUP
:

1920 
SALVAGE_LRECNODUP
:

1921 
dbt
 = &
unkdbt
;

1923 
SALVAGE_LBTREE
:

1924 
SALVAGE_LRECNO
:

1925 i((
t_t
 = 
	`__bam_lvage
(
dbp
, 
vdp
, 
pgno
, 
pgty
,

1926 
h
, 
hd
, 
back
, 
dbt
, 
ags
)!0 && 
t
 == 0)

1927 
t
 = 
t_t
;

1929 
SALVAGE_OVERFLOW
:

1930 
	`DB_ASSERT
(
dbv
, 0);

1932 
SALVAGE_HASH
:

1933 i((
t_t
 = 
	`__ham_lvage
(
dbp
, 
vdp
,

1934 
pgno
, 
h
, 
hd
, 
back
, 
ags
)!0 && 
t
 == 0)

1935 
t
 = 
t_t
;

1937 
SALVAGE_INVALID
:

1938 
SALVAGE_IGNORE
:

1944 
	`DB_ASSERT
(
dbv
, 0);

1947 i((
t_t
 =

1948 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

1949 
t
 = 
t_t
;

1953 i(
t_t
 =
DB_NOTFOUND
)

1954 
t_t
 = 0;

1955 i(
t_t
 !0 && 
t
 == 0)

1956 
t
 = 
t_t
;

1959 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

1960 
t
 = 
t_t
;

1961 
dbc
 = 
NULL
;

1964 (
t_t
 =

1965 
	`__db_lvage_gxt
(
vdp
, &
dbc
, &
pgno
, &
pgty
, 0)) == 0) {

1966 i((
t_t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0) {

1967 i(
t
 == 0)

1968 
t
 = 
t_t
;

1972 
pgty
) {

1973 
SALVAGE_OVERFLOW
:

1979 i((
t_t
 = 
	`__db__goff
(
dbp
,

1980 
vdp
, 
pgno
, &
key
, &
ovbuf
, 
ags
)) != 0 ||

1981 ((
vdp
->
ty
 =
DB_BTREE
 || vdp->ty =
DB_HASH
) &&

1982 (
t_t
 = 
	`__db_vrfy_dbt
(&
unkdbt
,

1983 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0) ||

1984 (
t_t
 = 
	`__db_vrfy_dbt
(

1985 &
key
, 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0)

1986 i(
t
 == 0)

1987 
t
 = 
t_t
;

1990 
	`DB_ASSERT
(
dbv
, 0);

1993 i((
t_t
 =

1994 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

1995 
t
 = 
t_t
;

1999 i(
t_t
 =
DB_NOTFOUND
)

2000 
t_t
 = 0;

2001 i(
t_t
 !0 && 
t
 == 0)

2002 
t
 = 
t_t
;

2004 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

2005 
t
 = 
t_t
;

2007 
	`__os_
(
dbv
, 
ovbuf
);

2009  (
t
);

2010 
	}
}

2016 
	#INP_OFFSET
(
dbp
, 
h
, 
i
) \

2017 ((
db_dx_t
)((
u_t8_t
 *)((
	`P_INP
(
dbp
,(
h
))+ (
i
)- (u_t8_*)(h)))

	)

2034 
	$__db_vrfy_pem
(
dbp
, 
h
, 
pgno
, 
i
, 
is_b
, 
ags
, 
himkp
, 
off
)

2035 
DB
 *
dbp
;

2036 
PAGE
 *
h
;

2037 
db_pgno_t
 
pgno
;

2038 
u_t32_t
 
i
;

2039 
is_b
;

2040 
u_t32_t
 
ags
, *
himkp
, *
off
;

2042 
BKEYDATA
 *
bk
;

2043 
DB_ENV
 *
dbv
;

2044 
db_dx_t
 *
p
, 
offt
, 
n
;

2046 
dbv
 = 
dbp
->dbenv;

2048 
	`DB_ASSERT
(
dbv
, 
himkp
 !
NULL
);

2049 
p
 = 
	`P_INP
(
dbp
, 
h
);

2056 i(
p
 + 
i
 >(
db_dx_t
 *)((
u_t8_t
 *)
h
 + *
himkp
)) {

2058 
	`EPRINT
((
dbv
, "Page %lu:ntriesisting %lu overlaps data",

2059 (
u_lg
)
pgno
, (u_lg)
i
));

2060  (
DB_VERIFY_FATAL
);

2063 
offt
 = 
p
[
i
];

2069 i(
offt
 <
	`INP_OFFSET
(
dbp
, 
h
, 
i
|| off> dbp->
pgsize
) {

2070 
	`EPRINT
((
dbv
, "Page %lu: bad offset %lutage index %lu",

2071 (
u_lg
)
pgno
, (u_lg)
offt
, (u_lg)
i
));

2072  (
DB_VERIFY_BAD
);

2076 i(
offt
 < *
himkp
)

2077 *
himkp
 = 
offt
;

2079 i(
is_b
) {

2084 i(
offt
 !
	`DB_ALIGN
(offt, (
u_t32_t
))) {

2085 
	`EPRINT
((
dbv
,

2087 (
u_lg
)
pgno
, (u_lg)
offt
, (u_lg)
i
));

2088  (
DB_VERIFY_BAD
);

2094 
bk
 = 
	`GET_BKEYDATA
(
dbp
, 
h
, 
i
);

2103 
	`B_TYPE
(
bk
->
ty
)) {

2104 
B_KEYDATA
:

2105 
n
 = 
bk
->len;

2107 
B_DUPLICATE
:

2108 
B_OVERFLOW
:

2109 
n
 = 
BOVERFLOW_SIZE
;

2112 
	`EPRINT
((
dbv
,

2114 (
u_lg
)
pgno
, (u_lg)
i
));

2115  (
DB_VERIFY_BAD
);

2118 i((
size_t
)(
offt
 + 
n
> 
dbp
->
pgsize
) {

2119 
	`EPRINT
((
dbv
,

2121 (
u_lg
)
pgno
, (u_lg)
i
));

2122  (
DB_VERIFY_BAD
);

2126 i(
off
 !
NULL
)

2127 *
off
 = 
offt
;

2129 
	}
}

2141 
	$__db_vrfy_duy
(
dbp
, 
vdp
, 
pgno
, 
ags
)

2142 
DB
 *
dbp
;

2143 
VRFY_DBINFO
 *
vdp
;

2144 
db_pgno_t
 
pgno
;

2145 
u_t32_t
 
ags
;

2147 
DB_ENV
 *
dbv
;

2148 
VRFY_PAGEINFO
 *
p
;

2149 
t
, 
isbad
;

2151 
dbv
 = 
dbp
->dbenv;

2152 
isbad
 = 0;

2154 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

2155  (
t
);

2157 
p
->
ty
) {

2158 
P_IBTREE
:

2159 
P_LDUP
:

2160 i(!
	`LF_ISSET
(
ST_DUPSORT
)) {

2161 
	`EPRINT
((
dbv
,

2163 (
u_lg
)
pgno
));

2164 
isbad
 = 1;

2167 
P_IRECNO
:

2168 
P_LRECNO
:

2169 i(
	`LF_ISSET
(
ST_DUPSORT
)) {

2170 
	`EPRINT
((
dbv
,

2172 (
u_lg
)
pgno
));

2173 
isbad
 = 1;

2182 i(
	`F_ISSET
(
p
, 
VRFY_IS_ALLZEROES
))

2183 
	`ZEROPG_ERR_PRINT
(
dbv
, 
pgno
, "duplicateage");

2185 
	`EPRINT
((
dbv
,

2187 (
u_lg
)
pgno
, (u_lg)
p
->
ty
));

2188 
isbad
 = 1;

2192 i((
t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0)

2193  (
t
);

2194  (
isbad
 =1 ? 
DB_VERIFY_BAD
 : 0);

2195 
	}
}

2221 
	$__db_lvage_due
(
dbp
, 
vdp
, 
pgno
, 
key
, 
hd
, 
back
, 
ags
)

2222 
DB
 *
dbp
;

2223 
VRFY_DBINFO
 *
vdp
;

2224 
db_pgno_t
 
pgno
;

2225 
DBT
 *
key
;

2226 *
hd
;

2227 (*
back

	`__P
((*, const *));

2228 
u_t32_t
 
ags
;

2230 
DB_MPOOLFILE
 *
mpf
;

2231 
PAGE
 *
h
;

2232 
t
, 
t_t
;

2234 
mpf
 = 
dbp
->mpf;

2236 i(
pgno
 =
PGNO_INVALID
 || !
	`IS_VALID_PGNO
(pgno))

2237  (
DB_VERIFY_BAD
);

2240 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0)

2241  (
t
);

2243 
	`TYPE
(
h
)) {

2244 
P_IBTREE
:

2245 
P_IRECNO
:

2246 i((
t
 = 
	`__db_vrfy_comm
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)) != 0)

2247 
r
;

2248 i((
t
 = 
	`__bam_vrfy
(
dbp
,

2249 
vdp
, 
h
, 
pgno
, 
ags
 | 
DB_NOORDERCHK
)) != 0 ||

2250 (
t
 = 
	`__db_lvage_mkde
(
vdp
, 
pgno
)) != 0)

2251 
r
;

2255 i((
t
 = 
	`__bam_lvage_wkdupt
(
dbp
, 
vdp
, 
h
, 
key
,

2256 
hd
, 
back
, 
ags
)) != 0)

2257 
r
;

2259 
P_LRECNO
:

2260 
P_LDUP
:

2261 i((
t
 = 
	`__bam_lvage
(
dbp
,

2262 
vdp
, 
pgno
, 
	`TYPE
(
h
), h, 
hd
, 
back
, 
key
, 
ags
)) != 0)

2263 
r
;

2266 
t
 = 
DB_VERIFY_BAD
;

2267 
r
;

2270 
r
: i((
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

2271 
t
 = 
t_t
;

2272  (
t
);

2273 
	}
}

2281 
	$__db_lvage_subdbs
(
dbp
, 
vdp
, 
hd
, 
back
, 
ags
, 
hassub
)

2282 
DB
 *
dbp
;

2283 
VRFY_DBINFO
 *
vdp
;

2284 *
hd
;

2285 (*
back

	`__P
((*, const *));

2286 
u_t32_t
 
ags
;

2287 *
hassub
;

2289 
DB
 *
pgt
;

2290 
DBC
 *
pgsc
;

2291 
DB_ENV
 *
dbv
;

2292 
DB_MPOOLFILE
 *
mpf
;

2293 
PAGE
 *
h
;

2294 
VRFY_PAGEINFO
 *
p
;

2295 
db_pgno_t
 
p
, 
ma_pgno
;

2296 
t
, 
t_t
;

2298 *
hassub
 = 0;

2300 
dbv
 = 
dbp
->dbenv;

2301 
pgt
 = 
NULL
;

2302 
pgsc
 = 
NULL
;

2303 
mpf
 = 
dbp
->mpf;

2304 
h
 = 
NULL
;

2305 
p
 = 
NULL
;

2306 
t
 = 0;

2312 
ma_pgno
 = 
PGNO_BASE_MD
;

2313 i((
t_t
 = 
	`__memp_fg
(
mpf
, &
ma_pgno
, 
NULL
, 0, &
h
)) == 0 &&

2314 (
t_t
 = 
	`__db_vrfy_comm
(
dbp
, 
vdp
, 
h
, 
PGNO_BASE_MD
, 
ags
)) == 0 &&

2315 (
t_t
 = 
	`__db_lvage
(

2316 
dbp
, 
vdp
, 
PGNO_BASE_MD
, 
h
, 
hd
, 
back
, 
ags
)) == 0 &&

2317 (
t_t
 = 
	`__db_vrfy_ggefo
(
vdp
, 0, &
p
)) == 0)

2318 i(
	`F_ISSET
(
p
, 
VRFY_HAS_SUBDBS
))

2319 *
hassub
 = 1;

2320 i(
p
 !
NULL
 &&

2321 (
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

2322 
t
 = 
t_t
;

2323 i(
h
 !
NULL
) {

2324 i((
t_t
 =

2325 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

2326 
t
 = 
t_t
;

2327 
h
 = 
NULL
;

2329 i(
t
 !0 || *
hassub
 == 0)

2330  (
t
);

2339 i((
t
 = 
	`__db_vrfy_pgt
(
dbv
, 
dbp
->
pgsize
, &
pgt
)) != 0)

2340 
r
;

2341 i((
t
 = 
	`__db_ma2pgt
(
dbp
, 
vdp
, 
PGNO_BASE_MD
, 
ags
, 
pgt
)) != 0)

2342 
r
;

2343 i((
t
 = 
	`__db_curs
(
pgt
, 
NULL
, &
pgsc
, 0)) != 0)

2344 
r
;

2345 (
t_t
 = 
	`__db_vrfy_pgt_xt
(
pgsc
, &
p
)) == 0) {

2346 i((
t_t
 = 
	`__memp_fg
(
mpf
, &
p
, 
NULL
, 0, &
h
)) == 0 &&

2347 (
t_t
 = 
	`__db_vrfy_comm
(
dbp
, 
vdp
, 
h
, 
p
, 
ags
)) == 0 &&

2348 (
t_t
 =

2349 
	`__bam_vrfy
(
dbp
, 
vdp
, 
h
, 
p
, 
ags
 | 
DB_NOORDERCHK
)) == 0)

2350 
t_t
 = 
	`__db_lvage_subdbpg
(

2351 
dbp
, 
vdp
, 
h
, 
hd
, 
back
, 
ags
);

2352 i(
t_t
 !0 && 
t
 == 0)

2353 
t
 = 
t_t
;

2354 i(
h
 !
NULL
) {

2355 i((
t_t
 = 
	`__memp_ut
(
mpf
,

2356 
h
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

2357 
t
 = 
t_t
;

2358 
h
 = 
NULL
;

2362 i(
t_t
 !
DB_NOTFOUND
 && 
t
 == 0)

2363 
t
 = 
t_t
;

2365 
r
: i(
pgsc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
gsc)!0 && 
t
 == 0)

2366 
t
 = 
t_t
;

2367 i(
pgt
 !
NULL
 &&

2368 (
t_t
 = 
	`__db_o
(
pgt
, 
NULL
, 0)!0 && 
t
 ==0)

2369 
t
 = 
t_t
;

2370 i(
h
 !
NULL
 &&

2371 (
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

2372 
t
 = 
t_t
;

2373  (
t
);

2374 
	}
}

2382 
	$__db_lvage_subdbpg
(
dbp
, 
vdp
, 
ma
, 
hd
, 
back
, 
ags
)

2383 
DB
 *
dbp
;

2384 
VRFY_DBINFO
 *
vdp
;

2385 
PAGE
 *
ma
;

2386 *
hd
;

2387 (*
back

	`__P
((*, const *));

2388 
u_t32_t
 
ags
;

2390 
BKEYDATA
 *
bkkey
, *
bkda
;

2391 
BOVERFLOW
 *
bo
;

2392 
DB
 *
pgt
;

2393 
DBC
 *
pgsc
;

2394 
DBT
 
key
;

2395 
DB_ENV
 *
dbv
;

2396 
DB_MPOOLFILE
 *
mpf
;

2397 
PAGE
 *
subpg
;

2398 
db_dx_t
 
i
;

2399 
db_pgno_t
 
ma_pgno
, 
p
;

2400 
t
, 
r_t
, 
t_t
;

2401 *
subdbme
;

2403 
dbv
 = 
dbp
->dbenv;

2404 
mpf
 = 
dbp
->mpf;

2405 
t
 = 
r_t
 = 0;

2406 
subdbme
 = 
NULL
;

2408 i((
t
 = 
	`__db_vrfy_pgt
(
dbv
, 
dbp
->
pgsize
, &
pgt
)) != 0)

2409  (
t
);

2415 
i
 = 0; i < 
	`NUM_ENT
(
ma
); i +
P_INDX
) {

2416 
bkkey
 = 
	`GET_BKEYDATA
(
dbp
, 
ma
, 
i
);

2417 
bkda
 = 
	`GET_BKEYDATA
(
dbp
, 
ma
, 
i
 + 
O_INDX
);

2420 i(
	`B_TYPE
(
bkkey
->
ty
=
B_OVERFLOW
) {

2425 
bo
 = (
BOVERFLOW
 *)
bkkey
;

2426 i((
t
 = 
	`__db__goff
(
dbp
, 
vdp
,

2427 
bo
->
pgno
, &
key
, &
subdbme
, 
ags
)) != 0) {

2428 
r_t
 = 
DB_VERIFY_BAD
;

2433 i((
t
 = 
	`__os_loc
(
dbv
,

2434 
key
.
size
 + 1, &
subdbme
)) != 0)

2435 
r
;

2436 
subdbme
[
key
.
size
] = '\0';

2437 } i(
	`B_TYPE
(
bkkey
->
ty
=
B_KEYDATA
) {

2438 i((
t
 = 
	`__os_loc
(
dbv
,

2439 
bkkey
->
n
 + 1, &
subdbme
)) != 0)

2440 
r
;

2441 
	`memy
(
subdbme
, 
bkkey
->
da
, bkkey->
n
);

2442 
subdbme
[
bkkey
->
n
] = '\0';

2446 i(
bkda
->
n
 !(
db_pgno_t
)) {

2447 
r_t
 = 
DB_VERIFY_BAD
;

2450 
	`memy
(&
ma_pgno
,

2451 (
db_pgno_t
 *)
bkda
->
da
, (db_pgno_t));

2457 
	`DB_NTOHL
(&
ma_pgno
);

2460 i(!
	`IS_VALID_PGNO
(
ma_pgno
|| (
t
 =

2461 
	`__memp_fg
(
mpf
, &
ma_pgno
, 
NULL
, 0, &
subpg
)) != 0) {

2462 
r_t
 = 
t
;

2474 i((
t
 =

2475 
	`__db_vrfy_comm
(
dbp
, 
vdp
, 
subpg
, 
ma_pgno
, 
ags
)) != 0) {

2476 
r_t
 = 
t
;

2477 ()
	`__memp_ut
(
mpf
, 
subpg
, 
dbp
->
iܙy
);

2480 
	`TYPE
(
subpg
)) {

2481 
P_BTREEMETA
:

2482 i((
t
 = 
	`__bam_vrfy_ma
(
dbp
,

2483 
vdp
, (
BTMETA
 *)
subpg
, 
ma_pgno
, 
ags
)) != 0) {

2484 
r_t
 = 
t
;

2485 ()
	`__memp_ut
(
mpf
, 
subpg
, 
dbp
->
iܙy
);

2489 
P_HASHMETA
:

2490 i((
t
 = 
	`__ham_vrfy_ma
(
dbp
,

2491 
vdp
, (
HMETA
 *)
subpg
, 
ma_pgno
, 
ags
)) != 0) {

2492 
r_t
 = 
t
;

2493 ()
	`__memp_ut
(
mpf
, 
subpg
, 
dbp
->
iܙy
);

2499 
r_t
 = 
DB_VERIFY_BAD
;

2503 i((
t
 = 
	`__memp_ut
(
mpf
, 
subpg
, 
dbp
->
iܙy
)) != 0) {

2504 
r_t
 = 
t
;

2509 i((
t
 = 
	`__db_hd
(
dbp
,

2510 
subdbme
, 0, 0, 
hd
, 
back
, 
vdp
, 
ma_pgno
)) != 0)

2511 
r
;

2513 i((
t
 = 
	`__db_ma2pgt
(
dbp
, 
vdp
, 
ma_pgno
,

2514 
ags
, 
pgt
)) != 0) {

2515 
r_t
 = 
t
;

2519 i((
t
 = 
	`__db_curs
(
pgt
, 
NULL
, &
pgsc
, 0)) != 0)

2520 
r
;

2521 (
t
 = 
	`__db_vrfy_pgt_xt
(
pgsc
, &
p
)) == 0) {

2522 i((
t
 =

2523 
	`__memp_fg
(
mpf
, &
p
, 
NULL
, 0, &
subpg
)) != 0) {

2524 
r_t
 = 
t
;

2527 i((
t
 = 
	`__db_lvage
(
dbp
, 
vdp
, 
p
, 
subpg
,

2528 
hd
, 
back
, 
ags
)) != 0)

2529 
r_t
 = 
t
;

2530 i((
t
 =

2531 
	`__memp_ut
(
mpf
, 
subpg
, 
dbp
->
iܙy
)) != 0)

2532 
r_t
 = 
t
;

2535 i(
t
 !
DB_NOTFOUND
)

2536 
r
;

2538 i((
t
 = 
	`__dbc_o
(
pgsc
)) != 0)

2539 
r
;

2540 i((
t
 = 
	`__db_foٔ
(
hd
, 
back
)) != 0)

2541 
r
;

2543 
r
: i(
subdbme
)

2544 
	`__os_
(
dbv
, 
subdbme
);

2546 i((
t_t
 = 
	`__db_o
(
pgt
, 
NULL
, 0)) != 0)

2547 
t
 = 
t_t
;

2549 i((
t_t
 = 
	`__db_lvage_mkde
(
vdp
, 
	`PGNO
(
ma
))) != 0)

2550  (
t_t
);

2552  ((
r_t
 !0?_: 
t
);

2553 
	}
}

2562 
	$__db_ma2pgt
(
dbp
, 
vdp
, 
pgno
, 
ags
, 
pgt
)

2563 
DB
 *
dbp
;

2564 
VRFY_DBINFO
 *
vdp
;

2565 
db_pgno_t
 
pgno
;

2566 
u_t32_t
 
ags
;

2567 
DB
 *
pgt
;

2569 
DB_MPOOLFILE
 *
mpf
;

2570 
PAGE
 *
h
;

2571 
t
, 
t_t
;

2573 
mpf
 = 
dbp
->mpf;

2575 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0)

2576  (
t
);

2578 
	`TYPE
(
h
)) {

2579 
P_BTREEMETA
:

2580 
t
 = 
	`__bam_ma2pgt
(
dbp
, 
vdp
, (
BTMETA
 *)
h
, 
ags
, 
pgt
);

2582 
P_HASHMETA
:

2583 
t
 = 
	`__ham_ma2pgt
(
dbp
, 
vdp
, (
HMETA
 *)
h
, 
ags
, 
pgt
);

2586 
t
 = 
DB_VERIFY_BAD
;

2590 i((
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)) != 0)

2591  (
t_t
);

2592  (
t
);

2593 
	}
}

2600 
u_t


2601 
	$__db_guesgsize
(
dbv
, 
fhp
)

2602 
DB_ENV
 *
dbv
;

2603 
DB_FH
 *
fhp
;

2605 
db_pgno_t
 
i
;

2606 
size_t
 

;

2607 
u_t32_t
 
guess
;

2608 
u_t8_t
 
ty
;

2610 
guess
 = 
DB_MAX_PGSIZE
; gues>
DB_MIN_PGSIZE
; guess >>= 1) {

2623 
i
 = 1; i <= 3; i++) {

2624 i(
	`__os_ek
(

2625 
dbv
, 
fhp
, 
i
, 
guess
, 
	`SSZ
(
DBMETA
, 
ty
)) != 0)

2627 i(
	`__os_ad
(
dbv
,

2628 
fhp
, &
ty
, 1, &

) != 0 ||r == 0)

2630 i(
ty
 =
P_INVALID
 ||y >
P_PAGETYPE_MAX
)

2631  (
guess
 << 1);

2639  (
DB_DEF_IOSIZE
);

2640 
	}
}

	@../db/db_vrfy_stub.c

9 #ide
HAVE_VERIFY


10 
	~"db_cfig.h
"

12 
	~"db_t.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/db_am.h
"

15 
	~"dbc/db_vify.h
"

23 
__db_novrfy
 
__P
((
DB_ENV
 *));

30 
	$__db_novrfy
(
dbv
)

31 
DB_ENV
 *
dbv
;

33 
	`__db_rx
(
dbv
,

35  (
DB_OPNOTSUP
);

36 
	}
}

39 
	$__db_vify_
(
dbp
, 
fe
, 
daba
, 
outfe
, 
ags
)

40 
DB
 *
dbp
;

41 cڡ *
fe
, *
daba
;

42 
FILE
 *
outfe
;

43 
u_t32_t
 
ags
;

45 
t
;

47 
	`COMPQUIET
(
fe
, 
NULL
);

48 
	`COMPQUIET
(
daba
, 
NULL
);

49 
	`COMPQUIET
(
outfe
, 
NULL
);

50 
	`COMPQUIET
(
ags
, 0);

52 
t
 = 
	`__db_novrfy
(
dbp
->
dbv
);

55 ()
	`__db_o
(
dbp
, 
NULL
, 0);

57  (
t
);

58 
	}
}

61 
	$__db_vify_
(
dbp
, 
me
, 
subdb
, 
hd
, 
back
, 
ags
)

62 
DB
 *
dbp
;

63 cڡ *
me
, *
subdb
;

64 *
hd
;

65 (*
back

	`__P
((*, const *));

66 
u_t32_t
 
ags
;

68 
	`COMPQUIET
(
dbp
, 
NULL
);

69 
	`COMPQUIET
(
me
, 
NULL
);

70 
	`COMPQUIET
(
subdb
, 
NULL
);

71 
	`COMPQUIET
(
hd
, 
NULL
);

72 
	`COMPQUIET
(
back
, 
NULL
);

73 
	`COMPQUIET
(
ags
, 0);

75 
	}
}

78 
	$__db_vrfy_ggefo
(
vdp
, 
pgno
, 
pp
)

79 
VRFY_DBINFO
 *
vdp
;

80 
db_pgno_t
 
pgno
;

81 
VRFY_PAGEINFO
 **
pp
;

83 
	`COMPQUIET
(
pgno
, 0);

84 
	`COMPQUIET
(
pp
, 
NULL
);

85  (
	`__db_novrfy
(
vdp
->
pgdbp
->
dbv
));

86 
	}
}

89 
	$__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)

90 
DB_ENV
 *
dbv
;

91 
VRFY_DBINFO
 *
vdp
;

92 
VRFY_PAGEINFO
 *
p
;

94 
	`COMPQUIET
(
vdp
, 
NULL
);

95 
	`COMPQUIET
(
p
, 
NULL
);

96  (
	`__db_novrfy
(
dbv
));

97 
	}
}

	@../db/db_vrfyutil.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_vify.h
"

14 
	~"dbc/db_am.h
"

16 
__db_vrfy_chdc
 
__P
((
DBC
 *, 
VRFY_CHILDINFO
 *));

17 
__db_vrfy_gefo_
 
__P
((
DB_ENV
 *, 
VRFY_PAGEINFO
 **));

27 
	$__db_vrfy_dbfo_
(
dbv
, 
pgsize
, 
vd
)

28 
DB_ENV
 *
dbv
;

29 
u_t32_t
 
pgsize
;

30 
VRFY_DBINFO
 **
vd
;

32 
DB
 *
cdbp
, *
pgdbp
, *
pgt
;

33 
VRFY_DBINFO
 *
vdp
;

34 
t
;

36 
vdp
 = 
NULL
;

37 
cdbp
 = 
pgdbp
 = 
pgt
 = 
NULL
;

39 i((
t
 = 
	`__os_oc
(
NULL
, 1, (
VRFY_DBINFO
), &
vdp
)) != 0)

40 
r
;

42 i((
t
 = 
	`__db__
(&
cdbp
, 
dbv
, 0)) != 0)

43 
r
;

45 i((
t
 = 
	`__db_t_ags
(
cdbp
, 
DB_DUP
)) != 0)

46 
r
;

48 i((
t
 = 
	`__db_t_gesize
(
cdbp
, 
pgsize
)) != 0)

49 
r
;

52 i(
	`TXN_ON
(
dbv
) &&

53 (
t
 = 
	`__db_t_ags
(
cdbp
, 
DB_TXN_NOT_DURABLE
)) != 0)

54 
r
;

55 i((
t
 = 
	`__db_ݒ
(
cdbp
,

56 
NULL
, NULL, NULL, 
DB_BTREE
, 
DB_CREATE
, 0600, 
PGNO_BASE_MD
)) != 0)

57 
r
;

59 i((
t
 = 
	`__db__
(&
pgdbp
, 
dbv
, 0)) != 0)

60 
r
;

62 i((
t
 = 
	`__db_t_gesize
(
pgdbp
, 
pgsize
)) != 0)

63 
r
;

66 i(
	`TXN_ON
(
dbv
) &&

67 (
t
 = 
	`__db_t_ags
(
pgdbp
, 
DB_TXN_NOT_DURABLE
)) != 0)

68 
r
;

70 i((
t
 = 
	`__db_ݒ
(
pgdbp
,

71 
NULL
, NULL, NULL, 
DB_BTREE
, 
DB_CREATE
, 0600, 
PGNO_BASE_MD
)) != 0)

72 
r
;

74 i((
t
 = 
	`__db_vrfy_pgt
(
dbv
, 
pgsize
, &
pgt
)) != 0)

75 
r
;

77 
	`LIST_INIT
(&
vdp
->
subdbs
);

78 
	`LIST_INIT
(&
vdp
->
aivs
);

80 
vdp
->
cdbp
 = cdbp;

81 
vdp
->
pgdbp
 =gdbp;

82 
vdp
->
pgt
 =gset;

83 *
vd
 = 
vdp
;

86 
r
: i(
cdbp
 !
NULL
)

87 ()
	`__db_o
(
cdbp
, 
NULL
, 0);

88 i(
pgdbp
 !
NULL
)

89 ()
	`__db_o
(
pgdbp
, 
NULL
, 0);

90 i(
vdp
 !
NULL
)

91 
	`__os_
(
dbv
, 
vdp
);

92  (
t
);

93 
	}
}

103 
	$__db_vrfy_dbfo_deroy
(
dbv
, 
vdp
)

104 
DB_ENV
 *
dbv
;

105 
VRFY_DBINFO
 *
vdp
;

107 
VRFY_CHILDINFO
 *
c
;

108 
t_t
, 
t
;

110 
t
 = 0;

116 
	`LIST_FIRST
(&
vdp
->
aivs
!
NULL
)

117 i((
t_t
 = 
	`__db_vrfy_puagefo
(

118 
dbv
, 
vdp
, 
	`LIST_FIRST
(&vdp->
aivs
))) != 0) {

119 i(
t
 == 0)

120 
t
 = 
t_t
;

125 (
c
 = 
	`LIST_FIRST
(&
vdp
->
subdbs
)!
NULL
) {

126 
	`LIST_REMOVE
(
c
, 
lks
);

127 
	`__os_
(
NULL
, 
c
);

130 i((
t_t
 = 
	`__db_o
(
vdp
->
pgdbp
, 
NULL
, 0)) != 0)

131 
t
 = 
t_t
;

133 i((
t_t
 = 
	`__db_o
(
vdp
->
cdbp
, 
NULL
, 0)!0 && 
t
 == 0)

134 
t
 = 
t_t
;

136 i((
t_t
 = 
	`__db_o
(
vdp
->
pgt
, 
NULL
, 0)!0 && 
t
 == 0)

137 
t
 = 
t_t
;

139 i(
vdp
->
exs
 !
NULL
)

140 
	`__os_
(
dbv
, 
vdp
->
exs
);

141 
	`__os_
(
dbv
, 
vdp
);

142  (
t
);

143 
	}
}

153 
	$__db_vrfy_ggefo
(
vdp
, 
pgno
, 
pp
)

154 
VRFY_DBINFO
 *
vdp
;

155 
db_pgno_t
 
pgno
;

156 
VRFY_PAGEINFO
 **
pp
;

158 
DB_ENV
 *
dbv
;

159 
DBT
 
key
, 
da
;

160 
DB
 *
pgdbp
;

161 
VRFY_PAGEINFO
 *
p
;

162 
t
;

183 
	`LIST_FOREACH
(
p
, &
vdp
->
aivs
, 
lks
)

184 i(
p
->
pgno
 ==gno)

185 
found
;

188 
pgdbp
 = 
vdp
->pgdbp;

189 
dbv
 = 
pgdbp
->dbenv;

190 
	`memt
(&
key
, 0, (
DBT
));

191 
	`memt
(&
da
, 0, (
DBT
));

192 
	`F_SET
(&
da
, 
DB_DBT_MALLOC
);

193 
key
.
da
 = &
pgno
;

194 
key
.
size
 = (
db_pgno_t
);

196 i((
t
 = 
	`__db_g
(
pgdbp
, 
NULL
, &
key
, &
da
, 0)) == 0) {

198 
	`DB_ASSERT
(
dbv
, 
da
.
size
 =(
VRFY_PAGEINFO
));

199 
p
 = 
da
.data;

200 
	`LIST_INSERT_HEAD
(&
vdp
->
aivs
, 
p
, 
lks
);

201 
found
;

202 } i(
t
 !
DB_NOTFOUND
)

203  (
t
);

206 i((
t
 = 
	`__db_vrfy_gefo_
(
dbv
, &
p
)) != 0)

207  (
t
);

209 
	`LIST_INSERT_HEAD
(&
vdp
->
aivs
, 
p
, 
lks
);

210 
found
: 
p
->
pi_fcou
++;

212 *
pp
 = 
p
;

214 
	}
}

224 
	$__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)

225 
DB_ENV
 *
dbv
;

226 
VRFY_DBINFO
 *
vdp
;

227 
VRFY_PAGEINFO
 *
p
;

229 
DBT
 
key
, 
da
;

230 
DB
 *
pgdbp
;

231 
VRFY_PAGEINFO
 *
p
;

232 
t
;

234 i(--
p
->
pi_fcou
 > 0)

237 
pgdbp
 = 
vdp
->pgdbp;

238 
	`memt
(&
key
, 0, (
DBT
));

239 
	`memt
(&
da
, 0, (
DBT
));

241 
key
.
da
 = &
p
->
pgno
;

242 
key
.
size
 = (
db_pgno_t
);

243 
da
.d
p
;

244 
da
.
size
 = (
VRFY_PAGEINFO
);

246 i((
t
 = 
	`__db_put
(
pgdbp
, 
NULL
, &
key
, &
da
, 0)) != 0)

247  (
t
);

249 
	`LIST_FOREACH
(
p
, &
vdp
->
aivs
, 
lks
)

250 i(
p
 =
p
)

252 i(
p
 !
NULL
)

253 
	`LIST_REMOVE
(
p
, 
lks
);

255 
	`__os_u
(
dbv
, 
p
);

257 
	}
}

268 
	$__db_vrfy_pgt
(
dbv
, 
pgsize
, 
db
)

269 
DB_ENV
 *
dbv
;

270 
u_t32_t
 
pgsize
;

271 
DB
 **
db
;

273 
DB
 *
dbp
;

274 
t
;

276 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

277  (
t
);

278 i((
t
 = 
	`__db_t_gesize
(
dbp
, 
pgsize
)) != 0)

279 
r
;

282 i(
	`TXN_ON
(
dbv
) &&

283 (
t
 = 
	`__db_t_ags
(
dbp
, 
DB_TXN_NOT_DURABLE
)) != 0)

284 
r
;

285 i((
t
 = 
	`__db_ݒ
(
dbp
,

286 
NULL
, NULL, NULL, 
DB_BTREE
, 
DB_CREATE
, 0600, 
PGNO_BASE_MD
)) == 0)

287 *
db
 = 
dbp
;

289 
r
: ()
	`__db_o
(
dbp
, 
NULL
, 0);

291  (
t
);

292 
	}
}

302 
	$__db_vrfy_pgt_g
(
dbp
, 
pgno
, 
vp
)

303 
DB
 *
dbp
;

304 
db_pgno_t
 
pgno
;

305 *
vp
;

307 
DBT
 
key
, 
da
;

308 
t
, 
v
;

310 
	`memt
(&
key
, 0, (
DBT
));

311 
	`memt
(&
da
, 0, (
DBT
));

313 
key
.
da
 = &
pgno
;

314 
key
.
size
 = (
db_pgno_t
);

315 
da
.d&
v
;

316 
da
.
un
 = ();

317 
	`F_SET
(&
da
, 
DB_DBT_USERMEM
);

319 i((
t
 = 
	`__db_g
(
dbp
, 
NULL
, &
key
, &
da
, 0)) == 0) {

320 
	`DB_ASSERT
(
dbp
->
dbv
, 
da
.
size
 == ());

321 } i(
t
 =
DB_NOTFOUND
)

322 
v
 = 0;

324  (
t
);

326 *
vp
 = 
v
;

328 
	}
}

337 
	$__db_vrfy_pgt_c
(
dbp
, 
pgno
)

338 
DB
 *
dbp
;

339 
db_pgno_t
 
pgno
;

341 
DBT
 
key
, 
da
;

342 
t
;

343 
v
;

345 
	`memt
(&
key
, 0, (
DBT
));

346 
	`memt
(&
da
, 0, (
DBT
));

348 
v
 = 0;

350 
key
.
da
 = &
pgno
;

351 
key
.
size
 = (
db_pgno_t
);

352 
da
.d&
v
;

353 
da
.
un
 = ();

354 
	`F_SET
(&
da
, 
DB_DBT_USERMEM
);

356 i((
t
 = 
	`__db_g
(
dbp
, 
NULL
, &
key
, &
da
, 0)) == 0) {

357 
	`DB_ASSERT
(
dbp
->
dbv
, 
da
.
size
 == ());

358 } i(
t
 !
DB_NOTFOUND
)

359  (
t
);

361 
da
.
size
 = ();

362 ++
v
;

364  (
	`__db_put
(
dbp
, 
NULL
, &
key
, &
da
, 0));

365 
	}
}

375 
	$__db_vrfy_pgt_xt
(
dbc
, 
pgn
)

376 
DBC
 *
dbc
;

377 
db_pgno_t
 *
pgn
;

379 
DBT
 
key
, 
da
;

380 
db_pgno_t
 
pgno
;

381 
t
;

383 
	`memt
(&
key
, 0, (
DBT
));

384 
	`memt
(&
da
, 0, (
DBT
));

386 
	`F_SET
(&
da
, 
DB_DBT_USERMEM
 | 
DB_DBT_PARTIAL
);

387 
	`F_SET
(&
key
, 
DB_DBT_USERMEM
);

388 
key
.
da
 = &
pgno
;

389 
key
.
un
 = (
db_pgno_t
);

391 i((
t
 = 
	`__dbc_g
(
dbc
, &
key
, &
da
, 
DB_NEXT
)) != 0)

392  (
t
);

394 
	`DB_ASSERT
(
dbc
->
dbp
->
dbv
, 
key
.
size
 =(
db_pgno_t
));

395 *
pgn
 = 
pgno
;

398 
	}
}

408 
	$__db_vrfy_chdcurs
(
vdp
, 
db
)

409 
VRFY_DBINFO
 *
vdp
;

410 
DBC
 **
db
;

412 
DB
 *
cdbp
;

413 
DBC
 *
dbc
;

414 
t
;

416 
cdbp
 = 
vdp
->cdbp;

418 i((
t
 = 
	`__db_curs
(
cdbp
, 
NULL
, &
dbc
, 0)) == 0)

419 *
db
 = 
dbc
;

421  (
t
);

422 
	}
}

432 
	$__db_vrfy_chdput
(
vdp
, 
pgno
, 
c
)

433 
VRFY_DBINFO
 *
vdp
;

434 
db_pgno_t
 
pgno
;

435 
VRFY_CHILDINFO
 *
c
;

437 
DB
 *
cdbp
;

438 
DBC
 *
cc
;

439 
DBT
 
key
, 
da
;

440 
VRFY_CHILDINFO
 *
dc
;

441 
t
;

443 
cdbp
 = 
vdp
->cdbp;

444 
	`memt
(&
key
, 0, (
DBT
));

445 
	`memt
(&
da
, 0, (
DBT
));

447 
key
.
da
 = &
pgno
;

448 
key
.
size
 = (
db_pgno_t
);

464 i((
t
 = 
	`__db_vrfy_chdcurs
(
vdp
, &
cc
)) != 0)

465  (
t
);

466 
t
 = 
	`__db_vrfy_cct
(
cc
, 
pgno
, &
dc
);et == 0;

467 
t
 = 
	`__db_vrfy_cext
(
cc
, &
dc
))

468 i(
dc
->
pgno
 =
c
->pgno) {

474 i((
t
 = 
	`__db_vrfy_chdc
(
cc
, 
dc
)) != 0 ||

475 (
t
 = 
	`__db_vrfy_cco
(
cc
)) != 0)

476  (
t
);

479 i(
t
 !
DB_NOTFOUND
) {

480 ()
	`__db_vrfy_cco
(
cc
);

481  (
t
);

483 i((
t
 = 
	`__db_vrfy_cco
(
cc
)) != 0)

484  (
t
);

486 
c
->
ft
 = 1;

487 
da
.d
c
;

488 
da
.
size
 = (
VRFY_CHILDINFO
);

490  (
	`__db_put
(
cdbp
, 
NULL
, &
key
, &
da
, 0));

491 
	}
}

500 
	$__db_vrfy_chdc
(
dbc
, 
c
)

501 
DBC
 *
dbc
;

502 
VRFY_CHILDINFO
 *
c
;

504 
DBT
 
key
, 
da
;

506 
	`memt
(&
key
, 0, (
DBT
));

507 
	`memt
(&
da
, 0, (
DBT
));

509 
c
->
ft
++;

510 
da
.d
c
;

511 
da
.
size
 = (
VRFY_CHILDINFO
);

513  (
	`__dbc_put
(
dbc
, &
key
, &
da
, 
DB_CURRENT
));

514 
	}
}

524 
	$__db_vrfy_cct
(
dbc
, 
pgno
, 
cp
)

525 
DBC
 *
dbc
;

526 
db_pgno_t
 
pgno
;

527 
VRFY_CHILDINFO
 **
cp
;

529 
DBT
 
key
, 
da
;

530 
t
;

532 
	`memt
(&
key
, 0, (
DBT
));

533 
	`memt
(&
da
, 0, (
DBT
));

535 
key
.
da
 = &
pgno
;

536 
key
.
size
 = (
db_pgno_t
);

538 i((
t
 = 
	`__dbc_g
(
dbc
, &
key
, &
da
, 
DB_SET
)) != 0)

539  (
t
);

541 
	`DB_ASSERT
(
dbc
->
dbp
->
dbv
, 
da
.
size
 =(
VRFY_CHILDINFO
));

542 *
cp
 = (
VRFY_CHILDINFO
 *)
da
.data;

545 
	}
}

556 
	$__db_vrfy_cext
(
dbc
, 
cp
)

557 
DBC
 *
dbc
;

558 
VRFY_CHILDINFO
 **
cp
;

560 
DBT
 
key
, 
da
;

561 
t
;

563 
	`memt
(&
key
, 0, (
DBT
));

564 
	`memt
(&
da
, 0, (
DBT
));

566 i((
t
 = 
	`__dbc_g
(
dbc
, &
key
, &
da
, 
DB_NEXT_DUP
)) != 0)

567  (
t
);

569 
	`DB_ASSERT
(
dbc
->
dbp
->
dbv
, 
da
.
size
 =(
VRFY_CHILDINFO
));

570 *
cp
 = (
VRFY_CHILDINFO
 *)
da
.data;

573 
	}
}

587 
	$__db_vrfy_cco
(
dbc
)

588 
DBC
 *
dbc
;

591  (
	`__dbc_o
(
dbc
));

592 
	}
}

599 
	$__db_vrfy_gefo_
(
dbv
, 
pp
)

600 
DB_ENV
 *
dbv
;

601 
VRFY_PAGEINFO
 **
pp
;

603 
VRFY_PAGEINFO
 *
p
;

604 
t
;

613 i((
t
 = 
	`__os_umloc
(
dbv
, (
VRFY_PAGEINFO
), &
p
)) != 0)

614  (
t
);

615 
	`memt
(
p
, 0, (
VRFY_PAGEINFO
));

617 *
pp
 = 
p
;

619 
	}
}

628 
	$__db_lvage_
(
vdp
)

629 
VRFY_DBINFO
 *
vdp
;

631 
DB
 *
dbp
;

632 
t
;

634 i((
t
 = 
	`__db__
(&
dbp
, 
NULL
, 0)) != 0)

635  (
t
);

637 i((
t
 = 
	`__db_t_gesize
(
dbp
, 1024)) != 0)

638 
r
;

640 i((
t
 = 
	`__db_ݒ
(
dbp
,

641 
NULL
, NULL, NULL, 
DB_BTREE
, 
DB_CREATE
, 0, 
PGNO_BASE_MD
)) != 0)

642 
r
;

644 
vdp
->
lvage_ges
 = 
dbp
;

647 
r
: ()
	`__db_o
(
dbp
, 
NULL
, 0);

648  (
t
);

649 
	}
}

657 
	$__db_lvage_deroy
(
vdp
)

658 
VRFY_DBINFO
 *
vdp
;

660 ()
	`__db_o
(
vdp
->
lvage_ges
, 
NULL
, 0);

661 
	}
}

673 
	$__db_lvage_gxt
(
vdp
, 
db
, 
pgn
, 
pgtyp
, 
sk_ovow
)

674 
VRFY_DBINFO
 *
vdp
;

675 
DBC
 **
db
;

676 
db_pgno_t
 *
pgn
;

677 
u_t32_t
 *
pgtyp
;

678 
sk_ovow
;

680 
DB
 *
dbp
;

681 
DBT
 
key
, 
da
;

682 
t
;

683 
u_t32_t
 
pgty
;

685 
dbp
 = 
vdp
->
lvage_ges
;

687 
	`memt
(&
key
, 0, (
DBT
));

688 
	`memt
(&
da
, 0, (
DBT
));

690 i(*
db
 =
NULL
 &&

691 (
t
 = 
	`__db_curs
(
dbp
, 
NULL
, 
db
, 0)) != 0)

692  (
t
);

694 (
t
 = 
	`__dbc_g
(*
db
, &
key
, &
da
, 
DB_NEXT
)) == 0) {

695 
	`DB_ASSERT
(
dbp
->
dbv
, 
da
.
size
 =(
u_t32_t
));

696 
	`memy
(&
pgty
, 
da
.data, (pgtype));

698 i(
sk_ovow
 && 
pgty
 =
SALVAGE_OVERFLOW
)

701 i((
t
 = 
	`__dbc_d
(*
db
, 0)) != 0)

702  (
t
);

703 i(
pgty
 !
SALVAGE_IGNORE
) {

704 
	`DB_ASSERT
(
dbp
->
dbv
, 
key
.
size
 =(
db_pgno_t
));

705 
	`DB_ASSERT
(
dbp
->
dbv
, 
da
.
size
 =(
u_t32_t
));

707 *
pgn
 = *(
db_pgno_t
 *)
key
.
da
;

708 *
pgtyp
 = *(
u_t32_t
 *)
da
.data;

713  (
t
);

714 
	}
}

727 
	$__db_lvage_isde
(
vdp
, 
pgno
)

728 
VRFY_DBINFO
 *
vdp
;

729 
db_pgno_t
 
pgno
;

731 
DBT
 
key
, 
da
;

732 
DB
 *
dbp
;

733 
t
;

734 
u_t32_t
 
cuty
;

736 
dbp
 = 
vdp
->
lvage_ges
;

738 
	`memt
(&
key
, 0, (
DBT
));

739 
	`memt
(&
da
, 0, (
DBT
));

741 
cuty
 = 
SALVAGE_INVALID
;

742 
da
.d&
cuty
;

743 
da
.
un
 = (
u_t32_t
);

744 
da
.
ags
 = 
DB_DBT_USERMEM
;

746 
key
.
da
 = &
pgno
;

747 
key
.
size
 = (
db_pgno_t
);

755 i((
t
 = 
	`__db_g
(
dbp
, 
NULL
, &
key
, &
da
, 0)) == 0) {

761 i(
cuty
 =
SALVAGE_IGNORE
)

762  (
DB_KEYEXIST
);

765 } i(
t
 !
DB_NOTFOUND
)

766  (
t
);

770 
	}
}

779 
	$__db_lvage_mkde
(
vdp
, 
pgno
)

780 
VRFY_DBINFO
 *
vdp
;

781 
db_pgno_t
 
pgno
;

783 
DBT
 
key
, 
da
;

784 
DB
 *
dbp
;

785 
pgty
, 
t
;

786 
u_t32_t
 
cuty
;

788 
pgty
 = 
SALVAGE_IGNORE
;

789 
dbp
 = 
vdp
->
lvage_ges
;

791 
	`memt
(&
key
, 0, (
DBT
));

792 
	`memt
(&
da
, 0, (
DBT
));

794 
cuty
 = 
SALVAGE_INVALID
;

795 
da
.d&
cuty
;

796 
da
.
un
 = (
u_t32_t
);

797 
da
.
ags
 = 
DB_DBT_USERMEM
;

799 
key
.
da
 = &
pgno
;

800 
key
.
size
 = (
db_pgno_t
);

815 i((
t
 = 
	`__db_lvage_isde
(
vdp
, 
pgno
)) != 0)

816  (
t
 =
DB_KEYEXIST
 ? 
DB_VERIFY_BAD
 :et);

818 
da
.
size
 = (
u_t32_t
);

819 
da
.d&
pgty
;

821  (
	`__db_put
(
dbp
, 
NULL
, &
key
, &
da
, 0));

822 
	}
}

833 
	$__db_lvage_mkeded
(
vdp
, 
pgno
, 
pgty
)

834 
VRFY_DBINFO
 *
vdp
;

835 
db_pgno_t
 
pgno
;

836 
u_t32_t
 
pgty
;

838 
DB
 *
dbp
;

839 
DBT
 
key
, 
da
;

840 
t
;

842 
dbp
 = 
vdp
->
lvage_ges
;

844 
	`memt
(&
key
, 0, (
DBT
));

845 
	`memt
(&
da
, 0, (
DBT
));

847 
key
.
da
 = &
pgno
;

848 
key
.
size
 = (
db_pgno_t
);

850 
da
.d&
pgty
;

851 
da
.
size
 = (
u_t32_t
);

858 
t
 = 
	`__db_put
(
dbp
, 
NULL
, &
key
, &
da
, 
DB_NOOVERWRITE
);

859  (
t
 =
DB_KEYEXIST
 ? 0 :et);

860 
	}
}

870 
	$__db_vrfy_dbt
(
db
, 
checkt
, 
efix
, 
hd
, 
back
, 
is_o
, 
vdp
)

871 
DBT
 *
db
;

872 
checkt
;

873 cڡ *
efix
;

874 *
hd
;

875 (*
back

	`__P
((*, const *));

876 
is_o
;

877 
VRFY_DBINFO
 *
vdp
;

879 i(
vdp
 !
NULL
) {

888 i(
	`F_ISSET
(
vdp
, 
SALVAGE_PRINTHEADER
)) {

889 ()
	`__db_hd
(

890 
NULL
, "__OTHER__", 0, 0, 
hd
, 
back
, 
vdp
, 0);

891 
	`F_CLR
(
vdp
, 
SALVAGE_PRINTHEADER
);

892 
	`F_SET
(
vdp
, 
SALVAGE_PRINTFOOTER
);

899 i(
	`F_ISSET
(
vdp
, 
SALVAGE_PRINTABLE
))

900 
checkt
 = 1;

903 
	`__db_dbt
(
db
, 
checkt
, 
efix
, 
hd
, 
back
, 
is_o
));

904 
	}
}

	@../db185/db185.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
	~"db185_t.h
"

20 
db185_o
 
__P
((
DB185
 *));

21 
db185_com
 
__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

22 
db185_d
 
__P
((cڡ 
DB185
 *, cڡ 
DBT185
 *, 
u_t
));

23 
db185_fd
 
__P
((cڡ 
DB185
 *));

24 
db185_g
 
__P
((cڡ 
DB185
 *, cڡ 
DBT185
 *, DBT185 *, 
u_t
));

25 
u_t32_t


26 
db185_hash
 
__P
((
DB
 *, cڡ *, 
u_t32_t
));

27 
size_t
 
db185_efix
 
__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

28 
db185_put
 
__P
((cڡ 
DB185
 *, 
DBT185
 *, cڡ DBT185 *, 
u_t
));

29 
db185_q
 
__P
((cڡ 
DB185
 *, 
DBT185
 *, DBT185 *, 
u_t
));

30 
db185_sync
 
__P
((cڡ 
DB185
 *, 
u_t
));

41 
DB185
 *

42 
	$__db185_ݒ
(
fe
, 
oags
, 
mode
, 
ty
, 
ݒfo
)

43 cڡ *
fe
;

44 
oags
, 
mode
;

45 
DBTYPE
 
ty
;

46 cڡ *
ݒfo
;

48 cڡ 
BTREEINFO
 *
bi
;

49 cڡ 
HASHINFO
 *
hi
;

50 cڡ 
RECNOINFO
 *
ri
;

51 
DB
 *
dbp
;

52 
DB185
 *
db185p
;

53 
DB_FH
 *
fhp
;

54 
t
;

56 
dbp
 = 
NULL
;

57 
db185p
 = 
NULL
;

59 i((
t
 = 
	`db_
(&
dbp
, 
NULL
, 0)) != 0)

60 
r
;

62 i((
t
 = 
	`__os_oc
(
NULL
, 1, (
DB185
), &
db185p
)) != 0)

63 
r
;

70 
ty
) {

72 
ty
 = 
DB_BTREE
;

73 i((
bi
 = 
ݒfo
!
NULL
) {

74 i(
bi
->
ags
 & ~
R_DUP
)

75 
ev
;

76 i(
bi
->
ags
 & 
R_DUP
)

77 ()
dbp
->
	`t_ags
(dbp, 
DB_DUP
);

78 i(
bi
->
chesize
 != 0)

79 ()
dbp
->
t_chesize


80 (
dbp
, 0, 
bi
->
chesize
, 0);

81 i(
bi
->
mkeyge
 != 0)

82 ()
dbp
->
	`t_bt_mkey
(dbp, 
bi
->
mkeyge
);

83 i(
bi
->
psize
 != 0)

84 ()
dbp
->
	`t_gesize
(dbp, 
bi
->
psize
);

85 i(
bi
->
efix
 !
NULL
) {

86 
db185p
->
efix
 = 
bi
->prefix;

87 
dbp
->
	`t_bt_efix
(dbp, 
db185_efix
);

89 i(
bi
->
com
 !
NULL
) {

90 
db185p
->
com
 = 
bi
->compare;

91 
dbp
->
	`t_bt_com
(dbp, 
db185_com
);

93 i(
bi
->
ld
 != 0)

94 
dbp
->
	`t_ld
(dbp, 
bi
->
ld
);

98 
ty
 = 
DB_HASH
;

99 i((
hi
 = 
ݒfo
!
NULL
) {

100 i(
hi
->
bsize
 != 0)

101 ()
dbp
->
	`t_gesize
(dbp, 
hi
->
bsize
);

102 i(
hi
->
f
 != 0)

103 ()
dbp
->
	`t_h_f
(dbp, 
hi
->
f
);

104 i(
hi
->
m
 != 0)

105 ()
dbp
->
	`t_h_m
(dbp, 
hi
->
m
);

106 i(
hi
->
chesize
 != 0)

107 ()
dbp
->
t_chesize


108 (
dbp
, 0, 
hi
->
chesize
, 0);

109 i(
hi
->
hash
 !
NULL
) {

110 
db185p
->
hash
 = 
hi
->hash;

111 ()
dbp
->
	`t_h_hash
(dbp, 
db185_hash
);

113 i(
hi
->
ld
 != 0)

114 
dbp
->
	`t_ld
(dbp, 
hi
->
ld
);

119 
ty
 = 
DB_RECNO
;

122 ()
dbp
->
	`t_ags
(dbp, 
DB_RENUMBER
);

145 i(
fe
 !
NULL
) {

146 i(
oags
 & 
O_CREAT
 &&

147 
	`__os_exis
(
NULL
, 
fe
, NULL) != 0)

148 i(
	`__os_ݒhd
(
NULL
, 
fe
,

149 
oags
, 
mode
, &
fhp
) == 0)

150 ()
	`__os_ohd
(
NULL
, 
fhp
);

151 ()
dbp
->
	`t__sour
(dbp, 
fe
);

153 i(
O_RDONLY
)

154 
oags
 &~
O_RDONLY
;

155 
oags
 |
O_RDWR
;

156 
fe
 = 
NULL
;

166 
oags
 |
O_CREAT
;

168 i((
ri
 = 
ݒfo
!
NULL
) {

173 
	#BFMSG
 \

174 "Bkey DB: DB 1.85'bamfld in su܋d.\n"

	)

175 i(
ri
->
bame
 !
NULL
) {

176 
dbp
->
	`rx
(dbp, "%s", 
BFMSG
);

177 
ev
;

180 i(
ri
->
ags
 & ~(
R_FIXEDLEN
 | 
R_NOKEY
 | 
R_SNAPSHOT
))

181 
ev
;

182 i(
ri
->
ags
 & 
R_FIXEDLEN
) {

183 i(
ri
->
bv
 != 0)

184 ()
dbp
->
	`t__d
(dbp, 
ri
->
bv
);

185 i(
ri
->

 != 0)

186 ()
dbp
->
	`t__n
(dbp, 
ri
->

);

188 i(
ri
->
bv
 != 0)

189 ()
dbp
->
	`t__dim
(dbp, 
ri
->
bv
);

196 i(
ri
->
ags
 & 
R_SNAPSHOT
)

197 ()
dbp
->
	`t_ags
(dbp, 
DB_SNAPSHOT
);

199 i(
ri
->
chesize
 != 0)

200 ()
dbp
->
t_chesize


201 (
dbp
, 0, 
ri
->
chesize
, 0);

202 i(
ri
->
psize
 != 0)

203 ()
dbp
->
	`t_gesize
(dbp, 
ri
->
psize
);

204 i(
ri
->
ld
 != 0)

205 
dbp
->
	`t_ld
(dbp, 
ri
->
ld
);

209 
ev
;

212 
db185p
->
o
 = 
db185_o
;

213 
db185p
->
d
 = 
db185_d
;

214 
db185p
->
fd
 = 
db185_fd
;

215 
db185p
->
g
 = 
db185_g
;

216 
db185p
->
put
 = 
db185_put
;

217 
db185p
->
q
 = 
db185_q
;

218 
db185p
->
sync
 = 
db185_sync
;

226 
db185p
->
dbp
 = dbp;

227 
dbp
->
i_
 = 
db185p
;

230 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
,

231 
fe
, 
NULL
, 
ty
, 
	`__db_oags
(
oags
), 
mode
)) != 0)

232 
r
;

235 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &((
DB185
 *)
db185p
)->
dbc
, 0)) != 0)

236 
r
;

238  (
db185p
);

240 
ev
: 
t
 = 
EINVAL
;

242 
r
: i(
db185p
 !
NULL
)

243 
	`__os_
(
NULL
, 
db185p
);

244 i(
dbp
 !
NULL
)

245 ()
dbp
->
	`o
(dbp, 0);

247 
	`__os_t_o
(
t
);

248  (
NULL
);

249 
	}
}

252 
	$db185_o
(
db185p
)

253 
DB185
 *
db185p
;

255 
DB
 *
dbp
;

256 
t
;

258 
dbp
 = 
db185p
->dbp;

260 
t
 = 
dbp
->
	`o
(dbp, 0);

262 
	`__os_
(
NULL
, 
db185p
);

264 i(
t
 == 0)

267 
	`__os_t_o
(
t
);

269 
	}
}

272 
	$db185_d
(
db185p
, 
key185
, 
ags
)

273 cڡ 
DB185
 *
db185p
;

274 cڡ 
DBT185
 *
key185
;

275 
u_t
 
ags
;

277 
DB
 *
dbp
;

278 
DBT
 
key
;

279 
t
;

281 
dbp
 = 
db185p
->dbp;

283 
	`memt
(&
key
, 0, (key));

284 
key
.
da
 = 
key185
->data;

285 
key
.
size
 = 
key185
->size;

287 i(
ags
 & ~
R_CURSOR
)

288 
ev
;

289 i(
ags
 & 
R_CURSOR
)

290 
t
 = 
db185p
->
dbc
->
	`d
(db185p->dbc, 0);

292 
t
 = 
dbp
->
	`d
(dbp, 
NULL
, &
key
, 0);

294 
t
) {

297 
DB_NOTFOUND
:

302 
ev
: 
t
 = 
EINVAL
;

304 
	`__os_t_o
(
t
);

306 
	}
}

309 
	$db185_fd
(
db185p
)

310 cڡ 
DB185
 *
db185p
;

312 
DB
 *
dbp
;

313 
fd
, 
t
;

315 
dbp
 = 
db185p
->dbp;

317 i((
t
 = 
dbp
->
	`fd
(dbp, &
fd
)) == 0)

318  (
fd
);

320 
	`__os_t_o
(
t
);

322 
	}
}

325 
	$db185_g
(
db185p
, 
key185
, 
da185
, 
ags
)

326 cڡ 
DB185
 *
db185p
;

327 cڡ 
DBT185
 *
key185
;

328 
DBT185
 *
da185
;

329 
u_t
 
ags
;

331 
DB
 *
dbp
;

332 
DBT
 
key
, 
da
;

333 
t
;

335 
dbp
 = 
db185p
->dbp;

337 
	`memt
(&
key
, 0, (key));

338 
key
.
da
 = 
key185
->data;

339 
key
.
size
 = 
key185
->size;

340 
	`memt
(&
da
, 0, (data));

341 
da
.d
da185
->data;

342 
da
.
size
 = 
da185
->size;

344 i(
ags
)

345 
ev
;

347 
t
 = 
dbp
->
	`g
(dbp, 
NULL
, &
key
, &
da
, 0)) {

349 
da185
->
da
 = data.data;

350 
da185
->
size
 = 
da
.size;

352 
DB_NOTFOUND
:

357 
ev
: 
t
 = 
EINVAL
;

359 
	`__os_t_o
(
t
);

361 
	}
}

364 
	$db185_put
(
db185p
, 
key185
, 
da185
, 
ags
)

365 cڡ 
DB185
 *
db185p
;

366 
DBT185
 *
key185
;

367 cڡ 
DBT185
 *
da185
;

368 
u_t
 
ags
;

370 
DB
 *
dbp
;

371 
DBC
 *
db_put
;

372 
DBT
 
key
, 
da
;

373 
t
, 
t_t
;

375 
dbp
 = 
db185p
->dbp;

377 
	`memt
(&
key
, 0, (key));

378 
key
.
da
 = 
key185
->data;

379 
key
.
size
 = 
key185
->size;

380 
	`memt
(&
da
, 0, (data));

381 
da
.d
da185
->data;

382 
da
.
size
 = 
da185
->size;

384 
ags
) {

386 
t
 = 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0);

388 
R_CURSOR
:

389 
t
 = 
db185p
->
dbc
->
	`put
(db185p->dbc, &
key
, &
da
, 
DB_CURRENT
);

391 
R_IAFTER
:

392 
R_IBEFORE
:

393 i(
dbp
->
ty
 !
DB_RECNO
)

394 
ev
;

396 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &
db_put
, 0)) != 0)

398 i((
t
 =

399 
db_put
->
	`g
(db_put, &
key
, &
da
, 
DB_SET
)) == 0) {

400 
	`memt
(&
da
, 0, (data));

401 
da
.d
da185
->data;

402 
da
.
size
 = 
da185
->size;

403 
t
 = 
db_put
->
	`put
(db_put, &
key
, &
da
,

404 
ags
 =
R_IAFTER
 ? 
DB_AFTER
 : 
DB_BEFORE
);

406 i((
t_t
 = 
db_put
->
	`o
(db_put)!0 && 
t
 == 0)

407 
t
 = 
t_t
;

409 
R_NOOVERWRITE
:

410 
t
 = 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 
DB_NOOVERWRITE
);

412 
R_SETCURSOR
:

413 i(
dbp
->
ty
 !
DB_BTREE
 && dbp->ty !
DB_RECNO
)

414 
ev
;

416 i((
t
 = 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0)) != 0)

418 
t
 =

419 
db185p
->
dbc
->
	`g
(db185p->dbc, &
key
, &
da
, 
DB_SET_RANGE
);

422 
ev
;

425 
t
) {

427 
key185
->
da
 = 
key
.data;

428 
key185
->
size
 = 
key
.size;

430 
DB_KEYEXIST
:

435 
ev
: 
t
 = 
EINVAL
;

437 
	`__os_t_o
(
t
);

439 
	}
}

442 
	$db185_q
(
db185p
, 
key185
, 
da185
, 
ags
)

443 cڡ 
DB185
 *
db185p
;

444 
DBT185
 *
key185
, *
da185
;

445 
u_t
 
ags
;

447 
DB
 *
dbp
;

448 
DBT
 
key
, 
da
;

449 
t
;

451 
dbp
 = 
db185p
->dbp;

453 
	`memt
(&
key
, 0, (key));

454 
key
.
da
 = 
key185
->data;

455 
key
.
size
 = 
key185
->size;

456 
	`memt
(&
da
, 0, (data));

457 
da
.d
da185
->data;

458 
da
.
size
 = 
da185
->size;

460 
ags
) {

461 
R_CURSOR
:

462 
ags
 = 
DB_SET_RANGE
;

464 
R_FIRST
:

465 
ags
 = 
DB_FIRST
;

467 
R_LAST
:

468 i(
dbp
->
ty
 !
DB_BTREE
 && dbp->ty !
DB_RECNO
)

469 
ev
;

470 
ags
 = 
DB_LAST
;

472 
R_NEXT
:

473 
ags
 = 
DB_NEXT
;

475 
R_PREV
:

476 i(
dbp
->
ty
 !
DB_BTREE
 && dbp->ty !
DB_RECNO
)

477 
ev
;

478 
ags
 = 
DB_PREV
;

481 
ev
;

483 
t
 = 
db185p
->
dbc
->
	`g
(db185p->dbc, &
key
, &
da
, 
ags
)) {

485 
key185
->
da
 = 
key
.data;

486 
key185
->
size
 = 
key
.size;

487 
da185
->
da
 = data.data;

488 
da185
->
size
 = 
da
.size;

490 
DB_NOTFOUND
:

495 
ev
: 
t
 = 
EINVAL
;

497 
	`__os_t_o
(
t
);

499 
	}
}

502 
	$db185_sync
(
db185p
, 
ags
)

503 cڡ 
DB185
 *
db185p
;

504 
u_t
 
ags
;

506 
DB
 *
dbp
;

507 
t
;

509 
dbp
 = 
db185p
->dbp;

511 
ags
) {

514 
R_RECNOSYNC
:

519 
	#RSMSG
 \

520 "Bkey DB: DB 1.85'R_RECNOSYNC synag in su܋d.\n"

	)

521 
dbp
->
	`rx
(dbp, "%s", 
RSMSG
);

524 
ev
;

527 i((
t
 = 
dbp
->
	`sync
(dbp, 0)) == 0)

531 
ev
: 
t
 = 
EINVAL
;

533 
	`__os_t_o
(
t
);

535 
	}
}

542 
	$db185_com
(
dbp
, 
a
, 
b
)

543 
DB
 *
dbp
;

544 cڡ 
DBT
 *
a
, *
b
;

546 
DBT185
 
a185
, 
b185
;

548 
a185
.
da
 = 
a
->data;

549 
a185
.
size
 = 
a
->size;

550 
b185
.
da
 = 
b
->data;

551 
b185
.
size
 = 
b
->size;

553  (((
DB185
 *)
dbp
->
i_
)->
	`com
(&
a185
, &
b185
));

554 
	}
}

560 
size_t


561 
	$db185_efix
(
dbp
, 
a
, 
b
)

562 
DB
 *
dbp
;

563 cڡ 
DBT
 *
a
, *
b
;

565 
DBT185
 
a185
, 
b185
;

567 
a185
.
da
 = 
a
->data;

568 
a185
.
size
 = 
a
->size;

569 
b185
.
da
 = 
b
->data;

570 
b185
.
size
 = 
b
->size;

572  (((
DB185
 *)
dbp
->
i_
)->
	`efix
(&
a185
, &
b185
));

573 
	}
}

579 
u_t32_t


580 
	$db185_hash
(
dbp
, 
key
, 
n
)

581 
DB
 *
dbp
;

582 cڡ *
key
;

583 
u_t32_t
 
n
;

585  (((
DB185
 *)
dbp
->
i_
)->
	`hash
(
key
, (
size_t
)
n
));

586 
	}
}

	@../db_archive/db_archive.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
ma
 
__P
((, *[]));

19 
uge
 
__P
(());

20 
vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$ma
(
gc
, 
gv
)

26 
gc
;

27 *
gv
[];

29 
*
ݏrg
;

30 

td
;

31 
DB_ENV
 *
dbv
;

32 
u_t32_t
 
ags
;

33 
ch
, 
exv
, 
t
, 
vbo
;

34 **
fe
, *
home
, **
li
, *
sswd
;

36 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

37 
ogme
 = 
gv
[0];

39 ++
ogme
;

41 i((
t
 = 
	`vsi_check
()) != 0)

42  (
t
);

44 
dbv
 = 
NULL
;

45 
ags
 = 0;

46 
exv
 = 
vbo
 = 0;

47 
home
 = 
sswd
 = 
NULL
;

48 
fe
 = 
li
 = 
NULL
;

49 (
ch
 = 
	`gt
(
gc
, 
gv
, "adh:lP:sVv")!
EOF
)

50 
ch
) {

52 
	`LF_SET
(
DB_ARCH_ABS
);

55 
	`LF_SET
(
DB_ARCH_REMOVE
);

58 
home
 = 
ݏrg
;

61 
	`LF_SET
(
DB_ARCH_LOG
);

64 
sswd
 = 
	`rdup
(
ݏrg
);

65 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

66 i(
sswd
 =
NULL
) {

67 
	`rtf
(
dr
, "%s: strdup: %s\n",

68 
ogme
, 
	`
(
o
));

69  (
EXIT_FAILURE
);

73 
	`LF_SET
(
DB_ARCH_DATA
);

76 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

77  (
EXIT_SUCCESS
);

85 
vbo
 = 1;

89  (
	`uge
());

91 
gc
 -
td
;

92 
gv
 +
td
;

94 i(
gc
 != 0)

95  (
	`uge
());

98 
	`__db_ut_sig
();

104 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

105 
	`rtf
(
dr
,

106 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

107 
shutdown
;

110 
dbv
->
	`t_rfe
(dbv, 
dr
);

111 
dbv
->
	`t_fx
(dbv, 
ogme
);

113 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

114 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

115 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

116 
shutdown
;

122 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

123 (
t
 =
DB_VERSION_MISMATCH
 ||

124 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 |

125 
DB_INIT_LOG
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0)) != 0)) {

126 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

127 
shutdown
;

131 i((
t
 = 
dbv
->
	`log_chive
(dbv, &
li
, 
ags
)) != 0) {

132 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_archive");

133 
shutdown
;

137 i(
li
 !
NULL
) {

138 
fe
 = 
li
; *f!
NULL
; ++file)

139 
	`tf
("%s\n", *
fe
);

140 
	`
(
li
);

144 
shutdown
: 
exv
 = 1;

146 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

147 
exv
 = 1;

148 
	`rtf
(
dr
,

149 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

152 i(
sswd
 !
NULL
)

153 
	`
(
sswd
);

156 
	`__db_ut_signd
();

158  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

159 
	}
}

162 
	$uge
()

164 ()
	`rtf
(
dr
,

165 "uge: %[-adlsVv] [-h home] [-Passwd]\n", 
ogme
);

166  (
EXIT_FAILURE
);

167 
	}
}

170 
	$vsi_check
()

172 
v_maj
, 
v_m
, 
v_tch
;

175 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

176 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

177 
	`rtf
(
dr
,

179 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

180 
v_maj
, 
v_m
);

181  (
EXIT_FAILURE
);

184 
	}
}

	@../db_checkpoint/db_checkpoint.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
ma
 
__P
((, *[]));

19 
uge
 
__P
(());

20 
vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$ma
(
gc
, 
gv
)

26 
gc
;

27 *
gv
[];

29 
*
ݏrg
;

30 

td
;

31 
DB_ENV
 *
dbv
;

32 
time_t
 
now
;

33 
gv
;

34 
u_t32_t
 
ags
, 
kbys
, 
mus
, 
cds
;

35 
ch
, 
exv
, 

, 
t
, 
vbo
;

36 *
home
, *
logfe
, *
sswd
, 
time_buf
[
CTIME_BUFLEN
];

38 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

39 
ogme
 = 
gv
[0];

41 ++
ogme
;

43 i((
t
 = 
	`vsi_check
()) != 0)

44  (
t
);

51 
	#MAX_UINT32_T
 2147483647

	)

53 
dbv
 = 
NULL
;

54 
kbys
 = 
mus
 = 0;

55 
exv
 = 

 = 
vbo
 = 0;

56 
ags
 = 0;

57 
home
 = 
logfe
 = 
sswd
 = 
NULL
;

58 (
ch
 = 
	`gt
(
gc
, 
gv
, "1h:k:L:P:p:Vv")!
EOF
)

59 
ch
) {

61 

 = 1;

62 
ags
 = 
DB_FORCE
;

65 
home
 = 
ݏrg
;

68 i(
	`__db_glg
(
NULL
, 
ogme
,

69 
ݏrg
, 1, ()
MAX_UINT32_T
, &
gv
))

70  (
EXIT_FAILURE
);

71 
kbys
 = (
u_t32_t
)
gv
;

74 
logfe
 = 
ݏrg
;

77 
sswd
 = 
	`rdup
(
ݏrg
);

78 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

79 i(
sswd
 =
NULL
) {

80 
	`rtf
(
dr
, "%s: strdup: %s\n",

81 
ogme
, 
	`
(
o
));

82  (
EXIT_FAILURE
);

86 i(
	`__db_glg
(
NULL
, 
ogme
,

87 
ݏrg
, 1, ()
MAX_UINT32_T
, &
gv
))

88  (
EXIT_FAILURE
);

89 
mus
 = (
u_t32_t
)
gv
;

92 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

93  (
EXIT_SUCCESS
);

95 
vbo
 = 1;

99  (
	`uge
());

101 
gc
 -
td
;

102 
gv
 +
td
;

104 i(
gc
 != 0)

105  (
	`uge
());

107 i(

 =0 && 
kbys
 =0 && 
mus
 == 0) {

108 ()
	`rtf
(
dr
,

110 
ogme
);

111  (
	`uge
());

115 
	`__db_ut_sig
();

118 i(
logfe
 !
NULL
 && 
	`__db_ut_logt
(
ogme
,ogfile))

119 
shutdown
;

125 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

126 
	`rtf
(
dr
,

127 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

128 
shutdown
;

131 
dbv
->
	`t_rfe
(dbv, 
dr
);

132 
dbv
->
	`t_fx
(dbv, 
ogme
);

134 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

135 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

136 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

137 
shutdown
;

144 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

145 (!

 || 
t
 =
DB_VERSION_MISMATCH
 ||

146 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

147 
DB_CREATE
 | 
DB_INIT_TXN
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0)) != 0)) {

148 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

149 
shutdown
;

157 
cds
 = 
kbys
 !0 ? 30 : 
mus
 * 60;

158 !
	`__db_ut_ued
()) {

159 i(
vbo
) {

160 ()
	`time
(&
now
);

161 
dbv
->
	`rx
(dbenv,

162 "checkpobeg: %s", 
	`__db_ime
(&
now
, 
time_buf
));

165 i((
t
 = 
dbv
->
	`txn_checkpot
(dbenv,

166 
kbys
, 
mus
, 
ags
)) != 0) {

167 
dbv
->
	`r
(dbv, 
t
, "txn_checkpoint");

168 
shutdown
;

171 i(
vbo
) {

172 ()
	`time
(&
now
);

173 
dbv
->
	`rx
(dbenv,

174 "checkpocome: %s", 
	`__db_ime
(&
now
, 
time_buf
));

177 i(

)

180 
	`__os_p
(
dbv
, 
cds
, 0);

184 
shutdown
: 
exv
 = 1;

188 i(
logfe
 !
NULL
)

189 ()
	`move
(
logfe
);

192 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

193 
exv
 = 1;

194 
	`rtf
(
dr
,

195 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

198 i(
sswd
 !
NULL
)

199 
	`
(
sswd
);

202 
	`__db_ut_signd
();

204  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

205 
	}
}

208 
	$uge
()

210 ()
	`rtf
(
dr
, "uge: %[-1Vv]\n\t%s\n", 
ogme
,

212  (
EXIT_FAILURE
);

213 
	}
}

216 
	$vsi_check
()

218 
v_maj
, 
v_m
, 
v_tch
;

221 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

222 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

223 
	`rtf
(
dr
,

225 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

226 
v_maj
, 
v_m
);

227  (
EXIT_FAILURE
);

230 
	}
}

	@../db_codegen/code_capi.c

9 
	~"db_codeg.h
"

11 
FILE
 *
	gof
;

13 
i_c_back
 
__P
((
DB_OBJ
 *));

14 
i_c_com
 
__P
((
DB_OBJ
 *));

15 
i_c_da
 
__P
(());

16 
i_c_db
 
__P
(());

17 
i_c_v
 
__P
(());

18 
i_c_hd
 
__P
(());

19 
i_c_public_da
 
__P
(());

20 
i_c_public_func
 
__P
(());

21 
i_c_shutdown
 
__P
(());

24 
	$i_c
(
oame
)

25 *
oame
;

27 
DB_OBJ
 *
cur_db
;

28 
ENV_OBJ
 *
cur_v
;

31 i(
oame
 =
NULL
)

32 
oame
 = "application.c";

33 i((
of
 = 
	`fݒ
(
oame
, "w")=
NULL
) {

34 
	`rtf
(
dr
,

35 "%s: %s: %s\n", 
ogme
, 
oame
, 
	`
(
o
));

40 
	`i_c_hd
();

43 
	`i_c_public_da
();

46 
	`TAILQ_FOREACH
(
cur_v
, &
v_
, 
q
)

47 
	`TAILQ_FOREACH
(
cur_db
, &
cur_v
->
dbq
, 
q
)

48 i(
cur_db
->
imy
 !
NULL
)

49 
	`i_c_back
(
cur_db
);

52 
	`TAILQ_FOREACH
(
cur_v
, &
v_
, 
q
)

53 
	`TAILQ_FOREACH
(
cur_db
, &
cur_v
->
dbq
, 
q
)

54 i(
cur_db
->
key_ty
 !
NULL
)

55 
	`i_c_com
(
cur_db
);

58 
	`i_c_da
();

61 
	`i_c_public_func
();

64 
	`i_c_v
();

67 
	`i_c_db
();

70 
	`i_c_shutdown
();

73 
	}
}

76 
	$i_c_hd
()

79 
	`rtf
(
of
, "\
#include <sys/types.h>\n\
#include <sys/stat.h>\n\
\n\
#include <errno.h>\n\
#include <stdlib.h>\n\
#include <string.h>\n\
\n\
#ifdef _WIN32\n\
#include <direct.h>\n\
\n\
#define\tmkdir(dir,erm)\t_mkdir(dir)\n\
#endif\n\
\n\
#include \"db.h\"\n\n");

94 
	}
}

97 
	$i_c_public_da
()

99 
ENV_OBJ
 *
cur_v
;

100 
DB_OBJ
 *
cur_db
;

109 
	`rtf
(
of
, "\
/* Globalnvironmentnd database handles for use byhepplication */\n");

111 
	`TAILQ_FOREACH
(
cur_v
, &
v_
, 
q
) {

112 i(!
cur_v
->
de
)

113 
	`rtf
(
of
,

115 
cur_v
->
efix
);

116 
	`TAILQ_FOREACH
(
cur_db
, &
cur_v
->
dbq
, 
q
)

117 i(
cur_v
->
de
)

118 
	`rtf
(
of
,

120 
cur_db
->
me
);

122 
	`rtf
(
of
,

124 
cur_v
->
efix
, 
cur_db
->
me
);

127 
	`rtf
(
of
, "\
\n\
/* Public functions for use byhepplication */\n\
 bdb_startup(void);\n\
 bdb_shutdown(void);\n");

132 
	}
}

135 
	$i_c_da
()

137 
DB_OBJ
 *
cur_db
;

138 
ENV_OBJ
 *
cur_v
;

139 
f
;

141 
	`rtf
(
of
, "\
\n\
/* DB_ENV initialization structures */\n\
 struct {\n\
\tDB_ENV **envpp;\n\
\tchar *home;\n\
\tu_int32_t gbytes;\n\
\tu_int32_t bytes;\n\
\tu_int32_tcache;\n\
\tintrivate;\n\
\tintransaction;\n\
}nv_list_t;\n\
nv_list_tnv_list[] = {\n");

155 
f
 = 1;

156 
	`TAILQ_FOREACH
(
cur_v
, &
v_
, 
q
)

157 i(!
cur_v
->
de
) {

158 
	`rtf
(
of
,

160 
f
 ? "" : " },\n",

161 
cur_v
->
efix
,

162 
cur_v
->
home
,

163 (
u_lg
)
cur_v
->
gbys
,

164 (
u_lg
)
cur_v
->
bys
,

165 (
u_lg
)
cur_v
->
nche
,

166 
cur_v
->
ive
,

167 
cur_v
->
i
);

168 
f
 = 0;

170 
	`rtf
(
of
, " }\n};\n\n");

172 
	`rtf
(
of
, "\
/* DB initialization structures */\n\
 struct db_list_t {\n\
\tDB_ENV **envpp;\n\
\tDB **dbpp;\n\
\tchar *name;\n\
\tDBTYPEype;\n\
\tu_int32_txtentsize;\n\
\tu_int32_tagesize;\n\
\tu_int32_te_len;\n\
\tint (*key_compare)(DB *, const DBT *, const DBT *);\n\
\tDB **primaryp;\n\
\tint (*secondary_callback)(DB *, const DBT *, const DBT *, DBT *);\n\
\tint dupsort;\n\
\tintecnum;\n\
\tintransaction;\n\
} db_list_t;\n\
 db_list_t db_list[] = {\n");

191 
f
 = 1;

192 
	`TAILQ_FOREACH
(
cur_v
, &
v_
, 
q
)

193 
	`TAILQ_FOREACH
(
cur_db
, &
cur_v
->
dbq
, 
q
) {

194 
	`rtf
(
of
, "\
%s\t{ %s%s%s, &%s%s%s, \"%s\", %s, %lu, %lu, %lu,\n\
\t\t%s%s%s, %s%s%s%s, %s%s%s, %d, %d, %d",

197 
f
 ? "" : " },\n",

198 
cur_v
->
de
 ? "" : "&",

199 
cur_v
->
de
 ? "NULL" : cur_v->
efix
,

200 
cur_v
->
de
 ? "" : "_dbenv",

201 
cur_v
->
efix
 =
NULL
 ?

202 
cur_db
->
me
 : 
cur_v
->
efix
,

203 
cur_v
->
efix
 =
NULL
 ? "" : "_",

204 
cur_v
->
efix
 =
NULL
 ? "" : 
cur_db
->
me
,

205 
cur_db
->
me
,

206 
cur_db
->
dbty
,

207 (
u_lg
)
cur_db
->
exsize
,

208 (
u_lg
)
cur_db
->
gesize
,

209 (
u_lg
)
cur_db
->
_n
,

210 
cur_db
->
key_ty
 =
NULL
 ? "NULL" : "bdb_",

211 
cur_db
->
key_ty
 =
NULL
 ? "" : cur_db->key_type,

212 
cur_db
->
key_ty
 =
NULL
 ? "" : "_compare",

213 
cur_db
->
imy
 =
NULL
 ? "NULL" : "&",

214 
cur_db
->
imy
 =
NULL
 ? "" : 
cur_v
->
efix
,

215 
cur_db
->
imy
 =
NULL
 ? "" : "_",

216 
cur_db
->
imy
 =
NULL
 ? "" : cur_db->primary,

217 
cur_db
->
imy
 =
NULL
 ? "NULL" : "bdb_",

218 
cur_db
->
imy
 =
NULL
 ? "" : cur_db->
me
,

219 
cur_db
->
imy
 =
NULL
 ? "" : "_callback",

220 
cur_db
->
dupst
,

221 
cur_db
->
um
,

222 
cur_db
->
i
);

223 
f
 = 0;

225 
	`rtf
(
of
, " }\n};\n\n");

226 
	}
}

229 
	$i_c_public_func
()

231 
	`rtf
(
of
, "\
#ifdef BUILD_STANDALONE\n\
\n\
()\n\
{\n\
\treturn (bdb_startup() && bdb_shutdown() ? EXIT_FAILURE : EXIT_SUCCESS);\n\
}\n\
#endif\n\n");

241 
	`rtf
(
of
, "\
 int bdb_env_startup(env_list_t *);\n\
 int bdb_env_shutdown(env_list_t *);\n\
 int bdb_db_startup(db_list_t *);\n\
 int bdb_db_shutdown(db_list_t *);\n\
\n");

248 
	`rtf
(
of
, "\
/*\n\
* bdb_startup --\n\
*\tStart uphenvironmentsnd databases.\n\
*/\n\
\nbdb_startup()\n{\n\
\tu_int i;\n\
\n\
\t/* Opennvironments. */\n\
\tfor (i = 0; i < sizeof(env_list) / sizeof(env_list[0]); ++i)\n\
\t\tif (bdb_env_startup(&env_list[i]))\n\
\t\t\treturn (1);\n\
\t/* Openrimary databases. */\n\
\tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\
\t\tif (db_list[i].primaryp == NULL &&\n\
\t\t bdb_db_startup(&db_list[i]))\n\
\t\t\treturn (1);\n\
\t/* Open secondary databases. */\n\
\tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\
\t\tif (db_list[i].primaryp != NULL &&\n\
\t\t bdb_db_startup(&db_list[i]))\n\
\t\t\treturn (1);\n\
\treturn (0);\n\
}\n");

273 
	`rtf
(
of
, "\
\n\
/*\n\
* bdb_shutdown --\n\
*\tShut downhenvironmentsnd databases.\n\
*/\n\
\nbdb_shutdown()\n{\n\
\tu_int i;\n\
\n\
\t/* Close secondary databases. */\n\
\tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\
\t\tif (db_list[i].primaryp != NULL &&\n\
\t\t bdb_db_shutdown(&db_list[i]))\n\
\t\t\treturn (1);\n\
\t/* Closerimary databases. */\n\
\tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\
\t\tif (db_list[i].primaryp == NULL &&\n\
\t\t bdb_db_shutdown(&db_list[i]))\n\
\t\t\treturn (1);\n\
\t/* Closenvironments. */\n\
\tfor (i = 0; i < sizeof(env_list) / sizeof(env_list[0]); ++i)\n\
\t\tif (bdb_env_shutdown(&env_list[i]))\n\
\t\t\treturn (1);\n\
\treturn (0);\n\
}\n");

298 
	}
}

301 
	$i_c_v
()

303 
	`rtf
(
of
, "\
\n\
 int\nbdb_env_startup(env_list_t *ep)\n{\n\
\tstruct stat sb;\n\
\tDB_ENV *dbenv;\n\
\tu_int32_t open_flags;\n\
\tintet;\n\
\n\
\t/*\n\
\t * Ifhe directory doesn'txist, create it withermissionsimited\n\
\t *ohe owner. Assumerrors caused byhe directoryotxisting;\n\
\t * we'dikeovoid interpreting systemrrorsnd it won't hurto\n\
\t *ttempto createnxisting directory.\n\
\t *\n\
\t * !!!\n\
\t * We use octal forheermissions,othinglse isortable.\n\
\t */\n\
\tif (stat(ep->home, &sb) != 0)\n\
\t\t(void)mkdir(ep->home, 0700);\n\
\n\
\t/*\n\
\t * Ifhenvironment isotransactional,emovende-create it.\n\
\t */\n\
\tif (!ep->transaction) {\n\
\t\tif ((ret = db_env_create(&dbenv, 0)) != 0) {\n\
\t\t\tfprintf(stderr, \"db_env_create: %%s\", db_strerror(ret));\n\
\t\t\treturn (1);\n\
\t\t}\n\
\t\tif ((ret = dbenv->remove(dbenv,p->home, DB_FORCE)) != 0) {\n\
\t\t\tdbenv->err(dbenv,et,\n\
\t\t\t \"DB_ENV->remove: %%s\",p->home);\n\
\t\t\tgotorr;\n\
\t\t}\n\
\t}\n\n");

338 
	`rtf
(
of
, "\
\t/*\n\
\t * Createhe DB_ENV handlend initializerroreporting.\n\
\t */\n\
\tif ((ret = db_env_create(&dbenv, 0)) != 0) {\n\
\t\tfprintf(stderr, \"db_env_create: %%s\", db_strerror(ret));\n\
\t\treturn (1);\n\
\t}\n");

347 
	`rtf
(
of
, "\
\tdbenv->set_errpfx(dbenv,p->home);\n\
\tdbenv->set_errfile(dbenv, stderr);\n\n");

351 
	`rtf
(
of
, "\
\t /* Configurehe cache size. */\n\
\tif ((ep->gbytes != 0 ||p->bytes != 0) &&\n\
\t (ret = dbenv->set_cachesize(dbenv,\n\
\tp->gbytes,p->bytes,p->ncache)) != 0) {\n\
\t\tdbenv->err(dbenv,et, \"DB_ENV->set_cachesize\");\n\
\t\tgotorr;\n\
\t}\n");

360 
	`rtf
(
of
, "\
\n\
\t/*\n\
\t * Openhenvironment.\n\
\t */\n\
\topen_flags = DB_CREATE | DB_INIT_MPOOL | DB_THREAD;\n\
\tif (ep->private)\n\
\t open_flags |= DB_PRIVATE;\n\
\tif (ep->transaction)\n\
\t open_flags |= DB_INIT_LOCK |\n\
\t DB_INIT_LOG | DB_INIT_TXN | DB_RECOVER;\n\
\tif ((ret = dbenv->open(dbenv,p->home, open_flags, 0)) != 0) {\n\
\t dbenv->err(dbenv,et, \"DB_ENV->open: %%s\",p->home);\n\
\t gotorr;\n\
\t}\n\
\n\
\t*ep->envpp = dbenv;\n\
\treturn (0);\n\
\n\
:\t(void)dbenv->close(dbenv, 0);\n\
\treturn (1);\n\
}");

382 
	}
}

385 
	$i_c_db
()

387 
	`rtf
(
of
, "\
\n\
\nstatic int\nbdb_db_startup(db_list_t *dp)\n\
{\n\
\tDB_ENV *dbenv;\n\
\tDB *dbp;\n\
\tintet;\n\
\n\
\tdbenv = dp->envpp == NULL ? NULL : *dp->envpp;\n\
\n\
\t/*\n\
\t * Ifhe database isotransactional,emove itnde-create it.\n\
\t */\n\
\tif (!dp->transaction) {\n\
\t\tif ((ret = db_create(&dbp, dbenv, 0)) != 0) {\n\
\t\t\tif (dbenv == NULL)\n\
\t\t\t\tfprintf(stderr,\n\
\t\t\t\t \"db_create: %%s\\n\", db_strerror(ret));\n\
\t\t\telse\n\
\t\t\t\tdbenv->err(dbenv,et, \"db_create\");\n\
\t\t\treturn (1);\n\
\t\t}\n\
\t\tif ((ret = dbp->remove(\n\
\t\t dbp, dp->name, NULL, 0)) != 0 &&et != ENOENT) {\n\
\t\t\tif (dbenv == NULL)\n\
\t\t\t\tfprintf(stderr,\n\
\t\t\t\t \"DB->remove: %%s: %%s\\n\",\n\
\t\t\t\t dp->name, db_strerror(ret));\n\
\t\t\telse\n\
\t\t\t\tdbenv->err(\n\
\t\t\t\t dbenv,et, \"DB->remove: %%s\", dp->name);\n\
\t\t\treturn (1);\n\
\t\t}\n\
\t}\n");

422 
	`rtf
(
of
, "\
\n\
\tif ((ret = db_create(&dbp, dbenv, 0)) != 0) {\n\
\t\tif (dbenv == NULL)\n\
\t\t\tfprintf(stderr, \"db_create: %%s\\n\", db_strerror(ret));\n\
\t\telse\n\
\t\t\tdbenv->err(dbenv,et, \"db_create\");\n\
\t\treturn (1);\n\
\t}\n\
\tif (dbenv == NULL) {\n\
\t\tdbp->set_errpfx(dbp, dp->name);\n\
\t\tdbp->set_errfile(dbp, stderr);\n\
\t}\n");

436 
	`rtf
(
of
, "\
\n\
\tif (dp->dupsort && (ret = dbp->set_flags(dbp, DB_DUPSORT)) != 0) {\n\
\t\tdbp->err(dbp,et, \"DB->set_flags: DB_DUPSORT: %%s\", dp->name);\n\
\t\tgotorr;\n\
\t}\n");

443 
	`rtf
(
of
, "\
\n\
\tif (dp->recnum && (ret = dbp->set_flags(dbp, DB_RECNUM)) != 0) {\n\
\t\tdbp->err(dbp,et, \"DB->set_flags: DB_RECNUM: %%s\", dp->name);\n\
\t\tgotorr;\n\
\t}\n");

450 
	`rtf
(
of
, "\
\n\
\tif (dp->extentsize != 0 &&\n\
\t (ret = dbp->set_q_extentsize(dbp, dp->extentsize)) != 0) {\n\
\t\tdbp->err(dbp,et,\n\
\t\t \"DB->set_q_extentsize: %%lu: %%s\",\n\
\t\t (u_long)dp->extentsize, dp->name);\n\
\t\tgotorr;\n\
\t}\n");

460 
	`rtf
(
of
, "\
\n\
\tif (dp->pagesize != 0 &&\n\
\t (ret = dbp->set_pagesize(dbp, dp->pagesize)) != 0) {\n\
\t\tdbp->err(dbp,et,\n\
\t\t \"DB->set_pagesize: %%lu: %%s\",\n\
\t\t (u_long)dp->pagesize, dp->name);\n\
\t\tgotorr;\n\
\t}\n");

470 
	`rtf
(
of
, "\
\n\
\tif (dp->re_len != 0 &&\n\
\t (ret = dbp->set_re_len(dbp, dp->re_len)) != 0) {\n\
\t\tdbp->err(dbp,et,\n\
\t\t \"DB->set_re_len: %%lu: %%s\",\n\
\t\t (u_long)dp->re_len, dp->name);\n\
\t\tgotorr;\n\
\t}\n");

480 
	`rtf
(
of
, "\
\n\
\tif (dp->key_compare != NULL &&\n\
\t (ret = dbp->set_bt_compare(dbp, dp->key_compare)) != 0) {\n\
\t\tdbp->err(dbp,et, \"DB->set_bt_compare\");\n\
\t\tgotorr;\n\
\t}\n");

488 
	`rtf
(
of
, "\
\n\
\tif ((ret = dbp->open(dbp, NULL, dp->name, NULL, dp->type,\n\
\t (dp->transaction ? DB_AUTO_COMMIT : 0) |\n\
\t DB_CREATE | DB_THREAD, 0)) != 0) {\n\
\t\tdbp->err(dbp,et, \"DB->open: %%s\", dp->name);\n\
\t\tgotorr;\n\
\t}\n");

497 
	`rtf
(
of
, "\
\n\
\tif (dp->primaryp != NULL &&\n\
\t (ret = dbp->associate(*dp->primaryp,\n\
\t NULL, dbp, dp->secondary_callback, DB_CREATE)) != 0) {\n\
\t\tdbp->err(dbp,et, \"DB->associate: %%s\", dp->name);\n\
\t\tgotorr;\n\
\t}\n");

506 
	`rtf
(
of
, "\
\n\
\t*dp->dbpp = dbp;\n\
\treturn (0);\n\
\nerr:\t(void)dbp->close(dbp, 0);\n\
\treturn (1);\n\
}\n");

513 
	}
}

516 
	$i_c_back
(
cur_db
)

517 
DB_OBJ
 *
cur_db
;

519 
	`rtf
(
of
, "\
\n\
 i\nbdb_%s_back(DB *cdy, cڡ DBT *key, cڡ DBT *d, DBT *su)\n\
{\n", 
cur_db
->
me
);

524 i(
cur_db
->
cuom
) {

525 
	`rtf
(
of
, "\
\tcdy->rx(cdy,\n\
\ \"%s: missg clback comris funi\");\n\
\u (DB_DONOTINDEX);\n\
}\n", 
cur_db
->
me
);

530 
	`rtf
(
dr
,

532 
cur_db
->
me
);

534 
	`rtf
(
of
, "\
\esu->d&((u_t8_*)da->da)[%d];\n\
\esu->siz%d;\n\
\u (0);\n\
}\n", 
cur_db
->
cdy_off
, cur_db->
cdy_n
);

539 
	}
}

542 
	$i_c_com
(
cur_db
)

543 
DB_OBJ
 *
cur_db
;

545 
DB_OBJ
 *
t_db
;

546 
ENV_OBJ
 *
t_v
;

554 
	`TAILQ_FOREACH
(
t_v
, &
v_
, 
q
)

555 
	`TAILQ_FOREACH
(
t_db
, &
t_v
->
dbq
, 
q
) {

556 i(
t_db
 =
cur_db
)

557 
ouut
;

558 i(
t_db
->
key_ty
 =
NULL
)

560 i(
	`rcmp
(
t_db
->
key_ty
, 
cur_db
->key_type) == 0)

567 
ouut
: 
	`rtf
(
of
, "\
\n\
 i bdb_%s_com(DB *, cڡ DBT *, cڡ DBT *);\n\
\n\
 i\nbdb_%s_com(DB *dbp, cڡ DBT *a, cڡ DBT *b)\n\
{\n\
\t%ai, bi;\n\
\n\
\tmemy(&ai,->da, sizeofi));\n\
\tmemy(&bi, b->da, sizeof(bi));\n\
\u (a< b? -1 : (a> b? 1 : 0));\n\
}\n", 
cur_db
->
key_ty
, cur_db->key_type, cur_db->key_type);

579 
	}
}

582 
	$i_c_shutdown
()

584 
	`rtf
(
of
, "\
\n\
 int\nbdb_env_shutdown(env_list_t *ep)\n\
{\n\
\tDB_ENV *dbenv;\n\
\tintet;\n\
\n\
\tdbenv =p->envpp == NULL ? NULL : *ep->envpp;\n\
\tret = 0;\n\
\n\
\tif (dbenv != NULL && (ret = dbenv->close(dbenv, 0)) != 0)\n\
\t\tfprintf(stderr,\n\
\t\t \"DB_ENV->close: %%s: %%s\\n\",p->home, db_strerror(ret));\n\
\treturn (ret == 0 ? 0 : 1);\n\
}\n");

600 
	`rtf
(
of
, "\
\n\
 int\nbdb_db_shutdown(db_list_t *dp)\n\
{\n\
\tDB_ENV *dbenv;\n\
\tDB *dbp;\n\
\tintet;\n\
\n\
\tdbenv = dp->envpp == NULL ? NULL : *dp->envpp;\n\
\tdbp = *dp->dbpp;\n\
\tret = 0;\n\
\n\
\t/*\n\
\t * Ifhe database isransactionallyrotected, close without writing;\n\
\t * dirtyages; otherwise, flush dirtyageso disk.\n\
\t */\n\
\tif (dbp != NULL &&\n\
\t (ret = dbp->close(dbp, dp->transaction ? DB_NOSYNC : 0)) != 0) {\n\
\t\tif (dbenv == NULL)\n\
\t\t\tfprintf(stderr,\n\
\t\t\t \"DB->close: %%s: %%s\\n\", dp->name, db_strerror(ret));\n\
\t\telse\n\
\t\t\tdbenv->err(dbenv,et, \"DB->close: %%s\", dp->name);\n\
\t}\n\
\treturn (ret == 0 ? 0 : 1);\n\
}\n");

626 
	}
}

	@../db_codegen/code_parse.c

9 
	~"db_codeg.h
"

12 { 
	mPS_UNSET
, 
	mPS_ENV_SET
, 
	mPS_DB_SET
 } 
	gr_us
;

13 
ENV_OBJ
 *
	gcur_v
;

14 
DB_OBJ
 *
	gcur_db
;

16 
r_le
 
__P
((*, ));

19 
	$r_put
(

)

20 
FILE
 *

;

22 
lc
;

23 *
p
, *
t
, 
buf
[256];

25 
r_us
 = 
PS_UNSET
;

27 
lc
 = 1; 
	`fgs
(
buf
, (buf), 

!
NULL
; ++lc) {

28 i((
p
 = 
	`rchr
(
buf
, '\n')!
NULL
)

29 *
p
 = '\0';

30 i(
	`
(
buf
) + 1 == (buf)) {

31 
	`rtf
(
dr
, "%s: %d:tolg", 
ogme
, 
lc
);

36 
p
 = 
buf
; *!'\0' && 
	`isa
(()*p); ++p)

43 i(*
p
 == '\0' || *p == '#')

45 
t
 = 
p
; *t != '\0' && *t != '#'; ++t)

47 *
t
 = '\0';

49 i(
	`r_le
(
p
, 
lc
))

52 ()
	`fo
(

);

55 
	}
}

57 #unde
CONFIG_SLOTS


58 
	#CONFIG_SLOTS
 10

	)

60 #unde
CONFIG_GET_UINT32


61 
	#CONFIG_GET_UINT32
(
s
, 
vp
) do { \

62 i(
	`__db_gulg
(
NULL
, 
ogme
, 
s
, 0, 
UINT32_MAX
, 
vp
) != 0) \

63  (
EINVAL
); \

64 } 0)

	)

67 
	$r_le
(
s
, 
lc
)

68 *
s
;

69 
lc
;

71 
u_lg
 
uv
;

72 
nf
;

73 *
gv
[
CONFIG_SLOTS
], *
p
;

75 
nf
 = 
	`__cfig_l
(
s
, 
gv
);

80 i(
	`rcmp
(
gv
[0], "environment") == 0) {

81 i(
nf
 != 3 ||

82 
	`rcmp
(
gv
[2], "{"!0 || 
r_us
 !
PS_UNSET
)

83 
fm
;

85 i(
	`__os_oc
(
NULL
, 1, (*
cur_v
), &cur_env) ||

86 
	`__os_rdup
(
NULL
, 
gv
[1], &
cur_v
->
efix
))

87 
memy
;

88 
	`TAILQ_INIT
(&
cur_v
->
dbq
);

90 
	`TAILQ_INSERT_TAIL
(&
v_
, 
cur_v
, 
q
);

95 
cur_v
->
home
 = ".";

97 
r_us
 = 
PS_ENV_SET
;

100 i(
	`rcmp
(
gv
[0], "home") == 0) {

101 i(
nf
 !2 || 
r_us
 !
PS_ENV_SET
)

102 
fm
;

103 i(
	`__os_rdup
(
NULL
, 
gv
[1], &
cur_v
->
home
))

104 
memy
;

107 i(
	`rcmp
(
gv
[0], "cachesize") == 0) {

108 i(
nf
 !4 || 
r_us
 !
PS_ENV_SET
)

109 
fm
;

110 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv
);

111 
cur_v
->
gbys
 = 
uv
;

112 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv
);

113 
cur_v
->
bys
 = 
uv
;

114 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv
);

115 
cur_v
->
nche
 = 
uv
;

118 i(
	`rcmp
(
gv
[0], "private") == 0) {

119 i(
nf
 !1 || 
r_us
 !
PS_ENV_SET
)

120 
fm
;

121 
cur_v
->
ive
 = 1;

128 i(
	`rcmp
(
gv
[0], "database") == 0) {

129 i(
nf
 != 3 ||

130 
	`rcmp
(
gv
[2], "{"!0 || 
r_us
 =
PS_DB_SET
)

131 
fm
;

137 i(
r_us
 =
PS_UNSET
) {

138 i(
	`__os_oc
(
NULL
, 1, (*
cur_v
), &cur_env))

139 
memy
;

140 
	`TAILQ_INIT
(&
cur_v
->
dbq
);

141 
cur_v
->
de
 = 1;

143 
	`TAILQ_INSERT_TAIL
(&
v_
, 
cur_v
, 
q
);

146 i(
	`__os_oc
(
NULL
, 1, (*
cur_db
), &cur_db) ||

147 
	`__os_rdup
(
NULL
, 
gv
[1], &
cur_db
->
me
))

148 
memy
;

149 
	`TAILQ_INSERT_TAIL
(&
cur_v
->
dbq
, 
cur_db
, 
q
);

154 
cur_db
->
dbty
 = "DB_BTREE";

156 
r_us
 = 
PS_DB_SET
;

159 i(
	`rcmp
(
gv
[0], "custom") == 0) {

160 i(
nf
 !1 || 
r_us
 !
PS_DB_SET
)

161 
fm
;

162 
cur_db
->
cuom
 = 1;

165 i(
	`rcmp
(
gv
[0], "dupsort") == 0) {

166 i(
nf
 !1 || 
r_us
 !
PS_DB_SET
)

167 
fm
;

168 
cur_db
->
dupst
 = 1;

171 i(
	`rcmp
(
gv
[0], "extentsize") == 0) {

172 i(
nf
 !2 || 
r_us
 !
PS_DB_SET
)

173 
fm
;

174 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv
);

175 
cur_db
->
exsize
 = 
uv
;

178 i(
	`rcmp
(
gv
[0], "key_type") == 0) {

179 i(
nf
 !2 || 
r_us
 !
PS_DB_SET
)

180 
fm
;

181 i(
	`__os_rdup
(
NULL
, 
gv
[1], &
cur_db
->
key_ty
))

182 
memy
;

185 i(
	`rcmp
(
gv
[0], "pagesize") == 0) {

186 i(
nf
 !2 || 
r_us
 !
PS_DB_SET
)

187 
fm
;

188 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv
);

189 
cur_db
->
gesize
 = 
uv
;

192 i(
	`rcmp
(
gv
[0], "primary") == 0) {

193 i(
nf
 !2 || 
r_us
 !
PS_DB_SET
)

194 
fm
;

195 i(
	`__os_rdup
(
NULL
, 
gv
[1], &
cur_db
->
imy
))

196 
memy
;

199 i(
	`rcmp
(
gv
[0], "recnum") == 0) {

200 i(
nf
 !1 || 
r_us
 !
PS_DB_SET
)

201 
fm
;

202 
cur_db
->
um
 = 1;

205 i(
	`rcmp
(
gv
[0], "re_len") == 0) {

206 i(
nf
 !2 || 
r_us
 !
PS_DB_SET
)

207 
fm
;

208 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv
);

209 
cur_db
->
_n
 = 
uv
;

212 i(
	`rcmp
(
gv
[0], "secondary_offset") == 0) {

213 i(
nf
 !3 || 
r_us
 !
PS_DB_SET
)

214 
fm
;

215 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv
);

216 
cur_db
->
cdy_off
 = 
uv
;

217 
	`CONFIG_GET_UINT32
(
gv
[2], &
uv
);

218 
cur_db
->
cdy_n
 = 
uv
;

221 i(
	`rcmp
(
gv
[0], "transaction") == 0) {

222 i(
nf
 !1 || 
r_us
 !
PS_DB_SET
)

223 
fm
;

224 
cur_v
->
i
 = 
cur_db
->transaction = 1;

227 i(
	`rcmp
(
gv
[0], "type") == 0) {

228 i(
nf
 !2 || 
r_us
 !
PS_DB_SET
)

229 
fm
;

230 i(
	`rcmp
(
gv
[1], "btree") == 0)

231 
p
 = "DB_BTREE";

232 i(
	`rcmp
(
gv
[1], "hash") == 0)

233 
p
 = "DB_HASH";

234 i(
	`rcmp
(
gv
[1], "queue") == 0)

235 
p
 = "DB_QUEUE";

236 i(
	`rcmp
(
gv
[1], "recno") == 0)

237 
p
 = "DB_RECNO";

239 
fm
;

240 i(
	`__os_rdup
(
NULL
, 
p
, &
cur_db
->
dbty
))

241 
memy
;

248 i(
	`rcmp
(
gv
[0], "}") == 0) {

249 i(
nf
 != 1)

250 
fm
;

257 
r_us
) {

258 
PS_UNSET
:

259 
fm
;

260 
PS_DB_SET
:

261 
r_us
 =

262 
cur_v
->
de
 ? 
PS_UNSET
 : 
PS_ENV_SET
;

264 
PS_ENV_SET
:

265 
r_us
 = 
PS_UNSET
;

270 
fm
: 
	`rtf
(
dr
,

271 "%s:%d: %s: invid iut\n", 
ogme
, 
lc
, 
s
);

274 
memy
: 
	`rtf
(
dr
, "%s: %s\n", 
ogme
, 
	`db_
(
o
));

276 
	}
}

278 #ifde
DEBUG


280 
	$r_dump
()

282 
	`TAILQ_FOREACH
(
cur_v
, &
v_
, 
q
) {

283 
	`tf
("environment: %s\n",

284 
cur_v
->
de
 ? "de" : cur_v->
efix
);

286 i(
cur_v
->
home
 !
NULL
)

287 
	`tf
("\thome: %s\n", 
cur_v
->
home
);

288 i(
cur_v
->
gbys
 !0 || cur_v->
bys
 != 0)

289 
	`tf
("\tcachesize: %luGB, %luB, %lu\n",

290 (
u_lg
)
cur_v
->
gbys
,

291 (
u_lg
)
cur_v
->
bys
,

292 (
u_lg
)
cur_v
->
nche
);

294 i(
cur_v
->
ive
)

295 
	`tf
("\tprivate: yes\n");

296 i(
cur_v
->
i
)

297 
	`tf
("\ttransaction: yes\n");

299 
	`TAILQ_FOREACH
(
cur_db
, &
cur_v
->
dbq
, 
q
) {

300 
	`tf
("\tdaba: %s\n", 
cur_db
->
me
);

301 
	`tf
("\t\tdbty: %s\n", 
cur_db
->
dbty
);

303 i(
cur_db
->
exsize
)

304 
	`tf
("\t\textentsize: %lu\n",

305 (
u_lg
)
cur_db
->
exsize
);

306 i(
cur_db
->
gesize
)

307 
	`tf
("\t\tpagesize: %lu\n",

308 (
u_lg
)
cur_db
->
gesize
);

309 i(
cur_db
->
_n
)

310 
	`tf
("\t\tre_len: %lu\n",

311 (
u_lg
)
cur_db
->
_n
);

313 i(
cur_db
->
key_ty
 !
NULL
)

314 
	`tf
("\t\tkey_type: %s\n",

315 
cur_db
->
key_ty
);

317 i(
cur_db
->
imy
 !
NULL
)

318 
	`tf
("\t\tprimary: %s\n",

319 
cur_db
->
imy
);

320 i(
cur_db
->
cuom
)

321 
	`tf
("\t\tcustom: yes\n");

322 i(
cur_db
->
cdy_off
)

323 
	`tf
("\t\tsecondary_offset: %lu/%lu\n",

324 (
u_lg
)
cur_db
->
cdy_off
,

325 (
u_lg
)
cur_db
->
cdy_n
);

327 i(
cur_db
->
dupst
)

328 
	`tf
("\t\tdupsort: yes\n");

329 i(
cur_db
->
um
)

330 
	`tf
("\t\trecnum: yes\n");

331 i(
cur_db
->
i
)

332 
	`tf
("\t\ttransaction: yes\n");

337 
	}
}

	@../db_codegen/db_codegen.c

9 
	~"db_codeg.h
"

11 #ide
lt


12 cڡ 
	gcyright
[] =

16 
uge
 
__P
(());

18 
ma
 
__P
((, *[]));

20 cڡ *
	gogme
;

21 
__hd_v
 
	gv_
;

24 
	$ma
(
gc
, 
gv
)

25 
gc
;

26 *
gv
[];

28 
*
ݏrg
;

29 

td
;

30 um { 
C
, 
CXX
, 
JAVA
 } 
i
;

31 
ch
, 
vbo
;

32 *
oame
;

34 
	`TAILQ_INIT
(&
v_
);

36 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

37 
ogme
 = 
gv
[0];

39 ++
ogme
;

41 
i
 = 
C
;

42 
oame
 = 
NULL
;

43 
vbo
 = 0;

45 (
ch
 = 
	`gt
(
gc
, 
gv
, "a:i:o:Vv")!
EOF
)

46 
ch
) {

48 i(
	`rcmp
(
ݏrg
, "c") == 0) {

49 
i
 = 
C
;

52 
	`rcmp
(
ݏrg
, "c++") == 0 ||

53 
	`rcmp
(
ݏrg
, "cxx") == 0)

54 
i
 = 
CXX
;

55 i(
	`rcmp
(
ݏrg
, "java") == 0)

56 
i
 = 
JAVA
;

58  (
	`uge
());

61 i(
	`eݒ
(
ݏrg
, "r", 
d
=
NULL
) {

62 
	`rtf
(
dr
, "%s: %s: %s\n",

63 
ogme
, 
ݏrg
, 
	`
(
o
));

64  (
EXIT_FAILURE
);

68 
oame
 = 
ݏrg
;

71 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

72  (
EXIT_SUCCESS
);

74 
vbo
 = 1;

78  (
	`uge
());

80 
gc
 -
td
;

81 
gv
 +
td
;

83 i(
gc
 != 0)

84  (
	`uge
());

86 i(
	`r_put
(
d
))

87  (
EXIT_FAILURE
);

89 #ifde
DEBUG


90 i(
vbo
 && 
	`r_dump
())

91  (
EXIT_FAILURE
);

94 i(
	`TAILQ_FIRST
(&
v_
!
NULL
)

95 
i
) {

96 
C
:

97 i(
	`i_c
(
oame
))

98  (
EXIT_FAILURE
);

100 
CXX
:

101 
JAVA
:

102 
	`rtf
(
dr
,

104  (
EXIT_FAILURE
);

107  (
EXIT_SUCCESS
);

108 
	}
}

111 
	$uge
()

113 ()
	`rtf
(
dr
,

114 "uge: %[-Vv] [-c] [-put] [-ouut]\n", 
ogme
);

115  (
EXIT_FAILURE
);

116 
	}
}

	@../db_deadlock/db_deadlock.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
ma
 
__P
((, *[]));

19 
uge
 
__P
(());

20 
vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$ma
(
gc
, 
gv
)

26 
gc
;

27 *
gv
[];

29 
*
ݏrg
;

30 

td
;

31 
DB_ENV
 *
dbv
;

32 
u_t32_t
 
y
;

33 
time_t
 
now
;

34 
u_lg
 
cs
, 
ucs
;

35 
jeed
, 
ch
, 
exv
, 
t
, 
vbo
;

36 *
home
, *
logfe
, *
sswd
, *
r
, 
time_buf
[
CTIME_BUFLEN
];

38 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

39 
ogme
 = 
gv
[0];

41 ++
ogme
;

43 i((
t
 = 
	`vsi_check
()) != 0)

44  (
t
);

46 
dbv
 = 
NULL
;

47 
y
 = 
DB_LOCK_DEFAULT
;

48 
home
 = 
logfe
 = 
sswd
 = 
NULL
;

49 
cs
 = 
ucs
 = 0;

50 
exv
 = 
vbo
 = 0;

51 (
ch
 = 
	`gt
(
gc
, 
gv
, "a:h:L:P:t:Vv")!
EOF
)

52 
ch
) {

54 
ݏrg
[0]) {

56 
y
 = 
DB_LOCK_EXPIRE
;

59 
y
 = 
DB_LOCK_MAXLOCKS
;

62 
y
 = 
DB_LOCK_MINLOCKS
;

65 
y
 = 
DB_LOCK_OLDEST
;

68 
y
 = 
DB_LOCK_MAXWRITE
;

71 
y
 = 
DB_LOCK_MINWRITE
;

74 
y
 = 
DB_LOCK_YOUNGEST
;

77  (
	`uge
());

80 i(
ݏrg
[1] != '\0')

81  (
	`uge
());

84 
home
 = 
ݏrg
;

87 
logfe
 = 
ݏrg
;

90 
sswd
 = 
	`rdup
(
ݏrg
);

91 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

92 i(
sswd
 =
NULL
) {

93 
	`rtf
(
dr
, "%s: strdup: %s\n",

94 
ogme
, 
	`
(
o
));

95  (
EXIT_FAILURE
);

99 i((
r
 = 
	`rchr
(
ݏrg
, '.')!
NULL
) {

100 *
r
++ = '\0';

101 i(*
r
 !'\0' && 
	`__db_gulg
(

102 
NULL
, 
ogme
, 
r
, 0, 
LONG_MAX
, &
ucs
))

103  (
EXIT_FAILURE
);

105 i(*
ݏrg
 !'\0' && 
	`__db_gulg
(

106 
NULL
, 
ogme
, 
ݏrg
, 0, 
LONG_MAX
, &
cs
))

107  (
EXIT_FAILURE
);

108 i(
cs
 =0 && 
ucs
 == 0)

109  (
	`uge
());

113 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

114  (
EXIT_SUCCESS
);

116 
vbo
 = 1;

120  (
	`uge
());

122 
gc
 -
td
;

123 
gv
 +
td
;

125 i(
gc
 != 0)

126  (
	`uge
());

129 
	`__db_ut_sig
();

132 i(
logfe
 !
NULL
 && 
	`__db_ut_logt
(
ogme
,ogfile))

133 
shutdown
;

139 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

140 
	`rtf
(
dr
,

141 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

142 
shutdown
;

145 
dbv
->
	`t_rfe
(dbv, 
dr
);

146 
dbv
->
	`t_fx
(dbv, 
ogme
);

148 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

149 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

150 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

151 
shutdown
;

154 i(
vbo
) {

155 ()
dbv
->
	`t_vbo
(dbv, 
DB_VERB_DEADLOCK
, 1);

156 ()
dbv
->
	`t_vbo
(dbv, 
DB_VERB_WAITSFOR
, 1);

160 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0) {

161 
dbv
->
	`r
(dbv, 
t
, "open");

162 
shutdown
;

165 !
	`__db_ut_ued
()) {

166 i(
vbo
) {

167 ()
	`time
(&
now
);

168 
dbv
->
	`rx
(dbenv,

169 "rušg%.24s", 
	`__db_ime
(&
now
, 
time_buf
));

172 i((
t
 =

173 
dbv
->
	`lock_de
(dbv, 0, 
y
, &
jeed
)) != 0) {

174 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->lock_detect");

175 
shutdown
;

177 i(
vbo
)

178 
dbv
->
	`rx
(dbv, "jeed %docks", 
jeed
);

181 i(
cs
 =0 && 
ucs
 == 0)

183 
	`__os_p
(
dbv
, 
cs
, 
ucs
);

187 
shutdown
: 
exv
 = 1;

191 i(
logfe
 !
NULL
)

192 ()
	`move
(
logfe
);

195 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

196 
exv
 = 1;

197 
	`rtf
(
dr
,

198 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

201 i(
sswd
 !
NULL
)

202 
	`
(
sswd
);

205 
	`__db_ut_signd
();

207  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

208 
	}
}

211 
	$uge
()

213 ()
	`rtf
(
dr
,

214 "uge: %[-Vv] [-| m | | o | W | w | y]\n\t%s\n", 
ogme
,

216  (
EXIT_FAILURE
);

217 
	}
}

220 
	$vsi_check
()

222 
v_maj
, 
v_m
, 
v_tch
;

225 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

226 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

227 
	`rtf
(
dr
,

229 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

230 
v_maj
, 
v_m
);

231  (
EXIT_FAILURE
);

234 
	}
}

	@../db_dump/db_dump.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

15 #ide
lt


16 cڡ 
	gcyright
[] =

20 
db_
 
__P
((
DB_ENV
 *, *, , 
u_t32_t
, *));

21 
dump_sub
 
__P
((
DB_ENV
 *, 
DB
 *, *, , ));

22 
ma
 
__P
((, *[]));

23 
show_subs
 
__P
((
DB
 *));

24 
uge
 
__P
(());

25 
vsi_check
 
__P
(());

27 cڡ *
	gogme
;

30 
	$ma
(
gc
, 
gv
)

31 
gc
;

32 *
gv
[];

34 
*
ݏrg
;

35 

td
;

36 
DB_ENV
 *
dbv
;

37 
DB
 *
dbp
;

38 
u_t32_t
 
che
;

39 
ch
;

40 
exv
, 
keyag
, 
lag
, 
nag
, 
pag
, 
ive
;

41 
t
, 
Rag
, 
rag
, 
size
;

42 *
dt
, *
home
, *
sswd
, *
subme
;

44 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

45 
ogme
 = 
gv
[0];

47 ++
ogme
;

49 i((
t
 = 
	`vsi_check
()) != 0)

50  (
t
);

52 
dbv
 = 
NULL
;

53 
dbp
 = 
NULL
;

54 
exv
 = 
lag
 = 
nag
 = 
pag
 = 
rag
 = 
Rag
 = 0;

55 
keyag
 = 0;

56 
che
 = 
MEGABYTE
;

57 
ive
 = 0;

58 
dt
 = 
home
 = 
sswd
 = 
subme
 = 
NULL
;

59 (
ch
 = 
	`gt
(
gc
, 
gv
, "d:f:h:klNpP:rRs:V")!
EOF
)

60 
ch
) {

62 
dt
 = 
ݏrg
;

65 i(
	`eݒ
(
ݏrg
, "w", 
dout
=
NULL
) {

66 
	`rtf
(
dr
, "%s: %s:eopen: %s\n",

67 
ogme
, 
ݏrg
, 
	`
(
o
));

68  (
EXIT_FAILURE
);

72 
home
 = 
ݏrg
;

75 
keyag
 = 1;

78 
lag
 = 1;

81 
nag
 = 1;

84 
sswd
 = 
	`rdup
(
ݏrg
);

85 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

86 i(
sswd
 =
NULL
) {

87 
	`rtf
(
dr
, "%s: strdup: %s\n",

88 
ogme
, 
	`
(
o
));

89  (
EXIT_FAILURE
);

93 
pag
 = 1;

96 
subme
 = 
ݏrg
;

99 
Rag
 = 1;

103 
rag
 = 1;

106 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

107  (
EXIT_SUCCESS
);

110  (
	`uge
());

112 
gc
 -
td
;

113 
gv
 +
td
;

115 i(
gc
 != 1)

116  (
	`uge
());

118 i(
dt
 !
NULL
 && 
pag
) {

119 
	`rtf
(
dr
,

121 
ogme
);

122  (
EXIT_FAILURE
);

124 i(
lag
 && 
subme
 !
NULL
) {

125 
	`rtf
(
dr
,

127 
ogme
);

128  (
EXIT_FAILURE
);

131 i(
keyag
 && 
rag
) {

132 
	`rtf
(
dr
, "%s: %s",

134 
ogme
);

135  (
EXIT_FAILURE
);

138 i(
subme
 !
NULL
 && 
rag
) {

139 
	`rtf
(
dr
, "%s: %s",

141 
ogme
);

142  (
EXIT_FAILURE
);

146 
	`__db_ut_sig
();

152 
y
: i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

153 
	`rtf
(
dr
,

154 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

155 
r
;

158 
dbv
->
	`t_rfe
(dbv, 
dr
);

159 
dbv
->
	`t_fx
(dbv, 
ogme
);

160 i(
nag
) {

161 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

162 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

163 
r
;

165 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

166 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

167 
r
;

170 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

171 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

172 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

173 
r
;

177 i(
	`db_
(
dbv
, 
home
, 
rag
, 
che
, &
ive
) != 0)

178 
r
;

181 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

182 
dbv
->
	`r
(dbv, 
t
, "db_create");

183 
r
;

190 i(
rag
) {

192 
t
 = 
dbp
->
	`vify
(dbp, 
gv
[0], 
NULL
, 
dout
,

193 
DB_SALVAGE
 |

194 (
Rag
 ? 
DB_AGGRESSIVE
 : 0) |

195 (
pag
 ? 
DB_PRINTABLE
 : 0));

196 
dbp
 = 
NULL
;

197 i(
t
 != 0)

198 
r
;

199 
de
;

202 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
,

203 
gv
[0], 
subme
, 
DB_UNKNOWN
, 
DB_RDONLY
, 0)) != 0) {

204 
dbp
->
	`r
(dbp, 
t
, "ݒ: %s", 
gv
[0]);

205 
r
;

207 i(
ive
 != 0) {

208 i((
t
 = 
	`__db_ut_che
(
dbp
, &
che
, &
size
)) != 0)

209 
r
;

210 i(
size
) {

211 ()
dbp
->
	`o
(dbp, 0);

212 
dbp
 = 
NULL
;

214 ()
dbv
->
	`o
(dbenv, 0);

215 
dbv
 = 
NULL
;

216 
y
;

220 i(
dt
 !
NULL
) {

221 i((
t
 = 
	`__db_dume
(
dbp
, 
NULL
, 
dt
, NULL)) != 0) {

222 
dbp
->
	`r
(dbp, 
t
, "__db_dume: %s", 
gv
[0]);

223 
r
;

225 } i(
lag
) {

226 i(
dbp
->
	`g_muɝ
(dbp)) {

227 i(
	`show_subs
(
dbp
))

228 
r
;

230 
dbp
->
	`rx
(dbp,

231 "%s: d۠n cڏ muɝ dabas", 
gv
[0]);

232 
r
;

235 i(
subme
 =
NULL
 && 
dbp
->
	`g_muɝ
(dbp)) {

236 i(
	`dump_sub
(
dbv
, 
dbp
, 
gv
[0], 
pag
, 
keyag
))

237 
r
;

239 i(
dbp
->
	`dump
(dbp, 
NULL
,

240 
__db__back
, 
dout
, 
pag
, 
keyag
))

241 
r
;

245 
r
: 
exv
 = 1;

247 
de
: i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 0)) != 0) {

248 
exv
 = 1;

249 
dbv
->
	`r
(dbv, 
t
, "close");

251 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

252 
exv
 = 1;

253 
	`rtf
(
dr
,

254 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

257 i(
sswd
 !
NULL
)

258 
	`
(
sswd
);

261 
	`__db_ut_signd
();

263  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

264 
	}
}

271 
	$db_
(
dbv
, 
home
, 
is_lvage
, 
che
, 
is_iv
)

272 
DB_ENV
 *
dbv
;

273 *
home
;

274 
is_lvage
;

275 
u_t32_t
 
che
;

276 *
is_iv
;

278 
t
;

298 *
is_iv
 = 0;

299 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

300 
DB_USE_ENVIRON
 | (
is_lvage
 ? 
DB_INIT_MPOOL
 : 0), 0)) == 0)

302 i(
t
 =
DB_VERSION_MISMATCH
)

303 
r
;

315 *
is_iv
 = 1;

316 i((
t
 = 
dbv
->
	`t_chesize
(dbv, 0, 
che
, 1)) == 0 &&

317 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

318 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0)) == 0)

322 
r
: 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

324 
	}
}

331 
	$dump_sub
(
dbv
, 
_dbp
, 
_me
, 
pag
, 
keyag
)

332 
DB_ENV
 *
dbv
;

333 
DB
 *
_dbp
;

334 *
_me
;

335 
pag
, 
keyag
;

337 
DB
 *
dbp
;

338 
DBC
 *
db
;

339 
DBT
 
key
, 
da
;

340 
t
;

341 *
subdb
;

347 i((
t
 = 
_dbp
->
	`curs
լt_dbp, 
NULL
, &
db
, 0)) != 0) {

348 
dbv
->
	`r
(dbv, 
t
, "DB->cursor");

352 
	`memt
(&
key
, 0, (key));

353 
	`memt
(&
da
, 0, (data));

354 (
t
 = 
db
->
	`g
(db, &
key
, &
da
,

355 
DB_IGNORE_LEASE
 | 
DB_NEXT
)) == 0) {

357 i((
subdb
 = 
	`mloc
(
key
.
size
 + 1)=
NULL
) {

358 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

361 
	`memy
(
subdb
, 
key
.
da
, key.
size
);

362 
subdb
[
key
.
size
] = '\0';

365 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

366 
dbv
->
	`r
(dbv, 
t
, "db_create");

367 
	`
(
subdb
);

370 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
,

371 
_me
, 
subdb
, 
DB_UNKNOWN
, 
DB_RDONLY
, 0)) != 0)

372 
dbp
->
	`r
(dbp, 
t
,

373 "DB->ݒ: %s:%s", 
_me
, 
subdb
);

374 i(
t
 =0 && 
dbp
->
	`dump
(

375 
dbp
, 
subdb
, 
__db__back
, 
dout
, 
pag
, 
keyag
))

376 
t
 = 1;

377 ()
dbp
->
	`o
(dbp, 0);

378 
	`
(
subdb
);

379 i(
t
 != 0)

382 i(
t
 !
DB_NOTFOUND
) {

383 
_dbp
->
	`r
լt_dbp, 
t
, "DBcursor->get");

387 i((
t
 = 
db
->
	`o
(dbcp)) != 0) {

388 
_dbp
->
	`r
լt_dbp, 
t
, "DBcursor->close");

393 
	}
}

400 
	$show_subs
(
dbp
)

401 
DB
 *
dbp
;

403 
DBC
 *
db
;

404 
DBT
 
key
, 
da
;

405 
t
;

411 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &
db
, 0)) != 0) {

412 
dbp
->
	`r
(dbp, 
t
, "DB->cursor");

416 
	`memt
(&
key
, 0, (key));

417 
	`memt
(&
da
, 0, (data));

418 (
t
 = 
db
->
	`g
(db, &
key
, &
da
,

419 
DB_IGNORE_LEASE
 | 
DB_NEXT
)) == 0) {

420 i((
t
 = 
dbp
->
dbv
->
	`dbt
(

421 &
key
, 1, 
NULL
, 
dout
, 
__db__back
, 0)) != 0) {

422 
dbp
->
	`rx
(dbp, 
NULL
);

426 i(
t
 !
DB_NOTFOUND
) {

427 
dbp
->
	`r
(dbp, 
t
, "DBcursor->get");

431 i((
t
 = 
db
->
	`o
(dbcp)) != 0) {

432 
dbp
->
	`r
(dbp, 
t
, "DBcursor->close");

436 
	}
}

443 
	$uge
()

445 ()
	`rtf
(
dr
, "usage: %s [-klNprRV]\n\t%s\n",

446 
ogme
,

448  (
EXIT_FAILURE
);

449 
	}
}

452 
	$vsi_check
()

454 
v_maj
, 
v_m
, 
v_tch
;

457 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

458 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

459 
	`rtf
(
dr
,

461 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

462 
v_maj
, 
v_m
);

463  (
EXIT_FAILURE
);

466 
	}
}

	@../db_dump185/db_dump185.c

9 #ide
lt


10 cڡ 
	gcyright
[] =

14 
	~<sys/tys.h
>

16 
	~<y.h
>

17 
	~<o.h
>

18 
	~<f.h
>

19 
	~<dio.h
>

20 
	~<dlib.h
>

21 
	~<rg.h
>

23 
	~<db.h
>

26 
	shashhdr185
 {

27 
	mmagic
;

28 
	mvsi
;

29 
u_t32_t
 
	mld
;

30 
	mbsize
;

31 
	mbshi
;

32 
	mdsize
;

33 
	mssize
;

34 
	msshi
;

35 
	mov_pot
;

37 
	mϡ_d
;

38 
	mmax_buck
;

39 
	mhigh_mask
;

40 
	mlow_mask
;

42 
	mf
;

43 
	mnkeys
;

44 } 
	tHASHHDR185
;

45 
	shb185
 {

46 
HASHHDR185
 
	mhdr
;

47 } 
	tHTAB185
;

50 
	shashhdr186
 {

51 
t32_t
 
	mmagic
;

52 
t32_t
 
	mvsi
;

53 
t32_t
 
	mld
;

54 
t32_t
 
	mbsize
;

55 
t32_t
 
	mbshi
;

56 
t32_t
 
	mov_pot
;

57 
t32_t
 
	mϡ_d
;

58 
t32_t
 
	mmax_buck
;

59 
t32_t
 
	mhigh_mask
;

60 
t32_t
 
	mlow_mask
;

61 
t32_t
 
	mf
;

62 
t32_t
 
	mnkeys
;

63 
t32_t
 
	mhdages
;

64 
t32_t
 
	mh_chkey
;

65 
	#NCACHED
 32

	)

66 
t32_t
 
	mes
[
NCACHED
];

68 
u_t16_t
 
	mbms
[
NCACHED
];

69 } 
	tHASHHDR186
;

70 
	shb186
 {

71 *
	munud
[2];

72 
HASHHDR186
 
	mhdr
;

73 } 
	tHTAB186
;

75 
	s_gno
 {

76 
u_t32_t
 
	mpgno
;

77 
u_t16_t
 
	mdex
;

78 } 
	tEPGNO
;

80 
	s_g
 {

81 *
	mge
;

82 
u_t16_t
 
	mdex
;

83 } 
	tEPG
;

85 
	s_curs
 {

86 
EPGNO
 
	mpg
;

87 
DBT
 
	mkey
;

88 
u_t32_t
 
	mrcurs
;

90 
	#CURS_ACQUIRE
 0x01

	)

91 
	#CURS_AFTER
 0x02

	)

92 
	#CURS_BEFORE
 0x04

	)

93 
	#CURS_INIT
 0x08

	)

94 
u_t8_t
 
	mags
;

95 } 
	tCURSOR
;

98 
	s_b
 {

99 *
	mbt_mp
;

101 *
	mbt_dbp
;

103 
EPG
 
	mbt_cur
;

104 *
	mbt_pd
;

106 
CURSOR
 
	mbt_curs
;

108 
EPGNO
 
	mbt_ack
[50];

109 
EPGNO
 *
	mbt_
;

111 
DBT
 
	mbt_rkey
;

112 
DBT
 
	mbt_rda
;

114 
	mbt_fd
;

116 
u_t32_t
 
	mbt_
;

117 
u_t32_t
 
	mbt_psize
;

118 
u_t16_t
 
	mbt_ovsize
;

119 
	mbt_ld
;

121 um { 
	mNOT
, 
	mBACK
, 
	mFORWARD
 } 
	mbt_d
;

122 
EPGNO
 
	mbt_ϡ
;

125 (*
	mbt_cmp

__P
((
DBT
 *, DBT *));

127 
size_t
 (*
bt_pfx

__P
((
DBT
 *, DBT *));

129 (*
	mbt_ec

__P
((
_b
 *, 
u_t32_t
));

131 
FILE
 *
	mbt_r
;

132 
	mbt_rfd
;

134 *
	mbt_cm
;

135 *
	mbt_sm
;

136 *
	mbt_em
;

137 
size_t
 
	mbt_msize
;

139 
u_t32_t
 
	mbt_ecs
;

140 
size_t
 
	mbt_
;

141 
u_ch
 
	mbt_bv
;

147 
	#B_INMEM
 0x00001

	)

148 
	#B_METADIRTY
 0x00002

	)

149 
	#B_MODIFIED
 0x00004

	)

150 
	#B_NEEDSWAP
 0x00008

	)

151 
	#B_RDONLY
 0x00010

	)

153 
	#B_NODUPS
 0x00020

	)

154 
	#R_RECNO
 0x00080

	)

156 
	#R_CLOSEFP
 0x00040

	)

157 
	#R_EOF
 0x00100

	)

158 
	#R_FIXLEN
 0x00200

	)

159 
	#R_MEMMAPPED
 0x00400

	)

160 
	#R_INMEM
 0x00800

	)

161 
	#R_MODIFIED
 0x01000

	)

162 
	#R_RDONLY
 0x02000

	)

164 
	#B_DB_LOCK
 0x04000

	)

165 
	#B_DB_SHMEM
 0x08000

	)

166 
	#B_DB_TXN
 0x10000

	)

167 
u_t32_t
 
	mags
;

168 } 
	tBTREE
;

170 
db_b
 
__P
((
DB
 *, ));

171 
db_hash
 
__P
((
DB
 *, ));

172 
dbt_dump
 
__P
((
DBT
 *));

173 
dbt_t
 
__P
((
DBT
 *));

174 
ma
 
__P
((, *[]));

175 
uge
 
__P
(());

178 
	$ma
(
gc
, 
gv
)

179 
gc
;

180 *
gv
[];

182 
*
ݏrg
;

183 

td
;

184 
DB
 *
dbp
;

185 
DBT
 
key
, 
da
;

186 
ch
, 
pag
, 
rv
;

188 
pag
 = 0;

189 (
ch
 = 
	`gt
(
gc
, 
gv
, "f:p")!
EOF
)

190 
ch
) {

192 i(
	`eݒ
(
ݏrg
, "w", 
dout
=
NULL
) {

193 
	`rtf
(
dr
, "db_dump185: %s: %s\n",

194 
ݏrg
, 
	`
(
o
));

195  (
EXIT_FAILURE
);

199 
pag
 = 1;

203  (
	`uge
());

205 
gc
 -
td
;

206 
gv
 +
td
;

208 i(
gc
 != 1)

209  (
	`uge
());

211 i((
dbp
 = 
	`dbݒ
(
gv
[0], 
O_RDONLY
, 0, 
DB_BTREE
, 
NULL
)) == NULL) {

212 i((
dbp
 =

213 
	`dbݒ
(
gv
[0], 
O_RDONLY
, 0, 
DB_HASH
, 
NULL
)) == NULL) {

214 
	`rtf
(
dr
,

215 "db_dump185: %s: %s\n", 
gv
[0], 
	`
(
o
));

216  (
EXIT_FAILURE
);

218 
	`db_hash
(
dbp
, 
pag
);

220 
	`db_b
(
dbp
, 
pag
);

227 i(
pag
)

228 !(
rv
 = 
dbp
->
	`q
(dbp, &
key
, &
da
, 
R_NEXT
))) {

229 
	`dbt_t
(&
key
);

230 
	`dbt_t
(&
da
);

233 !(
rv
 = 
dbp
->
	`q
(dbp, &
key
, &
da
, 
R_NEXT
))) {

234 
	`dbt_dump
(&
key
);

235 
	`dbt_dump
(&
da
);

238 i(
rv
 == -1) {

239 
	`rtf
(
dr
, "db_dump185: seq: %s\n", 
	`
(
o
));

240  (
EXIT_FAILURE
);

242  (
EXIT_SUCCESS
);

243 
	}
}

250 
	$db_hash
(
dbp
, 
pag
)

251 
DB
 *
dbp
;

252 
pag
;

254 
HTAB185
 *
hash185p
;

255 
HTAB186
 *
hash186p
;

257 
	`tf
("fm=%s\n", 
pag
 ? "print" : "bytevalue");

258 
	`tf
("type=hash\n");

261 
hash185p
 = 
dbp
->

;

262 i(
hash185p
->
hdr
.
vsi
 > 2) {

263 
hash186p
 = 
dbp
->

;

264 
	`tf
("h_f=%lu\n", (
u_lg
)
hash186p
->
hdr
.
f
);

265 i(
hash186p
->
hdr
.
ld
 != 0)

266 
	`tf
("db_ld=%lu\n", (
u_lg
)
hash186p
->
hdr
.
ld
);

267 
	`tf
("db_gesize=%lu\n", (
u_lg
)
hash186p
->
hdr
.
bsize
);

269 
	`tf
("h_f=%lu\n", (
u_lg
)
hash185p
->
hdr
.
f
);

270 i(
hash185p
->
hdr
.
ld
 != 0)

271 
	`tf
("db_ld=%lu\n", (
u_lg
)
hash185p
->
hdr
.
ld
);

272 
	`tf
("db_gesize=%lu\n", (
u_lg
)
hash185p
->
hdr
.
bsize
);

274 
	`tf
("HEADER=END\n");

275 
	}
}

282 
	$db_b
(
dbp
, 
pag
)

283 
DB
 *
dbp
;

284 
pag
;

286 
BTREE
 *
b
;

288 
b
 = 
dbp
->

;

290 
	`tf
("fm=%s\n", 
pag
 ? "print" : "bytevalue");

291 
	`tf
("type=btree\n");

292 #ifde
NOT_AVAILABLE_IN_185


293 
	`tf
("bt_mkey=%lu\n", (
u_lg
)
XXX
);

294 
	`tf
("bt_maxkey=%lu\n", (
u_lg
)
XXX
);

296 i(
b
->
bt_ld
 != 0)

297 
	`tf
("db_ld=%lu\n", (
u_lg
)
b
->
bt_ld
);

298 
	`tf
("db_gesize=%lu\n", (
u_lg
)
b
->
bt_psize
);

299 i(!(
b
->
ags
 & 
B_NODUPS
))

300 
	`tf
("duplicates=1\n");

301 
	`tf
("HEADER=END\n");

302 
	}
}

304 
	ghex
[] = "0123456789abcdef";

311 
	$dbt_dump
(
db
)

312 
DBT
 *
db
;

314 
size_t
 
n
;

315 
u_t8_t
 *
p
;

317 
n
 = 
db
->
size
, 
p
 = db->
da
;en--; ++p)

318 ()
	`tf
("%c%c",

319 
hex
[(*
p
 & 0xf0) >> 4], hex[*p & 0x0f]);

320 
	`tf
("\n");

321 
	}
}

328 
	$dbt_t
(
db
)

329 
DBT
 *
db
;

331 
size_t
 
n
;

332 
u_t8_t
 *
p
;

334 
n
 = 
db
->
size
, 
p
 = db->
da
;en--; ++p)

335 i(
	`irt
(()*
p
)) {

336 i(*
p
 == '\\')

337 ()
	`tf
("\\");

338 ()
	`tf
("%c", *
p
);

340 ()
	`tf
("\\%c%c",

341 
hex
[(*
p
 & 0xf0) >> 4], hex[*p & 0x0f]);

342 
	`tf
("\n");

343 
	}
}

350 
	$uge
()

352 ()
	`rtf
(
dr
, "usage: db_dump185 [-p] [-f file] db_file\n");

353  (
EXIT_FAILURE
);

354 
	}
}

	@../db_hotbackup/db_hotbackup.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/qam.h
"

16 #ide
lt


17 cڡ 
	gcyright
[] =

21 
	ewhich_ݒ
 { 
	mOPEN_ORIGINAL
, 
	mOPEN_HOT_BACKUP
 };

23 
backup_d_n
 
__P
((
DB_ENV
 *, *, *, *, , ));

24 
da_cy
 
__P
((
DB_ENV
 *, *, *, *, ));

25 
v_
 
__P
((
DB_ENV
 **,

26 *, **, ***, *, 
which_ݒ
));

27 
ma
 
__P
((, *[]));

28 
ad_da_d
 
__P
((
DB_ENV
 *, *, *, *, , ));

29 
ad_log_d
 
__P
((
DB_ENV
 *, *, *, *, *, , ));

30 
uge
 
__P
(());

31 
vsi_check
 
__P
(());

33 cڡ *
	gogme
;

36 
	$ma
(
gc
, 
gv
)

37 
gc
;

38 *
gv
[];

40 
*
ݏrg
;

41 

td
;

42 
time_t
 
now
;

43 
DB_ENV
 *
dbv
;

44 
u_t
 
da_t
, 
da_xt
;

45 
ch
, 
checkpot
, 
cy_m
, 
db_cfig
, 
exv
;

46 
move_max
, 
t
, 
upde
, 
vbo
;

47 *
backup_d
, **
da_d
, **
d
, *
home
, *
log_d
, *
sswd
;

48 
home_buf
[
DB_MAXPATHLEN
], 
time_buf
[
CTIME_BUFLEN
];

60 
	`tbuf
(
dout
, 
NULL
);

62 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

63 
ogme
 = 
gv
[0];

65 ++
ogme
;

67 i((
t
 = 
	`vsi_check
()) != 0)

68  (
t
);

70 
checkpot
 = 
db_cfig
 = 
da_t
 =

71 
da_xt
 = 
exv
 = 
upde
 = 
vbo
 = 0;

72 
da_d
 = 
NULL
;

73 
backup_d
 = 
home
 = 
sswd
 = 
NULL
;

74 
log_d
 = 
NULL
;

75 
cy_m
 = 
move_max
 = 0;

76 (
ch
 = 
	`gt
(
gc
, 
gv
, "b:cDd:h:l:P:uVv")!
EOF
)

77 
ch
) {

79 
backup_d
 = 
ݏrg
;

82 
checkpot
 = 1;

85 
db_cfig
 = 1;

92 i(
da_d
 =
NULL
 || 
da_xt
 >
da_t
 - 2) {

93 
da_t
 = data_cnt == 0 ? 20 : data_cnt * 2;

94 i((
da_d
 = 
	`loc
(data_dir,

95 
da_t
 * (*
da_d
))=
NULL
) {

96 
	`rtf
(
dr
, "%s: %s\n",

97 
ogme
, 
	`
(
o
));

98  (
EXIT_FAILURE
);

101 
da_d
[
da_xt
++] = 
ݏrg
;

104 
home
 = 
ݏrg
;

107 
log_d
 = 
ݏrg
;

110 
sswd
 = 
	`rdup
(
ݏrg
);

111 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

112 i(
sswd
 =
NULL
) {

113 
	`rtf
(
dr
, "%s: strdup: %s\n",

114 
ogme
, 
	`
(
o
));

115  (
EXIT_FAILURE
);

119 
upde
 = 1;

122 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

123  (
EXIT_SUCCESS
);

125 
vbo
 = 1;

129  (
	`uge
());

131 
gc
 -
td
;

132 
gv
 +
td
;

134 i(
gc
 != 0)

135  (
	`uge
());

138 i(
da_d
 !
NULL
) {

139 
da_d
[
da_xt
] = 
NULL
;

144 i(
checkpot
 == 1) {

145 
	`rtf
(
dr
,

146 "%s: cn scify -dnd -c\n", 
ogme
);

147  (
	`uge
());

151 i(
db_cfig
 && (
da_d
 !
NULL
 || 
log_d
 != NULL)) {

152 
	`rtf
(
dr
,

153 "%s: cn scify -Dnd -d o-l\n", 
ogme
);

154  (
	`uge
());

158 
	`__db_ut_sig
();

167 i(
home
 =
NULL
) {

168 
home
 = 
home_buf
;

169 i((
t
 = 
	`__os_gv
(

170 
NULL
, "DB_HOME", &
home
, (
home_buf
))) != 0) {

171 
	`rtf
(
dr
,

173 
ogme
, 
	`db_
(
t
));

174  (
EXIT_FAILURE
);

180 i(
home
 =
NULL
) {

181 
	`rtf
(
dr
,

182 "%s:sour dabanvmecifd\n", 
ogme
);

183  (
	`uge
());

185 i(
backup_d
 =
NULL
) {

186 
	`rtf
(
dr
,

187 "%s:؏rg backudey scifd\n", 
ogme
);

188  (
	`uge
());

191 i(
vbo
) {

192 ()
	`time
(&
now
);

193 
	`tf
("%s: hot backup startedt %s",

194 
ogme
, 
	`__db_ime
(&
now
, 
time_buf
));

198 i(
	`v_
(&
dbv
, 
home
,

199 (
db_cfig
 || 
log_d
 !
NULL
) ? &log_dir : NULL,

200 
db_cfig
 ? &
da_d
 : 
NULL
,

201 
sswd
, 
OPEN_ORIGINAL
) != 0)

202 
shutdown
;

204 i(
db_cfig
 && 
	`__os_abh
(
log_d
)) {

205 
	`rtf
(
dr
,

207 
ogme
);

208 
shutdown
;

215 i(
checkpot
) {

216 i(
vbo
)

217 
	`tf
("%s: %s: f checkpot\n", 
ogme
, 
home
);

218 i((
t
 =

219 
dbv
->
	`txn_checkpot
(dbv, 0, 0, 
DB_FORCE
)) != 0) {

220 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->txn_checkpoint");

221 
shutdown
;

223 i(!
upde
) {

224 i(
vbo
)

225 
	`tf
("%s: %s:emove unnecessaryog files\n",

226 
ogme
, 
home
);

227 i((
t
 = 
dbv
->
	`log_chive
(dbenv,

228 
NULL
, 
DB_ARCH_REMOVE
)) != 0) {

229 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_archive");

230 
shutdown
;

241 ()
	`__os_mkd
(
NULL
, 
backup_d
, 
	`__db_omode
("rwx------"));

252 i(
db_cfig
 && 
log_d
 !
NULL
 &&

253 
	`backup_d_n
(

254 
dbv
, 
backup_d
, 
log_d
, &
move_max
, 
upde
, 
vbo
) != 0)

255 
shutdown
;

256 i(
	`backup_d_n
(
dbv
,

257 
backup_d
, 
NULL
, &
move_max
, 
upde
, 
vbo
) != 0)

258 
shutdown
;

265 i(!
upde
) {

266 i(
	`ad_da_d
(
dbv
, 
home
,

267 
backup_d
, 
home
, 
vbo
, 
db_cfig
) != 0)

268 
shutdown
;

269 i(
da_d
 !
NULL
)

270 
d
 = 
da_d
; *d !
NULL
; ++dir) {

276 i(
db_cfig
 && 
	`__os_abh
(*
d
)) {

277 
	`rtf
(
dr
,

279 
ogme
, *
d
);

280 
shutdown
;

282 i(
	`ad_da_d
(
dbv
, 
home
,

283 
backup_d
, *
d
, 
vbo
, 
db_cfig
) != 0)

284 
shutdown
;

295 i(
	`ad_log_d
(
dbv
, 
db_cfig
 ? 
home
 : 
NULL
, 
backup_d
,

296 
log_d
 =
NULL
 ? 
home
 :og_d, &
cy_m
, 
upde
, 
vbo
) != 0)

297 
shutdown
;

305 i(
upde
 && 
move_max
 < 
cy_m
 &&

306 !(
move_max
 =0 && 
cy_m
 == 1)) {

307 
	`rtf
(
dr
,

309 
ogme
, 
move_max
);

310 
	`rtf
(
dr
,

312 
ogme
, 
cy_m
);

313 
shutdown
;

317 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

318 
	`rtf
(
dr
,

319 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

320 
dbv
 = 
NULL
;

321 
shutdown
;

324 i(
vbo
)

325 
	`tf
("%s: %s:un catastrophicecovery\n",

326 
ogme
, 
backup_d
);

327 i(
	`v_
(

328 &
dbv
, 
backup_d
, 
NULL
, NULL, 
sswd
, 
OPEN_HOT_BACKUP
) != 0)

329 
shutdown
;

334 i(
vbo
)

335 
	`tf
("%s: %s:emove unnecessaryog files\n",

336 
ogme
, 
backup_d
);

337 i((
t
 =

338 
dbv
->
	`log_chive
(dbv, 
NULL
, 
DB_ARCH_REMOVE
)) != 0) {

339 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_archive");

340 
shutdown
;

344 
shutdown
: 
exv
 = 1;

346 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

347 
exv
 = 1;

348 
	`rtf
(
dr
,

349 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

352 i(
exv
 == 0) {

353 i(
vbo
) {

354 ()
	`time
(&
now
);

355 
	`tf
("%s: hot backup completedt %s",

356 
ogme
, 
	`__db_ime
(&
now
, 
time_buf
));

359 
	`rtf
(
dr
, "%s: HOT BACKUP FAILED!\n", 
ogme
);

363 
	`__db_ut_signd
();

365  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

367 
	}
}

374 
	$v_
(
dbvp
, 
home
, 
log_dp
, 
da_dp
, 
sswd
, 
which
)

375 
DB_ENV
 **
dbvp
;

376 *
home
, **
log_dp
, ***
da_dp
, *
sswd
;

377 
which_ݒ
 
which
;

379 
DB_ENV
 *
dbv
;

380 
t
;

382 *
dbvp
 = 
NULL
;

387 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

388 
	`rtf
(
dr
,

389 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

393 
dbv
->
	`t_rfe
(dbv, 
dr
);

394 
	`tbuf
(
dr
, 
NULL
);

395 
dbv
->
	`t_fx
(dbv, 
ogme
);

401 i(
log_dp
 !
NULL
 && *log_dirp != NULL &&

402 (
t
 = 
dbv
->
	`t_lg_d
(dbv, *
log_dp
)) != 0) {

403 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->t_lg_d: %s", *
log_dp
);

408 i(
sswd
 !
NULL
 &&

409 (
t
 = 
dbv
->
	`t_y
(dbv, 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

410 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->set_encrypt");

414 
which
) {

415 
OPEN_ORIGINAL
:

421 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

422 (
t
 =
DB_VERSION_MISMATCH
 ||

423 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 |

424 
DB_INIT_LOG
 | 
DB_INIT_TXN
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
,

426 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->ݒ: %s", 
home
);

429 i(
log_dp
 !
NULL
 && *log_dirp == NULL)

430 ()
dbv
->
	`g_lg_d
(dbv, (cڡ **)
log_dp
);

431 i(
da_dp
 !
NULL
 && *data_dirp == NULL)

432 ()
dbv
->
	`g_da_ds
(

433 
dbv
, (cڡ ***)
da_dp
);

435 
OPEN_HOT_BACKUP
:

442 i((
t
 =

443 
dbv
->
	`t_chesize
(dbenv, 0, 64 * 1024 * 10, 0)) != 0) {

444 
dbv
->
	`r
(dbenv,

445 
t
, "DB_ENV->t_chesize: %s", 
home
);

448 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 |

449 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
 | 
DB_PRIVATE
 |

450 
DB_RECOVER_FATAL
 | 
DB_USE_ENVIRON
, 0)) != 0) {

451 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->ݒ: %s", 
home
);

457 *
dbvp
 = 
dbv
;

459 
	}
}

466 
	$backup_d_n
(
dbv
, 
backup_d
, 
log_d
, 
move_maxp
, 
upde
, 
vbo
)

467 
DB_ENV
 *
dbv
;

468 *
backup_d
, *
log_d
;

469 *
move_maxp
, 
upde
, 
vbo
;

471 
t
, 
ft
, 
t
, 
v
;

472 **
mes
, *
d
, 
buf
[
DB_MAXPATHLEN
], 
th
[DB_MAXPATHLEN];

475 i(
log_d
 !
NULL
) {

476 i((
size_t
)
	`tf
(
buf
, (buf), "%s%c%s",

477 
backup_d
, 
PATH_SEPARATOR
[0] ,
log_d
>(
buf
)) {

478 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

479 
backup_d
, 
PATH_SEPARATOR
[0] ,
log_d
);

482 
d
 = 
buf
;

484 
d
 = 
backup_d
;

487 i((
t
 = 
	`__os_dli
(
dbv
, 
d
, &
mes
, &
ft
)) != 0) {

488 i(
log_d
 !
NULL
 && !
upde
)

490 
dbv
->
	`r
(dbv, 
t
, "%s: deyd", 
d
);

493 
t
 = 
ft
; --cnt >= 0;) {

497 i(
	`cmp
(
mes
[
t
], 
LFPREFIX
, (LFPREFIX) - 1)) {

498 i(
upde
)

502 
v
 = 
	`oi
(
mes
[
t
] + (
LFPREFIX
) - 1);

503 i(*
move_maxp
 < 
v
)

504 *
move_maxp
 = 
v
;

506 i((
size_t
)
	`tf
(
th
, (path), "%s%c%s",

507 
d
, 
PATH_SEPARATOR
[0], 
mes
[
t
]>(
th
)) {

508 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

509 
d
, 
PATH_SEPARATOR
[0], 
mes
[
t
]);

512 i(
vbo
)

513 
	`tf
("%s:emovg %s\n", 
ogme
, 
th
);

514 i(
	`__os_uƚk
(
dbv
, 
th
) != 0)

518 
	`__os_d
(
dbv
, 
mes
, 
ft
);

520 i(
vbo
 && *
move_maxp
 != 0)

521 
	`tf
("%s: highestumberedog fileemoved: %d\n",

522 
ogme
, *
move_maxp
);

525 
	}
}

532 
	$ad_da_d
(
dbv
, 
home
, 
backup_d
, 
d
, 
vbo
, 
db_cfig
)

533 
DB_ENV
 *
dbv
;

534 *
home
, *
backup_d
, *
d
;

535 
vbo
, 
db_cfig
;

537 
t
, 
ft
, 
t
;

538 *
bd
, **
mes
;

539 
buf
[
DB_MAXPATHLEN
], 
bbuf
[DB_MAXPATHLEN];

541 
bd
 = 
backup_d
;

542 i(
db_cfig
 && 
d
 !
home
) {

544 i((
size_t
)(
t
 = 
	`tf
(
bbuf
, (bbuf), "%s%c%s%c",

545 
backup_d
, 
PATH_SEPARATOR
[0],

546 
d
, 
PATH_SEPARATOR
[0])>(
buf
)) {

547 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

548 
backup_d
, 
PATH_SEPARATOR
[0], 
d
);

551 
bd
 = 
bbuf
;

554 i((
t
 = 
dbv
->
	`t_rmed_d
(

555 
dbv
, 
	`__db_omode
("rwx------"), 0)) != 0 ||

556 (
t
 = 
	`__db_mkth
(
dbv
, 
bd
)) != 0) {

557 
dbv
->
	`r
(dbv, 
t
, "%s: cn ce", 
bd
);

561 
bd
[
t
 - 1] = '\0';

564 i((
size_t
)
	`tf
(
buf
, (buf),

565 "%s%c%s", 
home
, 
PATH_SEPARATOR
[0], 
d
>(
buf
)) {

566 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

567 
home
, 
PATH_SEPARATOR
[0], 
d
);

570 
d
 = 
buf
;

573 i((
t
 = 
	`__os_dli
(
dbv
, 
d
, &
mes
, &
ft
)) != 0) {

574 
dbv
->
	`r
(dbv, 
t
, "%s: deyd", 
d
);

577 
t
 = 
ft
; --cnt >= 0;) {

582 i(!
	`cmp
(
mes
[
t
], 
LFPREFIX
, (LFPREFIX) - 1))

584 i(!
	`cmp
(
mes
[
t
],

585 
DB_REGION_PREFIX
, (DB_REGION_PREFIX) - 1) &&

586 
	`cmp
(
mes
[
t
],

587 
QUEUE_EXTENT_PREFIX
, (QUEUE_EXTENT_PREFIX) - 1))

593 i(!
db_cfig
 &&

594 !
	`cmp
(
mes
[
t
], "DB_CONFIG", ("DB_CONFIG")))

598 i(
	`da_cy
(
dbv
, 
mes
[
t
], 
d
, 
bd
, 
vbo
) != 0)

602 
	`__os_d
(
dbv
, 
mes
, 
ft
);

605 
	}
}

614 
	$ad_log_d
(
dbv
, 
home
, 
backup_d
, 
log_d
, 
cy_mp
, 
upde
, 
vbo
)

615 
DB_ENV
 *
dbv
;

616 *
home
, *
backup_d
, *
log_d
;

617 *
cy_mp
, 
upde
, 
vbo
;

619 
u_t32_t
 
aag
;

620 
t
, 
t
, 
v
;

621 **
beg
, **
mes
, *
backupd
, *
logd
;

622 
om
[
DB_MAXPATHLEN
], 
to
[DB_MAXPATHLEN];

624 i(
home
 !
NULL
 && 
log_d
 != NULL) {

625 i((
size_t
)
	`tf
(
om
, (from), "%s%c%s",

626 
home
, 
PATH_SEPARATOR
[0], 
log_d
>(
om
)) {

627 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

628 
home
, 
PATH_SEPARATOR
[0], 
log_d
);

631 
logd
 = 
	`rdup
(
om
);

632 i((
size_t
)(
t
 = 
	`tf
(
to
, (to),

633 "%s%c%s%c", 
backup_d
, 
PATH_SEPARATOR
[0],

634 
log_d
, 
PATH_SEPARATOR
[0])>(
to
)) {

635 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

636 
backup_d
, 
PATH_SEPARATOR
[0], 
log_d
);

639 
backupd
 = 
	`rdup
(
to
);

642 i((
t
 = 
dbv
->
	`t_rmed_d
(

643 
dbv
, 
	`__db_omode
("rwx------"), 0)) != 0 ||

644 (
t
 = 
	`__db_mkth
(
dbv
, 
backupd
)) != 0) {

645 
dbv
->
	`r
(dbv, 
t
, "%s: cn ce", 
backupd
);

649 
backupd
[
t
 - 1] = '\0';

651 
backupd
 = 
backup_d
;

652 
logd
 = 
log_d
;

655 
aga
: 
aag
 = 
DB_ARCH_LOG
;

661 i(
upde
)

662 
aag
 = 0;

664 i((
t
 = 
dbv
->
	`log_chive
(dbv, &
mes
, 
aag
)) != 0) {

665 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_archive");

668 i(
mes
 =
NULL
)

669 
de
;

670 
beg
 = 
mes
;

671 ; *
mes
 !
NULL
;ames++) {

673 
v
 = 
	`oi
(*
mes
 + (
LFPREFIX
) - 1);

674 i(*
cy_mp
 =0 || *cy_m> 
v
)

675 *
cy_mp
 = 
v
;

677 i((
size_t
)
	`tf
(
om
, (from), "%s%c%s",

678 
logd
, 
PATH_SEPARATOR
[0], *
mes
>(
om
)) {

679 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

680 
logd
, 
PATH_SEPARATOR
[0], *
mes
);

692 i(
upde
) {

693 i((
size_t
)
	`tf
(
to
, (to), "%s%c%s",

694 
backupd
, 
PATH_SEPARATOR
[0], *
mes
>(
to
)) {

695 
dbv
->
	`rx
(dbenv, "%s%c%s:athooong",

696 
backupd
, 
PATH_SEPARATOR
[0], *
mes
);

699 i(
	`__os_me
(
dbv
, 
om
, 
to
, 1) == 0) {

700 i(
vbo
)

701 
	`tf
("%s: moving %so %s\n",

702 
ogme
, 
om
, 
to
);

708 i(
	`da_cy
(
dbv
, *
mes
, 
logd
, 
backupd
, 
vbo
) != 0)

711 i(
upde
) {

712 i(
vbo
)

713 
	`tf
("%s:emovg %s\n", 
ogme
, 
om
);

714 i((
t
 = 
	`__os_uƚk
(
dbv
, 
om
)) != 0) {

715 
dbv
->
	`r
(dbv, 
t
,

716 "uƚk o%ed", 
om
);

723 
	`
(
beg
);

724 
de
: i(
upde
) {

725 
upde
 = 0;

726 
aga
;

729 i(
vbo
 && *
cy_mp
 != 0)

730 
	`tf
("%s:owestumberedog file copied: %d\n",

731 
ogme
, *
cy_mp
);

732 i(
logd
 !
log_d
)

733 
	`
(
logd
);

734 i(
backupd
 !
backup_d
)

735 
	`
(
backupd
);

738 
	}
}

745 
	$da_cy
(
dbv
, 
fe
, 
om_d
, 
to_d
, 
vbo
)

746 
DB_ENV
 *
dbv
;

747 *
fe
, *
om_d
, *
to_d
;

748 
vbo
;

750 
DB_FH
 *
rfhp
, *
wfhp
;

751 
size_t
 

, 
nw
;

752 
t
;

753 *
buf
;

755 
t
 = 0;

756 
rfhp
 = 
wfhp
 = 
NULL
;

758 i(
vbo
)

759 
	`tf
("%s: cyg %s%c%t%s%c%s\n", 
ogme
, 
om_d
,

760 
PATH_SEPARATOR
[0], 
fe
, 
to_d
, PATH_SEPARATOR[0], file);

772 i((
buf
 = 
	`mloc
(
MEGABYTE
)=
NULL
) {

773 
dbv
->
	`r
(dbenv,

774 
o
, "%lu buf㸮loti", (
u_lg
)
MEGABYTE
);

779 i(
	`tf
(
buf
, 
MEGABYTE
, "%s%c%s",

780 
om_d
, 
PATH_SEPARATOR
[0], 
fe
>
MEGABYTE
) {

781 
dbv
->
	`rx
(dbenv,

782 "%s%c%s:holg", 
om_d
, 
PATH_SEPARATOR
[0], 
fe
);

783 
r
;

785 i((
t
 = 
	`__os_ݒ
(
dbv
, 
buf
, 0, 
DB_OSO_RDONLY
, 0, &
rfhp
)) != 0) {

786 
dbv
->
	`r
(dbv, 
t
, "%s", 
buf
);

787 
r
;

791 i(
	`tf
(
buf
, 
MEGABYTE
, "%s%c%s",

792 
to_d
, 
PATH_SEPARATOR
[0], 
fe
>
MEGABYTE
) {

793 
dbv
->
	`rx
(dbenv,

794 "%s%c%s:holg", 
to_d
, 
PATH_SEPARATOR
[0], 
fe
);

795 
r
;

797 i((
t
 = 
	`__os_ݒ
(
dbv
, 
buf
, 0,

798 
DB_OSO_CREATE
 | 
DB_OSO_TRUNC
, 
	`__db_omode
(
OWNER_RW
), &
wfhp
)) != 0) {

799 
dbv
->
	`r
(dbv, 
t
, "%s", 
buf
);

800 
r
;

804 (
t
 = 
	`__os_ad
(
dbv
, 
rfhp
, 
buf
, 
MEGABYTE
, &

)) == 0 &&

805 

 > 0)

806 i((
t
 = 
	`__os_wre
(
dbv
, 
wfhp
, 
buf
, 

, &
nw
)) != 0)

810 
r
: 
t
 = 1;

812 i(
buf
 !
NULL
)

813 
	`
(
buf
);

815 i(
rfhp
 !
NULL
 && 
	`__os_ohd
(
dbv
,fhp) != 0)

816 
t
 = 1;

819 i(
wfhp
 !
NULL
) {

820 i(
	`__os_fsync
(
dbv
, 
wfhp
) != 0)

821 
t
 = 1;

822 i(
	`__os_ohd
(
dbv
, 
wfhp
) != 0)

823 
t
 = 1;

825  (
t
);

826 
	}
}

829 
	$uge
()

831 ()
	`rtf
(
dr
, "uge: %[-cDuVv]\n\t%s\n", 
ogme
,

833  (
EXIT_FAILURE
);

834 
	}
}

837 
	$vsi_check
()

839 
v_maj
, 
v_m
, 
v_tch
;

842 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

843 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

844 
	`rtf
(
dr
,

846 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

847 
v_maj
, 
v_m
);

848  (
EXIT_FAILURE
);

851 
	}
}

	@../db_load/db_load.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

15 #ide
lt


16 cڡ 
	gcyright
[] =

21 cڡ *
	mogme
;

22 *
	mhdrbuf
;

23 
u_lg
 
	mlo
;

24 
u_lg
 
	migle
;

25 
	mdoda
;

26 
	mdofe
;

27 
	mvsi
;

28 *
	mhome
;

29 *
	msswd
;

30 
	mive
;

31 
u_t32_t
 
	mche
;

32 } 
	tLDG
;

34 
badd
 
__P
((
DB_ENV
 *));

35 
badnum
 
__P
((
DB_ENV
 *));

36 
cfigu
 
__P
((
DB_ENV
 *, 
DB
 *, **, **, *));

37 
cvb
 
__P
((
DB_ENV
 *, *, **));

38 
db_
 
__P
((
DB_ENV
 *, *, 
u_t32_t
, *));

39 
dbt_rdump
 
__P
((
DB_ENV
 *, 
DBT
 *));

40 
dbt_rt
 
__P
((
DB_ENV
 *, 
DBT
 *));

41 
dbt_eo
 
__P
((
DB_ENV
 *, 
DBT
 *, ));

42 
dbt_to_o
 
__P
((
DB_ENV
 *, 
DBT
 *, 
db_o_t
 *));

43 
v_
 
__P
((
DB_ENV
 **, 
LDG
 *));

44 
ld
 
__P
((
DB_ENV
 *, *, 
DBTYPE
, **, 
u_t
, 
LDG
 *, *));

45 
ma
 
__P
((, *[]));

46 
rhd
 
__P
((
DB_ENV
 *, 
DB
 *, 
DBTYPE
 *, **, *, *));

47 
uge
 
__P
(());

48 
vsi_check
 
__P
(());

50 cڡ *
	gogme
;

52 
	#G
(
f
((
LDG
 *)
dbv
->
p_ive
)->
	)
f

55 
	#LDF_NOHEADER
 0x01

	)

56 
	#LDF_NOOVERWRITE
 0x02

	)

57 
	#LDF_PASSWORD
 0x04

	)

60 
	$ma
(
gc
, 
gv
)

61 
gc
;

62 *
gv
[];

64 um { 
NOTSET
, 
FILEID_RESET
, 
LSN_RESET
, 
STANDARD_LOAD
 } 
mode
;

65 
*
ݏrg
;

66 

td
;

67 
DBTYPE
 
dbty
;

68 
DB_ENV
 *
dbv
;

69 
LDG
 
ldg
;

70 
u_t
 
ldf
;

71 
ch
, 
exied
, 
exv
, 
t
;

72 **
i
, **
p
;

74 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

75 
ogme
 = 
gv
[0];

77 ++
ogme
;

79 i((
t
 = 
	`vsi_check
()) != 0)

80  (
t
);

82 
ldg
.
ogme
 =rogname;

83 
ldg
.
lo
 = 0;

84 
ldg
.
doda
 =dg.
dofe
 = 0;

85 
ldg
.
vsi
 = 1;

86 
ldg
.
che
 = 
MEGABYTE
;

87 
ldg
.
hdrbuf
 = 
NULL
;

88 
ldg
.
home
 = 
NULL
;

89 
ldg
.
sswd
 = 
NULL
;

91 
mode
 = 
NOTSET
;

92 
ldf
 = 0;

93 
exv
 = 
exied
 = 0;

94 
dbty
 = 
DB_UNKNOWN
;

97 i((
p
 = 
i
 =

98 (**)
	`oc
((
size_t
)
gc
 + 1, (*))=
NULL
) {

99 
	`rtf
(
dr
, "%s: %s\n", 
ldg
.
ogme
, 
	`
(
ENOMEM
));

100  (
EXIT_FAILURE
);

110 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:f:h:nP:r:Tt:V")!
EOF
)

111 
ch
) {

113 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

114  (
	`uge
());

115 
mode
 = 
STANDARD_LOAD
;

117 *
p
++ = 
ݏrg
;

120 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

121  (
	`uge
());

122 
mode
 = 
STANDARD_LOAD
;

124 i(
	`eݒ
(
ݏrg
, "r", 
d
=
NULL
) {

125 
	`rtf
(
dr
, "%s: %s:eopen: %s\n",

126 
ldg
.
ogme
, 
ݏrg
, 
	`
(
o
));

127  (
EXIT_FAILURE
);

131 
ldg
.
home
 = 
ݏrg
;

134 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

135  (
	`uge
());

136 
mode
 = 
STANDARD_LOAD
;

138 
ldf
 |
LDF_NOOVERWRITE
;

141 
ldg
.
sswd
 = 
	`rdup
(
ݏrg
);

142 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

143 i(
ldg
.
sswd
 =
NULL
) {

144 
	`rtf
(
dr
, "%s: strdup: %s\n",

145 
ldg
.
ogme
, 
	`
(
o
));

146  (
EXIT_FAILURE
);

148 
ldf
 |
LDF_PASSWORD
;

151 i(
mode
 =
STANDARD_LOAD
)

152  (
	`uge
());

153 i(
	`rcmp
(
ݏrg
, "lsn") == 0)

154 
mode
 = 
LSN_RESET
;

155 i(
	`rcmp
(
ݏrg
, "fileid") == 0)

156 
mode
 = 
FILEID_RESET
;

158  (
	`uge
());

161 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

162  (
	`uge
());

163 
mode
 = 
STANDARD_LOAD
;

165 
ldf
 |
LDF_NOHEADER
;

168 i(
mode
 !
NOTSET
 && mod!
STANDARD_LOAD
)

169  (
	`uge
());

170 
mode
 = 
STANDARD_LOAD
;

172 i(
	`rcmp
(
ݏrg
, "btree") == 0) {

173 
dbty
 = 
DB_BTREE
;

176 i(
	`rcmp
(
ݏrg
, "hash") == 0) {

177 
dbty
 = 
DB_HASH
;

180 i(
	`rcmp
(
ݏrg
, "recno") == 0) {

181 
dbty
 = 
DB_RECNO
;

184 i(
	`rcmp
(
ݏrg
, "queue") == 0) {

185 
dbty
 = 
DB_QUEUE
;

188  (
	`uge
());

190 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

191  (
EXIT_SUCCESS
);

194  (
	`uge
());

196 
gc
 -
td
;

197 
gv
 +
td
;

199 i(
gc
 != 1)

200  (
	`uge
());

203 
	`__db_ut_sig
();

209 i(
	`v_
(&
dbv
, &
ldg
) != 0)

210 
shutdown
;

213 
mode
) {

214 
FILEID_RESET
:

215 
exv
 = 
dbv
->
	`feid_t
(

216 
dbv
, 
gv
[0], 
ldf
 & 
LDF_PASSWORD
 ? 
DB_ENCRYPT
 : 0);

218 
LSN_RESET
:

219 
exv
 = 
dbv
->
	`l_t
(

220 
dbv
, 
gv
[0], 
ldf
 & 
LDF_PASSWORD
 ? 
DB_ENCRYPT
 : 0);

222 
NOTSET
:

223 
STANDARD_LOAD
:

224 !
ldg
.
dofe
)

225 i(
	`ld
(
dbv
, 
gv
[0], 
dbty
, 
i
, 
ldf
,

226 &
ldg
, &
exied
) != 0)

227 
shutdown
;

232 
shutdown
: 
exv
 = 1;

234 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

235 
exv
 = 1;

236 
	`rtf
(
dr
,

237 "%s: dbv->o: %s\n", 
ldg
.
ogme
, 
	`db_
(
t
));

241 
	`__db_ut_signd
();

242 
	`
(
i
);

243 i(
ldg
.
sswd
 !
NULL
)

244 
	`
(
ldg
.
sswd
);

253  (
exv
 =0 ? (
exied
 == 0 ? 0 : 1) : 2);

254 
	}
}

261 
	$ld
(
dbv
, 
me
, 
gty
, 
i
, 
ags
, 
ldg
, 
exiedp
)

262 
DB_ENV
 *
dbv
;

263 *
me
, **
i
;

264 
DBTYPE
 
gty
;

265 
u_t
 
ags
;

266 
LDG
 *
ldg
;

267 *
exiedp
;

269 
DB
 *
dbp
;

270 
DBT
 
key
, 
rkey
, 
da
, *
adp
, *
wr
;

271 
DBTYPE
 
dbty
;

272 
DB_TXN
 *
xn
, *
txn
;

273 
db_o_t
 
o
, 
deo
;

274 
u_t32_t
 
put_ags
;

275 
ascii_o
, 
checkt
, 
hexkeys
, 
keyag
, 
keys
, 
size
, 
t
, 
rv
;

276 *
subdb
;

278 
put_ags
 = 
	`LF_ISSET
(
LDF_NOOVERWRITE
? 
DB_NOOVERWRITE
 : 0;

279 
	`G
(
doda
) = 0;

281 
subdb
 = 
NULL
;

282 
xn
 = 
txn
 = 
NULL
;

283 
	`memt
(&
key
, 0, (
DBT
));

284 
	`memt
(&
da
, 0, (
DBT
));

285 
	`memt
(&
rkey
, 0, (
DBT
));

287 
y_db
:

288 
dbty
 = 
DB_UNKNOWN
;

289 
keys
 = -1;

290 
hexkeys
 = -1;

291 
keyag
 = -1;

294 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

295 
dbv
->
	`r
(dbv, 
t
, "db_create");

296 
r
;

300 i(
	`LF_ISSET
(
LDF_NOHEADER
)) {

301 
checkt
 = 1;

302 
dbty
 = 
gty
;

304 i(
	`rhd
(
dbv
,

305 
dbp
, &
dbty
, &
subdb
, &
checkt
, &
keys
) != 0)

306 
r
;

307 i(
	`G
(
dofe
))

308 
de
;

316 i(
	`cfigu
(
dbv
, 
dbp
, 
i
, &
subdb
, &
keyag
))

317 
r
;

319 i(
keys
 != 1) {

320 i(
keyag
 == 1) {

321 
dbp
->
	`r
(dbp, 
EINVAL
, "No keys specified in file");

322 
r
;

325 i(
keyag
 == 0) {

326 
dbp
->
	`r
(dbp, 
EINVAL
, "Keys specified in file");

327 
r
;

330 
keyag
 = 1;

332 i(
dbty
 =
DB_BTREE
 || dbty =
DB_HASH
) {

333 i(
keyag
 == 0)

334 
dbp
->
	`r
(dbp,

335 
EINVAL
, "Btreend Hash must specify keys");

337 
keyag
 = 1;

340 i(
gty
 !
DB_UNKNOWN
) {

342 i(
dbty
 =
DB_RECNO
 || dbty =
DB_QUEUE
)

343 i(
keyag
 !1 && 
gty
 !
DB_RECNO
 &&

344 
gty
 !
DB_QUEUE
) {

345 
dbv
->
	`rx
(dbenv,

347 
r
;

349 
dbty
 = 
gty
;

352 i(
dbty
 =
DB_UNKNOWN
) {

353 
dbv
->
	`rx
(dbenv, "no databaseype specified");

354 
r
;

357 i(
keyag
 == -1)

358 
keyag
 = 0;

368 
hexkeys
 = (
	`G
(
vsi
>3 && 
keyag
 =1 && 
checkt
 == 0);

370 i(
keyag
 =1 && (
dbty
 =
DB_RECNO
 || dbty =
DB_QUEUE
))

371 
ascii_o
 = 1;

373 
ascii_o
 = 0;

376 i(
	`LF_ISSET
(
LDF_PASSWORD
) &&

377 (
t
 = 
dbp
->
	`t_ags
(dbp, 
DB_ENCRYPT
)) != 0) {

378 
dbp
->
	`r
(dbp, 
t
, "DB->set_flags: DB_ENCRYPT");

379 
r
;

383 
S
 
iti
-
ecific
 
b
 
comris
 

 
hash
 
funis
 
he
.

384 
F
 
exame
:

386 i((
t
 = 
dbp
->
	`t_bt_com
(dbp, 
lol_comris_func
)) != 0) {

387 
dbp
->
	`r
(dbp, 
t
, "DB->set_bt_compare");

388 
r
;

390 i((
t
 = 
dbp
->
	`t_h_hash
(dbp, 
lol_hash_func
)) != 0) {

391 
dbp
->
	`r
(dbp, 
t
, "DB->set_h_hash");

392 
r
;

397 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, 
me
, 
subdb
, 
dbty
,

398 
DB_CREATE
 | (
	`TXN_ON
(
dbv
? 
DB_AUTO_COMMIT
 : 0),

399 
	`__db_omode
("rw-rw-rw-"))) != 0) {

400 
dbp
->
	`r
(dbp, 
t
, "DB->ݒ: %s", 
me
);

401 
r
;

403 i(
ldg
->
ive
 != 0) {

404 i((
t
 = 
	`__db_ut_che
(
dbp
, &
ldg
->
che
, &
size
)) != 0)

405 
r
;

406 i(
size
) {

407 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0)

408 
r
;

409 
dbp
 = 
NULL
;

410 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0)

411 
r
;

412 i((
t
 = 
	`v_
(&
dbv
, 
ldg
)) != 0)

413 
r
;

414 
y_db
;

419 
adp
 = 
wr
 = &
key
;

420 i(
dbty
 =
DB_RECNO
 || dbty =
DB_QUEUE
) {

421 
key
.
size
 = (
o
);

422 i(
keyag
) {

423 
key
.
da
 = &
deo
;

424 i(
checkt
) {

425 
adp
 = &
rkey
;

426 
key_da
;

429 
key
.
da
 = &
o
;

431 
key_da
: i((
adp
->
da
 = 
	`mloc
ԗdp->
un
 = 1024)=
NULL
) {

432 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

433 
r
;

435 i((
da
.d
	`mloc
(da.
un
 = 1024)=
NULL
) {

436 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

437 
r
;

440 i(
	`TXN_ON
(
dbv
) &&

441 (
t
 = 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
txn
, 0)) != 0)

442 
r
;

445 
o
 = 1; !
	`__db_ut_ued
(); ++recno) {

446 i(!
keyag
) {

447 i(
checkt
) {

448 i(
	`dbt_rt
(
dbv
, &
da
))

449 
r
;

451 i(
	`dbt_rdump
(
dbv
, &
da
))

452 
r
;

455 i(
checkt
) {

456 i(
	`dbt_rt
(
dbv
, 
adp
))

457 
r
;

458 i(
ascii_o
 &&

459 
	`dbt_to_o
(
dbv
, 
adp
, &
deo
) != 0)

460 
r
;

462 i(!
	`G
(
doda
&& 
	`dbt_rt
(
dbv
, &
da
))

463 
odd_cou
;

465 i(
ascii_o
) {

466 i(
	`dbt_eo
(
dbv
, 
adp
, 
hexkeys
))

467 
r
;

469 i(
	`dbt_rdump
(
dbv
, 
adp
))

470 
r
;

472 i(!
	`G
(
doda
&& 
	`dbt_rdump
(
dbv
, &
da
)) {

473 
odd_cou
: 
dbv
->
	`rx
(dbenv,

475 
r
;

479 i(
	`G
(
doda
))

481 
y
: i(
txn
 !
NULL
)

482 i((
t
 = 
dbv
->
	`txn_beg
(dbv, 
txn
, &
xn
, 0)) != 0)

483 
r
;

484 
t
 = 
dbp
->
	`put
(dbp, 
xn
, 
wr
, &
da
, 
put_ags
)) {

486 i(
xn
 !
NULL
) {

487 i((
t
 =

488 
xn
->
	`comm
(xn, 
DB_TXN_NOSYNC
)) != 0)

489 
r
;

490 
xn
 = 
NULL
;

493 
DB_KEYEXIST
:

494 *
exiedp
 = 1;

495 
dbv
->
	`rx
(dbenv,

497 
me
,

498 !
keyag
 ? 
o
 :ecno * 2 - 1);

500 ()
dbv
->
	`dbt
(&
key
,

501 
checkt
, 0, 
dr
, 
__db__back
, 0);

503 
DB_LOCK_DEADLOCK
:

505 i(
xn
 !
NULL
) {

506 i((
t
 = 
xn
->
	`abt
(ctxn)) != 0)

507 
r
;

508 
xn
 = 
NULL
;

509 
y
;

513 
dbv
->
	`r
(dbv, 
t
, 
NULL
);

514 i(
xn
 !
NULL
) {

515 ()
xn
->
	`abt
(ctxn);

516 
xn
 = 
NULL
;

518 
r
;

520 i(
xn
 !
NULL
) {

521 i((
t
 = 
xn
->
	`abt
(ctxn)) != 0)

522 
r
;

523 
xn
 = 
NULL
;

526 
de
: 
rv
 = 0;

527 
	`DB_ASSERT
(
dbv
, 
xn
 =
NULL
);

528 i(
txn
 !
NULL
 && (
t
 =xn->
	`comm
(txn, 0)) != 0) {

529 
txn
 = 
NULL
;

530 
r
;

534 
r
: 
rv
 = 1;

535 
	`DB_ASSERT
(
dbv
, 
xn
 =
NULL
);

536 i(
txn
 !
NULL
)

537 ()
txn
->
	`abt
(txn);

541 i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 0)) != 0) {

542 
dbv
->
	`r
(dbv, 
t
, "DB->close");

543 
rv
 = 1;

546 i(
	`G
(
hdrbuf
!
NULL
)

547 
	`
(
	`G
(
hdrbuf
));

548 
	`G
(
hdrbuf

NULL
;

550 i(
subdb
 !
NULL
)

551 
	`
(
subdb
);

552 i(
dbty
 !
DB_RECNO
 && dbty !
DB_QUEUE
 && 
key
.
da
 !
NULL
)

553 
	`
(
key
.
da
);

554 i(
rkey
.
da
 !
NULL
)

555 
	`
(
rkey
.
da
);

556 
	`
(
da
.data);

558  (
rv
);

559 
	}
}

566 
	$v_
(
dbvp
, 
ldg
)

567 
DB_ENV
 **
dbvp
;

568 
LDG
 *
ldg
;

570 
DB_ENV
 *
dbv
;

571 
t
;

573 i((
t
 = 
	`db_v_
(
dbvp
, 0)) != 0) {

574 
	`rtf
(
dr
,

575 "%s: db_v_: %s\n", 
ldg
->
ogme
, 
	`db_
(
t
));

576  (
t
);

578 
dbv
 = *
dbvp
;

579 
dbv
->
	`t_rfe
(dbv, 
dr
);

580 
dbv
->
	`t_fx
(dbv, 
ldg
->
ogme
);

581 i(
ldg
->
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

582 
ldg
->
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

583 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

584  (
t
);

586 i((
t
 = 
	`db_
(
dbv
, 
ldg
->
home
,dg->
che
, &ldg->
ive
)) != 0)

587  (
t
);

588 
dbv
->
p_ive
 = 
ldg
;

591 
	}
}

598 
	$db_
(
dbv
, 
home
, 
che
, 
is_ive
)

599 
DB_ENV
 *
dbv
;

600 *
home
;

601 
u_t32_t
 
che
;

602 *
is_ive
;

604 
u_t32_t
 
ags
;

605 
t
;

607 *
is_ive
 = 0;

609 
ags
 = 
DB_USE_ENVIRON
 |

610 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
;

611 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
ags
, 0)) == 0)

613 i(
t
 =
DB_VERSION_MISMATCH
)

614 
r
;

628 
	`LF_CLR
(
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_TXN
);

629 
	`LF_SET
(
DB_CREATE
 | 
DB_PRIVATE
);

630 *
is_ive
 = 1;

631 i((
t
 = 
dbv
->
	`t_chesize
(dbv, 0, 
che
, 1)) != 0) {

632 
dbv
->
	`r
(dbv, 
t
, "set_cachesize");

635 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
ags
, 0)) == 0)

639 
r
: 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

641 
	}
}

643 
	#FLAG
(
me
, 
vue
, 
keywd
, 
ag
) \

644 i(
	`rcmp
(
me
, 
keywd
) == 0) { \

645 *
vue
) { \

647 i((
t
 = 
dbp
->
	`t_ags
(dbp, 
ag
)) != 0) { \

648 
dbp
->
	`r
(dbp, 
t
, "%s: set_flags: %s", \

649 
	`G
(
ogme
), 
me
); \

650 
r
; \

656 
	`badnum
(
dbv
); \

657 
r
; \

660 }

	)

661 
	#NUMBER
(
me
, 
vue
, 
keywd
, 
func
, 
t
) \

662 i(
	`rcmp
(
me
, 
keywd
) == 0) { \

663 i((
t
 = 
	`__db_glg
(
dbv
, \

664 
NULL
, 
vue
, 0, 
LONG_MAX
, &
v
)) != 0 || \

665 (
t
 = 
dbp
->
	`func
(dbp, (
t
)
v
)) != 0) \

666 
m
; \

668 }

	)

669 
	#STRING
(
me
, 
vue
, 
keywd
, 
func
) \

670 i(
	`rcmp
(
me
, 
keywd
) == 0) { \

671 i((
t
 = 
dbp
->
	`func
(dbp, 
vue
[0])) != 0) \

672 
m
; \

674 }

	)

681 
	#CONFIGURATION_LIST_COMPARE
 \

682 
	`NUMBER
(
me
, 
vue
, "bt_mkey", 
t_bt_mkey
, 
u_t32_t
); \

683 
	`FLAG
(
me
, 
vue
, "chksum", 
DB_CHKSUM
); \

684 
	`NUMBER
(
me
, 
vue
, "db_ld", 
t_ld
, ); \

685 
	`NUMBER
(
me
, 
vue
, "db_gesize", 
t_gesize
, 
u_t32_t
); \

686 
	`FLAG
(
me
, 
vue
, "duis", 
DB_DUP
); \

687 
	`FLAG
(
me
, 
vue
, "dupst", 
DB_DUPSORT
); \

688 
	`NUMBER
(
me
, 
vue
, "exsize", 
t_q_exsize
, 
u_t32_t
); \

689 
	`NUMBER
(
me
, 
vue
, "h_f", 
t_h_f
, 
u_t32_t
); \

690 
	`NUMBER
(
me
, 
vue
, "h_m", 
t_h_m
, 
u_t32_t
); \

691 
	`NUMBER
(
me
, 
vue
, "_n", 
t__n
, 
u_t32_t
); \

692 
	`STRING
(
me
, 
vue
, "_d", 
t__d
); \

693 
	`FLAG
(
me
, 
vue
, "um", 
DB_RECNUM
); \

694 
	`FLAG
(
me
, 
vue
, "numb", 
DB_RENUMBER
)

	)

701 
	$cfigu
(
dbv
, 
dbp
, 
p
, 
subdbp
, 
key
)

702 
DB_ENV
 *
dbv
;

703 
DB
 *
dbp
;

704 **
p
, **
subdbp
;

705 *
key
;

707 
v
;

708 
t
, 
vech
;

709 *
me
, *
vue
;

711 ; (
me
 = *
p
!
NULL
; *--
vue
 = 
vech
, ++clp) {

712 i((
vue
 = 
	`rchr
(
me
, '=')=
NULL
) {

713 
dbp
->
	`rx
(dbp,

717 
vech
 = *
vue
;

718 *
vue
++ = '\0';

720 i(
	`rcmp
(
me
, "database") == 0 ||

721 
	`rcmp
(
me
, "subdatabase") == 0) {

722 i(*
subdbp
 !
NULL
)

723 
	`
(*
subdbp
);

724 i((*
subdbp
 = 
	`rdup
(
vue
)=
NULL
) {

725 
dbp
->
	`r
(dbp, 
ENOMEM
, 
NULL
);

730 i(
	`rcmp
(
me
, "keys") == 0) {

731 i(
	`rcmp
(
vue
, "1") == 0)

732 *
key
 = 1;

733 i(
	`rcmp
(
vue
, "0") == 0)

734 *
key
 = 0;

736 
	`badnum
(
dbv
);

742 
CONFIGURATION_LIST_COMPARE
;

744 
dbp
->
	`rx
(dbp,

745 "unknowcommd-lcfiguti keywd \"%s\"", 
me
);

750 
m
:

751 
dbp
->
	`r
(dbp, 
t
, "%s: %s=%s", 
	`G
(
ogme
), 
me
, 
vue
);

752 
r
:  (1);

753 
	}
}

760 
	$rhd
(
dbv
, 
dbp
, 
dbtyp
, 
subdbp
, 
check
, 
key
)

761 
DB_ENV
 *
dbv
;

762 
DB
 *
dbp
;

763 
DBTYPE
 *
dbtyp
;

764 **
subdbp
;

765 *
check
, *
key
;

767 
size_t
 
bu
, 
l
, 
t
;

768 
v
;

769 
ch
, 
f
, 
hdr
, 
t
;

770 *
buf
, *
me
, *
p
, *
vue
;

772 *
dbtyp
 = 
DB_UNKNOWN
;

773 *
check
 = 0;

774 
me
 = 
NULL
;

780 
bu
 = 4096;

781 i(
	`G
(
hdrbuf
=
NULL
) {

782 
hdr
 = 0;

783 i((
buf
 = 
	`mloc
(
bu
)=
NULL
)

784 
memr
;

785 
	`G
(
hdrbuf

buf
;

786 
	`G
(
igle
G(
lo
);

788 
hdr
 = 1;

789 
buf
 = 
	`G
(
hdrbuf
);

790 
	`G
(
lo
G(
igle
);

793 
t
 = 0;

794 
f
 = 1;; first = 0) {

795 ++
	`G
(
lo
);

798 
l
 = 0;

799 
buf
 = &
	`G
(
hdrbuf
)[
t
];

800 i(
hdr
 == 0) {

802 i((
ch
 = 
	`gch
()=
EOF
) {

803 i(!
f
 || 
	`
(
d
))

804 
badfmt
;

805 
	`G
(
dofe
) = 1;

812 i(
l
 + 
t
 =
bu
) {

813 
	`G
(
hdrbuf
) =

814 
	`loc
(
	`G
(
hdrbuf
), 
bu
 *= 2);

815 i(
	`G
(
hdrbuf
=
NULL
)

816 
memr
;

817 
buf
 = &
	`G
(
hdrbuf
)[
t
];

820 i(
ch
 == '\n')

823 
buf
[
l
++] = 
ch
;

825 i(
	`G
(
dofe
) == 1)

827 
buf
[
l
++] = '\0';

829 
l
 = 
	`
(
buf
) + 1;

830 
t
 +
l
;

832 i(
me
 !
NULL
) {

833 
	`
(
me
);

834 
me
 = 
NULL
;

837 i((
me
 = 
	`rdup
(
buf
)=
NULL
)

838 
memr
;

839 i((
p
 = 
	`rchr
(
me
, '=')=
NULL
)

840 
badfmt
;

841 *
p
++ = '\0';

843 
vue
 = 
p
--;

845 i(
me
[0] == '\0')

846 
badfmt
;

855 i(
	`rcmp
(
me
, "database") == 0 ||

856 
	`rcmp
(
me
, "subdatabase") == 0) {

857 i((
t
 = 
	`cvb
(
dbv
, 
vue
, 
subdbp
)) != 0) {

858 
dbp
->
	`r
(dbp, 
t
, "erroreading dbame");

859 
r
;

865 i(
vue
[0] == '\0')

866 
badfmt
;

868 i(
	`rcmp
(
me
, "HEADER") == 0)

870 i(
	`rcmp
(
me
, "VERSION") == 0) {

875 
	`G
(
vsi

	`oi
(
vue
);

877 i(
	`G
(
vsi
) > 3) {

878 
dbp
->
	`rx
(dbp,

880 
	`G
(
lo
), G(
vsi
));

881 
r
;

885 i(
	`rcmp
(
me
, "format") == 0) {

886 i(
	`rcmp
(
vue
, "bytevalue") == 0) {

887 *
check
 = 0;

890 i(
	`rcmp
(
vue
, "print") == 0) {

891 *
check
 = 1;

894 
badfmt
;

896 i(
	`rcmp
(
me
, "type") == 0) {

897 i(
	`rcmp
(
vue
, "btree") == 0) {

898 *
dbtyp
 = 
DB_BTREE
;

901 i(
	`rcmp
(
vue
, "hash") == 0) {

902 *
dbtyp
 = 
DB_HASH
;

905 i(
	`rcmp
(
vue
, "recno") == 0) {

906 *
dbtyp
 = 
DB_RECNO
;

909 i(
	`rcmp
(
vue
, "queue") == 0) {

910 *
dbtyp
 = 
DB_QUEUE
;

913 
dbp
->
	`rx
(dbp, "l%lu: unknowty", 
	`G
(
lo
));

914 
r
;

916 i(
	`rcmp
(
me
, "keys") == 0) {

917 i(
	`rcmp
(
vue
, "1") == 0)

918 *
key
 = 1;

919 i(
	`rcmp
(
vue
, "0") == 0)

920 *
key
 = 0;

922 
	`badnum
(
dbv
);

923 
r
;

928 
CONFIGURATION_LIST_COMPARE
;

930 
dbp
->
	`rx
(dbp,

932 
me
);

933 
r
;

935 
t
 = 0;

938 
m
: 
dbp
->
	`r
(dbp, 
t
, "%s: %s=%s", 
	`G
(
ogme
), 
me
, 
vue
);

939 
t
 = 1;

942 
badfmt
: 
dbp
->
	`rx
(dbp, "l%lu: uxed fm", 
	`G
(
lo
));

943 
t
 = 1;

946 
memr
: 
dbp
->
	`rx
(dbp, "unableollocate memory");

947 
r
: 
t
 = 1;

949 i(
me
 !
NULL
)

950 
	`
(
me
);

951  (
t
);

952 
	}
}

961 
	#DIGITIZE
(
e
, 
v1
, 
v2
) { \

962 
_v1
, 
_v2
; \

963 
_v1
 = (
v1
); \

964 
_v2
 = (
v2
); \

965 i((
_v1
> 'f' || (
_v2
) > 'f') \

966  (
	`badd
(
dbv
)); \

967 (
e
) = \

968 ((
_v1
) == '0' ? 0 : \

969 ((
_v1
) == '1' ? 1 : \

970 ((
_v1
) == '2' ? 2 : \

971 ((
_v1
) == '3' ? 3 : \

972 ((
_v1
) == '4' ? 4 : \

973 ((
_v1
) == '5' ? 5 : \

974 ((
_v1
) == '6' ? 6 : \

975 ((
_v1
) == '7' ? 7 : \

976 ((
_v1
) == '8' ? 8 : \

977 ((
_v1
) == '9' ? 9 : \

978 ((
_v1
) == 'a' ? 10 : \

979 ((
_v1
) == 'b' ? 11 : \

980 ((
_v1
) == 'c' ? 12 : \

981 ((
_v1
) == 'd' ? 13 : \

982 ((
_v1
) == 'e' ? 14 : 15))))))))))))))) << 4 | \

983 ((
_v2
) == '0' ? 0 : \

984 ((
_v2
) == '1' ? 1 : \

985 ((
_v2
) == '2' ? 2 : \

986 ((
_v2
) == '3' ? 3 : \

987 ((
_v2
) == '4' ? 4 : \

988 ((
_v2
) == '5' ? 5 : \

989 ((
_v2
) == '6' ? 6 : \

990 ((
_v2
) == '7' ? 7 : \

991 ((
_v2
) == '8' ? 8 : \

992 ((
_v2
) == '9' ? 9 : \

993 ((
_v2
) == 'a' ? 10 : \

994 ((
_v2
) == 'b' ? 11 : \

995 ((
_v2
) == 'c' ? 12 : \

996 ((
_v2
) == 'd' ? 13 : \

997 ((
_v2
) == 'e' ? 14 : 15))))))))))))))); \

998 }

	)

1014 
	$cvb
(
dbv
, 
r
, 
out
)

1015 
DB_ENV
 *
dbv
;

1016 *
r
, **
out
;

1018 *
outr
;

1027 i((
outr
 = 
	`mloc
(
	`
(
r
+ 1)=
NULL
)

1028  (
ENOMEM
);

1030 *
out
 = 
outr
;

1032  ; *
r
 != '\0'; instr++)

1033 i(*
r
 == '\\') {

1034 i(*++
r
 == '\\') {

1035 *
outr
++ = '\\';

1038 
	`DIGITIZE
(*
outr
++, *
r
, *++instr);

1040 *
outr
++ = *
r
;

1042 *
outr
 = '\0';

1045 
	}
}

1052 
	$dbt_rt
(
dbv
, 
db
)

1053 
DB_ENV
 *
dbv
;

1054 
DBT
 *
db
;

1056 
u_t32_t
 
n
;

1057 
u_t8_t
 *
p
;

1058 
c1
, 
c2
, 
es
, 
f
;

1059 
buf
[32];

1061 ++
	`G
(
lo
);

1063 
f
 = 1;

1064 
es
 = 0;

1065 
p
 = 
db
->
da
, 
n
 = 0; (
c1
 = 
	`gch
()) != '\n';) {

1066 i(
c1
 =
EOF
) {

1067 i(
n
 == 0) {

1068 
	`G
(
dofe
G(
doda
) = 1;

1071  (
	`badd
(
dbv
));

1073 i(
f
) {

1074 
f
 = 0;

1075 i(
	`G
(
vsi
) > 1) {

1076 i(
c1
 != ' ') {

1077 
buf
[0] = 
c1
;

1078 i(
	`fgs
(
buf
 + 1,

1079 (
buf
- 1, 
d
=
NULL
 ||

1080 
	`rcmp
(
buf
, "DATA=END\n") != 0)

1081  (
	`badd
(
dbv
));

1082 
	`G
(
doda
) = 1;

1088 i(
es
) {

1089 i(
c1
 != '\\') {

1090 i((
c2
 = 
	`gch
()=
EOF
)

1091  (
	`badd
(
dbv
));

1092 
	`DIGITIZE
(
c1
, c1, 
c2
);

1094 
es
 = 0;

1096 i(
c1
 == '\\') {

1097 
es
 = 1;

1100 i(
n
 >
db
->
un
 - 10) {

1101 
db
->
un
 *= 2;

1102 i((
db
->
da
 =

1103 
	`loc
(
db
->
da
, db->
un
)=
NULL
) {

1104 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

1107 
p
 = (
u_t8_t
 *)
db
->
da
 + 
n
;

1109 ++
n
;

1110 *
p
++ = 
c1
;

1112 
db
->
size
 = 
n
;

1115 
	}
}

1122 
	$dbt_rdump
(
dbv
, 
db
)

1123 
DB_ENV
 *
dbv
;

1124 
DBT
 *
db
;

1126 
u_t32_t
 
n
;

1127 
u_t8_t
 *
p
;

1128 
c1
, 
c2
, 
f
;

1129 
buf
[32];

1131 ++
	`G
(
lo
);

1133 
f
 = 1;

1134 
p
 = 
db
->
da
, 
n
 = 0; (
c1
 = 
	`gch
()) != '\n';) {

1135 i(
c1
 =
EOF
) {

1136 i(
n
 == 0) {

1137 
	`G
(
dofe
G(
doda
) = 1;

1140  (
	`badd
(
dbv
));

1142 i(
f
) {

1143 
f
 = 0;

1144 i(
	`G
(
vsi
) > 1) {

1145 i(
c1
 != ' ') {

1146 
buf
[0] = 
c1
;

1147 i(
	`fgs
(
buf
 + 1,

1148 (
buf
- 1, 
d
=
NULL
 ||

1149 
	`rcmp
(
buf
, "DATA=END\n") != 0)

1150  (
	`badd
(
dbv
));

1151 
	`G
(
doda
) = 1;

1157 i((
c2
 = 
	`gch
()=
EOF
)

1158  (
	`badd
(
dbv
));

1159 i(
n
 >
db
->
un
 - 10) {

1160 
db
->
un
 *= 2;

1161 i((
db
->
da
 =

1162 
	`loc
(
db
->
da
, db->
un
)=
NULL
) {

1163 
dbv
->
	`r
(dbv, 
ENOMEM
, 
NULL
);

1166 
p
 = (
u_t8_t
 *)
db
->
da
 + 
n
;

1168 ++
n
;

1169 
	`DIGITIZE
(*
p
++, 
c1
, 
c2
);

1171 
db
->
size
 = 
n
;

1174 
	}
}

1181 
	$dbt_eo
(
dbv
, 
db
, 
ishex
)

1182 
DB_ENV
 *
dbv
;

1183 
DBT
 *
db
;

1184 
ishex
;

1186 
buf
[32], *
p
, *
q
;

1187 
u_lg
 
o
;

1189 ++
	`G
(
lo
);

1191 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
) {

1192 
	`G
(
dofe
G(
doda
) = 1;

1196 i(
	`rcmp
(
buf
, "DATA=END\n") == 0) {

1197 
	`G
(
doda
) = 1;

1201 i(
buf
[0] != ' ')

1202 
r
;

1208 i(
ishex
) {

1209 
p
 = 
q
 = 
buf
 + 1; *q != '\0' && *q != '\n';) {

1217 i(*
q
++ != '3')

1218 
r
;

1219 i(*
q
 == '\n' || *q == '\0')

1220 
r
;

1221 *
p
++ = *
q
++;

1223 *
p
 = '\0';

1226 i(
	`__db_gulg
(
dbv
, 
	`G
(
ogme
), 
buf
 + 1, 0, 0, &
o
))

1227 
r
;

1229 *((
db_o_t
 *)
db
->
da

o
;

1230 
db
->
size
 = (
db_o_t
);

1233 
r
:  (
	`badd
(
dbv
));

1234 
	}
}

1237 
	$dbt_to_o
(
dbv
, 
dbt
, 

)

1238 
DB_ENV
 *
dbv
;

1239 
DBT
 *
dbt
;

1240 
db_o_t
 *

;

1242 
buf
[32];

1244 
	`memy
(
buf
, 
dbt
->
da
, dbt->
size
);

1245 
buf
[
dbt
->
size
] = '\0';

1247  (
	`__db_gulg
(
dbv
, 
	`G
(
ogme
), 
buf
, 0, 0, (
u_lg
 *)

));

1248 
	}
}

1255 
	$badnum
(
dbv
)

1256 
DB_ENV
 *
dbv
;

1258 
dbv
->
	`rx
(dbenv,

1260 
	}
}

1267 
	$badd
(
dbv
)

1268 
DB_ENV
 *
dbv
;

1270 
dbv
->
	`rx
(dbenv, "unexpectednd of input data or key/dataair");

1272 
	}
}

1279 
	$uge
()

1281 ()
	`rtf
(
dr
, "uge: %%s\n\t%s\n", 
ogme
,

1284 ()
	`rtf
(
dr
, "usage: %s %s\n",

1285 
ogme
, "-rsn | fileid [-h home] [-Password] db_file");

1286  (
EXIT_FAILURE
);

1287 
	}
}

1290 
	$vsi_check
()

1292 
v_maj
, 
v_m
, 
v_tch
;

1295 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

1296 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

1297 
	`rtf
(
dr
,

1299 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

1300 
v_maj
, 
v_m
);

1301  (
EXIT_FAILURE
);

1304 
	}
}

	@../db_printlog/db_printlog.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/f.h
"

15 
	~"dbc/hash.h
"

16 
	~"dbc/log.h
"

17 
	~"dbc/qam.h
"

18 
	~"dbc/txn.h
"

20 #ide
lt


21 cڡ 
	gcyright
[] =

25 
v__t
 
__P
((
DB_ENV
 *, 
u_t32_t
,

26 (***)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

27 
v__t_42
 
	`__P
((
DB_ENV
 *,

28 (***)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

29 
v__t_43
 
	`__P
((
DB_ENV
 *,

30 (***)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

31 
v__t_45
 
	`__P
((
DB_ENV
 *,

32 (***)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

33 
l_g
 
	`__P
((*, 
DB_LSN
 *));

34 
ma
 
	`__P
((, *[]));

35 
ݒ_p_db
 
	`__P
((
DB_ENV
 *, 
DB
 **, 
DBC
 **));

36 
t_p_cd
 
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
));

37 
uge
 
	`__P
(());

38 
vsi_check
 
	`__P
(());

40 cڡ *
ogme
;

43 
	$ma
(
gc
, 
gv
)

44 
gc
;

45 *
gv
[];

47 
*
ݏrg
;

48 

td
;

49 
DB
 *
dbp
;

50 
DBC
 *
dbc
;

51 
DBT
 
da
, 
keydbt
;

52 
DB_ENV
 *
dbv
;

53 
DB_LOGC
 *
logc
;

54 
DB_LSN
 
key
, 
t
, 

, 
v
;

55 
size_t
 
dbsize
;

56 
u_t32_t
 
logcag
, 
wvsi
, 
vsi
;

57 
ch
, 
cmp
, 
exv
, 
nag
, 
rag
, 
t
, 
pag
;

58 (**
db

	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

59 *
home
, *
sswd
;

61 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

62 
ogme
 = 
gv
[0];

64 ++
ogme
;

66 i((
t
 = 
	`vsi_check
()) != 0)

67  (
t
);

69 
dbp
 = 
NULL
;

70 
dbc
 = 
NULL
;

71 
dbv
 = 
NULL
;

72 
logc
 = 
NULL
;

73 
	`ZERO_LSN
(
t
);

74 
	`ZERO_LSN
(

);

75 
dbsize
 = 0;

76 
exv
 = 
nag
 = 
rag
 = 
pag
 = 0;

77 
db
 = 
NULL
;

78 
home
 = 
sswd
 = 
NULL
;

80 (
ch
 = 
	`gt
(
gc
, 
gv
, "b:e:h:NP:rRV")!
EOF
)

81 
ch
) {

84 i(
	`l_g
(
ݏrg
, &
t
))

85  (
	`uge
());

89 i(
	`l_g
(
ݏrg
, &

))

90  (
	`uge
());

93 
home
 = 
ݏrg
;

96 
nag
 = 1;

99 
sswd
 = 
	`rdup
(
ݏrg
);

100 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

101 i(
sswd
 =
NULL
) {

102 
	`rtf
(
dr
, "%s: strdup: %s\n",

103 
ogme
, 
	`
(
o
));

104  (
EXIT_FAILURE
);

108 
rag
 = 1;

111 
pag
 = 1;

114 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

115  (
EXIT_SUCCESS
);

118  (
	`uge
());

120 
gc
 -
td
;

121 
gv
 +
td
;

123 i(
gc
 > 0)

124  (
	`uge
());

127 
	`__db_ut_sig
();

133 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

134 
	`rtf
(
dr
,

135 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

136 
shutdown
;

139 
dbv
->
	`t_rfe
(dbv, 
dr
);

140 
dbv
->
	`t_fx
(dbv, 
ogme
);

142 i(
nag
) {

143 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

144 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

145 
shutdown
;

147 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

148 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

149 
shutdown
;

153 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

154 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

155 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

156 
shutdown
;

163 i((
t
 = 
dbv
->
	`t_p_dich
(dbv, 
t_p_cd
)) != 0) {

164 
dbv
->
	`r
(dbv, 
t
, "app_dispatch");

165 
shutdown
;

175 i(
pag
) {

176 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

177 
DB_INIT_MPOOL
 | 
DB_USE_ENVIRON
, 0)) != 0 &&

178 (
t
 =
DB_VERSION_MISMATCH
 ||

179 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

180 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0))

182 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

183 
shutdown
;

185 } i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

186 (
t
 =
DB_VERSION_MISMATCH
 ||

187 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

188 
DB_CREATE
 | 
DB_INIT_LOG
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0)) != 0)) {

189 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

190 
shutdown
;

194 i(
pag
) {

195 i((
t
 = 
	`ݒ_p_db
(
dbv
, &
dbp
, &
dbc
)) != 0)

196 
shutdown
;

197 } i((
t
 = 
dbv
->
	`log_curs
(dbv, &
logc
, 0)) != 0) {

198 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->log_cursor");

199 
shutdown
;

202 i(
	`IS_ZERO_LSN
(
t
)) {

203 
	`memt
(&
keydbt
, 0, (keydbt));

204 
logcag
 = 
rag
 ? 
DB_PREV
 : 
DB_NEXT
;

206 
key
 = 
t
;

207 
logcag
 = 
DB_SET
;

209 
	`memt
(&
da
, 0, (data));

217 i(
pag
)

218 
vsi
 = 
DB_LOGVERSION
;

220 
vsi
 = 0;

221 
	`ZERO_LSN
(
v
);

224 i(
pag
 &&

225 (
t
 = 
	`v__t
(
dbv
, 
vsi
, &
db
, &
dbsize
)) != 0) {

226 
dbv
->
	`r
(dbv, 
t
, "callback: initialization");

227 
shutdown
;

229 ; !
	`__db_ut_ued
(); 
logcag
 = 
rag
 ? 
DB_PREV
 : 
DB_NEXT
) {

230 i(
pag
) {

231 
t
 = 
dbc
->
	`g
(dbc, &
keydbt
, &
da
, 
logcag
);

232 i(
t
 == 0)

233 
key
 = ((
REP_CONTROL
 *)
keydbt
.
da
)->
l
;

235 
t
 = 
logc
->
	`g
ogc, &
key
, &
da
, 
logcag
);

236 i(
t
 != 0) {

237 i(
t
 =
DB_NOTFOUND
)

239 
dbv
->
	`r
(dbenv,

240 
t
, 
pag
 ? "DBC->get" : "DB_LOGC->get");

241 
shutdown
;

247 i(!
	`IS_ZERO_LSN
(

)) {

248 
cmp
 = 
	`LOG_COMPARE
(&
key
, &

);

249 i((
rag
 && 
cmp
 < 0) || (!rflag && cmp > 0))

252 i(!
pag
 && 
key
.
fe
 !
v
.file) {

258 i((
t
 = 
logc
->
	`vsi
ogc, &
wvsi
, 0)) != 0) {

259 
dbv
->
	`r
(dbv, 
t
, "DB_LOGC->version");

260 
shutdown
;

262 i(
vsi
 !
wvsi
) {

263 
vsi
 = 
wvsi
;

264 i((
t
 = 
	`v__t
(
dbv
, 
vsi
,

265 &
db
, &
dbsize
)) != 0) {

266 
dbv
->
	`r
(dbv, 
t
,

268 
shutdown
;

273 
t
 = 
	`__db_dich
(
dbv
,

274 
db
, 
dbsize
, &
da
, &
key
, 
DB_TXN_PRINT
, 
NULL
);

280 ()
	`fush
(
dout
);

282 i(
t
 != 0) {

283 
dbv
->
	`r
(dbv, 
t
, "tx: dispatch");

284 
shutdown
;

289 
shutdown
: 
exv
 = 1;

291 i(
logc
 !
NULL
 && (
t
 =ogc->
	`o
(logc, 0)) != 0)

292 
exv
 = 1;

294 i(
dbc
 !
NULL
 && (
t
 = dbc->
	`o
(dbc)) != 0)

295 
exv
 = 1;

297 i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 0)) != 0)

298 
exv
 = 1;

305 i(
db
 !
NULL
)

306 
	`__os_
(
dbv
, 
db
);

307 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

308 
exv
 = 1;

309 
	`rtf
(
dr
,

310 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

313 i(
sswd
 !
NULL
)

314 
	`
(
sswd
);

317 
	`__db_ut_signd
();

319  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

320 
	}
}

326 
	$v__t
(
dbv
, 
vsi
, 
dbp
, 
dbsiz
)

327 
DB_ENV
 *
dbv
;

328 
u_t32_t
 
vsi
;

329 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

330 
size_t
 *
dbsiz
;

332 
t
;

339 i((
t
 = 
	`v__t_45
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

340  (
t
);

342 
vsi
) {

350 
DB_LOGVERSION_46
:

351 
DB_LOGVERSION_45
:

352 
DB_LOGVERSION_44
:

353 
t
 = 0;

355 
DB_LOGVERSION_43
:

356 
t
 = 
	`v__t_43
(
dbv
, 
dbp
, 
dbsiz
);

358 
DB_LOGVERSION_42
:

359 
t
 = 
	`v__t_42
(
dbv
, 
dbp
, 
dbsiz
);

362 
	`__db_rx
(
dbv
, "Unknowvsi %lu", (
u_lg
)
vsi
);

363 
t
 = 
EINVAL
;

366  (
t
);

367 
	}
}

370 
	$v__t_42
(
dbv
, 
dbp
, 
dbsiz
)

371 
DB_ENV
 *
dbv
;

372 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

373 
size_t
 *
dbsiz
;

375 
t
;

377 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

378 
__db_lk_42_t
, 
DB___db_lk_42
)) != 0)

379 
r
;

380 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

381 
__db_pg_loc_42_t
, 
DB___db_pg_loc_42
)) != 0)

382 
r
;

383 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

384 
__db_pg__42_t
, 
DB___db_pg__42
)) != 0)

385 
r
;

386 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

387 
__db_pg_da_42_t
, 
DB___db_pg_da_42
)) != 0)

388 
r
;

389 #i
HAVE_HASH


390 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

391 
__ham_magroup_42_t
, 
DB___ham_magroup_42
)) != 0)

392 
r
;

393 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

394 
__ham_grouoc_42_t
, 
DB___ham_grouoc_42
)) != 0)

395 
r
;

397 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

398 
__txn_ckp_42_t
, 
DB___txn_ckp_42
)) != 0)

399 
r
;

400 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

401 
__txn_g_42_t
, 
DB___txn_g_42
)) != 0)

402 
r
;

403 
r
:

404  (
t
);

405 
	}
}

408 
	$v__t_43
(
dbv
, 
dbp
, 
dbsiz
)

409 
DB_ENV
 *
dbv
;

410 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

411 
size_t
 *
dbsiz
;

413 
t
;

415 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

416 
__bam_lk_43_t
, 
DB___bam_lk_43
)) != 0)

417 
r
;

421 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

422 
__txn_g_42_t
, 
DB___txn_g_42
)) != 0)

423 
r
;

424 
r
:

425  (
t
);

426 
	}
}

433 
	$v__t_45
(
dbv
, 
dbp
, 
dbsiz
)

434 
DB_ENV
 *
dbv
;

435 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

436 
size_t
 *
dbsiz
;

438 
t
;

440 i((
t
 = 
	`__bam__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

441 
r
;

442 i((
t
 = 
	`__d__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

443 
r
;

444 i((
t
 = 
	`__db__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

445 
r
;

446 i((
t
 = 
	`__dbg__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

447 
r
;

448 i((
t
 = 
	`__f__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

449 
r
;

450 #ifde
HAVE_HASH


451 i((
t
 = 
	`__ham__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

452 
r
;

454 #ifde
HAVE_QUEUE


455 i((
t
 = 
	`__qam__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

456 
r
;

458 i((
t
 = 
	`__txn__t
(
dbv
, 
dbp
, 
dbsiz
)) != 0)

459 
r
;

460 
r
:

461  (
t
);

462 
	}
}

465 
	$uge
()

467 
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

469  (
EXIT_FAILURE
);

470 
	}
}

473 
	$vsi_check
()

475 
v_maj
, 
v_m
, 
v_tch
;

478 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

479 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

480 
	`rtf
(
dr
,

482 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

483 
v_maj
, 
v_m
);

484  (
EXIT_FAILURE
);

487 
	}
}

491 
	$t_p_cd
(
dbv
, 
dbt
, 
lp
, 

)

492 
DB_ENV
 *
dbv
;

493 
DBT
 *
dbt
;

494 
DB_LSN
 *
lp
;

495 
db_cs
 

;

497 
ch
;

498 
u_t32_t
 
i
, 
y
;

500 
	`DB_ASSERT
(
dbv
, 

 =
DB_TXN_PRINT
);

502 
	`COMPQUIET
(
dbv
, 
NULL
);

503 
	`COMPQUIET
(

, 
DB_TXN_PRINT
);

509 
	`memy
(&
y
, 
dbt
->
da
, (rectype));

516 
	`tf
("[%lu][%lu]application specificecord:ec: %lu\n",

517 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
, (u_lg)
y
);

518 
	`tf
("\tdata: ");

519 
i
 = 0; i < 
dbt
->
size
; i++) {

520 
ch
 = ((
u_t8_t
 *)
dbt
->
da
)[
i
];

521 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

523 
	`tf
("\n\n");

526 
	}
}

529 
	$ݒ_p_db
(
dbv
, 
db
, 
db
)

530 
DB_ENV
 *
dbv
;

531 
DB
 **
db
;

532 
DBC
 **
db
;

534 
t
;

536 
DB
 *
dbp
;

537 *
db
 = 
NULL
;

538 *
db
 = 
NULL
;

540 i((
t
 = 
	`db_
(
db
, 
dbv
, 0)) != 0) {

541 
dbv
->
	`r
(dbv, 
t
, "db_create");

542  (
t
);

545 
dbp
 = *
db
;

546 i((
t
 =

547 
dbp
->
	`ݒ
(dbp, 
NULL
, 
REPDBNAME
, NULL, 
DB_BTREE
, 0, 0)) != 0) {

548 
dbv
->
	`r
(dbv, 
t
, "DB->open");

549 
r
;

552 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, 
db
, 0)) != 0) {

553 
dbv
->
	`r
(dbv, 
t
, "DB->cursor");

554 
r
;

559 
r
: i(*
db
 !
NULL
)

560 ()(*
db
)->
	`o
(*dbpp, 0);

561  (
t
);

562 
	}
}

569 
	$l_g
(
g
, 
lp
)

570 *
g
;

571 
DB_LSN
 *
lp
;

573 
u_lg
 
uv
;

574 *
p
;

579 i((
p
 = 
	`rchr
(
g
, '/')=
NULL
)

581 *
p
 = '\0';

583 i(
	`__db_gulg
(
NULL
, 
ogme
, 
g
, 0, 
UINT32_MAX
, &
uv
))

585 
lp
->
fe
 = 
uv
;

586 i(
	`__db_gulg
(
NULL
, 
ogme
, 
p
 + 1, 0, 
UINT32_MAX
, &
uv
))

588 
lp
->
offt
 = 
uv
;

590 
	}
}

	@../db_recover/db_recover.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
edback
 
__P
((
DB_ENV
 *, , ));

19 
ma
 
__P
((, *[]));

20 
ad_timeamp
 
__P
((*, 
time_t
 *));

21 
uge
 
__P
(());

22 
vsi_check
 
__P
(());

24 cڡ *
	gogme
;

25 
	gwle_eded
;

28 
	$ma
(
gc
, 
gv
)

29 
gc
;

30 *
gv
[];

32 
*
ݏrg
;

33 

td
;

34 
DB_ENV
 *
dbv
;

35 
time_t
 
timeamp
;

36 
u_t32_t
 
ags
;

37 
ch
, 
exv
, 
l_cov
, 
t
, 
_v
, 
t_edback
, 
vbo
;

38 *
home
, *
sswd
;

40 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

41 
ogme
 = 
gv
[0];

43 ++
ogme
;

45 i((
t
 = 
	`vsi_check
()) != 0)

46  (
t
);

48 
home
 = 
sswd
 = 
NULL
;

49 
timeamp
 = 0;

50 
exv
 = 
l_cov
 = 
_v
 = 
t_edback
 = 
vbo
 = 0;

51 (
ch
 = 
	`gt
(
gc
, 
gv
, "fh:P:t:Vv")!
EOF
)

52 
ch
) {

54 
l_cov
 = 1;

57 
_v
 = 1;

60 
t_edback
 = 1;

63 
home
 = 
ݏrg
;

66 
sswd
 = 
	`rdup
(
ݏrg
);

67 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

68 i(
sswd
 =
NULL
) {

69 
	`rtf
(
dr
, "%s: strdup: %s\n",

70 
ogme
, 
	`
(
o
));

71  (
EXIT_FAILURE
);

75 i((
t
 = 
	`ad_timeamp
(
ݏrg
, &
timeamp
)) != 0)

76  (
t
);

79 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

80  (
EXIT_SUCCESS
);

82 
vbo
 = 1;

86  (
	`uge
());

88 
gc
 -
td
;

89 
gv
 +
td
;

91 i(
gc
 != 0)

92  (
	`uge
());

95 
	`__db_ut_sig
();

101 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

102 
	`rtf
(
dr
,

103 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

104  (
EXIT_FAILURE
);

106 
dbv
->
	`t_rfe
(dbv, 
dr
);

107 
dbv
->
	`t_fx
(dbv, 
ogme
);

108 i(
t_edback
)

109 ()
dbv
->
	`t_edback
(dbv, 
edback
);

110 i(
vbo
)

111 ()
dbv
->
	`t_vbo
(dbv, 
DB_VERB_RECOVERY
, 1);

112 i(
timeamp
 &&

113 (
t
 = 
dbv
->
	`t_tx_timeamp
(dbv, &
timeamp
)) != 0) {

114 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->set_timestamp");

115 
shutdown
;

118 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

119 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

120 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

121 
shutdown
;

136 
ags
 = 0;

137 
	`LF_SET
(
DB_CREATE
 | 
DB_INIT_LOG
 |

138 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
 | 
DB_USE_ENVIRON
);

139 
	`LF_SET
(
l_cov
 ? 
DB_RECOVER_FATAL
 : 
DB_RECOVER
);

140 
	`LF_SET
(
_v
 ? 
DB_INIT_LOCK
 : 
DB_PRIVATE
);

141 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
ags
, 0)) != 0) {

142 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

143 
shutdown
;

147 
shutdown
: 
exv
 = 1;

151 i(
wle_eded
)

152 
	`tf
("\n");

155 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

156 
exv
 = 1;

157 
	`rtf
(
dr
,

158 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

160 i(
sswd
 !
NULL
)

161 
	`
(
sswd
);

164 
	`__db_ut_signd
();

166  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

167 
	}
}

174 
	$edback
(
dbv
, 
code
, 
r
)

175 
DB_ENV
 *
dbv
;

176 
code
;

177 
r
;

179 
	`COMPQUIET
(
dbv
, 
NULL
);

181 i(
code
 =
DB_RECOVER
) {

182 
	`tf
("\ecovy %d%% come", 
r
);

183 ()
	`fush
(
dout
);

184 
wle_eded
 = 1;

186 
	}
}

188 
	#ATOI2
(

(r)[0] - '0'* 10 + (r)[1] - '0'); (+2;

	)

222 
	$ad_timeamp
(
g
, 
tim
)

223 *
g
;

224 
time_t
 *
tim
;

226 
tm
 *
t
;

227 
time_t
 
now
;

228 
yrt
;

229 *
p
;

231 ()
	`time
(&
now
);

232 i((
t
 = 
	`loime
(&
now
)=
NULL
) {

233 
	`rtf
(
dr
,

234 "%s:oime: %s\n", 
ogme
, 
	`
(
o
));

235  (
EXIT_FAILURE
);

238 i((
p
 = 
	`rchr
(
g
, '.')=
NULL
)

239 
t
->
tm_c
 = 0;

241 i(
	`
(
p
 + 1) != 2)

242 

;

243 *
p
++ = '\0';

244 
t
->
tm_c
 = 
	`ATOI2
(
p
);

247 
yrt
 = 0;

248 
	`
(
g
)) {

250 
t
->
tm_yr
 = 
	`ATOI2
(
g
);

251 
t
->
tm_yr
 *= 100;

252 
yrt
 = 1;

255 i(
yrt
) {

256 
yrt
 = 
	`ATOI2
(
g
);

257 
t
->
tm_yr
 +
yrt
;

259 
yrt
 = 
	`ATOI2
(
g
);

260 i(
yrt
 < 69)

261 
t
->
tm_yr
 = 
yrt
 + 2000;

263 
t
->
tm_yr
 = 
yrt
 + 1900;

265 
t
->
tm_yr
 -= 1900;

268 
t
->
tm_m
 = 
	`ATOI2
(
g
);

269 --
t
->
tm_m
;

270 
t
->
tm_mday
 = 
	`ATOI2
(
g
);

271 
t
->
tm_hour
 = 
	`ATOI2
(
g
);

272 
t
->
tm_m
 = 
	`ATOI2
(
g
);

275 

;

278 
t
->
tm_isd
 = -1;

280 *
tim
 = 
	`mktime
(
t
);

281 i(*
tim
 == -1) {

282 

: 
	`rtf
(
dr
,

284 
ogme
);

285  (
EXIT_FAILURE
);

288 
	}
}

291 
	$uge
()

293 ()
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

295  (
EXIT_FAILURE
);

296 
	}
}

299 
	$vsi_check
()

301 
v_maj
, 
v_m
, 
v_tch
;

304 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

305 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

306 
	`rtf
(
dr
,

308 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

309 
v_maj
, 
v_m
);

310  (
EXIT_FAILURE
);

313 
	}
}

	@../db_stat/db_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 um { 
	mT_NOTSET
, 
	mT_DB
,

19 
	mT_ENV
, 
	mT_LOCK
, 
	mT_LOG
, 
	mT_MPOOL
, 
	mT_MUTEX
, 
	mT_REP
, 
	mT_TXN
 } 
	t_t
;

21 
db_
 
__P
((
DB_ENV
 *, *, 
_t
, 
u_t32_t
, *));

22 
ma
 
__P
((, *[]));

23 
uge
 
__P
(());

24 
vsi_check
 
__P
(());

26 cڡ *
	gogme
;

29 
	$ma
(
gc
, 
gv
)

30 
gc
;

31 *
gv
[];

33 
*
ݏrg
;

34 

td
;

35 
DB_ENV
 *
dbv
;

36 
DB
 *
dbp
;

37 
_t
 
y
;

38 
u_t32_t
 
che
, 
ags
;

39 
ch
, 
exv
;

40 
nag
, 
ive
, 
size
, 
t
;

41 *
db
, *
home
, *
p
, *
sswd
, *
subdb
;

43 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

44 
ogme
 = 
gv
[0];

46 ++
ogme
;

48 i((
t
 = 
	`vsi_check
()) != 0)

49  (
t
);

51 
dbv
 = 
NULL
;

52 
dbp
 = 
NULL
;

53 
y
 = 
T_NOTSET
;

54 
che
 = 
MEGABYTE
;

55 
exv
 = 
ags
 = 
nag
 = 
ive
 = 0;

56 
db
 = 
home
 = 
sswd
 = 
subdb
 = 
NULL
;

58 (
ch
 = 
	`gt
(
gc
,

59 
gv
, "C:cd:Eefgh:L:lM:mNP:R:rs:tVxX:Z")!
EOF
)

60 
ch
) {

62 i(
y
 !
T_NOTSET
 &&ty !
T_LOCK
)

63 
gcombo
;

64 
y
 = 
T_LOCK
;

65 i(
ch
 != 'c')

66 
p
 = 
ݏrg
; *p; ++p)

67 *
p
) {

69 
	`LF_SET
(
DB_STAT_ALL
);

72 
	`LF_SET
(
DB_STAT_LOCK_CONF
);

75 
	`LF_SET
(
DB_STAT_LOCK_LOCKERS
);

80 
	`LF_SET
(
DB_STAT_LOCK_OBJECTS
);

83 
	`LF_SET
(
DB_STAT_LOCK_PARAMS
);

86  (
	`uge
());

90 i(
y
 !
T_NOTSET
 &&ty !
T_DB
)

91 
gcombo
;

92 
y
 = 
T_DB
;

93 
db
 = 
ݏrg
;

96 i(
y
 !
T_NOTSET
 &&ty !
T_ENV
)

97 
gcombo
;

98 
y
 = 
T_ENV
;

99 
	`LF_SET
(
DB_STAT_SUBSYSTEM
);

100 i(
ch
 == 'E')

101 
	`LF_SET
(
DB_STAT_ALL
);

104 i(
y
 !
T_NOTSET
 &&ty !
T_DB
)

105 
gcombo
;

106 
y
 = 
T_DB
;

107 
	`LF_SET
(
DB_FAST_STAT
);

110 
home
 = 
ݏrg
;

113 i(
y
 !
T_NOTSET
 &&ty !
T_LOG
)

114 
gcombo
;

115 
y
 = 
T_LOG
;

116 i(
ch
 != 'l')

117 
p
 = 
ݏrg
; *p; ++p)

118 *
p
) {

120 
	`LF_SET
(
DB_STAT_ALL
);

123  (
	`uge
());

127 i(
y
 !
T_NOTSET
 &&ty !
T_MPOOL
)

128 
gcombo
;

129 
y
 = 
T_MPOOL
;

130 i(
ch
 != 'm')

131 
p
 = 
ݏrg
; *p; ++p)

132 *
p
) {

134 
	`LF_SET
(
DB_STAT_ALL
);

137 
	`LF_SET
(
DB_STAT_MEMP_HASH
);

142  (
	`uge
());

146 
nag
 = 1;

149 
sswd
 = 
	`rdup
(
ݏrg
);

150 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

151 i(
sswd
 =
NULL
) {

152 
	`rtf
(
dr
, "%s: strdup: %s\n",

153 
ogme
, 
	`
(
o
));

154  (
EXIT_FAILURE
);

158 i(
y
 !
T_NOTSET
 &&ty !
T_REP
)

159 
gcombo
;

160 
y
 = 
T_REP
;

161 i(
ch
 != 'r')

162 
p
 = 
ݏrg
; *p; ++p)

163 *
p
) {

165 
	`LF_SET
(
DB_STAT_ALL
);

168  (
	`uge
());

172 i(
y
 !
T_NOTSET
 &&ty !
T_DB
)

173 
gcombo
;

174 
y
 = 
T_DB
;

175 
subdb
 = 
ݏrg
;

178 i(
y
 !
T_NOTSET
) {

179 
gcombo
: 
	`rtf
(
dr
,

181 
ogme
);

182  (
	`uge
());

184 
y
 = 
T_TXN
;

187 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

188  (
EXIT_SUCCESS
);

190 i(
y
 !
T_NOTSET
 &&ty !
T_MUTEX
)

191 
gcombo
;

192 
y
 = 
T_MUTEX
;

193 i(
ch
 != 'x')

194 
p
 = 
ݏrg
; *p; ++p)

195 *
p
) {

197 
	`LF_SET
(
DB_STAT_ALL
);

200  (
	`uge
());

204 
	`LF_SET
(
DB_STAT_CLEAR
);

208  (
	`uge
());

210 
gc
 -
td
;

211 
gv
 +
td
;

213 
y
) {

214 
T_DB
:

215 i(
db
 =
NULL
)

216  (
	`uge
());

218 
T_ENV
:

219 
T_LOCK
:

220 
T_LOG
:

221 
T_MPOOL
:

222 
T_MUTEX
:

223 
T_REP
:

224 
T_TXN
:

226 
T_NOTSET
:

227  (
	`uge
());

231 
	`__db_ut_sig
();

237 
y
: i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

238 
	`rtf
(
dr
,

239 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

240 
r
;

243 
dbv
->
	`t_rfe
(dbv, 
dr
);

244 
dbv
->
	`t_fx
(dbv, 
ogme
);

246 i(
nag
) {

247 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

248 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

249 
r
;

251 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

252 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

253 
r
;

257 i(
sswd
 !
NULL
 &&

258 (
t
 = 
dbv
->
	`t_y
(dbv, 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

259 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

260 
r
;

264 i(
	`db_
(
dbv
, 
home
, 
y
, 
che
, &
ive
) != 0)

265 
r
;

267 
y
) {

268 
T_DB
:

270 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

271 
dbv
->
	`r
(dbv, 
t
, "db_create");

272 
r
;

284 
dbv
->
	`t_rfe
(dbv, 
NULL
);

285 
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, 
db
, 
subdb
, 
DB_UNKNOWN
, 0, 0);

286 
dbv
->
	`t_rfe
(dbv, 
dr
);

287 i(
t
 !0 && (
dbp
->
	`ݒ
(

288 
dbp
, 
NULL
, 
db
, 
subdb
, 
DB_UNKNOWN
, 
DB_RDONLY
, 0)) != 0) {

289 
dbv
->
	`r
(dbv, 
t
, "DB->ݒ: %s", 
db
);

290 
r
;

294 i(
ive
) {

295 i((
t
 = 
	`__db_ut_che
(
dbp
, &
che
, &
size
)) != 0)

296 
r
;

297 i(
size
) {

298 ()
dbp
->
	`o
(dbp, 
DB_NOSYNC
);

299 
dbp
 = 
NULL
;

301 ()
dbv
->
	`o
(dbenv, 0);

302 
dbv
 = 
NULL
;

303 
y
;

307 i(
dbp
->
	`_t
(dbp, 
ags
))

308 
r
;

310 
T_ENV
:

311 i(
dbv
->
	`_t
(dbv, 
ags
))

312 
r
;

314 
T_LOCK
:

315 i(
dbv
->
	`lock__t
(dbv, 
ags
))

316 
r
;

318 
T_LOG
:

319 i(
dbv
->
	`log__t
(dbv, 
ags
))

320 
r
;

322 
T_MPOOL
:

323 i(
dbv
->
	`memp__t
(dbv, 
ags
))

324 
r
;

326 
T_MUTEX
:

327 i(
dbv
->
	`mux__t
(dbv, 
ags
))

328 
r
;

330 
T_REP
:

331 #ifde
HAVE_REPLICATION_THREADS


332 i(
dbv
->
	`pmgr__t
(dbv, 
ags
))

333 
r
;

335 i(
dbv
->
	`p__t
(dbv, 
ags
))

336 
r
;

338 
T_TXN
:

339 i(
dbv
->
	`txn__t
(dbv, 
ags
))

340 
r
;

342 
T_NOTSET
:

343 
dbv
->
	`rx
(dbenv, "Unknown statistics flag");

344 
r
;

348 
r
: 
exv
 = 1;

350 i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 
DB_NOSYNC
)) != 0) {

351 
exv
 = 1;

352 
dbv
->
	`r
(dbv, 
t
, "close");

354 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

355 
exv
 = 1;

356 
	`rtf
(
dr
,

357 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

360 i(
sswd
 !
NULL
)

361 
	`
(
sswd
);

364 
	`__db_ut_signd
();

366  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

367 
	}
}

374 
	$db_
(
dbv
, 
home
, 
y
, 
che
, 
is_ive
)

375 
DB_ENV
 *
dbv
;

376 *
home
;

377 
_t
 
y
;

378 
u_t32_t
 
che
;

379 *
is_ive
;

381 
u_t32_t
 
oags
;

382 
t
;

394 *
is_ive
 = 0;

395 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) == 0)

397 i(
t
 =
DB_VERSION_MISMATCH
)

398 
r
;

399 i(
y
 !
T_DB
 &&ty !
T_LOG
) {

400 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open%s%s",

401 
home
 =
NULL
 ? "" : ": ", home == NULL ? "" : home);

415 i((
t
 = 
dbv
->
	`t_chesize
(dbv, 0, 
che
, 1)) != 0) {

416 
dbv
->
	`r
(dbv, 
t
, "set_cachesize");

419 *
is_ive
 = 1;

420 
oags
 = 
DB_CREATE
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
;

421 i(
y
 =
T_DB
)

422 
oags
 |
DB_INIT_MPOOL
;

423 i(
y
 =
T_LOG
)

424 
oags
 |
DB_INIT_LOG
;

425 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
oags
, 0)) == 0)

429 
r
: 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

431 
	}
}

434 
	$uge
()

436 
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

438 
	`rtf
(
dr
, "uge: %%s\n\t%s\n", 
ogme
,

441  (
EXIT_FAILURE
);

442 
	}
}

445 
	$vsi_check
()

447 
v_maj
, 
v_m
, 
v_tch
;

450 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

451 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

452 
	`rtf
(
dr
,

454 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

455 
v_maj
, 
v_m
);

456  (
EXIT_FAILURE
);

459 
	}
}

	@../db_upgrade/db_upgrade.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
ma
 
__P
((, *[]));

19 
uge
 
__P
(());

20 
vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$ma
(
gc
, 
gv
)

26 
gc
;

27 *
gv
[];

29 
*
ݏrg
;

30 

td
;

31 
DB
 *
dbp
;

32 
DB_ENV
 *
dbv
;

33 
u_t32_t
 
ags
;

34 
ch
, 
exv
, 
nag
, 
t
, 
t_t
, 
vbo
;

35 *
home
, *
sswd
;

37 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

38 
ogme
 = 
gv
[0];

40 ++
ogme
;

42 i((
t
 = 
	`vsi_check
()) != 0)

43  (
t
);

45 
dbv
 = 
NULL
;

46 
ags
 = 
nag
 = 
vbo
 = 0;

47 
exv
 = 0;

48 
home
 = 
sswd
 = 
NULL
;

49 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:NP:sVv")!
EOF
)

50 
ch
) {

52 
home
 = 
ݏrg
;

55 
nag
 = 1;

58 
sswd
 = 
	`rdup
(
ݏrg
);

59 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

60 i(
sswd
 =
NULL
) {

61 
	`rtf
(
dr
, "%s: strdup: %s\n",

62 
ogme
, 
	`
(
o
));

63  (
EXIT_FAILURE
);

67 
	`LF_SET
(
DB_DUPSORT
);

70 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

71  (
EXIT_SUCCESS
);

73 
vbo
 = 1;

77  (
	`uge
());

79 
gc
 -
td
;

80 
gv
 +
td
;

82 i(
gc
 <= 0)

83  (
	`uge
());

86 
	`__db_ut_sig
();

92 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

93 
	`rtf
(
dr
, "%s: db_env_create: %s\n",

94 
ogme
, 
	`db_
(
t
));

95 
shutdown
;

98 
dbv
->
	`t_rfe
(dbv, 
dr
);

99 
dbv
->
	`t_fx
(dbv, 
ogme
);

101 i(
nag
) {

102 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

103 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

104 
shutdown
;

106 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

107 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

108 
shutdown
;

112 i(
sswd
 !
NULL
 && (
t
 = 
dbv
->
	`t_y
(dbenv,

113 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

114 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

115 
shutdown
;

122 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_USE_ENVIRON
, 0)) != 0 &&

123 (
t
 =
DB_VERSION_MISMATCH
 ||

124 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

125 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
,

127 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

128 
shutdown
;

131 ; !
	`__db_ut_ued
(&& 
gv
[0] !
NULL
; ++argv) {

132 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

133 
	`rtf
(
dr
,

134 "%s: db_: %s\n", 
ogme
, 
	`db_
(
t
));

135 
shutdown
;

137 
dbp
->
	`t_rfe
(dbp, 
dr
);

138 
dbp
->
	`t_fx
(dbp, 
ogme
);

139 i((
t
 = 
dbp
->
	`upgde
(dbp, 
gv
[0], 
ags
)) != 0)

140 
dbp
->
	`r
(dbp, 
t
, "DB->upgde: %s", 
gv
[0]);

141 i((
t_t
 = 
dbp
->
	`o
(dbp, 0)!0 && 
t
 == 0) {

142 
dbv
->
	`r
(dbv, 
t
, "DB->o: %s", 
gv
[0]);

143 
t
 = 
t_t
;

145 i(
t
 != 0)

146 
shutdown
;

151 i(
vbo
)

152 
	`tf
("%s: %s upgraded successfully\n",

153 
ogme
, 
gv
[0]);

157 
shutdown
: 
exv
 = 1;

159 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

160 
exv
 = 1;

161 
	`rtf
(
dr
,

162 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

165 i(
sswd
 !
NULL
)

166 
	`
(
sswd
);

169 
	`__db_ut_signd
();

171  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

172 
	}
}

175 
	$uge
()

177 
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

179  (
EXIT_FAILURE
);

180 
	}
}

183 
	$vsi_check
()

185 
v_maj
, 
v_m
, 
v_tch
;

188 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

189 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

190 
	`rtf
(
dr
,

192 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

193 
v_maj
, 
v_m
);

194  (
EXIT_FAILURE
);

197 
	}
}

	@../db_verify/db_verify.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ide
lt


14 cڡ 
	gcyright
[] =

18 
ma
 
__P
((, *[]));

19 
uge
 
__P
(());

20 
vsi_check
 
__P
(());

22 cڡ *
	gogme
;

25 
	$ma
(
gc
, 
gv
)

26 
gc
;

27 *
gv
[];

29 
*
ݏrg
;

30 

td
;

31 
DB
 *
dbp
, *
dbp1
;

32 
DB_ENV
 *
dbv
;

33 
u_t32_t
 
ags
, 
che
;

34 
ch
, 
exv
, 
nag
, 
ive
;

35 
qut
, 
size
, 
t
;

36 *
home
, *
sswd
;

38 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

39 
ogme
 = 
gv
[0];

41 ++
ogme
;

43 i((
t
 = 
	`vsi_check
()) != 0)

44  (
t
);

46 
dbv
 = 
NULL
;

47 
dbp
 = 
NULL
;

48 
che
 = 
MEGABYTE
;

49 
exv
 = 
nag
 = 
qut
 = 0;

50 
ags
 = 0;

51 
home
 = 
sswd
 = 
NULL
;

52 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:NoP:quV")!
EOF
)

53 
ch
) {

55 
home
 = 
ݏrg
;

58 
nag
 = 1;

61 
sswd
 = 
	`rdup
(
ݏrg
);

62 
	`memt
(
ݏrg
, 0, 
	`
(optarg));

63 i(
sswd
 =
NULL
) {

64 
	`rtf
(
dr
, "%s: strdup: %s\n",

65 
ogme
, 
	`
(
o
));

66  (
EXIT_FAILURE
);

70 
	`LF_SET
(
DB_NOORDERCHK
);

73 
qut
 = 1;

76 
	`LF_SET
(
DB_UNREF
);

79 
	`tf
("%s\n", 
	`db_vsi
(
NULL
, NULL, NULL));

80  (
EXIT_SUCCESS
);

83  (
	`uge
());

85 
gc
 -
td
;

86 
gv
 +
td
;

88 i(
gc
 <= 0)

89  (
	`uge
());

92 
	`__db_ut_sig
();

98 
y
: i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

99 
	`rtf
(
dr
,

100 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

101 
shutdown
;

104 i(!
qut
) {

105 
dbv
->
	`t_rfe
(dbv, 
dr
);

106 
dbv
->
	`t_fx
(dbv, 
ogme
);

109 i(
nag
) {

110 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOLOCKING
, 1)) != 0) {

111 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOLOCKING");

112 
shutdown
;

114 i((
t
 = 
dbv
->
	`t_ags
(dbv, 
DB_NOPANIC
, 1)) != 0) {

115 
dbv
->
	`r
(dbv, 
t
, "set_flags: DB_NOPANIC");

116 
shutdown
;

120 i(
sswd
 !
NULL
 &&

121 (
t
 = 
dbv
->
	`t_y
(dbv, 
sswd
, 
DB_ENCRYPT_AES
)) != 0) {

122 
dbv
->
	`r
(dbv, 
t
, "set_passwd");

123 
shutdown
;

130 
ive
 = 0;

131 i((
t
 =

132 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_INIT_MPOOL
 | 
DB_USE_ENVIRON
, 0)) != 0) {

133 i(
t
 !
DB_VERSION_MISMATCH
) {

134 i((
t
 =

135 
dbv
->
	`t_chesize
(dbv, 0, 
che
, 1)) != 0) {

136 
dbv
->
	`r
(dbv, 
t
, "set_cachesize");

137 
shutdown
;

139 
ive
 = 1;

140 
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 |

141 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0);

143 i(
t
 != 0) {

144 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

145 
shutdown
;

154 ; !
	`__db_ut_ued
(&& 
gv
[0] !
NULL
; ++argv) {

155 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

156 
dbv
->
	`r
(dbv, 
t
, "%s: db_", 
ogme
);

157 
shutdown
;

160 i(
	`TXN_ON
(
dbv
) &&

161 (
t
 = 
dbp
->
	`t_ags
(dbp, 
DB_TXN_NOT_DURABLE
)) != 0) {

162 
dbv
->
	`r
(

163 
dbv
, 
t
, "%s: db_t_ags", 
ogme
);

164 
shutdown
;

175 i(
ive
) {

176 i((
t
 = 
	`db_
(&
dbp1
, 
dbv
, 0)) != 0) {

177 
dbv
->
	`r
(

178 
dbv
, 
t
, "%s: db_", 
ogme
);

179 
shutdown
;

182 i(
	`TXN_ON
(
dbv
&& (
t
 =

183 
dbp1
->
	`t_ags
(dbp1, 
DB_TXN_NOT_DURABLE
)) != 0) {

184 
dbv
->
	`r
(

185 
dbv
, 
t
, "%s: db_t_ags", 
ogme
);

186 
shutdown
;

189 
t
 = 
dbp1
->
	`ݒ
(dbp1,

190 
NULL
, 
gv
[0], NULL, 
DB_UNKNOWN
, 
DB_RDONLY
, 0);

200 i(
t
 == 0) {

201 i(
	`__db_ut_che
(

202 
dbp1
, &
che
, &
size
) == 0 &&esize) {

203 ()
dbp1
->
	`o
(dbp1, 0);

204 ()
dbp
->
	`o
(dbp, 0);

205 
dbp
 = 
NULL
;

207 ()
dbv
->
	`o
(dbenv, 0);

208 
dbv
 = 
NULL
;

209 
y
;

212 ()
dbp1
->
	`o
(dbp1, 0);

216 
t
 = 
dbp
->
	`vify
(dbp, 
gv
[0], 
NULL
, NULL, 
ags
);

217 
dbp
 = 
NULL
;

218 i(
t
 != 0)

219 
shutdown
;

223 
shutdown
: 
exv
 = 1;

226 i(
dbp
 !
NULL
 && (
t
 = dbp->
	`o
(dbp, 0)) != 0) {

227 
exv
 = 1;

228 
dbv
->
	`r
(dbv, 
t
, "close");

230 i(
dbv
 !
NULL
 && (
t
 = dbv->
	`o
(dbenv, 0)) != 0) {

231 
exv
 = 1;

232 
	`rtf
(
dr
,

233 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

236 i(
sswd
 !
NULL
)

237 
	`
(
sswd
);

240 
	`__db_ut_signd
();

242  (
exv
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

243 
	}
}

246 
	$uge
()

248 
	`rtf
(
dr
, "uge: %%s\n", 
ogme
,

250  (
EXIT_FAILURE
);

251 
	}
}

254 
	$vsi_check
()

256 
v_maj
, 
v_m
, 
v_tch
;

259 ()
	`db_vsi
(&
v_maj
, &
v_m
, &
v_tch
);

260 i(
v_maj
 !
DB_VERSION_MAJOR
 || 
v_m
 !
DB_VERSION_MINOR
) {

261 
	`rtf
(
dr
,

263 
ogme
, 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

264 
v_maj
, 
v_m
);

265  (
EXIT_FAILURE
);

268 
	}
}

	@../dbinc/btree.h

43 #idef 
_DB_BTREE_H_


44 
	#_DB_BTREE_H_


	)

46 #i
defed
(
__lulus
)

51 
__b
; __b 
	tBTREE
;

52 
__curs
; __curs 
	tBTREE_CURSOR
;

53 
__g
; __g 
	tEPG
;

54 
__o
; __
	tRECNO
;

56 
	#DEFMINKEYPAGE
 (2)

	)

62 
	#INVALID_ORDER
 0

	)

64 
	#ISINTERNAL
(
p
(
	`TYPE
=
P_IBTREE
 || TYPE=
P_IRECNO
)

	)

65 
	#ISLEAF
(
p
(
	`TYPE
=
P_LBTREE
 || \

66 
	`TYPE
(
p
=
P_LRECNO
 || TYPE=
P_LDUP
)

	)

69 
	#CAD_UPDATEROOT
 0x01

	)

72 
	#SPL_NRECS
 0x01

	)

75 
	#BI_DELETED
 0x01

	)

78 
	#STK_CLRDBC
 0x01

	)

79 
	#STK_NOLOCK
 0x02

	)

80 
	#STK_PGONLY
 0x04

	)

84 
CA_DELETE
 = 0,

85 
CA_IAFTER
 = 1,

86 
CA_IBEFORE
 = 2,

87 
CA_ICURRENT
 = 3

88 } 
	t_o_g
;

104 
	#SR_READ
 0x00001

	)

105 
	#SR_WRITE
 0x00002

	)

107 
	#SR_APPEND
 0x00040

	)

108 
	#SR_DELNO
 0x00080

	)

109 
	#SR_DUPFIRST
 0x00100

	)

110 
	#SR_DUPLAST
 0x00200

	)

111 
	#SR_EXACT
 0x00400

	)

112 
	#SR_PARENT
 0x00800

	)

113 
	#SR_STACK
 0x01000

	)

114 
	#SR_PAST_EOF
 0x02000

	)

119 
	#SR_STK_ONLY
 0x04000

	)

120 
	#SR_MAX
 0x08000

	)

121 
	#SR_MIN
 0x10000

	)

122 
	#SR_NEXT
 0x20000

	)

123 
	#SR_DEL
 0x40000

	)

124 
	#SR_START
 0x80000

	)

126 
	#SR_DELETE
 \

127 (
SR_WRITE
 | 
SR_DUPFIRST
 | 
SR_DELNO
 | 
SR_EXACT
 | 
SR_STACK
)

	)

128 
	#SR_FIND
 (
SR_READ
 | 
SR_DUPFIRST
 | 
SR_DELNO
)

	)

129 
	#SR_FIND_WR
 (
SR_WRITE
 | 
SR_DUPFIRST
 | 
SR_DELNO
)

	)

130 
	#SR_INSERT
 (
SR_WRITE
 | 
SR_DUPLAST
 | 
SR_PAST_EOF
 | 
SR_STACK
)

	)

131 
	#SR_KEYFIRST
 (
SR_WRITE
 | 
SR_DUPFIRST
 | 
SR_PAST_EOF
 | 
SR_STACK
)

	)

132 
	#SR_KEYLAST
 (
SR_WRITE
 | 
SR_DUPLAST
 | 
SR_PAST_EOF
 | 
SR_STACK
)

	)

133 
	#SR_WRPAIR
 (
SR_WRITE
 | 
SR_DUPLAST
 | 
SR_PAST_EOF
 | 
SR_PARENT
)

	)

140 
	s__g
 {

141 
PAGE
 *
ge
;

142 
db_dx_t
 
dx
;

143 
db_dx_t
 
s
;

144 
DB_LOCK
 
lock
;

145 
db_lockmode_t
 
lock_mode
;

156 
	#BT_STK_CLR
(
c
) do { \

157 (
c
)->
c
 = (c)->

; \

158 (
c
)->
c
->
ge
 = 
NULL
; \

159 
	`LOCK_INIT
((
c
)->
c
->
lock
); \

160 } 0)

	)

162 
	#BT_STK_ENTER
(
dbv
, 
c
, 
g
, 
ge_dx
, 
l
, 
mode
, 
t
) do { \

163 i((
t
 = ((
c
)->
c
 =(c)->
e
 ? \

164 
	`__bam_kgrow
(
dbv
, 
c
) : 0)) == 0) { \

165 (
c
)->
c
->
ge
 = 
g
; \

166 (
c
)->
c
->
dx
 = (
ge_dx
); \

167 (
c
)->
c
->
s
 = 
	`NUM_ENT
(
g
); \

168 (
c
)->
c
->
lock
 = 
l
; \

169 (
c
)->
c
->
lock_mode
 = 
mode
; \

171 } 0)

	)

173 
	#BT_STK_PUSH
(
dbv
, 
c
, 
g
, 
ge_dx
, 
lock
, 
mode
, 
t
) do { \

174 
	`BT_STK_ENTER
(
dbv
, 
c
, 
g
, 
ge_dx
, 
lock
, 
mode
, 
t
); \

175 ++(
c
)->
c
; \

176 } 0)

	)

178 
	#BT_STK_NUM
(
dbv
, 
c
, 
g
, 
ge_dx
, 
t
) do { \

179 i((
t
 = ((
c
)->
c
 == \

180 (
c
)->
e
 ? 
	`__bam_kgrow
(
dbv
, c) : 0)) == 0) { \

181 (
c
)->
c
->
ge
 = 
NULL
; \

182 (
c
)->
c
->
dx
 = (
ge_dx
); \

183 (
c
)->
c
->
s
 = 
	`NUM_ENT
(
g
); \

184 
	`LOCK_INIT
((
c
)->
c
->
lock
); \

185 (
c
)->
c
->
lock_mode
 = 
DB_LOCK_NG
; \

187 } 0)

	)

189 
	#BT_STK_NUMPUSH
(
dbv
, 
c
, 
g
, 
ge_dx
, 
t
) do { \

190 
	`BT_STK_NUM
(
dbv
, 

, 
g
, 
ge_dx
, 
t
); \

191 ++(
c
)->
c
; \

192 } 0)

	)

194 
	#BT_STK_POP
(
c
) \

195 ((
c
)->
c
 =(c)->

 ? 
NULL
 : --(c)->c)

	)

198 
	s__curs
 {

200 
__DBC_INTERNAL


203 
EPG
 *

;

204 
EPG
 *
c
;

205 
EPG
 *
e
;

206 
EPG
 
ack
[5];

208 
db_dx_t
 
ovsize
;

210 
db_o_t
 
o
;

211 
u_t32_t
 
d
;

225 
	#C_DELETED
 0x0001

	)

231 
	#C_RECNUM
 0x0002

	)

238 
	#C_RENUMBER
 0x0004

	)

239 
u_t32_t
 
ags
;

248 
	#B_MINKEY_TO_OVFLSIZE
(
dbp
, 
mkey
, 
pgsize
) \

249 ((
u_t16_t
)(((
pgsize
- 
	`P_OVERHEAD
(
dbp
)/ ((
mkey
* 
P_INDX
) -\

250 (
	`BKEYDATA_PSIZE
(0+ 
	`DB_ALIGN
(1, (
t32_t
)))))

	)

256 
	#B_MAX
(
a
,
b
((> (b)? (a: (b))

	)

257 
	#B_MAXSIZEONPAGE
(
ovsize
) \

258 (
	`B_MAX
(
BOVERFLOW_PSIZE
, 
	`BKEYDATA_PSIZE
(
ovsize
)))

	)

263 
	s__b
 {

269 
db_pgno_t
 
bt_ma
;

270 
db_pgno_t
 
bt_ro
;

272 
u_t32_t
 
bt_mkey
;

275 (*
bt_com

__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

277 
size_t
 (*
bt_efix

__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

280 
_d
;

281 
_dim
;

282 
u_t32_t
 
_n
;

283 *
_sour
;

292 
db_pgno_t
 
bt_gno
;

293 
DB_LSN
 
bt_΢
;

302 
_modifd
;

310 
FILE
 *
_
;

311 
_eof
;

312 
db_o_t
 
_ϡ
;

322 
DB_CA_DI
 = 1,

323 
DB_CA_DUP
 = 2,

324 
DB_CA_RSPLIT
 = 3,

325 
DB_CA_SPLIT
 = 4

326 } 
	tdb__mode
;

331 
	#BPI_SPACEONLY
 0x01

	)

332 
	#BPI_NORECNUM
 0x02

	)

334 #i
defed
(
__lulus
)

338 
	~"dbc_auto/b_auto.h
"

339 
	~"dbc_auto/b_ext.h
"

340 
	~"dbc/db_am.h
"

	@../dbinc/clock.h

40 #ide
_DB_CLOCK_H_


41 
	#_DB_CLOCK_H_


	)

43 #i
defed
(
__lulus
)

56 
time_t
 
tv_c
;

57 
tv_nc
;

58 } 
	tdb_timeec
;

61 #unde
timeecr


62 
	#timeecr
(
tvp
(vp)->
tv_c
 = (tvp)->
tv_nc
 = 0)

	)

63 #unde
timeecist


64 
	#timeecist
(
tvp
(vp)->
tv_c
 || (tvp)->
tv_nc
)

	)

65 #unde
timeeccmp


66 
	#timeeccmp
(
tvp
, 
uvp
, 
cmp
) \

67 (((
tvp
)->
tv_c
 =(
uvp
)->tv_sec) ? \

68 ((
tvp
)->
tv_nc
 
	`cmp
 (
uvp
)->tv_nsec) : \

69 ((
tvp
)->
tv_c
 
	`cmp
 (
uvp
)->tv_c))

	)

70 #unde
timeedd


71 
	#timeedd
(
vvp
, 
uvp
) \

73 (
vvp
)->
tv_c
 +(
uvp
)->tv_sec; \

74 (
vvp
)->
tv_nc
 +(
uvp
)->tv_nsec; \

75 i((
vvp
)->
tv_nc
 >= 1000000000) { \

76 (
vvp
)->
tv_c
++; \

77 (
vvp
)->
tv_nc
 -= 1000000000; \

79 } 0)

	)

80 #unde
timeecsub


81 
	#timeecsub
(
vvp
, 
uvp
) \

83 (
vvp
)->
tv_c
 -(
uvp
)->tv_sec; \

84 (
vvp
)->
tv_nc
 -(
uvp
)->tv_nsec; \

85 i((
vvp
)->
tv_nc
 < 0) { \

86 (
vvp
)->
tv_c
--; \

87 (
vvp
)->
tv_nc
 += 1000000000; \

89 } 0)

	)

91 
	#DB_TIMEOUT_TO_TIMESPEC
(
t
, 
vvp
) \

93 (
vvp
)->
tv_c
 = (
time_t
)((
t
) / 1000000); \

94 (
vvp
)->
tv_nc
 = ()(((
t
) % 1000000) * 1000); \

95 } 0)

	)

97 
	#DB_TIMESPEC_TO_TIMEOUT
(
t
, 
vvp
) \

99 
t
 = (
u_lg
)((
vvp
)->
tv_c
 * 1000000); \

100 
t
 +(
u_lg
)((
vvp
)->
tv_nc
 / 1000); \

102 
t
++; \

103 } 0)

	)

105 #i
defed
(
__lulus
)

	@../dbinc/crypto.h

9 #idef 
_DB_CRYPTO_H_


10 
	#_DB_CRYPTO_H_


	)

12 #i
defed
(
__lulus
)

38 
	s__db_ch
 {

39 
u_t
 (*
adj_size

__P
((
size_t
));

40 (*
o

__P
((
DB_ENV
 *, *));

41 (*
dey

__P
((
DB_ENV
 *, *, *, 
u_t8_t
 *, 
size_t
));

42 (*
y

__P
((
DB_ENV
 *, *, *, 
u_t8_t
 *, 
size_t
));

43 (*


__P
((
DB_ENV
 *, 
DB_CIPHER
 *));

45 
u_t8_t
 
mac_key
[
DB_MAC_KEY
];

46 *
da
;

48 
	#CIPHER_AES
 1

	)

49 
u_t8_t
 
g
;

50 
u_t8_t
 
e
[3];

52 
	#CIPHER_ANY
 0x00000001

	)

53 
u_t32_t
 
ags
;

56 #ifde
HAVE_CRYPTO


58 
	~"yo/rijndl/rijndl-i-f.h
"

64 
	s__ch
 {

65 
roff_t
 
sswd
;

66 
size_t
 
sswd_n
;

67 
u_t32_t
 
ags
;

68 } 
	tCIPHER
;

70 
	#DB_AES_KEYLEN
 128

	)

71 
	#DB_AES_CHUNK
 16

	)

73 
	s__s_ch
 {

74 
keyIn
 
dey_ki
;

75 
keyIn
 
y_ki
;

76 
u_t32_t
 
ags
;

77 } 
	tAES_CIPHER
;

79 
	~"dbc_auto/yo_ext.h
"

82 #i
defed
(
__lulus
)

	@../dbinc/cxx_int.h

9 #ide
_DB_CXX_INT_H_


10 
	#_DB_CXX_INT_H_


	)

28 
	#WRAPPED_CLASS
(
_WRAPPER_CLASS
, 
_IMP_CLASS
, 
_WRAPPED_TYPE
) \

29 as
	c_IMP_CLASS
 {}; \

31 
le
 
_WRAPPED_TYPE
 *
	`unwp
(
_WRAPPER_CLASS
 *
v
) \

33 i(!
v
)  (0); \

34  (
v
->
g_
##
	`_WRAPPED_TYPE
()); \

37 
le
 cڡ 
_WRAPPED_TYPE
 *
	`unwpCڡ
(cڡ 
_WRAPPER_CLASS
 *
v
) \

39 i(!
v
)  (0); \

40  (
v
->
g_cڡ_
##
	`_WRAPPED_TYPE
()); \

41 }

	)

43 
	$WRAPPED_CLASS
(
Db
, 
DbImp
, 
DB
)

44 
	$WRAPPED_CLASS
(
DbEnv
, 
DbEnvImp
, 
DB_ENV
)

45 
	$WRAPPED_CLASS
(
DbMpoFe
, 
DbMpoFeImp
, 
DB_MPOOLFILE
)

46 
	$WRAPPED_CLASS
(
DbSequ
, 
DbSequImp
, 
DB_SEQUENCE
)

47 
	$WRAPPED_CLASS
(
DbTxn
, 
DbTxnImp
, 
DB_TXN
)

54 
	#ON_ERROR_THROW
 1

	)

55 
	#ON_ERROR_RETURN
 0

	)

56 
	#ON_ERROR_UNKNOWN
 (-1)

	)

63 
	#DB_ERROR
(
v
, 
Δ
, 
ecode
, 
picy
) \

64 
DbEnv
::
	`ruime_r
(
v
, 
Δ
, 
ecode
, 
picy
)

	)

66 
	#DB_ERROR_DBT
(
v
, 
Δ
, 
dbt
, 
picy
) \

67 
DbEnv
::
	`ruime_r_dbt
(
v
, 
Δ
, 
dbt
, 
picy
)

	)

69 
	#DB_OVERFLOWED_DBT
(
dbt
) \

70 (
	`F_ISSET
(
dbt
, 
DB_DBT_USERMEM
&& dbt->
size
 > dbt->
un
)

	)

73 
	#DB_CXX_PRIVATE_ENV
 0x00000001

	)

	@../dbinc/db.in

20 #ide
_DB_H_


21 
	#_DB_H_


	)

23 #idef 
__NO_SYSTEM_INCLUDES


24 
	~<sys/tys.h
>

25 @
	gys_h_de
@

26 @
	gdt_h_de
@

27 @
	gddef_h_de
@

28 
	~<dio.h
>

29 @
	gunid_h_de
@

30 @
	gthad_h_de
@

33 @
	gfm_hd
@

34 #i
defed
(
__lulus
)

38 @
DB_CONST
@

39 @
DB_PROTO1
@

40 @
DB_PROTO2
@

45 
	#DB_VERSION_MAJOR
 @
DB_VERSION_MAJOR
@

	)

46 
	#DB_VERSION_MINOR
 @
DB_VERSION_MINOR
@

	)

47 
	#DB_VERSION_PATCH
 @
DB_VERSION_PATCH
@

	)

48 
	#DB_VERSION_STRING
 @
DB_VERSION_STRING
@

	)

63 #idef 
__BIT_TYPES_DEFINED__


64 
	#__BIT_TYPES_DEFINED__


	)

65 @
u_t8_de
@

66 @
t16_de
@

67 @
u_t16_de
@

68 @
t32_de
@

69 @
u_t32_de
@

70 @
t64_de
@

71 @
u_t64_de
@

74 @
u_ch_de
@

75 @
u_t_de
@

76 @
u_lg_de
@

77 @
u_sht_de
@

97 @
utmax_t_de
@

98 @
u_t_de
@

100 @
FILE_t_de
@

101 @
off_t_de
@

102 @
pid_t_de
@

103 @
size_t_de
@

104 @
ssize_t_de
@

105 @
time_t_de
@

110 @
db_q_de
@

113 @
db_thadid_t_de
@

116 
u_t32_t
 
	tdb_pgno_t
;

117 
u_t16_t
 
	tdb_dx_t
;

118 
	#DB_MAX_PAGES
 0xfffffff

	)

120 
u_t32_t
 
	tdb_o_t
;

121 
	#DB_MAX_RECORDS
 0xfffffff

	)

123 
u_t32_t
 
	tdb_timeout_t
;

132 
u_t
 
	troff_t
;

138 
__db
; __db 
	tDB
;

139 
__db_bt_
; __db_bt_ 
	tDB_BTREE_STAT
;

140 
__db_ch
; __db_ch 
	tDB_CIPHER
;

141 
__db_com
; __db_com 
	tDB_COMPACT
;

142 
__db_dbt
; __db_db
	tDBT
;

143 
__db_v
; __db_v 
	tDB_ENV
;

144 
__db_h_
; __db_h_ 
	tDB_HASH_STAT
;

145 
__db_ock
; __db_ock 
	tDB_LOCK_ILOCK
;

146 
__db_lock_
; __db_lock_ 
	tDB_LOCK_STAT
;

147 
__db_lock_h
; __db_lock_h 
	tDB_LOCK_HSTAT
;

148 
__db_lock_u
; __db_lock_u 
	tDB_LOCK
;

149 
__db_lock
; __db_lock 
	tDB_LOCKER
;

150 
__db_lockq
; __db_lockq 
	tDB_LOCKREQ
;

151 
__db_lockb
; __db_lockb 
	tDB_LOCKTAB
;

152 
__db_log
; __db_log 
	tDB_LOG
;

153 
__db_log_curs
; __db_log_curs 
	tDB_LOGC
;

154 
__db_log_
; __db_log_ 
	tDB_LOG_STAT
;

155 
__db_l
; __db_l 
	tDB_LSN
;

156 
__db_mpo
; __db_mpo 
	tDB_MPOOL
;

157 
__db_mpo_f
;__db_mpo_f 
	tDB_MPOOL_FSTAT
;

158 
__db_mpo_
; __db_mpo_ 
	tDB_MPOOL_STAT
;

159 
__db_mpofe
; __db_mpof
	tDB_MPOOLFILE
;

160 
__db_mux_
; __db_mux_ 
	tDB_MUTEX_STAT
;

161 
__db_mux_t
; __db_mux_
	tDB_MUTEX
;

162 
__db_muxmgr
; __db_muxmg
	tDB_MUTEXMGR
;

163 
__db_li
; __db_li 
	tDB_PREPLIST
;

164 
__db_qam_
; __db_qam_ 
	tDB_QUEUE_STAT
;

165 
__db_p
; __db_
	tDB_REP
;

166 
__db_p_
; __db_p_ 
	tDB_REP_STAT
;

167 
__db_pmgr_se
; \

168 
__db_pmgr_se
 
	tDB_REPMGR_SITE
;

169 
__db_pmgr_
; \

170 
__db_pmgr_
 
	tDB_REPMGR_STAT
;

171 
__db_q_cd
; __db_q_cd 
	tDB_SEQ_RECORD
;

172 
__db_q_
; __db_q_ 
	tDB_SEQUENCE_STAT
;

173 
__db_qu
; __db_qu 
	tDB_SEQUENCE
;

174 
__db_txn
; __db_tx
	tDB_TXN
;

175 
__db_txn_aive
; __db_txn_aiv
	tDB_TXN_ACTIVE
;

176 
__db_txn_
; __db_txn_ 
	tDB_TXN_STAT
;

177 
__db_txnmgr
; __db_txnmg
	tDB_TXNMGR
;

178 
__dbc
; __db
	tDBC
;

179 
__dbc_
; __dbc_ 
	tDBC_INTERNAL
;

180 
__fh_t
; __fh_
	tDB_FH
;

181 
__ame
; __am
	tFNAME
;

182 
__key_nge
; __key_ng
	tDB_KEY_RANGE
;

183 
__mpofe
; __mpof
	tMPOOLFILE
;

186 
	s__db_dbt
 {

187 *
da
;

188 
u_t32_t
 
size
;

190 
u_t32_t
 
un
;

191 
u_t32_t
 
dn
;

192 
u_t32_t
 
doff
;

194 *
p_da
;

196 
	#DB_DBT_APPMALLOC
 0x001

	)

197 
	#DB_DBT_DUPOK
 0x002

	)

198 
	#DB_DBT_ISSET
 0x004

	)

199 
	#DB_DBT_MALLOC
 0x008

	)

200 
	#DB_DBT_MULTIPLE
 0x010

	)

201 
	#DB_DBT_PARTIAL
 0x020

	)

202 
	#DB_DBT_REALLOC
 0x040

	)

203 
	#DB_DBT_USERCOPY
 0x080

	)

204 
	#DB_DBT_USERMEM
 0x100

	)

205 
u_t32_t
 
ags
;

213 
	#DB_CREATE
 0x0000001

	)

214 
	#DB_DURABLE_UNKNOWN
 0x0000002

	)

215 
	#DB_FORCE
 0x0000004

	)

216 
	#DB_MULTIVERSION
 0x0000008

	)

217 
	#DB_NOMMAP
 0x0000010

	)

218 
	#DB_RDONLY
 0x0000020

	)

219 
	#DB_RECOVER
 0x0000040

	)

220 
	#DB_THREAD
 0x0000080

	)

221 
	#DB_TRUNCATE
 0x0000100

	)

222 
	#DB_TXN_NOSYNC
 0x0000200

	)

223 
	#DB_TXN_NOWAIT
 0x0000400

	)

224 
	#DB_TXN_NOT_DURABLE
 0x0000800

	)

225 
	#DB_TXN_WRITE_NOSYNC
 0x0001000

	)

226 
	#DB_SPARE_FLAG
 0x0002000

	)

250 
	#DB_IGNORE_LEASE
 0x01000000

	)

251 
	#DB_AUTO_COMMIT
 0x02000000

	)

253 
	#DB_READ_COMMITTED
 0x04000000

	)

254 
	#DB_DEGREE_2
 0x04000000

	)

256 
	#DB_READ_UNCOMMITTED
 0x08000000

	)

257 
	#DB_DIRTY_READ
 0x08000000

	)

259 
	#DB_TXN_SNAPSHOT
 0x10000000

	)

264 
	#DB_CXX_NO_EXCEPTIONS
 0x0000001

	)

269 
	#DB_RPCCLIENT
 0x0000002

	)

274 
	#DB_XA_CREATE
 0x0000002

	)

279 
	#DB_USE_ENVIRON
 0x0004000

	)

280 
	#DB_USE_ENVIRON_ROOT
 0x0008000

	)

284 
	#DB_INIT_CDB
 0x0010000

	)

285 
	#DB_INIT_LOCK
 0x0020000

	)

286 
	#DB_INIT_LOG
 0x0040000

	)

287 
	#DB_INIT_MPOOL
 0x0080000

	)

288 
	#DB_INIT_REP
 0x0100000

	)

289 
	#DB_INIT_TXN
 0x0200000

	)

290 
	#DB_LOCKDOWN
 0x0400000

	)

291 
	#DB_PRIVATE
 0x0800000

	)

292 
	#DB_RECOVER_FATAL
 0x1000000

	)

293 
	#DB_REGISTER
 0x2000000

	)

294 
	#DB_SYSTEM_MEM
 0x4000000

	)

296 
	#DB_JOINENV
 0x0

	)

301 
	#DB_EXCL
 0x0004000

	)

302 
	#DB_FCNTL_LOCKING
 0x0008000

	)

303 
	#DB_NO_AUTO_COMMIT
 0x0010000

	)

304 
	#DB_RDWRMASTER
 0x0020000

	)

305 
	#DB_WRITEOPEN
 0x0040000

	)

310 
	#DB_IMMUTABLE_KEY
 0x0004000

	)

316 
	#DB_TXN_SYNC
 0x0004000

	)

317 
	#DB_TXN_WAIT
 0x0008000

	)

322 
	#DB_CKP_INTERNAL
 0x0004000

	)

327 
	#DB_ENCRYPT_AES
 0x0000001

	)

332 
	#DB_CDB_ALLDB
 0x00004000

	)

333 
	#DB_DIRECT_DB
 0x00008000

	)

334 
	#DB_DIRECT_LOG
 0x00010000

	)

335 
	#DB_DSYNC_DB
 0x00020000

	)

336 
	#DB_DSYNC_LOG
 0x00040000

	)

337 
	#DB_LOG_AUTOREMOVE
 0x00080000

	)

338 
	#DB_LOG_INMEMORY
 0x00100000

	)

339 
	#DB_NOLOCKING
 0x00200000

	)

340 
	#DB_NOPANIC
 0x00400000

	)

341 
	#DB_OVERWRITE
 0x00800000

	)

342 
	#DB_PANIC_ENVIRONMENT
 0x01000000

	)

347 
	#DB_REGION_INIT
 0x20000000

	)

348 
	#DB_TIME_NOTGRANTED
 0x40000000

	)

349 
	#DB_YIELDCPU
 0x80000000

	)

354 
	#DB_UPGRADE
 0x0000001

	)

355 
	#DB_VERIFY
 0x0000002

	)

361 
	#DB_FREELIST_ONLY
 0x00004000

	)

362 
	#DB_FREE_SPACE
 0x00008000

	)

363 
	#DB_COMPACT_FLAGS
 \

364 (
DB_FREELIST_ONLY
 | 
DB_FREE_SPACE
)

	)

369 
	#DB_DIRECT
 0x0004000

	)

370 
	#DB_EXTENT
 0x0008000

	)

371 
	#DB_ODDFILESIZE
 0x0010000

	)

376 
	#DB_CHKSUM
 0x00004000

	)

377 
	#DB_DUP
 0x00008000

	)

378 
	#DB_DUPSORT
 0x00010000

	)

379 
	#DB_ENCRYPT
 0x00020000

	)

380 
	#DB_INORDER
 0x00040000

	)

381 
	#DB_RECNUM
 0x00080000

	)

382 
	#DB_RENUMBER
 0x00100000

	)

383 
	#DB_REVSPLITOFF
 0x00200000

	)

384 
	#DB_SNAPSHOT
 0x00400000

	)

389 
	#DB_FAST_STAT
 0x0000001

	)

390 
	#DB_STAT_ALL
 0x0000002

	)

391 
	#DB_STAT_CLEAR
 0x0000004

	)

392 
	#DB_STAT_LOCK_CONF
 0x0000008

	)

393 
	#DB_STAT_LOCK_LOCKERS
 0x0000010

	)

394 
	#DB_STAT_LOCK_OBJECTS
 0x0000020

	)

395 
	#DB_STAT_LOCK_PARAMS
 0x0000040

	)

396 
	#DB_STAT_MEMP_HASH
 0x0000080

	)

397 
	#DB_STAT_NOERROR
 0x0000100

	)

398 
	#DB_STAT_SUBSYSTEM
 0x0000200

	)

403 
	#DB_JOIN_NOSORT
 0x0000001

	)

408 
	#DB_AGGRESSIVE
 0x0000001

	)

409 
	#DB_NOORDERCHK
 0x0000002

	)

410 
	#DB_ORDERCHKONLY
 0x0000004

	)

411 
	#DB_PR_PAGE
 0x0000008

	)

412 
	#DB_PR_RECOVERYTEST
 0x0000010

	)

413 
	#DB_PRINTABLE
 0x0000020

	)

414 
	#DB_SALVAGE
 0x0000040

	)

415 
	#DB_UNREF
 0x0000080

	)

425 
	#DB_REP_ANYWHERE
 0x0000001

	)

426 
	#DB_REP_NOBUFFER
 0x0000002

	)

427 
	#DB_REP_PERMANENT
 0x0000004

	)

428 
	#DB_REP_REREQUEST
 0x0000008

	)

433 
u_t32_t
 
	tdb_mux_t
;

439 
	#DB_MUTEX_ALLOCATED
 0x01

	)

440 
	#DB_MUTEX_LOCKED
 0x02

	)

441 
	#DB_MUTEX_LOGICAL_LOCK
 0x04

	)

442 
	#DB_MUTEX_PROCESS_ONLY
 0x08

	)

443 
	#DB_MUTEX_SELF_BLOCK
 0x10

	)

445 
	s__db_mux_
 {

447 
u_t32_t
 
_mux_ign
;

448 
u_t32_t
 
_mux_s_s
;

449 
u_t32_t
 
_mux_t
;

450 
u_t32_t
 
_mux_
;

451 
u_t32_t
 
_mux_u
;

452 
u_t32_t
 
_mux_u_max
;

455 #ide
__TEST_DB_NO_STATISTICS


456 
u_t32_t
 
_gi_wa
;

457 
u_t32_t
 
_gi_nowa
;

458 
roff_t
 
_gsize
;

463 
	#DB_THREADID_STRLEN
 128

	)

468 
	#DB_LOCKVERSION
 1

	)

470 
	#DB_FILE_ID_LEN
 20

	)

476 
	#DB_LOCK_NORUN
 0

	)

477 
	#DB_LOCK_DEFAULT
 1

	)

478 
	#DB_LOCK_EXPIRE
 2

	)

479 
	#DB_LOCK_MAXLOCKS
 3

	)

480 
	#DB_LOCK_MAXWRITE
 4

	)

481 
	#DB_LOCK_MINLOCKS
 5

	)

482 
	#DB_LOCK_MINWRITE
 6

	)

483 
	#DB_LOCK_OLDEST
 7

	)

484 
	#DB_LOCK_RANDOM
 8

	)

485 
	#DB_LOCK_YOUNGEST
 9

	)

488 
	#DB_LOCK_ABORT
 0x001

	)

489 
	#DB_LOCK_NOWAIT
 0x002

	)

490 
	#DB_LOCK_RECORD
 0x004

	)

491 
	#DB_LOCK_SET_TIMEOUT
 0x008

	)

492 
	#DB_LOCK_SWITCH
 0x010

	)

493 
	#DB_LOCK_UPGRADE
 0x020

	)

496 
	#DB_SET_LOCK_TIMEOUT
 1

	)

497 
	#DB_SET_TXN_NOW
 2

	)

498 
	#DB_SET_TXN_TIMEOUT
 3

	)

509 
DB_LOCK_NG
=0,

510 
DB_LOCK_READ
=1,

511 
DB_LOCK_WRITE
=2,

512 
DB_LOCK_WAIT
=3,

513 
DB_LOCK_IWRITE
=4,

514 
DB_LOCK_IREAD
=5,

515 
DB_LOCK_IWR
=6,

516 
DB_LOCK_READ_UNCOMMITTED
=7,

517 
DB_LOCK_WWRITE
=8

518 } 
	tdb_lockmode_t
;

524 
DB_LOCK_DUMP
=0,

525 
DB_LOCK_GET
=1,

526 
DB_LOCK_GET_TIMEOUT
=2,

527 
DB_LOCK_INHERIT
=3,

528 
DB_LOCK_PUT
=4,

529 
DB_LOCK_PUT_ALL
=5,

530 
DB_LOCK_PUT_OBJ
=6,

531 
DB_LOCK_PUT_READ
=7,

532 
DB_LOCK_TIMEOUT
=8,

533 
DB_LOCK_TRADE
=9,

534 
DB_LOCK_UPGRADE_WRITE
=10

535 } 
	tdb_lock_t
;

541 
DB_LSTAT_ABORTED
=1,

542 
DB_LSTAT_EXPIRED
=2,

543 
DB_LSTAT_FREE
=3,

544 
DB_LSTAT_HELD
=4,

545 
DB_LSTAT_PENDING
=5,

548 
DB_LSTAT_WAITING
=6

549 }
	tdb_us_t
;

552 
	s__db_lock_
 {

553 
u_t32_t
 
_id
;

554 
u_t32_t
 
_cur_maxid
;

555 
u_t32_t
 
_maxlocks
;

556 
u_t32_t
 
_maxlocks
;

557 
u_t32_t
 
_maxobjes
;

558 
_nmodes
;

559 
u_t32_t
 
_ocks
;

560 #ide
__TEST_DB_NO_STATISTICS


561 
u_t32_t
 
_ocks
;

562 
u_t32_t
 
_maxocks
;

563 
u_t32_t
 
_maxocks
;

564 
u_t32_t
 
_nobjes
;

565 
u_t32_t
 
_maxnobjes
;

566 
u_t32_t
 
_eques
;

567 
u_t32_t
 
_Ės
;

568 
u_t32_t
 
_nupgde
;

569 
u_t32_t
 
_ndowngde
;

570 
u_t32_t
 
_lock_wa
;

571 
u_t32_t
 
_lock_nowa
;

572 
u_t32_t
 
_nddlocks
;

573 
db_timeout_t
 
_locktimeout
;

574 
u_t32_t
 
_ocktimeouts
;

575 
db_timeout_t
 
_tximeout
;

576 
u_t32_t
 
_ximeouts
;

577 
u_t32_t
 
_objs_wa
;

578 
u_t32_t
 
_objs_nowa
;

579 
u_t32_t
 
_locks_wa
;

580 
u_t32_t
 
_locks_nowa
;

581 
u_t32_t
 
_locks_wa
;

582 
u_t32_t
 
_locks_nowa
;

583 
u_t32_t
 
_gi_wa
;

584 
u_t32_t
 
_gi_nowa
;

585 
u_t32_t
 
_hash_n
;

586 
roff_t
 
_gsize
;

590 
	s__db_lock_h
 {

591 
u_t32_t
 
_eques
;

592 
u_t32_t
 
_Ės
;

593 
u_t32_t
 
_nupgde
;

594 
u_t32_t
 
_ndowngde
;

595 
u_t32_t
 
_lock_wa
;

596 
u_t32_t
 
_lock_nowa
;

597 
u_t32_t
 
_ocktimeouts
;

598 
u_t32_t
 
_ximeouts
;

599 
u_t32_t
 
_hash_n
;

606 
	s__db_ock
 {

607 
db_pgno_t
 
pgno
;

608 
u_t8_t
 
feid
[
DB_FILE_ID_LEN
];

609 
	#DB_HANDLE_LOCK
 1

	)

610 
	#DB_RECORD_LOCK
 2

	)

611 
	#DB_PAGE_LOCK
 3

	)

612 
u_t32_t
 
ty
;

620 
	s__db_lock_u
 {

621 
roff_t
 
off
;

622 
u_t32_t
 
ndx
;

624 
u_t32_t
 
g
;

625 
db_lockmode_t
 
mode
;

629 
	s__db_lockq
 {

630 
db_lock_t
 

;

631 
db_lockmode_t
 
mode
;

632 
db_timeout_t
 
timeout
;

633 
DBT
 *
obj
;

634 
DB_LOCK
 
lock
;

640 
	#DB_LOGVERSION
 13

	)

641 
	#DB_LOGOLDVER
 8

	)

642 
	#DB_LOGMAGIC
 0x040988

	)

645 
	#DB_ARCH_ABS
 0x001

	)

646 
	#DB_ARCH_DATA
 0x002

	)

647 
	#DB_ARCH_LOG
 0x004

	)

648 
	#DB_ARCH_REMOVE
 0x008

	)

651 
	#DB_FLUSH
 0x001

	)

652 
	#DB_LOG_CHKPNT
 0x002

	)

653 
	#DB_LOG_COMMIT
 0x004

	)

654 
	#DB_LOG_NOCOPY
 0x008

	)

655 
	#DB_LOG_NOT_DURABLE
 0x010

	)

656 
	#DB_LOG_WRNOSYNC
 0x020

	)

667 
	s__db_l
 {

668 
u_t32_t
 
fe
;

669 
u_t32_t
 
offt
;

681 
	#DB_ur_BEGIN
 10000

	)

682 
	#DB_debug_FLAG
 0x80000000

	)

688 
	s__db_log_curs
 {

689 
DB_ENV
 *
dbv
;

691 
DB_FH
 *
fhp
;

692 
DB_LSN
 
l
;

693 
u_t32_t
 
n
;

694 
u_t32_t
 
ev
;

696 
DBT
 
dbt
;

697 
DB_LSN
 
p_l
;

698 
u_t32_t
 
p_vsi
;

700 
u_t8_t
 *
bp
;

701 
u_t32_t
 
bp_size
;

702 
u_t32_t
 
bp_
;

703 
DB_LSN
 
bp_l
;

705 
u_t32_t
 
bp_maxc
;

708 (*
o

__P
((
DB_LOGC
 *, 
u_t32_t
));

709 (*
g

__P
((
DB_LOGC
 *, 
DB_LSN
 *, 
DBT
 *, 
u_t32_t
));

710 (*
vsi

__P
((
DB_LOGC
 *, 
u_t32_t
 *, u_int32_t));

713 
	#DB_LOG_DISK
 0x01

	)

714 
	#DB_LOG_LOCKED
 0x02

	)

715 
	#DB_LOG_SILENT_ERR
 0x04

	)

716 
u_t32_t
 
ags
;

720 
	s__db_log_
 {

721 
u_t32_t
 
_magic
;

722 
u_t32_t
 
_vsi
;

723 
_mode
;

724 
u_t32_t
 
_lg_bsize
;

725 
u_t32_t
 
_lg_size
;

726 
u_t32_t
 
_wc_bys
;

727 
u_t32_t
 
_wc_mbys
;

728 #ide
__TEST_DB_NO_STATISTICS


729 
u_t32_t
 
_cd
;

730 
u_t32_t
 
_w_bys
;

731 
u_t32_t
 
_w_mbys
;

732 
u_t32_t
 
_wcou
;

733 
u_t32_t
 
_wcou_fl
;

734 
u_t32_t
 
_rcou
;

735 
u_t32_t
 
_scou
;

736 
u_t32_t
 
_gi_wa
;

737 
u_t32_t
 
_gi_nowa
;

738 
u_t32_t
 
_cur_fe
;

739 
u_t32_t
 
_cur_offt
;

740 
u_t32_t
 
_disk_fe
;

741 
u_t32_t
 
_disk_offt
;

742 
u_t32_t
 
_maxcommrush
;

743 
u_t32_t
 
_mcommrush
;

744 
roff_t
 
_gsize
;

755 
	#DB_SET_TXN_LSNP
(
txn
, 
blp
, 
΢p
) \

756 ((
txn
)->
	`t_txn_lp
xn, 
blp
, 
΢p
))

	)

762 
	#DB_MPOOL_CREATE
 0x001

	)

763 
	#DB_MPOOL_DIRTY
 0x002

	)

764 
	#DB_MPOOL_EDIT
 0x004

	)

765 
	#DB_MPOOL_FREE
 0x008

	)

766 
	#DB_MPOOL_LAST
 0x010

	)

767 
	#DB_MPOOL_NEW
 0x020

	)

770 
	#DB_MPOOL_DISCARD
 0x001

	)

773 
	#DB_MPOOL_NOFILE
 0x001

	)

774 
	#DB_MPOOL_UNLINK
 0x002

	)

778 
DB_PRIORITY_UNCHANGED
=0,

779 
DB_PRIORITY_VERY_LOW
=1,

780 
DB_PRIORITY_LOW
=2,

781 
DB_PRIORITY_DEFAULT
=3,

782 
DB_PRIORITY_HIGH
=4,

783 
DB_PRIORITY_VERY_HIGH
=5

784 } 
	tDB_CACHE_PRIORITY
;

787 
	s__db_mpofe
 {

788 
DB_FH
 *
fhp
;

794 
u_t32_t
 
f
;

796 
u_t32_t
 
pf
;

804 
__db_mpofe
 *
tqe_xt
;

805 
__db_mpofe
 **
tqe_ev
;

806 } 
q
;

818 
DB_ENV
 *
dbv
;

819 
MPOOLFILE
 *
m
;

821 
u_t32_t
 
r_n
;

822 
u_t8_t


823 
feid
[
DB_FILE_ID_LEN
];

824 
y
;

825 
t32_t
 
l_offt
;

826 
u_t32_t
 
gbys
, 
bys
;

827 
DBT
 *
pgcook
;

828 
t32_t
 
iܙy
;

830 *
addr
;

831 
size_t
 
n
;

833 
u_t32_t
 
cfig_ags
;

836 (*
o

__P
((
DB_MPOOLFILE
 *, 
u_t32_t
));

837 (*
g
)

838 
__P
((
DB_MPOOLFILE
 *, 
db_pgno_t
 *, 
DB_TXN
 *, 
u_t32_t
, *));

839 (*
g_r_n

__P
((
DB_MPOOLFILE
 *, 
u_t32_t
 *));

840 (*
g_feid

__P
((
DB_MPOOLFILE
 *, 
u_t8_t
 *));

841 (*
g_ags

__P
((
DB_MPOOLFILE
 *, 
u_t32_t
 *));

842 (*
g_y

__P
((
DB_MPOOLFILE
 *, *));

843 (*
g_ϡ_pgno

__P
((
DB_MPOOLFILE
 *, 
db_pgno_t
 *));

844 (*
g_l_offt

__P
((
DB_MPOOLFILE
 *, 
t32_t
 *));

845 (*
g_maxsize

__P
((
DB_MPOOLFILE
 *, 
u_t32_t
 *, u_int32_t *));

846 (*
g_pgcook

__P
((
DB_MPOOLFILE
 *, 
DBT
 *));

847 (*
g_iܙy

__P
((
DB_MPOOLFILE
 *, 
DB_CACHE_PRIORITY
 *));

848 (*
ݒ

__P
((
DB_MPOOLFILE
 *, cڡ *, 
u_t32_t
, , 
size_t
));

849 (*
put

__P
((
DB_MPOOLFILE
 *, *, 
DB_CACHE_PRIORITY
, 
u_t32_t
));

850 (*
t_r_n

__P
((
DB_MPOOLFILE
 *, 
u_t32_t
));

851 (*
t_feid

__P
((
DB_MPOOLFILE
 *, 
u_t8_t
 *));

852 (*
t_ags

__P
((
DB_MPOOLFILE
 *, 
u_t32_t
, ));

853 (*
t_y

__P
((
DB_MPOOLFILE
 *, ));

854 (*
t_l_offt

__P
((
DB_MPOOLFILE
 *, 
t32_t
));

855 (*
t_maxsize

__P
((
DB_MPOOLFILE
 *, 
u_t32_t
, u_int32_t));

856 (*
t_pgcook

__P
((
DB_MPOOLFILE
 *, 
DBT
 *));

857 (*
t_iܙy

__P
((
DB_MPOOLFILE
 *, 
DB_CACHE_PRIORITY
));

858 (*
sync

__P
((
DB_MPOOLFILE
 *));

869 
	#MP_FILEID_SET
 0x001

	)

870 
	#MP_FLUSH
 0x002

	)

871 
	#MP_MULTIVERSION
 0x004

	)

872 
	#MP_OPEN_CALLED
 0x008

	)

873 
	#MP_READONLY
 0x010

	)

874 
u_t32_t
 
ags
;

878 
	s__db_mpo_
 {

879 
u_t32_t
 
_gbys
;

880 
u_t32_t
 
_bys
;

881 
u_t32_t
 
_nche
;

882 
u_t32_t
 
_max_nche
;

883 
size_t
 
_mmsize
;

884 
_maxݒfd
;

885 
_maxwre
;

886 
db_timeout_t
 
_maxwre_p
;

887 
u_t32_t
 
_ges
;

888 #ide
__TEST_DB_NO_STATISTICS


889 
u_t32_t
 
_m
;

890 
u_t32_t
 
_che_h
;

891 
u_t32_t
 
_che_miss
;

892 
u_t32_t
 
_ge_
;

893 
u_t32_t
 
_ge_
;

894 
u_t32_t
 
_ge_out
;

895 
u_t32_t
 
_ro_evi
;

896 
u_t32_t
 
_rw_evi
;

897 
u_t32_t
 
_ge_ick
;

898 
u_t32_t
 
_ge_n
;

899 
u_t32_t
 
_ge_dty
;

900 
u_t32_t
 
_hash_bucks
;

901 
u_t32_t
 
_hash_ches
;

902 
u_t32_t
 
_hash_lge
;

903 
u_t32_t
 
_hash_examed
;

904 
u_t32_t
 
_hash_nowa
;

905 
u_t32_t
 
_hash_wa
;

906 
u_t32_t
 
_hash_max_nowa
;

907 
u_t32_t
 
_hash_max_wa
;

908 
u_t32_t
 
_gi_nowa
;

909 
u_t32_t
 
_gi_wa
;

910 
u_t32_t
 
_mvcc_oz
;

911 
u_t32_t
 
_mvcc_thawed
;

912 
u_t32_t
 
_mvcc_d
;

913 
u_t32_t
 
_loc
;

914 
u_t32_t
 
_loc_bucks
;

915 
u_t32_t
 
_loc_max_bucks
;

916 
u_t32_t
 
_loc_ges
;

917 
u_t32_t
 
_loc_max_ges
;

918 
u_t32_t
 
_io_wa
;

919 
roff_t
 
_gsize
;

924 
	s__db_mpo_f
 {

925 *
fe_me
;

926 
u_t32_t
 
_gesize
;

927 #ide
__TEST_DB_NO_STATISTICS


928 
u_t32_t
 
_m
;

929 
u_t32_t
 
_che_h
;

930 
u_t32_t
 
_che_miss
;

931 
u_t32_t
 
_ge_
;

932 
u_t32_t
 
_ge_
;

933 
u_t32_t
 
_ge_out
;

940 
	#DB_TXNVERSION
 1

	)

943 
DB_TXN_ABORT
=0,

944 
DB_TXN_APPLY
=1,

945 
DB_TXN_BACKWARD_ALLOC
=2,

946 
DB_TXN_BACKWARD_ROLL
=3,

947 
DB_TXN_FORWARD_ROLL
=4,

948 
DB_TXN_OPENFILES
=5,

949 
DB_TXN_POPENFILES
=6,

950 
DB_TXN_PRINT
=7

951 } 
	tdb_cs
;

959 
	#DB_UNDO
(

((=
DB_TXN_ABORT
 || \

960 (

=
DB_TXN_BACKWARD_ROLL
 || (=
DB_TXN_BACKWARD_ALLOC
)

	)

961 
	#DB_REDO
(

((=
DB_TXN_FORWARD_ROLL
 || (=
DB_TXN_APPLY
)

	)

963 
	s__db_txn
 {

964 
DB_TXNMGR
 *
mg
;

965 
DB_TXN
 *

;

967 
u_t32_t
 
txnid
;

968 *
me
;

969 
DB_LOCKER
 *
lock
;

971 
db_thadid_t
 
tid
;

972 *
td
;

973 
db_timeout_t
 
lock_timeout
;

974 
db_timeout_t
 
expe
;

975 *
txn_li
;

984 
__db_txn
 *
tqe_xt
;

985 
__db_txn
 **
tqe_ev
;

986 } 
lks
;

988 
__db_txn
 *
tqe_xt
;

989 
__db_txn
 **
tqe_ev
;

990 } 
xks
;

997 
	s__kids
 {

998 
__db_txn
 *
tqh_f
;

999 
__db_txn
 **
tqh_ϡ
;

1000 } 
kids
;

1008 
__txn_evt
 *
tqh_f
;

1009 
__txn_evt
 **
tqh_ϡ
;

1010 } 
evts
;

1018 
__txn_logc
 *
qh_f
;

1019 
__txn_logc
 **
qh_ϡ
;

1020 } 
logs
;

1028 
__db_txn
 *
tqe_xt
;

1029 
__db_txn
 **
tqe_ev
;

1030 } 
klks
;

1032 *
i_
;

1033 *
xml_
;

1035 
u_t32_t
 
curss
;

1038 (*
abt

__P
((
DB_TXN
 *));

1039 (*
comm

__P
((
DB_TXN
 *, 
u_t32_t
));

1040 (*
disrd

__P
((
DB_TXN
 *, 
u_t32_t
));

1041 (*
g_me

__P
((
DB_TXN
 *, const **));

1042 
u_t32_t
 (*
id

__P
((
DB_TXN
 *));

1043 (*
e

__P
((
DB_TXN
 *, 
u_t8_t
 *));

1044 (*
t_me

__P
((
DB_TXN
 *, const *));

1045 (*
t_timeout

__P
((
DB_TXN
 *, 
db_timeout_t
, 
u_t32_t
));

1049 (*
t_txn_lp

__P
((
DB_TXN
 *
txn
, 
DB_LSN
 **, DB_LSN **));

1052 
	#TXN_CHILDCOMMIT
 0x0001

	)

1053 
	#TXN_CDSGROUP
 0x0002

	)

1054 
	#TXN_COMPENSATE
 0x0004

	)

1055 
	#TXN_DEADLOCK
 0x0008

	)

1056 
	#TXN_LOCKTIMEOUT
 0x0010

	)

1057 
	#TXN_MALLOC
 0x0020

	)

1058 
	#TXN_NOSYNC
 0x0040

	)

1059 
	#TXN_NOWAIT
 0x0080

	)

1060 
	#TXN_PRIVATE
 0x0100

	)

1061 
	#TXN_READ_COMMITTED
 0x0200

	)

1062 
	#TXN_READ_UNCOMMITTED
 0x0400

	)

1063 
	#TXN_RESTORED
 0x0800

	)

1064 
	#TXN_SNAPSHOT
 0x1000

	)

1065 
	#TXN_SYNC
 0x2000

	)

1066 
	#TXN_WRITE_NOSYNC
 0x4000

	)

1067 
u_t32_t
 
ags
;

1070 
	#TXN_SYNC_FLAGS
 (
TXN_SYNC
 | 
TXN_NOSYNC
 | 
TXN_WRITE_NOSYNC
)

	)

1080 
	#DB_XIDDATASIZE
 128

	)

1081 
	s__db_li
 {

1082 
DB_TXN
 *
txn
;

1083 
u_t8_t
 
gid
[
DB_XIDDATASIZE
];

1087 
	s__db_txn_aive
 {

1088 
u_t32_t
 
txnid
;

1089 
u_t32_t
 
id
;

1090 
pid_t
 
pid
;

1091 
db_thadid_t
 
tid
;

1093 
DB_LSN
 
l
;

1095 
DB_LSN
 
ad_l
;

1096 
u_t32_t
 
mvcc_f
;

1098 
	#TXN_ABORTED
 1

	)

1099 
	#TXN_COMMITTED
 2

	)

1100 
	#TXN_PREPARED
 3

	)

1101 
	#TXN_RUNNING
 4

	)

1102 
u_t32_t
 
us
;

1104 
	#TXN_XA_ABORTED
 1

	)

1105 
	#TXN_XA_DEADLOCKED
 2

	)

1106 
	#TXN_XA_ENDED
 3

	)

1107 
	#TXN_XA_PREPARED
 4

	)

1108 
	#TXN_XA_STARTED
 5

	)

1109 
	#TXN_XA_SUSPENDED
 6

	)

1110 
u_t32_t
 
xa_us
;

1112 
u_t8_t
 
xid
[
DB_XIDDATASIZE
];

1113 
me
[51];

1116 
	s__db_txn_
 {

1117 
u_t32_t
 
_ees
;

1119 #ide
__TEST_DB_NO_STATISTICS


1120 
DB_LSN
 
_ϡ_ckp
;

1121 
time_t
 
_time_ckp
;

1122 
u_t32_t
 
_ϡ_txnid
;

1123 
u_t32_t
 
_maxtxns
;

1124 
u_t32_t
 
_bts
;

1125 
u_t32_t
 
_nbegs
;

1126 
u_t32_t
 
_ncomms
;

1127 
u_t32_t
 
_ive
;

1128 
u_t32_t
 
_nsh
;

1129 
u_t32_t
 
_maxive
;

1130 
u_t32_t
 
_maxnsh
;

1131 
DB_TXN_ACTIVE
 *
_txǼay
;

1132 
u_t32_t
 
_gi_wa
;

1133 
u_t32_t
 
_gi_nowa
;

1134 
roff_t
 
_gsize
;

1142 
	#DB_EID_BROADCAST
 -1

	)

1143 
	#DB_EID_INVALID
 -2

	)

1146 
	#DB_REP_CONF_BULK
 0x0001

	)

1147 
	#DB_REP_CONF_DELAYCLIENT
 0x0002

	)

1148 
	#DB_REP_CONF_NOAUTOINIT
 0x0004

	)

1149 
	#DB_REP_CONF_NOWAIT
 0x0008

	)

1158 
	#DB_REP_CLIENT
 1

	)

1159 
	#DB_REP_ELECTION
 2

	)

1160 
	#DB_REP_MASTER
 3

	)

1162 
	#DB_REPFLAGS_MASK
 0x000000f

	)

1164 
	#DB_REP_DEFAULT_PRIORITY
 100

	)

1167 
	#DB_REPMGR_ACKS_ALL
 1

	)

1168 
	#DB_REPMGR_ACKS_ALL_PEERS
 2

	)

1169 
	#DB_REPMGR_ACKS_NONE
 3

	)

1170 
	#DB_REPMGR_ACKS_ONE
 4

	)

1171 
	#DB_REPMGR_ACKS_ONE_PEER
 5

	)

1172 
	#DB_REPMGR_ACKS_QUORUM
 6

	)

1175 
	#DB_REP_ACK_TIMEOUT
 1

	)

1176 
	#DB_REP_CHECKPOINT_DELAY
 2

	)

1177 
	#DB_REP_CONNECTION_RETRY
 3

	)

1178 
	#DB_REP_ELECTION_RETRY
 4

	)

1179 
	#DB_REP_ELECTION_TIMEOUT
 5

	)

1180 
	#DB_REP_FULL_ELECTION_TIMEOUT
 6

	)

1181 
	#DB_REP_LEASE_TIMEOUT
 7

	)

1184 
	#DB_EVENT_NO_SUCH_EVENT
 0

	)

1185 
	#DB_EVENT_PANIC
 1

	)

1186 
	#DB_EVENT_REP_CLIENT
 2

	)

1187 
	#DB_EVENT_REP_ELECTED
 3

	)

1188 
	#DB_EVENT_REP_MASTER
 4

	)

1189 
	#DB_EVENT_REP_NEWMASTER
 5

	)

1190 
	#DB_EVENT_REP_PERM_FAILED
 6

	)

1191 
	#DB_EVENT_REP_STARTUPDONE
 7

	)

1192 
	#DB_EVENT_WRITE_FAILED
 8

	)

1195 
	#DB_REPMGR_PEER
 0x01

	)

1198 
	s__db_pmgr_se
 {

1199 
eid
;

1200 *
ho
;

1201 
u_t
 
pt
;

1203 
	#DB_REPMGR_CONNECTED
 0x01

	)

1204 
	#DB_REPMGR_DISCONNECTED
 0x02

	)

1205 
u_t32_t
 
us
;

1209 
	s__db_p_
 {

1219 
u_t32_t
 
_log_queued
;

1220 
u_t32_t
 
_tup_come
;

1221 #ide
__TEST_DB_NO_STATISTICS


1222 
u_t32_t
 
_us
;

1223 
DB_LSN
 
_xt_l
;

1224 
DB_LSN
 
_wag_l
;

1225 
db_pgno_t
 
_xt_pg
;

1226 
db_pgno_t
 
_wag_pg
;

1228 
u_t32_t
 
_dupmas
;

1230 
_v_id
;

1231 
_v_iܙy
;

1232 
u_t32_t
 
_bulk_fls
;

1233 
u_t32_t
 
_bulk_ovows
;

1234 
u_t32_t
 
_bulk_cds
;

1235 
u_t32_t
 
_bulk_srs
;

1236 
u_t32_t
 
__ques
;

1237 
u_t32_t
 
__svc_q
;

1239 
u_t32_t
 
__svc_miss
;

1241 
u_t32_t
 
_g
;

1242 
u_t32_t
 
_eg
;

1243 
u_t32_t
 
_log_duid
;

1244 
u_t32_t
 
_log_queued_max
;

1245 
u_t32_t
 
_log_queued_tٮ
;

1246 
u_t32_t
 
_log_cds
;

1247 
u_t32_t
 
_log_queed
;

1248 
_ma
;

1249 
u_t32_t
 
_ma_chges
;

1250 
u_t32_t
 
_msgs_badg
;

1251 
u_t32_t
 
_msgs_osd
;

1252 
u_t32_t
 
_msgs_cov
;

1254 
u_t32_t
 
_msgs_nd_us
;

1255 
u_t32_t
 
_msgs_
;

1256 
u_t32_t
 
_wses
;

1257 
_nses
;

1259 
u_t32_t
 
_hrَes
;

1260 
u_t32_t
 
_outded
;

1262 
u_t32_t
 
_pg_duid
;

1263 
u_t32_t
 
_pg_cds
;

1264 
u_t32_t
 
_pg_queed
;

1265 
u_t32_t
 
_txns_d
;

1266 
u_t32_t
 
_tsync_dayed
;

1269 
u_t32_t
 
_eis
;

1270 
u_t32_t
 
_eis_w
;

1273 
_ei_cur_wr
;

1274 
u_t32_t
 
_ei_g
;

1275 
DB_LSN
 
_ei_l
;

1276 
_ei_nses
;

1277 
_ei_nves
;

1278 
_ei_iܙy
;

1279 
_ei_us
;

1280 
u_t32_t
 
_ei_tbak
;

1281 
_ei_ves
;

1282 
u_t32_t
 
_ei_c
;

1283 
u_t32_t
 
_ei_uc
;

1288 
	s__db_pmgr_
 {

1289 
u_t32_t
 
_rm_ed
;

1290 
u_t32_t
 
_msgs_queued
;

1291 
u_t32_t
 
_msgs_drݳd
;

1293 
u_t32_t
 
_ci_dr
;

1294 
u_t32_t
 
_c_
;

1303 
	s__db_q_cd
 {

1304 
u_t32_t
 
q_vsi
;

1305 
	#DB_SEQ_DEC
 0x00000001

	)

1306 
	#DB_SEQ_INC
 0x00000002

	)

1307 
	#DB_SEQ_RANGE_SET
 0x00000004

	)

1308 
	#DB_SEQ_WRAP
 0x00000008

	)

1309 
	#DB_SEQ_WRAPPED
 0x00000010

	)

1310 
u_t32_t
 
ags
;

1311 
db_q_t
 
q_vue
;

1312 
db_q_t
 
q_max
;

1313 
db_q_t
 
q_m
;

1319 
	s__db_qu
 {

1320 
DB
 *
q_dbp
;

1321 
db_mux_t
 
mtx_q
;

1322 
DB_SEQ_RECORD
 *
q_
;

1323 
DB_SEQ_RECORD
 
q_cd
;

1324 
t32_t
 
q_che_size
;

1325 
db_q_t
 
q_ϡ_vue
;

1326 
DBT
 
q_key
;

1327 
DBT
 
q_da
;

1330 *
i_
;

1333 (*
o

__P
((
DB_SEQUENCE
 *, 
u_t32_t
));

1334 (*
g

__P
((
DB_SEQUENCE
 *,

1335 
DB_TXN
 *, 
t32_t
, 
db_q_t
 *, 
u_t32_t
));

1336 (*
g_chesize

__P
((
DB_SEQUENCE
 *, 
t32_t
 *));

1337 (*
g_db

__P
((
DB_SEQUENCE
 *, 
DB
 **));

1338 (*
g_ags

__P
((
DB_SEQUENCE
 *, 
u_t32_t
 *));

1339 (*
g_key

__P
((
DB_SEQUENCE
 *, 
DBT
 *));

1340 (*
g_nge

__P
((
DB_SEQUENCE
 *,

1341 
db_q_t
 *, db_seq_t *));

1342 (*
l_vue

__P
((
DB_SEQUENCE
 *, 
db_q_t
));

1343 (*
ݒ

__P
((
DB_SEQUENCE
 *,

1344 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

1345 (*
move

__P
((
DB_SEQUENCE
 *, 
DB_TXN
 *, 
u_t32_t
));

1346 (*
t_chesize

__P
((
DB_SEQUENCE
 *, 
t32_t
));

1347 (*
t_ags

__P
((
DB_SEQUENCE
 *, 
u_t32_t
));

1348 (*
t_nge

__P
((
DB_SEQUENCE
 *, 
db_q_t
, db_seq_t));

1349 (*


__P
((
DB_SEQUENCE
 *,

1350 
DB_SEQUENCE_STAT
 **, 
u_t32_t
));

1351 (*
_t

__P
((
DB_SEQUENCE
 *, 
u_t32_t
));

1355 
	s__db_q_
 {

1356 
u_t32_t
 
_wa
;

1357 
u_t32_t
 
_nowa
;

1358 
db_q_t
 
_cut
;

1359 
db_q_t
 
_vue
;

1360 
db_q_t
 
_ϡ_vue
;

1361 
db_q_t
 
_m
;

1362 
db_q_t
 
_max
;

1363 
t32_t
 
_che_size
;

1364 
u_t32_t
 
_ags
;

1371 
DB_BTREE
=1,

1372 
DB_HASH
=2,

1373 
DB_RECNO
=3,

1374 
DB_QUEUE
=4,

1375 
DB_UNKNOWN
=5

1376 } 
	tDBTYPE
;

1378 
	#DB_RENAMEMAGIC
 0x030800

	)

1380 
	#DB_BTREEVERSION
 9

	)

1381 
	#DB_BTREEOLDVER
 8

	)

1382 
	#DB_BTREEMAGIC
 0x053162

	)

1384 
	#DB_HASHVERSION
 9

	)

1385 
	#DB_HASHOLDVER
 7

	)

1386 
	#DB_HASHMAGIC
 0x061561

	)

1388 
	#DB_QAMVERSION
 4

	)

1389 
	#DB_QAMOLDVER
 3

	)

1390 
	#DB_QAMMAGIC
 0x042253

	)

1392 
	#DB_SEQUENCE_VERSION
 2

	)

1393 
	#DB_SEQUENCE_OLDVER
 1

	)

1399 
	#DB_AFTER
 1

	)

1400 
	#DB_APPEND
 2

	)

1401 
	#DB_BEFORE
 3

	)

1402 
	#DB_CONSUME
 4

	)

1403 
	#DB_CONSUME_WAIT
 5

	)

1404 
	#DB_CURRENT
 6

	)

1405 
	#DB_FIRST
 7

	)

1406 
	#DB_GET_BOTH
 8

	)

1407 
	#DB_GET_BOTHC
 9

	)

1408 
	#DB_GET_BOTH_RANGE
 10

	)

1409 
	#DB_GET_RECNO
 11

	)

1410 
	#DB_JOIN_ITEM
 12

	)

1411 
	#DB_KEYFIRST
 13

	)

1412 
	#DB_KEYLAST
 14

	)

1413 
	#DB_LAST
 15

	)

1414 
	#DB_NEXT
 16

	)

1415 
	#DB_NEXT_DUP
 17

	)

1416 
	#DB_NEXT_NODUP
 18

	)

1417 
	#DB_NODUPDATA
 19

	)

1418 
	#DB_NOOVERWRITE
 20

	)

1419 
	#DB_NOSYNC
 21

	)

1420 
	#DB_POSITION
 22

	)

1421 
	#DB_PREV
 23

	)

1422 
	#DB_PREV_DUP
 24

	)

1423 
	#DB_PREV_NODUP
 25

	)

1424 
	#DB_SET
 26

	)

1425 
	#DB_SET_RANGE
 27

	)

1426 
	#DB_SET_RECNO
 28

	)

1427 
	#DB_UPDATE_SECONDARY
 29

	)

1428 
	#DB_WRITECURSOR
 30

	)

1429 
	#DB_WRITELOCK
 31

	)

1432 
	#DB_OPFLAGS_MASK
 0x000000f

	)

1442 
	#DB_MULTIPLE
 0x10000000

	)

1443 
	#DB_MULTIPLE_KEY
 0x20000000

	)

1444 
	#DB_RMW
 0x40000000

	)

1455 
	#DB_BUFFER_SMALL
 (-30999)

	)

1456 
	#DB_DONOTINDEX
 (-30998)

	)

1457 
	#DB_KEYEMPTY
 (-30997)

	)

1458 
	#DB_KEYEXIST
 (-30996)

	)

1459 
	#DB_LOCK_DEADLOCK
 (-30995)

	)

1460 
	#DB_LOCK_NOTGRANTED
 (-30994)

	)

1461 
	#DB_LOG_BUFFER_FULL
 (-30993)

	)

1462 
	#DB_NOSERVER
 (-30992)

	)

1463 
	#DB_NOSERVER_HOME
 (-30991)

	)

1464 
	#DB_NOSERVER_ID
 (-30990)

	)

1465 
	#DB_NOTFOUND
 (-30989)

	)

1466 
	#DB_OLD_VERSION
 (-30988)

	)

1467 
	#DB_PAGE_NOTFOUND
 (-30987)

	)

1468 
	#DB_REP_DUPMASTER
 (-30986)

	)

1469 
	#DB_REP_HANDLE_DEAD
 (-30985)

	)

1470 
	#DB_REP_HOLDELECTION
 (-30984)

	)

1471 
	#DB_REP_IGNORE
 (-30983)

	)

1472 
	#DB_REP_ISPERM
 (-30982)

	)

1473 
	#DB_REP_JOIN_FAILURE
 (-30981)

	)

1474 
	#DB_REP_LEASE_EXPIRED
 (-30980)

	)

1475 
	#DB_REP_LOCKOUT
 (-30979)

	)

1476 
	#DB_REP_NEWSITE
 (-30978)

	)

1477 
	#DB_REP_NOTPERM
 (-30977)

	)

1478 
	#DB_REP_UNAVAIL
 (-30976)

	)

1479 
	#DB_RUNRECOVERY
 (-30975)

	)

1480 
	#DB_SECONDARY_BAD
 (-30974)

	)

1481 
	#DB_VERIFY_BAD
 (-30973)

	)

1482 
	#DB_VERSION_MISMATCH
 (-30972)

	)

1485 
	#DB_ALREADY_ABORTED
 (-30899)

	)

1486 
	#DB_DELETED
 (-30898)

	)

1487 
	#DB_EVENT_NOT_HANDLED
 (-30897)

	)

1488 
	#DB_NEEDSPLIT
 (-30896)

	)

1489 
	#DB_REP_BULKOVF
 (-30895)

	)

1490 
	#DB_REP_EGENCHG
 (-30894)

	)

1491 
	#DB_REP_LOGREADY
 (-30893)

	)

1492 
	#DB_REP_NEWMASTER
 (-30892)

	)

1493 
	#DB_REP_PAGEDONE
 (-30891)

	)

1494 
	#DB_SURPRISE_KID
 (-30890)

	)

1496 
	#DB_SWAPBYTES
 (-30889)

	)

1497 
	#DB_TIMEOUT
 (-30888)

	)

1498 
	#DB_TXN_CKP
 (-30887)

	)

1499 
	#DB_VERIFY_FATAL
 (-30886)

	)

1502 
	s__db
 {

1506 
u_t32_t
 
pgsize
;

1507 
DB_CACHE_PRIORITY
 
iܙy
;

1510 (*
db_nd_o

__P
((
DB
 *, 
DBT
 *, 
db_o_t
));

1511 (*
db_edback

__P
((
DB
 *, , ));

1512 (*
dup_com

__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

1514 *
p_ive
;

1519 
DB_ENV
 *
dbv
;

1521 
DBTYPE
 
ty
;

1523 
DB_MPOOLFILE
 *
mpf
;

1525 
db_mux_t
 
mux
;

1527 *
ame
, *
dme
;

1528 
u_t32_t
 
ݒ_ags
;

1530 
u_t8_t
 
feid
[
DB_FILE_ID_LEN
];

1532 
u_t32_t
 
adj_feid
;

1534 
	#DB_LOGFILEID_INVALID
 -1

	)

1535 
FNAME
 *
log_fame
;

1537 
db_pgno_t
 
ma_pgno
;

1538 
DB_LOCKER
 *
lock
;

1539 
DB_LOCKER
 *
cur_lock
;

1540 
DB_TXN
 *
cur_txn
;

1541 
DB_LOCKER
 *
assoc_lock
;

1542 
DB_LOCK
 
hd_lock
;

1544 
u_t
 
_id
;

1546 
time_t
 
timeamp
;

1547 
u_t32_t
 
fid_g
;

1552 
DBT
 
my_rskey
;

1553 
DBT
 
my_rkey
;

1554 
DBT
 
my_rda
;

1569 
DB_FH
 *
ved_ݒ_fhp
;

1580 
__db
 *
tqe_xt
;

1581 
__db
 **
tqe_ev
;

1582 } 
dblilks
;

1593 
	s__cq_fq
 {

1594 
__dbc
 *
tqh_f
;

1595 
__dbc
 **
tqh_ϡ
;

1596 } 
_queue
;

1597 
	s__cq_aq
 {

1598 
__dbc
 *
tqh_f
;

1599 
__dbc
 **
tqh_ϡ
;

1600 } 
aive_queue
;

1601 
	s__cq_jq
 {

1602 
__dbc
 *
tqh_f
;

1603 
__dbc
 **
tqh_ϡ
;

1604 } 
jo_queue
;

1616 
__db
 *
lh_f
;

1617 } 
s_cds
;

1632 
__db
 *
_xt
;

1633 
__db
 **
_ev
;

1634 } 
s_lks
;

1635 
u_t32_t
 
s_ft
;

1638 (*
s_back

__P
((
DB
 *, cڡ 
DBT
 *, const DBT *, DBT *));

1641 
DB
 *
s_imy
;

1643 
	#DB_ASSOC_IMMUTABLE_KEY
 0x00000001

	)

1646 
u_t32_t
 
s_assoc_ags
;

1649 *
i_
;

1652 *
bt_
;

1653 *
h_
;

1654 *
q_
;

1655 *
xa_
;

1658 (*
assoc

__P
((
DB
 *, 
DB_TXN
 *, DB *,

1659 (*)(
DB
 *, cڡ 
DBT
 *, cڡ DBT *, DBT *), 
u_t32_t
));

1660 (*
o

__P
((
DB
 *, 
u_t32_t
));

1661 (*
com

__P
((
DB
 *,

1662 
DB_TXN
 *, 
DBT
 *, DBT *, 
DB_COMPACT
 *, 
u_t32_t
, DBT *));

1663 (*
curs

__P
((
DB
 *, 
DB_TXN
 *, 
DBC
 **, 
u_t32_t
));

1664 (*
d

__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

1665 (*
r

__P
((
DB
 *, , const *, ...));

1666 (*
rx

__P
((
DB
 *, const *, ...));

1667 (*
exis

__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

1668 (*
fd

__P
((
DB
 *, *));

1669 (*
g

__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

1670 (*
g_bt_mkey

__P
((
DB
 *, 
u_t32_t
 *));

1671 (*
g_byswd

__P
((
DB
 *, *));

1672 (*
g_chesize

__P
((
DB
 *, 
u_t32_t
 *, u_int32_t *, *));

1673 (*
g_dbme

__P
((
DB
 *, const **, const **));

1674 (*
g_y_ags

__P
((
DB
 *, 
u_t32_t
 *));

1675 
DB_ENV
 *(*
g_v

__P
((
DB
 *));

1676 (*
g_rfe

__P
((
DB
 *, 
FILE
 **));

1677 (*
g_fx

__P
((
DB
 *, const **));

1678 (*
g_ags

__P
((
DB
 *, 
u_t32_t
 *));

1679 (*
g_h_f

__P
((
DB
 *, 
u_t32_t
 *));

1680 (*
g_h_m

__P
((
DB
 *, 
u_t32_t
 *));

1681 (*
g_ld

__P
((
DB
 *, *));

1682 
DB_MPOOLFILE
 *(*
g_mpf

__P
((
DB
 *));

1683 (*
g_msgfe

__P
((
DB
 *, 
FILE
 **));

1684 (*
g_muɝ

__P
((
DB
 *));

1685 (*
g_ݒ_ags

__P
((
DB
 *, 
u_t32_t
 *));

1686 (*
g_gesize

__P
((
DB
 *, 
u_t32_t
 *));

1687 (*
g_iܙy

__P
((
DB
 *, 
DB_CACHE_PRIORITY
 *));

1688 (*
g_q_exsize

__P
((
DB
 *, 
u_t32_t
 *));

1689 (*
g__dim

__P
((
DB
 *, *));

1690 (*
g__n

__P
((
DB
 *, 
u_t32_t
 *));

1691 (*
g__d

__P
((
DB
 *, *));

1692 (*
g__sour

__P
((
DB
 *, const **));

1693 (*
g_iڮ

__P
((
DB
 *));

1694 (*
g_ty

__P
((
DB
 *, 
DBTYPE
 *));

1695 (*
jo

__P
((
DB
 *, 
DBC
 **, DBC **, 
u_t32_t
));

1696 (*
key_nge
)

1697 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
DB_KEY_RANGE
 *, 
u_t32_t
));

1698 (*
ݒ

__P
((
DB
 *,

1699 
DB_TXN
 *, cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
, ));

1700 (*
pg

__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
));

1701 (*
put

__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

1702 (*
move

__P
((
DB
 *, cڡ *, cڡ *, 
u_t32_t
));

1703 (*
me

__P
((
DB
 *,

1704 cڡ *, cڡ *, cڡ *, 
u_t32_t
));

1705 (*
t_loc

__P
((
DB
 *, *(*)(
size_t
),

1706 *(*)(*, 
size_t
), (*)(*)));

1707 (*
t_nd_o

__P
((
DB
 *, (*)(DB *, 
DBT
 *, 
db_o_t
)));

1708 (*
t_bt_com
)

1709 
__P
((
DB
 *, (*)(DB *, cڡ 
DBT
 *, const DBT *)));

1710 (*
t_bt_mkey

__P
((
DB
 *, 
u_t32_t
));

1711 (*
t_bt_efix
)

1712 
__P
((
DB
 *, 
size_t
 (*)(DB *, cڡ 
DBT
 *, const DBT *)));

1713 (*
t_chesize

__P
((
DB
 *, 
u_t32_t
, u_int32_t, ));

1714 (*
t_dup_com
)

1715 
__P
((
DB
 *, (*)(DB *, cڡ 
DBT
 *, const DBT *)));

1716 (*
t_y

__P
((
DB
 *, cڡ *, 
u_t32_t
));

1717 (*
t_r

__P
((
DB
 *,

1718 (*)(cڡ 
DB_ENV
 *, const *, const *)));

1719 (*
t_rfe

__P
((
DB
 *, 
FILE
 *));

1720 (*
t_fx

__P
((
DB
 *, const *));

1721 (*
t_edback

__P
((
DB
 *, (*)(DB *, , )));

1722 (*
t_ags

__P
((
DB
 *, 
u_t32_t
));

1723 (*
t_h_com
)

1724 
__P
((
DB
 *, (*)(DB *, cڡ 
DBT
 *, const DBT *)));

1725 (*
t_h_f

__P
((
DB
 *, 
u_t32_t
));

1726 (*
t_h_hash
)

1727 
__P
((
DB
 *, 
u_t32_t
 (*)(DB *, const *, u_int32_t)));

1728 (*
t_h_m

__P
((
DB
 *, 
u_t32_t
));

1729 (*
t_ld

__P
((
DB
 *, ));

1730 (*
t_msg

__P
((
DB
 *, (*)(cڡ 
DB_ENV
 *, const *)));

1731 (*
t_msgfe

__P
((
DB
 *, 
FILE
 *));

1732 (*
t_gesize

__P
((
DB
 *, 
u_t32_t
));

1733 (*
t_nic

__P
((
DB
 *, (*)(
DB_ENV
 *, )));

1734 (*
t_iܙy

__P
((
DB
 *, 
DB_CACHE_PRIORITY
));

1735 (*
t_q_exsize

__P
((
DB
 *, 
u_t32_t
));

1736 (*
t__dim

__P
((
DB
 *, ));

1737 (*
t__n

__P
((
DB
 *, 
u_t32_t
));

1738 (*
t__d

__P
((
DB
 *, ));

1739 (*
t__sour

__P
((
DB
 *, const *));

1740 (*


__P
((
DB
 *, 
DB_TXN
 *, *, 
u_t32_t
));

1741 (*
_t

__P
((
DB
 *, 
u_t32_t
));

1742 (*
sync

__P
((
DB
 *, 
u_t32_t
));

1743 (*
un

__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
 *, u_int32_t));

1744 (*
upgde

__P
((
DB
 *, cڡ *, 
u_t32_t
));

1745 (*
vify
)

1746 
__P
((
DB
 *, cڡ *, cڡ *, 
FILE
 *, 
u_t32_t
));

1750 (*
dump

__P
((
DB
 *, const *,

1752 (*
db_am_move

__P
((
DB
 *, 
DB_TXN
 *, const *, const *));

1753 (*
db_am_me

__P
((
DB
 *, 
DB_TXN
 *,

1761 (*
ed_g

__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

1762 (*
ed_o

__P
((
DB
 *, 
u_t32_t
));

1764 
	#DB_OK_BTREE
 0x01

	)

1765 
	#DB_OK_HASH
 0x02

	)

1766 
	#DB_OK_QUEUE
 0x04

	)

1767 
	#DB_OK_RECNO
 0x08

	)

1768 
u_t32_t
 
am_ok
;

1775 
erve_fid
;

1777 
	#DB_AM_CHKSUM
 0x00000001

	)

1778 
	#DB_AM_COMPENSATE
 0x00000002

	)

1779 
	#DB_AM_CREATED
 0x00000004

	)

1780 
	#DB_AM_CREATED_MSTR
 0x00000008

	)

1781 
	#DB_AM_DBM_ERROR
 0x00000010

	)

1782 
	#DB_AM_DELIMITER
 0x00000020

	)

1783 
	#DB_AM_DISCARD
 0x00000040

	)

1784 
	#DB_AM_DUP
 0x00000080

	)

1785 
	#DB_AM_DUPSORT
 0x00000100

	)

1786 
	#DB_AM_ENCRYPT
 0x00000200

	)

1787 
	#DB_AM_FIXEDLEN
 0x00000400

	)

1788 
	#DB_AM_INMEM
 0x00000800

	)

1789 
	#DB_AM_INORDER
 0x00001000

	)

1790 
	#DB_AM_IN_RENAME
 0x00002000

	)

1791 
	#DB_AM_NOT_DURABLE
 0x00004000

	)

1792 
	#DB_AM_OPEN_CALLED
 0x00008000

	)

1793 
	#DB_AM_PAD
 0x00010000

	)

1794 
	#DB_AM_PGDEF
 0x00020000

	)

1795 
	#DB_AM_RDONLY
 0x00040000

	)

1796 
	#DB_AM_READ_UNCOMMITTED
 0x00080000

	)

1797 
	#DB_AM_RECNUM
 0x00100000

	)

1798 
	#DB_AM_RECOVER
 0x00200000

	)

1799 
	#DB_AM_RENUMBER
 0x00400000

	)

1800 
	#DB_AM_REVSPLITOFF
 0x00800000

	)

1801 
	#DB_AM_SECONDARY
 0x01000000

	)

1802 
	#DB_AM_SNAPSHOT
 0x02000000

	)

1803 
	#DB_AM_SUBDB
 0x04000000

	)

1804 
	#DB_AM_SWAP
 0x08000000

	)

1805 
	#DB_AM_TXN
 0x10000000

	)

1806 
	#DB_AM_VERIFYING
 0x20000000

	)

1807 
u_t32_t
 
ig_ags
;

1808 
u_t32_t
 
ags
;

1815 
	#DB_MULTIPLE_INIT
(
por
, 
dbt
) \

1816 (
por
 = (
u_t8_t
 *)(
dbt
)->
da
 + \

1817 (
dbt
)->
un
 - (
u_t32_t
))

	)

1818 
	#DB_MULTIPLE_NEXT
(
por
, 
dbt
, 
tda
, 
tdn
) \

1820 i(*((
u_t32_t
 *)(
por
)) == (u_int32_t)-1) { \

1821 
tda
 = 
NULL
; \

1822 
por
 = 
NULL
; \

1825 
tda
 = (
u_t8_t
 *) \

1826 (
dbt
)->
da
 + *(
u_t32_t
 *)(
por
); \

1827 (
por
(
u_t32_t
 *)(pointer) - 1; \

1828 
tdn
 = *(
u_t32_t
 *)(
por
); \

1829 (
por
(
u_t32_t
 *)(pointer) - 1; \

1830 i(
tdn
 == 0 && \

1831 
tda
 =(
u_t8_t
 *)(
dbt
)->
da
) \

1832 
tda
 = 
NULL
; \

1833 } 0)

	)

1834 
	#DB_MULTIPLE_KEY_NEXT
(
por
, 
dbt
, 
tkey
, 
tkn
, 
tda
, 
tdn
) \

1836 i(*((
u_t32_t
 *)(
por
)) == (u_int32_t)-1) { \

1837 
tda
 = 
NULL
; \

1838 
tkey
 = 
NULL
; \

1839 
por
 = 
NULL
; \

1842 
tkey
 = (
u_t8_t
 *) \

1843 (
dbt
)->
da
 + *(
u_t32_t
 *)(
por
); \

1844 (
por
(
u_t32_t
 *)(pointer) - 1; \

1845 
tkn
 = *(
u_t32_t
 *)(
por
); \

1846 (
por
(
u_t32_t
 *)(pointer) - 1; \

1847 
tda
 = (
u_t8_t
 *) \

1848 (
dbt
)->
da
 + *(
u_t32_t
 *)(
por
); \

1849 (
por
(
u_t32_t
 *)(pointer) - 1; \

1850 
tdn
 = *(
u_t32_t
 *)(
por
); \

1851 (
por
(
u_t32_t
 *)(pointer) - 1; \

1852 } 0)

	)

1854 
	#DB_MULTIPLE_RECNO_NEXT
(
por
, 
dbt
, 
o
, 
tda
, 
tdn
) \

1856 i(*((
u_t32_t
 *)(
por
)) == (u_int32_t)0) { \

1857 
o
 = 0; \

1858 
tda
 = 
NULL
; \

1859 
por
 = 
NULL
; \

1862 
o
 = *(
u_t32_t
 *)(
por
); \

1863 (
por
(
u_t32_t
 *)(pointer) - 1; \

1864 
tda
 = (
u_t8_t
 *) \

1865 (
dbt
)->
da
 + *(
u_t32_t
 *)(
por
); \

1866 (
por
(
u_t32_t
 *)(pointer) - 1; \

1867 
tdn
 = *(
u_t32_t
 *)(
por
); \

1868 (
por
(
u_t32_t
 *)(pointer) - 1; \

1869 } 0)

	)

1874 
	s__dbc
 {

1875 
DB
 *
dbp
;

1876 
DB_TXN
 *
txn
;

1877 
DB_CACHE_PRIORITY
 
iܙy
;

1887 
DBC
 *
tqe_xt
;

1888 
DBC
 **
tqe_ev
;

1889 } 
lks
;

1902 
DBT
 *
rskey
;

1903 
DBT
 *
rkey
;

1904 
DBT
 *
rda
;

1906 
DBT
 
my_rskey
;

1907 
DBT
 
my_rkey
;

1908 
DBT
 
my_rda
;

1910 *
ef
;

1911 
DB_LOCKER
 *
lock
;

1912 
DBT
 
lock_dbt
;

1913 
DB_LOCK_ILOCK
 
lock
;

1914 
DB_LOCK
 
mylock
;

1916 
u_t
 
_id
;

1918 
DBTYPE
 
dbty
;

1920 
DBC_INTERNAL
 *

;

1923 (*
o

__P
((
DBC
 *));

1924 (*
cou

__P
((
DBC
 *, 
db_o_t
 *, 
u_t32_t
));

1925 (*
d

__P
((
DBC
 *, 
u_t32_t
));

1926 (*
dup

__P
((
DBC
 *, DBC **, 
u_t32_t
));

1927 (*
g

__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

1928 (*
g_iܙy

__P
((
DBC
 *, 
DB_CACHE_PRIORITY
 *));

1929 (*
pg

__P
((
DBC
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
));

1930 (*
put

__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

1931 (*
t_iܙy

__P
((
DBC
 *, 
DB_CACHE_PRIORITY
));

1935 (*
c_o

__P
((
DBC
 *));

1936 (*
c_cou

__P
((
DBC
 *, 
db_o_t
 *, 
u_t32_t
));

1937 (*
c_d

__P
((
DBC
 *, 
u_t32_t
));

1938 (*
c_dup

__P
((
DBC
 *, DBC **, 
u_t32_t
));

1939 (*
c_g

__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

1940 (*
c_pg

__P
((
DBC
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
));

1941 (*
c_put

__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

1944 (*
am_bulk

__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
));

1945 (*
am_o

__P
((
DBC
 *, 
db_pgno_t
, *));

1946 (*
am_d

__P
((
DBC
 *));

1947 (*
am_deroy

__P
((
DBC
 *));

1948 (*
am_g

__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

1949 (*
am_put

__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

1950 (*
am_wrock

__P
((
DBC
 *));

1961 
	#DBC_ACTIVE
 0x0001

	)

1962 
	#DBC_DONTLOCK
 0x0002

	)

1963 
	#DBC_MULTIPLE
 0x0004

	)

1964 
	#DBC_MULTIPLE_KEY
 0x0008

	)

1965 
	#DBC_OPD
 0x0010

	)

1966 
	#DBC_OWN_LID
 0x0020

	)

1967 
	#DBC_READ_COMMITTED
 0x0040

	)

1968 
	#DBC_READ_UNCOMMITTED
 0x0080

	)

1969 
	#DBC_RECOVER
 0x0100

	)

1970 
	#DBC_RMW
 0x0200

	)

1971 
	#DBC_TRANSIENT
 0x0400

	)

1972 
	#DBC_WRITECURSOR
 0x0800

	)

1973 
	#DBC_WRITER
 0x1000

	)

1974 
u_t32_t
 
ags
;

1978 
	s__key_nge
 {

1979 
ss
;

1980 
equ
;

1981 
g
;

1985 
	s__db_bt_
 {

1986 
u_t32_t
 
bt_magic
;

1987 
u_t32_t
 
bt_vsi
;

1988 
u_t32_t
 
bt_maags
;

1989 
u_t32_t
 
bt_nkeys
;

1990 
u_t32_t
 
bt_nda
;

1991 
u_t32_t
 
bt_get
;

1992 
u_t32_t
 
bt_gesize
;

1993 
u_t32_t
 
bt_mkey
;

1994 
u_t32_t
 
bt__n
;

1995 
u_t32_t
 
bt__d
;

1996 
u_t32_t
 
bt_vs
;

1997 
u_t32_t
 
bt_t_pg
;

1998 
u_t32_t
 
bt_af_pg
;

1999 
u_t32_t
 
bt_dup_pg
;

2000 
u_t32_t
 
bt_ov_pg
;

2001 
u_t32_t
 
bt_emy_pg
;

2002 
u_t32_t
 
bt_
;

2003 
u_t32_t
 
bt_t_pg
;

2004 
u_t32_t
 
bt_af_pg
;

2005 
u_t32_t
 
bt_dup_pg
;

2006 
u_t32_t
 
bt_ov_pg
;

2009 
	s__db_com
 {

2011 
u_t32_t
 
com_f͔
;

2012 
db_timeout_t
 
com_timeout
;

2013 
u_t32_t
 
com_ges
;

2015 
u_t32_t
 
com_ges_
;

2016 
u_t32_t
 
com_ges_exame
;

2017 
u_t32_t
 
com_vs
;

2018 
u_t32_t
 
com_ddlock
;

2019 
db_pgno_t
 
com_ges_und
;

2021 
db_pgno_t
 
com_un
;

2025 
	s__db_h_
 {

2026 
u_t32_t
 
hash_magic
;

2027 
u_t32_t
 
hash_vsi
;

2028 
u_t32_t
 
hash_maags
;

2029 
u_t32_t
 
hash_nkeys
;

2030 
u_t32_t
 
hash_nda
;

2031 
u_t32_t
 
hash_get
;

2032 
u_t32_t
 
hash_gesize
;

2033 
u_t32_t
 
hash_f
;

2034 
u_t32_t
 
hash_bucks
;

2035 
u_t32_t
 
hash_
;

2036 
u_t32_t
 
hash_b
;

2037 
u_t32_t
 
hash_bigges
;

2038 
u_t32_t
 
hash_big_b
;

2039 
u_t32_t
 
hash_ovows
;

2040 
u_t32_t
 
hash_ov_
;

2041 
u_t32_t
 
hash_dup
;

2042 
u_t32_t
 
hash_dup_
;

2046 
	s__db_qam_
 {

2047 
u_t32_t
 
qs_magic
;

2048 
u_t32_t
 
qs_vsi
;

2049 
u_t32_t
 
qs_maags
;

2050 
u_t32_t
 
qs_nkeys
;

2051 
u_t32_t
 
qs_nda
;

2052 
u_t32_t
 
qs_gesize
;

2053 
u_t32_t
 
qs_exsize
;

2054 
u_t32_t
 
qs_ges
;

2055 
u_t32_t
 
qs__n
;

2056 
u_t32_t
 
qs__d
;

2057 
u_t32_t
 
qs_pg
;

2058 
u_t32_t
 
qs_f_o
;

2059 
u_t32_t
 
qs_cur_o
;

2065 
	#DB_REGION_MAGIC
 0x120897

	)

2068 
	s__db_v
 {

2073 (*
db_r

__P
((cڡ 
DB_ENV
 *, const *, const *));

2074 
FILE
 *
db_rfe
;

2075 cڡ *
db_fx
;

2077 
FILE
 *
db_msgfe
;

2079 (*
db_msg

__P
((cڡ 
DB_ENV
 *, const *));

2082 (*
db_edback

__P
((
DB_ENV
 *, , ));

2083 (*
db_nic

__P
((
DB_ENV
 *, ));

2084 (*
db_evt_func

__P
((
DB_ENV
 *, 
u_t32_t
, *));

2087 *(*
db_mloc

__P
((
size_t
));

2088 *(*
db_loc

__P
((*, 
size_t
));

2089 (*
db_

__P
((*));

2092 
	#DB_USERCOPY_GETDATA
 0x0001

	)

2093 
	#DB_USERCOPY_SETDATA
 0x0002

	)

2094 (*
dbt_urcy
)

2095 
__P
((
DBT
 *, 
u_t32_t
, *, u_int32_t, u_int32_t));

2102 
	#DB_VERB_DEADLOCK
 0x0001

	)

2103 
	#DB_VERB_FILEOPS
 0x0002

	)

2104 
	#DB_VERB_FILEOPS_ALL
 0x0004

	)

2105 
	#DB_VERB_RECOVERY
 0x0008

	)

2106 
	#DB_VERB_REGISTER
 0x0010

	)

2107 
	#DB_VERB_REPLICATION
 0x0020

	)

2108 
	#DB_VERB_WAITSFOR
 0x0040

	)

2109 
u_t32_t
 
vbo
;

2111 *
p_ive
;

2113 (*
p_dich
)

2114 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
));

2117 
u_t32_t
 
mux_ign
;

2118 
u_t32_t
 
mux_t
;

2119 
u_t32_t
 
mux_c
;

2120 
u_t32_t
 
mux_s_s
;

2123 
loc_id
;

2124 
u_t32_t
 
ags
;

2125 } *
mux_iq
;

2126 
u_t
 
mux_iq_xt
;

2127 
u_t
 
mux_iq_max
;

2130 
u_t8_t
 *
lk_cis
;

2131 
lk_modes
;

2132 
u_t32_t
 
lk_max
;

2133 
u_t32_t
 
lk_max_locks
;

2134 
u_t32_t
 
lk_max_objes
;

2135 
u_t32_t
 
lk_de
;

2136 
db_timeout_t
 
lk_timeout
;

2139 
u_t32_t
 
lg_bsize
;

2140 
u_t32_t
 
lg_size
;

2141 
u_t32_t
 
lg_gimax
;

2142 
lg_femode
;

2145 
u_t
 
mp_nche
;

2146 
u_t32_t
 
mp_gbys
;

2147 
u_t32_t
 
mp_bys
;

2148 
u_t32_t
 
mp_max_gbys
;

2149 
u_t32_t
 
mp_max_bys
;

2150 
size_t
 
mp_mmsize
;

2151 
mp_maxݒfd
;

2152 
mp_maxwre
;

2153 
db_timeout_t
 
mp_maxwre_p
;

2156 
u_t32_t
 
tx_max
;

2157 
time_t
 
tx_timeamp
;

2158 
db_timeout_t
 
tx_timeout
;

2161 
u_t32_t
 
thr_nbuck
;

2162 
u_t32_t
 
thr_max
;

2163 *
thr_hashb
;

2168 
db_mux_t
 
mtx_v
;

2170 
pid_t
 
pid_che
;

2173 *
db_home
;

2174 *
db_log_d
;

2175 *
db_tmp_d
;

2177 **
db_da_d
;

2178 
da_t
;

2179 
da_xt
;

2181 
db_mode
;

2182 
d_mode
;

2183 *
v_ef
;

2184 
u_t32_t
 
ݒ_ags
;

2186 *
gfo
;

2187 
DB_FH
 *
lockfhp
;

2189 
DB_FH
 *
giry
;

2190 
u_t32_t
 
giry_off
;

2197 (*
thad_id

__P
((
DB_ENV
 *, 
pid_t
 *, 
db_thadid_t
 *));

2199 (*
is_ive
)

2200 
__P
((
DB_ENV
 *, 
pid_t
, 
db_thadid_t
, 
u_t32_t
));

2202 *(*
thad_id_rg
)

2203 
__P
((
DB_ENV
 *, 
pid_t
, 
db_thadid_t
, *));

2205 (**
cov_db
)

2206 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

2207 
size_t
 
cov_db_size
;

2210 *
_hd
;

2211 
u_t
 
_id
;

2213 
db_f
;

2215 
shm_key
;

2225 
	s__fdli
 {

2226 
__fh_t
 *
tqh_f
;

2227 
__fh_t
 **
tqh_ϡ
;

2228 } 
fdli
;

2238 
db_mux_t
 
mtx_dbli
;

2239 
	s__dbli
 {

2240 
__db
 *
tqh_f
;

2241 
__db
 **
tqh_ϡ
;

2242 } 
dbli
;

2253 
__db_v
 *
tqe_xt
;

2254 
__db_v
 **
tqe_ev
;

2255 } 
lks
;

2256 
	s__xa_txn
 {

2257 
__db_txn
 *
tqh_f
;

2258 
__db_txn
 **
tqh_ϡ
;

2259 } 
xa_txn
;

2260 
xa_rmid
;

2262 *
sswd
;

2263 
size_t
 
sswd_n
;

2264 *
yo_hd
;

2265 
db_mux_t
 
mtx_mt
;

2266 
mti
;

2267 
u_lg
 *
mt
;

2270 *
i1_
;

2271 *
i2_
;

2273 
DB_LOCKTAB
 *
lk_hd
;

2274 
DB_LOG
 *
lg_hd
;

2275 
DB_MPOOL
 *
mp_hd
;

2276 
DB_MUTEXMGR
 *
mux_hd
;

2277 
DB_REP
 *
p_hd
;

2278 
DB_TXNMGR
 *
tx_hd
;

2281 (*
cdsgroup_beg

__P
((
DB_ENV
 *, 
DB_TXN
 **));

2282 (*
o

__P
((
DB_ENV
 *, 
u_t32_t
));

2283 (*
dbmove

__P
((
DB_ENV
 *,

2284 
DB_TXN
 *, cڡ *, cڡ *, 
u_t32_t
));

2285 (*
dbme

__P
((
DB_ENV
 *,

2286 
DB_TXN
 *, cڡ *, cڡ *, cڡ *, 
u_t32_t
));

2287 (*
r

__P
((cڡ 
DB_ENV
 *, , const *, ...));

2288 (*
rx

__P
((cڡ 
DB_ENV
 *, const *, ...));

2289 (*
chk

__P
((
DB_ENV
 *, 
u_t32_t
));

2290 (*
feid_t

__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

2291 (*
g_chesize

__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *, *));

2292 (*
g_che_max

__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *));

2293 (*
g_da_ds

__P
((
DB_ENV
 *, const ***));

2294 (*
g_y_ags

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2295 (*
g_rfe

__P
((
DB_ENV
 *, 
FILE
 **));

2296 (*
g_fx

__P
((
DB_ENV
 *, const **));

2297 (*
g_ags

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2298 (*
g_home

__P
((
DB_ENV
 *, const **));

2299 (*
g_lg_bsize

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2300 (*
g_lg_d

__P
((
DB_ENV
 *, const **));

2301 (*
g_lg_femode

__P
((
DB_ENV
 *, *));

2302 (*
g_lg_max

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2303 (*
g_lg_gimax

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2304 (*
g_lk_cis

__P
((
DB_ENV
 *, cڡ 
u_t8_t
 **, *));

2305 (*
g_lk_de

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2306 (*
g_lk_max_locks

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2307 (*
g_lk_max_locks

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2308 (*
g_lk_max_objes

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2309 (*
g_mp_max_ݒfd

__P
((
DB_ENV
 *, *));

2310 (*
g_mp_max_wre

__P
((
DB_ENV
 *, *, 
db_timeout_t
 *));

2311 (*
g_mp_mmsize

__P
((
DB_ENV
 *, 
size_t
 *));

2312 (*
g_msgfe

__P
((
DB_ENV
 *, 
FILE
 **));

2313 (*
g_ݒ_ags

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2314 (*
g_shm_key

__P
((
DB_ENV
 *, *));

2315 (*
g_thad_cou

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2316 (*
g_timeout

__P
((
DB_ENV
 *, 
db_timeout_t
 *, 
u_t32_t
));

2317 (*
g_tmp_d

__P
((
DB_ENV
 *, const **));

2318 (*
g_tx_max

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2319 (*
g_tx_timeamp

__P
((
DB_ENV
 *, 
time_t
 *));

2320 (*
g_vbo

__P
((
DB_ENV
 *, 
u_t32_t
, *));

2321 (*
is_bigdn

__P
(());

2322 (*
lock_de

__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t, *));

2323 (*
lock_g

__P
((
DB_ENV
 *,

2324 
u_t32_t
, u_t32_t, cڡ 
DBT
 *, 
db_lockmode_t
, 
DB_LOCK
 *));

2325 (*
lock_id

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2326 (*
lock_id_

__P
((
DB_ENV
 *, 
u_t32_t
));

2327 (*
lock_put

__P
((
DB_ENV
 *, 
DB_LOCK
 *));

2328 (*
lock_

__P
((
DB_ENV
 *, 
DB_LOCK_STAT
 **, 
u_t32_t
));

2329 (*
lock__t

__P
((
DB_ENV
 *, 
u_t32_t
));

2330 (*
lock_vec

__P
((
DB_ENV
 *,

2331 
u_t32_t
, u_t32_t, 
DB_LOCKREQ
 *, , DB_LOCKREQ **));

2332 (*
log_chive

__P
((
DB_ENV
 *, **[], 
u_t32_t
));

2333 (*
log_curs

__P
((
DB_ENV
 *, 
DB_LOGC
 **, 
u_t32_t
));

2334 (*
log_fe

__P
((
DB_ENV
 *, cڡ 
DB_LSN
 *, *, 
size_t
));

2335 (*
log_ush

__P
((
DB_ENV
 *, cڡ 
DB_LSN
 *));

2336 (*
log_tf

__P
((
DB_ENV
 *, 
DB_TXN
 *, const *, ...));

2337 (*
log_put

__P
((
DB_ENV
 *, 
DB_LSN
 *, cڡ 
DBT
 *, 
u_t32_t
));

2338 (*
log_

__P
((
DB_ENV
 *, 
DB_LOG_STAT
 **, 
u_t32_t
));

2339 (*
log__t

__P
((
DB_ENV
 *, 
u_t32_t
));

2340 (*
l_t

__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

2341 (*
memp_f

__P
((
DB_ENV
 *, 
DB_MPOOLFILE
 **, 
u_t32_t
));

2342 (*
memp_gi

__P
((
DB_ENV
 *, , (*)(DB_ENV *,

2343 
db_pgno_t
, *, 
DBT
 *), (*)(
DB_ENV
 *,

2344 
db_pgno_t
, *, 
DBT
 *)));

2345 (*
memp_

__P
((
DB_ENV
 *,

2346 
DB_MPOOL_STAT
 **, 
DB_MPOOL_FSTAT
 ***, 
u_t32_t
));

2347 (*
memp__t

__P
((
DB_ENV
 *, 
u_t32_t
));

2348 (*
memp_sync

__P
((
DB_ENV
 *, 
DB_LSN
 *));

2349 (*
memp_ick

__P
((
DB_ENV
 *, , *));

2350 (*
mux_loc

__P
((
DB_ENV
 *, 
u_t32_t
, 
db_mux_t
 *));

2351 (*
mux_

__P
((
DB_ENV
 *, 
db_mux_t
));

2352 (*
mux_g_ign

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2353 (*
mux_g_emt

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2354 (*
mux_g_max

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2355 (*
mux_g_s_s

__P
((
DB_ENV
 *, 
u_t32_t
 *));

2356 (*
mux_lock

__P
((
DB_ENV
 *, 
db_mux_t
));

2357 (*
mux_t_ign

__P
((
DB_ENV
 *, 
u_t32_t
));

2358 (*
mux_t_emt

__P
((
DB_ENV
 *, 
u_t32_t
));

2359 (*
mux_t_max

__P
((
DB_ENV
 *, 
u_t32_t
));

2360 (*
mux_t_s_s

__P
((
DB_ENV
 *, 
u_t32_t
));

2361 (*
mux_

__P
((
DB_ENV
 *, 
DB_MUTEX_STAT
 **, 
u_t32_t
));

2362 (*
mux__t

__P
((
DB_ENV
 *, 
u_t32_t
));

2363 (*
mux_uock

__P
((
DB_ENV
 *, 
db_mux_t
));

2364 (*
ݒ

__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, ));

2365 (*
move

__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

2366 (*
p_e

__P
((
DB_ENV
 *, , , 
u_t32_t
));

2367 (*
p_ush

__P
((
DB_ENV
 *));

2368 (*
p_g_cfig

__P
((
DB_ENV
 *, 
u_t32_t
, *));

2369 (*
p_g_lim

__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *));

2370 (*
p_g_nses

__P
((
DB_ENV
 *, *));

2371 (*
p_g_iܙy

__P
((
DB_ENV
 *, *));

2372 (*
p_g_timeout

__P
((
DB_ENV
 *, , 
u_t32_t
 *));

2373 (*
p_oss_mesge
)

2374 
__P
((
DB_ENV
 *, 
DBT
 *, DBT *, , 
DB_LSN
 *));

2375 (*
p_t_cfig

__P
((
DB_ENV
 *, 
u_t32_t
, ));

2376 (*
p_t_a

__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

2377 (*
p_t_lim

__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

2378 (*
p_t_nses

__P
((
DB_ENV
 *, ));

2379 (*
p_t_iܙy

__P
((
DB_ENV
 *, ));

2380 (*
p_t_timeout

__P
((
DB_ENV
 *, , 
db_timeout_t
));

2381 (*
p_t_t

__P
((
DB_ENV
 *, , (*)(DB_ENV *,

2382 cڡ 
DBT
 *, cڡ DBT *, cڡ 
DB_LSN
 *, , 
u_t32_t
)));

2383 (*
p_t

__P
((
DB_ENV
 *, 
DBT
 *, 
u_t32_t
));

2384 (*
p_

__P
((
DB_ENV
 *, 
DB_REP_STAT
 **, 
u_t32_t
));

2385 (*
p__t

__P
((
DB_ENV
 *, 
u_t32_t
));

2386 (*
p_sync

__P
((
DB_ENV
 *, 
u_t32_t
));

2387 (*
pmgr_add_me_se

__P
((
DB_ENV
 *, cڡ *, 
u_t
,

2388 *, 
u_t32_t
));

2389 (*
pmgr_g_ack_picy

__P
((
DB_ENV
 *, *));

2390 (*
pmgr_t_ack_picy

__P
((
DB_ENV
 *, ));

2391 (*
pmgr_t_lol_se

__P
((
DB_ENV
 *, cڡ *, 
u_t
,

2392 
u_t32_t
));

2393 (*
pmgr_se_li

__P
((
DB_ENV
 *, 
u_t
 *,

2394 
DB_REPMGR_SITE
 **));

2395 (*
pmgr_t

__P
((
DB_ENV
 *, , 
u_t32_t
));

2396 (*
pmgr_

__P
((
DB_ENV
 *, 
DB_REPMGR_STAT
 **, 
u_t32_t
));

2397 (*
pmgr__t

__P
((
DB_ENV
 *, 
u_t32_t
));

2398 (*
t_loc

__P
((
DB_ENV
 *, *(*)(
size_t
),

2399 *(*)(*, 
size_t
), (*)(*)));

2400 (*
t_p_dich
)

2401 
__P
((
DB_ENV
 *, (*)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
)));

2402 (*
t_chesize

__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t, ));

2403 (*
t_che_max

__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

2404 (*
t_da_d

__P
((
DB_ENV
 *, const *));

2405 (*
t_y

__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

2406 (*
t_r

__P
((
DB_ENV
 *,

2407 (*)(cڡ 
DB_ENV
 *, const *, const *)));

2408 (*
t_rfe

__P
((
DB_ENV
 *, 
FILE
 *));

2409 (*
t_fx

__P
((
DB_ENV
 *, const *));

2410 (*
t_evt_nify
)

2411 
__P
((
DB_ENV
 *, (*)(DB_ENV *, 
u_t32_t
, *)));

2412 (*
t_edback

__P
((
DB_ENV
 *, (*)(DB_ENV *, , )));

2413 (*
t_ags

__P
((
DB_ENV
 *, 
u_t32_t
, ));

2414 (*
t_rmed_d

__P
((
DB_ENV
 *, , 
u_t32_t
));

2415 (*
t_ilive

__P
((
DB_ENV
 *,

2416 (*)(
DB_ENV
 *, 
pid_t
, 
db_thadid_t
, 
u_t32_t
)));

2417 (*
t_lg_bsize

__P
((
DB_ENV
 *, 
u_t32_t
));

2418 (*
t_lg_d

__P
((
DB_ENV
 *, const *));

2419 (*
t_lg_femode

__P
((
DB_ENV
 *, ));

2420 (*
t_lg_max

__P
((
DB_ENV
 *, 
u_t32_t
));

2421 (*
t_lg_gimax

__P
((
DB_ENV
 *, 
u_t32_t
));

2422 (*
t_lk_cis

__P
((
DB_ENV
 *, 
u_t8_t
 *, ));

2423 (*
t_lk_de

__P
((
DB_ENV
 *, 
u_t32_t
));

2424 (*
t_lk_max_locks

__P
((
DB_ENV
 *, 
u_t32_t
));

2425 (*
t_lk_max_locks

__P
((
DB_ENV
 *, 
u_t32_t
));

2426 (*
t_lk_max_objes

__P
((
DB_ENV
 *, 
u_t32_t
));

2427 (*
t_mp_max_ݒfd

__P
((
DB_ENV
 *, ));

2428 (*
t_mp_max_wre

__P
((
DB_ENV
 *, , 
db_timeout_t
));

2429 (*
t_mp_mmsize

__P
((
DB_ENV
 *, 
size_t
));

2430 (*
t_msg
)

2431 
__P
((
DB_ENV
 *, (*)(const DB_ENV *, const *)));

2432 (*
t_msgfe

__P
((
DB_ENV
 *, 
FILE
 *));

2433 (*
t_nic

__P
((
DB_ENV
 *, (*)(DB_ENV *, )));

2434 (*
t_p_que

__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

2435 (*
t_c_rv
)

2436 
__P
((
DB_ENV
 *, *, cڡ *, , , 
u_t32_t
));

2437 (*
t_shm_key

__P
((
DB_ENV
 *, ));

2438 (*
t_thad_cou

__P
((
DB_ENV
 *, 
u_t32_t
));

2439 (*
t_thad_id

__P
((
DB_ENV
 *,

2440 (*)(
DB_ENV
 *, 
pid_t
 *, 
db_thadid_t
 *)));

2441 (*
t_thad_id_rg

__P
((
DB_ENV
 *,

2442 *(*)(
DB_ENV
 *, 
pid_t
, 
db_thadid_t
, *)));

2443 (*
t_timeout

__P
((
DB_ENV
 *, 
db_timeout_t
, 
u_t32_t
));

2444 (*
t_tmp_d

__P
((
DB_ENV
 *, const *));

2445 (*
t_tx_max

__P
((
DB_ENV
 *, 
u_t32_t
));

2446 (*
t_tx_timeamp

__P
((
DB_ENV
 *, 
time_t
 *));

2447 (*
t_vbo

__P
((
DB_ENV
 *, 
u_t32_t
, ));

2448 (*
_t

__P
((
DB_ENV
 *, 
u_t32_t
));

2449 (*
txn_beg

__P
((
DB_ENV
 *, 
DB_TXN
 *, DB_TXN **, 
u_t32_t
));

2450 (*
txn_checkpot

__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t, u_int32_t));

2451 (*
txn_cov
)

2452 
__P
((
DB_ENV
 *, 
DB_PREPLIST
 *, , *, 
u_t32_t
));

2453 (*
txn_

__P
((
DB_ENV
 *, 
DB_TXN_STAT
 **, 
u_t32_t
));

2454 (*
txn__t

__P
((
DB_ENV
 *, 
u_t32_t
));

2458 (*
dbt

__P
((
DBT
 *,

2462 
	#DB_TEST_ELECTINIT
 1

	)

2463 
	#DB_TEST_ELECTVOTE1
 2

	)

2464 
	#DB_TEST_POSTDESTROY
 3

	)

2465 
	#DB_TEST_POSTLOG
 4

	)

2466 
	#DB_TEST_POSTLOGMETA
 5

	)

2467 
	#DB_TEST_POSTOPEN
 6

	)

2468 
	#DB_TEST_POSTSYNC
 7

	)

2469 
	#DB_TEST_PREDESTROY
 8

	)

2470 
	#DB_TEST_PREOPEN
 9

	)

2471 
	#DB_TEST_RECYCLE
 10

	)

2472 
	#DB_TEST_SUBDB_LOCKS
 11

	)

2473 
_abt
;

2474 
_check
;

2475 
_cy
;

2477 
	#DB_ENV_AUTO_COMMIT
 0x00000001

	)

2478 
	#DB_ENV_CDB
 0x00000002

	)

2479 
	#DB_ENV_CDB_ALLDB
 0x00000004

	)

2480 
	#DB_ENV_DBLOCAL
 0x00000008

	)

2481 
	#DB_ENV_DIRECT_DB
 0x00000010

	)

2482 
	#DB_ENV_DIRECT_LOG
 0x00000020

	)

2483 
	#DB_ENV_DSYNC_DB
 0x00000040

	)

2484 
	#DB_ENV_DSYNC_LOG
 0x00000080

	)

2485 
	#DB_ENV_LOCKDOWN
 0x00000100

	)

2486 
	#DB_ENV_LOG_AUTOREMOVE
 0x00000200

	)

2487 
	#DB_ENV_LOG_INMEMORY
 0x00000400

	)

2488 
	#DB_ENV_MULTIVERSION
 0x00000800

	)

2489 
	#DB_ENV_NOLOCKING
 0x00001000

	)

2490 
	#DB_ENV_NOMMAP
 0x00002000

	)

2491 
	#DB_ENV_NOPANIC
 0x00004000

	)

2492 
	#DB_ENV_NO_OUTPUT_SET
 0x00008000

	)

2493 
	#DB_ENV_OPEN_CALLED
 0x00010000

	)

2494 
	#DB_ENV_OVERWRITE
 0x00020000

	)

2495 
	#DB_ENV_PRIVATE
 0x00040000

	)

2496 
	#DB_ENV_RECOVER_FATAL
 0x00080000

	)

2497 
	#DB_ENV_REF_COUNTED
 0x00100000

	)

2498 
	#DB_ENV_REGION_INIT
 0x00200000

	)

2499 
	#DB_ENV_RPCCLIENT
 0x00400000

	)

2500 
	#DB_ENV_RPCCLIENT_GIVEN
 0x00800000

	)

2501 
	#DB_ENV_SYSTEM_MEM
 0x01000000

	)

2502 
	#DB_ENV_THREAD
 0x02000000

	)

2503 
	#DB_ENV_TIME_NOTGRANTED
 0x04000000

	)

2504 
	#DB_ENV_TXN_NOSYNC
 0x08000000

	)

2505 
	#DB_ENV_TXN_NOWAIT
 0x10000000

	)

2506 
	#DB_ENV_TXN_SNAPSHOT
 0x20000000

	)

2507 
	#DB_ENV_TXN_WRITE_NOSYNC
 0x40000000

	)

2508 
	#DB_ENV_YIELDCPU
 0x80000000

	)

2509 
u_t32_t
 
ags
;

2512 #ide
DB_DBM_HSEARCH


2513 
	#DB_DBM_HSEARCH
 0

	)

2515 #i
DB_DBM_HSEARCH
 != 0

2519 
__db
 
	tDBM
;

2521 
	#DBM_INSERT
 0

	)

2522 
	#DBM_REPLACE
 1

	)

2528 
	#DBM_SUFFIX
 ".db"

	)

2530 #i
defed
(
_XPG4_2
)

2532 *
dr
;

2533 
size_t
 
dsize
;

2534 } 
	tdum
;

2537 *
dr
;

2538 
dsize
;

2539 } 
	tdum
;

2546 
	#dbm_
(
a

__db_ndbm_
@
DB_VERSION_UNIQUE_NAME
@)

	)

2547 
	#dbm_o
(
a

__db_ndbm_o
@
DB_VERSION_UNIQUE_NAME
@)

	)

2548 
	#dbm_de
(
a
, 
b

__db_ndbm_de
@
DB_VERSION_UNIQUE_NAME
@, b)

	)

2549 
	#dbm_do
(
a

__db_ndbm_do
@
DB_VERSION_UNIQUE_NAME
@)

	)

2550 
	#dbm_r
(
a

__db_ndbm_r
@
DB_VERSION_UNIQUE_NAME
@)

	)

2551 
	#dbm_tch
(
a
, 
b

__db_ndbm_tch
@
DB_VERSION_UNIQUE_NAME
@, b)

	)

2552 
	#dbm_fkey
(
a

__db_ndbm_fkey
@
DB_VERSION_UNIQUE_NAME
@)

	)

2553 
	#dbm_xtkey
(
a

__db_ndbm_xtkey
@
DB_VERSION_UNIQUE_NAME
@)

	)

2554 
	#dbm_ݒ
(
a
, 
b
, 
c

__db_ndbm_ݒ
@
DB_VERSION_UNIQUE_NAME
@, b, c)

	)

2555 
	#dbm_go
(
a

__db_ndbm_go
@
DB_VERSION_UNIQUE_NAME
@)

	)

2556 
	#dbm_rdly
(
a

__db_ndbm_rdly
@
DB_VERSION_UNIQUE_NAME
@)

	)

2557 
	#dbm_e
(
a
, 
b
, 
c
, 
d
) \

2558 
__db_ndbm_e
@
DB_VERSION_UNIQUE_NAME
@(
a
, 
b
, 
c
, 
d
)

	)

2567 
	#dbm
(
a

__db_dbm_
@
DB_VERSION_UNIQUE_NAME
@)

	)

2568 
	#dbmo
 
__db_dbm_o
@
DB_VERSION_UNIQUE_NAME
@

	)

2569 #i!
defed
(
__lulus
)

2570 
	#de
(
a

__db_dbm_de
@
DB_VERSION_UNIQUE_NAME
@)

	)

2572 
	#tch
(
a

__db_dbm_tch
@
DB_VERSION_UNIQUE_NAME
@)

	)

2573 
	#fkey
 
__db_dbm_fkey
@
DB_VERSION_UNIQUE_NAME
@

	)

2574 
	#xtkey
(
a

__db_dbm_xtkey
@
DB_VERSION_UNIQUE_NAME
@)

	)

2575 
	#e
(
a
, 
b

__db_dbm_e
@
DB_VERSION_UNIQUE_NAME
@, b)

	)

2581 
FIND
, 
ENTER


2582 } 
	tACTION
;

2584 
	sy
 {

2585 *
key
;

2586 *
da
;

2587 } 
	tENTRY
;

2589 
	#h
(
a

__db_h
@
DB_VERSION_UNIQUE_NAME
@)

	)

2590 
	#hderoy
 
__db_hderoy
@
DB_VERSION_UNIQUE_NAME
@

	)

2591 
	#hch
(
a
, 
b

__db_hch
@
DB_VERSION_UNIQUE_NAME
@, b)

	)

2595 #i
defed
(
__lulus
)

2599 @
fm_foٔ
@

	@../dbinc/db_185.in

37 #ide
_DB_185_H_


38 
	#_DB_185_H_


	)

40 
	~<sys/tys.h
>

42 
	~<lims.h
>

44 #i
defed
(
__lulus
)

53 #unde
__P


54 #i
defed
(
__STDC__
|| defed(
__lulus
)

55 
	#__P
(
os
o

	)

57 cڡ

	)

58 
	#__P
(
os
(

	)

61 
	#RET_ERROR
 -1

	)

62 
	#RET_SUCCESS
 0

	)

63 
	#RET_SPECIAL
 1

	)

65 #idef 
__BIT_TYPES_DEFINED__


66 
	#__BIT_TYPES_DEFINED__


	)

67 @
u_t8_de
@

68 @
t16_de
@

69 @
u_t16_de
@

70 @
t32_de
@

71 @
u_t32_de
@

78 #ifdef 
__sgi


79 
	#pgno_t
 
db_pgno_t


	)

82 
	#MAX_PAGE_NUMBER
 0xfffffff

	)

83 
u_t32_t
 
	tpgno_t
;

84 
	#MAX_PAGE_OFFSET
 65535

	)

85 
u_t16_t
 
	tdx_t
;

86 
	#MAX_REC_NUMBER
 0xfffffff

	)

87 
u_t32_t
 
	to_t
;

91 *
da
;

92 
size_t
 
size
;

93 } 
	tDBT
;

96 
	#R_CURSOR
 1

	)

97 
	#__R_UNUSED
 2

	)

98 
	#R_FIRST
 3

	)

99 
	#R_IAFTER
 4

	)

100 
	#R_IBEFORE
 5

	)

101 
	#R_LAST
 6

	)

102 
	#R_NEXT
 7

	)

103 
	#R_NOOVERWRITE
 8

	)

104 
	#R_PREV
 9

	)

105 
	#R_SETCURSOR
 10

	)

106 
	#R_RECNOSYNC
 11

	)

108 um { 
DB_BTREE
, 
DB_HASH
, 
DB_RECNO
 } 
	tDBTYPE
;

111 
	s__db
 {

112 
DBTYPE
 
ty
;

113 (*
o

__P
((
__db
 *));

114 (*
d

__P
((cڡ 
__db
 *, cڡ 
DBT
 *, 
u_t
));

115 (*
g

__P
((cڡ 
__db
 *, cڡ 
DBT
 *, DBT *, 
u_t
));

116 (*
put

__P
((cڡ 
__db
 *, 
DBT
 *, cڡ DBT *, 
u_t
));

117 (*
q

__P
((cڡ 
__db
 *, 
DBT
 *, DBT *, 
u_t
));

118 (*
sync

__P
((cڡ 
__db
 *, 
u_t
));

119 *

;

120 (*
fd

__P
((cڡ 
__db
 *));

121 } 
	tDB
;

123 
	#BTREEMAGIC
 0x053162

	)

124 
	#BTREEVERSION
 3

	)

128 
	#R_DUP
 0x01

	)

129 
u_t32_t
 
ags
;

130 
u_t32_t
 
chesize
;

131 
u_t32_t
 
maxkeyge
;

132 
u_t32_t
 
mkeyge
;

133 
u_t32_t
 
psize
;

134 (*
com
)

135 
__P
((cڡ 
DBT
 *, const DBT *));

136 
size_t
 (*
efix
)

137 
__P
((cڡ 
DBT
 *, const DBT *));

138 
ld
;

139 } 
	tBTREEINFO
;

141 
	#HASHMAGIC
 0x061561

	)

142 
	#HASHVERSION
 2

	)

146 
u_t32_t
 
bsize
;

147 
u_t32_t
 
f
;

148 
u_t32_t
 
m
;

149 
u_t32_t
 
chesize
;

150 
u_t32_t


151 (*
hash

__P
((cڡ *, 
size_t
));

152 
ld
;

153 } 
	tHASHINFO
;

157 
	#R_FIXEDLEN
 0x01

	)

158 
	#R_NOKEY
 0x02

	)

159 
	#R_SNAPSHOT
 0x04

	)

160 
u_t32_t
 
ags
;

161 
u_t32_t
 
chesize
;

162 
u_t32_t
 
psize
;

163 
ld
;

164 
size_t
 

;

165 
u_ch
 
bv
;

166 *
bame
;

167 } 
	tRECNOINFO
;

170 
	#dbݒ
 
__db185_ݒ
@
DB_VERSION_UNIQUE_NAME
@

	)

172 #i
defed
(
__lulus
)

	@../dbinc/db_am.h

8 #ide
_DB_AM_H_


9 
	#_DB_AM_H_


	)

11 #i
defed
(
__lulus
)

19 
	#IS_ENV_AUTO_COMMIT
(
dbv
, 
txn
, 
ags
) \

20 (
	`LF_ISSET
(
DB_AUTO_COMMIT
) || \

21 ((
txn
=
NULL
 && 
	`F_ISSET
((
dbv
), 
DB_ENV_AUTO_COMMIT
) && \

22 !
	`LF_ISSET
(
DB_NO_AUTO_COMMIT
)))

	)

28 
	#IS_DB_AUTO_COMMIT
(
dbp
, 
txn
) \

29 ((
txn
=
NULL
 && 
	`F_ISSET
((
dbp
), 
DB_AM_TXN
))

	)

36 
	#STRIP_AUTO_COMMIT
(
f

	`FLD_CLR
((f), 
DB_AUTO_COMMIT
)

	)

39 
	#DB_ADD_DUP
 1

	)

40 
	#DB_REM_DUP
 2

	)

41 
	#DB_ADD_BIG
 3

	)

42 
	#DB_REM_BIG
 4

	)

43 
	#DB_ADD_PAGE_COMPAT
 5

	)

44 
	#DB_REM_PAGE_COMPAT
 6

	)

49 
	#REC_INTRO
(
func
, 
c_cou
, 
do_curs
) do { \

50 
gp
 = 
NULL
; \

51 
fe_dbp
 = 
NULL
; \

52 
	`COMPQUIET
(
dbc
, 
NULL
); \

54 
	`COMPQUIET
(
mpf
, 
NULL
); \

55 i((
t
 = 
	`func
(
dbv
, 
db
->
da
, &
gp
)) != 0) \

56 
out
; \

57 i(
fo
 !
NULL
) \

58 
gp
->
tx
->
td
 = ((
DB_TXNHEAD
 *)
fo
)->td; \

59 i((
t
 = 
	`__dbg_id_to_db
(
dbv
, 
gp
->
tx
, \

60 &
fe_dbp
, 
gp
->
feid
, 
c_cou
)) != 0) { \

61 i(
t
 =
DB_DELETED
) { \

62 
t
 = 0; \

63 
de
; \

65 
out
; \

67 i(
do_curs
) { \

68 i((
t
 = 
	`__db_curs
(
fe_dbp
, 
NULL
, &
dbc
, 0)) != 0) \

69 
out
; \

70 
	`F_SET
(
dbc
, 
DBC_RECOVER
); \

72 
mpf
 = 
fe_dbp
->mpf; \

73 } 0)

	)

75 
	#REC_CLOSE
 { \

76 
__t_t
; \

77 i(
gp
 !
NULL
) \

78 
	`__os_
(
dbv
, 
gp
); \

79 i(
dbc
 !
NULL
 && \

80 (
__t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0) \

81 
t
 = 
__t_t
; \

83  (
t
)

	)

88 
	#REC_NOOP_INTRO
(
func
) do { \

89 
gp
 = 
NULL
; \

90 i((
t
 = 
	`func
(
dbv
, 
db
->
da
, &
gp
)) != 0) \

91  (
t
); \

92 } 0)

	)

93 
	#REC_NOOP_CLOSE
 \

94 i(
gp
 !
NULL
) \

95 
	`__os_
(
dbv
, 
gp
); \

96  (
t
)

	)

103 #ide
HAVE_FTRUNCATE


104 
	#REC_FGET
(
mpf
, 
pgno
, 
g
, 
ct
) \

105 i((
t
 = 
	`__memp_fg
(
mpf
, &(
pgno
), 
NULL
, 0, 
g
)) != 0) { \

106 i(
t
 !
DB_PAGE_NOTFOUND
 || 
	`DB_REDO
(

)) { \

107 
t
 = 
	`__db_pgr
(
fe_dbp
, 
pgno
,et); \

108 
out
; \

110 
ct
; \

111 }

	)

113 
	#REC_FGET
(
mpf
, 
pgno
, 
g
, 
ct
) \

114 i((
t
 = 
	`__memp_fg
(
mpf
, &(
pgno
), 
NULL
, 0, 
g
)) != 0) { \

115 i(
t
 !
DB_PAGE_NOTFOUND
) { \

116 
t
 = 
	`__db_pgr
(
fe_dbp
, 
pgno
,et); \

117 
out
; \

119 
ct
; \

120 }

	)

122 
	#REC_DIRTY
(
mpf
, 
iܙy
, 
g
) \

123 i((
t
 = 
	`__memp_dty
(
mpf
, \

124 
g
, 
NULL
, 
iܙy
, 
DB_MPOOL_EDIT
)) != 0) { \

125 
t
 = 
	`__db_pgr
(
fe_dbp
, 
	`PGNO
(*(
g
)),et); \

126 
out
; \

127 }

	)

132 #ifde
DEBUG_RECOVER


133 
	#REC_PRINT
(
func
) \

134 ()
	`func
(
dbv
, 
db
, 
lp
, 

, 
fo
);

	)

136 
	#REC_PRINT
(
func
)

	)

142 
	#LCK_ALWAYS
 1

	)

143 
	#LCK_COUPLE
 2

	)

144 
	#LCK_COUPLE_ALWAYS
 3

	)

145 
	#LCK_DOWNGRADE
 4

	)

146 
	#LCK_ROLLBACK
 5

	)

154 
	#__LPUT
(
dbc
, 
lock
) \

155 
	`__ENV_LPUT
((
dbc
)->
dbp
->
dbv
, 
lock
)

	)

157 
	#__ENV_LPUT
(
dbv
, 
lock
) \

158 (
	`LOCK_ISSET
(
lock
? 
	`__lock_put
(
dbv
, &ock): 0)

	)

170 
	#__TLPUT
(
dbc
, 
lock
) \

171 (
	`LOCK_ISSET
(
lock
? 
	`__db_ut
(
dbc
, &ock): 0)

	)

174 
DBC
 *
dbc
;

175 
u_t32_t
 
cou
;

176 } 
	tdb_unc_m
;

183 
	#DB_IS_READONLY
(
dbp
) \

184 (
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
) || \

185 (
	`IS_REP_CLIENT
((
dbp
)->
dbv
&& !
	`F_ISSET
((dbp), 
DB_AM_NOT_DURABLE
)))

	)

195 
	~"dbc/db_sw.h
"

197 
	#SWAP_IF_NEEDED
(
sdbp
, 
pkey
) \

199 i(((
sdbp
)->
s_imy
->
ty
 =
DB_QUEUE
 || \

200 (
sdbp
)->
s_imy
->
ty
 =
DB_RECNO
) && \

201 
	`F_ISSET
((
sdbp
), 
DB_AM_SWAP
)) \

202 
	`P_32_SWAP
((
pkey
)->
da
); \

203 } 0)

	)

210 
	#FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
tdbp
) do { \

211 (
tdbp
(
dbp
); \

212 
	`TAILQ_PREV
((
tdbp
), 
__dbli
, 
dblilks
!
NULL
 && \

213 
	`TAILQ_PREV
((
tdbp
), \

214 
__dbli
, 
dblilks
)->
adj_feid
 =(
dbp
)->adj_fileid;\

215 (
tdbp

	`TAILQ_PREV
(dbp), 
__dbli
, 
dblilks
)) \

217 } 0)

	)

223 
	#DB_BINARY_SEARCH_FOR
(
ba
, 
lim
, 
ge
, 
adju
) \

224 
ba
 = 0, 
lim
 = 
	`NUM_ENT
(
ge
/ (
db_dx_t
)(
adju
); \

225 (
lim
!0; (lim>>1)

	)

227 
	#DB_BINARY_SEARCH_INCR
(
dex
, 
ba
, 
lim
, 
adju
) \

228 
dex
 = (
ba
+ (((
lim
>> 1* (
adju
))

	)

230 
	#DB_BINARY_SEARCH_SHIFT_BASE
(
dex
, 
ba
, 
lim
, 
adju
) do { \

231 
ba
 = (
dex
+ (
adju
); \

232 --(
lim
); \

233 } 0)

	)

238 
	#DB_CHK_META
 0x01

	)

239 
	#DB_CHK_NOLSN
 0x02

	)

241 #i
defed
(
__lulus
)

245 
	~"dbc/db_dich.h
"

246 
	~"dbc_auto/db_auto.h
"

247 
	~"dbc_auto/d_auto.h
"

248 
	~"dbc_auto/db_ext.h
"

	@../dbinc/db_cxx.in

9 #ide
_DB_CXX_H_


10 
	#_DB_CXX_H_


	)

51 
	~<dg.h
>

53 @
	gcxx_have_dhds
@

54 #ifde
HAVE_CXX_STDHEADERS


55 
	~<ioam
>

56 
	~<exi
>

57 
	#__DB_STD
(
x

d
::
	)
x

59 
	~<ioam.h
>

60 
	~<exi.h
>

61 
	#__DB_STD
(
x

	)
x

64 
	~"db.h
"

66 
ass
 
	gDb
;

67 
ass
 
	gDbc
;

68 
ass
 
	gDbEnv
;

69 
ass
 
	gDbInfo
;

70 
ass
 
	gDbLock
;

71 
ass
 
	gDbLogc
;

72 
ass
 
	gDbL
;

73 
ass
 
	gDbMpoFe
;

74 
ass
 
	gDbPi
;

75 
ass
 
	gDbSequ
;

76 
ass
 
	gDbt
;

77 
ass
 
	gDbTxn
;

79 
ass
 
	gDbMuɝIt
;

80 
ass
 
	gDbMuɝKeyDaIt
;

81 
ass
 
	gDbMuɝReoDaIt
;

82 
ass
 
	gDbMuɝDaIt
;

84 
ass
 
	gDbExi
;

85 
ass
 
	gDbDdlockExi
;

86 
ass
 
	gDbLockNGedExi
;

87 
ass
 
	gDbMemyExi
;

88 
ass
 
	gDbRHdDdExi
;

89 
ass
 
	gDbRunRecovyExi
;

97 #ifde
_MSC_VER


110 #agm
wng
(
push
)

111 #agm
wng
(
dib
: 4201 4514)

128 #i
defed
(
_MSC_VER
)

130 #i
defed
(
DB_CREATE_DLL
)

131 
	#_exp܋d
 
	`__deec
(
dexpt
)

132 #i
	`defed
(
DB_USE_DLL
)

	)

133 
	#_exp܋d
 
	`__deec
(
dimpt
)

134 #

	)

135 
	#_exp܋d


137 

	)

140 
	#_exp܋d


	)

152 * (*
	tdb_mloc_f_ty
)

153 (
	tsize_t
);

154 * (*
	tdb_loc_f_ty
)

155 (*, 
	tsize_t
);

156 (*
db__f_ty
)

158 (*
bt_com_f_ty
)

159 (
	tDB
 *, cڡ 
	tDBT
 *, const DBT *);

160 
size_t
 (*
	tbt_efix_f_ty
)

161 (
	tDB
 *, cڡ 
	tDBT
 *, const DBT *);

162 (*
dup_com_f_ty
)

163 (
	tDB
 *, cڡ 
	tDBT
 *, const DBT *);

164 (*
h_com_f_ty
)

165 (
	tDB
 *, cڡ 
	tDBT
 *, const DBT *);

166 
u_t32_t
 (*
	th_hash_f_ty
)

167 (
	tDB
 *, cڡ *, 
	tu_t32_t
);

168 (*
pg_f_ty
)

169 (
	tDB_ENV
 *
	tdbv
, 
	tdb_pgno_t
 
	tpgno
, *
	tpgaddr
, 
	tDBT
 *
	tpgcook
);

170 (*
pgout_f_ty
)

171 (
	tDB_ENV
 *
	tdbv
, 
	tdb_pgno_t
 
	tpgno
, *
	tpgaddr
, 
	tDBT
 *
	tpgcook
);

177 as
	c_exp܋d
 
Db


179 
nd
 
ass
 
DbEnv
;

181 
public
:

182 
Db
(
DbEnv
*, 
u_t32_t
);

183 
vtu
 ~
Db
();

187 
vtu
 
assoc
(
DbTxn
 *
txn
, 
Db
 *
cdy
, (*
back
)

188 (
Db
 *, cڡ 
Dbt
 *, cڡ Db*, Db*), 
u_t32_t
 
ags
);

189 
vtu
 
	`o
(
u_t32_t
 
ags
);

190 
vtu
 
	`com
(
DbTxn
 *
txnid
, 
Dbt
 *
t
,

191 
Dbt
 *

, 
DB_COMPACT
 *
c_da
, 
u_t32_t
 
ags
, Db*
d
);

192 
vtu
 
	`curs
(
DbTxn
 *
txnid
, 
Dbc
 **
cursp
, 
u_t32_t
 
ags
);

193 
vtu
 
	`d
(
DbTxn
 *
txnid
, 
Dbt
 *
key
, 
u_t32_t
 
ags
);

194 
vtu
 
	`r
(, const *, ...);

195 
vtu
 
	`rx
(const *, ...);

196 
vtu
 
	`exis
(
DbTxn
 *
txnid
, 
Dbt
 *
key
, 
u_t32_t
 
ags
);

197 
vtu
 
	`fd
(*
fdp
);

198 
vtu
 
	`g
(
DbTxn
 *
txnid
, 
Dbt
 *
key
, Db*
da
, 
u_t32_t
 
ags
);

199 
vtu
 
	`g_bt_mkey
(
u_t32_t
 *);

200 
vtu
 
	`g_byswd
(*);

201 
vtu
 
	`g_chesize
(
u_t32_t
 *, u_int32_t *, *);

202 
vtu
 
	`g_dbme
(const **, const **);

203 
vtu
 
	`g_y_ags
(
u_t32_t
 *);

204 
vtu
 
	`g_rfe
(
FILE
 **);

205 
vtu
 
	`g_fx
(const **);

206 
vtu
 
	`g_ags
(
u_t32_t
 *);

207 
vtu
 
	`g_h_f
(
u_t32_t
 *);

208 
vtu
 
	`g_h_m
(
u_t32_t
 *);

209 
vtu
 
	`g_ld
(*);

210 
vtu
 
	`g_msgfe
(
FILE
 **);

211 
vtu
 
	`g_muɝ
();

212 
vtu
 
	`g_ݒ_ags
(
u_t32_t
 *);

213 
vtu
 
	`g_gesize
(
u_t32_t
 *);

214 
vtu
 
	`g_iܙy
(
DB_CACHE_PRIORITY
 *);

215 
vtu
 
	`g_q_exsize
(
u_t32_t
 *);

216 
vtu
 
	`g__dim
(*);

217 
vtu
 
	`g__n
(
u_t32_t
 *);

218 
vtu
 
	`g__d
(*);

219 
vtu
 
	`g__sour
(const **);

220 
vtu
 
	`g_iڮ
();

221 
vtu
 
	`g_ty
(
DBTYPE
 *);

222 
vtu
 
	`jo
(
Dbc
 **
curi
, Db**
db
, 
u_t32_t
 
ags
);

223 
vtu
 
	`key_nge
(
DbTxn
 *, 
Dbt
 *, 
DB_KEY_RANGE
 *, 
u_t32_t
);

224 
vtu
 
	`ݒ
(
DbTxn
 *
txnid
,

225 cڡ *, cڡ *
subme
, 
DBTYPE
, 
u_t32_t
, );

226 
vtu
 
	`pg
(
DbTxn
 *
txnid
,

227 
Dbt
 *
key
, Db*
pkey
, Db*
da
, 
u_t32_t
 
ags
);

228 
vtu
 
	`put
(
DbTxn
 *, 
Dbt
 *, Db*, 
u_t32_t
);

229 
vtu
 
	`move
(cڡ *, cڡ *, 
u_t32_t
);

230 
vtu
 
	`me
(cڡ *, cڡ *, cڡ *, 
u_t32_t
);

231 
vtu
 
	`t_loc
(

232 
db_mloc_f_ty
, 
db_loc_f_ty
, 
db__f_ty
);

233 
vtu
 
	`t_p_ive
(*);

234 
vtu
 
	`t_nd_o
((*)(
Db
 *, 
Dbt
 *, 
db_o_t
));

235 
vtu
 
	`t_bt_com
(
bt_com_f_ty
);

236 
vtu
 
	`t_bt_com
((*)(
Db
 *, cڡ 
Dbt
 *, const Dbt *));

237 
vtu
 
	`t_bt_mkey
(
u_t32_t
);

238 
vtu
 
	`t_bt_efix
(
bt_efix_f_ty
);

239 
vtu
 
	`t_bt_efix
(
	$size_t
 (*)(
Db
 *, cڡ 
Dbt
 *, const Dbt *));

240 
vtu
 
	`t_chesize
(
u_t32_t
, u_int32_t, );

241 
vtu
 
	`t_dup_com
(
dup_com_f_ty
);

242 
vtu
 
	`t_dup_com
((*)(
Db
 *, cڡ 
Dbt
 *, const Dbt *));

243 
vtu
 
	`t_y
(cڡ *, 
u_t32_t
);

244 
vtu
 
	`t_r
(

245 (*)(cڡ 
DbEnv
 *, const *, const *));

246 
vtu
 
	`t_rfe
(
FILE
 *);

247 
vtu
 
	`t_fx
(const *);

248 
vtu
 
	`t_edback
((*)(
Db
 *, , ));

249 
vtu
 
	`t_ags
(
u_t32_t
);

250 
vtu
 
	`t_h_com
(
h_com_f_ty
);

251 
vtu
 
	`t_h_com
((*)(
Db
 *, cڡ 
Dbt
 *, const Dbt *));

252 
vtu
 
	`t_h_f
(
u_t32_t
);

253 
vtu
 
	`t_h_hash
(
h_hash_f_ty
);

254 
vtu
 
	`t_h_hash
(
	$u_t32_t
 (*)(
Db
 *, cڡ *, 
u_t32_t
));

255 
vtu
 
	`t_h_m
(
u_t32_t
);

256 
vtu
 
	`t_ld
();

257 
vtu
 
	`t_msg
((*)(cڡ 
DbEnv
 *, const *));

258 
vtu
 
	`t_msgfe
(
FILE
 *);

259 
vtu
 
	`t_gesize
(
u_t32_t
);

260 
vtu
 
	`t_nic
((*)(
DbEnv
 *, ));

261 
vtu
 
	`t_iܙy
(
DB_CACHE_PRIORITY
);

262 
vtu
 
	`t_q_exsize
(
u_t32_t
);

263 
vtu
 
	`t__dim
();

264 
vtu
 
	`t__n
(
u_t32_t
);

265 
vtu
 
	`t__d
();

266 
vtu
 
	`t__sour
(const *);

267 
vtu
 
	`
(
DbTxn
 *, *

, 
u_t32_t
 
ags
);

268 
vtu
 
	`_t
(
u_t32_t
 
ags
);

269 
vtu
 
	`sync
(
u_t32_t
 
ags
);

270 
vtu
 
	`un
(
DbTxn
 *, 
u_t32_t
 *, u_int32_t);

271 
vtu
 
	`upgde
(cڡ *
me
, 
u_t32_t
 
ags
);

272 
vtu
 
	`vify
(

273 cڡ *, cڡ *, 
	`__DB_STD
(
oam
*, 
u_t32_t
);

278 
vtu
 *
	$g_p_ive
() const;

279 
vtu
 
	`__DB_STD
(
oam
*
	`g_r_am
();

280 
vtu
 
	`t_r_am
(
	`__DB_STD
(
oam
) *);

281 
vtu
 
	`__DB_STD
(
oam
*
	`g_mesge_am
();

282 
vtu
 
	`t_mesge_am
(
	`__DB_STD
(
oam
) *);

284 
vtu
 
DbEnv
 *
	`g_v
();

285 
vtu
 
DbMpoFe
 *
	`g_mpf
();

287 
vtu
 
DB
 *
	$g_DB
()

289  
imp_
;

292 
vtu
 cڡ 
DB
 *
	$g_cڡ_DB
() const

294  
imp_
;

295 
	}
}

297 
Db
* 
	$g_Db
(
DB
 *
db
)

299  (
Db
 *)
db
->
i_
;

300 
	}
}

302 cڡ 
Db
* 
	$g_cڡ_Db
(cڡ 
DB
 *
db
)

304  (cڡ 
Db
 *)
db
->
i_
;

305 
	}
}

307 
ive
:

309 
Db
(const Db &);

310 
Db
 &
ݔ
 = (const Db &);

312 
nup
();

313 
lize
();

314 
r_picy
();

317 
DB
 *
imp_
;

318 
DbEnv
 *
v_
;

319 
DbMpoFe
 *
mpf_
;

320 
cڡru_r_
;

321 
u_t32_t
 
ags_
;

322 
u_t32_t
 
cڡru_ags_
;

324 
public
:

329 (*
nd_o_back_
)(
Db
 *, 
Dbt
 *, 
db_o_t
);

330 (*
assoc_back_
)(
Db
 *, cڡ 
Dbt
 *, const Dbt *, Dbt *);

331 (*
bt_com_back_
)(
Db
 *, cڡ 
Dbt
 *, const Dbt *);

332 
	$size_t
 (*
bt_efix_back_
)(
Db
 *, cڡ 
Dbt
 *, const Dbt *);

333 (*
dup_com_back_
)(
Db
 *, cڡ 
Dbt
 *, const Dbt *);

334 (*
edback_back_
)(
Db
 *, , );

335 (*
h_com_back_
)(
Db
 *, cڡ 
Dbt
 *, const Dbt *);

336 
	$u_t32_t
 (*
h_hash_back_
)(
Db
 *, cڡ *, 
u_t32_t
);

337 
	}
};

342 as
	c_exp܋d
 
	mDbc
 : 
eed
 
DBC


344 
nd
 
ass
 
Db
;

346 
	mpublic
:

347 
o
();

348 
cou
(
db_o_t
 *
coup
, 
u_t32_t
 
ags
);

349 
d
(
u_t32_t
 
ags
);

350 
dup
(
Dbc
** 
cursp
, 
u_t32_t
 
ags
);

351 
g
(
Dbt
* 
key
, Db*
da
, 
u_t32_t
 
ags
);

352 
g_iܙy
(
DB_CACHE_PRIORITY
 *
iܙyp
);

353 
pg
(
Dbt
* 
key
, Dbt* 
pkey
, Db*
da
, 
u_t32_t
 
ags
);

354 
put
(
Dbt
* 
key
, Db*
da
, 
u_t32_t
 
ags
);

355 
t_iܙy
(
DB_CACHE_PRIORITY
 
iܙy
);

357 
	mive
:

363 
Dbc
();

364 ~
Dbc
();

367 
Dbc
(const Dbc &);

368 
	mDbc
 &
	mݔ
 = (cڡ 
Dbc
 &);

380 as
	c_exp܋d
 
	mDbEnv


382 
nd
 
ass
 
	mDb
;

383 
nd
 
ass
 
	mDbLock
;

384 
nd
 
ass
 
	mDbMpoFe
;

386 
	mpublic
:

392 
DbEnv
(
u_t32_t
 
ags
);

394 
	mvtu
 ~
DbEnv
();

398 
vtu
 
cdsgroup_beg
(
DbTxn
 **
tid
);

399 
vtu
 
o
(
u_t32_t
);

400 
vtu
 
dbmove
(
DbTxn
 *
txn
, cڡ *
me
, cڡ *
subdb
,

401 
u_t32_t
 
ags
);

402 
vtu
 
dbme
(
DbTxn
 *
txn
, cڡ *
me
, cڡ *
subdb
,

403 cڡ *
wme
, 
u_t32_t
 
ags
);

404 
vtu
 
r
(, const *, ...);

405 
vtu
 
rx
(const *, ...);

406 
vtu
 
chk
(
u_t32_t
);

407 
vtu
 
feid_t
(cڡ *, 
u_t32_t
);

408 
vtu
 *
	$g_p_ive
() const;

409 
vtu
 
	`g_home
(const **);

410 
vtu
 
	`g_ݒ_ags
(
u_t32_t
 *);

411 
vtu
 
	`ݒ
(cڡ *, 
u_t32_t
, );

412 
vtu
 
	`move
(cڡ *, 
u_t32_t
);

413 
vtu
 
	`_t
(
u_t32_t
 
ags
);

415 
vtu
 
	`t_loc
(
db_mloc_f_ty
, 
db_loc_f_ty
,

416 
db__f_ty
);

417 
vtu
 
	`t_p_ive
(*);

418 
vtu
 
	`g_chesize
(
u_t32_t
 *, u_int32_t *, *);

419 
vtu
 
	`t_chesize
(
u_t32_t
, u_int32_t, );

420 
vtu
 
	`g_che_max
(
u_t32_t
 *, u_int32_t *);

421 
vtu
 
	`t_che_max
(
u_t32_t
, u_int32_t);

422 
vtu
 
	`g_da_ds
(const ***);

423 
vtu
 
	`t_da_d
(const *);

424 
vtu
 
	`g_y_ags
(
u_t32_t
 *);

425 
vtu
 
	`t_rmed_d
(, 
u_t32_t
);

426 
vtu
 
	`t_ilive
(

427 (*)(
DbEnv
 *, 
pid_t
, 
db_thadid_t
, 
u_t32_t
));

428 
vtu
 
	`t_y
(cڡ *, 
u_t32_t
);

429 
vtu
 
	`t_r
(

430 (*)(cڡ 
DbEnv
 *, const *, const *));

431 
vtu
 
	`g_rfe
(
FILE
 **);

432 
vtu
 
	`t_rfe
(
FILE
 *);

433 
vtu
 
	`g_fx
(const **);

434 
vtu
 
	`t_fx
(const *);

435 
vtu
 
	`t_evt_nify
((*)(
DbEnv
 *, 
u_t32_t
, *));

436 
vtu
 
	`g_ags
(
u_t32_t
 *);

437 
vtu
 
	`t_ags
(
u_t32_t
, );

438 
vtu
 
bo
 
	`is_bigdn
();

439 
vtu
 
	`l_t
(cڡ *, 
u_t32_t
);

440 
vtu
 
	`t_edback
((*)(
DbEnv
 *, , ));

441 
vtu
 
	`g_lg_bsize
(
u_t32_t
 *);

442 
vtu
 
	`t_lg_bsize
(
u_t32_t
);

443 
vtu
 
	`g_lg_d
(const **);

444 
vtu
 
	`t_lg_d
(const *);

445 
vtu
 
	`g_lg_femode
(*);

446 
vtu
 
	`t_lg_femode
();

447 
vtu
 
	`g_lg_max
(
u_t32_t
 *);

448 
vtu
 
	`t_lg_max
(
u_t32_t
);

449 
vtu
 
	`g_lg_gimax
(
u_t32_t
 *);

450 
vtu
 
	`t_lg_gimax
(
u_t32_t
);

451 
vtu
 
	`g_lk_cis
(cڡ 
u_t8_t
 **, *);

452 
vtu
 
	`t_lk_cis
(
u_t8_t
 *, );

453 
vtu
 
	`g_lk_de
(
u_t32_t
 *);

454 
vtu
 
	`t_lk_de
(
u_t32_t
);

455 
vtu
 
	`g_lk_max_locks
(
u_t32_t
 *);

456 
vtu
 
	`t_lk_max_locks
(
u_t32_t
);

457 
vtu
 
	`g_lk_max_locks
(
u_t32_t
 *);

458 
vtu
 
	`t_lk_max_locks
(
u_t32_t
);

459 
vtu
 
	`g_lk_max_objes
(
u_t32_t
 *);

460 
vtu
 
	`t_lk_max_objes
(
u_t32_t
);

461 
vtu
 
	`g_mp_mmsize
(
size_t
 *);

462 
vtu
 
	`t_mp_mmsize
(
size_t
);

463 
vtu
 
	`g_mp_max_ݒfd
(*);

464 
vtu
 
	`t_mp_max_ݒfd
();

465 
vtu
 
	`g_mp_max_wre
(*, 
db_timeout_t
 *);

466 
vtu
 
	`t_mp_max_wre
(, 
db_timeout_t
);

467 
vtu
 
	`t_msg
((*)(cڡ 
DbEnv
 *, const *));

468 
vtu
 
	`g_msgfe
(
FILE
 **);

469 
vtu
 
	`t_msgfe
(
FILE
 *);

470 
vtu
 
	`t_nic
((*)(
DbEnv
 *, ));

471 
vtu
 
	`t_c_rv
(*, *, , , 
u_t32_t
);

472 
vtu
 
	`g_shm_key
(*);

473 
vtu
 
	`t_shm_key
();

474 
vtu
 
	`g_timeout
(
db_timeout_t
 *, 
u_t32_t
);

475 
vtu
 
	`t_timeout
(
db_timeout_t
, 
u_t32_t
);

476 
vtu
 
	`g_tmp_d
(const **);

477 
vtu
 
	`t_tmp_d
(const *);

478 
vtu
 
	`g_tx_max
(
u_t32_t
 *);

479 
vtu
 
	`t_tx_max
(
u_t32_t
);

480 
vtu
 
	`t_p_dich
((*)(
DbEnv
 *,

481 
Dbt
 *, 
DbL
 *, 
db_cs
));

482 
vtu
 
	`g_tx_timeamp
(
time_t
 *);

483 
vtu
 
	`t_tx_timeamp
(
time_t
 *);

484 
vtu
 
	`g_vbo
(
u_t32_t
 
which
, *);

485 
vtu
 
	`t_vbo
(
u_t32_t
 
which
, );

489 *
	`vsi
(*
maj
, *
m
, *
tch
);

492 *
	`
();

503 
vtu
 
	`__DB_STD
(
oam
*
	`g_r_am
();

504 
vtu
 
	`t_r_am
(
	`__DB_STD
(
oam
) *);

505 
vtu
 
	`__DB_STD
(
oam
*
	`g_mesge_am
();

506 
vtu
 
	`t_mesge_am
(
	`__DB_STD
(
oam
) *);

509 
	`ruime_r
(
DbEnv
 *
v
, cڡ *
Δ
, 
r
,

510 
r_picy
);

511 
	`ruime_r_dbt
(
DbEnv
 *
v
, cڡ *
Δ
, 
Dbt
 *
dbt
,

512 
r_picy
);

513 
	`ruime_r_lock_g
(
DbEnv
 *
v
, cڡ *
Δ
,

514 
r
, 
db_lock_t
 

, 
db_lockmode_t
 
mode
,

515 cڡ 
Dbt
 *
obj
, 
DbLock
 
lock
, 
dex
,

516 
r_picy
);

520 
vtu
 
	`lock_de
(
u_t32_t
 
ags
, u_t32_
y
, *
ab܋d
);

521 
vtu
 
	`lock_g
(
u_t32_t
 
lock
, u_t32_
ags
, cڡ 
Dbt
 *
obj
,

522 
db_lockmode_t
 
lock_mode
, 
DbLock
 *
lock
);

523 
vtu
 
	`lock_id
(
u_t32_t
 *
idp
);

524 
vtu
 
	`lock_id_
(
u_t32_t
 
id
);

525 
vtu
 
	`lock_put
(
DbLock
 *
lock
);

526 
vtu
 
	`lock_
(
DB_LOCK_STAT
 **
p
, 
u_t32_t
 
ags
);

527 
vtu
 
	`lock__t
(
u_t32_t
 
ags
);

528 
vtu
 
	`lock_vec
(
u_t32_t
 
lock
, u_t32_
ags
,

529 
DB_LOCKREQ
 
li
[], 
i
, DB_LOCKREQ **
ip
);

533 
vtu
 
	`log_chive
(**
li
[], 
u_t32_t
 
ags
);

534 
	`log_com
(cڡ 
DbL
 *
l0
, cڡ DbL *
l1
);

535 
vtu
 
	`log_curs
(
DbLogc
 **
cursp
, 
u_t32_t
 
ags
);

536 
vtu
 
	`log_fe
(
DbL
 *
l
, *
m
, 
size_t
 
n
);

537 
vtu
 
	`log_ush
(cڡ 
DbL
 *
l
);

538 
vtu
 
	`log_put
(
DbL
 *
l
, cڡ 
Dbt
 *
da
, 
u_t32_t
 
ags
);

539 
vtu
 
	`log_tf
(
DbTxn
 *, const *, ...);

541 
vtu
 
	`log_
(
DB_LOG_STAT
 **
p
, 
u_t32_t
 
ags
);

542 
vtu
 
	`log__t
(
u_t32_t
 
ags
);

546 
vtu
 
	`memp_f
(
DbMpoFe
 **
dbm
, 
u_t32_t
 
ags
);

547 
vtu
 
	`memp_gi
(
y
,

548 
pg_f_ty
 
pg_f
,

549 
pgout_f_ty
 
pgout_f
);

550 
vtu
 
	`memp_
(
DB_MPOOL_STAT


551 **
g
, 
DB_MPOOL_FSTAT
 ***
f
, 
u_t32_t
 
ags
);

552 
vtu
 
	`memp__t
(
u_t32_t
 
ags
);

553 
vtu
 
	`memp_sync
(
DbL
 *
l
);

554 
vtu
 
	`memp_ick
(
p
, *
nwrٕ
);

558 
vtu
 
	`mux_loc
(
u_t32_t
, 
db_mux_t
 *);

559 
vtu
 
	`mux_
(
db_mux_t
);

560 
vtu
 
	`mux_g_ign
(
u_t32_t
 *);

561 
vtu
 
	`mux_g_emt
(
u_t32_t
 *);

562 
vtu
 
	`mux_g_max
(
u_t32_t
 *);

563 
vtu
 
	`mux_g_s_s
(
u_t32_t
 *);

564 
vtu
 
	`mux_lock
(
db_mux_t
);

565 
vtu
 
	`mux_t_ign
(
u_t32_t
);

566 
vtu
 
	`mux_t_emt
(
u_t32_t
);

567 
vtu
 
	`mux_t_max
(
u_t32_t
);

568 
vtu
 
	`mux_t_s_s
(
u_t32_t
);

569 
vtu
 
	`mux_
(
DB_MUTEX_STAT
 **, 
u_t32_t
);

570 
vtu
 
	`mux__t
(
u_t32_t
);

571 
vtu
 
	`mux_uock
(
db_mux_t
);

575 
vtu
 
	`txn_beg
(
DbTxn
 *
pid
, DbTx**
tid
, 
u_t32_t
 
ags
);

576 
vtu
 
	`txn_checkpot
(
u_t32_t
 
kby
, u_t32_
m
,

577 
u_t32_t
 
ags
);

578 
vtu
 
	`txn_cov
(
DbPi
 *
li
, 
cou
,

579 *

, 
u_t32_t
 
ags
);

580 
vtu
 
	`txn_
(
DB_TXN_STAT
 **
p
, 
u_t32_t
 
ags
);

581 
vtu
 
	`txn__t
(
u_t32_t
 
ags
);

585 
vtu
 
	`p_e
(, , 
u_t32_t
);

586 
vtu
 
	`p_ush
();

587 
vtu
 
	`p_oss_mesge
(
Dbt
 *, Db*, , 
DbL
 *);

588 
vtu
 
	`p_t
(
Dbt
 *, 
u_t32_t
);

589 
vtu
 
	`p_
(
DB_REP_STAT
 **
p
, 
u_t32_t
 
ags
);

590 
vtu
 
	`p__t
(
u_t32_t
 
ags
);

591 
vtu
 
	`p_t_a
(
u_t32_t
, u_int32_t);

592 
vtu
 
	`p_g_lim
(
u_t32_t
 *, u_int32_t *);

593 
vtu
 
	`p_t_lim
(
u_t32_t
, u_int32_t);

594 
vtu
 
	`p_t_t
(, (*)(
DbEnv
 *,

595 cڡ 
Dbt
 *, cڡ Db*, cڡ 
DbL
 *, , 
u_t32_t
));

596 
vtu
 
	`t_p_que
(
u_t32_t
, u_int32_t);

597 
vtu
 
	`g_thad_cou
(
u_t32_t
 *);

598 
vtu
 
	`t_thad_cou
(
u_t32_t
);

599 
vtu
 
	`t_thad_id
((*)(
DbEnv
 *, 
pid_t
 *, 
db_thadid_t
 *));

600 
vtu
 
	`t_thad_id_rg
(*(*)(
DbEnv
 *,

601 
pid_t
, 
db_thadid_t
, *));

602 
vtu
 
	`p_t_cfig
(
u_t32_t
 
which
, 
off
);

603 
vtu
 
	`p_g_cfig
(
u_t32_t
 
which
, *
of
);

604 
vtu
 
	`p_sync
(
u_t32_t
 
ags
);

608 
vtu
 
	`p_g_nses
(*
n
);

609 
vtu
 
	`p_t_nses
(
n
);

610 
vtu
 
	`p_g_iܙy
(*
iܙyp
);

611 
vtu
 
	`p_t_iܙy
(
iܙy
);

612 
vtu
 
	`p_g_timeout
(
which
, 
db_timeout_t
 *
timeout
);

613 
vtu
 
	`p_t_timeout
(
which
, 
db_timeout_t
 
timeout
);

614 
vtu
 
	`pmgr_add_me_se
(cڡ * 
ho
, 
u_t16_t
 
pt
,

615 *
eidp
, 
u_t32_t
 
ags
);

616 
vtu
 
	`pmgr_g_ack_picy
(*
picy
);

617 
vtu
 
	`pmgr_t_ack_picy
(
picy
);

618 
vtu
 
	`pmgr_t_lol_se
(cڡ * 
ho
, 
u_t16_t
 
pt
,

619 
u_t32_t
 
ags
);

620 
vtu
 
	`pmgr_se_li
(
u_t
 *
coup
, 
DB_REPMGR_SITE
 **
lip
);

621 
vtu
 
	`pmgr_t
(
hads
, 
u_t32_t
 
ags
);

622 
vtu
 
	`pmgr_
(
DB_REPMGR_STAT
 **
p
, 
u_t32_t
 
ags
);

623 
vtu
 
	`pmgr__t
(
u_t32_t
 
ags
);

627 
vtu
 
DB_ENV
 *
	$g_DB_ENV
()

629  
imp_
;

632 
vtu
 cڡ 
DB_ENV
 *
	$g_cڡ_DB_ENV
() const

634  
imp_
;

635 
	}
}

637 
DbEnv
* 
	$g_DbEnv
(
DB_ENV
 *
dbv
)

639  
dbv
 ? (
DbEnv
 *)dbv->
i1_
 : 0;

640 
	}
}

642 cڡ 
DbEnv
* 
	$g_cڡ_DbEnv
(cڡ 
DB_ENV
 *
dbv
)

644  
dbv
 ? (cڡ 
DbEnv
 *)dbv->
i1_
 : 0;

645 
	}
}

648 
DbEnv
* 
wp_DB_ENV
(
DB_ENV
 *
dbv
);

654 
_p_dich_r
(
DB_ENV
 *
v
, 
DBT
 *
dbt
, 
DB_LSN
 *
l
,

655 
db_cs
 

);

656 
_nic_r
(
DB_ENV
 *
v
, 
rv
);

657 
_edback_r
(
DB_ENV
 *
v
, 
code
, 
p
);

658 
_evt_func_r
(
DB_ENV
 *
v
, 
u_t32_t
, *);

659 
_ilive_r
(
DB_ENV
 *
v
, 
pid_t
 
pid
,

660 
db_thadid_t
 
thrid
, 
u_t32_t
 
ags
);

661 
_p_nd_r
(
DB_ENV
 *
v
, cڡ 
DBT
 *
l
,

662 cڡ 
DBT
 *
da
, cڡ 
DB_LSN
 *
l
, 
id
, 
u_t32_t
 
ags
);

663 
_am_r_funi
(cڡ 
DB_ENV
 *
v
,

664 cڡ *
efix
, cڡ *
mesge
);

665 
_am_mesge_funi
(cڡ 
DB_ENV
 *
v
,

666 cڡ *
mesge
);

667 
_thad_id_r
(
DB_ENV
 *
v
, 
pid_t
 *
pidp
,

668 
db_thadid_t
 *
thridp
);

669 *
_thad_id_rg_r
(
DB_ENV
 *
v
, 
pid_t
 
pid
,

670 
db_thadid_t
 
thrid
, *
buf
);

672 
	give
:

673 
nup
();

674 
lize
(
DB_ENV
 *
v
);

675 
r_picy
();

678 
DbEnv
(
DB_ENV
 *, 
u_t32_t
 
ags
);

681 
DbEnv
(const DbEnv &);

682 
	gݔ
 = (cڡ 
DbEnv
 &);

685 
DB_ENV
 *
	gimp_
;

686 
	gcڡru_r_
;

687 
u_t32_t
 
	gcڡru_ags_
;

688 
__DB_STD
(
oam
*
	gr_am_
;

689 
__DB_STD
(
oam
*
	gmesge_am_
;

691 (*
p_dich_back_
)(
DbEnv
 *, 
Dbt
 *, 
DbL
 *, 
db_cs
);

692 (*
ilive_back_
)(
DbEnv
 *, 
pid_t
, 
db_thadid_t
, 
u_t32_t
);

693 (*
r_back_
)(cڡ 
DbEnv
 *, const *, const *);

694 (*
edback_back_
)(
DbEnv
 *, , );

695 (*
mesge_back_
)(cڡ 
DbEnv
 *, const *);

696 (*
nic_back_
)(
DbEnv
 *, );

697 (*
evt_func_back_
)(
DbEnv
 *, 
u_t32_t
, *);

698 (*
p_nd_back_
)(
DbEnv
 *, cڡ 
Dbt
 *, const Dbt *,

699 cڡ 
DbL
 *, , 
u_t32_t
);

700 (*
thad_id_back_
)(
DbEnv
 *, 
pid_t
 *, 
db_thadid_t
 *);

701 *(*
thad_id_rg_back_
)(
DbEnv
 *, 
pid_t
, 
db_thadid_t
,

703 
	}
};

708 as
	c_exp܋d
 
	mDbLock


710 
nd
 
ass
 
	mDbEnv
;

712 
	mpublic
:

713 
DbLock
();

714 
DbLock
(const DbLock &);

715 
	mDbLock
 &
	mݔ
 = (cڡ 
DbLock
 &);

717 
	meed
:

722 
DbLock
(
DB_LOCK
);

723 
DB_LOCK
 
	mlock_
;

729 as
	c_exp܋d
 
	mDbLogc
 : 
eed
 
DB_LOGC


731 
nd
 
ass
 
DbEnv
;

733 
	mpublic
:

734 
o
(
u_t32_t
 
_ags
);

735 
g
(
DbL
 *
l
, 
Dbt
 *
da
, 
u_t32_t
 
_ags
);

736 
vsi
(
u_t32_t
 *
vsip
, u_t32_
_ags
);

738 
	mive
:

744 
DbLogc
();

745 ~
DbLogc
();

748 
DbLogc
(cڡ 
Dbc
 &);

749 
	mDbLogc
 &
	mݔ
 = (cڡ 
Dbc
 &);

755 as
	c_exp܋d
 
	mDbL
 : 
public
 
DB_LSN


757 
nd
 
ass
 
DbEnv
;

758 
nd
 
ass
 
	mDbLogc
;

764 as
	c_exp܋d
 
	mDbMpoFe


766 
nd
 
ass
 
	mDbEnv
;

767 
nd
 
ass
 
	mDb
;

769 
	mpublic
:

770 
o
(
u_t32_t
 
ags
);

771 
g
(
db_pgno_t
 *
pgnddr
, 
DbTxn
 *
txn
, 
u_t32_t
 
ags
, *
g
);

772 
g_r_n
(
u_t32_t
 *
n
);

773 
g_feid
(
u_t8_t
 *
feid
);

774 
g_ags
(
u_t32_t
 *
ag
);

775 
g_y
(*
y
);

776 
g_ϡ_pgno
(
db_pgno_t
 *
pgn
);

777 
g_l_offt
(
t32_t
 *
off
);

778 
g_maxsize
(
u_t32_t
 *
gbys
, u_t32_*
bys
);

779 
g_pgcook
(
DBT
 *
dbt
);

780 
g_iܙy
(
DB_CACHE_PRIORITY
 *
iܙyp
);

781 
g_iڮ
();

782 
ݒ
(cڡ *
fe
, 
u_t32_t
 
ags
, 
mode
, 
size_t
 
gesize
);

783 
put
(*
pgaddr
, 
DB_CACHE_PRIORITY
 
iܙy
, 
u_t32_t
 
ags
);

784 
t_r_n
(
u_t32_t
 
n
);

785 
t_feid
(
u_t8_t
 *
feid
);

786 
t_ags
(
u_t32_t
 
ags
, 
off
);

787 
t_y
(
y
);

788 
t_l_offt
(
t32_t
 
offt
);

789 
t_maxsize
(
u_t32_t
 
gbys
, u_t32_
bys
);

790 
t_pgcook
(
DBT
 *
dbt
);

791 
t_iܙy
(
DB_CACHE_PRIORITY
 
iܙy
);

792 
sync
();

794 
vtu
 
DB_MPOOLFILE
 *
	$g_DB_MPOOLFILE
()

796  
imp_
;

799 
vtu
 cڡ 
DB_MPOOLFILE
 *
	$g_cڡ_DB_MPOOLFILE
() const

801  
imp_
;

802 
	}
}

804 
	give
:

805 
DB_MPOOLFILE
 *
imp_
;

814 
DbMpoFe
();

817 
	geed
:

818 
vtu
 ~
DbMpoFe
();

820 
	give
:

822 
DbMpoFe
(const DbMpoolFile &);

823 
	gݔ
 = (cڡ 
DbMpoFe
 &);

829 as
	c_exp܋d
 
	mDbPi


831 
	mpublic
:

832 
DbTxn
 *
txn
;

833 
u_t8_t
 
	mgid
[
DB_XIDDATASIZE
];

839 as
	c_exp܋d
 
	mDbSequ


841 
	mpublic
:

842 
DbSequ
(
Db
 *
db
, 
u_t32_t
 
ags
);

843 
	mvtu
 ~
DbSequ
();

845 
ݒ
(
DbTxn
 *
txnid
, 
Dbt
 *
key
, 
u_t32_t
 
ags
);

846 
l_vue
(
db_q_t
 
vue
);

847 
o
(
u_t32_t
 
ags
);

848 
move
(
DbTxn
 *
txnid
, 
u_t32_t
 
ags
);

849 

(
DB_SEQUENCE_STAT
 **

, 
u_t32_t
 
ags
);

850 
_t
(
u_t32_t
 
ags
);

852 
g
(
DbTxn
 *
txnid
, 
t32_t
 
d
, 
db_q_t
 *

, 
u_t32_t
 
ags
);

853 
g_chesize
(
t32_t
 *
siz
);

854 
t_chesize
(
t32_t
 
size
);

855 
g_ags
(
u_t32_t
 *
ag
);

856 
t_ags
(
u_t32_t
 
ags
);

857 
g_nge
(
db_q_t
 *
mp
, db_q_*
maxp
);

858 
t_nge
(
db_q_t
 
m
, db_q_
max
);

860 
Db
 *
g_db
();

861 
Dbt
 *
g_key
();

863 
vtu
 
DB_SEQUENCE
 *
	$g_DB_SEQUENCE
()

865  
imp_
;

868 
vtu
 cڡ 
DB_SEQUENCE
 *
	$g_cڡ_DB_SEQUENCE
() const

870  
imp_
;

871 
	}
}

873 
DbSequ
* 
	$g_DbSequ
(
DB_SEQUENCE
 *
q
)

875  (
DbSequ
 *)
q
->
i_
;

876 
	}
}

878 cڡ 
DbSequ
* 
	$g_cڡ_DbSequ
(cڡ 
DB_SEQUENCE
 *
q
)

880  (cڡ 
DbSequ
 *)
q
->
i_
;

881 
	}
}

884 
DbSequ
* 
wp_DB_SEQUENCE
(
DB_SEQUENCE
 *
q
);

886 
	give
:

887 
DbSequ
(
DB_SEQUENCE
 *
q
);

889 
DbSequ
(const DbSequence &);

890 
	gDbSequ
 &
	gݔ
 = (cڡ 
DbSequ
 &);

892 
DB_SEQUENCE
 *
	gimp_
;

893 
DBT
 
	gkey_
;

899 as
	c_exp܋d
 
	mDbTxn


901 
nd
 
ass
 
	mDbEnv
;

903 
	mpublic
:

904 
abt
();

905 
comm
(
u_t32_t
 
ags
);

906 
disrd
(
u_t32_t
 
ags
);

907 
u_t32_t
 
id
();

908 
g_me
(cڡ **
m
);

909 
e
(
u_t8_t
 *
gid
);

910 
t_me
(cڡ *
me
);

911 
t_timeout
(
db_timeout_t
 
timeout
, 
u_t32_t
 
ags
);

913 
vtu
 
DB_TXN
 *
	$g_DB_TXN
()

915  
imp_
;

918 
vtu
 cڡ 
DB_TXN
 *
	$g_cڡ_DB_TXN
() const

920  
imp_
;

921 
	}
}

923 
DbTxn
* 
	$g_DbTxn
(
DB_TXN
 *
txn
)

925  (
DbTxn
 *)
txn
->
i_
;

926 
	}
}

928 cڡ 
DbTxn
* 
	$g_cڡ_DbTxn
(cڡ 
DB_TXN
 *
txn
)

930  (cڡ 
DbTxn
 *)
txn
->
i_
;

931 
	}
}

934 
DbTxn
* 
wp_DB_TXN
(
DB_TXN
 *
txn
);

936 
	give
:

937 
DB_TXN
 *
imp_
;

947 
DbTxn
();

949 
DbTxn
(
DB_TXN
 *
txn
);

950 
	gvtu
 ~
DbTxn
();

953 
DbTxn
(const DbTxn &);

954 
	gݔ
 = (cڡ 
DbTxn
 &);

960 as
	c_exp܋d
 
	mDbt
 : 
ive
 
DBT


962 
nd
 
ass
 
Db
;

963 
nd
 
ass
 
	mDbc
;

964 
nd
 
ass
 
	mDbEnv
;

965 
nd
 
ass
 
	mDbLogc
;

966 
nd
 
ass
 
	mDbSequ
;

968 
	mpublic
:

970 *
	$g_da
(cڡ {  
da
; }

971 
	$t_da
(*
vue
{ 
da
 = vue; 
	}
}

974 
u_t32_t
 
	$g_size
(cڡ {  
size
; 
	}
}

975 
	$t_size
(
u_t32_t
 
vue
{ 
size
 = vue; 
	}
}

978 
u_t32_t
 
	$g_un
(cڡ {  
un
; 
	}
}

979 
	$t_un
(
u_t32_t
 
vue
{ 
un
 = vue; 
	}
}

982 
u_t32_t
 
	$g_dn
(cڡ {  
dn
; 
	}
}

983 
	$t_dn
(
u_t32_t
 
vue
{ 
dn
 = vue; 
	}
}

986 
u_t32_t
 
	$g_doff
(cڡ {  
doff
; 
	}
}

987 
	$t_doff
(
u_t32_t
 
vue
{ 
doff
 = vue; 
	}
}

990 
u_t32_t
 
	$g_ags
(cڡ {  
ags
; 
	}
}

991 
	$t_ags
(
u_t32_t
 
vue
{ 
ags
 = vue; 
	}
}

994 
DBT
 *
	$g_DBT
({  (
DBT
 *)
this
; 
	}
}

995 cڡ 
DBT
 *
	$g_cڡ_DBT
(cڡ {  (cڡ 
DBT
 *)
this
; 
	}
}

997 
Dbt
* 
	$g_Dbt
(
DBT
 *
dbt
{  (
Dbt
 *)dbt; 
	}
}

998 cڡ 
Dbt
* 
	$g_cڡ_Dbt
(cڡ 
DBT
 *
dbt
)

999 {  (cڡ 
Dbt
 *)
dbt
; 
	}
}

1001 
Dbt
(*
da
, 
u_t32_t
 
size
);

1002 
Dbt
();

1003 ~
Dbt
();

1004 
Dbt
(const Dbt &);

1005 
	gDbt
 &
	gݔ
 = (cڡ 
Dbt
 &);

1007 
	give
:

1028 as
	c_exp܋d
 
	mDbMuɝIt


1030 
	mpublic
:

1031 
DbMuɝIt
(cڡ 
Dbt
 &
dbt
);

1032 
	meed
:

1033 
u_t8_t
 *
da_
;

1034 
u_t32_t
 *
	mp_
;

1037 as
	c_exp܋d
 
	mDbMuɝKeyDaIt
 : 
ive
 
DbMuɝIt


1039 
public
:

1040 
	$DbMuɝKeyDaIt
(cڡ 
Dbt
 &
dbt
: 
	$DbMuɝIt
(
dbt
) {}

1041 
bo
 
	`xt
(
Dbt
 &
key
, Db&
da
);

1042 
	}
};

1044 as
	c_exp܋d
 
	mDbMuɝReoDaIt
 : 
ive
 
DbMuɝIt


1046 
public
:

1047 
	$DbMuɝReoDaIt
(cڡ 
Dbt
 &
dbt
: 
	$DbMuɝIt
(
dbt
) {}

1048 
bo
 
	`xt
(
db_o_t
 &
o
, 
Dbt
 &
da
);

1049 
	}
};

1051 as
	c_exp܋d
 
	mDbMuɝDaIt
 : 
ive
 
DbMuɝIt


1053 
public
:

1054 
	$DbMuɝDaIt
(cڡ 
Dbt
 &
dbt
: 
	$DbMuɝIt
(
dbt
) {}

1055 
bo
 
	`xt
(
Dbt
 &
da
);

1056 
	}
};

1068 as
	c_exp܋d
 
	mDbExi
 : 
public
 
	$__DB_STD
(
exi
)

1070 
public
:

1071 
vtu
 ~
	$DbExi
(
	`throw
();

1072 
	`DbExi
(
r
);

1073 
	`DbExi
(cڡ *
desti
);

1074 
	`DbExi
(cڡ *
desti
, 
r
);

1075 
	`DbExi
(cڡ *
efix
, cڡ *
desti
, 
r
);

1076 
	$g_o
() const;

1077 
vtu
 cڡ *
	$wh
(cڡ 
	`throw
();

1078 
DbEnv
 *
	$g_v
() const;

1079 
	`t_v
(
DbEnv
 *
v
);

1081 
	`DbExi
(cڡ 
DbExi
 &);

1082 
DbExi
 &
ݔ
 = (const DbException &);

1084 
ive
:

1085 
	`desibe
(cڡ *
efix
, cڡ *
desti
);

1087 *
wh_
;

1088 
r_
;

1089 
DbEnv
 *
v_
;

1096 as
	c_exp܋d
 
DbDdlockExi
 : 
public
 
DbExi


1098 
public
:

1099 
vtu
 ~
	$DbDdlockExi
(
	`throw
();

1100 
	`DbDdlockExi
(cڡ *
desti
);

1102 
	`DbDdlockExi
(cڡ 
DbDdlockExi
 &);

1103 
DbDdlockExi
 &
ݔ
 = (const DbDeadlockException &);

1112 as
	c_exp܋d
 
DbLockNGedExi
 : 
public
 
DbExi


1114 
public
:

1115 
vtu
 ~
	$DbLockNGedExi
(
	`throw
();

1116 
	`DbLockNGedExi
(cڡ *
efix
, 
db_lock_t
 

,

1117 
db_lockmode_t
 
mode
, cڡ 
Dbt
 *
obj
, cڡ 
DbLock
 
lock
, 
dex
);

1118 
	`DbLockNGedExi
(cڡ *
desti
);

1120 
	`DbLockNGedExi
(cڡ 
DbLockNGedExi
 &);

1121 
DbLockNGedExi
 &
ݔ
 =

1122 (cڡ 
DbLockNGedExi
 &);

1124 
db_lock_t
 
	$g_
() const;

1125 
db_lockmode_t
 
	$g_mode
() const;

1126 cڡ 
Dbt
* 
	$g_obj
() const;

1127 
DbLock
 *
	$g_lock
() const;

1128 
	$g_dex
() const;

1130 
ive
:

1131 
db_lock_t
 
_
;

1132 
db_lockmode_t
 
mode_
;

1133 cڡ 
Dbt
 *
obj_
;

1134 
DbLock
 *
lock_
;

1135 
dex_
;

1142 as
	c_exp܋d
 
DbMemyExi
 : 
public
 
DbExi


1144 
public
:

1145 
vtu
 ~
	$DbMemyExi
(
	`throw
();

1146 
	`DbMemyExi
(
Dbt
 *
dbt
);

1147 
	`DbMemyExi
(cڡ *
efix
, 
Dbt
 *
dbt
);

1149 
	`DbMemyExi
(cڡ 
DbMemyExi
 &);

1150 
DbMemyExi
 &
ݔ
 = (const DbMemoryException &);

1152 
Dbt
 *
	$g_dbt
() const;

1153 
ive
:

1154 
Dbt
 *
dbt_
;

1161 as
	c_exp܋d
 
DbRHdDdExi
 : 
public
 
DbExi


1163 
public
:

1164 
vtu
 ~
	$DbRHdDdExi
(
	`throw
();

1165 
	`DbRHdDdExi
(cڡ *
desti
);

1167 
	`DbRHdDdExi
(cڡ 
DbRHdDdExi
 &);

1168 
DbRHdDdExi
 &
ݔ
 = (const DbRepHandleDeadException &);

1175 as
	c_exp܋d
 
DbRunRecovyExi
 : 
public
 
DbExi


1177 
public
:

1178 
vtu
 ~
	$DbRunRecovyExi
(
	`throw
();

1179 
	`DbRunRecovyExi
(cڡ *
desti
);

1181 
	`DbRunRecovyExi
(cڡ 
DbRunRecovyExi
 &);

1182 
DbRunRecovyExi
 &
ݔ
 = (const DbRunRecoveryException &);

1193 #ifde
_MSC_VER


1194 #agm
	`wng
(
p
)

	@../dbinc/db_dispatch.h

37 #ide
_DB_DISPATCH_H_


38 
	#_DB_DISPATCH_H_


	)

40 #i
defed
(
__lulus
)

50 
TXNLIST_DELETE
,

51 
TXNLIST_LSN
,

52 
TXNLIST_PGNO
,

53 
TXNLIST_TXNID


54 } 
	tdb_txi_ty
;

56 
	#DB_TXNLIST_MASK
(
hp
, 
n
 % hp->
ns
)

	)

57 
	s__db_txnhd
 {

58 *
td
;

59 
u_t32_t
 
maxid
;

60 
DB_LSN
 
maxl
;

61 
DB_LSN
 
ck
;

62 
DB_LSN
 
unc_l
;

64 
u_t32_t
 
gi
;

65 
u_t32_t
 
g_loc
;

67 
u_t32_t
 
gi
;

68 
u_t32_t
 
txn_m
;

69 
u_t32_t
 
txn_max
;

70 } *
g_y
;

71 
u_t
 
ns
;

72 
LIST_HEAD
(
__db_hdlk
, 
__db_txi

hd
[1];

75 
	#DB_LSN_STACK_SIZE
 4

	)

76 
	s__db_txi
 {

77 
db_txi_ty
 
ty
;

78 
LIST_ENTRY
(
__db_txi

lks
;

81 
u_t32_t
 
txnid
;

82 
u_t32_t
 
gi
;

83 
u_t32_t
 
us
;

84 } 
t
;

86 
u_t32_t
 
ack_size
;

87 
u_t32_t
 
ack_dx
;

88 
DB_LSN
 *
l_ack
;

89 } 
l
;

91 
u_t32_t
 
rs
;

92 
u_t32_t
 
maxy
;

93 
t32_t
 
locked
;

94 *
ame
;

95 
t32_t
 
feid
;

96 
db_pgno_t
 *
pgno_y
;

97 
u_t8_t
 
uid
[
DB_FILE_ID_LEN
];

98 } 
p
;

99 } 
u
;

106 
LIMBO_NORMAL
,

107 
LIMBO_PREPARE
,

108 
LIMBO_RECOVER
,

109 
LIMBO_TIMESTAMP
,

110 
LIMBO_COMPENSATE


111 } 
	tdb_limbo_e
;

113 #i
defed
(
__lulus
)

	@../dbinc/db_int.in

9 #ide
_DB_INT_H_


10 
	#_DB_INT_H_


	)

15 #ifde
HAVE_SYSTEM_INCLUDE_FILES


16 
	~<sys/tys.h
>

17 #ifde
DIAG_MVCC


18 
	~<sys/mm.h
>

20 
	~<sys/.h
>

22 #i
defed
(
__INCLUDE_SELECT_H
)

23 #ifde
HAVE_SYS_SELECT_H


24 
	~<sys/.h
>

26 #ifde
HAVE_VXWORKS


27 
	~<Lib.h
>

31 #i
TIME_WITH_SYS_TIME


32 
	~<sys/time.h
>

33 
	~<time.h
>

35 #i
HAVE_SYS_TIME_H


36 
	~<sys/time.h
>

38 
	~<time.h
>

42 #ifde
HAVE_VXWORKS


43 
	~<t/uio.h
>

45 
	~<sys/uio.h
>

48 #i
defed
(
__INCLUDE_NETWORKING
)

49 #ifde
HAVE_SYS_SOCKET_H


50 
	~<sys/sock.h
>

52 
	~<t/.h
>

53 
	~<tdb.h
>

54 
	~</.h
>

57 #i
defed
(
STDC_HEADERS
|| defed(
__lulus
)

58 
	~<dg.h
>

60 
	~<vgs.h
>

63 
	~<y.h
>

64 
	~<o.h
>

65 
	~<f.h
>

66 
	~<lims.h
>

67 
	~<sigl.h
>

68 
	~<ddef.h
>

69 
	~<dio.h
>

70 
	~<dlib.h
>

71 
	~<rg.h
>

72 
	~<unid.h
>

74 #i
defed
(
__INCLUDE_DIRECTORY
)

75 #i
HAVE_DIRENT_H


76 
	~<dt.h
>

77 
	#NAMLEN
(
dt

	`
((dt)->
d_me
)

	)

79 
	#dt
 
de


	)

80 
	#NAMLEN
(
dt
(dt)->
d_mn


	)

81 #i
HAVE_SYS_NDIR_H


82 
	~<sys/nd.h
>

84 #i
HAVE_SYS_DIR_H


85 
	~<sys/d.h
>

87 #i
HAVE_NDIR_H


88 
	~<nd.h
>

95 #ifde
DB_WIN32


96 
	~"dbc/w_db.h
"

99 
	~"db.h
"

100 
	~"ib_pt.h
"

102 
	~"dbc/queue.h
"

103 
	~"dbc/shqueue.h
"

105 #i
defed
(
__lulus
)

112 #unde
FALSE


113 
	#FALSE
 0

	)

114 #unde
TRUE


115 
	#TRUE
 (!
FALSE
)

	)

117 
	#MEGABYTE
 1048576

	)

118 
	#GIGABYTE
 1073741824

	)

120 
	#NS_PER_MS
 1000000

	)

121 
	#NS_PER_US
 1000

	)

122 
	#NS_PER_SEC
 1000000000

	)

123 
	#US_PER_MS
 1000

	)

124 
	#US_PER_SEC
 1000000

	)

125 
	#MS_PER_NS
 1000000

	)

126 
	#MS_PER_SEC
 1000

	)

128 
	#RECNO_OOB
 0

	)

131 
	#POWER_OF_TWO
(
x
(((x& ((x- 1)=0)

	)

134 
	#DB_MIN_PGSIZE
 0x000200

	)

135 
	#DB_MAX_PGSIZE
 0x010000

	)

136 
	#IS_VALID_PAGESIZE
(
x
) \

137 (
	`POWER_OF_TWO
(
x
&& (x>
DB_MIN_PGSIZE
 && ((x<
DB_MAX_PGSIZE
))

	)

140 
	#DB_MINPAGECACHE
 16

	)

146 
	#DB_DEF_IOSIZE
 (8 * 1024)

	)

149 #unde
DB_ALIGN


150 
	#DB_ALIGN
(
v
, 
bound
) \

151 (((
v
+ (
bound
- 1& ~(((
utmax_t
)(bound)- 1))

	)

154 #unde
ALIGNP_INC


155 
	#ALIGNP_INC
(
p
, 
bound
) \

156 (*)(((
u_t
)(
p
+ (
bound
- 1& ~(((u_t)(bound)- 1))

	)

163 
	#P_TO_ULONG
(
p
((
u_lg
)(
u_t
)))

	)

173 
	#P_TO_UINT32
(
p
((
u_t32_t
)(
u_t
)))

	)

174 
	#P_TO_UINT16
(
p
((
u_t16_t
)(
u_t
)))

	)

189 #unde
SSZ


190 
	#SSZ
(
me
, 
fld

	`P_TO_UINT16
(&((am*)0)->fld))

	)

192 #unde
SSZA


193 
	#SSZA
(
me
, 
fld

	`P_TO_UINT16
(&((am*)0)->fld[0]))

	)

196 
	s__
 {

197 
u_t32_t
 
mask
;

198 cڡ *
me
;

199 } 
	tFN
;

202 
	#FLD_CLR
(
d
, 
f
(d&~(f)

	)

203 
	#FLD_ISSET
(
d
, 
f
((d& (f))

	)

204 
	#FLD_SET
(
d
, 
f
(d|(f)

	)

205 
	#F_CLR
(
p
, 
f
)->
ags
 &~(f)

	)

206 
	#F_ISSET
(
p
, 
f
()->
ags
 & (f))

	)

207 
	#F_SET
(
p
, 
f
)->
ags
 |(f)

	)

208 
	#LF_CLR
(
f
((
ags
&~(f))

	)

209 
	#LF_ISSET
(
f
((
ags
& (f))

	)

210 
	#LF_SET
(
f
((
ags
|(f))

	)

220 
	#DB_PCT
(
v
, 
tٮ
) \

221 (()((
tٮ
=0 ? 0 : (()(
v
* 100/ (tٮ)))

	)

222 
	#DB_PCT_PG
(
v
, 
tٮ
, 
pgsize
) \

223 (()((
tٮ
) == 0 ? 0 : \

224 100 - (()(
v
* 100/ ((()
tٮ
* (
pgsize
))))

	)

230 #unde
STAT


231 #ifdef 
HAVE_STATISTICS


232 
	#STAT
(
x

	)
x

234 
	#STAT
(
x
)

	)

242 
	s__db_msgbuf
 {

243 *
buf
;

244 *
cur
;

245 
size_t
 
n
;

246 } 
	tDB_MSGBUF
;

247 
	#DB_MSGBUF_INIT
(
a
) do { \

248 (
a
)->
buf
 = (a)->
cur
 = 
NULL
; \

249 (
a
)->
n
 = 0; \

250 } 0)

	)

251 
	#DB_MSGBUF_FLUSH
(
dbv
, 
a
) do { \

252 i((
a
)->
buf
 !
NULL
) { \

253 i((
a
)->
cur
 !)->
buf
) \

254 
	`__db_msg
(
dbv
, "%s", (
a
)->
buf
); \

255 
	`__os_
(
dbv
, (
a
)->
buf
); \

256 
	`DB_MSGBUF_INIT
(
a
); \

258 } 0)

	)

259 
	#STAT_FMT
(
msg
, 
fmt
, 
ty
, 
v
) do { \

260 
DB_MSGBUF
 
__mb
; \

261 
	`DB_MSGBUF_INIT
(&
__mb
); \

262 
	`__db_msgadd
(
dbv
, &
__mb
, 
fmt
, (
ty
)(
v
)); \

263 
	`__db_msgadd
(
dbv
, &
__mb
, "\t%s", 
msg
); \

264 
	`DB_MSGBUF_FLUSH
(
dbv
, &
__mb
); \

265 } 0)

	)

266 
	#STAT_HEX
(
msg
, 
v
) \

267 
	`__db_msg
(
dbv
, "%#lx\t%s", (
u_lg
)(
v
), 
msg
)

	)

268 
	#STAT_ISSET
(
msg
, 
p
) \

269 
	`__db_msg
(
dbv
, "%sS\t%s", (
p
=
NULL
 ? "!" : " ", 
msg
)

	)

270 
	#STAT_LONG
(
msg
, 
v
) \

271 
	`__db_msg
(
dbv
, "%ld\t%s", ()(
v
), 
msg
)

	)

272 
	#STAT_LSN
(
msg
, 
lp
) \

273 
	`__db_msg
(
dbv
, "%lu/%lu\t%s", \

274 (
u_lg
)(
lp
)->
fe
, (u_lg)֢p)->
offt
, 
msg
)

	)

275 
	#STAT_POINTER
(
msg
, 
v
) \

276 
	`__db_msg
(
dbv
, "%#lx\t%s", 
	`P_TO_ULONG
(
v
), 
msg
)

	)

277 
	#STAT_STRING
(
msg
, 
p
) do { \

278 cڡ *
__p
 = 
p
; \

279 
	`__db_msg
(
dbv
, "%s\t%s", 
__p
 =
NULL
 ? "!S" : __p, 
msg
); \

280 } 0)

	)

281 
	#STAT_ULONG
(
msg
, 
v
) \

282 
	`__db_msg
(
dbv
, "%lu\t%s", (
u_lg
)(
v
), 
msg
)

	)

290 
	#DB_SET_DBT
(
dbt
, 
d
, 
s
) do { \

291 (
dbt
).
da
 = (*)(
d
); \

292 (
dbt
).
size
 = (
u_t32_t
)(
s
); \

293 } 0)

	)

294 
	#DB_INIT_DBT
(
dbt
, 
d
, 
s
) do { \

295 
	`memt
(&(
dbt
), 0, (dbt)); \

296 
	`DB_SET_DBT
(
dbt
, 
d
, 
s
); \

297 } 0)

	)

307 
	#DB_RETOK_STD
(
t
(ԑ=0)

	)

308 
	#DB_RETOK_DBCDEL
(
t
(ԑ=0 || (t=
DB_KEYEMPTY
 || \

309 (
t
=
DB_NOTFOUND
)

	)

310 
	#DB_RETOK_DBCGET
(
t
(ԑ=0 || (t=
DB_KEYEMPTY
 || \

311 (
t
=
DB_NOTFOUND
)

	)

312 
	#DB_RETOK_DBCPUT
(
t
(ԑ=0 || (t=
DB_KEYEXIST
 || \

313 (
t
=
DB_NOTFOUND
)

	)

314 
	#DB_RETOK_DBDEL
(
t

	`DB_RETOK_DBCDEL
ԑ)

	)

315 
	#DB_RETOK_DBGET
(
t

	`DB_RETOK_DBCGET
ԑ)

	)

316 
	#DB_RETOK_DBPUT
(
t
(ԑ=0 || (t=
DB_KEYEXIST
)

	)

317 
	#DB_RETOK_EXISTS
(
t

	`DB_RETOK_DBCGET
ԑ)

	)

318 
	#DB_RETOK_LGGET
(
t
(ԑ=0 || (t=
DB_NOTFOUND
)

	)

319 
	#DB_RETOK_MPGET
(
t
(ԑ=0 || (t=
DB_PAGE_NOTFOUND
)

	)

320 
	#DB_RETOK_REPPMSG
(
t
) ((ret) == 0 || \

321 (
t
=
DB_REP_IGNORE
 || \

322 (
t
=
DB_REP_ISPERM
 || \

323 (
t
=
DB_REP_NEWMASTER
 || \

324 (
t
=
DB_REP_NEWSITE
 || \

325 (
t
=
DB_REP_NOTPERM
)

	)

328 #ifdef 
EOPNOTSUPP


329 
	#DB_OPNOTSUP
 
EOPNOTSUPP


	)

331 #ifdef 
ENOTSUP


332 
	#DB_OPNOTSUP
 
ENOTSUP


	)

334 
	#DB_OPNOTSUP
 
EINVAL


	)

346 
	#DB_MAXPATHLEN
 1024

	)

348 
	#PATH_DOT
 "."

	)

350 
	#PATH_SEPARATOR
 "@PATH_SEPARATOR@"

	)

357 
DB_APP_NONE
=0,

358 
DB_APP_DATA
,

359 
DB_APP_LOG
,

360 
DB_APP_TMP


361 } 
	tAPPNAME
;

382 
	#ALIVE_ON
(
dbv
((dbv)->
is_ive
 !
NULL
)

	)

383 
	#CDB_LOCKING
(
dbv

	`F_ISSET
(dbv, 
DB_ENV_CDB
)

	)

384 
	#CRYPTO_ON
(
dbv
((dbv)->
yo_hd
 !
NULL
)

	)

385 
	#LOCKING_ON
(
dbv
((dbv)->
lk_hd
 !
NULL
)

	)

386 
	#LOGGING_ON
(
dbv
((dbv)->
lg_hd
 !
NULL
)

	)

387 
	#MPOOL_ON
(
dbv
((dbv)->
mp_hd
 !
NULL
)

	)

388 
	#MUTEX_ON
(
dbv
((dbv)->
mux_hd
 !
NULL
)

	)

389 
	#REP_ON
(
dbv
) \

390 ((
dbv
)->
p_hd
 !
NULL
 && (dbv)->p_hd->
gi
 !NULL)

	)

391 
	#RPC_ON
(
dbv
((dbv)->
_hd
 !
NULL
)

	)

392 
	#TXN_ON
(
dbv
((dbv)->
tx_hd
 !
NULL
)

	)

399 
	#STD_LOCKING
(
dbc
) \

400 (!
	`F_ISSET
(
dbc
, 
DBC_OPD
) && \

401 !
	`CDB_LOCKING
((
dbc
)->
dbp
->
dbv
&& 
	`LOCKING_ON
((dbc)->dbp->dbv))

	)

406 
	#IS_RECOVERING
(
dbv
) \

407 (
	`LOGGING_ON
(
dbv
&& 
	`F_ISSET
((dbv)->
lg_hd
, 
DBLOG_RECOVER
))

	)

410 
	#ENV_ILLEGAL_AFTER_OPEN
(
dbv
, 
me
) \

411 i(
	`F_ISSET
((
dbv
), 
DB_ENV_OPEN_CALLED
)) \

412  (
	`__db_mi_ݒ
(
dbv
, 
me
, 1));

	)

413 
	#ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, 
me
) \

414 i(!
	`F_ISSET
((
dbv
), 
DB_ENV_OPEN_CALLED
)) \

415  (
	`__db_mi_ݒ
(
dbv
, 
me
, 0));

	)

418 
	#ENV_REQUIRES_CONFIG
(
dbv
, 
hd
, 
i
, 
ags
) \

419 i(
hd
 =
NULL
) \

420  (
	`__db_v_cfig
(
dbv
, 
i
, 
ags
));

	)

421 
	#ENV_REQUIRES_CONFIG_XX
(
dbv
, 
hd
, 
i
, 
ags
) \

422 i((
dbv
)->
hd
->
gi
 =
NULL
) \

423  (
	`__db_v_cfig
(
dbv
, 
i
, 
ags
));

	)

424 
	#ENV_NOT_CONFIGURED
(
dbv
, 
hd
, 
i
, 
ags
) \

425 i(
	`F_ISSET
((
dbv
), 
DB_ENV_OPEN_CALLED
)) \

426 
	`ENV_REQUIRES_CONFIG
(
dbv
, 
hd
, 
i
, 
ags
)

	)

428 
	#ENV_ENTER
(
dbv
, 

) do { \

429 
__t
; \

430 i((
dbv
)->
thr_hashb
 =
NULL
) \

431 

 = 
NULL
; \

433 i((
__t
 = \

434 
	`__v_t_e
(
dbv
, &(

), 
THREAD_ACTIVE
)) != 0) \

435  (
__t
); \

437 } 0)

	)

439 #ifde
DIAGNOSTIC


440 
	#ENV_LEAVE
(
dbv
, 

) do { \

441 i((

!
NULL
) { \

442 
	`DB_ASSERT
(
dbv
, (

)->
dbth_e
 =
THREAD_ACTIVE
); \

443 (

)->
dbth_e
 = 
THREAD_OUT
; \

445 } 0)

	)

447 
	#ENV_LEAVE
(
dbv
, 

) do { \

448 i((

!
NULL
) \

449 (

)->
dbth_e
 = 
THREAD_OUT
; \

450 } 0)

	)

452 #ifde
DIAGNOSTIC


453 
	#CHECK_THREAD
(
dbv
) do { \

454 
DB_THREAD_INFO
 *
__
; \

455 i((
dbv
)->
thr_hashb
 !
NULL
) { \

456 ()
	`__v_t_e
(
dbv
, &
__
, 
THREAD_DIAGNOSTIC
); \

457 
	`DB_ASSERT
(
dbv
, \

458 
__
 !
NULL
 && __->
dbth_e
 !
THREAD_OUT
); \

460 } 0)

	)

461 #ifde
HAVE_STATISTICS


462 
	#CHECK_MTX_THREAD
(
dbv
, 
mtx
) do { \

463 i(
mtx
->
loc_id
 !
MTX_MUTEX_REGION
 && \

464 
mtx
->
loc_id
 !
MTX_ENV_REGION
 && \

465 
mtx
->
loc_id
 !
MTX_APPLICATION
) \

466 
	`CHECK_THREAD
(
dbv
); \

467 } 0)

	)

469 
	#CHECK_MTX_THREAD
(
dbv
, 
mtx
)

	)

472 
	#CHECK_THREAD
(
dbv
)

	)

473 
	#CHECK_MTX_THREAD
(
dbv
, 
mtx
)

	)

477 
THREAD_SLOT_NOT_IN_USE
=0,

478 
THREAD_OUT
,

479 
THREAD_ACTIVE
,

480 
THREAD_BLOCKED


481 #ifde
DIAGNOSTIC


482 , 
THREAD_DIAGNOSTIC


484 } 
	tDB_THREAD_STATE
;

486 
	s__db_thad_fo
 {

487 
pid_t
 
dbth_pid
;

488 
db_thadid_t
 
dbth_tid
;

489 
DB_THREAD_STATE
 
dbth_e
;

490 
SH_TAILQ_ENTRY
 
dbth_lks
;

491 } 
	tDB_THREAD_INFO
;

493 
	s__v_thad_fo
 {

494 
u_t32_t
 
thr_cou
;

495 
u_t32_t
 
thr_max
;

496 
u_t32_t
 
thr_nbuck
;

497 
roff_t
 
thr_hashoff
;

498 } 
	tTHREAD_INFO
;

500 
	#DB_EVENT
(
dbv
, 
e
, 
efo
) do { \

501 i((
dbv
)->
db_evt_func
 !
NULL
) \

502 (
dbv
)->
	`db_evt_func
(dbv, 
e
, 
efo
); \

503 } 0)

	)

512 
	#DB_IS_THREADED
(
dbp
) \

513 ((
dbp
)->
mux
 !
MUTEX_INVALID
)

	)

516 
	#DB_ILLEGAL_AFTER_OPEN
(
dbp
, 
me
) \

517 i(
	`F_ISSET
((
dbp
), 
DB_AM_OPEN_CALLED
)) \

518  (
	`__db_mi_ݒ
((
dbp
)->
dbv
, 
me
, 1));

	)

519 
	#DB_ILLEGAL_BEFORE_OPEN
(
dbp
, 
me
) \

520 i(!
	`F_ISSET
((
dbp
), 
DB_AM_OPEN_CALLED
)) \

521  (
	`__db_mi_ݒ
((
dbp
)->
dbv
, 
me
, 0));

	)

523 
	#DB_ILLEGAL_IN_ENV
(
dbp
, 
me
) \

524 i(!
	`F_ISSET
((
dbp
)->
dbv
, 
DB_ENV_DBLOCAL
)) \

525  (
	`__db_mi_v
((
dbp
)->
dbv
, 
me
));

	)

526 
	#DB_ILLEGAL_METHOD
(
dbp
, 
ags
) { \

527 
__t
; \

528 i((
__t
 = 
	`__dbh_am_chk
(
dbp
, 
ags
)) != 0) \

529  (
__t
); \

530 }

	)

536 
	#__DBC_INTERNAL
 \

537 
DBC
 *
d
; \

539 *
ge
; \

540 
db_pgno_t
 
ro
; \

541 
db_pgno_t
 
pgno
; \

542 
db_dx_t
 
dx
; \

544 
DB_LOCK
 
lock
; \

545 
db_lockmode_t
 
lock_mode
;

	)

547 
	s__dbc_
 {

548 
__DBC_INTERNAL


552 um { 
MU_REMOVE
, 
MU_RENAME
, 
MU_OPEN
 } 
	tmu_ai
;

558 
	#IS_INITIALIZED
(
dbc
((dbc)->

->
pgno
 !
PGNO_INVALID
)

	)

561 
	#FREE_IF_NEEDED
(
dbv
, 
dbt
) \

562 i(
	`F_ISSET
((
dbt
), 
DB_DBT_APPMALLOC
)) { \

563 
	`__os_u
((
dbv
), (
dbt
)->
da
); \

564 
	`F_CLR
((
dbt
), 
DB_DBT_APPMALLOC
); \

565 }

	)

571 
	#SET_RET_MEM
(
dbc
, 
owr
) \

573 (
dbc
)->
rskey
 = &(
owr
)->
my_rskey
; \

574 (
dbc
)->
rkey
 = &(
owr
)->
my_rkey
; \

575 (
dbc
)->
rda
 = &(
owr
)->
my_rda
; \

576 } 0)

	)

579 
	#COPY_RET_MEM
(
c
, 
de
) \

581 (
de
)->
rskey
 = (
c
)->rskey; \

582 (
de
)->
rkey
 = (
c
)->rkey; \

583 (
de
)->
rda
 = (
c
)->rdata; \

584 } 0)

	)

587 
	#RESET_RET_MEM
(
dbc
) \

589 (
dbc
)->
rskey
 = &(dbc)->
my_rskey
; \

590 (
dbc
)->
rkey
 = &(dbc)->
my_rkey
; \

591 (
dbc
)->
rda
 = &(dbc)->
my_rda
; \

592 } 0)

	)

600 
	#DB_FTYPE_SET
 -1

	)

601 
	#DB_FTYPE_NOTSET
 0

	)

602 
	#DB_LSN_OFF_NOTSET
 -1

	)

603 
	#DB_CLEARLEN_NOTSET
 
UINT32_MAX


	)

606 
	s__dbpgfo
 {

607 
size_t
 
db_gesize
;

608 
u_t32_t
 
ags
;

609 
DBTYPE
 
ty
;

610 } 
	tDB_PGINFO
;

616 
	#ZERO_LSN
(
LSN
) do { \

617 (
LSN
).
fe
 = 0; \

618 (
LSN
).
offt
 = 0; \

619 } 0)

	)

620 
	#IS_ZERO_LSN
(
LSN
((LSN).
fe
 =0 && (LSN).
offt
 =0)

	)

622 
	#IS_INIT_LSN
(
LSN
((LSN).
fe
 =1 && (LSN).
offt
 =0)

	)

623 
	#INIT_LSN
(
LSN
) do { \

624 (
LSN
).
fe
 = 1; \

625 (
LSN
).
offt
 = 0; \

626 } 0)

	)

628 
	#MAX_LSN
(
LSN
) do { \

629 (
LSN
).
fe
 = 
UINT32_MAX
; \

630 (
LSN
).
offt
 = 
UINT32_MAX
; \

631 } 0)

	)

632 
	#IS_MAX_LSN
(
LSN
) \

633 ((
LSN
).
fe
 =
UINT32_MAX
 && (LSN).
offt
 =UINT32_MAX)

	)

636 
	#LSN_NOT_LOGGED
(
LSN
) do { \

637 (
LSN
).
fe
 = 0; \

638 (
LSN
).
offt
 = 1; \

639 } 0)

	)

640 
	#IS_NOT_LOGGED_LSN
(
LSN
) \

641 ((
LSN
).
fe
 =0 && (LSN).
offt
 =1)

	)

647 
	#LOG_COMPARE
(
l0
, 
l1
) \

648 ((
l0
)->
fe
 !(
l1
)->file ? \

649 ((
l0
)->
fe
 < (
l1
)->file ? -1 : 1) : \

650 ((
l0
)->
offt
 !(
l1
)->offset ? \

651 ((
l0
)->
offt
 < (
l1
)->off? -1 : 1: 0))

	)

656 
	#DB_NONBLOCK
(
C
((C)->
txn
 !
NULL
 && 
	`F_ISSET
((C)->txn, 
TXN_NOWAIT
))

	)

657 
	#NOWAIT_FLAG
(
txn
) \

658 ((
txn
!
NULL
 && 
	`F_ISSET
(xn), 
TXN_NOWAIT
? 
DB_LOCK_NOWAIT
 : 0)

	)

659 
	#IS_REAL_TXN
(
txn
) \

660 ((
txn
!
NULL
 && !
	`F_ISSET
xn, 
TXN_CDSGROUP
))

	)

661 
	#IS_SUBTRANSACTION
(
txn
) \

662 ((
txn
!
NULL
 && (txn)->

 !NULL)

	)

667 
	#DB_IV_BYTES
 16

	)

668 
	#DB_MAC_KEY
 20

	)

673 #ifde
CONFIG_TEST


684 
	#DB_RPC2ND_MASK
 0x00f00000

	)

686 
	#DB_RPC2ND_REVERSEDATA
 0x00100000

	)

687 
	#DB_RPC2ND_NOOP
 0x00200000

	)

688 
	#DB_RPC2ND_CONCATKEYDATA
 0x00300000

	)

689 
	#DB_RPC2ND_CONCATDATAKEY
 0x00400000

	)

690 
	#DB_RPC2ND_REVERSECONCAT
 0x00500000

	)

691 
	#DB_RPC2ND_TRUNCDATA
 0x00600000

	)

692 
	#DB_RPC2ND_CONSTANT
 0x00700000

	)

693 
	#DB_RPC2ND_GETZIP
 0x00800000

	)

694 
	#DB_RPC2ND_GETNAME
 0x00900000

	)

700 
__db_gfo_t
; __db_gfo_
	tREGINFO
;

701 
__db_txnhd
; __db_txnhd 
	tDB_TXNHEAD
;

702 
__db_txi
; __db_txi 
	tDB_TXNLIST
;

703 
__vrfy_chdfo
;__vrfy_chdf
	tVRFY_CHILDINFO
;

704 
__vrfy_dbfo
; __vrfy_dbf
	tVRFY_DBINFO
;

705 
__vrfy_gefo
; __vrfy_gef
	tVRFY_PAGEINFO
;

707 
SH_TAILQ_HEAD
(
	t__hash_hd

	tDB_HASHTAB
;

709 #i
defed
(
__lulus
)

716 @
db_t_def
@

718 
	~"dbc/globs.h
"

719 
	~"dbc/ock.h
"

720 
	~"dbc/debug.h
"

721 
	~"dbc/gi.h
"

722 
	~"dbc_auto/v_ext.h
"

723 
	~"dbc/mux.h
"

724 
	~"dbc/os.h
"

725 #ifde
HAVE_REPLICATION_THREADS


726 
	~"dbc/pmgr.h
"

728 
	~"dbc/p.h
"

729 
	~"dbc_auto/ib_ext.h
"

730 
	~"dbc_auto/comm_ext.h
"

742 
	#DBENV_LOGGING
(
dbv
) \

743 (
	`LOGGING_ON
(
dbv
&& !
	`IS_REP_CLIENT
(dbenv) && \

744 (!
	`IS_RECOVERING
(
dbv
)))

	)

765 #i
defed
(
DIAGNOSTIC
|| defed(
DEBUG_ROP
|| defed(
DEBUG_WOP
)

766 
	#DBC_LOGGING
(
dbc

	`__dbc_loggg
(dbc)

	)

768 
	#DBC_LOGGING
(
dbc
) \

769 ((
dbc
)->
txn
 !
NULL
 && 
	`LOGGING_ON
((dbc)->
dbp
->
dbv
) && \

770 !
	`F_ISSET
((
dbc
), 
DBC_RECOVER
&& !
	`IS_REP_CLIENT
((dbc)->
dbp
->
dbv
))

	)

	@../dbinc/db_join.h

9 #ide
_DB_JOIN_H_


10 
	#_DB_JOIN_H_


	)

12 #i
defed
(
__lulus
)

21 
	s__jo_curs
 {

22 
u_t8_t
 *
j_exhaued
;

23 
DBC
 **
j_curi
;

24 
DBC
 **
j_fdupcurs
;

25 
DBC
 **
j_wkcurs
;

26 
DB
 *
j_imy
;

27 
DBT
 
j_key
;

28 
DBT
 
j_rda
;

29 
u_t32_t
 
j_ncurs
;

30 
	#JOIN_RETRY
 0x01

	)

31 
u_t32_t
 
ags
;

32 } 
	tJOIN_CURSOR
;

34 #i
defed
(
__lulus
)

	@../dbinc/db_page.h

9 #ide
_DB_PAGE_H_


10 
	#_DB_PAGE_H_


	)

12 #i
defed
(
__lulus
)

32 
	#PGNO_INVALID
 0

	)

33 
	#PGNO_BASE_MD
 0

	)

36 
	#P_INVALID
 0

	)

37 
	#__P_DUPLICATE
 1

	)

38 
	#P_HASH_UNSORTED
 2

	)

39 
	#P_IBTREE
 3

	)

40 
	#P_IRECNO
 4

	)

41 
	#P_LBTREE
 5

	)

42 
	#P_LRECNO
 6

	)

43 
	#P_OVERFLOW
 7

	)

44 
	#P_HASHMETA
 8

	)

45 
	#P_BTREEMETA
 9

	)

46 
	#P_QAMMETA
 10

	)

47 
	#P_QAMDATA
 11

	)

48 
	#P_LDUP
 12

	)

49 
	#P_HASH
 13

	)

50 
	#P_PAGETYPE_MAX
 14

	)

52 
	#P_DONTEXTEND
 0x8000

	)

60 
	#DB_PAGE_DB_LEN
 32

	)

61 
	#DB_PAGE_QUEUE_LEN
 0

	)

70 
	s_dbma33
 {

71 
DB_LSN
 
l
;

72 
db_pgno_t
 
pgno
;

73 
u_t32_t
 
magic
;

74 
u_t32_t
 
vsi
;

75 
u_t32_t
 
gesize
;

76 
u_t8_t
 
y_g
;

77 
u_t8_t
 
ty
;

78 
	#DBMETA_CHKSUM
 0x01

	)

79 
u_t8_t
 
maags
;

80 
u_t8_t
 
unud1
;

81 
u_t32_t
 

;

82 
db_pgno_t
 
ϡ_pgno
;

83 
u_t32_t
 
unud3
;

84 
u_t32_t
 
key_cou
;

85 
u_t32_t
 
cd_cou
;

86 
u_t32_t
 
ags
;

88 
u_t8_t
 
uid
[
DB_FILE_ID_LEN
];

89 } 
	tDBMETA33
, 
	tDBMETA
;

94 
	s_btma33
 {

95 
	#BTM_DUP
 0x001

	)

96 
	#BTM_RECNO
 0x002

	)

97 
	#BTM_RECNUM
 0x004

	)

98 
	#BTM_FIXEDLEN
 0x008

	)

99 
	#BTM_RENUMBER
 0x010

	)

100 
	#BTM_SUBDB
 0x020

	)

101 
	#BTM_DUPSORT
 0x040

	)

102 
	#BTM_MASK
 0x07f

	)

103 
DBMETA
 
dbma
;

105 
u_t32_t
 
unud1
;

106 
u_t32_t
 
mkey
;

107 
u_t32_t
 
_n
;

108 
u_t32_t
 
_d
;

109 
u_t32_t
 
ro
;

110 
u_t32_t
 
unud2
[92];

111 
u_t32_t
 
yo_magic
;

112 
u_t32_t
 
ash
[3];

113 
u_t8_t
 
iv
[
DB_IV_BYTES
];

114 
u_t8_t
 
chksum
[
DB_MAC_KEY
];

119 } 
	tBTMETA33
, 
	tBTMETA
;

124 
	s_hashma33
 {

125 
	#DB_HASH_DUP
 0x01

	)

126 
	#DB_HASH_SUBDB
 0x02

	)

127 
	#DB_HASH_DUPSORT
 0x04

	)

128 
DBMETA
 
dbma
;

130 
u_t32_t
 
max_buck
;

131 
u_t32_t
 
high_mask
;

132 
u_t32_t
 
low_mask
;

133 
u_t32_t
 
f
;

134 
u_t32_t
 
m
;

135 
u_t32_t
 
h_chkey
;

136 
	#NCACHED
 32

	)

138 
u_t32_t
 
es
[
NCACHED
];

139 
u_t32_t
 
unud
[59];

140 
u_t32_t
 
yo_magic
;

141 
u_t32_t
 
ash
[3];

142 
u_t8_t
 
iv
[
DB_IV_BYTES
];

143 
u_t8_t
 
chksum
[
DB_MAC_KEY
];

148 } 
	tHMETA33
, 
	tHMETA
;

157 
	s_qma33
 {

158 
DBMETA
 
dbma
;

160 
u_t32_t
 
f_o
;

161 
u_t32_t
 
cur_o
;

162 
u_t32_t
 
_n
;

163 
u_t32_t
 
_d
;

164 
u_t32_t
 
c_ge
;

165 
u_t32_t
 
ge_ext
;

167 
u_t32_t
 
unud
[91];

168 
u_t32_t
 
yo_magic
;

169 
u_t32_t
 
ash
[3];

170 
u_t8_t
 
iv
[
DB_IV_BYTES
];

171 
u_t8_t
 
chksum
[
DB_MAC_KEY
];

175 } 
	tQMETA33
, 
	tQMETA
;

182 
	#DBMETASIZE
 512

	)

212 
	s__pg_chksum
 {

213 
u_t8_t
 
unud
[2];

214 
u_t8_t
 
chksum
[4];

215 } 
	tPG_CHKSUM
;

217 
	s__pg_yo
 {

218 
u_t8_t
 
unud
[2];

219 
u_t8_t
 
chksum
[
DB_MAC_KEY
];

220 
u_t8_t
 
iv
[
DB_IV_BYTES
];

224 } 
	tPG_CRYPTO
;

226 
	s_db_ge
 {

227 
DB_LSN
 
l
;

228 
db_pgno_t
 
pgno
;

229 
db_pgno_t
 
ev_pgno
;

230 
db_pgno_t
 
xt_pgno
;

231 
db_dx_t
 
s
;

232 
db_dx_t
 
hf_offt
;

242 
	#LEAFLEVEL
 1

	)

243 
	#MAXBTREELEVEL
 255

	)

244 
u_t8_t
 
v
;

245 
u_t8_t
 
ty
;

246 } 
	tPAGE
;

254 
	#SIZEOF_PAGE
 26

	)

259 
	#P_INP
(
dbp
, 
pg
) \

260 ((
db_dx_t
 *)((
u_t8_t
 *)(
pg
+ 
SIZEOF_PAGE
 + \

261 (
	`F_ISSET
((
dbp
), 
DB_AM_ENCRYPT
? (
PG_CRYPTO
) : \

262 (
	`F_ISSET
((
dbp
), 
DB_AM_CHKSUM
? (
PG_CHKSUM
: 0))))

	)

264 
	#P_IV
(
dbp
, 
pg
) \

265 (
	`F_ISSET
((
dbp
), 
DB_AM_ENCRYPT
? ((
u_t8_t
 *)(
pg
) + \

266 
SIZEOF_PAGE
 + 
	`SSZA
(
PG_CRYPTO
, 
iv
)) \

267 : 
NULL
)

	)

269 
	#P_CHKSUM
(
dbp
, 
pg
) \

270 (
	`F_ISSET
((
dbp
), 
DB_AM_ENCRYPT
? ((
u_t8_t
 *)(
pg
) + \

271 
SIZEOF_PAGE
 + 
	`SSZA
(
PG_CRYPTO
, 
chksum
)) : \

272 (
	`F_ISSET
((
dbp
), 
DB_AM_CHKSUM
? ((
u_t8_t
 *)(
pg
) + \

273 
SIZEOF_PAGE
 + 
	`SSZA
(
PG_CHKSUM
, 
chksum
)) \

274 : 
NULL
))

	)

277 
	#LSN
(
p
(((
PAGE
 *)->
l
)

	)

278 
	#PGNO
(
p
(((
PAGE
 *)->
pgno
)

	)

279 
	#PREV_PGNO
(
p
(((
PAGE
 *)->
ev_pgno
)

	)

280 
	#NEXT_PGNO
(
p
(((
PAGE
 *)->
xt_pgno
)

	)

281 
	#NUM_ENT
(
p
(((
PAGE
 *)->
s
)

	)

282 
	#HOFFSET
(
p
(((
PAGE
 *)->
hf_offt
)

	)

283 
	#LEVEL
(
p
(((
PAGE
 *)->
v
)

	)

284 
	#TYPE
(
p
(((
PAGE
 *)->
ty
)

	)

294 
	#QPAGE_NORMAL
 28

	)

295 
	#QPAGE_CHKSUM
 48

	)

296 
	#QPAGE_SEC
 64

	)

298 
	s_qge
 {

299 
DB_LSN
 
l
;

300 
db_pgno_t
 
pgno
;

301 
u_t32_t
 
unud0
[3];

302 
u_t8_t
 
unud1
[1];

303 
u_t8_t
 
ty
;

304 
u_t8_t
 
unud2
[2];

305 
u_t8_t
 
chksum
[
DB_MAC_KEY
];

306 
u_t8_t
 
iv
[
DB_IV_BYTES
];

307 } 
	tQPAGE
;

309 
	#QPAGE_SZ
(
dbp
) \

310 (
	`F_ISSET
((
dbp
), 
DB_AM_ENCRYPT
? 
QPAGE_SEC
 : \

311 
	`F_ISSET
((
dbp
), 
DB_AM_CHKSUM
? 
QPAGE_CHKSUM
 : 
QPAGE_NORMAL
)

	)

327 
	#RE_NREC
(
p
) \

328 ((
	`TYPE
(
p
=
P_IBTREE
 || TYPE=
P_IRECNO
? 
	`PREV_PGNO
(p) : \

329 (
db_pgno_t
)(
	`TYPE
(
p
=
P_LBTREE
 ? 
	`NUM_ENT
/ 2 : NUM_ENT)))

	)

330 
	#RE_NREC_ADJ
(
p
, 
adj
) \

331 
	`PREV_PGNO
(
p
+
adj
;

	)

332 
	#RE_NREC_SET
(
p
, 
num
) \

333 
	`PREV_PGNO
(
p
(
num
);

	)

342 
	#P_INIT
(
pg
, 
pg_size
, 
n
, 
pg_ev
, 
pg_xt
, 
b
, 
pg_ty
) do { \

343 
	`PGNO
(
pg
(
n
); \

344 
	`PREV_PGNO
(
pg
(
pg_ev
); \

345 
	`NEXT_PGNO
(
pg
(
pg_xt
); \

346 
	`NUM_ENT
(
pg
) = (0); \

347 
	`HOFFSET
(
pg
(
db_dx_t
)(
pg_size
); \

348 
	`LEVEL
(
pg
(
b
); \

349 
	`TYPE
(
pg
(
pg_ty
); \

350 } 0)

	)

353 
	#P_OVERHEAD
(
dbp

	`P_TO_UINT16
(
	`P_INP
(dbp, 0))

	)

356 
	#LOFFSET
(
dbp
, 
pg
) \

357 (
	`P_OVERHEAD
(
dbp
+ 
	`NUM_ENT
(
pg
* (
db_dx_t
))

	)

360 
	#P_FREESPACE
(
dbp
, 
pg
(
	`HOFFSET
g- 
	`LOFFSET
(dbp,g))

	)

363 
	#P_ENTRY
(
dbp
, 
pg
, 
dx
((
u_t8_t
 *g + 
	`P_INP
(dbp,g)[dx])

	)

384 
	#OV_LEN
(
p
(((
PAGE
 *)->
hf_offt
)

	)

385 
	#OV_REF
(
p
(((
PAGE
 *)->
s
)

	)

388 
	#P_MAXSPACE
(
dbp
, 
psize
(size- 
	`P_OVERHEAD
(dbp))

	)

391 
	#P_OVFLSPACE
(
dbp
, 
psize
, 
pg
(
	`P_MAXSPACE
(dbp,size- 
	`HOFFSET
g))

	)

398 
	#H_KEYDATA
 1

	)

399 
	#H_DUPLICATE
 2

	)

400 
	#H_OFFPAGE
 3

	)

401 
	#H_OFFDUP
 4

	)

411 
	#HPAGE_PTYPE
(
p
(*(
u_t8_t
 *)

	)

412 
	#HPAGE_TYPE
(
dbp
, 
pg
, 
dx
(*
	`P_ENTRY
(dbp,g, indx))

	)

432 
	s_hkeyda
 {

433 
u_t8_t
 
ty
;

434 
u_t8_t
 
da
[1];

435 } 
	tHKEYDATA
;

436 
	#HKEYDATA_DATA
(
p
(((
u_t8_t
 *+ 
	`SSZA
(
HKEYDATA
, 
da
))

	)

442 
	#LEN_HITEM
(
dbp
, 
pg
, 
pgsize
, 
dx
) \

443 (((
dx
=0 ? (
pgsize
) : \

444 (
	`P_INP
(
dbp
, 
pg
)[(
dx
- 1])- (P_INP(dbp,g)[dx]))

	)

446 
	#LEN_HKEYDATA
(
dbp
, 
pg
, 
psize
, 
dx
) \

447 (
db_dx_t
)(
	`LEN_HITEM
(
dbp
, 
pg
, 
psize
, 
dx
- 
	`HKEYDATA_SIZE
(0))

	)

453 
	#HKEYDATA_SIZE
(
n
) \

454 ((
n
+ 
	`SSZA
(
HKEYDATA
, 
da
))

	)

455 
	#HKEYDATA_PSIZE
(
n
) \

456 (
	`HKEYDATA_SIZE
(
n
+ (
db_dx_t
))

	)

459 
	#PUT_HKEYDATA
(

, 
kd
, 
n
, 
y
) { \

460 ((
HKEYDATA
 *)(

))->
ty
 = 
y
; \

461 
	`memy
((
u_t8_t
 *)(

+ (u_t8_t), 
kd
, 
n
); \

462 }

	)

467 
	#H_NUMPAIRS
(
pg
(
	`NUM_ENT
g/ 2)

	)

468 
	#H_KEYINDEX
(
dx
(dx)

	)

469 
	#H_DATAINDEX
(
dx
((dx+ 1)

	)

470 
	#H_PAIRKEY
(
dbp
, 
pg
, 
dx

	`P_ENTRY
(dbp,g, 
	`H_KEYINDEX
(dx))

	)

471 
	#H_PAIRDATA
(
dbp
, 
pg
, 
dx

	`P_ENTRY
(dbp,g, 
	`H_DATAINDEX
(dx))

	)

472 
	#H_PAIRSIZE
(
dbp
, 
pg
, 
psize
, 
dx
) \

473 (
	`LEN_HITEM
(
dbp
, 
pg
, 
psize
, 
	`H_KEYINDEX
(
dx
)) + \

474 
	`LEN_HITEM
(
dbp
, 
pg
, 
psize
, 
	`H_DATAINDEX
(
dx
)))

	)

475 
	#LEN_HDATA
(
dbp
, 
p
, 
psize
, 
dx
) \

476 
	`LEN_HKEYDATA
(
dbp
, 
p
, 
psize
, 
	`H_DATAINDEX
(
dx
))

	)

477 
	#LEN_HKEY
(
dbp
, 
p
, 
psize
, 
dx
) \

478 
	`LEN_HKEYDATA
(
dbp
, 
p
, 
psize
, 
	`H_KEYINDEX
(
dx
))

	)

483 
	s_hofage
 {

484 
u_t8_t
 
ty
;

485 
u_t8_t
 
unud
[3];

486 
db_pgno_t
 
pgno
;

487 
u_t32_t
 

;

488 } 
	tHOFFPAGE
;

490 
	#HOFFPAGE_PGNO
(
p
(((
u_t8_t
 *+ 
	`SSZ
(
HOFFPAGE
, 
pgno
))

	)

491 
	#HOFFPAGE_TLEN
(
p
(((
u_t8_t
 *+ 
	`SSZ
(
HOFFPAGE
, 

))

	)

497 
	#HOFFPAGE_SIZE
 ((
HOFFPAGE
))

	)

498 
	#HOFFPAGE_PSIZE
 (
HOFFPAGE_SIZE
 + (
db_dx_t
))

	)

503 
	s_hoffdup
 {

504 
u_t8_t
 
ty
;

505 
u_t8_t
 
unud
[3];

506 
db_pgno_t
 
pgno
;

507 } 
	tHOFFDUP
;

508 
	#HOFFDUP_PGNO
(
p
(((
u_t8_t
 *+ 
	`SSZ
(
HOFFDUP
, 
pgno
))

	)

514 
	#HOFFDUP_SIZE
 ((
HOFFDUP
))

	)

521 
	#B_KEYDATA
 1

	)

522 
	#B_DUPLICATE
 2

	)

523 
	#B_OVERFLOW
 3

	)

531 
	#B_DELETE
 (0x80)

	)

532 
	#B_DCLR
(
t
&~
B_DELETE


	)

533 
	#B_DSET
(
t
|
B_DELETE


	)

534 
	#B_DISSET
(
t
(& 
B_DELETE
)

	)

536 
	#B_TYPE
(
t
(& ~
B_DELETE
)

	)

537 
	#B_TSET
(
t
, 
ty
(
	`B_TYPE
y))

	)

538 
	#B_TSET_DELETED
(
t
, 
ty
(y| 
B_DELETE
)

	)

543 
	s_bkeyda
 {

544 
db_dx_t
 
n
;

545 
u_t8_t
 
ty
;

546 
u_t8_t
 
da
[1];

547 } 
	tBKEYDATA
;

550 
	#GET_BKEYDATA
(
dbp
, 
pg
, 
dx
) \

551 ((
BKEYDATA
 *)
	`P_ENTRY
(
dbp
, 
pg
, 
dx
))

	)

560 
	#BKEYDATA_SIZE
(
n
) \

561 (
u_t16_t
)
	`DB_ALIGN
((
n
+ 
	`SSZA
(
BKEYDATA
, 
da
), (
u_t32_t
))

	)

562 
	#BKEYDATA_PSIZE
(
n
) \

563 (
	`BKEYDATA_SIZE
(
n
+ (
db_dx_t
))

	)

569 
	s_bovow
 {

570 
db_dx_t
 
unud1
;

571 
u_t8_t
 
ty
;

572 
u_t8_t
 
unud2
;

573 
db_pgno_t
 
pgno
;

574 
u_t32_t
 

;

575 } 
	tBOVERFLOW
;

578 
	#GET_BOVERFLOW
(
dbp
, 
pg
, 
dx
) \

579 ((
BOVERFLOW
 *)
	`P_ENTRY
(
dbp
, 
pg
, 
dx
))

	)

585 
	#BOVERFLOW_SIZE
 \

586 ((
u_t16_t
)
	`DB_ALIGN
((
BOVERFLOW
), (
u_t32_t
)))

	)

587 
	#BOVERFLOW_PSIZE
 \

588 (
BOVERFLOW_SIZE
 + (
db_dx_t
))

	)

590 
	#BITEM_SIZE
(
bk
) \

591 (
	`B_TYPE
((
bk
)->
ty
!
B_KEYDATA
 ? 
BOVERFLOW_SIZE
 : \

592 
	`BKEYDATA_SIZE
((
bk
)->
n
))

	)

594 
	#BITEM_PSIZE
(
bk
) \

595 (
	`B_TYPE
((
bk
)->
ty
!
B_KEYDATA
 ? 
BOVERFLOW_PSIZE
 : \

596 
	`BKEYDATA_PSIZE
((
bk
)->
n
))

	)

603 
	#O_INDX
 1

	)

604 
	#P_INDX
 2

	)

613 
	s_b
 {

614 
db_dx_t
 
n
;

615 
u_t8_t
 
ty
;

616 
u_t8_t
 
unud
;

617 
db_pgno_t
 
pgno
;

618 
db_o_t
 
ecs
;

619 
u_t8_t
 
da
[1];

620 } 
	tBINTERNAL
;

623 
	#GET_BINTERNAL
(
dbp
, 
pg
, 
dx
) \

624 ((
BINTERNAL
 *)
	`P_ENTRY
(
dbp
, 
pg
, 
dx
))

	)

630 
	#BINTERNAL_SIZE
(
n
) \

631 (
u_t16_t
)
	`DB_ALIGN
((
n
+ 
	`SSZA
(
BINTERNAL
, 
da
), (
u_t32_t
))

	)

632 
	#BINTERNAL_PSIZE
(
n
) \

633 (
	`BINTERNAL_SIZE
(
n
+ (
db_dx_t
))

	)

642 
	s_r
 {

643 
db_pgno_t
 
pgno
;

644 
db_o_t
 
ecs
;

645 } 
	tRINTERNAL
;

648 
	#GET_RINTERNAL
(
dbp
, 
pg
, 
dx
) \

649 ((
RINTERNAL
 *)
	`P_ENTRY
(
dbp
, 
pg
, 
dx
))

	)

655 
	#RINTERNAL_SIZE
 \

656 (
u_t16_t
)
	`DB_ALIGN
((
RINTERNAL
), (
u_t32_t
))

	)

657 
	#RINTERNAL_PSIZE
 \

658 (
RINTERNAL_SIZE
 + (
db_dx_t
))

	)

660 
	spgli
 {

661 
db_pgno_t
 
pgno
;

662 
DB_LSN
 
l
;

665 #i
defed
(
__lulus
)

	@../dbinc/db_server_int.h

9 #ide
_DB_SERVER_INT_H_


10 
	#_DB_SERVER_INT_H_


	)

12 #i
defed
(
__lulus
)

16 
	#DB_SERVER_TIMEOUT
 300

	)

17 
	#DB_SERVER_MAXTIMEOUT
 1200

	)

18 
	#DB_SERVER_IDLETIMEOUT
 86400

	)

31 
	#DB_SERVER_FLAGMASK
 ( \

32 
DB_LOCKDOWN
 | 
DB_PRIVATE
 | 
DB_RECOVER
 | 
DB_RECOVER_FATAL
 | \

33 
DB_SYSTEM_MEM
 | 
DB_USE_ENVIRON
 | 
DB_USE_ENVIRON_ROOT
)

	)

35 
	#CT_CURSOR
 0x001

	)

36 
	#CT_DB
 0x002

	)

37 
	#CT_ENV
 0x004

	)

38 
	#CT_TXN
 0x008

	)

40 
	#CT_JOIN
 0x10000000

	)

41 
	#CT_JOINCUR
 0x20000000

	)

43 
home_y
 
	thome_y
;

44 
	shome_y
 {

45 
LIST_ENTRY
(
home_y

s
;

46 *
home
;

47 *
d
;

48 *
me
;

49 *
sswd
;

60 
	#DB_SERVER_ENVFLAGS
 ( \

61 
DB_INIT_CDB
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | \

62 
DB_INIT_TXN
 | 
DB_JOINENV
)

	)

64 
	#DB_SERVER_DBFLAGS
 (
DB_NOMMAP
 | 
DB_RDONLY
 | 
DB_READ_UNCOMMITTED
)

	)

65 
	#DB_SERVER_DBNOSHARE
 (
DB_EXCL
 | 
DB_TRUNCATE
)

	)

67 
_vda
 
	t_vda
;

68 
_dbda
 
	t_dbda
;

69 
	s_vda
 {

70 
u_t32_t
 
vags
;

71 
u_t32_t
 
ags
;

72 
u_t32_t
 
offags
;

73 
home_y
 *
home
;

76 
	s_dbda
 {

77 
u_t32_t
 
dbags
;

78 
u_t32_t
 
tags
;

79 *
db
;

80 *
subdb
;

81 
DBTYPE
 
ty
;

92 
_y
 
	t_y
;

93 
	s_y
 {

94 
LIST_ENTRY
(
_y

s
;

96 #ifde
__lulus


97 
DbEnv
 *
vp
;

98 
DbTxn
 *
tx
;

99 
Db
 *
dbp
;

100 
Dbc
 *
dbc
;

102 
DB_ENV
 *
vp
;

103 
DB_TXN
 *
tx
;

104 
DB
 *
dbp
;

105 
DBC
 *
dbc
;

107 *
yp
;

108 } 
hd_u
;

110 
_vda
 
vdp
;

111 
_dbda
 
dbdp
;

112 } 
ive_u
;

113 
_id
;

114 *
_aiv
;

115 *
_igp
;

116 
_aive
;

117 
_timeout
;

118 
_id
;

119 
u_t32_t
 
_fcou
;

120 
u_t32_t
 
_ty
;

121 
_y
 *
_
;

122 
_y
 *
_v
;

125 
	#_vp
 
hd_u
.
vp


	)

126 
	#_tx
 
hd_u
.
tx


	)

127 
	#_dbp
 
hd_u
.
dbp


	)

128 
	#_dbc
 
hd_u
.
dbc


	)

129 
	#_yp
 
hd_u
.
yp


	)

131 
	#_vdp
 
ive_u
.
vdp


	)

132 
	#_dbdp
 
ive_u
.
dbdp


	)

134 

__dbv_vbo
;

141 
	#ACTIVATE_CTP
(
p
, 
id
, 
ty
) { \

142 (
p

	`g_b˒t
(
id
); \

143 i((
p
=
NULL
) { \

144 
yp
->
us
 = 
DB_NOSERVER_ID
; \

148 
	`DB_ASSERT
(
NULL
, (
p
)->
_ty
 & (
ty
)); \

149 
	`__dbv_aive
(
p
); \

150 }

	)

152 
	#FREE_IF_CHANGED
(
dbv
, 
p
, 
ig
) do { \

153 i((
p
!
NULL
 && (p!(
ig
)) \

154 
	`__os_u
((
dbv
), (
p
)); \

155 } 0)

	)

157 #i
defed
(
__lulus
)

	@../dbinc/db_swap.h

37 #ide
_DB_SWAP_H_


38 
	#_DB_SWAP_H_


	)

40 #i
defed
(
__lulus
)

50 #unde
M_64_SWAP


51 
	#M_64_SWAP
(
a
) { \

52 
u_t64_t
 
_tmp
; \

53 
_tmp
 = (
u_t64_t
)
a
; \

54 ((
u_t8_t
 *)&
a
)[0] = ((u_t8_*)&
_tmp
)[7]; \

55 ((
u_t8_t
 *)&
a
)[1] = ((u_t8_*)&
_tmp
)[6]; \

56 ((
u_t8_t
 *)&
a
)[2] = ((u_t8_*)&
_tmp
)[5]; \

57 ((
u_t8_t
 *)&
a
)[3] = ((u_t8_*)&
_tmp
)[4]; \

58 ((
u_t8_t
 *)&
a
)[4] = ((u_t8_*)&
_tmp
)[3]; \

59 ((
u_t8_t
 *)&
a
)[5] = ((u_t8_*)&
_tmp
)[2]; \

60 ((
u_t8_t
 *)&
a
)[6] = ((u_t8_*)&
_tmp
)[1]; \

61 ((
u_t8_t
 *)&
a
)[7] = ((u_t8_*)&
_tmp
)[0]; \

62 }

	)

63 #unde
P_64_COPY


64 
	#P_64_COPY
(
a
, 
b
) { \

65 ((
u_t8_t
 *)
b
)[0] = ((u_t8_*)
a
)[0]; \

66 ((
u_t8_t
 *)
b
)[1] = ((u_t8_*)
a
)[1]; \

67 ((
u_t8_t
 *)
b
)[2] = ((u_t8_*)
a
)[2]; \

68 ((
u_t8_t
 *)
b
)[3] = ((u_t8_*)
a
)[3]; \

69 ((
u_t8_t
 *)
b
)[4] = ((u_t8_*)
a
)[4]; \

70 ((
u_t8_t
 *)
b
)[5] = ((u_t8_*)
a
)[5]; \

71 ((
u_t8_t
 *)
b
)[6] = ((u_t8_*)
a
)[6]; \

72 ((
u_t8_t
 *)
b
)[7] = ((u_t8_*)
a
)[7]; \

73 }

	)

74 #unde
P_64_SWAP


75 
	#P_64_SWAP
(
a
) { \

76 
u_t64_t
 
_tmp
; \

77 
	`P_64_COPY
(
a
, &
_tmp
); \

78 ((
u_t8_t
 *)
a
)[0] = ((u_t8_*)&
_tmp
)[7]; \

79 ((
u_t8_t
 *)
a
)[1] = ((u_t8_*)&
_tmp
)[6]; \

80 ((
u_t8_t
 *)
a
)[2] = ((u_t8_*)&
_tmp
)[5]; \

81 ((
u_t8_t
 *)
a
)[3] = ((u_t8_*)&
_tmp
)[4]; \

82 ((
u_t8_t
 *)
a
)[4] = ((u_t8_*)&
_tmp
)[3]; \

83 ((
u_t8_t
 *)
a
)[5] = ((u_t8_*)&
_tmp
)[2]; \

84 ((
u_t8_t
 *)
a
)[6] = ((u_t8_*)&
_tmp
)[1]; \

85 ((
u_t8_t
 *)
a
)[7] = ((u_t8_*)&
_tmp
)[0]; \

86 }

	)

94 #unde
M_32_SWAP


95 
	#M_32_SWAP
(
a
) { \

96 
u_t32_t
 
_tmp
; \

97 
_tmp
 = (
u_t32_t
)
a
; \

98 ((
u_t8_t
 *)&
a
)[0] = ((u_t8_*)&
_tmp
)[3]; \

99 ((
u_t8_t
 *)&
a
)[1] = ((u_t8_*)&
_tmp
)[2]; \

100 ((
u_t8_t
 *)&
a
)[2] = ((u_t8_*)&
_tmp
)[1]; \

101 ((
u_t8_t
 *)&
a
)[3] = ((u_t8_*)&
_tmp
)[0]; \

102 }

	)

103 #unde
P_32_COPY


104 
	#P_32_COPY
(
a
, 
b
) { \

105 ((
u_t8_t
 *)
b
)[0] = ((u_t8_*)
a
)[0]; \

106 ((
u_t8_t
 *)
b
)[1] = ((u_t8_*)
a
)[1]; \

107 ((
u_t8_t
 *)
b
)[2] = ((u_t8_*)
a
)[2]; \

108 ((
u_t8_t
 *)
b
)[3] = ((u_t8_*)
a
)[3]; \

109 }

	)

110 #unde
P_32_SWAP


111 
	#P_32_SWAP
(
a
) { \

112 
u_t32_t
 
_tmp
; \

113 
	`P_32_COPY
(
a
, &
_tmp
); \

114 ((
u_t8_t
 *)
a
)[0] = ((u_t8_*)&
_tmp
)[3]; \

115 ((
u_t8_t
 *)
a
)[1] = ((u_t8_*)&
_tmp
)[2]; \

116 ((
u_t8_t
 *)
a
)[2] = ((u_t8_*)&
_tmp
)[1]; \

117 ((
u_t8_t
 *)
a
)[3] = ((u_t8_*)&
_tmp
)[0]; \

118 }

	)

126 #unde
M_16_SWAP


127 
	#M_16_SWAP
(
a
) { \

128 
u_t16_t
 
_tmp
; \

129 
_tmp
 = (
u_t16_t
)
a
; \

130 ((
u_t8_t
 *)&
a
)[0] = ((u_t8_*)&
_tmp
)[1]; \

131 ((
u_t8_t
 *)&
a
)[1] = ((u_t8_*)&
_tmp
)[0]; \

132 }

	)

133 #unde
P_16_COPY


134 
	#P_16_COPY
(
a
, 
b
) { \

135 ((
u_t8_t
 *)
b
)[0] = ((u_t8_*)
a
)[0]; \

136 ((
u_t8_t
 *)
b
)[1] = ((u_t8_*)
a
)[1]; \

137 }

	)

138 #unde
P_16_SWAP


139 
	#P_16_SWAP
(
a
) { \

140 
u_t16_t
 
_tmp
; \

141 
	`P_16_COPY
(
a
, &
_tmp
); \

142 ((
u_t8_t
 *)
a
)[0] = ((u_t8_*)&
_tmp
)[1]; \

143 ((
u_t8_t
 *)
a
)[1] = ((u_t8_*)&
_tmp
)[0]; \

144 }

	)

146 #unde
SWAP32


147 
	#SWAP32
(
p
) { \

148 
	`P_32_SWAP
(
p
); \

149 (
p
+(
u_t32_t
); \

150 }

	)

151 #unde
SWAP16


152 
	#SWAP16
(
p
) { \

153 
	`P_16_SWAP
(
p
); \

154 (
p
+(
u_t16_t
); \

155 }

	)

162 #unde
DB_HTONL


163 
	#DB_HTONL
(
p
) do { \

164 i(!
	`__db_isbigdn
()) \

165 
	`P_32_SWAP
(
p
); \

166 } 0)

	)

167 #unde
DB_NTOHL


168 
	#DB_NTOHL
(
p
) do { \

169 i(!
	`__db_isbigdn
()) \

170 
	`P_32_SWAP
(
p
); \

171 } 0)

	)

173 #i
defed
(
__lulus
)

	@../dbinc/db_upgrade.h

9 #ide
_DB_UPGRADE_H_


10 
	#_DB_UPGRADE_H_


	)

12 #i
defed
(
__lulus
)

22 
	s_dbma31
 {

23 
DB_LSN
 
l
;

24 
db_pgno_t
 
pgno
;

25 
u_t32_t
 
magic
;

26 
u_t32_t
 
vsi
;

27 
u_t32_t
 
gesize
;

28 
u_t8_t
 
unud1
[1];

29 
u_t8_t
 
ty
;

30 
u_t8_t
 
unud2
[2];

31 
u_t32_t
 

;

32 
DB_LSN
 
unud3
;

33 
u_t32_t
 
key_cou
;

34 
u_t32_t
 
cd_cou
;

35 
u_t32_t
 
ags
;

37 
u_t8_t
 
uid
[
DB_FILE_ID_LEN
];

38 } 
	tDBMETA31
;

40 
	s_btma31
 {

41 
DBMETA31
 
dbma
;

43 
u_t32_t
 
maxkey
;

44 
u_t32_t
 
mkey
;

45 
u_t32_t
 
_n
;

46 
u_t32_t
 
_d
;

47 
u_t32_t
 
ro
;

52 } 
	tBTMETA31
;

57 
	s_hashma31
 {

58 
DBMETA31
 
dbma
;

60 
u_t32_t
 
max_buck
;

61 
u_t32_t
 
high_mask
;

62 
u_t32_t
 
low_mask
;

63 
u_t32_t
 
f
;

64 
u_t32_t
 
m
;

65 
u_t32_t
 
h_chkey
;

66 
	#NCACHED
 32

	)

68 
u_t32_t
 
es
[
NCACHED
];

73 } 
	tHMETA31
;

79 
	s_qma31
 {

80 
DBMETA31
 
dbma
;

82 
u_t32_t
 
t
;

83 
u_t32_t
 
f_o
;

84 
u_t32_t
 
cur_o
;

85 
u_t32_t
 
_n
;

86 
u_t32_t
 
_d
;

87 
u_t32_t
 
c_ge
;

92 } 
	tQMETA31
;

94 
	s_qma32
 {

95 
DBMETA31
 
dbma
;

97 
u_t32_t
 
f_o
;

98 
u_t32_t
 
cur_o
;

99 
u_t32_t
 
_n
;

100 
u_t32_t
 
_d
;

101 
u_t32_t
 
c_ge
;

102 
u_t32_t
 
ge_ext
;

107 } 
	tQMETA32
;

111 
	s_dbma30
 {

112 
DB_LSN
 
l
;

113 
db_pgno_t
 
pgno
;

114 
u_t32_t
 
magic
;

115 
u_t32_t
 
vsi
;

116 
u_t32_t
 
gesize
;

117 
u_t8_t
 
unud1
[1];

118 
u_t8_t
 
ty
;

119 
u_t8_t
 
unud2
[2];

120 
u_t32_t
 

;

121 
u_t32_t
 
ags
;

123 
u_t8_t
 
uid
[
DB_FILE_ID_LEN
];

124 } 
	tDBMETA30
;

129 
	s_btma30
 {

130 
DBMETA30
 
dbma
;

132 
u_t32_t
 
maxkey
;

133 
u_t32_t
 
mkey
;

134 
u_t32_t
 
_n
;

135 
u_t32_t
 
_d
;

136 
u_t32_t
 
ro
;

141 } 
	tBTMETA30
;

146 
	s_hashma30
 {

147 
DBMETA30
 
dbma
;

149 
u_t32_t
 
max_buck
;

150 
u_t32_t
 
high_mask
;

151 
u_t32_t
 
low_mask
;

152 
u_t32_t
 
f
;

153 
u_t32_t
 
m
;

154 
u_t32_t
 
h_chkey
;

155 
	#NCACHED30
 32

	)

157 
u_t32_t
 
es
[
NCACHED30
];

162 } 
	tHMETA30
;

171 
	s_qma30
 {

172 
DBMETA30
 
dbma
;

174 
u_t32_t
 
t
;

175 
u_t32_t
 
f_o
;

176 
u_t32_t
 
cur_o
;

177 
u_t32_t
 
_n
;

178 
u_t32_t
 
_d
;

179 
u_t32_t
 
c_ge
;

184 } 
	tQMETA30
;

195 
	s_btma2X
 {

196 
DB_LSN
 
l
;

197 
db_pgno_t
 
pgno
;

198 
u_t32_t
 
magic
;

199 
u_t32_t
 
vsi
;

200 
u_t32_t
 
gesize
;

201 
u_t32_t
 
maxkey
;

202 
u_t32_t
 
mkey
;

203 
u_t32_t
 

;

204 
u_t32_t
 
ags
;

205 
u_t32_t
 
_n
;

206 
u_t32_t
 
_d
;

208 
u_t8_t
 
uid
[
DB_FILE_ID_LEN
];

209 } 
	tBTMETA2X
;

219 
	shashhdr
 {

220 
DB_LSN
 
l
;

221 
db_pgno_t
 
pgno
;

222 
u_t32_t
 
magic
;

223 
u_t32_t
 
vsi
;

224 
u_t32_t
 
gesize
;

225 
u_t32_t
 
ov_pot
;

226 
u_t32_t
 
ϡ_d
;

227 
u_t32_t
 
max_buck
;

228 
u_t32_t
 
high_mask
;

229 
u_t32_t
 
low_mask
;

230 
u_t32_t
 
f
;

231 
u_t32_t
 
m
;

232 
u_t32_t
 
h_chkey
;

233 
u_t32_t
 
ags
;

234 
	#NCACHED2X
 32

	)

236 
u_t32_t
 
es
[
NCACHED2X
];

238 
u_t8_t
 
uid
[
DB_FILE_ID_LEN
];

243 } 
	tHASHHDR
;

245 #i
defed
(
__lulus
)

	@../dbinc/db_verify.h

9 #ide
_DB_VERIFY_H_


10 
	#_DB_VERIFY_H_


	)

12 #i
defed
(
__lulus
)

25 
	#EPRINT
(
x
) do { \

26 i(!
	`LF_ISSET
(
DB_SALVAGE
)) \

27 
__db_rx
 
x
; \

28 } 0)

	)

31 
	#ZEROPG_ERR_PRINT
(
dbv
, 
pgno
, 
r
) do { \

32 
	`EPRINT
(((
dbv
), "Page %lu: %s is of inappropriateype %lu", \

33 (
u_lg
)(
pgno
), 
r
, (u_lg)
P_INVALID
)); \

34 
	`EPRINT
(((
dbv
), "Page %lu:otally zeroedage", \

35 (
u_lg
)(
pgno
))); \

36 } 0)

	)

42 
	#IS_VALID_PGNO
(
x
((x<
vdp
->
ϡ_pgno
)

	)

49 
	#ST_DUPOK
 0x00010000

	)

50 
	#ST_DUPSET
 0x00020000

	)

51 
	#ST_DUPSORT
 0x00040000

	)

52 
	#ST_IS_RECNO
 0x00080000

	)

53 
	#ST_OVFL_LEAF
 0x00100000

	)

54 
	#ST_RECNUM
 0x00200000

	)

55 
	#ST_RELEN
 0x00400000

	)

56 
	#ST_TOPLEVEL
 0x00800000

	)

63 
	#SA_SKIPFIRSTKEY
 0x00080000

	)

69 
	s__vrfy_dbfo
 {

71 
DBTYPE
 
ty
;

74 
LIST_HEAD
(
__subdbs
, 
__vrfy_chdfo

subdbs
;

77 
DB
 *
pgdbp
;

80 
DB
 *
cdbp
;

83 
LIST_HEAD
(
__aivs
, 
__vrfy_gefo

aivs
;

89 
DB
 *
pgt
;

100 
	#SALVAGE_INVALID
 0

	)

101 
	#SALVAGE_IGNORE
 1

	)

102 
	#SALVAGE_LDUP
 2

	)

103 
	#SALVAGE_LRECNODUP
 3

	)

104 
	#SALVAGE_OVERFLOW
 4

	)

105 
	#SALVAGE_LBTREE
 5

	)

106 
	#SALVAGE_HASH
 6

	)

107 
	#SALVAGE_LRECNO
 7

	)

108 
DB
 *
lvage_ges
;

110 
db_pgno_t
 
ϡ_pgno
;

111 
db_pgno_t
 
pgs_mag
;

119 
db_pgno_t
 
ev_pgno
;

120 
db_pgno_t
 
xt_pgno
;

121 
u_t8_t
 
af_ty
;

124 
u_t32_t
 
_d
;

125 
u_t32_t
 
_n
;

126 
u_t32_t
 
c_ge
;

127 
u_t32_t
 
ge_ext
;

128 
u_t32_t
 
f_o
;

129 
u_t32_t
 
ϡ_o
;

130 
xs
;

131 
db_pgno_t
 *
exs
;

133 
	#SALVAGE_PRINTABLE
 0x01

	)

134 
	#SALVAGE_PRINTHEADER
 0x02

	)

135 
	#SALVAGE_PRINTFOOTER
 0x04

	)

136 
	#VRFY_LEAFCHAIN_BROKEN
 0x08

	)

137 
	#VRFY_QMETA_SET
 0x10

	)

139 
u_t32_t
 
ags
;

150 
	s__vrfy_gefo
 {

151 
u_t8_t
 
ty
;

152 
u_t8_t
 
bt_v
;

153 
u_t8_t
 
unud1
;

154 
u_t8_t
 
unud2
;

155 
db_pgno_t
 
pgno
;

156 
db_pgno_t
 
ev_pgno
;

157 
db_pgno_t
 
xt_pgno
;

160 
db_pgno_t
 
ro
;

161 
db_pgno_t
 

;

163 
db_dx_t
 
s
;

164 
u_t16_t
 
unud
;

165 
db_o_t
 
c_t
;

166 
u_t32_t
 
_d
;

167 
u_t32_t
 
_n
;

168 
u_t32_t
 
bt_mkey
;

169 
u_t32_t
 
h_f
;

170 
u_t32_t
 
h_m
;

177 
u_t32_t
 
fcou
;

178 
u_t32_t
 
ޒ
;

180 
	#VRFY_DUPS_UNSORTED
 0x0001

	)

181 
	#VRFY_HAS_CHKSUM
 0x0002

	)

182 
	#VRFY_HAS_DUPS
 0x0004

	)

183 
	#VRFY_HAS_DUPSORT
 0x0008

	)

184 
	#VRFY_HAS_RECNUMS
 0x0010

	)

185 
	#VRFY_HAS_SUBDBS
 0x0020

	)

186 
	#VRFY_INCOMPLETE
 0x0040

	)

187 
	#VRFY_IS_ALLZEROES
 0x0080

	)

188 
	#VRFY_IS_FIXEDLEN
 0x0100

	)

189 
	#VRFY_IS_RECNO
 0x0200

	)

190 
	#VRFY_IS_RRECNO
 0x0400

	)

191 
	#VRFY_OVFL_LEAFSEEN
 0x0800

	)

192 
u_t32_t
 
ags
;

194 
LIST_ENTRY
(
__vrfy_gefo

lks
;

195 
u_t32_t
 
pi_fcou
;

198 
	s__vrfy_chdfo
 {

200 
db_pgno_t
 
pgno
;

202 
	#V_DUPLICATE
 1

	)

203 
	#V_OVERFLOW
 2

	)

204 
	#V_RECNO
 3

	)

205 
u_t32_t
 
ty
;

206 
db_o_t
 
ecs
;

207 
u_t32_t
 

;

210 
u_t32_t
 
ft
;

212 
LIST_ENTRY
(
__vrfy_chdfo

lks
;

215 #i
defed
(
__lulus
)

	@../dbinc/debug.h

9 #ide
_DB_DEBUG_H_


10 
	#_DB_DEBUG_H_


	)

12 #i
defed
(
__lulus
)

19 #i!
defed
(
__GNUC__
|| __GNUC__ < 2 || (__GNUC__ =2 && 
__GNUC_MINOR__
 < 5)

20 
	#__ibu__
(
s
)

	)

27 
	#CLEAR_BYTE
 0xdb

	)

28 
	#GUARD_BYTE
 0xdc

	)

35 #i
defed
(
DIAGNOSTIC
&& defed(
__STDC__
)

36 
	#DB_ASSERT
(
v
, 
e
) \

37 ((
e
? ()0 : 
	`__db_as
(
v
, #e, 
__FILE__
, 
__LINE__
))

	)

39 
	#DB_ASSERT
(
v
, 
e
)

	)

48 
	#COMPQUIET
(
n
, 
v
) do { \

49 (
n
(
v
); \

50 (
n
) = (n); \

51 } 0)

	)

58 #ifdef 
UMRW


59 
	#UMRW_SET
(
v
(v0

	)

61 
	#UMRW_SET
(
v
)

	)

70 
DB_ERROR_NOT_SET
=0,

71 
DB_ERROR_SET
=1,

72 
DB_ERROR_SYSTEM
=2

73 } 
	tdb_r_t_t
;

81 #i
defed
(
STDC_HEADERS
|| defed(
__lulus
)

82 
	#DB_REAL_ERR
(
v
, 
r
, 
r_t
, 
p_
, 
fmt
) { \

83 
va_li
 
__
; \

86 
	`va_t
(
__
, 
fmt
); \

87 i((
v
!
NULL
 && (v)->
db_r
 != NULL) \

88 
	`__db_r
(
v
, 
r
, 
r_t
, 
fmt
, 
__
); \

89 
	`va_d
(
__
); \

98 
	`va_t
(
__
, 
fmt
); \

99 i((
v
=
NULL
 || \

100 (
v
)->
db_rfe
 !
NULL
 || \

101 ((
v
)->
db_r
 =
NULL
 && \

102 ((
p_
|| 
	`F_ISSET
((
v
), 
DB_ENV_NO_OUTPUT_SET
)))) \

103 
	`__db_rfe
(
v
, 
r
, 
r_t
, 
fmt
, 
__
); \

104 
	`va_d
(
__
); \

105 }

	)

107 
	#DB_REAL_ERR
(
v
, 
r
, 
r_t
, 
fmt
) { \

108 
va_li
 
__
; \

111 
	`va_t
(
__
); \

112 i((
v
!
NULL
 && (v)->
db_r
 != NULL) \

113 
	`__db_r
(
v
, 
r
, 
r_t
, 
fmt
, 
__
); \

114 
	`va_d
(
__
); \

123 
	`va_t
(
__
); \

124 i((
v
=
NULL
 || \

125 (
v
)->
db_rfe
 !
NULL
 || \

126 ((
v
)->
db_r
 =
NULL
 && \

127 ((
p_
|| 
	`F_ISSET
((
v
), 
DB_ENV_NO_OUTPUT_SET
)))) \

128 
	`va_d
(
__
); \

129 }

	)

131 #i
defed
(
STDC_HEADERS
|| defed(
__lulus
)

132 
	#DB_REAL_MSG
(
v
, 
fmt
) { \

133 
va_li
 
__
; \

136 
	`va_t
(
__
, 
fmt
); \

137 i((
v
!
NULL
 && (v)->
db_msg
 != NULL) \

138 
	`__db_msg
(
v
, 
fmt
, 
__
); \

139 
	`va_d
(
__
); \

146 
	`va_t
(
__
, 
fmt
); \

147 i((
v
=
NULL
 || \

148 (
v
)->
db_msgfe
 !
NULL
 || (v)->
db_msg
 == NULL) { \

149 
	`__db_msgfe
(
v
, 
fmt
, 
__
); \

151 
	`va_d
(
__
); \

152 }

	)

154 
	#DB_REAL_MSG
(
v
, 
fmt
) { \

155 
va_li
 
__
; \

158 
	`va_t
(
__
); \

159 i((
v
!
NULL
 && (v)->
db_msg
 != NULL) \

160 
	`__db_msg
(
v
, 
fmt
, 
__
); \

161 
	`va_d
(
__
); \

168 
	`va_t
(
__
); \

169 i((
v
=
NULL
 || \

170 (
v
)->
db_msgfe
 !
NULL
 || (v)->
db_msg
 == NULL) { \

171 
	`__db_msgfe
(
v
, 
fmt
, 
__
); \

173 
	`va_d
(
__
); \

174 }

	)

189 
	#LOG_OP
(
C
, 
T
, 
O
, 
K
, 
A
, 
F
) { \

190 
DB_LSN
 
__l
; \

191 
DBT
 
__
; \

192 i(
	`DBC_LOGGING
((
C
))) { \

193 
	`memt
(&
__
, 0, (__op)); \

194 
__
.
da
 = 
O
; \

195 
__
.
size
 = 
	`
(
O
) + 1; \

196 ()
	`__db_debug_log
((
C
)->
dbp
->
dbv
, 
T
, &
__l
, 0, \

197 &
__
, (
C
)->
dbp
->
log_fame
->
id
, 
K
, 
A
, 
F
); \

199 }

	)

200 #ifdef 
DEBUG_ROP


201 
	#DEBUG_LREAD
(
C
, 
T
, 
O
, 
K
, 
A
, 
F

	`LOG_OP
(C, T, O, K, A, F)

	)

203 
	#DEBUG_LREAD
(
C
, 
T
, 
O
, 
K
, 
A
, 
F
)

	)

205 #ifdef 
DEBUG_WOP


206 
	#DEBUG_LWRITE
(
C
, 
T
, 
O
, 
K
, 
A
, 
F

	`LOG_OP
(C, T, O, K, A, F)

	)

208 
	#DEBUG_LWRITE
(
C
, 
T
, 
O
, 
K
, 
A
, 
F
)

	)

215 #i
CONFIG_TEST


216 
	#DB_TEST_SUBLOCKS
(
v
, 
ags
) do { \

217 i((
v
)->
_abt
 =
DB_TEST_SUBDB_LOCKS
) \

218 (
ags
|
DB_LOCK_NOWAIT
; \

219 } 0)

	)

221 
	#DB_ENV_TEST_RECYCLE
(
v
, 
t
) do { \

222 i((
v
)->
_cy
 =
DB_TEST_RECYCLE
) { \

223 
t
 = 0; \

224 
db__r
; \

226 } 0)

	)

228 
	#DB_ENV_TEST_RECOVERY
(
v
, 
v
, 
t
, 
me
) do { \

229 
__t
; \

230 
	`PANIC_CHECK
((
v
)); \

231 i((
v
)->
_cy
 =(
v
)) { \

233 i((
__t
 = 
	`__db_cy
((
v
), 
NULL
, (
me
))) != 0) \

234 (
t

	`__db_nic
((
v
), 
__t
); \

236 i((
v
)->
_abt
 =(
v
)) { \

238 (
v
)->
_abt
 = 0; \

239 (
t

EINVAL
; \

240 
db__r
; \

242 } 0)

	)

244 
	#DB_TEST_RECOVERY
(
dbp
, 
v
, 
t
, 
me
) do { \

245 
__t
; \

246 
	`PANIC_CHECK
((
dbp
)->
dbv
); \

247 i((
dbp
)->
dbv
->
_cy
 =(
v
)) { \

249 i(
	`F_ISSET
((
dbp
), \

250 
DB_AM_OPEN_CALLED
&& (
dbp
)->
mpf
 !
NULL
) \

251 ()
	`__db_sync
(
dbp
); \

252 i((
__t
 = \

253 
	`__db_cy
((
dbp
)->
dbv
, (dbp), (
me
))) != 0) \

254 (
t

	`__db_nic
((
dbp
)->
dbv
, 
__t
); \

256 i((
dbp
)->
dbv
->
_abt
 =(
v
)) { \

258 (
dbp
)->
dbv
->
_abt
 = 0; \

259 (
t

EINVAL
; \

260 
db__r
; \

262 } 0)

	)

264 
	#DB_TEST_RECOVERY_LABEL
 
db__r
:

	)

266 
	#DB_TEST_WAIT
(
v
, 
v
) \

267 i((
v
) != 0) \

268 
	`__os_p
((
v
), (
u_lg
)(
v
), 0)

	)

270 
	#DB_ENV_TEST_RECYCLE
(
v
, 
t
);

	)

271 
	#DB_TEST_SUBLOCKS
(
v
, 
ags
)

	)

272 
	#DB_ENV_TEST_RECOVERY
(
v
, 
v
, 
t
, 
me
)

	)

273 
	#DB_TEST_RECOVERY
(
dbp
, 
v
, 
t
, 
me
)

	)

274 
	#DB_TEST_RECOVERY_LABEL


	)

275 
	#DB_TEST_WAIT
(
v
, 
v
)

	)

278 #i
defed
(
__lulus
)

	@../dbinc/fop.h

9 #idef 
_DB_FOP_H_


10 
	#_DB_FOP_H_


	)

12 #i
defed
(
__lulus
)

16 
	#MAKE_INMEM
(
D
) do { \

17 
	`F_SET
((
D
), 
DB_AM_INMEM
); \

18 ()
	`__memp_t_ags
((
D
)->
mpf
, 
DB_MPOOL_NOFILE
, 1); \

19 } 0)

	)

21 
	~"dbc_auto/fes_auto.h
"

22 
	~"dbc_auto/fes_ext.h
"

24 #i
defed
(
__lulus
)

	@../dbinc/globals.h

9 #ide
_DB_GLOBALS_H_


10 
	#_DB_GLOBALS_H_


	)

12 #i
defed
(
__lulus
)

21 #ifde
HAVE_VXWORKS


22 
	~"mLib.h
"

25 
	s__db_globs
 {

26 #ifde
HAVE_BREW


27 
tm
 
m
;

29 #ifde
HAVE_VXWORKS


30 
u_t32_t
 
db_glob_
;

31 
SEM_ID
 
db_glob_lock
;

34 
TAILQ_HEAD
(
__db_vq
, 
__db_v

db_vq
;

36 *
db_le
;

38 
r_buf
[40];

40 
uid_
;

42 
u_lg
 
nd_xt
;

44 
u_t32_t
 
fid_rl
;

46 
db_o
;

48 (*
j_o

__P
(());

49 (*
j_d

__P
((**, ));

50 (*
j_dli

__P
((const *, ***, *));

51 (*
j_exis

__P
((const *, *));

52 (*
j_

__P
((*));

53 (*
j_fsync

__P
(());

54 (*
j_run

__P
((, 
off_t
));

55 (*
j_iofo

__P
((const *,

56 , 
u_t32_t
 *, u_int32_t *, u_int32_t *));

57 *(*
j_mloc

__P
((
size_t
));

58 (*
j_m

__P
((*, 
size_t
, , , **));

59 (*
j_ݒ

__P
((const *, , ...));

60 
ssize_t
 (*
j_d

__P
((, *, 
size_t
, 
off_t
));

61 
ssize_t
 (*
j_pwre

__P
((, cڡ *, 
size_t
, 
off_t
));

62 
ssize_t
 (*
j_ad

__P
((, *, 
size_t
));

63 *(*
j_loc

__P
((*, 
size_t
));

64 (*
j_me

__P
((const *, const *));

65 (*
j_ek

__P
((, 
off_t
, ));

66 (*
j_p

__P
((
u_lg
, u_long));

67 (*
j_uƚk

__P
((const *));

68 (*
j_unm

__P
((*, 
size_t
));

69 
ssize_t
 (*
j_wre

__P
((, cڡ *, 
size_t
));

70 (*
j_yld

__P
(());

71 } 
	tDB_GLOBALS
;

73 #ifde
HAVE_BREW


74 
	#DB_GLOBAL
(
v
) \

75 ((
DB_GLOBALS
 *)(((
BDBA
 *)
	`GETAPPINSTANCE
())->
db_glob_vues
))->
v


	)

77 #ifde
DB_INITIALIZE_DB_GLOBALS


78 
DB_GLOBALS
 
__db_glob_vues
 = {

79 #ifde
HAVE_VXWORKS


81 
NULL
,

84 {
NULL
, &
__db_glob_vues
.
db_vq
.
tqh_f
},

92 
NULL
,

93 
NULL
,

94 
NULL
,

95 
NULL
,

96 
NULL
,

97 
NULL
,

98 
NULL
,

99 
NULL
,

100 
NULL
,

101 
NULL
,

102 
NULL
,

103 
NULL
,

104 
NULL
,

105 
NULL
,

106 
NULL
,

107 
NULL
,

108 
NULL
,

109 
NULL
,

110 
NULL
,

111 
NULL
,

112 
NULL
,

113 
NULL


116 
DB_GLOBALS
 
__db_glob_vues
;

119 
	#DB_GLOBAL
(
v

__db_glob_vues
.
	)
v

122 #i
defed
(
__lulus
)

	@../dbinc/hash.h

44 #idef 
_DB_HASH_H_


45 
	#_DB_HASH_H_


	)

47 #i
defed
(
__lulus
)

52 
	shash_t
 {

53 
db_pgno_t
 
ma_pgno
;

54 
u_t32_t
 
h_f
;

55 
u_t32_t
 
h_m
;

57 
u_t32_t
 (*
h_hash

__P
((
DB
 *, const *, u_int32_t));

58 (*
h_com

__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

59 } 
	tHASH
;

62 
	scurs_t
 {

64 
__DBC_INTERNAL


69 
DB_LOCK
 
hlock
;

70 
HMETA
 *
hdr
;

71 
PAGE
 *
l_buf
;

74 
db_pgno_t
 
buck
;

75 
db_pgno_t
 
lbuck
;

76 
db_dx_t
 
dup_off
;

77 
db_dx_t
 
dup_n
;

78 
db_dx_t
 
dup_
;

79 
u_t32_t
 
ek_size
;

80 
db_pgno_t
 
ek_found_ge
;

81 
db_dx_t
 
ek_found_dx
;

82 
u_t32_t
 
d
;

84 
	#H_CONTINUE
 0x0001

	)

85 
	#H_DELETED
 0x0002

	)

86 
	#H_DUPONLY
 0x0004

	)

87 
	#H_EXPAND
 0x0008

	)

88 
	#H_ISDUP
 0x0010

	)

89 
	#H_NEXT_NODUP
 0x0020

	)

90 
	#H_NOMORE
 0x0040

	)

91 
	#H_OK
 0x0080

	)

92 
u_t32_t
 
ags
;

93 } 
	tHASH_CURSOR
;

96 
	#CHARKEY
 "%$igt^&"

	)

104 
	#BS_TO_PAGE
(
buck
, 
es
) \

105 ((
buck
+ (
es
)[
	`__db_log2
((buck+ 1)])

	)

106 
	#BUCKET_TO_PAGE
(
I
, 
B
(
	`BS_TO_PAGE
((B), (I)->
hdr
->
es
))

	)

110 
	#MINFILL
 4

	)

111 
	#ISBIG
(
I
, 
N
(((N> ((I)->
hdr
->
dbma
.
gesize
 / 
MINFILL
)? 1 : 0)

	)

114 
	#NDX_INVALID
 0xFFFF

	)

115 
	#BUCKET_INVALID
 0xFFFFFFFF

	)

118 
	#DUP_SIZE
(
n
(֒+ 2 * (
db_dx_t
))

	)

121 
	#PAIR_KEYMASK
 0x1

	)

122 
	#PAIR_DATAMASK
 0x2

	)

123 
	#PAIR_DUPMASK
 0x4

	)

124 
	#PAIR_MASK
 0xf

	)

125 
	#PAIR_ISKEYBIG
(
N
(N & 
PAIR_KEYMASK
)

	)

126 
	#PAIR_ISDATABIG
(
N
(N & 
PAIR_DATAMASK
)

	)

127 
	#PAIR_ISDATADUP
(
N
(N & 
PAIR_DUPMASK
)

	)

128 
	#OPCODE_OF
(
N
(N & ~
PAIR_MASK
)

	)

130 
	#PUTPAIR
 0x20

	)

131 
	#DELPAIR
 0x30

	)

132 
	#PUTOVFL
 0x40

	)

133 
	#DELOVFL
 0x50

	)

134 
	#HASH_UNUSED1
 0x60

	)

135 
	#HASH_UNUSED2
 0x70

	)

136 
	#SPLITOLD
 0x80

	)

137 
	#SPLITNEW
 0x90

	)

138 
	#SORTPAGE
 0x100

	)

141 
	#HAM_DEL_NO_CURSOR
 0x01

	)

142 
	#HAM_DEL_NO_RECLAIM
 0x02

	)

145 
DB_HAM_CURADJ_DEL
 = 1,

146 
DB_HAM_CURADJ_ADD
 = 2,

147 
DB_HAM_CURADJ_ADDMOD
 = 3,

148 
DB_HAM_CURADJ_DELMOD
 = 4

149 } 
	tdb_ham_cudj
;

152 
DB_HAM_CHGPG
 = 1,

153 
DB_HAM_DELFIRSTPG
 = 2,

154 
DB_HAM_DELMIDPG
 = 3,

155 
DB_HAM_DELLASTPG
 = 4,

156 
DB_HAM_DUP
 = 5,

157 
DB_HAM_SPLIT
 = 6

158 } 
	tdb_ham_mode
;

160 #i
defed
(
__lulus
)

164 
	~"dbc_auto/hash_auto.h
"

165 
	~"dbc_auto/hash_ext.h
"

166 
	~"dbc/db_am.h
"

	@../dbinc/hmac.h

9 #idef 
_DB_HMAC_H_


10 
	#_DB_HMAC_H_


	)

12 #i
defed
(
__lulus
)

23 
u_t32_t
 
e
[5];

24 
u_t32_t
 
cou
[2];

25 
bufr
[64];

26 } 
	tSHA1_CTX
;

31 
	#DB_MAC_MAGIC
 "madivi key magivue"

	)

32 
	#DB_ENC_MAGIC
 "yiڇnd deyi key vumagic"

	)

34 #i
defed
(
__lulus
)

38 
	~"dbc_auto/hmac_ext.h
"

	@../dbinc/lock.h

9 #idef 
_DB_LOCK_H_


10 
	#_DB_LOCK_H_


	)

12 #i
defed
(
__lulus
)

16 
	#DB_LOCK_DEFAULT_N
 1000

	)

23 
	#DB_LOCK_INVALIDID
 0

	)

24 
	#DB_LOCK_MAXID
 0x7fffffff

	)

30 
	#LOCK_INVALID
 
INVALID_ROFF


	)

31 
	#LOCK_ISSET
(
lock
(ock).
off
 !
LOCK_INVALID
)

	)

32 
	#LOCK_INIT
(
lock
(ock).
off
 = 
LOCK_INVALID
)

	)

38 
	#IS_WRITELOCK
(
m
) \

39 ((
m
=
DB_LOCK_WRITE
 || (m=
DB_LOCK_WWRITE
 || \

40 (
m
=
DB_LOCK_IWRITE
 || (m=
DB_LOCK_IWR
)

	)

46 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


47 
	#LOCK_SYSTEM_LOCK
(
dbv
)

	)

48 
	#LOCK_SYSTEM_UNLOCK
(
dbv
)

	)

50 
	#LOCK_SYSTEM_LOCK
(
dbv
) \

51 
	`MUTEX_LOCK
(
dbv
, ((
DB_LOCKREGION
 *) \

52 (
dbv
)->
lk_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

53 
	#LOCK_SYSTEM_UNLOCK
(
dbv
) \

54 
	`MUTEX_UNLOCK
(
dbv
, ((
DB_LOCKREGION
 *) \

55 (
dbv
)->
lk_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

57 
	#LOCK_REGION_LOCK
(
dbv
) \

58 
	`MUTEX_LOCK
(
dbv
, ((
DB_LOCKREGION
 *) \

59 (
dbv
)->
lk_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

60 
	#LOCK_REGION_UNLOCK
(
dbv
) \

61 
	`MUTEX_UNLOCK
(
dbv
, ((
DB_LOCKREGION
 *) \

62 (
dbv
)->
lk_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

68 
	s__db_lockgi
 {

69 
db_mux_t
 
mtx_gi
;

71 
u_t32_t
 
ed_dd
;

72 
u_t32_t
 
de
;

73 
db_timeec
 
xt_timeout
;

74 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


75 
db_mux_t
 
mtx_locks
;

76 
db_mux_t
 
mtx_objs
;

77 
db_mux_t
 
mtx_locks
;

80 
SH_TAILQ_HEAD
(
__ock

_locks
;

82 
SH_TAILQ_HEAD
(
__fobj

_objs
;

83 
SH_TAILQ_HEAD
(
__dobj

dd_objs
;

85 
SH_TAILQ_HEAD
(
__ock

_locks
;

86 
SH_TAILQ_HEAD
(
__lkrs

locks
;

88 
db_timeout_t
 
lk_timeout
;

89 
db_timeout_t
 
tx_timeout
;

91 
u_t32_t
 
lock_t_size
;

92 
u_t32_t
 
obje_t_size
;

94 
roff_t
 
cf_off
;

95 
roff_t
 
obj_off
;

96 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


97 
roff_t
 
mtx_off
;

99 
roff_t
 
_off
;

100 
roff_t
 
lock_off
;

102 
DB_LOCK_STAT
 

;

103 } 
	tDB_LOCKREGION
;

109 
	s__sh_dbt
 {

110 
u_t32_t
 
size
;

111 
roff_t
 
off
;

112 } 
	tSH_DBT
;

114 
	#SH_DBT_PTR
(
p
((*)(((
u_t8_t
 *))+ (p)->
off
))

	)

119 
	s__db_lockobj
 {

120 
u_t32_t
 
dx
;

121 
u_t32_t
 
gi
;

122 
SH_DBT
 
lockobj
;

123 
SH_TAILQ_ENTRY
 
lks
;

124 
SH_TAILQ_ENTRY
 
dd_lks
;

125 
SH_TAILQ_HEAD
(
__wal

was
;

126 
SH_TAILQ_HEAD
(
__hdl

hds
;

131 
u_t8_t
 
objda
[(
__db_ock
)];

132 } 
	tDB_LOCKOBJ
;

137 
	s__db_lock
 {

138 
u_t32_t
 
id
;

140 
pid_t
 
pid
;

141 
db_thadid_t
 
tid
;

143 
u_t32_t
 
dd_id
;

145 
u_t32_t
 
ocks
;

146 
u_t32_t
 
nwres
;

148 
roff_t
 
ma_lock
;

149 
roff_t
 
_lock
;

150 
SH_LIST_HEAD
(
_chd

chd_lock
;

153 
SH_LIST_ENTRY
 
chd_lk
;

156 
SH_TAILQ_ENTRY
 
lks
;

157 
SH_TAILQ_ENTRY
 
ulks
;

158 
SH_LIST_HEAD
(
_hd

hdby
;

159 
db_timeec
 
lk_expe
;

160 
db_timeec
 
tx_expe
;

161 
db_timeout_t
 
lk_timeout
;

163 
	#DB_LOCKER_DELETED
 0x0001

	)

164 
	#DB_LOCKER_DIRTY
 0x0002

	)

165 
	#DB_LOCKER_INABORT
 0x0004

	)

166 
	#DB_LOCKER_TIMEOUT
 0x0008

	)

167 
u_t32_t
 
ags
;

175 
	s__db_lockb
 {

176 
DB_ENV
 *
dbv
;

177 
REGINFO
 
gfo
;

178 
u_t8_t
 *
cis
;

179 
DB_HASHTAB
 *
obj_b
;

180 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


181 
db_mux_t
 *
obj_mtx
;

183 
DB_LOCK_HSTAT
 *
obj_
;

184 
DB_HASHTAB
 *
lock_b
;

192 
	#CONFLICTS
(
T
, 
R
, 
HELD
, 
WANTED
) \

193 (
T
)->
cis
[(()
HELD
* (
R
)->

.
_nmodes
 + (()
WANTED
)]

	)

195 
	#OBJ_LINKS_VALID
(
L
((L)->
lks
.
qe_ev
 !-1)

	)

197 
	s__db_lock
 {

202 
db_mux_t
 
mtx_lock
;

204 
roff_t
 
hd
;

205 
u_t32_t
 
g
;

206 
SH_TAILQ_ENTRY
 
lks
;

207 
SH_LIST_ENTRY
 
lock_lks
;

208 
u_t32_t
 
fcou
;

209 
db_lockmode_t
 
mode
;

210 
roff_t
 
obj
;

211 
u_t32_t
 
dx
;

212 
db_us_t
 
us
;

225 
	#DB_LOCK_DOALL
 0x010000

	)

226 
	#DB_LOCK_FREE
 0x040000

	)

227 
	#DB_LOCK_NOPROMOTE
 0x080000

	)

228 
	#DB_LOCK_UNLINK
 0x100000

	)

229 
	#DB_LOCK_NOWAITERS
 0x400000

	)

234 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


241 
	#OBJECT_LOCK
(

, 
g
, 
obj
, 
ndx
) do { \

242 
ndx
 = 
	`__lock_ohash
(
obj
% (
g
)->
obje_t_size
; \

243 
	`MUTEX_LOCK
((

)->
dbv
, ()->
obj_mtx
[
ndx
]); \

244 } 0)

	)

245 
	#OBJECT_LOCK_NDX
(

, 
ndx
) \

246 
	`MUTEX_LOCK
((

)->
dbv
, ()->
obj_mtx
[
ndx
])

	)

247 
	#OBJECT_UNLOCK
(

, 
ndx
) \

248 
	`MUTEX_UNLOCK
((

)->
dbv
, ()->
obj_mtx
[
ndx
])

	)

258 
	#LOCK_OBJECTS
(
dbv
, 
gi
) \

259 
	`MUTEX_LOCK
(
dbv
, (
gi
)->
mtx_objs
)

	)

260 
	#UNLOCK_OBJECTS
(
dbv
, 
gi
) \

261 
	`MUTEX_UNLOCK
(
dbv
, (
gi
)->
mtx_objs
)

	)

262 
	#LOCK_LOCKS
(
dbv
, 
gi
) \

263 
	`MUTEX_LOCK
(
dbv
, (
gi
)->
mtx_locks
)

	)

264 
	#UNLOCK_LOCKS
(
dbv
, 
gi
) \

265 
	`MUTEX_UNLOCK
(
dbv
, (
gi
)->
mtx_locks
)

	)

266 
	#LOCK_LOCKERS
(
dbv
, 
gi
) \

267 
	`MUTEX_LOCK
(
dbv
, (
gi
)->
mtx_locks
)

	)

268 
	#UNLOCK_LOCKERS
(
dbv
, 
gi
) \

269 
	`MUTEX_UNLOCK
(
dbv
, (
gi
)->
mtx_locks
)

	)

271 
	#OBJECT_LOCK
(

, 
g
, 
obj
, 
ndx
) \

272 
ndx
 = 
	`__lock_ohash
(
obj
% (
g
)->
obje_t_size


	)

273 
	#OBJECT_LOCK_NDX
(

, 
ndx
)

	)

274 
	#OBJECT_UNLOCK
(

, 
ndx
)

	)

275 
	#LOCK_OBJECTS
(
dbv
, 
gi
)

	)

276 
	#UNLOCK_OBJECTS
(
dbv
, 
gi
)

	)

277 
	#LOCK_LOCKS
(
dbv
, 
gi
)

	)

278 
	#UNLOCK_LOCKS
(
dbv
, 
gi
)

	)

279 
	#LOCK_LOCKERS
(
dbv
, 
gi
)

	)

280 
	#UNLOCK_LOCKERS
(
dbv
, 
gi
)

	)

289 
	#__lock_lock_hash
(
lock
ock)

	)

290 
	#LOCKER_HASH
(

, 
g
, 
lock
, 
ndx
) \

291 
ndx
 = 
	`__lock_lock_hash
(
lock
% (
g
)->
lock_t_size
;

	)

293 #i
defed
(
__lulus
)

297 
	~"dbc_auto/lock_ext.h
"

	@../dbinc/log.h

9 #ide
_DB_LOG_H_


10 
	#_DB_LOG_H_


	)

12 #i
defed
(
__lulus
)

25 
	s__db_y
 {

26 
DB
 *
dbp
;

27 
ded
;

28 } 
	tDB_ENTRY
;

34 
	s__ame
 {

35 
SH_TAILQ_ENTRY
 
q
;

37 
t32_t
 
id
;

38 
t32_t
 
d_id
;

39 
DBTYPE
 
s_ty
;

41 
roff_t
 
me_off
;

42 
db_pgno_t
 
ma_pgno
;

43 
u_t8_t
 
ufid
[
DB_FILE_ID_LEN
];

45 
u_t32_t
 
_txnid
;

49 
db_mux_t
 
mux
;

50 
u_t32_t
 
txn_f
;

52 
	#DB_FNAME_CLOSED
 0x01

	)

53 
	#DB_FNAME_DURABLE
 0x02

	)

54 
	#DB_FNAME_INMEM
 0x04

	)

55 
	#DB_FNAME_NOTLOGGED
 0x08

	)

56 
	#DB_FNAME_RECOVER
 0x10

	)

57 
	#DB_FNAME_RESTORED
 0x20

	)

58 
u_t32_t
 
ags
;

62 
	#DBREG_CHKPNT
 1

	)

63 
	#DBREG_CLOSE
 2

	)

64 
	#DBREG_OPEN
 3

	)

65 
	#DBREG_PREOPEN
 4

	)

66 
	#DBREG_RCLOSE
 5

	)

67 
	#DBREG_REOPEN
 6

	)

73 
__hdr
; __hd
	tHDR
;

74 
__log
; __log 
	tLOG
;

75 
__log_rsi
; __log_rsi 
	tLOGP
;

77 
	#LFPREFIX
 "log."

	)

78 
	#LFNAME
 "log.%010d"

	)

79 
	#LFNAME_V1
 "log.%05d"

	)

81 
	#LG_MAX_DEFAULT
 (10 * 
MEGABYTE


	)

82 
	#LG_MAX_INMEM
 (256 * 1024

	)

83 
	#LG_BSIZE_INMEM
 (1 * 
MEGABYTE


	)

90 
	#LG_BASE_REGION_SIZE
 (65000

	)

91 
	#LG_BSIZE_DEFAULT
 (32000

	)

92 
	#LG_CURSOR_BUF_SIZE
 (32000

	)

98 
	s__db_log
 {

102 
db_mux_t
 
mtx_dbg
;

104 
DB_ENTRY
 *
dby
;

105 
	#DB_GROW_SIZE
 64

	)

106 
t32_t
 
dby_t
;

112 
u_t32_t
 
lame
;

113 
DB_FH
 *
lfhp
;

114 
time_t
 
lf_timeamp
;

116 
u_t8_t
 *
bu
;

119 
DB_ENV
 *
dbv
;

120 
REGINFO
 
gfo
;

122 
	#DBLOG_FORCE_OPEN
 0x01

	)

124 
	#DBLOG_OPENFILES
 0x02

	)

125 
	#DBLOG_RECOVER
 0x04

	)

126 
u_t32_t
 
ags
;

133 
	s__hdr
 {

134 
u_t32_t
 
ev
;

135 
u_t32_t
 
n
;

136 
u_t8_t
 
chksum
[
DB_MAC_KEY
];

137 
u_t8_t
 
iv
[
DB_IV_BYTES
];

138 
u_t32_t
 
ig_size
;

140 
size_t
 
size
;

148 
	#LOG_HDR_SUM
(
yo
, 
hdr
, 
sum
) do { \

149 i(
yo
) { \

150 ((
u_t32_t
 *)
sum
)[0] ^((
HDR
 *)
hdr
)->
ev
; \

151 ((
u_t32_t
 *)
sum
)[1] ^((
HDR
 *)
hdr
)->
n
; \

153 ((
u_t32_t
 *)
sum
)[0] ^= \

154 ((
HDR
 *)
hdr
)->
ev
 ^ ((HDR *)hdr)->
n
; \

156 } 0)

	)

166 
	#HDR_NORMAL_SZ
 12

	)

167 
	#HDR_CRYPTO_SZ
 12 + 
DB_MAC_KEY
 + 
DB_IV_BYTES


	)

169 
	s__log_rsi
 {

170 
u_t32_t
 
magic
;

171 
u_t32_t
 
vsi
;

173 
u_t32_t
 
log_size
;

174 
u_t32_t
 
nud
;

178 
	#LOG_SYSTEM_LOCK
(
dbv
) \

179 
	`MUTEX_LOCK
(
dbv
, ((
LOG
 *) \

180 (
dbv
)->
lg_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

181 
	#LOG_SYSTEM_UNLOCK
(
dbv
) \

182 
	`MUTEX_UNLOCK
(
dbv
, ((
LOG
 *) \

183 (
dbv
)->
lg_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

190 
	s__log
 {

191 
db_mux_t
 
mtx_gi
;

193 
db_mux_t
 
mtx_fi
;

195 
LOGP
 
rsi
;

197 
SH_TAILQ_HEAD
(
__fq1

fq
;

198 
t32_t
 
fid_max
;

199 
roff_t
 
_fid_ack
;

200 
u_t
 
_fids
;

201 
u_t
 
_fids_lod
;

207 
DB_LSN
 
l
;

215 
DB_LSN
 
f_l
;

216 
size_t
 
b_off
;

217 
u_t32_t
 
w_off
;

218 
u_t32_t
 
n
;

220 
DB_LSN
 
aive_l
;

221 
size_t
 
a_off
;

229 
db_mux_t
 
mtx_ush
;

230 
_ush
;

231 
DB_LSN
 
s_l
;

233 
DB_LOG_STAT
 

;

244 
time_t
 
timeamp
;

267 
DB_LSN
 
wag_l
;

268 
DB_LSN
 
vify_l
;

269 
DB_LSN
 
max_wa_l
;

270 
DB_LSN
 
max_rm_l
;

271 
db_timeec
 
max_a_ts
;

272 
u_t32_t
 
wa_cs
;

273 
u_t32_t
 
rcvd_cs
;

281 
DB_LSN
 
ady_l
;

288 
roff_t
 
bulk_buf
;

289 
u_t
 
bulk_off
;

290 
u_t32_t
 
bulk_n
;

291 
u_t32_t
 
bulk_ags
;

300 
DB_LSN
 
ched_ckp_l
;

302 
u_t32_t
 
gimax
;

304 
roff_t
 
bufr_off
;

305 
u_t32_t
 
bufr_size
;

307 
u_t32_t
 
log_size
;

308 
u_t32_t
 
log_nsize
;

310 
femode
;

316 
db_log_autemove
;

317 
db_log_memy
;

319 
u_t32_t
 
ncomm
;

320 
DB_LSN
 
t_l
;

321 
SH_TAILQ_HEAD
(
__comm

comms
;

322 
SH_TAILQ_HEAD
(
__

_comms
;

329 
SH_TAILQ_HEAD
(
__logfe

logfes
;

330 
SH_TAILQ_HEAD
(
___logfe

_logfes
;

337 
	s__db_comm
 {

338 
db_mux_t
 
mtx_txnwa
;

339 
DB_LSN
 
l
;

340 
SH_TAILQ_ENTRY
 
lks
;

342 
	#DB_COMMIT_FLUSH
 0x0001

	)

343 
u_t32_t
 
ags
;

361 #ifde
HAVE_FTRUNCATE


362 
	#CHECK_LSN
(
e
, 
do
, 
cmp
, 
l
, 
ev
) \

363 i(
	`DB_REDO
(
do
&& (
cmp
) < 0 && \

364 ((!
	`IS_NOT_LOGGED_LSN
(*(
l
)&& !
	`IS_ZERO_LSN
(*(lsn))) || \

365 
	`IS_REP_CLIENT
(
e
))) { \

366 
t
 = 
	`__db_check_l
(
e
, 
l
, 
ev
); \

367 
out
; \

368 }

	)

370 
	#CHECK_LSN
(
e
, 
do
, 
cmp
, 
l
, 
ev
) \

371 i(
	`DB_REDO
(
do
&& (
cmp
) < 0 && \

372 (!
	`IS_NOT_LOGGED_LSN
(*(
l
)|| 
	`IS_REP_CLIENT
(
e
))) { \

373 
t
 = 
	`__db_check_l
(
e
, 
l
, 
ev
); \

374 
out
; \

375 }

	)

382 
	s__db_fet
 {

383 
u_t32_t
 
fe
;

384 
size_t
 
b_off
;

386 
SH_TAILQ_ENTRY
 
lks
;

389 
	#RINGBUF_LEN
(

, 
t
, 
d
) \

390 ((
t
< (
d
) ? \

391 (
d
- (
t
: (

)->
bufr_size
 - ((t- (d)))

	)

398 #unde
DB_SET_TXN_LSNP


399 
	#DB_SET_TXN_LSNP
(
txn
, 
blp
, 
΢p
) do { \

400 
DB_LSN
 *
__lp
; \

401 
TXN_DETAIL
 *
__td
; \

402 
__td
 = (
txn
)->
td
; \

403 *(
΢p
&
__td
->
ϡ_l
; \

404 
__td
->

 !
INVALID_ROFF
) \

405 
__td
 = 
	`R_ADDR
(&(
txn
)->
mg
->
gfo
, __td->

); \

406 
__lp
 = &
__td
->
beg_l
; \

407 i(
	`IS_ZERO_LSN
(*
__lp
)) \

408 *(
blp

__lp
; \

409 } 0)

	)

415 
	#CKPLSN_CMP
 0

	)

416 
	#LASTCKP_CMP
 1

	)

423 
DB_LV_INCOMPLETE
,

424 
DB_LV_NONEXISTENT
,

425 
DB_LV_NORMAL
,

426 
DB_LV_OLD_READABLE
,

427 
DB_LV_OLD_UNREADABLE


428 } 
	tlogfe_vidy
;

430 #i
defed
(
__lulus
)

434 
	~"dbc_auto/dbg_auto.h
"

435 
	~"dbc_auto/dbg_ext.h
"

436 
	~"dbc_auto/log_ext.h
"

	@../dbinc/mp.h

9 #idef 
_DB_MP_H_


10 
	#_DB_MP_H_


	)

12 #i
defed
(
__lulus
)

16 
__bh
; __bh 
	tBH
;

17 
__bh_oz
; 
__bh_oz_p
 
	tBH_FROZEN_PAGE
;

18 
__bh_oz_a
; __bh_oz_
	tBH_FROZEN_ALLOC
;

19 
__db_mpo_hash
; __db_mpo_hash 
	tDB_MPOOL_HASH
;

20 
__db_meg
; __db_meg 
	tDB_MPREG
;

21 
__mpo
; __mpo 
	tMPOOL
;

24 
	#DB_CACHESIZE_MIN
 (20 * 1024)

	)

30 
	#MPF_ILLEGAL_AFTER_OPEN
(
dbm
, 
me
) \

31 i(
	`F_ISSET
(
dbm
, 
MP_OPEN_CALLED
)) \

32  (
	`__db_mi_ݒ
((
dbm
)->
dbv
, 
me
, 1));

	)

33 
	#MPF_ILLEGAL_BEFORE_OPEN
(
dbm
, 
me
) \

34 i(!
	`F_ISSET
(
dbm
, 
MP_OPEN_CALLED
)) \

35  (
	`__db_mi_ݒ
((
dbm
)->
dbv
, 
me
, 0));

	)

40 
	#DB_SYNC_ALLOC
 0x0001

	)

41 
	#DB_SYNC_CACHE
 0x0002

	)

42 
	#DB_SYNC_CHECKPOINT
 0x0004

	)

43 
	#DB_SYNC_FILE
 0x0008

	)

44 
	#DB_SYNC_INTERRUPT_OK
 0x0010

	)

45 
	#DB_SYNC_QUEUE_EXTENT
 0x0020

	)

46 
	#DB_SYNC_SUPPRESS_WRITE
 0x0040

	)

47 
	#DB_SYNC_TRICKLE
 0x0080

	)

53 
	s__db_mpo
 {

55 
db_mux_t
 
mux
;

62 
DB_MPREG
 *
pg_out
;

63 
LIST_HEAD
(
__db_megh
, 
__db_meg

dbgq
;

66 
TAILQ_HEAD
(
__db_mpofeh
, 
__db_mpofe

dbmfq
;

72 
DB_ENV
 *
dbv
;

73 
REGINFO
 *
gfo
;

80 
	s__db_meg
 {

81 
LIST_ENTRY
(
__db_meg

q
;

83 
t32_t
 
y
;

85 (*
pg

__P
((
DB_ENV
 *, 
db_pgno_t
, *, 
DBT
 *));

86 (*
pgout

__P
((
DB_ENV
 *, 
db_pgno_t
, *, 
DBT
 *));

96 
	#MPOOL_FILE_BUCKETS
 17

	)

98 
	#FHASH
(
id
, 
n

	`__ham_func5
(
NULL
, id, (
u_t32_t
)֒))

	)

100 
	#FNBUCKET
(
id
, 
n
) \

101 (
	`FHASH
(
id
, 
n
% 
MPOOL_FILE_BUCKETS
)

	)

104 
	#MPOOL_SYSTEM_LOCK
(
dbv
) \

105 
	`MUTEX_LOCK
(
dbv
, ((
MPOOL
 *) \

106 (
dbv
)->
mp_hd
->
gfo
[0].
imy
)->
mtx_gi
)

	)

107 
	#MPOOL_SYSTEM_UNLOCK
(
dbv
) \

108 
	`MUTEX_UNLOCK
(
dbv
, ((
MPOOL
 *) \

109 (
dbv
)->
mp_hd
->
gfo
[0].
imy
)->
mtx_gi
)

	)

112 
	#MPOOL_REGION_LOCK
(
dbv
, 
f
) \

113 
	`MUTEX_LOCK
(
dbv
, ((
MPOOL
 *)(
f
)->
imy
)->
mtx_gi
)

	)

114 
	#MPOOL_REGION_UNLOCK
(
dbv
, 
f
) \

115 
	`MUTEX_UNLOCK
(
dbv
, ((
MPOOL
 *)(
f
)->
imy
)->
mtx_gi
)

	)

121 
	s__mpo
 {

134 
db_mux_t
 
mtx_gi
;

135 
db_mux_t
 
mtx_size
;

141 
DB_LSN
 
l
;

144 
u_t32_t
 
max_eg
;

145 
size_t
 
mp_mmsize
;

146 
mp_maxݒfd
;

147 
mp_maxwre
;

148 
db_timeout_t
 
mp_maxwre_p
;

159 
u_t32_t
 
eg
;

160 
u_t32_t
 
nbucks
;

165 
roff_t
 
gids
;

167 
roff_t
 
ab
;

178 
roff_t
 
hb
;

179 
u_t32_t
 
hb_bucks
;

180 
u_t32_t
 
ϡ_checked
;

181 
u_t32_t
 
u_cou
;

182 
t32_t
 
u_t
;

190 
DB_MPOOL_STAT
 

;

197 
u_t32_t
 
put_cou
;

213 
	#DB_MEMP_SUPPRESS_WRITE
 0x01

	)

214 
	#DB_MEMP_SYNC_INTERRUPT
 0x02

	)

215 
u_t32_t
 
cfig_ags
;

218 
SH_TAILQ_HEAD
(
___oz

_oz
;

221 
SH_TAILQ_HEAD
(
__loc_oz

loc_oz
;

228 
	#NREGION
(
mp
, 
buck
) \

229 ((
buck
/ (
mp
)->
hb_bucks
)

	)

249 
	#MP_HASH
(
mf_offt
, 
pgno
) \

250 ((
pgno
^ ((
mf_offt
* 509))

	)

259 
	#MP_MASK
(
nbucks
, 
mask
) do { \

260 
mask
 = 1; mask < (
nbucks
); mask = (mask << 1) | 1) \

262 } 0)

	)

264 
	#MP_HASH_BUCKET
(
hash
, 
nbucks
, 
mask
, 
buck
) do { \

265 (
buck
(
hash
& (
mask
); \

266 i((
buck
>(
nbucks
)) \

267 (
buck
&((
mask
) >> 1); \

268 } 0)

	)

270 
	#MP_BUCKET
(
mf_offt
, 
pgno
, 
nbucks
, 
buck
) do { \

271 
u_t32_t
 
__mask
; \

272 
	`MP_MASK
(
nbucks
, 
__mask
); \

273 
	`MP_HASH_BUCKET
(
	`MP_HASH
(
mf_offt
, 
pgno
), 
nbucks
, \

274 
__mask
, 
buck
); \

275 } 0)

	)

281 
	#MP_GET_REGION
(
dbm
, 
pgno
, 
fp
, 
t
) do { \

282 
DB_MPOOL
 *
__t_dbmp
; \

283 
MPOOL
 *
__t_mp
; \

285 
__t_dbmp
 = 
dbm
->
dbv
->
mp_hd
; \

286 
__t_mp
 = 
__t_dbmp
->
gfo
[0].
imy
; \

287 i(
__t_mp
->
max_eg
 == 1) { \

288 *(
fp
&
__t_dbmp
->
gfo
[0]; \

290 
t
 = 
	`__memp_g_buck
((
dbm
), (
pgno
), (
fp
), 
NULL
);\

291 } 0)

	)

297 
	#MP_GET_BUCKET
(
dbm
, 
pgno
, 
fp
, 
hp
, 
t
) do { \

298 
DB_MPOOL
 *
__t_dbmp
; \

299 
MPOOL
 *
__t_mp
; \

300 
roff_t
 
__t_mf_offt
; \

301 
u_t32_t
 
__t_buck
; \

303 
__t_dbmp
 = (
dbm
)->
dbv
->
mp_hd
; \

304 
__t_mp
 = 
__t_dbmp
->
gfo
[0].
imy
; \

305 i(
__t_mp
->
max_eg
 == 1) { \

306 *(
fp
&
__t_dbmp
->
gfo
[0]; \

307 
__t_mf_offt
 = 
	`R_OFFSET
(*(
fp
), (
dbm
)->
m
); \

308 
	`MP_BUCKET
(
__t_mf_offt
, (
pgno
), 
__t_mp
->
nbucks
, 
__t_buck
);\

309 (
hp

	`R_ADDR
(*(
fp
), 
__t_mp
->
hb
); \

310 (
hp
&(hp)[
__t_buck
]; \

311 
	`MUTEX_LOCK
(
dbv
, (
hp
)->
mtx_hash
); \

312 
t
 = 0; \

314 
t
 = 
	`__memp_g_buck
((
dbm
), (
pgno
), (
fp
), &(
hp
));\

315 } 0)

	)

317 
	s__db_mpo_hash
 {

318 
db_mux_t
 
mtx_hash
;

319 
db_mux_t
 
mtx_io
;

321 
DB_HASHTAB
 
hash_buck
;

323 
u_t32_t
 
hash_ge_dty
;

324 
u_t32_t
 
hash_iܙy
;

326 #ide
__TEST_DB_NO_STATISTICS


327 
u_t32_t
 
hash_io_wa
;

328 
u_t32_t
 
hash_oz
;

329 
u_t32_t
 
hash_thawed
;

330 
u_t32_t
 
hash_oz_d
;

333 
DB_LSN
 
d_ad
;

335 
	#IO_WAITER
 0x001

	)

336 
u_t32_t
 
ags
;

344 
	#MPOOL_BASE_DECREMENT
 (
UINT32_MAX
 - (UINT32_MAX / 4))

	)

350 
	#MPOOL_PRI_VERY_LOW
 -1

	)

351 
	#MPOOL_PRI_LOW
 -2

	)

352 
	#MPOOL_PRI_DEFAULT
 0

	)

353 
	#MPOOL_PRI_HIGH
 10

	)

354 
	#MPOOL_PRI_DIRTY
 10

	)

355 
	#MPOOL_PRI_VERY_HIGH
 1

	)

361 
	s__mpofe
 {

362 
db_mux_t
 
mux
;

365 
u_t32_t
 
mpf_t
;

366 
u_t32_t
 
block_t
;

367 
db_pgno_t
 
ϡ_pgno
;

368 
db_pgno_t
 
ϡ_ushed_pgno
;

369 
db_pgno_t
 
ig_ϡ_pgno
;

370 
db_pgno_t
 
maxpgno
;

372 
roff_t
 
th_off
;

375 
SH_TAILQ_ENTRY
 
q
;

384 
u_t32_t
 
_f
;

385 
u_t32_t
 
_t
;

386 
size_t
 
_size
;

387 
roff_t
 
_li
;

394 
t32_t
 
ddfe
;

396 
u_t32_t
 
buck
;

406 
t32_t
 
y
;

413 
t32_t
 
iܙy
;

432 
t32_t
 
fe_wrn
;

433 
t32_t
 
no_backg_fe
;

434 
t32_t
 
uƚk__o
;

435 
t32_t
 
muivsi
;

442 
DB_MPOOL_FSTAT
 

;

448 
t32_t
 
l_off
;

449 
u_t32_t
 
r_n
;

451 
roff_t
 
feid_off
;

453 
roff_t
 
pgcook_n
;

454 
roff_t
 
pgcook_off
;

459 
	#MP_CAN_MMAP
 0x001

	)

460 
	#MP_DIRECT
 0x002

	)

461 
	#MP_DURABLE_UNKNOWN
 0x004

	)

462 
	#MP_EXTENT
 0x008

	)

463 
	#MP_FAKE_DEADFILE
 0x010

	)

464 
	#MP_FAKE_FILEWRITTEN
 0x020

	)

465 
	#MP_FAKE_NB
 0x040

	)

466 
	#MP_FAKE_UOC
 0x080

	)

467 
	#MP_NOT_DURABLE
 0x100

	)

468 
	#MP_TEMP
 0x200

	)

469 
u_t32_t
 
ags
;

475 
	#BH_FREE_FREEMEM
 0x01

	)

476 
	#BH_FREE_REUSE
 0x02

	)

477 
	#BH_FREE_UNLOCKED
 0x04

	)

483 
	s__bh
 {

484 
u_t16_t
 
f
;

485 
u_t16_t
 
f_sync
;

487 
	#BH_CALLPGIN
 0x001

	)

488 
	#BH_DIRTY
 0x002

	)

489 
	#BH_DIRTY_CREATE
 0x004

	)

490 
	#BH_DISCARD
 0x008

	)

491 
	#BH_FREED
 0x010

	)

492 
	#BH_FROZEN
 0x020

	)

493 
	#BH_LOCKED
 0x040

	)

494 
	#BH_TRASH
 0x080

	)

495 
	#BH_THAWED
 0x100

	)

496 
u_t16_t
 
ags
;

498 
u_t32_t
 
iܙy
;

499 
SH_TAILQ_ENTRY
 
hq
;

501 
db_pgno_t
 
pgno
;

502 
roff_t
 
mf_offt
;

504 
roff_t
 
td_off
;

505 
SH_CHAIN_ENTRY
 
vc
;

506 #ifde
DIAG_MVCC


507 
u_t16_t
 
ign_off
;

517 
u_t8_t
 
buf
[1];

524 
	s__bh_oz_p
 {

525 
BH
 
hd
;

526 
db_pgno_t
 
gno
;

535 
	s__bh_oz_a
 {

536 
SH_TAILQ_ENTRY
 
lks
;

539 
	#MULTIVERSION
(
dbp
((dbp)->
mpf
->
m
->
muivsi
)

	)

540 
	#IS_DIRTY
(
p
) \

541 
	`F_ISSET
((
BH
 *)((
u_t8_t
 *)(
p
- 
	`SSZA
(BH, 
buf
)), 
BH_DIRTY
)

	)

543 
	#BH_OWNER
(
dbv
, 
bhp
) \

544 ((
TXN_DETAIL
 *)
	`R_ADDR
(&
dbv
->
tx_hd
->
gfo
, 
bhp
->
td_off
))

	)

546 
	#BH_OWNED_BY
(
dbv
, 
bhp
, 
txn
(xn!
NULL
 && \

547 (
bhp
)->
td_off
 !
INVALID_ROFF
 && \

548 (
txn
)->
td
 =
	`BH_OWNER
(
dbv
, 
bhp
))

	)

550 
	#BH_PRIORITY
(
bhp
) \

551 (
	`SH_CHAIN_SINGLETON
(
bhp
, 
vc
? (bhp)->
iܙy
 : \

552 
	`__memp_bh_iܙy
(
bhp
))

	)

554 
	#VISIBLE_LSN
(
dbv
, 
bhp
) \

555 (&
	`BH_OWNER
(
dbv
, 
bhp
)->
visib_l
)

	)

567 
	#BH_VISIBLE
(
dbv
, 
bhp
, 
ad_lp
, 
vl
) \

568 (
bhp
->
td_off
 =
INVALID_ROFF
 || \

569 ((
vl
).
fe
 = 
	`VISIBLE_LSN
(
dbv
, 
bhp
)->file, \

570 (
vl
).
offt
 = 
	`VISIBLE_LSN
(
dbv
, 
bhp
)->offset, \

571 
	`LOG_COMPARE
((
ad_lp
), &(
vl
)>0))

	)

573 
	#BH_OBSOLETE
(
bhp
, 
d_l
, 
vl
(
	`SH_CHAIN_HASNEXT
(bhp, 
vc
) ? \

574 
	`BH_VISIBLE
(
dbv
, 
	`SH_CHAIN_NEXTP
(
bhp
, 
vc
, 
__bh
), &(
d_l
), 
vl
) :\

575 
	`BH_VISIBLE
(
dbv
, 
bhp
, &(
d_l
), 
vl
))

	)

577 
	#MVCC_SKIP_CURADJ
(
dbc
, 
pgno
) \

578 (
dbc
->
txn
 !
NULL
 && 
	`F_ISSET
(dbc->txn, 
TXN_SNAPSHOT
) && \

579 
dbc
->
txn
->
td
 !
NULL
 && 
	`__memp_sk_cudj
(dbc, 
pgno
))

	)

581 #i
defed
(
DIAG_MVCC
&& defed(
HAVE_MPROTECT
)

582 
	#VM_PAGESIZE
 4096

	)

583 
	#MVCC_BHSIZE
(
m
, 
sz
) do { \

584 
sz
 +
VM_PAGESIZE
 + (
BH
); \

585 i(
m
->

.
_gesize
 < 
VM_PAGESIZE
) \

586 
sz
 +
VM_PAGESIZE
 - 
m
->

.
_gesize
; \

587 } 0)

	)

589 
	#MVCC_BHALIGN
(
m
, 
p
) do { \

590 i(
m
 !
NULL
) { \

591 
BH
 *
__bhp
; \

592 *
__ig
 = (
p
); \

593 
p
 = 
	`ALIGNP_INC
, 
VM_PAGESIZE
); \

594 i((
u_t8_t
 *)
p
 < (u_t8_*)
__ig
 + (
BH
)) \

595 
p
 = (
u_t8_t
 * + 
VM_PAGESIZE
; \

596 
__bhp
 = (
BH
 *)((
u_t8_t
 *)
p
 - 
	`SSZA
(BH, 
buf
)); \

597 
	`DB_ASSERT
(
dbv
, \

598 ((
u_t
)
__bhp
->
buf
 & (
VM_PAGESIZE
 - 1)) == 0); \

599 
	`DB_ASSERT
(
dbv
, \

600 (
u_t8_t
 *)
__bhp
 >(u_t8_*)
__ig
); \

601 
	`DB_ASSERT
(
dbv
, (
u_t8_t
 *)
p
 + 
m
->

.
_gesize
 <\

602 (
u_t8_t
 *)
__ig
 + 
n
); \

603 
__bhp
->
ign_off
 = \

604 (
u_t16_t
)((
u_t8_t
 *)
__bhp
 - (u_t8_*)
__ig
);\

605 
p
 = 
__bhp
; \

607 } 0)

	)

609 
	#MVCC_BHUNALIGN
(
m
, 
p
) do { \

610 i((
m
!
NULL
) { \

611 
BH
 *
bhp
 = (BH *)(
p
); \

612 (
p
((
u_t8_t
 *)
bhp
 - bhp->
ign_off
); \

614 } 0)

	)

616 #ifde
lux


617 
	#MVCC_MPROTECT
(
buf
, 
sz
, 
mode
) do { \

618 
__t
 = 
	`me
((
buf
), (
sz
), (
mode
)); \

619 
	`DB_ASSERT
(
dbv
, 
__t
 == 0); \

620 } 0)

	)

622 
	#MVCC_MPROTECT
(
buf
, 
sz
, 
mode
) do { \

623 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
 | 
DB_ENV_SYSTEM_MEM
)) { \

624 
__t
 = 
	`me
((
buf
), (
sz
), (
mode
)); \

625 
	`DB_ASSERT
(
dbv
, 
__t
 == 0); \

627 } 0)

	)

631 
	#MVCC_BHSIZE
(
m
, 
sz
d{} 0)

	)

632 
	#MVCC_BHALIGN
(
m
, 
p
d{} 0)

	)

633 
	#MVCC_BHUNALIGN
(
m
, 
p
d{} 0)

	)

634 
	#MVCC_MPROTECT
(
buf
, 
size
, 
mode
d{} 0)

	)

640 
	#MP_TRUNC_RECOVER
 0x01

	)

642 #i
defed
(
__lulus
)

646 
	~"dbc_auto/mp_ext.h
"

	@../dbinc/mutex.h

9 #ide
_DB_MUTEX_H_


10 
	#_DB_MUTEX_H_


	)

12 #i
defed
(
__lulus
)

21 
	#MUTEX_INVALID
 0

	)

26 
	#MTX_APPLICATION
 1

	)

27 
	#MTX_DB_HANDLE
 2

	)

28 
	#MTX_ENV_DBLIST
 3

	)

29 
	#MTX_ENV_HANDLE
 4

	)

30 
	#MTX_ENV_REGION
 5

	)

31 
	#MTX_LOCK_REGION
 6

	)

32 
	#MTX_LOGICAL_LOCK
 7

	)

33 
	#MTX_LOG_FILENAME
 8

	)

34 
	#MTX_LOG_FLUSH
 9

	)

35 
	#MTX_LOG_HANDLE
 10

	)

36 
	#MTX_LOG_REGION
 11

	)

37 
	#MTX_MPOOLFILE_HANDLE
 12

	)

38 
	#MTX_MPOOL_FH
 13

	)

39 
	#MTX_MPOOL_FILE_BUCKET
 14

	)

40 
	#MTX_MPOOL_HANDLE
 15

	)

41 
	#MTX_MPOOL_HASH_BUCKET
 16

	)

42 
	#MTX_MPOOL_IO
 17

	)

43 
	#MTX_MPOOL_REGION
 18

	)

44 
	#MTX_MUTEX_REGION
 19

	)

45 
	#MTX_MUTEX_TEST
 20

	)

46 
	#MTX_REP_CKP
 21

	)

47 
	#MTX_REP_DATABASE
 22

	)

48 
	#MTX_REP_EVENT
 23

	)

49 
	#MTX_REP_REGION
 24

	)

50 
	#MTX_SEQUENCE
 25

	)

51 
	#MTX_TWISTER
 26

	)

52 
	#MTX_TXN_ACTIVE
 27

	)

53 
	#MTX_TXN_CHKPT
 28

	)

54 
	#MTX_TXN_COMMIT
 29

	)

55 
	#MTX_TXN_MVCC
 30

	)

56 
	#MTX_TXN_REGION
 31

	)

58 
	#MTX_MAX_ENTRY
 31

	)

61 #i!
defed
(
HAVE_MUTEX_HYBRID
) && ( \

62 
defed
(
HAVE_MUTEX_PTHREADS
) || \

63 
defed
(
HAVE_MUTEX_SOLARIS_LWP
) || \

64 
defed
(
HAVE_MUTEX_UI_THREADS
))

65 
	#__mux_
(
a
, 
b
, 
c

	`__db_had_mux_
, b, c)

	)

66 
	#__mux_lock
(
a
, 
b

	`__db_had_mux_lock
, b)

	)

67 
	#__mux_uock
(
a
, 
b

	`__db_had_mux_uock
, b)

	)

68 
	#__mux_deroy
(
a
, 
b

	`__db_had_mux_deroy
, b)

	)

69 #i
defed
(
HAVE_MUTEX_WIN32
|| defed(
HAVE_MUTEX_WIN32_GCC
)

70 
	#__mux_
(
a
, 
b
, 
c

	`__db_w32_mux_
, b, c)

	)

71 
	#__mux_lock
(
a
, 
b

	`__db_w32_mux_lock
, b)

	)

72 
	#__mux_uock
(
a
, 
b

	`__db_w32_mux_uock
, b)

	)

73 
	#__mux_deroy
(
a
, 
b

	`__db_w32_mux_deroy
, b)

	)

74 #i
defed
(
HAVE_MUTEX_FCNTL
)

75 
	#__mux_
(
a
, 
b
, 
c

	`__db_f_mux_
, b, c)

	)

76 
	#__mux_lock
(
a
, 
b

	`__db_f_mux_lock
, b)

	)

77 
	#__mux_uock
(
a
, 
b

	`__db_f_mux_uock
, b)

	)

78 
	#__mux_deroy
(
a
, 
b

	`__db_f_mux_deroy
, b)

	)

80 
	#__mux_
(
a
, 
b
, 
c

	`__db_s_mux_
, b, c)

	)

81 
	#__mux_lock
(
a
, 
b

	`__db_s_mux_lock
, b)

	)

82 
	#__mux_uock
(
a
, 
b

	`__db_s_mux_uock
, b)

	)

83 
	#__mux_deroy
(
a
, 
b

	`__db_s_mux_deroy
, b)

	)

94 #ifde
HAVE_MUTEX_SUPPORT


95 
	#MUTEX_LOCK
(
dbv
, 
mux
) do { \

96 i((
mux
!
MUTEX_INVALID
 && \

97 
	`__mux_lock
(
dbv
, 
mux
) != 0) \

98  (
DB_RUNRECOVERY
); \

99 } 0)

	)

100 
	#MUTEX_UNLOCK
(
dbv
, 
mux
) do { \

101 i((
mux
!
MUTEX_INVALID
 && \

102 
	`__mux_uock
(
dbv
, 
mux
) != 0) \

103  (
DB_RUNRECOVERY
); \

104 } 0)

	)

112 
	#MUTEX_LOCK
(
dbv
, 
mux
) \

113 (
mux
(mux);

	)

114 
	#MUTEX_UNLOCK
(
dbv
, 
mux
) \

115 (
mux
(mux);

	)

121 #ifde
HAVE_MUTEX_VXWORKS


122 
	~"skLib.h
"

127 
	#DB_BEGIN_SINGLE_THREAD
 do { \

128 i(
	`DB_GLOBAL
(
db_glob_
)) \

129 ()
	`mTake
(
	`DB_GLOBAL
(
db_glob_lock
), 
WAIT_FOREVER
); \

131 
	`skLock
(); \

132 i(
	`DB_GLOBAL
(
db_glob_
)) { \

133 
	`skUock
(); \

134 ()
	`mTake
(
	`DB_GLOBAL
(
db_glob_lock
), \

135 
WAIT_FOREVER
); \

138 
	`DB_GLOBAL
(
db_glob_lock
) = \

139 
	`mBCe
(
SEM_Q_FIFO
, 
SEM_EMPTY
); \

140 i(
	`DB_GLOBAL
(
db_glob_lock
!
NULL
) \

141 
	`DB_GLOBAL
(
db_glob_
) = 1; \

142 
	`skUock
(); \

144 } 
	`DB_GLOBAL
(
db_glob_
=0)

	)

145 
	#DB_END_SINGLE_THREAD
 ()
	`mGive
(
	`DB_GLOBAL
(
db_glob_lock
))

	)

151 #ide
DB_BEGIN_SINGLE_THREAD


152 
	#DB_BEGIN_SINGLE_THREAD


	)

154 #ide
DB_END_SINGLE_THREAD


155 
	#DB_END_SINGLE_THREAD


	)

158 #i
defed
(
__lulus
)

162 
	~"dbc_auto/mux_ext.h
"

	@../dbinc/mutex_int.h

9 #ide
_DB_MUTEX_INT_H_


10 
	#_DB_MUTEX_INT_H_


	)

12 #i
defed
(
__lulus
)

19 #i
defed
(
HAVE_MUTEX_PTHREADS
)

20 
	~<had.h
>

22 
	#MUTEX_FIELDS
 \

23 
had_mux_t
 
mux
; \

24 
had_cd_t
 
cd
;

	)

27 #ifde
HAVE_MUTEX_UI_THREADS


28 
	~<thad.h
>

48 #ifde
HAVE_MUTEX_SOLARIS_LWP


55 
	~<synch.h
>

57 
	#MUTEX_FIELDS
 \

58 
lwp_mux_t
 
mux
; \

59 
lwp_cd_t
 
cd
;

	)

65 #ifde
HAVE_MUTEX_UI_THREADS


66 
	~<thad.h
>

67 
	~<synch.h
>

69 
	#MUTEX_FIELDS
 \

70 
mux_t
 
mux
; \

71 
cd_t
 
cd
;

	)

77 #ifde
HAVE_MUTEX_AIX_CHECK_LOCK


78 
	~<sys/omic_.h
>

79 
	tt_t
;

81 #ifde
LOAD_ACTUAL_MUTEX_CODE


82 
	#MUTEX_INIT
(
x
0

	)

83 
	#MUTEX_SET
(
x
(!
	`_check_lock
(x, 0, 1))

	)

84 
	#MUTEX_UNSET
(
x

	`_r_lock
(x, 0)

	)

91 #ifde
HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY


92 
u_t32_t
 
	tt_t
;

94 #ifde
LOAD_ACTUAL_MUTEX_CODE


95 

__lock_y
(
t_t
 *);

96 

__uock
(
t_t
 *);

97 
	#MUTEX_SET
(
t

	`__lock_y
Ѧ)

	)

98 
	#MUTEX_UNSET
(
t

	`__uock
Ѧ)

	)

99 
	#MUTEX_INIT
(
t
(
	`MUTEX_UNSET
Ѧ), 0)

	)

117 #ifde
HAVE_MUTEX_HPPA_MSEM_INIT


118 
	#MUTEX_ALIGN
 16

	)

121 #i
defed
(
HAVE_MUTEX_MSEM_INIT
|| defed(
HAVE_MUTEX_HPPA_MSEM_INIT
)

122 
	~<sys/mm.h
>

123 
mmhe
 
	tt_t
;

125 #ifde
LOAD_ACTUAL_MUTEX_CODE


126 
	#MUTEX_INIT
(
x
(
	`mm_
(x, 
MSEM_UNLOCKED
<(
mmhe
 *)0)

	)

127 
	#MUTEX_SET
(
x
(!
	`mm_lock
(x, 
MSEM_IF_NOWAIT
))

	)

128 
	#MUTEX_UNSET
(
x

	`mm_uock
(x, 0)

	)

135 #ifde
HAVE_MUTEX_PLAN9


136 
Lock
 
	tt_t
;

138 
	#MUTEX_INIT
(
x
(
	`memt
(x, 0, (
Lock
)), 0)

	)

139 
	#MUTEX_SET
(
x

	`ock
(x)

	)

140 
	#MUTEX_UNSET
(
x

	`uock
(x)

	)

146 #ifde
HAVE_MUTEX_RELIANTUNIX_INITSPIN


147 
	~<ulocks.h
>

148 
lock_t
 
	tt_t
;

150 #ifde
LOAD_ACTUAL_MUTEX_CODE


151 
	#MUTEX_INIT
(
x
(
	`
(x, 1), 0)

	)

152 
	#MUTEX_SET
(
x
(
	`clock
(x=0)

	)

153 
	#MUTEX_UNSET
(
x

	`uock
(x)

	)

164 #ifde
HAVE_MUTEX_SEMA_INIT


165 
	~<synch.h
>

166 
ma_t
 
	tt_t
;

168 #ifde
LOAD_ACTUAL_MUTEX_CODE


169 
	#MUTEX_DESTROY
(
x

	`ma_deroy
(x)

	)

170 
	#MUTEX_INIT
(
x
(
	`ma_
(x, 1, 
USYNC_PROCESS
, 
NULL
!0)

	)

171 
	#MUTEX_SET
(
x
(
	`ma_wa
(x=0)

	)

172 
	#MUTEX_UNSET
(
x

	`ma_po
(x)

	)

179 #ifde
HAVE_MUTEX_SGI_INIT_LOCK


180 
	~<abi_mux.h
>

181 
abock_t
 
	tt_t
;

183 #ifde
LOAD_ACTUAL_MUTEX_CODE


184 
	#MUTEX_INIT
(
x
(
	`_lock
(x!0)

	)

185 
	#MUTEX_SET
(
x
(!
	`acque_lock
(x))

	)

186 
	#MUTEX_UNSET
(
x

	`a_lock
(x)

	)

197 #ifde
HAVE_MUTEX_SOLARIS_LOCK_TRY


198 
	~<sys/omic.h
>

199 
	~<sys/machlock.h
>

200 
lock_t
 
	tt_t
;

206 

_lock_y
(
lock_t
 *);

207 

_lock_r
(
lock_t
 *);

209 #ifde
LOAD_ACTUAL_MUTEX_CODE


210 
	#MUTEX_INIT
(
x
0

	)

211 
	#MUTEX_SET
(
x

	`_lock_y
(x)

	)

212 
	#MUTEX_UNSET
(
x

	`_lock_r
(x)

	)

213 
	#MUTEX_MEMBAR
(
x

	`memb_r
();

	)

220 #ifde
HAVE_MUTEX_VMS


221 
	~<sys/mm.h
>

222 
	~<buts.h
>

223 vީ
	tt_t
;

225 #ifde
LOAD_ACTUAL_MUTEX_CODE


226 #ifde
__ALPHA


227 
	#MUTEX_SET
(
t
(!
	`__TESTBITSSI
Ѧ, 0))

	)

229 
	#MUTEX_SET
(
t
(!()
	`_BBSSI
(0,))

	)

231 
	#MUTEX_UNSET
(
t
(*Ѧ0)

	)

232 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

244 #ifde
HAVE_MUTEX_VXWORKS


245 
	~"skLib.h
"

246 
SEM_ID
 
	tt_t
;

248 #ifde
LOAD_ACTUAL_MUTEX_CODE


249 
	#MUTEX_SET
(
t
(
	`mTake
((*t), 
WAIT_FOREVER
=
OK
)

	)

250 
	#MUTEX_UNSET
(
t
(
	`mGive
((*t)))

	)

251 
	#MUTEX_INIT
(
t
) \

252 ((*(
t

	`mBCe
(
SEM_Q_FIFO
, 
SEM_FULL
)=
NULL
)

	)

253 
	#MUTEX_DESTROY
(
t

	`mDe
(*t)

	)

266 #ifde
HAVE_MUTEX_WIN16


267 
	tt_t
;

269 #ifde
LOAD_ACTUAL_MUTEX_CODE


270 
	#MUTEX_INIT
(
x
0

	)

271 
	#MUTEX_SET
(
t
(*Ѧ1)

	)

272 
	#MUTEX_UNSET
(
t
(*Ѧ0)

	)

279 #i
defed
(
HAVE_MUTEX_WIN32
|| defed(
HAVE_MUTEX_WIN32_GCC
)

280 
	#MUTEX_FIELDS
 \

281 
LONG
 vީ
s
; \

282 
LONG
 
nwas
; \

283 
u_t32_t
 
id
; \

284 

	)

285 #i
defed
(
LOAD_ACTUAL_MUTEX_CODE
)

286 
	#MUTEX_SET
(
t
(!
	`IlockedExchge
((
PLONG
, 1))

	)

287 
	#MUTEX_UNSET
(
t

	`IlockedExchge
((
PLONG
, 0)

	)

288 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

299 #ifde
HAVE_MUTEX_WIN32


300 #i!
defed
(
_WIN64
&& !defed(
DB_WINCE
)

301 
	#MUTEX_PAUSE
 {
__asm
{
_em
 0xf3}; __asm{_em 0x90}}

	)

304 #ifde
HAVE_MUTEX_WIN32_GCC


305 
	#MUTEX_PAUSE
 
asm
 vީ("p;" : : );

	)

313 #ifde
HAVE_MUTEX_68K_GCC_ASSEMBLY


314 
	tt_t
;

316 #ifde
LOAD_ACTUAL_MUTEX_CODE


318 
	#MUTEX_SET
(
t
) ({ \

319 
t_t
 *
__l
 = (
t
); \

320 
__r
; \

321 
asm
 volatile("tas %1; \n \
 %0" \

323 : "=dm" (
__r
), "=m" (*
__l
) \

324 : "1" (*
__l
) \

326 
__r
 & 1; \

327 })

	)

329 
	#MUTEX_UNSET
(
t
(*Ѧ0)

	)

330 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

337 #ifde
HAVE_MUTEX_ALPHA_GCC_ASSEMBLY


338 
u_t32_t
 
	tt_t
;

340 
	#MUTEX_ALIGN
 4

	)

342 #ifde
LOAD_ACTUAL_MUTEX_CODE


347 
le
 

348 
MUTEX_SET
(
t_t
 *
t
) {

349 
t_t
 *
	g__l
 = 
t
;

350 
t_t
 
	g__r
;

351 
asm
 volatile(

361 : "=&r"(
__r
), "=m"(*
	g__l
: "1"(*
__l
) : "memory");

362  
	g__r
;

369 
le
 

370 
MUTEX_UNSET
(
t_t
 *
t
) {

371 
asm
 volatile(" mb\n");

372  *
	gt
 = 0;

375 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

382 #ifde
HAVE_MUTEX_TRU64_CC_ASSEMBLY


383 vީ
	tu_t32_t
 
	tt_t
;

385 
	#MUTEX_ALIGN
 4

	)

387 #ifde
LOAD_ACTUAL_MUTEX_CODE


388 
	~<pha/buts.h
>

389 
	#MUTEX_SET
(
t
(
	`__LOCK_LONG_RETRY
(Ѧ), 1!0)

	)

390 
	#MUTEX_UNSET
(
t
(
	`__UNLOCK_LONG
Ѧ))

	)

392 
	#MUTEX_INIT
(
t
(
	`MUTEX_UNSET
Ѧ), 0)

	)

399 #ifde
HAVE_MUTEX_ARM_GCC_ASSEMBLY


400 
	tt_t
;

402 #ifde
LOAD_ACTUAL_MUTEX_CODE


404 
	#MUTEX_SET
(
t
) ({ \

405 
__r
; \

406 
asm
 volatile( \

409 : "=&r" (
__r
) \

410 : "r" (1), "r" (
t
) \

412 
__r
 & 1; \

413 })

	)

415 
	#MUTEX_UNSET
(
t
(*(vީ
t_t
 *)Ѧ0)

	)

416 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

423 #ifde
HAVE_MUTEX_HPPA_GCC_ASSEMBLY


424 
u_t32_t
 
	tt_t
;

426 
	#MUTEX_ALIGN
 16

	)

428 #ifde
LOAD_ACTUAL_MUTEX_CODE


434 
	#MUTEX_SET
(
t
) ({ \

435 
t_t
 *
__l
 = (
t
); \

436 
__r
; \

437 
asm
 vީe("ldcw0(%1),%0" : "" (
__r
: "r" (
__l
)); \

438 
__r
 & 1; \

439 })

	)

441 
	#MUTEX_UNSET
(
t
(*(vީ
t_t
 *)Ѧ-1)

	)

442 
	#MUTEX_INIT
(
t
(
	`MUTEX_UNSET
Ѧ), 0)

	)

449 #ifde
HAVE_MUTEX_IA64_GCC_ASSEMBLY


450 vީ
	tt_t
;

452 #ifde
LOAD_ACTUAL_MUTEX_CODE


454 
	#MUTEX_SET
(
t
) ({ \

455 
t_t
 *
__l
 = (
t
); \

456 
__r
; \

457 
asm
 volatile("xchg1 %0=%1,%2" : \

458 ""(
__r
), "+m"(*
__l
) : "r"(1)); \

459 
__r
 ^ 1; \

460 })

	)

466 
	#MUTEX_UNSET
(
t
(*(
t_t
 *)Ѧ0)

	)

467 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

474 #i
defed
(
HAVE_MUTEX_PPC_GCC_ASSEMBLY
)

475 
u_t32_t
 
	tt_t
;

477 #ifde
LOAD_ACTUAL_MUTEX_CODE


508 
le
 

509 
MUTEX_SET
(*
t
) {

510 
	g__r
;

511 
asm
 volatile (

523 : "=&r" (
__r
), "+r" (
	gt
)

526  ()
	gt
;

529 
le
 

530 
MUTEX_UNSET
(
t_t
 *
t
) {

531 
asm
 volatile("sync" : : : "memory");

532  *
	gt
 = 0;

534 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

541 #ifde
HAVE_MUTEX_S390_CC_ASSEMBLY


542 
	tt_t
;

544 #ifde
LOAD_ACTUAL_MUTEX_CODE


549 
	#MUTEX_SET
(
t
(!
	`cs
(&
zo
, (t), 1))

	)

550 
	#MUTEX_UNSET
(
t
(*Ѧ0)

	)

551 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

558 #ifde
HAVE_MUTEX_S390_GCC_ASSEMBLY


559 
	tt_t
;

561 #ifde
LOAD_ACTUAL_MUTEX_CODE


563 
le
 

564 
MUTEX_SET
(
t_t
 *
t
) { \

565 
t_t
 *
	g__l
 = (
t
); \

566 
	g__r
; \

567 
asm
 volatile( \

573 : "=&d" (
__r
), "+m" (*
	g__l
) \

575  !
	g__r
; \

578 
	#MUTEX_UNSET
(
t
(*Ѧ0)

	)

579 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

586 #ifde
HAVE_MUTEX_SCO_X86_CC_ASSEMBLY


587 
	tt_t
;

589 #ifde
LOAD_ACTUAL_MUTEX_CODE


595 #i
defed
(
__USLC__
)

596 
asm
 

597 
_t_t
(*
t
)

599 %
mem
 
t


600 
movl
 
	gt
, %
ecx


601 
movl
 
	g$1
, %
x


602 
lock


603 
xchgb
 (%
ecx
),%



604 
xl
 
	g$1
,%
	gx


608 
	#MUTEX_SET
(
t

	`_t_t
Ѧ)

	)

609 
	#MUTEX_UNSET
(
t
(*Ѧ0)

	)

610 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

617 #ifde
HAVE_MUTEX_SPARC_GCC_ASSEMBLY


618 
	tt_t
;

620 #ifde
LOAD_ACTUAL_MUTEX_CODE


636 
	#MUTEX_SET
(
t
) ({ \

637 
t_t
 *
__l
 = (
t
); \

638 
t_t
 
__r
; \

639 
asm
 volatile \

641 : ""
__r
: "r" (
__l
)); \

642 !
__r
; \

643 })

	)

645 
	#MUTEX_UNSET
(
t
(*Ѧ0)

	)

646 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

647 
	#MUTEX_MEMBAR
(
x
({
asm
 vީe("b");})

	)

654 #ifde
HAVE_MUTEX_UTS_CC_ASSEMBLY


655 
	tt_t
;

657 #ifde
LOAD_ACTUAL_MUTEX_CODE


658 
	#MUTEX_INIT
(
x
0

	)

659 
	#MUTEX_SET
(
x
(!
	`uts_lock
(x, 1))

	)

660 
	#MUTEX_UNSET
(
x
(*(x0)

	)

667 #ifde
HAVE_MUTEX_MIPS_GCC_ASSEMBLY


668 
u_t32_t
 
	tt_t
;

670 
	#MUTEX_ALIGN
 4

	)

672 #ifde
LOAD_ACTUAL_MUTEX_CODE


677 
le
 

678 
MUTEX_SET
(
t_t
 *
t
) {

679 
t_t
 *
	g__l
 = 
t
;

680 
t_t
 
	g__r
;

681 
asm
 volatile(

693 : "=&r" (
__r
), "+R" (*
	g__l
));

694  
	g__r
;

697 
	#MUTEX_UNSET
(
t
(*(vީ
t_t
 *)Ѧ0)

	)

698 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

705 #i
defed
(
HAVE_MUTEX_X86_GCC_ASSEMBLY
) || \

706 
defed
(
HAVE_MUTEX_X86_64_GCC_ASSEMBLY
)

707 
	tt_t
;

709 #ifde
LOAD_ACTUAL_MUTEX_CODE


711 
	#MUTEX_SET
(
t
) ({ \

712 
t_t
 
__r
; \

713 
asm
 volatile("movb $1, %b0\n\t" \

715 : "=&q" (
__r
) \

716 : "m" (*(vީ
t_t
 *)(
t
)) \

718 !
__r
; \

719 })

	)

721 
	#MUTEX_UNSET
(
t
(*(vީ
t_t
 *)Ѧ0)

	)

722 
	#MUTEX_INIT
(
t

	`MUTEX_UNSET
Ѧ)

	)

728 #i
defed
(
HAVE_MUTEX_X86_GCC_ASSEMBLY
)

729 
	#MUTEX_MEMBAR
(
addr
) \

730 ({ 
asm
 vީ("lock;dd$0, %0" ::"m" (
addr
): "memy"); 1; })

	)

732 
	#MUTEX_MEMBAR
(
addr
) \

733 ({ 
asm
 vީ("mn" ::: "memy"); 1; })

	)

745 
	#MUTEX_PAUSE
 
asm
 vީ("p;" : : );

	)

758 #idef 
MUTEX_ALIGN


759 
	#MUTEX_ALIGN
 ()

	)

765 #idef 
MUTEX_DESTROY


766 
	#MUTEX_DESTROY
(
x
)

	)

773 
	s__db_muxmgr
 {

775 
DB_ENV
 *
	gdbv
;

776 
REGINFO
 
	ggfo
;

778 *
	gmux_y
;

782 
	#MUTEX_SYSTEM_LOCK
(
dbv
) \

783 
	`MUTEX_LOCK
(
dbv
, ((
DB_MUTEXREGION
 *) \

784 (
dbv
)->
mux_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

785 
	#MUTEX_SYSTEM_UNLOCK
(
dbv
) \

786 
	`MUTEX_UNLOCK
(
dbv
, ((
DB_MUTEXREGION
 *) \

787 (
dbv
)->
mux_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

793 
	s__db_muxgi
 {

795 
roff_t
 
	gmux_off_loc
;

796 
roff_t
 
	gmux_off
;

797 
size_t
 
	gmux_size
;

798 
roff_t
 
	gthad_off
;

800 
db_mux_t
 
	gmtx_gi
;

803 
u_t32_t
 
	gmux_xt
;

805 
DB_MUTEX_STAT
 
	g
;

806 } 
	tDB_MUTEXREGION
;

808 
	s__db_mux_t
 {

809 #ifde
MUTEX_FIELDS


810 
	gMUTEX_FIELDS


812 #i
defed
(
HAVE_MUTEX_HYBRID
) || \

813 (!
defed
(
MUTEX_FIELDS
&& !defed(
HAVE_MUTEX_FCNTL
))

814 
t_t
 
	gs
;

816 #ifde
HAVE_MUTEX_HYBRID


817 vީ
u_t32_t
 
	gwa
;

819 
pid_t
 
	gpid
;

820 
db_thadid_t
 
	gtid
;

822 
u_t32_t
 
	gmux_xt_lk
;

824 #ifde
HAVE_STATISTICS


825 
	gloc_id
;

827 
u_t32_t
 
	gmux_t_wa
;

828 
u_t32_t
 
	gmux_t_nowa
;

838 vީ
u_t32_t
 
	gags
;

842 
	#MUTEXP_SET
(
dx
) \

843 (
DB_MUTEX
 *) \

844 ((
u_t8_t
 *)
mtxmgr
->
mux_y
 + (
dx
* 
mtxgi
->
mux_size
);

	)

846 #i
defed
(
__lulus
)

	@../dbinc/os.h

9 #ide
_DB_OS_H_


10 
	#_DB_OS_H_


	)

12 #i
defed
(
__lulus
)

17 
	#DB_RETRY
 100

	)

19 #ifde
__TANDEM


24 
	#RETRY_CHK
(

, 
t
) do { \

25 
__s
, 
__t_t
; \

26 (
t
0, 
__s
 = 
DB_RETRY
;;) { \

27 i((

) == 0) \

29 (
t

	`__os_g_sy
(); \

30 i(((
__t_t
 = 
	`__os_posix_r
(
t
)=
EAGAIN
 || \

31 
__t_t
 =
EBUSY
 || __t_=
EINTR
 || \

32 
__t_t
 =
EIO
 || __t_=70&& --
__s
 > 0)\

36 } 0)

	)

38 
	#RETRY_CHK
(

, 
t
) do { \

39 
__s
, 
__t_t
; \

40 (
t
0, 
__s
 = 
DB_RETRY
;;) { \

41 i((

) == 0) \

43 (
t

	`__os_g_sy
(); \

44 i(((
__t_t
 = 
	`__os_posix_r
(
t
)=
EAGAIN
 || \

45 
__t_t
 =
EBUSY
 || __t_=
EINTR
 || \

46 
__t_t
 =
EIO
&& --
__s
 > 0) \

50 } 0)

	)

53 
	#RETRY_CHK_EINTR_ONLY
(

, 
t
) do { \

54 
__s
; \

55 (
t
0, 
__s
 = 
DB_RETRY
;;) { \

56 i((

) == 0) \

58 (
t

	`__os_g_sy
(); \

59 i(
	`__os_posix_r
(
t
=
EINTR
 && --
__s
 > 0) \

63 } 0)

	)

68 
	#DB_OSO_ABSMODE
 0x0001

	)

69 
	#DB_OSO_CREATE
 0x0002

	)

70 
	#DB_OSO_DIRECT
 0x0004

	)

71 
	#DB_OSO_DSYNC
 0x0008

	)

72 
	#DB_OSO_EXCL
 0x0010

	)

73 
	#DB_OSO_RDONLY
 0x0020

	)

74 
	#DB_OSO_REGION
 0x0040

	)

75 
	#DB_OSO_SEQ
 0x0080

	)

76 
	#DB_OSO_TEMP
 0x0100

	)

77 
	#DB_OSO_TRUNC
 0x0200

	)

83 
	#DB_IO_READ
 1

	)

84 
	#DB_IO_WRITE
 2

	)

87 
	s__fh_t
 {

92 
TAILQ_ENTRY
(
__fh_t

q
;

99 
db_mux_t
 
mtx_fh
;

101 
f
;

103 #ifde
HAVE_BREW


104 
IFe
 *
i
;

106 #i
defed
(
DB_WIN32
)

107 
HANDLE
 
hd
;

108 
HANDLE
 
unc_hd
;

110 
fd
;

112 *
me
;

118 
db_pgno_t
 
pgno
;

119 
u_t32_t
 
pgsize
;

120 
u_t32_t
 
offt
;

122 
	#DB_FH_ENVLINK
 0x01

	)

123 
	#DB_FH_NOSYNC
 0x02

	)

124 
	#DB_FH_OPENED
 0x04

	)

125 
	#DB_FH_UNLINK
 0x08

	)

126 
u_t8_t
 
ags
;

130 
	#OWNER_RW
 "rw-------"

	)

133 
	#CTIME_BUFLEN
 26

	)

135 #i
defed
(
__lulus
)

139 
	~"dbc_auto/os_ext.h
"

	@../dbinc/qam.h

9 #idef 
_DB_QAM_H_


10 
	#_DB_QAM_H_


	)

12 #i
defed
(
__lulus
)

19 
	s_qamda
 {

20 
u_t8_t
 
ags
;

21 
	#QAM_VALID
 0x01

	)

22 
	#QAM_SET
 0x02

	)

23 
u_t8_t
 
da
[1];

24 } 
	tQAMDATA
;

26 
__queue
; __queu
	tQUEUE
;

27 
__qcurs
; __qcurs 
	tQUEUE_CURSOR
;

29 
	s__qcurs
 {

31 
__DBC_INTERNAL


36 
db_o_t
 
o
;

38 
u_t32_t
 
ags
;

41 
	s__mpay
 {

42 
u_t32_t
 
n_ex
;

43 
u_t32_t
 
low_ex
;

44 
u_t32_t
 
hi_ex
;

45 
	s__qmpf
 {

46 
pf
;

47 
DB_MPOOLFILE
 *
mpf
;

48 } *
mpay
;

49 } 
	tMPFARRAY
;

54 
	s__queue
 {

55 
db_pgno_t
 
q_ma
;

56 
db_pgno_t
 
q_ro
;

58 
_d
;

59 
u_t32_t
 
_n
;

60 
u_t32_t
 
c_ge
;

61 
u_t32_t
 
ge_ext
;

62 
MPFARRAY
 
y1
, 
y2
;

65 
DBT
 
pgcook
;

66 
DB_PGINFO
 
pgfo
;

68 *
th
;

69 *
me
;

70 *
d
;

71 
mode
;

75 
	#QUEUE_EXTENT
 "%s%c__dbq.%s.%d"

	)

76 
	#QUEUE_EXTENT_HEAD
 "__dbq.%s."

	)

77 
	#QUEUE_EXTENT_PREFIX
 "__dbq."

	)

79 
	s__qam_fi
 {

80 
DB_MPOOLFILE
 *
mpf
;

81 
u_t32_t
 
id
;

82 } 
	tQUEUE_FILELIST
;

99 
	#CALC_QAM_RECNO_PER_PAGE
(
dbp
) \

100 (((
dbp
)->
pgsize
 - 
	`QPAGE_SZ
(dbp)) / \

101 (
u_t32_t
)
	`DB_ALIGN
((
utmax_t
)
	`SSZA
(
QAMDATA
, 
da
) + \

102 ((
QUEUE
 *)(
dbp
)->
q_
)->
_n
, (
u_t32_t
)))

	)

104 
	#QAM_RECNO_PER_PAGE
(
dbp
(((
QUEUE
*)(dbp)->
q_
)->
c_ge
)

	)

106 
	#QAM_RECNO_PAGE
(
dbp
, 
o
) \

107 (((
QUEUE
 *)(
dbp
)->
q_
)->
q_ro
 \

108 + (((
o
- 1/ 
	`QAM_RECNO_PER_PAGE
(
dbp
)))

	)

110 
	#QAM_PAGE_EXTENT
(
dbp
, 
pgno
) \

111 (((
pgno
- 1/ ((
QUEUE
 *)(
dbp
)->
q_
)->
ge_ext
)

	)

113 
	#QAM_RECNO_EXTENT
(
dbp
, 
o
) \

114 
	`QAM_PAGE_EXTENT
(
dbp
, 
	`QAM_RECNO_PAGE
(dbp, 
o
))

	)

116 
	#QAM_RECNO_INDEX
(
dbp
, 
pgno
, 
o
) \

117 (((
o
- 1- (
	`QAM_RECNO_PER_PAGE
(
dbp
) \

118 * (
pgno
 - ((
QUEUE
 *)(
dbp
)->
q_
)->
q_ro
)))

	)

120 
	#QAM_GET_RECORD
(
dbp
, 
ge
, 
dex
) \

121 ((
QAMDATA
 *)((
u_t8_t
 *)(
ge
+ (
	`QPAGE_SZ
(
dbp
) + \

122 (
	`DB_ALIGN
((
utmax_t
)
	`SSZA
(
QAMDATA
, 
da
) + \

123 ((
QUEUE
 *)(
dbp
)->
q_
)->
_n
, (
u_t32_t
)* 
dex
))))

	)

125 
	#QAM_AFTER_CURRENT
(
ma
, 
o
) \

126 ((
o
>(
ma
)->
cur_o
 && \

127 ((
ma
)->
f_o
 <(ma)->
cur_o
 || \

128 ((
o
< (
ma
)->
f_o
 && \

129 (
o
- (
ma
)->
cur_o
 < (ma)->
f_o
 - (o))))

	)

131 
	#QAM_BEFORE_FIRST
(
ma
, 
o
) \

132 ((
o
< (
ma
)->
f_o
 && \

133 ((
ma
)->
f_o
 <(ma)->
cur_o
 || \

134 ((
o
> (
ma
)->
cur_o
 && \

135 (
o
- (
ma
)->
cur_o
 > (ma)->
f_o
 - (o))))

	)

137 
	#QAM_NOT_VALID
(
ma
, 
o
) \

138 (
o
 =
RECNO_OOB
 || \

139 
	`QAM_BEFORE_FIRST
(
ma
, 
o
|| 
	`QAM_AFTER_CURRENT
(ma,eo))

	)

144 
	#QAM_SETFIRST
 0x01

	)

145 
	#QAM_SETCUR
 0x02

	)

146 
	#QAM_TRUNCATE
 0x04

	)

149 
QAM_PROBE_GET
,

150 
QAM_PROBE_PUT
,

151 
QAM_PROBE_DIRTY
,

152 
QAM_PROBE_MPF


153 } 
	tqam_obe_mode
;

159 
QAM_NAME_DISCARD
,

160 
QAM_NAME_RENAME
,

161 
QAM_NAME_REMOVE


162 } 
	tqam_me_
;

164 
	#__qam_fg
(
dbp
, 
pgnddr
, 
lp
, 
ags
, 
add
) \

165 
	`__qam_robe
(
dbp
, *
pgnddr
, \

166 
lp
, 
add
, 
QAM_PROBE_GET
, 
DB_PRIORITY_UNCHANGED
, 
ags
)

	)

168 
	#__qam_ut
(
dbp
, 
pgno
, 
add
, 
iܙy
) \

169 
	`__qam_robe
(
dbp
, 
pgno
, 
NULL
, 
add
, 
QAM_PROBE_PUT
, 
iܙy
, 0)

	)

171 
	#__qam_dty
(
dbp
, 
pgno
, 
g
, 
lp
, 
iܙy
) \

172 
	`__qam_robe
(
dbp
, 
pgno
, 
lp
, 
g
, 
QAM_PROBE_DIRTY
, 
iܙy
, 0)

	)

174 #i
defed
(
__lulus
)

178 
	~"dbc_auto/qam_auto.h
"

179 
	~"dbc_auto/qam_ext.h
"

	@../dbinc/queue.h

37 #idef 
_DB_QUEUE_H_


38 
	#_DB_QUEUE_H_


	)

40 #i
defed
(
__lulus
)

118 #unde
LIST_EMPTY


119 #unde
LIST_ENTRY


120 #unde
LIST_FIRST


121 #unde
LIST_FOREACH


122 #unde
LIST_HEAD


123 #unde
LIST_HEAD_INITIALIZER


124 #unde
LIST_INIT


125 #unde
LIST_INSERT_AFTER


126 #unde
LIST_INSERT_BEFORE


127 #unde
LIST_INSERT_HEAD


128 #unde
LIST_NEXT


129 #unde
LIST_REMOVE


130 #unde
QMD_TRACE_ELEM


131 #unde
QMD_TRACE_HEAD


132 #unde
QUEUE_MACRO_DEBUG


133 #unde
SLIST_EMPTY


134 #unde
SLIST_ENTRY


135 #unde
SLIST_FIRST


136 #unde
SLIST_FOREACH


137 #unde
SLIST_FOREACH_PREVPTR


138 #unde
SLIST_HEAD


139 #unde
SLIST_HEAD_INITIALIZER


140 #unde
SLIST_INIT


141 #unde
SLIST_INSERT_AFTER


142 #unde
SLIST_INSERT_HEAD


143 #unde
SLIST_NEXT


144 #unde
SLIST_REMOVE


145 #unde
SLIST_REMOVE_HEAD


146 #unde
STAILQ_CONCAT


147 #unde
STAILQ_EMPTY


148 #unde
STAILQ_ENTRY


149 #unde
STAILQ_FIRST


150 #unde
STAILQ_FOREACH


151 #unde
STAILQ_HEAD


152 #unde
STAILQ_HEAD_INITIALIZER


153 #unde
STAILQ_INIT


154 #unde
STAILQ_INSERT_AFTER


155 #unde
STAILQ_INSERT_HEAD


156 #unde
STAILQ_INSERT_TAIL


157 #unde
STAILQ_LAST


158 #unde
STAILQ_NEXT


159 #unde
STAILQ_REMOVE


160 #unde
STAILQ_REMOVE_HEAD


161 #unde
STAILQ_REMOVE_HEAD_UNTIL


162 #unde
TAILQ_CONCAT


163 #unde
TAILQ_EMPTY


164 #unde
TAILQ_ENTRY


165 #unde
TAILQ_FIRST


166 #unde
TAILQ_FOREACH


167 #unde
TAILQ_FOREACH_REVERSE


168 #unde
TAILQ_HEAD


169 #unde
TAILQ_HEAD_INITIALIZER


170 #unde
TAILQ_INIT


171 #unde
TAILQ_INSERT_AFTER


172 #unde
TAILQ_INSERT_BEFORE


173 #unde
TAILQ_INSERT_HEAD


174 #unde
TAILQ_INSERT_TAIL


175 #unde
TAILQ_LAST


176 #unde
TAILQ_NEXT


177 #unde
TAILQ_PREV


178 #unde
TAILQ_REMOVE


179 #unde
TRACEBUF


180 #unde
TRASHIT


182 
	#QUEUE_MACRO_DEBUG
 0

	)

183 #i
QUEUE_MACRO_DEBUG


185 
	sqm_a
 {

186 * 
ϡfe
;

187 
ϡle
;

188 * 
evfe
;

189 
evle
;

192 
	#TRACEBUF
 
qm_a
 
a
;

	)

193 
	#TRASHIT
(
x
d{(x(*)-1;} 0)

	)

195 
	#QMD_TRACE_HEAD
(
hd
) do { \

196 (
hd
)->
a
.
evle
 = (hd)->a.
ϡle
; \

197 (
hd
)->
a
.
evfe
 = (hd)->a.
ϡfe
; \

198 (
hd
)->
a
.
ϡle
 = 
__LINE__
; \

199 (
hd
)->
a
.
ϡfe
 = 
__FILE__
; \

200 } 0)

	)

202 
	#QMD_TRACE_ELEM
(
em
) do { \

203 (
em
)->
a
.
evle
 = (em)->a.
ϡle
; \

204 (
em
)->
a
.
evfe
 = (em)->a.
ϡfe
; \

205 (
em
)->
a
.
ϡle
 = 
__LINE__
; \

206 (
em
)->
a
.
ϡfe
 = 
__FILE__
; \

207 } 0)

	)

210 
	#QMD_TRACE_ELEM
(
em
)

	)

211 
	#QMD_TRACE_HEAD
(
hd
)

	)

212 
	#TRACEBUF


	)

213 
	#TRASHIT
(
x
)

	)

219 
	#SLIST_HEAD
(
me
, 
ty
) \

220 
	sme
 { \

221 
ty
 *
h_f
; \

222 }

	)

224 
	#SLIST_HEAD_INITIALIZER
(
hd
) \

225 { 
NULL
 }

	)

227 
	#SLIST_ENTRY
(
ty
) \

229 
ty
 *
e_xt
; \

230 }

	)

235 
	#SLIST_EMPTY
(
hd
((hd)->
h_f
 =
NULL
)

	)

237 
	#SLIST_FIRST
(
hd
((hd)->
h_f
)

	)

239 
	#SLIST_FOREACH
(
v
, 
hd
, 
fld
) \

240 (
v

	`SLIST_FIRST
((
hd
)); \

241 (
v
); \

242 (
v

	`SLIST_NEXT
((v), 
fld
))

	)

244 
	#SLIST_FOREACH_PREVPTR
(
v
, 
vp
, 
hd
, 
fld
) \

245 (
vp
&
	`SLIST_FIRST
((
hd
)); \

246 ((
v
*(
vp
)!
NULL
; \

247 (
vp
&
	`SLIST_NEXT
((
v
), 
fld
))

	)

249 
	#SLIST_INIT
(
hd
) do { \

250 
	`SLIST_FIRST
((
hd
)
NULL
; \

251 } 0)

	)

253 
	#SLIST_INSERT_AFTER
(
im
, 
m
, 
fld
) do { \

254 
	`SLIST_NEXT
((
m
), 
fld
SLIST_NEXT((
im
), field); \

255 
	`SLIST_NEXT
((
im
), 
fld
(
m
); \

256 } 0)

	)

258 
	#SLIST_INSERT_HEAD
(
hd
, 
m
, 
fld
) do { \

259 
	`SLIST_NEXT
((
m
), 
fld

	`SLIST_FIRST
((
hd
)); \

260 
	`SLIST_FIRST
((
hd
)(
m
); \

261 } 0)

	)

263 
	#SLIST_NEXT
(
m
, 
fld
(lm)->fld.
e_xt
)

	)

265 
	#SLIST_REMOVE
(
hd
, 
m
, 
ty
, 
fld
) do { \

266 i(
	`SLIST_FIRST
((
hd
)=(
m
)) { \

267 
	`SLIST_REMOVE_HEAD
((
hd
), 
fld
); \

270 
ty
 *
culm
 = 
	`SLIST_FIRST
((
hd
)); \

271 
	`SLIST_NEXT
(
culm
, 
fld
!(
m
)) \

272 
culm
 = 
	`SLIST_NEXT
(culm, 
fld
); \

273 
	`SLIST_NEXT
(
culm
, 
fld
) = \

274 
	`SLIST_NEXT
(SLIST_NEXT(
culm
, 
fld
), field); \

276 } 0)

	)

278 
	#SLIST_REMOVE_HEAD
(
hd
, 
fld
) do { \

279 
	`SLIST_FIRST
((
hd
)
	`SLIST_NEXT
(SLIST_FIRST((hd)), 
fld
); \

280 } 0)

	)

285 
	#STAILQ_HEAD
(
me
, 
ty
) \

286 
	sme
 { \

287 
ty
 *
qh_f
; \

288 
ty
 **
qh_ϡ
; \

289 }

	)

291 
	#STAILQ_HEAD_INITIALIZER
(
hd
) \

292 { 
NULL
, &(
hd
).
qh_f
 }

	)

294 
	#STAILQ_ENTRY
(
ty
) \

296 
ty
 *
qe_xt
; \

297 }

	)

302 
	#STAILQ_CONCAT
(
hd1
, 
hd2
) do { \

303 i(!
	`STAILQ_EMPTY
((
hd2
))) { \

304 *(
hd1
)->
qh_ϡ
 = (
hd2
)->
qh_f
; \

305 (
hd1
)->
qh_ϡ
 = (
hd2
)->stqh_last; \

306 
	`STAILQ_INIT
((
hd2
)); \

308 } 0)

	)

310 
	#STAILQ_EMPTY
(
hd
((hd)->
qh_f
 =
NULL
)

	)

312 
	#STAILQ_FIRST
(
hd
((hd)->
qh_f
)

	)

314 
	#STAILQ_FOREACH
(
v
, 
hd
, 
fld
) \

315 (
v

	`STAILQ_FIRST
((
hd
)); \

316 (
v
); \

317 (
v

	`STAILQ_NEXT
((v), 
fld
))

	)

319 
	#STAILQ_INIT
(
hd
) do { \

320 
	`STAILQ_FIRST
((
hd
)
NULL
; \

321 (
hd
)->
qh_ϡ
 = &
	`STAILQ_FIRST
((head)); \

322 } 0)

	)

324 
	#STAILQ_INSERT_AFTER
(
hd
, 
tqm
, 
m
, 
fld
) do { \

325 i((
	`STAILQ_NEXT
((
m
), 
fld
STAILQ_NEXT((
tqm
), fld)=
NULL
)\

326 (
hd
)->
qh_ϡ
 = &
	`STAILQ_NEXT
((
m
), 
fld
); \

327 
	`STAILQ_NEXT
((
tqm
), 
fld
(
m
); \

328 } 0)

	)

330 
	#STAILQ_INSERT_HEAD
(
hd
, 
m
, 
fld
) do { \

331 i((
	`STAILQ_NEXT
((
m
), 
fld

	`STAILQ_FIRST
((
hd
))=
NULL
) \

332 (
hd
)->
qh_ϡ
 = &
	`STAILQ_NEXT
((
m
), 
fld
); \

333 
	`STAILQ_FIRST
((
hd
)(
m
); \

334 } 0)

	)

336 
	#STAILQ_INSERT_TAIL
(
hd
, 
m
, 
fld
) do { \

337 
	`STAILQ_NEXT
((
m
), 
fld

NULL
; \

338 *(
hd
)->
qh_ϡ
 = (
m
); \

339 (
hd
)->
qh_ϡ
 = &
	`STAILQ_NEXT
((
m
), 
fld
); \

340 } 0)

	)

342 
	#STAILQ_LAST
(
hd
, 
ty
, 
fld
) \

343 (
	`STAILQ_EMPTY
((
hd
)) ? \

344 
NULL
 : \

345 ((
ty
 *) \

346 ((*)((
hd
)->
qh_ϡ
- 
	`__offtof
(
ty
, 
fld
))))

	)

348 
	#STAILQ_NEXT
(
m
, 
fld
(lm)->fld.
qe_xt
)

	)

350 
	#STAILQ_REMOVE
(
hd
, 
m
, 
ty
, 
fld
) do { \

351 i(
	`STAILQ_FIRST
((
hd
)=(
m
)) { \

352 
	`STAILQ_REMOVE_HEAD
((
hd
), 
fld
); \

355 
ty
 *
culm
 = 
	`STAILQ_FIRST
((
hd
)); \

356 
	`STAILQ_NEXT
(
culm
, 
fld
!(
m
)) \

357 
culm
 = 
	`STAILQ_NEXT
(culm, 
fld
); \

358 i((
	`STAILQ_NEXT
(
culm
, 
fld
) = \

359 
	`STAILQ_NEXT
(STAILQ_NEXT(
culm
, 
fld
), fld)=
NULL
)\

360 (
hd
)->
qh_ϡ
 = &
	`STAILQ_NEXT
((
culm
), 
fld
);\

362 } 0)

	)

364 
	#STAILQ_REMOVE_HEAD
(
hd
, 
fld
) do { \

365 i((
	`STAILQ_FIRST
((
hd
)) = \

366 
	`STAILQ_NEXT
(
	`STAILQ_FIRST
((
hd
)), 
fld
)=
NULL
) \

367 (
hd
)->
qh_ϡ
 = &
	`STAILQ_FIRST
((head)); \

368 } 0)

	)

370 
	#STAILQ_REMOVE_HEAD_UNTIL
(
hd
, 
m
, 
fld
) do { \

371 i((
	`STAILQ_FIRST
((
hd
)
	`STAILQ_NEXT
((
m
), 
fld
)=
NULL
) \

372 (
hd
)->
qh_ϡ
 = &
	`STAILQ_FIRST
((head)); \

373 } 0)

	)

378 
	#LIST_HEAD
(
me
, 
ty
) \

379 
	sme
 { \

380 
ty
 *
lh_f
; \

381 }

	)

383 
	#LIST_HEAD_INITIALIZER
(
hd
) \

384 { 
NULL
 }

	)

386 
	#LIST_ENTRY
(
ty
) \

388 
ty
 *
_xt
; \

389 
ty
 **
_ev
; \

390 }

	)

396 
	#LIST_EMPTY
(
hd
((hd)->
lh_f
 =
NULL
)

	)

398 
	#LIST_FIRST
(
hd
((hd)->
lh_f
)

	)

400 
	#LIST_FOREACH
(
v
, 
hd
, 
fld
) \

401 (
v

	`LIST_FIRST
((
hd
)); \

402 (
v
); \

403 (
v

	`LIST_NEXT
((v), 
fld
))

	)

405 
	#LIST_INIT
(
hd
) do { \

406 
	`LIST_FIRST
((
hd
)
NULL
; \

407 } 0)

	)

409 
	#LIST_INSERT_AFTER
(
lim
, 
m
, 
fld
) do { \

410 i((
	`LIST_NEXT
((
m
), 
fld
LIST_NEXT((
lim
), fld)!
NULL
)\

411 
	`LIST_NEXT
((
lim
), 
fld
)->fld.
_ev
 = \

412 &
	`LIST_NEXT
((
m
), 
fld
); \

413 
	`LIST_NEXT
((
lim
), 
fld
(
m
); \

414 (
m
)->
fld
.
_ev
 = &
	`LIST_NEXT
((
lim
), field); \

415 } 0)

	)

417 
	#LIST_INSERT_BEFORE
(
lim
, 
m
, 
fld
) do { \

418 (
m
)->
fld
.
_ev
 = (
lim
)->field.le_prev; \

419 
	`LIST_NEXT
((
m
), 
fld
(
lim
); \

420 *(
lim
)->
fld
.
_ev
 = (
m
); \

421 (
lim
)->
fld
.
_ev
 = &
	`LIST_NEXT
((
m
), field); \

422 } 0)

	)

424 
	#LIST_INSERT_HEAD
(
hd
, 
m
, 
fld
) do { \

425 i((
	`LIST_NEXT
((
m
), 
fld

	`LIST_FIRST
((
hd
))!
NULL
) \

426 
	`LIST_FIRST
((
hd
))->
fld
.
_ev
 = &
	`LIST_NEXT
((
m
), field);\

427 
	`LIST_FIRST
((
hd
)(
m
); \

428 (
m
)->
fld
.
_ev
 = &
	`LIST_FIRST
((
hd
)); \

429 } 0)

	)

431 
	#LIST_NEXT
(
m
, 
fld
(lm)->fld.
_xt
)

	)

433 
	#LIST_REMOVE
(
m
, 
fld
) do { \

434 i(
	`LIST_NEXT
((
m
), 
fld
!
NULL
) \

435 
	`LIST_NEXT
((
m
), 
fld
)->fld.
_ev
 = \

436 (
m
)->
fld
.
_ev
; \

437 *(
m
)->
fld
.
_ev
 = 
	`LIST_NEXT
((elm), field); \

438 } 0)

	)

443 
	#TAILQ_HEAD
(
me
, 
ty
) \

444 
	sme
 { \

445 
ty
 *
tqh_f
; \

446 
ty
 **
tqh_ϡ
; \

447 
TRACEBUF
 \

448 }

	)

450 
	#TAILQ_HEAD_INITIALIZER
(
hd
) \

451 { 
NULL
, &(
hd
).
tqh_f
 }

	)

453 
	#TAILQ_ENTRY
(
ty
) \

455 
ty
 *
tqe_xt
; \

456 
ty
 **
tqe_ev
; \

457 
TRACEBUF
 \

458 }

	)

463 
	#TAILQ_CONCAT
(
hd1
, 
hd2
, 
fld
) do { \

464 i(!
	`TAILQ_EMPTY
(
hd2
)) { \

465 *(
hd1
)->
tqh_ϡ
 = (
hd2
)->
tqh_f
; \

466 (
hd2
)->
tqh_f
->
fld
.
tqe_ev
 = (
hd1
)->
tqh_ϡ
; \

467 (
hd1
)->
tqh_ϡ
 = (
hd2
)->tqh_last; \

468 
	`TAILQ_INIT
((
hd2
)); \

469 
	`QMD_TRACE_HEAD
(
hd
); \

470 
	`QMD_TRACE_HEAD
(
hd2
); \

472 } 0)

	)

474 
	#TAILQ_EMPTY
(
hd
((hd)->
tqh_f
 =
NULL
)

	)

476 
	#TAILQ_FIRST
(
hd
((hd)->
tqh_f
)

	)

478 
	#TAILQ_FOREACH
(
v
, 
hd
, 
fld
) \

479 (
v

	`TAILQ_FIRST
((
hd
)); \

480 (
v
); \

481 (
v

	`TAILQ_NEXT
((v), 
fld
))

	)

483 
	#TAILQ_FOREACH_REVERSE
(
v
, 
hd
, 
hdme
, 
fld
) \

484 (
v

	`TAILQ_LAST
((
hd
), 
hdme
); \

485 (
v
); \

486 (
v

	`TAILQ_PREV
((v), 
hdme
, 
fld
))

	)

488 
	#TAILQ_INIT
(
hd
) do { \

489 
	`TAILQ_FIRST
((
hd
)
NULL
; \

490 (
hd
)->
tqh_ϡ
 = &
	`TAILQ_FIRST
((head)); \

491 
	`QMD_TRACE_HEAD
(
hd
); \

492 } 0)

	)

494 
	#TAILQ_INSERT_AFTER
(
hd
, 
lim
, 
m
, 
fld
) do { \

495 i((
	`TAILQ_NEXT
((
m
), 
fld
TAILQ_NEXT((
lim
), fld)!
NULL
)\

496 
	`TAILQ_NEXT
((
m
), 
fld
)->fld.
tqe_ev
 = \

497 &
	`TAILQ_NEXT
((
m
), 
fld
); \

499 (
hd
)->
tqh_ϡ
 = &
	`TAILQ_NEXT
((
m
), 
fld
); \

500 
	`QMD_TRACE_HEAD
(
hd
); \

502 
	`TAILQ_NEXT
((
lim
), 
fld
(
m
); \

503 (
m
)->
fld
.
tqe_ev
 = &
	`TAILQ_NEXT
((
lim
), field); \

504 
	`QMD_TRACE_ELEM
(&(
m
)->
fld
); \

505 
	`QMD_TRACE_ELEM
(&
lim
->
fld
); \

506 } 0)

	)

508 
	#TAILQ_INSERT_BEFORE
(
lim
, 
m
, 
fld
) do { \

509 (
m
)->
fld
.
tqe_ev
 = (
lim
)->field.tqe_prev; \

510 
	`TAILQ_NEXT
((
m
), 
fld
(
lim
); \

511 *(
lim
)->
fld
.
tqe_ev
 = (
m
); \

512 (
lim
)->
fld
.
tqe_ev
 = &
	`TAILQ_NEXT
((
m
), field); \

513 
	`QMD_TRACE_ELEM
(&(
m
)->
fld
); \

514 
	`QMD_TRACE_ELEM
(&
lim
->
fld
); \

515 } 0)

	)

517 
	#TAILQ_INSERT_HEAD
(
hd
, 
m
, 
fld
) do { \

518 i((
	`TAILQ_NEXT
((
m
), 
fld

	`TAILQ_FIRST
((
hd
))!
NULL
) \

519 
	`TAILQ_FIRST
((
hd
))->
fld
.
tqe_ev
 = \

520 &
	`TAILQ_NEXT
((
m
), 
fld
); \

522 (
hd
)->
tqh_ϡ
 = &
	`TAILQ_NEXT
((
m
), 
fld
); \

523 
	`TAILQ_FIRST
((
hd
)(
m
); \

524 (
m
)->
fld
.
tqe_ev
 = &
	`TAILQ_FIRST
((
hd
)); \

525 
	`QMD_TRACE_HEAD
(
hd
); \

526 
	`QMD_TRACE_ELEM
(&(
m
)->
fld
); \

527 } 0)

	)

529 
	#TAILQ_INSERT_TAIL
(
hd
, 
m
, 
fld
) do { \

530 
	`TAILQ_NEXT
((
m
), 
fld

NULL
; \

531 (
m
)->
fld
.
tqe_ev
 = (
hd
)->
tqh_ϡ
; \

532 *(
hd
)->
tqh_ϡ
 = (
m
); \

533 (
hd
)->
tqh_ϡ
 = &
	`TAILQ_NEXT
((
m
), 
fld
); \

534 
	`QMD_TRACE_HEAD
(
hd
); \

535 
	`QMD_TRACE_ELEM
(&(
m
)->
fld
); \

536 } 0)

	)

538 
	#TAILQ_LAST
(
hd
, 
hdme
) \

539 (*(((
hdme
 *)((
hd
)->
tqh_ϡ
))->tqh_ϡ))

	)

541 
	#TAILQ_NEXT
(
m
, 
fld
(lm)->fld.
tqe_xt
)

	)

543 
	#TAILQ_PREV
(
m
, 
hdme
, 
fld
) \

544 (*(((
hdme
 *)((
m
)->
fld
.
tqe_ev
))->
tqh_ϡ
))

	)

546 
	#TAILQ_REMOVE
(
hd
, 
m
, 
fld
) do { \

547 i((
	`TAILQ_NEXT
((
m
), 
fld
)!
NULL
) \

548 
	`TAILQ_NEXT
((
m
), 
fld
)->fld.
tqe_ev
 = \

549 (
m
)->
fld
.
tqe_ev
; \

551 (
hd
)->
tqh_ϡ
 = (
m
)->
fld
.
tqe_ev
; \

552 
	`QMD_TRACE_HEAD
(
hd
); \

554 *(
m
)->
fld
.
tqe_ev
 = 
	`TAILQ_NEXT
((elm), field); \

555 
	`TRASHIT
((
m
)->
fld
.
tqe_xt
); \

556 
	`TRASHIT
((
m
)->
fld
.
tqe_ev
); \

557 
	`QMD_TRACE_ELEM
(&(
m
)->
fld
); \

558 } 0)

	)

560 #i
defed
(
__lulus
)

	@../dbinc/region.h

9 #ide
_DB_REGION_H_


10 
	#_DB_REGION_H_


	)

111 #i
defed
(
__lulus
)

115 
	#DB_REGION_PREFIX
 "__db"

	)

116 
	#DB_REGION_FMT
 "__db.%03d"

	)

117 
	#DB_REGION_ENV
 "__db.001"

	)

118 
	#DB_REGION_NAME_LENGTH
 8

	)

120 
	#INVALID_REGION_ID
 0

	)

121 
	#REGION_ID_ENV
 1

	)

124 
INVALID_REGION_TYPE
=0,

125 
REGION_TYPE_ENV
,

126 
REGION_TYPE_LOCK
,

127 
REGION_TYPE_LOG
,

128 
REGION_TYPE_MPOOL
,

129 
REGION_TYPE_MUTEX
,

130 
REGION_TYPE_TXN
 } 
	tg_ty_t
;

132 
	#INVALID_REGION_SEGID
 -1

	)

142 
	#INVALID_ROFF
 0

	)

145 
	s__db_g_v_f
 {

146 
roff_t
 
size
;

147 
gid
;

148 } 
	tREGENV_REF
;

151 
	s__db_g_v
 {

163 
u_t32_t
 
magic
;

164 
u_t32_t
 
nic
;

166 
u_t32_t
 
majv
;

167 
u_t32_t
 
mv
;

168 
u_t32_t
 
tchv
;

170 
u_t32_t
 
vid
;

172 
time_t
 
timeamp
;

174 
u_t32_t
 
_ags
;

188 
db_mux_t
 
mtx_gv
;

189 
u_t32_t
 
ft
;

191 
u_t32_t
 
gi_t
;

192 
roff_t
 
gi_off
;

194 
roff_t
 
ch_off
;

196 
roff_t
 
thad_off
;

198 
roff_t
 
p_off
;

199 
	#DB_REGENV_REPLOCKED
 0x0001

	)

200 
u_t32_t
 
ags
;

201 
	#DB_REGENV_TIMEOUT
 30

	)

202 
time_t
 
_timeamp
;

203 
time_t
 
p_timeamp
;

205 
utmax_t
 
unud
;

210 } 
	tREGENV
;

213 
	s__db_gi
 {

214 
u_t32_t
 
id
;

215 
g_ty_t
 
ty
;

217 
roff_t
 
size_ig
;

218 
roff_t
 
size
;

220 
roff_t
 
imy
;

222 
gid
;

223 } 
	tREGION
;

228 
	s__db_gfo_t
 {

229 
DB_ENV
 *
dbv
;

230 
g_ty_t
 
ty
;

231 
u_t32_t
 
id
;

234 
REGION
 *

;

236 *
me
;

238 *
addr_ig
;

239 *
addr
;

240 *
imy
;

242 
size_t
 
max_loc
;

243 
size_t
 
lod
;

245 #ifde
DB_WIN32


246 
HANDLE
 
w_hd
;

249 
	#REGION_CREATE
 0x01

	)

250 
	#REGION_CREATE_OK
 0x02

	)

251 
	#REGION_JOIN_OK
 0x04

	)

252 
u_t32_t
 
ags
;

259 
	#R_ADDR
(
gf
, 
offt
) \

260 (
	`F_ISSET
((
gf
)->
dbv
, 
DB_ENV_PRIVATE
? (*)(
offt
) :\

261 (*)((
u_t8_t
 *)((
gf
)->
addr
+ (
offt
)))

	)

262 
	#R_OFFSET
(
gf
, 
p
) \

263 (
	`F_ISSET
((
gf
)->
dbv
, 
DB_ENV_PRIVATE
? (
roff_t
)(
p
) : \

264 (
roff_t
)((
u_t8_t
 *)(
p
- (u_t8_*)(
gf
)->
addr
))

	)

270 
	#PANIC_ISSET
(
dbv
) \

271 ((
dbv
)->
gfo
 !
NULL
 && ((
REGENV
 *) \

272 ((
REGINFO
 *)(
dbv
)->
gfo
)->
imy
)->
nic
 != 0 && \

273 !
	`F_ISSET
((
dbv
), 
DB_ENV_NOPANIC
))

	)

275 
	#PANIC_CHECK
(
dbv
) \

276 i(
	`PANIC_ISSET
(
dbv
)) \

277  (
	`__db_nic_msg
(
dbv
));

	)

279 #i
defed
(
__lulus
)

	@../dbinc/rep.h

9 #ide
_DB_REP_H_


10 
	#_DB_REP_H_


	)

12 
	~"dbc_auto/p_auto.h
"

14 #i
defed
(
__lulus
)

21 
	#REPDBNAME
 "__db.p.db"

	)

22 
	#REPPAGENAME
 "__db.g.db"

	)

27 
	#REP_INVALID
 0

	)

28 
	#REP_ALIVE
 1

	)

29 
	#REP_ALIVE_REQ
 2

	)

30 
	#REP_ALL_REQ
 3

	)

31 
	#REP_BULK_LOG
 4

	)

32 
	#REP_BULK_PAGE
 5

	)

33 
	#REP_DUPMASTER
 6

	)

34 
	#REP_FILE
 7

	)

35 
	#REP_FILE_FAIL
 8

	)

36 
	#REP_FILE_REQ
 9

	)

37 
	#REP_LEASE_GRANT
 10

	)

38 
	#REP_LOG
 11

	)

39 
	#REP_LOG_MORE
 12

	)

40 
	#REP_LOG_REQ
 13

	)

41 
	#REP_MASTER_REQ
 14

	)

42 
	#REP_NEWCLIENT
 15

	)

43 
	#REP_NEWFILE
 16

	)

44 
	#REP_NEWMASTER
 17

	)

45 
	#REP_NEWSITE
 18

	)

51 
	#REP_PAGE
 19

	)

52 
	#REP_PAGE_FAIL
 20

	)

53 
	#REP_PAGE_MORE
 21

	)

54 
	#REP_PAGE_REQ
 22

	)

55 
	#REP_REREQUEST
 23

	)

56 
	#REP_START_SYNC
 24

	)

57 
	#REP_UPDATE
 25

	)

58 
	#REP_UPDATE_REQ
 26

	)

59 
	#REP_VERIFY
 27

	)

60 
	#REP_VERIFY_FAIL
 28

	)

61 
	#REP_VERIFY_REQ
 29

	)

62 
	#REP_VOTE1
 30

	)

63 
	#REP_VOTE2
 31

	)

72 
	#REP_MAX_MSG
 31

	)

79 
	#REP_MSG_REQ
(
y
) \

80 (
y
 =
REP_ALL_REQ
 || \

81 
y
 =
REP_LOG_REQ
 || \

82 
y
 =
REP_PAGE_REQ
 || \

83 
y
 =
REP_VERIFY_REQ
)

	)

95 
	#DB_LOGVERSION_42
 8

	)

96 
	#DB_LOGVERSION_43
 10

	)

97 
	#DB_LOGVERSION_44
 11

	)

98 
	#DB_LOGVERSION_45
 12

	)

99 
	#DB_LOGVERSION_46
 13

	)

100 
	#DB_REPVERSION_INVALID
 0

	)

101 
	#DB_REPVERSION_42
 1

	)

102 
	#DB_REPVERSION_43
 2

	)

103 
	#DB_REPVERSION_44
 3

	)

104 
	#DB_REPVERSION_45
 3

	)

105 
	#DB_REPVERSION_46
 4

	)

106 
	#DB_REPVERSION
 
DB_REPVERSION_46


	)

113 
	#RPRINT
(
dbv
, 
x
) do { \

114 i(
	`FLD_ISSET
((
dbv
)->
vbo
, 
DB_VERB_REPLICATION
)) { \

115 
__p_t
 
x
; \

117 } 0)

	)

118 
	#REP_PRINT_MESSAGE
(
dbv
, 
eid
, 

, 
r
, 

) do { \

119 i(
	`FLD_ISSET
((
dbv
)->
vbo
, 
DB_VERB_REPLICATION
)) { \

120 
	`__p_t_mesge
(
dbv
, 
eid
, 

, 
r
, 

); \

122 } 0)

	)

135 
	#REP_EGENNAME
 "__db.p.eg"

	)

136 
	#REP_GENNAME
 "__db.p.g"

	)

152 
	#REP_INITNAME
 "__db.p."

	)

158 
REP_DB
,

159 
REP_PG


160 } 
	tpdb_t
;

163 
	#REP_SYSTEM_LOCK
(
dbv
) \

164 
	`MUTEX_LOCK
(
dbv
, (dbv)->
p_hd
->
gi
->
mtx_gi
)

	)

165 
	#REP_SYSTEM_UNLOCK
(
dbv
) \

166 
	`MUTEX_UNLOCK
(
dbv
, (dbv)->
p_hd
->
gi
->
mtx_gi
)

	)

173 
	#REP_EVENT_LOCK
(
dbv
) \

174 
	`MUTEX_LOCK
(
dbv
, (dbv)->
p_hd
->
gi
->
mtx_evt
)

	)

175 
	#REP_EVENT_UNLOCK
(
dbv
) \

176 
	`MUTEX_UNLOCK
(
dbv
, (dbv)->
p_hd
->
gi
->
mtx_evt
)

	)

182 
	s__p
 {

183 
db_mux_t
 
mtx_gi
;

184 
db_mux_t
 
mtx_db
;

185 
db_mux_t
 
mtx_ckp
;

186 
roff_t
 
a_off
;

187 
roff_t
 
y_off
;

188 
roff_t
 
v2y_off
;

189 
eid
;

190 
ma_id
;

191 
u_t32_t
 
vsi
;

192 
u_t32_t
 
eg
;

193 
u_t32_t
 
g
;

194 
u_t32_t
 
cov_g
;

195 
ases
;

196 
nses
;

197 
nves
;

198 
iܙy
;

199 
cfig_nses
;

201 
db_timeout_t
 
e_timeout
;

202 
db_timeout_t
 
fu_e_timeout
;

204 
db_timeout_t
 
chk_day
;

206 
	#REP_DEFAULT_THROTTLE
 (10 * 
MEGABYTE


	)

207 
u_t32_t
 
gbys
;

208 
u_t32_t
 
bys
;

209 
	#DB_REP_REQUEST_GAP
 4

	)

210 
	#DB_REP_MAX_GAP
 128

	)

211 
u_t32_t
 
que_g
;

213 
u_t32_t
 
max_g
;

216 
u_t32_t
 
y_th
;

217 
u_t32_t
 
msg_th
;

218 
u_t32_t
 
hd_t
;

219 
u_t32_t
 
_t
;

220 
DB_LSN
 
ckp_l
;

221 
DB_LSN
 
max__l
;

230 
db_mux_t
 
mtx_evt
;

236 
u_t32_t
 
wma_evt_g
;

243 
u_t32_t
 
nifd_eg
;

246 
u_t32_t
 
nfes
;

247 
u_t32_t
 
curfe
;

248 
__p_fefo_gs
 *
curfo
;

249 *
ffo
;

250 *
xtfo
;

251 *
igfo
;

252 
DB_LSN
 
f_l
;

253 
u_t32_t
 
f_vs
;

254 
DB_LSN
 
ϡ_l
;

255 
db_pgno_t
 
ady_pg
;

256 
db_pgno_t
 
wag_pg
;

257 
db_pgno_t
 
max_wa_pg
;

258 
u_t32_t
 
ages
;

259 
DB_MPOOLFILE
 *
fe_mpf
;

260 
DB
 *
fe_dbp
;

261 
DB
 *
queue_dbp
;

264 
ses
;

265 
wr
;

266 
w_iܙy
;

267 
u_t32_t
 
w_g
;

268 
DB_LSN
 
w_l
;

269 
u_t32_t
 
w_tbak
;

270 
ves
;

272 
db_timeec
 
ime
;

275 
db_timeout_t
 
a_timeout
;

276 
db_timeec
 
a_duti
;

277 
u_t32_t
 
ock_skew
;

278 
db_timeec
 
g_expe
;

281 
DB_REP_STAT
 

;

282 #i
defed
(
HAVE_REPLICATION_THREADS
&& defed(
HAVE_STATISTICS
)

283 
DB_REPMGR_STAT
 
m
;

287 
	#REP_C_BULK
 0x00001

	)

288 
	#REP_C_DELAYCLIENT
 0x00002

	)

289 
	#REP_C_LEASE
 0x00004

	)

290 
	#REP_C_NOAUTOINIT
 0x00008

	)

291 
	#REP_C_NOWAIT
 0x00010

	)

292 
u_t32_t
 
cfig
;

294 
	#REP_F_CLIENT
 0x00000001

	)

295 
	#REP_F_DELAY
 0x00000002

	)

296 
	#REP_F_EGENUPDATE
 0x00000004

	)

297 
	#REP_F_EPHASE0
 0x00000008

	)

298 
	#REP_F_EPHASE1
 0x00000010

	)

299 
	#REP_F_EPHASE2
 0x00000020

	)

300 
	#REP_F_GROUP_ESTD
 0x00000040

	)

301 
	#REP_F_INREPELECT
 0x00000080

	)

302 
	#REP_F_MASTER
 0x00000100

	)

303 
	#REP_F_MASTERELECT
 0x00000200

	)

304 
	#REP_F_NEWFILE
 0x00000400

	)

305 
	#REP_F_NOARCHIVE
 0x00000800

	)

306 
	#REP_F_READY_API
 0x00001000

	)

307 
	#REP_F_READY_APPLY
 0x00002000

	)

308 
	#REP_F_READY_MSG
 0x00004000

	)

309 
	#REP_F_READY_OP
 0x00008000

	)

310 
	#REP_F_RECOVER_LOG
 0x00010000

	)

311 
	#REP_F_RECOVER_PAGE
 0x00020000

	)

312 
	#REP_F_RECOVER_UPDATE
 0x00040000

	)

313 
	#REP_F_RECOVER_VERIFY
 0x00080000

	)

314 
	#REP_F_SKIPPED_APPLY
 0x00100000

	)

315 
	#REP_F_START_CALLED
 0x00200000

	)

316 
	#REP_F_TALLY
 0x00400000

	)

317 
u_t32_t
 
ags
;

318 } 
	tREP
;

328 
	#REP_F_RECOVER_MASK
 \

329 (
REP_F_READY_API
 | 
REP_F_READY_OP
 | \

330 
REP_F_RECOVER_LOG
 | 
REP_F_RECOVER_PAGE
 | \

331 
REP_F_RECOVER_UPDATE
 | 
REP_F_RECOVER_VERIFY
)

	)

338 
	#IN_ELECTION
(
R
) \

339 
	`F_ISSET
((
R
), 
REP_F_EPHASE1
 | 
REP_F_EPHASE2
)

	)

340 
	#IN_ELECTION_TALLY
(
R
) \

341 
	`F_ISSET
((
R
), 
REP_F_EPHASE1
 | 
REP_F_EPHASE2
 | 
REP_F_TALLY
)

	)

342 
	#ELECTION_MAJORITY
(
n
((/ 2+ 1)

	)

344 
	#REP_F_INTERNAL_INIT_MASK
 (
REP_F_RECOVER_PAGE
 | 
REP_F_RECOVER_LOG
)

	)

346 
	#IS_REP_MASTER
(
dbv
) \

347 (
	`REP_ON
(
dbv
) && \

348 
	`F_ISSET
(((
REP
 *)(
dbv
)->
p_hd
->
gi
), 
REP_F_MASTER
))

	)

350 
	#IS_REP_CLIENT
(
dbv
) \

351 (
	`REP_ON
(
dbv
) && \

352 
	`F_ISSET
(((
REP
 *)(
dbv
)->
p_hd
->
gi
), 
REP_F_CLIENT
))

	)

354 
	#IS_USING_LEASES
(
dbv
) \

355 (
	`REP_ON
(
dbv
) && \

356 
	`FLD_ISSET
(((
REP
 *)(
dbv
)->
p_hd
->
gi
)->
cfig
, \

357 
REP_C_LEASE
))

	)

359 
	#IS_CLIENT_PGRECOVER
(
dbv
) \

360 (
	`IS_REP_CLIENT
(
dbv
) && \

361 
	`F_ISSET
(((
REP
 *)(
dbv
)->
p_hd
->
gi
), 
REP_F_RECOVER_PAGE
))

	)

369 
	#IS_ENV_REPLICATED
(
dbv
) \

370 (
	`REP_ON
(
dbv
&& (dbv)->
p_hd
->
gi
->
ags
 !0)

	)

376 
	#REP_GAP_FORCE
 0x001

	)

377 
	#REP_GAP_REREQUEST
 0x002

	)

383 
	#REPLICATION_WRAP
(
dbv
, 
func_
, 
t
) do { \

384 
__p_check
, 
__t_t
; \

385 
__p_check
 = 
	`IS_ENV_REPLICATED
(
dbv
) ? 1 : 0; \

386 i(
__p_check
 && ((
t

	`__v_p_r
(
dbv
, 0)) != 0) \

387  ((
t
)); \

388 (
t

func_
; \

389 i(
__p_check
 && \

390 (
__t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && (
t
) == 0) \

391 (
t

__t_t
; \

392 } 0)

	)

420 
	s__db_p
 {

425 
eid
;

427 
u_t32_t
 
gbys
;

428 
u_t32_t
 
bys
;

430 
u_t32_t
 
que_g
;

432 
u_t32_t
 
max_g
;

435 
u_t32_t
 
ock_skew
;

436 
u_t32_t
 
cfig
;

437 
cfig_nses
;

439 
db_timeout_t
 
e_timeout
;

440 
db_timeout_t
 
fu_e_timeout
;

442 
db_timeout_t
 
chk_day
;

444 
my_iܙy
;

445 
db_timeout_t
 
a_timeout
;

449 (*
nd
)

450 
__P
((
DB_ENV
 *, cڡ 
DBT
 *, const DBT *,

451 cڡ 
DB_LSN
 *, , 
u_t32_t
));

453 
DB
 *
p_db
;

455 
REP
 *
gi
;

456 
u_t8_t
 *
bulk
;

458 
	#DBREP_OPENFILES
 0x0001

	)

459 
u_t32_t
 
ags
;

461 #ifde
HAVE_REPLICATION_THREADS


465 
hads
;

466 
u_t32_t
 
_picy
;

467 
rm_picy
;

468 

;

469 
db_timeout_t
 
ack_timeout
;

470 
db_timeout_t
 
ei_y_wa
;

471 
db_timeout_t
 
ci_y_wa
;

474 
ma_eid
;

475 
u_t32_t
 
gi
;

478 
REPMGR_RUNNABLE
 *

, **
mesngs
, *
e_thad
;

479 
mgr_mux_t
 
mux
;

480 
cd_v_t
 
queue_nemy
, 
check_ei
;

481 #ifde
DB_WIN32


482 
ACK_WAITERS_TABLE
 *
was
;

483 
HANDLE
 
sigr
;

484 
w_ed
;

486 
had_cd_t
 
ack_cdi
;

487 
ad_pe
, 
wre_pe
;

488 
chg_sig_hdr
;

492 
REPMGR_SITE
 *
ses
;

493 
u_t
 
se_t
;

494 
u_t
 
se_max
;

496 
CONNECTION_LIST
 
cis
;

497 
RETRY_Q_HEADER
 
s
;

498 
REPMGR_QUEUE
 *
put_queue
;

500 
sock_t
 
li_fd
;

501 
pmgr_Ïddr_t
 
my_addr
;

503 
fished
;

504 
de_e
;

505 
found_ma
;

506 
keov_ndg
;

509 
	#ELECT_ELECTION
 1

	)

510 
	#ELECT_FAILURE_ELECTION
 2

	)

512 
	#ELECT_REPSTART
 3

	)

513 
	#ELECT_SEEK_MASTER
 4

	)

514 
ݔi_eded
;

523 
u_t32_t
 
p_vsi
;

524 
u_t32_t
 
log_vsi
;

526 
DB_LSN
 
l
;

527 
u_t32_t
 
y
;

528 
u_t32_t
 
g
;

529 
db_timeec
 
msg_time
;

535 
	#DB_LOG_PERM_42_44
 0x20

	)

536 
	#DB_LOG_RESEND_42_44
 0x40

	)

538 
	#REPCTL_ELECTABLE
 0x01

	)

539 
	#REPCTL_FLUSH
 0x02

	)

540 
	#REPCTL_GROUP_ESTD
 0x04

	)

541 
	#REPCTL_INIT
 0x08

	)

542 
	#REPCTL_LEASE
 0x10

	)

547 
	#REPCTL_LOG_END
 0x80

	)

548 
	#REPCTL_PERM
 
DB_LOG_PERM_42_44


	)

549 
	#REPCTL_RESEND
 
DB_LOG_RESEND_42_44


	)

550 
u_t32_t
 
ags
;

551 } 
	tREP_CONTROL
;

557 
u_t32_t
 
p_vsi
;

558 
u_t32_t
 
log_vsi
;

560 
DB_LSN
 
l
;

561 
u_t32_t
 
y
;

562 
u_t32_t
 
g
;

563 
u_t32_t
 
ags
;

564 } 
	tREP_OLD_CONTROL
;

566 
	#LEASE_REFRESH_TRIES
 3

	)

569 
	s__p_a_y
 {

570 
eid
;

571 
db_timeec
 
t_time
;

572 
db_timeec
 
d_time
;

573 
DB_LSN
 
a_l
;

574 } 
	tREP_LEASE_ENTRY
;

576 
	s__p_g_fo
 {

577 
db_timeec
 
msg_time
;

578 #ifdef 
DIAGNOSTIC


579 
db_timeec
 
expe_time
;

581 } 
	tREP_GRANT_INFO
;

584 
	s__p_d_ve
 {

585 
u_t32_t
 
eg
;

586 
nses
;

588 
iܙy
;

589 
u_t32_t
 
tbak
;

590 } 
	tREP_OLD_VOTE_INFO
;

594 
u_t32_t
 
eg
;

595 
nses
;

597 
nves
;

598 
iܙy
;

599 
u_t32_t
 
tbak
;

600 } 
	tREP_VOTE_INFO
;

603 
u_t32_t
 
eg
;

604 
eid
;

605 } 
	tREP_VTALLY
;

614 
	#REP_THROTTLE_ONLY
 0x0001

	)

618 
DB_LSN
 
l
;

619 
DBT
 *
da_dbt
;

620 
u_t32_t
 
gbys
;

621 
u_t32_t
 
bys
;

622 
u_t32_t
 
ty
;

623 } 
	tREP_THROTTLE
;

633 
u_t8_t
 *
addr
;

634 
u_t
 *
of
;

635 
u_t32_t
 
n
;

636 
u_t32_t
 
ty
;

637 
DB_LSN
 
l
;

638 
eid
;

639 
	#BULK_XMIT
 0x001

	)

640 
u_t32_t
 *
ag
;

641 } 
	tREP_BULK
;

650 
u_t
 
Ƣs
;

651 
u_t
 
oc
;

652 
DB_LSN
 *
y
;

653 } 
	tLSN_COLLECTION
;

661 
n
;

662 
DB_LOCKREQ
 *
qs
;

663 
DBT
 *
objs
;

664 } 
	tlfo_t
;

666 #i
defed
(
__lulus
)

670 
	~"dbc_auto/p_ext.h
"

	@../dbinc/repmgr.h

9 #ide
_DB_REPMGR_H_


10 
	#_DB_REPMGR_H_


	)

12 #i
defed
(
__lulus
)

20 
	#REPMGR_ACK
 1

	)

21 
	#REPMGR_HANDSHAKE
 2

	)

22 
	#REPMGR_REP_MESSAGE
 3

	)

24 #ifde
DB_WIN32


25 
SOCKET
 
	tsock_t
;

26 
HANDLE
 
	tthad_id_t
;

27 
HANDLE
 
	tmgr_mux_t
;

28 
HANDLE
 
	tcd_v_t
;

29 
WSABUF
 
	tdb_iovec_t
;

31 
	tsock_t
;

32 
had_t
 
	tthad_id_t
;

33 
had_mux_t
 
	tmgr_mux_t
;

34 
had_cd_t
 
	tcd_v_t
;

35 
iovec
 
	tdb_iovec_t
;

42 #ide
MAXHOSTNAMELEN


43 
	#MAXHOSTNAMELEN
 256

	)

47 
	#MAX_SITE_LOC_STRING
 (
MAXHOSTNAMELEN
+20)

	)

48 
	tSITE_STRING_BUFFER
[
MAX_SITE_LOC_STRING
+1];

50 
__pmgr_ci
;

51 
__pmgr_ci
 
	tREPMGR_CONNECTION
;

52 
__pmgr_queue
; __pmgr_queu
	tREPMGR_QUEUE
;

53 
__queued_ouut
; __queued_ouu
	tQUEUED_OUTPUT
;

54 
__pmgr_y
; __pmgr_y 
	tREPMGR_RETRY
;

55 
__pmgr_ruab
; __pmgr_ruab 
	tREPMGR_RUNNABLE
;

56 
__pmgr_se
; __pmgr_s
	tREPMGR_SITE
;

57 
__ack_was_b
;

58 
__ack_was_b
 
	tACK_WAITERS_TABLE
;

60 
TAILQ_HEAD
(
	t__pmgr_cn_li
, 
	t__pmgr_ci

	tCONNECTION_LIST
;

61 
STAILQ_HEAD
(
	t__pmgr_out_q_hd
, 
	t__queued_ouut

	tOUT_Q_HEADER
;

62 
TAILQ_HEAD
(
	t__pmgr_y_q
, 
	t__pmgr_y

	tRETRY_Q_HEADER
;

65 
	s__pmgr_ruab
 {

66 
DB_ENV
 *
dbv
;

67 
thad_id_t
 
thad_id
;

68 *(*
run

__P
((*));

69 
fished
;

88 
	s__pmgr_y
 {

89 
TAILQ_ENTRY
(
__pmgr_y

s
;

90 
u_t
 
eid
;

91 
db_timeec
 
time
;

100 
db_iovec_t
 
ves
[5];

107 
offt
;

116 
cou
;

123 
size_t
 
tٮ_bys
;

124 } 
	tREPMGR_IOVECS
;

127 
size_t
 
ngth
;

128 
f_cou
;

129 
u_t8_t
 
da
[1];

130 } 
	tREPMGR_FLAT
;

132 
	s__queued_ouut
 {

133 
STAILQ_ENTRY
(
__queued_ouut

s
;

134 
REPMGR_FLAT
 *
msg
;

135 
size_t
 
offt
;

145 
	s__pmgr_mesge
 {

146 
STAILQ_ENTRY
(
__pmgr_mesge

s
;

147 
igg_eid
;

148 
DBT
 
cڌ
, 
c
;

149 } 
	tREPMGR_MESSAGE
;

152 
SIZES_PHASE
,

153 
DATA_PHASE


154 } 
	tpha_t
;

166 
	s__pmgr_ci
 {

167 
TAILQ_ENTRY
(
__pmgr_ci

s
;

169 
eid
;

170 
sock_t
 
fd
;

171 #ifde
DB_WIN32


172 
WSAEVENT
 
evt_obje
;

174 
	#CONN_CONNECTING
 0x01

	)

175 
	#CONN_DEFUNCT
 0x02

	)

176 
u_t32_t
 
ags
;

185 
OUT_Q_HEADER
 
outbound_queue
;

186 
out_queue_ngth
;

199 
pha_t
 
adg_pha
;

200 
REPMGR_IOVECS
 
iovecs
;

202 
u_t8_t
 
msg_ty
;

203 
u_t32_t
 
cڌ_size_buf
, 
c_size_buf
;

206 
REPMGR_MESSAGE
 *
p_mesge
;

208 
DBT
 
l
, 
c
;

209 } 
pmgr_msg
;

210 } 
put
;

213 #ifde
HAVE_GETADDRINFO


214 
addrfo
 
	tADDRINFO
;

222 #unde
AI_PASSIVE


223 
	#AI_PASSIVE
 0x01

	)

224 #unde
AI_CANONNAME


225 
	#AI_CANONNAME
 0x02

	)

226 #unde
AI_NUMERICHOST


227 
	#AI_NUMERICHOST
 0x04

	)

229 
	s__addrfo
 {

230 
ai_ags
;

231 
ai_my
;

232 
ai_sockty
;

233 
ai_oc
;

234 
size_t
 
ai_add
;

235 *
ai_nme
;

236 
sockaddr
 *
ai_addr
;

237 
__addrfo
 *
ai_xt
;

238 } 
	tADDRINFO
;

242 *
ho
;

243 
u_t16_t
 
pt
;

244 
ADDRINFO
 *
addss_li
;

245 
ADDRINFO
 *
cut
;

246 } 
	tpmgr_Ïddr_t
;

257 
	s__pmgr_se
 {

258 
pmgr_Ïddr_t
 
t_addr
;

259 
DB_LSN
 
max_ack
;

260 
iܙy
;

262 
	#SITE_IDLE
 1

	)

263 
	#SITE_CONNECTED
 2

	)

264 
e
;

267 
REPMGR_CONNECTION
 *
cn
;

268 
REPMGR_RETRY
 *
y
;

269 } 
f
;

279 
u_t32_t
 
gi
;

280 
DB_LSN
 
l
;

281 } 
	tDB_REPMGR_ACK
;

291 
	#DB_REPMGR_VERSION
 1

	)

292 
u_t32_t
 
vsi
;

293 
u_t16_t
 
pt
;

294 
u_t32_t
 
iܙy
;

295 } 
	tDB_REPMGR_HANDSHAKE
;

304 
	#SITE_FROM_EID
(
eid
(&
db_p
->
ses
[eid])

	)

305 
	#EID_FROM_SITE
(
s
(()((s- (&
db_p
->
ses
[0])))

	)

306 
	#IS_VALID_EID
(
e
(>0)

	)

307 
	#SELF_EID
 
INT_MAX


	)

309 
	#IS_PEER_POLICY
(
p
(=
DB_REPMGR_ACKS_ALL_PEERS
 || \

310 (
p
=
DB_REPMGR_ACKS_QUORUM
 || \

311 (
p
=
DB_REPMGR_ACKS_ONE_PEER
)

	)

313 
	#LOCK_MUTEX
(
m
) do { \

314 
__t
; \

315 i((
__t
 = 
	`__pmgr_lock_mux
(&(
m
))) != 0) \

316  (
__t
); \

317 } 0)

	)

319 
	#UNLOCK_MUTEX
(
m
) do { \

320 
__t
; \

321 i((
__t
 = 
	`__pmgr_uock_mux
(&(
m
))) != 0) \

322  (
__t
); \

323 } 0)

	)

326 #ifde
DB_WIN32


327 
	#WOULDBLOCK
 
WSAEWOULDBLOCK


	)

328 
	#INPROGRESS
 
WSAEWOULDBLOCK


	)

330 
	#t_o
 
	`WSAGLaE
()

	)

331 
	tsockn_t
;

332 * 
	tsockt_t
;

334 
	#iov_n
 
n


	)

335 
	#iov_ba
 
buf


	)

337 
DWORD
 
	tthadsync_timeout_t
;

339 
	#REPMGR_SYNC_INITED
(
db_p
(db_p->
was
 !
NULL
)

	)

342 
	#INVALID_SOCKET
 -1

	)

343 
	#SOCKET_ERROR
 -1

	)

344 
	#WOULDBLOCK
 
EWOULDBLOCK


	)

345 
	#INPROGRESS
 
EINPROGRESS


	)

347 
	#t_o
 
o


	)

348 * 
	tsockt_t
;

350 
	#osock
(
fd

	`o
(fd)

	)

352 
timeec
 
	tthadsync_timeout_t
;

354 
	#REPMGR_SYNC_INITED
(
db_p
(db_p->
ad_pe
 >0)

	)

358 
	#ADDR_LIST_CURRENT
(

(a)->
cut
)

	)

359 
	#ADDR_LIST_FIRST
(

(a)->
cut
 = ()->
addss_li
)

	)

360 
	#ADDR_LIST_NEXT
(

(a)->
cut
 = ()->cut->
ai_xt
)

	)

362 
	~"dbc_auto/pmgr_ext.h
"

364 #i
defed
(
__lulus
)

	@../dbinc/shqueue.h

9 #idef 
_DB_SHQUEUE_H_


10 
	#_DB_SHQUEUE_H_


	)

33 #i
defed
(
__lulus
)

37 
	#SH_PTR_TO_OFF
(
c
, 
de
) \

38 ((
ssize_t
)(((
u_t8_t
 *)(
de
)- ((u_t8_*)(
c
))))

	)

43 
	#SH_CHAIN_ENTRY
 \

45 
ssize_t
 
s_xt
; \

46 
ssize_t
 
s_ev
; \

47 }

	)

49 
	#SH_CHAIN_INIT
(
m
, 
fld
) \

50 (
m
)->
fld
.
s_xt
 = (m)->fld.
s_ev
 = -1

	)

52 
	#SH_CHAIN_HASNEXT
(
m
, 
fld
(lm)->fld.
s_xt
 !-1)

	)

53 
	#SH_CHAIN_NEXTP
(
m
, 
fld
, 
ty
) \

54 ((
ty
 *)((
u_t8_t
 *)(
m
+ (m)->
fld
.
s_xt
))

	)

55 
	#SH_CHAIN_NEXT
(
m
, 
fld
, 
ty
(
	`SH_CHAIN_HASNEXT
(elm, field) ? \

56 
	`SH_CHAIN_NEXTP
(
m
, 
fld
, 
ty
: (ty *)
NULL
)

	)

58 
	#SH_CHAIN_HASPREV
(
m
, 
fld
(lm)->fld.
s_ev
 !-1)

	)

59 
	#SH_CHAIN_PREVP
(
m
, 
fld
, 
ty
) \

60 ((
ty
 *)((
u_t8_t
 *)(
m
+ (m)->
fld
.
s_ev
))

	)

61 
	#SH_CHAIN_PREV
(
m
, 
fld
, 
ty
(
	`SH_CHAIN_HASPREV
(elm, field) ? \

62 
	`SH_CHAIN_PREVP
(
m
, 
fld
, 
ty
: (ty *)
NULL
)

	)

64 
	#SH_CHAIN_SINGLETON
(
m
, 
fld
) \

65 (!(
	`SH_CHAIN_HASNEXT
(
m
, 
fld
|| 
	`SH_CHAIN_HASPREV
lm, fld)))

	)

67 
	#SH_CHAIN_INSERT_AFTER
(
lim
, 
m
, 
fld
, 
ty
) do { \

68 
ty
 *
__xt
 = 
	`SH_CHAIN_NEXT
(
lim
, 
fld
,ype); \

69 i(
__xt
 !
NULL
) { \

70 (
m
)->
fld
.
s_xt
 = 
	`SH_PTR_TO_OFF
lm, 
__xt
); \

71 
__xt
->
fld
.
s_ev
 = 
	`SH_PTR_TO_OFF
(__xt, 
m
); \

73 (
m
)->
fld
.
s_xt
 = -1; \

74 (
m
)->
fld
.
s_ev
 = 
	`SH_PTR_TO_OFF
lm, 
lim
); \

75 (
lim
)->
fld
.
s_xt
 = 
	`SH_PTR_TO_OFF
im, 
m
); \

76 } 0)

	)

78 
	#SH_CHAIN_INSERT_BEFORE
(
lim
, 
m
, 
fld
, 
ty
) do { \

79 
ty
 *
__ev
 = 
	`SH_CHAIN_PREV
(
lim
, 
fld
,ype); \

80 i(
__ev
 !
NULL
) { \

81 (
m
)->
fld
.
s_ev
 = 
	`SH_PTR_TO_OFF
lm, 
__ev
); \

82 
__ev
->
fld
.
s_xt
 = 
	`SH_PTR_TO_OFF
(__ev, 
m
); \

84 (
m
)->
fld
.
s_ev
 = -1; \

85 (
m
)->
fld
.
s_xt
 = 
	`SH_PTR_TO_OFF
lm, 
lim
); \

86 (
lim
)->
fld
.
s_ev
 = 
	`SH_PTR_TO_OFF
im, 
m
); \

87 } 0)

	)

89 
	#SH_CHAIN_REMOVE
(
m
, 
fld
, 
ty
) do { \

90 
ty
 *
__ev
 = 
	`SH_CHAIN_PREV
(
m
, 
fld
,ype); \

91 
ty
 *
__xt
 = 
	`SH_CHAIN_NEXT
(
m
, 
fld
,ype); \

92 i(
__xt
 !
NULL
) \

93 
__xt
->
fld
.
s_ev
 = (
__ev
 =
NULL
) ? -1 : \

94 
	`SH_PTR_TO_OFF
(
__xt
, 
__ev
); \

95 i(
__ev
 !
NULL
) \

96 
__ev
->
fld
.
s_xt
 = (
__xt
 =
NULL
) ? -1 : \

97 
	`SH_PTR_TO_OFF
(
__ev
, 
__xt
); \

98 
	`SH_CHAIN_INIT
(
m
, 
fld
); \

99 } 0)

	)

104 
	#SH_LIST_HEAD
(
me
) \

105 
	sme
 { \

106 
ssize_t
 
h_f
; \

107 }

	)

109 
	#SH_LIST_HEAD_INITIALIZER
(
hd
) \

110 { -1 }

	)

112 
	#SH_LIST_ENTRY
 \

114 
ssize_t
 
e_xt
; \

115 
ssize_t
 
e_ev
; \

116 }

	)

121 
	#SH_LIST_EMPTY
(
hd
) \

122 ((
hd
)->
h_f
 =-1)

	)

124 
	#SH_LIST_FIRSTP
(
hd
, 
ty
) \

125 ((
ty
 *)(((
u_t8_t
 *)(
hd
)+ (hd)->
h_f
))

	)

127 
	#SH_LIST_FIRST
(
hd
, 
ty
) \

128 (
	`SH_LIST_EMPTY
(
hd
? 
NULL
 : \

129 ((
ty
 *)(((
u_t8_t
 *)(
hd
)+ (hd)->
h_f
)))

	)

131 
	#SH_LIST_NEXTP
(
m
, 
fld
, 
ty
) \

132 ((
ty
 *)(((
u_t8_t
 *)(
m
)+ (m)->
fld
.
e_xt
))

	)

134 
	#SH_LIST_NEXT
(
m
, 
fld
, 
ty
) \

135 ((
m
)->
fld
.
e_xt
 =-1 ? 
NULL
 : \

136 ((
ty
 *)(((
u_t8_t
 *)(
m
)+ (m)->
fld
.
e_xt
)))

	)

143 
	#__SH_LIST_PREV_OFF
(
m
, 
fld
) \

144 ((
ssize_t
 *)(((
u_t8_t
 *)(
m
)+ (m)->
fld
.
e_ev
))

	)

146 
	#SH_LIST_PREV
(
m
, 
fld
, 
ty
) \

147 (
ty
 *)((
ssize_t
)(
m
- (*
	`__SH_LIST_PREV_OFF
lm, 
fld
)))

	)

149 
	#SH_LIST_FOREACH
(
v
, 
hd
, 
fld
, 
ty
) \

150 (
v

	`SH_LIST_FIRST
((
hd
), 
ty
); \

151 (
v
!
NULL
; \

152 (
v

	`SH_LIST_NEXT
((v), 
fld
, 
ty
))

	)

166 
	#SH_LIST_NEXT_TO_PREV
(
m
, 
fld
) \

167 (((
m
)->
fld
.
e_xt
 == -1 ? 0 : -(elm)->field.sle_next) + \

168 
	`SH_PTR_TO_OFF
(
m
, &lm)->
fld
.
e_xt
))

	)

170 
	#SH_LIST_INIT
(
hd
(hd)->
h_f
 = -1

	)

172 
	#SH_LIST_INSERT_BEFORE
(
hd
, 
lim
, 
m
, 
fld
, 
ty
) do { \

173 i(
lim
 =
	`SH_LIST_FIRST
(
hd
, 
ty
)) { \

174 
	`SH_LIST_INSERT_HEAD
(
hd
, 
m
, 
fld
, 
ty
); \

176 (
m
)->
fld
.
e_xt
 = 
	`SH_PTR_TO_OFF
lm, 
lim
); \

177 (
m
)->
fld
.
e_ev
 = 
	`SH_LIST_NEXT_TO_PREV
( \

178 
	`SH_LIST_PREV
((
lim
), 
fld
, 
ty
), field) + \

179 (
m
)->
fld
.
e_xt
; \

180 (
	`SH_LIST_PREV
(
lim
, 
fld
, 
ty
))->fld.
e_xt
 = \

181 (
	`SH_PTR_TO_OFF
((
	`SH_LIST_PREV
(
lim
, 
fld
, \

182 
ty
)), 
m
)); \

183 (
lim
)->
fld
.
e_ev
 = 
	`SH_LIST_NEXT_TO_PREV
(
m
, field); \

185 } 0)

	)

187 
	#SH_LIST_INSERT_AFTER
(
lim
, 
m
, 
fld
, 
ty
) do { \

188 i((
lim
)->
fld
.
e_xt
 != -1) { \

189 (
m
)->
fld
.
e_xt
 = 
	`SH_PTR_TO_OFF
(elm, \

190 
	`SH_LIST_NEXTP
(
lim
, 
fld
, 
ty
)); \

191 
	`SH_LIST_NEXTP
(
lim
, 
fld
, 
ty
)->fld.
e_ev
 = \

192 
	`SH_LIST_NEXT_TO_PREV
(
m
, 
fld
); \

194 (
m
)->
fld
.
e_xt
 = -1; \

195 (
lim
)->
fld
.
e_xt
 = 
	`SH_PTR_TO_OFF
im, 
m
); \

196 (
m
)->
fld
.
e_ev
 = 
	`SH_LIST_NEXT_TO_PREV
(
lim
, field); \

197 } 0)

	)

199 
	#SH_LIST_INSERT_HEAD
(
hd
, 
m
, 
fld
, 
ty
) do { \

200 i((
hd
)->
h_f
 != -1) { \

201 (
m
)->
fld
.
e_xt
 = \

202 (
hd
)->
h_f
 - 
	`SH_PTR_TO_OFF
(hd, 
m
); \

203 
	`SH_LIST_FIRSTP
(
hd
, 
ty
)->
fld
.
e_ev
 = \

204 
	`SH_LIST_NEXT_TO_PREV
(
m
, 
fld
); \

206 (
m
)->
fld
.
e_xt
 = -1; \

207 (
hd
)->
h_f
 = 
	`SH_PTR_TO_OFF
(hd, 
m
); \

208 (
m
)->
fld
.
e_ev
 = 
	`SH_PTR_TO_OFF
lm, &(
hd
)->
h_f
); \

209 } 0)

	)

211 
	#SH_LIST_REMOVE
(
m
, 
fld
, 
ty
) do { \

212 i((
m
)->
fld
.
e_xt
 != -1) { \

213 
	`SH_LIST_NEXTP
(
m
, 
fld
, 
ty
)->fld.
e_ev
 = \

214 (
m
)->
fld
.
e_ev
 - (m)->fld.
e_xt
; \

215 *
	`__SH_LIST_PREV_OFF
(
m
, 
fld
+lm)->fld.
e_xt
;\

217 *
	`__SH_LIST_PREV_OFF
(
m
, 
fld
) = -1; \

218 } 0)

	)

220 
	#SH_LIST_REMOVE_HEAD
(
hd
, 
fld
, 
ty
) do { \

221 i(!
	`SH_LIST_EMPTY
(
hd
)) { \

222 
	`SH_LIST_REMOVE
(
	`SH_LIST_FIRSTP
(
hd
, 
ty
), 
fld
,ype);\

224 } 0)

	)

229 
	#SH_TAILQ_HEAD
(
me
) \

230 
	sme
 { \

231 
ssize_t
 
qh_f
; \

232 
ssize_t
 
qh_ϡ
; \

233 }

	)

235 
	#SH_TAILQ_HEAD_INITIALIZER
(
hd
) \

236 { -1, 0 }

	)

238 
	#SH_TAILQ_ENTRY
 \

240 
ssize_t
 
qe_xt
; \

241 
ssize_t
 
qe_ev
; \

242 }

	)

248 
	#SH_TAILQ_EMPTY
(
hd
) \

249 ((
hd
)->
qh_f
 =-1)

	)

251 
	#SH_TAILQ_FIRSTP
(
hd
, 
ty
) \

252 ((
ty
 *)((
u_t8_t
 *)(
hd
+ (hd)->
qh_f
))

	)

254 
	#SH_TAILQ_FIRST
(
hd
, 
ty
) \

255 (
	`SH_TAILQ_EMPTY
(
hd
? 
NULL
 : 
	`SH_TAILQ_FIRSTP
(hd, 
ty
))

	)

257 
	#SH_TAILQ_NEXTP
(
m
, 
fld
, 
ty
) \

258 ((
ty
 *)((
u_t8_t
 *)(
m
+ (m)->
fld
.
qe_xt
))

	)

260 
	#SH_TAILQ_NEXT
(
m
, 
fld
, 
ty
) \

261 ((
m
)->
fld
.
qe_xt
 =-1 ? 
NULL
 : \

262 ((
ty
 *)((
u_t8_t
 *)(
m
+ (m)->
fld
.
qe_xt
)))

	)

270 
	#__SH_TAILQ_PREV_OFF
(
m
, 
fld
) \

271 ((
ssize_t
 *)(((
u_t8_t
 *)(
m
)+ (m)->
fld
.
qe_ev
))

	)

273 
	#SH_TAILQ_PREVP
(
m
, 
fld
, 
ty
) \

274 (
ty
 *)((
ssize_t
)
m
 - (*
	`__SH_TAILQ_PREV_OFF
lm, 
fld
)))

	)

276 
	#SH_TAILQ_PREV
(
hd
, 
m
, 
fld
, 
ty
) \

277 (((
m
=
	`SH_TAILQ_FIRST
(
hd
, 
ty
)? 
NULL
 : \

278 (
ty
 *)((
ssize_t
)
m
 - (*
	`__SH_TAILQ_PREV_OFF
lm, 
fld
))))

	)

286 
	#__SH_TAILQ_LAST_OFF
(
hd
) \

287 ((
ssize_t
 *)(((
u_t8_t
 *)(
hd
)+ (hd)->
qh_ϡ
))

	)

289 
	#SH_TAILQ_LASTP
(
hd
, 
fld
, 
ty
) \

290 ((
ty
 *)((
ssize_t
)(
hd
) + \

291 ((
ssize_t
)((
hd
)->
qh_ϡ
) - \

292 ((
ssize_t
)
	`SH_PTR_TO_OFF
(
	`SH_TAILQ_FIRST
(
hd
, 
ty
), \

293 &(
	`SH_TAILQ_FIRSTP
(
hd
, 
ty
)->
fld
.
qe_xt
))))))

	)

295 
	#SH_TAILQ_LAST
(
hd
, 
fld
, 
ty
) \

296 (
	`SH_TAILQ_EMPTY
(
hd
? 
NULL
 : 
	`SH_TAILQ_LASTP
(hd, 
fld
, 
ty
))

	)

307 
	#SH_TAILQ_NEXT_TO_PREV
(
m
, 
fld
) \

308 (((
m
)->
fld
.
qe_xt
 == -1 ? 0 : \

309 (-(
m
)->
fld
.
qe_xt
) + \

310 
	`SH_PTR_TO_OFF
(
m
, &lm)->
fld
.
qe_xt
)))

	)

312 
	#SH_TAILQ_FOREACH
(
v
, 
hd
, 
fld
, 
ty
) \

313 (
v

	`SH_TAILQ_FIRST
((
hd
), 
ty
); \

314 (
v
!
NULL
; \

315 (
v

	`SH_TAILQ_NEXT
((v), 
fld
, 
ty
))

	)

317 
	#SH_TAILQ_FOREACH_REVERSE
(
v
, 
hd
, 
fld
, 
ty
) \

318 (
v

	`SH_TAILQ_LAST
((
hd
), 
fld
, 
ty
); \

319 (
v
!
NULL
; \

320 (
v

	`SH_TAILQ_PREV
((
hd
), (v), 
fld
, 
ty
))

	)

322 
	#SH_TAILQ_INIT
(
hd
) { \

323 (
hd
)->
qh_f
 = -1; \

324 (
hd
)->
qh_ϡ
 = 
	`SH_PTR_TO_OFF
(hd, &(hd)->
qh_f
); \

325 }

	)

327 
	#SH_TAILQ_INSERT_HEAD
(
hd
, 
m
, 
fld
, 
ty
) do { \

328 i((
hd
)->
qh_f
 != -1) { \

329 (
m
)->
fld
.
qe_xt
 = \

330 (
hd
)->
qh_f
 - 
	`SH_PTR_TO_OFF
(hd, 
m
); \

331 
	`SH_TAILQ_FIRSTP
(
hd
, 
ty
)->
fld
.
qe_ev
 = \

332 
	`SH_TAILQ_NEXT_TO_PREV
(
m
, 
fld
); \

334 (
hd
)->
qh_ϡ
 = \

335 
	`SH_PTR_TO_OFF
(
hd
, &(
m
)->
fld
.
qe_xt
); \

336 (
m
)->
fld
.
qe_xt
 = -1; \

338 (
hd
)->
qh_f
 = 
	`SH_PTR_TO_OFF
(hd, 
m
); \

339 (
m
)->
fld
.
qe_ev
 = \

340 
	`SH_PTR_TO_OFF
(
m
, &(
hd
)->
qh_f
); \

341 } 0)

	)

343 
	#SH_TAILQ_INSERT_TAIL
(
hd
, 
m
, 
fld
) do { \

344 (
m
)->
fld
.
qe_xt
 = -1; \

345 (
m
)->
fld
.
qe_ev
 = \

346 -
	`SH_PTR_TO_OFF
(
hd
, 
m
+ (hd)->
qh_ϡ
; \

347 i((
hd
)->
qh_ϡ
 == \

348 
	`SH_PTR_TO_OFF
((
hd
), &(hd)->
qh_f
)) \

349 (
hd
)->
qh_f
 = 
	`SH_PTR_TO_OFF
(hd, 
m
); \

351 *
	`__SH_TAILQ_LAST_OFF
(
hd
-(hd)->
qh_ϡ
 + \

352 
	`SH_PTR_TO_OFF
((
m
), &lm)->
fld
.
qe_xt
) + \

353 
	`SH_PTR_TO_OFF
(
hd
, 
m
); \

354 (
hd
)->
qh_ϡ
 = \

355 
	`SH_PTR_TO_OFF
(
hd
, &((
m
)->
fld
.
qe_xt
)); \

356 } 0)

	)

358 
	#SH_TAILQ_INSERT_BEFORE
(
hd
, 
lim
, 
m
, 
fld
, 
ty
) do { \

359 i(
lim
 =
	`SH_TAILQ_FIRST
(
hd
, 
ty
)) { \

360 
	`SH_TAILQ_INSERT_HEAD
(
hd
, 
m
, 
fld
, 
ty
); \

362 (
m
)->
fld
.
qe_xt
 = 
	`SH_PTR_TO_OFF
lm, 
lim
); \

363 (
m
)->
fld
.
qe_ev
 = 
	`SH_TAILQ_NEXT_TO_PREV
( \

364 
	`SH_TAILQ_PREVP
((
lim
), 
fld
, 
ty
), field) + \

365 (
m
)->
fld
.
qe_xt
; \

366 (
	`SH_TAILQ_PREVP
(
lim
, 
fld
, 
ty
))->fld.
qe_xt
 =\

367 (
	`SH_PTR_TO_OFF
((
	`SH_TAILQ_PREVP
(
lim
, 
fld
, 
ty
)), \

368 
m
)); \

369 (
lim
)->
fld
.
qe_ev
 = \

370 
	`SH_TAILQ_NEXT_TO_PREV
(
m
, 
fld
); \

372 } 0)

	)

374 
	#SH_TAILQ_INSERT_AFTER
(
hd
, 
lim
, 
m
, 
fld
, 
ty
) do { \

375 i((
lim
)->
fld
.
qe_xt
 != -1) { \

376 (
m
)->
fld
.
qe_xt
 = (
lim
)->field.stqe_next - \

377 
	`SH_PTR_TO_OFF
(
lim
, 
m
); \

378 
	`SH_TAILQ_NEXTP
(
lim
, 
fld
, 
ty
)->fld.
qe_ev
 = \

379 
	`SH_TAILQ_NEXT_TO_PREV
(
m
, 
fld
); \

381 (
m
)->
fld
.
qe_xt
 = -1; \

382 (
hd
)->
qh_ϡ
 = \

383 
	`SH_PTR_TO_OFF
(
hd
, &(
m
)->
fld
.
qe_xt
); \

385 (
lim
)->
fld
.
qe_xt
 = 
	`SH_PTR_TO_OFF
im, 
m
); \

386 (
m
)->
fld
.
qe_ev
 = 
	`SH_TAILQ_NEXT_TO_PREV
(
lim
, field); \

387 } 0)

	)

389 
	#SH_TAILQ_REMOVE
(
hd
, 
m
, 
fld
, 
ty
) do { \

390 i((
m
)->
fld
.
qe_xt
 != -1) { \

391 
	`SH_TAILQ_NEXTP
(
m
, 
fld
, 
ty
)->fld.
qe_ev
 = \

392 (
m
)->
fld
.
qe_ev
 + \

393 
	`SH_PTR_TO_OFF
(
	`SH_TAILQ_NEXTP
(
m
, \

394 
fld
, 
ty
), 
m
); \

395 *
	`__SH_TAILQ_PREV_OFF
(
m
, 
fld
+lm)->fld.
qe_xt
;\

397 (
hd
)->
qh_ϡ
 = (
m
)->
fld
.
qe_ev
 + \

398 
	`SH_PTR_TO_OFF
(
hd
, 
m
); \

399 *
	`__SH_TAILQ_PREV_OFF
(
m
, 
fld
) = -1; \

401 } 0)

	)

403 #i
defed
(
__lulus
)

	@../dbinc/tcl_db.h

9 #ide
_DB_TCL_DB_H_


10 
	#_DB_TCL_DB_H_


	)

12 #i
defed
(
__lulus
)

16 
	#MSG_SIZE
 100

	)

18 
	eINFOTYPE
 {

19 
I_ENV
, 
I_DB
, 
I_DBC
, 
I_TXN
, 
I_MP
, 
I_PG
, 
I_LOCK
, 
I_LOGC
, 
I_NDBM
, 
I_SEQ
};

21 
	#MAX_ID
 8

	)

22 
	#DBTCL_PREP
 64

	)

24 
	#DBTCL_DBM
 1

	)

25 
	#DBTCL_NDBM
 2

	)

55 
	sdbt_fo
 {

56 
LIST_ENTRY
(
dbt_fo

s
;

57 
T_Ip
 *
i_
;

58 *
i_me
;

59 
INFOTYPE
 
i_ty
;

60 
	uf
 {

61 
DB
 *
dbp
;

62 
DBC
 *
db
;

63 
DB_ENV
 *
vp
;

64 
DB_LOCK
 *
lock
;

65 
DB_LOGC
 *
logc
;

66 
DB_MPOOLFILE
 *
mp
;

67 
DB_TXN
 *
tx
;

68 *
yp
;

69 } 
un
;

70 
	uda
 {

71 
yda
;

72 
db_pgno_t
 
pgno
;

73 
u_t32_t
 
lockid
;

74 } 
und
;

75 
	uda2
 {

76 
yda
;

77 
gesz
;

78 
DB_COMPACT
 *
c_da
;

79 } 
und2
;

80 
DBT
 
i_lockobj
;

81 
FILE
 *
i_r
;

82 *
i_fx
;

85 
T_Obj
 *
i_com
;

86 
T_Obj
 *
i_dupcom
;

87 
T_Obj
 *
i_evt
;

88 
T_Obj
 *
i_hashoc
;

89 
T_Obj
 *
i_p_nd
;

90 
T_Obj
 *
i_cd_
;

93 
T_Obj
 *
i_p_eid
;

95 
dbt_fo
 *
i_
;

96 
i_hid
[
MAX_ID
];

97 } 
	tDBTCL_INFO
;

99 
	#i_yp
 
un
.
yp


	)

100 
	#i_g
 
un
.
yp


	)

101 
	#i_vp
 
un
.
vp


	)

102 
	#i_dbp
 
un
.
dbp


	)

103 
	#i_db
 
un
.
db


	)

104 
	#i_tx
 
un
.
tx


	)

105 
	#i_mp
 
un
.
mp


	)

106 
	#i_lock
 
un
.
lock


	)

107 
	#i_logc
 
un
.
logc


	)

109 
	#i_da
 
und
.
yda


	)

110 
	#i_pgno
 
und
.
pgno


	)

111 
	#i_lock
 
und
.
lockid


	)

112 
	#i_da2
 
und2
.
yda


	)

113 
	#i_pgsz
 
und2
.
gesz


	)

114 
	#i_cda
 
und2
.
c_da


	)

116 
	#i_vtxnid
 
i_hid
[0]

	)

117 
	#i_vmpid
 
i_hid
[1]

	)

118 
	#i_vlockid
 
i_hid
[2]

	)

119 
	#i_vlogcid
 
i_hid
[3]

	)

121 
	#i_mgid
 
i_hid
[0]

	)

123 
	#i_dbdbcid
 
i_hid
[0]

	)

125 

__debug_
, 
__debug_t
, 
__debug_
, 
__debug_
;

127 
	sdbt_glob
 {

128 
LIST_HEAD
(
fohd
, 
dbt_fo

	gg_fohd
;

129 } 
	tDBTCL_GLOBAL
;

130 
	#__db_fohd
 
__dbt_glob
.
g_fohd


	)

132 
DBTCL_GLOBAL
 
__dbt_glob
;

139 
	#NewSgObj
(
a
, 
b
) \

140 
	`T_NewSgObj
(
a
, ()
b
)

	)

142 
	#NAME_TO_DB
(
me
(
DB
 *)
	`_NameToP
(ame))

	)

143 
	#NAME_TO_DBC
(
me
(
DBC
 *)
	`_NameToP
(ame))

	)

144 
	#NAME_TO_ENV
(
me
(
DB_ENV
 *)
	`_NameToP
(ame))

	)

145 
	#NAME_TO_LOCK
(
me
(
DB_LOCK
 *)
	`_NameToP
(ame))

	)

146 
	#NAME_TO_MP
(
me
(
DB_MPOOLFILE
 *)
	`_NameToP
(ame))

	)

147 
	#NAME_TO_TXN
(
me
(
DB_TXN
 *)
	`_NameToP
(ame))

	)

148 
	#NAME_TO_SEQUENCE
(
me
(
DB_SEQUENCE
 *)
	`_NameToP
(ame))

	)

157 
	#MAKE_STAT_LIST
(
s
, 
v
) do { \

158 
su
 = 
	`_SLiEmI
(

, 
s
, (
s
), ()(
v
)); \

159 i(
su
 !
TCL_OK
) \

160 
r
; \

161 } 0)

	)

163 
	#MAKE_WSTAT_LIST
(
s
, 
v
) do { \

164 
su
 = 
	`_SLiEmWideI
(

, 
s
, (
s
), (
t64_t
)(
v
)); \

165 i(
su
 !
TCL_OK
) \

166 
r
; \

167 } 0)

	)

177 
	#MAKE_STAT_LSN
(
s
, 
l
) do { \

178 
myobjc
 = 2; \

179 
myobjv
[0] = 
	`T_NewLgObj
(()(
l
)->
fe
); \

180 
myobjv
[1] = 
	`T_NewLgObj
(()(
l
)->
offt
); \

181 
lli
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
); \

182 
myobjc
 = 2; \

183 
myobjv
[0] = 
	`T_NewSgObj
((
s
), ()
	`
(s)); \

184 
myobjv
[1] = 
lli
; \

185 
thii
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
); \

186 
su
 = 
	`T_LiObjAdEmt
(

, 
s
, 
thii
); \

187 i(
su
 !
TCL_OK
) \

188 
r
; \

189 } 0)

	)

199 
	#MAKE_STAT_STRLIST
(
s
,
s1
) do { \

200 
su
 = 
	`_SLiEm
(

, 
s
, (
s
), 
	`
(s), \

201 (
s1
), 
	`
(s1)); \

202 i(
su
 !
TCL_OK
) \

203 
r
; \

204 } 0)

	)

210 
	#FLAG_CHECK
(
ag
) do { \

211 i((
ag
) != 0) { \

212 
	`T_SResu
(

, \

214 
TCL_STATIC
); \

215 
su
 = 
TCL_ERROR
; \

218 } 0)

	)

225 
	#FLAG_CHECK2
(
ag
, 
v
) do { \

226 i(((
ag
& ~(
v
)) != 0) { \

227 
	`T_SResu
(

, \

229 
TCL_STATIC
); \

230 
su
 = 
TCL_ERROR
; \

233 } 0)

	)

241 
	#IS_HELP
(
s
) \

242 (
	`rcmp
(
	`T_GSgFromObj
(
s
,
NULL
), "-?"=0? 
TCL_OK
 : 
TCL_ERROR


	)

244 #i
defed
(
__lulus
)

248 
	~"dbc_auto/t_ext.h
"

	@../dbinc/txn.h

9 #idef 
_DB_TXN_H_


10 
	#_DB_TXN_H_


	)

12 
	~"dbc/xa.h
"

14 #i
defed
(
__lulus
)

20 
TXN_CLOSE
,

21 
TXN_REMOVE
,

22 
TXN_TRADE
,

23 
TXN_TRADED


24 } 
	tTXN_EVENT_T
;

26 
__db_txegi
; __db_txegi 
	tDB_TXNREGION
;

27 
__txn_logc
; __txn_log
	tDB_TXNLOGREC
;

33 
	#TXN_MINIMUM
 0x80000000

	)

34 
	#TXN_MAXIMUM
 0xfffffff

	)

35 
	#TXN_INVALID
 0

	)

37 
	#DEF_MAX_TXNS
 100

	)

38 
	#TXN_NSLOTS
 4

	)

43 
	s__txn_da
 {

44 
u_t32_t
 
txnid
;

46 
pid_t
 
pid
;

47 
db_thadid_t
 
tid
;

49 
DB_LSN
 
ϡ_l
;

50 
DB_LSN
 
beg_l
;

51 
roff_t
 

;

52 
roff_t
 
me
;

54 
u_t32_t
 
og_dbs
;

55 
u_t32_t
 
og_s
;

56 
roff_t
 
log_dbs
;

58 
DB_LSN
 
ad_l
;

59 
DB_LSN
 
visib_l
;

61 
db_mux_t
 
mvcc_mtx
;

62 
u_t32_t
 
mvcc_f
;

65 
SH_TAILQ_HEAD
(
__tdkids

kids
;

66 
SH_TAILQ_ENTRY
 
klks
;

69 
u_t32_t
 
us
;

71 
	#TXN_DTL_COLLECTED
 0x1

	)

72 
	#TXN_DTL_RESTORED
 0x2

	)

73 
	#TXN_DTL_INMEMORY
 0x4

	)

74 
u_t32_t
 
ags
;

77 
SH_TAILQ_ENTRY
 
lks
;

79 
u_t32_t
 
xa_us
;

85 
u_t8_t
 
xid
[
XIDDATASIZE
];

86 
u_t32_t
 
bqu
;

87 
u_t32_t
 
gid
;

88 
t32_t
 
fm
;

89 
roff_t
 
s
[
TXN_NSLOTS
];

90 } 
	tTXN_DETAIL
;

96 
	s__db_txnmgr
 {

103 
db_mux_t
 
mux
;

105 
TAILQ_HEAD
(
_cha
, 
__db_txn

txn_cha
;

107 
u_t32_t
 
n_disrds
;

110 
DB_ENV
 *
dbv
;

111 
REGINFO
 
gfo
;

115 
	#TXN_SYSTEM_LOCK
(
dbv
) \

116 
	`MUTEX_LOCK
(
dbv
, ((
DB_TXNREGION
 *) \

117 (
dbv
)->
tx_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

118 
	#TXN_SYSTEM_UNLOCK
(
dbv
) \

119 
	`MUTEX_UNLOCK
(
dbv
, ((
DB_TXNREGION
 *) \

120 (
dbv
)->
tx_hd
->
gfo
.
imy
)->
mtx_gi
)

	)

126 
	s__db_txegi
 {

127 
db_mux_t
 
mtx_gi
;

129 
u_t32_t
 
maxtxns
;

130 
u_t32_t
 
ϡ_txnid
;

131 
u_t32_t
 
cur_maxid
;

133 
db_mux_t
 
mtx_ckp
;

134 
DB_LSN
 
ϡ_ckp
;

135 
time_t
 
time_ckp
;

137 
DB_TXN_STAT
 

;

139 
	#TXN_IN_RECOVERY
 0x01

	)

140 
u_t32_t
 
ags
;

142 
SH_TAILQ_HEAD
(
__aive

aive_txn
;

143 
SH_TAILQ_HEAD
(
__mvcc

mvcc_txn
;

150 
	s__txn_logc
 {

151 
STAILQ_ENTRY
(
__txn_logc

lks
;

153 
u_t8_t
 
da
[1];

224 
	#TXN_OK
 0

	)

225 
	#TXN_COMMIT
 1

	)

226 
	#TXN_PREPARE
 2

	)

227 
	#TXN_ABORT
 3

	)

228 
	#TXN_IGNORE
 4

	)

229 
	#TXN_EXPECTED
 5

	)

230 
	#TXN_UNEXPECTED
 6

	)

232 #i
defed
(
__lulus
)

236 
	~"dbc_auto/txn_auto.h
"

237 
	~"dbc_auto/txn_ext.h
"

238 
	~"dbc_auto/xa_ext.h
"

	@../dbinc/win_db.h

11 #ide
_CRT_SECURE_NO_DEPRECATE


12 
	#_CRT_SECURE_NO_DEPRECATE
 1

	)

18 #ifde
HAVE_REPLICATION_THREADS


19 
	#_WIN32_WINNT
 0x0400

	)

22 #ide
DB_WINCE


23 
	~<sys/tys.h
>

24 
	~<sys/.h
>

25 
	~<sys/timeb.h
>

27 
	~<de.h
>

28 
	~<f.h
>

29 
	~<io.h
>

30 
	~<lims.h
>

31 
	~<memy.h
>

32 
	~<oss.h
>

33 
	~<sigl.h
>

36 
	~<o.h
>

37 
	~<dio.h
>

38 
	~<dlib.h
>

39 
	~<tch.h
>

40 
	~<time.h
>

47 #ifde
DB_TCL_SUPPORT


48 
	~<t.h
>

51 
	#WIN32_LEAN_AND_MEAN


	)

52 
	~<wdows.h
>

53 
	~<wsock2.h
>

55 #ifde
HAVE_GETADDRINFO


60 
	~<ws2t.h
>

61 
	~<wpi.h
>

68 
	#fsync
 
_comm


	)

70 #ide
DB_WINCE


71 
	#gcwd
(
buf
, 
size

	`_gcwd
(buf, size)

	)

73 
	#gpid
 
GCutProssId


	)

74 
	#tf
 
_tf


	)

75 
	#rcmp
 
_ricmp


	)

76 
	#cmp
 
_icmp


	)

77 
	#vtf
 
_vtf


	)

79 
	#h_o
 
	`WSAGLaE
()

	)

88 #i
defed
(
__lulus
)

91 

gt
(, * const *, const *);

92 #i
defed
(
__lulus
)

103 #ide
__STDC__


104 
	#__STDC__
 1

	)

107 #ifde
_UNICODE


108 
	#TO_TSTRING
(
dbv
, 
s
, 
ts
, 
t
) do { \

109 
__n
 = ()
	`
(
s
) + 1; \

110 
ts
 = 
NULL
; \

111 i((
t
 = 
	`__os_mloc
((
dbv
), \

112 
__n
 * (
_TCHAR
), &(
ts
))) == 0 && \

113 
	`MuiByToWideCh
(
CP_UTF8
, 0, \

114 (
s
), -1, (
ts
), 
__n
) == 0) \

115 
t
 = 
	`__os_posix_r
(
	`__os_g_sy
()); \

116 } 0)

	)

118 
	#FROM_TSTRING
(
dbv
, 
ts
, 
s
, 
t
) { \

119 
__n
 = 
	`WideChToMuiBy
(
CP_UTF8
, 0, 
ts
, -1, \

120 
NULL
, 0, NULL, NULL); \

121 
s
 = 
NULL
; \

122 i((
t
 = 
	`__os_mloc
((
dbv
), 
__n
, &(
s
))) == 0 && \

123 
	`WideChToMuiBy
(
CP_UTF8
, 0, \

124 (
ts
), -1, (
s
), 
__n
, 
NULL
, NULL) == 0) \

125 
t
 = 
	`__os_posix_r
(
	`__os_g_sy
()); \

126 } 0)

	)

128 
	#FREE_STRING
(
dbv
, 
s
) do { \

129 i((
s
!
NULL
) { \

130 
	`__os_
((
dbv
), (
s
)); \

131 (
s

NULL
; \

133 } 0)

	)

136 
	#TO_TSTRING
(
dbv
, 
s
, 
ts
, 
t
ԑ0, (ts(
_TCHAR
 *)(s)

	)

137 
	#FROM_TSTRING
(
dbv
, 
ts
, 
s
, 
t
ԑ0, (s(*)s)

	)

138 
	#FREE_STRING
(
dbv
, 
ts
)

	)

141 #ide
INVALID_HANDLE_VALUE


142 
	#INVALID_HANDLE_VALUE
 ((
HANDLE
)-1)

	)

145 #ide
INVALID_FILE_ATTRIBUTES


146 
	#INVALID_FILE_ATTRIBUTES
 ((
DWORD
)-1)

	)

149 #ide
INVALID_SET_FILE_POINTER


150 
	#INVALID_SET_FILE_POINTER
 ((
DWORD
)-1)

	)

	@../dbinc/xa.h

13 #idef 
_DB_XA_H_


14 
	#_DB_XA_H_


	)

16 #i
defed
(
__lulus
)

23 
	#XIDDATASIZE
 128

	)

24 
	#MAXGTRIDSIZE
 64

	)

25 
	#MAXBQUALSIZE
 64

	)

27 
	sxid_t
 {

28 
fmID
;

29 
gid_ngth
;

30 
bqu_ngth
;

31 
da
[
XIDDATASIZE
];

33 
xid_t
 
	tXID
;

41 

ax_g
 
__P
((, 
XID
 *, ));

42 

ax_ueg
 
__P
((, ));

47 
	#RMNAMESZ
 32

	)

49 
	#MAXINFOSIZE
 256

	)

52 
	sxa_swch_t
 {

53 
	gme
[
RMNAMESZ
];

54 
	gags
;

55 
	gvsi
;

56 (*
	gxa_ݒ_y
)

57 
__P
((*, , ));

58 (*
	gxa_o_y
)

59 
__P
((*, , ));

60 (*
	gxa_t_y
)

61 
__P
((
XID
 *, , ));

62 (*
	gxa_d_y
)

63 
__P
((
XID
 *, , ));

64 (*
	gxa_rlback_y
)

65 
__P
((
XID
 *, , ));

66 (*
	gxa_e_y
)

67 
__P
((
XID
 *, , ));

68 (*
	gxa_comm_y
)

69 
__P
((
XID
 *, , ));

70 (*
	gxa_cov_y
)

71 
__P
((
XID
 *, , , ));

72 (*
	gxa_fg_y
)

73 
__P
((
XID
 *, , ));

74 (*
	gxa_come_y
)

75 
__P
((*, *, , ));

81 
	#TMNOFLAGS
 0x00000000L

	)

83 
	#TMREGISTER
 0x00000001L

	)

85 
	#TMNOMIGRATE
 0x00000002L

	)

87 
	#TMUSEASYNC
 0x00000004L

	)

93 
	#TMASYNC
 0x80000000L

	)

94 
	#TMONEPHASE
 0x40000000L

	)

96 
	#TMFAIL
 0x20000000L

	)

98 
	#TMNOWAIT
 0x10000000L

	)

100 
	#TMRESUME
 0x08000000L

	)

102 
	#TMSUCCESS
 0x04000000L

	)

104 
	#TMSUSPEND
 0x02000000L

	)

106 
	#TMSTARTRSCAN
 0x01000000L

	)

107 
	#TMENDRSCAN
 0x00800000L

	)

108 
	#TMMULTIPLE
 0x00400000L

	)

110 
	#TMJOIN
 0x00200000L

	)

112 
	#TMMIGRATE
 0x00100000L

	)

118 
	#TM_JOIN
 2

	)

120 
	#TM_RESUME
 1

	)

122 
	#TM_OK
 0

	)

123 
	#TMER_TMERR
 -1

	)

125 
	#TMER_INVAL
 -2

	)

126 
	#TMER_PROTO
 -3

	)

132 
	#XA_RBBASE
 100

	)

134 
	#XA_RBROLLBACK
 
XA_RBBASE


	)

136 
	#XA_RBCOMMFAIL
 
XA_RBBASE
+1

	)

138 
	#XA_RBDEADLOCK
 
XA_RBBASE
+2

	)

139 
	#XA_RBINTEGRITY
 
XA_RBBASE
+3

	)

142 
	#XA_RBOTHER
 
XA_RBBASE
+4

	)

145 
	#XA_RBPROTO
 
XA_RBBASE
+5

	)

147 
	#XA_RBTIMEOUT
 
XA_RBBASE
+6

	)

148 
	#XA_RBTRANSIENT
 
XA_RBBASE
+7

	)

149 
	#XA_RBEND
 
XA_RBTRANSIENT


	)

151 
	#XA_NOMIGRATE
 9

	)

153 
	#XA_HEURHAZ
 8

	)

155 
	#XA_HEURCOM
 7

	)

157 
	#XA_HEURRB
 6

	)

159 
	#XA_HEURMIX
 5

	)

162 
	#XA_RETRY
 4

	)

164 
	#XA_RDONLY
 3

	)

166 
	#XA_OK
 0

	)

167 
	#XAER_ASYNC
 -2

	)

169 
	#XAER_RMERR
 -3

	)

171 
	#XAER_NOTA
 -4

	)

172 
	#XAER_INVAL
 -5

	)

173 
	#XAER_PROTO
 -6

	)

175 
	#XAER_RMFAIL
 -7

	)

176 
	#XAER_DUPID
 -8

	)

177 
	#XAER_OUTSIDE
 -9

	)

180 #i
defed
(
__lulus
)

	@../dbinc_auto/btree_auto.h

3 #idef 
__bam_AUTO_H


4 
	#__bam_AUTO_H


	)

5 
	#DB___bam_l
 62

	)

6 
	s___bam_l_gs
 {

7 
u_t32_t
 
	mty
;

8 
DB_TXN
 *
	mtx
;

9 
DB_LSN
 
	mev_l
;

10 
t32_t
 
	mfeid
;

11 
db_pgno_t
 
	m
;

12 
DB_LSN
 
	m΢
;

13 
db_pgno_t
 
	mright
;

14 
DB_LSN
 
	m
;

15 
u_t32_t
 
	mdx
;

16 
db_pgno_t
 
	mgno
;

17 
DB_LSN
 
	mƢ
;

18 
db_pgno_t
 
	mro_pgno
;

19 
DBT
 
	mpg
;

20 
u_t32_t
 
	mags
;

21 } 
	t__bam_l_gs
;

23 
	#DB___bam_rl
 63

	)

24 
	s___bam_rl_gs
 {

25 
u_t32_t
 
	mty
;

26 
DB_TXN
 *
	mtx
;

27 
DB_LSN
 
	mev_l
;

28 
t32_t
 
	mfeid
;

29 
db_pgno_t
 
	mpgno
;

30 
DBT
 
	mpgdbt
;

31 
db_pgno_t
 
	mro_pgno
;

32 
db_pgno_t
 
	mec
;

33 
DBT
 
	mroْt
;

34 
DB_LSN
 
	mrol
;

35 } 
	t__bam_rl_gs
;

37 
	#DB___bam_adj
 55

	)

38 
	s___bam_adj_gs
 {

39 
u_t32_t
 
	mty
;

40 
DB_TXN
 *
	mtx
;

41 
DB_LSN
 
	mev_l
;

42 
t32_t
 
	mfeid
;

43 
db_pgno_t
 
	mpgno
;

44 
DB_LSN
 
	ml
;

45 
u_t32_t
 
	mdx
;

46 
u_t32_t
 
	mdx_cy
;

47 
u_t32_t
 
	mis_
;

48 } 
	t__bam_adj_gs
;

50 
	#DB___bam_dju
 56

	)

51 
	s___bam_dju_gs
 {

52 
u_t32_t
 
	mty
;

53 
DB_TXN
 *
	mtx
;

54 
DB_LSN
 
	mev_l
;

55 
t32_t
 
	mfeid
;

56 
db_pgno_t
 
	mpgno
;

57 
DB_LSN
 
	ml
;

58 
u_t32_t
 
	mdx
;

59 
t32_t
 
	madju
;

60 
u_t32_t
 
	mags
;

61 } 
	t__bam_dju_gs
;

63 
	#DB___bam_cd
 57

	)

64 
	s___bam_cd_gs
 {

65 
u_t32_t
 
	mty
;

66 
DB_TXN
 *
	mtx
;

67 
DB_LSN
 
	mev_l
;

68 
t32_t
 
	mfeid
;

69 
db_pgno_t
 
	mpgno
;

70 
DB_LSN
 
	ml
;

71 
u_t32_t
 
	mdx
;

72 } 
	t__bam_cd_gs
;

74 
	#DB___bam_
 58

	)

75 
	s___bam__gs
 {

76 
u_t32_t
 
	mty
;

77 
DB_TXN
 *
	mtx
;

78 
DB_LSN
 
	mev_l
;

79 
t32_t
 
	mfeid
;

80 
db_pgno_t
 
	mpgno
;

81 
DB_LSN
 
	ml
;

82 
u_t32_t
 
	mdx
;

83 
u_t32_t
 
	misded
;

84 
DBT
 
	mig
;

85 
DBT
 
	m
;

86 
u_t32_t
 
	mefix
;

87 
u_t32_t
 
	msuffix
;

88 } 
	t__bam__gs
;

90 
	#DB___bam_ro
 59

	)

91 
	s___bam_ro_gs
 {

92 
u_t32_t
 
	mty
;

93 
DB_TXN
 *
	mtx
;

94 
DB_LSN
 
	mev_l
;

95 
t32_t
 
	mfeid
;

96 
db_pgno_t
 
	mma_pgno
;

97 
db_pgno_t
 
	mro_pgno
;

98 
DB_LSN
 
	mma_l
;

99 } 
	t__bam_ro_gs
;

101 
	#DB___bam_cudj
 64

	)

102 
	s___bam_cudj_gs
 {

103 
u_t32_t
 
	mty
;

104 
DB_TXN
 *
	mtx
;

105 
DB_LSN
 
	mev_l
;

106 
t32_t
 
	mfeid
;

107 
db__mode
 
	mmode
;

108 
db_pgno_t
 
	mom_pgno
;

109 
db_pgno_t
 
	mto_pgno
;

110 
db_pgno_t
 
	m_pgno
;

111 
u_t32_t
 
	mf_dx
;

112 
u_t32_t
 
	mom_dx
;

113 
u_t32_t
 
	mto_dx
;

114 } 
	t__bam_cudj_gs
;

116 
	#DB___bam_rcudj
 65

	)

117 
	s___bam_rcudj_gs
 {

118 
u_t32_t
 
	mty
;

119 
DB_TXN
 *
	mtx
;

120 
DB_LSN
 
	mev_l
;

121 
t32_t
 
	mfeid
;

122 
_o_g
 
	mmode
;

123 
db_pgno_t
 
	mro
;

124 
db_o_t
 
	mo
;

125 
u_t32_t
 
	md
;

126 } 
	t__bam_rcudj_gs
;

128 
	#DB___bam_lk_43
 147

	)

129 
	s___bam_lk_43_gs
 {

130 
u_t32_t
 
	mty
;

131 
DB_TXN
 *
	mtx
;

132 
DB_LSN
 
	mev_l
;

133 
t32_t
 
	mfeid
;

134 
db_pgno_t
 
	mpgno
;

135 
DB_LSN
 
	ml
;

136 
db_pgno_t
 
	mev
;

137 
DB_LSN
 
	ml_ev
;

138 
db_pgno_t
 
	mxt
;

139 
DB_LSN
 
	ml_xt
;

140 } 
	t__bam_lk_43_gs
;

142 
	#DB___bam_lk
 147

	)

143 
	s___bam_lk_gs
 {

144 
u_t32_t
 
	mty
;

145 
DB_TXN
 *
	mtx
;

146 
DB_LSN
 
	mev_l
;

147 
t32_t
 
	mfeid
;

148 
db_pgno_t
 
	mpgno
;

149 
db_pgno_t
 
	mw_pgno
;

150 
db_pgno_t
 
	mev
;

151 
DB_LSN
 
	ml_ev
;

152 
db_pgno_t
 
	mxt
;

153 
DB_LSN
 
	ml_xt
;

154 } 
	t__bam_lk_gs
;

156 
	#DB___bam_mge
 148

	)

157 
	s___bam_mge_gs
 {

158 
u_t32_t
 
	mty
;

159 
DB_TXN
 *
	mtx
;

160 
DB_LSN
 
	mev_l
;

161 
t32_t
 
	mfeid
;

162 
db_pgno_t
 
	mpgno
;

163 
DB_LSN
 
	ml
;

164 
db_pgno_t
 
	mgno
;

165 
DB_LSN
 
	mƢ
;

166 
DBT
 
	mhdr
;

167 
DBT
 
	mda
;

168 
DBT
 
	md
;

169 } 
	t__bam_mge_gs
;

171 
	#DB___bam_pgno
 149

	)

172 
	s___bam_pgno_gs
 {

173 
u_t32_t
 
	mty
;

174 
DB_TXN
 *
	mtx
;

175 
DB_LSN
 
	mev_l
;

176 
t32_t
 
	mfeid
;

177 
db_pgno_t
 
	mpgno
;

178 
DB_LSN
 
	ml
;

179 
u_t32_t
 
	mdx
;

180 
db_pgno_t
 
	mgno
;

181 
db_pgno_t
 
	mgno
;

182 } 
	t__bam_pgno_gs
;

	@../dbinc_auto/btree_ext.h

2 #idef 
_b_ext_h_


3 
	#_b_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__bam_com
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
DB_COMPACT
 *, 
u_t32_t
, DBT *));

10 
__bam_cmp
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ 
DBT
 *, 
PAGE
 *, 
u_t32_t
, (*)(DB *, const DBT *, const DBT *), *));

11 
__bam_defcmp
 
__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

12 
size_t
 
__bam_defx
 
__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

13 
__bam_pg
 
__P
((
DB_ENV
 *, 
DB
 *, 
db_pgno_t
, *, 
DBT
 *));

14 
__bam_pgout
 
__P
((
DB_ENV
 *, 
DB
 *, 
db_pgno_t
, *, 
DBT
 *));

15 
__bam_msw
 
__P
((
PAGE
 *));

16 
__bam__de
 
__P
((
DB
 *, 
db_pgno_t
, 
u_t32_t
, , *));

17 
__m__de
 
__P
((
DB
 *, 
db_pgno_t
, *));

18 
__bam__di
 
__P
((
DBC
 *, 
db_pgno_t
, 
u_t32_t
, ));

19 
__bam__dup
 
__P
((
DBC
 *, 
u_t32_t
, 
db_pgno_t
, u_int32_t, db_pgno_t, u_int32_t));

20 
__bam__undodup
 
__P
((
DB
 *, 
u_t32_t
, 
db_pgno_t
, u_int32_t, u_int32_t));

21 
__bam__rl
 
__P
((
DBC
 *, 
db_pgno_t
, db_pgno_t));

22 
__bam__l
 
__P
((
DBC
 *, 
db_pgno_t
, db_pgno_t, db_pgno_t, 
u_t32_t
, ));

23 
__bam__undol
 
__P
((
DB
 *, 
db_pgno_t
, db_pgno_t, db_pgno_t, 
u_t32_t
));

24 
__bamc_
 
__P
((
DBC
 *, 
DBTYPE
));

25 
__bamc_esh
 
__P
((
DBC
 *));

26 
__bamc_cou
 
__P
((
DBC
 *, 
db_o_t
 *));

27 
__bamc_dup
 
__P
((
DBC
 *, DBC *));

28 
__bam_bulk_ovow
 
__P
((
DBC
 *, 
u_t32_t
, 
db_pgno_t
, 
u_t8_t
 *));

29 
__bam_bulk_duis
 
__P
((
DBC
 *, 
db_pgno_t
, 
u_t8_t
 *, 
t32_t
 *, i32_**, u_t8_**, 
u_t32_t
 *, ));

30 
__bamc_rg
 
__P
((
DBC
 *, 
DBT
 *));

31 
__bam_d_exis
 
__P
((
DBC
 *, 
db_pgno_t
));

32 
__bam_dem
 
__P
((
DBC
 *, 
PAGE
 *, 
u_t32_t
));

33 
__bam_adjdx
 
__P
((
DBC
 *, 
PAGE
 *, 
u_t32_t
, u_int32_t, ));

34 
__bam_dges
 
__P
((
DBC
 *, , ));

35 
__bam_lk
 
__P
((
DBC
 *, 
PAGE
 *, 
db_pgno_t
));

36 
__bam_pupde
 
__P
((
DBC
 *, 
PAGE
 *));

37 
__bam_db_
 
__P
((
DB
 *));

38 
__bam_db_o
 
__P
((
DB
 *));

39 
__bam_m_ags
 
__P
((
DB
 *, 
u_t32_t
 *, u_int32_t *));

40 
__bam_t_ags
 
__P
((
DB
 *, 
u_t32_t
 *
ag
));

41 
__bam_t_bt_com
 
__P
((
DB
 *, (*)(DB *, cڡ 
DBT
 *, const DBT *)));

42 
__bam_g_bt_mkey
 
__P
((
DB
 *, 
u_t32_t
 *));

43 
__m_m_ags
 
__P
((
DB
 *, 
u_t32_t
 *, u_int32_t *));

44 
__m_t_ags
 
__P
((
DB
 *, 
u_t32_t
 *
ag
));

45 
__m_g__n
 
__P
((
DB
 *, 
u_t32_t
 *));

46 
__m_g__d
 
__P
((
DB
 *, *));

47 
__bam_ݒ
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, 
db_pgno_t
, 
u_t32_t
));

48 
__bam_machk
 
__P
((
DB
 *, cڡ *, 
BTMETA
 *));

49 
__bam_ad_ro
 
__P
((
DB
 *, 
DB_TXN
 *, 
db_pgno_t
, 
u_t32_t
));

50 
__bam_w_fe
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_FH
 *, const *));

51 
__bam_w_subdb
 
__P
((
DB
 *, DB *, 
DB_TXN
 *));

52 
__bam_iem
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, u_int32_t));

53 
__bam_rem
 
__P
((
DBC
 *, 
PAGE
 *, 
u_t32_t
, 
DBT
 *));

54 
__bam_l_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

55 
__bam_rl_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

56 
__bam_adj_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

57 
__bam_dju_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

58 
__bam_cd_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

59 
__bam__cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

60 
__bam_ro_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

61 
__bam_cudj_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

62 
__bam_rcudj_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

63 
__bam_lk_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

64 
__bam_mge_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

65 
__bam_pgno_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

66 
__bam_lk_43_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

67 
__bam_aim
 
__P
((
DB
 *, 
DB_TXN
 *));

68 
__bam_un
 
__P
((
DBC
 *, 
u_t32_t
 *));

69 
__m_ݒ
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, 
db_pgno_t
, 
u_t32_t
));

70 
__m_nd
 
__P
((
DBC
 *, 
DBT
 *, DBT *));

71 
__mc_d
 
__P
((
DBC
 *));

72 
__mc_g
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

73 
__mc_put
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

74 
__m_
 
__P
((
DBC
 *, 
_o_g
, *));

75 
__m_gno
 
__P
((
DBC
 *, cڡ 
DBT
 *, 
db_o_t
 *, ));

76 
__m_wreback
 
__P
((
DB
 *));

77 
__bam_rch
 
__P
((
DBC
 *, 
db_o_t
 *, 
u_t32_t
, , *));

78 
__bam_adju
 
__P
((
DBC
 *, 
t32_t
));

79 
__bam_ecs
 
__P
((
DBC
 *, 
db_o_t
 *));

80 
db_o_t
 
__bam_tٮ
 
__P
((
DB
 *, 
PAGE
 *));

81 
__bam_g_ro
 
__P
((
DBC
 *, 
db_pgno_t
, , 
u_t32_t
, *));

82 
__bam_ch
 
__P
((
DBC
 *, 
db_pgno_t
, cڡ 
DBT
 *, 
u_t32_t
, , 
db_o_t
 *, *));

83 
__bam_kl
 
__P
((
DBC
 *, 
u_t32_t
));

84 
__bam_kgrow
 
__P
((
DB_ENV
 *, 
BTREE_CURSOR
 *));

85 
__bam_l
 
__P
((
DBC
 *, *, 
db_pgno_t
 *));

86 
__bam_p
 
__P
((
DBC
 *, 
EPG
 *, 
u_t32_t
, 
PAGE
 *, PAGE *, ));

87 
__bam_cy
 
__P
((
DB
 *, 
PAGE
 *, PAGE *, 
u_t32_t
, u_int32_t));

88 
__bam_
 
__P
((
DBC
 *, *, 
u_t32_t
));

89 
__bam__t
 
__P
((
DBC
 *, 
u_t32_t
));

90 
__bam__back
 
__P
((
DB
 *, 
PAGE
 *, *, *));

91 
__bam_t_curs
 
__P
((
DBC
 *));

92 
__bam_key_nge
 
__P
((
DBC
 *, 
DBT
 *, 
DB_KEY_RANGE
 *, 
u_t32_t
));

93 
__bam_av
 
__P
((
DBC
 *, 
db_lockmode_t
, 
db_pgno_t
, (*)(
DB
 *, 
PAGE
 *, *, *), *));

94 
__bam_30_bma
 
__P
((
DB
 *, *, 
u_t8_t
 *));

95 
__bam_31_bma
 
__P
((
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *));

96 
__bam_31_lb
 
__P
((
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *));

97 
__bam_vrfy_ma
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
BTMETA
 *, 
db_pgno_t
, 
u_t32_t
));

98 
__m_vrfy_af
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
, 
u_t32_t
));

99 
__bam_vrfy
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
, 
u_t32_t
));

100 
__bam_vrfy_emd
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
, 
u_t32_t
, , , u_int32_t));

101 
__bam_vrfy_ruu
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
u_t32_t
));

102 
__bam_vrfy_sub
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, *, *, 
u_t32_t
, u_int32_t *, u_int32_t *, u_int32_t *));

103 
__bam_lvage
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
u_t32_t
, 
PAGE
 *, *, (*)(*, cڡ *), 
DBT
 *, u_int32_t));

104 
__bam_lvage_wkdupt
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
DBT
 *, *, (*)(*, cڡ *), 
u_t32_t
));

105 
__bam_ma2pgt
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
BTMETA
 *, 
u_t32_t
, DB *));

106 
__bam_l_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, db_pgno_t, DB_LSN *, u_t32_t, db_pgno_t, DB_LSN *, db_pgno_t, cڡ 
DBT
 *, u_int32_t));

107 
__bam_l_ad
 
__P
((
DB_ENV
 *, *, 
__bam_l_gs
 **));

108 
__bam_rl_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, cڡ 
DBT
 *, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *));

109 
__bam_rl_ad
 
__P
((
DB_ENV
 *, *, 
__bam_rl_gs
 **));

110 
__bam_adj_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, u_int32_t, u_int32_t, u_int32_t));

111 
__bam_adj_ad
 
__P
((
DB_ENV
 *, *, 
__bam_adj_gs
 **));

112 
__bam_dju_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, u_t32_t, 
t32_t
, u_int32_t));

113 
__bam_dju_ad
 
__P
((
DB_ENV
 *, *, 
__bam_dju_gs
 **));

114 
__bam_cd_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, u_int32_t));

115 
__bam_cd_ad
 
__P
((
DB_ENV
 *, *, 
__bam_cd_gs
 **));

116 
__bam__log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, u_t32_t, u_t32_t, cڡ 
DBT
 *, const DBT *, u_int32_t, u_int32_t));

117 
__bam__ad
 
__P
((
DB_ENV
 *, *, 
__bam__gs
 **));

118 
__bam_ro_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, db_pgno_t, DB_LSN *));

119 
__bam_ro_ad
 
__P
((
DB_ENV
 *, *, 
__bam_ro_gs
 **));

120 
__bam_cudj_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db__mode
, 
db_pgno_t
, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t));

121 
__bam_cudj_ad
 
__P
((
DB_ENV
 *, *, 
__bam_cudj_gs
 **));

122 
__bam_rcudj_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
_o_g
, 
db_pgno_t
, 
db_o_t
, u_int32_t));

123 
__bam_rcudj_ad
 
__P
((
DB_ENV
 *, *, 
__bam_rcudj_gs
 **));

124 
__bam_lk_43_ad
 
__P
((
DB_ENV
 *, *, 
__bam_lk_43_gs
 **));

125 
__bam_lk_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, db_pgno_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));

126 
__bam_lk_ad
 
__P
((
DB_ENV
 *, *, 
__bam_lk_gs
 **));

127 
__bam_mge_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, db_pgno_t, DB_LSN *, cڡ 
DBT
 *, const DBT *, const DBT *));

128 
__bam_mge_ad
 
__P
((
DB_ENV
 *, *, 
__bam_mge_gs
 **));

129 
__bam_pgno_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, u_int32_t, db_pgno_t, db_pgno_t));

130 
__bam_pgno_ad
 
__P
((
DB_ENV
 *, *, 
__bam_pgno_gs
 **));

131 
__bam__cov
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

132 
__bam_l_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

133 
__bam_rl_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

134 
__bam_adj_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

135 
__bam_dju_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

136 
__bam_cd_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

137 
__bam__t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

138 
__bam_ro_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

139 
__bam_cudj_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

140 
__bam_rcudj_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

141 
__bam_lk_43_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

142 
__bam_lk_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

143 
__bam_mge_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

144 
__bam_pgno_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

145 
__bam__t
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

147 #i
defed
(
__lulus
)

	@../dbinc_auto/clib_ext.h

2 #idef 
_ib_ext_h_


3 
	#_ib_ext_h_


	)

5 #i
defed
(
__lulus
)

9 #ide
HAVE_ATOI


10 
oi
 
__P
((const *));

12 #ide
HAVE_ATOL


13 

 
__P
((const *));

15 *
__db_ime
 
__P
((cڡ 
time_t
 *, *));

16 #i
defed
(
HAVE_REPLICATION_THREADS
)

17 
__db_gaddrfo
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, cڡ *, cڡ 
ADDRINFO
 *, ADDRINFO **));

19 #i
defed
(
HAVE_REPLICATION_THREADS
)

20 
__db_addrfo
 
__P
((
DB_ENV
 *, 
ADDRINFO
 *));

22 #ide
HAVE_GETCWD


23 *
gcwd
 
__P
((*, 
size_t
));

25 #ide
HAVE_GETOPT


26 
gt
 
__P
((, * const *, const *));

28 #ide
HAVE_ISALPHA


29 
iha
 
__P
(());

31 #ide
HAVE_ISDIGIT


32 
isdig
 
__P
(());

34 #ide
HAVE_ISPRINT


35 
irt
 
__P
(());

37 #ide
HAVE_ISSPACE


38 
isa
 
__P
(());

40 #ide
HAVE_MEMCMP


41 
memcmp
 
__P
((cڡ *, cڡ *, 
size_t
));

43 #ide
HAVE_MEMCPY


44 *
memy
 
__P
((*, cڡ *, 
size_t
));

46 #ide
HAVE_MEMMOVE


47 *
memmove
 
__P
((*, cڡ *, 
size_t
));

49 #ide
HAVE_PRINTF


50 
tf
 
__P
((const *, ...));

52 #ide
HAVE_PRINTF


53 
rtf
 
__P
((
FILE
 *, const *, ...));

55 #ide
HAVE_PRINTF


56 
vrtf
 
__P
((
FILE
 *, cڡ *, 
va_li
));

58 #ide
HAVE_QSORT


59 
qst
 
__P
((*, 
size_t
, size_t, (*)(const *, const *)));

61 #ide
HAVE_RAISE


62 
i
 
__P
(());

64 #ide
HAVE_RAND


65 
nd
 
__P
(());

66 
d
 
__P
(());

68 #ide
HAVE_SNPRINTF


69 
tf
 
__P
((*, 
size_t
, const *, ...));

71 #ide
HAVE_VSNPRINTF


72 
vtf
 
__P
((*, 
size_t
, cڡ *, 
va_li
));

74 #ide
HAVE_STRCASECMP


75 
rcmp
 
__P
((const *, const *));

77 #ide
HAVE_STRCASECMP


78 
cmp
 
__P
((cڡ *, cڡ *, 
size_t
));

80 #ide
HAVE_STRCAT


81 *
rt
 
__P
((*, const *));

83 #ide
HAVE_STRCHR


84 *
rchr
 
__P
((const *, ));

86 #ide
HAVE_STRDUP


87 *
rdup
 
__P
((const *));

89 #ide
HAVE_STRERROR


90 *

 
__P
(());

92 #ide
HAVE_STRNCAT


93 *
t
 
__P
((*, cڡ *, 
size_t
));

95 #ide
HAVE_STRNCMP


96 
cmp
 
__P
((cڡ *, cڡ *, 
size_t
));

98 #ide
HAVE_STRRCHR


99 *
chr
 
__P
((const *, ));

101 #ide
HAVE_STRSEP


102 *
rp
 
__P
((**, const *));

104 #ide
HAVE_STRTOL


105 

 
__P
((const *, **, ));

107 #ide
HAVE_STRTOUL


108 
oul
 
__P
((const *, **, ));

111 #i
defed
(
__lulus
)

	@../dbinc_auto/common_ext.h

2 #idef 
_comm_ext_h_


3 
	#_comm_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__yo_gi_
 
__P
((
DB_ENV
 *));

10 
__db_isbigdn
 
__P
(());

11 
__db_byd
 
__P
((
DB_ENV
 *, ));

12 
__db_fchk
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, u_int32_t));

13 
__db_fcchk
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, u_int32_t, u_int32_t));

14 
__db_
 
__P
((cڡ 
DB_ENV
 *, const *, ));

15 
__db_l
 
__P
((cڡ 
DB_ENV
 *, const *));

16 
__db_pgr
 
__P
((
DB
 *, 
db_pgno_t
, ));

17 
__db_pgfmt
 
__P
((
DB_ENV
 *, 
db_pgno_t
));

18 #ifde
DIAGNOSTIC


19 
__db_as
 
__P
((
DB_ENV
 *, const *, const *, ));

21 
__db_nic_msg
 
__P
((
DB_ENV
 *));

22 
__db_nic
 
__P
((
DB_ENV
 *, ));

23 *
__db_unknown_r
 
__P
(());

24 
__db_sy
 
__P
((cڡ 
DB_ENV
 *, , cڡ *, ...)
__ibu__
 ((
__fm__
 (
__tf__
, 3, 4)));

25 
__db_r
 
__P
((cڡ 
DB_ENV
 *, , cڡ *, ...)
__ibu__
 ((
__fm__
 (
__tf__
, 3, 4)));

26 
__db_rx
 
__P
((cڡ 
DB_ENV
 *, cڡ *, ...)
__ibu__
 ((
__fm__
 (
__tf__
, 2, 3)));

27 
__db_r
 
__P
((cڡ 
DB_ENV
 *, , 
db_r_t_t
, cڡ *, 
va_li
));

28 
__db_rfe
 
__P
((cڡ 
DB_ENV
 *, , 
db_r_t_t
, cڡ *, 
va_li
));

29 
__db_msgadd
 
__P
((
DB_ENV
 *, 
DB_MSGBUF
 *, cڡ *, ...)
__ibu__
 ((
__fm__
 (
__tf__
, 3, 4)));

30 
__db_msgadd_
 
__P
((
DB_ENV
 *, 
DB_MSGBUF
 *, cڡ *, 
va_li
));

31 
__db_msg
 
__P
((cڡ 
DB_ENV
 *, cڡ *, ...)
__ibu__
 ((
__fm__
 (
__tf__
, 2, 3)));

32 
__db_unknown_ag
 
__P
((
DB_ENV
 *, *, 
u_t32_t
));

33 
__db_unknown_ty
 
__P
((
DB_ENV
 *, *, 
DBTYPE
));

34 
__db_unknown_th
 
__P
((
DB_ENV
 *, *));

35 
__db_check_txn
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LOCKER
 *, ));

36 
__db_txn_ddlock_r
 
__P
((
DB_ENV
 *, 
DB_TXN
 *));

37 
__db_n_txn_v
 
__P
((
DB_ENV
 *));

38 
__db_c_toobig
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

39 
__db_c_
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

40 
__dbc_loggg
 
__P
((
DBC
 *));

41 
__db_check_l
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, DB_LSN *));

42 
__db_rdly
 
__P
((cڡ 
DB_ENV
 *, const *));

43 
__db_a_r
 
__P
((cڡ 
DB
 *));

44 
__db_ed
 
__P
((cڡ 
DB_ENV
 *, cڡ *, 
pid_t
, 
db_thadid_t
));

45 
__db_glg
 
__P
((
DB_ENV
 *, const *, *, , , *));

46 
__db_gulg
 
__P
((
DB_ENV
 *, cڡ *, *, 
u_lg
, u_long, u_long *));

47 
__db_ida
 
__P
((
u_t32_t
 *, , u_int32_t *, u_int32_t *));

48 
u_t32_t
 
__db_log2
 
__P
((u_int32_t));

49 
u_t32_t
 
__db_bsize
 
__P
((u_int32_t));

50 
__db_hash
 
__P
((*, 
u_t32_t
));

51 
__db_mkth
 
__P
((
DB_ENV
 *, const *));

52 
__db_ut_g
 
__P
((*, *, *, ***));

53 
__db_ut_che
 
__P
((
DB
 *, 
u_t32_t
 *, *));

54 
__db_ut_logt
 
__P
((const *, *));

55 
__db_ut_sig
 
__P
(());

56 
__db_ut_ued
 
__P
(());

57 
__db_ut_signd
 
__P
(());

59 #i
defed
(
__lulus
)

	@../dbinc_auto/crdel_auto.h

3 #idef 
__d_AUTO_H


4 
	#__d_AUTO_H


	)

5 
	#DB___d_masub
 142

	)

6 
	s___d_masub_gs
 {

7 
u_t32_t
 
	mty
;

8 
DB_TXN
 *
	mtx
;

9 
DB_LSN
 
	mev_l
;

10 
t32_t
 
	mfeid
;

11 
db_pgno_t
 
	mpgno
;

12 
DBT
 
	mge
;

13 
DB_LSN
 
	ml
;

14 } 
	t__d_masub_gs
;

16 
	#DB___d_mem_
 138

	)

17 
	s___d_mem__gs
 {

18 
u_t32_t
 
	mty
;

19 
DB_TXN
 *
	mtx
;

20 
DB_LSN
 
	mev_l
;

21 
t32_t
 
	mfeid
;

22 
DBT
 
	mme
;

23 
DBT
 
	mfid
;

24 
u_t32_t
 
	mpgsize
;

25 } 
	t__d_mem__gs
;

27 
	#DB___d_mem_me
 139

	)

28 
	s___d_mem_me_gs
 {

29 
u_t32_t
 
	mty
;

30 
DB_TXN
 *
	mtx
;

31 
DB_LSN
 
	mev_l
;

32 
DBT
 
	mdme
;

33 
DBT
 
	mwme
;

34 
DBT
 
	mfid
;

35 } 
	t__d_mem_me_gs
;

37 
	#DB___d_mem_move
 140

	)

38 
	s___d_mem_move_gs
 {

39 
u_t32_t
 
	mty
;

40 
DB_TXN
 *
	mtx
;

41 
DB_LSN
 
	mev_l
;

42 
DBT
 
	mme
;

43 
DBT
 
	mfid
;

44 } 
	t__d_mem_move_gs
;

	@../dbinc_auto/crypto_ext.h

2 #idef 
_yo_ext_h_


3 
	#_yo_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__s_tup
 
__P
((
DB_ENV
 *, 
DB_CIPHER
 *));

10 
u_t
 
__s_adj_size
 
__P
((
size_t
));

11 
__s_o
 
__P
((
DB_ENV
 *, *));

12 
__s_dey
 
__P
((
DB_ENV
 *, *, *, 
u_t8_t
 *, 
size_t
));

13 
__s_y
 
__P
((
DB_ENV
 *, *, *, 
u_t8_t
 *, 
size_t
));

14 
__s_
 
__P
((
DB_ENV
 *, 
DB_CIPHER
 *));

15 
__yo_v_o
 
__P
((
DB_ENV
 *));

16 
__yo_v_esh
 
__P
((
DB_ENV
 *));

17 
__yo_gtup
 
__P
((
DB_ENV
 *, 
DB_CIPHER
 *, 
u_t32_t
, ));

18 
__yo_dey_ma
 
__P
((
DB_ENV
 *, 
DB
 *, 
u_t8_t
 *, ));

19 
__yo_t_sswd
 
__P
((
DB_ENV
 *, DB_ENV *));

20 
__db_ge_iv
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

21 
__db_rijndlKeySupEnc
 
__P
((
u32
 *, cڡ 
u8
 *, ));

22 
__db_rijndlKeySupDec
 
__P
((
u32
 *, cڡ 
u8
 *, ));

23 
__db_rijndlEny
 
__P
((
u32
 *, , cڡ 
u8
 *, u8 *));

24 
__db_rijndlDey
 
__P
((
u32
 *, , cڡ 
u8
 *, u8 *));

25 
__db_rijndlEnyRound
 
__P
((cڡ 
u32
 *, , 
u8
 *, ));

26 
__db_rijndlDeyRound
 
__P
((cڡ 
u32
 *, , 
u8
 *, ));

27 
__db_makeKey
 
__P
((
keyIn
 *, , , *));

28 
__db_chIn
 
__P
((
chIn
 *, , *));

29 
__db_blockEny
 
__P
((
chIn
 *, 
keyIn
 *, 
u_t8_t
 *, 
size_t
, u_int8_t *));

30 
__db_dEny
 
__P
((
chIn
 *, 
keyIn
 *, 
u_t8_t
 *, , u_int8_t *));

31 
__db_blockDey
 
__P
((
chIn
 *, 
keyIn
 *, 
u_t8_t
 *, 
size_t
, u_int8_t *));

32 
__db_dDey
 
__P
((
chIn
 *, 
keyIn
 *, 
u_t8_t
 *, , u_int8_t *));

33 
__db_chUpdeRounds
 
__P
((
chIn
 *, 
keyIn
 *, 
u_t8_t
 *, , u_int8_t *, ));

35 #i
defed
(
__lulus
)

	@../dbinc_auto/db_auto.h

3 #idef 
__db_AUTO_H


4 
	#__db_AUTO_H


	)

5 
	#DB___db_addm
 41

	)

6 
	s___db_addm_gs
 {

7 
u_t32_t
 
	mty
;

8 
DB_TXN
 *
	mtx
;

9 
DB_LSN
 
	mev_l
;

10 
u_t32_t
 
	mcode
;

11 
t32_t
 
	mfeid
;

12 
db_pgno_t
 
	mpgno
;

13 
u_t32_t
 
	mdx
;

14 
u_t32_t
 
	mnbys
;

15 
DBT
 
	mhdr
;

16 
DBT
 
	mdbt
;

17 
DB_LSN
 
	mg
;

18 } 
	t__db_addm_gs
;

20 
	#DB___db_big
 43

	)

21 
	s___db_big_gs
 {

22 
u_t32_t
 
	mty
;

23 
DB_TXN
 *
	mtx
;

24 
DB_LSN
 
	mev_l
;

25 
u_t32_t
 
	mcode
;

26 
t32_t
 
	mfeid
;

27 
db_pgno_t
 
	mpgno
;

28 
db_pgno_t
 
	mev_pgno
;

29 
db_pgno_t
 
	mxt_pgno
;

30 
DBT
 
	mdbt
;

31 
DB_LSN
 
	mg
;

32 
DB_LSN
 
	mevl
;

33 
DB_LSN
 
	mx
;

34 } 
	t__db_big_gs
;

36 
	#DB___db_ovf
 44

	)

37 
	s___db_ovf_gs
 {

38 
u_t32_t
 
	mty
;

39 
DB_TXN
 *
	mtx
;

40 
DB_LSN
 
	mev_l
;

41 
t32_t
 
	mfeid
;

42 
db_pgno_t
 
	mpgno
;

43 
t32_t
 
	madju
;

44 
DB_LSN
 
	ml
;

45 } 
	t__db_ovf_gs
;

47 
	#DB___db_lk_42
 45

	)

48 
	s___db_lk_42_gs
 {

49 
u_t32_t
 
	mty
;

50 
DB_TXN
 *
	mtx
;

51 
DB_LSN
 
	mev_l
;

52 
u_t32_t
 
	mcode
;

53 
t32_t
 
	mfeid
;

54 
db_pgno_t
 
	mpgno
;

55 
DB_LSN
 
	ml
;

56 
db_pgno_t
 
	mev
;

57 
DB_LSN
 
	ml_ev
;

58 
db_pgno_t
 
	mxt
;

59 
DB_LSN
 
	ml_xt
;

60 } 
	t__db_lk_42_gs
;

62 
	#DB___db_debug
 47

	)

63 
	s___db_debug_gs
 {

64 
u_t32_t
 
	mty
;

65 
DB_TXN
 *
	mtx
;

66 
DB_LSN
 
	mev_l
;

67 
DBT
 
	m
;

68 
t32_t
 
	mfeid
;

69 
DBT
 
	mkey
;

70 
DBT
 
	mda
;

71 
u_t32_t
 
	mg_ags
;

72 } 
	t__db_debug_gs
;

74 
	#DB___db_no
 48

	)

75 
	s___db_no_gs
 {

76 
u_t32_t
 
	mty
;

77 
DB_TXN
 *
	mtx
;

78 
DB_LSN
 
	mev_l
;

79 
t32_t
 
	mfeid
;

80 
db_pgno_t
 
	mpgno
;

81 
DB_LSN
 
	mevl
;

82 } 
	t__db_no_gs
;

84 
	#DB___db_pg_loc_42
 49

	)

85 
	s___db_pg_loc_42_gs
 {

86 
u_t32_t
 
	mty
;

87 
DB_TXN
 *
	mtx
;

88 
DB_LSN
 
	mev_l
;

89 
t32_t
 
	mfeid
;

90 
DB_LSN
 
	mma_l
;

91 
db_pgno_t
 
	mma_pgno
;

92 
DB_LSN
 
	mge_l
;

93 
db_pgno_t
 
	mpgno
;

94 
u_t32_t
 
	my
;

95 
db_pgno_t
 
	mxt
;

96 } 
	t__db_pg_loc_42_gs
;

98 
	#DB___db_pg_loc
 49

	)

99 
	s___db_pg_loc_gs
 {

100 
u_t32_t
 
	mty
;

101 
DB_TXN
 *
	mtx
;

102 
DB_LSN
 
	mev_l
;

103 
t32_t
 
	mfeid
;

104 
DB_LSN
 
	mma_l
;

105 
db_pgno_t
 
	mma_pgno
;

106 
DB_LSN
 
	mge_l
;

107 
db_pgno_t
 
	mpgno
;

108 
u_t32_t
 
	my
;

109 
db_pgno_t
 
	mxt
;

110 
db_pgno_t
 
	mϡ_pgno
;

111 } 
	t__db_pg_loc_gs
;

113 
	#DB___db_pg__42
 50

	)

114 
	s___db_pg__42_gs
 {

115 
u_t32_t
 
	mty
;

116 
DB_TXN
 *
	mtx
;

117 
DB_LSN
 
	mev_l
;

118 
t32_t
 
	mfeid
;

119 
db_pgno_t
 
	mpgno
;

120 
DB_LSN
 
	mma_l
;

121 
db_pgno_t
 
	mma_pgno
;

122 
DBT
 
	mhd
;

123 
db_pgno_t
 
	mxt
;

124 } 
	t__db_pg__42_gs
;

126 
	#DB___db_pg_
 50

	)

127 
	s___db_pg__gs
 {

128 
u_t32_t
 
	mty
;

129 
DB_TXN
 *
	mtx
;

130 
DB_LSN
 
	mev_l
;

131 
t32_t
 
	mfeid
;

132 
db_pgno_t
 
	mpgno
;

133 
DB_LSN
 
	mma_l
;

134 
db_pgno_t
 
	mma_pgno
;

135 
DBT
 
	mhd
;

136 
db_pgno_t
 
	mxt
;

137 
db_pgno_t
 
	mϡ_pgno
;

138 } 
	t__db_pg__gs
;

140 
	#DB___db_cksum
 51

	)

141 
	s___db_cksum_gs
 {

142 
u_t32_t
 
	mty
;

143 
DB_TXN
 *
	mtx
;

144 
DB_LSN
 
	mev_l
;

145 } 
	t__db_cksum_gs
;

147 
	#DB___db_pg_da_42
 52

	)

148 
	s___db_pg_da_42_gs
 {

149 
u_t32_t
 
	mty
;

150 
DB_TXN
 *
	mtx
;

151 
DB_LSN
 
	mev_l
;

152 
t32_t
 
	mfeid
;

153 
db_pgno_t
 
	mpgno
;

154 
DB_LSN
 
	mma_l
;

155 
db_pgno_t
 
	mma_pgno
;

156 
DBT
 
	mhd
;

157 
db_pgno_t
 
	mxt
;

158 
DBT
 
	mda
;

159 } 
	t__db_pg_da_42_gs
;

161 
	#DB___db_pg_da
 52

	)

162 
	s___db_pg_da_gs
 {

163 
u_t32_t
 
	mty
;

164 
DB_TXN
 *
	mtx
;

165 
DB_LSN
 
	mev_l
;

166 
t32_t
 
	mfeid
;

167 
db_pgno_t
 
	mpgno
;

168 
DB_LSN
 
	mma_l
;

169 
db_pgno_t
 
	mma_pgno
;

170 
DBT
 
	mhd
;

171 
db_pgno_t
 
	mxt
;

172 
db_pgno_t
 
	mϡ_pgno
;

173 
DBT
 
	mda
;

174 } 
	t__db_pg_da_gs
;

176 
	#DB___db_pg_e
 53

	)

177 
	s___db_pg_e_gs
 {

178 
u_t32_t
 
	mty
;

179 
DB_TXN
 *
	mtx
;

180 
DB_LSN
 
	mev_l
;

181 
t32_t
 
	mfeid
;

182 
db_pgno_t
 
	mpgno
;

183 } 
	t__db_pg_e_gs
;

185 
	#DB___db_pg_w
 54

	)

186 
	s___db_pg_w_gs
 {

187 
u_t32_t
 
	mty
;

188 
DB_TXN
 *
	mtx
;

189 
DB_LSN
 
	mev_l
;

190 
t32_t
 
	mfeid
;

191 
db_pgno_t
 
	mpgno
;

192 
DB_LSN
 
	mma_l
;

193 
db_pgno_t
 
	mma_pgno
;

194 
DBT
 
	mhd
;

195 
db_pgno_t
 
	mxt
;

196 } 
	t__db_pg_w_gs
;

198 
	#DB___db_pg_
 60

	)

199 
	s___db_pg__gs
 {

200 
u_t32_t
 
	mty
;

201 
DB_TXN
 *
	mtx
;

202 
DB_LSN
 
	mev_l
;

203 
t32_t
 
	mfeid
;

204 
db_pgno_t
 
	mpgno
;

205 
DBT
 
	mhd
;

206 
DBT
 
	mda
;

207 } 
	t__db_pg__gs
;

209 
	#DB___db_pg_st
 61

	)

210 
	s___db_pg_st_gs
 {

211 
u_t32_t
 
	mty
;

212 
DB_TXN
 *
	mtx
;

213 
DB_LSN
 
	mev_l
;

214 
t32_t
 
	mfeid
;

215 
db_pgno_t
 
	mma
;

216 
DB_LSN
 
	mma_l
;

217 
db_pgno_t
 
	mϡ_
;

218 
DB_LSN
 
	mϡ_l
;

219 
db_pgno_t
 
	mϡ_pgno
;

220 
DBT
 
	mli
;

221 } 
	t__db_pg_st_gs
;

	@../dbinc_auto/db_ext.h

2 #idef 
_db_ext_h_


3 
	#_db_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__d_masub_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, cڡ 
DBT
 *, DB_LSN *));

10 
__d_masub_ad
 
__P
((
DB_ENV
 *, *, 
__d_masub_gs
 **));

11 
__d_mem__log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
t32_t
, cڡ 
DBT
 *, const DBT *, u_int32_t));

12 
__d_mem__ad
 
__P
((
DB_ENV
 *, *, 
__d_mem__gs
 **));

13 
__d_mem_me_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, const DBT *, const DBT *));

14 
__d_mem_me_ad
 
__P
((
DB_ENV
 *, *, 
__d_mem_me_gs
 **));

15 
__d_mem_move_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, const DBT *));

16 
__d_mem_move_ad
 
__P
((
DB_ENV
 *, *, 
__d_mem_move_gs
 **));

17 
__d__cov
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

18 
__d_masub_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

19 
__d_mem__t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

20 
__d_mem_me_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

21 
__d_mem_move_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

22 
__d__t
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

23 
__d_masub_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

24 
__d_mem__cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

25 
__d_mem_me_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

26 
__d_mem_move_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

27 
__db_ma_ݒ
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, 
u_t32_t
, , DB **));

28 
__db_ma_upde
 
__P
((
DB
 *, DB *, 
DB_TXN
 *, cڡ *, 
DBTYPE
, 
mu_ai
, cڡ *, 
u_t32_t
));

29 
__db_v_tup
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
u_t32_t
, u_int32_t));

30 
__db_v_mpo
 
__P
((
DB
 *, cڡ *, 
u_t32_t
));

31 
__db_o
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
));

32 
__db_esh
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
, *, ));

33 
__db_log_ge
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
db_pgno_t
, 
PAGE
 *));

34 
__db_backup_me
 
__P
((
DB_ENV
 *, cڡ *, 
DB_TXN
 *, **));

35 #ifde
CONFIG_TEST


36 
__db_cy
 
__P
((
DB_ENV
 *, 
DB
 *, const *));

38 
__db_curs_t
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBTYPE
, 
db_pgno_t
, , 
DB_LOCKER
 *, 
DBC
 **));

39 
__db_put
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

40 
__db_d
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

41 
__db_sync
 
__P
((
DB
 *));

42 
__db_assoc
 
__P
((
DB
 *, 
DB_TXN
 *, DB *, (*)(DB *, cڡ 
DBT
 *, cڡ DBT *, DBT *), 
u_t32_t
));

43 
__db_cdy_o
 
__P
((
DB
 *, 
u_t32_t
));

44 
__db_addm_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, 
db_pgno_t
, u_t32_t, u_t32_t, cڡ 
DBT
 *, const DBT *, DB_LSN *));

45 
__db_addm_ad
 
__P
((
DB_ENV
 *, *, 
__db_addm_gs
 **));

46 
__db_big_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, 
db_pgno_t
, db_pgno_t, db_pgno_t, cڡ 
DBT
 *, DB_LSN *, DB_LSN *, DB_LSN *));

47 
__db_big_ad
 
__P
((
DB_ENV
 *, *, 
__db_big_gs
 **));

48 
__db_ovf_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, 
t32_t
, DB_LSN *));

49 
__db_ovf_ad
 
__P
((
DB_ENV
 *, *, 
__db_ovf_gs
 **));

50 
__db_lk_42_ad
 
__P
((
DB_ENV
 *, *, 
__db_lk_42_gs
 **));

51 
__db_debug_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, 
t32_t
, const DBT *, const DBT *, u_int32_t));

52 
__db_debug_ad
 
__P
((
DB_ENV
 *, *, 
__db_debug_gs
 **));

53 
__db_no_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *));

54 
__db_no_ad
 
__P
((
DB_ENV
 *, *, 
__db_no_gs
 **));

55 
__db_pg_loc_42_ad
 
__P
((
DB_ENV
 *, *, 
__db_pg_loc_42_gs
 **));

56 
__db_pg_loc_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, DB_LSN *, 
db_pgno_t
, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t, db_pgno_t));

57 
__db_pg_loc_ad
 
__P
((
DB_ENV
 *, *, 
__db_pg_loc_gs
 **));

58 
__db_pg__42_ad
 
__P
((
DB_ENV
 *, *, 
__db_pg__42_gs
 **));

59 
__db_pg__log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, db_pgno_t, cڡ 
DBT
 *, db_pgno_t, db_pgno_t));

60 
__db_pg__ad
 
__P
((
DB_ENV
 *, *, 
__db_pg__gs
 **));

61 
__db_cksum_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
));

62 
__db_cksum_ad
 
__P
((
DB_ENV
 *, *, 
__db_cksum_gs
 **));

63 
__db_pg_da_42_ad
 
__P
((
DB_ENV
 *, *, 
__db_pg_da_42_gs
 **));

64 
__db_pg_da_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, db_pgno_t, cڡ 
DBT
 *, db_pgno_t, db_pgno_t, const DBT *));

65 
__db_pg_da_ad
 
__P
((
DB_ENV
 *, *, 
__db_pg_da_gs
 **));

66 
__db_pg_e_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
));

67 
__db_pg_e_ad
 
__P
((
DB_ENV
 *, *, 
__db_pg_e_gs
 **));

68 
__db_pg_w_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, db_pgno_t, cڡ 
DBT
 *, db_pgno_t));

69 
__db_pg_w_ad
 
__P
((
DB_ENV
 *, *, 
__db_pg_w_gs
 **));

70 
__db_pg__log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, cڡ 
DBT
 *, const DBT *));

71 
__db_pg__ad
 
__P
((
DB_ENV
 *, *, 
__db_pg__gs
 **));

72 
__db_pg_st_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, cڡ 
DBT
 *));

73 
__db_pg_st_ad
 
__P
((
DB_ENV
 *, *, 
__db_pg_st_gs
 **));

74 
__db__cov
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

75 
__db_addm_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

76 
__db_big_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

77 
__db_ovf_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

78 
__db_lk_42_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

79 
__db_debug_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

80 
__db_no_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

81 
__db_pg_loc_42_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

82 
__db_pg_loc_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

83 
__db_pg__42_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

84 
__db_pg__t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

85 
__db_cksum_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

86 
__db_pg_da_42_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

87 
__db_pg_da_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

88 
__db_pg_e_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

89 
__db_pg_w_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

90 
__db_pg__t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

91 
__db_pg_st_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

92 
__db__t
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

93 
__dbc_o
 
__P
((
DBC
 *));

94 
__dbc_deroy
 
__P
((
DBC
 *));

95 
__dbc_cou
 
__P
((
DBC
 *, 
db_o_t
 *));

96 
__dbc_d
 
__P
((
DBC
 *, 
u_t32_t
));

97 
__dbc_dup
 
__P
((
DBC
 *, DBC **, 
u_t32_t
));

98 
__dbc_idup
 
__P
((
DBC
 *, DBC **, 
u_t32_t
));

99 
__dbc_wd
 
__P
((
DBC
 *, 
db_pgno_t
, DBC *, DBC **));

100 
__dbc_g
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

101 
__dbc_put
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

102 
__db_du
 
__P
((
DB
 *, 
u_t32_t
));

103 
__dbc_cdy_g_
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

104 
__dbc_pg
 
__P
((
DBC
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
));

105 
__dbc_d_imy
 
__P
((
DBC
 *));

106 
__db_s_f
 
__P
((
DB
 *, DB **));

107 
__db_s_xt
 
__P
((
DB
 **, 
DB_TXN
 *));

108 
__db_s_de
 
__P
((
DB
 *, 
DB_TXN
 *));

109 
u_t32_t
 
__db_size
 
__P
((u_t32_t, 
DBT
 *));

110 #ifde
DIAGNOSTIC


111 
__db_check_skeyt
 
__P
((
DB
 *, 
DBT
 *));

113 
__cdsgroup_beg
 
__P
((
DB_ENV
 *, 
DB_TXN
 **));

114 
__db_pg
 
__P
((
DB_ENV
 *, 
db_pgno_t
, *, 
DBT
 *));

115 
__db_pgout
 
__P
((
DB_ENV
 *, 
db_pgno_t
, *, 
DBT
 *));

116 
__db_dey_pg
 
__P
((
DB_ENV
 *, 
DB
 *, 
PAGE
 *));

117 
__db_y_d_checksum_pg
 
__P
((
DB_ENV
 *, 
DB
 *, 
PAGE
 *));

118 
__db_masw
 
__P
((
PAGE
 *));

119 
__db_bysw
 
__P
((
DB_ENV
 *, 
DB
 *, 
db_pgno_t
, 
PAGE
 *, 
size_t
, ));

120 
__db_dich
 
__P
((
DB_ENV
 *, (**)__P((DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *)), 
size_t
, DBT *, DB_LSN *, db_cs, 
DB_TXNHEAD
 *));

121 
__db_add_covy
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *, (*)(DB_ENV *, DBT *, DB_LSN *, db_cs, *), 
u_t32_t
));

122 
__db_txi_
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_t32_t, 
DB_LSN
 *, 
DB_TXNHEAD
 **));

123 
__db_txi_add
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, 
u_t32_t
, u_t32_t, 
DB_LSN
 *));

124 
__db_txi_move
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, 
u_t32_t
));

125 
__db_txi_ckp
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, 
DB_LSN
 *));

126 
__db_txi_d
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *));

127 
__db_txi_fd
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, 
u_t32_t
, u_int32_t *));

128 
__db_txi_upde
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, 
u_t32_t
, u_t32_t, 
DB_LSN
 *, u_int32_t *, ));

129 
__db_txi_g
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, , 
u_t32_t
, u_int32_t));

130 
__db_txi_ladd
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, 
DB_LSN
 *));

131 
__db_txi_lg
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, 
DB_LSN
 *, 
u_t32_t
));

132 
__db_txi_l
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, 
DB_LSN
 *));

133 
__db_add_limbo
 
__P
((
DB_ENV
 *, 
DB_TXNHEAD
 *, 
t32_t
, 
db_pgno_t
, 
u_t32_t
));

134 
__db_do_the_limbo
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, DB_TXN *, 
DB_TXNHEAD
 *, 
db_limbo_e
));

135 
__db_txi_t
 
__P
((
DB_TXNHEAD
 *));

136 
__db_dem
 
__P
((
DBC
 *, 
PAGE
 *, 
u_t32_t
, u_int32_t));

137 
__db_pem
 
__P
((
DBC
 *, 
PAGE
 *, 
u_t32_t
, u_t32_t, 
DBT
 *, DBT *));

138 
__db_assoc_
 
__P
((
DB
 *, 
DB_TXN
 *, DB *, (*)(DB *, cڡ 
DBT
 *, cڡ DBT *, DBT *), 
u_t32_t
));

139 
__db_o_
 
__P
((
DB
 *, 
u_t32_t
));

140 
__db_curs_
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBC
 **, 
u_t32_t
));

141 
__db_curs
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBC
 **, 
u_t32_t
));

142 
__db_d_
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

143 
__db_exis
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

144 
__db_fd_
 
__P
((
DB
 *, *));

145 
__db_g_
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

146 
__db_g
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

147 
__db_jo_
 
__P
((
DB
 *, 
DBC
 **, DBC **, 
u_t32_t
));

148 
__db_key_nge_
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
DB_KEY_RANGE
 *, 
u_t32_t
));

149 
__db_ݒ_
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
, ));

150 
__db_pg_
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
));

151 
__db_pg
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
));

152 
__db_put_
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

153 
__db_com_
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
DB_COMPACT
 *, 
u_t32_t
, DBT *));

154 
__db_sync_
 
__P
((
DB
 *, 
u_t32_t
));

155 
__dbc_o_
 
__P
((
DBC
 *));

156 
__dbc_cou_
 
__P
((
DBC
 *, 
db_o_t
 *, 
u_t32_t
));

157 
__dbc_d_
 
__P
((
DBC
 *, 
u_t32_t
));

158 
__dbc_dup_
 
__P
((
DBC
 *, DBC **, 
u_t32_t
));

159 
__dbc_g_
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

160 
__db_cdy_o_
 
__P
((
DB
 *, 
u_t32_t
));

161 
__dbc_pg_
 
__P
((
DBC
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
));

162 
__dbc_put_
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

163 
__db_txn_auto_
 
__P
((
DB_ENV
 *, 
DB_TXN
 **));

164 
__db_txn_auto_sve
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, , ));

165 
__dbt_urcy
 
__P
((
DB_ENV
 *, 
DBT
 *));

166 
__dbt_ur
 
__P
((
DB_ENV
 *, 
DBT
 *, DBT *, DBT *));

167 
__db_jo
 
__P
((
DB
 *, 
DBC
 **, DBC **, 
u_t32_t
));

168 
__db_jo_o
 
__P
((
DBC
 *));

169 
__db_cdy_cru
 
__P
((
DB
 *));

170 
__db_w
 
__P
((
DBC
 *, 
u_t32_t
, 
PAGE
 **));

171 
__db_
 
__P
((
DBC
 *, 
PAGE
 *));

172 #ifde
HAVE_FTRUNCATE


173 
__db_li_pos
 
__P
((
db_pgno_t
, db_pgno_*, 
u_t32_t
, u_int32_t *));

175 #ifde
HAVE_FTRUNCATE


176 
__db_pg_un
 
__P
((
DB
 *, 
DB_TXN
 *, 
pgli
 *
li
, 
DB_COMPACT
 *, 
u_t32_t
 *, 
db_pgno_t
 *, 
DB_LSN
 *, ));

178 #ifde
HAVE_FTRUNCATE


179 
__db__un
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
, 
DB_COMPACT
 *, 
pgli
 **, u_t32_*, 
db_pgno_t
 *));

181 
__db_rt
 
__P
((
DBC
 *));

182 
__db_lg
 
__P
((
DBC
 *, , 
db_pgno_t
, 
db_lockmode_t
, 
u_t32_t
, 
DB_LOCK
 *));

183 
__db_ut
 
__P
((
DBC
 *, 
DB_LOCK
 *));

184 
__db__
 
__P
((
DB
 **, 
DB_ENV
 *, 
u_t32_t
));

185 
__dbh_am_chk
 
__P
((
DB
 *, 
u_t32_t
));

186 
__db_g_ags
 
__P
((
DB
 *, 
u_t32_t
 *));

187 
__db_t_ags
 
__P
((
DB
 *, 
u_t32_t
));

188 
__db_g_ld
 
__P
((
DB
 *, *));

189 
__db_t_ld
 
__P
((
DB
 *, ));

190 
__db_t_gesize
 
__P
((
DB
 *, 
u_t32_t
));

191 
__db_ݒ
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
, , 
db_pgno_t
));

192 
__db_g_ݒ_ags
 
__P
((
DB
 *, 
u_t32_t
 *));

193 
__db_w_fe
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_FH
 *, const *));

194 
__db__subdb
 
__P
((
DB
 *, DB *, cڡ *, 
DB_TXN
 *));

195 
__db_chk_ma
 
__P
((
DB_ENV
 *, 
DB
 *, 
DBMETA
 *, 
u_t32_t
));

196 
__db_ma_tup
 
__P
((
DB_ENV
 *, 
DB
 *, cڡ *, 
DBMETA
 *, 
u_t32_t
, u_int32_t));

197 
__db_goff
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
, 
db_pgno_t
, **, u_int32_t *));

198 
__db_poff
 
__P
((
DBC
 *, cڡ 
DBT
 *, 
db_pgno_t
 *));

199 
__db_ovf
 
__P
((
DBC
 *, 
db_pgno_t
));

200 
__db_doff
 
__P
((
DBC
 *, 
db_pgno_t
));

201 
__db_moff
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ 
DBT
 *, 
db_pgno_t
, 
u_t32_t
, (*)(DB *, const DBT *, const DBT *), *));

202 
__db_coff
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ 
DBT
 *, const DBT *, (*)(DB *, const DBT *, const DBT *), *));

203 
__db_vrfy_ovow
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
, 
u_t32_t
));

204 
__db_vrfy_ov_ruu
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
u_t32_t
, u_int32_t));

205 
__db__goff
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
DBT
 *, *, 
u_t32_t
));

206 
__db_ldme
 
__P
(());

207 
__db_dume
 
__P
((
DB
 *, 
DB_TXN
 *, *, *));

208 cڡ 
FN
 * 
__db_g_ags_
 
__P
(());

209 
__db_age
 
__P
((
DB
 *, 
DB_TXN
 *, 
db_pgno_t
));

210 
__db_ge
 
__P
((
DB
 *, 
PAGE
 *, 
u_t32_t
));

211 
__db_
 
__P
((
DB_ENV
 *, 
DB_MSGBUF
 *, 
u_t8_t
 *, 
u_t32_t
));

212 
__db_ags
 
__P
((
DB_ENV
 *, 
DB_MSGBUF
 *, 
u_t32_t
, cڡ 
FN
 *, const *, const *));

213 cڡ * 
__db_lockmode_to_rg
 
__P
((
db_lockmode_t
));

214 
__db_dume
 
__P
((
DB
 *, 
DB_TXN
 *, *, *));

215 cڡ 
FN
 * 
__db_g_ags_
 
__P
(());

216 
__db_dump_
 
__P
((
DB
 *, const *, (*)(*, const *), *, , ));

217 
__db_dump
 
__P
((
DB
 *, const *, (*)(*, const *), *, , ));

218 
__db_dbt
 
__P
((
DBT
 *, , const *, *, (*)(*, const *), ));

219 
__db_hd
 
__P
((
DB
 *, cڡ *, , , *, (*)(*, cڡ *), 
VRFY_DBINFO
 *, 
db_pgno_t
));

220 
__db_foٔ
 
__P
((*, (*)(*, const *)));

221 
__db__back
 
__P
((*, const *));

222 cڡ * 
__db_dbty_to_rg
 
__P
((
DBTYPE
));

223 
__db_addm_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

224 
__db_big_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

225 
__db_ovf_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

226 
__db_debug_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

227 
__db_no_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

228 
__db_pg_loc_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

229 
__db_pg__cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

230 
__db_pg_w_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

231 
__db_pg_da_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

232 
__db_cksum_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

233 
__db_pg_e_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

234 
__db_pg__cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

235 
__db_pg_st_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

236 
__db_pg_loc_42_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

237 
__db_pg__42_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

238 
__db_pg_da_42_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

239 
__db_lk_42_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

240 
__db_av_big
 
__P
((
DB
 *, 
db_pgno_t
, 
DB_TXN
 *, (*)(DB *, 
PAGE
 *, *, *), *));

241 
__db_aim_back
 
__P
((
DB
 *, 
PAGE
 *, *, *));

242 
__db_un_back
 
__P
((
DB
 *, 
PAGE
 *, *, *));

243 
__v_dbmove_
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
u_t32_t
));

244 
__db_move_
 
__P
((
DB
 *, cڡ *, cڡ *, 
u_t32_t
));

245 
__db_move
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
u_t32_t
));

246 
__db_move_t
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
u_t32_t
));

247 
__db_mem_move
 
__P
((
DB
 *, 
DB_TXN
 *, const *));

248 
__v_dbme_
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, cڡ *, cڡ *, 
u_t32_t
));

249 
__db_me_
 
__P
((
DB
 *, cڡ *, cڡ *, cڡ *, 
u_t32_t
));

250 
__db_me
 
__P
((
DB
 *, 
DB_TXN
 *, const *, const *, const *));

251 
__db_me_t
 
__P
((
DB
 *, 
DB_TXN
 *, const *, const *, const *));

252 
__db_t
 
__P
((
DB
 *, 
DB_TXN
 *, 
PAGE
 *, 
u_t32_t
, 
DBT
 *, **, u_int32_t *));

253 
__db_tcy
 
__P
((
DB_ENV
 *, 
DBT
 *, *, 
u_t32_t
, **, u_int32_t *));

254 
__v_feid_t_
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

255 
__v_l_t_
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

256 
__db__
 
__P
((
DB
 *, 
DB_TXN
 *, *, 
u_t32_t
));

257 
__db_
 
__P
((
DB
 *, 
DB_TXN
 *, *, 
u_t32_t
));

258 
__db__t_
 
__P
((
DB
 *, 
u_t32_t
));

259 
__db__t
 
__P
((
DB
 *, 
u_t32_t
));

260 
__db_un_
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
 *, u_int32_t));

261 
__db_un
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
 *));

262 
__db_upgde_
 
__P
((
DB
 *, cڡ *, 
u_t32_t
));

263 
__db_upgde
 
__P
((
DB
 *, cڡ *, 
u_t32_t
));

264 
__db_ϡpgno
 
__P
((
DB
 *, *, 
DB_FH
 *, 
db_pgno_t
 *));

265 
__db_31_offdup
 
__P
((
DB
 *, *, 
DB_FH
 *, , 
db_pgno_t
 *));

266 
__db_vify_
 
__P
((
DB
 *, cڡ *, cڡ *, 
FILE
 *, 
u_t32_t
));

267 
__db_vify_
 
__P
((
DB
 *, cڡ *, cڡ *, *, (*)(*, cڡ *), 
u_t32_t
));

268 
__db_vrfy_comm
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
, 
u_t32_t
));

269 
__db_vrfy_dage
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
, 
u_t32_t
));

270 
__db_vrfy_ma
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
DBMETA
 *, 
db_pgno_t
, 
u_t32_t
));

271 
__db_vrfy_ru_edback
 
__P
((
DB
 *, 
VRFY_DBINFO
 *));

272 
__db_lvage
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
PAGE
 *, *, (*)(*, cڡ *), 
u_t32_t
));

273 
__db_vrfy_pem
 
__P
((
DB
 *, 
PAGE
 *, 
db_pgno_t
, 
u_t32_t
, , u_int32_t, u_int32_t *, u_int32_t *));

274 
__db_vrfy_duy
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
u_t32_t
));

275 
__db_lvage_due
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
DBT
 *, *, (*)(*, cڡ *), 
u_t32_t
));

276 
__db_vrfy_dbfo_
 
__P
((
DB_ENV
 *, 
u_t32_t
, 
VRFY_DBINFO
 **));

277 
__db_vrfy_dbfo_deroy
 
__P
((
DB_ENV
 *, 
VRFY_DBINFO
 *));

278 
__db_vrfy_ggefo
 
__P
((
VRFY_DBINFO
 *, 
db_pgno_t
, 
VRFY_PAGEINFO
 **));

279 
__db_vrfy_puagefo
 
__P
((
DB_ENV
 *, 
VRFY_DBINFO
 *, 
VRFY_PAGEINFO
 *));

280 
__db_vrfy_pgt
 
__P
((
DB_ENV
 *, 
u_t32_t
, 
DB
 **));

281 
__db_vrfy_pgt_g
 
__P
((
DB
 *, 
db_pgno_t
, *));

282 
__db_vrfy_pgt_c
 
__P
((
DB
 *, 
db_pgno_t
));

283 
__db_vrfy_pgt_xt
 
__P
((
DBC
 *, 
db_pgno_t
 *));

284 
__db_vrfy_chdcurs
 
__P
((
VRFY_DBINFO
 *, 
DBC
 **));

285 
__db_vrfy_chdput
 
__P
((
VRFY_DBINFO
 *, 
db_pgno_t
, 
VRFY_CHILDINFO
 *));

286 
__db_vrfy_cct
 
__P
((
DBC
 *, 
db_pgno_t
, 
VRFY_CHILDINFO
 **));

287 
__db_vrfy_cext
 
__P
((
DBC
 *, 
VRFY_CHILDINFO
 **));

288 
__db_vrfy_cco
 
__P
((
DBC
 *));

289 
__db_lvage_
 
__P
((
VRFY_DBINFO
 *));

290 
__db_lvage_deroy
 
__P
((
VRFY_DBINFO
 *));

291 
__db_lvage_gxt
 
__P
((
VRFY_DBINFO
 *, 
DBC
 **, 
db_pgno_t
 *, 
u_t32_t
 *, ));

292 
__db_lvage_isde
 
__P
((
VRFY_DBINFO
 *, 
db_pgno_t
));

293 
__db_lvage_mkde
 
__P
((
VRFY_DBINFO
 *, 
db_pgno_t
));

294 
__db_lvage_mkeded
 
__P
((
VRFY_DBINFO
 *, 
db_pgno_t
, 
u_t32_t
));

295 
__db_vrfy_dbt
 
__P
((
DBT
 *, , cڡ *, *, (*)(*, cڡ *), , 
VRFY_DBINFO
 *));

297 #i
defed
(
__lulus
)

	@../dbinc_auto/dbreg_auto.h

3 #idef 
__dbg_AUTO_H


4 
	#__dbg_AUTO_H


	)

5 
	#DB___dbg_gi
 2

	)

6 
	s___dbg_gi_gs
 {

7 
u_t32_t
 
	mty
;

8 
DB_TXN
 *
	mtx
;

9 
DB_LSN
 
	mev_l
;

10 
u_t32_t
 
	mcode
;

11 
DBT
 
	mme
;

12 
DBT
 
	muid
;

13 
t32_t
 
	mfeid
;

14 
DBTYPE
 
	my
;

15 
db_pgno_t
 
	mma_pgno
;

16 
u_t32_t
 
	mid
;

17 } 
	t__dbg_gi_gs
;

	@../dbinc_auto/dbreg_ext.h

2 #idef 
_dbg_ext_h_


3 
	#_dbg_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__dbg_tup
 
__P
((
DB
 *, cڡ *, 
u_t32_t
));

10 
__dbg_down
 
__P
((
DB
 *));

11 
__dbg_down_t
 
__P
((
DB_ENV
 *, 
FNAME
 *));

12 
__dbg_w_id
 
__P
((
DB
 *, 
DB_TXN
 *));

13 
__dbg_g_id
 
__P
((
DB
 *, 
DB_TXN
 *, 
t32_t
 *));

14 
__dbg_assign_id
 
__P
((
DB
 *, 
t32_t
));

15 
__dbg_voke_id
 
__P
((
DB
 *, , 
t32_t
));

16 
__dbg_voke_id_t
 
__P
((
DB_ENV
 *, 
FNAME
 *, , , 
t32_t
));

17 
__dbg_o_id
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
));

18 
__dbg_o_id_t
 
__P
((
DB_ENV
 *, 
FNAME
 *, 
u_t32_t
, ));

19 
__dbg_log_o
 
__P
((
DB_ENV
 *, 
FNAME
 *, 
DB_TXN
 *, 
u_t32_t
));

20 
__dbg_log_id
 
__P
((
DB
 *, 
DB_TXN
 *, 
t32_t
, ));

21 
__dbg_gi_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, cڡ 
DBT
 *, cڡ DBT *, 
t32_t
, 
DBTYPE
, 
db_pgno_t
, u_int32_t));

22 
__dbg_gi_ad
 
__P
((
DB_ENV
 *, *, 
__dbg_gi_gs
 **));

23 
__dbg__cov
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

24 
__dbg_gi_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

25 
__dbg__t
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

26 
__dbg_gi_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

27 
__dbg__t
 
__P
((
DB_ENV
 *, 
u_t32_t
));

28 
__dbg_t_ame
 
__P
((
DB_ENV
 *, 
FNAME
 *));

29 
__dbg_add_dby
 
__P
((
DB_ENV
 *, 
DB_LOG
 *, 
DB
 *, 
t32_t
));

30 
__dbg_m_dby
 
__P
((
DB_LOG
 *, 
t32_t
));

31 
__dbg_log_fes
 
__P
((
DB_ENV
 *, 
u_t32_t
));

32 
__dbg_o_fes
 
__P
((
DB_ENV
 *, ));

33 
__dbg_o_fe
 
__P
((
DB_ENV
 *, 
FNAME
 *));

34 
__dbg_mk_ed
 
__P
((
DB_ENV
 *));

35 
__dbg_vide_fes
 
__P
((
DB_ENV
 *, ));

36 
__dbg_id_to_db
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB
 **, 
t32_t
, ));

37 
__dbg_id_to_db_t
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB
 **, 
t32_t
, , ));

38 
__dbg_id_to_ame
 
__P
((
DB_LOG
 *, 
t32_t
, , 
FNAME
 **));

39 
__dbg_fid_to_ame
 
__P
((
DB_LOG
 *, 
u_t8_t
 *, , 
FNAME
 **));

40 
__dbg_g_me
 
__P
((
DB_ENV
 *, 
u_t8_t
 *, **));

41 
__dbg_do_ݒ
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LOG
 *, 
u_t8_t
 *, *, 
DBTYPE
, 
t32_t
, 
db_pgno_t
, *, 
u_t32_t
, u_int32_t));

42 
__dbg_zy_id
 
__P
((
DB
 *));

44 #i
defed
(
__lulus
)

	@../dbinc_auto/env_ext.h

2 #idef 
_v_ext_h_


3 
	#_v_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__v_loc_
 
__P
((
REGINFO
 *, 
size_t
));

10 
size_t
 
__v_loc_ovhd
 
__P
(());

11 
size_t
 
__v_loc_size
 
__P
((size_t));

12 
__v_loc
 
__P
((
REGINFO
 *, 
size_t
, *));

13 
__v_loc_
 
__P
((
REGINFO
 *, *));

14 
__v_loc_t
 
__P
((
REGINFO
 *, 
u_t32_t
));

15 
__v_ad_db_cfig
 
__P
((
DB_ENV
 *));

16 
__cfig_l
 
__P
((*, *[]));

17 
__v_chk_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

18 
__v_thad_
 
__P
((
DB_ENV
 *, ));

19 
__v_t_e
 
__P
((
DB_ENV
 *, 
DB_THREAD_INFO
 **, 
DB_THREAD_STATE
));

20 *
__v_thad_id_rg
 
__P
((
DB_ENV
 *, 
pid_t
, 
db_thadid_t
, *));

21 
__db_fe_exnd
 
__P
((
DB_ENV
 *, 
DB_FH
 *, 
size_t
));

22 
__db_fe_mui_wre
 
__P
((
DB_ENV
 *, const *));

23 
__db_fe_wre
 
__P
((
DB_ENV
 *, 
DB_FH
 *, 
u_t32_t
, u_int32_t, ));

24 
__db_v_deroy
 
__P
((
DB_ENV
 *));

25 
__v_t_loc
 
__P
((
DB_ENV
 *, *(*)(
size_t
), *(*)(*, size_t), (*)(*)));

26 
__v_g_y_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

27 
__v_t_y
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

28 
__v_t_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
, ));

29 
__v_t_da_d
 
__P
((
DB_ENV
 *, const *));

30 
__v_t_rmed_d
 
__P
((
DB_ENV
 *, , 
u_t32_t
));

31 
__v_t_r
 
__P
((
DB_ENV
 *, (*)(const DB_ENV *, const *, const *)));

32 
__v_g_rfe
 
__P
((
DB_ENV
 *, 
FILE
 **));

33 
__v_t_rfe
 
__P
((
DB_ENV
 *, 
FILE
 *));

34 
__v_g_fx
 
__P
((
DB_ENV
 *, const **));

35 
__v_t_fx
 
__P
((
DB_ENV
 *, const *));

36 
__v_t_msg
 
__P
((
DB_ENV
 *, (*)(const DB_ENV *, const *)));

37 
__v_g_msgfe
 
__P
((
DB_ENV
 *, 
FILE
 **));

38 
__v_t_msgfe
 
__P
((
DB_ENV
 *, 
FILE
 *));

39 
__v_t_nic
 
__P
((
DB_ENV
 *, (*)(DB_ENV *, )));

40 
__v_t_shm_key
 
__P
((
DB_ENV
 *, ));

41 
__v_t_tmp_d
 
__P
((
DB_ENV
 *, const *));

42 
__v_t_vbo
 
__P
((
DB_ENV
 *, 
u_t32_t
, ));

43 
__db_mi_v
 
__P
((
DB_ENV
 *, const *));

44 
__db_mi_ݒ
 
__P
((
DB_ENV
 *, const *, ));

45 
__db_v_cfig
 
__P
((
DB_ENV
 *, *, 
u_t32_t
));

46 
__db_ame
 
__P
((
DB_ENV
 *, 
APPNAME
, cڡ *, 
u_t32_t
, 
DB_FH
 **, **));

47 
__v_ݒ_
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, ));

48 
__v_ݒ
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, ));

49 
__v_move
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

50 
__v_cfig
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, ));

51 
__v_o_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

52 
__v_o
 
__P
((
DB_ENV
 *, ));

53 
__v_g_ݒ_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

54 
__db_ec
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, DB_LSN *, , 
u_t32_t
));

55 
__log_backup
 
__P
((
DB_ENV
 *, 
DB_LOGC
 *, 
DB_LSN
 *, DB_LSN *, 
u_t32_t
));

56 
__v_ݒfes
 
__P
((
DB_ENV
 *, 
DB_LOGC
 *, *, 
DBT
 *, 
DB_LSN
 *, DB_LSN *, , ));

57 
__v__c
 
__P
((
DB_ENV
 *, 
u_t32_t
));

58 
__v_ch
 
__P
((
DB_ENV
 *, 
u_t32_t
 *, , ));

59 
__v_tu_
 
__P
((
DB_ENV
 *));

60 
__v_tu_off
 
__P
((
DB_ENV
 *, 
u_t32_t
));

61 
__v_nic_t
 
__P
((
DB_ENV
 *, ));

62 
__v_f_emt
 
__P
((
DB_ENV
 *));

63 
__v_f_deemt
 
__P
((
DB_ENV
 *));

64 
__v_dach
 
__P
((
DB_ENV
 *, ));

65 
__v_move_v
 
__P
((
DB_ENV
 *));

66 
__v_gi_ch
 
__P
((
DB_ENV
 *, 
REGINFO
 *, 
size_t
));

67 
__v_gi_dach
 
__P
((
DB_ENV
 *, 
REGINFO
 *, ));

68 
__vg_gi
 
__P
((
DB_ENV
 *, *));

69 
__vg_uegi
 
__P
((
DB_ENV
 *, ));

70 
__vg_xuock
 
__P
((
DB_ENV
 *));

71 
__v__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

72 
__db_t_fh
 
__P
((
DB_ENV
 *, cڡ *, 
DB_FH
 *, 
u_t32_t
));

73 
__db_t_feid
 
__P
((
DB_ENV
 *, 
u_t8_t
 *, const *));

74 
__db_dl
 
__P
((
DB_ENV
 *, cڡ *, 
u_lg
));

75 
__db_dl_p
 
__P
((
DB_ENV
 *, cڡ *, 
u_lg
, , const *));

76 
__db_dlbys
 
__P
((
DB_ENV
 *, cڡ *, 
u_lg
, u_long, u_long));

77 
__db_t_gfo
 
__P
((
DB_ENV
 *, 
REGINFO
 *, cڡ *, 
u_t32_t
));

78 
__db__n_but
 
__P
((
DB_ENV
 *));

79 #ide
HAVE_REPLICATION_THREADS


80 
__pmgr_o
 
__P
((
DB_ENV
 *));

82 #ide
HAVE_REPLICATION_THREADS


83 
__pmgr_add_me_se
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, *, 
u_t32_t
));

85 #ide
HAVE_REPLICATION_THREADS


86 
__pmgr_g_ack_picy
 
__P
((
DB_ENV
 *, *));

88 #ide
HAVE_REPLICATION_THREADS


89 
__pmgr_t_ack_picy
 
__P
((
DB_ENV
 *, ));

91 #ide
HAVE_REPLICATION_THREADS


92 
__pmgr_t_lol_se
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, 
u_t32_t
));

94 #ide
HAVE_REPLICATION_THREADS


95 
__pmgr_se_li
 
__P
((
DB_ENV
 *, 
u_t
 *, 
DB_REPMGR_SITE
 **));

97 #ide
HAVE_REPLICATION_THREADS


98 
__pmgr_t
 
__P
((
DB_ENV
 *, , 
u_t32_t
));

100 #ide
HAVE_REPLICATION_THREADS


101 
__pmgr__
 
__P
((
DB_ENV
 *, 
DB_REPMGR_STAT
 **, 
u_t32_t
));

103 #ide
HAVE_REPLICATION_THREADS


104 
__pmgr__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

106 #ide
HAVE_REPLICATION_THREADS


107 
__pmgr_hd_evt
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

110 #i
defed
(
__lulus
)

	@../dbinc_auto/fileops_auto.h

3 #idef 
__f_AUTO_H


4 
	#__f_AUTO_H


	)

5 
	#DB___f_
 143

	)

6 
	s___f__gs
 {

7 
u_t32_t
 
	mty
;

8 
DB_TXN
 *
	mtx
;

9 
DB_LSN
 
	mev_l
;

10 
DBT
 
	mme
;

11 
u_t32_t
 
	mame
;

12 
u_t32_t
 
	mmode
;

13 } 
	t__f__gs
;

15 
	#DB___f_move
 144

	)

16 
	s___f_move_gs
 {

17 
u_t32_t
 
	mty
;

18 
DB_TXN
 *
	mtx
;

19 
DB_LSN
 
	mev_l
;

20 
DBT
 
	mme
;

21 
DBT
 
	mfid
;

22 
u_t32_t
 
	mame
;

23 } 
	t__f_move_gs
;

25 
	#DB___f_wre
 145

	)

26 
	s___f_wre_gs
 {

27 
u_t32_t
 
	mty
;

28 
DB_TXN
 *
	mtx
;

29 
DB_LSN
 
	mev_l
;

30 
DBT
 
	mme
;

31 
u_t32_t
 
	mame
;

32 
u_t32_t
 
	mpgsize
;

33 
db_pgno_t
 
	mgo
;

34 
u_t32_t
 
	mofft
;

35 
DBT
 
	mge
;

36 
u_t32_t
 
	mag
;

37 } 
	t__f_wre_gs
;

39 
	#DB___f_me
 146

	)

40 
	#DB___f_me_noundo
 150

	)

41 
	s___f_me_gs
 {

42 
u_t32_t
 
	mty
;

43 
DB_TXN
 *
	mtx
;

44 
DB_LSN
 
	mev_l
;

45 
DBT
 
	mdme
;

46 
DBT
 
	mwme
;

47 
DBT
 
	mfeid
;

48 
u_t32_t
 
	mame
;

49 } 
	t__f_me_gs
;

51 
	#DB___f_fe_move
 141

	)

52 
	s___f_fe_move_gs
 {

53 
u_t32_t
 
	mty
;

54 
DB_TXN
 *
	mtx
;

55 
DB_LSN
 
	mev_l
;

56 
DBT
 
	m_fid
;

57 
DBT
 
	mtmp_fid
;

58 
DBT
 
	mme
;

59 
u_t32_t
 
	mame
;

60 
u_t32_t
 
	mchd
;

61 } 
	t__f_fe_move_gs
;

	@../dbinc_auto/fileops_ext.h

2 #idef 
_fes_ext_h_


3 
	#_fes_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__f__log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, u_int32_t, u_int32_t));

10 
__f__ad
 
__P
((
DB_ENV
 *, *, 
__f__gs
 **));

11 
__f_move_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, const DBT *, u_int32_t));

12 
__f_move_ad
 
__P
((
DB_ENV
 *, *, 
__f_move_gs
 **));

13 
__f_wre_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, u_t32_t, u_t32_t, 
db_pgno_t
, u_int32_t, const DBT *, u_int32_t));

14 
__f_wre_ad
 
__P
((
DB_ENV
 *, *, 
__f_wre_gs
 **));

15 
__f_me_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, const DBT *, const DBT *, u_int32_t));

16 
__f_me_noundo_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, const DBT *, const DBT *, u_int32_t));

17 
__f_me_t_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, const DBT *, const DBT *, u_int32_t, u_int32_t));

18 
__f_me_ad
 
__P
((
DB_ENV
 *, *, 
__f_me_gs
 **));

19 
__f_fe_move_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, cڡ 
DBT
 *, const DBT *, const DBT *, u_int32_t, u_int32_t));

20 
__f_fe_move_ad
 
__P
((
DB_ENV
 *, *, 
__f_fe_move_gs
 **));

21 
__f__cov
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

22 
__f__t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

23 
__f_move_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

24 
__f_wre_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

25 
__f_me_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

26 
__f_fe_move_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

27 
__f__t
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

28 
__f_
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_FH
 **, cڡ *, 
APPNAME
, , 
u_t32_t
));

29 
__f_move
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
u_t8_t
 *, cڡ *, 
APPNAME
, 
u_t32_t
));

30 
__f_wre
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, 
APPNAME
, 
DB_FH
 *, 
u_t32_t
, 
db_pgno_t
, u_int32_t, *, u_int32_t, u_int32_t, u_int32_t));

31 
__f_me
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
u_t8_t
 *, 
APPNAME
, , 
u_t32_t
));

32 
__f__cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

33 
__f_move_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

34 
__f_wre_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

35 
__f_me_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

36 
__f_me_noundo_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

37 
__f_fe_move_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

38 
__f_lock_hd
 
__P
((
DB_ENV
 *, 
DB
 *, 
DB_LOCKER
 *, 
db_lockmode_t
, 
DB_LOCK
 *, 
u_t32_t
));

39 
__f_fe_tup
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, , 
u_t32_t
, u_int32_t *));

40 
__f_subdb_tup
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, , 
u_t32_t
));

41 
__f_move_tup
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, 
u_t32_t
));

42 
__f_ad_ma
 
__P
((
DB_ENV
 *, cڡ *, 
u_t8_t
 *, 
size_t
, 
DB_FH
 *, , size_t *));

43 
__f_dummy
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
u_t32_t
));

44 
__f_dbme
 
__P
((
DB
 *, const *, const *));

46 #i
defed
(
__lulus
)

	@../dbinc_auto/hash_auto.h

3 #idef 
__ham_AUTO_H


4 
	#__ham_AUTO_H


	)

5 
	#DB___ham_sd
 21

	)

6 
	s___ham_sd_gs
 {

7 
u_t32_t
 
	mty
;

8 
DB_TXN
 *
	mtx
;

9 
DB_LSN
 
	mev_l
;

10 
u_t32_t
 
	mcode
;

11 
t32_t
 
	mfeid
;

12 
db_pgno_t
 
	mpgno
;

13 
u_t32_t
 
	mndx
;

14 
DB_LSN
 
	mg
;

15 
DBT
 
	mkey
;

16 
DBT
 
	mda
;

17 } 
	t__ham_sd_gs
;

19 
	#DB___ham_wge
 22

	)

20 
	s___ham_wge_gs
 {

21 
u_t32_t
 
	mty
;

22 
DB_TXN
 *
	mtx
;

23 
DB_LSN
 
	mev_l
;

24 
u_t32_t
 
	mcode
;

25 
t32_t
 
	mfeid
;

26 
db_pgno_t
 
	mev_pgno
;

27 
DB_LSN
 
	mevl
;

28 
db_pgno_t
 
	mw_pgno
;

29 
DB_LSN
 
	mg
;

30 
db_pgno_t
 
	mxt_pgno
;

31 
DB_LSN
 
	mx
;

32 } 
	t__ham_wge_gs
;

34 
	#DB___ham_lda
 24

	)

35 
	s___ham_lda_gs
 {

36 
u_t32_t
 
	mty
;

37 
DB_TXN
 *
	mtx
;

38 
DB_LSN
 
	mev_l
;

39 
t32_t
 
	mfeid
;

40 
u_t32_t
 
	mcode
;

41 
db_pgno_t
 
	mpgno
;

42 
DBT
 
	mgeimage
;

43 
DB_LSN
 
	mg
;

44 } 
	t__ham_lda_gs
;

46 
	#DB___ham_a
 25

	)

47 
	s___ham_a_gs
 {

48 
u_t32_t
 
	mty
;

49 
DB_TXN
 *
	mtx
;

50 
DB_LSN
 
	mev_l
;

51 
t32_t
 
	mfeid
;

52 
db_pgno_t
 
	mpgno
;

53 
u_t32_t
 
	mndx
;

54 
DB_LSN
 
	mg
;

55 
t32_t
 
	moff
;

56 
DBT
 
	mdem
;

57 
DBT
 
	mwem
;

58 
u_t32_t
 
	mmakedup
;

59 } 
	t__ham_a_gs
;

61 
	#DB___ham_cyge
 28

	)

62 
	s___ham_cyge_gs
 {

63 
u_t32_t
 
	mty
;

64 
DB_TXN
 *
	mtx
;

65 
DB_LSN
 
	mev_l
;

66 
t32_t
 
	mfeid
;

67 
db_pgno_t
 
	mpgno
;

68 
DB_LSN
 
	mg
;

69 
db_pgno_t
 
	mxt_pgno
;

70 
DB_LSN
 
	mx
;

71 
db_pgno_t
 
	mext_pgno
;

72 
DB_LSN
 
	mex
;

73 
DBT
 
	mge
;

74 } 
	t__ham_cyge_gs
;

76 
	#DB___ham_magroup_42
 29

	)

77 
	s___ham_magroup_42_gs
 {

78 
u_t32_t
 
	mty
;

79 
DB_TXN
 *
	mtx
;

80 
DB_LSN
 
	mev_l
;

81 
t32_t
 
	mfeid
;

82 
u_t32_t
 
	mbuck
;

83 
db_pgno_t
 
	mmmpgno
;

84 
DB_LSN
 
	mmm
;

85 
db_pgno_t
 
	mmpgno
;

86 
DB_LSN
 
	mm
;

87 
db_pgno_t
 
	mpgno
;

88 
DB_LSN
 
	mg
;

89 
u_t32_t
 
	mwloc
;

90 } 
	t__ham_magroup_42_gs
;

92 
	#DB___ham_magroup
 29

	)

93 
	s___ham_magroup_gs
 {

94 
u_t32_t
 
	mty
;

95 
DB_TXN
 *
	mtx
;

96 
DB_LSN
 
	mev_l
;

97 
t32_t
 
	mfeid
;

98 
u_t32_t
 
	mbuck
;

99 
db_pgno_t
 
	mmmpgno
;

100 
DB_LSN
 
	mmm
;

101 
db_pgno_t
 
	mmpgno
;

102 
DB_LSN
 
	mm
;

103 
db_pgno_t
 
	mpgno
;

104 
DB_LSN
 
	mg
;

105 
u_t32_t
 
	mwloc
;

106 
db_pgno_t
 
	mϡ_pgno
;

107 } 
	t__ham_magroup_gs
;

109 
	#DB___ham_grouoc_42
 32

	)

110 
	s___ham_grouoc_42_gs
 {

111 
u_t32_t
 
	mty
;

112 
DB_TXN
 *
	mtx
;

113 
DB_LSN
 
	mev_l
;

114 
t32_t
 
	mfeid
;

115 
DB_LSN
 
	mma_l
;

116 
db_pgno_t
 
	mt_pgno
;

117 
u_t32_t
 
	mnum
;

118 
db_pgno_t
 
	m
;

119 } 
	t__ham_grouoc_42_gs
;

121 
	#DB___ham_grouoc
 32

	)

122 
	s___ham_grouoc_gs
 {

123 
u_t32_t
 
	mty
;

124 
DB_TXN
 *
	mtx
;

125 
DB_LSN
 
	mev_l
;

126 
t32_t
 
	mfeid
;

127 
DB_LSN
 
	mma_l
;

128 
db_pgno_t
 
	mt_pgno
;

129 
u_t32_t
 
	mnum
;

130 
db_pgno_t
 
	munud
;

131 
db_pgno_t
 
	mϡ_pgno
;

132 } 
	t__ham_grouoc_gs
;

134 
	#DB___ham_cudj
 33

	)

135 
	s___ham_cudj_gs
 {

136 
u_t32_t
 
	mty
;

137 
DB_TXN
 *
	mtx
;

138 
DB_LSN
 
	mev_l
;

139 
t32_t
 
	mfeid
;

140 
db_pgno_t
 
	mpgno
;

141 
u_t32_t
 
	mdx
;

142 
u_t32_t
 
	mn
;

143 
u_t32_t
 
	mdup_off
;

144 
	madd
;

145 
	mis_dup
;

146 
u_t32_t
 
	md
;

147 } 
	t__ham_cudj_gs
;

149 
	#DB___ham_chgpg
 34

	)

150 
	s___ham_chgpg_gs
 {

151 
u_t32_t
 
	mty
;

152 
DB_TXN
 *
	mtx
;

153 
DB_LSN
 
	mev_l
;

154 
t32_t
 
	mfeid
;

155 
db_ham_mode
 
	mmode
;

156 
db_pgno_t
 
	md_pgno
;

157 
db_pgno_t
 
	mw_pgno
;

158 
u_t32_t
 
	md_dx
;

159 
u_t32_t
 
	mw_dx
;

160 } 
	t__ham_chgpg_gs
;

	@../dbinc_auto/hash_ext.h

2 #idef 
_hash_ext_h_


3 
	#_hash_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__ham_quick_de
 
__P
((
DBC
 *));

10 
__hamc_
 
__P
((
DBC
 *));

11 
__hamc_cou
 
__P
((
DBC
 *, 
db_o_t
 *));

12 
__hamc_dup
 
__P
((
DBC
 *, DBC *));

13 
u_t32_t
 
__ham__hash
 
__P
((
DBC
 *, 
u_t8_t
 *, u_int32_t));

14 
__ham__dbt
 
__P
((
DB_ENV
 *, 
DBT
 *, 
u_t32_t
, **, u_int32_t *));

15 
__hamc_upde
 
__P
((
DBC
 *, 
u_t32_t
, 
db_ham_cudj
, ));

16 
__ham_g_i
 
__P
((
DB
 *, 
db_pgno_t
, 
u_t32_t
, 
DBC
 ***));

17 
__ham_sd_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, 
db_pgno_t
, u_t32_t, DB_LSN *, cڡ 
DBT
 *, const DBT *));

18 
__ham_sd_ad
 
__P
((
DB_ENV
 *, *, 
__ham_sd_gs
 **));

19 
__ham_wge_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, 
db_pgno_t
, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));

20 
__ham_wge_ad
 
__P
((
DB_ENV
 *, *, 
__ham_wge_gs
 **));

21 
__ham_lda_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, 
db_pgno_t
, cڡ 
DBT
 *, DB_LSN *));

22 
__ham_lda_ad
 
__P
((
DB_ENV
 *, *, 
__ham_lda_gs
 **));

23 
__ham_a_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, u_t32_t, DB_LSN *, 
t32_t
, cڡ 
DBT
 *, const DBT *, u_int32_t));

24 
__ham_a_ad
 
__P
((
DB_ENV
 *, *, 
__ham_a_gs
 **));

25 
__ham_cyge_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, cڡ 
DBT
 *));

26 
__ham_cyge_ad
 
__P
((
DB_ENV
 *, *, 
__ham_cyge_gs
 **));

27 
__ham_magroup_42_ad
 
__P
((
DB_ENV
 *, *, 
__ham_magroup_42_gs
 **));

28 
__ham_magroup_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, 
db_pgno_t
, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, u_int32_t, db_pgno_t));

29 
__ham_magroup_ad
 
__P
((
DB_ENV
 *, *, 
__ham_magroup_gs
 **));

30 
__ham_grouoc_42_ad
 
__P
((
DB_ENV
 *, *, 
__ham_grouoc_42_gs
 **));

31 
__ham_grouoc_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, DB_LSN *, 
db_pgno_t
, u_int32_t, db_pgno_t, db_pgno_t));

32 
__ham_grouoc_ad
 
__P
((
DB_ENV
 *, *, 
__ham_grouoc_gs
 **));

33 
__ham_cudj_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_pgno_t
, u_int32_t, u_int32_t, u_int32_t, , , u_int32_t));

34 
__ham_cudj_ad
 
__P
((
DB_ENV
 *, *, 
__ham_cudj_gs
 **));

35 
__ham_chgpg_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_ham_mode
, 
db_pgno_t
, db_pgno_t, u_int32_t, u_int32_t));

36 
__ham_chgpg_ad
 
__P
((
DB_ENV
 *, *, 
__ham_chgpg_gs
 **));

37 
__ham__cov
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

38 
__ham_sd_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

39 
__ham_wge_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

40 
__ham_lda_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

41 
__ham_a_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

42 
__ham_cyge_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

43 
__ham_magroup_42_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

44 
__ham_magroup_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

45 
__ham_grouoc_42_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

46 
__ham_grouoc_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

47 
__ham_cudj_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

48 
__ham_chgpg_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

49 
__ham__t
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

50 
__ham_pg
 
__P
((
DB_ENV
 *, 
DB
 *, 
db_pgno_t
, *, 
DBT
 *));

51 
__ham_pgout
 
__P
((
DB_ENV
 *, 
DB
 *, 
db_pgno_t
, *, 
DBT
 *));

52 
__ham_msw
 
__P
((*));

53 
__ham_add_dup
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
, 
db_pgno_t
 *));

54 
__ham_dup_cvt
 
__P
((
DBC
 *));

55 
__ham_make_dup
 
__P
((
DB_ENV
 *, cڡ 
DBT
 *, DBT *
d
, **, 
u_t32_t
 *));

56 
__ham_dch
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
 *, *, u_int32_t));

57 
u_t32_t
 
__ham_func2
 
__P
((
DB
 *, const *, u_int32_t));

58 
u_t32_t
 
__ham_func3
 
__P
((
DB
 *, const *, u_int32_t));

59 
u_t32_t
 
__ham_func4
 
__P
((
DB
 *, const *, u_int32_t));

60 
u_t32_t
 
__ham_func5
 
__P
((
DB
 *, const *, u_int32_t));

61 
u_t32_t
 
__ham_
 
__P
((
DB
 *, const *, u_int32_t));

62 
__ham_g_ma
 
__P
((
DBC
 *));

63 
__ham_a_ma
 
__P
((
DBC
 *));

64 
__ham_dty_ma
 
__P
((
DBC
 *, 
u_t32_t
));

65 
__ham_db_
 
__P
((
DB
 *));

66 
__ham_db_o
 
__P
((
DB
 *));

67 
__ham_g_h_f
 
__P
((
DB
 *, 
u_t32_t
 *));

68 
__ham_t_h_com
 
__P
((
DB
 *, (*)(DB *, cڡ 
DBT
 *, const DBT *)));

69 
__ham_g_h_m
 
__P
((
DB
 *, 
u_t32_t
 *));

70 
__ham_ݒ
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ * 
me
, 
db_pgno_t
, 
u_t32_t
));

71 
__ham_machk
 
__P
((
DB
 *, cڡ *, 
HMETA
 *));

72 
__ham_w_fe
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_FH
 *, const *));

73 
__ham_w_subdb
 
__P
((
DB
 *, DB *, 
DB_TXN
 *));

74 
__ham_em
 
__P
((
DBC
 *, 
db_lockmode_t
, 
db_pgno_t
 *));

75 
__ham_em_t
 
__P
((
DBC
 *));

76 
__ham_em_
 
__P
((
DBC
 *));

77 
__ham_em_ϡ
 
__P
((
DBC
 *, 
db_lockmode_t
, 
db_pgno_t
 *));

78 
__ham_em_f
 
__P
((
DBC
 *, 
db_lockmode_t
, 
db_pgno_t
 *));

79 
__ham_em_ev
 
__P
((
DBC
 *, 
db_lockmode_t
, 
db_pgno_t
 *));

80 
__ham_em_xt
 
__P
((
DBC
 *, 
db_lockmode_t
, 
db_pgno_t
 *));

81 
__ham_
 
__P
((
DB
 *, 
DB_TXN
 *, 
PAGE
 *
p
, 
db_dx_t
 *
dxp
, cڡ 
DBT
 *, const DBT *, , ));

82 
__ham_gdex
 
__P
((
DB
 *, 
DB_TXN
 *, 
PAGE
 *, cڡ 
DBT
 *, , *, 
db_dx_t
 *));

83 
__ham_vify_s܋d_ge
 
__P
((
DB
 *, 
DB_TXN
 *, 
PAGE
 *));

84 
__ham_st_ge
 
__P
((
DB
 *, 
DB_TXN
 *, 
PAGE
 **, PAGE *));

85 
__ham_d_
 
__P
((
DBC
 *, ));

86 
__ham_
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
));

87 
__ham_ڷge_a
 
__P
((
DB
 *, 
PAGE
 *, 
u_t32_t
, 
t32_t
, u_t32_t, , 
DBT
 *));

88 
__ham_l_ge
 
__P
((
DBC
 *, 
u_t32_t
, u_int32_t));

89 
__ham_add_
 
__P
((
DBC
 *, cڡ 
DBT
 *, const DBT *, ));

90 
__ham_cy
 
__P
((
DB
 *, 
DB_TXN
 *, 
PAGE
 *, 
u_t32_t
, PAGE *, 
db_dx_t
 *));

91 
__ham_add_ovge
 
__P
((
DBC
 *, 
PAGE
 *, , PAGE **));

92 
__ham_g_age
 
__P
((
DBC
 *, 
db_lockmode_t
));

93 
__ham_xt_age
 
__P
((
DBC
 *, 
db_pgno_t
));

94 
__ham_lock_buck
 
__P
((
DBC
 *, 
db_lockmode_t
));

95 
__ham_d
 
__P
((
DB
 *, 
PAGE
 *, 
u_t32_t
));

96 
__ham_sd_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

97 
__ham_wge_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

98 
__ham_a_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

99 
__ham_lda_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

100 
__ham_cyge_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

101 
__ham_magroup_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

102 
__ham_grouoc_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

103 
__ham_cudj_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

104 
__ham_chgpg_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

105 
__ham_magroup_42_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

106 
__ham_grouoc_42_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

107 
__ham_aim
 
__P
((
DB
 *, 
DB_TXN
 *
txn
));

108 
__ham_un
 
__P
((
DBC
 *, 
u_t32_t
 *));

109 
__ham_
 
__P
((
DBC
 *, *, 
u_t32_t
));

110 
__ham__t
 
__P
((
DBC
 *, 
u_t32_t
));

111 
__ham_t_curs
 
__P
((
DBC
 *));

112 
__ham_av
 
__P
((
DBC
 *, 
db_lockmode_t
, (*)(
DB
 *, 
PAGE
 *, *, *), *, ));

113 
__db_no_hash_am
 
__P
((
DB_ENV
 *));

114 
__ham_30_hashma
 
__P
((
DB
 *, *, 
u_t8_t
 *));

115 
__ham_30_sizefix
 
__P
((
DB
 *, 
DB_FH
 *, *, 
u_t8_t
 *));

116 
__ham_31_hashma
 
__P
((
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *));

117 
__ham_31_hash
 
__P
((
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *));

118 
__ham_46_hashma
 
__P
((
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *));

119 
__ham_46_hash
 
__P
((
DB
 *, *, 
u_t32_t
, 
DB_FH
 *, 
PAGE
 *, *));

120 
__ham_vrfy_ma
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
HMETA
 *, 
db_pgno_t
, 
u_t32_t
));

121 
__ham_vrfy
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
PAGE
 *, 
db_pgno_t
, 
u_t32_t
));

122 
__ham_vrfy_ruu
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
u_t32_t
));

123 
__ham_vrfy_hashg
 
__P
((
DB
 *, 
u_t32_t
, 
HMETA
 *, u_t32_t, 
db_pgno_t
, u_int32_t, u_int32_t (*) __P((DB *, const *, u_int32_t))));

124 
__ham_lvage
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
PAGE
 *, *, (*)(*, cڡ *), 
u_t32_t
));

125 
__ham_ma2pgt
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
HMETA
 *, 
u_t32_t
, DB *));

127 #i
defed
(
__lulus
)

	@../dbinc_auto/hmac_ext.h

2 #idef 
_hmac_ext_h_


3 
	#_hmac_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__db_chksum
 
__P
((*, 
u_t8_t
 *, 
size_t
, u_int8_t *, u_int8_t *));

10 
__db_dive_mac
 
__P
((
u_t8_t
 *, 
size_t
, u_int8_t *));

11 
__db_check_chksum
 
__P
((
DB_ENV
 *, *, 
DB_CIPHER
 *, 
u_t8_t
 *, *, 
size_t
, ));

12 
__db_SHA1Tnsfm
 
__P
((
u_t32_t
 *, *));

13 
__db_SHA1In
 
__P
((
SHA1_CTX
 *));

14 
__db_SHA1Upde
 
__P
((
SHA1_CTX
 *, *, 
size_t
));

15 
__db_SHA1F
 
__P
((*, 
SHA1_CTX
 *));

17 #i
defed
(
__lulus
)

	@../dbinc_auto/lock_ext.h

2 #idef 
_lock_ext_h_


3 
	#_lock_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__lock_vec_
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_t32_t, 
DB_LOCKREQ
 *, , DB_LOCKREQ **));

10 
__lock_vec
 
__P
((
DB_ENV
 *, 
DB_LOCKER
 *, 
u_t32_t
, 
DB_LOCKREQ
 *, , DB_LOCKREQ **));

11 
__lock_g_
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_t32_t, cڡ 
DBT
 *, 
db_lockmode_t
, 
DB_LOCK
 *));

12 
__lock_g
 
__P
((
DB_ENV
 *, 
DB_LOCKER
 *, 
u_t32_t
, cڡ 
DBT
 *, 
db_lockmode_t
, 
DB_LOCK
 *));

13 
__lock_g_
 
__P
((
DB_LOCKTAB
 *, 
DB_LOCKER
 *, 
u_t32_t
, cڡ 
DBT
 *, 
db_lockmode_t
, 
db_timeout_t
, 
DB_LOCK
 *));

14 
__lock_put_
 
__P
((
DB_ENV
 *, 
DB_LOCK
 *));

15 
__lock_put
 
__P
((
DB_ENV
 *, 
DB_LOCK
 *));

16 
__lock_downgde
 
__P
((
DB_ENV
 *, 
DB_LOCK
 *, 
db_lockmode_t
, 
u_t32_t
));

17 
__lock_lock_is_
 
__P
((
DB_ENV
 *, 
DB_LOCKER
 *, DB_LOCKER *, *));

18 
__lock_ome
 
__P
((
DB_LOCKTAB
 *, 
DB_LOCKOBJ
 *, *, 
u_t32_t
));

19 
__lock_de_
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t, *));

20 
__lock_de
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

21 
__lock_chk
 
__P
((
DB_ENV
 *));

22 
__lock_id_
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

23 
__lock_id
 
__P
((
DB_ENV
 *, 
u_t32_t
 *, 
DB_LOCKER
 **));

24 
__lock_t_thad_id
 
__P
((*, 
pid_t
, 
db_thadid_t
));

25 
__lock_id__
 
__P
((
DB_ENV
 *, 
u_t32_t
));

26 
__lock_id_
 
__P
((
DB_ENV
 *, 
DB_LOCKER
 *));

27 
__lock_id_t
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

28 
__lock_glock
 
__P
((
DB_LOCKTAB
 *, 
u_t32_t
, , 
DB_LOCKER
 **));

29 
__lock_glock_t
 
__P
((
DB_LOCKTAB
 *, 
u_t32_t
, , 
DB_LOCKER
 **));

30 
__lock_addmylock
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

31 
__lock_mylock
 
__P
((
DB_LOCKTAB
 *, 
DB_LOCKER
 *));

32 
__lock_lock
 
__P
((
DB_LOCKTAB
 *, 
DB_LOCKREGION
 *, 
DB_LOCKER
 *));

33 
__lock_fix_li
 
__P
((
DB_ENV
 *, 
DBT
 *, 
u_t32_t
));

34 
__lock_g_li
 
__P
((
DB_ENV
 *, 
DB_LOCKER
 *, 
u_t32_t
, 
db_lockmode_t
, 
DBT
 *));

35 
__lock_li_t
 
__P
((
DB_ENV
 *, 
DBT
 *));

36 
__lock_v_
 
__P
((
DB_ENV
 *));

37 
__lock_v_deroy
 
__P
((
DB_ENV
 *));

38 
__lock_g_lk_cis
 
__P
((
DB_ENV
 *, cڡ 
u_t8_t
 **, *));

39 
__lock_t_lk_cis
 
__P
((
DB_ENV
 *, 
u_t8_t
 *, ));

40 
__lock_g_lk_de
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

41 
__lock_t_lk_de
 
__P
((
DB_ENV
 *, 
u_t32_t
));

42 
__lock_g_lk_max_locks
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

43 
__lock_t_lk_max_locks
 
__P
((
DB_ENV
 *, 
u_t32_t
));

44 
__lock_g_lk_max_locks
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

45 
__lock_t_lk_max_locks
 
__P
((
DB_ENV
 *, 
u_t32_t
));

46 
__lock_g_lk_max_objes
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

47 
__lock_t_lk_max_objes
 
__P
((
DB_ENV
 *, 
u_t32_t
));

48 
__lock_g_v_timeout
 
__P
((
DB_ENV
 *, 
db_timeout_t
 *, 
u_t32_t
));

49 
__lock_t_v_timeout
 
__P
((
DB_ENV
 *, 
db_timeout_t
, 
u_t32_t
));

50 
__lock_ݒ
 
__P
((
DB_ENV
 *, ));

51 
__lock_v_esh
 
__P
((
DB_ENV
 *));

52 
u_t32_t
 
__lock_gi_mux_cou
 
__P
((
DB_ENV
 *));

53 
__lock__
 
__P
((
DB_ENV
 *, 
DB_LOCK_STAT
 **, 
u_t32_t
));

54 
__lock__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

55 
__lock__t
 
__P
((
DB_ENV
 *, 
u_t32_t
));

56 
__lock_ock
 
__P
((
DB_LOCKTAB
 *, 
DB_MSGBUF
 *
mbp
, 
__db_lock
 *, ));

57 
__lock_t_timeout
 
__P
((
DB_ENV
 *, 
DB_LOCKER
 *, 
db_timeout_t
, 
u_t32_t
));

58 
__lock_t_timeout_
 
__P
((
DB_ENV
 *, 
DB_LOCKER
 *, 
db_timeout_t
, 
u_t32_t
));

59 
__lock_h_timeout
 
__P
((
DB_ENV
 *, 
DB_LOCKER
 *, DB_LOCKER *));

60 
__lock_expes
 
__P
((
DB_ENV
 *, 
db_timeec
 *, 
db_timeout_t
));

61 
__lock_exped
 
__P
((
DB_ENV
 *, 
db_timeec
 *, db_timespec *));

62 
u_t32_t
 
__lock_ohash
 
__P
((cڡ 
DBT
 *));

63 
u_t32_t
 
__lock_lhash
 
__P
((
DB_LOCKOBJ
 *));

64 
__lock_nomem
 
__P
((
DB_ENV
 *, const *));

66 #i
defed
(
__lulus
)

	@../dbinc_auto/log_ext.h

2 #idef 
_log_ext_h_


3 
	#_log_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__log_ݒ
 
__P
((
DB_ENV
 *, ));

10 
__log_fd
 
__P
((
DB_LOG
 *, , 
u_t32_t
 *, 
logfe_vidy
 *));

11 
__log_vid
 
__P
((
DB_LOG
 *, 
u_t32_t
, , 
DB_FH
 **, u_t32_t, 
logfe_vidy
 *, u_int32_t *));

12 
__log_v_esh
 
__P
((
DB_ENV
 *));

13 
__log_g_ched_ckp_l
 
__P
((
DB_ENV
 *, 
DB_LSN
 *));

14 
u_t32_t
 
__log_gi_mux_cou
 
__P
((
DB_ENV
 *));

15 
__log_vun
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, DB_LSN *, DB_LSN *));

16 
__log_is_outded
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

17 
__log_zo
 
__P
((
DB_ENV
 *, 
DB_LSN
 *));

18 
__log_mem_loff
 
__P
((
DB_LOG
 *, 
DB_LSN
 *, 
size_t
 *));

19 
__log_mem_wfe
 
__P
((
DB_LOG
 *, 
u_t32_t
));

20 
__log_mem_chka
 
__P
((
DB_LOG
 *, 
size_t
));

21 
__log_mem_cyout
 
__P
((
DB_LOG
 *, 
size_t
, *, size_t));

22 
__log_mem_cy
 
__P
((
DB_LOG
 *, 
size_t
, *, size_t));

23 
__log_t_vsi
 
__P
((
DB_ENV
 *, 
u_t32_t
));

24 
__log_g_dvsi
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

25 
__log_chive_
 
__P
((
DB_ENV
 *, **[], 
u_t32_t
));

26 
__log_g_ab_l
 
__P
((
DB_ENV
 *, 
DB_LSN
 *));

27 
__log_autemove
 
__P
((
DB_ENV
 *));

28 
__log_check_ge_l
 
__P
((
DB_ENV
 *, 
DB
 *, 
DB_LSN
 *));

29 
__log_tf_pi
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, ...)
__ibu__
 ((
__fm__
 (
__tf__
, 3, 4)));

30 
__log_tf_
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, 
va_li
));

31 
__log_tf
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, ...)
__ibu__
 ((
__fm__
 (
__tf__
, 3, 4)));

32 
__log_curs_
 
__P
((
DB_ENV
 *, 
DB_LOGC
 **, 
u_t32_t
));

33 
__log_curs
 
__P
((
DB_ENV
 *, 
DB_LOGC
 **));

34 
__logc_o
 
__P
((
DB_LOGC
 *));

35 
__logc_vsi
 
__P
((
DB_LOGC
 *, 
u_t32_t
 *));

36 
__logc_g
 
__P
((
DB_LOGC
 *, 
DB_LSN
 *, 
DBT
 *, 
u_t32_t
));

37 
__log_p_l
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, 
DBT
 *, 
DB_LSN
 *, DB_LSN *));

38 
__log_v_
 
__P
((
DB_ENV
 *));

39 
__log_v_deroy
 
__P
((
DB_ENV
 *));

40 
__log_g_lg_bsize
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

41 
__log_t_lg_bsize
 
__P
((
DB_ENV
 *, 
u_t32_t
));

42 
__log_g_lg_femode
 
__P
((
DB_ENV
 *, *));

43 
__log_t_lg_femode
 
__P
((
DB_ENV
 *, ));

44 
__log_g_lg_max
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

45 
__log_t_lg_max
 
__P
((
DB_ENV
 *, 
u_t32_t
));

46 
__log_g_lg_gimax
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

47 
__log_t_lg_gimax
 
__P
((
DB_ENV
 *, 
u_t32_t
));

48 
__log_g_lg_d
 
__P
((
DB_ENV
 *, const **));

49 
__log_t_lg_d
 
__P
((
DB_ENV
 *, const *));

50 
__log_g_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

51 
__log_t_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
, ));

52 
__log_check_sizes
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

53 
__log_put_
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, cڡ 
DBT
 *, 
u_t32_t
));

54 
__log_put
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, cڡ 
DBT
 *, 
u_t32_t
));

55 
__log_cut_l
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, 
u_t32_t
 *, u_int32_t *));

56 
__log_wfe
 
__P
((
DB_LOG
 *, 
DB_LSN
 *, 
u_t32_t
, u_int32_t));

57 
__log_ush_
 
__P
((
DB_ENV
 *, cڡ 
DB_LSN
 *));

58 
__log_ush
 
__P
((
DB_ENV
 *, cڡ 
DB_LSN
 *));

59 
__log_ush_t
 
__P
((
DB_LOG
 *, cڡ 
DB_LSN
 *, ));

60 
__log_fe_
 
__P
((
DB_ENV
 *, cڡ 
DB_LSN
 *, *, 
size_t
));

61 
__log_me
 
__P
((
DB_LOG
 *, 
u_t32_t
, **, 
DB_FH
 **, u_int32_t));

62 
__log_p_put
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, cڡ 
DBT
 *, 
u_t32_t
));

63 
__log__
 
__P
((
DB_ENV
 *, 
DB_LOG_STAT
 **, 
u_t32_t
));

64 
__log__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

65 
__log__t
 
__P
((
DB_ENV
 *, 
u_t32_t
));

67 #i
defed
(
__lulus
)

	@../dbinc_auto/mp_ext.h

2 #idef 
_mp_ext_h_


3 
	#_mp_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__memp_loc
 
__P
((
DB_MPOOL
 *, 
REGINFO
 *, 
MPOOLFILE
 *, 
size_t
, 
roff_t
 *, *));

10 
__memp_
 
__P
((
REGINFO
 *, 
MPOOLFILE
 *, *));

11 #ifde
DIAGNOSTIC


12 
__memp_check_d
 
__P
((
DB_ENV
 *, 
DB_MPOOL_HASH
 *));

14 
__memp_bhwre
 
__P
((
DB_MPOOL
 *, 
DB_MPOOL_HASH
 *, 
MPOOLFILE
 *, 
BH
 *, ));

15 
__memp_pgad
 
__P
((
DB_MPOOLFILE
 *, 
DB_MPOOL_HASH
 *, 
BH
 *, ));

16 
__memp_pg
 
__P
((
DB_MPOOLFILE
 *, 
BH
 *, ));

17 
__memp_bh
 
__P
((
DB_MPOOL
 *, 
REGINFO
 *, 
DB_MPOOL_HASH
 *, 
BH
 *, 
u_t32_t
));

18 
__memp_fg_
 
__P
((
DB_MPOOLFILE
 *, 
db_pgno_t
 *, 
DB_TXN
 *, 
u_t32_t
, *));

19 
__memp_fg
 
__P
((
DB_MPOOLFILE
 *, 
db_pgno_t
 *, 
DB_TXN
 *, 
u_t32_t
, *));

20 
__memp_f_
 
__P
((
DB_ENV
 *, 
DB_MPOOLFILE
 **, 
u_t32_t
));

21 
__memp_f
 
__P
((
DB_ENV
 *, 
DB_MPOOLFILE
 **));

22 
__memp_t_r_n
 
__P
((
DB_MPOOLFILE
 *, 
u_t32_t
));

23 
__memp_g_feid
 
__P
((
DB_MPOOLFILE
 *, 
u_t8_t
 *));

24 
__memp_t_feid
 
__P
((
DB_MPOOLFILE
 *, 
u_t8_t
 *));

25 
__memp_g_ags
 
__P
((
DB_MPOOLFILE
 *, 
u_t32_t
 *));

26 
__memp_t_ags
 
__P
((
DB_MPOOLFILE
 *, 
u_t32_t
, ));

27 
__memp_g_y
 
__P
((
DB_MPOOLFILE
 *, *));

28 
__memp_t_y
 
__P
((
DB_MPOOLFILE
 *, ));

29 
__memp_t_l_offt
 
__P
((
DB_MPOOLFILE
 *, 
t32_t
));

30 
__memp_t_pgcook
 
__P
((
DB_MPOOLFILE
 *, 
DBT
 *));

31 
__memp_g_ϡ_pgno
 
__P
((
DB_MPOOLFILE
 *, 
db_pgno_t
 *));

32 * 
__memp_
 
__P
((
DB_MPOOLFILE
 *));

33 * 
__memp_s
 
__P
((
DB_MPOOL
 *, 
MPOOLFILE
 *));

34 
__memp_fݒ_
 
__P
((
DB_MPOOLFILE
 *, cڡ *, 
u_t32_t
, , 
size_t
));

35 
__memp_fݒ
 
__P
((
DB_MPOOLFILE
 *, 
MPOOLFILE
 *, cڡ *, 
u_t32_t
, , 
size_t
));

36 
__memp_fo_
 
__P
((
DB_MPOOLFILE
 *, 
u_t32_t
));

37 
__memp_fo
 
__P
((
DB_MPOOLFILE
 *, 
u_t32_t
));

38 
__memp_mf_disrd
 
__P
((
DB_MPOOL
 *, 
MPOOLFILE
 *));

39 
__memp_memli
 
__P
((
DB_ENV
 *, ***, *));

40 
__memp_ut_
 
__P
((
DB_MPOOLFILE
 *, *, 
DB_CACHE_PRIORITY
, 
u_t32_t
));

41 
__memp_ut
 
__P
((
DB_MPOOLFILE
 *, *, 
DB_CACHE_PRIORITY
));

42 
__memp_dty
 
__P
(
DB_MPOOLFILE
 *, *, 
DB_TXN
 *, 
DB_CACHE_PRIORITY
, 
u_t32_t
));

43 
__memp_v_
 
__P
((
DB_ENV
 *));

44 
__memp_v_deroy
 
__P
((
DB_ENV
 *));

45 
__memp_g_chesize
 
__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *, *));

46 
__memp_t_chesize
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t, ));

47 
__memp_t_cfig
 
__P
((
DB_ENV
 *, 
u_t32_t
, ));

48 
__memp_g_cfig
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

49 
__memp_g_mp_max_ݒfd
 
__P
((
DB_ENV
 *, *));

50 
__memp_t_mp_max_ݒfd
 
__P
((
DB_ENV
 *, ));

51 
__memp_g_mp_max_wre
 
__P
((
DB_ENV
 *, *, 
db_timeout_t
 *));

52 
__memp_t_mp_max_wre
 
__P
((
DB_ENV
 *, , 
db_timeout_t
));

53 
__memp_g_mp_mmsize
 
__P
((
DB_ENV
 *, 
size_t
 *));

54 
__memp_t_mp_mmsize
 
__P
((
DB_ENV
 *, 
size_t
));

55 
__memp_me
 
__P
((
DB_ENV
 *, 
u_t8_t
 *, const *, const *, const *, ));

56 
__memp_run
 
__P
((
DB_MPOOLFILE
 *, 
db_pgno_t
, 
u_t32_t
));

57 
__memp_loc_li
 
__P
((
DB_MPOOLFILE
 *, 
u_t32_t
, 
db_pgno_t
 **));

58 
__memp__li
 
__P
((
DB_MPOOLFILE
 *));

59 
__memp_g_li
 
__P
(
DB_MPOOLFILE
 *, 
u_t32_t
 *, 
db_pgno_t
 **));

60 
__memp_exnd_li
 
__P
(
DB_MPOOLFILE
 *, 
u_t32_t
 , 
db_pgno_t
 **));

61 
u_t32_t
 
__memp_bh_iܙy
 
__P
((
BH
 *));

62 
__memp_buck_d
 
__P
((
DB_ENV
 *, 
DB_MPOOL_HASH
 *, 
BH
 *));

63 
__memp_bh_xn
 
__P
((
DB_MPOOL
 *, 
MPOOLFILE
 *
m
, 
BH
 *, *));

64 
__memp_sk_cudj
 
__P
((
DBC
 *, 
db_pgno_t
));

65 
__memp_bh_ze
 
__P
((
DB_MPOOL
 *, 
REGINFO
 *, 
DB_MPOOL_HASH
 *, 
BH
 *, *));

66 
__memp_bh_thaw
 
__P
((
DB_MPOOL
 *, 
REGINFO
 *, 
DB_MPOOL_HASH
 *, 
BH
 *, BH *));

67 
__memp_ݒ
 
__P
((
DB_ENV
 *, ));

68 
__memp_
 
__P
((
DB_ENV
 *, 
DB_MPOOL
 *, 
u_t
, 
u_t32_t
, u_int));

69 
u_t32_t
 
__memp_max_gis
 
__P
((
DB_ENV
 *));

70 
u_t32_t
 
__memp_gi_mux_cou
 
__P
((
DB_ENV
 *));

71 
__memp_v_esh
 
__P
((
DB_ENV
 *));

72 
__memp_gi_
 
__P
((
DB_ENV
 *, , (*)(DB_ENV *, 
db_pgno_t
, *, 
DBT
 *), (*)(DB_ENV *, db_pgno_t, *, DBT *)));

73 
__memp_gi
 
__P
((
DB_ENV
 *, , (*)(DB_ENV *, 
db_pgno_t
, *, 
DBT
 *), (*)(DB_ENV *, db_pgno_t, *, DBT *)));

74 
__memp_g_buck
 
__P
((
DB_MPOOLFILE
 *, 
db_pgno_t
, 
REGINFO
 **, 
DB_MPOOL_HASH
 **));

75 
__memp_size
 
__P
((
DB_MPOOL
 *, 
u_t32_t
, u_int32_t));

76 
__memp_g_che_max
 
__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *));

77 
__memp_t_che_max
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

78 
__memp__
 
__P
((
DB_ENV
 *, 
DB_MPOOL_STAT
 **, 
DB_MPOOL_FSTAT
 ***, 
u_t32_t
));

79 
__memp__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

80 
__memp__t
 
__P
((
DB_ENV
 *, 
u_t32_t
));

81 
__memp__hash
 
__P
((
REGINFO
 *, 
MPOOL
 *, 
u_t32_t
 *));

82 
__memp_wk_fes
 
__P
((
DB_ENV
 *, 
MPOOL
 *, (*__P((DB_ENV *, 
MPOOLFILE
 *, *, 
u_t32_t
 *, u_int32_t)), *, u_int32_t *, u_int32_t));

83 
__memp_sync_
 
__P
((
DB_ENV
 *, 
DB_LSN
 *));

84 
__memp_sync
 
__P
((
DB_ENV
 *, 
u_t32_t
, 
DB_LSN
 *));

85 
__memp_fsync_
 
__P
((
DB_MPOOLFILE
 *));

86 
__memp_fsync
 
__P
((
DB_MPOOLFILE
 *));

87 
__mp_xxx_fh
 
__P
((
DB_MPOOLFILE
 *, 
DB_FH
 **));

88 
__memp_sync_t
 
__P
((
DB_ENV
 *, 
DB_MPOOLFILE
 *, 
u_t32_t
, u_int32_t, u_int32_t *, *));

89 
__memp_mf_sync
 
__P
((
DB_MPOOL
 *, 
MPOOLFILE
 *, ));

90 
__memp_ick_
 
__P
((
DB_ENV
 *, , *));

92 #i
defed
(
__lulus
)

	@../dbinc_auto/mutex_ext.h

2 #idef 
_mux_ext_h_


3 
	#_mux_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__mux_loc
 
__P
((
DB_ENV
 *, , 
u_t32_t
, 
db_mux_t
 *));

10 
__mux_loc_t
 
__P
((
DB_ENV
 *, , , 
u_t32_t
, 
db_mux_t
 *));

11 
__mux_
 
__P
((
DB_ENV
 *, 
db_mux_t
 *));

12 
__mux__t
 
__P
((
DB_ENV
 *, , 
db_mux_t
 *));

13 
__mut_chk
 
__P
((
DB_ENV
 *));

14 
__db_f_mux_
 
__P
((
DB_ENV
 *, 
db_mux_t
, 
u_t32_t
));

15 
__db_f_mux_lock
 
__P
((
DB_ENV
 *, 
db_mux_t
));

16 
__db_f_mux_uock
 
__P
((
DB_ENV
 *, 
db_mux_t
));

17 
__db_f_mux_deroy
 
__P
((
DB_ENV
 *, 
db_mux_t
));

18 
__mux_loc_
 
__P
((
DB_ENV
 *, 
u_t32_t
, 
db_mux_t
 *));

19 
__mux__
 
__P
((
DB_ENV
 *, 
db_mux_t
));

20 
__mux_lock_
 
__P
((
DB_ENV
 *, 
db_mux_t
));

21 
__mux_uock_
 
__P
((
DB_ENV
 *, 
db_mux_t
));

22 
__mux_g_ign
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

23 
__mux_t_ign
 
__P
((
DB_ENV
 *, 
u_t32_t
));

24 
__mux_g_emt
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

25 
__mux_t_emt
 
__P
((
DB_ENV
 *, 
u_t32_t
));

26 
__mux_g_max
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

27 
__mux_t_max
 
__P
((
DB_ENV
 *, 
u_t32_t
));

28 
__mux_g_s_s
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

29 
__mux_t_s_s
 
__P
((
DB_ENV
 *, 
u_t32_t
));

30 
__db_had_mux_
 
__P
((
DB_ENV
 *, 
db_mux_t
, 
u_t32_t
));

31 
__db_had_mux_lock
 
__P
((
DB_ENV
 *, 
db_mux_t
));

32 
__db_had_mux_uock
 
__P
((
DB_ENV
 *, 
db_mux_t
));

33 
__db_had_mux_deroy
 
__P
((
DB_ENV
 *, 
db_mux_t
));

34 
__mux_ݒ
 
__P
((
DB_ENV
 *, ));

35 
__mux_v_esh
 
__P
((
DB_ENV
 *));

36 
__mux_sour_tu
 
__P
((
DB_ENV
 *, 
REGINFO
 *));

37 
__mux__
 
__P
((
DB_ENV
 *, 
DB_MUTEX_STAT
 **, 
u_t32_t
));

38 
__mux__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

39 
__mux__t
 
__P
((
DB_ENV
 *, 
u_t32_t
));

40 
__mux_t_debug_sg
 
__P
((
DB_ENV
 *, cڡ *, 
db_mux_t
, 
u_t32_t
));

41 
__mux_t_debug_s
 
__P
((
DB_ENV
 *, 
DB_MSGBUF
 *, 
db_mux_t
, 
u_t32_t
));

42 
__mux_t_wa_fo
 
__P
((
DB_ENV
 *, 
db_mux_t
, 
u_t32_t
 *, u_int32_t *));

43 
__mux_r
 
__P
((
DB_ENV
 *, 
db_mux_t
));

44 
__db_s_mux_
 
__P
((
DB_ENV
 *, 
db_mux_t
, 
u_t32_t
));

45 
__db_s_mux_lock
 
__P
((
DB_ENV
 *, 
db_mux_t
));

46 
__db_s_mux_uock
 
__P
((
DB_ENV
 *, 
db_mux_t
));

47 
__db_s_mux_deroy
 
__P
((
DB_ENV
 *, 
db_mux_t
));

48 
__db_w32_mux_
 
__P
((
DB_ENV
 *, 
db_mux_t
, 
u_t32_t
));

49 
__db_w32_mux_lock
 
__P
((
DB_ENV
 *, 
db_mux_t
));

50 
__db_w32_mux_uock
 
__P
((
DB_ENV
 *, 
db_mux_t
));

51 
__db_w32_mux_deroy
 
__P
((
DB_ENV
 *, 
db_mux_t
));

53 #i
defed
(
__lulus
)

	@../dbinc_auto/os_ext.h

2 #idef 
_os_ext_h_


3 
	#_os_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__os_abt
 
__P
(());

10 
__os_abh
 
__P
((const *));

11 
__os_umloc
 
__P
((
DB_ENV
 *, 
size_t
, *));

12 
__os_uloc
 
__P
((
DB_ENV
 *, 
size_t
, *));

13 
__os_u
 
__P
((
DB_ENV
 *, *));

14 
__os_rdup
 
__P
((
DB_ENV
 *, const *, *));

15 
__os_oc
 
__P
((
DB_ENV
 *, 
size_t
, size_t, *));

16 
__os_mloc
 
__P
((
DB_ENV
 *, 
size_t
, *));

17 
__os_loc
 
__P
((
DB_ENV
 *, 
size_t
, *));

18 
__os_
 
__P
((
DB_ENV
 *, *));

19 *
__ua_memy
 
__P
((*, cڡ *, 
size_t
));

20 
__os_gtime
 
__P
((
DB_ENV
 *, 
db_timeec
 *));

21 
__os_fs_nzo
 
__P
(());

22 
__os_sut_de_io
 
__P
(());

23 
__os_sut_db_gi
 
__P
(());

24 
__os_sut_iti
 
__P
(());

25 
__os_dli
 
__P
((
DB_ENV
 *, const *, ***, *));

26 
__os_d
 
__P
((
DB_ENV
 *, **, ));

27 
__os_g_o_t_zo
 
__P
(());

28 
__os_g_o
 
__P
(());

29 
__os_g_Ë
 
__P
(());

30 
__os_g_sy
 
__P
(());

31 
__os_t_o
 
__P
(());

32 *
__os_
 
__P
((, *, 
size_t
));

33 
__os_posix_r
 
__P
(());

34 
__os_feid
 
__P
((
DB_ENV
 *, cڡ *, , 
u_t8_t
 *));

35 
__os_fdlock
 
__P
((
DB_ENV
 *, 
DB_FH
 *, 
off_t
, , ));

36 
__os_fsync
 
__P
((
DB_ENV
 *, 
DB_FH
 *));

37 
__os_zofl
 
__P
((
DB_ENV
 *, 
DB_FH
 *));

38 
__os_gv
 
__P
((
DB_ENV
 *, cڡ *, **, 
size_t
));

39 
__os_ݒhd
 
__P
((
DB_ENV
 *, cڡ *, , , 
DB_FH
 **));

40 
__os_ohd
 
__P
((
DB_ENV
 *, 
DB_FH
 *));

41 
__os_r_syach
 
__P
((
DB_ENV
 *, 
REGINFO
 *, 
REGION
 *));

42 
__os_r_sysdach
 
__P
((
DB_ENV
 *, 
REGINFO
 *, ));

43 
__os_mfe
 
__P
((
DB_ENV
 *, *, 
DB_FH
 *, 
size_t
, , **));

44 
__os_unmfe
 
__P
((
DB_ENV
 *, *, 
size_t
));

45 
__os_mkd
 
__P
((
DB_ENV
 *, const *, ));

46 
u_t32_t
 
__db_oags
 
__P
(());

47 
__db_omode
 
__P
((const *));

48 
__os_ݒ
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, u_t32_t, , 
DB_FH
 **));

49 
__os_id
 
__P
((
DB_ENV
 *, 
pid_t
 *, 
db_thadid_t
*));

50 
__os_r_ch
 
__P
((
DB_ENV
 *, 
REGINFO
 *, 
REGION
 *));

51 
__os_r_dach
 
__P
((
DB_ENV
 *, 
REGINFO
 *, ));

52 
__os_me
 
__P
((
DB_ENV
 *, cڡ *, cڡ *, 
u_t32_t
));

53 
__os_io
 
__P
(());

54 *
__db_h
 
__P
((const *));

55 
__os_io
 
__P
((
DB_ENV
 *, , 
DB_FH
 *, 
db_pgno_t
, 
u_t32_t
, u_t32_t, u_t32_t, 
u_t8_t
 *, 
size_t
 *));

56 
__os_ad
 
__P
((
DB_ENV
 *, 
DB_FH
 *, *, 
size_t
, size_t *));

57 
__os_wre
 
__P
((
DB_ENV
 *, 
DB_FH
 *, *, 
size_t
, size_t *));

58 
__os_physwre
 
__P
((
DB_ENV
 *, 
DB_FH
 *, *, 
size_t
, size_t *));

59 
__os_ek
 
__P
((
DB_ENV
 *, 
DB_FH
 *, 
db_pgno_t
, 
u_t32_t
, u_int32_t));

60 
__os_p
 
__P
((
DB_ENV
 *, 
u_lg
, u_long));

61 
u_t32_t
 
__os_
 
__P
((
DB_ENV
 *));

62 
__os_exis
 
__P
((
DB_ENV
 *, const *, *));

63 
__os_iofo
 
__P
((
DB_ENV
 *, cڡ *, 
DB_FH
 *, 
u_t32_t
 *, u_int32_t *, u_int32_t *));

64 
__os_tmpd
 
__P
((
DB_ENV
 *, 
u_t32_t
));

65 
__os_un
 
__P
((
DB_ENV
 *, 
DB_FH
 *, 
db_pgno_t
, 
u_t32_t
));

66 
__os_unique_id
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

67 
__os_gi_uƚk
 
__P
((
DB_ENV
 *, const *));

68 
__os_uƚk
 
__P
((
DB_ENV
 *, const *));

69 
__os_yld
 
__P
((
DB_ENV
 *));

70 #ide
HAVE_FCLOSE


71 
fo
 
__P
((
FILE
 *));

73 #ide
HAVE_FGETC


74 
fgc
 
__P
((
FILE
 *));

76 #ide
HAVE_FGETS


77 *
fgs
 
__P
((*, , 
FILE
 *));

79 #ide
HAVE_FOPEN


80 
FILE
 *
fݒ
 
__P
((const *, const *));

82 #ide
HAVE_FWRITE


83 
size_t
 
fwre
 
__P
((cڡ *, size_t, size_t, 
FILE
 *));

85 #ide
HAVE_LOCALTIME


86 
tm
 *
loime
 
__P
((cڡ 
time_t
 *));

88 #ide
HAVE_TIME


89 
time_t
 
time
 
__P
((time_t *));

91 #ifde
HAVE_QNX


92 
__os_qnx_gi_ݒ
 
__P
((
DB_ENV
 *, cڡ *, , , 
DB_FH
 *));

94 #ifde
HAVE_QNX


95 
__os_qnx_shmme
 
__P
((
DB_ENV
 *, const *, **));

97 #ide
HAVE_TIME


98 
time_t
 
time
 
__P
((time_t *));

100 
__os_is_w
 
__P
(());

101 #ifde
HAVE_REPLICATION_THREADS


102 
__os_g_Ë
 
__P
(());

104 
__os_mkd
 
__P
((
DB_ENV
 *, const *, ));

106 #i
defed
(
__lulus
)

	@../dbinc_auto/qam_auto.h

3 #idef 
__qam_AUTO_H


4 
	#__qam_AUTO_H


	)

5 
	#DB___qam_cf
 84

	)

6 
	s___qam_cf_gs
 {

7 
u_t32_t
 
	mty
;

8 
DB_TXN
 *
	mtx
;

9 
DB_LSN
 
	mev_l
;

10 
t32_t
 
	mfeid
;

11 
db_o_t
 
	mo
;

12 
db_pgno_t
 
	mma_pgno
;

13 } 
	t__qam_cf_gs
;

15 
	#DB___qam_mvr
 85

	)

16 
	s___qam_mvr_gs
 {

17 
u_t32_t
 
	mty
;

18 
DB_TXN
 *
	mtx
;

19 
DB_LSN
 
	mev_l
;

20 
u_t32_t
 
	mcode
;

21 
t32_t
 
	mfeid
;

22 
db_o_t
 
	md_f
;

23 
db_o_t
 
	mw_f
;

24 
db_o_t
 
	md_cur
;

25 
db_o_t
 
	mw_cur
;

26 
DB_LSN
 
	mm
;

27 
db_pgno_t
 
	mma_pgno
;

28 } 
	t__qam_mvr_gs
;

30 
	#DB___qam_d
 79

	)

31 
	s___qam_d_gs
 {

32 
u_t32_t
 
	mty
;

33 
DB_TXN
 *
	mtx
;

34 
DB_LSN
 
	mev_l
;

35 
t32_t
 
	mfeid
;

36 
DB_LSN
 
	ml
;

37 
db_pgno_t
 
	mpgno
;

38 
u_t32_t
 
	mdx
;

39 
db_o_t
 
	mo
;

40 } 
	t__qam_d_gs
;

42 
	#DB___qam_add
 80

	)

43 
	s___qam_add_gs
 {

44 
u_t32_t
 
	mty
;

45 
DB_TXN
 *
	mtx
;

46 
DB_LSN
 
	mev_l
;

47 
t32_t
 
	mfeid
;

48 
DB_LSN
 
	ml
;

49 
db_pgno_t
 
	mpgno
;

50 
u_t32_t
 
	mdx
;

51 
db_o_t
 
	mo
;

52 
DBT
 
	mda
;

53 
u_t32_t
 
	mvag
;

54 
DBT
 
	mdda
;

55 } 
	t__qam_add_gs
;

57 
	#DB___qam_dext
 83

	)

58 
	s___qam_dext_gs
 {

59 
u_t32_t
 
	mty
;

60 
DB_TXN
 *
	mtx
;

61 
DB_LSN
 
	mev_l
;

62 
t32_t
 
	mfeid
;

63 
DB_LSN
 
	ml
;

64 
db_pgno_t
 
	mpgno
;

65 
u_t32_t
 
	mdx
;

66 
db_o_t
 
	mo
;

67 
DBT
 
	mda
;

68 } 
	t__qam_dext_gs
;

	@../dbinc_auto/qam_ext.h

2 #idef 
_qam_ext_h_


3 
	#_qam_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__qam_posi
 
__P
((
DBC
 *, 
db_o_t
 *, 
db_lockmode_t
, 
u_t32_t
, *));

10 
__qam_pem
 
__P
((
DBC
 *, 
QPAGE
 *, 
u_t32_t
, 
db_o_t
, 
DBT
 *));

11 
__qam_nd
 
__P
((
DBC
 *, 
DBT
 *, DBT *));

12 
__qamc_dup
 
__P
((
DBC
 *, DBC *));

13 
__qamc_
 
__P
((
DBC
 *));

14 
__qam_un
 
__P
((
DBC
 *, 
u_t32_t
 *));

15 
__qam_de
 
__P
((
DBC
 *, 
DBT
 *));

16 
__qam_cf_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, 
db_o_t
, 
db_pgno_t
));

17 
__qam_cf_ad
 
__P
((
DB_ENV
 *, *, 
__qam_cf_gs
 **));

18 
__qam_mvr_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, 
db_o_t
, db_o_t, db_o_t, db_o_t, DB_LSN *, 
db_pgno_t
));

19 
__qam_mvr_ad
 
__P
((
DB_ENV
 *, *, 
__qam_mvr_gs
 **));

20 
__qam_d_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, DB_LSN *, 
db_pgno_t
, u_t32_t, 
db_o_t
));

21 
__qam_d_ad
 
__P
((
DB_ENV
 *, *, 
__qam_d_gs
 **));

22 
__qam_add_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, DB_LSN *, 
db_pgno_t
, u_t32_t, 
db_o_t
, cڡ 
DBT
 *, u_int32_t, const DBT *));

23 
__qam_add_ad
 
__P
((
DB_ENV
 *, *, 
__qam_add_gs
 **));

24 
__qam_dext_log
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, DB_LSN *, 
db_pgno_t
, u_t32_t, 
db_o_t
, cڡ 
DBT
 *));

25 
__qam_dext_ad
 
__P
((
DB_ENV
 *, *, 
__qam_dext_gs
 **));

26 
__qam__cov
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

27 
__qam_cf_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

28 
__qam_mvr_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

29 
__qam_d_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

30 
__qam_add_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

31 
__qam_dext_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

32 
__qam__t
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

33 
__qam_msw
 
__P
((
PAGE
 *));

34 
__qam_pg_out
 
__P
((
DB_ENV
 *, 
db_pgno_t
, *, 
DBT
 *));

35 
__qam_robe
 
__P
((
DB
 *, 
db_pgno_t
, 
DB_TXN
 *, *, 
qam_obe_mode
, 
DB_CACHE_PRIORITY
, 
u_t32_t
));

36 
__qam_fo
 
__P
((
DB
 *, 
db_pgno_t
));

37 
__qam_emove
 
__P
((
DB
 *, 
db_pgno_t
));

38 
__qam_sync
 
__P
((
DB
 *));

39 
__qam_g_fi
 
__P
((
DB
 *, 
QUEUE_FILELIST
 **));

40 
__qam_ex_mes
 
__P
((
DB_ENV
 *, *, ***));

41 
__qam_exid
 
__P
((
DB
 *, 
u_t8_t
 *, 
u_t32_t
));

42 
__qam_me
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, 
qam_me_
));

43 
__qam_db_
 
__P
((
DB
 *));

44 
__qam_db_o
 
__P
((
DB
 *, 
u_t32_t
));

45 
__qam_g_exsize
 
__P
((
DB
 *, 
u_t32_t
 *));

46 
__queue_gefo
 
__P
((
DB
 *, 
db_pgno_t
 *, db_pgno_*, *, , 
u_t32_t
));

47 
__db_queue
 
__P
((
DB
 *, 
u_t32_t
));

48 
__qam_move
 
__P
((
DB
 *, 
DB_TXN
 *, const *, const *));

49 
__qam_me
 
__P
((
DB
 *, 
DB_TXN
 *, const *, const *, const *));

50 
__qam_m_ags
 
__P
((
DB
 *, 
u_t32_t
 *, u_int32_t *));

51 
__qam_t_ags
 
__P
((
DB
 *, 
u_t32_t
 *
ag
));

52 
__qam_ݒ
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, 
db_pgno_t
, , 
u_t32_t
));

53 
__qam_t_ext_da
 
__P
((
DB
*, const *));

54 
__qam_machk
 
__P
((
DB
 *, cڡ *, 
QMETA
 *));

55 
__qam_w_fe
 
__P
((
DB
 *, 
DB_TXN
 *, 
DB_FH
 *, const *));

56 
__qam_cf_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

57 
__qam_mvr_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

58 
__qam_d_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

59 
__qam_dext_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

60 
__qam_add_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

61 
__qam_
 
__P
((
DBC
 *, *, 
u_t32_t
));

62 
__qam__t
 
__P
((
DBC
 *, 
u_t32_t
));

63 
__db_no_queue_am
 
__P
((
DB_ENV
 *));

64 
__qam_31_qamma
 
__P
((
DB
 *, *, 
u_t8_t
 *));

65 
__qam_32_qamma
 
__P
((
DB
 *, *, 
u_t8_t
 *));

66 
__qam_vrfy_ma
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
QMETA
 *, 
db_pgno_t
, 
u_t32_t
));

67 
__qam_vrfy_da
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
QPAGE
 *, 
db_pgno_t
, 
u_t32_t
));

68 
__qam_vrfy_ruu
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
u_t32_t
));

69 
__qam_vrfy_wkqueue
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, *, (*)(*, cڡ *), 
u_t32_t
));

70 
__qam_lvage
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
db_pgno_t
, 
PAGE
 *, *, (*)(*, cڡ *), 
u_t32_t
));

72 #i
defed
(
__lulus
)

	@../dbinc_auto/rep_auto.h

3 #idef 
__p_AUTO_H


4 
	#__p_AUTO_H


	)

5 
	s___p_upde_gs
 {

6 
DB_LSN
 
	mf_l
;

7 
u_t32_t
 
	mf_vs
;

8 
u_t32_t
 
	mnum_fes
;

9 } 
	t__p_upde_gs
;

11 
	s___p_fefo_gs
 {

12 
u_t32_t
 
	mpgsize
;

13 
db_pgno_t
 
	mpgno
;

14 
db_pgno_t
 
	mmax_pgno
;

15 
u_t32_t
 
	mfum
;

16 
t32_t
 
	mid
;

17 
u_t32_t
 
	mty
;

18 
u_t32_t
 
	mags
;

19 
DBT
 
	muid
;

20 
DBT
 
	mfo
;

21 } 
	t__p_fefo_gs
;

	@../dbinc_auto/rep_ext.h

2 #idef 
_p_ext_h_


3 
	#_p_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__p_upde_buf
 
__P
((
u_t8_t
 *, 
size_t
, size_*, 
DB_LSN
 *, 
u_t32_t
, u_int32_t));

10 
__p_upde_ad
 
__P
((
DB_ENV
 *, *, **, 
__p_upde_gs
 **));

11 
__p_fefo_buf
 
__P
((
u_t8_t
 *, 
size_t
, size_*, 
u_t32_t
, 
db_pgno_t
, db_pgno_t, u_t32_t, 
t32_t
, u_t32_t, u_t32_t, cڡ 
DBT
 *, const DBT *));

12 
__p_fefo_ad
 
__P
((
DB_ENV
 *, *, **, 
__p_fefo_gs
 **));

13 
__p_upde_q
 
__P
((
DB_ENV
 *, ));

14 
__p_ge_q
 
__P
((
DB_ENV
 *, , 
DBT
 *));

15 
__p_upde_tup
 
__P
((
DB_ENV
 *, , 
REP_CONTROL
 *, 
DBT
 *));

16 
__p_bulk_ge
 
__P
((
DB_ENV
 *, , 
REP_CONTROL
 *, 
DBT
 *));

17 
__p_ge
 
__P
((
DB_ENV
 *, , 
REP_CONTROL
 *, 
DBT
 *));

18 
__p_ge_
 
__P
((
DB_ENV
 *, , 
DBT
 *));

19 
__p__nup
 
__P
((
DB_ENV
 *, 
REP
 *, ));

20 
__p_pgg_q
 
__P
((
DB_ENV
 *, 
REP
 *, 
__p_fefo_gs
 *, 
u_t32_t
));

21 
__p_ffo_loc
 
__P
((
DB_ENV
 *, 
__p_fefo_gs
 *, __rep_fileinfo_args **));

22 
__p_move__fe
 
__P
((
DB_ENV
 *));

23 
__p_t_
 
__P
((
DB_ENV
 *));

24 
__p_e
 
__P
((
DB_ENV
 *, , , 
u_t32_t
));

25 
__p_ve1
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, 
DBT
 *, ));

26 
__p_ve2
 
__P
((
DB_ENV
 *, 
DBT
 *, ));

27 
__p_upde_g
 
__P
((
DB_ENV
 *, 
db_timeec
 *));

28 
__p_i_ged
 
__P
((
DB_ENV
 *));

29 
__p_a_b_loc
 
__P
((
DB_ENV
 *, ));

30 
__p_a_g
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, 
DBT
 *, ));

31 
__p_a_check
 
__P
((
DB_ENV
 *, ));

32 
__p_a_esh
 
__P
((
DB_ENV
 *));

33 
__p_a_expe
 
__P
((
DB_ENV
 *, ));

34 
db_timeout_t
 
__p_a_watime
 
__P
((
DB_ENV
 *));

35 
__p_eq
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, ));

36 
__p_log
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, 
DBT
 *, 
time_t
, 
DB_LSN
 *));

37 
__p_bulk_log
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, 
DBT
 *, 
time_t
, 
DB_LSN
 *));

38 
__p_logq
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, 
DBT
 *, ));

39 
__p_logg_q
 
__P
((
DB_ENV
 *, 
REP
 *, 
DB_LSN
 *, 
u_t32_t
));

40 
__p_logady
 
__P
((
DB_ENV
 *, 
REP
 *, 
time_t
, 
DB_LSN
 *));

41 
__p_v_
 
__P
((
DB_ENV
 *));

42 
__p_v_deroy
 
__P
((
DB_ENV
 *));

43 
__p_g_cfig
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

44 
__p_t_cfig
 
__P
((
DB_ENV
 *, 
u_t32_t
, ));

45 
__p_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
u_t32_t
));

46 
__p__db
 
__P
((
DB_ENV
 *, , 
pdb_t
));

47 
__p_g_lim
 
__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *));

48 
__p_t_lim
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

49 
__p_t_nses
 
__P
((
DB_ENV
 *, ));

50 
__p_g_nses
 
__P
((
DB_ENV
 *, *));

51 
__p_t_iܙy
 
__P
((
DB_ENV
 *, ));

52 
__p_g_iܙy
 
__P
((
DB_ENV
 *, *));

53 
__p_t_timeout
 
__P
((
DB_ENV
 *, , 
db_timeout_t
));

54 
__p_g_timeout
 
__P
((
DB_ENV
 *, , 
db_timeout_t
 *));

55 
__p_g_que
 
__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *));

56 
__p_t_que
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

57 
__p_t_t
 
__P
((
DB_ENV
 *, , (*)(DB_ENV *, cڡ 
DBT
 *, cڡ DBT *, cڡ 
DB_LSN
 *, , 
u_t32_t
)));

58 
__p_t_a
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

59 
__p_ush
 
__P
((
DB_ENV
 *));

60 
__p_sync
 
__P
((
DB_ENV
 *, 
u_t32_t
));

61 
__p_oss_mesge
 
__P
((
DB_ENV
 *, 
DBT
 *, DBT *, , 
DB_LSN
 *));

62 
__p_y
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, 
DBT
 *, 
DB_LSN
 *, *, DB_LSN *));

63 
__p_oss_txn
 
__P
((
DB_ENV
 *, 
DBT
 *));

64 
__p_nd_q
 
__P
((
DB_ENV
 *, ));

65 
__p_check_deq
 
__P
((
DB_ENV
 *, 
REP
 *));

66 
__p_ݒ
 
__P
((
DB_ENV
 *));

67 
__p_v_esh
 
__P
((
DB_ENV
 *));

68 
__p_v_o
 
__P
((
DB_ENV
 *));

69 
__p_eo
 
__P
((
DB_ENV
 *));

70 
__p_ofes
 
__P
((
DB_ENV
 *, ));

71 
__p_wre_eg
 
__P
((
DB_ENV
 *, 
u_t32_t
));

72 
__p_wre_g
 
__P
((
DB_ENV
 *, 
u_t32_t
));

73 
__p__
 
__P
((
DB_ENV
 *, 
DB_REP_STAT
 **, 
u_t32_t
));

74 
__p__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

75 
__p__t
 
__P
((
DB_ENV
 *, 
u_t32_t
));

76 
__p_bulk_mesge
 
__P
((
DB_ENV
 *, 
REP_BULK
 *, 
REP_THROTTLE
 *, 
DB_LSN
 *, cڡ 
DBT
 *, 
u_t32_t
));

77 
__p_nd_bulk
 
__P
((
DB_ENV
 *, 
REP_BULK
 *, 
u_t32_t
));

78 
__p_bulk_loc
 
__P
((
DB_ENV
 *, 
REP_BULK
 *, , 
u_t
 *, 
u_t32_t
 *, u_int32_t));

79 
__p_bulk_
 
__P
((
DB_ENV
 *, 
REP_BULK
 *, 
u_t32_t
));

80 
__p_nd_mesge
 
__P
((
DB_ENV
 *, , 
u_t32_t
, 
DB_LSN
 *, cڡ 
DBT
 *, u_int32_t, u_int32_t));

81 
__p_w_ma
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, ));

82 
__p_nrchive
 
__P
((
DB_ENV
 *));

83 
__p_nd_ve
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, , , , 
u_t32_t
, u_int32_t, , u_int32_t, u_int32_t));

84 
__p_e_de
 
__P
((
DB_ENV
 *, 
REP
 *));

85 
__p_grow_ses
 
__P
((
DB_ENV
 *, ));

86 
__v_p_r
 
__P
((
DB_ENV
 *, ));

87 
__v_db_p_ex
 
__P
((
DB_ENV
 *));

88 
__db_p_r
 
__P
((
DB
 *, , , ));

89 
___p_r
 
__P
((
DB_ENV
 *));

90 
___p_ex
 
__P
((
DB_ENV
 *));

91 
__p_lockout_i
 
__P
((
DB_ENV
 *, 
REP
 *));

92 
__p_lockout_y
 
__P
((
DB_ENV
 *, 
REP
 *, 
u_t32_t
));

93 
__p_lockout_msg
 
__P
((
DB_ENV
 *, 
REP
 *, 
u_t32_t
));

94 
__p_nd_thrَe
 
__P
((
DB_ENV
 *, , 
REP_THROTTLE
 *, 
u_t32_t
, u_int32_t));

95 
u_t32_t
 
__p_msg_to_d
 
__P
((u_int32_t, u_int32_t));

96 
u_t32_t
 
__p_msg_om_d
 
__P
((u_int32_t, u_int32_t));

97 
__p_t
 
__P
((
DB_ENV
 *, cڡ *, ...)
__ibu__
 ((
__fm__
 (
__tf__
, 2, 3)));

98 
__p_t_mesge
 
__P
((
DB_ENV
 *, , 
REP_CONTROL
 *, *, 
u_t32_t
));

99 
__p_fe_evt
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

100 
__p_vify
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, 
DBT
 *, , 
time_t
));

101 
__p_vify_
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, ));

102 
__p_vify_q
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, ));

103 
__p_vify_mch
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, 
time_t
));

104 
__p_log_backup
 
__P
((
DB_ENV
 *, 
REP
 *, 
DB_LOGC
 *, 
DB_LSN
 *));

106 #i
defed
(
__lulus
)

	@../dbinc_auto/repmgr_ext.h

2 #idef 
_pmgr_ext_h_


3 
	#_pmgr_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__pmgr__ei
 
__P
((
DB_ENV
 *, ));

10 
__pmgr_become_ma
 
__P
((
DB_ENV
 *));

11 
__pmgr_t
 
__P
((
DB_ENV
 *, , 
u_t32_t
));

12 
__pmgr_o
 
__P
((
DB_ENV
 *));

13 
__pmgr_t_ack_picy
 
__P
((
DB_ENV
 *, ));

14 
__pmgr_g_ack_picy
 
__P
((
DB_ENV
 *, *));

15 
__pmgr_v_
 
__P
((
DB_ENV
 *, 
DB_REP
 *));

16 
__pmgr_v_deroy
 
__P
((
DB_ENV
 *, 
DB_REP
 *));

17 
__pmgr__thads
 
__P
((
DB_ENV
 *));

18 
__pmgr_t_lol_se
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, 
u_t32_t
));

19 
__pmgr_add_me_se
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, *, 
u_t32_t
));

20 *
__pmgr_msg_thad
 
__P
((*));

21 
__pmgr_hd_evt
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

22 
__pmgr_ash_gi
 
__P
((
DB_ENV
 *));

23 
__pmgr_nd
 
__P
((
DB_ENV
 *, cڡ 
DBT
 *, cڡ DBT *, cڡ 
DB_LSN
 *, , 
u_t32_t
));

24 
__pmgr_nd_e
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *, 
u_t
, cڡ 
DBT
 *, const DBT *));

25 
__pmgr_is_rmt
 
__P
((
DB_ENV
 *, cڡ 
DB_LSN
 *));

26 
__pmgr_bu_ci
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *, ));

27 
__pmgr_nup_ci
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *));

28 
__pmgr_fd_se
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
));

29 
__pmgr_ck_Ïddr
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, 
ADDRINFO
 *, 
pmgr_Ïddr_t
 *));

30 
__pmgr_gaddr
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, , 
ADDRINFO
 **));

31 
__pmgr_add_se
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, 
REPMGR_SITE
 **));

32 
__pmgr_t_
 
__P
((
DB_ENV
 *, 
DB_REP
 *));

33 
__pmgr_li
 
__P
((
DB_ENV
 *));

34 
__pmgr_t_o
 
__P
((
DB_ENV
 *));

35 
__pmgr_t_deroy
 
__P
((
DB_ENV
 *, 
DB_REP
 *));

36 
__pmgr_thad_t
 
__P
((
DB_ENV
 *, 
REPMGR_RUNNABLE
 *));

37 
__pmgr_thad_jo
 
__P
((
REPMGR_RUNNABLE
 *));

38 
__pmgr_t_nblockg
 
__P
((
sock_t
));

39 
__pmgr_wake_wag_nds
 
__P
((
DB_ENV
 *));

40 
__pmgr_awa_ack
 
__P
((
DB_ENV
 *, cڡ 
DB_LSN
 *));

41 
__pmgr_compu_wa_ddle
 
__P
((
DB_ENV
*, 
timeec
 *, 
db_timeout_t
));

42 
__pmgr__sync
 
__P
((
DB_ENV
 *, 
DB_REP
 *));

43 
__pmgr_o_sync
 
__P
((
DB_ENV
 *));

44 
__pmgr_t_
 
__P
((
DB_ENV
 *, 
DB_REP
 *));

45 
__pmgr_lock_mux
 
__P
((
mgr_mux_t
 *));

46 
__pmgr_uock_mux
 
__P
((
mgr_mux_t
 *));

47 
__pmgr_sigl
 
__P
((
cd_v_t
 *));

48 
__pmgr_wake_ma_thad
 
__P
((
DB_ENV
*));

49 
__pmgr_wrev
 
__P
((
sock_t
, 
db_iovec_t
 *, , 
size_t
 *));

50 
__pmgr_adv
 
__P
((
sock_t
, 
db_iovec_t
 *, , 
size_t
 *));

51 
__pmgr__lo
 
__P
((
DB_ENV
 *));

52 
__pmgr_queue_
 
__P
((
DB_ENV
 *, 
DB_REP
 *));

53 
__pmgr_queue_deroy
 
__P
((
DB_ENV
 *));

54 
__pmgr_queue_g
 
__P
((
DB_ENV
 *, 
REPMGR_MESSAGE
 **));

55 
__pmgr_queue_put
 
__P
((
DB_ENV
 *, 
REPMGR_MESSAGE
 *));

56 
__pmgr_queue_size
 
__P
((
DB_ENV
 *));

57 *
__pmgr__thad
 
__P
((*));

58 
__pmgr_ac
 
__P
((
DB_ENV
 *));

59 
__pmgr_y_cis
 
__P
((
DB_ENV
 *));

60 
__pmgr_f_y_cis
 
__P
((
DB_ENV
 *));

61 
__pmgr_c_se
 
__P
((
DB_ENV
 *, 
u_t
 
eid
));

62 
__pmgr_nd_hdshake
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *));

63 
__pmgr_ad_om_se
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *));

64 
__pmgr_wre_some
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *));

65 
__pmgr__
 
__P
((
DB_ENV
 *, 
DB_REPMGR_STAT
 **, 
u_t32_t
));

66 
__pmgr__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

67 
__pmgr_se_li
 
__P
((
DB_ENV
 *, 
u_t
 *, 
DB_REPMGR_SITE
 **));

68 #ide
HAVE_REPLICATION_THREADS


69 
__pmgr_o
 
__P
((
DB_ENV
 *));

71 #ide
HAVE_REPLICATION_THREADS


72 
__pmgr_add_me_se
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, *, 
u_t32_t
));

74 #ide
HAVE_REPLICATION_THREADS


75 
__pmgr_g_ack_picy
 
__P
((
DB_ENV
 *, *));

77 #ide
HAVE_REPLICATION_THREADS


78 
__pmgr_t_ack_picy
 
__P
((
DB_ENV
 *, ));

80 #ide
HAVE_REPLICATION_THREADS


81 
__pmgr_t_lol_se
 
__P
((
DB_ENV
 *, cڡ *, 
u_t
, 
u_t32_t
));

83 #ide
HAVE_REPLICATION_THREADS


84 
__pmgr_se_li
 
__P
((
DB_ENV
 *, 
u_t
 *, 
DB_REPMGR_SITE
 **));

86 #ide
HAVE_REPLICATION_THREADS


87 
__pmgr_t
 
__P
((
DB_ENV
 *, , 
u_t32_t
));

89 #ide
HAVE_REPLICATION_THREADS


90 
__pmgr__
 
__P
((
DB_ENV
 *, 
DB_REPMGR_STAT
 **, 
u_t32_t
));

92 #ide
HAVE_REPLICATION_THREADS


93 
__pmgr__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

95 #ide
HAVE_REPLICATION_THREADS


96 
__pmgr_hd_evt
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

98 
__pmgr_schedu_ci_m
 
__P
((
DB_ENV
 *, 
u_t
, ));

99 
__pmgr_t_f_adg
 
__P
((
REPMGR_CONNECTION
 *));

100 
__pmgr_w_ci
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 **, 
sock_t
, 
u_t32_t
));

101 
__pmgr_w_se
 
__P
((
DB_ENV
 *, 
REPMGR_SITE
**, cڡ 
pmgr_Ïddr_t
 *, ));

102 
__pmgr_nup_Ïddr
 
__P
((
DB_ENV
 *, 
pmgr_Ïddr_t
 *));

103 
__pmgr_iovec_
 
__P
((
REPMGR_IOVECS
 *));

104 
__pmgr_add_bufr
 
__P
((
REPMGR_IOVECS
 *, *, 
size_t
));

105 
__pmgr_add_dbt
 
__P
((
REPMGR_IOVECS
 *, cڡ 
DBT
 *));

106 
__pmgr_upde_csumed
 
__P
((
REPMGR_IOVECS
 *, 
size_t
));

107 
__pmgr_e_my_addr
 
__P
((
DB_ENV
 *, 
DBT
 *));

108 
u_t
 
__pmgr_g_nses
 
__P
((
DB_REP
 *));

109 
__pmgr_thad_u
 
__P
((
DB_ENV
 *, ));

110 *
__pmgr_fm_eid_loc
 
__P
((
DB_REP
 *, , *));

111 *
__pmgr_fm_se_loc
 
__P
((
REPMGR_SITE
 *, *));

112 
__pmgr_timeec_diff_now
 
__P
((
DB_ENV
 *, 
db_timeec
 *, db_timespec *));

113 
__pmgr_pt
 
__P
((
DB_ENV
 *, 
u_t32_t
));

114 
__pmgr_w_
 
__P
((
DB_ENV
 *));

116 #i
defed
(
__lulus
)

	@../dbinc_auto/rpc_client_ext.h

2 #idef 
_c__ext_h_


3 
	#_c__ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__db_v_t_c_rv
 
__P
((
DB_ENV
 *, *, cڡ *, , , 
u_t32_t
));

10 
__db_v_o_wp
 
__P
((
DB_ENV
 *, 
u_t32_t
));

11 
__db_v_ݒ_wp
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, ));

12 
__db_db_ݒ_wp
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
, ));

13 
__db_esh
 
__P
((
DB_ENV
 *));

14 
__db_tcy
 
__P
((
DB_ENV
 *, 
DBT
 *, *, 
u_t32_t
, **, u_int32_t *));

15 
__db_txn_d
 
__P
((
DB_TXN
 *));

16 
__db_txn_tup
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, DB_TXN *, 
u_t32_t
));

17 
__db_c_esh
 
__P
((
DBC
 *));

18 
__db_c_tup
 
__P
((
u_t
, 
DB
 *, 
DBC
 **));

19 
__db_dbo_comm
 
__P
((
DB
 *));

20 
__db_dbv_g
 
__P
((
DB_ENV
 *));

21 
__db_v_
 
__P
((
DB_ENV
 *, ));

22 
__db_v_cdsgroup_beg
 
__P
((
DB_ENV
 *, 
DB_TXN
 **));

23 
__db_v_o
 
__P
((
DB_ENV
 *, 
u_t32_t
));

24 
__db_v_dbmove
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
u_t32_t
));

25 
__db_v_dbme
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, cڡ *, cڡ *, 
u_t32_t
));

26 
__db_v_g_chesize
 
__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *, *));

27 
__db_v_g_y_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

28 
__db_v_g_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

29 
__db_v_g_home
 
__P
((
DB_ENV
 *, const * *));

30 
__db_v_g_ݒ_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

31 
__db_v_ݒ
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, ));

32 
__db_v_move
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

33 
__db_v_t_chesize
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t, ));

34 
__db_v_t_y
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
));

35 
__db_v_t_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
, ));

36 
__db_v_txn_beg
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, DB_TXN **, 
u_t32_t
));

37 
__db_v_txn_cov
 
__P
((
DB_ENV
 *, 
DB_PREPLIST
 *, , *, 
u_t32_t
));

38 
__db_db_
 
__P
((
DB
 *, 
DB_ENV
 *, 
u_t32_t
));

39 
__db_db_assoc
 
__P
((
DB
 *, 
DB_TXN
 *, DB *, (*)(DB *, cڡ 
DBT
 *, cڡ DBT *, DBT *), 
u_t32_t
));

40 
__db_db_o
 
__P
((
DB
 *, 
u_t32_t
));

41 
__db_db_curs
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBC
 **, 
u_t32_t
));

42 
__db_db_d
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

43 
__db_db_g
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

44 
__db_db_g_bt_mkey
 
__P
((
DB
 *, 
u_t32_t
 *));

45 
__db_db_g_dbme
 
__P
((
DB
 *, const * *, const * *));

46 
__db_db_g_y_ags
 
__P
((
DB
 *, 
u_t32_t
 *));

47 
__db_db_g_ags
 
__P
((
DB
 *, 
u_t32_t
 *));

48 
__db_db_g_h_f
 
__P
((
DB
 *, 
u_t32_t
 *));

49 
__db_db_g_h_m
 
__P
((
DB
 *, 
u_t32_t
 *));

50 
__db_db_g_ld
 
__P
((
DB
 *, *));

51 
__db_db_g_ݒ_ags
 
__P
((
DB
 *, 
u_t32_t
 *));

52 
__db_db_g_gesize
 
__P
((
DB
 *, 
u_t32_t
 *));

53 
__db_db_g_iܙy
 
__P
((
DB
 *, 
DB_CACHE_PRIORITY
 *));

54 
__db_db_g_q_exsize
 
__P
((
DB
 *, 
u_t32_t
 *));

55 
__db_db_g__dim
 
__P
((
DB
 *, *));

56 
__db_db_g__n
 
__P
((
DB
 *, 
u_t32_t
 *));

57 
__db_db_g__d
 
__P
((
DB
 *, *));

58 
__db_db_jo
 
__P
((
DB
 *, 
DBC
 **, DBC **, 
u_t32_t
));

59 
__db_db_key_nge
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
DB_KEY_RANGE
 *, 
u_t32_t
));

60 
__db_db_ݒ
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
, ));

61 
__db_db_pg
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
));

62 
__db_db_put
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

63 
__db_db_move
 
__P
((
DB
 *, cڡ *, cڡ *, 
u_t32_t
));

64 
__db_db_me
 
__P
((
DB
 *, cڡ *, cڡ *, cڡ *, 
u_t32_t
));

65 
__db_db_t_bt_mkey
 
__P
((
DB
 *, 
u_t32_t
));

66 
__db_db_t_y
 
__P
((
DB
 *, cڡ *, 
u_t32_t
));

67 
__db_db_t_ags
 
__P
((
DB
 *, 
u_t32_t
));

68 
__db_db_t_h_f
 
__P
((
DB
 *, 
u_t32_t
));

69 
__db_db_t_h_m
 
__P
((
DB
 *, 
u_t32_t
));

70 
__db_db_t_ld
 
__P
((
DB
 *, ));

71 
__db_db_t_gesize
 
__P
((
DB
 *, 
u_t32_t
));

72 
__db_db_t_iܙy
 
__P
((
DB
 *, 
DB_CACHE_PRIORITY
));

73 
__db_db_t_q_exsize
 
__P
((
DB
 *, 
u_t32_t
));

74 
__db_db_t__dim
 
__P
((
DB
 *, ));

75 
__db_db_t__n
 
__P
((
DB
 *, 
u_t32_t
));

76 
__db_db_t__d
 
__P
((
DB
 *, ));

77 
__db_db_
 
__P
((
DB
 *, 
DB_TXN
 *, *, 
u_t32_t
));

78 
__db_db_sync
 
__P
((
DB
 *, 
u_t32_t
));

79 
__db_db_un
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
 *, u_int32_t));

80 
__db_dbc_o
 
__P
((
DBC
 *));

81 
__db_dbc_cou
 
__P
((
DBC
 *, 
db_o_t
 *, 
u_t32_t
));

82 
__db_dbc_d
 
__P
((
DBC
 *, 
u_t32_t
));

83 
__db_dbc_dup
 
__P
((
DBC
 *, DBC **, 
u_t32_t
));

84 
__db_dbc_g
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

85 
__db_dbc_g_iܙy
 
__P
((
DBC
 *, 
DB_CACHE_PRIORITY
 *));

86 
__db_dbc_pg
 
__P
((
DBC
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
));

87 
__db_dbc_put
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
));

88 
__db_dbc_t_iܙy
 
__P
((
DBC
 *, 
DB_CACHE_PRIORITY
));

89 
__db_txn_abt
 
__P
((
DB_TXN
 *));

90 
__db_txn_comm
 
__P
((
DB_TXN
 *, 
u_t32_t
));

91 
__db_txn_disrd
 
__P
((
DB_TXN
 *, 
u_t32_t
));

92 
__db_txn_e
 
__P
((
DB_TXN
 *, 
u_t8_t
 *));

93 
__db_dbp_
 
__P
((
DB
 *));

94 
__db_dbc_
 
__P
((
DBC
 *));

95 
__db_dbv_
 
__P
((
DB_ENV
 *));

96 
__db_txn_
 
__P
((
DB_TXN
 *));

97 
__db_v__t
 
__P
((
DB_ENV
 *, , 
__v__y
 *));

98 
__db_v_ݒ_t
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, , 
__v_ݒ_y
 *));

99 
__db_v_move_t
 
__P
((
DB_ENV
 *, cڡ *, 
u_t32_t
, 
__v_move_y
 *));

100 
__db_txn_abt_t
 
__P
((
DB_TXN
 *, 
__txn_abt_y
 *));

101 
__db_v_txn_beg_t
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, DB_TXN **, 
u_t32_t
, 
__v_txn_beg_y
 *));

102 
__db_v_cdsgroup_beg_t
 
__P
((
DB_ENV
 *, 
DB_TXN
 **, 
__v_cdsgroup_beg_y
 *));

103 
__db_txn_comm_t
 
__P
((
DB_TXN
 *, 
u_t32_t
, 
__txn_comm_y
 *));

104 
__db_txn_disrd_t
 
__P
((
DB_TXN
 *, 
u_t32_t
, 
__txn_disrd_y
 *));

105 
__db_v_txn_cov_t
 
__P
((
DB_ENV
 *, 
DB_PREPLIST
 *, , *, 
u_t32_t
, 
__v_txn_cov_y
 *));

106 
__db_db_o_t
 
__P
((
DB
 *, 
u_t32_t
, 
__db_o_y
 *));

107 
__db_db__t
 
__P
((
DB
 *, 
DB_ENV
 *, 
u_t32_t
, 
__db__y
 *));

108 
__db_db_g_t
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
__db_g_y
 *));

109 
__db_db_key_nge_t
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
DB_KEY_RANGE
 *, 
u_t32_t
, 
__db_key_nge_y
 *));

110 
__db_db_ݒ_t
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
, , 
__db_ݒ_y
 *));

111 
__db_db_pg_t
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
, 
__db_pg_y
 *));

112 
__db_db_put_t
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
__db_put_y
 *));

113 
__db_db_move_t
 
__P
((
DB
 *, cڡ *, cڡ *, 
u_t32_t
, 
__db_move_y
 *));

114 
__db_db_me_t
 
__P
((
DB
 *, cڡ *, cڡ *, cڡ *, 
u_t32_t
, 
__db_me_y
 *));

115 
__db_db__t
 
__P
((
DB
 *, 
DB_TXN
 *, *, 
u_t32_t
, 
__db__y
 *));

116 
__db_db_un_t
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
 *, u_t32_t, 
__db_un_y
 *));

117 
__db_db_curs_t
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBC
 **, 
u_t32_t
, 
__db_curs_y
 *));

118 
__db_db_jo_t
 
__P
((
DB
 *, 
DBC
 **, DBC **, 
u_t32_t
, 
__db_jo_y
 *));

119 
__db_dbc_o_t
 
__P
((
DBC
 *, 
__dbc_o_y
 *));

120 
__db_dbc_cou_t
 
__P
((
DBC
 *, 
db_o_t
 *, 
u_t32_t
, 
__dbc_cou_y
 *));

121 
__db_dbc_dup_t
 
__P
((
DBC
 *, DBC **, 
u_t32_t
, 
__dbc_dup_y
 *));

122 
__db_dbc_g_t
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
__dbc_g_y
 *));

123 
__db_dbc_pg_t
 
__P
((
DBC
 *, 
DBT
 *, DBT *, DBT *, 
u_t32_t
, 
__dbc_pg_y
 *));

124 
__db_dbc_put_t
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
__dbc_put_y
 *));

126 #i
defed
(
__lulus
)

	@../dbinc_auto/rpc_server_ext.h

2 #idef 
_c_rv_ext_h_


3 
	#_c_rv_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__v_g_chesize_oc
 
__P
((
u_t
, 
__v_g_chesize_y
 *));

10 
__v_t_chesize_oc
 
__P
((
u_t
, 
u_t32_t
, u_t32_t, u_t32_t, 
__v_t_chesize_y
 *));

11 
__v_cdsgroup_beg_oc
 
__P
((
u_t
, 
__v_cdsgroup_beg_y
 *));

12 
__v_o_oc
 
__P
((
u_t
, 
u_t32_t
, 
__v_o_y
 *));

13 
__v__oc
 
__P
((
u_t32_t
, 
__v__y
 *));

14 
__v_dbmove_oc
 
__P
((
u_t
, u_t, *, *, 
u_t32_t
, 
__v_dbmove_y
 *));

15 
__v_dbme_oc
 
__P
((
u_t
, u_t, *, *, *, 
u_t32_t
, 
__v_dbme_y
 *));

16 
__v_g_y_ags_oc
 
__P
((
u_t
, 
__v_g_y_ags_y
 *));

17 
__v_t_y_oc
 
__P
((
u_t
, *, 
u_t32_t
, 
__v_t_y_y
 *));

18 
__v_g_ags_oc
 
__P
((
u_t
, 
__v_g_ags_y
 *));

19 
__v_t_ags_oc
 
__P
((
u_t
, 
u_t32_t
, u_t32_t, 
__v_t_ags_y
 *));

20 
__v_g_home_oc
 
__P
((
u_t
, 
__v_g_home_y
 *));

21 
__v_g_ݒ_ags_oc
 
__P
((
u_t
, 
__v_g_ݒ_ags_y
 *));

22 
__v_ݒ_oc
 
__P
((
u_t
, *, 
u_t32_t
, u_t32_t, 
__v_ݒ_y
 *));

23 
__v_move_oc
 
__P
((
u_t
, *, 
u_t32_t
, 
__v_move_y
 *));

24 
__txn_abt_oc
 
__P
((
u_t
, 
__txn_abt_y
 *));

25 
__v_txn_beg_oc
 
__P
((
u_t
, u_t, 
u_t32_t
, 
__v_txn_beg_y
 *));

26 
__txn_comm_oc
 
__P
((
u_t
, 
u_t32_t
, 
__txn_comm_y
 *));

27 
__txn_disrd_oc
 
__P
((
u_t
, 
u_t32_t
, 
__txn_disrd_y
 *));

28 
__txn_e_oc
 
__P
((
u_t
, 
u_t8_t
 *, 
__txn_e_y
 *));

29 
__v_txn_cov_oc
 
__P
((
u_t
, 
u_t32_t
, u_t32_t, 
__v_txn_cov_y
 *, *));

30 
__db_assoc_oc
 
__P
((
u_t
, u_t, u_t, 
u_t32_t
, 
__db_assoc_y
 *));

31 
__db_g_bt_mkey_oc
 
__P
((
u_t
, 
__db_g_bt_mkey_y
 *));

32 
__db_t_bt_mkey_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t_bt_mkey_y
 *));

33 
__db_o_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_o_y
 *));

34 
__db__oc
 
__P
((
u_t
, 
u_t32_t
, 
__db__y
 *));

35 
__db_d_oc
 
__P
((
u_t
, u_t, 
u_t32_t
, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, 
__db_d_y
 *));

36 
__db_g_y_ags_oc
 
__P
((
u_t
, 
__db_g_y_ags_y
 *));

37 
__db_t_y_oc
 
__P
((
u_t
, *, 
u_t32_t
, 
__db_t_y_y
 *));

38 
__db_g_q_exsize_oc
 
__P
((
u_t
, 
__db_g_q_exsize_y
 *));

39 
__db_t_q_exsize_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t_q_exsize_y
 *));

40 
__db_g_ags_oc
 
__P
((
u_t
, 
__db_g_ags_y
 *));

41 
__db_t_ags_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t_ags_y
 *));

42 
__db_g_oc
 
__P
((
u_t
, u_t, 
u_t32_t
, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, 
__db_g_y
 *, *));

43 
__db_g_h_f_oc
 
__P
((
u_t
, 
__db_g_h_f_y
 *));

44 
__db_t_h_f_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t_h_f_y
 *));

45 
__db_g_h_m_oc
 
__P
((
u_t
, 
__db_g_h_m_y
 *));

46 
__db_t_h_m_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t_h_m_y
 *));

47 
__db_key_nge_oc
 
__P
((
u_t
, u_t, 
u_t32_t
, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, 
__db_key_nge_y
 *));

48 
__db_g_ld_oc
 
__P
((
u_t
, 
__db_g_ld_y
 *));

49 
__db_t_ld_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t_ld_y
 *));

50 
__db_g_dbme_oc
 
__P
((
u_t
, 
__db_g_dbme_y
 *));

51 
__db_g_ݒ_ags_oc
 
__P
((
u_t
, 
__db_g_ݒ_ags_y
 *));

52 
__db_ݒ_oc
 
__P
((
u_t
, u_t, *, *, 
u_t32_t
, u_t32_t, u_t32_t, 
__db_ݒ_y
 *));

53 
__db_g_gesize_oc
 
__P
((
u_t
, 
__db_g_gesize_y
 *));

54 
__db_t_gesize_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t_gesize_y
 *));

55 
__db_pg_oc
 
__P
((
u_t
, u_t, 
u_t32_t
, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, 
__db_pg_y
 *, *));

56 
__db_put_oc
 
__P
((
u_t
, u_t, 
u_t32_t
, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, 
__db_put_y
 *, *));

57 
__db_g_iܙy_oc
 
__P
((
u_t
, 
__db_g_iܙy_y
 *));

58 
__db_t_iܙy_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t_iܙy_y
 *));

59 
__db_g__dim_oc
 
__P
((
u_t
, 
__db_g__dim_y
 *));

60 
__db_t__dim_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t__dim_y
 *));

61 
__db_g__n_oc
 
__P
((
u_t
, 
__db_g__n_y
 *));

62 
__db_t__n_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t__n_y
 *));

63 
__db_g__d_oc
 
__P
((
u_t
, 
__db_g__d_y
 *));

64 
__db_t__d_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_t__d_y
 *));

65 
__db_move_oc
 
__P
((
u_t
, *, *, 
u_t32_t
, 
__db_move_y
 *));

66 
__db_me_oc
 
__P
((
u_t
, *, *, *, 
u_t32_t
, 
__db_me_y
 *));

67 
__db__oc
 
__P
((
u_t
, u_t, 
u_t32_t
, 
__db__y
 *, *));

68 
__db_sync_oc
 
__P
((
u_t
, 
u_t32_t
, 
__db_sync_y
 *));

69 
__db_un_oc
 
__P
((
u_t
, u_t, 
u_t32_t
, 
__db_un_y
 *));

70 
__db_curs_oc
 
__P
((
u_t
, u_t, 
u_t32_t
, 
__db_curs_y
 *));

71 
__db_jo_oc
 
__P
((
u_t
, 
u_t32_t
 *, u_t32_t, u_t32_t, 
__db_jo_y
 *));

72 
__dbc_o_oc
 
__P
((
u_t
, 
__dbc_o_y
 *));

73 
__dbc_cou_oc
 
__P
((
u_t
, 
u_t32_t
, 
__dbc_cou_y
 *));

74 
__dbc_d_oc
 
__P
((
u_t
, 
u_t32_t
, 
__dbc_d_y
 *));

75 
__dbc_dup_oc
 
__P
((
u_t
, 
u_t32_t
, 
__dbc_dup_y
 *));

76 
__dbc_g_oc
 
__P
((
u_t
, 
u_t32_t
, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, 
__dbc_g_y
 *, *));

77 
__dbc_pg_oc
 
__P
((
u_t
, 
u_t32_t
, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, 
__dbc_pg_y
 *, *));

78 
__dbc_put_oc
 
__P
((
u_t
, 
u_t32_t
, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, 
__dbc_put_y
 *, *));

79 
__dbc_g_iܙy_oc
 
__P
((
u_t
, 
__dbc_g_iܙy_y
 *));

80 
__dbc_t_iܙy_oc
 
__P
((
u_t
, 
u_t32_t
, 
__dbc_t_iܙy_y
 *));

81 
__dbv_imeout
 
__P
((
_y
 *, 
u_t32_t
));

82 
__dbr_p
 
__P
((
_y
 *));

83 
__dbd_p
 
__P
((
_y
 *));

84 
_y
 *
w__t
 
__P
((*));

85 
_y
 *
g_b˒t
 
__P
(());

86 
_y
 *
__dbv_shedb
 
__P
((_y *, cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
));

87 
_y
 *
__dbv_shnv
 
__P
((_y *, 
home_y
 *, 
u_t32_t
));

88 
__dbv_aive
 
__P
((
_y
 *));

89 
__db_o_t
 
__P
((, 
u_t32_t
));

90 
__dbc_o_t
 
__P
((
_y
 *));

91 
__v_o_t
 
__P
((, 
u_t32_t
, ));

92 
home_y
 *
g_fuhome
 
__P
((*));

94 #i
defed
(
__lulus
)

	@../dbinc_auto/sequence_ext.h

2 #idef 
_qu_ext_h_


3 
	#_qu_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__q_
 
__P
((
DB_SEQUENCE
 *, 
DB_SEQUENCE_STAT
 **, 
u_t32_t
));

10 
__q__t
 
__P
((
DB_SEQUENCE
 *, 
u_t32_t
));

11 cڡ 
FN
 * 
__db_g_q_ags_
 
__P
(());

12 cڡ 
FN
 * 
__db_g_q_ags_
 
__P
(());

14 #i
defed
(
__lulus
)

	@../dbinc_auto/tcl_ext.h

2 #idef 
_t_ext_h_


3 
	#_t_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
bdb_HCommd
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

10 #i
DB_DBM_HSEARCH
 != 0

11 
bdb_NdbmOn
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DBM
 **));

13 #i
DB_DBM_HSEARCH
 != 0

14 
bdb_DbmCommd
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, , 
DBM
 *));

16 
ndbm_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

17 
_DbInfoDe
 
__P
((
T_Ip
 *, 
DBTCL_INFO
 *));

18 
db_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

19 
t_ComSt
 
__P
((
T_Ip
 *, 
DBTCL_INFO
 *));

20 
t_p_nd
 
__P
((
DB_ENV
 *, cڡ 
DBT
 *, cڡ DBT *, cڡ 
DB_LSN
 *, , 
u_t32_t
));

21 
dbc_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

22 
v_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

23 
t_EnvRemove
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *, 
DBTCL_INFO
 *));

24 
t_EnvIdRet
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

25 
t_EnvLRet
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

26 
t_EnvVbo
 
__P
((
T_Ip
 *, 
DB_ENV
 *, 
T_Obj
 *, Tcl_Obj *));

27 
t_EnvAr
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

28 
t_EvtNify
 
__P
((
T_Ip
 *, 
DB_ENV
 *, 
T_Obj
 *, 
DBTCL_INFO
 *));

29 
t_EnvSFgs
 
__P
((
T_Ip
 *, 
DB_ENV
 *, 
T_Obj
 *, Tcl_Obj *));

30 
t_EnvTe
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

31 
t_EnvGEnyFgs
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

32 
t_EnvSEfe
 
__P
((
T_Ip
 *, 
DB_ENV
 *, 
DBTCL_INFO
 *, *));

33 
t_EnvSEpfx
 
__P
((
T_Ip
 *, 
DB_ENV
 *, 
DBTCL_INFO
 *, *));

34 
DBTCL_INFO
 *
_NewInfo
 
__P
((
T_Ip
 *, *, *, 
INFOTYPE
));

35 *
_NameToP
 
__P
((
CONST
 *));

36 
DBTCL_INFO
 *
_PToInfo
 
__P
((
CONST
 *));

37 
DBTCL_INFO
 *
_NameToInfo
 
__P
((
CONST
 *));

38 
_SInfoDa
 
__P
((
DBTCL_INFO
 *, *));

39 
_DeInfo
 
__P
((
DBTCL_INFO
 *));

40 
_SLiEm
 
__P
((
T_Ip
 *, 
T_Obj
 *, *, 
u_t32_t
, *, u_int32_t));

41 
_SLiEmI
 
__P
((
T_Ip
 *, 
T_Obj
 *, *, ));

42 
_SLiEmWideI
 
__P
((
T_Ip
 *, 
T_Obj
 *, *, 
t64_t
));

43 
_SLiReoEm
 
__P
((
T_Ip
 *, 
T_Obj
 *, 
db_o_t
, 
u_ch
 *, 
u_t32_t
));

44 
_S3DBTLi
 
__P
((
T_Ip
 *, 
T_Obj
 *, 
DBT
 *, , DBT *, , DBT *));

45 
_SMuiLi
 
__P
((
T_Ip
 *, 
T_Obj
 *, 
DBT
 *, DBT*, 
DBTYPE
, 
u_t32_t
));

46 
_GGlobPfix
 
__P
((*, **));

47 
_RuSup
 
__P
((
T_Ip
 *, , , *));

48 
_ESup
 
__P
((
T_Ip
 *, , *));

49 
_EFunc
 
__P
((cڡ 
DB_ENV
 *, 
CONST
 *, const *));

50 
_EvtFunc
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

51 
_GL
 
__P
((
T_Ip
 *, 
T_Obj
 *, 
DB_LSN
 *));

52 
_GUI32
 
__P
((
T_Ip
 *, 
T_Obj
 *, 
u_t32_t
 *));

53 
T_Obj
 *
_GFgsLi
 
__P
((
T_Ip
 *, 
u_t32_t
, cڡ 
FN
 *));

54 
_debug_check
 
__P
(());

55 
_CyObjBys
 
__P
((
T_Ip
 *, 
T_Obj
 *
obj
, *, 
u_t32_t
 *, *));

56 
t_LockDe
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

57 
t_LockG
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

58 
t_LockSt
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

59 
t_LockTimeout
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

60 
t_LockVec
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

61 
t_LogArchive
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

62 
t_LogCom
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

63 
t_LogFe
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

64 
t_LogFlush
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

65 
t_LogG
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

66 
t_LogPut
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

67 
t_LogSt
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

68 
logc_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

69 
_MpInfoDe
 
__P
((
T_Ip
 *, 
DBTCL_INFO
 *));

70 
t_MpSync
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

71 
t_MpTrick
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

72 
t_Mp
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *, 
DBTCL_INFO
 *));

73 
t_MpSt
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

74 
t_RCfig
 
__P
((
T_Ip
 *, 
DB_ENV
 *, 
T_Obj
 *));

75 
t_RGCfig
 
__P
((
T_Ip
 *, 
DB_ENV
 *, 
T_Obj
 *));

76 
t_RE
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

77 
t_RFlush
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

78 
t_RSync
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

79 
t_RL
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

80 
t_RLim
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

81 
t_RReque
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

82 
t_RNrchiveTimeout
 
__P
((
T_Ip
 *, 
DB_ENV
 *));

83 
t_RTnt
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *, 
DBTCL_INFO
 *));

84 
t_RS
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

85 
t_RProssMesge
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

86 
t_RSt
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

87 
t_RMgr
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

88 
t_RMgrSt
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
 *, 
DB_ENV
 *));

89 
q_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

90 
_TxnInfoDe
 
__P
((
T_Ip
 *, 
DBTCL_INFO
 *));

91 
t_TxnCheckpot
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

92 
t_Txn
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *, 
DBTCL_INFO
 *));

93 
t_CDSGroup
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *, 
DBTCL_INFO
 *));

94 
t_TxnSt
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

95 
t_TxnTimeout
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

96 
t_TxnRecov
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *, 
DBTCL_INFO
 *));

97 
bdb_RdCommd
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

99 #i
defed
(
__lulus
)

	@../dbinc_auto/txn_auto.h

3 #idef 
__txn_AUTO_H


4 
	#__txn_AUTO_H


	)

5 
	#DB___txn_g_42
 10

	)

6 
	s___txn_g_42_gs
 {

7 
u_t32_t
 
	mty
;

8 
DB_TXN
 *
	mtx
;

9 
DB_LSN
 
	mev_l
;

10 
u_t32_t
 
	mcode
;

11 
t32_t
 
	mtimeamp
;

12 
DBT
 
	mlocks
;

13 } 
	t__txn_g_42_gs
;

15 
	#DB___txn_g
 10

	)

16 
	s___txn_g_gs
 {

17 
u_t32_t
 
	mty
;

18 
DB_TXN
 *
	mtx
;

19 
DB_LSN
 
	mev_l
;

20 
u_t32_t
 
	mcode
;

21 
t32_t
 
	mtimeamp
;

22 
u_t32_t
 
	mvid
;

23 
DBT
 
	mlocks
;

24 } 
	t__txn_g_gs
;

26 
	#DB___txn_ckp_42
 11

	)

27 
	s___txn_ckp_42_gs
 {

28 
u_t32_t
 
	mty
;

29 
DB_TXN
 *
	mtx
;

30 
DB_LSN
 
	mev_l
;

31 
DB_LSN
 
	mckp_l
;

32 
DB_LSN
 
	mϡ_ckp
;

33 
t32_t
 
	mtimeamp
;

34 
u_t32_t
 
	mp_g
;

35 } 
	t__txn_ckp_42_gs
;

37 
	#DB___txn_ckp
 11

	)

38 
	s___txn_ckp_gs
 {

39 
u_t32_t
 
	mty
;

40 
DB_TXN
 *
	mtx
;

41 
DB_LSN
 
	mev_l
;

42 
DB_LSN
 
	mckp_l
;

43 
DB_LSN
 
	mϡ_ckp
;

44 
t32_t
 
	mtimeamp
;

45 
u_t32_t
 
	mvid
;

46 
u_t32_t
 
	me
;

47 } 
	t__txn_ckp_gs
;

49 
	#DB___txn_chd
 12

	)

50 
	s___txn_chd_gs
 {

51 
u_t32_t
 
	mty
;

52 
DB_TXN
 *
	mtx
;

53 
DB_LSN
 
	mev_l
;

54 
u_t32_t
 
	mchd
;

55 
DB_LSN
 
	mc_l
;

56 } 
	t__txn_chd_gs
;

58 
	#DB___txn_xa_g
 13

	)

59 
	s___txn_xa_g_gs
 {

60 
u_t32_t
 
	mty
;

61 
DB_TXN
 *
	mtx
;

62 
DB_LSN
 
	mev_l
;

63 
u_t32_t
 
	mcode
;

64 
DBT
 
	mxid
;

65 
t32_t
 
	mfmID
;

66 
u_t32_t
 
	mgid
;

67 
u_t32_t
 
	mbqu
;

68 
DB_LSN
 
	mbeg_l
;

69 
DBT
 
	mlocks
;

70 } 
	t__txn_xa_g_gs
;

72 
	#DB___txn_cye
 14

	)

73 
	s___txn_cye_gs
 {

74 
u_t32_t
 
	mty
;

75 
DB_TXN
 *
	mtx
;

76 
DB_LSN
 
	mev_l
;

77 
u_t32_t
 
	mm
;

78 
u_t32_t
 
	mmax
;

79 } 
	t__txn_cye_gs
;

	@../dbinc_auto/txn_ext.h

2 #idef 
_txn_ext_h_


3 
	#_txn_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__txn_beg_
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, DB_TXN **, 
u_t32_t
));

10 
__txn_beg
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, DB_TXN **, 
u_t32_t
));

11 
__txn_xa_beg
 
__P
((
DB_ENV
 *, 
DB_TXN
 *));

12 
__txn_cye_id
 
__P
((
DB_ENV
 *));

13 
__txn_comn_beg
 
__P
((
DB_ENV
 *, 
DB_TXN
 **));

14 
__txn_ctue
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
TXN_DETAIL
 *));

15 
__txn_comm
 
__P
((
DB_TXN
 *, 
u_t32_t
));

16 
__txn_abt
 
__P
((
DB_TXN
 *));

17 
__txn_disrd_t
 
__P
((
DB_TXN
 *, 
u_t32_t
 
ags
));

18 
__txn_e
 
__P
((
DB_TXN
 *, 
u_t8_t
 *));

19 
u_t32_t
 
__txn_id
 
__P
((
DB_TXN
 *));

20 
__txn_g_me
 
__P
((
DB_TXN
 *, const **));

21 
__txn_t_me
 
__P
((
DB_TXN
 *, const *));

22 
__txn_t_timeout
 
__P
((
DB_TXN
 *, 
db_timeout_t
, 
u_t32_t
));

23 
__txn_aivekids
 
__P
((
DB_ENV
 *, 
u_t32_t
, 
DB_TXN
 *));

24 
__txn_f_abt
 
__P
((
DB_ENV
 *, 
u_t8_t
 *));

25 
__txn_eo
 
__P
((
DB_ENV
 *));

26 
__txn_t
 
__P
((
DB_ENV
 *));

27 
__txn_g_42_ad
 
__P
((
DB_ENV
 *, *, 
__txn_g_42_gs
 **));

28 
__txn_g_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, 
t32_t
, u_t32_t, cڡ 
DBT
 *));

29 
__txn_g_ad
 
__P
((
DB_ENV
 *, *, 
__txn_g_gs
 **));

30 
__txn_ckp_42_ad
 
__P
((
DB_ENV
 *, *, 
__txn_ckp_42_gs
 **));

31 
__txn_ckp_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, DB_LSN *, DB_LSN *, 
t32_t
, u_int32_t, u_int32_t));

32 
__txn_ckp_ad
 
__P
((
DB_ENV
 *, *, 
__txn_ckp_gs
 **));

33 
__txn_chd_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_int32_t, DB_LSN *));

34 
__txn_chd_ad
 
__P
((
DB_ENV
 *, *, 
__txn_chd_gs
 **));

35 
__txn_xa_g_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_t32_t, cڡ 
DBT
 *, 
t32_t
, u_int32_t, u_int32_t, DB_LSN *, const DBT *));

36 
__txn_xa_g_ad
 
__P
((
DB_ENV
 *, *, 
__txn_xa_g_gs
 **));

37 
__txn_cye_log
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LSN
 *, 
u_t32_t
, u_int32_t, u_int32_t));

38 
__txn_cye_ad
 
__P
((
DB_ENV
 *, *, 
__txn_cye_gs
 **));

39 
__txn__cov
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

40 
__txn_g_42_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

41 
__txn_g_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

42 
__txn_ckp_42_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

43 
__txn_ckp_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

44 
__txn_chd_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

45 
__txn_xa_g_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

46 
__txn_cye_t
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

47 
__txn__t
 
__P
((
DB_ENV
 *, (***)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
size_t
 *));

48 
__txn_checkpot_
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t, u_int32_t));

49 
__txn_checkpot
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t, u_int32_t));

50 
__txn_gaive
 
__P
((
DB_ENV
 *, 
DB_LSN
 *));

51 
__txn_gckp
 
__P
((
DB_ENV
 *, 
DB_LSN
 *));

52 
__txn_updeckp
 
__P
((
DB_ENV
 *, 
DB_LSN
 *));

53 
__txn_chk
 
__P
((
DB_ENV
 *));

54 
__txn_v_
 
__P
((
DB_ENV
 *));

55 
__txn_v_deroy
 
__P
((
DB_ENV
 *));

56 
__txn_g_tx_max
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

57 
__txn_t_tx_max
 
__P
((
DB_ENV
 *, 
u_t32_t
));

58 
__txn_g_tx_timeamp
 
__P
((
DB_ENV
 *, 
time_t
 *));

59 
__txn_t_tx_timeamp
 
__P
((
DB_ENV
 *, 
time_t
 *));

60 
__txn_g_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

61 
__txn_xa_g_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

62 
__txn_ckp_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

63 
__txn_chd_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

64 
__txn_e_txn
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, 
__txn_xa_g_gs
 *));

65 
__txn_cye_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

66 
__txn_g_42_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

67 
__txn_ckp_42_cov
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

68 
__txn_m_gid
 
__P
((
DB_ENV
 *, 
u_t8_t
 *, 
TXN_DETAIL
 **, 
roff_t
 *));

69 
__txn_cov_
 
__P
((
DB_ENV
 *, 
DB_PREPLIST
 *, , *, 
u_t32_t
));

70 
__txn_cov
 
__P
((
DB_ENV
 *, 
DB_PREPLIST
 *, , *, 
u_t32_t
));

71 
__txn_g_ed
 
__P
((
DB_ENV
 *, 
XID
 *, 
DB_PREPLIST
 *, , *, 
u_t32_t
));

72 
__txn_ݒfes
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, ));

73 
__txn_ݒ
 
__P
((
DB_ENV
 *, ));

74 
__txn_fdϡckp
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, DB_LSN *));

75 
__txn_v_esh
 
__P
((
DB_ENV
 *));

76 
u_t32_t
 
__txn_gi_mux_cou
 
__P
((
DB_ENV
 *));

77 
__txn_id_t
 
__P
((
DB_ENV
 *, 
u_t32_t
, u_int32_t));

78 
__txn_de_ad
 
__P
((
DB_ENV
 *, 
DB_LSN
 *));

79 
__txn_add_bufr
 
__P
((
DB_ENV
 *, 
TXN_DETAIL
 *));

80 
__txn_move_bufr
 
__P
((
DB_ENV
 *, 
TXN_DETAIL
 *, 
db_mux_t
));

81 
__txn__
 
__P
((
DB_ENV
 *, 
DB_TXN_STAT
 **, 
u_t32_t
));

82 
__txn__t_
 
__P
((
DB_ENV
 *, 
u_t32_t
));

83 
__txn__t
 
__P
((
DB_ENV
 *, 
u_t32_t
));

84 
__txn_oevt
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB
 *));

85 
__txn_mevt
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, 
u_t8_t
 *, ));

86 
__txn_mm
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, const *));

87 
__txn_lockevt
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB
 *, 
DB_LOCK
 *, 
DB_LOCKER
 *));

88 
__txn_mlock
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DB_LOCK
 *, 
DB_LOCKER
 *));

89 
__txn_dvts
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, , ));

90 
__txn_cd_ame
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
FNAME
 *));

91 
__txn_df_ame
 
__P
((
DB_ENV
 *, 
DB_TXN
 *));

93 #i
defed
(
__lulus
)

	@../dbinc_auto/xa_ext.h

2 #idef 
_xa_ext_h_


3 
	#_xa_ext_h_


	)

5 #i
defed
(
__lulus
)

9 
__xa_g_txn
 
__P
((
DB_ENV
 *, 
DB_TXN
 **, ));

10 
__db_xa_
 
__P
((
DB
 *));

11 
__db_rmid_to_v
 
__P
((
rmid
, 
DB_ENV
 **
vp
));

12 
__db_xid_to_txn
 
__P
((
DB_ENV
 *, 
XID
 *, 
roff_t
 *));

13 
__db_m_rmid
 
__P
((, 
DB_ENV
 *));

14 
__db_unm_rmid
 
__P
(());

15 
__db_m_xid
 
__P
((
DB_ENV
 *, 
XID
 *, 
TXN_DETAIL
 *));

16 
__db_unm_xid
 
__P
((
DB_ENV
 *, 
XID
 *, 
size_t
));

18 #i
defed
(
__lulus
)

	@../dbm/dbm.c

44 
	#DB_DBM_HSEARCH
 1

	)

45 
	~"db_cfig.h
"

47 
	~"db_t.h
"

82 
DBM
 *
	g__cur_db
;

84 
__db_no_ݒ
 
__P
(());

87 
	$__db_dbm_
(
fe
)

88 *
fe
;

90 i(
__cur_db
 !
NULL
)

91 
	`dbm_o
(
__cur_db
);

92 i((
__cur_db
 =

93 
	`dbm_ݒ
(
fe
, 
O_CREAT
 | 
O_RDWR
, 
	`__db_omode
(
OWNER_RW
))!
NULL
)

95 i((
__cur_db
 = 
	`dbm_ݒ
(
fe
, 
O_RDONLY
, 0)!
NULL
)

98 
	}
}

101 
	$__db_dbm_o
()

103 i(
__cur_db
 !
NULL
) {

104 
	`dbm_o
(
__cur_db
);

105 
__cur_db
 = 
NULL
;

108 
	}
}

110 
dum


111 
	$__db_dbm_tch
(
key
)

112 
dum
 
key
;

114 
dum
 
em
;

116 i(
__cur_db
 =
NULL
) {

117 
	`__db_no_ݒ
();

118 
em
.
dr
 = 
NULL
;

119 
em
.
dsize
 = 0;

120  (
em
);

122  (
	`dbm_tch
(
__cur_db
, 
key
));

123 
	}
}

125 
dum


126 
	$__db_dbm_fkey
()

128 
dum
 
em
;

130 i(
__cur_db
 =
NULL
) {

131 
	`__db_no_ݒ
();

132 
em
.
dr
 = 
NULL
;

133 
em
.
dsize
 = 0;

134  (
em
);

136  (
	`dbm_fkey
(
__cur_db
));

137 
	}
}

139 
dum


140 
	$__db_dbm_xtkey
(
key
)

141 
dum
 
key
;

143 
dum
 
em
;

145 
	`COMPQUIET
(
key
.
dsize
, 0);

147 i(
__cur_db
 =
NULL
) {

148 
	`__db_no_ݒ
();

149 
em
.
dr
 = 
NULL
;

150 
em
.
dsize
 = 0;

151  (
em
);

153  (
	`dbm_xtkey
(
__cur_db
));

154 
	}
}

157 
	$__db_dbm_de
(
key
)

158 
dum
 
key
;

160 i(
__cur_db
 =
NULL
) {

161 
	`__db_no_ݒ
();

164  (
	`dbm_de
(
__cur_db
, 
key
));

165 
	}
}

168 
	$__db_dbm_e
(
key
, 
d
)

169 
dum
 
key
, 
d
;

171 i(
__cur_db
 =
NULL
) {

172 
	`__db_no_ݒ
();

175  (
	`dbm_e
(
__cur_db
, 
key
, 
d
, 
DBM_REPLACE
));

176 
	}
}

179 
	$__db_no_ݒ
()

181 ()
	`rtf
(
dr
, "dbm:o open database.\n");

182 
	}
}

194 
DBM
 *

195 
	$__db_ndbm_ݒ
(
fe
, 
oags
, 
mode
)

196 cڡ *
fe
;

197 
oags
, 
mode
;

199 
DB
 *
dbp
;

200 
DBC
 *
dbc
;

201 
t
;

202 
th
[
DB_MAXPATHLEN
];

210 i(
	`
(
fe
+ sn(
DBM_SUFFIX
+ 1 > (
th
)) {

211 
	`__os_t_o
(
ENAMETOOLONG
);

212  (
NULL
);

214 ()
	`ry
(
th
, 
fe
);

215 ()
	`rt
(
th
, 
DBM_SUFFIX
);

216 i((
t
 = 
	`db_
(&
dbp
, 
NULL
, 0)) != 0) {

217 
	`__os_t_o
(
t
);

218  (
NULL
);

225 i(
oags
 & 
O_WRONLY
) {

226 
oags
 &~
O_WRONLY
;

227 
oags
 |
O_RDWR
;

230 i((
t
 = 
dbp
->
	`t_gesize
(dbp, 4096)) != 0 ||

231 (
t
 = 
dbp
->
	`t_h_f
(dbp, 40)) != 0 ||

232 (
t
 = 
dbp
->
	`t_h_m
(dbp, 1)) != 0 ||

233 (
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
,

234 
th
, 
NULL
, 
DB_HASH
, 
	`__db_oags
(
oags
), 
mode
)) != 0) {

235 
	`__os_t_o
(
t
);

236  (
NULL
);

239 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &
dbc
, 0)) != 0) {

240 ()
dbp
->
	`o
(dbp, 0);

241 
	`__os_t_o
(
t
);

242  (
NULL
);

245  ((
DBM
 *)
dbc
);

246 
	}
}

253 
	$__db_ndbm_o
(
dbm
)

254 
DBM
 *
dbm
;

256 
DBC
 *
dbc
;

258 
dbc
 = (
DBC
 *)
dbm
;

260 ()
dbc
->
dbp
->
	`o
(dbc->dbp, 0);

261 
	}
}

268 
dum


269 
	$__db_ndbm_tch
(
dbm
, 
key
)

270 
DBM
 *
dbm
;

271 
dum
 
key
;

273 
DBC
 *
dbc
;

274 
DBT
 
_key
, 
_da
;

275 
dum
 
da
;

276 
t
;

278 
dbc
 = (
DBC
 *)
dbm
;

280 
	`DB_INIT_DBT
(
_key
, 
key
.
dr
, key.
dsize
);

281 
	`memt
(&
_da
, 0, (
DBT
));

288 i((
t
 = 
dbc
->
dbp
->
	`g
(dbc->dbp, 
NULL
, &
_key
, &
_da
, 0)) == 0) {

289 
da
.
dr
 = 
_da
.data;

290 
da
.
dsize
 = ()
_da
.
size
;

292 
da
.
dr
 = 
NULL
;

293 
da
.
dsize
 = 0;

294 i(
t
 =
DB_NOTFOUND
)

295 
	`__os_t_o
(
ENOENT
);

297 
	`__os_t_o
(
t
);

298 
	`F_SET
(
dbc
->
dbp
, 
DB_AM_DBM_ERROR
);

301  (
da
);

302 
	}
}

309 
dum


310 
	$__db_ndbm_fkey
(
dbm
)

311 
DBM
 *
dbm
;

313 
DBC
 *
dbc
;

314 
DBT
 
_key
, 
_da
;

315 
dum
 
key
;

316 
t
;

318 
dbc
 = (
DBC
 *)
dbm
;

320 
	`memt
(&
_key
, 0, (
DBT
));

321 
	`memt
(&
_da
, 0, (
DBT
));

323 i((
t
 = 
dbc
->
	`g
(dbc, &
_key
, &
_da
, 
DB_FIRST
)) == 0) {

324 
key
.
dr
 = 
_key
.
da
;

325 
key
.
dsize
 = ()
_key
.
size
;

327 
key
.
dr
 = 
NULL
;

328 
key
.
dsize
 = 0;

329 i(
t
 =
DB_NOTFOUND
)

330 
	`__os_t_o
(
ENOENT
);

332 
	`__os_t_o
(
t
);

333 
	`F_SET
(
dbc
->
dbp
, 
DB_AM_DBM_ERROR
);

336  (
key
);

337 
	}
}

344 
dum


345 
	$__db_ndbm_xtkey
(
dbm
)

346 
DBM
 *
dbm
;

348 
DBC
 *
dbc
;

349 
DBT
 
_key
, 
_da
;

350 
dum
 
key
;

351 
t
;

353 
dbc
 = (
DBC
 *)
dbm
;

355 
	`memt
(&
_key
, 0, (
DBT
));

356 
	`memt
(&
_da
, 0, (
DBT
));

358 i((
t
 = 
dbc
->
	`g
(dbc, &
_key
, &
_da
, 
DB_NEXT
)) == 0) {

359 
key
.
dr
 = 
_key
.
da
;

360 
key
.
dsize
 = ()
_key
.
size
;

362 
key
.
dr
 = 
NULL
;

363 
key
.
dsize
 = 0;

364 i(
t
 =
DB_NOTFOUND
)

365 
	`__os_t_o
(
ENOENT
);

367 
	`__os_t_o
(
t
);

368 
	`F_SET
(
dbc
->
dbp
, 
DB_AM_DBM_ERROR
);

371  (
key
);

372 
	}
}

380 
	$__db_ndbm_de
(
dbm
, 
key
)

381 
DBM
 *
dbm
;

382 
dum
 
key
;

384 
DBC
 *
dbc
;

385 
DBT
 
_key
;

386 
t
;

388 
dbc
 = (
DBC
 *)
dbm
;

390 
	`DB_INIT_DBT
(
_key
, 
key
.
dr
, key.
dsize
);

392 i((
t
 = 
dbc
->
dbp
->
	`d
(dbc->dbp, 
NULL
, &
_key
, 0)) == 0)

395 i(
t
 =
DB_NOTFOUND
)

396 
	`__os_t_o
(
ENOENT
);

398 
	`__os_t_o
(
t
);

399 
	`F_SET
(
dbc
->
dbp
, 
DB_AM_DBM_ERROR
);

402 
	}
}

411 
	$__db_ndbm_e
(
dbm
, 
key
, 
da
, 
ags
)

412 
DBM
 *
dbm
;

413 
dum
 
key
, 
da
;

414 
ags
;

416 
DBC
 *
dbc
;

417 
DBT
 
_key
, 
_da
;

418 
t
;

420 
dbc
 = (
DBC
 *)
dbm
;

422 
	`DB_INIT_DBT
(
_key
, 
key
.
dr
, key.
dsize
);

423 
	`DB_INIT_DBT
(
_da
, 
da
.
dr
, da.
dsize
);

425 i((
t
 = 
dbc
->
dbp
->
	`put
(dbc->dbp, 
NULL
,

426 &
_key
, &
_da
, 
ags
 =
DBM_INSERT
 ? 
DB_NOOVERWRITE
 : 0)) == 0)

429 i(
t
 =
DB_KEYEXIST
)

432 
	`__os_t_o
(
t
);

433 
	`F_SET
(
dbc
->
dbp
, 
DB_AM_DBM_ERROR
);

435 
	}
}

438 
	$__db_ndbm_r
(
dbm
)

439 
DBM
 *
dbm
;

441 
DBC
 *
dbc
;

443 
dbc
 = (
DBC
 *)
dbm
;

445  (
	`F_ISSET
(
dbc
->
dbp
, 
DB_AM_DBM_ERROR
));

446 
	}
}

449 
	$__db_ndbm_
(
dbm
)

450 
DBM
 *
dbm
;

452 
DBC
 *
dbc
;

454 
dbc
 = (
DBC
 *)
dbm
;

456 
	`F_CLR
(
dbc
->
dbp
, 
DB_AM_DBM_ERROR
);

458 
	}
}

466 
	$__db_ndbm_rdly
(
dbm
)

467 
DBM
 *
dbm
;

469 
DBC
 *
dbc
;

471 
dbc
 = (
DBC
 *)
dbm
;

473  (
	`F_ISSET
(
dbc
->
dbp
, 
DB_AM_RDONLY
) ? 1 : 0);

474 
	}
}

483 
	$__db_ndbm_do
(
dbm
)

484 
DBM
 *
dbm
;

486  (
	`dbm_go
(
dbm
));

487 
	}
}

490 
	$__db_ndbm_go
(
dbm
)

491 
DBM
 *
dbm
;

493 
DBC
 *
dbc
;

494 
fd
;

496 
dbc
 = (
DBC
 *)
dbm
;

498 ()
dbc
->
dbp
->
	`fd
(dbc->dbp, &
fd
);

499  (
fd
);

500 
	}
}

	@../dbreg/dbreg.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/log.h
"

14 
	~"dbc/txn.h
"

15 
	~"dbc/db_am.h
"

17 
__dbg_push_id
 
__P
((
DB_ENV
 *, 
t32_t
));

18 
__dbg_p_id
 
__P
((
DB_ENV
 *, 
t32_t
 *));

19 
__dbg_uck_id
 
__P
((
DB_ENV
 *, 
t32_t
));

89 
	$__dbg_tup
(
dbp
, 
me
, 
_txnid
)

90 
DB
 *
dbp
;

91 cڡ *
me
;

92 
u_t32_t
 
_txnid
;

94 
DB_ENV
 *
dbv
;

95 
DB_LOG
 *
db
;

96 
FNAME
 *
p
;

97 
REGINFO
 *
f
;

98 
t
;

99 
size_t
 
n
;

100 *
m
;

102 
dbv
 = 
dbp
->dbenv;

103 
db
 = 
dbv
->
lg_hd
;

104 
f
 = &
db
->
gfo
;

106 
p
 = 
NULL
;

107 
m
 = 
NULL
;

110 
	`LOG_SYSTEM_LOCK
(
dbv
);

111 i((
t
 = 
	`__v_loc
(
f
, (
FNAME
), &
p
)) != 0)

112 
r
;

113 
	`memt
(
p
, 0, (
FNAME
));

114 i(
me
 !
NULL
) {

115 
n
 = 
	`
(
me
) + 1;

116 i((
t
 = 
	`__v_loc
(
f
, 
n
, &
m
)) != 0)

117 
r
;

118 
p
->
me_off
 = 
	`R_OFFSET
(
f
, 
m
);

119 
	`memy
(
m
, 
me
, 
n
);

121 
p
->
me_off
 = 
INVALID_ROFF
;

123 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

129 
p
->
id
 = f->
d_id
 = 
DB_LOGFILEID_INVALID
;

130 
p
->
s_ty
 = 
dbp
->
ty
;

131 
	`memy
(
p
->
ufid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

132 
p
->
ma_pgno
 = 
dbp
->meta_pgno;

133 
p
->
_txnid
 = create_txnid;

135 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

136 
	`F_SET
(
p
, 
DB_FNAME_INMEM
);

137 i(
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
))

138 
	`F_SET
(
p
, 
DB_FNAME_RECOVER
);

139 
p
->
txn_f
 = 1;

140 
p
->
mux
 = 
dbp
->mutex;

142 
dbp
->
log_fame
 = 
p
;

146 
r
: 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

147 i(
t
 =
ENOMEM
)

148 
	`__db_rx
(
dbv
,

151  (
t
);

152 
	}
}

162 
	$__dbg_down
(
dbp
)

163 
DB
 *
dbp
;

165 
t
;

171 i(
dbp
->
log_fame
 =
NULL
)

174 
t
 = 
	`__dbg_down_t
(
dbp
->
dbv
, dbp->
log_fame
);

177 
dbp
->
log_fame
 = 
NULL
;

178 
dbp
->
mux
 = 
MUTEX_INVALID
;

180  (
t
);

181 
	}
}

190 
	$__dbg_down_t
(
dbv
, 
p
)

191 
DB_ENV
 *
dbv
;

192 
FNAME
 *
p
;

194 
DB_LOG
 *
db
;

195 
REGINFO
 *
f
;

196 
t
;

198 i(
	`F_ISSET
(
p
, 
DB_FNAME_NOTLOGGED
))

200 
db
 = 
dbv
->
lg_hd
;

201 
f
 = &
db
->
gfo
;

203 
	`DB_ASSERT
(
dbv
, 
p
->
id
 =
DB_LOGFILEID_INVALID
);

204 
t
 = 
	`__mux_
(
dbv
, &
p
->
mux
);

206 
	`LOG_SYSTEM_LOCK
(
dbv
);

207 i(
p
->
me_off
 !
INVALID_ROFF
)

208 
	`__v_loc_
(
f
, 
	`R_ADDR
(f, 
p
->
me_off
));

209 
	`__v_loc_
(
f
, 
p
);

210 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

212  (
t
);

213 
	}
}

224 
	$__dbg_w_id
(
dbp
, 
txn
)

225 
DB
 *
dbp
;

226 
DB_TXN
 *
txn
;

228 
DB_ENV
 *
dbv
;

229 
DB_LOG
 *
db
;

230 
FNAME
 *
p
;

231 
LOG
 *

;

232 
t32_t
 
id
;

233 
t
;

235 
dbv
 = 
dbp
->dbenv;

236 
db
 = 
dbv
->
lg_hd
;

237 

 = 
db
->
gfo
.
imy
;

238 
p
 = 
dbp
->
log_fame
;

241 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

242 i(
p
->
id
 !
DB_LOGFILEID_INVALID
) {

243 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

246 i((
t
 = 
	`__dbg_g_id
(
dbp
, 
txn
, &
id
)) == 0)

247 
p
->
id
 = id;

248 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

249  (
t
);

250 
	}
}

261 
	$__dbg_g_id
(
dbp
, 
txn
, 
idp
)

262 
DB
 *
dbp
;

263 
DB_TXN
 *
txn
;

264 
t32_t
 *
idp
;

266 
DB_ENV
 *
dbv
;

267 
DB_LOG
 *
db
;

268 
FNAME
 *
p
;

269 
LOG
 *

;

270 
t32_t
 
id
;

271 
t
;

273 
dbv
 = 
dbp
->dbenv;

274 
db
 = 
dbv
->
lg_hd
;

275 

 = 
db
->
gfo
.
imy
;

276 
p
 = 
dbp
->
log_fame
;

284 i((
t
 = 
	`__dbg_p_id
(
dbv
, &
id
)) != 0)

285 
r
;

288 i(
id
 =
DB_LOGFILEID_INVALID
)

289 
id
 = 

->
fid_max
++;

292 i(!
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
))

293 
	`F_SET
(
p
, 
DB_FNAME_DURABLE
);

296 
	`SH_TAILQ_INSERT_HEAD
(&

->
fq
, 
p
, 
q
, 
__ame
);

302 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
));

304 i((
t
 = 
	`__dbg_log_id
(
dbp
, 
txn
, 
id
, 0)) != 0)

305 
r
;

312 
p
->
_txnid
 = 
TXN_INVALID
;

314 
	`DB_ASSERT
(
dbv
, 
dbp
->
ty
 =
p
->
s_ty
);

315 
	`DB_ASSERT
(
dbv
, 
dbp
->
ma_pgno
 =
p
->meta_pgno);

317 i((
t
 = 
	`__dbg_add_dby
(
dbv
, 
db
, 
dbp
, 
id
)) != 0)

318 
r
;

324 
r
:

325 i(
t
 !0 && 
id
 !
DB_LOGFILEID_INVALID
) {

326 ()
	`__dbg_voke_id
(
dbp
, 1, 
id
);

327 
id
 = 
DB_LOGFILEID_INVALID
;

329 *
idp
 = 
id
;

330  (
t
);

331 
	}
}

340 
	$__dbg_assign_id
(
dbp
, 
id
)

341 
DB
 *
dbp
;

342 
t32_t
 
id
;

344 
DB
 *
o_dbp
;

345 
DB_ENV
 *
dbv
;

346 
DB_LOG
 *
db
;

347 
FNAME
 *
o_p
, *
p
;

348 
LOG
 *

;

349 
t
;

351 
dbv
 = 
dbp
->dbenv;

352 
db
 = 
dbv
->
lg_hd
;

353 

 = 
db
->
gfo
.
imy
;

354 
p
 = 
dbp
->
log_fame
;

356 
o_dbp
 = 
NULL
;

357 
o_p
 = 
NULL
;

360 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

363 
	`DB_ASSERT
(
dbv
, 
p
->
id
 =
DB_LOGFILEID_INVALID
);

370 i(
	`__dbg_id_to_ame
(
db
, 
id
, 1, &
o_p
) == 0) {

382 
t
 = 
	`__dbg_id_to_db_t
(
dbv
, 
NULL
, &
o_dbp
, 
id
, 0, 0);

383 i(
t
 =
ENOENT
) {

384 
t
 = 0;

385 
ct
;

386 } i(
t
 != 0)

387 
r
;

389 i((
t
 = 
	`__dbg_voke_id
(
o_dbp
, 1,

390 
DB_LOGFILEID_INVALID
)) != 0)

391 
r
;

398 
ct
: i((
t
 = 
	`__dbg_uck_id
(
dbv
, 
id
)) != 0)

399 
r
;

400 i(
id
 >

->
fid_max
)

401 

->
fid_max
 = 
id
 + 1;

404 
p
->
id
 = id;

406 i(!
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
))

407 
	`F_SET
(
p
, 
DB_FNAME_DURABLE
);

408 
	`SH_TAILQ_INSERT_HEAD
(&

->
fq
, 
p
, 
q
, 
__ame
);

415 i((
t
 = 
	`__dbg_add_dby
(
dbv
, 
db
, 
dbp
, 
id
)) != 0)

416 ()
	`__dbg_voke_id
(
dbp
, 1, 
id
);

418 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

421 i(
o_dbp
 !
NULL
)

422 ()
	`__db_o
(
o_dbp
, 
NULL
, 
DB_NOSYNC
);

424  (
t
);

425 
	}
}

435 
	$__dbg_voke_id
(
dbp
, 
have_lock
, 
f_id
)

436 
DB
 *
dbp
;

437 
have_lock
;

438 
t32_t
 
f_id
;

440 
DB_ENV
 *
dbv
;

441 
DB_REP
 *
db_p
;

442 
push
;

444 
dbv
 = 
dbp
->dbenv;

453 
db_p
 = 
dbv
->
p_hd
;

454 
push
 = (!
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
|| 
	`IS_RECOVERING
(
dbv
)) &&

455 (!
	`REP_ON
(
dbv
|| ((
REP
 *)
db_p
->
gi
)->
g
 =
dbp
->
fid_g
);

457  (
	`__dbg_voke_id_t
(
dbp
->
dbv
,

458 
dbp
->
log_fame
, 
have_lock
, 
push
, 
f_id
));

459 
	}
}

469 
	$__dbg_voke_id_t
(
dbv
, 
p
, 
have_lock
, 
push
, 
f_id
)

470 
DB_ENV
 *
dbv
;

471 
FNAME
 *
p
;

472 
have_lock
, 
push
;

473 
t32_t
 
f_id
;

475 
DB_LOG
 *
db
;

476 
LOG
 *

;

477 
t32_t
 
id
;

478 
t
;

480 
db
 = 
dbv
->
lg_hd
;

481 

 = 
db
->
gfo
.
imy
;

482 
t
 = 0;

485 i(
p
 =
NULL
)

493 i(
f_id
 !
DB_LOGFILEID_INVALID
)

494 
id
 = 
f_id
;

495 i(
p
->
id
 =
DB_LOGFILEID_INVALID
) {

496 i(
p
->
d_id
 =
DB_LOGFILEID_INVALID
)

498 
id
 = 
p
->
d_id
;

500 
id
 = 
p
->id;

501 i(!
have_lock
)

502 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

504 
p
->
id
 = 
DB_LOGFILEID_INVALID
;

505 
p
->
d_id
 = 
DB_LOGFILEID_INVALID
;

508 
	`SH_TAILQ_REMOVE
(&

->
fq
, 
p
, 
q
, 
__ame
);

516 i(!
	`F_ISSET
(
p
, 
DB_FNAME_CLOSED
) &&

517 (
t
 = 
	`__dbg_m_dby
(
db
, 
id
)=0 && 
push
)

518 
t
 = 
	`__dbg_push_id
(
dbv
, 
id
);

520 i(!
have_lock
)

521 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

522  (
t
);

523 
	}
}

533 
	$__dbg_o_id
(
dbp
, 
txn
, 

)

534 
DB
 *
dbp
;

535 
DB_TXN
 *
txn
;

536 
u_t32_t
 

;

538 
DB_ENV
 *
dbv
;

539 
DB_LOG
 *
db
;

540 
FNAME
 *
p
;

541 
LOG
 *

;

542 
t
, 
t_t
;

544 
dbv
 = 
dbp
->dbenv;

545 
db
 = 
dbv
->
lg_hd
;

546 

 = 
db
->
gfo
.
imy
;

547 
p
 = 
dbp
->
log_fame
;

550 i(
p
 =
NULL
)

553 i(
p
->
id
 =
DB_LOGFILEID_INVALID
)

554  (
	`__dbg_voke_id
(
dbp
, 0, 
DB_LOGFILEID_INVALID
));

562 
t
 = 0;

563 
	`DB_ASSERT
(
dbv
, 
p
->
txn_f
 > 0);

564 i(
p
->
txn_f
 > 1) {

565 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

566 i(
p
->
txn_f
 > 1) {

567 
p
->
txn_f
--;

568 i(!
	`F_ISSET
(
p
, 
DB_FNAME_CLOSED
) &&

569 (
t_t
 = 
	`__dbg_m_dby
(

570 
dbv
->
lg_hd
, 
p
->
id
)!0 && 
t
 == 0)

571 
t
 = 
t_t
;

579 
	`F_SET
(
p
, 
DB_FNAME_CLOSED
);

580 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

582 
dbp
->
mux
 = 
MUTEX_INVALID
;

583 
dbp
->
log_fame
 = 
NULL
;

584 
no_log
;

587 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

589 i((
t
 = 
	`__dbg_log_o
(
dbv
, 
p
, 
txn
, 

)) != 0)

590 
r
;

591 
t
 = 
	`__dbg_voke_id
(
dbp
, 1, 
DB_LOGFILEID_INVALID
);

593 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

595 i((
t_t
 = 
	`__dbg_down
(
dbp
)!0 && 
t
 == 0)

596 
t
 = 
t_t
;

597 
no_log
:

598  (
t
);

599 
	}
}

608 
	$__dbg_o_id_t
(
dbv
, 
p
, 

, 
locked
)

609 
DB_ENV
 *
dbv
;

610 
FNAME
 *
p
;

611 
u_t32_t
 

;

612 
locked
;

614 
DB_LOG
 *
db
;

615 
LOG
 *

;

616 
t
, 
t_t
;

618 
	`DB_ASSERT
(
dbv
, 
p
->
txn_f
 == 1);

619 
db
 = 
dbv
->
lg_hd
;

620 

 = 
db
->
gfo
.
imy
;

622 i(
p
->
id
 =
DB_LOGFILEID_INVALID
)

623  (
	`__dbg_voke_id_t
(
dbv
,

624 
p
, 
locked
, 1, 
DB_LOGFILEID_INVALID
));

626 i(
	`F_ISSET
(
p
, 
DB_FNAME_RECOVER
))

627  (
	`__dbg_o_fe
(
dbv
, 
p
));

632 i(!
locked
)

633 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

634 i((
t
 = 
	`__dbg_log_o
(
dbv
, 
p
, 
NULL
, 

)) != 0)

635 
r
;

637 
t
 = 
	`__dbg_voke_id_t
(
dbv
, 
p
, 1, 1, 
DB_LOGFILEID_INVALID
);

639 
r
: i(!
locked
)

640 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

642 i((
t_t
 = 
	`__dbg_down_t
(
dbv
, 
p
)!0 && 
t
 == 0)

643 
t
 = 
t_t
;

644  (
t
);

645 
	}
}

659 
	$__dbg_log_o
(
dbv
, 
p
, 
txn
, 

)

660 
DB_ENV
 *
dbv
;

661 
FNAME
 *
p
;

662 
DB_TXN
 *
txn
;

663 
u_t32_t
 

;

665 
DB_LOG
 *
db
;

666 
DBT
 
fid_dbt
, 
r_me
, *
db
;

667 
DB_LSN
 
r_unud
;

668 
t
;

670 
db
 = 
dbv
->
lg_hd
;

671 
t
 = 0;

673 i(
p
->
me_off
 =
INVALID_ROFF
)

674 
db
 = 
NULL
;

676 
	`memt
(&
r_me
, 0, (r_name));

677 
r_me
.
da
 = 
	`R_ADDR
(&
db
->
gfo
, 
p
->
me_off
);

678 
r_me
.
size
 =

679 (
u_t32_t
)
	`
((*)
r_me
.
da
) + 1;

680 
db
 = &
r_me
;

682 
	`memt
(&
fid_dbt
, 0, (fid_dbt));

683 
fid_dbt
.
da
 = 
p
->
ufid
;

684 
fid_dbt
.
size
 = 
DB_FILE_ID_LEN
;

685 i((
t
 = 
	`__dbg_gi_log
(
dbv
, 
txn
, &
r_unud
,

686 
	`F_ISSET
(
p
, 
DB_FNAME_DURABLE
? 0 : 
DB_LOG_NOT_DURABLE
,

687 

, 
db
, &
fid_dbt
, 
p
->
id
,

688 
p
->
s_ty
, f->
ma_pgno
, 
TXN_INVALID
)) != 0) {

699 
	`F_SET
(
p
, 
DB_FNAME_NOTLOGGED
);

700 ()
	`__dbg_m_dby
(
db
, 
p
->
id
);

702  (
t
);

703 
	}
}

716 
	$__dbg_push_id
(
dbv
, 
id
)

717 
DB_ENV
 *
dbv
;

718 
t32_t
 
id
;

720 
DB_LOG
 *
db
;

721 
LOG
 *

;

722 
REGINFO
 *
f
;

723 
t32_t
 *
ack
, *
wack
;

724 
t
;

726 
db
 = 
dbv
->
lg_hd
;

727 
f
 = &
db
->
gfo
;

728 

 = 
f
->
imy
;

730 i(
id
 =

->
fid_max
 - 1) {

731 

->
fid_max
--;

736 i(

->
_fid_ack
 =
INVALID_ROFF
 ||

737 

->
_fids_lod
 <->
_fids
 + 1) {

738 
	`LOG_SYSTEM_LOCK
(
dbv
);

739 i((
t
 = 
	`__v_loc
(
f
,

740 (

->
_fids_lod
 + 20* (
u_t32_t
),

741 &
wack
)) != 0) {

742 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

743  (
t
);

746 i(

->
_fid_ack
 !
INVALID_ROFF
) {

747 
ack
 = 
	`R_ADDR
(
f
, 

->
_fid_ack
);

748 
	`memy
(
wack
, 
ack
,

749 

->
_fids_lod
 * (
u_t32_t
));

750 
	`__v_loc_
(
f
, 
ack
);

752 

->
_fid_ack
 = 
	`R_OFFSET
(
f
, 
wack
);

753 

->
_fids_lod
 += 20;

754 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

757 
ack
 = 
	`R_ADDR
(
f
, 

->
_fid_ack
);

758 
ack
[

->
_fids
++] = 
id
;

760 
	}
}

763 
	$__dbg_p_id
(
dbv
, 
id
)

764 
DB_ENV
 *
dbv
;

765 
t32_t
 *
id
;

767 
DB_LOG
 *
db
;

768 
LOG
 *

;

769 
t32_t
 *
ack
;

771 
db
 = 
dbv
->
lg_hd
;

772 

 = 
db
->
gfo
.
imy
;

775 i(

->
_fid_ack
 !
INVALID_ROFF
 &&p->
_fids
 > 0) {

776 
ack
 = 
	`R_ADDR
(&
db
->
gfo
, 

->
_fid_ack
);

777 *
id
 = 
ack
[--

->
_fids
];

779 *
id
 = 
DB_LOGFILEID_INVALID
;

782 
	}
}

794 
	$__dbg_uck_id
(
dbv
, 
id
)

795 
DB_ENV
 *
dbv
;

796 
t32_t
 
id
;

798 
DB_LOG
 *
db
;

799 
LOG
 *

;

800 
t32_t
 *
ack
;

801 
u_t
 
i
;

803 
db
 = 
dbv
->
lg_hd
;

804 

 = 
db
->
gfo
.
imy
;

806 i(
id
 >

->
fid_max
)

810 i(

->
_fid_ack
 !
INVALID_ROFF
) {

811 
ack
 = 
	`R_ADDR
(&
db
->
gfo
, 

->
_fid_ack
);

812 
i
 = 0; i < 

->
_fids
; i++)

813 i(
id
 =
ack
[
i
]) {

819 
ack
[
i
] = sck[

->
_fids
 - 1];

820 

->
_fids
--;

826 
	}
}

841 
	$__dbg_log_id
(
dbp
, 
txn
, 
id
, 
edlock
)

842 
DB
 *
dbp
;

843 
DB_TXN
 *
txn
;

844 
t32_t
 
id
;

845 
edlock
;

847 
DBT
 
fid_dbt
, 
r_me
;

848 
DB_ENV
 *
dbv
;

849 
DB_LOG
 *
db
;

850 
DB_LSN
 
unud
;

851 
FNAME
 *
p
;

852 
LOG
 *

;

853 
u_t32_t
 

;

854 
t
;

856 
dbv
 = 
dbp
->dbenv;

857 
db
 = 
dbv
->
lg_hd
;

858 

 = 
db
->
gfo
.
imy
;

859 
p
 = 
dbp
->
log_fame
;

862 i(
p
->
s_ty
 =
DB_UNKNOWN
) {

863 
	`memy
(
p
->
ufid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

864 
p
->
s_ty
 = 
dbp
->
ty
;

871 
	`memt
(&
fid_dbt
, 0, (fid_dbt));

872 
	`memt
(&
r_me
, 0, (r_name));

874 i(
edlock
)

875 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

877 i(
p
->
me_off
 !
INVALID_ROFF
) {

878 
r_me
.
da
 = 
	`R_ADDR
(&
db
->
gfo
, 
p
->
me_off
);

879 
r_me
.
size
 = (
u_t32_t
)
	`
((*_me.
da
) + 1;

882 
fid_dbt
.
da
 = 
dbp
->
feid
;

883 
fid_dbt
.
size
 = 
DB_FILE_ID_LEN
;

885 

 = !
	`F_ISSET
(
dbp
, 
DB_AM_OPEN_CALLED
? 
DBREG_PREOPEN
 :

886 (
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
? 
DBREG_REOPEN
 : 
DBREG_OPEN
);

887 
t
 = 
	`__dbg_gi_log
(
dbv
, 
txn
, &
unud
,

888 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0,

889 

, 
r_me
.
size
 =0 ? 
NULL
 : &r_me, &
fid_dbt
, 
id
,

890 
p
->
s_ty
, f->
ma_pgno
, f->
_txnid
);

892 i(
edlock
)

893 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

895  (
t
);

896 
	}
}

	@../dbreg/dbreg_auto.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/log.h
"

11 
	~"dbc/txn.h
"

19 
	$__dbg_gi_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

20 
code
, 
me
, 
uid
, 
feid
, 
y
, 
ma_pgno
,

21 
id
)

22 
DB_ENV
 *
dbv
;

23 
DB_TXN
 *
tx
;

24 
DB_LSN
 *
t_lp
;

25 
u_t32_t
 
ags
;

26 
u_t32_t
 
code
;

27 cڡ 
DBT
 *
me
;

28 cڡ 
DBT
 *
uid
;

29 
t32_t
 
feid
;

30 
DBTYPE
 
y
;

31 
db_pgno_t
 
ma_pgno
;

32 
u_t32_t
 
id
;

34 
DBT
 
logc
;

35 
DB_TXNLOGREC
 *

;

36 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

37 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

38 
u_t
 
ad
;

39 
u_t8_t
 *
bp
;

40 
is_dub
, 
t
;

42 
	`COMPQUIET
(

, 
NULL
);

44 
y
 = 
DB___dbg_gi
;

45 
ad
 = 0;

46 
p
 = 
t_lp
;

48 
t
 = 0;

50 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

51 i(
tx
 =
NULL
)

53 i(
tx
 =
NULL
)

55 
is_dub
 = 0;

57 
is_dub
 = 1;

59 i(
tx
 =
NULL
) {

60 
txn_num
 = 0;

61 
lp
 = &
nu_l
;

62 
nu_l
.
fe
 =u_l.
offt
 = 0;

64 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

65 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

66  (
t
);

73 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

74 
txn_num
 = 
tx
->
txnid
;

77 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

78 + (
u_t32_t
)

79 + (
u_t32_t
+ (
me
 =
NULL
 ? 0 :ame->
size
)

80 + (
u_t32_t
+ (
uid
 =
NULL
 ? 0 : uid->
size
)

81 + (
u_t32_t
)

82 + (
u_t32_t
)

83 + (
u_t32_t
)

84 + (
u_t32_t
);

85 i(
	`CRYPTO_ON
(
dbv
)) {

86 
ad
 =

87 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

88 
logc
.
size
 +
ad
;

91 i(
is_dub
 || 
tx
 =
NULL
) {

92 i((
t
 =

93 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

94  (
t
);

96 i((
t
 = 
	`__os_mloc
(
dbv
,

97 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

98  (
t
);

99 #ifde
DIAGNOSTIC


100 i((
t
 =

101 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

102 
	`__os_
(
dbv
, 

);

103  (
t
);

106 
logc
.
da
 = 

->data;

109 i(
ad
 > 0)

110 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

112 
bp
 = 
logc
.
da
;

114 
	`memy
(
bp
, &
y
, (rectype));

115 
bp
 +(
y
);

117 
	`memy
(
bp
, &
txn_num
, (txn_num));

118 
bp
 +(
txn_num
);

120 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

121 
bp
 +(
DB_LSN
);

123 
ump
 = (
u_t32_t
)
code
;

124 
	`memy
(
bp
, &
ump
, (uinttmp));

125 
bp
 +(
ump
);

127 i(
me
 =
NULL
) {

128 
zo
 = 0;

129 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

130 
bp
 +(
u_t32_t
);

132 
	`memy
(
bp
, &
me
->
size
, (name->size));

133 
bp
 +(
me
->
size
);

134 
	`memy
(
bp
, 
me
->
da
,ame->
size
);

135 
bp
 +
me
->
size
;

138 i(
uid
 =
NULL
) {

139 
zo
 = 0;

140 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

141 
bp
 +(
u_t32_t
);

143 
	`memy
(
bp
, &
uid
->
size
, (uid->size));

144 
bp
 +(
uid
->
size
);

145 
	`memy
(
bp
, 
uid
->
da
, uid->
size
);

146 
bp
 +
uid
->
size
;

149 
ump
 = (
u_t32_t
)
feid
;

150 
	`memy
(
bp
, &
ump
, (uinttmp));

151 
bp
 +(
ump
);

153 
ump
 = (
u_t32_t
)
y
;

154 
	`memy
(
bp
, &
ump
, (uinttmp));

155 
bp
 +(
ump
);

157 
ump
 = (
u_t32_t
)
ma_pgno
;

158 
	`memy
(
bp
, &
ump
, (uinttmp));

159 
bp
 +(
ump
);

161 
ump
 = (
u_t32_t
)
id
;

162 
	`memy
(
bp
, &
ump
, (uinttmp));

163 
bp
 +(
ump
);

165 
	`DB_ASSERT
(
dbv
,

166 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

168 i(
is_dub
 || 
tx
 =
NULL
) {

169 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

170 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

171 *
lp
 = *
p
;

172 i(
p
 !
t_lp
)

173 *
t_lp
 = *
p
;

176 
t
 = 0;

177 #ifde
DIAGNOSTIC


182 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

183 
y
 |
DB_debug_FLAG
;

184 
	`memy
(
logc
.
da
, &
y
, (rectype));

186 i(!
	`IS_REP_CLIENT
(
dbv
))

187 
t
 = 
	`__log_put
(
dbv
,

188 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

190 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

191 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

192 
	`LSN_NOT_LOGGED
(*
t_lp
);

195 #ifde
LOG_DIAGNOSTIC


196 i(
t
 != 0)

197 ()
	`__dbg_gi_t
(
dbv
,

198 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

201 #ifde
DIAGNOSTIC


202 
	`__os_
(
dbv
, 
logc
.
da
);

204 i(
is_dub
 || 
tx
 =
NULL
)

205 
	`__os_
(
dbv
, 
logc
.
da
);

207  (
t
);

208 
	}
}

215 
	$__dbg_gi_ad
(
dbv
, 
cbuf
, 
g
)

216 
DB_ENV
 *
dbv
;

217 *
cbuf
;

218 
__dbg_gi_gs
 **
g
;

220 
__dbg_gi_gs
 *
gp
;

221 
u_t32_t
 
ump
;

222 
u_t8_t
 *
bp
;

223 
t
;

225 i((
t
 = 
	`__os_mloc
(
dbv
,

226 (
__dbg_gi_gs
+ (
DB_TXN
), &
gp
)) != 0)

227  (
t
);

228 
bp
 = 
cbuf
;

229 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

230 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

232 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

233 
bp
 +(
gp
->
ty
);

235 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

236 
bp
 +(
gp
->
tx
->
txnid
);

238 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

239 
bp
 +(
DB_LSN
);

241 
	`memy
(&
ump
, 
bp
, (uinttmp));

242 
gp
->
code
 = (
u_t32_t
)
ump
;

243 
bp
 +(
ump
);

245 
	`memt
(&
gp
->
me
, 0, (argp->name));

246 
	`memy
(&
gp
->
me
.
size
, 
bp
, (
u_t32_t
));

247 
bp
 +(
u_t32_t
);

248 
gp
->
me
.
da
 = 
bp
;

249 
bp
 +
gp
->
me
.
size
;

251 
	`memt
(&
gp
->
uid
, 0, (argp->uid));

252 
	`memy
(&
gp
->
uid
.
size
, 
bp
, (
u_t32_t
));

253 
bp
 +(
u_t32_t
);

254 
gp
->
uid
.
da
 = 
bp
;

255 
bp
 +
gp
->
uid
.
size
;

257 
	`memy
(&
ump
, 
bp
, (uinttmp));

258 
gp
->
feid
 = (
t32_t
)
ump
;

259 
bp
 +(
ump
);

261 
	`memy
(&
ump
, 
bp
, (uinttmp));

262 
gp
->
y
 = (
DBTYPE
)
ump
;

263 
bp
 +(
ump
);

265 
	`memy
(&
ump
, 
bp
, (uinttmp));

266 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

267 
bp
 +(
ump
);

269 
	`memy
(&
ump
, 
bp
, (uinttmp));

270 
gp
->
id
 = (
u_t32_t
)
ump
;

271 
bp
 +(
ump
);

273 *
g
 = 
gp
;

275 
	}
}

282 
	$__dbg__cov
(
dbv
, 
dbp
, 
dbsiz
)

283 
DB_ENV
 *
dbv
;

284 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

285 
size_t
 *
dbsiz
;

287 
t
;

289 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

290 
__dbg_gi_cov
, 
DB___dbg_gi
)) != 0)

291  (
t
);

293 
	}
}

	@../dbreg/dbreg_autop.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/log.h
"

11 
	~"dbc/txn.h
"

18 
	$__dbg_gi_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

19 
DB_ENV
 *
dbv
;

20 
DBT
 *
db
;

21 
DB_LSN
 *
lp
;

22 
db_cs
 
nud2
;

23 *
nud3
;

25 
__dbg_gi_gs
 *
gp
;

26 
u_t32_t
 
i
;

27 
ch
;

28 
t
;

30 
nud2
 = 
DB_TXN_PRINT
;

31 
nud3
 = 
NULL
;

33 i((
t
 = 
	`__dbg_gi_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

34  (
t
);

35 ()
	`tf
(

37 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

38 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

39 (
u_lg
)
gp
->
ty
,

40 (
u_lg
)
gp
->
tx
->
txnid
,

41 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

42 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

43 ()
	`tf
("\tname: ");

44 
i
 = 0; i < 
gp
->
me
.
size
; i++) {

45 
ch
 = ((
u_t8_t
 *)
gp
->
me
.
da
)[
i
];

46 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

48 ()
	`tf
("\n");

49 ()
	`tf
("\tuid: ");

50 
i
 = 0; i < 
gp
->
uid
.
size
; i++) {

51 
ch
 = ((
u_t8_t
 *)
gp
->
uid
.
da
)[
i
];

52 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

54 ()
	`tf
("\n");

55 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

56 ()
	`tf
("\ty: 0x%lx\n", (
u_lg
)
gp
->
y
);

57 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

58 ()
	`tf
("\tid: 0x%lx\n", (
u_lg
)
gp
->
id
);

59 ()
	`tf
("\n");

60 
	`__os_
(
dbv
, 
gp
);

62 
	}
}

69 
	$__dbg__t
(
dbv
, 
dbp
, 
dbsiz
)

70 
DB_ENV
 *
dbv
;

71 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

72 
size_t
 *
dbsiz
;

74 
t
;

76 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

77 
__dbg_gi_t
, 
DB___dbg_gi
)) != 0)

78  (
t
);

80 
	}
}

	@../dbreg/dbreg_rec.c

37 
	~"db_cfig.h
"

39 
	~"db_t.h
"

40 
	~"dbc/db_ge.h
"

41 
	~"dbc/db_am.h
"

42 
	~"dbc/log.h
"

43 
	~"dbc/txn.h
"

45 
__dbg_ݒ_fe
 
__P
((
DB_ENV
 *,

46 
DB_TXN
 *, 
__dbg_gi_gs
 *, *));

53 
	$__dbg_gi_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

54 
DB_ENV
 *
dbv
;

55 
DBT
 *
db
;

56 
DB_LSN
 *
lp
;

57 
db_cs
 

;

58 *
fo
;

60 
DB_ENTRY
 *
dbe
;

61 
DB_LOG
 *
db
;

62 
DB
 *
dbp
;

63 
__dbg_gi_gs
 *
gp
;

64 
do_o
, 
do_ݒ
, 
do_m
, 
t
, 
t_t
;

65 
u_t32_t
 
us
;

67 
db
 = 
dbv
->
lg_hd
;

68 
dbp
 = 
NULL
;

70 #ifde
DEBUG_RECOVER


71 
	`REC_PRINT
(
__dbg_gi_t
);

73 
do_ݒ
 = 
do_o
 = 0;

74 i((
t
 = 
	`__dbg_gi_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

75 
out
;

77 
gp
->
code
) {

78 
DBREG_REOPEN
:

79 
DBREG_PREOPEN
:

80 
DBREG_OPEN
:

87 i((
	`DB_REDO
(

) ||

88 

 =
DB_TXN_OPENFILES
 || o=
DB_TXN_POPENFILES
))

89 
do_ݒ
 = 1;

90 i(
gp
->
code
 !
DBREG_REOPEN
)

91 
do_o
 = 1;

93 
DBREG_CLOSE
:

94 i(
	`DB_UNDO
(

))

95 
do_ݒ
 = 1;

97 
do_o
 = 1;

99 
DBREG_RCLOSE
:

108 i(
	`DB_UNDO
(

|| o=
DB_TXN_POPENFILES
)

109 
do_ݒ
 = 1;

111 
do_o
 = 1;

113 
DBREG_CHKPNT
:

114 i(
	`DB_UNDO
(

) ||

115 

 =
DB_TXN_OPENFILES
 || o=
DB_TXN_POPENFILES
)

116 
do_ݒ
 = 1;

119 
t
 = 
	`__db_unknown_th
(
dbv
, "__dbreg_register_recover");

120 
out
;

123 i(
do_ݒ
) {

128 i(

 =
DB_TXN_OPENFILES
 && 
gp
->
code
 !
DBREG_CHKPNT
)

129 
	`F_SET
(
db
, 
DBLOG_FORCE_OPEN
);

136 
t
 = 
	`__dbg_ݒ_fe
(
dbv
,

137 

 =
DB_TXN_ABORT
 || o=
DB_TXN_POPENFILES
 ?

138 
gp
->
tx
 : 
NULL
,rgp, 
fo
);

139 i(
t
 =
DB_PAGE_NOTFOUND
 && 
gp
->
ma_pgno
 !
PGNO_BASE_MD
)

140 
t
 = 
ENOENT
;

141 i(
t
 =
ENOENT
 || =
EINVAL
) {

149 i(

 =
DB_TXN_FORWARD_ROLL
 &&

150 
gp
->
tx
 != 0 &&

151 
db
->
dby
[
gp
->
feid
].
ded
) {

152 
db
->
dby
[
gp
->
feid
].
ded
 = 0;

153 
t
 =

154 
	`__dbg_ݒ_fe
(
dbv
, 
NULL
, 
gp
, 
fo
);

155 i(
t
 =
DB_PAGE_NOTFOUND
 &&

156 
gp
->
ma_pgno
 !
PGNO_BASE_MD
)

157 
t
 = 
ENOENT
;

164 i(
t
 =
ENOENT
)

165 
t
 = 0;

167 
	`F_CLR
(
db
, 
DBLOG_FORCE_OPEN
);

170 i(
do_o
) {

183 
do_m
 = 0;

184 
	`MUTEX_LOCK
(
dbv
, 
db
->
mtx_dbg
);

185 i(
gp
->
feid
 < 
db
->
dby_t
) {

202 
dbe
 = &
db
->
dby
[
gp
->
feid
];

203 i(
dbe
->
dbp
 =
NULL
 && !dbe->
ded
) {

205 i((
	`DB_REDO
(

) &&

206 
gp
->
code
 !
DBREG_RCLOSE
) ||

207 
gp
->
code
 =
DBREG_CHKPNT
) {

208 
	`__db_rx
(
dbv
,

210 (
u_lg
)
lp
->
fe
,

211 (
u_lg
)
lp
->
offt
);

213 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

214 
de
;

218 i((
dbp
 = 
dbe
->dbp!
NULL
) {

229 
do_m
 = 
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
) ?

230 

 !
DB_TXN_ABORT
 : op == DB_TXN_ABORT;

231 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

237 i(!
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
)) {

238 i(

 =
DB_TXN_ABORT
)

239 
t
 = 
	`__dbg_log_o
(
dbv
,

240 
dbp
->
log_fame
,

241 
NULL
, 
DBREG_RCLOSE
);

242 i(
t
 == 0)

243 ()
	`__dbg_voke_id
(
dbp
, 0,

244 
DB_LOGFILEID_INVALID
);

245 
t
 = 0;

247 } i(
dbe
->
ded
) {

248 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

249 i((
t
 = 
	`__dbg_m_dby
(

250 
db
, 
gp
->
feid
)) != 0)

251 
out
;

254 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

273 i(
do_m
 && 
dbp
 !
NULL
) {

274 i(
gp
->
id
 !
TXN_INVALID
) {

275 i((
t
 = 
	`__db_txi_fd
(
dbv
,

276 
fo
, 
gp
->
tx
->
txnid
, &
us
))

277 !
DB_NOTFOUND
 && 
t
 != 0)

278 
out
;

279 i(
t
 =
DB_NOTFOUND
 || 
us
 !
TXN_COMMIT
)

280 
	`F_SET
(
dbp
, 
DB_AM_DISCARD
);

281 
t
 = 0;

284 i(

 =
DB_TXN_ABORT
) {

285 i((
t_t
 = 
	`__db_esh
(
dbp
,

286 
NULL
, 
DB_NOSYNC
, NULL, 0)!0 && 
t
 == 0)

287 
t
 = 
t_t
;

289 i((
t_t
 = 
	`__db_o
(

290 
dbp
, 
NULL
, 
DB_NOSYNC
)!0 && 
t
 == 0)

291 
t
 = 
t_t
;

295 
de
: i(
t
 == 0)

296 *
lp
 = 
gp
->
ev_l
;

297 
out
: i(
gp
 !
NULL
)

298 
	`__os_
(
dbv
, 
gp
);

299  (
t
);

300 
	}
}

309 
	$__dbg_ݒ_fe
(
dbv
, 
txn
, 
gp
, 
fo
)

310 
DB_ENV
 *
dbv
;

311 
DB_TXN
 *
txn
;

312 
__dbg_gi_gs
 *
gp
;

313 *
fo
;

315 
DB_ENTRY
 *
dbe
;

316 
DB_LOG
 *
db
;

317 
DB
 *
dbp
;

318 
u_t32_t
 
id
, 
us
;

319 
t
;

321 
db
 = 
dbv
->
lg_hd
;

328 
	`MUTEX_LOCK
(
dbv
, 
db
->
mtx_dbg
);

329 i(
gp
->
feid
 !
DB_LOGFILEID_INVALID
 &&

330 
gp
->
feid
 < 
db
->
dby_t
)

331 
dbe
 = &
db
->
dby
[
gp
->
feid
];

333 
dbe
 = 
NULL
;

335 i(
dbe
 !
NULL
) {

336 i(
dbe
->
ded
) {

337 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

338  (
ENOENT
);

353 i((
dbp
 = 
dbe
->dbp!
NULL
) {

354 i(
gp
->
code
 =
DBREG_REOPEN
 ||

355 
dbp
->
ma_pgno
 !
gp
->meta_pgno ||

356 
gp
->
me
.
size
 == 0 ||

357 
	`memcmp
(
dbp
->
feid
, 
gp
->
uid
.
da
,

358 
DB_FILE_ID_LEN
) != 0) {

359 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

360 ()
	`__dbg_voke_id
(
dbp
, 0,

361 
DB_LOGFILEID_INVALID
);

362 i(
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
))

363 ()
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
);

364 
ݒ
;

372 
	`DB_ASSERT
(
dbv
, 
dbe
->
dbp
 == dbp);

373 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

380 i(
gp
->
id
 !
TXN_INVALID
 &&

381 (
t
 = 
	`__db_txi_upde
(
dbv
, 
fo
,

382 
gp
->
id
, 
TXN_EXPECTED
, 
NULL
, &
us
, 1)) != 0)

383  (
t
);

388 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

390 
ݒ
:

398 i(
gp
->
me
.
size
 == 0) {

399 ()
	`__dbg_add_dby
(
dbv
, 
db
, 
NULL
, 
gp
->
feid
);

400  (
ENOENT
);

407 i(
txn
 !
NULL
) {

408 
id
 = 
txn
->
txnid
;

409 
	`memt
(
txn
, 0, (
DB_TXN
));

410 
txn
->
txnid
 = 
id
;

411 
txn
->
mg
 = 
dbv
->
tx_hd
;

414  (
	`__dbg_do_ݒ
(
dbv
,

415 
txn
, 
db
, 
gp
->
uid
.
da
,rgp->
me
.da,rgp->
y
,

416 
gp
->
feid
,rgp->
ma_pgno
, 
fo
,rgp->
id
,rgp->
code
));

417 
	}
}

	@../dbreg/dbreg_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/txn.h
"

17 #ifde
HAVE_STATISTICS


18 
__dbg_t_dbli
 
__P
((
DB_ENV
 *, 
u_t32_t
));

27 
	$__dbg__t
(
dbv
, 
ags
)

28 
DB_ENV
 *
dbv
;

29 
u_t32_t
 
ags
;

31 
t
;

33 i(
	`LF_ISSET
(
DB_STAT_ALL
) &&

34 (
t
 = 
	`__dbg_t_dbli
(
dbv
, 
ags
)) != 0)

35  (
t
);

38 
	}
}

47 
	$__dbg_t_ame
(
dbv
, 
p
)

48 
DB_ENV
 *
dbv
;

49 
FNAME
 *
p
;

51 cڡ 
FN
 

[] = {

52 { 
DB_FNAME_DURABLE
, "DB_FNAME_DURABLE" },

53 { 
DB_FNAME_NOTLOGGED
, "DB_FNAME_NOTLOGGED" },

54 { 0, 
NULL
 }

57 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

58 
	`__db_msg
(
dbv
, "DB handle FNAME contents:");

59 
	`STAT_LONG
("log ID", 
p
->
id
);

60 
	`STAT_ULONG
("Mpgno", 
p
->
ma_pgno
);

61 
	`__db_t_feid
(
dbv
, 
p
->
ufid
, "\tFile ID");

62 
	`STAT_ULONG
("xn", 
p
->
_txnid
);

63 
	`__db_ags
(
dbv
, 
NULL
, 
p
->
ags
, 

, NULL, "\tFlags");

64 
	}
}

71 
	$__dbg_t_dbli
(
dbv
, 
ags
)

72 
DB_ENV
 *
dbv
;

73 
u_t32_t
 
ags
;

75 
DB
 *
dbp
;

76 
DB_LOG
 *
db
;

77 
FNAME
 *
p
;

78 
LOG
 *

;

79 
d
, 
f
;

80 *
me
;

82 
db
 = 
dbv
->
lg_hd
;

83 

 = 
db
->
gfo
.
imy
;

85 
	`__db_msg
(
dbv
, "LOG FNAMEist:");

86 
	`__mux_t_debug_sg
(

87 
dbv
, "Fmmux", 

->
mtx_fi
, 
ags
);

89 
	`STAT_LONG
("Fid max", 

->
fid_max
);

91 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

92 
f
 = 1;

93 
	`SH_TAILQ_FOREACH
(
p
, &

->
fq
, 
q
, 
__ame
) {

94 i(
f
) {

95 
f
 = 0;

96 
	`__db_msg
(
dbv
,

99 i(
p
->
me_off
 =
INVALID_ROFF
)

100 
me
 = "";

102 
me
 = 
	`R_ADDR
(&
db
->
gfo
, 
p
->
me_off
);

104 
dbp
 = 
p
->
id
 >
db
->
dby_t
 ? 
NULL
 :

105 
db
->
dby
[
p
->
id
].
dbp
;

106 
d
 = 
p
->
id
 >
db
->
dby_t
 ? 0 :

107 
db
->
dby
[
p
->
id
].
ded
;

108 
	`__db_msg
(
dbv
, "%ld\t%s\t%s\t%lu\t%lx\t%s %d %lx %lx",

109 ()
p
->
id
, 
me
,

110 
	`__db_dbty_to_rg
(
p
->
s_ty
),

111 (
u_lg
)
p
->
ma_pgno
, (u_lg)p->
_txnid
,

112 
dbp
 =
NULL
 ? "NDBP" : "DBP", 
d
, 
	`P_TO_ULONG
(dbp),

113 (
u_lg
)(
dbp
 =
NULL
 ? 0 : dbp->
ags
));

115 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

118 
	}
}

	@../dbreg/dbreg_util.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/f.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/txn.h
"

19 
__dbg_check_ma
 
__P
((
DB_ENV
 *, 
u_t8_t
 *, *));

28 
	$__dbg_add_dby
(
dbv
, 
db
, 
dbp
, 
ndx
)

29 
DB_ENV
 *
dbv
;

30 
DB_LOG
 *
db
;

31 
DB
 *
dbp
;

32 
t32_t
 
ndx
;

34 
t32_t
 
i
;

35 
t
;

37 
t
 = 0;

39 
	`MUTEX_LOCK
(
dbv
, 
db
->
mtx_dbg
);

46 i(
db
->
dby_t
 <
ndx
) {

47 i((
t
 = 
	`__os_loc
(
dbv
,

48 (
size_t
)(
ndx
 + 
DB_GROW_SIZE
* (
DB_ENTRY
),

49 &
db
->
dby
)) != 0)

50 
r
;

53 
i
 = 
db
->
dby_t
; i < 
ndx
 + 
DB_GROW_SIZE
; i++) {

54 
db
->
dby
[
i
].
dbp
 = 
NULL
;

55 
db
->
dby
[
i
].
ded
 = 0;

57 
db
->
dby_t
 = 
i
;

60 
	`DB_ASSERT
(
dbv
, 
db
->
dby
[
ndx
].
dbp
 =
NULL
);

61 
db
->
dby
[
ndx
].
ded
 = 
dbp
 =
NULL
;

62 
db
->
dby
[
ndx
].
dbp
 = dbp;

64 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

65  (
t
);

66 
	}
}

75 
	$__dbg_m_dby
(
db
, 
ndx
)

76 
DB_LOG
 *
db
;

77 
t32_t
 
ndx
;

79 
	`MUTEX_LOCK
(
db
->
dbv
, db->
mtx_dbg
);

80 i(
db
->
dby_t
 > 
ndx
) {

81 
db
->
dby
[
ndx
].
dbp
 = 
NULL
;

82 
db
->
dby
[
ndx
].
ded
 = 0;

84 
	`MUTEX_UNLOCK
(
db
->
dbv
, db->
mtx_dbg
);

87 
	}
}

96 
	$__dbg_log_fes
(
dbv
, 
code
)

97 
DB_ENV
 *
dbv
;

98 
u_t32_t
 
code
;

100 
DB_LOG
 *
db
;

101 
DB_LSN
 
r_unud
;

102 
DBT
 *
db
, 
fid_dbt
, 
t
;

103 
FNAME
 *
p
;

104 
LOG
 *

;

105 
t
;

107 
db
 = 
dbv
->
lg_hd
;

108 

 = 
db
->
gfo
.
imy
;

110 
t
 = 0;

112 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

114 
	`SH_TAILQ_FOREACH
(
p
, &

->
fq
, 
q
, 
__ame
) {

116 i(
p
->
id
 =
DB_LOGFILEID_INVALID
)

118 i(
p
->
me_off
 =
INVALID_ROFF
)

119 
db
 = 
NULL
;

121 
	`memt
(&
t
, 0, (t));

122 
t
.
da
 = 
	`R_ADDR
(&
db
->
gfo
, 
p
->
me_off
);

123 
t
.
size
 = (
u_t32_t
)
	`
.
da
) + 1;

124 
db
 = &
t
;

126 
	`memt
(&
fid_dbt
, 0, (fid_dbt));

127 
fid_dbt
.
da
 = 
p
->
ufid
;

128 
fid_dbt
.
size
 = 
DB_FILE_ID_LEN
;

137 i((
t
 = 
	`__dbg_gi_log
(
dbv
,

138 
NULL
, &
r_unud
,

139 
	`F_ISSET
(
p
, 
DB_FNAME_DURABLE
? 0 : 
DB_LOG_NOT_DURABLE
,

140 
code
,

141 
db
, &
fid_dbt
, 
p
->
id
, f->
s_ty
, f->
ma_pgno
,

142 
TXN_INVALID
)) != 0)

146 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

148  (
t
);

149 
	}
}

162 
	$__dbg_o_fes
(
dbv
, 
do_ed
)

163 
DB_ENV
 *
dbv
;

164 
do_ed
;

166 
DB_LOG
 *
db
;

167 
DB
 *
dbp
;

168 
t
, 
t_t
;

169 
t32_t
 
i
;

172 i(!
	`LOGGING_ON
(
dbv
))

175 
db
 = 
dbv
->
lg_hd
;

176 
t
 = 0;

178 
	`MUTEX_LOCK
(
dbv
, 
db
->
mtx_dbg
);

179 
i
 = 0; i < 
db
->
dby_t
; i++) {

188 i((
dbp
 = 
db
->
dby
[
i
].dbp!
NULL
) {

204 i(
do_ed
 &&

205 !
	`F_ISSET
(
dbp
->
log_fame
, 
DB_FNAME_RESTORED
))

207 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

208 i(
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
))

209 
t_t
 = 
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
);

211 
t_t
 = 
	`__dbg_voke_id
(

212 
dbp
, 0, 
DB_LOGFILEID_INVALID
);

213 i(
t
 == 0)

214 
t
 = 
t_t
;

215 
	`MUTEX_LOCK
(
dbv
, 
db
->
mtx_dbg
);

218 
db
->
dby
[
i
].
ded
 = 0;

219 
db
->
dby
[
i
].
dbp
 = 
NULL
;

221 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

222  (
t
);

223 
	}
}

231 
	$__dbg_o_fe
(
dbv
, 
p
)

232 
DB_ENV
 *
dbv
;

233 
FNAME
 *
p
;

235 
DB_LOG
 *
db
;

236 
DB
 *
dbp
;

238 
db
 = 
dbv
->
lg_hd
;

240 
dbp
 = 
db
->
dby
[
p
->
id
].dbp;

241 i(
dbp
 =
NULL
)

243 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 =
p
);

244 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
));

245  (
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
));

246 
	}
}

257 
	$__dbg_mk_ed
(
dbv
)

258 
DB_ENV
 *
dbv
;

260 
DB_LOG
 *
db
;

261 
FNAME
 *
p
;

262 
LOG
 *

;

265 i(!
	`LOGGING_ON
(
dbv
))

268 
db
 = 
dbv
->
lg_hd
;

269 

 = 
db
->
gfo
.
imy
;

271 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

272 
	`SH_TAILQ_FOREACH
(
p
, &

->
fq
, 
q
, 
__ame
)

273 i(
p
->
id
 !
DB_LOGFILEID_INVALID
)

274 
	`F_SET
(
p
, 
DB_FNAME_RESTORED
);

276 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

278 
	}
}

289 
	$__dbg_vide_fes
(
dbv
, 
do_ed
)

290 
DB_ENV
 *
dbv
;

291 
do_ed
;

293 
DB_LOG
 *
db
;

294 
FNAME
 *
p
;

295 
LOG
 *

;

296 
t
;

299 i(!
	`LOGGING_ON
(
dbv
))

302 
db
 = 
dbv
->
lg_hd
;

303 

 = 
db
->
gfo
.
imy
;

305 
t
 = 0;

306 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

307 
	`SH_TAILQ_FOREACH
(
p
, &

->
fq
, 
q
, 
__ame
) {

313 i(
	`F_ISSET
(
p
, 
DB_FNAME_RESTORED
&& !
do_ed
)

315 i(!
	`F_ISSET
(
p
, 
DB_FNAME_RESTORED
&& 
do_ed
)

317 i(
p
->
id
 !
DB_LOGFILEID_INVALID
) {

318 i((
t
 = 
	`__dbg_log_o
(
dbv
,

319 
p
, 
NULL
, 
DBREG_RCLOSE
)) != 0)

320 
r
;

321 
p
->
d_id
 = f->
id
;

322 
p
->
id
 = 
DB_LOGFILEID_INVALID
;

325 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

326  (
t
);

327 
	}
}

336 
	$__dbg_id_to_db
(
dbv
, 
txn
, 
db
, 
ndx
, 
c
)

337 
DB_ENV
 *
dbv
;

338 
DB_TXN
 *
txn
;

339 
DB
 **
db
;

340 
t32_t
 
ndx
;

341 
c
;

343  (
	`__dbg_id_to_db_t
(
dbv
, 
txn
, 
db
, 
ndx
, 
c
, 1));

344 
	}
}

360 
	$__dbg_id_to_db_t
(
dbv
, 
txn
, 
db
, 
ndx
, 
c
, 
yݒ
)

361 
DB_ENV
 *
dbv
;

362 
DB_TXN
 *
txn
;

363 
DB
 **
db
;

364 
t32_t
 
ndx
;

365 
c
, 
yݒ
;

367 
DB_LOG
 *
db
;

368 
FNAME
 *
ame
;

369 
t
;

370 *
me
;

372 
t
 = 0;

373 
db
 = 
dbv
->
lg_hd
;

374 
	`COMPQUIET
(
c
, 0);

376 
	`MUTEX_LOCK
(
dbv
, 
db
->
mtx_dbg
);

384 i(
ndx
 >
db
->
dby_t
 ||

385 (!
db
->
dby
[
ndx
].
ded
 && db->dby[ndx].
dbp
 =
NULL
)) {

386 i(!
yݒ
 || 
	`F_ISSET
(
db
, 
DBLOG_RECOVER
)) {

387 
t
 = 
ENOENT
;

388 
r
;

397 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

399 i(
	`__dbg_id_to_ame
(
db
, 
ndx
, 0, &
ame
) != 0)

406  (
ENOENT
);

415 
me
 = 
	`R_ADDR
(&
db
->
gfo
, 
ame
->
me_off
);

425 i((
t
 = 
	`__dbg_do_ݒ
(
dbv
, 
txn
, 
db
,

426 
ame
->
ufid
, 
me
, fme->
s_ty
, 
ndx
, fme->
ma_pgno
,

427 
NULL
, 
TXN_INVALID
, 
	`F_ISSET
(
ame
, 
DB_FNAME_INMEM
) ?

428 
DBREG_REOPEN
 : 
DBREG_OPEN
)) != 0)

429  (
t
);

431 *
db
 = 
db
->
dby
[
ndx
].
dbp
;

432  (*
db
 =
NULL
 ? 
DB_DELETED
 : 0);

438 i(
db
->
dby
[
ndx
].
ded
) {

439 
t
 = 
DB_DELETED
;

440 
r
;

444 i((*
db
 = 
db
->
dby
[
ndx
].
dbp
=
NULL
)

445 
t
 = 
ENOENT
;

456 i((*
db
)->
mpf
 !
NULL
 && (*db)->mpf->
m
 != NULL)

457 (*
db
)->
mpf
->
m
->
fe_wrn
 = 1;

459 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 
db
->
mtx_dbg
);

460  (
t
);

461 
	}
}

471 
	$__dbg_id_to_ame
(
db
, 
id
, 
have_lock
, 
am
)

472 
DB_LOG
 *
db
;

473 
t32_t
 
id
;

474 
have_lock
;

475 
FNAME
 **
am
;

477 
DB_ENV
 *
dbv
;

478 
FNAME
 *
p
;

479 
LOG
 *

;

480 
t
;

482 
dbv
 = 
db
->dbenv;

483 

 = 
db
->
gfo
.
imy
;

485 
t
 = -1;

487 i(!
have_lock
)

488 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

489 
	`SH_TAILQ_FOREACH
(
p
, &

->
fq
, 
q
, 
__ame
)

490 i(
p
->
id
 == id) {

491 *
am
 = 
p
;

492 
t
 = 0;

495 i(!
have_lock
)

496 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

498  (
t
);

499 
	}
}

508 
	$__dbg_fid_to_ame
(
db
, 
fid
, 
have_lock
, 
am
)

509 
DB_LOG
 *
db
;

510 
u_t8_t
 *
fid
;

511 
have_lock
;

512 
FNAME
 **
am
;

514 
DB_ENV
 *
dbv
;

515 
FNAME
 *
p
;

516 
LOG
 *

;

517 
t
;

519 
dbv
 = 
db
->dbenv;

520 

 = 
db
->
gfo
.
imy
;

522 
t
 = -1;

524 i(!
have_lock
)

525 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

526 
	`SH_TAILQ_FOREACH
(
p
, &

->
fq
, 
q
, 
__ame
)

527 i(
	`memcmp
(
p
->
ufid
, 
fid
, 
DB_FILE_ID_LEN
) == 0) {

528 *
am
 = 
p
;

529 
t
 = 0;

532 i(!
have_lock
)

533 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

535  (
t
);

536 
	}
}

548 
	$__dbg_g_me
(
dbv
, 
fid
, 
m
)

549 
DB_ENV
 *
dbv
;

550 
u_t8_t
 *
fid
;

551 **
m
;

553 
DB_LOG
 *
db
;

554 
FNAME
 *
p
;

556 
db
 = 
dbv
->
lg_hd
;

558 i(
db
 !
NULL
 && 
	`__dbg_fid_to_ame
(db, 
fid
, 0, &
p
) == 0) {

559 *
m
 = 
	`R_ADDR
(&
db
->
gfo
, 
p
->
me_off
);

564 
	}
}

575 
	$__dbg_do_ݒ
(
dbv
,

576 
txn
, 

, 
uid
, 
me
, 
y
, 
ndx
, 
ma_pgno
, 
fo
, 
id
, 
code
)

577 
DB_ENV
 *
dbv
;

578 
DB_TXN
 *
txn
;

579 
DB_LOG
 *

;

580 
u_t8_t
 *
uid
;

581 *
me
;

582 
DBTYPE
 
y
;

583 
t32_t
 
ndx
;

584 
db_pgno_t
 
ma_pgno
;

585 *
fo
;

586 
u_t32_t
 
id
, 
code
;

588 
DB
 *
dbp
;

589 
u_t32_t
 
c
, 
t_
;

590 
t
;

591 *
dme
, *
ame
;

593 
c
 = 
TXN_EXPECTED
;

594 
ame
 = 
me
;

595 
dme
 = 
NULL
;

596 i((
t
 = 
	`__db__
(&
dbp
, 

->
dbv
, 0)) != 0)

597  (
t
);

613 
	`F_SET
(
dbp
, 
DB_AM_RECOVER
);

614 i(
ma_pgno
 !
PGNO_BASE_MD
) {

615 
	`memy
(
dbp
->
feid
, 
uid
, 
DB_FILE_ID_LEN
);

616 
dbp
->
ma_pgno
 = meta_pgno;

618 i(
code
 =
DBREG_PREOPEN
) {

619 
dbp
->
ty
 = 
y
;

620 i((
t
 = 
	`__dbg_tup
(
dbp
, 
me
, 
id
)) != 0)

621 
r
;

622 
	`MAKE_INMEM
(
dbp
);

623 
sk_ݒ
;

626 i(
code
 =
DBREG_REOPEN
) {

627 
	`MAKE_INMEM
(
dbp
);

628 
ame
 = 
NULL
;

629 
dme
 = 
me
;

632 i((
t
 = 
	`__db_ݒ
(
dbp
, 
txn
, 
ame
, 
dme
, 
y
,

633 
DB_DURABLE_UNKNOWN
 | 
DB_ODDFILESIZE
,

634 
	`__db_omode
(
OWNER_RW
), 
ma_pgno
)) == 0) {

635 
sk_ݒ
:

640 i((
ma_pgno
 !
PGNO_BASE_MD
 &&

641 
	`__dbg_check_ma
(
dbv
, 
uid
, 
me
) != 0) ||

642 
	`memcmp
(
uid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
) != 0)

643 
c
 = 
TXN_UNEXPECTED
;

645 
c
 = 
TXN_EXPECTED
;

648 i((
t
 = 
	`__dbg_assign_id
(
dbp
, 
ndx
)) != 0)

649 
r
;

657 i(
id
 !
TXN_INVALID
)

658 
t
 = 
	`__db_txi_upde
(
dbv
,

659 
fo
, 
id
, 
c
, 
NULL
, &
t_
, 1);

661 
r
: i(
c
 =
TXN_UNEXPECTED
)

662 
n_right
;

663  (
t
);

664 } i(
t
 =
ENOENT
) {

666 i(
id
 !
TXN_INVALID
)

667 
t
 = 
	`__db_txi_upde
(
dbv
, 
fo
,

668 
id
, 
TXN_UNEXPECTED
, 
NULL
, &
t_
, 1);

670 
n_right
:

671 ()
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
);

673 ()
	`__dbg_add_dby
(
dbv
, 

, 
NULL
, 
ndx
);

674  (
t
);

675 
	}
}

678 
	$__dbg_check_ma
(
dbv
, 
uid
, 
me
)

679 
DB_ENV
 *
dbv
;

680 
u_t8_t
 *
uid
;

681 *
me
;

683 
DB
 *
dbp
;

684 
t
;

686 
t
 = 0;

687 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

688  (
t
);

689 
	`F_SET
(
dbp
, 
DB_AM_RECOVER
);

690 
t
 = 
	`__db_ݒ
(
dbp
, 
NULL
,

691 
me
, 
NULL
, 
DB_BTREE
, 0, 
	`__db_omode
(
OWNER_RW
), 
PGNO_BASE_MD
);

693 i(
t
 =0 && 
	`memcmp
(
uid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
) != 0)

694 
t
 = 
EINVAL
;

696 ()
	`__db_o
(
dbp
, 
NULL
, 0);

697  (
t
);

698 
	}
}

719 
	$__dbg_zy_id
(
dbp
)

720 
DB
 *
dbp
;

722 
DB_ENV
 *
dbv
;

723 
DB_LOG
 *
db
;

724 
DB_TXN
 *
txn
;

725 
FNAME
 *
p
;

726 
LOG
 *

;

727 
t32_t
 
id
;

728 
t
;

730 
dbv
 = 
dbp
->dbenv;

732 
	`DB_ASSERT
(
dbv
, 
	`IS_REP_MASTER
(dbenv));

734 
dbv
 = 
dbp
->dbenv;

735 
db
 = 
dbv
->
lg_hd
;

736 

 = 
db
->
gfo
.
imy
;

737 
p
 = 
dbp
->
log_fame
;

740 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

741 i(
p
->
id
 !
DB_LOGFILEID_INVALID
) {

742 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

745 
id
 = 
DB_LOGFILEID_INVALID
;

751 i(
p
->
d_id
 !
DB_LOGFILEID_INVALID
 &&

752 (
t
 = 
	`__dbg_voke_id
(
dbp
, 1, 
DB_LOGFILEID_INVALID
)) != 0)

753 
r
;

754 i((
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

755 
r
;

757 i((
t
 = 
	`__dbg_g_id
(
dbp
, 
txn
, &
id
)) != 0) {

758 ()
	`__txn_abt
(
txn
);

759 
r
;

762 i((
t
 = 
	`__txn_comm
(
txn
, 
DB_TXN_NOSYNC
)) != 0)

763 
r
;

775 
p
->
id
 = id;

776 
r
:

777 i(
t
 !0 && 
id
 !
DB_LOGFILEID_INVALID
)

778 ()
	`__dbg_voke_id
(
dbp
, 1, 
id
);

779 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

780  (
t
);

781 
	}
}

	@../env/env_alloc.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

34 
	s__loc_yout
 {

35 
SH_TAILQ_HEAD
(
__addrq

	maddrq
;

36 
SH_TAILQ_HEAD
(
__sizeq

	msizeq
;

38 #ifde
HAVE_STATISTICS


39 
u_t32_t
 
	msucss
;

40 
u_t32_t
 
	mu
;

41 
u_t32_t
 
	md
;

42 
u_t32_t
 
	mlge
;

43 #ifde
__ALLOC_DISPLAY_ALLOCATION_SIZES


44 
u_t32_t
 
	mpow2_size
[32];

47 
utmax_t
 
	munud
;

48 } 
	tALLOC_LAYOUT
;

50 
	s__loc_emt
 {

51 
SH_TAILQ_ENTRY
 
	maddrq
;

52 
SH_TAILQ_ENTRY
 
	msizeq
;

58 
size_t
 
	mn
;

65 
utmax_t
 
	mun
;

66 } 
	tALLOC_ELEMENT
;

75 
	$__v_loc_
(
f
, 
size
)

76 
REGINFO
 *
f
;

77 
size_t
 
size
;

79 
DB_ENV
 *
dbv
;

80 
ALLOC_ELEMENT
 *
p
;

81 
ALLOC_LAYOUT
 *
hd
;

83 
dbv
 = 
f
->dbenv;

86 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
))

92 
hd
 = 
f
->
addr
;

93 
	`SH_TAILQ_INIT
(&
hd
->
addrq
);

94 
	`SH_TAILQ_INIT
(&
hd
->
sizeq
);

95 
	`STAT
((
hd
->
sucss
 = hd->
u
 = hd->
d
 = 0));

96 
	`COMPQUIET
(
hd
->
unud
, 0);

101 
p
 = (
ALLOC_ELEMENT
 *)((
u_t8_t
 *)
hd
 + (
ALLOC_LAYOUT
));

102 
p
->
n
 = 
size
 - (
ALLOC_LAYOUT
);

103 
p
->
un
 = 0;

105 
	`SH_TAILQ_INSERT_HEAD
(&
hd
->
addrq
, 
p
,ddrq, 
__loc_emt
);

106 
	`SH_TAILQ_INSERT_HEAD
(&
hd
->
sizeq
, 
p
, sizeq, 
__loc_emt
);

107 
	}
}

113 #ifde
DIAGNOSTIC


114 
	#DB_ALLOC_SIZE
(
n
) \

115 (
size_t
)
	`DB_ALIGN
((
n
+ (
ALLOC_ELEMENT
+ 1, (
utmax_t
))

	)

117 
	#DB_ALLOC_SIZE
(
n
) \

118 (
size_t
)
	`DB_ALIGN
((
n
+ (
ALLOC_ELEMENT
), (
utmax_t
))

	)

127 
size_t


128 
	$__v_loc_ovhd
()

130  ((
ALLOC_ELEMENT
));

131 
	}
}

139 
size_t


140 
	$__v_loc_size
(
n
)

141 
size_t
 
n
;

143  (
	`DB_ALLOC_SIZE
(
n
));

144 
	}
}

153 
	$__v_loc
(
f
, 
n
, 

)

154 
REGINFO
 *
f
;

155 
size_t
 
n
;

156 *

;

158 
ALLOC_ELEMENT
 *
p
, *
ag
, *
p_tmp
;

159 
ALLOC_LAYOUT
 *
hd
;

160 
DB_ENV
 *
dbv
;

161 
size_t
 
tٮ_n
;

162 
u_t8_t
 *
p
;

163 
t
;

164 #ifde
HAVE_STATISTICS


165 
u_lg
 
_ch
;

168 
dbv
 = 
f
->dbenv;

170 *(**)

 = 
NULL
;

180 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

182 i(
f
->
lod
 >f->
max_loc
)

183  (
ENOMEM
);

186 
n
 +(
size_t
);

188 #ifde
DIAGNOSTIC


190 ++
n
;

193 i((
t
 = 
	`__os_mloc
(
dbv
, 
n
, &
p
)) != 0)

194  (
t
);

195 
f
->
lod
 +
n
;

197 *(
size_t
 *)
p
 = 
n
;

198 #ifde
DIAGNOSTIC


199 
p
[
n
 - 1] = 
GUARD_BYTE
;

201 *(**)

 = 
p
 + (
size_t
);

205 
hd
 = 
f
->
addr
;

207 
tٮ_n
 = 
	`DB_ALLOC_SIZE
(
n
);

208 #ifde
__ALLOC_DISPLAY_ALLOCATION_SIZES


209 
	`STAT
((++
hd
->
pow2_size
[
	`__db_log2
(
n
) - 1]));

216 
	#SHALLOC_FRAGMENT
 ((
ALLOC_ELEMENT
+ 64)

	)

222 
p
 = 
NULL
;

223 
	`STAT
((
_ch
 = 0));

224 
	`SH_TAILQ_FOREACH
(
p_tmp
, &
hd
->
sizeq
, sizeq, 
__loc_emt
) {

225 
	`STAT
((++
_ch
));

226 i(
p_tmp
->
n
 < 
tٮ_n
)

228 
p
 = 
p_tmp
;

234 i(
p
->
n
 - 
tٮ_n
 <
SHALLOC_FRAGMENT
)

237 #ifde
HAVE_STATISTICS


238 i(
hd
->
lge
 < 
_ch
)

239 
hd
->
lge
 = 
_ch
;

245 i(
p
 =
NULL
) {

246 
	`STAT
((++
hd
->
u
));

247  (
ENOMEM
);

249 
	`STAT
((++
hd
->
sucss
));

252 
	`SH_TAILQ_REMOVE
(&
hd
->
sizeq
, 
p
, sizeq, 
__loc_emt
);

254 i(
p
->
n
 - 
tٮ_n
 > 
SHALLOC_FRAGMENT
) {

255 
ag
 = (
ALLOC_ELEMENT
 *)((
u_t8_t
 *)
p
 + 
tٮ_n
);

256 
ag
->
n
 = 
p
->- 
tٮ_n
;

257 
ag
->
un
 = 0;

259 
p
->
n
 = 
tٮ_n
;

262 
	`SH_TAILQ_INSERT_AFTER
(

263 &
hd
->
addrq
, 
p
, 
ag
,ddrq, 
__loc_emt
);

269 
	`SH_TAILQ_FOREACH
(
p_tmp
, &
hd
->
sizeq
, sizeq, 
__loc_emt
)

270 i(
p_tmp
->
n
 < 
ag
->len)

272 i(
p_tmp
 =
NULL
)

273 
	`SH_TAILQ_INSERT_TAIL
(&
hd
->
sizeq
, 
ag
, sizeq);

275 
	`SH_TAILQ_INSERT_BEFORE
(&
hd
->
sizeq
,

276 
p_tmp
, 
ag
, 
sizeq
, 
__loc_emt
);

279 
p
 = (
u_t8_t
 *)
p
 + (
ALLOC_ELEMENT
);

280 
p
->
un
 = 
n
;

281 #ifde
DIAGNOSTIC


282 
p
[
n
] = 
GUARD_BYTE
;

284 *(**)

 = 
p
;

287 
	}
}

296 
	$__v_loc_
(
f
, 
r
)

297 
REGINFO
 *
f
;

298 *
r
;

300 
ALLOC_ELEMENT
 *
p
, *
p_tmp
;

301 
ALLOC_LAYOUT
 *
hd
;

302 
DB_ENV
 *
dbv
;

303 
size_t
 
n
;

304 
u_t8_t
 *
p
;

306 
dbv
 = 
f
->dbenv;

309 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

311 
p
 = (
u_t8_t
 *)((
size_t
 *)
r
 - 1);

312 
n
 = *(
size_t
 *)
p
;

314 
f
->
lod
 -
n
;

316 #ifde
DIAGNOSTIC


318 
	`DB_ASSERT
(
dbv
, 
p
[
n
 - 1] =
GUARD_BYTE
);

321 
	`memt
(
p
, 
CLEAR_BYTE
, 
n
);

323 
	`__os_
(
dbv
, 
p
);

327 
hd
 = 
f
->
addr
;

328 
	`STAT
((++
hd
->
d
));

330 
p
 = 
r
;

331 
p
 = (
ALLOC_ELEMENT
 *)(
p
 - (ALLOC_ELEMENT));

333 #ifde
DIAGNOSTIC


335 
	`DB_ASSERT
(
dbv
, 
p
[
p
->
un
] =
GUARD_BYTE
);

338 
	`memt
(
p
, 
CLEAR_BYTE
, 
p
->
n
 - (
ALLOC_ELEMENT
));

342 
p
->
un
 = 0;

348 i((
p_tmp
 =

349 
	`SH_TAILQ_PREV
(&
hd
->
addrq
, 
p
,ddrq, 
__loc_emt
)!
NULL
 &&

350 
p_tmp
->
un
 == 0 &&

351 (
u_t8_t
 *)
p_tmp
 +_tmp->
n
 =(u_t8_*)
p
) {

357 
	`SH_TAILQ_REMOVE
(&
hd
->
addrq
, 
p
,ddrq, 
__loc_emt
);

358 
	`SH_TAILQ_REMOVE
(&
hd
->
sizeq
, 
p_tmp
, sizeq, 
__loc_emt
);

360 
p_tmp
->
n
 +
p
->len;

361 
p
 = 
p_tmp
;

363 i((
p_tmp
 = 
	`SH_TAILQ_NEXT
(
p
, 
addrq
, 
__loc_emt
)!
NULL
 &&

364 
p_tmp
->
un
 == 0 &&

365 (
u_t8_t
 *)
p
 +->
n
 =(u_t8_*)
p_tmp
) {

371 
	`SH_TAILQ_REMOVE
(&
hd
->
addrq
, 
p_tmp
,ddrq, 
__loc_emt
);

372 
	`SH_TAILQ_REMOVE
(&
hd
->
sizeq
, 
p_tmp
, sizeq, 
__loc_emt
);

374 
p
->
n
 +
p_tmp
->len;

378 
	`SH_TAILQ_FOREACH
(
p_tmp
, &
hd
->
sizeq
, sizeq, 
__loc_emt
)

379 i(
p
->
n
 >
p_tmp
->len)

381 i(
p_tmp
 =
NULL
)

382 
	`SH_TAILQ_INSERT_TAIL
(&
hd
->
sizeq
, 
p
, sizeq);

384 
	`SH_TAILQ_INSERT_BEFORE
(&
hd
->
sizeq
,

385 
p_tmp
, 
p
, 
sizeq
, 
__loc_emt
);

386 
	}
}

388 #ifde
HAVE_STATISTICS


396 
	$__v_loc_t
(
f
, 
ags
)

397 
REGINFO
 *
f
;

398 
u_t32_t
 
ags
;

400 #ifde
__ALLOC_DISPLAY_ALLOCATION_LISTS


401 
ALLOC_ELEMENT
 *
p
;

403 
ALLOC_LAYOUT
 *
hd
;

404 
DB_ENV
 *
dbv
;

405 #ifde
__ALLOC_DISPLAY_ALLOCATION_SIZES


406 
DB_MSGBUF
 
mb
;

407 
i
;

410 
dbv
 = 
f
->dbenv;

411 
hd
 = 
f
->
addr
;

413 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
))

416 
	`__db_msg
(
dbv
,

418 (
u_lg
)
hd
->
sucss
, (u_lg)hd->
u
, (u_lg)hd->
d
,

419 (
u_lg
)
hd
->
lge
);

421 i(!
	`LF_ISSET
(
DB_STAT_ALL
))

424 #ifde
__ALLOC_DISPLAY_ALLOCATION_SIZES


429 
	`DB_MSGBUF_INIT
(&
mb
);

430 
i
 = 0; i < 32; ++i)

431 
	`__db_msgadd
(
dbv
, &
mb
, "%s%2d/%lu",

432 
i
 == 0 ? "Allocations byower-of-two sizes: " : ", ",

433 
i
 + 1, (
u_lg
)
hd
->
pow2_size
[i]);

434 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

437 #ifde
__ALLOC_DISPLAY_ALLOCATION_LISTS


442 
	`__db_msg
(
dbv
,

444 
	`SH_TAILQ_FOREACH
(
p
, &
hd
->
addrq
,ddrq, 
__loc_emt
)

445 
	`__db_msg
(
dbv
, "\t%#lx {%lu, %lu}",

446 
	`P_TO_ULONG
(
p
), (
u_lg
->
n
, (u_lg->
un
);

448 
	`__db_msg
(
dbv
, "Allocation freeist by size: {chunkength}");

449 
	`SH_TAILQ_FOREACH
(
p
, &
hd
->
sizeq
, sizeq, 
__loc_emt
)

450 
	`__db_msg
(
dbv
, "\t%#lx {%lu}",

451 
	`P_TO_ULONG
(
p
), (
u_lg
->
n
);

454 
	}
}

	@../env/env_config.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

13 
	~"dbc/log.h
"

14 
	~"dbc/mp.h
"

15 
	~"dbc/txn.h
"

17 
__cfig_r
 
__P
((
DB_ENV
 *, *, ));

26 
	$__v_ad_db_cfig
(
dbv
)

27 
DB_ENV
 *
dbv
;

29 
FILE
 *

;

30 
lc
, 
t
;

31 *
p
, 
buf
[256];

34 
p
 = 
NULL
;

35 i((
t
 =

36 
	`__db_ame
(
dbv
, 
DB_APP_NONE
, "DB_CONFIG", 0, 
NULL
, &
p
)) != 0)

37  (
t
);

38 i(
p
 =
NULL
)

39 

 = 
NULL
;

41 

 = 
	`fݒ
(
p
, "r");

42 
	`__os_
(
dbv
, 
p
);

45 i(

 =
NULL
)

48 
lc
 = 1; 
	`fgs
(
buf
, (buf), 

!
NULL
; ++lc) {

49 i((
p
 = 
	`rchr
(
buf
, '\n')!
NULL
)

50 *
p
 = '\0';

51 i(
	`
(
buf
) + 1 == (buf)) {

52 
	`__db_rx
(
dbv
, "DB_CONFIG:ineooong");

53 
t
 = 
EINVAL
;

56 
p
 = 
buf
; *!'\0' || 
	`isa
(()*p); ++p)

58 i(
buf
[0] == '\0' || buf[0] == '#')

61 i((
t
 = 
	`__cfig_r
(
dbv
, 
buf
, 
lc
)) != 0)

64 ()
	`fo
(

);

66  (
t
);

67 
	}
}

69 #unde
CONFIG_GET_INT


70 
	#CONFIG_GET_INT
(
s
, 
vp
) do { \

71 
__t
; \

72 i((
__t
 = \

73 
	`__db_glg
(
dbv
, 
NULL
, 
s
, 0, 
INT_MAX
, 
vp
)) != 0) \

74  (
__t
); \

75 } 0)

	)

76 #unde
CONFIG_GET_LONG


77 
	#CONFIG_GET_LONG
(
s
, 
vp
) do { \

78 
__t
; \

79 i((
__t
 = \

80 
	`__db_glg
(
dbv
, 
NULL
, 
s
, 0, 
LONG_MAX
, 
vp
)) != 0) \

81  (
__t
); \

82 } 0)

	)

83 #unde
CONFIG_INT


84 
	#CONFIG_INT
(
s
, 
f
) do { \

85 i(
	`rcmp
(
s
, 
gv
[0]) == 0) { \

86 
__v
; \

87 i(
nf
 != 2) \

88 
fm
; \

89 
	`CONFIG_GET_INT
(
gv
[1], &
__v
); \

90  (
	`f
(
dbv
, ()
__v
)); \

92 } 0)

	)

93 #unde
CONFIG_GET_UINT32


94 
	#CONFIG_GET_UINT32
(
s
, 
vp
) do { \

95 i(
	`__db_gulg
(
dbv
, 
NULL
, 
s
, 0, 
UINT32_MAX
, 
vp
) != 0) \

96  (
EINVAL
); \

97 } 0)

	)

98 #unde
CONFIG_UINT32


99 
	#CONFIG_UINT32
(
s
, 
f
) do { \

100 i(
	`rcmp
(
s
, 
gv
[0]) == 0) { \

101 
u_lg
 
__v
; \

102 i(
nf
 != 2) \

103 
fm
; \

104 
	`CONFIG_GET_UINT32
(
gv
[1], &
__v
); \

105  (
	`f
(
dbv
, (
u_t32_t
)
__v
)); \

107 } 0)

	)

109 #unde
CONFIG_SLOTS


110 
	#CONFIG_SLOTS
 10

	)

117 
	$__cfig_r
(
dbv
, 
s
, 
lc
)

118 
DB_ENV
 *
dbv
;

119 *
s
;

120 
lc
;

122 
u_lg
 
uv1
, 
uv2
;

123 
u_t32_t
 
ags
;

124 
lv1
, 
lv2
;

125 
nf
;

126 *
gv
[
CONFIG_SLOTS
];

128 i((
nf
 = 
	`__cfig_l
(
s
, 
gv
)) < 2) {

129 
fm
: 
	`__db_rx
(
dbv
,

130 "l%d: %s: incܻame-vu", 
lc
, 
gv
[0]);

131  (
EINVAL
);

134 
	`CONFIG_UINT32
("mux_t_ign", 
__mux_t_ign
);

135 
	`CONFIG_UINT32
("mux_t_emt", 
__mux_t_emt
);

136 
	`CONFIG_UINT32
("mux_t_max", 
__mux_t_max
);

137 
	`CONFIG_UINT32
("mux_t_s_s", 
__mux_t_s_s
);

139 i(
	`rcmp
(
gv
[0], "rep_set_config") == 0) {

140 i(
nf
 != 2)

141 
fm
;

142 i(
	`rcmp
(
gv
[1], "rep_bulk") == 0)

143  (
	`__p_t_cfig
(
dbv
,

144 
DB_REP_CONF_BULK
, 1));

145 i(
	`rcmp
(
gv
[1], "rep_delayclient") == 0)

146  (
	`__p_t_cfig
(
dbv
,

147 
DB_REP_CONF_DELAYCLIENT
, 1));

148 i(
	`rcmp
(
gv
[1], "rep_noautoinit") == 0)

149  (
	`__p_t_cfig
(
dbv
,

150 
DB_REP_CONF_NOAUTOINIT
, 1));

151 i(
	`rcmp
(
gv
[1], "rep_nowait") == 0)

152  (
	`__p_t_cfig
(
dbv
, 
DB_REP_CONF_NOWAIT
, 1));

153 
fm
;

156 i(
	`rcmp
(
gv
[0], "set_cachesize") == 0) {

157 i(
nf
 != 4)

158 
fm
;

159 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv1
);

160 
	`CONFIG_GET_UINT32
(
gv
[2], &
uv2
);

161 
	`CONFIG_GET_INT
(
gv
[3], &
lv1
);

162  (
	`__memp_t_chesize
(

163 
dbv
, (
u_t32_t
)
uv1
, (u_t32_t)
uv2
, ()
lv1
));

166 i(
	`rcmp
(
gv
[0], "set_data_dir") == 0 ||

167 
	`rcmp
(
gv
[0], "db_data_dir") == 0) {

168 i(
nf
 != 2)

169 
fm
;

170  (
	`__v_t_da_d
(
dbv
, 
gv
[1]));

173 i(
	`rcmp
(
gv
[0], "set_intermediate_dir") == 0) {

174 i(
nf
 != 2)

175 
fm
;

176 
	`CONFIG_GET_INT
(
gv
[1], &
lv1
);

177  (
	`__v_t_rmed_d
(
dbv
, ()
lv1
, 0));

180 i(
	`rcmp
(
gv
[0], "set_flags") == 0) {

181 i(
nf
 != 2)

182 
fm
;

183 i(
	`rcmp
(
gv
[1], "db_auto_commit") == 0)

184  (
	`__v_t_ags
(
dbv
, 
DB_AUTO_COMMIT
, 1));

185 i(
	`rcmp
(
gv
[1], "db_cdb_alldb") == 0)

186  (
	`__v_t_ags
(
dbv
, 
DB_CDB_ALLDB
, 1));

187 i(
	`rcmp
(
gv
[1], "db_direct_db") == 0)

188  (
	`__v_t_ags
(
dbv
, 
DB_DIRECT_DB
, 1));

189 i(
	`rcmp
(
gv
[1], "db_direct_log") == 0)

190  (
	`__v_t_ags
(
dbv
, 
DB_DIRECT_LOG
, 1));

191 i(
	`rcmp
(
gv
[1], "db_dsync_db") == 0)

192  (
	`__v_t_ags
(
dbv
, 
DB_DSYNC_DB
, 1));

193 i(
	`rcmp
(
gv
[1], "db_dsync_log") == 0)

194  (
	`__v_t_ags
(
dbv
, 
DB_DSYNC_LOG
, 1));

195 i(
	`rcmp
(
gv
[1], "db_log_autoremove") == 0)

196  (
	`__v_t_ags
(
dbv
, 
DB_LOG_AUTOREMOVE
, 1));

197 i(
	`rcmp
(
gv
[1], "db_log_inmemory") == 0)

198  (
	`__v_t_ags
(
dbv
, 
DB_LOG_INMEMORY
, 1));

199 i(
	`rcmp
(
gv
[1], "db_multiversion") == 0)

200  (
	`__v_t_ags
(
dbv
, 
DB_MULTIVERSION
, 1));

201 i(
	`rcmp
(
gv
[1], "db_nolocking") == 0)

202  (
	`__v_t_ags
(
dbv
, 
DB_NOLOCKING
, 1));

203 i(
	`rcmp
(
gv
[1], "db_nommap") == 0)

204  (
	`__v_t_ags
(
dbv
, 
DB_NOMMAP
, 1));

205 i(
	`rcmp
(
gv
[1], "db_nopanic") == 0)

206  (
	`__v_t_ags
(
dbv
, 
DB_NOPANIC
, 1));

207 i(
	`rcmp
(
gv
[1], "db_overwrite") == 0)

208  (
	`__v_t_ags
(
dbv
, 
DB_OVERWRITE
, 1));

209 i(
	`rcmp
(
gv
[1], "db_region_init") == 0)

210  (
	`__v_t_ags
(
dbv
, 
DB_REGION_INIT
, 1));

211 i(
	`rcmp
(
gv
[1], "db_txn_nosync") == 0)

212  (
	`__v_t_ags
(
dbv
, 
DB_TXN_NOSYNC
, 1));

213 i(
	`rcmp
(
gv
[1], "db_txn_nowait") == 0)

214  (
	`__v_t_ags
(
dbv
, 
DB_TXN_NOWAIT
, 1));

215 i(
	`rcmp
(
gv
[1], "db_txn_snapshot") == 0)

216  (
	`__v_t_ags
(
dbv
, 
DB_TXN_SNAPSHOT
, 1));

217 i(
	`rcmp
(
gv
[1], "db_txn_write_nosync") == 0)

219 
	`__v_t_ags
(
dbv
, 
DB_TXN_WRITE_NOSYNC
, 1));

220 i(
	`rcmp
(
gv
[1], "db_yieldcpu") == 0)

221  (
	`__v_t_ags
(
dbv
, 
DB_YIELDCPU
, 1));

222 
fm
;

225 
	`CONFIG_UINT32
("t_lg_bsize", 
__log_t_lg_bsize
);

226 
	`CONFIG_INT
("t_lg_femode", 
__log_t_lg_femode
);

227 
	`CONFIG_UINT32
("t_lg_max", 
__log_t_lg_max
);

228 
	`CONFIG_UINT32
("t_lg_gimax", 
__log_t_lg_gimax
);

230 i(
	`rcmp
(
gv
[0], "set_lg_dir") == 0 ||

231 
	`rcmp
(
gv
[0], "db_log_dir") == 0) {

232 i(
nf
 != 2)

233 
fm
;

234  (
	`__log_t_lg_d
(
dbv
, 
gv
[1]));

237 i(
	`rcmp
(
gv
[0], "set_lk_detect") == 0) {

238 i(
nf
 != 2)

239 
fm
;

240 i(
	`rcmp
(
gv
[1], "db_lock_default") == 0)

241 
ags
 = 
DB_LOCK_DEFAULT
;

242 i(
	`rcmp
(
gv
[1], "db_lock_expire") == 0)

243 
ags
 = 
DB_LOCK_EXPIRE
;

244 i(
	`rcmp
(
gv
[1], "db_lock_maxlocks") == 0)

245 
ags
 = 
DB_LOCK_MAXLOCKS
;

246 i(
	`rcmp
(
gv
[1], "db_lock_maxwrite") == 0)

247 
ags
 = 
DB_LOCK_MAXWRITE
;

248 i(
	`rcmp
(
gv
[1], "db_lock_minlocks") == 0)

249 
ags
 = 
DB_LOCK_MINLOCKS
;

250 i(
	`rcmp
(
gv
[1], "db_lock_minwrite") == 0)

251 
ags
 = 
DB_LOCK_MINWRITE
;

252 i(
	`rcmp
(
gv
[1], "db_lock_oldest") == 0)

253 
ags
 = 
DB_LOCK_OLDEST
;

254 i(
	`rcmp
(
gv
[1], "db_lock_random") == 0)

255 
ags
 = 
DB_LOCK_RANDOM
;

256 i(
	`rcmp
(
gv
[1], "db_lock_youngest") == 0)

257 
ags
 = 
DB_LOCK_YOUNGEST
;

259 
fm
;

260  (
	`__lock_t_lk_de
(
dbv
, 
ags
));

263 
	`CONFIG_UINT32
("t_lk_max_locks", 
__lock_t_lk_max_locks
);

264 
	`CONFIG_UINT32
("t_lk_max_locks", 
__lock_t_lk_max_locks
);

265 
	`CONFIG_UINT32
("t_lk_max_objes", 
__lock_t_lk_max_objes
);

267 i(
	`rcmp
(
gv
[0], "set_lock_timeout") == 0) {

268 i(
nf
 != 2)

269 
fm
;

270 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv1
);

271  (
	`__lock_t_v_timeout
(

272 
dbv
, (
u_t32_t
)
uv1
, 
DB_SET_LOCK_TIMEOUT
));

275 
	`CONFIG_INT
("t_mp_max_ݒfd", 
__memp_t_mp_max_ݒfd
);

277 i(
	`rcmp
(
gv
[0], "set_mp_max_write") == 0) {

278 i(
nf
 != 3)

279 
fm
;

280 
	`CONFIG_GET_INT
(
gv
[1], &
lv1
);

281 
	`CONFIG_GET_INT
(
gv
[2], &
lv2
);

282  (
	`__memp_t_mp_max_wre
(

283 
dbv
, ()
lv1
, (
db_timeout_t
)
lv2
));

286 
	`CONFIG_UINT32
("t_mp_mmsize", 
__memp_t_mp_mmsize
);

288 i(
	`rcmp
(
gv
[0], "set_region_init") == 0) {

289 i(
nf
 != 2)

290 
fm
;

291 
	`CONFIG_GET_INT
(
gv
[1], &
lv1
);

292 i(
lv1
 != 0 &&v1 != 1)

293 
fm
;

294  (
	`__v_t_ags
(

295 
dbv
, 
DB_REGION_INIT
, 
lv1
 == 0 ? 0 : 1));

298 i(
	`rcmp
(
gv
[0], "set_shm_key") == 0) {

299 i(
nf
 != 2)

300 
fm
;

301 
	`CONFIG_GET_LONG
(
gv
[1], &
lv1
);

302  (
	`__v_t_shm_key
(
dbv
, 
lv1
));

309 
	`CONFIG_UINT32
("t_s_s", 
__mux_t_s_s
);

311 i(
	`rcmp
(
gv
[0], "set_tmp_dir") == 0 ||

312 
	`rcmp
(
gv
[0], "db_tmp_dir") == 0) {

313 i(
nf
 != 2)

314 
fm
;

315  (
	`__v_t_tmp_d
(
dbv
, 
gv
[1]));

318 
	`CONFIG_UINT32
("t_tx_max", 
__txn_t_tx_max
);

320 i(
	`rcmp
(
gv
[0], "set_txn_timeout") == 0) {

321 i(
nf
 != 2)

322 
fm
;

323 
	`CONFIG_GET_UINT32
(
gv
[1], &
uv1
);

324  (
	`__lock_t_v_timeout
(

325 
dbv
, (
u_t32_t
)
uv1
, 
DB_SET_TXN_TIMEOUT
));

328 i(
	`rcmp
(
gv
[0], "set_verbose") == 0) {

329 i(
nf
 != 2)

330 
fm
;

331 i(
	`rcmp
(
gv
[1], "db_verb_deadlock") == 0)

332 
ags
 = 
DB_VERB_DEADLOCK
;

333 i(
	`rcmp
(
gv
[1], "db_verb_fileops") == 0)

334 
ags
 = 
DB_VERB_FILEOPS
;

335 i(
	`rcmp
(
gv
[1], "db_verb_fileops_all") == 0)

336 
ags
 = 
DB_VERB_FILEOPS_ALL
;

337 i(
	`rcmp
(
gv
[1], "db_verb_recovery") == 0)

338 
ags
 = 
DB_VERB_RECOVERY
;

339 i(
	`rcmp
(
gv
[1], "db_verb_register") == 0)

340 
ags
 = 
DB_VERB_REGISTER
;

341 i(
	`rcmp
(
gv
[1], "db_verb_replication") == 0)

342 
ags
 = 
DB_VERB_REPLICATION
;

343 i(
	`rcmp
(
gv
[1], "db_verb_waitsfor") == 0)

344 
ags
 = 
DB_VERB_WAITSFOR
;

346 
fm
;

347  (
	`__v_t_vbo
(
dbv
, 
ags
, 1));

350 
	`__db_rx
(
dbv
, "uecognizedame-vu: %s", 
s
);

351  (
EINVAL
);

352 
	}
}

362 
	$__cfig_l
(
put
, 
gv
)

363 *
put
, *
gv
[
CONFIG_SLOTS
];

365 
cou
;

366 **

;

368 
cou
 = 0, 

 = 
gv
; (* = 
	`rp
(&
put
, " \t\n")!
NULL
;)

369 i(**

 != '\0') {

370 ++
cou
;

371 i(++

 =&
gv
[
CONFIG_SLOTS
 - 1]) {

372 *

 = 
NULL
;

376  (
cou
);

377 
	}
}

	@../env/env_failchk.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ide
HAVE_SIMPLE_THREAD_TYPE


13 
	~"dbc/db_ge.h
"

14 
	~"dbc/hash.h
"

16 
	~"dbc/lock.h
"

17 
	~"dbc/txn.h
"

19 
__v__i
 
__P
((
DB_ENV
 *));

28 
	$__v_chk_
(
dbv
, 
ags
)

29 
DB_ENV
 *
dbv
;

30 
u_t32_t
 
ags
;

32 
DB_THREAD_INFO
 *

;

33 
t
;

35 
	`PANIC_CHECK
(
dbv
);

36 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, "DB_ENV->failchk");

42 i(!
	`ALIVE_ON
(
dbv
)) {

43 
	`__db_rx
(
dbv
,

45  (
EINVAL
);

48 i(
ags
 != 0)

49  (
	`__db_
(
dbv
, "DB_ENV->failchk", 0));

51 
	`ENV_ENTER
(
dbv
, 

);

57 i((
t
 = 
	`__v__i
(
dbv
)) != 0)

58 
r
;

60 i(
	`LOCKING_ON
(
dbv
&& (
t
 = 
	`__lock_chk
(dbenv)) != 0)

61 
r
;

63 i(
	`TXN_ON
(
dbv
&& (
t
 = 
	`__txn_chk
(dbenv)) != 0)

64 
r
;

66 #ifde
HAVE_MUTEX_SUPPORT


67 
t
 = 
	`__mut_chk
(
dbv
);

70 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

71  (
t
);

72 
	}
}

81 
	$__v_thad_
(
dbv
, 
durg_ti
)

82 
DB_ENV
 *
dbv
;

83 
durg_ti
;

85 
DB_HASHTAB
 *
hb
;

86 
REGINFO
 *
f
;

87 
REGENV
 *
nv
;

88 
THREAD_INFO
 *
thad
;

89 
t
;

91 
f
 = 
dbv
->
gfo
;

92 
nv
 = 
f
->
imy
;

93 i(
nv
->
thad_off
 =
INVALID_ROFF
) {

94 i(
dbv
->
thr_nbuck
 == 0) {

95 
dbv
->
thr_hashb
 = 
NULL
;

96 i(
	`ALIVE_ON
(
dbv
)) {

97 
	`__db_rx
(
dbv
,

99  (
EINVAL
);

104 i(!
durg_ti
) {

105 
	`__db_rx
(
dbv
,

107  (
EINVAL
);

110 i((
t
 =

111 
	`__v_loc
(
f
, (
THREAD_INFO
), &
thad
)) != 0) {

112 
	`__db_r
(
dbv
, 
t
,

114  (
t
);

116 
	`memt
(
thad
, 0, (*thread));

117 
nv
->
thad_off
 = 
	`R_OFFSET
(
f
, 
thad
);

118 
thad
->
thr_nbuck
 = 
	`__db_bsize
(
dbv
->thr_nbucket);

119 i((
t
 = 
	`__v_loc
(
f
,

120 
thad
->
thr_nbuck
 * (
DB_HASHTAB
), &
hb
)) != 0)

121  (
t
);

122 
thad
->
thr_hashoff
 = 
	`R_OFFSET
(
f
, 
hb
);

123 
	`__db_hash
(
hb
, 
thad
->
thr_nbuck
);

124 
thad
->
thr_max
 = 
dbv
->thr_max;

126 
thad
 = 
	`R_ADDR
(
f
, 
nv
->
thad_off
);

127 
hb
 = 
	`R_ADDR
(
f
, 
thad
->
thr_hashoff
);

130 
dbv
->
thr_hashb
 = 
hb
;

131 
dbv
->
thr_nbuck
 = 
thad
->thr_nbucket;

132 
dbv
->
thr_max
 = 
thad
->thr_max;

134 
	}
}

141 
	$__v__i
(
dbv
)

142 
DB_ENV
 *
dbv
;

144 
DB_HASHTAB
 *
hb
;

145 
DB_THREAD_INFO
 *

;

146 
REGENV
 *
nv
;

147 
REGINFO
 *
f
;

148 
THREAD_INFO
 *
thad
;

149 
u_t32_t
 
i
;

151 i((
hb
 = 
dbv
->
thr_hashb
=
NULL
)

152  (
EINVAL
);

154 
f
 = 
dbv
->
gfo
;

155 
nv
 = 
f
->
imy
;

156 
thad
 = 
	`R_ADDR
(
f
, 
nv
->
thad_off
);

158 
i
 = 0; i < 
dbv
->
thr_nbuck
; i++)

159 
	`SH_TAILQ_FOREACH
(

, &
hb
[
i
], 
dbth_lks
, 
__db_thad_fo
) {

160 i(

->
dbth_e
 =
THREAD_SLOT_NOT_IN_USE
 ||

161 (

->
dbth_e
 =
THREAD_OUT
 &&

162 
thad
->
thr_cou
 <had->
thr_max
))

164 i(
dbv
->
	`is_ive
(

165 
dbv
, 

->
dbth_pid
, ip->
dbth_tid
, 0))

167 i(

->
dbth_e
 =
THREAD_OUT
) {

168 

->
dbth_e
 = 
THREAD_SLOT_NOT_IN_USE
;

171  (
	`__db_ed
(
dbv
,

173 

->
dbth_pid
, ip->
dbth_tid
));

177 
	}
}

179 
	s__db_thadid
 {

180 
pid_t
 
	mpid
;

181 
db_thadid_t
 
	mtid
;

189 
	$__v_t_e
(
dbv
, 
p
, 
e
)

190 
DB_ENV
 *
dbv
;

191 
DB_THREAD_INFO
 **
p
;

192 
DB_THREAD_STATE
 
e
;

194 
__db_thadid
 
id
;

195 
DB_HASHTAB
 *
hb
;

196 
DB_THREAD_INFO
 *

;

197 
REGENV
 *
nv
;

198 
REGINFO
 *
f
;

199 
THREAD_INFO
 *
thad
;

200 
u_t32_t
 
dx
;

201 
t
;

203 *
p
 = 
NULL
;

204 
hb
 = (
DB_HASHTAB
 *)
dbv
->
thr_hashb
;

206 
dbv
->
	`thad_id
(dbv, &
id
.
pid
, &id.
tid
);

212 #ifde
HAVE_SIMPLE_THREAD_TYPE


217 
dx
 = (
u_t32_t
)((
u_t
)
id
.
pid
 ^ (u_t)id.
tid
);

219 
dx
 = 
	`__ham_func5
(
NULL
, &
id
.
tid
, (id.tid));

221 
dx
 %
dbv
->
thr_nbuck
;

222 
	`SH_TAILQ_FOREACH
(

, &
hb
[
dx
], 
dbth_lks
, 
__db_thad_fo
) {

223 #ifde
HAVE_SIMPLE_THREAD_TYPE


224 i(
id
.
pid
 =

->
dbth_pid
 && id.
tid
 =->
dbth_tid
)

227 i(
	`memcmp
(&
id
.
pid
, &

->
dbth_pid
, (id.pid)) != 0)

229 i(
	`memcmp
(&
id
.
tid
, &

->
dbth_tid
, (id.tid)) != 0)

235 #ifde
DIAGNOSTIC


236 i(
e
 =
THREAD_DIAGNOSTIC
) {

237 *
p
 = 

;

242 
t
 = 0;

243 i(

 =
NULL
) {

244 
f
 = 
dbv
->
gfo
;

245 
nv
 = 
f
->
imy
;

246 
thad
 = 
	`R_ADDR
(
f
, 
nv
->
thad_off
);

247 
	`MUTEX_LOCK
(
dbv
, 
nv
->
mtx_gv
);

255 i(
thad
->
thr_cou
 >thad->
thr_max
) {

256 
	`SH_TAILQ_FOREACH
(

257 

, &
hb
[
dx
], 
dbth_lks
, 
__db_thad_fo
)

258 i(

->
dbth_e
 =
THREAD_SLOT_NOT_IN_USE
 ||

259 (

->
dbth_e
 =
THREAD_OUT
 &&

260 
	`ALIVE_ON
(
dbv
&& !dbv->
	`is_ive
(dbenv,

261 

->
dbth_pid
, ip->
dbth_tid
, 0)))

264 i(

 !
NULL
)

265 

;

268 
thad
->
thr_cou
++;

269 i((
t
 = 
	`__v_loc
(
f
,

270 (
DB_THREAD_INFO
), &

)) == 0) {

271 
	`memt
(

, 0, (*ip));

278 
	`SH_TAILQ_INSERT_HEAD
(

279 &
hb
[
dx
], 

, 
dbth_lks
, 
__db_thad_fo
);

280 

: 

->
dbth_pid
 = 
id
.
pid
;

281 

->
dbth_tid
 = 
id
.
tid
;

282 

->
dbth_e
 = 
e
;

284 
	`MUTEX_UNLOCK
(
dbv
, 
nv
->
mtx_gv
);

286 

->
dbth_e
 = 
e
;

287 *
p
 = 

;

289  (
t
);

290 
	}
}

300 
	$__v_thad_id_rg
(
dbv
, 
pid
, 
tid
, 
buf
)

301 
DB_ENV
 *
dbv
;

302 
pid_t
 
pid
;

303 
db_thadid_t
 
tid
;

304 *
buf
;

306 #ifde
HAVE_SIMPLE_THREAD_TYPE


307 #ifde
UINT64_FMT


308 
fmt
[20];

310 
	`tf
(
fmt
, (fmt), "%s/%s", 
UINT64_FMT
, UINT64_FMT);

311 
	`tf
(
buf
,

312 
DB_THREADID_STRLEN
, 
fmt
, (
u_t64_t
)
pid
, (u_t64_t)(
u_t
)
tid
);

314 
	`tf
(
buf
, 
DB_THREADID_STRLEN
, "%lu/%lu", (
u_lg
)
pid
, (u_lg)
tid
);

317 #ifde
UINT64_FMT


318 
fmt
[20];

320 
	`tf
(
fmt
, (fmt), "%s/TID", 
UINT64_FMT
);

321 
	`tf
(
buf
, 
DB_THREADID_STRLEN
, 
fmt
, (
u_t64_t
)
pid
);

323 
	`tf
(
buf
, 
DB_THREADID_STRLEN
, "%lu/TID", (
u_lg
)
pid
);

326 
	`COMPQUIET
(
dbv
, 
NULL
);

327 
	`COMPQUIET
(*(
u_t8_t
 *)&
tid
, 0);

329  (
buf
);

330 
	}
}

	@../env/env_file.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__db_fe_exnd
(
dbv
, 
fhp
, 
size
)

21 
DB_ENV
 *
dbv
;

22 
DB_FH
 *
fhp
;

23 
size_t
 
size
;

25 
db_pgno_t
 
ges
;

26 
size_t
 
nw
;

27 
u_t32_t
 
tive
;

28 
t
;

29 *
buf
;

38 #unde
FILE_EXTEND_IO_SIZE


39 
	#FILE_EXTEND_IO_SIZE
 (8 * 1024)

	)

40 i((
t
 = 
	`__os_oc
(
dbv
, 
FILE_EXTEND_IO_SIZE
, 1, &
buf
)) != 0)

41  (
t
);

43 
ges
 = (
db_pgno_t
)((
size
 - 
FILE_EXTEND_IO_SIZE
/ 
MEGABYTE
);

44 
tive
 = (
u_t32_t
)((
size
 - 
FILE_EXTEND_IO_SIZE
% 
MEGABYTE
);

45 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
ges
, 
MEGABYTE
, 
tive
)) != 0)

46 
r
;

47 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
buf
, 
FILE_EXTEND_IO_SIZE
, &
nw
)) != 0)

48 
r
;

50 
r
: 
	`__os_
(
dbv
, 
buf
);

53 
	}
}

62 
	$__db_fe_mui_wre
(
dbv
, 
th
)

63 
DB_ENV
 *
dbv
;

64 cڡ *
th
;

66 
DB_FH
 *
fhp
;

67 
u_t32_t
 
mbys
, 
bys
;

68 
t
;

70 i((
t
 = 
	`__os_ݒ
(
dbv
, 
th
, 0, 
DB_OSO_REGION
, 0, &
fhp
)) == 0 &&

71 (
t
 = 
	`__os_iofo
(
dbv
, 
th
, 
fhp
, &
mbys
, &
bys
, 
NULL
)) == 0) {

78 i((
t
 =

79 
	`__db_fe_wre
(
dbv
, 
fhp
, 
mbys
, 
bys
, 255)) != 0)

80 
r
;

81 i((
t
 =

82 
	`__db_fe_wre
(
dbv
, 
fhp
, 
mbys
, 
bys
, 0)) != 0)

83 
r
;

84 i((
t
 =

85 
	`__db_fe_wre
(
dbv
, 
fhp
, 
mbys
, 
bys
, 255)) != 0)

86 
r
;

88 
	`__db_r
(
dbv
, 
t
, "%s", 
th
);

90 
r
: i(
fhp
 !
NULL
)

91 ()
	`__os_ohd
(
dbv
, 
fhp
);

92  (
t
);

93 
	}
}

103 
	$__db_fe_wre
(
dbv
, 
fhp
, 
mbys
, 
bys
, 
n
)

104 
DB_ENV
 *
dbv
;

105 
DB_FH
 *
fhp
;

106 
n
;

107 
u_t32_t
 
mbys
, 
bys
;

109 
size_t
 
n
, 
nw
;

110 
i
, 
t
;

111 *
buf
;

113 #unde
FILE_WRITE_IO_SIZE


114 
	#FILE_WRITE_IO_SIZE
 (64 * 1024)

	)

115 i((
t
 = 
	`__os_mloc
(
dbv
, 
FILE_WRITE_IO_SIZE
, &
buf
)) != 0)

116  (
t
);

117 
	`memt
(
buf
, 
n
, 
FILE_WRITE_IO_SIZE
);

119 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 0)) != 0)

120 
r
;

121 ; 
mbys
 > 0; --mbytes)

122 
i
 = 
MEGABYTE
 / 
FILE_WRITE_IO_SIZE
; i > 0; --i)

123 i((
t
 = 
	`__os_wre
(

124 
dbv
, 
fhp
, 
buf
, 
FILE_WRITE_IO_SIZE
, &
nw
)) != 0)

125 
r
;

126 ; 
bys
 > 0; by-(
u_t32_t
)
n
) {

127 
n
 = 
bys
 < 
FILE_WRITE_IO_SIZE
 ? bytes : FILE_WRITE_IO_SIZE;

128 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
buf
, 
n
, &
nw
)) != 0)

129 
r
;

132 
t
 = 
	`__os_fsync
(
dbv
, 
fhp
);

134 
r
: 
	`__os_
(
dbv
, 
buf
);

135  (
t
);

136 
	}
}

	@../env/env_globals.c

9 
	~"db_cfig.h
"

16 
	#DB_INITIALIZE_DB_GLOBALS
 1

	)

18 
	~"db_t.h
"

	@../env/env_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/yo.h
"

13 
	~"dbc/hmac.h
"

14 
	~"dbc/db_ge.h
"

15 
	~"dbc/db_am.h
"

16 
	~"dbc/lock.h
"

17 
	~"dbc/log.h
"

18 
	~"dbc/mp.h
"

19 
	~"dbc/txn.h
"

21 #ifde
HAVE_RPC


22 #ifde
HAVE_SYSTEM_INCLUDE_FILES


23 
	~<c/c.h
>

25 
	~"db_rv.h
"

26 
	~"dbc_auto/c__ext.h
"

29 
__v_r
 
__P
((cڡ 
DB_ENV
 *, , const *, ...));

30 
__v_rx
 
__P
((cڡ 
DB_ENV
 *, const *, ...));

31 
__v_g_da_ds
 
__P
((
DB_ENV
 *, const ***));

32 
__v_g_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

33 
__v_g_home
 
__P
((
DB_ENV
 *, const **));

34 
__v_g_shm_key
 
__P
((
DB_ENV
 *, *));

35 
__v_g_thad_cou
 
__P
((
DB_ENV
 *, 
u_t32_t
 *));

36 
__v_g_tmp_d
 
__P
((
DB_ENV
 *, const **));

37 
__v_g_vbo
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

38 
__v_
 
__P
((
DB_ENV
 *));

39 
__v_m_ags
 
__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *));

40 
__v_t_p_dich


41 
__P
((
DB_ENV
 *, (*)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
)));

42 
__v_t_evt_nify


43 
	`__P
((
DB_ENV
 *, (*)(DB_ENV *, 
u_t32_t
, *)));

44 
__v_t_edback
 
	`__P
((
DB_ENV
 *, (*)(DB_ENV *, , )));

45 
__v_t_ilive
 
	`__P
((
DB_ENV
 *,

46 (*)(
DB_ENV
 *, 
pid_t
, 
db_thadid_t
, 
u_t32_t
)));

47 
__v_t_thad_id
 
	`__P
((
DB_ENV
 *, (*)(DB_ENV *,

48 
pid_t
 *, 
db_thadid_t
 *)));

49 
__v_t_thad_id_rg
 
	`__P
((
DB_ENV
 *,

50 * (*)(
DB_ENV
 *, 
pid_t
, 
db_thadid_t
, *)));

51 
__v_t_thad_cou
 
	`__P
((
DB_ENV
 *, 
u_t32_t
));

52 
__v_t_c_rv


53 
	`__P
((
DB_ENV
 *, *, cڡ *, , , 
u_t32_t
));

62 
	$db_v_
(
dbv
, 
ags
)

63 
DB_ENV
 **
dbv
;

64 
u_t32_t
 
ags
;

66 
DB_ENV
 *
dbv
;

67 
t
;

79 i(
ags
 !0 && !
	`LF_ISSET
(
DB_RPCCLIENT
))

80  (
EINVAL
);

81 i((
t
 = 
	`__os_oc
(
NULL
, 1, (*
dbv
), &dbenv)) != 0)

82  (
t
);

84 #ifde
HAVE_RPC


85 i(
	`LF_ISSET
(
DB_RPCCLIENT
))

86 
	`F_SET
(
dbv
, 
DB_ENV_RPCCLIENT
);

88 i((
t
 = 
	`__v_
(
dbv
)) != 0 ||

89 (
t
 = 
	`__lock_v_
(
dbv
)) != 0 ||

90 (
t
 = 
	`__log_v_
(
dbv
)) != 0 ||

91 (
t
 = 
	`__memp_v_
(
dbv
)) != 0 ||

92 #ifde
HAVE_REPLICATION


93 (
t
 = 
	`__p_v_
(
dbv
)) != 0 ||

95 (
t
 = 
	`__txn_v_
(
dbv
)))

96 
r
;

98 #ifde
HAVE_RPC


103 i(
	`F_ISSET
(
dbv
, 
DB_ENV_RPCCLIENT
)) {

104 
	`__db_dbv_
(
dbv
);

110 
dbv
->
ݒ
 = 
__db_v_ݒ_wp
;

111 
dbv
->
o
 = 
__db_v_o_wp
;

115 *
dbv
 = 
dbv
;

118 
r
: 
	`__db_v_deroy
(
dbv
);

119  (
t
);

120 
	}
}

129 
	$__db_v_deroy
(
dbv
)

130 
DB_ENV
 *
dbv
;

132 
	`__lock_v_deroy
(
dbv
);

133 
	`__log_v_deroy
(
dbv
);

134 
	`__memp_v_deroy
(
dbv
);

135 #ifde
HAVE_REPLICATION


136 
	`__p_v_deroy
(
dbv
);

138 
	`__txn_v_deroy
(
dbv
);

140 
	`memt
(
dbv
, 
CLEAR_BYTE
, (
DB_ENV
));

141 
	`__os_
(
NULL
, 
dbv
);

142 
	}
}

149 
	$__v_
(
dbv
)

150 
DB_ENV
 *
dbv
;

161 
dbv
->
cdsgroup_beg
 = 
__cdsgroup_beg
;

162 
dbv
->
o
 = 
__v_o_
;

163 
dbv
->
dbmove
 = 
__v_dbmove_
;

164 
dbv
->
dbme
 = 
__v_dbme_
;

165 
dbv
->
r
 = 
__v_r
;

166 
dbv
->
rx
 = 
__v_rx
;

167 
dbv
->
chk
 = 
__v_chk_
;

168 
dbv
->
feid_t
 = 
__v_feid_t_
;

169 
dbv
->
g_chesize
 = 
__memp_g_chesize
;

170 
dbv
->
g_che_max
 = 
__memp_g_che_max
;

171 
dbv
->
g_da_ds
 = 
__v_g_da_ds
;

172 
dbv
->
g_y_ags
 = 
__v_g_y_ags
;

173 
dbv
->
g_rfe
 = 
__v_g_rfe
;

174 
dbv
->
g_fx
 = 
__v_g_fx
;

175 
dbv
->
g_ags
 = 
__v_g_ags
;

176 
dbv
->
g_home
 = 
__v_g_home
;

177 
dbv
->
g_lg_bsize
 = 
__log_g_lg_bsize
;

178 
dbv
->
g_lg_d
 = 
__log_g_lg_d
;

179 
dbv
->
g_lg_femode
 = 
__log_g_lg_femode
;

180 
dbv
->
g_lg_max
 = 
__log_g_lg_max
;

181 
dbv
->
g_lg_gimax
 = 
__log_g_lg_gimax
;

182 
dbv
->
g_lk_cis
 = 
__lock_g_lk_cis
;

183 
dbv
->
g_lk_de
 = 
__lock_g_lk_de
;

184 
dbv
->
g_lk_max_locks
 = 
__lock_g_lk_max_locks
;

185 
dbv
->
g_lk_max_locks
 = 
__lock_g_lk_max_locks
;

186 
dbv
->
g_lk_max_objes
 = 
__lock_g_lk_max_objes
;

187 
dbv
->
g_mp_max_ݒfd
 = 
__memp_g_mp_max_ݒfd
;

188 
dbv
->
g_mp_max_wre
 = 
__memp_g_mp_max_wre
;

189 
dbv
->
g_mp_mmsize
 = 
__memp_g_mp_mmsize
;

190 
dbv
->
g_msgfe
 = 
__v_g_msgfe
;

191 
dbv
->
g_ݒ_ags
 = 
__v_g_ݒ_ags
;

192 
dbv
->
g_shm_key
 = 
__v_g_shm_key
;

193 
dbv
->
g_thad_cou
 = 
__v_g_thad_cou
;

194 
dbv
->
g_timeout
 = 
__lock_g_v_timeout
;

195 
dbv
->
g_tmp_d
 = 
__v_g_tmp_d
;

196 
dbv
->
g_tx_max
 = 
__txn_g_tx_max
;

197 
dbv
->
g_tx_timeamp
 = 
__txn_g_tx_timeamp
;

198 
dbv
->
g_vbo
 = 
__v_g_vbo
;

199 
dbv
->
is_bigdn
 = 
__db_isbigdn
;

200 
dbv
->
lock_de
 = 
__lock_de_
;

201 
dbv
->
lock_g
 = 
__lock_g_
;

202 
dbv
->
lock_id
 = 
__lock_id_
;

203 
dbv
->
lock_id_
 = 
__lock_id__
;

204 
dbv
->
lock_put
 = 
__lock_put_
;

205 
dbv
->
lock_
 = 
__lock__
;

206 
dbv
->
lock__t
 = 
__lock__t_
;

207 
dbv
->
lock_vec
 = 
__lock_vec_
;

208 
dbv
->
log_chive
 = 
__log_chive_
;

209 
dbv
->
log_curs
 = 
__log_curs_
;

210 
dbv
->
log_fe
 = 
__log_fe_
;

211 
dbv
->
log_ush
 = 
__log_ush_
;

212 
dbv
->
log_tf
 = 
__log_tf_pi
;

213 
dbv
->
log_put
 = 
__log_put_
;

214 
dbv
->
log_
 = 
__log__
;

215 
dbv
->
log__t
 = 
__log__t_
;

216 
dbv
->
l_t
 = 
__v_l_t_
;

217 
dbv
->
memp_f
 = 
__memp_f_
;

218 
dbv
->
memp_gi
 = 
__memp_gi_
;

219 
dbv
->
memp_
 = 
__memp__
;

220 
dbv
->
memp__t
 = 
__memp__t_
;

221 
dbv
->
memp_sync
 = 
__memp_sync_
;

222 
dbv
->
memp_ick
 = 
__memp_ick_
;

223 
dbv
->
mux_loc
 = 
__mux_loc_
;

224 
dbv
->
mux_
 = 
__mux__
;

225 
dbv
->
mux_g_ign
 = 
__mux_g_ign
;

226 
dbv
->
mux_g_emt
 = 
__mux_g_emt
;

227 
dbv
->
mux_g_max
 = 
__mux_g_max
;

228 
dbv
->
mux_g_s_s
 = 
__mux_g_s_s
;

229 
dbv
->
mux_lock
 = 
__mux_lock_
;

230 
dbv
->
mux_t_ign
 = 
__mux_t_ign
;

231 
dbv
->
mux_t_emt
 = 
__mux_t_emt
;

232 
dbv
->
mux_t_max
 = 
__mux_t_max
;

233 
dbv
->
mux_t_s_s
 = 
__mux_t_s_s
;

234 
dbv
->
mux_
 = 
__mux__
;

235 
dbv
->
mux__t
 = 
__mux__t_
;

236 
dbv
->
mux_uock
 = 
__mux_uock_
;

237 
dbv
->
ݒ
 = 
__v_ݒ_
;

238 
dbv
->
move
 = 
__v_move
;

239 
dbv
->
p_e
 = 
__p_e
;

240 
dbv
->
p_ush
 = 
__p_ush
;

241 
dbv
->
p_g_cfig
 = 
__p_g_cfig
;

242 
dbv
->
p_g_lim
 = 
__p_g_lim
;

243 
dbv
->
p_g_nses
 = 
__p_g_nses
;

244 
dbv
->
p_g_iܙy
 = 
__p_g_iܙy
;

245 
dbv
->
p_g_timeout
 = 
__p_g_timeout
;

246 
dbv
->
p_oss_mesge
 = 
__p_oss_mesge
;

247 
dbv
->
p_t_cfig
 = 
__p_t_cfig
;

248 
dbv
->
p_t_a
 = 
__p_t_a
;

249 
dbv
->
p_t_lim
 = 
__p_t_lim
;

250 
dbv
->
p_t_nses
 = 
__p_t_nses
;

251 
dbv
->
p_t_iܙy
 = 
__p_t_iܙy
;

252 
dbv
->
p_t_timeout
 = 
__p_t_timeout
;

253 
dbv
->
p_t_t
 = 
__p_t_t
;

254 
dbv
->
p_t
 = 
__p_t
;

255 
dbv
->
p_
 = 
__p__
;

256 
dbv
->
p__t
 = 
__p__t_
;

257 
dbv
->
p_sync
 = 
__p_sync
;

258 
dbv
->
pmgr_add_me_se
 = 
__pmgr_add_me_se
;

259 
dbv
->
pmgr_g_ack_picy
 = 
__pmgr_g_ack_picy
;

260 
dbv
->
pmgr_t_ack_picy
 = 
__pmgr_t_ack_picy
;

261 
dbv
->
pmgr_t_lol_se
 = 
__pmgr_t_lol_se
;

262 
dbv
->
pmgr_se_li
 = 
__pmgr_se_li
;

263 
dbv
->
pmgr_t
 = 
__pmgr_t
;

264 
dbv
->
pmgr_
 = 
__pmgr__
;

265 
dbv
->
pmgr__t
 = 
__pmgr__t_
;

266 
dbv
->
t_loc
 = 
__v_t_loc
;

267 
dbv
->
t_p_dich
 = 
__v_t_p_dich
;

268 
dbv
->
t_chesize
 = 
__memp_t_chesize
;

269 
dbv
->
t_che_max
 = 
__memp_t_che_max
;

270 
dbv
->
t_da_d
 = 
__v_t_da_d
;

271 
dbv
->
t_y
 = 
__v_t_y
;

272 
dbv
->
t_r
 = 
__v_t_r
;

273 
dbv
->
t_rfe
 = 
__v_t_rfe
;

274 
dbv
->
t_fx
 = 
__v_t_fx
;

275 
dbv
->
t_evt_nify
 = 
__v_t_evt_nify
;

276 
dbv
->
t_edback
 = 
__v_t_edback
;

277 
dbv
->
t_ags
 = 
__v_t_ags
;

278 
dbv
->
t_rmed_d
 = 
__v_t_rmed_d
;

279 
dbv
->
t_ilive
 = 
__v_t_ilive
;

280 
dbv
->
t_lg_bsize
 = 
__log_t_lg_bsize
;

281 
dbv
->
t_lg_d
 = 
__log_t_lg_d
;

282 
dbv
->
t_lg_femode
 = 
__log_t_lg_femode
;

283 
dbv
->
t_lg_max
 = 
__log_t_lg_max
;

284 
dbv
->
t_lg_gimax
 = 
__log_t_lg_gimax
;

285 
dbv
->
t_lk_cis
 = 
__lock_t_lk_cis
;

286 
dbv
->
t_lk_de
 = 
__lock_t_lk_de
;

287 
dbv
->
t_lk_max_locks
 = 
__lock_t_lk_max_locks
;

288 
dbv
->
t_lk_max_locks
 = 
__lock_t_lk_max_locks
;

289 
dbv
->
t_lk_max_objes
 = 
__lock_t_lk_max_objes
;

290 
dbv
->
t_mp_max_ݒfd
 = 
__memp_t_mp_max_ݒfd
;

291 
dbv
->
t_mp_max_wre
 = 
__memp_t_mp_max_wre
;

292 
dbv
->
t_mp_mmsize
 = 
__memp_t_mp_mmsize
;

293 
dbv
->
t_msg
 = 
__v_t_msg
;

294 
dbv
->
t_msgfe
 = 
__v_t_msgfe
;

295 
dbv
->
t_nic
 = 
__v_t_nic
;

296 
dbv
->
t_p_que
 = 
__p_t_que
;

297 
dbv
->
t_c_rv
 = 
__v_t_c_rv
;

298 
dbv
->
t_shm_key
 = 
__v_t_shm_key
;

299 
dbv
->
t_thad_cou
 = 
__v_t_thad_cou
;

300 
dbv
->
t_thad_id
 = 
__v_t_thad_id
;

301 
dbv
->
t_thad_id_rg
 = 
__v_t_thad_id_rg
;

302 
dbv
->
t_timeout
 = 
__lock_t_v_timeout
;

303 
dbv
->
t_tmp_d
 = 
__v_t_tmp_d
;

304 
dbv
->
t_tx_max
 = 
__txn_t_tx_max
;

305 
dbv
->
t_tx_timeamp
 = 
__txn_t_tx_timeamp
;

306 
dbv
->
t_vbo
 = 
__v_t_vbo
;

307 
dbv
->
_t
 = 
__v__t_
;

308 
dbv
->
txn_beg
 = 
__txn_beg_
;

309 
dbv
->
txn_checkpot
 = 
__txn_checkpot_
;

310 
dbv
->
txn_cov
 = 
__txn_cov_
;

311 
dbv
->
txn_
 = 
__txn__
;

312 
dbv
->
txn__t
 = 
__txn__t_
;

316 
dbv
->
dbt
 = 
__db_dbt
;

319 
	`__os_id
(
NULL
, &
dbv
->
pid_che
, NULL);

320 
dbv
->
thad_id
 = 
__os_id
;

321 
dbv
->
thad_id_rg
 = 
__v_thad_id_rg
;

323 
dbv
->
db_f
 = 0;

324 
dbv
->
shm_key
 = 
INVALID_REGION_SEGID
;

325 
	`TAILQ_INIT
(&
dbv
->
fdli
);

327 
	`F_SET
(
dbv
, 
DB_ENV_NO_OUTPUT_SET
);

330 
	}
}

337 #ifde
STDC_HEADERS


338 
	$__v_r
(cڡ 
DB_ENV
 *
dbv
, 
r
, cڡ *
fmt
, ...)

340 
	$__v_r
(
dbv
, 
r
, 
fmt
, 
va_i
)

341 cڡ 
DB_ENV
 *
dbv
;

342 
r
;

343 cڡ *
fmt
;

344 
va_d


348 
	`DB_REAL_ERR
(
dbv
, 
r
, 
DB_ERROR_SET
, 1, 
fmt
);

349 
	}
}

356 #ifde
STDC_HEADERS


357 
	$__v_rx
(cڡ 
DB_ENV
 *
dbv
, cڡ *
fmt
, ...)

359 
	$__v_rx
(
dbv
, 
fmt
, 
va_i
)

360 cڡ 
DB_ENV
 *
dbv
;

361 cڡ *
fmt
;

362 
va_d


366 
	`DB_REAL_ERR
(
dbv
, 0, 
DB_ERROR_NOT_SET
, 1, 
fmt
);

367 
	}
}

370 
	$__v_g_home
(
dbv
, 
hom
)

371 
DB_ENV
 *
dbv
;

372 cڡ **
hom
;

374 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, "DB_ENV->get_home");

375 *
hom
 = 
dbv
->
db_home
;

377 
	}
}

387 
	$__v_t_loc
(
dbv
, 
m_func
, 
_func
, 
_func
)

388 
DB_ENV
 *
dbv
;

389 *(*
m_func

	`__P
((
size_t
));

390 *(*
_func

	`__P
((*, 
size_t
));

391 (*
_func

	`__P
((*));

393 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_alloc");

395 
dbv
->
db_mloc
 = 
m_func
;

396 
dbv
->
db_loc
 = 
_func
;

397 
dbv
->
db_
 = 
_func
;

399 
	}
}

406 
	$__v_t_p_dich
(
dbv
, 
p_dich
)

407 
DB_ENV
 *
dbv
;

408 (*
p_dich

	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
));

410 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_app_dispatch");

412 
dbv
->
p_dich
 =pp_dispatch;

414 
	}
}

423 
	$__v_g_y_ags
(
dbv
, 
ag
)

424 
DB_ENV
 *
dbv
;

425 
u_t32_t
 *
ag
;

427 #ifde
HAVE_CRYPTO


428 
DB_CIPHER
 *
db_ch
;

430 
db_ch
 = 
dbv
->
yo_hd
;

431 i(
db_ch
 !
NULL
 && db_ch->
g
 =
CIPHER_AES
)

432 *
ag
 = 
DB_ENCRYPT_AES
;

434 *
ag
 = 0;

437 
	`COMPQUIET
(
ag
, 0);

438 
	`__db_rx
(
dbv
,

440  (
DB_OPNOTSUP
);

442 
	}
}

451 
	$__v_t_y
(
dbv
, 
sswd
, 
ags
)

452 
DB_ENV
 *
dbv
;

453 cڡ *
sswd
;

454 
u_t32_t
 
ags
;

456 #ifde
HAVE_CRYPTO


457 
DB_CIPHER
 *
db_ch
;

458 
t
;

460 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_encrypt");

461 
	#OK_CRYPTO_FLAGS
 (
DB_ENCRYPT_AES
)

	)

463 i(
ags
 !0 && 
	`LF_ISSET
(~
OK_CRYPTO_FLAGS
))

464  (
	`__db_
(
dbv
, "DB_ENV->set_encrypt", 0));

466 i(
sswd
 =
NULL
 || 
	`
(passwd) == 0) {

467 
	`__db_rx
(
dbv
, "Emptyassword specifiedo set_encrypt");

468  (
EINVAL
);

470 i(!
	`CRYPTO_ON
(
dbv
)) {

471 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_CIPHER
), &
db_ch
))

473 
r
;

474 
dbv
->
yo_hd
 = 
db_ch
;

476 
db_ch
 = (
DB_CIPHER
 *)
dbv
->
yo_hd
;

478 i(
dbv
->
sswd
 !
NULL
)

479 
	`__os_
(
dbv
, dbv->
sswd
);

480 i((
t
 = 
	`__os_rdup
(
dbv
, 
sswd
, &dbenv->passwd)) != 0) {

481 
	`__os_
(
dbv
, 
db_ch
);

482 
r
;

487 
dbv
->
sswd_n
 = 
	`
(dbv->
sswd
) + 1;

493 
	`__db_dive_mac
((
u_t8_t
 *)
dbv
->
sswd
,

494 
dbv
->
sswd_n
, 
db_ch
->
mac_key
);

495 
ags
) {

497 
	`F_SET
(
db_ch
, 
CIPHER_ANY
);

499 
DB_ENCRYPT_AES
:

500 i((
t
 = 
	`__yo_gtup
(
dbv
, 
db_ch
, 
CIPHER_AES
, 0))

502 
r1
;

509 
r1
:

510 
	`__os_
(
dbv
, dbv->
sswd
);

511 
	`__os_
(
dbv
, 
db_ch
);

512 
dbv
->
yo_hd
 = 
NULL
;

513 
r
:

514  (
t
);

516 
	`COMPQUIET
(
sswd
, 
NULL
);

517 
	`COMPQUIET
(
ags
, 0);

519 
	`__db_rx
(
dbv
,

521  (
DB_OPNOTSUP
);

523 
	}
}

526 
	$__v_m_ags
(
dbv
, 
ag
, 
outag
)

527 
DB_ENV
 *
dbv
;

528 
u_t32_t
 *
ag
, *
outag
;

530 #ide
HAVE_BREW


534 
u_t32_t
 
ag
, 
outag
;

535 } *
fmp
, 
agm
[] = {

536 { 
DB_AUTO_COMMIT
, 
DB_ENV_AUTO_COMMIT
 },

537 { 
DB_CDB_ALLDB
, 
DB_ENV_CDB_ALLDB
 },

538 { 
DB_DIRECT_DB
, 
DB_ENV_DIRECT_DB
 },

539 { 
DB_DIRECT_LOG
, 
DB_ENV_DIRECT_LOG
 },

540 { 
DB_DSYNC_DB
, 
DB_ENV_DSYNC_DB
 },

541 { 
DB_DSYNC_LOG
, 
DB_ENV_DSYNC_LOG
 },

542 { 
DB_LOG_AUTOREMOVE
, 
DB_ENV_LOG_AUTOREMOVE
 },

543 { 
DB_LOG_INMEMORY
, 
DB_ENV_LOG_INMEMORY
 },

544 { 
DB_MULTIVERSION
, 
DB_ENV_MULTIVERSION
 },

545 { 
DB_NOLOCKING
, 
DB_ENV_NOLOCKING
 },

546 { 
DB_NOMMAP
, 
DB_ENV_NOMMAP
 },

547 { 
DB_NOPANIC
, 
DB_ENV_NOPANIC
 },

548 { 
DB_OVERWRITE
, 
DB_ENV_OVERWRITE
 },

549 { 
DB_REGION_INIT
, 
DB_ENV_REGION_INIT
 },

550 { 
DB_TIME_NOTGRANTED
, 
DB_ENV_TIME_NOTGRANTED
 },

551 { 
DB_TXN_NOSYNC
, 
DB_ENV_TXN_NOSYNC
 },

552 { 
DB_TXN_NOWAIT
, 
DB_ENV_TXN_NOWAIT
 },

553 { 
DB_TXN_SNAPSHOT
, 
DB_ENV_TXN_SNAPSHOT
 },

554 { 
DB_TXN_WRITE_NOSYNC
, 
DB_ENV_TXN_WRITE_NOSYNC
 },

555 { 
DB_YIELDCPU
, 
DB_ENV_YIELDCPU
 }

558 
u_t
 
i
;

560 
	`COMPQUIET
(
dbv
, 
NULL
);

562 
i
 = 0, 
fmp
 = 
agm
;

563 
i
 < (
agm
/ (agm[0]); ++i, ++
fmp
)

564 i(
	`FLD_ISSET
(*
ag
, 
fmp
->
ag
)) {

565 
	`FLD_SET
(*
outag
, 
fmp
->
outag
);

566 
	`FLD_CLR
(*
ag
, 
fmp
->
ag
);

567 i(*
ag
 == 0)

570 
	}
}

573 
	$__v_g_ags
(
dbv
, 
ag
)

574 
DB_ENV
 *
dbv
;

575 
u_t32_t
 *
ag
;

577 cڡ 
u_t32_t
 
v_ags
[] = {

578 
DB_AUTO_COMMIT
,

579 
DB_CDB_ALLDB
,

580 
DB_DIRECT_DB
,

581 
DB_DIRECT_LOG
,

582 
DB_DSYNC_DB
,

583 
DB_DSYNC_LOG
,

584 
DB_LOG_AUTOREMOVE
,

585 
DB_LOG_INMEMORY
,

586 
DB_MULTIVERSION
,

587 
DB_NOLOCKING
,

588 
DB_NOMMAP
,

589 
DB_NOPANIC
,

590 
DB_OVERWRITE
,

591 
DB_REGION_INIT
,

592 
DB_TIME_NOTGRANTED
,

593 
DB_TXN_NOSYNC
,

594 
DB_TXN_NOWAIT
,

595 
DB_TXN_SNAPSHOT
,

596 
DB_TXN_WRITE_NOSYNC
,

597 
DB_YIELDCPU
,

600 
u_t32_t
 
f
, 
ags
, 
md_ag
;

601 
i
;

603 
ags
 = 0;

604 
i
 = 0; (
f
 = 
v_ags
[i]) != 0; i++) {

605 
md_ag
 = 0;

606 
	`__v_m_ags
(
dbv
, &
f
, &
md_ag
);

607 
	`DB_ASSERT
(
dbv
, 
f
 == 0);

608 i(
	`F_ISSET
(
dbv
, 
md_ag
) == mapped_flag)

609 
	`LF_SET
(
v_ags
[
i
]);

613 i(
dbv
->
gfo
 !
NULL
 &&

614 ((
REGENV
 *)((
REGINFO
 *)
dbv
->
gfo
)->
imy
)->
nic
 != 0) {

615 
	`LF_SET
(
DB_PANIC_ENVIRONMENT
);

617 
	`__log_g_ags
(
dbv
, &
ags
);

619 *
ag
 = 
ags
;

621 
	}
}

630 
	$__v_t_ags
(
dbv
, 
ags
, 

)

631 
DB_ENV
 *
dbv
;

632 
u_t32_t
 
ags
;

633 

;

635 
u_t32_t
 
md_ags
;

636 
t
;

638 
	#OK_FLAGS
 \

639 (
DB_AUTO_COMMIT
 | 
DB_CDB_ALLDB
 | 
DB_DIRECT_DB
 | 
DB_DIRECT_LOG
 | \

640 
DB_DSYNC_DB
 | 
DB_DSYNC_LOG
 | 
DB_LOG_AUTOREMOVE
 | \

641 
DB_LOG_INMEMORY
 | 
DB_MULTIVERSION
 | 
DB_NOLOCKING
 | \

642 
DB_NOMMAP
 | 
DB_NOPANIC
 | 
DB_OVERWRITE
 | \

643 
DB_PANIC_ENVIRONMENT
 | 
DB_REGION_INIT
 | \

644 
DB_TIME_NOTGRANTED
 | 
DB_TXN_NOSYNC
 | 
DB_TXN_NOWAIT
 | \

645 
DB_TXN_SNAPSHOT
 | 
DB_TXN_WRITE_NOSYNC
 | 
DB_YIELDCPU
)

	)

647 i(
	`LF_ISSET
(~
OK_FLAGS
))

648  (
	`__db_
(
dbv
, "DB_ENV->set_flags", 0));

649 i(

) {

650 i((
t
 = 
	`__db_fcchk
(
dbv
, "DB_ENV->set_flags",

651 
ags
, 
DB_LOG_INMEMORY
, 
DB_TXN_NOSYNC
)) != 0)

652  (
t
);

653 i((
t
 = 
	`__db_fcchk
(
dbv
, "DB_ENV->set_flags",

654 
ags
, 
DB_LOG_INMEMORY
, 
DB_TXN_WRITE_NOSYNC
)) != 0)

655  (
t
);

656 i((
t
 = 
	`__db_fcchk
(
dbv
, "DB_ENV->set_flags",

657 
ags
, 
DB_TXN_NOSYNC
, 
DB_TXN_WRITE_NOSYNC
)) != 0)

658  (
t
);

659 i(
	`LF_ISSET
(
DB_DIRECT_DB
 |

660 
DB_DIRECT_LOG
&& 
	`__os_sut_de_io
() == 0) {

661 
	`__db_rx
(
dbv
,

663  (
EINVAL
);

667 i(
	`LF_ISSET
(
DB_CDB_ALLDB
))

668 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
,

670 i(
	`LF_ISSET
(
DB_PANIC_ENVIRONMENT
)) {

671 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
,

673 i(

) {

674 
	`__db_rx
(
dbv
, "Environmentanic set");

675 ()
	`__db_nic
(
dbv
, 
DB_RUNRECOVERY
);

677 
	`__v_nic_t
(
dbv
, 0);

679 i(
	`LF_ISSET
(
DB_REGION_INIT
))

680 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
,

682 i(
	`LF_ISSET
(
DB_LOG_INMEMORY
))

683 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
,

691 i(
	`LF_ISSET
(

692 
DB_LOG_INMEMORY
 | 
DB_TXN_NOSYNC
 | 
DB_TXN_WRITE_NOSYNC
))

693 
	`F_CLR
(
dbv
,

694 
DB_ENV_LOG_INMEMORY
 |

695 
DB_ENV_TXN_NOSYNC
 | 
DB_ENV_TXN_WRITE_NOSYNC
);

698 
	`__log_t_ags
(
dbv
, 
ags
, 

);

700 
md_ags
 = 0;

701 
	`__v_m_ags
(
dbv
, &
ags
, &
md_ags
);

702 i(

)

703 
	`F_SET
(
dbv
, 
md_ags
);

705 
	`F_CLR
(
dbv
, 
md_ags
);

708 
	}
}

711 
	$__v_g_da_ds
(
dbv
, 
d
)

712 
DB_ENV
 *
dbv
;

713 cڡ ***
d
;

715 *
d
 = (cڡ **)
dbv
->
db_da_d
;

717 
	}
}

726 
	$__v_t_da_d
(
dbv
, 
d
)

727 
DB_ENV
 *
dbv
;

728 cڡ *
d
;

730 
t
;

737 
	#DATA_INIT_CNT
 20

	)

738 i(
dbv
->
db_da_d
 =
NULL
) {

739 i((
t
 = 
	`__os_oc
(
dbv
, 
DATA_INIT_CNT
,

740 (**), &
dbv
->
db_da_d
)) != 0)

741  (
t
);

742 
dbv
->
da_t
 = 
DATA_INIT_CNT
;

743 } i(
dbv
->
da_xt
 =dbv->
da_t
 - 2) {

744 
dbv
->
da_t
 *= 2;

745 i((
t
 = 
	`__os_loc
(
dbv
,

746 (
u_t
)
dbv
->
da_t
 * (**),

747 &
dbv
->
db_da_d
)) != 0)

748  (
t
);

751 
t
 = 
	`__os_rdup
(
dbv
,

752 
d
, &
dbv
->
db_da_d
[dbv->
da_xt
++]);

753 
dbv
->
db_da_d
[dbv->
da_xt
] = 
NULL
;

754  (
t
);

755 
	}
}

768 
	$__v_t_rmed_d
(
dbv
, 
mode
, 
ags
)

769 
DB_ENV
 *
dbv
;

770 
mode
;

771 
u_t32_t
 
ags
;

773 i(
ags
 != 0)

774  (
	`__db_
(
dbv
, "DB_ENV->set_intermediate_dir", 0));

775 i(
mode
 == 0) {

776 
	`__db_rx
(
dbv
,

778  (
EINVAL
);

781 
dbv
->
d_mode
 = 
mode
;

783 
	}
}

793 
	$__v_t_r
(
dbv
, 
r
)

794 
DB_ENV
 *
dbv
;

795 (*
r

	`__P
((cڡ 
DB_ENV
 *, const *, const *));

797 
	`F_CLR
(
dbv
, 
DB_ENV_NO_OUTPUT_SET
);

798 
dbv
->
db_r
 = 
r
;

799 
	}
}

808 
	$__v_g_rfe
(
dbv
, 
rf
)

809 
DB_ENV
 *
dbv
;

810 
FILE
 **
rf
;

812 *
rf
 = 
dbv
->
db_rfe
;

813 
	}
}

822 
	$__v_t_rfe
(
dbv
, 
rfe
)

823 
DB_ENV
 *
dbv
;

824 
FILE
 *
rfe
;

826 
	`F_CLR
(
dbv
, 
DB_ENV_NO_OUTPUT_SET
);

827 
dbv
->
db_rfe
 = 
rfe
;

828 
	}
}

837 
	$__v_g_fx
(
dbv
, 
fxp
)

838 
DB_ENV
 *
dbv
;

839 cڡ **
fxp
;

841 *
fxp
 = 
dbv
->
db_fx
;

842 
	}
}

851 
	$__v_t_fx
(
dbv
, 
fx
)

852 
DB_ENV
 *
dbv
;

853 cڡ *
fx
;

855 
dbv
->
db_fx
 = 
fx
;

856 
	}
}

859 
	$__v_t_edback
(
dbv
, 
edback
)

860 
DB_ENV
 *
dbv
;

861 (*
edback

	`__P
((
DB_ENV
 *, , ));

863 
dbv
->
db_edback
 = 
edback
;

865 
	}
}

872 
	$__v_t_thad_id
(
dbv
, 
id
)

873 
DB_ENV
 *
dbv
;

874 (*
id

	`__P
((
DB_ENV
 *, 
pid_t
 *, 
db_thadid_t
 *));

876 
dbv
->
thad_id
 = 
id
;

878 
	}
}

885 
	$__v_t_thad_id_rg
(
dbv
, 
thad_id_rg
)

886 
DB_ENV
 *
dbv
;

887 *(*
thad_id_rg

	`__P
((
DB_ENV
 *, 
pid_t
, 
db_thadid_t
, *));

889 
dbv
->
thad_id_rg
 =hread_id_string;

891 
	}
}

898 
	$__v_t_ilive
(
dbv
, 
is_ive
)

899 
DB_ENV
 *
dbv
;

900 (*
is_ive

	`__P
((
DB_ENV
 *, 
pid_t
, 
db_thadid_t
, 
u_t32_t
));

902 i(
	`F_ISSET
(
dbv
, 
DB_ENV_OPEN_CALLED
&& dbv->
thr_nbuck
 == 0) {

903 
	`__db_rx
(
dbv
,

905  (
EINVAL
);

907 
dbv
->
is_ive
 = is_alive;

909 
	}
}

916 
	$__v_g_thad_cou
(
dbv
, 
coup
)

917 
DB_ENV
 *
dbv
;

918 
u_t32_t
 *
coup
;

920 *
coup
 = 
dbv
->
thr_max
;

922 
	}
}

929 
	$__v_t_thad_cou
(
dbv
, 
cou
)

930 
DB_ENV
 *
dbv
;

931 
u_t32_t
 
cou
;

933 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_thread_count");

934 
dbv
->
thr_max
 = 
cou
;

940 
dbv
->
thr_nbuck
 = 
cou
 / 8;

942 
	}
}

952 
	$__v_t_msg
(
dbv
, 
msg
)

953 
DB_ENV
 *
dbv
;

954 (*
msg

	`__P
((cڡ 
DB_ENV
 *, const *));

956 
dbv
->
db_msg
 = 
msg
;

957 
	}
}

966 
	$__v_g_msgfe
(
dbv
, 
msgf
)

967 
DB_ENV
 *
dbv
;

968 
FILE
 **
msgf
;

970 *
msgf
 = 
dbv
->
db_msgfe
;

971 
	}
}

980 
	$__v_t_msgfe
(
dbv
, 
msgfe
)

981 
DB_ENV
 *
dbv
;

982 
FILE
 *
msgfe
;

984 
dbv
->
db_msgfe
 = 
msgfe
;

985 
	}
}

994 
	$__v_t_nic
(
dbv
, 
nic
)

995 
DB_ENV
 *
dbv
;

996 (*
nic

	`__P
((
DB_ENV
 *, ));

998 
dbv
->
db_nic
 = 
nic
;

1000 
	}
}

1007 
	$__v_t_evt_nify
(
dbv
, 
evt_func
)

1008 
DB_ENV
 *
dbv
;

1009 (*
evt_func

	`__P
((
DB_ENV
 *, 
u_t32_t
, *));

1011 
dbv
->
db_evt_func
 = 
evt_func
;

1013 
	}
}

1016 
	$__v_g_shm_key
(
dbv
, 
shm_keyp
)

1017 
DB_ENV
 *
dbv
;

1018 *
shm_keyp
;

1020 *
shm_keyp
 = 
dbv
->
shm_key
;

1022 
	}
}

1031 
	$__v_t_shm_key
(
dbv
, 
shm_key
)

1032 
DB_ENV
 *
dbv
;

1033 
shm_key
;

1035 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_shm_key");

1037 
dbv
->
shm_key
 = shm_key;

1039 
	}
}

1042 
	$__v_g_tmp_d
(
dbv
, 
dp
)

1043 
DB_ENV
 *
dbv
;

1044 cڡ **
dp
;

1046 *
dp
 = 
dbv
->
db_tmp_d
;

1048 
	}
}

1057 
	$__v_t_tmp_d
(
dbv
, 
d
)

1058 
DB_ENV
 *
dbv
;

1059 cڡ *
d
;

1061 i(
dbv
->
db_tmp_d
 !
NULL
)

1062 
	`__os_
(
dbv
, dbv->
db_tmp_d
);

1063  (
	`__os_rdup
(
dbv
, 
d
, &dbv->
db_tmp_d
));

1064 
	}
}

1067 
	$__v_g_vbo
(
dbv
, 
which
, 
of
)

1068 
DB_ENV
 *
dbv
;

1069 
u_t32_t
 
which
;

1070 *
of
;

1072 
which
) {

1073 
DB_VERB_DEADLOCK
:

1074 
DB_VERB_FILEOPS
:

1075 
DB_VERB_FILEOPS_ALL
:

1076 
DB_VERB_RECOVERY
:

1077 
DB_VERB_REGISTER
:

1078 
DB_VERB_REPLICATION
:

1079 
DB_VERB_WAITSFOR
:

1080 *
of
 = 
	`FLD_ISSET
(
dbv
->
vbo
, 
which
) ? 1 : 0;

1083  (
EINVAL
);

1086 
	}
}

1095 
	$__v_t_vbo
(
dbv
, 
which
, 

)

1096 
DB_ENV
 *
dbv
;

1097 
u_t32_t
 
which
;

1098 

;

1100 
which
) {

1101 
DB_VERB_DEADLOCK
:

1102 
DB_VERB_FILEOPS
:

1103 
DB_VERB_FILEOPS_ALL
:

1104 
DB_VERB_RECOVERY
:

1105 
DB_VERB_REGISTER
:

1106 
DB_VERB_REPLICATION
:

1107 
DB_VERB_WAITSFOR
:

1108 i(

)

1109 
	`FLD_SET
(
dbv
->
vbo
, 
which
);

1111 
	`FLD_CLR
(
dbv
->
vbo
, 
which
);

1114  (
EINVAL
);

1117 
	}
}

1126 
	$__db_mi_v
(
dbv
, 
me
)

1127 
DB_ENV
 *
dbv
;

1128 cڡ *
me
;

1130 
	`__db_rx
(
dbv
, "%s: methodotermitted whennvironment specified",

1131 
me
);

1132  (
EINVAL
);

1133 
	}
}

1142 
	$__db_mi_ݒ
(
dbv
, 
me
, 
a
)

1143 
DB_ENV
 *
dbv
;

1144 cڡ *
me
;

1145 
a
;

1147 
	`__db_rx
(
dbv
, "%s: methodotermitted %s handle's open method",

1148 
me
, 
a
 ? "after" : "before");

1149  (
EINVAL
);

1150 
	}
}

1159 
	$__db_v_cfig
(
dbv
, 
i
, 
ags
)

1160 
DB_ENV
 *
dbv
;

1161 *
i
;

1162 
u_t32_t
 
ags
;

1164 *
sub
;

1166 
ags
) {

1167 
DB_INIT_LOCK
:

1168 
sub
 = "locking";

1170 
DB_INIT_LOG
:

1171 
sub
 = "logging";

1173 
DB_INIT_MPOOL
:

1174 
sub
 = "memoryool";

1176 
DB_INIT_REP
:

1177 
sub
 = "replication";

1179 
DB_INIT_TXN
:

1180 
sub
 = "transaction";

1183 
sub
 = "<unspecified>";

1186 
	`__db_rx
(
dbv
,

1188 
i
, 
sub
);

1189  (
EINVAL
);

1190 
	}
}

1193 
	$__v_t_c_rv
(
dbv
, 

, 
ho
, 
tc
, 
sc
, 
ags
)

1194 
DB_ENV
 *
dbv
;

1195 *

;

1196 cڡ *
ho
;

1197 
tc
, 
sc
;

1198 
u_t32_t
 
ags
;

1200 
	`COMPQUIET
(
ho
, 
NULL
);

1201 
	`COMPQUIET
(

, 
NULL
);

1202 
	`COMPQUIET
(
tc
, 0);

1203 
	`COMPQUIET
(
sc
, 0);

1204 
	`COMPQUIET
(
ags
, 0);

1206 
	`__db_rx
(
dbv
, "Berkeley DB wasot configured for RPC support");

1207  (
DB_OPNOTSUP
);

1208 
	}
}

	@../env/env_name.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
__db_tmp_ݒ
 
__P
((
DB_ENV
 *, 
u_t32_t
, *, 
DB_FH
 **));

15 
	#DB_ADDSTR
(
add
) { \

20 i((
add
!
NULL
 && (add)[0] != '\0') { \

22 i(
	`__os_abh
(
add
)) { \

23 
p
 = 
r
; \

24 
ash
 = 0; \

27 
n
 = 
	`
(
add
); \

28 i(
ash
) \

29 *
p
++ = 
PATH_SEPARATOR
[0]; \

30 
	`memy
(
p
, 
add
, 
n
); \

31 
p
 +
n
; \

32 
ash
 = 
	`rchr
(
PATH_SEPARATOR
, 
p
[-1]=
NULL
; \

34 }

	)

46 
	$__db_ame
(
dbv
, 
ame
, 
fe
, 
tmp_oags
, 
fh
, 
m
)

47 
DB_ENV
 *
dbv
;

48 
APPNAME
 
ame
;

49 cڡ *
fe
;

50 
u_t32_t
 
tmp_oags
;

51 
DB_FH
 **
fh
;

52 **
m
;

54 um { 
TRY_NOTSET
, 
TRY_DATA_DIR
, 
TRY_ENV_HOME
, 
TRY_CREATE
 } 
y_e
;

55 
size_t
 
n
, 
r_n
;

56 
da_y
, 
t
, 
ash
, 
tmp_
;

57 cڡ *
a
, *
b
;

58 *
p
, *
r
;

60 
y_e
 = 
TRY_NOTSET
;

61 
a
 = 
b
 = 
NULL
;

62 
da_y
 = 0;

63 
tmp_
 = 0;

69 i(
fh
 !
NULL
)

70 *
fh
 = 
NULL
;

71 i(
m
 !
NULL
)

72 *
m
 = 
NULL
;

78 i(
fe
 !
NULL
 && 
	`__os_abh
(file))

79  (
	`__os_rdup
(
dbv
, 
fe
, 
m
));

82 i(
dbv
 !
NULL
)

83 
a
 = 
dbv
->
db_home
;

85 
y
:

95 
ame
) {

96 
DB_APP_NONE
:

98 
DB_APP_DATA
:

99 i(
dbv
 =
NULL
 || dbv->
db_da_d
 == NULL) {

100 
y_e
 = 
TRY_CREATE
;

108 i((
b
 = 
dbv
->
db_da_d
[
da_y
]!
NULL
) {

109 ++
da_y
;

110 
y_e
 = 
TRY_DATA_DIR
;

115 i(
y_e
 !
TRY_ENV_HOME
) {

116 
y_e
 = 
TRY_ENV_HOME
;

121 
y_e
 = 
TRY_CREATE
;

122 
b
 = 
dbv
->
db_da_d
[0];

124 
DB_APP_LOG
:

125 i(
dbv
 !
NULL
)

126 
b
 = 
dbv
->
db_log_d
;

128 
DB_APP_TMP
:

129 i(
dbv
 !
NULL
)

130 
b
 = 
dbv
->
db_tmp_d
;

131 
tmp_
 = 1;

135 
n
 =

136 (
a
 =
NULL
 ? 0 : 
	`
(a) + 1) +

137 (
b
 =
NULL
 ? 0 : 
	`
(b) + 1) +

138 (
fe
 =
NULL
 ? 0 : 
	`
(file) + 1);

145 
	#DB_TRAIL
 "BDBXXXXX"

	)

146 
r_n
 = 
n
 + (
DB_TRAIL
) + 10;

147 i((
t
 = 
	`__os_mloc
(
dbv
, 
r_n
, &
r
)) != 0)

148  (
t
);

150 
ash
 = 0;

151 
p
 = 
r
;

152 
	`DB_ADDSTR
(
a
);

153 
	`DB_ADDSTR
(
b
);

154 
	`DB_ADDSTR
(
fe
);

155 *
p
 = '\0';

161 i(
ame
 =
DB_APP_DATA
 &&

162 
	`__os_exis
(
dbv
, 
r
, 
NULL
!0 && 
y_e
 !
TRY_CREATE
) {

163 
	`__os_
(
dbv
, 
r
);

164 
b
 = 
NULL
;

165 
y
;

169 i(
tmp_
 &&

170 (
t
 = 
	`__db_tmp_ݒ
(
dbv
, 
tmp_oags
, 
r
, 
fh
)) != 0) {

171 
	`__os_
(
dbv
, 
r
);

172  (
t
);

175 i(
m
 =
NULL
)

176 
	`__os_
(
dbv
, 
r
);

178 *
m
 = 
r
;

180 
	}
}

187 
	$__db_tmp_ݒ
(
dbv
, 
tmp_oags
, 
th
, 
fh
)

188 
DB_ENV
 *
dbv
;

189 
u_t32_t
 
tmp_oags
;

190 *
th
;

191 
DB_FH
 **
fh
;

193 
pid_t
 
pid
;

194 
fum
, 
i
, 
isd
, 
t
;

195 *
fx
, *
v
;

201 i((
t
 = 
	`__os_exis
(
dbv
, 
th
, &
isd
)) != 0) {

202 
	`__db_r
(
dbv
, 
t
, "%s", 
th
);

203  (
t
);

205 i(!
isd
) {

206 
	`__db_r
(
dbv
, 
EINVAL
, "%s", 
th
);

207  (
EINVAL
);

211 ()
	`t
(
th
, 
PATH_SEPARATOR
, 1);

212 ()
	`rt
(
th
, 
DB_TRAIL
);

215 
	`__os_id
(
dbv
, &
pid
, 
NULL
);

216 
v
 = 
th
 + 
	`
թh); *--v ='X'; 
pid
 /= 10)

217 *
v
 = '0' + (
u_ch
)(
pid
 % 10);

218 
fx
 = 
v
 + 1;

221 
fum
 = 1;; filenum++) {

222 i((
t
 = 
	`__os_ݒ
(
dbv
, 
th
, 0,

223 
tmp_oags
 | 
DB_OSO_CREATE
 | 
DB_OSO_EXCL
 | 
DB_OSO_TEMP
,

224 
	`__db_omode
(
OWNER_RW
), 
fh
)) == 0)

234 i(
t
 !
EEXIST
) {

235 
	`__db_r
(
dbv
, 
t
, "mpܬy on: %s", 
th
);

236  (
t
);

254 
i
 = 
fum
, 
v
 = 
fx
; i > 0; i = (i - 1) / 26)

255 i(*
v
++ == '\0')

256  (
EINVAL
);

258 
i
 = 
fum
; i > 0; i = (i - 1) / 26)

259 *--
v
 = 'a' + ((
i
 - 1) % 26);

262 
	}
}

	@../env/env_open.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/yo.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/b.h
"

15 
	~"dbc/lock.h
"

16 
	~"dbc/log.h
"

17 
	~"dbc/mp.h
"

18 
	~"dbc/txn.h
"

20 
__v_esh
 
__P
((
DB_ENV
 *, 
u_t32_t
, ));

21 
__fe_hd_nup
 
__P
((
DB_ENV
 *));

30 
	$db_vsi
(
majvp
, 
mvp
, 
tchp
)

31 *
majvp
, *
mvp
, *
tchp
;

33 i(
majvp
 !
NULL
)

34 *
majvp
 = 
DB_VERSION_MAJOR
;

35 i(
mvp
 !
NULL
)

36 *
mvp
 = 
DB_VERSION_MINOR
;

37 i(
tchp
 !
NULL
)

38 *
tchp
 = 
DB_VERSION_PATCH
;

39  ((*)
DB_VERSION_STRING
);

40 
	}
}

49 
	$__v_ݒ_
(
dbv
, 
db_home
, 
ags
, 
mode
)

50 
DB_ENV
 *
dbv
;

51 cڡ *
db_home
;

52 
u_t32_t
 
ags
;

53 
mode
;

55 
t
;

57 #unde
OKFLAGS


58 
	#OKFLAGS
 \

59 (
DB_CREATE
 | 
DB_INIT_CDB
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | \

60 
DB_INIT_MPOOL
 | 
DB_INIT_REP
 | 
DB_INIT_TXN
 | 
DB_LOCKDOWN
 | \

61 
DB_PRIVATE
 | 
DB_RECOVER
 | 
DB_RECOVER_FATAL
 | 
DB_REGISTER
 | \

62 
DB_SYSTEM_MEM
 | 
DB_THREAD
 | 
DB_USE_ENVIRON
 | 
DB_USE_ENVIRON_ROOT
)

	)

63 #unde
OKFLAGS_CDB


64 
	#OKFLAGS_CDB
 \

65 (
DB_CREATE
 | 
DB_INIT_CDB
 | 
DB_INIT_MPOOL
 | 
DB_LOCKDOWN
 | \

66 
DB_PRIVATE
 | 
DB_SYSTEM_MEM
 | 
DB_THREAD
 | \

67 
DB_USE_ENVIRON
 | 
DB_USE_ENVIRON_ROOT
)

	)

69 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->ݒ", 
ags
, 
OKFLAGS
)) != 0)

70  (
t
);

71 i((
t
 = 
	`__db_fcchk
(

72 
dbv
, "DB_ENV->ݒ", 
ags
, 
DB_INIT_CDB
, ~
OKFLAGS_CDB
)) != 0)

73  (
t
);

74 i(
	`LF_ISSET
(
DB_REGISTER
)) {

75 i(!
	`__os_sut_db_gi
()) {

76 
	`__db_rx
(
dbv
,

78  (
EINVAL
);

80 i((
t
 = 
	`__db_fcchk
(
dbv
, "DB_ENV->ݒ", 
ags
,

81 
DB_PRIVATE
, 
DB_REGISTER
 | 
DB_SYSTEM_MEM
)) != 0)

82  (
t
);

83 i(!
	`LF_ISSET
(
DB_INIT_TXN
)) {

84 
	`__db_rx
(

85 
dbv
, "registrationequiresransaction support");

86  (
EINVAL
);

89 i(
	`LF_ISSET
(
DB_INIT_REP
)) {

90 i(!
	`__os_sut_iti
()) {

91 
	`__db_rx
(
dbv
,

93  (
EINVAL
);

95 i(!
	`LF_ISSET
(
DB_INIT_LOCK
)) {

96 
	`__db_rx
(
dbv
,

98  (
EINVAL
);

100 i(!
	`LF_ISSET
(
DB_INIT_TXN
)) {

101 
	`__db_rx
(

102 
dbv
, "replicationequiresransaction support");

103  (
EINVAL
);

106 i(
	`LF_ISSET
(
DB_RECOVER
 | 
DB_RECOVER_FATAL
)) {

107 i((
t
 = 
	`__db_fcchk
(
dbv
,

108 "DB_ENV->ݒ", 
ags
, 
DB_RECOVER
, 
DB_RECOVER_FATAL
)) != 0)

109  (
t
);

110 i((
t
 = 
	`__db_fcchk
(
dbv
,

111 "DB_ENV->ݒ", 
ags
, 
DB_REGISTER
, 
DB_RECOVER_FATAL
)) != 0)

112  (
t
);

113 i(!
	`LF_ISSET
(
DB_CREATE
)) {

114 
	`__db_rx
(
dbv
, "recoveryequireshe create flag");

115  (
EINVAL
);

117 i(!
	`LF_ISSET
(
DB_INIT_TXN
)) {

118 
	`__db_rx
(

119 
dbv
, "recoveryequiresransaction support");

120  (
EINVAL
);

124 #ifde
HAVE_MUTEX_THREAD_ONLY


130 i(!
	`LF_ISSET
(
DB_PRIVATE
)) {

131 
	`__db_rx
(
dbv
,

133  (
EINVAL
);

137 #ifde
HAVE_MUTEX_FCNTL


155 i(
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
)) {

156 
	`__db_rx
(
dbv
,

158  (
EINVAL
);

162  (
	`__v_ݒ
(
dbv
, 
db_home
, 
ags
, 
mode
));

163 
	}
}

172 
	$__v_ݒ
(
dbv
, 
db_home
, 
ags
, 
mode
)

173 
DB_ENV
 *
dbv
;

174 cڡ *
db_home
;

175 
u_t32_t
 
ags
;

176 
mode
;

178 
DB_THREAD_INFO
 *

;

179 
REGINFO
 *
f
;

180 
u_t32_t
 
_ags
, 
ig_ags
;

181 
_ok
, 
gi_covy
, 
p_check
, 
t
, 
t_t
;

183 

 = 
NULL
;

184 
gi_covy
 = 
p_check
 = 0;

187 i((
t
 = 
	`__v_cfig
(
dbv
, 
db_home
, 
ags
, 
mode
)) != 0)

188  (
t
);

197 
ig_ags
 = 
dbv
->
ags
;

203 i(
	`LF_ISSET
(
DB_REGISTER
)) {

204 i((
t
 = 
	`__vg_gi
(
dbv
, &
gi_covy
)) != 0)

205 
r
;

206 i(
gi_covy
) {

207 i(!
	`LF_ISSET
(
DB_RECOVER
)) {

208 
	`__db_rx
(
dbv
,

210 
t
 = 
DB_RUNRECOVERY
;

211 
r
;

214 
	`LF_CLR
(
DB_RECOVER
);

228 i(
	`LF_ISSET
(
DB_RECOVER
 | 
DB_RECOVER_FATAL
))

229 #ifde
HAVE_REPLICATION


230 i((
t
 = 
	`__p_t_
(
dbv
)) != 0 ||

231 (
t
 = 
	`__v_move_v
(
dbv
)) != 0 ||

233 i((
t
 = 
	`__v_move_v
(
dbv
)) != 0 ||

235 (
t
 = 
	`__v_esh
(
dbv
, 
ig_ags
, 0)) != 0)

236 
r
;

239 
_ok
 = 
	`LF_ISSET
(
DB_CREATE
) ? 1 : 0;

240 i(
	`LF_ISSET
(
DB_LOCKDOWN
))

241 
	`F_SET
(
dbv
, 
DB_ENV_LOCKDOWN
);

242 i(
	`LF_ISSET
(
DB_PRIVATE
))

243 
	`F_SET
(
dbv
, 
DB_ENV_PRIVATE
);

244 i(
	`LF_ISSET
(
DB_RECOVER_FATAL
))

245 
	`F_SET
(
dbv
, 
DB_ENV_RECOVER_FATAL
);

246 i(
	`LF_ISSET
(
DB_SYSTEM_MEM
))

247 
	`F_SET
(
dbv
, 
DB_ENV_SYSTEM_MEM
);

248 i(
	`LF_ISSET
(
DB_THREAD
))

249 
	`F_SET
(
dbv
, 
DB_ENV_THREAD
);

255 
	#DB_INITENV_CDB
 0x0001

	)

256 
	#DB_INITENV_CDB_ALLDB
 0x0002

	)

257 
	#DB_INITENV_LOCK
 0x0004

	)

258 
	#DB_INITENV_LOG
 0x0008

	)

259 
	#DB_INITENV_MPOOL
 0x0010

	)

260 
	#DB_INITENV_REP
 0x0020

	)

261 
	#DB_INITENV_TXN
 0x0040

	)

269 
_ags
 = 0;

270 i(
	`LF_ISSET
(
DB_INIT_CDB
))

271 
	`FLD_SET
(
_ags
, 
DB_INITENV_CDB
);

272 i(
	`F_ISSET
(
dbv
, 
DB_ENV_CDB_ALLDB
))

273 
	`FLD_SET
(
_ags
, 
DB_INITENV_CDB_ALLDB
);

274 i(
	`LF_ISSET
(
DB_INIT_LOCK
))

275 
	`FLD_SET
(
_ags
, 
DB_INITENV_LOCK
);

276 i(
	`LF_ISSET
(
DB_INIT_LOG
))

277 
	`FLD_SET
(
_ags
, 
DB_INITENV_LOG
);

278 i(
	`LF_ISSET
(
DB_INIT_MPOOL
))

279 
	`FLD_SET
(
_ags
, 
DB_INITENV_MPOOL
);

280 i(
	`LF_ISSET
(
DB_INIT_REP
))

281 
	`FLD_SET
(
_ags
, 
DB_INITENV_REP
);

282 i(
	`LF_ISSET
(
DB_INIT_TXN
))

283 
	`FLD_SET
(
_ags
, 
DB_INITENV_TXN
);

284 i((
t
 = 
	`__v_ch
(
dbv
, &
_ags
, 
_ok
, 1)) != 0)

285 
r
;

294 i(
	`FLD_ISSET
(
_ags
, 
DB_INITENV_CDB
))

295 
	`LF_SET
(
DB_INIT_CDB
);

296 i(
	`FLD_ISSET
(
_ags
, 
DB_INITENV_LOCK
))

297 
	`LF_SET
(
DB_INIT_LOCK
);

298 i(
	`FLD_ISSET
(
_ags
, 
DB_INITENV_LOG
))

299 
	`LF_SET
(
DB_INIT_LOG
);

300 i(
	`FLD_ISSET
(
_ags
, 
DB_INITENV_MPOOL
))

301 
	`LF_SET
(
DB_INIT_MPOOL
);

302 i(
	`FLD_ISSET
(
_ags
, 
DB_INITENV_REP
))

303 
	`LF_SET
(
DB_INIT_REP
);

304 i(
	`FLD_ISSET
(
_ags
, 
DB_INITENV_TXN
))

305 
	`LF_SET
(
DB_INIT_TXN
);

306 i(
	`FLD_ISSET
(
_ags
, 
DB_INITENV_CDB_ALLDB
) &&

307 (
t
 = 
	`__v_t_ags
(
dbv
, 
DB_CDB_ALLDB
, 1)) != 0)

308 
r
;

315 
dbv
->
ݒ_ags
 = 
ags
;

318 i(
	`LF_ISSET
(
DB_INIT_CDB
)) {

319 
	`LF_SET
(
DB_INIT_LOCK
);

320 
	`F_SET
(
dbv
, 
DB_ENV_CDB
);

328 
	`F_SET
(
dbv
, 
DB_ENV_OPEN_CALLED
);

333 
f
 = 
dbv
->
gfo
;

334 i((
t
 = 
	`__v_thad_
(

335 
dbv
, 
	`F_ISSET
(
f
, 
REGION_CREATE
) ? 1 : 0)) != 0)

336 
r
;

338 
	`ENV_ENTER
(
dbv
, 

);

343 #ifde
HAVE_MUTEX_SUPPORT


350 i((
t
 = 
	`__mux_ݒ
(
dbv
, 
_ok
)) != 0)

351 
r
;

357 i((
t
 = 
	`__v_f_emt
(
dbv
)) != 0)

358 
r
;

363 i((
t
 = 
	`__mux_loc
(
dbv
,

364 
MTX_ENV_HANDLE
, 
DB_MUTEX_PROCESS_ONLY
, &
dbv
->
mtx_v
)) != 0)

365 
r
;

371 i(
	`LF_ISSET
(
DB_INIT_REP
&& (
t
 = 
	`__p_ݒ
(
dbv
)) != 0)

372 
r
;

374 
p_check
 = 
	`IS_ENV_REPLICATED
(
dbv
) ? 1 : 0;

375 i(
p_check
 && (
t
 = 
	`__v_p_r
(
dbv
, 0)) != 0)

376 
r
;

378 i(
	`LF_ISSET
(
DB_INIT_MPOOL
)) {

379 i((
t
 = 
	`__memp_ݒ
(
dbv
, 
_ok
)) != 0)

380 
r
;

387 i(
_ok
)

388 ()
	`__memp_t_cfig
(

389 
dbv
, 
DB_MEMP_SUPPRESS_WRITE
, 1);

396 
	`TAILQ_INIT
(&
dbv
->
dbli
);

397 i((
t
 = 
	`__mux_loc
(
dbv
, 
MTX_ENV_DBLIST
,

398 
DB_MUTEX_PROCESS_ONLY
, &
dbv
->
mtx_dbli
)) != 0)

399 
r
;

402 i((
t
 = 
	`__memp_gi
(

403 
dbv
, 
DB_FTYPE_SET
, 
__db_pg
, 
__db_pgout
)) != 0)

404 
r
;

416 i(
	`LF_ISSET
(
DB_INIT_MPOOL
 | 
DB_INIT_LOG
 | 
DB_INIT_TXN
) &&

417 (
t
 = 
	`__yo_gi_
(
dbv
)) != 0)

418 
r
;

419 i((
t
 = 
	`__mux_loc
(
dbv
, 
MTX_TWISTER
,

420 
DB_MUTEX_PROCESS_ONLY
, &
dbv
->
mtx_mt
)) != 0)

421 
r
;

429 i(
	`LF_ISSET
(
DB_INIT_LOG
 | 
DB_INIT_TXN
))

430 i((
t
 = 
	`__log_ݒ
(
dbv
, 
_ok
)) != 0)

431 
r
;

432 i(
	`LF_ISSET
(
DB_INIT_LOCK
))

433 i((
t
 = 
	`__lock_ݒ
(
dbv
, 
_ok
)) != 0)

434 
r
;

436 i(
	`LF_ISSET
(
DB_INIT_TXN
)) {

437 i((
t
 = 
	`__txn_ݒ
(
dbv
, 
_ok
)) != 0)

438 
r
;

444 i((
t
 = 
	`__v__c
(
dbv
, 
DB_LOGVERSION
)) != 0)

445 
r
;

449 i(
	`LF_ISSET
(
DB_RECOVER
 | 
DB_RECOVER_FATAL
) &&

450 (
t
 = 
	`__db_ec
(
dbv
, 
NULL
, NULL, 1,

451 
	`LF_ISSET
(
DB_RECOVER
 | 
DB_RECOVER_FATAL
))) != 0)

452 
r
;

464 i(
	`TXN_ON
(
dbv
) &&

465 !
	`F_ISSET
(
dbv
, 
DB_ENV_LOG_INMEMORY
) &&

466 
	`F_ISSET
(
f
, 
REGION_CREATE
) &&

467 !
	`LF_ISSET
(
DB_RECOVER
 | 
DB_RECOVER_FATAL
) &&

468 (
t
 = 
	`__txn_t
(
dbv
)) != 0)

469 
r
;

472 i((
t
 = 
	`__v_tu_
(
dbv
)) != 0)

473 
r
;

475 i(
p_check
)

476 
t
 = 
	`__v_db_p_ex
(
dbv
);

479 i(
	`LF_ISSET
(
DB_INIT_MPOOL
))

480 ()
	`__memp_t_cfig
(
dbv
, 
DB_MEMP_SUPPRESS_WRITE
, 0);

482 
r
: i(
t
 == 0)

483 
	`ENV_LEAVE
(
dbv
, 

);

492 
f
 = 
dbv
->
gfo
;

493 i(
f
 !
NULL
 && 
	`F_ISSET
(f, 
REGION_CREATE
)) {

494 
t
 = 
	`__db_nic
(
dbv
,et);

497 ()
	`__v_esh
(
dbv
, 
ig_ags
, 
p_check
);

498 ()
	`__v_move_v
(
dbv
);

499 ()
	`__v_esh
(
dbv
, 
ig_ags
, 0);

501 ()
	`__v_esh
(
dbv
, 
ig_ags
, 
p_check
);

504 i(
gi_covy
) {

512 i(
t
 =0 && (
t_t
 = 
	`__vg_xuock
(
dbv
)) != 0)

513 
t
 = 
t_t
;

514 i(
t
 != 0)

515 ()
	`__vg_uegi
(
dbv
, 1);

518  (
t
);

519 
	}
}

528 
	$__v_move
(
dbv
, 
db_home
, 
ags
)

529 
DB_ENV
 *
dbv
;

530 cڡ *
db_home
;

531 
u_t32_t
 
ags
;

533 
t
, 
t_t
;

535 #unde
OKFLAGS


536 
	#OKFLAGS
 \

537 (
DB_FORCE
 | 
DB_USE_ENVIRON
 | 
DB_USE_ENVIRON_ROOT
)

	)

540 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->move", 
ags
, 
OKFLAGS
)) != 0)

541  (
t
);

543 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->remove");

545 i((
t
 = 
	`__v_cfig
(
dbv
, 
db_home
, 
ags
, 0)) != 0)

546  (
t
);

552 i((
t
 = 
	`__v_tu_off
(
dbv
, 
ags
)!0 && !
	`LF_ISSET
(
DB_FORCE
))

553  (
t
);

555 
t
 = 
	`__v_move_v
(
dbv
);

557 i((
t_t
 = 
	`__v_o
(
dbv
, 0)!0 && 
t
 == 0)

558 
t
 = 
t_t
;

560  (
t
);

561 
	}
}

570 
	$__v_cfig
(
dbv
, 
db_home
, 
ags
, 
mode
)

571 
DB_ENV
 *
dbv
;

572 cڡ *
db_home
;

573 
u_t32_t
 
ags
;

574 
mode
;

576 
t
;

577 *
home
, 
home_buf
[
DB_MAXPATHLEN
];

587 
home
 = (*)
db_home
;

588 i(
home
 =
NULL
 && (
	`LF_ISSET
(
DB_USE_ENVIRON
) ||

589 (
	`LF_ISSET
(
DB_USE_ENVIRON_ROOT
&& 
	`__os_io
()))) {

590 
home
 = 
home_buf
;

591 i((
t
 = 
	`__os_gv
(

592 
dbv
, "DB_HOME", &
home
, (
home_buf
))) != 0)

593  (
t
);

598 i(
home
 !
NULL
 &&

599 (
t
 = 
	`__os_rdup
(
dbv
, 
home
, &dbv->
db_home
)) != 0)

600  (
t
);

603 
dbv
->
db_mode
 = 
mode
 =0 ? 
	`__db_omode
("rw-rw----") : mode;

606 i((
t
 = 
	`__v_ad_db_cfig
(
dbv
)) != 0)

607  (
t
);

613 i(
dbv
->
db_tmp_d
 =
NULL
 && (
t
 = 
	`__os_tmpd
(dbv, 
ags
)) != 0)

614  (
t
);

617 
	}
}

626 
	$__v_o_
(
dbv
, 
ags
)

627 
DB_ENV
 *
dbv
;

628 
u_t32_t
 
ags
;

630 
DB_THREAD_INFO
 *

;

631 
p_check
, 
t
, 
t_t
;

633 
t
 = 0;

635 i(
	`PANIC_ISSET
(
dbv
)) {

637 ()
	`__fe_hd_nup
(
dbv
);

640 i(
	`IS_ENV_REPLICATED
(
dbv
))

641 ()
	`__pmgr_o
(
dbv
);

643 
	`PANIC_CHECK
(
dbv
);

646 
	`ENV_ENTER
(
dbv
, 

);

651 i(
ags
 != 0 &&

652 (
t_t
 = 
	`__db_
(
dbv
, "DB_ENV->o", 0)!0 && 
t
 == 0)

653 
t
 = 
t_t
;

655 
p_check
 = 
	`IS_ENV_REPLICATED
(
dbv
) ? 1 : 0;

656 i(
p_check
) {

657 #ifde
HAVE_REPLICATION_THREADS


664 i((
t_t
 = 
	`__pmgr_o
(
dbv
)!0 && 
t
 == 0)

665 
t
 = 
t_t
;

667 i((
t_t
 = 
	`__v_p_r
(
dbv
, 0)!0 && 
t
 == 0)

668 
t
 = 
t_t
;

671 i((
t_t
 = 
	`__v_o
(
dbv
, 
p_check
)!0 && 
t
 == 0)

672 
t
 = 
t_t
;

675  (
t
);

676 
	}
}

685 
	$__v_o
(
dbv
, 
p_check
)

686 
DB_ENV
 *
dbv
;

687 
p_check
;

689 
t
, 
t_t
;

690 **
p
;

692 
t
 = 0;

698 i(
	`TXN_ON
(
dbv
&& (
t_t
 = 
	`__txn_eo
(dbv)!0 && 
t
 == 0)

699 
t
 = 
t_t
;

701 #ifde
HAVE_REPLICATION


702 i((
t_t
 = 
	`__p_v_o
(
dbv
)!0 && 
t
 == 0)

703 
t
 = 
t_t
;

710 i((
t_t
 = 
	`__v_esh
(
dbv
, 0, 
p_check
)!0 && 
t
 == 0)

711 
t
 = 
t_t
;

713 #ifde
HAVE_CRYPTO


718 i((
t_t
 = 
	`__yo_v_o
(
dbv
)!0 && 
t
 == 0)

719 
t
 = 
t_t
;

723 i(
dbv
->
giry
 !
NULL
) {

724 ()
	`__vg_uegi
(
dbv
, 0);

725 
dbv
->
giry
 = 
NULL
;

729 i((
t_t
 = 
	`__fe_hd_nup
(
dbv
)!0 && 
t
 == 0)

730 
t
 = 
t_t
;

733 i(
dbv
->
db_log_d
 !
NULL
)

734 
	`__os_
(
dbv
, dbv->
db_log_d
);

735 
dbv
->
db_log_d
 = 
NULL
;

736 i(
dbv
->
db_tmp_d
 !
NULL
)

737 
	`__os_
(
dbv
, dbv->
db_tmp_d
);

738 
dbv
->
db_tmp_d
 = 
NULL
;

739 i(
dbv
->
db_da_d
 !
NULL
) {

740 
p
 = 
dbv
->
db_da_d
; *!
NULL
; ++p)

741 
	`__os_
(
dbv
, *
p
);

742 
	`__os_
(
dbv
, dbv->
db_da_d
);

743 
dbv
->
db_da_d
 = 
NULL
;

744 
dbv
->
da_xt
 = 0;

746 i(
dbv
->
db_home
 !
NULL
) {

747 
	`__os_
(
dbv
, dbv->
db_home
);

748 
dbv
->
db_home
 = 
NULL
;

752 
	`__db_v_deroy
(
dbv
);

754  (
t
);

755 
	}
}

762 
	$__v_esh
(
dbv
, 
ig_ags
, 
p_check
)

763 
DB_ENV
 *
dbv
;

764 
u_t32_t
 
ig_ags
;

765 
p_check
;

767 
DB
 *
ldbp
;

768 
DB_THREAD_INFO
 *

;

769 
t
, 
t_t
;

771 
t
 = 0;

787 i(
	`TXN_ON
(
dbv
) &&

788 (
t_t
 = 
	`__txn_v_esh
(
dbv
)!0 && 
t
 == 0)

789 
t
 = 
t_t
;

791 i(
	`LOGGING_ON
(
dbv
) &&

792 (
t_t
 = 
	`__log_v_esh
(
dbv
)!0 && 
t
 == 0)

793 
t
 = 
t_t
;

799 i(
	`LOCKING_ON
(
dbv
)) {

800 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
) &&

801 
dbv
->
v_ef
 !
NULL
 && (
t_t
 = 
	`__lock_id_
(dbenv,

802 (
DB_LOCKER
 *)
dbv
->
v_ef
)!0 && 
t
 == 0)

803 
t
 = 
t_t
;

804 
dbv
->
v_ef
 = 
NULL
;

806 i((
t_t
 = 
	`__lock_v_esh
(
dbv
)!0 && 
t
 == 0)

807 
t
 = 
t_t
;

811 i((
t_t
 = 
	`__mux_
(
dbv
, &dbv->
mtx_v
)!0 && 
t
 == 0)

812 
t
 = 
t_t
;

823 i(
dbv
->
db_f
 != 0) {

824 
	`__db_rx
(
dbv
,

826 
	`TAILQ_FOREACH
(
ldbp
, &
dbv
->
dbli
, 
dblilks
)

827 
	`__db_rx
(
dbv
, "Open database handle: %s%s%s",

828 
ldbp
->
ame
 =
NULL
 ? "unnamed" :dbp->fname,

829 
ldbp
->
dme
 =
NULL
 ? "" : "/",

830 
ldbp
->
dme
 =
NULL
 ? "" :dbp->dname);

831 i(
t
 == 0)

832 
t
 = 
EINVAL
;

834 
	`TAILQ_INIT
(&
dbv
->
dbli
);

835 i((
t_t
 = 
	`__mux_
(
dbv
, &dbv->
mtx_dbli
)!0 && 
t
 == 0)

836 
t
 = 
t_t
;

837 i((
t_t
 = 
	`__mux_
(
dbv
, &dbv->
mtx_mt
)!0 && 
t
 == 0)

838 
t
 = 
t_t
;

840 i(
dbv
->
mt
 !
NULL
) {

841 
	`__os_
(
dbv
, dbv->
mt
);

842 
dbv
->
mt
 = 
NULL
;

845 i(
	`MPOOL_ON
(
dbv
)) {

854 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
) &&

855 (
t_t
 = 
	`__memp_sync_t
(
dbv
, 
NULL
, 0,

856 
DB_SYNC_CACHE
 | 
DB_SYNC_SUPPRESS_WRITE
, 
NULL
, NULL)) != 0 &&

857 
t
 == 0)

858 
t
 = 
t_t
;

860 i((
t_t
 = 
	`__memp_v_esh
(
dbv
)!0 && 
t
 == 0)

861 
t
 = 
t_t
;

875 i(
p_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

876 
t
 = 
t_t
;

883 i(
	`REP_ON
(
dbv
) &&

884 (
t_t
 = 
	`__p_v_esh
(
dbv
)!0 && 
t
 == 0)

885 
t
 = 
t_t
;

887 #ifde
HAVE_CRYPTO


892 i((
t_t
 = 
	`__yo_v_esh
(
dbv
)!0 && 
t
 == 0)

893 
t
 = 
t_t
;

900 i(
dbv
->
thr_hashb
 !
NULL
 &&

901 (
t_t
 = 
	`__v_t_e
(
dbv
, &

, 
THREAD_OUT
)!0 && 
t
 == 0)

902 
t
 = 
t_t
;

929 i((
t_t
 = 
	`__v_f_deemt
(
dbv
)!0 && 
t
 == 0)

930 
t
 = 
t_t
;

932 #ifde
HAVE_MUTEX_SUPPORT


933 i(
	`MUTEX_ON
(
dbv
) &&

934 (
t_t
 = 
	`__mux_v_esh
(
dbv
)!0 && 
t
 == 0)

935 
t
 = 
t_t
;

938 i(
dbv
->
gfo
 !
NULL
 && (
t_t
 = 
	`__v_dach
(

939 
dbv
, 
	`F_ISSET
(dbv, 
DB_ENV_PRIVATE
? 1 : 0)!0 && 
t
 == 0) {

940 
t
 = 
t_t
;

949 i(
dbv
->
mux_iq
 !
NULL
) {

950 
	`__os_
(
dbv
, dbv->
mux_iq
);

951 
dbv
->
mux_iq
 = 
NULL
;

954 i(
dbv
->
cov_db
 !
NULL
) {

955 
	`__os_
(
dbv
, dbv->
cov_db
);

956 
dbv
->
cov_db
 = 
NULL
;

957 
dbv
->
cov_db_size
 = 0;

960 
dbv
->
ags
 = 
ig_ags
;

962  (
t
);

963 
	}
}

971 
	$__fe_hd_nup
(
dbv
)

972 
DB_ENV
 *
dbv
;

974 
DB_FH
 *
fhp
;

976 i(
	`TAILQ_FIRST
(&
dbv
->
fdli
=
NULL
)

979 
	`__db_rx
(
dbv
, "File handles still opentnvironment close");

980 (
fhp
 = 
	`TAILQ_FIRST
(&
dbv
->
fdli
)!
NULL
) {

981 
	`__db_rx
(
dbv
, "Ofhd: %s", 
fhp
->
me
);

982 ()
	`__os_ohd
(
dbv
, 
fhp
);

984  (
EINVAL
);

985 
	}
}

994 
	$__v_g_ݒ_ags
(
dbv
, 
ag
)

995 
DB_ENV
 *
dbv
;

996 
u_t32_t
 *
ag
;

998 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, "DB_ENV->get_open_flags");

1000 *
ag
 = 
dbv
->
ݒ_ags
;

1002 
	}
}

	@../env/env_recover.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/f.h
"

14 
	~"dbc/b.h
"

15 
	~"dbc/hash.h
"

16 
	~"dbc/log.h
"

17 
	~"dbc/mp.h
"

18 
	~"dbc/qam.h
"

19 
	~"dbc/txn.h
"

21 #ide
lt


22 cڡ 
	gcyright
[] =

26 
__db_log_cru
 
__P
((
DB_ENV
 *, 
DB_LSN
 *));

27 
__v__c_42
 
__P
((
DB_ENV
 *));

28 
__v__c_43
 
__P
((
DB_ENV
 *));

29 
__v__c_46
 
__P
((
DB_ENV
 *));

30 
__log_
 
__P
((
DB_ENV
 *, 
DB_LOGC
 *, 
t32_t
 *, 
DB_LSN
 *));

32 #ide
HAVE_BREW


33 
__l_diff
 
__P
((
DB_LSN
 *, DB_LSN *, DB_LSN *, 
u_t32_t
, ));

46 
	$__db_ec
(
dbv
, 
max_l
, 
un
, 
upde
, 
ags
)

47 
DB_ENV
 *
dbv
;

48 
DB_LSN
 *
max_l
, *
un
;

49 
upde
;

50 
u_t32_t
 
ags
;

52 
DBT
 
da
;

53 
DB_LOGC
 *
logc
;

54 
DB_LSN
 
ckp_l
, 
f_l
, 
ϡ_l
, 
lowl
, 
l
, 
_l
, 

;

55 
DB_TXNHEAD
 *
txnfo
;

56 
DB_TXNREGION
 *
gi
;

57 
REGENV
 *
nv
;

58 
REGINFO
 *
f
;

59 
__txn_ckp_gs
 *
ckp_gs
;

60 
time_t
 
now
, 
ow
;

61 
nfes
;

62 
u_t32_t
 
hi_txn
, 
log_size
, 
txnid
;

63 
t32_t
 
low
;

64 
have_c
, 
ogss
, 
t
, 
t_t
;

65 *
p
, *
ss
;

66 
t1
[
CTIME_BUFLEN
], 
t2
[CTIME_BUFLEN], 
time_buf
[CTIME_BUFLEN];

68 
	`COMPQUIET
(
nfes
, ()0.001);

70 
logc
 = 
NULL
;

71 
ckp_gs
 = 
NULL
;

72 
hi_txn
 = 
TXN_MAXIMUM
;

73 
txnfo
 = 
NULL
;

74 
ss
 = "initial";

75 
	`ZERO_LSN
(
l
);

82 
log_size
 = ((
LOG
 *)
dbv
->
lg_hd
->
gfo
.
imy
)->log_size;

87 i(
upde
 && 
	`REP_ON
(
dbv
)) {

88 
f
 = 
dbv
->
gfo
;

89 
nv
 = 
f
->
imy
;

90 ()
	`time
(&
nv
->
p_timeamp
);

94 
	`F_SET
(
dbv
->
lg_hd
, 
DBLOG_RECOVER
);

95 
gi
 = 
dbv
->
tx_hd
->
gfo
.
imy
;

96 
	`F_SET
(
gi
, 
TXN_IN_RECOVERY
);

99 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

100 
r
;

106 
	`ZERO_LSN
(
lowl
);

107 i(
max_l
 !
NULL
) {

108 i((
t
 = 
	`__log_backup
(
dbv
, 
logc
, 
max_l
, &
lowl
,

109 
CKPLSN_CMP
)) != 0)

110 
r
;

111 } i(
dbv
->
tx_timeamp
 != 0) {

112 i((
t
 = 
	`__log_
(
dbv
, 
logc
, &
low
, &
lowl
)) != 0)

113 
r
;

114 i((
t32_t
)
dbv
->
tx_timeamp
 < 
low
) {

115 
t1
[(t1) - 1] = '\0';

116 ()
	`y
(
t1
, 
	`__db_ime
(

117 &
dbv
->
tx_timeamp
, 
time_buf
), (
t1
) - 1);

118 i((
p
 = 
	`rchr
(
t1
, '\n')!
NULL
)

119 *
p
 = '\0';

121 
t2
[(t2) - 1] = '\0';

122 
ow
 = (
time_t
)
low
;

123 ()
	`y
(
t2
, 
	`__db_ime
(

124 &
ow
, 
time_buf
), (
t2
) - 1);

125 i((
p
 = 
	`rchr
(
t2
, '\n')!
NULL
)

126 *
p
 = '\0';

128 
	`__db_rx
(
dbv
,

130 
t1
, 
t2
);

131 
t
 = 
EINVAL
;

132 
r
;

205 #ifde
UMRW


206 
	`ZERO_LSN
(
ϡ_l
);

208 
	`memt
(&
da
, 0, (data));

209 i((
t
 = 
	`__logc_g
(
logc
, &
ϡ_l
, &
da
, 
DB_LAST
)) != 0) {

210 i(
t
 =
DB_NOTFOUND
)

211 
t
 = 0;

213 
	`__db_rx
(
dbv
, "Lastogecordot found");

214 
r
;

219 
	`memy
(&
txnid
,

220 (
u_t8_t
 *)
da
.d+ (
u_t32_t
), (
txnid
));

222 i(
txnid
 != 0)

224 } (
t
 = 
	`__logc_g
(
logc
, &
l
, &
da
, 
DB_PREV
)) == 0);

232 i(
t
 =
DB_NOTFOUND
)

233 
t
 = 0;

234 i(
t
 != 0)

235 
r
;

237 
hi_txn
 = 
txnid
;

254 i((
t
 = 
	`__logc_g
(
logc
, &
ckp_l
, &
da
, 
DB_FIRST
)) != 0) {

255 i(
t
 =
DB_NOTFOUND
)

256 
t
 = 0;

258 
	`__db_rx
(
dbv
, "Firstogecordot found");

259 
r
;

261 
f_l
 = 
ckp_l
;

262 
have_c
 = 1;

264 i(!
	`LF_ISSET
(
DB_RECOVER_FATAL
)) {

265 i((
t
 = 
	`__txn_gckp
(
dbv
, &
ckp_l
)) == 0 &&

266 (
t
 = 
	`__logc_g
(
logc
, &
ckp_l
, &
da
, 
DB_SET
)) == 0) {

268 i((
t
 = 
	`__txn_ckp_ad
(
dbv
,

269 
da
.da, &
ckp_gs
)) != 0) {

270 
	`__db_rx
(
dbv
,

272 (
u_lg
)
ckp_l
.
fe
,

273 (
u_lg
)
ckp_l
.
offt
);

274 
r
;

276 
f_l
 = 
ckp_gs
->
ckp_l
;

277 
	`__os_
(
dbv
, 
ckp_gs
);

278 
have_c
 = 0;

299 i((
dbv
->
tx_timeamp
 !0 || 
max_l
 !
NULL
) &&

300 
	`LOG_COMPARE
(&
lowl
, &
f_l
) < 0) {

301 
	`DB_ASSERT
(
dbv
, 
have_c
 == 0);

302 
f_l
 = 
lowl
;

307 i(!
have_c
 &&

308 (
t
 = 
	`__logc_g
(
logc
, &
f_l
, &
da
, 
DB_SET
)) != 0) {

309 
	`__db_rx
(
dbv
, "Checkpoint LSNecord [%ld][%ld]ot found",

310 (
u_lg
)
f_l
.
fe
, (u_lg)f_l.
offt
);

311 
r
;

314 #ide
HAVE_BREW


315 i(
dbv
->
db_edback
 !
NULL
) {

316 i(
ϡ_l
.
fe
 =
f_l
.file)

317 
nfes
 = ()

318 (
ϡ_l
.
offt
 - 
f_l
.offt/ 
log_size
;

320 
nfes
 = ()(
ϡ_l
.
fe
 - 
f_l
.file) +

321 ()((
log_size
 - 
f_l
.
offt
) +

322 
ϡ_l
.
offt
/ 
log_size
;

324 i(
nfes
 < 0.001)

325 
nfes
 = 0.001;

330 
t
 = 0;

331 i(
hi_txn
 != 0) do {

333 
	`memy
(&
txnid
,

334 (
u_t8_t
 *)
da
.d+ (
u_t32_t
), (
txnid
));

336 i(
txnid
 != 0)

338 } (
t
 = 
	`__logc_g
(
logc
, &
l
, &
da
, 
DB_NEXT
)) == 0);

344 i(
t
 =
DB_NOTFOUND
) {

345 i(
	`LOG_COMPARE
(&
l
, &
ϡ_l
) != 0)

346 
t
 = 
	`__db_log_cru
(
dbv
, &
l
);

348 
t
 = 0;

352 i(
t
 != 0 ||

353 (
t
 = 
	`__logc_g
(
logc
, &
f_l
, &
da
, 
DB_SET
)) != 0)

354 
r
;

357 i((
t
 =

358 
	`__db_txi_
(
dbv
, 
txnid
, 
hi_txn
, 
max_l
, &
txnfo
)) != 0)

359 
r
;

365 i((
t
 = 
	`__v_ݒfes
(
dbv
, 
logc
,

366 
txnfo
, &
da
, &
f_l
, &
ϡ_l
, 
nfes
, 1)) != 0)

367 
r
;

370 i(
hi_txn
 =0 && 
max_l
 =
NULL
)

371 
de
;

380 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_RECOVERY
))

381 
	`__db_msg
(
dbv
, "Recovery starting from [%lu][%lu]",

382 (
u_lg
)
f_l
.
fe
, (u_lg)f_l.
offt
);

384 
ss
 = "backward";

385 
t
 = 
	`__logc_g
(
logc
, &
l
, &
da
, 
DB_LAST
);

386 
t
 =0 && 
	`LOG_COMPARE
(&
l
, &
f_l
) >= 0;

387 
t
 = 
	`__logc_g
(
logc
, &
l
, &
da
, 
DB_PREV
)) {

388 #ifde
HAVE_BREW


389 
	`COMPQUIET
(
ogss
, 0);

391 i(
dbv
->
db_edback
 !
NULL
) {

392 
ogss
 = 34 + ()(33 * (
	`__l_diff
(&
f_l
,

393 &
ϡ_l
, &
l
, 
log_size
, 0/ 
nfes
));

394 
dbv
->
	`db_edback
(dbv, 
DB_RECOVER
, 
ogss
);

397 

 = 
l
;

398 
t
 = 
	`__db_dich
(
dbv
, dbv->
cov_db
,

399 
dbv
->
cov_db_size
, &
da
, &

,

400 
DB_TXN_BACKWARD_ROLL
, 
txnfo
);

401 i(
t
 != 0) {

402 i(
t
 !
DB_TXN_CKP
)

403 
msgr
;

405 
t
 = 0;

408 i(
t
 =
DB_NOTFOUND
) {

409 i(
	`LOG_COMPARE
(&
l
, &
f_l
) > 0)

410 
t
 = 
	`__db_log_cru
(
dbv
, &
l
);

412 
t
 = 0;

414 i(
t
 != 0)

415 
r
;

427 
ss
 = "forward";

428 
_l
 = 
ϡ_l
;

429 i(
max_l
 !
NULL
 || 
dbv
->
tx_timeamp
 != 0)

430 
_l
 = ((
DB_TXNHEAD
 *)
txnfo
)->
maxl
;

432 
t
 = 
	`__logc_g
(
logc
, &
l
, &
da
, 
DB_NEXT
);

433 
t
 =0; = 
	`__logc_g
(
logc
, &
l
, &
da
, 
DB_NEXT
)) {

434 #ide
HAVE_BREW


435 i(
dbv
->
db_edback
 !
NULL
) {

436 
ogss
 = 67 + ()(33 * (
	`__l_diff
(&
f_l
,

437 &
ϡ_l
, &
l
, 
log_size
, 1/ 
nfes
));

438 
dbv
->
	`db_edback
(dbv, 
DB_RECOVER
, 
ogss
);

441 

 = 
l
;

442 
t
 = 
	`__db_dich
(
dbv
, dbv->
cov_db
,

443 
dbv
->
cov_db_size
, &
da
, &

,

444 
DB_TXN_FORWARD_ROLL
, 
txnfo
);

445 i(
t
 != 0) {

446 i(
t
 !
DB_TXN_CKP
)

447 
msgr
;

449 
t
 = 0;

456 i(
	`LOG_COMPARE
(&
l
, &
_l
) >= 0)

460 i(
t
 =
DB_NOTFOUND
)

461 
t
 = 
	`__db_log_cru
(
dbv
, &
l
);

462 i(
t
 != 0)

463 
r
;

465 #ide
HAVE_FTRUNCATE


470 i((
t
 = 
	`__db_do_the_limbo
(
dbv
, 
NULL
, NULL, 
txnfo
,

471 
dbv
->
tx_timeamp
 !0 ? 
LIMBO_TIMESTAMP
 : 
LIMBO_RECOVER
)) != 0)

472 
r
;

475 i(
max_l
 =
NULL
)

476 
gi
->
ϡ_txnid
 = ((
DB_TXNHEAD
 *)
txnfo
)->
maxid
;

478 i(
dbv
->
tx_timeamp
 != 0) {

480 i(
logc
 !
NULL
) {

481 i((
t
 = 
	`__logc_o
(
logc
)) != 0)

482 
r
;

483 
logc
 = 
NULL
;

490 i((
t
 = 
	`__memp_sync_t
(
dbv
, 
NULL
, 0,

491 
DB_SYNC_CACHE
 | 
DB_SYNC_SUPPRESS_WRITE
, 
NULL
, NULL)) != 0)

492 
r
;

493 
gi
->
ϡ_ckp
 = ((
DB_TXNHEAD
 *)
txnfo
)->
ck
;

494 i((
t
 = 
	`__log_vun
(
dbv
,

495 &((
DB_TXNHEAD
 *)
txnfo
)->
maxl
,

496 &((
DB_TXNHEAD
 *)
txnfo
)->
ck
, 
un
)) != 0)

497 
r
;

499 #ide
HAVE_FTRUNCATE


507 i((
t
 = 
	`__db_do_the_limbo
(
dbv
,

508 
NULL
, NULL, 
txnfo
, 
LIMBO_COMPENSATE
)) != 0)

509 
r
;

513 
de
:

515 i(!
	`IS_REP_CLIENT
(
dbv
&& (
t
 = 
	`__txn_checkpot
(dbenv, 0, 0,

516 
DB_CKP_INTERNAL
 | 
DB_FORCE
)) != 0) {

523 i(
max_l
 =
NULL
 && 
t
 =
ENOSPC
)

524 
t
 = 0;

526 
r
;

529 i(
gi
->

.
_ees
 == 0) {

531 i((
t
 = 
	`__dbg_o_fes
(
dbv
, 0)) != 0)

532 
r
;

534 i((
t
 = 
	`__dbg_mk_ed
(
dbv
)) != 0)

535 
r
;

536 
	`F_SET
(
dbv
->
lg_hd
, 
DBLOG_OPENFILES
);

539 i(
max_l
 !
NULL
) {

540 i(!
	`IS_ZERO_LSN
(((
DB_TXNHEAD
 *)
txnfo
)->
ck
))

541 
gi
->
ϡ_ckp
 = ((
DB_TXNHEAD
 *)
txnfo
)->
ck
;

542 i((
t
 =

543 
	`__txn_fdϡckp
(
dbv
, &
gi
->
ϡ_ckp
, 
max_l
)) != 0)

544 
r
;

547 i(
logc
 !
NULL
 && (
t
 = 
	`__logc_o
(logc)) != 0)

548 
r
;

549 
logc
 = 
NULL
;

550 i((
t
 = 
	`__log_vun
(
dbv
,

551 
max_l
, &((
DB_TXNHEAD
 *)
txnfo
)->
ck
, 
un
)) != 0)

552 
r
;

560 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

561 
r
;

562 i((
t
 =

563 
	`__logc_g
(
logc
, &
f_l
, &
da
, 
DB_FIRST
)) != 0) {

564 i(
t
 =
DB_NOTFOUND
)

565 
t
 = 0;

567 
	`__db_rx
(
dbv
, "Firstogecordot found");

568 
r
;

570 i((
t
 = 
	`__txn_gckp
(
dbv
, &
f_l
)) == 0 &&

571 (
t
 = 
	`__logc_g
(
logc
, &
f_l
, &
da
, 
DB_SET
)) == 0) {

573 i((
t
 = 
	`__txn_ckp_ad
(
dbv
,

574 
da
.da, &
ckp_gs
)) != 0) {

575 
	`__db_rx
(
dbv
,

577 (
u_lg
)
f_l
.
fe
,

578 (
u_lg
)
f_l
.
offt
);

579 
r
;

581 
f_l
 = 
ckp_gs
->
ckp_l
;

582 
	`__os_
(
dbv
, 
ckp_gs
);

584 i((
t
 = 
	`__logc_g
(
logc
, &
f_l
, &
da
, 
DB_SET
)) != 0)

585 
r
;

586 i((
t
 = 
	`__v_ݒfes
(
dbv
, 
logc
,

587 
txnfo
, &
da
, &
f_l
, 
max_l
, 
nfes
, 1)) != 0)

588 
r
;

589 } i(
gi
->

.
_ees
 == 0) {

594 i((
t
 = 
	`__txn_t
(
dbv
)) != 0)

595 
r
;

597 i((
t
 = 
	`__txn_cye_id
(
dbv
)) != 0)

598 
r
;

606 i(
max_l
 =
NULL
 && 
dbv
->
tx_timeamp
 == 0) {

608 i(
logc
 !
NULL
 && (
t
 = 
	`__logc_o
(logc)) != 0)

609 
r
;

610 
logc
 = 
NULL
;

613 i((
t
 =

614 
	`__log_cut_l
(
dbv
, &
ϡ_l
, 
NULL
, NULL)) != 0)

615 
r
;

616 i((
t
 = 
	`__log_vun
(
dbv
,

617 &
ϡ_l
, &
gi
->
ϡ_ckp
, 
NULL
)) != 0)

618 
r
;

621 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_RECOVERY
)) {

622 ()
	`time
(&
now
);

623 
	`__db_msg
(
dbv
,

624 "Recovy com %.24s", 
	`__db_ime
(&
now
, 
time_buf
));

625 
	`__db_msg
(
dbv
, "%s %lx %s [%lu][%lu]",

627 (
u_lg
)(
txnfo
 =
NULL
 ?

628 
TXN_MINIMUM
 : ((
DB_TXNHEAD
 *)
txnfo
)->
maxid
),

630 (
u_lg
)
gi
->
ϡ_ckp
.
fe
,

631 (
u_lg
)
gi
->
ϡ_ckp
.
offt
);

635 
msgr
: 
	`__db_rx
(
dbv
,

637 (
u_lg
)
l
.
fe
, (u_lg.
offt
, 
ss
);

640 
r
: i(
logc
 !
NULL
 && (
t_t
 = 
	`__logc_o
ogc)!0 && 
t
 == 0)

641 
t
 = 
t_t
;

643 i(
txnfo
 !
NULL
)

644 
	`__db_txi_d
(
dbv
, 
txnfo
);

646 
dbv
->
tx_timeamp
 = 0;

648 
	`F_CLR
(
dbv
->
lg_hd
, 
DBLOG_RECOVER
);

649 
	`F_CLR
(
gi
, 
TXN_IN_RECOVERY
);

651  (
t
);

652 
	}
}

654 #ide
HAVE_BREW


662 
	$__l_diff
(
low
, 
high
, 
cut
, 
max
, 
is_fwd
)

663 
DB_LSN
 *
low
, *
high
, *
cut
;

664 
u_t32_t
 
max
;

665 
is_fwd
;

667 
nf
;

676 i(
is_fwd
) {

677 i(
cut
->
fe
 =
low
->file)

678 
nf
 = ()(
cut
->
offt
 - 
low
->offt/ 
max
;

679 i(
cut
->
offt
 < 
low
->offset)

680 
nf
 = ()((
cut
->
fe
 - 
low
->file) - 1) +

681 ()((
max
 - 
low
->
offt
+ 
cut
->offset) /

682 
max
;

684 
nf
 = ()(
cut
->
fe
 - 
low
->file) +

685 ()(
cut
->
offt
 - 
low
->offt/ 
max
;

687 i(
cut
->
fe
 =
high
->file)

688 
nf
 = ()(
high
->
offt
 - 
cut
->offt/ 
max
;

689 i(
cut
->
offt
 > 
high
->offset)

690 
nf
 = ()((
high
->
fe
 - 
cut
->file) - 1) +

692 ((
max
 - 
cut
->
offt
+ 
high
->offset) / max;

694 
nf
 = ()(
high
->
fe
 - 
cut
->file) +

695 ()(
high
->
offt
 - 
cut
->offt/ 
max
;

697  (
nf
);

698 
	}
}

714 
	$__log_backup
(
dbv
, 
logc
, 
max_l
, 
t_l
, 
cmp
)

715 
DB_ENV
 *
dbv
;

716 
DB_LOGC
 *
logc
;

717 
DB_LSN
 *
max_l
, *
t_l
;

718 
u_t32_t
 
cmp
;

720 
DB_LSN
 
cmp_l
, 
l
;

721 
DBT
 
da
;

722 
__txn_ckp_gs
 *
ckp_gs
;

723 
lcmp
, 
t
;

725 
	`memt
(&
da
, 0, (data));

726 
ckp_gs
 = 
NULL
;

728 i(
cmp
 !
CKPLSN_CMP
 && cm!
LASTCKP_CMP
)

729  (
EINVAL
);

731 i((
t
 = 
	`__txn_gckp
(
dbv
, &
l
)) != 0)

732 
r
;

737 (
t
 = 
	`__logc_g
(
logc
, &
l
, &
da
, 
DB_SET
)) == 0) {

738 i((
t
 = 
	`__txn_ckp_ad
(
dbv
, 
da
.da, &
ckp_gs
)) != 0)

739  (
t
);

740 i(
cmp
 =
CKPLSN_CMP
) {

746 
cmp_l
 = 
ckp_gs
->
ckp_l
;

747 
lcmp
 = (
	`LOG_COMPARE
(&
cmp_l
, 
max_l
) <= 0);

754 
cmp_l
 = 
l
;

755 
lcmp
 = (
	`LOG_COMPARE
(&
cmp_l
, 
max_l
) < 0);

757 i(
lcmp
) {

758 *
t_l
 = 
cmp_l
;

762 
l
 = 
ckp_gs
->
ϡ_ckp
;

767 i(
	`IS_ZERO_LSN
(
l
)) {

768 
t
 = 
DB_NOTFOUND
;

771 
	`__os_
(
dbv
, 
ckp_gs
);

772 
ckp_gs
 = 
NULL
;

775 i(
ckp_gs
 !
NULL
)

776 
	`__os_
(
dbv
, 
ckp_gs
);

782 
r
: i(
	`IS_ZERO_LSN
(*
t_l
&& 
cmp
 =
CKPLSN_CMP
 &&

783 (
t
 =0 || =
DB_NOTFOUND
))

784 
t
 = 
	`__logc_g
(
logc
, 
t_l
, &
da
, 
DB_FIRST
);

785  (
t
);

786 
	}
}

796 
	$__log_
(
dbv
, 
logc
, 
lowtime
, 
lowl
)

797 
DB_ENV
 *
dbv
;

798 
DB_LOGC
 *
logc
;

799 
t32_t
 *
lowtime
;

800 
DB_LSN
 *
lowl
;

802 
DB_LSN
 
f_l
, 
l
;

803 
DBT
 
da
;

804 
__txn_ckp_gs
 *
ckrgs
;

805 
u_t32_t
 
y
;

806 
cmp
, 
t
;

808 
	`memt
(&
da
, 0, (data));

814 
t
 = 
	`__logc_g
(
logc
, &
f_l
, &
da
, 
DB_FIRST
);

815 
t
 =0; = 
	`__logc_g
(
logc
, &
l
, &
da
, 
DB_NEXT
)) {

816 
	`memy
(&
y
, 
da
.data, (rectype));

817 i(
y
 !
DB___txn_ckp
)

819 i((
t
 = 
	`__txn_ckp_ad
(
dbv
, 
da
.da, &
ckrgs
)) == 0) {

820 
cmp
 = 
	`LOG_COMPARE
(&
ckrgs
->
ckp_l
, &
f_l
);

821 *
lowl
 = 
ckrgs
->
ckp_l
;

822 *
lowtime
 = 
ckrgs
->
timeamp
;

824 
	`__os_
(
dbv
, 
ckrgs
);

825 i(
cmp
 >= 0)

830  (
t
);

831 
	}
}

850 
	$__v_ݒfes
(
dbv
, 
logc
, 
txnfo
,

851 
da
, 
ݒ_l
, 
ϡ_l
, 
nfes
, 
_covy
)

852 
DB_ENV
 *
dbv
;

853 
DB_LOGC
 *
logc
;

854 *
txnfo
;

855 
DBT
 *
da
;

856 
DB_LSN
 *
ݒ_l
, *
ϡ_l
;

857 
_covy
;

858 
nfes
;

860 
DB_LSN
 
l
, 

;

861 
u_t32_t
 
log_size
;

862 
ogss
, 
t
;

869 
log_size
 = ((
LOG
 *)
dbv
->
lg_hd
->
gfo
.
imy
)->log_size;

871 
l
 = *
ݒ_l
;

873 #ifde
HAVE_BREW


874 
	`COMPQUIET
(
nfes
, ()0.001);

875 
	`COMPQUIET
(
ogss
, 0);

877 i(
_covy
 && 
dbv
->
db_edback
 !
NULL
) {

878 
	`DB_ASSERT
(
dbv
, 
ϡ_l
 !
NULL
);

879 
ogss
 = ()(33 * (
	`__l_diff
(
ݒ_l
,

880 
ϡ_l
, &
l
, 
log_size
, 1/ 
nfes
));

881 
dbv
->
	`db_edback
(dbv, 
DB_RECOVER
, 
ogss
);

884 

 = 
l
;

885 
t
 = 
	`__db_dich
(
dbv
,

886 
dbv
->
cov_db
, dbv->
cov_db_size
, 
da
, &

,

887 
_covy
 ? 
DB_TXN_OPENFILES
 : 
DB_TXN_POPENFILES
,

888 
txnfo
);

889 i(
t
 !0 && !
DB_TXN_CKP
) {

890 
	`__db_rx
(
dbv
,

892 (
u_lg
)
l
.
fe
, (u_lg.
offt
);

895 i((
t
 = 
	`__logc_g
(
logc
, &
l
, 
da
, 
DB_NEXT
)) != 0) {

896 i(
t
 =
DB_NOTFOUND
) {

897 i(
ϡ_l
 !
NULL
 &&

898 
	`LOG_COMPARE
(&
l
, 
ϡ_l
) != 0)

899 
t
 = 
	`__db_log_cru
(
dbv
, &
l
);

901 
t
 = 0;

907  (
t
);

908 
	}
}

911 
	$__db_log_cru
(
dbv
, 
lp
)

912 
DB_ENV
 *
dbv
;

913 
DB_LSN
 *
lp
;

915 
	`__db_rx
(
dbv
, "Log file corruptt LSN: [%lu][%lu]",

916 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
);

917  (
EINVAL
);

918 
	}
}

926 
	$__v__c
(
dbv
, 
vsi
)

927 
DB_ENV
 *
dbv
;

928 
u_t32_t
 
vsi
;

930 
t
;

937 i((
t
 = 
	`__v__c_46
(
dbv
)) != 0)

938  (
t
);

939 
t
 = 0;

940 
vsi
) {

948 
DB_LOGVERSION_46
:

949 
DB_LOGVERSION_45
:

950 
DB_LOGVERSION_44
:

952 
DB_LOGVERSION_43
:

953 
t
 = 
	`__v__c_43
(
dbv
);

955 
DB_LOGVERSION_42
:

956 
t
 = 
	`__v__c_42
(
dbv
);

959 
	`__db_rx
(
dbv
, "Unknowvsi %lu", (
u_lg
)
vsi
);

960 
t
 = 
EINVAL
;

963  (
t
);

964 
	}
}

967 
	$__v__c_42
(
dbv
)

968 
DB_ENV
 *
dbv
;

970 
t
;

972 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

973 &
dbv
->
cov_db_size
, 
__db_lk_42_cov
,

974 
DB___db_lk_42
)) != 0)

975 
r
;

976 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

977 &
dbv
->
cov_db_size
, 
__db_pg_loc_42_cov
,

978 
DB___db_pg_loc_42
)) != 0)

979 
r
;

980 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

981 &
dbv
->
cov_db_size
, 
__db_pg__42_cov
,

982 
DB___db_pg__42
)) != 0)

983 
r
;

984 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

985 &
dbv
->
cov_db_size
, 
__db_pg_da_42_cov
,

986 
DB___db_pg_da_42
)) != 0)

987 
r
;

988 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

989 &
dbv
->
cov_db_size
, 
__ham_magroup_42_cov
,

990 
DB___ham_magroup_42
)) != 0)

991 
r
;

992 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

993 &
dbv
->
cov_db_size
, 
__ham_grouoc_42_cov
,

994 
DB___ham_grouoc_42
)) != 0)

995 
r
;

996 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

997 &
dbv
->
cov_db_size
, 
__txn_ckp_42_cov
,

998 
DB___txn_ckp_42
)) != 0)

999 
r
;

1000 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

1001 &
dbv
->
cov_db_size
, 
__txn_g_42_cov
,

1002 
DB___txn_g_42
)) != 0)

1003 
r
;

1004 
r
:

1005  (
t
);

1006 
	}
}

1009 
	$__v__c_43
(
dbv
)

1010 
DB_ENV
 *
dbv
;

1012 
t
;

1014 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

1015 &
dbv
->
cov_db_size
, 
__bam_lk_43_cov
,

1016 
DB___bam_lk_43
)) != 0)

1017 
r
;

1021 i((
t
 = 
	`__db_add_covy
(
dbv
, &dbv->
cov_db
,

1022 &
dbv
->
cov_db_size
, 
__txn_g_42_cov
,

1023 
DB___txn_g_42
)) != 0)

1024 
r
;

1025 
r
:

1026  (
t
);

1027 
	}
}

1034 
	$__v__c_46
(
dbv
)

1035 
DB_ENV
 *
dbv
;

1037 
t
;

1039 i((
t
 = 
	`__bam__cov
(
dbv
, &dbv->
cov_db
,

1040 &
dbv
->
cov_db_size
)) != 0)

1041 
r
;

1042 i((
t
 = 
	`__d__cov
(
dbv
, &dbv->
cov_db
,

1043 &
dbv
->
cov_db_size
)) != 0)

1044 
r
;

1045 i((
t
 = 
	`__db__cov
(
dbv
, &dbv->
cov_db
,

1046 &
dbv
->
cov_db_size
)) != 0)

1047 
r
;

1048 i((
t
 = 
	`__dbg__cov
(
dbv
, &dbv->
cov_db
,

1049 &
dbv
->
cov_db_size
)) != 0)

1050 
r
;

1051 i((
t
 = 
	`__f__cov
(
dbv
, &dbv->
cov_db
,

1052 &
dbv
->
cov_db_size
)) != 0)

1053 
r
;

1054 i((
t
 = 
	`__ham__cov
(
dbv
, &dbv->
cov_db
,

1055 &
dbv
->
cov_db_size
)) != 0)

1056 
r
;

1057 i((
t
 = 
	`__qam__cov
(
dbv
, &dbv->
cov_db
,

1058 &
dbv
->
cov_db_size
)) != 0)

1059 
r
;

1060 i((
t
 = 
	`__txn__cov
(
dbv
, &dbv->
cov_db
,

1061 &
dbv
->
cov_db_size
)) != 0)

1062 
r
;

1063 
r
:

1064  (
t
);

1065 
	}
}

	@../env/env_region.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/mp.h
"

14 
__v_des_deroy
 
__P
((
DB_ENV
 *, 
REGION
 *));

15 
__v_des_g
 
__P
((
DB_ENV
 *, 
REGINFO
 *, REGINFO *, 
REGION
 **));

16 
__v_umem
 
__P
((
DB_ENV
 *, *, 
size_t
, ));

17 
__v_move_fe
 
__P
((
DB_ENV
 *));

26 
	$__v_ch
(
dbv
, 
_ag
, 
_ok
, 
y_ok
)

27 
DB_ENV
 *
dbv
;

28 
u_t32_t
 *
_ag
;

29 
_ok
, 
y_ok
;

31 
REGENV
 *
nv
;

32 
REGENV_REF
 
f
;

33 
REGINFO
 *
f
;

34 
REGION
 *

, 
egi
;

35 
size_t
 
w
, 
s
, 
size
;

36 
u_t32_t
 
bys
, 
i
, 
mbys
, 
egis
;

37 
u_t
 
y_t
;

38 
majv
, 
mv
, 
tchv
, 
t
, 
gid
;

39 
buf
[(
DB_REGION_FMT
) + 20];

42 
y_t
 = 0;

45 
lo
: 
nv
 = 
NULL
;

48 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
REGINFO
), &
f
)) != 0)

49  (
t
);

50 
f
->
dbv
 = dbenv;

51 
f
->
ty
 = 
REGION_TYPE_ENV
;

52 
f
->
id
 = 
REGION_ID_ENV
;

53 
f
->
ags
 = 
REGION_JOIN_OK
;

54 i(
_ok
)

55 
	`F_SET
(
f
, 
REGION_CREATE_OK
);

68 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

69 i((
t
 = 
	`__os_rdup
(
dbv
,

70 "oss-ive", &
f
->
me
)) != 0)

71 
r
;

72 
ti
;

76 ()
	`tf
(
buf
, (buf), "%s", 
DB_REGION_ENV
);

77 i((
t
 = 
	`__db_ame
(
dbv
,

78 
DB_APP_NONE
, 
buf
, 0, 
NULL
, &
f
->
me
)) != 0)

79 
r
;

89 i(
_ok
) {

90 i((
t
 = 
	`__os_ݒ
(
dbv
, 
f
->
me
, 0,

91 
DB_OSO_CREATE
 | 
DB_OSO_EXCL
 | 
DB_OSO_REGION
,

92 
dbv
->
db_mode
, &dbv->
lockfhp
)) == 0)

93 
ti
;

94 i(
t
 !
EEXIST
) {

95 
	`__db_r
(
dbv
, 
t
, "%s", 
f
->
me
);

96 
r
;

104 i((
t
 = 
	`__os_ݒ
(

105 
dbv
, 
f
->
me
, 0, 
DB_OSO_REGION
, 0, &dbv->
lockfhp
)) != 0)

106 
r
;

109 
	`F_CLR
(
f
, 
REGION_CREATE_OK
);

140 i((
t
 = 
	`__os_iofo
(
dbv
, 
f
->
me
,

141 
dbv
->
lockfhp
, &
mbys
, &
bys
, 
NULL
)) != 0) {

142 
	`__db_r
(
dbv
, 
t
, "%s", 
f
->
me
);

143 
r
;

151 
size
 = 
mbys
 * 
MEGABYTE
 + 
bys
;

162 i(
size
 <(
f
)) {

163 i(
size
 !(
f
))

164 
y
;

166 i((
t
 = 
	`__os_ad
(
dbv
, dbv->
lockfhp
, &
f
,

167 (
f
), &
w
)!0 ||rw < (
size_t
)(ref)) {

168 i(
t
 == 0)

169 
t
 = 
EIO
;

170 
	`__db_r
(
dbv
, 
t
,

172 
f
->
me
);

173 
r
;

175 
size
 = 
f
.size;

176 
gid
 = 
f
.segid;

178 
	`F_SET
(
dbv
, 
DB_ENV_SYSTEM_MEM
);

179 } i(
	`F_ISSET
(
dbv
, 
DB_ENV_SYSTEM_MEM
)) {

180 
t
 = 
EINVAL
;

181 
	`__db_r
(
dbv
, 
t
,

183 
f
->
me
);

184 
r
;

186 
gid
 = 
INVALID_REGION_SEGID
;

188 #ide
HAVE_MUTEX_FCNTL


194 ()
	`__os_ohd
(
dbv
, dbv->
lockfhp
);

195 
dbv
->
lockfhp
 = 
NULL
;

199 
	`memt
(&
egi
, 0, (tregion));

200 
egi
.
size
 = (
roff_t
)size;

201 
egi
.
gid
 = segid;

202 i((
t
 = 
	`__os_r_ch
(
dbv
, 
f
, &
egi
)) != 0)

203 
r
;

212 
f
->
imy
 = inf->
addr
;

213 
f
->
addr
 = (
u_t8_t
 *)f->add+ (
REGENV
);

214 
nv
 = 
f
->
imy
;

220 i(
nv
->
majv
 !
DB_VERSION_MAJOR
 ||

221 
nv
->
mv
 !
DB_VERSION_MINOR
) {

222 i(
nv
->
majv
 !0 ||v->
mv
 != 0) {

223 
	`__db_rx
(
dbv
,

225 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
,

226 
nv
->
majv
,v->
mv
);

227 
t
 = 
DB_VERSION_MISMATCH
;

229 
t
 = 
EINVAL
;

230 
r
;

247 i(
nv
->
nic
 && !
	`F_ISSET
(
dbv
, 
DB_ENV_NOPANIC
)) {

248 
t
 = 
	`__db_nic_msg
(
dbv
);

249 
r
;

251 i(
nv
->
magic
 !
DB_REGION_MAGIC
)

252 
y
;

258 i((
t
 = 
	`__v_des_g
(
dbv
, 
f
, inf, &

)!0 ||=
NULL
)

259 
fd_r
;

260 
f
->

 =p;

270 i(

->
size
 != size)

271 
y
;

279 i(
_ag
 !
NULL
) {

280 
	`FLD_CLR
(*
_ag
, 
nv
->
_ags
);

281 i(*
_ag
 != 0) {

282 
	`__db_rx
(
dbv
,

284 
t
 = 
EINVAL
;

285 
r
;

287 *
_ag
 = 
nv
->
_ags
;

294 ()
	`__v_umem
(
dbv
, 
f
->
imy
, 

->
size
, 0);

297 
dbv
->
gfo
 = 
f
;

300 
ti
:

302 
	`F_SET
(
f
, 
REGION_CREATE
);

316 
	`memt
(&
egi
, 0, (tregion));

317 
egis
 = 
	`__memp_max_gis
(
dbv
) + 10;

318 
s
 = 
egis
 * (
REGION
);

319 
s
 +
dbv
->
sswd_n
;

320 
s
 +(
dbv
->
thr_max
 + dbenv->thr_max / 4) *

321 
	`__v_loc_size
((
DB_THREAD_INFO
));

322 
s
 +
dbv
->
thr_nbuck
 * 
	`__v_loc_size
((
DB_HASHTAB
));

323 
s
 += 16 * 1024;

324 
egi
.
size
 = 
s
;

325 
egi
.
gid
 = 
INVALID_REGION_SEGID
;

326 i((
t
 = 
	`__os_r_ch
(
dbv
, 
f
, &
egi
)) != 0)

327 
r
;

333 ()
	`__v_umem
(
dbv
, 
f
->
addr
, 
egi
.
size
, 1);

353 
f
->
imy
 = inf->
addr
;

354 
f
->
addr
 = (
u_t8_t
 *)f->add+ (
REGENV
);

355 
	`__v_loc_
(
f
, 
egi
.
size
 - (
REGENV
));

361 
nv
 = 
f
->
imy
;

362 
nv
->
magic
 = 0;

363 
nv
->
nic
 = 0;

365 ()
	`db_vsi
(&
majv
, &
mv
, &
tchv
);

366 
nv
->
majv
 = (
u_t32_t
)majver;

367 
nv
->
mv
 = (
u_t32_t
)minver;

368 
nv
->
tchv
 = (
u_t32_t
)patchver;

370 ()
	`time
(&
nv
->
timeamp
);

371 
	`__os_unique_id
(
dbv
, &
nv
->
vid
);

377 
nv
->
_ags
 = (
_ag
 =
NULL
) ? 0 : *init_flagsp;

385 
nv
->
gi_t
 = 
egis
;

386 i((
t
 = 
	`__v_loc
(
f
, 
egis
 * (
REGION
), &

)) != 0) {

387 
	`__db_r
(

388 
dbv
, 
t
, "unableo createew masteregionrray");

389 
r
;

391 
nv
->
gi_off
 = 
	`R_OFFSET
(
f
, 

);

392 
i
 = 0; i < 
egis
; ++i, ++

)

393 

->
id
 = 
INVALID_REGION_ID
;

395 
nv
->
ch_off
 =v->
thad_off
 =v->
p_off
 = 
INVALID_ROFF
;

396 
nv
->
ags
 = 0;

397 
nv
->
_timeamp
 =v->
p_timeamp
 = 0;

398 
nv
->
mtx_gv
 = 
MUTEX_INVALID
;

406 i((
t
 = 
	`__v_des_g
(
dbv
, 
f
, inf, &

)) != 0) {

407 
fd_r
: 
	`__db_rx
(
dbv
, "%s: ubˁfdnvmt", 
f
->
me
);

408 i(
t
 == 0)

409 
t
 = 
EINVAL
;

410 
r
;

412 
f
->

 =p;

413 

->
size
 = 
egi
.size;

414 

->
gid
 = 
egi
.segid;

429 i(
egi
.
gid
 !
INVALID_REGION_SEGID
) {

430 
f
.
size
 = 
egi
.size;

431 
f
.
gid
 = 
egi
.segid;

432 i((
t
 = 
	`__os_wre
(

433 
dbv
, dbv->
lockfhp
, &
f
, ef), &
w
)) != 0) {

434 
	`__db_r
(
dbv
, 
t
,

436 
f
->
me
);

437 
r
;

441 #ide
HAVE_MUTEX_FCNTL


447 i(
dbv
->
lockfhp
 !
NULL
) {

448 ()
	`__os_ohd
(
dbv
, dbv->
lockfhp
);

449 
dbv
->
lockfhp
 = 
NULL
;

454 
dbv
->
gfo
 = 
f
;

457 
r
:

458 
y
:

459 i(
dbv
->
lockfhp
 !
NULL
) {

460 ()
	`__os_ohd
(
dbv
, dbv->
lockfhp
);

461 
dbv
->
lockfhp
 = 
NULL
;

471 i(
f
->
addr
 !
NULL
) {

472 i(
f
->

 =
NULL
)

473 
f
->

 = &
egi
;

476 
f
->
addr
 = inf->
imy
;

477 ()
	`__os_r_dach
(
dbv
,

478 
f
, 
	`F_ISSET
(f, 
REGION_CREATE
));

482 i(
f
->
me
 !
NULL
)

483 
	`__os_
(
dbv
, 
f
->
me
);

484 
	`__os_
(
dbv
, 
f
);

487 i(
t
 == 0) {

488 i(!
y_ok
 || ++
y_t
 > 3) {

489 
	`__db_rx
(
dbv
, "unableo joinhenvironment");

490 
t
 = 
EAGAIN
;

492 
	`__os_p
(
dbv
, 
y_t
 * 3, 0);

493 
lo
;

497  (
t
);

498 
	}
}

507 
	$__v_tu_
(
dbv
)

508 
DB_ENV
 *
dbv
;

510 
REGENV
 *
nv
;

511 
REGINFO
 *
f
;

513 
f
 = 
dbv
->
gfo
;

514 
nv
 = 
f
->
imy
;

517 i(!
	`F_ISSET
(
f
, 
REGION_CREATE
))

524 
nv
->
magic
 = 
DB_REGION_MAGIC
;

527 
	}
}

536 
	$__v_tu_off
(
dbv
, 
ags
)

537 
DB_ENV
 *
dbv
;

538 
u_t32_t
 
ags
;

540 
REGENV
 *
nv
;

541 
REGINFO
 *
f
;

542 
t
, 
t_t
;

544 
t
 = 0;

552 i(
	`__v_ch
(
dbv
, 
NULL
, 0, 1) != 0)

555 
f
 = 
dbv
->
gfo
;

556 
nv
 = 
f
->
imy
;

558 
	`MUTEX_LOCK
(
dbv
, 
nv
->
mtx_gv
);

572 i(
nv
->
ft
 > 0 && !
	`LF_ISSET
(
DB_FORCE
&& !nv->
nic
)

573 
t
 = 
EBUSY
;

575 
nv
->
nic
 = 1;

581 
	`MUTEX_UNLOCK
(
dbv
, 
nv
->
mtx_gv
);

583 i((
t_t
 = 
	`__v_dach
(
dbv
, 0)!0 && 
t
 == 0)

584 
t
 = 
t_t
;

586  (
t
);

587 
	}
}

596 
	$__v_nic_t
(
dbv
, 

)

597 
DB_ENV
 *
dbv
;

598 

;

600 i(
dbv
 !
NULL
 && dbv->
gfo
 != NULL)

601 ((
REGENV
 *)

602 ((
REGINFO
 *)
dbv
->
gfo
)->
imy
)->
nic
 = 

 ? 1 : 0;

603 
	}
}

612 
	$__v_f_emt
(
dbv
)

613 
DB_ENV
 *
dbv
;

615 
REGENV
 *
nv
;

616 
REGINFO
 *
f
;

617 
t
;

619 
f
 = 
dbv
->
gfo
;

620 
nv
 = 
f
->
imy
;

623 i(
	`F_ISSET
(
f
, 
REGION_CREATE
)) {

624 i((
t
 = 
	`__mux_loc
(

625 
dbv
, 
MTX_ENV_REGION
, 0, &
nv
->
mtx_gv
)) != 0)

626  (
t
);

627 
nv
->
ft
 = 1;

630 
	`MUTEX_LOCK
(
dbv
, 
nv
->
mtx_gv
);

631 ++
nv
->
ft
;

632 
	`MUTEX_UNLOCK
(
dbv
, 
nv
->
mtx_gv
);

635 
	`F_SET
(
dbv
, 
DB_ENV_REF_COUNTED
);

637 
	}
}

646 
	$__v_f_deemt
(
dbv
)

647 
DB_ENV
 *
dbv
;

649 
REGENV
 *
nv
;

650 
REGINFO
 *
f
;

653 i((
f
 = 
dbv
->
gfo
=
NULL
)

656 
nv
 = 
f
->
imy
;

659 i(
	`F_ISSET
(
dbv
, 
DB_ENV_REF_COUNTED
)) {

661 
	`MUTEX_LOCK
(
dbv
, 
nv
->
mtx_gv
);

662 i(
nv
->
ft
 == 0)

663 
	`__db_rx
(
dbv
,

666 --
nv
->
ft
;

667 
	`MUTEX_UNLOCK
(
dbv
, 
nv
->
mtx_gv
);

669 
	`F_CLR
(
dbv
, 
DB_ENV_REF_COUNTED
);

673  (
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
) ?

674 
	`__mux_
(
dbv
, &
nv
->
mtx_gv
) : 0);

675 
	}
}

684 
	$__v_dach
(
dbv
, 
deroy
)

685 
DB_ENV
 *
dbv
;

686 
deroy
;

688 
REGENV
 *
nv
;

689 
REGINFO
 *
f
;

690 
REGION
 

;

691 
t
, 
t_t
;

693 
f
 = 
dbv
->
gfo
;

694 
nv
 = 
f
->
imy
;

695 
t
 = 0;

698 i(
dbv
->
lockfhp
 !
NULL
) {

699 i((
t_t
 =

700 
	`__os_ohd
(
dbv
, dbv->
lockfhp
)!0 && 
t
 == 0)

701 
t
 = 
t_t
;

702 
dbv
->
lockfhp
 = 
NULL
;

710 i(
deroy
) {

719 

 = *
f
->rp;

720 
f
->

 = &rp;

722 i(
nv
->
gi_off
 !
INVALID_ROFF
)

723 
	`__v_loc_
(

724 
f
, 
	`R_ADDR
(f, 
nv
->
gi_off
));

733 
dbv
->
gfo
 = 
NULL
;

736 
f
->
addr
 = inf->
imy
;

738 i((
t_t
 = 
	`__os_r_dach
(
dbv
, 
f
, 
deroy
)!0 && 
t
 == 0)

739 
t
 = 
t_t
;

740 i(
f
->
me
 !
NULL
)

741 
	`__os_
(
dbv
, 
f
->
me
);

744 
	`__os_
(
dbv
, 
f
);

746  (
t
);

747 
	}
}

756 
	$__v_move_v
(
dbv
)

757 
DB_ENV
 *
dbv
;

759 
REGENV
 *
nv
;

760 
REGINFO
 *
f
, 
gfo
;

761 
REGION
 *

;

762 
u_t32_t
 
ags_ig
, 
i
;

768 
ags_ig
 = 
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
 | 
DB_ENV_NOPANIC
);

769 
	`F_SET
(
dbv
, 
DB_ENV_NOLOCKING
 | 
DB_ENV_NOPANIC
);

780 i(
	`__v_ch
(
dbv
, 
NULL
, 0, 0) != 0)

781 
mfes
;

783 
f
 = 
dbv
->
gfo
;

784 
nv
 = 
f
->
imy
;

789 
nv
->
nic
 = 1;

798 

 = 
	`R_ADDR
(
f
, 
nv
->
gi_off
),

799 
i
 = 0; i < 
nv
->
gi_t
; ++i, ++

) {

800 i(

->
id
 =
INVALID_REGION_ID
 ||p->
ty
 =
REGION_TYPE_ENV
)

809 
	`memt
(&
gfo
, 0, (reginfo));

810 
gfo
.
id
 = 

->id;

811 
gfo
.
ags
 = 
REGION_CREATE_OK
;

818 i(
	`__v_gi_ch
(
dbv
, &
gfo
, 0) != 0)

821 #ifde 
HAVE_MUTEX_SYSTEM_RESOURCES


826 i(
gfo
.
ty
 =
REGION_TYPE_MUTEX
)

827 
	`__mux_sour_tu
(
dbv
, &
gfo
);

829 ()
	`__v_gi_dach
(
dbv
, &
gfo
, 1);

833 ()
	`__v_dach
(
dbv
, 1);

835 
mfes
:

840 
	`__v_move_fe
(
dbv
);

842 
	`F_CLR
(
dbv
, 
DB_ENV_NOLOCKING
 | 
DB_ENV_NOPANIC
);

843 
	`F_SET
(
dbv
, 
ags_ig
);

846 
	}
}

853 
	$__v_move_fe
(
dbv
)

854 
DB_ENV
 *
dbv
;

856 
t
, 
ft
, 
ϡrm
, 
t
;

857 cڡ *
d
;

858 
ved_ch
, *
p
, **
mes
, *
th
, 
buf
[(
DB_REGION_FMT
) + 20];

861 ()
	`tf
(
buf
, (buf), "%s", 
DB_REGION_ENV
);

862 i((
t
 = 
	`__db_ame
(
dbv
, 
DB_APP_NONE
, 
buf
, 0, 
NULL
, &
th
)) != 0)

866 i((
p
 = 
	`__db_h
(
th
)=
NULL
) {

867 
p
 = 
th
;

868 
ved_ch
 = *
p
;

870 
d
 = 
PATH_DOT
;

872 
ved_ch
 = *
p
;

873 *
p
 = '\0';

875 
d
 = 
th
;

879 i((
t
 = 
	`__os_dli
(
dbv
, 
d
, &
mes
, &
ft
)) != 0)

880 
	`__db_r
(
dbv
, 
t
, "%s", 
d
);

883 *
p
 = 
ved_ch
;

884 
	`__os_
(
dbv
, 
th
);

886 i(
t
 != 0)

892 
ϡrm
 = -1, 
t
 = 
ft
; --cnt >= 0;) {

894 i(
	`cmp
(
mes
[
t
],

895 
DB_REGION_PREFIX
, (DB_REGION_PREFIX) - 1))

899 i(
	`cmp
(
mes
[
t
], "__dbq.", 6) == 0)

903 i(
	`cmp
(
mes
[
t
], "__db.register", 13) == 0)

907 i(
	`cmp
(
mes
[
t
], "__db.rep", 8) == 0)

914 i(
	`rcmp
(
mes
[
t
], 
DB_REGION_ENV
) == 0) {

915 
ϡrm
 = 
t
;

920 i(
	`__db_ame
(
dbv
,

921 
DB_APP_NONE
, 
mes
[
t
], 0, 
NULL
, &
th
) == 0) {

931 i(
	`F_ISSET
(
dbv
, 
DB_ENV_OVERWRITE
) &&

932 
	`
(
mes
[
t
]=
DB_REGION_NAME_LENGTH
)

933 ()
	`__db_fe_mui_wre
(
dbv
, 
th
);

934 ()
	`__os_uƚk
(
dbv
, 
th
);

935 
	`__os_
(
dbv
, 
th
);

939 i(
ϡrm
 != -1)

940 i(
	`__db_ame
(
dbv
,

941 
DB_APP_NONE
, 
mes
[
ϡrm
], 0, 
NULL
, &
th
) == 0) {

942 i(
	`F_ISSET
(
dbv
, 
DB_ENV_OVERWRITE
))

943 ()
	`__db_fe_mui_wre
(
dbv
, 
th
);

944 ()
	`__os_uƚk
(
dbv
, 
th
);

945 
	`__os_
(
dbv
, 
th
);

947 
	`__os_d
(
dbv
, 
mes
, 
ft
);

948 
	}
}

957 
	$__v_gi_ch
(
dbv
, 
f
, 
size
)

958 
DB_ENV
 *
dbv
;

959 
REGINFO
 *
f
;

960 
size_t
 
size
;

962 
REGION
 *

;

963 
t
;

964 
buf
[(
DB_REGION_FMT
) + 20];

970 
	`F_CLR
(
f
, 
REGION_CREATE
);

971 i((
t
 = 
	`__v_des_g
(
dbv
, dbv->
gfo
, 
f
, &

)) != 0)

972  (
t
);

973 
f
->
dbv
 = dbenv;

974 
f
->

 =p;

975 
f
->
ty
 = 

->type;

976 
f
->
id
 = 

->id;

982 i(
	`F_ISSET
(
f
, 
REGION_CREATE
))

983 

->
size
 = (
roff_t
)size;

986 ()
	`tf
(
buf
, (buf), 
DB_REGION_FMT
, 
f
->
id
);

987 i((
t
 = 
	`__db_ame
(
dbv
,

988 
DB_APP_NONE
, 
buf
, 0, 
NULL
, &
f
->
me
)) != 0)

989 
r
;

990 i((
t
 = 
	`__os_r_ch
(
dbv
, 
f
, 

)) != 0)

991 
r
;

998 ()
	`__v_umem
(
dbv
,

999 
f
->
addr
, 

->
size
, 
	`F_ISSET
(f, 
REGION_CREATE
));

1009 i(
	`F_ISSET
(
f
, 
REGION_CREATE
))

1010 
	`__v_loc_
(
f
, 

->
size
);

1014 
r
:

1015 i(
f
->
addr
 !
NULL
)

1016 ()
	`__os_r_dach
(
dbv
,

1017 
f
, 
	`F_ISSET
(f, 
REGION_CREATE
));

1018 
f
->

 = 
NULL
;

1019 
f
->
id
 = 
INVALID_REGION_ID
;

1022 i(
	`F_ISSET
(
f
, 
REGION_CREATE
)) {

1023 
	`__v_des_deroy
(
dbv
, 

);

1024 
	`F_CLR
(
f
, 
REGION_CREATE
);

1027  (
t
);

1028 
	}
}

1037 
	$__v_gi_dach
(
dbv
, 
f
, 
deroy
)

1038 
DB_ENV
 *
dbv
;

1039 
REGINFO
 *
f
;

1040 
deroy
;

1042 
REGION
 *

;

1043 
t
;

1045 

 = 
f
->rp;

1046 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
))

1047 
deroy
 = 1;

1055 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
&& 
f
->
imy
 !
NULL
)

1056 
	`__v_loc_
(
f
, inf->
imy
);

1059 
t
 = 
	`__os_r_dach
(
dbv
, 
f
, 
deroy
);

1062 i(
deroy
)

1063 
	`__v_des_deroy
(
dbv
, 

);

1066 i(
f
->
me
 !
NULL
)

1067 
	`__os_
(
dbv
, 
f
->
me
);

1069  (
t
);

1070 
	}
}

1078 
	$__v_des_g
(
dbv
, 
v_f
, 
f
, 
p
)

1079 
DB_ENV
 *
dbv
;

1080 
REGINFO
 *
v_f
, *
f
;

1081 
REGION
 **
p
;

1083 
REGENV
 *
nv
;

1084 
REGION
 *

, *
emy_
, *
f_ty
;

1085 
u_t32_t
 
i
, 
maxid
;

1087 *
p
 = 
NULL
;

1088 
nv
 = 
v_f
->
imy
;

1102 
maxid
 = 
REGION_ID_ENV
;

1103 
emy_
 = 
f_ty
 = 
NULL
;

1104 

 = 
	`R_ADDR
(
v_f
, 
nv
->
gi_off
),

1105 
i
 = 0; i < 
nv
->
gi_t
; ++i, ++

) {

1106 i(

->
id
 =
INVALID_REGION_ID
) {

1107 i(
emy_
 =
NULL
)

1108 
emy_
 = 

;

1111 i(
f
->
id
 !
INVALID_REGION_ID
) {

1112 i(
f
->
id
 =

->id)

1116 i(
f
->
ty
 =

->type &&

1117 
	`F_ISSET
(
f
, 
REGION_JOIN_OK
) &&

1118 (
f_ty
 =
NULL
 || f_ty->
id
 > 

->id))

1119 
f_ty
 = 

;

1121 i(

->
id
 > 
maxid
)

1122 
maxid
 = 

->
id
;

1126 i(
i
 >
nv
->
gi_t
)

1127 

 = 
f_ty
;

1128 i(

 !
NULL
) {

1129 *
p
 = 

;

1137 i(!
	`F_ISSET
(
f
, 
REGION_CREATE_OK
))

1138  (
ENOENT
);

1144 i(
emy_
 =
NULL
) {

1145 
	`__db_rx
(
dbv
, "nooomemaining fordditional REGIONs");

1146  (
ENOENT
);

1153 
	`memt
(
emy_
, 0, (
REGION
));

1154 
emy_
->
gid
 = 
INVALID_REGION_SEGID
;

1160 
emy_
->
ty
 = 
f
->type;

1161 
emy_
->
id
 = 
f
->id =
INVALID_REGION_ID
 ? 
maxid
 + 1 : infop->id;

1163 
	`F_SET
(
f
, 
REGION_CREATE
);

1165 *
p
 = 
emy_
;

1167 
	}
}

1174 
	$__v_des_deroy
(
dbv
, 

)

1175 
DB_ENV
 *
dbv
;

1176 
REGION
 *

;

1178 
	`COMPQUIET
(
dbv
, 
NULL
);

1180 

->
id
 = 
INVALID_REGION_ID
;

1181 
	}
}

1188 
	$__v_umem
(
dbv
, 
addr
, 
size
, 
d
)

1189 
DB_ENV
 *
dbv
;

1190 *
addr
;

1191 
size_t
 
size
;

1192 
d
;

1194 
t
;

1195 
u_t8_t
 *
p
, *
t
;

1198 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
))

1216 
t
 = 0;

1217 i(
	`F_ISSET
(
dbv
, 
DB_ENV_REGION_INIT
)) {

1218 i(
d
)

1219 
p
 = 
addr
,

1220 
t
 = (
u_t8_t
 *)
addr
 + 
size
; 
p
 <; += 512)

1221 
p
[0] = 0xdb;

1223 
p
 = 
addr
,

1224 
t
 = (
u_t8_t
 *)
addr
 + 
size
; 
p
 <; += 512)

1225 
t
 |
p
[0];

1228  (
t
);

1229 
	}
}

	@../env/env_register.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	#REGISTER_FILE
 "__db.gi"

	)

15 
	#PID_EMPTY
 "X 0\n"

	)

16 
	#PID_FMT
 "%24lu\n"

	)

18 
	#PID_ISEMPTY
(
p
(
	`memcmp
, 
PID_EMPTY
, 
PID_LEN
=0)

	)

19 
	#PID_LEN
 (25

	)

21 
	#REGISTRY_LOCK
(
dbv
, 
pos
, 
nowa
) \

22 
	`__os_fdlock
(
dbv
, (dbv)->
giry
, (
off_t
)(
pos
), 1, 
nowa
)

	)

23 
	#REGISTRY_UNLOCK
(
dbv
, 
pos
) \

24 
	`__os_fdlock
(
dbv
, (dbv)->
giry
, (
off_t
)(
pos
), 0, 0)

	)

25 
	#REGISTRY_EXCL_LOCK
(
dbv
, 
nowa
) \

26 
	`REGISTRY_LOCK
(
dbv
, 1, 
nowa
)

	)

27 
	#REGISTRY_EXCL_UNLOCK
(
dbv
) \

28 
	`REGISTRY_UNLOCK
(
dbv
, 1)

	)

30 
__vg_add
 
__P
((
DB_ENV
 *, *));

104 
	$__vg_gi
(
dbv
, 
ed_covyp
)

105 
DB_ENV
 *
dbv
;

106 *
ed_covyp
;

108 
pid_t
 
pid
;

109 
u_t32_t
 
bys
, 
mbys
;

110 
t
;

111 *

;

113 *
ed_covyp
 = 0;

114 
dbv
->
	`thad_id
(dbv, &
pid
, 
NULL
);

115 

 = 
NULL
;

117 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
))

118 
	`__db_msg
(
dbv
, "%lu:eginvmt", (
u_lg
)
pid
);

121 i((
t
 =

122 
	`__db_ame
(
dbv
, 
DB_APP_NONE
, 
REGISTER_FILE
, 0, 
NULL
, &

)) != 0)

123 
r
;

124 i((
t
 = 
	`__os_ݒ
(
dbv
, 

, 0,

125 
DB_OSO_CREATE
, 
	`__db_omode
("rw-rw----"), &
dbv
->
giry
)) != 0)

126 
r
;

135 i((
t
 = 
	`REGISTRY_EXCL_LOCK
(
dbv
, 0)) != 0)

136 
r
;

144 i((
t
 = 
	`__os_iofo
(

145 
dbv
, 

, dbv->
giry
, &
mbys
, &
bys
, 
NULL
)) != 0)

146 
r
;

147 i(
mbys
 =0 && 
bys
 == 0) {

148 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
))

149 
	`__db_msg
(
dbv
, "%lu: cg %s", (
u_lg
)
pid
, 

);

150 *
ed_covyp
 = 1;

154 i((
t
 = 
	`__vg_add
(
dbv
, 
ed_covyp
)) != 0)

155 
r
;

162 i(*
ed_covyp
 =0 && (
t
 = 
	`REGISTRY_EXCL_UNLOCK
(
dbv
)) != 0)

163 
r
;

166 
r
: *
ed_covyp
 = 0;

172 i(
dbv
->
giry
 !
NULL
)

173 ()
	`__os_ohd
(
dbv
, dbv->
giry
);

174 
dbv
->
giry
 = 
NULL
;

177 i(

 !
NULL
)

178 
	`__os_
(
dbv
, 

);

180  (
t
);

181 
	}
}

188 
	$__vg_add
(
dbv
, 
ed_covyp
)

189 
DB_ENV
 *
dbv
;

190 *
ed_covyp
;

192 
pid_t
 
pid
;

193 
off_t
 
d
, 
pos
;

194 
size_t
 

, 
nw
;

195 
u_t
 
lt
;

196 
u_t32_t
 
bys
, 
mbys
;

197 
ed_covy
, 
t
;

198 *
p
, 
buf
[
PID_LEN
 + 10], 
pid_buf
[PID_LEN + 10];

200 
ed_covy
 = 0;

201 
	`COMPQUIET
(
p
, 
NULL
);

204 
dbv
->
	`thad_id
(dbv, &
pid
, 
NULL
);

205 
	`tf
(
pid_buf
, id_buf), 
PID_FMT
, (
u_lg
)
pid
);

207 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
))

208 
	`__db_msg
(
dbv
, "%lu:ddg stػgiry", (
u_lg
)
pid
);

216 
lt
 = 0;; ++lcnt) {

217 i((
t
 = 
	`__os_ad
(

218 
dbv
, dbv->
giry
, 
buf
, 
PID_LEN
, &

)) != 0)

219  (
t
);

220 i(

 == 0)

228 i(

 !
PID_LEN
) {

229 
ed_covy
 = 1;

233 i(
	`PID_ISEMPTY
(
buf
)) {

234 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
))

235 
	`__db_msg
(
dbv
, "%02u: EMPTY", 
lt
);

245 i(
	`memcmp
(
buf
, 
pid_buf
, 
PID_LEN
) == 0) {

246 
	`__db_rx
(
dbv
,

248  (
EINVAL
);

251 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
)) {

252 
p
 = 
buf
; *p == ' ';)

253 ++
p
;

254 
buf
[

 - 1] = '\0';

257 
pos
 = (
off_t
)
lt
 * 
PID_LEN
;

258 i(
	`REGISTRY_LOCK
(
dbv
, 
pos
, 1) == 0) {

259 i((
t
 = 
	`REGISTRY_UNLOCK
(
dbv
, 
pos
)) != 0)

260  (
t
);

262 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
))

263 
	`__db_msg
(
dbv
, "%02u: %s: FAILED", 
lt
, 
p
);

265 
ed_covy
 = 1;

268 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
))

269 
	`__db_msg
(
dbv
, "%02u: %s: LOCKED", 
lt
, 
p
);

279 i(
ed_covy
) {

280 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
))

281 
	`__db_msg
(
dbv
, "%lu:ecovyequed", (
u_lg
)
pid
);

284 i((
t
 = 
	`__os_iofo
(

285 
dbv
, 
NULL
, dbv->
giry
, &
mbys
, &
bys
, NULL)) != 0)

286  (
t
);

287 
d
 = (
off_t
)
mbys
 * 
MEGABYTE
 + 
bys
;

297 i((
t
 = 
	`__os_ek
(
dbv
, dbv->
giry
, 0, 0, 0)) != 0)

298  (
t
);

299 
lt
 = (
u_t
)
d
 / 
PID_LEN
 +

300 ((
u_t
)
d
 % 
PID_LEN
 =0 ? 0 : 1); 
lt
 > 0; --lcnt)

301 i((
t
 = 
	`__os_wre
(
dbv
,

302 
dbv
->
giry
, 
PID_EMPTY
, 
PID_LEN
, &
nw
)) != 0)

303  (
t
);

310 i((
t
 = 
	`__os_ek
(
dbv
, dbv->
giry
, 0, 0, 0)) != 0)

311  (
t
);

312 
lt
 = 0;; ++lcnt) {

313 i((
t
 = 
	`__os_ad
(

314 
dbv
, dbv->
giry
, 
buf
, 
PID_LEN
, &

)) != 0)

315  (
t
);

316 i(

 =
PID_LEN
 && !
	`PID_ISEMPTY
(
buf
))

318 
pos
 = (
off_t
)
lt
 * 
PID_LEN
;

319 i(
	`REGISTRY_LOCK
(
dbv
, 
pos
, 1) == 0) {

320 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
))

321 
	`__db_msg
(
dbv
,

323 (
u_lg
)
pid
, 
lt
, (u_lg)
pos
);

325 i((
t
 = 
	`__os_ek
(
dbv
,

326 
dbv
->
giry
, 0, 0, (
u_t32_t
)
pos
)) != 0 ||

327 (
t
 = 
	`__os_wre
(
dbv
,

328 
dbv
->
giry
, 
pid_buf
, 
PID_LEN
, &
nw
)) != 0)

329  (
t
);

330 
dbv
->
giry_off
 = (
u_t32_t
)
pos
;

335 i(
ed_covy
)

336 *
ed_covyp
 = 1;

338  (
t
);

339 
	}
}

348 
	$__vg_uegi
(
dbv
, 
covy_ed
)

349 
DB_ENV
 *
dbv
;

350 
covy_ed
;

352 
size_t
 
nw
;

353 
t
, 
t_t
;

355 
t
 = 0;

363 i(
covy_ed
)

364 
r
;

373 i((
t
 = 
	`__os_ek
(
dbv
,

374 
dbv
->
giry
, 0, 0, dbv->
giry_off
)) != 0 ||

375 (
t
 = 
	`__os_wre
(

376 
dbv
, dbv->
giry
, 
PID_EMPTY
, 
PID_LEN
, &
nw
)) != 0)

377 
r
;

392 
r
: i((
t_t
 =

393 
	`__os_ohd
(
dbv
, dbv->
giry
)!0 && 
t
 == 0)

394 
t
 = 
t_t
;

396 
dbv
->
giry
 = 
NULL
;

397  (
t
);

398 
	}
}

407 
	$__vg_xuock
(
dbv
)

408 
DB_ENV
 *
dbv
;

410 
pid_t
 
pid
;

411 
t
;

413 
dbv
->
	`thad_id
(dbv, &
pid
, 
NULL
);

415 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REGISTER
))

416 
	`__db_msg
(
dbv
,

417 "%lu:ecovy comed, uockg", (
u_lg
)
pid
);

419 i((
t
 = 
	`REGISTRY_EXCL_UNLOCK
(
dbv
)) == 0)

420  (
t
);

422 
	`__db_r
(
dbv
, 
t
, "%s:xusivfuock", 
REGISTER_FILE
);

423  (
	`__db_nic
(
dbv
, 
t
));

424 
	}
}

	@../env/env_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/txn.h
"

19 #ifde
HAVE_STATISTICS


20 
__v_t_l
 
__P
((
DB_ENV
 *, 
u_t32_t
));

21 
__v_t_s
 
__P
((
DB_ENV
 *, 
u_t32_t
));

22 
__v_t_thad
 
__P
((
DB_ENV
 *));

23 
__v__t
 
__P
((
DB_ENV
 *, 
u_t32_t
));

24 *
__v_thad_e_t
 
__P
((
DB_THREAD_STATE
));

26 
__g_ty
 
__P
((
g_ty_t
));

35 
	$__v__t_
(
dbv
, 
ags
)

36 
DB_ENV
 *
dbv
;

37 
u_t32_t
 
ags
;

39 
DB_THREAD_INFO
 *

;

40 
t
;

42 
	`PANIC_CHECK
(
dbv
);

43 
	`ENV_ILLEGAL_BEFORE_OPEN
(
dbv
, "DB_ENV->stat_print");

45 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->stat_print",

46 
ags
, 
DB_STAT_ALL
 | 
DB_STAT_CLEAR
 | 
DB_STAT_SUBSYSTEM
)) != 0)

47  (
t
);

49 
	`ENV_ENTER
(
dbv
, 

);

50 
	`REPLICATION_WRAP
(
dbv
, (
	`__v__t
(dbv, 
ags
)), 
t
);

51 
	`ENV_LEAVE
(
dbv
, 

);

52  (
t
);

53 
	}
}

60 
	$__v__t
(
dbv
, 
ags
)

61 
DB_ENV
 *
dbv
;

62 
u_t32_t
 
ags
;

64 
time_t
 
now
;

65 
t
;

66 
time_buf
[
CTIME_BUFLEN
];

68 ()
	`time
(&
now
);

69 
	`__db_msg
(
dbv
, "%.24s\tLotime", 
	`__db_ime
(&
now
, 
time_buf
));

71 i((
t
 = 
	`__v_t_s
(
dbv
, 
ags
)) != 0)

72  (
t
);

74 i(
	`LF_ISSET
(
DB_STAT_ALL
) &&

75 (
t
 = 
	`__v_t_l
(
dbv
, 
ags
)) != 0)

76  (
t
);

78 i((
t
 = 
	`__v_t_thad
(
dbv
)) != 0)

79  (
t
);

81 i(!
	`LF_ISSET
(
DB_STAT_SUBSYSTEM
))

84 i(
	`LOGGING_ON
(
dbv
)) {

85 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

86 i((
t
 = 
	`__log__t
(
dbv
, 
ags
)) != 0)

87  (
t
);

89 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

90 i((
t
 = 
	`__dbg__t
(
dbv
, 
ags
)) != 0)

91  (
t
);

94 i(
	`LOCKING_ON
(
dbv
)) {

95 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

96 i((
t
 = 
	`__lock__t
(
dbv
, 
ags
)) != 0)

97  (
t
);

100 i(
	`MPOOL_ON
(
dbv
)) {

101 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

102 i((
t
 = 
	`__memp__t
(
dbv
, 
ags
)) != 0)

103  (
t
);

106 i(
	`REP_ON
(
dbv
)) {

107 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

108 i((
t
 = 
	`__p__t
(
dbv
, 
ags
)) != 0)

109  (
t
);

112 i(
	`TXN_ON
(
dbv
)) {

113 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

114 i((
t
 = 
	`__txn__t
(
dbv
, 
ags
)) != 0)

115  (
t
);

118 #ifde
HAVE_MUTEX_SUPPORT


124 i(
	`MUTEX_ON
(
dbv
)) {

125 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

126 i((
t
 = 
	`__mux__t
(
dbv
, 
ags
)) != 0)

127  (
t
);

132 
	}
}

140 
	$__v_t_s
(
dbv
, 
ags
)

141 
DB_ENV
 *
dbv
;

142 
u_t32_t
 
ags
;

144 
REGENV
 *
nv
;

145 
REGINFO
 *
f
;

146 
time_buf
[
CTIME_BUFLEN
];

148 
f
 = 
dbv
->
gfo
;

149 
nv
 = 
f
->
imy
;

151 i(
	`LF_ISSET
(
DB_STAT_ALL
)) {

152 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

153 
	`__db_msg
(
dbv
, "Default databasenvironment information:");

155 
	`STAT_HEX
("Maginumb", 
nv
->
magic
);

156 
	`STAT_LONG
("Pivue", 
nv
->
nic
);

157 
	`__db_msg
(
dbv
, "%d.%d.%d\tEnvironment version",

158 
nv
->
majv
,v->
mv
,v->
tchv
);

159 
	`STAT_LONG
("B vsi", 
DB_BTREEVERSION
);

160 
	`STAT_LONG
("Hash vsi", 
DB_HASHVERSION
);

161 
	`STAT_LONG
("Lock vsi", 
DB_LOCKVERSION
);

162 
	`STAT_LONG
("Log vsi", 
DB_LOGVERSION
);

163 
	`STAT_LONG
("Queuvsi", 
DB_QAMVERSION
);

164 
	`STAT_LONG
("Sequ vsi", 
DB_SEQUENCE_VERSION
);

165 
	`STAT_LONG
("Txvsi", 
DB_TXNVERSION
);

166 
	`__db_msg
(
dbv
,

167 "%.24s\tCiځime", 
	`__db_ime
(&
nv
->
timeamp
, 
time_buf
));

168 
	`STAT_HEX
("EnvmID", 
nv
->
vid
);

169 
	`__mux_t_debug_sg
(
dbv
,

171 
nv
->
mtx_gv
, 
ags
);

172 
	`STAT_LONG
("Rens", 
nv
->
ft
);

175 
	}
}

182 
	$__v_t_l
(
dbv
, 
ags
)

183 
DB_ENV
 *
dbv
;

184 
u_t32_t
 
ags
;

186 cڡ 
FN
 

[] = {

187 { 
DB_ENV_AUTO_COMMIT
, "DB_ENV_AUTO_COMMIT" },

188 { 
DB_ENV_CDB
, "DB_ENV_CDB" },

189 { 
DB_ENV_CDB_ALLDB
, "DB_ENV_CDB_ALLDB" },

190 { 
DB_ENV_DBLOCAL
, "DB_ENV_DBLOCAL" },

191 { 
DB_ENV_DIRECT_DB
, "DB_ENV_DIRECT_DB" },

192 { 
DB_ENV_DIRECT_LOG
, "DB_ENV_DIRECT_LOG" },

193 { 
DB_ENV_DSYNC_DB
, "DB_ENV_DSYNC_DB" },

194 { 
DB_ENV_DSYNC_LOG
, "DB_ENV_DSYNC_LOG" },

195 { 
DB_ENV_RECOVER_FATAL
, "DB_ENV_RECOVER_FATAL" },

196 { 
DB_ENV_LOCKDOWN
, "DB_ENV_LOCKDOWN" },

197 { 
DB_ENV_LOG_AUTOREMOVE
, "DB_ENV_LOG_AUTOREMOVE" },

198 { 
DB_ENV_LOG_INMEMORY
, "DB_ENV_LOG_INMEMORY" },

199 { 
DB_ENV_NOLOCKING
, "DB_ENV_NOLOCKING" },

200 { 
DB_ENV_NOMMAP
, "DB_ENV_NOMMAP" },

201 { 
DB_ENV_NOPANIC
, "DB_ENV_NOPANIC" },

202 { 
DB_ENV_OPEN_CALLED
, "DB_ENV_OPEN_CALLED" },

203 { 
DB_ENV_OVERWRITE
, "DB_ENV_OVERWRITE" },

204 { 
DB_ENV_PRIVATE
, "DB_ENV_PRIVATE" },

205 { 
DB_ENV_REGION_INIT
, "DB_ENV_REGION_INIT" },

206 { 
DB_ENV_RPCCLIENT
, "DB_ENV_RPCCLIENT" },

207 { 
DB_ENV_RPCCLIENT_GIVEN
, "DB_ENV_RPCCLIENT_GIVEN" },

208 { 
DB_ENV_SYSTEM_MEM
, "DB_ENV_SYSTEM_MEM" },

209 { 
DB_ENV_THREAD
, "DB_ENV_THREAD" },

210 { 
DB_ENV_TIME_NOTGRANTED
, "DB_ENV_TIME_NOTGRANTED" },

211 { 
DB_ENV_TXN_NOSYNC
, "DB_ENV_TXN_NOSYNC" },

212 { 
DB_ENV_TXN_NOWAIT
, "DB_ENV_TXN_NOWAIT" },

213 { 
DB_ENV_TXN_WRITE_NOSYNC
, "DB_ENV_TXN_WRITE_NOSYNC" },

214 { 
DB_ENV_YIELDCPU
, "DB_ENV_YIELDCPU" },

215 { 0, 
NULL
 }

217 cڡ 
FN
 
o
[] = {

218 { 
DB_CREATE
, "DB_CREATE" },

219 { 
DB_FORCE
, "DB_FORCE" },

220 { 
DB_INIT_CDB
, "DB_INIT_CDB" },

221 { 
DB_INIT_LOCK
, "DB_INIT_LOCK" },

222 { 
DB_INIT_LOG
, "DB_INIT_LOG" },

223 { 
DB_INIT_MPOOL
, "DB_INIT_MPOOL" },

224 { 
DB_INIT_REP
, "DB_INIT_REP" },

225 { 
DB_INIT_TXN
, "DB_INIT_TXN" },

226 { 
DB_LOCKDOWN
, "DB_LOCKDOWN" },

227 { 
DB_NOMMAP
, "DB_NOMMAP" },

228 { 
DB_PRIVATE
, "DB_PRIVATE" },

229 { 
DB_RDONLY
, "DB_RDONLY" },

230 { 
DB_RECOVER
, "DB_RECOVER" },

231 { 
DB_RECOVER_FATAL
, "DB_RECOVER_FATAL" },

232 { 
DB_SYSTEM_MEM
, "DB_SYSTEM_MEM" },

233 { 
DB_THREAD
, "DB_THREAD" },

234 { 
DB_TRUNCATE
, "DB_TRUNCATE" },

235 { 
DB_TXN_NOSYNC
, "DB_TXN_NOSYNC" },

236 { 
DB_USE_ENVIRON
, "DB_USE_ENVIRON" },

237 { 
DB_USE_ENVIRON_ROOT
, "DB_USE_ENVIRON_ROOT" },

238 { 0, 
NULL
 }

240 cڡ 
FN
 
v
[] = {

241 { 
DB_VERB_DEADLOCK
, "DB_VERB_DEADLOCK" },

242 { 
DB_VERB_FILEOPS
, "DB_VERB_FILEOPS" },

243 { 
DB_VERB_FILEOPS_ALL
, "DB_VERB_FILEOPS_ALL" },

244 { 
DB_VERB_RECOVERY
, "DB_VERB_RECOVERY" },

245 { 
DB_VERB_REGISTER
, "DB_VERB_REGISTER" },

246 { 
DB_VERB_REPLICATION
, "DB_VERB_REPLICATION" },

247 { 
DB_VERB_WAITSFOR
, "DB_VERB_WAITSFOR" },

248 { 0, 
NULL
 }

250 cڡ 
FN
 
gv
[] = {

251 { 
DB_REGENV_REPLOCKED
, "DB_REGENV_REPLOCKED" },

252 { 0, 
NULL
 }

254 
DB_MSGBUF
 
mb
;

255 
REGENV
 *
nv
;

256 
REGINFO
 *
f
;

257 
REGION
 *

;

258 
u_t32_t
 
i
;

259 **
p
, 
time_buf
[
CTIME_BUFLEN
];

261 
f
 = 
dbv
->
gfo
;

262 
nv
 = 
f
->
imy
;

263 
	`DB_MSGBUF_INIT
(&
mb
);

265 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

266 
	`__db_ags
(
dbv
,

267 
NULL
, 
nv
->
_ags
, 
o
, NULL, "\tInitialization flags");

268 
	`STAT_ULONG
("Regi sls", 
nv
->
gi_t
);

269 
	`__db_ags
(
dbv
,

270 
NULL
, 
nv
->
ags
, 
gv
, NULL, "\tReplication flags");

271 
	`__db_msg
(
dbv
, "%.24s\tOperationimestamp",

272 
nv
->
_timeamp
 == 0 ?

273 "!S" : 
	`__db_ime
(&
nv
->
_timeamp
, 
time_buf
));

274 
	`__db_msg
(
dbv
, "%.24s\tReplicationimestamp",

275 
nv
->
p_timeamp
 == 0 ?

276 "!S" : 
	`__db_ime
(&
nv
->
p_timeamp
, 
time_buf
));

278 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

279 
	`__db_msg
(
dbv
, "Peregion databasenvironment information:");

280 

 = 
	`R_ADDR
(
f
, 
nv
->
gi_off
),

281 
i
 = 0; i < 
nv
->
gi_t
; ++i, ++

) {

282 i(

->
id
 =
INVALID_REGION_ID
)

284 
	`__db_msg
(
dbv
, "%Regi:", 
	`__g_ty
(

->
ty
));

285 
	`STAT_LONG
("Regi ID", 

->
id
);

286 
	`STAT_LONG
("SegmID", 

->
gid
);

287 
	`__db_dlbys
(
dbv
,

288 "Size", (
u_lg
)0, (u_lg)0, (u_lg)

->
size
);

291 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

292 
	`__db_msg
(
dbv
, "DB_ENV handle information:");

293 
	`STAT_ISSET
("Efe", 
dbv
->
db_rfe
);

294 
	`STAT_STRING
("Epfx", 
dbv
->
db_fx
);

295 
	`STAT_ISSET
("E", 
dbv
->
db_r
);

296 
	`STAT_ISSET
("Evt", 
dbv
->
db_evt_func
);

297 
	`STAT_ISSET
("Fdback", 
dbv
->
db_edback
);

298 
	`STAT_ISSET
("Pic", 
dbv
->
db_nic
);

299 
	`STAT_ISSET
("Mloc", 
dbv
->
db_mloc
);

300 
	`STAT_ISSET
("Roc", 
dbv
->
db_loc
);

301 
	`STAT_ISSET
("Fe", 
dbv
->
db_
);

302 
	`__db_ags
(
dbv
, 
NULL
, dbv->
vbo
, 
v
, NULL, "\tVerbose flags");

304 
	`STAT_ISSET
("Arive", 
dbv
->
p_ive
);

305 
	`STAT_ISSET
("A dich", 
dbv
->
p_dich
);

306 
	`STAT_STRING
("Home", 
dbv
->
db_home
);

307 
	`STAT_STRING
("Log d", 
dbv
->
db_log_d
);

308 
	`STAT_STRING
("Tmd", 
dbv
->
db_tmp_d
);

309 i(
dbv
->
db_da_d
 =
NULL
)

310 
	`STAT_ISSET
("Dd", 
dbv
->
db_da_d
);

312 
p
 = 
dbv
->
db_da_d
; *!
NULL
; ++p)

313 
	`__db_msgadd
(
dbv
, &
mb
, "%s\tDd", *
p
);

314 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

316 
	`STAT_FMT
("Mode", "%#o", , 
dbv
->
db_mode
);

317 
	`__db_ags
(
dbv
, 
NULL
, dbv->
ݒ_ags
, 
o
, NULL, "\tOpen flags");

318 
	`STAT_ISSET
("Lockfhp", 
dbv
->
lockfhp
);

319 
	`STAT_ISSET
("Recovyab", 
dbv
->
cov_db
);

320 
	`STAT_ULONG
("Numb ocovyab sls", 
dbv
->
cov_db_size
);

321 
	`STAT_ISSET
("RPC cl", 
dbv
->
_hd
);

322 
	`STAT_LONG
("RPC cl ID", 
dbv
->
_id
);

323 
	`STAT_LONG
("DBen cou", 
dbv
->
db_f
);

324 
	`STAT_LONG
("Shed memy key", 
dbv
->
shm_key
);

325 
	`__mux_t_debug_sg
(

326 
dbv
, "DB_ENV hd mux", dbv->
mtx_v
, 
ags
);

327 
	`__mux_t_debug_sg
(

328 
dbv
, "DB hd mux", dbv->
mtx_dbli
, 
ags
);

330 
	`STAT_ISSET
("i1 il", 
dbv
->
i1_
);

331 
	`STAT_ISSET
("i2 il", 
dbv
->
i2_
);

332 
	`STAT_ISSET
("sswd", 
dbv
->
sswd
);

333 
	`STAT_ISSET
("yhd", 
dbv
->
yo_hd
);

334 
	`__mux_t_debug_sg
(
dbv
, "MT mux", dbv->
mtx_mt
, 
ags
);

336 
	`__db_ags
(
dbv
, 
NULL
, dbv->
ags
, 

, NULL, "\tFlags");

339 
	}
}

342 
	$__v_thad_e_t
(
e
)

343 
DB_THREAD_STATE
 
e
;

345 
e
) {

346 
THREAD_ACTIVE
:

348 
THREAD_BLOCKED
:

350 
THREAD_OUT
:

356 
	}
}

363 
	$__v_t_thad
(
dbv
)

364 
DB_ENV
 *
dbv
;

366 
DB_HASHTAB
 *
hb
;

367 
DB_THREAD_INFO
 *

;

368 
REGENV
 *
nv
;

369 
REGINFO
 *
f
;

370 
THREAD_INFO
 *
thad
;

371 
u_t32_t
 
i
;

372 
buf
[
DB_THREADID_STRLEN
];

375 i((
hb
 = (
DB_HASHTAB
 *)
dbv
->
thr_hashb
=
NULL
)

379 
f
 = 
dbv
->
gfo
;

380 
nv
 = 
f
->
imy
;

381 
thad
 = 
	`R_ADDR
(
f
, 
nv
->
thad_off
);

382 
	`STAT_ULONG
("Thad blocklod", 
thad
->
thr_cou
);

383 
	`STAT_ULONG
("Thadotiځhshd", 
thad
->
thr_max
);

384 
	`STAT_ULONG
("Thad hash bucks", 
thad
->
thr_nbuck
);

387 
	`__db_msg
(
dbv
, "Thread status blocks:");

388 
i
 = 0; i < 
dbv
->
thr_nbuck
; i++)

389 
	`SH_TAILQ_FOREACH
(

, &
hb
[
i
], 
dbth_lks
, 
__db_thad_fo
) {

390 i(

->
dbth_e
 =
THREAD_SLOT_NOT_IN_USE
)

392 
	`__db_msg
(
dbv
, "\tprocess/thread %s: %s",

393 
dbv
->
	`thad_id_rg
(

394 
dbv
, 

->
dbth_pid
, ip->
dbth_tid
, 
buf
),

395 
	`__v_thad_e_t
(

->
dbth_e
));

398 
	}
}

407 
	$__db_t_fh
(
dbv
, 
g
, 
fh
, 
ags
)

408 
DB_ENV
 *
dbv
;

409 cڡ *
g
;

410 
DB_FH
 *
fh
;

411 
u_t32_t
 
ags
;

413 cڡ 
FN
 

[] = {

414 { 
DB_FH_NOSYNC
, "DB_FH_NOSYNC" },

415 { 
DB_FH_OPENED
, "DB_FH_OPENED" },

416 { 
DB_FH_UNLINK
, "DB_FH_UNLINK" },

417 { 0, 
NULL
 }

420 i(
fh
 =
NULL
) {

421 
	`STAT_ISSET
(
g
, 
fh
);

425 
	`__mux_t_debug_sg
(

426 
dbv
, "fe-hd.mux", 
fh
->
mtx_fh
, 
ags
);

428 
	`STAT_LONG
("fe-hd.n cou", 
fh
->
f
);

429 
	`STAT_LONG
("fe-hd.fdest", 
fh
->
fd
);

430 
	`STAT_STRING
("fe-hd.fme", 
fh
->
me
);

432 
	`STAT_ULONG
("fe-hd.gnumb", 
fh
->
pgno
);

433 
	`STAT_ULONG
("fe-hd.gsize", 
fh
->
pgsize
);

434 
	`STAT_ULONG
("fe-hd.gofft", 
fh
->
offt
);

436 
	`__db_ags
(
dbv
, 
NULL
, 
fh
->
ags
, 

, NULL, "\tfile-handle.flags");

437 
	}
}

446 
	$__db_t_feid
(
dbv
, 
id
, 
suffix
)

447 
DB_ENV
 *
dbv
;

448 
u_t8_t
 *
id
;

449 cڡ *
suffix
;

451 
DB_MSGBUF
 
mb
;

452 
i
;

454 i(
id
 =
NULL
) {

455 
	`STAT_ISSET
("ID", 
id
);

459 
	`DB_MSGBUF_INIT
(&
mb
);

460 
i
 = 0; i < 
DB_FILE_ID_LEN
; ++i, ++
id
) {

461 
	`__db_msgadd
(
dbv
, &
mb
, "%x", (
u_t
)*
id
);

462 i(
i
 < 
DB_FILE_ID_LEN
 - 1)

463 
	`__db_msgadd
(
dbv
, &
mb
, " ");

465 i(
suffix
 !
NULL
)

466 
	`__db_msgadd
(
dbv
, &
mb
, "%s", 
suffix
);

467 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

468 
	}
}

477 
	$__db_dl
(
dbv
, 
msg
, 
vue
)

478 
DB_ENV
 *
dbv
;

479 cڡ *
msg
;

480 
u_lg
 
vue
;

486 i(
vue
 < 10000000)

487 
	`__db_msg
(
dbv
, "%lu\t%s", 
vue
, 
msg
);

489 
	`__db_msg
(
dbv
, "%luM\t%(%lu)", 
vue
 / 1000000, 
msg
, value);

490 
	}
}

500 
	$__db_dl_p
(
dbv
, 
msg
, 
vue
, 
p
, 
g
)

501 
DB_ENV
 *
dbv
;

502 cڡ *
msg
, *
g
;

503 
u_lg
 
vue
;

504 
p
;

506 
DB_MSGBUF
 
mb
;

508 
	`DB_MSGBUF_INIT
(&
mb
);

514 i(
vue
 < 10000000)

515 
	`__db_msgadd
(
dbv
, &
mb
, "%lu\t%s", 
vue
, 
msg
);

517 
	`__db_msgadd
(
dbv
,

518 &
mb
, "%luM\t%s", (
vue
 + 500000/ 1000000, 
msg
);

519 i(
g
 =
NULL
)

520 
	`__db_msgadd
(
dbv
, &
mb
, " (%d%%)", 
p
);

522 
	`__db_msgadd
(
dbv
, &
mb
, " (%d%% %s)", 
p
, 
g
);

524 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

525 
	}
}

535 
	$__db_dlbys
(
dbv
, 
msg
, 
gbys
, 
mbys
, 
bys
)

536 
DB_ENV
 *
dbv
;

537 cڡ *
msg
;

538 
u_lg
 
gbys
, 
mbys
, 
bys
;

540 
DB_MSGBUF
 
mb
;

541 cڡ *
p
;

543 
	`DB_MSGBUF_INIT
(&
mb
);

546 
bys
 >
MEGABYTE
) {

547 ++
mbys
;

548 
bys
 -
MEGABYTE
;

550 
mbys
 >
GIGABYTE
 / 
MEGABYTE
) {

551 ++
gbys
;

552 
mbys
 -
GIGABYTE
 / 
MEGABYTE
;

555 i(
gbys
 =0 && 
mbys
 =0 && 
bys
 == 0)

556 
	`__db_msgadd
(
dbv
, &
mb
, "0");

558 
p
 = "";

559 i(
gbys
 > 0) {

560 
	`__db_msgadd
(
dbv
, &
mb
, "%luGB", 
gbys
);

561 
p
 = " ";

563 i(
mbys
 > 0) {

564 
	`__db_msgadd
(
dbv
, &
mb
, "%s%luMB", 
p
, 
mbys
);

565 
p
 = " ";

567 i(
bys
 >= 1024) {

568 
	`__db_msgadd
(
dbv
, &
mb
, "%s%luKB", 
p
, 
bys
 / 1024);

569 
bys
 %= 1024;

570 
p
 = " ";

572 i(
bys
 > 0)

573 
	`__db_msgadd
(
dbv
, &
mb
, "%s%luB", 
p
, 
bys
);

576 
	`__db_msgadd
(
dbv
, &
mb
, "\t%s", 
msg
);

578 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

579 
	}
}

589 
	$__db_t_gfo
(
dbv
, 
f
, 
s
, 
ags
)

590 
DB_ENV
 *
dbv
;

591 
REGINFO
 *
f
;

592 cڡ *
s
;

593 
u_t32_t
 
ags
;

595 cڡ 
FN
 

[] = {

596 { 
REGION_CREATE
, "REGION_CREATE" },

597 { 
REGION_CREATE_OK
, "REGION_CREATE_OK" },

598 { 
REGION_JOIN_OK
, "REGION_JOIN_OK" },

599 { 0, 
NULL
 }

602 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

603 
	`__db_msg
(
dbv
, "%REGINFO infmi:", 
s
);

604 
	`STAT_STRING
("Regiځy", 
	`__g_ty
(
f
->
ty
));

605 
	`STAT_ULONG
("Regi ID", 
f
->
id
);

606 
	`STAT_STRING
("Regiڂame", 
f
->
me
);

607 
	`STAT_POINTER
("Origegiڇddss", 
f
->
addr_ig
);

608 
	`STAT_POINTER
("Regiڇddss", 
f
->
addr
);

609 
	`STAT_POINTER
("Regiڅrimyddss", 
f
->
imy
);

610 
	`STAT_ULONG
("Regi maximumoti", 
f
->
max_loc
);

611 
	`STAT_ULONG
("Regiڇod", 
f
->
lod
);

612 
	`__v_loc_t
(
f
, 
ags
);

614 
	`__db_ags
(
dbv
, 
NULL
, 
f
->
ags
, 

, NULL, "\tRegion flags");

615 
	}
}

622 
	$__g_ty
(
t
)

623 
g_ty_t
 
t
;

625 
t
) {

626 
REGION_TYPE_ENV
:

628 
REGION_TYPE_LOCK
:

630 
REGION_TYPE_LOG
:

632 
REGION_TYPE_MPOOL
:

634 
REGION_TYPE_MUTEX
:

636 
REGION_TYPE_TXN
:

638 
INVALID_REGION_TYPE
:

642 
	}
}

653 
	$__db__n_but
(
dbv
)

654 
DB_ENV
 *
dbv
;

656 
	`__db_rx
(
dbv
, "Library build didot include statistics support");

657  (
DB_OPNOTSUP
);

658 
	}
}

661 
	$__v__t_
(
dbv
, 
ags
)

662 
DB_ENV
 *
dbv
;

663 
u_t32_t
 
ags
;

665 
	`COMPQUIET
(
ags
, 0);

667  (
	`__db__n_but
(
dbv
));

668 
	}
}

	@../examples_c/bench_001.c

32 
	~<sys/tys.h
>

33 
	~<sys/time.h
>

35 
	~<dlib.h
>

36 
	~<rg.h
>

38 #ifde
_WIN32


39 

gt
(, * const *, const *);

41 
	~<unid.h
>

44 
	~<db.h
>

46 
	#DATABASE
 "bch_001.db"

	)

48 
com_t
(
DB
 *, cڡ 
DBT
 *, const DBT *);

49 
DB_ENV
 *
db_
(*, *, 
u_t
, );

50 
fl
(
DB_ENV
 *, 
DB
 *, , 
u_t
, , );

51 
g
(
DB
 *, , 
u_t
, , , , *);

52 
ma
(, *[]);

53 
uge
();

56 *
	gogme
 = "bench_001";

61 
DB_ENV
 *

62 
	$db_
(
home
, 
efix
, 
chesize
, 
txn
)

63 *
home
, *
efix
;

64 
u_t
 
chesize
;

65 
txn
;

67 
DB_ENV
 *
dbv
;

68 
u_t32_t
 
ags
;

69 
t
;

71 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

72 
dbv
->
	`r
(dbv, 
t
, "db_env_create");

73  (
NULL
);

75 
dbv
->
	`t_rfe
(dbv, 
dr
);

76 
dbv
->
	`t_fx
(dbv, 
efix
);

77 ()
dbv
->
	`t_chesize
(dbenv, 0,

78 
chesize
 =0 ? 50 * 1024 * 1024 : (
u_t32_t
)cachesize, 0);

80 
ags
 = 
DB_CREATE
 | 
DB_INIT_MPOOL
;

81 i(
txn
)

82 
ags
 |
DB_INIT_TXN
 | 
DB_INIT_LOCK
;

83 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
ags
, 0)) != 0) {

84 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->ݒ: %s", 
home
);

85 ()
dbv
->
	`o
(dbenv, 0);

86  (
NULL
);

88  (
dbv
);

89 
	}
}

96 
	$g
(
dbp
, 
txn
, 
d
, 
num
, 
dups
, 

, 
coup
)

97 
DB
 *
dbp
;

98 
u_t
 
d
;

99 
txn
, 
num
, 
dups
, 

, *
coup
;

101 
DBC
 *
db
;

102 
DBT
 
key
, 
da
;

103 
DB_ENV
 *
dbv
;

104 
DB_TXN
 *
tx
;

105 
u_t32_t
 
ags
, 
n
, 
kn
;

106 
cou
, 
i
, 
j
, 
t
;

107 *
por
, *
dp
, *
kp
;

109 
dbv
 = 
dbp
->dbenv;

111 
kn
 = 0;

112 
kn
 = klen;

114 
	`memt
(&
key
, 0, (key));

115 
key
.
da
 = &
j
;

116 
key
.
size
 = (
j
);

117 
	`memt
(&
da
, 0, (data));

118 
da
.
ags
 = 
DB_DBT_USERMEM
;

119 
da
.d
	`mloc
(
d
*1024*1024);

120 
da
.
un
 = da.
size
 = 
d
*1024*1024;

122 
cou
 = 0;

123 
ags
 = 
DB_SET
;

124 i(!
dups
)

125 
ags
 |
DB_MULTIPLE_KEY
;

127 
ags
 |
DB_MULTIPLE
;

128 
i
 = 0; i < 

; i++) {

129 
tx
 = 
NULL
;

130 i(
txn
)

131 i((
t
 =

132 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
tx
, 0)) != 0)

133 
r
;

134 i((
t
 = 
dbp
->
	`curs
(dbp, 
tx
, &
db
, 0)) != 0)

135 
r
;

137 
j
 = 
	`ndom
(% 
num
;

138 i((
t
 = 
db
->
	`g
(db, &
key
, &
da
, 
ags
)) != 0)

139 
r
;

140 
	`DB_MULTIPLE_INIT
(
por
, &
da
);

141 i(
dups
)

142 
por
 !
NULL
) {

143 
	`DB_MULTIPLE_NEXT
(
por
, &
da
, 
dp
, 
n
);

144 i(
dp
 !
NULL
)

145 
cou
++;

148 
por
 !
NULL
) {

149 
	`DB_MULTIPLE_KEY_NEXT
(
por
,

150 &
da
, 
kp
, 
kn
, 
dp
, 
n
);

151 i(
kp
 !
NULL
)

152 
cou
++;

154 i((
t
 = 
db
->
	`o
(dbcp)) != 0)

155 
r
;

156 i(
txn
)

157 i((
t
 = 
tx
->
	`comm
(txnp, 0)) != 0)

158 
r
;

161 *
coup
 = 
cou
;

164 
r
: 
dbp
->
	`r
(dbp, 
t
, "get");

165  (
t
);

166 
	}
}

174 
	#PUTS_PER_TXN
 10

	)

176 
	$fl
(
dbv
, 
dbp
, 
txn
, 
d
, 
num
, 
dups
)

177 
DB_ENV
 *
dbv
;

178 
DB
 *
dbp
;

179 
u_t
 
d
;

180 
txn
, 
num
, 
dups
;

182 
DBT
 
key
, 
da
;

183 
DB_TXN
 *
tx
;

184 
	sda
 {

185 
id
;

186 
r
[1];

187 } *
da_v
;

188 
cou
, 
i
, 
t
;

194 
tx
 = 
NULL
;

195 
t
 = 0;

196 
cou
 = 0;

197 
	`memt
(&
key
, 0, (
DBT
));

198 
	`memt
(&
da
, 0, (
DBT
));

199 
key
.
da
 = &
i
;

200 
key
.
size
 = (
i
);

201 
da
.d
da_v
 = 
	`mloc
(
d
);

202 
	`memy
(
da_v
->
r
, "0123456789012345678901234567890123456789",

203 
d
 - (
da_v
->
id
));

204 
da
.
size
 = 
d
;

205 
da
.
ags
 = 
DB_DBT_USERMEM
;

207 
i
 = 0; i < 
num
; i++) {

208 i(
txn
 !0 && 
i
 % 
PUTS_PER_TXN
 == 0) {

209 i(
tx
 !
NULL
) {

210 
t
 = 
tx
->
	`comm
(txnp, 0);

211 
tx
 = 
NULL
;

212 i(
t
 != 0)

213 
r
;

215 i((
t
 =

216 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
tx
, 0)) != 0)

217 
r
;

219 
da_v
->
id
 = 0;

221 
t
 = 
dbp
->
	`put
(dbp, 
tx
, &
key
, &
da
, 0)) {

223 
cou
++;

226 
dbp
->
	`r
(dbp, 
t
, "DB->put");

227 
r
;

229 } ++
da_v
->
id
 < 
dups
);

231 i(
tx
 !
NULL
)

232 
t
 = 
tx
->
	`comm
(txnp, 0);

234 
	`tf
("%d\n", 
cou
);

235  (
t
);

237 
r
: i(
tx
 !
NULL
)

238 ()
tx
->
	`abt
(txnp);

239  (
t
);

240 
	}
}

243 
	$ma
(
gc
, 
gv
)

244 
gc
;

245 *
gv
[];

247 
*
ݏrg
;

248 

td
;

249 
DB
 *
dbp
;

250 
DB_ENV
 *
dbv
;

251 
DB_TXN
 *
tx
;

252 
timev
 
t_time
, 
d_time
;

253 
cs
;

254 
u_t
 
che
, 
d
, 
gesize
;

255 
ch
, 
cou
, 
dups
, 
v
, 

, 

, 
num
;

256 
t
, 
rag
, 
txn
;

258 
tx
 = 
NULL
;

259 
d
 = 20;

260 

 = 
num
 = 1000000;

261 
v
 = 1;

262 
dups
 = 

 = 
rag
 = 
txn
 = 0;

264 
gesize
 = 65536;

265 
che
 = 1000 * 
gesize
;

267 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:d:EIi:l:n:p:RT")!
EOF
)

268 
ch
) {

270 
che
 = (
u_t
)
	`oi
(
ݏrg
);

273 
dups
 = 
	`oi
(
ݏrg
);

276 
v
 = 0;

279 

 = 1;

282 

 = 
	`oi
(
ݏrg
);

285 
d
 = (
u_t
)
	`oi
(
ݏrg
);

288 
num
 = 
	`oi
(
ݏrg
);

291 
gesize
 = (
u_t
)
	`oi
(
ݏrg
);

294 
rag
 = 1;

297 
txn
 = 1;

301 
	`uge
();

303 
gc
 -
td
;

304 
gv
 +
td
;

307 i(!
rag
) {

308 i(
v
)

309 ()
	`syem
("rm -rf BENCH_001; mkdir BENCH_001");

311 ()
	`uƚk
(
DATABASE
);

314 
dbv
 = 
NULL
;

315 i(
v
 == 1 &&

316 (
dbv
 = 
	`db_
("BENCH_001", "bch_001", 
che
, 
txn
)=
NULL
)

318 i(

)

319 
	`ex
(0);

321 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

322 
	`rtf
(
dr
,

323 "%s: db_: %s\n", 
ogme
, 
	`db_
(
t
));

324 
	`ex
(
EXIT_FAILURE
);

326 
dbp
->
	`t_rfe
(dbp, 
dr
);

327 
dbp
->
	`t_fx
(dbp, 
ogme
);

328 i((
t
 = 
dbp
->
	`t_bt_com
(dbp, 
com_t
)) != 0) {

329 
dbp
->
	`r
(dbp, 
t
, "set_bt_compare");

330 
r
;

332 i((
t
 = 
dbp
->
	`t_gesize
(dbp, 
gesize
)) != 0) {

333 
dbp
->
	`r
(dbp, 
t
, "set_pagesize");

334 
r
;

336 i(
dups
 && (
t
 = 
dbp
->
	`t_ags
(dbp, 
DB_DUP
)) != 0) {

337 
dbp
->
	`r
(dbp, 
t
, "set_flags");

338 
r
;

341 i(
v
 =0 && (
t
 = 
dbp
->
	`t_chesize
(dbp, 0, 
che
, 0)) != 0) {

342 
dbp
->
	`r
(dbp, 
t
, "set_cachesize");

343 
r
;

346 i((
t
 = 
dbp
->
	`t_ags
(dbp, 
DB_DUP
)) != 0) {

347 
dbp
->
	`r
(dbp, 
t
, "set_flags");

348 
r
;

351 i(
txn
 != 0)

352 i((
t
 = 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
tx
, 0)) != 0)

353 
r
;

355 i((
t
 = 
dbp
->
	`ݒ
(

356 
dbp
, 
tx
, 
DATABASE
, 
NULL
, 
DB_BTREE
, 
DB_CREATE
, 0664)) != 0) {

357 
dbp
->
	`r
(dbp, 
t
, "%s: on", 
DATABASE
);

358 i(
tx
 !
NULL
)

359 ()
tx
->
	`abt
(txnp);

360 
r
;

363 i(
tx
 !
NULL
)

364 
t
 = 
tx
->
	`comm
(txnp, 0);

365 
tx
 = 
NULL
;

366 i(
t
 != 0)

367 
r
;

369 i(
rag
) {

371 i(!
v
 && (
t
 =

372 
	`g
(
dbp
, 
txn
, 
d
, 
num
, 
dups
, 

, &
cou
)) != 0)

373 
r
;

376 ()
	`gtimeofday
(&
t_time
, 
NULL
);

377 i((
t
 =

378 
	`g
(
dbp
, 
txn
, 
d
, 
num
, 
dups
, 

, &
cou
)) != 0)

379 
r
;

380 ()
	`gtimeofday
(&
d_time
, 
NULL
);

381 
cs
 =

382 ((()
d_time
.
tv_c
 * 1000000 +nd_time.
tv_uc
) -

383 (()
t_time
.
tv_c
 * 1000000 + s_time.
tv_uc
))

385 
	`tf
("%decordsead using %d batches in %.2f seconds: ",

386 
cou
, 

, 
cs
);

387 
	`tf
("%.0cds/cd\n", ()
cou
 / 
cs
);

389 } i((
t
 = 
	`fl
(
dbv
, 
dbp
, 
txn
, 
d
, 
num
, 
dups
)) != 0)

390 
r
;

393 i((
t
 = 
dbp
->
	`o
(dbp, 
rag
 ? 
DB_NOSYNC
 : 0)) != 0) {

394 
	`rtf
(
dr
,

395 "%s: DB->o: %s\n", 
ogme
, 
	`db_
(
t
));

398  (
t
);

400 
r
: ()
dbp
->
	`o
(dbp, 0);

402 
	}
}

405 
	$com_t
(
dbp
, 
a
, 
b
)

406 
DB
 *
dbp
;

407 cڡ 
DBT
 *
a
, *
b
;

409 
ai
, 
bi
;

411 
dbp
 = dbp;

419 
	`memy
(&
ai
, 
a
->
da
, ());

420 
	`memy
(&
bi
, 
b
->
da
, ());

421  (
ai
 - 
bi
);

422 
	}
}

425 
	$uge
()

427 ()
	`rtf
(
dr
, "usage: %s %s\n\t%s\n",

428 
ogme
, "[-EIRT] [-c cachesize] [-d dups]",

430 
	`ex
(
EXIT_FAILURE
);

431 
	}
}

	@../examples_c/csv/DbRecord.c

9 
	~"csv.h
"

10 
	~"csv_lol.h
"

11 
	~"csv_ex.h
"

13 
DbRecd_fld
(
DbRecd
 *, 
u_t
, *, 
dy
);

14 
DbRecd_ch_fld
(
DbFld
 *, *, 
OPERATOR
);

15 
DbRecd_ch_o
(*, 
OPERATOR
);

22 
	$DbRecd_t
(
DbRecd
 *
cdp
, 
FILE
 *

)

24 
DbFld
 *
f
;

25 *
ddr
;

27 i(

 =
NULL
)

28 

 = 
dout
;

30 
	`rtf
(

, "Recd: %lu:\n", (
u_lg
)
cdp
->
o
);

31 
f
 = 
fldli
; f->
me
 !
NULL
; ++f) {

32 
ddr
 = (
u_t8_t
 *)
cdp
 + 
f
->
offt
;

33 
	`rtf
(

, "\t%s: ", 
f
->
me
);

34 
f
->
ty
) {

35 
NOTSET
:

37 
	`abt
();

39 
DOUBLE
:

40 
	`rtf
(

, "%f\n", *(*)
ddr
);

42 
STRING
:

43 
	`rtf
(

, "%s\n", *(**)
ddr
);

45 
ULONG
:

46 
	`rtf
(

, "%lu\n", *(
u_lg
 *)
ddr
);

50 
	}
}

57 
	$DbRecd_ad
(
u_lg
 
o_ulg
, 
DbRecd
 *
cdp
)

59 
DBT
 
key
, 
da
;

60 
u_t32_t
 
o
;

61 
t
;

68 
o
 = 
o_ulg
;

81 
	`memt
(&
key
, 0, (key));

82 
	`memt
(&
da
, 0, (data));

83 
key
.
da
 = &
o
;

84 
key
.
size
 = (
o
);

85 
da
.
ags
 = 
DB_DBT_MALLOC
;

86 i((
t
 = 
db
->
	`g
(db, 
NULL
, &
key
, &
da
, 0)) != 0)

87  (
t
);

89 i((
t
 = 
	`DbRecd_
(&
key
, &
da
, 
cdp
)) != 0)

90  (
t
);

93 
	}
}

100 
	$DbRecd_disrd
(
DbRecd
 *
cdp
)

103 
	`
(
cdp
->
w
);

104 
cdp
->
w
 = 
NULL
;

107 
	}
}

114 
	$DbRecd_
(cڡ 
DBT
 *
key
, cڡ DBT *
da
, 
DbRecd
 *
cdp
)

116 
DbFld
 *
f
;

117 
u_t32_t
 
sk
;

118 *
ddr
;

121 *
cdp
 = 
DbRecd_ba
;

124 
	`memy
(&
cdp
->
o
, 
key
->
da
, (
u_t32_t
));

125 
	`memy
(&
cdp
->
vsi
,

126 (
u_t32_t
 *)
da
->data + 1, (u_int32_t));

129 
cdp
->
w
 = 
da
->data;

130 
cdp
->
offt
 = (
u_t32_t
 *)
da
->data + 1;

131 
sk
 = (
cdp
->
fld_cou
 + 2* (
u_t32_t
);

132 
cdp
->
cd
 = (
u_t8_t
 *)
da
->d+ 
sk
;

133 
cdp
->
cd_n
 = 
da
->
size
 - 
sk
;

135 
f
 = 
fldli
; f->
me
 !
NULL
; ++f) {

136 
ddr
 = (
u_t8_t
 *)
cdp
 + 
f
->
offt
;

137 i(
	`DbRecd_fld
(

138 
cdp
, 
f
->
fldno
, 
ddr
, f->
ty
) != 0)

142 
	}
}

149 
	$DbRecd_fld
(

150 
DbRecd
 *
cdp
, 
u_t
 
fld
, *
addr
, 
dy
 
ty
)

152 
size_t
 
n
;

153 
numb_buf
[20];

159 --
fld
;

161 
ty
) {

162 
NOTSET
:

164 
	`abt
();

166 
STRING
:

167 *((
u_ch
 **)
addr

cdp
->
cd
 +ecdp->
offt
[
fld
];

168 
cdp
->
cd
[cdp->
offt
[
fld
] +

169 
	`OFFSET_LEN
(
cdp
->
offt
, 
fld
)] = '\0';

171 
DOUBLE
:

172 
ULONG
:

174 
n
 = 
	`OFFSET_LEN
(
cdp
->
offt
, 
fld
);

175 i(
n
 > (
numb_buf
) - 1) {

176 
dbv
->
	`rx
(dbenv,

178 
cdp
->
o
, 
fld
, (
u_lg
)
n
);

181 
	`memy
(
numb_buf
,

182 
cdp
->
cd
 +ecdp->
offt
[
fld
], 
n
);

183 
numb_buf
[
n
] = '\0';

185 i(
ty
 =
DOUBLE
) {

186 i(
n
 == 0)

187 *(*)
addr
 = 0;

188 i(
	`od_r
(
numb_buf
, (*)
addr
) != 0)

189 
fmt_r
;

191 i(
n
 == 0)

192 *(
u_lg
 *)
addr
 = 0;

193 i(
	`oul_r
(
numb_buf
, (
u_lg
 *)
addr
) != 0) {

194 
fmt_r
: 
dbv
->
	`rx
(dbenv,

196 
cdp
->
o
, 
fld
, 
numb_buf
);

202 
	}
}

209 
	$DbRecd_ch_fld_me
(*
fld
, *
vue
, 
OPERATOR
 

)

211 
DbFld
 *
f
;

213 
f
 = 
fldli
; f->
me
 !
NULL
; ++f)

214 i(
	`rcmp
(
fld
, 
f
->
me
) == 0)

215  (
	`DbRecd_ch_fld
(
f
, 
vue
, 

));

218 i(
	`rcmp
(
fld
, "id") == 0)

219  (
	`DbRecd_ch_o
(
vue
, 

));

221 
dbv
->
	`rx
(dbv, "unknowfldame: %s", 
fld
);

223 
	}
}

230 
	$DbRecd_ch_fld_numb
(
u_t32_t
 
fldno
, *
vue
, 
OPERATOR
 

)

232 
DbFld
 *
f
;

234 
f
 = 
fldli
; f->
me
 !
NULL
; ++f)

235 i(
fldno
 =
f
->fieldno)

236  (
	`DbRecd_ch_fld
(
f
, 
vue
, 

));

238 
dbv
->
	`rx
(dbv, "fldumb %lu cfigud", (
u_lg
)
fldno
);

240 
	}
}

247 
	$DbRecd_ch_o
(*
vue
, 
OPERATOR
 

)

249 
DBC
 *
dbc
;

250 
DbRecd
 
cd
;

251 
DBT
 
key
, 
da
;

252 
u_t32_t
 
o
;

253 
u_lg
 
o_ulg
;

254 
t
;

261 i(
	`oul_r
(
vue
, &
o_ulg
) != 0)

264 
	`memt
(&
key
, 0, (key));

265 
	`memt
(&
da
, 0, (data));

266 
key
.
da
 = &
o
;

267 
key
.
size
 = (
o
);

269 i((
t
 = 
db
->
	`curs
(db, 
NULL
, &
dbc
, 0)) != 0)

270  (
t
);

284 i(

 =
LT
 || o=
LTEQ
 || o=
NEQ
 || o=
WC
 || o=
NWC
)

285 
o
 = 1;

286 i(

 =
WC
 || o=
NWC
) {

287 
dbv
->
	`rx
(dbenv,

291 
o
 = 
o_ulg
;

292 i(

 =
GT
)

293 ++
o
;

295 i((
t
 = 
dbc
->
	`c_g
(dbc, &
key
, &
da
, 
DB_SET
)) != 0)

296 
r
;

299 i((
t
 = 
	`DbRecd_
(&
key
, &
da
, &
cd
)) != 0)

301 i(
	`fld_cmp_ulg
(&
cd
.
o
, &
o_ulg
, 

))

302 
	`DbRecd_t
(&
cd
, 
NULL
);

304 i(

 =
LT
 || o=
LTEQ
 || o=
EQ
)

306 i((
t
 = 
dbc
->
	`c_g
(dbc, &
key
, &
da
, 
DB_NEXT
)) != 0)

310 
r
:  (
t
 =
DB_NOTFOUND
 ? 0 :et);

311 
	}
}

318 
	$DbRecd_ch_fld
(
DbFld
 *
f
, *
vue
, 
OPERATOR
 

)

320 #ifde
HAVE_WILDCARD_SUPPORT


321 
gex_t
 
eq
;

323 
DBC
 *
dbc
;

324 
DbRecd
 
cd
;

325 
DBT
 
key
, 
da
, 
pkey
;

326 
vue_doub
;

327 
u_lg
 
vue_ulg
;

328 
u_t32_t
 
curs_ags
;

329 
t
, 
t_t
;

330 (*
cmp
)(*, *, 
OPERATOR
);

331 *
ddr
, *
vu
;

333 
dbc
 = 
NULL
;

334 
	`memt
(&
key
, 0, (key));

335 
	`memt
(&
pkey
, 0, (pkey));

336 
	`memt
(&
da
, 0, (data));

342 i(

 =
WC
 || o=
NWC
) {

343 #ifde
HAVE_WILDCARD_SUPPORT


344 i(
f
->
ty
 !
STRING
) {

345 
dbv
->
	`rx
(dbenv,

349 i(
	`gcomp
(&
eq
, 
vue
, 0) != 0) {

350 
dbv
->
	`rx
(dbenv, "regcomp ofattern failed");

353 
vu
 = &
eq
;

354 
cmp
 = 
fld_cmp_
;

356 
dbv
->
	`rx
(dbenv,

361 
f
->
ty
) {

362 
DOUBLE
:

363 i(
	`od_r
(
vue
, &
vue_doub
) != 0)

365 
cmp
 = 
fld_cmp_doub
;

366 
vu
 = &
vue_doub
;

367 
key
.
size
 = ();

369 
STRING
:

370 
vu
 = 
vue
;

371 
cmp
 = 
fld_cmp_rg
;

372 
key
.
size
 = 
	`
(
vue
);

374 
ULONG
:

375 i(
	`oul_r
(
vue
, &
vue_ulg
) != 0)

377 
cmp
 = 
fld_cmp_ulg
;

378 
vu
 = &
vue_ulg
;

379 
key
.
size
 = (
u_lg
);

382 
NOTSET
:

383 
	`abt
();

410 i(
f
->
cdy
 =
NULL
 || 

 =
NEQ
 || o=
WC
 || o=
NWC
) {

411 i((
t
 = 
db
->
	`curs
(db, 
NULL
, &
dbc
, 0)) != 0)

412 
r
;

413 (
t
 = 
dbc
->
	`c_g
(dbc, &
key
, &
da
, 
DB_NEXT
)) == 0) {

414 i((
t
 = 
	`DbRecd_
(&
key
, &
da
, &
cd
)) != 0)

416 
ddr
 = (
u_t8_t
 *)&
cd
 + 
f
->
offt
;

417 i(
	`cmp
(
ddr
, 
vu
, 

))

418 
	`DbRecd_t
(&
cd
, 
NULL
);

420 i(

 =
EQ
 || o=
LT
 || o=
LTEQ
)

424 i((
t
 =

425 
f
->
cdy
->
	`curs
(f->cdy, 
NULL
, &
dbc
, 0)) != 0)

426 
r
;

427 
key
.
da
 = 
vu
;

428 
curs_ags
 = 

 =
LT
 || o=
LTEQ
 ? 
DB_FIRST
 : 
DB_SET_RANGE
;

429 i((
t
 =

430 
dbc
->
	`c_pg
(dbc, &
key
, &
pkey
, &
da
, 
curs_ags
)) != 0)

431 
de
;

432 i(

 =
GT
) {

433 (
t
 = 
dbc
->
	`c_pg
(

434 
dbc
, &
key
, &
pkey
, &
da
, 
DB_NEXT
)) == 0) {

435 i((
t
 =

436 
	`DbRecd_
(&
pkey
, &
da
, &
cd
)) != 0)

438 
ddr
 = (
u_t8_t
 *)&
cd
 + 
f
->
offt
;

439 i(
	`cmp
(
ddr
, 
vu
, 

) != 0)

442 i(
t
 != 0)

443 
de
;

446 i((
t
 = 
	`DbRecd_
(&
pkey
, &
da
, &
cd
)) != 0)

448 
ddr
 = (
u_t8_t
 *)&
cd
 + 
f
->
offt
;

449 i(
	`cmp
(
ddr
, 
vu
, 

))

450 
	`DbRecd_t
(&
cd
, 
NULL
);

452 i(

 =
EQ
 || o=
LT
 || o=
LTEQ
)

454 } (
t
 =

455 
dbc
->
	`c_pg
(dbc, &
key
, &
pkey
, &
da
, 
DB_NEXT
)) == 0);

458 
de
: i(
t
 =
DB_NOTFOUND
)

459 
t
 = 0;

461 
r
: i(
dbc
 !
NULL
 && (
t_t
 = dbc->
	`c_o
(dbc)!0 && 
t
 == 0)

462 
t
 = 
t_t
;

464 #ifde
HAVE_WILDCARD_SUPPORT


465 i(

 =
WC
 || o=
NWC
)

466 
	`g
(&
eq
);

469  (
t
);

470 
	}
}

	@../examples_c/csv/code.c

9 
	~"csv.h
"

12 *
	mme
;

13 *
	mu
;

14 
dy
 
	mty
;

15 
	mdx
;

16 } 
	tFIELD
;

18 
code_sour
();

19 
code_hd
();

20 
desc_dump
();

21 
desc_ld
();

22 *
ty_to_rg
(
dy
);

23 
uge
();

28 
FILE
 *
	gc
;

29 
FILE
 *
	gh
;

30 *
	gogme
;

31 
	gvbo
;

33 
u_t
 
	gfld_t
;

34 
FIELD
 *
	gflds
;

37 
	$ma
(
gc
, *
gv
[])

39 
ch
;

40 *
cfe
, *
hfe
;

43 i((
ogme
 = 
	`chr
(
gv
[0], '/')=
NULL
)

44 
ogme
 = 
gv
[0];

46 ++
ogme
;

49 
cfe
 = "csv_local.c";

50 
hfe
 = "csv_local.h";

53 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:f:h:v")!
EOF
)

54 
ch
) {

56 
cfe
 = 
ݏrg
;

59 i(
	`eݒ
(
ݏrg
, "r", 
d
=
NULL
) {

60 
	`rtf
(
dr
,

61 "%s: %s\n", 
ݏrg
, 
	`
(
o
));

62  (
EXIT_FAILURE
);

66 
hfe
 = 
ݏrg
;

69 ++
vbo
;

73  (
	`uge
());

75 
gc
 -
td
;

76 
gv
 +
td
;

78 i(*
gv
 !
NULL
)

79  (
	`uge
());

82 i(
	`desc_ld
())

83  (
EXIT_FAILURE
);

86 i(
vbo
 && 
	`desc_dump
())

87  (
EXIT_FAILURE
);

90 i((
c
 = 
	`fݒ
(
cfe
, "w")=
NULL
) {

91 
	`rtf
(
dr
,

92 "%s: %s: %s\n", 
ogme
, 
cfe
, 
	`
(
o
));

93  (
EXIT_FAILURE
);

95 i((
h
 = 
	`fݒ
(
hfe
, "w")=
NULL
) {

96 
	`rtf
(
dr
,

97 "%s: %s: %s\n", 
ogme
, 
hfe
, 
	`
(
o
));

98  (
EXIT_FAILURE
);

102 i(
	`code_hd
())

103  (
EXIT_FAILURE
);

104 i(
	`code_sour
())

105  (
EXIT_FAILURE
);

107  (
EXIT_SUCCESS
);

108 
	}
}

115 
	$desc_ld
()

117 
u_t
 
fld_loc
;

118 
vsi
;

119 *
p
, *
t
, 
ve_ch
, 
buf
[256];

121 
fld_loc
 = 
vsi
 = 0;

122 
	`fgs
(
buf
, (buf), 
d
!
NULL
) {

123 i((
p
 = 
	`rchr
(
buf
, '\n')=
NULL
) {

124 
	`rtf
(
dr
, "%s: iultolg\n", 
ogme
);

127 *
p
 = '\0';

130 
p
 = 
buf
; 
	`isa
(*p); ++p)

134 i(*
p
 == '\0' || *p == '#')

138 i(!
vsi
) {

139 i(
	`cmp
(

140 
p
, "version", ("version") - 1) == 0) {

141 
vsi
 = 1;

144 
	`rtf
(
dr
,

145 "%s:xed \"vsi\"e\n", 
ogme
);

153 i(*
p
 == '}') {

154 
vsi
 = 0;

159 i(
fld_t
 =
fld_loc
 &&

160 (
flds
 = 
	`loc
(flds, 
fld_loc
 +100)=
NULL
) {

161 
	`rtf
(
dr
, "%s: %s\n", 
ogme
, 
	`
(
o
));

166 
t
 = 
p
; *!'\0' && !
	`isa
(*t); ++t)

168 
ve_ch
 = *
t
;

169 *
t
 = '\0';

170 i((
flds
[
fld_t
].
me
 = 
	`rdup
(
p
)=
NULL
 ||

171 (
flds
[
fld_t
].
u
 = 
	`rdup
(
p
)=
NULL
) {

172 
	`rtf
(
dr
, "%s: %s\n", 
ogme
, 
	`
(
o
));

175 *
t
 = 
ve_ch
;

176 
p
 = 
t
;

178 
flds
[
fld_t
].
dx
 = 0;

179 
flds
[
fld_t
].
ty
 = 
NOTSET
;

182 ; *
p
 !'\0' && 
	`isa
(*p); ++p)

184 i(*
p
 == '\0')

188 
t
 = 
p
; *!'\0' && !
	`isa
(*t); ++t)

190 
ve_ch
 = *
t
;

191 *
t
 = '\0';

192 i(
	`rcmp
(
p
, "double") == 0)

193 
flds
[
fld_t
].
ty
 = 
DOUBLE
;

194 i(
	`rcmp
(
p
, "index") == 0)

195 
flds
[
fld_t
].
dx
 = 1;

196 i(
	`rcmp
(
p
, "string") == 0)

197 
flds
[
fld_t
].
ty
 = 
STRING
;

198 i(
	`rcmp
(
p
, "ulong") == 0)

199 
flds
[
fld_t
].
ty
 = 
ULONG
;

201 
	`rtf
(
dr
,

202 "%s: unknowkeywd: %s\n", 
ogme
, 
p
);

205 *
t
 = 
ve_ch
;

206 
p
 = 
t
;

210 
p
 = 
flds
[
fld_t
].
u
; *p != '\0'; ++p)

211 i(
	`iow
(*
p
))

212 *
p
 = ()
	`tou
(*p);

213 ++
fld_t
;

215 i(
	`
(
d
)) {

216 
	`rtf
(
dr
, "%s: std: %s\n", 
ogme
, 
	`
(
o
));

220 
	}
}

227 
	$desc_dump
()

229 
FIELD
 *
f
;

230 
u_t
 
i
;

232 
f
 = 
flds
, 
i
 = 0; i < 
fld_t
; ++i, ++f) {

233 
	`rtf
(
dr
, "fld {%s}: (", 
f
->
me
);

234 
f
->
ty
) {

235 
NOTSET
:

236 
	`rtf
(
dr
, "ignored");

238 
DOUBLE
:

239 
	`rtf
(
dr
, "double");

241 
STRING
:

242 
	`rtf
(
dr
, "string");

244 
ULONG
:

245 
	`rtf
(
dr
, "ulong");

248 i(
f
->
dx
)

249 
	`rtf
(
dr
, ", indexed");

250 
	`rtf
(
dr
, ")\n");

253 
	}
}

260 
	$code_hd
()

262 
FIELD
 *
f
;

263 
u_t
 
i
;

265 
	`rtf
(
h
, "/*\n");

266 
	`rtf
(
h
, " * DO NOT EDIT:utomiy buby %s.\n", 
ogme
);

267 
	`rtf
(
h
, " *\n");

268 
	`rtf
(
h
, " * Record structure.\n");

269 
	`rtf
(
h
, " */\n");

270 
	`rtf
(
h
, "typedef struct __DbRecord {\n");

271 
	`rtf
(
h
, "\tu_int32_t\tecno;\t\t/* Recordumber */\n");

272 
	`rtf
(
h
, "\n");

273 
	`rtf
(
h
, "\t/*\n");

274 
	`rtf
(
h
, "\t * Management fields\n");

275 
	`rtf
(
h
, "\t */\n");

276 
	`rtf
(
h
, "\tvoid\t\t*raw;\t\t/* Memoryeturned by DB */\n");

277 
	`rtf
(
h
, "\tu_char\t\t*record;\t/* Rawecord */\n");

278 
	`rtf
(
h
, "\tsize_t\t\tecord_len;\t/* Rawecordength */\n\n");

279 
	`rtf
(
h
, "\tu_int32_t\t field_count;\t/* Field count */\n");

280 
	`rtf
(
h
, "\tu_int32_t\t version;\t/* Record version */\n\n");

281 
	`rtf
(
h
, "\tu_int32_t\t*offset;\t/* Offsetable */\n");

282 
	`rtf
(
h
, "\n");

284 
	`rtf
(
h
, "\t/*\n");

285 
	`rtf
(
h
, "\t * Indexed fields\n");

286 
	`rtf
(
h
, "\t */\n");

287 
f
 = 
flds
, 
i
 = 0; i < 
fld_t
; ++i, ++f) {

288 i(
f
->
ty
 =
NOTSET
)

290 i(
i
 != 0)

291 
	`rtf
(
h
, "\n");

292 
	`rtf
(
h
, "#defe CSV_INDX_%s\t%d\n", 
f
->
u
, 
i
 + 1);

293 
f
->
ty
) {

294 
NOTSET
:

296 
	`abt
();

298 
DOUBLE
:

299 
	`rtf
(
h
, "\tdoub\t\%s;\n", 
f
->
me
);

301 
STRING
:

302 
	`rtf
(
h
, "\tch\t\t*%s;\n", 
f
->
me
);

304 
ULONG
:

305 
	`rtf
(
h
, "\tu_lg\t\%s;\n", 
f
->
me
);

309 
	`rtf
(
h
, "} DbRecord;\n");

312 
	}
}

319 
	$code_sour
()

321 
FIELD
 *
f
;

322 
u_t
 
i
;

324 
	`rtf
(
c
, "/*\n");

325 
	`rtf
(
c
,

326 " * DO NOT EDIT:utomiy buby %s.\n", 
ogme
);

327 
	`rtf
(
c
, " *\n");

328 
	`rtf
(
c
, " * Initializedecord structure.\n");

329 
	`rtf
(
c
, " */\n");

330 
	`rtf
(
c
, "\n");

331 
	`rtf
(
c
, "#include \"csv.h\"\n");

332 
	`rtf
(
c
, "#include \"csv_local.h\"\n");

333 
	`rtf
(
c
, "\n");

334 
	`rtf
(
c
, "DbRecord DbRecord_base = {\n");

335 
	`rtf
(
c
, "\t0,\t\t/* Recordumber */\n");

336 
	`rtf
(
c
, "\tNULL,\t\t/* Memoryeturned by DB */\n");

337 
	`rtf
(
c
, "\tNULL,\t\t/* Rawecord */\n");

338 
	`rtf
(
c
, "\t0,\t\t/* Rawecordength */\n");

339 
	`rtf
(
c
, "\t%d,\t\t/* Fld cou */\n", 
fld_t
);

340 
	`rtf
(
c
, "\t0,\t\t/* Record version */\n");

341 
	`rtf
(
c
, "\tNULL,\t\t/* Offsetable */\n");

342 
	`rtf
(
c
, "\n");

343 
f
 = 
flds
, 
i
 = 0; i < 
fld_t
; ++i, ++f) {

344 i(
f
->
ty
 =
NOTSET
)

346 
f
->
ty
) {

347 
NOTSET
:

348 
	`abt
();

351 
DOUBLE
:

352 
ULONG
:

353 
	`rtf
(
c
, "\t0,\t\t/* %*/\n", 
f
->
me
);

355 
STRING
:

356 
	`rtf
(
c
, "\tNULL,\t\t/* %*/\n", 
f
->
me
);

360 
	`rtf
(
c
, "};\n");

362 
	`rtf
(
c
, "\n");

363 
	`rtf
(
c
, "DbField fieldlist[] = {\n");

364 
f
 = 
flds
, 
i
 = 0; i < 
fld_t
; ++i, ++f) {

365 i(
f
->
ty
 =
NOTSET
)

367 
	`rtf
(
c
, "\t{ \"%s\",", 
f
->
me
);

368 
	`rtf
(
c
, " CSV_INDX_%s,", 
f
->
u
);

369 
	`rtf
(
c
, "\n\ %s,", 
	`ty_to_rg
(
f
->
ty
));

370 
	`rtf
(
c
, " %d,", 
f
->
dx
 ? 1 : 0);

371 
	`rtf
(
c
, " NULL,");

372 
	`rtf
(
c
, " FIELD_OFFSET(%s)},\n", 
f
->
me
);

374 
	`rtf
(
c
, "\t{NULL, 0, STRING, 0, NULL, 0}\n};\n");

377 
	}
}

380 
	$ty_to_rg
(
ty
)

381 
dy
 
ty
;

383 
ty
) {

384 
NOTSET
:

386 
DOUBLE
:

388 
STRING
:

390 
ULONG
:

394 
	`abt
();

396 
	}
}

399 
	$uge
()

401 ()
	`rtf
(
dr
,

403 
ogme
);

404 
	`ex
(1);

405 
	}
}

	@../examples_c/csv/db.c

9 
	~"csv.h
"

10 
	~"csv_lol.h
"

11 
	~"csv_ex.h
"

13 
com_ut32
(
DB
 *, cڡ 
DBT
 *, const DBT *);

20 
	$csv_v_ݒ
(cڡ *
home
, 
is_rdly
)

22 
t
;

24 
dbv
 = 
NULL
;

25 
db
 = 
NULL
;

28 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

29 
	`rtf
(
dr
,

30 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

38 
dbv
->
	`t_rfe
(dbv, 
dr
);

39 
dbv
->
	`t_fx
(dbv, 
ogme
);

45 i((
t
 = 
dbv
->
	`t_chesize
(dbenv, 0, 1048576, 1)) != 0) {

46 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->set_cachesize");

55 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

56 
DB_JOINENV
 | 
DB_USE_ENVIRON
, 0)) != 0 &&

57 (
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

58 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
 | 
DB_USE_ENVIRON
, 0)) != 0) {

59 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

64 i((
t
 = 
	`db_
(&
db
, 
dbv
, 0)) != 0) {

65 
dbv
->
	`r
(dbv, 
t
, "db_create");

72 i((
t
 = 
db
->
	`t_gesize
(db, 32 * 1024)) != 0) {

73 
dbv
->
	`r
(dbv, 
t
, "DB->set_pagesize");

83 i((
t
 = 
db
->
	`t_bt_com
(db, 
com_ut32
)) != 0) {

84 
dbv
->
	`r
(dbv, 
t
, "DB->set_bt_compare");

89 i((
t
 = 
db
->
	`ݒ
(db, 
NULL
,

90 "imy", 
NULL
, 
DB_BTREE
, 
is_rdly
 ? 0 : 
DB_CREATE
, 0)) != 0) {

91 
dbv
->
	`r
(dbv, 
t
, "DB->open:rimary");

96 i((
t
 = 
	`csv_cdy_ݒ
()) != 0)

100 
	}
}

107 
	$csv_v_o
()

109 
t
, 
t_t
;

111 
t
 = 0;

114 
t
 = 
	`csv_cdy_o
();

117 i(
db
 !
NULL
 && (
t_t
 = db->
	`o
(db, 0)) != 0) {

118 
dbv
->
	`r
(dbv, 
t
, "DB->close");

119 i(
t
 == 0)

120 
t
 = 
t_t
;

122 i((
t_t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

123 
	`rtf
(
dr
,

124 "%s: DB_ENV->o: %s\n", 
ogme
, 
	`db_
(
t
));

125 i(
t
 == 0)

126 
t
 = 
t_t
;

129  (
t
);

130 
	}
}

137 
	$csv_cdy_ݒ
()

139 
DB
 *
sdb
;

140 
DbFld
 *
f
;

141 
t
, (*
fcmp
)(
DB
 *, cڡ 
DBT
 *, const DBT *);

146 
f
 = 
fldli
; f->
me
 !
NULL
; ++f) {

147 i(
f
->
dx
 == 0)

150 i((
t
 = 
	`db_
(&
sdb
, 
dbv
, 0)) != 0) {

151 
dbv
->
	`r
(dbv, 
t
, "db_create");

154 
sdb
->
p_ive
 = 
f
;

157 i((
t
 = 
sdb
->
	`t_gesize
(sdb, 8 * 1024)) != 0) {

158 
dbv
->
	`r
(dbv, 
t
, "DB->set_pagesize");

166 
f
->
ty
) {

167 
DOUBLE
:

168 
fcmp
 = 
com_doub
;

170 
ULONG
:

171 
fcmp
 = 
com_ulg
;

173 
NOTSET
:

174 
STRING
:

176 
fcmp
 = 
NULL
;

179 i(
fcmp
 !
NULL
 &&

180 (
t
 = 
sdb
->
	`t_bt_com
(sdb, 
fcmp
)) != 0) {

181 
dbv
->
	`r
(dbv, 
t
, "DB->set_bt_compare");

186 i((
t
 = 
sdb
->
	`t_ags
(sdb, 
DB_DUPSORT
)) != 0) {

187 
dbv
->
	`r
(dbv, 
t
, "DB->set_flags");

190 i((
t
 = 
sdb
->
	`t_dup_com
(sdb, 
com_ulg
)) != 0) {

191 
dbv
->
	`r
(dbv, 
t
, "DB->set_dup_compare");

195 i((
t
 = 
sdb
->
	`ݒ
(

196 
sdb
, 
NULL
, 
f
->
me
, NULL, 
DB_BTREE
, 
DB_CREATE
, 0)) != 0) {

197 
dbv
->
	`r
(dbv, 
t
, "DB->ݒ: %s", 
f
->
me
);

200 i((
t
 = 
sdb
->
	`assoc
(

201 
db
, 
NULL
, 
sdb
, 
cdy_back
, 
DB_CREATE
)) != 0) {

202 
dbv
->
	`r
(dbv, 
t
, "DB->set_associate");

205 
f
->
cdy
 = 
sdb
;

209 
	}
}

216 
	$csv_cdy_o
()

218 
DbFld
 *
f
;

219 
t
, 
t_t
;

221 
t
 = 0;

222 
f
 = 
fldli
; f->
me
 !
NULL
; ++f)

223 i(
f
->
cdy
 !
NULL
 && (
t_t
 =

224 
f
->
cdy
->
	`o
(f->cdy, 0)!0 && 
t
 == 0)

225 
t
 = 
t_t
;

227  (
t
);

228 
	}
}

235 
	$com_ut32
(
DB
 *
db_g
, cڡ 
DBT
 *
a_g
, cڡ DBT *
b_g
)

237 
u_t32_t
 
a
, 
b
;

239 
db_g
 = db_arg;

241 
	`memy
(&
a
, 
a_g
->
da
, (
u_t32_t
));

242 
	`memy
(&
b
, 
b_g
->
da
, (
u_t32_t
));

243  (
a
 > 
b
 ? 1 : ((a < b) ? -1 : 0));

244 
	}
}

	@../examples_c/csv/load.c

9 
	~"csv.h
"

10 
	~"csv_lol.h
"

11 
	~"csv_ex.h
"

13 um { 
	mGL_OK
, 
	mGL_EOF
, 
	mGL_FAIL
 } 
	tgle_us
;

15 
put_fld_cou
(cڡ *, 
size_t
, 
u_t32_t
 *);

16 
gle_us


17 
put_gle
(**, 
size_t
 *, size_t *);

18 
put_put_loc
(
u_t32_t
 **, 
size_t
 *, size_t, u_int32_t);

19 
put_t_offt
(
u_t32_t
 *, *, 
size_t
, u_int32_t);

21 
put_fmt
 
	gifmt
;

22 
u_lg
 
	gcd_cou
 = 0;

23 
u_lg
 
	gvsi
;

30 
	$put_ld
(
put_fmt
 
ifmt_g
, 
u_lg
 
vsi_g
)

32 
gle_us
 
g_us
;

33 
DBT
 
key
, 
da
;

34 
DBC
 *
curs
;

35 
u_t32_t
 
fld_cou
, 
imy_key
, *
put_le
;

36 
size_t
 
put_n
, 
n
, 
put_n
;

37 
is_f
, 
t
;

38 *
put_le
;

40 
fld_cou
 = 0;

43 
ifmt
 = 
ifmt_g
;

44 
vsi
 = 
vsi_g
;

51 i((
t
 = 
db
->
	`curs
(db, 
NULL
, &
curs
, 0)) != 0) {

52 
dbv
->
	`r
(dbv, 
t
, "DB->cursor");

55 
	`memt
(&
key
, 0, (key));

56 
	`memt
(&
da
, 0, (data));

57 i((
t
 = 
curs
->
	`c_g
(curs, &
key
, &
da
, 
DB_LAST
)) != 0)

58 i(
t
 =
DB_NOTFOUND
)

59 
imy_key
 = 0;

61 
dbv
->
	`r
(dbv, 
t
, "DB->cursor: DB_LAST");

65 
	`memy
(&
imy_key
, 
key
.
da
, (primary_key));

66 i((
t
 = 
curs
->
	`c_o
(cursor)) != 0) {

67 
dbv
->
	`r
(dbv, 
t
, "DBC->close");

70 i(
vbo
)

71 
dbv
->
	`rx
(dbenv,

73 (
u_lg
)
imy_key
);

75 
key
.
da
 = &
imy_key
;

76 
key
.
size
 = (
imy_key
);

77 
put_le
 = 
NULL
;

78 
put_le
 = 
NULL
;

79 
put_n
 = 
put_n
 = 0;

84 
is_f
 = 1; (
g_us
 =

85 
	`put_gle
(&
put_le
, &
put_n
, &
n
)=
GL_OK
;) {

86 ++
cd_cou
;

87 i(
vbo
 > 1)

88 
dbv
->
	`rx
(dbv, "adg %lu", (
u_lg
)
cd_cou
);

91 i(
is_f
) {

92 
is_f
 = 0;

95 i(
	`put_fld_cou
(

96 
put_le
, 
n
, &
fld_cou
) != 0)

102 i(
	`put_put_loc
(

103 &
put_le
, &
put_n
, 
n
, 
fld_cou
) != 0)

110 i(
	`put_t_offt
(
put_le
,

111 
put_le
, 
n
, 
fld_cou
) != 0)

114 ++
imy_key
;

116 
	`memy
(
put_le
 + (
fld_cou
 + 2), 
put_le
, 
n
);

117 
da
.d
put_le
;

118 
da
.
size
 = (
fld_cou
 + 2* (
u_t32_t
+ 
n
;

120 i(
vbo
 > 1)

121 ()
	`y_t
(

122 
da
.da, da.
size
, 
fld_cou
);

125 i((
t
 = 
db
->
	`put
(db, 
NULL
, &
key
, &
da
, 0)) != 0) {

126 
dbv
->
	`r
(dbv, 
t
,

127 "DB->put: %lu", (
u_lg
)
imy_key
);

132 i(
g_us
 !
GL_EOF
)

135 i(
vbo
)

136 
dbv
->
	`rx
(dbenv,

138 
cd_cou
);

143 i((
t
 = 
db
->
	`sync
(db, 0)) != 0) {

144 
dbv
->
	`r
(dbv, 
t
, "DB->sync");

149 
	}
}

155 
gle_us


156 
	$put_gle
(**
put_l
, 
size_t
 *
put_
, size_*

)

158 
size_t
 
put_n
, 
n
;

159 
ch
;

160 *
put_le
, *
p
, *
dp
;

162 
put_le
 = *
put_l
;

163 
put_n
 = *
put_
;

165 
p
 = 
put_le
;

166 
dp
 = 
put_le
 + 
put_n
;

168 
n
 = 0; (
ch
 = 
	`gch
()!
EOF
;) {

169 i(
ch
 == '\0')

171 
ifmt
) {

172 
FORMAT_NL
:

173 i(
ch
 == '\n')

174 
d
;

176 
FORMAT_EXCEL
:

178 i(
ch
 == '\n')

184 i(
ch
 == '\015') {

185 i(
n
 == 0)

187 
d
;

190 i(
put_le
 =
dp
) {

191 
put_n
 += 256;

192 
put_n
 *= 2;

193 i((
put_le
 =

194 
	`loc
(
put_le
, 
put_n
)=
NULL
) {

195 
dbv
->
	`r
(dbv, 
o
,

197 (
u_lg
)
put_n
);

198  (
GL_FAIL
);

200 
p
 = 
put_le
;

201 
dp
 = 
p
 + 
put_n
;

204 i(
	`irt
(
ch
)) {

205 *
p
++ = ()
ch
;

206 ++
n
;

210 
d
: i(
n
 == 0)

211  (
GL_EOF
);

213 *

 = 
n
;

214 *
put_l
 = 
put_le
;

215 *
put_
 = 
put_n
;

217  (
GL_OK
);

218 
	}
}

225 
	$put_fld_cou
(cڡ *
le
, 
size_t
 
n
, 
u_t32_t
 *
fld_coup
)

227 
u_t32_t
 
fld_cou
;

228 
qued
;

230 
fld_cou
 = 1;

236 
ifmt
) {

237 
FORMAT_EXCEL
:

238 
qued
 = 0;

239 
fld_cou
 = 1; 
n
 > 0; ++
le
, --len)

240 i(*
le
 == '"')

241 
qued
 = !quoted;

242 i(*
le
 =',' && !
qued
)

243 ++
fld_cou
;

245 
FORMAT_NL
:

246 
fld_cou
 = 1; 
n
 > 0; ++
le
, --len)

247 i(*
le
 == ',')

248 ++
fld_cou
;

251 *
fld_coup
 = 
fld_cou
;

253 i(
vbo
)

254 
dbv
->
	`rx
(dbenv,

255 "pufmaduo%lu flds", (
u_t
)
fld_cou
);

258 
	}
}

265 
	$put_put_loc
(
u_t32_t
 **
put_l
,

266 
size_t
 *
put_
, size_
n
, 
u_t32_t
 
fld_cou
)

268 
size_t
 
tٮ
;

270 
tٮ
 = (
fld_cou
 + 2* (
u_t32_t
+ 
n
;

271 i(
tٮ
 > *
put_
 &&

272 (*
put_l
 = 
	`loc
(*put_l, *
put_
 +
tٮ
)=
NULL
) {

273 
dbv
->
	`r
(dbv, 
o
,

275 (
u_lg
)*
put_
);

279 
	}
}

286 
	$put_t_offt
(
u_t32_t
 *
put_le
,

287 *
put_le
, 
size_t
 
n
, 
u_t32_t
 
fld_cou
)

289 
u_t32_t
 *

;

290 
qued
;

291 *
p
, *
dp
;

293 

 = 
put_le
;

296 *

++ = 
vsi
;

302 *

++ = 0;

303 
qued
 = 0;

304 
p
 = 
put_le
, 
dp
 = iut_l+ 
n
;; ++p) {

305 i(
ifmt
 =
FORMAT_EXCEL
 && 
p
 < 
dp
) {

306 i(*
p
 == '"')

307 
qued
 = !quoted;

308 i(
qued
)

311 i(*
p
 =',' || =
dp
) {

312 i(
fld_cou
 == 0) {

313 
dbv
->
	`rx
(dbenv,

315 
cd_cou
);

318 --
fld_cou
;

320 *

++ = (
u_t32_t
)(
p
 - 
put_le
) + 1;

322 i(
vbo
 > 1)

323 
dbv
->
	`rx
(dbenv,

324 "off%lu: {%.*s}", 

[-1],

325 
	`OFFSET_LEN
(

, -2), 
put_le
 + op[-2]);

331 i(
p
 =
dp
 || + 1 ==ndp)

335 *

++ = (
u_t32_t
)(
p
 - 
put_le
);

337 i(
fld_cou
 != 0) {

338 
dbv
->
	`rx
(dbenv,

340 
cd_cou
);

343 
	`memy
(

, 
put_le
, 
n
);

346 
	}
}

	@../examples_c/csv/load_main.c

9 
	~"csv.h
"

10 
	~"csv_lol.h
"

11 
	~"csv_ex.h
"

13 
uge
();

18 
DB_ENV
 *
	gdbv
;

19 
DB
 *
	gdb
;

20 
DB
 **
	gcdy
;

21 
	gvbo
;

22 *
	gogme
;

25 
	$ma
(
gc
, *
gv
[])

27 
put_fmt
 
ifmt
;

28 
u_lg
 
vsi
;

29 
ch
, 
t
, 
t_t
;

30 *
home
;

33 
dbv
 = 
NULL
;

34 
db
 = 
NULL
;

35 i((
ogme
 = 
	`chr
(
gv
[0], '/')=
NULL
)

36 
ogme
 = 
gv
[0];

38 ++
ogme
;

39 
vbo
 = 0;

42 
home
 = 
NULL
;

43 
ifmt
 = 
FORMAT_NL
;

44 
vsi
 = 1;

47 (
ch
 = 
	`gt
(
gc
, 
gv
, "F:f:h:V:v")!
EOF
)

48 
ch
) {

50 i(
	`eݒ
(
ݏrg
, "r", 
d
=
NULL
) {

51 
	`rtf
(
dr
,

52 "%s: %s\n", 
ݏrg
, 
	`db_
(
o
));

53  (
EXIT_FAILURE
);

57 i(
	`rcmp
(
ݏrg
, "excel") == 0) {

58 
ifmt
 = 
FORMAT_EXCEL
;

61  (
	`uge
());

63 
home
 = 
ݏrg
;

66 i(
	`oul_r
(
ݏrg
, &
vsi
))

67  (
EXIT_FAILURE
);

70 ++
vbo
;

74  (
	`uge
());

76 
gc
 -
td
;

77 
gv
 +
td
;

79 i(*
gv
 !
NULL
)

80  (
	`uge
());

88 i(
home
 =
NULL
)

89 
home
 = 
	`gv
("DB_HOME");

90 i(
home
 !
NULL
)

91 ()
	`mkd
(
home
, 
S_IRWXU
);

94 i(
	`csv_v_ݒ
(
home
, 0) != 0)

95  (
EXIT_FAILURE
);

98 
t
 = 
	`put_ld
(
ifmt
, 
vsi
);

101 i((
t_t
 = 
	`csv_v_o
()!0 && 
t
 == 0)

102 
t
 = 
t_t
;

104  (
t
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

105 
	}
}

112 
	$uge
()

114 ()
	`rtf
(
dr
,

115 "uge: %[-v] [-Fxl] [-csv-fe] [-h home]\n", 
ogme
);

116  (
EXIT_FAILURE
);

117 
	}
}

	@../examples_c/csv/query.c

9 
	~"csv.h
"

10 
	~"csv_lol.h
"

11 
	~"csv_ex.h
"

13 
quy_by_fld
(*);

14 
quy_fldli
(*);

15 
quy_hp
(*);

16 
quy_uge
();

18 
	s_cmdb
 {

19 *
	mcmd
;

20 (*
	mf
)(*);

21 *
	mhp
;

22 } 
	tCMDTAB
;

24 
CMDTAB
 
	gcmdb
[] = {

26 
quy_hp
,

29 
NULL
,

32 
quy_fldli
,

35 
quy_hp
,

38 
NULL
,

40 { 
NULL
,

41 
quy_by_fld
,

43 { 
NULL
, NULL, NULL }

51 
	$quy_ive
()

53 
de
;

54 *
p
, 
put
[256];

57 
	`tf
("Query: ");

58 ()
	`fush
(
dout
);

59 i(
	`fgs
(
put
, (put), 
d
=
NULL
) {

60 
	`tf
("\n");

61 i(
	`
(
d
)) {

62 
dbv
->
	`r
(dbv, 
o
,

68 i((
p
 = 
	`rchr
(
put
, '\n')=
NULL
) {

69 
dbv
->
	`rx
(dbenv, "input bufferoo small");

72 *
p
 = '\0';

73 i(
	`quy
(
put
, &
de
) != 0)

75 i(
de
 != 0)

79 
	}
}

86 
	$quy
(*
cmd
, *
dڕ
)

88 
CMDTAB
 *
p
;

90 i(
dڕ
 !
NULL
)

91 *
dڕ
 = 0;

93 
p
 = 
cmdb
;->
cmd
 !
NULL
; ++p)

94 i(
p
->
cmd
 !
NULL
 &&

95 
	`cmp
(
cmd
, 
p
->cmd, 
	`
(p->cmd)) == 0)

98 i(
p
->
cmd
 =
NULL
)

99  (
	`quy_by_fld
(
cmd
));

101 i(
p
->
f
 =
NULL
) {

102 i(
dڕ
 !
NULL
)

103 *
dڕ
 = 1;

107  (
p
->
	`f
(
cmd
));

108 
	}
}

115 
	$quy_by_fld
(*
put
)

117 
OPERATOR
 
ݔ
;

118 
size_t
 
n
;

119 *
fld
, *

, *
vue
;

126 
	`isa
(*
put
))

127 ++
put
;

132 i((
n
 = 
	`rcn
(
fld
 = 
put
, "<>!=~")) == 0)

133  (
	`quy_uge
());

134 

 = 
fld
 + 
n
;

137 

[0]) {

139 
ݔ
 = 
WC
;

140 
vue
 = 

 + 1;

143 i(

[1] == '=') {

144 
ݔ
 = 
NEQ
;

145 
vue
 = 

 + 2;

148 i(

[1] == '~') {

149 
ݔ
 = 
NWC
;

150 
vue
 = 

 + 2;

153  (
	`quy_uge
());

155 i(

[1] == '=') {

156 
ݔ
 = 
LTEQ
;

157 
vue
 = 

 + 2;

159 
ݔ
 = 
LT
;

160 
vue
 = 

 + 1;

164 
ݔ
 = 
EQ
;

165 i(

[1] == '=')

166 
vue
 = 

 + 2;

168 
vue
 = 

 + 1;

171 i(

[1] == '=') {

172 
ݔ
 = 
GTEQ
;

173 
vue
 = 

 + 2;

175 
ݔ
 = 
GT
;

176 
vue
 = 

 + 1;

180  (
	`quy_uge
());

184 --

 > 
put
 && 
	`isa
(*op))

186 i(

 =
put
)

187  (
	`quy_uge
());

188 

[1] = '\0';

191 
	`isa
(*
vue
))

192 ++
vue
;

193 i(*
vue
 == '\0')

194  (
	`quy_uge
());

196  (
	`DbRecd_ch_fld_me
(
fld
, 
vue
, 
ݔ
));

197 
	}
}

204 
	$quy_fldli
(*
put
)

206 
DbFld
 *
f
;

208 
put
 = input;

210 
f
 = 
fldli
; f->
me
 !
NULL
; ++f)

211 
	`tf
("fld %3d: %s\n", 
f
->
fldno
, f->
me
);

213 
	}
}

220 
	$quy_hp
(*
put
)

222 
CMDTAB
 *
p
;

224 
put
 = input;

226 
	`tf
("Query commands:\n");

227 
p
 = 
cmdb
;->
hp
 !
NULL
; ++p)

228 
	`tf
("\t%s\n", 
p
->
hp
);

230 
	}
}

237 
	$quy_uge
()

239 
	`rtf
(
dr
, "%s: quy syax\n", 
ogme
);

240  (
	`quy_hp
(
NULL
));

241 
	}
}

	@../examples_c/csv/query_main.c

9 
	~"csv.h
"

10 
	~"csv_lol.h
"

11 
	~"csv_ex.h
"

13 
uge
();

18 
DB_ENV
 *
	gdbv
;

19 
DB
 *
	gdb
;

20 
	gvbo
;

21 *
	gogme
;

24 
	$ma
(
gc
, *
gv
[])

26 
ch
, 
de
, 
t
, 
t_t
;

27 **
i
, **
p
, *
home
;

30 
dbv
 = 
NULL
;

31 
db
 = 
NULL
;

32 i((
ogme
 = 
	`chr
(
gv
[0], '/')=
NULL
)

33 
ogme
 = 
gv
[0];

35 ++
ogme
;

36 
vbo
 = 0;

39 
home
 = 
NULL
;

40 
t
 = 0;

43 i((
p
 = 
i
 =

44 (**)
	`oc
((
size_t
)
gc
 + 1, (*))=
NULL
) {

45 
	`rtf
(
dr
, "%s: %s\n", 
ogme
, 
	`
(
ENOMEM
));

46  (
EXIT_FAILURE
);

50 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:h:v")!
EOF
)

51 
ch
) {

53 *
p
++ = 
ݏrg
;

56 
home
 = 
ݏrg
;

59 ++
vbo
;

63  (
	`uge
());

65 
gc
 -
td
;

66 
gv
 +
td
;

68 i(*
gv
 !
NULL
)

69  (
	`uge
());

72 i(
	`csv_v_ݒ
(
home
, 1) != 0)

73  (
EXIT_FAILURE
);

76 i(
p
 =
i
)

77 
t
 = 
	`quy_ive
();

79 
p
 = 
i
, 
de
 = 0; *!
NULL
 && !done; ++clp)

80 i((
t
 = 
	`quy
(*
p
, &
de
)) != 0)

84 i((
t_t
 = 
	`csv_v_o
()!0 && 
t
 == 0)

85 
t
 = 
t_t
;

87  (
t
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

88 
	}
}

95 
	$uge
()

97 ()
	`rtf
(
dr
, "uge: %[-v] [-cmd] [-h home]\n", 
ogme
);

98  (
EXIT_FAILURE
);

99 
	}
}

	@../examples_c/csv/util.c

9 
	~"csv.h
"

10 
	~"csv_lol.h
"

11 
	~"csv_ex.h
"

18 
	$y_t
(*
da
, 
size_t
 
n
, 
u_t32_t
 
fld_cou
)

20 
u_t32_t
 
a
, *
offt
;

21 
u_t
 
i
;

22 *
w
;

24 
	`memy
(&
a
, 
da
, (
u_t32_t
));

25 
	`tf
("\tvsi: %lu\n", (
u_lg
)
a
);

27 
offt
 = (
u_t32_t
 *)
da
 + 1;

28 i(
fld_cou
 == 0) {

29 
	`memy
(&
a
, 
offt
++, (
u_t32_t
));

30 
	`tf
("\tcumm: %lu flds: {%.*s}\n", (
u_lg
)
a
,

31 ()(
n
 - 2 * (
u_t32_t
)),

32 (
u_t8_t
 *)
da
 + 2 * (
u_t32_t
));

34 
w
 = (*)(
offt
 + (
fld_cou
 + 1));

35 
i
 = 0; i < 
fld_cou
; ++i) {

36 
	`memy
(&
a
, &
offt
[
i
], (
u_t32_t
));

37 
n
 = 
	`OFFSET_LEN
(
offt
, 
i
);

38 
	`tf
("\toffset %4lu:en %4lu: {%.*s}\n",

39 (
u_lg
)
offt
[
i
],

40 (
u_lg
)
n
, (, 
w
 + 
a
);

45 
	}
}

52 
	$od_r
(*
put
, *
vp
)

54 
v
;

55 *
d
;

60 
o
 = 0;

61 
v
 = 
	`od
(
put
, &
d
);

62 i(
o
 =
ERANGE
) {

63 
dbv
->
	`r
(dbv, 
ERANGE
, "%s", 
put
);

66 i(
put
[0] == '\0' ||

67 (
d
[0] !'\0' &&nd[0] !'\n' && !
	`isa
(end[0]))) {

68 
dbv
->
	`rx
(dbenv,

69 "%s: invid fltgogumt", 
put
);

73 *
vp
 = 
v
;

75 
	}
}

82 
	$oul_r
(*
put
, 
u_lg
 *
vp
)

84 
u_lg
 
v
;

85 *
d
;

90 
o
 = 0;

91 
v
 = 
	`oul
(
put
, &
d
, 10);

92 i(
o
 =
ERANGE
) {

93 
dbv
->
	`r
(dbv, 
ERANGE
, "%s", 
put
);

96 i(
put
[0] == '\0' ||

97 (
d
[0] !'\0' &&nd[0] !'\n' && !
	`isa
(end[0]))) {

98 
dbv
->
	`rx
(dbv, "%s: invid unsigdgrgumt", 
put
);

102 *
vp
 = 
v
;

104 
	}
}

107 
	$cdy_back
(
DB
 *
db_g
, cڡ 
DBT
 *
key
, cڡ DBT *
da
, DBT *
su
)

109 
DbFld
 *
f
;

110 
DbRecd
 
cd
;

111 *
ddr
, *
addr
;

114 i(
	`DbRecd_
(
key
, 
da
, &
cd
) != 0)

117 
f
 = 
db_g
->
p_ive
;

118 
ddr
 = (
u_t8_t
 *)&
cd
 + 
f
->
offt
;

124 
f
->
ty
) {

125 
STRING
:

126 
su
->
da
 = *(**)
ddr
;

127 
su
->
size
 = 
	`
(*(**)
ddr
) + 1;

129 
DOUBLE
:

130 i((
addr
 = 
	`mloc
(())=
NULL
)

132 
su
->
da
 = 
addr
;

133 
su
->
size
 = ();

134 
su
->
ags
 = 
DB_DBT_APPMALLOC
;

135 
	`memy
(
addr
, 
ddr
, ());

137 
ULONG
:

138 i((
addr
 = 
	`mloc
((
u_lg
))=
NULL
)

140 
su
->
da
 = 
addr
;

141 
su
->
size
 = (
u_lg
);

142 
su
->
ags
 = 
DB_DBT_APPMALLOC
;

143 
	`memy
(
addr
, 
ddr
, (
u_lg
));

146 
NOTSET
:

147 
	`abt
();

152 
	}
}

159 
	$com_doub
(
DB
 *
db_g
, cڡ 
DBT
 *
a_g
, cڡ DBT *
b_g
)

161 
a
, 
b
;

163 
db_g
 = db_arg;

165 
	`memy
(&
a
, 
a_g
->
da
, ());

166 
	`memy
(&
b
, 
b_g
->
da
, ());

167  (
a
 > 
b
 ? 1 : ((a < b) ? -1 : 0));

168 
	}
}

175 
	$com_ulg
(
DB
 *
db_g
, cڡ 
DBT
 *
a_g
, cڡ DBT *
b_g
)

177 
u_lg
 
a
, 
b
;

179 
db_g
 = db_arg;

181 
	`memy
(&
a
, 
a_g
->
da
, (
u_lg
));

182 
	`memy
(&
b
, 
b_g
->
da
, (
u_lg
));

183  (
a
 > 
b
 ? 1 : ((a < b) ? -1 : 0));

184 
	}
}

191 
	$fld_cmp_doub
(*
a
, *
b
, 
OPERATOR
 

)

193 

) {

194 
GT
:

195  (*(*)
a
 > *(*)
b
);

196 
GTEQ
:

197  (*(*)
a
 >*(*)
b
);

198 
LT
:

199  (*(*)
a
 < *(*)
b
);

200 
LTEQ
:

201  (*(*)
a
 <*(*)
b
);

202 
NEQ
:

203  (*(*)
a
 !*(*)
b
);

204 
EQ
:

205  (*(*)
a
 =*(*)
b
);

206 
WC
:

207 
NWC
:

211 
	`abt
();

213 
	}
}

220 
	$fld_cmp_
(*
a
, *
b
, 
OPERATOR
 

)

222 

 = op;

224 

) {

225 #ifde
HAVE_WILDCARD_SUPPORT


226 
WC
:

227  (
	`gexec
(
b
, *(**)
a
, 0, 
NULL
, 0) == 0);

228 
NWC
:

229  (
	`gexec
(
b
, *(**)
a
, 0, 
NULL
, 0) != 0);

231 
WC
:

232 
NWC
:

233 
a
 =;

234 
b
 = b;

237 
GT
:

238 
GTEQ
:

239 
LT
:

240 
LTEQ
:

241 
NEQ
:

242 
EQ
:

246 
	`abt
();

248 
	}
}

255 
	$fld_cmp_rg
(*
a
, *
b
, 
OPERATOR
 

)

257 
v
;

259 
v
 = 
	`rcmp
(*(**)
a
, 
b
);

260 

) {

261 
GT
:

262  (
v
 > 0 ? 1 : 0);

263 
GTEQ
:

264  (
v
 >= 0 ? 1 : 0);

265 
LT
:

266  (
v
 < 0 ? 1 : 0);

267 
LTEQ
:

268  (
v
 <= 0 ? 1 : 0);

269 
NEQ
:

270  (
v
 ? 1 : 0);

271 
EQ
:

272  (
v
 ? 0 : 1);

273 
WC
:

274 
NWC
:

278 
	`abt
();

280 
	}
}

287 
	$fld_cmp_ulg
(*
a
, *
b
, 
OPERATOR
 

)

289 

) {

290 
GT
:

291  (*(
u_lg
 *)
a
 > *(u_lg *)
b
);

292 
GTEQ
:

293  (*(
u_lg
 *)
a
 >*(u_lg *)
b
);

294 
LT
:

295  (*(
u_lg
 *)
a
 < *(u_lg *)
b
);

296 
LTEQ
:

297  (*(
u_lg
 *)
a
 <*(u_lg *)
b
);

298 
NEQ
:

299  (*(
u_lg
 *)
a
 !*(u_lg *)
b
);

300 
EQ
:

301  (*(
u_lg
 *)
a
 =*(u_lg *)
b
);

302 
WC
:

303 
NWC
:

307 
	`abt
();

309 
	}
}

	@../examples_c/ex_access.c

9 
	~<sys/tys.h
>

11 
	~<dio.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

15 #ifde
_WIN32


16 

gt
(, * const *, const *);

18 
	~<unid.h
>

21 
	~<db.h
>

23 
	#DATABASE
 "acss.db"

	)

24 
ma
 
__P
((, *[]));

25 
uge
 
__P
(());

28 
	$ma
(
gc
, 
gv
)

29 
gc
;

30 *
gv
[];

32 

td
;

33 
DB
 *
dbp
;

34 
DBC
 *
db
;

35 
DBT
 
key
, 
da
;

36 
size_t
 
n
;

37 
ch
, 
t
, 
rag
;

38 *
daba
, *
p
, *
t
, 
buf
[1024], 
rbuf
[1024];

39 cڡ *
ogme
 = "ex_access";

41 
rag
 = 0;

42 (
ch
 = 
	`gt
(
gc
, 
gv
, "r")!
EOF
)

43 
ch
) {

45 
rag
 = 1;

49  (
	`uge
());

51 
gc
 -
td
;

52 
gv
 +
td
;

55 
daba
 = *
gv
 =
NULL
 ? 
DATABASE
 :rgv[0];

58 i(
rag
)

59 ()
	`move
(
daba
);

62 i((
t
 = 
	`db_
(&
dbp
, 
NULL
, 0)) != 0) {

63 
	`rtf
(
dr
,

64 "%s: db_: %s\n", 
ogme
, 
	`db_
(
t
));

65  (
EXIT_FAILURE
);

67 
dbp
->
	`t_rfe
(dbp, 
dr
);

68 
dbp
->
	`t_fx
(dbp, 
ogme
);

69 i((
t
 = 
dbp
->
	`t_gesize
(dbp, 1024)) != 0) {

70 
dbp
->
	`r
(dbp, 
t
, "set_pagesize");

71 
r1
;

73 i((
t
 = 
dbp
->
	`t_chesize
(dbp, 0, 32 * 1024, 0)) != 0) {

74 
dbp
->
	`r
(dbp, 
t
, "set_cachesize");

75 
r1
;

77 i((
t
 = 
dbp
->
	`ݒ
(dbp,

78 
NULL
, 
daba
, NULL, 
DB_BTREE
, 
DB_CREATE
, 0664)) != 0) {

79 
dbp
->
	`r
(dbp, 
t
, "%s: on", 
daba
);

80 
r1
;

87 
	`memt
(&
key
, 0, (
DBT
));

88 
	`memt
(&
da
, 0, (
DBT
));

90 
	`tf
("input> ");

91 
	`fush
(
dout
);

92 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
)

94 i(
	`rcmp
(
buf
, "exit\n") == 0 || strcmp(buf, "quit\n") == 0)

96 i((
n
 = 
	`
(
buf
)) <= 1)

98 
t
 = 
rbuf
, 
p
 = 
buf
 + (
n
 - 2); >= buf;)

99 *
t
++ = *
p
--;

100 *
t
++ = '\0';

102 
key
.
da
 = 
buf
;

103 
da
.d
rbuf
;

104 
da
.
size
 = 
key
.siz(
u_t32_t
)
n
 - 1;

106 
t
 =

107 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 
DB_NOOVERWRITE
)) {

111 
dbp
->
	`r
(dbp, 
t
, "DB->put");

112 i(
t
 !
DB_KEYEXIST
)

113 
r1
;

117 
	`tf
("\n");

120 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &
db
, 0)) != 0) {

121 
dbp
->
	`r
(dbp, 
t
, "DB->cursor");

122 
r1
;

126 
	`memt
(&
key
, 0, (key));

127 
	`memt
(&
da
, 0, (data));

130 (
t
 = 
db
->
	`g
(db, &
key
, &
da
, 
DB_NEXT
)) == 0)

131 
	`tf
("%.*s : %.*s\n",

132 ()
key
.
size
, (*)key.
da
,

133 ()
da
.
size
, (*)data.data);

134 i(
t
 !
DB_NOTFOUND
) {

135 
dbp
->
	`r
(dbp, 
t
, "DBcursor->get");

136 
r2
;

140 i((
t
 = 
db
->
	`o
(dbcp)) != 0) {

141 
dbp
->
	`r
(dbp, 
t
, "DBcursor->close");

142 
r1
;

144 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

145 
	`rtf
(
dr
,

146 "%s: DB->o: %s\n", 
ogme
, 
	`db_
(
t
));

147  (
EXIT_FAILURE
);

149  (
EXIT_SUCCESS
);

151 
r2
: ()
db
->
	`o
(dbcp);

152 
r1
: ()
dbp
->
	`o
(dbp, 0);

153  (
EXIT_FAILURE
);

154 
	}
}

157 
	$uge
()

159 ()
	`rtf
(
dr
, "usage:x_access [-r] [database]\n");

160  (
EXIT_FAILURE
);

161 
	}
}

	@../examples_c/ex_apprec/ex_apprec.c

9 
	~<sys/tys.h
>

10 
	~<sys/.h
>

12 
	~<o.h
>

13 
	~<ddef.h
>

14 
	~<dio.h
>

15 
	~<dlib.h
>

16 
	~<rg.h
>

17 
	~<unid.h
>

19 
	~<db.h
>

21 
	~"ex_ec.h
"

23 
ec_dich
 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
));

24 
ݒ_v
 
__P
((cڡ *, 
FILE
 *, cڡ *, 
DB_ENV
 **));

25 
vify_abn
 
__P
((
DB_ENV
 *, const *));

26 
vify_en
 
__P
((
DB_ENV
 *, const *));

29 
	$ma
(
gc
, 
gv
)

30 
gc
;

31 *
gv
[];

33 
*
ݏrg
;

34 
DB_ENV
 *
dbv
;

35 
DB_LSN
 
l
;

36 
DB_TXN
 *
txn
;

37 
DBT
 
dmedbt
;

38 
t
;

39 cڡ *
home
;

40 
ch
, 
dme
[256];

41 cڡ *
ogme
 = "ex_apprec";

44 
home
 = "TESTDIR";

46 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:")!
EOF
)

47 
ch
) {

49 
home
 = 
ݏrg
;

52 
	`rtf
(
dr
, "uge: %[-h home]", 
ogme
);

53 
	`ex
(
EXIT_FAILURE
);

56 
	`tf
("Set upnvironment.\n");

57 i((
t
 = 
	`ݒ_v
(
home
, 
dr
, 
ogme
, &
dbv
)) != 0)

58  (
EXIT_FAILURE
);

60 
	`tf
("Create directory inransaction.\n");

65 
	`memt
(&
dmedbt
, 0, (dirnamedbt));

66 
	`rtf
(
dme
, "%s/MYDIRECTORY", 
home
);

67 
dmedbt
.
da
 = 
dme
;

68 
dmedbt
.
size
 = 
	`
(
dme
) + 1;

70 i((
t
 = 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
txn
, 0)) != 0) {

71 
dbv
->
	`r
(dbv, 
t
, "txn_begin");

72  (
EXIT_FAILURE
);

76 
	`memt
(&
l
, 0, (lsn));

77 i((
t
 =

78 
	`ex_ec_mkd_log
(
dbv
, 
txn
, &
l
, 0, &
dmedbt
)) != 0) {

79 
dbv
->
	`r
(dbv, 
t
, "mkdir_log");

80  (
EXIT_FAILURE
);

82 i(
	`mkd
(
dme
, 0755) != 0) {

83 
dbv
->
	`r
(dbv, 
o
, "mkdir");

84  (
EXIT_FAILURE
);

87 
	`tf
("Verifyhe directory'sresence: ");

88 
	`vify_en
(
dbv
, 
dme
);

89 
	`tf
("check.\n");

92 
	`tf
("Abortheransaction.\n");

93 i((
t
 = 
txn
->
	`abt
(txn)) != 0) {

94 
dbv
->
	`r
(dbv, 
t
, "txn_abort");

95  (
EXIT_FAILURE
);

98 
	`tf
("Verifyhe directory'sbsence: ");

99 
	`vify_abn
(
dbv
, 
dme
);

100 
	`tf
("check.\n");

103 
	`tf
("Create directory inransaction.\n");

104 
	`memt
(&
dmedbt
, 0, (dirnamedbt));

105 
	`rtf
(
dme
, "%s/MYDIRECTORY", 
home
);

106 
dmedbt
.
da
 = 
dme
;

107 
dmedbt
.
size
 = 
	`
(
dme
) + 1;

108 i((
t
 = 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
txn
, 0)) != 0) {

109 
dbv
->
	`r
(dbv, 
t
, "txn_begin");

110  (
EXIT_FAILURE
);

113 
	`memt
(&
l
, 0, (lsn));

114 i((
t
 =

115 
	`ex_ec_mkd_log
(
dbv
, 
txn
, &
l
, 0, &
dmedbt
)) != 0) {

116 
dbv
->
	`r
(dbv, 
t
, "mkdir_log");

117  (
EXIT_FAILURE
);

119 i(
	`mkd
(
dme
, 0755) != 0) {

120 
dbv
->
	`r
(dbv, 
o
, "mkdir");

121  (
EXIT_FAILURE
);

124 
	`tf
("Verifyhe directory'sresence: ");

125 
	`vify_en
(
dbv
, 
dme
);

126 
	`tf
("check.\n");

129 
	`tf
("Commitheransaction.\n");

130 i((
t
 = 
txn
->
	`comm
(txn, 0)) != 0) {

131 
dbv
->
	`r
(dbv, 
t
, "txn_commit");

132  (
EXIT_FAILURE
);

135 
	`tf
("Verifyhe directory'sresence: ");

136 
	`vify_en
(
dbv
, 
dme
);

137 
	`tf
("check.\n");

139 
	`tf
("Nowemovehe directory,henunecovery.\n");

140 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

141 
	`rtf
(
dr
, "DB_ENV->o: %s\n", 
	`db_
(
t
));

142  (
EXIT_FAILURE
);

144 i(
	`rmd
(
dme
) != 0) {

145 
	`rtf
(
dr
,

146 "%s:md faed wh %s", 
ogme
,

147 
	`
(
o
));

149 
	`vify_abn
(
dbv
, 
dme
);

152 i((
t
 = 
	`ݒ_v
(
home
, 
dr
, 
ogme
, &
dbv
)) != 0)

153  (
EXIT_FAILURE
);

155 
	`tf
("Verifyhe directory'sresence: ");

156 
	`vify_en
(
dbv
, 
dme
);

157 
	`tf
("check.\n");

160 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

161 
	`rtf
(
dr
, "DB_ENV->o: %s\n", 
	`db_
(
t
));

162  (
EXIT_FAILURE
);

165  (
EXIT_SUCCESS
);

166 
	}
}

169 
	$ݒ_v
(
home
, 
r
, 
ogme
, 
dbvp
)

170 cڡ *
home
, *
ogme
;

171 
FILE
 *
r
;

172 
DB_ENV
 **
dbvp
;

174 
DB_ENV
 *
dbv
;

175 
t
;

181 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

182 
	`rtf
(
r
, "%s: %s\n", 
ogme
, 
	`db_
(
t
));

183  (
t
);

185 
dbv
->
	`t_rfe
(dbv, 
r
);

186 
dbv
->
	`t_fx
(dbv, 
ogme
);

189 i((
t
 = 
dbv
->
	`t_p_dich
(dbv, 
ec_dich
)) != 0) {

190 
dbv
->
	`r
(dbv, 
t
, "set_app_dispatch");

191  (
t
);

198 i((
t
 =

199 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 | 
DB_RECOVER
 | 
DB_INIT_LOCK
 |

200 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
, 0)) != 0) {

201 
dbv
->
	`r
(dbv, 
t
, "vmݒ: %s", 
home
);

202 
dbv
->
	`o
(dbenv, 0);

203  (
t
);

206 *
dbvp
 = 
dbv
;

208 
	}
}

215 
	$ec_dich
(
dbv
, 
dbt
, 
l
, 

)

216 
DB_ENV
 *
dbv
;

217 
DBT
 *
dbt
;

218 
DB_LSN
 *
l
;

219 
db_cs
 

;

221 
u_t32_t
 
y
;

224 
	`memy
(&
y
, 
dbt
->
da
, (rectype));

226 
y
) {

227 
DB_ex_ec_mkd
:

228  (
	`ex_ec_mkd_cov
(
dbv
, 
dbt
, 
l
, 

, 
NULL
));

234 
dbv
->
	`rx
(dbenv, "Unexpectedogecordypencountered");

235  (
EINVAL
);

237 
	}
}

240 
	$vify_abn
(
dbv
, 
dme
)

241 
DB_ENV
 *
dbv
;

242 cڡ *
dme
;

245 i(
	`acss
(
dme
, 
F_OK
) == 0) {

246 
dbv
->
	`rx
(dbenv, "Error--directoryresent!");

247 
	`ex
(
EXIT_FAILURE
);

251 
	}
}

254 
	$vify_en
(
dbv
, 
dme
)

255 
DB_ENV
 *
dbv
;

256 cڡ *
dme
;

259 i(
	`acss
(
dme
, 
F_OK
) != 0) {

260 
dbv
->
	`rx
(dbenv, "Error--directoryotresent!");

261 
	`ex
(
EXIT_FAILURE
);

265 
	}
}

	@../examples_c/ex_apprec/ex_apprec_auto.c

3 
	~"db_cfig.h
"

5 
	~<y.h
>

6 
	~<o.h
>

7 
	~<dlib.h
>

8 
	~<rg.h
>

10 
	~<db.h
>

12 
	~"ex_ec.h
"

18 
	$ex_ec_mkd_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

19 
dme
)

20 
DB_ENV
 *
dbv
;

21 
DB_TXN
 *
tx
;

22 
DB_LSN
 *
t_lp
;

23 
u_t32_t
 
ags
;

24 cڡ 
DBT
 *
dme
;

26 
DBT
 
logc
;

27 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

28 
u_t32_t
 
zo
, 
y
, 
txn_num
;

29 
u_t
 
ad
;

30 
u_t8_t
 *
bp
;

31 
t
;

33 
y
 = 
DB_ex_ec_mkd
;

34 
ad
 = 0;

35 
p
 = 
t_lp
;

37 
t
 = 0;

39 i(
tx
 =
NULL
) {

40 
txn_num
 = 0;

41 
lp
 = &
nu_l
;

42 
nu_l
.
fe
 =u_l.
offt
 = 0;

50 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

51 
txn_num
 = 
tx
->
txnid
;

54 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

55 + (
u_t32_t
+ (
dme
 =
NULL
 ? 0 : dme->
size
);

56 i((
logc
.
da
 = 
	`mloc
ogc.
size
)=
NULL
)

57  (
ENOMEM
);

58 
bp
 = 
logc
.
da
;

60 i(
ad
 > 0)

61 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

63 
bp
 = 
logc
.
da
;

65 
	`memy
(
bp
, &
y
, (rectype));

66 
bp
 +(
y
);

68 
	`memy
(
bp
, &
txn_num
, (txn_num));

69 
bp
 +(
txn_num
);

71 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

72 
bp
 +(
DB_LSN
);

74 i(
dme
 =
NULL
) {

75 
zo
 = 0;

76 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

77 
bp
 +(
u_t32_t
);

79 
	`memy
(
bp
, &
dme
->
size
, (dirname->size));

80 
bp
 +(
dme
->
size
);

81 
	`memy
(
bp
, 
dme
->
da
, dme->
size
);

82 
bp
 +
dme
->
size
;

85 i((
t
 = 
dbv
->
	`log_put
(dbv, 
p
, (
DBT
 *)&
logc
,

86 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

87 *
lp
 = *
p
;

88 i(
p
 !
t_lp
)

89 *
t_lp
 = *
p
;

91 #ifde
LOG_DIAGNOSTIC


92 i(
t
 != 0)

93 ()
	`ex_ec_mkd_t
(
dbv
,

94 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

97 
	`
(
logc
.
da
);

98  (
t
);

99 
	}
}

106 
	$ex_ec_mkd_ad
(
dbv
, 
cbuf
, 
g
)

107 
DB_ENV
 *
dbv
;

108 *
cbuf
;

109 
ex_ec_mkd_gs
 **
g
;

111 
ex_ec_mkd_gs
 *
gp
;

112 
u_t8_t
 *
bp
;

115 
dbv
 = 
NULL
;

116 i((
gp
 = 
	`mloc
((
ex_ec_mkd_gs
+ (
DB_TXN
))=
NULL
)

117  (
ENOMEM
);

118 
bp
 = 
cbuf
;

119 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

120 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

122 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

123 
bp
 +(
gp
->
ty
);

125 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

126 
bp
 +(
gp
->
tx
->
txnid
);

128 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

129 
bp
 +(
DB_LSN
);

131 
	`memt
(&
gp
->
dme
, 0, (argp->dirname));

132 
	`memy
(&
gp
->
dme
.
size
, 
bp
, (
u_t32_t
));

133 
bp
 +(
u_t32_t
);

134 
gp
->
dme
.
da
 = 
bp
;

135 
bp
 +
gp
->
dme
.
size
;

137 *
g
 = 
gp
;

139 
	}
}

	@../examples_c/ex_apprec/ex_apprec_autop.c

3 
	~"db_cfig.h
"

5 
	~<y.h
>

6 
	~<o.h
>

7 
	~<dlib.h
>

8 
	~<rg.h
>

10 
	~<db.h
>

12 
	~"ex_ec.h
"

18 
	$ex_ec_mkd_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

19 
DB_ENV
 *
dbv
;

20 
DBT
 *
db
;

21 
DB_LSN
 *
lp
;

22 
db_cs
 
nud2
;

23 *
nud3
;

25 
ex_ec_mkd_gs
 *
gp
;

26 
u_t32_t
 
i
;

27 
ch
;

28 
t
;

30 
nud2
 = 
DB_TXN_PRINT
;

31 
nud3
 = 
NULL
;

33 i((
t
 = 
	`ex_ec_mkd_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

34  (
t
);

35 ()
	`tf
(

37 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

38 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

39 (
u_lg
)
gp
->
ty
,

40 (
u_lg
)
gp
->
tx
->
txnid
,

41 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

42 ()
	`tf
("\tdirname: ");

43 
i
 = 0; i < 
gp
->
dme
.
size
; i++) {

44 
ch
 = ((
u_t8_t
 *)
gp
->
dme
.
da
)[
i
];

45 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

47 ()
	`tf
("\n");

48 ()
	`tf
("\n");

49 
	`
(
gp
);

51 
	}
}

58 
	$ex_ec__t
(
dbv
, 
dbp
, 
dbsiz
)

59 
DB_ENV
 *
dbv
;

60 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

61 
size_t
 *
dbsiz
;

63 
__db_add_covy
 
	`__P
((
DB_ENV
 *,

64 (***)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *),

65 
size_t
 *,

66 (*)(
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *), 
u_t32_t
));

67 
t
;

69 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

70 
ex_ec_mkd_t
, 
DB_ex_ec_mkd
)) != 0)

71  (
t
);

73 
	}
}

	@../examples_c/ex_apprec/ex_apprec_rec.c

16 
	~<sys/tys.h
>

17 
	~<sys/.h
>

18 
	~<o.h
>

19 
	~<dlib.h
>

20 
	~<unid.h
>

22 
	~<db.h
>

24 
	~"ex_ec.h
"

34 
	$ex_ec_mkd_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

35 
DB_ENV
 *
dbv
;

36 
DBT
 *
db
;

37 
DB_LSN
 *
lp
;

38 
db_cs
 

;

39 *
fo
;

41 
ex_ec_mkd_gs
 *
gp
;

42 
t
;

44 
gp
 = 
NULL
;

51 
fo
 = 
NULL
;

53 i((
t
 = 
	`ex_ec_mkd_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

54 
out
;

56 

) {

57 
DB_TXN_ABORT
:

58 
DB_TXN_BACKWARD_ROLL
:

71 
t
 = 
	`rmd
(
gp
->
dme
.
da
);

72 i(
t
 !0 && 
o
 !
ENOENT
)

73 
dbv
->
	`r
(dbv, 
t
, "Error inbort of mkdir");

75 
t
 = 0;

77 
DB_TXN_FORWARD_ROLL
:

82 
t
 = 
	`mkd
(
gp
->
dme
.
da
, 0755);

83 i(
t
 !0 && 
o
 !
EEXIST
)

84 
dbv
->
	`r
(dbenv,

85 
t
, "Error inoll-forward of mkdir");

87 
t
 = 0;

95 
dbv
->
	`rx
(dbenv, "Unexpected operationype\n");

96  (
EINVAL
);

109 *
lp
 = 
gp
->
ev_l
;

111 
out
: i(
gp
 !
NULL
)

112 
	`
(
gp
);

113  (
t
);

114 
	}
}

	@../examples_c/ex_btrec.c

9 
	~<sys/tys.h
>

11 
	~<o.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

15 
	~<db.h
>

17 
	#DATABASE
 "acss.db"

	)

18 
	#WORDLIST
 "..//wdli"

	)

19 
ma
 
__P
(());

21 
ex_bec
 
__P
(());

22 
show
 
__P
((cڡ *, 
DBT
 *, DBT *));

25 
	$ma
()

27  (
	`ex_bec
(=1 ? 
EXIT_FAILURE
 : 
EXIT_SUCCESS
);

28 
	}
}

31 
	$ex_bec
()

33 
DB
 *
dbp
;

34 
DBC
 *
db
;

35 
DBT
 
key
, 
da
;

36 
DB_BTREE_STAT
 *
p
;

37 
FILE
 *

;

38 
db_o_t
 
o
;

39 
size_t
 
n
;

40 
t
, 
t
;

41 *
p
, *
t
, 
buf
[1024], 
rbuf
[1024];

42 cڡ *
ogme
 = "ex_btrec";

45 i((

 = 
	`fݒ
(
WORDLIST
, "r")=
NULL
) {

46 
	`rtf
(
dr
, "%s: open %s: %s\n",

47 
ogme
, 
WORDLIST
, 
	`db_
(
o
));

52 ()
	`move
(
DATABASE
);

55 i((
t
 = 
	`db_
(&
dbp
, 
NULL
, 0)) != 0) {

56 
	`rtf
(
dr
,

57 "%s: db_: %s\n", 
ogme
, 
	`db_
(
t
));

60 
dbp
->
	`t_rfe
(dbp, 
dr
);

61 
dbp
->
	`t_fx
(dbp, 
ogme
);

62 i((
t
 = 
dbp
->
	`t_gesize
(dbp, 1024)) != 0) {

63 
dbp
->
	`r
(dbp, 
t
, "set_pagesize");

66 i((
t
 = 
dbp
->
	`t_ags
(dbp, 
DB_RECNUM
)) != 0) {

67 
dbp
->
	`r
(dbp, 
t
, "set_flags: DB_RECNUM");

70 i((
t
 = 
dbp
->
	`ݒ
(dbp,

71 
NULL
, 
DATABASE
, NULL, 
DB_BTREE
, 
DB_CREATE
, 0664)) != 0) {

72 
dbp
->
	`r
(dbp, 
t
, "ݒ: %s", 
DATABASE
);

81 
	`memt
(&
key
, 0, (
DBT
));

82 
	`memt
(&
da
, 0, (
DBT
));

83 
t
 = 1; cnt <= 1000; ++cnt) {

84 ()
	`rtf
(
buf
, "%04d_", 
t
);

85 i(
	`fgs
(
buf
 + 4, (buf- 4, 

=
NULL
)

87 
n
 = 
	`
(
buf
);

88 
t
 = 
rbuf
, 
p
 = 
buf
 + (
n
 - 2); >= buf;)

89 *
t
++ = *
p
--;

90 *
t
++ = '\0';

92 
key
.
da
 = 
buf
;

93 
da
.d
rbuf
;

94 
da
.
size
 = 
key
.siz(
u_t32_t
)
n
 - 1;

96 i((
t
 =

97 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 
DB_NOOVERWRITE
)) != 0) {

98 
dbp
->
	`r
(dbp, 
t
, "DB->put");

99 i(
t
 !
DB_KEYEXIST
)

100 
r1
;

105 ()
	`fo
(

);

108 i((
t
 = 
dbp
->
	`
(dbp, 
NULL
, &
p
, 0)) != 0) {

109 
dbp
->
	`r
(dbp, 
t
, "DB->stat");

110 
r1
;

112 
	`tf
("%s: database contains %luecords\n",

113 
ogme
, (
u_lg
)
p
->
bt_nda
);

114 
	`
(
p
);

117 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &
db
, 0)) != 0) {

118 
dbp
->
	`r
(dbp, 
t
, "DB->cursor");

119 
r1
;

128 
	`tf
("recno #> ");

129 
	`fush
(
dout
);

130 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
)

132 
o
 = 
	`oi
(
buf
);

138 
key
.
da
 = &
o
;

139 
key
.
size
 = (
o
);

140 i((
t
 = 
db
->
	`g
(db, &
key
, &
da
, 
DB_SET_RECNO
)) != 0)

141 
g_r
;

144 
	`show
("k/d\t", &
key
, &
da
);

147 i((
t
 = 
db
->
	`g
(db, &
key
, &
da
, 
DB_NEXT
)) != 0)

148 
g_r
;

151 
	`show
("xt\t", &
key
, &
da
);

157 
da
.d&
o
;

158 
da
.
size
 = (
o
);

159 
da
.
un
 = (
o
);

160 
da
.
ags
 |
DB_DBT_USERMEM
;

161 i((
t
 = 
db
->
	`g
(db, &
key
, &
da
, 
DB_GET_RECNO
)) != 0) {

162 
g_r
: 
dbp
->
	`r
(dbp, 
t
, "DBcursor->get");

163 i(
t
 !
DB_NOTFOUND
 && !
DB_KEYEMPTY
)

164 
r2
;

166 
	`tf
("vedeo: %lu\n", (
u_lg
)
o
);

169 
	`memt
(&
da
, 0, (data));

172 i((
t
 = 
db
->
	`o
(dbcp)) != 0) {

173 
dbp
->
	`r
(dbp, 
t
, "DBcursor->close");

174 
r1
;

176 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

177 
	`rtf
(
dr
,

178 "%s: DB->o: %s\n", 
ogme
, 
	`db_
(
t
));

184 
r2
: ()
db
->
	`o
(dbcp);

185 
r1
: ()
dbp
->
	`o
(dbp, 0);

186  (
t
);

188 
	}
}

195 
	$show
(
msg
, 
key
, 
da
)

196 cڡ *
msg
;

197 
DBT
 *
key
, *
da
;

199 
	`tf
("%s%.*: %.*s\n", 
msg
,

200 ()
key
->
size
, (*)key->
da
,

201 ()
da
->
size
, (*)data->data);

202 
	}
}

	@../examples_c/ex_dbclient.c

9 
	~<sys/tys.h
>

11 
	~<dio.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

14 
	~<unid.h
>

16 
	~<db.h
>

18 
	#DATABASE_HOME
 "daba"

	)

20 
	#DATABASE
 "acss.db"

	)

22 
db_run
 
__P
((
DB_ENV
 *, const *));

23 
ex_db
 
__P
((const *));

24 
ex_db_run
 
__P
((cڡ *, 
FILE
 *, const *, const *));

25 
ma
 
__P
((, *[]));

31 
	$ma
(
gc
, 
gv
)

32 
gc
;

33 *
gv
[];

35 cڡ *
home
;

37 i(
gc
 != 2) {

38 
	`rtf
(
dr
, "Uge: %home\n", 
gv
[0]);

39  (
EXIT_FAILURE
);

46 
home
 = 
DATABASE_HOME
;

47  (
	`ex_db_run
(
home
,

48 
dr
, 
gv
[1],rgv[0]=0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

49 
	}
}

52 
	$ex_db
(
ho
)

53 cڡ *
ho
;

55 cڡ *
home
;

56 cڡ *
ogme
 = "ex_dbclient";

57 
t
;

63 
home
 = 
DATABASE_HOME
;

65 i((
t
 = 
	`ex_db_run
(
home
, 
dr
, 
ho
, 
ogme
)) != 0)

66  (
t
);

69 
	}
}

72 
	$ex_db_run
(
home
, 
r
, 
ho
, 
ogme
)

73 cڡ *
home
, *
ho
, *
ogme
;

74 
FILE
 *
r
;

76 
DB_ENV
 *
dbv
;

77 
t
, 
y
;

83 i((
t
 = 
	`db_v_
(&
dbv
, 
DB_RPCCLIENT
)) != 0) {

84 
	`rtf
(
r
, "%s: %s\n", 
ogme
, 
	`db_
(
t
));

87 
y
 = 0;

88 
y
:

89 
y
 < 5) {

93 i((
t
 = 
dbv
->
	`t_c_rv
(dbv, 
NULL
, 
ho
, 10000,

95 
	`rtf
(
dr
, "Try %d: DB_ENV->set_rpc_server: %s\n",

96 
y
, 
	`db_
(
t
));

97 
y
++;

98 
	`p
(15);

103 i(
y
 >= 5) {

104 
	`rtf
(
dr
,

105 "DB_ENV->t_c_rv: %s\n", 
	`db_
(
t
));

106 
dbv
->
	`o
(dbenv, 0);

113 i((
t
 = 
dbv
->
	`t_chesize
(dbenv, 0, 64 * 1024, 0)) != 0) {

114 
dbv
->
	`r
(dbv, 
t
, "set_cachesize");

115 
dbv
->
	`o
(dbenv, 0);

123 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

124 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_MPOOL
, 0)) != 0) {

125 
dbv
->
	`r
(dbv, 
t
, "vmݒ: %s", 
home
);

126 
dbv
->
	`o
(dbenv, 0);

127 i(
t
 =
DB_NOSERVER
)

128 
y
;

132 
t
 = 
	`db_run
(
dbv
, 
ogme
);

133 
	`tf
("db_rutued %d\n", 
t
);

134 i(
t
 =
DB_NOSERVER
)

135 
y
;

138 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

139 
	`rtf
(
dr
, "DB_ENV->o: %s\n", 
	`db_
(
t
));

143 
	}
}

146 
	$db_run
(
dbv
, 
ogme
)

147 
DB_ENV
 *
dbv
;

148 cڡ *
ogme
;

150 
DB
 *
dbp
;

151 
DBT
 
key
, 
da
;

152 
u_t32_t
 
n
;

153 
t
;

154 *
p
, *
t
, 
buf
[1024], 
rbuf
[1024];

159 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

160 
	`rtf
(
dr
,

161 "%s: db_: %s\n", 
ogme
, 
	`db_
(
t
));

162  (
t
);

164 i((
t
 = 
dbp
->
	`t_gesize
(dbp, 1024)) != 0) {

165 
dbp
->
	`r
(dbp, 
t
, "set_pagesize");

166 
r1
;

168 i((
t
 = 
dbp
->
	`ݒ
(dbp,

169 
NULL
, 
DATABASE
, NULL, 
DB_BTREE
, 
DB_CREATE
, 0664)) != 0) {

170 
dbp
->
	`r
(dbp, 
t
, "%s: on", 
DATABASE
);

171 
r1
;

178 
	`memt
(&
key
, 0, (
DBT
));

179 
	`memt
(&
da
, 0, (
DBT
));

181 
	`tf
("input> ");

182 
	`fush
(
dout
);

183 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
)

185 i((
n
 = 
	`
(
buf
)) <= 1)

187 
t
 = 
rbuf
, 
p
 = 
buf
 + (
n
 - 2); >= buf;)

188 *
t
++ = *
p
--;

189 *
t
++ = '\0';

191 
key
.
da
 = 
buf
;

192 
da
.d
rbuf
;

193 
da
.
size
 = 
key
.siz
n
 - 1;

195 
t
 =

196 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 
DB_NOOVERWRITE
)) {

200 
dbp
->
	`r
(dbp, 
t
, "DB->put");

201 i(
t
 !
DB_KEYEXIST
)

202 
r1
;

205 
	`memt
(&
da
, 0, (
DBT
));

206 
t
 = 
dbp
->
	`g
(dbp, 
NULL
, &
key
, &
da
, 0)) {

208 
	`tf
("%.*s : %.*s\n",

209 ()
key
.
size
, (*)key.
da
,

210 ()
da
.
size
, (*)data.data);

213 
dbp
->
	`r
(dbp, 
t
, "DB->get");

217 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

218 
	`rtf
(
dr
,

219 "%s: DB->o: %s\n", 
ogme
, 
	`db_
(
t
));

224 
r1
: ()
dbp
->
	`o
(dbp, 0);

225  (
t
);

226 
	}
}

	@../examples_c/ex_env.c

9 
	~<sys/tys.h
>

11 
	~<ddef.h
>

12 
	~<dio.h
>

13 
	~<dlib.h
>

15 
	~<db.h
>

17 #ifde
mactosh


18 
	#DATABASE_HOME
 ":daba"

	)

19 
	#CONFIG_DATA_DIR
 ":daba"

	)

21 #ifde
DB_WIN32


22 
	#DATABASE_HOME
 "\\tmp\\daba"

	)

23 
	#CONFIG_DATA_DIR
 "\\daba\\fes"

	)

25 
	#DATABASE_HOME
 "/tmp/daba"

	)

26 
	#CONFIG_DATA_DIR
 "/daba/fes"

	)

30 
db_tup
 
__P
((cڡ *, cڡ *, 
FILE
 *, const *));

31 
db_down
 
__P
((cڡ *, cڡ *, 
FILE
 *, const *));

32 
ma
 
__P
(());

38 
	$ma
()

40 cڡ *
da_d
, *
home
;

41 cڡ *
ogme
 = "ex_env";

47 
home
 = 
DATABASE_HOME
;

48 
da_d
 = 
CONFIG_DATA_DIR
;

50 
	`tf
("Setupnv\n");

51 i(
	`db_tup
(
home
, 
da_d
, 
dr
, 
ogme
) != 0)

52  (
EXIT_FAILURE
);

54 
	`tf
("Teardownnv\n");

55 i(
	`db_down
(
home
, 
da_d
, 
dr
, 
ogme
) != 0)

56  (
EXIT_FAILURE
);

58  (
EXIT_SUCCESS
);

59 
	}
}

62 
	$db_tup
(
home
, 
da_d
, 
r
, 
ogme
)

63 cڡ *
home
, *
da_d
, *
ogme
;

64 
FILE
 *
r
;

66 
DB_ENV
 *
dbv
;

67 
t
;

73 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

74 
	`rtf
(
r
, "%s: %s\n", 
ogme
, 
	`db_
(
t
));

77 
dbv
->
	`t_rfe
(dbv, 
r
);

78 
dbv
->
	`t_fx
(dbv, 
ogme
);

84 i((
t
 = 
dbv
->
	`t_chesize
(dbenv, 0, 64 * 1024, 0)) != 0) {

85 
dbv
->
	`r
(dbv, 
t
, "set_cachesize");

86 
dbv
->
	`o
(dbenv, 0);

91 ()
dbv
->
	`t_da_d
(dbv, 
da_d
);

94 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
,

95 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
,

97 
dbv
->
	`r
(dbv, 
t
, "vmݒ: %s", 
home
);

98 
dbv
->
	`o
(dbenv, 0);

105 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

106 
	`rtf
(
dr
, "DB_ENV->o: %s\n", 
	`db_
(
t
));

110 
	}
}

113 
	$db_down
(
home
, 
da_d
, 
r
, 
ogme
)

114 cڡ *
home
, *
da_d
, *
ogme
;

115 
FILE
 *
r
;

117 
DB_ENV
 *
dbv
;

118 
t
;

121 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

122 
	`rtf
(
r
, "%s: %s\n", 
ogme
, 
	`db_
(
t
));

125 
dbv
->
	`t_rfe
(dbv, 
r
);

126 
dbv
->
	`t_fx
(dbv, 
ogme
);

128 ()
dbv
->
	`t_da_d
(dbv, 
da_d
);

129 i((
t
 = 
dbv
->
	`move
(dbv, 
home
, 0)) != 0) {

130 
	`rtf
(
dr
, "DB_ENV->move: %s\n", 
	`db_
(
t
));

134 
	}
}

	@../examples_c/ex_lock.c

9 
	~<sys/tys.h
>

11 
	~<dlib.h
>

12 
	~<rg.h
>

14 #ifde
_WIN32


15 

gt
(, * const *, const *);

17 
	~<unid.h
>

20 
	~<db.h
>

22 
db_
 
__P
((cڡ *, 
u_t32_t
, ));

23 
ma
 
__P
((, *[]));

24 
uge
 
__P
(());

26 
DB_ENV
 *
	gdbv
;

28 *
	gogme
 = "ex_lock";

31 
	$ma
(
gc
, 
gv
)

32 
gc
;

33 *
gv
[];

35 
*
ݏrg
;

36 

td
;

37 
DBT
 
lock_dbt
;

38 
DB_LOCK
 
lock
;

39 
DB_LOCK
 *
locks
;

40 
db_lockmode_t
 
lock_ty
;

41 
hd
;

42 
size_t
 
n
;

43 
u_t32_t
 
lock
, 
maxlocks
;

44 
ch
, 
do_uƚk
, 
did_g
, 
i
, 
lockid
, 
lockcou
, 
t
;

45 cڡ *
home
;

46 
buf
[16], 
objbuf
[1024], 
lockbuf
[16];

48 
home
 = "TESTDIR";

49 
maxlocks
 = 0;

50 
do_uƚk
 = 0;

51 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:m:u")!
EOF
)

52 
ch
) {

54 
home
 = 
ݏrg
;

57 i((
i
 = 
	`oi
(
ݏrg
)) <= 0)

58  (
	`uge
());

59 
maxlocks
 = (
u_t32_t
)
i
;

62 
do_uƚk
 = 1;

66  (
	`uge
());

68 
gc
 -
td
;

69 
gv
 +
td
;

71 i(
gc
 != 0)

72  (
	`uge
());

75 i((
t
 = 
	`db_
(
home
, 
maxlocks
, 
do_uƚk
)) != 0)

76  (
t
);

78 
locks
 = 0;

79 
lockcou
 = 0;

84 i((
t
 = 
dbv
->
	`lock_id
(dbv, &
lock
)) != 0) {

85 
dbv
->
	`r
(dbv, 
t
, "unableo getocker id");

86 ()
dbv
->
	`o
(dbenv, 0);

87  (
EXIT_FAILURE
);

89 
lockid
 = -1;

91 
	`memt
(&
lock_dbt
, 0, (lock_dbt));

92 
hd
 = 0, 
did_g
 = 0;;) {

93 
	`tf
("Operation get/release [get]> ");

94 
	`fush
(
dout
);

95 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
)

97 i((
n
 = 
	`
(
buf
)<1 || 
	`rcmp
(opbuf, "get\n") == 0) {

99 
	`tf
("input object (text string)oock> ");

100 
	`fush
(
dout
);

101 i(
	`fgs
(
objbuf
, (objbuf), 
d
=
NULL
)

103 i((
n
 = 
	`
(
objbuf
)) <= 1)

107 
	`tf
("lockypeead/write [read]> ");

108 
	`fush
(
dout
);

109 i(
	`fgs
(
lockbuf
,

110 (
lockbuf
), 
d
=
NULL
)

112 
n
 = 
	`
(
lockbuf
);

113 } 
n
 > 1 &&

114 
	`rcmp
(
lockbuf
, "read\n") != 0 &&

115 
	`rcmp
(
lockbuf
, "write\n") != 0);

116 i(
n
 =1 || 
	`rcmp
(
lockbuf
, "read\n") == 0)

117 
lock_ty
 = 
DB_LOCK_READ
;

119 
lock_ty
 = 
DB_LOCK_WRITE
;

121 
lock_dbt
.
da
 = 
objbuf
;

122 
lock_dbt
.
size
 = (
u_t32_t
)
	`
(
objbuf
);

123 
t
 = 
dbv
->
	`lock_g
(dbv, 
lock
,

124 
DB_LOCK_NOWAIT
, &
lock_dbt
, 
lock_ty
, &
lock
);

125 i(
t
 == 0) {

126 
did_g
 = 1;

127 
lockid
 = 
lockcou
++;

128 i(
locks
 =
NULL
)

129 
locks
 =

130 (
DB_LOCK
 *)
	`mloc
((DB_LOCK));

132 
locks
 = (
DB_LOCK
 *)
	`loc
(locks,

133 
lockcou
 * (
DB_LOCK
));

134 
locks
[
lockid
] = 
lock
;

139 
	`tf
("inputockoelease> ");

140 
	`fush
(
dout
);

141 i(
	`fgs
(
objbuf
,

142 (
objbuf
), 
d
=
NULL
)

144 } (
n
 = 
	`
(
objbuf
)) <= 1);

145 
lockid
 = 
	`
(
objbuf
, 
NULL
, 16);

146 i(
lockid
 < 0 ||ockid >
lockcou
) {

147 
	`tf
("Lock #%d ouonge\n", 
lockid
);

150 
lock
 = 
locks
[
lockid
];

151 
t
 = 
dbv
->
	`lock_put
(dbv, &
lock
);

152 
did_g
 = 0;

154 
t
) {

156 
	`tf
("Lock #%d %s\n", 
lockid
,

157 
did_g
 ? "granted" : "released");

158 
hd
 +
did_g
 ? 1 : -1;

160 
DB_LOCK_NOTGRANTED
:

161 
dbv
->
	`r
(dbv, 
t
, 
NULL
);

163 
DB_LOCK_DEADLOCK
:

164 
dbv
->
	`r
(dbv, 
t
,

165 "lock_%s", 
did_g
 ? "get" : "put");

168 
dbv
->
	`r
(dbv, 
t
,

169 "lock_%s", 
did_g
 ? "get" : "put");

170 ()
dbv
->
	`o
(dbenv, 0);

171  (
EXIT_FAILURE
);

175 
	`tf
("\nClosgockegi %ldockhd\n", 
hd
);

177 i(
locks
 !
NULL
)

178 
	`
(
locks
);

180 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

181 
	`rtf
(
dr
,

182 "%s: dbv->o: %s\n", 
ogme
, 
	`db_
(
t
));

183  (
EXIT_FAILURE
);

185  (
EXIT_SUCCESS
);

186 
	}
}

193 
	$db_
(
home
, 
maxlocks
, 
do_uƚk
)

194 cڡ *
home
;

195 
u_t32_t
 
maxlocks
;

196 
do_uƚk
;

198 
t
;

200 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

201 
	`rtf
(
dr
, "%s: db_env_create: %s\n",

202 
ogme
, 
	`db_
(
t
));

203  (
EXIT_FAILURE
);

206 i(
do_uƚk
) {

207 i((
t
 = 
dbv
->
	`move
(dbv, 
home
, 
DB_FORCE
)) != 0) {

208 
	`rtf
(
dr
, "%s: dbenv->remove: %s\n",

209 
ogme
, 
	`db_
(
t
));

210  (
EXIT_FAILURE
);

212 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

213 
	`rtf
(
dr
, "%s: db_env_create: %s\n",

214 
ogme
, 
	`db_
(
t
));

215  (
EXIT_FAILURE
);

219 
dbv
->
	`t_rfe
(dbv, 
dr
);

220 
dbv
->
	`t_fx
(dbv, 
ogme
);

221 i(
maxlocks
 != 0)

222 
dbv
->
	`t_lk_max_locks
(dbv, 
maxlocks
);

224 i((
t
 =

225 
dbv
->
	`ݒ
(dbv, 
home
, 
DB_CREATE
 | 
DB_INIT_LOCK
, 0)) != 0) {

226 
dbv
->
	`r
(dbv, 
t
, 
NULL
);

227 ()
dbv
->
	`o
(dbenv, 0);

228  (
EXIT_FAILURE
);

231 
	}
}

234 
	$uge
()

236 ()
	`rtf
(
dr
,

237 "uge: %[-u] [-h home] [-m maxlocks]\n", 
ogme
);

238  (
EXIT_FAILURE
);

239 
	}
}

	@../examples_c/ex_mpool.c

9 
	~<sys/tys.h
>

11 
	~<o.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

14 
	~<time.h
>

16 #ifde
_WIN32


17 

gt
(, * const *, const *);

19 
	~<unid.h
>

22 
	~<db.h
>

24 

 
__P
((const *, , , const *));

25 
run
 
__P
((, , , , const *));

26 
run_mpo
 
__P
((, , , , const *));

27 
ma
 
__P
((, *[]));

28 
uge
 
__P
((const *));

29 
	#MPOOL
 "mpo"

	)

32 
	$ma
(
gc
, 
gv
)

33 
gc
;

34 *
gv
[];

36 
*
ݏrg
;

37 

td
;

38 
chesize
, 
ch
, 
hs
, 
ages
, 
gesize
;

39 *
ogme
;

41 
chesize
 = 20 * 1024;

42 
hs
 = 1000;

43 
ages
 = 50;

44 
gesize
 = 1024;

45 
ogme
 = 
gv
[0];

46 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:h:n:p:")!
EOF
)

47 
ch
) {

49 i((
chesize
 = 
	`oi
(
ݏrg
)) < 20 * 1024)

50  (
	`uge
(
ogme
));

53 i((
hs
 = 
	`oi
(
ݏrg
)) <= 0)

54  (
	`uge
(
ogme
));

57 i((
ages
 = 
	`oi
(
ݏrg
)) <= 0)

58  (
	`uge
(
ogme
));

61 i((
gesize
 = 
	`oi
(
ݏrg
)) <= 0)

62  (
	`uge
(
ogme
));

66  (
	`uge
(
ogme
));

68 
gc
 -
td
;

69 
gv
 +
td
;

71  (
	`run_mpo
(
gesize
, 
chesize
,

72 
hs
, 
ages
, 
ogme
=0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

73 
	}
}

76 
	$uge
(
ogme
)

77 cڡ *
ogme
;

79 ()
	`rtf
(
dr
,

81 
ogme
);

82  (
EXIT_FAILURE
);

83 
	}
}

86 
	$run_mpo
(
gesize
, 
chesize
, 
hs
, 
ages
, 
ogme
)

87 
gesize
, 
chesize
, 
hs
, 
ages
;

88 cڡ *
ogme
;

90 
t
;

93 i((
t
 = 
	`
(
MPOOL
, 
gesize
, 
ages
, 
ogme
)) != 0)

94  (
t
);

97 i((
t
 = 
	`run
(
hs
, 
chesize
, 
gesize
, 
ages
, 
ogme
)) != 0)

98  (
t
);

101 
	}
}

108 
	$
(
fe
, 
gesize
, 
ages
, 
ogme
)

109 cڡ *
fe
, *
ogme
;

110 
gesize
, 
ages
;

112 
FILE
 *

;

113 
t
;

114 *
p
;

120 ()
	`move
(
fe
);

121 i((

 = 
	`fݒ
(
fe
, "wb")=
NULL
) {

122 
	`rtf
(
dr
,

123 "%s: %s: %s\n", 
ogme
, 
fe
, 
	`
(
o
));

126 i((
p
 = (*)
	`mloc
(
gesize
)=
NULL
) {

127 
	`rtf
(
dr
, "%s: %s\n", 
ogme
, 
	`
(
ENOMEM
));

137 
t
 = 0; c < 
ages
; ++cnt) {

138 *(
db_pgno_t
 *)
p
 = 
t
;

139 i(
	`fwre
(
p
, 
gesize
, 1, 

) != 1) {

140 
	`rtf
(
dr
,

141 "%s: %s: %s\n", 
ogme
, 
fe
, 
	`
(
o
));

146 ()
	`fo
(

);

147 
	`
(
p
);

149 
	}
}

156 
	$run
(
hs
, 
chesize
, 
gesize
, 
ages
, 
ogme
)

157 
hs
, 
chesize
, 
gesize
, 
ages
;

158 cڡ *
ogme
;

160 
DB_ENV
 *
dbv
;

161 
DB_MPOOLFILE
 *
m
;

162 
db_pgno_t
 
go
;

163 
t
, 
t
;

164 *
p
;

166 
dbv
 = 
NULL
;

167 
m
 = 
NULL
;

169 
	`tf
("%s: cachesize: %d;agesize: %d; Nages: %d\n",

170 
ogme
, 
chesize
, 
gesize
, 
ages
);

176 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

177 
	`rtf
(
dr
,

178 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

181 
dbv
->
	`t_rfe
(dbv, 
dr
);

182 
dbv
->
	`t_fx
(dbv, 
ogme
);

183 #ifde
HAVE_VXWORKS


184 i((
t
 = 
dbv
->
	`t_shm_key
(dbv, 
VXSHM_KEY
)) != 0) {

185 
dbv
->
	`r
(dbv, 
t
, "set_shm_key");

191 i((
t
 = 
dbv
->
	`t_chesize
(dbv, 0, 
chesize
, 0)) != 0) {

192 
dbv
->
	`r
(dbv, 
t
, "set_cachesize");

193 
r
;

197 i((
t
 = 
dbv
->
	`ݒ
(

198 
dbv
, 
NULL
, 
DB_CREATE
 | 
DB_INIT_MPOOL
, 0)) != 0) {

199 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

200 
r
;

204 i((
t
 = 
dbv
->
	`memp_f
(dbv, &
m
, 0)) != 0) {

205 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->memp_f: %s", 
MPOOL
);

206 
r
;

208 i((
t
 = 
m
->
	`ݒ
(m, 
MPOOL
, 0, 0, 
gesize
)) != 0) {

209 
dbv
->
	`r
(dbv, 
t
, "DB_MPOOLFILE->ݒ: %s", 
MPOOL
);

210 
r
;

213 
	`tf
("v%ddomages... ", 
hs
);

215 
	`d
((
u_t
)
	`time
(
NULL
));

216 
t
 = 0; c < 
hs
; ++cnt) {

217 
go
 = 
	`nd
(% 
ages
;

218 i((
t
 = 
m
->
	`g
(m, &
go
, 
NULL
, 0, &
p
)) != 0) {

219 
dbv
->
	`r
(dbv, 
t
,

220 "ubˁػvg%lu", (
u_lg
)
go
);

221 
r
;

224 i(*(
db_pgno_t
 *)
p
 !
go
) {

225 
dbv
->
	`rx
(dbenv,

227 (
u_lg
)
go
, *(*)
p
);

228 
r
;

230 i((
t
 = 
m
->
	`put
(m, 
p
, 
DB_PRIORITY_UNCHANGED
, 0)) != 0) {

231 
dbv
->
	`r
(dbv, 
t
,

232 "ubˁػtuag%lu", (
u_lg
)
go
);

233 
r
;

237 
	`tf
("successful.\n");

240 i((
t
 = 
m
->
	`o
(mfp, 0)) != 0) {

241 
dbv
->
	`r
(dbv, 
t
, "DB_MPOOLFILE->close");

242 
r
;

246 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

247 
	`rtf
(
dr
,

248 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

253 
r
: i(
m
 !
NULL
)

254 ()
m
->
	`o
(mfp, 0);

255 i(
dbv
 !
NULL
)

256 ()
dbv
->
	`o
(dbenv, 0);

258 
	}
}

	@../examples_c/ex_rep/base/rep_base.c

9 
	~<sys/tys.h
>

10 
	~<o.h
>

11 
	~<sigl.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

15 
	~<db.h
>

17 
	~"p_ba.h
"

22 
	gma_eid
;

23 *
	gmyaddr
;

24 
	gmypt
;

26 
evt_back
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

29 
	$ma
(
gc
, 
gv
)

30 
gc
;

31 *
gv
[];

33 
*
ݏrg
;

34 
DB_ENV
 *
dbv
;

35 
DBT
 
lol
;

36 um { 
MASTER
, 
CLIENT
, 
UNKNOWN
 } 
whmi
;

37 
l_gs
 

;

38 
c_gs
 

;

39 
machb_t
 *
machb
;

40 
thad_t
 
l_thr
, 
cn_thr
;

41 *
aus
, *
cus
;

42 #ifde
_WIN32


43 
WSADATA
 
wDa
;

45 
sigai
 
siga
;

47 
pse_t
 
se
, *
s
, 
lf
, *
l
;

48 
maxses
, 
nses
, 
t
, 
iܙy
, 
tٮses
;

49 *
c
, 
ch
;

50 cڡ *
home
, *
ogme
;

51 
APP_DATA
 
my_p_da
;

53 
ma_eid
 = 
DB_EID_INVALID
;

55 
my_p_da
.
eed
 = 0;

56 
my_p_da
.
shed_da
.
is_ma
 = 0;

57 
dbv
 = 
NULL
;

58 
whmi
 = 
UNKNOWN
;

59 
machb
 = 
NULL
;

60 
l
 = 
s
 = 
NULL
;

61 
maxses
 = 
nses
 = 
t
 = 
tٮses
 = 0;

62 
iܙy
 = 100;

63 
home
 = "TESTDIR";

64 
ogme
 = "ex_rep_base";

66 i((
t
 = 
	`_v
(
ogme
, &
dbv
)) != 0)

67 
r
;

68 
dbv
->
p_ive
 = &
my_p_da
;

69 ()
dbv
->
	`t_evt_nify
(dbv, 
evt_back
);

71 (
ch
 = 
	`gt
(
gc
, 
gv
, "Ch:Mm:n:o:p:v")!
EOF
)

72 
ch
) {

74 
whmi
 = 
MASTER
;

75 
ma_eid
 = 
SELF_EID
;

78 
whmi
 = 
CLIENT
;

81 
home
 = 
ݏrg
;

84 i((
myaddr
 = 
	`rdup
(
ݏrg
)=
NULL
) {

85 
	`rtf
(
dr
,

86 "Syem %s\n", 
	`
(
o
));

87 
r
;

89 
lf
.
ho
 = 
ݏrg
;

90 
lf
.
ho
 = 
	`ok
(self.host, ":");

91 i((
c
 = 
	`ok
(
NULL
, ":")) == NULL) {

92 
	`rtf
(
dr
, "Bad host specification.\n");

93 
r
;

95 
mypt
 = 
lf
.
pt
 = ()
	`oi
(
c
);

96 
l
 = &
lf
;

99 
tٮses
 = 
	`oi
(
ݏrg
);

102 
se
.
ho
 = 
ݏrg
;

103 
se
.
ho
 = 
	`ok
(site.host, ":");

104 i((
c
 = 
	`ok
(
NULL
, ":")) == NULL) {

105 
	`rtf
(
dr
, "Bad host specification.\n");

106 
r
;

108 
se
.
pt
 = 
	`oi
(
c
);

109 i(
s
 =
NULL
 || 
nses
 >
maxses
) {

110 
maxses
 = maxsites == 0 ? 10 : 2 * maxsites;

111 i((
s
 = 
	`loc
(sitep,

112 
maxses
 * (
pse_t
))=
NULL
) {

113 
	`rtf
(
dr
, "Systemrror %s\n",

114 
	`
(
o
));

115 
r
;

118 
s
[
nses
++] = 
se
;

121 
iܙy
 = 
	`oi
(
ݏrg
);

124 i((
t
 = 
dbv
->
	`t_vbo
(dbenv,

125 
DB_VERB_REPLICATION
, 1)) != 0)

126 
r
;

130 
	`uge
(
ogme
);

134 i(
whmi
 =
UNKNOWN
) {

135 
	`rtf
(
dr
, "Must specify -M or -C.\n");

136 
r
;

139 i(
l
 =
NULL
)

140 
	`uge
(
ogme
);

142 i(
home
 =
NULL
)

143 
	`uge
(
ogme
);

145 
dbv
->
	`p_t_iܙy
(dbv, 
iܙy
);

147 #ifde
_WIN32


149 i((
t
 = 
	`WSASup
(
	`MAKEWORD
(2, 2), &
wDa
)) != 0) {

150 
	`rtf
(
dr
,

151 "UbˁؚlizWdowsocks: %d\n", 
t
);

152 
r
;

159 
	`memt
(&
siga
, 0, (sigact));

160 
siga
.
_hdr
 = 
SIG_IGN
;

161 i((
t
 = 
	`sigai
(
SIGPIPE
, &
siga
, 
NULL
)) != 0) {

162 
	`rtf
(
dr
,

163 "Ubˁtu ofSIGPIPE: %s\n", 
	`
(
t
));

164 
r
;

173 i((
t
 =

174 
	`machb_
(&
machb
, 
tٮses
)) != 0)

175 
r
;

176 
my_p_da
.
comm_aruu
 = 
machb
;

178 i((
t
 = 
	`v_
(
dbv
, 
home
)) != 0)

179 
r
;

187 ()
dbv
->
	`p_t_t
(dbv, 
SELF_EID
, 
que_nd
);

189 

.
dbv
 = dbenv;

190 

.
home
 = home;

191 

.
ogme
 =rogname;

192 

.
machb
 = machtab;

193 

.
pt
 = 
l
->port;

194 i((
t
 = 
	`thad_
(&
cn_thr
, 
NULL
, 
c_thad
, &

)) != 0) {

195 
dbv
->
	`rx
(dbenv, "can't create connecthread");

196 
r
;

199 

.
dbv
 = dbenv;

200 

.
ogme
 =rogname;

201 

.
home
 = home;

202 

.
machb
 = machtab;

203 

.
ses
 = 
s
;

204 

.
nses
 =sites;

205 i((
t
 = 
	`thad_
(&
l_thr
, 
NULL
, 
c_l
, &

)) != 0) {

206 
dbv
->
	`rx
(dbenv, "can't create connect-allhread");

207 
r
;

214 i(
whmi
 =
MASTER
) {

215 i((
t
 = 
dbv
->
	`p_t
(dbv, 
NULL
, 
DB_REP_MASTER
)) != 0) {

216 
dbv
->
	`r
(dbv, 
t
, "dbenv->rep_start failed");

217 
r
;

220 
	`memt
(&
lol
, 0, (local));

221 
lol
.
da
 = 
myaddr
;

222 
lol
.
size
 = (
u_t32_t
)
	`
(
myaddr
) + 1;

223 i((
t
 =

224 
dbv
->
	`p_t
(dbv, &
lol
, 
DB_REP_CLIENT
)) != 0) {

225 
dbv
->
	`r
(dbv, 
t
, "dbenv->rep_start failed");

226 
r
;

229 
	`p
(5);

231 i((
t
 = 
	`do
(
dbv
, &
my_p_da
.
shed_da
)) != 0) {

232 
dbv
->
	`r
(dbv, 
t
, "Mainoop failed");

233 
r
;

237 i(
	`thad_jo
(
l_thr
, &
aus
||had_jo(
cn_thr
, &
cus
)) {

238 
t
 = -1;

239 
r
;

241 i((
u_t
)
aus
 !
EXIT_SUCCESS
 ||

242 (
u_t
)
cus
 !
EXIT_SUCCESS
) {

243 
t
 = -1;

244 
r
;

256 i((
t
 = 
dbv
->
	`log_ush
(dbv, 
NULL
)) != 0)

257 
dbv
->
	`r
(dbv, 
t
, "log_flush");

259 
r
: i(
machb
 !
NULL
)

260 
	`
(
machb
);

261 i(
dbv
 !
NULL
)

262 ()
dbv
->
	`o
(dbenv, 0);

263 #ifde
_WIN32


265 ()
	`WSAC˪up
();

267  (
t
);

268 
	}
}

271 
	$evt_back
(
dbv
, 
which
, 
fo
)

272 
DB_ENV
 *
dbv
;

273 
u_t32_t
 
which
;

274 *
fo
;

276 
APP_DATA
 *
p
 = 
dbv
->
p_ive
;

277 
SHARED_DATA
 *
shed
 = &
p
->
shed_da
;

279 
which
) {

280 
DB_EVENT_REP_CLIENT
:

281 
shed
->
is_ma
 = 0;

284 
DB_EVENT_REP_ELECTED
:

285 
p
->
eed
 = 1;

286 
ma_eid
 = 
SELF_EID
;

289 
DB_EVENT_REP_MASTER
:

290 
shed
->
is_ma
 = 1;

293 
DB_EVENT_REP_NEWMASTER
:

294 
ma_eid
 = *(*)
fo
;

297 
DB_EVENT_REP_STARTUPDONE
:

302 
dbv
->
	`rx
(dbv, "ignܚgv%d", 
which
);

304 
	}
}

	@../examples_c/ex_rep/base/rep_msg.c

9 
	~<sys/tys.h
>

10 
	~<o.h
>

11 
	~<dio.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

15 
	~<db.h
>

17 
	~"p_ba.h
"

19 
c_se
 
__P
((
DB_ENV
 *, 
machb_t
 *,

20 cڡ *, 
pse_t
 *, *, 
thad_t
 *));

21 *
e_thad
 
__P
((*));

22 *
hm_lo
 
__P
((*));

25 
DB_ENV
 *
	mdbv
;

26 
machb_t
 *
	mmachb
;

27 } 
	te_gs
;

30 
DB_ENV
 *
	mdbv
;

31 cڡ *
	mogme
;

32 cڡ *
	mhome
;

33 
sock_t
 
	mfd
;

34 
u_t32_t
 
	meid
;

35 
machb_t
 *
	mb
;

36 } 
	thm_lo_gs
;

44 
	$hm_lo
(
gs
)

45 *
gs
;

47 
DB_ENV
 *
dbv
;

48 
DB_LSN
 
rml
;

49 
DBT
 
c
, 
cڌ
;

50 
APP_DATA
 *
p
;

51 cڡ *
c
, *
home
, *
ogme
;

52 
e_gs
 *

;

53 
hm_lo_gs
 *
ha
;

54 
machb_t
 *
b
;

55 
thad_t
 
e_thr
, *
se_thrs
, *
tmp
, 
tid
;

56 
pse_t
 
lf
;

57 
u_t32_t
 
timeout
;

58 
eid
, 
n
, 
nses
, 
nses_locd
;

59 
ady_ݒ
, 
r
, 
t
, 
t_t
;

60 
sock_t
 
fd
;

61 *
us
;

63 

 = 
NULL
;

64 
se_thrs
 = 
NULL
;

65 
nses_locd
 = 0;

66 
nses
 = 0;

68 
ha
 = (
hm_lo_gs
 *)
gs
;

69 
dbv
 = 
ha
->dbenv;

70 
fd
 = 
ha
->fd;

71 
home
 = 
ha
->home;

72 
eid
 = 
ha
->eid;

73 
ogme
 = 
ha
->progname;

74 
b
 = 
ha
->tab;

75 
	`
(
ha
);

76 
p
 = 
dbv
->
p_ive
;

78 
	`memt
(&
c
, 0, (
DBT
));

79 
	`memt
(&
cڌ
, 0, (
DBT
));

81 
t
 = 0;et == 0;) {

82 i((
t
 = 
	`g_xt_mesge
(
fd
, &
c
, &
cڌ
)) != 0) {

87 
	`osock
(
fd
);

88 i((
t
 = 
	`machb_m
(
b
, 
eid
, 1)) != 0)

95 i(
ma_eid
 =
SELF_EID
)

103 i(
ma_eid
 !
eid
)

106 
ma_eid
 = 
DB_EID_INVALID
;

107 
	`machb_rm
(
b
, &
n
, &
timeout
);

108 ()
dbv
->
	`p_t_timeout
(dbenv,

109 
DB_REP_ELECTION_TIMEOUT
, 
timeout
);

110 i((
t
 = 
dbv
->
	`p_e
(dbenv,

111 
n
, (n/2+1), 0)) != 0)

118 i(
p
->
eed
) {

119 
p
->
eed
 = 0;

120 
t
 = 
dbv
->
	`p_t
(dbenv,

121 
NULL
, 
DB_REP_MASTER
);

126 
r
 = 
dbv
->
	`p_oss_mesge
(dbenv,

127 &
cڌ
, &
c
, 
eid
, &
rml
)) {

128 
DB_REP_NEWSITE
:

137 i(
c
.
size
 == 0)

141 i(
	`cmp
(
myaddr
, 
c
.
da
,ec.
size
) == 0)

144 
lf
.
ho
 = (*)
c
.
da
;

145 
lf
.
ho
 = 
	`ok
(self.host, ":");

146 i((
c
 = 
	`ok
(
NULL
, ":")) == NULL) {

147 
dbv
->
	`rx
(dbenv, "Bad host specification");

148 
out
;

150 
lf
.
pt
 = 
	`oi
(
c
);

158 i(
nses
 =
nses_locd
) {

160 i((
tmp
 = 
	`loc
(

161 
se_thrs
, (10 + 
nses
) *

162 (
thad_t
))=
NULL
) {

163 
t
 = 
o
;

164 
out
;

166 
se_thrs
 = 
tmp
;

167 
nses_locd
 += 10;

169 i((
t
 = 
	`c_se
(
dbv
, 
b
, 
ogme
,

170 &
lf
, &
ady_ݒ
, &
tid
)) != 0)

171 
out
;

172 i(!
ady_ݒ
)

173 
	`memy
(&
se_thrs


174 [
nses
++], &
tid
, (
thad_t
));

176 
DB_REP_HOLDELECTION
:

177 i(
ma_eid
 =
SELF_EID
)

180 i(

 !
NULL
) {

181 i(
	`thad_jo
(
e_thr
, &
us
) != 0) {

182 
dbv
->
	`rx
(dbenv,

184 
out
;

186 

 = 
NULL
;

188 i((

 = 
	`oc
((
e_gs
), 1)=
NULL
) {

189 
dbv
->
	`rx
(dbenv, "can'tllocate memory");

190 
t
 = 
o
;

191 
out
;

193 

->
dbv
 = dbenv;

194 

->
machb
 = 
b
;

195 i((
t
 = 
	`thad_
(&
e_thr
,

196 
NULL
, 
e_thad
, (*)

)) != 0) {

197 
dbv
->
	`rx
(dbenv,

201 
DB_REP_ISPERM
:

204 i(
p
->
eed
) {

205 
p
->
eed
 = 0;

206 i((
t
 = 
dbv
->
	`p_t
(dbenv,

207 
NULL
, 
DB_REP_MASTER
)) != 0) {

208 
dbv
->
	`r
(dbv, 
t
,

210 
out
;

215 
dbv
->
	`r
(dbv, 
r
, "DB_ENV->rep_process_message");

220 
out
: i((
t_t
 = 
	`machb_m
(
b
, 
eid
, 1)!0 && 
t
 == 0)

221 
t
 = 
t_t
;

224 i(

 !
NULL
 && 
	`thad_jo
(
e_thr
, &
us
) != 0)

225 
dbv
->
	`rx
(dbenv, "can't joinlectionhread");

227 i(
se_thrs
 !
NULL
)

228 --
nses
 >= 0)

229 i(
	`thad_jo
(
se_thrs
[
nses
], &
us
) != 0)

230 
dbv
->
	`rx
(dbenv, "can't join sitehread");

232  ((*)(
u_t
)
t
);

233 
	}
}

241 
	$c_thad
(
gs
)

242 *
gs
;

244 
DB_ENV
 *
dbv
;

245 cڡ *
home
, *
ogme
;

246 
hm_lo_gs
 *
ha
;

247 
c_gs
 *
rgs
;

248 
machb_t
 *
machb
;

249 
thad_t
 
hm_thrs
[
MAX_THREADS
];

250 *
us
;

251 
i
, 
eid
, 
pt
, 
t
;

252 
sock_t
 
fd
, 
ns
;

254 
ha
 = 
NULL
;

255 
rgs
 = (
c_gs
 *)
gs
;

256 
dbv
 = 
rgs
->dbenv;

257 
home
 = 
rgs
->home;

258 
ogme
 = 
rgs
->progname;

259 
machb
 = 
rgs
->machtab;

260 
pt
 = 
rgs
->port;

266 i((
fd
 = 
	`li_sock_
(
ogme
, 
pt
)) < 0) {

267 
t
 = 
o
;

268 
r
;

271 
i
 = 0; i < 
MAX_THREADS
; i++) {

272 i((
ns
 = 
	`li_sock_ac
(
machb
,

273 
ogme
, 
fd
, &
eid
)=
SOCKET_CREATION_FAILURE
) {

274 
t
 = 
o
;

275 
r
;

277 i((
ha
 = 
	`oc
((
hm_lo_gs
), 1)=
NULL
) {

278 
dbv
->
	`rx
(dbenv, "can'tllocate memory");

279 
t
 = 
o
;

280 
r
;

282 
ha
->
ogme
 =rogname;

283 
ha
->
home
 = home;

284 
ha
->
fd
 = 
ns
;

285 
ha
->
eid
 =id;

286 
ha
->
b
 = 
machb
;

287 
ha
->
dbv
 = dbenv;

288 i((
t
 = 
	`thad_
(&
hm_thrs
[
i
++], 
NULL
,

289 
hm_lo
, (*)
ha
)) != 0) {

290 
dbv
->
	`rx
(dbenv, "can't createhread for site");

291 
r
;

293 
ha
 = 
NULL
;

297 
dbv
->
	`rx
(dbenv, "Too manyhreads");

298 
t
 = 
ENOMEM
;

301 --
i
 >= 0)

302 i(
	`thad_jo
(
hm_thrs
[
i
], &
us
) != 0)

303 
dbv
->
	`rx
(dbenv, "can't join sitehread");

305 
r
:  (
t
 =0 ? (*)
EXIT_SUCCESS
 : (*)
EXIT_FAILURE
);

306 
	}
}

313 
	$c_l
(
gs
)

314 *
gs
;

316 
DB_ENV
 *
dbv
;

317 
l_gs
 *

;

318 cڡ *
home
, *
ogme
;

319 
hm_lo_gs
 *
ha
;

320 
ed
, 
i
, 
nses
, 
ݒ
, 
t
, *
sucss
;

321 
machb_t
 *
machb
;

322 
thad_t
 *
hm_thr
;

323 
pse_t
 *
ses
;

325 
ha
 = 
NULL
;

326 

 = (
l_gs
 *)
gs
;

327 
dbv
 = 

->dbenv;

328 
ogme
 = 

->progname;

329 
home
 = 

->home;

330 
machb
 = 

->machtab;

331 
nses
 = 

->nsites;

332 
ses
 = 

->sites;

334 
t
 = 0;

335 
hm_thr
 = 
NULL
;

336 
sucss
 = 
NULL
;

339 i((
sucss
 = 
	`oc
(
nses
 > 0 ?se: 1, ())=
NULL
) {

340 
dbv
->
	`r
(dbv, 
o
, "connect_all");

341 
t
 = 1;

342 
r
;

345 i(
nses
 > 0 && (
hm_thr
 = 
	`oc
ses, ())=
NULL
) {

346 
dbv
->
	`r
(dbv, 
o
, "connect_all");

347 
t
 = 1;

348 
r
;

351 
ed
 = 
nses
; failed > 0;) {

352 
i
 = 0; i < 
nses
; i++) {

353 i(
sucss
[
i
])

356 
t
 = 
	`c_se
(
dbv
, 
machb
,

357 
ogme
, &
ses
[
i
], &
ݒ
, &
hm_thr
[i]);

364 i(
t
 =
DB_REP_UNAVAIL
)

367 i(
t
 != 0)

368 
r
;

370 
ed
--;

371 
sucss
[
i
] = 1;

374 i(
t
 =0 && 
ݒ
 == 1)

378 
	`p
(1);

381 
r
: i(
sucss
 !
NULL
)

382 
	`
(
sucss
);

383 i(
hm_thr
 !
NULL
)

384 
	`
(
hm_thr
);

385  (
t
 ? (*)
EXIT_FAILURE
 : (*)
EXIT_SUCCESS
);

386 
	}
}

389 
	$c_se
(
dbv
, 
machb
, 
ogme
, 
se
, 
is_ݒ
, 
hm_th
)

390 
DB_ENV
 *
dbv
;

391 
machb_t
 *
machb
;

392 cڡ *
ogme
;

393 
pse_t
 *
se
;

394 *
is_ݒ
;

395 
thad_t
 *
hm_th
;

397 
eid
, 
t
;

398 
sock_t
 
s
;

399 
hm_lo_gs
 *
ha
;

401 i((
s
 = 
	`g_ced_sock
(
machb
, 
ogme
,

402 
se
->
ho
, se->
pt
, 
is_ݒ
, &
eid
)) < 0)

403  (
DB_REP_UNAVAIL
);

405 i(*
is_ݒ
)

408 i((
ha
 = 
	`oc
((
hm_lo_gs
), 1)=
NULL
) {

409 
dbv
->
	`rx
(dbenv, "can'tllocate memory");

410 
t
 = 
o
;

411 
r
;

414 
ha
->
ogme
 =rogname;

415 
ha
->
fd
 = 
s
;

416 
ha
->
eid
 =id;

417 
ha
->
b
 = 
machb
;

418 
ha
->
dbv
 = dbenv;

420 i((
t
 = 
	`thad_
(
hm_th
, 
NULL
,

421 
hm_lo
, (*)
ha
)) != 0) {

422 
dbv
->
	`rx
(dbenv, "can't createhread for connected site");

423 
r1
;

428 
r1
: 
	`
(
ha
);

429 
r
:

430  (
t
);

431 
	}
}

438 
	$e_thad
(
gs
)

439 *
gs
;

441 
DB_ENV
 *
dbv
;

442 
e_gs
 *
rgs
;

443 
machb_t
 *
machb
;

444 
u_t32_t
 
timeout
;

445 
n
, 
t
;

446 
APP_DATA
 *
p
;

448 
rgs
 = (
e_gs
 *)
gs
;

449 
dbv
 = 
rgs
->dbenv;

450 
machb
 = 
rgs
->machtab;

451 
	`
(
rgs
);

452 
p
 = 
dbv
->
p_ive
;

454 
	`machb_rm
(
machb
, &
n
, &
timeout
);

455 ()
dbv
->
	`p_t_timeout
(dbv, 
DB_REP_ELECTION_TIMEOUT
, 
timeout
);

456 (
t
 = 
dbv
->
	`p_e
(dbv, 
n
, (n/2+1), 0)) != 0)

457 
	`p
(2);

459 i(
p
->
eed
) {

460 
p
->
eed
 = 0;

461 i((
t
 = 
dbv
->
	`p_t
(dbv, 
NULL
, 
DB_REP_MASTER
)) != 0)

462 
dbv
->
	`r
(dbv, 
t
,

466  (
NULL
);

467 
	}
}

	@../examples_c/ex_rep/base/rep_net.c

9 
	~<sys/tys.h
>

10 
	~<o.h
>

11 
	~<dio.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

15 
	~<db.h
>

16 
	~"p_ba.h
"

17 #ide
_SYS_QUEUE_H


23 
	~<dbc/queue.h
>

26 
machb_add
 
__P
((
machb_t
 *, 
sock_t
, 
u_t32_t
, , *));

27 #ifde
DIAGNOSTIC


28 
machb_t
 
__P
((
machb_t
 *));

30 
ssize_t
 
adn
 
__P
((
sock_t
, *, 
size_t
));

62 
	#MACHID_INVALID
 0

	)

63 
	#MACHID_SELF
 1

	)

65 
	s__machb
 {

66 
LIST_HEAD
(
__machli
, 
__memb

	mmachli
;

67 
	mxtid
;

68 
mux_t
 
	mmtmux
;

69 
u_t32_t
 
	mtimeout_time
;

70 
	mcut
;

71 
	mmax
;

72 
	mnses
;

76 
	s__memb
 {

77 
u_t32_t
 
	mhoaddr
;

78 
	mpt
;

79 
	meid
;

80 
sock_t
 
	mfd
;

81 
LIST_ENTRY
(
__memb

	mlks
;

85 
que_nd_brd
 
__P
((
machb_t
 *,

86 cڡ 
DBT
 *, cڡ DBT *, 
u_t32_t
));

87 
que_nd_e
 
__P
((cڡ 
DBT
 *, cڡ DBT *, 
sock_t
, 
u_t32_t
));

97 
	$machb_
(
machbp
, 
nses
)

98 
machb_t
 **
machbp
;

99 
nses
;

101 
t
;

102 
machb_t
 *
machb
;

104 i((
machb
 = 
	`mloc
((
machb_t
))=
NULL
) {

105 
	`rtf
(
dr
, "can'tllocate memory\n");

106  (
ENOMEM
);

109 
	`LIST_INIT
(&
machb
->
machli
);

112 
machb
->
xtid
 = 2;

113 
machb
->
timeout_time
 = 2 * 1000000;

114 
machb
->
cut
 = machb->
max
 = 0;

115 
machb
->
nses
 =sites;

117 
t
 = 
	`mux_
(&
machb
->
mtmux
, 
NULL
);

118 *
machbp
 = 
machb
;

120  (
t
);

121 
	}
}

129 
	$machb_add
(
machb
, 
fd
, 
hoaddr
, 
pt
, 
idp
)

130 
machb_t
 *
machb
;

131 
sock_t
 
fd
;

132 
u_t32_t
 
hoaddr
;

133 
pt
, *
idp
;

135 
t
;

136 
memb_t
 *
m
, *
memb
;

138 
t
 = 0;

139 i((
memb
 = 
	`mloc
((
memb_t
))=
NULL
) {

140 
	`rtf
(
dr
, "can'tllocate memory\n");

141  (
ENOMEM
);

144 
memb
->
fd
 = fd;

145 
memb
->
hoaddr
 = hostaddr;

146 
memb
->
pt
 =ort;

148 i((
t
 = 
	`mux_lock
(&
machb
->
mtmux
)) != 0) {

149 
	`rtf
(
dr
, "can'tock mutex");

150  (
t
);

153 
m
 = 
	`LIST_FIRST
(&
machb
->
machli
);

154 
m
 !
NULL
; m = 
	`LIST_NEXT
(m, 
lks
))

155 i(
m
->
hoaddr
 =hoadd&& m->
pt
 ==ort)

158 i(
m
 =
NULL
) {

159 
memb
->
eid
 = 
machb
->
xtid
++;

160 
	`LIST_INSERT_HEAD
(&
machb
->
machli
, 
memb
, 
lks
);

162 
memb
->
eid
 = 
m
->eid;

164 i((
t
 = 
	`mux_uock
(&
machb
->
mtmux
)) != 0) {

165 
	`rtf
(
dr
, "can't unlock mutex\n");

166  (
t
);

169 i(
idp
 !
NULL
)

170 *
idp
 = 
memb
->
eid
;

172 i(
m
 =
NULL
) {

173 i(++
machb
->
cut
 > machb->
max
)

174 
machb
->
max
 = machb->
cut
;

176 
	`
(
memb
);

177 
t
 = 
EEXIST
;

179 #ifde
DIAGNOSTIC


180 
	`tf
("Exiting machtab_add\n");

181 
	`machb_t
(
machb
);

183  (
t
);

184 
	}
}

191 
	$machb_gfo
(
machb
, 
eid
, 
hop
, 
p܍
)

192 
machb_t
 *
machb
;

193 
eid
;

194 
u_t32_t
 *
hop
;

195 *
p܍
;

197 
t
;

198 
memb_t
 *
memb
;

200 i((
t
 = 
	`mux_lock
(&
machb
->
mtmux
)) != 0) {

201 
	`rtf
(
dr
, "can'tock mutex\n");

202  (
t
);

205 
memb
 = 
	`LIST_FIRST
(&
machb
->
machli
);

206 
memb
 !
NULL
;

207 
memb
 = 
	`LIST_NEXT
(memb, 
lks
))

208 i(
memb
->
eid
 ==id) {

209 *
hop
 = 
memb
->
hoaddr
;

210 *
p܍
 = 
memb
->
pt
;

214 i((
t
 = 
	`mux_uock
(&
machb
->
mtmux
)) != 0) {

215 
	`rtf
(
dr
, "can't unlock mutex\n");

216  (
t
);

219  (
memb
 !
NULL
 ? 0 : 
EINVAL
);

220 
	}
}

229 
	$machb_m
(
machb
, 
eid
, 
lock
)

230 
machb_t
 *
machb
;

231 
eid
;

232 
lock
;

234 
found
, 
t
;

235 
memb_t
 *
memb
;

237 
t
 = 0;

238 i(
lock
 && (
t
 = 
	`mux_lock
(&
machb
->
mtmux
)) != 0) {

239 
	`rtf
(
dr
, "can'tock mutex\n");

240  (
t
);

243 
found
 = 0, 
memb
 = 
	`LIST_FIRST
(&
machb
->
machli
);

244 
memb
 !
NULL
;

245 
memb
 = 
	`LIST_NEXT
(memb, 
lks
))

246 i(
memb
->
eid
 ==id) {

247 
found
 = 1;

248 
	`LIST_REMOVE
(
memb
, 
lks
);

249 ()
	`osock
(
memb
->
fd
);

250 
	`
(
memb
);

251 
machb
->
cut
--;

255 i(
	`LIST_FIRST
(&
machb
->
machli
=
NULL
)

256 
machb
->
xtid
 = 2;

258 i(
lock
 && (
t
 = 
	`mux_uock
(&
machb
->
mtmux
)) != 0)

259 
	`rtf
(
dr
, "can't unlock mutex\n");

261 #ifde
DIAGNOSTIC


262 
	`tf
("Exiting machtab_rem\n");

263 
	`machb_t
(
machb
);

265  (
t
);

266 
	}
}

269 
	$machb_rm
(
machb
, 
nump
, 
timeou
)

270 
machb_t
 *
machb
;

271 *
nump
;

272 
u_t32_t
 *
timeou
;

274 i(
machb
->
nses
 == 0)

275 *
nump
 = 
machb
->
max
;

277 *
nump
 = 
machb
->
nses
;

278 *
timeou
 = 
machb
->
timeout_time
;

279 
	}
}

281 #ifde
DIAGNOSTIC


283 
	$machb_t
(
machb
)

284 
machb_t
 *
machb
;

286 
memb_t
 *
m
;

288 i(
	`mux_lock
(&
machb
->
mtmux
) != 0) {

289 
	`rtf
(
dr
, "can'tock mutex\n");

290 
	`abt
();

293 
m
 = 
	`LIST_FIRST
(&
machb
->
machli
);

294 
m
 !
NULL
; m = 
	`LIST_NEXT
(m, 
lks
)) {

296 
	`tf
("IP: %lx Port: %6d EID: %2d FD: %3d\n",

297 ()
m
->
hoaddr
, m->
pt
, m->
eid
, m->
fd
);

300 i(
	`mux_uock
(&
machb
->
mtmux
) != 0) {

301 
	`rtf
(
dr
, "can't unlock mutex\n");

302 
	`abt
();

304 
	}
}

312 
sock_t


313 
	$li_sock_
(
ogme
, 
pt
)

314 cڡ *
ogme
;

315 
pt
;

317 
sock_t
 
s
;

318 
sockt
;

319 
sockaddr_
 
si
;

321 
	`COMPQUIET
(
ogme
, 
NULL
);

323 i((
s
 = 
	`sock
(
AF_INET
, 
SOCK_STREAM
, 
IPPROTO_TCP
)) < 0) {

324 
	`
("can't createisten socket");

328 
	`memt
(&
si
, 0, (si));

329 
si
.
s_my
 = 
AF_INET
;

330 
si
.
s_addr
.
s_addr
 = 
	`htl
(
INADDR_ANY
);

331 
si
.
s_pt
 = 
	`hts
(()
pt
);

338 
sockt
 = 1;

339 
	`tsockt
(
s
, 
SOL_SOCKET
, 
SO_REUSEADDR
,

340 (cڡ *)&
sockt
, (sockopt));

342 i(
	`bd
(
s
, (
sockaddr
 *)&
si
, (si)) != 0) {

343 
	`
("can't bindisten socket");

344 
r
;

347 i(
	`li
(
s
, 5) != 0) {

348 
	`
("can'tstablishisten queue");

349 
r
;

352  (
s
);

354 
r
: 
	`osock
(
s
);

356 
	}
}

363 
sock_t


364 
	$li_sock_ac
(
machb
, 
ogme
, 
s
, 
eidp
)

365 
machb_t
 *
machb
;

366 cڡ *
ogme
;

367 
sock_t
 
s
;

368 *
eidp
;

370 
sockaddr_
 
si
;

371 
si_n
;

372 
ho
, 
t
;

373 
sock_t
 
ns
;

374 
u_t16_t
 
pt
;

376 
	`COMPQUIET
(
ogme
, 
NULL
);

378 
wa
: 
	`memt
(&
si
, 0, (si));

379 
si_n
 = (
si
);

380 
ns
 = 
	`ac
(
s
, (
sockaddr
 *)&
si
, &
si_n
);

381 i(
ns
 =
SOCKET_CREATION_FAILURE
) {

382 
	`rtf
(
dr
, "can'tccept incoming connection\n");

383  
ns
;

385 
ho
 = 
	`ohl
(
si
.
s_addr
.
s_addr
);

392 i(
	`adn
(
ns
, &
pt
, 2) != 2)

393 
r
;

394 
pt
 = 
	`ohs
(port);

396 
t
 = 
	`machb_add
(
machb
, 
ns
, 
ho
, 
pt
, 
eidp
);

397 i(
t
 =
EEXIST
) {

398 
	`osock
(
ns
);

399 
wa
;

400 } i(
t
 != 0)

401 
r
;

402 
	`tf
("Cedho %x܈%d,id = %d\n", 
ho
, 
pt
, *
eidp
);

403  (
ns
);

405 
r
: 
	`osock
(
ns
);

406  
SOCKET_CREATION_FAILURE
;

407 
	}
}

417 
sock_t


418 
	$g_ced_sock
(
machb
, 
ogme
, 
meho
, 
pt
, 
is_ݒ
, 
eidp
)

419 
machb_t
 *
machb
;

420 cڡ *
ogme
, *
meho
;

421 
pt
, *
is_ݒ
, *
eidp
;

423 
t
;

424 
sock_t
 
s
;

425 
hot
 *
hp
;

426 
sockaddr_
 
si
;

427 
u_t32_t
 
addr
;

428 
u_t16_t
 
t
;

430 *
is_ݒ
 = 0;

432 i((
hp
 = 
	`ghobyme
(
meho
)=
NULL
) {

433 
	`rtf
(
dr
, "%s: ho found: %s\n", 
ogme
,

434 
	`
(
t_o
));

438 i((
s
 = 
	`sock
(
AF_INET
, 
SOCK_STREAM
, 
IPPROTO_TCP
)) < 0) {

439 
	`
("can't create outgoing socket");

442 
	`memt
(&
si
, 0, (si));

443 
	`memy
((*)&
si
.
s_addr
, 
hp
->
h_addr
, hp->
h_ngth
);

444 
addr
 = 
	`ohl
(
si
.
s_addr
.
s_addr
);

445 
t
 = 
	`machb_add
(
machb
, 
s
, 
addr
, 
pt
, 
eidp
);

446 i(
t
 =
EEXIST
) {

447 *
is_ݒ
 = 1;

448 
	`osock
(
s
);

450 } i(
t
 != 0) {

451 
	`osock
(
s
);

455 
si
.
s_my
 = 
AF_INET
;

456 
si
.
s_pt
 = 
	`hts
(()
pt
);

457 i(
	`c
(
s
, (
sockaddr
 *)&
si
, (si)) < 0) {

458 
	`rtf
(
dr
, "%s: connection failed: %s\n",

459 
ogme
, 
	`
(
t_o
));

460 ()
	`machb_m
(
machb
, *
eidp
, 1);

469 
t
 = 
	`hts
(
mypt
);

470 
	`wresock
(
s
, &
t
, 2);

472  (
s
);

473 
	}
}

484 
	$g_xt_mesge
(
fd
, 
c
, 
cڌ
)

485 
sock_t
 
fd
;

486 
DBT
 *
c
, *
cڌ
;

488 
size_t
 

;

489 
u_t32_t
 
rsize
, 
csize
;

490 
u_t8_t
 *
cbuf
, *
cڌbuf
;

502 

 = 
	`adn
(
fd
, &
rsize
, 4);

503 i(

 != 4)

507 i(
rsize
 > 0) {

508 i(
c
->
size
 < 
rsize
)

509 
c
->
da
 = 
	`loc
ec->da, 
rsize
);

510 
cbuf
 = 
c
->
da
;

511 

 = 
	`adn
(
fd
, 
cbuf
, 
rsize
);

513 i(
c
->
da
 !
NULL
)

514 
	`
(
c
->
da
);

515 
c
->
da
 = 
NULL
;

517 
c
->
size
 = 
rsize
;

520 

 = 
	`adn
(
fd
, &
csize
, 4);

521 i(

 != 4)

525 i(
csize
 > 0) {

526 
cڌbuf
 = 
cڌ
->
da
;

527 i(
cڌ
->
size
 < 
csize
)

528 
cڌbuf
 = 
	`loc
(cڌbuf, 
csize
);

529 

 = 
	`adn
(
fd
, 
cڌbuf
, 
csize
);

530 i(

 !
csize
)

533 i(
cڌ
->
da
 !
NULL
)

534 
	`
(
cڌ
->
da
);

535 
cڌbuf
 = 
NULL
;

537 
cڌ
->
da
 = 
cڌbuf
;

538 
cڌ
->
size
 = 
csize
;

541 
	}
}

548 
ssize_t


549 
	$adn
(
fd
, 
vr
, 
n
)

550 
sock_t
 
fd
;

551 *
vr
;

552 
size_t
 
n
;

554 
size_t
 
e
;

555 
ssize_t
 
ėd
;

556 *
r
;

558 
r
 = 
vr
;

559 
e
 = 
n
;

560 
e
 > 0) {

561 i((
ėd
 = 
	`adsock
(
fd
, 
r
, 
e
)) < 0) {

566 i(
t_o
 =
EINTR
)

567 
ėd
 = 0;

569 
	`
("can'tead from socket");

572 } i(
ėd
 == 0)

575 
e
 -
ėd
;

576 
r
 +
ėd
;

579  (
n
 - 
e
);

580 
	}
}

587 
	$que_nd
(
dbv
, 
cڌ
, 
c
, 
lp
, 
eid
, 
ags
)

588 
DB_ENV
 *
dbv
;

589 cڡ 
DBT
 *
cڌ
, *
c
;

590 cڡ 
DB_LSN
 *
lp
;

591 
eid
;

592 
u_t32_t
 
ags
;

594 
n
, 
t
, 
t_t
;

595 
sock_t
 
fd
;

596 
machb_t
 *
machb
;

597 
memb_t
 *
m
;

599 
	`COMPQUIET
(
lp
, 
NULL
);

600 
machb
 =

601 (
machb_t
 *)((
APP_DATA
*)
dbv
->
p_ive
)->
comm_aruu
;

603 i(
eid
 =
DB_EID_BROADCAST
) {

609 
n
 = 
	`que_nd_brd
(
machb
, 
c
, 
cڌ
, 
ags
);

610 i(
n
 < 0 )

611  (
DB_REP_UNAVAIL
);

615 i((
t
 = 
	`mux_lock
(&
machb
->
mtmux
)) != 0) {

616 
dbv
->
	`rx
(dbenv, "can'tock mutex");

617  (
t
);

620 
fd
 = 0;

621 
m
 = 
	`LIST_FIRST
(&
machb
->
machli
); m !
NULL
;

622 
m
 = 
	`LIST_NEXT
(m, 
lks
)) {

623 i(
m
->
eid
 ==id) {

624 
fd
 = 
m
->fd;

629 i(
fd
 == 0) {

630 
dbv
->
	`r
(dbv, 
DB_REP_UNAVAIL
,

631 "que_nd: cn fd machID %d", 
eid
);

632  (
DB_REP_UNAVAIL
);

635 i((
t
 = 
	`que_nd_e
(
c
, 
cڌ
, 
fd
, 
ags
)) != 0)

636 
	`rtf
(
dr
, "socket writerror in send() function\n");

638 i((
t_t
 = 
	`mux_uock
(&
machb
->
mtmux
)) != 0) {

639 
dbv
->
	`rx
(dbenv, "can't unlock mutex");

640 i(
t
 == 0)

641 
t
 = 
t_t
;

644  (
t
);

645 
	}
}

654 
	$que_nd_brd
(
machb
, 
c
, 
cڌ
, 
ags
)

655 
machb_t
 *
machb
;

656 cڡ 
DBT
 *
c
, *
cڌ
;

657 
u_t32_t
 
ags
;

659 
t
, 

;

660 
memb_t
 *
m
, *
xt
;

662 i((
t
 = 
	`mux_lock
(&
machb
->
mtmux
)) != 0) {

663 
	`rtf
(
dr
, "can'tock mutex\n");

664  (
t
);

667 

 = 0;

668 
m
 = 
	`LIST_FIRST
(&
machb
->
machli
); m !
NULL
; m = 
xt
) {

669 
xt
 = 
	`LIST_NEXT
(
m
, 
lks
);

670 i((
t
 = 
	`que_nd_e
(
c
, 
cڌ
, 
m
->
fd
, 
ags
)) != 0) {

671 
	`rtf
(
dr
, "socket writerror in broadcast\n");

672 ()
	`machb_m
(
machb
, 
m
->
eid
, 0);

674 

++;

677 i(
	`mux_uock
(&
machb
->
mtmux
) != 0) {

678 
	`rtf
(
dr
, "can't unlock mutex\n");

682  (

);

683 
	}
}

696 
	$que_nd_e
(
c
, 
cڌ
, 
fd
, 
ags
)

697 cڡ 
DBT
 *
c
, *
cڌ
;

698 
sock_t
 
fd
;

699 
u_t32_t
 
ags
;

702 
y
;

703 
ssize_t
 
bys_
, 
nw
;

704 
u_t8_t
 *
wp
;

706 
	`COMPQUIET
(
ags
, 0);

712 
nw
 = 
	`wresock
(
fd
, (cڡ *)&
c
->
size
, 4);

713 i(
nw
 != 4)

714  (
DB_REP_UNAVAIL
);

716 i(
c
->
size
 > 0) {

717 
nw
 = 
	`wresock
(
fd
, 
c
->
da
,ec->
size
);

718 i(
nw
 < 0)

719  (
DB_REP_UNAVAIL
);

720 i(
nw
 !(
ssize_t
)
c
->
size
) {

722 
wp
 = (
u_t8_t
 *)
c
->
da
 + 
nw
;

723 
bys_
 = 
c
->
size
 - 
nw
;

724 
y
 = 0; 
bys_
 > 0 &&etry < 3;etry++) {

725 
nw
 = 
	`wresock
(
fd
, 
wp
, 
bys_
);

726 i(
nw
 < 0)

727  (
DB_REP_UNAVAIL
);

728 
bys_
 -
nw
;

729 
wp
 +
nw
;

731 i(
bys_
 > 0)

732  (
DB_REP_UNAVAIL
);

736 
nw
 = 
	`wresock
(
fd
, (cڡ *)&
cڌ
->
size
, 4);

737 i(
nw
 != 4)

738  (
DB_REP_UNAVAIL
);

739 i(
cڌ
->
size
 > 0) {

740 
nw
 = 
	`wresock
(
fd
, 
cڌ
->
da
, cڌ->
size
);

741 i(
nw
 !(
ssize_t
)
cڌ
->
size
)

742  (
DB_REP_UNAVAIL
);

745 
	}
}

	@../examples_c/ex_rep/common/rep_common.c

9 
	~<o.h
>

10 
	~<dlib.h
>

11 
	~<rg.h
>

13 
	~<db.h
>

15 
	~"p_comm.h
"

17 
	#CACHESIZE
 (10 * 1024 * 1024)

	)

18 
	#DATABASE
 "que.db"

	)

19 
	#SLEEPTIME
 3

	)

21 #ifde
_WIN32


22 
	#WIN32_LEAN_AND_MEAN


	)

23 
	~<wdows.h
>

24 
	#p
(
s

	`S˕
(1000 * (s))

	)

27 
t_ocks
 
__P
((
DB
 *));

30 
	$t_ocks
(
dbp
)

31 
DB
 *
dbp
;

33 
DBC
 *
dbc
;

34 
DBT
 
key
, 
da
;

35 
	#MAXKEYSIZE
 10

	)

36 
	#MAXDATASIZE
 20

	)

37 
keybuf
[
MAXKEYSIZE
 + 1], 
dabuf
[
MAXDATASIZE
 + 1];

38 
t
, 
t_t
;

39 
u_t32_t
 
keysize
, 
dasize
;

41 i((
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &
dbc
, 0)) != 0) {

42 
dbp
->
	`r
(dbp, 
t
, "can't open cursor");

43  (
t
);

46 
	`memt
(&
key
, 0, (key));

47 
	`memt
(&
da
, 0, (data));

49 
	`tf
("\tSymbol\tPrice\n");

50 
	`tf
("\t======\t=====\n");

52 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 
DB_FIRST
);

53 
t
 == 0;

54 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 
DB_NEXT
)) {

55 
keysize
 = 
key
.
size
 > 
MAXKEYSIZE
 ? MAXKEYSIZE : key.size;

56 
	`memy
(
keybuf
, 
key
.
da
, 
keysize
);

57 
keybuf
[
keysize
] = '\0';

59 
dasize
 = 
da
.
size
 >
MAXDATASIZE
 ? MAXDATASIZE : data.size;

60 
	`memy
(
dabuf
, 
da
.da, 
dasize
);

61 
dabuf
[
dasize
] = '\0';

63 
	`tf
("\t%s\t%s\n", 
keybuf
, 
dabuf
);

65 
	`tf
("\n");

66 
	`fush
(
dout
);

68 i((
t_t
 = 
dbc
->
	`o
(dbc)!0 && 
t
 == 0)

69 
t
 = 
t_t
;

71 
t
) {

73 
DB_NOTFOUND
:

74 
DB_LOCK_DEADLOCK
:

77  (
t
);

79 
	}
}

81 
	#BUFSIZE
 1024

	)

84 
	$do
(
dbv
, 
shed_da
)

85 
DB_ENV
 *
dbv
;

86 
SHARED_DATA
 *
shed_da
;

88 
DB
 *
dbp
;

89 
DBT
 
key
, 
da
;

90 
buf
[
BUFSIZE
], *
f
, *
i
;

91 
u_t32_t
 
ags
;

92 
t
;

94 
dbp
 = 
NULL
;

95 
t
 = 0;

96 
	`memt
(&
key
, 0, (key));

97 
	`memt
(&
da
, 0, (data));

100 
	`tf
("QUOTESERVER%s> ",

101 
shed_da
->
is_ma
 ? "" : " (read-only)");

102 
	`fush
(
dout
);

104 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
)

107 
	#DELIM
 " \t\n"

	)

108 i((
f
 = 
	`ok
(&
buf
[0], 
DELIM
)=
NULL
) {

110 
i
 = 
NULL
;

111 } i((
i
 = 
	`ok
(
NULL
, 
DELIM
)) == NULL) {

113 i(
	`cmp
(
buf
, "exit", 4) == 0 ||

114 
	`cmp
(
buf
, "quit", 4) == 0)

116 
dbv
->
	`rx
(dbenv, "Format: TICKER VALUE");

120 i(
f
 !
NULL
 && !
shed_da
->
is_ma
) {

121 
dbv
->
	`rx
(dbenv, "Can't updatet client");

126 i(
dbp
 =
NULL
) {

127 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0)

128  (
t
);

131 i((
t
 = 
dbp
->
	`t_gesize
(dbp, 512)) != 0)

132 
r
;

134 
ags
 = 
DB_AUTO_COMMIT
;

135 i(
shed_da
->
is_ma
)

136 
ags
 |
DB_CREATE
;

137 i((
t
 = 
dbp
->
	`ݒ
(dbp,

138 
NULL
, 
DATABASE
, NULL, 
DB_BTREE
, 
ags
, 0)) != 0) {

139 i(
t
 =
ENOENT
) {

140 
	`tf
(

142 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

143 
dbv
->
	`r
(dbv, 
t
,

145 
r
;

147 
dbp
 = 
NULL
;

150 
dbv
->
	`r
(dbv, 
t
, "DB->open");

151 
r
;

155 i(
f
 =
NULL
)

156 (
t
 = 
	`t_ocks
(
dbp
))) {

159 
DB_REP_HANDLE_DEAD
:

160 ()
dbp
->
	`o
(dbp, 
DB_NOSYNC
);

161 
dbp
 = 
NULL
;

163 
dbp
->
	`r
(dbp, 
t
, "Errorraversing data");

164 
r
;

167 
key
.
da
 = 
f
;

168 
key
.
size
 = (
u_t32_t
)
	`
(
f
);

170 
da
.d
i
;

171 
da
.
size
 = (
u_t32_t
)
	`
(
i
);

173 i((
t
 = 
dbp
->
	`put
(dbp,

174 
NULL
, &
key
, &
da
, 
DB_AUTO_COMMIT
)) != 0) {

175 
dbp
->
	`r
(dbp, 
t
, "DB->put");

176 
r
;

181 
r
: i(
dbp
 !
NULL
)

182 ()
dbp
->
	`o
(dbp, 
DB_NOSYNC
);

184  (
t
);

185 
	}
}

188 
	$_v
(
ogme
, 
dbvp
)

189 cڡ *
ogme
;

190 
DB_ENV
 **
dbvp
;

192 
DB_ENV
 *
dbv
;

193 
t
;

195 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

196 
	`rtf
(
dr
, "can't createnv handle: %s\n",

197 
	`db_
(
t
));

198  (
t
);

201 
dbv
->
	`t_rfe
(dbv, 
dr
);

202 
dbv
->
	`t_fx
(dbv, 
ogme
);

204 *
dbvp
 = 
dbv
;

206 
	}
}

210 
	$v_
(
dbv
, 
home
)

211 
DB_ENV
 *
dbv
;

212 cڡ *
home
;

214 
u_t32_t
 
ags
;

215 
t
;

217 ()
dbv
->
	`t_chesize
(dbv, 0, 
CACHESIZE
, 0);

218 ()
dbv
->
	`t_ags
(dbv, 
DB_TXN_NOSYNC
, 1);

220 
ags
 = 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 |

221 
DB_INIT_REP
 | 
DB_INIT_TXN
 | 
DB_RECOVER
 | 
DB_THREAD
;

222 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
ags
, 0)) != 0)

223 
dbv
->
	`r
(dbv, 
t
, "can't opennvironment");

224  (
t
);

225 
	}
}

250 
	$uge
(
ogme
)

251 cڡ *
ogme
;

253 
	`rtf
(
dr
, "uge: %", 
ogme
);

254 
	`rtf
(
dr
, "[-CM][-h home][-o host:port][-m host:port]%s",

256 
	`ex
(
EXIT_FAILURE
);

257 
	}
}

	@../examples_c/ex_rep/mgr/rep_mgr.c

9 
	~<sys/tys.h
>

10 
	~<sigl.h
>

11 
	~<dlib.h
>

12 
	~<rg.h
>

13 #ide
_WIN32


14 
	~<unid.h
>

17 
	~<db.h
>

19 
	~"../comm/p_comm.h
"

22 
SHARED_DATA
 
	mshed_da
;

23 } 
	tAPP_DATA
;

25 cڡ *
	gogme
 = "ex_rep";

27 #ifde
_WIN32


28 

gt
(, * const *, const *);

31 
evt_back
 
__P
((
DB_ENV
 *, 
u_t32_t
, *));

34 
	$ma
(
gc
, 
gv
)

35 
gc
;

36 *
gv
[];

38 
*
ݏrg
;

39 
DB_ENV
 *
dbv
;

40 cڡ *
home
;

41 
ch
, *
ho
, *
ptr
;

42 
t
, 
tٮses
, 
t_t
, 
g_li_addss
, 
nd
;

43 
u_t16_t
 
pt
;

44 
APP_DATA
 
my_p_da
;

45 
u_t32_t
 
t_picy
;

46 
iܙy
;

48 
my_p_da
.
shed_da
.
is_ma
 = 0;

49 
dbv
 = 
NULL
;

50 
t
 = 
g_li_addss
 = 0;

51 
home
 = "TESTDIR";

53 i((
t
 = 
	`_v
(
ogme
, &
dbv
)) != 0)

54 
r
;

55 
dbv
->
p_ive
 = &
my_p_da
;

56 ()
dbv
->
	`t_evt_nify
(dbv, 
evt_back
);

58 
t_picy
 = 
DB_REP_ELECTION
;

59 
iܙy
 = 100;

61 (
ch
 = 
	`gt
(
gc
, 
gv
, "Cf:h:Mm:n:o:p:v")!
EOF
) {

62 
nd
 = 0;

63 
ch
) {

65 
t_picy
 = 
DB_REP_CLIENT
;

68 
home
 = 
ݏrg
;

71 
t_picy
 = 
DB_REP_MASTER
;

74 
ho
 = 
	`ok
(
ݏrg
, ":");

75 i((
ptr
 = 
	`ok
(
NULL
, ":")) == NULL) {

76 
	`rtf
(
dr
, "Bad host specification.\n");

77 
r
;

79 
pt
 = ()
	`oi
(
ptr
);

80 i((
t
 = 
dbv
->
	`pmgr_t_lol_se
(dbenv,

81 
ho
, 
pt
, 0)) != 0) {

82 
	`rtf
(
dr
,

84 
t
);

85 
r
;

87 
g_li_addss
 = 1;

90 
tٮses
 = 
	`oi
(
ݏrg
);

91 i((
t
 =

92 
dbv
->
	`p_t_nses
(dbv, 
tٮses
)) != 0)

93 
dbv
->
	`r
(dbv, 
t
, "set_nsites");

96 
nd
 = 1;

98 
ho
 = 
	`ok
(
ݏrg
, ":");

99 i((
ptr
 = 
	`ok
(
NULL
, ":")) == NULL) {

100 
	`rtf
(
dr
, "Bad host specification.\n");

101 
r
;

103 
pt
 = ()
	`oi
(
ptr
);

104 i((
t
 = 
dbv
->
	`pmgr_add_me_se
(dbv, 
ho
,

105 
pt
, 
NULL
, 
nd
 ? 
DB_REPMGR_PEER
 : 0)) != 0) {

106 
dbv
->
	`r
(dbv, 
t
,

107 "Couldهdd s%s:%d", 
ho
,

108 ()
pt
);

109 
r
;

113 
iܙy
 = 
	`oi
(
ݏrg
);

116 i((
t
 = 
dbv
->
	`t_vbo
(dbenv,

117 
DB_VERB_REPLICATION
, 1)) != 0)

118 
r
;

122 
	`uge
(
ogme
);

127 i((!
g_li_addss
|| 
home
 =
NULL
)

128 
	`uge
(
ogme
);

130 
dbv
->
	`p_t_iܙy
(dbv, 
iܙy
);

132 i((
t
 = 
	`v_
(
dbv
, 
home
)) != 0)

133 
r
;

135 i((
t
 = 
dbv
->
	`pmgr_t
(dbv, 3, 
t_picy
)) != 0)

136 
r
;

138 i((
t
 = 
	`do
(
dbv
, &
my_p_da
.
shed_da
)) != 0) {

139 
dbv
->
	`r
(dbv, 
t
, "Client failed");

140 
r
;

152 i((
t
 = 
dbv
->
	`log_ush
(dbv, 
NULL
)) != 0) {

153 
dbv
->
	`r
(dbv, 
t
, "log_flush");

154 
r
;

157 
r
:

158 i(
dbv
 !
NULL
 &&

159 (
t_t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

160 
	`rtf
(
dr
, "failure closingnv: %s (%d)\n",

161 
	`db_
(
t_t
),_ret);

162 i(
t
 == 0)

163 
t
 = 
t_t
;

166  (
t
);

167 
	}
}

170 
	$evt_back
(
dbv
, 
which
, 
fo
)

171 
DB_ENV
 *
dbv
;

172 
u_t32_t
 
which
;

173 *
fo
;

175 
APP_DATA
 *
p
 = 
dbv
->
p_ive
;

176 
SHARED_DATA
 *
shed
 = &
p
->
shed_da
;

178 
fo
 = 
NULL
;

180 
which
) {

181 
DB_EVENT_REP_CLIENT
:

182 
shed
->
is_ma
 = 0;

185 
DB_EVENT_REP_MASTER
:

186 
shed
->
is_ma
 = 1;

189 
DB_EVENT_REP_PERM_FAILED
:

190 
	`tf
("insufficientcks\n");

193 
DB_EVENT_REP_STARTUPDONE
:

194 
DB_EVENT_REP_NEWMASTER
:

199 
dbv
->
	`rx
(dbv, "ignܚgv%d", 
which
);

201 
	}
}

	@../examples_c/ex_sequence.c

9 
	~<sys/tys.h
>

11 
	~<dio.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

15 #ifde
_WIN32


16 

gt
(, * const *, const *);

18 
	~<unid.h
>

21 
	~<db.h
>

23 
	#DATABASE
 "qu.db"

	)

24 
	#SEQUENCE
 "my_qu"

	)

25 
ma
 
__P
((, *[]));

26 
uge
 
__P
(());

29 
	$ma
(
gc
, 
gv
)

30 
gc
;

31 *
gv
[];

33 

td
;

34 
DB
 *
dbp
;

35 
DB_SEQUENCE
 *
q
;

36 
DBT
 
key
;

37 
i
, 
t
, 
rag
;

38 
db_q_t
 
qnum
;

39 
ch
;

40 cڡ *
daba
, *
ogme
 = "ex_sequence";

42 
dbp
 = 
NULL
;

43 
q
 = 
NULL
;

45 
rag
 = 0;

46 (
ch
 = 
	`gt
(
gc
, 
gv
, "r")!
EOF
)

47 
ch
) {

49 
rag
 = 1;

53  (
	`uge
());

55 
gc
 -
td
;

56 
gv
 +
td
;

59 
daba
 = *
gv
 =
NULL
 ? 
DATABASE
 :rgv[0];

62 i(
rag
)

63 ()
	`move
(
daba
);

66 i((
t
 = 
	`db_
(&
dbp
, 
NULL
, 0)) != 0) {

67 
	`rtf
(
dr
,

68 "%s: db_: %s\n", 
ogme
, 
	`db_
(
t
));

69  (
EXIT_FAILURE
);

71 
dbp
->
	`t_rfe
(dbp, 
dr
);

72 
dbp
->
	`t_fx
(dbp, 
ogme
);

73 i((
t
 = 
dbp
->
	`ݒ
(dbp,

74 
NULL
, 
daba
, NULL, 
DB_BTREE
, 
DB_CREATE
, 0664)) != 0) {

75 
dbp
->
	`r
(dbp, 
t
, "%s: on", 
daba
);

76 
r
;

79 i((
t
 = 
	`db_qu_
(&
q
, 
dbp
, 0)) != 0) {

80 
dbp
->
	`r
(dbp, 
t
, "db_sequence_create");

81 
r
;

84 
	`memt
(&
key
, 0, (
DBT
));

85 
key
.
da
 = 
SEQUENCE
;

86 
key
.
size
 = (
u_t32_t
)
	`
(
SEQUENCE
);

88 i((
t
 = 
q
->
	`ݒ
(q, 
NULL
, &
key
, 
DB_CREATE
)) != 0) {

89 
dbp
->
	`r
(dbp, 
t
, "%s: DB_SEQUENCE->ݒ", 
SEQUENCE
);

90 
r
;

93 
i
 = 0; i < 10; i++) {

94 i((
t
 = 
q
->
	`g
(q, 
NULL
, 1, &
qnum
, 0)) != 0) {

95 
dbp
->
	`r
(dbp, 
t
, "DB_SEQUENCE->get");

96 
r
;

100 #ifde
_WIN32


101 
	`tf
("G sequumb %l64d\n", (
t64_t
)
qnum
);

103 
	`tf
(

104 "G sequumb %u\n", ()
qnum
);

109 i((
t
 = 
q
->
	`o
(seq, 0)) != 0) {

110 
q
 = 
NULL
;

111 
dbp
->
	`r
(dbp, 
t
, "DB_SEQUENCE->close");

112 
r
;

114 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

115 
	`rtf
(
dr
,

116 "%s: DB->o: %s\n", 
ogme
, 
	`db_
(
t
));

117  (
EXIT_FAILURE
);

119  (
EXIT_SUCCESS
);

121 
r
: i(
q
 !
NULL
)

122 ()
q
->
	`o
(seq, 0);

123 i(
dbp
 !
NULL
)

124 ()
dbp
->
	`o
(dbp, 0);

125  (
EXIT_FAILURE
);

126 
	}
}

129 
	$uge
()

131 ()
	`rtf
(
dr
, "usage:x_sequence [-r] [database]\n");

132  (
EXIT_FAILURE
);

133 
	}
}

	@../examples_c/ex_thread.c

9 
	~<sys/tys.h
>

10 
	~<sys/time.h
>

12 
	~<o.h
>

13 
	~<had.h
>

14 
	~<sigl.h
>

15 
	~<dio.h
>

16 
	~<dlib.h
>

17 
	~<rg.h
>

18 
	~<time.h
>

20 #ifde
_WIN32


21 

gt
(, * const *, const *);

23 
	~<unid.h
>

26 
	~<db.h
>

32 

sched_yld
 
__P
(());

34 
db_
 
__P
((const *));

35 *
ddlock
 
__P
((*));

36 
l
 
__P
((const *, , ));

37 
ښt
 
__P
(());

38 
ma
 
__P
((, *[]));

39 
ad
 
__P
(());

40 
s
 
__P
(());

41 *
ick
 
__P
((*));

42 *
tt
 
__P
((*));

43 
uge
 
__P
(());

44 
wd
 
__P
(());

45 
wr
 
__P
(());

47 
	gqu
;

49 
	s_iics
 {

50 
	mab܋d
;

51 
	mabts
;

52 
	madds
;

53 
	mdes
;

54 
	mtxns
;

55 
	mfound
;

56 
	mnfound
;

57 } *
	grf
;

60 *
	gogme
 = "ex_thread";

62 
	#DATABASE
 "acss.db"

	)

63 
	#WORDLIST
 "..//wdli"

	)

70 
	gpunish
;

71 
	gi
;

72 
	gėds
;

73 
	gvbo
;

74 
	gnwrs
;

76 
DB
 *
	gdbp
;

77 
DB_ENV
 *
	gdbv
;

78 
	ghads
;

79 **
	gli
;

92 
	$ma
(
gc
, 
gv
)

93 
gc
;

94 *
gv
[];

96 
*
ݏrg
;

97 

o
, 
td
;

98 
DB_TXN
 *
tx
;

99 
had_t
 *
tids
;

100 
ch
, 
i
, 
t
;

101 cڡ *
home
;

102 *

;

104 
tx
 = 
NULL
;

105 
i
 = 1000;

106 
ėds
 = 
nwrs
 = 4;

107 
home
 = "TESTDIR";

108 (
ch
 = 
	`gt
(
gc
, 
gv
, "h::r:vw:")!
EOF
)

109 
ch
) {

111 
home
 = 
ݏrg
;

114 
punish
 = 1;

117 
i
 = 
	`oi
(
ݏrg
);

120 
ėds
 = 
	`oi
(
ݏrg
);

123 
vbo
 = 1;

126 
nwrs
 = 
	`oi
(
ݏrg
);

130  (
	`uge
());

132 
gc
 -
td
;

133 
gv
 +
td
;

136 
	`d
(
	`gpid
(| 
	`time
(
NULL
));

139 ()
	`sigl
(
SIGINT
, 
ښt
);

142 
	`wd
();

145 ()
	`move
(
DATABASE
);

148 i((
t
 = 
	`db_
(
home
)) != 0)

149  (
t
);

152 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

153 
dbv
->
	`r
(dbv, 
t
, "db_create");

154 ()
dbv
->
	`o
(dbenv, 0);

155  (
EXIT_FAILURE
);

157 i((
t
 = 
dbp
->
	`t_gesize
(dbp, 1024)) != 0) {

158 
dbp
->
	`r
(dbp, 
t
, "set_pagesize");

159 
r
;

162 i((
t
 = 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
tx
, 0)) != 0)

163 
	`l
("txn_beg", 
t
, 1);

164 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
tx
,

165 
DATABASE
, 
NULL
, 
DB_BTREE
, 
DB_CREATE
 | 
DB_THREAD
, 0664)) != 0) {

166 
dbp
->
	`r
(dbp, 
t
, "%s: on", 
DATABASE
);

167 
r
;

169 
t
 = 
tx
->
	`comm
(txnp, 0);

170 
tx
 = 
NULL
;

171 i(
t
 != 0)

172 
r
;

175 
hads
 = 
ėds
 + 
nwrs
 + 2;

176 
	`tf
("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 #ifde
_WIN32


17 

gt
(, * const *, const *);

19 
	~<unid.h
>

22 
	~<db.h
>

24 um { 
	mACCOUNT
, 
	mBRANCH
, 
	mTELLER
 } 
	tFTYPE
;

26 
DB_ENV
 *
db_
 
__P
((cڡ *, cڡ *, , 
u_t32_t
));

27 
hpuϋ
 
__P
((
DB
 *, , , , ));

28 
puϋ
 
__P
((
DB
 *, 
u_t32_t
, u_int32_t, , const *));

29 
u_t32_t
 
ndom_id
 
__P
((
FTYPE
, , , ));

30 
u_t32_t
 
ndom_t
 
__P
((u_int32_t, u_int32_t));

31 
_puϋ
 
__P
((
DB_ENV
 *, , , , , ));

32 
_run
 
__P
((
DB_ENV
 *, , , , , ));

33 
_txn
 
__P
((
DB_ENV
 *, 
DB
 *, DB *, DB *, DB *, , , , ));

35 
vg
 
__P
((const *, , const *));

36 
ma
 
__P
((, *[]));

37 
uge
 
__P
((const *));

48 
	#TELLERS_PER_BRANCH
 10

	)

49 
	#ACCOUNTS_PER_TELLER
 10000

	)

50 
	#HISTORY_PER_BRANCH
 2592000

	)

58 #ifdef 
VALID_SCALING


59 
	#ACCOUNTS
 1000000

	)

60 
	#BRANCHES
 10

	)

61 
	#TELLERS
 100

	)

62 
	#HISTORY
 25920000

	)

65 #ifdef 
TINY


66 
	#ACCOUNTS
 1000

	)

67 
	#BRANCHES
 10

	)

68 
	#TELLERS
 100

	)

69 
	#HISTORY
 10000

	)

72 #ifdef 
VERY_TINY


73 
	#ACCOUNTS
 500

	)

74 
	#BRANCHES
 10

	)

75 
	#TELLERS
 50

	)

76 
	#HISTORY
 5000

	)

79 #i!
defed
(
VALID_SCALING
&& !defed(
TINY
&& !defed(
VERY_TINY
)

80 
	#ACCOUNTS
 100000

	)

81 
	#BRANCHES
 10

	)

82 
	#TELLERS
 100

	)

83 
	#HISTORY
 259200

	)

86 
	#HISTORY_LEN
 100

	)

87 
	#RECLEN
 100

	)

88 
	#BEGID
 1000000

	)

90 
	s_deec
 {

91 
u_t32_t
 
	mid
;

92 
u_t32_t
 
	mb
;

93 
u_t8_t
 
	md
[
RECLEN
 - (
u_t32_t
) - (u_int32_t)];

94 } 
	tdeec
;

96 
	s_hic
 {

97 
u_t32_t
 
	maid
;

98 
u_t32_t
 
	mbid
;

99 
u_t32_t
 
	mtid
;

100 
u_t32_t
 
	mamou
;

101 
u_t8_t
 
	md
[
RECLEN
 - 4 * (
u_t32_t
)];

102 } 
	thic
;

104 *
	gogme
 = "ex_tpcb";

107 
	$ma
(
gc
, 
gv
)

108 
gc
;

109 *
gv
[];

111 
*
ݏrg
;

112 

td
;

113 
DB_ENV
 *
dbv
;

114 
accous
, 
bnches
, 
ed
, 
Δs
, 
hiy
;

115 
ch
, 
iag
, 
mpo
, 
xns
, 
t
, 
txn_no_sync
, 
vbo
;

116 cڡ *
home
;

118 
home
 = "TESTDIR";

119 
accous
 = 
bnches
 = 
hiy
 = 
Δs
 = 0;

120 
iag
 = 
mpo
 = 
xns
 = 
txn_no_sync
 = 
vbo
 = 0;

121 
ed
 = ()
	`time
(
NULL
);

123 (
ch
 = 
	`gt
(
gc
, 
gv
, "a:b:c:fh::S:s:t:v")!
EOF
)

124 
ch
) {

126 i((
accous
 = 
	`oi
(
ݏrg
)) <= 0)

127  (
	`vg
(
ogme
, 
ch
, 
ݏrg
));

130 i((
bnches
 = 
	`oi
(
ݏrg
)) <= 0)

131  (
	`vg
(
ogme
, 
ch
, 
ݏrg
));

134 i((
mpo
 = 
	`oi
(
ݏrg
)) <= 0)

135  (
	`vg
(
ogme
, 
ch
, 
ݏrg
));

138 
txn_no_sync
 = 1;

141 
home
 = 
ݏrg
;

144 
iag
 = 1;

147 i((
xns
 = 
	`oi
(
ݏrg
)) <= 0)

148  (
	`vg
(
ogme
, 
ch
, 
ݏrg
));

151 i((
ed
 = 
	`oi
(
ݏrg
)) <= 0)

152  (
	`vg
(
ogme
, 
ch
, 
ݏrg
));

155 i((
hiy
 = 
	`oi
(
ݏrg
)) <= 0)

156  (
	`vg
(
ogme
, 
ch
, 
ݏrg
));

159 i((
Δs
 = 
	`oi
(
ݏrg
)) <= 0)

160  (
	`vg
(
ogme
, 
ch
, 
ݏrg
));

163 
vbo
 = 1;

167  (
	`uge
(
ogme
));

169 
gc
 -
td
;

170 
gv
 +
td
;

172 
	`d
((
u_t
)
ed
);

175 i((
dbv
 = 
	`db_
(
home
,

176 
ogme
, 
mpo
, 
txn_no_sync
 ? 
DB_TXN_NOSYNC
 : 0)=
NULL
)

177  (
EXIT_FAILURE
);

179 
accous
 =ccou=0 ? 
ACCOUNTS
 :ccounts;

180 
bnches
 = bnche=0 ? 
BRANCHES
 : branches;

181 
Δs
 =r=0 ? 
TELLERS
 :ellers;

182 
hiy
 = hiy =0 ? 
HISTORY
 : history;

184 i(
vbo
)

185 
	`tf
("%ld Accounts, %ld Branches, %ld Tellers, %ld History\n",

186 ()
accous
, ()
bnches
,

187 ()
Δs
, ()
hiy
);

189 i(
iag
) {

190 i(
xns
 != 0)

191  (
	`uge
(
ogme
));

192 
	`_puϋ
(
dbv
,

193 
accous
, 
bnches
, 
hiy
, 
Δs
, 
vbo
);

195 i(
xns
 == 0)

196  (
	`uge
(
ogme
));

197 
	`_run
(
dbv
, 
xns
, 
accous
, 
bnches
, 
Δs
, 
vbo
);

200 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

201 
	`rtf
(
dr
, "%s: dbenv->close failed: %s\n",

202 
ogme
, 
	`db_
(
t
));

203  (
EXIT_FAILURE
);

206  (
EXIT_SUCCESS
);

207 
	}
}

210 
	$vg
(
ogme
, 
g
, 
r
)

211 cڡ *
ogme
;

212 
g
;

213 cڡ *
r
;

215 ()
	`rtf
(
dr
,

216 "%s: invidrgumf -%c: %s\n", 
ogme
, 
g
, 
r
);

217  (
EXIT_FAILURE
);

218 
	}
}

221 
	$uge
(
ogme
)

222 cڡ *
ogme
;

224 cڡ *
a1
, *
a2
;

226 
a1
 = "[-fv] [-accounts] [-b branches]\n";

227 
a2
 = "\t[-c cache_size] [-h home] [-S seed] [-s history] [-tellers]";

228 ()
	`rtf
(
dr
, "uge: %-%%s\n", 
ogme
, 
a1
, 
a2
);

229 ()
	`rtf
(
dr
,

230 " %-iڠ%%s\n", 
ogme
, 
a1
, 
a2
);

231  (
EXIT_FAILURE
);

232 
	}
}

238 
DB_ENV
 *

239 
	$db_
(
home
, 
efix
, 
chesize
, 
ags
)

240 cڡ *
home
, *
efix
;

241 
chesize
;

242 
u_t32_t
 
ags
;

244 
DB_ENV
 *
dbv
;

245 
u_t32_t
 
lol_ags
;

246 
t
;

248 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

249 
	`rtf
(
dr
,

250 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

251  (
NULL
);

253 
dbv
->
	`t_rfe
(dbv, 
dr
);

254 
dbv
->
	`t_fx
(dbv, 
efix
);

255 ()
dbv
->
	`t_chesize
(dbenv, 0,

256 
chesize
 =0 ? 4 * 1024 * 1024 : (
u_t32_t
)cachesize, 0);

258 i(
ags
 & (
DB_TXN_NOSYNC
))

259 ()
dbv
->
	`t_ags
(dbv, 
DB_TXN_NOSYNC
, 1);

260 
ags
 &~(
DB_TXN_NOSYNC
);

262 
lol_ags
 = 
ags
 | 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 |

263 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
;

264 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
lol_ags
, 0)) != 0) {

265 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->ݒ: %s", 
home
);

266 ()
dbv
->
	`o
(dbenv, 0);

267  (
NULL
);

269  (
dbv
);

270 
	}
}

277 
	$_puϋ
(
v
, 
accous
, 
bnches
, 
hiy
, 
Δs
, 
vbo
)

278 
DB_ENV
 *
v
;

279 
accous
, 
bnches
, 
hiy
, 
Δs
, 
vbo
;

281 
DB
 *
dbp
;

282 
u_t32_t
 
b
, 
idnum
, 
oags
;

283 
u_t32_t
 
d_um
, 
d_bnum
, 
d_um
;

284 
u_t32_t
 
t_um
, 
t_bnum
, 
t_um
;

285 
t
;

287 
idnum
 = 
BEGID
;

288 
b
 = 500000;

289 
oags
 = 
DB_CREATE
;

291 i((
t
 = 
	`db_
(&
dbp
, 
v
, 0)) != 0) {

292 
v
->
	`r
nv, 
t
, "db_create");

295 ()
dbp
->
	`t_h_m
(dbp, (
u_t32_t
)
accous
);

297 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, "account", NULL,

298 
DB_HASH
, 
oags
, 0644)) != 0) {

299 
v
->
	`r
nv, 
t
, "DB->open:ccount");

303 
t_um
 = 
idnum
;

304 
	`puϋ
(
dbp
, 
idnum
, 
b
, 
accous
, "account");

305 
idnum
 +
accous
;

306 
d_um
 = 
idnum
 - 1;

307 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

308 
v
->
	`r
nv, 
t
, "DB->close:ccount");

311 i(
vbo
)

312 
	`tf
("Populatedccounts: %ld - %ld\n",

313 ()
t_um
, ()
d_um
);

320 i((
t
 = 
	`db_
(&
dbp
, 
v
, 0)) != 0) {

321 
v
->
	`r
nv, 
t
, "db_create");

324 ()
dbp
->
	`t_h_f
(dbp, 1);

325 ()
dbp
->
	`t_h_m
(dbp, (
u_t32_t
)
bnches
);

326 ()
dbp
->
	`t_gesize
(dbp, 512);

327 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, "branch", NULL,

328 
DB_HASH
, 
oags
, 0644)) != 0) {

329 
v
->
	`r
nv, 
t
, "DB->open: branch");

332 
t_bnum
 = 
idnum
;

333 
	`puϋ
(
dbp
, 
idnum
, 
b
, 
bnches
, "branch");

334 
idnum
 +
bnches
;

335 
d_bnum
 = 
idnum
 - 1;

336 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

337 
v
->
	`r
nv, 
t
, "DB->close: branch");

340 i(
vbo
)

341 
	`tf
("Populated branches: %ld - %ld\n",

342 ()
t_bnum
, ()
d_bnum
);

348 i((
t
 = 
	`db_
(&
dbp
, 
v
, 0)) != 0) {

349 
v
->
	`r
nv, 
t
, "db_create");

352 ()
dbp
->
	`t_h_f
(dbp, 0);

353 ()
dbp
->
	`t_h_m
(dbp, (
u_t32_t
)
Δs
);

354 ()
dbp
->
	`t_gesize
(dbp, 512);

355 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, "teller", NULL,

356 
DB_HASH
, 
oags
, 0644)) != 0) {

357 
v
->
	`r
nv, 
t
, "DB->open:eller");

361 
t_um
 = 
idnum
;

362 
	`puϋ
(
dbp
, 
idnum
, 
b
, 
Δs
, "teller");

363 
idnum
 +
Δs
;

364 
d_um
 = 
idnum
 - 1;

365 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

366 
v
->
	`r
nv, 
t
, "DB->close:eller");

369 i(
vbo
)

370 
	`tf
("Populatedellers: %ld - %ld\n",

371 ()
t_um
, ()
d_um
);

373 i((
t
 = 
	`db_
(&
dbp
, 
v
, 0)) != 0) {

374 
v
->
	`r
nv, 
t
, "db_create");

377 ()
dbp
->
	`t__n
(dbp, 
HISTORY_LEN
);

378 i((
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, "history", NULL,

379 
DB_RECNO
, 
oags
, 0644)) != 0) {

380 
v
->
	`r
nv, 
t
, "DB->open: history");

384 
	`hpuϋ
(
dbp
, 
hiy
, 
accous
, 
bnches
, 
Δs
);

385 i((
t
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

386 
v
->
	`r
nv, 
t
, "DB->close: history");

390 
	}
}

393 
	$puϋ
(
dbp
, 
t_id
, 
b
, 
ecs
, 
msg
)

394 
DB
 *
dbp
;

395 
u_t32_t
 
t_id
, 
b
;

396 
ecs
;

397 cڡ *
msg
;

399 
DBT
 
kdbt
, 
ddbt
;

400 
deec
 
dc
;

401 
i
, 
t
;

403 
kdbt
.
ags
 = 0;

404 
kdbt
.
da
 = &
dc
.
id
;

405 
kdbt
.
size
 = (
u_t32_t
);

406 
ddbt
.
ags
 = 0;

407 
ddbt
.
da
 = &
dc
;

408 
ddbt
.
size
 = (
dc
);

409 
	`memt
(&
dc
.
d
[0], 1, (drec.pad));

411 
i
 = 0; i < 
ecs
; i++) {

412 
dc
.
id
 = 
t_id
 + (
u_t32_t
)
i
;

413 
dc
.
b
 = balance;

414 i((
t
 =

415 (
dbp
->
put
)(dbp, 
NULL
, &
kdbt
, &
ddbt
, 
DB_NOOVERWRITE
)) != 0) {

416 
dbp
->
	`r
(dbp,

417 
t
, "Fau inlizg %fe\n", 
msg
);

422 
	}
}

425 
	$hpuϋ
(
dbp
, 
hiy
, 
accous
, 
bnches
, 
Δs
)

426 
DB
 *
dbp
;

427 
hiy
, 
accous
, 
bnches
, 
Δs
;

429 
DBT
 
kdbt
, 
ddbt
;

430 
hic
 
hc
;

431 
db_o_t
 
key
;

432 
i
, 
t
;

434 
	`memt
(&
kdbt
, 0, (kdbt));

435 
	`memt
(&
ddbt
, 0, (ddbt));

436 
ddbt
.
da
 = &
hc
;

437 
ddbt
.
size
 = (
hc
);

438 
kdbt
.
da
 = &
key
;

439 
kdbt
.
size
 = (
key
);

440 
	`memt
(&
hc
.
d
[0], 1, (hrec.pad));

441 
hc
.
amou
 = 10;

443 
i
 = 1; i <
hiy
; i++) {

444 
hc
.
aid
 = 
	`ndom_id
(
ACCOUNT
, 
accous
, 
bnches
, 
Δs
);

445 
hc
.
bid
 = 
	`ndom_id
(
BRANCH
, 
accous
, 
bnches
, 
Δs
);

446 
hc
.
tid
 = 
	`ndom_id
(
TELLER
, 
accous
, 
bnches
, 
Δs
);

447 i((
t
 = 
dbp
->
	`put
(dbp, 
NULL
, &
kdbt
, &
ddbt
, 
DB_APPEND
)) != 0) {

448 
dbp
->
	`r
(dbp, 
t
, "dbp->put");

453 
	}
}

455 
u_t32_t


456 
	$ndom_t
(
lo
, 
hi
)

457 
u_t32_t
 
lo
, 
hi
;

459 
u_t32_t
 
t
;

460 
t
;

462 #ide
RAND_MAX


463 
	#RAND_MAX
 0x7fffffff

	)

465 
t
 = 
	`nd
();

466 
t
 = (
u_t32_t
)((()
t
 / (()(
RAND_MAX
) + 1)) *

467 (
hi
 - 
lo
 + 1));

468 
t
 +
lo
;

469  (
t
);

470 
	}
}

472 
u_t32_t


473 
	$ndom_id
(
ty
, 
accous
, 
bnches
, 
Δs
)

474 
FTYPE
 
ty
;

475 
accous
, 
bnches
, 
Δs
;

477 
u_t32_t
 
m
, 
max
, 
num
;

479 
max
 = 
m
 = 
BEGID
;

480 
num
 = 
accous
;

481 
ty
) {

482 
TELLER
:

483 
m
 +
bnches
;

484 
num
 = 
Δs
;

486 
BRANCH
:

487 i(
ty
 =
BRANCH
)

488 
num
 = 
bnches
;

489 
m
 +
accous
;

491 
ACCOUNT
:

492 
max
 = 
m
 + 
num
 - 1;

494  (
	`ndom_t
(
m
, 
max
));

495 
	}
}

498 
	$_run
(
dbv
, 
n
, 
accous
, 
bnches
, 
Δs
, 
vbo
)

499 
DB_ENV
 *
dbv
;

500 
n
, 
accous
, 
bnches
, 
Δs
, 
vbo
;

502 
DB
 *
adb
, *
bdb
, *
hdb
, *
tdb
;

503 
ed
, 
t
, 
txns
;

504 
time_t
 
t_time
, 
d_time
;

506 
adb
 = 
bdb
 = 
hdb
 = 
tdb
 = 
NULL
;

511 i((
t
 = 
	`db_
(&
adb
, 
dbv
, 0)) != 0) {

512 
dbv
->
	`r
(dbv, 
t
, "db_create");

513 
r
;

515 i((
t
 = 
adb
->
	`ݒ
db, 
NULL
, "accou", NULL, 
DB_UNKNOWN
,

516 
DB_AUTO_COMMIT
, 0)) != 0) {

517 
dbv
->
	`r
(dbv, 
t
, "DB->open:ccount");

518 
r
;

520 i((
t
 = 
	`db_
(&
bdb
, 
dbv
, 0)) != 0) {

521 
dbv
->
	`r
(dbv, 
t
, "db_create");

522 
r
;

524 i((
t
 = 
bdb
->
	`ݒ
(bdb, 
NULL
, "bnch", NULL, 
DB_UNKNOWN
,

525 
DB_AUTO_COMMIT
, 0)) != 0) {

526 
dbv
->
	`r
(dbv, 
t
, "DB->open: branch");

527 
r
;

529 i((
t
 = 
	`db_
(&
hdb
, 
dbv
, 0)) != 0) {

530 
dbv
->
	`r
(dbv, 
t
, "db_create");

531 
r
;

533 i((
t
 = 
hdb
->
	`ݒ
(hdb, 
NULL
, "hiy", NULL, 
DB_UNKNOWN
,

534 
DB_AUTO_COMMIT
, 0)) != 0) {

535 
dbv
->
	`r
(dbv, 
t
, "DB->open: history");

536 
r
;

538 i((
t
 = 
	`db_
(&
tdb
, 
dbv
, 0)) != 0) {

539 
dbv
->
	`r
(dbv, 
t
, "db_create");

540 
r
;

542 i((
t
 = 
tdb
->
	`ݒ
db, 
NULL
, "Δ", NULL, 
DB_UNKNOWN
,

543 
DB_AUTO_COMMIT
, 0)) != 0) {

544 
dbv
->
	`r
(dbv, 
t
, "DB->open:eller");

545 
r
;

548 ()
	`time
(&
t_time
);

549 
txns
 = 
n
, 
ed
 = 0;-- > 0;)

550 i((
t
 = 
	`_txn
(
dbv
, 
adb
, 
bdb
, 
tdb
, 
hdb
,

551 
accous
, 
bnches
, 
Δs
, 
vbo
)) != 0)

552 ++
ed
;

553 ()
	`time
(&
d_time
);

554 i(
d_time
 =
t_time
)

555 ++
d_time
;

556 
	`tf
("%s: %dxns: %d faed, %.2TPS\n", 
ogme
,

557 
txns
, 
ed
, (txn- faed/ ()(
d_time
 - 
t_time
));

559 
r
: i(
adb
 !
NULL
)

560 ()
adb
->
	`o
(adb, 0);

561 i(
bdb
 !
NULL
)

562 ()
bdb
->
	`o
(bdb, 0);

563 i(
tdb
 !
NULL
)

564 ()
tdb
->
	`o
(tdb, 0);

565 i(
hdb
 !
NULL
)

566 ()
hdb
->
	`o
(hdb, 0);

567  (
t
 == 0 ? 0 : 1);

568 
	}
}

574 
	$_txn
(
dbv
, 
adb
, 
bdb
, 
tdb
, 
hdb
, 
accous
, 
bnches
, 
Δs
, 
vbo
)

575 
DB_ENV
 *
dbv
;

576 
DB
 *
adb
, *
bdb
, *
tdb
, *
hdb
;

577 
accous
, 
bnches
, 
Δs
, 
vbo
;

579 
DBC
 *
acurs
, *
bcurs
, *
tcurs
;

580 
DBT
 
d_dbt
, 
d_hidbt
, 
k_dbt
, 
k_hidbt
;

581 
DB_TXN
 *
t
;

582 
db_o_t
 
key
;

583 
deec
 
c
;

584 
hic
 
hc
;

585 
accou
, 
bnch
, 
Δ
, 
t
;

587 
t
 = 
NULL
;

588 
acurs
 = 
bcurs
 = 
tcurs
 = 
NULL
;

595 
accou
 = 
	`ndom_id
(
ACCOUNT
, 
accous
, 
bnches
, 
Δs
);

596 
bnch
 = 
	`ndom_id
(
BRANCH
, 
accous
, 
bnches
, 
Δs
);

597 
Δ
 = 
	`ndom_id
(
TELLER
, 
accous
, 
bnches
, 
Δs
);

599 
	`memt
(&
d_hidbt
, 0, (d_histdbt));

601 
	`memt
(&
k_hidbt
, 0, (k_histdbt));

602 
k_hidbt
.
da
 = &
key
;

603 
k_hidbt
.
size
 = (
key
);

605 
	`memt
(&
k_dbt
, 0, (k_dbt));

606 
k_dbt
.
size
 = ();

608 
	`memt
(&
d_dbt
, 0, (d_dbt));

609 
d_dbt
.
ags
 = 
DB_DBT_USERMEM
;

610 
d_dbt
.
da
 = &
c
;

611 
d_dbt
.
un
 = (
c
);

613 
hc
.
aid
 = 
accou
;

614 
hc
.
bid
 = 
bnch
;

615 
hc
.
tid
 = 
Δ
;

616 
hc
.
amou
 = 10;

618 
d_hidbt
.
ags
 = 
DB_DBT_PARTIAL
;

628 i(
dbv
->
	`txn_beg
(dbv, 
NULL
, &
t
, 0) != 0)

629 
r
;

631 i(
adb
->
	`curs
db, 
t
, &
acurs
, 0) != 0 ||

632 
bdb
->
	`curs
(bdb, 
t
, &
bcurs
, 0) != 0 ||

633 
tdb
->
	`curs
db, 
t
, &
tcurs
, 0) != 0)

634 
r
;

637 
k_dbt
.
da
 = &
accou
;

638 i(
acurs
->
	`g
curs, &
k_dbt
, &
d_dbt
, 
DB_SET
) != 0)

639 
r
;

640 
c
.
b
 += 10;

641 i(
acurs
->
	`put
curs, &
k_dbt
, &
d_dbt
, 
DB_CURRENT
) != 0)

642 
r
;

645 
k_dbt
.
da
 = &
bnch
;

646 i(
bcurs
->
	`g
(bcurs, &
k_dbt
, &
d_dbt
, 
DB_SET
) != 0)

647 
r
;

648 
c
.
b
 += 10;

649 i(
bcurs
->
	`put
(bcurs, &
k_dbt
, &
d_dbt
, 
DB_CURRENT
) != 0)

650 
r
;

653 
k_dbt
.
da
 = &
Δ
;

654 i(
tcurs
->
	`g
curs, &
k_dbt
, &
d_dbt
, 
DB_SET
) != 0)

655 
r
;

656 
c
.
b
 += 10;

657 i(
tcurs
->
	`put
curs, &
k_dbt
, &
d_dbt
, 
DB_CURRENT
) != 0)

658 
r
;

661 
d_hidbt
.
ags
 = 0;

662 
d_hidbt
.
da
 = &
hc
;

663 
d_hidbt
.
un
 = (
hc
);

664 i(
hdb
->
	`put
(hdb, 
t
, &
k_hidbt
, &
d_hidbt
, 
DB_APPEND
) != 0)

665 
r
;

667 i(
acurs
->
	`o
curs!0 || 
bcurs
->close(bcurs) != 0 ||

668 
tcurs
->
	`o
(tcurs) != 0)

669 
r
;

671 
t
 = 
t
->
	`comm
(t, 0);

672 
t
 = 
NULL
;

673 i(
t
 != 0)

674 
r
;

679 
r
: i(
acurs
 !
NULL
)

680 ()
acurs
->
	`o
(acurs);

681 i(
bcurs
 !
NULL
)

682 ()
bcurs
->
	`o
(bcurs);

683 i(
tcurs
 !
NULL
)

684 ()
tcurs
->
	`o
(tcurs);

685 i(
t
 !
NULL
)

686 ()
t
->
	`abt
(t);

688 i(
vbo
)

689 
	`tf
("Transaction A=%ld B=%ld T=%ld failed\n",

690 ()
accou
, ()
bnch
, ()
Δ
);

692 
	}
}

	@../examples_c/getting_started/example_database_load.c

7 
	~"gtgd_comm.h
"

10 
uge
();

11 
ld_vds_daba
(
STOCK_DBS
, *);

12 
size_t
 
ck_rg
(*, *, size_t);

13 
ld_vty_daba
(
STOCK_DBS
, *);

16 
	$uge
()

18 
	`rtf
(
dr
, "example_database_load [-b <patho data files>]");

19 
	`rtf
(
dr
, " [-h <database_home_directory>]\n");

21 
	`rtf
(
dr
, "\tNote: Anyath specified mustnd with your");

22 
	`rtf
(
dr
, " system'sath delimiter (/ or \\)\n");

24 
	}
}

32 
	$ma
(
gc
, *
gv
[])

34 
STOCK_DBS
 
my_ock
;

35 
ch
, 
t
;

36 
size_t
 
size
;

37 *
bame
, *
vty_fe
, *
vd_fe
;

40 
	`lize_ockdbs
(&
my_ock
);

43 
bame
 = "./";

46 (
ch
 = 
	`gt
(
gc
, 
gv
, "b:h:")!
EOF
)

47 
ch
) {

49 i(
ݏrg
[
	`
(optarg)-1] != '/' &&

50 
ݏrg
[
	`
(optarg)-1] != '\\')

51  (
	`uge
());

52 
my_ock
.
db_home_d
 = 
ݏrg
;

55 i(
bame
[
	`
(basename)-1] != '/' &&

56 
bame
[
	`
(basename)-1] != '\\')

57  (
	`uge
());

58 
bame
 = 
ݏrg
;

62  (
	`uge
());

66 
	`t_db_fames
(&
my_ock
);

69 
size
 = 
	`
(
bame
+ sn(
INVENTORY_FILE
) + 1;

70 
vty_fe
 = 
	`mloc
(
size
);

71 
	`tf
(
vty_fe
, 
size
, "%s%s", 
bame
, 
INVENTORY_FILE
);

73 
size
 = 
	`
(
bame
+ sn(
VENDORS_FILE
) + 1;

74 
vd_fe
 = 
	`mloc
(
size
);

75 
	`tf
(
vd_fe
, 
size
, "%s%s", 
bame
, 
VENDORS_FILE
);

78 
t
 = 
	`dabas_tup
(&
my_ock
, "exame_daba_ld", 
dr
);

79 i(
t
) {

80 
	`rtf
(
dr
, "Error opening databases\n");

81 
	`dabas_o
(&
my_ock
);

82  (
t
);

85 
t
 = 
	`ld_vds_daba
(
my_ock
, 
vd_fe
);

86 i(
t
) {

87 
	`rtf
(
dr
, "Erroroading vendors database.\n");

88 
	`dabas_o
(&
my_ock
);

89  (
t
);

91 
t
 = 
	`ld_vty_daba
(
my_ock
, 
vty_fe
);

92 i(
t
) {

93 
	`rtf
(
dr
, "Erroroading inventory database.\n");

94 
	`dabas_o
(&
my_ock
);

95  (
t
);

99 
	`dabas_o
(&
my_ock
);

101 
	`tf
("Doneoading databases.\n");

102  (
t
);

103 
	}
}

110 
	$ld_vds_daba
(
STOCK_DBS
 
my_ock
, *
vd_fe
)

112 
DBT
 
key
, 
da
;

113 
buf
[
MAXLINE
];

114 
FILE
 *
i
;

115 
VENDOR
 
my_vd
;

118 
i
 = 
	`fݒ
(
vd_fe
, "r");

119 i(
i
 =
NULL
) {

120 
	`rtf
(
dr
, "E ong f'%s'\n", 
vd_fe
);

124 
	`fgs
(
buf
, 
MAXLINE
, 
i
!
NULL
) {

126 
	`memt
(&
my_vd
, 0, (
VENDOR
));

128 
	`memt
(&
key
, 0, (
DBT
));

129 
	`memt
(&
da
, 0, (
DBT
));

137 
	`ssnf
(
buf
,

139 
my_vd
.
me
, my_vd.

,

140 
my_vd
.
cy
, my_vd.
e
,

141 
my_vd
.
zcode
, my_vd.
phe_numb
,

142 
my_vd
.
s_p
, my_vd.
s_p_phe
);

147 
key
.
da
 = 
my_vd
.
me
;

148 
key
.
size
 = (
u_t32_t
)
	`
(
my_vd
.
me
) + 1;

151 
da
.d&
my_vd
;

152 
da
.
size
 = (
VENDOR
);

164 
my_ock
.
vd_dbp
->
	`put
(my_ock.vd_dbp, 0, &
key
, &
da
, 0);

167 
	`fo
(
i
);

169 
	}
}

177 
size_t


178 
	$ck_rg
(*
bufr
, *
rg
, 
size_t
 
t_pos
)

180 
size_t
 
rg_size
;

182 
rg_size
 = 
	`
(
rg
) + 1;

183 
	`memy
(
bufr
+
t_pos
, 
rg
, 
rg_size
);

185  (
t_pos
 + 
rg_size
);

186 
	}
}

197 
	$ld_vty_daba
(
STOCK_DBS
 
my_ock
, *
vty_fe
)

199 
DBT
 
key
, 
da
;

200 
buf
[
MAXLINE
];

201 
dabuf
[
MAXDATABUF
];

202 
size_t
 
bufL
, 
daL
;

203 
FILE
 *
i
;

211 
i
;

212 
quty
;

213 
gy
[
MAXFIELD
], 
me
[MAXFIELD];

214 
vd
[
MAXFIELD
], 
sku
[MAXFIELD];

217 
i
 = 
	`fݒ
(
vty_fe
, "r");

218 i(
i
 =
NULL
) {

219 
	`rtf
(
dr
, "E ong f'%s'\n", 
vty_fe
);

223 
	`fgs
(
buf
, 
MAXLINE
, 
i
!
NULL
) {

229 
	`ssnf
(
buf
,

231 
me
, 
sku
, &
i
, &
quty
, 
gy
, 
vd
);

237 
	`memt
(
dabuf
, 0, 
MAXDATABUF
);

238 
bufL
 = 0;

239 
daL
 = 0;

241 
daL
 = ();

242 
	`memy
(
dabuf
, &
i
, 
daL
);

243 
bufL
 +
daL
;

245 
daL
 = ();

246 
	`memy
(
dabuf
 + 
bufL
, &
quty
, 
daL
);

247 
bufL
 +
daL
;

249 
bufL
 = 
	`ck_rg
(
dabuf
, 
me
, bufLen);

250 
bufL
 = 
	`ck_rg
(
dabuf
, 
sku
, bufLen);

251 
bufL
 = 
	`ck_rg
(
dabuf
, 
gy
, bufLen);

252 
bufL
 = 
	`ck_rg
(
dabuf
, 
vd
, bufLen);

255 
	`memt
(&
key
, 0, (
DBT
));

256 
	`memt
(&
da
, 0, (
DBT
));

259 
key
.
da
 = 
sku
;

260 
key
.
size
 = (
u_t32_t
)
	`
(
sku
) + 1;

263 
da
.d
dabuf
;

264 
da
.
size
 = (
u_t32_t
)
bufL
;

267 
my_ock
.
vd_dbp
->
	`put
(my_ock.
vty_dbp
, 0, &
key
, &
da
, 0);

271 
	`fo
(
i
);

274 
	}
}

	@../examples_c/getting_started/example_database_read.c

7 
	~"gtgd_comm.h
"

10 
uge
();

11 *
show_vty_em
(*);

12 
show_l_cds
(
STOCK_DBS
 *);

13 
show_cds
(
STOCK_DBS
 *, *);

14 
show_vd_cd
(*, 
DB
 *);

17 
	$uge
()

19 
	`rtf
(
dr
, "example_database_read [-i <itemame>]");

20 
	`rtf
(
dr
, " [-h <database home>]\n");

22 
	`rtf
(
dr
,

24 
	`rtf
(
dr
, " with your system'sath delimiter (/ or \\)\n");

26 
	}
}

37 
	$ma
(
gc
, *
gv
[])

39 
STOCK_DBS
 
my_ock
;

40 
ch
, 
t
;

41 *
emme
;

44 
	`lize_ockdbs
(&
my_ock
);

47 
emme
 = 
NULL
;

48 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:i:?")!
EOF
)

49 
ch
) {

51 i(
ݏrg
[
	`
(optarg)-1] != '/' &&

52 
ݏrg
[
	`
(optarg)-1] != '\\')

53  (
	`uge
());

54 
my_ock
.
db_home_d
 = 
ݏrg
;

57 
emme
 = 
ݏrg
;

61  (
	`uge
());

65 
	`t_db_fames
(&
my_ock
);

68 
t
 = 
	`dabas_tup
(&
my_ock
, "exame_daba_ad", 
dr
);

69 i(
t
 != 0) {

70 
	`rtf
(
dr
, "Error opening databases\n");

71 
	`dabas_o
(&
my_ock
);

72  (
t
);

75 i(
emme
 =
NULL
)

76 
t
 = 
	`show_l_cds
(&
my_ock
);

78 
t
 = 
	`show_cds
(&
my_ock
, 
emme
);

81 
	`dabas_o
(&
my_ock
);

82  (
t
);

83 
	}
}

85 
	$show_l_cds
(
STOCK_DBS
 *
my_ock
)

87 
DBC
 *
vty_cursp
;

88 
DBT
 
key
, 
da
;

89 *
the_vd
;

90 
ex_vue
, 
t
;

93 
	`memt
(&
key
, 0, (
DBT
));

94 
	`memt
(&
da
, 0, (
DBT
));

97 
my_ock
->
vty_dbp
->
	`curs
(my_ock->vty_dbp, 
NULL
,

98 &
vty_cursp
, 0);

104 
ex_vue
 = 0;

105 (
t
 =

106 
vty_cursp
->
	`g
(vty_cursp, &
key
, &
da
, 
DB_NEXT
)) == 0)

108 
the_vd
 = 
	`show_vty_em
(
da
.data);

109 
t
 = 
	`show_vd_cd
(
the_vd
, 
my_ock
->
vd_dbp
);

110 i(
t
) {

111 
ex_vue
 = 
t
;

117 
vty_cursp
->
	`o
(inventory_cursorp);

118  (
ex_vue
);

119 
	}
}

127 
	$show_cds
(
STOCK_DBS
 *
my_ock
, *
emme
)

129 
DBC
 *
emme_cursp
;

130 
DBT
 
key
, 
da
;

131 *
the_vd
;

132 
t
, 
ex_vue
;

135 
	`memt
(&
key
, 0, (
DBT
));

136 
	`memt
(&
da
, 0, (
DBT
));

139 
my_ock
->
emme_sdbp
->
	`curs
(my_ock->emme_sdbp, 
NULL
,

140 &
emme_cursp
, 0);

146 
key
.
da
 = 
emme
;

147 
key
.
size
 = (
u_t32_t
)
	`
(
emme
) + 1;

153 
ex_vue
 = 0;

154 
t
 = 
emme_cursp
->
	`g
(emme_cursp, &
key
, &
da
, 
DB_SET
);

155 i(!
t
) {

161 
the_vd
 = 
	`show_vty_em
(
da
.data);

162 
t
 = 
	`show_vd_cd
(
the_vd
, 
my_ock
->
vd_dbp
);

163 i(
t
) {

164 
ex_vue
 = 
t
;

172 } 
emme_cursp
->
	`g
(emme_cursp, &
key
, &
da
,

173 
DB_NEXT_DUP
) == 0);

175 
	`tf
("Nػcdfound f '%s'\n", 
emme
);

179 
emme_cursp
->
	`o
(itemname_cursorp);

181  (
ex_vue
);

182 
	}
}

192 
	$show_vty_em
(*
vBuf
)

194 
i
;

195 
quty
;

196 
size_t
 
buf_pos
;

197 *
gy
, *
me
, *
sku
, *
vd_me
;

198 *
buf
 = (*)
vBuf
;

200 
i
 = *((*)
buf
);

201 
buf_pos
 = ();

203 
quty
 = *((*)(
buf
 + 
buf_pos
));

204 
buf_pos
 += ();

206 
me
 = 
buf
 + 
buf_pos
;

207 
buf_pos
 +
	`
(
me
) + 1;

209 
sku
 = 
buf
 + 
buf_pos
;

210 
buf_pos
 +
	`
(
sku
) + 1;

212 
gy
 = 
buf
 + 
buf_pos
;

213 
buf_pos
 +
	`
(
gy
) + 1;

215 
vd_me
 = 
buf
 + 
buf_pos
;

217 
	`tf
("me: %s\n", 
me
);

218 
	`tf
("\tSKU: %s\n", 
sku
);

219 
	`tf
("\tCegy: %s\n", 
gy
);

220 
	`tf
("\tPri: %.2f\n", 
i
);

221 
	`tf
("\tQuty: %i\n", 
quty
);

222 
	`tf
("\tVendor:\n");

224  (
vd_me
);

225 
	}
}

234 
	$show_vd_cd
(*
vd_me
, 
DB
 *
vd_dbp
)

236 
DBT
 
key
, 
da
;

237 
VENDOR
 
my_vd
;

238 
t
;

241 
	`memt
(&
key
, 0, (
DBT
));

242 
	`memt
(&
da
, 0, (
DBT
));

245 
key
.
da
 = 
vd_me
;

246 
key
.
size
 = (
u_t32_t
)
	`
(
vd_me
) + 1;

255 
da
.d&
my_vd
;

256 
da
.
un
 = (
VENDOR
);

257 
da
.
ags
 = 
DB_DBT_USERMEM
;

260 
t
 = 
vd_dbp
->
	`g
(vd_dbp, 
NULL
, &
key
, &
da
, 0);

261 i(
t
 != 0) {

262 
vd_dbp
->
	`r
(vd_dbp, 
t
, "Error searching for vendor: '%s'",

263 
vd_me
);

264  (
t
);

266 
	`tf
("\t\t%s\n", 
my_vd
.
me
);

267 
	`tf
("\t\t%s\n", 
my_vd
.

);

268 
	`tf
("\t\t%s, %s\n", 
my_vd
.
cy
, my_vd.
e
);

269 
	`tf
("\t\t%s\n\n", 
my_vd
.
zcode
);

270 
	`tf
("\t\t%s\n\n", 
my_vd
.
phe_numb
);

271 
	`tf
("\t\tCڏ: %s\n", 
my_vd
.
s_p
);

272 
	`tf
("\t\t%s\n", 
my_vd
.
s_p_phe
);

275 
	}
}

	@../examples_c/getting_started/gettingstarted_common.c

7 
	~"gtgd_comm.h
"

9 
g_em_me
(
DB
 *, cڡ 
DBT
 *, const DBT *, DBT *);

17 
	$g_em_me
(
DB
 *
dbp
, cڡ 
DBT
 *
pkey
, cڡ DBT *
pda
, DBT *
skey
)

19 
u_t
 
offt
;

21 
dbp
 = 
NULL
;

22 
pkey
 = 
NULL
;

34 
offt
 = () + ();

37 i(
pda
->
size
 < 
offt
)

43 
	`memt
(
skey
, 0, (
DBT
));

44 
skey
->
da
 = (
u_t8_t
 *)
pda
->d+ 
offt
;

45 
skey
->
size
 = (
u_t32_t
)
	`
(skey->
da
) + 1;

48 
	}
}

52 
	$ݒ_daba
(
DB
 **
db
, cڡ *
fe_me
,

53 cڡ *
ogm_me
, 
FILE
 *
r_fe_por
,

54 
is_cdy
)

56 
DB
 *
dbp
;

57 
u_t32_t
 
ݒ_ags
;

58 
t
;

61 
t
 = 
	`db_
(&
dbp
, 
NULL
, 0);

62 i(
t
 != 0) {

63 
	`rtf
(
r_fe_por
, "%s: %s\n", 
ogm_me
,

64 
	`db_
(
t
));

65  (
t
);

68 *
db
 = 
dbp
;

71 
dbp
->
	`t_rfe
(dbp, 
r_fe_por
);

72 
dbp
->
	`t_fx
(dbp, 
ogm_me
);

78 i(
is_cdy
) {

79 
t
 = 
dbp
->
	`t_ags
(dbp, 
DB_DUPSORT
);

80 i(
t
 != 0) {

81 
dbp
->
	`r
(dbp, 
t
, "Attempto set DUPSORT flags failed.",

82 
fe_me
);

83  (
t
);

88 
ݒ_ags
 = 
DB_CREATE
;

91 
t
 = 
dbp
->
	`ݒ
(dbp,

92 
NULL
,

93 
fe_me
,

94 
NULL
,

95 
DB_BTREE
,

96 
ݒ_ags
,

98 i(
t
 != 0) {

99 
dbp
->
	`r
(dbp, 
t
, "Daba '%s' oed.", 
fe_me
);

100  (
t
);

104 
	}
}

108 
	$dabas_tup
(
STOCK_DBS
 *
my_ock
, cڡ *
ogm_me
,

109 
FILE
 *
r_fe_por
)

111 
t
;

114 
t
 = 
	`ݒ_daba
(&(
my_ock
->
vd_dbp
),

115 
my_ock
->
vd_db_me
,

116 
ogm_me
, 
r_fe_por
,

117 
PRIMARY_DB
);

118 i(
t
 != 0)

123  (
t
);

126 
t
 = 
	`ݒ_daba
(&(
my_ock
->
vty_dbp
),

127 
my_ock
->
vty_db_me
,

128 
ogm_me
, 
r_fe_por
,

129 
PRIMARY_DB
);

130 i(
t
 != 0)

135  (
t
);

142 
t
 = 
	`ݒ_daba
(&(
my_ock
->
emme_sdbp
),

143 
my_ock
->
emme_db_me
,

144 
ogm_me
, 
r_fe_por
,

145 
SECONDARY_DB
);

146 i(
t
 != 0)

157 
my_ock
->
vty_dbp
->
	`assoc
(

158 
my_ock
->
vty_dbp
,

159 
NULL
,

160 
my_ock
->
emme_sdbp
,

161 
g_em_me
,

164 
	`tf
("databases opened successfully\n");

166 
	}
}

170 
	$lize_ockdbs
(
STOCK_DBS
 *
my_ock
)

172 
my_ock
->
db_home_d
 = 
DEFAULT_HOMEDIR
;

173 
my_ock
->
vty_dbp
 = 
NULL
;

174 
my_ock
->
vd_dbp
 = 
NULL
;

175 
my_ock
->
emme_sdbp
 = 
NULL
;

176 
my_ock
->
vd_db_me
 = 
NULL
;

177 
my_ock
->
vty_db_me
 = 
NULL
;

178 
my_ock
->
emme_db_me
 = 
NULL
;

179 
	}
}

183 
	$t_db_fames
(
STOCK_DBS
 *
my_ock
)

185 
size_t
 
size
;

188 
size
 = 
	`
(
my_ock
->
db_home_d
+ sn(
INVENTORYDB
) + 1;

189 
my_ock
->
vty_db_me
 = 
	`mloc
(
size
);

190 
	`tf
(
my_ock
->
vty_db_me
, 
size
, "%s%s",

191 
my_ock
->
db_home_d
, 
INVENTORYDB
);

194 
size
 = 
	`
(
my_ock
->
db_home_d
+ sn(
VENDORDB
) + 1;

195 
my_ock
->
vd_db_me
 = 
	`mloc
(
size
);

196 
	`tf
(
my_ock
->
vd_db_me
, 
size
, "%s%s",

197 
my_ock
->
db_home_d
, 
VENDORDB
);

200 
size
 = 
	`
(
my_ock
->
db_home_d
+ sn(
ITEMNAMEDB
) + 1;

201 
my_ock
->
emme_db_me
 = 
	`mloc
(
size
);

202 
	`tf
(
my_ock
->
emme_db_me
, 
size
, "%s%s",

203 
my_ock
->
db_home_d
, 
ITEMNAMEDB
);

205 
	}
}

209 
	$dabas_o
(
STOCK_DBS
 *
my_ock
)

211 
t
;

216 i(
my_ock
->
emme_sdbp
 !
NULL
) {

217 
t
 = 
my_ock
->
emme_sdbp
->
	`o
(my_stock->itemname_sdbp, 0);

218 i(
t
 != 0)

219 
	`rtf
(
dr
, "Itemname database close failed: %s\n",

220 
	`db_
(
t
));

223 i(
my_ock
->
vty_dbp
 !
NULL
) {

224 
t
 = 
my_ock
->
vty_dbp
->
	`o
(my_stock->inventory_dbp, 0);

225 i(
t
 != 0)

226 
	`rtf
(
dr
, "Inventory database close failed: %s\n",

227 
	`db_
(
t
));

230 i(
my_ock
->
vd_dbp
 !
NULL
) {

231 
t
 = 
my_ock
->
vd_dbp
->
	`o
(my_stock->vendor_dbp, 0);

232 i(
t
 != 0)

233 
	`rtf
(
dr
, "Vendor database close failed: %s\n",

234 
	`db_
(
t
));

237 
	`tf
("databases closed.\n");

239 
	}
}

	@../examples_c/txn_guide/txn_guide.c

4 
	~<dio.h
>

5 
	~<dlib.h
>

6 
	~<rg.h
>

7 
	~<db.h
>

9 #ifde
_WIN32


10 
	~<wdows.h
>

11 
	#PATHD
 '\\'

	)

12 

gt
(, * const *, const *);

13 
*
ݏrg
;

15 
HANDLE
 
	tthad_t
;

16 
	#thad_
(
th
, 

, 
func
, 
g
) \

17 (((*(
th

	`CeThad
(
NULL
, 0, \

18 (
LPTHREAD_START_ROUTINE
)(
func
), (
g
), 0, 
NULL
)=NULL? -1 : 0)

	)

19 
	#thad_jo
(
thr
, 
u
) \

20 ((
	`WaFSgObje
((
thr
), 
INFINITE
=
WAIT_OBJECT_0
) && \

21 
	`GExCodeThad
((
thr
), (
LPDWORD
)(
u
)? 0 : -1)

	)

23 
HANDLE
 
	tmux_t
;

24 
	#mux_
(
m
, 

) \

25 (((*(
m

	`CeMux
(
NULL
, 
FALSE
, NULL)!NULL? 0 : -1)

	)

26 
	#mux_lock
(
m
) \

27 ((
	`WaFSgObje
(*(
m
), 
INFINITE
=
WAIT_OBJECT_0
? 0 : -1)

	)

28 
	#mux_uock
(
m
(
	`RMux
(*(m)? 0 : -1)

	)

30 
	~<had.h
>

31 
	~<unid.h
>

32 
	#PATHD
 '/'

	)

34 
had_t
 
	tthad_t
;

35 
	#thad_
(
th
, 

, 
func
, 
g
) \

36 
	`had_
((
th
), (

), (
func
), (
g
))

	)

37 
	#thad_jo
(
thr
, 
u

	`had_jo
(hr), (u))

	)

39 
had_mux_t
 
	tmux_t
;

40 
	#mux_
(
m
, 


	`had_mux_
((m), ())

	)

41 
	#mux_lock
(
m

	`had_mux_lock
(m)

	)

42 
	#mux_uock
(
m

	`had_mux_uock
(m)

	)

46 
	#NUMWRITERS
 5

	)

52 
	gglob_thad_num
;

53 
mux_t
 
	gthad_num_lock
;

56 
cou_cds
(
DB
 *, 
DB_TXN
 *);

57 
ݒ_db
(
DB
 **, cڡ *, cڡ *, 
DB_ENV
 *, 
u_t32_t
);

58 
uge
();

59 *
wr_thad
(*);

63 
	$uge
()

65 
	`rtf
(
dr
, " [-h <database_home_directory>]\n");

66  (
EXIT_FAILURE
);

67 
	}
}

70 
	$ma
(
gc
, *
gv
[])

73 
DB
 *
dbp
 = 
NULL
;

74 
DB_ENV
 *
vp
 = 
NULL
;

76 
thad_t
 
wr_thads
[
NUMWRITERS
];

77 
ch
, 
i
, 
t
, 
t_t
;

78 
u_t32_t
 
v_ags
;

79 *
db_home_d
;

81 cڡ *
og_me
 = "txn_guide";

83 cڡ *
fe_me
 = "mydb.db";

86 #ifde
_WIN32


87 
db_home_d
 = ".\\";

89 
db_home_d
 = "./";

91 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:")!
EOF
)

92 
ch
) {

94 
db_home_d
 = 
ݏrg
;

98  (
	`uge
());

102 
t
 = 
	`db_v_
(&
vp
, 0);

103 i(
t
 != 0) {

104 
	`rtf
(
dr
, "Error creatingnvironment handle: %s\n",

105 
	`db_
(
t
));

106 
r
;

115 
t
 = 
vp
->
	`t_lk_de
nvp, 
DB_LOCK_MINWRITE
);

116 i(
t
 != 0) {

117 
	`rtf
(
dr
, "Error settingock detect: %s\n",

118 
	`db_
(
t
));

119 
r
;

122 
v_ags
 =

123 
DB_CREATE
 |

124 
DB_RECOVER
 |

125 
DB_INIT_LOCK
 |

126 
DB_INIT_LOG
 |

127 
DB_INIT_TXN
 |

129 
DB_INIT_MPOOL
 |

130 
DB_THREAD
;

133 
t
 = 
vp
->
	`ݒ
nvp, 
db_home_d
, 
v_ags
, 0);

134 i(
t
 != 0) {

135 
	`rtf
(
dr
, "Error openingnvironment: %s\n",

136 
	`db_
(
t
));

137 
r
;

148 
t
 = 
	`ݒ_db
(&
dbp
, 
og_me
, 
fe_me
,

149 
vp
, 
DB_DUPSORT
);

150 i(
t
 != 0)

151 
r
;

154 ()
	`mux_
(&
thad_num_lock
, 
NULL
);

157 
i
 = 0; i < 
NUMWRITERS
; i++)

158 ()
	`thad_
(

159 &
wr_thads
[
i
], 
NULL
, 
wr_thad
, (*)
dbp
);

162 
i
 = 0; i < 
NUMWRITERS
; i++)

163 ()
	`thad_jo
(
wr_thads
[
i
], 
NULL
);

165 
r
:

167 i(
dbp
 !
NULL
) {

168 
t_t
 = 
dbp
->
	`o
(dbp, 0);

169 i(
t_t
 != 0) {

170 
	`rtf
(
dr
, "%s database close failed: %s\n",

171 
fe_me
, 
	`db_
(
t_t
));

172 
t
 = 
t_t
;

177 i(
vp
 !
NULL
) {

178 
t_t
 = 
vp
->
	`o
(envp, 0);

179 i(
t_t
 != 0) {

180 
	`rtf
(
dr
, "environment close failed: %s\n",

181 
	`db_
(
t_t
));

182 
t
 = 
t_t
;

187 
	`tf
("I'mll done.\n");

188  (
t
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

189 
	}
}

199 
	$wr_thad
(*
gs
)

201 
DB
 *
dbp
;

202 
DB_ENV
 *
vp
;

204 
DBT
 
key
, 
vue
;

205 
DB_TXN
 *
txn
;

206 
i
, 
j
, 
yld
, 
t
, 
thad_num
;

207 
y_cou
, 
max_s
 = 20;

208 *
key_rgs
[] = {"key 1", "key 2", "key 3", "key 4",

212 
dbp
 = (
DB
 *)
gs
;

213 
vp
 = 
dbp
->
	`g_v
(dbp);

216 ()
	`mux_lock
(&
thad_num_lock
);

217 
glob_thad_num
++;

218 
thad_num
 = 
glob_thad_num
;

219 ()
	`mux_uock
(&
thad_num_lock
);

222 
	`d
(
thad_num
);

225 
i
 = 0; i < 50; i++) {

226 
y_cou
 = 0;

233 
y
:

246 
t
 = 
vp
->
	`txn_beg
nvp, 
NULL
, &
txn
, 0);

247 i(
t
 != 0) {

248 
vp
->
	`r
nvp, 
t
, "txn_begin failed");

249  ((*)
EXIT_FAILURE
);

251 
j
 = 0; j < 10; j++) {

253 
	`memt
(&
key
, 0, (
DBT
));

254 
key
.
da
 = 
key_rgs
[
j
];

255 
key
.
size
 = (
u_t32_t
)
	`
(
key_rgs
[
j
]) + 1;

257 
	`memt
(&
vue
, 0, (
DBT
));

258 
yld
 = 
	`nd
(+ 
i
;

259 
vue
.
da
 = &
yld
;

260 
vue
.
size
 = ();

263 
t
 = 
dbp
->
	`put
(dbp, 
txn
, &
key
, &
vue
, 0)) {

274 
DB_KEYEXIST
:

275 
	`tf
("Got keyexists.\n");

284 
DB_LOCK_DEADLOCK
:

289 ()
txn
->
	`abt
(txn);

295 i(
y_cou
 < 
max_s
) {

296 
	`tf
("Writer %i: Got DB_LOCK_DEADLOCK.\n",

297 
thad_num
);

298 
	`tf
("Writer %i: Retrying write operation.\n",

299 
thad_num
);

300 
y_cou
++;

301 
y
;

306 
	`tf
("Wr %i: ", 
thad_num
);

307 
	`tf
("Got DB_LOCK_DEADLOCKnd out ofetries.\n");

308 
	`tf
("Wr %i: Givg up.\n", 
thad_num
);

309  ((*)
EXIT_FAILURE
);

315 
vp
->
	`r
nvp, 
t
, "dbut failed");

316 
t
 = 
txn
->
	`abt
(txn);

317 i(
t
 != 0)

318 
vp
->
	`r
nvp, 
t
,

320  ((*)
EXIT_FAILURE
);

329 
	`tf
("Thad %i. Recd cou: %i\n", 
thad_num
,

330 
	`cou_cds
(
dbp
, 
NULL
));

336 
t
 = 
txn
->
	`comm
(txn, 0);

337 i(
t
 != 0) {

338 
vp
->
	`r
nvp, 
t
, "txn commit failed");

339  ((*)
EXIT_FAILURE
);

342  ((*)
EXIT_SUCCESS
);

343 
	}
}

365 
	$cou_cds
(
DB
 *
dbp
, 
DB_TXN
 *
txn
)

368 
DBT
 
key
, 
vue
;

369 
DBC
 *
cursp
;

370 
cou
, 
t
;

372 
cursp
 = 
NULL
;

373 
cou
 = 0;

376 
t
 = 
dbp
->
	`curs
(dbp, 
txn
, &
cursp
,

377 
DB_READ_UNCOMMITTED
);

378 i(
t
 != 0) {

379 
dbp
->
	`r
(dbp, 
t
,

381 
curs_r
;

385 
	`memt
(&
key
, 0, (
DBT
));

386 
	`memt
(&
vue
, 0, (
DBT
));

388 
t
 = 
cursp
->
	`g
(cursp, &
key
, &
vue
, 
DB_NEXT
);

389 
t
) {

391 
cou
++;

393 
DB_NOTFOUND
:

396 
dbp
->
	`r
(dbp, 
t
,

398 
curs_r
;

400 } 
t
 == 0);

402 
curs_r
:

403 i(
cursp
 !
NULL
) {

404 
t
 = 
cursp
->
	`o
(cursorp);

405 i(
t
 != 0) {

406 
dbp
->
	`r
(dbp, 
t
,

411  (
cou
);

412 
	}
}

416 
	$ݒ_db
(
DB
 **
db
, cڡ *
ogme
, cڡ *
fe_me
,

417 
DB_ENV
 *
vp
, 
u_t32_t
 
exa_ags
)

419 
t
;

420 
u_t32_t
 
ݒ_ags
;

421 
DB
 *
dbp
;

424 
t
 = 
	`db_
(&
dbp
, 
vp
, 0);

425 i(
t
 != 0) {

426 
	`rtf
(
dr
, "%s: %s\n", 
ogme
,

427 
	`db_
(
t
));

428  (
EXIT_FAILURE
);

432 *
db
 = 
dbp
;

434 i(
exa_ags
 != 0) {

435 
t
 = 
dbp
->
	`t_ags
(dbp, 
exa_ags
);

436 i(
t
 != 0) {

437 
dbp
->
	`r
(dbp, 
t
,

439  (
EXIT_FAILURE
);

444 
ݒ_ags
 = 
DB_CREATE
 |

445 
DB_READ_UNCOMMITTED
 |

446 
DB_AUTO_COMMIT
;

448 
t
 = 
dbp
->
	`ݒ
(dbp,

449 
NULL
,

450 
fe_me
,

451 
NULL
,

452 
DB_BTREE
,

453 
ݒ_ags
,

455 i(
t
 != 0) {

456 
dbp
->
	`r
(dbp, 
t
, "Database '%s' open failed",

457 
fe_me
);

458  (
EXIT_FAILURE
);

460  (
EXIT_SUCCESS
);

461 
	}
}

	@../examples_c/txn_guide/txn_guide_inmemory.c

4 
	~<dio.h
>

5 
	~<dlib.h
>

6 
	~<rg.h
>

7 
	~<db.h
>

9 #ifde
_WIN32


10 
	~<wdows.h
>

11 
	#PATHD
 '\\'

	)

12 

gt
(, * const *, const *);

13 
*
ݏrg
;

15 
HANDLE
 
	tthad_t
;

16 
	#thad_
(
th
, 

, 
func
, 
g
) \

17 (((*(
th

	`CeThad
(
NULL
, 0, \

18 (
LPTHREAD_START_ROUTINE
)(
func
), (
g
), 0, 
NULL
)=NULL? -1 : 0)

	)

19 
	#thad_jo
(
thr
, 
u
) \

20 ((
	`WaFSgObje
((
thr
), 
INFINITE
=
WAIT_OBJECT_0
) && \

21 
	`GExCodeThad
((
thr
), (
LPDWORD
)(
u
)? 0 : -1)

	)

23 
HANDLE
 
	tmux_t
;

24 
	#mux_
(
m
, 

) \

25 (((*(
m

	`CeMux
(
NULL
, 
FALSE
, NULL)!NULL? 0 : -1)

	)

26 
	#mux_lock
(
m
) \

27 ((
	`WaFSgObje
(*(
m
), 
INFINITE
=
WAIT_OBJECT_0
? 0 : -1)

	)

28 
	#mux_uock
(
m
(
	`RMux
(*(m)? 0 : -1)

	)

30 
	~<had.h
>

31 
	~<unid.h
>

32 
	#PATHD
 '/'

	)

34 
had_t
 
	tthad_t
;

35 
	#thad_
(
th
, 

, 
func
, 
g
) \

36 
	`had_
((
th
), (

), (
func
), (
g
))

	)

37 
	#thad_jo
(
thr
, 
u

	`had_jo
(hr), (u))

	)

39 
had_mux_t
 
	tmux_t
;

40 
	#mux_
(
m
, 


	`had_mux_
((m), ())

	)

41 
	#mux_lock
(
m

	`had_mux_lock
(m)

	)

42 
	#mux_uock
(
m

	`had_mux_uock
(m)

	)

46 
	#NUMWRITERS
 5

	)

52 
	gglob_thad_num
;

53 
mux_t
 
	gthad_num_lock
;

56 
cou_cds
(
DB
 *, 
DB_TXN
 *);

57 
ݒ_db
(
DB
 **, cڡ *, cڡ *, 
DB_ENV
 *, 
u_t32_t
);

58 *
wr_thad
(*);

61 
	$ma
()

64 
DB
 *
dbp
 = 
NULL
;

65 
DB_ENV
 *
vp
 = 
NULL
;

67 
thad_t
 
wr_thads
[
NUMWRITERS
];

68 
i
, 
t
, 
t_t
;

69 
u_t32_t
 
v_ags
;

72 cڡ *
og_me
 = "txn_guide_inmemory";

75 
t
 = 
	`db_v_
(&
vp
, 0);

76 i(
t
 != 0) {

77 
	`rtf
(
dr
, "Error creatingnvironment handle: %s\n",

78 
	`db_
(
t
));

79 
r
;

82 
v_ags
 =

83 
DB_CREATE
 |

84 
DB_INIT_LOCK
 |

85 
DB_INIT_LOG
 |

86 
DB_INIT_TXN
 |

88 
DB_INIT_MPOOL
 |

89 
DB_PRIVATE
 |

90 
DB_THREAD
;

93 
t
 = 
vp
->
	`t_ags
nvp, 
DB_LOG_INMEMORY
, 1);

94 i(
t
 != 0) {

95 
	`rtf
(
dr
, "Error settingog subsystemo in-memory: %s\n",

96 
	`db_
(
t
));

97 
r
;

103 
t
 = 
vp
->
	`t_lg_bsize
(envp, 10 * 1024 * 1024);

104 i(
t
 != 0) {

105 
	`rtf
(
dr
, "Error increasingheog buffer size: %s\n",

106 
	`db_
(
t
));

107 
r
;

113 
t
 = 
vp
->
	`t_chesize
(envp, 0, 10 * 1024 * 1024, 1);

114 i(
t
 != 0) {

115 
	`rtf
(
dr
, "Error increasinghe cache size: %s\n",

116 
	`db_
(
t
));

117 
r
;

126 
t
 = 
vp
->
	`t_lk_de
nvp, 
DB_LOCK_MINWRITE
);

127 i(
t
 != 0) {

128 
	`rtf
(
dr
, "Error settingock detect: %s\n",

129 
	`db_
(
t
));

130 
r
;

134 
t
 = 
vp
->
	`ݒ
nvp, 
NULL
, 
v_ags
, 0);

135 i(
t
 != 0) {

136 
	`rtf
(
dr
, "Error openingnvironment: %s\n",

137 
	`db_
(
t
));

138 
r
;

149 
t
 = 
	`ݒ_db
(&
dbp
, 
og_me
, 
NULL
,

150 
vp
, 
DB_DUPSORT
);

151 i(
t
 != 0)

152 
r
;

155 ()
	`mux_
(&
thad_num_lock
, 
NULL
);

158 
i
 = 0; i < 
NUMWRITERS
; i++)

159 ()
	`thad_
(

160 &
wr_thads
[
i
], 
NULL
, 
wr_thad
, (*)
dbp
);

163 
i
 = 0; i < 
NUMWRITERS
; i++)

164 ()
	`thad_jo
(
wr_thads
[
i
], 
NULL
);

166 
r
:

168 i(
dbp
 !
NULL
) {

169 
t_t
 = 
dbp
->
	`o
(dbp, 0);

170 i(
t_t
 != 0) {

171 
	`rtf
(
dr
, "%s database close failed.\n",

172 
	`db_
(
t_t
));

173 
t
 = 
t_t
;

178 i(
vp
 !
NULL
) {

179 
t_t
 = 
vp
->
	`o
(envp, 0);

180 i(
t_t
 != 0) {

181 
	`rtf
(
dr
, "environment close failed: %s\n",

182 
	`db_
(
t_t
));

183 
t
 = 
t_t
;

188 
	`tf
("I'mll done.\n");

189  (
t
 =0 ? 
EXIT_SUCCESS
 : 
EXIT_FAILURE
);

190 
	}
}

200 
	$wr_thad
(*
gs
)

202 
DB
 *
dbp
;

203 
DB_ENV
 *
vp
;

204 
DBT
 
key
, 
vue
;

205 
DB_TXN
 *
txn
;

206 
i
, 
j
, 
yld
, 
t
, 
thad_num
;

207 
y_cou
, 
max_s
 = 20;

208 *
key_rgs
[] = {"key 1", "key 2", "key 3", "key 4",

212 
dbp
 = (
DB
 *)
gs
;

213 
vp
 = 
dbp
->
	`g_v
(dbp);

216 ()
	`mux_lock
(&
thad_num_lock
);

217 
glob_thad_num
++;

218 
thad_num
 = 
glob_thad_num
;

219 ()
	`mux_uock
(&
thad_num_lock
);

222 
	`d
(
thad_num
);

225 
i
 = 0; i < 50; i++) {

226 
y_cou
 = 0;

233 
y
:

246 
t
 = 
vp
->
	`txn_beg
nvp, 
NULL
, &
txn
, 0);

247 i(
t
 != 0) {

248 
vp
->
	`r
nvp, 
t
, "txn_begin failed");

249  ((*)
EXIT_FAILURE
);

251 
j
 = 0; j < 10; j++) {

253 
	`memt
(&
key
, 0, (
DBT
));

254 
key
.
da
 = 
key_rgs
[
j
];

255 
key
.
size
 = (
u_t32_t
)
	`
(
key_rgs
[
j
]) + 1;

257 
	`memt
(&
vue
, 0, (
DBT
));

258 
yld
 = 
	`nd
(+ 
i
;

259 
vue
.
da
 = &
yld
;

260 
vue
.
size
 = ();

263 
t
 = 
dbp
->
	`put
(dbp, 
txn
, &
key
, &
vue
, 0)) {

274 
DB_LOCK_DEADLOCK
:

279 ()
txn
->
	`abt
(txn);

285 i(
y_cou
 < 
max_s
) {

286 
	`tf
("Writer %i: Got DB_LOCK_DEADLOCK.\n",

287 
thad_num
);

288 
	`tf
("Writer %i: Retrying write operation.\n",

289 
thad_num
);

290 
y_cou
++;

291 
y
;

296 
	`tf
("Wr %i: ", 
thad_num
);

297 
	`tf
("Got DB_LOCK_DEADLOCKnd out ofetries.\n");

298 
	`tf
("Wr %i: Givg up.\n", 
thad_num
);

299  ((*)
EXIT_FAILURE
);

305 
vp
->
	`r
nvp, 
t
, "dbut failed");

306 
t
 = 
txn
->
	`abt
(txn);

307 i(
t
 != 0)

308 
vp
->
	`r
nvp, 
t
, "txnbort failed");

309  ((*)
EXIT_FAILURE
);

318 
	`tf
("Thad %i. Recd cou: %i\n", 
thad_num
,

319 
	`cou_cds
(
dbp
, 
txn
));

325 
t
 = 
txn
->
	`comm
(txn, 0);

326 i(
t
 != 0) {

327 
vp
->
	`r
nvp, 
t
, "txn commit failed");

328  ((*)
EXIT_FAILURE
);

331  ((*)
EXIT_SUCCESS
);

332 
	}
}

356 
	$cou_cds
(
DB
 *
dbp
, 
DB_TXN
 *
txn
)

358 
DBT
 
key
, 
vue
;

359 
DBC
 *
cursp
;

360 
cou
, 
t
;

362 
cursp
 = 
NULL
;

363 
cou
 = 0;

366 
t
 = 
dbp
->
	`curs
(dbp, 
txn
, &
cursp
, 0);

367 i(
t
 != 0) {

368 
dbp
->
	`r
(dbp, 
t
,

370 
curs_r
;

374 
	`memt
(&
key
, 0, (
DBT
));

375 
	`memt
(&
vue
, 0, (
DBT
));

377 
t
 = 
cursp
->
	`g
(cursp, &
key
, &
vue
, 
DB_NEXT
);

378 
t
) {

380 
cou
++;

382 
DB_NOTFOUND
:

385 
dbp
->
	`r
(dbp, 
t
,

387 
curs_r
;

389 } 
t
 == 0);

391 
curs_r
:

392 i(
cursp
 !
NULL
) {

393 
t
 = 
cursp
->
	`o
(cursorp);

394 i(
t
 != 0) {

395 
dbp
->
	`r
(dbp, 
t
,

400  (
cou
);

401 
	}
}

405 
	$ݒ_db
(
DB
 **
db
, cڡ *
ogme
, cڡ *
fe_me
,

406 
DB_ENV
 *
vp
, 
u_t32_t
 
exa_ags
)

408 
t
;

409 
u_t32_t
 
ݒ_ags
;

410 
DB
 *
dbp
;

413 
t
 = 
	`db_
(&
dbp
, 
vp
, 0);

414 i(
t
 != 0) {

415 
	`rtf
(
dr
, "%s: %s\n", 
ogme
,

416 
	`db_
(
t
));

417  (
EXIT_FAILURE
);

421 *
db
 = 
dbp
;

423 i(
exa_ags
 != 0) {

424 
t
 = 
dbp
->
	`t_ags
(dbp, 
exa_ags
);

425 i(
t
 != 0) {

426 
dbp
->
	`r
(dbp, 
t
,

428  (
EXIT_FAILURE
);

433 
ݒ_ags
 = 
DB_CREATE
 |

434 
DB_THREAD
 |

435 
DB_AUTO_COMMIT
;

437 
t
 = 
dbp
->
	`ݒ
(dbp,

438 
NULL
,

439 
fe_me
,

440 
NULL
,

441 
DB_BTREE
,

442 
ݒ_ags
,

445 i(
t
 != 0) {

446 
dbp
->
	`r
(dbp, 
t
, "Database open failed");

447  (
EXIT_FAILURE
);

449  (
EXIT_SUCCESS
);

450 
	}
}

	@../examples_cxx/AccessExample.cpp

9 
	~<sys/tys.h
>

11 
	~<ioam
>

12 
	~<iom
>

13 
	~<o.h
>

14 
	~<dlib.h
>

15 
	~<rg.h
>

17 #ifde
_WIN32


19 

gt
(, * const *, const *);

20 

td
;

23 
	~<unid.h
>

26 
	~<db_cxx.h
>

28 
	#DATABASE
 "acss.db"

	)

30 
usg
 
	gd
::
c
;

31 
usg
 
	gd
::
cout
;

32 
usg
 
	gd
::

;

34 as
	cAcssExame


36 
	mpublic
:

37 
AcssExame
();

38 
run
(
bo
 
moveExigDaba
, cڡ *
feName
);

40 
	mive
:

42 
AcssExame
(const AccessExample &);

43 
	mݔ
 = (cڡ 
AcssExame
 &);

47 
	$uge
()

49 ()
	`rtf
(
dr
, "usage: AccessExample [-r] [database]\n");

50  (
EXIT_FAILURE
);

51 
	}
}

54 
	$ma
(
gc
, *
gv
[])

56 
ch
, 
rag
;

57 cڡ *
daba
;

59 
rag
 = 0;

60 (
ch
 = 
	`gt
(
gc
, 
gv
, "r")!
EOF
)

61 
ch
) {

63 
rag
 = 1;

67  (
	`uge
());

69 
gc
 -
td
;

70 
gv
 +
td
;

73 
daba
 = *
gv
 =
NULL
 ? 
DATABASE
 :rgv[0];

80 
y
 {

81 
AcssExame
 
p
;

82 
p
.
	`run
((
bo
)(
rag
 =1 ? 
ue
 : 
l
), 
daba
);

83  (
EXIT_SUCCESS
);

85 
	`tch
 (
DbExi
 &
dbe
) {

86 

 << "AcssExame: " << 
dbe
.
	`wh
() << "\n";

87  (
EXIT_FAILURE
);

89 
	}
}

91 
	gAcssExame
::
	$AcssExame
()

93 
	}
}

95 
AcssExame
::
	$run
(
bo
 
moveExigDaba
, cڡ *
feName
)

98 i(
moveExigDaba
)

99 ()
	`move
(
feName
);

103 
Db
 
	`db
(0, 0);

105 
db
.
	`t_r_am
(&

);

106 
db
.
	`t_fx
("AccessExample");

107 
db
.
	`t_gesize
(1024);

108 
db
.
	`t_chesize
(0, 32 * 1024, 0);

109 
db
.
	`ݒ
(
NULL
, 
feName
, NULL, 
DB_BTREE
, 
DB_CREATE
, 0664);

115 
buf
[1024], 
rbuf
[1024];

116 *
p
, *
t
;

117 
t
;

118 
u_t32_t
 
n
;

121 
cout
 << "input> ";

122 
cout
.
	`ush
();

124 
c
.
	`gle
(
buf
, (buf));

125 i(
c
.
	`eof
())

128 i((
n
 = (
u_t32_t
)
	`
(
buf
)) <= 0)

130 
t
 = 
rbuf
, 
p
 = 
buf
 + (
n
 - 1); >= buf;)

131 *
t
++ = *
p
--;

132 *
t
++ = '\0';

134 
Dbt
 
	`key
(
buf
, 
n
 + 1);

135 
Dbt
 
	`da
(
rbuf
, 
n
 + 1);

137 
t
 = 
db
.
	`put
(0, &
key
, &
da
, 
DB_NOOVERWRITE
);

138 i(
t
 =
DB_KEYEXIST
) {

139 
cout
 << "Key " << 
buf
 << "lreadyxists.\n";

142 
cout
 << "\n";

148 
y
 {

150 
Dbc
 *
db
;

151 
db
.
	`curs
(
NULL
, &
db
, 0);

154 
Dbt
 
key
;

155 
Dbt
 
da
;

156 
db
->
	`g
(&
key
, &
da
, 
DB_NEXT
) == 0) {

157 *
key_rg
 = (*)
key
.
	`g_da
();

158 *
da_rg
 = (*)
da
.
	`g_da
();

159 
cout
 << 
key_rg
 << " : " << 
da_rg
 << "\n";

161 
db
->
	`o
();

163 
	`tch
 (
DbExi
 &
dbe
) {

164 

 << "AcssExame: " << 
dbe
.
	`wh
() << "\n";

167 
db
.
	`o
(0);

168 
	}
}

	@../examples_cxx/BtRecExample.cpp

9 
	~<sys/tys.h
>

11 
	~<o.h
>

12 
	~<ioam
>

13 
	~<iom
>

14 
	~<ddef.h
>

15 
	~<dio.h
>

16 
	~<dlib.h
>

17 
	~<rg.h
>

19 
	~<db_cxx.h
>

21 
usg
 
	gd
::
cout
;

22 
usg
 
	gd
::

;

24 
	#DATABASE
 "acss.db"

	)

25 
	#WORDLIST
 "..//wdli"

	)

27 cڡ *
	gogme
 = "BtRecExample";

29 as
	cBtRecExame


31 
	mpublic
:

32 
BtRecExame
(
FILE
 *

);

33 ~
BtRecExame
();

34 
run
();

35 
s
();

36 
show
(cڡ *
msg
, 
Dbt
 *
key
, Db*
da
);

38 
	mive
:

39 
Db
 *
dbp
;

40 
Dbc
 *
	mdb
;

43 
	gBtRecExame
::
	$BtRecExame
(
FILE
 *

)

45 *
p
, *
t
, 
buf
[1024], 
rbuf
[1024];

46 
t
;

49 ()
	`move
(
DATABASE
);

51 
dbp
 = 
w
 
	`Db
(
NULL
, 0);

53 
dbp
->
	`t_r_am
(&

);

54 
dbp
->
	`t_fx
(
ogme
);

55 
dbp
->
	`t_gesize
(1024);

57 
dbp
->
	`t_ags
(
DB_RECNUM
);

58 
dbp
->
	`ݒ
(
NULL
, 
DATABASE
, NULL, 
DB_BTREE
, 
DB_CREATE
, 0664);

66 
t
 = 1; cnt <= 1000; ++cnt) {

67 ()
	`rtf
(
buf
, "%04d_", 
t
);

68 i(
	`fgs
(
buf
 + 4, (buf- 4, 

=
NULL
)

70 
u_t32_t
 
n
 = (u_t32_t)
	`
(
buf
);

71 
buf
[
n
 - 1] = '\0';

72 
t
 = 
rbuf
, 
p
 = 
buf
 + (
n
 - 2); >= buf;)

73 *
t
++ = *
p
--;

74 *
t
++ = '\0';

79 
Dbt
 
	`key
(
buf
, 
n
);

80 
Dbt
 
	`da
(
rbuf
, 
n
);

82 i((
t
 = 
dbp
->
	`put
(
NULL
, &
key
, &
da
, 
DB_NOOVERWRITE
)) != 0) {

83 
dbp
->
	`r
(
t
, "Db::put");

84 i(
t
 !
DB_KEYEXIST
)

85 
throw
 
	`DbExi
(
t
);

88 
	}
}

90 
	gBtRecExame
::~
	$BtRecExame
()

92 i(
db
 != 0)

93 
db
->
	`o
();

94 
dbp
->
	`o
(0);

95 
de
 
dbp
;

96 
	}
}

101 
	gBtRecExame
::
	$s
()

103 
DB_BTREE_STAT
 *
p
;

105 
dbp
->
	`
(
NULL
, &
p
, 0);

106 
cout
 << 
ogme
 << ": database contains "

107 << (
u_lg
)
p
->
bt_nda
 << "ecords\n";

112 
	`
(
p
);

113 
	}
}

115 
	gBtRecExame
::
	$run
()

117 
db_o_t
 
o
;

118 
t
;

119 
buf
[1024];

122 
dbp
->
	`curs
(
NULL
, &
db
, 0);

130 
cout
 << "recno #> ";

131 
cout
.
	`ush
();

132 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
)

134 
o
 = 
	`oi
(
buf
);

141 
Dbt
 
	`key
(&
o
, (recno));

142 
Dbt
 
da
;

144 i((
t
 = 
db
->
	`g
(&
key
, &
da
, 
DB_SET_RECNO
)) != 0) {

145 
dbp
->
	`r
(
t
, "DBcursor->get");

146 
throw
 
	`DbExi
(
t
);

150 
	`show
("k/d\t", &
key
, &
da
);

153 i((
t
 = 
db
->
	`g
(&
key
, &
da
, 
DB_NEXT
)) != 0) {

154 
dbp
->
	`r
(
t
, "DBcursor->get");

155 
throw
 
	`DbExi
(
t
);

159 
	`show
("xt\t", &
key
, &
da
);

165 
da
.
	`t_da
(&
o
);

166 
da
.
	`t_size
((
o
));

167 
da
.
	`t_un
((
o
));

168 
da
.
	`t_ags
(da.
	`g_ags
(| 
DB_DBT_USERMEM
);

170 i((
t
 = 
db
->
	`g
(&
key
, &
da
, 
DB_GET_RECNO
)) != 0) {

171 i(
t
 !
DB_NOTFOUND
 && !
DB_KEYEMPTY
) {

172 
dbp
->
	`r
(
t
, "DBcursor->get");

173 
throw
 
	`DbExi
(
t
);

177 
cout
 << "vedeo: " << (
u_lg
)
o
 << "\n";

181 
db
->
	`o
();

182 
db
 = 
NULL
;

183 
	}
}

189 
	gBtRecExame
::
	$show
(cڡ *
msg
, 
Dbt
 *
key
, Db*
da
)

191 
cout
 << 
msg
 << (*)
key
->
	`g_da
()

192 << " : " << (*)
da
->
	`g_da
() << "\n";

193 
	}
}

196 
	$ma
()

198 
FILE
 *

;

201 i((

 = 
	`fݒ
(
WORDLIST
, "r")=
NULL
) {

202 
	`rtf
(
dr
, "%s: open %s: %s\n",

203 
ogme
, 
WORDLIST
, 
	`db_
(
o
));

204  (
EXIT_FAILURE
);

207 
y
 {

208 
BtRecExame
 
	`p
(

);

211 ()
	`fo
(

);

212 

 = 
NULL
;

214 
p
.
	`s
();

215 
p
.
	`run
();

217 
	`tch
 (
DbExi
 &
dbe
) {

218 

 << "Exi: " << 
dbe
.
	`wh
() << "\n";

219  (
EXIT_FAILURE
);

222  (
EXIT_SUCCESS
);

223 
	}
}

	@../examples_cxx/EnvExample.cpp

9 
	~<sys/tys.h
>

11 
	~<o.h
>

12 
	~<ioam
>

13 
	~<ddef.h
>

14 
	~<dio.h
>

15 
	~<dlib.h
>

16 
	~<rg.h
>

18 
	~<db_cxx.h
>

20 
usg
 
	gd
::
oam
;

21 
usg
 
	gd
::
cout
;

22 
usg
 
	gd
::

;

24 #ifde
mactosh


25 
	#DATABASE_HOME
 ":daba"

	)

26 
	#CONFIG_DATA_DIR
 ":daba"

	)

28 #ifde
DB_WIN32


29 
	#DATABASE_HOME
 "\\tmp\\daba"

	)

30 
	#CONFIG_DATA_DIR
 "\\daba\\fes"

	)

32 
	#DATABASE_HOME
 "/tmp/daba"

	)

33 
	#CONFIG_DATA_DIR
 "/daba/fes"

	)

37 
db_tup
(cڡ *, cڡ *, 
oam
&);

38 
db_down
(cڡ *, cڡ *, 
oam
&);

40 cڡ *
	gogme
 = "EnvExample";

46 
	$ma
(, **)

54 
y
 {

55 cڡ *
da_d
, *
home
;

61 
home
 = 
DATABASE_HOME
;

62 
da_d
 = 
CONFIG_DATA_DIR
;

64 
cout
 << "Setupnv\n";

65 
	`db_tup
(
home
, 
da_d
, 

);

67 
cout
 << "Teardownnv\n";

68 
	`db_down
(
home
, 
da_d
, 

);

69  (
EXIT_SUCCESS
);

71 
	`tch
 (
DbExi
 &
dbe
) {

72 

 << "EnvExame: " << 
dbe
.
	`wh
() << "\n";

73  (
EXIT_FAILURE
);

75 
	}
}

79 
	$db_tup
(cڡ *
home
, cڡ *
da_d
, 
oam
& 
r_am
)

85 
DbEnv
 *
dbv
 = 
w
 
	`DbEnv
(0);

86 
dbv
->
	`t_r_am
(&
r_am
);

87 
dbv
->
	`t_fx
(
ogme
);

93 
dbv
->
	`t_chesize
(0, 64 * 1024, 0);

96 ()
dbv
->
	`t_da_d
(
da_d
);

99 
dbv
->
	`ݒ
(
home
,

100 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
, 0);

105 
dbv
->
	`o
(0);

106 
	}
}

109 
	$db_down
(cڡ *
home
, cڡ *
da_d
, 
oam
& 
r_am
)

112 
DbEnv
 *
dbv
 = 
w
 
	`DbEnv
(0);

114 
dbv
->
	`t_r_am
(&
r_am
);

115 
dbv
->
	`t_fx
(
ogme
);

117 ()
dbv
->
	`t_da_d
(
da_d
);

118 
dbv
->
	`move
(
home
, 0);

119 
de
 
dbv
;

120 
	}
}

	@../examples_cxx/LockExample.cpp

9 
	~<sys/tys.h
>

11 
	~<o.h
>

12 
	~<ioam
>

13 
	~<dlib.h
>

14 
	~<rg.h
>

16 
	~<db_cxx.h
>

18 
usg
 
	gd
::
c
;

19 
usg
 
	gd
::
cout
;

20 
usg
 
	gd
::

;

22 cڡ *
	gogme
 = "LockExample";

27 as
	cLockExame
 : 
public
 
DbEnv


29 
public
:

30 
run
();

31 
	$r_code
({  (
ecode
); }

33 
	`LockExame
(cڡ *
home
, 
u_t32_t
 
maxlocks
, 
do_uƚk
);

35 
ive
:

36 cڡ 
FeName
[];

37 
ecode
;

40 
	`LockExame
(cڡ 
LockExame
 &);

41 
ݔ
 = (cڡ 
LockExame
 &);

42 
	}
};

44 
uge
();

47 
	$ma
(
gc
, *
gv
[])

49 cڡ *
home
;

50 
do_uƚk
;

51 
u_t32_t
 
maxlocks
;

52 
i
;

54 
home
 = "TESTDIR";

55 
maxlocks
 = 0;

56 
do_uƚk
 = 0;

57 
gnum
 = 1;rgnum < 
gc
; ++argnum) {

58 i(
	`rcmp
(
gv
[
gnum
], "-h") == 0) {

59 i(++
gnum
 >
gc
)

60  (
	`uge
());

61 
home
 = 
gv
[
gnum
];

63 i(
	`rcmp
(
gv
[
gnum
], "-m") == 0) {

64 i(++
gnum
 >
gc
)

65  (
	`uge
());

66 i((
i
 = 
	`oi
(
gv
[
gnum
])) <= 0)

67  (
	`uge
());

68 
maxlocks
 = (
u_t32_t
)
i
;

70 i(
	`rcmp
(
gv
[
gnum
], "-u") == 0) {

71 
do_uƚk
 = 1;

74  (
	`uge
());

78 
y
 {

79 
ecode
;

81 i(
do_uƚk
) {

84 
LockExame
 
	`tmp
(
home
, 
maxlocks
, 
do_uƚk
);

85 i((
ecode
 = 
tmp
.
	`r_code
()) != 0)

86  (
ecode
);

89 
LockExame
 
	`p
(
home
, 
maxlocks
, 
do_uƚk
);

90 i((
ecode
 = 
p
.
	`r_code
()) != 0)

91  (
ecode
);

92 
p
.
	`run
();

93 
p
.
	`o
(0);

94  (
EXIT_SUCCESS
);

96 
	`tch
 (
DbExi
 &
dbe
) {

97 

 << "LockExame: " << 
dbe
.
	`wh
() << "\n";

98  (
EXIT_FAILURE
);

100 
	}
}

102 
	gLockExame
::
	$LockExame
(cڡ *
home
, 
u_t32_t
 
maxlocks
, 
do_uƚk
)

103 : 
	`DbEnv
(0)

104 , 
	$ecode
(0)

106 
t
;

108 i(
do_uƚk
) {

109 i((
t
 = 
	`move
(
home
, 
DB_FORCE
)) != 0) {

110 

 << 
ogme
 << ": DbEnv::remove: "

111 << 
	`
(
o
) << "\n";

112 
ecode
 = 
EXIT_FAILURE
;

116 
	`t_r_am
(&

);

117 
	`t_fx
("LockExample");

118 i(
maxlocks
 != 0)

119 
	`t_lk_max_locks
(
maxlocks
);

120 
	`ݒ
(
home
, 
DB_CREATE
 | 
DB_INIT_LOCK
, 0);

122 
	}
}

124 
	gLockExame
::
	$run
()

126 
hd
;

127 
size_t
 
n
;

128 
u_t32_t
 
lock
;

129 
did_g
, 
t
;

130 
DbLock
 *
locks
 = 0;

131 
lockcou
 = 0;

132 
lockid
 = 0;

133 
objbuf
[1024];

138 
	`lock_id
(&
lock
);

139 
hd
 = 0;;) {

140 
cout
 << "Operation get/release [get]> ";

141 
cout
.
	`ush
();

143 
buf
[16];

144 
c
.
	`gle
(
buf
, (opbuf));

145 i(
c
.
	`eof
())

147 i((
n
 = 
	`
(
buf
)<1 || 
	`rcmp
(opbuf, "get") == 0) {

149 
cout
 << "input object (text string)oock> ";

150 
cout
.
	`ush
();

151 
c
.
	`gle
(
objbuf
, (objbuf));

152 i(
c
.
	`eof
())

154 i((
n
 = 
	`
(
objbuf
)) <= 0)

157 
lockbuf
[16];

159 
cout
 << "lockypeead/write [read]> ";

160 
cout
.
	`ush
();

161 
c
.
	`gle
(
lockbuf
, (lockbuf));

162 i(
c
.
	`eof
())

164 
n
 = 
	`
(
lockbuf
);

165 } 
n
 >= 1 &&

166 
	`rcmp
(
lockbuf
, "read") != 0 &&

167 
	`rcmp
(
lockbuf
, "write") != 0);

169 
db_lockmode_t
 
lock_ty
;

170 i(
n
 <1 || 
	`rcmp
(
lockbuf
, "read") == 0)

171 
lock_ty
 = 
DB_LOCK_READ
;

173 
lock_ty
 = 
DB_LOCK_WRITE
;

175 
Dbt
 
	`dbt
(
objbuf
, (
u_t32_t
)
	`
(objbuf));

177 
DbLock
 
lock
;

178 
t
 = 
	`lock_g
(
lock
, 
DB_LOCK_NOWAIT
, &
dbt
,

179 
lock_ty
, &
lock
);

180 
did_g
 = 1;

181 
lockid
 = 
lockcou
++;

182 i(
locks
 =
NULL
) {

183 
locks
 = 
w
 
DbLock
[1];

186 
DbLock
 *
wlocks
 = 
w
 DbLock[
lockcou
];

187 
lockno
 = 0;

188 
lockno
 < 
lockid
;ockno++) {

189 
wlocks
[
lockno
] = 
locks
[lockno];

191 
de
 
locks
;

192 
locks
 = 
wlocks
;

194 
locks
[
lockid
] = 
lock
;

198 
cout
 << "inputockoelease> ";

199 
cout
.
	`ush
();

200 
c
.
	`gle
(
objbuf
, (objbuf));

201 i(
c
.
	`eof
())

203 } (
n
 = 
	`
(
objbuf
)) <= 0);

204 
lockid
 = 
	`
(
objbuf
, 
NULL
, 16);

205 i(
lockid
 < 0 ||ockid >
lockcou
) {

206 
cout
 << "Lock #" << 
lockid
 << " out ofange\n";

209 
DbLock
 
lock
 = 
locks
[
lockid
];

210 
t
 = 
	`lock_put
(&
lock
);

211 
did_g
 = 0;

214 
t
) {

216 
cout
 << "Lock #" << 
lockid
 << " "

217 << (
did_g
 ? "granted" : "released")

219 
hd
 +
did_g
 ? 1 : -1;

221 
DB_LOCK_NOTGRANTED
:

222 
cout
 << "Lockot granted\n";

224 
DB_LOCK_DEADLOCK
:

225 

 << "LockExample:ock_"

226 << (
did_g
 ? "get" : "put")

230 

 << "LockExample:ock_get: %s",

231 
	`
(
o
);

234 
cout
 << "\n";

235 
cout
 << "Closgockegi " << 
hd
 << "ocks held\n";

236 i(
locks
 != 0)

237 
de
 
locks
;

238 
	}
}

241 
	$uge
()

243 

 << "usage: LockExample [-u] [-h home] [-m maxlocks]\n";

244  (
EXIT_FAILURE
);

245 
	}
}

	@../examples_cxx/MpoolExample.cpp

9 
	~<sys/tys.h
>

11 
	~<o.h
>

12 
	~<f.h
>

13 
	~<ioam
>

14 
	~<fam
>

15 
	~<dlib.h
>

16 
	~<rg.h
>

17 
	~<time.h
>

19 
	~<db_cxx.h
>

21 
usg
 
	gd
::
cout
;

22 
usg
 
	gd
::

;

23 
usg
 
	gd
::
ios
;

24 
usg
 
	gd
::
ofam
;

26 
	#MPOOL
 "mpo"

	)

28 

(const *, , );

29 
run
(
DB_ENV
 *, , , );

31 
uge
();

33 cڡ *
	gogme
 = "MpoolExample";

35 as
	cMpoExame
 : 
public
 
DbEnv


37 
public
:

38 
MpoExame
();

39 
db
(cڡ *
home
, 
chesize
);

40 
run
(
hs
, 
gesize
, 
ages
);

42 
	mive
:

43 cڡ 
FeName
[];

46 
MpoExame
(const MpoolExample &);

47 
	mݔ
 = (cڡ 
MpoExame
 &);

50 
	$ma
(
gc
, *
gv
[])

52 
t
;

53 
chesize
 = 20 * 1024;

54 
hs
 = 1000;

55 
ages
 = 50;

56 
gesize
 = 1024;

58 
i
 = 1; i < 
gc
; ++i) {

59 i(
	`rcmp
(
gv
[
i
], "-c") == 0) {

60 i((
chesize
 = 
	`oi
(
gv
[++
i
])) < 20 * 1024)

61 
	`uge
();

63 i(
	`rcmp
(
gv
[
i
], "-h") == 0) {

64 i((
hs
 = 
	`oi
(
gv
[++
i
])) <= 0)

65 
	`uge
();

67 i(
	`rcmp
(
gv
[
i
], "-n") == 0) {

68 i((
ages
 = 
	`oi
(
gv
[++
i
])) <= 0)

69 
	`uge
();

71 i(
	`rcmp
(
gv
[
i
], "-p") == 0) {

72 i((
gesize
 = 
	`oi
(
gv
[++
i
])) <= 0)

73 
	`uge
();

76 
	`uge
();

81 i((
t
 = 
	`
(
MPOOL
, 
gesize
, 
ages
)) != 0)

82  (
t
);

84 
y
 {

85 
MpoExame
 
p
;

87 
cout
 << 
ogme


88 << ": cachesize: " << 
chesize


89 << ";agesize: " << 
gesize


90 << "; Nages: " << 
ages
 << "\n";

92 i((
t
 = 
p
.
	`db
(
NULL
, 
chesize
)) != 0)

93  (
t
);

94 i((
t
 = 
p
.
	`run
(
hs
, 
gesize
, 
ages
)) != 0)

95  (
t
);

96 
cout
 << "MpoolExample: completed\n";

97  (
EXIT_SUCCESS
);

99 
	`tch
 (
DbExi
 &
dbe
) {

100 

 << "MpoExame: " << 
dbe
.
	`wh
() << "\n";

101  (
EXIT_FAILURE
);

103 
	}
}

110 
	$
(cڡ *
fe
, 
gesize
, 
ages
)

114 
ofam
 
	`of
(
fe
, 
ios
::
out
 | ios::
by
);

116 i(
of
.
	`
()) {

117 

 << "MpoExame: " << 
fe
 << ": open failed\n";

118  (
EXIT_FAILURE
);

120 *
p
 = 
w
 [
gesize
];

121 
	`memt
(
p
, 0, 
gesize
);

124 
t
 = 0; c <
ages
; ++cnt) {

125 *(
db_pgno_t
 *)
p
 = 
t
;

126 
of
.
	`wre
(
p
, 
gesize
);

127 i(
of
.
	`
()) {

128 

 << "MpoExame: " << 
fe
 << ": write failed\n";

129  (
EXIT_FAILURE
);

132 
de
 [] 
p
;

133  (
EXIT_SUCCESS
);

134 
	}
}

137 
	$uge
()

139 

 << "usage: MpoolExample [-c cachesize] "

141  (
EXIT_FAILURE
);

142 
	}
}

148 
	gMpoExame
::
	$MpoExame
()

149 : 
	$DbEnv
(
DB_CXX_NO_EXCEPTIONS
)

151 
	}
}

153 
MpoExame
::
	$db
(cڡ *
home
, 
chesize
)

155 
	`t_r_am
(&

);

156 
	`t_fx
("MpoolExample");

157 
	`t_chesize
(0, 
chesize
, 0);

159 
	`ݒ
(
home
, 
DB_CREATE
 | 
DB_INIT_MPOOL
, 0);

160  (
EXIT_SUCCESS
);

161 
	}
}

168 
	gMpoExame
::
	$run
(
hs
, 
gesize
, 
ages
)

170 
db_pgno_t
 
go
;

171 
t
, 
t
;

172 *
p
;

175 
DbMpoFe
 *
m
;

177 i((
t
 = 
	`memp_f
(&
m
, 0)) != 0) {

178 

 << "MpoolExample: memp_fcreate failed: "

179 << 
	`
(
t
) << "\n";

180  (
EXIT_FAILURE
);

182 
m
->
	`ݒ
(
MPOOL
, 0, 0, 
gesize
);

184 
cout
 << "v" << 
hs
 << "andomages... ";

186 
	`d
(()
	`time
(
NULL
));

187 
t
 = 0; c < 
hs
; ++cnt) {

188 
go
 = (
	`nd
(% 
ages
) + 1;

189 i((
t
 = 
m
->
	`g
(&
go
, 
NULL
, 0, &
p
)) != 0) {

190 

 << "MpoolExample: unableoetrieveage "

191 << ()
go
 << ": "

192 << 
	`
(
t
) << "\n";

193  (
EXIT_FAILURE
);

195 i(*(
db_pgno_t
 *)
p
 !
go
) {

196 

 << "MpoolExample: wrongageetrieved ("

197 << ()
go
 << " != "

198 << *(*)
p
 << ")\n";

199  (
EXIT_FAILURE
);

201 i((
t
 = 
m
->
	`put
(
p
, 
DB_PRIORITY_UNCHANGED
, 0)) != 0) {

202 

 << "MpoolExample: unableoeturnage "

203 << ()
go
 << ": "

204 << 
	`
(
t
) << "\n";

205  (
EXIT_FAILURE
);

209 
cout
 << "successful.\n";

212 i((
t
 = 
	`o
(0)) != 0) {

213 

 << "MpoExame: " << 
	`
(
t
) << "\n";

214  (
EXIT_FAILURE
);

216  (
EXIT_SUCCESS
);

217 
	}
}

	@../examples_cxx/SequenceExample.cpp

9 
	~<sys/tys.h
>

11 
	~<ioam
>

12 
	~<o.h
>

13 
	~<dlib.h
>

14 
	~<rg.h
>

16 #ifde
_WIN32


18 

gt
(, * const *, const *);

19 

td
;

22 
	~<unid.h
>

25 
	~<db_cxx.h
>

27 
	#DATABASE
 "qu.db"

	)

28 
	#SEQUENCE
 "my_qu"

	)

30 
usg
 
	gd
::
cout
;

31 
usg
 
	gd
::

;

33 as
	cSequExame


35 
	mpublic
:

36 
SequExame
();

37 
run
(
bo
 
moveExigDaba
, cڡ *
feName
);

39 
	mive
:

41 
SequExame
(const SequenceExample &);

42 
	mݔ
 = (cڡ 
SequExame
 &);

46 
	$uge
()

48 ()
	`rtf
(
dr
, "usage: SequenceExample [-r] [database]\n");

49  (
EXIT_FAILURE
);

50 
	}
}

53 
	$ma
(
gc
, *
gv
[])

55 
ch
, 
rag
;

56 cڡ *
daba
;

58 
rag
 = 0;

59 (
ch
 = 
	`gt
(
gc
, 
gv
, "r")!
EOF
)

60 
ch
) {

62 
rag
 = 1;

66  (
	`uge
());

68 
gc
 -
td
;

69 
gv
 +
td
;

72 
daba
 = *
gv
 =
NULL
 ? 
DATABASE
 :rgv[0];

79 
y
 {

80 
SequExame
 
p
;

81 
p
.
	`run
((
bo
)(
rag
 =1 ? 
ue
 : 
l
), 
daba
);

82  (
EXIT_SUCCESS
);

84 
	`tch
 (
DbExi
 &
dbe
) {

85 

 << "SequExame: " << 
dbe
.
	`wh
() << "\n";

86  (
EXIT_FAILURE
);

88 
	}
}

90 
	gSequExame
::
	$SequExame
()

92 
	}
}

94 
SequExame
::
	$run
(
bo
 
moveExigDaba
, cڡ *
feName
)

97 i(
moveExigDaba
)

98 ()
	`move
(
feName
);

102 
Db
 
	`db
(0, 0);

104 
db
.
	`t_r_am
(&

);

105 
db
.
	`t_fx
("SequenceExample");

106 
db
.
	`ݒ
(
NULL
, 
feName
, NULL, 
DB_BTREE
, 
DB_CREATE
, 0664);

112 
y
 {

113 
Dbt
 
	`key
((*)
SEQUENCE
, (
u_t32_t
)
	`
(SEQUENCE));

114 
DbSequ
 
	`q
(&
db
, 0);

115 
q
.
	`ݒ
(0, &
key
, 
DB_CREATE
);

117 
i
 = 0; i < 10; i++) {

118 
db_q_t
 
qnum
;

119 
q
.
	`g
(0, 1, &
qnum
, 0);

122 
cout
 << "Got sequenceumber (" <<

123 ()(
qnum
 >> 32) << ", " << ()seqnum <<

127 
q
.
	`o
(0);

128 } 
	`tch
 (
DbExi
 &
dbe
) {

129 

 << "SequExame: " << 
dbe
.
	`wh
() << "\n";

132 
db
.
	`o
(0);

133 
	}
}

	@../examples_cxx/TpcbExample.cpp

9 
	~<sys/tys.h
>

11 
	~<o.h
>

12 
	~<dlib.h
>

13 
	~<rg.h
>

14 
	~<time.h
>

16 
	~<ioam
>

17 
	~<iom
>

18 
	~<db_cxx.h
>

20 
usg
 
	gd
::
cout
;

21 
usg
 
	gd
::

;

23 um { 
	mACCOUNT
, 
	mBRANCH
, 
	mTELLER
 } 
	tFTYPE
;

25 
vg
(, *);

26 
u_t32_t
 
ndom_id
(
FTYPE
, u_int32_t, u_int32_t, u_int32_t);

27 
u_t32_t
 
ndom_t
(u_int32_t, u_int32_t);

28 
uge
();

30 
	gvbo
;

31 cڡ *
	gogme
 = "TpcbExample";

33 as
	cTpcbExame
 : 
public
 
DbEnv


35 
public
:

36 
puϋ
(, , , );

37 
run
(, , , );

38 
txn
(
Db
 *, Db *, Db *, Db *,

40 
puϋHiy
(
Db
 *, , 
u_t32_t
, u_int32_t, u_int32_t);

41 
puϋTab
(
Db
 *, 
u_t32_t
, u_int32_t, , const *);

47 
TpcbExame
(cڡ *
home
, 
chesize
, 
ags
);

49 
	mive
:

50 cڡ 
FeName
[];

53 
TpcbExame
(const TpcbExample &);

54 
	mݔ
 = (cڡ 
TpcbExame
 &);

66 
	#TELLERS_PER_BRANCH
 100

	)

67 
	#ACCOUNTS_PER_TELLER
 1000

	)

68 
	#HISTORY_PER_BRANCH
 2592000

	)

76 #ifdef 
VALID_SCALING


77 
	#ACCOUNTS
 1000000

	)

78 
	#BRANCHES
 10

	)

79 
	#TELLERS
 100

	)

80 
	#HISTORY
 25920000

	)

83 #ifdef 
TINY


84 
	#ACCOUNTS
 1000

	)

85 
	#BRANCHES
 10

	)

86 
	#TELLERS
 100

	)

87 
	#HISTORY
 10000

	)

90 #i!
defed
(
VALID_SCALING
&& !defed(
TINY
)

91 
	#ACCOUNTS
 100000

	)

92 
	#BRANCHES
 10

	)

93 
	#TELLERS
 100

	)

94 
	#HISTORY
 259200

	)

97 
	#HISTORY_LEN
 100

	)

98 
	#RECLEN
 100

	)

99 
	#BEGID
 1000000

	)

101 
	sDeec
 {

102 
u_t32_t
 
	mid
;

103 
u_t32_t
 
	mb
;

104 
u_t8_t
 
	md
[
RECLEN
 - (
u_t32_t
) - (u_int32_t)];

107 
	sHic
 {

108 
u_t32_t
 
	maid
;

109 
u_t32_t
 
	mbid
;

110 
u_t32_t
 
	mtid
;

111 
u_t32_t
 
	mamou
;

112 
u_t8_t
 
	md
[
RECLEN
 - 4 * (
u_t32_t
)];

116 
	$ma
(
gc
, *
gv
[])

118 
ed
;

119 
accous
, 
bnches
, 
Δs
, 
hiy
;

120 
iag
, 
mpo
, 
xns
, 
txn_no_sync
;

121 cڡ *
home
;

122 *
dg
;

124 
home
 = "TESTDIR";

125 
accous
 = 
bnches
 = 
hiy
 = 
Δs
 = 0;

126 
txn_no_sync
 = 0;

127 
mpo
 = 
xns
 = 0;

128 
vbo
 = 0;

129 
iag
 = 0;

130 
ed
 = ()
	`time
(
NULL
);

132 
i
 = 1; i < 
gc
; ++i) {

134 i(
	`rcmp
(
gv
[
i
], "-a") == 0) {

136 i((
accous
 = 
	`oi
(
gv
[++
i
])) <= 0)

137  (
	`vg
('a', 
gv
[
i
]));

139 i(
	`rcmp
(
gv
[
i
], "-b") == 0) {

141 i((
bnches
 = 
	`oi
(
gv
[++
i
])) <= 0)

142  (
	`vg
('b', 
gv
[
i
]));

144 i(
	`rcmp
(
gv
[
i
], "-c") == 0) {

146 i((
mpo
 = 
	`oi
(
gv
[++
i
])) <= 0)

147  (
	`vg
('c', 
gv
[
i
]));

149 i(
	`rcmp
(
gv
[
i
], "-f") == 0) {

151 
txn_no_sync
 = 1;

153 i(
	`rcmp
(
gv
[
i
], "-h") == 0) {

155 
home
 = 
gv
[++
i
];

157 i(
	`rcmp
(
gv
[
i
], "-i") == 0) {

159 
iag
 = 1;

161 i(
	`rcmp
(
gv
[
i
], "-n") == 0) {

163 i((
xns
 = 
	`oi
(
gv
[++
i
])) <= 0)

164  (
	`vg
('n', 
gv
[
i
]));

166 i(
	`rcmp
(
gv
[
i
], "-S") == 0) {

168 
ed
 = 
	`oul
(
gv
[++
i
], &
dg
, 0);

169 i(*
dg
 != '\0')

170  (
	`vg
('S', 
gv
[
i
]));

172 i(
	`rcmp
(
gv
[
i
], "-s") == 0) {

174 i((
hiy
 = 
	`oi
(
gv
[++
i
])) <= 0)

175  (
	`vg
('s', 
gv
[
i
]));

177 i(
	`rcmp
(
gv
[
i
], "-t") == 0) {

179 i((
Δs
 = 
	`oi
(
gv
[++
i
])) <= 0)

180  (
	`vg
('t', 
gv
[
i
]));

182 i(
	`rcmp
(
gv
[
i
], "-v") == 0) {

184 
vbo
 = 1;

187  (
	`uge
());

191 
	`d
(()
ed
);

193 
accous
 =ccou=0 ? 
ACCOUNTS
 :ccounts;

194 
bnches
 = bnche=0 ? 
BRANCHES
 : branches;

195 
Δs
 =r=0 ? 
TELLERS
 :ellers;

196 
hiy
 = hiy =0 ? 
HISTORY
 : history;

198 i(
vbo
)

199 
cout
 << ()
accous
 << " Accounts, "

200 << ()
bnches
 << " Branches, "

201 << ()
Δs
 << " Tellers, "

202 << ()
hiy
 << " History\n";

204 
y
 {

209 
TpcbExame
 
	`p
(
home
, 
mpo
, 
txn_no_sync
 ? 
DB_TXN_NOSYNC
 : 0);

211 i(
iag
) {

212 i(
xns
 != 0)

213  (
	`uge
());

214 
p
.
	`puϋ
(
accous
, 
bnches
, 
hiy
, 
Δs
);

217 i(
xns
 == 0)

218  (
	`uge
());

219 
p
.
	`run
(
xns
, 
accous
, 
bnches
, 
Δs
);

222 
p
.
	`o
(0);

223  (
EXIT_SUCCESS
);

225 
	`tch
 (
DbExi
 &
dbe
) {

226 

 << "TpcbExame: " << 
dbe
.
	`wh
() << "\n";

227  (
EXIT_FAILURE
);

229 
	}
}

232 
	$vg
(
g
, *
r
)

234 

 << "TpcbExample: invalidrgument for -"

235 << ()
g
 << ": " << 
r
 << "\n";

236  (
EXIT_FAILURE
);

237 
	}
}

240 
	$uge
()

242 

 << "usage: TpcbExample [-fiv] [-accounts] [-b branches]\n"

245  (
EXIT_FAILURE
);

246 
	}
}

248 
	gTpcbExame
::
	$TpcbExame
(cڡ *
home
, 
chesize
, 
ags
)

249 : 
	$DbEnv
(0)

251 
u_t32_t
 
lol_ags
;

253 
	`t_r_am
(&

);

254 
	`t_fx
("TpcbExample");

255 ()
	`t_chesize
(0, 
chesize
 == 0 ?

256 4 * 1024 * 1024 : (
u_t32_t
)
chesize
, 0);

258 i(
ags
 & (
DB_TXN_NOSYNC
))

259 
	`t_ags
(
DB_TXN_NOSYNC
, 1);

260 
ags
 &~(
DB_TXN_NOSYNC
);

262 
lol_ags
 = 
ags
 | 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 |

263 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
;

264 
	`ݒ
(
home
, 
lol_ags
, 0);

265 
	}
}

272 
	gTpcbExame
::
	$puϋ
(
accous
, 
bnches
, 
hiy
, 
Δs
)

274 
Db
 *
dbp
;

276 
r
;

277 
u_t32_t
 
b
, 
idnum
;

278 
u_t32_t
 
d_um
, 
d_bnum
, 
d_um
;

279 
u_t32_t
 
t_um
, 
t_bnum
, 
t_um
;

281 
idnum
 = 
BEGID
;

282 
b
 = 500000;

284 
dbp
 = 
w
 
	`Db
(
this
, 0);

285 
dbp
->
	`t_h_m
(()
accous
);

287 i((
r
 = 
dbp
->
	`ݒ
(
NULL
, "accou", NULL, 
DB_HASH
,

288 
DB_CREATE
, 0644)) != 0) {

289 
DbExi
 
	`ex
("Accou f faed", 
r
);

290 
throw
 
ex
;

293 
t_um
 = 
idnum
;

294 
	`puϋTab
(
dbp
, 
idnum
, 
b
, 
accous
, "account");

295 
idnum
 +
accous
;

296 
d_um
 = 
idnum
 - 1;

297 i((
r
 = 
dbp
->
	`o
(0)) != 0) {

298 
DbExi
 
	`ex
("Accou fo faed", 
r
);

299 
throw
 
ex
;

301 
de
 
dbp
;

302 i(
vbo
)

303 
cout
 << "Populatedccounts: "

304 << ()
t_um
 << " - " << ()
d_um
 << "\n";

306 
dbp
 = 
w
 
	`Db
(
this
, 0);

312 
dbp
->
	`t_h_f
(1);

313 
dbp
->
	`t_h_m
(()
bnches
);

314 
dbp
->
	`t_gesize
(512);

316 i((
r
 = 
dbp
->
	`ݒ
(
NULL
, "bnch", NULL, 
DB_HASH
,

317 
DB_CREATE
, 0644)) != 0) {

318 
DbExi
 
	`ex
("Bnch f faed", 
r
);

319 
throw
 
ex
;

321 
t_bnum
 = 
idnum
;

322 
	`puϋTab
(
dbp
, 
idnum
, 
b
, 
bnches
, "branch");

323 
idnum
 +
bnches
;

324 
d_bnum
 = 
idnum
 - 1;

325 i((
r
 = 
dbp
->
	`o
(0)) != 0) {

326 
DbExi
 
	`ex
("Clo obnch fed", 
r
);

327 
throw
 
ex
;

329 
de
 
dbp
;

331 i(
vbo
)

332 
cout
 << "Populated branches: "

333 << ()
t_bnum
 << " - " << ()
d_bnum
 << "\n";

335 
dbp
 = 
w
 
	`Db
(
this
, 0);

340 
dbp
->
	`t_h_f
(0);

341 
dbp
->
	`t_h_m
(()
Δs
);

342 
dbp
->
	`t_gesize
(512);

344 i((
r
 = 
dbp
->
	`ݒ
(
NULL
, "Δ", NULL, 
DB_HASH
,

345 
DB_CREATE
, 0644)) != 0) {

346 
DbExi
 
	`ex
("T˸f faed", 
r
);

347 
throw
 
ex
;

350 
t_um
 = 
idnum
;

351 
	`puϋTab
(
dbp
, 
idnum
, 
b
, 
Δs
, "teller");

352 
idnum
 +
Δs
;

353 
d_um
 = 
idnum
 - 1;

354 i((
r
 = 
dbp
->
	`o
(0)) != 0) {

355 
DbExi
 
	`ex
("Clo oΔ fed", 
r
);

356 
throw
 
ex
;

358 
de
 
dbp
;

359 i(
vbo
)

360 
cout
 << "Populatedellers: "

361 << ()
t_um
 << " - " << ()
d_um
 << "\n";

363 
dbp
 = 
w
 
	`Db
(
this
, 0);

364 
dbp
->
	`t__n
(
HISTORY_LEN
);

365 i((
r
 = 
dbp
->
	`ݒ
(
NULL
, "hiy", NULL, 
DB_RECNO
,

366 
DB_CREATE
, 0644)) != 0) {

367 
DbExi
 
	`ex
("Cohiy fed", 
r
);

368 
throw
 
ex
;

371 
	`puϋHiy
(
dbp
, 
hiy
, 
accous
, 
bnches
, 
Δs
);

372 i((
r
 = 
dbp
->
	`o
(0)) != 0) {

373 
DbExi
 
	`ex
("Clo ohiy fed", 
r
);

374 
throw
 
ex
;

376 
de
 
dbp
;

377 
	}
}

380 
	gTpcbExame
::
	$puϋTab
(
Db
 *
dbp
,

381 
u_t32_t
 
t_id
, u_t32_
b
,

382 
ecs
, cڡ *
msg
)

384 
Deec
 
dc
;

385 
	`memt
(&
dc
.
d
[0], 1, (drec.pad));

387 
Dbt
 
	`kdbt
(&
dc
.
id
, (
u_t32_t
));

388 
Dbt
 
	`ddbt
(&
dc
, (drec));

390 
i
 = 0; i < 
ecs
; i++) {

391 
dc
.
id
 = 
t_id
 + (
u_t32_t
)
i
;

392 
dc
.
b
 = balance;

393 
r
;

394 i((
r
 =

395 
dbp
->
	`put
(
NULL
, &
kdbt
, &
ddbt
, 
DB_NOOVERWRITE
)) != 0) {

396 

 << "Fau inlizg " << 
msg
 << " file: "

397 << 
	`
(
r
) << "\n";

398 
DbExi
 
	`ex
("u inlizg fe", 
r
);

399 
throw
 
ex
;

402 
	}
}

405 
	gTpcbExame
::
	$puϋHiy
(
Db
 *
dbp
, 
ecs
, 
u_t32_t
 
accous
,

406 
u_t32_t
 
bnches
, u_t32_
Δs
)

408 
Hic
 
hc
;

409 
	`memt
(&
hc
.
d
[0], 1, (hrec.pad));

410 
hc
.
amou
 = 10;

411 
db_o_t
 
key
;

413 
Dbt
 
	`kdbt
(&
key
, (
u_t32_t
));

414 
Dbt
 
	`ddbt
(&
hc
, (hrec));

416 
i
 = 1; i <
ecs
; i++) {

417 
hc
.
aid
 = 
	`ndom_id
(
ACCOUNT
, 
accous
, 
bnches
, 
Δs
);

418 
hc
.
bid
 = 
	`ndom_id
(
BRANCH
, 
accous
, 
bnches
, 
Δs
);

419 
hc
.
tid
 = 
	`ndom_id
(
TELLER
, 
accous
, 
bnches
, 
Δs
);

421 
r
;

422 
key
 = (
db_o_t
)
i
;

423 i((
r
 = 
dbp
->
	`put
(
NULL
, &
kdbt
, &
ddbt
, 
DB_APPEND
)) != 0) {

424 
DbExi
 
	`ex
("failure initializing history file",

425 
r
);

426 
throw
 
ex
;

429 
	}
}

431 
u_t32_t


432 
	$ndom_t
(
u_t32_t
 
lo
, u_t32_
hi
)

434 
u_t32_t
 
t
;

435 
t
;

437 
t
 = 
	`nd
();

438 
t
 = (
u_t32_t
)((()
t
 / (()(
RAND_MAX
) + 1)) *

439 (
hi
 - 
lo
 + 1));

440 
t
 +
lo
;

441  (
t
);

442 
	}
}

444 
u_t32_t


445 
	$ndom_id
(
FTYPE
 
ty
, 
u_t32_t
 
accous
, u_t32_
bnches
, u_t32_
Δs
)

447 
u_t32_t
 
m
, 
max
, 
num
;

449 
max
 = 
m
 = 
BEGID
;

450 
num
 = 
accous
;

451 
ty
) {

452 
TELLER
:

453 
m
 +
bnches
;

454 
num
 = 
Δs
;

456 
BRANCH
:

457 i(
ty
 =
BRANCH
)

458 
num
 = 
bnches
;

459 
m
 +
accous
;

461 
ACCOUNT
:

462 
max
 = 
m
 + 
num
 - 1;

464  (
	`ndom_t
(
m
, 
max
));

465 
	}
}

468 
	gTpcbExame
::
	$run
(
n
, 
accous
, 
bnches
, 
Δs
)

470 
Db
 *
adb
, *
bdb
, *
hdb
, *
tdb
;

471 
ed
, 
t
, 
txns
;

472 
time_t
 
t_time
, 
d_time
;

478 
r
;

479 
adb
 = 
w
 
	`Db
(
this
, 0);

480 i((
r
 = 
adb
->
	`ݒ
(
NULL
, "accou", NULL, 
DB_UNKNOWN
,

481 
DB_AUTO_COMMIT
, 0)) != 0) {

482 
DbExi
 
	`ex
("Ooaccou fed", 
r
);

483 
throw
 
ex
;

486 
bdb
 = 
w
 
	`Db
(
this
, 0);

487 i((
r
 = 
bdb
->
	`ݒ
(
NULL
, "bnch", NULL, 
DB_UNKNOWN
,

488 
DB_AUTO_COMMIT
, 0)) != 0) {

489 
DbExi
 
	`ex
("Oobnch fed", 
r
);

490 
throw
 
ex
;

493 
tdb
 = 
w
 
	`Db
(
this
, 0);

494 i((
r
 = 
tdb
->
	`ݒ
(
NULL
, "Δ", NULL, 
DB_UNKNOWN
,

495 
DB_AUTO_COMMIT
, 0)) != 0) {

496 
DbExi
 
	`ex
("OoΔ fed", 
r
);

497 
throw
 
ex
;

500 
hdb
 = 
w
 
	`Db
(
this
, 0);

501 i((
r
 = 
hdb
->
	`ݒ
(
NULL
, "hiy", NULL, 
DB_UNKNOWN
,

502 
DB_AUTO_COMMIT
, 0)) != 0) {

503 
DbExi
 
	`ex
("Oohiy fed", 
r
);

504 
throw
 
ex
;

507 ()
	`time
(&
t_time
);

508 
txns
 = 
n
, 
ed
 = 0;-- > 0;)

509 i((
t
 = 
	`txn
(
adb
, 
bdb
, 
tdb
, 
hdb
,

510 
accous
, 
bnches
, 
Δs
)) != 0)

511 ++
ed
;

512 ()
	`time
(&
d_time
);

513 i(
d_time
 =
t_time
)

514 ++
d_time
;

518 
	`tf
("%s: %dxns: %d faed, %.2TPS\n", 
ogme
, 
txns
, 
ed
,

519 (
txns
 - 
ed
/ ()(
d_time
 - 
t_time
));

521 ()
adb
->
	`o
(0);

522 ()
bdb
->
	`o
(0);

523 ()
tdb
->
	`o
(0);

524 ()
hdb
->
	`o
(0);

525 
	}
}

531 
	gTpcbExame
::
	$txn
(
Db
 *
adb
, Db *
bdb
, Db *
tdb
, Db *
hdb
,

532 
accous
, 
bnches
, 
Δs
)

534 
Dbc
 *
acurs
 = 
NULL
;

535 
Dbc
 *
bcurs
 = 
NULL
;

536 
Dbc
 *
tcurs
 = 
NULL
;

537 
DbTxn
 *
t
 = 
NULL
;

539 
db_o_t
 
key
;

540 
Deec
 
c
;

541 
Hic
 
hc
;

542 
accou
, 
bnch
, 
Δ
, 
t
;

544 
Dbt
 
d_dbt
;

545 
Dbt
 
d_hidbt
;

546 
Dbt
 
k_dbt
;

547 
Dbt
 
	`k_hidbt
(&
key
, (key));

553 
accou
 = 
	`ndom_id
(
ACCOUNT
, 
accous
, 
bnches
, 
Δs
);

554 
bnch
 = 
	`ndom_id
(
BRANCH
, 
accous
, 
bnches
, 
Δs
);

555 
Δ
 = 
	`ndom_id
(
TELLER
, 
accous
, 
bnches
, 
Δs
);

557 
k_dbt
.
	`t_size
(());

559 
d_dbt
.
	`t_ags
(
DB_DBT_USERMEM
);

560 
d_dbt
.
	`t_da
(&
c
);

561 
d_dbt
.
	`t_un
((
c
));

563 
hc
.
aid
 = 
accou
;

564 
hc
.
bid
 = 
bnch
;

565 
hc
.
tid
 = 
Δ
;

566 
hc
.
amou
 = 10;

568 
d_hidbt
.
	`t_ags
(
DB_DBT_PARTIAL
);

576 i(
	`txn_beg
(
NULL
, &
t
, 0) != 0)

577 
r
;

579 i(
adb
->
	`curs
(
t
, &
acurs
, 0) != 0 ||

580 
bdb
->
	`curs
(
t
, &
bcurs
, 0) != 0 ||

581 
tdb
->
	`curs
(
t
, &
tcurs
, 0) != 0)

582 
r
;

585 
k_dbt
.
	`t_da
(&
accou
);

586 i(
acurs
->
	`g
(&
k_dbt
, &
d_dbt
, 
DB_SET
) != 0)

587 
r
;

588 
c
.
b
 += 10;

589 i(
acurs
->
	`put
(&
k_dbt
, &
d_dbt
, 
DB_CURRENT
) != 0)

590 
r
;

593 
k_dbt
.
	`t_da
(&
bnch
);

594 i(
bcurs
->
	`g
(&
k_dbt
, &
d_dbt
, 
DB_SET
) != 0)

595 
r
;

596 
c
.
b
 += 10;

597 i(
bcurs
->
	`put
(&
k_dbt
, &
d_dbt
, 
DB_CURRENT
) != 0)

598 
r
;

601 
k_dbt
.
	`t_da
(&
Δ
);

602 i(
tcurs
->
	`g
(&
k_dbt
, &
d_dbt
, 
DB_SET
) != 0)

603 
r
;

604 
c
.
b
 += 10;

605 i(
tcurs
->
	`put
(&
k_dbt
, &
d_dbt
, 
DB_CURRENT
) != 0)

606 
r
;

609 
d_hidbt
.
	`t_ags
(0);

610 
d_hidbt
.
	`t_da
(&
hc
);

611 
d_hidbt
.
	`t_un
((
hc
));

612 i(
hdb
->
	`put
(
t
, &
k_hidbt
, &
d_hidbt
, 
DB_APPEND
) != 0)

613 
r
;

615 i(
acurs
->
	`o
(!0 || 
bcurs
->o(!0 || 
tcurs
->close() != 0)

616 
r
;

618 
t
 = 
t
->
	`comm
(0);

619 
t
 = 
NULL
;

620 i(
t
 != 0)

621 
r
;

626 
r
:

627 i(
acurs
 !
NULL
)

628 ()
acurs
->
	`o
();

629 i(
bcurs
 !
NULL
)

630 ()
bcurs
->
	`o
();

631 i(
tcurs
 !
NULL
)

632 ()
tcurs
->
	`o
();

633 i(
t
 !
NULL
)

634 ()
t
->
	`abt
();

636 i(
vbo
)

637 
cout
 << "Tni A=" << ()
accou


638 << " B=" << ()
bnch


639 << " T=" << ()
Δ
 << " failed\n";

641 
	}
}

	@../examples_cxx/excxx_repquote/RepConfigInfo.cpp

9 
	~"RCfigInfo.h
"

11 
	gRCfigInfo
::
	$RCfigInfo
()

13 
t_picy
 = 
DB_REP_ELECTION
;

14 
home
 = "TESTDIR";

15 
g_li_addss
 = 
l
;

16 
tٮses
 = 0;

17 
iܙy
 = 100;

18 
vbo
 = 
l
;

19 
h_hos
 = 
NULL
;

20 
	}
}

22 
	gRCfigInfo
::~
	$RCfigInfo
()

25 i(
h_hos
 !
NULL
) {

26 
REP_HOST_INFO
 *
CurIm
 = 
h_hos
;

27 
CurIm
->
xt
 !
NULL
)

29 
REP_HOST_INFO
 *
TmpIm
 = 
CurIm
;

30 
	`
(
CurIm
);

31 
CurIm
 = 
TmpIm
;

33 
	`
(
CurIm
);

35 
h_hos
 = 
NULL
;

36 
	}
}

38 
	gRCfigInfo
::
	$addOthHo
(* 
ho
, 
pt
, 
bo
 

)

40 
REP_HOST_INFO
 *
wfo
;

41 
wfo
 = (
REP_HOST_INFO
*)
	`mloc
((REP_HOST_INFO));

42 
wfo
->
ho
 = host;

43 
wfo
->
pt
 =ort;

44 
wfo
->

 =eer;

45 i(
h_hos
 =
NULL
) {

46 
h_hos
 = 
wfo
;

47 
wfo
->
xt
 = 
NULL
;

49 
wfo
->
xt
 = 
h_hos
;

50 
h_hos
 = 
wfo
;

52 
	}
}

	@../examples_cxx/excxx_repquote/RepQuoteExample.cpp

31 
	~<ioam
>

33 
	~<db_cxx.h
>

34 
	~"RCfigInfo.h
"

36 
usg
 
	gd
::
cout
;

37 
usg
 
	gd
::
c
;

38 
usg
 
	gd
::

;

39 
usg
 
	gd
::
dl
;

40 
usg
 
	gd
::
ush
;

42 
	#CACHESIZE
 (10 * 1024 * 1024)

	)

43 
	#DATABASE
 "que.db"

	)

44 
	#SLEEPTIME
 3

	)

46 cڡ *
	gogme
 = "excxx_repquote";

48 
	~<o.h
>

49 #ifde
_WIN32


50 
	#WIN32_LEAN_AND_MEAN


	)

51 
	~<wdows.h
>

52 
	#p
(
s

	`S˕
(1000 * (s))

	)

55 

gt
(, * const *, const *);

56 
*
ݏrg
;

59 
	~<o.h
>

64 
	mis_ma
;

65 } 
	tAPP_DATA
;

67 as
	cRQueExame


69 
	mpublic
:

70 
RQueExame
();

71 

(
RCfigInfo
* 
cfig
);

72 
do
();

73 
rme
();

75 
evt_back
(
DbEnv
 * 
dbv
, 
u_t32_t
 
which
, *
fo
);

77 
	mive
:

79 
RQueExame
(const RepQuoteExample &);

80 
	mݔ
 = (cڡ 
RQueExame
 &);

83 
APP_DATA
 
	mp_da
;

84 
RCfigInfo
 *
	mp_cfig
;

85 
DbEnv
 
	mcur_v
;

88 
t_ocks
(
Db
 *
dbp
);

91 
	$uge
()

93 

 << "uge: " << 
ogme
 << 
dl


95 << "[-nses][-iܙy]" << 
dl
;

97 

 << "\-m ho:p܈equed; m sndf me)" << 
dl


99 << "numb othe may becifd)" << 
dl


100 << "\-h homdey" << 
dl


102 << "group; deuɠt0" << 
dl


104 << "numb ose" << 
dl


105 << "\thiti group)" << 
dl


106 << "\-iܙy (tiڮ: deuɠt100)" << 
dl
;

108 
	`ex
(
EXIT_FAILURE
);

109 
	}
}

111 
	$ma
(
gc
, **
gv
)

113 
RCfigInfo
 
cfig
;

114 
ch
, *
ptr
, *
tmpho
;

115 
tmt
;

116 
bo
 
tmr
;

117 
t
;

120 (
ch
 = 
	`gt
(
gc
, 
gv
, "Cf:h:Mm:n:o:p:v")!
EOF
) {

121 
tmr
 = 
l
;

122 
ch
) {

124 
cfig
.
t_picy
 = 
DB_REP_CLIENT
;

127 
cfig
.
home
 = 
ݏrg
;

130 
cfig
.
t_picy
 = 
DB_REP_MASTER
;

133 
cfig
.
this_ho
.
ho
 = 
	`ok
(
ݏrg
, ":");

134 i((
ptr
 = 
	`ok
(
NULL
, ":")) == NULL) {

135 

 << "Bad ho scifiti." << 
dl
;

136 
	`uge
();

138 
cfig
.
this_ho
.
pt
 = ()
	`oi
(
ptr
);

139 
cfig
.
g_li_addss
 = 
ue
;

142 
cfig
.
tٮses
 = 
	`oi
(
ݏrg
);

145 
tmr
 = 
ue
;

147 
tmpho
 = 
	`ok
(
ݏrg
, ":");

148 i((
ptr
 = 
	`ok
(
NULL
, ":")) == NULL) {

149 

 << "Bad ho scifiti." << 
dl
;

150 
	`uge
();

152 
tmt
 = ()
	`oi
(
ptr
);

154 
cfig
.
	`addOthHo
(
tmpho
, 
tmt
, 
tmr
);

158 
cfig
.
iܙy
 = 
	`oi
(
ݏrg
);

161 
cfig
.
vbo
 = 
ue
;

165 
	`uge
();

170 i((!
cfig
.
g_li_addss
|| cfig.
home
 =
NULL
)

171 
	`uge
();

173 
RQueExame
 
ru”
;

174 
y
 {

175 if((
t
 = 
ru”
.
	`
(&
cfig
)) != 0)

176 
r
;

177 if((
t
 = 
ru”
.
	`do
()) != 0)

178 
r
;

179 } 
	`tch
 (
DbExi
 
dbe
) {

180 

 << "Caughtnxception during initialization or"

181 << "rossg: " << 
dbe
.
	`wh
(<< 
dl
;

183 
r
:

184 
ru”
.
	`rme
();

186 
	}
}

188 
	gRQueExame
::
	$RQueExame
(: 
	`p_cfig
(0), 
	$cur_v
(0)

190 
p_da
.
is_ma
 = 0;

191 
	}
}

193 
	gRQueExame
::
	$
(
RCfigInfo
 *
cfig
)

195 
t
 = 0;

197 
p_cfig
 = 
cfig
;

199 
cur_v
.
	`t_p_ive
(&
p_da
);

200 
cur_v
.
	`t_rfe
(
dr
);

201 
cur_v
.
	`t_fx
(
ogme
);

202 
cur_v
.
	`t_evt_nify
(
evt_back
);

203 
cur_v
.
	`pmgr_t_ack_picy
(
DB_REPMGR_ACKS_ALL
);

205 i((
t
 = 
cur_v
.
	`pmgr_t_lol_se
(
p_cfig
->
this_ho
.
ho
,

206 
p_cfig
->
this_ho
.
pt
, 0)) != 0) {

208 

 << "Couldot setistenddresso host:port "

209 << 
p_cfig
->
this_ho
.
ho
 << ":"

210 << 
p_cfig
->
this_ho
.
pt


211 << "r: " << 
t
 << 
dl
;

212 

 << "WARNING: Thishould havbxi." << 
dl
;

215  
REP_HOST_INFO
 *
cur
 = 
p_cfig
->
h_hos
; cu!
NULL
;

216 
cur
 = cur->
xt
) {

217 i((
t
 = 
cur_v
.
	`pmgr_add_me_se
(
cur
->
ho
, cur->
pt
,

218 
NULL
, 
cur
->

 ? 
DB_REPMGR_PEER
 : 0)) != 0) {

220 

 << "couldهdd se." << 
dl


221 << "WARNING: Thishould havbxi." << 
dl
;

225 i(
p_cfig
->
tٮses
 > 0) {

226 
y
 {

227 i((
t
 = 
cur_v
.
	`p_t_nses
(
p_cfig
->
tٮses
)) != 0)

228 
cur_v
.
	`r
(
t
, "set_nsites");

229 } 
	`tch
 (
DbExi
 
dbe
) {

230 

 << "p_t_nse faed. Ctug." << 
dl
;

235 
cur_v
.
	`p_t_iܙy
(
p_cfig
->
iܙy
);

242 
cur_v
.
	`t_chesize
(0, 
CACHESIZE
, 0);

243 
cur_v
.
	`t_ags
(
DB_TXN_NOSYNC
, 1);

245 
y
 {

246 
cur_v
.
	`ݒ
(
p_cfig
->
home
, 
DB_CREATE
 | 
DB_RECOVER
 |

247 
DB_THREAD
 | 
DB_INIT_REP
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 |

248 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
, 0);

249 } 
	`tch
(
DbExi
 
dbe
) {

250 

 << "Caughxi durg DBnvmݒ." << 
dl


252 << "hiti." << 
dl
;

253 
t
 = 
ENOENT
;

254 
r
;

256 i(
p_cfig
->
vbo
 &&

257 (
t
 = 
cur_v
.
	`t_vbo
(
DB_VERB_REPLICATION
, 1)) != 0)

258 
r
;

260 i((
t
 = 
cur_v
.
	`pmgr_t
(3, 
p_cfig
->
t_picy
)) != 0)

261 
r
;

263 
r
:

264  
t
;

265 
	}
}

267 
	gRQueExame
::
	$rme
()

269 
y
 {

270 
cur_v
.
	`o
(0);

271 } 
	`tch
 (
DbExi
 
dbe
) {

272 
cout
 << "r closgnvmt: " << 
dbe
.
	`wh
(<< 
dl
;

275 
	}
}

277 
	#BUFSIZE
 1024

	)

278 
	gRQueExame
::
	$do
()

280 
Db
 *
dbp
;

281 
Dbt
 
key
, 
da
;

282 
buf
[
BUFSIZE
], *
rbuf
;

283 
t
, 
was_ma
;

285 
dbp
 = 
NULL
;

286 
	`memt
(&
key
, 0, (key));

287 
	`memt
(&
da
, 0, (data));

288 
t
 = 
was_ma
 = 0;

291 i(
dbp
 =
NULL
) {

292 
dbp
 = 
w
 
	`Db
(&
cur_v
, 0);

295 i((
t
 = 
dbp
->
	`t_gesize
(512)) != 0)

296 
r
;

298 
y
 {

299 
dbp
->
	`ݒ
(
NULL
, 
DATABASE
, NULL, 
DB_BTREE
,

300 
p_da
.
is_ma
 ? 
DB_CREATE
 | 
DB_AUTO_COMMIT
 :

301 
DB_AUTO_COMMIT
, 0);

302 } 
	`tch
(
DbExi
 
dbe
) {

308 i(
dbe
.
	`g_o
(=
ENOENT
) {

309 
cout
 << "Nءock dbvaab y -ryg." << 
dl
;

310 
y
 {

311 
dbp
->
	`o
(0);

312 } 
	`tch
 (
DbExi
 
dbe2
) {

313 
cout
 << "Unexpectedrror closingfter failed" <<

314 " on, mesge: " << 
dbe2
.
	`wh
(<< 
dl
;

315 
dbp
 = 
NULL
;

316 
r
;

318 
dbp
 = 
NULL
;

319 
	`p
(
SLEEPTIME
);

322 
cur_v
.
	`r
(
t
, "DB->open");

323 
throw
 
dbe
;

328 
cout
 << "QUOTESERVER" ;

329 i(!
p_da
.
is_ma
)

330 
cout
 << "(read-only)";

331 
cout
 << "> " << 
ush
;

333 i(
	`fgs
(
buf
, (buf), 
d
=
NULL
)

335 i(
	`ok
(&
buf
[0], " \t\n"=
NULL
) {

336 (
t
 = 
	`t_ocks
(
dbp
))) {

339 
DB_REP_HANDLE_DEAD
:

340 ()
dbp
->
	`o
(
DB_NOSYNC
);

341 
dbp
 = 
NULL
;

343 
dbp
->
	`r
(
t
, "Errorraversing data");

344 
r
;

347 
rbuf
 = 
	`ok
(
NULL
, " \t\n");

348 i(
rbuf
 =
NULL
 ||buf[0] == '\0') {

349 i(
	`cmp
(
buf
, "exit", 4) == 0 ||

350 
	`cmp
(
buf
, "quit", 4) == 0)

352 
cur_v
.
	`rx
("Format: TICKER VALUE");

356 i(!
p_da
.
is_ma
) {

357 
cur_v
.
	`rx
("Can't updatet client");

361 
key
.
	`t_da
(
buf
);

362 
key
.
	`t_size
((
u_t32_t
)
	`
(
buf
));

364 
da
.
	`t_da
(
rbuf
);

365 
da
.
	`t_size
((
u_t32_t
)
	`
(
rbuf
));

367 i((
t
 = 
dbp
->
	`put
(
NULL
, &
key
, &
da
, 
DB_AUTO_COMMIT
)) != 0)

369 
dbp
->
	`r
(
t
, "DB->put");

370 i(
t
 !
DB_KEYEXIST
)

371 
r
;

375 
r
: i(
dbp
 !
NULL
)

376 ()
dbp
->
	`o
(
DB_NOSYNC
);

378  (
t
);

379 
	}
}

381 
	gRQueExame
::
	$evt_back
(
DbEnv
* 
dbv
, 
u_t32_t
 
which
, *
fo
)

383 
APP_DATA
 *
p
 = (APP_DATA*)
dbv
->
	`g_p_ive
();

385 
fo
 = 
NULL
;

387 
which
) {

388 
DB_EVENT_REP_MASTER
:

389 
p
->
is_ma
 = 1;

392 
DB_EVENT_REP_CLIENT
:

393 
p
->
is_ma
 = 0;

396 
DB_EVENT_REP_STARTUPDONE
:

397 
DB_EVENT_REP_NEWMASTER
:

398 
DB_EVENT_REP_PERM_FAILED
:

403 
dbv
->
	`rx
("ignܚgv%d", 
which
);

405 
	}
}

407 
	gRQueExame
::
	$t_ocks
(
Db
 *
dbp
)

409 
Dbc
 *
dbc
;

410 
Dbt
 
key
, 
da
;

411 
	#MAXKEYSIZE
 10

	)

412 
	#MAXDATASIZE
 20

	)

413 
keybuf
[
MAXKEYSIZE
 + 1], 
dabuf
[
MAXDATASIZE
 + 1];

414 
t
, 
t_t
;

415 
u_t32_t
 
keysize
, 
dasize
;

417 i((
t
 = 
dbp
->
	`curs
(
NULL
, &
dbc
, 0)) != 0) {

418 
dbp
->
	`r
(
t
, "can't open cursor");

419  (
t
);

422 
	`memt
(&
key
, 0, (key));

423 
	`memt
(&
da
, 0, (data));

425 
cout
 << "\tSymb\tPri" << 
dl


426 << "\t======\t=====" << 
dl
;

428 
t
 = 
dbc
->
	`g
(&
key
, &
da
, 
DB_FIRST
);

429 
t
 == 0;

430 
t
 = 
dbc
->
	`g
(&
key
, &
da
, 
DB_NEXT
)) {

431 
keysize
 = 
key
.
	`g_size
(> 
MAXKEYSIZE
 ? MAXKEYSIZE : key.get_size();

432 
	`memy
(
keybuf
, 
key
.
	`g_da
(), 
keysize
);

433 
keybuf
[
keysize
] = '\0';

435 
dasize
 = 
da
.
	`g_size
() >=

436 
MAXDATASIZE
 ? MAXDATASIZE : 
da
.
	`g_size
();

437 
	`memy
(
dabuf
, 
da
.
	`g_da
(), 
dasize
);

438 
dabuf
[
dasize
] = '\0';

440 
cout
 << "\t" << 
keybuf
 << "\t" << 
dabuf
 << 
dl
;

442 
cout
 << 
dl
 << 
ush
;

444 i((
t_t
 = 
dbc
->
	`o
()!0 && 
t
 == 0)

445 
t
 = 
t_t
;

447 
t
) {

449 
DB_NOTFOUND
:

450 
DB_LOCK_DEADLOCK
:

453  (
t
);

455 
	}
}

	@../examples_cxx/getting_started/MyDb.cpp

1 
	~"MyDb.h
"

7 
	gMyDb
::
MyDb
(
d
::
rg
 &
th
, std::rg &
dbName
,

8 
bo
 
isSecdy
)

9 : 
db_
(
NULL
, 0),

10 
dbFeName_
(
th
 + 
dbName
),

11 
	$cFgs_
(
DB_CREATE
)

14 
y


17 
db_
.
	`t_r_am
(&
d
::

);

21 i(
isSecdy
)

22 
db_
.
	`t_ags
(
DB_DUPSORT
);

25 
db_
.
	`ݒ
(
NULL
, 
dbFeName_
.
	`c_r
(), NULL, 
DB_BTREE
, 
cFgs_
, 0);

29 
	`tch
(
DbExi
 &
e
)

31 
d
::

 << "E ong daba: " << 
dbFeName_
 << "\n";

32 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

34 
	`tch
(
d
::
exi
 &
e
)

36 
d
::

 << "E ong daba: " << 
dbFeName_
 << "\n";

37 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

39 
	}
}

44 
	gMyDb
::
	$o
()

47 
y


49 
db_
.
	`o
(0);

50 
d
::
cout
 << "Daba " << 
dbFeName_


51 << " iod." << 
d
::
dl
;

53 
	`tch
(
DbExi
 &
e
)

55 
d
::

 << "E closg daba: " << 
dbFeName_
 << "\n";

56 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

58 
	`tch
(
d
::
exi
 &
e
)

60 
d
::

 << "E closg daba: " << 
dbFeName_
 << "\n";

61 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

63 
	}
}

	@../examples_cxx/getting_started/excxx_example_database_load.cpp

2 
	~<ioam
>

3 
	~<fam
>

4 
	~<cdlib
>

6 
	~"MyDb.h
"

7 
	~"gtgSedComm.h
"

9 #ifde
_WIN32


11 

gt
(, * const *, const *);

12 
*
ݏrg
;

15 
	~<unid.h
>

19 
ldInvtyDB
(
MyDb
 &, 
d
::
rg
 &);

20 
ldVdDB
(
MyDb
 &, 
d
::
rg
 &);

22 
usg
 
mea
 
	gd
;

25 
	$uge
()

27 
d
::
cout
 << "example_database_load [-b <patho data files>]"

28 << " [-h <daba homdey>]" << 
d
::
dl
;

30 
d
::
cout
 << "Note: If -b -h is specified,henheath mustnd"

32 << 
d
::
dl
;

34 
	}
}

39 
	$ma
 (
gc
, *
gv
[])

42 
ch
, 
ϡCh
;

45 
d
::
rg
 
	`bame
("./");

46 
d
::
rg
 
	`dabaHome
("./");

49 
d
::
rg
 
	`vDbName
("vendordb.db");

50 
d
::
rg
 
	`iDbName
("inventorydb.db");

51 
d
::
rg
 
	`emSDbName
("itemname.sdb");

54 (
ch
 = 
	`gt
(
gc
, 
gv
, "b:h:")!
EOF
)

55 
ch
) {

57 
dabaHome
 = 
ݏrg
;

58 
ϡCh
 = 
dabaHome
[dabaHome.
	`size
() -1];

59 i(
ϡCh
 != '/' &&astChar != '\\')

60  (
	`uge
());

63 
bame
 = 
ݏrg
;

64 
ϡCh
 = 
bame
[bame.
	`size
() -1];

65 i(
ϡCh
 != '/' &&astChar != '\\')

66  (
	`uge
());

70  (
	`uge
());

76 
d
::
rg
 
vtyFe
 = 
bame
 + "inventory.txt";

77 
d
::
rg
 
vdFe
 = 
bame
 + "vendors.txt";

79 
y


82 
MyDb
 
	`vtyDB
(
dabaHome
, 
iDbName
);

83 
MyDb
 
	`vdDB
(
dabaHome
, 
vDbName
);

84 
MyDb
 
	`emmeSDB
(
dabaHome
, 
emSDbName
, 
ue
);

87 
vtyDB
.
	`gDb
().
	`assoc
(
NULL
,

88 &(
emmeSDB
.
	`gDb
()),

89 
g_em_me
,

93 
	`ldInvtyDB
(
vtyDB
, 
vtyFe
);

96 
	`ldVdDB
(
vdDB
, 
vdFe
);

97 } 
	`tch
(
DbExi
 &
e
) {

98 
d
::

 << "E܆dg dabas. " << std::
dl
;

99 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

100  (
e
.
	`g_o
());

101 } 
	`tch
(
d
::
exi
 &
e
) {

102 
d
::

 << "E܆dg dabas. " << std::
dl
;

103 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

110 
	}
}

114 
size_t


115 
gNextPound
(
d
::
rg
 &
theSg
, std::rg &
subrg
)

117 
size_t
 
pos
 = 
theSg
.
fd
("#");

118 
	gsubrg
.
assign
(
theSg
, 0, 
pos
);

119 
	gtheSg
.
assign
(
theSg
, 
pos
 + 1,heSg.
size
());

120  (
	gpos
);

125 
ldInvtyDB
(
MyDb
 &
vtyDB
, 
d
::
rg
 &
vtyFe
)

127 
InvtyDa
 
vtyDa
;

128 
	gd
::
rg
 
subrg
;

129 
size_t
 
	gxtPound
;

131 
	gd
::
ifam
 
Fe
(
vtyFe
.
c_r
(), 
d
::
ios
::

);

132 i!
	gFe
 )

134 
	gd
::

 << "Could of'" << 
vtyFe


135 << "'. Givg up." << 
d
::
dl
;

136 
throw
 
	gd
::
exi
();

139 !
	gFe
.
eof
())

141 
	gvtyDa
.
r
();

142 
	gd
::
rg
 
rgBuf
;

143 
	gd
::
gle
(
Fe
, 
rgBuf
);

146 i(!
	grgBuf
.
emy
())

148 
	gxtPound
 = 
gNextPound
(
rgBuf
, 
subrg
);

149 
	gvtyDa
.
tName
(
subrg
);

151 
	gxtPound
 = 
gNextPound
(
rgBuf
, 
subrg
);

152 
	gvtyDa
.
tSKU
(
subrg
);

154 
	gxtPound
 = 
gNextPound
(
rgBuf
, 
subrg
);

155 
	gvtyDa
.
tPri
(
od
(
subrg
.
c_r
(), 0));

157 
	gxtPound
 = 
gNextPound
(
rgBuf
, 
subrg
);

158 
	gvtyDa
.
tQuty
(

(
subrg
.
c_r
(), 0, 10));

160 
	gxtPound
 = 
gNextPound
(
rgBuf
, 
subrg
);

161 
	gvtyDa
.
tCegy
(
subrg
);

163 
	gxtPound
 = 
gNextPound
(
rgBuf
, 
subrg
);

164 
	gvtyDa
.
tVd
(
subrg
);

166 *
	gbuff
 = (*)
vtyDa
.
gSKU
().
c_r
();

167 
size_t
 
	gsize
 = 
vtyDa
.
gSKU
().
size
()+1;

168 
Dbt
 
key
(
buff
, (
u_t32_t
)
size
);

170 
	gbuff
 = 
vtyDa
.
gBufr
();

171 
	gsize
 = 
vtyDa
.
gBufrSize
();

172 
Dbt
 
da
(
buff
, (
u_t32_t
)
size
);

174 
	gvtyDB
.
gDb
().
put
(
NULL
, &
key
, &
da
, 0);

179 
	gFe
.
o
();

185 
ldVdDB
(
MyDb
 &
vdDB
, 
d
::
rg
 &
vdFe
)

187 
d
::
ifam
 
Fe
(
vdFe
.
c_r
(), std::
ios
::

);

188 i!
	gFe
 )

190 
	gd
::

 << "Could of'" << 
vdFe


191 << "'. Givg up." << 
d
::
dl
;

192 
throw
 
	gd
::
exi
();

195 
VENDOR
 
	gmy_vd
;

196 !
	gFe
.
eof
())

198 
	gd
::
rg
 
rgBuf
;

199 
	gd
::
gle
(
Fe
, 
rgBuf
);

200 
memt
(&
my_vd
, 0, (
VENDOR
));

206 
ssnf
(
rgBuf
.
c_r
(),

208 
my_vd
.
me
, my_vd.

,

209 
my_vd
.
cy
, my_vd.
e
,

210 
my_vd
.
zcode
, my_vd.
phe_numb
,

211 
my_vd
.
s_p
, my_vd.
s_p_phe
);

213 
Dbt
 
key
(
my_vd
.
me
, (
u_t32_t
)

(my_vendor.name) + 1);

214 
Dbt
 
da
(&
my_vd
, (
VENDOR
));

216 
	gvdDB
.
gDb
().
put
(
NULL
, &
key
, &
da
, 0);

219 
	gFe
.
o
();

	@../examples_cxx/getting_started/excxx_example_database_read.cpp

3 
	~<ioam
>

4 
	~<fam
>

5 
	~<cdlib
>

7 
	~"MyDb.h
"

8 
	~"gtgSedComm.h
"

10 #ifde
_WIN32


12 

gt
(, * const *, const *);

13 
*
ݏrg
;

16 
	~<unid.h
>

20 
show_em
(
MyDb
 &
emmeSDB
, MyDb &
vdDB
, 
d
::
rg
 &
emName
);

21 
show_l_cds
(
MyDb
 &
vtyDB
, MyDb &
vdDB
);

22 
show_vd
(
MyDb
 &
vdDB
, cڡ *
vd
);

25 
	$uge
()

27 
d
::
cout
 << "example_database_read [-i <patho data files>]"

28 << " [-h <daba homdey>]" << 
d
::
dl
;

30 
d
::
cout
 << "Note: Anyath specifiedohe -harameter mustnd"

32 << 
d
::
dl
;

34 
	}
}

37 
	$ma
 (
gc
, *
gv
[])

40 
ch
, 
ϡCh
;

43 
d
::
rg
 
	`dabaHome
("./");

44 
d
::
rg
 
emName
;

47 
d
::
rg
 
	`vDbName
("vendordb.db");

48 
d
::
rg
 
	`iDbName
("inventorydb.db");

49 
d
::
rg
 
	`emSDbName
("itemname.sdb");

52 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:i:")!
EOF
)

53 
ch
) {

55 
dabaHome
 = 
ݏrg
;

56 
ϡCh
 = 
dabaHome
[dabaHome.
	`size
() -1];

57 i(
ϡCh
 != '/' &&astChar != '\\')

58  (
	`uge
());

61 
emName
 = 
ݏrg
;

65  (
	`uge
());

69 
y


72 
MyDb
 
	`vtyDB
(
dabaHome
, 
iDbName
);

73 
MyDb
 
	`vdDB
(
dabaHome
, 
vDbName
);

74 
MyDb
 
	`emmeSDB
(
dabaHome
, 
emSDbName
, 
ue
);

77 
vtyDB
.
	`gDb
().
	`assoc
(
NULL
,

78 &(
emmeSDB
.
	`gDb
()),

79 
g_em_me
,

82 i(
emName
.
	`emy
())

84 
	`show_l_cds
(
vtyDB
, 
vdDB
);

86 
	`show_em
(
emmeSDB
, 
vdDB
, 
emName
);

88 } 
	`tch
(
DbExi
 &
e
) {

89 
d
::

 << "E܄dg dabas. " << std::
dl
;

90  (
e
.
	`g_o
());

91 } 
	`tch
(
d
::
exi
 &
e
) {

92 
d
::

 << "E܄dg dabas. " << std::
dl
;

93 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

98 
	}
}

104 
show_em
(
MyDb
 &
emmeSDB
, MyDb &
vdDB
, 
d
::
rg
 &
emName
)

108 
Dbc
 *
cursp
;

110 
	gy
 {

111 
	gemmeSDB
.
gDb
().
curs
(
NULL
, &
cursp
, 0);

115 
	gd
::
cout
 << "Lookg f " << 
emName
 << 
d
::
dl
;

116 
Dbt
 
key
((*)
emName
.
c_r
(), (
u_t32_t
)emName.
ngth
() + 1);

117 
Dbt
 
	gda
;

121 
	gt
 = 
cursp
->
g
(&
key
, &
da
, 
DB_SET
);

122 i(!
	gt
) {

124 
InvtyDa
 
vtyIm
(
da
.
g_da
());

125 
	gvtyIm
.
show
();

127 
show_vd
(
vdDB
, 
vtyIm
.
gVd
().
c_r
());

129 } 
	gcursp
->
g
(&
key
, &
da
, 
DB_NEXT_DUP
) == 0);

131 
	gd
::

 << "Nػcdfound f '" << 
emName


132 << "'" << 
d
::
dl
;

134 } 
tch
(
DbExi
 &
e
) {

135 
	gemmeSDB
.
gDb
().
r
(
e
.
g_o
(), "Error in show_item");

136 
	gcursp
->
o
();

137 
throw
 
	ge
;

138 } 
tch
(
d
::
exi
 &
e
) {

139 
emmeSDB
.
gDb
().
rx
("E ishow_em: %s", 
e
.
wh
());

140 
	gcursp
->
o
();

141 
throw
 
	ge
;

144 
	gcursp
->
o
();

152 
	$show_l_cds
(
MyDb
 &
vtyDB
, MyDb &
vdDB
)

156 
Dbc
 *
cursp
;

157 
y
 {

158 
vtyDB
.
	`gDb
().
	`curs
(
NULL
, &
cursp
, 0);

162 
Dbt
 
key
, 
da
;

163 
t
;

164 (
t
 = 
cursp
->
	`g
(&
key
, &
da
, 
DB_NEXT
)) == 0 )

166 
InvtyDa
 
	`vtyIm
(
da
.
	`g_da
());

167 
vtyIm
.
	`show
();

169 
	`show_vd
(
vdDB
, 
vtyIm
.
	`gVd
().
	`c_r
());

171 } 
	`tch
(
DbExi
 &
e
) {

172 
vtyDB
.
	`gDb
().
	`r
(
e
.
	`g_o
(), "Error in show_all_records");

173 
cursp
->
	`o
();

174 
throw
 
e
;

175 } 
	`tch
(
d
::
exi
 &
e
) {

176 
cursp
->
	`o
();

177 
throw
 
e
;

180 
cursp
->
	`o
();

182 
	}
}

189 
	$show_vd
(
MyDb
 &
vdDB
, cڡ *
vd
)

191 
Dbt
 
da
;

192 
VENDOR
 
my_vd
;

194 
y
 {

198 
Dbt
 
	`key
((*)
vd
, (
u_t32_t
)
	`
(vendor) + 1);

205 
da
.
	`t_da
(&
my_vd
);

206 
da
.
	`t_un
((
VENDOR
));

207 
da
.
	`t_ags
(
DB_DBT_USERMEM
);

210 
vdDB
.
	`gDb
().
	`g
(
NULL
, &
key
, &
da
, 0);

211 
d
::
cout
 << " " << 
my_vd
.

 << "\n"

212 << " " << 
my_vd
.
cy
 << ", "

213 << 
my_vd
.
e
 << "\n"

214 << " " << 
my_vd
.
zcode
 << "\n"

215 << " " << 
my_vd
.
phe_numb
 << "\n"

216 << " Cڏ: " << 
my_vd
.
s_p
 << "\n"

217 << " " << 
my_vd
.
s_p_phe


218 << 
d
::
dl
;

220 } 
	`tch
(
DbExi
 &
e
) {

221 
vdDB
.
	`gDb
().
	`r
(
e
.
	`g_o
(), "Error in show_vendor");

222 
throw
 
e
;

223 } 
	`tch
(
d
::
exi
 &
e
) {

224 
throw
 
e
;

227 
	}
}

	@../examples_cxx/txn_guide/TxnGuide.cpp

3 
	~<ioam
>

4 
	~<db_cxx.h
>

6 #ifde
_WIN32


7 
	~<wdows.h
>

9 

gt
(, * const *, const *);

10 
*
ݏrg
;

12 
	#PATHD
 '\\'

	)

14 
HANDLE
 
	tthad_t
;

15 
	#thad_
(
th
, 

, 
func
, 
g
) \

16 (((*(
th

	`CeThad
(
NULL
, 0, \

17 (
LPTHREAD_START_ROUTINE
)(
func
), (
g
), 0, 
NULL
)=NULL? -1 : 0)

	)

18 
	#thad_jo
(
thr
, 
u
) \

19 ((
	`WaFSgObje
((
thr
), 
INFINITE
=
WAIT_OBJECT_0
) && \

20 
	`GExCodeThad
((
thr
), (
LPDWORD
)(
u
)? 0 : -1)

	)

22 
HANDLE
 
	tmux_t
;

23 
	#mux_
(
m
, 

) \

24 (((*(
m

	`CeMux
(
NULL
, 
FALSE
, NULL)!NULL? 0 : -1)

	)

25 
	#mux_lock
(
m
) \

26 ((
	`WaFSgObje
(*(
m
), 
INFINITE
=
WAIT_OBJECT_0
? 0 : -1)

	)

27 
	#mux_uock
(
m
(
	`RMux
(*(m)? 0 : -1)

	)

29 
	~<had.h
>

30 
	~<unid.h
>

31 
	#PATHD
 '/'

	)

33 
had_t
 
	tthad_t
;

34 
	#thad_
(
th
, 

, 
func
, 
g
) \

35 
	`had_
((
th
), (

), (
func
), (
g
))

	)

36 
	#thad_jo
(
thr
, 
u

	`had_jo
(hr), (u))

	)

38 
had_mux_t
 
	tmux_t
;

39 
	#mux_
(
m
, 


	`had_mux_
((m), ())

	)

40 
	#mux_lock
(
m

	`had_mux_lock
(m)

	)

41 
	#mux_uock
(
m

	`had_mux_uock
(m)

	)

45 
	#NUMWRITERS
 5

	)

49 
	gglob_thad_num
;

50 
mux_t
 
	gthad_num_lock
;

53 
couRecds
(
Db
 *, 
DbTxn
 *);

54 
ݒDb
(
Db
 **, cڡ *, cڡ *, 
DbEnv
 *, 
u_t32_t
);

55 
uge
();

56 *
wrThad
(*);

60 
	$uge
()

62 
d
::

 << " [-h <daba_home_dey>]" << std::
dl
;

63  (
EXIT_FAILURE
);

64 
	}
}

67 
	$ma
(
gc
, *
gv
[])

70 
Db
 *
dbp
 = 
NULL
;

71 
DbEnv
 *
vp
 = 
NULL
;

73 
thad_t
 
wrThads
[
NUMWRITERS
];

74 
ch
, 
i
;

75 
u_t32_t
 
vFgs
;

76 *
dbHomeD
;

77 
*
ݏrg
;

80 cڡ *
ogName
 = "TxnGuide";

83 cڡ *
feName
 = "mydb.db";

86 #ifde
_WIN32


87 
dbHomeD
 = ".\\";

89 
dbHomeD
 = "./";

91 (
ch
 = 
	`gt
(
gc
, 
gv
, "h:")!
EOF
)

92 
ch
) {

94 
dbHomeD
 = 
ݏrg
;

98  (
	`uge
());

103 
vFgs
 =

104 
DB_CREATE
 |

105 
DB_RECOVER
 |

106 
DB_INIT_LOCK
 |

107 
DB_INIT_LOG
 |

108 
DB_INIT_TXN
 |

110 
DB_INIT_MPOOL
 |

111 
DB_THREAD
;

113 
y
 {

115 
vp
 = 
w
 
	`DbEnv
(0);

121 
vp
->
	`t_lk_de
(
DB_LOCK_MINWRITE
);

123 
vp
->
	`ݒ
(
dbHomeD
, 
vFgs
, 0);

132 
	`ݒDb
(&
dbp
, 
ogName
, 
feName
,

133 
vp
, 
DB_DUPSORT
);

136 ()
	`mux_
(&
thad_num_lock
, 
NULL
);

139 
i
 = 0; i < 
NUMWRITERS
; i++)

140 ()
	`thad_
(

141 &
wrThads
[
i
], 
NULL
,

142 
wrThad
, (*)
dbp
);

145 
i
 = 0; i < 
NUMWRITERS
; i++)

146 ()
	`thad_jo
(
wrThads
[
i
], 
NULL
);

148 } 
	`tch
(
DbExi
 &
e
) {

149 
d
::

 << "Error opening databasenvironment: "

150 << 
dbHomeD
 << 
d
::
dl
;

151 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

152  (
EXIT_FAILURE
);

155 
y
 {

157 i(
dbp
 !
NULL
)

158 
dbp
->
	`o
(0);

161 i(
vp
 !
NULL
)

162 
vp
->
	`o
(0);

163 } 
	`tch
(
DbExi
 &
e
) {

164 
d
::

 << "Error closing databasendnvironment."

165 << 
d
::
dl
;

166 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

167  (
EXIT_FAILURE
);

172 
d
::
cout
 << "I'm de." << std::
dl
;

173  (
EXIT_SUCCESS
);

174 
	}
}

182 
	$wrThad
(*
gs
)

184 
j
, 
thad_num
;

185 
max_s
 = 20;

186 *
key_rgs
[] = {"key 1", "key 2", "key 3", "key 4",

190 
Db
 *
dbp
 = (Db *)
gs
;

191 
DbEnv
 *
vp
 = 
dbp
->
	`g_v
();

194 ()
	`mux_lock
(&
thad_num_lock
);

195 
glob_thad_num
++;

196 
thad_num
 = 
glob_thad_num
;

197 ()
	`mux_uock
(&
thad_num_lock
);

200 
	`d
(
thad_num
);

203 
i
=0; i<50; i++) {

204 
DbTxn
 *
txn
;

205 
bo
 
y
 = 
ue
;

206 
y_cou
 = 0;

208 
y
) {

211 
y
 {

225 
txn
 = 
NULL
;

226 
vp
->
	`txn_beg
(
NULL
, &
txn
, 0);

229 
j
 = 0; j < 10; j++) {

230 
Dbt
 
key
, 
vue
;

231 
key
.
	`t_da
(
key_rgs
[
j
]);

232 
key
.
	`t_size
((
u_t32_t
)
	`
(
key_rgs
[
j
]) + 1);

234 
yld
 = 
	`nd
(+ 
i
;

235 
vue
.
	`t_da
(&
yld
);

236 
vue
.
	`t_size
(());

239 
dbp
->
	`put
(
txn
, &
key
, &
vue
, 0);

244 
d
::
cout
 << 
thad_num
 << " : Found "

245 << 
	`couRecds
(
dbp
, 
NULL
)

246 << "ecdhdaba." << 
d
::
dl
;

248 
d
::
cout
 << 
thad_num
 << " : commtgx: " << 
i


249 << 
d
::
dl
;

252 
y
 {

253 
txn
->
	`comm
(0);

254 
y
 = 
l
;

255 
txn
 = 
NULL
;

256 } 
	`tch
 (
DbExi
 &
e
) {

257 
d
::
cout
 << "Error onxn commit: "

258 << 
e
.
	`wh
(<< 
d
::
dl
;

260 } 
	`tch
 (
DbDdlockExi
 &) {

262 i(
txn
 !
NULL
)

263 ()
txn
->
	`abt
();

268 i(
y_cou
 < 
max_s
) {

269 
d
::
cout
 << "############### Wr " << 
thad_num


272 << 
d
::
dl
;

273 
y_cou
++;

274 
y
 = 
ue
;

277 
d
::

 << "Wr " << 
thad_num


279 << "s. Givg up." << 
d
::
dl
;

280 
y
 = 
l
;

282 } 
	`tch
 (
DbExi
 &
e
) {

283 
d
::

 << "dbued" << std::
dl
;

284 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

285 i(
txn
 !
NULL
)

286 
txn
->
	`abt
();

287 
y
 = 
l
;

288 } 
	`tch
 (
d
::
exi
 &

) {

289 
d
::

 << "Unknowexi: " << 

.
	`wh
(<< std::
dl
;

295 
	}
}

315 
	$couRecds
(
Db
 *
dbp
, 
DbTxn
 *
txn
)

318 
Dbc
 *
cursp
 = 
NULL
;

319 
cou
 = 0;

321 
y
 {

323 
dbp
->
	`curs
(
txn
, &
cursp
, 
DB_READ_UNCOMMITTED
);

325 
Dbt
 
key
, 
vue
;

326 
cursp
->
	`g
(&
key
, &
vue
, 
DB_NEXT
) == 0) {

327 
cou
++;

329 } 
	`tch
 (
DbDdlockExi
 &
de
) {

330 
d
::

 << "couRecds: g ddlock" << std::
dl
;

331 
cursp
->
	`o
();

332 
throw
 
de
;

333 } 
	`tch
 (
DbExi
 &
e
) {

334 
d
::

 << "couRecdr:" << std::
dl
;

335 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

338 i(
cursp
 !
NULL
) {

339 
y
 {

340 
cursp
->
	`o
();

341 } 
	`tch
 (
DbExi
 &
e
) {

342 
d
::

 << "couRecds: curs clo faed:" << std::
dl
;

343 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

347  (
cou
);

348 
	}
}

353 
	$ݒDb
(
Db
 **
db
, cڡ *
ogme
, cڡ *
feName
,

354 
DbEnv
 *
vp
, 
u_t32_t
 
exaFgs
)

356 
t
;

357 
u_t32_t
 
ݒFgs
;

359 
y
 {

360 
Db
 *
dbp
 = 
w
 
	`Db
(
vp
, 0);

363 *
db
 = 
dbp
;

365 i(
exaFgs
 != 0)

366 
t
 = 
dbp
->
	`t_ags
(
exaFgs
);

369 
ݒFgs
 = 
DB_CREATE
 |

370 
DB_READ_UNCOMMITTED
 |

371 
DB_AUTO_COMMIT
;

373 
dbp
->
	`ݒ
(
NULL
,

374 
feName
,

375 
NULL
,

376 
DB_BTREE
,

377 
ݒFgs
,

379 } 
	`tch
 (
DbExi
 &
e
) {

380 
d
::

 << 
ogme
 << ": onDb: db oed:" << std::
dl
;

381 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

382  (
EXIT_FAILURE
);

385  (
EXIT_SUCCESS
);

386 
	}
}

	@../examples_cxx/txn_guide/TxnGuideInMemory.cpp

3 
	~<ioam
>

4 
	~<db_cxx.h
>

6 #ifde
_WIN32


7 
	~<wdows.h
>

8 
	#PATHD
 '\\'

	)

10 

gt
(, * const *, const *);

11 
*
ݏrg
;

14 
HANDLE
 
	tthad_t
;

15 
	#thad_
(
th
, 

, 
func
, 
g
) \

16 (((*(
th

	`CeThad
(
NULL
, 0, \

17 (
LPTHREAD_START_ROUTINE
)(
func
), (
g
), 0, 
NULL
)=NULL? -1 : 0)

	)

18 
	#thad_jo
(
thr
, 
u
) \

19 ((
	`WaFSgObje
((
thr
), 
INFINITE
=
WAIT_OBJECT_0
) && \

20 
	`GExCodeThad
((
thr
), (
LPDWORD
)(
u
)? 0 : -1)

	)

22 
HANDLE
 
	tmux_t
;

23 
	#mux_
(
m
, 

) \

24 (((*(
m

	`CeMux
(
NULL
, 
FALSE
, NULL)!NULL? 0 : -1)

	)

25 
	#mux_lock
(
m
) \

26 ((
	`WaFSgObje
(*(
m
), 
INFINITE
=
WAIT_OBJECT_0
? 0 : -1)

	)

27 
	#mux_uock
(
m
(
	`RMux
(*(m)? 0 : -1)

	)

29 
	~<had.h
>

30 
	~<unid.h
>

31 
	#PATHD
 '/'

	)

33 
had_t
 
	tthad_t
;

34 
	#thad_
(
th
, 

, 
func
, 
g
) \

35 
	`had_
((
th
), (

), (
func
), (
g
))

	)

36 
	#thad_jo
(
thr
, 
u

	`had_jo
(hr), (u))

	)

38 
had_mux_t
 
	tmux_t
;

39 
	#mux_
(
m
, 


	`had_mux_
((m), ())

	)

40 
	#mux_lock
(
m

	`had_mux_lock
(m)

	)

41 
	#mux_uock
(
m

	`had_mux_uock
(m)

	)

45 
	#NUMWRITERS
 5

	)

49 
	gglob_thad_num
;

50 
mux_t
 
	gthad_num_lock
;

53 
couRecds
(
Db
 *, 
DbTxn
 *);

54 
ݒDb
(
Db
 **, cڡ *, cڡ *, 
DbEnv
 *, 
u_t32_t
);

55 
uge
();

56 *
wrThad
(*);

59 
	$ma
()

62 
Db
 *
dbp
 = 
NULL
;

63 
DbEnv
 *
vp
 = 
NULL
;

65 
thad_t
 
wrThads
[
NUMWRITERS
];

66 
i
;

67 
u_t32_t
 
vFgs
;

70 cڡ *
ogName
 = "TxnGuideInMemory";

73 
vFgs
 =

74 
DB_CREATE
 |

75 
DB_RECOVER
 |

76 
DB_INIT_LOCK
 |

77 
DB_INIT_LOG
 |

78 
DB_INIT_TXN
 |

80 
DB_INIT_MPOOL
 |

81 
DB_PRIVATE
 |

83 
DB_THREAD
;

85 
y
 {

87 
vp
 = 
w
 
	`DbEnv
(0);

90 
vp
->
	`t_ags
(
DB_LOG_INMEMORY
, 1);

93 
vp
->
	`t_lg_bsize
(10 * 1024 * 1024);

96 
vp
->
	`t_chesize
(0, 10 * 1024 * 1024, 1);

102 
vp
->
	`t_lk_de
(
DB_LOCK_MINWRITE
);

105 
vp
->
	`ݒ
(
NULL
, 
vFgs
, 0);

113 
	`ݒDb
(&
dbp
, 
ogName
, 
NULL
,

114 
vp
, 
DB_DUPSORT
);

117 ()
	`mux_
(&
thad_num_lock
, 
NULL
);

120 
i
 = 0; i < 
NUMWRITERS
; i++)

121 ()
	`thad_
(

122 &
wrThads
[
i
], 
NULL
,

123 
wrThad
,

124 (*)
dbp
);

127 
i
 = 0; i < 
NUMWRITERS
; i++)

128 ()
	`thad_jo
(
wrThads
[
i
], 
NULL
);

130 } 
	`tch
(
DbExi
 &
e
) {

131 
d
::

 << "Error opening databasenvironment: "

132 << 
d
::
dl
;

133 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

134  (
EXIT_FAILURE
);

137 
y
 {

139 i(
dbp
 !
NULL
)

140 
dbp
->
	`o
(0);

143 i(
vp
 !
NULL
)

144 
vp
->
	`o
(0);

145 } 
	`tch
(
DbExi
 &
e
) {

146 
d
::

 << "Error closing databasendnvironment."

147 << 
d
::
dl
;

148 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

149  (
EXIT_FAILURE
);

154 
d
::
cout
 << "I'm de." << std::
dl
;

155  (
EXIT_SUCCESS
);

156 
	}
}

164 
	$wrThad
(*
gs
)

166 
j
, 
thad_num
;

167 
max_s
 = 20;

168 *
key_rgs
[] = {"key 1", "key 2", "key 3", "key 4",

172 
Db
 *
dbp
 = (Db *)
gs
;

173 
DbEnv
 *
vp
 = 
dbp
->
	`g_v
();

176 ()
	`mux_lock
(&
thad_num_lock
);

177 
glob_thad_num
++;

178 
thad_num
 = 
glob_thad_num
;

179 ()
	`mux_uock
(&
thad_num_lock
);

182 
	`d
(
thad_num
);

185 
i
=0; i<50; i++) {

186 
DbTxn
 *
txn
;

187 
bo
 
y
 = 
ue
;

188 
y_cou
 = 0;

190 
y
) {

193 
y
 {

207 
txn
 = 
NULL
;

208 
vp
->
	`txn_beg
(
NULL
, &
txn
, 0);

211 
j
 = 0; j < 10; j++) {

212 
Dbt
 
key
, 
vue
;

213 
key
.
	`t_da
(
key_rgs
[
j
]);

214 
key
.
	`t_size
((
u_t32_t
)
	`
(
key_rgs
[
j
]) + 1);

216 
yld
 = 
	`nd
(+ 
i
;

217 
vue
.
	`t_da
(&
yld
);

218 
vue
.
	`t_size
(());

221 
dbp
->
	`put
(
txn
, &
key
, &
vue
, 0);

226 
d
::
cout
 << 
thad_num
 << " : Found "

227 << 
	`couRecds
(
dbp
, 
txn
)

228 << "ecdhdaba." << 
d
::
dl
;

230 
d
::
cout
 << 
thad_num
 << " : commtgx: " << 
i


231 << 
d
::
dl
;

234 
y
 {

235 
txn
->
	`comm
(0);

236 
y
 = 
l
;

237 
txn
 = 
NULL
;

238 } 
	`tch
 (
DbExi
 &
e
) {

239 
d
::
cout
 << "Error onxn commit: "

240 << 
e
.
	`wh
(<< 
d
::
dl
;

242 } 
	`tch
 (
DbDdlockExi
 &) {

244 i(
txn
 !
NULL
)

245 ()
txn
->
	`abt
();

250 i(
y_cou
 < 
max_s
) {

251 
d
::

 << "############### Wr " << 
thad_num


253 << "Rryg wrݔi." << 
d
::
dl
;

254 
y_cou
++;

255 
y
 = 
ue
;

258 
d
::

 << "Wr " << 
thad_num


260 << "s. Givg up." << 
d
::
dl
;

261 
y
 = 
l
;

263 } 
	`tch
 (
DbExi
 &
e
) {

264 
d
::

 << "dbued" << std::
dl
;

265 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

266 i(
txn
 !
NULL
)

267 
txn
->
	`abt
();

268 
y
 = 
l
;

269 } 
	`tch
 (
d
::
exi
 &

) {

270 
d
::

 << "Unknowexi: " << 

.
	`wh
(<< std::
dl
;

276 
	}
}

297 
	$couRecds
(
Db
 *
dbp
, 
DbTxn
 *
txn
)

300 
Dbc
 *
cursp
 = 
NULL
;

301 
cou
 = 0;

303 
y
 {

305 
dbp
->
	`curs
(
txn
, &
cursp
, 0);

307 
Dbt
 
key
, 
vue
;

308 
cursp
->
	`g
(&
key
, &
vue
, 
DB_NEXT
) == 0) {

309 
cou
++;

311 } 
	`tch
 (
DbDdlockExi
 &
de
) {

312 
d
::

 << "couRecds: g ddlock" << std::
dl
;

313 
cursp
->
	`o
();

314 
throw
 
de
;

315 } 
	`tch
 (
DbExi
 &
e
) {

316 
d
::

 << "couRecdr:" << std::
dl
;

317 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

320 i(
cursp
 !
NULL
) {

321 
y
 {

322 
cursp
->
	`o
();

323 } 
	`tch
 (
DbExi
 &
e
) {

324 
d
::

 << "couRecds: curs clo faed:" << std::
dl
;

325 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

329  (
cou
);

330 
	}
}

335 
	$ݒDb
(
Db
 **
db
, cڡ *
ogme
, cڡ *
feName
,

336 
DbEnv
 *
vp
, 
u_t32_t
 
exaFgs
)

338 
t
;

339 
u_t32_t
 
ݒFgs
;

341 
y
 {

342 
Db
 *
dbp
 = 
w
 
	`Db
(
vp
, 0);

345 *
db
 = 
dbp
;

347 i(
exaFgs
 != 0)

348 
t
 = 
dbp
->
	`t_ags
(
exaFgs
);

351 
ݒFgs
 = 
DB_CREATE
 |

352 
DB_THREAD
 |

353 
DB_AUTO_COMMIT
;

355 
dbp
->
	`ݒ
(
NULL
,

356 
feName
,

357 
NULL
,

358 
DB_BTREE
,

359 
ݒFgs
,

361 } 
	`tch
 (
DbExi
 &
e
) {

362 
d
::

 << 
ogme
 << ": onDb: db oed:" << std::
dl
;

363 
d
::

 << 
e
.
	`wh
(<< std::
dl
;

364  (
EXIT_FAILURE
);

367  (
EXIT_SUCCESS
);

368 
	}
}

	@../examples_cxx/wce_tpcb/TpcbExample.cpp

2 
	~"TpcbExame.h
"

4 
	#HISTORY_LEN
 100

	)

5 
	#RECLEN
 100

	)

6 
	#BEGID
 1000000

	)

8 
	sDeec
 {

9 
u_t32_t
 
	mid
;

10 
u_t32_t
 
	mb
;

11 
u_t8_t
 
	md
[
RECLEN
 - (
u_t32_t
) - (u_int32_t)];

14 
	sHic
 {

15 
u_t32_t
 
	maid
;

16 
u_t32_t
 
	mbid
;

17 
u_t32_t
 
	mtid
;

18 
u_t32_t
 
	mamou
;

19 
u_t8_t
 
	md
[
RECLEN
 - 4 * (
u_t32_t
)];

22 cڡ *
	gogme
 = "wce_tpcb";

24 
	gTpcbExame
::
	$TpcbExame
()

25 : 
	`dbv
(0), 
	`accous
(
ACCOUNTS
), 
	`bnches
(
BRANCHES
),

26 
	`Δs
(
TELLERS
), 
	`hiy
(
HISTORY
), 
	`_mode
(1), 
	`vbo
(0),

27 
	$chesize
(0)

29 
nd_ed
 = 
	`GTickCou
();

30 
	`tHomeD
(
TESTDIR
);

31 
	}
}

33 
	gTpcbExame
::
	$Env
(
ags
)

35 
t
;

36 
u_t32_t
 
lol_ags
;

41 i(
dbv
 !
NULL
)

42 
	`oEnv
();

44 
	`d
(
nd_ed
);

46 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

47 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

48 "%s: db_v_: %s\n", 
ogme
, 
	`db_
(
t
));

51 
dbv
->
	`t_r
(dbv, &
cb_rback
);

52 
dbv
->
	`t_fx
(dbenv, "TpcbExample");

53 
dbv
->
	`t_chesize
(dbv, 0, 
chesize
 == 0 ?

54 1 * 1024 * 1024 : (
u_t32_t
)
chesize
, 0);

56 i(
_mode
)

57 
dbv
->
	`t_ags
(dbv, 
DB_TXN_NOSYNC
, 1);

59 
lol_ags
 = 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 |

60 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
;

61 
dbv
->
	`ݒ
(dbv, 
homeDName
, 
lol_ags
, 0);

63 
	}
}

65 
	gTpcbExame
::
	$oEnv
()

67 i(
dbv
 !
NULL
) {

68 
dbv
->
	`o
(dbenv, 0);

69 
dbv
 = 0;

71 
	}
}

78 
	gTpcbExame
::
	$puϋ
()

80 
DB
 *
dbp
;

82 
r
;

83 
u_t32_t
 
b
, 
idnum
;

84 
u_t32_t
 
d_um
, 
d_bnum
, 
d_um
;

85 
u_t32_t
 
t_um
, 
t_bnum
, 
t_um
;

87 
idnum
 = 
BEGID
;

88 
b
 = 500000;

90 i((
r
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

91 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

95 
dbp
->
	`t_h_m
(dbp, ()
accous
);

97 i((
r
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, "accou", NULL, 
DB_HASH
,

98 
DB_CREATE
, 0644)) != 0) {

99 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

100 "Accou f faed.: %s.", 
	`db_
(
r
));

104 
t_um
 = 
idnum
;

105 i((
r
 =

106 
	`puϋTab
(
dbp
, 
idnum
, 
b
, 
accous
, "account")) != 0)

108 
idnum
 +
accous
;

109 
d_um
 = 
idnum
 - 1;

110 i((
r
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

111 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

112 "Accou fo faed.: %s.", 
	`db_
(
r
));

116 i((
r
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

117 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

126 
dbp
->
	`t_h_f
(dbp, 1);

127 
dbp
->
	`t_h_m
(dbp, ()
bnches
);

128 
dbp
->
	`t_gesize
(dbp, 512);

130 i((
r
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, "bnch", NULL, 
DB_HASH
,

131 
DB_CREATE
, 0644)) != 0) {

132 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

133 "Bnch f faed.: %s.", 
	`db_
(
r
));

136 
t_bnum
 = 
idnum
;

137 i((
r
 = 
	`puϋTab
(
dbp
, 
idnum
, 
b
, 
bnches
, "branch")) != 0)

139 
idnum
 +
bnches
;

140 
d_bnum
 = 
idnum
 - 1;

141 i((
r
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

142 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

144 
	`db_
(
r
));

148 i((
r
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

149 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

157 
dbp
->
	`t_h_f
(dbp, 0);

158 
dbp
->
	`t_h_m
(dbp, ()
Δs
);

159 
dbp
->
	`t_gesize
(dbp, 512);

161 i((
r
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, "Δ", NULL, 
DB_HASH
,

162 
DB_CREATE
, 0644)) != 0) {

163 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

164 "T˸f faed.: %s.", 
	`db_
(
r
));

168 
t_um
 = 
idnum
;

169 i((
r
 = 
	`puϋTab
(
dbp
, 
idnum
, 
b
, 
Δs
, "teller")) != 0)

171 
idnum
 +
Δs
;

172 
d_um
 = 
idnum
 - 1;

173 i((
r
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

174 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

176 
	`db_
(
r
));

180 i((
r
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0) {

181 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

185 
dbp
->
	`t__n
(dbp, 
HISTORY_LEN
);

186 i((
r
 = 
dbp
->
	`ݒ
(dbp, 
NULL
, "hiy", NULL, 
DB_RECNO
,

187 
DB_CREATE
, 0644)) != 0) {

188 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

190 
	`db_
(
r
));

194 
	`puϋHiy
(
dbp
, 
hiy
, 
accous
, 
bnches
, 
Δs
);

195 i((
r
 = 
dbp
->
	`o
(dbp, 0)) != 0) {

196 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

198 
	`db_
(
r
));

202 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
, "Populated OK.");

204 
	}
}

207 
	gTpcbExame
::
	$puϋTab
(
DB
 *
dbp
,

208 
u_t32_t
 
t_id
, u_t32_
b
,

209 
ecs
, cڡ *
msg
)

211 
DBT
 
kdbt
, 
ddbt
;

212 
Deec
 
dc
;

213 
	`memt
(&
dc
.
d
[0], 1, (drec.pad));

215 
	`memt
(&
kdbt
, 0, (kdbt));

216 
	`memt
(&
ddbt
, 0, (ddbt));

217 
kdbt
.
da
 = &
dc
.
id
;

218 
kdbt
.
size
 = (
u_t32_t
);

219 
ddbt
.
da
 = &
dc
;

220 
ddbt
.
size
 = (
dc
);

222 
i
 = 0; i < 
ecs
; i++) {

223 
dc
.
id
 = 
t_id
 + (
u_t32_t
)
i
;

224 
dc
.
b
 = balance;

225 
r
;

226 i((
r
 =

227 
dbp
->
	`put
(dbp, 
NULL
, &
kdbt
, &
ddbt
, 
DB_NOOVERWRITE
)) != 0) {

228 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

230 
msg
, 
	`db_
(
r
));

235 
	}
}

238 
	gTpcbExame
::
	$puϋHiy
(
DB
 *
dbp
, 
ecs
, 
u_t32_t
 
accous
,

239 
u_t32_t
 
bnches
, u_t32_
Δs
)

241 
DBT
 
kdbt
, 
ddbt
;

242 
Hic
 
hc
;

243 
	`memt
(&
hc
.
d
[0], 1, (hrec.pad));

244 
hc
.
amou
 = 10;

245 
db_o_t
 
key
;

247 
	`memt
(&
kdbt
, 0, (kdbt));

248 
	`memt
(&
ddbt
, 0, (ddbt));

249 
kdbt
.
da
 = &
key
;

250 
kdbt
.
size
 = (
u_t32_t
);

251 
ddbt
.
da
 = &
hc
;

252 
ddbt
.
size
 = (
hc
);

254 
i
 = 1; i <
ecs
; i++) {

255 
hc
.
aid
 = 
	`ndomId
(
ACCOUNT
, 
accous
, 
bnches
, 
Δs
);

256 
hc
.
bid
 = 
	`ndomId
(
BRANCH
, 
accous
, 
bnches
, 
Δs
);

257 
hc
.
tid
 = 
	`ndomId
(
TELLER
, 
accous
, 
bnches
, 
Δs
);

259 
r
;

260 
key
 = (
db_o_t
)
i
;

261 i((
r
 = 
dbp
->
	`put
(dbp, 
NULL
, &
kdbt
, &
ddbt
, 
DB_APPEND
)) != 0) {

262 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

264 
	`db_
(
r
));

269 
	}
}

272 
	gTpcbExame
::
	$run
(
n
)

274 
DB
 *
adb
, *
bdb
, *
hdb
, *
tdb
;

275 
ed
, 
t
, 
txns
;

276 
DWORD
 
t_time
, 
d_time
;

277 
d_cs
;

283 
r
;

284 i((
r
 = 
	`db_
(&
adb
, 
dbv
, 0)) != 0) {

285 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

287 
	`db_
(
r
));

290 i((
r
 = 
adb
->
	`ݒ
db, 
NULL
, "accou", NULL, 
DB_UNKNOWN
,

291 
DB_AUTO_COMMIT
, 0)) != 0) {

292 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

293 "Ooaccou fed. E: %s", 
	`db_
(
r
));

297 i((
r
 = 
	`db_
(&
bdb
, 
dbv
, 0)) != 0) {

298 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

300 
	`db_
(
r
));

303 i((
r
 = 
bdb
->
	`ݒ
(bdb, 
NULL
, "bnch", NULL, 
DB_UNKNOWN
,

304 
DB_AUTO_COMMIT
, 0)) != 0) {

305 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

306 "Oobnch fed. E: %s", 
	`db_
(
r
));

310 i((
r
 = 
	`db_
(&
tdb
, 
dbv
, 0)) != 0) {

311 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

313 
	`db_
(
r
));

316 i((
r
 = 
tdb
->
	`ݒ
db, 
NULL
, "Δ", NULL, 
DB_UNKNOWN
,

317 
DB_AUTO_COMMIT
, 0)) != 0) {

318 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

319 "OoΔ fed. E: %s", 
	`db_
(
r
));

323 i((
r
 = 
	`db_
(&
hdb
, 
dbv
, 0)) != 0) {

324 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

326 
	`db_
(
r
));

329 i((
r
 = 
hdb
->
	`ݒ
(hdb, 
NULL
, "hiy", NULL, 
DB_UNKNOWN
,

330 
DB_AUTO_COMMIT
, 0)) != 0) {

331 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

332 "Oohiy fed. E: %s", 
	`db_
(
r
));

336 
t_time
 = 
	`GTickCou
();

337 
txns
 = 
n
, 
ed
 = 0;-- > 0;)

338 i((
t
 = 
	`txn
(
adb
, 
bdb
, 
tdb
, 
hdb
,

339 
accous
, 
bnches
, 
Δs
)) != 0)

340 ++
ed
;

341 
d_time
 = 
	`GTickCou
();

342 i(
d_time
 =
t_time
)

343 ++
d_time
;

344 
	#MILLISECS_PER_SEC
 1000

	)

345 
d_cs
 = ()((
d_time
 - 
t_time
))/
MILLISECS_PER_SEC
;

346 
	`_tf
(
msgSg
, 
ERR_STRING_MAX
,

347 "%s: %dxns: %d faed, %.2TPS\n", 
ogme
, 
txns
, 
ed
,

348 (
txns
 - 
ed
/ 
d_cs
);

350 ()
adb
->
	`o
(adb, 0);

351 ()
bdb
->
	`o
(bdb, 0);

352 ()
tdb
->
	`o
(tdb, 0);

353 ()
hdb
->
	`o
(hdb, 0);

356 
	}
}

362 
	gTpcbExame
::
	$txn
(
DB
 *
adb
, DB *
bdb
, DB *
tdb
, DB *
hdb
,

363 
accous
, 
bnches
, 
Δs
)

365 
DBC
 *
acurs
, *
bcurs
, *
tcurs
;

366 
DB_TXN
 *
t
;

367 
DBT
 
d_dbt
, 
d_hidbt
, 
k_dbt
, 
k_hidbt
;

369 
db_o_t
 
key
;

370 
Deec
 
c
;

371 
Hic
 
hc
;

372 
accou
, 
bnch
, 
Δ
, 
t
;

374 
	`memt
(&
d_dbt
, 0, (d_dbt));

375 
	`memt
(&
d_hidbt
, 0, (d_histdbt));

376 
	`memt
(&
k_dbt
, 0, (k_dbt));

377 
	`memt
(&
k_hidbt
, 0, (k_histdbt));

378 
k_hidbt
.
da
 = &
key
;

379 
k_hidbt
.
size
 = (
key
);

385 
accou
 = 
	`ndomId
(
ACCOUNT
, 
accous
, 
bnches
, 
Δs
);

386 
bnch
 = 
	`ndomId
(
BRANCH
, 
accous
, 
bnches
, 
Δs
);

387 
Δ
 = 
	`ndomId
(
TELLER
, 
accous
, 
bnches
, 
Δs
);

389 
k_dbt
.
size
 = ();

391 
d_dbt
.
ags
 |
DB_DBT_USERMEM
;

392 
d_dbt
.
da
 = &
c
;

393 
d_dbt
.
un
 = (
c
);

395 
hc
.
aid
 = 
accou
;

396 
hc
.
bid
 = 
bnch
;

397 
hc
.
tid
 = 
Δ
;

398 
hc
.
amou
 = 10;

400 
d_hidbt
.
ags
 |
DB_DBT_PARTIAL
;

408 i(
dbv
->
	`txn_beg
(dbv, 
NULL
, &
t
, 0) != 0)

409 
r
;

411 i(
adb
->
	`curs
db, 
t
, &
acurs
, 0) != 0 ||

412 
bdb
->
	`curs
(bdb, 
t
, &
bcurs
, 0) != 0 ||

413 
tdb
->
	`curs
db, 
t
, &
tcurs
, 0) != 0)

414 
r
;

417 
k_dbt
.
da
 = &
accou
;

418 i(
acurs
->
	`g
curs, &
k_dbt
, &
d_dbt
, 
DB_SET
) != 0)

419 
r
;

420 
c
.
b
 += 10;

421 i(
acurs
->
	`put
curs, &
k_dbt
, &
d_dbt
, 
DB_CURRENT
) != 0)

422 
r
;

425 
k_dbt
.
da
 = &
bnch
;

426 i(
bcurs
->
	`g
(bcurs, &
k_dbt
, &
d_dbt
, 
DB_SET
) != 0)

427 
r
;

428 
c
.
b
 += 10;

429 i(
bcurs
->
	`put
(bcurs, &
k_dbt
, &
d_dbt
, 
DB_CURRENT
) != 0)

430 
r
;

433 
k_dbt
.
da
 = &
Δ
;

434 i(
tcurs
->
	`g
curs, &
k_dbt
, &
d_dbt
, 
DB_SET
) != 0)

435 
r
;

436 
c
.
b
 += 10;

437 i(
tcurs
->
	`put
curs, &
k_dbt
, &
d_dbt
, 
DB_CURRENT
) != 0)

438 
r
;

441 
d_hidbt
.
ags
 = 0;

442 
d_hidbt
.
da
 = &
hc
;

443 
d_hidbt
.
un
 = (
hc
);

444 i(
hdb
->
	`put
(hdb, 
t
, &
k_hidbt
, &
d_hidbt
, 
DB_APPEND
) != 0)

445 
r
;

447 i(
acurs
->
	`o
curs!0 || 
bcurs
->close(bcurs) != 0

448 || 
tcurs
->
	`o
(tcurs) != 0)

449 
r
;

451 
t
 = 
t
->
	`comm
(t, 0);

452 
t
 = 
NULL
;

453 i(
t
 != 0)

454 
r
;

459 
r
:

460 i(
acurs
 !
NULL
)

461 ()
acurs
->
	`o
(acurs);

462 i(
bcurs
 !
NULL
)

463 ()
bcurs
->
	`o
(bcurs);

464 i(
tcurs
 !
NULL
)

465 ()
tcurs
->
	`o
(tcurs);

466 i(
t
 !
NULL
)

467 ()
t
->
	`abt
(t);

470 
	}
}

474 
u_t32_t


475 
	gTpcbExame
::
	$ndomI
(
u_t32_t
 
lo
, u_t32_
hi
)

477 
u_t32_t
 
t
;

478 
t
;

480 
t
 = 
	`nd
();

481 
t
 = (
u_t32_t
)((()
t
 / (()(
RAND_MAX
) + 1)) *

482 (
hi
 - 
lo
 + 1));

483 
t
 +
lo
;

484  (
t
);

485 
	}
}

487 
u_t32_t


488 
	gTpcbExame
::
	$ndomId
(
FTYPE
 
ty
, 
u_t32_t
 
accous
,

489 
u_t32_t
 
bnches
, u_t32_
Δs
)

491 
u_t32_t
 
m
, 
max
, 
num
;

493 
max
 = 
m
 = 
BEGID
;

494 
num
 = 
accous
;

495 
ty
) {

496 
TELLER
:

497 
m
 +
bnches
;

498 
num
 = 
Δs
;

500 
BRANCH
:

501 i(
ty
 =
BRANCH
)

502 
num
 = 
bnches
;

503 
m
 +
accous
;

505 
ACCOUNT
:

506 
max
 = 
m
 + 
num
 - 1;

508  (
	`ndomI
(
m
, 
max
));

509 
	}
}

512 
	gTpcbExame
::
	$gHomeD
(*
th
, 
max
)

514 
	`memy
(
th
, 
homeDName
, 
	`m
(
max
, 
MAX_PATH
));

515  
th
;

516 
	}
}

518 
wch_t
 *

519 
	gTpcbExame
::
	$gHomeDW
(
wch_t
 *
th
, 
max
)

521 
	`memy
(
th
, 
wHomeDName
, 
	`m
(
max
, 
MAX_PATH
)*(
wch_t
));

522  
th
;

523 
	}
}

526 
	gTpcbExame
::
	$tHomeD
(*
th
)

528 
th_n
;

530 
th_n
 = 
	`
(
th
);

531 
	`y
(
homeDName
, 
th
, 
MAX_PATH
);

532 
	`MuiByToWideCh
(
CP_ACP
, 0, 
th
, 
th_n
, 
wHomeDName
, 
MAX_PATH
);

533 
wHomeDName
[
th_n
] = 
L
'\0';

534 
	}
}

537 
	gTpcbExame
::
	$tHomeDW
(
wch_t
 *
th
)

539 
th_n
;

541 
th_n
 = 
	`wc
(
th
);

542 
	`wcy
(
wHomeDName
, 
th
, 
MAX_PATH
);

543 
	`WideChToMuiBy
(
CP_ACP
, 0, 
th
, 
th_n
, 
homeDName
,

544 
MAX_PATH
, 0, 0);

545 
homeDName
[
th_n
] = '\0';

546 
	}
}

	@../examples_cxx/wce_tpcb/TpcbUI.cpp

4 
	~<wdows.h
>

5 
	~"sour.h
"

6 
	~"TpcbExame.h
"

7 
	~<comm.h
>

9 
	#MAX_LOADSTRING
 100

	)

12 
HINSTANCE
 
	ghIn
;

13 
HWND
 
	ghWndDlgMa
;

14 
HWND
 
	ghWndFme
;

15 
TpcbExame
 *
	gcb
;

18 
ATOM
 
MyRegiCss
 (
HINSTANCE
, 
LPTSTR
);

19 
BOOL
 
InIn
 (
HINSTANCE
, );

20 
LRESULT
 
CALLBACK
 
WndProc
 (
HWND
, 
UINT
, 
WPARAM
, 
LPARAM
);

21 
LRESULT
 
CALLBACK
 
MaDlog
 (
HWND
, 
UINT
, 
WPARAM
, 
LPARAM
);

22 
LRESULT
 
CALLBACK
 
InDlog
 (
HWND
, 
UINT
, 
WPARAM
, 
LPARAM
);

23 
LRESULT
 
CALLBACK
 
AdvdDlog
 (
HWND
, 
UINT
, 
WPARAM
, 
LPARAM
);

24 
LRESULT
 
CALLBACK
 
RunDlog
 (
HWND
, 
UINT
, 
WPARAM
, 
LPARAM
);

25 
BOOL
 
GHomeDey
(
HWND
, BOOL);

26 
BOOL
 
RecursiveDRemove
(
wch_t
 *);

28 
WINAPI
 
	$WMa

HINSTANCE
 
hIn
,

29 
HINSTANCE
 
hPvIn
,

30 
LPTSTR
 
CmdLe
,

31 
nCmdShow
)

33 
MSG
 
msg
;

34 
HACCEL
 
hAclTab
;

36 
hWndDlgMa
 = 
NULL
;

38 
cb
 = 
w
 
	`TpcbExame
();

41 i(!
	`InIn
 (
hIn
, 
nCmdShow
))

43  
FALSE
;

46 
hAclTab
 = 
	`LdAc˿ts
(
hIn
, (
LPCTSTR
)
IDC_WCE_TPCB
);

49 
	`GMesge
(&
msg
, 
NULL
, 0, 0))

51 i(!
	`TneAc˿t
(
msg
.
hwnd
, 
hAclTab
, &msg))

53 
	`TneMesge
(&
msg
);

54 
	`DichMesge
(&
msg
);

58  
msg
.
wPam
;

59 
	}
}

71 
ATOM
 
	$MyRegiCss
(
HINSTANCE
 
hIn
, 
LPTSTR
 
szWdowCss
)

73 
WNDCLASS
 
wc
;

75 
wc
.
y
 = 
CS_HREDRAW
 | 
CS_VREDRAW
;

76 
wc
.
WndProc
 = (
WNDPROC

WndProc
;

77 
wc
.
cbClsExa
 = 0;

78 
wc
.
cbWndExa
 = 0;

79 
wc
.
hIn
 = hInstance;

80 
wc
.
hIc
 = 
	`LdIc
(
hIn
, 
	`MAKEINTRESOURCE
(
IDI_WCE_TPCB
));

81 
wc
.
hCurs
 = 0;

82 
wc
.
hbrBackground
 = (
HBRUSH

	`GStockObje
(
WHITE_BRUSH
);

83 
wc
.
szMuName
 = 0;

84 
wc
.
szCssName
 = 
szWdowCss
;

86  
	`RegiCss
(&
wc
);

87 
	}
}

99 
BOOL
 
	$InIn
(
HINSTANCE
 
hIn
, 
nCmdShow
)

101 
TCHAR
 
szT
[
MAX_LOADSTRING
];

102 
TCHAR
 
szWdowCss
[
MAX_LOADSTRING
];

104 
hIn
 = 
hIn
;

106 
	`LdSg
(
hIn
, 
IDC_WCE_TPCB
, 
szWdowCss
, 
MAX_LOADSTRING
);

107 
	`MyRegiCss
(
hIn
, 
szWdowCss
);

108 
	`LdSg
(
hIn
, 
IDS_APP_TITLE
, 
szT
, 
MAX_LOADSTRING
);

110 
hWndFme
 = 
	`CeWdow
(
szWdowCss
, 
szT
,

111 
WS_VISIBLE
 | 
WS_MINIMIZEBOX
, 
CW_USEDEFAULT
, CW_USEDEFAULT,

112 
CW_USEDEFAULT
, CW_USEDEFAULT, 
NULL
, NULL, 
hIn
, NULL);

114 i(!
hWndFme
)

116  
FALSE
;

119 
	`ShowWdow
(
hWndDlgMa
, 
nCmdShow
);

120 
	`UpdeWdow
(
hWndDlgMa
);

122  
TRUE
;

123 
	}
}

134 
LRESULT
 
CALLBACK
 
	$WndProc
(
HWND
 
hWnd
, 
UINT
 
mesge
, 
WPARAM
 
wPam
, 
LPARAM
 
lPam
)

136 
HWND
 
hDlg
;

138 
mesge
)

140 
WM_COMMAND
:

141 
	`DefWdowProc
(
hWnd
, 
mesge
, 
wPam
, 
lPam
);

143 
WM_CREATE
:

144 
hDlg
 = 
	`CeDlog
(
hIn
,

145 
	`MAKEINTRESOURCE
(
IDD_MAINDIALOG
), 
hWnd
,

146 (
DLGPROC
)
MaDlog
);

148 
WM_DESTROY
:

149 
	`PoQuMesge
(0);

152  
	`DefWdowProc
(
hWnd
, 
mesge
, 
wPam
, 
lPam
);

155 
	}
}

158 
LRESULT
 
CALLBACK
 
	$MaDlog
(
HWND
 
hDlg
, 
UINT
 
mesge
, 
WPARAM
 
wPam
, 
LPARAM
 
lPam
)

160 
RECT
 

;

161 
HWND
 
hCutRadioBu
;

162 
wch_t
 
wdme
[
MAX_PATH
], 
msg
[1024], *
t
;

163 
t
, 
vid
, 
xns
, 
wrn
;

165 
mesge
)

167 
WM_INITDIALOG
:

169 
	`GClRe
(
	`GPt
(
hDlg
), &

);

170 
	`SWdowPos
(
hDlg
, 
HWND_TOP
, 0, 0, 

.
right
,t.
btom
,

171 
SWP_SHOWWINDOW
);

172 
	`CheckRadioBu
(
hDlg
, 
IDC_MEDIUM_RADIO
,

173 
IDC_SMALL_RADIO
, IDC_SMALL_RADIO);

174 
	`SDlgImText
(
hDlg
, 
IDC_HOME_EDIT
,

175 
cb
->
	`gHomeDW
(
wdme
, 
MAX_PATH
));

176 
	`SDlgImI
(
hDlg
, 
IDC_TXN_EDIT
, 1000, 0);

178 
	`SWdowText
(
hDlg
, 
L
"BDB TPCB Examplepp");

179 
	`ShowWdow
(
hDlg
, 
SW_SHOWNORMAL
);

180  
TRUE
;

181 
WM_COMMAND
:

182 i(
	`LOWORD
(
wPam
=
IDC_INIT_BUTTON
 ||

183 
	`LOWORD
(
wPam
=
IDC_RUN_BUTTON
 ) {

184 
hCutRadioBu
 = 
	`GDlgIm
(
hDlg
,

185 
IDC_SMALL_RADIO
);

186 if(
BST_CHECKED
 ==

187 
	`SdMesge
(
hCutRadioBu
,

188 
BM_GETCHECK
, 
NULL
, NULL)) {

189 
cb
->
accous
 = 500;

190 
cb
->
bnches
 = 10;

191 
cb
->
Δs
 = 50;

192 
cb
->
hiy
 = 5000;

194 
hCutRadioBu
 = 
	`GDlgIm
(
hDlg
,

195 
IDC_MEDIUM_RADIO
);

196 if(
BST_CHECKED
 ==

197 
	`SdMesge
(
hCutRadioBu
,

198 
BM_GETCHECK
, 
NULL
, NULL)) {

199 
cb
->
accous
 = 1000;

200 
cb
->
bnches
 = 10;

201 
cb
->
Δs
 = 100;

202 
cb
->
hiy
 = 10000;

204 
hCutRadioBu
 = 
	`GDlgIm
(
hDlg
,

205 
IDC_LARGE_RADIO
);

206 if(
BST_CHECKED
 ==

207 
	`SdMesge
(
hCutRadioBu
,

208 
BM_GETCHECK
, 
NULL
, NULL)) {

209 
cb
->
accous
 = 100000;

210 
cb
->
bnches
 = 10;

211 
cb
->
Δs
 = 100;

212 
cb
->
hiy
 = 259200;

214 
	`EbWdow
(
	`GDlgIm
(
hDlg
, 
IDC_INIT_BUTTON
),

215 
FALSE
);

216 
	`EbWdow
(
	`GDlgIm
(
hDlg
, 
IDC_RUN_BUTTON
),

217 
FALSE
);

218 
	`EbWdow
(
	`GDlgIm
(
hDlg
, 
IDC_ADV_BUTTON
),

219 
FALSE
);

221 i(
	`LOWORD
(
wPam
=
IDC_ADV_BUTTON
) {

222 
	`CeDlog
(
hIn
,

223 
	`MAKEINTRESOURCE
(
IDD_ADVANCEDDIALOG
), 
hDlg
,

224 (
DLGPROC
)
AdvdDlog
);

225 } i(
	`LOWORD
(
wPam
=
IDC_INIT_BUTTON
) {

228 
cb
->
	`oEnv
();

229 
	`GHomeDey
(
hDlg
, 
TRUE
);

230 
cb
->
	`Env
(0);

231 
t
 = 
cb
->
	`puϋ
();

232 } i(
	`LOWORD
(
wPam
=
IDC_RUN_BUTTON
) {

233 
	`GHomeDey
(
hDlg
, 
FALSE
);

234 i(
	`GFeAribus
(

235 
cb
->
	`gHomeDW
(
wdme
, 
MAX_PATH
)) !=

236 
FILE_ATTRIBUTE_DIRECTORY
) {

237 
	`_wtf
(
msg
, 1024,

238 
L
"Target directory: %s doesotxist, or isot directory.\nMake surehe "

239 
L
"directoryame is correct,ndhat youanhe initializationhase.",

240 
wdme
);

241 
	`MesgeBox
(
hDlg
, 
msg
, 
L
"E", 
MB_OK
);

242 
	`EbWdow
(
	`GDlgIm
(
hDlg
,

243 
IDC_INIT_BUTTON
), 
TRUE
);

244 
	`EbWdow
(
	`GDlgIm
(
hDlg
,

245 
IDC_RUN_BUTTON
), 
TRUE
);

246 
	`EbWdow
(
	`GDlgIm
(
hDlg
,

247 
IDC_ADV_BUTTON
), 
TRUE
);

248  
FALSE
;

251 
xns
 = 
	`GDlgImI
(
hDlg
, 
IDC_TXN_EDIT
,

252 &
vid
, 
FALSE
);

253 i(
vid
 =
FALSE
) {

254 
	`MesgeBox
(
hDlg
,

255 
L
"Invalidumber inransaction field.",

256 
L
"E", 
MB_OK
);

257 
	`EbWdow
(
	`GDlgIm
(
hDlg
,

258 
IDC_INIT_BUTTON
), 
TRUE
);

259 
	`EbWdow
(
	`GDlgIm
(
hDlg
,

260 
IDC_RUN_BUTTON
), 
TRUE
);

261 
	`EbWdow
(
	`GDlgIm
(
hDlg
,

262 
IDC_ADV_BUTTON
), 
TRUE
);

263  
FALSE
;

265 
cb
->
	`Env
(0);

266 
t
 = 
cb
->
	`run
(
xns
);

267 } i(
	`LOWORD
(
wPam
=
IDC_EXIT_BUTTON
) {

268 
cb
->
	`oEnv
();

269 
	`EndDlog
(
hDlg
, 
	`LOWORD
(
wPam
));

270 
	`DeroyWdow
(
hDlg
);

271 
	`DeroyWdow
(
hWndFme
);

272  
FALSE
;

274 i(
	`LOWORD
(
wPam
=
IDC_INIT_BUTTON
 ||

275 
	`LOWORD
(
wPam
=
IDC_RUN_BUTTON
 ) {

276 i(
t
 == 0)

277 
t
 = 
L
"Results";

279 
t
 = 
L
"Error message";

280 
wrn
 = 
	`MuiByToWideCh
(
CP_ACP
, 
NULL
,

281 
cb
->
msgSg
, 
	`
(tpcb->msgString),

282 
msg
, (msg)/(msg[0]));

283 
msg
[
wrn
] = 
L
'\0';

284 
	`MesgeBox
(
hDlg
, 
msg
, 
t
, 
MB_OK
);

285 
	`EbWdow
(
	`GDlgIm
(
hDlg
, 
IDC_INIT_BUTTON
), 
TRUE
);

286 
	`EbWdow
(
	`GDlgIm
(
hDlg
, 
IDC_RUN_BUTTON
),

287 
TRUE
);

288 
	`EbWdow
(
	`GDlgIm
(
hDlg
, 
IDC_ADV_BUTTON
),

289 
TRUE
);

292 
WM_DESTROY
:

294 
cb
->
	`oEnv
();

295 
	`EndDlog
(
hDlg
, 
	`LOWORD
(
wPam
));

296 
	`DeroyWdow
(
hDlg
);

297 
	`DeroyWdow
(
hWndFme
);

298  
FALSE
;

300  
	`DefWdowProc
(
hDlg
, 
mesge
, 
wPam
, 
lPam
);

302  
TRUE
;

303 
	}
}

306 
LRESULT
 
CALLBACK
 
	$AdvdDlog
(
HWND
 
hDlg
, 
UINT
 
mesge
,

307 
WPARAM
 
wPam
, 
LPARAM
 
lPam
)

309 
RECT
 

;

310 
HWND
 
hCutCheckBox
;

311 
cutI
, 
vid
;

313 
mesge
)

315 
WM_INITDIALOG
:

316 
	`GClRe
(
	`GPt
(
hDlg
), &

);

317 
	`SWdowPos
(
hDlg
, 
HWND_TOP
, 0, 0, 

.
right
,t.
btom
,

318 
SWP_SHOWWINDOW
);

319 i(
cb
->
_mode
 == 0) {

320 
hCutCheckBox
 =

321 
	`GDlgIm
(
hDlg
, 
IDC_FASTMODE_CHECK
);

322 
	`SdMesge
(
hCutCheckBox
, 
BM_SETCHECK
,

323 
BST_CHECKED
, 0);

325 i(
cb
->
vbo
 == 1) {

326 
hCutCheckBox
 =

327 
	`GDlgIm
(
hDlg
, 
IDC_VERBOSE_CHECK
);

328 
	`SdMesge
(
hCutCheckBox
, 
BM_SETCHECK
,

329 
BST_CHECKED
, 0);

331 i(
cb
->
chesize
 != 0) {

332 
	`SDlgImI
(
hDlg
, 
IDC_CACHE_EDIT
,

333 
cb
->
chesize
/1024, 
FALSE
);

336 
WM_COMMAND
:

337 i(
	`LOWORD
(
wPam
=
IDC_DONE_BUTTON
) {

338 
hCutCheckBox
 =

339 
	`GDlgIm
(
hDlg
, 
IDC_FASTMODE_CHECK
);

340 if(
BST_CHECKED
 =
	`SdMesge
(
hCutCheckBox
,

341 
BM_GETCHECK
, 
NULL
, NULL))

342 
cb
->
_mode
 = 0;

344 
cb
->
_mode
 = 1;

345 
hCutCheckBox
 =

346 
	`GDlgIm
(
hDlg
, 
IDC_VERBOSE_CHECK
);

347 if(
BST_CHECKED
 =
	`SdMesge
(
hCutCheckBox
,

348 
BM_GETCHECK
, 
NULL
, NULL))

349 
cb
->
vbo
 = 1;

351 
cb
->
vbo
 = 0;

352 
cutI
 = 
	`GDlgImI
(
hDlg
,

353 
IDC_RANDOM_EDIT
, &
vid
, 
FALSE
);

354 i(
vid
 !
FALSE
)

355 
cb
->
nd_ed
 = 
cutI
;

356 
cutI
 = 
	`GDlgImI
(
hDlg
,

357 
IDC_CACHE_EDIT
, &
vid
, 
FALSE
);

358 i(
vid
 !
FALSE
) {

359 i(
cutI
 < 20) {

360 
	`MesgeBox
(
hDlg
,

361 
L
"Min cache size is 20kb.",

362 
L
"E", 
MB_OK
);

363  
FALSE
;

365 
cb
->
chesize
 = 
cutI
*1024;

367 
	`EndDlog
(
hDlg
, 
	`LOWORD
(
wPam
));

368 
	`DeroyWdow
(
hDlg
);

372  
	`DefWdowProc
(
hDlg
, 
mesge
, 
wPam
, 
lPam
);

374  
TRUE
;

375 
	}
}

380 
BOOL


381 
	$GHomeDey
(
HWND
 
hDlg
, 
BOOL
 

)

383 
wch_t
 
wdme
[
MAX_PATH
];

384 
DWORD
 
s
;

386 i(
	`GDlgImText
(
hDlg
, 
IDC_HOME_EDIT
, 
wdme
, 
MAX_PATH
) == 0)

387 
cb
->
	`tHomeD
(
TESTDIR
);

389 
cb
->
	`tHomeDW
(
wdme
);

391 i(

 =
TRUE
) {

393 
cb
->
	`gHomeDW
(
wdme
, 
MAX_PATH
);

396 
s
 = 
	`GFeAribus
(
wdme
);

397 i(
s
 =
FILE_ATTRIBUTE_DIRECTORY
)

398 
	`RecursiveDRemove
(
wdme
);

399 i(
s
 =
FILE_ATTRIBUTE_NORMAL
)

400 
	`DeFe
(
wdme
);

401 i(
s
 != 0xFFFFFFFF) {

404  
FALSE
;

408  
	`CeDey
(
wdme
, 
NULL
);

410  
TRUE
;

411 
	}
}

413 
BOOL


414 
	$RecursiveDRemove
(
wch_t
 *
dme
)

416 
HANDLE
 
hFd
;

417 
WIN32_FIND_DATA
 
fdFeDa
;

419 
wch_t
 
DPh
[
MAX_PATH
];

420 
wch_t
 
FeName
[
MAX_PATH
];

422 
	`wcsy
(
DPh
, 
dme
);

423 
	`wcst
(
DPh
, 
L
"\\*");

424 
	`wcsy
(
FeName
, 
dme
);

425 
	`wcst
(
FeName
, 
L
"\\");

427 
	`MesgeBox
(
hWndDlgMa
, 
L
"C˪g dey.", L"Mesge", 
MB_OK
);

429 i((
hFd
 = 
	`FdFFe
(
DPh
,&
fdFeDa
)) ==

430 
INVALID_HANDLE_VALUE
)

431  
FALSE
;

433 
	`wcsy
(
DPh
,
FeName
);

434 
	`MesgeBox
(
hWndDlgMa
, 
L
"Found files in directory.",

435 
L
"Mesge", 
MB_OK
);

437 
bo
 
bSrch
 = 
ue
;

440 
	`wcsy
(
FeName
 + 
	`wc
(
DPh
), 
fdFeDa
.
cFeName
);

441 i(
fdFeDa
.
dwFeAribus
 & 
FILE_ATTRIBUTE_DIRECTORY
)

444 i(!
	`RecursiveDRemove
(
FeName
))

447 i(
fdFeDa
.
dwFeAribus
 &

448 
FILE_ATTRIBUTE_READONLY
)

449 
	`SFeAribus
(
fdFeDa
.
cFeName
,

450 
FILE_ATTRIBUTE_NORMAL
);

451 i(!
	`DeFe
(
FeName
)) {

452 
	`MesgeBox
(
hWndDlgMa
, 
L
"Delete failed.",

453 
L
"Mesge", 
MB_OK
);

457 } 
	`FdNextFe
(
hFd
,&
fdFeDa
));

459 
	`FdClo
(
hFd
);

460  
	`RemoveDey
(
dme
);

461 
	}
}

468 
cb_rback
(cڡ 
DB_ENV
 *, cڡ *
fx
, cڡ *
rr
)

470 
wch_t
 
wr
[
ERR_STRING_MAX
];

471 
memt
(
wr
, 0, (wstr));

472 
MuiByToWideCh
(
CP_ACP
, 0, 
rr
, 

(errstr),

473 
wr
, 
ERR_STRING_MAX
-1);

474 
MesgeBox
(
hWndDlgMa
, 
wr
, 
L
"E Mesge", 
MB_OK
);

475 
ex
(1);

	@../examples_cxx/wce_tpcb/wce_tpcb.rc

3 
	~"sour.h
"

5 
	#APSTUDIO_READONLY_SYMBOLS


	)

10 
	~"ws.h
"

13 #unde
APSTUDIO_READONLY_SYMBOLS


18 #i!
defed
(
AFX_RESOURCE_DLL
|| defed(
AFX_TARG_ENU
)

19 #ifde
_WIN32


20 
LANGUAGE
 
	gLANG_ENGLISH
, 
	gSUBLANG_ENGLISH_US


21 #agm
code_ge
(1252)

31 
IDI_WCE_TPCB
 
ICON
 
	gDISCARDABLE
 "wce_tpcb.ICO"

33 #ifde
APSTUDIO_INVOKED


39 1 
TEXTINCLUDE
 
DISCARDABLE


40 
	gBEGIN


42 
	gEND


44 2 
TEXTINCLUDE
 
DISCARDABLE


45 
	gBEGIN


48 
	gEND


50 3 
TEXTINCLUDE
 
DISCARDABLE


51 
	gBEGIN


54 
	gEND


64 
IDD_MAINDIALOG
 
DIALOG
 
	gDISCARDABLE
 0, 0, 138, 182

65 
STYLE
 
	gDS_MODALFRAME
 | 
	gWS_CAPTION
 | 
WS_SYSMENU


66 
	gCAPTION
 "Berkeley DB TPCB"

67 
	gFONT
 8, "System"

68 
BEGIN


69 
	gPUSHBUTTON
 "Inlize",
	gIDC_INIT_BUTTON
,8,77,50,14

70 
	gPUSHBUTTON
 "Advd...",
	gIDC_ADV_BUTTON
,78,76,50,14

71 
	gPUSHBUTTON
 "Run...",
	gIDC_RUN_BUTTON
,77,94,50,14

72 
	gCONTROL
 "Medium",
	gIDC_MEDIUM_RADIO
,"Bu",
	gBS_AUTORADIOBUTTON
,51,

74 
	gCONTROL
 "Lge",
	gIDC_LARGE_RADIO
,"Bu",
	gBS_AUTORADIOBUTTON
,95,

76 
	gCONTROL
 "Sml",
	gIDC_SMALL_RADIO
,"Bu",
	gBS_AUTORADIOBUTTON
,14,

78 
	gLTEXT
 "HomD:",
	gIDC_STATIC
,7,62,32,8

79 
EDITTEXT
 
	gIDC_HOME_EDIT
,39,59,89,14,
ES_AUTOHSCROLL


80 
	gGROUPBOX
 "Bchmk dvume",
	gIDC_STATIC
,7,35,123,22

81 
	gLTEXT
 "#xns:",
	gIDC_STATIC
,8,96,25,8

82 
EDITTEXT
 
	gIDC_TXN_EDIT
,33,94,40,14,
ES_AUTOHSCROLL


83 
	gGROUPBOX
 "",
	gIDC_STATIC
,7,88,123,23

84 
	gPUSHBUTTON
 "Ex",
	gIDC_EXIT_BUTTON
,43,115,50,14

85 
	gCONTROL
 113,
	gIDC_STATIC
,"Stic",
	gSS_BITMAP
,40,7,15,13

86 
END


88 
IDD_ADVANCEDDIALOG
 
DIALOG
 
	gDISCARDABLE
 0, 0, 147, 162

89 
STYLE
 
	gDS_MODALFRAME
 | 
	gWS_POPUP
 | 
	gWS_CAPTION
 | 
WS_SYSMENU


90 
	gCAPTION
 "Advanced options"

91 
	gFONT
 8, "System"

92 
BEGIN


93 
	gCONTROL
 "Dib fa mode",
	gIDC_FASTMODE_CHECK
,"Button",

94 
	gBS_AUTOCHECKBOX
 | 
	gWS_TABSTOP
,7,14,73,10

95 
	gCONTROL
 "Eb vbo mode",
	gIDC_VERBOSE_CHECK
,"Button",

96 
	gBS_AUTOCHECKBOX
 | 
	gWS_TABSTOP
,7,27,85,10

97 
	gLTEXT
 "Rdom sd:",
	gIDC_RANDOM_STATIC
,7,44,47,8

98 
EDITTEXT
 
	gIDC_RANDOM_EDIT
,59,42,40,14,
ES_AUTOHSCROLL


99 
	gLTEXT
 "Cachsiz(kb):",
	gIDC_CACHE_STATIC
,7,67,52,8

100 
EDITTEXT
 
	gIDC_CACHE_EDIT
,59,64,40,14,
ES_AUTOHSCROLL


101 
	gPUSHBUTTON
 "De",
	gIDC_DONE_BUTTON
,7,90,50,14

102 
	gEND


110 #ifde
APSTUDIO_INVOKED


111 
GUIDELINES
 
DESIGNINFO
 
DISCARDABLE


112 
BEGIN


113 
	gIDD_MAINDIALOG
, 
DIALOG


114 
BEGIN


115 
	gLEFTMARGIN
, 7

116 
	gRIGHTMARGIN
, 130

117 
	gTOPMARGIN
, 7

118 
	gBOTTOMMARGIN
, 175

119 
END


121 
	gIDD_ADVANCEDDIALOG
, 
DIALOG


122 
BEGIN


123 
	gLEFTMARGIN
, 7

124 
	gRIGHTMARGIN
, 140

125 
	gTOPMARGIN
, 7

126 
	gBOTTOMMARGIN
, 155

127 
END


128 
	gEND


137 
IDC_WCE_TPCB
 
ACCELERATORS
 
DISCARDABLE


138 
	gBEGIN


139 "/", 
	gIDM_HELP_ABOUT
, 
	gASCII
, 
	gALT
, 
NOINVERT


140 
	gVK_F4
, 
	gIDM_FILE_EXIT
, 
	gVIRTKEY
, 
	gALT
, 
NOINVERT


141 
END


149 
IDB_ORACLE_BITMAP
 
BITMAP
 
	gDISCARDABLE
 "oracle_bdb.bmp"

156 
STRINGTABLE
 
DISCARDABLE


157 
BEGIN


158 
	gIDS_APP_TITLE
 "wce_tpcb"

159 
	gIDC_WCE_TPCB
 "WCE_TPCB"

160 
	gEND


167 #ide
APSTUDIO_INVOKED


	@../fileops/fileops_auto.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_am.h
"

9 
	~"dbc/log.h
"

10 
	~"dbc/txn.h
"

11 
	~"dbc/f.h
"

18 
	$__f__log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

19 
me
, 
ame
, 
mode
)

20 
DB_ENV
 *
dbv
;

21 
DB_TXN
 *
tx
;

22 
DB_LSN
 *
t_lp
;

23 
u_t32_t
 
ags
;

24 cڡ 
DBT
 *
me
;

25 
u_t32_t
 
ame
;

26 
u_t32_t
 
mode
;

28 
DBT
 
logc
;

29 
DB_TXNLOGREC
 *

;

30 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

31 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

32 
u_t
 
ad
;

33 
u_t8_t
 *
bp
;

34 
is_dub
, 
t
;

36 
	`COMPQUIET
(

, 
NULL
);

38 
y
 = 
DB___f_
;

39 
ad
 = 0;

40 
p
 = 
t_lp
;

42 
t
 = 0;

44 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

45 i(
tx
 =
NULL
)

47 i(
tx
 =
NULL
)

49 
is_dub
 = 0;

51 
is_dub
 = 1;

53 i(
tx
 =
NULL
) {

54 
txn_num
 = 0;

55 
lp
 = &
nu_l
;

56 
nu_l
.
fe
 =u_l.
offt
 = 0;

58 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

59 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

60  (
t
);

67 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

68 
txn_num
 = 
tx
->
txnid
;

71 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

72 + (
u_t32_t
+ (
me
 =
NULL
 ? 0 :ame->
size
)

73 + (
u_t32_t
)

74 + (
u_t32_t
);

75 i(
	`CRYPTO_ON
(
dbv
)) {

76 
ad
 =

77 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

78 
logc
.
size
 +
ad
;

81 i(
is_dub
 || 
tx
 =
NULL
) {

82 i((
t
 =

83 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

84  (
t
);

86 i((
t
 = 
	`__os_mloc
(
dbv
,

87 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

88  (
t
);

89 #ifde
DIAGNOSTIC


90 i((
t
 =

91 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

92 
	`__os_
(
dbv
, 

);

93  (
t
);

96 
logc
.
da
 = 

->data;

99 i(
ad
 > 0)

100 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

102 
bp
 = 
logc
.
da
;

104 
	`memy
(
bp
, &
y
, (rectype));

105 
bp
 +(
y
);

107 
	`memy
(
bp
, &
txn_num
, (txn_num));

108 
bp
 +(
txn_num
);

110 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

111 
bp
 +(
DB_LSN
);

113 i(
me
 =
NULL
) {

114 
zo
 = 0;

115 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

116 
bp
 +(
u_t32_t
);

118 
	`memy
(
bp
, &
me
->
size
, (name->size));

119 
bp
 +(
me
->
size
);

120 
	`memy
(
bp
, 
me
->
da
,ame->
size
);

121 
bp
 +
me
->
size
;

124 
ump
 = (
u_t32_t
)
ame
;

125 
	`memy
(
bp
, &
ump
, (uinttmp));

126 
bp
 +(
ump
);

128 
ump
 = (
u_t32_t
)
mode
;

129 
	`memy
(
bp
, &
ump
, (uinttmp));

130 
bp
 +(
ump
);

132 
	`DB_ASSERT
(
dbv
,

133 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

135 i(
is_dub
 || 
tx
 =
NULL
) {

136 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

137 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

138 *
lp
 = *
p
;

139 i(
p
 !
t_lp
)

140 *
t_lp
 = *
p
;

143 
t
 = 0;

144 #ifde
DIAGNOSTIC


149 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

150 
y
 |
DB_debug_FLAG
;

151 
	`memy
(
logc
.
da
, &
y
, (rectype));

153 i(!
	`IS_REP_CLIENT
(
dbv
))

154 
t
 = 
	`__log_put
(
dbv
,

155 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

157 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

158 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

159 
	`LSN_NOT_LOGGED
(*
t_lp
);

162 #ifde
LOG_DIAGNOSTIC


163 i(
t
 != 0)

164 ()
	`__f__t
(
dbv
,

165 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

168 #ifde
DIAGNOSTIC


169 
	`__os_
(
dbv
, 
logc
.
da
);

171 i(
is_dub
 || 
tx
 =
NULL
)

172 
	`__os_
(
dbv
, 
logc
.
da
);

174  (
t
);

175 
	}
}

181 
	$__f__ad
(
dbv
, 
cbuf
, 
g
)

182 
DB_ENV
 *
dbv
;

183 *
cbuf
;

184 
__f__gs
 **
g
;

186 
__f__gs
 *
gp
;

187 
u_t32_t
 
ump
;

188 
u_t8_t
 *
bp
;

189 
t
;

191 i((
t
 = 
	`__os_mloc
(
dbv
,

192 (
__f__gs
+ (
DB_TXN
), &
gp
)) != 0)

193  (
t
);

194 
bp
 = 
cbuf
;

195 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

196 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

198 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

199 
bp
 +(
gp
->
ty
);

201 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

202 
bp
 +(
gp
->
tx
->
txnid
);

204 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

205 
bp
 +(
DB_LSN
);

207 
	`memt
(&
gp
->
me
, 0, (argp->name));

208 
	`memy
(&
gp
->
me
.
size
, 
bp
, (
u_t32_t
));

209 
bp
 +(
u_t32_t
);

210 
gp
->
me
.
da
 = 
bp
;

211 
bp
 +
gp
->
me
.
size
;

213 
	`memy
(&
ump
, 
bp
, (uinttmp));

214 
gp
->
ame
 = (
u_t32_t
)
ump
;

215 
bp
 +(
ump
);

217 
	`memy
(&
ump
, 
bp
, (uinttmp));

218 
gp
->
mode
 = (
u_t32_t
)
ump
;

219 
bp
 +(
ump
);

221 *
g
 = 
gp
;

223 
	}
}

230 
	$__f_move_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

231 
me
, 
fid
, 
ame
)

232 
DB_ENV
 *
dbv
;

233 
DB_TXN
 *
tx
;

234 
DB_LSN
 *
t_lp
;

235 
u_t32_t
 
ags
;

236 cڡ 
DBT
 *
me
;

237 cڡ 
DBT
 *
fid
;

238 
u_t32_t
 
ame
;

240 
DBT
 
logc
;

241 
DB_TXNLOGREC
 *

;

242 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

243 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

244 
u_t
 
ad
;

245 
u_t8_t
 *
bp
;

246 
is_dub
, 
t
;

248 
	`COMPQUIET
(

, 
NULL
);

250 
y
 = 
DB___f_move
;

251 
ad
 = 0;

252 
p
 = 
t_lp
;

254 
t
 = 0;

256 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

257 i(
tx
 =
NULL
)

259 i(
tx
 =
NULL
)

261 
is_dub
 = 0;

263 
is_dub
 = 1;

265 i(
tx
 =
NULL
) {

266 
txn_num
 = 0;

267 
lp
 = &
nu_l
;

268 
nu_l
.
fe
 =u_l.
offt
 = 0;

270 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

271 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

272  (
t
);

279 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

280 
txn_num
 = 
tx
->
txnid
;

283 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

284 + (
u_t32_t
+ (
me
 =
NULL
 ? 0 :ame->
size
)

285 + (
u_t32_t
+ (
fid
 =
NULL
 ? 0 : fid->
size
)

286 + (
u_t32_t
);

287 i(
	`CRYPTO_ON
(
dbv
)) {

288 
ad
 =

289 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

290 
logc
.
size
 +
ad
;

293 i(
is_dub
 || 
tx
 =
NULL
) {

294 i((
t
 =

295 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

296  (
t
);

298 i((
t
 = 
	`__os_mloc
(
dbv
,

299 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

300  (
t
);

301 #ifde
DIAGNOSTIC


302 i((
t
 =

303 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

304 
	`__os_
(
dbv
, 

);

305  (
t
);

308 
logc
.
da
 = 

->data;

311 i(
ad
 > 0)

312 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

314 
bp
 = 
logc
.
da
;

316 
	`memy
(
bp
, &
y
, (rectype));

317 
bp
 +(
y
);

319 
	`memy
(
bp
, &
txn_num
, (txn_num));

320 
bp
 +(
txn_num
);

322 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

323 
bp
 +(
DB_LSN
);

325 i(
me
 =
NULL
) {

326 
zo
 = 0;

327 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

328 
bp
 +(
u_t32_t
);

330 
	`memy
(
bp
, &
me
->
size
, (name->size));

331 
bp
 +(
me
->
size
);

332 
	`memy
(
bp
, 
me
->
da
,ame->
size
);

333 
bp
 +
me
->
size
;

336 i(
fid
 =
NULL
) {

337 
zo
 = 0;

338 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

339 
bp
 +(
u_t32_t
);

341 
	`memy
(
bp
, &
fid
->
size
, (fid->size));

342 
bp
 +(
fid
->
size
);

343 
	`memy
(
bp
, 
fid
->
da
, fid->
size
);

344 
bp
 +
fid
->
size
;

347 
ump
 = (
u_t32_t
)
ame
;

348 
	`memy
(
bp
, &
ump
, (uinttmp));

349 
bp
 +(
ump
);

351 
	`DB_ASSERT
(
dbv
,

352 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

354 i(
is_dub
 || 
tx
 =
NULL
) {

355 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

356 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

357 *
lp
 = *
p
;

358 i(
p
 !
t_lp
)

359 *
t_lp
 = *
p
;

362 
t
 = 0;

363 #ifde
DIAGNOSTIC


368 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

369 
y
 |
DB_debug_FLAG
;

370 
	`memy
(
logc
.
da
, &
y
, (rectype));

372 i(!
	`IS_REP_CLIENT
(
dbv
))

373 
t
 = 
	`__log_put
(
dbv
,

374 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

376 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

377 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

378 
	`LSN_NOT_LOGGED
(*
t_lp
);

381 #ifde
LOG_DIAGNOSTIC


382 i(
t
 != 0)

383 ()
	`__f_move_t
(
dbv
,

384 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

387 #ifde
DIAGNOSTIC


388 
	`__os_
(
dbv
, 
logc
.
da
);

390 i(
is_dub
 || 
tx
 =
NULL
)

391 
	`__os_
(
dbv
, 
logc
.
da
);

393  (
t
);

394 
	}
}

400 
	$__f_move_ad
(
dbv
, 
cbuf
, 
g
)

401 
DB_ENV
 *
dbv
;

402 *
cbuf
;

403 
__f_move_gs
 **
g
;

405 
__f_move_gs
 *
gp
;

406 
u_t32_t
 
ump
;

407 
u_t8_t
 *
bp
;

408 
t
;

410 i((
t
 = 
	`__os_mloc
(
dbv
,

411 (
__f_move_gs
+ (
DB_TXN
), &
gp
)) != 0)

412  (
t
);

413 
bp
 = 
cbuf
;

414 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

415 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

417 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

418 
bp
 +(
gp
->
ty
);

420 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

421 
bp
 +(
gp
->
tx
->
txnid
);

423 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

424 
bp
 +(
DB_LSN
);

426 
	`memt
(&
gp
->
me
, 0, (argp->name));

427 
	`memy
(&
gp
->
me
.
size
, 
bp
, (
u_t32_t
));

428 
bp
 +(
u_t32_t
);

429 
gp
->
me
.
da
 = 
bp
;

430 
bp
 +
gp
->
me
.
size
;

432 
	`memt
(&
gp
->
fid
, 0, (argp->fid));

433 
	`memy
(&
gp
->
fid
.
size
, 
bp
, (
u_t32_t
));

434 
bp
 +(
u_t32_t
);

435 
gp
->
fid
.
da
 = 
bp
;

436 
bp
 +
gp
->
fid
.
size
;

438 
	`memy
(&
ump
, 
bp
, (uinttmp));

439 
gp
->
ame
 = (
u_t32_t
)
ump
;

440 
bp
 +(
ump
);

442 *
g
 = 
gp
;

444 
	}
}

452 
	$__f_wre_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

453 
me
, 
ame
, 
pgsize
, 
go
, 
offt
, 
ge
,

454 
ag
)

455 
DB_ENV
 *
dbv
;

456 
DB_TXN
 *
tx
;

457 
DB_LSN
 *
t_lp
;

458 
u_t32_t
 
ags
;

459 cڡ 
DBT
 *
me
;

460 
u_t32_t
 
ame
;

461 
u_t32_t
 
pgsize
;

462 
db_pgno_t
 
go
;

463 
u_t32_t
 
offt
;

464 cڡ 
DBT
 *
ge
;

465 
u_t32_t
 
ag
;

467 
DBT
 
logc
;

468 
DB_TXNLOGREC
 *

;

469 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

470 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

471 
u_t
 
ad
;

472 
u_t8_t
 *
bp
;

473 
is_dub
, 
t
;

475 
	`COMPQUIET
(

, 
NULL
);

477 
y
 = 
DB___f_wre
;

478 
ad
 = 0;

479 
p
 = 
t_lp
;

481 
t
 = 0;

483 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

484 i(
tx
 =
NULL
)

486 i(
tx
 =
NULL
)

488 
is_dub
 = 0;

490 
is_dub
 = 1;

492 i(
tx
 =
NULL
) {

493 
txn_num
 = 0;

494 
lp
 = &
nu_l
;

495 
nu_l
.
fe
 =u_l.
offt
 = 0;

497 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

498 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

499  (
t
);

506 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

507 
txn_num
 = 
tx
->
txnid
;

510 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

511 + (
u_t32_t
+ (
me
 =
NULL
 ? 0 :ame->
size
)

512 + (
u_t32_t
)

513 + (
u_t32_t
)

514 + (
u_t32_t
)

515 + (
u_t32_t
)

516 + (
u_t32_t
+ (
ge
 =
NULL
 ? 0 :age->
size
)

517 + (
u_t32_t
);

518 i(
	`CRYPTO_ON
(
dbv
)) {

519 
ad
 =

520 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

521 
logc
.
size
 +
ad
;

524 i(
is_dub
 || 
tx
 =
NULL
) {

525 i((
t
 =

526 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

527  (
t
);

529 i((
t
 = 
	`__os_mloc
(
dbv
,

530 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

531  (
t
);

532 #ifde
DIAGNOSTIC


533 i((
t
 =

534 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

535 
	`__os_
(
dbv
, 

);

536  (
t
);

539 
logc
.
da
 = 

->data;

542 i(
ad
 > 0)

543 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

545 
bp
 = 
logc
.
da
;

547 
	`memy
(
bp
, &
y
, (rectype));

548 
bp
 +(
y
);

550 
	`memy
(
bp
, &
txn_num
, (txn_num));

551 
bp
 +(
txn_num
);

553 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

554 
bp
 +(
DB_LSN
);

556 i(
me
 =
NULL
) {

557 
zo
 = 0;

558 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

559 
bp
 +(
u_t32_t
);

561 
	`memy
(
bp
, &
me
->
size
, (name->size));

562 
bp
 +(
me
->
size
);

563 
	`memy
(
bp
, 
me
->
da
,ame->
size
);

564 
bp
 +
me
->
size
;

567 
ump
 = (
u_t32_t
)
ame
;

568 
	`memy
(
bp
, &
ump
, (uinttmp));

569 
bp
 +(
ump
);

571 
ump
 = (
u_t32_t
)
pgsize
;

572 
	`memy
(
bp
, &
ump
, (uinttmp));

573 
bp
 +(
ump
);

575 
ump
 = (
u_t32_t
)
go
;

576 
	`memy
(
bp
, &
ump
, (uinttmp));

577 
bp
 +(
ump
);

579 
ump
 = (
u_t32_t
)
offt
;

580 
	`memy
(
bp
, &
ump
, (uinttmp));

581 
bp
 +(
ump
);

583 i(
ge
 =
NULL
) {

584 
zo
 = 0;

585 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

586 
bp
 +(
u_t32_t
);

588 
	`memy
(
bp
, &
ge
->
size
, (page->size));

589 
bp
 +(
ge
->
size
);

590 
	`memy
(
bp
, 
ge
->
da
,age->
size
);

591 
bp
 +
ge
->
size
;

594 
ump
 = (
u_t32_t
)
ag
;

595 
	`memy
(
bp
, &
ump
, (uinttmp));

596 
bp
 +(
ump
);

598 
	`DB_ASSERT
(
dbv
,

599 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

601 i(
is_dub
 || 
tx
 =
NULL
) {

602 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

603 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

604 *
lp
 = *
p
;

605 i(
p
 !
t_lp
)

606 *
t_lp
 = *
p
;

609 
t
 = 0;

610 #ifde
DIAGNOSTIC


615 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

616 
y
 |
DB_debug_FLAG
;

617 
	`memy
(
logc
.
da
, &
y
, (rectype));

619 i(!
	`IS_REP_CLIENT
(
dbv
))

620 
t
 = 
	`__log_put
(
dbv
,

621 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

623 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

624 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

625 
	`LSN_NOT_LOGGED
(*
t_lp
);

628 #ifde
LOG_DIAGNOSTIC


629 i(
t
 != 0)

630 ()
	`__f_wre_t
(
dbv
,

631 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

634 #ifde
DIAGNOSTIC


635 
	`__os_
(
dbv
, 
logc
.
da
);

637 i(
is_dub
 || 
tx
 =
NULL
)

638 
	`__os_
(
dbv
, 
logc
.
da
);

640  (
t
);

641 
	}
}

647 
	$__f_wre_ad
(
dbv
, 
cbuf
, 
g
)

648 
DB_ENV
 *
dbv
;

649 *
cbuf
;

650 
__f_wre_gs
 **
g
;

652 
__f_wre_gs
 *
gp
;

653 
u_t32_t
 
ump
;

654 
u_t8_t
 *
bp
;

655 
t
;

657 i((
t
 = 
	`__os_mloc
(
dbv
,

658 (
__f_wre_gs
+ (
DB_TXN
), &
gp
)) != 0)

659  (
t
);

660 
bp
 = 
cbuf
;

661 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

662 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

664 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

665 
bp
 +(
gp
->
ty
);

667 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

668 
bp
 +(
gp
->
tx
->
txnid
);

670 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

671 
bp
 +(
DB_LSN
);

673 
	`memt
(&
gp
->
me
, 0, (argp->name));

674 
	`memy
(&
gp
->
me
.
size
, 
bp
, (
u_t32_t
));

675 
bp
 +(
u_t32_t
);

676 
gp
->
me
.
da
 = 
bp
;

677 
bp
 +
gp
->
me
.
size
;

679 
	`memy
(&
ump
, 
bp
, (uinttmp));

680 
gp
->
ame
 = (
u_t32_t
)
ump
;

681 
bp
 +(
ump
);

683 
	`memy
(&
ump
, 
bp
, (uinttmp));

684 
gp
->
pgsize
 = (
u_t32_t
)
ump
;

685 
bp
 +(
ump
);

687 
	`memy
(&
ump
, 
bp
, (uinttmp));

688 
gp
->
go
 = (
db_pgno_t
)
ump
;

689 
bp
 +(
ump
);

691 
	`memy
(&
ump
, 
bp
, (uinttmp));

692 
gp
->
offt
 = (
u_t32_t
)
ump
;

693 
bp
 +(
ump
);

695 
	`memt
(&
gp
->
ge
, 0, (argp->page));

696 
	`memy
(&
gp
->
ge
.
size
, 
bp
, (
u_t32_t
));

697 
bp
 +(
u_t32_t
);

698 
gp
->
ge
.
da
 = 
bp
;

699 
bp
 +
gp
->
ge
.
size
;

701 
	`memy
(&
ump
, 
bp
, (uinttmp));

702 
gp
->
ag
 = (
u_t32_t
)
ump
;

703 
bp
 +(
ump
);

705 *
g
 = 
gp
;

707 
	}
}

724 
	$__f_me_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

725 
dme
, 
wme
, 
feid
, 
ame
)

726 
DB_ENV
 *
dbv
;

727 
DB_TXN
 *
tx
;

728 
DB_LSN
 *
t_lp
;

729 
u_t32_t
 
ags
;

730 cڡ 
DBT
 *
dme
;

731 cڡ 
DBT
 *
wme
;

732 cڡ 
DBT
 *
feid
;

733 
u_t32_t
 
ame
;

736  (
	`__f_me_t_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

737 
dme
, 
wme
, 
feid
, 
ame
, 
DB___f_me
));

738 
	}
}

740 
	$__f_me_noundo_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

741 
dme
, 
wme
, 
feid
, 
ame
)

742 
DB_ENV
 *
dbv
;

743 
DB_TXN
 *
tx
;

744 
DB_LSN
 *
t_lp
;

745 
u_t32_t
 
ags
;

746 cڡ 
DBT
 *
dme
;

747 cڡ 
DBT
 *
wme
;

748 cڡ 
DBT
 *
feid
;

749 
u_t32_t
 
ame
;

752  (
	`__f_me_t_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

753 
dme
, 
wme
, 
feid
, 
ame
, 
DB___f_me_noundo
));

754 
	}
}

756 
	$__f_me_t_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

757 
dme
, 
wme
, 
feid
, 
ame
, 
ty
)

758 
DB_ENV
 *
dbv
;

759 
DB_TXN
 *
tx
;

760 
DB_LSN
 *
t_lp
;

761 
u_t32_t
 
ags
;

762 cڡ 
DBT
 *
dme
;

763 cڡ 
DBT
 *
wme
;

764 cڡ 
DBT
 *
feid
;

765 
u_t32_t
 
ame
;

766 
u_t32_t
 
ty
;

768 
DBT
 
logc
;

769 
DB_TXNLOGREC
 *

;

770 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

771 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

772 
u_t
 
ad
;

773 
u_t8_t
 *
bp
;

774 
is_dub
, 
t
;

776 
	`COMPQUIET
(

, 
NULL
);

778 
y
 = 
ty
;

779 
ad
 = 0;

780 
p
 = 
t_lp
;

782 
t
 = 0;

784 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

785 i(
tx
 =
NULL
)

787 i(
tx
 =
NULL
)

789 
is_dub
 = 0;

791 
is_dub
 = 1;

793 i(
tx
 =
NULL
) {

794 
txn_num
 = 0;

795 
lp
 = &
nu_l
;

796 
nu_l
.
fe
 =u_l.
offt
 = 0;

798 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

799 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

800  (
t
);

807 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

808 
txn_num
 = 
tx
->
txnid
;

811 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

812 + (
u_t32_t
+ (
dme
 =
NULL
 ? 0 : oldme->
size
)

813 + (
u_t32_t
+ (
wme
 =
NULL
 ? 0 :ewme->
size
)

814 + (
u_t32_t
+ (
feid
 =
NULL
 ? 0 : feid->
size
)

815 + (
u_t32_t
);

816 i(
	`CRYPTO_ON
(
dbv
)) {

817 
ad
 =

818 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

819 
logc
.
size
 +
ad
;

822 i(
is_dub
 || 
tx
 =
NULL
) {

823 i((
t
 =

824 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

825  (
t
);

827 i((
t
 = 
	`__os_mloc
(
dbv
,

828 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

829  (
t
);

830 #ifde
DIAGNOSTIC


831 i((
t
 =

832 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

833 
	`__os_
(
dbv
, 

);

834  (
t
);

837 
logc
.
da
 = 

->data;

840 i(
ad
 > 0)

841 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

843 
bp
 = 
logc
.
da
;

845 
	`memy
(
bp
, &
y
, (rectype));

846 
bp
 +(
y
);

848 
	`memy
(
bp
, &
txn_num
, (txn_num));

849 
bp
 +(
txn_num
);

851 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

852 
bp
 +(
DB_LSN
);

854 i(
dme
 =
NULL
) {

855 
zo
 = 0;

856 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

857 
bp
 +(
u_t32_t
);

859 
	`memy
(
bp
, &
dme
->
size
, (oldname->size));

860 
bp
 +(
dme
->
size
);

861 
	`memy
(
bp
, 
dme
->
da
, oldme->
size
);

862 
bp
 +
dme
->
size
;

865 i(
wme
 =
NULL
) {

866 
zo
 = 0;

867 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

868 
bp
 +(
u_t32_t
);

870 
	`memy
(
bp
, &
wme
->
size
, (newname->size));

871 
bp
 +(
wme
->
size
);

872 
	`memy
(
bp
, 
wme
->
da
,ewme->
size
);

873 
bp
 +
wme
->
size
;

876 i(
feid
 =
NULL
) {

877 
zo
 = 0;

878 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

879 
bp
 +(
u_t32_t
);

881 
	`memy
(
bp
, &
feid
->
size
, (fileid->size));

882 
bp
 +(
feid
->
size
);

883 
	`memy
(
bp
, 
feid
->
da
, feid->
size
);

884 
bp
 +
feid
->
size
;

887 
ump
 = (
u_t32_t
)
ame
;

888 
	`memy
(
bp
, &
ump
, (uinttmp));

889 
bp
 +(
ump
);

891 
	`DB_ASSERT
(
dbv
,

892 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

894 i(
is_dub
 || 
tx
 =
NULL
) {

895 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

896 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

897 *
lp
 = *
p
;

898 i(
p
 !
t_lp
)

899 *
t_lp
 = *
p
;

902 
t
 = 0;

903 #ifde
DIAGNOSTIC


908 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

909 
y
 |
DB_debug_FLAG
;

910 
	`memy
(
logc
.
da
, &
y
, (rectype));

912 i(!
	`IS_REP_CLIENT
(
dbv
))

913 
t
 = 
	`__log_put
(
dbv
,

914 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

916 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

917 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

918 
	`LSN_NOT_LOGGED
(*
t_lp
);

921 #ifde
LOG_DIAGNOSTIC


922 i(
t
 != 0)

923 ()
	`__f_me_t
(
dbv
,

924 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

927 #ifde
DIAGNOSTIC


928 
	`__os_
(
dbv
, 
logc
.
da
);

930 i(
is_dub
 || 
tx
 =
NULL
)

931 
	`__os_
(
dbv
, 
logc
.
da
);

933  (
t
);

934 
	}
}

940 
	$__f_me_ad
(
dbv
, 
cbuf
, 
g
)

941 
DB_ENV
 *
dbv
;

942 *
cbuf
;

943 
__f_me_gs
 **
g
;

945 
__f_me_gs
 *
gp
;

946 
u_t32_t
 
ump
;

947 
u_t8_t
 *
bp
;

948 
t
;

950 i((
t
 = 
	`__os_mloc
(
dbv
,

951 (
__f_me_gs
+ (
DB_TXN
), &
gp
)) != 0)

952  (
t
);

953 
bp
 = 
cbuf
;

954 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

955 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

957 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

958 
bp
 +(
gp
->
ty
);

960 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

961 
bp
 +(
gp
->
tx
->
txnid
);

963 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

964 
bp
 +(
DB_LSN
);

966 
	`memt
(&
gp
->
dme
, 0, (argp->oldname));

967 
	`memy
(&
gp
->
dme
.
size
, 
bp
, (
u_t32_t
));

968 
bp
 +(
u_t32_t
);

969 
gp
->
dme
.
da
 = 
bp
;

970 
bp
 +
gp
->
dme
.
size
;

972 
	`memt
(&
gp
->
wme
, 0, (argp->newname));

973 
	`memy
(&
gp
->
wme
.
size
, 
bp
, (
u_t32_t
));

974 
bp
 +(
u_t32_t
);

975 
gp
->
wme
.
da
 = 
bp
;

976 
bp
 +
gp
->
wme
.
size
;

978 
	`memt
(&
gp
->
feid
, 0, (argp->fileid));

979 
	`memy
(&
gp
->
feid
.
size
, 
bp
, (
u_t32_t
));

980 
bp
 +(
u_t32_t
);

981 
gp
->
feid
.
da
 = 
bp
;

982 
bp
 +
gp
->
feid
.
size
;

984 
	`memy
(&
ump
, 
bp
, (uinttmp));

985 
gp
->
ame
 = (
u_t32_t
)
ump
;

986 
bp
 +(
ump
);

988 *
g
 = 
gp
;

990 
	}
}

998 
	$__f_fe_move_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

999 
_fid
, 
tmp_fid
, 
me
, 
ame
, 
chd
)

1000 
DB_ENV
 *
dbv
;

1001 
DB_TXN
 *
tx
;

1002 
DB_LSN
 *
t_lp
;

1003 
u_t32_t
 
ags
;

1004 cڡ 
DBT
 *
_fid
;

1005 cڡ 
DBT
 *
tmp_fid
;

1006 cڡ 
DBT
 *
me
;

1007 
u_t32_t
 
ame
;

1008 
u_t32_t
 
chd
;

1010 
DBT
 
logc
;

1011 
DB_TXNLOGREC
 *

;

1012 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1013 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

1014 
u_t
 
ad
;

1015 
u_t8_t
 *
bp
;

1016 
is_dub
, 
t
;

1018 
	`COMPQUIET
(

, 
NULL
);

1020 
y
 = 
DB___f_fe_move
;

1021 
ad
 = 0;

1022 
p
 = 
t_lp
;

1024 
t
 = 0;

1026 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

1027 i(
tx
 =
NULL
)

1029 i(
tx
 =
NULL
)

1031 
is_dub
 = 0;

1033 
is_dub
 = 1;

1035 i(
tx
 =
NULL
) {

1036 
txn_num
 = 0;

1037 
lp
 = &
nu_l
;

1038 
nu_l
.
fe
 =u_l.
offt
 = 0;

1040 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1041 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1042  (
t
);

1049 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1050 
txn_num
 = 
tx
->
txnid
;

1053 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1054 + (
u_t32_t
+ (
_fid
 =
NULL
 ? 0 :l_fid->
size
)

1055 + (
u_t32_t
+ (
tmp_fid
 =
NULL
 ? 0 :mp_fid->
size
)

1056 + (
u_t32_t
+ (
me
 =
NULL
 ? 0 :ame->
size
)

1057 + (
u_t32_t
)

1058 + (
u_t32_t
);

1059 i(
	`CRYPTO_ON
(
dbv
)) {

1060 
ad
 =

1061 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1062 
logc
.
size
 +
ad
;

1065 i(
is_dub
 || 
tx
 =
NULL
) {

1066 i((
t
 =

1067 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1068  (
t
);

1070 i((
t
 = 
	`__os_mloc
(
dbv
,

1071 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1072  (
t
);

1073 #ifde
DIAGNOSTIC


1074 i((
t
 =

1075 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1076 
	`__os_
(
dbv
, 

);

1077  (
t
);

1080 
logc
.
da
 = 

->data;

1083 i(
ad
 > 0)

1084 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1086 
bp
 = 
logc
.
da
;

1088 
	`memy
(
bp
, &
y
, (rectype));

1089 
bp
 +(
y
);

1091 
	`memy
(
bp
, &
txn_num
, (txn_num));

1092 
bp
 +(
txn_num
);

1094 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1095 
bp
 +(
DB_LSN
);

1097 i(
_fid
 =
NULL
) {

1098 
zo
 = 0;

1099 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1100 
bp
 +(
u_t32_t
);

1102 
	`memy
(
bp
, &
_fid
->
size
, (real_fid->size));

1103 
bp
 +(
_fid
->
size
);

1104 
	`memy
(
bp
, 
_fid
->
da
,l_fid->
size
);

1105 
bp
 +
_fid
->
size
;

1108 i(
tmp_fid
 =
NULL
) {

1109 
zo
 = 0;

1110 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1111 
bp
 +(
u_t32_t
);

1113 
	`memy
(
bp
, &
tmp_fid
->
size
, (tmp_fid->size));

1114 
bp
 +(
tmp_fid
->
size
);

1115 
	`memy
(
bp
, 
tmp_fid
->
da
,mp_fid->
size
);

1116 
bp
 +
tmp_fid
->
size
;

1119 i(
me
 =
NULL
) {

1120 
zo
 = 0;

1121 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1122 
bp
 +(
u_t32_t
);

1124 
	`memy
(
bp
, &
me
->
size
, (name->size));

1125 
bp
 +(
me
->
size
);

1126 
	`memy
(
bp
, 
me
->
da
,ame->
size
);

1127 
bp
 +
me
->
size
;

1130 
ump
 = (
u_t32_t
)
ame
;

1131 
	`memy
(
bp
, &
ump
, (uinttmp));

1132 
bp
 +(
ump
);

1134 
ump
 = (
u_t32_t
)
chd
;

1135 
	`memy
(
bp
, &
ump
, (uinttmp));

1136 
bp
 +(
ump
);

1138 
	`DB_ASSERT
(
dbv
,

1139 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1141 i(
is_dub
 || 
tx
 =
NULL
) {

1142 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1143 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1144 *
lp
 = *
p
;

1145 i(
p
 !
t_lp
)

1146 *
t_lp
 = *
p
;

1149 
t
 = 0;

1150 #ifde
DIAGNOSTIC


1155 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1156 
y
 |
DB_debug_FLAG
;

1157 
	`memy
(
logc
.
da
, &
y
, (rectype));

1159 i(!
	`IS_REP_CLIENT
(
dbv
))

1160 
t
 = 
	`__log_put
(
dbv
,

1161 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1163 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1164 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1165 
	`LSN_NOT_LOGGED
(*
t_lp
);

1168 #ifde
LOG_DIAGNOSTIC


1169 i(
t
 != 0)

1170 ()
	`__f_fe_move_t
(
dbv
,

1171 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1174 #ifde
DIAGNOSTIC


1175 
	`__os_
(
dbv
, 
logc
.
da
);

1177 i(
is_dub
 || 
tx
 =
NULL
)

1178 
	`__os_
(
dbv
, 
logc
.
da
);

1180  (
t
);

1181 
	}
}

1188 
	$__f_fe_move_ad
(
dbv
, 
cbuf
, 
g
)

1189 
DB_ENV
 *
dbv
;

1190 *
cbuf
;

1191 
__f_fe_move_gs
 **
g
;

1193 
__f_fe_move_gs
 *
gp
;

1194 
u_t32_t
 
ump
;

1195 
u_t8_t
 *
bp
;

1196 
t
;

1198 i((
t
 = 
	`__os_mloc
(
dbv
,

1199 (
__f_fe_move_gs
+ (
DB_TXN
), &
gp
)) != 0)

1200  (
t
);

1201 
bp
 = 
cbuf
;

1202 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1203 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1205 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1206 
bp
 +(
gp
->
ty
);

1208 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1209 
bp
 +(
gp
->
tx
->
txnid
);

1211 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1212 
bp
 +(
DB_LSN
);

1214 
	`memt
(&
gp
->
_fid
, 0, (argp->real_fid));

1215 
	`memy
(&
gp
->
_fid
.
size
, 
bp
, (
u_t32_t
));

1216 
bp
 +(
u_t32_t
);

1217 
gp
->
_fid
.
da
 = 
bp
;

1218 
bp
 +
gp
->
_fid
.
size
;

1220 
	`memt
(&
gp
->
tmp_fid
, 0, (argp->tmp_fid));

1221 
	`memy
(&
gp
->
tmp_fid
.
size
, 
bp
, (
u_t32_t
));

1222 
bp
 +(
u_t32_t
);

1223 
gp
->
tmp_fid
.
da
 = 
bp
;

1224 
bp
 +
gp
->
tmp_fid
.
size
;

1226 
	`memt
(&
gp
->
me
, 0, (argp->name));

1227 
	`memy
(&
gp
->
me
.
size
, 
bp
, (
u_t32_t
));

1228 
bp
 +(
u_t32_t
);

1229 
gp
->
me
.
da
 = 
bp
;

1230 
bp
 +
gp
->
me
.
size
;

1232 
	`memy
(&
ump
, 
bp
, (uinttmp));

1233 
gp
->
ame
 = (
u_t32_t
)
ump
;

1234 
bp
 +(
ump
);

1236 
	`memy
(&
ump
, 
bp
, (uinttmp));

1237 
gp
->
chd
 = (
u_t32_t
)
ump
;

1238 
bp
 +(
ump
);

1240 *
g
 = 
gp
;

1242 
	}
}

1249 
	$__f__cov
(
dbv
, 
dbp
, 
dbsiz
)

1250 
DB_ENV
 *
dbv
;

1251 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

1252 
size_t
 *
dbsiz
;

1254 
t
;

1256 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1257 
__f__cov
, 
DB___f_
)) != 0)

1258  (
t
);

1259 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1260 
__f_move_cov
, 
DB___f_move
)) != 0)

1261  (
t
);

1262 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1263 
__f_wre_cov
, 
DB___f_wre
)) != 0)

1264  (
t
);

1265 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1266 
__f_me_cov
, 
DB___f_me
)) != 0)

1267  (
t
);

1268 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1269 
__f_me_noundo_cov
, 
DB___f_me_noundo
)) != 0)

1270  (
t
);

1271 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1272 
__f_fe_move_cov
, 
DB___f_fe_move
)) != 0)

1273  (
t
);

1275 
	}
}

	@../fileops/fileops_autop.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_am.h
"

9 
	~"dbc/log.h
"

10 
	~"dbc/txn.h
"

11 
	~"dbc/f.h
"

18 
	$__f__t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

19 
DB_ENV
 *
dbv
;

20 
DBT
 *
db
;

21 
DB_LSN
 *
lp
;

22 
db_cs
 
nud2
;

23 *
nud3
;

25 
__f__gs
 *
gp
;

26 
u_t32_t
 
i
;

27 
ch
;

28 
t
;

30 
nud2
 = 
DB_TXN_PRINT
;

31 
nud3
 = 
NULL
;

33 i((
t
 = 
	`__f__ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

34  (
t
);

35 ()
	`tf
(

37 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

38 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

39 (
u_lg
)
gp
->
ty
,

40 (
u_lg
)
gp
->
tx
->
txnid
,

41 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

42 ()
	`tf
("\tname: ");

43 
i
 = 0; i < 
gp
->
me
.
size
; i++) {

44 
ch
 = ((
u_t8_t
 *)
gp
->
me
.
da
)[
i
];

45 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

47 ()
	`tf
("\n");

48 ()
	`tf
("\me: %lu\n", (
u_lg
)
gp
->
ame
);

49 ()
	`tf
("\tmode: %o\n", 
gp
->
mode
);

50 ()
	`tf
("\n");

51 
	`__os_
(
dbv
, 
gp
);

53 
	}
}

60 
	$__f_move_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

61 
DB_ENV
 *
dbv
;

62 
DBT
 *
db
;

63 
DB_LSN
 *
lp
;

64 
db_cs
 
nud2
;

65 *
nud3
;

67 
__f_move_gs
 *
gp
;

68 
u_t32_t
 
i
;

69 
ch
;

70 
t
;

72 
nud2
 = 
DB_TXN_PRINT
;

73 
nud3
 = 
NULL
;

75 i((
t
 = 
	`__f_move_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

76  (
t
);

77 ()
	`tf
(

79 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

80 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

81 (
u_lg
)
gp
->
ty
,

82 (
u_lg
)
gp
->
tx
->
txnid
,

83 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

84 ()
	`tf
("\tname: ");

85 
i
 = 0; i < 
gp
->
me
.
size
; i++) {

86 
ch
 = ((
u_t8_t
 *)
gp
->
me
.
da
)[
i
];

87 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

89 ()
	`tf
("\n");

90 ()
	`tf
("\tfid: ");

91 
i
 = 0; i < 
gp
->
fid
.
size
; i++) {

92 
ch
 = ((
u_t8_t
 *)
gp
->
fid
.
da
)[
i
];

93 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

95 ()
	`tf
("\n");

96 ()
	`tf
("\me: %lu\n", (
u_lg
)
gp
->
ame
);

97 ()
	`tf
("\n");

98 
	`__os_
(
dbv
, 
gp
);

100 
	}
}

107 
	$__f_wre_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

108 
DB_ENV
 *
dbv
;

109 
DBT
 *
db
;

110 
DB_LSN
 *
lp
;

111 
db_cs
 
nud2
;

112 *
nud3
;

114 
__f_wre_gs
 *
gp
;

115 
u_t32_t
 
i
;

116 
ch
;

117 
t
;

119 
nud2
 = 
DB_TXN_PRINT
;

120 
nud3
 = 
NULL
;

122 i((
t
 = 
	`__f_wre_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

123  (
t
);

124 ()
	`tf
(

126 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

127 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

128 (
u_lg
)
gp
->
ty
,

129 (
u_lg
)
gp
->
tx
->
txnid
,

130 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

131 ()
	`tf
("\tname: ");

132 
i
 = 0; i < 
gp
->
me
.
size
; i++) {

133 
ch
 = ((
u_t8_t
 *)
gp
->
me
.
da
)[
i
];

134 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

136 ()
	`tf
("\n");

137 ()
	`tf
("\me: %lu\n", (
u_lg
)
gp
->
ame
);

138 ()
	`tf
("\gsize: %lu\n", (
u_lg
)
gp
->
pgsize
);

139 ()
	`tf
("\ago: %lu\n", (
u_lg
)
gp
->
go
);

140 ()
	`tf
("\tofft: %lu\n", (
u_lg
)
gp
->
offt
);

141 ()
	`tf
("\tpage: ");

142 
i
 = 0; i < 
gp
->
ge
.
size
; i++) {

143 
ch
 = ((
u_t8_t
 *)
gp
->
ge
.
da
)[
i
];

144 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

146 ()
	`tf
("\n");

147 ()
	`tf
("\tag: %lu\n", (
u_lg
)
gp
->
ag
);

148 ()
	`tf
("\n");

149 
	`__os_
(
dbv
, 
gp
);

151 
	}
}

158 
	$__f_me_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

159 
DB_ENV
 *
dbv
;

160 
DBT
 *
db
;

161 
DB_LSN
 *
lp
;

162 
db_cs
 
nud2
;

163 *
nud3
;

165 
__f_me_gs
 *
gp
;

166 
u_t32_t
 
i
;

167 
ch
;

168 
t
;

170 
nud2
 = 
DB_TXN_PRINT
;

171 
nud3
 = 
NULL
;

173 i((
t
 = 
	`__f_me_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

174  (
t
);

175 ()
	`tf
(

177 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

178 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

179 (
u_lg
)
gp
->
ty
,

180 (
u_lg
)
gp
->
tx
->
txnid
,

181 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

182 ()
	`tf
("\toldname: ");

183 
i
 = 0; i < 
gp
->
dme
.
size
; i++) {

184 
ch
 = ((
u_t8_t
 *)
gp
->
dme
.
da
)[
i
];

185 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

187 ()
	`tf
("\n");

188 ()
	`tf
("\tnewname: ");

189 
i
 = 0; i < 
gp
->
wme
.
size
; i++) {

190 
ch
 = ((
u_t8_t
 *)
gp
->
wme
.
da
)[
i
];

191 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

193 ()
	`tf
("\n");

194 ()
	`tf
("\tfileid: ");

195 
i
 = 0; i < 
gp
->
feid
.
size
; i++) {

196 
ch
 = ((
u_t8_t
 *)
gp
->
feid
.
da
)[
i
];

197 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

199 ()
	`tf
("\n");

200 ()
	`tf
("\me: %lu\n", (
u_lg
)
gp
->
ame
);

201 ()
	`tf
("\n");

202 
	`__os_
(
dbv
, 
gp
);

204 
	}
}

211 
	$__f_fe_move_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

212 
DB_ENV
 *
dbv
;

213 
DBT
 *
db
;

214 
DB_LSN
 *
lp
;

215 
db_cs
 
nud2
;

216 *
nud3
;

218 
__f_fe_move_gs
 *
gp
;

219 
u_t32_t
 
i
;

220 
ch
;

221 
t
;

223 
nud2
 = 
DB_TXN_PRINT
;

224 
nud3
 = 
NULL
;

226 i((
t
 = 
	`__f_fe_move_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

227  (
t
);

228 ()
	`tf
(

230 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

231 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

232 (
u_lg
)
gp
->
ty
,

233 (
u_lg
)
gp
->
tx
->
txnid
,

234 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

235 ()
	`tf
("\treal_fid: ");

236 
i
 = 0; i < 
gp
->
_fid
.
size
; i++) {

237 
ch
 = ((
u_t8_t
 *)
gp
->
_fid
.
da
)[
i
];

238 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

240 ()
	`tf
("\n");

241 ()
	`tf
("\ttmp_fid: ");

242 
i
 = 0; i < 
gp
->
tmp_fid
.
size
; i++) {

243 
ch
 = ((
u_t8_t
 *)
gp
->
tmp_fid
.
da
)[
i
];

244 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

246 ()
	`tf
("\n");

247 ()
	`tf
("\tname: ");

248 
i
 = 0; i < 
gp
->
me
.
size
; i++) {

249 
ch
 = ((
u_t8_t
 *)
gp
->
me
.
da
)[
i
];

250 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

252 ()
	`tf
("\n");

253 ()
	`tf
("\me: %lu\n", (
u_lg
)
gp
->
ame
);

254 ()
	`tf
("\tchd: 0x%lx\n", (
u_lg
)
gp
->
chd
);

255 ()
	`tf
("\n");

256 
	`__os_
(
dbv
, 
gp
);

258 
	}
}

265 
	$__f__t
(
dbv
, 
dbp
, 
dbsiz
)

266 
DB_ENV
 *
dbv
;

267 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

268 
size_t
 *
dbsiz
;

270 
t
;

272 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

273 
__f__t
, 
DB___f_
)) != 0)

274  (
t
);

275 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

276 
__f_move_t
, 
DB___f_move
)) != 0)

277  (
t
);

278 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

279 
__f_wre_t
, 
DB___f_wre
)) != 0)

280  (
t
);

281 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

282 
__f_me_t
, 
DB___f_me
)) != 0)

283  (
t
);

284 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

285 
__f_me_t
, 
DB___f_me_noundo
)) != 0)

286  (
t
);

287 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

288 
__f_fe_move_t
, 
DB___f_fe_move
)) != 0)

289  (
t
);

291 
	}
}

	@../fileops/fop_basic.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/f.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/mp.h
"

16 
	~"dbc/txn.h
"

17 
	~"dbc/db_am.h
"

59 
	$__f_
(
dbv
, 
txn
, 
fh
, 
me
, 
ame
, 
mode
, 
ags
)

60 
DB_ENV
 *
dbv
;

61 
DB_TXN
 *
txn
;

62 
DB_FH
 **
fh
;

63 cڡ *
me
;

64 
APPNAME
 
ame
;

65 
mode
;

66 
u_t32_t
 
ags
;

68 
DB_FH
 *
fhp
;

69 
DB_LSN
 
l
;

70 
DBT
 
da
;

71 
t
;

72 *
_me
;

74 
_me
 = 
NULL
;

75 
fhp
 = 
NULL
;

77 i((
t
 =

78 
	`__db_ame
(
dbv
, 
ame
, 
me
, 0, 
NULL
, &
_me
)) != 0)

79  (
t
);

81 i(
mode
 == 0)

82 
mode
 = 
	`__db_omode
(
OWNER_RW
);

84 i(
	`DBENV_LOGGING
(
dbv
)

85 #i!
	`defed
(
DEBUG_WOP
)

86 && 
txn
 !
NULL


89 
	`DB_INIT_DBT
(
da
, 
me
, 
	`
(name) + 1);

90 i((
t
 = 
	`__f__log
(
dbv
, 
txn
, &
l
,

91 
ags
 | 
DB_FLUSH
,

92 &
da
, (
u_t32_t
)
ame
, (u_t32_t)
mode
)) != 0)

93 
r
;

96 
	`DB_ENV_TEST_RECOVERY
(
dbv
, 
DB_TEST_POSTLOG
, 
t
, 
me
);

98 i(
fh
 =
NULL
)

99 
fh
 = &
fhp
;

100 
t
 = 
	`__os_ݒ
(

101 
dbv
, 
_me
, 0, 
DB_OSO_CREATE
 | 
DB_OSO_EXCL
, 
mode
, 
fh
);

103 
r
:

104 
DB_TEST_RECOVERY_LABEL


105 i(
fh
 =&
fhp
 && fh!
NULL
)

106 ()
	`__os_ohd
(
dbv
, 
fhp
);

107 i(
_me
 !
NULL
)

108 
	`__os_
(
dbv
, 
_me
);

109  (
t
);

110 
	}
}

120 
	$__f_move
(
dbv
, 
txn
, 
feid
, 
me
, 
ame
, 
ags
)

121 
DB_ENV
 *
dbv
;

122 
DB_TXN
 *
txn
;

123 
u_t8_t
 *
feid
;

124 cڡ *
me
;

125 
APPNAME
 
ame
;

126 
u_t32_t
 
ags
;

128 
DB_LSN
 
l
;

129 
DBT
 
fdbt
, 
ndbt
;

130 *
_me
;

131 
t
;

133 
_me
 = 
NULL
;

135 i((
t
 =

136 
	`__db_ame
(
dbv
, 
ame
, 
me
, 0, 
NULL
, &
_me
)) != 0)

137 
r
;

139 i(!
	`IS_REAL_TXN
(
txn
)) {

140 i(
feid
 !
NULL
 && (
t
 = 
	`__memp_me
(

141 
dbv
, 
feid
, 
NULL
, 
_me
, NULL, 0)) != 0)

142 
r
;

144 i(
	`DBENV_LOGGING
(
dbv
)

145 #i!
	`defed
(
DEBUG_WOP
)

146 && 
txn
 !
NULL


149 
	`memt
(&
fdbt
, 0, (
ndbt
));

150 
fdbt
.
da
 = 
feid
;

151 
fdbt
.
size
 = 
feid
 =
NULL
 ? 0 : 
DB_FILE_ID_LEN
;

152 
	`DB_INIT_DBT
(
ndbt
, 
me
, 
	`
(name) + 1);

153 i((
t
 = 
	`__f_move_log
(
dbv
, 
txn
, &
l
,

154 
ags
, &
ndbt
, &
fdbt
, (
u_t32_t
)
ame
)) != 0)

155 
r
;

157 
t
 = 
	`__txn_mevt
(
dbv
, 
txn
, 
_me
, 
feid
, 0);

160 
r
: i(
_me
 !
NULL
)

161 
	`__os_
(
dbv
, 
_me
);

162  (
t
);

163 
	}
}

183 
	$__f_wre
(
dbv
,

184 
txn
, 
me
, 
ame
, 
fhp
, 
pgsize
, 
go
, 
off
, 
buf
, 
size
, 
imp
, 
ags
)

185 
DB_ENV
 *
dbv
;

186 
DB_TXN
 *
txn
;

187 cڡ *
me
;

188 
APPNAME
 
ame
;

189 
DB_FH
 *
fhp
;

190 
u_t32_t
 
pgsize
;

191 
db_pgno_t
 
go
;

192 
u_t32_t
 
off
;

193 *
buf
;

194 
u_t32_t
 
size
, 
imp
, 
ags
;

196 
DB_LSN
 
l
;

197 
DBT
 
da
, 
medbt
;

198 
size_t
 
nbys
;

199 
lol_ݒ
, 
t
, 
t_t
;

200 *
_me
;

202 
	`DB_ASSERT
(
dbv
, 
imp
 != 0);

204 
t
 = 
lol_ݒ
 = 0;

205 
_me
 = 
NULL
;

207 i((
t
 =

208 
	`__db_ame
(
dbv
, 
ame
, 
me
, 0, 
NULL
, &
_me
)) != 0)

209  (
t
);

211 i(
	`DBENV_LOGGING
(
dbv
)

212 #i!
	`defed
(
DEBUG_WOP
)

213 && 
txn
 !
NULL


216 
	`memt
(&
da
, 0, (data));

217 
da
.d
buf
;

218 
da
.
size
 = size;

219 
	`DB_INIT_DBT
(
medbt
, 
me
, 
	`
(name) + 1);

220 i((
t
 = 
	`__f_wre_log
(
dbv
, 
txn
,

221 &
l
, 
ags
, &
medbt
, (
u_t32_t
)
ame
,

222 
pgsize
, 
go
, 
off
, &
da
, 
imp
)) != 0)

223 
r
;

226 i(
fhp
 =
NULL
) {

228 i((
t
 = 
	`__os_ݒ
(
dbv
, 
_me
, 0, 0, 0, &
fhp
)) != 0)

229 
r
;

230 
lol_ݒ
 = 1;

234 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
go
, 
pgsize
, 
off
)) != 0)

235 
r
;

238 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
buf
, 
size
, &
nbys
)) != 0)

239 
r
;

241 
r
: i(
lol_ݒ
 &&

242 (
t_t
 = 
	`__os_ohd
(
dbv
, 
fhp
)!0 && 
t
 == 0)

243 
t
 = 
t_t
;

245 i(
_me
 !
NULL
)

246 
	`__os_
(
dbv
, 
_me
);

247  (
t
);

248 
	}
}

258 
	$__f_me
(
dbv
, 
txn
, 
dme
, 
wme
, 
fid
, 
ame
, 
wh_undo
, 
ags
)

259 
DB_ENV
 *
dbv
;

260 
DB_TXN
 *
txn
;

261 cڡ *
dme
;

262 cڡ *
wme
;

263 
u_t8_t
 *
fid
;

264 
APPNAME
 
ame
;

265 
wh_undo
;

266 
u_t32_t
 
ags
;

268 
DB_LSN
 
l
;

269 
DBT
 
fiddbt
, 
w
, 
d
;

270 
t
;

271 *
n
, *
o
;

273 
o
 = 
n
 = 
NULL
;

274 i((
t
 = 
	`__db_ame
(
dbv
, 
ame
, 
dme
, 0, 
NULL
, &
o
)) != 0)

275 
r
;

276 i((
t
 = 
	`__db_ame
(
dbv
, 
ame
, 
wme
, 0, 
NULL
, &
n
)) != 0)

277 
r
;

279 i(
	`DBENV_LOGGING
(
dbv
)

280 #i!
	`defed
(
DEBUG_WOP
)

281 && 
txn
 !
NULL


284 
	`DB_INIT_DBT
(
d
, 
dme
, 
	`
(oldname) + 1);

285 
	`DB_INIT_DBT
(
w
, 
wme
, 
	`
(newname) + 1);

286 
	`memt
(&
fiddbt
, 0, (fiddbt));

287 
fiddbt
.
da
 = 
fid
;

288 
fiddbt
.
size
 = 
DB_FILE_ID_LEN
;

289 i(
wh_undo
)

290 
t
 = 
	`__f_me_log
(
dbv
,

291 
txn
, &
l
, 
ags
 | 
DB_FLUSH
,

292 &
d
, &
w
, &
fiddbt
, (
u_t32_t
)
ame
);

294 
t
 = 
	`__f_me_noundo_log
(
dbv
,

295 
txn
, &
l
, 
ags
 | 
DB_FLUSH
,

296 &
d
, &
w
, &
fiddbt
, (
u_t32_t
)
ame
);

297 i(
t
 != 0)

298 
r
;

301 
t
 = 
	`__memp_me
(
dbv
, 
fid
, 
wme
, 
o
, 
n
, 0);

303 
r
: i(
o
 !
NULL
)

304 
	`__os_
(
dbv
, 
o
);

305 i(
n
 !
NULL
)

306 
	`__os_
(
dbv
, 
n
);

307  (
t
);

308 
	}
}

	@../fileops/fop_rec.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/f.h
"

14 
	~"dbc/db_am.h
"

15 
	~"dbc/mp.h
"

16 
	~"dbc/txn.h
"

18 
__f_me_cov_t


19 
__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *, ));

59 
	$__f__cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

60 
DB_ENV
 *
dbv
;

61 
DBT
 *
db
;

62 
DB_LSN
 *
lp
;

63 
db_cs
 

;

64 *
fo
;

66 
DB_FH
 *
fhp
;

67 
__f__gs
 *
gp
;

68 *
_me
;

69 
t
;

71 
	`COMPQUIET
(
fo
, 
NULL
);

72 
_me
 = 
NULL
;

73 
	`REC_PRINT
(
__f__t
);

74 
	`REC_NOOP_INTRO
(
__f__ad
);

76 i((
t
 = 
	`__db_ame
(
dbv
, (
APPNAME
)
gp
->
ame
,

77 (cڡ *)
gp
->
me
.
da
, 0, 
NULL
, &
_me
)) != 0)

78 
out
;

80 i(
	`DB_UNDO
(

))

81 ()
	`__os_uƚk
(
dbv
, 
_me
);

82 i(
	`DB_REDO
(

)) {

83 i((
t
 = 
	`__os_ݒ
(
dbv
, 
_me
, 0,

84 
DB_OSO_CREATE
, ()
gp
->
mode
, &
fhp
)) == 0)

85 ()
	`__os_ohd
(
dbv
, 
fhp
);

87 
out
;

90 *
lp
 = 
gp
->
ev_l
;

92 
out
: i(
_me
 !
NULL
)

93 
	`__os_
(
dbv
, 
_me
);

95 
REC_NOOP_CLOSE
;

96 
	}
}

106 
	$__f_move_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

107 
DB_ENV
 *
dbv
;

108 
DBT
 *
db
;

109 
DB_LSN
 *
lp
;

110 
db_cs
 

;

111 *
fo
;

113 
__f_move_gs
 *
gp
;

114 *
_me
;

115 
t
;

117 
	`COMPQUIET
(
fo
, 
NULL
);

118 
_me
 = 
NULL
;

119 
	`REC_PRINT
(
__f_move_t
);

120 
	`REC_NOOP_INTRO
(
__f_move_ad
);

122 i((
t
 = 
	`__db_ame
(
dbv
, (
APPNAME
)
gp
->
ame
,

123 (cڡ *)
gp
->
me
.
da
, 0, 
NULL
, &
_me
)) != 0)

124 
out
;

127 i(
	`DB_REDO
(

))

128 ()
	`__memp_me
(
dbv
,

129 (
u_t8_t
 *)
gp
->
fid
.
da
, 
NULL
, 
_me
, NULL, 0);

131 *
lp
 = 
gp
->
ev_l
;

132 
out
: i(
_me
 !
NULL
)

133 
	`__os_
(
dbv
, 
_me
);

134 
REC_NOOP_CLOSE
;

135 
	}
}

145 
	$__f_wre_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

146 
DB_ENV
 *
dbv
;

147 
DBT
 *
db
;

148 
DB_LSN
 *
lp
;

149 
db_cs
 

;

150 *
fo
;

152 
__f_wre_gs
 *
gp
;

153 
t
;

155 
	`COMPQUIET
(
fo
, 
NULL
);

156 
	`REC_PRINT
(
__f_wre_t
);

157 
	`REC_NOOP_INTRO
(
__f_wre_ad
);

159 
t
 = 0;

160 i(
	`DB_UNDO
(

))

161 
	`DB_ASSERT
(
dbv
, 
gp
->
ag
 != 0);

162 i(
	`DB_REDO
(

))

163 
t
 = 
	`__f_wre
(
dbv
,

164 
gp
->
tx
,rgp->
me
.
da
, (
APPNAME
rgp->
ame
,

165 
NULL
, 
gp
->
pgsize
,rgp->
go
,rgp->
offt
,

166 
gp
->
ge
.
da
,rgp->ge.
size
,rgp->
ag
, 0);

168 i(
t
 == 0)

169 *
lp
 = 
gp
->
ev_l
;

170 
REC_NOOP_CLOSE
;

171 
	}
}

188 
	$__f_me_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

189 
DB_ENV
 *
dbv
;

190 
DBT
 *
db
;

191 
DB_LSN
 *
lp
;

192 
db_cs
 

;

193 *
fo
;

195  (
	`__f_me_cov_t
(
dbv
, 
db
, 
lp
, 

, 
fo
, 1));

196 
	}
}

199 
	$__f_me_noundo_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

200 
DB_ENV
 *
dbv
;

201 
DBT
 *
db
;

202 
DB_LSN
 *
lp
;

203 
db_cs
 

;

204 *
fo
;

206  (
	`__f_me_cov_t
(
dbv
, 
db
, 
lp
, 

, 
fo
, 0));

207 
	}
}

210 
	$__f_me_cov_t
(
dbv
, 
db
, 
lp
, 

, 
fo
, 
undo
)

211 
DB_ENV
 *
dbv
;

212 
DBT
 *
db
;

213 
DB_LSN
 *
lp
;

214 
db_cs
 

;

215 *
fo
;

216 
undo
;

218 
__f_me_gs
 *
gp
;

219 
DB_FH
 *
fhp
;

220 
DBMETA
 *
ma
;

221 *
_w
, *
_d
, *
c
;

222 
t
;

223 
u_t8_t
 *
feid
, 
mbuf
[
DBMETASIZE
];

225 
_w
 = 
NULL
;

226 
_d
 = 
NULL
;

227 
t
 = 0;

228 
fhp
 = 
NULL
;

229 
ma
 = (
DBMETA
 *)&
mbuf
[0];

231 
	`COMPQUIET
(
fo
, 
NULL
);

232 
	`REC_PRINT
(
__f_me_t
);

233 
	`REC_NOOP_INTRO
(
__f_me_ad
);

234 
feid
 = 
gp
->feid.
da
;

236 i((
t
 = 
	`__db_ame
(
dbv
, (
APPNAME
)
gp
->
ame
,

237 (cڡ *)
gp
->
wme
.
da
, 0, 
NULL
, &
_w
)) != 0)

238 
out
;

239 i((
t
 = 
	`__db_ame
(
dbv
, (
APPNAME
)
gp
->
ame
,

240 (cڡ *)
gp
->
dme
.
da
, 0, 
NULL
, &
_d
)) != 0)

241 
out
;

248 i(

 !
DB_TXN_ABORT
 && o!
DB_TXN_APPLY
) {

249 
c
 = 
	`DB_UNDO
(

? 
_w
 : 
_d
;

256 i(
	`__os_ݒ
(
dbv
, 
c
, 0, 0, 0, &
fhp
) != 0)

257 
de
;

258 i(
	`__f_ad_ma
(
dbv
,

259 
c
, 
mbuf
, 
DBMETASIZE
, 
fhp
, 1, 
NULL
) != 0)

260 
de
;

261 i(
	`__db_chk_ma
(
dbv
, 
NULL
, 
ma
, 1) != 0)

262 
de
;

263 i(
	`memcmp
(
gp
->
feid
.
da
, 
ma
->
uid
, 
DB_FILE_ID_LEN
) != 0)

264 
de
;

265 ()
	`__os_ohd
(
dbv
, 
fhp
);

266 
fhp
 = 
NULL
;

267 i(
	`DB_REDO
(

)) {

275 i(
	`__os_ݒ
(
dbv
, 
_w
, 0, 0, 0, &
fhp
) == 0 &&

276 
	`__f_ad_ma
(
dbv
, 
c
, 
mbuf
,

277 
DBMETASIZE
, 
fhp
, 1, 
NULL
) == 0 &&

278 
	`__db_chk_ma
(
dbv
, 
NULL
, 
ma
, 1) == 0 &&

279 
	`memcmp
(
gp
->
feid
.
da
,

280 
ma
->
uid
, 
DB_FILE_ID_LEN
) != 0) {

281 ()
	`__memp_me
(
dbv
,

282 
feid
, 
NULL
, 
_d
, NULL, 0);

283 
de
;

288 i(
undo
 && 
	`DB_UNDO
(

))

289 ()
	`__memp_me
(
dbv
, 
feid
,

290 (cڡ *)
gp
->
dme
.
da
, 
_w
, 
_d
, 0);

291 i(
	`DB_REDO
(

))

292 ()
	`__memp_me
(
dbv
, 
feid
,

293 (cڡ *)
gp
->
wme
.
da
, 
_d
, 
_w
, 0);

295 
de
: *
lp
 = 
gp
->
ev_l
;

296 
out
: i(
_w
 !
NULL
)

297 
	`__os_
(
dbv
, 
_w
);

298 i(
_d
 !
NULL
)

299 
	`__os_
(
dbv
, 
_d
);

300 i(
fhp
 !
NULL
)

301 ()
	`__os_ohd
(
dbv
, 
fhp
);

303 
REC_NOOP_CLOSE
;

304 
	}
}

318 
	$__f_fe_move_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

319 
DB_ENV
 *
dbv
;

320 
DBT
 *
db
;

321 
DB_LSN
 *
lp
;

322 
db_cs
 

;

323 *
fo
;

325 
__f_fe_move_gs
 *
gp
;

326 
DBMETA
 *
ma
;

327 
DB_FH
 *
fhp
;

328 *
_me
;

329 
is_
, 
is_tmp
, 
t
;

330 
size_t
 
n
;

331 
u_t8_t
 
mbuf
[
DBMETASIZE
];

332 
u_t32_t
 
c
, 
t_
;

334 
fhp
 = 
NULL
;

335 
is_
 = 
is_tmp
 = 0;

336 
_me
 = 
NULL
;

337 
ma
 = (
DBMETA
 *)&
mbuf
[0];

338 
	`REC_PRINT
(
__f_fe_move_t
);

339 
	`REC_NOOP_INTRO
(
__f_fe_move_ad
);

345 i(

 !
DB_TXN_BACKWARD_ROLL
 &&

346 

 !
DB_TXN_FORWARD_ROLL
 && o!
DB_TXN_APPLY
)

347 
de
;

349 i((
t
 = 
	`__db_ame
(
dbv
,

350 (
APPNAME
)
gp
->
ame
,rgp->
me
.
da
, 0, 
NULL
, &
_me
)) != 0)

351 
out
;

354 
n
 = 0;

355 i(
	`__os_ݒ
(
dbv
, 
_me
, 0, 0, 0, &
fhp
) != 0 ||

356 (
t
 = 
	`__f_ad_ma
(
dbv
, 
_me
,

357 
mbuf
, 
DBMETASIZE
, 
fhp
, 1, &
n
)) != 0) {

363 i(
n
 != 0)

364 
out
;

367 
c
 = 
TXN_EXPECTED
;

373 ()
	`__db_chk_ma
(
dbv
, 
NULL
, 
ma
, 1);

374 
is_
 =

375 
	`memcmp
(
gp
->
_fid
.
da
, 
ma
->
uid
, 
DB_FILE_ID_LEN
) == 0;

376 
is_tmp
 =

377 
	`memcmp
(
gp
->
tmp_fid
.
da
, 
ma
->
uid
, 
DB_FILE_ID_LEN
) == 0;

379 i(!
is_
 && !
is_tmp
)

381 
c
 = 
TXN_IGNORE
;

384 
c
 = 
TXN_COMMIT
;

386 i(
fhp
 !
NULL
) {

387 ()
	`__os_ohd
(
dbv
, 
fhp
);

388 
fhp
 = 
NULL
;

391 i(
	`DB_UNDO
(

)) {

393 i((
t
 = 
	`__db_txi_upde
(
dbv
,

394 
fo
, 
gp
->
chd
, 
c
, 
NULL
, &
t_
, 1)) != 0)

395 
out
;

396 } i(
	`DB_REDO
(

)) {

401 i(
c
 =
TXN_COMMIT
)

402 ()
	`__memp_me
(
dbv
,

403 
is_
 ? 
gp
->
_fid
.
da
 :rgp->
tmp_fid
.data,

404 
NULL
, 
_me
, NULL, 0);

407 
de
: *
lp
 = 
gp
->
ev_l
;

408 
t
 = 0;

410 
out
: i(
_me
 !
NULL
)

411 
	`__os_
(
dbv
, 
_me
);

412 i(
fhp
 !
NULL
)

413 ()
	`__os_ohd
(
dbv
, 
fhp
);

414 
REC_NOOP_CLOSE
;

415 
	}
}

	@../fileops/fop_util.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/hash.h
"

15 
	~"dbc/f.h
"

16 
	~"dbc/lock.h
"

17 
	~"dbc/mp.h
"

18 
	~"dbc/log.h
"

19 
	~"dbc/txn.h
"

21 
__f_t_pgsize
 
__P
((
DB
 *, 
DB_FH
 *, const *));

22 
__f_mem_
 
__P
((
DB
 *, cڡ *, 
DB_TXN
 *, 
u_t32_t
));

23 
__f_mem_dummy
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, 
u_t8_t
 *));

24 
__f_mem_ad_ma
 
__P
((
DB
 *, 
DB_TXN
 *, cڡ *, 
u_t32_t
));

25 
__f_mem_sw
 
__P
((
DB
 *, DB *, 
DB_TXN
 *,

26 cڡ *, cڡ *, cڡ *, 
DB_LOCKER
 *));

27 
__f_disk_dummy
 
__P
((
DB
 *,

28 
DB_TXN
 *, cڡ *, 
u_t8_t
 *, 
u_t32_t
));

29 
__f_disk_sw
 
__P
((
DB
 *, DB *, 
DB_TXN
 *,

30 cڡ *, cڡ *, cڡ *, 
DB_LOCKER
 *, 
u_t32_t
));

42 #ifde
CRITICALPATH_10266


43 
	#GET_ENVLOCK
(
ENV
, 
ID
, 
L
(0)

	)

45 
	#GET_ENVLOCK
(
ENV
, 
ID
, 
L
) do { \

46 
DBT
 
__dbt
; \

47 
u_t32_t
 
__lockv
; \

49 i(
	`LOCKING_ON
((
ENV
))) { \

50 
__lockv
 = 1; \

51 
__dbt
.
da
 = &
__lockv
; \

52 
__dbt
.
size
 = (
__lockv
); \

53 i((
t
 = 
	`__lock_g
((
ENV
), (
ID
), \

54 0, &
__dbt
, 
DB_LOCK_WRITE
, (
L
))) != 0) \

55 
r
; \

57 } 0)

	)

60 
	#RESET_MPF
(
D
, 
F
) do { \

61 ()
	`__memp_fo
((
D
)->
mpf
, (
F
)); \

62 (
D
)->
mpf
 = 
NULL
; \

63 
	`F_CLR
((
D
), 
DB_AM_OPEN_CALLED
); \

64 i((
t
 = 
	`__memp_f
((
D
)->
dbv
, &(D)->
mpf
)) != 0) \

65 
r
; \

66 } 0)

	)

73 
	#CLOSE_HANDLE
(
D
, 
F
) { \

74 i((
F
!
NULL
) { \

75 i(
	`LF_ISSET
(
DB_FCNTL_LOCKING
)) \

76 (
D
)->
ved_ݒ_fhp
 = (
F
); \

77 i((
t_t
 = \

78 
	`__os_ohd
((
D
)->
dbv
, (
F
))) != 0) { \

79 i(
t
 == 0) \

80 
t
 = 
t_t
; \

81 
r
; \

83 (
F

NULL
; \

85 }

	)

99 
	$__f_lock_hd
(
dbv
, 
dbp
, 
lock
, 
mode
, 
ockp
, 
ags
)

100 
DB_ENV
 *
dbv
;

101 
DB
 *
dbp
;

102 
DB_LOCKER
 *
lock
;

103 
db_lockmode_t
 
mode
;

104 
DB_LOCK
 *
ockp
;

105 
u_t32_t
 
ags
;

107 
DBT
 
feobj
;

108 
DB_LOCKREQ
 
qs
[2], *
eq
;

109 
DB_LOCK_ILOCK
 
lock_desc
;

110 
t
;

112 i(!
	`LOCKING_ON
(
dbv
) ||

113 
	`F_ISSET
(
dbp
, 
DB_AM_COMPENSATE
 | 
DB_AM_RECOVER
))

120 i(
	`IS_RECOVERING
(
dbv
))

121  (
ockp
 =
NULL
 ? 0 : 
	`__ENV_LPUT
(
dbv
, *elockp));

123 
	`memy
(
lock_desc
.
feid
, 
dbp
->feid, 
DB_FILE_ID_LEN
);

124 
lock_desc
.
pgno
 = 
dbp
->
ma_pgno
;

125 
lock_desc
.
ty
 = 
DB_HANDLE_LOCK
;

127 
	`memt
(&
feobj
, 0, (fileobj));

128 
feobj
.
da
 = &
lock_desc
;

129 
feobj
.
size
 = (
lock_desc
);

130 
	`DB_TEST_SUBLOCKS
(
dbv
, 
ags
);

131 i(
ockp
 =
NULL
)

132 
t
 = 
	`__lock_g
(
dbv
, 
lock
,

133 
ags
, &
feobj
, 
mode
, &
dbp
->
hd_lock
);

135 
qs
[0].

 = 
DB_LOCK_PUT
;

136 
qs
[0].
lock
 = *
ockp
;

137 
qs
[1].

 = 
DB_LOCK_GET
;

138 
qs
[1].
mode
 = mode;

139 
qs
[1].
obj
 = &
feobj
;

140 
qs
[1].
timeout
 = 0;

141 i((
t
 = 
	`__lock_vec
(
dbv
,

142 
lock
, 
ags
, 
qs
, 2, &
eq
)) == 0) {

143 
dbp
->
hd_lock
 = 
qs
[1].
lock
;

144 
	`LOCK_INIT
(*
ockp
);

145 } i(
eq
 !
qs
)

146 
	`LOCK_INIT
(*
ockp
);

149 
dbp
->
cur_lock
 = 
lock
;

150  (
t
);

151 
	}
}

200 
	$__f_fe_tup
(
dbp
, 
txn
, 
me
, 
mode
, 
ags
, 
tidp
)

201 
DB
 *
dbp
;

202 
DB_TXN
 *
txn
;

203 cڡ *
me
;

204 
mode
;

205 
u_t32_t
 
ags
, *
tidp
;

207 
DB_ENV
 *
dbv
;

208 
DB_FH
 *
fhp
;

209 
DB_LOCK
 
ock
;

210 
DB_LOCKER
 *
lock
;

211 
DB_TXN
 *
xn
;

212 
DBTYPE
 
ve_ty
;

213 
size_t
 
n
;

214 
u_t32_t
 
dags
, 
oags
;

215 
u_t8_t
 
mbuf
[
DBMETASIZE
];

216 
d_lock
, 
_ok
, 
t
, 
s
, 
t_t
, 
tmp_d
;

217 
untg
, 
was_v
;

218 *
_me
, *
_tmame
, *
tmame
;

220 *
tidp
 = 
TXN_INVALID
;

222 
dbv
 = 
dbp
->dbenv;

223 
fhp
 = 
NULL
;

224 
	`LOCK_INIT
(
ock
);

225 
xn
 = 
NULL
;

226 
d_lock
 = 
tmp_d
 = 
untg
 = 
was_v
 = 0;

227 
_me
 = 
_tmame
 = 
tmame
 = 
NULL
;

228 
dags
 = 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0;

230 
t
 = 0;

231 
s
 = 0;

232 
ve_ty
 = 
dbp
->
ty
;

239 i(
	`LOCKING_ON
(
dbv
) &&

240 !
	`F_ISSET
(
dbp
, 
DB_AM_COMPENSATE
) &&

241 !
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
) &&

242 
dbp
->
lock
 =
DB_LOCK_INVALIDID
) {

243 i((
t
 = 
	`__lock_id
(
dbv
, 
NULL
, &
dbp
->
lock
)) != 0)

244 
r
;

245 
d_lock
 = 1;

247 
	`LOCK_INIT
(
dbp
->
hd_lock
);

249 
lock
 = 
txn
 =
NULL
 ? 
dbp
->locker :xn->locker;

251 
oags
 = 0;

252 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

253 
_me
 = (*)
me
;

256 i((
t
 = 
	`__db_ame
(
dbv
,

257 
DB_APP_DATA
, 
me
, 0, 
NULL
, &
_me
)) != 0)

258 
r
;

261 i(
mode
 == 0)

262 
mode
 = 
	`__db_omode
("rw-rw----");

264 i(
	`LF_ISSET
(
DB_RDONLY
))

265 
oags
 |
DB_OSO_RDONLY
;

266 i(
	`LF_ISSET
(
DB_TRUNCATE
))

267 
oags
 |
DB_OSO_TRUNC
;

270 
s
 = 0;

271 
_ok
 = 
	`LF_ISSET
(
DB_CREATE
);

272 
	`LF_CLR
(
DB_CREATE
);

274 
y
:

281 i(++
s
 > 
DB_RETRY
) {

282 
	`__db_rx
(
dbv
, "__fop_file_setup: Retryimit (%d)xceeded",

283 
DB_RETRY
);

284 
r
;

286 i(!
	`F_ISSET
(
dbp
, 
DB_AM_COMPENSATE
&& !F_ISSET(dbp, 
DB_AM_RECOVER
))

287 
	`GET_ENVLOCK
(
dbv
, 
lock
, &
ock
);

288 i(
me
 =
NULL
)

289 
t
 = 
ENOENT
;

290 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

291 
t
 = 
	`__db_v_mpo
(
dbp
, 
me
, 
ags
);

301 i(
t
 =
EINVAL
) {

302 
was_v
 = 1;

303 
ve_ty
 = 
dbp
->
ty
;

304 
dbp
->
ty
 = 
DB_UNKNOWN
;

305 
t
 = 
	`__db_v_mpo
(
dbp
, 
me
, 
ags
);

306 
dbp
->
ty
 = 
ve_ty
;

309 
t
 = 
	`__os_exis
(
dbv
, 
_me
, 
NULL
);

311 i(
t
 == 0) {

329 
ݒ
: i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
&& (
t
 =

330 
	`__os_ݒ
(
dbv
, 
_me
, 0, 
oags
, 0, &
fhp
)) != 0)

331 
r
;

334 i(
	`LF_ISSET
(
DB_TRUNCATE
)) {

335 i(
	`LF_ISSET
(
DB_EXCL
)) {

337 
t
 = 
EEXIST
;

338 
r
;

340 
tmame
 = (*)
me
;

341 
t2
;

345 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

346 
t
 = 
	`__f_mem_ad_ma
(
dbp
, 
txn
, 
me
, 
ags
);

348 
t
 = 
	`__f_ad_ma
(
dbv
, 
_me
, 
mbuf
,

349 (
mbuf
), 
fhp
,

350 
	`LF_ISSET
(
DB_FCNTL_LOCKING
&& 
txn
 =
NULL
 ? 1 : 0,

351 &
n
);

354 i(
t
 !0 && 
n
 =0 && 
txn
 =
NULL
) {

355 i(
	`LF_ISSET
(
DB_EXCL
)) {

360 
t
 = 
EEXIST
;

361 
r
;

363 
tmame
 = (*)
me
;

364 
t2
;

368 i(
t
 == 0)

369 
t
 = 
	`__db_ma_tup
(
dbv
, 
dbp
,

370 
_me
, (
DBMETA
 *)
mbuf
, 
ags
, 1);

375 i(
t
 != 0)

376 
r
;

379 i((
t
 = 
	`__f_lock_hd
(
dbv
,

380 
dbp
, 
lock
, 
DB_LOCK_READ
, 
NULL
, 
DB_LOCK_NOWAIT
)) == 0) {

381 i((
t
 = 
	`__ENV_LPUT
(
dbv
, 
ock
)) != 0)

382 
r
;

383 } i(
t
 !
DB_LOCK_NOTGRANTED
 ||

384 (
txn
 !
NULL
 && 
	`F_ISSET
xn, 
TXN_NOWAIT
)))

385 
r
;

401 
	`DB_ASSERT
(
dbv
, !
	`LF_ISSET
(
DB_FCNTL_LOCKING
));

402 i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

403 i((
t
 = 
	`__os_ohd
(
dbv
, 
fhp
)) != 0)

404 
r
;

405 
fhp
 = 
NULL
;

407 i((
t
 = 
	`__f_lock_hd
(
dbv
,

408 
dbp
, 
lock
, 
DB_LOCK_READ
, &
ock
, 0)) != 0) {

409 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

410 
	`RESET_MPF
(
dbp
, 0);

411 
r
;

428 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

429 i((
t
 = 
	`__db_esh
(
dbp
,

430 
txn
, 
DB_NOSYNC
, 
NULL
, 1)) != 0)

431 
r
;

432 
t
 = 
	`__db_v_mpo
(
dbp
, 
me
, 
ags
);

434 
t
 =

435 
	`__os_ݒ
(
dbv
, 
_me
, 0, 0, 0, &
fhp
);

437 i(
t
 != 0) {

438 i((
t
 =

439 
	`__ENV_LPUT
(
dbv
, 
dbp
->
hd_lock
)) != 0) {

440 
	`LOCK_INIT
(
dbp
->
hd_lock
);

441 
r
;

443 
y
;

446 
dbp
->
ty
 = 
ve_ty
;

447 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

448 
t
 = 
	`__f_mem_ad_ma
(
dbp
,

449 
txn
, 
me
, 
ags
);

450 i((
t
 =

451 
	`__f_ad_ma
(
dbv
, 
_me
, 
mbuf
,

452 (
mbuf
), 
fhp
,

453 
	`LF_ISSET
(
DB_FCNTL_LOCKING
&& 
txn
 =
NULL
 ? 1 : 0,

454 &
n
)) != 0 ||

455 (
t
 = 
	`__db_ma_tup
(
dbv
, 
dbp
, 
_me
,

456 (
DBMETA
 *)
mbuf
, 
ags
, 
DB_CHK_META
)) != 0)

457 
r
;

472 i(
	`F_ISSET
(
dbp
, 
DB_AM_IN_RENAME
)) {

473 
was_v
 = 0;

474 i(
_ok
) {

475 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

476 
	`RESET_MPF
(
dbp
, 
DB_MPOOL_DISCARD
);

477 } i((
t
 =

478 
	`__os_ohd
(
dbv
, 
fhp
)) != 0)

479 
r
;

480 
	`LF_SET
(
DB_CREATE
);

481 

;

483 
t
 = 
ENOENT
;

484 
r
;

489 i(
was_v
) {

490 
t
 = 
EINVAL
;

491 
r
;

501 i(
	`LF_ISSET
(
DB_EXCL
)) {

502 
t
 = 
	`__ENV_LPUT
(
dbv
, 
dbp
->
hd_lock
);

503 
	`LOCK_INIT
(
dbp
->
hd_lock
);

504 i(
t
 == 0)

505 
t
 = 
EEXIST
;

506 
r
;

508 
de
;

512 #ifdef 
HAVE_VXWORKS


517 i(!
_ok
)

519 i(!
_ok
 || 
t
 !
ENOENT
)

521 
r
;

522 
	`LF_SET
(
DB_CREATE
);

523 
t
 = 0;

532 i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
) &&

533 (
t
 = 
	`__ENV_LPUT
(
dbv
, 
ock
)) != 0)

534 
r
;

536 

: i(
txn
 !
NULL
 && 
	`IS_REP_CLIENT
(
dbv
) &&

537 !
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

538 
	`__db_rx
(
dbv
,

540 
t
 = 
EINVAL
;

541 
r
;

544 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

545 
t
 = 
	`__f_mem_
(
dbp
, 
me
, 
txn
, 
ags
);

547 i((
t
 = 
	`__db_backup_me
(
dbv
, 
me
, 
txn
, &
tmame
)) != 0)

548 
r
;

549 i(
	`TXN_ON
(
dbv
&& 
txn
 !
NULL
 &&

550 (
t
 = 
	`__txn_beg
(
dbv
, 
txn
, &
xn
, 0)) != 0)

551 
r
;

552 i((
t
 = 
	`__f_
(
dbv
,

553 
xn
, &
fhp
, 
tmame
, 
DB_APP_DATA
, 
mode
, 
dags
)) != 0) {

560 i(!
	`TXN_ON
(
dbv
&& 
t
 =
EEXIST
) {

561 
	`__os_
(
dbv
, 
tmame
);

562 
tmame
 = 
NULL
;

563 
	`__os_p
(
dbv
, 1, 0);

564 
y
;

566 
r
;

568 
tmp_d
 = 1;

571 
t2
: i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

572 i((
t
 = 
	`__db_ame
(
dbv
,

573 
DB_APP_DATA
, 
tmame
, 0, 
NULL
, &
_tmame
)) != 0)

574 
r
;

577 i(
dbp
->
pgsize
 == 0 &&

578 (
t
 = 
	`__f_t_pgsize
(
dbp
, 
fhp
, 
_tmame
)) != 0)

579 
rmsg
;

582 i((
t
 =

583 
	`__os_feid
(
dbv
, 
_tmame
, 1, 
dbp
->
feid
)) != 0)

584 
rmsg
;

587 i((
t
 = 
	`__db_w_fe
(
dbp
,

588 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
? 
txn
 : 
xn
, 
fhp
, 
tmame
)) != 0)

589 
r
;

595 
	`CLOSE_HANDLE
(
dbp
, 
fhp
);

603 i(!
	`F_ISSET
(
dbp
, 
DB_AM_COMPENSATE
) &&

604 !
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
&& !
	`LOCK_ISSET
(
ock
))

605 
	`GET_ENVLOCK
(
dbv
, 
lock
, &
ock
);

607 i(
	`F_ISSET
(
dbp
, 
DB_AM_IN_RENAME
)) {

608 
	`F_CLR
(
dbp
, 
DB_AM_IN_RENAME
);

609 
	`__txn_mm
(
dbv
, 
txn
, 
_me
);

610 } i(
me
 =
tmame
) {

612 } i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
) &&

613 
	`__os_exis
(
dbv
, 
_me
, 
NULL
) == 0) {

618 ()
	`__f_move
(
dbv
,

619 
NULL
, 
dbp
->
feid
, 
tmame
, 
DB_APP_DATA
, 
dags
);

620 ()
	`__ENV_LPUT
(
dbv
, 
dbp
->
hd_lock
);

621 
	`LOCK_INIT
(
dbp
->
hd_lock
);

623 i(
xn
 !
NULL
) {

624 
t
 = 
	`__txn_abt
(
xn
);

625 
xn
 = 
NULL
;

627 i(
t
 != 0)

628 
r
;

629 
ݒ
;

632 i(
me
 !
NULL
 && (
t
 = 
	`__f_lock_hd
(
dbv
,

633 
dbp
, 
lock
, 
DB_LOCK_WRITE
, &
ock
, 
	`NOWAIT_FLAG
(
txn
))) != 0)

634 
r
;

635 i(
tmame
 !
NULL
 &&mam!
me
 && (
t
 = 
	`__f_me
(
dbv
,

636 
xn
, 
tmame
, 
me
, 
dbp
->
feid
, 
DB_APP_DATA
, 1, 
dags
)) != 0)

637 
r
;

639 i(
xn
 !
NULL
) {

640 *
tidp
 = 
xn
->
txnid
;

641 
t
 = 
	`__txn_comm
(
xn
, 0);

642 
xn
 = 
NULL
;

644 *
tidp
 = 
TXN_INVALID
;

646 i(
t
 != 0)

647 
r
;

649 
	`F_SET
(
dbp
, 
DB_AM_CREATED
);

652 
rmsg
: 
	`__db_r
(
dbv
, 
t
, "%s", 
me
);

654 
r
: 
	`CLOSE_HANDLE
(
dbp
, 
fhp
);

655 i(
xn
 !
NULL
)

656 ()
	`__txn_abt
(
xn
);

657 i(
tmp_d
 && 
txn
 =
NULL
)

658 ()
	`__f_move
(
dbv
,

659 
NULL
, NULL, 
tmame
, 
DB_APP_DATA
, 
dags
);

660 i(
txn
 =
NULL
)

661 ()
	`__ENV_LPUT
(
dbv
, 
dbp
->
hd_lock
);

662 ()
	`__ENV_LPUT
(
dbv
, 
ock
);

663 i(
d_lock
) {

664 ()
	`__lock_id_
(
dbv
, 
dbp
->
lock
);

665 
dbp
->
lock
 = 
NULL
;

669 
de
:

674 i(!
untg
 && 
tmame
 !
NULL
 &&mam!
me
)

675 
	`__os_
(
dbv
, 
tmame
);

676 i(
_me
 !
me
 &&l_m!
NULL
)

677 
	`__os_
(
dbv
, 
_me
);

678 i(
_tmame
 !
NULL
)

679 
	`__os_
(
dbv
, 
_tmame
);

680 
	`CLOSE_HANDLE
(
dbp
, 
fhp
);

682  (
t
);

683 
	}
}

690 
	$__f_t_pgsize
(
dbp
, 
fhp
, 
me
)

691 
DB
 *
dbp
;

692 
DB_FH
 *
fhp
;

693 cڡ *
me
;

695 
DB_ENV
 *
dbv
;

696 
u_t32_t
 
isize
;

697 
t
;

699 
dbv
 = 
dbp
->dbenv;

707 i((
t
 = 
	`__os_iofo
(
dbv
, 
me
, 
fhp
, 
NULL
, NULL, &
isize
)) != 0) {

708 
	`__db_r
(
dbv
, 
t
, "%s", 
me
);

709  (
t
);

711 i(
isize
 < 512)

712 
isize
 = 512;

713 i(
isize
 > 16 * 1024)

714 
isize
 = 16 * 1024;

722 i(!
	`IS_VALID_PAGESIZE
(
isize
))

723 
isize
 = 
DB_DEF_IOSIZE
;

725 
dbp
->
pgsize
 = 
isize
;

726 
	`F_SET
(
dbp
, 
DB_AM_PGDEF
);

729 
	}
}

747 
	$__f_subdb_tup
(
dbp
, 
txn
, 
mme
, 
me
, 
mode
, 
ags
)

748 
DB
 *
dbp
;

749 
DB_TXN
 *
txn
;

750 cڡ *
mme
, *
me
;

751 
mode
;

752 
u_t32_t
 
ags
;

754 
DB
 *
mdbp
;

755 
DB_ENV
 *
dbv
;

756 
db_lockmode_t
 
lkmode
;

757 
t
, 
t_t
;

759 
mdbp
 = 
NULL
;

760 
dbv
 = 
dbp
->dbenv;

762 i((
t
 = 
	`__db_ma_ݒ
(
dbp
, 
txn
, 
mme
, 
ags
, 
mode
, &
mdbp
)) != 0)

763  (
t
);

769 i(
	`F_ISSET
(
mdbp
, 
DB_AM_CREATED
))

770 
	`F_SET
(
mdbp
, 
DB_AM_DISCARD
);

776 i(
	`LF_ISSET
(
DB_FCNTL_LOCKING
)) {

777 
dbp
->
ved_ݒ_fhp
 = 
mdbp
->saved_open_fhp;

778 
mdbp
->
ved_ݒ_fhp
 = 
NULL
;

782 
dbp
->
pgsize
 = 
mdbp
->pgsize;

783 
	`F_SET
(
dbp
, 
DB_AM_SUBDB
);

785 i(
me
 !
NULL
 && (
t
 = 
	`__db_ma_upde
(
mdbp
, 
dbp
, 
txn
,

786 
me
, 
dbp
->
ty
, 
MU_OPEN
, 
NULL
, 
ags
)) != 0)

787 
r
;

796 
dbp
->
lock
 = 
mdbp
->locker;

797 
mdbp
->
lock
 = 
NULL
;

799 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTLOG
, 
t
, 
mme
);

807 
	`memy
(
dbp
->
feid
, 
mdbp
->feid, 
DB_FILE_ID_LEN
);

808 
lkmode
 = 
	`F_ISSET
(
dbp
, 
DB_AM_CREATED
|| 
	`LF_ISSET
(
DB_WRITEOPEN
) ?

809 
DB_LOCK_WRITE
 : 
DB_LOCK_READ
;

810 i((
t
 = 
	`__f_lock_hd
(
dbv
, 
dbp
,

811 
txn
 =
NULL
 ? 
dbp
->
lock
 :xn->lock, 
lkmode
, NULL,

812 
	`NOWAIT_FLAG
(
txn
))) != 0)

813 
r
;

815 i((
t
 = 
	`__db__subdb
(
mdbp
, 
dbp
, 
me
, 
txn
)) != 0) {

820 i(
	`F_ISSET
(
dbp
, 
DB_AM_CREATED
&& 
txn
 =
NULL
)

821 ()
	`__db_ma_upde
(
mdbp
, 
dbp
, 
txn
,

822 
me
, 
dbp
->
ty
, 
MU_REMOVE
, 
NULL
, 0);

823 
	`F_CLR
(
dbp
, 
DB_AM_CREATED
);

824 
r
;

836 
	`F_CLR
(
dbp
, 
DB_AM_SWAP
);

837 
	`F_SET
(
dbp
, 
	`F_ISSET
(
mdbp
, 
DB_AM_SWAP
));

844 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTLOGMETA
, 
t
, 
mme
);

845 
	`DB_TEST_RECOVERY
(
dbp
, 
DB_TEST_POSTSYNC
, 
t
, 
mme
);

851 i(
	`F_ISSET
(
mdbp
, 
DB_AM_CREATED
)) {

852 
	`F_SET
(
dbp
, 
DB_AM_CREATED_MSTR
);

853 
	`F_CLR
(
mdbp
, 
DB_AM_DISCARD
);

857 
r
:

858 
DB_TEST_RECOVERY_LABEL


859 i(
txn
 =
NULL
)

860 ()
	`__ENV_LPUT
(
dbv
, 
dbp
->
hd_lock
);

873 i(!
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
&& 
	`IS_REAL_TXN
(
txn
)) {

875 
	`__txn_mlock
(
dbv
,

876 
txn
, &
mdbp
->
hd_lock
, 
DB_LOCK_INVALIDID
);

879 i((
t_t
 = 
	`__txn_lockevt
(
dbv
, 
txn
, 
dbp
,

880 &
mdbp
->
hd_lock
, 
dbp
->
lock
 =
NULL
 ?

881 
mdbp
->
lock
 : 
dbp
->lock)!0 && 
t
 == 0)

882 
t
 = 
t_t
;

884 
	`LOCK_INIT
(
mdbp
->
hd_lock
);

892 i(
txn
 =
NULL
 || 
	`F_ISSET
xn, 
TXN_CDSGROUP
) ||

893 
	`F_ISSET
(
mdbp
, 
DB_AM_RECOVER
)) {

894 i((
t_t
 = 
	`__db_o
(
mdbp
, 
txn
,

895 
	`F_ISSET
(
dbp
, 
DB_AM_CREATED_MSTR
? 0 : 
DB_NOSYNC
)) != 0 &&

896 
t
 == 0)

897 
t
 = 
t_t
;

899 i(
	`F_ISSET
(
dbp
, 
DB_AM_CREATED_MSTR
) &&

900 (
t_t
 = 
	`__memp_fsync
(
mdbp
->
mpf
)!0 && 
t
 == 0)

901 
t
 = 
t_t
;

903 i((
t_t
 =

904 
	`__txn_oevt
(
dbv
, 
txn
, 
mdbp
)!0 && 
t
 == 0)

905 
t
 = 
t_t
;

908  (
t
);

909 
	}
}

919 
	$__f_move_tup
(
dbp
, 
txn
, 
me
, 
ags
)

920 
DB
 *
dbp
;

921 
DB_TXN
 *
txn
;

922 cڡ *
me
;

923 
u_t32_t
 
ags
;

925 
DB_ENV
 *
dbv
;

926 
DB_FH
 *
fhp
;

927 
DB_LOCK
 
ock
;

928 
u_t8_t
 
mbuf
[
DBMETASIZE
];

929 
t
;

931 
	`COMPQUIET
(
ags
, 0);

932 
dbv
 = 
dbp
->dbenv;

933 
	`PANIC_CHECK
(
dbv
);

934 
	`LOCK_INIT
(
ock
);

935 
fhp
 = 
NULL
;

936 
t
 = 0;

939 
y
: i(
	`LOCKING_ON
(
dbv
)) {

940 i(
txn
 !
NULL
)

941 
dbp
->
lock
 = 
txn
->locker;

942 i(
dbp
->
lock
 =
DB_LOCK_INVALIDID
) {

943 i((
t
 = 
	`__lock_id
(
dbv
, 
NULL
, &
dbp
->
lock
)) != 0)

944 
r
;

958 
fhp
 = 
dbp
->
ved_ݒ_fhp
;

959 
	`DB_ASSERT
(
dbv
, 
	`LF_ISSET
(
DB_FCNTL_LOCKING
|| 
fhp
 =
NULL
);

966 
	`GET_ENVLOCK
(
dbv
, 
dbp
->
lock
, &
ock
);

969 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

970 i((
t
 = 
	`__db_v_mpo
(
dbp
, 
me
, 
ags
)) == 0)

971 
t
 = 
	`__os_rdup
(
dbv
, 
me
, &
dbp
->
dme
);

972 } i(
fhp
 =
NULL
)

973 
t
 = 
	`__os_ݒ
(
dbv
, 
me
, 0, 
DB_OSO_RDONLY
, 0, &
fhp
);

974 i(
t
 != 0)

975 
r
;

978 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

979 
t
 = 
	`__f_mem_ad_ma
(
dbp
, 
txn
, 
me
, 
ags
);

980 i((
t
 = 
	`__f_ad_ma
(
dbv
,

981 
me
, 
mbuf
, (mbuf), 
fhp
, 0, 
NULL
)) == 0)

982 
t
 = 
	`__db_ma_tup
(
dbv
, 
dbp
,

983 
me
, (
DBMETA
 *)
mbuf
, 
ags
, 
DB_CHK_META
 | 
DB_CHK_NOLSN
);

984 i(
t
 != 0)

985 
r
;

993 i((
t
 = 
	`__f_lock_hd
(
dbv
,

994 
dbp
, dbp->
lock
, 
DB_LOCK_WRITE
, 
NULL
, 
DB_LOCK_NOWAIT
)) != 0) {

999 i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
&& !
	`LF_ISSET
(
DB_FCNTL_LOCKING
)) {

1000 ()
	`__os_ohd
(
dbv
, 
fhp
);

1001 
fhp
 = 
NULL
;

1003 i(
t
 !
DB_LOCK_NOTGRANTED
 ||

1004 (
txn
 !
NULL
 && 
	`F_ISSET
xn, 
TXN_NOWAIT
)))

1005 
r
;

1006 i((
t
 = 
	`__f_lock_hd
(
dbv
,

1007 
dbp
, dbp->
lock
, 
DB_LOCK_WRITE
, &
ock
, 0)) != 0)

1008 
r
;

1010 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

1011 ()
	`__lock_put
(
dbv
, &
dbp
->
hd_lock
);

1012 ()
	`__db_esh
(
dbp
, 
txn
, 
DB_NOSYNC
, 
NULL
, 1);

1014 i(
txn
 !
NULL
)

1015 
dbp
->
lock
 = 
NULL
;

1016 ()
	`__db_esh
(
dbp
, 
txn
, 
DB_NOSYNC
, 
NULL
, 0);

1018 
y
;

1019 } i((
t
 = 
	`__ENV_LPUT
(
dbv
, 
ock
)) != 0)

1020 
r
;

1021 i(
	`F_ISSET
(
dbp
, 
DB_AM_IN_RENAME
))

1022 
t
 = 
ENOENT
;

1025 
r
: ()
	`__ENV_LPUT
(
dbv
, 
ock
);

1027 i(
fhp
 !
NULL
 && !
	`LF_ISSET
(
DB_FCNTL_LOCKING
))

1028 ()
	`__os_ohd
(
dbv
, 
fhp
);

1037 i(
t
 =0 && !
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))

1038 
	`F_SET
(
dbp
, 
DB_AM_DISCARD
);

1039  (
t
);

1040 
	}
}

1050 
	$__f_ad_ma
(
dbv
, 
me
, 
buf
, 
size
, 
fhp
, 
rok
, 
nby
)

1051 
DB_ENV
 *
dbv
;

1052 cڡ *
me
;

1053 
u_t8_t
 *
buf
;

1054 
size_t
 
size
;

1055 
DB_FH
 *
fhp
;

1056 
rok
;

1057 
size_t
 *
nby
;

1059 
size_t
 

;

1060 
t
;

1066 i(
nby
 !
NULL
)

1067 *
nby
 = 0;

1069 

 = 0;

1070 
t
 = 
	`__os_ad
(
dbv
, 
fhp
, 
buf
, 
size
, &

);

1071 i(
nby
 !
NULL
)

1072 *
nby
 = 

;

1074 i(
t
 != 0) {

1075 i(!
rok
)

1076 
	`__db_r
(
dbv
, 
t
, "%s", 
me
);

1077 
r
;

1080 i(

 !
size
) {

1081 i(!
rok
)

1082 
	`__db_rx
(
dbv
,

1083 "%s: uxed fty ofm", 
me
);

1084 
t
 = 
EINVAL
;

1087 
r
:

1088  (
t
);

1089 
	}
}

1101 
	$__f_dummy
(
dbp
, 
txn
, 
d
, 
w
, 
ags
)

1102 
DB
 *
dbp
;

1103 
DB_TXN
 *
txn
;

1104 cڡ *
d
, *
w
;

1105 
u_t32_t
 
ags
;

1107 
DB
 *
tmpdbp
;

1108 
DB_ENV
 *
dbv
;

1109 
DB_TXN
 *
xn
;

1110 *
back
;

1111 
t
, 
t_t
;

1112 
u_t8_t
 
mbuf
[
DBMETASIZE
];

1114 
dbv
 = 
dbp
->dbenv;

1115 
back
 = 
NULL
;

1116 
xn
 = 
NULL
;

1117 
tmpdbp
 = 
NULL
;

1119 
	`DB_ASSERT
(
dbv
, 
txn
 !
NULL
);

1126 i(
	`TXN_ON
(
dbv
&& (
t
 = 
	`__txn_beg
(dbv, 
txn
, &
xn
, 0)) != 0)

1127 
r
;

1130 i((
t
 = 
	`__db_backup_me
(
dbv
, 
w
, 
xn
, &
back
)) != 0)

1131 
r
;

1133 i((
t
 = 
	`__db__
(&
tmpdbp
, 
dbv
, 0)) != 0)

1134 
r
;

1136 
	`memt
(
mbuf
, 0, (mbuf));

1137 
t
 = 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
) ?

1138 
	`__f_mem_dummy
(
tmpdbp
, 
xn
, 
back
, 
mbuf
) :

1139 
	`__f_disk_dummy
(
tmpdbp
, 
xn
, 
back
, 
mbuf
, 
ags
);

1141 i(
t
 != 0)

1142 
r
;

1144 
t
 = 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
) ?

1145 
	`__f_mem_sw
(
dbp
, 
tmpdbp
, 
xn
, 
d
, 
w
, 
back
, 
txn
->
lock
) :

1146 
	`__f_disk_sw
(
dbp
,

1147 
tmpdbp
, 
xn
, 
d
, 
w
, 
back
, 
txn
->
lock
, 
ags
);

1148 
xn
 = 
NULL
;

1149 i(
t
 != 0)

1150 
r
;

1152 
r
: i(
xn
 !
NULL
)

1153 ()
	`__txn_abt
(
xn
);

1154 i(
tmpdbp
 !
NULL
 &&

1155 (
t_t
 = 
	`__db_o
(
tmpdbp
, 
NULL
, 0)!0 && 
t
 == 0)

1156 
t
 = 
t_t
;

1157 i(
back
 !
NULL
)

1158 
	`__os_
(
dbv
, 
back
);

1159  (
t
);

1160 
	}
}

1172 
	$__f_dbme
(
dbp
, 
d
, 
w
)

1173 
DB
 *
dbp
;

1174 cڡ *
d
, *
w
;

1176 
DB_ENV
 *
dbv
;

1177 
DB_LOCK
 
ock
;

1178 *
_w
, *
_d
;

1179 
t
, 
t_t
;

1181 
dbv
 = 
dbp
->dbenv;

1182 
_w
 = 
NULL
;

1183 
_d
 = 
NULL
;

1184 
	`LOCK_INIT
(
ock
);

1186 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

1187 
_w
 = (*)
w
;

1188 
_d
 = (*)
d
;

1191 i((
t
 = 
	`__db_ame
(
dbv
,

1192 
DB_APP_DATA
, 
w
, 0, 
NULL
, &
_w
)) != 0)

1193 
r
;

1195 i((
t
 = 
	`__db_ame
(
dbv
,

1196 
DB_APP_DATA
, 
d
, 0, 
NULL
, &
_d
)) != 0)

1197 
r
;

1206 
	`GET_ENVLOCK
(
dbv
, 
dbp
->
lock
, &
ock
);

1207 
t
 = 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
? 
ENOENT
 :

1208 
	`__os_exis
(
dbv
, 
_w
, 
NULL
);

1210 i(
t
 == 0) {

1211 
t
 = 
EEXIST
;

1212 
	`__db_rx
(
dbv
, "me: f%exis", 
_w
);

1213 
r
;

1216 
t
 = 
	`__memp_me
(
dbv
,

1217 
dbp
->
feid
, 
w
, 
_d
, 
_w
, 
	`F_ISSET
(dbp, 
DB_AM_INMEM
));

1219 
r
: i((
t_t
 = 
	`__ENV_LPUT
(
dbv
, 
ock
)!0 && 
t
 == 0)

1220 
t
 = 
t_t
;

1221 i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
&& 
_d
 !
NULL
)

1222 
	`__os_
(
dbv
, 
_d
);

1223 i(!
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
&& 
_w
 !
NULL
)

1224 
	`__os_
(
dbv
, 
_w
);

1225  (
t
);

1226 
	}
}

1229 
	$__f_mem_
(
dbp
, 
me
, 
txn
, 
ags
)

1230 
DB
 *
dbp
;

1231 cڡ *
me
;

1232 
DB_TXN
 *
txn
;

1233 
u_t32_t
 
ags
;

1235 
DB_ENV
 *
dbv
;

1236 
DB_LSN
 
l
;

1237 
DBT
 
fid_dbt
, 
me_dbt
;

1238 
t
;

1239 
t32_t
 
lfid
;

1240 
u_t32_t
 *
p32
;

1242 
dbv
 = 
dbp
->dbenv;

1244 
	`MAKE_INMEM
(
dbp
);

1247 i(
dbp
->
pgsize
 == 0)

1248 
dbp
->
pgsize
 = 
DB_DEF_IOSIZE
;

1261 i(
me
 =
NULL
) {

1262 i(
	`LOCKING_ON
(
dbv
&& (
t
 =

1263 
	`__lock_id
(
dbv
, (
u_t32_t
 *)
dbp
->
feid
, 
NULL
)) != 0)

1264 
r
;

1266 
p32
 = (
u_t32_t
 *)(&
dbp
->
feid
[0]);

1267 
	`__os_unique_id
(
dbv
, 
p32
);

1268 
p32
++;

1269 ()
	`y
(

1270 (*)
p32
, 
me
, 
DB_FILE_ID_LEN
 - (
u_t32_t
));

1271 
dbp
->
erve_fid
 = 1;

1273 i(
	`DBENV_LOGGING
(
dbv
) &&

1274 #i!
	`defed
(
DEBUG_WOP
&& !defed(
DIAGNOSTIC
)

1275 
txn
 !
NULL
 &&

1277 
dbp
->
log_fame
 !
NULL
)

1278 
	`memy
(
dbp
->
log_fame
->
ufid
,

1279 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

1283 i((
t
 = 
	`__memp_t_feid
(
dbp
->
mpf
, dbp->
feid
)) != 0)

1284 
r
;

1286 i((
t
 = 
	`__db_v_mpo
(
dbp
, 
me
, 
ags
)) != 0)

1287 
r
;

1289 i(
	`DBENV_LOGGING
(
dbv
) &&

1290 #i!
	`defed
(
DEBUG_WOP
)

1291 
txn
 !
NULL
 &&

1293 
me
 !
NULL
) {

1294 
	`DB_INIT_DBT
(
me_dbt
, 
me
, 
	`
(name) + 1);

1295 
	`memt
(&
fid_dbt
, 0, (fid_dbt));

1296 
fid_dbt
.
da
 = 
dbp
->
feid
;

1297 
fid_dbt
.
size
 = 
DB_FILE_ID_LEN
;

1298 
lfid
 = 
dbp
->
log_fame
 =
NULL
 ?

1299 
DB_LOGFILEID_INVALID
 : 
dbp
->
log_fame
->
id
;

1300 i((
t
 = 
	`__d_mem__log
(
dbv
, 
txn
,

1301 &
l
, 0, 
lfid
, &
me_dbt
, &
fid_dbt
, 
dbp
->
pgsize
)) != 0)

1302 
r
;

1305 
	`F_SET
(
dbp
, 
DB_AM_CREATED
);

1307 
r
:

1308  (
t
);

1309 
	}
}

1312 
	$__f_mem_ad_ma
(
dbp
, 
txn
, 
me
, 
ags
)

1313 
DB
 *
dbp
;

1314 
DB_TXN
 *
txn
;

1315 cڡ *
me
;

1316 
u_t32_t
 
ags
;

1318 
DBMETA
 *
m
;

1319 
db_pgno_t
 
pgno
;

1320 
t
, 
t_t
;

1322 
pgno
 = 
PGNO_BASE_MD
;

1323 i((
t
 = 
	`__memp_fg
(
dbp
->
mpf
, &
pgno
, 
txn
, 0, &
m
)) != 0)

1324  (
t
);

1325 
t
 = 
	`__db_ma_tup
(
dbp
->
dbv
, dbp, 
me
, 
m
, 
ags
, 1);

1327 i((
t_t
 =

1328 
	`__memp_ut
(
dbp
->
mpf
, 
m
, dbp->
iܙy
)&& 
t
 == 0)

1329 
t
 = 
t_t
;

1331  (
t
);

1332 
	}
}

1335 
	$__f_disk_dummy
(
dbp
, 
txn
, 
me
, 
mbuf
, 
ags
)

1336 
DB
 *
dbp
;

1337 
DB_TXN
 *
txn
;

1338 cڡ *
me
;

1339 
u_t8_t
 *
mbuf
;

1340 
u_t32_t
 
ags
;

1342 
DB_ENV
 *
dbv
;

1343 
t
;

1344 *
me
;

1345 
u_t32_t
 
dags
;

1347 
me
 = 
NULL
;

1348 
dbv
 = 
dbp
->dbenv;

1349 
dags
 = 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0;

1351 i((
t
 = 
	`__db_ame
(
dbv
,

1352 
DB_APP_DATA
, 
me
, 
ags
, 
NULL
, &
me
)) != 0)

1353 
r
;

1355 i((
t
 = 
	`__f_
(
dbv
,

1356 
txn
, 
NULL
, 
me
, 
DB_APP_DATA
, 0, 
dags
)) != 0)

1357 
r
;

1359 i((
t
 =

1360 
	`__os_feid
(
dbv
, 
me
, 1, ((
DBMETA
 *)
mbuf
)->
uid
)) != 0)

1361 
r
;

1363 ((
DBMETA
 *)
mbuf
)->
magic
 = 
DB_RENAMEMAGIC
;

1364 i((
t
 = 
	`__f_wre
(
dbv
, 
txn
, 
me
,

1365 
DB_APP_DATA
, 
NULL
, 0, 0, 0, 
mbuf
, 
DBMETASIZE
, 1, 
dags
)) != 0)

1366 
r
;

1368 
	`memy
(
dbp
->
feid
, ((
DBMETA
 *)
mbuf
)->
uid
, 
DB_FILE_ID_LEN
);

1370 
r
: i(
me
 !
NULL
)

1371 
	`__os_
(
dbv
, 
me
);

1373  (
t
);

1374 
	}
}

1377 
	$__f_mem_dummy
(
dbp
, 
txn
, 
me
, 
mbuf
)

1378 
DB
 *
dbp
;

1379 
DB_TXN
 *
txn
;

1380 cڡ *
me
;

1381 
u_t8_t
 *
mbuf
;

1383 
DBMETA
 *
m
;

1384 
db_pgno_t
 
pgno
;

1385 
t
, 
t_t
;

1387 i((
t
 = 
	`__f_mem_
(
dbp
, 
me
, 
txn
, 
DB_CREATE
)) != 0)

1388  (
t
);

1390 
pgno
 = 
PGNO_BASE_MD
;

1391 i((
t
 = 
	`__memp_fg
(
dbp
->
mpf
, &
pgno
, 
txn
,

1392 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
m
)) != 0)

1393  (
t
);

1395 i(
m
->
magic
 != 0)

1396 
t
 = 
EEXIST
;

1398 
m
->
magic
 = 
DB_RENAMEMAGIC
;

1401 
	`memy
(
m
->
uid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

1403 i((
t_t
 = 
	`__memp_ut
(
dbp
->
mpf
, 
m
,

1404 
t
 =0 ? 
dbp
->
iܙy
 : 
DB_PRIORITY_VERY_LOW
)) != 0 &&et == 0)

1405 
t
 = 
t_t
;

1407 i(
t
 != 0)

1408 
r
;

1410 ((
DBMETA
 *)
mbuf
)->
magic
 = 
DB_RENAMEMAGIC
;

1412 
r
:  (
t
);

1413 
	}
}

1416 
	$__f_disk_sw
(
dbp
, 
tmpdbp
, 
txn
, 
d
, 
w
, 
back
, 
lock
, 
ags
)

1417 
DB
 *
dbp
, *
tmpdbp
;

1418 
DB_TXN
 *
txn
;

1419 cڡ *
d
, *
w
, *
back
;

1420 
DB_LOCKER
 *
lock
;

1421 
u_t32_t
 
ags
;

1423 
DB_ENV
 *
dbv
;

1424 
DB_FH
 *
fhp
;

1425 
DB_LOCK
 
ock
;

1426 
DB_LSN
 
l
;

1427 
DBT
 
fiddbt
, 
medbt
, 
tmpdbt
;

1428 
DB_TXN
 *

;

1429 *
d
, *
w
;

1430 
t
, 
t_t
;

1431 
u_t8_t
 
mbuf
[
DBMETASIZE
];

1432 
u_t32_t
 
chd_txnid
, 
dags
;

1434 
dbv
 = 
dbp
->dbenv;

1435 
	`DB_ASSERT
(
dbv
, 
txn
 !
NULL
);

1436 
	`DB_ASSERT
(
dbv
, 
d
 !
NULL
);

1438 
d
 = 
w
 = 
NULL
;

1439 
	`LOCK_INIT
(
ock
);

1440 
fhp
 = 
NULL
;

1441 
dags
 = 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0;

1443 i((
t
 =

1444 
	`__db_ame
(
dbv
, 
DB_APP_DATA
, 
w
, 0, 
NULL
, &
w
)) != 0)

1445 
r
;

1448 
y
: 
	`GET_ENVLOCK
(
dbv
, 
lock
, &
ock
);

1449 i(
	`__os_exis
(
dbv
, 
w
, 
NULL
) == 0) {

1456 i((
t
 = 
	`__os_ݒ
(
dbv
, 
w
, 0, 0, 0, &
fhp
)) != 0)

1457 
r
;

1458 i((
t
 = 
	`__f_ad_ma
(
dbv
,

1459 
w
, 
mbuf
, (mbuf), 
fhp
, 0, 
NULL
)) != 0 ||

1460 (
t
 = 
	`__db_ma_tup
(
dbv
,

1461 
tmpdbp
, 
w
, (
DBMETA
 *)
mbuf
, 0, 1)) != 0) {

1462 
t
 = 
EEXIST
;

1463 
r
;

1465 
t
 = 
	`__os_ohd
(
dbv
, 
fhp
);

1466 
fhp
 = 
NULL
;

1467 i(
t
 != 0)

1468 
r
;

1496 i((
t
 = 
	`__f_lock_hd
(
dbv
,

1497 
tmpdbp
, 
lock
, 
DB_LOCK_READ
, 
NULL
, 
DB_LOCK_NOWAIT
)) != 0) {

1502 i((
t
 = 
	`__f_lock_hd
(
dbv
, 
tmpdbp
,

1503 
lock
, 
DB_LOCK_WRITE
, &
ock
, 0)) != 0)

1504 
r
;

1505 i((
t
 =

1506 
	`__lock_put
(
dbv
, &
tmpdbp
->
hd_lock
)) != 0)

1507 
r
;

1508 i((
t
 = 
	`__db_esh
(
tmpdbp
, 
NULL
, 0, NULL, 0)) != 0)

1509 
r
;

1510 
y
;

1514 
t
 = 
	`__f_lock_hd
(
dbv
,

1515 
tmpdbp
, 
lock
, 
DB_LOCK_WRITE
,

1516 
NULL
, 
DB_LOCK_UPGRADE
 | 
DB_LOCK_NOWAIT
);

1517 i(
t
 != 0) {

1522 ()
	`__lock_put
(
dbv
, &
tmpdbp
->
hd_lock
);

1523 
t
 = 
EEXIST
;

1524 } i(
	`F_ISSET
(
tmpdbp
, 
DB_AM_IN_RENAME
))

1526 
t
 = 0;

1528 ()
	`__lock_put
(
dbv
, &
tmpdbp
->
hd_lock
);

1529 
t
 = 
EEXIST
;

1531 i(
t
 != 0)

1532 
r
;

1539 i((
t
 = 
	`__f_me
(
dbv
,

1540 
txn
, 
d
, 
w
, 
dbp
->
feid
, 
DB_APP_DATA
, 1, 
dags
)) != 0)

1541 
r
;

1542 i((
t
 = 
	`__f_me
(
dbv
,

1543 
txn
, 
back
, 
d
, 
tmpdbp
->
feid
, 
DB_APP_DATA
, 0, 
dags
)) != 0)

1544 
r
;

1545 i((
t
 = 
	`__f_lock_hd
(
dbv
,

1546 
tmpdbp
, 
lock
, 
DB_LOCK_WRITE
, &
ock
, 
	`NOWAIT_FLAG
(
txn
))) != 0)

1547 
r
;

1554 
	`LOCK_INIT
(
tmpdbp
->
hd_lock
);

1557 
chd_txnid
 = 
txn
->
txnid
;

1558 

 = 
txn
->parent;

1559 
t
 = 
	`__txn_comm
(
txn
, 0);

1560 
txn
 = 
NULL
;

1563 
	`memt
(&
fiddbt
, 0, (fiddbt));

1564 
fiddbt
.
da
 = 
dbp
->
feid
;

1565 
fiddbt
.
size
 = 
DB_FILE_ID_LEN
;

1566 
	`memt
(&
tmpdbt
, 0, (
fiddbt
));

1567 
tmpdbt
.
da
 = 
tmpdbp
->
feid
;

1568 
tmpdbt
.
size
 = 
DB_FILE_ID_LEN
;

1569 
	`DB_INIT_DBT
(
medbt
, 
d
, 
	`
(old) + 1);

1570 i((
t_t
 = 
	`__f_fe_move_log
(
dbv
,

1571 

, &
l
, 0, &
fiddbt
, &
tmpdbt
, &
medbt
,

1572 (
u_t32_t
)
DB_APP_DATA
, 
chd_txnid
)!0 && 
t
 == 0)

1573 
t
 = 
t_t
;

1576 i((
t
 = 
	`__db_ame
(
dbv
,

1577 
DB_APP_DATA
, 
d
, 
ags
, 
NULL
, &
d
)) != 0)

1578 
r
;

1580 i((
t
 = 
	`__txn_mevt
(
dbv
, 

, 
d
, 
NULL
, 0)) != 0)

1581 
r
;

1583 
r
: i(
txn
 !
NULL
)

1584 ()
	`__txn_abt
(
txn
);

1586 ()
	`__ENV_LPUT
(
dbv
, 
ock
);

1588 i(
fhp
 !
NULL
 &&

1589 (
t_t
 = 
	`__os_ohd
(
dbv
, 
fhp
)!0 && 
t
 == 0)

1590 
t
 = 
t_t
;

1592 i(
w
 !
NULL
)

1593 
	`__os_
(
dbv
, 
w
);

1594 i(
d
 !
NULL
)

1595 
	`__os_
(
dbv
, 
d
);

1596  (
t
);

1597 
	}
}

1600 
	$__f_mem_sw
(
ddbp
, 
backdbp
, 
txn
, 
d
, 
w
, 
back
, 
lock
)

1601 
DB
 *
ddbp
, *
backdbp
;

1602 
DB_TXN
 *
txn
;

1603 cڡ *
d
, *
w
, *
back
;

1604 
DB_LOCKER
 *
lock
;

1606 
DB_ENV
 *
dbv
;

1607 
DB_LOCK
 
ock
;

1608 
DB_LSN
 
l
;

1609 
DB_TXN
 *

;

1610 
DBT
 
fid_dbt
, 
n1_dbt
, 
n2_dbt
;

1611 
DB
 *
tmpdbp
;

1612 
t
, 
t_t
;

1614 
dbv
 = 
ddbp
->dbenv;

1615 

 = 
txn
->parent;

1616 
y
: 
	`LOCK_INIT
(
ock
);

1617 i((
t
 = 
	`__db__
(&
tmpdbp
, 
dbv
, 0)) != 0)

1618  (
t
);

1619 
	`MAKE_INMEM
(
tmpdbp
);

1621 
	`GET_ENVLOCK
(
dbv
, 
lock
, &
ock
);

1622 i((
t
 = 
	`__db_v_mpo
(
tmpdbp
, 
w
, 0)) == 0) {

1630 i((
t
 = 
	`__f_mem_ad_ma
(
tmpdbp
, 
txn
, 
w
, 0)) != 0) {

1631 
t
 = 
EEXIST
;

1632 
r
;

1641 i((
t
 = 
	`__f_lock_hd
(
dbv
,

1642 
tmpdbp
, 
lock
, 
DB_LOCK_READ
, 
NULL
, 
DB_LOCK_NOWAIT
)) != 0) {

1647 i((
t
 = 
	`__f_lock_hd
(
dbv
, 
tmpdbp
,

1648 
lock
, 
DB_LOCK_WRITE
, &
ock
, 0)) != 0)

1649 
r
;

1652 ()
	`__lock_put
(
dbv
, &
tmpdbp
->
hd_lock
);

1653 ()
	`__db_o
(
tmpdbp
, 
NULL
, 
DB_NOSYNC
);

1654 ()
	`__ENV_LPUT
(
dbv
, 
ock
);

1655 
y
;

1657 ()
	`__lock_put
(
dbv
, &
tmpdbp
->
hd_lock
);

1658 i(!
	`F_ISSET
(
tmpdbp
, 
DB_AM_IN_RENAME
))

1659 
t
 = 
EEXIST
;

1661 i(
t
 != 0)

1662 
r
;

1666 i(
	`LOGGING_ON
(
dbv
)

1667 #ide
DEBUG_WOP


1668 && 
txn
 !
NULL


1672 
	`DB_INIT_DBT
(
fid_dbt
, 
ddbp
->
feid
, 
DB_FILE_ID_LEN
);

1673 
	`DB_INIT_DBT
(
n1_dbt
, 
d
, 
	`
(old) + 1);

1674 
	`DB_INIT_DBT
(
n2_dbt
, 
w
, 
	`
(new) + 1);

1675 i((
t
 = 
	`__d_mem_me_log
(
dbv
, 
txn
, &
l
, 0,

1676 &
n1_dbt
, &
n2_dbt
, &
fid_dbt
)) != 0)

1677 
r
;

1680 
fid_dbt
.
da
 = 
backdbp
->
feid
;

1681 
	`DB_SET_DBT
(
n2_dbt
, 
back
, 
	`
(back) + 1);

1682 i((
t
 = 
	`__d_mem_me_log
(
dbv
, 
txn
, &
l
, 0,

1683 &
n2_dbt
, &
n1_dbt
, &
fid_dbt
)) != 0)

1684 
r
;

1693 i(
	`F_ISSET
(
tmpdbp
, 
DB_AM_IN_RENAME
)) {

1694 i((
t
 = 
	`__memp_me
(
dbv
,

1695 
tmpdbp
->
feid
, 
NULL
, 
w
, NULL, 1)) != 0)

1696 
r
;

1697 
	`__txn_mm
(
dbv
, 

, 
w
);

1700 i((
t
 = 
	`__memp_me
(
dbv
, 
ddbp
->
feid
, 
w
, 
d
,ew, 1)) != 0)

1701 
r
;

1702 i((
t
 =

1703 
	`__memp_me
(
dbv
, 
backdbp
->
feid
, 
d
, 
back
, old, 1)) != 0)

1704 
r
;

1706 i((
t
 = 
	`__f_lock_hd
(
dbv
,

1707 
tmpdbp
, 
lock
, 
DB_LOCK_WRITE
, &
ock
, 0)) != 0)

1708 
r
;

1715 
	`LOCK_INIT
(
tmpdbp
->
hd_lock
);

1717 
	`DB_ASSERT
(
dbv
, 
txn
 !
NULL
);

1720 
t
 = 
	`__txn_comm
(
txn
, 0);

1721 
txn
 = 
NULL
;

1723 i((
t
 = 
	`__db_mem_move
(
backdbp
, 

, 
d
)) != 0)

1724 
r
;

1726 
r
: ()
	`__ENV_LPUT
(
dbv
, 
ock
);

1728 i(
txn
 !
NULL
)

1729 ()
	`__txn_abt
(
txn
);

1731 i((
t_t
 = 
	`__db_o
(
tmpdbp
, 
NULL
, 0)!0 && 
t
 == 0)

1732 
t
 = 
t_t
;

1734  (
t
);

1735 
	}
}

	@../hash/hash.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/b.h
"

49 
	~"dbc/hash.h
"

50 
	~"dbc/lock.h
"

51 
	~"dbc/mp.h
"

53 
__ham_bulk
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
));

54 
__hamc_o
 
__P
((
DBC
 *, 
db_pgno_t
, *));

55 
__hamc_d
 
__P
((
DBC
 *));

56 
__hamc_deroy
 
__P
((
DBC
 *));

57 
__hamc_g
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

58 
__hamc_put
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

59 
__hamc_wrock
 
__P
((
DBC
 *));

60 
__ham_dup_tu
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
));

61 
__ham_exnd_b
 
__P
((
DBC
 *));

62 
__ham_lookup
 
__P
((
DBC
 *,

63 cڡ 
DBT
 *, 
u_t32_t
, 
db_lockmode_t
, 
db_pgno_t
 *));

64 
__ham_ovwre
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
));

74 
	$__ham_quick_de
(
dbc
)

75 
DBC
 *
dbc
;

77 
t
, 
t_t
;

98 
	`DB_ASSERT
(
dbc
->
dbp
->
dbv
, 
	`IS_INITIALIZED
(dbc));

99 
	`DB_ASSERT
(
dbc
->
dbp
->
dbv
, dbc->

->
d
 =
NULL
);

100 
	`DB_ASSERT
(
dbc
->
dbp
->
dbv
, !
	`F_ISSET
(dbc->dbp, 
DB_AM_SECONDARY
));

101 
	`DB_ASSERT
(
dbc
->
dbp
->
dbv
,

102 
	`LIST_FIRST
(&
dbc
->
dbp
->
s_cds
=
NULL
);

104 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

105  (
t
);

107 i((
t
 = 
	`__hamc_wrock
(
dbc
)) == 0)

108 
t
 = 
	`__ham_d_
(
dbc
, 0);

110 i((
t_t
 = 
	`__ham_a_ma
(
dbc
)!0 && 
t
 == 0)

111 
t
 = 
t_t
;

113  (
t
);

114 
	}
}

124 
	$__hamc_
(
dbc
)

125 
DBC
 *
dbc
;

127 
DB_ENV
 *
dbv
;

128 
HASH_CURSOR
 *
w_curs
;

129 
t
;

131 
dbv
 = 
dbc
->
dbp
->dbenv;

132 i((
t
 = 
	`__os_oc
(
dbv
,

133 1, (
curs_t
), &
w_curs
)) != 0)

134  (
t
);

135 i((
t
 = 
	`__os_mloc
(
dbv
,

136 
dbc
->
dbp
->
pgsize
, &
w_curs
->
l_buf
)) != 0) {

137 
	`__os_
(
dbv
, 
w_curs
);

138  (
t
);

141 
dbc
->

 = (
DBC_INTERNAL
 *
w_curs
;

142 
dbc
->
o
 = dbc->
c_o
 = 
__dbc_o_
;

143 
dbc
->
cou
 = dbc->
c_cou
 = 
__dbc_cou_
;

144 
dbc
->
d
 = dbc->
c_d
 = 
__dbc_d_
;

145 
dbc
->
dup
 = dbc->
c_dup
 = 
__dbc_dup_
;

146 
dbc
->
g
 = dbc->
c_g
 = 
__dbc_g_
;

147 
dbc
->
pg
 = dbc->
c_pg
 = 
__dbc_pg_
;

148 
dbc
->
put
 = dbc->
c_put
 = 
__dbc_put_
;

149 
dbc
->
am_bulk
 = 
__ham_bulk
;

150 
dbc
->
am_o
 = 
__hamc_o
;

151 
dbc
->
am_d
 = 
__hamc_d
;

152 
dbc
->
am_deroy
 = 
__hamc_deroy
;

153 
dbc
->
am_g
 = 
__hamc_g
;

154 
dbc
->
am_put
 = 
__hamc_put
;

155 
dbc
->
am_wrock
 = 
__hamc_wrock
;

157  (
	`__ham_em_
(
dbc
));

158 
	}
}

165 
	$__hamc_o
(
dbc
, 
ro_pgno
, 
rmro
)

166 
DBC
 *
dbc
;

167 
db_pgno_t
 
ro_pgno
;

168 *
rmro
;

170 
DB_MPOOLFILE
 *
mpf
;

171 
HASH_CURSOR
 *
h
;

172 
HKEYDATA
 *
dp
;

173 
db_lockmode_t
 
lock_mode
;

174 
do
, 
gma
, 
t
, 
t_t
;

176 
	`COMPQUIET
(
rmro
, 0);

177 
mpf
 = 
dbc
->
dbp
->mpf;

178 
do
 = 
gma
 = 
t
 = 0;

179 
h
 = (
HASH_CURSOR
 *
dbc
->

;

182 i(
dbc
->

->
d
 !
NULL
) {

183 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

184 
de
;

185 
gma
 = 1;

186 
lock_mode
 = 
DB_LOCK_READ
;

189 i(
	`F_ISSET
(
dbc
->
dbp
, 
DB_AM_READ_UNCOMMITTED
) &&

190 
	`F_ISSET
((
BTREE_CURSOR
 *)

191 
dbc
->

->
d
->, 
C_DELETED
))

192 
lock_mode
 = 
DB_LOCK_WRITE
;

194 i((
t
 = 
	`__ham_g_age
(
dbc
, 
lock_mode
)) != 0)

195 
out
;

196 
dp
 = (
HKEYDATA
 *)
	`H_PAIRDATA
(
dbc
->
dbp
, 
h
->
ge
, h->
dx
);

199 i(
	`HPAGE_PTYPE
(
dp
=
H_OFFDUP
)

200 
	`memy
(&
ro_pgno
,

201 
	`HOFFPAGE_PGNO
(
dp
), (
db_pgno_t
));

203 
ro_pgno
 = 
PGNO_INVALID
;

205 i((
t
 =

206 
h
->
d
->
	`am_o
(h->d, 
ro_pgno
, &
do
)) != 0)

207 
out
;

208 i(
do
 != 0) {

209 i((
t
 = 
	`__memp_dty
(
mpf
, &
h
->
ge
,

210 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

211 
out
;

212 i((
t
 = 
	`__ham_d_
(
dbc
, 0)) != 0)

213 
out
;

217 
out
: i(
h
->
ge
 !
NULL
 && (
t_t
 =

218 
	`__memp_ut
(
mpf
, 
h
->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

219 
t
 = 
t_t
;

220 i(
gma
 !0 && (
t_t
 = 
	`__ham_a_ma
(
dbc
)!0 && 
t
 == 0)

221 
t
 = 
t_t
;

223 
de
: i((
t_t
 = 
	`__ham_em_
(
dbc
)!0 && 
t
 == 0)

224 
t
 = 
t_t
;

225  (
t
);

226 
	}
}

233 
	$__hamc_deroy
(
dbc
)

234 
DBC
 *
dbc
;

236 
HASH_CURSOR
 *
h
;

238 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

239 i(
h
->
l_buf
 !
NULL
)

240 
	`__os_
(
dbc
->
dbp
->
dbv
, 
h
->
l_buf
);

241 
	`__os_
(
dbc
->
dbp
->
dbv
, 
h
);

244 
	}
}

253 
	$__hamc_cou
(
dbc
, 

)

254 
DBC
 *
dbc
;

255 
db_o_t
 *

;

257 
DB
 *
dbp
;

258 
DB_MPOOLFILE
 *
mpf
;

259 
HASH_CURSOR
 *
h
;

260 
db_dx_t
 
n
;

261 
db_o_t
 
o
;

262 
t
, 
t_t
;

263 
u_t8_t
 *
p
, *
nd
;

265 
dbp
 = 
dbc
->dbp;

266 
mpf
 = 
dbp
->mpf;

267 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

269 
o
 = 0;

271 i((
t
 = 
	`__ham_g_age
(
dbc
, 
DB_LOCK_READ
)) != 0)

272  (
t
);

273 i(
h
->
dx
 >
	`NUM_ENT
(h->
ge
)) {

274 *

 = 0;

275 
r
;

278 
	`HPAGE_PTYPE
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
))) {

279 
H_KEYDATA
:

280 
H_OFFPAGE
:

281 
o
 = 1;

283 
H_DUPLICATE
:

284 
p
 = 
	`HKEYDATA_DATA
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
));

285 
nd
 = 
p
 +

286 
	`LEN_HDATA
(
dbp
, 
h
->
ge
, dbp->
pgsize
, h->
dx
);

287 ; 
p
 < 
nd
; 
o
++) {

289 
	`memy
(&
n
, 
p
, (
db_dx_t
));

290 
p
 +2 * (
db_dx_t
+ 
n
;

295 
t
 = 
	`__db_pgfmt
(
dbp
->
dbv
, 
h
->
pgno
);

296 
r
;

299 *

 = 
o
;

301 
r
: i((
t_t
 =

302 
	`__memp_ut
(
mpf
, 
h
->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

303 
t
 = 
t_t
;

304 
h
->
ge
 = 
NULL
;

305  (
t
);

306 
	}
}

309 
	$__hamc_d
(
dbc
)

310 
DBC
 *
dbc
;

312 
DB
 *
dbp
;

313 
DBT
 
dbt
;

314 
DB_MPOOLFILE
 *
mpf
;

315 
HASH_CURSOR
 *
h
;

316 
t
, 
t_t
;

318 
dbp
 = 
dbc
->dbp;

319 
mpf
 = 
dbp
->mpf;

320 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

322 i(
	`F_ISSET
(
h
, 
H_DELETED
))

323  (
DB_NOTFOUND
);

325 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

326 
out
;

328 i((
t
 = 
	`__ham_g_age
(
dbc
, 
DB_LOCK_WRITE
)) != 0)

329 
out
;

332 i(
	`HPAGE_TYPE
(
dbp
, 
h
->
ge
, 
	`H_DATAINDEX
(h->
dx
)=
H_OFFDUP
)

333 
out
;

335 i((
t
 = 
	`__memp_dty
(
mpf
,

336 &
h
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

337 
out
;

339 i(
	`F_ISSET
(
h
, 
H_ISDUP
)) {

340 i(
h
->
dup_off
 == 0 &&

341 
	`DUP_SIZE
(
h
->
dup_n
=
	`LEN_HDATA
(
dbp
, h->
ge
,

342 
h
->
hdr
->
dbma
.
gesize
, h->
dx
))

343 
t
 = 
	`__ham_d_
(
dbc
, 0);

345 
dbt
.
ags
 = 0;

346 
	`F_SET
(&
dbt
, 
DB_DBT_PARTIAL
);

347 
dbt
.
doff
 = 
h
->
dup_off
;

348 
dbt
.
dn
 = 
	`DUP_SIZE
(
h
->
dup_n
);

349 
dbt
.
size
 = 0;

350 
dbt
.
da
 = 
	`HKEYDATA_DATA
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
,

351 
h
->
dx
));

352 i((
t
 = 
	`__ham_
(
dbc
, &
dbt
, 0)) == 0) {

353 
h
->
dup_
 -
	`DUP_SIZE
(h->
dup_n
);

354 
	`F_SET
(
h
, 
H_DELETED
);

355 
t
 = 
	`__hamc_upde
(
dbc
, 
	`DUP_SIZE
(
h
->
dup_n
),

356 
DB_HAM_CURADJ_DEL
, 1);

360 
t
 = 
	`__ham_d_
(
dbc
, 0);

362 
out
: i(
h
->
ge
 !
NULL
) {

363 i((
t_t
 = 
	`__memp_ut
(
mpf
,

364 
h
->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

365 
t
 = 
t_t
;

366 
h
->
ge
 = 
NULL
;

368 i((
t_t
 = 
	`__ham_a_ma
(
dbc
)!0 && 
t
 == 0)

369 
t
 = 
t_t
;

370  (
t
);

371 
	}
}

381 
	$__hamc_dup
(
ig_dbc
, 
w_dbc
)

382 
DBC
 *
ig_dbc
, *
w_dbc
;

384 
HASH_CURSOR
 *
ig
, *
w
;

386 
ig
 = (
HASH_CURSOR
 *)
ig_dbc
->

;

387 
w
 = (
HASH_CURSOR
 *)
w_dbc
->

;

389 
w
->
buck
 = 
ig
->bucket;

390 
w
->
lbuck
 = 
ig
->lbucket;

391 
w
->
dup_off
 = 
ig
->dup_off;

392 
w
->
dup_n
 = 
ig
->dup_len;

393 
w
->
dup_
 = 
ig
->dup_tlen;

395 i(
	`F_ISSET
(
ig
, 
H_DELETED
))

396 
	`F_SET
(
w
, 
H_DELETED
);

397 i(
	`F_ISSET
(
ig
, 
H_ISDUP
))

398 
	`F_SET
(
w
, 
H_ISDUP
);

401 
	}
}

404 
	$__hamc_g
(
dbc
, 
key
, 
da
, 
ags
, 
pgn
)

405 
DBC
 *
dbc
;

406 
DBT
 *
key
;

407 
DBT
 *
da
;

408 
u_t32_t
 
ags
;

409 
db_pgno_t
 *
pgn
;

411 
DB
 *
dbp
;

412 
DB_ENV
 *
dbv
;

413 
DB_MPOOLFILE
 *
mpf
;

414 
HASH_CURSOR
 *
h
;

415 
db_lockmode_t
 
lock_ty
;

416 
t
, 
t_t
;

418 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

419 
dbp
 = 
dbc
->dbp;

420 
dbv
 = 
dbp
->dbenv;

421 
mpf
 = 
dbp
->mpf;

424 i(
	`F_ISSET
(
dbc
, 
DBC_RMW
))

425 
lock_ty
 = 
DB_LOCK_WRITE
;

427 
lock_ty
 = 
DB_LOCK_READ
;

429 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

430  (
t
);

431 
h
->
ek_size
 = 0;

433 
t
 = 0;

434 
ags
) {

435 
DB_PREV_DUP
:

436 
	`F_SET
(
h
, 
H_DUPONLY
);

437 
ev
;

438 
DB_PREV_NODUP
:

439 
	`F_SET
(
h
, 
H_NEXT_NODUP
);

441 
DB_PREV
:

442 i(
	`IS_INITIALIZED
(
dbc
)) {

443 
ev
: 
t
 = 
	`__ham_em_ev
(
dbc
, 
lock_ty
, 
pgn
);

447 
DB_LAST
:

448 
t
 = 
	`__ham_em_ϡ
(
dbc
, 
lock_ty
, 
pgn
);

450 
DB_NEXT_DUP
:

451 
DB_GET_BOTHC
:

453 
	`F_SET
(
h
, 
H_DUPONLY
);

454 
xt
;

455 
DB_NEXT_NODUP
:

456 
	`F_SET
(
h
, 
H_NEXT_NODUP
);

458 
DB_NEXT
:

459 i(
	`IS_INITIALIZED
(
dbc
)) {

460 
xt
: 
t
 = 
	`__ham_em_xt
(
dbc
, 
lock_ty
, 
pgn
);

464 
DB_FIRST
:

465 
t
 = 
	`__ham_em_f
(
dbc
, 
lock_ty
, 
pgn
);

467 
DB_SET
:

468 
DB_SET_RANGE
:

469 
DB_GET_BOTH
:

470 
DB_GET_BOTH_RANGE
:

471 
t
 = 
	`__ham_lookup
(
dbc
, 
key
, 0, 
lock_ty
, 
pgn
);

473 
DB_CURRENT
:

475 i(
	`F_ISSET
(
h
, 
H_DELETED
)) {

476 
t
 = 
DB_KEYEMPTY
;

477 
r
;

480 
t
 = 
	`__ham_em
(
dbc
, 
lock_ty
, 
pgn
);

483 
t
 = 
	`__db_unknown_ag
(
dbv
, "__hamc_g", 
ags
);

492 i(
t
 !0 && !
DB_NOTFOUND
)

493 
r
;

494 i(
	`F_ISSET
(
h
, 
H_OK
)) {

495 i(*
pgn
 =
PGNO_INVALID
)

496 
t
 = 
	`__ham_dup_tu
(
dbc
, 
da
, 
ags
);

498 } i(!
	`F_ISSET
(
h
, 
H_NOMORE
)) {

499 
	`__db_rx
(
dbv
, "H_NOMOREeturnedo __hamc_get");

500 
t
 = 
EINVAL
;

507 
ags
) {

508 
DB_LAST
:

509 
DB_PREV
:

510 
DB_PREV_DUP
:

511 
DB_PREV_NODUP
:

512 
t
 = 
	`__memp_ut
(
mpf
, 
h
->
ge
, 
dbc
->
iܙy
);

513 
h
->
ge
 = 
NULL
;

514 i(
h
->
buck
 == 0) {

515 
t
 = 
DB_NOTFOUND
;

516 
h
->
pgno
 = 
PGNO_INVALID
;

517 
r
;

519 
	`F_CLR
(
h
, 
H_ISDUP
);

520 
h
->
buck
--;

521 
h
->
dx
 = 
NDX_INVALID
;

522 
h
->
pgno
 = 
	`BUCKET_TO_PAGE
(h, h->
buck
);

523 i(
t
 == 0)

524 
t
 = 
	`__ham_em_ev
(
dbc
, 
lock_ty
, 
pgn
);

526 
DB_FIRST
:

527 
DB_NEXT
:

528 
DB_NEXT_NODUP
:

529 
t
 = 
	`__memp_ut
(
mpf
, 
h
->
ge
, 
dbc
->
iܙy
);

530 
h
->
ge
 = 
NULL
;

531 
h
->
dx
 = 
NDX_INVALID
;

532 
h
->
buck
++;

533 
	`F_CLR
(
h
, 
H_ISDUP
);

534 
h
->
pgno
 = 
	`BUCKET_TO_PAGE
(h, h->
buck
);

535 i(
h
->
buck
 > h->
hdr
->
max_buck
) {

536 
t
 = 
DB_NOTFOUND
;

537 
h
->
pgno
 = 
PGNO_INVALID
;

538 
r
;

540 i(
t
 == 0)

541 
t
 = 
	`__ham_em_xt
(
dbc
, 
lock_ty
, 
pgn
);

543 
DB_GET_BOTH
:

544 
DB_GET_BOTHC
:

545 
DB_GET_BOTH_RANGE
:

546 
DB_NEXT_DUP
:

547 
DB_SET
:

548 
DB_SET_RANGE
:

550 
t
 = 
DB_NOTFOUND
;

551 
r
;

552 
DB_CURRENT
:

559 
t
 = 
DB_KEYEMPTY
;

560 
r
;

562 
	`DB_ASSERT
(
dbv
, 0);

566 
r
: i((
t_t
 = 
	`__ham_a_ma
(
dbc
)!0 && 
t
 == 0)

567 
t
 = 
t_t
;

569 
	`F_CLR
(
h
, 
H_DUPONLY
);

570 
	`F_CLR
(
h
, 
H_NEXT_NODUP
);

572  (
t
);

573 
	}
}

579 
	$__ham_bulk
(
dbc
, 
da
, 
ags
)

580 
DBC
 *
dbc
;

581 
DBT
 *
da
;

582 
u_t32_t
 
ags
;

584 
DB
 *
dbp
;

585 
DB_MPOOLFILE
 *
mpf
;

586 
HASH_CURSOR
 *

;

587 
PAGE
 *
pg
;

588 
db_dx_t
 
dup_n
, 
dup_off
, 
dup_
, 
dx
, *
p
;

589 
db_lockmode_t
 
lock_mode
;

590 
db_pgno_t
 
pgno
;

591 
t32_t
 *
dp
, *
of
, *
veoff
;

592 
u_t32_t
 
key_off
, 
key_size
, 
gesize
, 
size
, 
a
;

593 
u_t8_t
 *
dbuf
, *
dp
, *
hk
, *

, *
tmp
;

594 
is_dup
, 
is_key
;

595 
ed_pg
, 
xt_key
, 
no_dup
, 
t
, 
t_t
;

597 
t
 = 0;

598 
key_off
 = 0;

599 
dup_n
 = 
dup_off
 = 
dup_
 = 0;

600 
size
 = 0;

601 
dbp
 = 
dbc
->dbp;

602 
gesize
 = 
dbp
->
pgsize
;

603 
mpf
 = 
dbp
->mpf;

604 

 = (
HASH_CURSOR
 *)
dbc
->

;

605 
is_key
 = 
	`LF_ISSET
(
DB_MULTIPLE_KEY
) ? 1 : 0;

606 
xt_key
 = 
is_key
 && 
	`LF_ISSET
(
DB_OPFLAGS_MASK
!
DB_NEXT_DUP
;

607 
no_dup
 = 
	`LF_ISSET
(
DB_OPFLAGS_MASK
=
DB_NEXT_NODUP
;

608 
dbuf
 = 
da
->data;

609 

 = 
dp
 = 
dbuf
;

612 
a
 = 
da
->
un
;

613 
a
 -(*
of
);

616 
dp
 = (
t32_t
 *((
u_t8_t
 *)
dbuf
 + 
da
->
un
);

617 
dp
--;

618 
of
 = 
dp
;

620 
key_size
 = 0;

621 
lock_mode
 = 
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
DB_LOCK_WRITE
: 
DB_LOCK_READ
;

623 
xt_pg
:

624 
ed_pg
 = 1;

625 
dx
 = 

->indx;

626 
pg
 = 

->
ge
;

627 
p
 = 
	`P_INP
(
dbp
, 
pg
);

630 i(
is_key
) {

631 
hk
 = 
	`H_PAIRKEY
(
dbp
, 
pg
, 
dx
);

632 i(
	`HPAGE_PTYPE
(
hk
=
H_OFFPAGE
) {

633 
	`memy
(&
key_size
,

634 
	`HOFFPAGE_TLEN
(
hk
), (
u_t32_t
));

635 
	`memy
(&
pgno
,

636 
	`HOFFPAGE_PGNO
(
hk
), (
db_pgno_t
));

637 
size
 = 
key_size
;

638 i(
key_size
 > 
a
)

639 
g_key_a
;

640 i((
t
 = 
	`__bam_bulk_ovow
(

641 
dbc
, 
key_size
, 
pgno
, 

)) != 0)

642  (
t
);

643 
a
 -
key_size
;

644 
key_off
 = (
u_t32_t
)(

 - 
dbuf
);

645 

 +
key_size
;

647 i(
ed_pg
) {

648 
dp
 = 

;

649 
size
 = 
gesize
 - 
	`HOFFSET
(
pg
);

650 i(
a
 < 
size
) {

651 
g_key_a
:

652 i(
of
 =
dp
) {

653 
da
->
size
 = (
u_t32_t
)

654 
	`DB_ALIGN
(
size
 +

655 
gesize
, 1024);

657 (
DB_BUFFER_SMALL
);

659 
back_up
;

661 
	`memy
(
dp
,

662 (
u_t8_t
 *)
pg
 + 
	`HOFFSET
g), 
size
);

663 
ed_pg
 = 0;

664 
a
 -
size
;

665 

 +
size
;

667 
key_size
 = 
	`LEN_HKEY
(
dbp
, 
pg
, 
gesize
, 
dx
);

668 
key_off
 = ((
p
[
dx
] - 
	`HOFFSET
(
pg
)) +

669 (
u_t32_t
)(
dp
 - 
dbuf
)) +

670 
	`SSZA
(
HKEYDATA
, 
da
);

674 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
pg
, 
dx
);

675 
	`HPAGE_PTYPE
(
hk
)) {

676 
H_DUPLICATE
:

677 
H_KEYDATA
:

678 i(
ed_pg
) {

679 
dp
 = 

;

680 
size
 = 
gesize
 - 
	`HOFFSET
(
pg
);

681 i(
a
 < 
size
) {

682 
back_up
:

683 i(
dx
 != 0) {

684 
dx
 -= 2;

699 
tmp
 = 
	`H_PAIRDATA
(
dbp
, 
pg
, 
dx
);

700 i(
	`HPAGE_PTYPE
(
tmp
) ==

701 
H_DUPLICATE
) {

702 
dup_off
 = 
dup_
 =

703 
	`LEN_HDATA
(
dbp
, 
pg
,

704 
gesize
, 
dx
 + 1);

705 
	`memy
(&
dup_n
,

706 
	`HKEYDATA_DATA
(
tmp
),

707 (
db_dx_t
));

709 
is_dup
 = 0;

710 
dup_n
 = 0;

711 
dup_off
 = 0;

712 
dup_
 = 0;

713 
	`F_CLR
(

, 
H_ISDUP
);

715 
g_a
;

718 

->
dup_n
 = dup_len;

719 

->
dup_off
 = dup_off;

720 

->
dup_
 = dup_tlen;

721 i((
t
 = 
	`__ham_em_ev
(
dbc
,

722 
lock_mode
, &
pgno
)) != 0) {

723 i(
t
 !
DB_NOTFOUND
)

724  (
t
);

725 i((
t
 = 
	`__memp_ut
(
mpf
,

726 

->
ge
,

727 
dbc
->
iܙy
)) != 0)

728  (
t
);

729 

->
ge
 = 
NULL
;

730 i(

->
buck
 == 0) {

731 

->
dx
 = indx =

732 
NDX_INVALID
;

733 
g_a
;

735 i((
t
 =

736 
	`__ham_g_ma
(
dbc
)) != 0)

737  (
t
);

739 

->
buck
--;

740 

->
pgno
 = 
	`BUCKET_TO_PAGE
(cp,

741 

->
buck
);

742 

->
dx
 = 
NDX_INVALID
;

743 i((
t
 = 
	`__ham_a_ma
(

744 
dbc
)) != 0)

745  (
t
);

746 i((
t
 = 
	`__ham_em_ev
(
dbc
,

747 
lock_mode
, &
pgno
)) != 0)

748  (
t
);

750 
dx
 = 

->indx;

751 
g_a
:

755 i(
of
 >
dp
 ||

756 
	`F_ISSET
(
dbc
, 
DBC_TRANSIENT
)) {

757 
da
->
size
 = (
u_t32_t
)

758 
	`DB_ALIGN
(
size
 +

759 
da
->
un
 - 
a
, 1024);

760  (
DB_BUFFER_SMALL
);

767 
xt_key
 = 0;

770 
	`memy
(
dp
, (
u_t8_t
 *)
pg
 + 
	`HOFFSET
g), 
size
);

771 
ed_pg
 = 0;

772 
a
 -
size
;

773 

 +
size
;

789 i(
	`F_ISSET
(

, 
H_ISDUP
)) {

791 
is_dup
 = 1;

792 
dup_n
 = 

->dup_len;

793 
dup_off
 = 

->dup_off;

794 
dup_
 = 

->dup_tlen;

795 } i(
	`HPAGE_PTYPE
(
hk
=
H_DUPLICATE
) {

797 
is_dup
 = 1;

803 
	`F_SET
(

, 
H_ISDUP
);

804 
dup_off
 = 0;

805 
	`memy
(&
dup_n
,

806 
	`HKEYDATA_DATA
(
hk
), (
db_dx_t
));

807 
dup_
 = 
	`LEN_HDATA
(
dbp
, 
pg
, 
gesize
, 
dx
);

810 
is_dup
 = 0;

811 
dup_n
 = 0;

812 
dup_off
 = 0;

813 
dup_
 = 0;

817 
a
 -(
is_key
 ? 4 : 2* (*
of
);

818 
size
 +(
is_key
 ? 4 : 2* (*
of
);

826 i(
a
 > 
da
->
un
) {

827 i(!
is_dup
 || 
dup_off
 == 0)

828 
back_up
;

829 
dup_off
 -(
db_dx_t
)

830 
	`DUP_SIZE
((
u_t32_t
)
of
[1]);

831 
g_a
;

833 i(
is_key
) {

834 *
of
-- = (
t32_t
)
key_off
;

835 *
of
-- = (
t32_t
)
key_size
;

837 i(
is_dup
) {

838 *
of
-- = (
t32_t
)(

839 ((
p
[
dx
 + 1] - 
	`HOFFSET
(
pg
)) +

840 
dp
 - 
dbuf
+ 
	`SSZA
(
HKEYDATA
, 
da
) +

841 
dup_off
 + (
db_dx_t
));

842 
	`memy
(&
dup_n
,

843 
	`HKEYDATA_DATA
(
hk
+ 
dup_off
,

844 (
db_dx_t
));

845 
dup_off
 +
	`DUP_SIZE
(
dup_n
);

846 *
of
-- = 
dup_n
;

848 *
of
-- = (
t32_t
)(

849 ((
p
[
dx
 + 1] - 
	`HOFFSET
(
pg
)) +

850 
dp
 - 
dbuf
+ 
	`SSZA
(
HKEYDATA
, 
da
));

851 *
of
-- = 
	`LEN_HDATA
(
dbp
, 
pg
,

852 
gesize
, 
dx
);

854 } 
is_dup
 && 
dup_off
 < 
dup_
 && 
no_dup
 == 0);

855 
	`F_CLR
(

, 
H_ISDUP
);

857 
H_OFFDUP
:

858 
	`memy
(&
pgno
, 
	`HOFFPAGE_PGNO
(
hk
), (
db_pgno_t
));

859 
a
 -2 * (*
of
);

860 i(
a
 > 
da
->
un
)

861 
back_up
;

863 i(
is_key
) {

864 
a
 -2 * (*
of
);

865 i(
a
 > 
da
->
un
)

866 
back_up
;

867 *
of
-- = (
t32_t
)
key_off
;

868 *
of
-- = (
t32_t
)
key_size
;

870 
veoff
 = 
of
;

871 i((
t
 = 
	`__bam_bulk_duis
(
dbc
,

872 
pgno
, 
dbuf
, 
is_key
 ? 
of
 + 2 : 
NULL
,

873 &
of
, &

, &
a
, 
no_dup
)) != 0) {

874 i(
t
 =
DB_BUFFER_SMALL
) {

875 
size
 = 
a
;

876 
a
 = 0;

877 i(
is_key
 && 
veoff
 =
of
) {

878 
of
 += 2;

879 
back_up
;

881 
g_a
;

883  (
t
);

886 
H_OFFPAGE
:

887 
a
 -(
is_key
 ? 4 : 2* (*
of
);

888 i(
a
 > 
da
->
un
)

889 
back_up
;

891 
	`memy
(&
size
, 
	`HOFFPAGE_TLEN
(
hk
), (
u_t32_t
));

892 
	`memy
(&
pgno
, 
	`HOFFPAGE_PGNO
(
hk
), (
db_pgno_t
));

893 i(
size
 > 
a
)

894 
back_up
;

896 i((
t
 =

897 
	`__bam_bulk_ovow
(
dbc
, 
size
, 
pgno
, 

)) != 0)

898  (
t
);

900 i(
is_key
) {

901 *
of
-- = (
t32_t
)
key_off
;

902 *
of
-- = (
t32_t
)
key_size
;

905 *
of
-- = (
t32_t
)(

 - 
dbuf
);

906 *
of
-- = (
t32_t
)
size
;

908 

 +
size
;

909 
a
 -
size
;

915 } 
xt_key
 && (
dx
 +2< 
	`NUM_ENT
(
pg
));

917 

->
dx
 = indx;

918 

->
dup_n
 = dup_len;

919 

->
dup_off
 = dup_off;

920 

->
dup_
 = dup_tlen;

923 i(
t
 =0 && 
xt_key
 && 
dx
 >
	`NUM_ENT
(
pg
)) {

924 i((
t
 = 
	`__ham_em_xt
(
dbc
, 
lock_mode
, &
pgno
)) == 0)

925 
xt_pg
;

926 i(
t
 !
DB_NOTFOUND
)

927  (
t
);

928 i((
t
 = 
	`__memp_ut
(
dbc
->
dbp
->
mpf
,

929 

->
ge
, 
dbc
->
iܙy
)) != 0)

930  (
t
);

931 

->
ge
 = 
NULL
;

932 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

933  (
t
);

935 

->
buck
++;

936 i(

->
buck
 > cp->
hdr
->
max_buck
) {

942 

->
buck
--;

943 
t
 = 
DB_NOTFOUND
;

955 

->
pgno
 = 
	`BUCKET_TO_PAGE
(, cp->
buck
);

956 

->
dx
 = 
NDX_INVALID
;

957 
	`F_CLR
(

, 
H_ISDUP
);

958 
t
 = 
	`__ham_em_xt
(
dbc
, 
lock_mode
, &
pgno
);

961 i((
t_t
 = 
	`__ham_a_ma
(
dbc
)) != 0)

962  (
t_t
);

963 i(
t
 == 0)

964 
xt_pg
;

965 i(
t
 !
DB_NOTFOUND
)

966  (
t
);

968 *
of
 = -1;

970 
	}
}

973 
	$__hamc_put
(
dbc
, 
key
, 
da
, 
ags
, 
pgn
)

974 
DBC
 *
dbc
;

975 
DBT
 *
key
;

976 
DBT
 *
da
;

977 
u_t32_t
 
ags
;

978 
db_pgno_t
 *
pgn
;

980 
DB
 *
dbp
;

981 
DB_MPOOLFILE
 *
mpf
;

982 
DBT
 
tmp_v
, *
myv
;

983 
HASH_CURSOR
 *
h
;

984 
u_t32_t
 
nbys
;

985 
t
, 
t_t
;

992 
	`COMPQUIET
(
myv
, 
NULL
);

994 
dbp
 = 
dbc
->dbp;

995 
mpf
 = 
dbp
->mpf;

996 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

998 i(
	`F_ISSET
(
h
, 
H_DELETED
) &&

999 
ags
 !
DB_KEYFIRST
 && fg!
DB_KEYLAST
)

1000  (
DB_NOTFOUND
);

1002 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

1003 
r1
;

1005 
ags
) {

1006 
DB_KEYLAST
:

1007 
DB_KEYFIRST
:

1008 
DB_NODUPDATA
:

1009 
DB_NOOVERWRITE
:

1010 
nbys
 = (
	`ISBIG
(
h
, 
key
->
size
? 
HOFFPAGE_PSIZE
 :

1011 
	`HKEYDATA_PSIZE
(
key
->
size
)) +

1012 (
	`ISBIG
(
h
, 
da
->
size
? 
HOFFPAGE_PSIZE
 :

1013 
	`HKEYDATA_PSIZE
(
da
->
size
));

1014 i((
t
 = 
	`__ham_lookup
(
dbc
,

1015 
key
, 
nbys
, 
DB_LOCK_WRITE
, 
pgn
)=
DB_NOTFOUND
) {

1016 i(
h
->
ek_found_ge
 !
PGNO_INVALID
 &&

1017 
h
->
ek_found_ge
 !h->
pgno
) {

1018 i((
t
 = 
	`__memp_ut
(
mpf
,

1019 
h
->
ge
, 
dbc
->
iܙy
)) != 0)

1020 
r2
;

1021 
h
->
ge
 = 
NULL
;

1022 
h
->
pgno
 = h->
ek_found_ge
;

1023 
h
->
dx
 = 
NDX_INVALID
;

1026 i(
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
&& da->
doff
 != 0) {

1034 i((
t
 = 
	`__ham__dbt
(
dbp
->
dbv
, &
tmp_v
,

1035 
da
->
size
 + da->
doff
,

1036 &
dbc
->
my_rda
.
da
,

1037 &
dbc
->
my_rda
.
un
)) != 0)

1038 
r2
;

1040 
	`memt
(
tmp_v
.
da
, 0, da->
doff
);

1041 
	`memy
((
u_t8_t
 *)
tmp_v
.
da
 +

1042 
da
->
doff
, da->da, da->
size
);

1043 
myv
 = &
tmp_v
;

1045 
myv
 = (
DBT
 *)
da
;

1047 
t
 = 
	`__ham_add_
(
dbc
, 
key
, 
myv
, 
H_KEYDATA
);

1048 
de
;

1049 } i(
ags
 =
DB_NOOVERWRITE
 &&

1050 !
	`F_ISSET
(
h
, 
H_DELETED
)) {

1051 i(*
pgn
 =
PGNO_INVALID
)

1052 
t
 = 
DB_KEYEXIST
;

1054 
t
 = 
	`__bam_d_exis
(
dbc
, *
pgn
);

1055 i(
t
 != 0)

1056 
de
;

1059 
DB_BEFORE
:

1060 
DB_AFTER
:

1061 
DB_CURRENT
:

1062 
t
 = 
	`__ham_em
(
dbc
, 
DB_LOCK_WRITE
, 
pgn
);

1065 
t
 = 
	`__db_unknown_ag
(
dbp
->
dbv
, "__hamc_put", 
ags
);

1073 
h
->
ek_found_ge
 = 
PGNO_INVALID
;

1074 
h
->
ek_found_dx
 = 
NDX_INVALID
;

1076 i(*
pgn
 =
PGNO_INVALID
 && 
t
 == 0) {

1077 i((
t
 = 
	`__memp_dty
(
mpf
,

1078 &
h
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1079 
de
;

1080 i(
ags
 =
DB_CURRENT
 ||

1081 ((
ags
 =
DB_KEYFIRST
 ||

1082 
ags
 =
DB_KEYLAST
 || fg=
DB_NODUPDATA
) &&

1083 !(
	`F_ISSET
(
dbp
, 
DB_AM_DUP
|| F_ISSET(
key
, 
DB_DBT_DUPOK
))))

1084 
t
 = 
	`__ham_ovwre
(
dbc
, 
da
, 
ags
);

1086 
t
 = 
	`__ham_add_dup
(
dbc
, 
da
, 
ags
, 
pgn
);

1089 
de
: i(
h
->
ge
 !
NULL
) {

1090 i((
t_t
 = 
	`__memp_ut
(
mpf
,

1091 
h
->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1092 
t
 = 
t_t
;

1093 i(
t_t
 == 0)

1094 
h
->
ge
 = 
NULL
;

1097 i(
t
 =0 && 
	`F_ISSET
(
h
, 
H_EXPAND
)) {

1098 
t
 = 
	`__ham_exnd_b
(
dbc
);

1099 
	`F_CLR
(
h
, 
H_EXPAND
);

1101 i(
t
 =
ENOSPC
 && 
dbc
->
txn
 =
NULL
)

1102 
t
 = 0;

1105 
r2
: i((
t_t
 = 
	`__ham_a_ma
(
dbc
)!0 && 
t
 == 0)

1106 
t
 = 
t_t
;

1108 
r1
:  (
t
);

1109 
	}
}

1117 
	$__ham_exnd_b
(
dbc
)

1118 
DBC
 *
dbc
;

1120 
DB
 *
dbp
;

1121 
DB_LOCK
 
mock
;

1122 
DB_LSN
 
l
;

1123 
DB_MPOOLFILE
 *
mpf
;

1124 
DBMETA
 *
mma
;

1125 
HASH_CURSOR
 *
h
;

1126 
PAGE
 *
h
;

1127 
db_pgno_t
 
pgno
, 
mpgno
;

1128 
u_t32_t
 
logn
, 
wloc
, 
w_buck
, 
d_buck
;

1129 
g_ma
, 
w_doub
, 
t
, 
t_t
;

1131 
dbp
 = 
dbc
->dbp;

1132 
mpf
 = 
dbp
->mpf;

1133 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1134 i((
t
 = 
	`__ham_dty_ma
(
dbc
, 0)) != 0)

1135  (
t
);

1137 
	`LOCK_INIT
(
mock
);

1138 
mma
 = (
DBMETA
 *
h
->
hdr
;

1139 
mpgno
 = 
mma
->
pgno
;

1140 
h
 = 
NULL
;

1141 
wloc
 = 0;

1142 
g_ma
 = 0;

1162 
w_buck
 = 
h
->
hdr
->
max_buck
 + 1;

1163 
d_buck
 = 
w_buck
 & 
h
->
hdr
->
low_mask
;

1165 
w_doub
 = 
h
->
hdr
->
max_buck
 =h->hdr->
high_mask
;

1166 
logn
 = 
	`__db_log2
(
w_buck
);

1168 i(!
w_doub
 || 
h
->
hdr
->
es
[
logn
 + 1] !
PGNO_INVALID
) {

1170 
pgno
 = 
	`BUCKET_TO_PAGE
(
h
, 
w_buck
);

1171 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

1172 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
h
)) != 0)

1173 
r
;

1174 
l
 = 
h
->lsn;

1177 i(
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
)) {

1178 
mpgno
 = 
PGNO_BASE_MD
;

1179 i((
t
 = 
	`__db_lg
(
dbc
,

1180 0, 
mpgno
, 
DB_LOCK_WRITE
, 0, &
mock
)) != 0)

1181 
r
;

1182 i((
t
 = 
	`__memp_fg
(
mpf
, &
mpgno
, 
dbc
->
txn
,

1183 
DB_MPOOL_DIRTY
, &
mma
)) != 0)

1184 
r
;

1185 
g_ma
 = 1;

1187 
pgno
 = 
mma
->
ϡ_pgno
 + 1;

1188 
	`ZERO_LSN
(
l
);

1189 
wloc
 = 1;

1193 i(
	`DBC_LOGGING
(
dbc
)) {

1201 i((
t
 = 
	`__ham_magroup_log
(
dbp
, 
dbc
->
txn
,

1202 &
l
, 0, 
h
->
hdr
->
max_buck
, 
mpgno
, &
mma
->lsn,

1203 
h
->
hdr
->
dbma
.
pgno
, &h->hdr->dbma.
l
,

1204 
pgno
, &
l
, 
wloc
, 
mma
->
ϡ_pgno
)) != 0)

1205 
r
;

1207 
	`LSN_NOT_LOGGED
(
l
);

1209 
h
->
hdr
->
dbma
.
l
 =sn;

1211 i(
w_doub
 && 
h
->
hdr
->
es
[
logn
 + 1] =
PGNO_INVALID
) {

1222 
pgno
 +
h
->
hdr
->
max_buck
;

1224 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

1225 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
h
)) != 0)

1226 
r
;

1228 
h
->
hdr
->
es
[
logn
 + 1] =

1229 (
pgno
 - 
w_buck
- 
h
->
hdr
->
max_buck
;

1230 
mma
->
ϡ_pgno
 = 
pgno
;

1231 
mma
->
l
 =sn;

1233 
	`P_INIT
(
h
, 
dbp
->
pgsize
,

1234 
pgno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

1238 
h
->
l
 =sn;

1239 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)) != 0)

1240 
r
;

1241 
h
 = 
NULL
;

1246 
h
->
hdr
->
max_buck
 = 
w_buck
;

1247 i(
w_doub
) {

1248 
h
->
hdr
->
low_mask
 = h->hdr->
high_mask
;

1249 
h
->
hdr
->
high_mask
 = 
w_buck
 | h->hdr->
low_mask
;

1253 
t
 = 
	`__ham_l_ge
(
dbc
, 
d_buck
, 
w_buck
);

1255 
r
: i(
g_ma
)

1256 i((
t_t
 =

1257 
	`__memp_ut
(
mpf
, 
mma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1258 
t
 = 
t_t
;

1259 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

1260 
t
 = 
t_t
;

1261 i(
h
 !
NULL
)

1262 i((
t_t
 = 
	`__memp_ut
(
mpf
,

1263 
h
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1264 
t
 = 
t_t
;

1266  (
t
);

1267 
	}
}

1272 
u_t32_t


1273 
	$__ham__hash
(
dbc
, 
k
, 
n
)

1274 
DBC
 *
dbc
;

1275 
u_t8_t
 *
k
;

1276 
u_t32_t
 
n
;

1278 
DB
 *
dbp
;

1279 
HASH_CURSOR
 *
h
;

1280 
HASH
 *
hashp
;

1281 
u_t32_t
 
n
, 
buck
;

1283 
dbp
 = 
dbc
->dbp;

1284 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1285 
hashp
 = 
dbp
->
h_
;

1287 
n
 = (
u_t32_t
)(
hashp
->
	`h_hash
(
dbp
, 
k
, 
n
));

1289 
buck
 = 
n
 & 
h
->
hdr
->
high_mask
;

1290 i(
buck
 > 
h
->
hdr
->
max_buck
)

1291 
buck
 = buck & 
h
->
hdr
->
low_mask
;

1292  (
buck
);

1293 
	}
}

1300 
	$__ham_dup_tu
(
dbc
, 
v
, 
ags
)

1301 
DBC
 *
dbc
;

1302 
DBT
 *
v
;

1303 
u_t32_t
 
ags
;

1305 
DB
 *
dbp
;

1306 
HASH_CURSOR
 *
h
;

1307 
PAGE
 *

;

1308 
DBT
 *
myv
, 
tmp_v
;

1309 
db_dx_t
 
ndx
;

1310 
db_pgno_t
 
pgno
;

1311 
u_t32_t
 
off
, 

;

1312 
u_t8_t
 *
hk
, 
ty
;

1313 
cmp
, 
t
;

1314 
db_dx_t
 
n
;

1317 
dbp
 = 
dbc
->dbp;

1318 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1319 
ndx
 = 
	`H_DATAINDEX
(
h
->
dx
);

1320 
ty
 = 
	`HPAGE_TYPE
(
dbp
, 
h
->
ge
, 
ndx
);

1321 

 = 
h
->
ge
;

1322 
myv
 = 
v
;

1334 
	`DB_ASSERT
(
dbp
->
dbv
, 
ty
 !
H_OFFDUP
);

1337 i(
ty
 !
H_DUPLICATE
 && 
ags
 !
DB_GET_BOTH
 &&

1338 
ags
 !
DB_GET_BOTHC
 && fg!
DB_GET_BOTH_RANGE
)

1346 i(!
	`F_ISSET
(
h
, 
H_ISDUP
&& 
ty
 =
H_DUPLICATE
) {

1347 
	`F_SET
(
h
, 
H_ISDUP
);

1348 
h
->
dup_
 = 
	`LEN_HDATA
(
dbp
, h->
ge
,

1349 
h
->
hdr
->
dbma
.
gesize
, h->
dx
);

1350 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
);

1351 i(
ags
 =
DB_LAST
 ||

1352 
ags
 =
DB_PREV
 || fg=
DB_PREV_NODUP
) {

1353 
h
->
dup_off
 = 0;

1355 
	`memy
(&
n
,

1356 
	`HKEYDATA_DATA
(
hk
+ 
h
->
dup_off
,

1357 (
db_dx_t
));

1358 
h
->
dup_off
 +
	`DUP_SIZE
(
n
);

1359 } 
h
->
dup_off
 < h->
dup_
);

1360 
h
->
dup_off
 -
	`DUP_SIZE
(
n
);

1362 
	`memy
(&
n
,

1363 
	`HKEYDATA_DATA
(
hk
), (
db_dx_t
));

1364 
h
->
dup_off
 = 0;

1366 
h
->
dup_n
 = 
n
;

1374 i(
ags
 =
DB_GET_BOTH
 ||

1375 
ags
 =
DB_GET_BOTHC
 || fg=
DB_GET_BOTH_RANGE
) {

1376 i(
	`F_ISSET
(
h
, 
H_ISDUP
)) {

1381 i(
ags
 =
DB_GET_BOTHC
)

1382 
	`F_SET
(
h
, 
H_CONTINUE
);

1384 
	`__ham_dch
(
dbc
, 
v
, &
off
, &
cmp
, 
ags
);

1390 
	`F_CLR
(
h
, 
H_CONTINUE
);

1391 
h
->
dup_off
 = 
off
;

1393 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
);

1394 i(((
HKEYDATA
 *)
hk
)->
ty
 =
H_OFFPAGE
) {

1395 
	`memy
(&

,

1396 
	`HOFFPAGE_TLEN
(
hk
), (
u_t32_t
));

1397 
	`memy
(&
pgno
,

1398 
	`HOFFPAGE_PGNO
(
hk
), (
db_pgno_t
));

1399 i((
t
 = 
	`__db_moff
(
dbp
, 
dbc
->
txn
, 
v
,

1400 
pgno
, 

, 
dbp
->
dup_com
, &
cmp
)) != 0)

1401  (
t
);

1407 
tmp_v
.
da
 = 
	`HKEYDATA_DATA
(
hk
);

1408 
tmp_v
.
size
 = 
	`LEN_HDATA
(
dbp
, 
h
->
ge
,

1409 
dbp
->
pgsize
, 
h
->
dx
);

1410 
cmp
 = 
dbp
->
dup_com
 =
NULL
 ?

1411 
	`__bam_defcmp
(
dbp
, &
tmp_v
, 
v
) :

1412 
dbp
->
	`dup_com
(dbp, &
tmp_v
, 
v
);

1416 i(
cmp
 != 0)

1417  (
DB_NOTFOUND
);

1424 i(
	`F_ISSET
(
dbc
, 
DBC_MULTIPLE
 | 
DBC_MULTIPLE_KEY
) ||

1425 
	`F_ISSET
(
v
, 
DB_DBT_ISSET
))

1432 i(
	`F_ISSET
(
h
, 
H_ISDUP
)) {

1440 
	`memy
(&
tmp_v
, 
v
, (*val));

1442 i(
	`F_ISSET
(&
tmp_v
, 
DB_DBT_PARTIAL
)) {

1447 i(
tmp_v
.
doff
 > 
h
->
dup_n
)

1448 
tmp_v
.
dn
 = 0;

1449 i(
tmp_v
.
dn
 +mp_v.
doff
 > 
h
->
dup_n
)

1450 
tmp_v
.
dn
 = 
h
->
dup_n
 -mp_v.
doff
;

1453 
	`F_SET
(&
tmp_v
, 
DB_DBT_PARTIAL
);

1454 
tmp_v
.
dn
 = 
h
->
dup_n
;

1455 
tmp_v
.
doff
 = 0;

1464 
tmp_v
.
doff
 +
h
->
dup_off
 + (
db_dx_t
);

1466 
myv
 = &
tmp_v
;

1473 i((
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
,

1474 

, 
ndx
, 
myv
, &
dbc
->
rda
->
da
, &dbc->rda->
un
)) != 0)

1475  (
t
);

1481 
v
->
da
 = 
myv
->data;

1482 
v
->
size
 = 
myv
->size;

1484 
	`F_SET
(
v
, 
DB_DBT_ISSET
);

1487 
	}
}

1490 
	$__ham_ovwre
(
dbc
, 
nv
, 
ags
)

1491 
DBC
 *
dbc
;

1492 
DBT
 *
nv
;

1493 
u_t32_t
 
ags
;

1495 
DB
 *
dbp
;

1496 
DB_ENV
 *
dbv
;

1497 
HASH_CURSOR
 *
h
;

1498 
DBT
 *
myv
, 
tmp_v
, 
tmp_v2
;

1499 *
wc
;

1500 
u_t8_t
 *
hk
, *
p
;

1501 
u_t32_t
 
n
, 
ndup_size
;

1502 
db_dx_t
 
wsize
;

1503 
t
;

1505 
dbp
 = 
dbc
->dbp;

1506 
dbv
 = 
dbp
->dbenv;

1507 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1508 i(
	`F_ISSET
(
h
, 
H_ISDUP
)) {

1513 
	`DB_ASSERT
(
dbv
, 
h
->
d
 =
NULL
);

1515 i(
	`F_ISSET
(
nv
, 
DB_DBT_PARTIAL
)) {

1521 
	`memt
(&
tmp_v
, 0, (tmp_val));

1522 i((
t
 =

1523 
	`__ham_dup_tu
(
dbc
, &
tmp_v
, 
DB_CURRENT
)) != 0)

1524  (
t
);

1527 
ndup_size
 = 
tmp_v
.
size
;

1528 
wsize
 = 
ndup_size
;

1537 i(
nv
->
doff
 > 
ndup_size
)

1538 
wsize
 +=

1539 ((
nv
->
doff
 - 
ndup_size
+v->
size
);

1540 i(
nv
->
doff
 +v->
dn
 > 
ndup_size
)

1541 
wsize
 +
nv
->
size
 -

1542 (
ndup_size
 - 
nv
->
doff
);

1544 
wsize
 +
nv
->
size
 -v->
dn
;

1551 i(
	`ISBIG
(
h
,

1552 (
h
->
dup_
 - 
ndup_size
+ 
wsize
)) {

1553 i((
t
 = 
	`__ham_dup_cvt
(
dbc
)) != 0)

1554  (
t
);

1555  (
h
->
d
->
	`am_put
(hcp->opd,

1556 
NULL
, 
nv
, 
ags
, NULL));

1559 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
,

1560 
	`DUP_SIZE
(
wsize
), &
wc
)) != 0)

1561  (
t
);

1562 
	`memt
(&
tmp_v2
, 0, (tmp_val2));

1563 
	`F_SET
(&
tmp_v2
, 
DB_DBT_PARTIAL
);

1566 
p
 = 
wc
;

1568 
	`memy
(
p
, &
wsize
, (
db_dx_t
));

1569 
p
 +(
db_dx_t
);

1572 
n
 = 
nv
->
doff
 > 
tmp_v
.
size


1573 ? 
tmp_v
.
size
 : 
nv
->
doff
;

1574 
	`memy
(
p
, 
tmp_v
.
da
, 
n
);

1575 
p
 +
n
;

1577 i(
nv
->
doff
 > 
tmp_v
.
size
) {

1579 
	`memt
(
p
, 0, 
nv
->
doff
 - 
tmp_v
.
size
);

1580 
p
 +
nv
->
doff
 - 
tmp_v
.
size
;

1584 
	`memy
(
p
, 
nv
->
da
,v->
size
);

1585 
p
 +
nv
->
size
;

1588 i(
nv
->
doff
 +v->
dn
 < 
tmp_v
.
size
) {

1589 
n
 = (
tmp_v
.
size
 - 
nv
->
doff
-v->
dn
;

1590 
	`memy
(
p
, (
u_t8_t
 *)
tmp_v
.
da
 +

1591 
nv
->
doff
 +v->
dn
, 
n
);

1592 
p
 +
n
;

1596 
	`memy
(
p
, &
wsize
, (
db_dx_t
));

1602 i(
dbp
->
dup_com
 !
NULL
) {

1603 
tmp_v2
.
da
 =

1604 (
u_t8_t
 *)
wc
 + (
db_dx_t
);

1605 
tmp_v2
.
size
 = 
wsize
;

1606 i(
dbp
->
	`dup_com
(

1607 
dbp
, &
tmp_v
, &
tmp_v2
) != 0) {

1608 
	`__os_
(
dbv
, 
wc
);

1609  (
	`__db_du
(
dbp
, 
ags
));

1613 
tmp_v2
.
da
 = 
wc
;

1614 
tmp_v2
.
size
 = 
	`DUP_SIZE
(
wsize
);

1615 
tmp_v2
.
doff
 = 
h
->
dup_off
;

1616 
tmp_v2
.
dn
 = 
	`DUP_SIZE
(
h
->
dup_n
);

1618 
t
 = 
	`__ham_
(
dbc
, &
tmp_v2
, 0);

1619 
	`__os_
(
dbv
, 
wc
);

1622 i(
t
 != 0)

1623  (
t
);

1625 i(
wsize
 > 
ndup_size
) {

1626 i((
t
 = 
	`__hamc_upde
(
dbc
,

1627 (
wsize
 - 
ndup_size
),

1628 
DB_HAM_CURADJ_ADDMOD
, 1)) != 0)

1629  (
t
);

1630 
h
->
dup_
 +(
wsize
 - 
ndup_size
);

1632 i((
t
 = 
	`__hamc_upde
(
dbc
,

1633 (
ndup_size
 - 
wsize
),

1634 
DB_HAM_CURADJ_DELMOD
, 1)) != 0)

1635  (
t
);

1636 
h
->
dup_
 -(
ndup_size
 - 
wsize
);

1638 
h
->
dup_n
 = 
wsize
;

1642 i(
	`ISBIG
(
h
,

1643 (
h
->
dup_
 - h->
dup_n
+ 
nv
->
size
)) {

1644 i((
t
 = 
	`__ham_dup_cvt
(
dbc
)) != 0)

1645  (
t
);

1646  (
h
->
d
->
	`am_put
(hcp->opd,

1647 
NULL
, 
nv
, 
ags
, NULL));

1651 i(
dbp
->
dup_com
 !
NULL
) {

1652 
tmp_v2
.
da
 =

1653 
	`HKEYDATA_DATA
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
,

1654 
h
->
dx
)+ h->
dup_off
 +

1655 (
db_dx_t
);

1656 
tmp_v2
.
size
 = 
h
->
dup_n
;

1657 i(
dbp
->
	`dup_com
(

1658 
dbp
, 
nv
, &
tmp_v2
) != 0) {

1659 
	`__db_rx
(
dbv
,

1661  (
EINVAL
);

1665 i((
t
 =

1666 
	`__ham_make_dup
(
dbp
->
dbv
, 
nv
, &
tmp_v
,

1667 &
dbc
->
my_rda
.
da
, &dbc->my_rda.
un
)) != 0)

1668  (
t
);

1670 
tmp_v
.
doff
 = 
h
->
dup_off
;

1671 
tmp_v
.
dn
 = 
	`DUP_SIZE
(
h
->
dup_n
);

1674 i(
nv
->
size
 > 
h
->
dup_n
) {

1675 i((
t
 = 
	`__hamc_upde
(
dbc
,

1676 (
nv
->
size
 - 
h
->
dup_n
),

1677 
DB_HAM_CURADJ_ADDMOD
, 1)) != 0)

1678  (
t
);

1679 
h
->
dup_
 +(
nv
->
size
 - h->
dup_n
);

1681 i((
t
 = 
	`__hamc_upde
(
dbc
,

1682 (
h
->
dup_n
 - 
nv
->
size
),

1683 
DB_HAM_CURADJ_DELMOD
, 1)) != 0)

1684  (
t
);

1685 
h
->
dup_
 -(h->
dup_n
 - 
nv
->
size
);

1687 
h
->
dup_n
 = (
db_dx_t
)
nv
->
size
;

1689 
myv
 = &
tmp_v
;

1690 } i(!
	`F_ISSET
(
nv
, 
DB_DBT_PARTIAL
)) {

1692 
	`memy
(&
tmp_v
, 
nv
, (*nval));

1693 
	`F_SET
(&
tmp_v
, 
DB_DBT_PARTIAL
);

1694 
tmp_v
.
doff
 = 0;

1695 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
);

1696 i(
	`HPAGE_PTYPE
(
hk
=
H_OFFPAGE
)

1697 
	`memy
(&
tmp_v
.
dn
,

1698 
	`HOFFPAGE_TLEN
(
hk
), (
u_t32_t
));

1700 
tmp_v
.
dn
 = 
	`LEN_HDATA
(
dbp
, 
h
->
ge
,

1701 
h
->
hdr
->
dbma
.
gesize
, h->
dx
);

1702 
myv
 = &
tmp_v
;

1705 
myv
 = 
nv
;

1707  (
	`__ham_
(
dbc
, 
myv
, 0));

1708 
	}
}

1720 
	$__ham_lookup
(
dbc
, 
key
, 
sought
, 
mode
, 
pgn
)

1721 
DBC
 *
dbc
;

1722 cڡ 
DBT
 *
key
;

1723 
u_t32_t
 
sought
;

1724 
db_lockmode_t
 
mode
;

1725 
db_pgno_t
 *
pgn
;

1727 
DB
 *
dbp
;

1728 
HASH_CURSOR
 *
h
;

1729 
db_pgno_t
 
xt_pgno
;

1730 
mch
, 
t
;

1731 
u_t8_t
 *
dk
;

1733 
dbp
 = 
dbc
->dbp;

1734 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1740 i((
t
 = 
	`__ham_em_t
(
dbc
)) != 0)

1741  (
t
);

1742 
h
->
ek_size
 = 
sought
;

1744 
h
->
buck
 = 
	`__ham__hash
(
dbc
, (
u_t8_t
 *)
key
->
da
, key->
size
);

1745 
h
->
pgno
 = 
	`BUCKET_TO_PAGE
(h, h->
buck
);

1747 i((
t
 = 
	`__ham_g_age
(
dbc
, 
mode
)) != 0)

1748  (
t
);

1750 *
pgn
 = 
PGNO_INVALID
;

1751 i(
h
->
dx
 =
NDX_INVALID
) {

1752 
h
->
dx
 = 0;

1753 
	`F_CLR
(
h
, 
H_ISDUP
);

1755 
h
->
pgno
 !
PGNO_INVALID
) {

1757 i(
h
->
ek_size
 != 0 &&

1758 
h
->
ek_found_ge
 =
PGNO_INVALID
 &&

1759 
h
->
ek_size
 < 
	`P_FREESPACE
(
dbp
, h->
ge
)) {

1760 
h
->
ek_found_ge
 = h->
pgno
;

1761 
h
->
ek_found_dx
 = 
NDX_INVALID
;

1764 i((
t
 = 
	`__ham_gdex
(
dbp
, 
dbc
->
txn
, 
h
->
ge
, 
key
,

1765 
H_KEYDATA
, &
mch
, &
h
->
dx
)) != 0)

1766  (
t
);

1773 i(
h
->
ek_found_ge
 =h->
pgno
)

1774 
h
->
ek_found_dx
 = h->
dx
;

1776 i(
mch
 == 0) {

1777 
	`F_SET
(
h
, 
H_OK
);

1778 
dk
 = 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
);

1779 i(
	`HPAGE_PTYPE
(
dk
=
H_OFFDUP
)

1780 
	`memy
(
pgn
, 
	`HOFFDUP_PGNO
(
dk
),

1781 (
db_pgno_t
));

1786 i(
	`NEXT_PGNO
(
h
->
ge
=
PGNO_INVALID
)

1788 
xt_pgno
 = 
	`NEXT_PGNO
(
h
->
ge
);

1789 
h
->
dx
 = 0;

1790 i((
t
 = 
	`__ham_xt_age
(
dbc
, 
xt_pgno
)) != 0)

1791  (
t
);

1793 
	`F_SET
(
h
, 
H_NOMORE
);

1794  (
DB_NOTFOUND
);

1795 
	}
}

1806 
	$__ham__dbt
(
dbv
, 
dbt
, 
size
, 
bu
, 
siz
)

1807 
DB_ENV
 *
dbv
;

1808 
DBT
 *
dbt
;

1809 
u_t32_t
 
size
;

1810 **
bu
;

1811 
u_t32_t
 *
siz
;

1813 
t
;

1815 
	`memt
(
dbt
, 0, (*dbt));

1816 i(*
siz
 < 
size
) {

1817 i((
t
 = 
	`__os_loc
(
dbv
, 
size
, 
bu
)) != 0) {

1818 *
siz
 = 0;

1819  (
t
);

1821 *
siz
 = 
size
;

1823 
dbt
->
da
 = *
bu
;

1824 
dbt
->
size
 = size;

1826 
	}
}

1842 
	$__hamc_upde
(
dbc
, 
n
, 
ݔi
, 
is_dup
)

1843 
DBC
 *
dbc
;

1844 
u_t32_t
 
n
;

1845 
db_ham_cudj
 
ݔi
;

1846 
is_dup
;

1848 
DB
 *
dbp
, *
ldbp
;

1849 
DBC
 *

;

1850 
DB_ENV
 *
dbv
;

1851 
DB_LSN
 
l
;

1852 
DB_TXN
 *
my_txn
;

1853 
HASH_CURSOR
 *
h
, *
l
;

1854 
found
, 
t
, 
was_mod
, 
was_add
;

1855 
u_t32_t
 
d
;

1857 
dbp
 = 
dbc
->dbp;

1858 
dbv
 = 
dbp
->dbenv;

1859 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1867 
my_txn
 = 
	`IS_SUBTRANSACTION
(
dbc
->
txn
? dbc->tx: 
NULL
;

1868 
found
 = 0;

1870 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

1872 
ݔi
) {

1873 
DB_HAM_CURADJ_DEL
:

1874 
was_mod
 = 0;

1875 
was_add
 = 0;

1877 
DB_HAM_CURADJ_ADD
:

1878 
was_mod
 = 0;

1879 
was_add
 = 1;

1881 
DB_HAM_CURADJ_DELMOD
:

1882 
was_mod
 = 1;

1883 
was_add
 = 0;

1885 
DB_HAM_CURADJ_ADDMOD
:

1886 
was_mod
 = 1;

1887 
was_add
 = 1;

1890 
	`DB_ASSERT
(
dbv
, "Invalidrgo hamc_update");

1891  (
EINVAL
);

1899 
d
 = 0;

1900 i(
was_add
 == 0) {

1901 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

1902 
d
 = 1;

1903 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

1904 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

1905 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

1906 
	`TAILQ_FOREACH
(

, &
ldbp
->
aive_queue
, 
lks
) {

1907 i(

 =
dbc
 || cp->
dbty
 !
DB_HASH
)

1909 
l
 = (
HASH_CURSOR
 *)

->

;

1910 i(
	`F_ISSET
(
l
, 
H_DELETED
) &&

1911 
h
->
pgno
 =
l
->pgno &&

1912 
h
->
dx
 =
l
->indx &&

1913 
d
 <
l
->order &&

1914 (!
is_dup
 || 
h
->
dup_off
 =
l
->dup_off) &&

1915 !
	`MVCC_SKIP_CURADJ
(

, 
l
->
pgno
))

1916 
d
 = 
l
->order + 1;

1918 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

1920 
h
->
d
 = order;

1923 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

1925 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

1926 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

1927 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

1928 
	`TAILQ_FOREACH
(

, &
ldbp
->
aive_queue
, 
lks
) {

1929 i(

 =
dbc
 || cp->
dbty
 !
DB_HASH
)

1932 
l
 = (
HASH_CURSOR
 *)

->

;

1934 i(
l
->
pgno
 !
h
->pgno ||

1935 
l
->
dx
 =
NDX_INVALID
 ||

1936 
	`MVCC_SKIP_CURADJ
(

, 
l
->
pgno
))

1939 i(
my_txn
 !
NULL
 && 

->
txn
 != my_txn)

1940 
found
 = 1;

1942 i(!
is_dup
) {

1943 i(
was_add
 == 1) {

1953 i(
l
->
dx
 =
h
->indx &&

1954 
	`F_ISSET
(
l
, 
H_DELETED
)) {

1955 i(
l
->
d
 =
h
->order)

1956 
	`F_CLR
(
l
, 
H_DELETED
);

1957 i(
l
->
d
 >

1958 
h
->
d
) {

1969 
l
->
d
 -=

1970 
h
->
d
;

1971 
l
->
dx
 += 2;

1973 } i(
l
->
dx
 >
h
->indx)

1974 
l
->
dx
 += 2;

1976 i(
l
->
dx
 > 
h
->indx) {

1977 
l
->
dx
 -= 2;

1978 i(
l
->
dx
 =
h
->indx &&

1979 
	`F_ISSET
(
l
, 
H_DELETED
))

1980 
l
->
d
 += order;

1981 } i(
l
->
dx
 =
h
->indx &&

1982 !
	`F_ISSET
(
l
, 
H_DELETED
)) {

1983 
	`F_SET
(
l
, 
H_DELETED
);

1984 
	`F_CLR
(
l
, 
H_ISDUP
);

1985 
l
->
d
 = order;

1988 } i(
l
->
dx
 =
h
->indx) {

1994 i(
was_add
 == 1) {

1995 
l
->
dup_
 +
n
;

1996 i(
l
->
dup_off
 =
h
->dup_off &&

1997 
	`F_ISSET
(
h
, 
H_DELETED
) &&

1998 
	`F_ISSET
(
l
, 
H_DELETED
)) {

2000 i(
l
->
d
 =
h
->order)

2001 
	`F_CLR
(
l
, 
H_DELETED
);

2002 i(
l
->
d
 >

2003 
h
->
d
) {

2004 
l
->
d
 -=

2005 (
h
->
d
 -1);

2006 
l
->
dup_off
 +
n
;

2008 } i(
l
->
dup_off
 >

2009 
h
->
dup_off
 || (!
was_mod
 &&

2010 
l
->
dup_off
 =
h
->dup_off))

2011 
l
->
dup_off
 +
n
;

2013 
l
->
dup_
 -
n
;

2014 i(
l
->
dup_off
 > 
h
->dup_off) {

2015 
l
->
dup_off
 -
n
;

2016 i(
l
->
dup_off
 ==

2017 
h
->
dup_off
 &&

2018 
	`F_ISSET
(
l
, 
H_DELETED
))

2019 
l
->
d
 += order;

2020 } i(!
was_mod
 &&

2021 
l
->
dup_off
 =
h
->dup_off &&

2022 !
	`F_ISSET
(
l
, 
H_DELETED
)) {

2023 
	`F_SET
(
l
, 
H_DELETED
);

2024 
l
->
d
 = order;

2029 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

2031 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

2033 i(
found
 !0 && 
	`DBC_LOGGING
(
dbc
)) {

2034 i((
t
 = 
	`__ham_cudj_log
(
dbp
, 
my_txn
, &
l
, 0, 
h
->
pgno
,

2035 
h
->
dx
, 
n
, h->
dup_off
, ()
ݔi
, 
is_dup
,

2036 
d
)) != 0)

2037  (
t
);

2041 
	}
}

2054 
	$__ham_g_i
(
dbp
, 
pgno
, 
dx
, 
lip
)

2055 
DB
 *
dbp
;

2056 
db_pgno_t
 
pgno
;

2057 
u_t32_t
 
dx
;

2058 
DBC
 ***
lip
;

2060 
DB
 *
ldbp
;

2061 
DBC
 *

;

2062 
DB_ENV
 *
dbv
;

2063 
u_t
 
oc
, 
nud
;

2064 
t
;

2066 *
lip
 = 
NULL
;

2067 
dbv
 = 
dbp
->dbenv;

2068 
oc
 = 
nud
 = 0;

2074 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

2075 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

2077 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

2078 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

2079 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

2080 
	`TAILQ_FOREACH
(

, &
ldbp
->
aive_queue
, 
lks
)

2086 i(

->

->
pgno
 ==gno &&

2087 (
dx
 =
NDX_INVALID
 ||

2088 

->

->
dx
 == indx) &&

2089 !
	`MVCC_SKIP_CURADJ
(

, 
pgno
)) {

2090 i(
nud
 >
oc
) {

2091 
oc
 += 10;

2092 i((
t
 = 
	`__os_loc
(
dbp
->
dbv
,

2093 
oc
 * (
HASH_CURSOR
 *),

2094 
lip
)) != 0)

2095 
r
;

2097 (*
lip
)[
nud
++] = 

;

2100 
	`MUTEX_UNLOCK
(
dbp
->
dbv
, dbp->
mux
);

2102 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

2104 i(
lip
 !
NULL
) {

2105 i(
nud
 >
oc
) {

2106 
oc
++;

2107 i((
t
 = 
	`__os_loc
(
dbp
->
dbv
,

2108 
oc
 * (
HASH_CURSOR
 *), 
lip
)) != 0)

2109  (
t
);

2111 (*
lip
)[
nud
] = 
NULL
;

2114 
r
:

2115 
	`MUTEX_UNLOCK
(
dbp
->
dbv
, dbp->
mux
);

2116 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

2117  (
t
);

2118 
	}
}

2121 
	$__hamc_wrock
(
dbc
)

2122 
DBC
 *
dbc
;

2124 
DB_LOCK
 
tmp_lock
;

2125 
HASH_CURSOR
 *
h
;

2126 
t
;

2132 i(!
	`STD_LOCKING
(
dbc
))

2135 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

2136 
t
 = 0;

2137 i((!
	`LOCK_ISSET
(
h
->
lock
|| h->
lock_mode
 !
DB_LOCK_WRITE
)) {

2138 
tmp_lock
 = 
h
->
lock
;

2139 i((
t
 = 
	`__ham_lock_buck
(
dbc
, 
DB_LOCK_WRITE
)) == 0 &&

2140 
tmp_lock
.
mode
 !
DB_LOCK_WWRITE
)

2141 
t
 = 
	`__LPUT
(
dbc
, 
tmp_lock
);

2143  (
t
);

2144 
	}
}

	@../hash/hash_auto.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/hash.h
"

11 
	~"dbc/log.h
"

12 
	~"dbc/txn.h
"

20 
	$__ham_sd_log
(
dbp
, 
tx
, 
t_lp
, 
ags
,

21 
code
, 
pgno
, 
ndx
, 
g
, 
key
,

22 
da
)

23 
DB
 *
dbp
;

24 
DB_TXN
 *
tx
;

25 
DB_LSN
 *
t_lp
;

26 
u_t32_t
 
ags
;

27 
u_t32_t
 
code
;

28 
db_pgno_t
 
pgno
;

29 
u_t32_t
 
ndx
;

30 
DB_LSN
 * 
g
;

31 cڡ 
DBT
 *
key
;

32 cڡ 
DBT
 *
da
;

34 
DBT
 
logc
;

35 
DB_ENV
 *
dbv
;

36 
DB_TXNLOGREC
 *

;

37 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

38 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

39 
u_t
 
ad
;

40 
u_t8_t
 *
bp
;

41 
is_dub
, 
t
;

43 
dbv
 = 
dbp
->dbenv;

44 
	`COMPQUIET
(

, 
NULL
);

46 
y
 = 
DB___ham_sd
;

47 
ad
 = 0;

48 
p
 = 
t_lp
;

50 
t
 = 0;

52 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

53 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

54 i(
tx
 =
NULL
)

56 
is_dub
 = 0;

58 
is_dub
 = 1;

60 i(
tx
 =
NULL
) {

61 
txn_num
 = 0;

62 
lp
 = &
nu_l
;

63 
nu_l
.
fe
 =u_l.
offt
 = 0;

65 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

66 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

67  (
t
);

74 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

75 
txn_num
 = 
tx
->
txnid
;

78 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

79 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

80 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

81  (
t
);

83 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

84 + (
u_t32_t
)

85 + (
u_t32_t
)

86 + (
u_t32_t
)

87 + (
u_t32_t
)

88 + (*
g
)

89 + (
u_t32_t
+ (
key
 =
NULL
 ? 0 : key->
size
)

90 + (
u_t32_t
+ (
da
 =
NULL
 ? 0 : da->
size
);

91 i(
	`CRYPTO_ON
(
dbv
)) {

92 
ad
 =

93 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

94 
logc
.
size
 +
ad
;

97 i(
is_dub
 || 
tx
 =
NULL
) {

98 i((
t
 =

99 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

100  (
t
);

102 i((
t
 = 
	`__os_mloc
(
dbv
,

103 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

104  (
t
);

105 #ifde
DIAGNOSTIC


106 i((
t
 =

107 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

108 
	`__os_
(
dbv
, 

);

109  (
t
);

112 
logc
.
da
 = 

->data;

115 i(
ad
 > 0)

116 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

118 
bp
 = 
logc
.
da
;

120 
	`memy
(
bp
, &
y
, (rectype));

121 
bp
 +(
y
);

123 
	`memy
(
bp
, &
txn_num
, (txn_num));

124 
bp
 +(
txn_num
);

126 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

127 
bp
 +(
DB_LSN
);

129 
ump
 = (
u_t32_t
)
code
;

130 
	`memy
(
bp
, &
ump
, (uinttmp));

131 
bp
 +(
ump
);

133 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

134 
	`memy
(
bp
, &
ump
, (uinttmp));

135 
bp
 +(
ump
);

137 
ump
 = (
u_t32_t
)
pgno
;

138 
	`memy
(
bp
, &
ump
, (uinttmp));

139 
bp
 +(
ump
);

141 
ump
 = (
u_t32_t
)
ndx
;

142 
	`memy
(
bp
, &
ump
, (uinttmp));

143 
bp
 +(
ump
);

145 i(
g
 !
NULL
) {

146 i(
tx
 !
NULL
) {

147 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

148 i(
	`LOG_COMPARE
(
g
, &

->
l
>0 && (
t
 =

149 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
g
) != 0))

150  (
t
);

152 
	`memy
(
bp
, 
g
, (*pagelsn));

154 
	`memt
(
bp
, 0, (*
g
));

155 
bp
 +(*
g
);

157 i(
key
 =
NULL
) {

158 
zo
 = 0;

159 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

160 
bp
 +(
u_t32_t
);

162 
	`memy
(
bp
, &
key
->
size
, (key->size));

163 
bp
 +(
key
->
size
);

164 
	`memy
(
bp
, 
key
->
da
, key->
size
);

165 
bp
 +
key
->
size
;

168 i(
da
 =
NULL
) {

169 
zo
 = 0;

170 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

171 
bp
 +(
u_t32_t
);

173 
	`memy
(
bp
, &
da
->
size
, (data->size));

174 
bp
 +(
da
->
size
);

175 
	`memy
(
bp
, 
da
->da, da->
size
);

176 
bp
 +
da
->
size
;

179 
	`DB_ASSERT
(
dbv
,

180 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

182 i(
is_dub
 || 
tx
 =
NULL
) {

183 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

184 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

185 *
lp
 = *
p
;

186 i(
p
 !
t_lp
)

187 *
t_lp
 = *
p
;

190 
t
 = 0;

191 #ifde
DIAGNOSTIC


196 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

197 
y
 |
DB_debug_FLAG
;

198 
	`memy
(
logc
.
da
, &
y
, (rectype));

200 i(!
	`IS_REP_CLIENT
(
dbv
))

201 
t
 = 
	`__log_put
(
dbv
,

202 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

204 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

205 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

206 
	`LSN_NOT_LOGGED
(*
t_lp
);

209 #ifde
LOG_DIAGNOSTIC


210 i(
t
 != 0)

211 ()
	`__ham_sd_t
(
dbv
,

212 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

215 #ifde
DIAGNOSTIC


216 
	`__os_
(
dbv
, 
logc
.
da
);

218 i(
is_dub
 || 
tx
 =
NULL
)

219 
	`__os_
(
dbv
, 
logc
.
da
);

221  (
t
);

222 
	}
}

228 
	$__ham_sd_ad
(
dbv
, 
cbuf
, 
g
)

229 
DB_ENV
 *
dbv
;

230 *
cbuf
;

231 
__ham_sd_gs
 **
g
;

233 
__ham_sd_gs
 *
gp
;

234 
u_t32_t
 
ump
;

235 
u_t8_t
 *
bp
;

236 
t
;

238 i((
t
 = 
	`__os_mloc
(
dbv
,

239 (
__ham_sd_gs
+ (
DB_TXN
), &
gp
)) != 0)

240  (
t
);

241 
bp
 = 
cbuf
;

242 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

243 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

245 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

246 
bp
 +(
gp
->
ty
);

248 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

249 
bp
 +(
gp
->
tx
->
txnid
);

251 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

252 
bp
 +(
DB_LSN
);

254 
	`memy
(&
ump
, 
bp
, (uinttmp));

255 
gp
->
code
 = (
u_t32_t
)
ump
;

256 
bp
 +(
ump
);

258 
	`memy
(&
ump
, 
bp
, (uinttmp));

259 
gp
->
feid
 = (
t32_t
)
ump
;

260 
bp
 +(
ump
);

262 
	`memy
(&
ump
, 
bp
, (uinttmp));

263 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

264 
bp
 +(
ump
);

266 
	`memy
(&
ump
, 
bp
, (uinttmp));

267 
gp
->
ndx
 = (
u_t32_t
)
ump
;

268 
bp
 +(
ump
);

270 
	`memy
(&
gp
->
g
, 
bp
, (argp->pagelsn));

271 
bp
 +(
gp
->
g
);

273 
	`memt
(&
gp
->
key
, 0, (argp->key));

274 
	`memy
(&
gp
->
key
.
size
, 
bp
, (
u_t32_t
));

275 
bp
 +(
u_t32_t
);

276 
gp
->
key
.
da
 = 
bp
;

277 
bp
 +
gp
->
key
.
size
;

279 
	`memt
(&
gp
->
da
, 0, (argp->data));

280 
	`memy
(&
gp
->
da
.
size
, 
bp
, (
u_t32_t
));

281 
bp
 +(
u_t32_t
);

282 
gp
->
da
.d
bp
;

283 
bp
 +
gp
->
da
.
size
;

285 *
g
 = 
gp
;

287 
	}
}

295 
	$__ham_wge_log
(
dbp
, 
tx
, 
t_lp
, 
ags
,

296 
code
, 
ev_pgno
, 
evl
, 
w_pgno
, 
g
,

297 
xt_pgno
, 
x
)

298 
DB
 *
dbp
;

299 
DB_TXN
 *
tx
;

300 
DB_LSN
 *
t_lp
;

301 
u_t32_t
 
ags
;

302 
u_t32_t
 
code
;

303 
db_pgno_t
 
ev_pgno
;

304 
DB_LSN
 * 
evl
;

305 
db_pgno_t
 
w_pgno
;

306 
DB_LSN
 * 
g
;

307 
db_pgno_t
 
xt_pgno
;

308 
DB_LSN
 * 
x
;

310 
DBT
 
logc
;

311 
DB_ENV
 *
dbv
;

312 
DB_TXNLOGREC
 *

;

313 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

314 
u_t32_t
 
ump
, 
y
, 
txn_num
;

315 
u_t
 
ad
;

316 
u_t8_t
 *
bp
;

317 
is_dub
, 
t
;

319 
dbv
 = 
dbp
->dbenv;

320 
	`COMPQUIET
(

, 
NULL
);

322 
y
 = 
DB___ham_wge
;

323 
ad
 = 0;

324 
p
 = 
t_lp
;

326 
t
 = 0;

328 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

329 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

330 i(
tx
 =
NULL
)

332 
is_dub
 = 0;

334 
is_dub
 = 1;

336 i(
tx
 =
NULL
) {

337 
txn_num
 = 0;

338 
lp
 = &
nu_l
;

339 
nu_l
.
fe
 =u_l.
offt
 = 0;

341 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

342 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

343  (
t
);

350 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

351 
txn_num
 = 
tx
->
txnid
;

354 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

355 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

356 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

357  (
t
);

359 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

360 + (
u_t32_t
)

361 + (
u_t32_t
)

362 + (
u_t32_t
)

363 + (*
evl
)

364 + (
u_t32_t
)

365 + (*
g
)

366 + (
u_t32_t
)

367 + (*
x
);

368 i(
	`CRYPTO_ON
(
dbv
)) {

369 
ad
 =

370 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

371 
logc
.
size
 +
ad
;

374 i(
is_dub
 || 
tx
 =
NULL
) {

375 i((
t
 =

376 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

377  (
t
);

379 i((
t
 = 
	`__os_mloc
(
dbv
,

380 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

381  (
t
);

382 #ifde
DIAGNOSTIC


383 i((
t
 =

384 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

385 
	`__os_
(
dbv
, 

);

386  (
t
);

389 
logc
.
da
 = 

->data;

392 i(
ad
 > 0)

393 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

395 
bp
 = 
logc
.
da
;

397 
	`memy
(
bp
, &
y
, (rectype));

398 
bp
 +(
y
);

400 
	`memy
(
bp
, &
txn_num
, (txn_num));

401 
bp
 +(
txn_num
);

403 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

404 
bp
 +(
DB_LSN
);

406 
ump
 = (
u_t32_t
)
code
;

407 
	`memy
(
bp
, &
ump
, (uinttmp));

408 
bp
 +(
ump
);

410 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

411 
	`memy
(
bp
, &
ump
, (uinttmp));

412 
bp
 +(
ump
);

414 
ump
 = (
u_t32_t
)
ev_pgno
;

415 
	`memy
(
bp
, &
ump
, (uinttmp));

416 
bp
 +(
ump
);

418 i(
evl
 !
NULL
) {

419 i(
tx
 !
NULL
) {

420 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

421 i(
	`LOG_COMPARE
(
evl
, &

->
l
>0 && (
t
 =

422 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
evl
) != 0))

423  (
t
);

425 
	`memy
(
bp
, 
evl
, (*prevlsn));

427 
	`memt
(
bp
, 0, (*
evl
));

428 
bp
 +(*
evl
);

430 
ump
 = (
u_t32_t
)
w_pgno
;

431 
	`memy
(
bp
, &
ump
, (uinttmp));

432 
bp
 +(
ump
);

434 i(
g
 !
NULL
) {

435 i(
tx
 !
NULL
) {

436 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

437 i(
	`LOG_COMPARE
(
g
, &

->
l
>0 && (
t
 =

438 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
g
) != 0))

439  (
t
);

441 
	`memy
(
bp
, 
g
, (*pagelsn));

443 
	`memt
(
bp
, 0, (*
g
));

444 
bp
 +(*
g
);

446 
ump
 = (
u_t32_t
)
xt_pgno
;

447 
	`memy
(
bp
, &
ump
, (uinttmp));

448 
bp
 +(
ump
);

450 i(
x
 !
NULL
) {

451 i(
tx
 !
NULL
) {

452 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

453 i(
	`LOG_COMPARE
(
x
, &

->
l
>0 && (
t
 =

454 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
x
) != 0))

455  (
t
);

457 
	`memy
(
bp
, 
x
, (*nextlsn));

459 
	`memt
(
bp
, 0, (*
x
));

460 
bp
 +(*
x
);

462 
	`DB_ASSERT
(
dbv
,

463 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

465 i(
is_dub
 || 
tx
 =
NULL
) {

466 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

467 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

468 *
lp
 = *
p
;

469 i(
p
 !
t_lp
)

470 *
t_lp
 = *
p
;

473 
t
 = 0;

474 #ifde
DIAGNOSTIC


479 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

480 
y
 |
DB_debug_FLAG
;

481 
	`memy
(
logc
.
da
, &
y
, (rectype));

483 i(!
	`IS_REP_CLIENT
(
dbv
))

484 
t
 = 
	`__log_put
(
dbv
,

485 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

487 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

488 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

489 
	`LSN_NOT_LOGGED
(*
t_lp
);

492 #ifde
LOG_DIAGNOSTIC


493 i(
t
 != 0)

494 ()
	`__ham_wge_t
(
dbv
,

495 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

498 #ifde
DIAGNOSTIC


499 
	`__os_
(
dbv
, 
logc
.
da
);

501 i(
is_dub
 || 
tx
 =
NULL
)

502 
	`__os_
(
dbv
, 
logc
.
da
);

504  (
t
);

505 
	}
}

512 
	$__ham_wge_ad
(
dbv
, 
cbuf
, 
g
)

513 
DB_ENV
 *
dbv
;

514 *
cbuf
;

515 
__ham_wge_gs
 **
g
;

517 
__ham_wge_gs
 *
gp
;

518 
u_t32_t
 
ump
;

519 
u_t8_t
 *
bp
;

520 
t
;

522 i((
t
 = 
	`__os_mloc
(
dbv
,

523 (
__ham_wge_gs
+ (
DB_TXN
), &
gp
)) != 0)

524  (
t
);

525 
bp
 = 
cbuf
;

526 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

527 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

529 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

530 
bp
 +(
gp
->
ty
);

532 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

533 
bp
 +(
gp
->
tx
->
txnid
);

535 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

536 
bp
 +(
DB_LSN
);

538 
	`memy
(&
ump
, 
bp
, (uinttmp));

539 
gp
->
code
 = (
u_t32_t
)
ump
;

540 
bp
 +(
ump
);

542 
	`memy
(&
ump
, 
bp
, (uinttmp));

543 
gp
->
feid
 = (
t32_t
)
ump
;

544 
bp
 +(
ump
);

546 
	`memy
(&
ump
, 
bp
, (uinttmp));

547 
gp
->
ev_pgno
 = (
db_pgno_t
)
ump
;

548 
bp
 +(
ump
);

550 
	`memy
(&
gp
->
evl
, 
bp
, (argp->prevlsn));

551 
bp
 +(
gp
->
evl
);

553 
	`memy
(&
ump
, 
bp
, (uinttmp));

554 
gp
->
w_pgno
 = (
db_pgno_t
)
ump
;

555 
bp
 +(
ump
);

557 
	`memy
(&
gp
->
g
, 
bp
, (argp->pagelsn));

558 
bp
 +(
gp
->
g
);

560 
	`memy
(&
ump
, 
bp
, (uinttmp));

561 
gp
->
xt_pgno
 = (
db_pgno_t
)
ump
;

562 
bp
 +(
ump
);

564 
	`memy
(&
gp
->
x
, 
bp
, (argp->nextlsn));

565 
bp
 +(
gp
->
x
);

567 *
g
 = 
gp
;

569 
	}
}

576 
	$__ham_lda_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
code
, 
pgno
, 
geimage
, 
g
)

577 
DB
 *
dbp
;

578 
DB_TXN
 *
tx
;

579 
DB_LSN
 *
t_lp
;

580 
u_t32_t
 
ags
;

581 
u_t32_t
 
code
;

582 
db_pgno_t
 
pgno
;

583 cڡ 
DBT
 *
geimage
;

584 
DB_LSN
 * 
g
;

586 
DBT
 
logc
;

587 
DB_ENV
 *
dbv
;

588 
DB_TXNLOGREC
 *

;

589 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

590 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

591 
u_t
 
ad
;

592 
u_t8_t
 *
bp
;

593 
is_dub
, 
t
;

595 
dbv
 = 
dbp
->dbenv;

596 
	`COMPQUIET
(

, 
NULL
);

598 
y
 = 
DB___ham_lda
;

599 
ad
 = 0;

600 
p
 = 
t_lp
;

602 
t
 = 0;

604 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

605 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

606 i(
tx
 =
NULL
)

608 
is_dub
 = 0;

610 
is_dub
 = 1;

612 i(
tx
 =
NULL
) {

613 
txn_num
 = 0;

614 
lp
 = &
nu_l
;

615 
nu_l
.
fe
 =u_l.
offt
 = 0;

617 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

618 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

619  (
t
);

626 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

627 
txn_num
 = 
tx
->
txnid
;

630 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

631 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

632 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

633  (
t
);

635 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

636 + (
u_t32_t
)

637 + (
u_t32_t
)

638 + (
u_t32_t
)

639 + (
u_t32_t
+ (
geimage
 =
NULL
 ? 0 :ageimage->
size
)

640 + (*
g
);

641 i(
	`CRYPTO_ON
(
dbv
)) {

642 
ad
 =

643 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

644 
logc
.
size
 +
ad
;

647 i(
is_dub
 || 
tx
 =
NULL
) {

648 i((
t
 =

649 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

650  (
t
);

652 i((
t
 = 
	`__os_mloc
(
dbv
,

653 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

654  (
t
);

655 #ifde
DIAGNOSTIC


656 i((
t
 =

657 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

658 
	`__os_
(
dbv
, 

);

659  (
t
);

662 
logc
.
da
 = 

->data;

665 i(
ad
 > 0)

666 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

668 
bp
 = 
logc
.
da
;

670 
	`memy
(
bp
, &
y
, (rectype));

671 
bp
 +(
y
);

673 
	`memy
(
bp
, &
txn_num
, (txn_num));

674 
bp
 +(
txn_num
);

676 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

677 
bp
 +(
DB_LSN
);

679 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

680 
	`memy
(
bp
, &
ump
, (uinttmp));

681 
bp
 +(
ump
);

683 
ump
 = (
u_t32_t
)
code
;

684 
	`memy
(
bp
, &
ump
, (uinttmp));

685 
bp
 +(
ump
);

687 
ump
 = (
u_t32_t
)
pgno
;

688 
	`memy
(
bp
, &
ump
, (uinttmp));

689 
bp
 +(
ump
);

691 i(
geimage
 =
NULL
) {

692 
zo
 = 0;

693 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

694 
bp
 +(
u_t32_t
);

696 
	`memy
(
bp
, &
geimage
->
size
, (pageimage->size));

697 
bp
 +(
geimage
->
size
);

698 
	`memy
(
bp
, 
geimage
->
da
,ageimage->
size
);

699 
bp
 +
geimage
->
size
;

702 i(
g
 !
NULL
) {

703 i(
tx
 !
NULL
) {

704 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

705 i(
	`LOG_COMPARE
(
g
, &

->
l
>0 && (
t
 =

706 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
g
) != 0))

707  (
t
);

709 
	`memy
(
bp
, 
g
, (*pagelsn));

711 
	`memt
(
bp
, 0, (*
g
));

712 
bp
 +(*
g
);

714 
	`DB_ASSERT
(
dbv
,

715 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

717 i(
is_dub
 || 
tx
 =
NULL
) {

718 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

719 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

720 *
lp
 = *
p
;

721 i(
p
 !
t_lp
)

722 *
t_lp
 = *
p
;

725 
t
 = 0;

726 #ifde
DIAGNOSTIC


731 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

732 
y
 |
DB_debug_FLAG
;

733 
	`memy
(
logc
.
da
, &
y
, (rectype));

735 i(!
	`IS_REP_CLIENT
(
dbv
))

736 
t
 = 
	`__log_put
(
dbv
,

737 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

739 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

740 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

741 
	`LSN_NOT_LOGGED
(*
t_lp
);

744 #ifde
LOG_DIAGNOSTIC


745 i(
t
 != 0)

746 ()
	`__ham_lda_t
(
dbv
,

747 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

750 #ifde
DIAGNOSTIC


751 
	`__os_
(
dbv
, 
logc
.
da
);

753 i(
is_dub
 || 
tx
 =
NULL
)

754 
	`__os_
(
dbv
, 
logc
.
da
);

756  (
t
);

757 
	}
}

764 
	$__ham_lda_ad
(
dbv
, 
cbuf
, 
g
)

765 
DB_ENV
 *
dbv
;

766 *
cbuf
;

767 
__ham_lda_gs
 **
g
;

769 
__ham_lda_gs
 *
gp
;

770 
u_t32_t
 
ump
;

771 
u_t8_t
 *
bp
;

772 
t
;

774 i((
t
 = 
	`__os_mloc
(
dbv
,

775 (
__ham_lda_gs
+ (
DB_TXN
), &
gp
)) != 0)

776  (
t
);

777 
bp
 = 
cbuf
;

778 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

779 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

781 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

782 
bp
 +(
gp
->
ty
);

784 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

785 
bp
 +(
gp
->
tx
->
txnid
);

787 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

788 
bp
 +(
DB_LSN
);

790 
	`memy
(&
ump
, 
bp
, (uinttmp));

791 
gp
->
feid
 = (
t32_t
)
ump
;

792 
bp
 +(
ump
);

794 
	`memy
(&
ump
, 
bp
, (uinttmp));

795 
gp
->
code
 = (
u_t32_t
)
ump
;

796 
bp
 +(
ump
);

798 
	`memy
(&
ump
, 
bp
, (uinttmp));

799 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

800 
bp
 +(
ump
);

802 
	`memt
(&
gp
->
geimage
, 0, (argp->pageimage));

803 
	`memy
(&
gp
->
geimage
.
size
, 
bp
, (
u_t32_t
));

804 
bp
 +(
u_t32_t
);

805 
gp
->
geimage
.
da
 = 
bp
;

806 
bp
 +
gp
->
geimage
.
size
;

808 
	`memy
(&
gp
->
g
, 
bp
, (argp->pagelsn));

809 
bp
 +(
gp
->
g
);

811 *
g
 = 
gp
;

813 
	}
}

821 
	$__ham_a_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
ndx
, 
g
, 
off
, 
dem
,

822 
wem
, 
makedup
)

823 
DB
 *
dbp
;

824 
DB_TXN
 *
tx
;

825 
DB_LSN
 *
t_lp
;

826 
u_t32_t
 
ags
;

827 
db_pgno_t
 
pgno
;

828 
u_t32_t
 
ndx
;

829 
DB_LSN
 * 
g
;

830 
t32_t
 
off
;

831 cڡ 
DBT
 *
dem
;

832 cڡ 
DBT
 *
wem
;

833 
u_t32_t
 
makedup
;

835 
DBT
 
logc
;

836 
DB_ENV
 *
dbv
;

837 
DB_TXNLOGREC
 *

;

838 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

839 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

840 
u_t
 
ad
;

841 
u_t8_t
 *
bp
;

842 
is_dub
, 
t
;

844 
dbv
 = 
dbp
->dbenv;

845 
	`COMPQUIET
(

, 
NULL
);

847 
y
 = 
DB___ham_a
;

848 
ad
 = 0;

849 
p
 = 
t_lp
;

851 
t
 = 0;

853 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

854 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

855 i(
tx
 =
NULL
)

857 
is_dub
 = 0;

859 
is_dub
 = 1;

861 i(
tx
 =
NULL
) {

862 
txn_num
 = 0;

863 
lp
 = &
nu_l
;

864 
nu_l
.
fe
 =u_l.
offt
 = 0;

866 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

867 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

868  (
t
);

875 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

876 
txn_num
 = 
tx
->
txnid
;

879 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

880 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

881 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

882  (
t
);

884 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

885 + (
u_t32_t
)

886 + (
u_t32_t
)

887 + (
u_t32_t
)

888 + (*
g
)

889 + (
u_t32_t
)

890 + (
u_t32_t
+ (
dem
 =
NULL
 ? 0 : oldem->
size
)

891 + (
u_t32_t
+ (
wem
 =
NULL
 ? 0 :ewem->
size
)

892 + (
u_t32_t
);

893 i(
	`CRYPTO_ON
(
dbv
)) {

894 
ad
 =

895 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

896 
logc
.
size
 +
ad
;

899 i(
is_dub
 || 
tx
 =
NULL
) {

900 i((
t
 =

901 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

902  (
t
);

904 i((
t
 = 
	`__os_mloc
(
dbv
,

905 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

906  (
t
);

907 #ifde
DIAGNOSTIC


908 i((
t
 =

909 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

910 
	`__os_
(
dbv
, 

);

911  (
t
);

914 
logc
.
da
 = 

->data;

917 i(
ad
 > 0)

918 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

920 
bp
 = 
logc
.
da
;

922 
	`memy
(
bp
, &
y
, (rectype));

923 
bp
 +(
y
);

925 
	`memy
(
bp
, &
txn_num
, (txn_num));

926 
bp
 +(
txn_num
);

928 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

929 
bp
 +(
DB_LSN
);

931 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

932 
	`memy
(
bp
, &
ump
, (uinttmp));

933 
bp
 +(
ump
);

935 
ump
 = (
u_t32_t
)
pgno
;

936 
	`memy
(
bp
, &
ump
, (uinttmp));

937 
bp
 +(
ump
);

939 
ump
 = (
u_t32_t
)
ndx
;

940 
	`memy
(
bp
, &
ump
, (uinttmp));

941 
bp
 +(
ump
);

943 i(
g
 !
NULL
) {

944 i(
tx
 !
NULL
) {

945 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

946 i(
	`LOG_COMPARE
(
g
, &

->
l
>0 && (
t
 =

947 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
g
) != 0))

948  (
t
);

950 
	`memy
(
bp
, 
g
, (*pagelsn));

952 
	`memt
(
bp
, 0, (*
g
));

953 
bp
 +(*
g
);

955 
ump
 = (
u_t32_t
)
off
;

956 
	`memy
(
bp
, &
ump
, (uinttmp));

957 
bp
 +(
ump
);

959 i(
dem
 =
NULL
) {

960 
zo
 = 0;

961 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

962 
bp
 +(
u_t32_t
);

964 
	`memy
(
bp
, &
dem
->
size
, (olditem->size));

965 
bp
 +(
dem
->
size
);

966 
	`memy
(
bp
, 
dem
->
da
, oldem->
size
);

967 
bp
 +
dem
->
size
;

970 i(
wem
 =
NULL
) {

971 
zo
 = 0;

972 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

973 
bp
 +(
u_t32_t
);

975 
	`memy
(
bp
, &
wem
->
size
, (newitem->size));

976 
bp
 +(
wem
->
size
);

977 
	`memy
(
bp
, 
wem
->
da
,ewem->
size
);

978 
bp
 +
wem
->
size
;

981 
ump
 = (
u_t32_t
)
makedup
;

982 
	`memy
(
bp
, &
ump
, (uinttmp));

983 
bp
 +(
ump
);

985 
	`DB_ASSERT
(
dbv
,

986 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

988 i(
is_dub
 || 
tx
 =
NULL
) {

989 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

990 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

991 *
lp
 = *
p
;

992 i(
p
 !
t_lp
)

993 *
t_lp
 = *
p
;

996 
t
 = 0;

997 #ifde
DIAGNOSTIC


1002 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1003 
y
 |
DB_debug_FLAG
;

1004 
	`memy
(
logc
.
da
, &
y
, (rectype));

1006 i(!
	`IS_REP_CLIENT
(
dbv
))

1007 
t
 = 
	`__log_put
(
dbv
,

1008 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1010 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1011 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1012 
	`LSN_NOT_LOGGED
(*
t_lp
);

1015 #ifde
LOG_DIAGNOSTIC


1016 i(
t
 != 0)

1017 ()
	`__ham_a_t
(
dbv
,

1018 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1021 #ifde
DIAGNOSTIC


1022 
	`__os_
(
dbv
, 
logc
.
da
);

1024 i(
is_dub
 || 
tx
 =
NULL
)

1025 
	`__os_
(
dbv
, 
logc
.
da
);

1027  (
t
);

1028 
	}
}

1035 
	$__ham_a_ad
(
dbv
, 
cbuf
, 
g
)

1036 
DB_ENV
 *
dbv
;

1037 *
cbuf
;

1038 
__ham_a_gs
 **
g
;

1040 
__ham_a_gs
 *
gp
;

1041 
u_t32_t
 
ump
;

1042 
u_t8_t
 *
bp
;

1043 
t
;

1045 i((
t
 = 
	`__os_mloc
(
dbv
,

1046 (
__ham_a_gs
+ (
DB_TXN
), &
gp
)) != 0)

1047  (
t
);

1048 
bp
 = 
cbuf
;

1049 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1050 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1052 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1053 
bp
 +(
gp
->
ty
);

1055 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1056 
bp
 +(
gp
->
tx
->
txnid
);

1058 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1059 
bp
 +(
DB_LSN
);

1061 
	`memy
(&
ump
, 
bp
, (uinttmp));

1062 
gp
->
feid
 = (
t32_t
)
ump
;

1063 
bp
 +(
ump
);

1065 
	`memy
(&
ump
, 
bp
, (uinttmp));

1066 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1067 
bp
 +(
ump
);

1069 
	`memy
(&
ump
, 
bp
, (uinttmp));

1070 
gp
->
ndx
 = (
u_t32_t
)
ump
;

1071 
bp
 +(
ump
);

1073 
	`memy
(&
gp
->
g
, 
bp
, (argp->pagelsn));

1074 
bp
 +(
gp
->
g
);

1076 
	`memy
(&
ump
, 
bp
, (uinttmp));

1077 
gp
->
off
 = (
t32_t
)
ump
;

1078 
bp
 +(
ump
);

1080 
	`memt
(&
gp
->
dem
, 0, (argp->olditem));

1081 
	`memy
(&
gp
->
dem
.
size
, 
bp
, (
u_t32_t
));

1082 
bp
 +(
u_t32_t
);

1083 
gp
->
dem
.
da
 = 
bp
;

1084 
bp
 +
gp
->
dem
.
size
;

1086 
	`memt
(&
gp
->
wem
, 0, (argp->newitem));

1087 
	`memy
(&
gp
->
wem
.
size
, 
bp
, (
u_t32_t
));

1088 
bp
 +(
u_t32_t
);

1089 
gp
->
wem
.
da
 = 
bp
;

1090 
bp
 +
gp
->
wem
.
size
;

1092 
	`memy
(&
ump
, 
bp
, (uinttmp));

1093 
gp
->
makedup
 = (
u_t32_t
)
ump
;

1094 
bp
 +(
ump
);

1096 *
g
 = 
gp
;

1098 
	}
}

1106 
	$__ham_cyge_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
g
, 
xt_pgno
, 
x
, 
ext_pgno
,

1107 
ex
, 
ge
)

1108 
DB
 *
dbp
;

1109 
DB_TXN
 *
tx
;

1110 
DB_LSN
 *
t_lp
;

1111 
u_t32_t
 
ags
;

1112 
db_pgno_t
 
pgno
;

1113 
DB_LSN
 * 
g
;

1114 
db_pgno_t
 
xt_pgno
;

1115 
DB_LSN
 * 
x
;

1116 
db_pgno_t
 
ext_pgno
;

1117 
DB_LSN
 * 
ex
;

1118 cڡ 
DBT
 *
ge
;

1120 
DBT
 
logc
;

1121 
DB_ENV
 *
dbv
;

1122 
DB_TXNLOGREC
 *

;

1123 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1124 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

1125 
u_t
 
ad
;

1126 
u_t8_t
 *
bp
;

1127 
is_dub
, 
t
;

1129 
dbv
 = 
dbp
->dbenv;

1130 
	`COMPQUIET
(

, 
NULL
);

1132 
y
 = 
DB___ham_cyge
;

1133 
ad
 = 0;

1134 
p
 = 
t_lp
;

1136 
t
 = 0;

1138 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1139 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1140 i(
tx
 =
NULL
)

1142 
is_dub
 = 0;

1144 
is_dub
 = 1;

1146 i(
tx
 =
NULL
) {

1147 
txn_num
 = 0;

1148 
lp
 = &
nu_l
;

1149 
nu_l
.
fe
 =u_l.
offt
 = 0;

1151 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1152 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1153  (
t
);

1160 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1161 
txn_num
 = 
tx
->
txnid
;

1164 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1165 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1166 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1167  (
t
);

1169 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1170 + (
u_t32_t
)

1171 + (
u_t32_t
)

1172 + (*
g
)

1173 + (
u_t32_t
)

1174 + (*
x
)

1175 + (
u_t32_t
)

1176 + (*
ex
)

1177 + (
u_t32_t
+ (
ge
 =
NULL
 ? 0 :age->
size
);

1178 i(
	`CRYPTO_ON
(
dbv
)) {

1179 
ad
 =

1180 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1181 
logc
.
size
 +
ad
;

1184 i(
is_dub
 || 
tx
 =
NULL
) {

1185 i((
t
 =

1186 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1187  (
t
);

1189 i((
t
 = 
	`__os_mloc
(
dbv
,

1190 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1191  (
t
);

1192 #ifde
DIAGNOSTIC


1193 i((
t
 =

1194 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1195 
	`__os_
(
dbv
, 

);

1196  (
t
);

1199 
logc
.
da
 = 

->data;

1202 i(
ad
 > 0)

1203 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1205 
bp
 = 
logc
.
da
;

1207 
	`memy
(
bp
, &
y
, (rectype));

1208 
bp
 +(
y
);

1210 
	`memy
(
bp
, &
txn_num
, (txn_num));

1211 
bp
 +(
txn_num
);

1213 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1214 
bp
 +(
DB_LSN
);

1216 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1217 
	`memy
(
bp
, &
ump
, (uinttmp));

1218 
bp
 +(
ump
);

1220 
ump
 = (
u_t32_t
)
pgno
;

1221 
	`memy
(
bp
, &
ump
, (uinttmp));

1222 
bp
 +(
ump
);

1224 i(
g
 !
NULL
) {

1225 i(
tx
 !
NULL
) {

1226 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1227 i(
	`LOG_COMPARE
(
g
, &

->
l
>0 && (
t
 =

1228 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
g
) != 0))

1229  (
t
);

1231 
	`memy
(
bp
, 
g
, (*pagelsn));

1233 
	`memt
(
bp
, 0, (*
g
));

1234 
bp
 +(*
g
);

1236 
ump
 = (
u_t32_t
)
xt_pgno
;

1237 
	`memy
(
bp
, &
ump
, (uinttmp));

1238 
bp
 +(
ump
);

1240 i(
x
 !
NULL
) {

1241 i(
tx
 !
NULL
) {

1242 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1243 i(
	`LOG_COMPARE
(
x
, &

->
l
>0 && (
t
 =

1244 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
x
) != 0))

1245  (
t
);

1247 
	`memy
(
bp
, 
x
, (*nextlsn));

1249 
	`memt
(
bp
, 0, (*
x
));

1250 
bp
 +(*
x
);

1252 
ump
 = (
u_t32_t
)
ext_pgno
;

1253 
	`memy
(
bp
, &
ump
, (uinttmp));

1254 
bp
 +(
ump
);

1256 i(
ex
 !
NULL
) {

1257 i(
tx
 !
NULL
) {

1258 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1259 i(
	`LOG_COMPARE
(
ex
, &

->
l
>0 && (
t
 =

1260 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ex
) != 0))

1261  (
t
);

1263 
	`memy
(
bp
, 
ex
, (*nnextlsn));

1265 
	`memt
(
bp
, 0, (*
ex
));

1266 
bp
 +(*
ex
);

1268 i(
ge
 =
NULL
) {

1269 
zo
 = 0;

1270 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1271 
bp
 +(
u_t32_t
);

1273 
	`memy
(
bp
, &
ge
->
size
, (page->size));

1274 
bp
 +(
ge
->
size
);

1275 
	`memy
(
bp
, 
ge
->
da
,age->
size
);

1276 
bp
 +
ge
->
size
;

1279 
	`DB_ASSERT
(
dbv
,

1280 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1282 i(
is_dub
 || 
tx
 =
NULL
) {

1283 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1284 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1285 *
lp
 = *
p
;

1286 i(
p
 !
t_lp
)

1287 *
t_lp
 = *
p
;

1290 
t
 = 0;

1291 #ifde
DIAGNOSTIC


1296 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1297 
y
 |
DB_debug_FLAG
;

1298 
	`memy
(
logc
.
da
, &
y
, (rectype));

1300 i(!
	`IS_REP_CLIENT
(
dbv
))

1301 
t
 = 
	`__log_put
(
dbv
,

1302 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1304 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1305 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1306 
	`LSN_NOT_LOGGED
(*
t_lp
);

1309 #ifde
LOG_DIAGNOSTIC


1310 i(
t
 != 0)

1311 ()
	`__ham_cyge_t
(
dbv
,

1312 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1315 #ifde
DIAGNOSTIC


1316 
	`__os_
(
dbv
, 
logc
.
da
);

1318 i(
is_dub
 || 
tx
 =
NULL
)

1319 
	`__os_
(
dbv
, 
logc
.
da
);

1321  (
t
);

1322 
	}
}

1329 
	$__ham_cyge_ad
(
dbv
, 
cbuf
, 
g
)

1330 
DB_ENV
 *
dbv
;

1331 *
cbuf
;

1332 
__ham_cyge_gs
 **
g
;

1334 
__ham_cyge_gs
 *
gp
;

1335 
u_t32_t
 
ump
;

1336 
u_t8_t
 *
bp
;

1337 
t
;

1339 i((
t
 = 
	`__os_mloc
(
dbv
,

1340 (
__ham_cyge_gs
+ (
DB_TXN
), &
gp
)) != 0)

1341  (
t
);

1342 
bp
 = 
cbuf
;

1343 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1344 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1346 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1347 
bp
 +(
gp
->
ty
);

1349 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1350 
bp
 +(
gp
->
tx
->
txnid
);

1352 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1353 
bp
 +(
DB_LSN
);

1355 
	`memy
(&
ump
, 
bp
, (uinttmp));

1356 
gp
->
feid
 = (
t32_t
)
ump
;

1357 
bp
 +(
ump
);

1359 
	`memy
(&
ump
, 
bp
, (uinttmp));

1360 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1361 
bp
 +(
ump
);

1363 
	`memy
(&
gp
->
g
, 
bp
, (argp->pagelsn));

1364 
bp
 +(
gp
->
g
);

1366 
	`memy
(&
ump
, 
bp
, (uinttmp));

1367 
gp
->
xt_pgno
 = (
db_pgno_t
)
ump
;

1368 
bp
 +(
ump
);

1370 
	`memy
(&
gp
->
x
, 
bp
, (argp->nextlsn));

1371 
bp
 +(
gp
->
x
);

1373 
	`memy
(&
ump
, 
bp
, (uinttmp));

1374 
gp
->
ext_pgno
 = (
db_pgno_t
)
ump
;

1375 
bp
 +(
ump
);

1377 
	`memy
(&
gp
->
ex
, 
bp
, (argp->nnextlsn));

1378 
bp
 +(
gp
->
ex
);

1380 
	`memt
(&
gp
->
ge
, 0, (argp->page));

1381 
	`memy
(&
gp
->
ge
.
size
, 
bp
, (
u_t32_t
));

1382 
bp
 +(
u_t32_t
);

1383 
gp
->
ge
.
da
 = 
bp
;

1384 
bp
 +
gp
->
ge
.
size
;

1386 *
g
 = 
gp
;

1388 
	}
}

1395 
	$__ham_magroup_42_ad
(
dbv
, 
cbuf
, 
g
)

1396 
DB_ENV
 *
dbv
;

1397 *
cbuf
;

1398 
__ham_magroup_42_gs
 **
g
;

1400 
__ham_magroup_42_gs
 *
gp
;

1401 
u_t32_t
 
ump
;

1402 
u_t8_t
 *
bp
;

1403 
t
;

1405 i((
t
 = 
	`__os_mloc
(
dbv
,

1406 (
__ham_magroup_42_gs
+ (
DB_TXN
), &
gp
)) != 0)

1407  (
t
);

1408 
bp
 = 
cbuf
;

1409 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1410 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1412 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1413 
bp
 +(
gp
->
ty
);

1415 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1416 
bp
 +(
gp
->
tx
->
txnid
);

1418 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1419 
bp
 +(
DB_LSN
);

1421 
	`memy
(&
ump
, 
bp
, (uinttmp));

1422 
gp
->
feid
 = (
t32_t
)
ump
;

1423 
bp
 +(
ump
);

1425 
	`memy
(&
ump
, 
bp
, (uinttmp));

1426 
gp
->
buck
 = (
u_t32_t
)
ump
;

1427 
bp
 +(
ump
);

1429 
	`memy
(&
ump
, 
bp
, (uinttmp));

1430 
gp
->
mmpgno
 = (
db_pgno_t
)
ump
;

1431 
bp
 +(
ump
);

1433 
	`memy
(&
gp
->
mm
, 
bp
, (argp->mmetalsn));

1434 
bp
 +(
gp
->
mm
);

1436 
	`memy
(&
ump
, 
bp
, (uinttmp));

1437 
gp
->
mpgno
 = (
db_pgno_t
)
ump
;

1438 
bp
 +(
ump
);

1440 
	`memy
(&
gp
->
m
, 
bp
, (argp->metalsn));

1441 
bp
 +(
gp
->
m
);

1443 
	`memy
(&
ump
, 
bp
, (uinttmp));

1444 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1445 
bp
 +(
ump
);

1447 
	`memy
(&
gp
->
g
, 
bp
, (argp->pagelsn));

1448 
bp
 +(
gp
->
g
);

1450 
	`memy
(&
ump
, 
bp
, (uinttmp));

1451 
gp
->
wloc
 = (
u_t32_t
)
ump
;

1452 
bp
 +(
ump
);

1454 *
g
 = 
gp
;

1456 
	}
}

1464 
	$__ham_magroup_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
buck
, 
mmpgno
, 
mm
, 
mpgno
, 
m
,

1465 
pgno
, 
g
, 
wloc
, 
ϡ_pgno
)

1466 
DB
 *
dbp
;

1467 
DB_TXN
 *
tx
;

1468 
DB_LSN
 *
t_lp
;

1469 
u_t32_t
 
ags
;

1470 
u_t32_t
 
buck
;

1471 
db_pgno_t
 
mmpgno
;

1472 
DB_LSN
 * 
mm
;

1473 
db_pgno_t
 
mpgno
;

1474 
DB_LSN
 * 
m
;

1475 
db_pgno_t
 
pgno
;

1476 
DB_LSN
 * 
g
;

1477 
u_t32_t
 
wloc
;

1478 
db_pgno_t
 
ϡ_pgno
;

1480 
DBT
 
logc
;

1481 
DB_ENV
 *
dbv
;

1482 
DB_TXNLOGREC
 *

;

1483 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1484 
u_t32_t
 
ump
, 
y
, 
txn_num
;

1485 
u_t
 
ad
;

1486 
u_t8_t
 *
bp
;

1487 
is_dub
, 
t
;

1489 
dbv
 = 
dbp
->dbenv;

1490 
	`COMPQUIET
(

, 
NULL
);

1492 
y
 = 
DB___ham_magroup
;

1493 
ad
 = 0;

1494 
p
 = 
t_lp
;

1496 
t
 = 0;

1498 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1499 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1500 i(
tx
 =
NULL
)

1502 
is_dub
 = 0;

1504 
is_dub
 = 1;

1506 i(
tx
 =
NULL
) {

1507 
txn_num
 = 0;

1508 
lp
 = &
nu_l
;

1509 
nu_l
.
fe
 =u_l.
offt
 = 0;

1511 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1512 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1513  (
t
);

1520 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1521 
txn_num
 = 
tx
->
txnid
;

1524 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1525 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1526 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1527  (
t
);

1529 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1530 + (
u_t32_t
)

1531 + (
u_t32_t
)

1532 + (
u_t32_t
)

1533 + (*
mm
)

1534 + (
u_t32_t
)

1535 + (*
m
)

1536 + (
u_t32_t
)

1537 + (*
g
)

1538 + (
u_t32_t
)

1539 + (
u_t32_t
);

1540 i(
	`CRYPTO_ON
(
dbv
)) {

1541 
ad
 =

1542 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1543 
logc
.
size
 +
ad
;

1546 i(
is_dub
 || 
tx
 =
NULL
) {

1547 i((
t
 =

1548 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1549  (
t
);

1551 i((
t
 = 
	`__os_mloc
(
dbv
,

1552 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1553  (
t
);

1554 #ifde
DIAGNOSTIC


1555 i((
t
 =

1556 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1557 
	`__os_
(
dbv
, 

);

1558  (
t
);

1561 
logc
.
da
 = 

->data;

1564 i(
ad
 > 0)

1565 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1567 
bp
 = 
logc
.
da
;

1569 
	`memy
(
bp
, &
y
, (rectype));

1570 
bp
 +(
y
);

1572 
	`memy
(
bp
, &
txn_num
, (txn_num));

1573 
bp
 +(
txn_num
);

1575 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1576 
bp
 +(
DB_LSN
);

1578 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1579 
	`memy
(
bp
, &
ump
, (uinttmp));

1580 
bp
 +(
ump
);

1582 
ump
 = (
u_t32_t
)
buck
;

1583 
	`memy
(
bp
, &
ump
, (uinttmp));

1584 
bp
 +(
ump
);

1586 
ump
 = (
u_t32_t
)
mmpgno
;

1587 
	`memy
(
bp
, &
ump
, (uinttmp));

1588 
bp
 +(
ump
);

1590 i(
mm
 !
NULL
) {

1591 i(
tx
 !
NULL
) {

1592 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1593 i(
	`LOG_COMPARE
(
mm
, &

->
l
>0 && (
t
 =

1594 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
mm
) != 0))

1595  (
t
);

1597 
	`memy
(
bp
, 
mm
, (*mmetalsn));

1599 
	`memt
(
bp
, 0, (*
mm
));

1600 
bp
 +(*
mm
);

1602 
ump
 = (
u_t32_t
)
mpgno
;

1603 
	`memy
(
bp
, &
ump
, (uinttmp));

1604 
bp
 +(
ump
);

1606 i(
m
 !
NULL
) {

1607 i(
tx
 !
NULL
) {

1608 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1609 i(
	`LOG_COMPARE
(
m
, &

->
l
>0 && (
t
 =

1610 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
m
) != 0))

1611  (
t
);

1613 
	`memy
(
bp
, 
m
, (*metalsn));

1615 
	`memt
(
bp
, 0, (*
m
));

1616 
bp
 +(*
m
);

1618 
ump
 = (
u_t32_t
)
pgno
;

1619 
	`memy
(
bp
, &
ump
, (uinttmp));

1620 
bp
 +(
ump
);

1622 i(
g
 !
NULL
) {

1623 i(
tx
 !
NULL
) {

1624 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1625 i(
	`LOG_COMPARE
(
g
, &

->
l
>0 && (
t
 =

1626 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
g
) != 0))

1627  (
t
);

1629 
	`memy
(
bp
, 
g
, (*pagelsn));

1631 
	`memt
(
bp
, 0, (*
g
));

1632 
bp
 +(*
g
);

1634 
ump
 = (
u_t32_t
)
wloc
;

1635 
	`memy
(
bp
, &
ump
, (uinttmp));

1636 
bp
 +(
ump
);

1638 
ump
 = (
u_t32_t
)
ϡ_pgno
;

1639 
	`memy
(
bp
, &
ump
, (uinttmp));

1640 
bp
 +(
ump
);

1642 
	`DB_ASSERT
(
dbv
,

1643 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1645 i(
is_dub
 || 
tx
 =
NULL
) {

1646 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1647 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1648 *
lp
 = *
p
;

1649 i(
p
 !
t_lp
)

1650 *
t_lp
 = *
p
;

1653 
t
 = 0;

1654 #ifde
DIAGNOSTIC


1659 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1660 
y
 |
DB_debug_FLAG
;

1661 
	`memy
(
logc
.
da
, &
y
, (rectype));

1663 i(!
	`IS_REP_CLIENT
(
dbv
))

1664 
t
 = 
	`__log_put
(
dbv
,

1665 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1667 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1668 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1669 
	`LSN_NOT_LOGGED
(*
t_lp
);

1672 #ifde
LOG_DIAGNOSTIC


1673 i(
t
 != 0)

1674 ()
	`__ham_magroup_t
(
dbv
,

1675 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1678 #ifde
DIAGNOSTIC


1679 
	`__os_
(
dbv
, 
logc
.
da
);

1681 i(
is_dub
 || 
tx
 =
NULL
)

1682 
	`__os_
(
dbv
, 
logc
.
da
);

1684  (
t
);

1685 
	}
}

1692 
	$__ham_magroup_ad
(
dbv
, 
cbuf
, 
g
)

1693 
DB_ENV
 *
dbv
;

1694 *
cbuf
;

1695 
__ham_magroup_gs
 **
g
;

1697 
__ham_magroup_gs
 *
gp
;

1698 
u_t32_t
 
ump
;

1699 
u_t8_t
 *
bp
;

1700 
t
;

1702 i((
t
 = 
	`__os_mloc
(
dbv
,

1703 (
__ham_magroup_gs
+ (
DB_TXN
), &
gp
)) != 0)

1704  (
t
);

1705 
bp
 = 
cbuf
;

1706 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1707 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1709 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1710 
bp
 +(
gp
->
ty
);

1712 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1713 
bp
 +(
gp
->
tx
->
txnid
);

1715 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1716 
bp
 +(
DB_LSN
);

1718 
	`memy
(&
ump
, 
bp
, (uinttmp));

1719 
gp
->
feid
 = (
t32_t
)
ump
;

1720 
bp
 +(
ump
);

1722 
	`memy
(&
ump
, 
bp
, (uinttmp));

1723 
gp
->
buck
 = (
u_t32_t
)
ump
;

1724 
bp
 +(
ump
);

1726 
	`memy
(&
ump
, 
bp
, (uinttmp));

1727 
gp
->
mmpgno
 = (
db_pgno_t
)
ump
;

1728 
bp
 +(
ump
);

1730 
	`memy
(&
gp
->
mm
, 
bp
, (argp->mmetalsn));

1731 
bp
 +(
gp
->
mm
);

1733 
	`memy
(&
ump
, 
bp
, (uinttmp));

1734 
gp
->
mpgno
 = (
db_pgno_t
)
ump
;

1735 
bp
 +(
ump
);

1737 
	`memy
(&
gp
->
m
, 
bp
, (argp->metalsn));

1738 
bp
 +(
gp
->
m
);

1740 
	`memy
(&
ump
, 
bp
, (uinttmp));

1741 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1742 
bp
 +(
ump
);

1744 
	`memy
(&
gp
->
g
, 
bp
, (argp->pagelsn));

1745 
bp
 +(
gp
->
g
);

1747 
	`memy
(&
ump
, 
bp
, (uinttmp));

1748 
gp
->
wloc
 = (
u_t32_t
)
ump
;

1749 
bp
 +(
ump
);

1751 
	`memy
(&
ump
, 
bp
, (uinttmp));

1752 
gp
->
ϡ_pgno
 = (
db_pgno_t
)
ump
;

1753 
bp
 +(
ump
);

1755 *
g
 = 
gp
;

1757 
	}
}

1764 
	$__ham_grouoc_42_ad
(
dbv
, 
cbuf
, 
g
)

1765 
DB_ENV
 *
dbv
;

1766 *
cbuf
;

1767 
__ham_grouoc_42_gs
 **
g
;

1769 
__ham_grouoc_42_gs
 *
gp
;

1770 
u_t32_t
 
ump
;

1771 
u_t8_t
 *
bp
;

1772 
t
;

1774 i((
t
 = 
	`__os_mloc
(
dbv
,

1775 (
__ham_grouoc_42_gs
+ (
DB_TXN
), &
gp
)) != 0)

1776  (
t
);

1777 
bp
 = 
cbuf
;

1778 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1779 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1781 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1782 
bp
 +(
gp
->
ty
);

1784 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1785 
bp
 +(
gp
->
tx
->
txnid
);

1787 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1788 
bp
 +(
DB_LSN
);

1790 
	`memy
(&
ump
, 
bp
, (uinttmp));

1791 
gp
->
feid
 = (
t32_t
)
ump
;

1792 
bp
 +(
ump
);

1794 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

1795 
bp
 +(
gp
->
ma_l
);

1797 
	`memy
(&
ump
, 
bp
, (uinttmp));

1798 
gp
->
t_pgno
 = (
db_pgno_t
)
ump
;

1799 
bp
 +(
ump
);

1801 
	`memy
(&
ump
, 
bp
, (uinttmp));

1802 
gp
->
num
 = (
u_t32_t
)
ump
;

1803 
bp
 +(
ump
);

1805 
	`memy
(&
ump
, 
bp
, (uinttmp));

1806 
gp
->

 = (
db_pgno_t
)
ump
;

1807 
bp
 +(
ump
);

1809 *
g
 = 
gp
;

1811 
	}
}

1819 
	$__ham_grouoc_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
ma_l
, 
t_pgno
, 
num
, 
unud
, 
ϡ_pgno
)

1820 
DB
 *
dbp
;

1821 
DB_TXN
 *
tx
;

1822 
DB_LSN
 *
t_lp
;

1823 
u_t32_t
 
ags
;

1824 
DB_LSN
 * 
ma_l
;

1825 
db_pgno_t
 
t_pgno
;

1826 
u_t32_t
 
num
;

1827 
db_pgno_t
 
unud
;

1828 
db_pgno_t
 
ϡ_pgno
;

1830 
DBT
 
logc
;

1831 
DB_ENV
 *
dbv
;

1832 
DB_TXNLOGREC
 *

;

1833 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1834 
u_t32_t
 
ump
, 
y
, 
txn_num
;

1835 
u_t
 
ad
;

1836 
u_t8_t
 *
bp
;

1837 
is_dub
, 
t
;

1839 
dbv
 = 
dbp
->dbenv;

1840 
	`COMPQUIET
(

, 
NULL
);

1842 
y
 = 
DB___ham_grouoc
;

1843 
ad
 = 0;

1844 
p
 = 
t_lp
;

1846 
t
 = 0;

1848 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1849 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1850 i(
tx
 =
NULL
)

1852 
is_dub
 = 0;

1854 
is_dub
 = 1;

1856 i(
tx
 =
NULL
) {

1857 
txn_num
 = 0;

1858 
lp
 = &
nu_l
;

1859 
nu_l
.
fe
 =u_l.
offt
 = 0;

1861 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1862 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1863  (
t
);

1870 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1871 
txn_num
 = 
tx
->
txnid
;

1874 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1875 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1876 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1877  (
t
);

1879 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1880 + (
u_t32_t
)

1881 + (*
ma_l
)

1882 + (
u_t32_t
)

1883 + (
u_t32_t
)

1884 + (
u_t32_t
)

1885 + (
u_t32_t
);

1886 i(
	`CRYPTO_ON
(
dbv
)) {

1887 
ad
 =

1888 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1889 
logc
.
size
 +
ad
;

1892 i(
is_dub
 || 
tx
 =
NULL
) {

1893 i((
t
 =

1894 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1895  (
t
);

1897 i((
t
 = 
	`__os_mloc
(
dbv
,

1898 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1899  (
t
);

1900 #ifde
DIAGNOSTIC


1901 i((
t
 =

1902 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1903 
	`__os_
(
dbv
, 

);

1904  (
t
);

1907 
logc
.
da
 = 

->data;

1910 i(
ad
 > 0)

1911 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1913 
bp
 = 
logc
.
da
;

1915 
	`memy
(
bp
, &
y
, (rectype));

1916 
bp
 +(
y
);

1918 
	`memy
(
bp
, &
txn_num
, (txn_num));

1919 
bp
 +(
txn_num
);

1921 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1922 
bp
 +(
DB_LSN
);

1924 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1925 
	`memy
(
bp
, &
ump
, (uinttmp));

1926 
bp
 +(
ump
);

1928 i(
ma_l
 !
NULL
) {

1929 i(
tx
 !
NULL
) {

1930 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1931 i(
	`LOG_COMPARE
(
ma_l
, &

->
l
>0 && (
t
 =

1932 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
ma_l
) != 0))

1933  (
t
);

1935 
	`memy
(
bp
, 
ma_l
, (*meta_lsn));

1937 
	`memt
(
bp
, 0, (*
ma_l
));

1938 
bp
 +(*
ma_l
);

1940 
ump
 = (
u_t32_t
)
t_pgno
;

1941 
	`memy
(
bp
, &
ump
, (uinttmp));

1942 
bp
 +(
ump
);

1944 
ump
 = (
u_t32_t
)
num
;

1945 
	`memy
(
bp
, &
ump
, (uinttmp));

1946 
bp
 +(
ump
);

1948 
ump
 = (
u_t32_t
)
unud
;

1949 
	`memy
(
bp
, &
ump
, (uinttmp));

1950 
bp
 +(
ump
);

1952 
ump
 = (
u_t32_t
)
ϡ_pgno
;

1953 
	`memy
(
bp
, &
ump
, (uinttmp));

1954 
bp
 +(
ump
);

1956 
	`DB_ASSERT
(
dbv
,

1957 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1959 i(
is_dub
 || 
tx
 =
NULL
) {

1960 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1961 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1962 *
lp
 = *
p
;

1963 i(
p
 !
t_lp
)

1964 *
t_lp
 = *
p
;

1967 
t
 = 0;

1968 #ifde
DIAGNOSTIC


1973 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1974 
y
 |
DB_debug_FLAG
;

1975 
	`memy
(
logc
.
da
, &
y
, (rectype));

1977 i(!
	`IS_REP_CLIENT
(
dbv
))

1978 
t
 = 
	`__log_put
(
dbv
,

1979 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1981 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1982 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1983 
	`LSN_NOT_LOGGED
(*
t_lp
);

1986 #ifde
LOG_DIAGNOSTIC


1987 i(
t
 != 0)

1988 ()
	`__ham_grouoc_t
(
dbv
,

1989 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1992 #ifde
DIAGNOSTIC


1993 
	`__os_
(
dbv
, 
logc
.
da
);

1995 i(
is_dub
 || 
tx
 =
NULL
)

1996 
	`__os_
(
dbv
, 
logc
.
da
);

1998  (
t
);

1999 
	}
}

2006 
	$__ham_grouoc_ad
(
dbv
, 
cbuf
, 
g
)

2007 
DB_ENV
 *
dbv
;

2008 *
cbuf
;

2009 
__ham_grouoc_gs
 **
g
;

2011 
__ham_grouoc_gs
 *
gp
;

2012 
u_t32_t
 
ump
;

2013 
u_t8_t
 *
bp
;

2014 
t
;

2016 i((
t
 = 
	`__os_mloc
(
dbv
,

2017 (
__ham_grouoc_gs
+ (
DB_TXN
), &
gp
)) != 0)

2018  (
t
);

2019 
bp
 = 
cbuf
;

2020 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2021 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2023 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2024 
bp
 +(
gp
->
ty
);

2026 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2027 
bp
 +(
gp
->
tx
->
txnid
);

2029 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2030 
bp
 +(
DB_LSN
);

2032 
	`memy
(&
ump
, 
bp
, (uinttmp));

2033 
gp
->
feid
 = (
t32_t
)
ump
;

2034 
bp
 +(
ump
);

2036 
	`memy
(&
gp
->
ma_l
, 
bp
, (argp->meta_lsn));

2037 
bp
 +(
gp
->
ma_l
);

2039 
	`memy
(&
ump
, 
bp
, (uinttmp));

2040 
gp
->
t_pgno
 = (
db_pgno_t
)
ump
;

2041 
bp
 +(
ump
);

2043 
	`memy
(&
ump
, 
bp
, (uinttmp));

2044 
gp
->
num
 = (
u_t32_t
)
ump
;

2045 
bp
 +(
ump
);

2047 
	`memy
(&
ump
, 
bp
, (uinttmp));

2048 
gp
->
unud
 = (
db_pgno_t
)
ump
;

2049 
bp
 +(
ump
);

2051 
	`memy
(&
ump
, 
bp
, (uinttmp));

2052 
gp
->
ϡ_pgno
 = (
db_pgno_t
)
ump
;

2053 
bp
 +(
ump
);

2055 *
g
 = 
gp
;

2057 
	}
}

2065 
	$__ham_cudj_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
pgno
, 
dx
, 
n
, 
dup_off
, 
add
,

2066 
is_dup
, 
d
)

2067 
DB
 *
dbp
;

2068 
DB_TXN
 *
tx
;

2069 
DB_LSN
 *
t_lp
;

2070 
u_t32_t
 
ags
;

2071 
db_pgno_t
 
pgno
;

2072 
u_t32_t
 
dx
;

2073 
u_t32_t
 
n
;

2074 
u_t32_t
 
dup_off
;

2075 
add
;

2076 
is_dup
;

2077 
u_t32_t
 
d
;

2079 
DBT
 
logc
;

2080 
DB_ENV
 *
dbv
;

2081 
DB_TXNLOGREC
 *

;

2082 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2083 
u_t32_t
 
ump
, 
y
, 
txn_num
;

2084 
u_t
 
ad
;

2085 
u_t8_t
 *
bp
;

2086 
is_dub
, 
t
;

2088 
dbv
 = 
dbp
->dbenv;

2089 
	`COMPQUIET
(

, 
NULL
);

2091 
y
 = 
DB___ham_cudj
;

2092 
ad
 = 0;

2093 
p
 = 
t_lp
;

2095 
t
 = 0;

2097 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

2098 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

2099 i(
tx
 =
NULL
)

2101 
is_dub
 = 0;

2103 
is_dub
 = 1;

2105 i(
tx
 =
NULL
) {

2106 
txn_num
 = 0;

2107 
lp
 = &
nu_l
;

2108 
nu_l
.
fe
 =u_l.
offt
 = 0;

2110 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2111 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2112  (
t
);

2119 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

2120 
txn_num
 = 
tx
->
txnid
;

2123 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

2124 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

2125 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

2126  (
t
);

2128 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

2129 + (
u_t32_t
)

2130 + (
u_t32_t
)

2131 + (
u_t32_t
)

2132 + (
u_t32_t
)

2133 + (
u_t32_t
)

2134 + (
u_t32_t
)

2135 + (
u_t32_t
)

2136 + (
u_t32_t
);

2137 i(
	`CRYPTO_ON
(
dbv
)) {

2138 
ad
 =

2139 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

2140 
logc
.
size
 +
ad
;

2143 i(
is_dub
 || 
tx
 =
NULL
) {

2144 i((
t
 =

2145 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

2146  (
t
);

2148 i((
t
 = 
	`__os_mloc
(
dbv
,

2149 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

2150  (
t
);

2151 #ifde
DIAGNOSTIC


2152 i((
t
 =

2153 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

2154 
	`__os_
(
dbv
, 

);

2155  (
t
);

2158 
logc
.
da
 = 

->data;

2161 i(
ad
 > 0)

2162 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

2164 
bp
 = 
logc
.
da
;

2166 
	`memy
(
bp
, &
y
, (rectype));

2167 
bp
 +(
y
);

2169 
	`memy
(
bp
, &
txn_num
, (txn_num));

2170 
bp
 +(
txn_num
);

2172 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

2173 
bp
 +(
DB_LSN
);

2175 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

2176 
	`memy
(
bp
, &
ump
, (uinttmp));

2177 
bp
 +(
ump
);

2179 
ump
 = (
u_t32_t
)
pgno
;

2180 
	`memy
(
bp
, &
ump
, (uinttmp));

2181 
bp
 +(
ump
);

2183 
ump
 = (
u_t32_t
)
dx
;

2184 
	`memy
(
bp
, &
ump
, (uinttmp));

2185 
bp
 +(
ump
);

2187 
ump
 = (
u_t32_t
)
n
;

2188 
	`memy
(
bp
, &
ump
, (uinttmp));

2189 
bp
 +(
ump
);

2191 
ump
 = (
u_t32_t
)
dup_off
;

2192 
	`memy
(
bp
, &
ump
, (uinttmp));

2193 
bp
 +(
ump
);

2195 
ump
 = (
u_t32_t
)
add
;

2196 
	`memy
(
bp
, &
ump
, (uinttmp));

2197 
bp
 +(
ump
);

2199 
ump
 = (
u_t32_t
)
is_dup
;

2200 
	`memy
(
bp
, &
ump
, (uinttmp));

2201 
bp
 +(
ump
);

2203 
ump
 = (
u_t32_t
)
d
;

2204 
	`memy
(
bp
, &
ump
, (uinttmp));

2205 
bp
 +(
ump
);

2207 
	`DB_ASSERT
(
dbv
,

2208 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

2210 i(
is_dub
 || 
tx
 =
NULL
) {

2211 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

2212 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

2213 *
lp
 = *
p
;

2214 i(
p
 !
t_lp
)

2215 *
t_lp
 = *
p
;

2218 
t
 = 0;

2219 #ifde
DIAGNOSTIC


2224 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2225 
y
 |
DB_debug_FLAG
;

2226 
	`memy
(
logc
.
da
, &
y
, (rectype));

2228 i(!
	`IS_REP_CLIENT
(
dbv
))

2229 
t
 = 
	`__log_put
(
dbv
,

2230 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2232 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2233 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2234 
	`LSN_NOT_LOGGED
(*
t_lp
);

2237 #ifde
LOG_DIAGNOSTIC


2238 i(
t
 != 0)

2239 ()
	`__ham_cudj_t
(
dbv
,

2240 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2243 #ifde
DIAGNOSTIC


2244 
	`__os_
(
dbv
, 
logc
.
da
);

2246 i(
is_dub
 || 
tx
 =
NULL
)

2247 
	`__os_
(
dbv
, 
logc
.
da
);

2249  (
t
);

2250 
	}
}

2256 
	$__ham_cudj_ad
(
dbv
, 
cbuf
, 
g
)

2257 
DB_ENV
 *
dbv
;

2258 *
cbuf
;

2259 
__ham_cudj_gs
 **
g
;

2261 
__ham_cudj_gs
 *
gp
;

2262 
u_t32_t
 
ump
;

2263 
u_t8_t
 *
bp
;

2264 
t
;

2266 i((
t
 = 
	`__os_mloc
(
dbv
,

2267 (
__ham_cudj_gs
+ (
DB_TXN
), &
gp
)) != 0)

2268  (
t
);

2269 
bp
 = 
cbuf
;

2270 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2271 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2273 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2274 
bp
 +(
gp
->
ty
);

2276 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2277 
bp
 +(
gp
->
tx
->
txnid
);

2279 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2280 
bp
 +(
DB_LSN
);

2282 
	`memy
(&
ump
, 
bp
, (uinttmp));

2283 
gp
->
feid
 = (
t32_t
)
ump
;

2284 
bp
 +(
ump
);

2286 
	`memy
(&
ump
, 
bp
, (uinttmp));

2287 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

2288 
bp
 +(
ump
);

2290 
	`memy
(&
ump
, 
bp
, (uinttmp));

2291 
gp
->
dx
 = (
u_t32_t
)
ump
;

2292 
bp
 +(
ump
);

2294 
	`memy
(&
ump
, 
bp
, (uinttmp));

2295 
gp
->
n
 = (
u_t32_t
)
ump
;

2296 
bp
 +(
ump
);

2298 
	`memy
(&
ump
, 
bp
, (uinttmp));

2299 
gp
->
dup_off
 = (
u_t32_t
)
ump
;

2300 
bp
 +(
ump
);

2302 
	`memy
(&
ump
, 
bp
, (uinttmp));

2303 
gp
->
add
 = ()
ump
;

2304 
bp
 +(
ump
);

2306 
	`memy
(&
ump
, 
bp
, (uinttmp));

2307 
gp
->
is_dup
 = ()
ump
;

2308 
bp
 +(
ump
);

2310 
	`memy
(&
ump
, 
bp
, (uinttmp));

2311 
gp
->
d
 = (
u_t32_t
)
ump
;

2312 
bp
 +(
ump
);

2314 *
g
 = 
gp
;

2316 
	}
}

2324 
	$__ham_chgpg_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
mode
, 
d_pgno
, 
w_pgno
, 
d_dx
, 
w_dx
)

2325 
DB
 *
dbp
;

2326 
DB_TXN
 *
tx
;

2327 
DB_LSN
 *
t_lp
;

2328 
u_t32_t
 
ags
;

2329 
db_ham_mode
 
mode
;

2330 
db_pgno_t
 
d_pgno
;

2331 
db_pgno_t
 
w_pgno
;

2332 
u_t32_t
 
d_dx
;

2333 
u_t32_t
 
w_dx
;

2335 
DBT
 
logc
;

2336 
DB_ENV
 *
dbv
;

2337 
DB_TXNLOGREC
 *

;

2338 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

2339 
u_t32_t
 
ump
, 
y
, 
txn_num
;

2340 
u_t
 
ad
;

2341 
u_t8_t
 *
bp
;

2342 
is_dub
, 
t
;

2344 
dbv
 = 
dbp
->dbenv;

2345 
	`COMPQUIET
(

, 
NULL
);

2347 
y
 = 
DB___ham_chgpg
;

2348 
ad
 = 0;

2349 
p
 = 
t_lp
;

2351 
t
 = 0;

2353 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

2354 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

2355 i(
tx
 =
NULL
)

2357 
is_dub
 = 0;

2359 
is_dub
 = 1;

2361 i(
tx
 =
NULL
) {

2362 
txn_num
 = 0;

2363 
lp
 = &
nu_l
;

2364 
nu_l
.
fe
 =u_l.
offt
 = 0;

2366 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

2367 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

2368  (
t
);

2375 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

2376 
txn_num
 = 
tx
->
txnid
;

2379 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

2380 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

2381 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

2382  (
t
);

2384 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

2385 + (
u_t32_t
)

2386 + (
u_t32_t
)

2387 + (
u_t32_t
)

2388 + (
u_t32_t
)

2389 + (
u_t32_t
)

2390 + (
u_t32_t
);

2391 i(
	`CRYPTO_ON
(
dbv
)) {

2392 
ad
 =

2393 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

2394 
logc
.
size
 +
ad
;

2397 i(
is_dub
 || 
tx
 =
NULL
) {

2398 i((
t
 =

2399 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

2400  (
t
);

2402 i((
t
 = 
	`__os_mloc
(
dbv
,

2403 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

2404  (
t
);

2405 #ifde
DIAGNOSTIC


2406 i((
t
 =

2407 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

2408 
	`__os_
(
dbv
, 

);

2409  (
t
);

2412 
logc
.
da
 = 

->data;

2415 i(
ad
 > 0)

2416 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

2418 
bp
 = 
logc
.
da
;

2420 
	`memy
(
bp
, &
y
, (rectype));

2421 
bp
 +(
y
);

2423 
	`memy
(
bp
, &
txn_num
, (txn_num));

2424 
bp
 +(
txn_num
);

2426 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

2427 
bp
 +(
DB_LSN
);

2429 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

2430 
	`memy
(
bp
, &
ump
, (uinttmp));

2431 
bp
 +(
ump
);

2433 
ump
 = (
u_t32_t
)
mode
;

2434 
	`memy
(
bp
, &
ump
, (uinttmp));

2435 
bp
 +(
ump
);

2437 
ump
 = (
u_t32_t
)
d_pgno
;

2438 
	`memy
(
bp
, &
ump
, (uinttmp));

2439 
bp
 +(
ump
);

2441 
ump
 = (
u_t32_t
)
w_pgno
;

2442 
	`memy
(
bp
, &
ump
, (uinttmp));

2443 
bp
 +(
ump
);

2445 
ump
 = (
u_t32_t
)
d_dx
;

2446 
	`memy
(
bp
, &
ump
, (uinttmp));

2447 
bp
 +(
ump
);

2449 
ump
 = (
u_t32_t
)
w_dx
;

2450 
	`memy
(
bp
, &
ump
, (uinttmp));

2451 
bp
 +(
ump
);

2453 
	`DB_ASSERT
(
dbv
,

2454 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

2456 i(
is_dub
 || 
tx
 =
NULL
) {

2457 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

2458 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

2459 *
lp
 = *
p
;

2460 i(
p
 !
t_lp
)

2461 *
t_lp
 = *
p
;

2464 
t
 = 0;

2465 #ifde
DIAGNOSTIC


2470 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

2471 
y
 |
DB_debug_FLAG
;

2472 
	`memy
(
logc
.
da
, &
y
, (rectype));

2474 i(!
	`IS_REP_CLIENT
(
dbv
))

2475 
t
 = 
	`__log_put
(
dbv
,

2476 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

2478 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

2479 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

2480 
	`LSN_NOT_LOGGED
(*
t_lp
);

2483 #ifde
LOG_DIAGNOSTIC


2484 i(
t
 != 0)

2485 ()
	`__ham_chgpg_t
(
dbv
,

2486 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

2489 #ifde
DIAGNOSTIC


2490 
	`__os_
(
dbv
, 
logc
.
da
);

2492 i(
is_dub
 || 
tx
 =
NULL
)

2493 
	`__os_
(
dbv
, 
logc
.
da
);

2495  (
t
);

2496 
	}
}

2502 
	$__ham_chgpg_ad
(
dbv
, 
cbuf
, 
g
)

2503 
DB_ENV
 *
dbv
;

2504 *
cbuf
;

2505 
__ham_chgpg_gs
 **
g
;

2507 
__ham_chgpg_gs
 *
gp
;

2508 
u_t32_t
 
ump
;

2509 
u_t8_t
 *
bp
;

2510 
t
;

2512 i((
t
 = 
	`__os_mloc
(
dbv
,

2513 (
__ham_chgpg_gs
+ (
DB_TXN
), &
gp
)) != 0)

2514  (
t
);

2515 
bp
 = 
cbuf
;

2516 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

2517 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

2519 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

2520 
bp
 +(
gp
->
ty
);

2522 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

2523 
bp
 +(
gp
->
tx
->
txnid
);

2525 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

2526 
bp
 +(
DB_LSN
);

2528 
	`memy
(&
ump
, 
bp
, (uinttmp));

2529 
gp
->
feid
 = (
t32_t
)
ump
;

2530 
bp
 +(
ump
);

2532 
	`memy
(&
ump
, 
bp
, (uinttmp));

2533 
gp
->
mode
 = (
db_ham_mode
)
ump
;

2534 
bp
 +(
ump
);

2536 
	`memy
(&
ump
, 
bp
, (uinttmp));

2537 
gp
->
d_pgno
 = (
db_pgno_t
)
ump
;

2538 
bp
 +(
ump
);

2540 
	`memy
(&
ump
, 
bp
, (uinttmp));

2541 
gp
->
w_pgno
 = (
db_pgno_t
)
ump
;

2542 
bp
 +(
ump
);

2544 
	`memy
(&
ump
, 
bp
, (uinttmp));

2545 
gp
->
d_dx
 = (
u_t32_t
)
ump
;

2546 
bp
 +(
ump
);

2548 
	`memy
(&
ump
, 
bp
, (uinttmp));

2549 
gp
->
w_dx
 = (
u_t32_t
)
ump
;

2550 
bp
 +(
ump
);

2552 *
g
 = 
gp
;

2554 
	}
}

2561 
	$__ham__cov
(
dbv
, 
dbp
, 
dbsiz
)

2562 
DB_ENV
 *
dbv
;

2563 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

2564 
size_t
 *
dbsiz
;

2566 
t
;

2568 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

2569 
__ham_sd_cov
, 
DB___ham_sd
)) != 0)

2570  (
t
);

2571 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

2572 
__ham_wge_cov
, 
DB___ham_wge
)) != 0)

2573  (
t
);

2574 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

2575 
__ham_lda_cov
, 
DB___ham_lda
)) != 0)

2576  (
t
);

2577 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

2578 
__ham_a_cov
, 
DB___ham_a
)) != 0)

2579  (
t
);

2580 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

2581 
__ham_cyge_cov
, 
DB___ham_cyge
)) != 0)

2582  (
t
);

2583 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

2584 
__ham_magroup_cov
, 
DB___ham_magroup
)) != 0)

2585  (
t
);

2586 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

2587 
__ham_grouoc_cov
, 
DB___ham_grouoc
)) != 0)

2588  (
t
);

2589 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

2590 
__ham_cudj_cov
, 
DB___ham_cudj
)) != 0)

2591  (
t
);

2592 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

2593 
__ham_chgpg_cov
, 
DB___ham_chgpg
)) != 0)

2594  (
t
);

2596 
	}
}

	@../hash/hash_autop.c

3 
	~"db_cfig.h
"

5 #ifde
HAVE_HASH


6 
	~"db_t.h
"

7 
	~"dbc/yo.h
"

8 
	~"dbc/db_ge.h
"

9 
	~"dbc/db_dich.h
"

10 
	~"dbc/db_am.h
"

11 
	~"dbc/hash.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/txn.h
"

20 
	$__ham_sd_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

21 
DB_ENV
 *
dbv
;

22 
DBT
 *
db
;

23 
DB_LSN
 *
lp
;

24 
db_cs
 
nud2
;

25 *
nud3
;

27 
__ham_sd_gs
 *
gp
;

28 
u_t32_t
 
i
;

29 
ch
;

30 
t
;

32 
nud2
 = 
DB_TXN_PRINT
;

33 
nud3
 = 
NULL
;

35 i((
t
 = 
	`__ham_sd_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

36  (
t
);

37 ()
	`tf
(

39 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

40 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

41 (
u_lg
)
gp
->
ty
,

42 (
u_lg
)
gp
->
tx
->
txnid
,

43 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

44 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

45 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

46 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

47 ()
	`tf
("\dx: %lu\n", (
u_lg
)
gp
->
ndx
);

48 ()
	`tf
("\tpagelsn: [%lu][%lu]\n",

49 (
u_lg
)
gp
->
g
.
fe
, (u_lgrgp->g.
offt
);

50 ()
	`tf
("\tkey: ");

51 
i
 = 0; i < 
gp
->
key
.
size
; i++) {

52 
ch
 = ((
u_t8_t
 *)
gp
->
key
.
da
)[
i
];

53 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

55 ()
	`tf
("\n");

56 ()
	`tf
("\tdata: ");

57 
i
 = 0; i < 
gp
->
da
.
size
; i++) {

58 
ch
 = ((
u_t8_t
 *)
gp
->
da
.da)[
i
];

59 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

61 ()
	`tf
("\n");

62 ()
	`tf
("\n");

63 
	`__os_
(
dbv
, 
gp
);

65 
	}
}

72 
	$__ham_wge_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

73 
DB_ENV
 *
dbv
;

74 
DBT
 *
db
;

75 
DB_LSN
 *
lp
;

76 
db_cs
 
nud2
;

77 *
nud3
;

79 
__ham_wge_gs
 *
gp
;

80 
t
;

82 
nud2
 = 
DB_TXN_PRINT
;

83 
nud3
 = 
NULL
;

85 i((
t
 = 
	`__ham_wge_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

86  (
t
);

87 ()
	`tf
(

89 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

90 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

91 (
u_lg
)
gp
->
ty
,

92 (
u_lg
)
gp
->
tx
->
txnid
,

93 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

94 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

95 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

96 ()
	`tf
("\v_pgno: %lu\n", (
u_lg
)
gp
->
ev_pgno
);

97 ()
	`tf
("\tprevlsn: [%lu][%lu]\n",

98 (
u_lg
)
gp
->
evl
.
fe
, (u_lgrgp->evl.
offt
);

99 ()
	`tf
("\ew_pgno: %lu\n", (
u_lg
)
gp
->
w_pgno
);

100 ()
	`tf
("\tpagelsn: [%lu][%lu]\n",

101 (
u_lg
)
gp
->
g
.
fe
, (u_lgrgp->g.
offt
);

102 ()
	`tf
("\ext_pgno: %lu\n", (
u_lg
)
gp
->
xt_pgno
);

103 ()
	`tf
("\tnextlsn: [%lu][%lu]\n",

104 (
u_lg
)
gp
->
x
.
fe
, (u_lgrgp->x.
offt
);

105 ()
	`tf
("\n");

106 
	`__os_
(
dbv
, 
gp
);

108 
	}
}

115 
	$__ham_lda_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

116 
DB_ENV
 *
dbv
;

117 
DBT
 *
db
;

118 
DB_LSN
 *
lp
;

119 
db_cs
 
nud2
;

120 *
nud3
;

122 
__ham_lda_gs
 *
gp
;

123 
u_t32_t
 
i
;

124 
ch
;

125 
t
;

127 
nud2
 = 
DB_TXN_PRINT
;

128 
nud3
 = 
NULL
;

130 i((
t
 = 
	`__ham_lda_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

131  (
t
);

132 ()
	`tf
(

134 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

135 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

136 (
u_lg
)
gp
->
ty
,

137 (
u_lg
)
gp
->
tx
->
txnid
,

138 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

139 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

140 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

141 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

142 ()
	`tf
("\tpageimage: ");

143 
i
 = 0; i < 
gp
->
geimage
.
size
; i++) {

144 
ch
 = ((
u_t8_t
 *)
gp
->
geimage
.
da
)[
i
];

145 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

147 ()
	`tf
("\n");

148 ()
	`tf
("\tpagelsn: [%lu][%lu]\n",

149 (
u_lg
)
gp
->
g
.
fe
, (u_lgrgp->g.
offt
);

150 ()
	`tf
("\n");

151 
	`__os_
(
dbv
, 
gp
);

153 
	}
}

160 
	$__ham_a_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

161 
DB_ENV
 *
dbv
;

162 
DBT
 *
db
;

163 
DB_LSN
 *
lp
;

164 
db_cs
 
nud2
;

165 *
nud3
;

167 
__ham_a_gs
 *
gp
;

168 
u_t32_t
 
i
;

169 
ch
;

170 
t
;

172 
nud2
 = 
DB_TXN_PRINT
;

173 
nud3
 = 
NULL
;

175 i((
t
 = 
	`__ham_a_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

176  (
t
);

177 ()
	`tf
(

179 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

180 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

181 (
u_lg
)
gp
->
ty
,

182 (
u_lg
)
gp
->
tx
->
txnid
,

183 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

184 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

185 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

186 ()
	`tf
("\dx: %lu\n", (
u_lg
)
gp
->
ndx
);

187 ()
	`tf
("\tpagelsn: [%lu][%lu]\n",

188 (
u_lg
)
gp
->
g
.
fe
, (u_lgrgp->g.
offt
);

189 ()
	`tf
("\toff: %ld\n", ()
gp
->
off
);

190 ()
	`tf
("\tolditem: ");

191 
i
 = 0; i < 
gp
->
dem
.
size
; i++) {

192 
ch
 = ((
u_t8_t
 *)
gp
->
dem
.
da
)[
i
];

193 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

195 ()
	`tf
("\n");

196 ()
	`tf
("\tnewitem: ");

197 
i
 = 0; i < 
gp
->
wem
.
size
; i++) {

198 
ch
 = ((
u_t8_t
 *)
gp
->
wem
.
da
)[
i
];

199 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

201 ()
	`tf
("\n");

202 ()
	`tf
("\tmakedup: %lu\n", (
u_lg
)
gp
->
makedup
);

203 ()
	`tf
("\n");

204 
	`__os_
(
dbv
, 
gp
);

206 
	}
}

213 
	$__ham_cyge_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

214 
DB_ENV
 *
dbv
;

215 
DBT
 *
db
;

216 
DB_LSN
 *
lp
;

217 
db_cs
 
nud2
;

218 *
nud3
;

220 
__ham_cyge_gs
 *
gp
;

221 
u_t32_t
 
i
;

222 
ch
;

223 
t
;

225 
nud2
 = 
DB_TXN_PRINT
;

226 
nud3
 = 
NULL
;

228 i((
t
 = 
	`__ham_cyge_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

229  (
t
);

230 ()
	`tf
(

232 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

233 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

234 (
u_lg
)
gp
->
ty
,

235 (
u_lg
)
gp
->
tx
->
txnid
,

236 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

237 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

238 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

239 ()
	`tf
("\tpagelsn: [%lu][%lu]\n",

240 (
u_lg
)
gp
->
g
.
fe
, (u_lgrgp->g.
offt
);

241 ()
	`tf
("\ext_pgno: %lu\n", (
u_lg
)
gp
->
xt_pgno
);

242 ()
	`tf
("\tnextlsn: [%lu][%lu]\n",

243 (
u_lg
)
gp
->
x
.
fe
, (u_lgrgp->x.
offt
);

244 ()
	`tf
("\xt_pgno: %lu\n", (
u_lg
)
gp
->
ext_pgno
);

245 ()
	`tf
("\tnnextlsn: [%lu][%lu]\n",

246 (
u_lg
)
gp
->
ex
.
fe
, (u_lgrgp->ex.
offt
);

247 ()
	`tf
("\tpage: ");

248 
i
 = 0; i < 
gp
->
ge
.
size
; i++) {

249 
ch
 = ((
u_t8_t
 *)
gp
->
ge
.
da
)[
i
];

250 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

252 ()
	`tf
("\n");

253 ()
	`tf
("\n");

254 
	`__os_
(
dbv
, 
gp
);

256 
	}
}

263 
	$__ham_magroup_42_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

264 
DB_ENV
 *
dbv
;

265 
DBT
 *
db
;

266 
DB_LSN
 *
lp
;

267 
db_cs
 
nud2
;

268 *
nud3
;

270 
__ham_magroup_42_gs
 *
gp
;

271 
t
;

273 
nud2
 = 
DB_TXN_PRINT
;

274 
nud3
 = 
NULL
;

276 i((
t
 = 
	`__ham_magroup_42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

277  (
t
);

278 ()
	`tf
(

280 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

281 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

282 (
u_lg
)
gp
->
ty
,

283 (
u_lg
)
gp
->
tx
->
txnid
,

284 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

285 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

286 ()
	`tf
("\tbuck: %lu\n", (
u_lg
)
gp
->
buck
);

287 ()
	`tf
("\tmmpgno: %lu\n", (
u_lg
)
gp
->
mmpgno
);

288 ()
	`tf
("\tmmetalsn: [%lu][%lu]\n",

289 (
u_lg
)
gp
->
mm
.
fe
, (u_lgrgp->mm.
offt
);

290 ()
	`tf
("\tmpgno: %lu\n", (
u_lg
)
gp
->
mpgno
);

291 ()
	`tf
("\tmetalsn: [%lu][%lu]\n",

292 (
u_lg
)
gp
->
m
.
fe
, (u_lgrgp->m.
offt
);

293 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

294 ()
	`tf
("\tpagelsn: [%lu][%lu]\n",

295 (
u_lg
)
gp
->
g
.
fe
, (u_lgrgp->g.
offt
);

296 ()
	`tf
("\ewloc: %lu\n", (
u_lg
)
gp
->
wloc
);

297 ()
	`tf
("\n");

298 
	`__os_
(
dbv
, 
gp
);

300 
	}
}

307 
	$__ham_magroup_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

308 
DB_ENV
 *
dbv
;

309 
DBT
 *
db
;

310 
DB_LSN
 *
lp
;

311 
db_cs
 
nud2
;

312 *
nud3
;

314 
__ham_magroup_gs
 *
gp
;

315 
t
;

317 
nud2
 = 
DB_TXN_PRINT
;

318 
nud3
 = 
NULL
;

320 i((
t
 = 
	`__ham_magroup_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

321  (
t
);

322 ()
	`tf
(

324 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

325 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

326 (
u_lg
)
gp
->
ty
,

327 (
u_lg
)
gp
->
tx
->
txnid
,

328 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

329 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

330 ()
	`tf
("\tbuck: %lu\n", (
u_lg
)
gp
->
buck
);

331 ()
	`tf
("\tmmpgno: %lu\n", (
u_lg
)
gp
->
mmpgno
);

332 ()
	`tf
("\tmmetalsn: [%lu][%lu]\n",

333 (
u_lg
)
gp
->
mm
.
fe
, (u_lgrgp->mm.
offt
);

334 ()
	`tf
("\tmpgno: %lu\n", (
u_lg
)
gp
->
mpgno
);

335 ()
	`tf
("\tmetalsn: [%lu][%lu]\n",

336 (
u_lg
)
gp
->
m
.
fe
, (u_lgrgp->m.
offt
);

337 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

338 ()
	`tf
("\tpagelsn: [%lu][%lu]\n",

339 (
u_lg
)
gp
->
g
.
fe
, (u_lgrgp->g.
offt
);

340 ()
	`tf
("\ewloc: %lu\n", (
u_lg
)
gp
->
wloc
);

341 ()
	`tf
("\a_pgno: %lu\n", (
u_lg
)
gp
->
ϡ_pgno
);

342 ()
	`tf
("\n");

343 
	`__os_
(
dbv
, 
gp
);

345 
	}
}

352 
	$__ham_grouoc_42_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

353 
DB_ENV
 *
dbv
;

354 
DBT
 *
db
;

355 
DB_LSN
 *
lp
;

356 
db_cs
 
nud2
;

357 *
nud3
;

359 
__ham_grouoc_42_gs
 *
gp
;

360 
t
;

362 
nud2
 = 
DB_TXN_PRINT
;

363 
nud3
 = 
NULL
;

365 i((
t
 = 
	`__ham_grouoc_42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

366  (
t
);

367 ()
	`tf
(

369 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

370 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

371 (
u_lg
)
gp
->
ty
,

372 (
u_lg
)
gp
->
tx
->
txnid
,

373 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

374 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

375 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

376 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

377 ()
	`tf
("\tt_pgno: %lu\n", (
u_lg
)
gp
->
t_pgno
);

378 ()
	`tf
("\um: %lu\n", (
u_lg
)
gp
->
num
);

379 ()
	`tf
("\t: %lu\n", (
u_lg
)
gp
->

);

380 ()
	`tf
("\n");

381 
	`__os_
(
dbv
, 
gp
);

383 
	}
}

390 
	$__ham_grouoc_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

391 
DB_ENV
 *
dbv
;

392 
DBT
 *
db
;

393 
DB_LSN
 *
lp
;

394 
db_cs
 
nud2
;

395 *
nud3
;

397 
__ham_grouoc_gs
 *
gp
;

398 
t
;

400 
nud2
 = 
DB_TXN_PRINT
;

401 
nud3
 = 
NULL
;

403 i((
t
 = 
	`__ham_grouoc_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

404  (
t
);

405 ()
	`tf
(

407 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

408 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

409 (
u_lg
)
gp
->
ty
,

410 (
u_lg
)
gp
->
tx
->
txnid
,

411 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

412 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

413 ()
	`tf
("\tmeta_lsn: [%lu][%lu]\n",

414 (
u_lg
)
gp
->
ma_l
.
fe
, (u_lgrgp->ma_l.
offt
);

415 ()
	`tf
("\tt_pgno: %lu\n", (
u_lg
)
gp
->
t_pgno
);

416 ()
	`tf
("\um: %lu\n", (
u_lg
)
gp
->
num
);

417 ()
	`tf
("\tunud: %lu\n", (
u_lg
)
gp
->
unud
);

418 ()
	`tf
("\a_pgno: %lu\n", (
u_lg
)
gp
->
ϡ_pgno
);

419 ()
	`tf
("\n");

420 
	`__os_
(
dbv
, 
gp
);

422 
	}
}

429 
	$__ham_cudj_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

430 
DB_ENV
 *
dbv
;

431 
DBT
 *
db
;

432 
DB_LSN
 *
lp
;

433 
db_cs
 
nud2
;

434 *
nud3
;

436 
__ham_cudj_gs
 *
gp
;

437 
t
;

439 
nud2
 = 
DB_TXN_PRINT
;

440 
nud3
 = 
NULL
;

442 i((
t
 = 
	`__ham_cudj_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

443  (
t
);

444 ()
	`tf
(

446 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

447 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

448 (
u_lg
)
gp
->
ty
,

449 (
u_lg
)
gp
->
tx
->
txnid
,

450 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

451 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

452 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

453 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

454 ()
	`tf
("\: %lu\n", (
u_lg
)
gp
->
n
);

455 ()
	`tf
("\tdup_off: %lu\n", (
u_lg
)
gp
->
dup_off
);

456 ()
	`tf
("\dd: %ld\n", ()
gp
->
add
);

457 ()
	`tf
("\tis_dup: %ld\n", ()
gp
->
is_dup
);

458 ()
	`tf
("\td: %lu\n", (
u_lg
)
gp
->
d
);

459 ()
	`tf
("\n");

460 
	`__os_
(
dbv
, 
gp
);

462 
	}
}

469 
	$__ham_chgpg_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

470 
DB_ENV
 *
dbv
;

471 
DBT
 *
db
;

472 
DB_LSN
 *
lp
;

473 
db_cs
 
nud2
;

474 *
nud3
;

476 
__ham_chgpg_gs
 *
gp
;

477 
t
;

479 
nud2
 = 
DB_TXN_PRINT
;

480 
nud3
 = 
NULL
;

482 i((
t
 = 
	`__ham_chgpg_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

483  (
t
);

484 ()
	`tf
(

486 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

487 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

488 (
u_lg
)
gp
->
ty
,

489 (
u_lg
)
gp
->
tx
->
txnid
,

490 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

491 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

492 ()
	`tf
("\tmode: %ld\n", ()
gp
->
mode
);

493 ()
	`tf
("\td_pgno: %lu\n", (
u_lg
)
gp
->
d_pgno
);

494 ()
	`tf
("\ew_pgno: %lu\n", (
u_lg
)
gp
->
w_pgno
);

495 ()
	`tf
("\td_dx: %lu\n", (
u_lg
)
gp
->
d_dx
);

496 ()
	`tf
("\ew_dx: %lu\n", (
u_lg
)
gp
->
w_dx
);

497 ()
	`tf
("\n");

498 
	`__os_
(
dbv
, 
gp
);

500 
	}
}

507 
	$__ham__t
(
dbv
, 
dbp
, 
dbsiz
)

508 
DB_ENV
 *
dbv
;

509 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

510 
size_t
 *
dbsiz
;

512 
t
;

514 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

515 
__ham_sd_t
, 
DB___ham_sd
)) != 0)

516  (
t
);

517 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

518 
__ham_wge_t
, 
DB___ham_wge
)) != 0)

519  (
t
);

520 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

521 
__ham_lda_t
, 
DB___ham_lda
)) != 0)

522  (
t
);

523 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

524 
__ham_a_t
, 
DB___ham_a
)) != 0)

525  (
t
);

526 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

527 
__ham_cyge_t
, 
DB___ham_cyge
)) != 0)

528  (
t
);

529 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

530 
__ham_magroup_t
, 
DB___ham_magroup
)) != 0)

531  (
t
);

532 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

533 
__ham_grouoc_t
, 
DB___ham_grouoc
)) != 0)

534  (
t
);

535 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

536 
__ham_cudj_t
, 
DB___ham_cudj
)) != 0)

537  (
t
);

538 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

539 
__ham_chgpg_t
, 
DB___ham_chgpg
)) != 0)

540  (
t
);

542 
	}
}

	@../hash/hash_conv.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_sw.h
"

14 
	~"dbc/hash.h
"

24 
	$__ham_pg
(
dbv
, 
dummydbp
, 
pg
, 

, 
cook
)

25 
DB_ENV
 *
dbv
;

26 
DB
 *
dummydbp
;

27 
db_pgno_t
 
pg
;

28 *

;

29 
DBT
 *
cook
;

31 
DB_PGINFO
 *
pgfo
;

32 
PAGE
 *
h
;

34 
h
 = 

;

35 
pgfo
 = (
DB_PGINFO
 *)
cook
->
da
;

42 i(
h
->
ty
 !
P_HASHMETA
 && h->
pgno
 =
PGNO_INVALID
) {

43 
	`P_INIT
(

, (
db_dx_t
)
pgfo
->
db_gesize
,

44 
pg
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

48 i(!
	`F_ISSET
(
pgfo
, 
DB_AM_SWAP
))

51  (
h
->
ty
 =
P_HASHMETA
 ? 
	`__ham_msw
(

) :

52 
	`__db_bysw
(
dbv
, 
dummydbp
, 
pg
, 

, 
pgfo
->
db_gesize
, 1));

53 
	}
}

63 
	$__ham_pgout
(
dbv
, 
dummydbp
, 
pg
, 

, 
cook
)

64 
DB_ENV
 *
dbv
;

65 
DB
 *
dummydbp
;

66 
db_pgno_t
 
pg
;

67 *

;

68 
DBT
 *
cook
;

70 
DB_PGINFO
 *
pgfo
;

71 
PAGE
 *
h
;

73 
pgfo
 = (
DB_PGINFO
 *)
cook
->
da
;

74 i(!
	`F_ISSET
(
pgfo
, 
DB_AM_SWAP
))

77 
h
 = 

;

78  (
h
->
ty
 =
P_HASHMETA
 ? 
	`__ham_msw
(

) :

79 
	`__db_bysw
(
dbv
, 
dummydbp
, 
pg
, 

, 
pgfo
->
db_gesize
, 0));

80 
	}
}

89 
	$__ham_msw
(
pg
)

90 *
pg
;

92 
u_t8_t
 *
p
;

93 
i
;

95 
	`__db_masw
(
pg
);

97 
p
 = (
u_t8_t
 *)
pg
 + (
DBMETA
);

99 
	`SWAP32
(
p
);

100 
	`SWAP32
(
p
);

101 
	`SWAP32
(
p
);

102 
	`SWAP32
(
p
);

103 
	`SWAP32
(
p
);

104 
	`SWAP32
(
p
);

105 
i
 = 0; i < 
NCACHED
; ++i)

106 
	`SWAP32
(
p
);

107 
p
 +59 * (
u_t32_t
);

108 
	`SWAP32
(
p
);

110 
	}
}

	@../hash/hash_dup.c

47 
	~"db_cfig.h
"

49 
	~"db_t.h
"

50 
	~"dbc/db_ge.h
"

51 
	~"dbc/hash.h
"

52 
	~"dbc/b.h
"

53 
	~"dbc/mp.h
"

55 
__hamc_chgpg
 
__P
((
DBC
 *,

56 
db_pgno_t
, 
u_t32_t
, db_pgno_t, u_int32_t));

57 
__ham_check_move
 
__P
((
DBC
 *, 
u_t32_t
));

58 
__ham_dcurs
 
__P
((
DBC
 *, 
db_pgno_t
, 
u_t32_t
));

59 
__ham_move_ofage
 
__P
((
DBC
 *, 
PAGE
 *, 
u_t32_t
, 
db_pgno_t
));

77 
	$__ham_add_dup
(
dbc
, 
nv
, 
ags
, 
pgn
)

78 
DBC
 *
dbc
;

79 
DBT
 *
nv
;

80 
u_t32_t
 
ags
;

81 
db_pgno_t
 *
pgn
;

83 
DB
 *
dbp
;

84 
DBT
 
pv
, 
tmp_v
;

85 
DB_ENV
 *
dbv
;

86 
DB_MPOOLFILE
 *
mpf
;

87 
HASH_CURSOR
 *
h
;

88 
u_t32_t
 
add_bys
, 
w_size
;

89 
cmp
, 
t
;

90 
u_t8_t
 *
hk
;

92 
dbp
 = 
dbc
->dbp;

93 
dbv
 = 
dbp
->dbenv;

94 
mpf
 = 
dbp
->mpf;

95 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

97 
	`DB_ASSERT
(
dbv
, 
ags
 !
DB_CURRENT
);

99 
add_bys
 = 
nv
->
size
 +

100 (
	`F_ISSET
(
nv
, 
DB_DBT_PARTIAL
?v->
doff
 : 0);

101 
add_bys
 = 
	`DUP_SIZE
(add_bytes);

103 i((
t
 = 
	`__ham_check_move
(
dbc
, 
add_bys
)) != 0)

104  (
t
);

113 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
);

115 i(
	`HPAGE_PTYPE
(
hk
!
H_DUPLICATE
)

116 
add_bys
 +
	`DUP_SIZE
(0);

117 
w_size
 =

118 
	`LEN_HKEYDATA
(
dbp
, 
h
->
ge
, dbp->
pgsize
, 
	`H_DATAINDEX
(h->
dx
)) +

119 
add_bys
;

126 i(
	`HPAGE_PTYPE
(
hk
!
H_OFFDUP
 &&

127 (
	`HPAGE_PTYPE
(
hk
=
H_OFFPAGE
 || 
	`ISBIG
(
h
, 
w_size
) ||

128 
add_bys
 > 
	`P_FREESPACE
(
dbp
, 
h
->
ge
))) {

130 i((
t
 = 
	`__ham_dup_cvt
(
dbc
)) != 0)

131  (
t
);

132  (
h
->
d
->
	`am_put
(hcp->opd,

133 
NULL
, 
nv
, 
ags
, NULL));

137 i(
	`HPAGE_PTYPE
(
hk
!
H_OFFDUP
) {

138 i(
	`HPAGE_PTYPE
(
hk
!
H_DUPLICATE
) {

139 
pv
.
ags
 = 0;

140 
pv
.
da
 = 
	`HKEYDATA_DATA
(
hk
);

141 
pv
.
size
 = 
	`LEN_HDATA
(
dbp
, 
h
->
ge
, dbp->
pgsize
,

142 
h
->
dx
);

143 i((
t
 = 
	`__ham_make_dup
(
dbv
,

144 &
pv
, &
tmp_v
, &
dbc
->
my_rda
.
da
,

145 &
dbc
->
my_rda
.
un
)!0 || (
t
 =

146 
	`__ham_
(
dbc
, &
tmp_v
, 1)) != 0)

147  (
t
);

148 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
);

149 
	`HPAGE_PTYPE
(
hk

H_DUPLICATE
;

155 
	`F_SET
(
h
, 
H_ISDUP
);

156 
h
->
dup_off
 = 0;

157 
h
->
dup_n
 = 
pv
.
size
;

158 
h
->
dup_
 = 
	`DUP_SIZE
(h->
dup_n
);

162 i((
t
 = 
	`__ham_make_dup
(
dbv
, 
nv
,

163 &
tmp_v
, &
dbc
->
my_rda
.
da
, &dbc->my_rda.
un
)) != 0)

164  (
t
);

166 
tmp_v
.
dn
 = 0;

167 
ags
) {

168 
DB_KEYFIRST
:

169 
DB_KEYLAST
:

170 
DB_NODUPDATA
:

171 i(
dbp
->
dup_com
 !
NULL
) {

172 
	`__ham_dch
(
dbc
,

173 
nv
, &
tmp_v
.
doff
, &
cmp
, 
ags
);

176 i(
cmp
 == 0)

177  (
	`__db_du
(
dbp
, 
ags
));

179 
h
->
dup_
 = 
	`LEN_HDATA
(
dbp
, h->
ge
,

180 
dbp
->
pgsize
, 
h
->
dx
);

181 
h
->
dup_n
 = 
nv
->
size
;

182 
	`F_SET
(
h
, 
H_ISDUP
);

183 i(
ags
 =
DB_KEYFIRST
)

184 
h
->
dup_off
 = 
tmp_v
.
doff
 = 0;

186 
h
->
dup_off
 =

187 
tmp_v
.
doff
 = 
h
->
dup_
;

190 
DB_BEFORE
:

191 
tmp_v
.
doff
 = 
h
->
dup_off
;

193 
DB_AFTER
:

194 
tmp_v
.
doff
 = 
h
->
dup_off
 + 
	`DUP_SIZE
(h->
dup_n
);

197  (
	`__db_unknown_th
(
dbv
, "__ham_add_dup"));

201 i((
t
 = 
	`__memp_dty
(
mpf
,

202 &
h
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0 ||

203 (
t
 = 
	`__ham_
(
dbc
, &
tmp_v
, 0)) != 0)

204  (
t
);

207 
ags
) {

208 
DB_AFTER
:

209 
h
->
dup_off
 +
	`DUP_SIZE
(h->
dup_n
);

210 
h
->
dup_n
 = 
nv
->
size
;

211 
h
->
dup_
 +(
db_dx_t
)
	`DUP_SIZE
(
nv
->
size
);

213 
DB_BEFORE
:

214 
DB_KEYFIRST
:

215 
DB_KEYLAST
:

216 
DB_NODUPDATA
:

217 
h
->
dup_
 +(
db_dx_t
)
	`DUP_SIZE
(
nv
->
size
);

218 
h
->
dup_n
 = 
nv
->
size
;

221  (
	`__db_unknown_th
(
dbv
, "__ham_add_dup"));

223 
t
 = 
	`__hamc_upde
(
dbc
, 
tmp_v
.
size
, 
DB_HAM_CURADJ_ADD
, 1);

224  (
t
);

231 
	`memy
(
pgn
, 
	`HOFFDUP_PGNO
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
)),

232 (
db_pgno_t
));

234  (
t
);

235 
	}
}

243 
	$__ham_dup_cvt
(
dbc
)

244 
DBC
 *
dbc
;

246 
BOVERFLOW
 
bo
;

247 
DB
 *
dbp
;

248 
DBC
 **
hcs
;

249 
DBT
 
dbt
;

250 
DB_ENV
 *
dbv
;

251 
DB_LSN
 
l
;

252 
DB_MPOOLFILE
 *
mpf
;

253 
HASH_CURSOR
 *
h
;

254 
HOFFPAGE
 
ho
;

255 
PAGE
 *
dp
;

256 
db_dx_t
 
i
, 
n
, 
off
;

257 
c
, 
t
, 
t_t
;

258 
u_t8_t
 *
p
, *
nd
;

260 
dbp
 = 
dbc
->dbp;

261 
dbv
 = 
dbp
->dbenv;

262 
mpf
 = 
dbp
->mpf;

263 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

268 i((
t
 = 
	`__db_w
(
dbc
,

269 
dbp
->
dup_com
 =
NULL
 ? 
P_LRECNO
 : 
P_LDUP
, &
dp
)) != 0)

270  (
t
);

271 
	`P_INIT
(
dp
, 
dbp
->
pgsize
,

272 
dp
->
pgno
, 
PGNO_INVALID
, PGNO_INVALID, 
LEAFLEVEL
, 
	`TYPE
(dp));

277 i((
t
 = 
	`__ham_g_i
(
dbp
,

278 
	`PGNO
(
h
->
ge
), (
u_t32_t
)h->
dx
, &
hcs
)) != 0)

279 
r
;

284 
dbt
.
ags
 = 0;

285 
	`HPAGE_PTYPE
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
))) {

286 
H_KEYDATA
:

288 
dbt
.
size
 = 
	`LEN_HDATA
(
dbp
, 
h
->
ge
, dbp->
pgsize
, h->
dx
);

289 
dbt
.
da
 = 
	`HKEYDATA_DATA
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
));

290 
t
 = 
	`__db_pem
(
dbc
,

291 
dp
, 0, 
	`BKEYDATA_SIZE
(
dbt
.
size
), 
NULL
, &dbt);

292 
fish
;

293 
H_OFFPAGE
:

295 
	`memy
(&
ho
, 
	`P_ENTRY
(
dbp
, 
h
->
ge
, 
	`H_DATAINDEX
(h->
dx
)),

296 
HOFFPAGE_SIZE
);

297 
	`UMRW_SET
(
bo
.
unud1
);

298 
	`B_TSET
(
bo
.
ty
, 
ho
.type);

299 
	`UMRW_SET
(
bo
.
unud2
);

300 
bo
.
pgno
 = 
ho
.pgno;

301 
bo
.

 = 
ho
.tlen;

302 
dbt
.
size
 = 
BOVERFLOW_SIZE
;

303 
dbt
.
da
 = &
bo
;

305 
t
 = 
	`__db_pem
(
dbc
, 
dp
, 0, 
dbt
.
size
, &dbt, 
NULL
);

306 
fish
: i(
t
 == 0) {

308 i(
hcs
 !
NULL
 && 
	`DBC_LOGGING
(
dbc
) &&

309 
	`IS_SUBTRANSACTION
(
dbc
->
txn
)) {

310 i((
t
 = 
	`__ham_chgpg_log
(
dbp
, 
dbc
->
txn
,

311 &
l
, 0, 
DB_HAM_DUP
, 
	`PGNO
(
h
->
ge
),

312 
	`PGNO
(
dp
), 
h
->
dx
, 0)) != 0)

315 
c
 = 0; 
hcs
 !
NULL
 && hcs[c] != NULL; c++)

316 i((
t
 = 
	`__ham_dcurs
(
hcs
[
c
],

317 
	`PGNO
(
dp
), 0)) != 0)

321 
H_DUPLICATE
:

322 
p
 = 
	`HKEYDATA_DATA
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
));

323 
nd
 = 
p
 +

324 
	`LEN_HDATA
(
dbp
, 
h
->
ge
, dbp->
pgsize
, h->
dx
);

333 
off
 = 0, 
i
 = 0; 
p
 < 
nd
; i++) {

334 
	`memy
(&
n
, 
p
, (
db_dx_t
));

335 
dbt
.
size
 = 
n
;

336 
p
 +(
db_dx_t
);

337 
dbt
.
da
 = 
p
;

338 
p
 +
n
 + (
db_dx_t
);

339 i((
t
 = 
	`__db_pem
(
dbc
, 
dp
,

340 
i
, 
	`BKEYDATA_SIZE
(
dbt
.
size
), 
NULL
, &dbt)) != 0)

344 i(
hcs
 !
NULL
 && 
	`DBC_LOGGING
(
dbc
) &&

345 
	`IS_SUBTRANSACTION
(
dbc
->
txn
)) {

346 i((
t
 = 
	`__ham_chgpg_log
(
dbp
, 
dbc
->
txn
,

347 &
l
, 0, 
DB_HAM_DUP
, 
	`PGNO
(
h
->
ge
),

348 
	`PGNO
(
dp
), 
h
->
dx
, 
i
)) != 0)

351 
c
 = 0; 
hcs
 !
NULL
 && hcs[c] != NULL; c++)

352 i(((
HASH_CURSOR
 *)(
hcs
[
c
]->

))->
dup_off


353 =
off
 && (
t
 = 
	`__ham_dcurs
(
hcs
[
c
],

354 
	`PGNO
(
dp
), 
i
)) != 0)

355 
r
;

356 
off
 +
n
 + 2 * (
db_dx_t
);

360 
t
 = 
	`__db_pgfmt
(
dbv
, 
h
->
pgno
);

368 i(
t
 == 0)

369 
t
 = 
	`__memp_dty
(
mpf
,

370 &
h
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0);

372 i(
t
 == 0)

373 
t
 = 
	`__ham_move_ofage
(
dbc
, 
h
->
ge
,

374 (
u_t32_t
)
	`H_DATAINDEX
(
h
->
dx
), 
	`PGNO
(
dp
));

376 
r
: i((
t_t
 = 
	`__memp_ut
(
mpf
, 
dp
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

377 
t
 = 
t_t
;

379 i(
t
 == 0)

380 
h
->
dup_
 = h->
dup_off
 = h->
dup_n
 = 0;

382 i(
hcs
 !
NULL
)

383 
	`__os_
(
dbv
, 
hcs
);

385  (
t
);

386 
	}
}

399 
	$__ham_make_dup
(
dbv
, 
ndup
, 
dui
, 
bu
, 
siz
)

400 
DB_ENV
 *
dbv
;

401 cڡ 
DBT
 *
ndup
;

402 
DBT
 *
dui
;

403 **
bu
;

404 
u_t32_t
 *
siz
;

406 
db_dx_t
 
tsize
, 
em_size
;

407 
t
;

408 
u_t8_t
 *
p
;

410 
em_size
 = (
db_dx_t
)
ndup
->
size
;

411 i(
	`F_ISSET
(
ndup
, 
DB_DBT_PARTIAL
))

412 
em_size
 +
ndup
->
doff
;

414 
tsize
 = 
	`DUP_SIZE
(
em_size
);

415 i((
t
 = 
	`__ham__dbt
(
dbv
, 
dui
, 
tsize
, 
bu
, 
siz
)) != 0)

416  (
t
);

418 
dui
->
dn
 = 0;

419 
dui
->
ags
 = 
ndup
->flags;

420 
	`F_SET
(
dui
, 
DB_DBT_PARTIAL
);

422 
p
 = 
dui
->
da
;

423 
	`memy
(
p
, &
em_size
, (
db_dx_t
));

424 
p
 +(
db_dx_t
);

425 i(
	`F_ISSET
(
ndup
, 
DB_DBT_PARTIAL
)) {

426 
	`memt
(
p
, 0, 
ndup
->
doff
);

427 
p
 +
ndup
->
doff
;

429 
	`memy
(
p
, 
ndup
->
da
,dup->
size
);

430 
p
 +
ndup
->
size
;

431 
	`memy
(
p
, &
em_size
, (
db_dx_t
));

433 
dui
->
doff
 = 0;

434 
dui
->
dn
 = 
ndup
->
size
;

437 
	}
}

446 
	$__ham_check_move
(
dbc
, 
add_n
)

447 
DBC
 *
dbc
;

448 
u_t32_t
 
add_n
;

450 
DB
 *
dbp
;

451 
DBT
 
k
, 
d
;

452 
DB_LSN
 
w_l
;

453 
DB_MPOOLFILE
 *
mpf
;

454 
HASH_CURSOR
 *
h
;

455 
PAGE
 *
xt_g
;

456 
db_pgno_t
 
xt_pgno
;

457 
u_t32_t
 
w_d
, 
d_n
, 
y
;

458 
db_dx_t
 
w_dx
;

459 
u_t8_t
 *
hk
;

460 
key_ty
, 
mch
, 
t
, 
t_t
;

462 
dbp
 = 
dbc
->dbp;

463 
mpf
 = 
dbp
->mpf;

464 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

466 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
);

472 i(
	`HPAGE_PTYPE
(
hk
=
H_OFFDUP
 || HPAGE_PTYPE(hk=
H_OFFPAGE
)

475 
d_n
 =

476 
	`LEN_HITEM
(
dbp
, 
h
->
ge
, dbp->
pgsize
, 
	`H_DATAINDEX
(h->
dx
));

477 
w_d
 = (
d_n
 - 
	`HKEYDATA_SIZE
(0)+ 
add_n
;

478 i(
	`HPAGE_PTYPE
(
hk
!
H_DUPLICATE
)

479 
w_d
 +
	`DUP_SIZE
(0);

489 i(
	`ISBIG
(
h
, 
w_d
&& (
d_n
 > 
HOFFDUP_SIZE
 ||

490 
HOFFDUP_SIZE
 - 
d_n
 <
	`P_FREESPACE
(
dbp
, 
h
->
ge
)))

493 i(!
	`ISBIG
(
h
, 
w_d
) &&

494 (
w_d
 - 
d_n
<
	`P_FREESPACE
(
dbp
, 
h
->
ge
))

504 
w_d
 = 
	`ISBIG
(
h
,ew_datalen) ?

505 
HOFFDUP_SIZE
 : 
	`HKEYDATA_SIZE
(
w_d
);

506 
w_d
 +=

507 
	`LEN_HITEM
(
dbp
, 
h
->
ge
, dbp->
pgsize
, 
	`H_KEYINDEX
(h->
dx
));

509 
xt_g
 = 
NULL
;

510 
xt_pgno
 = 
	`NEXT_PGNO
(
h
->
ge
);ext_pgn!
PGNO_INVALID
;

511 
xt_pgno
 = 
	`NEXT_PGNO
(
xt_g
)) {

512 i(
xt_g
 !
NULL
 &&

513 (
t
 = 
	`__memp_ut
(
mpf
, 
xt_g
, 
dbc
->
iܙy
)) != 0)

514  (
t
);

516 i((
t
 = 
	`__memp_fg
(
mpf
, &
xt_pgno
, 
dbc
->
txn
,

517 
DB_MPOOL_CREATE
, &
xt_g
)) != 0)

518  (
t
);

520 i(
	`P_FREESPACE
(
dbp
, 
xt_g
>
w_d
)

525 i((
t
 = 
	`__memp_dty
(
mpf
,

526 &
h
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

527  (
t
);

529 i(
xt_g
 =
NULL
 && (
t
 = 
	`__ham_add_ovge
(
dbc
,

530 
h
->
ge
, 0, &
xt_g
)) != 0)

531  (
t
);

534 i((
t
 = 
	`__memp_dty
(
mpf
,

535 &
xt_g
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0) {

536 ()
	`__memp_ut
(
mpf
, 
xt_g
, 
dbc
->
iܙy
);

537  (
t
);

540 i(
	`P_FREESPACE
(
dbp
, 
xt_g
< 
w_d
 && (
t
 =

541 
	`__ham_add_ovge
(
dbc
, 
xt_g
, 1, &next_pagep)) != 0) {

542 ()
	`__memp_ut
(
mpf
, 
xt_g
, 
dbc
->
iܙy
);

543  (
t
);

547 i(
	`DBC_LOGGING
(
dbc
)) {

548 
y
 = 
PUTPAIR
;

549 
k
.
ags
 = 0;

550 
d
.
ags
 = 0;

551 i(
	`HPAGE_PTYPE
(

552 
	`H_PAIRKEY
(
dbp
, 
h
->
ge
, h->
dx
)=
H_OFFPAGE
) {

553 
y
 |
PAIR_KEYMASK
;

554 
k
.
da
 = 
	`H_PAIRKEY
(
dbp
, 
h
->
ge
, h->
dx
);

555 
k
.
size
 = 
HOFFPAGE_SIZE
;

556 
key_ty
 = 
H_OFFPAGE
;

558 
k
.
da
 =

559 
	`HKEYDATA_DATA
(
	`H_PAIRKEY
(
dbp
, 
h
->
ge
, h->
dx
));

560 
k
.
size
 =

561 
	`LEN_HKEY
(
dbp
, 
h
->
ge
, dbp->
pgsize
, h->
dx
);

562 
key_ty
 = 
H_KEYDATA
;

566 i((
t
 = 
	`__ham_gdex
(
dbp
, 
dbc
->
txn
, 
xt_g
, &
k
,

567 
key_ty
, &
mch
, &
w_dx
)) != 0)

568  (
t
);

570 i(
	`HPAGE_PTYPE
(
hk
=
H_OFFPAGE
) {

571 
y
 |
PAIR_DATAMASK
;

572 
d
.
da
 = 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
);

573 
d
.
size
 = 
HOFFPAGE_SIZE
;

575 i(
	`HPAGE_PTYPE
(
	`H_PAIRDATA
(
dbp
,

576 
h
->
ge
, h->
dx
)=
H_DUPLICATE
)

577 
y
 |
PAIR_DUPMASK
;

578 
d
.
da
 = 
	`HKEYDATA_DATA
(

579 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
));

580 
d
.
size
 = 
	`LEN_HDATA
(
dbp
, 
h
->
ge
,

581 
dbp
->
pgsize
, 
h
->
dx
);

584 i((
t
 = 
	`__ham_sd_log
(
dbp
,

585 
dbc
->
txn
, &
w_l
, 0, 
y
, 
	`PGNO
(
xt_g
),

586 (
u_t32_t
)
w_dx
, &
	`LSN
(
xt_g
),

587 &
k
, &
d
)) != 0) {

588 ()
	`__memp_ut
(
mpf
, 
xt_g
, 
dbc
->
iܙy
);

589  (
t
);

592 
	`LSN_NOT_LOGGED
(
w_l
);

600 
w_dx
 = 
NDX_INVALID
;

604 i((
t
 = 
	`__memp_dty
(
mpf
,

605 &
xt_g
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0) {

606 ()
	`__memp_ut
(
mpf
, 
xt_g
, 
dbc
->
iܙy
);

607  (
t
);

609 
	`LSN
(
xt_g

w_l
;

611 i((
t
 = 
	`__ham_cy
(
dbp
, 
dbc
->
txn
, 
h
->
ge
,

612 
	`H_KEYINDEX
(
h
->
dx
), 
xt_g
, &
w_dx
)) != 0)

613 
out
;

616 i((
t
 = 
	`__hamc_chgpg
(
dbc
, 
	`PGNO
(
h
->
ge
), 
	`H_KEYINDEX
(h->
dx
),

617 
	`PGNO
(
xt_g
), 
w_dx
)) != 0)

618 
out
;

621 
t
 = 
	`__ham_d_
(
dbc
, 
HAM_DEL_NO_RECLAIM
);

633 i(!
	`STD_LOCKING
(
dbc
))

634 
h
->
hdr
->
m
++;

636 
out
: i((
t_t
 =

637 
	`__memp_ut
(
mpf
, 
h
->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

638 
t
 = 
t_t
;

639 
h
->
ge
 = 
xt_g
;

640 
h
->
pgno
 = 
	`PGNO
(h->
ge
);

641 
h
->
dx
 = 
w_dx
;

642 
	`F_SET
(
h
, 
H_EXPAND
);

643 
	`F_CLR
(
h
, 
H_DELETED
);

645  (
t
);

646 
	}
}

659 
	$__ham_move_ofage
(
dbc
, 
g
, 
ndx
, 
pgno
)

660 
DBC
 *
dbc
;

661 
PAGE
 *
g
;

662 
u_t32_t
 
ndx
;

663 
db_pgno_t
 
pgno
;

665 
DB
 *
dbp
;

666 
DBT
 
w_dbt
;

667 
DBT
 
d_dbt
;

668 
HOFFDUP
 
od
;

669 
db_dx_t
 
i
, *
p
;

670 
t32_t
 
dif
;

671 
u_t8_t
 *
c
;

672 
t
;

674 
dbp
 = 
dbc
->dbp;

675 
od
.
ty
 = 
H_OFFDUP
;

676 
	`UMRW_SET
(
od
.
unud
[0]);

677 
	`UMRW_SET
(
od
.
unud
[1]);

678 
	`UMRW_SET
(
od
.
unud
[2]);

679 
od
.
pgno
 =gno;

680 
t
 = 0;

682 i(
	`DBC_LOGGING
(
dbc
)) {

683 
w_dbt
.
da
 = &
od
;

684 
w_dbt
.
size
 = 
HOFFDUP_SIZE
;

685 
d_dbt
.
da
 = 
	`P_ENTRY
(
dbp
, 
g
, 
ndx
);

686 
d_dbt
.
size
 = 
	`LEN_HITEM
(
dbp
, 
g
, dbp->
pgsize
, 
ndx
);

687 i((
t
 = 
	`__ham_a_log
(
dbp
, 
dbc
->
txn
, &
	`LSN
(
g
), 0,

688 
	`PGNO
(
g
), (
u_t32_t
)
ndx
, &
	`LSN
(pagep), -1,

689 &
d_dbt
, &
w_dbt
, 0)) != 0)

690  (
t
);

692 
	`LSN_NOT_LOGGED
(
	`LSN
(
g
));

699 
dif
 =

700 (
t32_t
)
	`LEN_HITEM
(
dbp
, 
g
, dbp->
pgsize
, 
ndx
) -

701 (
t32_t
)
HOFFDUP_SIZE
;

702 i(
dif
 != 0) {

704 
p
 = 
	`P_INP
(
dbp
, 
g
);

705 
c
 = (
u_t8_t
 *)(
g
+ 
	`HOFFSET
(pagep);

706 
	`memmove
(
c
 + 
dif
, src, 
p
[
ndx
] - 
	`HOFFSET
(
g
));

707 
	`HOFFSET
(
g
+
dif
;

710 
i
 = 
ndx
; i < 
	`NUM_ENT
(
g
); i++)

711 
p
[
i
] +
dif
;

715 
	`memy
(
	`P_ENTRY
(
dbp
, 
g
, 
ndx
), &
od
, 
HOFFDUP_SIZE
);

716  (
t
);

717 
	}
}

728 
	$__ham_dch
(
dbc
, 
dbt
, 
of
, 
cm
, 
ags
)

729 
DBC
 *
dbc
;

730 
DBT
 *
dbt
;

731 
u_t32_t
 *
of
, 
ags
;

732 *
cm
;

734 
DB
 *
dbp
;

735 
HASH_CURSOR
 *
h
;

736 
DBT
 
cur
;

737 
db_dx_t
 
i
, 
n
;

738 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

739 
u_t8_t
 *
da
;

741 
dbp
 = 
dbc
->dbp;

742 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

743 
func
 = 
dbp
->
dup_com
 =
NULL
 ? 
__bam_defcmp
 : dbp->dup_compare;

745 
i
 = 
	`F_ISSET
(
h
, 
H_CONTINUE
? h->
dup_off
: 0;

746 
da
 = 
	`HKEYDATA_DATA
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
)+ 
i
;

747 
h
->
dup_
 = 
	`LEN_HDATA
(
dbp
, h->
ge
, dbp->
pgsize
, h->
dx
);

748 
n
 = 
h
->
dup_n
;

749 
i
 < 
h
->
dup_
) {

750 
	`memy
(&
n
, 
da
, (
db_dx_t
));

751 
da
 +(
db_dx_t
);

752 
	`DB_SET_DBT
(
cur
, 
da
, 
n
);

760 *
cm
 = 
	`func
(
dbp
, 
dbt
, &
cur
);

761 i(*
cm
 == 0)

763 i(*
cm
 < 0 && 
dbp
->
dup_com
 !
NULL
) {

764 i(
ags
 =
DB_GET_BOTH_RANGE
)

765 *
cm
 = 0;

769 
i
 +
n
 + 2 * (
db_dx_t
);

770 
da
 +
n
 + (
db_dx_t
);

773 *
of
 = 
i
;

774 
h
->
dup_off
 = 
i
;

775 
h
->
dup_n
 = 
n
;

776 
	`F_SET
(
h
, 
H_ISDUP
);

777 
	}
}

785 
	$__ham_dcurs
(
dbc
, 
pgno
, 
dx
)

786 
DBC
 *
dbc
;

787 
db_pgno_t
 
pgno
;

788 
u_t32_t
 
dx
;

790 
DB
 *
dbp
;

791 
HASH_CURSOR
 *
h
;

792 
BTREE_CURSOR
 *
d
;

793 
t
;

795 
dbp
 = 
dbc
->dbp;

796 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

798 i((
t
 = 
	`__dbc_wd
(
dbc
, 
pgno
, 
h
->
d
, &hcp->opd)) != 0)

799  (
t
);

801 
d
 = (
BTREE_CURSOR
 *)
h
->
d
->

;

802 
d
->
pgno
 =gno;

803 
d
->
dx
 = indx;

805 i(
dbp
->
dup_com
 =
NULL
) {

811 
d
->
o
 = 
dx
 + 1;

818 i(
	`F_ISSET
(
h
, 
H_DELETED
)) {

819 
	`F_SET
(
d
, 
C_DELETED
);

820 
	`F_CLR
(
h
, 
H_DELETED
);

824 
	}
}

836 
	$__hamc_chgpg
(
dbc
, 
d_pgno
, 
d_dex
, 
w_pgno
, 
w_dex
)

837 
DBC
 *
dbc
;

838 
db_pgno_t
 
d_pgno
, 
w_pgno
;

839 
u_t32_t
 
d_dex
, 
w_dex
;

841 
DB
 *
dbp
, *
ldbp
;

842 
DB_ENV
 *
dbv
;

843 
DB_LSN
 
l
;

844 
DB_TXN
 *
my_txn
;

845 
DBC
 *

;

846 
HASH_CURSOR
 *
h
;

847 
found
, 
t
;

849 
dbp
 = 
dbc
->dbp;

850 
dbv
 = 
dbp
->dbenv;

852 
my_txn
 = 
	`IS_SUBTRANSACTION
(
dbc
->
txn
? dbc->tx: 
NULL
;

854 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

855 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

856 
found
 = 0;

857 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

858 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

859 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

860 
	`TAILQ_FOREACH
(

, &
ldbp
->
aive_queue
, 
lks
) {

861 i(

 =
dbc
 || cp->
dbty
 !
DB_HASH
)

864 
h
 = (
HASH_CURSOR
 *)

->

;

871 i(
	`F_ISSET
(
h
, 
H_DELETED
))

874 i(
h
->
pgno
 =
d_pgno
 &&

875 !
	`MVCC_SKIP_CURADJ
(

, 
d_pgno
)) {

876 i(
h
->
dx
 =
d_dex
) {

877 
h
->
pgno
 = 
w_pgno
;

878 
h
->
dx
 = 
w_dex
;

881 i(
my_txn
 !
NULL
 && 

->
txn
 != my_txn)

882 
found
 = 1;

885 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

887 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

889 i(
found
 !0 && 
	`DBC_LOGGING
(
dbc
)) {

890 i((
t
 = 
	`__ham_chgpg_log
(
dbp
, 
my_txn
, &
l
, 0, 
DB_HAM_CHGPG
,

891 
d_pgno
, 
w_pgno
, 
d_dex
, 
w_dex
)) != 0)

892  (
t
);

895 
	}
}

	@../hash/hash_func.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/hash.h
"

56 
	#DCHARHASH
(
h
, 
c
((h0x63c63cd9*(h+ 0x9c39c33d + (c))

	)

58 
u_t32_t


59 
	$__ham_func2
(
dbp
, 
key
, 
n
)

60 
DB
 *
dbp
;

61 cڡ *
key
;

62 
u_t32_t
 
n
;

64 cڡ 
u_t8_t
 *
e
, *
k
;

65 
u_t32_t
 
h
;

66 
u_t8_t
 
c
;

68 i(
dbp
 !
NULL
)

69 
	`COMPQUIET
(
dbp
, 
NULL
);

71 
k
 = 
key
;

72 
e
 = 
k
 + 
n
;

73 
h
 = 0; 
k
 !
e
;) {

74 
c
 = *
k
++;

75 i(!
c
 && 
k
 > 
e
)

77 
	`DCHARHASH
(
h
, 
c
);

79  (
h
);

80 
	}
}

93 
u_t32_t


94 
	$__ham_func3
(
dbp
, 
key
, 
n
)

95 
DB
 *
dbp
;

96 cڡ *
key
;

97 
u_t32_t
 
n
;

99 cڡ 
u_t8_t
 *
k
;

100 
u_t32_t
 
n
, 
lo
;

102 i(
dbp
 !
NULL
)

103 
	`COMPQUIET
(
dbp
, 
NULL
);

105 i(
n
 == 0)

108 
	#HASHC
 
n
 = *
k
++ + 65599 * 
	)
n

109 
n
 = 0;

110 
k
 = 
key
;

112 
lo
 = (
n
 + 8 - 1) >> 3;

113 
n
 & (8 - 1)) {

116 
HASHC
;

118 
HASHC
;

120 
HASHC
;

122 
HASHC
;

124 
HASHC
;

126 
HASHC
;

128 
HASHC
;

130 
HASHC
;

131 } --
lo
);

133  (
n
);

134 
	}
}

144 
u_t32_t


145 
	$__ham_func4
(
dbp
, 
key
, 
n
)

146 
DB
 *
dbp
;

147 cڡ *
key
;

148 
u_t32_t
 
n
;

150 cڡ 
u_t8_t
 *
k
;

151 
u_t32_t
 
h
, 
lo
;

153 i(
dbp
 !
NULL
)

154 
	`COMPQUIET
(
dbp
, 
NULL
);

156 i(
n
 == 0)

159 
	#HASH4a
 
h
 = (h << 5- h + *
k
++;

	)

160 
	#HASH4b
 
h
 = (h << 5+ h + *
k
++;

	)

161 
	#HASH4
 
HASH4b


	)

162 
h
 = 0;

163 
k
 = 
key
;

165 
lo
 = (
n
 + 8 - 1) >> 3;

166 
n
 & (8 - 1)) {

169 
HASH4
;

171 
HASH4
;

173 
HASH4
;

175 
HASH4
;

177 
HASH4
;

179 
HASH4
;

181 
HASH4
;

183 
HASH4
;

184 } --
lo
);

186  (
h
);

187 
	}
}

205 
u_t32_t


206 
	$__ham_func5
(
dbp
, 
key
, 
n
)

207 
DB
 *
dbp
;

208 cڡ *
key
;

209 
u_t32_t
 
n
;

211 cڡ 
u_t8_t
 *
k
, *
e
;

212 
u_t32_t
 
h
;

214 i(
dbp
 !
NULL
)

215 
	`COMPQUIET
(
dbp
, 
NULL
);

217 
k
 = 
key
;

218 
e
 = 
k
 + 
n
;

219 
h
 = 0; 
k
 < 
e
; ++k) {

220 
h
 *= 16777619;

221 
h
 ^*
k
;

223  (
h
);

224 
	}
}

231 
u_t32_t


232 
	$__ham_
(
dbp
, 
key
, 
n
)

233 
DB
 *
dbp
;

234 cڡ *
key
;

235 
u_t32_t
 
n
;

237 
	`COMPQUIET
(
dbp
, 
NULL
);

238 
	`COMPQUIET
(
n
, 0);

239  ((
u_t32_t
)*(*)
key
);

240 
	}
}

	@../hash/hash_meta.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/hash.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/mp.h
"

23 
	$__ham_g_ma
(
dbc
)

24 
DBC
 *
dbc
;

26 
DB
 *
dbp
;

27 
DB_MPOOLFILE
 *
mpf
;

28 
HASH
 *
hashp
;

29 
HASH_CURSOR
 *
h
;

30 
t
;

32 
dbp
 = 
dbc
->dbp;

33 
mpf
 = 
dbp
->mpf;

34 
hashp
 = 
dbp
->
h_
;

35 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

37 i((
t
 = 
	`__db_lg
(
dbc
, 0,

38 
hashp
->
ma_pgno
, 
DB_LOCK_READ
, 0, &
h
->
hlock
)) != 0)

39  (
t
);

41 i((
t
 = 
	`__memp_fg
(
mpf
, &
hashp
->
ma_pgno
, 
dbc
->
txn
,

42 
DB_MPOOL_CREATE
, &
h
->
hdr
)) != 0)

43 ()
	`__LPUT
(
dbc
, 
h
->
hlock
);

45  (
t
);

46 
	}
}

54 
	$__ham_a_ma
(
dbc
)

55 
DBC
 *
dbc
;

57 
DB_MPOOLFILE
 *
mpf
;

58 
HASH_CURSOR
 *
h
;

59 
t
;

61 
mpf
 = 
dbc
->
dbp
->mpf;

62 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

64 i(
h
->
hdr
 !
NULL
) {

65 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
->
hdr
, 
dbc
->
iܙy
)) != 0)

66  (
t
);

67 
h
->
hdr
 = 
NULL
;

70  (
	`__TLPUT
(
dbc
, 
h
->
hlock
));

71 
	}
}

79 
	$__ham_dty_ma
(
dbc
, 
ags
)

80 
DBC
 *
dbc
;

81 
u_t32_t
 
ags
;

83 
DB
 *
dbp
;

84 
HASH
 *
hashp
;

85 
HASH_CURSOR
 *
h
;

86 
t
;

88 
dbp
 = 
dbc
->dbp;

89 
hashp
 = 
dbp
->
h_
;

90 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

92 i((
t
 = 
	`__db_lg
(
dbc
, 
LCK_COUPLE
,

93 
hashp
->
ma_pgno
, 
DB_LOCK_WRITE
, 0, &
h
->
hlock
)) != 0)

94  (
t
);

96  (
	`__memp_dty
(
dbp
->
mpf
,

97 &
h
->
hdr
, 
dbc
->
txn
, dbc->
iܙy
, 
ags
));

98 
	}
}

	@../hash/hash_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/hash.h
"

15 
__ham_t_h_f
 
__P
((
DB
 *, 
u_t32_t
));

16 
__ham_t_h_hash


17 
__P
((
DB
 *, 
	$u_t32_t
(*)(
DB
 *, cڡ *, 
u_t32_t
)));

18 
__ham_t_h_m
 
	`__P
((
DB
 *, 
u_t32_t
));

27 
	$__ham_db_
(
dbp
)

28 
DB
 *
dbp
;

30 
HASH
 *
hashp
;

31 
t
;

33 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
,

34 (
HASH
), &
dbp
->
h_
)) != 0)

35  (
t
);

37 
hashp
 = 
dbp
->
h_
;

39 
hashp
->
h_m
 = 0;

40 
hashp
->
h_f
 = 0;

41 
hashp
->
h_hash
 = 
NULL
;

42 
hashp
->
h_com
 = 
NULL
;

44 
dbp
->
g_h_f
 = 
__ham_g_h_f
;

45 
dbp
->
t_h_f
 = 
__ham_t_h_f
;

46 
dbp
->
t_h_hash
 = 
__ham_t_h_hash
;

47 
dbp
->
t_h_com
 = 
__ham_t_h_com
;

48 
dbp
->
g_h_m
 = 
__ham_g_h_m
;

49 
dbp
->
t_h_m
 = 
__ham_t_h_m
;

52 
	}
}

58 
	$__ham_db_o
(
dbp
)

59 
DB
 *
dbp
;

61 i(
dbp
->
h_
 =
NULL
)

63 
	`__os_
(
dbp
->
dbv
, dbp->
h_
);

64 
dbp
->
h_
 = 
NULL
;

66 
	}
}

74 
	$__ham_g_h_f
(
dbp
, 
h_fp
)

75 
DB
 *
dbp
;

76 
u_t32_t
 *
h_fp
;

78 
HASH
 *
hashp
;

80 
hashp
 = 
dbp
->
h_
;

81 *
h_fp
 = 
hashp
->
h_f
;

83 
	}
}

90 
	$__ham_t_h_f
(
dbp
, 
h_f
)

91 
DB
 *
dbp
;

92 
u_t32_t
 
h_f
;

94 
HASH
 *
hashp
;

96 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_h_ffactor");

97 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_HASH
);

99 
hashp
 = 
dbp
->
h_
;

100 
hashp
->
h_f
 = h_ffactor;

102 
	}
}

109 
	$__ham_t_h_hash
(
dbp
, 
func
)

110 
DB
 *
dbp
;

111 
	$u_t32_t
 (*
func

	`__P
((
DB
 *, cڡ *, 
u_t32_t
));

113 
HASH
 *
hashp
;

115 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_h_hash");

116 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_HASH
);

118 
hashp
 = 
dbp
->
h_
;

119 
hashp
->
h_hash
 = 
func
;

121 
	}
}

131 
	$__ham_t_h_com
(
dbp
, 
func
)

132 
DB
 *
dbp
;

133 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

135 
HASH
 *
t
;

137 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_h_compare");

138 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_HASH
);

140 
t
 = 
dbp
->
h_
;

142 
t
->
h_com
 = 
func
;

145 
	}
}

153 
	$__ham_g_h_m
(
dbp
, 
h_mp
)

154 
DB
 *
dbp
;

155 
u_t32_t
 *
h_mp
;

157 
HASH
 *
hashp
;

159 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_HASH
);

161 
hashp
 = 
dbp
->
h_
;

162 *
h_mp
 = 
hashp
->
h_m
;

164 
	}
}

171 
	$__ham_t_h_m
(
dbp
, 
h_m
)

172 
DB
 *
dbp
;

173 
u_t32_t
 
h_m
;

175 
HASH
 *
hashp
;

177 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_h_nelem");

178 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_HASH
);

180 
hashp
 = 
dbp
->
h_
;

181 
hashp
->
h_m
 = h_nelem;

183 
	}
}

	@../hash/hash_open.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/yo.h
"

48 
	~"dbc/db_ge.h
"

49 
	~"dbc/hash.h
"

50 
	~"dbc/log.h
"

51 
	~"dbc/lock.h
"

52 
	~"dbc/mp.h
"

53 
	~"dbc/b.h
"

54 
	~"dbc/f.h
"

56 
db_pgno_t
 
__ham__ma
 
__P
((
DB
 *, 
HMETA
 *, db_pgno_t, 
DB_LSN
 *));

65 
	$__ham_ݒ
(
dbp
, 
txn
, 
me
, 
ba_pgno
, 
ags
)

66 
DB
 *
dbp
;

67 
DB_TXN
 *
txn
;

68 cڡ *
me
;

69 
db_pgno_t
 
ba_pgno
;

70 
u_t32_t
 
ags
;

72 
DB_ENV
 *
dbv
;

73 
DBC
 *
dbc
;

74 
HASH_CURSOR
 *
h
;

75 
HASH
 *
hashp
;

76 
t
, 
t_t
;

78 
dbv
 = 
dbp
->dbenv;

79 
dbc
 = 
NULL
;

87 i((
t
 = 
	`__db_curs
(
dbp
,

88 
txn
, &
dbc
, 
	`LF_ISSET
(
DB_CREATE
&& 
	`CDB_LOCKING
(
dbv
) ?

89 
DB_WRITECURSOR
 : 0)) != 0)

90  (
t
);

92 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

93 
hashp
 = 
dbp
->
h_
;

94 
hashp
->
ma_pgno
 = 
ba_pgno
;

95 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

96 
r
;

99 i(
h
->
hdr
->
dbma
.
magic
 =
DB_HASHMAGIC
) {

101 i(
hashp
->
h_hash
 =
NULL
)

102 
hashp
->
h_hash
 = 
h
->
hdr
->
dbma
.
vsi
 < 5

103 ? 
__ham_func4
 : 
__ham_func5
;

104 
hashp
->
h_m
 = 
h
->
hdr
->
m
;

105 i(
	`F_ISSET
(&
h
->
hdr
->
dbma
, 
DB_HASH_DUP
))

106 
	`F_SET
(
dbp
, 
DB_AM_DUP
);

107 i(
	`F_ISSET
(&
h
->
hdr
->
dbma
, 
DB_HASH_DUPSORT
))

108 
	`F_SET
(
dbp
, 
DB_AM_DUPSORT
);

109 i(
	`F_ISSET
(&
h
->
hdr
->
dbma
, 
DB_HASH_SUBDB
))

110 
	`F_SET
(
dbp
, 
DB_AM_SUBDB
);

111 } i(!
	`IS_RECOVERING
(
dbv
&& !
	`F_ISSET
(
dbp
, 
DB_AM_RECOVER
)) {

112 
	`__db_rx
(
dbv
,

113 "%s: Invid hash mg%lu", 
me
, (
u_lg
)
ba_pgno
);

114 
t
 = 
EINVAL
;

118 i((
t_t
 = 
	`__ham_a_ma
(
dbc
)!0 && 
t
 == 0)

119 
t
 = 
t_t
;

120 
r
: i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

121 
t
 = 
t_t
;

123  (
t
);

124 
	}
}

132 
	$__ham_machk
(
dbp
, 
me
, 
hashm
)

133 
DB
 *
dbp
;

134 cڡ *
me
;

135 
HMETA
 *
hashm
;

137 
DB_ENV
 *
dbv
;

138 
u_t32_t
 
vs
;

139 
t
;

141 
dbv
 = 
dbp
->dbenv;

147 
vs
 = 
hashm
->
dbma
.
vsi
;

148 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
))

149 
	`M_32_SWAP
(
vs
);

150 
vs
) {

154 
	`__db_rx
(
dbv
,

156 
me
, (
u_lg
)
vs
);

157  (
DB_OLD_VERSION
);

163 
	`__db_rx
(
dbv
,

164 "%s: unsu܋d hash vsi: %lu", 
me
, (
u_lg
)
vs
);

165  (
EINVAL
);

169 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
&& (
t
 = 
	`__ham_msw
((
PAGE
 *)
hashm
)) != 0)

170  (
t
);

173 i(
dbp
->
ty
 !
DB_HASH
 && dbp->ty !
DB_UNKNOWN
)

174  (
EINVAL
);

175 
dbp
->
ty
 = 
DB_HASH
;

176 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_HASH
);

182 i((
t
 = 
	`__db_fchk
(
dbv
,

183 "DB->ݒ", 
hashm
->
dbma
.
ags
,

184 
DB_HASH_DUP
 | 
DB_HASH_SUBDB
 | 
DB_HASH_DUPSORT
)) != 0)

185  (
t
);

187 i(
	`F_ISSET
(&
hashm
->
dbma
, 
DB_HASH_DUP
))

188 
	`F_SET
(
dbp
, 
DB_AM_DUP
);

190 i(
	`F_ISSET
(
dbp
, 
DB_AM_DUP
)) {

191 
	`__db_rx
(
dbv
,

193 
me
);

194  (
EINVAL
);

197 i(
	`F_ISSET
(&
hashm
->
dbma
, 
DB_HASH_SUBDB
))

198 
	`F_SET
(
dbp
, 
DB_AM_SUBDB
);

200 i(
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
)) {

201 
	`__db_rx
(
dbv
,

203 
me
);

204  (
EINVAL
);

207 i(
	`F_ISSET
(&
hashm
->
dbma
, 
DB_HASH_DUPSORT
)) {

208 i(
dbp
->
dup_com
 =
NULL
)

209 
dbp
->
dup_com
 = 
__bam_defcmp
;

211 i(
dbp
->
dup_com
 !
NULL
) {

212 
	`__db_rx
(
dbv
,

214 
me
);

215  (
EINVAL
);

219 
dbp
->
pgsize
 = 
hashm
->
dbma
.
gesize
;

222 
	`memy
(
dbp
->
feid
, 
hashm
->
dbma
.
uid
, 
DB_FILE_ID_LEN
);

225 
	}
}

235 
db_pgno_t


236 
	$__ham__ma
(
dbp
, 
ma
, 
pgno
, 
lp
)

237 
DB
 *
dbp
;

238 
HMETA
 *
ma
;

239 
db_pgno_t
 
pgno
;

240 
DB_LSN
 *
lp
;

242 
DB_ENV
 *
dbv
;

243 
HASH
 *
hashp
;

244 
db_pgno_t
 
nbucks
;

245 
u_t
 
i
, 
l2
;

247 
dbv
 = 
dbp
->dbenv;

248 
hashp
 = 
dbp
->
h_
;

250 i(
hashp
->
h_hash
 =
NULL
)

251 
hashp
->
h_hash
 = 
DB_HASHVERSION
 < 5 ? 
__ham_func4
 : 
__ham_func5
;

253 i(
hashp
->
h_m
 !0 && hashp->
h_f
 != 0) {

254 
hashp
->
h_m
 = (hashp->h_m - 1/ hashp->
h_f
 + 1;

255 
l2
 = 
	`__db_log2
(
hashp
->
h_m
 > 2 ? hashp->h_nelem : 2);

257 
l2
 = 1;

258 
nbucks
 = (
db_pgno_t
)(1 << 
l2
);

260 
	`memt
(
ma
, 0, (
HMETA
));

261 
ma
->
dbma
.
l
 = *
lp
;

262 
ma
->
dbma
.
pgno
 =gno;

263 
ma
->
dbma
.
magic
 = 
DB_HASHMAGIC
;

264 
ma
->
dbma
.
vsi
 = 
DB_HASHVERSION
;

265 
ma
->
dbma
.
gesize
 = 
dbp
->
pgsize
;

266 i(
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
))

267 
	`FLD_SET
(
ma
->
dbma
.
maags
, 
DBMETA_CHKSUM
);

268 i(
	`F_ISSET
(
dbp
, 
DB_AM_ENCRYPT
)) {

269 
ma
->
dbma
.
y_g
 =

270 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
g
;

271 
	`DB_ASSERT
(
dbv
, 
ma
->
dbma
.
y_g
 != 0);

272 
ma
->
yo_magic
 = ma->
dbma
.
magic
;

274 
ma
->
dbma
.
ty
 = 
P_HASHMETA
;

275 
ma
->
dbma
.

 = 
PGNO_INVALID
;

276 
ma
->
dbma
.
ϡ_pgno
 = 
pgno
;

277 
ma
->
max_buck
 = 
nbucks
 - 1;

278 
ma
->
high_mask
 = 
nbucks
 - 1;

279 
ma
->
low_mask
 = (
nbucks
 >> 1) - 1;

280 
ma
->
f
 = 
hashp
->
h_f
;

281 
ma
->
m
 = 
hashp
->
h_m
;

282 
ma
->
h_chkey
 = 
hashp
->
	`h_hash
(
dbp
, 
CHARKEY
, (CHARKEY));

283 
	`memy
(
ma
->
dbma
.
uid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

285 i(
	`F_ISSET
(
dbp
, 
DB_AM_DUP
))

286 
	`F_SET
(&
ma
->
dbma
, 
DB_HASH_DUP
);

287 i(
	`F_ISSET
(
dbp
, 
DB_AM_SUBDB
))

288 
	`F_SET
(&
ma
->
dbma
, 
DB_HASH_SUBDB
);

289 i(
dbp
->
dup_com
 !
NULL
)

290 
	`F_SET
(&
ma
->
dbma
, 
DB_HASH_DUPSORT
);

297 
ma
->
es
[0] = 
pgno
 + 1;

300 
i
 = 1; i <
l2
; i++)

301 
ma
->
es
[
i
] = meta->spares[0];

302 ; 
i
 < 
NCACHED
; i++)

303 
ma
->
es
[
i
] = 
PGNO_INVALID
;

305  (
nbucks
);

306 
	}
}

325 
	$__ham_w_fe
(
dbp
, 
txn
, 
fhp
, 
me
)

326 
DB
 *
dbp
;

327 
DB_TXN
 *
txn
;

328 
DB_FH
 *
fhp
;

329 cڡ *
me
;

331 
DB_ENV
 *
dbv
;

332 
DB_LSN
 
l
;

333 
DB_MPOOLFILE
 *
mpf
;

334 
DB_PGINFO
 
pgfo
;

335 
DBT
 
pdbt
;

336 
HMETA
 *
ma
;

337 
PAGE
 *
ge
;

338 
t
;

339 
db_pgno_t
 
gno
;

340 *
buf
;

342 
dbv
 = 
dbp
->dbenv;

343 
mpf
 = 
dbp
->mpf;

344 
ma
 = 
NULL
;

345 
ge
 = 
NULL
;

346 
buf
 = 
NULL
;

348 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

350 
gno
 = 
PGNO_BASE_MD
;

351 i((
t
 = 
	`__memp_fg
(
mpf
, &
gno
, 
txn
,

352 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
ma
)) != 0)

353  (
t
);

354 
	`LSN_NOT_LOGGED
(
l
);

355 
gno
 = 
	`__ham__ma
(
dbp
, 
ma
, 
PGNO_BASE_MD
, &
l
);

356 
ma
->
dbma
.
ϡ_pgno
 = 
gno
;

357 i((
t
 = 
	`__db_log_ge
(
dbp
,

358 
txn
, &
l
, 
ma
->
dbma
.
pgno
, (
PAGE
 *)meta)) != 0)

359 
r
;

360 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbp
->
iܙy
);

361 
ma
 = 
NULL
;

362 i(
t
 != 0)

363 
r
;

366 i((
t
 = 
	`__memp_fg
(
mpf
, &
gno
, 
txn
,

367 
DB_MPOOL_CREATE
, &
ge
)) != 0)

368 
r
;

369 
	`P_INIT
(
ge
,

370 
dbp
->
pgsize
, 
gno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

371 
	`LSN_NOT_LOGGED
(
ge
->
l
);

372 i((
t
 =

373 
	`__db_log_ge
(
dbp
, 
txn
, &
ge
->
l
, 
gno
,age)) != 0)

374 
r
;

375 
t
 = 
	`__memp_ut
(
mpf
, 
ge
, 
dbp
->
iܙy
);

376 
ge
 = 
NULL
;

377 i(
t
 != 0)

378 
r
;

380 
	`memt
(&
pdbt
, 0, (pdbt));

383 
pgfo
.
db_gesize
 = 
dbp
->
pgsize
;

384 
pgfo
.
ty
 = 
dbp
->type;

385 
pgfo
.
ags
 =

386 
	`F_ISSET
(
dbp
, (
DB_AM_CHKSUM
 | 
DB_AM_ENCRYPT
 | 
DB_AM_SWAP
));

387 
pdbt
.
da
 = &
pgfo
;

388 
pdbt
.
size
 = (
pgfo
);

389 i((
t
 = 
	`__os_oc
(
dbp
->
dbv
, 1, dbp->
pgsize
, &
buf
)) != 0)

390  (
t
);

391 
ma
 = (
HMETA
 *)
buf
;

392 
	`LSN_NOT_LOGGED
(
l
);

393 
gno
 = 
	`__ham__ma
(
dbp
, 
ma
, 
PGNO_BASE_MD
, &
l
);

394 
ma
->
dbma
.
ϡ_pgno
 = 
gno
;

395 i((
t
 = 
	`__db_pgout
(
dbv
, 
PGNO_BASE_MD
, 
ma
, &
pdbt
)) != 0)

396 
r
;

397 i((
t
 = 
	`__f_wre
(
dbv
, 
txn
, 
me
, 
DB_APP_DATA
, 
fhp
,

398 
dbp
->
pgsize
, 0, 0, 
buf
, dbp->pgsize, 1, 
	`F_ISSET
(

399 
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0)) != 0)

400 
r
;

401 
ma
 = 
NULL
;

404 #ifde
DIAGNOSTIC


405 
	`memt
(
buf
, 0, 
dbp
->
pgsize
);

407 
ge
 = (
PAGE
 *)
buf
;

408 
	`P_INIT
(
ge
,

409 
dbp
->
pgsize
, 
gno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

410 
	`LSN_NOT_LOGGED
(
ge
->
l
);

411 i((
t
 = 
	`__db_pgout
(
dbv
, 
gno
, 
buf
, &
pdbt
)) != 0)

412 
r
;

413 i((
t
 = 
	`__f_wre
(
dbv
, 
txn
, 
me
, 
DB_APP_DATA
, 
fhp
,

414 
dbp
->
pgsize
, 
gno
, 0, 
buf
, dbp->pgsize, 1, 
	`F_ISSET
(

415 
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0)) != 0)

416 
r
;

417 
ge
 = 
NULL
;

420 
r
: i(
buf
 !
NULL
)

421 
	`__os_
(
dbv
, 
buf
);

423 i(
ma
 !
NULL
)

424 ()
	`__memp_ut
(
mpf
, 
ma
, 
dbp
->
iܙy
);

425 i(
ge
 !
NULL
)

426 ()
	`__memp_ut
(
mpf
, 
ge
, 
dbp
->
iܙy
);

428  (
t
);

429 
	}
}

438 
	$__ham_w_subdb
(
mdbp
, 
dbp
, 
txn
)

439 
DB
 *
mdbp
, *
dbp
;

440 
DB_TXN
 *
txn
;

442 
DBC
 *
dbc
;

443 
DB_ENV
 *
dbv
;

444 
DB_LOCK
 
mock
, 
mmlock
;

445 
DB_LSN
 
l
;

446 
DB_MPOOLFILE
 *
mpf
;

447 
DBMETA
 *
mma
;

448 
HMETA
 *
ma
;

449 
PAGE
 *
h
;

450 
i
, 
t
, 
t_t
;

451 
db_pgno_t
 
gno
, 
mpgno
;

453 
dbv
 = 
mdbp
->dbenv;

454 
mpf
 = 
mdbp
->mpf;

455 
dbc
 = 
NULL
;

456 
ma
 = 
NULL
;

457 
mma
 = 
NULL
;

458 
	`LOCK_INIT
(
mock
);

459 
	`LOCK_INIT
(
mmlock
);

461 i((
t
 = 
	`__db_curs
(
mdbp
, 
txn
,

462 &
dbc
, 
	`CDB_LOCKING
(
dbv
? 
DB_WRITECURSOR
 : 0)) != 0)

463  (
t
);

466 i((
t
 = 
	`__db_lg
(
dbc
,

467 0, 
dbp
->
ma_pgno
, 
DB_LOCK_WRITE
, 0, &
mock
)) != 0)

468 
r
;

469 i((
t
 = 
	`__memp_fg
(
mpf
, &
dbp
->
ma_pgno
, 
dbc
->
txn
,

470 
DB_MPOOL_CREATE
, &
ma
)) != 0)

471 
r
;

474 
l
 = 
ma
->
dbma
.lsn;

475 
gno
 = 
	`__ham__ma
(
dbp
, 
ma
, dbp->
ma_pgno
, &
l
);

483 
mpgno
 = 
PGNO_BASE_MD
;

484 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
mpgno
, 
DB_LOCK_WRITE
, 0, &
mmlock
)) != 0)

485 
r
;

486 i((
t
 = 
	`__memp_fg
(
mpf
, &
mpgno
, 
dbc
->
txn
,

487 
DB_MPOOL_DIRTY
, &
mma
)) != 0)

488 
r
;

494 
ma
->
es
[0] = 
mma
->
ϡ_pgno
 + 1;

495 
i
 = 0; i < 
NCACHED
 && 
ma
->
es
[i] !
PGNO_INVALID
; i++)

496 
ma
->
es
[
i
] = meta->spares[0];

499 i((
t
 = 
	`__db_log_ge
(
mdbp
,

500 
txn
, &
ma
->
dbma
.
l
, 
dbp
->
ma_pgno
, (
PAGE
 *)meta)) != 0)

501 
r
;

504 i(
	`DBENV_LOGGING
(
dbv
)

505 #i!
	`defed
(
DEBUG_WOP
)

506 && 
txn
 !
NULL


509 i((
t
 = 
	`__ham_grouoc_log
(
mdbp
, 
txn
,

510 &
	`LSN
(
mma
), 0, &LSN(mma), 
ma
->
es
[0],

511 
ma
->
max_buck
 + 1, 0, 
mma
->
ϡ_pgno
)) != 0)

512 
r
;

515 i((
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)) != 0)

516 
r
;

517 
ma
 = 
NULL
;

519 
gno
 +
mma
->
ϡ_pgno
;

522 i((
t
 = 
	`__memp_fg
(
mpf
, &
gno
, 
dbc
->
txn
,

523 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
h
)) != 0)

524 
r
;

526 
mma
->
ϡ_pgno
 = 
gno
;

527 
	`P_INIT
(
h
, 
dbp
->
pgsize
, 
gno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

528 
	`LSN
(
h
LSN(
mma
);

529 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
)) != 0)

530 
r
;

532 
r
:

533 i(
mma
 !
NULL
 && (
t_t
 = 
	`__memp_ut
(
mpf
,

534 
mma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

535 
t
 = 
t_t
;

536 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mmlock
)!0 && 
t
 == 0)

537 
t
 = 
t_t
;

538 i(
ma
 !
NULL
 &&

539 (
t_t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

540 
t
 = 
t_t
;

541 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

542 
t
 = 
t_t
;

543 i(
dbc
 !
NULL
)

544 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

545 
t
 = 
t_t
;

546  (
t
);

547 
	}
}

	@../hash/hash_page.c

51 
	~"db_cfig.h
"

53 
	~"db_t.h
"

54 
	~"dbc/db_ge.h
"

55 
	~"dbc/hash.h
"

56 
	~"dbc/lock.h
"

57 
	~"dbc/mp.h
"

59 
__hamc_dpg


60 
__P
((
DBC
 *, 
db_pgno_t
, db_pgno_t, 
u_t32_t
, 
db_ham_mode
, u_int32_t *));

61 
__ham_gdex_s܋d
 
__P
((
DB
 *,

62 
DB_TXN
 *, 
PAGE
 *, cڡ 
DBT
 *, , *, 
db_dx_t
 *));

63 
__ham_gdex_uns܋d
 
__P
((
DB
 *,

64 
DB_TXN
 *, 
PAGE
 *, cڡ 
DBT
 *, *, 
db_dx_t
 *));

65 
__ham_st_ge_curs
 
__P
((
DBC
 *, 
PAGE
 *));

71 
	$__ham_em
(
dbc
, 
mode
, 
pgn
)

72 
DBC
 *
dbc
;

73 
db_lockmode_t
 
mode
;

74 
db_pgno_t
 *
pgn
;

76 
DB
 *
dbp
;

77 
HASH_CURSOR
 *
h
;

78 
db_pgno_t
 
xt_pgno
;

79 
t
;

81 
dbp
 = 
dbc
->dbp;

82 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

84 i(
	`F_ISSET
(
h
, 
H_DELETED
)) {

85 
	`__db_rx
(
dbp
->
dbv
, "Attemptoeturn deleted item");

86  (
EINVAL
);

88 
	`F_CLR
(
h
, 
H_OK
 | 
H_NOMORE
);

91 i((
t
 = 
	`__ham_g_age
(
dbc
, 
mode
)) != 0)

92  (
t
);

94 
check
:

96 i(
h
->
ek_size
 !0 && h->
ek_found_ge
 =
PGNO_INVALID
 &&

97 
h
->
ek_size
 < 
	`P_FREESPACE
(
dbp
, h->
ge
)) {

98 
h
->
ek_found_ge
 = h->
pgno
;

99 
h
->
ek_found_dx
 = 
NDX_INVALID
;

103 i(
h
->
dx
 < 
	`NUM_ENT
(h->
ge
) &&

104 
	`HPAGE_TYPE
(
dbp
, 
h
->
ge
, 
	`H_DATAINDEX
(h->
dx
)=
H_OFFDUP
) {

105 
	`memy
(
pgn
,

106 
	`HOFFDUP_PGNO
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
)),

107 (
db_pgno_t
));

108 
	`F_SET
(
h
, 
H_OK
);

113 i(
	`F_ISSET
(
h
, 
H_ISDUP
))

119 
	`memy
(&
h
->
dup_n
,

120 
	`HKEYDATA_DATA
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
)) +

121 
h
->
dup_off
, (
db_dx_t
));

123 i(
h
->
dx
 >(
db_dx_t
)
	`NUM_ENT
(h->
ge
)) {

125 i(
	`NEXT_PGNO
(
h
->
ge
=
PGNO_INVALID
) {

126 
	`F_SET
(
h
, 
H_NOMORE
);

127  (
DB_NOTFOUND
);

129 
xt_pgno
 = 
	`NEXT_PGNO
(
h
->
ge
);

130 
h
->
dx
 = 0;

131 i((
t
 = 
	`__ham_xt_age
(
dbc
, 
xt_pgno
)) != 0)

132  (
t
);

133 
check
;

136 
	`F_SET
(
h
, 
H_OK
);

138 
	}
}

144 
	$__ham_em_t
(
dbc
)

145 
DBC
 *
dbc
;

147 
DB
 *
dbp
;

148 
DB_MPOOLFILE
 *
mpf
;

149 
HASH_CURSOR
 *
h
;

150 
t
, 
t_t
;

152 
dbp
 = 
dbc
->dbp;

153 
mpf
 = 
dbp
->mpf;

154 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

156 
t
 = 0;

157 i(
h
->
ge
 !
NULL
)

158 
t
 = 
	`__memp_ut
(
mpf
, 
h
->
ge
, 
dbc
->
iܙy
);

160 i((
t_t
 = 
	`__ham_em_
(
dbc
)!0 && 
t
 == 0)

161 
t
 = 
t_t
;

163  (
t
);

164 
	}
}

170 
	$__ham_em_
(
dbc
)

171 
DBC
 *
dbc
;

173 
HASH_CURSOR
 *
h
;

174 
t
;

176 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

182 
t
 = 
	`__TLPUT
(
dbc
, 
h
->
lock
);

189 
h
->
buck
 = 
BUCKET_INVALID
;

190 
h
->
lbuck
 = 
BUCKET_INVALID
;

191 
	`LOCK_INIT
(
h
->
lock
);

192 
h
->
lock_mode
 = 
DB_LOCK_NG
;

193 
h
->
dup_off
 = 0;

194 
h
->
dup_n
 = 0;

195 
h
->
dup_
 = 0;

196 
h
->
ek_size
 = 0;

197 
h
->
ek_found_ge
 = 
PGNO_INVALID
;

198 
h
->
ek_found_dx
 = 
NDX_INVALID
;

199 
h
->
ags
 = 0;

201 
h
->
pgno
 = 
PGNO_INVALID
;

202 
h
->
dx
 = 
NDX_INVALID
;

203 
h
->
ge
 = 
NULL
;

205  (
t
);

206 
	}
}

214 
	$__ham_em_ϡ
(
dbc
, 
mode
, 
pgn
)

215 
DBC
 *
dbc
;

216 
db_lockmode_t
 
mode
;

217 
db_pgno_t
 *
pgn
;

219 
HASH_CURSOR
 *
h
;

220 
t
;

222 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

223 i((
t
 = 
	`__ham_em_t
(
dbc
)) != 0)

224  (
t
);

226 
h
->
buck
 = h->
hdr
->
max_buck
;

227 
h
->
pgno
 = 
	`BUCKET_TO_PAGE
(h, h->
buck
);

228 
	`F_SET
(
h
, 
H_OK
);

229  (
	`__ham_em_ev
(
dbc
, 
mode
, 
pgn
));

230 
	}
}

236 
	$__ham_em_f
(
dbc
, 
mode
, 
pgn
)

237 
DBC
 *
dbc
;

238 
db_lockmode_t
 
mode
;

239 
db_pgno_t
 *
pgn
;

241 
HASH_CURSOR
 *
h
;

242 
t
;

244 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

245 i((
t
 = 
	`__ham_em_t
(
dbc
)) != 0)

246  (
t
);

247 
	`F_SET
(
h
, 
H_OK
);

248 
h
->
buck
 = 0;

249 
h
->
pgno
 = 
	`BUCKET_TO_PAGE
(h, h->
buck
);

250  (
	`__ham_em_xt
(
dbc
, 
mode
, 
pgn
));

251 
	}
}

262 
	$__ham_em_ev
(
dbc
, 
mode
, 
pgn
)

263 
DBC
 *
dbc
;

264 
db_lockmode_t
 
mode
;

265 
db_pgno_t
 *
pgn
;

267 
DB
 *
dbp
;

268 
HASH_CURSOR
 *
h
;

269 
db_pgno_t
 
xt_pgno
;

270 
t
;

272 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

273 
dbp
 = 
dbc
->dbp;

284 
	`F_CLR
(
h
, 
H_OK
 | 
H_NOMORE
 | 
H_DELETED
);

286 i((
t
 = 
	`__ham_g_age
(
dbc
, 
mode
)) != 0)

287  (
t
);

294 i(!
	`F_ISSET
(
h
, 
H_NEXT_NODUP
&& F_ISSET(h, 
H_ISDUP
)) {

295 i(
	`HPAGE_TYPE
(
dbp
, 
h
->
ge
, 
	`H_DATAINDEX
(h->
dx
)) ==

296 
H_OFFDUP
) {

297 
	`memy
(
pgn
,

298 
	`HOFFDUP_PGNO
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
)),

299 (
db_pgno_t
));

300 
	`F_SET
(
h
, 
H_OK
);

305 i(
h
->
dup_off
 != 0) {

306 
	`memy
(&
h
->
dup_n
, 
	`HKEYDATA_DATA
(

307 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
))

308 + 
h
->
dup_off
 - (
db_dx_t
),

309 (
db_dx_t
));

310 
h
->
dup_off
 -=

311 
	`DUP_SIZE
(
h
->
dup_n
);

312  (
	`__ham_em
(
dbc
, 
mode
, 
pgn
));

322 i(
	`F_ISSET
(
h
, 
H_DUPONLY
)) {

323 
	`F_CLR
(
h
, 
H_OK
);

324 
	`F_SET
(
h
, 
H_NOMORE
);

331 
	`F_CLR
(
h
, 
H_ISDUP
);

333 i(
h
->
dx
 == 0) {

334 
h
->
pgno
 = 
	`PREV_PGNO
(h->
ge
);

335 i(
h
->
pgno
 =
PGNO_INVALID
) {

337 
	`F_SET
(
h
, 
H_NOMORE
);

338  (
DB_NOTFOUND
);

339 } i((
t
 =

340 
	`__ham_xt_age
(
dbc
, 
h
->
pgno
)) != 0)

341  (
t
);

343 
h
->
dx
 = 
	`NUM_ENT
(h->
ge
);

350 i(
h
->
dx
 =
NDX_INVALID
) {

351 
	`DB_ASSERT
(
dbp
->
dbv
, 
h
->
ge
 !
NULL
);

353 
h
->
dx
 = 
	`NUM_ENT
(h->
ge
);

354 
xt_pgno
 = 
	`NEXT_PGNO
(
h
->
ge
);

355 
xt_pgno
 !
PGNO_INVALID
;

356 
xt_pgno
 = 
	`NEXT_PGNO
(
h
->
ge
)) {

357 i((
t
 = 
	`__ham_xt_age
(
dbc
, 
xt_pgno
)) != 0)

358  (
t
);

359 
h
->
dx
 = 
	`NUM_ENT
(h->
ge
);

362 i(
h
->
dx
 == 0) {

364 
	`F_SET
(
h
, 
H_NOMORE
);

365  (
DB_NOTFOUND
);

369 
h
->
dx
 -= 2;

371  (
	`__ham_em
(
dbc
, 
mode
, 
pgn
));

372 
	}
}

380 
	$__ham_em_xt
(
dbc
, 
mode
, 
pgn
)

381 
DBC
 *
dbc
;

382 
db_lockmode_t
 
mode
;

383 
db_pgno_t
 *
pgn
;

385 
HASH_CURSOR
 *
h
;

386 
t
;

388 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

390 i((
t
 = 
	`__ham_g_age
(
dbc
, 
mode
)) != 0)

391  (
t
);

398 i(
	`F_ISSET
(
h
, 
H_DELETED
)) {

399 i(
h
->
dx
 !
NDX_INVALID
 &&

400 
	`F_ISSET
(
h
, 
H_ISDUP
) &&

401 
	`HPAGE_TYPE
(
dbc
->
dbp
, 
h
->
ge
, 
	`H_DATAINDEX
(h->
dx
))

402 =
H_DUPLICATE
 && 
h
->
dup_
 =h->
dup_off
) {

403 i(
	`F_ISSET
(
h
, 
H_DUPONLY
)) {

404 
	`F_CLR
(
h
, 
H_OK
);

405 
	`F_SET
(
h
, 
H_NOMORE
);

408 
	`F_CLR
(
h
, 
H_ISDUP
);

409 
h
->
dx
 += 2;

411 } i(!
	`F_ISSET
(
h
, 
H_ISDUP
&& F_ISSET(h, 
H_DUPONLY
)) {

412 
	`F_CLR
(
h
, 
H_OK
);

413 
	`F_SET
(
h
, 
H_NOMORE
);

415 } i(
	`F_ISSET
(
h
, 
H_ISDUP
) &&

416 
	`F_ISSET
(
h
, 
H_NEXT_NODUP
)) {

417 
	`F_CLR
(
h
, 
H_ISDUP
);

418 
h
->
dx
 += 2;

420 
	`F_CLR
(
h
, 
H_DELETED
);

421 } i(
h
->
dx
 =
NDX_INVALID
) {

422 
h
->
dx
 = 0;

423 
	`F_CLR
(
h
, 
H_ISDUP
);

424 } i(
	`F_ISSET
(
h
, 
H_NEXT_NODUP
)) {

425 
h
->
dx
 += 2;

426 
	`F_CLR
(
h
, 
H_ISDUP
);

427 } i(
	`F_ISSET
(
h
, 
H_ISDUP
&& h->
dup_
 != 0) {

428 i(
h
->
dup_off
 + 
	`DUP_SIZE
(h->
dup_n
) >=

429 
h
->
dup_
 && 
	`F_ISSET
(h, 
H_DUPONLY
)) {

430 
	`F_CLR
(
h
, 
H_OK
);

431 
	`F_SET
(
h
, 
H_NOMORE
);

434 
h
->
dup_off
 +
	`DUP_SIZE
(h->
dup_n
);

435 i(
h
->
dup_off
 >h->
dup_
) {

436 
	`F_CLR
(
h
, 
H_ISDUP
);

437 
h
->
dx
 += 2;

439 } i(
	`F_ISSET
(
h
, 
H_DUPONLY
)) {

440 
	`F_CLR
(
h
, 
H_OK
);

441 
	`F_SET
(
h
, 
H_NOMORE
);

444 
h
->
dx
 += 2;

445 
	`F_CLR
(
h
, 
H_ISDUP
);

448  (
	`__ham_em
(
dbc
, 
mode
, 
pgn
));

449 
	}
}

471 
	$__ham_
(
dbp
, 
txn
, 
p
, 
dxp
, 
key_dbt
, 
da_dbt
, 
key_ty
, 
da_ty
)

472 
DB
 *
dbp
;

473 
DB_TXN
 *
txn
;

474 
PAGE
 *
p
;

475 
db_dx_t
 *
dxp
;

476 cڡ 
DBT
 *
key_dbt
, *
da_dbt
;

477 
key_ty
, 
da_ty
;

479 
u_t16_t
 
n
, 
dx
;

480 
db_dx_t
 *
p
;

481 
u_t32_t
 
ksize
, 
dsize
, 

, 
di
;

482 
u_t8_t
 *
offt
;

483 
i
, 
mch
, 
t
;

485 
n
 = 
	`NUM_ENT
(
p
);

486 
p
 = 
	`P_INP
(
dbp
, 
p
);

487 
ksize
 = (
key_ty
 =
H_OFFPAGE
) ?

488 
key_dbt
->
size
 : 
	`HKEYDATA_SIZE
(key_dbt->size);

489 
dsize
 = (
da_ty
 =
H_OFFPAGE
) ?

490 
da_dbt
->
size
 : 
	`HKEYDATA_SIZE
(data_dbt->size);

491 

 = 
ksize
 + 
dsize
;

493 i(
dxp
 !
NULL
 && *dx!
NDX_INVALID
)

494 
dx
 = *
dxp
;

496 i((
t
 = 
	`__ham_gdex
(
dbp
, 
txn
, 
p
, 
key_dbt
,

497 
key_ty
, &
mch
, &
dx
)) != 0)

498  (
t
);

500 i(
dxp
 !
NULL
)

501 *
dxp
 = 
dx
;

503 
	`DB_ASSERT
(
dbp
->
dbv
, 
mch
 != 0);

507 i(
n
 =0 || 
dx
 ==) {

508 
p
[
dx
] = 
	`HOFFSET
(
p
- 
ksize
;

509 
p
[
dx
+1] = 
	`HOFFSET
(
p
- 

;

551 
offt
 = (
u_t8_t
 *)
p
 + 
	`HOFFSET
(p);

552 i(
dx
 == 0)

553 
di
 = 
dbp
->
pgsize
 - 
	`HOFFSET
(
p
);

555 
di
 = (
u_t32_t
)

556 (
	`P_ENTRY
(
dbp
, 
p
, 
dx
 - 1- 
offt
);

557 
	`memmove
(
offt
 - 

, offt, 
di
);

560 
	`memmove
(&
p
[
dx
 + 2], &inp[indx],

561 (
n
 - 
dx
* (
db_dx_t
));

564 
i
 = 
dx
 + 2; i < 
n
 + 2; i++)

565 
p
[
i
] -

;

568 
p
[
dx
] = (
	`HOFFSET
(
p
- 

+ 
di
 + 
dsize
;

569 
p
[
dx
 + 1] = (
	`HOFFSET
(
p
- 

+ 
di
;

572 
	`HOFFSET
(
p
-

;

574 i(
key_ty
 =
H_OFFPAGE
)

575 
	`memy
(
	`P_ENTRY
(
dbp
, 
p
, 
dx
), 
key_dbt
->
da
, key_dbt->
size
);

577 
	`PUT_HKEYDATA
(
	`P_ENTRY
(
dbp
, 
p
, 
dx
), 
key_dbt
->
da
,

578 
key_dbt
->
size
, 
key_ty
);

579 i(
da_ty
 =
H_OFFPAGE
)

580 
	`memy
(
	`P_ENTRY
(
dbp
, 
p
, 
dx
+1), 
da_dbt
->
da
,

581 
da_dbt
->
size
);

583 
	`PUT_HKEYDATA
(
	`P_ENTRY
(
dbp
, 
p
, 
dx
+1), 
da_dbt
->
da
,

584 
da_dbt
->
size
, 
da_ty
);

585 
	`NUM_ENT
(
p
) += 2;

594 
	}
}

608 
	$__ham_gdex
(
dbp
, 
txn
, 
p
, 
key
, 
key_ty
, 
mch
, 
dx
)

609 
DB
 *
dbp
;

610 
DB_TXN
 *
txn
;

611 
PAGE
 *
p
;

612 cڡ 
DBT
 *
key
;

613 
key_ty
, *
mch
;

614 
db_dx_t
 *
dx
;

617 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`NUM_ENT
(
p
)%2 == 0 );

620 i(
p
->
ty
 =
P_HASH_UNSORTED
)

621  (
	`__ham_gdex_uns܋d
(

622 
dbp
, 
txn
, 
p
, 
key
, 
mch
, 
dx
));

624  (
	`__ham_gdex_s܋d
(

625 
dbp
, 
txn
, 
p
, 
key
, 
key_ty
, 
mch
, 
dx
));

626 
	}
}

628 #unde
m


629 
	#m
(
a
, 
b
((< (b)? (a: (b))

	)

642 
	$__ham_gdex_uns܋d
(
dbp
, 
txn
, 
p
, 
key
, 
mch
, 
dx
)

643 
DB
 *
dbp
;

644 
DB_TXN
 *
txn
;

645 
PAGE
 *
p
;

646 cڡ 
DBT
 *
key
;

647 *
mch
;

648 
db_dx_t
 *
dx
;

650 
DBT
 
pg_dbt
;

651 
HASH
 *
t
;

652 
db_pgno_t
 
pgno
;

653 
i
, 
n
, 
s
, 
t
;

654 
u_t32_t
 

;

655 
u_t8_t
 *
hk
;

657 
n
 = 
	`NUM_ENT
(
p
);

658 
t
 = 
dbp
->
h_
;

659 
s
 = 1;

662 
i
 = 0; i < 
n
; i+=2) {

663 
hk
 = 
	`H_PAIRKEY
(
dbp
, 
p
, 
i
);

664 
	`HPAGE_PTYPE
(
hk
)) {

665 
H_OFFPAGE
:

667 
	`memy
(&

, 
	`HOFFPAGE_TLEN
(
hk
), (
u_t32_t
));

668 i(

 =
key
->
size
) {

669 
	`memy
(&
pgno
,

670 
	`HOFFPAGE_PGNO
(
hk
), (
db_pgno_t
));

671 i((
t
 = 
	`__db_moff
(
dbp
, 
txn
, 
key
,

672 
pgno
, 

, 
t
->
h_com
, &
s
)) != 0)

673  (
t
);

676 
H_KEYDATA
:

677 i(
t
->
h_com
 !
NULL
) {

678 
	`DB_INIT_DBT
(
pg_dbt
,

679 
	`HKEYDATA_DATA
(
hk
), 
key
->
size
);

680 i(
t
->
	`h_com
(

681 
dbp
, 
key
, &
pg_dbt
) != 0)

683 } i(
key
->
size
 ==

684 
	`LEN_HKEY
(
dbp
, 
p
, dbp->
pgsize
, 
i
))

685 
s
 = 
	`memcmp
(
key
->
da
, 
	`HKEYDATA_DATA
(
hk
),

686 
key
->
size
);

688 
H_DUPLICATE
:

689 
H_OFFDUP
:

695  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
p
)));

697 i(
s
 == 0)

700 *
dx
 = 
i
;

701 *
mch
 = (
s
 == 0 ? 0 : 1);

703 
	}
}

712 
	$__ham_gdex_s܋d
(
dbp
, 
txn
, 
p
, 
key
, 
key_ty
, 
mch
, 
dxp
)

713 
DB
 *
dbp
;

714 
DB_TXN
 *
txn
;

715 
PAGE
 *
p
;

716 cڡ 
DBT
 *
key
;

717 
key_ty
, *
mch
;

718 
db_dx_t
 *
dxp
;

720 
DBT
 
tmp_dbt
;

721 
HASH
 *
t
;

722 
HOFFPAGE
 *
of
;

723 
db_dx_t
 
dx
;

724 
db_pgno_t
 
off_pgno
, 
koff_pgno
;

725 
u_t32_t
 
ba
, 
emn
, 
lim
, 
off_n
;

726 
u_t8_t
 *
y
;

727 
s
, 
t
;

728 *
da
;

730 
	`DB_ASSERT
(
dbp
->
dbv
, 
p
->
ty
 =
P_HASH
 );

732 
t
 = 
dbp
->
h_
;

734 
s
 = 
dx
 = 0;

737 
	`DB_BINARY_SEARCH_FOR
(
ba
, 
lim
, 
p
, 2) {

738 
	`DB_BINARY_SEARCH_INCR
(
dx
, 
ba
, 
lim
, 2);

739 
da
 = 
	`HKEYDATA_DATA
(
	`H_PAIRKEY
(
dbp
, 
p
, 
dx
));

747 
y
 = 
	`P_ENTRY
(
dbp
, 
p
, 
dx
);

748 i(*
y
 =
H_OFFPAGE
) {

749 
of
 = (
HOFFPAGE
*)
	`P_ENTRY
(
dbp
, 
p
, 
dx
);

750 
	`memy
(&
emn
, 
	`HOFFPAGE_TLEN
(
of
),

751 (
u_t32_t
));

752 i(
key_ty
 =
H_OFFPAGE
) {

762 
	`memy
(&
koff_pgno
, 
	`HOFFPAGE_PGNO
(
key
->
da
),

763 (
db_pgno_t
));

764 
	`memy
(&
off_pgno
, 
	`HOFFPAGE_PGNO
(
of
),

765 (
db_pgno_t
));

766 i(
koff_pgno
 =
off_pgno
)

767 
s
 = 0;

769 
	`memt
(&
tmp_dbt
, 0, (tmp_dbt));

770 
tmp_dbt
.
size
 = 
HOFFPAGE_SIZE
;

771 
tmp_dbt
.
da
 = 
of
;

772 i((
t
 = 
	`__db_coff
(
dbp
, 
txn
, 
key
,

773 &
tmp_dbt
, 
t
->
h_com
, &
s
)) != 0)

774  (
t
);

778 
	`memy
(&
off_pgno
, 
	`HOFFPAGE_PGNO
(
of
),

779 (
db_pgno_t
));

780 i((
t
 = 
	`__db_moff
(
dbp
, 
txn
, 
key
, 
off_pgno
,

781 
emn
, 
t
->
h_com
, &
s
)) != 0)

782  (
t
);

785 
emn
 = 
	`LEN_HKEYDATA
(
dbp
, 
p
, dbp->
pgsize
, 
dx
);

786 i(
key_ty
 =
H_OFFPAGE
) {

788 
tmp_dbt
.
da
 = data;

789 
tmp_dbt
.
size
 = 
emn
;

790 
of
 = (
HOFFPAGE
 *)
key
->
da
;

791 
	`memy
(&
off_pgno
, 
	`HOFFPAGE_PGNO
(
of
),

792 (
db_pgno_t
));

793 
	`memy
(&
off_n
, 
	`HOFFPAGE_TLEN
(
of
),

794 (
u_t32_t
));

795 i((
t
 = 
	`__db_moff
(
dbp
, 
txn
, &
tmp_dbt
,

796 
off_pgno
, 
off_n
, 
t
->
h_com
,

797 &
s
)) != 0)

798  (
t
);

804 
s
 = -res;

805 } i(
t
->
h_com
 !
NULL
) {

807 
	`DB_INIT_DBT
(
tmp_dbt
, 
da
, 
emn
);

808 
s
 = 
t
->
	`h_com
(
dbp
, 
key
, &
tmp_dbt
);

811 i((
s
 = 
	`memcmp
(
key
->
da
, data,

812 
	`m
(
key
->
size
, 
emn
))) == 0)

813 
s
 = 
emn
 > 
key
->
size
 ? 1 :

814 (
emn
 < 
key
->
size
 ? -1 : 0);

817 i(
s
 == 0) {

819 *
dxp
 = 
dx
;

820 *
mch
 = 0;

822 } i(
s
 > 0)

823 
	`DB_BINARY_SEARCH_SHIFT_BASE
(
dx
, 
ba
, 
lim
, 2);

830 i(
s
 > 0)

831 
dx
 += 2;

832 *
dxp
 = 
dx
;

833 *
mch
 = 1;

835 
	}
}

845 
	$__ham_vify_s܋d_ge
 (
dbp
, 
txn
, 
p
)

846 
DB
 *
dbp
;

847 
DB_TXN
 *
txn
;

848 
PAGE
 *
p
;

850 
DB_ENV
 *
dbv
;

851 
DBT
 
ev_dbt
, 
cu_dbt
;

852 
HASH
 *
t
;

853 
db_pgno_t
 
gno
;

854 
u_t32_t
 
cu_n
, 
ev_n
, 

;

855 
u_t16_t
 *
dxp
;

856 
db_dx_t
 
i
, 
n
;

857 
s
, 
t
;

858 *
ev
, *
cu
;

861 
n
 = 
	`NUM_ENT
(
p
);

862 
	`DB_ASSERT
(
dbp
->
dbv
, 
n
%2 == 0 );

864 
dbv
 = 
dbp
->dbenv;

865 
t
 = 
dbp
->
h_
;

868 i(
t
->
h_com
 !
NULL
)

872 
ev
 = (*)
	`HKEYDATA_DATA
(
	`H_PAIRKEY
(
dbp
, 
p
, 0));

873 
ev_n
 = 
	`LEN_HKEYDATA
(
dbp
, 
p
, dbp->
pgsize
, 0);

874 
i
 = 2; i < 
n
; i+=2) {

875 
cu
 = (*)
	`HKEYDATA_DATA
(
	`H_PAIRKEY
(
dbp
, 
p
, 
i
));

876 
cu_n
 = 
	`LEN_HKEYDATA
(
dbp
, 
p
, dbp->
pgsize
, 
i
);

878 i(
	`HPAGE_TYPE
(
dbp
, 
p
, 
i
-2=
H_OFFPAGE
 &&

879 
	`HPAGE_TYPE
(
dbp
, 
p
, 
i
=
H_OFFPAGE
) {

880 
	`memt
(&
ev_dbt
, 0, (prev_dbt));

881 
	`memt
(&
cu_dbt
, 0, (curr_dbt));

882 
ev_dbt
.
size
 = 
cu_dbt
.siz
HOFFPAGE_SIZE
;

883 
ev_dbt
.
da
 = 
	`H_PAIRKEY
(
dbp
, 
p
, 
i
-2);

884 
cu_dbt
.
da
 = 
	`H_PAIRKEY
(
dbp
, 
p
, 
i
);

885 i((
t
 = 
	`__db_coff
(
dbp
, 
txn
,

886 &
ev_dbt
, &
cu_dbt
, 
t
->
h_com
, &
s
)) != 0)

887  (
t
);

888 } i(
	`HPAGE_TYPE
(
dbp
, 
p
, 
i
-2=
H_OFFPAGE
) {

889 
	`memt
(&
cu_dbt
, 0, (curr_dbt));

890 
cu_dbt
.
size
 = 
cu_n
;

891 
cu_dbt
.
da
 = 
	`H_PAIRKEY
(
dbp
, 
p
, 
i
);

892 
	`memy
(&

, 
	`HOFFPAGE_TLEN
(
	`H_PAIRKEY
(
dbp
, 
p
, 
i
-2)),

893 (
u_t32_t
));

894 
	`memy
(&
gno
, 
	`HOFFPAGE_PGNO
(
	`H_PAIRKEY
(
dbp
, 
p
, 
i
-2)),

895 (
db_pgno_t
));

896 i((
t
 = 
	`__db_moff
(
dbp
, 
txn
,

897 &
cu_dbt
, 
gno
, 

, 
t
->
h_com
, &
s
)) != 0)

898  (
t
);

899 } i(
	`HPAGE_TYPE
(
dbp
, 
p
, 
i
=
H_OFFPAGE
) {

900 
	`memt
(&
ev_dbt
, 0, (prev_dbt));

901 
ev_dbt
.
size
 = 
ev_n
;

902 
ev_dbt
.
da
 = 
	`H_PAIRKEY
(
dbp
, 
p
, 
i
);

903 
	`memy
(&

, 
	`HOFFPAGE_TLEN
(
	`H_PAIRKEY
(
dbp
, 
p
, 
i
)),

904 (
u_t32_t
));

905 
	`memy
(&
gno
, 
	`HOFFPAGE_PGNO
(
	`H_PAIRKEY
(
dbp
, 
p
, 
i
)),

906 (
db_pgno_t
));

907 i((
t
 = 
	`__db_moff
(
dbp
, 
txn
,

908 &
ev_dbt
, 
gno
, 

, 
t
->
h_com
, &
s
)) != 0)

909  (
t
);

911 
s
 = 
	`memcmp
(
ev
, 
cu
, 
	`m
(
cu_n
, 
ev_n
));

913 i(
s
 =0 && 
cu_n
 > 
ev_n
)

914 
s
 = 1;

915 i(
s
 =0 && 
cu_n
 < 
ev_n
)

916 
s
 = -1;

918 i(
s
 >= 0) {

919 
	`__db_msg
(
dbv
, "key1: %s, key2: %s,en: %lu\n",

920 (*)
ev
, (*)
cu
,

921 (
u_lg
)
	`m
(
cu_n
, 
ev_n
));

922 
	`__db_msg
(
dbv
, "cuoff%lu\n", (
u_lg
)
i
);

923 
	`__db_msg
(
dbv
, "indexes: ");

924 
i
 = 0; i < 
n
; i++) {

925 
dxp
 = 
	`P_INP
(
dbp
, 
p
+ 
i
;

926 
	`__db_msg
(
dbv
, "%04X, ", *
dxp
);

928 
	`__db_msg
(
dbv
, "\n");

929 #ifde
HAVE_STATISTICS


930 i((
t
 = 
	`__db_ge
(
dbp
, 
p
, 
DB_PR_PAGE
)) != 0)

931  (
t
);

933 
	`DB_ASSERT
(
dbp
->
dbv
, 
s
 < 0);

936 
ev
 = 
cu
;

937 
ev_n
 = 
cu_n
;

940 
	}
}

947 
	$__ham_st_ge_curs
(
dbc
, 
ge
)

948 
DBC
 *
dbc
;

949 
PAGE
 *
ge
;

951 
DB
 *
dbp
;

952 
DB_LSN
 
w_l
;

953 
DBT
 
ge_dbt
;

954 
HASH_CURSOR
 *
h
;

955 
t
;

957 
dbp
 = 
dbc
->dbp;

958 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

960 i(
	`DBC_LOGGING
(
dbc
)) {

961 
ge_dbt
.
size
 = 
dbp
->
pgsize
;

962 
ge_dbt
.
da
 = 
ge
;

963 i((
t
 = 
	`__ham_lda_log
(
dbp
, 
dbc
->
txn
,

964 &
w_l
, 0, 
SORTPAGE
, 
	`PGNO
(
ge
),

965 &
ge_dbt
, &
	`LSN
(
ge
))) != 0)

966  (
t
);

968 
	`LSN_NOT_LOGGED
(
w_l
);

970 
	`LSN
(
ge

w_l
;

976 
h
->
ek_found_dx
 = 
NDX_INVALID
;

977 
h
->
ek_found_ge
 = 
PGNO_INVALID
;

979  (
	`__ham_st_ge
(

980 
dbp
, 
dbc
->
txn
, &
h
->
l_buf
, 
ge
));

981 
	}
}

995 
	$__ham_st_ge
(
dbp
, 
txn
, 
tmp_buf
, 
ge
)

996 
DB
 *
dbp
;

997 
DB_TXN
 *
txn
;

998 
PAGE
 **
tmp_buf
;

999 
PAGE
 *
ge
;

1001 
PAGE
 *
mp_g
;

1002 
db_dx_t
 
i
;

1003 
t
;

1005 
	`DB_ASSERT
(
dbp
->
dbv
, 
ge
->
ty
 =
P_HASH_UNSORTED
);

1007 
t
 = 0;

1008 i(
tmp_buf
 !
NULL
)

1009 
mp_g
 = *
tmp_buf
;

1010 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
, dbp->
pgsize
, &
mp_g
)) != 0)

1011  (
t
);

1013 
	`memy
(
mp_g
, 
ge
, 
dbp
->
pgsize
);

1016 
	`P_INIT
(
ge
, 
dbp
->
pgsize
,

1017 
ge
->
pgno
,age->
ev_pgno
,age->
xt_pgno
, 0, 
P_HASH
);

1019 
i
 = 0; i < 
	`NUM_ENT
(
mp_g
); i += 2)

1020 i((
t
 =

1021 
	`__ham_cy
(
dbp
, 
txn
, 
mp_g
, 
i
, 
ge
, 
NULL
)) != 0)

1024 i(
tmp_buf
 =
NULL
)

1025 
	`__os_
(
dbp
->
dbv
, 
mp_g
);

1027  (
t
);

1028 
	}
}

1034 
	$__ham_d_
(
dbc
, 
ags
)

1035 
DBC
 *
dbc
;

1036 
ags
;

1038 
DB
 *
dbp
;

1039 
DBT
 
da_dbt
, 
key_dbt
;

1040 
DB_LSN
 
w_l
, *
n_l
, 
tmp_l
;

1041 
DB_MPOOLFILE
 *
mpf
;

1042 
HASH_CURSOR
 *
h
;

1043 
PAGE
 *
n_g
, *
_g
, *
p
, *
p_g
;

1044 
db_ham_mode
 

;

1045 
db_dx_t
 
ndx
;

1046 
db_pgno_t
 
chg_pgno
, 
pgno
, 
tmp_pgno
;

1047 
u_t32_t
 
d
;

1048 
t
, 
t_t
;

1050 
dbp
 = 
dbc
->dbp;

1051 
mpf
 = 
dbp
->mpf;

1052 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1053 
n_g
 = 
p_g
 = 
_g
 = 
NULL
;

1054 
ndx
 = 
h
->
dx
;

1056 i(
h
->
ge
 =
NULL
 &&

1057 (
t
 = 
	`__memp_fg
(
mpf
, &
h
->
pgno
, 
dbc
->
txn
,

1058 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
h
->
ge
)) != 0)

1059  (
t
);

1060 
p
 = 
h
->
ge
;

1069 i(
	`HPAGE_PTYPE
(
	`H_PAIRKEY
(
dbp
, 
p
, 
ndx
)=
H_OFFPAGE
) {

1070 
	`memy
(&
pgno
, 
	`HOFFPAGE_PGNO
(
	`P_ENTRY
(
dbp
, 
p
, 
	`H_KEYINDEX
(
ndx
))),

1071 (
db_pgno_t
));

1072 
t
 = 
	`__db_doff
(
dbc
, 
pgno
);

1074 
t
 = 0;

1076 i(
t
 == 0)

1077 
	`HPAGE_PTYPE
(
	`H_PAIRDATA
(
dbp
, 
p
, 
ndx
))) {

1078 
H_OFFPAGE
:

1079 
	`memy
(&
pgno
,

1080 
	`HOFFPAGE_PGNO
(
	`P_ENTRY
(
dbp
, 
p
, 
	`H_DATAINDEX
(
ndx
))),

1081 (
db_pgno_t
));

1082 
t
 = 
	`__db_doff
(
dbc
, 
pgno
);

1084 
H_OFFDUP
:

1085 
H_DUPLICATE
:

1091 
	`F_CLR
(
h
, 
H_ISDUP
);

1098 i(
t
)

1099  (
t
);

1102 i(
	`DBC_LOGGING
(
dbc
)) {

1103 
key_dbt
.
da
 = 
	`P_ENTRY
(
dbp
, 
p
, 
	`H_KEYINDEX
(
ndx
));

1104 
key_dbt
.
size
 = 
	`LEN_HITEM
(
dbp
, 
p
, dbp->
pgsize
, 
	`H_KEYINDEX
(
ndx
));

1105 
da_dbt
.
da
 = 
	`P_ENTRY
(
dbp
, 
p
, 
	`H_DATAINDEX
(
ndx
));

1106 
da_dbt
.
size
 =

1107 
	`LEN_HITEM
(
dbp
, 
p
, dbp->
pgsize
, 
	`H_DATAINDEX
(
ndx
));

1109 i((
t
 = 
	`__ham_sd_log
(
dbp
,

1110 
dbc
->
txn
, &
w_l
, 0, 
DELPAIR
, 
	`PGNO
(
p
), (
u_t32_t
)
ndx
,

1111 &
	`LSN
(
p
), &
key_dbt
, &
da_dbt
)) != 0)

1112  (
t
);

1114 
	`LSN_NOT_LOGGED
(
w_l
);

1117 
	`LSN
(
p

w_l
;

1119 
	`__ham_d
(
dbp
, 
p
, 
ndx
);

1126 
	`F_SET
(
h
, 
H_DELETED
);

1127 
	`F_CLR
(
h
, 
H_OK
);

1136 i(!
	`STD_LOCKING
(
dbc
)) {

1137 i((
t
 = 
	`__ham_dty_ma
(
dbc
, 0)) != 0)

1138  (
t
);

1139 --
h
->
hdr
->
m
;

1143 i(
	`LF_ISSET
(
HAM_DEL_NO_CURSOR
))

1148 i((
t
 = 
	`__hamc_upde
(
dbc
, 0, 
DB_HAM_CURADJ_DEL
, 0)) != 0)

1149  (
t
);

1159 i(
	`LF_ISSET
(
HAM_DEL_NO_RECLAIM
) ||

1160 
	`NUM_ENT
(
p
) != 0 ||

1161 (
	`PREV_PGNO
(
p
=
PGNO_INVALID
 && 
	`NEXT_PGNO
(p) == PGNO_INVALID))

1164 i(
	`PREV_PGNO
(
p
=
PGNO_INVALID
) {

1169 i((
t
 = 
	`__memp_fg
(
mpf
, &
	`NEXT_PGNO
(
p
), 
dbc
->
txn
,

1170 
DB_MPOOL_DIRTY
, &
n_g
)) != 0)

1171  (
t
);

1173 i(
	`NEXT_PGNO
(
n_g
!
PGNO_INVALID
 &&

1174 (
t
 = 
	`__memp_fg
(
mpf
, &
	`NEXT_PGNO
(
n_g
), 
dbc
->
txn
,

1175 
DB_MPOOL_DIRTY
, &
_g
)) != 0)

1176 
r
;

1178 i(
	`DBC_LOGGING
(
dbc
)) {

1179 
key_dbt
.
da
 = 
n_g
;

1180 
key_dbt
.
size
 = 
dbp
->
pgsize
;

1181 i((
t
 = 
	`__ham_cyge_log
(
dbp
,

1182 
dbc
->
txn
, &
w_l
, 0, 
	`PGNO
(
p
),

1183 &
	`LSN
(
p
), 
	`PGNO
(
n_g
), &LSN(n_pagep),

1184 
	`NEXT_PGNO
(
n_g
),

1185 
_g
 =
NULL
 ? NULL : &
	`LSN
(nn_pagep),

1186 &
key_dbt
)) != 0)

1187 
r
;

1189 
	`LSN_NOT_LOGGED
(
w_l
);

1192 
	`LSN
(
p

w_l
;

1193 
	`LSN
(
n_g

w_l
;

1194 i(
	`NEXT_PGNO
(
n_g
!
PGNO_INVALID
)

1195 
	`LSN
(
_g

w_l
;

1197 i(
_g
 !
NULL
) {

1198 
	`PREV_PGNO
(
_g

	`PGNO
(
p
);

1199 i((
t
 = 
	`__memp_ut
(
mpf
,

1200 
_g
, 
dbc
->
iܙy
)) != 0) {

1201 
_g
 = 
NULL
;

1202 
r
;

1206 
tmp_pgno
 = 
	`PGNO
(
p
);

1207 
tmp_l
 = 
	`LSN
(
p
);

1208 
	`memy
(
p
, 
n_g
, 
dbp
->
pgsize
);

1209 
	`PGNO
(
p

tmp_pgno
;

1210 
	`LSN
(
p

tmp_l
;

1211 
	`PREV_PGNO
(
p

PGNO_INVALID
;

1217 i((
t
 = 
	`__hamc_dpg
(
dbc
, 
	`PGNO
(
n_g
),

1218 
	`PGNO
(
p
), 0, 
DB_HAM_DELFIRSTPG
, &
d
)) != 0)

1219 
r
;

1224 
h
->
dx
 = 0;

1225 
h
->
pgno
 = 
	`PGNO
(
p
);

1226 
h
->
d
 += order;

1228 i((
t
 = 
	`__db_
(
dbc
, 
n_g
)) != 0) {

1229 
n_g
 = 
NULL
;

1230 
r
;

1233 i((
t
 = 
	`__memp_fg
(
mpf
, &
	`PREV_PGNO
(
p
), 
dbc
->
txn
,

1234 
DB_MPOOL_DIRTY
, &
p_g
)) != 0)

1235 
r
;

1237 i(
	`NEXT_PGNO
(
p
!
PGNO_INVALID
) {

1238 i((
t
 = 
	`__memp_fg
(
mpf
, &
	`NEXT_PGNO
(
p
), 
dbc
->
txn
,

1239 
DB_MPOOL_DIRTY
, &
n_g
)) != 0)

1240 
r
;

1241 
n_l
 = &
	`LSN
(
n_g
);

1243 
n_g
 = 
NULL
;

1244 
n_l
 = 
NULL
;

1247 
	`NEXT_PGNO
(
p_g
NEXT_PGNO(
p
);

1248 i(
n_g
 !
NULL
)

1249 
	`PREV_PGNO
(
n_g

	`PGNO
(
p_g
);

1251 i(
	`DBC_LOGGING
(
dbc
)) {

1252 i((
t
 = 
	`__ham_wge_log
(
dbp
, 
dbc
->
txn
,

1253 &
w_l
, 0, 
DELOVFL
, 
	`PREV_PGNO
(
p
), &
	`LSN
(
p_g
),

1254 
	`PGNO
(
p
), &
	`LSN
), 
	`NEXT_PGNO
), 
n_l
)) != 0)

1255 
r
;

1257 
	`LSN_NOT_LOGGED
(
w_l
);

1260 
	`LSN
(
p_g

w_l
;

1261 i(
n_g
)

1262 
	`LSN
(
n_g

w_l
;

1263 
	`LSN
(
p

w_l
;

1265 i(
	`NEXT_PGNO
(
p
=
PGNO_INVALID
) {

1274 
h
->
pgno
 = 
	`PGNO
(
p_g
);

1275 
h
->
dx
 = 
	`NUM_ENT
(
p_g
);

1276 

 = 
DB_HAM_DELLASTPG
;

1282 
h
->
pgno
 = 
	`NEXT_PGNO
(
p
);

1283 
h
->
dx
 = 0;

1284 

 = 
DB_HAM_DELMIDPG
;

1292 
h
->
ge
 = 
NULL
;

1293 
chg_pgno
 = 
	`PGNO
(
p
);

1294 
t
 = 
	`__db_
(
dbc
, 
p
);

1295 i((
t_t
 = 
	`__memp_ut
(
mpf
,

1296 
p_g
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1297 
t
 = 
t_t
;

1298 i(
n_g
 !
NULL
 && (
t_t
 = 
	`__memp_ut
(
mpf
,

1299 
n_g
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1300 
t
 = 
t_t
;

1301 i(
t
 != 0)

1302  (
t
);

1303 i((
t
 = 
	`__hamc_dpg
(
dbc
,

1304 
chg_pgno
, 
h
->
pgno
, h->
dx
, 

, &
d
)) != 0)

1305  (
t
);

1306 
h
->
d
 += order;

1308  (
t
);

1310 
r
:

1311 i(
n_g
 !
NULL
)

1312 ()
	`__memp_ut
(
mpf
, 
n_g
, 
dbc
->
iܙy
);

1313 i(
_g
 !
NULL
)

1314 ()
	`__memp_ut
(
mpf
, 
_g
, 
dbc
->
iܙy
);

1315 i(
p_g
 !
NULL
)

1316 ()
	`__memp_ut
(
mpf
, 
p_g
, 
dbc
->
iܙy
);

1317  (
t
);

1318 
	}
}

1328 
	$__ham_
(
dbc
, 
dbt
, 
make_dup
)

1329 
DBC
 *
dbc
;

1330 
DBT
 *
dbt
;

1331 
u_t32_t
 
make_dup
;

1333 
DB
 *
dbp
;

1334 
DBC
 **
ay
, *
dbc_n
;

1335 
DBT
 
d_dbt
, 
tda
, 
tmp
, *
w_dbt
;

1336 
DB_ENV
 *
dbv
;

1337 
DB_LSN
 
w_l
;

1338 
HASH_CURSOR
 *
h
, *

;

1339 
db_dx_t
 
ig_dx
;

1340 
db_pgno_t
 
ig_pgno
;

1341 
u_t32_t
 
chge
;

1342 
u_t32_t
 
dup_ag
, 
n
, 
memsize
, 
wn
;

1343 
beyd_e
, 
is_big
, 
is_us
, 
t
, 
ty
, 
i
, 
found
, 
t_t
;

1344 
u_t8_t
 *
beg
, *
de
, *
d
, *
hk
, *
c
;

1345 *
memp
;

1363 
dbp
 = 
dbc
->dbp;

1364 
dbv
 = 
dbp
->dbenv;

1365 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1366 
found
 = 0;

1367 
dbc_n
 = 
memp
 = 
NULL
;

1368 
ay
 = 
NULL
;

1379 i(
dbt
->
size
 > dbt->
dn
) {

1380 
chge
 = 
dbt
->
size
 - dbt->
dn
;

1381 
is_us
 = 1;

1383 
chge
 = 
dbt
->
dn
 - dbt->
size
;

1384 
is_us
 = 0;

1387 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
);

1388 
is_big
 = 
	`HPAGE_PTYPE
(
hk
=
H_OFFPAGE
;

1390 i(
is_big
)

1391 
	`memy
(&
n
, 
	`HOFFPAGE_TLEN
(
hk
), (
u_t32_t
));

1393 
n
 = 
	`LEN_HKEYDATA
(
dbp
, 
h
->
ge
,

1394 
dbp
->
pgsize
, 
	`H_DATAINDEX
(
h
->
dx
));

1396 
beyd_e
 = 
dbt
->
doff
 + dbt->
dn
 > 
n
;

1397 i(
beyd_e
) {

1405 i(
is_us
)

1406 
chge
 +
dbt
->
doff
 + dbt->
dn
 - 
n
;

1407 i(
dbt
->
doff
 + dbt->
dn
 - 
n
 > 
chge
) {

1409 
is_us
 = 1;

1410 
chge
 = (
dbt
->
doff
 + dbt->
dn
 - 
n
) - change;

1412 
chge
 -(
dbt
->
doff
 + dbt->
dn
 - 
n
);

1415 
wn
 = (
is_us
 ? 
n
 + 
chge
 :en - change);

1416 i(
	`ISBIG
(
h
, 
wn
) ||

1417 (
is_us
 && 
chge
 > 
	`P_FREESPACE
(
dbp
, 
h
->
ge
)) ||

1418 
beyd_e
 || 
is_big
) {

1424 i(
is_us
 && 
dbc
->
txn
 =
NULL
 &&

1425 
dbp
->
mpf
->
m
->
maxpgno
 != 0 &&

1426 
dbp
->
mpf
->
m
->
maxpgno
 =dbp->mpf->m->
ϡ_pgno
)

1427  (
	`__db_a_r
(
dbp
));

1439 
	`memt
(&
tmp
, 0, (tmp));

1440 i((
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
,

1441 
h
->
ge
, 
	`H_KEYINDEX
(h->
dx
), &
tmp
,

1442 &
dbc
->
my_rkey
.
da
, &dbc->my_rkey.
un
)) != 0)

1443  (
t
);

1450 
ig_pgno
 = 
	`PGNO
(
h
->
ge
);

1451 
ig_dx
 = 
h
->
dx
;

1452 i((
t
 = 
	`__ham_g_i
(
dbp
,

1453 
ig_pgno
, 
ig_dx
, &
ay
)) != 0)

1454 
r
;

1457 
dup_ag
 = 
	`F_ISSET
(
h
, 
H_ISDUP
);

1458 i(
dbt
->
doff
 =0 && dbt->
dn
 =
n
) {

1459 
ty
 = (
dup_ag
 ? 
H_DUPLICATE
 : 
H_KEYDATA
);

1460 
w_dbt
 = 
dbt
;

1462 
ty
 = 
	`HPAGE_PTYPE
(
hk
!
H_OFFPAGE
 ?

1463 
	`HPAGE_PTYPE
(
hk
: 
H_KEYDATA
;

1464 
	`memt
(&
tda
, 0, (tdata));

1465 
memsize
 = 0;

1466 i((
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
, 
h
->
ge
,

1467 
	`H_DATAINDEX
(
h
->
dx
), &
tda
, &
memp
, &
memsize
))

1469 
r
;

1472 i(
is_us
) {

1473 i((
t
 = 
	`__os_loc
(
dbv
,

1474 
tda
.
size
 + 
chge
, &tda.
da
)) != 0)

1475  (
t
);

1476 
memp
 = 
tda
.
da
;

1477 
memsize
 = 
tda
.
size
 + 
chge
;

1478 
	`memt
((
u_t8_t
 *)
tda
.
da
 +da.
size
,

1479 0, 
chge
);

1481 
d
 = (
u_t8_t
 *)
tda
.
da
 +da.
size
;

1483 
c
 = (
u_t8_t
 *)
tda
.
da
 + 
dbt
->
doff
 + dbt->
dn
;

1484 i(
c
 < 
d
 && 
tda
.
size
 > 
dbt
->
doff
 + dbt->
dn
) {

1485 
n
 = 
tda
.
size
 - (
dbt
->
doff
 + dbt->
dn
);

1486 i(
is_us
)

1487 
de
 = 
c
 + 
chge
;

1489 
de
 = 
c
 - 
chge
;

1490 
	`memmove
(
de
, 
c
, 
n
);

1492 
	`memy
((
u_t8_t
 *)
tda
.
da
 + 
dbt
->
doff
,

1493 
dbt
->
da
, dbt->
size
);

1494 i(
is_us
)

1495 
tda
.
size
 +
chge
;

1497 
tda
.
size
 -
chge
;

1498 
w_dbt
 = &
tda
;

1500 i((
t
 = 
	`__ham_d_
(
dbc
, 
HAM_DEL_NO_CURSOR
)) != 0)

1501 
r
;

1508 i((
t
 = 
	`__dbc_dup
(
dbc
, &
dbc_n
, 
DB_POSITION
)) != 0)

1509 
r
;

1510 i((
t
 = 
	`__ham_add_
(
dbc
, &
tmp
, 
w_dbt
, 
ty
)) != 0)

1511 
r
;

1512 
	`F_SET
(
h
, 
dup_ag
);

1520 i(((
HASH_CURSOR
*)
dbc_n
->

)->
pgno
 !
h
->pgno ||

1521 ((
HASH_CURSOR
*)
dbc_n
->

)->
dx
 !
h
->indx) {

1529 i(
ay
 !
NULL
) {

1530 
i
 = 0; 
ay
[i] !
NULL
; i++) {

1531 

 = (
HASH_CURSOR
*)
ay
[
i
]->

;

1532 

->
pgno
 = 
h
->pgno;

1533 

->
dx
 = 
h
->indx;

1534 
	`F_CLR
(

, 
H_DELETED
);

1535 
found
 = 1;

1542 i(
found
 && 
	`DBC_LOGGING
(
dbc
) &&

1543 
	`IS_SUBTRANSACTION
(
dbc
->
txn
)) {

1544 i((
t
 =

1545 
	`__ham_chgpg_log
(
dbp
,

1546 
dbc
->
txn
, &
w_l
, 0,

1547 
DB_HAM_CHGPG
, 
ig_pgno
, 
h
->
pgno
,

1548 
ig_dx
, 
h
->
dx
)) != 0)

1549 
r
;

1557 
t
 = 
	`__hamc_upde
(
dbc_n
, 0, 
DB_HAM_CURADJ_DEL
, 0);

1560 
r
: i(
dbc_n
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc_n)) != 0 &&

1561 
t
 == 0)

1562 
t
 = 
t_t
;

1563 i(
ay
 !
NULL
)

1564 
	`__os_
(
dbv
, 
ay
);

1565 i(
memp
 !
NULL
)

1566 
	`__os_
(
dbv
, 
memp
);

1567  (
t
);

1574 
beg
 = 
	`HKEYDATA_DATA
(
	`H_PAIRDATA
(
dbp
, 
h
->
ge
, h->
dx
));

1575 
beg
 +
dbt
->
doff
;

1582 i(
	`DBC_LOGGING
(
dbc
)) {

1583 
d_dbt
.
da
 = 
beg
;

1584 
d_dbt
.
size
 = 
dbt
->
dn
;

1585 i((
t
 = 
	`__ham_a_log
(
dbp
,

1586 
dbc
->
txn
, &
w_l
, 0, 
	`PGNO
(
h
->
ge
),

1587 (
u_t32_t
)
	`H_DATAINDEX
(
h
->
dx
), &
	`LSN
(h->
ge
),

1588 (
t32_t
)
dbt
->
doff
, &
d_dbt
, dbt, 
make_dup
)) != 0)

1589  (
t
);

1591 
	`LSN_NOT_LOGGED
(
w_l
);

1593 
	`LSN
(
h
->
ge

w_l
;

1595 
	`__ham_ڷge_a
(
dbp
, 
h
->
ge
, (
u_t32_t
)
	`H_DATAINDEX
(h->
dx
),

1596 (
t32_t
)
dbt
->
doff
, 
chge
, 
is_us
, dbt);

1599 
	}
}

1617 
	$__ham_ڷge_a
(
dbp
, 
g
, 
ndx
, 
off
, 
chge
, 
is_us
, 
dbt
)

1618 
DB
 *
dbp
;

1619 
PAGE
 *
g
;

1620 
u_t32_t
 
ndx
;

1621 
t32_t
 
off
;

1622 
u_t32_t
 
chge
;

1623 
is_us
;

1624 
DBT
 *
dbt
;

1626 
db_dx_t
 
i
, *
p
;

1627 
t32_t
 
n
;

1628 
size_t
 
pgsize
;

1629 
u_t8_t
 *
c
, *
de
;

1630 
zo_me
;

1632 
pgsize
 = 
dbp
->pgsize;

1633 
p
 = 
	`P_INP
(
dbp
, 
g
);

1634 i(
chge
 != 0) {

1635 
zo_me
 = 0;

1636 
c
 = (
u_t8_t
 *)(
g
+ 
	`HOFFSET
(pagep);

1637 i(
off
 < 0)

1638 
n
 = 
p
[
ndx
] - 
	`HOFFSET
(
g
);

1639 i((
u_t32_t
)
off
 >=

1640 
	`LEN_HKEYDATA
(
dbp
, 
g
, 
pgsize
, 
ndx
)) {

1641 
n
 = (
t32_t
)(
	`HKEYDATA_DATA
(
	`P_ENTRY
(
dbp
, 
g
, 
ndx
))

1642 + 
	`LEN_HKEYDATA
(
dbp
, 
g
, 
pgsize
, 
ndx
- 
c
);

1643 
zo_me
 = 1;

1645 
n
 = (
t32_t
)(

1646 (
	`HKEYDATA_DATA
(
	`P_ENTRY
(
dbp
, 
g
, 
ndx
)+ 
off
) -

1647 
c
);

1648 i(
is_us
)

1649 
de
 = 
c
 - 
chge
;

1651 
de
 = 
c
 + 
chge
;

1652 
	`memmove
(
de
, 
c
, (
size_t
)
n
);

1653 i(
zo_me
)

1654 
	`memt
(
de
 + 
n
, 0, 
chge
);

1657 
i
 = 
ndx
; i < 
	`NUM_ENT
(
g
); i++) {

1658 i(
is_us
)

1659 
p
[
i
] -
chge
;

1661 
p
[
i
] +
chge
;

1663 i(
is_us
)

1664 
	`HOFFSET
(
g
-
chge
;

1666 
	`HOFFSET
(
g
+
chge
;

1668 i(
off
 >= 0)

1669 
	`memy
(
	`HKEYDATA_DATA
(
	`P_ENTRY
(
dbp
, 
g
, 
ndx
)+ 
off
,

1670 
dbt
->
da
, dbt->
size
);

1672 
	`memy
(
	`P_ENTRY
(
dbp
, 
g
, 
ndx
), 
dbt
->
da
, dbt->
size
);

1673 
	}
}

1679 
	$__ham_l_ge
(
dbc
, 
obuck
, 
nbuck
)

1680 
DBC
 *
dbc
;

1681 
u_t32_t
 
obuck
, 
nbuck
;

1683 
DB
 *
dbp
;

1684 
DBC
 **
ay
, *
tmp_dbc
;

1685 
DBT
 
key
, 
ge_dbt
;

1686 
DB_ENV
 *
dbv
;

1687 
DB_LOCK
 
block
;

1688 
DB_LSN
 
w_l
;

1689 
DB_MPOOLFILE
 *
mpf
;

1690 
HASH_CURSOR
 *
h
, *

;

1691 
PAGE
 **

, *
d_g
, *
mp_g
, *
w_g
;

1692 
db_dx_t
 
n
, 
de_dx
;

1693 
db_pgno_t
 
buck_pgno
, 
gno
, 
xt_pgno
;

1694 
u_t32_t
 
big_n
, 
n
;

1695 
found
, 
i
, 
t
, 
t_t
;

1696 *
big_buf
;

1698 
dbp
 = 
dbc
->dbp;

1699 
ay
 = 
NULL
;

1700 
dbv
 = 
dbp
->dbenv;

1701 
mpf
 = 
dbp
->mpf;

1702 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1703 
mp_g
 = 
d_g
 = 
w_g
 = 
NULL
;

1704 
gno
 = 
PGNO_INVALID
;

1705 
	`LOCK_INIT
(
block
);

1707 
buck_pgno
 = 
	`BUCKET_TO_PAGE
(
h
, 
obuck
);

1708 i((
t
 = 
	`__db_lg
(
dbc
,

1709 0, 
buck_pgno
, 
DB_LOCK_WRITE
, 0, &
block
)) != 0)

1710 
r
;

1711 i((
t
 = 
	`__memp_fg
(
mpf
, &
buck_pgno
, 
dbc
->
txn
,

1712 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
d_g
)) != 0)

1713 
r
;

1716 i(
d_g
->
ty
 =
P_HASH_UNSORTED
)

1717 i((
t
 = 
	`__ham_st_ge_curs
(
dbc
, 
d_g
)) != 0)

1718  (
t
);

1721 
gno
 = 
	`BUCKET_TO_PAGE
(
h
, 
nbuck
);

1722 i((
t
 = 
	`__memp_fg
(
mpf
, &
gno
, 
dbc
->
txn
,

1723 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
w_g
)) != 0)

1724 
r
;

1725 
	`P_INIT
(
w_g
,

1726 
dbp
->
pgsize
, 
gno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

1728 
mp_g
 = 
h
->
l_buf
;

1729 
	`memy
(
mp_g
, 
d_g
, 
dbp
->
pgsize
);

1731 i(
	`DBC_LOGGING
(
dbc
)) {

1732 
ge_dbt
.
size
 = 
dbp
->
pgsize
;

1733 
ge_dbt
.
da
 = 
d_g
;

1734 i((
t
 = 
	`__ham_lda_log
(
dbp
,

1735 
dbc
->
txn
, &
w_l
, 0, 
SPLITOLD
,

1736 
	`PGNO
(
d_g
), &
ge_dbt
, &
	`LSN
(old_pagep))) != 0)

1737 
r
;

1739 
	`LSN_NOT_LOGGED
(
w_l
);

1741 
	`LSN
(
d_g

w_l
;

1743 
	`P_INIT
(
d_g
, 
dbp
->
pgsize
, 
	`PGNO
(d_g), 
PGNO_INVALID
,

1744 
PGNO_INVALID
, 0, 
P_HASH
);

1746 
big_n
 = 0;

1747 
big_buf
 = 
NULL
;

1748 
	`memt
(&
key
, 0, (key));

1749 
mp_g
 !
NULL
) {

1750 i((
t
 = 
	`__ham_g_i
(
dbp
,

1751 
	`PGNO
(
mp_g
), 
NDX_INVALID
, &
ay
)) != 0)

1752 
r
;

1754 
n
 = 0; < (
db_dx_t
)
	`NUM_ENT
(
mp_g
); += 2) {

1755 i((
t
 = 
	`__db_t
(
dbp
, 
dbc
->
txn
, 
mp_g
,

1756 
	`H_KEYINDEX
(
n
), &
key
, &
big_buf
, &
big_n
)) != 0)

1757 
r
;

1759 i(
	`__ham__hash
(
dbc
, 
key
.
da
, key.
size
=
obuck
)

1760 

 = &
d_g
;

1762 

 = &
w_g
;

1768 
n
 = 
	`LEN_HITEM
(
dbp
, 
mp_g
, dbp->
pgsize
,

1769 
	`H_DATAINDEX
(
n
)) +

1770 
	`LEN_HITEM
(
dbp
, 
mp_g
, dbp->
pgsize
,

1771 
	`H_KEYINDEX
(
n
)) +

1772 2 * (
db_dx_t
);

1774 i(
	`P_FREESPACE
(
dbp
, *

< 
n
) {

1775 i(
	`DBC_LOGGING
(
dbc
)) {

1776 
ge_dbt
.
size
 = 
dbp
->
pgsize
;

1777 
ge_dbt
.
da
 = *

;

1778 i((
t
 = 
	`__ham_lda_log
(
dbp
,

1779 
dbc
->
txn
, &
w_l
, 0,

1780 
SPLITNEW
, 
	`PGNO
(*

), &
ge_dbt
,

1781 &
	`LSN
(*

))) != 0)

1782 
r
;

1784 
	`LSN_NOT_LOGGED
(
w_l
);

1785 
	`LSN
(*


w_l
;

1786 i((
t
 =

1787 
	`__ham_add_ovge
(
dbc
, *

, 1,p)) != 0)

1788 
r
;

1791 
de_dx
 = 
NDX_INVALID
;

1792 i((
t
 = 
	`__ham_cy
(
dbp
, 
dbc
->
txn
, 
mp_g
,

1793 
	`H_KEYINDEX
(
n
), *

, &
de_dx
)) != 0)

1794 
r
;

1817 i(
	`PGNO
(
mp_g
!
buck_pgno
) {

1818 i((
t
 = 
	`__db_curs_t
(
dbp
, 
dbc
->
txn
,

1819 
dbp
->
ty
, 
PGNO_INVALID
, 0,

1820 
DB_LOCK_INVALIDID
, &
tmp_dbc
)) != 0)

1821 
r
;

1822 
h
 = (
HASH_CURSOR
*)
tmp_dbc
->

;

1823 
h
->
pgno
 = 
	`PGNO
(*

);

1824 
h
->
dx
 = 
de_dx
;

1825 
h
->
dup_off
 = 0;

1826 
h
->
d
 = 0;

1827 i((
t
 = 
	`__hamc_upde
(

1828 
tmp_dbc
, 
n
, 
DB_HAM_CURADJ_ADD
, 0)) != 0)

1829 
r
;

1830 i((
t
 = 
	`__dbc_o
(
tmp_dbc
)) != 0)

1831 
r
;

1834 i(
ay
 !
NULL
) {

1835 
found
 = 0;

1836 
i
 = 0; 
ay
[i] !
NULL
; i++) {

1837 

 =

1838 (
HASH_CURSOR
 *)
ay
[
i
]->

;

1839 i(

->
pgno
 =
	`PGNO
(
mp_g
) &&

1840 

->
dx
 =
n
) {

1841 

->
pgno
 = 
	`PGNO
(*

);

1842 

->
dx
 = 
de_dx
;

1843 
found
 = 1;

1851 i(
found
 && 
	`DBC_LOGGING
(
dbc
) &&

1852 
	`IS_SUBTRANSACTION
(
dbc
->
txn
)) {

1853 i((
t
 =

1854 
	`__ham_chgpg_log
(
dbp
,

1855 
dbc
->
txn
, &
w_l
, 0,

1856 
DB_HAM_SPLIT
, 
	`PGNO
(
mp_g
),

1857 
	`PGNO
(*

), 
n
, 
de_dx
)) != 0)

1858 
r
;

1862 
xt_pgno
 = 
	`NEXT_PGNO
(
mp_g
);

1865 i(
	`PGNO
(
mp_g
!
buck_pgno
 && (
t
 =

1866 
	`__db_
(
dbc
, 
mp_g
)) != 0) {

1867 
mp_g
 = 
NULL
;

1868 
r
;

1871 i(
xt_pgno
 =
PGNO_INVALID
)

1872 
mp_g
 = 
NULL
;

1873 i((
t
 = 
	`__memp_fg
(
mpf
, &
xt_pgno
, 
dbc
->
txn
,

1874 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
mp_g
)) != 0)

1875 
r
;

1877 i(
mp_g
 !
NULL
) {

1878 i(
	`DBC_LOGGING
(
dbc
)) {

1879 
ge_dbt
.
size
 = 
dbp
->
pgsize
;

1880 
ge_dbt
.
da
 = 
mp_g
;

1881 i((
t
 = 
	`__ham_lda_log
(
dbp
,

1882 
dbc
->
txn
, &
w_l
, 0,

1883 
SPLITOLD
, 
	`PGNO
(
mp_g
),

1884 &
ge_dbt
, &
	`LSN
(
mp_g
))) != 0)

1885 
r
;

1887 
	`LSN_NOT_LOGGED
(
w_l
);

1888 
	`LSN
(
mp_g

w_l
;

1891 i(
ay
 !
NULL
)

1892 
	`__os_
(
dbv
, 
ay
);

1893 
ay
 = 
NULL
;

1895 i(
big_buf
 !
NULL
)

1896 
	`__os_
(
dbv
, 
big_buf
);

1903 i(
mp_g
 !
NULL
 && 
	`PGNO
emp_g!
buck_pgno
 &&

1904 (
t
 = 
	`__db_
(
dbc
, 
mp_g
)) != 0) {

1905 
mp_g
 = 
NULL
;

1906 
r
;

1912 i(
	`DBC_LOGGING
(
dbc
)) {

1913 
ge_dbt
.
size
 = 
dbp
->
pgsize
;

1914 
ge_dbt
.
da
 = 
d_g
;

1915 i((
t
 = 
	`__ham_lda_log
(
dbp
, 
dbc
->
txn
,

1916 &
w_l
, 0, 
SPLITNEW
, 
	`PGNO
(
d_g
), &
ge_dbt
,

1917 &
	`LSN
(
d_g
))) != 0)

1918 
r
;

1919 
	`LSN
(
d_g

w_l
;

1921 
ge_dbt
.
da
 = 
w_g
;

1922 i((
t
 = 
	`__ham_lda_log
(
dbp
, 
dbc
->
txn
, &
w_l
, 0,

1923 
SPLITNEW
, 
	`PGNO
(
w_g
), &
ge_dbt
,

1924 &
	`LSN
(
w_g
))) != 0)

1925 
r
;

1926 
	`LSN
(
w_g

w_l
;

1928 
	`LSN_NOT_LOGGED
(
	`LSN
(
d_g
));

1929 
	`LSN_NOT_LOGGED
(
	`LSN
(
w_g
));

1932 
t
 = 
	`__memp_ut
(
mpf
, 
d_g
, 
dbc
->
iܙy
);

1933 i((
t_t
 =

1934 
	`__memp_ut
(
mpf
, 
w_g
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1935 
t
 = 
t_t
;

1938 
r
: i(
d_g
 !
NULL
)

1939 ()
	`__memp_ut
(
mpf
, 
d_g
, 
dbc
->
iܙy
);

1940 i(
w_g
 !
NULL
) {

1941 
	`P_INIT
(
w_g
, 
dbp
->
pgsize
,

1942 
gno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

1943 ()
	`__memp_ut
(
mpf
, 
w_g
, 
dbc
->
iܙy
);

1945 i(
mp_g
 !
NULL
 && 
	`PGNO
emp_g!
buck_pgno
)

1946 ()
	`__memp_ut
(
mpf
, 
mp_g
, 
dbc
->
iܙy
);

1948 i((
t_t
 = 
	`__TLPUT
(
dbc
, 
block
)!0 && 
t
 == 0)

1949 
t
 = 
t_t
;

1950 i(
ay
 !
NULL
)

1951 
	`__os_
(
dbv
, 
ay
);

1952  (
t
);

1953 
	}
}

1965 
	$__ham_add_
(
dbc
, 
key
, 
v
, 
ty
)

1966 
DBC
 *
dbc
;

1967 cڡ 
DBT
 *
key
, *
v
;

1968 
ty
;

1970 cڡ 
DBT
 *
pkey
, *
pda
;

1971 
DB
 *
dbp
;

1972 
DBT
 
key_dbt
, 
da_dbt
;

1973 
DB_LSN
 
w_l
;

1974 
DB_MPOOLFILE
 *
mpf
;

1975 
HASH_CURSOR
 *
h
;

1976 
HOFFPAGE
 
doff
, 
koff
;

1977 
db_pgno_t
 
xt_pgno
, 
pgno
;

1978 
u_t32_t
 
da_size
, 
key_size
;

1979 
u_t32_t
 
ges
, 
gea
, 
size
, 
y
;

1980 
do_exnd
, 
da_ty
, 
is_keybig
, 
is_dabig
, 
key_ty
, 
mch
, 
t
;

1982 
dbp
 = 
dbc
->dbp;

1983 
mpf
 = 
dbp
->mpf;

1984 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1985 
do_exnd
 = 0;

1987 
pgno
 = 
h
->
ek_found_ge
 !
PGNO_INVALID
 ?

1988 
h
->
ek_found_ge
 : h->
pgno
;

1989 i(
h
->
ge
 =
NULL
 && (
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

1990 
DB_MPOOL_CREATE
, &
h
->
ge
)) != 0)

1991  (
t
);

1993 
key_size
 = 
	`HKEYDATA_PSIZE
(
key
->
size
);

1994 
da_size
 = 
	`HKEYDATA_PSIZE
(
v
->
size
);

1995 
is_keybig
 = 
	`ISBIG
(
h
, 
key
->
size
);

1996 
is_dabig
 = 
	`ISBIG
(
h
, 
v
->
size
);

1997 i(
is_keybig
)

1998 
key_size
 = 
HOFFPAGE_PSIZE
;

1999 i(
is_dabig
)

2000 
da_size
 = 
HOFFPAGE_PSIZE
;

2002 
size
 = 
key_size
 + 
da_size
;

2005 
	`H_NUMPAIRS
(
h
->
ge
&& 
	`NEXT_PGNO
(h->ge!
PGNO_INVALID
) {

2011 i(
	`P_FREESPACE
(
dbp
, 
h
->
ge
>
size
)

2013 
xt_pgno
 = 
	`NEXT_PGNO
(
h
->
ge
);

2014 i((
t
 = 
	`__ham_xt_age
(
dbc
, 
xt_pgno
)) != 0)

2015  (
t
);

2021 i(
	`P_FREESPACE
(
dbp
, 
h
->
ge
< 
size
) {

2022 
do_exnd
 = 1;

2023 i((
t
 = 
	`__memp_dty
(
mpf
,

2024 &
h
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

2025  (
t
);

2026 i((
t
 = 
	`__ham_add_ovge
(
dbc
,

2027 (
PAGE
 *)
h
->
ge
, 1, (PAGE **)&hcp->page)) != 0)

2028  (
t
);

2029 
h
->
pgno
 = 
	`PGNO
(h->
ge
);

2036 i(
dbc
->
txn
 =
NULL
 &&

2037 
dbp
->
mpf
->
m
->
maxpgno
 !0 && (
is_keybig
 || 
is_dabig
)) {

2038 
gea
 = 
	`P_MAXSPACE
(
dbp
, dbp->
pgsize
);

2039 
ges
 = 0;

2040 i(
is_dabig
)

2041 
ges
 = ((
da_size
 - 1/ 
gea
) + 1;

2042 i(
is_keybig
) {

2043 
ges
 +((
key
->
size
 - 1/ 
gea
) + 1;

2044 i(
ges
 >

2045 (
dbp
->
mpf
->
m
->
maxpgno
 - dbp->mpf->m->
ϡ_pgno
))

2046  (
	`__db_a_r
(
dbp
));

2050 i((
t
 = 
	`__memp_dty
(
mpf
,

2051 &
h
->
ge
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

2052  (
t
);

2057 
h
->
dx
 = h->
ek_found_dx
;

2058 
	`F_CLR
(
h
, 
H_DELETED
);

2059 i(
is_keybig
) {

2060 
koff
.
ty
 = 
H_OFFPAGE
;

2061 
	`UMRW_SET
(
koff
.
unud
[0]);

2062 
	`UMRW_SET
(
koff
.
unud
[1]);

2063 
	`UMRW_SET
(
koff
.
unud
[2]);

2064 i((
t
 = 
	`__db_poff
(
dbc
, 
key
, &
koff
.
pgno
)) != 0)

2065  (
t
);

2066 
koff
.

 = 
key
->
size
;

2067 
key_dbt
.
da
 = &
koff
;

2068 
key_dbt
.
size
 = (
koff
);

2069 
pkey
 = &
key_dbt
;

2070 
key_ty
 = 
H_OFFPAGE
;

2072 
pkey
 = 
key
;

2073 
key_ty
 = 
H_KEYDATA
;

2076 i(
is_dabig
) {

2077 
doff
.
ty
 = 
H_OFFPAGE
;

2078 
	`UMRW_SET
(
doff
.
unud
[0]);

2079 
	`UMRW_SET
(
doff
.
unud
[1]);

2080 
	`UMRW_SET
(
doff
.
unud
[2]);

2081 i((
t
 = 
	`__db_poff
(
dbc
, 
v
, &
doff
.
pgno
)) != 0)

2082  (
t
);

2083 
doff
.

 = 
v
->
size
;

2084 
da_dbt
.
da
 = &
doff
;

2085 
da_dbt
.
size
 = (
doff
);

2086 
pda
 = &
da_dbt
;

2087 
da_ty
 = 
H_OFFPAGE
;

2089 
pda
 = 
v
;

2090 
da_ty
 = 
ty
;

2094 i(((
PAGE
 *)
h
->
ge
)->
ty
 =
P_HASH_UNSORTED
)

2095 i((
t
 = 
	`__ham_st_ge_curs
(
dbc
, 
h
->
ge
)) != 0)

2096  (
t
);

2105 i(
	`PGNO
(
h
->
ge
!h->
ek_found_ge
) {

2106 i((
t
 = 
	`__ham_gdex
(
dbp
, 
dbc
->
txn
, 
h
->
ge
, 
pkey
,

2107 
key_ty
, &
mch
, &
h
->
ek_found_dx
)) != 0)

2108  (
t
);

2109 
h
->
ek_found_ge
 = 
	`PGNO
(h->
ge
);

2111 
	`DB_ASSERT
(
dbp
->
dbv
, 
h
->
ek_found_dx
 <
	`NUM_ENT
(h->
ge
));

2114 i(
	`DBC_LOGGING
(
dbc
)) {

2115 
y
 = 
PUTPAIR
;

2116 i(
is_dabig
)

2117 
y
 |
PAIR_DATAMASK
;

2118 i(
is_keybig
)

2119 
y
 |
PAIR_KEYMASK
;

2120 i(
ty
 =
H_DUPLICATE
)

2121 
y
 |
PAIR_DUPMASK
;

2123 i((
t
 = 
	`__ham_sd_log
(
dbp
, 
dbc
->
txn
, &
w_l
, 0,

2124 
y
, 
	`PGNO
(
h
->
ge
), (
u_t32_t
)h->
ek_found_dx
,

2125 &
	`LSN
(
h
->
ge
), 
pkey
, 
pda
)) != 0)

2126  (
t
);

2128 
	`LSN_NOT_LOGGED
(
w_l
);

2131 
	`LSN
(
h
->
ge

w_l
;

2133 i((
t
 = 
	`__ham_
(
dbp
, 
dbc
->
txn
, 
h
->
ge
,

2134 &
h
->
ek_found_dx
, 
pkey
, 
pda
, 
key_ty
, 
da_ty
)) != 0)

2135  (
t
);

2141 i((
t
 = 
	`__hamc_upde
(
dbc
, 
size
, 
DB_HAM_CURADJ_ADD
, 0)) != 0)

2142  (
t
);

2151 
h
->
pgno
 = 
	`PGNO
(h->
ge
);

2160 
h
->
dx
 = h->
ek_found_dx
;

2166 i(!
	`STD_LOCKING
(
dbc
)) {

2167 i((
t
 = 
	`__ham_dty_ma
(
dbc
, 0)) != 0)

2168  (
t
);

2169 
h
->
hdr
->
m
++;

2172 i(
do_exnd
 || (
h
->
hdr
->
f
 != 0 &&

2173 (
u_t32_t
)
	`H_NUMPAIRS
(
h
->
ge
> h->
hdr
->
f
))

2174 
	`F_SET
(
h
, 
H_EXPAND
);

2176 
	}
}

2193 
	$__ham_cy
(
dbp
, 
txn
, 
c_ge
, 
c_ndx
, 
de_ge
, 
de_dx
)

2194 
DB
 *
dbp
;

2195 
DB_TXN
 *
txn
;

2196 
PAGE
 *
c_ge
;

2197 
u_t32_t
 
c_ndx
;

2198 
PAGE
 *
de_ge
;

2199 
db_dx_t
 *
de_dx
;

2201 
DBT
 
tkey
, 
tda
;

2202 
db_dx_t
 
kdx
, 
ddx
;

2203 
kty
, 
dty
, 
t
;

2205 
t
 = 0;

2206 
	`memt
(&
tkey
, 0, (tkey));

2207 
	`memt
(&
tda
, 0, (tdata));

2209 
kty
 = 
	`HPAGE_TYPE
(
dbp
, 
c_ge
, 
	`H_KEYINDEX
(
c_ndx
));

2210 
dty
 = 
	`HPAGE_TYPE
(
dbp
, 
c_ge
, 
	`H_DATAINDEX
(
c_ndx
));

2211 
kdx
 = 
	`H_KEYINDEX
(
c_ndx
);

2212 
ddx
 = 
	`H_DATAINDEX
(
c_ndx
);

2213 i(
kty
 =
H_OFFPAGE
) {

2214 
tkey
.
da
 = 
	`P_ENTRY
(
dbp
, 
c_ge
, 
kdx
);

2215 
tkey
.
size
 = 
	`LEN_HITEM
(
dbp
, 
c_ge
, dbp->
pgsize
, 
kdx
);

2217 
tkey
.
da
 = 
	`HKEYDATA_DATA
(
	`P_ENTRY
(
dbp
, 
c_ge
, 
kdx
));

2218 
tkey
.
size
 = 
	`LEN_HKEYDATA
(
dbp
, 
c_ge
, dbp->
pgsize
, 
kdx
);

2220 i(
dty
 =
H_OFFPAGE
) {

2221 
tda
.
da
 = 
	`P_ENTRY
(
dbp
, 
c_ge
, 
ddx
);

2222 
tda
.
size
 = 
	`LEN_HITEM
(
dbp
, 
c_ge
, dbp->
pgsize
, 
ddx
);

2224 
tda
.
da
 = 
	`HKEYDATA_DATA
(
	`P_ENTRY
(
dbp
, 
c_ge
, 
ddx
));

2225 
tda
.
size
 = 
	`LEN_HKEYDATA
(
dbp
, 
c_ge
, dbp->
pgsize
, 
ddx
);

2227 i((
t
 = 
	`__ham_
(
dbp
, 
txn
, 
de_ge
, 
de_dx
,

2228 &
tkey
, &
tda
, 
kty
, 
dty
)) != 0)

2229  (
t
);

2231  (
t
);

2232 
	}
}

2243 
	$__ham_add_ovge
(
dbc
, 
g
, 
a
, 

)

2244 
DBC
 *
dbc
;

2245 
PAGE
 *
g
;

2246 
a
;

2247 
PAGE
 **

;

2249 
DB
 *
dbp
;

2250 
DB_LSN
 
w_l
;

2251 
DB_MPOOLFILE
 *
mpf
;

2252 
PAGE
 *
w_g
;

2253 
t
;

2255 
dbp
 = 
dbc
->dbp;

2256 
mpf
 = 
dbp
->mpf;

2258 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`IS_DIRTY
(
g
));

2260 i((
t
 = 
	`__db_w
(
dbc
, 
P_HASH
, &
w_g
)) != 0)

2261  (
t
);

2263 i(
	`DBC_LOGGING
(
dbc
)) {

2264 i((
t
 = 
	`__ham_wge_log
(
dbp
, 
dbc
->
txn
, &
w_l
, 0,

2265 
PUTOVFL
, 
	`PGNO
(
g
), &
	`LSN
ag), PGNO(
w_g
),

2266 &
	`LSN
(
w_g
), 
PGNO_INVALID
, 
NULL
)) != 0) {

2267 ()
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
);

2268  (
t
);

2271 
	`LSN_NOT_LOGGED
(
w_l
);

2274 
	`LSN
(
g
LSN(
w_g

w_l
;

2275 
	`NEXT_PGNO
(
g

	`PGNO
(
w_g
);

2277 
	`PREV_PGNO
(
w_g

	`PGNO
(
g
);

2279 i(
a
)

2280 
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
);

2282 *

 = 
w_g
;

2283  (
t
);

2284 
	}
}

2290 
	$__ham_g_age
(
dbc
, 
mode
)

2291 
DBC
 *
dbc
;

2292 
db_lockmode_t
 
mode
;

2294 
DB
 *
dbp
;

2295 
DB_LOCK
 
tmp_lock
;

2296 
DB_MPOOLFILE
 *
mpf
;

2297 
HASH_CURSOR
 *
h
;

2298 
t
;

2300 
dbp
 = 
dbc
->dbp;

2301 
mpf
 = 
dbp
->mpf;

2302 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

2303 
t
 = 0;

2316 
	`LOCK_INIT
(
tmp_lock
);

2317 i(
	`STD_LOCKING
(
dbc
)) {

2318 i(
h
->
lbuck
 !h->
buck
) {

2319 i((
t
 = 
	`__TLPUT
(
dbc
, 
h
->
lock
)) != 0)

2320  (
t
);

2321 
	`LOCK_INIT
(
h
->
lock
);

2328 i((
	`LOCK_ISSET
(
h
->
lock
) &&

2329 ((
h
->
lock_mode
 =
DB_LOCK_READ
 ||

2330 
	`F_ISSET
(
dbp
, 
DB_AM_READ_UNCOMMITTED
)) &&

2331 
mode
 =
DB_LOCK_WRITE
))) {

2333 
tmp_lock
 = 
h
->
lock
;

2334 
	`LOCK_INIT
(
h
->
lock
);

2338 i(!
	`LOCK_ISSET
(
h
->
lock
))

2340 i((
t
 = 
	`__ham_lock_buck
(
dbc
, 
mode
)) != 0)

2341  (
t
);

2343 i(
t
 == 0) {

2344 
h
->
lock_mode
 = 
mode
;

2345 
h
->
lbuck
 = h->
buck
;

2347 i((
t
 = 
	`__ENV_LPUT
(
dbp
->
dbv
, 
tmp_lock
)) != 0)

2348  (
t
);

2349 } i(
	`LOCK_ISSET
(
tmp_lock
))

2350 
h
->
lock
 = 
tmp_lock
;

2353 i(
t
 =0 && 
h
->
ge
 =
NULL
) {

2354 i(
h
->
pgno
 =
PGNO_INVALID
)

2355 
h
->
pgno
 = 
	`BUCKET_TO_PAGE
(h, h->
buck
);

2356 i((
t
 = 
	`__memp_fg
(
mpf
, &
h
->
pgno
, 
dbc
->
txn
,

2357 
DB_MPOOL_CREATE
, &
h
->
ge
)) != 0)

2358  (
t
);

2361 
	}
}

2371 
	$__ham_xt_age
(
dbc
, 
pgno
)

2372 
DBC
 *
dbc
;

2373 
db_pgno_t
 
pgno
;

2375 
DB
 *
dbp
;

2376 
DB_MPOOLFILE
 *
mpf
;

2377 
HASH_CURSOR
 *
h
;

2378 
PAGE
 *
p
;

2379 
t
;

2381 
dbp
 = 
dbc
->dbp;

2382 
mpf
 = 
dbp
->mpf;

2383 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

2385 i(
h
->
ge
 !
NULL
 &&

2386 (
t
 = 
	`__memp_ut
(
mpf
, 
h
->
ge
, 
dbc
->
iܙy
)) != 0)

2387  (
t
);

2388 
h
->
ge
 = 
NULL
;

2390 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
,

2391 
DB_MPOOL_CREATE
, &
p
)) != 0)

2392  (
t
);

2394 
h
->
ge
 = 
p
;

2395 
h
->
pgno
 =gno;

2396 
h
->
dx
 = 0;

2399 
	}
}

2408 
	$__ham_lock_buck
(
dbc
, 
mode
)

2409 
DBC
 *
dbc
;

2410 
db_lockmode_t
 
mode
;

2412 
HASH_CURSOR
 *
h
;

2413 
db_pgno_t
 
pgno
;

2414 
gma
, 
t
;

2416 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

2417 
gma
 = 
h
->
hdr
 =
NULL
 ? 1 : 0;

2418 i(
gma
)

2419 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

2420  (
t
);

2421 
pgno
 = 
	`BUCKET_TO_PAGE
(
h
, h->
buck
);

2422 i(
gma
)

2423 i((
t
 = 
	`__ham_a_ma
(
dbc
)) != 0)

2424  (
t
);

2426 
t
 = 
	`__db_lg
(
dbc
, 0, 
pgno
, 
mode
, 0, &
h
->
lock
);

2428 
h
->
lock_mode
 = 
mode
;

2429  (
t
);

2430 
	}
}

2444 
	$__ham_d
(
dbp
, 
p
, 
dx
)

2445 
DB
 *
dbp
;

2446 
PAGE
 *
p
;

2447 
u_t32_t
 
dx
;

2449 
db_dx_t
 
d
, 
n
, *
p
;

2450 
u_t8_t
 *
de
, *
c
;

2452 
p
 = 
	`P_INP
(
dbp
, 
p
);

2458 
d
 = 
	`H_PAIRSIZE
(
dbp
, 
p
, dbp->
pgsize
, 
dx
);

2465 i((
db_dx_t
)
dx
 !
	`NUM_ENT
(
p
) - 2) {

2470 
c
 = (
u_t8_t
 *)
p
 + 
	`HOFFSET
(p);

2476 
de
 = 
c
 + 
d
;

2477 
	`memmove
(
de
, 
c
, 
p
[
	`H_DATAINDEX
(
dx
)] - 
	`HOFFSET
(
p
));

2481 
	`HOFFSET
(
p
HOFFSET+ 
d
;

2482 
	`NUM_ENT
(
p
) = NUM_ENT(p) - 2;

2485 
n
 = (
db_dx_t
)
dx
; < (db_dx_t)(
	`NUM_ENT
(
p
));++)

2486 
p
[
n
] = i[+ 2] + 
d
;

2488 
	}
}

2521 
	$__hamc_dpg
(
dbc
, 
d_pgno
, 
w_pgno
, 
num_t
, 

, 
dp
)

2522 
DBC
 *
dbc
;

2523 
db_pgno_t
 
d_pgno
, 
w_pgno
;

2524 
u_t32_t
 
num_t
;

2525 
db_ham_mode
 

;

2526 
u_t32_t
 *
dp
;

2528 
DB
 *
dbp
, *
ldbp
;

2529 
DBC
 *

;

2530 
DB_ENV
 *
dbv
;

2531 
DB_LSN
 
l
;

2532 
DB_TXN
 *
my_txn
;

2533 
HASH_CURSOR
 *
h
;

2534 
db_dx_t
 
dx
;

2535 
u_t32_t
 
d
;

2536 
found
, 
t
;

2539 
dx
 = (

 =
DB_HAM_DELLASTPG
? 
num_t
 : 0;

2541 
dbp
 = 
dbc
->dbp;

2542 
dbv
 = 
dbp
->dbenv;

2544 
my_txn
 = 
	`IS_SUBTRANSACTION
(
dbc
->
txn
? dbc->tx: 
NULL
;

2545 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

2550 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

2551 
d
 = 1;

2552 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

2553 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

2554 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

2555 
	`TAILQ_FOREACH
(

, &
ldbp
->
aive_queue
, 
lks
) {

2556 i(

 =
dbc
 || cp->
dbty
 !
DB_HASH
)

2558 
h
 = (
HASH_CURSOR
 *)

->

;

2559 i(
h
->
pgno
 =
w_pgno
 &&

2560 !
	`MVCC_SKIP_CURADJ
(

, 
w_pgno
)) {

2561 i(
h
->
dx
 == indx &&

2562 
	`F_ISSET
(
h
, 
H_DELETED
) &&

2563 
h
->
d
 >= order)

2564 
d
 = 
h
->order + 1;

2565 
	`DB_ASSERT
(
dbv
, 

 !
DB_HAM_DELFIRSTPG
 ||

2566 
h
->
dx
 =
NDX_INVALID
 ||

2567 (
h
->
dx
 == 0 &&

2568 
	`F_ISSET
(
h
, 
H_DELETED
)));

2571 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

2574 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
dbp
, 
ldbp
);

2575 
found
 = 0;

2576 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
dbp
->adj_fileid;

2577 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

2578 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

2579 
	`TAILQ_FOREACH
(

, &
ldbp
->
aive_queue
, 
lks
) {

2580 i(

 =
dbc
 || cp->
dbty
 !
DB_HASH
)

2583 
h
 = (
HASH_CURSOR
 *)

->

;

2585 i(
h
->
pgno
 =
d_pgno
 &&

2586 !
	`MVCC_SKIP_CURADJ
(

, 
d_pgno
)) {

2587 

) {

2588 
DB_HAM_DELFIRSTPG
:

2593 
h
->
pgno
 = 
w_pgno
;

2599 i(
h
->
dx
 == indx)

2600 
h
->
d
 += order;

2602 
DB_HAM_DELMIDPG
:

2603 
h
->
pgno
 = 
w_pgno
;

2604 
	`DB_ASSERT
(
dbv
, 
h
->
dx
 == 0 &&

2605 
	`F_ISSET
(
h
, 
H_DELETED
));

2606 
h
->
d
 += order;

2608 
DB_HAM_DELLASTPG
:

2609 
h
->
pgno
 = 
w_pgno
;

2610 
	`DB_ASSERT
(
dbv
, 
h
->
dx
 == 0 &&

2611 
	`F_ISSET
(
h
, 
H_DELETED
));

2612 
h
->
dx
 = indx;

2613 
h
->
d
 += order;

2616  (
	`__db_unknown_th
(

2617 
dbv
, "__hamc_delpg"));

2619 i(
my_txn
 !
NULL
 && 

->
txn
 != my_txn)

2620 
found
 = 1;

2623 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

2625 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

2627 i(
found
 !0 && 
	`DBC_LOGGING
(
dbc
)) {

2628 i((
t
 = 
	`__ham_chgpg_log
(
dbp
, 
my_txn
, &
l
, 0, 

,

2629 
d_pgno
, 
w_pgno
, 
dx
, 
d
)) != 0)

2630  (
t
);

2632 *
dp
 = 
d
;

2634 
	}
}

	@../hash/hash_rec.c

44 
	~"db_cfig.h
"

46 
	~"db_t.h
"

47 
	~"dbc/db_ge.h
"

48 
	~"dbc/b.h
"

49 
	~"dbc/hash.h
"

50 
	~"dbc/log.h
"

51 
	~"dbc/mp.h
"

53 
__ham_loc_ges
 
__P
((
DB
 *, 
__ham_grouoc_gs
 *, 
DB_LSN
 *));

54 
__ham_loc_ges_42


55 
__P
((
DB
 *, 
__ham_grouoc_42_gs
 *, 
DB_LSN
 *));

64 
	$__ham_sd_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

65 
DB_ENV
 *
dbv
;

66 
DBT
 *
db
;

67 
DB_LSN
 *
lp
;

68 
db_cs
 

;

69 *
fo
;

71 
__ham_sd_gs
 *
gp
;

72 
DB
 *
fe_dbp
;

73 
DBC
 *
dbc
;

74 
DB_MPOOLFILE
 *
mpf
;

75 
PAGE
 *
g
;

76 
db_dx_t
 
ddx
;

77 
u_t32_t
 
code
;

78 
cmp_n
, 
cmp_p
, 
dty
, 
kty
, 
t
;

80 
g
 = 
NULL
;

82 
	`REC_PRINT
(
__ham_sd_t
);

83 
	`REC_INTRO
(
__ham_sd_ad
, 1, 0);

85 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

86 0, &
g
)) != 0) {

87 i(
	`DB_UNDO
(

)) {

88 i(
t
 =
DB_PAGE_NOTFOUND
)

89 
de
;

91 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

92 
out
;

95 #ifde
HAVE_FTRUNCATE


97 i(!
	`IS_ZERO_LSN
(
gp
->
g
))

98 
de
;

105 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

106 
DB_MPOOL_CREATE
, &
g
)) != 0) {

107 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

108 
out
;

112 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

113 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
g
);

114 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
g
);

126 
code
 = 
	`OPCODE_OF
(
gp
->opcode);

127 i((
code
 =
DELPAIR
 && 
cmp_n
 =0 && 
	`DB_UNDO
(

)) ||

128 (
code
 =
PUTPAIR
 && 
cmp_p
 =0 && 
	`DB_REDO
(

))) {

132 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

133 
kty
 = 
	`DB_UNDO
(

|| 
	`PAIR_ISKEYBIG
(
gp
->
code
) ?

134 
H_OFFPAGE
 : 
H_KEYDATA
;

135 i(
	`PAIR_ISDATADUP
(
gp
->
code
))

136 
dty
 = 
H_DUPLICATE
;

137 i(
	`DB_UNDO
(

|| 
	`PAIR_ISDATABIG
(
gp
->
code
))

138 
dty
 = 
H_OFFPAGE
;

140 
dty
 = 
H_KEYDATA
;

141 
ddx
 = (
db_dx_t
)
gp
->
ndx
;

142 i((
t
 = 
	`__ham_
(
fe_dbp
, 
NULL
, 
g
, &
ddx
,

143 &
gp
->
key
, &gp->
da
, 
kty
, 
dty
)) != 0)

144 
out
;

145 
	`LSN
(
g

	`DB_REDO
(

? *
lp
 : 
gp
->
g
;

146 } i((
code
 =
DELPAIR
 && 
cmp_p
 =0 && 
	`DB_REDO
(

)) ||

147 (
code
 =
PUTPAIR
 && 
cmp_n
 =0 && 
	`DB_UNDO
(

))) {

149 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

150 
	`__ham_d
(
fe_dbp
, 
g
, 
gp
->
ndx
);

151 
	`LSN
(
g

	`DB_REDO
(

? *
lp
 : 
gp
->
g
;

154 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

155 
out
;

156 
g
 = 
NULL
;

159 
de
: *
lp
 = 
gp
->
ev_l
;

160 
t
 = 0;

162 
out
: i(
g
 !
NULL
)

163 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

164 
REC_CLOSE
;

165 
	}
}

176 
	$__ham_wge_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

177 
DB_ENV
 *
dbv
;

178 
DBT
 *
db
;

179 
DB_LSN
 *
lp
;

180 
db_cs
 

;

181 *
fo
;

183 
__ham_wge_gs
 *
gp
;

184 
DB
 *
fe_dbp
;

185 
DBC
 *
dbc
;

186 
DB_MPOOLFILE
 *
mpf
;

187 
PAGE
 *
g
;

188 
chge
, 
cmp_n
, 
cmp_p
, 
t
;

190 
g
 = 
NULL
;

192 
	`REC_PRINT
(
__ham_wge_t
);

193 
	`REC_INTRO
(
__ham_wge_ad
, 1, 0);

195 
	`REC_FGET
(
mpf
, 
gp
->
w_pgno
, &
g
, 
age
);

196 
chge
 = 0;

204 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

205 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
g
);

206 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
g
);

208 i((
cmp_p
 =0 && 
	`DB_REDO
(

&& 
gp
->
code
 =
PUTOVFL
) ||

209 (
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
DELOVFL
)) {

211 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

212 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
, 
gp
->
w_pgno
,

213 
gp
->
ev_pgno
,rgp->
xt_pgno
, 0, 
P_HASH
);

214 
chge
 = 1;

215 } i((
cmp_p
 =0 && 
	`DB_REDO
(

&& 
gp
->
code
 =
DELOVFL
) ||

216 (
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
PUTOVFL
)) {

221 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

222 
chge
 = 1;

225 i(
chge
)

226 
	`LSN
(
g

	`DB_REDO
(

? *
lp
 : 
gp
->
g
;

228 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

229 
out
;

230 
g
 = 
NULL
;

233 
age
: i(
gp
->
ev_pgno
 !
PGNO_INVALID
) {

234 
	`REC_FGET
(
mpf
, 
gp
->
ev_pgno
, &
g
, 
age
);

236 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

237 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
evl
);

238 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
evl
);

239 
chge
 = 0;

241 i((
cmp_p
 =0 && 
	`DB_REDO
(

&& 
gp
->
code
 =
PUTOVFL
) ||

242 (
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
DELOVFL
)) {

244 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

245 
g
->
xt_pgno
 = 
gp
->
w_pgno
;

246 
chge
 = 1;

247 } i((
cmp_p
 == 0 &&

248 
	`DB_REDO
(

&& 
gp
->
code
 =
DELOVFL
) ||

249 (
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
PUTOVFL
)) {

251 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

252 
g
->
xt_pgno
 = 
gp
->next_pgno;

253 
chge
 = 1;

256 i(
chge
)

257 
	`LSN
(
g

	`DB_REDO
(

? *
lp
 : 
gp
->
evl
;

259 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

260 
out
;

261 
g
 = 
NULL
;

265 
age
: i(
gp
->
xt_pgno
 !
PGNO_INVALID
) {

266 
	`REC_FGET
(
mpf
, 
gp
->
xt_pgno
, &
g
, 
de
);

268 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

269 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
x
);

270 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
x
);

271 
chge
 = 0;

273 i((
cmp_p
 =0 && 
	`DB_REDO
(

&& 
gp
->
code
 =
PUTOVFL
) ||

274 (
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
DELOVFL
)) {

276 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

277 
g
->
ev_pgno
 = 
gp
->
w_pgno
;

278 
chge
 = 1;

279 } i((
cmp_p
 == 0 &&

280 
	`DB_REDO
(

&& 
gp
->
code
 =
DELOVFL
) ||

281 (
cmp_n
 =0 && 
	`DB_UNDO
(

&& 
gp
->
code
 =
PUTOVFL
)) {

283 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

284 
g
->
ev_pgno
 = 
gp
->prev_pgno;

285 
chge
 = 1;

288 i(
chge
)

289 
	`LSN
(
g

	`DB_REDO
(

? *
lp
 : 
gp
->
x
;

291 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

292 
out
;

293 
g
 = 
NULL
;

295 
de
: *
lp
 = 
gp
->
ev_l
;

296 
t
 = 0;

298 
out
: i(
g
 !
NULL
)

299 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

300 
REC_CLOSE
;

301 
	}
}

313 
	$__ham_a_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

314 
DB_ENV
 *
dbv
;

315 
DBT
 *
db
;

316 
DB_LSN
 *
lp
;

317 
db_cs
 

;

318 *
fo
;

320 
__ham_a_gs
 *
gp
;

321 
DB
 *
fe_dbp
;

322 
DBC
 *
dbc
;

323 
DB_MPOOLFILE
 *
mpf
;

324 
DBT
 
dbt
;

325 
PAGE
 *
g
;

326 
u_t32_t
 
chge
;

327 
cmp_n
, 
cmp_p
, 
is_us
, 
modifd
, 
t
;

328 
u_t8_t
 *
hk
;

330 
g
 = 
NULL
;

332 
	`REC_PRINT
(
__ham_a_t
);

333 
	`REC_INTRO
(
__ham_a_ad
, 1, 0);

335 
	`REC_FGET
(
mpf
, 
gp
->
pgno
, &
g
, 
de
);

337 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

338 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
g
);

339 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
g
);

341 
	`memt
(&
dbt
, 0, (dbt));

342 
modifd
 = 0;

349 i(
gp
->
wem
.
size
 >rgp->
dem
.size) {

350 
chge
 = 
gp
->
wem
.
size
 -rgp->
dem
.size;

351 
is_us
 = 1;

353 
chge
 = 
gp
->
dem
.
size
 -rgp->
wem
.size;

354 
is_us
 = 0;

356 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

358 
dbt
.
da
 = 
gp
->
wem
.data;

359 
dbt
.
size
 = 
gp
->
wem
.size;

360 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

361 
	`LSN
(
g
*
lp
;

366 
modifd
 = 1;

367 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

369 
dbt
.
da
 = 
gp
->
dem
.data;

370 
dbt
.
size
 = 
gp
->
dem
.size;

375 
is_us
 = !is_plus;

376 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

377 
	`LSN
(
g

gp
->
g
;

378 
modifd
 = 1;

381 i(
modifd
) {

382 
	`__ham_ڷge_a
(
fe_dbp
, 
g
,

383 
gp
->
ndx
,rgp->
off
, 
chge
, 
is_us
, &
dbt
);

384 i(
gp
->
makedup
) {

385 
hk
 = 
	`P_ENTRY
(
fe_dbp
, 
g
, 
gp
->
ndx
);

386 i(
	`DB_REDO
(

))

387 
	`HPAGE_PTYPE
(
hk

H_DUPLICATE
;

389 
	`HPAGE_PTYPE
(
hk

H_KEYDATA
;

393 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

394 
out
;

395 
g
 = 
NULL
;

397 
de
: *
lp
 = 
gp
->
ev_l
;

398 
t
 = 0;

400 
out
: i(
g
 !
NULL
)

401 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

402 
REC_CLOSE
;

403 
	}
}

412 
	$__ham_lda_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

413 
DB_ENV
 *
dbv
;

414 
DBT
 *
db
;

415 
DB_LSN
 *
lp
;

416 
db_cs
 

;

417 *
fo
;

419 
__ham_lda_gs
 *
gp
;

420 
DB
 *
fe_dbp
;

421 
DBC
 *
dbc
;

422 
DB_MPOOLFILE
 *
mpf
;

423 
PAGE
 *
g
;

424 
cmp_n
, 
cmp_p
, 
t
;

426 
g
 = 
NULL
;

428 
	`REC_PRINT
(
__ham_lda_t
);

429 
	`REC_INTRO
(
__ham_lda_ad
, 1, 0);

431 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
, 
NULL
,

432 0, &
g
)) != 0) {

433 i(
	`DB_UNDO
(

)) {

434 i(
t
 =
DB_PAGE_NOTFOUND
)

435 
de
;

437 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

438 
out
;

441 #ifde
HAVE_FTRUNCATE


443 i(!
	`IS_ZERO_LSN
(
gp
->
g
))

444 
de
;

451 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
pgno
,

452 
NULL
, 
DB_MPOOL_CREATE
, &
g
)) != 0) {

453 
t
 = 
	`__db_pgr
(
fe_dbp
, 
gp
->
pgno
,et);

454 
out
;

458 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

459 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
g
);

460 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
g
);

477 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

478 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

479 i(
gp
->
code
 =
SPLITNEW
)

481 
	`memy
(
g
, 
gp
->
geimage
.
da
,

482 
gp
->
geimage
.
size
);

483 i(
gp
->
code
 =
SORTPAGE
) {

484 i((
t
 = 
	`__ham_st_ge
(
fe_dbp
,

485 
NULL
, NULL, 
g
)) != 0)

486 
out
;

488 
	`LSN
(
g
*
lp
;

489 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

490 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

491 i(
gp
->
code
 =
SPLITOLD
 ||rgp->cod=
SORTPAGE
) {

493 
	`memy
(
g
, 
gp
->
geimage
.
da
,

494 
gp
->
geimage
.
size
);

496 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
, 
gp
->
pgno
,

497 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

498 
	`LSN
(
g

gp
->
g
;

500 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

501 
out
;

502 
g
 = 
NULL
;

504 
de
: *
lp
 = 
gp
->
ev_l
;

505 
t
 = 0;

507 
out
: i(
g
 !
NULL
)

508 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

509 
REC_CLOSE
;

510 
	}
}

520 
	$__ham_cyge_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

521 
DB_ENV
 *
dbv
;

522 
DBT
 *
db
;

523 
DB_LSN
 *
lp
;

524 
db_cs
 

;

525 *
fo
;

527 
__ham_cyge_gs
 *
gp
;

528 
DB
 *
fe_dbp
;

529 
DBC
 *
dbc
;

530 
DB_MPOOLFILE
 *
mpf
;

531 
PAGE
 *
g
;

532 
cmp_n
, 
cmp_p
, 
t
;

534 
g
 = 
NULL
;

536 
	`REC_PRINT
(
__ham_cyge_t
);

537 
	`REC_INTRO
(
__ham_cyge_ad
, 1, 0);

540 
	`REC_FGET
(
mpf
, 
gp
->
pgno
, &
g
, 
dext
);

542 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

543 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
g
);

544 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
g
);

546 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

548 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

549 
	`memy
(
g
, 
gp
->
ge
.
da
,rgp->ge.
size
);

550 
	`PGNO
(
g

gp
->
pgno
;

551 
	`PREV_PGNO
(
g

PGNO_INVALID
;

552 
	`LSN
(
g
*
lp
;

553 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

555 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

556 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
, 
gp
->
pgno
, 
PGNO_INVALID
,

557 
gp
->
xt_pgno
, 0, 
P_HASH
);

558 
	`LSN
(
g

gp
->
g
;

560 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

561 
out
;

562 
g
 = 
NULL
;

564 
dext
:

565 
	`REC_FGET
(
mpf
, 
gp
->
xt_pgno
, &
g
, 
do_
);

568 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

569 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
x
);

570 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
x
);

571 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

572 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

573 
	`LSN
(
g
*
lp
;

574 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

576 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

577 
	`memy
(
g
, 
gp
->
ge
.
da
,rgp->ge.
size
);

579 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

580 
out
;

581 
g
 = 
NULL
;

584 
do_
: i(
gp
->
ext_pgno
 =
PGNO_INVALID
)

585 
de
;

587 
	`REC_FGET
(
mpf
, 
gp
->
ext_pgno
, &
g
, 
de
);

589 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

590 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
ex
);

591 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
ex
);

593 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

595 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

596 
	`PREV_PGNO
(
g

gp
->
pgno
;

597 
	`LSN
(
g
*
lp
;

598 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

600 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

601 
	`PREV_PGNO
(
g

gp
->
xt_pgno
;

602 
	`LSN
(
g

gp
->
ex
;

604 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

605 
out
;

606 
g
 = 
NULL
;

608 
de
: *
lp
 = 
gp
->
ev_l
;

609 
t
 = 0;

611 
out
: i(
g
 !
NULL
)

612 ()
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
);

613 
REC_CLOSE
;

614 
	}
}

624 
	$__ham_magroup_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

625 
DB_ENV
 *
dbv
;

626 
DBT
 *
db
;

627 
DB_LSN
 *
lp
;

628 
db_cs
 

;

629 *
fo
;

631 
__ham_magroup_gs
 *
gp
;

632 
HASH_CURSOR
 *
h
;

633 
DB
 *
fe_dbp
;

634 
DBMETA
 *
mma
;

635 
DBC
 *
dbc
;

636 
DB_MPOOLFILE
 *
mpf
;

637 
PAGE
 *
g
;

638 
db_pgno_t
 
pgno
;

639 
u_t32_t
 
ags
;

640 
cmp_n
, 
cmp_p
, 
did_loc
, 
groupgrow
, 
t
;

642 
did_loc
 = 0;

643 
mma
 = 
NULL
;

644 
	`REC_PRINT
(
__ham_magroup_t
);

645 
	`REC_INTRO
(
__ham_magroup_ad
, 1, 1);

664 
groupgrow
 =

665 (
u_t32_t
)(1 << 
	`__db_log2
(
gp
->
buck
 + 1)) ==rgp->bucket + 1;

666 
pgno
 = 
gp
->pgno;

667 i(
gp
->
wloc
)

668 
pgno
 +
gp
->
buck
;

670 
ags
 = 0;

671 
g
 = 
NULL
;

672 #ide
HAVE_FTRUNCATE


673 
	`LF_SET
(
DB_MPOOL_CREATE
);

675 
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 
ags
, &
g
);

677 #ifde
HAVE_FTRUNCATE


679 i(
t
 !0 && 
	`DB_REDO
(

))

680 
t
 = 
	`__memp_fg
(
mpf
,

681 &
pgno
, 
NULL
, 
DB_MPOOL_CREATE
, &
g
);

682 i(
t
 =
DB_PAGE_NOTFOUND
)

683 
do_ma
;

685 i(
t
 != 0) {

686 i(
t
 !
ENOSPC
)

687 
out
;

688 
pgno
 = 0;

689 
do_ma
;

697 
did_loc
 = 
groupgrow
;

699 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

700 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
g
);

701 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
g
);

703 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

704 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

705 
g
->
l
 = *
lp
;

706 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

707 #ifde
HAVE_FTRUNCATE


709 i(
gp
->
wloc
) {

710 i(
g
 !
NULL
 && (
t
 = 
	`__memp_ut
(
mpf
,

711 
g
, 
DB_PRIORITY_VERY_LOW
)) != 0)

712 
out
;

713 
g
 = 
NULL
;

714 i((
t
 = 
	`__memp_run
(
mpf
, 
gp
->
pgno
, 0)) != 0)

715 
out
;

723 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

724 
g
->
l
 = 
gp
->
g
;

727 i(
g
 !
NULL
 &&

728 (
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)) != 0)

729 
out
;

731 
do_ma
:

733 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

734 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

735 
out
;

736 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
h
->
hdr
->
dbma
.
l
);

737 
cmp_p
 = 
	`LOG_COMPARE
(&
h
->
hdr
->
dbma
.
l
, &
gp
->
m
);

738 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
h
->
hdr
->
dbma
.
l
, &
gp
->
m
);

739 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

741 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
h
->
hdr
);

742 ++
h
->
hdr
->
max_buck
;

743 i(
groupgrow
) {

744 
h
->
hdr
->
low_mask
 = h->hdr->
high_mask
;

745 
h
->
hdr
->
high_mask
 =

746 (
gp
->
buck
 + 1| 
h
->
hdr
->
low_mask
;

748 
h
->
hdr
->
dbma
.
l
 = *
lp
;

749 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

751 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
h
->
hdr
);

752 
h
->
hdr
->
max_buck
 = 
gp
->
buck
;

753 i(
groupgrow
) {

754 
h
->
hdr
->
high_mask
 = 
gp
->
buck
;

755 
h
->
hdr
->
low_mask
 = h->hdr->
high_mask
 >> 1;

757 
h
->
hdr
->
dbma
.
l
 = 
gp
->
m
;

768 i(
did_loc
 &&

769 #ifde
HAVE_FTRUNCATE


770 !
	`DB_UNDO
(

) &&

772 
h
->
hdr
->
es
[
	`__db_log2
(
gp
->
buck
 + 1+ 1] =
PGNO_INVALID
) {

773 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
h
->
hdr
);

774 
h
->
hdr
->
es
[
	`__db_log2
(
gp
->
buck
 + 1) + 1] =

775 (
gp
->
pgno
 -rgp->
buck
) - 1;

777 #ifde
HAVE_FTRUNCATE


778 i(
cmp_n
 =0 && 
groupgrow
 && 
	`DB_UNDO
(

)) {

779 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
h
->
hdr
);

780 
h
->
hdr
->
es
[

781 
	`__db_log2
(
gp
->
buck
 + 1+ 1] = 
PGNO_INVALID
;

790 i(
gp
->
mmpgno
 !gp->
mpgno
) {

791 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
mmpgno
, 
NULL
,

792 
DB_MPOOL_EDIT
, &
mma
)) != 0) {

793 i(
	`DB_UNDO
(

&& 
t
 =
DB_PAGE_NOTFOUND
)

794 
t
 = 0;

795 
out
;

797 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
mma
->
l
);

798 
cmp_p
 = 
	`LOG_COMPARE
(&
mma
->
l
, &
gp
->
mm
);

799 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

800 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
mma
);

801 
mma
->
l
 = *
lp
;

802 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

803 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
mma
);

804 
mma
->
l
 = 
gp
->
mm
;

807 
mma
 = (
DBMETA
 *)
h
->
hdr
;

808 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
mma
);

811 #ifde
HAVE_FTRUNCATE


812 i(
cmp_n
 =0 && 
	`DB_UNDO
(

))

813 
mma
->
ϡ_pgno
 = 
gp
->last_pgno;

814 i(
	`DB_REDO
(

))

816 i(
mma
->
ϡ_pgno
 < 
pgno
)

817 
mma
->
ϡ_pgno
 = 
pgno
;

819 i(
gp
->
mmpgno
 !gp->
mpgno
 &&

820 (
t
 = 
	`__memp_ut
(
mpf
, 
mma
, 
dbc
->
iܙy
)) != 0)

821 
out
;

822 
mma
 = 
NULL
;

824 
de
: *
lp
 = 
gp
->
ev_l
;

825 
t
 = 0;

827 
out
: i(
mma
 !
NULL
)

828 ()
	`__memp_ut
(
mpf
, 
mma
, 
dbc
->
iܙy
);

829 i(
dbc
 !
NULL
)

830 ()
	`__ham_a_ma
(
dbc
);

831 i(
t
 =
ENOENT
 && 

 =
DB_TXN_BACKWARD_ALLOC
)

832 
t
 = 0;

834 
REC_CLOSE
;

835 
	}
}

845 
	$__ham_grouoc_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

846 
DB_ENV
 *
dbv
;

847 
DBT
 *
db
;

848 
DB_LSN
 *
lp
;

849 
db_cs
 

;

850 *
fo
;

852 
__ham_grouoc_gs
 *
gp
;

853 
DBMETA
 *
mma
;

854 
DB_MPOOLFILE
 *
mpf
;

855 
DB
 *
fe_dbp
;

856 
DBC
 *
dbc
;

857 
PAGE
 *
g
;

858 
db_pgno_t
 
pgno
;

859 
cmp_n
, 
cmp_p
, 
t
;

861 
mma
 = 
NULL
;

862 
	`REC_PRINT
(
__ham_grouoc_t
);

863 
	`REC_INTRO
(
__ham_grouoc_ad
, 0, 0);

865 
pgno
 = 
PGNO_BASE_MD
;

866 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
,

867 0, &
mma
)) != 0) {

868 i(
	`DB_REDO
(

)) {

869 
t
 = 
	`__db_pgr
(
fe_dbp
, 
pgno
,et);

870 
out
;

872 
de
;

875 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
mma
));

876 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
mma
), &
gp
->
ma_l
);

877 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
mma
), &
gp
->
ma_l
);

888 
pgno
 = 
gp
->
t_pgno
 +rgp->
num
 - 1;

889 i(
	`DB_REDO
(

)) {

890 i((
t
 = 
	`__ham_loc_ges
(
fe_dbp
, 
gp
, 
lp
)) != 0)

891 
out
;

892 i(
cmp_p
 == 0) {

893 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
mma
);

894 
	`LSN
(
mma
*
lp
;

896 } i(
	`DB_UNDO
(

)) {

901 
g
 = 
NULL
;

902 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
,

903 
DB_MPOOL_EDIT
, &
g
)) == 0) {

904 i(
	`LOG_COMPARE
(&
g
->
l
, 
lp
) != 0) {

905 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
,

906 
DB_PRIORITY_VERY_LOW
)) != 0)

907 
out
;

908 
g
 = 
NULL
;

910 } i(
t
 !
DB_PAGE_NOTFOUND
)

911 
out
;

912 #ifde
HAVE_FTRUNCATE


917 i(
g
 !
NULL
) {

918 i((
t
 = 
	`__memp_ut
(
mpf
,

919 
g
, 
DB_PRIORITY_VERY_LOW
)) != 0)

920 
out
;

921 i((
t
 =

922 
	`__memp_run
(
mpf
, 
gp
->
t_pgno
, 0)) != 0)

923 
out
;

930 i(
cmp_n
 == 0) {

931 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
mma
);

932 
mma
->
ϡ_pgno
 = 
gp
->last_pgno;

934 
pgno
 = 0;

939 i(
g
 !
NULL
) {

940 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

941 i(
	`LOG_COMPARE
(&
g
->
l
, 
lp
) == 0)

942 
	`ZERO_LSN
(
g
->
l
);

944 i((
t
 =

945 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

946 
out
;

951 i((
t
 = 
	`__db_add_limbo
(
dbv
,

952 
fo
, 
gp
->
feid
,rgp->
t_pgno
,rgp->
num
)) != 0)

953 
out
;

955 i(
cmp_n
 == 0) {

956 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
mma
);

957 
	`LSN
(
mma

gp
->
ma_l
;

966 i(
pgno
 > 
mma
->
ϡ_pgno
) {

967 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
mma
);

968 
mma
->
ϡ_pgno
 = 
pgno
;

971 
de
: i(
t
 == 0)

972 *
lp
 = 
gp
->
ev_l
;

973 
t
 = 0;

975 
out
: i(
mma
 !
NULL
)

976 ()
	`__memp_ut
(
mpf
, 
mma
, 
fe_dbp
->
iܙy
);

978 i(
t
 =
ENOENT
 && 

 =
DB_TXN_BACKWARD_ALLOC
)

979 
t
 = 0;

980 
REC_CLOSE
;

981 
	}
}

994 
	$__ham_loc_ges
(
fe_dbp
, 
gp
, 
lp
)

995 
DB
 *
fe_dbp
;

996 
__ham_grouoc_gs
 *
gp
;

997 
DB_LSN
 *
lp
;

999 
DB_MPOOLFILE
 *
mpf
;

1000 
PAGE
 *
g
;

1001 
db_pgno_t
 
pgno
;

1002 
t
;

1004 
mpf
 = 
fe_dbp
->mpf;

1007 
pgno
 = 
gp
->
t_pgno
 +rgp->
num
 - 1;

1010 i((
t
 =

1011 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
g
)) == 0) {

1012 i(
	`NUM_ENT
(
g
=0 && 
	`IS_ZERO_LSN
ag->
l
))

1013 
_ge
;

1014  (
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
));

1018 i((
t
 = 
	`__memp_fg
(

1019 
mpf
, &
pgno
, 
NULL
, 
DB_MPOOL_CREATE
, &
g
)) != 0)

1020  (
	`__db_pgr
(
fe_dbp
, 
pgno
, 
t
));

1022 
_ge
:

1024 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1025 
	`P_INIT
(
g
, 
fe_dbp
->
pgsize
,

1026 
pgno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

1027 
g
->
l
 = *
lp
;

1029 
out
:  (
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
));

1030 
	}
}

1040 
	$__ham_cudj_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1041 
DB_ENV
 *
dbv
;

1042 
DBT
 *
db
;

1043 
DB_LSN
 *
lp
;

1044 
db_cs
 

;

1045 *
fo
;

1047 
__ham_cudj_gs
 *
gp
;

1048 
DB_MPOOLFILE
 *
mpf
;

1049 
DB
 *
fe_dbp
;

1050 
DBC
 *
dbc
;

1051 
t
;

1052 
HASH_CURSOR
 *
h
;

1053 
db_ham_cudj
 
mode
, 
hamc_mode
;

1055 
	`REC_PRINT
(
__ham_cudj_t
);

1056 
	`REC_INTRO
(
__ham_cudj_ad
, 0, 1);

1058 i(

 !
DB_TXN_ABORT
)

1059 
de
;

1061 
mode
 = (
db_ham_cudj
)
gp
->
add
;

1067 
mode
) {

1068 
DB_HAM_CURADJ_DEL
:

1069 
hamc_mode
 = 
DB_HAM_CURADJ_ADD
;

1071 
DB_HAM_CURADJ_ADD
:

1072 
hamc_mode
 = 
DB_HAM_CURADJ_DEL
;

1074 
DB_HAM_CURADJ_ADDMOD
:

1075 
hamc_mode
 = 
DB_HAM_CURADJ_DELMOD
;

1077 
DB_HAM_CURADJ_DELMOD
:

1078 
hamc_mode
 = 
DB_HAM_CURADJ_ADDMOD
;

1081 
	`__db_rx
(
dbv
,

1083 
t
 = 
EINVAL
;

1084 
out
;

1092 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1093 
h
->
pgno
 = 
gp
->pgno;

1094 
h
->
dx
 = 
gp
->indx;

1095 
h
->
dup_off
 = 
gp
->dup_off;

1096 
h
->
d
 = 
gp
->order;

1097 i(
mode
 =
DB_HAM_CURADJ_DEL
)

1098 
	`F_SET
(
h
, 
H_DELETED
);

1099 ()
	`__hamc_upde
(
dbc
, 
gp
->
n
, 
hamc_mode
,rgp->
is_dup
);

1101 
de
: *
lp
 = 
gp
->
ev_l
;

1102 
out
: 
REC_CLOSE
;

1103 
	}
}

1113 
	$__ham_chgpg_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1114 
DB_ENV
 *
dbv
;

1115 
DBT
 *
db
;

1116 
DB_LSN
 *
lp
;

1117 
db_cs
 

;

1118 *
fo
;

1120 
__ham_chgpg_gs
 *
gp
;

1121 
BTREE_CURSOR
 *
d
;

1122 
DB_MPOOLFILE
 *
mpf
;

1123 
DB
 *
fe_dbp
, *
ldbp
;

1124 
DBC
 *
dbc
;

1125 
t
;

1126 
DBC
 *

;

1127 
HASH_CURSOR
 *
l
;

1128 
u_t32_t
 
d
, 
dx
;

1130 
	`REC_PRINT
(
__ham_chgpg_t
);

1131 
	`REC_INTRO
(
__ham_chgpg_ad
, 0, 0);

1133 i(

 !
DB_TXN_ABORT
)

1134 
de
;

1137 
dx
 = 
gp
->
d_dx
;

1138 
d
 = 
gp
->
w_dx
;

1140 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_dbli
);

1141 
	`FIND_FIRST_DB_MATCH
(
dbv
, 
fe_dbp
, 
ldbp
);

1143 
ldbp
 !
NULL
 &&dbp->
adj_feid
 =
fe_dbp
->adj_fileid;

1144 
ldbp
 = 
	`TAILQ_NEXT
dbp, 
dblilks
)) {

1145 
	`MUTEX_LOCK
(
dbv
, 
fe_dbp
->
mux
);

1146 
	`TAILQ_FOREACH
(

, &
ldbp
->
aive_queue
, 
lks
) {

1147 
l
 = (
HASH_CURSOR
 *)

->

;

1149 
gp
->
mode
) {

1150 
DB_HAM_DELFIRSTPG
:

1151 i(
l
->
pgno
 !
gp
->
w_pgno
 ||

1152 
	`MVCC_SKIP_CURADJ
(

, 
l
->
pgno
))

1154 i(
l
->
dx
 != indx ||

1155 !
	`F_ISSET
(
l
, 
H_DELETED
) ||

1156 
l
->
d
 >= order) {

1157 
l
->
pgno
 = 
gp
->
d_pgno
;

1158 i(
l
->
dx
 == indx)

1159 
l
->
d
 -= order;

1162 
DB_HAM_DELMIDPG
:

1163 
DB_HAM_DELLASTPG
:

1164 i(
l
->
pgno
 =
gp
->
w_pgno
 &&

1165 
l
->
dx
 == indx &&

1166 
	`F_ISSET
(
l
, 
H_DELETED
) &&

1167 
l
->
d
 >= order &&

1168 !
	`MVCC_SKIP_CURADJ
(

, 
l
->
pgno
)) {

1169 
l
->
pgno
 = 
gp
->
d_pgno
;

1170 
l
->
d
 -= order;

1171 
l
->
dx
 = 0;

1174 
DB_HAM_CHGPG
:

1182 i(
	`F_ISSET
(
l
, 
H_DELETED
))

1185 
DB_HAM_SPLIT
:

1186 i(
l
->
pgno
 =
gp
->
w_pgno
 &&

1187 
l
->
dx
 =
gp
->
w_dx
 &&

1188 !
	`MVCC_SKIP_CURADJ
(

, 
l
->
pgno
)) {

1189 
l
->
dx
 = 
gp
->
d_dx
;

1190 
l
->
pgno
 = 
gp
->
d_pgno
;

1193 
DB_HAM_DUP
:

1194 i(
l
->
d
 =
NULL
)

1196 
d
 = (
BTREE_CURSOR
 *)
l
->
d
->

;

1197 i(
d
->
pgno
 !
gp
->
w_pgno
 ||

1198 
d
->
dx
 !
gp
->
w_dx
 ||

1199 
	`MVCC_SKIP_CURADJ
(
l
->
d
, 
d
->
pgno
))

1202 i(
	`F_ISSET
(
d
, 
C_DELETED
))

1203 
	`F_SET
(
l
, 
H_DELETED
);

1213 
	`MUTEX_UNLOCK
(
dbv
, 
fe_dbp
->
mux
);

1214 i((
t
 = 
	`__dbc_o
(
l
->
d
)) != 0)

1215 
out
;

1216 
	`MUTEX_LOCK
(
dbv
, 
fe_dbp
->
mux
);

1217 
l
->
d
 = 
NULL
;

1221 
	`MUTEX_UNLOCK
(
dbv
, 
fe_dbp
->
mux
);

1223 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_dbli
);

1225 
de
: *
lp
 = 
gp
->
ev_l
;

1226 
out
: 
REC_CLOSE
;

1227 
	}
}

1237 
	$__ham_magroup_42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1238 
DB_ENV
 *
dbv
;

1239 
DBT
 *
db
;

1240 
DB_LSN
 *
lp
;

1241 
db_cs
 

;

1242 *
fo
;

1244 
__ham_magroup_42_gs
 *
gp
;

1245 
HASH_CURSOR
 *
h
;

1246 
DB
 *
fe_dbp
;

1247 
DBMETA
 *
mma
;

1248 
DBC
 *
dbc
;

1249 
DB_MPOOLFILE
 *
mpf
;

1250 
PAGE
 *
g
;

1251 
db_pgno_t
 
pgno
;

1252 
u_t32_t
 
ags
;

1253 
cmp_n
, 
cmp_p
, 
did_loc
, 
groupgrow
, 
t
;

1255 
did_loc
 = 0;

1256 
mma
 = 
NULL
;

1257 
	`REC_PRINT
(
__ham_magroup_42_t
);

1258 
	`REC_INTRO
(
__ham_magroup_42_ad
, 1, 1);

1277 
groupgrow
 =

1278 (
u_t32_t
)(1 << 
	`__db_log2
(
gp
->
buck
 + 1)) ==rgp->bucket + 1;

1279 
pgno
 = 
gp
->pgno;

1280 i(
gp
->
wloc
)

1281 
pgno
 +
gp
->
buck
;

1283 
ags
 = 0;

1284 
g
 = 
NULL
;

1285 
	`LF_SET
(
DB_MPOOL_CREATE
);

1286 
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 
ags
, &
g
);

1288 i(
t
 != 0) {

1289 i(
t
 !
ENOSPC
)

1290 
out
;

1291 
pgno
 = 0;

1292 
do_ma
;

1300 
did_loc
 = 
groupgrow
;

1302 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

1303 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
g
), &
gp
->
g
);

1304 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
g
), &
gp
->
g
);

1306 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1307 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

1308 
g
->
l
 = *
lp
;

1309 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

1314 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
g
);

1315 
g
->
l
 = 
gp
->
g
;

1317 i(
g
 !
NULL
 &&

1318 (
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)) != 0)

1319 
out
;

1321 
do_ma
:

1323 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

1324 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

1325 
out
;

1326 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
h
->
hdr
->
dbma
.
l
);

1327 
cmp_p
 = 
	`LOG_COMPARE
(&
h
->
hdr
->
dbma
.
l
, &
gp
->
m
);

1328 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
h
->
hdr
->
dbma
.
l
, &
gp
->
m
);

1329 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1331 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
h
->
hdr
);

1332 ++
h
->
hdr
->
max_buck
;

1333 i(
groupgrow
) {

1334 
h
->
hdr
->
low_mask
 = h->hdr->
high_mask
;

1335 
h
->
hdr
->
high_mask
 =

1336 (
gp
->
buck
 + 1| 
h
->
hdr
->
low_mask
;

1338 
h
->
hdr
->
dbma
.
l
 = *
lp
;

1339 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

1341 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
h
->
hdr
);

1342 
h
->
hdr
->
max_buck
 = 
gp
->
buck
;

1343 i(
groupgrow
) {

1344 
h
->
hdr
->
high_mask
 = 
gp
->
buck
;

1345 
h
->
hdr
->
low_mask
 = h->hdr->
high_mask
 >> 1;

1347 
h
->
hdr
->
dbma
.
l
 = 
gp
->
m
;

1358 i(
did_loc
 &&

1359 
h
->
hdr
->
es
[
	`__db_log2
(
gp
->
buck
 + 1+ 1] =
PGNO_INVALID
) {

1360 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
h
->
hdr
);

1361 
h
->
hdr
->
es
[
	`__db_log2
(
gp
->
buck
 + 1) + 1] =

1362 (
gp
->
pgno
 -rgp->
buck
) - 1;

1370 i(
gp
->
mmpgno
 !gp->
mpgno
) {

1371 i((
t
 = 
	`__memp_fg
(
mpf
, &
gp
->
mmpgno
, 
NULL
,

1372 
DB_MPOOL_EDIT
, &
mma
)) != 0) {

1373 i(
	`DB_UNDO
(

&& 
t
 =
DB_PAGE_NOTFOUND
)

1374 
t
 = 0;

1375 
out
;

1377 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
mma
->
l
);

1378 
cmp_p
 = 
	`LOG_COMPARE
(&
mma
->
l
, &
gp
->
mm
);

1379 i(
cmp_p
 =0 && 
	`DB_REDO
(

)) {

1380 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
mma
);

1381 
mma
->
l
 = *
lp
;

1382 } i(
cmp_n
 =0 && 
	`DB_UNDO
(

)) {

1383 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
mma
);

1384 
mma
->
l
 = 
gp
->
mm
;

1387 
mma
 = (
DBMETA
 *)
h
->
hdr
;

1388 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
mma
);

1391 i(
mma
->
ϡ_pgno
 < 
pgno
)

1392 
mma
->
ϡ_pgno
 = 
pgno
;

1394 i(
gp
->
mmpgno
 !gp->
mpgno
 &&

1395 (
t
 = 
	`__memp_ut
(
mpf
, 
mma
, 
dbc
->
iܙy
)) != 0)

1396 
out
;

1397 
mma
 = 
NULL
;

1399 
de
: *
lp
 = 
gp
->
ev_l
;

1400 
t
 = 0;

1402 
out
: i(
mma
 !
NULL
)

1403 ()
	`__memp_ut
(
mpf
, 
mma
, 
dbc
->
iܙy
);

1404 i(
dbc
 !
NULL
)

1405 ()
	`__ham_a_ma
(
dbc
);

1406 i(
t
 =
ENOENT
 && 

 =
DB_TXN_BACKWARD_ALLOC
)

1407 
t
 = 0;

1409 
REC_CLOSE
;

1410 
	}
}

1420 
	$__ham_grouoc_42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

1421 
DB_ENV
 *
dbv
;

1422 
DBT
 *
db
;

1423 
DB_LSN
 *
lp
;

1424 
db_cs
 

;

1425 *
fo
;

1427 
__ham_grouoc_42_gs
 *
gp
;

1428 
DBMETA
 *
mma
;

1429 
DB_MPOOLFILE
 *
mpf
;

1430 
DB
 *
fe_dbp
;

1431 
DBC
 *
dbc
;

1432 
PAGE
 *
g
;

1433 
db_pgno_t
 
pgno
;

1434 
cmp_n
, 
cmp_p
, 
t
;

1436 
mma
 = 
NULL
;

1437 
	`REC_PRINT
(
__ham_grouoc_42_t
);

1438 
	`REC_INTRO
(
__ham_grouoc_42_ad
, 0, 0);

1440 
pgno
 = 
PGNO_BASE_MD
;

1441 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
mma
)) != 0) {

1442 i(
	`DB_REDO
(

)) {

1443 
t
 = 
	`__db_pgr
(
fe_dbp
, 
pgno
,et);

1444 
out
;

1446 
de
;

1449 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
mma
));

1450 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
mma
), &
gp
->
ma_l
);

1451 
	`CHECK_LSN
(
dbv
, 

, 
cmp_p
, &
	`LSN
(
mma
), &
gp
->
ma_l
);

1462 
pgno
 = 
gp
->
t_pgno
 +rgp->
num
 - 1;

1463 i(
	`DB_REDO
(

)) {

1464 i((
t
 = 
	`__ham_loc_ges_42
(
fe_dbp
, 
gp
, 
lp
)) != 0)

1465 
out
;

1466 i(
cmp_p
 == 0) {

1467 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
mma
);

1468 
	`LSN
(
mma
*
lp
;

1470 } i(
	`DB_UNDO
(

)) {

1475 
g
 = 
NULL
;

1476 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
g
)) == 0) {

1477 i(
	`LOG_COMPARE
(&
g
->
l
, 
lp
) != 0) {

1478 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
,

1479 
DB_PRIORITY_VERY_LOW
)) != 0)

1480 
out
;

1481 
g
 = 
NULL
;

1483 } i(
t
 !
DB_PAGE_NOTFOUND
)

1484 
out
;

1488 i(
g
 !
NULL
) {

1489 i(
	`LOG_COMPARE
(&
g
->
l
, 
lp
) == 0) {

1490 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
g
);

1491 
	`ZERO_LSN
(
g
->
l
);

1494 i((
t
 =

1495 
	`__memp_ut
(
mpf
, 
g
, 
fe_dbp
->
iܙy
)) != 0)

1496 
out
;

1501 i((
t
 = 
	`__db_add_limbo
(
dbv
,

1502 
fo
, 
gp
->
feid
,rgp->
t_pgno
,rgp->
num
)) != 0)

1503 
out
;

1504 i(
cmp_n
 == 0) {

1505 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
mma
);

1506 
	`LSN
(
mma

gp
->
ma_l
;

1515 i(
pgno
 > 
mma
->
ϡ_pgno
) {

1516 
	`REC_DIRTY
(
mpf
, 
fe_dbp
->
iܙy
, &
mma
);

1517 
mma
->
ϡ_pgno
 = 
pgno
;

1520 
de
: i(
t
 == 0)

1521 *
lp
 = 
gp
->
ev_l
;

1522 
t
 = 0;

1524 
out
: i(
mma
 !
NULL
)

1525 ()
	`__memp_ut
(
mpf
, 
mma
, 
fe_dbp
->
iܙy
);

1527 i(
t
 =
ENOENT
 && 

 =
DB_TXN_BACKWARD_ALLOC
)

1528 
t
 = 0;

1529 
REC_CLOSE
;

1530 
	}
}

1543 
	$__ham_loc_ges_42
(
dbp
, 
gp
, 
lp
)

1544 
DB
 *
dbp
;

1545 
__ham_grouoc_42_gs
 *
gp
;

1546 
DB_LSN
 *
lp
;

1548 
DB_MPOOLFILE
 *
mpf
;

1549 
PAGE
 *
g
;

1550 
db_pgno_t
 
pgno
;

1551 
t
;

1553 
mpf
 = 
dbp
->mpf;

1556 
pgno
 = 
gp
->
t_pgno
 +rgp->
num
 - 1;

1559 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
g
)) == 0) {

1560 i(
	`NUM_ENT
(
g
=0 && 
	`IS_ZERO_LSN
ag->
l
))

1561 
_ge
;

1562 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbp
->
iܙy
)) != 0)

1563  (
t
);

1568 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
,

1569 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
g
)) != 0)

1570  (
	`__db_pgr
(
dbp
, 
pgno
, 
t
));

1572 
_ge
:

1574 
	`P_INIT
(
g
, 
dbp
->
pgsize
, 
pgno
, 
PGNO_INVALID
, PGNO_INVALID, 0, 
P_HASH
);

1575 
g
->
l
 = *
lp
;

1577 i((
t
 = 
	`__memp_ut
(
mpf
, 
g
, 
dbp
->
iܙy
)) != 0)

1578  (
t
);

1581 
	}
}

	@../hash/hash_reclaim.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/hash.h
"

28 
	$__ham_aim
(
dbp
, 
txn
)

29 
DB
 *
dbp
;

30 
DB_TXN
 *
txn
;

32 
DBC
 *
dbc
;

33 
HASH_CURSOR
 *
h
;

34 
t
;

37 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
, 0)) != 0)

38  (
t
);

39 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

41 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

42 
r
;

45 i((
t
 = 
	`__ham_dty_ma
(
dbc
, 0)) != 0)

46 
r
;

49 
	`F_SET
(
dbc
, 
DBC_DONTLOCK
);

51 i((
t
 = 
	`__ham_av
(
dbc
,

52 
DB_LOCK_WRITE
, 
__db_aim_back
, 
dbc
, 1)) != 0)

53 
r
;

54 i((
t
 = 
	`__dbc_o
(
dbc
)) != 0)

55 
r
;

56 i((
t
 = 
	`__ham_a_ma
(
dbc
)) != 0)

57 
r
;

60 
r
: i(
h
->
hdr
 !
NULL
)

61 ()
	`__ham_a_ma
(
dbc
);

62 ()
	`__dbc_o
(
dbc
);

63  (
t
);

64 
	}
}

74 
	$__ham_un
(
dbc
, 
coup
)

75 
DBC
 *
dbc
;

76 
u_t32_t
 *
coup
;

78 
db_unc_m
 
unc
;

79 
t
, 
t_t
;

81 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

82  (
t
);

84 
unc
.
cou
 = 0;

85 
unc
.
dbc
 = dbc;

87 
t
 = 
	`__ham_av
(
dbc
,

88 
DB_LOCK_WRITE
, 
__db_un_back
, &
unc
, 1);

90 i((
t_t
 = 
	`__ham_a_ma
(
dbc
)!0 && 
t
 == 0)

91 
t
 = 
t_t
;

93 i(
coup
 !
NULL
)

94 *
coup
 = 
unc
.
cou
;

95  (
t
);

96 
	}
}

	@../hash/hash_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/hash.h
"

15 
	~"dbc/mp.h
"

17 #ifde
HAVE_STATISTICS


18 
__ham__back
 
__P
((
DB
 *, 
PAGE
 *, *, *));

27 
	$__ham_
(
dbc
, 
p
, 
ags
)

28 
DBC
 *
dbc
;

29 *
p
;

30 
u_t32_t
 
ags
;

32 
DB
 *
dbp
;

33 
DB_ENV
 *
dbv
;

34 
DB_HASH_STAT
 *

;

35 
DB_MPOOLFILE
 *
mpf
;

36 
HASH_CURSOR
 *
h
;

37 
PAGE
 *
h
;

38 
db_pgno_t
 
pgno
;

39 
t
;

41 
dbp
 = 
dbc
->dbp;

42 
dbv
 = 
dbp
->dbenv;

44 
mpf
 = 
dbp
->mpf;

45 

 = 
NULL
;

47 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

49 i((
t
 = 
	`__ham_g_ma
(
dbc
)) != 0)

50 
r
;

53 i((
t
 = 
	`__os_umloc
(
dbv
, (*

), &sp)) != 0)

54 
r
;

55 
	`memt
(

, 0, (*sp));

57 

->
hash_nkeys
 = 
h
->
hdr
->
dbma
.
key_cou
;

58 

->
hash_nda
 = 
h
->
hdr
->
dbma
.
cd_cou
;

64 i((
t
 = 
	`__memp_g_ϡ_pgno
(
dbp
->
mpf
, &
pgno
)) != 0)

65 
r
;

66 

->
hash_get
 = 
pgno
 + 1;

67 

->
hash_gesize
 = 
dbp
->
pgsize
;

68 

->
hash_bucks
 = 
h
->
hdr
->
max_buck
 + 1;

69 

->
hash_magic
 = 
h
->
hdr
->
dbma
.
magic
;

70 

->
hash_vsi
 = 
h
->
hdr
->
dbma
.
vsi
;

71 

->
hash_maags
 = 
h
->
hdr
->
dbma
.
ags
;

72 

->
hash_f
 = 
h
->
hdr
->
f
;

74 i(
ags
 =
DB_FAST_STAT
)

75 
de
;

78 

->
hash_
 = 0, 
pgno
 = 
h
->
hdr
->
dbma
.

;

79 
pgno
 !
PGNO_INVALID
;) {

80 ++

->
hash_
;

82 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
dbc
->
txn
, 0, &
h
)) != 0)

83 
r
;

85 
pgno
 = 
h
->
xt_pgno
;

86 ()
	`__memp_ut
(
mpf
, 
h
, 
dbc
->
iܙy
);

90 

->
hash_nkeys
 = 0;

91 

->
hash_nda
 = 0;

92 i((
t
 = 
	`__ham_av
(
dbc
,

93 
DB_LOCK_READ
, 
__ham__back
, 

, 0)) != 0)

94 
r
;

96 i(!
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
)) {

102 i((
t
 = 
	`__ham_dty_ma
(
dbc
,

103 (
dbc
->
txn
 =
NULL
? 
DB_MPOOL_EDIT
 : 0)) != 0)

104 
r
;

105 
h
->
hdr
->
dbma
.
key_cou
 = 

->
hash_nkeys
;

106 
h
->
hdr
->
dbma
.
cd_cou
 = 

->
hash_nda
;

109 
de
: i((
t
 = 
	`__ham_a_ma
(
dbc
)) != 0)

110 
r
;

112 *(
DB_HASH_STAT
 **)
p
 = 

;

115 
r
: i(

 !
NULL
)

116 
	`__os_u
(
dbv
, 

);

118 i(
h
->
hdr
 !
NULL
)

119 ()
	`__ham_a_ma
(
dbc
);

121  (
t
);

122 
	}
}

131 
	$__ham__t
(
dbc
, 
ags
)

132 
DBC
 *
dbc
;

133 
u_t32_t
 
ags
;

135 cڡ 
FN
 

[] = {

136 { 
DB_HASH_DUP
, "duplicates" },

137 { 
DB_HASH_SUBDB
, "multiple-databases" },

138 { 
DB_HASH_DUPSORT
, "sorted duplicates" },

139 { 0, 
NULL
 }

141 
DB
 *
dbp
;

142 
DB_ENV
 *
dbv
;

143 
DB_HASH_STAT
 *

;

144 
ld
, 
t
;

145 cڡ *
s
;

147 
dbp
 = 
dbc
->dbp;

148 
dbv
 = 
dbp
->dbenv;

150 i((
t
 = 
	`__ham_
(
dbc
, &

, 
	`LF_ISSET
(
DB_FAST_STAT
))) != 0)

151  (
t
);

153 i(
	`LF_ISSET
(
DB_STAT_ALL
)) {

154 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

155 
	`__db_msg
(
dbv
, "Default Hash database information:");

157 
	`__db_msg
(
dbv
, "%lx\tHash maginumb", (
u_lg
)

->
hash_magic
);

158 
	`__db_msg
(
dbv
,

159 "%lu\tHash vsiڂumb", (
u_lg
)

->
hash_vsi
);

160 ()
	`__db_g_ld
(
dbp
, &
ld
);

161 
ld
) {

163 
s
 = "Little-endian";

166 
s
 = "Big-endian";

169 
s
 = "Unrecognized byte order";

172 
	`__db_msg
(
dbv
, "%s\tBy ord", 
s
);

173 
	`__db_ags
(
dbv
, 
NULL
, 

->
hash_maags
, 

, NULL, "\tFlags");

174 
	`__db_dl
(
dbv
,

175 "Undlyg dabaagsize", (
u_lg
)

->
hash_gesize
);

176 
	`__db_dl
(
dbv
, "Scifd f", (
u_lg
)

->
hash_f
);

177 
	`__db_dl
(
dbv
,

178 "Numb okeyhdaba", (
u_lg
)

->
hash_nkeys
);

179 
	`__db_dl
(
dbv
,

180 "Numb odemhdaba", (
u_lg
)

->
hash_nda
);

182 
	`__db_dl
(
dbv
, "Numb ohash bucks", (
u_lg
)

->
hash_bucks
);

183 
	`__db_dl_p
(
dbv
, "Number of bytes free on bucketages",

184 (
u_lg
)

->
hash_b
, 
	`DB_PCT_PG
(

185 

->
hash_b
, sp->
hash_bucks
, sp->
hash_gesize
), "ff");

187 
	`__db_dl
(
dbv
,

188 "Numb oovowages", (
u_lg
)

->
hash_bigges
);

189 
	`__db_dl_p
(
dbv
, "Number of bytes free in overflowages",

190 (
u_lg
)

->
hash_big_b
, 
	`DB_PCT_PG
(

191 

->
hash_big_b
, sp->
hash_bigges
, sp->
hash_gesize
), "ff");

193 
	`__db_dl
(
dbv
,

194 "Numb obuck ovowages", (
u_lg
)

->
hash_ovows
);

195 
	`__db_dl_p
(
dbv
,

197 (
u_lg
)

->
hash_ov_
, 
	`DB_PCT_PG
(

198 

->
hash_ov_
, sp->
hash_ovows
, sp->
hash_gesize
), "ff");

200 
	`__db_dl
(
dbv
, "Numb oduiages", (
u_lg
)

->
hash_dup
);

201 
	`__db_dl_p
(
dbv
, "Number of bytes free in duplicateages",

202 (
u_lg
)

->
hash_dup_
, 
	`DB_PCT_PG
(

203 

->
hash_dup_
, sp->
hash_dup
, sp->
hash_gesize
), "ff");

205 
	`__db_dl
(
dbv
,

206 "Numb ogeځh䓆i", (
u_lg
)

->
hash_
);

208 
	`__os_u
(
dbv
, 

);

211 
	}
}

214 
	$__ham__back
(
dbp
, 
g
, 
cook
, 
pu
)

215 
DB
 *
dbp
;

216 
PAGE
 *
g
;

217 *
cook
;

218 *
pu
;

220 
DB_HASH_STAT
 *

;

221 
DB_BTREE_STAT
 
b
;

222 
db_dx_t
 
dx
, 
n
, 
off
, 

, 
t
;

223 
u_t8_t
 *
hk
;

224 
t
;

226 *
pu
 = 0;

227 

 = 
cook
;

229 
g
->
ty
) {

230 
P_INVALID
:

236 
P_HASH_UNSORTED
:

237 
P_HASH
:

244 i(
	`PREV_PGNO
(
g
=
PGNO_INVALID
)

245 

->
hash_b
 +
	`P_FREESPACE
(
dbp
, 
g
);

247 

->
hash_ovows
++;

248 

->
hash_ov_
 +
	`P_FREESPACE
(
dbp
, 
g
);

250 
t
 = 
	`NUM_ENT
(
g
);

252 
dx
 = 0; indx < 
t
; indx +
P_INDX
) {

253 *
	`H_PAIRDATA
(
dbp
, 
g
, 
dx
)) {

254 
H_OFFDUP
:

256 
H_OFFPAGE
:

257 
H_KEYDATA
:

258 

->
hash_nda
++;

260 
H_DUPLICATE
:

261 

 = 
	`LEN_HDATA
(
dbp
, 
g
, 0, 
dx
);

262 
hk
 = 
	`H_PAIRDATA
(
dbp
, 
g
, 
dx
);

263 
off
 = 0; of< 

;

264 
off
 +
n
 + 2 * (
db_dx_t
)) {

265 

->
hash_nda
++;

266 
	`memy
(&
n
,

267 
	`HKEYDATA_DATA
(
hk
)

268 + 
off
, (
db_dx_t
));

272  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
g
)));

275 

->
hash_nkeys
 +
	`H_NUMPAIRS
(
g
);

277 
P_IBTREE
:

278 
P_IRECNO
:

279 
P_LBTREE
:

280 
P_LRECNO
:

281 
P_LDUP
:

287 
	`memt
(&
b
, 0, (bstat));

288 i((
t
 = 
	`__bam__back
(
dbp
, 
g
, &
b
, 
pu
)) != 0)

289  (
t
);

290 

->
hash_dup
++;

291 

->
hash_dup_
 +
b
.
bt_af_pg
 +

292 
b
.
bt_dup_pg
 + b.
bt_t_pg
;

293 

->
hash_nda
 +
b
.
bt_nda
;

295 
P_OVERFLOW
:

296 

->
hash_bigges
++;

297 

->
hash_big_b
 +
	`P_OVFLSPACE
(
dbp
, dbp->
pgsize
, 
g
);

300  (
	`__db_pgfmt
(
dbp
->
dbv
, 
	`PGNO
(
g
)));

304 
	}
}

313 
	$__ham_t_curs
(
dbc
)

314 
DBC
 *
dbc
;

316 cڡ 
FN
 

[] = {

317 { 
H_CONTINUE
, "H_CONTINUE" },

318 { 
H_DELETED
, "H_DELETED" },

319 { 
H_DUPONLY
, "H_DUPONLY" },

320 { 
H_EXPAND
, "H_EXPAND" },

321 { 
H_ISDUP
, "H_ISDUP" },

322 { 
H_NEXT_NODUP
, "H_NEXT_NODUP" },

323 { 
H_NOMORE
, "H_NOMORE" },

324 { 
H_OK
, "H_OK" },

325 { 0, 
NULL
 }

327 
DB_ENV
 *
dbv
;

328 
HASH_CURSOR
 *

;

330 
dbv
 = 
dbc
->
dbp
->dbenv;

331 

 = (
HASH_CURSOR
 *)
dbc
->

;

333 
	`STAT_ULONG
("Buckvsg", 

->
buck
);

334 
	`STAT_ULONG
("Buckocked", 

->
lbuck
);

335 
	`STAT_ULONG
("Dui s offt", 

->
dup_off
);

336 
	`STAT_ULONG
("Cuduigth", 

->
dup_n
);

337 
	`STAT_ULONG
("Tٮ dui sgth", 

->
dup_
);

338 
	`STAT_ULONG
("Byeded f܇dd", 

->
ek_size
);

339 
	`STAT_ULONG
("Pag which w", 

->
ek_found_ge
);

340 
	`STAT_ULONG
("Ord", 

->
d
);

341 
	`__db_ags
(
dbv
, 
NULL
, 

->
ags
, 

, NULL, "\tInternal Flags");

342 
	}
}

347 
	$__ham_
(
dbc
, 
p
, 
ags
)

348 
DBC
 *
dbc
;

349 *
p
;

350 
u_t32_t
 
ags
;

352 
	`COMPQUIET
(
p
, 
NULL
);

353 
	`COMPQUIET
(
ags
, 0);

355  (
	`__db__n_but
(
dbc
->
dbp
->
dbv
));

356 
	}
}

368 
	$__ham_av
(
dbc
, 
mode
, 
back
, 
cook
, 
look__max
)

369 
DBC
 *
dbc
;

370 
db_lockmode_t
 
mode
;

371 (*
back

	`__P
((
DB
 *, 
PAGE
 *, *, *));

372 *
cook
;

373 
look__max
;

375 
DB
 *
dbp
;

376 
DBC
 *
d
;

377 
DB_MPOOLFILE
 *
mpf
;

378 
HASH_CURSOR
 *
h
;

379 
HKEYDATA
 *
hk
;

380 
db_pgno_t
 
pgno
, 
gno
;

381 
did_put
, 
i
, 
t
, 
t_t
;

382 
u_t32_t
 
buck
, 
es_y
;

384 
dbp
 = 
dbc
->dbp;

385 
d
 = 
NULL
;

386 
mpf
 = 
dbp
->mpf;

387 
h
 = (
HASH_CURSOR
 *)
dbc
->

;

388 
t
 = 0;

399 
buck
 = 0;; bucket++) {

414 i(
look__max
) {

415 
es_y
 = 
	`__db_log2
(
buck
 + 1);

416 i(
es_y
 >
NCACHED
 ||

417 
h
->
hdr
->
es
[
es_y
] == 0)

420 i(
buck
 > 
h
->
hdr
->
max_buck
)

424 
h
->
buck
 = bucket;

425 
h
->
pgno
 =gn
	`BUCKET_TO_PAGE
(h, 
buck
);

426 
t
 = 
	`__ham_g_age
(
dbc
, 
mode
);et == 0;

427 
t
 = 
	`__ham_xt_age
(
dbc
, 
pgno
)) {

436 i(
	`TYPE
(
h
->
ge
=
P_INVALID
)

438 
pgno
 = 
	`NEXT_PGNO
(
h
->
ge
);

446 
i
 = 0; i < 
	`NUM_ENT
(
h
->
ge
); i++) {

447 
hk
 = (
HKEYDATA
 *)
	`P_ENTRY
(
dbp
, 
h
->
ge
, 
i
);

448 
	`HPAGE_PTYPE
(
hk
)) {

449 
H_OFFDUP
:

450 
	`memy
(&
gno
, 
	`HOFFDUP_PGNO
(
hk
),

451 (
db_pgno_t
));

452 i((
t
 = 
	`__dbc_wd
(
dbc
,

453 
gno
, 
NULL
, &
d
)) != 0)

454  (
t
);

455 i((
t
 = 
	`__bam_av
(
d
,

456 
DB_LOCK_READ
, 
gno
,

457 
back
, 
cook
))

459 
r
;

460 i((
t
 = 
	`__dbc_o
(
d
)) != 0)

461  (
t
);

462 
d
 = 
NULL
;

464 
H_OFFPAGE
:

472 
	`memy
(&
gno
, 
	`HOFFPAGE_PGNO
(
hk
),

473 (
db_pgno_t
));

474 i((
t
 = 
	`__db_av_big
(
dbp
,

475 
gno
, 
dbc
->
txn
,

476 
back
, 
cook
)) != 0)

477 
r
;

479 
H_KEYDATA
:

480 
H_DUPLICATE
:

483 
t
 = 
	`__db_unknown_th
(

484 
dbp
->
dbv
, "__ham_traverse");

485 
r
;

490 i((
t
 = 
	`back
(
dbp
,

491 
h
->
ge
, 
cook
, &
did_put
)) != 0)

492 
r
;

494 i(
did_put
)

495 
h
->
ge
 = 
NULL
;

496 i(
pgno
 =
PGNO_INVALID
)

499 i(
t
 != 0)

500 
r
;

502 i(
h
->
ge
 !
NULL
) {

503 i((
t
 =

504 
	`__memp_ut
(
mpf
, 
h
->
ge
, 
dbc
->
iܙy
)) != 0)

505  (
t
);

506 
h
->
ge
 = 
NULL
;

510 
r
: i(
d
 !
NULL
 &&

511 (
t_t
 = 
	`__dbc_o
(
d
)!0 && 
t
 == 0)

512 
t
 = 
t_t
;

513  (
t
);

514 
	}
}

	@../hash/hash_stub.c

9 #ide
HAVE_HASH


10 
	~"db_cfig.h
"

12 
	~"db_t.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/hash.h
"

29 
	$__db_no_hash_am
(
dbv
)

30 
DB_ENV
 *
dbv
;

32 
	`__db_rx
(
dbv
,

34  (
DB_OPNOTSUP
);

35 
	}
}

38 
	$__ham_30_hashma
(
dbp
, 
_me
, 
obuf
)

39 
DB
 *
dbp
;

40 *
_me
;

41 
u_t8_t
 *
obuf
;

43 
	`COMPQUIET
(
_me
, 
NULL
);

44 
	`COMPQUIET
(
obuf
, 
NULL
);

45  (
	`__db_no_hash_am
(
dbp
->
dbv
));

46 
	}
}

49 
	$__ham_30_sizefix
(
dbp
, 
fhp
, 
me
, 
mabuf
)

50 
DB
 *
dbp
;

51 
DB_FH
 *
fhp
;

52 *
me
;

53 
u_t8_t
 *
mabuf
;

55 
	`COMPQUIET
(
fhp
, 
NULL
);

56 
	`COMPQUIET
(
me
, 
NULL
);

57 
	`COMPQUIET
(
mabuf
, 
NULL
);

58  (
	`__db_no_hash_am
(
dbp
->
dbv
));

59 
	}
}

62 
	$__ham_31_hash
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

63 
DB
 *
dbp
;

64 *
_me
;

65 
u_t32_t
 
ags
;

66 
DB_FH
 *
fhp
;

67 
PAGE
 *
h
;

68 *
dtyp
;

70 
	`COMPQUIET
(
_me
, 
NULL
);

71 
	`COMPQUIET
(
ags
, 0);

72 
	`COMPQUIET
(
fhp
, 
NULL
);

73 
	`COMPQUIET
(
h
, 
NULL
);

74 
	`COMPQUIET
(
dtyp
, 
NULL
);

75  (
	`__db_no_hash_am
(
dbp
->
dbv
));

76 
	}
}

79 
	$__ham_31_hashma
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

80 
DB
 *
dbp
;

81 *
_me
;

82 
u_t32_t
 
ags
;

83 
DB_FH
 *
fhp
;

84 
PAGE
 *
h
;

85 *
dtyp
;

87 
	`COMPQUIET
(
_me
, 
NULL
);

88 
	`COMPQUIET
(
ags
, 0);

89 
	`COMPQUIET
(
fhp
, 
NULL
);

90 
	`COMPQUIET
(
h
, 
NULL
);

91 
	`COMPQUIET
(
dtyp
, 
NULL
);

92  (
	`__db_no_hash_am
(
dbp
->
dbv
));

93 
	}
}

96 
	$__ham_46_hash
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

97 
DB
 *
dbp
;

98 *
_me
;

99 
u_t32_t
 
ags
;

100 
DB_FH
 *
fhp
;

101 
PAGE
 *
h
;

102 *
dtyp
;

104 
	`COMPQUIET
(
_me
, 
NULL
);

105 
	`COMPQUIET
(
ags
, 0);

106 
	`COMPQUIET
(
fhp
, 
NULL
);

107 
	`COMPQUIET
(
h
, 
NULL
);

108 
	`COMPQUIET
(
dtyp
, 
NULL
);

109  (
	`__db_no_hash_am
(
dbp
->
dbv
));

110 
	}
}

113 
	$__ham_46_hashma
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

114 
DB
 *
dbp
;

115 *
_me
;

116 
u_t32_t
 
ags
;

117 
DB_FH
 *
fhp
;

118 
PAGE
 *
h
;

119 *
dtyp
;

121 
	`COMPQUIET
(
_me
, 
NULL
);

122 
	`COMPQUIET
(
ags
, 0);

123 
	`COMPQUIET
(
fhp
, 
NULL
);

124 
	`COMPQUIET
(
h
, 
NULL
);

125 
	`COMPQUIET
(
dtyp
, 
NULL
);

126  (
	`__db_no_hash_am
(
dbp
->
dbv
));

127 
	}
}

130 
	$__hamc_cou
(
dbc
, 

)

131 
DBC
 *
dbc
;

132 
db_o_t
 *

;

134 
	`COMPQUIET
(

, 
NULL
);

135  (
	`__db_no_hash_am
(
dbc
->
dbp
->
dbv
));

136 
	}
}

139 
	$__hamc_dup
(
ig_dbc
, 
w_dbc
)

140 
DBC
 *
ig_dbc
, *
w_dbc
;

142 
	`COMPQUIET
(
w_dbc
, 
NULL
);

143  (
	`__db_no_hash_am
(
ig_dbc
->
dbp
->
dbv
));

144 
	}
}

147 
	$__hamc_
(
dbc
)

148 
DBC
 *
dbc
;

150  (
	`__db_no_hash_am
(
dbc
->
dbp
->
dbv
));

151 
	}
}

154 
	$__ham_db_o
(
dbp
)

155 
DB
 *
dbp
;

157 
	`COMPQUIET
(
dbp
, 
NULL
);

159 
	}
}

162 
	$__ham_db_
(
dbp
)

163 
DB
 *
dbp
;

165 
	`COMPQUIET
(
dbp
, 
NULL
);

167 
	}
}

170 
	$__ham__t
(
dbv
, 
dbp
, 
dbsiz
)

171 
DB_ENV
 *
dbv
;

172 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

173 
size_t
 *
dbsiz
;

175 
	`COMPQUIET
(
dbv
, 
NULL
);

176 
	`COMPQUIET
(
dbp
, 
NULL
);

177 
	`COMPQUIET
(
dbsiz
, 
NULL
);

179 
	}
}

182 
	$__ham__cov
(
dbv
, 
dbp
, 
dbsiz
)

183 
DB_ENV
 *
dbv
;

184 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

185 
size_t
 *
dbsiz
;

187 
	`COMPQUIET
(
dbv
, 
NULL
);

188 
	`COMPQUIET
(
dbp
, 
NULL
);

189 
	`COMPQUIET
(
dbsiz
, 
NULL
);

191 
	}
}

194 
	$__ham_ma2pgt
(
dbp
, 
vdp
, 
hma
, 
ags
, 
pgt
)

195 
DB
 *
dbp
;

196 
VRFY_DBINFO
 *
vdp
;

197 
HMETA
 *
hma
;

198 
u_t32_t
 
ags
;

199 
DB
 *
pgt
;

201 
	`COMPQUIET
(
vdp
, 
NULL
);

202 
	`COMPQUIET
(
hma
, 
NULL
);

203 
	`COMPQUIET
(
ags
, 0);

204 
	`COMPQUIET
(
pgt
, 
NULL
);

205  (
	`__db_no_hash_am
(
dbp
->
dbv
));

206 
	}
}

209 
	$__ham_machk
(
dbp
, 
me
, 
hashm
)

210 
DB
 *
dbp
;

211 cڡ *
me
;

212 
HMETA
 *
hashm
;

214 
	`COMPQUIET
(
me
, 
NULL
);

215 
	`COMPQUIET
(
hashm
, 
NULL
);

216  (
	`__db_no_hash_am
(
dbp
->
dbv
));

217 
	}
}

220 
	$__ham_magroup_42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

221 
DB_ENV
 *
dbv
;

222 
DBT
 *
db
;

223 
DB_LSN
 *
lp
;

224 
db_cs
 

;

225 *
fo
;

227 
	`COMPQUIET
(
db
, 
NULL
);

228 
	`COMPQUIET
(
lp
, 
NULL
);

229 
	`COMPQUIET
(

, 0);

230 
	`COMPQUIET
(
fo
, 
NULL
);

231  (
	`__db_no_hash_am
(
dbv
));

232 
	}
}

235 
	$__ham_grouoc_42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

236 
DB_ENV
 *
dbv
;

237 
DBT
 *
db
;

238 
DB_LSN
 *
lp
;

239 
db_cs
 

;

240 *
fo
;

242 
	`COMPQUIET
(
db
, 
NULL
);

243 
	`COMPQUIET
(
lp
, 
NULL
);

244 
	`COMPQUIET
(

, 0);

245 
	`COMPQUIET
(
fo
, 
NULL
);

246  (
	`__db_no_hash_am
(
dbv
));

247 
	}
}

250 
	$__ham_w_fe
(
dbp
, 
txn
, 
fhp
, 
me
)

251 
DB
 *
dbp
;

252 
DB_TXN
 *
txn
;

253 
DB_FH
 *
fhp
;

254 cڡ *
me
;

256 
	`COMPQUIET
(
txn
, 
NULL
);

257 
	`COMPQUIET
(
fhp
, 
NULL
);

258 
	`COMPQUIET
(
me
, 
NULL
);

259  (
	`__db_no_hash_am
(
dbp
->
dbv
));

260 
	}
}

263 
	$__ham_w_subdb
(
mdbp
, 
dbp
, 
txn
)

264 
DB
 *
mdbp
, *
dbp
;

265 
DB_TXN
 *
txn
;

267 
	`COMPQUIET
(
dbp
, 
NULL
);

268 
	`COMPQUIET
(
txn
, 
NULL
);

269  (
	`__db_no_hash_am
(
mdbp
->
dbv
));

270 
	}
}

273 
	$__ham_ݒ
(
dbp
, 
txn
, 
me
, 
ba_pgno
, 
ags
)

274 
DB
 *
dbp
;

275 
DB_TXN
 *
txn
;

276 cڡ *
me
;

277 
db_pgno_t
 
ba_pgno
;

278 
u_t32_t
 
ags
;

280 
	`COMPQUIET
(
txn
, 
NULL
);

281 
	`COMPQUIET
(
me
, 
NULL
);

282 
	`COMPQUIET
(
ba_pgno
, 0);

283 
	`COMPQUIET
(
ags
, 0);

284  (
	`__db_no_hash_am
(
dbp
->
dbv
));

285 
	}
}

288 
	$__ham_pg
(
dbv
, 
dummydbp
, 
pg
, 

, 
cook
)

289 
DB_ENV
 *
dbv
;

290 
DB
 *
dummydbp
;

291 
db_pgno_t
 
pg
;

292 *

;

293 
DBT
 *
cook
;

295 
	`COMPQUIET
(
dummydbp
, 
NULL
);

296 
	`COMPQUIET
(
pg
, 0);

297 
	`COMPQUIET
(

, 
NULL
);

298 
	`COMPQUIET
(
cook
, 
NULL
);

299  (
	`__db_no_hash_am
(
dbv
));

300 
	}
}

303 
	$__ham_pgout
(
dbv
, 
dummydbp
, 
pg
, 

, 
cook
)

304 
DB_ENV
 *
dbv
;

305 
DB
 *
dummydbp
;

306 
db_pgno_t
 
pg
;

307 *

;

308 
DBT
 *
cook
;

310 
	`COMPQUIET
(
dummydbp
, 
NULL
);

311 
	`COMPQUIET
(
pg
, 0);

312 
	`COMPQUIET
(

, 
NULL
);

313 
	`COMPQUIET
(
cook
, 
NULL
);

314  (
	`__db_no_hash_am
(
dbv
));

315 
	}
}

318 
	$__ham_t_curs
(
dbc
)

319 
DBC
 *
dbc
;

321 ()
	`__db_no_hash_am
(
dbc
->
dbp
->
dbv
);

322 
	}
}

325 
	$__ham_quick_de
(
dbc
)

326 
DBC
 *
dbc
;

328  (
	`__db_no_hash_am
(
dbc
->
dbp
->
dbv
));

329 
	}
}

332 
	$__ham_aim
(
dbp
, 
txn
)

333 
DB
 *
dbp
;

334 
DB_TXN
 *
txn
;

336 
	`COMPQUIET
(
txn
, 
NULL
);

337  (
	`__db_no_hash_am
(
dbp
->
dbv
));

338 
	}
}

341 
	$__ham_lvage
(
dbp
, 
vdp
, 
pgno
, 
h
, 
hd
, 
back
, 
ags
)

342 
DB
 *
dbp
;

343 
VRFY_DBINFO
 *
vdp
;

344 
db_pgno_t
 
pgno
;

345 
PAGE
 *
h
;

346 *
hd
;

347 (*
back

	`__P
((*, const *));

348 
u_t32_t
 
ags
;

350 
	`COMPQUIET
(
vdp
, 
NULL
);

351 
	`COMPQUIET
(
pgno
, 0);

352 
	`COMPQUIET
(
h
, 
NULL
);

353 
	`COMPQUIET
(
hd
, 
NULL
);

354 
	`COMPQUIET
(
back
, 
NULL
);

355 
	`COMPQUIET
(
ags
, 0);

356  (
	`__db_no_hash_am
(
dbp
->
dbv
));

357 
	}
}

360 
	$__ham_
(
dbc
, 
p
, 
ags
)

361 
DBC
 *
dbc
;

362 *
p
;

363 
u_t32_t
 
ags
;

365 
	`COMPQUIET
(
p
, 
NULL
);

366 
	`COMPQUIET
(
ags
, 0);

367  (
	`__db_no_hash_am
(
dbc
->
dbp
->
dbv
));

368 
	}
}

371 
	$__ham__t
(
dbc
, 
ags
)

372 
DBC
 *
dbc
;

373 
u_t32_t
 
ags
;

375 
	`COMPQUIET
(
ags
, 0);

376  (
	`__db_no_hash_am
(
dbc
->
dbp
->
dbv
));

377 
	}
}

380 
	$__ham_un
(
dbc
, 
coup
)

381 
DBC
 *
dbc
;

382 
u_t32_t
 *
coup
;

384 
	`COMPQUIET
(
dbc
, 
NULL
);

385 
	`COMPQUIET
(
coup
, 
NULL
);

386  (
	`__db_no_hash_am
(
dbc
->
dbp
->
dbv
));

387 
	}
}

390 
	$__ham_vrfy
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

391 
DB
 *
dbp
;

392 
VRFY_DBINFO
 *
vdp
;

393 
PAGE
 *
h
;

394 
db_pgno_t
 
pgno
;

395 
u_t32_t
 
ags
;

397 
	`COMPQUIET
(
vdp
, 
NULL
);

398 
	`COMPQUIET
(
h
, 
NULL
);

399 
	`COMPQUIET
(
pgno
, 0);

400 
	`COMPQUIET
(
ags
, 0);

401  (
	`__db_no_hash_am
(
dbp
->
dbv
));

402 
	}
}

405 
	$__ham_vrfy_hashg
(
dbp
, 
rs
, 
m
, 
thisbuck
, 
pgno
, 
ags
, 
hfunc
)

406 
DB
 *
dbp
;

407 
u_t32_t
 
rs
;

408 
HMETA
 *
m
;

409 
u_t32_t
 
thisbuck
;

410 
db_pgno_t
 
pgno
;

411 
u_t32_t
 
ags
;

412 
	$u_t32_t
 (*
hfunc

	`__P
((
DB
 *, cڡ *, 
u_t32_t
));

414 
	`COMPQUIET
(
rs
, 0);

415 
	`COMPQUIET
(
m
, 
NULL
);

416 
	`COMPQUIET
(
thisbuck
, 0);

417 
	`COMPQUIET
(
pgno
, 0);

418 
	`COMPQUIET
(
ags
, 0);

419 
	`COMPQUIET
(
hfunc
, 
NULL
);

420  (
	`__db_no_hash_am
(
dbp
->
dbv
));

421 
	}
}

424 
	$__ham_vrfy_ma
(
dbp
, 
vdp
, 
m
, 
pgno
, 
ags
)

425 
DB
 *
dbp
;

426 
VRFY_DBINFO
 *
vdp
;

427 
HMETA
 *
m
;

428 
db_pgno_t
 
pgno
;

429 
u_t32_t
 
ags
;

431 
	`COMPQUIET
(
vdp
, 
NULL
);

432 
	`COMPQUIET
(
m
, 
NULL
);

433 
	`COMPQUIET
(
pgno
, 0);

434 
	`COMPQUIET
(
ags
, 0);

435  (
	`__db_no_hash_am
(
dbp
->
dbv
));

436 
	}
}

439 
	$__ham_vrfy_ruu
(
dbp
, 
vdp
, 
ma_pgno
, 
ags
)

440 
DB
 *
dbp
;

441 
VRFY_DBINFO
 *
vdp
;

442 
db_pgno_t
 
ma_pgno
;

443 
u_t32_t
 
ags
;

445 
	`COMPQUIET
(
vdp
, 
NULL
);

446 
	`COMPQUIET
(
ma_pgno
, 0);

447 
	`COMPQUIET
(
ags
, 0);

448  (
	`__db_no_hash_am
(
dbp
->
dbv
));

449 
	}
}

	@../hash/hash_upgrade.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/hash.h
"

14 
	~"dbc/db_upgde.h
"

23 
	$__ham_30_hashma
(
dbp
, 
_me
, 
obuf
)

24 
DB
 *
dbp
;

25 *
_me
;

26 
u_t8_t
 *
obuf
;

28 
DB_ENV
 *
dbv
;

29 
HASHHDR
 *
dma
;

30 
HMETA30
 
wma
;

31 
u_t32_t
 *
o_es
, *
n_es
;

32 
u_t32_t
 
flf
, 
i
, 
maxb
, 
max_y
, 
m
;

33 
t
;

35 
dbv
 = 
dbp
->dbenv;

36 
	`memt
(&
wma
, 0, (newmeta));

38 
dma
 = (
HASHHDR
 *)
obuf
;

45 
wma
.
dbma
.
l
 = 
dma
->lsn;

46 
wma
.
dbma
.
pgno
 = 
dma
->pgno;

47 
wma
.
dbma
.
magic
 = 
dma
->magic;

48 
wma
.
dbma
.
vsi
 = 6;

49 
wma
.
dbma
.
gesize
 = 
dma
->pagesize;

50 
wma
.
dbma
.
ty
 = 
P_HASHMETA
;

53 
wma
.
dbma
.
ags
 = 
dma
->flags;

56 
wma
.
dbma
.

 = 
dma
->
ϡ_d
;

59 
wma
.
max_buck
 = 
dma
->max_bucket;

60 
wma
.
high_mask
 = 
dma
->high_mask;

61 
wma
.
low_mask
 = 
dma
->low_mask;

62 
wma
.
f
 = 
dma
->ffactor;

63 
wma
.
m
 = 
dma
->nelem;

64 
wma
.
h_chkey
 = 
dma
->h_charkey;

72 
m
 = 
wma
.nelem;

73 
flf
 = 
wma
.
f
;

74 
maxb
 = 
wma
.
max_buck
;

76 i((
flf
 !0 && fl* 
maxb
 < 2 * 
m
) ||

77 (
flf
 =0 && 
m
 > 0x8000000))

78 
wma
.
m
 = 0;

87 
o_es
 = 
dma
->
es
;

88 
n_es
 = 
wma
.
es
;

89 
max_y
 = 
	`__db_log2
(
maxb
 + 1);

90 
n_es
[0] = 1;

91 
i
 = 1; i < 
NCACHED
 && i <
max_y
; i++)

92 
n_es
[
i
] = 1 + 
o_es
[i - 1];

95 i((
t
 = 
	`__os_feid
(
dbv
, 
_me
, 1, 
wma
.
dbma
.
uid
)) != 0)

96  (
t
);

99 
	`memy
(
dma
, &
wma
, (newmeta));

102 
	}
}

112 
	$__ham_30_sizefix
(
dbp
, 
fhp
, 
me
, 
mabuf
)

113 
DB
 *
dbp
;

114 
DB_FH
 *
fhp
;

115 *
me
;

116 
u_t8_t
 *
mabuf
;

118 
u_t8_t
 
buf
[
DB_MAX_PGSIZE
];

119 
DB_ENV
 *
dbv
;

120 
HMETA30
 *
ma
;

121 
db_pgno_t
 
ϡ_au
, 
ϡ_desed
;

122 
t
;

123 
size_t
 
nw
;

124 
u_t32_t
 
gesize
;

126 
dbv
 = 
dbp
->dbenv;

127 
	`memt
(
buf
, 0, 
DB_MAX_PGSIZE
);

129 
ma
 = (
HMETA30
 *)
mabuf
;

130 
gesize
 = 
ma
->
dbma
.pagesize;

136 
dbp
->
pgsize
 = 
gesize
;

137 i((
t
 = 
	`__db_ϡpgno
(
dbp
, 
me
, 
fhp
, &
ϡ_au
)) != 0)

138  (
t
);

144 
ϡ_desed
 = 
	`BS_TO_PAGE
(
ma
->
high_mask
, ma->
es
);

150 i(
ϡ_desed
 > 
ϡ_au
) {

151 i((
t
 = 
	`__os_ek
(

152 
dbv
, 
fhp
, 
ϡ_desed
, 
gesize
, 0)) != 0)

153  (
t
);

154 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
buf
, 
gesize
, &
nw
)) != 0)

155  (
t
);

159 
	}
}

169 
	$__ham_31_hashma
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

170 
DB
 *
dbp
;

171 *
_me
;

172 
u_t32_t
 
ags
;

173 
DB_FH
 *
fhp
;

174 
PAGE
 *
h
;

175 *
dtyp
;

177 
HMETA31
 *
wma
;

178 
HMETA30
 *
dma
;

180 
	`COMPQUIET
(
dbp
, 
NULL
);

181 
	`COMPQUIET
(
_me
, 
NULL
);

182 
	`COMPQUIET
(
fhp
, 
NULL
);

184 
wma
 = (
HMETA31
 *)
h
;

185 
dma
 = (
HMETA30
 *)
h
;

191 
	`memmove
(
wma
->
es
, 
dma
->spares, (oldmeta->spares));

192 
wma
->
h_chkey
 = 
dma
->h_charkey;

193 
wma
->
m
 = 
dma
->nelem;

194 
wma
->
f
 = 
dma
->ffactor;

195 
wma
->
low_mask
 = 
dma
->low_mask;

196 
wma
->
high_mask
 = 
dma
->high_mask;

197 
wma
->
max_buck
 = 
dma
->max_bucket;

198 
	`memmove
(
wma
->
dbma
.
uid
,

199 
dma
->
dbma
.
uid
, (oldmeta->dbmeta.uid));

200 
wma
->
dbma
.
ags
 = 
dma
->dbmeta.flags;

201 
wma
->
dbma
.
cd_cou
 = 0;

202 
wma
->
dbma
.
key_cou
 = 0;

203 
	`ZERO_LSN
(
wma
->
dbma
.
unud3
);

206 
wma
->
dbma
.
vsi
 = 7;

209 i(
	`LF_ISSET
(
DB_DUPSORT
))

210 
	`F_SET
(&
wma
->
dbma
, 
DB_HASH_DUPSORT
);

212 *
dtyp
 = 1;

214 
	}
}

224 
	$__ham_31_hash
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

225 
DB
 *
dbp
;

226 *
_me
;

227 
u_t32_t
 
ags
;

228 
DB_FH
 *
fhp
;

229 
PAGE
 *
h
;

230 *
dtyp
;

232 
HKEYDATA
 *
hk
;

233 
db_pgno_t
 
pgno
, 
gno
;

234 
db_dx_t
 
dx
;

235 
t
;

237 
	`COMPQUIET
(
ags
, 0);

239 
t
 = 0;

240 
dx
 = 0; indx < 
	`NUM_ENT
(
h
); indx += 2) {

241 
hk
 = (
HKEYDATA
 *)
	`H_PAIRDATA
(
dbp
, 
h
, 
dx
);

242 i(
	`HPAGE_PTYPE
(
hk
=
H_OFFDUP
) {

243 
	`memy
(&
pgno
, 
	`HOFFDUP_PGNO
(
hk
), (
db_pgno_t
));

244 
gno
 = 
pgno
;

245 i((
t
 = 
	`__db_31_offdup
(
dbp
, 
_me
, 
fhp
,

246 
	`LF_ISSET
(
DB_DUPSORT
? 1 : 0, &
gno
)) != 0)

248 i(
pgno
 !
gno
) {

249 *
dtyp
 = 1;

250 
	`memy
(
	`HOFFDUP_PGNO
(
hk
),

251 &
gno
, (
db_pgno_t
));

256  (
t
);

257 
	}
}

267 
	$__ham_46_hashma
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

268 
DB
 *
dbp
;

269 *
_me
;

270 
u_t32_t
 
ags
;

271 
DB_FH
 *
fhp
;

272 
PAGE
 *
h
;

273 *
dtyp
;

275 
HMETA33
 *
wma
;

277 
	`COMPQUIET
(
dbp
, 
NULL
);

278 
	`COMPQUIET
(
_me
, 
NULL
);

279 
	`COMPQUIET
(
ags
, 0);

280 
	`COMPQUIET
(
fhp
, 
NULL
);

282 
wma
 = (
HMETA33
 *)
h
;

284 
wma
->
dbma
.
vsi
 = 9;

285 *
dtyp
 = 1;

288 
	}
}

300 
	$__ham_46_hash
(
dbp
, 
_me
, 
ags
, 
fhp
, 
h
, 
dtyp
)

301 
DB
 *
dbp
;

302 *
_me
;

303 
u_t32_t
 
ags
;

304 
DB_FH
 *
fhp
;

305 
PAGE
 *
h
;

306 *
dtyp
;

308 
	`COMPQUIET
(
_me
, 
NULL
);

309 
	`COMPQUIET
(
ags
, 0);

310 
	`COMPQUIET
(
fhp
, 
NULL
);

312 *
dtyp
 = 1;

313  (
	`__ham_st_ge
(
dbp
, 
NULL
, NULL, 
h
));

314 
	}
}

	@../hash/hash_verify.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_vify.h
"

14 
	~"dbc/b.h
"

15 
	~"dbc/hash.h
"

16 
	~"dbc/mp.h
"

18 
__ham_dups_uns܋d
 
__P
((
DB
 *, 
u_t8_t
 *, 
u_t32_t
));

19 
__ham_vrfy_buck
 
__P
((
DB
 *, 
VRFY_DBINFO
 *, 
HMETA
 *, 
u_t32_t
,

20 
u_t32_t
));

21 
__ham_vrfy_em
 
__P
((
DB
 *,

22 
VRFY_DBINFO
 *, 
db_pgno_t
, 
PAGE
 *, 
u_t32_t
, u_int32_t));

36 
	$__ham_vrfy_ma
(
dbp
, 
vdp
, 
m
, 
pgno
, 
ags
)

37 
DB
 *
dbp
;

38 
VRFY_DBINFO
 *
vdp
;

39 
HMETA
 *
m
;

40 
db_pgno_t
 
pgno
;

41 
u_t32_t
 
ags
;

43 
DB_ENV
 *
dbv
;

44 
HASH
 *
hashp
;

45 
VRFY_PAGEINFO
 *
p
;

46 
i
, 
t
, 
t_t
, 
isbad
;

47 
u_t32_t
 
pwr
, 
mbuck
;

48 
	`u_t32_t
 (*
hfunc

	`__P
((
DB
 *, cڡ *, 
u_t32_t
));

50 
dbv
 = 
dbp
->dbenv;

51 
isbad
 = 0;

53 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

54  (
t
);

56 
hashp
 = 
dbp
->
h_
;

58 i(
hashp
 !
NULL
 && hashp->
h_hash
 != NULL)

59 
hfunc
 = 
hashp
->
h_hash
;

61 
hfunc
 = 
__ham_func5
;

67 i(!
	`F_ISSET
(
p
, 
VRFY_INCOMPLETE
) &&

68 (
t
 = 
	`__db_vrfy_ma
(
dbp
, 
vdp
, &
m
->
dbma
, 
pgno
, 
ags
)) != 0) {

69 i(
t
 =
DB_VERIFY_BAD
)

70 
isbad
 = 1;

72 
r
;

76 i(!
	`LF_ISSET
(
DB_NOORDERCHK
))

77 i(
m
->
h_chkey
 !
	`hfunc
(
dbp
, 
CHARKEY
, (CHARKEY))) {

78 
	`EPRINT
((
dbv
,

80 (
u_lg
)
pgno
));

86 
isbad
 = 1;

87 
r
;

91 i(
m
->
max_buck
 > 
vdp
->
ϡ_pgno
) {

92 
	`EPRINT
((
dbv
,

94 (
u_lg
)
pgno
, (u_lg)
m
->
max_buck
));

100 
isbad
 = 1;

101 
r
;

109 
pwr
 = (
m
->
max_buck
 =0? 1 : 1 << 
	`__db_log2
(m->max_bucket + 1);

110 i(
m
->
high_mask
 !
pwr
 - 1) {

111 
	`EPRINT
((
dbv
,

113 (
u_lg
)
pgno
, (u_lg)
m
->
high_mask
, (u_lg)
pwr
 - 1));

114 
isbad
 = 1;

116 
pwr
 >>= 1;

117 i(
m
->
low_mask
 !
pwr
 - 1) {

118 
	`EPRINT
((
dbv
,

120 (
u_lg
)
pgno
, (u_lg)
m
->
low_mask
, (u_lg)
pwr
 - 1));

121 
isbad
 = 1;

125 
p
->
h_f
 = 
m
->
f
;

132 i(
m
->
m
 > 0x80000000) {

133 
	`EPRINT
((
dbv
,

135 (
u_lg
)
pgno
, (u_lg)
m
->
m
));

136 
isbad
 = 1;

137 
p
->
h_m
 = 0;

139 
p
->
h_m
 = 
m
->
m
;

142 i(
	`F_ISSET
(&
m
->
dbma
, 
DB_HASH_DUP
))

143 
	`F_SET
(
p
, 
VRFY_HAS_DUPS
);

144 i(
	`F_ISSET
(&
m
->
dbma
, 
DB_HASH_DUPSORT
))

145 
	`F_SET
(
p
, 
VRFY_HAS_DUPSORT
);

149 
i
 = 0; 
m
->
es
[i] !0 && i < 
NCACHED
; i++) {

155 
mbuck
 = (1 << 
i
) - 1;

156 i(
	`BS_TO_PAGE
(
mbuck
, 
m
->
es
> 
vdp
->
ϡ_pgno
) {

157 
	`EPRINT
((
dbv
,

159 (
u_lg
)
pgno
, 
i
));

160 
isbad
 = 1;

164 
r
: i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

165 
t
 = 
t_t
;

166 i(
	`LF_ISSET
(
DB_SALVAGE
) &&

167 (
t_t
 = 
	`__db_lvage_mkde
(
vdp
, 
pgno
)!0 && 
t
 == 0)

168 
t
 = 
t_t
;

169  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

170 
	}
}

180 
	$__ham_vrfy
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

181 
DB
 *
dbp
;

182 
VRFY_DBINFO
 *
vdp
;

183 
PAGE
 *
h
;

184 
db_pgno_t
 
pgno
;

185 
u_t32_t
 
ags
;

187 
DB_ENV
 *
dbv
;

188 
VRFY_PAGEINFO
 *
p
;

189 
u_t32_t
 
t
, 
himk
, 
nd
;

190 
db_dx_t
 *
p
;

191 
isbad
, 
t
, 
t_t
;

193 
dbv
 = 
dbp
->dbenv;

194 
isbad
 = 0;

196 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

197  (
t
);

199 i(
	`TYPE
(
h
!
P_HASH
 && TYPE(h!
P_HASH_UNSORTED
) {

200 
t
 = 
	`__db_unknown_th
(
dbv
, "__ham_vrfy");

201 
r
;

205 i((
t
 = 
	`__db_vrfy_dage
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)) != 0) {

206 i(
t
 =
DB_VERIFY_BAD
)

207 
isbad
 = 1;

209 
r
;

220 
p
 = 
	`P_INP
(
dbp
, 
h
);

221 
t
 = 0, 
himk
 = 
dbp
->
pgsize
,

222 
nd
 = (
u_t32_t
)((
u_t8_t
 *)
p
 - (u_t8_*)
h
);

223 
t
 < 
	`NUM_ENT
(
h
);nt++)

224 i(
p
[
t
] >
himk
) {

225 
	`EPRINT
((
dbv
,

227 (
u_lg
)
pgno
, (u_lg)
t
));

228 
isbad
 = 1;

229 
r
;

230 } i(
nd
 >
himk
) {

231 
	`EPRINT
((
dbv
,

233 (
u_lg
)
pgno
));

234 
isbad
 = 1;

235 
r
;

238 
himk
 = 
p
[
t
];

239 
nd
 +(
db_dx_t
);

240 i((
t
 = 
	`__ham_vrfy_em
(

241 
dbp
, 
vdp
, 
pgno
, 
h
, 
t
, 
ags
)) != 0)

242 
r
;

245 i(!
	`LF_ISSET
(
DB_NOORDERCHK
&& 
	`TYPE
(
h
=
P_HASH
 &&

246 (
t
 = 
	`__ham_vify_s܋d_ge
(
dbp
, 
NULL
, 
h
)) != 0)

247 
isbad
 = 1;

249 
r
: i((
t_t
 =

250 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

251 
t
 = 
t_t
;

252  (
t
 =0 && 
isbad
 =1 ? 
DB_VERIFY_BAD
 :et);

253 
	}
}

261 
	$__ham_vrfy_em
(
dbp
, 
vdp
, 
pgno
, 
h
, 
i
, 
ags
)

262 
DB
 *
dbp
;

263 
VRFY_DBINFO
 *
vdp
;

264 
db_pgno_t
 
pgno
;

265 
PAGE
 *
h
;

266 
u_t32_t
 
i
, 
ags
;

268 
HOFFPAGE
 
h
;

269 
HOFFDUP
 
hod
;

270 
VRFY_CHILDINFO
 
chd
;

271 
VRFY_PAGEINFO
 *
p
;

272 
db_dx_t
 
offt
, 
n
, 
dn
, 

;

273 
t
, 
t_t
;

274 
u_t8_t
 *
dabuf
;

276 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

277  (
t
);

279 
	`HPAGE_TYPE
(
dbp
, 
h
, 
i
)) {

280 
H_KEYDATA
:

283 
H_DUPLICATE
:

285 i(
i
 % 2 == 0) {

286 
	`EPRINT
((
dbp
->
dbv
,

288 (
u_lg
)
p
->
pgno
, (u_lg)
i
));

300 
n
 = 
	`LEN_HKEYDATA
(
dbp
, 
h
, dbp->
pgsize
, 
i
);

301 
dabuf
 = 
	`HKEYDATA_DATA
(
	`P_ENTRY
(
dbp
, 
h
, 
i
));

302 
offt
 = 0; off< 
n
; off+
	`DUP_SIZE
(
dn
)) {

303 
	`memy
(&
dn
, 
dabuf
 + 
offt
, (
db_dx_t
));

306 i(
offt
 + 
	`DUP_SIZE
(
dn
> 
n
) {

307 
	`EPRINT
((
dbp
->
dbv
,

309 (
u_lg
)
p
->
pgno
, (u_lg)
i
));

310 
t
 = 
DB_VERIFY_BAD
;

311 
r
;

318 
	`memy
(&

,

319 
dabuf
 + 
offt
 + 
dn
 + (
db_dx_t
),

320 (
db_dx_t
));

321 i(

 !
dn
) {

322 
	`EPRINT
((
dbp
->
dbv
,

324 (
u_lg
)
p
->
pgno
, (u_lg)
i
));

325 
t
 = 
DB_VERIFY_BAD
;

326 
r
;

329 
	`F_SET
(
p
, 
VRFY_HAS_DUPS
);

330 i(!
	`LF_ISSET
(
DB_NOORDERCHK
) &&

331 
	`__ham_dups_uns܋d
(
dbp
, 
dabuf
, 
n
))

332 
	`F_SET
(
p
, 
VRFY_DUPS_UNSORTED
);

334 
H_OFFPAGE
:

336 
	`memy
(&
h
, 
	`P_ENTRY
(
dbp
, 
h
, 
i
), 
HOFFPAGE_SIZE
);

337 i(!
	`IS_VALID_PGNO
(
h
.
pgno
|| h.pgn=
p
->pgno ||

338 
h
.
pgno
 =
PGNO_INVALID
) {

339 
	`EPRINT
((
dbp
->
dbv
,

341 (
u_lg
)
p
->
pgno
, (u_lg)
i
, (u_lg)
h
.pgno));

342 
t
 = 
DB_VERIFY_BAD
;

343 
r
;

345 
	`memt
(&
chd
, 0, (
VRFY_CHILDINFO
));

346 
chd
.
pgno
 = 
h
.pgno;

347 
chd
.
ty
 = 
V_OVERFLOW
;

348 
chd
.

 = 
h
.tlen;

349 i((
t
 = 
	`__db_vrfy_chdput
(
vdp
, 
p
->
pgno
, &
chd
)) != 0)

350 
r
;

352 
H_OFFDUP
:

354 
	`memy
(&
hod
, 
	`P_ENTRY
(
dbp
, 
h
, 
i
), 
HOFFDUP_SIZE
);

355 i(!
	`IS_VALID_PGNO
(
hod
.
pgno
|| hod.pgn=
p
->pgno ||

356 
hod
.
pgno
 =
PGNO_INVALID
) {

357 
	`EPRINT
((
dbp
->
dbv
,

359 (
u_lg
)
p
->
pgno
, (u_lg)
i
));

360 
t
 = 
DB_VERIFY_BAD
;

361 
r
;

363 
	`memt
(&
chd
, 0, (
VRFY_CHILDINFO
));

364 
chd
.
pgno
 = 
hod
.pgno;

365 
chd
.
ty
 = 
V_DUPLICATE
;

366 i((
t
 = 
	`__db_vrfy_chdput
(
vdp
, 
p
->
pgno
, &
chd
)) != 0)

367 
r
;

368 
	`F_SET
(
p
, 
VRFY_HAS_DUPS
);

371 
	`EPRINT
((
dbp
->
dbv
,

373 (
u_lg
)
p
->
pgno
, (u_lg)
i
));

374 
t
 = 
DB_VERIFY_BAD
;

378 
r
: i((
t_t
 =

379 
	`__db_vrfy_puagefo
(
dbp
->
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

380 
t
 = 
t_t
;

381  (
t
);

382 
	}
}

392 
	$__ham_vrfy_ruu
(
dbp
, 
vdp
, 
ma_pgno
, 
ags
)

393 
DB
 *
dbp
;

394 
VRFY_DBINFO
 *
vdp
;

395 
db_pgno_t
 
ma_pgno
;

396 
u_t32_t
 
ags
;

398 
DB
 *
pgt
;

399 
DB_MPOOLFILE
 *
mpf
;

400 
HMETA
 *
m
;

401 
PAGE
 *
h
;

402 
VRFY_PAGEINFO
 *
p
;

403 
isbad
, 
p
, 
t
, 
t_t
;

404 
db_pgno_t
 
pgno
;

405 
u_t32_t
 
buck
, 
es_y
;

407 
mpf
 = 
dbp
->mpf;

408 
pgt
 = 
vdp
->pgset;

409 
h
 = 
NULL
;

410 
t
 = 
isbad
 = 0;

412 i((
t
 = 
	`__db_vrfy_pgt_g
(
pgt
, 
ma_pgno
, &
p
)) != 0)

413  (
t
);

414 i(
p
 != 0) {

415 
	`EPRINT
((
dbp
->
dbv
,

417 (
u_lg
)
ma_pgno
));

418  (
DB_VERIFY_BAD
);

420 i((
t
 = 
	`__db_vrfy_pgt_c
(
pgt
, 
ma_pgno
)) != 0)

421  (
t
);

424 i((
t
 = 
	`__memp_fg
(
mpf
, &
ma_pgno
, 
NULL
, 0, &
m
)) != 0)

425  (
t
);

428 
buck
 = 0; buck <
m
->
max_buck
; bucket++)

429 i((
t
 =

430 
	`__ham_vrfy_buck
(
dbp
, 
vdp
, 
m
, 
buck
, 
ags
)) != 0) {

431 i(
t
 =
DB_VERIFY_BAD
)

432 
isbad
 = 1;

434 
r
;

450 
buck
 = 
m
->
max_buck
 + 1; 
es_y
 = 
	`__db_log2
(bucket + 1),

451 
es_y
 < 
NCACHED
 && 
m
->
es
[es_y] !0; 
buck
++) {

452 
pgno
 = 
	`BS_TO_PAGE
(
buck
, 
m
->
es
);

453 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

454 
r
;

457 
	`F_CLR
(
p
, 
VRFY_IS_ALLZEROES
);

460 i(
p
->
ty
 =
P_INVALID
) {

461 i((
t
 = 
	`__db_vrfy_puagefo
(
dbp
->
dbv
,

462 
vdp
, 
p
)) != 0)

463 
r
;

467 i(
p
->
ty
 !
P_HASH
 &&->ty !
P_HASH_UNSORTED
) {

468 
	`EPRINT
((
dbp
->
dbv
,

470 (
u_lg
)
pgno
, (u_lg)
buck
));

471 
isbad
 = 1;

472 } i(
p
->
s
 != 0) {

473 
	`EPRINT
((
dbp
->
dbv
,

475 (
u_lg
)
pgno
, (u_lg)
buck
));

476 
isbad
 = 1;

478 i((
t
 = 
	`__db_vrfy_pgt_g
(
pgt
, 
pgno
, &
p
)) != 0)

479 
r
;

480 i(
p
 != 0) {

481 
	`EPRINT
((
dbp
->
dbv
,

483 (
u_lg
)
pgno
));

484 
isbad
 = 1;

486 i((
t
 =

487 
	`__db_vrfy_pgt_c
(
pgt
, 
pgno
)) != 0)

488 
r
;

489 i((
t
 = 
	`__db_vrfy_puagefo
(
dbp
->
dbv
,

490 
vdp
, 
p
)) != 0)

491 
r
;

497 ()
	`__db_vrfy_puagefo
(
dbp
->
dbv
, 
vdp
, 
p
);

498 
r
;

501 
r
: i((
t_t
 = 
	`__memp_ut
(
mpf
, 
m
, 
dbp
->
iܙy
)) != 0)

502  (
t_t
);

503 i(
h
 !
NULL
 && (
t_t
 = 
	`__memp_ut
(
mpf
, h, 
dbp
->
iܙy
)) != 0)

504  (
t_t
);

505  ((
isbad
 =1 && 
t
 =0? 
DB_VERIFY_BAD
:et);

506 
	}
}

513 
	$__ham_vrfy_buck
(
dbp
, 
vdp
, 
m
, 
buck
, 
ags
)

514 
DB
 *
dbp
;

515 
VRFY_DBINFO
 *
vdp
;

516 
HMETA
 *
m
;

517 
u_t32_t
 
buck
, 
ags
;

519 
DB_ENV
 *
dbv
;

520 
HASH
 *
hashp
;

521 
VRFY_CHILDINFO
 *
chd
;

522 
VRFY_PAGEINFO
 *
m
, *
p
;

523 
t
, 
t_t
, 
isbad
, 
p
;

524 
db_pgno_t
 
pgno
, 
xt_pgno
;

525 
DBC
 *
cc
;

526 
	`u_t32_t
 (*
hfunc

	`__P
((
DB
 *, cڡ *, 
u_t32_t
));

528 
dbv
 = 
dbp
->dbenv;

529 
isbad
 = 0;

530 
p
 = 
NULL
;

531 
cc
 = 
NULL
;

533 
hashp
 = 
dbp
->
h_
;

534 i(
hashp
 !
NULL
 && hashp->
h_hash
 != NULL)

535 
hfunc
 = 
hashp
->
h_hash
;

537 
hfunc
 = 
__ham_func5
;

539 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
	`PGNO
(
m
), &
m
)) != 0)

540  (
t
);

543 
pgno
 = 
	`BS_TO_PAGE
(
buck
, 
m
->
es
);

545 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

546 
r
;

549 i(
pgno
 > 
vdp
->
ϡ_pgno
 ||

550 (
p
->
ty
 !
P_HASH
 &&->ty !
P_HASH_UNSORTED
)) {

551 
	`EPRINT
((
dbv
,

553 (
u_lg
)
pgno
, (u_lg)
buck
));

555 
isbad
 = 1;

556 
r
;

559 i(
p
->
ev_pgno
 !
PGNO_INVALID
) {

560 
	`EPRINT
((
dbv
,

562 (
u_lg
)
pgno
, (u_lg)
buck
));

563 
isbad
 = 1;

569 
ags
 |
	`F_ISSET
(
m
, 
VRFY_HAS_DUPS
? 
ST_DUPOK
 : 0;

570 
ags
 |
	`F_ISSET
(
m
, 
VRFY_HAS_DUPSORT
? 
ST_DUPSORT
 : 0;

575 i(!
	`LF_ISSET
(
DB_SALVAGE
))

576 
	`__db_vrfy_ru_edback
(
dbp
, 
vdp
);

578 i((
t
 = 
	`__db_vrfy_pgt_g
(
vdp
->
pgt
, 
pgno
, &
p
)) != 0)

579 
r
;

580 i(
p
 != 0) {

581 
	`EPRINT
((
dbv
,

583 (
u_lg
)
pgno
));

584 
isbad
 = 1;

586 
r
;

587 } i((
t
 = 
	`__db_vrfy_pgt_c
(
vdp
->
pgt
, 
pgno
)) != 0)

588 
r
;

600 
	`F_CLR
(
p
, 
VRFY_IS_ALLZEROES
);

603 i(
	`F_ISSET
(
p
, 
VRFY_HAS_DUPS
) &&

604 !
	`F_ISSET
(
m
, 
VRFY_HAS_DUPS
)) {

605 
	`EPRINT
((
dbv
,

607 (
u_lg
)
pgno
));

608 
isbad
 = 1;

615 i(
	`F_ISSET
(
m
, 
VRFY_HAS_DUPSORT
) &&

616 
	`F_ISSET
(
p
, 
VRFY_DUPS_UNSORTED
)) {

617 
	`EPRINT
((
dbv
,

619 (
u_lg
)
pgno
));

620 
isbad
 = 1;

624 i((
t
 = 
	`__db_vrfy_chdcurs
(
vdp
, &
cc
)) != 0)

625 
r
;

626 
t
 = 
	`__db_vrfy_cct
(
cc
, 
p
->
pgno
, &
chd
);et == 0;

627 
t
 = 
	`__db_vrfy_cext
(
cc
, &
chd
))

628 i(
chd
->
ty
 =
V_OVERFLOW
) {

629 i((
t
 = 
	`__db_vrfy_ov_ruu
(
dbp
, 
vdp
,

630 
chd
->
pgno
, chd->

,

631 
ags
 | 
ST_OVFL_LEAF
)) != 0) {

632 i(
t
 =
DB_VERIFY_BAD
)

633 
isbad
 = 1;

635 
r
;

637 } i(
chd
->
ty
 =
V_DUPLICATE
) {

638 i((
t
 = 
	`__db_vrfy_duy
(
dbp
,

639 
vdp
, 
chd
->
pgno
, 
ags
)) != 0) {

640 
isbad
 = 1;

643 i((
t
 = 
	`__bam_vrfy_sub
(
dbp
, 
vdp
,

644 
chd
->
pgno
, 
NULL
, NULL,

645 
ags
 | 
ST_RECNUM
 | 
ST_DUPSET
 | 
ST_TOPLEVEL
,

646 
NULL
, NULL, NULL)) != 0) {

647 i(
t
 =
DB_VERIFY_BAD
)

648 
isbad
 = 1;

650 
r
;

653 i((
t
 = 
	`__db_vrfy_cco
(
cc
)) != 0)

654 
r
;

655 
cc
 = 
NULL
;

658 i(
isbad
 =0 && !
	`LF_ISSET
(
DB_NOORDERCHK
) &&

659 (
t
 = 
	`__ham_vrfy_hashg
(
dbp
, 
p
->
s
,

660 
m
, 
buck
, 
pgno
, 
ags
, 
hfunc
)) != 0) {

661 i(
t
 =
DB_VERIFY_BAD
)

662 
isbad
 = 1;

664 
r
;

667 
xt_pgno
 = 
p
->next_pgno;

668 
t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
);

670 
p
 = 
NULL
;

671 i(
t
 != 0)

672 
r
;

674 i(
xt_pgno
 =
PGNO_INVALID
)

678 i(!
	`IS_VALID_PGNO
(
xt_pgno
)) {

679 
	`EPRINT
((
dbv
,

681 (
u_lg
)
pgno
));

682 
isbad
 = 1;

683 
r
;

686 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
xt_pgno
, &
p
)) != 0)

687 
r
;

689 i(
p
->
ev_pgno
 !
pgno
) {

690 
	`EPRINT
((
dbv
,

692 (
u_lg
)
xt_pgno
));

693 
isbad
 = 1;

695 
pgno
 = 
xt_pgno
;

698 
r
: i(
cc
 !
NULL
 && ((
t_t
 = 
	`__db_vrfy_cco
(cc)!0&& 
t
 == 0)

699 
t
 = 
t_t
;

700 i(
m
 !
NULL
 && ((
t_t
 =

701 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
m
)!0&& 
t
 == 0)

702 
t
 = 
t_t
;

703 i(
p
 !
NULL
 && ((
t_t
 =

704 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0&& 
t
 == 0)

705 
t
 = 
t_t
;

706  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

707 
	}
}

718 
	$__ham_vrfy_hashg
(
dbp
, 
rs
, 
m
, 
thisbuck
, 
pgno
, 
ags
, 
hfunc
)

719 
DB
 *
dbp
;

720 
u_t32_t
 
rs
;

721 
HMETA
 *
m
;

722 
u_t32_t
 
thisbuck
;

723 
db_pgno_t
 
pgno
;

724 
u_t32_t
 
ags
;

725 
	$u_t32_t
 (*
hfunc

	`__P
((
DB
 *, cڡ *, 
u_t32_t
));

727 
DBT
 
dbt
;

728 
DB_MPOOLFILE
 *
mpf
;

729 
PAGE
 *
h
;

730 
db_dx_t
 
i
;

731 
t
, 
t_t
, 
isbad
;

732 
u_t32_t
 
hv
, 
buck
;

734 
mpf
 = 
dbp
->mpf;

735 
t
 = 
isbad
 = 0;

737 
	`memt
(&
dbt
, 0, (
DBT
));

738 
	`F_SET
(&
dbt
, 
DB_DBT_REALLOC
);

740 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0)

741  (
t
);

743 
i
 = 0; i < 
rs
; i += 2) {

752 i((
t
 = 
	`__db_t
(
dbp
, 
NULL
, 
h
, 
i
, &
dbt
, NULL, NULL)) != 0)

753 
r
;

754 
hv
 = 
	`hfunc
(
dbp
, 
dbt
.
da
, dbt.
size
);

756 
buck
 = 
hv
 & 
m
->
high_mask
;

757 i(
buck
 > 
m
->
max_buck
)

758 
buck
 = buck & 
m
->
low_mask
;

760 i(
buck
 !
thisbuck
) {

761 
	`EPRINT
((
dbp
->
dbv
,

763 (
u_lg
)
pgno
, (u_lg)
i
));

764 
isbad
 = 1;

768 
r
: i(
dbt
.
da
 !
NULL
)

769 
	`__os_u
(
dbp
->
dbv
, 
dbt
.
da
);

770 i((
t_t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)) != 0)

771  (
t_t
);

773  ((
t
 =0 && 
isbad
 =1? 
DB_VERIFY_BAD
 :et);

774 
	}
}

785 
	$__ham_lvage
(
dbp
, 
vdp
, 
pgno
, 
h
, 
hd
, 
back
, 
ags
)

786 
DB
 *
dbp
;

787 
VRFY_DBINFO
 *
vdp
;

788 
db_pgno_t
 
pgno
;

789 
PAGE
 *
h
;

790 *
hd
;

791 (*
back

	`__P
((*, const *));

792 
u_t32_t
 
ags
;

794 
DBT
 
dbt
, 
unkdbt
;

795 
db_pgno_t
 
dpgno
;

796 
t
, 
r_t
, 
t_t
;

797 
u_t32_t
 
himk
, 
i
;

798 
u_t8_t
 *
hk
, *
p
;

799 *
buf
;

800 
db_dx_t
 
dn
, 
n
, 

;

802 
	`memt
(&
dbt
, 0, (
DBT
));

803 
dbt
.
ags
 = 
DB_DBT_REALLOC
;

805 
	`DB_INIT_DBT
(
unkdbt
, "UNKNOWN", ("UNKNOWN") - 1);

807 
r_t
 = 0;

813 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
, dbp->
pgsize
, &
buf
)) != 0)

814  (
t
);

816 
himk
 = 
dbp
->
pgsize
;

817 
i
 = 0;; i++) {

819 i(!
	`LF_ISSET
(
DB_AGGRESSIVE
&& 
i
 >
	`NUM_ENT
(
h
))

823 
t
 = 
	`__db_vrfy_pem
(
dbp
,

824 
h
, 
pgno
, 
i
, 0, 
ags
, &
himk
, 
NULL
);

826 i(
t
 =
DB_VERIFY_FATAL
)

829 i(
t
 == 0) {

831 
n
 = 
	`LEN_HITEM
(
dbp
, 
h
, dbp->
pgsize
, 
i
);

832 
hk
 = 
	`P_ENTRY
(
dbp
, 
h
, 
i
);

833 i(
n
 =0 || > 
dbp
->
pgsize
 ||

834 (
u_t32_t
)(
hk
 + 
n
 - (
u_t8_t
 *)
h
) >

835 
dbp
->
pgsize
) {

837 
r_t
 = 
DB_VERIFY_BAD
;

840 
	`HPAGE_PTYPE
(
hk
)) {

842 i(!
	`LF_ISSET
(
DB_AGGRESSIVE
))

844 
r_t
 = 
DB_VERIFY_BAD
;

846 
H_KEYDATA
:

848 
n
 = 
	`LEN_HKEYDATA
(
dbp
, 
h
, dbp->
pgsize
, 
i
);

849 
keyda
: 
	`memy
(
buf
, 
	`HKEYDATA_DATA
(
hk
), 
n
);

850 
dbt
.
size
 = 
n
;

851 
dbt
.
da
 = 
buf
;

852 i((
t
 = 
	`__db_vrfy_dbt
(&
dbt
,

853 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0)

854 
r_t
 = 
t
;

856 
H_OFFPAGE
:

857 i(
n
 < 
HOFFPAGE_SIZE
) {

858 
r_t
 = 
DB_VERIFY_BAD
;

861 
	`memy
(&
dpgno
,

862 
	`HOFFPAGE_PGNO
(
hk
), (
dpgno
));

863 i((
t
 = 
	`__db__goff
(
dbp
, 
vdp
,

864 
dpgno
, &
dbt
, &
buf
, 
ags
)) != 0) {

865 
r_t
 = 
t
;

866 ()
	`__db_vrfy_dbt
(&
unkdbt
, 0, " ",

867 
hd
, 
back
, 0, 
vdp
);

870 i((
t
 = 
	`__db_vrfy_dbt
(&
dbt
,

871 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0)

872 
r_t
 = 
t
;

874 
H_OFFDUP
:

875 i(
n
 < 
HOFFDUP_SIZE
) {

876 
r_t
 = 
DB_VERIFY_BAD
;

879 
	`memy
(&
dpgno
,

880 
	`HOFFDUP_PGNO
(
hk
), (
dpgno
));

882 i(!
	`IS_VALID_PGNO
(
dpgno
|| (
i
 % 2 == 0)) {

883 i((
t
 =

884 
	`__db_vrfy_dbt
(&
unkdbt
, 0, " ",

885 
hd
, 
back
, 0, 
vdp
)) != 0)

886 
r_t
 = 
t
;

887 } i((
t
 = 
	`__db_lvage_due
(
dbp
,

888 
vdp
, 
dpgno
, &
dbt
, 
hd
, 
back
,

889 
ags
 | 
SA_SKIPFIRSTKEY
)) != 0)

890 
r_t
 = 
t
;

892 
H_DUPLICATE
:

893 
n
 = 
	`LEN_HKEYDATA
(
dbp
, 
h
, dbp->
pgsize
, 
i
);

900 i(
i
 % 2 == 0) {

901 
r_t
 = 
t
;

902 i(
	`LF_ISSET
(
DB_AGGRESSIVE
))

903 
keyda
;

913 i(
n
 <

914 
	`HKEYDATA_SIZE
(2 * (
db_dx_t
))) {

915 
r_t
 = 
DB_VERIFY_BAD
;

920 

 = 0;+ (
db_dx_t
< 
n
;

921 

 +
dn
) {

922 
p
 = 
	`HKEYDATA_DATA
(
hk
+ 

;

923 

 +(
db_dx_t
);

924 
	`memy
(&
dn
, 
p
, (
db_dx_t
));

925 
p
 +(
db_dx_t
);

930 i(
dn
 + 

 > 
n
)

931 
dn
 = 
n
 - 

;

932 
	`memy
(
buf
, 
p
, 
dn
);

933 
dbt
.
size
 = 
dn
;

934 
dbt
.
da
 = 
buf
;

935 i((
t
 = 
	`__db_vrfy_dbt
(&
dbt
, 0, " ",

936 
hd
, 
back
, 0, 
vdp
)) != 0)

937 
r_t
 = 
t
;

938 

 +(
db_dx_t
);

945 
	`__os_
(
dbp
->
dbv
, 
buf
);

946 i((
t_t
 = 
	`__db_lvage_mkde
(
vdp
, 
pgno
)) != 0)

947  (
t_t
);

948  ((
t
 =0 && 
r_t
 != 0) ?rr_ret :et);

949 
	}
}

960 
	$__ham_ma2pgt
(
dbp
, 
vdp
, 
hma
, 
ags
, 
pgt
)

961 
DB
 *
dbp
;

962 
VRFY_DBINFO
 *
vdp
;

963 
HMETA
 *
hma
;

964 
u_t32_t
 
ags
;

965 
DB
 *
pgt
;

967 
DB_MPOOLFILE
 *
mpf
;

968 
PAGE
 *
h
;

969 
db_pgno_t
 
pgno
;

970 
u_t32_t
 
buck
, 
tpgs
;

971 
t
, 
v
;

977 
	`COMPQUIET
(
ags
, 0);

979 
	`DB_ASSERT
(
dbp
->
dbv
, 
pgt
 !
NULL
);

981 
mpf
 = 
dbp
->mpf;

982 
tpgs
 = 0;

988 
buck
 = 0; buck <
hma
->
max_buck
; bucket++) {

989 
pgno
 = 
	`BS_TO_PAGE
(
buck
, 
hma
->
es
);

998 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
NULL
, 0, &
h
)) != 0)

999  (
t
);

1000 i(
	`TYPE
(
h
=
P_HASH
 || TYPE(h=
P_HASH_UNSORTED
) {

1006 i(++
tpgs
 > 
vdp
->
ϡ_pgno
) {

1007 ()
	`__memp_ut
(
mpf
,

1008 
h
, 
dbp
->
iܙy
);

1009  (
DB_VERIFY_BAD
);

1011 i((
t
 =

1012 
	`__db_vrfy_pgt_c
(
pgt
, 
pgno
)) != 0) {

1013 ()
	`__memp_ut
(
mpf
,

1014 
h
, 
dbp
->
iܙy
);

1015  (
t
);

1018 
pgno
 = 
	`NEXT_PGNO
(
h
);

1020 
pgno
 = 
PGNO_INVALID
;

1022 i((
t
 = 
	`__memp_ut
(
mpf
, 
h
, 
dbp
->
iܙy
)) != 0)

1023  (
t
);

1026 i(!
	`IS_VALID_PGNO
(
pgno
) ||

1027 
pgno
 =
PGNO_INVALID
)

1034 i((
t
 = 
	`__db_vrfy_pgt_g
(
pgt
, 
pgno
, &
v
)) != 0)

1035  (
t
);

1036 i(
v
 != 0)

1041 
	}
}

1050 
	$__ham_dups_uns܋d
(
dbp
, 
buf
, 
n
)

1051 
DB
 *
dbp
;

1052 
u_t8_t
 *
buf
;

1053 
u_t32_t
 
n
;

1055 
DBT
 
a
, 
b
;

1056 
db_dx_t
 
offt
, 
dn
;

1057 (*
func

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

1059 
	`memt
(&
a
, 0, (
DBT
));

1060 
	`memt
(&
b
, 0, (
DBT
));

1062 
func
 = (
dbp
->
dup_com
 =
NULL
? 
__bam_defcmp
 : dbp->dup_compare;

1069 
offt
 = 0; off< 
n
; off+
	`DUP_SIZE
(
dn
)) {

1070 
	`memy
(&
dn
, 
buf
 + 
offt
, (
db_dx_t
));

1071 
b
.
da
 = 
buf
 + 
offt
 + (
db_dx_t
);

1072 
b
.
size
 = 
dn
;

1074 i(
a
.
da
 !
NULL
 && 
	`func
(
dbp
, &a, &
b
) > 0)

1077 
a
.
da
 = 
b
.data;

1078 
a
.
size
 = 
b
.size;

1082 
	}
}

	@../hmac/hmac.c

12 
	~"db_cfig.h
"

14 
	~"db_t.h
"

15 
	~"dbc/yo.h
"

16 
	~"dbc/db_ge.h
"

17 
	~"dbc/hash.h
"

18 
	~"dbc/hmac.h
"

19 
	~"dbc/log.h
"

21 
	#HMAC_OUTPUT_SIZE
 20

	)

22 
	#HMAC_BLOCK_SIZE
 64

	)

24 
__db_hmac
 
__P
((
u_t8_t
 *, u_t8_*, 
size_t
, u_int8_t *));

41 
	$__db_hmac
(
k
, 
da
, 
da_n
, 
mac
)

42 
u_t8_t
 *
k
, *
da
, *
mac
;

43 
size_t
 
da_n
;

45 
SHA1_CTX
 
x
;

46 
u_t8_t
 
key
[
HMAC_BLOCK_SIZE
];

47 
u_t8_t
 
ad
[
HMAC_BLOCK_SIZE
];

48 
u_t8_t
 
ad
[
HMAC_BLOCK_SIZE
];

49 
u_t8_t
 
tmp
[
HMAC_OUTPUT_SIZE
];

50 
i
;

52 
	`memt
(
key
, 0x00, 
HMAC_BLOCK_SIZE
);

53 
	`memt
(
ad
, 0x36, 
HMAC_BLOCK_SIZE
);

54 
	`memt
(
ad
, 0x5C, 
HMAC_BLOCK_SIZE
);

56 
	`memy
(
key
, 
k
, 
HMAC_OUTPUT_SIZE
);

58 
i
 = 0; i < 
HMAC_BLOCK_SIZE
; i++) {

59 
ad
[
i
] ^
key
[i];

60 
ad
[
i
] ^
key
[i];

63 
	`__db_SHA1In
(&
x
);

64 
	`__db_SHA1Upde
(&
x
, 
ad
, 
HMAC_BLOCK_SIZE
);

65 
	`__db_SHA1Upde
(&
x
, 
da
, 
da_n
);

66 
	`__db_SHA1F
(
tmp
, &
x
);

67 
	`__db_SHA1In
(&
x
);

68 
	`__db_SHA1Upde
(&
x
, 
ad
, 
HMAC_BLOCK_SIZE
);

69 
	`__db_SHA1Upde
(&
x
, 
tmp
, 
HMAC_OUTPUT_SIZE
);

70 
	`__db_SHA1F
(
mac
, &
x
);

72 
	}
}

82 
	$__db_chksum
(
hdr
, 
da
, 
da_n
, 
mac_key
, 
e
)

83 *
hdr
;

84 
u_t8_t
 *
da
;

85 
size_t
 
da_n
;

86 
u_t8_t
 *
mac_key
;

87 
u_t8_t
 *
e
;

89 
sumn
;

90 
u_t32_t
 
hash4
;

102 i(
mac_key
 =
NULL
)

103 
sumn
 = (
u_t32_t
);

105 
sumn
 = 
DB_MAC_KEY
;

106 i(
hdr
 =
NULL
)

107 
	`memt
(
e
, 0, 
sumn
);

109 
e
 = ((
HDR
*)
hdr
)->
chksum
;

110 i(
mac_key
 =
NULL
) {

112 
hash4
 = 
	`__ham_func4
(
NULL
, 
da
, (
u_t32_t
)
da_n
);

113 i(
hdr
 !
NULL
)

114 
hash4
 ^((
HDR
 *)
hdr
)->
ev
 ^ ((HDR *)hdr)->
n
;

115 
	`memy
(
e
, &
hash4
, 
sumn
);

117 
	`__db_hmac
(
mac_key
, 
da
, 
da_n
, 
e
);

118 i(
hdr
 != 0) {

119 ((*)
e
)[0] ^((
HDR
 *)
hdr
)->
ev
;

120 ((*)
e
)[1] ^((
HDR
 *)
hdr
)->
n
;

124 
	}
}

132 
	$__db_dive_mac
(
sswd
, 

, 
mac_key
)

133 
u_t8_t
 *
sswd
;

134 
size_t
 

;

135 
u_t8_t
 *
mac_key
;

137 
SHA1_CTX
 
x
;

140 
	`__db_SHA1In
(&
x
);

141 
	`__db_SHA1Upde
(&
x
, 
sswd
, 

);

142 
	`__db_SHA1Upde
(&
x
, (
u_t8_t
 *)
DB_MAC_MAGIC
, 
	`
(DB_MAC_MAGIC));

143 
	`__db_SHA1Upde
(&
x
, 
sswd
, 

);

144 
	`__db_SHA1F
(
mac_key
, &
x
);

147 
	}
}

159 
	$__db_check_chksum
(
dbv
, 
hdr
, 
db_ch
, 
chksum
, 
da
, 
da_n
, 
is_hmac
)

160 
DB_ENV
 *
dbv
;

161 *
hdr
;

162 
DB_CIPHER
 *
db_ch
;

163 
u_t8_t
 *
chksum
;

164 *
da
;

165 
size_t
 
da_n
;

166 
is_hmac
;

168 
t
;

169 
size_t
 
sum_n
;

170 
u_t32_t
 
hash4
;

171 
u_t8_t
 *
mac_key
, 
d
[
DB_MAC_KEY
], 
w
[DB_MAC_KEY];

178 i(
is_hmac
 == 0) {

179 i(
db_ch
 !
NULL
) {

180 
	`__db_rx
(
dbv
,

182  (
EINVAL
);

184 
sum_n
 = (
u_t32_t
);

185 
mac_key
 = 
NULL
;

187 i(
db_ch
 =
NULL
) {

188 
	`__db_rx
(
dbv
,

190  (
EINVAL
);

192 
sum_n
 = 
DB_MAC_KEY
;

193 
mac_key
 = 
db_ch
->mac_key;

203 
y
:

204 i(
hdr
 =
NULL
) {

205 
	`memy
(
d
, 
chksum
, 
sum_n
);

206 
	`memt
(
chksum
, 0, 
sum_n
);

207 
chksum
 = 
d
;

210 i(
mac_key
 =
NULL
) {

212 
hash4
 = 
	`__ham_func4
(
NULL
, 
da
, (
u_t32_t
)
da_n
);

213 i(
hdr
 !
NULL
)

214 
	`LOG_HDR_SUM
(0, 
hdr
, &
hash4
);

215 
t
 = 
	`memcmp
((
u_t32_t
 *)
chksum
, &
hash4
, 
sum_n
) ? -1 : 0;

217 
	`__db_hmac
(
mac_key
, 
da
, 
da_n
, 
w
);

218 i(
hdr
 !
NULL
)

219 
	`LOG_HDR_SUM
(1, 
hdr
, 
w
);

220 
t
 = 
	`memcmp
(
chksum
, 
w
, 
sum_n
) ? -1 : 0;

228 i(
hdr
 !
NULL
 && 
t
 != 0) {

229 
hdr
 = 
NULL
;

230 
y
;

233  (
t
);

234 
	}
}

	@../hmac/sha1.c

5 
	~"db_cfig.h
"

7 
	~"db_t.h
"

8 
	~"dbc/hmac.h
"

79 
	#SHA1HANDSOFF


	)

84 
	#r
(
vue
, 
bs
(((vue<< (bs)| ((vue>> (32 - (bs))))

	)

88 
	#blk0
(
i

is_bigdn
 ? 
block
->
l
[i] : \

89 (
block
->
l
[
i
] = (
	`r
(block->l[i],24)&0xFF00FF00) \

90 |(
	`r
(
block
->
l
[
i
],8)&0x00FF00FF))

	)

91 
	#blk
(
i
(
block
->
l
[i&15] = 
	`r
(block->l[(i+13)&15]^block->l[(i+8)&15] \

92 ^
block
->
l
[(
i
+2)&15]^block->l[i&15],1))

	)

95 
	#R0
(
v
,
w
,
x
,
y
,
z
,
i
z+=((w&(x^y))^y)+
	`blk0
(i)+0x5A827999+
	`r
(v,5);w(w,30);

	)

96 
	#R1
(
v
,
w
,
x
,
y
,
z
,
i
z+=((w&(x^y))^y)+
	`blk
(i)+0x5A827999+
	`r
(v,5);w(w,30);

	)

97 
	#R2
(
v
,
w
,
x
,
y
,
z
,
i
z+=(w^x^y)+
	`blk
(i)+0x6ED9EBA1+
	`r
(v,5);w(w,30);

	)

98 
	#R3
(
v
,
w
,
x
,
y
,
z
,
i
z+=(((w|x)&y)|(w&x))+
	`blk
(i)+0x8F1BBCDC+
	`r
(v,5);w(w,30);

	)

99 
	#R4
(
v
,
w
,
x
,
y
,
z
,
i
z+=(w^x^y)+
	`blk
(i)+0xCA62C1D6+
	`r
(v,5);w(w,30);

	)

101 #ifde
VERBOSE


102 
__db_SHAPrtCڋxt
 
__P
((
SHA1_CTX
 *, *));

104 
	$__db_SHAPrtCڋxt
(
cڋxt
, 
msg
)

105 
SHA1_CTX
 *
cڋxt
;

106 *
msg
;

108 
	`tf
("%s (%d,%d) %x %x %x %x %x\n",

109 
msg
,

110 
cڋxt
->
cou
[0], context->count[1],

111 
cڋxt
->
e
[0],

112 
cڋxt
->
e
[1],

113 
cڋxt
->
e
[2],

114 
cڋxt
->
e
[3],

115 
cڋxt
->
e
[4]);

116 
	}
}

127 
	$__db_SHA1Tnsfm
(
e
, 
bufr
)

128 
u_t32_t
 *
e
;

129 *
bufr
;

131 
u_t32_t
 
a
, 
b
, 
c
, 
d
, 
e
;

133 
c
[64];

134 
u_t32_t
 
l
[16];

135 } 
	tCHAR64LONG16
;

136 
CHAR64LONG16
* 
block
;

137 
is_bigdn
;

138 #ifde
SHA1HANDSOFF


139 
wka
[64];

141 
block
 = (
CHAR64LONG16
*)
wka
;

142 
	`memy
(
block
, 
bufr
, 64);

144 
block
 = (
CHAR64LONG16
*)
bufr
;

146 
is_bigdn
 = 
	`__db_isbigdn
();

149 
a
 = 
e
[0];

150 
b
 = 
e
[1];

151 
c
 = 
e
[2];

152 
d
 = 
e
[3];

153 
e
 = 
e
[4];

155 
	`R0
(
a
,
b
,
c
,
d
,
e
, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);

156 
	`R0
(
b
,
c
,
d
,
e
,
a
, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);

157 
	`R0
(
c
,
d
,
e
,
a
,
b
, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);

158 
	`R0
(
d
,
e
,
a
,
b
,
c
,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);

159 
	`R1
(
e
,
a
,
b
,
c
,
d
,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);

160 
	`R2
(
a
,
b
,
c
,
d
,
e
,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);

161 
	`R2
(
b
,
c
,
d
,
e
,
a
,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);

162 
	`R2
(
c
,
d
,
e
,
a
,
b
,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);

163 
	`R2
(
d
,
e
,
a
,
b
,
c
,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);

164 
	`R2
(
e
,
a
,
b
,
c
,
d
,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);

165 
	`R3
(
a
,
b
,
c
,
d
,
e
,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);

166 
	`R3
(
b
,
c
,
d
,
e
,
a
,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);

167 
	`R3
(
c
,
d
,
e
,
a
,
b
,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);

168 
	`R3
(
d
,
e
,
a
,
b
,
c
,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);

169 
	`R3
(
e
,
a
,
b
,
c
,
d
,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);

170 
	`R4
(
a
,
b
,
c
,
d
,
e
,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);

171 
	`R4
(
b
,
c
,
d
,
e
,
a
,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);

172 
	`R4
(
c
,
d
,
e
,
a
,
b
,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);

173 
	`R4
(
d
,
e
,
a
,
b
,
c
,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);

174 
	`R4
(
e
,
a
,
b
,
c
,
d
,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);

176 
e
[0] +
a
;

177 
e
[1] +
b
;

178 
e
[2] +
c
;

179 
e
[3] +
d
;

180 
e
[4] +
e
;

182 
a
 = 
b
 = 
c
 = 
d
 = 
e
 = 0;

183 
	}
}

194 
	$__db_SHA1In
(
cڋxt
)

195 
SHA1_CTX
 *
cڋxt
;

198 
cڋxt
->
e
[0] = 0x67452301;

199 
cڋxt
->
e
[1] = 0xEFCDAB89;

200 
cڋxt
->
e
[2] = 0x98BADCFE;

201 
cڋxt
->
e
[3] = 0x10325476;

202 
cڋxt
->
e
[4] = 0xC3D2E1F0;

203 
cڋxt
->
cou
[0] = context->count[1] = 0;

204 
	}
}

216 
	$__db_SHA1Upde
(
cڋxt
, 
da
, 
n
)

217 
SHA1_CTX
 *
cڋxt
;

218 *
da
;

219 
size_t
 
n
;

221 
u_t32_t
 
i
, 
j
;

223 #ifde
VERBOSE


224 
	`__db_SHAPrtCڋxt
(
cڋxt
, "before");

226 
j
 = (
cڋxt
->
cou
[0] >> 3) & 63;

227 i((
cڋxt
->
cou
[0] +(
u_t32_t
)
n
 << 3) < (len << 3)) context->count[1]++;

228 
cڋxt
->
cou
[1] +(
u_t32_t
)(
n
 >> 29);

229 i((
j
 + 
n
) > 63) {

230 
	`memy
(&
cڋxt
->
bufr
[
j
], 
da
, (
i
 = 64-j));

231 
	`__db_SHA1Tnsfm
(
cڋxt
->
e
, cڋxt->
bufr
);

232  ; 
i
 + 63 < 
n
; i += 64) {

233 
	`__db_SHA1Tnsfm
(
cڋxt
->
e
, &
da
[
i
]);

235 
j
 = 0;

237 
i
 = 0;

238 
	`memy
(&
cڋxt
->
bufr
[
j
], &
da
[
i
], 
n
 - i);

239 #ifde
VERBOSE


240 
	`__db_SHAPrtCڋxt
(
cڋxt
, "after ");

242 
	}
}

253 
	$__db_SHA1F
(
dige
, 
cڋxt
)

254 *
dige
;

255 
SHA1_CTX
 *
cڋxt
;

257 
u_t32_t
 
i
;

258 
fcou
[8];

260 
i
 = 0; i < 8; i++) {

261 
fcou
[
i
] = ()((
cڋxt
->
cou
[(i >= 4 ? 0 : 1)]

262 >> ((3-(
i
 & 3)) * 8) ) & 255);

264 
	`__db_SHA1Upde
(
cڋxt
, (*)"\200", 1);

265 (
cڋxt
->
cou
[0] & 504) != 448) {

266 
	`__db_SHA1Upde
(
cڋxt
, (*)"\0", 1);

268 
	`__db_SHA1Upde
(
cڋxt
, 
fcou
, 8);

270 
i
 = 0; i < 20; i++) {

271 
dige
[
i
] = ()

272 ((
cڋxt
->
e
[
i
>>2] >> ((3-(i & 3)) * 8) ) & 255);

275 
i
 = 0;

276 
	`memt
(
cڋxt
->
bufr
, 0, 64);

277 
	`memt
(
cڋxt
->
e
, 0, 20);

278 
	`memt
(
cڋxt
->
cou
, 0, 8);

279 
	`memt
(
fcou
, 0, 8);

280 #ifde
SHA1HANDSOFF


281 
	`__db_SHA1Tnsfm
(
cڋxt
->
e
, cڋxt->
bufr
);

283 
	}
}

	@../hsearch/hsearch.c

44 
	#DB_DBM_HSEARCH
 1

	)

45 
	~"db_cfig.h
"

47 
	~"db_t.h
"

49 
DB
 *
	gdbp
;

50 
ENTRY
 
	gtv
;

65 
	$__db_h
(
l
)

66 
size_t
 
l
;

68 
t
;

70 i((
t
 = 
	`db_
(&
dbp
, 
NULL
, 0)) != 0) {

71 
	`__os_t_o
(
t
);

75 i((
t
 = 
dbp
->
	`t_gesize
(dbp, 512)) != 0 ||

76 (
t
 = 
dbp
->
	`t_h_f
(dbp, 16)) != 0 ||

77 (
t
 = 
dbp
->
	`t_h_m
(dbp, (
u_t32_t
)
l
)) != 0 ||

78 (
t
 = 
dbp
->
	`ݒ
(dbp, 
NULL
,

79 
NULL
, NULL, 
DB_HASH
, 
DB_CREATE
, 
	`__db_omode
(
OWNER_RW
))) != 0)

80 
	`__os_t_o
(
t
);

86  (
t
 == 0 ? 1 : 0);

87 
	}
}

89 
ENTRY
 *

90 
	$__db_hch
(
em
, 
ai
)

91 
ENTRY
 
em
;

92 
ACTION
 
ai
;

94 
DBT
 
key
, 
v
;

95 
t
;

97 i(
dbp
 =
NULL
) {

98 
	`__os_t_o
(
EINVAL
);

99  (
NULL
);

101 
	`DB_INIT_DBT
(
key
, 
em
.key, 
	`
(item.key) + 1);

102 
	`memt
(&
v
, 0, (val));

104 
ai
) {

105 
ENTER
:

106 
	`DB_SET_DBT
(
v
, 
em
.
da
, 
	`
(item.data) + 1);

112 i((
t
 =

113 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
v
, 
DB_NOOVERWRITE
)) == 0)

115 i(
t
 =
DB_KEYEXIST
 &&

116 (
t
 = 
dbp
->
	`g
(dbp, 
NULL
, &
key
, &
v
, 0)) == 0)

122 
	`__os_t_o
(
t
 > 0 ? : 
EINVAL
);

123  (
NULL
);

124 
FIND
:

125 i((
t
 = 
dbp
->
	`g
(dbp, 
NULL
, &
key
, &
v
, 0)) != 0) {

126 i(
t
 !
DB_NOTFOUND
)

127 
	`__os_t_o
(
t
);

128  (
NULL
);

130 
em
.
da
 = (*)
v
.data;

133 
	`__os_t_o
(
EINVAL
);

134  (
NULL
);

136 
tv
.
key
 = 
em
.key;

137 
tv
.
da
 = 
em
.data;

138  (&
tv
);

139 
	}
}

142 
	$__db_hderoy
()

144 i(
dbp
 !
NULL
) {

145 ()
dbp
->
	`o
(dbp, 0);

146 
dbp
 = 
NULL
;

148 
	}
}

	@../libdb_java/db_java_wrap.c

1 
	~"db_cfig.h
"

18 #ide
SWIGTEMPLATEDISAMBIGUATOR


19 #i
defed
(
__SUNPRO_CC
)

20 #i(
__SUNPRO_CC
 <= 0x560)

21 
	#SWIGTEMPLATEDISAMBIGUATOR
 
me


	)

23 
	#SWIGTEMPLATEDISAMBIGUATOR


	)

26 
	#SWIGTEMPLATEDISAMBIGUATOR


	)

31 #ide
SWIGINLINE


32 #i
defed
(
__lulus
|| (defed(
__GNUC__
&& !defed(
__STRICT_ANSI__
))

33 
	#SWIGINLINE
 
le


	)

35 
	#SWIGINLINE


	)

40 #ide
SWIGUNUSED


41 #i
defed
(
__GNUC__
)

42 #i!(
defed
(
__lulus
)|| (
__GNUC__
 > 3 || (__GNUC__ =3 && 
__GNUC_MINOR__
 >= 4))

43 
	#SWIGUNUSED
 
	`__ibu__
 ((
__unud__
))

	)

45 
	#SWIGUNUSED


	)

47 #i
defed
(
__ICC
)

48 
	#SWIGUNUSED
 
	`__ibu__
 ((
__unud__
))

	)

50 
	#SWIGUNUSED


	)

54 #ide
SWIGUNUSEDPARM


55 #ifde
__lulus


56 
	#SWIGUNUSEDPARM
(
p
)

	)

58 
	#SWIGUNUSEDPARM
(
p

SWIGUNUSED


	)

63 #ide
SWIGINTERN


64 
	#SWIGINTERN
 
SWIGUNUSED


	)

68 #ide
SWIGINTERNINLINE


69 
	#SWIGINTERNINLINE
 
SWIGINTERN
 
SWIGINLINE


	)

73 #i(
__GNUC__
 >4|| (__GNUC__ =3 && 
__GNUC_MINOR__
 >= 4)

74 #ide
GCC_HASCLASSVISIBILITY


75 
	#GCC_HASCLASSVISIBILITY


	)

79 #ide
SWIGEXPORT


80 #i
defed
(
_WIN32
|| defed(
__WIN32__
|| defed(
__CYGWIN__
)

81 #i
defed
(
STATIC_LINKED
)

82 
	#SWIGEXPORT


	)

84 
	#SWIGEXPORT
 
	`__deec
(
dexpt
)

	)

87 #i
defed
(
__GNUC__
&& defed(
GCC_HASCLASSVISIBILITY
)

88 
	#SWIGEXPORT
 
	`__ibu__
 ((
	`visiby
("deu")))

	)

90 
	#SWIGEXPORT


	)

96 #ide
SWIGSTDCALL


97 #i
defed
(
_WIN32
|| defed(
__WIN32__
|| defed(
__CYGWIN__
)

98 
	#SWIGSTDCALL
 
__d


	)

100 
	#SWIGSTDCALL


	)

105 #i!
defed
(
SWIG_NO_CRT_SECURE_NO_DEPRECATE
&& defed(
_MSC_VER
)

106 #unde
_CRT_SECURE_NO_DEPRECATE


107 
	#_CRT_SECURE_NO_DEPRECATE


	)

112 #i
defed
(
__GNUC__
&& !defed(
__INTELC__
)

113 
	t__t64
;

117 #i
defed
(
__x86_64
)

118 #ifde
_LP64


119 #unde
_LP64


123 
	~<jni.h
>

124 
	~<dlib.h
>

125 
	~<rg.h
>

130 
	mSWIG_JavaOutOfMemyE
 = 1,

131 
	mSWIG_JavaIOExi
,

132 
	mSWIG_JavaRuimeExi
,

133 
	mSWIG_JavaIndexOutOfBoundsExi
,

134 
	mSWIG_JavaArhmicExi
,

135 
	mSWIG_JavaIegArgumtExi
,

136 
	mSWIG_JavaNuPorExi
,

137 
	mSWIG_JavaDePuVtu
,

138 
	mSWIG_JavaUnknownE


139 } 
	tSWIG_JavaExiCodes
;

142 
SWIG_JavaExiCodes
 
	mcode
;

143 cڡ *
	mjava_exi
;

144 } 
	tSWIG_JavaExis_t
;

147 
SWIGUNUSED
 
	$SWIG_JavaThrowExi
(
JNIEnv
 *
jv
, 
SWIG_JavaExiCodes
 
code
, cڡ *
msg
) {

148 
jass
 
exp
;

149 cڡ 
SWIG_JavaExis_t
 
java_exis
[] = {

150 { 
SWIG_JavaOutOfMemyE
, "java/lang/OutOfMemoryError" },

151 { 
SWIG_JavaIOExi
, "java/io/IOException" },

152 { 
SWIG_JavaRuimeExi
, "java/lang/RuntimeException" },

153 { 
SWIG_JavaIndexOutOfBoundsExi
, "java/lang/IndexOutOfBoundsException" },

154 { 
SWIG_JavaArhmicExi
, "java/lang/ArithmeticException" },

155 { 
SWIG_JavaIegArgumtExi
, "java/lang/IllegalArgumentException" },

156 { 
SWIG_JavaNuPorExi
, "java/lang/NullPointerException" },

157 { 
SWIG_JavaDePuVtu
, "java/lang/RuntimeException" },

158 { 
SWIG_JavaUnknownE
, "java/lang/UnknownError" },

159 { (
SWIG_JavaExiCodes
)0, "java/lang/UnknownError" } };

160 cڡ 
SWIG_JavaExis_t
 *
ex_r
 = 
java_exis
;

162 
ex_r
->
code
 != code &&xcept_ptr->code)

163 
ex_r
++;

165 (*
jv
)->
	`ExiCˬ
(jenv);

166 
exp
 = (*
jv
)->
	`FdCss
(jv, 
ex_r
->
java_exi
);

167 i(
exp
)

168 (*
jv
)->
	`ThrowNew
(jv, 
exp
, 
msg
);

169 
	}
}

174 
	#SWIG_cڌa_as
(
nuλtu
, 
ex
, 
msg
i(!x){
	`SWIG_JavaThrowExi
(
jv
, 
SWIG_JavaIegArgumtExi
, msg); uλtu; } 

	)

177 
	~"db_t.h
"

178 
	~"dbc/txn.h
"

180 #ifde
HAVE_CRYPTO


181 
	#CRYPTO_ONLY
(
x
(x);

	)

183 
	#CRYPTO_ONLY
(
x
)

	)

188 
	#SWIG_NOINCLUDE
 1

	)

190 
	#DB_ENV_INTERNAL
(
dbv
((dbv)->
i2_
)

	)

191 
	#DB_INTERNAL
(
db
((db)->
i_
)

	)

193 
	#DB_PKG
 "com/pyt/db/"

	)

196 
__dbj_throw
(
JNIEnv
 *
jv
,

197 
r
, cڡ *
msg
, 
jobje
 
obj
, jobje 
jdbv
);

200 
JavaVM
 *
	gjavavm
;

202 
jass
 
	gdb_ass
, 
	gdbc_ass
, 
	gdbv_ass
, 
	gdbt_ass
, 
	gdbl_ass
;

203 
jass
 
	gdbli_ass
, 
	gdbtxn_ass
;

204 
jass
 
	gkeynge_ass
;

205 
jass
 
	gbt__ass
, 
	gcom_ass
, 
	gh__ass
, 
	glock__ass
;

206 
jass
 
	glog__ass
, 
	gmpo__ass
, 
	gmpo_f_ass
;

207 
jass
 
	gmux__ass
, 
	gqam__ass
, 
	gp__ass
;

208 
jass
 
	gpmgr__ass
, 
	gpho_ass
, 
	gq__ass
, 
	gtxn__ass
;

209 
jass
 
	gtxn_aive_ass
;

210 
jass
 
	glock_ass
, 
	glockq_ass
;

211 
jass
 
	gdbex_ass
, 
	gddex_ass
, 
	glockex_ass
, 
	gmemex_ass
;

212 
jass
 
	gpdupmaex_ass
, 
	gphdddex_ass
;

213 
jass
 
	gphdeiex_ass
, 
	gpjoex_ass
;

214 
jass
 
	gexpedex_ass
, 
	gtimeoux_ass
;

215 
jass
 
	gockoux_ass
, 
	gpuvaex_ass
;

216 
jass
 
	gruex_ass
, 
	gvsiex_ass
;

217 
jass
 
	gffoundex_ass
, 
	gggex_ass
, 
	goutofmemr_ass
;

218 
jass
 
	gbyy_ass
, 
	grg_ass
, 
	gouutam_ass
;

220 
jfldID
 
	gdbc__fid
;

221 
jfldID
 
	gdbl_fe_fid
, 
	gdbl_offt_fid
;

222 
jfldID
 
	gdbt_da_fid
, 
	gdbt_da_nio_fid
, 
	gdbt_size_fid
, 
	gdbt_un_fid
;

223 
jfldID
 
	gdbt_dn_fid
, 
	gdbt_doff_fid
, 
	gdbt_ags_fid
, 
	gdbt_offt_fid
;

224 
jfldID
 
	gkr_ss_fid
, 
	gkr_equ_fid
, 
	gkr_g_fid
;

225 
jfldID
 
	glock__fid
;

226 
jfldID
 
	glockq__fid
, 
	glockq_modeag_fid
, 
	glockq_timeout_fid
;

227 
jfldID
 
	glockq_obj_fid
, 
	glockq_lock_fid
;

228 
jfldID
 
	gpho_pt_fid
, 
	gpho_ho_fid
, 
	gpho_eid_fid
;

229 
jfldID
 
	gpho_us_fid
;

232 
jfldID
 
	gbt__bt_magic_fid
;

233 
jfldID
 
	gbt__bt_vsi_fid
;

234 
jfldID
 
	gbt__bt_maags_fid
;

235 
jfldID
 
	gbt__bt_nkeys_fid
;

236 
jfldID
 
	gbt__bt_nda_fid
;

237 
jfldID
 
	gbt__bt_get_fid
;

238 
jfldID
 
	gbt__bt_gesize_fid
;

239 
jfldID
 
	gbt__bt_mkey_fid
;

240 
jfldID
 
	gbt__bt__n_fid
;

241 
jfldID
 
	gbt__bt__d_fid
;

242 
jfldID
 
	gbt__bt_vs_fid
;

243 
jfldID
 
	gbt__bt_t_pg_fid
;

244 
jfldID
 
	gbt__bt_af_pg_fid
;

245 
jfldID
 
	gbt__bt_dup_pg_fid
;

246 
jfldID
 
	gbt__bt_ov_pg_fid
;

247 
jfldID
 
	gbt__bt_emy_pg_fid
;

248 
jfldID
 
	gbt__bt__fid
;

249 
jfldID
 
	gbt__bt_t_pg_fid
;

250 
jfldID
 
	gbt__bt_af_pg_fid
;

251 
jfldID
 
	gbt__bt_dup_pg_fid
;

252 
jfldID
 
	gbt__bt_ov_pg_fid
;

253 
jfldID
 
	gcom_com_f͔_fid
;

254 
jfldID
 
	gcom_com_timeout_fid
;

255 
jfldID
 
	gcom_com_ges_fid
;

256 
jfldID
 
	gcom_com_ges__fid
;

257 
jfldID
 
	gcom_com_ges_exame_fid
;

258 
jfldID
 
	gcom_com_vs_fid
;

259 
jfldID
 
	gcom_com_ddlock_fid
;

260 
jfldID
 
	gcom_com_ges_und_fid
;

261 
jfldID
 
	gcom_com_un_fid
;

262 
jfldID
 
	gh__hash_magic_fid
;

263 
jfldID
 
	gh__hash_vsi_fid
;

264 
jfldID
 
	gh__hash_maags_fid
;

265 
jfldID
 
	gh__hash_nkeys_fid
;

266 
jfldID
 
	gh__hash_nda_fid
;

267 
jfldID
 
	gh__hash_get_fid
;

268 
jfldID
 
	gh__hash_gesize_fid
;

269 
jfldID
 
	gh__hash_f_fid
;

270 
jfldID
 
	gh__hash_bucks_fid
;

271 
jfldID
 
	gh__hash__fid
;

272 
jfldID
 
	gh__hash_b_fid
;

273 
jfldID
 
	gh__hash_bigges_fid
;

274 
jfldID
 
	gh__hash_big_b_fid
;

275 
jfldID
 
	gh__hash_ovows_fid
;

276 
jfldID
 
	gh__hash_ov__fid
;

277 
jfldID
 
	gh__hash_dup_fid
;

278 
jfldID
 
	gh__hash_dup__fid
;

279 
jfldID
 
	glock___id_fid
;

280 
jfldID
 
	glock___cur_maxid_fid
;

281 
jfldID
 
	glock___maxlocks_fid
;

282 
jfldID
 
	glock___maxlocks_fid
;

283 
jfldID
 
	glock___maxobjes_fid
;

284 
jfldID
 
	glock___nmodes_fid
;

285 
jfldID
 
	glock___ocks_fid
;

286 
jfldID
 
	glock___ocks_fid
;

287 
jfldID
 
	glock___maxocks_fid
;

288 
jfldID
 
	glock___maxocks_fid
;

289 
jfldID
 
	glock___nobjes_fid
;

290 
jfldID
 
	glock___maxnobjes_fid
;

291 
jfldID
 
	glock___eques_fid
;

292 
jfldID
 
	glock___Ės_fid
;

293 
jfldID
 
	glock___nupgde_fid
;

294 
jfldID
 
	glock___ndowngde_fid
;

295 
jfldID
 
	glock___lock_wa_fid
;

296 
jfldID
 
	glock___lock_nowa_fid
;

297 
jfldID
 
	glock___nddlocks_fid
;

298 
jfldID
 
	glock___locktimeout_fid
;

299 
jfldID
 
	glock___ocktimeouts_fid
;

300 
jfldID
 
	glock___tximeout_fid
;

301 
jfldID
 
	glock___ximeouts_fid
;

302 
jfldID
 
	glock___objs_wa_fid
;

303 
jfldID
 
	glock___objs_nowa_fid
;

304 
jfldID
 
	glock___locks_wa_fid
;

305 
jfldID
 
	glock___locks_nowa_fid
;

306 
jfldID
 
	glock___locks_wa_fid
;

307 
jfldID
 
	glock___locks_nowa_fid
;

308 
jfldID
 
	glock___gi_wa_fid
;

309 
jfldID
 
	glock___gi_nowa_fid
;

310 
jfldID
 
	glock___hash_n_fid
;

311 
jfldID
 
	glock___gsize_fid
;

312 
jfldID
 
	glog___magic_fid
;

313 
jfldID
 
	glog___vsi_fid
;

314 
jfldID
 
	glog___mode_fid
;

315 
jfldID
 
	glog___lg_bsize_fid
;

316 
jfldID
 
	glog___lg_size_fid
;

317 
jfldID
 
	glog___wc_bys_fid
;

318 
jfldID
 
	glog___wc_mbys_fid
;

319 
jfldID
 
	glog___cd_fid
;

320 
jfldID
 
	glog___w_bys_fid
;

321 
jfldID
 
	glog___w_mbys_fid
;

322 
jfldID
 
	glog___wcou_fid
;

323 
jfldID
 
	glog___wcou_fl_fid
;

324 
jfldID
 
	glog___rcou_fid
;

325 
jfldID
 
	glog___scou_fid
;

326 
jfldID
 
	glog___gi_wa_fid
;

327 
jfldID
 
	glog___gi_nowa_fid
;

328 
jfldID
 
	glog___cur_fe_fid
;

329 
jfldID
 
	glog___cur_offt_fid
;

330 
jfldID
 
	glog___disk_fe_fid
;

331 
jfldID
 
	glog___disk_offt_fid
;

332 
jfldID
 
	glog___maxcommrush_fid
;

333 
jfldID
 
	glog___mcommrush_fid
;

334 
jfldID
 
	glog___gsize_fid
;

335 
jfldID
 
	gmpo_f_fe_me_fid
;

336 
jfldID
 
	gmpo_f__gesize_fid
;

337 
jfldID
 
	gmpo_f__m_fid
;

338 
jfldID
 
	gmpo_f__che_h_fid
;

339 
jfldID
 
	gmpo_f__che_miss_fid
;

340 
jfldID
 
	gmpo_f__ge__fid
;

341 
jfldID
 
	gmpo_f__ge__fid
;

342 
jfldID
 
	gmpo_f__ge_out_fid
;

343 
jfldID
 
	gmpo___gbys_fid
;

344 
jfldID
 
	gmpo___bys_fid
;

345 
jfldID
 
	gmpo___nche_fid
;

346 
jfldID
 
	gmpo___max_nche_fid
;

347 
jfldID
 
	gmpo___mmsize_fid
;

348 
jfldID
 
	gmpo___maxݒfd_fid
;

349 
jfldID
 
	gmpo___maxwre_fid
;

350 
jfldID
 
	gmpo___maxwre_p_fid
;

351 
jfldID
 
	gmpo___ges_fid
;

352 
jfldID
 
	gmpo___m_fid
;

353 
jfldID
 
	gmpo___che_h_fid
;

354 
jfldID
 
	gmpo___che_miss_fid
;

355 
jfldID
 
	gmpo___ge__fid
;

356 
jfldID
 
	gmpo___ge__fid
;

357 
jfldID
 
	gmpo___ge_out_fid
;

358 
jfldID
 
	gmpo___ro_evi_fid
;

359 
jfldID
 
	gmpo___rw_evi_fid
;

360 
jfldID
 
	gmpo___ge_ick_fid
;

361 
jfldID
 
	gmpo___ge_n_fid
;

362 
jfldID
 
	gmpo___ge_dty_fid
;

363 
jfldID
 
	gmpo___hash_bucks_fid
;

364 
jfldID
 
	gmpo___hash_ches_fid
;

365 
jfldID
 
	gmpo___hash_lge_fid
;

366 
jfldID
 
	gmpo___hash_examed_fid
;

367 
jfldID
 
	gmpo___hash_nowa_fid
;

368 
jfldID
 
	gmpo___hash_wa_fid
;

369 
jfldID
 
	gmpo___hash_max_nowa_fid
;

370 
jfldID
 
	gmpo___hash_max_wa_fid
;

371 
jfldID
 
	gmpo___gi_nowa_fid
;

372 
jfldID
 
	gmpo___gi_wa_fid
;

373 
jfldID
 
	gmpo___mvcc_oz_fid
;

374 
jfldID
 
	gmpo___mvcc_thawed_fid
;

375 
jfldID
 
	gmpo___mvcc_d_fid
;

376 
jfldID
 
	gmpo___loc_fid
;

377 
jfldID
 
	gmpo___loc_bucks_fid
;

378 
jfldID
 
	gmpo___loc_max_bucks_fid
;

379 
jfldID
 
	gmpo___loc_ges_fid
;

380 
jfldID
 
	gmpo___loc_max_ges_fid
;

381 
jfldID
 
	gmpo___io_wa_fid
;

382 
jfldID
 
	gmpo___gsize_fid
;

383 
jfldID
 
	gmux___mux_ign_fid
;

384 
jfldID
 
	gmux___mux_s_s_fid
;

385 
jfldID
 
	gmux___mux_t_fid
;

386 
jfldID
 
	gmux___mux__fid
;

387 
jfldID
 
	gmux___mux_u_fid
;

388 
jfldID
 
	gmux___mux_u_max_fid
;

389 
jfldID
 
	gmux___gi_wa_fid
;

390 
jfldID
 
	gmux___gi_nowa_fid
;

391 
jfldID
 
	gmux___gsize_fid
;

392 
jfldID
 
	gqam__qs_magic_fid
;

393 
jfldID
 
	gqam__qs_vsi_fid
;

394 
jfldID
 
	gqam__qs_maags_fid
;

395 
jfldID
 
	gqam__qs_nkeys_fid
;

396 
jfldID
 
	gqam__qs_nda_fid
;

397 
jfldID
 
	gqam__qs_gesize_fid
;

398 
jfldID
 
	gqam__qs_exsize_fid
;

399 
jfldID
 
	gqam__qs_ges_fid
;

400 
jfldID
 
	gqam__qs__n_fid
;

401 
jfldID
 
	gqam__qs__d_fid
;

402 
jfldID
 
	gqam__qs_pg_fid
;

403 
jfldID
 
	gqam__qs_f_o_fid
;

404 
jfldID
 
	gqam__qs_cur_o_fid
;

405 
jfldID
 
	gp___log_queued_fid
;

406 
jfldID
 
	gp___tup_come_fid
;

407 
jfldID
 
	gp___us_fid
;

408 
jfldID
 
	gp___xt_l_fid
;

409 
jfldID
 
	gp___wag_l_fid
;

410 
jfldID
 
	gp___xt_pg_fid
;

411 
jfldID
 
	gp___wag_pg_fid
;

412 
jfldID
 
	gp___dupmas_fid
;

413 
jfldID
 
	gp___v_id_fid
;

414 
jfldID
 
	gp___v_iܙy_fid
;

415 
jfldID
 
	gp___bulk_fls_fid
;

416 
jfldID
 
	gp___bulk_ovows_fid
;

417 
jfldID
 
	gp___bulk_cds_fid
;

418 
jfldID
 
	gp___bulk_srs_fid
;

419 
jfldID
 
	gp____ques_fid
;

420 
jfldID
 
	gp____svc_q_fid
;

421 
jfldID
 
	gp____svc_miss_fid
;

422 
jfldID
 
	gp___g_fid
;

423 
jfldID
 
	gp___eg_fid
;

424 
jfldID
 
	gp___log_duid_fid
;

425 
jfldID
 
	gp___log_queued_max_fid
;

426 
jfldID
 
	gp___log_queued_tٮ_fid
;

427 
jfldID
 
	gp___log_cds_fid
;

428 
jfldID
 
	gp___log_queed_fid
;

429 
jfldID
 
	gp___ma_fid
;

430 
jfldID
 
	gp___ma_chges_fid
;

431 
jfldID
 
	gp___msgs_badg_fid
;

432 
jfldID
 
	gp___msgs_osd_fid
;

433 
jfldID
 
	gp___msgs_cov_fid
;

434 
jfldID
 
	gp___msgs_nd_us_fid
;

435 
jfldID
 
	gp___msgs__fid
;

436 
jfldID
 
	gp___wses_fid
;

437 
jfldID
 
	gp___nses_fid
;

438 
jfldID
 
	gp___hrَes_fid
;

439 
jfldID
 
	gp___outded_fid
;

440 
jfldID
 
	gp___pg_duid_fid
;

441 
jfldID
 
	gp___pg_cds_fid
;

442 
jfldID
 
	gp___pg_queed_fid
;

443 
jfldID
 
	gp___txns_d_fid
;

444 
jfldID
 
	gp___tsync_dayed_fid
;

445 
jfldID
 
	gp___eis_fid
;

446 
jfldID
 
	gp___eis_w_fid
;

447 
jfldID
 
	gp___ei_cur_wr_fid
;

448 
jfldID
 
	gp___ei_g_fid
;

449 
jfldID
 
	gp___ei_l_fid
;

450 
jfldID
 
	gp___ei_nses_fid
;

451 
jfldID
 
	gp___ei_nves_fid
;

452 
jfldID
 
	gp___ei_iܙy_fid
;

453 
jfldID
 
	gp___ei_us_fid
;

454 
jfldID
 
	gp___ei_tbak_fid
;

455 
jfldID
 
	gp___ei_ves_fid
;

456 
jfldID
 
	gp___ei_c_fid
;

457 
jfldID
 
	gp___ei_uc_fid
;

458 
jfldID
 
	gpmgr___rm_ed_fid
;

459 
jfldID
 
	gpmgr___msgs_queued_fid
;

460 
jfldID
 
	gpmgr___msgs_drݳd_fid
;

461 
jfldID
 
	gpmgr___ci_dr_fid
;

462 
jfldID
 
	gpmgr___c__fid
;

463 
jfldID
 
	gq___wa_fid
;

464 
jfldID
 
	gq___nowa_fid
;

465 
jfldID
 
	gq___cut_fid
;

466 
jfldID
 
	gq___vue_fid
;

467 
jfldID
 
	gq___ϡ_vue_fid
;

468 
jfldID
 
	gq___m_fid
;

469 
jfldID
 
	gq___max_fid
;

470 
jfldID
 
	gq___che_size_fid
;

471 
jfldID
 
	gq___ags_fid
;

472 
jfldID
 
	gtxn___ees_fid
;

473 
jfldID
 
	gtxn___ϡ_ckp_fid
;

474 
jfldID
 
	gtxn___time_ckp_fid
;

475 
jfldID
 
	gtxn___ϡ_txnid_fid
;

476 
jfldID
 
	gtxn___maxtxns_fid
;

477 
jfldID
 
	gtxn___bts_fid
;

478 
jfldID
 
	gtxn___nbegs_fid
;

479 
jfldID
 
	gtxn___ncomms_fid
;

480 
jfldID
 
	gtxn___ive_fid
;

481 
jfldID
 
	gtxn___nsh_fid
;

482 
jfldID
 
	gtxn___maxive_fid
;

483 
jfldID
 
	gtxn___maxnsh_fid
;

484 
jfldID
 
	gtxn___txǼay_fid
;

485 
jfldID
 
	gtxn___gi_wa_fid
;

486 
jfldID
 
	gtxn___gi_nowa_fid
;

487 
jfldID
 
	gtxn___gsize_fid
;

488 
jfldID
 
	gtxn_aive_txnid_fid
;

489 
jfldID
 
	gtxn_aive_id_fid
;

490 
jfldID
 
	gtxn_aive_pid_fid
;

491 
jfldID
 
	gtxn_aive_l_fid
;

492 
jfldID
 
	gtxn_aive_ad_l_fid
;

493 
jfldID
 
	gtxn_aive_mvcc_f_fid
;

494 
jfldID
 
	gtxn_aive_us_fid
;

495 
jfldID
 
	gtxn_aive_xa_us_fid
;

496 
jfldID
 
	gtxn_aive_xid_fid
;

497 
jfldID
 
	gtxn_aive_me_fid
;

500 
jmhodID
 
	gdbv_cڡru
, 
	gdbt_cڡru
, 
	gdbl_cڡru
;

501 
jmhodID
 
	gdbli_cڡru
, 
	gdbtxn_cڡru
;

502 
jmhodID
 
	gbt__cڡru
, 
	gg_r_msg_mhod
, 
	gh__cڡru
;

503 
jmhodID
 
	glock__cڡru
, 
	glog__cڡru
;

504 
jmhodID
 
	gmpo__cڡru
, 
	gmpo_f_cڡru
;

505 
jmhodID
 
	gmux__cڡru
, 
	gqam__cڡru
;

506 
jmhodID
 
	gp__cڡru
, 
	gpmgr__cڡru
, 
	gq__cڡru
;

507 
jmhodID
 
	gtxn__cڡru
, 
	gtxn_aive_cڡru
;

508 
jmhodID
 
	gdbex_cڡru
, 
	gddex_cڡru
, 
	glockex_cڡru
;

509 
jmhodID
 
	gmemex_cڡru
, 
	gmemex_upde_mhod
;

510 
jmhodID
 
	gpdupmaex_cڡru
, 
	gphdddex_cڡru
;

511 
jmhodID
 
	gphdeiex_cڡru
, 
	gpjoex_cڡru
;

512 
jmhodID
 
	gpho_cڡru
, 
	gexpedex_cڡru
;

513 
jmhodID
 
	gtimeoux_cڡru
, 
	gockoux_cڡru
;

514 
jmhodID
 
	gpuvaex_cڡru
;

515 
jmhodID
 
	gruex_cڡru
, 
	gvsiex_cڡru
;

516 
jmhodID
 
	gffoundex_cڡru
, 
	gggex_cڡru
;

517 
jmhodID
 
	goutofmemr_cڡru
;

518 
jmhodID
 
	glock_cڡru
;

520 
jmhodID
 
	gp_dich_mhod
, 
	gr_mhod
, 
	gv_edback_mhod
;

521 
jmhodID
 
	gmsg_mhod
, 
	gnic_mhod
, 
	gp_t_mhod
;

522 
jmhodID
 
	gnic_evt_nify_mhod
, 
	gp__evt_nify_mhod
;

523 
jmhodID
 
	gp_eed_evt_nify_mhod
;

524 
jmhodID
 
	gp_ma_evt_nify_mhod
;

525 
jmhodID
 
	gp_w_ma_evt_nify_mhod
;

526 
jmhodID
 
	gp_rm_ed_evt_nify_mhod
;

527 
jmhodID
 
	gp_tup_de_evt_nify_mhod
;

528 
jmhodID
 
	gwre_ed_evt_nify_mhod
;

530 
jmhodID
 
	gnd_o_mhod
, 
	gbt_com_mhod
, 
	gbt_efix_mhod
;

531 
jmhodID
 
	gdb_edback_mhod
, 
	gdup_com_mhod
, 
	gh_com_mhod
;

532 
jmhodID
 
	gh_hash_mhod
, 
	gckey__mhod
;

534 
jmhodID
 
	gouutam_wre_mhod
;

537 
jass
 *
	m
;

538 cڡ *
	mme
;

539 } 
	gl_ass
[] = {

540 { &
dbv_ass
, 
DB_PKG
 "internal/DbEnv" },

541 { &
db_ass
, 
DB_PKG
 "internal/Db" },

542 { &
dbc_ass
, 
DB_PKG
 "internal/Dbc" },

543 { &
dbt_ass
, 
DB_PKG
 "DatabaseEntry" },

544 { &
dbl_ass
, 
DB_PKG
 "LogSequenceNumber" },

545 { &
dbli_ass
, 
DB_PKG
 "PreparedTransaction" },

546 { &
dbtxn_ass
, 
DB_PKG
 "internal/DbTxn" },

548 { &
bt__ass
, 
DB_PKG
 "BtreeStats" },

549 { &
com_ass
, 
DB_PKG
 "CompactStats" },

550 { &
h__ass
, 
DB_PKG
 "HashStats" },

551 { &
lock__ass
, 
DB_PKG
 "LockStats" },

552 { &
log__ass
, 
DB_PKG
 "LogStats" },

553 { &
mpo_f_ass
, 
DB_PKG
 "CacheFileStats" },

554 { &
mpo__ass
, 
DB_PKG
 "CacheStats" },

555 { &
mux__ass
, 
DB_PKG
 "MutexStats" },

556 { &
qam__ass
, 
DB_PKG
 "QueueStats" },

557 { &
p__ass
, 
DB_PKG
 "ReplicationStats" },

558 { &
pmgr__ass
, 
DB_PKG
 "ReplicationManagerStats" },

559 { &
q__ass
, 
DB_PKG
 "SequenceStats" },

560 { &
txn__ass
, 
DB_PKG
 "TransactionStats" },

561 { &
txn_aive_ass
, 
DB_PKG
 "TransactionStats$Active" },

563 { &
keynge_ass
, 
DB_PKG
 "KeyRange" },

564 { &
lock_ass
, 
DB_PKG
 "internal/DbLock" },

565 { &
lockq_ass
, 
DB_PKG
 "LockRequest" },

567 { &
dbex_ass
, 
DB_PKG
 "DatabaseException" },

568 { &
ddex_ass
, 
DB_PKG
 "DeadlockException" },

569 { &
lockex_ass
, 
DB_PKG
 "LockNotGrantedException" },

570 { &
memex_ass
, 
DB_PKG
 "MemoryException" },

571 { &
pdupmaex_ass
, 
DB_PKG
 "ReplicationDuplicateMasterException" },

572 { &
phdddex_ass
, 
DB_PKG
 "ReplicationHandleDeadException" },

573 { &
phdeiex_ass
, 
DB_PKG
 "ReplicationHoldElectionException" },

574 { &
pho_ass
, 
DB_PKG
 "ReplicationHostAddress" },

575 { &
pjoex_ass
, 
DB_PKG
 "ReplicationJoinFailureException" },

576 { &
expedex_ass
, 
DB_PKG
 "ReplicationLeaseExpiredException" },

577 { &
timeoux_ass
, 
DB_PKG
 "ReplicationLeaseTimeoutException" },

578 { &
ockoux_ass
, 
DB_PKG
 "ReplicationLockoutException" },

579 { &
puvaex_ass
, 
DB_PKG
 "ReplicationSiteUnavailableException" },

580 { &
ruex_ass
, 
DB_PKG
 "RunRecoveryException" },

581 { &
vsiex_ass
, 
DB_PKG
 "VersionMismatchException" },

582 { &
ffoundex_ass
, "java/io/FileNotFoundException" },

583 { &
ggex_ass
, "java/lang/IllegalArgumentException" },

584 { &
outofmemr_ass
, "java/lang/OutOfMemoryError" },

586 { &
byy_ass
, "[B" },

587 { &
rg_ass
, "java/lang/String" },

588 { &
ouutam_ass
, "java/io/OutputStream" }

592 
jfldID
 *
	mfid
;

593 
jass
 *
	m
;

594 cڡ *
	mme
;

595 cڡ *
	msig
;

596 } 
	gl_flds
[] = {

597 { &
dbc__fid
, &
dbc_ass
, "swigCPtr", "J" },

599 { &
dbl_fe_fid
, &
dbl_ass
, "file", "I" },

600 { &
dbl_offt_fid
, &
dbl_ass
, "offset", "I" },

602 { &
dbt_da_fid
, &
dbt_ass
, "data", "[B" },

603 { &
dbt_da_nio_fid
, &
dbt_ass
, "data_nio", "Ljava/nio/ByteBuffer;" },

604 { &
dbt_size_fid
, &
dbt_ass
, "size", "I" },

605 { &
dbt_un_fid
, &
dbt_ass
, "ulen", "I" },

606 { &
dbt_dn_fid
, &
dbt_ass
, "dlen", "I" },

607 { &
dbt_doff_fid
, &
dbt_ass
, "doff", "I" },

608 { &
dbt_ags_fid
, &
dbt_ass
, "flags", "I" },

609 { &
dbt_offt_fid
, &
dbt_ass
, "offset", "I" },

611 { &
kr_ss_fid
, &
keynge_ass
, "less", "D" },

612 { &
kr_equ_fid
, &
keynge_ass
, "equal", "D" },

613 { &
kr_g_fid
, &
keynge_ass
, "greater", "D" },

615 { &
lock__fid
, &
lock_ass
, "swigCPtr", "J" },

617 { &
lockq__fid
, &
lockq_ass
, "op", "I" },

618 { &
lockq_modeag_fid
, &
lockq_ass
, "modeFlag", "I" },

619 { &
lockq_timeout_fid
, &
lockq_ass
, "timeout", "I" },

620 { &
lockq_obj_fid
, &
lockq_ass
, "obj",

621 "L" 
DB_PKG
 "DatabaseEntry;" },

622 { &
lockq_lock_fid
, &
lockq_ass
, "lock",

623 "L" 
DB_PKG
 "internal/DbLock;" },

626 { &
bt__bt_magic_fid
, &
bt__ass
, "bt_magic", "I" },

627 { &
bt__bt_vsi_fid
, &
bt__ass
, "bt_version", "I" },

628 { &
bt__bt_maags_fid
, &
bt__ass
, "bt_metaflags", "I" },

629 { &
bt__bt_nkeys_fid
, &
bt__ass
, "bt_nkeys", "I" },

630 { &
bt__bt_nda_fid
, &
bt__ass
, "bt_ndata", "I" },

631 { &
bt__bt_get_fid
, &
bt__ass
, "bt_pagecnt", "I" },

632 { &
bt__bt_gesize_fid
, &
bt__ass
, "bt_pagesize", "I" },

633 { &
bt__bt_mkey_fid
, &
bt__ass
, "bt_minkey", "I" },

634 { &
bt__bt__n_fid
, &
bt__ass
, "bt_re_len", "I" },

635 { &
bt__bt__d_fid
, &
bt__ass
, "bt_re_pad", "I" },

636 { &
bt__bt_vs_fid
, &
bt__ass
, "bt_levels", "I" },

637 { &
bt__bt_t_pg_fid
, &
bt__ass
, "bt_int_pg", "I" },

638 { &
bt__bt_af_pg_fid
, &
bt__ass
, "bt_leaf_pg", "I" },

639 { &
bt__bt_dup_pg_fid
, &
bt__ass
, "bt_dup_pg", "I" },

640 { &
bt__bt_ov_pg_fid
, &
bt__ass
, "bt_over_pg", "I" },

641 { &
bt__bt_emy_pg_fid
, &
bt__ass
, "bt_empty_pg", "I" },

642 { &
bt__bt__fid
, &
bt__ass
, "bt_free", "I" },

643 { &
bt__bt_t_pg_fid
, &
bt__ass
, "bt_int_pgfree", "I" },

644 { &
bt__bt_af_pg_fid
, &
bt__ass
, "bt_leaf_pgfree", "I" },

645 { &
bt__bt_dup_pg_fid
, &
bt__ass
, "bt_dup_pgfree", "I" },

646 { &
bt__bt_ov_pg_fid
, &
bt__ass
, "bt_over_pgfree", "I" },

647 { &
com_com_f͔_fid
, &
com_ass
, "compact_fillpercent", "I" },

648 { &
com_com_timeout_fid
, &
com_ass
, "compact_timeout", "I" },

649 { &
com_com_ges_fid
, &
com_ass
, "compact_pages", "I" },

650 { &
com_com_ges__fid
, &
com_ass
, "compact_pages_free", "I" },

651 { &
com_com_ges_exame_fid
, &
com_ass
, "compact_pages_examine", "I" },

652 { &
com_com_vs_fid
, &
com_ass
, "compact_levels", "I" },

653 { &
com_com_ddlock_fid
, &
com_ass
, "compact_deadlock", "I" },

654 { &
com_com_ges_und_fid
, &
com_ass
, "compact_pages_truncated", "I" },

655 { &
com_com_un_fid
, &
com_ass
, "compact_truncate", "I" },

656 { &
h__hash_magic_fid
, &
h__ass
, "hash_magic", "I" },

657 { &
h__hash_vsi_fid
, &
h__ass
, "hash_version", "I" },

658 { &
h__hash_maags_fid
, &
h__ass
, "hash_metaflags", "I" },

659 { &
h__hash_nkeys_fid
, &
h__ass
, "hash_nkeys", "I" },

660 { &
h__hash_nda_fid
, &
h__ass
, "hash_ndata", "I" },

661 { &
h__hash_get_fid
, &
h__ass
, "hash_pagecnt", "I" },

662 { &
h__hash_gesize_fid
, &
h__ass
, "hash_pagesize", "I" },

663 { &
h__hash_f_fid
, &
h__ass
, "hash_ffactor", "I" },

664 { &
h__hash_bucks_fid
, &
h__ass
, "hash_buckets", "I" },

665 { &
h__hash__fid
, &
h__ass
, "hash_free", "I" },

666 { &
h__hash_b_fid
, &
h__ass
, "hash_bfree", "I" },

667 { &
h__hash_bigges_fid
, &
h__ass
, "hash_bigpages", "I" },

668 { &
h__hash_big_b_fid
, &
h__ass
, "hash_big_bfree", "I" },

669 { &
h__hash_ovows_fid
, &
h__ass
, "hash_overflows", "I" },

670 { &
h__hash_ov__fid
, &
h__ass
, "hash_ovfl_free", "I" },

671 { &
h__hash_dup_fid
, &
h__ass
, "hash_dup", "I" },

672 { &
h__hash_dup__fid
, &
h__ass
, "hash_dup_free", "I" },

673 { &
lock___id_fid
, &
lock__ass
, "st_id", "I" },

674 { &
lock___cur_maxid_fid
, &
lock__ass
, "st_cur_maxid", "I" },

675 { &
lock___maxlocks_fid
, &
lock__ass
, "st_maxlocks", "I" },

676 { &
lock___maxlocks_fid
, &
lock__ass
, "st_maxlockers", "I" },

677 { &
lock___maxobjes_fid
, &
lock__ass
, "st_maxobjects", "I" },

678 { &
lock___nmodes_fid
, &
lock__ass
, "st_nmodes", "I" },

679 { &
lock___ocks_fid
, &
lock__ass
, "st_nlockers", "I" },

680 { &
lock___ocks_fid
, &
lock__ass
, "st_nlocks", "I" },

681 { &
lock___maxocks_fid
, &
lock__ass
, "st_maxnlocks", "I" },

682 { &
lock___maxocks_fid
, &
lock__ass
, "st_maxnlockers", "I" },

683 { &
lock___nobjes_fid
, &
lock__ass
, "st_nobjects", "I" },

684 { &
lock___maxnobjes_fid
, &
lock__ass
, "st_maxnobjects", "I" },

685 { &
lock___eques_fid
, &
lock__ass
, "st_nrequests", "I" },

686 { &
lock___Ės_fid
, &
lock__ass
, "st_nreleases", "I" },

687 { &
lock___nupgde_fid
, &
lock__ass
, "st_nupgrade", "I" },

688 { &
lock___ndowngde_fid
, &
lock__ass
, "st_ndowngrade", "I" },

689 { &
lock___lock_wa_fid
, &
lock__ass
, "st_lock_wait", "I" },

690 { &
lock___lock_nowa_fid
, &
lock__ass
, "st_lock_nowait", "I" },

691 { &
lock___nddlocks_fid
, &
lock__ass
, "st_ndeadlocks", "I" },

692 { &
lock___locktimeout_fid
, &
lock__ass
, "st_locktimeout", "I" },

693 { &
lock___ocktimeouts_fid
, &
lock__ass
, "st_nlocktimeouts", "I" },

694 { &
lock___tximeout_fid
, &
lock__ass
, "st_txntimeout", "I" },

695 { &
lock___ximeouts_fid
, &
lock__ass
, "st_ntxntimeouts", "I" },

696 { &
lock___objs_wa_fid
, &
lock__ass
, "st_objs_wait", "I" },

697 { &
lock___objs_nowa_fid
, &
lock__ass
, "st_objs_nowait", "I" },

698 { &
lock___locks_wa_fid
, &
lock__ass
, "st_lockers_wait", "I" },

699 { &
lock___locks_nowa_fid
, &
lock__ass
, "st_lockers_nowait", "I" },

700 { &
lock___locks_wa_fid
, &
lock__ass
, "st_locks_wait", "I" },

701 { &
lock___locks_nowa_fid
, &
lock__ass
, "st_locks_nowait", "I" },

702 { &
lock___gi_wa_fid
, &
lock__ass
, "st_region_wait", "I" },

703 { &
lock___gi_nowa_fid
, &
lock__ass
, "st_region_nowait", "I" },

704 { &
lock___hash_n_fid
, &
lock__ass
, "st_hash_len", "I" },

705 { &
lock___gsize_fid
, &
lock__ass
, "st_regsize", "I" },

706 { &
log___magic_fid
, &
log__ass
, "st_magic", "I" },

707 { &
log___vsi_fid
, &
log__ass
, "st_version", "I" },

708 { &
log___mode_fid
, &
log__ass
, "st_mode", "I" },

709 { &
log___lg_bsize_fid
, &
log__ass
, "st_lg_bsize", "I" },

710 { &
log___lg_size_fid
, &
log__ass
, "st_lg_size", "I" },

711 { &
log___wc_bys_fid
, &
log__ass
, "st_wc_bytes", "I" },

712 { &
log___wc_mbys_fid
, &
log__ass
, "st_wc_mbytes", "I" },

713 { &
log___cd_fid
, &
log__ass
, "st_record", "I" },

714 { &
log___w_bys_fid
, &
log__ass
, "st_w_bytes", "I" },

715 { &
log___w_mbys_fid
, &
log__ass
, "st_w_mbytes", "I" },

716 { &
log___wcou_fid
, &
log__ass
, "st_wcount", "I" },

717 { &
log___wcou_fl_fid
, &
log__ass
, "st_wcount_fill", "I" },

718 { &
log___rcou_fid
, &
log__ass
, "st_rcount", "I" },

719 { &
log___scou_fid
, &
log__ass
, "st_scount", "I" },

720 { &
log___gi_wa_fid
, &
log__ass
, "st_region_wait", "I" },

721 { &
log___gi_nowa_fid
, &
log__ass
, "st_region_nowait", "I" },

722 { &
log___cur_fe_fid
, &
log__ass
, "st_cur_file", "I" },

723 { &
log___cur_offt_fid
, &
log__ass
, "st_cur_offset", "I" },

724 { &
log___disk_fe_fid
, &
log__ass
, "st_disk_file", "I" },

725 { &
log___disk_offt_fid
, &
log__ass
, "st_disk_offset", "I" },

726 { &
log___maxcommrush_fid
, &
log__ass
, "st_maxcommitperflush", "I" },

727 { &
log___mcommrush_fid
, &
log__ass
, "st_mincommitperflush", "I" },

728 { &
log___gsize_fid
, &
log__ass
, "st_regsize", "I" },

729 { &
mpo_f_fe_me_fid
, &
mpo_f_ass
, "file_name", "Ljava/lang/String;" },

730 { &
mpo_f__gesize_fid
, &
mpo_f_ass
, "st_pagesize", "I" },

731 { &
mpo_f__m_fid
, &
mpo_f_ass
, "st_map", "I" },

732 { &
mpo_f__che_h_fid
, &
mpo_f_ass
, "st_cache_hit", "I" },

733 { &
mpo_f__che_miss_fid
, &
mpo_f_ass
, "st_cache_miss", "I" },

734 { &
mpo_f__ge__fid
, &
mpo_f_ass
, "st_page_create", "I" },

735 { &
mpo_f__ge__fid
, &
mpo_f_ass
, "st_page_in", "I" },

736 { &
mpo_f__ge_out_fid
, &
mpo_f_ass
, "st_page_out", "I" },

737 { &
mpo___gbys_fid
, &
mpo__ass
, "st_gbytes", "I" },

738 { &
mpo___bys_fid
, &
mpo__ass
, "st_bytes", "I" },

739 { &
mpo___nche_fid
, &
mpo__ass
, "st_ncache", "I" },

740 { &
mpo___max_nche_fid
, &
mpo__ass
, "st_max_ncache", "I" },

741 { &
mpo___mmsize_fid
, &
mpo__ass
, "st_mmapsize", "I" },

742 { &
mpo___maxݒfd_fid
, &
mpo__ass
, "st_maxopenfd", "I" },

743 { &
mpo___maxwre_fid
, &
mpo__ass
, "st_maxwrite", "I" },

744 { &
mpo___maxwre_p_fid
, &
mpo__ass
, "st_maxwrite_sleep", "I" },

745 { &
mpo___ges_fid
, &
mpo__ass
, "st_pages", "I" },

746 { &
mpo___m_fid
, &
mpo__ass
, "st_map", "I" },

747 { &
mpo___che_h_fid
, &
mpo__ass
, "st_cache_hit", "I" },

748 { &
mpo___che_miss_fid
, &
mpo__ass
, "st_cache_miss", "I" },

749 { &
mpo___ge__fid
, &
mpo__ass
, "st_page_create", "I" },

750 { &
mpo___ge__fid
, &
mpo__ass
, "st_page_in", "I" },

751 { &
mpo___ge_out_fid
, &
mpo__ass
, "st_page_out", "I" },

752 { &
mpo___ro_evi_fid
, &
mpo__ass
, "st_ro_evict", "I" },

753 { &
mpo___rw_evi_fid
, &
mpo__ass
, "st_rw_evict", "I" },

754 { &
mpo___ge_ick_fid
, &
mpo__ass
, "st_page_trickle", "I" },

755 { &
mpo___ge_n_fid
, &
mpo__ass
, "st_page_clean", "I" },

756 { &
mpo___ge_dty_fid
, &
mpo__ass
, "st_page_dirty", "I" },

757 { &
mpo___hash_bucks_fid
, &
mpo__ass
, "st_hash_buckets", "I" },

758 { &
mpo___hash_ches_fid
, &
mpo__ass
, "st_hash_searches", "I" },

759 { &
mpo___hash_lge_fid
, &
mpo__ass
, "st_hash_longest", "I" },

760 { &
mpo___hash_examed_fid
, &
mpo__ass
, "st_hash_examined", "I" },

761 { &
mpo___hash_nowa_fid
, &
mpo__ass
, "st_hash_nowait", "I" },

762 { &
mpo___hash_wa_fid
, &
mpo__ass
, "st_hash_wait", "I" },

763 { &
mpo___hash_max_nowa_fid
, &
mpo__ass
, "st_hash_max_nowait", "I" },

764 { &
mpo___hash_max_wa_fid
, &
mpo__ass
, "st_hash_max_wait", "I" },

765 { &
mpo___gi_nowa_fid
, &
mpo__ass
, "st_region_nowait", "I" },

766 { &
mpo___gi_wa_fid
, &
mpo__ass
, "st_region_wait", "I" },

767 { &
mpo___mvcc_oz_fid
, &
mpo__ass
, "st_mvcc_frozen", "I" },

768 { &
mpo___mvcc_thawed_fid
, &
mpo__ass
, "st_mvcc_thawed", "I" },

769 { &
mpo___mvcc_d_fid
, &
mpo__ass
, "st_mvcc_freed", "I" },

770 { &
mpo___loc_fid
, &
mpo__ass
, "st_alloc", "I" },

771 { &
mpo___loc_bucks_fid
, &
mpo__ass
, "st_alloc_buckets", "I" },

772 { &
mpo___loc_max_bucks_fid
, &
mpo__ass
, "st_alloc_max_buckets", "I" },

773 { &
mpo___loc_ges_fid
, &
mpo__ass
, "st_alloc_pages", "I" },

774 { &
mpo___loc_max_ges_fid
, &
mpo__ass
, "st_alloc_max_pages", "I" },

775 { &
mpo___io_wa_fid
, &
mpo__ass
, "st_io_wait", "I" },

776 { &
mpo___gsize_fid
, &
mpo__ass
, "st_regsize", "I" },

777 { &
mux___mux_ign_fid
, &
mux__ass
, "st_mutex_align", "I" },

778 { &
mux___mux_s_s_fid
, &
mux__ass
, "st_mutex_tas_spins", "I" },

779 { &
mux___mux_t_fid
, &
mux__ass
, "st_mutex_cnt", "I" },

780 { &
mux___mux__fid
, &
mux__ass
, "st_mutex_free", "I" },

781 { &
mux___mux_u_fid
, &
mux__ass
, "st_mutex_inuse", "I" },

782 { &
mux___mux_u_max_fid
, &
mux__ass
, "st_mutex_inuse_max", "I" },

783 { &
mux___gi_wa_fid
, &
mux__ass
, "st_region_wait", "I" },

784 { &
mux___gi_nowa_fid
, &
mux__ass
, "st_region_nowait", "I" },

785 { &
mux___gsize_fid
, &
mux__ass
, "st_regsize", "I" },

786 { &
qam__qs_magic_fid
, &
qam__ass
, "qs_magic", "I" },

787 { &
qam__qs_vsi_fid
, &
qam__ass
, "qs_version", "I" },

788 { &
qam__qs_maags_fid
, &
qam__ass
, "qs_metaflags", "I" },

789 { &
qam__qs_nkeys_fid
, &
qam__ass
, "qs_nkeys", "I" },

790 { &
qam__qs_nda_fid
, &
qam__ass
, "qs_ndata", "I" },

791 { &
qam__qs_gesize_fid
, &
qam__ass
, "qs_pagesize", "I" },

792 { &
qam__qs_exsize_fid
, &
qam__ass
, "qs_extentsize", "I" },

793 { &
qam__qs_ges_fid
, &
qam__ass
, "qs_pages", "I" },

794 { &
qam__qs__n_fid
, &
qam__ass
, "qs_re_len", "I" },

795 { &
qam__qs__d_fid
, &
qam__ass
, "qs_re_pad", "I" },

796 { &
qam__qs_pg_fid
, &
qam__ass
, "qs_pgfree", "I" },

797 { &
qam__qs_f_o_fid
, &
qam__ass
, "qs_first_recno", "I" },

798 { &
qam__qs_cur_o_fid
, &
qam__ass
, "qs_cur_recno", "I" },

799 { &
p___log_queued_fid
, &
p__ass
, "st_log_queued", "I" },

800 { &
p___tup_come_fid
, &
p__ass
, "st_startup_complete", "I" },

801 { &
p___us_fid
, &
p__ass
, "st_status", "I" },

802 { &
p___xt_l_fid
, &
p__ass
, "_xt_l", "L" 
DB_PKG
 "LogSequenceNumber;" },

803 { &
p___wag_l_fid
, &
p__ass
, "_wag_l", "L" 
DB_PKG
 "LogSequenceNumber;" },

804 { &
p___xt_pg_fid
, &
p__ass
, "st_next_pg", "I" },

805 { &
p___wag_pg_fid
, &
p__ass
, "st_waiting_pg", "I" },

806 { &
p___dupmas_fid
, &
p__ass
, "st_dupmasters", "I" },

807 { &
p___v_id_fid
, &
p__ass
, "st_env_id", "I" },

808 { &
p___v_iܙy_fid
, &
p__ass
, "st_env_priority", "I" },

809 { &
p___bulk_fls_fid
, &
p__ass
, "st_bulk_fills", "I" },

810 { &
p___bulk_ovows_fid
, &
p__ass
, "st_bulk_overflows", "I" },

811 { &
p___bulk_cds_fid
, &
p__ass
, "st_bulk_records", "I" },

812 { &
p___bulk_srs_fid
, &
p__ass
, "st_bulk_transfers", "I" },

813 { &
p____ques_fid
, &
p__ass
, "st_client_rerequests", "I" },

814 { &
p____svc_q_fid
, &
p__ass
, "st_client_svc_req", "I" },

815 { &
p____svc_miss_fid
, &
p__ass
, "st_client_svc_miss", "I" },

816 { &
p___g_fid
, &
p__ass
, "st_gen", "I" },

817 { &
p___eg_fid
, &
p__ass
, "st_egen", "I" },

818 { &
p___log_duid_fid
, &
p__ass
, "st_log_duplicated", "I" },

819 { &
p___log_queued_max_fid
, &
p__ass
, "st_log_queued_max", "I" },

820 { &
p___log_queued_tٮ_fid
, &
p__ass
, "st_log_queued_total", "I" },

821 { &
p___log_cds_fid
, &
p__ass
, "st_log_records", "I" },

822 { &
p___log_queed_fid
, &
p__ass
, "st_log_requested", "I" },

823 { &
p___ma_fid
, &
p__ass
, "st_master", "I" },

824 { &
p___ma_chges_fid
, &
p__ass
, "st_master_changes", "I" },

825 { &
p___msgs_badg_fid
, &
p__ass
, "st_msgs_badgen", "I" },

826 { &
p___msgs_osd_fid
, &
p__ass
, "st_msgs_processed", "I" },

827 { &
p___msgs_cov_fid
, &
p__ass
, "st_msgs_recover", "I" },

828 { &
p___msgs_nd_us_fid
, &
p__ass
, "st_msgs_send_failures", "I" },

829 { &
p___msgs__fid
, &
p__ass
, "st_msgs_sent", "I" },

830 { &
p___wses_fid
, &
p__ass
, "st_newsites", "I" },

831 { &
p___nses_fid
, &
p__ass
, "st_nsites", "I" },

832 { &
p___hrَes_fid
, &
p__ass
, "st_nthrottles", "I" },

833 { &
p___outded_fid
, &
p__ass
, "st_outdated", "I" },

834 { &
p___pg_duid_fid
, &
p__ass
, "st_pg_duplicated", "I" },

835 { &
p___pg_cds_fid
, &
p__ass
, "st_pg_records", "I" },

836 { &
p___pg_queed_fid
, &
p__ass
, "st_pg_requested", "I" },

837 { &
p___txns_d_fid
, &
p__ass
, "st_txns_applied", "I" },

838 { &
p___tsync_dayed_fid
, &
p__ass
, "st_startsync_delayed", "I" },

839 { &
p___eis_fid
, &
p__ass
, "st_elections", "I" },

840 { &
p___eis_w_fid
, &
p__ass
, "st_elections_won", "I" },

841 { &
p___ei_cur_wr_fid
, &
p__ass
, "st_election_cur_winner", "I" },

842 { &
p___ei_g_fid
, &
p__ass
, "st_election_gen", "I" },

843 { &
p___ei_l_fid
, &
p__ass
, "_ei_l", "L" 
DB_PKG
 "LogSequenceNumber;" },

844 { &
p___ei_nses_fid
, &
p__ass
, "st_election_nsites", "I" },

845 { &
p___ei_nves_fid
, &
p__ass
, "st_election_nvotes", "I" },

846 { &
p___ei_iܙy_fid
, &
p__ass
, "st_election_priority", "I" },

847 { &
p___ei_us_fid
, &
p__ass
, "st_election_status", "I" },

848 { &
p___ei_tbak_fid
, &
p__ass
, "st_election_tiebreaker", "I" },

849 { &
p___ei_ves_fid
, &
p__ass
, "st_election_votes", "I" },

850 { &
p___ei_c_fid
, &
p__ass
, "st_election_sec", "I" },

851 { &
p___ei_uc_fid
, &
p__ass
, "st_election_usec", "I" },

852 { &
pmgr___rm_ed_fid
, &
pmgr__ass
, "st_perm_failed", "I" },

853 { &
pmgr___msgs_queued_fid
, &
pmgr__ass
, "st_msgs_queued", "I" },

854 { &
pmgr___msgs_drݳd_fid
, &
pmgr__ass
, "st_msgs_dropped", "I" },

855 { &
pmgr___ci_dr_fid
, &
pmgr__ass
, "st_connection_drop", "I" },

856 { &
pmgr___c__fid
, &
pmgr__ass
, "st_connect_fail", "I" },

857 { &
q___wa_fid
, &
q__ass
, "st_wait", "I" },

858 { &
q___nowa_fid
, &
q__ass
, "st_nowait", "I" },

859 { &
q___cut_fid
, &
q__ass
, "st_current", "J" },

860 { &
q___vue_fid
, &
q__ass
, "st_value", "J" },

861 { &
q___ϡ_vue_fid
, &
q__ass
, "st_last_value", "J" },

862 { &
q___m_fid
, &
q__ass
, "st_min", "J" },

863 { &
q___max_fid
, &
q__ass
, "st_max", "J" },

864 { &
q___che_size_fid
, &
q__ass
, "st_cache_size", "I" },

865 { &
q___ags_fid
, &
q__ass
, "st_flags", "I" },

866 { &
txn___ees_fid
, &
txn__ass
, "st_nrestores", "I" },

867 { &
txn___ϡ_ckp_fid
, &
txn__ass
, "_ϡ_ckp", "L" 
DB_PKG
 "LogSequenceNumber;" },

868 { &
txn___time_ckp_fid
, &
txn__ass
, "st_time_ckp", "J" },

869 { &
txn___ϡ_txnid_fid
, &
txn__ass
, "st_last_txnid", "I" },

870 { &
txn___maxtxns_fid
, &
txn__ass
, "st_maxtxns", "I" },

871 { &
txn___bts_fid
, &
txn__ass
, "st_naborts", "I" },

872 { &
txn___nbegs_fid
, &
txn__ass
, "st_nbegins", "I" },

873 { &
txn___ncomms_fid
, &
txn__ass
, "st_ncommits", "I" },

874 { &
txn___ive_fid
, &
txn__ass
, "st_nactive", "I" },

875 { &
txn___nsh_fid
, &
txn__ass
, "st_nsnapshot", "I" },

876 { &
txn___maxive_fid
, &
txn__ass
, "st_maxnactive", "I" },

877 { &
txn___maxnsh_fid
, &
txn__ass
, "st_maxnsnapshot", "I" },

878 { &
txn___txǼay_fid
, &
txn__ass
, "_txǼay", "[L" 
DB_PKG
 "TransactionStats$Active;" },

879 { &
txn___gi_wa_fid
, &
txn__ass
, "st_region_wait", "I" },

880 { &
txn___gi_nowa_fid
, &
txn__ass
, "st_region_nowait", "I" },

881 { &
txn___gsize_fid
, &
txn__ass
, "st_regsize", "I" },

882 { &
txn_aive_txnid_fid
, &
txn_aive_ass
, "txnid", "I" },

883 { &
txn_aive_id_fid
, &
txn_aive_ass
, "parentid", "I" },

884 { &
txn_aive_pid_fid
, &
txn_aive_ass
, "pid", "I" },

885 { &
txn_aive_l_fid
, &
txn_aive_ass
, "l", "L" 
DB_PKG
 "LogSequenceNumber;" },

886 { &
txn_aive_ad_l_fid
, &
txn_aive_ass
, "ad_l", "L" 
DB_PKG
 "LogSequenceNumber;" },

887 { &
txn_aive_mvcc_f_fid
, &
txn_aive_ass
, "mvcc_ref", "I" },

888 { &
txn_aive_us_fid
, &
txn_aive_ass
, "status", "I" },

889 { &
txn_aive_xa_us_fid
, &
txn_aive_ass
, "xa_status", "I" },

890 { &
txn_aive_xid_fid
, &
txn_aive_ass
, "xid", "[B" },

891 { &
txn_aive_me_fid
, &
txn_aive_ass
, "name", "Ljava/lang/String;" },

894 { &
pho_pt_fid
, &
pho_ass
, "port", "I" },

895 { &
pho_ho_fid
, &
pho_ass
, "host", "Ljava/lang/String;" },

896 { &
pho_eid_fid
, &
pho_ass
, "eid", "I" },

897 { &
pho_us_fid
, &
pho_ass
, "status", "I" }

901 
jmhodID
 *
	mmid
;

902 
jass
 *
	m
;

903 cڡ *
	mme
;

904 cڡ *
	msig
;

905 } 
	gl_mhods
[] = {

906 { &
dbv_cڡru
, &
dbv_ass
, "<init>", "(JZ)V" },

907 { &
dbt_cڡru
, &
dbt_ass
, "<init>", "()V" },

908 { &
dbl_cڡru
, &
dbl_ass
, "<init>", "(II)V" },

909 { &
dbli_cڡru
, &
dbli_ass
, "<init>",

910 "(L" 
DB_PKG
 "internal/DbTxn;[B)V" },

911 { &
dbtxn_cڡru
, &
dbtxn_ass
, "<init>", "(JZ)V" },

913 { &
bt__cڡru
, &
bt__ass
, "<init>", "()V" },

914 { &
g_r_msg_mhod
, &
dbv_ass
, "get_err_msg",

916 { &
h__cڡru
, &
h__ass
, "<init>", "()V" },

917 { &
lock__cڡru
, &
lock__ass
, "<init>", "()V" },

918 { &
log__cڡru
, &
log__ass
, "<init>", "()V" },

919 { &
mpo__cڡru
, &
mpo__ass
, "<init>", "()V" },

920 { &
mpo_f_cڡru
, &
mpo_f_ass
, "<init>", "()V" },

921 { &
mux__cڡru
, &
mux__ass
, "<init>", "()V" },

922 { &
qam__cڡru
, &
qam__ass
, "<init>", "()V" },

923 { &
p__cڡru
, &
p__ass
, "<init>", "()V" },

924 { &
pmgr__cڡru
, &
pmgr__ass
, "<init>", "()V" },

925 { &
q__cڡru
, &
q__ass
, "<init>", "()V" },

926 { &
txn__cڡru
, &
txn__ass
, "<init>", "()V" },

927 { &
txn_aive_cڡru
, &
txn_aive_ass
, "<init>", "()V" },

928 { &
pho_cڡru
, &
pho_ass
, "<init>", "()V" },

930 { &
dbex_cڡru
, &
dbex_ass
, "<init>",

931 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

932 { &
ddex_cڡru
, &
ddex_ass
, "<init>",

933 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

934 { &
lockex_cڡru
, &
lockex_ass
, "<init>",

935 "(Ljava/ng/Sg;IIL" 
DB_PKG
 "DatabaseEntry;L"

936 
DB_PKG
 "internal/DbLock;IL" DB_PKG "internal/DbEnv;)V" },

937 { &
memex_cڡru
, &
memex_ass
, "<init>",

938 "(Ljava/ng/Sg;L" 
DB_PKG
 "DatabaseEntry;IL"

939 
DB_PKG
 "internal/DbEnv;)V" },

940 { &
memex_upde_mhod
, &
memex_ass
, "updateDatabaseEntry",

941 "(L" 
DB_PKG
 "DatabaseEntry;)V" },

942 { &
pdupmaex_cڡru
, &
pdupmaex_ass
, "<init>",

943 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

944 { &
phdddex_cڡru
, &
phdddex_ass
, "<init>",

945 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

946 { &
phdeiex_cڡru
, &
phdeiex_ass
, "<init>",

947 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

948 { &
pjoex_cڡru
, &
pjoex_ass
, "<init>",

949 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

950 { &
expedex_cڡru
, &
expedex_ass
, "<init>",

951 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

952 { &
timeoux_cڡru
, &
timeoux_ass
, "<init>",

953 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

954 { &
ockoux_cڡru
, &
ockoux_ass
, "<init>",

955 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

956 { &
puvaex_cڡru
, &
puvaex_ass
, "<init>",

957 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

958 { &
ruex_cڡru
, &
ruex_ass
, "<init>",

959 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

960 { &
vsiex_cڡru
, &
vsiex_ass
, "<init>",

961 "(Ljava/ng/Sg;IL" 
DB_PKG
 "internal/DbEnv;)V" },

962 { &
ffoundex_cڡru
, &
ffoundex_ass
, "<init>",

964 { &
ggex_cڡru
, &
ggex_ass
, "<init>",

966 { &
outofmemr_cڡru
, &
outofmemr_ass
, "<init>",

969 { &
lock_cڡru
, &
lock_ass
, "<init>", "(JZ)V" },

971 { &
p_dich_mhod
, &
dbv_ass
, "handle_app_dispatch",

972 "(L" 
DB_PKG
 "DatabaseEntry;L" DB_PKG "LogSequenceNumber;I)I" },

973 { &
nic_evt_nify_mhod
, &
dbv_ass
, "handle_panic_event_notify",

975 { &
p__evt_nify_mhod
, &
dbv_ass
,

977 { &
p_eed_evt_nify_mhod
, &
dbv_ass
,

979 { &
p_ma_evt_nify_mhod
, &
dbv_ass
,

981 { &
p_w_ma_evt_nify_mhod
, &
dbv_ass
,

983 { &
p_rm_ed_evt_nify_mhod
, &
dbv_ass
,

985 { &
p_tup_de_evt_nify_mhod
, &
dbv_ass
,

987 { &
wre_ed_evt_nify_mhod
, &
dbv_ass
,

989 { &
v_edback_mhod
, &
dbv_ass
, "handle_env_feedback", "(II)V" },

990 { &
r_mhod
, &
dbv_ass
, "handle_error",

992 { &
msg_mhod
, &
dbv_ass
, "handle_message",

994 { &
nic_mhod
, &
dbv_ass
, "handle_panic",

995 "(L" 
DB_PKG
 "DatabaseException;)V" },

996 { &
p_t_mhod
, &
dbv_ass
, "handle_rep_transport",

997 "(L" 
DB_PKG
 "DatabaseEntry;L" DB_PKG "DatabaseEntry;L"

998 
DB_PKG
 "LogSequenceNumber;II)I" },

1000 { &
nd_o_mhod
, &
db_ass
, "handle_append_recno",

1001 "(L" 
DB_PKG
 "DatabaseEntry;I)V" },

1002 { &
bt_com_mhod
, &
db_ass
, "handle_bt_compare",

1004 { &
bt_efix_mhod
, &
db_ass
, "handle_bt_prefix",

1005 "(L" 
DB_PKG
 "DatabaseEntry;L" DB_PKG "DatabaseEntry;)I" },

1006 { &
db_edback_mhod
, &
db_ass
, "handle_db_feedback", "(II)V" },

1007 { &
dup_com_mhod
, &
db_ass
, "handle_dup_compare",

1009 { &
h_com_mhod
, &
db_ass
, "handle_h_compare",

1011 { &
h_hash_mhod
, &
db_ass
, "handle_h_hash", "([BI)I" },

1012 { &
ckey__mhod
, &
db_ass
, "handle_seckey_create",

1013 "(L" 
DB_PKG
 "DatabaseEntry;L" DB_PKG "DatabaseEntry;)[L"

1014 
DB_PKG
 "DatabaseEntry;" },

1016 { &
ouutam_wre_mhod
, &
ouutam_ass
, "write", "([BII)V" }

1019 
	#NELEM
(
x
( (x/  (x[0]))

	)

1021 
JNIEXPORT
 
JNICALL
 
	$Java_com_pyt_db__db_1javaJNI_lize
(

1022 
JNIEnv
 *
jv
, 
jass
 
azz
)

1024 
jass
 

;

1025 
i
, 
j
;

1027 
	`COMPQUIET
(
azz
, 
NULL
);

1029 i((*
jv
)->
	`GJavaVM
(jv, &
javavm
) != 0) {

1030 
	`__db_rx
(
NULL
, "Cannot get Java VM");

1034 
i
 = 0; i < 
	`NELEM
(
l_ass
); i++) {

1035 

 = (*
jv
)->
	`FdCss
(jv, 
l_ass
[
i
].
me
);

1036 i(

 =
NULL
) {

1037 
	`rtf
(
dr
,

1039 
l_ass
[
i
].
me
);

1047 *
l_ass
[
i
].

 = (
jass
)(*
jv
)->
	`NewGlobRef
(jenv, cl);

1049 i(*
l_ass
[
i
].

 =
NULL
) {

1050 
	`rtf
(
dr
,

1052 
l_ass
[
i
].
me
);

1058 
i
 = 0; i < 
	`NELEM
(
l_flds
); i++) {

1059 *
l_flds
[
i
].
fid
 = (*
jv
)->
	`GFldID
(jenv,

1060 *
l_flds
[
i
].

,_flds[i].
me
,_flds[i].
sig
);

1062 i(*
l_flds
[
i
].
fid
 =
NULL
) {

1063 
	`rtf
(
dr
,

1065 
l_flds
[
i
].
me
,_flds[i].
sig
);

1071 
i
 = 0; i < 
	`NELEM
(
l_mhods
); i++) {

1072 *
l_mhods
[
i
].
mid
 = (*
jv
)->
	`GMhodID
(jenv,

1073 *
l_mhods
[
i
].

,_mhods[i].
me
,

1074 
l_mhods
[
i
].
sig
);

1076 i(*
l_mhods
[
i
].
mid
 =
NULL
) {

1077 
j
 = 0; j < 
	`NELEM
(
l_ass
); j++)

1078 i(
l_mhods
[
i
].

 =
l_ass
[
j
].cl)

1080 
	`rtf
(
dr
,

1082 
l_ass
[
j
].
me
, 
l_mhods
[
i
].name,

1083 
l_mhods
[
i
].
sig
);

1087 
	}
}

1089 
JNIEnv
 *
	$__dbj_g_jnnv
()

1097 #ifde
JNI_VERSION_1_2


1098 *
jv
 = 0;

1100 
JNIEnv
 *
jv
 = 0;

1107 i((*
javavm
)->
	`AachCutThad
(javavm, &
jv
, 0) != 0)

1110  ((
JNIEnv
 *)
jv
);

1111 
	}
}

1113 
jobje
 
	$__dbj_wp_DB_LSN
(
JNIEnv
 *
jv
, 
DB_LSN
 *
l
)

1115  (*
jv
)->
	`NewObje
(jv, 
dbl_ass
, 
dbl_cڡru
,

1116 
l
->
fe
,->
offt
);

1117 
	}
}

1124 
	#JDBENV
 (
g1
 ? (
jobje
)
	`DB_ENV_INTERNAL
rg1: 
NULL
)

	)

1125 
	#DB2JDBENV
 ((
jobje
)
	`DB_ENV_INTERNAL
(
g1
->
dbv
))

	)

1126 
	#DBC2JDBENV
 ((
jobje
)
	`DB_ENV_INTERNAL
(
g1
->
dbp
->
dbv
))

	)

1127 
	#TXN2JDBENV
 ((
jobje
)
	`DB_ENV_INTERNAL
(
g1
->
mg
->
dbv
))

	)

1130 
jthrowab
 
	$__dbj_g_ex
(
JNIEnv
 *
jv
,

1131 
r
, cڡ *
msg
, 
jobje
 
obj
, jobje 
jdbv
) {

1132 
jobje
 
jmsg
;

1134 i(
msg
 =
NULL
)

1135 
msg
 = 
	`db_
(
r
);

1137 
jmsg
 = (*
jv
)->
	`NewSgUTF
(jv, 
msg
);

1140 i(
jdbv
 !
NULL
) {

1141 
jmsg
 = (
jrg
(*
jv
)->
	`ClNvtuObjeMhod
(jenv,

1142 
jdbv
, 
dbv_ass
, 
g_r_msg_mhod
, 
jmsg
);

1145 
r
) {

1146 
EINVAL
:

1147  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1148 
ggex_ass
, 
ggex_cڡru
, 
jmsg
);

1150 
ENOENT
:

1151  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1152 
ffoundex_ass
, 
ffoundex_cڡru
, 
jmsg
);

1154 
ENOMEM
:

1155  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1156 
outofmemr_ass
, 
outofmemr_cڡru
, 
jmsg
);

1158 
DB_BUFFER_SMALL
:

1159  (
jthrowab
)(*
jv
)->
	`NewObje
(jv, 
memex_ass
,

1160 
memex_cڡru
, 
jmsg
, 
obj
, 
r
, 
jdbv
);

1162 
DB_REP_DUPMASTER
:

1163  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1164 
pdupmaex_ass
, 
pdupmaex_cڡru
,

1165 
jmsg
, 
r
, 
jdbv
);

1167 
DB_REP_HANDLE_DEAD
:

1168  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1169 
phdddex_ass
, 
phdddex_cڡru
,

1170 
jmsg
, 
r
, 
jdbv
);

1172 
DB_REP_HOLDELECTION
:

1173  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1174 
phdeiex_ass
, 
phdeiex_cڡru
,

1175 
jmsg
, 
r
, 
jdbv
);

1177 
DB_REP_JOIN_FAILURE
:

1178  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1179 
pjoex_ass
, 
pjoex_cڡru
,

1180 
jmsg
, 
r
, 
jdbv
);

1182 
DB_REP_LEASE_EXPIRED
:

1183  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1184 
expedex_ass
, 
expedex_cڡru
,

1185 
jmsg
, 
r
, 
jdbv
);

1187 
DB_REP_LEASE_TIMEOUT
:

1188  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1189 
timeoux_ass
, 
timeoux_cڡru
,

1190 
jmsg
, 
r
, 
jdbv
);

1192 
DB_REP_LOCKOUT
:

1193  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1194 
ockoux_ass
, 
ockoux_cڡru
,

1195 
jmsg
, 
r
, 
jdbv
);

1197 
DB_REP_UNAVAIL
:

1198  (
jthrowab
)(*
jv
)->
	`NewObje
(jenv,

1199 
puvaex_ass
, 
puvaex_cڡru
,

1200 
jmsg
, 
r
, 
jdbv
);

1202 
DB_RUNRECOVERY
:

1203  (
jthrowab
)(*
jv
)->
	`NewObje
(jv, 
ruex_ass
,

1204 
ruex_cڡru
, 
jmsg
, 
r
, 
jdbv
);

1206 
DB_LOCK_DEADLOCK
:

1207  (
jthrowab
)(*
jv
)->
	`NewObje
(jv, 
ddex_ass
,

1208 
ddex_cڡru
, 
jmsg
, 
r
, 
jdbv
);

1210 
DB_LOCK_NOTGRANTED
:

1211  (
jthrowab
)(*
jv
)->
	`NewObje
(jv, 
lockex_ass
,

1212 
lockex_cڡru
, 
jmsg
, 
r
, 0, 
NULL
, NULL, 0, 
jdbv
);

1214 
DB_VERSION_MISMATCH
:

1215  (
jthrowab
)(*
jv
)->
	`NewObje
(jv, 
vsiex_ass
,

1216 
vsiex_cڡru
, 
jmsg
, 
r
, 
jdbv
);

1219  (
jthrowab
)(*
jv
)->
	`NewObje
(jv, 
dbex_ass
,

1220 
dbex_cڡru
, 
jmsg
, 
r
, 
jdbv
);

1222 
	}
}

1224 
	$__dbj_throw
(
JNIEnv
 *
jv
,

1225 
r
, cڡ *
msg
, 
jobje
 
obj
, jobje 
jdbv
)

1227 
jthrowab
 
t
;

1230 i((*
jv
)->
	`ExiOccued
(jv=
NULL
) {

1231 
t
 = 
	`__dbj_g_ex
(
jv
, 
r
, 
msg
, 
obj
, 
jdbv
);

1232 i(
t
 =
NULL
) {

1240 i(
msg
 =
NULL
)

1241 
msg
 = 
	`db_
(
r
);

1243 
	`__db_rx
(
NULL
, "Couldn't createxception for: '%s'",

1244 
msg
);

1246 (*
jv
)->
	`Throw
(jv, 
t
);

1249  (
r
);

1250 
	}
}

1253 
	s__dbt_locked
 {

1254 
JNIEnv
 *
	mjv
;

1255 
jobje
 
	mjdbt
;

1256 
DBT
 
	mdbt
;

1257 
jobje
 
	mjda_nio
;

1258 
jbyAay
 
	mjr
;

1259 
jt
 
	mofft
;

1260 
	mu
;

1261 
u_t32_t
 
	mig_size
;

1262 
jsize
 
	my_n
;

1263 } 
	tDBT_LOCKED
;

1265 
	$__dbj_dbt_memcy
(
DBT
 *
dbt
, 
u_t32_t
 
offt
, *
buf
, u_t32_
size
, u_t32_
ags
) {

1266 
DBT_LOCKED
 *
ldbt
 = 
dbt
->
p_da
;

1267 
JNIEnv
 *
jv
 = 
ldbt
->jenv;

1269 i(
size
 == 0)

1271 i(!
	`F_ISSET
(
dbt
, 
DB_DBT_USERCOPY
)) {

1276 
ags
) {

1277 
DB_USERCOPY_GETDATA
:

1278 
	`memy
(
buf
, (
u_t8_t
 *)
dbt
->
da
 + 
offt
, 
size
);

1280 
DB_USERCOPY_SETDATA
:

1281 
	`memy
((
u_t8_t
 *)
dbt
->
da
 + 
offt
, 
buf
, 
size
);

1284  (
EINVAL
);

1288 
ags
) {

1289 
DB_USERCOPY_GETDATA
:

1290 (*
jv
)->
	`GByAayRegi
(jv, 
ldbt
->
jr
,dbt->
offt
 +

1291 
offt
, 
size
, 
buf
);

1293 
DB_USERCOPY_SETDATA
:

1298 i(
offt
 =0 && (!
ldbt
->
u
 ||

1299 (
jsize
)(
ldbt
->
offt
 + 
dbt
->
size
>dbt->
y_n
)) {

1300 i(
ldbt
->
jr
 !
NULL
)

1301 (*
jv
)->
	`DeLolRef
(jv, 
ldbt
->
jr
);

1302 
ldbt
->
jr
 = (*
jv
)->
	`NewByAay
(jv, (
jsize
)
dbt
->
size
);

1303 i(
ldbt
->
jr
 =
NULL
)

1304  (
ENOMEM
);

1305 (*
jv
)->
	`SObjeFld
(jv, 
ldbt
->
jdbt
, 
dbt_da_fid
,dbt->
jr
);

1307 
ldbt
->
offt
 = 0;

1309 (*
jv
)->
	`SByAayRegi
(jv, 
ldbt
->
jr
,dbt->
offt
 +

1310 
offt
, 
size
, 
buf
);

1313  (
EINVAL
);

1315  ((*
jv
)->
	`ExiOccued
(jv? 
EINVAL
 : 0);

1316 
	}
}

1318 
	$__dbj_dbt_cyout
(

1319 
JNIEnv
 *
jv
, cڡ 
DBT
 *
dbt
, 
jbyAay
 *
jr
, 
jobje
 
jdbt
)

1321 
jbyAay
 
wr
 = (*
jv
)->
	`NewByAay
(jv, (
jsize
)
dbt
->
size
);

1322 i(
wr
 =
NULL
)

1324 (*
jv
)->
	`SByAayRegi
(jv, 
wr
, 0, (
jsize
)
dbt
->
size
,

1325 (
jby
 *)
dbt
->
da
);

1326 (*
jv
)->
	`SObjeFld
(jv, 
jdbt
, 
dbt_da_fid
, 
wr
);

1327 (*
jv
)->
	`SIFld
(jv, 
jdbt
, 
dbt_offt_fid
, 0);

1328 (*
jv
)->
	`SIFld
(jv, 
jdbt
, 
dbt_size_fid
, (
jt
)
dbt
->
size
);

1329 i(
jr
 !
NULL
)

1330 *
jr
 = 
wr
;

1332 (*
jv
)->
	`DeLolRef
(jv, 
wr
);

1333 
	}
}

1335 
	$__dbj_dbt_cy
(

1336 
JNIEnv
 *
jv
, 
DBT_LOCKED
 *
ldbt
, 
DBT
 **
db
, 
jobje
 
jdbt
, 
low_nu
)

1338 
DBT
 *
dbt
;

1339 
jlg
 
cy
;

1341 
	`memt
(
ldbt
, 0,  (*ldbt));

1342 
ldbt
->
jv
 = jenv;

1343 
ldbt
->
jdbt
 = jdbt;

1345 i(
jdbt
 =
NULL
) {

1346 i(
low_nu
) {

1347 *
db
 = 
NULL
;

1350  (
	`__dbj_throw
(
jv
, 
EINVAL
,

1351 "DabaEry mu bnu", 
NULL
, NULL));

1355 
dbt
 = &
ldbt
->dbt;

1356 i(
db
 !
NULL
)

1357 *
db
 = 
dbt
;

1359 
ldbt
->
jda_nio
 = (*
jv
)->
	`GObjeFld
(jv, 
jdbt
, 
dbt_da_nio_fid
);

1360 i(
ldbt
->
jda_nio
 !
NULL
)

1361 
	`F_SET
(
dbt
, 
DB_DBT_USERMEM
);

1363 
ldbt
->
jr
 = (
jbyAay
)(*
jv
)->
	`GObjeFld
(jv, 
jdbt
, 
dbt_da_fid
);

1364 
ldbt
->
offt
 = (*
jv
)->
	`GIFld
(jv, 
jdbt
, 
dbt_offt_fid
);

1365 
dbt
->
size
 = (*
jv
)->
	`GIFld
(jv, 
jdbt
, 
dbt_size_fid
);

1366 
ldbt
->
ig_size
 = 
dbt
->
size
;

1367 
dbt
->
ags
 = (*
jv
)->
	`GIFld
(jv, 
jdbt
, 
dbt_ags_fid
);

1369 i(
	`F_ISSET
(
dbt
, 
DB_DBT_USERMEM
))

1370 
dbt
->
un
 = (*
jv
)->
	`GIFld
(jv, 
jdbt
, 
dbt_un_fid
);

1371 i(
	`F_ISSET
(
dbt
, 
DB_DBT_PARTIAL
)) {

1372 
dbt
->
dn
 = (*
jv
)->
	`GIFld
(jv, 
jdbt
, 
dbt_dn_fid
);

1373 
dbt
->
doff
 = (*
jv
)->
	`GIFld
(jv, 
jdbt
, 
dbt_doff_fid
);

1375 i((
jt
)
dbt
->
doff
 < 0)

1376  (
	`__dbj_throw
(
jv
, 
EINVAL
, "DatabaseEntry doff illegal",

1377 
NULL
, NULL));

1384 i(!
	`F_ISSET
(
dbt
, 
DB_DBT_USERMEM
)) {

1385 
ldbt
->
u
 = !
	`F_ISSET
(
dbt
, 
DB_DBT_MALLOC
);

1386 
	`F_CLR
(
dbt
, 
DB_DBT_MALLOC
 | 
DB_DBT_REALLOC
);

1390 i(
ldbt
->
jda_nio
 !
NULL
) {

1391 
cy
 = (*
jv
)->
	`GDeBufrCacy
(jenv,

1392 
ldbt
->
jda_nio
);

1393 i(
cy
 > (
jlg
)
UINT32_MAX
)

1394  (
	`__dbj_throw
(
jv
, 
EINVAL
,

1396 
NULL
, NULL));

1397 
ldbt
->
y_n
 = (
u_t32_t
)
cy
;

1398 } i(
ldbt
->
jr
 =
NULL
) {

1407 
dbt
->
da
 = 
NULL
;

1408 
ldbt
->
y_n
 =dbt->
offt
 = 
dbt
->
size
 = dbt->
un
 = 0;

1410 
ldbt
->
y_n
 = (*
jv
)->
	`GAayLgth
(jv,dbt->
jr
);

1412 i(
	`F_ISSET
(
dbt
, 
DB_DBT_USERMEM
)) {

1413 i(
ldbt
->
offt
 < 0)

1414  (
	`__dbj_throw
(
jv
, 
EINVAL
,

1416 
NULL
, NULL));

1417 i(
dbt
->
size
 > dbt->
un
)

1418  (
	`__dbj_throw
(
jv
, 
EINVAL
,

1420 
NULL
, NULL));

1421 i((
jsize
)(
ldbt
->
offt
 + 
dbt
->
un
>dbt->
y_n
)

1422  (
	`__dbj_throw
(
jv
, 
EINVAL
,

1424 
NULL
, NULL));

1427 i(
ldbt
->
jda_nio
) {

1428 
dbt
->
da
 = (*
jv
)->
	`GDeBufrAddss
(jenv,

1429 
ldbt
->
jda_nio
);

1430 
dbt
->
da
 = (
u_t8_t
 *)dbt->d+ 
ldbt
->
offt
;

1431 } i(
	`F_ISSET
(
dbt
, 
DB_DBT_USERMEM
)) {

1432 i(
ldbt
->
jr
 !
NULL
 &&

1433 (
dbt
->
da
 = (*
jv
)->
	`GByAayEmts
(jenv,

1434 
ldbt
->
jr
, 
NULL
)) == NULL)

1435  (
EINVAL
);

1436 
dbt
->
da
 = (
u_t8_t
 *)dbt->d+ 
ldbt
->
offt
;

1438 
	`F_SET
(
dbt
, 
DB_DBT_USERCOPY
);

1439 
dbt
->
p_da
 = 
ldbt
;

1442 
	}
}

1444 
	$__dbj_dbt_a
(

1445 
JNIEnv
 *
jv
, 
jobje
 
jdbt
, 
DBT
 *
dbt
, 
DBT_LOCKED
 *
ldbt
) {

1446 
jthrowab
 
t
;

1448 i(
dbt
 =
NULL
)

1451 i(
dbt
->
size
 !
ldbt
->
ig_size
)

1452 (*
jv
)->
	`SIFld
(jv, 
jdbt
, 
dbt_size_fid
, (
jt
)
dbt
->
size
);

1454 i(
	`F_ISSET
(
dbt
, 
DB_DBT_USERMEM
)) {

1455 i(
ldbt
->
jr
 !
NULL
)

1456 (*
jv
)->
	`RByAayEmts
(jv, 
ldbt
->
jr
,

1457 (
jby
 *)
dbt
->
da
 - 
ldbt
->
offt
, 0);

1459 i(
dbt
->
size
 > dbt->
un
 &&

1460 (
t
 = (*
jv
)->
	`ExiOccued
(jv)!
NULL
 &&

1461 (*
jv
)->
	`IsInOf
(jv, 
t
, 
memex_ass
)) {

1462 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
t
, 
memex_ass
,

1463 
memex_upde_mhod
, 
jdbt
);

1468 (*
jv
)->
	`Throw
(jv, 
t
);

1471 
	}
}

1474 
	s__dbj_vify_da
 {

1475 
JNIEnv
 *
	mjv
;

1476 
jobje
 
	mamobj
;

1477 
jbyAay
 
	mbys
;

1478 
	mnbys
;

1481 
	$__dbj_vify_back
(*
hd
, cڡ *
r_g
) {

1482 *
r
;

1483 
__dbj_vify_da
 *
vd
;

1484 
n
;

1485 
JNIEnv
 *
jv
;

1487 
r
 = (*)
r_g
;

1488 
vd
 = (
__dbj_vify_da
 *)
hd
;

1489 
jv
 = 
vd
->jenv;

1490 
n
 = 
	`
(
r
) + 1;

1491 i(
n
 > 
vd
->
nbys
) {

1492 
vd
->
nbys
 = 
n
;

1493 i(
vd
->
bys
 !
NULL
)

1494 (*
jv
)->
	`DeLolRef
(jv, 
vd
->
bys
);

1495 i((
vd
->
bys
 = (*
jv
)->
	`NewByAay
(jv, (
jsize
)
n
))

1496 =
NULL
)

1497  (
ENOMEM
);

1500 i(
vd
->
bys
 !
NULL
) {

1501 (*
jv
)->
	`SByAayRegi
(jv, 
vd
->
bys
, 0, (
jsize
)
n
,

1502 (
jby
*)
r
);

1503 (*
jv
)->
	`ClVoidMhod
(jv, 
vd
->
amobj
,

1504 
ouutam_wre_mhod
, 
vd
->
bys
, 0, 
n
 - 1);

1507 i((*
jv
)->
	`ExiOccued
(jv!
NULL
)

1508  (
EIO
);

1511 
	}
}

1514 
JNIEXPORT
 
JNICALL


1515 
	$Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1vec
(
JNIEnv
 *
jv
,

1516 
jass
 
js
, 
jlg
 
jdbvp
, 
jt
 
lock
, j
ags
, 
jobjeAay
 
li
,

1517 
jt
 
offt
, j
cou
) {

1518 
DB_ENV
 *
dbv
;

1519 
DB_LOCKREQ
 *
lockq
;

1520 
DB_LOCKREQ
 *
eq
;

1521 
DB_LOCKREQ
 *
edq
;

1522 
DB_LOCK
 *
lockp
;

1523 
DBT_LOCKED
 *
locked_dbts
;

1524 
DBT
 *
obj
;

1525 
r
, 
loc_r
, 
i
;

1526 
size_t
 
bysize
, 
ldbtsize
;

1527 
jobje
 
jlockq
;

1528 
db_lock_t
 

;

1529 
jobje
 
jobj
, 
jlock
, 
jdbv
;

1530 
jlg
 
jlockp
;

1531 
comed
;

1533 
	`COMPQUIET
(
js
, 
NULL
);

1534 
dbv
 = *(
DB_ENV
 **)(*)&
jdbvp
;

1535 
jdbv
 = (
jobje
)
	`DB_ENV_INTERNAL
(
dbv
);

1537 i(
dbv
 =
NULL
) {

1538 
	`__dbj_throw
(
jv
, 
EINVAL
, "nu obje", 
NULL
, 
jdbv
);

1542 i((*
jv
)->
	`GAayLgth
(jv, 
li
< 
offt
 + 
cou
) {

1543 
	`__dbj_throw
(
jv
, 
EINVAL
,

1544 "DbEnv.lock_veyنgough", 
NULL
, 
jdbv
);

1545 
out0
;

1548 
bysize
 = (
DB_LOCKREQ
* 
cou
;

1549 i((
r
 = 
	`__os_mloc
(
dbv
, 
bysize
, &
lockq
)) != 0) {

1550 
	`__dbj_throw
(
jv
, 
r
, 
NULL
, NULL, 
jdbv
);

1551 
out0
;

1553 
	`memt
(
lockq
, 0, 
bysize
);

1555 
ldbtsize
 = (
DBT_LOCKED
* 
cou
;

1556 i((
r
 = 
	`__os_mloc
(
dbv
, 
ldbtsize
, &
locked_dbts
)) != 0) {

1557 
	`__dbj_throw
(
jv
, 
r
, 
NULL
, NULL, 
jdbv
);

1558 
out1
;

1560 
	`memt
(
locked_dbts
, 0, 
ldbtsize
);

1561 
eq
 = &
lockq
[0];

1564 
i
 = 0, 
eq
 = &
lockq
[0]; i < 
cou
; i++,rereq++) {

1565 
jlockq
 = (*
jv
)->
	`GObjeAayEmt
(jv, 
li
,

1566 
offt
 + 
i
);

1567 i(
jlockq
 =
NULL
) {

1568 
	`__dbj_throw
(
jv
, 
EINVAL
,

1569 "DbEnv.lock_veliry inu", 
NULL
, 
jdbv
);

1570 
out2
;

1572 

 = (*
jv
)->
	`GIFld
(jv, 
jlockq
, 
lockq__fid
);

1573 
eq
->

 = op;

1575 

) {

1576 
DB_LOCK_GET_TIMEOUT
:

1578 
eq
->

 = (*
jv
)->
	`GIFld
(jv, 
jlockq
,

1579 
lockq_timeout_fid
);

1581 
DB_LOCK_GET
:

1583 
eq
->
mode
 = (*
jv
)->
	`GIFld
(jv, 
jlockq
,

1584 
lockq_modeag_fid
);

1585 
jobj
 = (*
jv
)->
	`GObjeFld
(jv, 
jlockq
,

1586 
lockq_obj_fid
);

1587 i((
r
 = 
	`__dbj_dbt_cy
(
jv
,

1588 &
locked_dbts
[
i
], &
obj
, 
jobj
, 0)) != 0 ||

1589 (
r
 =

1590 
	`__os_umloc
(
dbv
, 
obj
->
size
, &obj->
da
)) != 0 ||

1591 (
r
 = 
	`__dbj_dbt_memcy
(
obj
, 0,

1592 
obj
->
da
, obj->
size
, 
DB_USERCOPY_GETDATA
)) != 0)

1593 
out2
;

1594 
eq
->
obj
 = obj;

1596 
DB_LOCK_PUT
:

1598 
jlock
 = (*
jv
)->
	`GObjeFld
(jv, 
jlockq
,

1599 
lockq_lock_fid
);

1600 i(
jlock
 =
NULL
 ||

1601 (
jlockp
 = (*
jv
)->
	`GLgFld
(jv, 
jlock
,

1602 
lock__fid
)) == 0L) {

1603 
	`__dbj_throw
(
jv
, 
EINVAL
,

1604 "LockRequeock fld iNULL", 
NULL
,

1605 
jdbv
);

1606 
out2
;

1608 
lockp
 = *(
DB_LOCK
 **)(*)&
jlockp
;

1609 
eq
->
lock
 = *
lockp
;

1611 
DB_LOCK_PUT_ALL
:

1612 
DB_LOCK_TIMEOUT
:

1615 
DB_LOCK_PUT_OBJ
:

1617 
jobj
 = (*
jv
)->
	`GObjeFld
(jv, 
jlockq
,

1618 
lockq_obj_fid
);

1619 i((
r
 = 
	`__dbj_dbt_cy
(
jv
,

1620 &
locked_dbts
[
i
], &
obj
, 
jobj
, 0)) != 0 ||

1621 (
r
 =

1622 
	`__os_umloc
(
dbv
, 
obj
->
size
, &obj->
da
)) != 0 ||

1623 (
r
 = 
	`__dbj_dbt_memcy
(
obj
, 0,

1624 
obj
->
da
, obj->
size
, 
DB_USERCOPY_GETDATA
)) != 0)

1625 
out2
;

1626 
eq
->
obj
 = obj;

1629 
	`__dbj_throw
(
jv
, 
EINVAL
,

1630 "DbEnv.lock_vebad ovue", 
NULL
, 
jdbv
);

1631 
out2
;

1635 
r
 = 
dbv
->
	`lock_vec
(dbv, (
u_t32_t
)
lock
, (u_t32_t)
ags
,

1636 
lockq
, 
cou
, &
edq
);

1637 i(
r
 == 0)

1638 
comed
 = 
cou
;

1640 
comed
 = 
edq
 - 
lockq
;

1643 
i
 = 0; i < 
comed
; i++) {

1644 

 = 
lockq
[
i
].op;

1645 i(

 =
DB_LOCK_PUT
) {

1650 
jlockq
 = (*
jv
)->
	`GObjeAayEmt
(jenv,

1651 
li
, 
i
 + 
offt
);

1652 
jlock
 = (*
jv
)->
	`GObjeFld
(jv, 
jlockq
,

1653 
lockq_lock_fid
);

1654 
jlockp
 = (*
jv
)->
	`GLgFld
(jv, 
jlock
,

1655 
lock__fid
);

1656 
lockp
 = *(
DB_LOCK
 **)(*)&
jlockp
;

1657 
	`__os_
(
NULL
, 
lockp
);

1658 (*
jv
)->
	`SLgFld
(jv, 
jlock
, 
lock__fid
,

1659 (
jlg
)0);

1661 i(

 =
DB_LOCK_GET
) {

1667 i((
loc_r
 =

1668 
	`__os_mloc
(
dbv
, (
DB_LOCK
), &
lockp
)) != 0) {

1669 
	`__dbj_throw
(
jv
, 
loc_r
, 
NULL
, NULL,

1670 
jdbv
);

1671 
out2
;

1674 *
lockp
 = 
lockq
[
i
].
lock
;

1675 *(
DB_LOCK
 **)(*)&
jlockp
 = 
lockp
;

1677 
jlockq
 = (*
jv
)->
	`GObjeAayEmt
(jenv,

1678 
li
, 
i
 + 
offt
);

1679 
jlock
 = (*
jv
)->
	`NewObje
(jv, 
lock_ass
,

1680 
lock_cڡru
, 
jlockp
, 
JNI_TRUE
);

1681 i(
jlock
 =
NULL
)

1682 
out2
;

1683 (*
jv
)->
	`SLgFld
(jv, 
jlock
, 
lock__fid
,

1684 
jlockp
);

1685 (*
jv
)->
	`SObjeFld
(jv, 
jlockq
,

1686 
lockq_lock_fid
, 
jlock
);

1691 i(
r
 =
DB_LOCK_NOTGRANTED
 && 
i
 < 
cou
) {

1692 
jlockq
 = (*
jv
)->
	`GObjeAayEmt
(jv, 
li
,

1693 
i
 + 
offt
);

1694 
jobj
 = (*
jv
)->
	`GObjeFld
(jv, 
jlockq
,

1695 
lockq_obj_fid
);

1696 
jlock
 = (*
jv
)->
	`GObjeFld
(jv, 
jlockq
,

1697 
lockq_lock_fid
);

1698 (*
jv
)->
	`Throw
(jenv,

1699 (*
jv
)->
	`NewObje
(jv, 
lockex_ass
, 
lockex_cڡru
,

1700 (*
jv
)->
	`NewSgUTF
(jenv, "DbEnv.lock_vec incomplete"),

1701 
lockq
[
i
].

,ockq[i].
mode
, 
jobj
, 
jlock
, i, 
jdbv
));

1702 } i(
r
 != 0)

1703 
	`__dbj_throw
(
jv
, 
r
, 
NULL
, NULL, 
jdbv
);

1705 
out2
: 
	`__os_
(
dbv
, 
locked_dbts
);

1706 
out1
: 
i
 = 0, 
eq
 = &
lockq
[0]; i < 
cou
; i++,rereq++)

1707 i((
eq
->

 =
DB_LOCK_GET
 ||q-> =
DB_LOCK_PUT
) &&

1708 
eq
->
obj
->
da
 !
NULL
)

1709 
	`__os_u
(
dbv
, 
eq
->
obj
->
da
);

1710 
	`__os_
(
dbv
, 
lockq
);

1711 
out0
: ;

1712 
	}
}

1718 
	#JAVADB_STAT_INT
(
jv
, 
jobj
, 
fid
, 
p
, 
me
) \

1719 (*
jv
)->
	`SIFld
(jv, 
jobj
, 
fid
, (
jt
)
p
->
me
)

	)

1721 
	#JAVADB_STAT_STRING
(
jv
, 
jobj
, 
fid
, 
p
, 
me
) \

1722 (*
jv
)->
	`SObjeFld
(jv, 
jobj
, 
fid
, \

1723 (*
jv
)->
	`NewSgUTF
(jv, 
p
->
me
))

	)

1725 
	#JAVADB_STAT_LSN
(
jv
, 
jobj
, 
fid
, 
p
, 
me
) \

1726 (*
jv
)->
	`SObjeFld
(jv, 
jobj
, 
fid
, \

1727 
	`__dbj_wp_DB_LSN
(
jv
, &
p
->
me
))

	)

1729 
	#JAVADB_STAT_LONG
(
jv
, 
jobj
, 
fid
, 
p
, 
me
) \

1730 (*
jv
)->
	`SLgFld
(jv, 
jobj
, 
fid
, \

1731 (
jlg
)
p
->
me
)

	)

1733 
	#JAVADB_STAT_XID
(
jv
, 
jobj
, 
fid
, 
p
, 
me
) { \

1734 
jobje
 
jr
 = \

1735 (*
jv
)->
	`NewByAay
(jv, (
jsize
)
DB_XIDDATASIZE
); \

1736 (*
jv
)->
	`SByAayRegi
(jv, 
jr
, \

1737 0, (
jsize
)
DB_XIDDATASIZE
, (
jby
 *)
p
->
me
); \

1738 (*
jv
)->
	`SObjeFld
(jv, 
jobj
, 
fid
, 
jr
); \

1739 }

	)

1744 
	#JAVADB_STAT_ACTIVE
(
jv
, 

, 
jobj
, 
p
, 
me
) \

1745 d{} 0)

	)

1747 
	~"java__auto.c
"

1750 
	$__dbj_r
(cڡ 
DB_ENV
 *
dbv
,

1751 cڡ *
efix
, cڡ *
msg
)

1753 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

1754 
jobje
 
jdbv
 = (jobje)
	`DB_ENV_INTERNAL
(
dbv
);

1756 
	`COMPQUIET
(
efix
, 
NULL
);

1758 i(
jdbv
 !
NULL
)

1759 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
, 
dbv_ass
,

1760 
r_mhod
, (*
jv
)->
	`NewSgUTF
(jv, 
msg
));

1761 
	}
}

1763 
	$__dbj_v_edback
(
DB_ENV
 *
dbv
, 
code
, 
r
)

1765 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

1766 
jobje
 
jdbv
 = (jobje)
	`DB_ENV_INTERNAL
(
dbv
);

1768 i(
jdbv
 !
NULL
)

1769 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
, 
dbv_ass
,

1770 
v_edback_mhod
, 
code
, 
r
);

1771 
	}
}

1773 
	$__dbj_mesge
(cڡ 
DB_ENV
 *
dbv
, cڡ *
msg
)

1775 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

1776 
jobje
 
jdbv
 = (jobje)
	`DB_ENV_INTERNAL
(
dbv
);

1778 i(
jdbv
 !
NULL
)

1779 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
, 
dbv_ass
,

1780 
msg_mhod
, (*
jv
)->
	`NewSgUTF
(jv, 
msg
));

1781 
	}
}

1783 
	$__dbj_nic
(
DB_ENV
 *
dbv
, 
r
)

1785 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

1786 
jobje
 
jdbv
 = (jobje)
	`DB_ENV_INTERNAL
(
dbv
);

1788 i(
jdbv
 !
NULL
)

1789 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
, 
dbv_ass
,

1790 
nic_mhod
,

1791 
	`__dbj_g_ex
(
jv
, 
r
, 
NULL
, NULL, 
jdbv
));

1792 
	}
}

1794 
	$__dbj_p_dich
(
DB_ENV
 *
dbv
,

1795 
DBT
 *
dbt
, 
DB_LSN
 *
l
, 
db_cs
 
cs
)

1797 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

1798 
jobje
 
jdbv
 = (jobje)
	`DB_ENV_INTERNAL
(
dbv
);

1799 
jobje
 
jdbt
, 
jl
;

1800 
jbyAay
 
jdb
;

1801 
t
;

1803 i(
jdbv
 =
NULL
)

1804  (
EINVAL
);

1806 
jdbt
 = (*
jv
)->
	`NewObje
(jv, 
dbt_ass
, 
dbt_cڡru
);

1807 
	`__dbj_dbt_cyout
(
jv
, 
dbt
, &
jdb
, 
jdbt
);

1808 i(
jdbt
 =
NULL
)

1809  (
ENOMEM
);

1811 
jl
 = (
l
 =
NULL
? NULL : 
	`__dbj_wp_DB_LSN
(
jv
,sn);

1813 
t
 = (*
jv
)->
	`ClNvtuIMhod
(jv, 
jdbv
, 
dbv_ass
,

1814 
p_dich_mhod
, 
jdbt
, 
jl
, 
cs
);

1816 i((*
jv
)->
	`ExiOccued
(jenv)) {

1818 
t
 = 
EINVAL
;

1821 (*
jv
)->
	`DeLolRef
(jv, 
jdb
);

1822 (*
jv
)->
	`DeLolRef
(jv, 
jdbt
);

1823 i(
jl
 !
NULL
)

1824 (*
jv
)->
	`DeLolRef
(jv, 
jl
);

1826  (
t
);

1827 
	}
}

1829 
	$__dbj_evt_nify
(
DB_ENV
 *
dbv
, 
u_t32_t
 
evt_id
, * 
fo
)

1831 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

1832 
jobje
 
jdbv
 = (jobje)
	`DB_ENV_INTERNAL
(
dbv
);

1834 i(
jdbv
 =
NULL
)

1837 
evt_id
) {

1838 
DB_EVENT_PANIC
:

1839 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
,

1840 
dbv_ass
, 
nic_evt_nify_mhod
);

1842 
DB_EVENT_REP_CLIENT
:

1843 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
,

1844 
dbv_ass
, 
p__evt_nify_mhod
);

1846 
DB_EVENT_REP_ELECTED
:

1847 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
,

1848 
dbv_ass
, 
p_eed_evt_nify_mhod
);

1850 
DB_EVENT_REP_MASTER
:

1851 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
,

1852 
dbv_ass
, 
p_ma_evt_nify_mhod
);

1854 
DB_EVENT_REP_NEWMASTER
:

1855 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
,

1856 
dbv_ass
, 
p_w_ma_evt_nify_mhod
,

1857 *(*)
fo
);

1859 
DB_EVENT_REP_PERM_FAILED
:

1860 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
,

1861 
dbv_ass
, 
p_rm_ed_evt_nify_mhod
);

1863 
DB_EVENT_REP_STARTUPDONE
:

1864 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
,

1865 
dbv_ass
, 
p_tup_de_evt_nify_mhod
);

1867 
DB_EVENT_WRITE_FAILED
:

1868 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdbv
,

1869 
dbv_ass
, 
wre_ed_evt_nify_mhod
,

1870 *(*)
fo
);

1873 
dbv
->
	`rx
(dbenv, "Unhandledvent callback inhe Java API");

1874 
	`DB_ASSERT
(
dbv
, 0);

1876 
	}
}

1878 
	$__dbj_p_t
(
DB_ENV
 *
dbv
,

1879 cڡ 
DBT
 *
cڌ
, cڡ DBT *
c
, cڡ 
DB_LSN
 *
l
, 
vid
,

1880 
u_t32_t
 
ags
)

1882 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

1883 
jobje
 
jdbv
 = (jobje)
	`DB_ENV_INTERNAL
(
dbv
);

1884 
jobje
 
jcڌ
, 
jc
, 
jl
;

1885 
jbyAay
 
jcڌެr
, 
j
;

1886 
t
;

1888 i(
jdbv
 =
NULL
)

1889  (
EINVAL
);

1891 
jcڌ
 = (*
jv
)->
	`NewObje
(jv, 
dbt_ass
, 
dbt_cڡru
);

1892 
jc
 = (*
jv
)->
	`NewObje
(jv, 
dbt_ass
, 
dbt_cڡru
);

1893 i(
jcڌ
 =
NULL
 || 
jc
 == NULL)

1894  (
ENOMEM
);

1896 
	`__dbj_dbt_cyout
(
jv
, 
cڌ
, &
jcڌެr
, 
jcڌ
);

1897 
	`__dbj_dbt_cyout
(
jv
, 
c
, &
j
, 
jc
);

1898 
jl
 = (
l
 =
NULL
? NULL : 
	`__dbj_wp_DB_LSN
(
jv
, (
DB_LSN
 *)lsn);

1900 i(
jcڌެr
 =
NULL
 || 
j
 == NULL)

1901  (
ENOMEM
);

1903 
t
 = (*
jv
)->
	`ClNvtuIMhod
(jv, 
jdbv
, 
dbv_ass
,

1904 
p_t_mhod
, 
jcڌ
, 
jc
, 
jl
, 
vid
, 
ags
);

1906 i((*
jv
)->
	`ExiOccued
(jenv)) {

1908 
t
 = 
EINVAL
;

1911 (*
jv
)->
	`DeLolRef
(jv, 
j
);

1912 (*
jv
)->
	`DeLolRef
(jv, 
jcڌެr
);

1913 (*
jv
)->
	`DeLolRef
(jv, 
jc
);

1914 (*
jv
)->
	`DeLolRef
(jv, 
jcڌ
);

1915 i(
jl
 !
NULL
)

1916 (*
jv
)->
	`DeLolRef
(jv, 
jl
);

1918  (
t
);

1919 
	}
}

1921 
	$__dbj_ckey_
(
DB
 *
db
,

1922 cڡ 
DBT
 *
key
, cڡ DBT *
da
, DBT *
su
)

1924 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

1925 
jobje
 
jdb
 = (jobje)
	`DB_INTERNAL
(
db
);

1926 
jobje
 
jkey
, 
jda
, 
jsu
;

1927 
jobjeAay
 
jskeys
;

1928 
jsize
 
i
, 
num_skeys
;

1929 
jbyAay
 
jkeyr
, 
jd
;

1930 
DBT_LOCKED
 
esu
;

1931 
DBT
 *
esu
;

1932 
t
;

1934 i(
jdb
 =
NULL
)

1935  (
EINVAL
);

1937 
jkey
 = (
key
->
p_da
 !
NULL
) ?

1938 ((
DBT_LOCKED
 *)
key
->
p_da
)->
jdbt
 :

1939 (*
jv
)->
	`NewObje
(jv, 
dbt_ass
, 
dbt_cڡru
);

1940 
jda
 = (
da
->
p_da
 !
NULL
) ?

1941 ((
DBT_LOCKED
 *)
da
->
p_da
)->
jdbt
 :

1942 (*
jv
)->
	`NewObje
(jv, 
dbt_ass
, 
dbt_cڡru
);

1943 i(
jkey
 =
NULL
 || 
jda
 == NULL)

1944  (
ENOMEM
);

1946 i(
key
->
p_da
 =
NULL
) {

1947 
	`__dbj_dbt_cyout
(
jv
, 
key
, &
jkeyr
, 
jkey
);

1948 i(
jkeyr
 =
NULL
)

1949  (
ENOMEM
);

1951 i(
da
->
p_da
 =
NULL
) {

1952 
	`__dbj_dbt_cyout
(
jv
, 
da
, &
jd
, 
jda
);

1953 i(
jd
 =
NULL
)

1954  (
ENOMEM
);

1957 
jskeys
 = (
jobjeAay
)(*
jv
)->
	`ClNvtuObjeMhod
(jenv,

1958 
jdb
, 
db_ass
, 
ckey__mhod
, 
jkey
, 
jda
);

1960 i(
jskeys
 =
NULL
 ||

1961 (
num_skeys
 = (*
jv
)->
	`GAayLgth
(jv, 
jskeys
)) == 0) {

1962 
t
 = 
DB_DONOTINDEX
;

1963 
r
;

1964 } i(
num_skeys
 == 1) {

1965 
	`memt
(
su
, 0,  (
DBT
));

1966 
esu
 = 
su
;

1968 i((
t
 = 
	`__os_umloc
(
db
->
dbv
,

1969 
num_skeys
 *  (
DBT
), &
su
->
da
)) != 0)

1970 
r
;

1971 
	`memt
(
su
->
da
, 0, 
num_skeys
 *  (
DBT
));

1972 
su
->
size
 = 
num_skeys
;

1973 
	`F_SET
(
su
, 
DB_DBT_APPMALLOC
 | 
DB_DBT_MULTIPLE
);

1974 
esu
 = (
DBT
 *)
su
->
da
;

1977 i((*
jv
)->
	`ExiOccued
(jenv)) {

1979 
t
 = 
EINVAL
;

1980 
r
;

1983 
i
 = 0; i < 
num_skeys
; i++, 
esu
++) {

1984 
jsu
 = (*
jv
)->
	`GObjeAayEmt
(jv, 
jskeys
, 
i
);

1986 i((
t
 =

1987 
	`__dbj_dbt_cy
(
jv
, &
esu
, 
NULL
, 
jsu
, 0)) != 0)

1988 
r
;

1990 i(
esu
.
dbt
.
size
 != 0) {

1992 
esu
->
size
 = 
esu
.
dbt
.size;

1993 i((
t
 = 
	`__os_umloc
(
NULL
,

1994 
esu
->
size
, &esu->
da
)) != 0)

1995 
r
;

1996 i((
t
 = 
	`__dbj_dbt_memcy
(&
esu
.
dbt
, 0,

1997 
esu
->
da
,su->
size
,

1998 
DB_USERCOPY_GETDATA
)) != 0)

1999 
r
;

2000 
	`__dbj_dbt_a
(
jv
,

2001 
jsu
, &
esu
.
dbt
, &lresult);

2002 (*
jv
)->
	`DeLolRef
(jv, 
esu
.
jr
);

2003 
	`F_SET
(
esu
, 
DB_DBT_APPMALLOC
);

2006 (*
jv
)->
	`DeLolRef
(jv, 
jsu
);

2009 
r
: i(
key
->
p_da
 =
NULL
) {

2010 (*
jv
)->
	`DeLolRef
(jv, 
jkeyr
);

2011 (*
jv
)->
	`DeLolRef
(jv, 
jkey
);

2013 i(
da
->
p_da
 =
NULL
) {

2014 (*
jv
)->
	`DeLolRef
(jv, 
jd
);

2015 (*
jv
)->
	`DeLolRef
(jv, 
jda
);

2018  (
t
);

2019 
	}
}

2021 
	$__dbj_nd_o
(
DB
 *
db
, 
DBT
 *
dbt
, 
db_o_t
 
o
)

2023 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

2024 
jobje
 
jdb
 = (jobje)
	`DB_INTERNAL
(
db
);

2025 
jobje
 
jdbt
;

2026 
DBT_LOCKED
 
esu
;

2027 
jbyAay
 
jdb
;

2028 
t
;

2030 i(
jdb
 =
NULL
)

2031  (
EINVAL
);

2038 
jdbt
 = (*
jv
)->
	`NewObje
(jv, 
dbt_ass
, 
dbt_cڡru
);

2039 i(
jdbt
 =
NULL
)

2040  (
ENOMEM
);

2042 
	`__dbj_dbt_cyout
(
jv
, 
dbt
, &
jdb
, 
jdbt
);

2043 i(
jdb
 =
NULL
)

2044  (
ENOMEM
);

2046 
t
 = 0;

2047 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdb
, 
db_ass
,

2048 
nd_o_mhod
, 
jdbt
, 
o
);

2050 i((*
jv
)->
	`ExiOccued
(jenv)) {

2052  (
EINVAL
);

2055 
t
 = 
	`__dbj_dbt_cy
(
jv
, &
esu
, 
NULL
, 
jdbt
, 0);

2056 
	`memt
(
dbt
, 0,  (
DBT
));

2058 i(
t
 =0 && 
esu
.
dbt
.
size
 != 0) {

2060 
dbt
->
size
 = 
esu
.dbt.size;

2061 i((
t
 =

2062 
	`__os_umloc
(
NULL
, 
dbt
->
size
, &dbt->
da
)) != 0)

2063 
r
;

2064 i((
t
 = 
	`__dbj_dbt_memcy
(&
esu
.
dbt
, 0,

2065 
dbt
->
da
, dbt->
size
,

2066 
DB_USERCOPY_GETDATA
)) != 0)

2067 
r
;

2068 
	`__dbj_dbt_a
(
jv
, 
jdbt
, &
esu
.
dbt
, &lresult);

2069 (*
jv
)->
	`DeLolRef
(jv, 
esu
.
jr
);

2070 
	`F_SET
(
dbt
, 
DB_DBT_APPMALLOC
);

2073 
r
: (*
jv
)->
	`DeLolRef
(jv, 
jdb
);

2074 (*
jv
)->
	`DeLolRef
(jv, 
jdbt
);

2076  (
t
);

2077 
	}
}

2082 
	$__dbj_am_com
(
DB
 *
db
, cڡ 
DBT
 *
dbt1
, cڡ DBT *
dbt2
,

2083 
jmhodID
 
com_mhod
)

2085 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

2086 
jobje
 
jdb
 = (jobje)
	`DB_INTERNAL
(
db
);

2087 
jbyAay
 
jdb1
, 
jdb2
;

2088 
t
;

2090 i(
jdb
 =
NULL
)

2091  (
EINVAL
);

2093 i(
dbt1
->
p_da
 !
NULL
)

2094 
jdb1
 = ((
DBT_LOCKED
 *)
dbt1
->
p_da
)->
jr
;

2096 
jdb1
 = (*
jv
)->
	`NewByAay
(jv, (
jsize
)
dbt1
->
size
);

2097 i(
jdb1
 =
NULL
)

2098  (
ENOMEM
);

2099 (*
jv
)->
	`SByAayRegi
(jv, 
jdb1
, 0,

2100 (
jsize
)
dbt1
->
size
, (
jby
 *)dbt1->
da
);

2103 i(
dbt2
->
p_da
 !
NULL
)

2104 
jdb2
 = ((
DBT_LOCKED
 *)
dbt2
->
p_da
)->
jr
;

2106 
jdb2
 = (*
jv
)->
	`NewByAay
(jv, (
jsize
)
dbt2
->
size
);

2107 i(
jdb2
 =
NULL
)

2108  (
ENOMEM
);

2109 (*
jv
)->
	`SByAayRegi
(jv, 
jdb2
, 0,

2110 (
jsize
)
dbt2
->
size
, (
jby
 *)dbt2->
da
);

2113 
t
 = ()(*
jv
)->
	`ClNvtuIMhod
(jv, 
jdb
, 
db_ass
,

2114 
com_mhod
, 
jdb1
, 
jdb2
);

2116 i((*
jv
)->
	`ExiOccued
(jenv)) {

2118 
t
 = 
EINVAL
;

2121 i(
dbt1
->
p_da
 =
NULL
)

2122 (*
jv
)->
	`DeLolRef
(jv, 
jdb1
);

2123 i(
dbt2
->
p_da
 =
NULL
)

2124 (*
jv
)->
	`DeLolRef
(jv, 
jdb2
);

2126  (
t
);

2127 
	}
}

2129 
	$__dbj_bt_com
(
DB
 *
db
, cڡ 
DBT
 *
dbt1
, cڡ DBT *
dbt2
)

2131  
	`__dbj_am_com
(
db
, 
dbt1
, 
dbt2
, 
bt_com_mhod
);

2132 
	}
}

2134 
size_t
 
	$__dbj_bt_efix
(
DB
 *
db
, cڡ 
DBT
 *
dbt1
, cڡ DBT *
dbt2
)

2136 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

2137 
jobje
 
jdb
 = (jobje)
	`DB_INTERNAL
(
db
);

2138 
jobje
 
jdbt1
, 
jdbt2
;

2139 
jbyAay
 
jdb1
, 
jdb2
;

2140 
t
;

2142 i(
jdb
 =
NULL
)

2143  (
EINVAL
);

2145 i(
dbt1
->
p_da
 !
NULL
)

2146 
jdbt1
 = ((
DBT_LOCKED
 *)
dbt1
->
p_da
)->
jdbt
;

2148 i((
jdbt1
 =

2149 (*
jv
)->
	`NewObje
(jv, 
dbt_ass
, 
dbt_cڡru
)=
NULL
)

2150  (
ENOMEM
);

2151 
	`__dbj_dbt_cyout
(
jv
, 
dbt1
, &
jdb1
, 
jdbt1
);

2152 i(
jdb1
 =
NULL
)

2153  (
ENOMEM
);

2156 i(
dbt2
->
p_da
 !
NULL
)

2157 
jdbt2
 = ((
DBT_LOCKED
 *)
dbt2
->
p_da
)->
jdbt
;

2159 i((
jdbt2
 =

2160 (*
jv
)->
	`NewObje
(jv, 
dbt_ass
, 
dbt_cڡru
)=
NULL
)

2161  (
ENOMEM
);

2162 
	`__dbj_dbt_cyout
(
jv
, 
dbt2
, &
jdb2
, 
jdbt2
);

2163 i(
jdb2
 =
NULL
)

2164  (
ENOMEM
);

2167 
t
 = ()(*
jv
)->
	`ClNvtuIMhod
(jv, 
jdb
, 
db_ass
,

2168 
bt_efix_mhod
, 
jdbt1
, 
jdbt2
);

2170 i(
dbt1
->
p_da
 =
NULL
) {

2171 (*
jv
)->
	`DeLolRef
(jv, 
jdb1
);

2172 (*
jv
)->
	`DeLolRef
(jv, 
jdbt1
);

2174 i(
dbt2
->
p_da
 =
NULL
) {

2175 (*
jv
)->
	`DeLolRef
(jv, 
jdb2
);

2176 (*
jv
)->
	`DeLolRef
(jv, 
jdbt2
);

2179  (
t
);

2180 
	}
}

2182 
	$__dbj_dup_com
(
DB
 *
db
, cڡ 
DBT
 *
dbt1
, cڡ DBT *
dbt2
)

2184 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

2185 
jobje
 
jdb
 = (jobje)
	`DB_INTERNAL
(
db
);

2186 
jbyAay
 
jdb1
, 
jdb2
;

2187 
t
;

2189 i(
jdb
 =
NULL
)

2190  (
EINVAL
);

2192 
jdb1
 = (*
jv
)->
	`NewByAay
(jv, (
jsize
)
dbt1
->
size
);

2193 i(
jdb1
 =
NULL
)

2194  (
ENOMEM
);

2195 (*
jv
)->
	`SByAayRegi
(jv, 
jdb1
, 0, (
jsize
)
dbt1
->
size
,

2196 (
jby
 *)
dbt1
->
da
);

2198 
jdb2
 = (*
jv
)->
	`NewByAay
(jv, (
jsize
)
dbt2
->
size
);

2199 i(
jdb2
 =
NULL
)

2200  (
ENOMEM
);

2201 (*
jv
)->
	`SByAayRegi
(jv, 
jdb2
, 0, (
jsize
)
dbt2
->
size
,

2202 (
jby
 *)
dbt2
->
da
);

2204 
t
 = ()(*
jv
)->
	`ClNvtuIMhod
(jv, 
jdb
, 
db_ass
,

2205 
dup_com_mhod
, 
jdb1
, 
jdb2
);

2207 i((*
jv
)->
	`ExiOccued
(jenv)) {

2209 
t
 = 
EINVAL
;

2212 (*
jv
)->
	`DeLolRef
(jv, 
jdb2
);

2213 (*
jv
)->
	`DeLolRef
(jv, 
jdb1
);

2215  (
t
);

2216 
	}
}

2218 
	$__dbj_db_edback
(
DB
 *
db
, 
code
, 
r
)

2220 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

2221 
jobje
 
jdb
 = (jobje)
	`DB_INTERNAL
(
db
);

2223 i(
jdb
 !
NULL
)

2224 (*
jv
)->
	`ClNvtuVoidMhod
(jv, 
jdb
, 
db_ass
,

2225 
db_edback_mhod
, 
code
, 
r
);

2226 
	}
}

2228 
	$__dbj_h_com
(
DB
 *
db
, cڡ 
DBT
 *
dbt1
, cڡ DBT *
dbt2
)

2230  
	`__dbj_am_com
(
db
, 
dbt1
, 
dbt2
, 
h_com_mhod
);

2231 
	}
}

2233 
u_t32_t
 
	$__dbj_h_hash
(
DB
 *
db
, cڡ *
da
, 
u_t32_t
 
n
)

2235 
JNIEnv
 *
jv
 = 
	`__dbj_g_jnnv
();

2236 
jobje
 
jdb
 = (jobje)
	`DB_INTERNAL
(
db
);

2237 
jbyAay
 
jr
 = (*
jv
)->
	`NewByAay
(jv, (
jsize
)
n
);

2238 
t
;

2240 i(
jdb
 =
NULL
)

2241  (
EINVAL
);

2243 i((
jr
 = (*
jv
)->
	`NewByAay
(jv, (
jsize
)
n
)=
NULL
)

2244  (
ENOMEM
);

2246 (*
jv
)->
	`SByAayRegi
(jv, 
jr
, 0, (
jsize
)
n
, (
jby
 *)
da
);

2248 
t
 = ()(*
jv
)->
	`ClNvtuIMhod
(jv, 
jdb
, 
db_ass
,

2249 
h_hash_mhod
, 
jr
, 
n
);

2251 (*
jv
)->
	`DeLolRef
(jv, 
jr
);

2253  (
t
);

2254 
	}
}

2257 
JNIEXPORT
 
jlg
 
JNICALL


2258 
	$Java_com_pyt_db__db_1javaJNI_DbEnvRef0
(

2259 
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
) {

2260 
DB_ENV
 *
lf
 = *(DB_ENV **)(*)&
jg1
;

2261 
jlg
 
t
;

2262 
	`COMPQUIET
(
js
, 
NULL
);

2264 
	`DB_ENV_INTERNAL
(
lf
(*)(*
jv
)->
	`NewGlobRef
(jv, 
jg2
);

2265 *(
jobje
 *)(*)&
t
 = (jobje)
	`DB_ENV_INTERNAL
(
lf
);

2266  (
t
);

2267 
	}
}

2269 
JNIEXPORT
 
jlg
 
JNICALL


2270 
	$Java_com_pyt_db__db_1javaJNI_DbRef0
(

2271 
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
) {

2272 
DB
 *
lf
 = *(DB **)(*)&
jg1
;

2273 
jlg
 
t
;

2274 
	`COMPQUIET
(
js
, 
NULL
);

2276 
	`DB_INTERNAL
(
lf
(*)(*
jv
)->
	`NewGlobRef
(jv, 
jg2
);

2277 *(
jobje
 *)(*)&
t
 = (jobje)
	`DB_INTERNAL
(
lf
);

2278  (
t
);

2279 
	}
}

2281 
JNIEXPORT
 
JNICALL


2282 
	$Java_com_pyt_db__db_1javaJNI_deRef0
(

2283 
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

2284 
jobje
 
jf
 = *(jobje *)(*)&
jg1
;

2285 
	`COMPQUIET
(
js
, 
NULL
);

2287 i(
jf
 != 0L)

2288 (*
jv
)->
	`DeGlobRef
(jv, 
jf
);

2289 
	}
}

2291 
JNIEXPORT
 
jlg
 
JNICALL


2292 
	$Java_com_pyt_db__db_1javaJNI_gDbEnv0
(

2293 
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

2294 
DB
 *
lf
 = *(DB **)(*)&
jg1
;

2295 
jlg
 
t
;

2297 
	`COMPQUIET
(
jv
, 
NULL
);

2298 
	`COMPQUIET
(
js
, 
NULL
);

2300 *(
DB_ENV
 **)(*)&
t
 = 
lf
->
dbv
;

2301  (
t
);

2302 
	}
}

2304 
JNIEXPORT
 
jboޗn
 
JNICALL


2305 
	$Java_com_pyt_db__DbUt_is_1big_1dn
(

2306 
JNIEnv
 *
jv
, 
jass
 
azz
)

2308 
	`COMPQUIET
(
jv
, 
NULL
);

2309 
	`COMPQUIET
(
azz
, 
NULL
);

2311  (
	`__db_isbigdn
(? 
JNI_TRUE
 : 
JNI_FALSE
);

2312 
	}
}

2315 
	tdb_t_t
;

2316 
	tt_bo
;

2318 
	s__db_lk_cis
 {

2319 
u_t8_t
 *
	mlk_cis
;

2320 
	mlk_modes
;

2323 
	s__db_out_am
 {

2324 *
	mhd
;

2325 (*
	mback

__P
((*, const *));

2328 
	s__db_pmgr_ses
 {

2329 
DB_REPMGR_SITE
 *
	mses
;

2330 
u_t32_t
 
	mnses
;

2333 
	#Db
 
__db


	)

2334 
	#Dbc
 
__dbc


	)

2335 
	#Dbt
 
__db_dbt


	)

2336 
	#DbEnv
 
__db_v


	)

2337 
	#DbLock
 
__db_lock_u


	)

2338 
	#DbLogc
 
__db_log_curs


	)

2339 
	#DbL
 
__db_l


	)

2340 
	#DbMpoFe
 
__db_mpofe


	)

2341 
	#DbSequ
 
__db_qu


	)

2342 
	#DbTxn
 
__db_txn


	)

2345 *
	gunud
 = 
SWIG_JavaThrowExi
;

2347 
SWIGINTERN
 
Db
 *
	$w_Db
(
DB_ENV
 *
dbv
,
u_t32_t
 
ags
){

2348 
DB
 *
lf
 = 
NULL
;

2349 
o
 = 
	`db_
(&
lf
, 
dbv
, 
ags
);

2350 i(
o
 =0 && 
dbv
 =
NULL
)

2351 
lf
->
dbv
->
dbt_urcy
 = 
__dbj_dbt_memcy
;

2352  
lf
;

2353 
	}
}

2354 
SWIGINTERN
 
db_t_t
 
Db_assoc
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
DB
 *
cdy
,(*
back
)(DB *,
DBT
 cڡ *,DBT cڡ *,DBT *),
u_t32_t
 
ags
){

2355  
lf
->
	`assoc
(lf, 
txnid
, 
cdy
, 
back
, 
ags
);

2356 
	}
}

2357 
SWIGINTERN
 
db_t_t
 
	$Db_com
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
DBT
 *
t
,DBT *

,
DB_COMPACT
 *
c_da
,
u_t32_t
 
ags
,DBT *
d
){

2358  
lf
->
	`com
(lf, 
txnid
, 
t
, 

, 
c_da
, 
ags
,

2359 
d
);

2360 
	}
}

2361 
SWIGINTERN
 
	$Db_o
(
Db
 *
lf
,
u_t32_t
 
ags
){

2362 
o
 = 
lf
->
	`o
(lf, 
ags
);

2363  
o
;

2364 
	}
}

2365 
SWIGINTERN
 
DBC
 *
	$Db_curs
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
u_t32_t
 
ags
){

2366 
DBC
 *
cursp
 = 
NULL
;

2367 
o
 = 
lf
->
	`curs
(lf, 
txnid
, &
cursp
, 
ags
);

2368  
cursp
;

2369 
	}
}

2370 
SWIGINTERN
 
	$Db_d
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
DBT
 *
key
,
u_t32_t
 
ags
){

2371  
lf
->
	`d
(lf, 
txnid
, 
key
, 
ags
);

2372 
	}
}

2373 
SWIGINTERN
 
	$Db_r
(
Db
 *
lf
,
r
,cڡ *
mesge
){

2374 
lf
->
	`r
(lf, 
r
, 
mesge
);

2375 
	}
}

2376 
SWIGINTERN
 
	$Db_rx
(
Db
 *
lf
,cڡ *
mesge
){

2377 
lf
->
	`rx
(lf, 
mesge
);

2378 
	}
}

2379 
SWIGINTERN
 
	$Db_exis
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
DBT
 *
key
,
u_t32_t
 
ags
){

2380  
lf
->
	`exis
(lf, 
txnid
, 
key
, 
ags
);

2381 
	}
}

2382 
SWIGINTERN
 
	$Db_g
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
DBT
 *
key
,DBT *
da
,
u_t32_t
 
ags
){

2383  
lf
->
	`g
(lf, 
txnid
, 
key
, 
da
, 
ags
);

2384 
	}
}

2385 
SWIGINTERN
 
t_bo
 
	$Db_g_byswd
(
Db
 *
lf
){

2386 
t
 = 0;

2387 
o
 = 
lf
->
	`g_byswd
(lf, &
t
);

2388  
t
;

2389 
	}
}

2390 
SWIGINTERN
 
jlg
 
	$Db_g_chesize
(
Db
 *
lf
){

2391 
u_t32_t
 
gbys
 = 0, 
bys
 = 0;

2392 
o
 = 
lf
->
	`g_chesize
(lf, &
gbys
, &
bys
, 
NULL
);

2393  (
jlg
)
gbys
 * 
GIGABYTE
 + 
bys
;

2394 
	}
}

2395 
SWIGINTERN
 
u_t32_t
 
	$Db_g_chesize_nche
(
Db
 *
lf
){

2396 
t
 = 0;

2397 
o
 = 
lf
->
	`g_chesize
(lf, 
NULL
, NULL, &
t
);

2398  
t
;

2399 
	}
}

2400 
SWIGINTERN
 cڡ *
	$Db_g_fame
(
Db
 *
lf
){

2401 cڡ *
t
 = 
NULL
;

2402 
o
 = 
lf
->
	`g_dbme
(lf, &
t
, 
NULL
);

2403  
t
;

2404 
	}
}

2405 
SWIGINTERN
 cڡ *
	$Db_g_dbme
(
Db
 *
lf
){

2406 cڡ *
t
 = 
NULL
;

2407 
o
 = 
lf
->
	`g_dbme
(lf, 
NULL
, &
t
);

2408  
t
;

2409 
	}
}

2410 
SWIGINTERN
 
u_t32_t
 
	$Db_g_y_ags
(
Db
 *
lf
){

2411 
u_t32_t
 
t
 = 0;

2412 
	`CRYPTO_ONLY
(
o
 = 
lf
->
	`g_y_ags
(lf, &
t
))

2413  
t
;

2414 
	}
}

2415 
SWIGINTERN
 
u_t32_t
 
	$Db_g_ags
(
Db
 *
lf
){

2416 
u_t32_t
 
t
 = 0;

2417 
o
 = 
lf
->
	`g_ags
(lf, &
t
);

2418  
t
;

2419 
	}
}

2420 
SWIGINTERN
 
	$Db_g_ld
(
Db
 *
lf
){

2421 
t
 = 0;

2422 
o
 = 
lf
->
	`g_ld
(lf, &
t
);

2423  
t
;

2424 
	}
}

2425 
SWIGINTERN
 
DB_MPOOLFILE
 *
	$Db_g_mpf
(
Db
 *
lf
){

2426 
o
 = 0;

2427  
lf
->
	`g_mpf
(self);

2428 
	}
}

2429 
SWIGINTERN
 
u_t32_t
 
	$Db_g_ݒ_ags
(
Db
 *
lf
){

2430 
u_t32_t
 
t
 = 0;

2431 
o
 = 
lf
->
	`g_ݒ_ags
(lf, &
t
);

2432  
t
;

2433 
	}
}

2434 
SWIGINTERN
 
u_t32_t
 
	$Db_g_gesize
(
Db
 *
lf
){

2435 
u_t32_t
 
t
 = 0;

2436 
o
 = 
lf
->
	`g_gesize
(lf, &
t
);

2437  
t
;

2438 
	}
}

2439 
SWIGINTERN
 
u_t32_t
 
	$Db_g_bt_mkey
(
Db
 *
lf
){

2440 
u_t32_t
 
t
 = 0;

2441 
o
 = 
lf
->
	`g_bt_mkey
(lf, &
t
);

2442  
t
;

2443 
	}
}

2444 
SWIGINTERN
 
u_t32_t
 
	$Db_g_h_f
(
Db
 *
lf
){

2445 
u_t32_t
 
t
 = 0;

2446 
o
 = 
lf
->
	`g_h_f
(lf, &
t
);

2447  
t
;

2448 
	}
}

2449 
SWIGINTERN
 
u_t32_t
 
	$Db_g_h_m
(
Db
 *
lf
){

2450 
u_t32_t
 
t
 = 0;

2451 
o
 = 
lf
->
	`g_h_m
(lf, &
t
);

2452  
t
;

2453 
	}
}

2454 
SWIGINTERN
 
	$Db_g__dim
(
Db
 *
lf
){

2455 
t
 = 0;

2456 
o
 = 
lf
->
	`g__dim
(lf, &
t
);

2457  
t
;

2458 
	}
}

2459 
SWIGINTERN
 
DB_CACHE_PRIORITY
 
	$Db_g_iܙy
(
Db
 *
lf
){

2460 
DB_CACHE_PRIORITY
 
t
;

2461 
o
 = 
lf
->
	`g_iܙy
(lf, &
t
);

2462  
t
;

2463 
	}
}

2464 
SWIGINTERN
 
u_t32_t
 
	$Db_g__n
(
Db
 *
lf
){

2465 
u_t32_t
 
t
 = 0;

2466 
o
 = 
lf
->
	`g__n
(lf, &
t
);

2467  
t
;

2468 
	}
}

2469 
SWIGINTERN
 
	$Db_g__d
(
Db
 *
lf
){

2470 
t
 = 0;

2471 
o
 = 
lf
->
	`g__d
(lf, &
t
);

2472  
t
;

2473 
	}
}

2474 
SWIGINTERN
 cڡ *
	$Db_g__sour
(
Db
 *
lf
){

2475 cڡ *
t
 = 
NULL
;

2476 
o
 = 
lf
->
	`g__sour
(lf, &
t
);

2477  
t
;

2478 
	}
}

2479 
SWIGINTERN
 
u_t32_t
 
	$Db_g_q_exsize
(
Db
 *
lf
){

2480 
u_t32_t
 
t
 = 0;

2481 
o
 = 
lf
->
	`g_q_exsize
(lf, &
t
);

2482  
t
;

2483 
	}
}

2484 
SWIGINTERN
 
t_bo
 
	$Db_g_muɝ
(
Db
 *
lf
){

2485  
lf
->
	`g_muɝ
(self);

2486 
	}
}

2487 
SWIGINTERN
 
t_bo
 
	$Db_g_iڮ
(
Db
 *
lf
){

2488  
lf
->
	`g_iڮ
(self);

2489 
	}
}

2490 
SWIGINTERN
 
DBTYPE
 
	$Db_g_ty
(
Db
 *
lf
){

2491 
DBTYPE
 
ty
 = (DBTYPE)0;

2492 
o
 = 
lf
->
	`g_ty
(lf, &
ty
);

2493  
ty
;

2494 
	}
}

2495 
SWIGINTERN
 
DBC
 *
	$Db_jo
(
Db
 *
lf
,
DBC
 **
curi
,
u_t32_t
 
ags
){

2496 
DBC
 *
db
 = 
NULL
;

2497 
o
 = 
lf
->
	`jo
(lf, 
curi
, &
db
, 
ags
);

2498  
db
;

2499 
	}
}

2500 
SWIGINTERN
 
db_t_t
 
	$Db_key_nge
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
DBT
 *
key
,
DB_KEY_RANGE
 *
key_nge
,
u_t32_t
 
ags
){

2501  
lf
->
	`key_nge
(lf, 
txnid
, 
key
, 
key_nge
, 
ags
);

2502 
	}
}

2503 
SWIGINTERN
 
db_t_t
 
	$Db_ݒ
(
Db
 *
lf
,
DB_TXN
 *
txnid
,cڡ *
fe
,cڡ *
daba
,
DBTYPE
 
ty
,
u_t32_t
 
ags
,
mode
){

2504  
lf
->
	`ݒ
(lf, 
txnid
, 
fe
, 
daba
,

2505 
ty
, 
ags
, 
mode
);

2506 
	}
}

2507 
SWIGINTERN
 
	$Db_pg
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
DBT
 *
key
,DBT *
pkey
,DBT *
da
,
u_t32_t
 
ags
){

2508  
lf
->
	`pg
(lf, 
txnid
, 
key
, 
pkey
, 
da
, 
ags
);

2509 
	}
}

2510 
SWIGINTERN
 
	$Db_put
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
DBT
 *
key
,DBT *
da
,
u_t32_t
 
ags
){

2511  
lf
->
	`put
(lf, 
txnid
, 
key
, 
da
, 
ags
);

2512 
	}
}

2513 
SWIGINTERN
 
db_t_t
 
	$Db_move
(
Db
 *
lf
,cڡ *
fe
,cڡ *
daba
,
u_t32_t
 
ags
){

2514  
lf
->
	`move
(lf, 
fe
, 
daba
, 
ags
);

2515 
	}
}

2516 
SWIGINTERN
 
db_t_t
 
	$Db_me
(
Db
 *
lf
,cڡ *
fe
,cڡ *
daba
,cڡ *
wme
,
u_t32_t
 
ags
){

2517  
lf
->
	`me
(lf, 
fe
, 
daba
, 
wme
, 
ags
);

2518 
	}
}

2519 
SWIGINTERN
 
db_t_t
 
Db_t_nd_o
(
Db
 *
lf
,(*
db_nd_o_f
)(
DB
 *,
DBT
 *,
db_o_t
)){

2520  
lf
->
	`t_nd_o
(lf, 
db_nd_o_f
);

2521 
	}
}

2522 
SWIGINTERN
 
db_t_t
 
Db_t_bt_com
(
Db
 *
lf
,(*
bt_com_f
)(
DB
 *,
DBT
 const *,DBT const *)){

2523  
lf
->
	`t_bt_com
(lf, 
bt_com_f
);

2524 
	}
}

2525 
SWIGINTERN
 
db_t_t
 
	$Db_t_bt_mkey
(
Db
 *
lf
,
u_t32_t
 
bt_mkey
){

2526  
lf
->
	`t_bt_mkey
(lf, 
bt_mkey
);

2527 
	}
}

2528 
SWIGINTERN
 
db_t_t
 
Db_t_bt_efix
(
Db
 *
lf
,
	$size_t
 (*
bt_efix_f
)(
DB
 *,
DBT
 const *,DBT const *)){

2529  
lf
->
	`t_bt_efix
(lf, 
bt_efix_f
);

2530 
	}
}

2531 
SWIGINTERN
 
db_t_t
 
	$Db_t_chesize
(
Db
 *
lf
,
jlg
 
bys
,
nche
){

2532  
lf
->
	`t_chesize
(self,

2533 (
u_t32_t
)(
bys
 / 
GIGABYTE
),

2534 (
u_t32_t
)(
bys
 % 
GIGABYTE
), 
nche
);

2535 
	}
}

2536 
SWIGINTERN
 
db_t_t
 
Db_t_dup_com
(
Db
 *
lf
,(*
dup_com_f
)(
DB
 *,
DBT
 const *,DBT const *)){

2537  
lf
->
	`t_dup_com
(lf, 
dup_com_f
);

2538 
	}
}

2539 
SWIGINTERN
 
db_t_t
 
	$Db_t_y
(
Db
 *
lf
,cڡ *
sswd
,
u_t32_t
 
ags
){

2540  
lf
->
	`t_y
(lf, 
sswd
, 
ags
);

2541 
	}
}

2542 
SWIGINTERN
 
db_t_t
 
Db_t_edback
(
Db
 *
lf
,(*
db_edback_f
)(
DB
 *,,)){

2543  
lf
->
	`t_edback
(lf, 
db_edback_f
);

2544 
	}
}

2545 
SWIGINTERN
 
db_t_t
 
	$Db_t_ags
(
Db
 *
lf
,
u_t32_t
 
ags
){

2546  
lf
->
	`t_ags
(lf, 
ags
);

2547 
	}
}

2548 
SWIGINTERN
 
db_t_t
 
Db_t_h_com
(
Db
 *
lf
,(*
h_com_f
)(
DB
 *,
DBT
 const *,DBT const *)){

2549  
lf
->
	`t_h_com
(lf, 
h_com_f
);

2550 
	}
}

2551 
SWIGINTERN
 
db_t_t
 
	$Db_t_h_f
(
Db
 *
lf
,
u_t32_t
 
h_f
){

2552  
lf
->
	`t_h_f
(lf, 
h_f
);

2553 
	}
}

2554 
SWIGINTERN
 
db_t_t
 
Db_t_h_hash
(
Db
 *
lf
,
	$u_t32_t
 (*
h_hash_f
)(
DB
 *,cڡ *,
u_t32_t
)){

2555  
lf
->
	`t_h_hash
(lf, 
h_hash_f
);

2556 
	}
}

2557 
SWIGINTERN
 
db_t_t
 
	$Db_t_h_m
(
Db
 *
lf
,
u_t32_t
 
h_m
){

2558  
lf
->
	`t_h_m
(lf, 
h_m
);

2559 
	}
}

2560 
SWIGINTERN
 
db_t_t
 
	$Db_t_ld
(
Db
 *
lf
,
ld
){

2561  
lf
->
	`t_ld
(lf, 
ld
);

2562 
	}
}

2563 
SWIGINTERN
 
db_t_t
 
	$Db_t_gesize
(
Db
 *
lf
,
u_t32_t
 
gesize
){

2564  
lf
->
	`t_gesize
(lf, 
gesize
);

2565 
	}
}

2566 
SWIGINTERN
 
db_t_t
 
	$Db_t_iܙy
(
Db
 *
lf
,
DB_CACHE_PRIORITY
 
iܙy
){

2567  
lf
->
	`t_iܙy
(lf, 
iܙy
);

2568 
	}
}

2569 
SWIGINTERN
 
db_t_t
 
	$Db_t__dim
(
Db
 *
lf
,
_dim
){

2570  
lf
->
	`t__dim
(lf, 
_dim
);

2571 
	}
}

2572 
SWIGINTERN
 
db_t_t
 
	$Db_t__n
(
Db
 *
lf
,
u_t32_t
 
_n
){

2573  
lf
->
	`t__n
(lf, 
_n
);

2574 
	}
}

2575 
SWIGINTERN
 
db_t_t
 
	$Db_t__d
(
Db
 *
lf
,
_d
){

2576  
lf
->
	`t__d
(lf, 
_d
);

2577 
	}
}

2578 
SWIGINTERN
 
db_t_t
 
	$Db_t__sour
(
Db
 *
lf
,*
sour
){

2579  
lf
->
	`t__sour
(lf, 
sour
);

2580 
	}
}

2581 
SWIGINTERN
 
db_t_t
 
	$Db_t_q_exsize
(
Db
 *
lf
,
u_t32_t
 
exsize
){

2582  
lf
->
	`t_q_exsize
(lf, 
exsize
);

2583 
	}
}

2584 
SWIGINTERN
 *
	$Db_
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
u_t32_t
 
ags
){

2585 *
p
 = 
NULL
;

2586 
o
 = 
lf
->
	`
(lf, 
txnid
, &
p
, 
ags
);

2587  
p
;

2588 
	}
}

2589 
SWIGINTERN
 
db_t_t
 
	$Db_sync
(
Db
 *
lf
,
u_t32_t
 
ags
){

2590  
lf
->
	`sync
(lf, 
ags
);

2591 
	}
}

2592 
SWIGINTERN
 
	$Db_un
(
Db
 *
lf
,
DB_TXN
 *
txnid
,
u_t32_t
 
ags
){

2593 
u_t32_t
 
cou
 = 0;

2594 
o
 = 
lf
->
	`un
(lf, 
txnid
, &
cou
, 
ags
);

2595  
cou
;

2596 
	}
}

2597 
SWIGINTERN
 
db_t_t
 
	$Db_upgde
(
Db
 *
lf
,cڡ *
fe
,
u_t32_t
 
ags
){

2598  
lf
->
	`upgde
(lf, 
fe
, 
ags
);

2599 
	}
}

2600 
SWIGINTERN
 
t_bo
 
	$Db_vify
(
Db
 *
lf
,cڡ *
fe
,cڡ *
daba
,
__db_out_am
 
outfe
,
u_t32_t
 
ags
){

2605 

__db_vify_
 
	`__P
((
DB
 *, const *, const

2606 *, *, (*)(*, cڡ *), 
u_t32_t
));

2607 
o
 = 
	`__db_vify_
(
lf
, 
fe
, 
daba
,

2608 
outfe
.
hd
, outfe.
back
, 
ags
);

2609 i(
o
 =
DB_VERIFY_BAD
) {

2610 
o
 = 0;

2614 
	}
}

2615 
SWIGINTERN
 
db_t_t
 
	$Dbc_o
(
Dbc
 *
lf
){

2616  
lf
->
	`o
(self);

2617 
	}
}

2618 
SWIGINTERN
 
db_o_t
 
	$Dbc_cou
(
Dbc
 *
lf
,
u_t32_t
 
ags
){

2619 
db_o_t
 
cou
 = 0;

2620 
o
 = 
lf
->
	`cou
(lf, &
cou
, 
ags
);

2621  
cou
;

2622 
	}
}

2623 
SWIGINTERN
 
	$Dbc_d
(
Dbc
 *
lf
,
u_t32_t
 
ags
){

2624  
lf
->
	`d
(lf, 
ags
);

2625 
	}
}

2626 
SWIGINTERN
 
DBC
 *
	$Dbc_dup
(
Dbc
 *
lf
,
u_t32_t
 
ags
){

2627 
DBC
 *
wcurs
 = 
NULL
;

2628 
o
 = 
lf
->
	`dup
(lf, &
wcurs
, 
ags
);

2629  
wcurs
;

2630 
	}
}

2631 
SWIGINTERN
 
	$Dbc_g
(
Dbc
 *
lf
,
DBT
 *
key
,DBT *
da
,
u_t32_t
 
ags
){

2632  
lf
->
	`g
(lf, 
key
, 
da
, 
ags
);

2633 
	}
}

2634 
SWIGINTERN
 
DB_CACHE_PRIORITY
 
	$Dbc_g_iܙy
(
Dbc
 *
lf
){

2635 
DB_CACHE_PRIORITY
 
t
;

2636 
o
 = 
lf
->
	`g_iܙy
(lf, &
t
);

2637  
t
;

2638 
	}
}

2639 
SWIGINTERN
 
	$Dbc_pg
(
Dbc
 *
lf
,
DBT
 *
key
,DBT *
pkey
,DBT *
da
,
u_t32_t
 
ags
){

2640  
lf
->
	`pg
(lf, 
key
, 
pkey
, 
da
, 
ags
);

2641 
	}
}

2642 
SWIGINTERN
 
	$Dbc_put
(
Dbc
 *
lf
,
DBT
 *
key
,DBT *
da
,
u_t32_t
 
ags
){

2643  
lf
->
	`put
(lf, 
key
, 
da
, 
ags
);

2644 
	}
}

2645 
SWIGINTERN
 
db_t_t
 
	$Dbc_t_iܙy
(
Dbc
 *
lf
,
DB_CACHE_PRIORITY
 
iܙy
){

2646  
lf
->
	`t_iܙy
(lf, 
iܙy
);

2647 
	}
}

2648 
SWIGINTERN
 
DbEnv
 *
	$w_DbEnv
(
u_t32_t
 
ags
){

2649 
DB_ENV
 *
lf
 = 
NULL
;

2650 
o
 = 
	`db_v_
(&
lf
, 
ags
);

2651 i(
o
 == 0)

2652 
lf
->
dbt_urcy
 = 
__dbj_dbt_memcy
;

2653  
lf
;

2654 
	}
}

2655 
SWIGINTERN
 
db_t_t
 
	$DbEnv_o
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

2656  
lf
->
	`o
(lf, 
ags
);

2657 
	}
}

2658 
SWIGINTERN
 
db_t_t
 
	$DbEnv_dbmove
(
DbEnv
 *
lf
,
DB_TXN
 *
txnid
,cڡ *
fe
,cڡ *
daba
,
u_t32_t
 
ags
){

2659  
lf
->
	`dbmove
(lf, 
txnid
, 
fe
, 
daba
, 
ags
);

2660 
	}
}

2661 
SWIGINTERN
 
db_t_t
 
	$DbEnv_dbme
(
DbEnv
 *
lf
,
DB_TXN
 *
txnid
,cڡ *
fe
,cڡ *
daba
,cڡ *
wme
,
u_t32_t
 
ags
){

2662  
lf
->
	`dbme
(self,

2663 
txnid
, 
fe
, 
daba
, 
wme
, 
ags
);

2664 
	}
}

2665 
SWIGINTERN
 
	$DbEnv_r
(
DbEnv
 *
lf
,
r
,cڡ *
mesge
){

2666 
lf
->
	`r
(lf, 
r
, 
mesge
);

2667 
	}
}

2668 
SWIGINTERN
 
	$DbEnv_rx
(
DbEnv
 *
lf
,cڡ *
mesge
){

2669 
lf
->
	`rx
(lf, 
mesge
);

2670 
	}
}

2671 
SWIGINTERN
 
DB_TXN
 *
	$DbEnv_cdsgroup_beg
(
DbEnv
 *
lf
){

2672 
DB_TXN
 *
tid
 = 
NULL
;

2673 
o
 = 
lf
->
	`cdsgroup_beg
(lf, &
tid
);

2674  
tid
;

2675 
	}
}

2676 
SWIGINTERN
 
db_t_t
 
	$DbEnv_feid_t
(
DbEnv
 *
lf
,cڡ *
fe
,
u_t32_t
 
ags
){

2677  
lf
->
	`feid_t
(lf, 
fe
, 
ags
);

2678 
	}
}

2679 
SWIGINTERN
 cڡ **
	$DbEnv_g_da_ds
(
DbEnv
 *
lf
){

2680 cڡ **
t
;

2681 
o
 = 
lf
->
	`g_da_ds
(lf, &
t
);

2682  
t
;

2683 
	}
}

2684 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_y_ags
(
DbEnv
 *
lf
){

2685 
u_t32_t
 
t
 = 0;

2686 
	`CRYPTO_ONLY
(
o
 = 
lf
->
	`g_y_ags
(lf, &
t
))

2687  
t
;

2688 
	}
}

2689 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_ags
(
DbEnv
 *
lf
){

2690 
u_t32_t
 
t
;

2691 
o
 = 
lf
->
	`g_ags
(lf, &
t
);

2692  
t
;

2693 
	}
}

2694 
SWIGINTERN
 cڡ *
	$DbEnv_g_home
(
DbEnv
 *
lf
){

2695 cڡ *
t
;

2696 
o
 = 
lf
->
	`g_home
(lf, &
t
);

2697  
t
;

2698 
	}
}

2699 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_ݒ_ags
(
DbEnv
 *
lf
){

2700 
u_t32_t
 
t
;

2701 
o
 = 
lf
->
	`g_ݒ_ags
(lf, &
t
);

2702  
t
;

2703 
	}
}

2704 
SWIGINTERN
 
	$DbEnv_g_shm_key
(
DbEnv
 *
lf
){

2705 
t
;

2706 
o
 = 
lf
->
	`g_shm_key
(lf, &
t
);

2707  
t
;

2708 
	}
}

2709 
SWIGINTERN
 cڡ *
	$DbEnv_g_tmp_d
(
DbEnv
 *
lf
){

2710 cڡ *
t
;

2711 
o
 = 
lf
->
	`g_tmp_d
(lf, &
t
);

2712  
t
;

2713 
	}
}

2714 
SWIGINTERN
 
t_bo
 
	$DbEnv_g_vbo
(
DbEnv
 *
lf
,
u_t32_t
 
which
){

2715 
t
;

2716 
o
 = 
lf
->
	`g_vbo
(lf, 
which
, &
t
);

2717  
t
;

2718 
	}
}

2719 
SWIGINTERN
 
t_bo
 
	$DbEnv_is_bigdn
(
DbEnv
 *
lf
){

2720  
lf
->
	`is_bigdn
();

2721 
	}
}

2722 
SWIGINTERN
 
db_t_t
 
	$DbEnv_l_t
(
DbEnv
 *
lf
,cڡ *
fe
,
u_t32_t
 
ags
){

2723  
lf
->
	`l_t
(lf, 
fe
, 
ags
);

2724 
	}
}

2725 
SWIGINTERN
 
db_t_t
 
	$DbEnv_ݒ
(
DbEnv
 *
lf
,cڡ *
db_home
,
u_t32_t
 
ags
,
mode
){

2726  
lf
->
	`ݒ
(lf, 
db_home
, 
ags
, 
mode
);

2727 
	}
}

2728 
SWIGINTERN
 
db_t_t
 
	$DbEnv_move
(
DbEnv
 *
lf
,cڡ *
db_home
,
u_t32_t
 
ags
){

2729  
lf
->
	`move
(lf, 
db_home
, 
ags
);

2730 
	}
}

2731 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_chesize
(
DbEnv
 *
lf
,
jlg
 
bys
,
nche
){

2732  
lf
->
	`t_chesize
(self,

2733 (
u_t32_t
)(
bys
 / 
GIGABYTE
),

2734 (
u_t32_t
)(
bys
 % 
GIGABYTE
), 
nche
);

2735 
	}
}

2736 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_che_max
(
DbEnv
 *
lf
,
jlg
 
bys
){

2737  
lf
->
	`t_che_max
(self,

2738 (
u_t32_t
)(
bys
 / 
GIGABYTE
),

2739 (
u_t32_t
)(
bys
 % 
GIGABYTE
));

2740 
	}
}

2741 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_da_d
(
DbEnv
 *
lf
,cڡ *
d
){

2742  
lf
->
	`t_da_d
(lf, 
d
);

2743 
	}
}

2744 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_rmed_d
(
DbEnv
 *
lf
,
mode
,
u_t32_t
 
ags
){

2745  
lf
->
	`t_rmed_d
(lf, 
mode
, 
ags
);

2746 
	}
}

2747 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_y
(
DbEnv
 *
lf
,cڡ *
sswd
,
u_t32_t
 
ags
){

2748  
lf
->
	`t_y
(lf, 
sswd
, 
ags
);

2749 
	}
}

2750 
SWIGINTERN
 
DbEnv_t_r
(
DbEnv
 *
lf
,(*
db_r_f
)(
DB_ENV
 const *,const *,const *)){

2751 
lf
->
	`t_r
(lf, 
db_r_f
);

2752 
	}
}

2753 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_ags
(
DbEnv
 *
lf
,
u_t32_t
 
ags
,
t_bo
 
off
){

2754  
lf
->
	`t_ags
(lf, 
ags
, 
off
);

2755 
	}
}

2756 
SWIGINTERN
 
db_t_t
 
DbEnv_t_edback
(
DbEnv
 *
lf
,(*
v_edback_f
)(
DB_ENV
 *,,)){

2757  
lf
->
	`t_edback
(lf, 
v_edback_f
);

2758 
	}
}

2759 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_mp_max_ݒfd
(
DbEnv
 *
lf
,
maxݒfd
){

2760  
lf
->
	`t_mp_max_ݒfd
(lf, 
maxݒfd
);

2761 
	}
}

2762 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_mp_max_wre
(
DbEnv
 *
lf
,
maxwre
,
db_timeout_t
 
maxwre_p
){

2763  
lf
->
	`t_mp_max_wre
(lf, 
maxwre
, 
maxwre_p
);

2764 
	}
}

2765 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_mp_mmsize
(
DbEnv
 *
lf
,
size_t
 
mp_mmsize
){

2766  
lf
->
	`t_mp_mmsize
(lf, 
mp_mmsize
);

2767 
	}
}

2768 
SWIGINTERN
 
DbEnv_t_msg
(
DbEnv
 *
lf
,(*
db_msg_f
)(
DB_ENV
 const *,const *)){

2769 
lf
->
	`t_msg
(lf, 
db_msg_f
);

2770 
	}
}

2771 
SWIGINTERN
 
db_t_t
 
DbEnv_t_nic
(
DbEnv
 *
lf
,(*
db_nic_f
)(
DB_ENV
 *,)){

2772  
lf
->
	`t_nic
(lf, 
db_nic_f
);

2773 
	}
}

2774 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_c_rv
(
DbEnv
 *
lf
,*
ho
,
_timeout
,
sv_timeout
,
u_t32_t
 
ags
){

2775  
lf
->
	`t_c_rv
(lf, 
NULL
, 
ho
,

2776 
_timeout
, 
sv_timeout
, 
ags
);

2777 
	}
}

2778 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_shm_key
(
DbEnv
 *
lf
,
shm_key
){

2779  
lf
->
	`t_shm_key
(lf, 
shm_key
);

2780 
	}
}

2781 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_timeout
(
DbEnv
 *
lf
,
db_timeout_t
 
timeout
,
u_t32_t
 
ags
){

2782  
lf
->
	`t_timeout
(lf, 
timeout
, 
ags
);

2783 
	}
}

2784 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_tmp_d
(
DbEnv
 *
lf
,cڡ *
d
){

2785  
lf
->
	`t_tmp_d
(lf, 
d
);

2786 
	}
}

2787 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_tx_max
(
DbEnv
 *
lf
,
u_t32_t
 
max
){

2788  
lf
->
	`t_tx_max
(lf, 
max
);

2789 
	}
}

2790 
SWIGINTERN
 
db_t_t
 
DbEnv_t_p_dich
(
DbEnv
 *
lf
,(*
tx_cov
)(
DB_ENV
 *,
DBT
 *,
DB_LSN
 *,
db_cs
)){

2791  
lf
->
	`t_p_dich
(lf, 
tx_cov
);

2792 
	}
}

2793 
SWIGINTERN
 
db_t_t
 
DbEnv_t_evt_nify
(
DbEnv
 *
lf
,(*
evt_nify
)(
DB_ENV
 *,
u_t32_t
,*)){

2794  
lf
->
	`t_evt_nify
(lf, 
evt_nify
);

2795 
	}
}

2796 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_tx_timeamp
(
DbEnv
 *
lf
,
time_t
 *
timeamp
){

2797  
lf
->
	`t_tx_timeamp
(lf, 
timeamp
);

2798 
	}
}

2799 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_vbo
(
DbEnv
 *
lf
,
u_t32_t
 
which
,
t_bo
 
off
){

2800  
lf
->
	`t_vbo
(lf, 
which
, 
off
);

2801 
	}
}

2802 
SWIGINTERN
 
__db_lk_cis
 
	$DbEnv_g_lk_cis
(
DbEnv
 *
lf
){

2803 
__db_lk_cis
 
t
;

2804 
o
 = 
lf
->
	`g_lk_cis
(self,

2805 (cڡ 
u_t8_t
 **)&
t
.
lk_cis
, &t.
lk_modes
);

2806  
t
;

2807 
	}
}

2808 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_lk_de
(
DbEnv
 *
lf
){

2809 
u_t32_t
 
t
;

2810 
o
 = 
lf
->
	`g_lk_de
(lf, &
t
);

2811  
t
;

2812 
	}
}

2813 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_lk_max_locks
(
DbEnv
 *
lf
){

2814 
u_t32_t
 
t
;

2815 
o
 = 
lf
->
	`g_lk_max_locks
(lf, &
t
);

2816  
t
;

2817 
	}
}

2818 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_lk_max_locks
(
DbEnv
 *
lf
){

2819 
u_t32_t
 
t
;

2820 
o
 = 
lf
->
	`g_lk_max_locks
(lf, &
t
);

2821  
t
;

2822 
	}
}

2823 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_lk_max_objes
(
DbEnv
 *
lf
){

2824 
u_t32_t
 
t
;

2825 
o
 = 
lf
->
	`g_lk_max_objes
(lf, &
t
);

2826  
t
;

2827 
	}
}

2828 
SWIGINTERN
 
	$DbEnv_lock_de
(
DbEnv
 *
lf
,
u_t32_t
 
ags
,u_t32_
y
){

2829 
ab܋d
;

2830 
o
 = 
lf
->
	`lock_de
(lf, 
ags
, 
y
, &
ab܋d
);

2831  
ab܋d
;

2832 
	}
}

2833 
SWIGINTERN
 
DB_LOCK
 *
	$DbEnv_lock_g
(
DbEnv
 *
lf
,
u_t32_t
 
lock
,u_t32_
ags
,
DBT
 cڡ *
obje
,
db_lockmode_t
 
lock_mode
){

2834 
DB_LOCK
 *
lock
 = 
NULL
;

2835 i((
o
 = 
	`__os_mloc
(
lf
,  (
DB_LOCK
), &
lock
)) == 0)

2836 
o
 = 
lf
->
	`lock_g
(lf, 
lock
, 
ags
, 
obje
,

2837 
lock_mode
, 
lock
);

2838  
lock
;

2839 
	}
}

2840 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_lock_id
(
DbEnv
 *
lf
){

2841 
u_t32_t
 
id
;

2842 
o
 = 
lf
->
	`lock_id
(lf, &
id
);

2843  
id
;

2844 
	}
}

2845 
SWIGINTERN
 
db_t_t
 
	$DbEnv_lock_id_
(
DbEnv
 *
lf
,
u_t32_t
 
id
){

2846  
lf
->
	`lock_id_
(lf, 
id
);

2847 
	}
}

2848 
SWIGINTERN
 
db_t_t
 
	$DbEnv_lock_put
(
DbEnv
 *
lf
,
DB_LOCK
 *
lock
){

2849  
lf
->
	`lock_put
(lf, 
lock
);

2850 
	}
}

2851 
SWIGINTERN
 
DB_LOCK_STAT
 *
	$DbEnv_lock_
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

2852 
DB_LOCK_STAT
 *
p
 = 
NULL
;

2853 
o
 = 
lf
->
	`lock_
(lf, &
p
, 
ags
);

2854  
p
;

2855 
	}
}

2856 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lk_cis
(
DbEnv
 *
lf
,
__db_lk_cis
 
cis
){

2857  
lf
->
	`t_lk_cis
(self,

2858 
cis
.
lk_cis
, cis.
lk_modes
);

2859 
	}
}

2860 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lk_de
(
DbEnv
 *
lf
,
u_t32_t
 
de
){

2861  
lf
->
	`t_lk_de
(lf, 
de
);

2862 
	}
}

2863 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lk_max_locks
(
DbEnv
 *
lf
,
u_t32_t
 
max
){

2864  
lf
->
	`t_lk_max_locks
(lf, 
max
);

2865 
	}
}

2866 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lk_max_locks
(
DbEnv
 *
lf
,
u_t32_t
 
max
){

2867  
lf
->
	`t_lk_max_locks
(lf, 
max
);

2868 
	}
}

2869 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lk_max_objes
(
DbEnv
 *
lf
,
u_t32_t
 
max
){

2870  
lf
->
	`t_lk_max_objes
(lf, 
max
);

2871 
	}
}

2872 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_lg_bsize
(
DbEnv
 *
lf
){

2873 
u_t32_t
 
t
;

2874 
o
 = 
lf
->
	`g_lg_bsize
(lf, &
t
);

2875  
t
;

2876 
	}
}

2877 
SWIGINTERN
 cڡ *
	$DbEnv_g_lg_d
(
DbEnv
 *
lf
){

2878 cڡ *
t
;

2879 
o
 = 
lf
->
	`g_lg_d
(lf, &
t
);

2880  
t
;

2881 
	}
}

2882 
SWIGINTERN
 
	$DbEnv_g_lg_femode
(
DbEnv
 *
lf
){

2883 
t
;

2884 
o
 = 
lf
->
	`g_lg_femode
(lf, &
t
);

2885  
t
;

2886 
	}
}

2887 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_lg_max
(
DbEnv
 *
lf
){

2888 
u_t32_t
 
t
;

2889 
o
 = 
lf
->
	`g_lg_max
(lf, &
t
);

2890  
t
;

2891 
	}
}

2892 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_lg_gimax
(
DbEnv
 *
lf
){

2893 
u_t32_t
 
t
;

2894 
o
 = 
lf
->
	`g_lg_gimax
(lf, &
t
);

2895  
t
;

2896 
	}
}

2897 
SWIGINTERN
 **
	$DbEnv_log_chive
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

2898 **
li
 = 
NULL
;

2899 
o
 = 
lf
->
	`log_chive
(lf, &
li
, 
ags
);

2900  
li
;

2901 
	}
}

2902 
SWIGINTERN
 
	$DbEnv_log_com
(
DB_LSN
 cڡ *
l0
,DB_LSN cڡ *
l1
){

2903  
	`log_com
(
l0
, 
l1
);

2904 
	}
}

2905 
SWIGINTERN
 
DB_LOGC
 *
	$DbEnv_log_curs
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

2906 
DB_LOGC
 *
curs
 = 
NULL
;

2907 
o
 = 
lf
->
	`log_curs
(lf, &
curs
, 
ags
);

2908  
curs
;

2909 
	}
}

2910 
SWIGINTERN
 *
	$DbEnv_log_fe
(
DbEnv
 *
lf
,
DB_LSN
 *
l
){

2911 
mebuf
[
DB_MAXPATHLEN
];

2912 
o
 = 
lf
->
	`log_fe
(lf, 
l
, 
mebuf
, amebuf);

2913  (
o
 =0? 
	`rdup
(
mebuf
: 
NULL
;

2914 
	}
}

2915 
SWIGINTERN
 
db_t_t
 
	$DbEnv_log_ush
(
DbEnv
 *
lf
,
DB_LSN
 cڡ *
l__nu
){

2916  
lf
->
	`log_ush
(lf, 
l__nu
);

2917 
	}
}

2918 
SWIGINTERN
 
db_t_t
 
	$DbEnv_log_put
(
DbEnv
 *
lf
,
DB_LSN
 *
l
,
DBT
 cڡ *
da
,
u_t32_t
 
ags
){

2919  
lf
->
	`log_put
(lf, 
l
, 
da
, 
ags
);

2920 
	}
}

2921 
SWIGINTERN
 
db_t_t
 
	$DbEnv_log_t
(
DbEnv
 *
lf
,
DB_TXN
 *
txn
,cڡ *
msg
){

2922  
lf
->
	`log_tf
(lf, 
txn
, "%s", 
msg
);

2923 
	}
}

2924 
SWIGINTERN
 
DB_LOG_STAT
 *
	$DbEnv_log_
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

2925 
DB_LOG_STAT
 *

 = 
NULL
;

2926 
o
 = 
lf
->
	`log_
(lf, &

, 
ags
);

2927  

;

2928 
	}
}

2929 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lg_bsize
(
DbEnv
 *
lf
,
u_t32_t
 
lg_bsize
){

2930  
lf
->
	`t_lg_bsize
(lf, 
lg_bsize
);

2931 
	}
}

2932 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lg_d
(
DbEnv
 *
lf
,cڡ *
d
){

2933  
lf
->
	`t_lg_d
(lf, 
d
);

2934 
	}
}

2935 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lg_femode
(
DbEnv
 *
lf
,
mode
){

2936  
lf
->
	`t_lg_femode
(lf, 
mode
);

2937 
	}
}

2938 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lg_max
(
DbEnv
 *
lf
,
u_t32_t
 
lg_max
){

2939  
lf
->
	`t_lg_max
(lf, 
lg_max
);

2940 
	}
}

2941 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_lg_gimax
(
DbEnv
 *
lf
,
u_t32_t
 
lg_gimax
){

2942  
lf
->
	`t_lg_gimax
(lf, 
lg_gimax
);

2943 
	}
}

2944 
SWIGINTERN
 
jlg
 
	$DbEnv_g_chesize
(
DbEnv
 *
lf
){

2945 
u_t32_t
 
gbys
, 
bys
;

2946 
o
 = 
lf
->
	`g_chesize
(lf, &
gbys
, &
bys
, 
NULL
);

2947  (
jlg
)
gbys
 * 
GIGABYTE
 + 
bys
;

2948 
	}
}

2949 
SWIGINTERN
 
	$DbEnv_g_chesize_nche
(
DbEnv
 *
lf
){

2950 
t
;

2951 
o
 = 
lf
->
	`g_chesize
(lf, 
NULL
, NULL, &
t
);

2952  
t
;

2953 
	}
}

2954 
SWIGINTERN
 
jlg
 
	$DbEnv_g_che_max
(
DbEnv
 *
lf
){

2955 
u_t32_t
 
gbys
, 
bys
;

2956 
o
 = 
lf
->
	`g_che_max
(lf, &
gbys
, &
bys
);

2957  (
jlg
)
gbys
 * 
GIGABYTE
 + 
bys
;

2958 
	}
}

2959 
SWIGINTERN
 
	$DbEnv_g_mp_max_ݒfd
(
DbEnv
 *
lf
){

2960 
t
;

2961 
o
 = 
lf
->
	`g_mp_max_ݒfd
(lf, &
t
);

2962  
t
;

2963 
	}
}

2964 
SWIGINTERN
 
	$DbEnv_g_mp_max_wre
(
DbEnv
 *
lf
){

2965 
maxwre
;

2966 
db_timeout_t
 
p
;

2967 
o
 = 
lf
->
	`g_mp_max_wre
(lf, &
maxwre
, &
p
);

2968  
maxwre
;

2969 
	}
}

2970 
SWIGINTERN
 
db_timeout_t
 
	$DbEnv_g_mp_max_wre_p
(
DbEnv
 *
lf
){

2971 
maxwre
;

2972 
db_timeout_t
 
p
;

2973 
o
 = 
lf
->
	`g_mp_max_wre
(lf, &
maxwre
, &
p
);

2974  
p
;

2975 
	}
}

2976 
SWIGINTERN
 
size_t
 
	$DbEnv_g_mp_mmsize
(
DbEnv
 *
lf
){

2977 
size_t
 
t
;

2978 
o
 = 
lf
->
	`g_mp_mmsize
(lf, &
t
);

2979  
t
;

2980 
	}
}

2981 
SWIGINTERN
 
DB_MPOOL_STAT
 *
	$DbEnv_memp_
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

2982 
DB_MPOOL_STAT
 *
mp_
 = 
NULL
;

2983 
o
 = 
lf
->
	`memp_
(lf, &
mp_
, 
NULL
, 
ags
);

2984  
mp_
;

2985 
	}
}

2986 
SWIGINTERN
 
DB_MPOOL_FSTAT
 **
	$DbEnv_memp_f
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

2987 
DB_MPOOL_FSTAT
 **
mp_f
 = 
NULL
;

2988 
o
 = 
lf
->
	`memp_
(lf, 
NULL
, &
mp_f
, 
ags
);

2989  
mp_f
;

2990 
	}
}

2991 
SWIGINTERN
 
	$DbEnv_memp_ick
(
DbEnv
 *
lf
,
r
){

2992 
t
;

2993 
o
 = 
lf
->
	`memp_ick
(lf, 
r
, &
t
);

2994  
t
;

2995 
	}
}

2996 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_mux_g_ign
(
DbEnv
 *
lf
){

2997 
u_t32_t
 
t
;

2998 
o
 = 
lf
->
	`mux_g_ign
(lf, &
t
);

2999  
t
;

3000 
	}
}

3001 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_mux_g_emt
(
DbEnv
 *
lf
){

3002 
u_t32_t
 
t
;

3003 
o
 = 
lf
->
	`mux_g_emt
(lf, &
t
);

3004  
t
;

3005 
	}
}

3006 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_mux_g_max
(
DbEnv
 *
lf
){

3007 
u_t32_t
 
t
;

3008 
o
 = 
lf
->
	`mux_g_max
(lf, &
t
);

3009  
t
;

3010 
	}
}

3011 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_mux_g_s_s
(
DbEnv
 *
lf
){

3012 
u_t32_t
 
t
;

3013 
o
 = 
lf
->
	`mux_g_s_s
(lf, &
t
);

3014  
t
;

3015 
	}
}

3016 
SWIGINTERN
 
db_t_t
 
	$DbEnv_mux_t_ign
(
DbEnv
 *
lf
,
u_t32_t
 
ign
){

3017  
lf
->
	`mux_t_ign
(lf, 
ign
);

3018 
	}
}

3019 
SWIGINTERN
 
db_t_t
 
	$DbEnv_mux_t_emt
(
DbEnv
 *
lf
,
u_t32_t
 
emt
){

3020  
lf
->
	`mux_t_emt
(lf, 
emt
);

3021 
	}
}

3022 
SWIGINTERN
 
db_t_t
 
	$DbEnv_mux_t_max
(
DbEnv
 *
lf
,
u_t32_t
 
mux_max
){

3023  
lf
->
	`mux_t_emt
(lf, 
mux_max
);

3024 
	}
}

3025 
SWIGINTERN
 
db_t_t
 
	$DbEnv_mux_t_s_s
(
DbEnv
 *
lf
,
u_t32_t
 
s_s
){

3026  
lf
->
	`mux_t_s_s
(lf, 
s_s
);

3027 
	}
}

3028 
SWIGINTERN
 
DB_MUTEX_STAT
 *
	$DbEnv_mux_
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

3029 
DB_MUTEX_STAT
 *
p
 = 
NULL
;

3030 
o
 = 
lf
->
	`mux_
(lf, &
p
, 
ags
);

3031  
p
;

3032 
	}
}

3033 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_g_tx_max
(
DbEnv
 *
lf
){

3034 
u_t32_t
 
t
;

3035 
o
 = 
lf
->
	`g_tx_max
(lf, &
t
);

3036  
t
;

3037 
	}
}

3038 
SWIGINTERN
 
time_t
 
	$DbEnv_g_tx_timeamp
(
DbEnv
 *
lf
){

3039 
time_t
 
t
;

3040 
o
 = 
lf
->
	`g_tx_timeamp
(lf, &
t
);

3041  
t
;

3042 
	}
}

3043 
SWIGINTERN
 
db_timeout_t
 
	$DbEnv_g_timeout
(
DbEnv
 *
lf
,
u_t32_t
 
ag
){

3044 
db_timeout_t
 
t
;

3045 
o
 = 
lf
->
	`g_timeout
(lf, &
t
, 
ag
);

3046  
t
;

3047 
	}
}

3048 
SWIGINTERN
 
DB_TXN
 *
	$DbEnv_txn_beg
(
DbEnv
 *
lf
,
DB_TXN
 *

,
u_t32_t
 
ags
){

3049 
DB_TXN
 *
tid
 = 
NULL
;

3050 
o
 = 
lf
->
	`txn_beg
(lf, 

, &
tid
, 
ags
);

3051  
tid
;

3052 
	}
}

3053 
SWIGINTERN
 
db_t_t
 
	$DbEnv_txn_checkpot
(
DbEnv
 *
lf
,
u_t32_t
 
kby
,u_t32_
m
,u_t32_
ags
){

3054  
lf
->
	`txn_checkpot
(lf, 
kby
, 
m
, 
ags
);

3055 
	}
}

3056 
SWIGINTERN
 
DB_PREPLIST
 *
	$DbEnv_txn_cov
(
DbEnv
 *
lf
,
cou
,
u_t32_t
 
ags
){

3057 
DB_PREPLIST
 *
li
;

3058 
tcou
;

3061 i((
o
 = 
	`__os_mloc
(
lf
,

3062 (
cou
 + 1* (
DB_PREPLIST
), &
li
)) != 0)

3063  
NULL
;

3065 i((
o
 = 
lf
->
	`txn_cov
(lf, 
li
, 
cou
,

3066 &
tcou
, 
ags
)) != 0) {

3067 
	`__os_
(
lf
, 
li
);

3068  
NULL
;

3071 
li
[
tcou
].
txn
 = 
NULL
;

3072  
li
;

3073 
	}
}

3074 
SWIGINTERN
 
DB_TXN_STAT
 *
	$DbEnv_txn_
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

3075 
DB_TXN_STAT
 *
p
 = 
NULL
;

3076 
o
 = 
lf
->
	`txn_
(lf, &
p
, 
ags
);

3077  
p
;

3078 
	}
}

3079 
SWIGINTERN
 
jlg
 
	$DbEnv_p_g_lim
(
DbEnv
 *
lf
){

3080 
u_t32_t
 
gbys
, 
bys
;

3081 
o
 = 
lf
->
	`p_g_lim
(lf, &
gbys
, &
bys
);

3082  (
jlg
)
gbys
 * 
GIGABYTE
 + 
bys
;

3083 
	}
}

3084 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_e
(
DbEnv
 *
lf
,
nses
,
nves
,
u_t32_t
 
ags
){

3085  
lf
->
	`p_e
(lf, 
nses
, 
nves
, 
ags
);

3086 
	}
}

3087 
SWIGINTERN
 
	$DbEnv_p_oss_mesge
(
DbEnv
 *
lf
,
DBT
 *
cڌ
,DBT *
c
,
vid
,
DB_LSN
 *
t_l
){

3088  
lf
->
	`p_oss_mesge
(lf, 
cڌ
, 
c
, 
vid
,

3089 
t_l
);

3090 
	}
}

3091 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_ush
(
DbEnv
 *
lf
){

3092  
lf
->
	`p_ush
(self);

3093 
	}
}

3094 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_t_cfig
(
DbEnv
 *
lf
,
u_t32_t
 
which
,
t_bo
 
off
){

3095  
lf
->
	`p_t_cfig
(lf, 
which
, 
off
);

3096 
	}
}

3097 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_t_a
(
DbEnv
 *
lf
,
u_t32_t
 
ock_s_
,u_t32_
ags
){

3098  
lf
->
	`p_t_a
(lf, 
ock_s_
, 
ags
);

3099 
	}
}

3100 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_t
(
DbEnv
 *
lf
,
DBT
 *
cda
,
u_t32_t
 
ags
){

3101  
lf
->
	`p_t
(lf, 
cda
, 
ags
);

3102 
	}
}

3103 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_sync
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

3104  
lf
->
	`p_sync
(lf, 
ags
);

3105 
	}
}

3106 
SWIGINTERN
 
t_bo
 
	$DbEnv_p_g_cfig
(
DbEnv
 *
lf
,
u_t32_t
 
which
){

3107 
t
;

3108 
o
 = 
lf
->
	`p_g_cfig
(lf, 
which
, &
t
);

3109  
t
;

3110 
	}
}

3111 
SWIGINTERN
 
DB_REP_STAT
 *
	$DbEnv_p_
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

3112 
DB_REP_STAT
 *
p
 = 
NULL
;

3113 
o
 = 
lf
->
	`p_
(lf, &
p
, 
ags
);

3114  
p
;

3115 
	}
}

3116 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_t_lim
(
DbEnv
 *
lf
,
jlg
 
bys
){

3117  
lf
->
	`p_t_lim
(self,

3118 (
u_t32_t
)(
bys
 / 
GIGABYTE
),

3119 (
u_t32_t
)(
bys
 % 
GIGABYTE
));

3120 
	}
}

3121 
SWIGINTERN
 
db_t_t
 
	$DbEnv_t_p_que
(
DbEnv
 *
lf
,
u_t32_t
 
m
,u_t32_
max
){

3122  
lf
->
	`t_p_que
(lf, 
m
, 
max
);

3123 
	}
}

3124 
SWIGINTERN
 
db_t_t
 
DbEnv_p_t_t
(
DbEnv
 *
lf
,
vid
,(*
nd
)(
DB_ENV
 *,
DBT
 cڡ *,DBT cڡ *,
DB_LSN
 cڡ *,,
u_t32_t
)){

3125  
lf
->
	`p_t_t
(lf, 
vid
, 
nd
);

3126 
	}
}

3127 
SWIGINTERN
 
	$DbEnv_p_g_nses
(
DbEnv
 *
lf
){

3128 
t
;

3129 
o
 = 
lf
->
	`p_g_nses
(lf, &
t
);

3130  
t
;

3131 
	}
}

3132 
SWIGINTERN
 
	$DbEnv_p_g_iܙy
(
DbEnv
 *
lf
){

3133 
t
;

3134 
o
 = 
lf
->
	`p_g_iܙy
(lf, &
t
);

3135  
t
;

3136 
	}
}

3137 
SWIGINTERN
 
u_t32_t
 
	$DbEnv_p_g_timeout
(
DbEnv
 *
lf
,
which
){

3138 
u_t32_t
 
t
;

3139 
o
 = 
lf
->
	`p_g_timeout
(lf, 
which
, &
t
);

3140  
t
;

3141 
	}
}

3142 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_t_nses
(
DbEnv
 *
lf
,
numb
){

3143  
lf
->
	`p_t_nses
(lf, 
numb
);

3144 
	}
}

3145 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_t_iܙy
(
DbEnv
 *
lf
,
iܙy
){

3146  
lf
->
	`p_t_iܙy
(lf, 
iܙy
);

3147 
	}
}

3148 
SWIGINTERN
 
db_t_t
 
	$DbEnv_p_t_timeout
(
DbEnv
 *
lf
,
which
,
db_timeout_t
 
timeout
){

3149  
lf
->
	`p_t_timeout
(lf, 
which
, 
timeout
);

3150 
	}
}

3151 
SWIGINTERN
 
	$DbEnv_pmgr_add_me_se
(
DbEnv
 *
lf
,cڡ *
ho
,
u_t32_t
 
pt
,u_t32_
ags
){

3152 
eid
;

3153 
o
 = 
lf
->
	`pmgr_add_me_se
(lf, 
ho
, 
pt
, &
eid
, 
ags
);

3154  
eid
;

3155 
	}
}

3156 
SWIGINTERN
 
db_t_t
 
	$DbEnv_pmgr_g_ack_picy
(
DbEnv
 *
lf
){

3157 
t
;

3158 
o
 = 
lf
->
	`pmgr_g_ack_picy
(lf, &
t
);

3159  
t
;

3160 
	}
}

3161 
SWIGINTERN
 
db_t_t
 
	$DbEnv_pmgr_t_ack_picy
(
DbEnv
 *
lf
,
picy
){

3162  
lf
->
	`pmgr_t_ack_picy
(lf, 
picy
);

3163 
	}
}

3164 
SWIGINTERN
 
db_t_t
 
	$DbEnv_pmgr_t_lol_se
(
DbEnv
 *
lf
,cڡ *
ho
,
u_t32_t
 
pt
,u_t32_
ags
){

3165  
lf
->
	`pmgr_t_lol_se
(lf, 
ho
, 
pt
, 
ags
);

3166 
	}
}

3167 
SWIGINTERN
 
__db_pmgr_ses
 
	$DbEnv_pmgr_se_li
(
DbEnv
 *
lf
){

3168 
__db_pmgr_ses
 
ses
;

3169 
o
 = 
lf
->
	`pmgr_se_li
(self,

3170 &
ses
.
nses
, &sites.sites);

3171  
ses
;

3172 
	}
}

3173 
SWIGINTERN
 
db_t_t
 
	$DbEnv_pmgr_t
(
DbEnv
 *
lf
,
hads
,
u_t32_t
 
ags
){

3174  
lf
->
	`pmgr_t
(lf, 
hads
, 
ags
);

3175 
	}
}

3176 
SWIGINTERN
 
DB_REPMGR_STAT
 *
	$DbEnv_pmgr_
(
DbEnv
 *
lf
,
u_t32_t
 
ags
){

3177 
DB_REPMGR_STAT
 *
p
 = 
NULL
;

3178 
o
 = 
lf
->
	`pmgr_
(lf, &
p
, 
ags
);

3179  
p
;

3180 
	}
}

3181 
SWIGINTERN
 cڡ *
	$DbEnv_
(
r
){

3182  
	`db_
(
r
);

3183 
	}
}

3184 
SWIGINTERN
 
	$DbEnv_g_vsi_maj
(){

3185  
DB_VERSION_MAJOR
;

3186 
	}
}

3187 
SWIGINTERN
 
	$DbEnv_g_vsi_m
(){

3188  
DB_VERSION_MINOR
;

3189 
	}
}

3190 
SWIGINTERN
 
	$DbEnv_g_vsi_tch
(){

3191  
DB_VERSION_PATCH
;

3192 
	}
}

3193 
SWIGINTERN
 cڡ *
	$DbEnv_g_vsi_rg
(){

3194  
DB_VERSION_STRING
;

3195 
	}
}

3196 
SWIGINTERN
 
	$de_DbLock
(
DbLock
 *
lf
){

3197 
	`__os_
(
NULL
, 
lf
);

3198 
	}
}

3199 
SWIGINTERN
 
db_t_t
 
	$DbLogc_o
(
DbLogc
 *
lf
,
u_t32_t
 
ags
){

3200  
lf
->
	`o
(lf, 
ags
);

3201 
	}
}

3202 
SWIGINTERN
 
	$DbLogc_g
(
DbLogc
 *
lf
,
DB_LSN
 *
l
,
DBT
 *
da
,
u_t32_t
 
ags
){

3203  
lf
->
	`g
(lf, 
l
, 
da
, 
ags
);

3204 
	}
}

3205 
SWIGINTERN
 
u_t32_t
 
	$DbLogc_vsi
(
DbLogc
 *
lf
,
u_t32_t
 
ags
){

3206 
u_t32_t
 
su
;

3207 
o
 = 
lf
->
	`vsi
(lf, &
su
, 
ags
);

3208  
su
;

3209 
	}
}

3210 
SWIGINTERN
 
DB_CACHE_PRIORITY
 
	$DbMpoFe_g_iܙy
(
DbMpoFe
 *
lf
){

3211 
DB_CACHE_PRIORITY
 
t
;

3212 
o
 = 
lf
->
	`g_iܙy
(lf, &
t
);

3213  
t
;

3214 
	}
}

3215 
SWIGINTERN
 
db_t_t
 
	$DbMpoFe_t_iܙy
(
DbMpoFe
 *
lf
,
DB_CACHE_PRIORITY
 
iܙy
){

3216  
lf
->
	`t_iܙy
(lf, 
iܙy
);

3217 
	}
}

3218 
SWIGINTERN
 
u_t32_t
 
	$DbMpoFe_g_ags
(
DbMpoFe
 *
lf
){

3219 
u_t32_t
 
t
;

3220 
o
 = 
lf
->
	`g_ags
(lf, &
t
);

3221  
t
;

3222 
	}
}

3223 
SWIGINTERN
 
db_t_t
 
	$DbMpoFe_t_ags
(
DbMpoFe
 *
lf
,
u_t32_t
 
ags
,
t_bo
 
off
){

3224  
lf
->
	`t_ags
(lf, 
ags
, 
off
);

3225 
	}
}

3226 
SWIGINTERN
 
jlg
 
	$DbMpoFe_g_maxsize
(
DbMpoFe
 *
lf
){

3227 
u_t32_t
 
gbys
, 
bys
;

3228 
o
 = 
lf
->
	`g_maxsize
(lf, &
gbys
, &
bys
);

3229  (
jlg
)
gbys
 * 
GIGABYTE
 + 
bys
;

3230 
	}
}

3231 
SWIGINTERN
 
db_t_t
 
	$DbMpoFe_t_maxsize
(
DbMpoFe
 *
lf
,
jlg
 
bys
){

3232  
lf
->
	`t_maxsize
(self,

3233 (
u_t32_t
)(
bys
 / 
GIGABYTE
),

3234 (
u_t32_t
)(
bys
 % 
GIGABYTE
));

3235 
	}
}

3236 
SWIGINTERN
 
DbSequ
 *
	$w_DbSequ
(
DB
 *
db
,
u_t32_t
 
ags
){

3237 
DB_SEQUENCE
 *
lf
 = 
NULL
;

3238 
o
 = 
	`db_qu_
(&
lf
, 
db
, 
ags
);

3239  
lf
;

3240 
	}
}

3241 
SWIGINTERN
 
db_t_t
 
	$DbSequ_o
(
DbSequ
 *
lf
,
u_t32_t
 
ags
){

3242  
lf
->
	`o
(lf, 
ags
);

3243 
	}
}

3244 
SWIGINTERN
 
db_q_t
 
	$DbSequ_g
(
DbSequ
 *
lf
,
DB_TXN
 *
txnid
,
t32_t
 
d
,
u_t32_t
 
ags
){

3245 
db_q_t
 
t
 = 0;

3246 
o
 = 
lf
->
	`g
(lf, 
txnid
, 
d
, &
t
, 
ags
);

3247  
t
;

3248 
	}
}

3249 
SWIGINTERN
 
t32_t
 
	$DbSequ_g_chesize
(
DbSequ
 *
lf
){

3250 
t32_t
 
t
 = 0;

3251 
o
 = 
lf
->
	`g_chesize
(lf, &
t
);

3252  
t
;

3253 
	}
}

3254 
SWIGINTERN
 
DB
 *
	$DbSequ_g_db
(
DbSequ
 *
lf
){

3255 
DB
 *
t
 = 
NULL
;

3256 
o
 = 
lf
->
	`g_db
(lf, &
t
);

3257  
t
;

3258 
	}
}

3259 
SWIGINTERN
 
u_t32_t
 
	$DbSequ_g_ags
(
DbSequ
 *
lf
){

3260 
u_t32_t
 
t
 = 0;

3261 
o
 = 
lf
->
	`g_ags
(lf, &
t
);

3262  
t
;

3263 
	}
}

3264 
SWIGINTERN
 
db_t_t
 
	$DbSequ_g_key
(
DbSequ
 *
lf
,
DBT
 *
key
){

3265  
lf
->
	`g_key
(lf, 
key
);

3266 
	}
}

3267 
SWIGINTERN
 
db_q_t
 
	$DbSequ_g_nge_m
(
DbSequ
 *
lf
){

3268 
db_q_t
 
t
 = 0;

3269 
o
 = 
lf
->
	`g_nge
(lf, &
t
, 
NULL
);

3270  
t
;

3271 
	}
}

3272 
SWIGINTERN
 
db_q_t
 
	$DbSequ_g_nge_max
(
DbSequ
 *
lf
){

3273 
db_q_t
 
t
 = 0;

3274 
o
 = 
lf
->
	`g_nge
(lf, 
NULL
, &
t
);

3275  
t
;

3276 
	}
}

3277 
SWIGINTERN
 
db_t_t
 
	$DbSequ_l_vue
(
DbSequ
 *
lf
,
db_q_t
 
v
){

3278  
lf
->
	`l_vue
(lf, 
v
);

3279 
	}
}

3280 
SWIGINTERN
 
db_t_t
 
	$DbSequ_ݒ
(
DbSequ
 *
lf
,
DB_TXN
 *
txnid
,
DBT
 *
key
,
u_t32_t
 
ags
){

3281  
lf
->
	`ݒ
(lf, 
txnid
, 
key
, 
ags
);

3282 
	}
}

3283 
SWIGINTERN
 
db_t_t
 
	$DbSequ_move
(
DbSequ
 *
lf
,
DB_TXN
 *
txnid
,
u_t32_t
 
ags
){

3284  
lf
->
	`move
(lf, 
txnid
, 
ags
);

3285 
	}
}

3286 
SWIGINTERN
 
db_t_t
 
	$DbSequ_t_chesize
(
DbSequ
 *
lf
,
t32_t
 
size
){

3287  
lf
->
	`t_chesize
(lf, 
size
);

3288 
	}
}

3289 
SWIGINTERN
 
db_t_t
 
	$DbSequ_t_ags
(
DbSequ
 *
lf
,
u_t32_t
 
ags
){

3290  
lf
->
	`t_ags
(lf, 
ags
);

3291 
	}
}

3292 
SWIGINTERN
 
db_t_t
 
	$DbSequ_t_nge
(
DbSequ
 *
lf
,
db_q_t
 
m
,db_q_
max
){

3293  
lf
->
	`t_nge
(lf, 
m
, 
max
);

3294 
	}
}

3295 
SWIGINTERN
 
DB_SEQUENCE_STAT
 *
	$DbSequ_
(
DbSequ
 *
lf
,
u_t32_t
 
ags
){

3296 
DB_SEQUENCE_STAT
 *
t
 = 
NULL
;

3297 
o
 = 
lf
->
	`
(lf, &
t
, 
ags
);

3298  
t
;

3299 
	}
}

3300 
SWIGINTERN
 
db_t_t
 
	$DbTxn_abt
(
DbTxn
 *
lf
){

3301  
lf
->
	`abt
(self);

3302 
	}
}

3303 
SWIGINTERN
 
db_t_t
 
	$DbTxn_comm
(
DbTxn
 *
lf
,
u_t32_t
 
ags
){

3304  
lf
->
	`comm
(lf, 
ags
);

3305 
	}
}

3306 
SWIGINTERN
 
db_t_t
 
	$DbTxn_disrd
(
DbTxn
 *
lf
,
u_t32_t
 
ags
){

3307  
lf
->
	`disrd
(lf, 
ags
);

3308 
	}
}

3309 
SWIGINTERN
 cڡ *
	$DbTxn_g_me
(
DbTxn
 *
lf
){

3310 cڡ *
me
 = 
NULL
;

3311 
o
 = 
lf
->
	`g_me
(lf, &
me
);

3312  
me
;

3313 
	}
}

3314 
SWIGINTERN
 
u_t32_t
 
	$DbTxn_id
(
DbTxn
 *
lf
){

3315  
lf
->
	`id
(self);

3316 
	}
}

3317 
SWIGINTERN
 
db_t_t
 
	$DbTxn_e
(
DbTxn
 *
lf
,
u_t8_t
 *
gid
){

3318  
lf
->
	`e
(lf, 
gid
);

3319 
	}
}

3320 
SWIGINTERN
 
db_t_t
 
	$DbTxn_t_timeout
(
DbTxn
 *
lf
,
db_timeout_t
 
timeout
,
u_t32_t
 
ags
){

3321  
lf
->
	`t_timeout
(lf, 
timeout
, 
ags
);

3322 
	}
}

3323 
SWIGINTERN
 
db_t_t
 
	$DbTxn_t_me
(
DbTxn
 *
lf
,cڡ *
me
){

3324  
lf
->
	`t_me
(lf, 
me
);

3325 
	}
}

3327 #ifde
__lulus


3331 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_w_1Db
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, 
jt
 
jg2
) {

3332 
jlg
 
jsu
 = 0 ;

3333 
DB_ENV
 *
g1
 = (DB_ENV *) 0 ;

3334 
u_t32_t
 
g2
 ;

3335 
Db
 *
su
 = 0 ;

3337 ()
jv
;

3338 ()
js
;

3339 
g1
 = *(
DB_ENV
 **)&
jg1
;

3340 
g2
 = (
u_t32_t
)
jg2
;

3342 
o
 = 0;

3343 
su
 = (
Db
 *)
w_Db
(
g1
,
g2
);

3344 i(!
DB_RETOK_STD
(
o
)) {

3345 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

3348 *(
Db
 **)&
jsu
 = 
su
;

3349  
jsu
;

3353 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1assoc
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, jlg 
jg3
, 
jboޗn
 
jg4
, 
jt
 
jg5
) {

3354 
Db
 *
g1
 = (Db *) 0 ;

3355 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

3356 
DB
 *
g3
 = (DB *) 0 ;

3357 (*
g4
)(
DB
 *,
DBT
 const *,DBT const *,DBT *) = ((*)(DB *,DBT const *,DBT const *,DBT *)) 0 ;

3358 
u_t32_t
 
g5
 ;

3359 
db_t_t
 
su
;

3361 ()
jv
;

3362 ()
js
;

3363 
g1
 = *(
Db
 **)&
jg1
;

3364 
g2
 = *(
DB_TXN
 **)&
jg2
;

3365 
g3
 = *(
DB
 **)&
jg3
;

3367 
g4
 = (
jg4
 =
JNI_TRUE
? 
__dbj_ckey_
 : 
NULL
;

3369 
g5
 = (
u_t32_t
)
jg5
;

3371 i(
jg1
 == 0) {

3372 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3376 
su
 = (
db_t_t
)
Db_assoc
(
g1
,
g2
,
g3
,
g4
,
g5
);

3377 i(!
DB_RETOK_STD
(
su
)) {

3378 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

3384 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1com
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jobje
 
jg3
, jobje 
jg4
, jobje 
jg5
, 
jt
 
jg6
, jobje 
jg7
) {

3385 
Db
 *
g1
 = (Db *) 0 ;

3386 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

3387 
DBT
 *
g3
 = (DBT *) 0 ;

3388 
DBT
 *
g4
 = (DBT *) 0 ;

3389 
DB_COMPACT
 *
g5
 = (DB_COMPACT *) 0 ;

3390 
u_t32_t
 
g6
 ;

3391 
DBT
 *
g7
 = (DBT *) 0 ;

3392 
db_t_t
 
su
;

3393 
DBT_LOCKED
 
ldbt3
 ;

3394 
DBT_LOCKED
 
ldbt4
 ;

3395 
DB_COMPACT
 
com5
 ;

3396 
DBT_LOCKED
 
ldbt7
 ;

3398 ()
jv
;

3399 ()
js
;

3400 
g1
 = *(
Db
 **)&
jg1
;

3401 
g2
 = *(
DB_TXN
 **)&
jg2
;

3403 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 1) != 0) {

3407 i(
__dbj_dbt_cy
(
jv
, &
ldbt4
, &
g4
, 
jg4
, 1) != 0) {

3411 
memt
(&
com5
, 0,  (
DB_COMPACT
));

3412 
g5
 = &
com5
;

3413 
g5
->
com_f͔
 = (*
jv
)->
GIFld
(jv, 
jg5
,

3414 
com_com_f͔_fid
);

3415 
g5
->
com_timeout
 = (*
jv
)->
GIFld
(jv, 
jg5
,

3416 
com_com_timeout_fid
);

3417 
g5
->
com_ges
 = (*
jv
)->
GIFld
(jv, 
jg5
,

3418 
com_com_ges_fid
);

3420 
g6
 = (
u_t32_t
)
jg6
;

3422 i(
__dbj_dbt_cy
(
jv
, &
ldbt7
, &
g7
, 
jg7
, 1) != 0) {

3426 i(
jg1
 == 0) {

3427 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3431 
su
 = (
db_t_t
)
Db_com
(
g1
,
g2
,
g3
,
g4
,
g5
,
g6
,
g7
);

3432 i(!
DB_RETOK_STD
(
su
)) {

3433 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

3436 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

3437 
__dbj_dbt_a
(
jv
, 
jg4
, 
g4
, &
ldbt4
);

3438 
__dbj_fl_com
(
jv
, 
jg5
, 
g5
);

3439 
__dbj_dbt_a
(
jv
, 
jg7
, 
g7
, &
ldbt7
);

3443 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1o0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, j
jg2
) {

3444 
jt
 
jsu
 = 0 ;

3445 
Db
 *
g1
 = (Db *) 0 ;

3446 
u_t32_t
 
g2
 ;

3447 
su
;

3449 ()
jv
;

3450 ()
js
;

3451 
g1
 = *(
Db
 **)&
jg1
;

3452 
g2
 = (
u_t32_t
)
jg2
;

3454 i(
jg1
 == 0) {

3455 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3459 
o
 = 0;

3460 
su
 = ()
Db_o
(
g1
,
g2
);

3461 i(!
DB_RETOK_STD
(
o
)) {

3462 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

3465 
jsu
 = (
jt
)
su
;

3466  
jsu
;

3470 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1curs
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, jlg 
jg2
, 
jt
 
jg3
) {

3471 
jlg
 
jsu
 = 0 ;

3472 
Db
 *
g1
 = (Db *) 0 ;

3473 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

3474 
u_t32_t
 
g3
 ;

3475 
DBC
 *
su
 = 0 ;

3477 ()
jv
;

3478 ()
js
;

3479 
g1
 = *(
Db
 **)&
jg1
;

3480 
g2
 = *(
DB_TXN
 **)&
jg2
;

3481 
g3
 = (
u_t32_t
)
jg3
;

3483 i(
jg1
 == 0) {

3484 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3488 
o
 = 0;

3489 
su
 = (
DBC
 *)
Db_curs
(
g1
,
g2
,
g3
);

3490 i(!
DB_RETOK_STD
(
o
)) {

3491 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3494 *(
DBC
 **)&
jsu
 = 
su
;

3495  
jsu
;

3499 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jobje
 
jg3
, j
jg4
) {

3500 
jt
 
jsu
 = 0 ;

3501 
Db
 *
g1
 = (Db *) 0 ;

3502 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

3503 
DBT
 *
g3
 = (DBT *) 0 ;

3504 
u_t32_t
 
g4
 ;

3505 
su
;

3506 
DBT_LOCKED
 
ldbt3
 ;

3508 ()
jv
;

3509 ()
js
;

3510 
g1
 = *(
Db
 **)&
jg1
;

3511 
g2
 = *(
DB_TXN
 **)&
jg2
;

3513 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

3516 
g4
 = (
u_t32_t
)
jg4
;

3518 i(
jg1
 == 0) {

3519 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3523 
su
 = ()
Db_d
(
g1
,
g2
,
g3
,
g4
);

3524 i(!
DB_RETOK_DBDEL
(
su
)) {

3525 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

3528 
jsu
 = (
jt
)
su
;

3529 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

3530  
jsu
;

3534 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1r
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, 
jrg
 
jg3
) {

3535 
Db
 *
g1
 = (Db *) 0 ;

3536 
g2
 ;

3537 *
g3
 = (*) 0 ;

3539 ()
jv
;

3540 ()
js
;

3541 
g1
 = *(
Db
 **)&
jg1
;

3542 
g2
 = ()
jg2
;

3543 
g3
 = 0;

3544 i(
jg3
) {

3545 
g3
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg3
, 0);

3546 i(!
g3
)  ;

3549 i(
jg1
 == 0) {

3550 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3553 
Db_r
(
g1
,
g2
,(cڡ *)
g3
);

3554 i(
g3
(*
jv
)->
RSgUTFChs
(jv, 
jg3
,rg3);

3558 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1rx
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
) {

3559 
Db
 *
g1
 = (Db *) 0 ;

3560 *
g2
 = (*) 0 ;

3562 ()
jv
;

3563 ()
js
;

3564 
g1
 = *(
Db
 **)&
jg1
;

3565 
g2
 = 0;

3566 i(
jg2
) {

3567 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

3568 i(!
g2
)  ;

3571 i(
jg1
 == 0) {

3572 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3575 
Db_rx
(
g1
,(cڡ *)
g2
);

3576 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

3580 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1exis
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jobje
 
jg3
, j
jg4
) {

3581 
jt
 
jsu
 = 0 ;

3582 
Db
 *
g1
 = (Db *) 0 ;

3583 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

3584 
DBT
 *
g3
 = (DBT *) 0 ;

3585 
u_t32_t
 
g4
 ;

3586 
su
;

3587 
DBT_LOCKED
 
ldbt3
 ;

3589 ()
jv
;

3590 ()
js
;

3591 
g1
 = *(
Db
 **)&
jg1
;

3592 
g2
 = *(
DB_TXN
 **)&
jg2
;

3594 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

3597 
g4
 = (
u_t32_t
)
jg4
;

3599 i(
jg1
 == 0) {

3600 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3604 
su
 = ()
Db_exis
(
g1
,
g2
,
g3
,
g4
);

3605 i(!
DB_RETOK_EXISTS
(
su
)) {

3606 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

3609 
jsu
 = (
jt
)
su
;

3610 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

3611  
jsu
;

3615 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jobje
 
jg3
, jobje 
jg4
, j
jg5
) {

3616 
jt
 
jsu
 = 0 ;

3617 
Db
 *
g1
 = (Db *) 0 ;

3618 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

3619 
DBT
 *
g3
 = (DBT *) 0 ;

3620 
DBT
 *
g4
 = (DBT *) 0 ;

3621 
u_t32_t
 
g5
 ;

3622 
su
;

3623 
DBT_LOCKED
 
ldbt3
 ;

3624 
DBT_LOCKED
 
ldbt4
 ;

3626 ()
jv
;

3627 ()
js
;

3628 
g1
 = *(
Db
 **)&
jg1
;

3629 
g2
 = *(
DB_TXN
 **)&
jg2
;

3631 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

3635 i(
__dbj_dbt_cy
(
jv
, &
ldbt4
, &
g4
, 
jg4
, 0) != 0) {

3638 
g5
 = (
u_t32_t
)
jg5
;

3640 i(
jg1
 == 0) {

3641 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3645 
su
 = ()
Db_g
(
g1
,
g2
,
g3
,
g4
,
g5
);

3646 i(!
DB_RETOK_DBGET
(
su
)) {

3647 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

3650 
jsu
 = (
jt
)
su
;

3651 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

3652 
__dbj_dbt_a
(
jv
, 
jg4
, 
g4
, &
ldbt4
);

3653  
jsu
;

3657 
JNIEXPORT
 
jboޗn
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1byswd
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3658 
jboޗn
 
jsu
 = 0 ;

3659 
Db
 *
g1
 = (Db *) 0 ;

3660 
t_bo
 
su
;

3662 ()
jv
;

3663 ()
js
;

3664 
g1
 = *(
Db
 **)&
jg1
;

3666 i(
jg1
 == 0) {

3667 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3671 
o
 = 0;

3672 
su
 = (
t_bo
)
Db_g_byswd
(
g1
);

3673 i(!
DB_RETOK_STD
(
o
)) {

3674 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3677 
jsu
 = (
su
? 
JNI_TRUE
 : 
JNI_FALSE
;

3678  
jsu
;

3682 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1chesize
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

3683 
jlg
 
jsu
 = 0 ;

3684 
Db
 *
g1
 = (Db *) 0 ;

3685 
jlg
 
su
;

3687 ()
jv
;

3688 ()
js
;

3689 
g1
 = *(
Db
 **)&
jg1
;

3691 i(
jg1
 == 0) {

3692 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3696 
o
 = 0;

3697 
su
 = 
Db_g_chesize
(
g1
);

3698 i(!
DB_RETOK_STD
(
o
)) {

3699 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3702 
jsu
 = 
su
;

3703  
jsu
;

3707 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1chesize_1nche
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3708 
jt
 
jsu
 = 0 ;

3709 
Db
 *
g1
 = (Db *) 0 ;

3710 
u_t32_t
 
su
;

3712 ()
jv
;

3713 ()
js
;

3714 
g1
 = *(
Db
 **)&
jg1
;

3716 i(
jg1
 == 0) {

3717 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3721 
o
 = 0;

3722 
su
 = (
u_t32_t
)
Db_g_chesize_nche
(
g1
);

3723 i(!
DB_RETOK_STD
(
o
)) {

3724 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3727 
jsu
 = (
jt
)
su
;

3728  
jsu
;

3732 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1fame
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3733 
jrg
 
jsu
 = 0 ;

3734 
Db
 *
g1
 = (Db *) 0 ;

3735 *
su
 = 0 ;

3737 ()
jv
;

3738 ()
js
;

3739 
g1
 = *(
Db
 **)&
jg1
;

3741 i(
jg1
 == 0) {

3742 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3746 
o
 = 0;

3747 
su
 = (*)
Db_g_fame
(
g1
);

3748 i(!
DB_RETOK_STD
(
o
)) {

3749 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3752 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

3753  
jsu
;

3757 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1dbme
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3758 
jrg
 
jsu
 = 0 ;

3759 
Db
 *
g1
 = (Db *) 0 ;

3760 *
su
 = 0 ;

3762 ()
jv
;

3763 ()
js
;

3764 
g1
 = *(
Db
 **)&
jg1
;

3766 i(
jg1
 == 0) {

3767 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3771 
o
 = 0;

3772 
su
 = (*)
Db_g_dbme
(
g1
);

3773 i(!
DB_RETOK_STD
(
o
)) {

3774 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3777 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

3778  
jsu
;

3782 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1y_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3783 
jt
 
jsu
 = 0 ;

3784 
Db
 *
g1
 = (Db *) 0 ;

3785 
u_t32_t
 
su
;

3787 ()
jv
;

3788 ()
js
;

3789 
g1
 = *(
Db
 **)&
jg1
;

3791 i(
jg1
 == 0) {

3792 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3796 
o
 = 0;

3797 
su
 = (
u_t32_t
)
Db_g_y_ags
(
g1
);

3798 i(!
DB_RETOK_STD
(
o
)) {

3799 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3802 
jsu
 = (
jt
)
su
;

3803  
jsu
;

3807 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3808 
jt
 
jsu
 = 0 ;

3809 
Db
 *
g1
 = (Db *) 0 ;

3810 
u_t32_t
 
su
;

3812 ()
jv
;

3813 ()
js
;

3814 
g1
 = *(
Db
 **)&
jg1
;

3816 i(
jg1
 == 0) {

3817 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3821 
o
 = 0;

3822 
su
 = (
u_t32_t
)
Db_g_ags
(
g1
);

3823 i(!
DB_RETOK_STD
(
o
)) {

3824 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3827 
jsu
 = (
jt
)
su
;

3828  
jsu
;

3832 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1ld
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3833 
jt
 
jsu
 = 0 ;

3834 
Db
 *
g1
 = (Db *) 0 ;

3835 
su
;

3837 ()
jv
;

3838 ()
js
;

3839 
g1
 = *(
Db
 **)&
jg1
;

3841 i(
jg1
 == 0) {

3842 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3846 
o
 = 0;

3847 
su
 = ()
Db_g_ld
(
g1
);

3848 i(!
DB_RETOK_STD
(
o
)) {

3849 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3852 
jsu
 = (
jt
)
su
;

3853  
jsu
;

3857 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1mpf
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

3858 
jlg
 
jsu
 = 0 ;

3859 
Db
 *
g1
 = (Db *) 0 ;

3860 
DB_MPOOLFILE
 *
su
 = 0 ;

3862 ()
jv
;

3863 ()
js
;

3864 
g1
 = *(
Db
 **)&
jg1
;

3866 i(
jg1
 == 0) {

3867 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3871 
o
 = 0;

3872 
su
 = (
DB_MPOOLFILE
 *)
Db_g_mpf
(
g1
);

3873 i(!
DB_RETOK_STD
(
o
)) {

3874 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3877 *(
DB_MPOOLFILE
 **)&
jsu
 = 
su
;

3878  
jsu
;

3882 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1ݒ_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3883 
jt
 
jsu
 = 0 ;

3884 
Db
 *
g1
 = (Db *) 0 ;

3885 
u_t32_t
 
su
;

3887 ()
jv
;

3888 ()
js
;

3889 
g1
 = *(
Db
 **)&
jg1
;

3891 i(
jg1
 == 0) {

3892 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3896 
o
 = 0;

3897 
su
 = (
u_t32_t
)
Db_g_ݒ_ags
(
g1
);

3898 i(!
DB_RETOK_STD
(
o
)) {

3899 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3902 
jsu
 = (
jt
)
su
;

3903  
jsu
;

3907 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1gesize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3908 
jt
 
jsu
 = 0 ;

3909 
Db
 *
g1
 = (Db *) 0 ;

3910 
u_t32_t
 
su
;

3912 ()
jv
;

3913 ()
js
;

3914 
g1
 = *(
Db
 **)&
jg1
;

3916 i(
jg1
 == 0) {

3917 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3921 
o
 = 0;

3922 
su
 = (
u_t32_t
)
Db_g_gesize
(
g1
);

3923 i(!
DB_RETOK_STD
(
o
)) {

3924 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3927 
jsu
 = (
jt
)
su
;

3928  
jsu
;

3932 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1bt_1mkey
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3933 
jt
 
jsu
 = 0 ;

3934 
Db
 *
g1
 = (Db *) 0 ;

3935 
u_t32_t
 
su
;

3937 ()
jv
;

3938 ()
js
;

3939 
g1
 = *(
Db
 **)&
jg1
;

3941 i(
jg1
 == 0) {

3942 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3946 
o
 = 0;

3947 
su
 = (
u_t32_t
)
Db_g_bt_mkey
(
g1
);

3948 i(!
DB_RETOK_STD
(
o
)) {

3949 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3952 
jsu
 = (
jt
)
su
;

3953  
jsu
;

3957 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1h_1f
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3958 
jt
 
jsu
 = 0 ;

3959 
Db
 *
g1
 = (Db *) 0 ;

3960 
u_t32_t
 
su
;

3962 ()
jv
;

3963 ()
js
;

3964 
g1
 = *(
Db
 **)&
jg1
;

3966 i(
jg1
 == 0) {

3967 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3971 
o
 = 0;

3972 
su
 = (
u_t32_t
)
Db_g_h_f
(
g1
);

3973 i(!
DB_RETOK_STD
(
o
)) {

3974 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

3977 
jsu
 = (
jt
)
su
;

3978  
jsu
;

3982 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1h_1m
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

3983 
jt
 
jsu
 = 0 ;

3984 
Db
 *
g1
 = (Db *) 0 ;

3985 
u_t32_t
 
su
;

3987 ()
jv
;

3988 ()
js
;

3989 
g1
 = *(
Db
 **)&
jg1
;

3991 i(
jg1
 == 0) {

3992 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

3996 
o
 = 0;

3997 
su
 = (
u_t32_t
)
Db_g_h_m
(
g1
);

3998 i(!
DB_RETOK_STD
(
o
)) {

3999 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

4002 
jsu
 = (
jt
)
su
;

4003  
jsu
;

4007 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1_1dim
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

4008 
jt
 
jsu
 = 0 ;

4009 
Db
 *
g1
 = (Db *) 0 ;

4010 
su
;

4012 ()
jv
;

4013 ()
js
;

4014 
g1
 = *(
Db
 **)&
jg1
;

4016 i(
jg1
 == 0) {

4017 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4021 
o
 = 0;

4022 
su
 = ()
Db_g__dim
(
g1
);

4023 i(!
DB_RETOK_STD
(
o
)) {

4024 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

4027 
jsu
 = (
jt
)
su
;

4028  
jsu
;

4032 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1iܙy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

4033 
jt
 
jsu
 = 0 ;

4034 
Db
 *
g1
 = (Db *) 0 ;

4035 
DB_CACHE_PRIORITY
 
su
;

4037 ()
jv
;

4038 ()
js
;

4039 
g1
 = *(
Db
 **)&
jg1
;

4041 i(
jg1
 == 0) {

4042 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4046 
o
 = 0;

4047 
su
 = (
DB_CACHE_PRIORITY
)
Db_g_iܙy
(
g1
);

4048 i(!
DB_RETOK_STD
(
o
)) {

4049 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

4052 
jsu
 = (
jt
)
su
;

4053  
jsu
;

4057 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1_1n
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

4058 
jt
 
jsu
 = 0 ;

4059 
Db
 *
g1
 = (Db *) 0 ;

4060 
u_t32_t
 
su
;

4062 ()
jv
;

4063 ()
js
;

4064 
g1
 = *(
Db
 **)&
jg1
;

4066 i(
jg1
 == 0) {

4067 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4071 
o
 = 0;

4072 
su
 = (
u_t32_t
)
Db_g__n
(
g1
);

4073 i(!
DB_RETOK_STD
(
o
)) {

4074 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

4077 
jsu
 = (
jt
)
su
;

4078  
jsu
;

4082 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

4083 
jt
 
jsu
 = 0 ;

4084 
Db
 *
g1
 = (Db *) 0 ;

4085 
su
;

4087 ()
jv
;

4088 ()
js
;

4089 
g1
 = *(
Db
 **)&
jg1
;

4091 i(
jg1
 == 0) {

4092 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4096 
o
 = 0;

4097 
su
 = ()
Db_g__d
(
g1
);

4098 i(!
DB_RETOK_STD
(
o
)) {

4099 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

4102 
jsu
 = (
jt
)
su
;

4103  
jsu
;

4107 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1_1sour
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

4108 
jrg
 
jsu
 = 0 ;

4109 
Db
 *
g1
 = (Db *) 0 ;

4110 *
su
 = 0 ;

4112 ()
jv
;

4113 ()
js
;

4114 
g1
 = *(
Db
 **)&
jg1
;

4116 i(
jg1
 == 0) {

4117 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4121 
o
 = 0;

4122 
su
 = (*)
Db_g__sour
(
g1
);

4123 i(!
DB_RETOK_STD
(
o
)) {

4124 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

4127 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

4128  
jsu
;

4132 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1q_1exsize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

4133 
jt
 
jsu
 = 0 ;

4134 
Db
 *
g1
 = (Db *) 0 ;

4135 
u_t32_t
 
su
;

4137 ()
jv
;

4138 ()
js
;

4139 
g1
 = *(
Db
 **)&
jg1
;

4141 i(
jg1
 == 0) {

4142 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4146 
o
 = 0;

4147 
su
 = (
u_t32_t
)
Db_g_q_exsize
(
g1
);

4148 i(!
DB_RETOK_STD
(
o
)) {

4149 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

4152 
jsu
 = (
jt
)
su
;

4153  
jsu
;

4157 
JNIEXPORT
 
jboޗn
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1muɝ
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

4158 
jboޗn
 
jsu
 = 0 ;

4159 
Db
 *
g1
 = (Db *) 0 ;

4160 
t_bo
 
su
;

4162 ()
jv
;

4163 ()
js
;

4164 
g1
 = *(
Db
 **)&
jg1
;

4166 i(
jg1
 == 0) {

4167 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4170 
su
 = (
t_bo
)
Db_g_muɝ
(
g1
);

4171 
jsu
 = (
su
? 
JNI_TRUE
 : 
JNI_FALSE
;

4172  
jsu
;

4176 
JNIEXPORT
 
jboޗn
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1iڮ
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

4177 
jboޗn
 
jsu
 = 0 ;

4178 
Db
 *
g1
 = (Db *) 0 ;

4179 
t_bo
 
su
;

4181 ()
jv
;

4182 ()
js
;

4183 
g1
 = *(
Db
 **)&
jg1
;

4185 i(
jg1
 == 0) {

4186 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4189 
su
 = (
t_bo
)
Db_g_iڮ
(
g1
);

4190 
jsu
 = (
su
? 
JNI_TRUE
 : 
JNI_FALSE
;

4191  
jsu
;

4195 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1g_1ty
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

4196 
jt
 
jsu
 = 0 ;

4197 
Db
 *
g1
 = (Db *) 0 ;

4198 
DBTYPE
 
su
;

4200 ()
jv
;

4201 ()
js
;

4202 
g1
 = *(
Db
 **)&
jg1
;

4204 i(
jg1
 == 0) {

4205 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4209 
o
 = 0;

4210 
su
 = (
DBTYPE
)
Db_g_ty
(
g1
);

4211 i(!
DB_RETOK_STD
(
o
)) {

4212 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

4215 
jsu
 = (
jt
)
su
;

4216  
jsu
;

4220 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1jo
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, 
jobjeAay
 
jg2
, 
jt
 
jg3
) {

4221 
jlg
 
jsu
 = 0 ;

4222 
Db
 *
g1
 = (Db *) 0 ;

4223 
DBC
 **
g2
 = (DBC **) 0 ;

4224 
u_t32_t
 
g3
 ;

4225 
DBC
 *
su
 = 0 ;

4227 ()
jv
;

4228 ()
js
;

4229 
g1
 = *(
Db
 **)&
jg1
;

4231 
i
, 
cou
, 
r
;

4233 
cou
 = (*
jv
)->
GAayLgth
(jv, 
jg2
);

4234 i((
r
 = 
__os_mloc
(
NULL
, (
cou
 + 1* (
DBC
 *), &
g2
)) != 0) {

4235 
__dbj_throw
(
jv
, 
r
, 
NULL
, NULL, 
DB2JDBENV
);

4238 
i
 = 0; i < 
cou
; i++) {

4239 
jobje
 
jobj
 = (*
jv
)->
GObjeAayEmt
(jv, 
jg2
, 
i
);

4243 i(
jobj
 =
NULL
) {

4244 
g2
[
i
] = 
NULL
;

4247 
jlg
 
jr
 = (*
jv
)->
GLgFld
(jv, 
jobj
,

4248 
dbc__fid
);

4249 
g2
[
i
] = *(
DBC
 **)(*)&
jr
;

4252 
g2
[
cou
] = 
NULL
;

4254 
g3
 = (
u_t32_t
)
jg3
;

4256 i(
jg1
 == 0) {

4257 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4261 
o
 = 0;

4262 
su
 = (
DBC
 *)
Db_jo
(
g1
,
g2
,
g3
);

4263 i(!
DB_RETOK_STD
(
o
)) {

4264 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

4267 *(
DBC
 **)&
jsu
 = 
su
;

4269 
__os_
(
NULL
, 
g2
);

4271  
jsu
;

4275 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1key_1nge
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jobje
 
jg3
, jobje 
jg4
, 
jt
 
jg5
) {

4276 
Db
 *
g1
 = (Db *) 0 ;

4277 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

4278 
DBT
 *
g3
 = (DBT *) 0 ;

4279 
DB_KEY_RANGE
 *
g4
 = (DB_KEY_RANGE *) 0 ;

4280 
u_t32_t
 
g5
 ;

4281 
db_t_t
 
su
;

4282 
DBT_LOCKED
 
ldbt3
 ;

4283 
DB_KEY_RANGE
 
nge4
 ;

4285 ()
jv
;

4286 ()
js
;

4287 
g1
 = *(
Db
 **)&
jg1
;

4288 
g2
 = *(
DB_TXN
 **)&
jg2
;

4290 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

4294 
g4
 = &
nge4
;

4296 
g5
 = (
u_t32_t
)
jg5
;

4298 i(
jg1
 == 0) {

4299 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4303 
su
 = (
db_t_t
)
Db_key_nge
(
g1
,
g2
,
g3
,
g4
,
g5
);

4304 i(!
DB_RETOK_STD
(
su
)) {

4305 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4309 (*
jv
)->
SDoubFld
(jv, 
jg4
, 
kr_ss_fid
, 
g4
->
ss
);

4310 (*
jv
)->
SDoubFld
(jv, 
jg4
, 
kr_equ_fid
, 
g4
->
equ
);

4311 (*
jv
)->
SDoubFld
(jv, 
jg4
, 
kr_g_fid
, 
g4
->
g
);

4313 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

4317 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1ݒ
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jrg
 
jg3
, jrg 
jg4
, 
jt
 
jg5
, j
jg6
, j
jg7
) {

4318 
Db
 *
g1
 = (Db *) 0 ;

4319 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

4320 *
g3
 = (*) 0 ;

4321 *
g4
 = (*) 0 ;

4322 
DBTYPE
 
g5
 ;

4323 
u_t32_t
 
g6
 ;

4324 
g7
 ;

4325 
db_t_t
 
su
;

4327 ()
jv
;

4328 ()
js
;

4329 
g1
 = *(
Db
 **)&
jg1
;

4330 
g2
 = *(
DB_TXN
 **)&
jg2
;

4331 
g3
 = 0;

4332 i(
jg3
) {

4333 
g3
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg3
, 0);

4334 i(!
g3
)  ;

4336 
g4
 = 0;

4337 i(
jg4
) {

4338 
g4
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg4
, 0);

4339 i(!
g4
)  ;

4341 
g5
 = (
DBTYPE
)
jg5
;

4342 
g6
 = (
u_t32_t
)
jg6
;

4343 
g7
 = ()
jg7
;

4345 i(
jg1
 == 0) {

4346 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4350 
su
 = (
db_t_t
)
Db_ݒ
(
g1
,
g2
,(cڡ *)
g3
,(cڡ *)
g4
,
g5
,
g6
,
g7
);

4351 i(!
DB_RETOK_STD
(
su
)) {

4352 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4355 i(
g3
(*
jv
)->
RSgUTFChs
(jv, 
jg3
,rg3);

4356 i(
g4
(*
jv
)->
RSgUTFChs
(jv, 
jg4
,rg4);

4360 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1pg
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jobje
 
jg3
, jobje 
jg4
, jobje 
jg5
, j
jg6
) {

4361 
jt
 
jsu
 = 0 ;

4362 
Db
 *
g1
 = (Db *) 0 ;

4363 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

4364 
DBT
 *
g3
 = (DBT *) 0 ;

4365 
DBT
 *
g4
 = (DBT *) 0 ;

4366 
DBT
 *
g5
 = (DBT *) 0 ;

4367 
u_t32_t
 
g6
 ;

4368 
su
;

4369 
DBT_LOCKED
 
ldbt3
 ;

4370 
DBT_LOCKED
 
ldbt4
 ;

4371 
DBT_LOCKED
 
ldbt5
 ;

4373 ()
jv
;

4374 ()
js
;

4375 
g1
 = *(
Db
 **)&
jg1
;

4376 
g2
 = *(
DB_TXN
 **)&
jg2
;

4378 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

4382 i(
__dbj_dbt_cy
(
jv
, &
ldbt4
, &
g4
, 
jg4
, 0) != 0) {

4386 i(
__dbj_dbt_cy
(
jv
, &
ldbt5
, &
g5
, 
jg5
, 0) != 0) {

4389 
g6
 = (
u_t32_t
)
jg6
;

4391 i(
jg1
 == 0) {

4392 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4396 
su
 = ()
Db_pg
(
g1
,
g2
,
g3
,
g4
,
g5
,
g6
);

4397 i(!
DB_RETOK_DBGET
(
su
)) {

4398 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4401 
jsu
 = (
jt
)
su
;

4402 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

4403 
__dbj_dbt_a
(
jv
, 
jg4
, 
g4
, &
ldbt4
);

4404 
__dbj_dbt_a
(
jv
, 
jg5
, 
g5
, &
ldbt5
);

4405  
jsu
;

4409 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1put
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jobje
 
jg3
, jobje 
jg4
, j
jg5
) {

4410 
jt
 
jsu
 = 0 ;

4411 
Db
 *
g1
 = (Db *) 0 ;

4412 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

4413 
DBT
 *
g3
 = (DBT *) 0 ;

4414 
DBT
 *
g4
 = (DBT *) 0 ;

4415 
u_t32_t
 
g5
 ;

4416 
su
;

4417 
DBT_LOCKED
 
ldbt3
 ;

4418 
DBT_LOCKED
 
ldbt4
 ;

4420 ()
jv
;

4421 ()
js
;

4422 
g1
 = *(
Db
 **)&
jg1
;

4423 
g2
 = *(
DB_TXN
 **)&
jg2
;

4425 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

4429 i(
__dbj_dbt_cy
(
jv
, &
ldbt4
, &
g4
, 
jg4
, 0) != 0) {

4432 
g5
 = (
u_t32_t
)
jg5
;

4434 i(
jg1
 == 0) {

4435 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4439 
su
 = ()
Db_put
(
g1
,
g2
,
g3
,
g4
,
g5
);

4440 i(!
DB_RETOK_DBPUT
(
su
)) {

4441 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4444 
jsu
 = (
jt
)
su
;

4445 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

4446 
__dbj_dbt_a
(
jv
, 
jg4
, 
g4
, &
ldbt4
);

4447  
jsu
;

4451 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1move0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, jrg 
jg3
, 
jt
 
jg4
) {

4452 
Db
 *
g1
 = (Db *) 0 ;

4453 *
g2
 = (*) 0 ;

4454 *
g3
 = (*) 0 ;

4455 
u_t32_t
 
g4
 ;

4456 
db_t_t
 
su
;

4458 ()
jv
;

4459 ()
js
;

4460 
g1
 = *(
Db
 **)&
jg1
;

4461 
g2
 = 0;

4462 i(
jg2
) {

4463 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

4464 i(!
g2
)  ;

4466 
g3
 = 0;

4467 i(
jg3
) {

4468 
g3
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg3
, 0);

4469 i(!
g3
)  ;

4471 
g4
 = (
u_t32_t
)
jg4
;

4473 i(
jg1
 == 0) {

4474 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4478 
su
 = (
db_t_t
)
Db_move
(
g1
,(cڡ *)
g2
,(cڡ *)
g3
,
g4
);

4479 i(!
DB_RETOK_STD
(
su
)) {

4480 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

4483 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

4484 i(
g3
(*
jv
)->
RSgUTFChs
(jv, 
jg3
,rg3);

4488 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1me0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, jrg 
jg3
, jrg 
jg4
, 
jt
 
jg5
) {

4489 
Db
 *
g1
 = (Db *) 0 ;

4490 *
g2
 = (*) 0 ;

4491 *
g3
 = (*) 0 ;

4492 *
g4
 = (*) 0 ;

4493 
u_t32_t
 
g5
 ;

4494 
db_t_t
 
su
;

4496 ()
jv
;

4497 ()
js
;

4498 
g1
 = *(
Db
 **)&
jg1
;

4499 
g2
 = 0;

4500 i(
jg2
) {

4501 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

4502 i(!
g2
)  ;

4504 
g3
 = 0;

4505 i(
jg3
) {

4506 
g3
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg3
, 0);

4507 i(!
g3
)  ;

4509 
g4
 = 0;

4510 i(
jg4
) {

4511 
g4
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg4
, 0);

4512 i(!
g4
)  ;

4514 
g5
 = (
u_t32_t
)
jg5
;

4516 i(
jg1
 == 0) {

4517 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4521 
su
 = (
db_t_t
)
Db_me
(
g1
,(cڡ *)
g2
,(cڡ *)
g3
,(cڡ *)
g4
,
g5
);

4522 i(!
DB_RETOK_STD
(
su
)) {

4523 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

4526 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

4527 i(
g3
(*
jv
)->
RSgUTFChs
(jv, 
jg3
,rg3);

4528 i(
g4
(*
jv
)->
RSgUTFChs
(jv, 
jg4
,rg4);

4532 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1nd_1o
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

4533 
Db
 *
g1
 = (Db *) 0 ;

4534 (*
g2
)(
DB
 *,
DBT
 *,
db_o_t
) = ((*)(DB *,DBT *,db_recno_t)) 0 ;

4535 
db_t_t
 
su
;

4537 ()
jv
;

4538 ()
js
;

4539 
g1
 = *(
Db
 **)&
jg1
;

4541 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_nd_o
 : 
NULL
;

4544 i(
jg1
 == 0) {

4545 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4549 
su
 = (
db_t_t
)
Db_t_nd_o
(
g1
,
g2
);

4550 i(!
DB_RETOK_STD
(
su
)) {

4551 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4557 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1bt_1com
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

4558 
Db
 *
g1
 = (Db *) 0 ;

4559 (*
g2
)(
DB
 *,
DBT
 const *,DBT const *) = ((*)(DB *,DBT const *,DBT const *)) 0 ;

4560 
db_t_t
 
su
;

4562 ()
jv
;

4563 ()
js
;

4564 
g1
 = *(
Db
 **)&
jg1
;

4566 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_bt_com
 : 
NULL
;

4569 i(
jg1
 == 0) {

4570 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4574 
su
 = (
db_t_t
)
Db_t_bt_com
(
g1
,
g2
);

4575 i(!
DB_RETOK_STD
(
su
)) {

4576 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4582 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1bt_1mkey
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

4583 
Db
 *
g1
 = (Db *) 0 ;

4584 
u_t32_t
 
g2
 ;

4585 
db_t_t
 
su
;

4587 ()
jv
;

4588 ()
js
;

4589 
g1
 = *(
Db
 **)&
jg1
;

4590 
g2
 = (
u_t32_t
)
jg2
;

4592 i(
jg1
 == 0) {

4593 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4597 
su
 = (
db_t_t
)
Db_t_bt_mkey
(
g1
,
g2
);

4598 i(!
DB_RETOK_STD
(
su
)) {

4599 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4605 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1bt_1efix
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

4606 
Db
 *
g1
 = (Db *) 0 ;

4607 
size_t
 (*
g2
)(
DB
 *,
DBT
 const *,DBT const *) = (size_t (*)(DB *,DBT const *,DBT const *)) 0 ;

4608 
db_t_t
 
su
;

4610 ()
jv
;

4611 ()
js
;

4612 
g1
 = *(
Db
 **)&
jg1
;

4614 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_bt_efix
 : 
NULL
;

4617 i(
jg1
 == 0) {

4618 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4622 
su
 = (
db_t_t
)
Db_t_bt_efix
(
g1
,
g2
);

4623 i(!
DB_RETOK_STD
(
su
)) {

4624 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4630 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1chesize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jt
 
jg3
) {

4631 
Db
 *
g1
 = (Db *) 0 ;

4632 
jlg
 
g2
 ;

4633 
g3
 ;

4634 
db_t_t
 
su
;

4636 ()
jv
;

4637 ()
js
;

4638 
g1
 = *(
Db
 **)&
jg1
;

4639 
g2
 = 
jg2
;

4640 
g3
 = ()
jg3
;

4642 i(
jg1
 == 0) {

4643 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4647 
su
 = (
db_t_t
)
Db_t_chesize
(
g1
,
g2
,
g3
);

4648 i(!
DB_RETOK_STD
(
su
)) {

4649 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4655 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1dup_1com
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

4656 
Db
 *
g1
 = (Db *) 0 ;

4657 (*
g2
)(
DB
 *,
DBT
 const *,DBT const *) = ((*)(DB *,DBT const *,DBT const *)) 0 ;

4658 
db_t_t
 
su
;

4660 ()
jv
;

4661 ()
js
;

4662 
g1
 = *(
Db
 **)&
jg1
;

4664 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_dup_com
 : 
NULL
;

4667 i(
jg1
 == 0) {

4668 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4672 
su
 = (
db_t_t
)
Db_t_dup_com
(
g1
,
g2
);

4673 i(!
DB_RETOK_STD
(
su
)) {

4674 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4680 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1y
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, 
jt
 
jg3
) {

4681 
Db
 *
g1
 = (Db *) 0 ;

4682 *
g2
 = (*) 0 ;

4683 
u_t32_t
 
g3
 ;

4684 
db_t_t
 
su
;

4686 ()
jv
;

4687 ()
js
;

4688 
g1
 = *(
Db
 **)&
jg1
;

4689 
g2
 = 0;

4690 i(
jg2
) {

4691 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

4692 i(!
g2
)  ;

4694 
g3
 = (
u_t32_t
)
jg3
;

4696 i(
jg1
 == 0) {

4697 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4701 
su
 = (
db_t_t
)
Db_t_y
(
g1
,(cڡ *)
g2
,
g3
);

4702 i(!
DB_RETOK_STD
(
su
)) {

4703 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4706 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

4710 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1edback
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

4711 
Db
 *
g1
 = (Db *) 0 ;

4712 (*
g2
)(
DB
 *,,) = ((*)(DB *,,)) 0 ;

4713 
db_t_t
 
su
;

4715 ()
jv
;

4716 ()
js
;

4717 
g1
 = *(
Db
 **)&
jg1
;

4719 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_db_edback
 : 
NULL
;

4722 i(
jg1
 == 0) {

4723 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4727 
su
 = (
db_t_t
)
Db_t_edback
(
g1
,
g2
);

4728 i(!
DB_RETOK_STD
(
su
)) {

4729 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4735 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

4736 
Db
 *
g1
 = (Db *) 0 ;

4737 
u_t32_t
 
g2
 ;

4738 
db_t_t
 
su
;

4740 ()
jv
;

4741 ()
js
;

4742 
g1
 = *(
Db
 **)&
jg1
;

4743 
g2
 = (
u_t32_t
)
jg2
;

4745 i(
jg1
 == 0) {

4746 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4750 
su
 = (
db_t_t
)
Db_t_ags
(
g1
,
g2
);

4751 i(!
DB_RETOK_STD
(
su
)) {

4752 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4758 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1com
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

4759 
Db
 *
g1
 = (Db *) 0 ;

4760 (*
g2
)(
DB
 *,
DBT
 const *,DBT const *) = ((*)(DB *,DBT const *,DBT const *)) 0 ;

4761 
db_t_t
 
su
;

4763 ()
jv
;

4764 ()
js
;

4765 
g1
 = *(
Db
 **)&
jg1
;

4767 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_h_com
 : 
NULL
;

4770 i(
jg1
 == 0) {

4771 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4775 
su
 = (
db_t_t
)
Db_t_h_com
(
g1
,
g2
);

4776 i(!
DB_RETOK_STD
(
su
)) {

4777 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4783 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1f
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

4784 
Db
 *
g1
 = (Db *) 0 ;

4785 
u_t32_t
 
g2
 ;

4786 
db_t_t
 
su
;

4788 ()
jv
;

4789 ()
js
;

4790 
g1
 = *(
Db
 **)&
jg1
;

4791 
g2
 = (
u_t32_t
)
jg2
;

4793 i(
jg1
 == 0) {

4794 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4798 
su
 = (
db_t_t
)
Db_t_h_f
(
g1
,
g2
);

4799 i(!
DB_RETOK_STD
(
su
)) {

4800 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4806 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1hash
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

4807 
Db
 *
g1
 = (Db *) 0 ;

4808 
u_t32_t
 (*
g2
)(
DB
 *,const *,u_int32_t) = (u_int32_t (*)(DB *,const *,u_int32_t)) 0 ;

4809 
db_t_t
 
su
;

4811 ()
jv
;

4812 ()
js
;

4813 
g1
 = *(
Db
 **)&
jg1
;

4815 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_h_hash
 : 
NULL
;

4818 i(
jg1
 == 0) {

4819 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4823 
su
 = (
db_t_t
)
Db_t_h_hash
(
g1
,
g2
);

4824 i(!
DB_RETOK_STD
(
su
)) {

4825 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4831 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1m
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

4832 
Db
 *
g1
 = (Db *) 0 ;

4833 
u_t32_t
 
g2
 ;

4834 
db_t_t
 
su
;

4836 ()
jv
;

4837 ()
js
;

4838 
g1
 = *(
Db
 **)&
jg1
;

4839 
g2
 = (
u_t32_t
)
jg2
;

4841 i(
jg1
 == 0) {

4842 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4846 
su
 = (
db_t_t
)
Db_t_h_m
(
g1
,
g2
);

4847 i(!
DB_RETOK_STD
(
su
)) {

4848 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4854 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1ld
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

4855 
Db
 *
g1
 = (Db *) 0 ;

4856 
g2
 ;

4857 
db_t_t
 
su
;

4859 ()
jv
;

4860 ()
js
;

4861 
g1
 = *(
Db
 **)&
jg1
;

4862 
g2
 = ()
jg2
;

4864 i(
jg1
 == 0) {

4865 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4869 
su
 = (
db_t_t
)
Db_t_ld
(
g1
,
g2
);

4870 i(!
DB_RETOK_STD
(
su
)) {

4871 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4877 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1gesize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
) {

4878 
Db
 *
g1
 = (Db *) 0 ;

4879 
u_t32_t
 
g2
 ;

4880 
db_t_t
 
su
;

4882 ()
jv
;

4883 ()
js
;

4884 
g1
 = *(
Db
 **)&
jg1
;

4885 
g2
 = (
u_t32_t
)
jg2
;

4887 i(
jg1
 == 0) {

4888 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4892 
su
 = (
db_t_t
)
Db_t_gesize
(
g1
,
g2
);

4893 i(!
DB_RETOK_STD
(
su
)) {

4894 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4900 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1iܙy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

4901 
Db
 *
g1
 = (Db *) 0 ;

4902 
DB_CACHE_PRIORITY
 
g2
 ;

4903 
db_t_t
 
su
;

4905 ()
jv
;

4906 ()
js
;

4907 
g1
 = *(
Db
 **)&
jg1
;

4908 
g2
 = (
DB_CACHE_PRIORITY
)
jg2
;

4910 i(
jg1
 == 0) {

4911 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4915 
su
 = (
db_t_t
)
Db_t_iܙy
(
g1
,
g2
);

4916 i(!
DB_RETOK_STD
(
su
)) {

4917 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4923 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1_1dim
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

4924 
Db
 *
g1
 = (Db *) 0 ;

4925 
g2
 ;

4926 
db_t_t
 
su
;

4928 ()
jv
;

4929 ()
js
;

4930 
g1
 = *(
Db
 **)&
jg1
;

4931 
g2
 = ()
jg2
;

4933 i(
jg1
 == 0) {

4934 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4938 
su
 = (
db_t_t
)
Db_t__dim
(
g1
,
g2
);

4939 i(!
DB_RETOK_STD
(
su
)) {

4940 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4946 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1_1n
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

4947 
Db
 *
g1
 = (Db *) 0 ;

4948 
u_t32_t
 
g2
 ;

4949 
db_t_t
 
su
;

4951 ()
jv
;

4952 ()
js
;

4953 
g1
 = *(
Db
 **)&
jg1
;

4954 
g2
 = (
u_t32_t
)
jg2
;

4956 i(
jg1
 == 0) {

4957 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4961 
su
 = (
db_t_t
)
Db_t__n
(
g1
,
g2
);

4962 i(!
DB_RETOK_STD
(
su
)) {

4963 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4969 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

4970 
Db
 *
g1
 = (Db *) 0 ;

4971 
g2
 ;

4972 
db_t_t
 
su
;

4974 ()
jv
;

4975 ()
js
;

4976 
g1
 = *(
Db
 **)&
jg1
;

4977 
g2
 = ()
jg2
;

4979 i(
jg1
 == 0) {

4980 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

4984 
su
 = (
db_t_t
)
Db_t__d
(
g1
,
g2
);

4985 i(!
DB_RETOK_STD
(
su
)) {

4986 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

4992 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1_1sour
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
) {

4993 
Db
 *
g1
 = (Db *) 0 ;

4994 *
g2
 = (*) 0 ;

4995 
db_t_t
 
su
;

4997 ()
jv
;

4998 ()
js
;

4999 
g1
 = *(
Db
 **)&
jg1
;

5000 
g2
 = 0;

5001 i(
jg2
) {

5002 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

5003 i(!
g2
)  ;

5006 i(
jg1
 == 0) {

5007 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5011 
su
 = (
db_t_t
)
Db_t__sour
(
g1
,
g2
);

5012 i(!
DB_RETOK_STD
(
su
)) {

5013 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

5016 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

5020 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1t_1q_1exsize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

5021 
Db
 *
g1
 = (Db *) 0 ;

5022 
u_t32_t
 
g2
 ;

5023 
db_t_t
 
su
;

5025 ()
jv
;

5026 ()
js
;

5027 
g1
 = *(
Db
 **)&
jg1
;

5028 
g2
 = (
u_t32_t
)
jg2
;

5030 i(
jg1
 == 0) {

5031 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5035 
su
 = (
db_t_t
)
Db_t_q_exsize
(
g1
,
g2
);

5036 i(!
DB_RETOK_STD
(
su
)) {

5037 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

5043 
JNIEXPORT
 
jobje
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jt
 
jg3
) {

5044 
jobje
 
jsu
 = 0 ;

5045 
Db
 *
g1
 = (Db *) 0 ;

5046 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

5047 
u_t32_t
 
g3
 ;

5048 *
su
 = 0 ;

5050 ()
jv
;

5051 ()
js
;

5052 
g1
 = *(
Db
 **)&
jg1
;

5053 
g2
 = *(
DB_TXN
 **)&
jg2
;

5054 
g3
 = (
u_t32_t
)
jg3
;

5056 i(
jg1
 == 0) {

5057 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5061 
o
 = 0;

5062 
su
 = (*)
Db_
(
g1
,
g2
,
g3
);

5063 i(!
DB_RETOK_STD
(
o
)) {

5064 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

5068 i(
su
 =
NULL
)

5069 
jsu
 = 
NULL
;

5071 
DB
 *
db
 = (DB *)
g1
;

5072 
DBTYPE
 
dbty
;

5073 
r
;

5075 i((
r
 = 
db
->
g_ty
(db, &
dbty
)) != 0) {

5076 
__dbj_throw
(
jv
, 
r
, 
NULL
, NULL, 
DB2JDBENV
);

5080 
dbty
) {

5082 
DB_BTREE
:

5083 
DB_RECNO
:

5084 
jsu
 = (*
jv
)->
NewObje
(jv, 
bt__ass
,

5085 
bt__cڡru
);

5086 i(
jsu
 !
NULL
)

5087 
__dbj_fl_bt_
(
jv
, 
jsu
,

5088 (
DB_BTREE_STAT
 *)
su
);

5092 
DB_HASH
:

5093 
jsu
 = (*
jv
)->
NewObje
(jv, 
h__ass
,

5094 
h__cڡru
);

5095 i(
jsu
 !
NULL
)

5096 
__dbj_fl_h_
(
jv
, 
jsu
,

5097 (
DB_HASH_STAT
 *)
su
);

5100 
DB_QUEUE
:

5101 
jsu
 = (*
jv
)->
NewObje
(jv, 
qam__ass
,

5102 
qam__cڡru
);

5103 i(
jsu
 !
NULL
)

5104 
__dbj_fl_qam_
(
jv
, 
jsu
,

5105 (
DB_QUEUE_STAT
 *)
su
);

5110 
__dbj_throw
(
jv
, 
EINVAL
, "Db.stat only implemented for"

5111 " BTREE, HASH, QUEUEnd RECNO", 
NULL
, 
DB2JDBENV
);

5115 
__os_u
(
db
->
dbv
, 
su
);

5118  
jsu
;

5122 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1sync
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

5123 
Db
 *
g1
 = (Db *) 0 ;

5124 
u_t32_t
 
g2
 ;

5125 
db_t_t
 
su
;

5127 ()
jv
;

5128 ()
js
;

5129 
g1
 = *(
Db
 **)&
jg1
;

5130 
g2
 = (
u_t32_t
)
jg2
;

5132 i(
jg1
 == 0) {

5133 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5137 
su
 = (
db_t_t
)
Db_sync
(
g1
,
g2
);

5138 i(!
DB_RETOK_STD
(
su
)) {

5139 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

5145 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1un
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, j
jg3
) {

5146 
jt
 
jsu
 = 0 ;

5147 
Db
 *
g1
 = (Db *) 0 ;

5148 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

5149 
u_t32_t
 
g3
 ;

5150 
su
;

5152 ()
jv
;

5153 ()
js
;

5154 
g1
 = *(
Db
 **)&
jg1
;

5155 
g2
 = *(
DB_TXN
 **)&
jg2
;

5156 
g3
 = (
u_t32_t
)
jg3
;

5158 i(
jg1
 == 0) {

5159 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5163 
o
 = 0;

5164 
su
 = ()
Db_un
(
g1
,
g2
,
g3
);

5165 i(!
DB_RETOK_STD
(
o
)) {

5166 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DB2JDBENV
);

5169 
jsu
 = (
jt
)
su
;

5170  
jsu
;

5174 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1upgde
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, 
jt
 
jg3
) {

5175 
Db
 *
g1
 = (Db *) 0 ;

5176 *
g2
 = (*) 0 ;

5177 
u_t32_t
 
g3
 ;

5178 
db_t_t
 
su
;

5180 ()
jv
;

5181 ()
js
;

5182 
g1
 = *(
Db
 **)&
jg1
;

5183 
g2
 = 0;

5184 i(
jg2
) {

5185 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

5186 i(!
g2
)  ;

5188 
g3
 = (
u_t32_t
)
jg3
;

5190 i(
jg1
 == 0) {

5191 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5195 
su
 = (
db_t_t
)
Db_upgde
(
g1
,(cڡ *)
g2
,
g3
);

5196 i(!
DB_RETOK_STD
(
su
)) {

5197 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DB2JDBENV
);

5200 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

5204 
JNIEXPORT
 
jboޗn
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Db_1vify0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, jrg 
jg3
, 
jobje
 
jg4
, 
jt
 
jg5
) {

5205 
jboޗn
 
jsu
 = 0 ;

5206 
Db
 *
g1
 = (Db *) 0 ;

5207 *
g2
 = (*) 0 ;

5208 *
g3
 = (*) 0 ;

5209 
__db_out_am
 
g4
 ;

5210 
u_t32_t
 
g5
 ;

5211 
t_bo
 
su
;

5212 
__dbj_vify_da
 
da4
 ;

5214 ()
jv
;

5215 ()
js
;

5216 
g1
 = *(
Db
 **)&
jg1
;

5217 
g2
 = 0;

5218 i(
jg2
) {

5219 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

5220 i(!
g2
)  0;

5222 
g3
 = 0;

5223 i(
jg3
) {

5224 
g3
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg3
, 0);

5225 i(!
g3
)  0;

5228 
da4
.
jv
 = jenv;

5229 
da4
.
amobj
 = 
jg4
;

5230 
da4
.
bys
 = 
NULL
;

5231 
da4
.
nbys
 = 0;

5232 (&
g4
)->
hd
 = &
da4
;

5233 (&
g4
)->
back
 = 
__dbj_vify_back
;

5235 
g5
 = (
u_t32_t
)
jg5
;

5237 i(
jg1
 == 0) {

5238 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5242 
o
 = 0;

5243 
su
 = (
t_bo
)
Db_vify
(
g1
,(cڡ *)
g2
,(cڡ *)
g3
,
g4
,
g5
);

5244 i(!
DB_RETOK_STD
(
o
)) {

5245 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

5248 
jsu
 = (
su
? 
JNI_TRUE
 : 
JNI_FALSE
;

5249 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

5250 i(
g3
(*
jv
)->
RSgUTFChs
(jv, 
jg3
,rg3);

5251  
jsu
;

5255 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Dbc_1o0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

5256 
Dbc
 *
g1
 = (Dbc *) 0 ;

5257 
db_t_t
 
su
;

5259 ()
jv
;

5260 ()
js
;

5261 
g1
 = *(
Dbc
 **)&
jg1
;

5263 i(
jg1
 == 0) {

5264 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5268 
su
 = (
db_t_t
)
Dbc_o
(
g1
);

5269 i(!
DB_RETOK_STD
(
su
)) {

5270 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

5276 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Dbc_1cou
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, j
jg2
) {

5277 
jt
 
jsu
 = 0 ;

5278 
Dbc
 *
g1
 = (Dbc *) 0 ;

5279 
u_t32_t
 
g2
 ;

5280 
db_o_t
 
su
;

5282 ()
jv
;

5283 ()
js
;

5284 
g1
 = *(
Dbc
 **)&
jg1
;

5285 
g2
 = (
u_t32_t
)
jg2
;

5287 i(
jg1
 == 0) {

5288 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5292 
o
 = 0;

5293 
su
 = (
db_o_t
)
Dbc_cou
(
g1
,
g2
);

5294 i(!
DB_RETOK_STD
(
o
)) {

5295 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DBC2JDBENV
);

5298 
jsu
 = (
jt
)
su
;

5299  
jsu
;

5303 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Dbc_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, j
jg2
) {

5304 
jt
 
jsu
 = 0 ;

5305 
Dbc
 *
g1
 = (Dbc *) 0 ;

5306 
u_t32_t
 
g2
 ;

5307 
su
;

5309 ()
jv
;

5310 ()
js
;

5311 
g1
 = *(
Dbc
 **)&
jg1
;

5312 
g2
 = (
u_t32_t
)
jg2
;

5314 i(
jg1
 == 0) {

5315 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5319 
su
 = ()
Dbc_d
(
g1
,
g2
);

5320 i(!
DB_RETOK_DBCDEL
(
su
)) {

5321 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DBC2JDBENV
);

5324 
jsu
 = (
jt
)
su
;

5325  
jsu
;

5329 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Dbc_1dup
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, 
jt
 
jg2
) {

5330 
jlg
 
jsu
 = 0 ;

5331 
Dbc
 *
g1
 = (Dbc *) 0 ;

5332 
u_t32_t
 
g2
 ;

5333 
DBC
 *
su
 = 0 ;

5335 ()
jv
;

5336 ()
js
;

5337 
g1
 = *(
Dbc
 **)&
jg1
;

5338 
g2
 = (
u_t32_t
)
jg2
;

5340 i(
jg1
 == 0) {

5341 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5345 
o
 = 0;

5346 
su
 = (
DBC
 *)
Dbc_dup
(
g1
,
g2
);

5347 i(!
DB_RETOK_STD
(
o
)) {

5348 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DBC2JDBENV
);

5351 *(
DBC
 **)&
jsu
 = 
su
;

5352  
jsu
;

5356 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Dbc_1g
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
, jobje 
jg3
, j
jg4
) {

5357 
jt
 
jsu
 = 0 ;

5358 
Dbc
 *
g1
 = (Dbc *) 0 ;

5359 
DBT
 *
g2
 = (DBT *) 0 ;

5360 
DBT
 *
g3
 = (DBT *) 0 ;

5361 
u_t32_t
 
g4
 ;

5362 
su
;

5363 
DBT_LOCKED
 
ldbt2
 ;

5364 
DBT_LOCKED
 
ldbt3
 ;

5366 ()
jv
;

5367 ()
js
;

5368 
g1
 = *(
Dbc
 **)&
jg1
;

5370 i(
__dbj_dbt_cy
(
jv
, &
ldbt2
, &
g2
, 
jg2
, 0) != 0) {

5374 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

5377 
g4
 = (
u_t32_t
)
jg4
;

5379 i(
jg1
 == 0) {

5380 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5384 
su
 = ()
Dbc_g
(
g1
,
g2
,
g3
,
g4
);

5385 i(!
DB_RETOK_DBCGET
(
su
)) {

5386 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DBC2JDBENV
);

5389 
jsu
 = (
jt
)
su
;

5390 
__dbj_dbt_a
(
jv
, 
jg2
, 
g2
, &
ldbt2
);

5391 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

5392  
jsu
;

5396 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Dbc_1g_1iܙy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

5397 
jt
 
jsu
 = 0 ;

5398 
Dbc
 *
g1
 = (Dbc *) 0 ;

5399 
DB_CACHE_PRIORITY
 
su
;

5401 ()
jv
;

5402 ()
js
;

5403 
g1
 = *(
Dbc
 **)&
jg1
;

5405 i(
jg1
 == 0) {

5406 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5410 
o
 = 0;

5411 
su
 = (
DB_CACHE_PRIORITY
)
Dbc_g_iܙy
(
g1
);

5412 i(!
DB_RETOK_STD
(
o
)) {

5413 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DBC2JDBENV
);

5416 
jsu
 = (
jt
)
su
;

5417  
jsu
;

5421 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Dbc_1pg
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
, jobje 
jg3
, jobje 
jg4
, j
jg5
) {

5422 
jt
 
jsu
 = 0 ;

5423 
Dbc
 *
g1
 = (Dbc *) 0 ;

5424 
DBT
 *
g2
 = (DBT *) 0 ;

5425 
DBT
 *
g3
 = (DBT *) 0 ;

5426 
DBT
 *
g4
 = (DBT *) 0 ;

5427 
u_t32_t
 
g5
 ;

5428 
su
;

5429 
DBT_LOCKED
 
ldbt2
 ;

5430 
DBT_LOCKED
 
ldbt3
 ;

5431 
DBT_LOCKED
 
ldbt4
 ;

5433 ()
jv
;

5434 ()
js
;

5435 
g1
 = *(
Dbc
 **)&
jg1
;

5437 i(
__dbj_dbt_cy
(
jv
, &
ldbt2
, &
g2
, 
jg2
, 0) != 0) {

5441 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

5445 i(
__dbj_dbt_cy
(
jv
, &
ldbt4
, &
g4
, 
jg4
, 0) != 0) {

5448 
g5
 = (
u_t32_t
)
jg5
;

5450 i(
jg1
 == 0) {

5451 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5455 
su
 = ()
Dbc_pg
(
g1
,
g2
,
g3
,
g4
,
g5
);

5456 i(!
DB_RETOK_DBCGET
(
su
)) {

5457 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DBC2JDBENV
);

5460 
jsu
 = (
jt
)
su
;

5461 
__dbj_dbt_a
(
jv
, 
jg2
, 
g2
, &
ldbt2
);

5462 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

5463 
__dbj_dbt_a
(
jv
, 
jg4
, 
g4
, &
ldbt4
);

5464  
jsu
;

5468 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Dbc_1put
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
, jobje 
jg3
, j
jg4
) {

5469 
jt
 
jsu
 = 0 ;

5470 
Dbc
 *
g1
 = (Dbc *) 0 ;

5471 
DBT
 *
g2
 = (DBT *) 0 ;

5472 
DBT
 *
g3
 = (DBT *) 0 ;

5473 
u_t32_t
 
g4
 ;

5474 
su
;

5475 
DBT_LOCKED
 
ldbt2
 ;

5476 
DBT_LOCKED
 
ldbt3
 ;

5478 ()
jv
;

5479 ()
js
;

5480 
g1
 = *(
Dbc
 **)&
jg1
;

5482 i(
__dbj_dbt_cy
(
jv
, &
ldbt2
, &
g2
, 
jg2
, 0) != 0) {

5486 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

5489 
g4
 = (
u_t32_t
)
jg4
;

5491 i(
jg1
 == 0) {

5492 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5496 
su
 = ()
Dbc_put
(
g1
,
g2
,
g3
,
g4
);

5497 i(!
DB_RETOK_DBCPUT
(
su
)) {

5498 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
DBC2JDBENV
);

5501 
jsu
 = (
jt
)
su
;

5502 
__dbj_dbt_a
(
jv
, 
jg2
, 
g2
, &
ldbt2
);

5503 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

5504  
jsu
;

5508 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_Dbc_1t_1iܙy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

5509 
Dbc
 *
g1
 = (Dbc *) 0 ;

5510 
DB_CACHE_PRIORITY
 
g2
 ;

5511 
db_t_t
 
su
;

5513 ()
jv
;

5514 ()
js
;

5515 
g1
 = *(
Dbc
 **)&
jg1
;

5516 
g2
 = (
DB_CACHE_PRIORITY
)
jg2
;

5518 i(
jg1
 == 0) {

5519 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5523 
o
 = 0;

5524 
su
 = (
db_t_t
)
Dbc_t_iܙy
(
g1
,
g2
);

5525 i(!
DB_RETOK_STD
(
o
)) {

5526 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
DBC2JDBENV
);

5532 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_w_1DbEnv
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jt
 
jg1
) {

5533 
jlg
 
jsu
 = 0 ;

5534 
u_t32_t
 
g1
 ;

5535 
DbEnv
 *
su
 = 0 ;

5537 ()
jv
;

5538 ()
js
;

5539 
g1
 = (
u_t32_t
)
jg1
;

5541 
o
 = 0;

5542 
su
 = (
DbEnv
 *)
w_DbEnv
(
g1
);

5543 i(!
DB_RETOK_STD
(
o
)) {

5544 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

5547 *(
DbEnv
 **)&
jsu
 = 
su
;

5548  
jsu
;

5552 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1o0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

5553 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5554 
u_t32_t
 
g2
 ;

5555 
db_t_t
 
su
;

5557 ()
jv
;

5558 ()
js
;

5559 
g1
 = *(
DbEnv
 **)&
jg1
;

5560 
g2
 = (
u_t32_t
)
jg2
;

5562 i(
jg1
 == 0) {

5563 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5567 
su
 = (
db_t_t
)
DbEnv_o
(
g1
,
g2
);

5568 i(!
DB_RETOK_STD
(
su
)) {

5569 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

5575 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1dbmove
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jrg
 
jg3
, jrg 
jg4
, 
jt
 
jg5
) {

5576 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5577 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

5578 *
g3
 = (*) 0 ;

5579 *
g4
 = (*) 0 ;

5580 
u_t32_t
 
g5
 ;

5581 
db_t_t
 
su
;

5583 ()
jv
;

5584 ()
js
;

5585 
g1
 = *(
DbEnv
 **)&
jg1
;

5586 
g2
 = *(
DB_TXN
 **)&
jg2
;

5587 
g3
 = 0;

5588 i(
jg3
) {

5589 
g3
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg3
, 0);

5590 i(!
g3
)  ;

5592 
g4
 = 0;

5593 i(
jg4
) {

5594 
g4
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg4
, 0);

5595 i(!
g4
)  ;

5597 
g5
 = (
u_t32_t
)
jg5
;

5599 i(
jg1
 == 0) {

5600 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5604 
su
 = (
db_t_t
)
DbEnv_dbmove
(
g1
,
g2
,(cڡ *)
g3
,(cڡ *)
g4
,
g5
);

5605 i(!
DB_RETOK_STD
(
su
)) {

5606 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

5609 i(
g3
(*
jv
)->
RSgUTFChs
(jv, 
jg3
,rg3);

5610 i(
g4
(*
jv
)->
RSgUTFChs
(jv, 
jg4
,rg4);

5614 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1dbme
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jrg
 
jg3
, jrg 
jg4
, jrg 
jg5
, 
jt
 
jg6
) {

5615 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5616 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

5617 *
g3
 = (*) 0 ;

5618 *
g4
 = (*) 0 ;

5619 *
g5
 = (*) 0 ;

5620 
u_t32_t
 
g6
 ;

5621 
db_t_t
 
su
;

5623 ()
jv
;

5624 ()
js
;

5625 
g1
 = *(
DbEnv
 **)&
jg1
;

5626 
g2
 = *(
DB_TXN
 **)&
jg2
;

5627 
g3
 = 0;

5628 i(
jg3
) {

5629 
g3
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg3
, 0);

5630 i(!
g3
)  ;

5632 
g4
 = 0;

5633 i(
jg4
) {

5634 
g4
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg4
, 0);

5635 i(!
g4
)  ;

5637 
g5
 = 0;

5638 i(
jg5
) {

5639 
g5
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg5
, 0);

5640 i(!
g5
)  ;

5642 
g6
 = (
u_t32_t
)
jg6
;

5644 i(
jg1
 == 0) {

5645 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5649 
su
 = (
db_t_t
)
DbEnv_dbme
(
g1
,
g2
,(cڡ *)
g3
,(cڡ *)
g4
,(cڡ *)
g5
,
g6
);

5650 i(!
DB_RETOK_STD
(
su
)) {

5651 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

5654 i(
g3
(*
jv
)->
RSgUTFChs
(jv, 
jg3
,rg3);

5655 i(
g4
(*
jv
)->
RSgUTFChs
(jv, 
jg4
,rg4);

5656 i(
g5
(*
jv
)->
RSgUTFChs
(jv, 
jg5
,rg5);

5660 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1r
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, 
jrg
 
jg3
) {

5661 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5662 
g2
 ;

5663 *
g3
 = (*) 0 ;

5665 ()
jv
;

5666 ()
js
;

5667 
g1
 = *(
DbEnv
 **)&
jg1
;

5668 
g2
 = ()
jg2
;

5669 
g3
 = 0;

5670 i(
jg3
) {

5671 
g3
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg3
, 0);

5672 i(!
g3
)  ;

5675 i(
jg1
 == 0) {

5676 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5679 
DbEnv_r
(
g1
,
g2
,(cڡ *)
g3
);

5680 i(
g3
(*
jv
)->
RSgUTFChs
(jv, 
jg3
,rg3);

5684 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1rx
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
) {

5685 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5686 *
g2
 = (*) 0 ;

5688 ()
jv
;

5689 ()
js
;

5690 
g1
 = *(
DbEnv
 **)&
jg1
;

5691 
g2
 = 0;

5692 i(
jg2
) {

5693 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

5694 i(!
g2
)  ;

5697 i(
jg1
 == 0) {

5698 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5701 
DbEnv_rx
(
g1
,(cڡ *)
g2
);

5702 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

5706 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1cdsgroup_1beg
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

5707 
jlg
 
jsu
 = 0 ;

5708 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5709 
DB_TXN
 *
su
 = 0 ;

5711 ()
jv
;

5712 ()
js
;

5713 
g1
 = *(
DbEnv
 **)&
jg1
;

5715 i(
jg1
 == 0) {

5716 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5719 
su
 = (
DB_TXN
 *)
DbEnv_cdsgroup_beg
(
g1
);

5720 *(
DB_TXN
 **)&
jsu
 = 
su
;

5721  
jsu
;

5725 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1feid_1t
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, 
jt
 
jg3
) {

5726 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5727 *
g2
 = (*) 0 ;

5728 
u_t32_t
 
g3
 ;

5729 
db_t_t
 
su
;

5731 ()
jv
;

5732 ()
js
;

5733 
g1
 = *(
DbEnv
 **)&
jg1
;

5734 
g2
 = 0;

5735 i(
jg2
) {

5736 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

5737 i(!
g2
)  ;

5739 
g3
 = (
u_t32_t
)
jg3
;

5741 i(
jg1
 == 0) {

5742 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5745 
su
 = (
db_t_t
)
DbEnv_feid_t
(
g1
,(cڡ *)
g2
,
g3
);

5746 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

5750 
JNIEXPORT
 
jobjeAay
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1da_1ds
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

5751 
jobjeAay
 
jsu
 = 0 ;

5752 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5753 **
su
 = 0 ;

5755 ()
jv
;

5756 ()
js
;

5757 
g1
 = *(
DbEnv
 **)&
jg1
;

5759 i(
jg1
 == 0) {

5760 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5764 
o
 = 0;

5765 
su
 = (**)
DbEnv_g_da_ds
(
g1
);

5766 i(!
DB_RETOK_STD
(
o
)) {

5767 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

5771 i(
su
 !
NULL
) {

5772  
i
, 
n
;

5774 
n
 = 0;

5775 
su
[
n
] !
NULL
)

5776 
n
++;

5777 i((
jsu
 = (*
jv
)->
NewObjeAay
(jv, (
jsize
)
n
, 
rg_ass
,

5778 
NULL
)) == NULL)

5780 
i
 = 0; i < 
n
; i++) {

5781 
jrg
 
r
 = (*
jv
)->
NewSgUTF
(jv, 
su
[
i
]);

5782 (*
jv
)->
SObjeAayEmt
(jv, 
jsu
, (
jsize
)
i
, 
r
);

5787  
jsu
;

5791 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1y_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

5792 
jt
 
jsu
 = 0 ;

5793 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5794 
u_t32_t
 
su
;

5796 ()
jv
;

5797 ()
js
;

5798 
g1
 = *(
DbEnv
 **)&
jg1
;

5800 i(
jg1
 == 0) {

5801 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5805 
o
 = 0;

5806 
su
 = (
u_t32_t
)
DbEnv_g_y_ags
(
g1
);

5807 i(!
DB_RETOK_STD
(
o
)) {

5808 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

5811 
jsu
 = (
jt
)
su
;

5812  
jsu
;

5816 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

5817 
jt
 
jsu
 = 0 ;

5818 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5819 
u_t32_t
 
su
;

5821 ()
jv
;

5822 ()
js
;

5823 
g1
 = *(
DbEnv
 **)&
jg1
;

5825 i(
jg1
 == 0) {

5826 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5830 
o
 = 0;

5831 
su
 = (
u_t32_t
)
DbEnv_g_ags
(
g1
);

5832 i(!
DB_RETOK_STD
(
o
)) {

5833 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

5836 
jsu
 = (
jt
)
su
;

5837  
jsu
;

5841 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1home
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

5842 
jrg
 
jsu
 = 0 ;

5843 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5844 *
su
 = 0 ;

5846 ()
jv
;

5847 ()
js
;

5848 
g1
 = *(
DbEnv
 **)&
jg1
;

5850 i(
jg1
 == 0) {

5851 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5855 
o
 = 0;

5856 
su
 = (*)
DbEnv_g_home
(
g1
);

5857 i(!
DB_RETOK_STD
(
o
)) {

5858 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

5861 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

5862  
jsu
;

5866 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1ݒ_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

5867 
jt
 
jsu
 = 0 ;

5868 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5869 
u_t32_t
 
su
;

5871 ()
jv
;

5872 ()
js
;

5873 
g1
 = *(
DbEnv
 **)&
jg1
;

5875 i(
jg1
 == 0) {

5876 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5880 
o
 = 0;

5881 
su
 = (
u_t32_t
)
DbEnv_g_ݒ_ags
(
g1
);

5882 i(!
DB_RETOK_STD
(
o
)) {

5883 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

5886 
jsu
 = (
jt
)
su
;

5887  
jsu
;

5891 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1shm_1key
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

5892 
jlg
 
jsu
 = 0 ;

5893 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5894 
su
;

5896 ()
jv
;

5897 ()
js
;

5898 
g1
 = *(
DbEnv
 **)&
jg1
;

5900 i(
jg1
 == 0) {

5901 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5905 
o
 = 0;

5906 
su
 = ()
DbEnv_g_shm_key
(
g1
);

5907 i(!
DB_RETOK_STD
(
o
)) {

5908 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

5911 
jsu
 = (
jlg
)
su
;

5912  
jsu
;

5916 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1tmp_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

5917 
jrg
 
jsu
 = 0 ;

5918 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5919 *
su
 = 0 ;

5921 ()
jv
;

5922 ()
js
;

5923 
g1
 = *(
DbEnv
 **)&
jg1
;

5925 i(
jg1
 == 0) {

5926 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5930 
o
 = 0;

5931 
su
 = (*)
DbEnv_g_tmp_d
(
g1
);

5932 i(!
DB_RETOK_STD
(
o
)) {

5933 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

5936 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

5937  
jsu
;

5941 
JNIEXPORT
 
jboޗn
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vbo
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

5942 
jboޗn
 
jsu
 = 0 ;

5943 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5944 
u_t32_t
 
g2
 ;

5945 
t_bo
 
su
;

5947 ()
jv
;

5948 ()
js
;

5949 
g1
 = *(
DbEnv
 **)&
jg1
;

5950 
g2
 = (
u_t32_t
)
jg2
;

5952 i(
jg1
 == 0) {

5953 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5957 
o
 = 0;

5958 
su
 = (
t_bo
)
DbEnv_g_vbo
(
g1
,
g2
);

5959 i(!
DB_RETOK_STD
(
o
)) {

5960 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

5963 
jsu
 = (
su
? 
JNI_TRUE
 : 
JNI_FALSE
;

5964  
jsu
;

5968 
JNIEXPORT
 
jboޗn
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1is_1bigdn
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

5969 
jboޗn
 
jsu
 = 0 ;

5970 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5971 
t_bo
 
su
;

5973 ()
jv
;

5974 ()
js
;

5975 
g1
 = *(
DbEnv
 **)&
jg1
;

5977 i(
jg1
 == 0) {

5978 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

5981 
su
 = (
t_bo
)
DbEnv_is_bigdn
(
g1
);

5982 
jsu
 = (
su
? 
JNI_TRUE
 : 
JNI_FALSE
;

5983  
jsu
;

5987 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1l_1t
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, 
jt
 
jg3
) {

5988 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

5989 *
g2
 = (*) 0 ;

5990 
u_t32_t
 
g3
 ;

5991 
db_t_t
 
su
;

5993 ()
jv
;

5994 ()
js
;

5995 
g1
 = *(
DbEnv
 **)&
jg1
;

5996 
g2
 = 0;

5997 i(
jg2
) {

5998 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

5999 i(!
g2
)  ;

6001 
g3
 = (
u_t32_t
)
jg3
;

6003 i(
jg1
 == 0) {

6004 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6008 
su
 = (
db_t_t
)
DbEnv_l_t
(
g1
,(cڡ *)
g2
,
g3
);

6009 i(!
DB_RETOK_STD
(
su
)) {

6010 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6013 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

6017 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1ݒ
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, 
jt
 
jg3
, j
jg4
) {

6018 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6019 *
g2
 = (*) 0 ;

6020 
u_t32_t
 
g3
 ;

6021 
g4
 ;

6022 
db_t_t
 
su
;

6024 ()
jv
;

6025 ()
js
;

6026 
g1
 = *(
DbEnv
 **)&
jg1
;

6027 
g2
 = 0;

6028 i(
jg2
) {

6029 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

6030 i(!
g2
)  ;

6032 
g3
 = (
u_t32_t
)
jg3
;

6033 
g4
 = ()
jg4
;

6035 i(
jg1
 == 0) {

6036 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6040 
su
 = (
db_t_t
)
DbEnv_ݒ
(
g1
,(cڡ *)
g2
,
g3
,
g4
);

6041 i(!
DB_RETOK_STD
(
su
)) {

6042 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6045 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

6049 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1move0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, 
jt
 
jg3
) {

6050 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6051 *
g2
 = (*) 0 ;

6052 
u_t32_t
 
g3
 ;

6053 
db_t_t
 
su
;

6055 ()
jv
;

6056 ()
js
;

6057 
g1
 = *(
DbEnv
 **)&
jg1
;

6058 
g2
 = 0;

6059 i(
jg2
) {

6060 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

6061 i(!
g2
)  ;

6063 
g3
 = (
u_t32_t
)
jg3
;

6065 i(
jg1
 == 0) {

6066 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6070 
su
 = (
db_t_t
)
DbEnv_move
(
g1
,(cڡ *)
g2
,
g3
);

6071 i(!
DB_RETOK_STD
(
su
)) {

6072 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

6075 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

6079 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1chesize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jt
 
jg3
) {

6080 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6081 
jlg
 
g2
 ;

6082 
g3
 ;

6083 
db_t_t
 
su
;

6085 ()
jv
;

6086 ()
js
;

6087 
g1
 = *(
DbEnv
 **)&
jg1
;

6088 
g2
 = 
jg2
;

6089 
g3
 = ()
jg3
;

6091 i(
jg1
 == 0) {

6092 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6096 
su
 = (
db_t_t
)
DbEnv_t_chesize
(
g1
,
g2
,
g3
);

6097 i(!
DB_RETOK_STD
(
su
)) {

6098 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6104 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1che_1max
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
) {

6105 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6106 
jlg
 
g2
 ;

6107 
db_t_t
 
su
;

6109 ()
jv
;

6110 ()
js
;

6111 
g1
 = *(
DbEnv
 **)&
jg1
;

6112 
g2
 = 
jg2
;

6114 i(
jg1
 == 0) {

6115 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6119 
su
 = (
db_t_t
)
DbEnv_t_che_max
(
g1
,
g2
);

6120 i(!
DB_RETOK_STD
(
su
)) {

6121 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6127 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1da_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
) {

6128 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6129 *
g2
 = (*) 0 ;

6130 
db_t_t
 
su
;

6132 ()
jv
;

6133 ()
js
;

6134 
g1
 = *(
DbEnv
 **)&
jg1
;

6135 
g2
 = 0;

6136 i(
jg2
) {

6137 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

6138 i(!
g2
)  ;

6141 i(
jg1
 == 0) {

6142 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6146 
su
 = (
db_t_t
)
DbEnv_t_da_d
(
g1
,(cڡ *)
g2
);

6147 i(!
DB_RETOK_STD
(
su
)) {

6148 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6151 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

6155 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1rmed_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, j
jg3
) {

6156 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6157 
g2
 ;

6158 
u_t32_t
 
g3
 ;

6159 
db_t_t
 
su
;

6161 ()
jv
;

6162 ()
js
;

6163 
g1
 = *(
DbEnv
 **)&
jg1
;

6164 
g2
 = ()
jg2
;

6165 
g3
 = (
u_t32_t
)
jg3
;

6167 i(
jg1
 == 0) {

6168 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6172 
su
 = (
db_t_t
)
DbEnv_t_rmed_d
(
g1
,
g2
,
g3
);

6173 i(!
DB_RETOK_STD
(
su
)) {

6174 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6180 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1y
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, 
jt
 
jg3
) {

6181 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6182 *
g2
 = (*) 0 ;

6183 
u_t32_t
 
g3
 ;

6184 
db_t_t
 
su
;

6186 ()
jv
;

6187 ()
js
;

6188 
g1
 = *(
DbEnv
 **)&
jg1
;

6189 
g2
 = 0;

6190 i(
jg2
) {

6191 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

6192 i(!
g2
)  ;

6194 
g3
 = (
u_t32_t
)
jg3
;

6196 i(
jg1
 == 0) {

6197 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6201 
su
 = (
db_t_t
)
DbEnv_t_y
(
g1
,(cڡ *)
g2
,
g3
);

6202 i(!
DB_RETOK_STD
(
su
)) {

6203 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6206 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

6210 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1r
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

6211 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6212 (*
g2
)(
DB_ENV
 const *,const *,const *) = ((*)(DB_ENV const *,const *,const *)) 0 ;

6214 ()
jv
;

6215 ()
js
;

6216 
g1
 = *(
DbEnv
 **)&
jg1
;

6218 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_r
 : 
NULL
;

6221 i(
jg1
 == 0) {

6222 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6225 
DbEnv_t_r
(
g1
,
g2
);

6229 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, 
jboޗn
 
jg3
) {

6230 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6231 
u_t32_t
 
g2
 ;

6232 
t_bo
 
g3
 ;

6233 
db_t_t
 
su
;

6235 ()
jv
;

6236 ()
js
;

6237 
g1
 = *(
DbEnv
 **)&
jg1
;

6238 
g2
 = (
u_t32_t
)
jg2
;

6239 
g3
 = (
jg3
 =
JNI_TRUE
);

6241 i(
jg1
 == 0) {

6242 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6246 
su
 = (
db_t_t
)
DbEnv_t_ags
(
g1
,
g2
,
g3
);

6247 i(!
DB_RETOK_STD
(
su
)) {

6248 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6254 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1edback
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

6255 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6256 (*
g2
)(
DB_ENV
 *,,) = ((*)(DB_ENV *,,)) 0 ;

6257 
db_t_t
 
su
;

6259 ()
jv
;

6260 ()
js
;

6261 
g1
 = *(
DbEnv
 **)&
jg1
;

6263 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_v_edback
 : 
NULL
;

6266 i(
jg1
 == 0) {

6267 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6271 
su
 = (
db_t_t
)
DbEnv_t_edback
(
g1
,
g2
);

6272 i(!
DB_RETOK_STD
(
su
)) {

6273 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6279 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1mp_1max_1ݒfd
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

6280 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6281 
g2
 ;

6282 
db_t_t
 
su
;

6284 ()
jv
;

6285 ()
js
;

6286 
g1
 = *(
DbEnv
 **)&
jg1
;

6287 
g2
 = ()
jg2
;

6289 i(
jg1
 == 0) {

6290 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6294 
su
 = (
db_t_t
)
DbEnv_t_mp_max_ݒfd
(
g1
,
g2
);

6295 i(!
DB_RETOK_STD
(
su
)) {

6296 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6302 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1mp_1max_1wre
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, jlg 
jg3
) {

6303 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6304 
g2
 ;

6305 
db_timeout_t
 
g3
 ;

6306 
db_t_t
 
su
;

6308 ()
jv
;

6309 ()
js
;

6310 
g1
 = *(
DbEnv
 **)&
jg1
;

6311 
g2
 = ()
jg2
;

6312 
g3
 = (
db_timeout_t
)
jg3
;

6314 i(
jg1
 == 0) {

6315 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6319 
su
 = (
db_t_t
)
DbEnv_t_mp_max_wre
(
g1
,
g2
,
g3
);

6320 i(!
DB_RETOK_STD
(
su
)) {

6321 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6327 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1mp_1mmsize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
) {

6328 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6329 
size_t
 
g2
 ;

6330 
db_t_t
 
su
;

6332 ()
jv
;

6333 ()
js
;

6334 
g1
 = *(
DbEnv
 **)&
jg1
;

6335 
g2
 = (
size_t
)
jg2
;

6337 i(
jg1
 == 0) {

6338 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6342 
su
 = (
db_t_t
)
DbEnv_t_mp_mmsize
(
g1
,
g2
);

6343 i(!
DB_RETOK_STD
(
su
)) {

6344 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6350 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1msg
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

6351 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6352 (*
g2
)(
DB_ENV
 const *,const *) = ((*)(DB_ENV const *,const *)) 0 ;

6354 ()
jv
;

6355 ()
js
;

6356 
g1
 = *(
DbEnv
 **)&
jg1
;

6358 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_mesge
 : 
NULL
;

6361 i(
jg1
 == 0) {

6362 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6365 
DbEnv_t_msg
(
g1
,
g2
);

6369 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1nic
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

6370 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6371 (*
g2
)(
DB_ENV
 *,) = ((*)(DB_ENV *,)) 0 ;

6372 
db_t_t
 
su
;

6374 ()
jv
;

6375 ()
js
;

6376 
g1
 = *(
DbEnv
 **)&
jg1
;

6378 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_nic
 : 
NULL
;

6381 i(
jg1
 == 0) {

6382 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6386 
su
 = (
db_t_t
)
DbEnv_t_nic
(
g1
,
g2
);

6387 i(!
DB_RETOK_STD
(
su
)) {

6388 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6394 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1c_1rv
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, jlg 
jg3
, jlg 
jg4
, 
jt
 
jg5
) {

6395 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6396 *
g2
 = (*) 0 ;

6397 
g3
 ;

6398 
g4
 ;

6399 
u_t32_t
 
g5
 ;

6400 
db_t_t
 
su
;

6402 ()
jv
;

6403 ()
js
;

6404 
g1
 = *(
DbEnv
 **)&
jg1
;

6405 
g2
 = 0;

6406 i(
jg2
) {

6407 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

6408 i(!
g2
)  ;

6410 
g3
 = ()
jg3
;

6411 
g4
 = ()
jg4
;

6412 
g5
 = (
u_t32_t
)
jg5
;

6414 i(
jg1
 == 0) {

6415 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6419 
su
 = (
db_t_t
)
DbEnv_t_c_rv
(
g1
,
g2
,
g3
,
g4
,
g5
);

6420 i(!
DB_RETOK_STD
(
su
)) {

6421 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6424 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

6428 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1shm_1key
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
) {

6429 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6430 
g2
 ;

6431 
db_t_t
 
su
;

6433 ()
jv
;

6434 ()
js
;

6435 
g1
 = *(
DbEnv
 **)&
jg1
;

6436 
g2
 = ()
jg2
;

6438 i(
jg1
 == 0) {

6439 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6443 
su
 = (
db_t_t
)
DbEnv_t_shm_key
(
g1
,
g2
);

6444 i(!
DB_RETOK_STD
(
su
)) {

6445 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6451 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1timeout
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jt
 
jg3
) {

6452 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6453 
db_timeout_t
 
g2
 ;

6454 
u_t32_t
 
g3
 ;

6455 
db_t_t
 
su
;

6457 ()
jv
;

6458 ()
js
;

6459 
g1
 = *(
DbEnv
 **)&
jg1
;

6460 
g2
 = (
db_timeout_t
)
jg2
;

6461 
g3
 = (
u_t32_t
)
jg3
;

6463 i(
jg1
 == 0) {

6464 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6468 
su
 = (
db_t_t
)
DbEnv_t_timeout
(
g1
,
g2
,
g3
);

6469 i(!
DB_RETOK_STD
(
su
)) {

6470 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6476 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1tmp_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
) {

6477 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6478 *
g2
 = (*) 0 ;

6479 
db_t_t
 
su
;

6481 ()
jv
;

6482 ()
js
;

6483 
g1
 = *(
DbEnv
 **)&
jg1
;

6484 
g2
 = 0;

6485 i(
jg2
) {

6486 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

6487 i(!
g2
)  ;

6490 i(
jg1
 == 0) {

6491 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6495 
su
 = (
db_t_t
)
DbEnv_t_tmp_d
(
g1
,(cڡ *)
g2
);

6496 i(!
DB_RETOK_STD
(
su
)) {

6497 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6500 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

6504 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1tx_1max
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

6505 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6506 
u_t32_t
 
g2
 ;

6507 
db_t_t
 
su
;

6509 ()
jv
;

6510 ()
js
;

6511 
g1
 = *(
DbEnv
 **)&
jg1
;

6512 
g2
 = (
u_t32_t
)
jg2
;

6514 i(
jg1
 == 0) {

6515 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6519 
su
 = (
db_t_t
)
DbEnv_t_tx_max
(
g1
,
g2
);

6520 i(!
DB_RETOK_STD
(
su
)) {

6521 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6527 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1p_1dich
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

6528 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6529 (*
g2
)(
DB_ENV
 *,
DBT
 *,
DB_LSN
 *,
db_cs
) = ((*)(DB_ENV *,DBT *,DB_LSN *,db_recops)) 0 ;

6530 
db_t_t
 
su
;

6532 ()
jv
;

6533 ()
js
;

6534 
g1
 = *(
DbEnv
 **)&
jg1
;

6536 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_p_dich
 : 
NULL
;

6539 i(
jg1
 == 0) {

6540 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6544 
su
 = (
db_t_t
)
DbEnv_t_p_dich
(
g1
,
g2
);

6545 i(!
DB_RETOK_STD
(
su
)) {

6546 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6552 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1evt_1nify
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jboޗn
 
jg2
) {

6553 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6554 (*
g2
)(
DB_ENV
 *,
u_t32_t
,*) = ((*)(DB_ENV *,u_int32_t,*)) 0 ;

6555 
db_t_t
 
su
;

6557 ()
jv
;

6558 ()
js
;

6559 
g1
 = *(
DbEnv
 **)&
jg1
;

6561 
g2
 = (
jg2
 =
JNI_TRUE
? 
__dbj_evt_nify
 : 
NULL
;

6564 i(
jg1
 == 0) {

6565 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6569 
su
 = (
db_t_t
)
DbEnv_t_evt_nify
(
g1
,
g2
);

6570 i(!
DB_RETOK_STD
(
su
)) {

6571 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6577 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1tx_1timeamp0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
) {

6578 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6579 
time_t
 *
g2
 = (time_t *) 0 ;

6580 
db_t_t
 
su
;

6581 
time_t
 
time2
 ;

6583 ()
jv
;

6584 ()
js
;

6585 
g1
 = *(
DbEnv
 **)&
jg1
;

6587 
time2
 = (
time_t
)
jg2
;

6588 
g2
 = &
time2
;

6591 i(
jg1
 == 0) {

6592 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6596 
su
 = (
db_t_t
)
DbEnv_t_tx_timeamp
(
g1
,
g2
);

6597 i(!
DB_RETOK_STD
(
su
)) {

6598 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6604 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1vbo
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, 
jboޗn
 
jg3
) {

6605 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6606 
u_t32_t
 
g2
 ;

6607 
t_bo
 
g3
 ;

6608 
db_t_t
 
su
;

6610 ()
jv
;

6611 ()
js
;

6612 
g1
 = *(
DbEnv
 **)&
jg1
;

6613 
g2
 = (
u_t32_t
)
jg2
;

6614 
g3
 = (
jg3
 =
JNI_TRUE
);

6616 i(
jg1
 == 0) {

6617 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6621 
su
 = (
db_t_t
)
DbEnv_t_vbo
(
g1
,
g2
,
g3
);

6622 i(!
DB_RETOK_STD
(
su
)) {

6623 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6629 
JNIEXPORT
 
jobjeAay
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1cis
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

6630 
jobjeAay
 
jsu
 = 0 ;

6631 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6632 
__db_lk_cis
 
su
;

6634 ()
jv
;

6635 ()
js
;

6636 
g1
 = *(
DbEnv
 **)&
jg1
;

6638 i(
jg1
 == 0) {

6639 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6643 
o
 = 0;

6644 
su
 = 
DbEnv_g_lk_cis
(
g1
);

6645 i(!
DB_RETOK_STD
(
o
)) {

6646 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

6650 
i
;

6651 
jbyAay
 
bys
;

6653 
jsu
 = (*
jv
)->
NewObjeAay
(jenv,

6654 (
jsize
)(&
su
)->
lk_modes
, 
byy_ass
, 
NULL
);

6655 i(
jsu
 =
NULL
)

6657 
i
 = 0; i < (&
su
)->
lk_modes
; i++) {

6658 
bys
 = (*
jv
)->
NewByAay
(jv, (
jsize
)(&
su
)->
lk_modes
);

6659 i(
bys
 =
NULL
)

6661 (*
jv
)->
SByAayRegi
(jv, 
bys
, 0, (
jsize
)(&
su
)->
lk_modes
,

6662 (
jby
 *)((&
su
)->
lk_cis
 + 
i
 * (&su)->
lk_modes
));

6663 (*
jv
)->
SObjeAayEmt
(jv, 
jsu
, (
jsize
)
i
, 
bys
);

6666  
jsu
;

6670 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1de
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

6671 
jt
 
jsu
 = 0 ;

6672 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6673 
u_t32_t
 
su
;

6675 ()
jv
;

6676 ()
js
;

6677 
g1
 = *(
DbEnv
 **)&
jg1
;

6679 i(
jg1
 == 0) {

6680 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6684 
o
 = 0;

6685 
su
 = (
u_t32_t
)
DbEnv_g_lk_de
(
g1
);

6686 i(!
DB_RETOK_STD
(
o
)) {

6687 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

6690 
jsu
 = (
jt
)
su
;

6691  
jsu
;

6695 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1max_1locks
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

6696 
jt
 
jsu
 = 0 ;

6697 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6698 
u_t32_t
 
su
;

6700 ()
jv
;

6701 ()
js
;

6702 
g1
 = *(
DbEnv
 **)&
jg1
;

6704 i(
jg1
 == 0) {

6705 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6709 
o
 = 0;

6710 
su
 = (
u_t32_t
)
DbEnv_g_lk_max_locks
(
g1
);

6711 i(!
DB_RETOK_STD
(
o
)) {

6712 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

6715 
jsu
 = (
jt
)
su
;

6716  
jsu
;

6720 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1max_1locks
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

6721 
jt
 
jsu
 = 0 ;

6722 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6723 
u_t32_t
 
su
;

6725 ()
jv
;

6726 ()
js
;

6727 
g1
 = *(
DbEnv
 **)&
jg1
;

6729 i(
jg1
 == 0) {

6730 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6734 
o
 = 0;

6735 
su
 = (
u_t32_t
)
DbEnv_g_lk_max_locks
(
g1
);

6736 i(!
DB_RETOK_STD
(
o
)) {

6737 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

6740 
jsu
 = (
jt
)
su
;

6741  
jsu
;

6745 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1max_1objes
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

6746 
jt
 
jsu
 = 0 ;

6747 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6748 
u_t32_t
 
su
;

6750 ()
jv
;

6751 ()
js
;

6752 
g1
 = *(
DbEnv
 **)&
jg1
;

6754 i(
jg1
 == 0) {

6755 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6759 
o
 = 0;

6760 
su
 = (
u_t32_t
)
DbEnv_g_lk_max_objes
(
g1
);

6761 i(!
DB_RETOK_STD
(
o
)) {

6762 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

6765 
jsu
 = (
jt
)
su
;

6766  
jsu
;

6770 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1de
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, j
jg2
, j
jg3
) {

6771 
jt
 
jsu
 = 0 ;

6772 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6773 
u_t32_t
 
g2
 ;

6774 
u_t32_t
 
g3
 ;

6775 
su
;

6777 ()
jv
;

6778 ()
js
;

6779 
g1
 = *(
DbEnv
 **)&
jg1
;

6780 
g2
 = (
u_t32_t
)
jg2
;

6781 
g3
 = (
u_t32_t
)
jg3
;

6783 i(
jg1
 == 0) {

6784 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6788 
o
 = 0;

6789 
su
 = ()
DbEnv_lock_de
(
g1
,
g2
,
g3
);

6790 i(!
DB_RETOK_STD
(
o
)) {

6791 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

6794 
jsu
 = (
jt
)
su
;

6795  
jsu
;

6799 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1g
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, 
jt
 
jg2
, j
jg3
, 
jobje
 
jg4
, j
jg5
) {

6800 
jlg
 
jsu
 = 0 ;

6801 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6802 
u_t32_t
 
g2
 ;

6803 
u_t32_t
 
g3
 ;

6804 
DBT
 *
g4
 = (DBT *) 0 ;

6805 
db_lockmode_t
 
g5
 ;

6806 
DB_LOCK
 *
su
 = 0 ;

6807 
DBT_LOCKED
 
ldbt4
 ;

6809 ()
jv
;

6810 ()
js
;

6811 
g1
 = *(
DbEnv
 **)&
jg1
;

6812 
g2
 = (
u_t32_t
)
jg2
;

6813 
g3
 = (
u_t32_t
)
jg3
;

6815 i(
__dbj_dbt_cy
(
jv
, &
ldbt4
, &
g4
, 
jg4
, 0) != 0) {

6818 
g5
 = (
db_lockmode_t
)
jg5
;

6820 i(
jg1
 == 0) {

6821 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6825 
o
 = 0;

6826 
su
 = (
DB_LOCK
 *)
DbEnv_lock_g
(
g1
,
g2
,
g3
,(
Dbt
 cڡ *)
g4
,
g5
);

6827 i(!
DB_RETOK_STD
(
o
)) {

6828 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

6831 *(
DB_LOCK
 **)&
jsu
 = 
su
;

6832 
__dbj_dbt_a
(
jv
, 
jg4
, 
g4
, &
ldbt4
);

6833  
jsu
;

6837 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1id
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

6838 
jt
 
jsu
 = 0 ;

6839 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6840 
u_t32_t
 
su
;

6842 ()
jv
;

6843 ()
js
;

6844 
g1
 = *(
DbEnv
 **)&
jg1
;

6846 i(
jg1
 == 0) {

6847 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6851 
o
 = 0;

6852 
su
 = (
u_t32_t
)
DbEnv_lock_id
(
g1
);

6853 i(!
DB_RETOK_STD
(
o
)) {

6854 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

6857 
jsu
 = (
jt
)
su
;

6858  
jsu
;

6862 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1id_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

6863 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6864 
u_t32_t
 
g2
 ;

6865 
db_t_t
 
su
;

6867 ()
jv
;

6868 ()
js
;

6869 
g1
 = *(
DbEnv
 **)&
jg1
;

6870 
g2
 = (
u_t32_t
)
jg2
;

6872 i(
jg1
 == 0) {

6873 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6877 
su
 = (
db_t_t
)
DbEnv_lock_id_
(
g1
,
g2
);

6878 i(!
DB_RETOK_STD
(
su
)) {

6879 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6885 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1put
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
) {

6886 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6887 
DB_LOCK
 *
g2
 = (DB_LOCK *) 0 ;

6888 
db_t_t
 
su
;

6890 ()
jv
;

6891 ()
js
;

6892 
g1
 = *(
DbEnv
 **)&
jg1
;

6893 
g2
 = *(
DB_LOCK
 **)&
jg2
;

6895 i(
jg1
 == 0) {

6896 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6900 
su
 = (
db_t_t
)
DbEnv_lock_put
(
g1
,
g2
);

6901 i(!
DB_RETOK_STD
(
su
)) {

6902 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6908 
JNIEXPORT
 
jobje
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

6909 
jobje
 
jsu
 = 0 ;

6910 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6911 
u_t32_t
 
g2
 ;

6912 
DB_LOCK_STAT
 *
su
 = 0 ;

6914 ()
jv
;

6915 ()
js
;

6916 
g1
 = *(
DbEnv
 **)&
jg1
;

6917 
g2
 = (
u_t32_t
)
jg2
;

6919 i(
jg1
 == 0) {

6920 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6924 
o
 = 0;

6925 
su
 = (
DB_LOCK_STAT
 *)
DbEnv_lock_
(
g1
,
g2
);

6926 i(!
DB_RETOK_STD
(
o
)) {

6927 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

6931 
jsu
 = (*
jv
)->
NewObje
(jv, 
lock__ass
, 
lock__cڡru
);

6932 i(
jsu
 !
NULL
)

6933 
__dbj_fl_lock_
(
jv
, 
jsu
, 
su
);

6934 
__os_u
(
NULL
, 
su
);

6936  
jsu
;

6940 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1cis
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobjeAay
 
jg2
) {

6941 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6942 
__db_lk_cis
 
g2
 ;

6943 
db_t_t
 
su
;

6945 ()
jv
;

6946 ()
js
;

6947 
g1
 = *(
DbEnv
 **)&
jg1
;

6949 
i
, 
n
, 
r
;

6950 
size_t
 
bysize
;

6952 
n
 = (&
g2
)->
lk_modes
 = (*
jv
)->
GAayLgth
(jv, 
jg2
);

6953 
bysize
 = (
u_ch
* 
n
 *en;

6955 i((
r
 = 
__os_mloc
(
NULL
, 
bysize
, &(&
g2
)->
lk_cis
)) != 0) {

6956 
__dbj_throw
(
jv
, 
r
, 
NULL
, NULL, 
JDBENV
);

6960 
i
 = 0; i < 
n
; i++) {

6961 
jobje
 
sub_y
 = (*
jv
)->
GObjeAayEmt
(jenv,

6962 
jg2
, 
i
);

6963 (*
jv
)->
GByAayRegi
(jv,(
jbyAay
)
sub_y
, 0, 
n
,

6964 (
jby
 *)&(&
g2
)->
lk_cis
[
i
 * 
n
]);

6968 i(
jg1
 == 0) {

6969 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6973 
su
 = (
db_t_t
)
DbEnv_t_lk_cis
(
g1
,
g2
);

6974 i(!
DB_RETOK_STD
(
su
)) {

6975 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

6979 
__os_
(
NULL
, (&
g2
)->
lk_cis
);

6984 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1de
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

6985 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

6986 
u_t32_t
 
g2
 ;

6987 
db_t_t
 
su
;

6989 ()
jv
;

6990 ()
js
;

6991 
g1
 = *(
DbEnv
 **)&
jg1
;

6992 
g2
 = (
u_t32_t
)
jg2
;

6994 i(
jg1
 == 0) {

6995 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

6999 
su
 = (
db_t_t
)
DbEnv_t_lk_de
(
g1
,
g2
);

7000 i(!
DB_RETOK_STD
(
su
)) {

7001 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7007 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1max_1locks
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7008 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7009 
u_t32_t
 
g2
 ;

7010 
db_t_t
 
su
;

7012 ()
jv
;

7013 ()
js
;

7014 
g1
 = *(
DbEnv
 **)&
jg1
;

7015 
g2
 = (
u_t32_t
)
jg2
;

7017 i(
jg1
 == 0) {

7018 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7022 
su
 = (
db_t_t
)
DbEnv_t_lk_max_locks
(
g1
,
g2
);

7023 i(!
DB_RETOK_STD
(
su
)) {

7024 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7030 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1max_1locks
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7031 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7032 
u_t32_t
 
g2
 ;

7033 
db_t_t
 
su
;

7035 ()
jv
;

7036 ()
js
;

7037 
g1
 = *(
DbEnv
 **)&
jg1
;

7038 
g2
 = (
u_t32_t
)
jg2
;

7040 i(
jg1
 == 0) {

7041 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7045 
su
 = (
db_t_t
)
DbEnv_t_lk_max_locks
(
g1
,
g2
);

7046 i(!
DB_RETOK_STD
(
su
)) {

7047 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7053 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1max_1objes
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7054 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7055 
u_t32_t
 
g2
 ;

7056 
db_t_t
 
su
;

7058 ()
jv
;

7059 ()
js
;

7060 
g1
 = *(
DbEnv
 **)&
jg1
;

7061 
g2
 = (
u_t32_t
)
jg2
;

7063 i(
jg1
 == 0) {

7064 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7068 
su
 = (
db_t_t
)
DbEnv_t_lk_max_objes
(
g1
,
g2
);

7069 i(!
DB_RETOK_STD
(
su
)) {

7070 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7076 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1bsize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7077 
jt
 
jsu
 = 0 ;

7078 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7079 
u_t32_t
 
su
;

7081 ()
jv
;

7082 ()
js
;

7083 
g1
 = *(
DbEnv
 **)&
jg1
;

7085 i(
jg1
 == 0) {

7086 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7090 
o
 = 0;

7091 
su
 = (
u_t32_t
)
DbEnv_g_lg_bsize
(
g1
);

7092 i(!
DB_RETOK_STD
(
o
)) {

7093 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7096 
jsu
 = (
jt
)
su
;

7097  
jsu
;

7101 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7102 
jrg
 
jsu
 = 0 ;

7103 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7104 *
su
 = 0 ;

7106 ()
jv
;

7107 ()
js
;

7108 
g1
 = *(
DbEnv
 **)&
jg1
;

7110 i(
jg1
 == 0) {

7111 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7115 
o
 = 0;

7116 
su
 = (*)
DbEnv_g_lg_d
(
g1
);

7117 i(!
DB_RETOK_STD
(
o
)) {

7118 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7121 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

7122  
jsu
;

7126 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1femode
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7127 
jt
 
jsu
 = 0 ;

7128 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7129 
su
;

7131 ()
jv
;

7132 ()
js
;

7133 
g1
 = *(
DbEnv
 **)&
jg1
;

7135 i(
jg1
 == 0) {

7136 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7140 
o
 = 0;

7141 
su
 = ()
DbEnv_g_lg_femode
(
g1
);

7142 i(!
DB_RETOK_STD
(
o
)) {

7143 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7146 
jsu
 = (
jt
)
su
;

7147  
jsu
;

7151 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1max
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7152 
jt
 
jsu
 = 0 ;

7153 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7154 
u_t32_t
 
su
;

7156 ()
jv
;

7157 ()
js
;

7158 
g1
 = *(
DbEnv
 **)&
jg1
;

7160 i(
jg1
 == 0) {

7161 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7165 
o
 = 0;

7166 
su
 = (
u_t32_t
)
DbEnv_g_lg_max
(
g1
);

7167 i(!
DB_RETOK_STD
(
o
)) {

7168 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7171 
jsu
 = (
jt
)
su
;

7172  
jsu
;

7176 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1gimax
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7177 
jt
 
jsu
 = 0 ;

7178 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7179 
u_t32_t
 
su
;

7181 ()
jv
;

7182 ()
js
;

7183 
g1
 = *(
DbEnv
 **)&
jg1
;

7185 i(
jg1
 == 0) {

7186 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7190 
o
 = 0;

7191 
su
 = (
u_t32_t
)
DbEnv_g_lg_gimax
(
g1
);

7192 i(!
DB_RETOK_STD
(
o
)) {

7193 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7196 
jsu
 = (
jt
)
su
;

7197  
jsu
;

7201 
JNIEXPORT
 
jobjeAay
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1chive
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7202 
jobjeAay
 
jsu
 = 0 ;

7203 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7204 
u_t32_t
 
g2
 ;

7205 **
su
 = 0 ;

7207 ()
jv
;

7208 ()
js
;

7209 
g1
 = *(
DbEnv
 **)&
jg1
;

7210 
g2
 = (
u_t32_t
)
jg2
;

7212 i(
jg1
 == 0) {

7213 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7217 
o
 = 0;

7218 
su
 = (**)
DbEnv_log_chive
(
g1
,
g2
);

7219 i(!
DB_RETOK_STD
(
o
)) {

7220 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7224 i(
su
 !
NULL
) {

7225  
i
, 
n
;

7227 
n
 = 0;

7228 
su
[
n
] !
NULL
)

7229 
n
++;

7230 i((
jsu
 = (*
jv
)->
NewObjeAay
(jv, (
jsize
)
n
, 
rg_ass
,

7231 
NULL
)) == NULL)

7233 
i
 = 0; i < 
n
; i++) {

7234 
jrg
 
r
 = (*
jv
)->
NewSgUTF
(jv, 
su
[
i
]);

7235 (*
jv
)->
SObjeAayEmt
(jv, 
jsu
, (
jsize
)
i
, 
r
);

7238 
__os_u
(
NULL
, 
su
);

7241  
jsu
;

7245 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1com
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jobje
 
jg1
, jobje 
jg2
) {

7246 
jt
 
jsu
 = 0 ;

7247 
DB_LSN
 *
g1
 = (DB_LSN *) 0 ;

7248 
DB_LSN
 *
g2
 = (DB_LSN *) 0 ;

7249 
su
;

7250 
DB_LSN
 
l1
 ;

7251 
DB_LSN
 
l2
 ;

7253 ()
jv
;

7254 ()
js
;

7256 i(
jg1
 =
NULL
) {

7257 
g1
 = 
NULL
;

7259 
g1
 = &
l1
;

7260 
g1
->
fe
 = (*
jv
)->
GIFld
(jv, 
jg1
, 
dbl_fe_fid
);

7261 
g1
->
offt
 = (*
jv
)->
GIFld
(jv, 
jg1
,

7262 
dbl_offt_fid
);

7266 i(
jg2
 =
NULL
) {

7267 
g2
 = 
NULL
;

7269 
g2
 = &
l2
;

7270 
g2
->
fe
 = (*
jv
)->
GIFld
(jv, 
jg2
, 
dbl_fe_fid
);

7271 
g2
->
offt
 = (*
jv
)->
GIFld
(jv, 
jg2
,

7272 
dbl_offt_fid
);

7276 i(
g1
 =
NULL
) {

7277 
__dbj_throw
(
jv
, 
EINVAL
, "nu LogSequNumb", 
NULL
, NULL);

7282 i(
g2
 =
NULL
) {

7283 
__dbj_throw
(
jv
, 
EINVAL
, "nu LogSequNumb", 
NULL
, NULL);

7287 
su
 = ()
DbEnv_log_com
((
DbL
 cڡ *)
g1
,(DbL cڡ *)
g2
);

7288 
jsu
 = (
jt
)
su
;

7290 i(
jg1
 !
NULL
) {

7291 (*
jv
)->
SIFld
(jv, 
jg1
, 
dbl_fe_fid
, 
g1
->
fe
);

7292 (*
jv
)->
SIFld
(jv, 
jg1
,

7293 
dbl_offt_fid
, 
g1
->
offt
);

7297 i(
jg2
 !
NULL
) {

7298 (*
jv
)->
SIFld
(jv, 
jg2
, 
dbl_fe_fid
, 
g2
->
fe
);

7299 (*
jv
)->
SIFld
(jv, 
jg2
,

7300 
dbl_offt_fid
, 
g2
->
offt
);

7303  
jsu
;

7307 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1curs
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, 
jt
 
jg2
) {

7308 
jlg
 
jsu
 = 0 ;

7309 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7310 
u_t32_t
 
g2
 ;

7311 
DB_LOGC
 *
su
 = 0 ;

7313 ()
jv
;

7314 ()
js
;

7315 
g1
 = *(
DbEnv
 **)&
jg1
;

7316 
g2
 = (
u_t32_t
)
jg2
;

7318 i(
jg1
 == 0) {

7319 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7323 
o
 = 0;

7324 
su
 = (
DB_LOGC
 *)
DbEnv_log_curs
(
g1
,
g2
);

7325 i(!
DB_RETOK_STD
(
o
)) {

7326 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7329 *(
DB_LOGC
 **)&
jsu
 = 
su
;

7330  
jsu
;

7334 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1fe
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
) {

7335 
jrg
 
jsu
 = 0 ;

7336 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7337 
DB_LSN
 *
g2
 = (DB_LSN *) 0 ;

7338 *
su
 = 0 ;

7339 
DB_LSN
 
l2
 ;

7341 ()
jv
;

7342 ()
js
;

7343 
g1
 = *(
DbEnv
 **)&
jg1
;

7345 i(
jg2
 =
NULL
) {

7346 
g2
 = 
NULL
;

7348 
g2
 = &
l2
;

7349 
g2
->
fe
 = (*
jv
)->
GIFld
(jv, 
jg2
, 
dbl_fe_fid
);

7350 
g2
->
offt
 = (*
jv
)->
GIFld
(jv, 
jg2
,

7351 
dbl_offt_fid
);

7355 i(
jg1
 == 0) {

7356 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7360 i(
g2
 =
NULL
) {

7361 
__dbj_throw
(
jv
, 
EINVAL
, "nu LogSequNumb", 
NULL
, NULL);

7366 
o
 = 0;

7367 
su
 = (*)
DbEnv_log_fe
(
g1
,
g2
);

7368 i(!
DB_RETOK_STD
(
o
)) {

7369 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7372 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

7374 i(
jg2
 !
NULL
) {

7375 (*
jv
)->
SIFld
(jv, 
jg2
, 
dbl_fe_fid
, 
g2
->
fe
);

7376 (*
jv
)->
SIFld
(jv, 
jg2
,

7377 
dbl_offt_fid
, 
g2
->
offt
);

7380  
jsu
;

7384 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1ush
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
) {

7385 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7386 
DB_LSN
 *
g2
 = (DB_LSN *) 0 ;

7387 
db_t_t
 
su
;

7388 
DB_LSN
 
l2
 ;

7390 ()
jv
;

7391 ()
js
;

7392 
g1
 = *(
DbEnv
 **)&
jg1
;

7394 i(
jg2
 =
NULL
) {

7395 
g2
 = 
NULL
;

7397 
g2
 = &
l2
;

7398 
g2
->
fe
 = (*
jv
)->
GIFld
(jv, 
jg2
, 
dbl_fe_fid
);

7399 
g2
->
offt
 = (*
jv
)->
GIFld
(jv, 
jg2
,

7400 
dbl_offt_fid
);

7404 i(
jg1
 == 0) {

7405 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7410 
su
 = (
db_t_t
)
DbEnv_log_ush
(
g1
,(
DbL
 cڡ *)
g2
);

7411 i(!
DB_RETOK_STD
(
su
)) {

7412 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7416 i(
jg2
 !
NULL
) {

7417 (*
jv
)->
SIFld
(jv, 
jg2
, 
dbl_fe_fid
, 
g2
->
fe
);

7418 (*
jv
)->
SIFld
(jv, 
jg2
,

7419 
dbl_offt_fid
, 
g2
->
offt
);

7425 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1put
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
, jobje 
jg3
, 
jt
 
jg4
) {

7426 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7427 
DB_LSN
 *
g2
 = (DB_LSN *) 0 ;

7428 
DBT
 *
g3
 = (DBT *) 0 ;

7429 
u_t32_t
 
g4
 ;

7430 
db_t_t
 
su
;

7431 
DB_LSN
 
l2
 ;

7432 
DBT_LOCKED
 
ldbt3
 ;

7434 ()
jv
;

7435 ()
js
;

7436 
g1
 = *(
DbEnv
 **)&
jg1
;

7438 i(
jg2
 =
NULL
) {

7439 
g2
 = 
NULL
;

7441 
g2
 = &
l2
;

7442 
g2
->
fe
 = (*
jv
)->
GIFld
(jv, 
jg2
, 
dbl_fe_fid
);

7443 
g2
->
offt
 = (*
jv
)->
GIFld
(jv, 
jg2
,

7444 
dbl_offt_fid
);

7448 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

7451 
g4
 = (
u_t32_t
)
jg4
;

7453 i(
jg1
 == 0) {

7454 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7458 i(
g2
 =
NULL
) {

7459 
__dbj_throw
(
jv
, 
EINVAL
, "nu LogSequNumb", 
NULL
, NULL);

7464 
su
 = (
db_t_t
)
DbEnv_log_put
(
g1
,
g2
,(
Dbt
 cڡ *)
g3
,
g4
);

7465 i(!
DB_RETOK_STD
(
su
)) {

7466 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7470 i(
jg2
 !
NULL
) {

7471 (*
jv
)->
SIFld
(jv, 
jg2
, 
dbl_fe_fid
, 
g2
->
fe
);

7472 (*
jv
)->
SIFld
(jv, 
jg2
,

7473 
dbl_offt_fid
, 
g2
->
offt
);

7476 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

7480 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1t
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jrg
 
jg3
) {

7481 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7482 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

7483 *
g3
 = (*) 0 ;

7484 
db_t_t
 
su
;

7486 ()
jv
;

7487 ()
js
;

7488 
g1
 = *(
DbEnv
 **)&
jg1
;

7489 
g2
 = *(
DB_TXN
 **)&
jg2
;

7490 
g3
 = 0;

7491 i(
jg3
) {

7492 
g3
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg3
, 0);

7493 i(!
g3
)  ;

7496 i(
jg1
 == 0) {

7497 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7501 
su
 = (
db_t_t
)
DbEnv_log_t
(
g1
,
g2
,(cڡ *)
g3
);

7502 i(!
DB_RETOK_STD
(
su
)) {

7503 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7506 i(
g3
(*
jv
)->
RSgUTFChs
(jv, 
jg3
,rg3);

7510 
JNIEXPORT
 
jobje
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7511 
jobje
 
jsu
 = 0 ;

7512 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7513 
u_t32_t
 
g2
 ;

7514 
DB_LOG_STAT
 *
su
 = 0 ;

7516 ()
jv
;

7517 ()
js
;

7518 
g1
 = *(
DbEnv
 **)&
jg1
;

7519 
g2
 = (
u_t32_t
)
jg2
;

7521 i(
jg1
 == 0) {

7522 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7526 
o
 = 0;

7527 
su
 = (
DB_LOG_STAT
 *)
DbEnv_log_
(
g1
,
g2
);

7528 i(!
DB_RETOK_STD
(
o
)) {

7529 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7533 
jsu
 = (*
jv
)->
NewObje
(jv, 
log__ass
, 
log__cڡru
);

7534 i(
jsu
 !
NULL
)

7535 
__dbj_fl_log_
(
jv
, 
jsu
, 
su
);

7536 
__os_u
(
NULL
, 
su
);

7538  
jsu
;

7542 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1bsize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7543 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7544 
u_t32_t
 
g2
 ;

7545 
db_t_t
 
su
;

7547 ()
jv
;

7548 ()
js
;

7549 
g1
 = *(
DbEnv
 **)&
jg1
;

7550 
g2
 = (
u_t32_t
)
jg2
;

7552 i(
jg1
 == 0) {

7553 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7557 
su
 = (
db_t_t
)
DbEnv_t_lg_bsize
(
g1
,
g2
);

7558 i(!
DB_RETOK_STD
(
su
)) {

7559 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7565 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1d
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
) {

7566 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7567 *
g2
 = (*) 0 ;

7568 
db_t_t
 
su
;

7570 ()
jv
;

7571 ()
js
;

7572 
g1
 = *(
DbEnv
 **)&
jg1
;

7573 
g2
 = 0;

7574 i(
jg2
) {

7575 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

7576 i(!
g2
)  ;

7579 i(
jg1
 == 0) {

7580 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7584 
su
 = (
db_t_t
)
DbEnv_t_lg_d
(
g1
,(cڡ *)
g2
);

7585 i(!
DB_RETOK_STD
(
su
)) {

7586 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7589 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

7593 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1femode
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7594 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7595 
g2
 ;

7596 
db_t_t
 
su
;

7598 ()
jv
;

7599 ()
js
;

7600 
g1
 = *(
DbEnv
 **)&
jg1
;

7601 
g2
 = ()
jg2
;

7603 i(
jg1
 == 0) {

7604 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7608 
su
 = (
db_t_t
)
DbEnv_t_lg_femode
(
g1
,
g2
);

7609 i(!
DB_RETOK_STD
(
su
)) {

7610 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7616 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1max
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7617 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7618 
u_t32_t
 
g2
 ;

7619 
db_t_t
 
su
;

7621 ()
jv
;

7622 ()
js
;

7623 
g1
 = *(
DbEnv
 **)&
jg1
;

7624 
g2
 = (
u_t32_t
)
jg2
;

7626 i(
jg1
 == 0) {

7627 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7631 
su
 = (
db_t_t
)
DbEnv_t_lg_max
(
g1
,
g2
);

7632 i(!
DB_RETOK_STD
(
su
)) {

7633 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7639 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1gimax
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7640 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7641 
u_t32_t
 
g2
 ;

7642 
db_t_t
 
su
;

7644 ()
jv
;

7645 ()
js
;

7646 
g1
 = *(
DbEnv
 **)&
jg1
;

7647 
g2
 = (
u_t32_t
)
jg2
;

7649 i(
jg1
 == 0) {

7650 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7654 
su
 = (
db_t_t
)
DbEnv_t_lg_gimax
(
g1
,
g2
);

7655 i(!
DB_RETOK_STD
(
su
)) {

7656 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

7662 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1chesize
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

7663 
jlg
 
jsu
 = 0 ;

7664 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7665 
jlg
 
su
;

7667 ()
jv
;

7668 ()
js
;

7669 
g1
 = *(
DbEnv
 **)&
jg1
;

7671 i(
jg1
 == 0) {

7672 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7676 
o
 = 0;

7677 
su
 = 
DbEnv_g_chesize
(
g1
);

7678 i(!
DB_RETOK_STD
(
o
)) {

7679 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7682 
jsu
 = 
su
;

7683  
jsu
;

7687 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1chesize_1nche
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7688 
jt
 
jsu
 = 0 ;

7689 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7690 
su
;

7692 ()
jv
;

7693 ()
js
;

7694 
g1
 = *(
DbEnv
 **)&
jg1
;

7696 i(
jg1
 == 0) {

7697 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7701 
o
 = 0;

7702 
su
 = ()
DbEnv_g_chesize_nche
(
g1
);

7703 i(!
DB_RETOK_STD
(
o
)) {

7704 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7707 
jsu
 = (
jt
)
su
;

7708  
jsu
;

7712 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1che_1max
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

7713 
jlg
 
jsu
 = 0 ;

7714 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7715 
jlg
 
su
;

7717 ()
jv
;

7718 ()
js
;

7719 
g1
 = *(
DbEnv
 **)&
jg1
;

7721 i(
jg1
 == 0) {

7722 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7726 
o
 = 0;

7727 
su
 = 
DbEnv_g_che_max
(
g1
);

7728 i(!
DB_RETOK_STD
(
o
)) {

7729 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7732 
jsu
 = 
su
;

7733  
jsu
;

7737 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1max_1ݒfd
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7738 
jt
 
jsu
 = 0 ;

7739 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7740 
su
;

7742 ()
jv
;

7743 ()
js
;

7744 
g1
 = *(
DbEnv
 **)&
jg1
;

7746 i(
jg1
 == 0) {

7747 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7751 
o
 = 0;

7752 
su
 = ()
DbEnv_g_mp_max_ݒfd
(
g1
);

7753 i(!
DB_RETOK_STD
(
o
)) {

7754 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7757 
jsu
 = (
jt
)
su
;

7758  
jsu
;

7762 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1max_1wre
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7763 
jt
 
jsu
 = 0 ;

7764 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7765 
su
;

7767 ()
jv
;

7768 ()
js
;

7769 
g1
 = *(
DbEnv
 **)&
jg1
;

7771 i(
jg1
 == 0) {

7772 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7776 
o
 = 0;

7777 
su
 = ()
DbEnv_g_mp_max_wre
(
g1
);

7778 i(!
DB_RETOK_STD
(
o
)) {

7779 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7782 
jsu
 = (
jt
)
su
;

7783  
jsu
;

7787 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1max_1wre_1p
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

7788 
jlg
 
jsu
 = 0 ;

7789 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7790 
db_timeout_t
 
su
;

7792 ()
jv
;

7793 ()
js
;

7794 
g1
 = *(
DbEnv
 **)&
jg1
;

7796 i(
jg1
 == 0) {

7797 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7801 
o
 = 0;

7802 
su
 = (
db_timeout_t
)
DbEnv_g_mp_max_wre_p
(
g1
);

7803 i(!
DB_RETOK_STD
(
o
)) {

7804 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7807 
jsu
 = (
jlg
)
su
;

7808  
jsu
;

7812 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1mmsize
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

7813 
jlg
 
jsu
 = 0 ;

7814 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7815 
size_t
 
su
;

7817 ()
jv
;

7818 ()
js
;

7819 
g1
 = *(
DbEnv
 **)&
jg1
;

7821 i(
jg1
 == 0) {

7822 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7826 
o
 = 0;

7827 
su
 = 
DbEnv_g_mp_mmsize
(
g1
);

7828 i(!
DB_RETOK_STD
(
o
)) {

7829 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7832 
jsu
 = (
jlg
)
su
;

7833  
jsu
;

7837 
JNIEXPORT
 
jobje
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1memp_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7838 
jobje
 
jsu
 = 0 ;

7839 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7840 
u_t32_t
 
g2
 ;

7841 
DB_MPOOL_STAT
 *
su
 = 0 ;

7843 ()
jv
;

7844 ()
js
;

7845 
g1
 = *(
DbEnv
 **)&
jg1
;

7846 
g2
 = (
u_t32_t
)
jg2
;

7848 i(
jg1
 == 0) {

7849 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7853 
o
 = 0;

7854 
su
 = (
DB_MPOOL_STAT
 *)
DbEnv_memp_
(
g1
,
g2
);

7855 i(!
DB_RETOK_STD
(
o
)) {

7856 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7860 
jsu
 = (*
jv
)->
NewObje
(jv, 
mpo__ass
, 
mpo__cڡru
);

7861 i(
jsu
 !
NULL
)

7862 
__dbj_fl_mpo_
(
jv
, 
jsu
, 
su
);

7863 
__os_u
(
NULL
, 
su
);

7865  
jsu
;

7869 
JNIEXPORT
 
jobjeAay
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1memp_1f
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

7870 
jobjeAay
 
jsu
 = 0 ;

7871 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7872 
u_t32_t
 
g2
 ;

7873 
DB_MPOOL_FSTAT
 **
su
 = 0 ;

7875 ()
jv
;

7876 ()
js
;

7877 
g1
 = *(
DbEnv
 **)&
jg1
;

7878 
g2
 = (
u_t32_t
)
jg2
;

7880 i(
jg1
 == 0) {

7881 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7885 
o
 = 0;

7886 
su
 = (
DB_MPOOL_FSTAT
 **)
DbEnv_memp_f
(
g1
,
g2
);

7887 i(!
DB_RETOK_STD
(
o
)) {

7888 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7892 
i
, 
n
;

7894 
n
 = 0;

7895 
su
[
n
] !
NULL
)

7896 
n
++;

7897 
jsu
 = (*
jv
)->
NewObjeAay
(jv, (
jsize
)
n
,

7898 
mpo_f_ass
, 0);

7899 i(
jsu
 =
NULL
) {

7900 
__os_u
(
NULL
, 
su
);

7903 
i
 = 0; i < 
n
; i++) {

7904 
jobje
 
obj
 = (*
jv
)->
NewObje
(jv, 
mpo_f_ass
,

7905 
mpo_f_cڡru
);

7906 i(
obj
 =
NULL
) {

7907 
__os_u
(
NULL
, 
su
);

7910 (*
jv
)->
SObjeAayEmt
(jv, 
jsu
, 
i
, 
obj
);

7911 
__dbj_fl_mpo_f
(
jv
, 
obj
, 
su
[
i
]);

7913 
__os_u
(
NULL
, 
su
);

7915  
jsu
;

7919 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1memp_1ick
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, j
jg2
) {

7920 
jt
 
jsu
 = 0 ;

7921 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7922 
g2
 ;

7923 
su
;

7925 ()
jv
;

7926 ()
js
;

7927 
g1
 = *(
DbEnv
 **)&
jg1
;

7928 
g2
 = ()
jg2
;

7930 i(
jg1
 == 0) {

7931 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7935 
o
 = 0;

7936 
su
 = ()
DbEnv_memp_ick
(
g1
,
g2
);

7937 i(!
DB_RETOK_STD
(
o
)) {

7938 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7941 
jsu
 = (
jt
)
su
;

7942  
jsu
;

7946 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1ign
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7947 
jt
 
jsu
 = 0 ;

7948 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7949 
u_t32_t
 
su
;

7951 ()
jv
;

7952 ()
js
;

7953 
g1
 = *(
DbEnv
 **)&
jg1
;

7955 i(
jg1
 == 0) {

7956 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7960 
o
 = 0;

7961 
su
 = (
u_t32_t
)
DbEnv_mux_g_ign
(
g1
);

7962 i(!
DB_RETOK_STD
(
o
)) {

7963 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7966 
jsu
 = (
jt
)
su
;

7967  
jsu
;

7971 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1emt
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7972 
jt
 
jsu
 = 0 ;

7973 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7974 
u_t32_t
 
su
;

7976 ()
jv
;

7977 ()
js
;

7978 
g1
 = *(
DbEnv
 **)&
jg1
;

7980 i(
jg1
 == 0) {

7981 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

7985 
o
 = 0;

7986 
su
 = (
u_t32_t
)
DbEnv_mux_g_emt
(
g1
);

7987 i(!
DB_RETOK_STD
(
o
)) {

7988 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

7991 
jsu
 = (
jt
)
su
;

7992  
jsu
;

7996 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1max
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

7997 
jt
 
jsu
 = 0 ;

7998 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

7999 
u_t32_t
 
su
;

8001 ()
jv
;

8002 ()
js
;

8003 
g1
 = *(
DbEnv
 **)&
jg1
;

8005 i(
jg1
 == 0) {

8006 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8010 
o
 = 0;

8011 
su
 = (
u_t32_t
)
DbEnv_mux_g_max
(
g1
);

8012 i(!
DB_RETOK_STD
(
o
)) {

8013 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8016 
jsu
 = (
jt
)
su
;

8017  
jsu
;

8021 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1s_1s
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

8022 
jt
 
jsu
 = 0 ;

8023 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8024 
u_t32_t
 
su
;

8026 ()
jv
;

8027 ()
js
;

8028 
g1
 = *(
DbEnv
 **)&
jg1
;

8030 i(
jg1
 == 0) {

8031 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8035 
o
 = 0;

8036 
su
 = (
u_t32_t
)
DbEnv_mux_g_s_s
(
g1
);

8037 i(!
DB_RETOK_STD
(
o
)) {

8038 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8041 
jsu
 = (
jt
)
su
;

8042  
jsu
;

8046 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1ign
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8047 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8048 
u_t32_t
 
g2
 ;

8049 
db_t_t
 
su
;

8051 ()
jv
;

8052 ()
js
;

8053 
g1
 = *(
DbEnv
 **)&
jg1
;

8054 
g2
 = (
u_t32_t
)
jg2
;

8056 i(
jg1
 == 0) {

8057 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8061 
su
 = (
db_t_t
)
DbEnv_mux_t_ign
(
g1
,
g2
);

8062 i(!
DB_RETOK_STD
(
su
)) {

8063 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8069 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1emt
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8070 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8071 
u_t32_t
 
g2
 ;

8072 
db_t_t
 
su
;

8074 ()
jv
;

8075 ()
js
;

8076 
g1
 = *(
DbEnv
 **)&
jg1
;

8077 
g2
 = (
u_t32_t
)
jg2
;

8079 i(
jg1
 == 0) {

8080 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8084 
su
 = (
db_t_t
)
DbEnv_mux_t_emt
(
g1
,
g2
);

8085 i(!
DB_RETOK_STD
(
su
)) {

8086 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8092 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1max
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8093 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8094 
u_t32_t
 
g2
 ;

8095 
db_t_t
 
su
;

8097 ()
jv
;

8098 ()
js
;

8099 
g1
 = *(
DbEnv
 **)&
jg1
;

8100 
g2
 = (
u_t32_t
)
jg2
;

8102 i(
jg1
 == 0) {

8103 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8107 
su
 = (
db_t_t
)
DbEnv_mux_t_max
(
g1
,
g2
);

8108 i(!
DB_RETOK_STD
(
su
)) {

8109 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8115 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1s_1s
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8116 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8117 
u_t32_t
 
g2
 ;

8118 
db_t_t
 
su
;

8120 ()
jv
;

8121 ()
js
;

8122 
g1
 = *(
DbEnv
 **)&
jg1
;

8123 
g2
 = (
u_t32_t
)
jg2
;

8125 i(
jg1
 == 0) {

8126 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8130 
su
 = (
db_t_t
)
DbEnv_mux_t_s_s
(
g1
,
g2
);

8131 i(!
DB_RETOK_STD
(
su
)) {

8132 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8138 
JNIEXPORT
 
jobje
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8139 
jobje
 
jsu
 = 0 ;

8140 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8141 
u_t32_t
 
g2
 ;

8142 
DB_MUTEX_STAT
 *
su
 = 0 ;

8144 ()
jv
;

8145 ()
js
;

8146 
g1
 = *(
DbEnv
 **)&
jg1
;

8147 
g2
 = (
u_t32_t
)
jg2
;

8149 i(
jg1
 == 0) {

8150 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8154 
o
 = 0;

8155 
su
 = (
DB_MUTEX_STAT
 *)
DbEnv_mux_
(
g1
,
g2
);

8156 i(!
DB_RETOK_STD
(
o
)) {

8157 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8161 
jsu
 = (*
jv
)->
NewObje
(jv, 
mux__ass
, 
mux__cڡru
);

8162 i(
jsu
 !
NULL
)

8163 
__dbj_fl_mux_
(
jv
, 
jsu
, 
su
);

8164 
__os_u
(
NULL
, 
su
);

8166  
jsu
;

8170 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1tx_1max
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

8171 
jt
 
jsu
 = 0 ;

8172 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8173 
u_t32_t
 
su
;

8175 ()
jv
;

8176 ()
js
;

8177 
g1
 = *(
DbEnv
 **)&
jg1
;

8179 i(
jg1
 == 0) {

8180 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8184 
o
 = 0;

8185 
su
 = (
u_t32_t
)
DbEnv_g_tx_max
(
g1
);

8186 i(!
DB_RETOK_STD
(
o
)) {

8187 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8190 
jsu
 = (
jt
)
su
;

8191  
jsu
;

8195 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1tx_1timeamp
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

8196 
jlg
 
jsu
 = 0 ;

8197 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8198 
time_t
 
su
;

8200 ()
jv
;

8201 ()
js
;

8202 
g1
 = *(
DbEnv
 **)&
jg1
;

8204 i(
jg1
 == 0) {

8205 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8209 
o
 = 0;

8210 
su
 = 
DbEnv_g_tx_timeamp
(
g1
);

8211 i(!
DB_RETOK_STD
(
o
)) {

8212 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8215 
jsu
 = (
jlg
)
su
;

8216  
jsu
;

8220 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1timeout
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, 
jt
 
jg2
) {

8221 
jlg
 
jsu
 = 0 ;

8222 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8223 
u_t32_t
 
g2
 ;

8224 
db_timeout_t
 
su
;

8226 ()
jv
;

8227 ()
js
;

8228 
g1
 = *(
DbEnv
 **)&
jg1
;

8229 
g2
 = (
u_t32_t
)
jg2
;

8231 i(
jg1
 == 0) {

8232 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8236 
o
 = 0;

8237 
su
 = (
db_timeout_t
)
DbEnv_g_timeout
(
g1
,
g2
);

8238 i(!
DB_RETOK_STD
(
o
)) {

8239 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8242 
jsu
 = (
jlg
)
su
;

8243  
jsu
;

8247 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1beg
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, jlg 
jg2
, 
jt
 
jg3
) {

8248 
jlg
 
jsu
 = 0 ;

8249 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8250 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

8251 
u_t32_t
 
g3
 ;

8252 
DB_TXN
 *
su
 = 0 ;

8254 ()
jv
;

8255 ()
js
;

8256 
g1
 = *(
DbEnv
 **)&
jg1
;

8257 
g2
 = *(
DB_TXN
 **)&
jg2
;

8258 
g3
 = (
u_t32_t
)
jg3
;

8260 i(
jg1
 == 0) {

8261 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8265 
o
 = 0;

8266 
su
 = (
DB_TXN
 *)
DbEnv_txn_beg
(
g1
,
g2
,
g3
);

8267 i(!
DB_RETOK_STD
(
o
)) {

8268 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8271 *(
DB_TXN
 **)&
jsu
 = 
su
;

8272  
jsu
;

8276 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1checkpot
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, j
jg3
, j
jg4
) {

8277 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8278 
u_t32_t
 
g2
 ;

8279 
u_t32_t
 
g3
 ;

8280 
u_t32_t
 
g4
 ;

8281 
db_t_t
 
su
;

8283 ()
jv
;

8284 ()
js
;

8285 
g1
 = *(
DbEnv
 **)&
jg1
;

8286 
g2
 = (
u_t32_t
)
jg2
;

8287 
g3
 = (
u_t32_t
)
jg3
;

8288 
g4
 = (
u_t32_t
)
jg4
;

8290 i(
jg1
 == 0) {

8291 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8295 
su
 = (
db_t_t
)
DbEnv_txn_checkpot
(
g1
,
g2
,
g3
,
g4
);

8296 i(!
DB_RETOK_STD
(
su
)) {

8297 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8303 
JNIEXPORT
 
jobjeAay
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1cov
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, j
jg3
) {

8304 
jobjeAay
 
jsu
 = 0 ;

8305 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8306 
g2
 ;

8307 
u_t32_t
 
g3
 ;

8308 
DB_PREPLIST
 *
su
 = 0 ;

8310 ()
jv
;

8311 ()
js
;

8312 
g1
 = *(
DbEnv
 **)&
jg1
;

8313 
g2
 = ()
jg2
;

8314 
g3
 = (
u_t32_t
)
jg3
;

8316 i(
jg1
 == 0) {

8317 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8321 
o
 = 0;

8322 
su
 = (
DB_PREPLIST
 *)
DbEnv_txn_cov
(
g1
,
g2
,
g3
);

8323 i(!
DB_RETOK_STD
(
o
)) {

8324 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8328 
i
, 
n
;

8330 
n
 = 0;

8331 
su
[
n
].
txn
 !
NULL
)

8332 
n
++;

8333 
jsu
 = (*
jv
)->
NewObjeAay
(jv, (
jsize
)
n
, 
dbli_ass
,

8334 
NULL
);

8335 i(
jsu
 =
NULL
)

8337 
i
 = 0; i < 
n
; i++) {

8338 
jobje
 
jtxn
 = (*
jv
)->
NewObje
(jv, 
dbtxn_ass
,

8339 
dbtxn_cڡru
, 
su
[
i
].
txn
, 
JNI_FALSE
);

8340 
jobje
 
byr
 = (*
jv
)->
NewByAay
(jenv,

8341 (
jsize
)(
su
[
i
].
gid
));

8342 
jobje
 
obj
 = (*
jv
)->
NewObje
(jv, 
dbli_ass
,

8343 
dbli_cڡru
, 
jtxn
, 
byr
);

8345 i(
jtxn
 =
NULL
 || 
byr
 =NULL || 
obj
 == NULL)

8348 (*
jv
)->
SByAayRegi
(jv, 
byr
, 0,

8349 (
jsize
)(
su
[
i
].
gid
), (
jby
 *)result[i].gid);

8350 (*
jv
)->
SObjeAayEmt
(jv, 
jsu
, 
i
, 
obj
);

8352 
__os_u
(
NULL
, 
su
);

8354  
jsu
;

8358 
JNIEXPORT
 
jobje
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8359 
jobje
 
jsu
 = 0 ;

8360 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8361 
u_t32_t
 
g2
 ;

8362 
DB_TXN_STAT
 *
su
 = 0 ;

8364 ()
jv
;

8365 ()
js
;

8366 
g1
 = *(
DbEnv
 **)&
jg1
;

8367 
g2
 = (
u_t32_t
)
jg2
;

8369 i(
jg1
 == 0) {

8370 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8374 
o
 = 0;

8375 
su
 = (
DB_TXN_STAT
 *)
DbEnv_txn_
(
g1
,
g2
);

8376 i(!
DB_RETOK_STD
(
o
)) {

8377 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8381 
i
;

8382 
jobjeAay
 
aives
;

8383 
jsu
 = (*
jv
)->
NewObje
(jv, 
txn__ass
, 
txn__cڡru
);

8384 i(
jsu
 !
NULL
)

8385 
__dbj_fl_txn_
(
jv
, 
jsu
, 
su
);

8387 
aives
 = (*
jv
)->
NewObjeAay
(jv, (
jsize
)
su
->
_ive
,

8388 
txn_aive_ass
, 0);

8389 i(
aives
 =
NULL
) {

8390 
__os_u
(
NULL
, 
su
);

8393 (*
jv
)->
SObjeFld
(jv, 
jsu
,

8394 
txn___txǼay_fid
, 
aives
);

8395 
i
 = 0; i < 
su
->
_ive
; i++) {

8396 
jobje
 
obj
 = (*
jv
)->
NewObje
(jv, 
txn_aive_ass
,

8397 
txn_aive_cڡru
);

8398 i(
obj
 =
NULL
) {

8399 
__os_u
(
NULL
, 
su
);

8402 (*
jv
)->
SObjeAayEmt
(jv, 
aives
, (
jsize
)
i
, 
obj
);

8403 
__dbj_fl_txn_aive
(
jv
, 
obj
, &
su
->
_txǼay
[
i
]);

8405 
__os_u
(
NULL
, 
su
);

8407  
jsu
;

8411 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1lim
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

8412 
jlg
 
jsu
 = 0 ;

8413 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8414 
jlg
 
su
;

8416 ()
jv
;

8417 ()
js
;

8418 
g1
 = *(
DbEnv
 **)&
jg1
;

8420 i(
jg1
 == 0) {

8421 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8425 
o
 = 0;

8426 
su
 = 
DbEnv_p_g_lim
(
g1
);

8427 i(!
DB_RETOK_STD
(
o
)) {

8428 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8431 
jsu
 = 
su
;

8432  
jsu
;

8436 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1e
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, j
jg3
, j
jg4
) {

8437 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8438 
g2
 ;

8439 
g3
 ;

8440 
u_t32_t
 
g4
 ;

8441 
db_t_t
 
su
;

8443 ()
jv
;

8444 ()
js
;

8445 
g1
 = *(
DbEnv
 **)&
jg1
;

8446 
g2
 = ()
jg2
;

8447 
g3
 = ()
jg3
;

8448 
g4
 = (
u_t32_t
)
jg4
;

8450 i(
jg1
 == 0) {

8451 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8455 
su
 = (
db_t_t
)
DbEnv_p_e
(
g1
,
g2
,
g3
,
g4
);

8456 i(!
DB_RETOK_STD
(
su
)) {

8457 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8463 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1oss_1mesge
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
, jobje 
jg3
, j
jg4
, jobje 
jg5
) {

8464 
jt
 
jsu
 = 0 ;

8465 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8466 
DBT
 *
g2
 = (DBT *) 0 ;

8467 
DBT
 *
g3
 = (DBT *) 0 ;

8468 
g4
 ;

8469 
DB_LSN
 *
g5
 = (DB_LSN *) 0 ;

8470 
su
;

8471 
DBT_LOCKED
 
ldbt2
 ;

8472 
DBT_LOCKED
 
ldbt3
 ;

8473 
DB_LSN
 
l5
 ;

8475 ()
jv
;

8476 ()
js
;

8477 
g1
 = *(
DbEnv
 **)&
jg1
;

8479 i(
__dbj_dbt_cy
(
jv
, &
ldbt2
, &
g2
, 
jg2
, 0) != 0) {

8483 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

8486 
g4
 = ()
jg4
;

8488 i(
jg5
 =
NULL
) {

8489 
g5
 = 
NULL
;

8491 
g5
 = &
l5
;

8492 
g5
->
fe
 = (*
jv
)->
GIFld
(jv, 
jg5
, 
dbl_fe_fid
);

8493 
g5
->
offt
 = (*
jv
)->
GIFld
(jv, 
jg5
,

8494 
dbl_offt_fid
);

8498 i(
jg1
 == 0) {

8499 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8503 i(
g5
 =
NULL
) {

8504 
__dbj_throw
(
jv
, 
EINVAL
, "nu LogSequNumb", 
NULL
, NULL);

8509 
su
 = ()
DbEnv_p_oss_mesge
(
g1
,
g2
,
g3
,
g4
,
g5
);

8510 i(!
DB_RETOK_REPPMSG
(
su
)) {

8511 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8514 
jsu
 = (
jt
)
su
;

8515 
__dbj_dbt_a
(
jv
, 
jg2
, 
g2
, &
ldbt2
);

8516 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

8518 i(
jg5
 !
NULL
) {

8519 (*
jv
)->
SIFld
(jv, 
jg5
, 
dbl_fe_fid
, 
g5
->
fe
);

8520 (*
jv
)->
SIFld
(jv, 
jg5
,

8521 
dbl_offt_fid
, 
g5
->
offt
);

8524  
jsu
;

8528 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1ush
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

8529 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8530 
db_t_t
 
su
;

8532 ()
jv
;

8533 ()
js
;

8534 
g1
 = *(
DbEnv
 **)&
jg1
;

8536 i(
jg1
 == 0) {

8537 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8541 
su
 = (
db_t_t
)
DbEnv_p_ush
(
g1
);

8542 i(!
DB_RETOK_STD
(
su
)) {

8543 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8549 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1cfig
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, 
jboޗn
 
jg3
) {

8550 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8551 
u_t32_t
 
g2
 ;

8552 
t_bo
 
g3
 ;

8553 
db_t_t
 
su
;

8555 ()
jv
;

8556 ()
js
;

8557 
g1
 = *(
DbEnv
 **)&
jg1
;

8558 
g2
 = (
u_t32_t
)
jg2
;

8559 
g3
 = (
jg3
 =
JNI_TRUE
);

8561 i(
jg1
 == 0) {

8562 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8566 
su
 = (
db_t_t
)
DbEnv_p_t_cfig
(
g1
,
g2
,
g3
);

8567 i(!
DB_RETOK_STD
(
su
)) {

8568 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8574 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1a
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, j
jg3
) {

8575 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8576 
u_t32_t
 
g2
 ;

8577 
u_t32_t
 
g3
 ;

8578 
db_t_t
 
su
;

8580 ()
jv
;

8581 ()
js
;

8582 
g1
 = *(
DbEnv
 **)&
jg1
;

8583 
g2
 = (
u_t32_t
)
jg2
;

8584 
g3
 = (
u_t32_t
)
jg3
;

8586 i(
jg1
 == 0) {

8587 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8591 
su
 = (
db_t_t
)
DbEnv_p_t_a
(
g1
,
g2
,
g3
);

8592 i(!
DB_RETOK_STD
(
su
)) {

8593 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8599 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
, 
jt
 
jg3
) {

8600 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8601 
DBT
 *
g2
 = (DBT *) 0 ;

8602 
u_t32_t
 
g3
 ;

8603 
db_t_t
 
su
;

8604 
DBT_LOCKED
 
ldbt2
 ;

8606 ()
jv
;

8607 ()
js
;

8608 
g1
 = *(
DbEnv
 **)&
jg1
;

8610 i(
__dbj_dbt_cy
(
jv
, &
ldbt2
, &
g2
, 
jg2
, 1) != 0) {

8613 
g3
 = (
u_t32_t
)
jg3
;

8615 i(
jg1
 == 0) {

8616 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8620 
su
 = (
db_t_t
)
DbEnv_p_t
(
g1
,
g2
,
g3
);

8621 i(!
DB_RETOK_STD
(
su
)) {

8622 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8625 
__dbj_dbt_a
(
jv
, 
jg2
, 
g2
, &
ldbt2
);

8629 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1sync
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8630 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8631 
u_t32_t
 
g2
 ;

8632 
db_t_t
 
su
;

8634 ()
jv
;

8635 ()
js
;

8636 
g1
 = *(
DbEnv
 **)&
jg1
;

8637 
g2
 = (
u_t32_t
)
jg2
;

8639 i(
jg1
 == 0) {

8640 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8644 
su
 = (
db_t_t
)
DbEnv_p_sync
(
g1
,
g2
);

8645 i(!
DB_RETOK_STD
(
su
)) {

8646 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8652 
JNIEXPORT
 
jboޗn
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1cfig
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8653 
jboޗn
 
jsu
 = 0 ;

8654 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8655 
u_t32_t
 
g2
 ;

8656 
t_bo
 
su
;

8658 ()
jv
;

8659 ()
js
;

8660 
g1
 = *(
DbEnv
 **)&
jg1
;

8661 
g2
 = (
u_t32_t
)
jg2
;

8663 i(
jg1
 == 0) {

8664 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8668 
o
 = 0;

8669 
su
 = (
t_bo
)
DbEnv_p_g_cfig
(
g1
,
g2
);

8670 i(!
DB_RETOK_STD
(
o
)) {

8671 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8674 
jsu
 = (
su
? 
JNI_TRUE
 : 
JNI_FALSE
;

8675  
jsu
;

8679 
JNIEXPORT
 
jobje
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8680 
jobje
 
jsu
 = 0 ;

8681 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8682 
u_t32_t
 
g2
 ;

8683 
DB_REP_STAT
 *
su
 = 0 ;

8685 ()
jv
;

8686 ()
js
;

8687 
g1
 = *(
DbEnv
 **)&
jg1
;

8688 
g2
 = (
u_t32_t
)
jg2
;

8690 i(
jg1
 == 0) {

8691 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8695 
o
 = 0;

8696 
su
 = (
DB_REP_STAT
 *)
DbEnv_p_
(
g1
,
g2
);

8697 i(!
DB_RETOK_STD
(
o
)) {

8698 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8702 
jsu
 = (*
jv
)->
NewObje
(jv, 
p__ass
, 
p__cڡru
);

8703 i(
jsu
 !
NULL
)

8704 
__dbj_fl_p_
(
jv
, 
jsu
, 
su
);

8705 
__os_u
(
NULL
, 
su
);

8707  
jsu
;

8711 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1lim
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
) {

8712 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8713 
jlg
 
g2
 ;

8714 
db_t_t
 
su
;

8716 ()
jv
;

8717 ()
js
;

8718 
g1
 = *(
DbEnv
 **)&
jg1
;

8719 
g2
 = 
jg2
;

8721 i(
jg1
 == 0) {

8722 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8726 
su
 = (
db_t_t
)
DbEnv_p_t_lim
(
g1
,
g2
);

8727 i(!
DB_RETOK_STD
(
su
)) {

8728 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8734 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1p_1que
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, j
jg3
) {

8735 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8736 
u_t32_t
 
g2
 ;

8737 
u_t32_t
 
g3
 ;

8738 
db_t_t
 
su
;

8740 ()
jv
;

8741 ()
js
;

8742 
g1
 = *(
DbEnv
 **)&
jg1
;

8743 
g2
 = (
u_t32_t
)
jg2
;

8744 
g3
 = (
u_t32_t
)
jg3
;

8746 i(
jg1
 == 0) {

8747 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8751 
su
 = (
db_t_t
)
DbEnv_t_p_que
(
g1
,
g2
,
g3
);

8752 i(!
DB_RETOK_STD
(
su
)) {

8753 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8759 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1t
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, 
jboޗn
 
jg3
) {

8760 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8761 
g2
 ;

8762 (*
g3
)(
DB_ENV
 *,
DBT
 cڡ *,DBT cڡ *,
DB_LSN
 cڡ *,,
u_t32_t
) = ((*)(DB_ENV *,DBT const *,DBT const *,DB_LSN const *,,u_int32_t)) 0 ;

8763 
db_t_t
 
su
;

8765 ()
jv
;

8766 ()
js
;

8767 
g1
 = *(
DbEnv
 **)&
jg1
;

8768 
g2
 = ()
jg2
;

8770 
g3
 = (
jg3
 =
JNI_TRUE
? 
__dbj_p_t
 : 
NULL
;

8773 i(
jg1
 == 0) {

8774 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8778 
su
 = (
db_t_t
)
DbEnv_p_t_t
(
g1
,
g2
,
g3
);

8779 i(!
DB_RETOK_STD
(
su
)) {

8780 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8786 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1nses
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

8787 
jt
 
jsu
 = 0 ;

8788 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8789 
su
;

8791 ()
jv
;

8792 ()
js
;

8793 
g1
 = *(
DbEnv
 **)&
jg1
;

8795 i(
jg1
 == 0) {

8796 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8800 
o
 = 0;

8801 
su
 = ()
DbEnv_p_g_nses
(
g1
);

8802 i(!
DB_RETOK_STD
(
o
)) {

8803 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8806 
jsu
 = (
jt
)
su
;

8807  
jsu
;

8811 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1iܙy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

8812 
jt
 
jsu
 = 0 ;

8813 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8814 
su
;

8816 ()
jv
;

8817 ()
js
;

8818 
g1
 = *(
DbEnv
 **)&
jg1
;

8820 i(
jg1
 == 0) {

8821 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8825 
o
 = 0;

8826 
su
 = ()
DbEnv_p_g_iܙy
(
g1
);

8827 i(!
DB_RETOK_STD
(
o
)) {

8828 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8831 
jsu
 = (
jt
)
su
;

8832  
jsu
;

8836 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1timeout
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, j
jg2
) {

8837 
jt
 
jsu
 = 0 ;

8838 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8839 
g2
 ;

8840 
u_t32_t
 
su
;

8842 ()
jv
;

8843 ()
js
;

8844 
g1
 = *(
DbEnv
 **)&
jg1
;

8845 
g2
 = ()
jg2
;

8847 i(
jg1
 == 0) {

8848 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8852 
o
 = 0;

8853 
su
 = (
u_t32_t
)
DbEnv_p_g_timeout
(
g1
,
g2
);

8854 i(!
DB_RETOK_STD
(
o
)) {

8855 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8858 
jsu
 = (
jt
)
su
;

8859  
jsu
;

8863 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1nses
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8864 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8865 
g2
 ;

8866 
db_t_t
 
su
;

8868 ()
jv
;

8869 ()
js
;

8870 
g1
 = *(
DbEnv
 **)&
jg1
;

8871 
g2
 = ()
jg2
;

8873 i(
jg1
 == 0) {

8874 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8878 
su
 = (
db_t_t
)
DbEnv_p_t_nses
(
g1
,
g2
);

8879 i(!
DB_RETOK_STD
(
su
)) {

8880 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8886 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1iܙy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8887 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8888 
g2
 ;

8889 
db_t_t
 
su
;

8891 ()
jv
;

8892 ()
js
;

8893 
g1
 = *(
DbEnv
 **)&
jg1
;

8894 
g2
 = ()
jg2
;

8896 i(
jg1
 == 0) {

8897 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8901 
su
 = (
db_t_t
)
DbEnv_p_t_iܙy
(
g1
,
g2
);

8902 i(!
DB_RETOK_STD
(
su
)) {

8903 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8909 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1timeout
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, jlg 
jg3
) {

8910 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8911 
g2
 ;

8912 
db_timeout_t
 
g3
 ;

8913 
db_t_t
 
su
;

8915 ()
jv
;

8916 ()
js
;

8917 
g1
 = *(
DbEnv
 **)&
jg1
;

8918 
g2
 = ()
jg2
;

8919 
g3
 = (
db_timeout_t
)
jg3
;

8921 i(
jg1
 == 0) {

8922 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8926 
su
 = (
db_t_t
)
DbEnv_p_t_timeout
(
g1
,
g2
,
g3
);

8927 i(!
DB_RETOK_STD
(
su
)) {

8928 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8934 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1add_1me_1se
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, j
jg3
, j
jg4
) {

8935 
jt
 
jsu
 = 0 ;

8936 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8937 *
g2
 = (*) 0 ;

8938 
u_t32_t
 
g3
 ;

8939 
u_t32_t
 
g4
 ;

8940 
su
;

8942 ()
jv
;

8943 ()
js
;

8944 
g1
 = *(
DbEnv
 **)&
jg1
;

8945 
g2
 = 0;

8946 i(
jg2
) {

8947 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

8948 i(!
g2
)  0;

8950 
g3
 = (
u_t32_t
)
jg3
;

8951 
g4
 = (
u_t32_t
)
jg4
;

8953 i(
jg1
 == 0) {

8954 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8958 
o
 = 0;

8959 
su
 = ()
DbEnv_pmgr_add_me_se
(
g1
,(cڡ *)
g2
,
g3
,
g4
);

8960 i(!
DB_RETOK_STD
(
o
)) {

8961 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

8964 
jsu
 = (
jt
)
su
;

8965 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

8966  
jsu
;

8970 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1g_1ack_1picy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

8971 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8972 
db_t_t
 
su
;

8974 ()
jv
;

8975 ()
js
;

8976 
g1
 = *(
DbEnv
 **)&
jg1
;

8978 i(
jg1
 == 0) {

8979 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

8983 
su
 = (
db_t_t
)
DbEnv_pmgr_g_ack_picy
(
g1
);

8984 i(!
DB_RETOK_STD
(
su
)) {

8985 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

8991 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1t_1ack_1picy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

8992 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

8993 
g2
 ;

8994 
db_t_t
 
su
;

8996 ()
jv
;

8997 ()
js
;

8998 
g1
 = *(
DbEnv
 **)&
jg1
;

8999 
g2
 = ()
jg2
;

9001 i(
jg1
 == 0) {

9002 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9006 
su
 = (
db_t_t
)
DbEnv_pmgr_t_ack_picy
(
g1
,
g2
);

9007 i(!
DB_RETOK_STD
(
su
)) {

9008 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

9014 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1t_1lol_1se
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
, 
jt
 
jg3
, j
jg4
) {

9015 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

9016 *
g2
 = (*) 0 ;

9017 
u_t32_t
 
g3
 ;

9018 
u_t32_t
 
g4
 ;

9019 
db_t_t
 
su
;

9021 ()
jv
;

9022 ()
js
;

9023 
g1
 = *(
DbEnv
 **)&
jg1
;

9024 
g2
 = 0;

9025 i(
jg2
) {

9026 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

9027 i(!
g2
)  ;

9029 
g3
 = (
u_t32_t
)
jg3
;

9030 
g4
 = (
u_t32_t
)
jg4
;

9032 i(
jg1
 == 0) {

9033 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9037 
su
 = (
db_t_t
)
DbEnv_pmgr_t_lol_se
(
g1
,(cڡ *)
g2
,
g3
,
g4
);

9038 i(!
DB_RETOK_STD
(
su
)) {

9039 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

9042 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

9046 
JNIEXPORT
 
jobjeAay
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1se_1li
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

9047 
jobjeAay
 
jsu
 = 0 ;

9048 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

9049 
__db_pmgr_ses
 
su
;

9051 ()
jv
;

9052 ()
js
;

9053 
g1
 = *(
DbEnv
 **)&
jg1
;

9055 i(
jg1
 == 0) {

9056 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9060 
o
 = 0;

9061 
su
 = 
DbEnv_pmgr_se_li
(
g1
);

9062 i(!
DB_RETOK_STD
(
o
)) {

9063 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

9067 
i
, 
n
;

9069 
n
 = (&
su
)->
nses
;

9070 
jsu
 = (*
jv
)->
NewObjeAay
(jv, (
jsize
)
n
, 
pho_ass
,

9071 
NULL
);

9072 i(
jsu
 =
NULL
)

9074 
i
 = 0; i < 
n
; i++) {

9075 
jobje
 
jp_addr
 = (*
jv
)->
NewObje
(jenv,

9076 
pho_ass
, 
pho_cڡru
);

9078 (*
jv
)->
SObjeFld
(jv, 
jp_addr
, 
pho_ho_fid
,

9079 (*
jv
)->
NewSgUTF
(jv, (&
su
)->
ses
[
i
].
ho
));

9080 (*
jv
)->
SIFld
(jv, 
jp_addr
, 
pho_pt_fid
,

9081 (&
su
)->
ses
[
i
].
pt
);

9082 (*
jv
)->
SIFld
(jv, 
jp_addr
, 
pho_eid_fid
,

9083 (&
su
)->
ses
[
i
].
eid
);

9084 (*
jv
)->
SIFld
(jv, 
jp_addr
, 
pho_us_fid
,

9085 (&
su
)->
ses
[
i
].
us
);

9087 i(
jp_addr
 =
NULL
)

9090 (*
jv
)->
SObjeAayEmt
(jv, 
jsu
, 
i
, 
jp_addr
);

9092 
__os_u
(
NULL
, (&
su
)->
ses
);

9094  
jsu
;

9098 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1t
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, j
jg3
) {

9099 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

9100 
g2
 ;

9101 
u_t32_t
 
g3
 ;

9102 
db_t_t
 
su
;

9104 ()
jv
;

9105 ()
js
;

9106 
g1
 = *(
DbEnv
 **)&
jg1
;

9107 
g2
 = ()
jg2
;

9108 
g3
 = (
u_t32_t
)
jg3
;

9110 i(
jg1
 == 0) {

9111 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9115 
su
 = (
db_t_t
)
DbEnv_pmgr_t
(
g1
,
g2
,
g3
);

9116 i(!
DB_RETOK_STD
(
su
)) {

9117 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
JDBENV
);

9123 
JNIEXPORT
 
jobje
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

9124 
jobje
 
jsu
 = 0 ;

9125 
DbEnv
 *
g1
 = (DbEnv *) 0 ;

9126 
u_t32_t
 
g2
 ;

9127 
DB_REPMGR_STAT
 *
su
 = 0 ;

9129 ()
jv
;

9130 ()
js
;

9131 
g1
 = *(
DbEnv
 **)&
jg1
;

9132 
g2
 = (
u_t32_t
)
jg2
;

9134 i(
jg1
 == 0) {

9135 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9139 
o
 = 0;

9140 
su
 = (
DB_REPMGR_STAT
 *)
DbEnv_pmgr_
(
g1
,
g2
);

9141 i(!
DB_RETOK_STD
(
o
)) {

9142 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
JDBENV
);

9146 
jsu
 = (*
jv
)->
NewObje
(jv, 
pmgr__ass
, 
pmgr__cڡru
);

9147 i(
jsu
 !
NULL
)

9148 
__dbj_fl_pmgr_
(
jv
, 
jsu
, 
su
);

9149 
__os_u
(
NULL
, 
su
);

9151  
jsu
;

9155 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jt
 
jg1
) {

9156 
jrg
 
jsu
 = 0 ;

9157 
g1
 ;

9158 *
su
 = 0 ;

9160 ()
jv
;

9161 ()
js
;

9162 
g1
 = ()
jg1
;

9163 
su
 = (*)
DbEnv_
(
g1
);

9164 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

9165  
jsu
;

9169 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1maj
(
JNIEnv
 *
jv
, 
jass
 
js
) {

9170 
jt
 
jsu
 = 0 ;

9171 
su
;

9173 ()
jv
;

9174 ()
js
;

9175 
su
 = ()
DbEnv_g_vsi_maj
();

9176 
jsu
 = (
jt
)
su
;

9177  
jsu
;

9181 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1m
(
JNIEnv
 *
jv
, 
jass
 
js
) {

9182 
jt
 
jsu
 = 0 ;

9183 
su
;

9185 ()
jv
;

9186 ()
js
;

9187 
su
 = ()
DbEnv_g_vsi_m
();

9188 
jsu
 = (
jt
)
su
;

9189  
jsu
;

9193 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1tch
(
JNIEnv
 *
jv
, 
jass
 
js
) {

9194 
jt
 
jsu
 = 0 ;

9195 
su
;

9197 ()
jv
;

9198 ()
js
;

9199 
su
 = ()
DbEnv_g_vsi_tch
();

9200 
jsu
 = (
jt
)
su
;

9201  
jsu
;

9205 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1rg
(
JNIEnv
 *
jv
, 
jass
 
js
) {

9206 
jrg
 
jsu
 = 0 ;

9207 *
su
 = 0 ;

9209 ()
jv
;

9210 ()
js
;

9211 
su
 = (*)
DbEnv_g_vsi_rg
();

9212 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

9213  
jsu
;

9217 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_de_1DbLock
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

9218 
DbLock
 *
g1
 = (DbLock *) 0 ;

9220 ()
jv
;

9221 ()
js
;

9222 
g1
 = *(
DbLock
 **)&
jg1
;

9224 i(
jg1
 == 0) {

9225 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9228 
de_DbLock
(
g1
);

9233 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbLogc_1o0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

9234 
DbLogc
 *
g1
 = (DbLogc *) 0 ;

9235 
u_t32_t
 
g2
 ;

9236 
db_t_t
 
su
;

9238 ()
jv
;

9239 ()
js
;

9240 
g1
 = *(
DbLogc
 **)&
jg1
;

9241 
g2
 = (
u_t32_t
)
jg2
;

9243 i(
jg1
 == 0) {

9244 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9248 
su
 = (
db_t_t
)
DbLogc_o
(
g1
,
g2
);

9249 i(!
DB_RETOK_STD
(
su
)) {

9250 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9256 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbLogc_1g
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
, jobje 
jg3
, j
jg4
) {

9257 
jt
 
jsu
 = 0 ;

9258 
DbLogc
 *
g1
 = (DbLogc *) 0 ;

9259 
DB_LSN
 *
g2
 = (DB_LSN *) 0 ;

9260 
DBT
 *
g3
 = (DBT *) 0 ;

9261 
u_t32_t
 
g4
 ;

9262 
su
;

9263 
DB_LSN
 
l2
 ;

9264 
DBT_LOCKED
 
ldbt3
 ;

9266 ()
jv
;

9267 ()
js
;

9268 
g1
 = *(
DbLogc
 **)&
jg1
;

9270 i(
jg2
 =
NULL
) {

9271 
g2
 = 
NULL
;

9273 
g2
 = &
l2
;

9274 
g2
->
fe
 = (*
jv
)->
GIFld
(jv, 
jg2
, 
dbl_fe_fid
);

9275 
g2
->
offt
 = (*
jv
)->
GIFld
(jv, 
jg2
,

9276 
dbl_offt_fid
);

9280 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

9283 
g4
 = (
u_t32_t
)
jg4
;

9285 i(
jg1
 == 0) {

9286 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9290 i(
g2
 =
NULL
) {

9291 
__dbj_throw
(
jv
, 
EINVAL
, "nu LogSequNumb", 
NULL
, NULL);

9296 
su
 = ()
DbLogc_g
(
g1
,
g2
,
g3
,
g4
);

9297 i(!
DB_RETOK_LGGET
(
su
)) {

9298 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9301 
jsu
 = (
jt
)
su
;

9303 i(
jg2
 !
NULL
) {

9304 (*
jv
)->
SIFld
(jv, 
jg2
, 
dbl_fe_fid
, 
g2
->
fe
);

9305 (*
jv
)->
SIFld
(jv, 
jg2
,

9306 
dbl_offt_fid
, 
g2
->
offt
);

9309 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

9310  
jsu
;

9314 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbLogc_1vsi
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, j
jg2
) {

9315 
jt
 
jsu
 = 0 ;

9316 
DbLogc
 *
g1
 = (DbLogc *) 0 ;

9317 
u_t32_t
 
g2
 ;

9318 
u_t32_t
 
su
;

9320 ()
jv
;

9321 ()
js
;

9322 
g1
 = *(
DbLogc
 **)&
jg1
;

9323 
g2
 = (
u_t32_t
)
jg2
;

9325 i(
jg1
 == 0) {

9326 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9330 
o
 = 0;

9331 
su
 = (
u_t32_t
)
DbLogc_vsi
(
g1
,
g2
);

9332 i(!
DB_RETOK_STD
(
o
)) {

9333 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9336 
jsu
 = (
jt
)
su
;

9337  
jsu
;

9341 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbMpoFe_1g_1iܙy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

9342 
jt
 
jsu
 = 0 ;

9343 
DbMpoFe
 *
g1
 = (DbMpoolFile *) 0 ;

9344 
DB_CACHE_PRIORITY
 
su
;

9346 ()
jv
;

9347 ()
js
;

9348 
g1
 = *(
DbMpoFe
 **)&
jg1
;

9350 i(
jg1
 == 0) {

9351 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9355 
o
 = 0;

9356 
su
 = (
DB_CACHE_PRIORITY
)
DbMpoFe_g_iܙy
(
g1
);

9357 i(!
DB_RETOK_STD
(
o
)) {

9358 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9361 
jsu
 = (
jt
)
su
;

9362  
jsu
;

9366 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbMpoFe_1t_1iܙy
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

9367 
DbMpoFe
 *
g1
 = (DbMpoolFile *) 0 ;

9368 
DB_CACHE_PRIORITY
 
g2
 ;

9369 
db_t_t
 
su
;

9371 ()
jv
;

9372 ()
js
;

9373 
g1
 = *(
DbMpoFe
 **)&
jg1
;

9374 
g2
 = (
DB_CACHE_PRIORITY
)
jg2
;

9376 i(
jg1
 == 0) {

9377 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9381 
su
 = (
db_t_t
)
DbMpoFe_t_iܙy
(
g1
,
g2
);

9382 i(!
DB_RETOK_STD
(
su
)) {

9383 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9389 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbMpoFe_1g_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

9390 
jt
 
jsu
 = 0 ;

9391 
DbMpoFe
 *
g1
 = (DbMpoolFile *) 0 ;

9392 
u_t32_t
 
su
;

9394 ()
jv
;

9395 ()
js
;

9396 
g1
 = *(
DbMpoFe
 **)&
jg1
;

9398 i(
jg1
 == 0) {

9399 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9403 
o
 = 0;

9404 
su
 = (
u_t32_t
)
DbMpoFe_g_ags
(
g1
);

9405 i(!
DB_RETOK_STD
(
o
)) {

9406 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9409 
jsu
 = (
jt
)
su
;

9410  
jsu
;

9414 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbMpoFe_1t_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
, 
jboޗn
 
jg3
) {

9415 
DbMpoFe
 *
g1
 = (DbMpoolFile *) 0 ;

9416 
u_t32_t
 
g2
 ;

9417 
t_bo
 
g3
 ;

9418 
db_t_t
 
su
;

9420 ()
jv
;

9421 ()
js
;

9422 
g1
 = *(
DbMpoFe
 **)&
jg1
;

9423 
g2
 = (
u_t32_t
)
jg2
;

9424 
g3
 = (
jg3
 =
JNI_TRUE
);

9426 i(
jg1
 == 0) {

9427 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9431 
su
 = (
db_t_t
)
DbMpoFe_t_ags
(
g1
,
g2
,
g3
);

9432 i(!
DB_RETOK_STD
(
su
)) {

9433 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9439 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbMpoFe_1g_1maxsize
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

9440 
jlg
 
jsu
 = 0 ;

9441 
DbMpoFe
 *
g1
 = (DbMpoolFile *) 0 ;

9442 
jlg
 
su
;

9444 ()
jv
;

9445 ()
js
;

9446 
g1
 = *(
DbMpoFe
 **)&
jg1
;

9448 i(
jg1
 == 0) {

9449 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9453 
o
 = 0;

9454 
su
 = 
DbMpoFe_g_maxsize
(
g1
);

9455 i(!
DB_RETOK_STD
(
o
)) {

9456 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9459 
jsu
 = 
su
;

9460  
jsu
;

9464 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbMpoFe_1t_1maxsize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
) {

9465 
DbMpoFe
 *
g1
 = (DbMpoolFile *) 0 ;

9466 
jlg
 
g2
 ;

9467 
db_t_t
 
su
;

9469 ()
jv
;

9470 ()
js
;

9471 
g1
 = *(
DbMpoFe
 **)&
jg1
;

9472 
g2
 = 
jg2
;

9474 i(
jg1
 == 0) {

9475 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9479 
su
 = (
db_t_t
)
DbMpoFe_t_maxsize
(
g1
,
g2
);

9480 i(!
DB_RETOK_STD
(
su
)) {

9481 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9487 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_w_1DbSequ
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, 
jt
 
jg2
) {

9488 
jlg
 
jsu
 = 0 ;

9489 
DB
 *
g1
 = (DB *) 0 ;

9490 
u_t32_t
 
g2
 ;

9491 
DbSequ
 *
su
 = 0 ;

9493 ()
jv
;

9494 ()
js
;

9495 
g1
 = *(
DB
 **)&
jg1
;

9496 
g2
 = (
u_t32_t
)
jg2
;

9498 
o
 = 0;

9499 
su
 = (
DbSequ
 *)
w_DbSequ
(
g1
,
g2
);

9500 i(!
DB_RETOK_STD
(
o
)) {

9501 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9504 *(
DbSequ
 **)&
jsu
 = 
su
;

9505  
jsu
;

9509 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1o0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

9510 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9511 
u_t32_t
 
g2
 ;

9512 
db_t_t
 
su
;

9514 ()
jv
;

9515 ()
js
;

9516 
g1
 = *(
DbSequ
 **)&
jg1
;

9517 
g2
 = (
u_t32_t
)
jg2
;

9519 i(
jg1
 == 0) {

9520 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9524 
su
 = (
db_t_t
)
DbSequ_o
(
g1
,
g2
);

9525 i(!
DB_RETOK_STD
(
su
)) {

9526 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9532 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1g
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
, jlg 
jg2
, 
jt
 
jg3
, j
jg4
) {

9533 
jlg
 
jsu
 = 0 ;

9534 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9535 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

9536 
t32_t
 
g3
 ;

9537 
u_t32_t
 
g4
 ;

9538 
db_q_t
 
su
;

9540 ()
jv
;

9541 ()
js
;

9542 
g1
 = *(
DbSequ
 **)&
jg1
;

9543 
g2
 = *(
DB_TXN
 **)&
jg2
;

9544 
g3
 = (
t32_t
)
jg3
;

9545 
g4
 = (
u_t32_t
)
jg4
;

9547 i(
jg1
 == 0) {

9548 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9552 
o
 = 0;

9553 
su
 = (
db_q_t
)
DbSequ_g
(
g1
,
g2
,
g3
,
g4
);

9554 i(!
DB_RETOK_STD
(
o
)) {

9555 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9558 
jsu
 = (
jlg
)
su
;

9559  
jsu
;

9563 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1chesize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

9564 
jt
 
jsu
 = 0 ;

9565 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9566 
t32_t
 
su
;

9568 ()
jv
;

9569 ()
js
;

9570 
g1
 = *(
DbSequ
 **)&
jg1
;

9572 i(
jg1
 == 0) {

9573 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9577 
o
 = 0;

9578 
su
 = (
t32_t
)
DbSequ_g_chesize
(
g1
);

9579 i(!
DB_RETOK_STD
(
o
)) {

9580 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9583 
jsu
 = (
jt
)
su
;

9584  
jsu
;

9588 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1db
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

9589 
jlg
 
jsu
 = 0 ;

9590 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9591 
DB
 *
su
 = 0 ;

9593 ()
jv
;

9594 ()
js
;

9595 
g1
 = *(
DbSequ
 **)&
jg1
;

9597 i(
jg1
 == 0) {

9598 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9602 
o
 = 0;

9603 
su
 = (
DB
 *)
DbSequ_g_db
(
g1
);

9604 i(!
DB_RETOK_STD
(
o
)) {

9605 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9608 *(
DB
 **)&
jsu
 = 
su
;

9609  
jsu
;

9613 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

9614 
jt
 
jsu
 = 0 ;

9615 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9616 
u_t32_t
 
su
;

9618 ()
jv
;

9619 ()
js
;

9620 
g1
 = *(
DbSequ
 **)&
jg1
;

9622 i(
jg1
 == 0) {

9623 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9627 
o
 = 0;

9628 
su
 = (
u_t32_t
)
DbSequ_g_ags
(
g1
);

9629 i(!
DB_RETOK_STD
(
o
)) {

9630 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9633 
jsu
 = (
jt
)
su
;

9634  
jsu
;

9638 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1key
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jobje
 
jg2
) {

9639 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9640 
DBT
 *
g2
 = (DBT *) 0 ;

9641 
db_t_t
 
su
;

9642 
DBT_LOCKED
 
ldbt2
 ;

9644 ()
jv
;

9645 ()
js
;

9646 
g1
 = *(
DbSequ
 **)&
jg1
;

9648 i(
__dbj_dbt_cy
(
jv
, &
ldbt2
, &
g2
, 
jg2
, 0) != 0) {

9652 i(
jg1
 == 0) {

9653 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9657 
su
 = (
db_t_t
)
DbSequ_g_key
(
g1
,
g2
);

9658 i(!
DB_RETOK_STD
(
su
)) {

9659 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9662 
__dbj_dbt_a
(
jv
, 
jg2
, 
g2
, &
ldbt2
);

9666 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1nge_1m
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

9667 
jlg
 
jsu
 = 0 ;

9668 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9669 
db_q_t
 
su
;

9671 ()
jv
;

9672 ()
js
;

9673 
g1
 = *(
DbSequ
 **)&
jg1
;

9675 i(
jg1
 == 0) {

9676 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9680 
o
 = 0;

9681 
su
 = (
db_q_t
)
DbSequ_g_nge_m
(
g1
);

9682 i(!
DB_RETOK_STD
(
o
)) {

9683 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9686 
jsu
 = (
jlg
)
su
;

9687  
jsu
;

9691 
JNIEXPORT
 
jlg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1nge_1max
(
JNIEnv
 *
jv
, 
jass
 
js
, jlg 
jg1
) {

9692 
jlg
 
jsu
 = 0 ;

9693 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9694 
db_q_t
 
su
;

9696 ()
jv
;

9697 ()
js
;

9698 
g1
 = *(
DbSequ
 **)&
jg1
;

9700 i(
jg1
 == 0) {

9701 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9705 
o
 = 0;

9706 
su
 = (
db_q_t
)
DbSequ_g_nge_max
(
g1
);

9707 i(!
DB_RETOK_STD
(
o
)) {

9708 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9711 
jsu
 = (
jlg
)
su
;

9712  
jsu
;

9716 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1l_1vue
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
) {

9717 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9718 
db_q_t
 
g2
 ;

9719 
db_t_t
 
su
;

9721 ()
jv
;

9722 ()
js
;

9723 
g1
 = *(
DbSequ
 **)&
jg1
;

9724 
g2
 = (
db_q_t
)
jg2
;

9726 i(
jg1
 == 0) {

9727 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9731 
su
 = (
db_t_t
)
DbSequ_l_vue
(
g1
,
g2
);

9732 i(!
DB_RETOK_STD
(
su
)) {

9733 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9739 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1ݒ
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jobje
 
jg3
, 
jt
 
jg4
) {

9740 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9741 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

9742 
DBT
 *
g3
 = (DBT *) 0 ;

9743 
u_t32_t
 
g4
 ;

9744 
db_t_t
 
su
;

9745 
DBT_LOCKED
 
ldbt3
 ;

9747 ()
jv
;

9748 ()
js
;

9749 
g1
 = *(
DbSequ
 **)&
jg1
;

9750 
g2
 = *(
DB_TXN
 **)&
jg2
;

9752 i(
__dbj_dbt_cy
(
jv
, &
ldbt3
, &
g3
, 
jg3
, 0) != 0) {

9755 
g4
 = (
u_t32_t
)
jg4
;

9757 i(
jg1
 == 0) {

9758 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9762 
su
 = (
db_t_t
)
DbSequ_ݒ
(
g1
,
g2
,
g3
,
g4
);

9763 i(!
DB_RETOK_STD
(
su
)) {

9764 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9767 
__dbj_dbt_a
(
jv
, 
jg3
, 
g3
, &
ldbt3
);

9771 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1move0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jt
 
jg3
) {

9772 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9773 
DB_TXN
 *
g2
 = (DB_TXN *) 0 ;

9774 
u_t32_t
 
g3
 ;

9775 
db_t_t
 
su
;

9777 ()
jv
;

9778 ()
js
;

9779 
g1
 = *(
DbSequ
 **)&
jg1
;

9780 
g2
 = *(
DB_TXN
 **)&
jg2
;

9781 
g3
 = (
u_t32_t
)
jg3
;

9783 i(
jg1
 == 0) {

9784 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9788 
su
 = (
db_t_t
)
DbSequ_move
(
g1
,
g2
,
g3
);

9789 i(!
DB_RETOK_STD
(
su
)) {

9790 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9796 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1t_1chesize
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

9797 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9798 
t32_t
 
g2
 ;

9799 
db_t_t
 
su
;

9801 ()
jv
;

9802 ()
js
;

9803 
g1
 = *(
DbSequ
 **)&
jg1
;

9804 
g2
 = (
t32_t
)
jg2
;

9806 i(
jg1
 == 0) {

9807 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9811 
su
 = (
db_t_t
)
DbSequ_t_chesize
(
g1
,
g2
);

9812 i(!
DB_RETOK_STD
(
su
)) {

9813 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9819 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1t_1ags
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

9820 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9821 
u_t32_t
 
g2
 ;

9822 
db_t_t
 
su
;

9824 ()
jv
;

9825 ()
js
;

9826 
g1
 = *(
DbSequ
 **)&
jg1
;

9827 
g2
 = (
u_t32_t
)
jg2
;

9829 i(
jg1
 == 0) {

9830 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9834 
su
 = (
db_t_t
)
DbSequ_t_ags
(
g1
,
g2
);

9835 i(!
DB_RETOK_STD
(
su
)) {

9836 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9842 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1t_1nge
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, jlg 
jg3
) {

9843 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9844 
db_q_t
 
g2
 ;

9845 
db_q_t
 
g3
 ;

9846 
db_t_t
 
su
;

9848 ()
jv
;

9849 ()
js
;

9850 
g1
 = *(
DbSequ
 **)&
jg1
;

9851 
g2
 = (
db_q_t
)
jg2
;

9852 
g3
 = (
db_q_t
)
jg3
;

9854 i(
jg1
 == 0) {

9855 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9859 
su
 = (
db_t_t
)
DbSequ_t_nge
(
g1
,
g2
,
g3
);

9860 i(!
DB_RETOK_STD
(
su
)) {

9861 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9867 
JNIEXPORT
 
jobje
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbSequ_1
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

9868 
jobje
 
jsu
 = 0 ;

9869 
DbSequ
 *
g1
 = (DbSequence *) 0 ;

9870 
u_t32_t
 
g2
 ;

9871 
DB_SEQUENCE_STAT
 *
su
 = 0 ;

9873 ()
jv
;

9874 ()
js
;

9875 
g1
 = *(
DbSequ
 **)&
jg1
;

9876 
g2
 = (
u_t32_t
)
jg2
;

9878 i(
jg1
 == 0) {

9879 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9883 
o
 = 0;

9884 
su
 = (
DB_SEQUENCE_STAT
 *)
DbSequ_
(
g1
,
g2
);

9885 i(!
DB_RETOK_STD
(
o
)) {

9886 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, NULL);

9890 
jsu
 = (*
jv
)->
NewObje
(jv, 
q__ass
, 
q__cڡru
);

9891 i(
jsu
 !
NULL
)

9892 
__dbj_fl_q_
(
jv
, 
jsu
, 
su
);

9893 
__os_u
(
NULL
, 
su
);

9895  
jsu
;

9899 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbTxn_1abt0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

9900 
DbTxn
 *
g1
 = (DbTxn *) 0 ;

9901 
db_t_t
 
su
;

9903 ()
jv
;

9904 ()
js
;

9905 
g1
 = *(
DbTxn
 **)&
jg1
;

9907 i(
jg1
 == 0) {

9908 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9912 
su
 = (
db_t_t
)
DbTxn_abt
(
g1
);

9913 i(!
DB_RETOK_STD
(
su
)) {

9914 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9920 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbTxn_1comm0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

9921 
DbTxn
 *
g1
 = (DbTxn *) 0 ;

9922 
u_t32_t
 
g2
 ;

9923 
db_t_t
 
su
;

9925 ()
jv
;

9926 ()
js
;

9927 
g1
 = *(
DbTxn
 **)&
jg1
;

9928 
g2
 = (
u_t32_t
)
jg2
;

9930 i(
jg1
 == 0) {

9931 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9935 
su
 = (
db_t_t
)
DbTxn_comm
(
g1
,
g2
);

9936 i(!
DB_RETOK_STD
(
su
)) {

9937 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9943 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbTxn_1disrd0
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jt
 
jg2
) {

9944 
DbTxn
 *
g1
 = (DbTxn *) 0 ;

9945 
u_t32_t
 
g2
 ;

9946 
db_t_t
 
su
;

9948 ()
jv
;

9949 ()
js
;

9950 
g1
 = *(
DbTxn
 **)&
jg1
;

9951 
g2
 = (
u_t32_t
)
jg2
;

9953 i(
jg1
 == 0) {

9954 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9958 
su
 = (
db_t_t
)
DbTxn_disrd
(
g1
,
g2
);

9959 i(!
DB_RETOK_STD
(
su
)) {

9960 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, NULL);

9966 
JNIEXPORT
 
jrg
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbTxn_1g_1me
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

9967 
jrg
 
jsu
 = 0 ;

9968 
DbTxn
 *
g1
 = (DbTxn *) 0 ;

9969 *
su
 = 0 ;

9971 ()
jv
;

9972 ()
js
;

9973 
g1
 = *(
DbTxn
 **)&
jg1
;

9975 i(
jg1
 == 0) {

9976 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

9980 
o
 = 0;

9981 
su
 = (*)
DbTxn_g_me
(
g1
);

9982 i(!
DB_RETOK_STD
(
o
)) {

9983 
__dbj_throw
(
jv
, 
o
, 
NULL
, NULL, 
TXN2JDBENV
);

9986 if(
su

jsu
 = (*
jv
)->
NewSgUTF
(jenv,esult);

9987  
jsu
;

9991 
JNIEXPORT
 
jt
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbTxn_1id
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
) {

9992 
jt
 
jsu
 = 0 ;

9993 
DbTxn
 *
g1
 = (DbTxn *) 0 ;

9994 
u_t32_t
 
su
;

9996 ()
jv
;

9997 ()
js
;

9998 
g1
 = *(
DbTxn
 **)&
jg1
;

10000 i(
jg1
 == 0) {

10001 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

10004 
su
 = (
u_t32_t
)
DbTxn_id
(
g1
);

10005 
jsu
 = (
jt
)
su
;

10006  
jsu
;

10010 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbTxn_1e
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jbyAay
 
jg2
) {

10011 
DbTxn
 *
g1
 = (DbTxn *) 0 ;

10012 
u_t8_t
 *
g2
 = (u_int8_t *) 0 ;

10013 
db_t_t
 
su
;

10015 ()
jv
;

10016 ()
js
;

10017 
g1
 = *(
DbTxn
 **)&
jg1
;

10019 
g2
 = (
u_t8_t
 *)(*
jv
)->
GByAayEmts
(jv, 
jg2
, 
NULL
);

10022 i(
jg1
 == 0) {

10023 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

10027 i((*
jv
)->
GAayLgth
(jv, 
jg2
< 
DB_XIDDATASIZE
) {

10028 
__dbj_throw
(
jv
, 
EINVAL
,

10029 "DbTxn.giday mu b>128 bys", 
NULL
,

10030 
TXN2JDBENV
);

10035 
su
 = (
db_t_t
)
DbTxn_e
(
g1
,
g2
);

10036 i(!
DB_RETOK_STD
(
su
)) {

10037 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
TXN2JDBENV
);

10041 (*
jv
)->
RByAayEmts
(jv, 
jg2
, (
jby
 *)
g2
, 0);

10046 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbTxn_1t_1timeout
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, jlg 
jg2
, 
jt
 
jg3
) {

10047 
DbTxn
 *
g1
 = (DbTxn *) 0 ;

10048 
db_timeout_t
 
g2
 ;

10049 
u_t32_t
 
g3
 ;

10050 
db_t_t
 
su
;

10052 ()
jv
;

10053 ()
js
;

10054 
g1
 = *(
DbTxn
 **)&
jg1
;

10055 
g2
 = (
db_timeout_t
)
jg2
;

10056 
g3
 = (
u_t32_t
)
jg3
;

10058 i(
jg1
 == 0) {

10059 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

10063 
su
 = (
db_t_t
)
DbTxn_t_timeout
(
g1
,
g2
,
g3
);

10064 i(!
DB_RETOK_STD
(
su
)) {

10065 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
TXN2JDBENV
);

10071 
JNIEXPORT
 
JNICALL
 
Java_com_pyt_db__db_1javaJNI_DbTxn_1t_1me
(
JNIEnv
 *
jv
, 
jass
 
js
, 
jlg
 
jg1
, 
jrg
 
jg2
) {

10072 
DbTxn
 *
g1
 = (DbTxn *) 0 ;

10073 *
g2
 = (*) 0 ;

10074 
db_t_t
 
su
;

10076 ()
jv
;

10077 ()
js
;

10078 
g1
 = *(
DbTxn
 **)&
jg1
;

10079 
g2
 = 0;

10080 i(
jg2
) {

10081 
g2
 = (*)(*
jv
)->
GSgUTFChs
(jv, 
jg2
, 0);

10082 i(!
g2
)  ;

10085 i(
jg1
 == 0) {

10086 
__dbj_throw
(
jv
, 
EINVAL
, " ood hd", 
NULL
, NULL);

10090 
su
 = (
db_t_t
)
DbTxn_t_me
(
g1
,(cڡ *)
g2
);

10091 i(!
DB_RETOK_STD
(
su
)) {

10092 
__dbj_throw
(
jv
, 
su
, 
NULL
, NULL, 
TXN2JDBENV
);

10095 i(
g2
(*
jv
)->
RSgUTFChs
(jv, 
jg2
,rg2);

10099 #ifde
__lulus


	@../lock/lock.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

13 
	~"dbc/log.h
"

15 
__lock_lock
 
__P
((
DB_LOCKTAB
 *,

16 
__db_lock
 *, 
DB_LOCKER
 *, 
u_t32_t
));

17 
__lock_gobj


18 
__P
((
DB_LOCKTAB
 *, cڡ 
DBT
 *, 
u_t32_t
, , 
DB_LOCKOBJ
 **));

19 
__lock_g_i
 
__P
((
DB_ENV
 *,

20 
u_t32_t
, u_t32_t, cڡ 
DBT
 *, 
db_lockmode_t
, 
DB_LOCK
 *));

21 
__lock_h_locks
 
__P
 ((
DB_LOCKTAB
 *, 
DB_LOCKER
 *, 
u_t32_t
));

22 
__lock_is_
 
__P
((
DB_LOCKTAB
 *, 
roff_t
, 
DB_LOCKER
 *));

23 
__lock_put_
 
__P
((
DB_LOCKTAB
 *,

24 
__db_lock
 *, 
u_t32_t
, u_int32_t));

25 
__lock_put_nock
 
__P
((
DB_ENV
 *, 
DB_LOCK
 *, *, 
u_t32_t
));

26 
__lock_move_wa
 
__P
((
DB_LOCKTAB
 *,

27 
DB_LOCKOBJ
 *, 
__db_lock
 *, 
db_us_t
));

28 
__lock_ade
 
__P
((
DB_ENV
 *, 
DB_LOCK
 *, 
DB_LOCKER
 *));

29 
__lock_vec_i
 
__P
((
DB_ENV
 *,

30 
u_t32_t
, u_t32_t, 
DB_LOCKREQ
 *, , DB_LOCKREQ **));

32 cڡ 
	g__db_lock_vid
[] = "%s: Lock isoonger valid";

33 cڡ 
	g__db_lock_vid
[] = "Locker isot valid";

43 
	$__lock_vec_
(
dbv
, 
lid
, 
ags
, 
li
, 
i
, 
ip
)

44 
DB_ENV
 *
dbv
;

45 
u_t32_t
 
lid
, 
ags
;

46 
i
;

47 
DB_LOCKREQ
 *
li
, **
ip
;

49 
DB_THREAD_INFO
 *

;

50 
t
;

52 
	`PANIC_CHECK
(
dbv
);

53 
	`ENV_REQUIRES_CONFIG
(
dbv
,

54 
dbv
->
lk_hd
, "DB_ENV->lock_vec", 
DB_INIT_LOCK
);

57 i((
t
 = 
	`__db_fchk
(
dbv
,

58 "DB_ENV->lock_vec", 
ags
, 
DB_LOCK_NOWAIT
)) != 0)

59  (
t
);

61 
	`ENV_ENTER
(
dbv
, 

);

62 
	`REPLICATION_WRAP
(
dbv
,

63 (
	`__lock_vec_i
(
dbv
, 
lid
, 
ags
, 
li
, 
i
, 
ip
)), 
t
);

64 
	`ENV_LEAVE
(
dbv
, 

);

65  (
t
);

66 
	}
}

69 
	$__lock_vec_i
(
dbv
, 
lid
, 
ags
, 
li
, 
i
, 
ip
)

70 
DB_ENV
 *
dbv
;

71 
u_t32_t
 
lid
, 
ags
;

72 
i
;

73 
DB_LOCKREQ
 *
li
, **
ip
;

75 
DB_LOCKER
 *
sh_lock
;

76 
t
;

78 i((
t
 =

79 
	`__lock_glock
(
dbv
->
lk_hd
, 
lid
, 0, &
sh_lock
)) == 0)

80 
t
 = 
	`__lock_vec
(
dbv
, 
sh_lock
, 
ags
, 
li
, 
i
, 
ip
);

81  (
t
);

82 
	}
}

98 
	$__lock_vec
(
dbv
, 
sh_lock
, 
ags
, 
li
, 
i
, 
ip
)

99 
DB_ENV
 *
dbv
;

100 
DB_LOCKER
 *
sh_lock
;

101 
u_t32_t
 
ags
;

102 
i
;

103 
DB_LOCKREQ
 *
li
, **
ip
;

105 
__db_lock
 *

, *
xt_lock
;

106 
DB_LOCK
 
lock
; 
DB_LOCKOBJ
 *
sh_obj
;

107 
DB_LOCKREGION
 *
gi
;

108 
DB_LOCKTAB
 *

;

109 
DBT
 *
objli
, *

;

110 
u_t32_t
 
ndx
;

111 
did_abt
, 
i
, 
t
, 
run_dd
, 
upgde
, 
wres
;

114 i(
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
))

117 

 = 
dbv
->
lk_hd
;

118 
gi
 = 

->
gfo
.
imy
;

120 
run_dd
 = 0;

121 
	`LOCK_SYSTEM_LOCK
(
dbv
);

122 
i
 = 0, 
t
 = 0; i < 
i
 &&et == 0; i++)

123 
li
[
i
].

) {

124 
DB_LOCK_GET_TIMEOUT
:

125 
	`LF_SET
(
DB_LOCK_SET_TIMEOUT
);

127 
DB_LOCK_GET
:

128 i(
	`IS_RECOVERING
(
dbv
)) {

129 
	`LOCK_INIT
(
li
[
i
].
lock
);

132 
t
 = 
	`__lock_g_
(

,

133 
sh_lock
, 
ags
, 
li
[
i
].
obj
,

134 
li
[
i
].
mode
,i[i].
timeout
, &li[i].
lock
);

136 
DB_LOCK_INHERIT
:

137 
t
 = 
	`__lock_h_locks
(

, 
sh_lock
, 
ags
);

139 
DB_LOCK_PUT
:

140 
t
 = 
	`__lock_put_nock
(
dbv
,

141 &
li
[
i
].
lock
, &
run_dd
, 
ags
);

143 
DB_LOCK_PUT_ALL
:

144 
DB_LOCK_PUT_READ
:

145 
DB_LOCK_UPGRADE_WRITE
:

155 i(
sh_lock
 =
NULL
 ||

156 
	`F_ISSET
(
sh_lock
, 
DB_LOCKER_DELETED
))

163 
upgde
 = 0;

164 
wres
 = 1;

165 i(
li
[
i
].

 =
DB_LOCK_PUT_READ
)

166 
wres
 = 0;

167 i(
li
[
i
].

 =
DB_LOCK_UPGRADE_WRITE
) {

168 i(
	`F_ISSET
(
sh_lock
, 
DB_LOCKER_DIRTY
))

169 
upgde
 = 1;

170 
wres
 = 0;

172 
objli
 = 
li
[
i
].
obj
;

173 i(
objli
 !
NULL
) {

179 
objli
->
size
 =

180 
sh_lock
->
nwres
 * (
DBT
);

181 i((
t
 = 
	`__os_mloc
(
dbv
,

182 
objli
->
size
, &objli->
da
)) != 0)

183 
up_de
;

184 
	`memt
(
objli
->
da
, 0, objli->
size
);

185 

 = (
DBT
 *
objli
->
da
;

187 

 = 
NULL
;

189 
	`F_SET
(
sh_lock
, 
DB_LOCKER_DELETED
);

192 

 = 
	`SH_LIST_FIRST
(&
sh_lock
->
hdby
, 
__db_lock
);

193 

 !
NULL
;
xt_lock
) {

194 
sh_obj
 = (
DB_LOCKOBJ
 *)

195 ((
u_t8_t
 *)

 +p->
obj
);

196 
xt_lock
 = 
	`SH_LIST_NEXT
(

,

197 
lock_lks
, 
__db_lock
);

198 i(
wres
 == 1 ||

199 

->
mode
 =
DB_LOCK_READ
 ||

200 

->
mode
 =
DB_LOCK_READ_UNCOMMITTED
) {

201 
	`SH_LIST_REMOVE
(

,

202 
lock_lks
, 
__db_lock
);

203 
sh_obj
 = (
DB_LOCKOBJ
 *)

204 ((
u_t8_t
 *)

 +p->
obj
);

205 
ndx
 = 
sh_obj
->
dx
;

206 
	`OBJECT_LOCK_NDX
(

, 
ndx
);

212 
sh_lock
->
ocks
--;

213 i(
	`IS_WRITELOCK
(

->
mode
))

214 
sh_lock
->
nwres
--;

215 
t
 = 
	`__lock_put_
(

, 

,

216 
sh_obj
->
dx
,

217 
DB_LOCK_FREE
 | 
DB_LOCK_DOALL
);

218 
	`OBJECT_UNLOCK
(

, 
ndx
);

219 i(
t
 != 0)

223 i(
objli
 !
NULL
) {

224 
	`DB_ASSERT
(
dbv
, (
u_t8_t
 *)

 <

225 (
u_t8_t
 *)
objli
->
da
 +

226 
objli
->
size
);

227 

->
da
 = 
	`SH_DBT_PTR
(&
sh_obj
->
lockobj
);

228 

->
size
 = 
sh_obj
->
lockobj
.size;

229 

++;

232 i(
t
 != 0)

233 
up_de
;

235 i(
objli
 !
NULL
)

236 i((
t
 = 
	`__lock_fix_li
(
dbv
,

237 
objli
, 
sh_lock
->
nwres
)) != 0)

238 
up_de
;

239 
li
[
i
].

) {

240 
DB_LOCK_UPGRADE_WRITE
:

241 i(
upgde
 != 1)

242 
up_de
;

243 
	`SH_LIST_FOREACH
(

, &
sh_lock
->
hdby
,

244 
lock_lks
, 
__db_lock
) {

245 i(

->
mode
 !
DB_LOCK_WWRITE
)

247 
lock
.
off
 = 
	`R_OFFSET
(&

->
gfo
, 

);

248 
lock
.
g
 = 

->gen;

249 
	`F_SET
(
sh_lock
, 
DB_LOCKER_INABORT
);

250 i((
t
 = 
	`__lock_g_
(

,

251 
sh_lock
, 
ags
 | 
DB_LOCK_UPGRADE
,

252 
NULL
, 
DB_LOCK_WRITE
, 0, &
lock
)) !=0)

255 
up_de
:

257 
DB_LOCK_PUT_READ
:

258 
DB_LOCK_PUT_ALL
:

259 
	`F_CLR
(
sh_lock
, 
DB_LOCKER_DELETED
);

265 
DB_LOCK_PUT_OBJ
:

267 
	`OBJECT_LOCK
(

, 
gi
, 
li
[
i
].
obj
, 
ndx
);

268 i((
t
 = 
	`__lock_gobj
(

, 
li
[
i
].
obj
,

269 
ndx
, 0, &
sh_obj
)!0 || sh_obj =
NULL
) {

270 i(
t
 == 0)

271 
t
 = 
EINVAL
;

272 
	`OBJECT_UNLOCK
(

, 
ndx
);

282 

 = 
	`SH_TAILQ_FIRST
(&
sh_obj
->
was
, 
__db_lock
);

283 
t
 =0 && 

 !
NULL
;

284 

 = 
	`SH_TAILQ_FIRST
(&
sh_obj
->
was
, 
__db_lock
))

285 
t
 = 
	`__lock_put_
(

, 

, 
ndx
,

286 
DB_LOCK_UNLINK
 |

287 
DB_LOCK_NOPROMOTE
 | 
DB_LOCK_DOALL
);

294 

 = 
	`SH_TAILQ_FIRST
(&
sh_obj
->
hds
, 
__db_lock
);

295 
t
 =0 && 

 !
NULL
;

296 

 = 
xt_lock
) {

297 
xt_lock
 = 
	`SH_TAILQ_NEXT
(

, 
lks
, 
__db_lock
);

298 
t
 = 
	`__lock_put_
(

, 

, 
ndx
,

299 
DB_LOCK_UNLINK
 |

300 
DB_LOCK_NOPROMOTE
 | 
DB_LOCK_DOALL
);

302 
	`OBJECT_UNLOCK
(

, 
ndx
);

305 
DB_LOCK_TIMEOUT
:

306 
t
 = 
	`__lock_t_timeout_
(
dbv
,

307 
sh_lock
, 0, 
DB_SET_TXN_NOW
);

310 
DB_LOCK_TRADE
:

325 
t
 = 
	`__lock_ade
(
dbv
, &
li
[
i
].
lock
, 
sh_lock
);

327 #i
	`defed
(
DEBUG
&& defed(
HAVE_STATISTICS
)

328 
DB_LOCK_DUMP
:

329 i(
sh_lock
 =
NULL
 ||

330 
	`F_ISSET
(
sh_lock
, 
DB_LOCKER_DELETED
))

333 
	`SH_LIST_FOREACH
(

334 

, &
sh_lock
->
hdby
, 
lock_lks
, 
__db_lock
)

335 
	`__lock_ock
(

, 
NULL
, 

, 1);

339 
	`__db_rx
(
dbv
,

340 "Invidock oti: %d", 
li
[
i
].

);

341 
t
 = 
EINVAL
;

345 i(
t
 =0 && 
gi
->
de
 !
DB_LOCK_NORUN
 &&

346 (
gi
->
ed_dd
 || 
	`timeecist
(&gi->
xt_timeout
)))

347 
run_dd
 = 1;

348 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

350 i(
run_dd
)

351 ()
	`__lock_de
(
dbv
, 
gi
->
de
, &
did_abt
);

353 i(
t
 !0 && 
ip
 !
NULL
)

354 *
ip
 = &
li
[
i
 - 1];

356  (
t
);

357 
	}
}

367 
	$__lock_g_
(
dbv
, 
lock
, 
ags
, 
obj
, 
lock_mode
, 
lock
)

368 
DB_ENV
 *
dbv
;

369 
u_t32_t
 
lock
, 
ags
;

370 cڡ 
DBT
 *
obj
;

371 
db_lockmode_t
 
lock_mode
;

372 
DB_LOCK
 *
lock
;

374 
DB_THREAD_INFO
 *

;

375 
t
;

377 
	`PANIC_CHECK
(
dbv
);

378 
	`ENV_REQUIRES_CONFIG
(
dbv
,

379 
dbv
->
lk_hd
, "DB_ENV->lock_g", 
DB_INIT_LOCK
);

382 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->lock_g", 
ags
,

383 
DB_LOCK_NOWAIT
 | 
DB_LOCK_UPGRADE
 | 
DB_LOCK_SWITCH
)) != 0)

384  (
t
);

386 
	`ENV_ENTER
(
dbv
, 

);

387 
	`REPLICATION_WRAP
(
dbv
,

388 (
	`__lock_g_i
(
dbv
, 
lock
, 
ags
, 
obj
, 
lock_mode
, 
lock
)), 
t
);

389 
	`ENV_LEAVE
(
dbv
, 

);

390  (
t
);

391 
	}
}

394 
	$__lock_g_i
(
dbv
, 
lock
, 
ags
, 
obj
, 
lock_mode
, 
lock
)

395 
DB_ENV
 *
dbv
;

396 
u_t32_t
 
lock
, 
ags
;

397 cڡ 
DBT
 *
obj
;

398 
db_lockmode_t
 
lock_mode
;

399 
DB_LOCK
 *
lock
;

401 
DB_LOCKER
 *
sh_lock
;

402 
DB_LOCKREGION
 *
gi
;

403 
t
;

405 
	`COMPQUIET
(
gi
, 
NULL
);

407 
gi
 = 
dbv
->
lk_hd
->
gfo
.
imy
;

409 
	`LOCK_SYSTEM_LOCK
(
dbv
);

410 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

411 
t
 = 
	`__lock_glock_t
(
dbv
->
lk_hd
, 
lock
, 0, &
sh_lock
);

412 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

413 i(
t
 == 0)

414 
t
 = 
	`__lock_g_
(
dbv
->
lk_hd
,

415 
sh_lock
, 
ags
, 
obj
, 
lock_mode
, 0, 
lock
);

416 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

417  (
t
);

418 
	}
}

428 
	$__lock_g
(
dbv
, 
lock
, 
ags
, 
obj
, 
lock_mode
, 
lock
)

429 
DB_ENV
 *
dbv
;

430 
DB_LOCKER
 *
lock
;

431 
u_t32_t
 
ags
;

432 cڡ 
DBT
 *
obj
;

433 
db_lockmode_t
 
lock_mode
;

434 
DB_LOCK
 *
lock
;

436 
DB_LOCKTAB
 *

;

437 
t
;

439 

 = 
dbv
->
lk_hd
;

441 i(
	`IS_RECOVERING
(
dbv
)) {

442 
	`LOCK_INIT
(*
lock
);

446 
	`LOCK_SYSTEM_LOCK
(
dbv
);

447 
t
 = 
	`__lock_g_
(

, 
lock
, 
ags
, 
obj
, 
lock_mode
, 0, 
lock
);

448 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

449  (
t
);

450 
	}
}

461 
	$__lock_g_
(

, 
sh_lock
, 
ags
, 
obj
, 
lock_mode
, 
timeout
, 
lock
)

462 
DB_LOCKTAB
 *

;

463 
DB_LOCKER
 *
sh_lock
;

464 
u_t32_t
 
ags
;

465 cڡ 
DBT
 *
obj
;

466 
db_lockmode_t
 
lock_mode
;

467 
db_timeout_t
 
timeout
;

468 
DB_LOCK
 *
lock
;

470 
__db_lock
 *
wl
, *

;

471 
DB_ENV
 *
dbv
;

472 
DB_LOCKOBJ
 *
sh_obj
;

473 
DB_LOCKREGION
 *
gi
;

474 
DB_THREAD_INFO
 *

;

475 
u_t32_t
 
ndx
;

476 
did_abt
, 
ihd
, 
g_dty
, 
no_dd
, 
t
, 
t_t
;

477 
roff_t
 
hd
, 
sh_off
;

484 
GRANT
,

485 
UPGRADE
,

486 
HEAD
,

487 
SECOND
,

488 
TAIL


489 } 
ai
;

491 
dbv
 = 

->dbenv;

492 
gi
 = 

->
gfo
.
imy
;

495 i(
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
))

498 i(
sh_lock
 =
NULL
) {

499 
	`__db_rx
(
dbv
, "Locker doesotxist");

500  (
EINVAL
);

503 
no_dd
 = 
t
 = 0;

504 
wl
 = 
NULL
;

505 
sh_obj
 = 
NULL
;

508 i(
lock_mode
 >(
db_lockmode_t
)
gi
->

.
_nmodes
) {

509 
	`__db_rx
(
dbv
, "DB_ENV->lock_get: invalidock mode %lu",

510 (
u_lg
)
lock_mode
);

511  (
EINVAL
);

514 i(
obj
 =
NULL
) {

515 
	`DB_ASSERT
(
dbv
, 
	`LOCK_ISSET
(*
lock
));

516 

 = 
	`R_ADDR
(&

->
gfo
, 
lock
->
off
);

517 
sh_obj
 = (
DB_LOCKOBJ
 *)((
u_t8_t
 *)

 +p->
obj
);

518 
ndx
 = 
sh_obj
->
dx
;

519 
	`OBJECT_LOCK_NDX
(

, 
ndx
);

522 
	`OBJECT_LOCK
(

, 
gi
, 
obj
, 
lock
->
ndx
);

523 
ndx
 = 
lock
->ndx;

524 i((
t
 = 
	`__lock_gobj
(

, 
obj
, 
lock
->
ndx
, 1, &
sh_obj
)) != 0)

525 
r
;

528 #ifde
HAVE_STATISTICS


529 i(
	`LF_ISSET
(
DB_LOCK_UPGRADE
))

530 

->
obj_
[
ndx
].
_nupgde
++;

531 i(!
	`LF_ISSET
(
DB_LOCK_SWITCH
))

532 

->
obj_
[
ndx
].
_eques
++;

558 
ihd
 = 0;

559 
g_dty
 = 0;

560 
hd
 = 0;

569 i(
	`LF_ISSET
(
DB_LOCK_SWITCH
))

570 

 = 
NULL
;

572 

 = 
	`SH_TAILQ_FIRST
(&
sh_obj
->
hds
, 
__db_lock
);

574 
sh_off
 = 
	`R_OFFSET
(&

->
gfo
, 
sh_lock
);

575 ; 

 !
NULL
;
	`SH_TAILQ_NEXT
p, 
lks
, 
__db_lock
)) {

576 
	`DB_ASSERT
(
dbv
, 

->
us
 !
DB_LSTAT_FREE
);

577 i(
sh_off
 =

->
hd
) {

578 i(

->
mode
 =
lock_mode
 &&

579 

->
us
 =
DB_LSTAT_HELD
) {

580 i(
	`LF_ISSET
(
DB_LOCK_UPGRADE
))

581 
upgde
;

590 

->
fcou
++;

591 
lock
->
off
 = 
	`R_OFFSET
(&

->
gfo
, 

);

592 
lock
->
g
 = 

->gen;

593 
lock
->
mode
 = 

->mode;

594 
de
;

596 
ihd
 = 1;

598 } i(
	`__lock_is_
(

, 

->
hd
, 
sh_lock
))

599 
ihd
 = 1;

600 i(
	`CONFLICTS
(

, 
gi
, 

->
mode
, 
lock_mode
))

602 i(

->
mode
 =
DB_LOCK_READ
 ||

603 

->
mode
 =
DB_LOCK_WWRITE
) {

604 
g_dty
 = 1;

605 
hd
 = 

->holder;

615 i(

 !
NULL
) {

616 i(
ihd
 || 
	`LF_ISSET
(
DB_LOCK_UPGRADE
) ||

617 
lock_mode
 =
DB_LOCK_READ_UNCOMMITTED
)

618 
ai
 = 
HEAD
;

620 
ai
 = 
TAIL
;

622 i(
	`LF_ISSET
(
DB_LOCK_SWITCH
))

623 
ai
 = 
TAIL
;

624 i(
	`LF_ISSET
(
DB_LOCK_UPGRADE
))

625 
ai
 = 
UPGRADE
;

626 i(
ihd
)

627 
ai
 = 
GRANT
;

632 
	`SH_TAILQ_FOREACH
(

633 

, &
sh_obj
->
was
, 
lks
, 
__db_lock
)

634 i(
	`CONFLICTS
(

, 
gi
, 

->
mode
,

635 
lock_mode
&& 
sh_off
 !

->
hd
)

667 i(

 =
NULL
)

668 
ai
 = 
GRANT
;

669 i(
g_dty
 &&

670 
lock_mode
 =
DB_LOCK_READ_UNCOMMITTED
) {

675 

 = 
	`SH_TAILQ_FIRST
(

676 &
sh_obj
->
was
, 
__db_lock
);

677 i(

->
mode
 =
DB_LOCK_WRITE
 &&

678 

->
hd
 == holder)

679 
ai
 = 
SECOND
;

681 
ai
 = 
GRANT
;

682 } i(
lock_mode
 =
DB_LOCK_READ_UNCOMMITTED
)

683 
ai
 = 
SECOND
;

685 
ai
 = 
TAIL
;

689 
ai
) {

690 
HEAD
:

691 
TAIL
:

692 
SECOND
:

693 
GRANT
:

695 
	`LOCK_LOCKS
(
dbv
, 
gi
);

696 i((
wl
 =

697 
	`SH_TAILQ_FIRST
(&
gi
->
_locks
, 
__db_lock
)=
NULL
) {

698 
t
 = 
	`__lock_nomem
(
dbv
, "locks");

699 
r
;

701 
	`SH_TAILQ_REMOVE
(&
gi
->
_locks
, 
wl
, 
lks
, 
__db_lock
);

703 #ifde
HAVE_STATISTICS


705 i(++
gi
->

.
_ocks
 >egi->.
_maxocks
)

706 
gi
->

.
_maxocks
 =egi->.
_ocks
;

708 
	`UNLOCK_LOCKS
(
dbv
, 
gi
);

719 i(
wl
->
mtx_lock
 =
MUTEX_INVALID
) {

720 i((
t
 = 
	`__mux_loc
(
dbv
, 
MTX_LOGICAL_LOCK
,

721 
DB_MUTEX_LOGICAL_LOCK
 | 
DB_MUTEX_SELF_BLOCK
,

722 &
wl
->
mtx_lock
)) != 0)

723 
r
;

724 
	`MUTEX_LOCK
(
dbv
, 
wl
->
mtx_lock
);

727 
wl
->
hd
 = 
	`R_OFFSET
(&

->
gfo
, 
sh_lock
);

728 
wl
->
fcou
 = 1;

729 
wl
->
mode
 = 
lock_mode
;

730 
wl
->
obj
 = (
roff_t
)
	`SH_PTR_TO_OFF
ewl, 
sh_obj
);

731 
wl
->
dx
 = 
sh_obj
->indx;

738 
no_dd
 = 
sh_lock
->
ma_lock
 =
INVALID_ROFF
 &&

739 
	`SH_LIST_FIRST
(

740 &
sh_lock
->
chd_lock
, 
__db_lock
=
NULL
 &&

741 
	`SH_LIST_FIRST
(&
sh_lock
->
hdby
, 
__db_lock
=
NULL
;

743 
	`SH_LIST_INSERT_HEAD
(

744 &
sh_lock
->
hdby
, 
wl
, 
lock_lks
, 
__db_lock
);

747 
UPGRADE
:

748 
upgde
: 

 = 
	`R_ADDR
(&

->
gfo
, 
lock
->
off
);

749 i(
	`IS_WRITELOCK
(
lock_mode
&& !IS_WRITELOCK(

->
mode
))

750 
sh_lock
->
nwres
++;

751 

->
mode
 = 
lock_mode
;

752 
de
;

755 
ai
) {

756 
UPGRADE
:

757 
	`DB_ASSERT
(
dbv
, 0);

759 
GRANT
:

760 
wl
->
us
 = 
DB_LSTAT_HELD
;

761 
	`SH_TAILQ_INSERT_TAIL
(&
sh_obj
->
hds
, 
wl
, 
lks
);

763 
HEAD
:

764 
TAIL
:

765 
SECOND
:

766 i(
	`LF_ISSET
(
DB_LOCK_NOWAIT
)) {

767 
t
 = 
DB_LOCK_NOTGRANTED
;

768 
	`STAT
(
gi
->

.
_lock_nowa
++);

769 
r
;

771 i((

 =

772 
	`SH_TAILQ_FIRST
(&
sh_obj
->
was
, 
__db_lock
)=
NULL
) {

773 
	`LOCK_OBJECTS
(
dbv
, 
gi
);

774 
	`SH_TAILQ_INSERT_HEAD
(&
gi
->
dd_objs
,

775 
sh_obj
, 
dd_lks
, 
__db_lockobj
);

776 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

778 
ai
) {

779 
HEAD
:

780 
	`SH_TAILQ_INSERT_HEAD
(

781 &
sh_obj
->
was
, 
wl
, 
lks
, 
__db_lock
);

783 
SECOND
:

784 
	`SH_TAILQ_INSERT_AFTER
(

785 &
sh_obj
->
was
, 

, 
wl
, 
lks
, 
__db_lock
);

787 
TAIL
:

788 
	`SH_TAILQ_INSERT_TAIL
(&
sh_obj
->
was
, 
wl
, 
lks
);

791 
	`DB_ASSERT
(
dbv
, 0);

801 i(
	`__lock_exped
(
dbv
,

802 &
sh_lock
->
lk_expe
, &sh_lock->
tx_expe
)) {

803 
wl
->
us
 = 
DB_LSTAT_EXPIRED
;

804 
sh_lock
->
lk_expe
 = sh_lock->
tx_expe
;

807 
exped
;

816 i(!
	`LF_ISSET
(
DB_LOCK_SET_TIMEOUT
)) {

817 i(
	`F_ISSET
(
sh_lock
, 
DB_LOCKER_TIMEOUT
))

818 
timeout
 = 
sh_lock
->
lk_timeout
;

820 
timeout
 = 
gi
->
lk_timeout
;

822 i(
timeout
 != 0)

823 
	`__lock_expes
(
dbv
, &
sh_lock
->
lk_expe
, 
timeout
);

825 
	`timeecr
(&
sh_lock
->
lk_expe
);

827 i(
	`timeecist
(&
sh_lock
->
tx_expe
) &&

828 (
timeout
 =0 || 
	`__lock_exped
(
dbv
,

829 &
sh_lock
->
lk_expe
, &sh_lock->
tx_expe
)))

830 
sh_lock
->
lk_expe
 = sh_lock->
tx_expe
;

831 i(
	`timeecist
(&
sh_lock
->
lk_expe
) &&

832 (!
	`timeecist
(&
gi
->
xt_timeout
) ||

833 
	`timeeccmp
(

834 &
gi
->
xt_timeout
, &
sh_lock
->
lk_expe
, >)))

835 
gi
->
xt_timeout
 = 
sh_lock
->
lk_expe
;

837 
wl
->
us
 = 
DB_LSTAT_WAITING
;

838 
	`STAT
(

->
obj_
[
ndx
].
_lock_wa
++);

840 
gi
->
ed_dd
 = 1;

842 
	`OBJECT_UNLOCK
(

, 
sh_obj
->
dx
);

845 i(
	`LF_ISSET
(
DB_LOCK_SWITCH
) &&

846 (
t
 = 
	`__lock_put_nock
(
dbv
,

847 
lock
, &
ihd
, 
DB_LOCK_NOWAITERS
)) != 0) {

848 
	`OBJECT_LOCK_NDX
(

, 
sh_obj
->
dx
);

849 ()
	`__lock_move_wa
(

850 

, 
sh_obj
, 
wl
, 
DB_LSTAT_FREE
);

851 
r
;

854 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

859 i(
gi
->
de
 !
DB_LOCK_NORUN
 && !
no_dd
)

860 ()
	`__lock_de
(
dbv
, 
gi
->
de
, &
did_abt
);

862 

 = 
NULL
;

863 i(
dbv
->
thr_hashb
 !
NULL
 &&

864 (
t
 = 
	`__v_t_e
(
dbv
, &

, 
THREAD_BLOCKED
)) != 0)

865 
r
;

866 
	`MUTEX_LOCK
(
dbv
, 
wl
->
mtx_lock
);

867 i(

 !
NULL
)

868 

->
dbth_e
 = 
THREAD_ACTIVE
;

870 
	`LOCK_SYSTEM_LOCK
(
dbv
);

871 
ndx
 = 
sh_obj
->
dx
;

872 
	`OBJECT_LOCK_NDX
(

, 
ndx
);

875 i(
wl
->
us
 !
DB_LSTAT_EXPIRED
)

876 
	`timeecr
(&
sh_lock
->
lk_expe
);

878 
wl
->
us
) {

879 
DB_LSTAT_ABORTED
:

880 
t
 = 
DB_LOCK_DEADLOCK
;

881 
r
;

882 
DB_LSTAT_EXPIRED
:

883 
exped
: 
t
 = 
	`__lock_put_
(

, 
wl
,

884 
ndx
, 
DB_LOCK_UNLINK
 | 
DB_LOCK_FREE
);

885 
wl
 = 
NULL
;

886 i(
t
 != 0)

887 
r
;

888 #ifde
HAVE_STATISTICS


889 i(
	`timeeccmp
(

890 &
sh_lock
->
lk_expe
, &sh_lock->
tx_expe
, ==))

891 

->
obj_
[
ndx
].
_ximeouts
++;

893 

->
obj_
[
ndx
].
_ocktimeouts
++;

895 
t
 = 
DB_LOCK_NOTGRANTED
;

896 
r
;

897 
DB_LSTAT_PENDING
:

898 i(
	`LF_ISSET
(
DB_LOCK_UPGRADE
)) {

904 
	`SH_TAILQ_REMOVE
(

905 &
sh_obj
->
hds
, 
wl
, 
lks
, 
__db_lock
);

911 
wl
->
lks
.
qe_ev
 = -1;

912 
upgde
;

914 
wl
->
us
 = 
DB_LSTAT_HELD
;

916 
DB_LSTAT_FREE
:

917 
DB_LSTAT_HELD
:

918 
DB_LSTAT_WAITING
:

920 
	`__db_rx
(
dbv
,

921 "Uxedock stus: %d", ()
wl
->
us
);

922 
t
 = 
	`__db_nic
(
dbv
, 
EINVAL
);

923 
r
;

927 
lock
->
off
 = 
	`R_OFFSET
(&

->
gfo
, 
wl
);

928 
lock
->
g
 = 
wl
->gen;

929 
lock
->
mode
 = 
wl
->mode;

930 
sh_lock
->
ocks
++;

931 i(
	`IS_WRITELOCK
(
wl
->
mode
)) {

932 
sh_lock
->
nwres
++;

933 i(
wl
->
mode
 =
DB_LOCK_WWRITE
)

934 
	`F_SET
(
sh_lock
, 
DB_LOCKER_DIRTY
);

937 
	`OBJECT_UNLOCK
(

, 
ndx
);

940 
r
: i(!
	`LF_ISSET
(
DB_LOCK_UPGRADE
 | 
DB_LOCK_SWITCH
))

941 
	`LOCK_INIT
(*
lock
);

943 
de
: 
	`OBJECT_UNLOCK
(

, 
ndx
);

944 i(
wl
 !
NULL
 &&

945 (
t_t
 = 
	`__lock_lock
(

, 
wl
, 
sh_lock
,

946 
DB_LOCK_FREE
 | 
DB_LOCK_UNLINK
)!0 && 
t
 == 0)

947 
t
 = 
t_t
;

949  (
t
);

950 
	}
}

959 
	$__lock_put_
(
dbv
, 
lock
)

960 
DB_ENV
 *
dbv
;

961 
DB_LOCK
 *
lock
;

963 
DB_THREAD_INFO
 *

;

964 
t
;

966 
	`PANIC_CHECK
(
dbv
);

967 
	`ENV_REQUIRES_CONFIG
(
dbv
,

968 
dbv
->
lk_hd
, "DB_LOCK->lock_put", 
DB_INIT_LOCK
);

970 
	`ENV_ENTER
(
dbv
, 

);

971 
	`REPLICATION_WRAP
(
dbv
, (
	`__lock_put
(dbv, 
lock
)), 
t
);

972 
	`ENV_LEAVE
(
dbv
, 

);

973  (
t
);

974 
	}
}

983 
	$__lock_put
(
dbv
, 
lock
)

984 
DB_ENV
 *
dbv
;

985 
DB_LOCK
 *
lock
;

987 
DB_LOCKTAB
 *

;

988 
t
, 
run_dd
;

990 i(
	`IS_RECOVERING
(
dbv
))

993 

 = 
dbv
->
lk_hd
;

995 
	`LOCK_SYSTEM_LOCK
(
dbv
);

996 
t
 = 
	`__lock_put_nock
(
dbv
, 
lock
, &
run_dd
, 0);

997 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

1005 i(
t
 =0 && 
run_dd
)

1006 ()
	`__lock_de
(
dbv
,

1007 ((
DB_LOCKREGION
 *)

->
gfo
.
imy
)->
de
, 
NULL
);

1008  (
t
);

1009 
	}
}

1012 
	$__lock_put_nock
(
dbv
, 
lock
, 
ru
, 
ags
)

1013 
DB_ENV
 *
dbv
;

1014 
DB_LOCK
 *
lock
;

1015 *
ru
;

1016 
u_t32_t
 
ags
;

1018 
__db_lock
 *
lockp
;

1019 
DB_LOCKREGION
 *
gi
;

1020 
DB_LOCKTAB
 *

;

1021 
t
;

1024 i(
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
))

1027 

 = 
dbv
->
lk_hd
;

1028 
gi
 = 

->
gfo
.
imy
;

1030 
lockp
 = 
	`R_ADDR
(&

->
gfo
, 
lock
->
off
);

1031 i(
lock
->
g
 !
lockp
->gen) {

1032 
	`__db_rx
(
dbv
, 
__db_lock_vid
, "DB_LOCK->lock_put");

1033 
	`LOCK_INIT
(*
lock
);

1034  (
EINVAL
);

1037 
	`OBJECT_LOCK_NDX
(

, 
lock
->
ndx
);

1038 
t
 = 
	`__lock_put_
(

,

1039 
lockp
, 
lock
->
ndx
, 
ags
 | 
DB_LOCK_UNLINK
 | 
DB_LOCK_FREE
);

1040 
	`OBJECT_UNLOCK
(

, 
lock
->
ndx
);

1042 
	`LOCK_INIT
(*
lock
);

1044 *
ru
 = 0;

1045 i(
t
 =0 && 
gi
->
de
 !
DB_LOCK_NORUN
 &&

1046 (
gi
->
ed_dd
 || 
	`timeecist
(&gi->
xt_timeout
)))

1047 *
ru
 = 1;

1049  (
t
);

1050 
	}
}

1065 
	$__lock_downgde
(
dbv
, 
lock
, 
w_mode
, 
ags
)

1066 
DB_ENV
 *
dbv
;

1067 
DB_LOCK
 *
lock
;

1068 
db_lockmode_t
 
w_mode
;

1069 
u_t32_t
 
ags
;

1071 
__db_lock
 *
lockp
;

1072 
DB_LOCKER
 *
sh_lock
;

1073 
DB_LOCKOBJ
 *
obj
;

1074 
DB_LOCKREGION
 *
gi
;

1075 
DB_LOCKTAB
 *

;

1076 
t
;

1078 
	`PANIC_CHECK
(
dbv
);

1079 
t
 = 0;

1082 i(
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
))

1085 

 = 
dbv
->
lk_hd
;

1086 
gi
 = 

->
gfo
.
imy
;

1088 
	`LOCK_SYSTEM_LOCK
(
dbv
);

1090 
	`STAT
(
gi
->

.
_ndowngde
++);

1092 
lockp
 = 
	`R_ADDR
(&

->
gfo
, 
lock
->
off
);

1093 i(
lock
->
g
 !
lockp
->gen) {

1094 
	`__db_rx
(
dbv
, 
__db_lock_vid
, "lock_downgrade");

1095 
t
 = 
EINVAL
;

1096 
out
;

1099 
sh_lock
 = 
	`R_ADDR
(&

->
gfo
, 
lockp
->
hd
);

1101 i(
	`IS_WRITELOCK
(
lockp
->
mode
&& !IS_WRITELOCK(
w_mode
))

1102 
sh_lock
->
nwres
--;

1104 
lockp
->
mode
 = 
w_mode
;

1105 
lock
->
mode
 = 
w_mode
;

1108 
obj
 = (
DB_LOCKOBJ
 *)((
u_t8_t
 *)
lockp
 +ockp->obj);

1109 
	`OBJECT_LOCK_NDX
(

, 
obj
->
dx
);

1110 

->
obj_
[
obj
->
dx
].
_ndowngde
++;

1111 
t
 = 
	`__lock_ome
(

, 
obj
, 
NULL
, 
	`LF_ISSET
(
DB_LOCK_NOWAITERS
));

1112 
	`OBJECT_UNLOCK
(

, 
obj
->
dx
);

1114 
out
: 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

1116  (
t
);

1117 
	}
}

1120 
	$__lock_put_
(

, 
lockp
, 
obj_ndx
, 
ags
)

1121 
DB_LOCKTAB
 *

;

1122 
__db_lock
 *
lockp
;

1123 
u_t32_t
 
obj_ndx
, 
ags
;

1125 
DB_ENV
 *
dbv
;

1126 
DB_LOCKOBJ
 *
sh_obj
;

1127 
DB_LOCKREGION
 *
gi
;

1128 
t
, 
e_chged
;

1130 
	`COMPQUIET
(
dbv
, 
NULL
);

1131 
dbv
 = 

->dbenv;

1132 
gi
 = 

->
gfo
.
imy
;

1133 
t
 = 
e_chged
 = 0;

1135 i(!
	`OBJ_LINKS_VALID
(
lockp
)) {

1142 ()
	`__lock_lock
(

, 
lockp
, 
NULL
, 
DB_LOCK_FREE
);

1150 #ifde
HAVE_STATISTICS


1151 i(
	`LF_ISSET
(
DB_LOCK_DOALL
))

1152 

->
obj_
[
obj_ndx
].
_Ės
 +
lockp
->
fcou
;

1154 

->
obj_
[
obj_ndx
].
_Ės
++;

1157 i(!
	`LF_ISSET
(
DB_LOCK_DOALL
&& 
lockp
->
fcou
 > 1) {

1158 
lockp
->
fcou
--;

1163 
lockp
->
g
++;

1166 
sh_obj
 = (
DB_LOCKOBJ
 *)((
u_t8_t
 *)
lockp
 +ockp->
obj
);

1174 i(
lockp
->
us
 !
DB_LSTAT_HELD
 &&

1175 
lockp
->
us
 !
DB_LSTAT_PENDING
) {

1176 i((
t
 = 
	`__lock_move_wa
(

1177 

, 
sh_obj
, 
lockp
, 
DB_LSTAT_ABORTED
)) != 0)

1178  (
t
);

1180 
	`SH_TAILQ_REMOVE
(&
sh_obj
->
hds
, 
lockp
, 
lks
, 
__db_lock
);

1181 
lockp
->
lks
.
qe_ev
 = -1;

1184 i(
	`LF_ISSET
(
DB_LOCK_NOPROMOTE
))

1185 
e_chged
 = 0;

1187 i((
t
 = 
	`__lock_ome
(

, 
sh_obj
, &
e_chged
,

1188 
	`LF_ISSET
(
DB_LOCK_NOWAITERS
))) != 0)

1189  (
t
);

1192 i(
	`SH_TAILQ_FIRST
(&
sh_obj
->
hds
, 
__db_lock
=
NULL
 &&

1193 
	`SH_TAILQ_FIRST
(&
sh_obj
->
was
, 
__db_lock
=
NULL
) {

1194 
	`SH_TAILQ_REMOVE
(

1195 &

->
obj_b
[
obj_ndx
], 
sh_obj
, 
lks
, 
__db_lockobj
);

1196 
	`LOCK_OBJECTS
(
dbv
, 
gi
);

1197 i(
sh_obj
->
lockobj
.
size
 > (sh_obj->
objda
))

1198 
	`__v_loc_
(&

->
gfo
,

1199 
	`SH_DBT_PTR
(&
sh_obj
->
lockobj
));

1200 
	`SH_TAILQ_INSERT_HEAD
(

1201 &
gi
->
_objs
, 
sh_obj
, 
lks
, 
__db_lockobj
);

1202 
sh_obj
->
gi
++;

1203 
	`STAT
(
gi
->

.
_nobjes
--);

1204 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

1205 
e_chged
 = 1;

1209 i(
	`LF_ISSET
(
DB_LOCK_UNLINK
 | 
DB_LOCK_FREE
))

1210 
t
 = 
	`__lock_lock
(

, 
lockp
,

1211 
	`R_ADDR
(&

->
gfo
, 
lockp
->
hd
), 
ags
);

1217 i(
e_chged
 == 0)

1218 
gi
->
ed_dd
 = 1;

1220  (
t
);

1221 
	}
}

1229 
	$__lock_lock
(

, 
lockp
, 
sh_lock
, 
ags
)

1230 
DB_LOCKTAB
 *

;

1231 
__db_lock
 *
lockp
;

1232 
DB_LOCKER
 *
sh_lock
;

1233 
u_t32_t
 
ags
;

1235 
DB_ENV
 *
dbv
;

1236 
DB_LOCKREGION
 *
gi
;

1237 
t
;

1239 
dbv
 = 

->dbenv;

1240 
gi
 = 

->
gfo
.
imy
;

1242 i(
	`LF_ISSET
(
DB_LOCK_UNLINK
)) {

1244 
	`SH_LIST_REMOVE
(
lockp
, 
lock_lks
, 
__db_lock
);

1245 i(
lockp
->
us
 =
DB_LSTAT_HELD
) {

1246 
sh_lock
->
ocks
--;

1247 i(
	`IS_WRITELOCK
(
lockp
->
mode
))

1248 
sh_lock
->
nwres
--;

1252 i(
	`LF_ISSET
(
DB_LOCK_FREE
)) {

1258 i(
lockp
->
mtx_lock
 !
MUTEX_INVALID
 &&

1259 
lockp
->
us
 !
DB_LSTAT_HELD
 &&

1260 
lockp
->
us
 !
DB_LSTAT_EXPIRED
 &&

1261 (
t
 = 
	`__mux_
(
dbv
, &
lockp
->
mtx_lock
)) != 0)

1262  (
t
);

1263 
lockp
->
us
 = 
DB_LSTAT_FREE
;

1264 
	`LOCK_LOCKS
(
dbv
, 
gi
);

1265 
	`SH_TAILQ_INSERT_HEAD
(

1266 &
gi
->
_locks
, 
lockp
, 
lks
, 
__db_lock
);

1267 
	`STAT
(
gi
->

.
_ocks
--);

1268 
	`UNLOCK_LOCKS
(
dbv
, 
gi
);

1272 
	}
}

1283 
	$__lock_gobj
(

, 
obj
, 
ndx
, 

, 

)

1284 
DB_LOCKTAB
 *

;

1285 cڡ 
DBT
 *
obj
;

1286 
u_t32_t
 
ndx
;

1287 

;

1288 
DB_LOCKOBJ
 **

;

1290 
DB_ENV
 *
dbv
;

1291 
DB_LOCKOBJ
 *
sh_obj
;

1292 
DB_LOCKREGION
 *
gi
;

1293 
t
;

1294 *
p
;

1295 
u_t32_t
 
n
;

1297 
dbv
 = 

->dbenv;

1298 
gi
 = 

->
gfo
.
imy
;

1299 
n
 = 0;

1302 
	`SH_TAILQ_FOREACH
(
sh_obj
, &

->
obj_b
[
ndx
], 
lks
, 
__db_lockobj
) {

1303 
n
++;

1304 i(
obj
->
size
 =
sh_obj
->
lockobj
.size &&

1305 
	`memcmp
(
obj
->
da
,

1306 
	`SH_DBT_PTR
(&
sh_obj
->
lockobj
), 
obj
->
size
) == 0)

1310 i(
n
 > 

->
obj_
[
ndx
].
_hash_n
)

1311 

->
obj_
[
ndx
].
_hash_n
 = 
n
;

1317 i(
sh_obj
 =
NULL
 && 

) {

1318 
	`LOCK_OBJECTS
(
dbv
, 
gi
);

1320 i((
sh_obj
 =

1321 
	`SH_TAILQ_FIRST
(&
gi
->
_objs
, 
__db_lockobj
)=
NULL
) {

1322 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

1323 
t
 = 
	`__lock_nomem
(

->
dbv
, "objectntries");

1324 
r
;

1331 i(
obj
->
size
 <(
sh_obj
->
objda
))

1332 
p
 = 
sh_obj
->
objda
;

1333 i((
t
 =

1334 
	`__v_loc
(&

->
gfo
, 
obj
->
size
, &
p
)) != 0) {

1335 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

1336 
	`__db_rx
(
dbv
, "No space forock object storage");

1337 
r
;

1340 
	`memy
(
p
, 
obj
->
da
, obj->
size
);

1342 
	`SH_TAILQ_REMOVE
(

1343 &
gi
->
_objs
, 
sh_obj
, 
lks
, 
__db_lockobj
);

1344 #ifde
HAVE_STATISTICS


1345 i(++
gi
->

.
_nobjes
 >egi->.
_maxnobjes
)

1346 
gi
->

.
_maxnobjes
 =egi->.
_nobjes
;

1348 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

1350 
sh_obj
->
dx
 = 
ndx
;

1351 
	`SH_TAILQ_INIT
(&
sh_obj
->
was
);

1352 
	`SH_TAILQ_INIT
(&
sh_obj
->
hds
);

1353 
sh_obj
->
lockobj
.
size
 = 
obj
->size;

1354 
sh_obj
->
lockobj
.
off
 =

1355 (
roff_t
)
	`SH_PTR_TO_OFF
(&
sh_obj
->
lockobj
, 
p
);

1356 
	`SH_TAILQ_INSERT_HEAD
(

1357 &

->
obj_b
[
ndx
], 
sh_obj
, 
lks
, 
__db_lockobj
);

1360 *

 = 
sh_obj
;

1363 
r
:  (
t
);

1364 
	}
}

1374 
	$__lock_is_
(

, 
l_off
, 
sh_lock
)

1375 
DB_LOCKTAB
 *

;

1376 
roff_t
 
l_off
;

1377 
DB_LOCKER
 *
sh_lock
;

1379 
DB_LOCKER
 *

;

1381 

 = 
sh_lock
;

1382 

->
_lock
 !
INVALID_ROFF
) {

1383 i(

->
_lock
 =
l_off
)

1385 

 = 
	`R_ADDR
(&

->
gfo
,t->
_lock
);

1389 
	}
}

1400 
	$__lock_lock_is_
(
dbv
, 
lock
, 
chd
, 

)

1401 
DB_ENV
 *
dbv
;

1402 
DB_LOCKER
 *
lock
;

1403 
DB_LOCKER
 *
chd
;

1404 *

;

1406 
DB_LOCKTAB
 *

;

1408 

 = 
dbv
->
lk_hd
;

1414 i(
lock
 =
NULL
)

1415 *

 = 0;

1417 *

 = 
	`__lock_is_
(

,

1418 
	`R_OFFSET
(&

->
gfo
, 
lock
), 
chd
);

1420 
	}
}

1427 
	$__lock_h_locks
(

, 
sh_lock
, 
ags
)

1428 
DB_LOCKTAB
 *

;

1429 
DB_LOCKER
 *
sh_lock
;

1430 
u_t32_t
 
ags
;

1432 
DB_ENV
 *
dbv
;

1433 
DB_LOCKER
 *
sh_
;

1434 
DB_LOCKOBJ
 *
obj
;

1435 
t
;

1436 
__db_lock
 *
h
, *

;

1437 
roff_t
 
poff
;

1439 
dbv
 = 

->dbenv;

1449 i(
sh_lock
 =
NULL
 ||

1450 
	`F_ISSET
(
sh_lock
, 
DB_LOCKER_DELETED
)) {

1451 
	`__db_rx
(
dbv
, 
__db_lock_vid
);

1452  (
EINVAL
);

1456 i(
sh_lock
->
_lock
 =
INVALID_ROFF
) {

1457 
	`__db_rx
(
dbv
, "Not childransaction");

1458  (
EINVAL
);

1460 
sh_
 = 
	`R_ADDR
(&

->
gfo
, 
sh_lock
->
_lock
);

1461 
	`F_SET
(
sh_lock
, 
DB_LOCKER_DELETED
);

1467 i(
	`F_ISSET
(
sh_
, 
DB_LOCKER_DELETED
)) {

1468 
	`__db_rx
(
dbv
, "Parentocker isot valid");

1469  (
EINVAL
);

1478 
poff
 = 
	`R_OFFSET
(&

->
gfo
, 
sh_
);

1479 

 = 
	`SH_LIST_FIRST
(&
sh_lock
->
hdby
, 
__db_lock
);

1480 

 !
NULL
;

1481 

 = 
	`SH_LIST_FIRST
(&
sh_lock
->
hdby
, 
__db_lock
)) {

1482 
	`SH_LIST_REMOVE
(

, 
lock_lks
, 
__db_lock
);

1485 
obj
 = (
DB_LOCKOBJ
 *)((
u_t8_t
 *)

 +p->obj);

1486 
	`SH_TAILQ_FOREACH
(
h
, &
obj
->
hds
, 
lks
, 
__db_lock
)

1487 i(
h
->
hd
 =
poff
 && 

->
mode
 == hlp->mode)

1490 i(
h
 !
NULL
) {

1492 
h
->
fcou
 +

->refcount;

1495 
	`DB_ASSERT
(
dbv
, 

->
us
 =
DB_LSTAT_HELD
);

1496 
	`SH_TAILQ_REMOVE
(&
obj
->
hds
, 

, 
lks
, 
__db_lock
);

1497 ()
	`__lock_lock
(

, 

, 
sh_lock
, 
DB_LOCK_FREE
);

1500 
	`SH_LIST_INSERT_HEAD
(&
sh_
->
hdby
,

1501 

, 
lock_lks
, 
__db_lock
);

1502 

->
hd
 = 
poff
;

1511 i((
t
 = 
	`__lock_ome
(

1512 

, 
obj
, 
NULL
, 
	`LF_ISSET
(
DB_LOCK_NOWAITERS
))) != 0)

1513  (
t
);

1517 
sh_
->
ocks
 +
sh_lock
->nlocks;

1518 
sh_
->
nwres
 +
sh_lock
->nwrites;

1521 
	}
}

1533 
	$__lock_ome
(

, 
obj
, 
e_chgedp
, 
ags
)

1534 
DB_LOCKTAB
 *

;

1535 
DB_LOCKOBJ
 *
obj
;

1536 *
e_chgedp
;

1537 
u_t32_t
 
ags
;

1539 
__db_lock
 *
_w
, *
_h
, *
xt_wa
;

1540 
DB_LOCKREGION
 *
gi
;

1541 
had_was
, 
e_chged
;

1543 
gi
 = 

->
gfo
.
imy
;

1544 
had_was
 = 0;

1559 
_w
 = 
	`SH_TAILQ_FIRST
(&
obj
->
was
, 
__db_lock
),

1560 
e_chged
 = 
_w
 =
NULL
;

1561 
_w
 !
NULL
;

1562 
_w
 = 
xt_wa
) {

1563 
had_was
 = 1;

1564 
xt_wa
 = 
	`SH_TAILQ_NEXT
(
_w
, 
lks
, 
__db_lock
);

1567 i(
_w
->
us
 !
DB_LSTAT_WAITING
)

1570 i(
	`LF_ISSET
(
DB_LOCK_NOWAITERS
&& 
_w
->
mode
 =
DB_LOCK_WAIT
)

1573 
	`SH_TAILQ_FOREACH
(
_h
, &
obj
->
hds
, 
lks
, 
__db_lock
) {

1574 i(
_h
->
hd
 !
_w
->holder &&

1575 
	`CONFLICTS
(

, 
gi
, 
_h
->
mode
, 
_w
->mode)) {

1576 i(!
	`__lock_is_
(

, 
_h
->
hd
,

1577 
	`R_ADDR
(&

->
gfo
, 
_w
->
hd
)))

1581 i(
_h
 !
NULL
)

1585 
	`SH_TAILQ_REMOVE
(&
obj
->
was
, 
_w
, 
lks
, 
__db_lock
);

1586 
_w
->
us
 = 
DB_LSTAT_PENDING
;

1587 
	`SH_TAILQ_INSERT_TAIL
(&
obj
->
hds
, 
_w
, 
lks
);

1590 
	`MUTEX_UNLOCK
(

->
dbv
, 
_w
->
mtx_lock
);

1591 
e_chged
 = 1;

1598 i(
had_was
 && 
	`SH_TAILQ_FIRST
(&
obj
->
was
, 
__db_lock
=
NULL
) {

1599 
	`LOCK_OBJECTS
(

->
dbv
, 
gi
);

1604 
obj
->
gi
++;

1605 
	`SH_TAILQ_REMOVE
(&
gi
->
dd_objs
, 
obj
, 
dd_lks
, 
__db_lockobj
);

1606 
	`UNLOCK_OBJECTS
(

->
dbv
, 
gi
);

1609 i(
e_chgedp
 !
NULL
)

1610 *
e_chgedp
 = 
e_chged
;

1613 
	}
}

1626 
	$__lock_move_wa
(

, 
sh_obj
, 
lockp
, 
us
)

1627 
DB_LOCKTAB
 *

;

1628 
DB_LOCKOBJ
 *
sh_obj
;

1629 
__db_lock
 *
lockp
;

1630 
db_us_t
 
us
;

1632 
DB_LOCKREGION
 *
gi
;

1633 
do_wakeup
;

1635 
gi
 = 

->
gfo
.
imy
;

1637 
do_wakeup
 = 
lockp
->
us
 =
DB_LSTAT_WAITING
;

1639 
	`SH_TAILQ_REMOVE
(&
sh_obj
->
was
, 
lockp
, 
lks
, 
__db_lock
);

1640 
lockp
->
lks
.
qe_ev
 = -1;

1641 
lockp
->
us
 = status;

1642 i(
	`SH_TAILQ_FIRST
(&
sh_obj
->
was
, 
__db_lock
=
NULL
) {

1643 
	`LOCK_OBJECTS
(

->
dbv
, 
gi
);

1644 
sh_obj
->
gi
++;

1645 
	`SH_TAILQ_REMOVE
(

1646 &
gi
->
dd_objs
,

1647 
sh_obj
, 
dd_lks
, 
__db_lockobj
);

1648 
	`UNLOCK_OBJECTS
(

->
dbv
, 
gi
);

1654 i(
do_wakeup
)

1655 
	`MUTEX_UNLOCK
(

->
dbv
, 
lockp
->
mtx_lock
);

1658 
	}
}

1668 
	$__lock_ade
(
dbv
, 
lock
, 
w_lock
)

1669 
DB_ENV
 *
dbv
;

1670 
DB_LOCK
 *
lock
;

1671 
DB_LOCKER
 *
w_lock
;

1673 
__db_lock
 *

;

1674 
DB_LOCKTAB
 *

;

1675 
t
;

1677 

 = 
dbv
->
lk_hd
;

1678 

 = 
	`R_ADDR
(&

->
gfo
, 
lock
->
off
);

1681 i(

->
g
 !
lock
->gen)

1682  (
DB_NOTFOUND
);

1684 i(
w_lock
 =
NULL
) {

1685 
	`__db_rx
(
dbv
, "Locker doesotxist");

1686  (
EINVAL
);

1690 i((
t
 = 
	`__lock_lock
(

,

1691 

, 
	`R_ADDR
(&

->
gfo
,p->
hd
), 
DB_LOCK_UNLINK
)) != 0)

1692  (
t
);

1695 
	`SH_LIST_INSERT_HEAD
(&
w_lock
->
hdby
, 

, 
lock_lks
, 
__db_lock
);

1696 
w_lock
->
ocks
++;

1697 i(
	`IS_WRITELOCK
(

->
mode
))

1698 
w_lock
->
nwres
++;

1699 

->
hd
 = 
	`R_OFFSET
(&

->
gfo
, 
w_lock
);

1702 
	}
}

	@../lock/lock_deadlock.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

13 
	~"dbc/log.h
"

14 
	~"dbc/txn.h
"

16 
	#ISSET_MAP
(
M
, 
N
((M)[(N/ 32] & (1 << ((N% 32)))

	)

18 
	#CLEAR_MAP
(
M
, 
N
) { \

19 
u_t32_t
 
__i
; \

20 
__i
 = 0; __< (
N
); __i++) \

21 (
M
)[
__i
] = 0; \

22 }

	)

24 
	#SET_MAP
(
M
, 
B
((M)[(B/ 32] |(1 << ((B% 32)))

	)

25 
	#CLR_MAP
(
M
, 
B
((M)[(B/ 32] &~((
u_t
)1 << ((B% 32)))

	)

27 
	#OR_MAP
(
D
, 
S
, 
N
) { \

28 
u_t32_t
 
__i
; \

29 
__i
 = 0; __< (
N
); __i++) \

30 
D
[
__i
] |
S
[__i]; \

31 }

	)

32 
	#BAD_KILLID
 0xffffffff

	)

35 
	mvid
;

36 
	mlf_wa
;

37 
	m_abt
;

38 
u_t32_t
 
	mcou
;

39 
u_t32_t
 
	mid
;

40 
roff_t
 
	mϡ_lock
;

41 
roff_t
 
	mϡ_obj
;

42 
u_t32_t
 
	mϡ_ndx
;

43 
u_t32_t
 
	mϡ_lock_id
;

44 
db_pgno_t
 
	mpgno
;

45 } 
	tlock_fo
;

47 
__dd_abt
 
__P
((
DB_ENV
 *, 
lock_fo
 *, *));

48 
__dd_bud
 
__P
((
DB_ENV
 *, 
u_t32_t
,

49 
u_t32_t
 **, u_t32_*, u_t32_*, 
lock_fo
 **, *));

50 
__dd_fd
 
__P
((
DB_ENV
 *,

51 
u_t32_t
 *, 
lock_fo
 *, u_int32_t, u_int32_t, u_int32_t ***));

52 
__dd_isd
 
__P
((
u_t32_t
, u_int32_t, u_int32_t, u_int32_t));

53 
__dd_vify
 
__P
((
lock_fo
 *, 
u_t32_t
 *, u_int32_t *,

54 
u_t32_t
 *, u_int32_t, u_int32_t, u_int32_t));

56 #ifde
DIAGNOSTIC


57 
__dd_debug


58 
__P
((
DB_ENV
 *, 
lock_fo
 *, 
u_t32_t
 *, u_int32_t, u_int32_t));

68 
	$__lock_de_
(
dbv
, 
ags
, 
y
, 
jep
)

69 
DB_ENV
 *
dbv
;

70 
u_t32_t
 
ags
, 
y
;

71 *
jep
;

73 
DB_THREAD_INFO
 *

;

74 
t
;

76 
	`PANIC_CHECK
(
dbv
);

77 
	`ENV_REQUIRES_CONFIG
(
dbv
,

78 
dbv
->
lk_hd
, "DB_ENV->lock_de", 
DB_INIT_LOCK
);

81 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->lock_de", 
ags
, 0)) != 0)

82  (
t
);

83 
y
) {

84 
DB_LOCK_DEFAULT
:

85 
DB_LOCK_EXPIRE
:

86 
DB_LOCK_MAXLOCKS
:

87 
DB_LOCK_MAXWRITE
:

88 
DB_LOCK_MINLOCKS
:

89 
DB_LOCK_MINWRITE
:

90 
DB_LOCK_OLDEST
:

91 
DB_LOCK_RANDOM
:

92 
DB_LOCK_YOUNGEST
:

95 
	`__db_rx
(
dbv
,

97  (
EINVAL
);

100 
	`ENV_ENTER
(
dbv
, 

);

101 
	`REPLICATION_WRAP
(
dbv
, (
	`__lock_de
(dbv, 
y
, 
jep
)), 
t
);

102 
	`ENV_LEAVE
(
dbv
, 

);

103  (
t
);

104 
	}
}

113 
	$__lock_de
(
dbv
, 
y
, 
jep
)

114 
DB_ENV
 *
dbv
;

115 
u_t32_t
 
y
;

116 *
jep
;

118 
DB_LOCKREGION
 *
gi
;

119 
DB_LOCKTAB
 *

;

120 
db_timeec
 
now
;

121 
lock_fo
 *
idm
;

122 
u_t32_t
 *
bm
, *
cym
, **
ddp
, **
_me
, *
tmpm
;

123 
u_t32_t
 
i
, 
cid
, 
kr
, 
klid
, 
lim
, 
oc
, 
ocks
;

124 
u_t32_t
 
lock_max
, 
txn_max
;

125 
t
, 
us
;

131 i(
	`IS_REP_CLIENT
(
dbv
))

132 
y
 = 
DB_LOCK_MINWRITE
;

134 
_me
 = 
NULL
;

136 

 = 
dbv
->
lk_hd
;

137 i(
jep
 !
NULL
)

138 *
jep
 = 0;

141 
	`LOCK_SYSTEM_LOCK
(
dbv
);

144 
gi
 = 

->
gfo
.
imy
;

146 
	`timeecr
(&
now
);

147 i(
gi
->
ed_dd
 == 0 &&

148 (!
	`timeecist
(&
gi
->
xt_timeout
) ||

149 !
	`__lock_exped
(
dbv
, &
now
, &
gi
->
xt_timeout
))) {

150 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

153 i(
gi
->
ed_dd
 == 0)

154 
y
 = 
DB_LOCK_EXPIRE
;

157 
gi
->
ed_dd
 = 0;

160 
t
 = 
	`__dd_bud
(
dbv
,

161 
y
, &
bm
, &
ocks
, &
oc
, &
idm
, 
jep
);

162 
lock_max
 = 
gi
->

.
_cur_maxid
;

163 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

164 i(
t
 !0 || 
y
 =
DB_LOCK_EXPIRE
)

165  (
t
);

168 i(
ocks
 == 0)

171 #ifde
DIAGNOSTIC


172 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_WAITSFOR
))

173 
	`__dd_debug
(
dbv
, 
idm
, 
bm
, 
ocks
, 
oc
);

177 i((
t
 = 
	`__os_oc
(
dbv
, (
size_t
)
ocks
,

178 (
u_t32_t
* 
oc
, &
cym
)) != 0)

179 
r
;

180 
	`memy
(
cym
, 
bm
, 
ocks
 * (
u_t32_t
* 
oc
);

182 i((
t
 = 
	`__os_oc
(
dbv
, (
u_t32_t
), 
oc
, &
tmpm
)) != 0)

183 
r1
;

186 i((
t
 =

187 
	`__dd_fd
(
dbv
, 
bm
, 
idm
, 
ocks
, 
oc
, &
ddp
)) != 0)

188  (
t
);

199 i(
	`TXN_ON
(
dbv
)) {

200 
	`TXN_SYSTEM_LOCK
(
dbv
);

201 
txn_max
 = ((
DB_TXNREGION
 *)

202 
dbv
->
tx_hd
->
gfo
.
imy
)->
cur_maxid
;

203 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

205 
txn_max
 = 
TXN_MAXIMUM
;

207 
klid
 = 
BAD_KILLID
;

208 
_me
 = 
ddp
;

209 ; *
ddp
 !
NULL
; deadp++) {

210 i(
jep
 !
NULL
)

211 ++*
jep
;

212 
klid
 = (
u_t32_t
)(*
ddp
 - 
bm
/ 
oc
;

213 
lim
 = 
klid
;

230 
kr
 = 
idm
[
klid
].
_abt
 =0 ? klid : 
BAD_KILLID
;

231 i(
kr
 =
BAD_KILLID
 ||

232 
	`__dd_vify
(
idm
, *
ddp
,

233 
tmpm
, 
cym
, 
ocks
, 
oc
, 
kr
) == 0)

234 
klid
 = 
BAD_KILLID
;

236 i(
klid
 !
BAD_KILLID
 &&

237 (
y
 =
DB_LOCK_DEFAULT
 ||ty =
DB_LOCK_RANDOM
))

238 
dokl
;

252 
i
 = (
lim
 + 1% 
ocks
;

253 
i
 !
lim
;

254 
i
 = (+ 1% 
ocks
) {

255 i(!
	`ISSET_MAP
(*
ddp
, 
i
|| 
idm
[i].
_abt
)

263 i(
klid
 =
BAD_KILLID
) {

264 i(
kr
 =
BAD_KILLID
)

265 
u_xt
;

267 
cid
 = 
kr
;

269 
cid
 = 
klid
;

271 
y
) {

272 
DB_LOCK_OLDEST
:

273 i(
	`__dd_isd
(
idm
[
cid
].
id
,

274 
idm
[
i
].
id
, 
lock_max
, 
txn_max
))

277 
DB_LOCK_YOUNGEST
:

278 i(
	`__dd_isd
(
idm
[
i
].
id
,

279 
idm
[
cid
].
id
, 
lock_max
, 
txn_max
))

282 
DB_LOCK_MAXLOCKS
:

283 i(
idm
[
i
].
cou
 < idm[
cid
].count)

286 
DB_LOCK_MAXWRITE
:

287 i(
idm
[
i
].
cou
 < idm[
cid
].count)

290 
DB_LOCK_MINLOCKS
:

291 
DB_LOCK_MINWRITE
:

292 i(
idm
[
i
].
cou
 > idm[
cid
].count)

295 
DB_LOCK_DEFAULT
:

296 
DB_LOCK_RANDOM
:

297 
dokl
;

300 
klid
 = 
BAD_KILLID
;

301 
t
 = 
EINVAL
;

302 
dokl
;

305 
u_xt
: 
kr
 = 
i
;

306 i(
	`__dd_vify
(
idm
, *
ddp
,

307 
tmpm
, 
cym
, 
ocks
, 
oc
, 
i
))

308 
klid
 = 
i
;

311 
dokl
: i(
klid
 =
BAD_KILLID
) {

312 i(
kr
 =
BAD_KILLID
)

324 
	`LOCK_SYSTEM_LOCK
(
dbv
);

325 
gi
->
ed_dd
 = 1;

326 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

327 
klid
 = 
kr
;

332 i((
t
 = 
	`__dd_abt
(
dbv
, &
idm
[
klid
], &
us
)) != 0)

339 i(
us
 != 0) {

340 i(
us
 !
DB_ALREADY_ABORTED
)

341 
	`__db_rx
(
dbv
,

343 (
u_lg
)
idm
[
klid
].
id
);

344 } i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_DEADLOCK
))

345 
	`__db_msg
(
dbv
,

346 "Abtgock %lx", (
u_lg
)
idm
[
klid
].
id
);

348 
	`__os_
(
dbv
, 
tmpm
);

349 
r1
: 
	`__os_
(
dbv
, 
cym
);

351 
r
: i(
_me
 !
NULL
)

352 
	`__os_
(
dbv
, 
_me
);

353 
	`__os_
(
dbv
, 
bm
);

354 
	`__os_
(
dbv
, 
idm
);

356  (
t
);

357 
	}
}

364 
	#DD_INVALID_ID
 ((
u_t32_t
-1)

	)

367 
	$__dd_bud
(
dbv
, 
y
, 
bmp
, 
ocks
, 
lo
, 
idm
, 
jep
)

368 
DB_ENV
 *
dbv
;

369 
u_t32_t
 
y
, **
bmp
, *
ocks
, *
lo
;

370 
lock_fo
 **
idm
;

371 *
jep
;

373 
__db_lock
 *

;

374 
DB_LOCKER
 *
l
, *
lockp
, *
chd
;

375 
DB_LOCKOBJ
 *

, *
lo
, *

;

376 
DB_LOCKREGION
 *
gi
;

377 
DB_LOCKTAB
 *

;

378 
lock_fo
 *
id_y
;

379 
db_timeec
 
now
, 
m_timeout
;

380 
u_t32_t
 *
bm
, 
cou
, 
dd
;

381 
u_t32_t
 *
yp
, 
g
, 
id
, 
dx
, 
ndx
, 
rs
, *
tmpm
;

382 
u_t8_t
 *

;

383 
is_f
, 
t
;

385 
	`COMPQUIET
(
dx
, 0);

386 

 = 
dbv
->
lk_hd
;

387 
gi
 = 

->
gfo
.
imy
;

388 
	`timeecr
(&
now
);

389 
	`timeecr
(&
m_timeout
);

399 i(
y
 =
DB_LOCK_EXPIRE
) {

400 
sk
: 
	`LOCK_OBJECTS
(
dbv
, 
gi
);

401 

 = 
	`SH_TAILQ_FIRST
(&
gi
->
dd_objs
, 
__db_lockobj
);

402 ; 

 !
NULL
; o

) {

403 
dx
 = 

->indx;

404 
g
 = 

->
gi
;

405 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

406 
	`OBJECT_LOCK_NDX
(

, 
dx
);

407 i(

->
gi
 !
g
) {

408 
	`OBJECT_UNLOCK
(

, 
dx
);

409 
sk
;

411 
	`SH_TAILQ_FOREACH
(

, &

->
was
, 
lks
, 
__db_lock
) {

412 
lockp
 = (
DB_LOCKER
 *)

413 
	`R_ADDR
(&

->
gfo
, 

->
hd
);

414 i(

->
us
 =
DB_LSTAT_WAITING
) {

415 i(
	`__lock_exped
(
dbv
,

416 &
now
, &
lockp
->
lk_expe
)) {

417 

->
us
 = 
DB_LSTAT_EXPIRED
;

418 
	`MUTEX_UNLOCK
(

419 
dbv
, 

->
mtx_lock
);

420 i(
jep
 !
NULL
)

421 ++*
jep
;

424 i(!
	`timeecist
(&
m_timeout
) ||

425 
	`timeeccmp
(&
m_timeout
,

426 &
lockp
->
lk_expe
, >))

427 
m_timeout
 =

428 
lockp
->
lk_expe
;

431 
	`LOCK_OBJECTS
(
dbv
, 
gi
);

432 

 = 
	`SH_TAILQ_NEXT
(

, 
dd_lks
, 
__db_lockobj
);

433 
	`OBJECT_UNLOCK
(

, 
dx
);

435 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

436 
de
;

445 
y
: 
cou
 = 
gi
->

.
_ocks
;

446 i(
cou
 == 0) {

447 *
ocks
 = 0;

451 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_DEADLOCK
))

452 
	`__db_msg
(
dbv
, "%luocks", (
u_lg
)
cou
);

454 
cou
 += 20;

455 
rs
 = (
u_t32_t
)
	`DB_ALIGN
(
cou
, 32) / 32;

464 i((
t
 = 
	`__os_oc
(
dbv
, (
size_t
)
cou
,

465 (
u_t32_t
* 
rs
, &
bm
)) != 0)

466  (
t
);

468 i((
t
 = 
	`__os_oc
(
dbv
,

469 (
u_t32_t
), 
rs
, &
tmpm
)) != 0) {

470 
	`__os_
(
dbv
, 
bm
);

471  (
t
);

474 i((
t
 = 
	`__os_oc
(
dbv
,

475 (
size_t
)
cou
, (
lock_fo
), &
id_y
)) != 0) {

476 
	`__os_
(
dbv
, 
bm
);

477 
	`__os_
(
dbv
, 
tmpm
);

478  (
t
);

484 i(
gi
->

.
_ocks
 > 
cou
) {

485 
	`__os_
(
dbv
, 
bm
);

486 
	`__os_
(
dbv
, 
tmpm
);

487 
	`__os_
(
dbv
, 
id_y
);

488 
y
;

494 
id
 = 0;

495 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

496 
	`SH_TAILQ_FOREACH
(
l
, &
gi
->
locks
, 
ulks
, 
__db_lock
) {

497 i(
l
->
ma_lock
 =
INVALID_ROFF
) {

498 
l
->
dd_id
 = 
id
++;

499 
id_y
[
l
->
dd_id
].
id
 =ip->id;

500 
y
) {

501 
DB_LOCK_MINLOCKS
:

502 
DB_LOCK_MAXLOCKS
:

503 
id_y
[
l
->
dd_id
].
cou
 =->
ocks
;

505 
DB_LOCK_MINWRITE
:

506 
DB_LOCK_MAXWRITE
:

507 
id_y
[
l
->
dd_id
].
cou
 =->
nwres
;

512 i(
	`F_ISSET
(
l
, 
DB_LOCKER_INABORT
))

513 
id_y
[
l
->
dd_id
].
_abt
 = 1;

515 
l
->
dd_id
 = 
DD_INVALID_ID
;

518 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

532 
aga
: 
	`memt
(
bm
, 0, 
cou
 * (
u_t32_t
* 
rs
);

534 
	`LOCK_OBJECTS
(
dbv
, 
gi
);

535 

 = 
	`SH_TAILQ_FIRST
(&
gi
->
dd_objs
, 
__db_lockobj
);

536 ; 

 !
NULL
; o

) {

537 
dx
 = 

->indx;

538 
g
 = 

->
gi
;

539 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

541 
	`OBJECT_LOCK_NDX
(

, 
dx
);

542 i(
g
 !

->
gi
) {

543 
	`OBJECT_UNLOCK
(

, 
dx
);

544 
aga
;

552 
	`CLEAR_MAP
(
tmpm
, 
rs
);

553 
	`SH_TAILQ_FOREACH
(

, &

->
hds
, 
lks
, 
__db_lock
) {

554 
lockp
 = (
DB_LOCKER
 *)
	`R_ADDR
(&

->
gfo
, 

->
hd
);

556 i(
lockp
->
dd_id
 =
DD_INVALID_ID
) {

561 i(
lockp
->
ma_lock
 =
INVALID_ROFF
)

563 
dd
 = ((
DB_LOCKER
 *)
	`R_ADDR
(&

->
gfo
,

564 
lockp
->
ma_lock
))->
dd_id
;

565 i(
dd
 =
DD_INVALID_ID
)

567 
lockp
->
dd_id
 = 
dd
;

568 
y
) {

569 
DB_LOCK_MINLOCKS
:

570 
DB_LOCK_MAXLOCKS
:

571 
id_y
[
dd
].
cou
 +
lockp
->
ocks
;

573 
DB_LOCK_MINWRITE
:

574 
DB_LOCK_MAXWRITE
:

575 
id_y
[
dd
].
cou
 +
lockp
->
nwres
;

580 i(
	`F_ISSET
(
lockp
, 
DB_LOCKER_INABORT
))

581 
id_y
[
dd
].
_abt
 = 1;

584 
dd
 = 
lockp
->
dd_id
;

585 
id_y
[
dd
].
vid
 = 1;

591 i(

->
us
 =
DB_LSTAT_HELD
)

592 
	`SET_MAP
(
tmpm
, 
dd
);

599 
is_f
 = 1,

600 

 = 
	`SH_TAILQ_FIRST
(&

->
was
, 
__db_lock
);

601 

 !
NULL
;

602 
is_f
 = 0,

603 

 = 
	`SH_TAILQ_NEXT
p, 
lks
, 
__db_lock
)) {

604 
lockp
 = (
DB_LOCKER
 *)
	`R_ADDR
(&

->
gfo
, 

->
hd
);

605 i(

->
us
 =
DB_LSTAT_WAITING
) {

606 i(
	`__lock_exped
(
dbv
,

607 &
now
, &
lockp
->
lk_expe
)) {

608 

->
us
 = 
DB_LSTAT_EXPIRED
;

609 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_lock
);

610 i(
jep
 !
NULL
)

611 ++*
jep
;

614 i(!
	`timeecist
(&
m_timeout
) ||

615 
	`timeeccmp
(

616 &
m_timeout
, &
lockp
->
lk_expe
, >))

617 
m_timeout
 = 
lockp
->
lk_expe
;

620 i(
lockp
->
dd_id
 =
DD_INVALID_ID
) {

621 
dd
 = ((
DB_LOCKER
 *)
	`R_ADDR
(&

->
gfo
,

622 
lockp
->
ma_lock
))->
dd_id
;

623 
lockp
->
dd_id
 = 
dd
;

624 
y
) {

625 
DB_LOCK_MINLOCKS
:

626 
DB_LOCK_MAXLOCKS
:

627 
id_y
[
dd
].
cou
 +
lockp
->
ocks
;

629 
DB_LOCK_MINWRITE
:

630 
DB_LOCK_MAXWRITE
:

631 
id_y
[
dd
].
cou
 +
lockp
->
nwres
;

637 
dd
 = 
lockp
->
dd_id
;

638 
id_y
[
dd
].
vid
 = 1;

644 i(

->
us
 !
DB_LSTAT_WAITING
)

647 
yp
 = 
bm
 + (
rs
 * 
dd
);

648 
	`OR_MAP
(
yp
, 
tmpm
, 
rs
);

656 i(
is_f
) {

657 i(
	`ISSET_MAP
(
yp
, 
dd
))

658 
id_y
[
dd
].
lf_wa
 = 1;

659 
	`CLR_MAP
(
yp
, 
dd
);

662 
	`LOCK_OBJECTS
(
dbv
, 
gi
);

663 

 = 
	`SH_TAILQ_NEXT
(

, 
dd_lks
, 
__db_lockobj
);

664 
	`OBJECT_UNLOCK
(

, 
dx
);

666 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

677 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

678 
id
 = 0; id < 
cou
; id++) {

679 i(!
id_y
[
id
].
vid
)

681 i((
t
 = 
	`__lock_glock_t
(

,

682 
id_y
[
id
].id, 0, &
lockp
)!0 ||ock=
NULL
)

690 
chd
 = 
	`SH_LIST_FIRST
(&
lockp
->
chd_lock
, 
__db_lock
);

691 i(
chd
 !
NULL
) {

693 
c_y
: 

 = 
	`SH_LIST_FIRST
(&
chd
->
hdby
, 
__db_lock
);

694 i(
	`SH_LIST_EMPTY
(&
chd
->
hdby
|| 

 =
NULL
)

695 
c_xt
;

697 
ndx
 = 

->
dx
;

698 
	`OBJECT_LOCK_NDX
(

, 
ndx
);

699 i(

 !
	`SH_LIST_FIRST
(

700 &
chd
->
hdby
, 
__db_lock
) ||

701 
ndx
 !

->
dx
) {

702 
	`OBJECT_UNLOCK
(

, 
ndx
);

703 
c_y
;

706 i(

 !
NULL
 &&

707 

->
us
 =
DB_LSTAT_WAITING
) {

708 
id_y
[
id
].
ϡ_lock_id
 = 
chd
->id;

709 
g_lock
;

711 
	`OBJECT_UNLOCK
(

, 
ndx
);

713 
c_xt
: 
chd
 = 
	`SH_LIST_NEXT
(

714 
chd
, 
chd_lk
, 
__db_lock
);

715 } 
chd
 !
NULL
);

718 
l_y
: 

 = 
	`SH_LIST_FIRST
(&
lockp
->
hdby
, 
__db_lock
);

719 i(!
	`SH_LIST_EMPTY
(&
lockp
->
hdby
&& 

 !
NULL
) {

720 
ndx
 = 

->
dx
;

721 
	`OBJECT_LOCK_NDX
(

, 
ndx
);

722 i(

 !
	`SH_LIST_FIRST
(&
lockp
->
hdby
, 
__db_lock
) ||

723 

->
dx
 !
ndx
) {

724 
	`OBJECT_UNLOCK
(

, 
ndx
);

725 
l_y
;

727 
id_y
[
id
].
ϡ_lock_id
 = 
lockp
->id;

728 
g_lock
: 
id_y
[
id
].
ϡ_lock
 = 
	`R_OFFSET
(&

->
gfo
, 

);

729 
id_y
[
id
].
ϡ_obj
 = 

->
obj
;

730 
lo
 = (
DB_LOCKOBJ
 *)((
u_t8_t
 *)

 +p->
obj
);

731 
id_y
[
id
].
ϡ_ndx
 = 
lo
->
dx
;

732 

 = 
	`SH_DBT_PTR
(&
lo
->
lockobj
);

733 i(
lo
->
lockobj
.
size
 >(
db_pgno_t
))

734 
	`memy
(&
id_y
[
id
].
pgno
,

735 

, (
db_pgno_t
));

737 
id_y
[
id
].
pgno
 = 0;

738 
	`OBJECT_UNLOCK
(

, 
ndx
);

741 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

747 *
ocks
 = 
id
;

748 *
idm
 = 
id_y
;

749 *
bmp
 = 
bm
;

750 *
lo
 = 
rs
;

751 
	`__os_
(
dbv
, 
tmpm
);

752 
de
: i(
	`timeecist
(&
gi
->
xt_timeout
))

753 
gi
->
xt_timeout
 = 
m_timeout
;

755 
	}
}

758 
	$__dd_fd
(
dbv
, 
bmp
, 
idm
, 
ocks
, 
oc
, 
ddp
)

759 
DB_ENV
 *
dbv
;

760 
u_t32_t
 *
bmp
, 
ocks
, 
oc
;

761 
lock_fo
 *
idm
;

762 
u_t32_t
 ***
ddp
;

764 
u_t32_t
 
i
, 
j
, 
k
, *
mym
, *
tmpm
, **

;

765 
u_t
 
ndd
, 
nddloc
;

766 
t
;

768 #unde
INITIAL_DEAD_ALLOC


769 
	#INITIAL_DEAD_ALLOC
 8

	)

771 
nddloc
 = 
INITIAL_DEAD_ALLOC
;

772 
ndd
 = 0;

773 i((
t
 = 
	`__os_mloc
(
dbv
,

774 
nddloc
 * (
u_t32_t
 *), &

)) != 0)

775  (
t
);

781 
mym
 = 
bmp
, 
i
 = 0; i < 
ocks
; i++, mym +
oc
) {

782 i(!
idm
[
i
].
vid
)

784 
j
 = 0; j < 
ocks
; j++) {

785 i(!
	`ISSET_MAP
(
mym
, 
j
))

789 
tmpm
 = 
bmp
 + (
oc
 * 
j
);

790 
	`OR_MAP
(
mym
, 
tmpm
, 
oc
);

791 i(!
	`ISSET_MAP
(
mym
, 
i
))

795 i(
ndd
 + 2 >
nddloc
) {

796 
nddloc
 <<= 1;

801 i(
	`__os_loc
(
dbv
,

802 
nddloc
 * (
u_t32_t
),

803 &

) != 0) {

804 

[
ndd
] = 
NULL
;

805 *
ddp
 = 

;

809 

[
ndd
++] = 
mym
;

812 
k
 = 0; k < 
ocks
; k++)

813 i(
	`ISSET_MAP
(
mym
, 
k
))

814 
idm
[
k
].
vid
 = 0;

818 

[
ndd
] = 
NULL
;

819 *
ddp
 = 

;

821 
	}
}

824 
	$__dd_abt
(
dbv
, 
fo
, 
u
)

825 
DB_ENV
 *
dbv
;

826 
lock_fo
 *
fo
;

827 *
u
;

829 
__db_lock
 *
lockp
;

830 
DB_LOCKER
 *
lockp
;

831 
DB_LOCKOBJ
 *
sh_obj
;

832 
DB_LOCKREGION
 *
gi
;

833 
DB_LOCKTAB
 *

;

834 
t
;

836 *
u
 = 0;

838 

 = 
dbv
->
lk_hd
;

839 
gi
 = 

->
gfo
.
imy
;

840 
t
 = 0;

843 
	`LOCK_SYSTEM_LOCK
(
dbv
);

844 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

850 i((
t
 = 
	`__lock_glock_t
(

,

851 
fo
->
ϡ_lock_id
, 0, &
lockp
)) != 0)

852 
r
;

853 i(
lockp
 =
NULL
 || 
	`F_ISSET
ockp, 
DB_LOCKER_INABORT
)) {

854 *
u
 = 
DB_ALREADY_ABORTED
;

855 
out
;

864 
	`OBJECT_LOCK_NDX
(

, 
fo
->
ϡ_ndx
);

865 i((
lockp
 = 
	`SH_LIST_FIRST
(&
lockp
->
hdby
, 
__db_lock
)=
NULL
) {

866 *
u
 = 
DB_ALREADY_ABORTED
;

867 
de
;

869 i(
	`R_OFFSET
(&

->
gfo
, 
lockp
!
fo
->
ϡ_lock
 ||

870 
lockp
->
hd
 !
	`R_OFFSET
(&

->
gfo
, 
lockp
) ||

871 
lockp
->
obj
 !
fo
->
ϡ_obj
 ||ockp->
us
 !
DB_LSTAT_WAITING
) {

872 *
u
 = 
DB_ALREADY_ABORTED
;

873 
de
;

876 
sh_obj
 = (
DB_LOCKOBJ
 *)((
u_t8_t
 *)
lockp
 +ockp->
obj
);

879 
lockp
->
us
 = 
DB_LSTAT_ABORTED
;

880 
	`SH_TAILQ_REMOVE
(&
sh_obj
->
was
, 
lockp
, 
lks
, 
__db_lock
);

887 i(
	`SH_TAILQ_FIRST
(&
sh_obj
->
was
, 
__db_lock
=
NULL
) {

888 
	`LOCK_OBJECTS
(
dbv
, 
gi
);

889 
	`SH_TAILQ_REMOVE
(&
gi
->
dd_objs
,

890 
sh_obj
, 
dd_lks
, 
__db_lockobj
);

891 
	`UNLOCK_OBJECTS
(
dbv
, 
gi
);

893 
t
 = 
	`__lock_ome
(

, 
sh_obj
, 
NULL
, 0);

894 
	`MUTEX_UNLOCK
(
dbv
, 
lockp
->
mtx_lock
);

896 
	`STAT
(
gi
->

.
_nddlocks
++);

897 
de
: 
	`OBJECT_UNLOCK
(

, 
fo
->
ϡ_ndx
);

898 
r
:

899 
out
: 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

900 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

901  (
t
);

902 
	}
}

904 #ifde
DIAGNOSTIC


906 
	$__dd_debug
(
dbv
, 
idm
, 
bm
, 
ocks
, 
oc
)

907 
DB_ENV
 *
dbv
;

908 
lock_fo
 *
idm
;

909 
u_t32_t
 *
bm
, 
ocks
, 
oc
;

911 
DB_MSGBUF
 
mb
;

912 
u_t32_t
 
i
, 
j
, *
mym
;

914 
	`DB_MSGBUF_INIT
(&
mb
);

916 
	`__db_msg
(
dbv
, "Waitsforrray\nWaiter:\tWaiting on:");

917 
mym
 = 
bm
, 
i
 = 0; i < 
ocks
; i++, mym +
oc
) {

918 i(!
idm
[
i
].
vid
)

921 
	`__db_msgadd
(
dbv
, &
mb
,

922 "%lx/%lu:\t", (
u_lg
)
idm
[
i
].
id
, (u_lg)idm[i].
pgno
);

923 
j
 = 0; j < 
ocks
; j++)

924 i(
	`ISSET_MAP
(
mym
, 
j
))

925 
	`__db_msgadd
(
dbv
,

926 &
mb
, " %lx", (
u_lg
)
idm
[
j
].
id
);

927 
	`__db_msgadd
(
dbv
, &
mb
, " %lu", (
u_lg
)
idm
[
i
].
ϡ_lock
);

928 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

930 
	}
}

945 
	$__dd_vify
(
idm
, 
ddm
, 
tmpm
, 
igm
, 
ocks
, 
oc
, 
which
)

946 
lock_fo
 *
idm
;

947 
u_t32_t
 *
ddm
, *
tmpm
, *
igm
;

948 
u_t32_t
 
ocks
, 
oc
, 
which
;

950 
u_t32_t
 *
tm
;

951 
u_t32_t
 
j
;

952 
cou
;

954 
	`memt
(
tmpm
, 0, (
u_t32_t
* 
oc
);

965 
cou
 = 0;

966 
j
 = 0; j < 
ocks
; j++) {

967 i(!
	`ISSET_MAP
(
ddm
, 
j
|| j =
which
)

971 
tm
 = 
igm
 + (
oc
 * 
j
);

979 i(
idm
[
j
].
lf_wa
)

980 
	`SET_MAP
(
tm
, 
j
);

981 
	`OR_MAP
(
tmpm
, 
tm
, 
oc
);

982 
cou
++;

985 i(
cou
 == 1)

992 
j
 = 0; j < 
ocks
; j++) {

993 i(!
	`ISSET_MAP
(
ddm
, 
j
|| j =
which
)

995 i(!
	`ISSET_MAP
(
tmpm
, 
j
))

999 
	}
}

1009 
	$__dd_isd
(
a
, 
b
, 
lock_max
, 
txn_max
)

1010 
u_t32_t
 
a
, 
b
;

1011 
u_t32_t
 
lock_max
, 
txn_max
;

1013 
u_t32_t
 
max
;

1016 i(
a
 <
DB_LOCK_MAXID
 && 
b
 > DB_LOCK_MAXID)

1018 i(
b
 <
DB_LOCK_MAXID
 && 
a
 > DB_LOCK_MAXID)

1022 
max
 = 
txn_max
;

1023 i(
a
 <
DB_LOCK_MAXID
)

1024 
max
 = 
lock_max
;

1035 i(
a
 > 
max
 && 
b
 < max)

1037 i(
b
 > 
max
 && 
a
 < max)

1040  (
a
 < 
b
);

1041 
	}
}

	@../lock/lock_failchk.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

13 
	~"dbc/txn.h
"

22 
	$__lock_chk
(
dbv
)

23 
DB_ENV
 *
dbv
;

25 
DB_LOCKER
 *
l
;

26 
DB_LOCKREGION
 *
p
;

27 
DB_LOCKREQ
 
que
;

28 
DB_LOCKTAB
 *

;

29 
u_t32_t
 
i
;

30 
t
;

31 
buf
[
DB_THREADID_STRLEN
];

33 

 = 
dbv
->
lk_hd
;

34 
p
 = 

->
gfo
.
imy
;

36 
y
: 
	`LOCK_SYSTEM_LOCK
(
dbv
);

37 
	`LOCK_LOCKERS
(
dbv
, 
p
);

39 
t
 = 0;

40 
i
 = 0; i < 
p
->
lock_t_size
; i++)

41 
	`SH_TAILQ_FOREACH
(
l
, &

->
lock_b
[
i
], 
lks
, 
__db_lock
) {

47 i(
l
->
id
 >
TXN_MINIMUM
)

51 i(
dbv
->
	`is_ive
(dbv, 
l
->
pid
,->
tid
, 0))

60 i(
l
->
nwres
 != 0) {

61 
t
 = 
	`__db_ed
(
dbv
,

63 
l
->
pid
,->
tid
);

70 
	`__db_msg
(
dbv
, "Freeingocks forocker %#lx: %s",

71 (
u_lg
)
l
->
id
, 
dbv
->
	`thad_id_rg
(

72 
dbv
, 
l
->
pid
,->
tid
, 
buf
));

73 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

74 
	`UNLOCK_LOCKERS
(
dbv
, 
p
);

75 
	`memt
(&
que
, 0, (request));

76 
que
.

 = 
DB_LOCK_PUT_ALL
;

77 i((
t
 = 
	`__lock_vec
(
dbv
,

78 
l
, 0, &
que
, 1, 
NULL
)) != 0)

79  (
t
);

88 i((
t
 = 
	`__lock_mylock
(

, 
l
)) != 0)

89  (
t
);

90 
y
;

93 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

94 
	`UNLOCK_LOCKERS
(
dbv
, 
p
);

96  (
t
);

97 
	}
}

	@../lock/lock_id.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

13 
	~"dbc/log.h
"

22 
	$__lock_id_
(
dbv
, 
idp
)

23 
DB_ENV
 *
dbv
;

24 
u_t32_t
 *
idp
;

26 
DB_THREAD_INFO
 *

;

27 
t
;

29 
	`PANIC_CHECK
(
dbv
);

30 
	`ENV_REQUIRES_CONFIG
(
dbv
,

31 
dbv
->
lk_hd
, "DB_ENV->lock_id", 
DB_INIT_LOCK
);

33 
	`ENV_ENTER
(
dbv
, 

);

34 
	`REPLICATION_WRAP
(
dbv
, (
	`__lock_id
(dbv, 
idp
, 
NULL
)), 
t
);

35 
	`ENV_LEAVE
(
dbv
, 

);

36  (
t
);

37 
	}
}

46 
	$__lock_id
(
dbv
, 
idp
, 
lkp
)

47 
DB_ENV
 *
dbv
;

48 
u_t32_t
 *
idp
;

49 
DB_LOCKER
 **
lkp
;

51 
DB_LOCKER
 *
lk
;

52 
DB_LOCKTAB
 *

;

53 
DB_LOCKREGION
 *
gi
;

54 
u_t32_t
 
id
, *
ids
;

55 
nids
, 
t
;

57 

 = 
dbv
->
lk_hd
;

58 
gi
 = 

->
gfo
.
imy
;

59 
t
 = 0;

61 
id
 = 
DB_LOCK_INVALIDID
;

62 
lk
 = 
NULL
;

64 
	`LOCK_SYSTEM_LOCK
(
dbv
);

74 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

76 i(
gi
->

.
_id
 =
DB_LOCK_MAXID
 &&

77 
gi
->

.
_cur_maxid
 !
DB_LOCK_MAXID
)

78 
gi
->

.
_id
 = 
DB_LOCK_INVALIDID
;

79 i(
gi
->

.
_id
 =gi->.
_cur_maxid
) {

80 i((
t
 = 
	`__os_mloc
(
dbv
,

81 (
u_t32_t
* 
gi
->

.
_ocks
, &
ids
)) != 0)

82 
r
;

83 
nids
 = 0;

84 
	`SH_TAILQ_FOREACH
(
lk
, &
gi
->
locks
, 
ulks
, 
__db_lock
)

85 
ids
[
nids
++] = 
lk
->
id
;

86 
gi
->

.
_id
 = 
DB_LOCK_INVALIDID
;

87 
gi
->

.
_cur_maxid
 = 
DB_LOCK_MAXID
;

88 i(
nids
 != 0)

89 
	`__db_ida
(
ids
, 
nids
,

90 &
gi
->

.
_id
, &gi->.
_cur_maxid
);

91 
	`__os_
(
dbv
, 
ids
);

93 
id
 = ++
gi
->

.
_id
;

96 
t
 = 
	`__lock_glock_t
(

, 
id
, 1, &
lk
);

98 
r
: 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

99 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

101 i(
idp
)

102 *
idp
 = 
id
;

103 i(
lkp
)

104 *
lkp
 = 
lk
;

105  (
t
);

106 
	}
}

114 
	$__lock_t_thad_id
(
ef_g
, 
pid
, 
tid
)

115 *
ef_g
;

116 
pid_t
 
pid
;

117 
db_thadid_t
 
tid
;

119 
DB_LOCKER
 *
ef
;

121 
ef
 = 
ef_g
;

122 
ef
->
pid
 =id;

123 
ef
->
tid
 =id;

124 
	}
}

133 
	$__lock_id__
(
dbv
, 
id
)

134 
DB_ENV
 *
dbv
;

135 
u_t32_t
 
id
;

137 
DB_LOCKER
 *
sh_lock
;

138 
DB_LOCKREGION
 *
gi
;

139 
DB_LOCKTAB
 *

;

140 
DB_THREAD_INFO
 *

;

141 
hd_check
, 
t
, 
t_t
;

143 
	`PANIC_CHECK
(
dbv
);

144 
	`ENV_REQUIRES_CONFIG
(
dbv
,

145 
dbv
->
lk_hd
, "DB_ENV->lock_id_", 
DB_INIT_LOCK
);

147 
	`ENV_ENTER
(
dbv
, 

);

149 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

150 i(
hd_check
 && (
t
 = 
	`__v_p_r
(
dbv
, 1)) != 0) {

151 
hd_check
 = 0;

152 
r
;

155 

 = 
dbv
->
lk_hd
;

156 
gi
 = 

->
gfo
.
imy
;

158 
	`LOCK_SYSTEM_LOCK
(
dbv
);

159 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

160 i((
t
 =

161 
	`__lock_glock_t
(
dbv
->
lk_hd
, 
id
, 0, &
sh_lock
)) == 0)

162 
t
 = 
	`__lock_lock
(

, 
gi
, 
sh_lock
);

163 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

164 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

166 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

167 
t
 = 
t_t
;

168 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

169  (
t
);

170 
	}
}

179 
	$__lock_id_
(
dbv
, 
sh_lock
)

180 
DB_ENV
 *
dbv
;

181 
DB_LOCKER
 *
sh_lock
;

183 
DB_LOCKTAB
 *

;

184 
DB_LOCKREGION
 *
gi
;

185 
t
;

187 

 = 
dbv
->
lk_hd
;

188 
gi
 = 

->
gfo
.
imy
;

189 
t
 = 0;

191 i(
sh_lock
->
ocks
 != 0) {

192 
	`__db_rx
(
dbv
, "Locker still hasocks");

193 
t
 = 
EINVAL
;

194 
r
;

197 
	`LOCK_SYSTEM_LOCK
(
dbv
);

198 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

199 
t
 = 
	`__lock_lock
(

, 
gi
, 
sh_lock
);

200 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

201 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

203 
r
:

204  (
t
);

205 
	}
}

215 
	$__lock_id_t
(
dbv
, 
cur_id
, 
max_id
)

216 
DB_ENV
 *
dbv
;

217 
u_t32_t
 
cur_id
, 
max_id
;

219 
DB_LOCKTAB
 *

;

220 
DB_LOCKREGION
 *
gi
;

222 
	`ENV_REQUIRES_CONFIG
(
dbv
,

223 
dbv
->
lk_hd
, "lock_id_t", 
DB_INIT_LOCK
);

225 

 = 
dbv
->
lk_hd
;

226 
gi
 = 

->
gfo
.
imy
;

227 
gi
->

.
_id
 = 
cur_id
;

228 
gi
->

.
_cur_maxid
 = 
max_id
;

231 
	}
}

247 
	$__lock_glock
(

, 
lock
, 

, 

)

248 
DB_LOCKTAB
 *

;

249 
u_t32_t
 
lock
;

250 

;

251 
DB_LOCKER
 **

;

253 
DB_ENV
 *
dbv
;

254 
DB_LOCKREGION
 *
gi
;

255 
t
;

257 
	`COMPQUIET
(
gi
, 
NULL
);

258 
dbv
 = 

->dbenv;

259 
gi
 = 

->
gfo
.
imy
;

261 
	`LOCK_SYSTEM_LOCK
(
dbv
);

262 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

263 
t
 = 
	`__lock_glock_t
(

, 
lock
, 

, 

);

264 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

265 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

267  (
t
);

268 
	}
}

271 
	$__lock_glock_t
(

, 
lock
, 

, 

)

272 
DB_LOCKTAB
 *

;

273 
u_t32_t
 
lock
;

274 

;

275 
DB_LOCKER
 **

;

277 
DB_ENV
 *
dbv
;

278 
DB_LOCKER
 *
sh_lock
;

279 
DB_LOCKREGION
 *
gi
;

280 
u_t32_t
 
dx
;

282 
dbv
 = 

->dbenv;

283 
gi
 = 

->
gfo
.
imy
;

285 
	`LOCKER_HASH
(

, 
gi
, 
lock
, 
dx
);

291 
	`SH_TAILQ_FOREACH
(
sh_lock
, &

->
lock_b
[
dx
], 
lks
, 
__db_lock
)

292 i(
sh_lock
->
id
 =
lock
)

294 i(
sh_lock
 =
NULL
 && 

) {

296 i((
sh_lock
 = 
	`SH_TAILQ_FIRST
(

297 &
gi
->
_locks
, 
__db_lock
)=
NULL
)

298  (
	`__lock_nomem
(
dbv
, "lockerntries"));

299 
	`SH_TAILQ_REMOVE
(

300 &
gi
->
_locks
, 
sh_lock
, 
lks
, 
__db_lock
);

301 ++
gi
->

.
_ocks
;

302 #ifde
HAVE_STATISTICS


303 i(
gi
->

.
_ocks
 >egi->.
_maxocks
)

304 
gi
->

.
_maxocks
 =egi->.
_ocks
;

307 
sh_lock
->
id
 = 
lock
;

308 
dbv
->
	`thad_id
(dbv, &
sh_lock
->
pid
, &sh_lock->
tid
);

309 
sh_lock
->
dd_id
 = 0;

310 
sh_lock
->
ma_lock
 = 
INVALID_ROFF
;

311 
sh_lock
->
_lock
 = 
INVALID_ROFF
;

312 
	`SH_LIST_INIT
(&
sh_lock
->
chd_lock
);

313 
sh_lock
->
ags
 = 0;

314 
	`SH_LIST_INIT
(&
sh_lock
->
hdby
);

315 
sh_lock
->
ocks
 = 0;

316 
sh_lock
->
nwres
 = 0;

317 
sh_lock
->
lk_timeout
 = 0;

318 
	`timeecr
(&
sh_lock
->
tx_expe
);

319 
	`timeecr
(&
sh_lock
->
lk_expe
);

321 
	`SH_TAILQ_INSERT_HEAD
(

322 &

->
lock_b
[
dx
], 
sh_lock
, 
lks
, 
__db_lock
);

323 
	`SH_TAILQ_INSERT_HEAD
(&
gi
->
locks
,

324 
sh_lock
, 
ulks
, 
__db_lock
);

327 *

 = 
sh_lock
;

329 
	}
}

338 
	$__lock_addmylock
(
dbv
, 
pid
, 
id
)

339 
DB_ENV
 *
dbv
;

340 
u_t32_t
 
pid
, 
id
;

342 
DB_LOCKER
 *
lockp
, *
mlockp
;

343 
DB_LOCKREGION
 *
gi
;

344 
DB_LOCKTAB
 *

;

345 
t
;

347 
	`COMPQUIET
(
gi
, 
NULL
);

348 

 = 
dbv
->
lk_hd
;

349 
gi
 = 

->
gfo
.
imy
;

350 
	`LOCK_SYSTEM_LOCK
(
dbv
);

351 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

354 i((
t
 = 
	`__lock_glock_t
(

, 
pid
, 1, &
mlockp
)) != 0)

355 
r
;

364 i((
t
 = 
	`__lock_glock_t
(

, 
id
, 1, &
lockp
)) != 0)

365 
r
;

368 
lockp
->
_lock
 = 
	`R_OFFSET
(&

->
gfo
, 
mlockp
);

371 i(
mlockp
->
ma_lock
 =
INVALID_ROFF
)

372 
lockp
->
ma_lock
 = 
	`R_OFFSET
(&

->
gfo
, 
mlockp
);

374 
lockp
->
ma_lock
 = 
mlockp
->master_locker;

375 
mlockp
 = 
	`R_ADDR
(&

->
gfo
, mlockp->
ma_lock
);

383 
	`SH_LIST_INSERT_HEAD
(

384 &
mlockp
->
chd_lock
, 
lockp
, 
chd_lk
, 
__db_lock
);

386 
r
: 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

387 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

389  (
t
);

390 
	}
}

401 
	$__lock_mylock
(

, 
sh_lock
)

402 
DB_LOCKTAB
 *

;

403 
DB_LOCKER
 *
sh_lock
;

405 
DB_ENV
 *
dbv
;

406 
DB_LOCKREGION
 *
gi
;

407 
t
;

409 
dbv
 = 

->dbenv;

410 
gi
 = 

->
gfo
.
imy
;

412 i(
sh_lock
 =
NULL
)

415 
	`LOCK_SYSTEM_LOCK
(
dbv
);

416 
	`LOCK_LOCKERS
(
dbv
, 
gi
);

418 i(
	`SH_LIST_FIRST
(&
sh_lock
->
hdby
, 
__db_lock
!
NULL
) {

419 
t
 = 
EINVAL
;

420 
	`__db_rx
(
dbv
, "Freeingocker withocks");

421 
r
;

425 i(
sh_lock
->
ma_lock
 !
INVALID_ROFF
)

426 
	`SH_LIST_REMOVE
(
sh_lock
, 
chd_lk
, 
__db_lock
);

428 
t
 = 
	`__lock_lock
(

, 
gi
, 
sh_lock
);

430 
r
: 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

431 
	`UNLOCK_LOCKERS
(
dbv
, 
gi
);

432  (
t
);

433 
	}
}

444 
	$__lock_lock
(

, 
gi
, 
sh_lock
)

445 
DB_LOCKTAB
 *

;

446 
DB_LOCKREGION
 *
gi
;

447 
DB_LOCKER
 *
sh_lock
;

450 
u_t32_t
 
dx
;

451 
	`LOCKER_HASH
(

, 
gi
, 
sh_lock
->
id
, 
dx
);

452 
	`SH_TAILQ_REMOVE
(&

->
lock_b
[
dx
], 
sh_lock
, 
lks
, 
__db_lock
);

453 
	`SH_TAILQ_INSERT_HEAD
(

454 &
gi
->
_locks
, 
sh_lock
, 
lks
, 
__db_lock
);

455 
	`SH_TAILQ_REMOVE
(&
gi
->
locks
, 
sh_lock
, 
ulks
, 
__db_lock
);

456 
gi
->

.
_ocks
--;

458 
	}
}

	@../lock/lock_list.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

13 
	~"dbc/log.h
"

15 
__lock_st_cmp
 
__P
((const *, const *));

45 
	#MAX_PGNOS
 0xffff

	)

52 
	#RET_SIZE
(
size
, 
cou
) ((size) + \

53 (
u_t32_t
+ (
cou
* 2 * (
u_t16_t
))

	)

55 
	#PUT_COUNT
(
dp
, 
cou
d{ 
u_t32_t
 *

 = (u_int32_t *)dp;\

56 *

 = 
cou
; \

57 
dp
 = (
u_t8_t
 *)dp + \

58 (
u_t32_t
); \

59 } 0)

	)

60 
	#PUT_PCOUNT
(
dp
, 
cou
d{ 
u_t16_t
 *

 = (u_int16_t *)dp;\

61 *

 = 
cou
; \

62 
dp
 = (
u_t8_t
 *)dp + \

63 (
u_t16_t
); \

64 } 0)

	)

65 
	#PUT_SIZE
(
dp
, 
size
d{ 
u_t16_t
 *

 = (u_int16_t *)dp;\

66 *

 = 
size
; \

67 
dp
 = (
u_t8_t
 *)dp + \

68 (
u_t16_t
); \

69 } 0)

	)

70 
	#PUT_PGNO
(
dp
, 
pgno
d{ 
db_pgno_t
 *

 = (db_pgno_t *)dp;\

71 *

 = 
pgno
; \

72 
dp
 = (
u_t8_t
 *)dp + \

73 (
db_pgno_t
); \

74 } 0)

	)

75 
	#COPY_OBJ
(
dp
, 
obj
) do { \

76 
	`memy
(
dp
, \

77 (
obj
)->
da
, (obj)->
size
); \

78 
dp
 = (
u_t8_t
 *)dp + \

79 
	`DB_ALIGN
((
obj
)->
size
, \

80 (
u_t32_t
)); \

81 } 0)

	)

82 
	#GET_COUNT
(
dp
, 
cou
) do { \

83 (
cou
*(
u_t32_t
 *)
dp
; \

84 
dp
 = (
u_t8_t
 *)dp + \

85 (
u_t32_t
); \

86 } 0)

	)

87 
	#GET_PCOUNT
(
dp
, 
cou
) do { \

88 (
cou
*(
u_t16_t
 *)
dp
; \

89 
dp
 = (
u_t8_t
 *)dp + \

90 (
u_t16_t
); \

91 } 0)

	)

92 
	#GET_SIZE
(
dp
, 
size
) do { \

93 (
size
*(
u_t16_t
 *)
dp
; \

94 
dp
 = (
u_t8_t
 *)dp + \

95 (
u_t16_t
); \

96 } 0)

	)

97 
	#GET_PGNO
(
dp
, 
pgno
) do { \

98 (
pgno
*(
db_pgno_t
 *)
dp
; \

99 
dp
 = (
u_t8_t
 *)dp + \

100 (
db_pgno_t
); \

101 } 0)

	)

109 
	$__lock_fix_li
(
dbv
, 
li_dbt
, 
ocks
)

110 
DB_ENV
 *
dbv
;

111 
DBT
 *
li_dbt
;

112 
u_t32_t
 
ocks
;

114 
DBT
 *
obj
;

115 
DB_LOCK_ILOCK
 *
lock
, *
ock
;

116 
u_t32_t
 
i
, 
j
, 
nfid
, 
gno
, 
size
;

117 
u_t8_t
 *
da
, *
dp
;

118 
t
;

120 i((
size
 = 
li_dbt
->size) == 0)

123 
obj
 = (
DBT
 *)
li_dbt
->
da
;

133 
ocks
) {

135 
size
 = 
	`RET_SIZE
(
obj
->size, 1);

136 i((
t
 = 
	`__os_mloc
(
dbv
, 
size
, &
da
)) != 0)

137  (
t
);

139 
dp
 = 
da
;

140 
	`PUT_COUNT
(
dp
, 1);

141 
	`PUT_PCOUNT
(
dp
, 0);

142 
	`PUT_SIZE
(
dp
, 
obj
->
size
);

143 
	`COPY_OBJ
(
dp
, 
obj
);

147 
	`qst
(
li_dbt
->
da
, 
ocks
, (
DBT
), 
__lock_st_cmp
);

150 
nfid
 = 
gno
 = 0;

151 
i
 = 0;

152 i(
obj
->
size
 !(
DB_LOCK_ILOCK
))

153 
n_ock
;

155 
nfid
 = 1;

156 
ock
 = (
DB_LOCK_ILOCK
 *)
obj
->
da
;

159 
j
 = 0;

160 
obj
[0].
un
 = 0;

161 
i
 = 1; i < 
ocks
; i++) {

162 i(
obj
[
i
].
size
 !(
DB_LOCK_ILOCK
))

164 
lock
 = (
DB_LOCK_ILOCK
 *)
obj
[
i
].
da
;

165 i(
obj
[
j
].
un
 < 
MAX_PGNOS
 &&

166 
lock
->
ty
 =
ock
->type &&

167 
	`memcmp
(
lock
->
feid
,

168 
ock
->
feid
, 
DB_FILE_ID_LEN
) == 0) {

169 
obj
[
j
].
un
++;

170 
gno
++;

172 
nfid
++;

173 
ock
 = 
lock
;

174 
j
 = 
i
;

175 
obj
[
j
].
un
 = 0;

179 
n_ock
: 
size
 = 
nfid
 * (
DB_LOCK_ILOCK
);

180 
size
 +
gno
 * (
db_pgno_t
);

182 
nfid
 +
ocks
 - 
i
;

183 ; 
i
 < 
ocks
; i++) {

184 
size
 +
obj
[
i
].size;

185 
obj
[
i
].
un
 = 0;

188 
size
 = 
	`RET_SIZE
(size, 
nfid
);

189 i((
t
 = 
	`__os_mloc
(
dbv
, 
size
, &
da
)) != 0)

190  (
t
);

192 
dp
 = 
da
;

193 
	`PUT_COUNT
(
dp
, 
nfid
);

195 
i
 = 0; i < 
ocks
; i = 
j
) {

196 
	`PUT_PCOUNT
(
dp
, 
obj
[
i
].
un
);

197 
	`PUT_SIZE
(
dp
, 
obj
[
i
].
size
);

198 
	`COPY_OBJ
(
dp
, &
obj
[
i
]);

199 
lock
 = (
DB_LOCK_ILOCK
 *)
obj
[
i
].
da
;

200 
j
 = 
i
 + 1; j <+ 
obj
[i].
un
; j++) {

201 
lock
 = (
DB_LOCK_ILOCK
 *)
obj
[
j
].
da
;

202 
	`PUT_PGNO
(
dp
, 
lock
->
pgno
);

207 
	`__os_
(
dbv
, 
li_dbt
->
da
);

209 
li_dbt
->
da
 = data;

210 
li_dbt
->
size
 = size;

213 
	}
}

220 
	$__lock_g_li
(
dbv
, 
lock
, 
ags
, 
lock_mode
, 
li
)

221 
DB_ENV
 *
dbv
;

222 
DB_LOCKER
 *
lock
;

223 
u_t32_t
 
ags
;

224 
db_lockmode_t
 
lock_mode
;

225 
DBT
 *
li
;

227 
DBT
 
obj_dbt
;

228 
DB_LOCK
 
t_lock
;

229 
DB_LOCK_ILOCK
 *
lock
;

230 
DB_LOCKTAB
 *

;

231 
db_pgno_t
 
ve_pgno
;

232 
u_t16_t
 
gno
, 
size
;

233 
u_t32_t
 
i
, 
ocks
;

234 
t
;

235 *
da
, *
dp
;

237 i(
li
->
size
 == 0)

239 
t
 = 0;

240 
da
 = 
NULL
;

242 

 = 
dbv
->
lk_hd
;

243 
dp
 = 
li
->
da
;

250 i((
u_t
)
dp
 !
	`DB_ALIGN
((u_t)dp, (
u_t32_t
))) {

251 i((
t
 = 
	`__os_mloc
(
dbv
, 
li
->
size
, &
da
)) != 0)

252  (
t
);

253 
	`memy
(
da
, 
li
->da,i->
size
);

254 
dp
 = 
da
;

257 
	`GET_COUNT
(
dp
, 
ocks
);

258 
	`LOCK_SYSTEM_LOCK
(
dbv
);

260 
i
 = 0; i < 
ocks
; i++) {

261 
	`GET_PCOUNT
(
dp
, 
gno
);

262 
	`GET_SIZE
(
dp
, 
size
);

263 
lock
 = (
DB_LOCK_ILOCK
 *
dp
;

264 
ve_pgno
 = 
lock
->
pgno
;

265 
obj_dbt
.
da
 = 
dp
;

266 
obj_dbt
.
size
 = size;

267 
dp
 = ((
u_t8_t
 *)dp+ 
	`DB_ALIGN
(
size
, (
u_t32_t
));

269 i((
t
 = 
	`__lock_g_
(

, 
lock
,

270 
ags
, &
obj_dbt
, 
lock_mode
, 0, &
t_lock
)) != 0) {

271 
lock
->
pgno
 = 
ve_pgno
;

272 
r
;

274 i(
gno
 != 0)

275 
	`GET_PGNO
(
dp
, 
lock
->
pgno
);

276 } 
gno
-- != 0);

277 
lock
->
pgno
 = 
ve_pgno
;

280 
r
: 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

281 i(
da
 !
NULL
)

282 
	`__os_
(
dbv
, 
da
);

283  (
t
);

284 
	}
}

286 
	#UINT32_CMP
(
A
, 
B
((A=(B? 0 : ((A> (B? 1 : -1))

	)

288 
	$__lock_st_cmp
(
a
, 
b
)

289 cڡ *
a
, *
b
;

291 cڡ 
DBT
 *
d1
, *
d2
;

292 
DB_LOCK_ILOCK
 *
l1
, *
l2
;

294 
d1
 = 
a
;

295 
d2
 = 
b
;

298 i(
d1
->
size
 !(
DB_LOCK_ILOCK
)) {

299 i(
d2
->
size
 !(
DB_LOCK_ILOCK
))

300  (
	`UINT32_CMP
(
d1
->
size
, 
d2
->size));

303 } i(
d2
->
size
 !(
DB_LOCK_ILOCK
))

306 
l1
 = 
d1
->
da
;

307 
l2
 = 
d2
->
da
;

308 i(
l1
->
ty
 !
l2
->type)

309  (
	`UINT32_CMP
(
l1
->
ty
, 
l2
->type));

310  (
	`memcmp
(
l1
->
feid
, 
l2
->feid, 
DB_FILE_ID_LEN
));

311 
	}
}

317 
	$__lock_li_t
(
dbv
, 
li
)

318 
DB_ENV
 *
dbv
;

319 
DBT
 *
li
;

321 
DB_LOCK_ILOCK
 *
lock
;

322 
db_pgno_t
 
pgno
;

323 
u_t16_t
 
gno
, 
size
;

324 
u_t32_t
 
i
, 
ocks
;

325 
u_t8_t
 *
fidp
;

326 *
m
;

327 *
dp
;

329 i(
li
->
size
 == 0)

331 
dp
 = 
li
->
da
;

333 
	`GET_COUNT
(
dp
, 
ocks
);

335 
i
 = 0; i < 
ocks
; i++) {

336 
	`GET_PCOUNT
(
dp
, 
gno
);

337 
	`GET_SIZE
(
dp
, 
size
);

338 
lock
 = (
DB_LOCK_ILOCK
 *
dp
;

339 
fidp
 = 
lock
->
feid
;

340 i(
	`__dbg_g_me
(
dbv
, 
fidp
, &
m
) != 0)

341 
m
 = 
NULL
;

342 
	`tf
("\t");

343 i(
m
 =
NULL
)

344 
	`tf
("(%lx %lx %lx %lx %lx)",

345 (
u_lg
)
fidp
[0], (u_long)fidp[1], (u_long)fidp[2],

346 (
u_lg
)
fidp
[3], (u_long)fidp[4]);

348 
	`tf
("%-25s", 
m
);

349 
dp
 = ((
u_t8_t
 *)dp+ 
	`DB_ALIGN
(
size
, (
u_t32_t
));

350 
pgno
 = 
lock
->pgno;

352 
	`tf
(" %d", 
pgno
);

353 i(
gno
 != 0)

354 
	`GET_PGNO
(
dp
, 
pgno
);

355 } 
gno
-- != 0);

356 
	`tf
("\n");

358 
	}
}

	@../lock/lock_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

21 
	$__lock_v_
(
dbv
)

22 
DB_ENV
 *
dbv
;

30 
dbv
->
lk_max
 = 
DB_LOCK_DEFAULT_N
;

31 
dbv
->
lk_max_locks
 = 
DB_LOCK_DEFAULT_N
;

32 
dbv
->
lk_max_objes
 = 
DB_LOCK_DEFAULT_N
;

35 
	}
}

44 
	$__lock_v_deroy
(
dbv
)

45 
DB_ENV
 *
dbv
;

47 i(
dbv
->
lk_cis
 !
NULL
) {

48 
	`__os_
(
dbv
, dbv->
lk_cis
);

49 
dbv
->
lk_cis
 = 
NULL
;

51 
	}
}

61 
	$__lock_g_lk_cis
(
dbv
, 
lk_ci
, 
lk_mode
)

62 
DB_ENV
 *
dbv
;

63 cڡ 
u_t8_t
 **
lk_ci
;

64 *
lk_mode
;

66 
DB_LOCKTAB
 *

;

68 
	`ENV_NOT_CONFIGURED
(
dbv
,

69 
dbv
->
lk_hd
, "DB_ENV->g_lk_cis", 
DB_INIT_LOCK
);

71 

 = 
dbv
->
lk_hd
;

73 i(
	`LOCKING_ON
(
dbv
)) {

75 i(
lk_ci
 !
NULL
)

76 *
lk_ci
 = 

->
cis
;

77 i(
lk_mode
 !
NULL
)

78 *
lk_mode
 = ((
DB_LOCKREGION
 *)

79 (

->
gfo
.
imy
))->

.
_nmodes
;

81 i(
lk_ci
 !
NULL
)

82 *
lk_ci
 = 
dbv
->
lk_cis
;

83 i(
lk_mode
 !
NULL
)

84 *
lk_mode
 = 
dbv
->
lk_modes
;

87 
	}
}

96 
	$__lock_t_lk_cis
(
dbv
, 
lk_cis
, 
lk_modes
)

97 
DB_ENV
 *
dbv
;

98 
u_t8_t
 *
lk_cis
;

99 
lk_modes
;

101 
t
;

103 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_lk_conflicts");

105 i(
dbv
->
lk_cis
 !
NULL
) {

106 
	`__os_
(
dbv
, dbv->
lk_cis
);

107 
dbv
->
lk_cis
 = 
NULL
;

109 i((
t
 = 
	`__os_mloc
(
dbv
,

110 (
size_t
)(
lk_modes
 *k_modes), &
dbv
->
lk_cis
)) != 0)

111  (
t
);

112 
	`memy
(

113 
dbv
->
lk_cis
,k_cis, (
size_t
)(
lk_modes
 *k_modes));

114 
dbv
->
lk_modes
 =k_modes;

117 
	}
}

123 
	$__lock_g_lk_de
(
dbv
, 
lk_dep
)

124 
DB_ENV
 *
dbv
;

125 
u_t32_t
 *
lk_dep
;

127 
DB_LOCKTAB
 *

;

129 
	`ENV_NOT_CONFIGURED
(
dbv
,

130 
dbv
->
lk_hd
, "DB_ENV->g_lk_de", 
DB_INIT_LOCK
);

132 i(
	`LOCKING_ON
(
dbv
)) {

133 

 = 
dbv
->
lk_hd
;

134 
	`LOCK_REGION_LOCK
(
dbv
);

135 *
lk_dep
 = ((
DB_LOCKREGION
 *)

->
gfo
.
imy
)->
de
;

136 
	`LOCK_REGION_UNLOCK
(
dbv
);

138 *
lk_dep
 = 
dbv
->
lk_de
;

140 
	}
}

149 
	$__lock_t_lk_de
(
dbv
, 
lk_de
)

150 
DB_ENV
 *
dbv
;

151 
u_t32_t
 
lk_de
;

153 
DB_LOCKTAB
 *

;

154 
DB_LOCKREGION
 *
gi
;

155 
t
;

157 
	`ENV_NOT_CONFIGURED
(
dbv
,

158 
dbv
->
lk_hd
, "DB_ENV->t_lk_de", 
DB_INIT_LOCK
);

160 
lk_de
) {

161 
DB_LOCK_DEFAULT
:

162 
DB_LOCK_EXPIRE
:

163 
DB_LOCK_MAXLOCKS
:

164 
DB_LOCK_MAXWRITE
:

165 
DB_LOCK_MINLOCKS
:

166 
DB_LOCK_MINWRITE
:

167 
DB_LOCK_OLDEST
:

168 
DB_LOCK_RANDOM
:

169 
DB_LOCK_YOUNGEST
:

172 
	`__db_rx
(
dbv
,

174  (
EINVAL
);

177 
t
 = 0;

178 i(
	`LOCKING_ON
(
dbv
)) {

179 

 = 
dbv
->
lk_hd
;

180 
gi
 = 

->
gfo
.
imy
;

181 
	`LOCK_REGION_LOCK
(
dbv
);

191 i(
gi
->
de
 !
DB_LOCK_NORUN
 &&

192 
lk_de
 !
DB_LOCK_DEFAULT
 &&

193 
gi
->
de
 !
lk_de
) {

194 
	`__db_rx
(
dbv
,

196 
t
 = 
EINVAL
;

198 i(
gi
->
de
 =
DB_LOCK_NORUN
)

199 
gi
->
de
 = 
lk_de
;

200 
	`LOCK_REGION_UNLOCK
(
dbv
);

202 
dbv
->
lk_de
 =k_detect;

204  (
t
);

205 
	}
}

211 
	$__lock_g_lk_max_locks
(
dbv
, 
lk_maxp
)

212 
DB_ENV
 *
dbv
;

213 
u_t32_t
 *
lk_maxp
;

215 
	`ENV_NOT_CONFIGURED
(
dbv
,

216 
dbv
->
lk_hd
, "DB_ENV->g_lk_maxlocks", 
DB_INIT_LOCK
);

218 i(
	`LOCKING_ON
(
dbv
)) {

220 *
lk_maxp
 = ((
DB_LOCKREGION
 *)

221 
dbv
->
lk_hd
->
gfo
.
imy
)->

.
_maxlocks
;

223 *
lk_maxp
 = 
dbv
->
lk_max
;

225 
	}
}

234 
	$__lock_t_lk_max_locks
(
dbv
, 
lk_max
)

235 
DB_ENV
 *
dbv
;

236 
u_t32_t
 
lk_max
;

238 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_lk_max_locks");

240 
dbv
->
lk_max
 =k_max;

242 
	}
}

248 
	$__lock_g_lk_max_locks
(
dbv
, 
lk_maxp
)

249 
DB_ENV
 *
dbv
;

250 
u_t32_t
 *
lk_maxp
;

252 
	`ENV_NOT_CONFIGURED
(
dbv
,

253 
dbv
->
lk_hd
, "DB_ENV->g_lk_max_locks", 
DB_INIT_LOCK
);

255 i(
	`LOCKING_ON
(
dbv
)) {

257 *
lk_maxp
 = ((
DB_LOCKREGION
 *)

258 
dbv
->
lk_hd
->
gfo
.
imy
)->

.
_maxlocks
;

260 *
lk_maxp
 = 
dbv
->
lk_max_locks
;

262 
	}
}

271 
	$__lock_t_lk_max_locks
(
dbv
, 
lk_max
)

272 
DB_ENV
 *
dbv
;

273 
u_t32_t
 
lk_max
;

275 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_lk_max_lockers");

277 
dbv
->
lk_max_locks
 = 
lk_max
;

279 
	}
}

285 
	$__lock_g_lk_max_objes
(
dbv
, 
lk_maxp
)

286 
DB_ENV
 *
dbv
;

287 
u_t32_t
 *
lk_maxp
;

289 
	`ENV_NOT_CONFIGURED
(
dbv
,

290 
dbv
->
lk_hd
, "DB_ENV->g_lk_max_objes", 
DB_INIT_LOCK
);

292 i(
	`LOCKING_ON
(
dbv
)) {

294 *
lk_maxp
 = ((
DB_LOCKREGION
 *)

295 
dbv
->
lk_hd
->
gfo
.
imy
)->

.
_maxobjes
;

297 *
lk_maxp
 = 
dbv
->
lk_max_objes
;

299 
	}
}

308 
	$__lock_t_lk_max_objes
(
dbv
, 
lk_max
)

309 
DB_ENV
 *
dbv
;

310 
u_t32_t
 
lk_max
;

312 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_lk_max_objects");

314 
dbv
->
lk_max_objes
 = 
lk_max
;

316 
	}
}

323 
	$__lock_g_v_timeout
(
dbv
, 
timeou
, 
ag
)

324 
DB_ENV
 *
dbv
;

325 
db_timeout_t
 *
timeou
;

326 
u_t32_t
 
ag
;

328 
DB_LOCKTAB
 *

;

329 
DB_LOCKREGION
 *
gi
;

330 
t
;

332 
	`ENV_NOT_CONFIGURED
(
dbv
,

333 
dbv
->
lk_hd
, "DB_ENV->g_v_timeout", 
DB_INIT_LOCK
);

335 
t
 = 0;

336 i(
	`LOCKING_ON
(
dbv
)) {

337 

 = 
dbv
->
lk_hd
;

338 
gi
 = 

->
gfo
.
imy
;

339 
	`LOCK_REGION_LOCK
(
dbv
);

340 
ag
) {

341 
DB_SET_LOCK_TIMEOUT
:

342 *
timeou
 = 
gi
->
lk_timeout
;

344 
DB_SET_TXN_TIMEOUT
:

345 *
timeou
 = 
gi
->
tx_timeout
;

348 
t
 = 1;

351 
	`LOCK_REGION_UNLOCK
(
dbv
);

353 
ag
) {

354 
DB_SET_LOCK_TIMEOUT
:

355 *
timeou
 = 
dbv
->
lk_timeout
;

357 
DB_SET_TXN_TIMEOUT
:

358 *
timeou
 = 
dbv
->
tx_timeout
;

361 
t
 = 1;

365 i(
t
)

366 
t
 = 
	`__db_
(
dbv
, "DB_ENV->get_timeout", 0);

368  (
t
);

369 
	}
}

378 
	$__lock_t_v_timeout
(
dbv
, 
timeout
, 
ags
)

379 
DB_ENV
 *
dbv
;

380 
db_timeout_t
 
timeout
;

381 
u_t32_t
 
ags
;

383 
DB_LOCKTAB
 *

;

384 
DB_LOCKREGION
 *
gi
;

385 
t
;

387 
	`ENV_NOT_CONFIGURED
(
dbv
,

388 
dbv
->
lk_hd
, "DB_ENV->t_v_timeout", 
DB_INIT_LOCK
);

390 
t
 = 0;

391 i(
	`LOCKING_ON
(
dbv
)) {

392 

 = 
dbv
->
lk_hd
;

393 
gi
 = 

->
gfo
.
imy
;

394 
	`LOCK_REGION_LOCK
(
dbv
);

395 
ags
) {

396 
DB_SET_LOCK_TIMEOUT
:

397 
gi
->
lk_timeout
 = 
timeout
;

399 
DB_SET_TXN_TIMEOUT
:

400 
gi
->
tx_timeout
 = 
timeout
;

403 
t
 = 1;

406 
	`LOCK_REGION_UNLOCK
(
dbv
);

408 
ags
) {

409 
DB_SET_LOCK_TIMEOUT
:

410 
dbv
->
lk_timeout
 = 
timeout
;

412 
DB_SET_TXN_TIMEOUT
:

413 
dbv
->
tx_timeout
 = 
timeout
;

416 
t
 = 1;

420 i(
t
)

421 
t
 = 
	`__db_
(
dbv
, "DB_ENV->set_timeout", 0);

423  (
t
);

424 
	}
}

	@../lock/lock_region.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

14 
__lock_gi_
 
__P
((
DB_ENV
 *, 
DB_LOCKTAB
 *));

15 
size_t


16 
__lock_gi_size
 
__P
((
DB_ENV
 *));

22 
	#DB_LOCK_RIW_N
 9

	)

23 cڡ 
u_t8_t
 
	gdb_riw_cis
[] = {

41 
	#DB_LOCK_CDB_N
 5

	)

42 cڡ 
u_t8_t
 
	gdb_cdb_cis
[] = {

58 
	$__lock_ݒ
(
dbv
, 
_ok
)

59 
DB_ENV
 *
dbv
;

60 
_ok
;

62 
DB_LOCKREGION
 *
gi
;

63 
DB_LOCKTAB
 *

;

64 
size_t
 
size
;

65 
gi_locked
, 
t
;

67 
gi_locked
 = 0;

70 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_LOCKTAB
), &

)) != 0)

71  (
t
);

72 

->
dbv
 = dbenv;

75 

->
gfo
.
dbv
 = dbenv;

76 

->
gfo
.
ty
 = 
REGION_TYPE_LOCK
;

77 

->
gfo
.
id
 = 
INVALID_REGION_ID
;

78 

->
gfo
.
ags
 = 
REGION_JOIN_OK
;

79 i(
_ok
)

80 
	`F_SET
(&

->
gfo
, 
REGION_CREATE_OK
);

81 
size
 = 
	`__lock_gi_size
(
dbv
);

82 i((
t
 = 
	`__v_gi_ch
(
dbv
, &

->
gfo
, 
size
)) != 0)

83 
r
;

86 i(
	`F_ISSET
(&

->
gfo
, 
REGION_CREATE
))

87 i((
t
 = 
	`__lock_gi_
(
dbv
, 

)) != 0)

88 
r
;

91 
gi
 = 

->
gfo
.
imy
 =

92 
	`R_ADDR
(&

->
gfo
,t->gfo.

->
imy
);

95 

->
cis
 = 
	`R_ADDR
(&->
gfo
, 
gi
->
cf_off
);

96 

->
obj_b
 = 
	`R_ADDR
(&->
gfo
, 
gi
->
obj_off
);

97 

->
obj_
 = 
	`R_ADDR
(&->
gfo
, 
gi
->
_off
);

98 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


99 

->
obj_mtx
 = 
	`R_ADDR
(&->
gfo
, 
gi
->
mtx_off
);

101 

->
lock_b
 = 
	`R_ADDR
(&->
gfo
, 
gi
->
lock_off
);

103 
dbv
->
lk_hd
 = 

;

105 
	`LOCK_SYSTEM_LOCK
(
dbv
);

106 
gi_locked
 = 1;

108 i(
dbv
->
lk_de
 !
DB_LOCK_NORUN
) {

118 i(
gi
->
de
 !
DB_LOCK_NORUN
 &&

119 
dbv
->
lk_de
 !
DB_LOCK_DEFAULT
 &&

120 
gi
->
de
 !
dbv
->
lk_de
) {

121 
	`__db_rx
(
dbv
,

123 
t
 = 
EINVAL
;

124 
r
;

126 i(
gi
->
de
 =
DB_LOCK_NORUN
)

127 
gi
->
de
 = 
dbv
->
lk_de
;

134 i(
dbv
->
lk_timeout
 != 0)

135 
gi
->
lk_timeout
 = 
dbv
->lk_timeout;

136 i(
dbv
->
tx_timeout
 != 0)

137 
gi
->
tx_timeout
 = 
dbv
->tx_timeout;

139 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

140 
gi_locked
 = 0;

144 
r
: 
dbv
->
lk_hd
 = 
NULL
;

145 i(

->
gfo
.
addr
 !
NULL
) {

146 i(
gi_locked
) {

147 
	`LOCK_SYSTEM_UNLOCK
(
dbv
);

149 ()
	`__v_gi_dach
(
dbv
, &

->
gfo
, 0);

152 
	`__os_
(
dbv
, 

);

153  (
t
);

154 
	}
}

161 
	$__lock_gi_
(
dbv
, 

)

162 
DB_ENV
 *
dbv
;

163 
DB_LOCKTAB
 *

;

165 cڡ 
u_t8_t
 *
lk_cis
;

166 
__db_lock
 *

;

167 
DB_LOCKER
 *
lidp
;

168 
DB_LOCKOBJ
 *

;

169 
DB_LOCKREGION
 *
gi
;

170 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


171 
db_mux_t
 *
mtxp
;

173 
u_t32_t
 
i
;

174 
u_t8_t
 *
addr
;

175 
lk_modes
, 
t
;

177 i((
t
 = 
	`__v_loc
(&

->
gfo
,

178 (
DB_LOCKREGION
), &

->
gfo
.
imy
)) != 0)

179 
mem_r
;

180 

->
gfo
.

->
imy
 = 
	`R_OFFSET
(&lt->reginfo,t->reginfo.primary);

181 
gi
 = 

->
gfo
.
imy
;

182 
	`memt
(
gi
, 0, (*region));

184 i((
t
 = 
	`__mux_loc
(

185 
dbv
, 
MTX_LOCK_REGION
, 0, &
gi
->
mtx_gi
)) != 0)

186  (
t
);

189 i(
dbv
->
lk_modes
 == 0)

190 i(
	`CDB_LOCKING
(
dbv
)) {

191 
lk_modes
 = 
DB_LOCK_CDB_N
;

192 
lk_cis
 = 
db_cdb_cis
;

194 
lk_modes
 = 
DB_LOCK_RIW_N
;

195 
lk_cis
 = 
db_riw_cis
;

198 
lk_modes
 = 
dbv
->lk_modes;

199 
lk_cis
 = 
dbv
->lk_conflicts;

202 
gi
->
ed_dd
 = 0;

203 
	`timeecr
(&
gi
->
xt_timeout
);

204 
gi
->
de
 = 
DB_LOCK_NORUN
;

205 
gi
->
lk_timeout
 = 
dbv
->lk_timeout;

206 
gi
->
tx_timeout
 = 
dbv
->tx_timeout;

207 
gi
->
lock_t_size
 = 
	`__db_bsize
(
dbv
->
lk_max_locks
);

208 
gi
->
obje_t_size
 = 
	`__db_bsize
(
dbv
->
lk_max_objes
);

209 
	`memt
(&
gi
->

, 0, (region->stat));

210 
gi
->

.
_id
 = 0;

211 
gi
->

.
_cur_maxid
 = 
DB_LOCK_MAXID
;

212 
gi
->

.
_maxlocks
 = 
dbv
->
lk_max
;

213 
gi
->

.
_maxlocks
 = 
dbv
->
lk_max_locks
;

214 
gi
->

.
_maxobjes
 = 
dbv
->
lk_max_objes
;

215 
gi
->

.
_nmodes
 = 
lk_modes
;

218 i((
t
 = 
	`__v_loc
(

219 &

->
gfo
, (
size_t
)(
lk_modes
 *k_modes), &
addr
)) != 0)

220 
mem_r
;

221 
	`memy
(
addr
, 
lk_cis
, (
size_t
)(
lk_modes
 *k_modes));

222 
gi
->
cf_off
 = 
	`R_OFFSET
(&

->
gfo
, 
addr
);

225 i((
t
 = 
	`__v_loc
(&

->
gfo
,

226 
gi
->
obje_t_size
 * (
DB_HASHTAB
), &
addr
)) != 0)

227 
mem_r
;

228 
	`__db_hash
(
addr
, 
gi
->
obje_t_size
);

229 
gi
->
obj_off
 = 
	`R_OFFSET
(&

->
gfo
, 
addr
);

231 i((
t
 = 
	`__v_loc
(&

->
gfo
,

232 
gi
->
obje_t_size
 * (
DB_LOCK_HSTAT
), &
addr
)) != 0)

233 
mem_r
;

234 
	`memt
(
addr
, 0, 
gi
->
obje_t_size
 * (
DB_LOCK_HSTAT
));

235 
gi
->
_off
 = 
	`R_OFFSET
(&

->
gfo
, 
addr
);

236 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


237 i((
t
 = 
	`__v_loc
(&

->
gfo
,

238 
gi
->
obje_t_size
 * (
db_mux_t
), &
mtxp
)) != 0)

239 
mem_r
;

240 
gi
->
mtx_off
 = 
	`R_OFFSET
(&

->
gfo
, 
mtxp
);

241 
i
 = 0; i < 
gi
->
obje_t_size
; i++) {

242 i((
t
 = 
	`__mux_loc
(

243 
dbv
, 
MTX_LOCK_REGION
, 0, &
mtxp
[
i
])) != 0)

244  (
t
);

246 i((
t
 = 
	`__mux_loc
(

247 
dbv
, 
MTX_LOCK_REGION
, 0, &
gi
->
mtx_objs
)) != 0)

248  (
t
);

250 i((
t
 = 
	`__mux_loc
(

251 
dbv
, 
MTX_LOCK_REGION
, 0, &
gi
->
mtx_locks
)) != 0)

252  (
t
);

254 i((
t
 = 
	`__mux_loc
(

255 
dbv
, 
MTX_LOCK_REGION
, 0, &
gi
->
mtx_locks
)) != 0)

256  (
t
);

261 i((
t
 = 
	`__v_loc
(&

->
gfo
,

262 
gi
->
lock_t_size
 * (
DB_HASHTAB
), &
addr
)) != 0)

263 
mem_r
;

264 
	`__db_hash
(
addr
, 
gi
->
lock_t_size
);

265 
gi
->
lock_off
 = 
	`R_OFFSET
(&

->
gfo
, 
addr
);

268 
	`SH_TAILQ_INIT
(&
gi
->
_locks
);

269 
i
 = 0; i < 
gi
->

.
_maxlocks
; ++i) {

270 i((
t
 = 
	`__v_loc
(&

->
gfo
,

271 (
__db_lock
), &

)) != 0)

272 
mem_r
;

273 

->
mtx_lock
 = 
MUTEX_INVALID
;

274 

->
g
 = 0;

275 

->
us
 = 
DB_LSTAT_FREE
;

276 
	`SH_TAILQ_INSERT_HEAD
(&
gi
->
_locks
, 

, 
lks
, 
__db_lock
);

280 
	`SH_TAILQ_INIT
(&
gi
->
dd_objs
);

281 
	`SH_TAILQ_INIT
(&
gi
->
_objs
);

282 
i
 = 0; i < 
gi
->

.
_maxobjes
; ++i) {

283 i((
t
 = 
	`__v_loc
(&

->
gfo
,

284 (
DB_LOCKOBJ
), &

)) != 0)

285 
mem_r
;

286 
	`SH_TAILQ_INSERT_HEAD
(

287 &
gi
->
_objs
, 

, 
lks
, 
__db_lockobj
);

288 

->
gi
 = 0;

292 
	`SH_TAILQ_INIT
(&
gi
->
locks
);

293 
	`SH_TAILQ_INIT
(&
gi
->
_locks
);

294 
i
 = 0; i < 
gi
->

.
_maxlocks
; ++i) {

295 i((
t
 =

296 
	`__v_loc
(&

->
gfo
, (
DB_LOCKER
), &
lidp
)) != 0) {

297 
mem_r
: 
	`__db_rx
(
dbv
,

299  (
t
);

301 
	`SH_TAILQ_INSERT_HEAD
(

302 &
gi
->
_locks
, 
lidp
, 
lks
, 
__db_lock
);

306 
	}
}

315 
	$__lock_v_esh
(
dbv
)

316 
DB_ENV
 *
dbv
;

318 
__db_lock
 *

;

319 
DB_LOCKER
 *
lock
;

320 
DB_LOCKOBJ
 *
lockobj
;

321 
DB_LOCKREGION
 *

;

322 
DB_LOCKTAB
 *

;

323 
REGINFO
 *
gfo
;

324 
t
;

326 

 = 
dbv
->
lk_hd
;

327 
gfo
 = &

->reginfo;

328 

 = 
gfo
->
imy
;

335 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

337 
	`__v_loc_
(
gfo
, 
	`R_ADDR
egfo, 

->
cf_off
));

340 
	`__v_loc_
(
gfo
, 
	`R_ADDR
egfo, 

->
obj_off
));

343 
	`__v_loc_
(
gfo
, 
	`R_ADDR
egfo, 

->
lock_off
));

346 (

 =

347 
	`SH_TAILQ_FIRST
(&

->
_locks
, 
__db_lock
)!
NULL
) {

348 
	`SH_TAILQ_REMOVE
(&

->
_locks
, 

, 
lks
, 
__db_lock
);

349 
	`__v_loc_
(
gfo
, 

);

353 (
lockobj
 =

354 
	`SH_TAILQ_FIRST
(&

->
_objs
, 
__db_lockobj
)!
NULL
) {

355 
	`SH_TAILQ_REMOVE
(

356 &

->
_objs
, 
lockobj
, 
lks
, 
__db_lockobj
);

357 
	`__v_loc_
(
gfo
, 
lockobj
);

361 (
lock
 =

362 
	`SH_TAILQ_FIRST
(&

->
_locks
, 
__db_lock
)!
NULL
) {

363 
	`SH_TAILQ_REMOVE
(

364 &

->
_locks
, 
lock
, 
lks
, 
__db_lock
);

365 
	`__v_loc_
(
gfo
, 
lock
);

370 
t
 = 
	`__v_gi_dach
(
dbv
, 
gfo
, 0);

373 
	`__os_
(
dbv
, 

);

374 
dbv
->
lk_hd
 = 
NULL
;

376  (
t
);

377 
	}
}

385 
u_t32_t


386 
	$__lock_gi_mux_cou
(
dbv
)

387 
DB_ENV
 *
dbv
;

389 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


390  (
dbv
->
lk_max
 + 
	`__db_bsize
(dbv->
lk_max_objes
) + 3);

392  (
dbv
->
lk_max
);

394 
	}
}

400 
size_t


401 
	$__lock_gi_size
(
dbv
)

402 
DB_ENV
 *
dbv
;

404 
size_t
 
tv
;

410 
tv
 = 0;

411 
tv
 +
	`__v_loc_size
((
DB_LOCKREGION
));

412 
tv
 +
	`__v_loc_size
((
size_t
)(
dbv
->
lk_modes
 * dbenv->lk_modes));

413 
tv
 +
	`__v_loc_size
(

414 
	`__db_bsize
(
dbv
->
lk_max_objes
* ((
DB_HASHTAB
)));

415 
tv
 +
	`__v_loc_size
(

416 
	`__db_bsize
(
dbv
->
lk_max_objes
* ((
DB_LOCK_HSTAT
)));

417 
tv
 +
	`__v_loc_size
(

418 
	`__db_bsize
(
dbv
->
lk_max_locks
* ((
DB_HASHTAB
)));

419 
tv
 +
	`__v_loc_size
((
__db_lock
)* 
dbv
->
lk_max
;

420 
tv
 +
	`__v_loc_size
((
DB_LOCKOBJ
)* 
dbv
->
lk_max_objes
;

421 
tv
 +
	`__v_loc_size
((
DB_LOCKER
)* 
dbv
->
lk_max_locks
;

427 
tv
 +
	`__v_loc_size
(
dbv
->
lk_max
 * 16);

430 
tv
 +=etval / 4;

432  (
tv
);

433 
	}
}

	@../lock/lock_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/lock.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/db_am.h
"

17 #ifde
HAVE_STATISTICS


18 
__lock_dump_lock


19 
__P
((
DB_ENV
 *, 
DB_MSGBUF
 *, 
DB_LOCKTAB
 *, 
DB_LOCKER
 *));

20 
__lock_dump_obje
 
__P
((
DB_LOCKTAB
 *, 
DB_MSGBUF
 *, 
DB_LOCKOBJ
 *));

21 
__lock_t_l
 
__P
((
DB_ENV
 *, 
u_t32_t
));

22 
__lock_t_s
 
__P
((
DB_ENV
 *, 
u_t32_t
));

23 
__lock_t_hd
 
__P
((
DB_ENV
 *));

24 
__lock_
 
__P
((
DB_ENV
 *, 
DB_LOCK_STAT
 **, 
u_t32_t
));

33 
	$__lock__
(
dbv
, 
p
, 
ags
)

34 
DB_ENV
 *
dbv
;

35 
DB_LOCK_STAT
 **
p
;

36 
u_t32_t
 
ags
;

38 
DB_THREAD_INFO
 *

;

39 
t
;

41 
	`PANIC_CHECK
(
dbv
);

42 
	`ENV_REQUIRES_CONFIG
(
dbv
,

43 
dbv
->
lk_hd
, "DB_ENV->lock_", 
DB_INIT_LOCK
);

45 i((
t
 = 
	`__db_fchk
(
dbv
,

46 "DB_ENV->lock_", 
ags
, 
DB_STAT_CLEAR
)) != 0)

47  (
t
);

49 
	`ENV_ENTER
(
dbv
, 

);

50 
	`REPLICATION_WRAP
(
dbv
, (
	`__lock_
(dbv, 
p
, 
ags
)), 
t
);

51 
	`ENV_LEAVE
(
dbv
, 

);

52  (
t
);

53 
	}
}

60 
	$__lock_
(
dbv
, 
p
, 
ags
)

61 
DB_ENV
 *
dbv
;

62 
DB_LOCK_STAT
 **
p
;

63 
u_t32_t
 
ags
;

65 
DB_LOCKREGION
 *
gi
;

66 
DB_LOCKTAB
 *

;

67 
DB_LOCK_STAT
 *
s
, 
tmp
;

68 
t
;

69 
u_t32_t
 
i
;

71 *
p
 = 
NULL
;

72 

 = 
dbv
->
lk_hd
;

74 i((
t
 = 
	`__os_umloc
(
dbv
, (*
s
), &stats)) != 0)

75  (
t
);

78 
	`LOCK_REGION_LOCK
(
dbv
);

80 
gi
 = 

->
gfo
.
imy
;

81 
	`memy
(
s
, &
gi
->

, (*stats));

82 
s
->
_locktimeout
 = 
gi
->
lk_timeout
;

83 
s
->
_tximeout
 = 
gi
->
tx_timeout
;

85 
i
 = 0; i < 
gi
->
obje_t_size
; i++) {

86 
s
->
_eques
 +

->
obj_
[
i
].st_nrequests;

87 
s
->
_Ės
 +

->
obj_
[
i
].st_nreleases;

88 
s
->
_nupgde
 +

->
obj_
[
i
].st_nupgrade;

89 
s
->
_ndowngde
 +

->
obj_
[
i
].st_ndowngrade;

90 
s
->
_lock_wa
 +

->
obj_
[
i
].st_lock_wait;

91 
s
->
_lock_nowa
 +

->
obj_
[
i
].st_lock_nowait;

92 
s
->
_ocktimeouts
 +

->
obj_
[
i
].st_nlocktimeouts;

93 
s
->
_ximeouts
 +

->
obj_
[
i
].st_ntxntimeouts;

94 i(
s
->
_hash_n
 < 

->
obj_
[
i
].st_hash_len)

95 
s
->
_hash_n
 = 

->
obj_
[
i
].st_hash_len;

96 i(
	`LF_ISSET
(
DB_STAT_CLEAR
)) {

97 
	`memt
(&

->
obj_
[
i
], 0, (lt->obj_stat[i]));

98 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


99 i(!
	`LF_ISSET
(
DB_STAT_SUBSYSTEM
))

100 
	`__mux_r
(
dbv
, 

->
obj_mtx
[
i
]);

105 
	`__mux_t_wa_fo
(
dbv
, 
gi
->
mtx_gi
,

106 &
s
->
_gi_wa
, &s->
_gi_nowa
);

107 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


108 
	`__mux_t_wa_fo
(
dbv
, 
gi
->
mtx_objs
,

109 &
s
->
_objs_wa
, &s->
_objs_nowa
);

110 
	`__mux_t_wa_fo
(
dbv
, 
gi
->
mtx_locks
,

111 &
s
->
_locks_wa
, &s->
_locks_nowa
);

112 
	`__mux_t_wa_fo
(
dbv
, 
gi
->
mtx_locks
,

113 &
s
->
_locks_wa
, &s->
_locks_nowa
);

115 
s
->
_gsize
 = 

->
gfo
.

->
size
;

116 i(
	`LF_ISSET
(
DB_STAT_CLEAR
)) {

117 
tmp
 = 
gi
->

;

118 
	`memt
(&
gi
->

, 0, (region->stat));

119 i(!
	`LF_ISSET
(
DB_STAT_SUBSYSTEM
)) {

120 
	`__mux_r
(
dbv
, 
gi
->
mtx_gi
);

121 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


122 
	`__mux_r
(
dbv
, 
gi
->
mtx_objs
);

123 
	`__mux_r
(
dbv
, 
gi
->
mtx_locks
);

124 
	`__mux_r
(
dbv
, 
gi
->
mtx_locks
);

126 
i
 = 0; i < 
gi
->
obje_t_size
; i++)

127 
	`memt
(&

->
obj_
[
i
],

128 0, (

->
obj_
[
i
]));

131 
gi
->

.
_id
 = 
tmp
.st_id;

132 
gi
->

.
_cur_maxid
 = 
tmp
.st_cur_maxid;

133 
gi
->

.
_maxlocks
 = 
tmp
.st_maxlocks;

134 
gi
->

.
_maxlocks
 = 
tmp
.st_maxlockers;

135 
gi
->

.
_maxobjes
 = 
tmp
.st_maxobjects;

136 
gi
->

.
_ocks
 =

137 
gi
->

.
_maxocks
 = 
tmp
.
_ocks
;

138 
gi
->

.
_ocks
 =

139 
gi
->

.
_maxocks
 = 
tmp
.
_ocks
;

140 
gi
->

.
_nobjes
 =

141 
gi
->

.
_maxnobjes
 = 
tmp
.
_nobjes
;

142 
gi
->

.
_nmodes
 = 
tmp
.st_nmodes;

145 
	`LOCK_REGION_UNLOCK
(
dbv
);

147 *
p
 = 
s
;

149 
	}
}

158 
	$__lock__t_
(
dbv
, 
ags
)

159 
DB_ENV
 *
dbv
;

160 
u_t32_t
 
ags
;

162 
DB_THREAD_INFO
 *

;

163 
t
;

165 
	`PANIC_CHECK
(
dbv
);

166 
	`ENV_REQUIRES_CONFIG
(
dbv
,

167 
dbv
->
lk_hd
, "DB_ENV->lock__t", 
DB_INIT_LOCK
);

169 
	#DB_STAT_LOCK_FLAGS
 \

170 (
DB_STAT_ALL
 | 
DB_STAT_CLEAR
 | 
DB_STAT_LOCK_CONF
 | \

171 
DB_STAT_LOCK_LOCKERS
 | 
DB_STAT_LOCK_OBJECTS
 | 
DB_STAT_LOCK_PARAMS
)

	)

172 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->lock_stat_print",

173 
ags
, 
DB_STAT_CLEAR
 | 
DB_STAT_LOCK_FLAGS
)) != 0)

174  (
t
);

176 
	`ENV_ENTER
(
dbv
, 

);

177 
	`REPLICATION_WRAP
(
dbv
, (
	`__lock__t
(dbv, 
ags
)), 
t
);

178 
	`ENV_LEAVE
(
dbv
, 

);

179  (
t
);

180 
	}
}

189 
	$__lock__t
(
dbv
, 
ags
)

190 
DB_ENV
 *
dbv
;

191 
u_t32_t
 
ags
;

193 
u_t32_t
 
ig_ags
;

194 
t
;

196 
ig_ags
 = 
ags
;

197 
	`LF_CLR
(
DB_STAT_CLEAR
 | 
DB_STAT_SUBSYSTEM
);

198 i(
ags
 =0 || 
	`LF_ISSET
(
DB_STAT_ALL
)) {

199 
t
 = 
	`__lock_t_s
(
dbv
, 
ig_ags
);

200 i(
ags
 =0 || 
t
 != 0)

201  (
t
);

204 i(
	`LF_ISSET
(
DB_STAT_ALL
 | 
DB_STAT_LOCK_CONF
 | 
DB_STAT_LOCK_LOCKERS
 |

205 
DB_STAT_LOCK_OBJECTS
 | 
DB_STAT_LOCK_PARAMS
) &&

206 (
t
 = 
	`__lock_t_l
(
dbv
, 
ig_ags
)) != 0)

207  (
t
);

210 
	}
}

217 
	$__lock_t_s
(
dbv
, 
ags
)

218 
DB_ENV
 *
dbv
;

219 
u_t32_t
 
ags
;

221 
DB_LOCK_STAT
 *

;

222 
t
;

224 #ifde
LOCK_DIAGNOSTIC


225 
DB_LOCKTAB
 *

;

226 
DB_LOCKREGION
 *
gi
;

227 
u_t32_t
 
i
;

228 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


229 
u_t32_t
 
wa
, 
nowa
;

232 

 = 
dbv
->
lk_hd
;

233 
gi
 = 

->
gfo
.
imy
;

235 
i
 = 0; i < 
gi
->
obje_t_size
; i++) {

236 i(

->
obj_
[
i
].
_hash_n
 == 0)

238 
	`__db_dl
(
dbv
,

239 "Hash buck", (
u_lg
)
i
);

240 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


241 
	`__mux_t_wa_fo
(
dbv
, 

->
obj_mtx
[
i
], &
wa
, &
nowa
);

242 
	`__db_dl_p
(
dbv
,

244 (
u_lg
)
wa
, 
	`DB_PCT
(wa, wa + 
nowa
), 
NULL
);

246 
	`__db_dl
(
dbv
,

248 (
u_lg
)

->
obj_
[
i
].
_hash_n
);

249 
	`__db_dl
(
dbv
,

251 (
u_lg
)

->
obj_
[
i
].
_eques
);

252 
	`__db_dl
(
dbv
,

254 (
u_lg
)

->
obj_
[
i
].
_Ės
);

255 
	`__db_dl
(
dbv
,

257 (
u_lg
)

->
obj_
[
i
].
_nupgde
);

258 
	`__db_dl
(
dbv
,

260 (
u_lg
)

->
obj_
[
i
].
_ndowngde
);

261 
	`__db_dl
(
dbv
,

263 (
u_lg
)

->
obj_
[
i
].
_lock_wa
);

264 
	`__db_dl
(
dbv
,

266 (
u_lg
)

->
obj_
[
i
].
_lock_nowa
);

267 
	`__db_dl
(
dbv
, "Number ofockshat haveimed out",

268 (
u_lg
)

->
obj_
[
i
].
_ocktimeouts
);

269 
	`__db_dl
(
dbv
, "Number ofransactionshat haveimed out",

270 (
u_lg
)

->
obj_
[
i
].
_ximeouts
);

273 i((
t
 = 
	`__lock_
(
dbv
, &

, 
ags
)) != 0)

274  (
t
);

276 i(
	`LF_ISSET
(
DB_STAT_ALL
))

277 
	`__db_msg
(
dbv
, "Defaultockingegion information:");

278 
	`__db_dl
(
dbv
, "Laodock ID", (
u_lg
)

->
_id
);

279 
	`__db_msg
(
dbv
, "%#lx\tCurrent maximum unusedocker ID",

280 (
u_lg
)

->
_cur_maxid
);

281 
	`__db_dl
(
dbv
, "Numb olock modes", (
u_lg
)

->
_nmodes
);

282 
	`__db_dl
(
dbv
,

283 "Maximumumb olockpossib", (
u_lg
)

->
_maxlocks
);

284 
	`__db_dl
(
dbv
,

285 "Maximumumb olockpossib", (
u_lg
)

->
_maxlocks
);

286 
	`__db_dl
(
dbv
, "Maximumumber ofock objectsossible",

287 (
u_lg
)

->
_maxobjes
);

288 
	`__db_dl
(
dbv
, "Numb oculocks", (
u_lg
)

->
_ocks
);

289 
	`__db_dl
(
dbv
, "Maximumumber ofockstny oneime",

290 (
u_lg
)

->
_maxocks
);

291 
	`__db_dl
(
dbv
, "Numb oculocks", (
u_lg
)

->
_ocks
);

292 
	`__db_dl
(
dbv
, "Maximumumber ofockerstny oneime",

293 (
u_lg
)

->
_maxocks
);

294 
	`__db_dl
(
dbv
,

295 "Numb oculock objes", (
u_lg
)

->
_nobjes
);

296 
	`__db_dl
(
dbv
, "Maximumumber ofock objectstny oneime",

297 (
u_lg
)

->
_maxnobjes
);

298 
	`__db_dl
(
dbv
,

299 "Tٮumb olockqueed", (
u_lg
)

->
_eques
);

300 
	`__db_dl
(
dbv
,

301 "Tٮumb olockad", (
u_lg
)

->
_Ės
);

302 
	`__db_dl
(
dbv
,

303 "Tٮumb olockupgded", (
u_lg
)

->
_nupgde
);

304 
	`__db_dl
(
dbv
,

305 "Tٮumb olockdowngded", (
u_lg
)

->
_ndowngde
);

306 
	`__db_dl
(
dbv
,

308 (
u_lg
)

->
_lock_wa
);

309 
	`__db_dl
(
dbv
,

311 (
u_lg
)

->
_lock_nowa
);

312 
	`__db_dl
(
dbv
, "Numb oddlocks", (
u_lg
)

->
_nddlocks
);

313 
	`__db_dl
(
dbv
, "Lockimeouvue", (
u_lg
)

->
_locktimeout
);

314 
	`__db_dl
(
dbv
, "Number ofockshat haveimed out",

315 (
u_lg
)

->
_ocktimeouts
);

316 
	`__db_dl
(
dbv
,

317 "Tniځimeouvue", (
u_lg
)

->
_tximeout
);

318 
	`__db_dl
(
dbv
, "Number ofransactionshat haveimed out",

319 (
u_lg
)

->
_ximeouts
);

321 
	`__db_dlbys
(
dbv
, "The size ofheockegion",

322 (
u_lg
)0, (u_lg)0, (u_lg)

->
_gsize
);

323 #ifde
HAVE_FINE_GRAINED_LOCK_MANAGER


324 
	`__db_dl_p
(
dbv
,

326 (
u_lg
)

->
_objs_wa
, 
	`DB_PCT
(sp->st_objs_wait,

327 

->
_objs_wa
 + sp->
_objs_nowa
), 
NULL
);

328 
	`__db_dl_p
(
dbv
,

330 (
u_lg
)

->
_locks_wa
, 
	`DB_PCT
(sp->st_lockers_wait,

331 

->
_locks_wa
 + sp->
_locks_nowa
), 
NULL
);

332 
	`__db_dl_p
(
dbv
,

334 (
u_lg
)

->
_locks_wa
, 
	`DB_PCT
(sp->st_locks_wait,

335 

->
_locks_wa
 + sp->
_locks_nowa
), 
NULL
);

337 
	`__db_dl_p
(
dbv
,

339 (
u_lg
)

->
_gi_wa
, 
	`DB_PCT
(sp->st_region_wait,

340 

->
_gi_wa
 + sp->
_gi_nowa
), 
NULL
);

342 
	`__os_u
(
dbv
, 

);

345 
	}
}

352 
	$__lock_t_l
(
dbv
, 
ags
)

353 
DB_ENV
 *
dbv
;

354 
u_t32_t
 
ags
;

356 
DB_LOCKER
 *
l
;

357 
DB_LOCKOBJ
 *

;

358 
DB_LOCKREGION
 *
p
;

359 
DB_LOCKTAB
 *

;

360 
DB_MSGBUF
 
mb
;

361 
i
, 
j
;

362 
u_t32_t
 
k
;

364 

 = 
dbv
->
lk_hd
;

365 
p
 = 

->
gfo
.
imy
;

366 
	`DB_MSGBUF_INIT
(&
mb
);

368 
	`LOCK_REGION_LOCK
(
dbv
);

369 
	`__db_t_gfo
(
dbv
, &

->
gfo
, "Lock", 
ags
);

371 i(
	`LF_ISSET
(
DB_STAT_ALL
 | 
DB_STAT_LOCK_PARAMS
)) {

372 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

373 
	`__db_msg
(
dbv
, "Lockegionarameters:");

374 
	`__mux_t_debug_sg
(
dbv
,

375 "Lockegiڄegi mux", 
p
->
mtx_gi
, 
ags
);

376 
	`STAT_ULONG
("lockab size", 
p
->
lock_t_size
);

377 
	`STAT_ULONG
("objeab size", 
p
->
obje_t_size
);

378 
	`STAT_ULONG
("obj_off", 
p
->
obj_off
);

379 
	`STAT_ULONG
("lock_off", 
p
->
lock_off
);

380 
	`STAT_ULONG
("ed_dd", 
p
->
ed_dd
);

381 i(
	`timeecist
(&
p
->
xt_timeout
)) {

382 #ifde
HAVE_STRFTIME


383 
time_t
 
t
 = (time_t)
p
->
xt_timeout
.
tv_c
;

384 
tbuf
[64];

385 i(
	`rime
(
tbuf
, (tbuf),

386 "%m-%d-%H:%M:%S", 
	`loime
(&
t
)) != 0)

387 
	`__db_msg
(
dbv
, "next_timeout: %s.%09lu",

388 
tbuf
, (
u_lg
)
p
->
xt_timeout
.
tv_nc
);

391 
	`__db_msg
(
dbv
, "next_timeout: %lu.%09lu",

392 (
u_lg
)
p
->
xt_timeout
.
tv_c
,

393 (
u_lg
)
p
->
xt_timeout
.
tv_nc
);

397 i(
	`LF_ISSET
(
DB_STAT_ALL
 | 
DB_STAT_LOCK_CONF
)) {

398 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

399 
	`__db_msg
(
dbv
, "Lock conflict matrix:");

400 
i
 = 0; i < 
p
->

.
_nmodes
; i++) {

401 
j
 = 0; j < 
p
->

.
_nmodes
; j++)

402 
	`__db_msgadd
(
dbv
, &
mb
, "%lu\t", (
u_lg
)

403 

->
cis
[
i
 * 
p
->

.
_nmodes
 + 
j
]);

404 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

407 
	`LOCK_REGION_UNLOCK
(
dbv
);

409 i(
	`LF_ISSET
(
DB_STAT_ALL
 | 
DB_STAT_LOCK_LOCKERS
)) {

410 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

411 
	`__db_msg
(
dbv
, "Locks grouped byockers:");

412 
	`__lock_t_hd
(
dbv
);

413 
k
 = 0; k < 
p
->
lock_t_size
; k++)

414 
	`SH_TAILQ_FOREACH
(

415 
l
, &

->
lock_b
[
k
], 
lks
, 
__db_lock
)

416 
	`__lock_dump_lock
(
dbv
, &
mb
, 

, 
l
);

419 i(
	`LF_ISSET
(
DB_STAT_ALL
 | 
DB_STAT_LOCK_OBJECTS
)) {

420 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

421 
	`__db_msg
(
dbv
, "Locks grouped by object:");

422 
	`__lock_t_hd
(
dbv
);

423 
k
 = 0; k < 
p
->
obje_t_size
; k++)

424 
	`SH_TAILQ_FOREACH
(

425 

, &

->
obj_b
[
k
], 
lks
, 
__db_lockobj
) {

426 
	`__lock_dump_obje
(

, &
mb
, 

);

427 
	`__db_msg
(
dbv
, "%s", "");

432 
	}
}

435 
	$__lock_dump_lock
(
dbv
, 
mbp
, 

, 
l
)

436 
DB_ENV
 *
dbv
;

437 
DB_MSGBUF
 *
mbp
;

438 
DB_LOCKTAB
 *

;

439 
DB_LOCKER
 *
l
;

441 
__db_lock
 *

;

442 
buf
[
DB_THREADID_STRLEN
];

444 
	`__db_msgadd
(
dbv
,

445 
mbp
, "%8lx dd=%2ldocks held %-4d writeocks %-4did/thread %s",

446 (
u_lg
)
l
->
id
, (->
dd_id
,->
ocks
,->
nwres
,

447 
dbv
->
	`thad_id_rg
(dbv, 
l
->
pid
,->
tid
, 
buf
));

448 
	`__db_msgadd
(

449 
dbv
, 
mbp
, "%s", 
	`F_ISSET
(
l
, 
DB_LOCKER_DELETED
) ? "(D)" : " ");

450 i(
	`timeecist
(&
l
->
tx_expe
)) {

451 #ifde
HAVE_STRFTIME


452 
time_t
 
t
 = (time_t)
l
->
tx_expe
.
tv_c
;

453 
tbuf
[64];

454 i(
	`rime
(
tbuf
, (tbuf),

455 "%m-%d-%H:%M:%S", 
	`loime
(&
t
)) != 0)

456 
	`__db_msgadd
(
dbv
, 
mbp
, "expires %s.%09lu",

457 
tbuf
, (
u_lg
)
l
->
tx_expe
.
tv_nc
);

460 
	`__db_msgadd
(
dbv
, 
mbp
, "expires %lu.%09lu",

461 (
u_lg
)
l
->
tx_expe
.
tv_c
,

462 (
u_lg
)
l
->
tx_expe
.
tv_nc
);

464 i(
	`F_ISSET
(
l
, 
DB_LOCKER_TIMEOUT
))

465 
	`__db_msgadd
(
dbv
, 
mbp
, "kimeou%u", 
l
->
lk_timeout
);

466 i(
	`timeecist
(&
l
->
lk_expe
)) {

467 #ifde
HAVE_STRFTIME


468 
time_t
 
t
 = (time_t)
l
->
lk_expe
.
tv_c
;

469 
tbuf
[64];

470 i(
	`rime
(
tbuf
,

471 (
tbuf
), "%m-%d-%H:%M:%S", 
	`loime
(&
t
)) != 0)

472 
	`__db_msgadd
(
dbv
, 
mbp
, "kxpires %s.%09lu",

473 
tbuf
, (
u_lg
)
l
->
lk_expe
.
tv_nc
);

476 
	`__db_msgadd
(
dbv
, 
mbp
, "kxpires %lu.%09lu",

477 (
u_lg
)
l
->
lk_expe
.
tv_c
,

478 (
u_lg
)
l
->
lk_expe
.
tv_nc
);

480 
	`DB_MSGBUF_FLUSH
(
dbv
, 
mbp
);

482 
	`SH_LIST_FOREACH
(

, &
l
->
hdby
, 
lock_lks
, 
__db_lock
)

483 
	`__lock_ock
(

, 
mbp
, 

, 1);

484 
	}
}

487 
	$__lock_dump_obje
(

, 
mbp
, 

)

488 
DB_LOCKTAB
 *

;

489 
DB_MSGBUF
 *
mbp
;

490 
DB_LOCKOBJ
 *

;

492 
__db_lock
 *

;

494 
	`SH_TAILQ_FOREACH
(

, &

->
hds
, 
lks
, 
__db_lock
)

495 
	`__lock_ock
(

, 
mbp
, 

, 1);

496 
	`SH_TAILQ_FOREACH
(

, &

->
was
, 
lks
, 
__db_lock
)

497 
	`__lock_ock
(

, 
mbp
, 

, 1);

498 
	}
}

504 
	$__lock_t_hd
(
dbv
)

505 
DB_ENV
 *
dbv
;

507 
	`__db_msg
(
dbv
, "%-8s %-10s%-4s %-7s %s",

510 
	}
}

519 
	$__lock_ock
(

, 
mbp
, 

, 
igno
)

520 
DB_LOCKTAB
 *

;

521 
DB_MSGBUF
 *
mbp
;

522 
__db_lock
 *

;

523 
igno
;

525 
DB_ENV
 *
dbv
;

526 
DB_LOCKOBJ
 *
lockobj
;

527 
DB_MSGBUF
 
mb
;

528 
db_pgno_t
 
pgno
;

529 
u_t32_t
 *
fidp
, 
ty
;

530 
u_t8_t
 *
r
;

531 *
m
;

532 cڡ *
mode
, *
us
;

534 
dbv
 = 

->dbenv;

536 i(
mbp
 =
NULL
) {

537 
	`DB_MSGBUF_INIT
(&
mb
);

538 
mbp
 = &
mb
;

541 

->
mode
) {

542 
DB_LOCK_IREAD
:

543 
mode
 = "IREAD";

545 
DB_LOCK_IWR
:

546 
mode
 = "IWR";

548 
DB_LOCK_IWRITE
:

549 
mode
 = "IWRITE";

551 
DB_LOCK_NG
:

552 
mode
 = "NG";

554 
DB_LOCK_READ
:

555 
mode
 = "READ";

557 
DB_LOCK_READ_UNCOMMITTED
:

558 
mode
 = "READ_UNCOMMITTED";

560 
DB_LOCK_WRITE
:

561 
mode
 = "WRITE";

563 
DB_LOCK_WWRITE
:

564 
mode
 = "WAS_WRITE";

566 
DB_LOCK_WAIT
:

567 
mode
 = "WAIT";

570 
mode
 = "UNKNOWN";

573 

->
us
) {

574 
DB_LSTAT_ABORTED
:

575 
us
 = "ABORT";

577 
DB_LSTAT_EXPIRED
:

578 
us
 = "EXPIRED";

580 
DB_LSTAT_FREE
:

581 
us
 = "FREE";

583 
DB_LSTAT_HELD
:

584 
us
 = "HELD";

586 
DB_LSTAT_PENDING
:

587 
us
 = "PENDING";

589 
DB_LSTAT_WAITING
:

590 
us
 = "WAIT";

593 
us
 = "UNKNOWN";

596 
	`__db_msgadd
(
dbv
, 
mbp
, "%8lx %-10s %4lu %-7s ",

597 (
u_lg
)((
DB_LOCKER
 *)
	`R_ADDR
(&

->
gfo
, 

->
hd
))->
id
,

598 
mode
, (
u_lg
)

->
fcou
, 
us
);

600 
lockobj
 = (
DB_LOCKOBJ
 *)((
u_t8_t
 *)

 +p->
obj
);

601 
r
 = 
	`SH_DBT_PTR
(&
lockobj
->lockobj);

602 i(
igno
 && 
lockobj
->lockobj.
size
 =(
__db_ock
)) {

604 
	`memy
(&
pgno
, 
r
, (
db_pgno_t
));

605 
fidp
 = (
u_t32_t
 *)(
r
 + (
db_pgno_t
));

606 
ty
 = *(
u_t32_t
 *)(
r
 + (
db_pgno_t
+ 
DB_FILE_ID_LEN
);

607 i(
	`__dbg_g_me
(

->
dbv
, (
u_t8_t
 *)
fidp
, &
m
) != 0)

608 
m
 = 
NULL
;

609 i(
m
 =
NULL
)

610 
	`__db_msgadd
(
dbv
, 
mbp
, "(%lx %lx %lx %lx %lx) ",

611 (
u_lg
)
fidp
[0], (u_long)fidp[1], (u_long)fidp[2],

612 (
u_lg
)
fidp
[3], (u_long)fidp[4]);

614 
	`__db_msgadd
(
dbv
, 
mbp
, "%-25", 
m
);

615 
	`__db_msgadd
(
dbv
, 
mbp
, "%-7s %7lu",

616 
ty
 =
DB_PAGE_LOCK
 ? "page" :

617 
ty
 =
DB_RECORD_LOCK
 ? "record" : "handle",

618 (
u_lg
)
pgno
);

620 
	`__db_msgadd
(
dbv
, 
mbp
, "0x%lx ",

621 (
u_lg
)
	`R_OFFSET
(&

->
gfo
, 
lockobj
));

622 
	`__db_
(
dbv
, 
mbp
, 
r
, 
lockobj
->lockobj.
size
);

624 
	`DB_MSGBUF_FLUSH
(
dbv
, 
mbp
);

625 
	}
}

630 
	$__lock__
(
dbv
, 
p
, 
ags
)

631 
DB_ENV
 *
dbv
;

632 
DB_LOCK_STAT
 **
p
;

633 
u_t32_t
 
ags
;

635 
	`COMPQUIET
(
p
, 
NULL
);

636 
	`COMPQUIET
(
ags
, 0);

638  (
	`__db__n_but
(
dbv
));

639 
	}
}

642 
	$__lock__t_
(
dbv
, 
ags
)

643 
DB_ENV
 *
dbv
;

644 
u_t32_t
 
ags
;

646 
	`COMPQUIET
(
ags
, 0);

648  (
	`__db__n_but
(
dbv
));

649 
	}
}

	@../lock/lock_stub.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

18 
__db_nockg
 
__P
((
DB_ENV
 *));

25 
	$__db_nockg
(
dbv
)

26 
DB_ENV
 *
dbv
;

28 
	`__db_rx
(
dbv
,

30  (
DB_OPNOTSUP
);

31 
	}
}

34 
	$__lock_v_
(
dbv
)

35 
DB_ENV
 *
dbv
;

37 
	`COMPQUIET
(
dbv
, 0);

39 
	}
}

42 
	$__lock_v_deroy
(
dbv
)

43 
DB_ENV
 *
dbv
;

45 
	`COMPQUIET
(
dbv
, 0);

46 
	}
}

49 
	$__lock_g_lk_cis
(
dbv
, 
lk_ci
, 
lk_mode
)

50 
DB_ENV
 *
dbv
;

51 cڡ 
u_t8_t
 **
lk_ci
;

52 *
lk_mode
;

54 
	`COMPQUIET
(
lk_ci
, 
NULL
);

55 
	`COMPQUIET
(
lk_mode
, 
NULL
);

56  (
	`__db_nockg
(
dbv
));

57 
	}
}

60 
	$__lock_g_lk_de
(
dbv
, 
lk_dep
)

61 
DB_ENV
 *
dbv
;

62 
u_t32_t
 *
lk_dep
;

64 
	`COMPQUIET
(
lk_dep
, 
NULL
);

65  (
	`__db_nockg
(
dbv
));

66 
	}
}

69 
	$__lock_g_lk_max_locks
(
dbv
, 
lk_maxp
)

70 
DB_ENV
 *
dbv
;

71 
u_t32_t
 *
lk_maxp
;

73 
	`COMPQUIET
(
lk_maxp
, 
NULL
);

74  (
	`__db_nockg
(
dbv
));

75 
	}
}

78 
	$__lock_g_lk_max_locks
(
dbv
, 
lk_maxp
)

79 
DB_ENV
 *
dbv
;

80 
u_t32_t
 *
lk_maxp
;

82 
	`COMPQUIET
(
lk_maxp
, 
NULL
);

83  (
	`__db_nockg
(
dbv
));

84 
	}
}

87 
	$__lock_g_lk_max_objes
(
dbv
, 
lk_maxp
)

88 
DB_ENV
 *
dbv
;

89 
u_t32_t
 *
lk_maxp
;

91 
	`COMPQUIET
(
lk_maxp
, 
NULL
);

92  (
	`__db_nockg
(
dbv
));

93 
	}
}

96 
	$__lock_g_v_timeout
(
dbv
, 
timeou
, 
ag
)

97 
DB_ENV
 *
dbv
;

98 
db_timeout_t
 *
timeou
;

99 
u_t32_t
 
ag
;

101 
	`COMPQUIET
(
timeou
, 
NULL
);

102 
	`COMPQUIET
(
ag
, 0);

103  (
	`__db_nockg
(
dbv
));

104 
	}
}

107 
	$__lock_de_
(
dbv
, 
ags
, 
y
, 
ab܍
)

108 
DB_ENV
 *
dbv
;

109 
u_t32_t
 
ags
, 
y
;

110 *
ab܍
;

112 
	`COMPQUIET
(
ags
, 0);

113 
	`COMPQUIET
(
y
, 0);

114 
	`COMPQUIET
(
ab܍
, 
NULL
);

115  (
	`__db_nockg
(
dbv
));

116 
	}
}

119 
	$__lock_g_
(
dbv
, 
lock
, 
ags
, 
obj
, 
lock_mode
, 
lock
)

120 
DB_ENV
 *
dbv
;

121 
u_t32_t
 
lock
, 
ags
;

122 cڡ 
DBT
 *
obj
;

123 
db_lockmode_t
 
lock_mode
;

124 
DB_LOCK
 *
lock
;

126 
	`COMPQUIET
(
lock
, 0);

127 
	`COMPQUIET
(
ags
, 0);

128 
	`COMPQUIET
(
obj
, 
NULL
);

129 
	`COMPQUIET
(
lock_mode
, 0);

130 
	`COMPQUIET
(
lock
, 
NULL
);

131  (
	`__db_nockg
(
dbv
));

132 
	}
}

135 
	$__lock_id_
(
dbv
, 
idp
)

136 
DB_ENV
 *
dbv
;

137 
u_t32_t
 *
idp
;

139 
	`COMPQUIET
(
idp
, 
NULL
);

140  (
	`__db_nockg
(
dbv
));

141 
	}
}

144 
	$__lock_id__
(
dbv
, 
id
)

145 
DB_ENV
 *
dbv
;

146 
u_t32_t
 
id
;

148 
	`COMPQUIET
(
id
, 0);

149  (
	`__db_nockg
(
dbv
));

150 
	}
}

153 
	$__lock_put_
(
dbv
, 
lock
)

154 
DB_ENV
 *
dbv
;

155 
DB_LOCK
 *
lock
;

157 
	`COMPQUIET
(
lock
, 
NULL
);

158  (
	`__db_nockg
(
dbv
));

159 
	}
}

162 
	$__lock__
(
dbv
, 
p
, 
ags
)

163 
DB_ENV
 *
dbv
;

164 
DB_LOCK_STAT
 **
p
;

165 
u_t32_t
 
ags
;

167 
	`COMPQUIET
(
p
, 
NULL
);

168 
	`COMPQUIET
(
ags
, 0);

169  (
	`__db_nockg
(
dbv
));

170 
	}
}

173 
	$__lock__t_
(
dbv
, 
ags
)

174 
DB_ENV
 *
dbv
;

175 
u_t32_t
 
ags
;

177 
	`COMPQUIET
(
ags
, 0);

178  (
	`__db_nockg
(
dbv
));

179 
	}
}

182 
	$__lock_vec_
(
dbv
, 
lock
, 
ags
, 
li
, 
i
, 
ip
)

183 
DB_ENV
 *
dbv
;

184 
u_t32_t
 
lock
, 
ags
;

185 
i
;

186 
DB_LOCKREQ
 *
li
, **
ip
;

188 
	`COMPQUIET
(
lock
, 0);

189 
	`COMPQUIET
(
ags
, 0);

190 
	`COMPQUIET
(
li
, 
NULL
);

191 
	`COMPQUIET
(
i
, 0);

192 
	`COMPQUIET
(
ip
, 
NULL
);

193  (
	`__db_nockg
(
dbv
));

194 
	}
}

197 
	$__lock_t_lk_cis
(
dbv
, 
lk_cis
, 
lk_modes
)

198 
DB_ENV
 *
dbv
;

199 
u_t8_t
 *
lk_cis
;

200 
lk_modes
;

202 
	`COMPQUIET
(
lk_cis
, 
NULL
);

203 
	`COMPQUIET
(
lk_modes
, 0);

204  (
	`__db_nockg
(
dbv
));

205 
	}
}

208 
	$__lock_t_lk_de
(
dbv
, 
lk_de
)

209 
DB_ENV
 *
dbv
;

210 
u_t32_t
 
lk_de
;

212 
	`COMPQUIET
(
lk_de
, 0);

213  (
	`__db_nockg
(
dbv
));

214 
	}
}

217 
	$__lock_t_lk_max_locks
(
dbv
, 
lk_max
)

218 
DB_ENV
 *
dbv
;

219 
u_t32_t
 
lk_max
;

221 
	`COMPQUIET
(
lk_max
, 0);

222  (
	`__db_nockg
(
dbv
));

223 
	}
}

226 
	$__lock_t_lk_max_locks
(
dbv
, 
lk_max
)

227 
DB_ENV
 *
dbv
;

228 
u_t32_t
 
lk_max
;

230 
	`COMPQUIET
(
lk_max
, 0);

231  (
	`__db_nockg
(
dbv
));

232 
	}
}

235 
	$__lock_t_lk_max_objes
(
dbv
, 
lk_max
)

236 
DB_ENV
 *
dbv
;

237 
u_t32_t
 
lk_max
;

239 
	`COMPQUIET
(
lk_max
, 0);

240  (
	`__db_nockg
(
dbv
));

241 
	}
}

244 
	$__lock_t_v_timeout
(
dbv
, 
timeout
, 
ags
)

245 
DB_ENV
 *
dbv
;

246 
db_timeout_t
 
timeout
;

247 
u_t32_t
 
ags
;

249 
	`COMPQUIET
(
timeout
, 0);

250 
	`COMPQUIET
(
ags
, 0);

251  (
	`__db_nockg
(
dbv
));

252 
	}
}

255 
	$__lock_ݒ
(
dbv
, 
_ok
)

256 
DB_ENV
 *
dbv
;

257 
_ok
;

259 
	`COMPQUIET
(
dbv
, 
NULL
);

260 
	`COMPQUIET
(
_ok
, 0);

261  (
	`__db_nockg
(
dbv
));

262 
	}
}

265 
	$__lock_id_
(
dbv
, 
sh_lock
)

266 
DB_ENV
 *
dbv
;

267 
DB_LOCKER
 *
sh_lock
;

269 
	`COMPQUIET
(
dbv
, 
NULL
);

270 
	`COMPQUIET
(
sh_lock
, 0);

272 
	}
}

275 
	$__lock_v_esh
(
dbv
)

276 
DB_ENV
 *
dbv
;

278 
	`COMPQUIET
(
dbv
, 
NULL
);

280 
	}
}

283 
	$__lock__t
(
dbv
, 
ags
)

284 
DB_ENV
 *
dbv
;

285 
u_t32_t
 
ags
;

287 
	`COMPQUIET
(
dbv
, 
NULL
);

288 
	`COMPQUIET
(
ags
, 0);

290 
	}
}

293 
	$__lock_put
(
dbv
, 
lock
)

294 
DB_ENV
 *
dbv
;

295 
DB_LOCK
 *
lock
;

297 
	`COMPQUIET
(
dbv
, 
NULL
);

298 
	`COMPQUIET
(
lock
, 
NULL
);

300 
	}
}

303 
	$__lock_vec
(
dbv
, 
sh_lock
, 
ags
, 
li
, 
i
, 
ip
)

304 
DB_ENV
 *
dbv
;

305 
DB_LOCKER
 *
sh_lock
;

306 
u_t32_t
 
ags
;

307 
i
;

308 
DB_LOCKREQ
 *
li
, **
ip
;

310 
	`COMPQUIET
(
dbv
, 
NULL
);

311 
	`COMPQUIET
(
sh_lock
, 0);

312 
	`COMPQUIET
(
ags
, 0);

313 
	`COMPQUIET
(
li
, 
NULL
);

314 
	`COMPQUIET
(
i
, 0);

315 
	`COMPQUIET
(
ip
, 
NULL
);

317 
	}
}

320 
	$__lock_g
(
dbv
, 
lock
, 
ags
, 
obj
, 
lock_mode
, 
lock
)

321 
DB_ENV
 *
dbv
;

322 
DB_LOCKER
 *
lock
;

323 
u_t32_t
 
ags
;

324 cڡ 
DBT
 *
obj
;

325 
db_lockmode_t
 
lock_mode
;

326 
DB_LOCK
 *
lock
;

328 
	`COMPQUIET
(
dbv
, 
NULL
);

329 
	`COMPQUIET
(
lock
, 
NULL
);

330 
	`COMPQUIET
(
ags
, 0);

331 
	`COMPQUIET
(
obj
, 
NULL
);

332 
	`COMPQUIET
(
lock_mode
, 0);

333 
	`COMPQUIET
(
lock
, 
NULL
);

335 
	}
}

338 
	$__lock_id
(
dbv
, 
idp
, 
lkp
)

339 
DB_ENV
 *
dbv
;

340 
u_t32_t
 *
idp
;

341 
DB_LOCKER
 **
lkp
;

343 
	`COMPQUIET
(
dbv
, 
NULL
);

344 
	`COMPQUIET
(
idp
, 
NULL
);

345 
	`COMPQUIET
(
lkp
, 
NULL
);

347 
	}
}

350 
	$__lock_h_timeout
(
dbv
, 

, 
lock
)

351 
DB_ENV
 *
dbv
;

352 
DB_LOCKER
 *

, *
lock
;

354 
	`COMPQUIET
(
dbv
, 
NULL
);

355 
	`COMPQUIET
(

, 
NULL
);

356 
	`COMPQUIET
(
lock
, 
NULL
);

358 
	}
}

361 
	$__lock_t_timeout
(
dbv
, 
lock
, 
timeout
, 

)

362 
DB_ENV
 *
dbv
;

363 
DB_LOCKER
 *
lock
;

364 
db_timeout_t
 
timeout
;

365 
u_t32_t
 

;

367 
	`COMPQUIET
(
dbv
, 
NULL
);

368 
	`COMPQUIET
(
lock
, 
NULL
);

369 
	`COMPQUIET
(
timeout
, 0);

370 
	`COMPQUIET
(

, 0);

372 
	}
}

375 
	$__lock_addmylock
(
dbv
, 
pid
, 
id
)

376 
DB_ENV
 *
dbv
;

377 
u_t32_t
 
pid
, 
id
;

379 
	`COMPQUIET
(
dbv
, 
NULL
);

380 
	`COMPQUIET
(
pid
, 0);

381 
	`COMPQUIET
(
id
, 0);

383 
	}
}

386 
	$__lock_mylock
(

, 
sh_lock
)

387 
DB_LOCKTAB
 *

;

388 
DB_LOCKER
 *
sh_lock
;

390 
	`COMPQUIET
(

, 
NULL
);

391 
	`COMPQUIET
(
sh_lock
, 
NULL
);

393 
	}
}

396 
	$__lock_downgde
(
dbv
, 
lock
, 
w_mode
, 
ags
)

397 
DB_ENV
 *
dbv
;

398 
DB_LOCK
 *
lock
;

399 
db_lockmode_t
 
w_mode
;

400 
u_t32_t
 
ags
;

402 
	`COMPQUIET
(
dbv
, 
NULL
);

403 
	`COMPQUIET
(
lock
, 
NULL
);

404 
	`COMPQUIET
(
w_mode
, 0);

405 
	`COMPQUIET
(
ags
, 0);

407 
	}
}

410 
	$__lock_lock_is_
(
dbv
, 
lock
, 
chd
, 

)

411 
DB_ENV
 *
dbv
;

412 
DB_LOCKER
 *
lock
;

413 
DB_LOCKER
 *
chd
;

414 *

;

416 
	`COMPQUIET
(
dbv
, 
NULL
);

417 
	`COMPQUIET
(
lock
, 
NULL
);

418 
	`COMPQUIET
(
chd
, 
NULL
);

420 *

 = 1;

422 
	}
}

425 
	$__lock_t_thad_id
(
ef
, 
pid
, 
tid
)

426 *
ef
;

427 
pid_t
 
pid
;

428 
db_thadid_t
 
tid
;

430 
	`COMPQUIET
(
ef
, 
NULL
);

431 
	`COMPQUIET
(
pid
, 0);

432 
	`COMPQUIET
(
tid
, 0);

433 
	}
}

436 
	$__lock_chk
(
dbv
)

437 
DB_ENV
 *
dbv
;

439 
	`COMPQUIET
(
dbv
, 
NULL
);

441 
	}
}

444 
	$__lock_g_li
(
dbv
, 
lock
, 
ags
, 
lock_mode
, 
li
)

445 
DB_ENV
 *
dbv
;

446 
DB_LOCKER
 *
lock
;

447 
u_t32_t
 
ags
;

448 
db_lockmode_t
 
lock_mode
;

449 
DBT
 *
li
;

451 
	`COMPQUIET
(
dbv
, 
NULL
);

452 
	`COMPQUIET
(
lock
, 
NULL
);

453 
	`COMPQUIET
(
ags
, 0);

454 
	`COMPQUIET
(
lock_mode
, 0);

455 
	`COMPQUIET
(
li
, 
NULL
);

457 
	}
}

460 
	$__lock_li_t
(
dbv
, 
li
)

461 
DB_ENV
 *
dbv
;

462 
DBT
 *
li
;

464 
	`COMPQUIET
(
dbv
, 
NULL
);

465 
	`COMPQUIET
(
li
, 
NULL
);

466 
	}
}

469 
	$__lock_glock
(

, 
lock
, 

, 

)

470 
DB_LOCKTAB
 *

;

471 
u_t32_t
 
lock
;

472 

;

473 
DB_LOCKER
 **

;

475 
	`COMPQUIET
(

, 
NULL
);

476 
	`COMPQUIET
(
lock
, 0);

477 
	`COMPQUIET
(

, 0);

478 
	`COMPQUIET
(

, 
NULL
);

479  (
	`__db_nockg
(

->
dbv
));

480 
	}
}

483 
	$__lock_id_t
(
dbv
, 
cur_id
, 
max_id
)

484 
DB_ENV
 *
dbv
;

485 
u_t32_t
 
cur_id
, 
max_id
;

487 
	`COMPQUIET
(
dbv
, 
NULL
);

488 
	`COMPQUIET
(
cur_id
, 0);

489 
	`COMPQUIET
(
max_id
, 0);

491 
	}
}

	@../lock/lock_timer.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/lock.h
"

26 
	$__lock_t_timeout
(
dbv
, 
lock
, 
timeout
, 

)

27 
DB_ENV
 *
dbv
;

28 
DB_LOCKER
 *
lock
;

29 
db_timeout_t
 
timeout
;

30 
u_t32_t
 

;

32 
t
;

34 i(
lock
 =
NULL
)

36 
	`LOCK_REGION_LOCK
(
dbv
);

37 
t
 = 
	`__lock_t_timeout_
(
dbv
, 
lock
, 
timeout
, 

);

38 
	`LOCK_REGION_UNLOCK
(
dbv
);

39  (
t
);

40 
	}
}

54 
	$__lock_t_timeout_
(
dbv
, 
sh_lock
, 
timeout
, 

)

55 
DB_ENV
 *
dbv
;

56 
DB_LOCKER
 *
sh_lock
;

57 
db_timeout_t
 
timeout
;

58 
u_t32_t
 

;

60 
DB_LOCKREGION
 *
gi
;

61 
gi
 = 
dbv
->
lk_hd
->
gfo
.
imy
;

63 i(

 =
DB_SET_TXN_TIMEOUT
) {

64 i(
timeout
 == 0)

65 
	`timeecr
(&
sh_lock
->
tx_expe
);

67 
	`__lock_expes
(
dbv
, &
sh_lock
->
tx_expe
, 
timeout
);

68 } i(

 =
DB_SET_LOCK_TIMEOUT
) {

69 
sh_lock
->
lk_timeout
 = 
timeout
;

70 
	`F_SET
(
sh_lock
, 
DB_LOCKER_TIMEOUT
);

71 } i(

 =
DB_SET_TXN_NOW
) {

72 
	`timeecr
(&
sh_lock
->
tx_expe
);

73 
	`__lock_expes
(
dbv
, &
sh_lock
->
tx_expe
, 0);

74 
sh_lock
->
lk_expe
 = sh_lock->
tx_expe
;

75 i(!
	`timeecist
(&
gi
->
xt_timeout
) ||

76 
	`timeeccmp
(

77 &
gi
->
xt_timeout
, &
sh_lock
->
lk_expe
, >))

78 
gi
->
xt_timeout
 = 
sh_lock
->
lk_expe
;

80  (
EINVAL
);

83 
	}
}

95 
	$__lock_h_timeout
(
dbv
, 

, 
lock
)

96 
DB_ENV
 *
dbv
;

97 
DB_LOCKER
 *

, *
lock
;

99 
t
;

101 
t
 = 0;

102 
	`LOCK_REGION_LOCK
(
dbv
);

109 i(

 =
NULL
 ||

110 (
	`timeecist
(&

->
tx_expe
) &&

111 !
	`F_ISSET
(

, 
DB_LOCKER_TIMEOUT
))) {

112 
t
 = 
EINVAL
;

113 
r
;

116 
lock
->
tx_expe
 = 

->tx_expire;

118 i(
	`F_ISSET
(

, 
DB_LOCKER_TIMEOUT
)) {

119 
lock
->
lk_timeout
 = 

->lk_timeout;

120 
	`F_SET
(
lock
, 
DB_LOCKER_TIMEOUT
);

121 i(!
	`timeecist
(&

->
tx_expe
))

122 
t
 = 
EINVAL
;

125 
r
: 
	`LOCK_REGION_UNLOCK
(
dbv
);

126  (
t
);

127 
	}
}

136 
	$__lock_expes
(
dbv
, 
timee
, 
timeout
)

137 
DB_ENV
 *
dbv
;

138 
db_timeec
 *
timee
;

139 
db_timeout_t
 
timeout
;

141 
db_timeec
 
v
;

147 i(!
	`timeecist
(
timee
))

148 
	`__os_gtime
(
dbv
, 
timee
);

151 
	`DB_TIMEOUT_TO_TIMESPEC
(
timeout
, &
v
);

154 
	`timeedd
(
timee
, &
v
);

155 
	}
}

163 
	$__lock_exped
(
dbv
, 
now
, 
timee
)

164 
DB_ENV
 *
dbv
;

165 
db_timeec
 *
now
, *
timee
;

167 i(!
	`timeecist
(
timee
))

170 i(!
	`timeecist
(
now
))

171 
	`__os_gtime
(
dbv
, 
now
);

173  (
	`timeeccmp
(
now
, 
timee
, >=));

174 
	}
}

	@../lock/lock_util.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/hash.h
"

14 
	~"dbc/lock.h
"

36 
	#FAST_HASH
(
P
) { \

37 
u_t32_t
 
__h
; \

38 
u_t8_t
 *
__
, *
__hp
; \

39 
__hp
 = (
u_t8_t
 *)&
__h
; \

40 
__
 = (
u_t8_t
 *)(
P
); \

41 
__hp
[0] = 
__
[0] ^ __cp[4]; \

42 
__hp
[1] = 
__
[1] ^ __cp[5]; \

43 
__hp
[2] = 
__
[2] ^ __cp[6]; \

44 
__hp
[3] = 
__
[3] ^ __cp[7]; \

45  (
__h
); \

46 }

	)

53 
u_t32_t


54 
	$__lock_ohash
(
dbt
)

55 cڡ 
DBT
 *
dbt
;

57 i(
dbt
->
size
 =(
DB_LOCK_ILOCK
))

58 
	`FAST_HASH
(
dbt
->
da
);

60  (
	`__ham_func5
(
NULL
, 
dbt
->
da
, dbt->
size
));

61 
	}
}

68 
u_t32_t


69 
	$__lock_lhash
(
lock_obj
)

70 
DB_LOCKOBJ
 *
lock_obj
;

72 *
obj_da
;

74 
obj_da
 = 
	`SH_DBT_PTR
(&
lock_obj
->
lockobj
);

76 i(
lock_obj
->
lockobj
.
size
 =(
DB_LOCK_ILOCK
))

77 
	`FAST_HASH
(
obj_da
);

79  (
	`__ham_func5
(
NULL
, 
obj_da
, 
lock_obj
->
lockobj
.
size
));

80 
	}
}

89 
	$__lock_nomem
(
dbv
, 
s
)

90 
DB_ENV
 *
dbv
;

91 cڡ *
s
;

93 
	`__db_rx
(
dbv
, "Lockab iouoavaab %s", 
s
);

94  (
ENOMEM
);

95 
	}
}

	@../log/log.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/yo.h
"

13 
	~"dbc/hmac.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/txn.h
"

17 
__log_
 
__P
((
DB_ENV
 *, 
DB_LOG
 *));

18 
__log_cov
 
__P
((
DB_LOG
 *));

19 
size_t
 
__log_gi_size
 
__P
((
DB_ENV
 *));

28 
	$__log_ݒ
(
dbv
, 
_ok
)

29 
DB_ENV
 *
dbv
;

30 
_ok
;

32 
DB_LOG
 *
db
;

33 
LOG
 *

;

34 
u_t8_t
 *
bulk
;

35 
gi_locked
, 
t
;

37 
gi_locked
 = 0;

40 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_LOG
), &
db
)) != 0)

41  (
t
);

42 
db
->
dbv
 = dbenv;

45 i(
dbv
->
lg_bsize
 == 0)

46 
dbv
->
lg_bsize
 = 
	`F_ISSET
(dbv, 
DB_ENV_LOG_INMEMORY
) ?

47 
LG_BSIZE_INMEM
 : 
LG_BSIZE_DEFAULT
;

50 
db
->
gfo
.
dbv
 = dbenv;

51 
db
->
gfo
.
ty
 = 
REGION_TYPE_LOG
;

52 
db
->
gfo
.
id
 = 
INVALID_REGION_ID
;

53 
db
->
gfo
.
ags
 = 
REGION_JOIN_OK
;

54 i(
_ok
)

55 
	`F_SET
(&
db
->
gfo
, 
REGION_CREATE_OK
);

56 i((
t
 = 
	`__v_gi_ch
(

57 
dbv
, &
db
->
gfo
, 
	`__log_gi_size
(dbenv))) != 0)

58 
r
;

61 i(
	`F_ISSET
(&
db
->
gfo
, 
REGION_CREATE
))

62 i((
t
 = 
	`__log_
(
dbv
, 
db
)) != 0)

63 
r
;

66 

 = 
db
->
gfo
.
imy
 =

67 
	`R_ADDR
(&
db
->
gfo
, db->gfo.

->
imy
);

68 
db
->
bu
 = 
	`R_ADDR
(&db->
gfo
, 

->
bufr_off
);

74 i((
t
 = 
	`__mux_loc
(
dbv
,

75 
MTX_LOG_REGION
, 
DB_MUTEX_PROCESS_ONLY
, &
db
->
mtx_dbg
)) != 0)

76 
r
;

87 
dbv
->
lg_hd
 = 
db
;

89 i(
	`F_ISSET
(&
db
->
gfo
, 
REGION_CREATE
)) {

96 i(

->
log_size
 == 0)

97 

->
log_size
 = 
	`F_ISSET
(
dbv
, 
DB_ENV_LOG_INMEMORY
) ?

98 
LG_MAX_INMEM
 : 
LG_MAX_DEFAULT
;

100 i((
t
 = 
	`__log_cov
(
db
)) != 0)

101 
r
;

107 i(

->
log_nsize
 == 0)

108 

->
log_nsize
 =p->
log_size
;

114 i(
	`IS_INIT_LSN
(

->
l
) &&

115 (
t
 = 
	`__log_wfe
(
db
, 
NULL
, 0, 0)) != 0)

116 
r
;

122 

->
ady_l
 =p->
l
;

123 i(
	`IS_ENV_REPLICATED
(
dbv
)) {

124 i((
t
 =

125 
	`__v_loc
(&
db
->
gfo
, 
MEGABYTE
, &
bulk
)) != 0)

126 
r
;

127 

->
bulk_buf
 = 
	`R_OFFSET
(&
db
->
gfo
, 
bulk
);

128 

->
bulk_n
 = 
MEGABYTE
;

129 

->
bulk_off
 = 0;

131 

->
bulk_buf
 = 
INVALID_ROFF
;

132 

->
bulk_n
 = 0;

133 

->
bulk_off
 = 0;

142 
	`LOG_SYSTEM_LOCK
(
dbv
);

143 
gi_locked
 = 1;

145 i(
dbv
->
lg_size
 != 0) {

146 i((
t
 =

147 
	`__log_check_sizes
(
dbv
, dbv->
lg_size
, 0)) != 0)

148 
r
;

150 

->
log_nsize
 = 
dbv
->
lg_size
;

154 i(

->
db_log_autemove
)

155 
	`F_SET
(
dbv
, 
DB_ENV_LOG_AUTOREMOVE
);

156 i(

->
db_log_memy
)

157 
	`F_SET
(
dbv
, 
DB_ENV_LOG_INMEMORY
);

159 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

160 
gi_locked
 = 0;

165 
r
: 
dbv
->
lg_hd
 = 
NULL
;

166 i(
db
->
gfo
.
addr
 !
NULL
) {

167 i(
gi_locked
)

168 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

169 ()
	`__v_gi_dach
(
dbv
, &
db
->
gfo
, 0);

172 ()
	`__mux_
(
dbv
, &
db
->
mtx_dbg
);

173 
	`__os_
(
dbv
, 
db
);

175  (
t
);

176 
	}
}

183 
	$__log_
(
dbv
, 
db
)

184 
DB_ENV
 *
dbv
;

185 
DB_LOG
 *
db
;

187 
LOG
 *

;

188 
t
;

189 *
p
;

196 i((
t
 =

197 
	`__log_check_sizes
(
dbv
, dbv->
lg_size
, dbv->
lg_bsize
)) != 0)

198  (
t
);

200 i((
t
 = 
	`__v_loc
(&
db
->
gfo
,

201 (*

), &
db
->
gfo
.
imy
)) != 0)

202 
mem_r
;

203 
db
->
gfo
.

->
imy
 =

204 
	`R_OFFSET
(&
db
->
gfo
, db->gfo.
imy
);

205 

 = 
db
->
gfo
.
imy
;

206 
	`memt
(

, 0, (*lp));

208 i((
t
 =

209 
	`__mux_loc
(
dbv
, 
MTX_LOG_REGION
, 0, &

->
mtx_gi
)) != 0)

210  (
t
);

212 

->
fid_max
 = 0;

213 
	`SH_TAILQ_INIT
(&

->
fq
);

214 

->
_fid_ack
 = 
INVALID_ROFF
;

215 

->
_fids
 =p->
_fids_lod
 = 0;

218 
	`INIT_LSN
(

->
l
);

219 
	`INIT_LSN
(

->
t_l
);

226 
	`ZERO_LSN
(

->
wag_l
);

233 
	`ZERO_LSN
(

->
ched_ckp_l
);

235 i((
t
 =

236 
	`__mux_loc
(
dbv
, 
MTX_LOG_FILENAME
, 0, &

->
mtx_fi
)) != 0)

237  (
t
);

238 i((
t
 = 
	`__mux_loc
(
dbv
, 
MTX_LOG_FLUSH
, 0, &

->
mtx_ush
)) != 0)

239  (
t
);

242 i((
t
 = 
	`__v_loc
(&
db
->
gfo
, 
dbv
->
lg_bsize
, &
p
)) != 0) {

243 
mem_r
: 
	`__db_rx

dbv
, "unableollocateogegion memory");

244  (
t
);

246 

->
gimax
 = 
dbv
->
lg_gimax
;

247 

->
bufr_off
 = 
	`R_OFFSET
(&
db
->
gfo
, 
p
);

248 

->
bufr_size
 = 
dbv
->
lg_bsize
;

249 

->
femode
 = 
dbv
->
lg_femode
;

250 

->
log_size
 =p->
log_nsize
 = 
dbv
->
lg_size
;

253 
	`SH_TAILQ_INIT
(&

->
_comms
);

254 
	`SH_TAILQ_INIT
(&

->
comms
);

255 

->
ncomm
 = 0;

258 
	`SH_TAILQ_INIT
(&

->
logfes
);

259 
	`SH_TAILQ_INIT
(&

->
_logfes
);

266 

->
rsi
.
magic
 = 
DB_LOGMAGIC
;

270 

->
rsi
.
vsi
 = 
DB_LOGVERSION
;

271 

->
rsi
.
nud
 = 0;

274 i(
	`F_ISSET
(
dbv
, 
DB_ENV_LOG_AUTOREMOVE
))

275 

->
db_log_autemove
 = 1;

276 i(
	`F_ISSET
(
dbv
, 
DB_ENV_LOG_INMEMORY
))

277 

->
db_log_memy
 = 1;

279 ()
	`time
(&

->
timeamp
);

281 
	}
}

288 
	$__log_cov
(
db
)

289 
DB_LOG
 *
db
;

291 
DBT
 
dbt
;

292 
DB_ENV
 *
dbv
;

293 
DB_LOGC
 *
logc
;

294 
DB_LSN
 
l
;

295 
LOG
 *

;

296 
u_t32_t
 
t
, 
y
;

297 
t
;

298 
logfe_vidy
 
us
;

300 
logc
 = 
NULL
;

301 
dbv
 = 
db
->dbenv;

302 

 = 
db
->
gfo
.
imy
;

308 i((
t
 = 
	`__log_fd
(
db
, 0, &
t
, &
us
)) != 0)

309  (
t
);

310 i(
t
 == 0)

319 i(
us
 =
DB_LV_OLD_UNREADABLE
) {

320 

->
l
.
fe
 =p->
s_l
.f
t
 + 1;

321 

->
l
.
offt
 =p->
s_l
.offset = 0;

322 
skch
;

324 
	`DB_ASSERT
(
dbv
,

325 (
us
 =
DB_LV_NORMAL
 || stu=
DB_LV_OLD_READABLE
));

333 

->
l
.
fe
 = 
t
 + 1;

334 

->
l
.
offt
 = 0;

335 
l
.
fe
 = 
t
;

336 
l
.
offt
 = 0;

342 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

343  (
t
);

344 
	`F_SET
(
logc
, 
DB_LOG_LOCKED
);

345 
	`memt
(&
dbt
, 0, (dbt));

346 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
dbt
, 
DB_SET
)) != 0)

347 
r
;

353 
	`F_SET
(
logc
, 
DB_LOG_SILENT_ERR
);

354 
	`__logc_g
(
logc
, &
l
, &
dbt
, 
DB_NEXT
) == 0) {

355 i(
dbt
.
size
 < (
u_t32_t
))

357 
	`memy
(&
y
, 
dbt
.
da
, (
u_t32_t
));

358 i(
y
 =
DB___txn_ckp
)

364 

->
ched_ckp_l
 = 
l
;

366 
	`F_CLR
(
logc
, 
DB_LOG_SILENT_ERR
);

373 

->
l
 =sn;

374 

->
s_l
 = 
l
;

375 

->
l
.
offt
 +
logc
->
n
;

376 

->
s_l
.
offt
 +
logc
->
n
;

379 

->
n
 = 
logc
->len;

380 

->
a_off
 = 0;

381 

->
b_off
 = 0;

382 

->
w_off
 =p->
l
.
offt
;

384 
skch
:

385 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_RECOVERY
))

386 
	`__db_msg
(
dbv
,

388 (
u_lg
)

->
l
.
fe
, (u_lgp->l.
offt
);

390 
r
: i(
logc
 !
NULL
)

391 ()
	`__logc_o
(
logc
);

393  (
t
);

394 
	}
}

405 
	$__log_fd
(
db
, 
fd_f
, 
vp
, 
u
)

406 
DB_LOG
 *
db
;

407 
fd_f
;

408 
u_t32_t
 *
vp
;

409 
logfe_vidy
 *
u
;

411 
DB_ENV
 *
dbv
;

412 
LOG
 *

;

413 
logfe_vidy
 
logv_us
, 
us
;

414 
__db_fet
 *
fet
;

415 
u_t32_t
 
v
, 
logv
;

416 
t
, 
ft
, 
t
;

417 cڡ *
d
;

418 *
c
, **
mes
, *
p
, *
q
;

420 
dbv
 = 
db
->dbenv;

421 

 = 
db
->
gfo
.
imy
;

422 
logv_us
 = 
us
 = 
DB_LV_NONEXISTENT
;

425 *
vp
 = 0;

427 i(

->
db_log_memy
) {

428 
fet
 = 
fd_f
 ?

429 
	`SH_TAILQ_FIRST
(&

->
logfes
, 
__db_fet
) :

430 
	`SH_TAILQ_LAST
(&

->
logfes
, 
lks
, 
__db_fet
);

431 i(
fet
 !
NULL
) {

432 *
vp
 = 
fet
->
fe
;

433 
logv_us
 = 
DB_LV_NORMAL
;

435 *
u
 = 
logv_us
;

440 i((
t
 = 
	`__log_me
(
db
, 1, &
p
, 
NULL
, 0)) != 0)

441  (
t
);

442 i((
q
 = 
	`__db_h
(
p
)=
NULL
)

443 
d
 = 
PATH_DOT
;

445 *
q
 = '\0';

446 
d
 = 
p
;

450 i((
t
 = 
	`__os_dli
(
dbv
, 
d
, &
mes
, &
ft
)) != 0) {

451 
	`__db_r
(
dbv
, 
t
, "%s", 
d
);

452 
	`__os_
(
dbv
, 
p
);

453  (
t
);

457 
t
 = 
ft
, 
v
 = 
logv
 = 0; --cnt >= 0;) {

458 i(
	`cmp
(
mes
[
t
], 
LFPREFIX
, (LFPREFIX) - 1) != 0)

465 
c
 = 
mes
[
t
] + (
LFPREFIX
) - 1; *c != '\0'; c++)

466 i(!
	`isdig
(()*
c
))

468 i(*
c
 != '\0')

475 
v
 = (
u_t32_t
)
	`
(
mes
[
t
] + ((
LFPREFIX
) - 1));

489 i(
fd_f
) {

490 i(
logv
 != 0 &&

491 
us
 !
DB_LV_OLD_UNREADABLE
 && 
v
 > 
logv
)

494 i(
logv
 !0 && 
v
 <ogval)

497 i((
t
 = 
	`__log_vid
(
db
, 
v
, 1, 
NULL
, 0,

498 &
us
, 
NULL
)) != 0) {

499 
	`__db_r
(

500 
dbv
, 
t
, "Invidog fe: %s", 
mes
[
t
]);

501 
r
;

503 
us
) {

504 
DB_LV_NONEXISTENT
:

506 
	`DB_ASSERT
(
dbv
, 0);

508 
DB_LV_INCOMPLETE
:

520 i(
fd_f
)

521 
found
;

523 
DB_LV_OLD_UNREADABLE
:

533 i(!
fd_f
 || 
logv
 == 0 ||

534 (
us
 =
DB_LV_OLD_UNREADABLE
 && 
v
 > 
logv
))

535 
found
;

537 
DB_LV_NORMAL
:

538 
DB_LV_OLD_READABLE
:

539 
found
: 
logv
 = 
v
;

540 
logv_us
 = 
us
;

545 *
vp
 = 
logv
;

547 
r
: 
	`__os_d
(
dbv
, 
mes
, 
ft
);

548 
	`__os_
(
dbv
, 
p
);

549 *
u
 = 
logv_us
;

551  (
t
);

552 
	}
}

566 
	$__log_vid
(
db
, 
numb
, 
t_rsi
, 
fh
, 
ags
, 
u
, 
vsip
)

567 
DB_LOG
 *
db
;

568 
u_t32_t
 
numb
;

569 
t_rsi
;

570 
DB_FH
 **
fh
;

571 
u_t32_t
 
ags
;

572 
logfe_vidy
 *
u
;

573 
u_t32_t
 *
vsip
;

575 
DB_CIPHER
 *
db_ch
;

576 
DB_ENV
 *
dbv
;

577 
DB_FH
 *
fhp
;

578 
HDR
 *
hdr
;

579 
LOG
 *

;

580 
LOGP
 *
rsi
;

581 
logfe_vidy
 
us
;

582 
size_t
 
hdrsize
, 

, 
csize
;

583 
is_hmac
, 
t
;

584 
u_t8_t
 *
tmp
;

585 *
ame
;

587 
dbv
 = 
db
->dbenv;

588 
db_ch
 = 
dbv
->
yo_hd
;

589 
fhp
 = 
NULL
;

590 
rsi
 = 
NULL
;

591 
us
 = 
DB_LV_NORMAL
;

592 
tmp
 = 
NULL
;

595 i(
fh
 !
NULL
)

596 *
fh
 = 
NULL
;

598 i(
ags
 == 0)

599 
ags
 = 
DB_OSO_RDONLY
 | 
DB_OSO_SEQ
;

601 i((
t
 = 
	`__log_me
(
db
, 
numb
, &
ame
, &
fhp
, 
ags
)) != 0) {

602 
	`__os_
(
dbv
, 
ame
);

603  (
t
);

606 
hdrsize
 = 
HDR_NORMAL_SZ
;

607 
is_hmac
 = 0;

608 
csize
 = (
LOGP
);

609 i(
	`CRYPTO_ON
(
dbv
)) {

610 
hdrsize
 = 
HDR_CRYPTO_SZ
;

611 
csize
 = (
LOGP
);

612 
csize
 +
db_ch
->
	`adj_size
(recsize);

613 
is_hmac
 = 1;

615 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
csize
 + 
hdrsize
, &
tmp
)) != 0)

616 
r
;

618 
hdr
 = (
HDR
 *)
tmp
;

619 
rsi
 = (
LOGP
 *)(
tmp
 + 
hdrsize
);

625 i((
t
 = 
	`__os_ad
(
dbv
, 
fhp
, 
tmp
, 
csize
 + 
hdrsize
, &

)) != 0 ||

626 

 !
csize
 + 
hdrsize
 ||

627 (
hdr
->
n
 =0 && 
rsi
->
magic
 =0 &&si->
log_size
 == 0)) {

628 i(
t
 == 0)

629 
us
 = 
DB_LV_INCOMPLETE
;

635 
	`__db_r
(
dbv
, 
t
, "ignܚgog fe: %s", 
ame
);

636 
r
;

662 i(
	`CRYPTO_ON
(
dbv
)) {

668 i((
hdr
->
n
 - 
hdrsize
!(
LOGP
)) {

669 
	`__db_rx
(
dbv
, "logecord size mismatch");

670 
r
;

673 i((
t
 = 
	`__db_check_chksum
(
dbv
, 
hdr
, 
db_ch
,

674 &
hdr
->
chksum
[0], (
u_t8_t
 *)
rsi
,

675 
hdr
->
n
 - 
hdrsize
, 
is_hmac
)) != 0) {

676 
	`__db_rx
(
dbv
, "logecord checksum mismatch");

677 
r
;

679 i((
t
 = 
db_ch
->
	`dey
(
dbv
, db_ch->
da
,

680 &
hdr
->
iv
[0], (
u_t8_t
 *)
rsi
, hdr->
n
 - 
hdrsize
)) != 0)

681 
r
;

685 i(
rsi
->
magic
 !
DB_LOGMAGIC
) {

686 
	`__db_rx
(
dbv
,

688 
ame
, (
u_lg
)
rsi
->
magic
, (u_lg)
DB_LOGMAGIC
);

689 
t
 = 
EINVAL
;

690 
r
;

698 i(
rsi
->
vsi
 > 
DB_LOGVERSION
) {

700 
	`__db_rx
(
dbv
,

702 
ame
, (
u_lg
)
rsi
->
vsi
);

703 
t
 = 
EINVAL
;

704 
r
;

705 } i(
rsi
->
vsi
 < 
DB_LOGOLDVER
) {

706 
us
 = 
DB_LV_OLD_UNREADABLE
;

708 
	`__db_rx
(
dbv
,

710 
ame
, (
u_lg
)
rsi
->
vsi
);

715 
r
;

716 } i(
rsi
->
vsi
 < 
DB_LOGVERSION
)

717 
us
 = 
DB_LV_OLD_READABLE
;

724 i(!
	`CRYPTO_ON
(
dbv
&& ((
t
 = 
	`__db_check_chksum
(dbenv,

725 
hdr
, 
db_ch
, &hdr->
chksum
[0], (
u_t8_t
 *)
rsi
,

726 
hdr
->
n
 - 
hdrsize
, 
is_hmac
)) != 0)) {

727 
	`__db_rx
(
dbv
, "logecord checksum mismatch");

728 
r
;

737 i(
t_rsi
) {

738 

 = 
db
->
gfo
.
imy
;

739 

->
log_size
 = 
rsi
->log_size;

740 

->
rsi
.
vsi
 =ersist->version;

742 i(
vsip
 !
NULL
)

743 *
vsip
 = 
rsi
->
vsi
;

745 
r
: i(
ame
 !
NULL
)

746 
	`__os_
(
dbv
, 
ame
);

747 i(
t
 =0 && 
fh
 !
NULL
)

748 *
fh
 = 
fhp
;

751 ()
	`__os_ohd
(
dbv
, 
fhp
);

752 i(
tmp
 !
NULL
)

753 
	`__os_
(
dbv
, 
tmp
);

755 i(
u
 !
NULL
)

756 *
u
 = 
us
;

758  (
t
);

759 
	}
}

768 
	$__log_v_esh
(
dbv
)

769 
DB_ENV
 *
dbv
;

771 
DB_LOG
 *
db
;

772 
LOG
 *

;

773 
REGINFO
 *
gfo
;

774 
__ame
 *
p
;

775 
__db_fet
 *
fet
;

776 
t
, 
t_t
;

778 
db
 = 
dbv
->
lg_hd
;

779 
gfo
 = &
db
->reginfo;

780 

 = 
gfo
->
imy
;

781 
t
 = 0;

788 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
) &&

789 (
t_t
 = 
	`__log_ush
(
dbv
, 
NULL
)!0 && 
t
 == 0)

790 
t
 = 
t_t
;

793 i((
t_t
 = 
	`__dbg_o_fes
(
dbv
, 0)!0 && 
t
 == 0)

794 
t
 = 
t_t
;

802 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_fi
);

803 
	`SH_TAILQ_FOREACH
(
p
, &

->
fq
, 
q
, 
__ame
)

804 i(
	`F_ISSET
(
p
, 
DB_FNAME_NOTLOGGED
) &&

805 (
t_t
 = 
	`__dbg_o_id_t
(

806 
dbv
, 
p
, 
DBREG_CLOSE
, 1)) != 0)

807 
t
 = 
t_t
;

808 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_fi
);

815 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

817 i((
t_t
 =

818 
	`__mux_
(
dbv
, &

->
mtx_ush
)!0 && 
t
 == 0)

819 
t
 = 
t_t
;

822 
	`__v_loc_
(
gfo
, 
	`R_ADDR
egfo, 

->
bufr_off
));

825 i(

->
_fid_ack
 !
INVALID_ROFF
)

826 
	`__v_loc_
(
gfo
,

827 
	`R_ADDR
(
gfo
, 

->
_fid_ack
));

830 (
fet
 = 
	`SH_TAILQ_FIRST
(&

->
logfes
,

831 
__db_fet
)!
NULL
) {

832 
	`SH_TAILQ_REMOVE
(&

->
logfes
, 
fet
, 
lks
,

833 
__db_fet
);

834 
	`__v_loc_
(
gfo
, 
fet
);

837 (
fet
 = 
	`SH_TAILQ_FIRST
(&

->
_logfes
,

838 
__db_fet
)!
NULL
) {

839 
	`SH_TAILQ_REMOVE
(&

->
_logfes
, 
fet
, 
lks
,

840 
__db_fet
);

841 
	`__v_loc_
(
gfo
, 
fet
);

845 i(

->
bulk_buf
 !
INVALID_ROFF
) {

846 
	`__v_loc_
(
gfo
,

847 
	`R_ADDR
(
gfo
, 

->
bulk_buf
));

848 

->
bulk_buf
 = 
INVALID_ROFF
;

853 i((
t_t
 = 
	`__mux_
(
dbv
, &
db
->
mtx_dbg
)!0 && 
t
 == 0)

854 
t
 = 
t_t
;

857 i((
t_t
 = 
	`__v_gi_dach
(
dbv
, 
gfo
, 0)!0 && 
t
 == 0)

858 
t
 = 
t_t
;

861 i(
db
->
lfhp
 !
NULL
) {

862 i((
t_t
 =

863 
	`__os_ohd
(
dbv
, 
db
->
lfhp
)!0 && 
t
 == 0)

864 
t
 = 
t_t
;

865 
db
->
lfhp
 = 
NULL
;

867 i(
db
->
dby
 !
NULL
)

868 
	`__os_
(
dbv
, 
db
->
dby
);

870 
	`__os_
(
dbv
, 
db
);

872 
dbv
->
lg_hd
 = 
NULL
;

873  (
t
);

874 
	}
}

883 
	$__log_g_ched_ckp_l
(
dbv
, 
ckp_lp
)

884 
DB_ENV
 *
dbv
;

885 
DB_LSN
 *
ckp_lp
;

887 
DB_LOG
 *
db
;

888 
LOG
 *

;

890 
db
 = 
dbv
->
lg_hd
;

891 

 = (
LOG
 *)
db
->
gfo
.
imy
;

893 
	`LOG_SYSTEM_LOCK
(
dbv
);

894 *
ckp_lp
 = 

->
ched_ckp_l
;

895 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

898 
	}
}

906 
u_t32_t


907 
	$__log_gi_mux_cou
(
dbv
)

908 
DB_ENV
 *
dbv
;

915  (
dbv
->
tx_max
 + 5);

916 
	}
}

926 
size_t


927 
	$__log_gi_size
(
dbv
)

928 
DB_ENV
 *
dbv
;

930 
size_t
 
s
;

932 
s
 = 
dbv
->
lg_gimax
 + dbv->
lg_bsize
;

938 i(
	`IS_ENV_REPLICATED
(
dbv
))

939 
s
 +
MEGABYTE
;

941  (
s
);

942 
	}
}

955 
	$__log_vun
(
dbv
, 
l
, 
ck
, 
un
)

956 
DB_ENV
 *
dbv
;

957 
DB_LSN
 *
l
, *
ck
, *
un
;

959 
DBT
 
log_dbt
;

960 
DB_LOG
 *
db
;

961 
DB_LOGC
 *
logc
;

962 
LOG
 *

;

963 
u_t32_t
 
bys
, 
n
;

964 
t
, 
t_t
;

967 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

968  (
t
);

969 
	`memt
(&
log_dbt
, 0, (log_dbt));

970 
t
 = 
	`__logc_g
(
logc
, 
l
, &
log_dbt
, 
DB_SET
);

971 
n
 = 
logc
->len;

972 i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

973 
t
 = 
t_t
;

974 i(
t
 != 0)

975  (
t
);

978 
db
 = 
dbv
->
lg_hd
;

979 

 = (
LOG
 *)
db
->
gfo
.
imy
;

981 
	`LOG_SYSTEM_LOCK
(
dbv
);

987 i((
t
 = 
	`__log_ush_t
(
db
, 
NULL
, 0)) != 0)

988 
r
;

990 

->
l
 = *lsn;

991 

->
n
 =en;

992 

->
l
.
offt
 +->
n
;

994 i(

->
db_log_memy
 &&

995 (
t
 = 
	`__log_mem_loff
(
db
, &

->
l
, &->
b_off
)) != 0)

996 
r
;

1002 
	`DB_ASSERT
(
dbv
, 

->
l
.
fe
 >
ck
->file);

1003 
bys
 = 0;

1004 i(
ck
->
fe
 !

->
l
.file) {

1005 
bys
 = 

->
log_size
 - 
ck
->
offt
;

1006 i(

->
l
.
fe
 > 
ck
->file + 1)

1007 
bys
 +

->
log_size
 *

1008 ((

->
l
.
fe
 - 
ck
->file) - 1);

1009 
bys
 +

->
l
.
offt
;

1011 
bys
 = 

->
l
.
offt
 - 
ck
->offset;

1013 

->

.
_wc_mbys
 +
bys
 / 
MEGABYTE
;

1014 

->

.
_wc_bys
 +
bys
 % 
MEGABYTE
;

1020 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_ush
);

1021 i(
	`LOG_COMPARE
(&

->
s_l
, 
l
) > 0)

1022 

->
s_l
 =p->
l
;

1023 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_ush
);

1026 
	`ZERO_LSN
(

->
f_l
);

1027 

->
w_off
 =p->
l
.
offt
;

1029 i(
un
 !
NULL
)

1030 *
un
 = 

->
l
;

1033 i((
t
 = 
	`__log_zo
(
dbv
, &

->
l
)) != 0)

1034 
r
;

1036 
r
: 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

1037  (
t
);

1038 
	}
}

1048 
	$__log_is_outded
(
dbv
, 
um
, 
outdedp
)

1049 
DB_ENV
 *
dbv
;

1050 
u_t32_t
 
um
;

1051 *
outdedp
;

1053 
DB_LOG
 *
db
;

1054 
LOG
 *

;

1055 *
me
;

1056 
t
;

1057 
u_t32_t
 
cfe
;

1058 
__db_fet
 *
fet
;

1060 
db
 = 
dbv
->
lg_hd
;

1067 i(
	`F_ISSET
(
dbv
, 
DB_ENV_LOG_INMEMORY
)) {

1068 
	`LOG_SYSTEM_LOCK
(
dbv
);

1069 

 = (
LOG
 *)
db
->
gfo
.
imy
;

1070 
fet
 = 
	`SH_TAILQ_FIRST
(&

->
logfes
, 
__db_fet
);

1071 *
outdedp
 = 
fet
 =
NULL
 ? 0 : (
um
 < fet->
fe
);

1072 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

1076 *
outdedp
 = 0;

1077 i((
t
 = 
	`__log_me
(
db
, 
um
, &
me
, 
NULL
, 0)) != 0)

1078  (
t
);

1081 i(
	`__os_exis
(
dbv
, 
me
, 
NULL
) == 0)

1082 
out
;

1089 
	`LOG_SYSTEM_LOCK
(
dbv
);

1090 

 = (
LOG
 *)
db
->
gfo
.
imy
;

1091 
cfe
 = 

->
l
.
fe
;

1092 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

1094 i(
cfe
 > 
um
)

1095 *
outdedp
 = 1;

1096 
out
: 
	`__os_
(
dbv
, 
me
);

1097  (
t
);

1098 
	}
}

1107 
	$__log_zo
(
dbv
, 
om_l
)

1108 
DB_ENV
 *
dbv
;

1109 
DB_LSN
 *
om_l
;

1111 
DB_FH
 *
fhp
;

1112 
DB_LOG
 *
db
;

1113 
LOG
 *

;

1114 
__db_fet
 *
fet
, *
xtt
;

1115 
size_t
 
nbys
, 
n
, 
nw
;

1116 
u_t32_t
 

, 
mbys
, 
bys
;

1117 
u_t8_t
 
buf
[4096];

1118 
t
;

1119 *
ame
;

1121 
db
 = 
dbv
->
lg_hd
;

1122 

 = (
LOG
 *)
db
->
gfo
.
imy
;

1123 
	`DB_ASSERT
(
dbv
, 
	`LOG_COMPARE
(
om_l
, &

->
l
) <= 0);

1124 i(
	`LOG_COMPARE
(
om_l
, &

->
l
) > 0) {

1125 
	`__db_rx
(
dbv
,

1130 i(

->
db_log_memy
) {

1134 
fet
 = 
	`SH_TAILQ_FIRST
(&

->
logfes
, 
__db_fet
);

1135 
fet
 !
NULL
; fe
xtt
) {

1136 
xtt
 = 
	`SH_TAILQ_NEXT
(
fet
,

1137 
lks
, 
__db_fet
);

1138 i(
fet
->
fe
 > 
om_l
->file) {

1139 
	`SH_TAILQ_REMOVE
(&

->
logfes
,

1140 
fet
, 
lks
, 
__db_fet
);

1141 
	`SH_TAILQ_INSERT_HEAD
(&

->
_logfes
,

1142 
fet
, 
lks
, 
__db_fet
);

1150 i(
db
->
lfhp
 !
NULL
) {

1151 ()
	`__os_ohd
(
dbv
, 
db
->
lfhp
);

1152 
db
->
lfhp
 = 
NULL
;

1156 

 = 
om_l
->
fe
 + 1;; fn++) {

1157 i(
	`__log_me
(
db
, 

, &
ame
, &
fhp
, 
DB_OSO_RDONLY
) != 0) {

1158 
	`__os_
(
dbv
, 
ame
);

1161 ()
	`__os_ohd
(
dbv
, 
fhp
);

1162 ()
	`time
(&

->
timeamp
);

1163 
t
 = 
	`__os_uƚk
(
dbv
, 
ame
);

1164 
	`__os_
(
dbv
, 
ame
);

1165 i(
t
 != 0)

1166  (
t
);

1170 i((
t
 =

1171 
	`__log_me
(
db
, 
om_l
->
fe
, &
ame
, &db->
lfhp
, 0)) != 0)

1172  (
t
);

1173 
	`__os_
(
dbv
, 
ame
);

1174 i((
t
 = 
	`__os_iofo
(
dbv
,

1175 
NULL
, 
db
->
lfhp
, &
mbys
, &
bys
, NULL)) != 0)

1176 
r
;

1177 
	`DB_ASSERT
(
dbv
, (
mbys
 * 
MEGABYTE
 + 
bys
>
om_l
->
offt
);

1178 
n
 = (
mbys
 * 
MEGABYTE
 + 
bys
- 
om_l
->
offt
;

1180 
	`memt
(
buf
, 0, (buf));

1183 i((
t
 = 
	`__os_ek
(
dbv
, 
db
->
lfhp
, 0, 0, 
om_l
->
offt
)) != 0)

1184 
r
;

1186 
n
 > 0) {

1187 
nbys
 = 
n
 > (
buf
) ? (buf) :en;

1188 i((
t
 =

1189 
	`__os_wre
(
dbv
, 
db
->
lfhp
, 
buf
, 
nbys
, &
nw
)) != 0)

1190 
r
;

1191 
n
 -
nbys
;

1194 
r
: ()
	`__os_ohd
(
dbv
, 
db
->
lfhp
);

1195 
db
->
lfhp
 = 
NULL
;

1197  (
t
);

1198 
	}
}

1207 
	$__log_mem_loff
(
db
, 
lp
, 
off
)

1208 
DB_LOG
 *
db
;

1209 
DB_LSN
 *
lp
;

1210 
size_t
 *
off
;

1212 
LOG
 *

;

1213 
__db_fet
 *
fet
;

1215 

 = (
LOG
 *)
db
->
gfo
.
imy
;

1217 
	`SH_TAILQ_FOREACH
(
fet
, &

->
logfes
, 
lks
, 
__db_fet
)

1218 i(
fet
->
fe
 =
lp
->file) {

1219 *
off
 =

1220 (
fet
->
b_off
 + 
lp
->
offt
% 

->
bufr_size
;

1224  (
DB_NOTFOUND
);

1225 
	}
}

1235 
	$__log_mem_wfe
(
db
, 
fe
)

1236 
DB_LOG
 *
db
;

1237 
u_t32_t
 
fe
;

1239 
HDR
 
hdr
;

1240 
LOG
 *

;

1241 
__db_fet
 *
fet
;

1242 
t
;

1243 #ifde
DIAGNOSTIC


1244 
__db_fet
 *
f
, *
ϡ
;

1247 

 = (
LOG
 *)
db
->
gfo
.
imy
;

1252 
fet
 = 
	`SH_TAILQ_FIRST
(&

->
logfes
, 
__db_fet
);

1253 i(
fet
 !
NULL
 &&

1254 
	`RINGBUF_LEN
(

, 
fet
->
b_off
,p->b_off) <=

1255 (
HDR
+ (
LOGP
)) {

1256 
fet
->
fe
 = file;

1257 
fet
->
b_off
 = 

->b_off;

1266 i(
fe
 > 1) {

1267 
	`memt
(&
hdr
, 0, (
HDR
));

1268 
	`__log_mem_cy
(
db
, 

->
b_off
, &
hdr
, (
HDR
));

1269 

->
b_off
 = (->b_of+ (
HDR
)%p->
bufr_size
;

1272 
fet
 = 
	`SH_TAILQ_FIRST
(&

->
_logfes
, 
__db_fet
);

1273 i(
fet
 =
NULL
) {

1274 i((
t
 = 
	`__v_loc
(&
db
->
gfo
,

1275 (
__db_fet
), &
fet
)) != 0)

1276  (
t
);

1277 
	`memt
(
fet
, 0, (*filestart));

1279 
	`SH_TAILQ_REMOVE
(&

->
_logfes
, 
fet
,

1280 
lks
, 
__db_fet
);

1282 
fet
->
fe
 = file;

1283 
fet
->
b_off
 = 

->b_off;

1285 #ifde
DIAGNOSTIC


1286 
f
 = 
	`SH_TAILQ_FIRST
(&

->
logfes
, 
__db_fet
);

1287 
ϡ
 = 
	`SH_TAILQ_LAST
(&(

)->
logfes
, 
lks
, 
__db_fet
);

1290 
	`DB_ASSERT
(
db
->
dbv
, !
f
 || f =
ϡ
 ||

1291 
	`RINGBUF_LEN
(

, 
f
->
b_off
,p->b_off) ==

1292 
	`RINGBUF_LEN
(

, 
f
->
b_off
, 
ϡ
->b_off) +

1293 
	`RINGBUF_LEN
(

, 
ϡ
->
b_off
,p->b_off));

1296 
	`SH_TAILQ_INSERT_TAIL
(&

->
logfes
, 
fet
, 
lks
);

1298 
	}
}

1309 
	$__log_mem_chka
(
db
, 
n
)

1310 
DB_LOG
 *
db
;

1311 
size_t
 
n
;

1313 
DB_ENV
 *
dbv
;

1314 
LOG
 *

;

1315 
DB_LSN
 
aive_l
, 
d_aive_l
;

1316 
__db_fet
 *
fet
;

1317 
t
;

1319 
dbv
 = 
db
->dbenv;

1320 

 = 
db
->
gfo
.
imy
;

1322 
	`DB_ASSERT
(
dbv
, 

->
db_log_memy
);

1328 
n
 +(
HDR
);

1336 
	`TXN_ON
(
dbv
) &&

1337 
	`RINGBUF_LEN
(

,p->
b_off
,p->
a_off
<
n
) {

1338 
d_aive_l
 = 

->
aive_l
;

1339 
aive_l
 = 

->
l
;

1345 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

1346 i((
t
 = 
	`__txn_gaive
(
dbv
, &
aive_l
)) != 0)

1347  (
t
);

1348 
	`LOG_SYSTEM_LOCK
(
dbv
);

1349 
aive_l
.
offt
 = 0;

1352 i(
	`LOG_COMPARE
(&
aive_l
, &
d_aive_l
) == 0) {

1353 
	`__db_rx
(
dbv
,

1355  (
DB_LOG_BUFFER_FULL
);

1359 i(
	`LOG_COMPARE
(&
aive_l
, &

->active_lsn) > 0) {

1360 

->
aive_l
 =ctive_lsn;

1361 ()
	`__log_mem_loff
(
db
, &
aive_l
,

1362 &

->
a_off
);

1371 
fet
 = 
	`SH_TAILQ_FIRST
(&

->
logfes
, 
__db_fet
);

1372 i(
fet
 !
NULL
 &&

1373 
	`RINGBUF_LEN
(

,p->
b_off
, 
fet
->b_off<
n
) {

1374 
	`SH_TAILQ_REMOVE
(&

->
logfes
, 
fet
,

1375 
lks
, 
__db_fet
);

1376 
	`SH_TAILQ_INSERT_HEAD
(&

->
_logfes
, 
fet
,

1377 
lks
, 
__db_fet
);

1378 

->
f_l
.
fe
 = 
fet
->file + 1;

1382 
	}
}

1392 
	$__log_mem_cyout
(
db
, 
offt
, 
buf
, 
size
)

1393 
DB_LOG
 *
db
;

1394 
size_t
 
offt
;

1395 *
buf
;

1396 
size_t
 
size
;

1398 
LOG
 *

;

1399 
size_t
 
nbys
;

1401 

 = (
LOG
 *)
db
->
gfo
.
imy
;

1402 
nbys
 = (
offt
 + 
size
 < 

->
bufr_size
) ?

1403 
size
 : 

->
bufr_size
 - 
offt
;

1404 
	`memy
(
buf
, 
db
->
bu
 + 
offt
, 
nbys
);

1405 i(
nbys
 < 
size
)

1406 
	`memy
((
u_t8_t
 *)
buf
 + 
nbys
, 
db
->
bu
, 
size
 -bytes);

1407 
	}
}

1417 
	$__log_mem_cy
(
db
, 
offt
, 
buf
, 
size
)

1418 
DB_LOG
 *
db
;

1419 
size_t
 
offt
;

1420 *
buf
;

1421 
size_t
 
size
;

1423 
LOG
 *

;

1424 
size_t
 
nbys
;

1426 

 = (
LOG
 *)
db
->
gfo
.
imy
;

1427 
nbys
 = (
offt
 + 
size
 < 

->
bufr_size
) ?

1428 
size
 : 

->
bufr_size
 - 
offt
;

1429 
	`memy
(
db
->
bu
 + 
offt
, 
buf
, 
nbys
);

1430 i(
nbys
 < 
size
)

1431 
	`memy
(
db
->
bu
, (
u_t8_t
 *)
buf
 + 
nbys
, 
size
 -bytes);

1432 
	}
}

1444 
	$__log_t_vsi
(
dbv
, 
wv
)

1445 
DB_ENV
 *
dbv
;

1446 
u_t32_t
 
wv
;

1448 
DB_LOG
 *
db
;

1449 
LOG
 *

;

1451 
db
 = 
dbv
->
lg_hd
;

1452 

 = (
LOG
 *)
db
->
gfo
.
imy
;

1456 

->
rsi
.
vsi
 = 
wv
;

1457 
	}
}

1472 
	$__log_g_dvsi
(
dbv
, 
v
)

1473 
DB_ENV
 *
dbv
;

1474 
u_t32_t
 *
v
;

1476 
DBT
 
c
;

1477 
DB_LOG
 *
db
;

1478 
DB_LOGC
 *
logc
;

1479 
DB_LSN
 
l
;

1480 
LOG
 *

;

1481 
u_t32_t
 
fum
, 
um
, 
ϡv
, 
dv
;

1482 
t
, 
t_t
;

1484 
db
 = 
dbv
->
lg_hd
;

1485 

 = 
db
->
gfo
.
imy
;

1487 
logc
 = 
NULL
;

1488 
t
 = 0;

1489 
dv
 = 
DB_LOGVERSION
;

1493 i(

->
db_log_memy
) {

1494 *
v
 = 
dv
;

1497 
	`memt
(&
c
, 0, (rec));

1498 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

1499 
r
;

1503 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_FIRST
)) != 0) {

1508 i(
t
 =
DB_NOTFOUND
)

1509 
t
 = 0;

1510 
r
;

1512 
fum
 = 
l
.
fe
;

1513 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_LAST
)) != 0)

1514 
r
;

1515 i((
t
 = 
	`__log_vid
(
db
, 
fum
, 0, 
NULL
, 0,

1516 
NULL
, &
dv
)) != 0)

1517 
r
;

1522 i(
fum
 =
l
.
fe
)

1523 
r
;

1529 i((
t
 = 
	`__log_vid
(
db
, 
l
.
fe
, 0, 
NULL
, 0,

1530 
NULL
, &
ϡv
)) != 0)

1531 
r
;

1537 i(
dv
 !
ϡv
) {

1538 
um
 = 
l
.
fe
 - 1; fnum >
fum
; fnum--) {

1539 i((
t
 = 
	`__log_vid
(
db
, 
um
, 0, 
NULL
, 0,

1540 
NULL
, &
dv
)) != 0)

1541 
r
;

1542 i(
dv
 !
ϡv
)

1546 
r
: i(
logc
 !
NULL
 && ((
t_t
 = 
	`__logc_o
ogc)!0&& 
t
 == 0)

1547 
t
 = 
t_t
;

1548 i(
t
 =0 && 
v
 !
NULL
)

1549 *
v
 = 
dv
;

1550  (
t
);

1551 
	}
}

	@../log/log_archive.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/log.h
"

14 
	~"dbc/qam.h
"

15 
	~"dbc/txn.h
"

17 
__abame
 
__P
((
DB_ENV
 *, *, *, **));

18 
__bud_da
 
__P
((
DB_ENV
 *, *, ***));

19 
__cmpfunc
 
__P
((const *, const *));

20 
__log_chive
 
__P
((
DB_ENV
 *, **[], 
u_t32_t
));

21 
__urmem
 
__P
((
DB_ENV
 *, ***));

30 
	$__log_chive_
(
dbv
, 
lip
, 
ags
)

31 
DB_ENV
 *
dbv
;

32 ***
lip
;

33 
u_t32_t
 
ags
;

35 
DB_THREAD_INFO
 *

;

36 
t
;

38 
	`PANIC_CHECK
(
dbv
);

39 
	`ENV_REQUIRES_CONFIG
(
dbv
,

40 
dbv
->
lg_hd
, "DB_ENV->log_chive", 
DB_INIT_LOG
);

42 
	#OKFLAGS
 (
DB_ARCH_ABS
 | 
DB_ARCH_DATA
 | 
DB_ARCH_LOG
 | 
DB_ARCH_REMOVE
)

	)

43 i(
ags
 != 0) {

44 i((
t
 = 
	`__db_fchk
(

45 
dbv
, "DB_ENV->log_chive", 
ags
, 
OKFLAGS
)) != 0)

46  (
t
);

47 i((
t
 = 
	`__db_fcchk
(
dbv
, "DB_ENV->log_archive",

48 
ags
, 
DB_ARCH_DATA
, 
DB_ARCH_LOG
)) != 0)

49  (
t
);

50 i((
t
 = 
	`__db_fcchk
(
dbv
, "DB_ENV->log_archive",

51 
ags
, 
DB_ARCH_REMOVE
,

52 
DB_ARCH_ABS
 | 
DB_ARCH_DATA
 | 
DB_ARCH_LOG
)) != 0)

53  (
t
);

56 
	`ENV_ENTER
(
dbv
, 

);

57 
	`REPLICATION_WRAP
(
dbv
, (
	`__log_chive
(dbv, 
lip
, 
ags
)), 
t
);

58 
	`ENV_LEAVE
(
dbv
, 

);

59  (
t
);

60 
	}
}

67 
	$__log_chive
(
dbv
, 
lip
, 
ags
)

68 
DB_ENV
 *
dbv
;

69 ***
lip
;

70 
u_t32_t
 
ags
;

72 
DBT
 
c
;

73 
DB_LOG
 *
db
;

74 
LOG
 *

;

75 
DB_LOGC
 *
logc
;

76 
DB_LSN
 
ab_l
;

77 
u_t
 
y_size
, 
n
;

78 
u_t32_t
 
um
;

79 
t
, 
t_t
;

80 **
y
, **
yp
, *
me
, *
p
, *
ef
;

81 #ifde
HAVE_GETCWD


82 
th
[
DB_MAXPATHLEN
];

85 
db
 = 
dbv
->
lg_hd
;

86 

 = (
LOG
 *)
db
->
gfo
.
imy
;

87 
y
 = 
NULL
;

88 
me
 = 
NULL
;

89 
t
 = 0;

90 
	`COMPQUIET
(
um
, 0);

92 i(
ags
 !
DB_ARCH_REMOVE
)

93 *
lip
 = 
NULL
;

96 i(

->
db_log_memy
) {

97 
	`LF_CLR
(~
DB_ARCH_DATA
);

98 i(
ags
 == 0)

106 i(!
	`LF_ISSET
(
DB_ARCH_DATA
) &&

107 !
	`LF_ISSET
(
DB_ARCH_LOG
&& 
	`__p_nrchive
(
dbv
))

114 #ifde
HAVE_GETCWD


115 i(
	`LF_ISSET
(
DB_ARCH_ABS
)) {

124 
	`__os_t_o
(0);

125 i(
	`gcwd
(
th
, թh)=
NULL
) {

126 
t
 = 
	`__os_g_o
();

127 
	`__db_r
(
dbv
,

128 
t
, "nobsoluteath forhe current directory");

129  (
t
);

131 
ef
 = 
th
;

134 
ef
 = 
NULL
;

136 
	`LF_CLR
(
DB_ARCH_ABS
);

137 
ags
) {

138 
DB_ARCH_DATA
:

139 
t
 = 
	`__bud_da
(
dbv
, 
ef
, 
lip
);

140 
r
;

141 
DB_ARCH_LOG
:

142 
	`memt
(&
c
, 0, (rec));

143 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

144 
r
;

145 #ifde
UMRW


146 
	`ZERO_LSN
(
ab_l
);

148 
t
 = 
	`__logc_g
(
logc
, &
ab_l
, &
c
, 
DB_LAST
);

149 i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

150 
t
 = 
t_t
;

151 i(
t
 != 0)

152 
r
;

153 
um
 = 
ab_l
.
fe
;

155 
DB_ARCH_REMOVE
:

156 
	`__log_autemove
(
dbv
);

157 
r
;

160 
t
 = 
	`__log_g_ab_l
(
dbv
, &
ab_l
);

166 i(
t
 != 0) {

167 i(
t
 =
DB_NOTFOUND
)

168 
t
 = 0;

169 
r
;

172 
um
 = 
ab_l
.
fe
 - 1;

175 
t
 = 
	`__db_unknown_th
(
dbv
, "__log_archive");

176 
r
;

179 
	#LIST_INCREMENT
 64

	)

181 
y_size
 = 64;

182 i((
t
 = 
	`__os_mloc
(
dbv
,

183 (** 
y_size
, &
y
)) != 0)

184 
r
;

185 
y
[0] = 
NULL
;

188 
n
 = 0; 
um
 > 0; --fnum) {

189 i((
t
 = 
	`__log_me
(
db
, 
um
, &
me
, 
NULL
, 0)) != 0)

190 
r
;

191 i(
	`__os_exis
(
dbv
, 
me
, 
NULL
) != 0) {

192 i(
	`LF_ISSET
(
DB_ARCH_LOG
&& 
um
 =
ab_l
.
fe
)

194 
	`__os_
(
dbv
, 
me
);

195 
me
 = 
NULL
;

199 i(
n
 >
y_size
 - 2) {

200 
y_size
 +
LIST_INCREMENT
;

201 i((
t
 = 
	`__os_loc
(
dbv
,

202 (** 
y_size
, &
y
)) != 0)

203 
r
;

206 i(
ef
 !
NULL
) {

207 i((
t
 =

208 
	`__abame
(
dbv
, 
ef
, 
me
, &
y
[
n
])) != 0)

209 
r
;

210 
	`__os_
(
dbv
, 
me
);

211 } i((
p
 = 
	`__db_h
(
me
)!
NULL
) {

212 i((
t
 = 
	`__os_rdup
(
dbv
, 
p
 + 1, &
y
[
n
])) != 0)

213 
r
;

214 
	`__os_
(
dbv
, 
me
);

216 
y
[
n
] = 
me
;

218 
me
 = 
NULL
;

219 
y
[++
n
] = 
NULL
;

223 i(
n
 == 0)

224 
r
;

227 
	`qst
(
y
, (
size_t
)
n
, (*), 
__cmpfunc
);

230 i((
t
 = 
	`__urmem
(
dbv
, &
y
)) != 0)

231 
r
;

233 i(
lip
 !
NULL
)

234 *
lip
 = 
y
;

237 
r
: i(
y
 !
NULL
) {

238 
yp
 = 
y
; *y!
NULL
; ++arrayp)

239 
	`__os_
(
dbv
, *
yp
);

240 
	`__os_
(
dbv
, 
y
);

242 i(
me
 !
NULL
)

243 
	`__os_
(
dbv
, 
me
);

246  (
t
);

247 
	}
}

256 
	$__log_g_ab_l
(
dbv
, 
ab_l
)

257 
DB_ENV
 *
dbv
;

258 
DB_LSN
 *
ab_l
;

260 
DB_LOGC
 *
logc
;

261 
DBT
 
c
;

262 
LOG
 *

;

263 
__txn_ckp_gs
 *
ckp_gs
;

264 
t
, 
t_t
;

266 

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

268 
t
 = 0;

269 
	`memt
(&
c
, 0, (rec));

270 i(!
	`TXN_ON
(
dbv
)) {

271 i((
t
 = 
	`__log_g_ched_ckp_l
(
dbv
, 
ab_l
)) != 0)

272 
r
;

279 i(
	`IS_ZERO_LSN
(*
ab_l
&& (
t
 =

280 
	`__txn_fdϡckp
(
dbv
, 
ab_l
, 
NULL
)) != 0)

281 
r
;

286 i(
	`IS_ZERO_LSN
(*
ab_l
)) {

287 
t
 = 
DB_NOTFOUND
;

288 
r
;

290 } i((
t
 = 
	`__txn_gckp
(
dbv
, 
ab_l
)) != 0)

291 
r
;

292 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

293 
r
;

298 (
t
 = 
	`__logc_g
(
logc
, 
ab_l
, &
c
, 
DB_SET
)) == 0 &&

299 (
t
 = 
	`__txn_ckp_ad
(
dbv
, 
c
.
da
, &
ckp_gs
)) == 0) {

300 i(
ab_l
->
fe
 < 

->
s_l
.file ||

301 (
ab_l
->
fe
 =

->
s_l
.file &&

302 
ab_l
->
offt
 < 

->
s_l
.offset)) {

303 *
ab_l
 = 
ckp_gs
->
ckp_l
;

304 
	`__os_
(
dbv
, 
ckp_gs
);

307 *
ab_l
 = 
ckp_gs
->
ϡ_ckp
;

308 
	`__os_
(
dbv
, 
ckp_gs
);

310 i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

311 
t
 = 
t_t
;

312 
r
:

313  (
t
);

314 
	}
}

323 
	$__log_autemove
(
dbv
)

324 
DB_ENV
 *
dbv
;

326 
t
;

327 **
beg
, **
li
;

335 i((
t
 = 
	`__log_chive
(
dbv
, &
li
, 
DB_ARCH_ABS
)) != 0) {

336 i(
t
 !
DB_NOTFOUND
)

337 
	`__db_r
(
dbv
, 
t
, "log fileuto-remove");

345 i(
li
 !
NULL
) {

346 
beg
 = 
li
; *li !
NULL
; ++list)

347 ()
	`__os_uƚk
(
dbv
, *
li
);

348 
	`__os_u
(
dbv
, 
beg
);

350 
	}
}

357 
	$__bud_da
(
dbv
, 
ef
, 
lip
)

358 
DB_ENV
 *
dbv
;

359 *
ef
, ***
lip
;

361 
DBT
 
c
;

362 
DB_LOGC
 *
logc
;

363 
DB_LSN
 
l
;

364 
__dbg_gi_gs
 *
gp
;

365 
u_t
 
y_size
, 
ϡ
, 
n
, 
nxt
;

366 
u_t32_t
 
y
;

367 
t
, 
t_t
;

368 **
y
, **
yp
, **
li
, **

, *
p
, *
_me
;

371 
y_size
 = 64;

372 i((
t
 = 
	`__os_mloc
(
dbv
,

373 (** 
y_size
, &
y
)) != 0)

374  (
t
);

375 
y
[0] = 
NULL
;

377 
	`memt
(&
c
, 0, (rec));

378 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

379  (
t
);

380 
n
 = 0; (
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_PREV
)) == 0;) {

381 i(
c
.
size
 < (
y
)) {

382 
t
 = 
EINVAL
;

383 
	`__db_rx
(
dbv
, "DB_ENV->log_archive: badogecord");

387 
	`memy
(&
y
, 
c
.
da
, (rectype));

388 i(
y
 !
DB___dbg_gi
)

390 i((
t
 =

391 
	`__dbg_gi_ad
(
dbv
, 
c
.
da
, &
gp
)) != 0) {

392 
t
 = 
EINVAL
;

393 
	`__db_rx
(
dbv
,

398 i(
n
 >
y_size
 - 2) {

399 
y_size
 +
LIST_INCREMENT
;

400 i((
t
 = 
	`__os_loc
(
dbv
,

401 (** 
y_size
, &
y
)) != 0)

402 
_ctue
;

405 i((
t
 = 
	`__os_rdup
(
dbv
,

406 
gp
->
me
.
da
, &
y
[
n
++])) != 0)

407 
_ctue
;

408 
y
[
n
] = 
NULL
;

410 i(
gp
->
y
 =
DB_QUEUE
) {

411 i((
t
 = 
	`__qam_ex_mes
(
dbv
,

412 
gp
->
me
.
da
, &
li
)) != 0)

413 
q_r
;

414 

 = 
li
;

415 

 !
NULL
 && *lp != NULL;p++) {

416 i(
n
 >
y_size
 - 2) {

417 
y_size
 +
LIST_INCREMENT
;

418 i((
t
 = 
	`__os_loc
(
dbv
,

420 
y_size
, &
y
)) != 0)

421 
q_r
;

423 i((
t
 =

424 
	`__os_rdup
(
dbv
, *

, &
y
[
n
++])) != 0)

425 
q_r
;

426 
y
[
n
] = 
NULL
;

428 
q_r
: i(
li
 !
NULL
)

429 
	`__os_
(
dbv
, 
li
);

431 
_ctue
: 
	`__os_
(
dbv
, 
gp
);

432 i(
t
 != 0)

435 i(
t
 =
DB_NOTFOUND
)

436 
t
 = 0;

437 i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

438 
t
 = 
t_t
;

439 i(
t
 != 0)

440 
r1
;

443 i(
n
 == 0) {

444 
t
 = 0;

445 *
lip
 = 
NULL
;

446 
r1
;

450 
	`qst
(
y
, (
size_t
)
n
, (*), 
__cmpfunc
);

456 
ϡ
 = 
nxt
 = 0;x< 
n
;) {

462 i(
ϡ
 !
nxt
) {

463 
y
[
ϡ
] =ay[
nxt
];

464 
y
[
nxt
] = 
NULL
;

466 ++
nxt
;x< 
n
 &&

467 
	`rcmp
(
y
[
ϡ
],ay[
nxt
]) == 0; ++nxt) {

468 
	`__os_
(
dbv
, 
y
[
nxt
]);

469 
y
[
nxt
] = 
NULL
;

473 i((
t
 = 
	`__db_ame
(
dbv
,

474 
DB_APP_DATA
, 
y
[
ϡ
], 0, 
NULL
, &
_me
)) != 0)

475 
r2
;

478 i(
	`__os_exis
(
dbv
, 
_me
, 
NULL
) != 0) {

479 
	`__os_
(
dbv
, 
_me
);

480 
	`__os_
(
dbv
, 
y
[
ϡ
]);

481 
y
[
ϡ
] = 
NULL
;

486 
	`__os_
(
dbv
, 
y
[
ϡ
]);

487 
y
[
ϡ
] = 
NULL
;

488 i(
ef
 !
NULL
) {

489 
t
 = 
	`__abame
(
dbv
, 
ef
, 
_me
, &
y
[
ϡ
]);

490 
	`__os_
(
dbv
, 
_me
);

491 i(
t
 != 0)

492 
r2
;

493 } i((
p
 = 
	`__db_h
(
_me
)!
NULL
) {

494 
t
 = 
	`__os_rdup
(
dbv
, 
p
 + 1, &
y
[
ϡ
]);

495 
	`__os_
(
dbv
, 
_me
);

496 i(
t
 != 0)

497 
r2
;

499 
y
[
ϡ
] = 
_me
;

500 ++
ϡ
;

504 
y
[
ϡ
] = 
NULL
;

507 i((
t
 = 
	`__urmem
(
dbv
, &
y
)) != 0)

508 
r1
;

510 *
lip
 = 
y
;

513 
r2
:

518 i(
y
 !
NULL
)

519 ; 
nxt
 < 
n
; ++nxt)

520 
	`__os_
(
dbv
, 
y
[
nxt
]);

523 
r1
: i(
y
 !
NULL
) {

524 
yp
 = 
y
; *y!
NULL
; ++arrayp)

525 
	`__os_
(
dbv
, *
yp
);

526 
	`__os_
(
dbv
, 
y
);

528  (
t
);

529 
	}
}

536 
	$__abame
(
dbv
, 
ef
, 
me
, 
wm
)

537 
DB_ENV
 *
dbv
;

538 *
ef
, *
me
, **
wm
;

540 
size_t
 
l_ef
, 
l_me
;

541 
ibh
, 
t
;

542 *
wme
;

544 
l_me
 = 
	`
(
me
);

545 
ibh
 = 
	`__os_abh
(
me
);

546 
l_ef
 = 
ibh
 ? 0 : 
	`
(
ef
);

549 i((
t
 = 
	`__os_mloc
(
dbv
,

550 
l_ef
 + 
l_me
 + 2, &
wme
)) != 0)

551  (
t
);

552 *
wm
 = 
wme
;

555 i(!
ibh
) {

556 
	`memy
(
wme
, 
ef
, 
l_ef
);

557 i(
	`rchr
(
PATH_SEPARATOR
, 
wme
[
l_ef
 - 1]=
NULL
)

558 
wme
[
l_ef
++] = 
PATH_SEPARATOR
[0];

560 
	`memy
(
wme
 + 
l_ef
, 
me
, 
l_me
 + 1);

563 
	}
}

571 
	$__urmem
(
dbv
, 
lip
)

572 
DB_ENV
 *
dbv
;

573 ***
lip
;

575 
size_t
 
n
;

576 
t
;

577 **
y
, **
yp
, **
ig
, *

;

580 
n
 = 0, 
ig
 = *
lip
; *ig !
NULL
; ++orig)

581 
n
 +(*+ 
	`
(*
ig
) + 1;

582 
n
 += (*);

585 i((
t
 = 
	`__os_umloc
(
dbv
, 
n
, &
y
)) != 0)

586  (
t
);

588 

 = (*)(
y
 + (
ig
 - *
lip
) + 1);

591 
ig
 = *
lip
, 
yp
 = 
y
; *ig !
NULL
; ++orig, ++arrayp) {

592 
n
 = 
	`
(*
ig
);

593 
	`memy
(

, *
ig
, 
n
 + 1);

594 *
yp
 = 

;

595 

 +
n
 + 1;

597 
	`__os_
(
dbv
, *
ig
);

601 *
yp
 = 
NULL
;

603 
	`__os_
(
dbv
, *
lip
);

604 *
lip
 = 
y
;

607 
	}
}

610 
	$__cmpfunc
(
p1
, 
p2
)

611 cڡ *
p1
, *
p2
;

613  (
	`rcmp
(*((* cڡ *)
p1
), *((* cڡ *)
p2
)));

614 
	}
}

	@../log/log_compare.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

21 
	$log_com
(
l0
, 
l1
)

22 cڡ 
DB_LSN
 *
l0
, *
l1
;

24  (
	`LOG_COMPARE
(
l0
, 
l1
));

25 
	}
}

34 
	$__log_check_ge_l
(
dbv
, 
dbp
, 
lp
)

35 
DB_ENV
 *
dbv
;

36 
DB
 *
dbp
;

37 
DB_LSN
 *
lp
;

39 
LOG
 *

;

40 
t
;

42 

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

43 
	`LOG_SYSTEM_LOCK
(
dbv
);

45 
t
 = 
	`LOG_COMPARE
(
lp
, &

->
l
);

47 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

49 i(
t
 < 0)

52 
	`__db_rx
(
dbv
,

54 
dbp
 =
NULL
 || dbp->
ame
 == NULL ? "unknown" : dbp->fname,

55 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

56 (
u_lg
)

->
l
.
fe
, (u_lgp->l.
offt
);

57 
	`__db_rx
(
dbv
, "%s",

59 
	`__db_rx
(
dbv
, "%s",

61 
	`__db_rx
(
dbv
, "%s",

63  (
EINVAL
);

64 
	}
}

	@../log/log_debug.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

16 
__log_tf_t
 
__P
((
DB_ENV
 *, 
DB_TXN
 *, cڡ *, 
va_li
));

26 #ifde
STDC_HEADERS


27 
	$__log_tf_pi
(
DB_ENV
 *
dbv
, 
DB_TXN
 *
txnid
, cڡ *
fmt
, ...)

29 
	$__log_tf_pi
(
dbv
, 
txnid
, 
fmt
, 
va_i
)

30 
DB_ENV
 *
dbv
;

31 
DB_TXN
 *
txnid
;

32 cڡ *
fmt
;

33 
va_d


36 
va_li
 

;

37 
t
;

39 #ifde
STDC_HEADERS


40 
	`va_t
(

, 
fmt
);

42 
	`va_t
(

);

44 
t
 = 
	`__log_tf_
(
dbv
, 
txnid
, 
fmt
, 

);

45 
	`va_d
(

);

47  (
t
);

48 
	}
}

62 
	$__log_tf_
(
dbv
, 
txnid
, 
fmt
, 

)

63 
DB_ENV
 *
dbv
;

64 
DB_TXN
 *
txnid
;

65 cڡ *
fmt
;

66 
va_li
 

;

68 
DB_THREAD_INFO
 *

;

69 
p_check
, 
t
, 
t_t
;

71 
	`PANIC_CHECK
(
dbv
);

72 
	`ENV_REQUIRES_CONFIG
(
dbv
,

73 
dbv
->
lg_hd
, "DB_ENV->log_tf", 
DB_INIT_LOG
);

75 
	`ENV_ENTER
(
dbv
, 

);

76 
p_check
 = 
	`IS_ENV_REPLICATED
(
dbv
) ? 1 : 0;

77 i(
p_check
 && (
t
 = 
	`__v_p_r
(
dbv
, 0)) != 0)

78  (
t
);

80 
t
 = 
	`__log_tf_t
(
dbv
, 
txnid
, 
fmt
, 

);

82 i(
p_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && (
t
) == 0)

83 
t
 = 
t_t
;

84 
	`va_d
(

);

85 
	`ENV_LEAVE
(
dbv
, 

);

87  (
t
);

88 
	}
}

98 #ifde
STDC_HEADERS


99 
	$__log_tf
(
DB_ENV
 *
dbv
, 
DB_TXN
 *
txnid
, cڡ *
fmt
, ...)

101 
	$__log_tf
(
dbv
, 
txnid
, 
fmt
, 
va_i
)

102 
DB_ENV
 *
dbv
;

103 
DB_TXN
 *
txnid
;

104 cڡ *
fmt
;

105 
va_d


108 
va_li
 

;

109 
t
;

111 #ifde
STDC_HEADERS


112 
	`va_t
(

, 
fmt
);

114 
	`va_t
(

);

116 
t
 = 
	`__log_tf_t
(
dbv
, 
txnid
, 
fmt
, 

);

117 
	`va_d
(

);

119  (
t
);

120 
	}
}

127 
	$__log_tf_t
(
dbv
, 
txnid
, 
fmt
, 

)

128 
DB_ENV
 *
dbv
;

129 
DB_TXN
 *
txnid
;

130 cڡ *
fmt
;

131 
va_li
 

;

133 
DBT
 
dbt
, 
msgdbt
;

134 
DB_LSN
 
l
;

135 
__logbuf
[2048];

137 i(!
	`DBENV_LOGGING
(
dbv
)) {

138 
	`__db_rx
(
dbv
, "Loggingot currentlyermitted");

139  (
EAGAIN
);

142 
	`memt
(&
dbt
, 0, (opdbt));

143 
dbt
.
da
 = "DIAGNOSTIC";

144 
dbt
.
size
 = ("DIAGNOSTIC") - 1;

146 
	`memt
(&
msgdbt
, 0, (msgdbt));

147 
msgdbt
.
da
 = 
__logbuf
;

148 
msgdbt
.
size
 = (
u_t32_t
)
	`vtf
(
__logbuf
, (__logbuf), 
fmt
, 

);

150  (
	`__db_debug_log
(

151 
dbv
, 
txnid
, &
l
, 0, &
dbt
, -1, &
msgdbt
, 
NULL
, 0));

152 
	}
}

	@../log/log_get.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/yo.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/hmac.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/hash.h
"

18 um { 
	mL_ALREADY
, 
	mL_ACQUIRED
, 
	mL_NONE
 } 
	tRLOCK
;

20 
__logc_o_
 
__P
((
DB_LOGC
 *, 
u_t32_t
));

21 
__logc_g_
 
__P
((
DB_LOGC
 *, 
DB_LSN
 *, 
DBT
 *, 
u_t32_t
));

22 
__logc_g_t
 
__P
((
DB_LOGC
 *, 
DB_LSN
 *, 
DBT
 *, 
u_t32_t
));

23 
__logc_hdrchk
 
__P
((
DB_LOGC
 *, 
DB_LSN
 *, 
HDR
 *, *));

24 
__logc_curs
 
__P
((
DB_LOGC
 *, 
DB_LSN
 *, 
HDR
 *, 
u_t8_t
 **));

25 
__logc_gi
 
__P
((
DB_LOGC
 *,

26 
DB_LSN
 *, 
RLOCK
 *, DB_LSN *, 
HDR
 *, 
u_t8_t
 **, *));

27 
__logc_io
 
__P
((
DB_LOGC
 *,

28 
u_t32_t
, u_t32_t, *, 
size_t
 *, *));

29 
__logc_disk
 
__P
((
DB_LOGC
 *,

30 
DB_LSN
 *, DB_LSN *, 
u_t32_t
, 
HDR
 *, 
u_t8_t
 **, *));

31 
__logc_t_maxc
 
__P
((
DB_LOGC
 *, *));

32 
__logc_sh܌d
 
__P
((
DB_LOGC
 *, 
DB_LSN
 *, ));

33 
__logc_vsi_
 
__P
((
DB_LOGC
 *, 
u_t32_t
 *, u_int32_t));

42 
	$__log_curs_
(
dbv
, 
log
, 
ags
)

43 
DB_ENV
 *
dbv
;

44 
DB_LOGC
 **
log
;

45 
u_t32_t
 
ags
;

47 
DB_THREAD_INFO
 *

;

48 
t
;

50 
	`PANIC_CHECK
(
dbv
);

51 
	`ENV_REQUIRES_CONFIG
(
dbv
,

52 
dbv
->
lg_hd
, "DB_ENV->log_curs", 
DB_INIT_LOG
);

55 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->log_curs", 
ags
, 0)) != 0)

56  (
t
);

58 
	`ENV_ENTER
(
dbv
, 

);

59 
	`REPLICATION_WRAP
(
dbv
, (
	`__log_curs
(dbv, 
log
)), 
t
);

60 
	`ENV_LEAVE
(
dbv
, 

);

61  (
t
);

62 
	}
}

71 
	$__log_curs
(
dbv
, 
log
)

72 
DB_ENV
 *
dbv
;

73 
DB_LOGC
 **
log
;

75 
DB_LOGC
 *
logc
;

76 
t
;

78 *
log
 = 
NULL
;

81 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_LOGC
), &
logc
)) != 0)

82  (
t
);

84 
logc
->
bp_size
 = 
LG_CURSOR_BUF_SIZE
;

88 
logc
->
bp_maxc
 = 
MEGABYTE
;

89 i((
t
 = 
	`__os_mloc
(
dbv
, 
logc
->
bp_size
, &logc->
bp
)) != 0) {

90 
	`__os_
(
dbv
, 
logc
);

91  (
t
);

94 
logc
->
dbv
 = dbenv;

95 
logc
->
o
 = 
__logc_o_
;

96 
logc
->
g
 = 
__logc_g_
;

97 
logc
->
vsi
 = 
__logc_vsi_
;

99 *
log
 = 
logc
;

101 
	}
}

108 
	$__logc_o_
(
logc
, 
ags
)

109 
DB_LOGC
 *
logc
;

110 
u_t32_t
 
ags
;

112 
DB_THREAD_INFO
 *

;

113 
DB_ENV
 *
dbv
;

114 
t
;

116 
dbv
 = 
logc
->dbenv;

118 
	`PANIC_CHECK
(
dbv
);

119 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_LOGC->o", 
ags
, 0)) != 0)

120  (
t
);

122 
	`ENV_ENTER
(
dbv
, 

);

123 
	`REPLICATION_WRAP
(
dbv
, (
	`__logc_o
(
logc
)), 
t
);

124 
	`ENV_LEAVE
(
dbv
, 

);

125  (
t
);

126 
	}
}

135 
	$__logc_o
(
logc
)

136 
DB_LOGC
 *
logc
;

138 
DB_ENV
 *
dbv
;

140 
dbv
 = 
logc
->dbenv;

142 i(
logc
->
fhp
 !
NULL
) {

143 ()
	`__os_ohd
(
dbv
, 
logc
->
fhp
);

144 
logc
->
fhp
 = 
NULL
;

147 i(
logc
->
dbt
.
da
 !
NULL
)

148 
	`__os_
(
dbv
, 
logc
->
dbt
.
da
);

150 
	`__os_
(
dbv
, 
logc
->
bp
);

151 
	`__os_
(
dbv
, 
logc
);

154 
	}
}

161 
	$__logc_vsi_
(
logc
, 
vsip
, 
ags
)

162 
DB_LOGC
 *
logc
;

163 
u_t32_t
 *
vsip
;

164 
u_t32_t
 
ags
;

166 
DB_ENV
 *
dbv
;

167 
DB_THREAD_INFO
 *

;

168 
t
;

170 
dbv
 = 
logc
->dbenv;

172 
	`PANIC_CHECK
(
dbv
);

173 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_LOGC->vsi", 
ags
, 0)) != 0)

174  (
t
);

176 
	`ENV_ENTER
(
dbv
, 

);

177 
	`REPLICATION_WRAP
(
dbv
, (
	`__logc_vsi
(
logc
, 
vsip
)), 
t
);

178 
	`ENV_LEAVE
(
dbv
, 

);

179  (
t
);

180 
	}
}

189 
	$__logc_vsi
(
logc
, 
vsip
)

190 
DB_LOGC
 *
logc
;

191 
u_t32_t
 *
vsip
;

193 
DB_ENV
 *
dbv
;

194 
DB_LSN
 

;

195 
DB_LOGC
 *
ogc
;

196 
DBT
 
hdrdbt
;

197 
LOGP
 *
rsi
;

198 
t
, 
t_t
;

200 
dbv
 = 
logc
->dbenv;

201 i(
	`IS_ZERO_LSN
(
logc
->
l
)) {

202 
	`__db_rx
(
dbv
, "DB_LOGC->get: unset cursor");

203  (
EINVAL
);

205 
t
 = 0;

216 i(
logc
->
l
.
fe
 !logc->
p_l
.file) {

217 i((
t
 = 
	`__log_curs
(
dbv
, &
ogc
)) != 0)

218  (
t
);

219 

.
fe
 = 
logc
->
l
.file;

220 

.
offt
 = 0;

221 
ogc
->
l
 = 

;

222 
	`memt
(&
hdrdbt
, 0, (
DBT
));

223 i((
t
 = 
	`__logc_g_t
(
ogc
,

224 &

, &
hdrdbt
, 
DB_SET
)) == 0) {

225 
rsi
 = (
LOGP
 *)
hdrdbt
.
da
;

226 
logc
->
p_l
 =ogc->
l
;

227 
logc
->
p_vsi
 = 
rsi
->
vsi
;

229 i((
t_t
 = 
	`__logc_o
(
ogc
)!0 && 
t
 == 0)

230 
t
 = 
t_t
;

233 i(
t
 == 0)

234 *
vsip
 = 
logc
->
p_vsi
;

235  (
t
);

236 
	}
}

243 
	$__logc_g_
(
logc
, 

, 
dbt
, 
ags
)

244 
DB_LOGC
 *
logc
;

245 
DB_LSN
 *

;

246 
DBT
 *
dbt
;

247 
u_t32_t
 
ags
;

249 
DB_ENV
 *
dbv
;

250 
DB_THREAD_INFO
 *

;

251 
t
;

253 
dbv
 = 
logc
->dbenv;

255 
	`PANIC_CHECK
(
dbv
);

258 
ags
) {

259 
DB_CURRENT
:

260 
DB_FIRST
:

261 
DB_LAST
:

262 
DB_NEXT
:

263 
DB_PREV
:

265 
DB_SET
:

266 i(
	`IS_ZERO_LSN
(*

)) {

267 
	`__db_rx
(
dbv
, "DB_LOGC->get: invalid LSN: %lu/%lu",

268 (
u_lg
)

->
fe
, (u_lgl->
offt
);

269  (
EINVAL
);

273  (
	`__db_
(
dbv
, "DB_LOGC->get", 1));

276 
	`ENV_ENTER
(
dbv
, 

);

277 
	`REPLICATION_WRAP
(
dbv
, (
	`__logc_g
(
logc
, 

, 
dbt
, 
ags
)), 
t
);

278 
	`ENV_LEAVE
(
dbv
, 

);

279  (
t
);

280 
	}
}

289 
	$__logc_g
(
logc
, 

, 
dbt
, 
ags
)

290 
DB_LOGC
 *
logc
;

291 
DB_LSN
 *

;

292 
DBT
 *
dbt
;

293 
u_t32_t
 
ags
;

295 
DB_ENV
 *
dbv
;

296 
DB_LSN
 
ved_l
;

297 
LOGP
 *
rsi
;

298 
t
;

300 
dbv
 = 
logc
->dbenv;

316 
ved_l
 = *

;

322 i((
t
 = 
	`__logc_g_t
(
logc
, 

, 
dbt
, 
ags
)) != 0) {

323 *

 = 
ved_l
;

324  (
t
);

326 i(

->
offt
 =0 && (
ags
 =
DB_FIRST
 ||

327 
ags
 =
DB_NEXT
 || fg=
DB_LAST
 || fg=
DB_PREV
)) {

328 
ags
) {

329 
DB_FIRST
:

330 
ags
 = 
DB_NEXT
;

332 
DB_LAST
:

333 
ags
 = 
DB_PREV
;

335 
DB_NEXT
:

336 
DB_PREV
:

344 
rsi
 = (
LOGP
 *)
dbt
->
da
;

345 
logc
->
p_l
 = *

;

346 
logc
->
p_vsi
 = 
rsi
->
vsi
;

347 i(
	`F_ISSET
(
dbt
, 
DB_DBT_MALLOC
)) {

348 
	`__os_
(
dbv
, 
dbt
->
da
);

349 
dbt
->
da
 = 
NULL
;

351 i((
t
 = 
	`__logc_g_t
(
logc
, 

, 
dbt
, 
ags
)) != 0) {

352 *

 = 
ved_l
;

353  (
t
);

358 
	}
}

365 
	$__logc_g_t
(
logc
, 

, 
dbt
, 
ags
)

366 
DB_LOGC
 *
logc
;

367 
DB_LSN
 *

;

368 
DBT
 *
dbt
;

369 
u_t32_t
 
ags
;

371 
DB_CIPHER
 *
db_ch
;

372 
DB_ENV
 *
dbv
;

373 
DB_LOG
 *
db
;

374 
DB_LSN
 
ϡ_l
, 
Ƣ
;

375 
HDR
 
hdr
;

376 
LOG
 *

;

377 
RLOCK
 
ock
;

378 
logfe_vidy
 
us
;

379 
u_t32_t
 
t
;

380 
u_t8_t
 *

;

381 
eof
, 
is_hmac
, 
ed_cksum
, 
t
;

383 
dbv
 = 
logc
->dbenv;

384 
db_ch
 = 
dbv
->
yo_hd
;

385 
db
 = 
dbv
->
lg_hd
;

386 

 = 
db
->
gfo
.
imy
;

387 
is_hmac
 = 0;

393 
ock
 = 
	`F_ISSET
(
logc
, 
DB_LOG_LOCKED
? 
L_ALREADY
 : 
L_NONE
;

395 
Ƣ
 = 
logc
->
l
;

396 
ags
) {

397 
DB_NEXT
:

398 i(!
	`IS_ZERO_LSN
(
Ƣ
)) {

400 
Ƣ
.
offt
 +
logc
->
n
;

403 
ags
 = 
DB_FIRST
;

405 
DB_FIRST
:

407 i((
t
 = 
	`__log_fd
(
db
, 1, &
t
, &
us
)) != 0)

408 
r
;

426 
us
) {

427 
DB_LV_INCOMPLETE
:

428 
	`DB_ASSERT
(
dbv
, 

->
l
.
fe
 =
t
);

430 
DB_LV_NORMAL
:

431 
DB_LV_OLD_READABLE
:

432 
Ƣ
.
fe
 = 
t
;

434 
DB_LV_NONEXISTENT
:

435 
Ƣ
.
fe
 = 1;

436 
	`DB_ASSERT
(
dbv
, 

->
l
.
fe
 =
Ƣ
.file);

438 
DB_LV_OLD_UNREADABLE
:

439 
Ƣ
.
fe
 = 
t
 + 1;

440 
	`DB_ASSERT
(
dbv
, 

->
l
.
fe
 =
Ƣ
.file);

443 
Ƣ
.
offt
 = 0;

445 
DB_CURRENT
:

447 
DB_PREV
:

448 i(!
	`IS_ZERO_LSN
(
Ƣ
)) {

450 i(
Ƣ
.
offt
 == 0) {

451 i(
Ƣ
.
fe
 == 1) {

452 
t
 = 
DB_NOTFOUND
;

453 
r
;

455 i((!

->
db_log_memy
 &&

456 (
	`__log_vid
(
db
, 
Ƣ
.
fe
 - 1, 0, 
NULL
,

457 0, &
us
, 
NULL
) != 0 ||

458 (
us
 !
DB_LV_NORMAL
 &&

459 
us
 !
DB_LV_OLD_READABLE
)))) {

460 
t
 = 
DB_NOTFOUND
;

461 
r
;

464 --
Ƣ
.
fe
;

466 
Ƣ
.
offt
 = 
logc
->
ev
;

470 
DB_LAST
:

471 i(
ock
 =
L_NONE
) {

472 
ock
 = 
L_ACQUIRED
;

473 
	`LOG_SYSTEM_LOCK
(
dbv
);

475 
Ƣ
.
fe
 = 

->
l
.file;

476 
Ƣ
.
offt
 = 

->
l
.off-p->
n
;

478 
DB_SET
:

479 
Ƣ
 = *

;

482 
t
 = 
	`__db_unknown_th
(
dbv
, "__logc_get_int");

483 
r
;

487 
xt_fe
: ++
Ƣ
.
fe
;

488 
Ƣ
.
offt
 = 0;

496 i(
	`CRYPTO_ON
(
dbv
)) {

497 
hdr
.
size
 = 
HDR_CRYPTO_SZ
;

498 
is_hmac
 = 1;

500 
hdr
.
size
 = 
HDR_NORMAL_SZ
;

501 
is_hmac
 = 0;

508 i((
t
 = 
	`__logc_curs
(
logc
, &
Ƣ
, &
hdr
, &

)) != 0)

509 
r
;

510 i(

 !
NULL
)

511 
cksum
;

528 
	`ZERO_LSN
(
ϡ_l
);

529 i(!
	`F_ISSET
(
logc
, 
DB_LOG_DISK
) ||

530 
	`LOG_COMPARE
(&
Ƣ
, &
logc
->
l
) > 0) {

531 
	`F_CLR
(
logc
, 
DB_LOG_DISK
);

533 i((
t
 = 
	`__logc_gi
(
logc
,

534 &
Ƣ
, &
ock
, &
ϡ_l
, &
hdr
, &

, &
ed_cksum
)) != 0)

535 
r
;

536 i(

 !
NULL
) {

542 i(
ed_cksum
)

543 
cksum
;

544 
om_memy
;

546 i(

->
db_log_memy
)

547 
nohdr
;

558 i(
ock
 =
L_ACQUIRED
) {

559 
ock
 = 
L_NONE
;

560 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

562 i((
t
 = 
	`__logc_disk
(

563 
logc
, &
Ƣ
, &
ϡ_l
, 
ags
, &
hdr
, &

, &
eof
)) != 0)

564 
r
;

565 i(
eof
) {

570 i(
ags
 !
DB_NEXT
 || 
Ƣ
.
offt
 == 0)

571  (
DB_NOTFOUND
);

572 
xt_fe
;

574 
	`F_SET
(
logc
, 
DB_LOG_DISK
);

576 
cksum
:

582 i(
ock
 =
L_ACQUIRED
) {

583 
ock
 = 
L_NONE
;

584 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

593 i((
t
 = 
	`__db_check_chksum
(
dbv
, &
hdr
, 
db_ch
,

594 
hdr
.
chksum
, 

 + hdr.
size
, hdr.
n
 - hdr.size, 
is_hmac
)) != 0) {

595 i(
	`F_ISSET
(
logc
, 
DB_LOG_SILENT_ERR
)) {

596 i(
t
 == 0 ||et == -1)

597 
t
 = 
EIO
;

598 } i(
t
 == -1) {

599 
	`__db_rx
(
dbv
,

601 (
u_lg
)
Ƣ
.
fe
, (u_lgl.
offt
);

602 
	`__db_rx
(
dbv
,

604 
t
 = 
	`__db_nic
(
dbv
, 
DB_RUNRECOVERY
);

606 
r
;

614 i(
hdr
.
n
 == 0) {

615 
nohdr
: 
ags
) {

616 
DB_FIRST
:

617 
DB_NEXT
:

619 
xt_fe
;

620 
DB_LAST
:

621 
DB_PREV
:

630 
	`__db_rx
(
dbv
,

632 
t
 = 
	`__db_nic
(
dbv
, 
DB_RUNRECOVERY
);

633 
r
;

634 
DB_SET
:

641 
om_memy
:

648 i(
ock
 =
L_ACQUIRED
) {

649 
ock
 = 
L_NONE
;

650 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

654 i((
t
 = 
	`__db_tcy
(
dbv
, 
dbt
, 

 + 
hdr
.
size
,

655 (
u_t32_t
)(
hdr
.
n
 - hdr.
size
),

656 &
logc
->
dbt
.
da
, &logc->dbt.
un
)) != 0)

657 
r
;

659 i(
	`CRYPTO_ON
(
dbv
)) {

660 i((
t
 = 
db_ch
->
	`dey
(
dbv
, db_ch->
da
,

661 
hdr
.
iv
, 
dbt
->
da
, hdr.
n
 - hdr.
size
)) != 0) {

662 
t
 = 
EAGAIN
;

663 
r
;

672 
dbt
->
size
 = 
hdr
.
ig_size
;

676 *

 = 
Ƣ
;

677 
logc
->
l
 = 
Ƣ
;

678 
logc
->
n
 = 
hdr
.len;

679 
logc
->
ev
 = 
hdr
.prev;

681 
r
: i(
ock
 =
L_ACQUIRED
)

682 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

684  (
t
);

685 
	}
}

692 
	$__logc_curs
(
logc
, 
l
, 
hdr
, 

)

693 
DB_LOGC
 *
logc
;

694 
DB_LSN
 *
l
;

695 
HDR
 *
hdr
;

696 
u_t8_t
 **

;

698 
u_t8_t
 *
p
;

699 
eof
;

701 *

 = 
NULL
;

713 i(
logc
->
bp_l
.
fe
 !
l
->file)

715 i(
logc
->
bp_l
.
offt
 > 
l
->offset)

717 i(
logc
->
bp_l
.
offt
 +ogc->
bp_
 <
l
->off+ 
hdr
->
size
)

730 
p
 = 
logc
->
bp
 + (
l
->
offt
 -ogc->
bp_l
.offset);

731 
	`memy
(
hdr
, 
p
, hdr->
size
);

732 i(
	`__logc_hdrchk
(
logc
, 
l
, 
hdr
, &
eof
))

733  (
DB_NOTFOUND
);

734 i(
eof
 || 
logc
->
bp_l
.
offt
 +ogc->
bp_
 < 
l
->off+ 
hdr
->
n
)

737 *

 = 
p
;

740 
	}
}

747 
	$__logc_gi
(
logc
, 
l
, 
ockp
, 
ϡ_l
, 
hdr
, 

, 
ed_cksump
)

748 
DB_LOGC
 *
logc
;

749 
DB_LSN
 *
l
, *
ϡ_l
;

750 
RLOCK
 *
ockp
;

751 
HDR
 *
hdr
;

752 
u_t8_t
 **

;

753 *
ed_cksump
;

755 
DB_ENV
 *
dbv
;

756 
DB_LOG
 *
db
;

757 
LOG
 *

;

758 
size_t
 
b_gi
, 
n
, 

;

759 
u_t32_t
 
b_disk
;

760 
eof
, 
t
;

761 
u_t8_t
 *
p
;

763 
dbv
 = 
logc
->dbenv;

764 
db
 = 
dbv
->
lg_hd
;

765 

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

767 
t
 = 0;

768 
b_gi
 = 0;

769 *

 = 
NULL
;

770 *
ed_cksump
 = 0;

773 i(*
ockp
 =
L_NONE
) {

774 *
ockp
 = 
L_ACQUIRED
;

775 
	`LOG_SYSTEM_LOCK
(
dbv
);

788 *
ϡ_l
 = 

->
l
;

789 i(!

->
db_log_memy
 && 
ϡ_l
->
offt
 >p->
w_off
)

790 
ϡ_l
->
offt
 = 

->
w_off
;

814 i(
	`IS_ZERO_LSN
(

->
l
))

816 i(
	`LOG_COMPARE
(
l
, &

->lsn) >= 0)

817  (
DB_NOTFOUND
);

818 i(

->
db_log_memy
) {

819 i((
t
 = 
	`__log_mem_loff
(
db
, 
l
, &
b_gi
)) != 0)

820  (
t
);

821 } i(

->
b_off
 =0 || 
	`LOG_COMPARE
(
l
, &->
f_l
) < 0)

829 
logc
->
bp_
 = 0;

845 i(

->
db_log_memy
 || 
	`LOG_COMPARE
(
l
, &->
f_l
) > 0) {

846 i(!

->
db_log_memy
)

847 
b_gi
 = 
l
->
offt
 - 

->
w_off
;

848 
	`__log_mem_cyout
(
db
, 
b_gi
, 
hdr
, hdr->
size
);

849 i(
	`__logc_hdrchk
(
logc
, 
l
, 
hdr
, &
eof
) != 0)

850  (
DB_NOTFOUND
);

851 i(
eof
)

853 i(

->
db_log_memy
) {

854 i(
	`RINGBUF_LEN
(

, 
b_gi
,p->
b_off
< 
hdr
->
n
)

855  (
DB_NOTFOUND
);

856 } i(
l
->
offt
 + 
hdr
->
n
 > 

->
w_off
 +p->
bufr_size
)

857  (
DB_NOTFOUND
);

858 i(
logc
->
bp_size
 <
hdr
->
n
) {

859 
n
 = (
size_t
)
	`DB_ALIGN
((
utmax_t
)
hdr
->len * 2, 128);

860 i((
t
 =

861 
	`__os_loc
(
logc
->
dbv
, 
n
, &logc->
bp
)) != 0)

862  (
t
);

863 
logc
->
bp_size
 = (
u_t32_t
)
n
;

865 
	`__log_mem_cyout
(
db
, 
b_gi
, 
logc
->
bp
, 
hdr
->
n
);

866 *

 = 
logc
->
bp
;

870 
	`DB_ASSERT
(
dbv
, !

->
db_log_memy
);

887 
b_disk
 = 

->
w_off
 - 
l
->
offt
;

888 i(

->
b_off
 <->
n
)

889 
b_gi
 = (
u_t32_t
)

->
b_off
;

891 
p
 = 
db
->
bu
 + (

->
b_off
 -p->
n
);;) {

892 
	`memy
(
hdr
, 
p
, hdr->
size
);

893 i(
hdr
->
ev
 =
l
->
offt
) {

894 
b_gi
 = (
u_t32_t
)(
p
 - 
db
->
bu
);

897 
p
 = 
db
->
bu
 + (
hdr
->
ev
 - 

->
w_off
);

907 i(
logc
->
bp_size
 <
b_gi
 + 
b_disk
) {

908 
n
 = (
size_t
)
	`DB_ALIGN
((
utmax_t
)(
b_gi
 + 
b_disk
) * 2, 128);

909 i((
t
 = 
	`__os_loc
(
logc
->
dbv
, 
n
, &logc->
bp
)) != 0)

910  (
t
);

911 
logc
->
bp_size
 = (
u_t32_t
)
n
;

915 
p
 = (
logc
->
bp
 +ogc->
bp_size
- 
b_gi
;

916 
	`memy
(
p
, 
db
->
bu
, 
b_gi
);

919 i(*
ockp
 =
L_ACQUIRED
) {

920 *
ockp
 = 
L_NONE
;

921 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

928 i(
b_disk
 != 0) {

929 
p
 -
b_disk
;

930 

 = 
b_disk
;

931 i((
t
 = 
	`__logc_io
(

932 
logc
, 
l
->
fe
,->
offt
, 
p
, &

, 
NULL
)) != 0)

933  (
t
);

934 i(

 < 
b_disk
)

935  (
	`__logc_sh܌d
(
logc
, 
l
, 0));

938 *
ed_cksump
 = 1;

942 
	`memy
(
hdr
, 
p
, hdr->
size
);

944 *

 = 
p
;

946 
	}
}

953 
	$__logc_disk
(
logc
, 
l
, 
ϡ_l
, 
ags
, 
hdr
, 

, 
eo
)

954 
DB_LOGC
 *
logc
;

955 
DB_LSN
 *
l
, *
ϡ_l
;

956 
u_t32_t
 
ags
;

957 *
eo
;

958 
HDR
 *
hdr
;

959 
u_t8_t
 **

;

961 
DB_ENV
 *
dbv
;

962 
size_t
 
n
, 

;

963 
u_t32_t
 
offt
;

964 
t
;

966 
dbv
 = 
logc
->dbenv;

967 *
eo
 = 0;

969 

 = 
hdr
->
size
;

970 i((
t
 =

971 
	`__logc_io
(
logc
, 
l
->
fe
,->
offt
, 
hdr
, &

, 
eo
)) != 0)

972  (
t
);

973 i(*
eo
)

983 i(

 < 
hdr
->
size
) {

984 *
eo
 = 1;

989 i((
t
 = 
	`__logc_hdrchk
(
logc
, 
l
, 
hdr
, 
eo
)) != 0)

990  (
t
);

991 i(*
eo
)

998 
logc
->
bp_
 = 0;

1005 i(
logc
->
bp_size
 <
hdr
->
n
) {

1006 
n
 = (
size_t
)
	`DB_ALIGN
((
utmax_t
)
hdr
->len * 2, 128);

1007 i((
t
 = 
	`__os_loc
(
dbv
, 
n
, &
logc
->
bp
)) != 0)

1008  (
t
);

1009 
logc
->
bp_size
 = (
u_t32_t
)
n
;

1023 i(
ags
 =
DB_FIRST
 || fg=
DB_NEXT
)

1024 
offt
 = 
l
->offset;

1025 i(
l
->
offt
 + 
hdr
->
n
 < 
logc
->
bp_size
)

1026 
offt
 = 0;

1028 
offt
 = (
l
->off+ 
hdr
->
n
- 
logc
->
bp_size
;

1030 

 = 
logc
->
bp_size
;

1031 i(
l
->
fe
 =
ϡ_l
->f&& 
offt
 + 

 >=ast_lsn->offset)

1032 

 = 
ϡ_l
->
offt
 - offset;

1034 i((
t
 =

1035 
	`__logc_io
(
logc
, 
l
->
fe
, 
offt
,ogc->
bp
, &

, 
eo
)) != 0)

1036  (
t
);

1042 i(

 < (
l
->
offt
 + 
hdr
->
n
) - offset)

1043  (
	`__logc_sh܌d
(
logc
, 
l
, 1));

1051 
logc
->
bp_
 = (
u_t32_t
)

;

1052 
logc
->
bp_l
.
offt
 = offset;

1054 *

 = 
logc
->
bp
 + (
l
->
offt
 - offset);

1057 
	}
}

1080 
	$__logc_hdrchk
(
logc
, 
l
, 
hdr
, 
eo
)

1081 
DB_LOGC
 *
logc
;

1082 
DB_LSN
 *
l
;

1083 
HDR
 *
hdr
;

1084 *
eo
;

1086 
DB_ENV
 *
dbv
;

1087 
t
;

1089 
dbv
 = 
logc
->dbenv;

1094 i(
eo
 !
NULL
) {

1095 i(
hdr
->
ev
 =0 && hdr->
chksum
[0] =0 && hdr->
n
 == 0) {

1096 *
eo
 = 1;

1099 *
eo
 = 0;

1106 i(
hdr
->
n
 <hdr->
size
)

1107 
r
;

1113 i(
logc
->
bp_maxc
 !0 && 
hdr
->
n
 >ogc->bp_maxrec) {

1119 i((
t
 = 
	`__logc_t_maxc
(
logc
, 
NULL
)) != 0) {

1120 
	`__db_r
(
dbv
, 
t
, "DB_LOGC->get");

1121  (
t
);

1123 i(
logc
->
bp_maxc
 !0 && 
hdr
->
n
 >ogc->bp_maxrec)

1124 
r
;

1128 
r
: i(!
	`F_ISSET
(
logc
, 
DB_LOG_SILENT_ERR
))

1129 
	`__db_rx
(
dbv
,

1131 (
u_lg
)
l
->
fe
, (u_lg->
offt
);

1132  (
EIO
);

1133 
	}
}

1140 
	$__logc_io
(
logc
, 
um
, 
offt
, 
p
, 
p
, 
eo
)

1141 
DB_LOGC
 *
logc
;

1142 
u_t32_t
 
um
, 
offt
;

1143 *
p
;

1144 
size_t
 *
p
;

1145 *
eo
;

1147 
DB_ENV
 *
dbv
;

1148 
DB_LOG
 *
db
;

1149 
LOG
 *

;

1150 
t
;

1151 *

;

1153 
dbv
 = 
logc
->dbenv;

1154 
db
 = 
dbv
->
lg_hd
;

1155 

 = 
db
->
gfo
.
imy
;

1161 i(
logc
->
fhp
 !
NULL
 &&ogc->
bp_l
.
fe
 !
um
) {

1162 
t
 = 
	`__os_ohd
(
dbv
, 
logc
->
fhp
);

1163 
logc
->
fhp
 = 
NULL
;

1164 
logc
->
bp_l
.
fe
 = 0;

1166 i(
t
 != 0)

1167  (
t
);

1169 i(
logc
->
fhp
 =
NULL
) {

1170 i((
t
 = 
	`__log_me
(
db
, 
um
,

1171 &

, &
logc
->
fhp
, 
DB_OSO_RDONLY
 | 
DB_OSO_SEQ
)) != 0) {

1176 i(
eo
 !
NULL
) {

1177 *
eo
 = 1;

1178 
t
 = 0;

1179 } i(!
	`F_ISSET
(
logc
, 
DB_LOG_SILENT_ERR
))

1180 
	`__db_r
(
dbv
, 
t
, "DB_LOGC->g: %s", 

);

1181 
	`__os_
(
dbv
, 

);

1182  (
t
);

1185 i((
t
 = 
	`__logc_t_maxc
(
logc
, 

)) != 0) {

1186 
	`__db_r
(
dbv
, 
t
, "DB_LOGC->g: %s", 

);

1187 
	`__os_
(
dbv
, 

);

1188  (
t
);

1190 
	`__os_
(
dbv
, 

);

1192 
logc
->
bp_l
.
fe
 = 
um
;

1195 
	`STAT
(++

->

.
_rcou
);

1197 i((
t
 = 
	`__os_io
(
dbv
, 
DB_IO_READ
,

1198 
logc
->
fhp
, 0, 0, 
offt
, (
u_t32_t
)*
p
, 
p
,rp)) != 0) {

1199 i(!
	`F_ISSET
(
logc
, 
DB_LOG_SILENT_ERR
))

1200 
	`__db_r
(
dbv
, 
t
,

1202 (
u_lg
)
um
, (u_lg)
offt
);

1203  (
t
);

1207 
	}
}

1214 
	$__logc_sh܌d
(
logc
, 
l
, 
check_st
)

1215 
DB_LOGC
 *
logc
;

1216 
DB_LSN
 *
l
;

1217 
check_st
;

1219 i(!
check_st
 || !
	`F_ISSET
(
logc
, 
DB_LOG_SILENT_ERR
))

1220 
	`__db_rx
(
logc
->
dbv
, "DB_LOGC->get: LSN: %lu/%lu: shortead",

1221 (
u_lg
)
l
->
fe
, (u_lg->
offt
);

1222  (
EIO
);

1223 
	}
}

1230 
	$__logc_t_maxc
(
logc
, 

)

1231 
DB_LOGC
 *
logc
;

1232 *

;

1234 
DB_ENV
 *
dbv
;

1235 
DB_LOG
 *
db
;

1236 
LOG
 *

;

1237 
u_t32_t
 
mbys
, 
bys
;

1238 
t
;

1240 
dbv
 = 
logc
->dbenv;

1241 
db
 = 
dbv
->
lg_hd
;

1252 i(
logc
->
fhp
 !
NULL
) {

1253 i((
t
 = 
	`__os_iofo
(
dbv
, 

, 
logc
->
fhp
,

1254 &
mbys
, &
bys
, 
NULL
)) != 0)

1255  (
t
);

1256 i(
logc
->
bp_maxc
 < (
mbys
 * 
MEGABYTE
 + 
bys
))

1257 
logc
->
bp_maxc
 = 
mbys
 * 
MEGABYTE
 + 
bys
;

1272 

 = 
db
->
gfo
.
imy
;

1273 i(
logc
->
bp_maxc
 < 

->
bufr_size
)

1274 
logc
->
bp_maxc
 = 

->
bufr_size
;

1277 
	}
}

1279 #ifde
HAVE_REPLICATION


1291 
	$__log_p_l
(
dbv
, 

, 
c
, 
t_lp
, 
ϡ_lp
)

1292 
DB_ENV
 *
dbv
;

1293 
REP_CONTROL
 *

;

1294 
DBT
 *
c
;

1295 
DB_LSN
 *
t_lp
;

1296 
DB_LSN
 *
ϡ_lp
;

1298 
DB_LSN
 
ve_l
, 
tmp_l
;

1299 
DBT
 
logc
;

1300 
REP_CONTROL
 
tmp
;

1301 
u_t32_t
 
n
;

1302 
is_dup
, 
is_rm
, 
t
, 
ve_t
;

1303 
u_t8_t
 *
p
, *

;

1305 
	`memt
(&
logc
, 0, (logrec));

1306 
	`memt
(&
ve_l
, 0, (save_lsn));

1307 
	`memt
(&
tmp_l
, 0, (tmp_lsn));

1312 
	`memy
(&
tmp
, 

, (tmprp));

1319 
is_rm
 = 
	`F_ISSET
(

, 
REPCTL_PERM
);

1320 
	`F_CLR
(&
tmp
, 
REPCTL_PERM
);

1321 
t
 = 
ve_t
 = 0;

1322 

 = (
u_t8_t
 *)
c
->
da
 +ec->
size
, 
p
 = (u_int8_t *)rec->data;

1323 
p
 < 

; ) {

1333 
	`memy
(&
n
, 
p
, (len));

1334 
p
 +(
n
);

1335 
	`memy
(&
tmp
.
l
, 
p
, (
DB_LSN
));

1336 
p
 +(
DB_LSN
);

1337 
logc
.
da
 = 
p
;

1338 
logc
.
size
 = 
n
;

1339 
	`RPRINT
(
dbv
, (dbenv,

1341 (
u_lg
)
tmp
.
l
.
fe
, (u_lgmp.l.
offt
));

1342 
	`RPRINT
(
dbv
, (dbenv,

1344 
	`P_TO_ULONG
(
p
), P_TO_ULONG(

), P_TO_ULONG(
logc
.
da
),

1345 (
u_lg
)
logc
.
size
, (u_long)logrec.size));

1346 
is_dup
 = 0;

1347 
p
 +
n
;

1348 i(
p
 >

 && 
is_rm
)

1349 
	`F_SET
(&
tmp
, 
REPCTL_PERM
);

1350 
t
 = 
	`__p_y
(
dbv
,

1351 &
tmp
, &
logc
, &
tmp_l
, &
is_dup
, 
ϡ_lp
);

1352 
	`RPRINT
(
dbv
, (dbenv,

1354 
t
, (
u_lg
)
tmp_l
.
fe
, (u_lgmp_l.
offt
));

1360 i(
is_dup
)

1361 
out
;

1363 
t
) {

1369 
DB_REP_LOGREADY
:

1370 
out
;

1374 
DB_REP_ISPERM
:

1375 
DB_REP_NOTPERM
:

1376 
ve_t
 = 
t
;

1377 
ve_l
 = 
tmp_l
;

1378 
t
 = 0;

1389 
out
;

1392 
out
:

1397 i(
t
 == 0) {

1398 
t
 = 
ve_t
;

1399 *
t_lp
 = 
ve_l
;

1401  (
t
);

1402 
	}
}

	@../log/log_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

21 
	$__log_v_
(
dbv
)

22 
DB_ENV
 *
dbv
;

30 
dbv
->
lg_bsize
 = 0;

31 
dbv
->
lg_gimax
 = 
LG_BASE_REGION_SIZE
;

34 
	}
}

43 
	$__log_v_deroy
(
dbv
)

44 
DB_ENV
 *
dbv
;

46 
	`COMPQUIET
(
dbv
, 
NULL
);

47 
	}
}

53 
	$__log_g_lg_bsize
(
dbv
, 
lg_bsiz
)

54 
DB_ENV
 *
dbv
;

55 
u_t32_t
 *
lg_bsiz
;

57 
	`ENV_NOT_CONFIGURED
(
dbv
,

58 
dbv
->
lg_hd
, "DB_ENV->g_lg_bsize", 
DB_INIT_LOG
);

60 i(
	`LOGGING_ON
(
dbv
)) {

62 *
lg_bsiz
 =

63 ((
LOG
 *)
dbv
->
lg_hd
->
gfo
.
imy
)->
bufr_size
;

65 *
lg_bsiz
 = 
dbv
->
lg_bsize
;

67 
	}
}

76 
	$__log_t_lg_bsize
(
dbv
, 
lg_bsize
)

77 
DB_ENV
 *
dbv
;

78 
u_t32_t
 
lg_bsize
;

80 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_lg_bsize");

82 
dbv
->
lg_bsize
 =g_bsize;

84 
	}
}

90 
	$__log_g_lg_femode
(
dbv
, 
lg_mod
)

91 
DB_ENV
 *
dbv
;

92 *
lg_mod
;

94 
DB_LOG
 *
db
;

96 
	`ENV_NOT_CONFIGURED
(
dbv
,

97 
dbv
->
lg_hd
, "DB_ENV->g_lg_femode", 
DB_INIT_LOG
);

99 i(
	`LOGGING_ON
(
dbv
)) {

100 
db
 = 
dbv
->
lg_hd
;

101 
	`LOG_SYSTEM_LOCK
(
dbv
);

102 *
lg_mod
 = ((
LOG
 *)
db
->
gfo
.
imy
)->
femode
;

103 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

105 *
lg_mod
 = 
dbv
->
lg_femode
;

108 
	}
}

117 
	$__log_t_lg_femode
(
dbv
, 
lg_mode
)

118 
DB_ENV
 *
dbv
;

119 
lg_mode
;

121 
DB_LOG
 *
db
;

122 
LOG
 *

;

124 
	`ENV_NOT_CONFIGURED
(
dbv
,

125 
dbv
->
lg_hd
, "DB_ENV->t_lg_femode", 
DB_INIT_LOG
);

127 i(
	`LOGGING_ON
(
dbv
)) {

128 
db
 = 
dbv
->
lg_hd
;

129 

 = 
db
->
gfo
.
imy
;

130 
	`LOG_SYSTEM_LOCK
(
dbv
);

131 

->
femode
 = 
lg_mode
;

132 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

134 
dbv
->
lg_femode
 = 
lg_mode
;

137 
	}
}

143 
	$__log_g_lg_max
(
dbv
, 
lg_maxp
)

144 
DB_ENV
 *
dbv
;

145 
u_t32_t
 *
lg_maxp
;

147 
DB_LOG
 *
db
;

149 
	`ENV_NOT_CONFIGURED
(
dbv
,

150 
dbv
->
lg_hd
, "DB_ENV->g_lg_max", 
DB_INIT_LOG
);

152 i(
	`LOGGING_ON
(
dbv
)) {

153 
db
 = 
dbv
->
lg_hd
;

154 
	`LOG_SYSTEM_LOCK
(
dbv
);

155 *
lg_maxp
 = ((
LOG
 *)
db
->
gfo
.
imy
)->
log_nsize
;

156 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

158 *
lg_maxp
 = 
dbv
->
lg_size
;

161 
	}
}

170 
	$__log_t_lg_max
(
dbv
, 
lg_max
)

171 
DB_ENV
 *
dbv
;

172 
u_t32_t
 
lg_max
;

174 
DB_LOG
 *
db
;

175 
LOG
 *

;

176 
t
;

178 
	`ENV_NOT_CONFIGURED
(
dbv
,

179 
dbv
->
lg_hd
, "DB_ENV->t_lg_max", 
DB_INIT_LOG
);

181 i(
	`LOGGING_ON
(
dbv
)) {

182 i((
t
 = 
	`__log_check_sizes
(
dbv
, 
lg_max
, 0)) != 0)

183  (
t
);

184 
db
 = 
dbv
->
lg_hd
;

185 

 = 
db
->
gfo
.
imy
;

186 
	`LOG_SYSTEM_LOCK
(
dbv
);

187 

->
log_nsize
 = 
lg_max
;

188 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

190 
dbv
->
lg_size
 = 
lg_max
;

193 
	}
}

199 
	$__log_g_lg_gimax
(
dbv
, 
lg_gimaxp
)

200 
DB_ENV
 *
dbv
;

201 
u_t32_t
 *
lg_gimaxp
;

203 
	`ENV_NOT_CONFIGURED
(
dbv
,

204 
dbv
->
lg_hd
, "DB_ENV->g_lg_gimax", 
DB_INIT_LOG
);

206 i(
	`LOGGING_ON
(
dbv
)) {

208 *
lg_gimaxp
 =

209 ((
LOG
 *)
dbv
->
lg_hd
->
gfo
.
imy
)->
gimax
;

211 *
lg_gimaxp
 = 
dbv
->
lg_gimax
;

213 
	}
}

222 
	$__log_t_lg_gimax
(
dbv
, 
lg_gimax
)

223 
DB_ENV
 *
dbv
;

224 
u_t32_t
 
lg_gimax
;

226 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_lg_regionmax");

229 i(
lg_gimax
 !0 &&g_gimax < 
LG_BASE_REGION_SIZE
) {

230 
	`__db_rx
(
dbv
,

231 "logegi sizmu b>%d", 
LG_BASE_REGION_SIZE
);

232  (
EINVAL
);

235 
dbv
->
lg_gimax
 =g_regionmax;

237 
	}
}

243 
	$__log_g_lg_d
(
dbv
, 
dp
)

244 
DB_ENV
 *
dbv
;

245 cڡ **
dp
;

247 *
dp
 = 
dbv
->
db_log_d
;

249 
	}
}

258 
	$__log_t_lg_d
(
dbv
, 
d
)

259 
DB_ENV
 *
dbv
;

260 cڡ *
d
;

262 i(
dbv
->
db_log_d
 !
NULL
)

263 
	`__os_
(
dbv
, dbv->
db_log_d
);

264  (
	`__os_rdup
(
dbv
, 
d
, &dbv->
db_log_d
));

265 
	}
}

274 
	$__log_g_ags
(
dbv
, 
ag
)

275 
DB_ENV
 *
dbv
;

276 
u_t32_t
 *
ag
;

278 
DB_LOG
 *
db
;

279 
LOG
 *

;

280 
u_t32_t
 
ags
;

282 i((
db
 = 
dbv
->
lg_hd
=
NULL
)

285 

 = 
db
->
gfo
.
imy
;

287 
ags
 = *
ag
;

288 i(

->
db_log_autemove
)

289 
	`LF_SET
(
DB_LOG_AUTOREMOVE
);

291 
	`LF_CLR
(
DB_LOG_AUTOREMOVE
);

292 i(

->
db_log_memy
)

293 
	`LF_SET
(
DB_LOG_INMEMORY
);

295 
	`LF_CLR
(
DB_LOG_INMEMORY
);

296 *
ag
 = 
ags
;

297 
	}
}

306 
	$__log_t_ags
(
dbv
, 
ags
, 

)

307 
DB_ENV
 *
dbv
;

308 
u_t32_t
 
ags
;

309 

;

311 
DB_LOG
 *
db
;

312 
LOG
 *

;

314 i((
db
 = 
dbv
->
lg_hd
=
NULL
)

317 

 = 
db
->
gfo
.
imy
;

319 i(
	`LF_ISSET
(
DB_LOG_AUTOREMOVE
))

320 

->
db_log_autemove
 = 

 ? 1 : 0;

321 i(
	`LF_ISSET
(
DB_LOG_INMEMORY
))

322 

->
db_log_memy
 = 

 ? 1 : 0;

323 
	}
}

332 
	$__log_check_sizes
(
dbv
, 
lg_max
, 
lg_bsize
)

333 
DB_ENV
 *
dbv
;

334 
u_t32_t
 
lg_max
;

335 
u_t32_t
 
lg_bsize
;

337 
LOG
 *

;

338 
mem
;

340 i(
	`LOGGING_ON
(
dbv
)) {

341 

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

342 
mem
 = 

->
db_log_memy
;

343 
lg_bsize
 = 

->
bufr_size
;

345 
mem
 = (
	`F_ISSET
(
dbv
, 
DB_ENV_LOG_INMEMORY
) != 0);

347 i(
mem
) {

348 i(
lg_bsize
 == 0)

349 
lg_bsize
 = 
LG_BSIZE_INMEM
;

350 i(
lg_max
 == 0)

351 
lg_max
 = 
LG_MAX_INMEM
;

353 i(
lg_bsize
 <
lg_max
) {

354 
	`__db_rx
(
dbv
,

356  (
EINVAL
);

361 
	}
}

	@../log/log_put.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/yo.h
"

13 
	~"dbc/hmac.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/txn.h
"

17 
__log_y_cd
 
__P
((
DB_ENV
 *, 
DBT
 *, 
HDR
 *, 
u_t32_t
));

18 
__log_fe
 
__P
((
DB_ENV
 *, cڡ 
DB_LSN
 *, *, 
size_t
));

19 
__log_fl
 
__P
((
DB_LOG
 *, 
DB_LSN
 *, *, 
u_t32_t
));

20 
__log_ush_comm
 
__P
((
DB_ENV
 *, cڡ 
DB_LSN
 *, 
u_t32_t
));

21 
__log_wfh
 
__P
((
DB_LOG
 *, ));

22 
__log_put_xt
 
__P
((
DB_ENV
 *,

23 
DB_LSN
 *, cڡ 
DBT
 *, 
HDR
 *, DB_LSN *));

24 
__log_pu
 
__P
((
DB_LOG
 *,

25 
DB_LSN
 *, cڡ 
DBT
 *, 
u_t32_t
, 
HDR
 *));

26 
__log_wre
 
__P
((
DB_LOG
 *, *, 
u_t32_t
));

35 
	$__log_put_
(
dbv
, 
lp
, 
udbt
, 
ags
)

36 
DB_ENV
 *
dbv
;

37 
DB_LSN
 *
lp
;

38 cڡ 
DBT
 *
udbt
;

39 
u_t32_t
 
ags
;

41 
DB_THREAD_INFO
 *

;

42 
t
;

44 
	`PANIC_CHECK
(
dbv
);

45 
	`ENV_REQUIRES_CONFIG
(
dbv
,

46 
dbv
->
lg_hd
, "DB_ENV->log_put", 
DB_INIT_LOG
);

49 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->log_put", 
ags
,

50 
DB_LOG_CHKPNT
 | 
DB_LOG_COMMIT
 |

51 
DB_FLUSH
 | 
DB_LOG_NOCOPY
 | 
DB_LOG_WRNOSYNC
)) != 0)

52  (
t
);

55 i(
	`LF_ISSET
(
DB_LOG_WRNOSYNC
&& LF_ISSET(
DB_FLUSH
))

56  (
	`__db_
(
dbv
, "DB_ENV->log_put", 1));

59 i(
	`IS_REP_CLIENT
(
dbv
)) {

60 
	`__db_rx
(
dbv
,

62  (
EINVAL
);

65 
	`ENV_ENTER
(
dbv
, 

);

66 
	`REPLICATION_WRAP
(
dbv
, (
	`__log_put
(dbv, 
lp
, 
udbt
, 
ags
)), 
t
);

67 
	`ENV_LEAVE
(
dbv
, 

);

68  (
t
);

69 
	}
}

78 
	$__log_put
(
dbv
, 
lp
, 
udbt
, 
ags
)

79 
DB_ENV
 *
dbv
;

80 
DB_LSN
 *
lp
;

81 cڡ 
DBT
 *
udbt
;

82 
u_t32_t
 
ags
;

84 
DB_CIPHER
 *
db_ch
;

85 
DBT
 *
dbt
, 
wfedbt
, 
t
;

86 
DB_LOG
 *
db
;

87 
DB_LSN
 
l
, 
d_l
;

88 
DB_REP
 *
db_p
;

89 
HDR
 
hdr
;

90 
LOG
 *

;

91 
REP
 *
p
;

92 
REP_BULK
 
bulk
;

93 
lock_hd
, 
ed_
, 
t
;

94 
u_t32_t
 
lags
;

95 
u_t8_t
 *
key
;

97 
db
 = 
dbv
->
lg_hd
;

98 

 = 
db
->
gfo
.
imy
;

99 
db_ch
 = 
dbv
->
yo_hd
;

100 
db_p
 = 
dbv
->
p_hd
;

101 i(
db_p
 !
NULL
)

102 
p
 = 
db_p
->
gi
;

104 
p
 = 
NULL
;

106 
dbt
 = &
t
;

107 
t
 = *
udbt
;

108 
lock_hd
 = 
ed_
 = 0;

109 
	`ZERO_LSN
(
d_l
);

110 
hdr
.
n
 = hdr.
ev
 = 0;

112 #i!
	`defed
(
DEBUG_ROP
&& !defed(
DEBUG_WOP
)

117 i(
	`IS_REP_MASTER
(
dbv
&& 
db_p
->
nd
 =
NULL
) {

118 
	`__db_rx
(
dbv
, "%s %s",

121  (
EINVAL
);

124 
	`DB_ASSERT
(
dbv
, !
	`IS_REP_CLIENT
(dbenv));

136 i(!
	`LF_ISSET
(
DB_LOG_NOCOPY
|| 
	`IS_REP_MASTER
(
dbv
)) {

137 i(
	`CRYPTO_ON
(
dbv
))

138 
t
.
size
 +
db_ch
->
	`adj_size
(
udbt
->size);

139 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
t
.
size
, &t.
da
)) != 0)

140 
r
;

141 
ed_
 = 1;

142 
	`memy
(
t
.
da
, 
udbt
->da, udbt->
size
);

144 i((
t
 = 
	`__log_y_cd
(
dbv
, 
dbt
, &
hdr
, 
udbt
->
size
)) != 0)

145 
r
;

146 i(
	`CRYPTO_ON
(
dbv
))

147 
key
 = 
db_ch
->
mac_key
;

149 
key
 = 
NULL
;

152 i(

->
rsi
.
vsi
 !
DB_LOGVERSION
)

153 
	`__db_chksum
(
NULL
, 
dbt
->
da
, dbt->
size
, 
key
, 
hdr
.
chksum
);

155 
	`__db_chksum
(&
hdr
, 
dbt
->
da
, dbt->
size
, 
key
, hdr.
chksum
);

157 
	`LOG_SYSTEM_LOCK
(
dbv
);

158 
lock_hd
 = 1;

160 i((
t
 = 
	`__log_put_xt
(
dbv
, &
l
, 
dbt
, &
hdr
, &
d_l
)) != 0)

161 
nic_check
;

170 
lp
->
fe
 = 
l
.file;

171 
lp
->
offt
 = 
l
.offset;

173 i(
	`IS_REP_MASTER
(
dbv
)) {

178 
lags
 = 
	`LF_ISSET
(
DB_LOG_COMMIT
 | 
DB_LOG_CHKPNT
) ?

179 
REPCTL_PERM
 : 0;

184 i(
	`IS_USING_LEASES
(
dbv
) &&

185 
	`FLD_ISSET
(
lags
, 
REPCTL_PERM
))

186 

->
max_rm_l
 = 
l
;

187 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

188 
lock_hd
 = 0;

189 i(
	`LF_ISSET
(
DB_FLUSH
))

190 
lags
 |
REPCTL_FLUSH
;

202 i(!
	`IS_ZERO_LSN
(
d_l
)) {

203 
	`memt
(&
wfedbt
, 0, (newfiledbt));

204 
wfedbt
.
da
 = &

->
rsi
.
vsi
;

205 
wfedbt
.
size
 = (

->
rsi
.
vsi
);

206 ()
	`__p_nd_mesge
(
dbv
, 
DB_EID_BROADCAST
,

207 
REP_NEWFILE
, &
d_l
, &
wfedbt
, 0, 0);

213 
t
 = 0;

214 i(
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_BULK
)) {

219 i(
db_p
->
bulk
 =
NULL
)

220 
db_p
->
bulk
 = 
	`R_ADDR
(&
db
->
gfo
,

221 

->
bulk_buf
);

222 
	`memt
(&
bulk
, 0, (bulk));

223 
bulk
.
addr
 = 
db_p
->bulk;

224 
bulk
.
of
 = &

->
bulk_off
;

225 
bulk
.
n
 = 

->
bulk_n
;

226 
bulk
.
l
 =sn;

227 
bulk
.
ty
 = 
REP_BULK_LOG
;

228 
bulk
.
eid
 = 
DB_EID_BROADCAST
;

229 
bulk
.
ag
 = &

->
bulk_ags
;

230 
t
 = 
	`__p_bulk_mesge
(
dbv
, &
bulk
, 
NULL
,

231 &
l
, 
udbt
, 
lags
);

233 i(!
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_BULK
) ||

234 
t
 =
DB_REP_BULKOVF
) {

244 
t
 = 
	`__p_nd_mesge
(
dbv
, 
DB_EID_BROADCAST
,

245 
REP_LOG
, &
l
, 
udbt
, 
lags
, 0);

258 i(
t
 !0 && 
	`FLD_ISSET
(
lags
, 
REPCTL_PERM
)) {

259 
	`LF_SET
(
DB_FLUSH
);

260 i(
	`IS_USING_LEASES
(
dbv
))

261 ()
	`__p_a_expe
(
dbv
, 0);

270 
t
 = 0;

281 i(
	`LF_ISSET
(
DB_FLUSH
 | 
DB_LOG_WRNOSYNC
)) {

282 i(!
lock_hd
) {

283 
	`LOG_SYSTEM_LOCK
(
dbv
);

284 
lock_hd
 = 1;

286 i((
t
 = 
	`__log_ush_comm
(
dbv
, &
l
, 
ags
)) != 0)

287 
nic_check
;

294 i(
	`LF_ISSET
(
DB_LOG_CHKPNT
))

295 

->

.
_wc_bys
 =p->.
_wc_mbys
 = 0;

298 
	`STAT
(++

->

.
_cd
);

301 
nic_check
:

308 i(
t
 !0 && 
	`IS_REP_MASTER
(
dbv
))

309 
t
 = 
	`__db_nic
(
dbv
,et);

312 
r
: i(
lock_hd
)

313 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

314 i(
ed_
)

315 
	`__os_
(
dbv
, 
dbt
->
da
);

321 i(
t
 =0 && !
	`IS_ZERO_LSN
(
d_l
&& 

->
db_log_autemove
)

322 
	`__log_autemove
(
dbv
);

324  (
t
);

325 
	}
}

335 
	$__log_cut_l
(
dbv
, 
lp
, 
mby
, 
by
)

336 
DB_ENV
 *
dbv
;

337 
DB_LSN
 *
lp
;

338 
u_t32_t
 *
mby
, *
by
;

340 
DB_LOG
 *
db
;

341 
LOG
 *

;

343 
db
 = 
dbv
->
lg_hd
;

344 

 = 
db
->
gfo
.
imy
;

346 
	`LOG_SYSTEM_LOCK
(
dbv
);

357 *
lp
 = 

->
l
;

358 i(

->
l
.
offt
 >p->
n
)

359 
lp
->
offt
 -

->
n
;

368 i(
mby
 !
NULL
) {

369 *
mby
 = 

->

.
_wc_mbys
;

370 *
by
 = (
u_t32_t
)(

->

.
_wc_bys
 +p->
b_off
);

373 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

376 
	}
}

384 
	$__log_put_xt
(
dbv
, 
l
, 
dbt
, 
hdr
, 
d_lp
)

385 
DB_ENV
 *
dbv
;

386 
DB_LSN
 *
l
;

387 cڡ 
DBT
 *
dbt
;

388 
HDR
 *
hdr
;

389 
DB_LSN
 *
d_lp
;

391 
DB_LOG
 *
db
;

392 
DB_LSN
 
d_l
;

393 
LOG
 *

;

394 
adv_fe
, 
wfe
, 
t
;

396 
db
 = 
dbv
->
lg_hd
;

397 

 = 
db
->
gfo
.
imy
;

407 
d_l
 = 

->
l
;

408 
wfe
 = 0;

409 
adv_fe
 = 0;

414 i(

->
rsi
.
vsi
 !
DB_LOGVERSION
) {

415 
	`__log_t_vsi
(
dbv
, 
DB_LOGVERSION
);

416 
adv_fe
 = 1;

424 i(
adv_fe
 || 

->
l
.
offt
 == 0 ||

425 

->
l
.
offt
 + 
hdr
->
size
 + 
dbt
->siz>p->
log_size
) {

426 i(
hdr
->
size
 + (
LOGP
+ 
dbt
->siz> 

->
log_size
) {

427 
	`__db_rx
(
dbv
,

429 (
u_lg
)
hdr
->
size
 + (
LOGP
+ 
dbt
->size,

430 (
u_lg
)

->
log_size
);

431  (
EINVAL
);

434 i((
t
 = 
	`__log_wfe
(
db
, 
NULL
, 0, 0)) != 0)

435  (
t
);

444 
wfe
 = 1;

448 i(
wfe
)

449 *
d_lp
 = 
d_l
;

452  (
	`__log_pu
(
db
, 
l
, 
dbt
, 

->l.
offt
 -p->
n
, 
hdr
));

453 
	}
}

460 
	$__log_ush_comm
(
dbv
, 
lp
, 
ags
)

461 
DB_ENV
 *
dbv
;

462 cڡ 
DB_LSN
 *
lp
;

463 
u_t32_t
 
ags
;

465 
DB_LOG
 *
db
;

466 
DB_LSN
 
ush_l
;

467 
LOG
 *

;

468 
t
;

470 
db
 = 
dbv
->
lg_hd
;

471 

 = 
db
->
gfo
.
imy
;

472 
ush_l
 = *
lp
;

474 
t
 = 0;

483 i(
	`LF_ISSET
(
DB_FLUSH
))

484 
t
 = 
	`__log_ush_t
(
db
, &
ush_l
, 1);

485 i(!

->
db_log_memy
 &&p->
b_off
 != 0)

486 i((
t
 = 
	`__log_wre
(
db
,

487 
db
->
bu
, (
u_t32_t
)

->
b_off
)) == 0)

488 

->
b_off
 = 0;

496 i(
t
 =0 || !
	`LF_ISSET
(
DB_LOG_COMMIT
))

497  (
t
);

499 i(
ush_l
.
fe
 !

->
l
.f|| flush_l.
offt
 <p->
w_off
)

512 i(
	`__txn_f_abt
(
dbv
,

513 
db
->
bu
 + 
ush_l
.
offt
 - 

->
w_off
) == 0)

514 ()
	`__log_ush_t
(
db
, &
ush_l
, 0);

516  (
t
);

517 
	}
}

527 
	$__log_wfe
(
db
, 
lp
, 
logfe
, 
vsi
)

528 
DB_LOG
 *
db
;

529 
DB_LSN
 *
lp
;

530 
u_t32_t
 
logfe
;

531 
u_t32_t
 
vsi
;

533 
DB_CIPHER
 *
db_ch
;

534 
DB_ENV
 *
dbv
;

535 
DB_LSN
 
l
;

536 
DBT
 
t
;

537 
HDR
 
hdr
;

538 
LOG
 *

;

539 
ed_
, 
t
;

540 
u_t32_t
 
ϡoff
;

541 
size_t
 
tsize
;

542 
u_t8_t
 *
tmp
;

544 
dbv
 = 
db
->dbenv;

545 

 = 
db
->
gfo
.
imy
;

551 i(
logfe
 =0 && 

->
l
.
offt
 != 0) {

565 i((
t
 = 
	`__log_ush_t
(
db
, 
NULL
, 0)) != 0)

566  (
t
);

572 
ϡoff
 = 

->
l
.
offt
;

575 ++

->
l
.
fe
;

576 

->
l
.
offt
 = 0;

579 

->
w_off
 = 0;

581 
ϡoff
 = 0;

588 i(
logfe
 != 0) {

589 

->
l
.
fe
 = 
logfe
;

590 

->
l
.
offt
 = 0;

591 

->
w_off
 = 0;

592 i(

->
db_log_memy
) {

593 
l
 = 

->lsn;

594 ()
	`__log_zo
(
dbv
, &
l
);

596 

->
s_l
 =p->
l
;

597 i((
t
 = 
	`__log_wfh
(
db
, 1)) != 0)

598  (
t
);

602 
	`DB_ASSERT
(
dbv
, 

->
db_log_memy
 ||p->
b_off
 == 0);

603 i(

->
db_log_memy
 &&

604 (
t
 = 
	`__log_mem_wfe
(
db
, 

->
l
.
fe
)) != 0)

605  (
t
);

612 
	`memt
(&
t
, 0, (t));

613 
	`memt
(&
hdr
, 0, (
HDR
));

615 
ed_
 = 0;

616 
tsize
 = (
LOGP
);

617 
db_ch
 = 
dbv
->
yo_hd
;

618 i(
	`CRYPTO_ON
(
dbv
))

619 
tsize
 +
db_ch
->
	`adj_size
(tsize);

620 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
tsize
, &
tmp
)) != 0)

621  (
t
);

622 
ed_
 = 1;

627 i(
vsi
 != 0) {

628 
	`__log_t_vsi
(
dbv
, 
vsi
);

629 i((
t
 = 
	`__v__c
(
dbv
, 
vsi
)) != 0)

630 
r
;

632 

->
rsi
.
log_size
 =p->log_siz->
log_nsize
;

633 
	`memy
(
tmp
, &

->
rsi
, (
LOGP
));

634 
	`DB_SET_DBT
(
t
, 
tmp
, 
tsize
);

636 i((
t
 =

637 
	`__log_y_cd
(
dbv
, &
t
, &
hdr
, (
u_t32_t
)
tsize
)) != 0)

638 
r
;

639 i(

->
rsi
.
vsi
 !
DB_LOGVERSION
)

640 
	`__db_chksum
(
NULL
, 
t
.
da
,.
size
,

641 (
	`CRYPTO_ON
(
dbv
)? 
db_ch
->
mac_key
 : 
NULL
, 
hdr
.
chksum
);

643 
	`__db_chksum
(&
hdr
, 
t
.
da
,.
size
,

644 (
	`CRYPTO_ON
(
dbv
)? 
db_ch
->
mac_key
 : 
NULL
, 
hdr
.
chksum
);

646 i((
t
 = 
	`__log_pu
(
db
, &
l
,

647 &
t
, 
ϡoff
 =0 ? 0 :aof- 

->
n
, &
hdr
)) != 0)

648 
r
;

651 i(
lp
 !
NULL
)

652 *
lp
 = 

->
l
;

654 
r
: i(
ed_
)

655 
	`__os_
(
dbv
, 
tmp
);

656  (
t
);

657 
	}
}

664 
	$__log_pu
(
db
, 
l
, 
dbt
, 
ev
, 
h
)

665 
DB_LOG
 *
db
;

666 
DB_LSN
 *
l
;

667 cڡ 
DBT
 *
dbt
;

668 
u_t32_t
 
ev
;

669 
HDR
 *
h
;

671 
DB_CIPHER
 *
db_ch
;

672 
DB_ENV
 *
dbv
;

673 
DB_LSN
 
f_l
;

674 
LOG
 *

;

675 
HDR
 
tmp
, *
hdr
;

676 
t
, 
t_t
;

677 
size_t
 
b_off
, 

;

678 
u_t32_t
 
w_off
;

680 
dbv
 = 
db
->dbenv;

681 

 = 
db
->
gfo
.
imy
;

686 
db_ch
 = 
dbv
->
yo_hd
;

687 i(
h
 =
NULL
) {

688 
hdr
 = &
tmp
;

689 
	`memt
(
hdr
, 0, (
HDR
));

690 i(
	`CRYPTO_ON
(
dbv
))

691 
hdr
->
size
 = 
HDR_CRYPTO_SZ
;

693 
hdr
->
size
 = 
HDR_NORMAL_SZ
;

695 
hdr
 = 
h
;

698 
b_off
 = 

->b_off;

699 
w_off
 = 

->w_off;

700 
f_l
 = 

->f_lsn;

707 
hdr
->
ev
 =rev;

708 
hdr
->
n
 = (
u_t32_t
)hdr->
size
 + 
dbt
->size;

718 i(
hdr
->
chksum
[0] == 0)

719 i(

->
rsi
.
vsi
 !
DB_LOGVERSION
)

720 
	`__db_chksum
(
NULL
, 
dbt
->
da
, dbt->
size
,

721 (
	`CRYPTO_ON
(
dbv
)? 
db_ch
->
mac_key
 : 
NULL
,

722 
hdr
->
chksum
);

724 
	`__db_chksum
(
hdr
, 
dbt
->
da
, dbt->
size
,

725 (
	`CRYPTO_ON
(
dbv
)? 
db_ch
->
mac_key
 : 
NULL
,

726 
hdr
->
chksum
);

727 i(

->
rsi
.
vsi
 =
DB_LOGVERSION
) {

732 
	`LOG_HDR_SUM
(
	`CRYPTO_ON
(
dbv
), 
hdr
, hdr->
chksum
);

735 i(

->
db_log_memy
 && (
t
 = 
	`__log_mem_chka
(
db
,

736 (
u_t32_t
)
hdr
->
size
 + 
dbt
->size)) != 0)

737 
r
;

743 *
l
 = 

->lsn;

745 i((
t
 = 
	`__log_fl
(
db
, 
l
, 
hdr
, (
u_t32_t
)hdr->
size
)) != 0)

746 
r
;

748 i((
t
 = 
	`__log_fl
(
db
, 
l
, 
dbt
->
da
, dbt->
size
)) != 0)

749 
r
;

751 

->
n
 = (
u_t32_t
)(
hdr
->
size
 + 
dbt
->size);

752 

->
l
.
offt
 +(
u_t32_t
)(
hdr
->
size
 + 
dbt
->size);

754 
r
:

760 i(
w_off
 + 

->
bufr_size
 <p->w_off) {

761 
	`DB_ASSERT
(
dbv
, !

->
db_log_memy
);

762 i((
t_t
 = 
	`__os_ek
(
dbv
, 
db
->
lfhp
, 0, 0, 
w_off
)) != 0 ||

763 (
t_t
 = 
	`__os_ad
(
dbv
, 
db
->
lfhp
, db->
bu
,

764 
b_off
, &

)) != 0)

765  (
	`__db_nic
(
dbv
, 
t_t
));

766 i(

 !
b_off
) {

767 
	`__db_rx
(
dbv
, "Shortead whileestoringog");

768  (
	`__db_nic
(
dbv
, 
EIO
));

773 

->
w_off
 = w_off;

774 

->
b_off
 = b_off;

775 

->
f_l
 = f_lsn;

777  (
t
);

778 
	}
}

787 
	$__log_ush_
(
dbv
, 
l
)

788 
DB_ENV
 *
dbv
;

789 cڡ 
DB_LSN
 *
l
;

791 
DB_THREAD_INFO
 *

;

792 
t
;

794 
	`PANIC_CHECK
(
dbv
);

795 
	`ENV_REQUIRES_CONFIG
(
dbv
,

796 
dbv
->
lg_hd
, "DB_ENV->log_ush", 
DB_INIT_LOG
);

798 
	`ENV_ENTER
(
dbv
, 

);

799 
	`REPLICATION_WRAP
(
dbv
, (
	`__log_ush
(dbv, 
l
)), 
t
);

800 
	`ENV_LEAVE
(
dbv
, 

);

801  (
t
);

802 
	}
}

812 
	#ALREADY_FLUSHED
(

, 
lp
) \

813 (((

)->
s_l
.
fe
 > (
lp
)->file) || \

814 ((

)->
s_l
.
fe
 =(
lp
)->file && \

815 (

)->
s_l
.
offt
 > (
lp
)->offt))

	)

824 
	$__log_ush
(
dbv
, 
l
)

825 
DB_ENV
 *
dbv
;

826 cڡ 
DB_LSN
 *
l
;

828 
DB_LOG
 *
db
;

829 
LOG
 *

;

830 
t
;

832 
db
 = 
dbv
->
lg_hd
;

833 

 = 
db
->
gfo
.
imy
;

834 i(
l
 !
NULL
 && 
	`ALREADY_FLUSHED
(

,sn))

836 
	`LOG_SYSTEM_LOCK
(
dbv
);

837 
t
 = 
	`__log_ush_t
(
db
, 
l
, 1);

838 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

839  (
t
);

840 
	}
}

850 
	$__log_ush_t
(
db
, 
lp
, 
a
)

851 
DB_LOG
 *
db
;

852 cڡ 
DB_LSN
 *
lp
;

853 
a
;

855 
__db_comm
 *
comm
;

856 
DB_ENV
 *
dbv
;

857 
DB_LSN
 
ush_l
, 
f_l
;

858 
LOG
 *

;

859 
size_t
 
b_off
;

860 
u_t32_t
 
ncomm
, 
w_off
;

861 
do_ush
, 
f
, 
t
;

863 
dbv
 = 
db
->dbenv;

864 

 = 
db
->
gfo
.
imy
;

865 
ncomm
 = 0;

866 
t
 = 0;

868 i(

->
db_log_memy
) {

869 

->
s_l
 =p->
l
;

870 
	`STAT
(++

->

.
_scou
);

879 i(
lp
 =
NULL
) {

880 
ush_l
.
fe
 = 

->
l
.file;

881 
ush_l
.
offt
 = 

->
l
.off-p->
n
;

882 } i(
lp
->
fe
 > 

->
l
.file ||

883 (
lp
->
fe
 =

->
l
.file &&

884 
lp
->
offt
 > 

->
l
.off-p->
n
)) {

885 
	`__db_rx
(
dbv
,

887 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

888 (
u_lg
)

->
l
.
fe
, (u_lgp->l.
offt
);

889 
	`__db_rx
(
dbv
, "%s %s %s",

893  (
	`__db_nic
(
dbv
, 
DB_RUNRECOVERY
));

895 i(
	`ALREADY_FLUSHED
(

, 
lp
))

897 
ush_l
 = *
lp
;

904 i(
a
 && 

->
_ush
 != 0) {

905 i((
comm
 = 
	`SH_TAILQ_FIRST
(

906 &

->
_comms
, 
__db_comm
)=
NULL
) {

907 i((
t
 = 
	`__v_loc
(&
db
->
gfo
,

908 (
__db_comm
), &
comm
)) != 0)

909 
ush
;

910 
	`memt
(
comm
, 0, (*commit));

911 i((
t
 = 
	`__mux_loc
(
dbv
, 
MTX_TXN_COMMIT
,

912 
DB_MUTEX_SELF_BLOCK
, &
comm
->
mtx_txnwa
)) != 0) {

913 
	`__v_loc_
(&
db
->
gfo
, 
comm
);

914  (
t
);

916 
	`MUTEX_LOCK
(
dbv
, 
comm
->
mtx_txnwa
);

918 
	`SH_TAILQ_REMOVE
(

919 &

->
_comms
, 
comm
, 
lks
, 
__db_comm
);

921 

->
ncomm
++;

927 i(
	`LOG_COMPARE
(&

->
t_l
, &
ush_l
) < 0)

928 

->
t_l
 = 
ush_l
;

930 
comm
->
l
 = 
ush_l
;

931 
	`SH_TAILQ_INSERT_HEAD
(

932 &

->
comms
, 
comm
, 
lks
, 
__db_comm
);

933 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

935 
	`MUTEX_LOCK
(
dbv
, 
comm
->
mtx_txnwa
);

936 
	`LOG_SYSTEM_LOCK
(
dbv
);

938 

->
ncomm
--;

944 
do_ush
 = 
	`F_ISSET
(
comm
, 
DB_COMMIT_FLUSH
);

945 
	`F_CLR
(
comm
, 
DB_COMMIT_FLUSH
);

946 
	`SH_TAILQ_INSERT_HEAD
(

947 &

->
_comms
, 
comm
, 
lks
, 
__db_comm
);

948 i(
do_ush
) {

949 

->
_ush
--;

950 
ush_l
 = 

->
t_l
;

959 
ush
: 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_ush
);

967 i(
ush_l
.
fe
 < 

->
s_l
.file ||

968 (
ush_l
.
fe
 =

->
s_l
.file &&

969 
ush_l
.
offt
 < 

->
s_l
.offset)) {

970 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_ush
);

971 
de
;

983 i(

->
b_off
 !0 && 
	`LOG_COMPARE
(&
ush_l
, &->
f_l
) >= 0) {

984 i((
t
 = 
	`__log_wre
(
db
,

985 
db
->
bu
, (
u_t32_t
)

->
b_off
)) != 0) {

986 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_ush
);

987 
de
;

990 

->
b_off
 = 0;

991 } i(
db
->
lfhp
 =
NULL
 || db->
lame
 !

->
l
.
fe
)

992 i((
t
 = 
	`__log_wfh
(
db
, 0)) != 0) {

993 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_ush
);

994 
de
;

1002 
b_off
 = 

->b_off;

1003 
w_off
 = 

->w_off;

1004 
f_l
 = 

->f_lsn;

1005 

->
_ush
++;

1006 i(
a
)

1007 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

1010 i((
t
 = 
	`__os_fsync
(
dbv
, 
db
->
lfhp
)) != 0) {

1011 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_ush
);

1012 i(
a
)

1013 
	`LOG_SYSTEM_LOCK
(
dbv
);

1014 
t
 = 
	`__db_nic
(
dbv
,et);

1015  (
t
);

1026 

->
s_l
 = 
f_l
;

1027 i(
b_off
 == 0)

1028 

->
s_l
.
offt
 = 
w_off
;

1030 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_ush
);

1031 i(
a
)

1032 
	`LOG_SYSTEM_LOCK
(
dbv
);

1034 

->
_ush
--;

1035 
	`STAT
(++

->

.
_scou
);

1041 
ncomm
 = 1;

1042 
de
:

1043 i(

->
ncomm
 != 0) {

1044 
f
 = 1;

1045 
	`SH_TAILQ_FOREACH
(
comm
, &

->
comms
, 
lks
, 
__db_comm
)

1046 i(
	`LOG_COMPARE
(&

->
s_l
, &
comm
->
l
) > 0) {

1047 
	`MUTEX_UNLOCK
(
dbv
, 
comm
->
mtx_txnwa
);

1048 
	`SH_TAILQ_REMOVE
(

1049 &

->
comms
, 
comm
, 
lks
, 
__db_comm
);

1050 
ncomm
++;

1051 } i(
f
 == 1) {

1052 
	`F_SET
(
comm
, 
DB_COMMIT_FLUSH
);

1053 
	`MUTEX_UNLOCK
(
dbv
, 
comm
->
mtx_txnwa
);

1054 
	`SH_TAILQ_REMOVE
(

1055 &

->
comms
, 
comm
, 
lks
, 
__db_comm
);

1062 

->
_ush
++;

1063 
f
 = 0;

1066 #ifde
HAVE_STATISTICS


1067 i(

->

.
_maxcommrush
 < 
ncomm
)

1068 

->

.
_maxcommrush
 = 
ncomm
;

1069 i(

->

.
_mcommrush
 > 
ncomm
 ||

1070 

->

.
_mcommrush
 == 0)

1071 

->

.
_mcommrush
 = 
ncomm
;

1074  (
t
);

1075 
	}
}

1082 
	$__log_fl
(
db
, 
l
, 
addr
, 
n
)

1083 
DB_LOG
 *
db
;

1084 
DB_LSN
 *
l
;

1085 *
addr
;

1086 
u_t32_t
 
n
;

1088 
LOG
 *

;

1089 
u_t32_t
 
bsize
, 
ec
;

1090 
size_t
 
nw
, 
ma
;

1091 
t
;

1093 

 = 
db
->
gfo
.
imy
;

1094 
bsize
 = 

->
bufr_size
;

1096 i(

->
db_log_memy
) {

1097 
	`__log_mem_cy
(
db
, 

->
b_off
, 
addr
, 
n
);

1098 

->
b_off
 = (->b_of+ 
n
%p->
bufr_size
;

1102 
n
 > 0) {

1109 i(

->
b_off
 == 0)

1110 

->
f_l
 = *
l
;

1116 i(

->
b_off
 =0 && 
n
 >
bsize
) {

1117 
ec
 = 
n
 / 
bsize
;

1118 i((
t
 = 
	`__log_wre
(
db
, 
addr
, 
ec
 * 
bsize
)) != 0)

1119  (
t
);

1120 
addr
 = (
u_t8_t
 *dd+ 
ec
 * 
bsize
;

1121 
n
 -
ec
 * 
bsize
;

1122 
	`STAT
(++

->

.
_wcou_fl
);

1127 
ma
 = 
bsize
 - 

->
b_off
;

1128 
nw
 = 
ma
 > 
n
 ?en :emain;

1129 
	`memy
(
db
->
bu
 + 

->
b_off
, 
addr
, 
nw
);

1130 
addr
 = (
u_t8_t
 *dd+ 
nw
;

1131 
n
 -(
u_t32_t
)
nw
;

1132 

->
b_off
 +
nw
;

1135 i(

->
b_off
 =
bsize
) {

1136 i((
t
 = 
	`__log_wre
(
db
, db->
bu
, 
bsize
)) != 0)

1137  (
t
);

1138 

->
b_off
 = 0;

1139 
	`STAT
(++

->

.
_wcou_fl
);

1143 
	}
}

1150 
	$__log_wre
(
db
, 
addr
, 
n
)

1151 
DB_LOG
 *
db
;

1152 *
addr
;

1153 
u_t32_t
 
n
;

1155 
DB_ENV
 *
dbv
;

1156 
LOG
 *

;

1157 
size_t
 
nw
;

1158 
t
;

1160 
dbv
 = 
db
->dbenv;

1161 

 = 
db
->
gfo
.
imy
;

1163 
	`DB_ASSERT
(
dbv
, !

->
db_log_memy
);

1171 i(
db
->
lfhp
 =
NULL
 || db->
lame
 !

->
l
.
fe
 ||

1172 
db
->
lf_timeamp
 !

->
timeamp
)

1173 i((
t
 = 
	`__log_wfh
(
db
, 

->
w_off
 == 0)) != 0)

1174  (
t
);

1185 #ifde
HAVE_FILESYSTEM_NOTZERO


1186 i(

->
w_off
 =0 && !
	`__os_fs_nzo
())

1188 i(

->
w_off
 == 0)

1190 ()
	`__db_fe_exnd
(
dbv
, 
db
->
lfhp
, 

->
log_size
);

1196 i((
t
 = 
	`__os_io
(
dbv
, 
DB_IO_WRITE
,

1197 
db
->
lfhp
, 0, 0, 

->
w_off
, 
n
, 
addr
, &
nw
)) != 0)

1198  (
t
);

1201 

->
w_off
 +
n
;

1204 i((

->

.
_wc_bys
 +
n
>
MEGABYTE
) {

1205 

->

.
_wc_bys
 -
MEGABYTE
;

1206 ++

->

.
_wc_mbys
;

1208 #ifde
HAVE_STATISTICS


1209 i((

->

.
_w_bys
 +
n
>
MEGABYTE
) {

1210 

->

.
_w_bys
 -
MEGABYTE
;

1211 ++

->

.
_w_mbys
;

1213 ++

->

.
_wcou
;

1217 
	}
}

1226 
	$__log_fe_
(
dbv
, 
l
, 
m
, 
n
)

1227 
DB_ENV
 *
dbv
;

1228 cڡ 
DB_LSN
 *
l
;

1229 *
m
;

1230 
size_t
 
n
;

1232 
DB_THREAD_INFO
 *

;

1233 
t
;

1235 
	`PANIC_CHECK
(
dbv
);

1236 
	`ENV_REQUIRES_CONFIG
(
dbv
,

1237 
dbv
->
lg_hd
, "DB_ENV->log_fe", 
DB_INIT_LOG
);

1239 i(
	`F_ISSET
(
dbv
, 
DB_ENV_LOG_INMEMORY
)) {

1240 
	`__db_rx
(
dbv
,

1242  (
EINVAL
);

1245 
	`ENV_ENTER
(
dbv
, 

);

1246 
	`REPLICATION_WRAP
(
dbv
, (
	`__log_fe
(dbv, 
l
, 
m
, 
n
)), 
t
);

1247 
	`ENV_LEAVE
(
dbv
, 

);

1248  (
t
);

1249 
	}
}

1256 
	$__log_fe
(
dbv
, 
l
, 
m
, 
n
)

1257 
DB_ENV
 *
dbv
;

1258 cڡ 
DB_LSN
 *
l
;

1259 *
m
;

1260 
size_t
 
n
;

1262 
DB_LOG
 *
db
;

1263 
t
;

1264 *
me
;

1266 
db
 = 
dbv
->
lg_hd
;

1267 
	`LOG_SYSTEM_LOCK
(
dbv
);

1268 
t
 = 
	`__log_me
(
db
, 
l
->
fe
, &
me
, 
NULL
, 0);

1269 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

1270 i(
t
 != 0)

1271  (
t
);

1274 i(
n
 < 
	`
(
me
) + 1) {

1275 *
m
 = '\0';

1276 
	`__db_rx
(
dbv
, "DB_ENV->log_file:ame buffer isoo short");

1277  (
EINVAL
);

1279 ()
	`ry
(
m
, 
me
);

1280 
	`__os_
(
dbv
, 
me
);

1283 
	}
}

1290 
	$__log_wfh
(
db
, 

)

1291 
DB_LOG
 *
db
;

1292 

;

1294 
DB_ENV
 *
dbv
;

1295 
LOG
 *

;

1296 
u_t32_t
 
ags
;

1297 
t
;

1298 
logfe_vidy
 
us
;

1300 
dbv
 = 
db
->dbenv;

1301 

 = 
db
->
gfo
.
imy
;

1304 i(
db
->
lfhp
 !
NULL
) {

1305 ()
	`__os_ohd
(
dbv
, 
db
->
lfhp
);

1306 
db
->
lfhp
 = 
NULL
;

1309 
ags
 = 
DB_OSO_SEQ
 |

1310 (

 ? 
DB_OSO_CREATE
 : 0) |

1311 (
	`F_ISSET
(
dbv
, 
DB_ENV_DIRECT_LOG
? 
DB_OSO_DIRECT
 : 0) |

1312 (
	`F_ISSET
(
dbv
, 
DB_ENV_DSYNC_LOG
? 
DB_OSO_DSYNC
 : 0);

1315 
db
->
lame
 = 

->
l
.
fe
;

1316 i((
t
 = 
	`__log_vid
(
db
, db->
lame
, 0, &db->
lfhp
,

1317 
ags
, &
us
, 
NULL
)) != 0)

1318 
	`__db_r
(
dbv
, 
t
,

1319 "DB_ENV->log_wfh: %lu", (
u_lg
)

->
l
.
fe
);

1320 i(
us
 !
DB_LV_NORMAL
 && stu!
DB_LV_INCOMPLETE
 &&

1321 
us
 !
DB_LV_OLD_READABLE
)

1322 
t
 = 
DB_NOTFOUND
;

1324  (
t
);

1325 
	}
}

1335 
	$__log_me
(
db
, 
fumb
, 
m
, 
fh
, 
ags
)

1336 
DB_LOG
 *
db
;

1337 
u_t32_t
 
fumb
, 
ags
;

1338 **
m
;

1339 
DB_FH
 **
fh
;

1341 
DB_ENV
 *
dbv
;

1342 
LOG
 *

;

1343 
mode
, 
t
;

1344 *
ame
;

1345 
d
[(
LFPREFIX
+ 5 + 20], 
w
[(LFPREFIX) + 10 + 20];

1347 
dbv
 = 
db
->dbenv;

1348 

 = 
db
->
gfo
.
imy
;

1350 
	`DB_ASSERT
(
dbv
, !

->
db_log_memy
);

1370 ()
	`tf
(
w
, ew), 
LFNAME
, 
fumb
);

1371 i((
t
 = 
	`__db_ame
(
dbv
,

1372 
DB_APP_LOG
, 
w
, 0, 
NULL
, 
m
)!0 || 
fh
 == NULL)

1373  (
t
);

1376 i(

->
femode
 == 0)

1377 
mode
 = 
dbv
->
db_mode
;

1379 
	`LF_SET
(
DB_OSO_ABSMODE
);

1380 
mode
 = 

->
femode
;

1384 
db
->
lf_timeamp
 = 

->
timeamp
;

1385 i((
t
 = 
	`__os_ݒ
(
dbv
, *
m
, 0, 
ags
, 
mode
, 
fh
)) == 0)

1393 i(
t
 !
ENOENT
) {

1394 
	`__db_r
(
dbv
, 
t
, "%s:og fuėdab", *
m
);

1395  (
	`__db_nic
(
dbv
, 
t
));

1402 i(!
	`LF_ISSET
(
DB_OSO_RDONLY
)) {

1403 
	`__db_r
(
dbv
, 
t
, "%s:og fݒ faed", *
m
);

1404  (
	`__db_nic
(
dbv
, 
t
));

1408 ()
	`tf
(
d
, (d), 
LFNAME_V1
, 
fumb
);

1409 i((
t
 = 
	`__db_ame
(
dbv
, 
DB_APP_LOG
, 
d
, 0, 
NULL
, &
ame
)) != 0)

1410 
r
;

1417 i((
t
 = 
	`__os_ݒ
(
dbv
, 
ame
, 0, 
ags
, 
mode
, 
fh
)) == 0) {

1418 
	`__os_
(
dbv
, *
m
);

1419 *
m
 = 
ame
;

1431 
r
: 
	`__os_
(
dbv
, 
ame
);

1432  (
t
);

1433 
	}
}

1449 
	$__log_p_put
(
dbv
, 
lp
, 
c
, 
ags
)

1450 
DB_ENV
 *
dbv
;

1451 
DB_LSN
 *
lp
;

1452 cڡ 
DBT
 *
c
;

1453 
u_t32_t
 
ags
;

1455 
DB_CIPHER
 *
db_ch
;

1456 
DB_LOG
 *
db
;

1457 
HDR
 
hdr
;

1458 
DBT
 *
dbt
, 
t
;

1459 
LOG
 *

;

1460 
ed_
, 
t
;

1462 
db
 = 
dbv
->
lg_hd
;

1463 

 = 
db
->
gfo
.
imy
;

1465 
	`LOG_SYSTEM_LOCK
(
dbv
);

1466 
	`memt
(&
hdr
, 0, (
HDR
));

1467 
t
 = *
c
;

1468 
dbt
 = &
t
;

1469 
ed_
 = 0;

1470 
db_ch
 = (
DB_CIPHER
 *)
dbv
->
yo_hd
;

1471 i(
	`CRYPTO_ON
(
dbv
))

1472 
t
.
size
 +
db_ch
->
	`adj_size
(
c
->size);

1473 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
t
.
size
, &t.
da
)) != 0)

1474 
r
;

1475 
ed_
 = 1;

1476 
	`memy
(
t
.
da
, 
c
->da,ec->
size
);

1478 i((
t
 = 
	`__log_y_cd
(
dbv
, 
dbt
, &
hdr
, 
c
->
size
)) != 0)

1479 
r
;

1480 
	`__db_chksum
(&
hdr
, 
t
.
da
,.
size
,

1481 (
	`CRYPTO_ON
(
dbv
)? 
db_ch
->
mac_key
 : 
NULL
, 
hdr
.
chksum
);

1483 
	`DB_ASSERT
(
dbv
, 
	`LOG_COMPARE
(
lp
, &

->
l
) == 0);

1484 
t
 = 
	`__log_pu
(
db
, 
lp
, 
dbt
, 

->
l
.
offt
 -p->
n
, &
hdr
);

1485 
r
:

1489 

->
ady_l
 =p->
l
;

1491 i(
	`LF_ISSET
(
DB_LOG_CHKPNT
))

1492 

->

.
_wc_bys
 =p->.
_wc_mbys
 = 0;

1495 
	`STAT
(++

->

.
_cd
);

1496 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

1497 i(
ed_
)

1498 
	`__os_
(
dbv
, 
t
.
da
);

1499  (
t
);

1500 
	}
}

1503 
	$__log_y_cd
(
dbv
, 
dbt
, 
hdr
, 
ig
)

1504 
DB_ENV
 *
dbv
;

1505 
DBT
 *
dbt
;

1506 
HDR
 *
hdr
;

1507 
u_t32_t
 
ig
;

1509 
DB_CIPHER
 *
db_ch
;

1510 
t
;

1512 i(
	`CRYPTO_ON
(
dbv
)) {

1513 
db_ch
 = (
DB_CIPHER
 *)
dbv
->
yo_hd
;

1514 
hdr
->
size
 = 
HDR_CRYPTO_SZ
;

1515 
hdr
->
ig_size
 = 
ig
;

1516 i((
t
 = 
db_ch
->
	`y
(
dbv
, db_ch->
da
,

1517 
hdr
->
iv
, 
dbt
->
da
, dbt->
size
)) != 0)

1518  (
t
);

1520 
hdr
->
size
 = 
HDR_NORMAL_SZ
;

1523 
	}
}

	@../log/log_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

16 #ifde
HAVE_STATISTICS


17 
__log_t_l
 
__P
((
DB_ENV
 *, 
u_t32_t
));

18 
__log_t_s
 
__P
((
DB_ENV
 *, 
u_t32_t
));

19 
__log_
 
__P
((
DB_ENV
 *, 
DB_LOG_STAT
 **, 
u_t32_t
));

28 
	$__log__
(
dbv
, 
p
, 
ags
)

29 
DB_ENV
 *
dbv
;

30 
DB_LOG_STAT
 **
p
;

31 
u_t32_t
 
ags
;

33 
DB_THREAD_INFO
 *

;

34 
t
;

36 
	`PANIC_CHECK
(
dbv
);

37 
	`ENV_REQUIRES_CONFIG
(
dbv
,

38 
dbv
->
lg_hd
, "DB_ENV->log_", 
DB_INIT_LOG
);

40 i((
t
 = 
	`__db_fchk
(
dbv
,

41 "DB_ENV->log_", 
ags
, 
DB_STAT_CLEAR
)) != 0)

42  (
t
);

44 
	`ENV_ENTER
(
dbv
, 

);

45 
	`REPLICATION_WRAP
(
dbv
, (
	`__log_
(dbv, 
p
, 
ags
)), 
t
);

46 
	`ENV_LEAVE
(
dbv
, 

);

47  (
t
);

48 
	}
}

55 
	$__log_
(
dbv
, 
p
, 
ags
)

56 
DB_ENV
 *
dbv
;

57 
DB_LOG_STAT
 **
p
;

58 
u_t32_t
 
ags
;

60 
DB_LOG
 *
db
;

61 
DB_LOG_STAT
 *
s
;

62 
LOG
 *

;

63 
t
;

65 *
p
 = 
NULL
;

67 
db
 = 
dbv
->
lg_hd
;

68 

 = 
db
->
gfo
.
imy
;

70 i((
t
 = 
	`__os_umloc
(
dbv
, (
DB_LOG_STAT
), &
s
)) != 0)

71  (
t
);

74 
	`LOG_SYSTEM_LOCK
(
dbv
);

75 *
s
 = 

->

;

76 i(
	`LF_ISSET
(
DB_STAT_CLEAR
))

77 
	`memt
(&

->

, 0, (lp->stat));

79 
s
->
_magic
 = 

->
rsi
.
magic
;

80 
s
->
_vsi
 = 

->
rsi
.
vsi
;

81 
s
->
_mode
 = 

->
femode
;

82 
s
->
_lg_bsize
 = 

->
bufr_size
;

83 
s
->
_lg_size
 = 

->
log_nsize
;

85 
	`__mux_t_wa_fo
(
dbv
, 

->
mtx_gi
,

86 &
s
->
_gi_wa
, &s->
_gi_nowa
);

87 i(
	`LF_ISSET
(
DB_STAT_CLEAR
 | 
DB_STAT_SUBSYSTEM
) == DB_STAT_CLEAR)

88 
	`__mux_r
(
dbv
, 

->
mtx_gi
);

89 
s
->
_gsize
 = 
db
->
gfo
.

->
size
;

91 
s
->
_cur_fe
 = 

->
l
.
fe
;

92 
s
->
_cur_offt
 = 

->
l
.
offt
;

93 
s
->
_disk_fe
 = 

->
s_l
.
fe
;

94 
s
->
_disk_offt
 = 

->
s_l
.
offt
;

96 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

98 *
p
 = 
s
;

100 
	}
}

109 
	$__log__t_
(
dbv
, 
ags
)

110 
DB_ENV
 *
dbv
;

111 
u_t32_t
 
ags
;

113 
DB_THREAD_INFO
 *

;

114 
t
;

116 
	`PANIC_CHECK
(
dbv
);

117 
	`ENV_REQUIRES_CONFIG
(
dbv
,

118 
dbv
->
lg_hd
, "DB_ENV->log__t", 
DB_INIT_LOG
);

120 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->log_stat_print",

121 
ags
, 
DB_STAT_ALL
 | 
DB_STAT_CLEAR
)) != 0)

122  (
t
);

124 
	`ENV_ENTER
(
dbv
, 

);

125 
	`REPLICATION_WRAP
(
dbv
, (
	`__log__t
(dbv, 
ags
)), 
t
);

126 
	`ENV_LEAVE
(
dbv
, 

);

127  (
t
);

128 
	}
}

137 
	$__log__t
(
dbv
, 
ags
)

138 
DB_ENV
 *
dbv
;

139 
u_t32_t
 
ags
;

141 
u_t32_t
 
ig_ags
;

142 
t
;

144 
ig_ags
 = 
ags
;

145 
	`LF_CLR
(
DB_STAT_CLEAR
 | 
DB_STAT_SUBSYSTEM
);

146 i(
ags
 =0 || 
	`LF_ISSET
(
DB_STAT_ALL
)) {

147 
t
 = 
	`__log_t_s
(
dbv
, 
ig_ags
);

148 i(
ags
 =0 || 
t
 != 0)

149  (
t
);

152 i(
	`LF_ISSET
(
DB_STAT_ALL
) &&

153 (
t
 = 
	`__log_t_l
(
dbv
, 
ig_ags
)) != 0)

154  (
t
);

157 
	}
}

164 
	$__log_t_s
(
dbv
, 
ags
)

165 
DB_ENV
 *
dbv
;

166 
u_t32_t
 
ags
;

168 
DB_LOG_STAT
 *

;

169 
t
;

171 i((
t
 = 
	`__log_
(
dbv
, &

, 
ags
)) != 0)

172  (
t
);

174 i(
	`LF_ISSET
(
DB_STAT_ALL
))

175 
	`__db_msg
(
dbv
, "Defaultoggingegion information:");

176 
	`STAT_HEX
("Log maginumb", 

->
_magic
);

177 
	`STAT_ULONG
("Log vsiڂumb", 

->
_vsi
);

178 
	`__db_dlbys
(
dbv
, "Logecord cache size",

179 (
u_lg
)0, (u_lg)0, (u_lg)

->
_lg_bsize
);

180 
	`__db_msg
(
dbv
, "%#o\tLog fmode", 

->
_mode
);

181 i(

->
_lg_size
 % 
MEGABYTE
 == 0)

182 
	`__db_msg
(
dbv
, "%luMb\tCurrentog file size",

183 (
u_lg
)

->
_lg_size
 / 
MEGABYTE
);

184 i(

->
_lg_size
 % 1024 == 0)

185 
	`__db_msg
(
dbv
, "%luKb\tCurrentog file size",

186 (
u_lg
)

->
_lg_size
 / 1024);

188 
	`__db_msg
(
dbv
, "%lu\tCurrentog file size",

189 (
u_lg
)

->
_lg_size
);

190 
	`__db_dl
(
dbv
, "Recdd ithlog", (
u_lg
)

->
_cd
);

191 
	`__db_dlbys
(
dbv
, "Log bytes written",

192 (
u_lg
)0, (u_lg)

->
_w_mbys
, (u_lg)->
_w_bys
);

193 
	`__db_dlbys
(
dbv
, "Log bytes written sinceast checkpoint",

194 (
u_lg
)0, (u_lg)

->
_wc_mbys
, (u_lg)->
_wc_bys
);

195 
	`__db_dl
(
dbv
, "Tٮog fI/O wres", (
u_lg
)

->
_wcou
);

196 
	`__db_dl
(
dbv
, "Totalog file I/O writes dueo overflow",

197 (
u_lg
)

->
_wcou_fl
);

198 
	`__db_dl
(
dbv
, "Tٮog fushes", (
u_lg
)

->
_scou
);

199 
	`__db_dl
(
dbv
, "Tٮog fI/Ods", (
u_lg
)

->
_rcou
);

200 
	`STAT_ULONG
("Culog fnumb", 

->
_cur_fe
);

201 
	`STAT_ULONG
("Culog fofft", 

->
_cur_offt
);

202 
	`STAT_ULONG
("On-diskog fnumb", 

->
_disk_fe
);

203 
	`STAT_ULONG
("On-diskog fofft", 

->
_disk_offt
);

205 
	`__db_dl
(
dbv
,

206 "Maximum commog flush", (
u_lg
)

->
_maxcommrush
);

207 
	`__db_dl
(
dbv
,

208 "Mimum commog flush", (
u_lg
)

->
_mcommrush
);

210 
	`__db_dlbys
(
dbv
, "Logegion size",

211 (
u_lg
)0, (u_lg)0, (u_lg)

->
_gsize
);

212 
	`__db_dl_p
(
dbv
,

214 (
u_lg
)

->
_gi_wa
, 
	`DB_PCT
(sp->st_region_wait,

215 

->
_gi_wa
 + sp->
_gi_nowa
), 
NULL
);

217 
	`__os_u
(
dbv
, 

);

220 
	}
}

227 
	$__log_t_l
(
dbv
, 
ags
)

228 
DB_ENV
 *
dbv
;

229 
u_t32_t
 
ags
;

231 cڡ 
FN
 

[] = {

232 { 
DBLOG_RECOVER
, "DBLOG_RECOVER" },

233 { 
DBLOG_FORCE_OPEN
, "DBLOG_FORCE_OPEN" },

234 { 0, 
NULL
 }

236 
DB_LOG
 *
db
;

237 
LOG
 *

;

239 
db
 = 
dbv
->
lg_hd
;

240 

 = (
LOG
 *)
db
->
gfo
.
imy
;

242 
	`LOG_SYSTEM_LOCK
(
dbv
);

244 
	`__db_t_gfo
(
dbv
, &
db
->
gfo
, "Log", 
ags
);

246 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

247 
	`__db_msg
(
dbv
, "DB_LOG handle information:");

248 
	`__mux_t_debug_sg
(

249 
dbv
, "DB_LOG hd mux", 
db
->
mtx_dbg
, 
ags
);

250 
	`STAT_ULONG
("Log fme", 
db
->
lame
);

251 
	`__db_t_fh
(
dbv
, "Log fhd", 
db
->
lfhp
, 
ags
);

252 
	`__db_ags
(
dbv
, 
NULL
, 
db
->
ags
, 

, NULL, "\tFlags");

254 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

255 
	`__db_msg
(
dbv
, "LOG handle information:");

256 
	`__mux_t_debug_sg
(

257 
dbv
, "LOGegi mux", 

->
mtx_gi
, 
ags
);

258 
	`__mux_t_debug_sg
(

259 
dbv
, "Fmli mux", 

->
mtx_fi
, 
ags
);

261 
	`STAT_HEX
("rsi.magic", 

->
rsi
.
magic
);

262 
	`STAT_ULONG
("rsi.vsi", 

->
rsi
.
vsi
);

263 
	`__db_dlbys
(
dbv
,

264 "rsi.log_size", (
u_lg
)0, (u_lg)0, 

->
rsi
.
log_size
);

265 
	`STAT_FMT
("log frmissiڠmode", "%#lo", 
u_lg
, 

->
femode
);

266 
	`STAT_LSN
("cufoffLSN", &

->
l
);

267 
	`STAT_LSN
("f bufby LSN", &

->
l
);

268 
	`STAT_ULONG
("cubufofft", 

->
b_off
);

269 
	`STAT_ULONG
("cufwrofft", 

->
w_off
);

270 
	`STAT_ULONG
("ngth oϡecd", 

->
n
);

271 
	`STAT_LONG
("log flush iogss", 

->
_ush
);

272 
	`__mux_t_debug_sg
(

273 
dbv
, "Log flush mux", 

->
mtx_ush
, 
ags
);

275 
	`STAT_LSN
("ϡ synLSN", &

->
s_l
);

282 
	`STAT_LSN
("ched checkpoLSN", &

->
ched_ckp_l
);

284 
	`__db_dlbys
(
dbv
,

285 "log bufsize", (
u_lg
)0, (u_lg)0, 

->
bufr_size
);

286 
	`__db_dlbys
(
dbv
,

287 "log fsize", (
u_lg
)0, (u_lg)0, 

->
log_size
);

288 
	`__db_dlbys
(
dbv
,

289 "xlog fsize", (
u_lg
)0, (u_lg)0, 

->
log_nsize
);

291 
	`STAT_ULONG
("iڠwagcomm", 

->
ncomm
);

292 
	`STAT_LSN
("LSN of comm", &

->
t_l
);

294 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

297 
	}
}

302 
	$__log__
(
dbv
, 
p
, 
ags
)

303 
DB_ENV
 *
dbv
;

304 
DB_LOG_STAT
 **
p
;

305 
u_t32_t
 
ags
;

307 
	`COMPQUIET
(
p
, 
NULL
);

308 
	`COMPQUIET
(
ags
, 0);

310  (
	`__db__n_but
(
dbv
));

311 
	}
}

314 
	$__log__t_
(
dbv
, 
ags
)

315 
DB_ENV
 *
dbv
;

316 
u_t32_t
 
ags
;

318 
	`COMPQUIET
(
ags
, 0);

320  (
	`__db__n_but
(
dbv
));

321 
	}
}

	@../mp/mp_alloc.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/mp.h
"

13 
	~"dbc/txn.h
"

15 
__memp_bad_bufr
 
__P
((
DB_ENV
 *, 
DB_MPOOL_HASH
 *));

25 
	$__memp_loc
(
dbmp
, 
f
, 
m
, 
n
, 
off
, 

)

26 
DB_MPOOL
 *
dbmp
;

27 
REGINFO
 *
f
;

28 
MPOOLFILE
 *
m
;

29 
size_t
 
n
;

30 
roff_t
 *
off
;

31 *

;

33 
BH
 *
bhp
, *
de_bhp
, *
tbhp
;

34 
BH_FROZEN_PAGE
 *
oz_bhp
;

35 
DB_ENV
 *
dbv
;

36 
DB_LSN
 
vl
;

37 
DB_MPOOL_HASH
 *
dbht
, *
hp
, *
hp_d
, *
hp_tmp
;

38 
MPOOL
 *
c_mp
;

39 
MPOOLFILE
 *
bh_m
;

40 
size_t
 
d_a
;

41 
u_t32_t
 
bucks
, 
bufrs
, 
high_iܙy
, 
iܙy
;

42 
u_t32_t
 
put_cou
, 
tٮ_bucks
;

43 
aggssive
, 
loc_ze
, 
giveup
, 
g_de
, 
t
;

44 
u_t8_t
 *
dp
;

45 *
p
;

47 
dbv
 = 
dbmp
->dbenv;

48 
c_mp
 = 
f
->
imy
;

49 
dbht
 = 
	`R_ADDR
(
f
, 
c_mp
->
hb
);

50 
hp_d
 = &
dbht
[
c_mp
->
hb_bucks
];

52 
bucks
 = 
bufrs
 = 
put_cou
 = 
tٮ_bucks
 = 0;

53 
aggssive
 = 
loc_ze
 = 
giveup
 = 
g_de
 = 0;

54 
hp_tmp
 = 
NULL
;

56 
	`STAT
(
c_mp
->

.
_loc
++);

65 i(
m
 !
NULL
) {

66 
n
 = 
	`SSZA
(
BH
, 
buf
+ 
m
->

.
_gesize
;

68 
	`MVCC_BHSIZE
(
m
, 
n
);

71 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

77 
high_iܙy
 = 
c_mp
->
u_cou
 - c_mp->

.
_ges
 / 10;

88 
loc
: i((
t
 = 
	`__v_loc
(
f
, 
n
, &
p
)) == 0) {

89 i(
m
 !
NULL
)

90 
c_mp
->

.
_ges
++;

91 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

96 
	`MVCC_BHALIGN
(
m
, 
p
);

98 
found
: i(
off
 !
NULL
)

99 *
off
 = 
	`R_OFFSET
(
f
, 
p
);

100 *(**)

 = 
p
;

108 #ifde
HAVE_STATISTICS


109 
tٮ_bucks
 +
bucks
;

110 i(
tٮ_bucks
 != 0) {

111 i(
tٮ_bucks
 > 
c_mp
->

.
_loc_max_bucks
)

112 
c_mp
->

.
_loc_max_bucks
 = 
tٮ_bucks
;

113 
c_mp
->

.
_loc_bucks
 +
tٮ_bucks
;

115 i(
bufrs
 != 0) {

116 i(
bufrs
 > 
c_mp
->

.
_loc_max_ges
)

117 
c_mp
->

.
_loc_max_ges
 = 
bufrs
;

118 
c_mp
->

.
_loc_ges
 +
bufrs
;

122 } i(
giveup
 || 
c_mp
->

.
_ges
 == 0) {

123 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

125 
	`__db_rx
(
dbv
,

127  (
t
);

129 
t
 = 0;

135 
d_a
 = 0;

136 
tٮ_bucks
 +
bucks
;

137 
bucks
 = 0;

146 i(
c_mp
->

.
_ges
 == 0)

147 
loc
;

150 
hp
 = &
dbht
[
c_mp
->
ϡ_checked
++];

151 i(
hp
 >
hp_d
) {

152 
c_mp
->
ϡ_checked
 = 0;

153 
hp
 = &
dbht
[
c_mp
->
ϡ_checked
++];

189 i(
bucks
++ =
c_mp
->
hb_bucks
) {

190 i(
d_a
 > 0)

191 
loc
;

192 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

194 ++
aggssive
) {

198 
put_cou
 = 
c_mp
->put_counter;

204 ()
	`__memp_sync_t
(

205 
dbv
, 
NULL
, 0, 
DB_SYNC_ALLOC
, NULL, NULL);

207 
	`__os_p
(
dbv
, 1, 0);

210 
aggssive
 = 1;

211 i(
put_cou
 =
c_mp
->put_counter)

212 
giveup
 = 1;

216 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

217 
loc
;

226 i(
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
=
NULL
)

235 i(
hp
->
hash_iܙy
 =
UINT32_MAX
)

238 i(!
aggssive
) {

240 
iܙy
 = 
hp
->
hash_iܙy
;

241 i(
c_mp
->
u_t
 != 0 &&

242 
c_mp
->
u_t
 <
hp
 - 
dbht
)

243 
iܙy
 -
MPOOL_BASE_DECREMENT
;

247 i(
iܙy
 > 
high_iܙy
)

255 i(
hp_tmp
 =
NULL
) {

256 
hp_tmp
 = 
hp
;

259 i(
c_mp
->
u_t
 &&

260 
c_mp
->
u_t
 <
hp_tmp
 - 
dbht
) {

261 i(
iܙy
 > 
hp_tmp
->
hash_iܙy
 -

262 
MPOOL_BASE_DECREMENT
)

263 
hp
 = 
hp_tmp
;

264 } i(
iܙy
 > 
hp_tmp
->
hash_iܙy
)

265 
hp
 = 
hp_tmp
;

266 
hp_tmp
 = 
NULL
;

270 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

271 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

274 
iܙy
 = 
hp
->
hash_iܙy
;

276 #ifde
DIAGNOSTIC


277 
	`__memp_check_d
(
dbv
, 
hp
);

288 
this_hb
: i((
bhp
 = 
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
)=
NULL
)

289 
xt_hb
;

291 
bufrs
++;

294 
bh_m
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
bhp
->
mf_offt
);

297 
de_bhp
 = 
bhp
, 
tbhp
 = 
	`SH_CHAIN_PREV
(bhp, 
vc
, 
__bh
);

298 
tbhp
 !
NULL
;

299 
de_bhp
 = 
tbhp
,bh
	`SH_CHAIN_PREV
bhp, 
vc
, 
__bh
))

300 i(
tbhp
->
f
 <
bhp
->ref &&

301 
tbhp
->
iܙy
 <
bhp
->priority)

302 
bhp
 = 
tbhp
;

313 i(
de_bhp
 !
bhp
 && olde_bhp->
f
 == 0) {

314 i(
	`F_ISSET
(
bhp
, 
BH_FROZEN
) &&

315 !
	`F_ISSET
(
de_bhp
, 
BH_FROZEN
))

316 
bhp
 = 
de_bhp
;

317 i(
	`BH_OBSOLETE
(
de_bhp
, 
hp
->
d_ad
, 
vl
))

318 
bhp
 = 
de_bhp
;

319 i(!
g_de
 &&

320 
	`__txn_de_ad
(
dbv
, &
hp
->
d_ad
) == 0) {

321 
g_de
 = 1;

322 i(
	`BH_OBSOLETE
(

323 
de_bhp
, 
hp
->
d_ad
, 
vl
))

324 
bhp
 = 
de_bhp
;

328 i(
bhp
->
f
 !0 || (bh!
de_bhp
 &&

329 !
aggssive
 && 
bhp
->
iܙy
 >riority))

330 
xt_hb
;

333 
t
 = 0;

334 i(
	`F_ISSET
(
bhp
, 
BH_DIRTY
)) {

335 ++
bhp
->
f
;

336 
t
 = 
	`__memp_bhwre
(
dbmp
, 
hp
, 
bh_m
, 
bhp
, 0);

337 --
bhp
->
f
;

338 #ifde
HAVE_STATISTICS


339 i(
t
 == 0)

340 ++
c_mp
->

.
_rw_evi
;

343 #ifde
HAVE_STATISTICS


345 ++
c_mp
->

.
_ro_evi
;

353 i(
t
 =0 && 
bh_m
->
muivsi
) {

354 i(!
g_de
 && !
	`SH_CHAIN_HASPREV
(
bhp
, 
vc
) &&

355 !
	`BH_OBSOLETE
(
bhp
, 
hp
->
d_ad
, 
vl
)) {

356 ()
	`__txn_de_ad
(
dbv
,

357 &
hp
->
d_ad
);

358 
g_de
 = 1;

360 i(
	`SH_CHAIN_HASPREV
(
bhp
, 
vc
) ||

361 !
	`BH_OBSOLETE
(
bhp
, 
hp
->
d_ad
, 
vl
)) {

366 i(!
aggssive
 ||

367 
	`F_ISSET
(
bhp
, 
BH_FROZEN
|| bhp->
f
 != 0)

368 
xt_hb
;

369 
t
 = 
	`__memp_bh_ze
(
dbmp
,

370 
f
, 
hp
, 
bhp
, &
loc_ze
);

385 i(
t
 !0 || 
bhp
->
f
 != 0) {

386 i(
t
 !0 && 
aggssive
)

387 
	`__memp_bad_bufr
(
dbv
, 
hp
);

388 
xt_hb
;

401 i(
	`F_ISSET
(
bhp
, 
BH_FROZEN
)) {

402 ++
bhp
->
f
;

403 i((
t
 = 
	`__memp_bh_thaw
(
dbmp
, 
f
, 
hp
,

404 
bhp
, 
NULL
)) != 0) {

405 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

406  (
t
);

408 
loc_ze
 = 0;

409 
this_hb
;

410 } i(
loc_ze
) {

411 i((
t
 = 
	`__memp_bh
(
dbmp
, 
f
, 
hp
, 
bhp
, 0)) != 0)

412  (
t
);

413 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
bh_m
->

.
_gesize
,

414 
PROT_READ
 | 
PROT_WRITE
 | 
PROT_EXEC
);

416 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

417 
	`SH_TAILQ_INSERT_TAIL
(&
c_mp
->
loc_oz
,

418 (
BH_FROZEN_ALLOC
 *)
bhp
, 
lks
);

419 
oz_bhp
 = (
BH_FROZEN_PAGE
 *)

420 ((
BH_FROZEN_ALLOC
 *)
bhp
 + 1);

421 
dp
 = (
u_t8_t
 *)
bhp
->
buf
 + 
bh_m
->

.
_gesize
;

422 (
u_t8_t
 *)(
oz_bhp
 + 1< 
dp
) {

423 
	`SH_TAILQ_INSERT_TAIL
(&
c_mp
->
_oz
,

424 (
BH
 *)
oz_bhp
, 
hq
);

425 
oz_bhp
++;

427 
loc_ze
 = 0;

429 } i(
m
 !
NULL
 &&

430 
m
->

.
_gesize
 =
bh_m
->stat.st_pagesize) {

431 i((
t
 = 
	`__memp_bh
(
dbmp
, 
f
, 
hp
, 
bhp
, 0)) != 0)

432  (
t
);

433 
p
 = 
bhp
;

434 
found
;

436 
d_a
 +(*
bhp
+ 
bh_m
->

.
_gesize
;

437 i((
t
 = 
	`__memp_bh
(
dbmp
, 
f
,

438 
hp
, 
bhp
, 
BH_FREE_FREEMEM
)) != 0)

439  (
t
);

442 i(
aggssive
 > 1)

443 
aggssive
 = 1;

451 
xt_hb
: 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

453 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

461 i(
d_a
 >3 * 
n
)

462 
loc
;

465 
	}
}

474 
	$__memp_
(
f
, 
m
, 
buf
)

475 
REGINFO
 *
f
;

476 
MPOOLFILE
 *
m
;

477 *
buf
;

479 
	`MVCC_BHUNALIGN
(
m
, 
buf
);

480 
	`COMPQUIET
(
m
, 
NULL
);

481 
	`__v_loc_
(
f
, 
buf
);

482 
	}
}

489 
	$__memp_bad_bufr
(
dbv
, 
hp
)

490 
DB_ENV
 *
dbv
;

491 
DB_MPOOL_HASH
 *
hp
;

493 
BH
 *
bhp
, *
ϡ_bhp
;

494 
u_t32_t
 
iܙy
;

500 
bhp
 = 
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
);

501 
ϡ_bhp
 = 
	`SH_TAILQ_LASTP
(&
hp
->
hash_buck
, 
hq
, 
__bh
);

502 i(
bhp
 =
ϡ_bhp
)

506 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
bhp
, 
hq
, 
__bh
);

512 
iܙy
 = 
	`BH_PRIORITY
(
ϡ_bhp
);

518 
	`SH_TAILQ_INSERT_TAIL
(&
hp
->
hash_buck
, 
bhp
, 
hq
);

519 ; 
bhp
 !
NULL
 ; bh
	`SH_CHAIN_PREV
(bhp, 
vc
, 
__bh
))

520 
bhp
->
iܙy
 =riority;

523 
hp
->
hash_iܙy
 = 
	`BH_PRIORITY
(

524 
	`SH_TAILQ_FIRSTP
(&
hp
->
hash_buck
, 
__bh
));

526 #ifde
DIAGNOSTIC


527 
	`__memp_check_d
(
dbv
, 
hp
);

529 
	`COMPQUIET
(
dbv
, 
NULL
);

531 
	}
}

533 #ifde
DIAGNOSTIC


543 
	$__memp_check_d
(
dbv
, 
hp
)

544 
DB_ENV
 *
dbv
;

545 
DB_MPOOL_HASH
 *
hp
;

547 
BH
 *
bhp
, *
f_bhp
, *
tbhp
;

548 
u_t32_t
 
dty
, 
iܙy
, 
ϡ_iܙy
;

550 
dty
 = 0;

555 
ϡ_iܙy
 = 
hp
->
hash_iܙy
;

556 
bhp
 = 
f_bhp
 = 
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
);

557 
bhp
 !
NULL
; bh
	`SH_TAILQ_NEXT
(bhp, 
hq
, 
__bh
)) {

558 
	`DB_ASSERT
(
dbv
, !
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
));

560 i(
	`F_ISSET
(
bhp
, 
BH_DIRTY
))

561 
dty
++;

562 
iܙy
 = 
	`BH_PRIORITY
(
bhp
);

563 
	`DB_ASSERT
(
dbv
, (
bhp
 =
f_bhp
) ?

564 
iܙy
 =
ϡ_iܙy
 :riority >=ast_priority);

565 
ϡ_iܙy
 = 
iܙy
;

568 
tbhp
 = 
	`SH_CHAIN_PREV
(
bhp
, 
vc
, 
__bh
);bh!
NULL
;

569 
tbhp
 = 
	`SH_CHAIN_PREV
bhp, 
vc
, 
__bh
))

570 
	`DB_ASSERT
(
dbv
, 
tbhp
 =
	`SH_CHAIN_PREV
(

571 
	`SH_CHAIN_NEXT
(
tbhp
, 
vc
, 
__bh
), vc, __bh));

578 
tbhp
 = 
	`SH_TAILQ_NEXT
(
bhp
, 
hq
, 
__bh
);bh!
NULL
;

579 
tbhp
 = 
	`SH_TAILQ_NEXT
bhp, 
hq
, 
__bh
))

580 
	`DB_ASSERT
(
dbv
, 
bhp
->
pgno
 !
tbhp
->pgno ||

581 
bhp
->
mf_offt
 !
tbhp
->mf_offset);

583 
	`DB_ASSERT
(
dbv
, 
dty
 =
hp
->
hash_ge_dty
);

584 
	}
}

	@../mp/mp_bh.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/mp.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/txn.h
"

17 
__memp_pgwre


18 
__P
((
DB_ENV
 *, 
DB_MPOOLFILE
 *, 
DB_MPOOL_HASH
 *, 
BH
 *));

28 
	$__memp_bhwre
(
dbmp
, 
hp
, 
m
, 
bhp
, 
ݒ_exs
)

29 
DB_MPOOL
 *
dbmp
;

30 
DB_MPOOL_HASH
 *
hp
;

31 
MPOOLFILE
 *
m
;

32 
BH
 *
bhp
;

33 
ݒ_exs
;

35 
DB_ENV
 *
dbv
;

36 
DB_MPOOLFILE
 *
dbm
;

37 
DB_MPREG
 *
meg
;

38 
t
;

40 
dbv
 = 
dbmp
->dbenv;

47 i(
m
->
ddfe
)

48  (
	`__memp_pgwre
(
dbv
, 
NULL
, 
hp
, 
bhp
));

54 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

55 
	`TAILQ_FOREACH
(
dbm
, &
dbmp
->
dbmfq
, 
q
)

56 i(
dbm
->
m
 =m && !
	`F_ISSET
(dbm, 
MP_READONLY
)) {

57 ++
dbm
->
f
;

60 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

62 i(
dbm
 !
NULL
) {

68 i(
dbm
->
fhp
 =
NULL
) {

70 i(
m
->
no_backg_fe
) {

71 --
dbm
->
f
;

72  (
EPERM
);

75 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

76 i(
dbm
->
fhp
 =
NULL
)

77 
t
 = 
	`__db_ame
(
dbv
, 
DB_APP_TMP
, 
NULL
,

78 
	`F_ISSET
(
dbv
, 
DB_ENV_DIRECT_DB
) ?

79 
DB_OSO_DIRECT
 : 0, &
dbm
->
fhp
, 
NULL
);

81 
t
 = 0;

82 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

83 i(
t
 != 0) {

84 
	`__db_rx
(
dbv
,

86 --
dbm
->
f
;

87  (
t
);

91 
pgwre
;

100 i(!
ݒ_exs
 && 
	`F_ISSET
(
m
, 
MP_EXTENT
))

101  (
EPERM
);

123 i(
	`F_ISSET
(
m
, 
MP_TEMP
|| m->
no_backg_fe
)

124  (
EPERM
);

132 i(
m
->
y
 !0 && m->y !
DB_FTYPE_SET
) {

133 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

134 
	`LIST_FOREACH
(
meg
, &
dbmp
->
dbgq
, 
q
)

135 i(
meg
->
y
 =
m
->ftype)

137 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

138 i(
meg
 =
NULL
)

139  (
EPERM
);

149 i((
t
 = 
	`__memp_f
(
dbv
, &
dbm
)) != 0)

150  (
t
);

151 i((
t
 = 
	`__memp_fݒ
(
dbm
,

152 
m
, 
NULL
, 
DB_DURABLE_UNKNOWN
, 0, m->

.
_gesize
)) != 0) {

153 ()
	`__memp_fo
(
dbm
, 0);

159 i(!
m
->
ddfe
)

160  (
t
);

162 
dbm
 = 
NULL
;

165 
pgwre
:

166 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
m
->

.
_gesize
,

167 
PROT_READ
 | 
PROT_WRITE
 | 
PROT_EXEC
);

168 
t
 = 
	`__memp_pgwre
(
dbv
, 
dbm
, 
hp
, 
bhp
);

169 i(
dbm
 =
NULL
)

170  (
t
);

176 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

177 i(
dbm
->
f
 == 1)

178 
	`F_SET
(
dbm
, 
MP_FLUSH
);

180 --
dbm
->
f
;

181 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

183  (
t
);

184 
	}
}

193 
	$__memp_pgad
(
dbm
, 
hp
, 
bhp
, 
n_
)

194 
DB_MPOOLFILE
 *
dbm
;

195 
DB_MPOOL_HASH
 *
hp
;

196 
BH
 *
bhp
;

197 
n_
;

199 
DB_ENV
 *
dbv
;

200 
MPOOLFILE
 *
m
;

201 
size_t
 
n
, 

;

202 
u_t32_t
 
gesize
;

203 
t
;

205 
dbv
 = 
dbm
->dbenv;

206 
m
 = 
dbm
->mfp;

207 
gesize
 = 
m
->

.
_gesize
;

210 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
bhp
, 
BH_DIRTY_CREATE
 | 
BH_LOCKED
));

211 
	`DB_ASSERT
(
dbv
, 
n_
 || !
	`F_ISSET
(
bhp
, 
BH_DIRTY
));

214 
	`F_SET
(
bhp
, 
BH_LOCKED
 | 
BH_TRASH
);

215 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

221 

 = 0;

222 i(
dbm
->
fhp
 !
NULL
)

223 i((
t
 = 
	`__os_io
(
dbv
, 
DB_IO_READ
, 
dbm
->
fhp
,

224 
bhp
->
pgno
, 
gesize
, 0,agesize, bhp->
buf
, &

)) != 0)

225 
r
;

232 i(

 < 
gesize
) {

240 i(!
n_
) {

241 
t
 = 
DB_PAGE_NOTFOUND
;

242 
r
;

246 
n
 = 
m
->
r_n
 =
DB_CLEARLEN_NOTSET
 ?

247 
gesize
 : 
m
->
r_n
;

248 
	`memt
(
bhp
->
buf
, 0, 
n
);

250 #i
	`defed
(
DIAGNOSTIC
|| defed(
UMRW
)

255 i(
n
 < 
gesize
)

256 
	`memt
(
bhp
->
buf
 + 
n
, 
CLEAR_BYTE
, 
gesize
 -en);

258 #ifde
HAVE_STATISTICS


259 ++
m
->

.
_ge_
;

261 ++
m
->

.
_ge_
;

267 
t
 = 
m
->
y
 =0 ? 0 : 
	`__memp_pg
(
dbm
, 
bhp
, 1);

270 
r
: 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

276 
	`F_CLR
(
bhp
, 
BH_LOCKED
);

277 i(
t
 == 0)

278 
	`F_CLR
(
bhp
, 
BH_TRASH
);

283 i(
	`F_ISSET
(
hp
, 
IO_WAITER
)) {

284 
	`F_CLR
(
hp
, 
IO_WAITER
);

285 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_io
);

288  (
t
);

296 
	`__memp_pgwre
(
dbv
, 
dbm
, 
hp
, 
bhp
)

297 
DB_ENV
 *
dbv
;

298 
DB_MPOOLFILE
 *
dbm
;

299 
DB_MPOOL_HASH
 *
hp
;

300 
BH
 *
bhp
;

302 
DB_LSN
 
l
;

303 
MPOOLFILE
 *
m
;

304 
size_t
 
nw
;

305 
pg
, 
t
;

307 
m
 = 
dbm
 =
NULL
 ? NULL : dbmfp->mfp;

308 
pg
 = 
t
 = 0;

311 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
bhp
, 
BH_DIRTY
));

312 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
bhp
, 
BH_TRASH
));

318 
	`F_SET
(
bhp
, 
BH_LOCKED
);

319 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

330 i(
m
 =
NULL
 || m->
ddfe
)

331 
fe_dd
;

337 i(
	`LOGGING_ON
(
dbv
&& 
m
->
l_off
 !
DB_LSN_OFF_NOTSET
 &&

338 !
	`IS_CLIENT_PGRECOVER
(
dbv
)) {

339 
	`memy
(&
l
, 
bhp
->
buf
 + 
m
->
l_off
, (
DB_LSN
));

340 i(!
	`IS_NOT_LOGGED_LSN
(
l
) &&

341 (
t
 = 
	`__log_ush
(
dbv
, &
l
)) != 0)

342 
r
;

345 #ifde
DIAGNOSTIC


364 i(
	`LOGGING_ON
(
dbv
&& !
	`IS_NOT_LOGGED_LSN
(
	`LSN
(
bhp
->
buf
)) &&

365 !
	`IS_CLIENT_PGRECOVER
(
dbv
)) {

372 
DB_LOG
 *
db
;

373 
LOG
 *

;

375 
db
 = 
dbv
->
lg_hd
;

376 

 = 
db
->
gfo
.
imy
;

377 i(!

->
db_log_memy
 &&

378 
	`LOG_COMPARE
(&

->
s_l
, &
	`LSN
(
bhp
->
buf
)) <= 0) {

379 
	`MUTEX_LOCK
(
dbv
, 

->
mtx_ush
);

380 
	`DB_ASSERT
(
dbv
,

381 
	`LOG_COMPARE
(&

->
s_l
, &
	`LSN
(
bhp
->
buf
)) > 0);

382 
	`MUTEX_UNLOCK
(
dbv
, 

->
mtx_ush
);

392 i(
m
->
y
 !0 && !
	`F_ISSET
(
bhp
, 
BH_CALLPGIN
)) {

393 
pg
 = 1;

394 i((
t
 = 
	`__memp_pg
(
dbm
, 
bhp
, 0)) != 0)

395 
r
;

399 i((
t
 = 
	`__os_io
(

400 
dbv
, 
DB_IO_WRITE
, 
dbm
->
fhp
, 
bhp
->
pgno
, 
m
->

.
_gesize
,

401 0, 
m
->

.
_gesize
, 
bhp
->
buf
, &
nw
)) != 0) {

402 
	`__db_rx
(
dbv
, "%s: write failed forage %lu",

403 
	`__memp_
(
dbm
), (
u_lg
)
bhp
->
pgno
);

404 
r
;

406 
	`STAT
(++
m
->

.
_ge_out
);

407 i(
bhp
->
pgno
 > 
m
->
ϡ_ushed_pgno
) {

408 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

409 i(
bhp
->
pgno
 > 
m
->
ϡ_ushed_pgno
)

410 
m
->
ϡ_ushed_pgno
 = 
bhp
->
pgno
;

411 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

414 
r
:

415 
fe_dd
:

423 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

429 i(
pg
)

430 
	`F_SET
(
bhp
, 
BH_CALLPGIN
);

436 i(
t
 == 0) {

437 
	`DB_ASSERT
(
dbv
, 
hp
->
hash_ge_dty
 != 0);

438 --
hp
->
hash_ge_dty
;

439 
	`F_CLR
(
bhp
, 
BH_DIRTY
 | 
BH_DIRTY_CREATE
);

443 
bhp
->
f_sync
 = 0;

444 
	`F_CLR
(
bhp
, 
BH_LOCKED
);

449 i(
	`F_ISSET
(
hp
, 
IO_WAITER
)) {

450 
	`F_CLR
(
hp
, 
IO_WAITER
);

451 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_io
);

454  (
t
);

464 
	`__memp_pg
(
dbm
, 
bhp
, 
is_pg
)

465 
DB_MPOOLFILE
 *
dbm
;

466 
BH
 *
bhp
;

467 
is_pg
;

469 
DBT
 
dbt
, *
db
;

470 
DB_ENV
 *
dbv
;

471 
DB_MPOOL
 *
dbmp
;

472 
DB_MPREG
 *
meg
;

473 
MPOOLFILE
 *
m
;

474 
y
, 
t
;

476 
dbv
 = 
dbm
->dbenv;

477 
dbmp
 = 
dbv
->
mp_hd
;

478 
m
 = 
dbm
->mfp;

480 i((
y
 = 
m
->y=
DB_FTYPE_SET
)

481 
meg
 = 
dbmp
->
pg_out
;

483 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

484 
	`LIST_FOREACH
(
meg
, &
dbmp
->
dbgq
, 
q
)

485 i(
y
 =
meg
->ftype)

487 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

489 i(
meg
 =
NULL
)

492 i(
m
->
pgcook_n
 == 0)

493 
db
 = 
NULL
;

495 
	`DB_SET_DBT
(
dbt
, 
	`R_ADDR
(

496 
dbmp
->
gfo
, 
m
->
pgcook_off
), m->
pgcook_n
);

497 
db
 = &
dbt
;

500 i(
is_pg
) {

501 i(
meg
->
pg
 !
NULL
 &&

502 (
t
 = 
meg
->
	`pg
(
dbv
, 
bhp
->
pgno
, bhp->
buf
, 
db
)) != 0)

503 
r
;

505 i(
meg
->
pgout
 !
NULL
 &&

506 (
t
 = 
meg
->
	`pgout
(
dbv
, 
bhp
->
pgno
, bhp->
buf
, 
db
)) != 0)

507 
r
;

511 
r
: 
	`__db_rx
(
dbv
, "%s: %s failed forage %lu",

512 
	`__memp_
(
dbm
), 
is_pg
 ? "pg" : "pgout", (
u_lg
)
bhp
->
pgno
);

513  (
t
);

524 
	`__memp_bh
(
dbmp
, 
f
, 
hp
, 
bhp
, 
ags
)

525 
DB_MPOOL
 *
dbmp
;

526 
REGINFO
 *
f
;

527 
DB_MPOOL_HASH
 *
hp
;

528 
BH
 *
bhp
;

529 
u_t32_t
 
ags
;

531 
DB_ENV
 *
dbv
;

532 #ifde
DIAGNOSTIC


533 
DB_LSN
 
vl
;

535 
MPOOL
 *
c_mp
;

536 
MPOOLFILE
 *
m
;

537 
BH
 *
xt_bhp
, *
ev_bhp
;

538 
d
, 
t
, 
t_t
;

539 #ifde
DIAG_MVCC


540 
size_t
 
gesize
;

543 
t
 = 0;

548 
dbv
 = 
dbmp
->dbenv;

549 
m
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
bhp
->
mf_offt
);

550 #ifde
DIAG_MVCC


551 
gesize
 = 
m
->

.
_gesize
;

554 
	`DB_ASSERT
(
dbv
, 
bhp
->
f
 =0 && !
	`F_ISSET
(bhp, 
BH_FROZEN
));

555 
	`DB_ASSERT
(
dbv
, 
	`LF_ISSET
(
BH_FREE_UNLOCKED
) ||

556 
	`SH_CHAIN_SINGLETON
(
bhp
, 
vc
) ||

557 (
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
) &&

558 
	`SH_CHAIN_NEXTP
(
bhp
, 
vc
, 
__bh
)->
td_off
 == bhp->td_off) ||

559 (
	`SH_CHAIN_HASPREV
(
bhp
, 
vc
) ?

560 
	`IS_MAX_LSN
(*
	`VISIBLE_LSN
(
dbv
, 
bhp
)) :

561 
	`BH_OBSOLETE
(
bhp
, 
hp
->
d_ad
, 
vl
)));

567 
d
 = (
	`__memp_bh_iܙy
(
bhp
=bhp->
iܙy
);

568 
ev_bhp
 = 
	`SH_CHAIN_PREV
(
bhp
, 
vc
, 
__bh
);

569 i((
xt_bhp
 = 
	`SH_CHAIN_NEXT
(
bhp
, 
vc
, 
__bh
)=
NULL
) {

570 i(
ev_bhp
 !
NULL
)

571 
	`SH_TAILQ_INSERT_AFTER
(&
hp
->
hash_buck
,

572 
bhp
, 
ev_bhp
, 
hq
, 
__bh
);

573 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
bhp
, 
hq
, 
__bh
);

574 
xt_bhp
 = 
ev_bhp
;

576 
	`SH_CHAIN_REMOVE
(
bhp
, 
vc
, 
__bh
);

577 i(
d
) {

578 i(
xt_bhp
 !
NULL
)

579 
	`__memp_buck_d
(
dbv
, 
hp
, 
xt_bhp
);

581 
hp
->
hash_iܙy
 = 
	`SH_TAILQ_EMPTY
(&hp->
hash_buck
) ?

582 0 : 
	`BH_PRIORITY
(

583 
	`SH_TAILQ_FIRSTP
(&
hp
->
hash_buck
, 
__bh
));

586 #ifde
DIAGNOSTIC


587 
	`__memp_check_d
(
dbv
, 
hp
);

596 i(
bhp
->
td_off
 !
INVALID_ROFF
 && !
	`LF_ISSET
(
BH_FREE_UNLOCKED
)) {

597 
t
 = 
	`__txn_move_bufr
(

598 
dbv
, 
	`BH_OWNER
(dbv, 
bhp
), 
hp
->
mtx_hash
);

599 
bhp
->
td_off
 = 
INVALID_ROFF
;

606 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
gesize
, 
PROT_READ
 | 
PROT_WRITE
 | 
PROT_EXEC
);

612 i(
	`LF_ISSET
(
BH_FREE_REUSE
))

619 i(!
	`LF_ISSET
(
BH_FREE_UNLOCKED
))

620 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

626 i(
	`LF_ISSET
(
BH_FREE_FREEMEM
)) {

627 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

629 
	`__memp_
(
f
, 
m
, 
bhp
);

630 
c_mp
 = 
f
->
imy
;

631 
c_mp
->

.
_ges
--;

633 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

640 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

641 i(--
m
->
block_t
 =0 && m->
mpf_t
 == 0) {

642 i((
t_t
 = 
	`__memp_mf_disrd
(
dbmp
, 
m
)!0 && 
t
 == 0)

643 
t
 = 
t_t
;

645 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

647  (
t
);

	@../mp/mp_fget.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/mp.h
"

14 
	~"dbc/txn.h
"

24 
	$__memp_fg_
(
dbm
, 
pgnddr
, 
tx
, 
ags
, 
add
)

25 
DB_MPOOLFILE
 *
dbm
;

26 
db_pgno_t
 *
pgnddr
;

27 
DB_TXN
 *
tx
;

28 
u_t32_t
 
ags
;

29 *
add
;

31 
DB_ENV
 *
dbv
;

32 
DB_THREAD_INFO
 *

;

33 
p_check
, 
t
;

35 
dbv
 = 
dbm
->dbenv;

37 
	`PANIC_CHECK
(
dbv
);

38 
	`MPF_ILLEGAL_BEFORE_OPEN
(
dbm
, "DB_MPOOLFILE->get");

53 
	#OKFLAGS
 (
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
 | \

54 
DB_MPOOL_EDIT
 | 
DB_MPOOL_LAST
 | 
DB_MPOOL_NEW
)

	)

55 i(
ags
 != 0) {

56 i((
t
 = 
	`__db_fchk
(
dbv
, "memp_fg", 
ags
, 
OKFLAGS
)) != 0)

57  (
t
);

59 
ags
) {

60 
DB_MPOOL_DIRTY
:

61 
DB_MPOOL_CREATE
:

62 
DB_MPOOL_EDIT
:

63 
DB_MPOOL_LAST
:

64 
DB_MPOOL_NEW
:

67  (
	`__db_
(
dbv
, "memp_fget", 1));

71 
	`ENV_ENTER
(
dbv
, 

);

73 
p_check
 = 
	`IS_ENV_REPLICATED
(
dbv
) ? 1 : 0;

74 i(
p_check
 && (
t
 = 
	`___p_r
(
dbv
)) != 0)

75 
r
;

76 
t
 = 
	`__memp_fg
(
dbm
, 
pgnddr
, 
tx
, 
ags
, 
add
);

82 i(
t
 !0 && 
p_check
)

83 ()
	`___p_ex
(
dbv
);

86 
r
: i(
t
 != 0)

87 
	`ENV_LEAVE
(
dbv
, 

);

89  (
t
);

90 
	}
}

100 
	$__memp_fg
(
dbm
, 
pgnddr
, 
txn
, 
ags
, 
add
)

101 
DB_MPOOLFILE
 *
dbm
;

102 
db_pgno_t
 *
pgnddr
;

103 
DB_TXN
 *
txn
;

104 
u_t32_t
 
ags
;

105 *
add
;

107 um { 
FIRST_FOUND
, 
FIRST_MISS
, 
SECOND_FOUND
, 
SECOND_MISS
 } 
e
;

108 
BH
 *
loc_bhp
, *
bhp
, *
oz_bhp
, *
de_bhp
;

109 
DB_ENV
 *
dbv
;

110 
DB_LSN
 *
ad_lp
, 
vl
;

111 
DB_MPOOL
 *
dbmp
;

112 
DB_MPOOL_HASH
 *
hp
;

113 
MPOOL
 *
c_mp
;

114 
MPOOLFILE
 *
m
;

115 
REGINFO
 *
f
, *
t_f
;

116 
TXN_DETAIL
 *
td
;

117 
roff_t
 
mf_offt
;

118 
u_t32_t
 
_hch
;

119 
b_
, 
b_locked
, 
dty
, 
ed
, 
exndg
, 
f
;

120 
makecy
, 
mvcc
, 
ed_
, 
d
, 
t
;

122 *(**)
add
 = 
NULL
;

123 
	`COMPQUIET
(
c_mp
, 
NULL
);

124 
	`COMPQUIET
(
f
, 
NULL
);

125 
	`COMPQUIET
(
de_bhp
, 
NULL
);

127 
dbv
 = 
dbm
->dbenv;

128 
dbmp
 = 
dbv
->
mp_hd
;

130 
m
 = 
dbm
->mfp;

131 
mvcc
 = 
m
->
muivsi
;

132 
mf_offt
 = 
	`R_OFFSET
(
dbmp
->
gfo
, 
m
);

133 
loc_bhp
 = 
bhp
 = 
oz_bhp
 = 
NULL
;

134 
ad_lp
 = 
NULL
;

135 
td
 = 
NULL
;

136 
hp
 = 
NULL
;

137 
b_
 = 
b_locked
 = 
exndg
 = 
makecy
 = 
t
 = 0;

139 i(
	`LF_ISSET
(
DB_MPOOL_DIRTY
)) {

140 i(
	`F_ISSET
(
dbm
, 
MP_READONLY
)) {

141 
	`__db_rx
(
dbv
,

143 
	`__memp_
(
dbm
));

144  (
EINVAL
);

146 i((
t
 = 
	`__db_fcchk
(
dbv
, "DB_MPOOLFILE->get",

147 
ags
, 
DB_MPOOL_DIRTY
, 
DB_MPOOL_EDIT
)) != 0)

148  (
t
);

151 
dty
 = 
	`LF_ISSET
(
DB_MPOOL_DIRTY
);

152 
ed
 = 
	`LF_ISSET
(
DB_MPOOL_EDIT
);

153 
	`LF_CLR
(
DB_MPOOL_DIRTY
 | 
DB_MPOOL_EDIT
);

161 i(
mvcc
 && 
txn
 !
NULL
 &&xn->
td
 != NULL) {

163 
txn
->

 !
NULL
)

164 
txn
 =xn->

;

165 
td
 = (
TXN_DETAIL
 *)
txn
->td;

166 i(
	`F_ISSET
(
txn
, 
TXN_SNAPSHOT
)) {

167 
ad_lp
 = &
td
->
ad_l
;

168 i(
	`IS_MAX_LSN
(*
ad_lp
) &&

169 (
t
 = 
	`__log_cut_l
(
dbv
, 
ad_lp
,

170 
NULL
, NULL)) != 0)

171  (
t
);

173 i((
dty
 || 
	`LF_ISSET
(
DB_MPOOL_CREATE
 | 
DB_MPOOL_NEW
)) &&

174 
td
->
mvcc_mtx
 =
MUTEX_INVALID
 && (
t
 =

175 
	`__mux_loc
(
dbv
, 
MTX_TXN_MVCC
, 0, &
td
->
mvcc_mtx
)) != 0)

176  (
t
);

179 
ags
) {

180 
DB_MPOOL_LAST
:

182 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

183 *
pgnddr
 = 
m
->
ϡ_pgno
;

184 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

186 
DB_MPOOL_NEW
:

191 
e
 = 
FIRST_MISS
;

192 
loc
;

193 
DB_MPOOL_CREATE
:

220 i(
dbm
->
addr
 !
NULL
 &&

221 
	`F_ISSET
(
m
, 
MP_CAN_MMAP
&& *
pgnddr
 <m->
ig_ϡ_pgno
) {

222 *(**)
add
 = (
u_t8_t
 *)
dbm
->
addr
 +

223 (*
pgnddr
 * 
m
->

.
_gesize
);

224 
	`STAT
(++
m
->

.
_m
);

228 
y
:

233 
	`MP_GET_BUCKET
(
dbm
, *
pgnddr
, &
f
, 
hp
, 
t
);

234 i(
t
 != 0)

235  (
t
);

236 
c_mp
 = 
f
->
imy
;

239 
_hch
 = 0;

240 
b_locked
 = 1;

241 
	`SH_TAILQ_FOREACH
(
bhp
, &
hp
->
hash_buck
, 
hq
, 
__bh
) {

242 ++
_hch
;

243 i(
bhp
->
pgno
 !*
pgnddr
 || bhp->
mf_offt
 != mf_offset)

247 i(
mvcc
 && !
ed
 && 
ad_lp
 !
NULL
) {

248 
bhp
 !
NULL
 &&

249 !
	`BH_OWNED_BY
(
dbv
, 
bhp
, 
txn
) &&

250 !
	`BH_VISIBLE
(
dbv
, 
bhp
, 
ad_lp
, 
vl
))

251 
bhp
 = 
	`SH_CHAIN_PREV
(bhp, 
vc
, 
__bh
);

253 
	`DB_ASSERT
(
dbv
, 
bhp
 !
NULL
);

256 
makecy
 = 
mvcc
 && 
dty
 && !
	`BH_OWNED_BY
(
dbv
, 
bhp
, 
txn
);

258 i(
	`F_ISSET
(
bhp
, 
BH_FROZEN
&& !F_ISSET(bhp, 
BH_FREED
)) {

259 
	`DB_ASSERT
(
dbv
, 
oz_bhp
 =
NULL
);

260 
oz_bhp
 = 
bhp
;

269 i(
bhp
->
f
 =
UINT16_MAX
) {

270 
	`__db_rx
(
dbv
,

272 
	`__memp_
(
dbm
), (
u_lg
)
bhp
->
pgno
);

273 
t
 = 
	`__db_nic
(
dbv
, 
EINVAL
);

274 
r
;

276 ++
bhp
->
f
;

277 
b_
 = 1;

286 
f
 = 1; 
	`F_ISSET
(
bhp
, 
BH_LOCKED
) &&

287 !
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
); 
f
 = 0) {

293 i(!
f
 && 
bhp
->
f_sync
 != 0) {

294 --
bhp
->
f
;

295 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

296 
bhp
 = 
oz_bhp
 = 
NULL
;

297 
b_
 = 
b_locked
 = 0;

298 
	`__os_p
(
dbv
, 0, 1);

299 
y
;

307 i(!
	`F_ISSET
(
hp
, 
IO_WAITER
)) {

308 
	`F_SET
(
hp
, 
IO_WAITER
);

309 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_io
);

311 
	`STAT
(++
hp
->
hash_io_wa
);

314 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

317 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_io
);

318 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_io
);

321 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

330 i(
oz_bhp
 !
NULL
 && 
	`F_ISSET
(oz_bhp, 
BH_THAWED
)) {

331 
thawed
: 
ed_
 = (--
oz_bhp
->
f
 == 0);

332 
b_
 = 0;

333 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

334 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

335 i(
loc_bhp
 !
NULL
) {

336 
	`__memp_
(
f
, 
m
, 
loc_bhp
);

337 
loc_bhp
 = 
NULL
;

339 i(
ed_
)

340 
	`SH_TAILQ_INSERT_TAIL
(&
c_mp
->
_oz
,

341 
oz_bhp
, 
hq
);

342 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

343 
bhp
 = 
oz_bhp
 = 
NULL
;

344 
y
;

351 i(
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
) &&

352 
	`SH_CHAIN_NEXTP
(
bhp
, 
vc
, 
__bh
)->
td_off
 == bhp->td_off) {

353 --
bhp
->
f
;

354 
b_
 = 0;

355 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

356 
bhp
 = 
oz_bhp
 = 
NULL
;

357 
y
;

358 } i(
dty
 && 
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
)) {

359 
t
 = 
DB_LOCK_DEADLOCK
;

360 
r
;

363 #ifde
HAVE_STATISTICS


364 ++
m
->

.
_che_h
;

369 #ifde
HAVE_STATISTICS


374 ++
c_mp
->

.
_hash_ches
;

375 i(
_hch
 > 
c_mp
->

.
_hash_lge
)

376 
c_mp
->

.
_hash_lge
 = 
_hch
;

377 
c_mp
->

.
_hash_examed
 +
_hch
;

403 
e
 = 
bhp
 =
NULL
 ?

404 (
loc_bhp
 =
NULL
 ? 
FIRST_MISS
 : 
SECOND_MISS
) :

405 (
loc_bhp
 =
NULL
 ? 
FIRST_FOUND
 : 
SECOND_FOUND
);

407 
e
) {

408 
FIRST_FOUND
:

414 i(
ags
 =
DB_MPOOL_FREE
) {

415 i(--
bhp
->
f
 == 0) {

416 i(
	`F_ISSET
(
bhp
, 
BH_DIRTY
)) {

417 --
hp
->
hash_ge_dty
;

418 
	`F_CLR
(
bhp
, 
BH_DIRTY
 | 
BH_DIRTY_CREATE
);

430 i(
mvcc
 && (
	`F_ISSET
(
bhp
, 
BH_FROZEN
) ||

431 !
	`SH_CHAIN_SINGLETON
(
bhp
, 
vc
) ||

432 
bhp
->
td_off
 =
INVALID_ROFF
 ||

433 !
	`IS_MAX_LSN
(*
	`VISIBLE_LSN
(
dbv
, 
bhp
)))) {

434 
	`F_SET
(
bhp
, 
BH_FREED
);

435 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

438  (
	`__memp_bh
(

439 
dbmp
, 
f
, 
hp
, 
bhp
, 
BH_FREE_FREEMEM
));

441 
	`__db_rx
(
dbv
,

443 
	`__memp_s
(
dbmp
, 
m
), (
u_lg
)*
pgnddr
);

444 
t
 = 
	`__db_nic
(
dbv
, 
EINVAL
);

445 
r
;

448 i(
mvcc
) {

449 i(
ags
 =
DB_MPOOL_CREATE
 &&

450 
	`F_ISSET
(
bhp
, 
BH_FREED
)) {

451 
exndg
 = 
makecy
 = 1;

452 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

453 i(*
pgnddr
 > 
m
->
ϡ_pgno
)

454 
m
->
ϡ_pgno
 = *
pgnddr
;

455 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

469 
u
: i((
makecy
 || 
oz_bhp
 !
NULL
&& (
de_bhp
 =

470 
	`SH_CHAIN_PREV
(
bhp
, 
vc
, 
__bh
)!
NULL
) {

471 
	`SH_CHAIN_HASPREV
(
de_bhp
, 
vc
))

472 
de_bhp
 = 
	`SH_CHAIN_PREVP
(oldest_bhp,

473 
vc
, 
__bh
);

475 i(
de_bhp
->
f
 =0 && !
	`BH_OBSOLETE
(

476 
de_bhp
, 
hp
->
d_ad
, 
vl
) &&

477 (
t
 = 
	`__txn_de_ad
(
dbv
,

478 &
hp
->
d_ad
)) != 0)

479 
r
;

481 i(
	`BH_OBSOLETE
(

482 
de_bhp
, 
hp
->
d_ad
, 
vl
) &&

483 
de_bhp
->
f
 == 0) {

484 i(
	`F_ISSET
(
de_bhp
, 
BH_FROZEN
)) {

485 ++
de_bhp
->
f
;

486 i((
t
 = 
	`__memp_bh_thaw
(
dbmp
,

487 
f
, 
hp
, 
de_bhp
,

488 
NULL
)) != 0)

489 
r
;

490 
u
;

491 } i((
t
 = 
	`__memp_bh
(
dbmp
,

492 
f
, 
hp
, 
de_bhp
,

493 
BH_FREE_REUSE
)) != 0)

494 
r
;

495 
loc_bhp
 = 
de_bhp
;

498 
	`DB_ASSERT
(
dbv
, 
loc_bhp
 =
NULL
 ||

499 !
	`F_ISSET
(
loc_bhp
, 
BH_FROZEN
));

504 i((!
makecy
 && 
oz_bhp
 =
NULL
|| 
loc_bhp
 != NULL)

508 
FIRST_MISS
:

514 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

515 
b_locked
 = 0;

520 i(
ags
 =
DB_MPOOL_FREE
)

523 
loc
:

528 
	`DB_ASSERT
(
dbv
, !
b_locked
);

529 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

530 
ags
) {

531 
DB_MPOOL_NEW
:

532 
exndg
 = 1;

533 i(
m
->
maxpgno
 != 0 &&

534 
m
->
ϡ_pgno
 >m->
maxpgno
) {

535 
	`__db_rx
(

536 
dbv
, "%s: fileimitedo %luages",

537 
	`__memp_
(
dbm
), (
u_lg
)
m
->
maxpgno
);

538 
t
 = 
ENOSPC
;

540 *
pgnddr
 = 
m
->
ϡ_pgno
 + 1;

542 
DB_MPOOL_CREATE
:

543 i(
m
->
maxpgno
 !0 && *
pgnddr
 > mfp->maxpgno) {

544 
	`__db_rx
(

545 
dbv
, "%s: fileimitedo %luages",

546 
	`__memp_
(
dbm
), (
u_lg
)
m
->
maxpgno
);

547 
t
 = 
ENOSPC
;

548 } i(!
exndg
)

549 
exndg
 = *
pgnddr
 > 
m
->
ϡ_pgno
;

552 
t
 = *
pgnddr
 > 
m
->
ϡ_pgno
 ? 
DB_PAGE_NOTFOUND
 : 0;

555 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

556 i(
t
 != 0)

557 
r
;

564 
	`MP_GET_REGION
(
dbm
, *
pgnddr
, &
f
, 
t
);

565 i(
t
 != 0)

566 
r
;

567 
c_mp
 = 
f
->
imy
;

570 i((
t
 =

571 
	`__memp_loc
(
dbmp
, 
f
, 
m
, 0, 
NULL
, &
loc_bhp
)) != 0)

572 
r
;

573 #ifde
DIAGNOSTIC


574 i((
u_t
)
loc_bhp
->
buf
 & ((
size_t
) - 1)) {

575 
	`__db_rx
(
dbv
,

577 
t
 = 
	`__db_nic
(
dbv
, 
EINVAL
);

578 
r
;

585 i(
exndg
)

586 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

613 i(
ags
 =
DB_MPOOL_NEW
 && *
pgnddr
 !
m
->
ϡ_pgno
 + 1) {

614 *
pgnddr
 = 
m
->
ϡ_pgno
 + 1;

615 
	`MP_GET_REGION
(
dbm
, *
pgnddr
, &
t_f
,
t
);

616 i(
t
 != 0)

617 
r
;

618 i(
t_f
 !
f
) {

623 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

625 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

626 
	`__memp_
(
f
, 
m
, 
loc_bhp
);

627 
c_mp
->

.
_ges
--;

628 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

630 
loc_bhp
 = 
NULL
;

631 
loc
;

640 i(
exndg
) {

641 i(*
pgnddr
 > 
m
->
ϡ_pgno
)

642 
m
->
ϡ_pgno
 = *
pgnddr
;

644 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

645 i(
t
 != 0)

646 
r
;

653 i(
bhp
 !
NULL
) {

654 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

655 
b_locked
 = 1;

658 
	`DB_ASSERT
(
dbv
, 
oz_bhp
 =
NULL
);

659 
y
;

660 
SECOND_FOUND
:

674 i(
exndg
 && 
	`F_ISSET
(
bhp
, 
BH_FREED
))

675 
makecy
 = 1;

676 i(
makecy
 || 
oz_bhp
 !
NULL
)

684 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

685 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

686 
	`__memp_
(
f
, 
m
, 
loc_bhp
);

687 
c_mp
->

.
_ges
--;

688 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

689 
loc_bhp
 = 
NULL
;

699 i(
ags
 =
DB_MPOOL_NEW
) {

700 --
bhp
->
f
;

701 
b_
 = 
b_locked
 = 0;

702 
bhp
 = 
NULL
;

703 
loc
;

707 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

709 
SECOND_MISS
:

715 
bhp
 = 
loc_bhp
;

716 
loc_bhp
 = 
NULL
;

726 #ifde
DIAG_MVCC


727 
	`memt
(
bhp
, 0, 
	`SSZ
(
BH
, 
ign_off
));

729 
	`memt
(
bhp
, 0, (
BH
));

731 
bhp
->
f
 = 1;

732 
b_
 = 1;

733 
bhp
->
iܙy
 = 
UINT32_MAX
;

734 
bhp
->
pgno
 = *
pgnddr
;

735 
bhp
->
mf_offt
 = mf_offset;

736 
	`SH_TAILQ_INSERT_TAIL
(&
hp
->
hash_buck
, 
bhp
, 
hq
);

737 
	`SH_CHAIN_INIT
(
bhp
, 
vc
);

739 
hp
->
hash_iܙy
 =

740 
	`BH_PRIORITY
(
	`SH_TAILQ_FIRSTP
(&
hp
->
hash_buck
, 
__bh
));

743 i(
exndg
) {

744 ++
hp
->
hash_ge_dty
;

745 
	`F_SET
(
bhp
, 
BH_DIRTY
 | 
BH_DIRTY_CREATE
);

766 i(
exndg
) {

767 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
m
->

.
_gesize
,

768 
PROT_READ
 | 
PROT_WRITE
);

769 i(
m
->
r_n
 =
DB_CLEARLEN_NOTSET
)

770 
	`memt
(
bhp
->
buf
, 0, 
m
->

.
_gesize
);

772 
	`memt
(
bhp
->
buf
, 0, 
m
->
r_n
);

773 #i
	`defed
(
DIAGNOSTIC
|| defed(
UMRW
)

774 
	`memt
(
bhp
->
buf
 + 
m
->
r_n
, 
CLEAR_BYTE
,

775 
m
->

.
_gesize
 - m->
r_n
);

779 i(
ags
 =
DB_MPOOL_CREATE
 && 
m
->
y
 != 0)

780 
	`F_SET
(
bhp
, 
BH_CALLPGIN
);

782 
	`STAT
(++
m
->

.
_ge_
);

784 
	`F_SET
(
bhp
, 
BH_TRASH
);

785 
	`STAT
(++
m
->

.
_che_miss
);

789 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

790 ++
m
->
block_t
;

791 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

794 
	`DB_ASSERT
(
dbv
, 
bhp
 !
NULL
);

795 
	`DB_ASSERT
(
dbv
, 
bhp
->
f
 != 0);

798 i(
oz_bhp
 !
NULL
) {

799 
	`DB_ASSERT
(
dbv
, 
loc_bhp
 !
NULL
);

805 i(
	`F_ISSET
(
oz_bhp
, 
BH_THAWED
))

806 
thawed
;

808 i((
t
 = 
	`__memp_bh_thaw
(
dbmp
, 
f
, 
hp
,

809 
oz_bhp
, 
loc_bhp
)) != 0)

810 
r
;

811 
bhp
 = 
loc_bhp
;

814 
oz_bhp
 = 
loc_bhp
 = 
NULL
;

821 i(
makecy
) {

822 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

823 
b_locked
 = 0;

824 
loc
;

841 i(
	`F_ISSET
(
bhp
, 
BH_TRASH
) &&

842 (
t
 = 
	`__memp_pgad
(
dbm
,

843 
hp
, 
bhp
, 
	`LF_ISSET
(
DB_MPOOL_CREATE
) ? 1 : 0)) != 0)

844 
r
;

851 i(
	`F_ISSET
(
bhp
, 
BH_CALLPGIN
)) {

852 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
m
->

.
_gesize
,

853 
PROT_READ
 | 
PROT_WRITE
);

854 i((
t
 = 
	`__memp_pg
(
dbm
, 
bhp
, 1)) != 0)

855 
r
;

856 
	`F_CLR
(
bhp
, 
BH_CALLPGIN
);

860 i(
makecy
 && 
e
 !
SECOND_MISS
) {

861 
	`DB_ASSERT
(
dbv
, !
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
));

862 
	`DB_ASSERT
(
dbv
, 
bhp
 !
NULL
);

863 
	`DB_ASSERT
(
dbv
, 
loc_bhp
 !
NULL
);

864 
	`DB_ASSERT
(
dbv
, 
loc_bhp
 !
bhp
);

866 i(
bhp
->
f
 == 1)

867 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
m
->

.
_gesize
,

868 
PROT_READ
);

870 
loc_bhp
->
f
 = 1;

871 
loc_bhp
->
f_sync
 = 0;

872 
loc_bhp
->
ags
 = 
	`F_ISSET
(
bhp
, 
BH_DIRTY
 | 
BH_DIRTY_CREATE
);

873 
	`F_CLR
(
bhp
, 
BH_DIRTY
 | 
BH_DIRTY_CREATE
);

874 
loc_bhp
->
iܙy
 = 
bhp
->priority;

875 
loc_bhp
->
pgno
 = 
bhp
->pgno;

876 
loc_bhp
->
mf_offt
 = 
bhp
->mf_offset;

877 
loc_bhp
->
td_off
 = 
INVALID_ROFF
;

878 i(
txn
 !
NULL
 &&

879 (
t
 = 
	`__memp_bh_xn
(
dbmp
, 
m
, 
loc_bhp
, 
td
)) != 0)

880 
r
;

881 i(
exndg
) {

882 
	`memt
(
loc_bhp
->
buf
, 0, 
m
->

.
_gesize
);

883 
	`F_SET
(
loc_bhp
, 
BH_DIRTY_CREATE
);

885 
	`memy
(
loc_bhp
->
buf
, 
bhp
->buf, 
m
->

.
_gesize
);

887 
	`SH_CHAIN_INSERT_AFTER
(
bhp
, 
loc_bhp
, 
vc
, 
__bh
);

888 
	`SH_TAILQ_INSERT_BEFORE
(&
hp
->
hash_buck
,

889 
bhp
, 
loc_bhp
, 
hq
, 
__bh
);

890 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
bhp
, 
hq
, 
__bh
);

891 i(--
bhp
->
f
 == 0) {

892 
bhp
->
iܙy
 = 
c_mp
->
u_cou
;

893 
	`__memp_buck_d
(
dbv
, 
hp
, 
bhp
);

894 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
m
->

.
_gesize
, 0);

896 
bhp
 = 
loc_bhp
;

898 i(
loc_bhp
 !
de_bhp
) {

899 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

900 ++
m
->
block_t
;

901 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

904 
loc_bhp
 = 
NULL
;

905 } i(
mvcc
 && 
exndg
 && 
txn
 !
NULL
 &&

906 (
t
 = 
	`__memp_bh_xn
(
dbmp
, 
m
, 
bhp
, 
td
)) != 0)

907 
r
;

909 i((
dty
 || 
ed
 || 
exndg
&& !
	`F_ISSET
(
bhp
, 
BH_DIRTY
)) {

910 
	`DB_ASSERT
(
dbv
, !
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
));

911 ++
hp
->
hash_ge_dty
;

912 
	`F_SET
(
bhp
, 
BH_DIRTY
);

921 i(
e
 !
SECOND_MISS
 && 
bhp
->
f
 == 1) {

922 i(
	`SH_CHAIN_SINGLETON
(
bhp
, 
vc
)) {

923 
bhp
->
iܙy
 = 
UINT32_MAX
;

924 i(
bhp
 !
	`SH_TAILQ_LAST
(&
hp
->
hash_buck
, 
hq
, 
__bh
)) {

925 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
,

926 
bhp
, 
hq
, 
__bh
);

927 
	`SH_TAILQ_INSERT_TAIL
(&
hp
->
hash_buck
, 
bhp
, 
hq
);

929 
hp
->
hash_iܙy
 = 
	`BH_PRIORITY
(

930 
	`SH_TAILQ_FIRSTP
(&
hp
->
hash_buck
, 
__bh
));

932 
d
 = (
	`BH_PRIORITY
(
bhp
=bhp->
iܙy
);

933 
bhp
->
iܙy
 = 
UINT32_MAX
;

934 i(
d
)

935 
	`__memp_buck_d
(
dbv
, 
hp
, 
bhp
);

939 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
m
->

.
_gesize
, 
PROT_READ
 |

940 (
dty
 || 
ed
 || 
exndg
 || 
	`F_ISSET
(
bhp
, 
BH_DIRTY
) ?

941 
PROT_WRITE
 : 0));

943 #ifde
DIAGNOSTIC


944 
	`__memp_check_d
(
dbv
, 
hp
);

947 
BH
 *
xt_bhp
 = 
	`SH_CHAIN_NEXT
(
bhp
, 
vc
, 
__bh
);

949 
	`DB_ASSERT
(
dbv
, !
m
->
muivsi
 ||

950 !
	`F_ISSET
(
bhp
, 
BH_DIRTY
|| 
xt_bhp
 =
NULL
);

952 
	`DB_ASSERT
(
dbv
, !
mvcc
 || 
ed
 || 
ad_lp
 =
NULL
 ||

953 
bhp
->
td_off
 =
INVALID_ROFF
 || 
	`BH_OWNED_BY
(
dbv
, bhp, 
txn
) ||

954 (
	`BH_VISIBLE
(
dbv
, 
bhp
, 
ad_lp
, 
vl
) &&

955 (
xt_bhp
 =
NULL
 || 
	`F_ISSET
ext_bhp, 
BH_FROZEN
) ||

956 (
xt_bhp
->
td_off
 !
INVALID_ROFF
 &&

957 (
	`BH_OWNER
(
dbv
, 
xt_bhp
)->
us
 !
TXN_COMMITTED
 ||

958 !
	`BH_VISIBLE
(
dbv
, 
xt_bhp
, 
ad_lp
, 
vl
))))));

962 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

964 #ifde
DIAGNOSTIC


966 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

967 ++
dbm
->
pf
;

968 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

974 i(
	`F_ISSET
(
dbv
, 
DB_ENV_YIELDCPU
))

975 
	`__os_yld
(
dbv
);

978 
	`DB_ASSERT
(
dbv
, 
loc_bhp
 =
NULL
);

980 *(**)
add
 = 
bhp
->
buf
;

983 
r
:

988 i(
b_
 || 
oz_bhp
 !
NULL
) {

989 i(!
b_locked
) {

990 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

991 
b_locked
 = 1;

993 i(
oz_bhp
 !
NULL
)

994 --
oz_bhp
->
f
;

995 i(
b_
 && 
bhp
 !
oz_bhp
)

996 --
bhp
->
f
;

998 i(
b_locked
)

999 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

1002 i(
loc_bhp
 !
NULL
) {

1003 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

1004 
	`__memp_
(
f
, 
m
, 
loc_bhp
);

1005 
c_mp
->

.
_ges
--;

1006 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

1009  (
t
);

1010 
	}
}

	@../mp/mp_fmethod.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/mp.h
"

15 
__memp_g_r_n
 
__P
((
DB_MPOOLFILE
 *, 
u_t32_t
 *));

16 
__memp_g_l_offt
 
__P
((
DB_MPOOLFILE
 *, 
t32_t
 *));

17 
__memp_g_maxsize
 
__P
((
DB_MPOOLFILE
 *, 
u_t32_t
 *, u_int32_t *));

18 
__memp_t_maxsize
 
__P
((
DB_MPOOLFILE
 *, 
u_t32_t
, u_int32_t));

19 
__memp_g_pgcook
 
__P
((
DB_MPOOLFILE
 *, 
DBT
 *));

20 
__memp_g_iܙy
 
__P
((
DB_MPOOLFILE
 *, 
DB_CACHE_PRIORITY
 *));

21 
__memp_t_iܙy
 
__P
((
DB_MPOOLFILE
 *, 
DB_CACHE_PRIORITY
));

30 
	$__memp_f_
(
dbv
, 

, 
ags
)

31 
DB_ENV
 *
dbv
;

32 
DB_MPOOLFILE
 **

;

33 
u_t32_t
 
ags
;

35 
DB_THREAD_INFO
 *

;

36 
t
;

38 
	`PANIC_CHECK
(
dbv
);

41 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->memp_f", 
ags
, 0)) != 0)

42  (
t
);

44 
	`ENV_ENTER
(
dbv
, 

);

45 
	`REPLICATION_WRAP
(
dbv
, (
	`__memp_f
(dbv, 

)), 
t
);

46 
	`ENV_LEAVE
(
dbv
, 

);

47  (
t
);

48 
	}
}

57 
	$__memp_f
(
dbv
, 

)

58 
DB_ENV
 *
dbv
;

59 
DB_MPOOLFILE
 **

;

61 
DB_MPOOLFILE
 *
dbm
;

62 
t
;

65 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_MPOOLFILE
), &
dbm
)) != 0)

66  (
t
);

68 
dbm
->
f
 = 1;

69 
dbm
->
l_offt
 = 
DB_LSN_OFF_NOTSET
;

70 
dbm
->
dbv
 = dbenv;

71 
dbm
->
m
 = 
INVALID_ROFF
;

73 
dbm
->
o
 = 
__memp_fo_
;

74 
dbm
->
g
 = 
__memp_fg_
;

75 
dbm
->
g_r_n
 = 
__memp_g_r_n
;

76 
dbm
->
g_feid
 = 
__memp_g_feid
;

77 
dbm
->
g_ags
 = 
__memp_g_ags
;

78 
dbm
->
g_y
 = 
__memp_g_y
;

79 
dbm
->
g_ϡ_pgno
 = 
__memp_g_ϡ_pgno
;

80 
dbm
->
g_l_offt
 = 
__memp_g_l_offt
;

81 
dbm
->
g_maxsize
 = 
__memp_g_maxsize
;

82 
dbm
->
g_pgcook
 = 
__memp_g_pgcook
;

83 
dbm
->
g_iܙy
 = 
__memp_g_iܙy
;

84 
dbm
->
ݒ
 = 
__memp_fݒ_
;

85 
dbm
->
put
 = 
__memp_ut_
;

86 
dbm
->
t_r_n
 = 
__memp_t_r_n
;

87 
dbm
->
t_feid
 = 
__memp_t_feid
;

88 
dbm
->
t_ags
 = 
__memp_t_ags
;

89 
dbm
->
t_y
 = 
__memp_t_y
;

90 
dbm
->
t_l_offt
 = 
__memp_t_l_offt
;

91 
dbm
->
t_maxsize
 = 
__memp_t_maxsize
;

92 
dbm
->
t_pgcook
 = 
__memp_t_pgcook
;

93 
dbm
->
t_iܙy
 = 
__memp_t_iܙy
;

94 
dbm
->
sync
 = 
__memp_fsync_
;

96 *

 = 
dbm
;

98 
	}
}

105 
	$__memp_g_r_n
(
dbm
, 
r_
)

106 
DB_MPOOLFILE
 *
dbm
;

107 
u_t32_t
 *
r_
;

109 *
r_
 = 
dbm
->
r_n
;

111 
	}
}

120 
	$__memp_t_r_n
(
dbm
, 
r_n
)

121 
DB_MPOOLFILE
 *
dbm
;

122 
u_t32_t
 
r_n
;

124 
	`MPF_ILLEGAL_AFTER_OPEN
(
dbm
, "DB_MPOOLFILE->set_clear_len");

126 
dbm
->
r_n
 = clear_len;

128 
	}
}

137 
	$__memp_g_feid
(
dbm
, 
feid
)

138 
DB_MPOOLFILE
 *
dbm
;

139 
u_t8_t
 *
feid
;

141 i(!
	`F_ISSET
(
dbm
, 
MP_FILEID_SET
)) {

142 
	`__db_rx
(
dbm
->
dbv
, "get_fileid: file IDot set");

143  (
EINVAL
);

146 
	`memy
(
feid
, 
dbm
->feid, 
DB_FILE_ID_LEN
);

148 
	}
}

157 
	$__memp_t_feid
(
dbm
, 
feid
)

158 
DB_MPOOLFILE
 *
dbm
;

159 
u_t8_t
 *
feid
;

161 
	`MPF_ILLEGAL_AFTER_OPEN
(
dbm
, "DB_MPOOLFILE->set_fileid");

163 
	`memy
(
dbm
->
feid
, feid, 
DB_FILE_ID_LEN
);

164 
	`F_SET
(
dbm
, 
MP_FILEID_SET
);

167 
	}
}

176 
	$__memp_g_ags
(
dbm
, 
ag
)

177 
DB_MPOOLFILE
 *
dbm
;

178 
u_t32_t
 *
ag
;

180 
MPOOLFILE
 *
m
;

182 
m
 = 
dbm
->mfp;

184 *
ag
 = 0;

186 i(
m
 =
NULL
)

187 *
ag
 = 
	`FLD_ISSET
(
dbm
->
cfig_ags
,

188 
DB_MPOOL_NOFILE
 | 
DB_MPOOL_UNLINK
);

190 i(
m
->
no_backg_fe
)

191 
	`FLD_SET
(*
ag
, 
DB_MPOOL_NOFILE
);

192 i(
m
->
uƚk__o
)

193 
	`FLD_SET
(*
ag
, 
DB_MPOOL_UNLINK
);

196 
	}
}

205 
	$__memp_t_ags
(
dbm
, 
ags
, 
off
)

206 
DB_MPOOLFILE
 *
dbm
;

207 
u_t32_t
 
ags
;

208 
off
;

210 
DB_ENV
 *
dbv
;

211 
MPOOLFILE
 *
m
;

212 
t
;

214 
dbv
 = 
dbm
->dbenv;

215 
m
 = 
dbm
->mfp;

217 
ags
) {

218 
DB_MPOOL_NOFILE
:

219 i(
m
 =
NULL
)

220 i(
off
)

221 
	`FLD_SET
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
);

223 
	`FLD_CLR
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
);

225 
m
->
no_backg_fe
 = 
off
;

227 
DB_MPOOL_UNLINK
:

228 i(
m
 =
NULL
)

229 i(
off
)

230 
	`FLD_SET
(
dbm
->
cfig_ags
, 
DB_MPOOL_UNLINK
);

232 
	`FLD_CLR
(
dbm
->
cfig_ags
, 
DB_MPOOL_UNLINK
);

234 
m
->
uƚk__o
 = 
off
;

237 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_MPOOLFILE->set_flags",

238 
ags
, 
DB_MPOOL_NOFILE
 | 
DB_MPOOL_UNLINK
)) != 0)

239  (
t
);

243 
	}
}

252 
	$__memp_g_y
(
dbm
, 
yp
)

253 
DB_MPOOLFILE
 *
dbm
;

254 *
yp
;

256 *
yp
 = 
dbm
->
y
;

258 
	}
}

267 
	$__memp_t_y
(
dbm
, 
y
)

268 
DB_MPOOLFILE
 *
dbm
;

269 
y
;

271 
	`MPF_ILLEGAL_AFTER_OPEN
(
dbm
, "DB_MPOOLFILE->set_ftype");

273 
dbm
->
y
 = ftype;

275 
	}
}

282 
	$__memp_g_l_offt
(
dbm
, 
l_off
)

283 
DB_MPOOLFILE
 *
dbm
;

284 
t32_t
 *
l_off
;

286 *
l_off
 = 
dbm
->
l_offt
;

288 
	}
}

297 
	$__memp_t_l_offt
(
dbm
, 
l_offt
)

298 
DB_MPOOLFILE
 *
dbm
;

299 
t32_t
 
l_offt
;

301 
	`MPF_ILLEGAL_AFTER_OPEN
(
dbm
, "DB_MPOOLFILE->set_lsn_offset");

303 
dbm
->
l_offt
 =sn_offset;

305 
	}
}

312 
	$__memp_g_maxsize
(
dbm
, 
gby
, 
by
)

313 
DB_MPOOLFILE
 *
dbm
;

314 
u_t32_t
 *
gby
, *
by
;

316 
DB_ENV
 *
dbv
;

317 
MPOOLFILE
 *
m
;

319 i((
m
 = 
dbm
->m=
NULL
) {

320 *
gby
 = 
dbm
->
gbys
;

321 *
by
 = 
dbm
->
bys
;

323 
dbv
 = 
dbm
->dbenv;

325 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

326 *
gby
 = (
u_t32_t
)

327 (
m
->
maxpgno
 / (
GIGABYTE
 / m->

.
_gesize
));

328 *
by
 = (
u_t32_t
)

329 ((
m
->
maxpgno
 % (
GIGABYTE
 / m->

.
_gesize
)) *

330 
m
->

.
_gesize
);

331 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

335 
	}
}

342 
	$__memp_t_maxsize
(
dbm
, 
gbys
, 
bys
)

343 
DB_MPOOLFILE
 *
dbm
;

344 
u_t32_t
 
gbys
, 
bys
;

346 
DB_ENV
 *
dbv
;

347 
MPOOLFILE
 *
m
;

349 i((
m
 = 
dbm
->m=
NULL
) {

350 
dbm
->
gbys
 = gbytes;

351 
dbm
->
bys
 = bytes;

353 
dbv
 = 
dbm
->dbenv;

355 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

356 
m
->
maxpgno
 = (
db_pgno_t
)

357 (
gbys
 * (
GIGABYTE
 / 
m
->

.
_gesize
));

358 
m
->
maxpgno
 +(
db_pgno_t
)

359 ((
bys
 + 
m
->

.
_gesize
 - 1) /

360 
m
->

.
_gesize
);

361 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

365 
	}
}

372 
	$__memp_g_pgcook
(
dbm
, 
pgcook
)

373 
DB_MPOOLFILE
 *
dbm
;

374 
DBT
 *
pgcook
;

376 i(
dbm
->
pgcook
 =
NULL
) {

377 
pgcook
->
size
 = 0;

378 
pgcook
->
da
 = "";

380 
	`memy
(
pgcook
, 
dbm
->pgcook, (
DBT
));

382 
	}
}

391 
	$__memp_t_pgcook
(
dbm
, 
pgcook
)

392 
DB_MPOOLFILE
 *
dbm
;

393 
DBT
 *
pgcook
;

395 
DB_ENV
 *
dbv
;

396 
DBT
 *
cook
;

397 
t
;

399 
	`MPF_ILLEGAL_AFTER_OPEN
(
dbm
, "DB_MPOOLFILE->set_pgcookie");

400 
dbv
 = 
dbm
->dbenv;

402 i((
t
 = 
	`__os_oc
(
dbv
, 1, (*
cook
), &cookie)) != 0)

403  (
t
);

404 i((
t
 = 
	`__os_mloc
(
dbv
, 
pgcook
->
size
, &
cook
->
da
)) != 0) {

405 
	`__os_
(
dbv
, 
cook
);

406  (
t
);

409 
	`memy
(
cook
->
da
, 
pgcook
->da,gcook->
size
);

410 
cook
->
size
 = 
pgcook
->size;

412 
dbm
->
pgcook
 = 
cook
;

414 
	}
}

421 
	$__memp_g_iܙy
(
dbm
, 
iܙyp
)

422 
DB_MPOOLFILE
 *
dbm
;

423 
DB_CACHE_PRIORITY
 *
iܙyp
;

425 
dbm
->
iܙy
) {

426 
MPOOL_PRI_VERY_LOW
:

427 *
iܙyp
 = 
DB_PRIORITY_VERY_LOW
;

429 
MPOOL_PRI_LOW
:

430 *
iܙyp
 = 
DB_PRIORITY_LOW
;

432 
MPOOL_PRI_DEFAULT
:

433 *
iܙyp
 = 
DB_PRIORITY_DEFAULT
;

435 
MPOOL_PRI_HIGH
:

436 *
iܙyp
 = 
DB_PRIORITY_HIGH
;

438 
MPOOL_PRI_VERY_HIGH
:

439 *
iܙyp
 = 
DB_PRIORITY_VERY_HIGH
;

442 
	`__db_rx
(
dbm
->
dbv
,

444 
dbm
->
iܙy
);

445  (
EINVAL
);

449 
	}
}

456 
	$__memp_t_iܙy
(
dbm
, 
iܙy
)

457 
DB_MPOOLFILE
 *
dbm
;

458 
DB_CACHE_PRIORITY
 
iܙy
;

460 
iܙy
) {

461 
DB_PRIORITY_VERY_LOW
:

462 
dbm
->
iܙy
 = 
MPOOL_PRI_VERY_LOW
;

464 
DB_PRIORITY_LOW
:

465 
dbm
->
iܙy
 = 
MPOOL_PRI_LOW
;

467 
DB_PRIORITY_DEFAULT
:

468 
dbm
->
iܙy
 = 
MPOOL_PRI_DEFAULT
;

470 
DB_PRIORITY_HIGH
:

471 
dbm
->
iܙy
 = 
MPOOL_PRI_HIGH
;

473 
DB_PRIORITY_VERY_HIGH
:

474 
dbm
->
iܙy
 = 
MPOOL_PRI_VERY_HIGH
;

477 
	`__db_rx
(
dbm
->
dbv
,

479 
iܙy
);

480  (
EINVAL
);

484 i(
dbm
->
m
 !
NULL
)

485 
dbm
->
m
->
iܙy
 = dbmfp->priority;

488 
	}
}

501 
	$__memp_g_ϡ_pgno
(
dbm
, 
pgnddr
)

502 
DB_MPOOLFILE
 *
dbm
;

503 
db_pgno_t
 *
pgnddr
;

505 
DB_ENV
 *
dbv
;

506 
MPOOLFILE
 *
m
;

508 
dbv
 = 
dbm
->dbenv;

509 
m
 = 
dbm
->mfp;

511 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

512 *
pgnddr
 = 
m
->
ϡ_pgno
;

513 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

516 
	}
}

525 
	$__memp_
(
dbm
)

526 
DB_MPOOLFILE
 *
dbm
;

528  (
	`__memp_s
(
dbm
->
dbv
->
mp_hd
, dbm->
m
));

529 
	}
}

539 
	$__memp_s
(
dbmp
, 
m
)

540 
DB_MPOOL
 *
dbmp
;

541 
MPOOLFILE
 *
m
;

543 i(
m
 =
NULL
 || m->
th_off
 == 0)

546  ((*)
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
th_off
));

547 
	}
}

	@../mp/mp_fopen.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/mp.h
"

14 
	~"dbc/db_ge.h
"

15 
	~"dbc/hash.h
"

17 
__memp_mpf_loc
 
__P
((
DB_MPOOL
 *,

18 
DB_MPOOLFILE
 *, cڡ *, 
u_t32_t
, u_t32_t, 
MPOOLFILE
 **));

19 
__memp_mpf_fd
 
__P
((
DB_ENV
 *,

20 
DB_MPOOLFILE
 *, 
DB_MPOOL_HASH
 *, cڡ *, 
u_t32_t
, 
MPOOLFILE
 **));

30 
	$__memp_fݒ_
(
dbm
, 
th
, 
ags
, 
mode
, 
gesize
)

31 
DB_MPOOLFILE
 *
dbm
;

32 cڡ *
th
;

33 
u_t32_t
 
ags
;

34 
mode
;

35 
size_t
 
gesize
;

37 
DB_ENV
 *
dbv
;

38 
DB_THREAD_INFO
 *

;

39 
t
;

41 
dbv
 = 
dbm
->dbenv;

43 
	`PANIC_CHECK
(
dbv
);

46 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_MPOOLFILE->ݒ", 
ags
,

47 
DB_CREATE
 | 
DB_DIRECT
 | 
DB_EXTENT
 | 
DB_MULTIVERSION
 |

48 
DB_NOMMAP
 | 
DB_ODDFILESIZE
 | 
DB_RDONLY
 | 
DB_TRUNCATE
)) != 0)

49  (
t
);

55 i(
gesize
 =0 || !
	`POWER_OF_TWO
(pagesize)) {

56 
	`__db_rx
(
dbv
,

58  (
EINVAL
);

60 i(
dbm
->
r_n
 > 
gesize
) {

61 
	`__db_rx
(
dbv
,

63  (
EINVAL
);

67 i(
	`LF_ISSET
(
DB_RDONLY
&& 
th
 =
NULL
) {

68 
	`__db_rx
(
dbv
,

70  (
EINVAL
);

73 i(
	`LF_ISSET
(
DB_MULTIVERSION
&& !
	`TXN_ON
(
dbv
)) {

74 
	`__db_rx
(
dbv
,

76  (
EINVAL
);

79 
	`ENV_ENTER
(
dbv
, 

);

80 
	`REPLICATION_WRAP
(
dbv
,

81 (
	`__memp_fݒ
(
dbm
, 
NULL
, 
th
, 
ags
, 
mode
, 
gesize
)), 
t
);

82 
	`ENV_LEAVE
(
dbv
, 

);

83  (
t
);

84 
	}
}

94 
	$__memp_fݒ
(
dbm
, 
m
, 
th
, 
ags
, 
mode
, 
pgsize
)

95 
DB_MPOOLFILE
 *
dbm
;

96 
MPOOLFILE
 *
m
;

97 cڡ *
th
;

98 
u_t32_t
 
ags
;

99 
mode
;

100 
size_t
 
pgsize
;

102 
DB_ENV
 *
dbv
;

103 
DB_MPOOL
 *
dbmp
;

104 
DB_MPOOLFILE
 *
tmp_dbm
;

105 
DB_MPOOL_HASH
 *
hp
;

106 
MPOOL
 *
mp
;

107 
MPOOLFILE
 *
loc_m
;

108 
size_t
 
maxm
;

109 
db_pgno_t
 
ϡ_pgno
;

110 
u_t32_t
 
buck
, 
mbys
, 
bys
, 
oags
, 
gesize
;

111 
fc
, 
t
;

112 *
h
;

115 i(
	`F_ISSET
(
dbm
, 
MP_OPEN_CALLED
))

118 
dbv
 = 
dbm
->dbenv;

119 
dbmp
 = 
dbv
->
mp_hd
;

120 
mp
 = 
dbmp
->
gfo
[0].
imy
;

121 
fc
 = 
t
 = 0;

122 
mbys
 = 
bys
 = 0;

123 
h
 = 
NULL
;

124 
loc_m
 = 
NULL
;

130 
gesize
 = (
u_t32_t
)
pgsize
;

140 
	`DB_ASSERT
(
dbv
, 
m
 =
NULL
 || 
th
 == NULL);

142 
buck
 = 0;

143 
hp
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->
ab
);

144 i(
m
 =
NULL
) {

145 i(
th
 =
NULL
)

146 
loc
;

167 i(
	`FLD_ISSET
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
))

168 
buck
 = 
	`FNBUCKET
(
th
, 
	`
(path));

170 
buck
 = 
	`FNBUCKET
(
dbm
->
feid
, 
DB_FILE_ID_LEN
);

171 
hp
 +
buck
;

178 i(
	`F_ISSET
(
dbm
, 
MP_FILEID_SET
)) {

179 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

180 
t
 =

181 
	`__memp_mpf_fd
(
dbv
, 
dbm
, 
hp
, 
th
, 
ags
,&
m
);

182 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

183 i(
t
 != 0)

184 
r
;

185 i(
m
 !
NULL
)

186 
fc
 = 1;

194 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

195 i(!
m
->
ddfe
) {

196 ++
m
->
mpf_t
;

197 
fc
 = 1;

199 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

207 i(
m
->
ddfe
)

208  (
EINVAL
);

215 i(!
	`FLD_ISSET
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
)) {

217 
oags
 = 0;

218 i(
	`LF_ISSET
(
DB_CREATE
))

219 
oags
 |
DB_OSO_CREATE
;

220 i(
	`LF_ISSET
(
DB_DIRECT
))

221 
oags
 |
DB_OSO_DIRECT
;

222 i(
	`LF_ISSET
(
DB_RDONLY
)) {

223 
	`F_SET
(
dbm
, 
MP_READONLY
);

224 
oags
 |
DB_OSO_RDONLY
;

234 i(
	`F_ISSET
(
dbv
, 
DB_ENV_DSYNC_DB
))

235 
oags
 |
DB_OSO_DSYNC
;

248 i(
m
 !
NULL
) {

249 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

250 
th
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
th_off
);

252 i((
t
 = 
	`__db_ame
(
dbv
,

253 
DB_APP_DATA
, 
th
, 0, 
NULL
, &
h
)) == 0)

254 
t
 = 
	`__os_ݒ
(
dbv
, 
h
,

255 (
u_t32_t
)
gesize
, 
oags
, 
mode
, &
dbm
->
fhp
);

256 i(
m
 !
NULL
)

257 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

258 i(
t
 != 0)

259 
r
;

266 
dbm
->
fhp
->
f
 = 1;

267 i((
t
 = 
	`__mux_loc
(
dbv
, 
MTX_MPOOL_FH
,

268 
DB_MUTEX_PROCESS_ONLY
, &
dbm
->
fhp
->
mtx_fh
)) != 0)

269 
r
;

283 i((
t
 = 
	`__os_iofo
(

284 
dbv
, 
h
, 
dbm
->
fhp
, &
mbys
, &
bys
, 
NULL
)) != 0) {

285 
	`__db_r
(
dbv
, 
t
, "%s", 
h
);

286 
r
;

299 
	`DB_ASSERT
(
dbv
, 
gesize
 != 0);

300 i(
bys
 % 
gesize
 != 0) {

301 i(
	`LF_ISSET
(
DB_ODDFILESIZE
))

302 
bys
 -(
u_t32_t
)(by% 
gesize
);

304 
	`__db_rx
(
dbv
,

305 "%s: fsiznه muɝ othgesize", 
h
);

306 
t
 = 
EINVAL
;

307 
r
;

317 i(
m
 =
NULL
 && !
	`F_ISSET
(
dbm
, 
MP_FILEID_SET
)) {

318 i((
t
 =

319 
	`__os_feid
(
dbv
, 
h
, 0, 
dbm
->
feid
)) != 0)

320 
r
;

321 
	`F_SET
(
dbm
, 
MP_FILEID_SET
);

322 
loc
;

326 i(
m
 !
NULL
)

327 
have_m
;

336 
check
: 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

337 i((
t
 = 
	`__memp_mpf_fd
(
dbv
, 
dbm
, 
hp
, 
th
, 
ags
, &
m
) != 0))

338 
r
;

340 i(
loc_m
 !
NULL
 && 
m
 == NULL) {

341 
m
 = 
loc_m
;

342 
loc_m
 = 
NULL
;

343 
	`SH_TAILQ_INSERT_HEAD
(&
hp
->
hash_buck
, 
m
, 
q
, 
__mpofe
);

344 } i(
m
 !
NULL
) {

360 i((
dbm
->
r_n
 !
DB_CLEARLEN_NOTSET
 &&

361 
m
->
r_n
 !
DB_CLEARLEN_NOTSET
 &&

362 
dbm
->
r_n
 !
m
->clear_len) ||

363 (
gesize
 !0 &&agesiz!
m
->

.
_gesize
) ||

364 (
dbm
->
l_offt
 !
DB_LSN_OFF_NOTSET
 &&

365 
m
->
l_off
 !
DB_LSN_OFF_NOTSET
 &&

366 
dbm
->
l_offt
 !
m
->
l_off
)) {

367 
	`__db_rx
(
dbv
,

369 
th
);

370 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

371 
t
 = 
EINVAL
;

372 
r
;

376 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

377 i(
loc_m
 !
NULL
) {

378 
	`MUTEX_LOCK
(
dbv
, 
loc_m
->
mux
);

379 i((
t
 = 
	`__memp_mf_disrd
(
dbmp
, 
loc_m
)) != 0)

380 
r
;

383 i(
m
 =
NULL
) {

388 i(
	`FLD_ISSET
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
) &&

389 !
	`LF_ISSET
(
DB_CREATE
)) {

390 
t
 = 
ENOENT
;

391 
r
;

394 
loc
:

399 i(
th
 !
NULL
 &&

400 !
	`FLD_ISSET
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
) &&

401 !
	`F_ISSET
(
dbm
, 
MP_FILEID_SET
&& (
t
 =

402 
	`__os_feid
(
dbv
, 
h
, 0, 
dbm
->
feid
)) != 0)

403 
r
;

405 i((
t
 = 
	`__memp_mpf_loc
(
dbmp
,

406 
dbm
, 
th
, 
gesize
, 
ags
, &
loc_m
)) != 0)

407 
r
;

416 
	`DB_ASSERT
(
dbv
, 
gesize
 != 0);

417 
ϡ_pgno
 = (
db_pgno_t
)(
mbys
 * (
MEGABYTE
 / 
gesize
));

418 
ϡ_pgno
 +(
db_pgno_t
)(
bys
 / 
gesize
);

419 i(
ϡ_pgno
 != 0)

420 --
ϡ_pgno
;

422 
loc_m
->
ϡ_ushed_pgno
 =oc_m->
ig_ϡ_pgno
 =

423 
loc_m
->
ϡ_pgno
 =ast_pgno;

425 
loc_m
->
buck
 = bucket;

428 i(
th
 !
NULL
)

429 
check
;

431 
m
 = 
loc_m
;

433 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

434 
	`SH_TAILQ_INSERT_TAIL
(&
hp
->
hash_buck
, 
m
, 
q
);

435 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

437 
have_m
:

443 i(!
	`LF_ISSET
(
DB_DURABLE_UNKNOWN
 | 
DB_RDONLY
)) {

444 i(
	`F_ISSET
(
m
, 
MP_DURABLE_UNKNOWN
)) {

445 i(
	`LF_ISSET
(
MP_NOT_DURABLE
))

446 
	`F_SET
(
m
, 
MP_NOT_DURABLE
);

447 
	`F_CLR
(
m
, 
MP_DURABLE_UNKNOWN
);

448 } i(!
	`LF_ISSET
(
DB_TXN_NOT_DURABLE
) !=

449 !
	`F_ISSET
(
m
, 
MP_NOT_DURABLE
)) {

450 
	`__db_rx
(
dbv
,

452 
t
 = 
EINVAL
;

453 
r
;

457 i(
	`LF_ISSET
(
DB_MULTIVERSION
)) {

458 ++
m
->
muivsi
;

459 
	`F_SET
(
dbm
, 
MP_MULTIVERSION
);

466 
dbm
->
m
 = mfp;

489 
	#DB_MAXMMAPSIZE
 (10 * 1024 * 1024

	)

490 i(
	`F_ISSET
(
m
, 
MP_CAN_MMAP
)) {

491 
maxm
 = 
dbv
->
mp_mmsize
 == 0 ?

492 
DB_MAXMMAPSIZE
 : 
dbv
->
mp_mmsize
;

493 i(
th
 =
NULL
 ||

494 
	`FLD_ISSET
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
))

495 
	`F_CLR
(
m
, 
MP_CAN_MMAP
);

496 i(!
	`F_ISSET
(
dbm
, 
MP_READONLY
))

497 
	`F_CLR
(
m
, 
MP_CAN_MMAP
);

498 i(
dbm
->
y
 != 0)

499 
	`F_CLR
(
m
, 
MP_CAN_MMAP
);

500 i(
	`LF_ISSET
(
DB_NOMMAP
|| 
	`F_ISSET
(
dbv
, 
DB_ENV_NOMMAP
))

501 
	`F_CLR
(
m
, 
MP_CAN_MMAP
);

503 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

504 
maxm
 = 
mp
->
mp_mmsize
 == 0 ?

505 
DB_MAXMMAPSIZE
 : 
mp
->
mp_mmsize
;

506 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

507 i(
mbys
 > 
maxm
 / 
MEGABYTE
 ||

508 (
mbys
 =
maxm
 / 
MEGABYTE
 &&

509 
bys
 >
maxm
 % 
MEGABYTE
))

510 
	`F_CLR
(
m
, 
MP_CAN_MMAP
);

513 
dbm
->
addr
 = 
NULL
;

514 i(
	`F_ISSET
(
m
, 
MP_CAN_MMAP
)) {

515 
dbm
->
n
 = (
size_t
)
mbys
 * 
MEGABYTE
 + 
bys
;

516 i(
	`__os_mfe
(
dbv
, 
h
,

517 
dbm
->
fhp
, dbm->
n
, 1, &dbm->
addr
) != 0) {

518 
dbm
->
addr
 = 
NULL
;

519 
	`F_CLR
(
m
, 
MP_CAN_MMAP
);

524 
	`F_SET
(
dbm
, 
MP_OPEN_CALLED
);

531 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

533 i(
dbm
->
fhp
 !
NULL
)

534 
	`TAILQ_FOREACH
(
tmp_dbm
, &
dbmp
->
dbmfq
, 
q
)

535 i(
dbm
->
m
 =
tmp_dbm
->mfp &&

536 (
	`F_ISSET
(
dbm
, 
MP_READONLY
) ||

537 !
	`F_ISSET
(
tmp_dbm
, 
MP_READONLY
))) {

538 ()
	`__mux_
(
dbv
, &
dbm
->
fhp
->
mtx_fh
);

539 ()
	`__os_ohd
(
dbv
, 
dbm
->
fhp
);

540 ++
tmp_dbm
->
fhp
->
f
;

541 
dbm
->
fhp
 = 
tmp_dbm
->fhp;

545 
	`TAILQ_INSERT_TAIL
(&
dbmp
->
dbmfq
, 
dbm
, 
q
);

547 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

550 
r
: i(
fc
) {

557 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

558 --
m
->
mpf_t
;

559 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

563 i(
h
 !
NULL
)

564 
	`__os_
(
dbv
, 
h
);

565  (
t
);

566 
	}
}

573 
	$__memp_mpf_fd
(
dbv
, 
dbm
, 
hp
, 
th
, 
ags
, 
mp
)

574 
DB_ENV
 *
dbv
;

575 
DB_MPOOLFILE
 *
dbm
;

576 
DB_MPOOL_HASH
 *
hp
;

577 cڡ *
th
;

578 
u_t32_t
 
ags
;

579 
MPOOLFILE
 **
mp
;

581 
DB_MPOOL
 *
dbmp
;

582 
MPOOLFILE
 *
m
;

584 
dbmp
 = 
dbv
->
mp_hd
;

586 
	`SH_TAILQ_FOREACH
(
m
, &
hp
->
hash_buck
, 
q
, 
__mpofe
) {

588 i(
m
->
ddfe
 || 
	`F_ISSET
(m, 
MP_TEMP
))

596 i(
	`FLD_ISSET
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
)) {

597 i(!
m
->
no_backg_fe
)

600 i(
	`rcmp
(
th
, 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
th_off
)))

607 i(!
	`F_ISSET
(
dbm
, 
MP_FILEID_SET
))

608 ()
	`__memp_t_feid
(
dbm
,

609 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
feid_off
));

611 i(
	`memcmp
(
dbm
->
feid
, 
	`R_ADDR
(
dbmp
->
gfo
,

612 
m
->
feid_off
), 
DB_FILE_ID_LEN
) != 0)

623 i(
	`LF_ISSET
(
DB_TRUNCATE
)) {

624 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

625 
m
->
ddfe
 = 1;

626 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

642 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

643 i(
m
->
ddfe
) {

644 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

647 ++
m
->
mpf_t
;

648 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

651 i(
dbm
->
y
 != 0)

652 
m
->
y
 = 
dbm
->ftype;

653 i(
dbm
->
r_n
 !
DB_CLEARLEN_NOTSET
)

654 
m
->
r_n
 = 
dbm
->clear_len;

655 i(
dbm
->
l_offt
 != -1)

656 
m
->
l_off
 = 
dbm
->
l_offt
;

661 *
mp
 = 
m
;

663 
	}
}

666 
	$__memp_mpf_loc
(
dbmp
, 
dbm
, 
th
, 
gesize
, 
ags
, 
tm
)

667 
DB_MPOOL
 *
dbmp
;

668 
DB_MPOOLFILE
 *
dbm
;

669 cڡ *
th
;

670 
u_t32_t
 
gesize
;

671 
u_t32_t
 
ags
;

672 
MPOOLFILE
 **
tm
;

674 
DB_ENV
 *
dbv
;

675 
MPOOLFILE
 *
m
;

676 
t
;

677 *
p
;

679 
dbv
 = 
dbmp
->dbenv;

680 
t
 = 0;

682 i((
t
 = 
	`__memp_loc
(
dbmp
,

683 
dbmp
->
gfo
, 
NULL
, (
MPOOLFILE
), NULL, &
m
)) != 0)

684 
r
;

685 
	`memt
(
m
, 0, (
MPOOLFILE
));

686 
m
->
mpf_t
 = 1;

687 
m
->
y
 = 
dbm
->ftype;

688 
m
->

.
_gesize
 = 
gesize
;

689 
m
->
l_off
 = 
dbm
->
l_offt
;

690 
m
->
r_n
 = 
dbm
->clear_len;

691 
m
->
iܙy
 = 
dbm
->priority;

692 i(
dbm
->
gbys
 !0 || dbm->
bys
 != 0) {

693 
m
->
maxpgno
 = (
db_pgno_t
)

694 (
dbm
->
gbys
 * (
GIGABYTE
 / 
m
->

.
_gesize
));

695 
m
->
maxpgno
 +(
db_pgno_t
)

696 ((
dbm
->
bys
 + 
m
->

.
_gesize
 - 1) /

697 
m
->

.
_gesize
);

699 i(
	`FLD_ISSET
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
))

700 
m
->
no_backg_fe
 = 1;

701 i(
	`FLD_ISSET
(
dbm
->
cfig_ags
, 
DB_MPOOL_UNLINK
))

702 
m
->
uƚk__o
 = 1;

704 i(
	`LF_ISSET
(
DB_DURABLE_UNKNOWN
 | 
DB_RDONLY
))

705 
	`F_SET
(
m
, 
MP_DURABLE_UNKNOWN
);

706 i(
	`LF_ISSET
(
DB_DIRECT
))

707 
	`F_SET
(
m
, 
MP_DIRECT
);

708 i(
	`LF_ISSET
(
DB_EXTENT
))

709 
	`F_SET
(
m
, 
MP_EXTENT
);

710 i(
	`LF_ISSET
(
DB_TXN_NOT_DURABLE
))

711 
	`F_SET
(
m
, 
MP_NOT_DURABLE
);

712 
	`F_SET
(
m
, 
MP_CAN_MMAP
);

720 i(
th
 =
NULL
)

721 
	`F_SET
(
m
, 
MP_TEMP
);

722 i(
	`FLD_ISSET
(
dbm
->
cfig_ags
, 
DB_MPOOL_NOFILE
))

723 
m
->
mpf_t
++;

726 i(
	`F_ISSET
(
dbm
, 
MP_FILEID_SET
)) {

727 i((
t
 = 
	`__memp_loc
(
dbmp
, dbmp->
gfo
,

728 
NULL
, 
DB_FILE_ID_LEN
, &
m
->
feid_off
, &
p
)) != 0)

729 
r
;

730 
	`memy
(
p
, 
dbm
->
feid
, 
DB_FILE_ID_LEN
);

734 i(
th
 !
NULL
) {

735 i((
t
 = 
	`__memp_loc
(
dbmp
, dbmp->
gfo
,

736 
NULL
, 
	`
(
th
+ 1, &
m
->
th_off
, &
p
)) != 0)

737 
r
;

738 
	`memy
(
p
, 
th
, 
	`
(path) + 1);

742 i(
dbm
->
pgcook
 =
NULL
 || dbm->pgcook->
size
 == 0) {

743 
m
->
pgcook_n
 = 0;

744 
m
->
pgcook_off
 = 0;

746 i((
t
 = 
	`__memp_loc
(
dbmp
, dbmp->
gfo
,

747 
NULL
, 
dbm
->
pgcook
->
size
,

748 &
m
->
pgcook_off
, &
p
)) != 0)

749 
r
;

750 
	`memy
(
p
,

751 
dbm
->
pgcook
->
da
, dbm->pgcook->
size
);

752 
m
->
pgcook_n
 = 
dbm
->
pgcook
->
size
;

755 i((
t
 = 
	`__mux_loc
(
dbv
,

756 
MTX_MPOOLFILE_HANDLE
, 0, &
m
->
mux
)) != 0)

757 
r
;

758 *
tm
 = 
m
;

760 
r
:  (
t
);

761 
	}
}

770 
	$__memp_fo_
(
dbm
, 
ags
)

771 
DB_MPOOLFILE
 *
dbm
;

772 
u_t32_t
 
ags
;

774 
DB_ENV
 *
dbv
;

775 
DB_THREAD_INFO
 *

;

776 
t
;

778 
dbv
 = 
dbm
->dbenv;

783 i(
ags
 != 0)

784 ()
	`__db_
(
dbv
, "DB_MPOOLFILE->close", 0);

786 
	`ENV_ENTER
(
dbv
, 

);

787 
	`REPLICATION_WRAP
(
dbv
, (
	`__memp_fo
(
dbm
, 0)), 
t
);

788 
	`ENV_LEAVE
(
dbv
, 

);

789  (
t
);

790 
	}
}

799 
	$__memp_fo
(
dbm
, 
ags
)

800 
DB_MPOOLFILE
 *
dbm
;

801 
u_t32_t
 
ags
;

803 
DB_ENV
 *
dbv
;

804 
DB_MPOOL
 *
dbmp
;

805 
MPOOLFILE
 *
m
;

806 *
h
;

807 
u_t32_t
 
f
;

808 
ded
, 
t
, 
t_t
;

810 
dbv
 = 
dbm
->dbenv;

811 
dbmp
 = 
dbv
->
mp_hd
;

812 
t
 = 0;

823 i(
dbmp
 =
NULL
)

824 
de
;

826 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

828 
	`DB_ASSERT
(
dbv
, 
dbm
->
f
 >= 1);

829 i((
f
 = --
dbm
->f=0 && 
	`F_ISSET
(dbm, 
MP_OPEN_CALLED
))

830 
	`TAILQ_REMOVE
(&
dbmp
->
dbmfq
, 
dbm
, 
q
);

836 i(
f
 =0 && 
dbm
->
fhp
 !
NULL
 && --dbmfp->fhp->ref > 0)

837 
dbm
->
fhp
 = 
NULL
;

838 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

839 i(
f
 != 0)

843 i(
dbm
->
pf
 != 0) {

844 
	`__db_rx
(
dbv
, "%s: close: %lu blockseftinned",

845 
	`__memp_
(
dbm
), (
u_lg
)dbm->
pf
);

846 
t
 = 
	`__db_nic
(
dbv
, 
DB_RUNRECOVERY
);

850 i(
dbm
->
addr
 !
NULL
 &&

851 (
t
 = 
	`__os_unmfe
(
dbv
, 
dbm
->
addr
, dbm->
n
)) != 0)

852 
	`__db_r
(
dbv
, 
t
, "%s", 
	`__memp_
(
dbm
));

858 i(
dbm
->
fhp
 !
NULL
) {

859 i((
t_t
 =

860 
	`__mux_
(
dbv
, &
dbm
->
fhp
->
mtx_fh
)!0 && 
t
 == 0)

861 
t
 = 
t_t
;

862 i((
t_t
 = 
	`__os_ohd
(
dbv
, 
dbm
->
fhp
)) != 0) {

863 
	`__db_r
(
dbv
, 
t_t
, "%s", 
	`__memp_
(
dbm
));

864 i(
t
 == 0)

865 
t
 = 
t_t
;

867 
dbm
->
fhp
 = 
NULL
;

876 
m
 = 
dbm
->mfp;

877 
	`DB_ASSERT
(
dbv
,

878 (
	`F_ISSET
(
dbm
, 
MP_OPEN_CALLED
&& 
m
 !
NULL
) ||

879 (!
	`F_ISSET
(
dbm
, 
MP_OPEN_CALLED
&& 
m
 =
NULL
));

880 i(!
	`F_ISSET
(
dbm
, 
MP_OPEN_CALLED
))

881 
de
;

890 
ded
 = 0;

891 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

892 i(
	`F_ISSET
(
dbm
, 
MP_MULTIVERSION
))

893 --
m
->
muivsi
;

894 i(--
m
->
mpf_t
 =0 || 
	`LF_ISSET
(
DB_MPOOL_DISCARD
)) {

895 i(
	`LF_ISSET
(
DB_MPOOL_DISCARD
) ||

896 
	`F_ISSET
(
m
, 
MP_TEMP
|| m->
uƚk__o
) {

897 
m
->
ddfe
 = 1;

899 i(
m
->
uƚk__o
) {

900 i((
t_t
 = 
	`__db_ame
(
dbmp
->
dbv
,

901 
DB_APP_DATA
, 
	`R_ADDR
(
dbmp
->
gfo
,

902 
m
->
th_off
), 0, 
NULL
, &
h
)!0 && 
t
 == 0)

903 
t
 = 
t_t
;

904 i(
t_t
 == 0) {

905 i((
t_t
 = 
	`__os_uƚk
(

906 
dbmp
->
dbv
, 
h
)!0 && 
t
 == 0)

907 
t
 = 
t_t
;

908 
	`__os_
(
dbv
, 
h
);

911 i(
m
->
block_t
 == 0) {

912 i((
t_t
 =

913 
	`__memp_mf_disrd
(
dbmp
, 
m
)!0 && 
t
 == 0)

914 
t
 = 
t_t
;

915 
ded
 = 1;

918 i(!
ded
)

919 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

921 
de
:

922 i(
dbm
->
pgcook
 !
NULL
) {

923 
	`__os_
(
dbv
, 
dbm
->
pgcook
->
da
);

924 
	`__os_
(
dbv
, 
dbm
->
pgcook
);

926 
	`__os_
(
dbv
, 
dbm
);

928  (
t
);

929 
	}
}

938 
	$__memp_mf_disrd
(
dbmp
, 
m
)

939 
DB_MPOOL
 *
dbmp
;

940 
MPOOLFILE
 *
m
;

942 
DB_ENV
 *
dbv
;

943 
DB_MPOOL_HASH
 *
hp
;

944 #ifde
HAVE_STATISTICS


945 
DB_MPOOL_STAT
 *

;

947 
MPOOL
 *
mp
;

948 
ed_sync
, 
t
, 
t_t
;

950 
dbv
 = 
dbmp
->dbenv;

951 
mp
 = 
dbmp
->
gfo
[0].
imy
;

952 
hp
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->
ab
);

953 
hp
 +
m
->
buck
;

954 
t
 = 0;

965 
ed_sync
 =

966 
m
->
fe_wrn
 && !m->
ddfe
 && !
	`F_ISSET
(m, 
MP_TEMP
);

973 
m
->
ddfe
 = 1;

976 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

977 i((
t_t
 = 
	`__mux_
(
dbv
, &
m
->
mux
)!0 && 
t
 == 0)

978 
t
 = 
t_t
;

981 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

982 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
m
, 
q
, 
__mpofe
);

983 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

986 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

987 i(
ed_sync
 &&

988 (
t_t
 = 
	`__memp_mf_sync
(
dbmp
, 
m
, 0)!0 && 
t
 == 0)

989 
t
 = 
t_t
;

991 #ifde
HAVE_STATISTICS


993 

 = &
mp
->

;

994 

->
_che_h
 +
m
->

.st_cache_hit;

995 

->
_che_miss
 +
m
->

.st_cache_miss;

996 

->
_m
 +
m
->

.st_map;

997 

->
_ge_
 +
m
->

.st_page_create;

998 

->
_ge_
 +
m
->

.st_page_in;

999 

->
_ge_out
 +
m
->

.st_page_out;

1003 i(
m
->
th_off
 != 0)

1004 
	`__memp_
(&
dbmp
->
gfo
[0], 
NULL
,

1005 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
th_off
));

1006 i(
m
->
feid_off
 != 0)

1007 
	`__memp_
(&
dbmp
->
gfo
[0], 
NULL
,

1008 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
feid_off
));

1009 i(
m
->
pgcook_off
 != 0)

1010 
	`__memp_
(&
dbmp
->
gfo
[0], 
NULL
,

1011 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
pgcook_off
));

1012 
	`__memp_
(&
dbmp
->
gfo
[0], 
NULL
, 
m
);

1014 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

1016  (
t
);

1017 
	}
}

1026 
	$__memp_memli
(
dbv
, 
me
, 

)

1027 
DB_ENV
 *
dbv
;

1028 ***
me
;

1029 *

;

1031 
DB_MPOOL
 *
dbmp
;

1032 
DB_MPOOL_HASH
 *
hp
;

1033 
MPOOL
 *
mp
;

1034 
MPOOLFILE
 *
m
;

1035 
ysz
, 
t
, 
i
, 
t
;

1036 **
mes
;

1038 
mes
 = 
NULL
;

1039 
dbmp
 = 
dbv
->
mp_hd
;

1040 
mp
 = 
dbmp
->
gfo
[0].
imy
;

1041 
hp
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->
ab
);

1043 
ysz
 = 
t
 = 0;

1044 
i
 = 0; i < 
MPOOL_FILE_BUCKETS
; i++, 
hp
++) {

1045 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

1046 
	`SH_TAILQ_FOREACH
(
m
, &
hp
->
hash_buck
, 
q
, 
__mpofe
) {

1048 i(
m
->
ddfe
 || 
	`F_ISSET
(m, 
MP_TEMP
))

1052 i(!
m
->
no_backg_fe
)

1056 i(
t
 >
ysz
) {

1057 
ysz
 += 100;

1058 i((
t
 = 
	`__os_loc
(
dbv
,

1059 (
u_t
)
ysz
 * (
mes
[0]),

1060 &
mes
)) != 0)

1061 
nomem
;

1063 i((
t
 = 
	`__os_rdup
(
dbv
,

1064 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
th_off
),

1065 &
mes
[
t
])) != 0)

1066 
nomem
;

1068 
t
++;

1070 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

1072 *
me
 = 
mes
;

1073 *

 = 
t
;

1076 
nomem
: 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

1077 i(
mes
 !
NULL
) {

1078 --
t
 >= 0)

1079 
	`__os_
(
dbv
, 
mes
[
t
]);

1080 
	`__os_
(
dbv
, 
mes
);

1084 *

 = 0;

1085 *
me
 = 
NULL
;

1086  (
t
);

1087 
	}
}

	@../mp/mp_fput.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/mp.h
"

15 
__memp_t_u
 
__P
((
DB_ENV
 *, 
REGINFO
 *));

25 
	$__memp_ut_
(
dbm
, 
pgaddr
, 
iܙy
, 
ags
)

26 
DB_MPOOLFILE
 *
dbm
;

27 *
pgaddr
;

28 
DB_CACHE_PRIORITY
 
iܙy
;

29 
u_t32_t
 
ags
;

31 
DB_ENV
 *
dbv
;

32 
DB_THREAD_INFO
 *

;

33 
t
, 
t_t
;

35 
dbv
 = 
dbm
->dbenv;

36 
	`PANIC_CHECK
(
dbv
);

37 i(
ags
 != 0)

38  (
	`__db_
(
dbv
, "DB_MPOOLFILE->put", 0));

40 
	`MPF_ILLEGAL_BEFORE_OPEN
(
dbm
, "DB_MPOOLFILE->put");

42 
	`ENV_ENTER
(
dbv
, 

);

44 
t
 = 
	`__memp_ut
(
dbm
, 
pgaddr
, 
iܙy
);

45 i(
	`IS_ENV_REPLICATED
(
dbv
) &&

46 (
t_t
 = 
	`___p_ex
(
dbv
)!0 && 
t
 == 0)

47 
t
 = 
t_t
;

49 
	`ENV_LEAVE
(
dbv
, 

);

50  (
t
);

51 
	}
}

60 
	$__memp_ut
(
dbm
, 
pgaddr
, 
iܙy
)

61 
DB_MPOOLFILE
 *
dbm
;

62 *
pgaddr
;

63 
DB_CACHE_PRIORITY
 
iܙy
;

65 
BH
 *
bhp
;

66 
DB_ENV
 *
dbv
;

67 
DB_MPOOL
 *
dbmp
;

68 
DB_MPOOL_HASH
 *
hp
;

69 
MPOOL
 *
c_mp
;

70 
MPOOLFILE
 *
m
;

71 
REGINFO
 *
f
;

72 
adju
, 
p
, 
t
, 
t_t
;

74 
dbv
 = 
dbm
->dbenv;

75 
dbmp
 = 
dbv
->
mp_hd
;

76 
m
 = 
dbm
->mfp;

77 
bhp
 = (
BH
 *)((
u_t8_t
 *)
pgaddr
 - 
	`SSZA
(BH, 
buf
));

78 
t
 = 0;

86 i(
dbm
->
addr
 !
NULL
 && 
pgaddr
 >= dbmfp->addr &&

87 (
u_t8_t
 *)
pgaddr
 <(u_t8_*)
dbm
->
addr
 + dbm->
n
)

90 #ifde
DIAGNOSTIC


95 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

96 i(
dbm
->
pf
 == 0) {

97 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

98 
	`__db_rx
(
dbv
,

99 "%s: mܐgetuedhrved", 
	`__memp_
(
dbm
));

100  (
	`__db_nic
(
dbv
, 
EACCES
));

102 --
dbm
->
pf
;

103 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

107 
	`MP_GET_BUCKET
(
dbm
, 
bhp
->
pgno
, &
f
, 
hp
, 
t
);

108 i(
t
 != 0)

109  (
t
);

110 
c_mp
 = 
f
->
imy
;

116 i(
bhp
->
f
 == 0) {

117 
	`__db_rx
(
dbv
, "%s:age %lu: unpinnedageeturned",

118 
	`__memp_
(
dbm
), (
u_lg
)
bhp
->
pgno
);

119 
	`DB_ASSERT
(
dbv
, 
bhp
->
f
 != 0);

120 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

121  (
	`__db_nic
(
dbv
, 
EACCES
));

125 ++
c_mp
->
put_cou
;

128 i(
	`F_ISSET
(
bhp
, 
BH_DIRTY
)) {

129 
m
->
fe_wrn
 = 1;

131 
	`DB_ASSERT
(
dbv
, !
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
));

139 i(--
bhp
->
f
 > 1 || (bhp->=1 && !
	`F_ISSET
(bhp, 
BH_LOCKED
))) {

140 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

145 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
m
->

.
_gesize
, 0);

148 i(
iܙy
 =
DB_PRIORITY_VERY_LOW
 ||

149 
m
->
iܙy
 =
MPOOL_PRI_VERY_LOW
)

150 
bhp
->
iܙy
 = 0;

157 
bhp
->
iܙy
 = 
c_mp
->
u_cou
;

159 
iܙy
) {

161 
DB_PRIORITY_UNCHANGED
:

162 
p
 = 
m
->
iܙy
;

164 
DB_PRIORITY_VERY_LOW
:

165 
p
 = 
MPOOL_PRI_VERY_LOW
;

167 
DB_PRIORITY_LOW
:

168 
p
 = 
MPOOL_PRI_LOW
;

170 
DB_PRIORITY_DEFAULT
:

171 
p
 = 
MPOOL_PRI_DEFAULT
;

173 
DB_PRIORITY_HIGH
:

174 
p
 = 
MPOOL_PRI_HIGH
;

176 
DB_PRIORITY_VERY_HIGH
:

177 
p
 = 
MPOOL_PRI_VERY_HIGH
;

181 
adju
 = 0;

182 i(
p
 != 0)

183 
adju
 = ()
c_mp
->

.
_ges
 / 
p
;

185 i(
	`F_ISSET
(
bhp
, 
BH_DIRTY
))

186 
adju
 +()
c_mp
->

.
_ges
 / 
MPOOL_PRI_DIRTY
;

188 i(
adju
 > 0) {

189 i(
UINT32_MAX
 - 
bhp
->
iܙy
 >(
u_t32_t
)
adju
)

190 
bhp
->
iܙy
 +
adju
;

191 } i(
adju
 < 0)

192 i(
bhp
->
iܙy
 > (
u_t32_t
)-
adju
)

193 
bhp
->
iܙy
 +
adju
;

196 i(
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
) ==

197 
	`SH_TAILQ_LAST
(&
hp
->
hash_buck
, 
hq
, 
__bh
))

198 
hp
->
hash_iܙy
 = 
	`BH_PRIORITY
(
bhp
);

200 
	`__memp_buck_d
(
dbv
, 
hp
, 
bhp
);

201 #ifde
DIAGNOSTIC


202 
	`__memp_check_d
(
dbv
, 
hp
);

213 i(
	`F_ISSET
(
bhp
, 
BH_LOCKED
&& bhp->
f_sync
 != 0)

214 --
bhp
->
f_sync
;

216 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

222 i(++
c_mp
->
u_cou
 =
UINT32_MAX
)

223 i((
t_t
 =

224 
	`__memp_t_u
(
dbv
, 
dbmp
->
gfo
)!0 && 
t
 == 0)

225 
t
 = 
t_t
;

227  (
t
);

228 
	}
}

235 
	$__memp_t_u
(
dbv
, 
f
)

236 
DB_ENV
 *
dbv
;

237 
REGINFO
 *
f
;

239 
BH
 *
bhp
, *
tbhp
;

240 
DB_MPOOL_HASH
 *
hp
;

241 
MPOOL
 *
c_mp
;

242 
u_t32_t
 
buck
, 
iܙy
;

244 
c_mp
 = 
f
->
imy
;

249 
c_mp
->
u_cou
 -
MPOOL_BASE_DECREMENT
;

252 
hp
 = 
	`R_ADDR
(
f
, 
c_mp
->
hb
),

253 
buck
 = 0; buck < 
c_mp
->
hb_bucks
; ++
hp
, ++bucket) {

260 i(
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
=
NULL
) {

261 
c_mp
->
u_t
++;

265 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

266 
c_mp
->
u_t
++;

272 
iܙy
 = 0;

273 
	`SH_TAILQ_FOREACH
(
bhp
, &
hp
->
hash_buck
, 
hq
, 
__bh
) {

274 
tbhp
 = 
bhp
;bh!
NULL
;

275 
tbhp
 = 
	`SH_CHAIN_PREV
bhp, 
vc
, 
__bh
)) {

276 i(
tbhp
->
iܙy
 !
UINT32_MAX
 &&

277 
tbhp
->
iܙy
 > 
MPOOL_BASE_DECREMENT
) {

278 
tbhp
->
iܙy
 -
MPOOL_BASE_DECREMENT
;

279 i(
tbhp
->
iܙy
 <riority)

280 
tbhp
->
iܙy
 =riority;

283 
iܙy
 = 
bhp
->priority;

289 i((
tbhp
 =

290 
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
)!
NULL
)

291 
hp
->
hash_iܙy
 = 
	`BH_PRIORITY
(
tbhp
);

292 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

294 
c_mp
->
u_t
 = 0;

296 
	`COMPQUIET
(
dbv
, 
NULL
);

298 
	}
}

	@../mp/mp_fset.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/mp.h
"

14 
	~"dbc/txn.h
"

24 
	$__memp_dty
(
dbm
, 
add
, 
txn
, 
iܙy
, 
ags
)

25 
DB_MPOOLFILE
 *
dbm
;

26 *
add
;

27 
DB_TXN
 *
txn
;

28 
DB_CACHE_PRIORITY
 
iܙy
;

29 
u_t32_t
 
ags
;

31 
BH
 *
bhp
;

32 
DB_ENV
 *
dbv
;

33 
DB_MPOOL_HASH
 *
hp
;

34 
DB_TXN
 *

;

35 #ifde
DIAG_MVCC


36 
MPOOLFILE
 *
m
;

38 
REGINFO
 *
f
;

39 
mvcc
, 
t
;

40 
db_pgno_t
 
pgno
;

41 *
pgaddr
;

43 
dbv
 = 
dbm
->dbenv;

44 
pgaddr
 = *(**)
add
;

45 
mvcc
 = 
dbm
->
m
->
muivsi
;

48 
bhp
 = (
BH
 *)((
u_t8_t
 *)
pgaddr
 - 
	`SSZA
(BH, 
buf
));

49 
pgno
 = 
bhp
->pgno;

51 i(
ags
 == 0)

52 
ags
 = 
DB_MPOOL_DIRTY
;

53 
	`DB_ASSERT
(
dbv
, 
ags
 =
DB_MPOOL_DIRTY
 || fg=
DB_MPOOL_EDIT
);

55 i(
	`F_ISSET
(
dbm
, 
MP_READONLY
)) {

56 
	`__db_rx
(
dbv
, "%s: dirty flag set foreadonly fileage",

57 
	`__memp_
(
dbm
));

58  (
EACCES
);

61 

 = 
txn
;

62 

 !
NULL
 &&n->

 != NULL;

63 

 =n->

)

66 i(
mvcc
 && 
txn
 !
NULL
 &&

67 (!
	`BH_OWNED_BY
(
dbv
, 
bhp
, 

|| 
	`SH_CHAIN_HASNEXT
(bhp, 
vc
))) {

68 
ow
: i((
t
 = 
	`__memp_fg
(
dbm
,

69 &
pgno
, 
txn
, 
ags
, 
add
)) != 0) {

70 i(
t
 !
DB_LOCK_DEADLOCK
)

71 
	`__db_rx
(
dbv
,

73 
	`__memp_
(
dbm
));

74 *(**)
add
 = 
pgaddr
;

75  (
t
);

78 
	`DB_ASSERT
(
dbv
,

79 (
ags
 =
DB_MPOOL_EDIT
 && *(**)
add
 =
pgaddr
) ||

80 (
ags
 !
DB_MPOOL_EDIT
 && *(**)
add
 !
pgaddr
));

82 i((
t
 = 
	`__memp_ut
(
dbm
, 
pgaddr
, 
iܙy
)) != 0) {

83 
	`__db_rx
(
dbv
,

85 
	`__memp_
(
dbm
));

86 ()
	`__memp_ut
(
dbm
, *(**)
add
, 
iܙy
);

87 *(**)
add
 = 
NULL
;

88  (
t
);

90 
pgaddr
 = *(**)
add
;

91 
bhp
 = (
BH
 *)((
u_t8_t
 *)
pgaddr
 - 
	`SSZA
(BH, 
buf
));

92 
	`DB_ASSERT
(
dbv
, 
pgno
 =
bhp
->pgno);

96 
	`MP_GET_BUCKET
(
dbm
, 
pgno
, &
f
, 
hp
, 
t
);

97 i(
t
 != 0)

98  (
t
);

101 i(
mvcc
 && 
txn
 !
NULL
 && 
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
)) {

102 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

103 
ow
;

107 i(!
	`F_ISSET
(
bhp
, 
BH_DIRTY
)) {

108 ++
hp
->
hash_ge_dty
;

109 
	`F_SET
(
bhp
, 
BH_DIRTY
);

111 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

113 #ifde
DIAG_MVCC


114 
m
 = 
	`R_ADDR
(
dbv
->
mp_hd
->
gfo
, 
bhp
->
mf_offt
);

115 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
m
->

.
_gesize
, 
PROT_READ
 | 
PROT_WRITE
);

118 
	}
}

	@../mp/mp_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/mp.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/hash.h
"

23 
	$__memp_v_
(
dbv
)

24 
DB_ENV
 *
dbv
;

39 
dbv
->
mp_bys
 = dbv->
mp_max_bys
 =

40 32 * ((8 * 1024+ (
BH
)+ 37 * (
DB_MPOOL_HASH
);

41 
dbv
->
mp_nche
 = 1;

44 
	}
}

53 
	$__memp_v_deroy
(
dbv
)

54 
DB_ENV
 *
dbv
;

56 
	`COMPQUIET
(
dbv
, 
NULL
);

57 
	}
}

67 
	$__memp_g_chesize
(
dbv
, 
gby
, 
by
, 
nch
)

68 
DB_ENV
 *
dbv
;

69 
u_t32_t
 *
gby
, *
by
;

70 *
nch
;

72 
MPOOL
 *
mp
;

74 
	`ENV_NOT_CONFIGURED
(
dbv
,

75 
dbv
->
mp_hd
, "DB_ENV->g_chesize", 
DB_INIT_MPOOL
);

77 i(
	`MPOOL_ON
(
dbv
)) {

79 
mp
 = 
dbv
->
mp_hd
->
gfo
[0].
imy
;

80 i(
gby
 !
NULL
)

81 *
gby
 = 
mp
->

.
_gbys
;

82 i(
by
 !
NULL
)

83 *
by
 = 
mp
->

.
_bys
;

84 i(
nch
 !
NULL
)

85 *
nch
 = ()
mp
->
eg
;

87 i(
gby
 !
NULL
)

88 *
gby
 = 
dbv
->
mp_gbys
;

89 i(
by
 !
NULL
)

90 *
by
 = 
dbv
->
mp_bys
;

91 i(
nch
 !
NULL
)

92 *
nch
 = ()
dbv
->
mp_nche
;

95 
	}
}

104 
	$__memp_t_chesize
(
dbv
, 
gbys
, 
bys
, 
g_nche
)

105 
DB_ENV
 *
dbv
;

106 
u_t32_t
 
gbys
, 
bys
;

107 
g_nche
;

109 
u_t
 
nche
;

112 
nche
 = 
g_nche
 <0 ? 1 : (
u_t
)arg_ncache;

118 i((
roff_t
=4 && 
gbys
 / 
nche
 =4 && 
bys
 == 0) {

119 --
gbys
;

120 
bys
 = 
GIGABYTE
 - 1;

122 
gbys
 +
bys
 / 
GIGABYTE
;

123 
bys
 %
GIGABYTE
;

133 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_OPEN_CALLED
)) {

134 i((
roff_t
<4 && 
gbys
 / 
nche
 >= 4) {

135 
	`__db_rx
(
dbv
,

137  (
EINVAL
);

139 i(
gbys
 / 
nche
 > 10000) {

140 
	`__db_rx
(
dbv
,

142  (
EINVAL
);

157 i(
gbys
 == 0) {

158 i(
bys
 < 500 * 
MEGABYTE
)

159 
bys
 +(by/ 4+ 37 * (
DB_MPOOL_HASH
);

160 i(
bys
 / 
nche
 < 
DB_CACHESIZE_MIN
)

161 
bys
 = 
nche
 * 
DB_CACHESIZE_MIN
;

164 i(
	`F_ISSET
(
dbv
, 
DB_ENV_OPEN_CALLED
))

165  (
	`__memp_size
(
dbv
->
mp_hd
, 
gbys
, 
bys
));

167 
dbv
->
mp_gbys
 = 
gbys
;

168 
dbv
->
mp_bys
 = 
bys
;

169 
dbv
->
mp_nche
 = 
nche
;

172 
	}
}

181 
	$__memp_t_cfig
(
dbv
, 
which
, 

)

182 
DB_ENV
 *
dbv
;

183 
u_t32_t
 
which
;

184 

;

186 
DB_MPOOL
 *
dbmp
;

187 
MPOOL
 *
mp
;

189 
	`ENV_NOT_CONFIGURED
(
dbv
,

190 
dbv
->
mp_hd
, "DB_ENV->memp_t_cfig", 
DB_INIT_MPOOL
);

192 
which
) {

193 
DB_MEMP_SUPPRESS_WRITE
:

194 
DB_MEMP_SYNC_INTERRUPT
:

195 i(
	`MPOOL_ON
(
dbv
)) {

196 
dbmp
 = 
dbv
->
mp_hd
;

197 
mp
 = 
dbmp
->
gfo
[0].
imy
;

198 i(

)

199 
	`FLD_SET
(
mp
->
cfig_ags
, 
which
);

201 
	`FLD_CLR
(
mp
->
cfig_ags
, 
which
);

205  (
EINVAL
);

208 
	}
}

217 
	$__memp_g_cfig
(
dbv
, 
which
, 
p
)

218 
DB_ENV
 *
dbv
;

219 
u_t32_t
 
which
;

220 *
p
;

222 
DB_MPOOL
 *
dbmp
;

223 
MPOOL
 *
mp
;

225 
	`ENV_REQUIRES_CONFIG
(
dbv
,

226 
dbv
->
mp_hd
, "DB_ENV->memp_g_cfig", 
DB_INIT_MPOOL
);

228 
which
) {

229 
DB_MEMP_SUPPRESS_WRITE
:

230 
DB_MEMP_SYNC_INTERRUPT
:

231 i(
	`MPOOL_ON
(
dbv
)) {

232 
dbmp
 = 
dbv
->
mp_hd
;

233 
mp
 = 
dbmp
->
gfo
[0].
imy
;

234 *
p
 = 
	`FLD_ISSET
(
mp
->
cfig_ags
, 
which
) ? 1 : 0;

236 *
p
 = 0;

239  (
EINVAL
);

242 
	}
}

248 
	$__memp_g_mp_max_ݒfd
(
dbv
, 
maxݒfdp
)

249 
DB_ENV
 *
dbv
;

250 *
maxݒfdp
;

252 
DB_MPOOL
 *
dbmp
;

253 
MPOOL
 *
mp
;

255 
	`ENV_NOT_CONFIGURED
(
dbv
,

256 
dbv
->
mp_hd
, "DB_ENV->g_mp_max_ݒfd", 
DB_INIT_MPOOL
);

258 i(
	`MPOOL_ON
(
dbv
)) {

259 
dbmp
 = 
dbv
->
mp_hd
;

260 
mp
 = 
dbmp
->
gfo
[0].
imy
;

261 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

262 *
maxݒfdp
 = 
mp
->
mp_maxݒfd
;

263 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

265 *
maxݒfdp
 = 
dbv
->
mp_maxݒfd
;

267 
	}
}

275 
	$__memp_t_mp_max_ݒfd
(
dbv
, 
maxݒfd
)

276 
DB_ENV
 *
dbv
;

277 
maxݒfd
;

279 
DB_MPOOL
 *
dbmp
;

280 
MPOOL
 *
mp
;

282 
	`ENV_NOT_CONFIGURED
(
dbv
,

283 
dbv
->
mp_hd
, "DB_ENV->t_mp_max_ݒfd", 
DB_INIT_MPOOL
);

285 i(
	`MPOOL_ON
(
dbv
)) {

286 
dbmp
 = 
dbv
->
mp_hd
;

287 
mp
 = 
dbmp
->
gfo
[0].
imy
;

288 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

289 
mp
->
mp_maxݒfd
 = 
maxݒfd
;

290 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

292 
dbv
->
mp_maxݒfd
 = 
maxݒfd
;

294 
	}
}

300 
	$__memp_g_mp_max_wre
(
dbv
, 
maxwr
, 
maxwre_
)

301 
DB_ENV
 *
dbv
;

302 *
maxwr
;

303 
db_timeout_t
 *
maxwre_
;

305 
DB_MPOOL
 *
dbmp
;

306 
MPOOL
 *
mp
;

308 
	`ENV_NOT_CONFIGURED
(
dbv
,

309 
dbv
->
mp_hd
, "DB_ENV->g_mp_max_wre", 
DB_INIT_MPOOL
);

311 i(
	`MPOOL_ON
(
dbv
)) {

312 
dbmp
 = 
dbv
->
mp_hd
;

313 
mp
 = 
dbmp
->
gfo
[0].
imy
;

314 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

315 *
maxwr
 = 
mp
->
mp_maxwre
;

316 *
maxwre_
 = 
mp
->
mp_maxwre_p
;

317 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

319 *
maxwr
 = 
dbv
->
mp_maxwre
;

320 *
maxwre_
 = 
dbv
->
mp_maxwre_p
;

323 
	}
}

332 
	$__memp_t_mp_max_wre
(
dbv
, 
maxwre
, 
maxwre_p
)

333 
DB_ENV
 *
dbv
;

334 
maxwre
;

335 
db_timeout_t
 
maxwre_p
;

337 
DB_MPOOL
 *
dbmp
;

338 
MPOOL
 *
mp
;

340 
	`ENV_NOT_CONFIGURED
(
dbv
,

341 
dbv
->
mp_hd
, "DB_ENV->g_mp_max_wre", 
DB_INIT_MPOOL
);

343 i(
	`MPOOL_ON
(
dbv
)) {

344 
dbmp
 = 
dbv
->
mp_hd
;

345 
mp
 = 
dbmp
->
gfo
[0].
imy
;

346 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

347 
mp
->
mp_maxwre
 = 
maxwre
;

348 
mp
->
mp_maxwre_p
 = 
maxwre_p
;

349 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

351 
dbv
->
mp_maxwre
 = 
maxwre
;

352 
dbv
->
mp_maxwre_p
 = 
maxwre_p
;

355 
	}
}

361 
	$__memp_g_mp_mmsize
(
dbv
, 
mp_mmsiz
)

362 
DB_ENV
 *
dbv
;

363 
size_t
 *
mp_mmsiz
;

365 
DB_MPOOL
 *
dbmp
;

366 
MPOOL
 *
mp
;

368 
	`ENV_NOT_CONFIGURED
(
dbv
,

369 
dbv
->
mp_hd
, "DB_ENV->g_mp_max_mmsize", 
DB_INIT_MPOOL
);

371 i(
	`MPOOL_ON
(
dbv
)) {

372 
dbmp
 = 
dbv
->
mp_hd
;

373 
mp
 = 
dbmp
->
gfo
[0].
imy
;

374 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

375 *
mp_mmsiz
 = 
mp
->
mp_mmsize
;

376 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

378 *
mp_mmsiz
 = 
dbv
->
mp_mmsize
;

380 
	}
}

389 
	$__memp_t_mp_mmsize
(
dbv
, 
mp_mmsize
)

390 
DB_ENV
 *
dbv
;

391 
size_t
 
mp_mmsize
;

393 
DB_MPOOL
 *
dbmp
;

394 
MPOOL
 *
mp
;

396 
	`ENV_NOT_CONFIGURED
(
dbv
,

397 
dbv
->
mp_hd
, "DB_ENV->g_mp_max_mmsize", 
DB_INIT_MPOOL
);

399 i(
	`MPOOL_ON
(
dbv
)) {

400 
dbmp
 = 
dbv
->
mp_hd
;

401 
mp
 = 
dbmp
->
gfo
[0].
imy
;

402 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

403 
mp
->
mp_mmsize
 = mp_mmapsize;

404 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

406 
dbv
->
mp_mmsize
 = mp_mmapsize;

408 
	}
}

421 
	$__memp_me
(
dbv
, 
feid
, 
wme
, 
fud
, 
fuw
, 
mem
)

422 
DB_ENV
 *
dbv
;

423 
u_t8_t
 *
feid
;

424 cڡ *
wme
, *
fud
, *
fuw
;

425 
mem
;

427 
DB_MPOOL
 *
dbmp
;

428 
DB_MPOOL_HASH
 *
hp
, *
nhp
;

429 
MPOOL
 *
mp
;

430 
MPOOLFILE
 *
m
;

431 
roff_t
 
wme_off
;

432 
u_t32_t
 
buck
;

433 
locked
, 
t
;

434 
size_t
 
ƒ
;

435 *
p
;

437 #unde
_is_move


438 
	#_is_move
 (
wme
 =
NULL
)

	)

440 
	`COMPQUIET
(
buck
, 0);

441 
	`COMPQUIET
(
hp
, 
NULL
);

442 
	`COMPQUIET
(
wme_off
, 0);

443 
	`COMPQUIET
(
ƒ
, 0);

445 
dbmp
 = 
NULL
;

446 
m
 = 
NULL
;

447 
nhp
 = 
NULL
;

448 
p
 = 
NULL
;

449 
locked
 = 
t
 = 0;

451 i(!
	`MPOOL_ON
(
dbv
))

452 
fs
;

454 
dbmp
 = 
dbv
->
mp_hd
;

455 
mp
 = 
dbmp
->
gfo
[0].
imy
;

456 
hp
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->
ab
);

458 i(!
_is_move
) {

459 
ƒ
 = 
	`
(
wme
);

460 i((
t
 = 
	`__memp_loc
(
dbmp
, dbmp->
gfo
,

461 
NULL
, 
ƒ
 + 1, &
wme_off
, &
p
)) != 0)

462  (
t
);

463 
	`memy
(
p
, 
wme
, 
ƒ
 + 1);

478 i(
mem
) {

479 
	`DB_ASSERT
(
dbv
, 
fud
 !
NULL
);

480 
hp
 +
	`FNBUCKET
(
fud
, 
	`
(fullold));

481 i(!
_is_move
) {

482 
buck
 = 
	`FNBUCKET
(
wme
, 
ƒ
);

483 
nhp
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->
ab
);

484 
nhp
 +
buck
;

487 
hp
 +
	`FNBUCKET
(
feid
, 
DB_FILE_ID_LEN
);

489 i(
nhp
 !
NULL
 &&h< 
hp
)

490 
	`MUTEX_LOCK
(
dbv
, 
nhp
->
mtx_hash
);

491 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

492 i(
nhp
 !
NULL
 &&h> 
hp
)

493 
	`MUTEX_LOCK
(
dbv
, 
nhp
->
mtx_hash
);

494 
locked
 = 1;

496 i(!
_is_move
 && 
mem
) {

497 
	`SH_TAILQ_FOREACH
(
m
, &
nhp
->
hash_buck
, 
q
, 
__mpofe
)

498 i(!
m
->
ddfe
 &&

499 
m
->
no_backg_fe
 && 
	`rcmp
(
wme
,

500 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
th_off
)) == 0)

502 i(
m
 !
NULL
) {

503 
t
 = 
EEXIST
;

504 
r
;

512 
	`SH_TAILQ_FOREACH
(
m
, &
hp
->
hash_buck
, 
q
, 
__mpofe
) {

514 i(
m
->
ddfe
 || 
	`F_ISSET
(m, 
MP_TEMP
))

518 i(
	`memcmp
(
feid
, 
	`R_ADDR
(

519 
dbmp
->
gfo
, 
m
->
feid_off
), 
DB_FILE_ID_LEN
) != 0)

525 i(
m
 =
NULL
) {

526 i(
mem
) {

527 
t
 = 
ENOENT
;

528 
r
;

530 
fs
;

533 i(
_is_move
) {

534 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

540 i(
m
->
no_backg_fe
)

541 
m
->
mpf_t
--;

542 
m
->
ddfe
 = 1;

543 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

550 
p
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
th_off
);

551 
m
->
th_off
 = 
wme_off
;

553 i(
mem
 && 
hp
 !
nhp
) {

554 
	`DB_ASSERT
(
dbv
, 
nhp
 !
NULL
);

555 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
m
, 
q
, 
__mpofe
);

556 
m
->
buck
 = bucket;

557 
	`SH_TAILQ_INSERT_TAIL
(&
nhp
->
hash_buck
, 
m
, 
q
);

561 
fs
:

565 i(
m
 =
NULL
 || !m->
no_backg_fe
) {

566 i(
_is_move
) {

572 i((
t
 = 
	`__os_uƚk
(
dbv
, 
fud
)=
ENOENT
)

573 
t
 = 0;

579 
	`DB_ASSERT
(
dbv
, 
fuw
 !
NULL
);

580 i(
fuw
 =
NULL
) {

581 
t
 = 
EINVAL
;

582 
r
;

584 
t
 = 
	`__os_me
(
dbv
, 
fud
, 
fuw
, 1);

589 
r
: i(
p
 !
NULL
)

590 
	`__memp_
(&
dbmp
->
gfo
[0], 
NULL
, 
p
);

593 i(
locked
 == 1) {

594 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

595 i(
nhp
 !
NULL
 &&h!
hp
)

596 
	`MUTEX_UNLOCK
(
dbv
, 
nhp
->
mtx_hash
);

598  (
t
);

599 
	}
}

601 #ifde
HAVE_FTRUNCATE


609 
	$__memp_run
(
dbm
, 
pgno
, 
ags
)

610 
DB_MPOOLFILE
 *
dbm
;

611 
db_pgno_t
 
pgno
;

612 
u_t32_t
 
ags
;

614 
DB_ENV
 *
dbv
;

615 
MPOOLFILE
 *
m
;

616 *
g
;

617 
db_pgno_t
 
ϡ_pgno
, 
pg
;

618 
t
;

620 
dbv
 = 
dbm
->dbenv;

621 
m
 = 
dbm
->mfp;

623 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

624 
ϡ_pgno
 = 
m
->last_pgno;

625 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

627 i(
pgno
 > 
ϡ_pgno
) {

628 i(
	`LF_ISSET
(
MP_TRUNC_RECOVER
))

630 
	`__db_rx
(
dbv
, "Truncate beyondhend of file");

631  (
EINVAL
);

634 
pg
 = 
pgno
;

636 i((
t
 =

637 
	`__memp_fg
(
dbm
, &
pg
, 
NULL
, 
DB_MPOOL_FREE
, &
g
)) != 0)

638  (
t
);

639 } 
pg
++ < 
ϡ_pgno
);

648 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

649 i(!
	`F_ISSET
(
m
, 
MP_TEMP
) &&

650 !
m
->
no_backg_fe
 && 
pgno
 <m->
ϡ_ushed_pgno
)

651 
t
 = 
	`__os_un
(
dbv
,

652 
dbm
->
fhp
, 
pgno
, 
m
->

.
_gesize
);

659 i(
t
 == 0) {

660 
m
->
ϡ_pgno
 = 
pgno
 - 1;

661 i(
m
->
ϡ_ushed_pgno
 > m->
ϡ_pgno
)

662 
m
->
ϡ_ushed_pgno
 = m->
ϡ_pgno
;

664 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

666  (
t
);

667 
	}
}

681 
	$__memp_loc_li
(
dbm
, 
ms
, 
lip
)

682 
DB_MPOOLFILE
 *
dbm
;

683 
u_t32_t
 
ms
;

684 
db_pgno_t
 **
lip
;

686 
DB_ENV
 *
dbv
;

687 
DB_MPOOL
 *
dbmp
;

688 
MPOOLFILE
 *
m
;

689 *

;

690 
t
;

692 
dbv
 = 
dbm
->dbenv;

693 
dbmp
 = 
dbv
->
mp_hd
;

694 
m
 = 
dbm
->mfp;

696 *
lip
 = 
NULL
;

702 
m
->
_f
++;

703 i(
m
->
_size
 != 0)

704  (
EBUSY
);

707 
m
->
_t
 = 
ms
;

708 i(
ms
 == 0)

709 
ms
 = 50;

711 i((
t
 = 
	`__memp_loc
(
dbmp
, dbmp->
gfo
,

712 
NULL
, 
ms
 * (
db_pgno_t
), &
m
->
_li
, &

)) != 0)

713  (
t
);

715 
m
->
_size
 = 
ms
 * (
db_pgno_t
);

716 *
lip
 = 

;

718 
	}
}

726 
	$__memp__li
(
dbm
)

727 
DB_MPOOLFILE
 *
dbm
;

729 
DB_ENV
 *
dbv
;

730 
DB_MPOOL
 *
dbmp
;

731 
MPOOLFILE
 *
m
;

733 
dbv
 = 
dbm
->dbenv;

734 
dbmp
 = 
dbv
->
mp_hd
;

735 
m
 = 
dbm
->mfp;

737 
	`DB_ASSERT
(
dbv
, 
m
->
_f
 > 0);

738 i(--
m
->
_f
 > 0)

741 
	`DB_ASSERT
(
dbv
, 
m
->
_size
 != 0);

743 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

744 
	`__memp_
(
dbmp
->
gfo
, 
NULL
, 
	`R_ADDR
(dbmp->gfo, 
m
->
_li
));

745 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

747 
m
->
_t
 = 0;

748 
m
->
_li
 = 0;

749 
m
->
_size
 = 0;

751 
	}
}

760 
	$__memp_g_li
(
dbm
, 
mp
, 
lip
)

761 
DB_MPOOLFILE
 *
dbm
;

762 
u_t32_t
 *
mp
;

763 
db_pgno_t
 **
lip
;

765 
MPOOLFILE
 *
m
;

766 
DB_ENV
 *
dbv
;

767 
DB_MPOOL
 *
dbmp
;

769 
dbv
 = 
dbm
->dbenv;

770 
dbmp
 = 
dbv
->
mp_hd
;

771 
m
 = 
dbm
->mfp;

773 i(
m
->
_size
 == 0) {

774 *
mp
 = 0;

775 *
lip
 = 
NULL
;

777 *
mp
 = 
m
->
_t
;

778 *
lip
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
_li
);

782 
	}
}

791 
	$__memp_exnd_li
(
dbm
, 
cou
, 
lip
)

792 
DB_MPOOLFILE
 *
dbm
;

793 
u_t32_t
 
cou
;

794 
db_pgno_t
 **
lip
;

796 
DB_ENV
 *
dbv
;

797 
DB_MPOOL
 *
dbmp
;

798 
MPOOLFILE
 *
m
;

799 
t
;

800 *

;

802 
dbv
 = 
dbm
->dbenv;

803 
dbmp
 = 
dbv
->
mp_hd
;

804 
m
 = 
dbm
->mfp;

806 i(
m
->
_size
 == 0)

807  (
EINVAL
);

809 i(
cou
 * (
db_pgno_t
> 
m
->
_size
) {

810 
m
->
_size
 =

811 (
size_t
)
	`DB_ALIGN
(
cou
 * (
db_pgno_t
), 512);

812 *
lip
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
_li
);

813 i((
t
 = 
	`__memp_loc
(
dbmp
, dbmp->
gfo
,

814 
NULL
, 
m
->
_size
, &m->
_li
, &

)) != 0)

815  (
t
);

817 
	`memy
(

, *
lip
, 
m
->
_t
 * (
db_pgno_t
));

819 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

820 
	`__memp_
(
dbmp
->
gfo
, 
NULL
, *
lip
);

821 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

824 
m
->
_t
 = 
cou
;

825 *
lip
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
_li
);

828 
	}
}

	@../mp/mp_mvcc.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/mp.h
"

14 
	~"dbc/txn.h
"

16 
__pgno_cmp
 
__P
((const *, const *));

24 
u_t32_t


25 
	$__memp_bh_iܙy
(
bhp
)

26 
BH
 *
bhp
;

28 
u_t32_t
 
iܙy
;

30 
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
))

31 
bhp
 = 
	`SH_CHAIN_NEXT
(bhp, 
vc
, 
__bh
);

33 
iܙy
 = 
bhp
->priority;

35 (
bhp
 = 
	`SH_CHAIN_PREV
(bhp, 
vc
, 
__bh
)!
NULL
)

36 i(
bhp
->
iܙy
 <riority)

37 
iܙy
 = 
bhp
->priority;

39  (
iܙy
);

40 
	}
}

49 
	$__memp_buck_d
(
dbv
, 
hp
, 
bhp
)

50 
DB_ENV
 *
dbv
;

51 
DB_MPOOL_HASH
 *
hp
;

52 
BH
 *
bhp
;

54 
BH
 *
f_bhp
, *
ϡ_bhp
, *
xt
;

55 
u_t32_t
 
iܙy
;

57 
	`DB_ASSERT
(
dbv
, 
bhp
 !
NULL
);

58 
	`COMPQUIET
(
dbv
, 
NULL
);

65 i((
f_bhp
 = 
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
)) ==

66 (
ϡ_bhp
 = 
	`SH_TAILQ_LAST
(&
hp
->
hash_buck
, 
hq
, 
__bh
)))

67 
de
;

69 
	`SH_CHAIN_HASNEXT
(
bhp
, 
vc
))

70 
bhp
 = 
	`SH_CHAIN_NEXTP
(bhp, 
vc
, 
__bh
);

72 
iܙy
 = 
	`BH_PRIORITY
(
bhp
);

75 i(
bhp
 !
f_bhp
 && 
iܙy
 <
	`BH_PRIORITY
(first_bhp)) {

76 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
bhp
, 
hq
, 
__bh
);

77 
	`SH_TAILQ_INSERT_HEAD
(&
hp
->
hash_buck
, 
bhp
, 
hq
, 
__bh
);

78 } i(
bhp
 !
ϡ_bhp
 && 
iܙy
 >
	`BH_PRIORITY
(last_bhp)) {

79 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
bhp
, 
hq
, 
__bh
);

80 
	`SH_TAILQ_INSERT_TAIL
(&
hp
->
hash_buck
, 
bhp
, 
hq
);

82 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
bhp
, 
hq
, 
__bh
);

83 
xt
 = 
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
);

84 
xt
 !
NULL
 && 
iܙy
 > 
	`BH_PRIORITY
(next);

85 
xt
 = 
	`SH_TAILQ_NEXT
ext, 
hq
, 
__bh
))

87 i(
xt
 =
NULL
)

88 
	`SH_TAILQ_INSERT_TAIL
(&
hp
->
hash_buck
, 
bhp
, 
hq
);

90 
	`SH_TAILQ_INSERT_BEFORE
(&
hp
->
hash_buck
,

91 
xt
, 
bhp
, 
hq
, 
__bh
);

94 
de
:

98 i((
bhp
 = 
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
)!
NULL
)

99 
hp
->
hash_iܙy
 = 
	`BH_PRIORITY
(
bhp
);

100 
	}
}

109 
	$__memp_bh_xn
(
dbmp
, 
m
, 
bhp
, 
vtd
)

110 
DB_MPOOL
 *
dbmp
;

111 
MPOOLFILE
 *
m
;

112 
BH
 *
bhp
;

113 *
vtd
;

115 
DB_ENV
 *
dbv
;

116 
TXN_DETAIL
 *
td
;

118 
dbv
 = 
dbmp
->dbenv;

119 
td
 = (
TXN_DETAIL
 *)
vtd
;

121 i(
td
 =
NULL
) {

122 
	`__db_rx
(
dbv
,

124 
	`__memp_s
(
dbmp
, 
m
));

125  (
EINVAL
);

128 i(
bhp
->
td_off
 !
INVALID_ROFF
) {

129 
	`DB_ASSERT
(
dbv
, 
	`BH_OWNER
(dbv, 
bhp
=
td
);

133 
bhp
->
td_off
 = 
	`R_OFFSET
(&
dbv
->
tx_hd
->
gfo
, 
td
);

134  (
	`__txn_add_bufr
(
dbv
, 
td
));

135 
	}
}

145 
	$__memp_sk_cudj
(
dbc
, 
pgno
)

146 
DBC
 * 
dbc
;

147 
db_pgno_t
 
pgno
;

149 
BH
 *
bhp
;

150 
DB_ENV
 *
dbv
;

151 
DB_MPOOL
 *
dbmp
;

152 
DB_MPOOL_HASH
 *
hp
;

153 
DB_MPOOLFILE
 *
dbm
;

154 
DB_TXN
 *
txn
;

155 
MPOOLFILE
 *
m
;

156 
REGINFO
 *
f
;

157 
roff_t
 
mf_offt
;

158 
t
, 
sk
;

160 
dbv
 = 
dbc
->
dbp
->dbenv;

161 
dbmp
 = 
dbv
->
mp_hd
;

162 
dbm
 = 
dbc
->
dbp
->
mpf
;

163 
m
 = 
dbm
->mfp;

164 
mf_offt
 = 
	`R_OFFSET
(
dbmp
->
gfo
, 
m
);

165 
sk
 = 0;

167 
txn
 = 
dbc
->txn;xn->

 !
NULL
;xn =xn->parent)

175 
	`MP_GET_BUCKET
(
dbm
, 
pgno
, &
f
, 
hp
, 
t
);

176 i(
t
 != 0) {

178 ()
	`__db_nic
(
dbv
, 
t
);

182 
	`SH_TAILQ_FOREACH
(
bhp
, &
hp
->
hash_buck
, 
hq
, 
__bh
) {

183 i(
bhp
->
pgno
 !pgn|| bhp->
mf_offt
 != mf_offset)

186 i(!
	`BH_OWNED_BY
(
dbv
, 
bhp
, 
txn
))

187 
sk
 = 1;

190 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

192  (
sk
);

193 
	}
}

195 
	#DB_FREEZER_MAGIC
 0x06102002

	)

208 
	$__memp_bh_ze
(
dbmp
, 
f
, 
hp
, 
bhp
, 
ed_ozp
)

209 
DB_MPOOL
 *
dbmp
;

210 
REGINFO
 *
f
;

211 
DB_MPOOL_HASH
 *
hp
;

212 
BH
 *
bhp
;

213 *
ed_ozp
;

215 
BH
 *
oz_bhp
;

216 
BH_FROZEN_ALLOC
 *
oz_loc
;

217 
DB_ENV
 *
dbv
;

218 
DB_FH
 *
fhp
;

219 
MPOOL
 *
c_mp
;

220 
MPOOLFILE
 *
bh_m
;

221 
db_pgno_t
 
maxpgno
, 
wpgno
, 
xt
;

222 
size_t
 
nio
;

223 
t
, 
t_t
;

224 
u_t32_t
 
magic
, 
nbuck
, 
nche
, 
gesize
;

225 
fame
[100], *
_me
;

227 
dbv
 = 
dbmp
->dbenv;

228 
c_mp
 = 
f
->
imy
;

229 
t
 = 0;

231 
bh_m
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
bhp
->
mf_offt
);

232 
gesize
 = 
bh_m
->

.
_gesize
;

233 
_me
 = 
NULL
;

234 
fhp
 = 
NULL
;

236 
	`DB_ASSERT
(
dbv
, 
bhp
->
f
 == 0);

237 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
bhp
, 
BH_DIRTY
 | 
BH_FROZEN
 | 
BH_LOCKED
));

239 ++
bhp
->
f
;

240 
	`F_SET
(
bhp
, 
BH_LOCKED
);

241 
	`MVCC_MPROTECT
(
bhp
->
buf
, 
gesize
, 
PROT_READ
 | 
PROT_WRITE
);

243 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

245 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

246 
oz_bhp
 = 
	`SH_TAILQ_FIRST
(&
c_mp
->
_oz
, 
__bh
);

247 i(
oz_bhp
 !
NULL
) {

248 
	`SH_TAILQ_REMOVE
(&
c_mp
->
_oz
, 
oz_bhp
, 
hq
, 
__bh
);

249 *
ed_ozp
 = 
	`SH_TAILQ_EMPTY
(&
c_mp
->
_oz
);

251 *
ed_ozp
 = 1;

254 i(
	`__v_loc
(
f
,

255 (
BH_FROZEN_ALLOC
+ (
BH_FROZEN_PAGE
),

256 &
oz_loc
) == 0) {

257 
oz_bhp
 = (
BH
 *)(
oz_loc
 + 1);

258 
	`SH_TAILQ_INSERT_TAIL
(&
c_mp
->
loc_oz
,

259 
oz_loc
, 
lks
);

262 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

263 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

270 i(
oz_bhp
 =
NULL
) {

271 
t
 = 
ENOMEM
;

272 
r
;

280 
nche
 = (
u_t32_t
)(
f
 - 
dbmp
->
gfo
);

281 
nbuck
 = (
u_t32_t
)(
hp
 - (
DB_MPOOL_HASH
 *)
	`R_ADDR
(
f
, 
c_mp
->
hb
));

282 
	`tf
(
fame
, (filename), "__db.freezer.%u.%u.%uK",

283 
nche
, 
nbuck
, 
gesize
 / 1024);

285 i((
t
 = 
	`__db_ame
(
dbv
, 
DB_APP_NONE
, 
fame
,

286 0, 
NULL
, &
_me
)) != 0)

287 
r
;

288 i((
t
 = 
	`__os_ݒ
(
dbv
, 
_me
, 
gesize
,

289 
DB_OSO_CREATE
 | 
DB_OSO_EXCL
, 
dbv
->
db_mode
, &
fhp
)) == 0) {

291 
magic
 = 
DB_FREEZER_MAGIC
;

292 
maxpgno
 = 
wpgno
 = 0;

293 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
magic
, (
u_t32_t
),

294 &
nio
)) < 0 ||io == 0 ||

295 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
wpgno
, (
db_pgno_t
),

296 &
nio
)) < 0 ||io == 0 ||

297 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
maxpgno
, (
db_pgno_t
),

298 &
nio
)) < 0 ||io == 0 ||

299 (
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 0)) != 0)

300 
r
;

301 } i(
t
 =
EEXIST
)

302 
t
 = 
	`__os_ݒ
(

303 
dbv
, 
_me
, 
gesize
, 0, dbv->
db_mode
, &
fhp
);

304 i(
t
 != 0)

305 
r
;

306 i((
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
magic
, (
u_t32_t
),

307 &
nio
)) < 0 ||io == 0 ||

308 (
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
wpgno
, (
db_pgno_t
),

309 &
nio
)) < 0 ||io == 0 ||

310 (
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
maxpgno
, (
db_pgno_t
),

311 &
nio
)) < 0 ||io == 0)

312 
r
;

313 i(
magic
 !
DB_FREEZER_MAGIC
) {

314 
t
 = 
EINVAL
;

315 
r
;

317 i(
wpgno
 == 0) {

318 
wpgno
 = ++
maxpgno
;

319 i((
t
 = 
	`__os_ek
(
dbv
,

320 
fhp
, 0, 0, (
u_t32_t
+ (
db_pgno_t
))) != 0 ||

321 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
maxpgno
, (
db_pgno_t
),

322 &
nio
)) < 0 ||io == 0)

323 
r
;

325 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
wpgno
, 
gesize
, 0)) != 0 ||

326 (
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
xt
, (
db_pgno_t
),

327 &
nio
)) < 0 ||io == 0)

328 
r
;

329 i((
t
 =

330 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, (
u_t32_t
))) != 0 ||

331 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
xt
, (
db_pgno_t
),

332 &
nio
)) < 0 ||io == 0)

333 
r
;

337 i((
t
 = 
	`__os_io
(
dbv
, 
DB_IO_WRITE
, 
fhp
, 
wpgno
, 
gesize
, 0,

338 
gesize
, 
bhp
->
buf
, &
nio
)) != 0 ||io == 0)

339 
r
;

346 #ifde
DIAG_MVCC


347 
	`memy
(
oz_bhp
, 
bhp
, 
	`SSZ
(
BH
, 
ign_off
));

349 
	`memy
(
oz_bhp
, 
bhp
, 
	`SSZA
(
BH
, 
buf
));

351 
oz_bhp
->
f
 = froz_bhp->
f_sync
 = 0;

352 
	`F_SET
(
oz_bhp
, 
BH_FROZEN
);

353 
	`F_CLR
(
oz_bhp
, 
BH_LOCKED
);

354 
oz_bhp
->
iܙy
 = 
UINT32_MAX
;

355 ((
BH_FROZEN_PAGE
 *)
oz_bhp
)->
gno
 = 
wpgno
;

362 i(
oz_bhp
->
td_off
 !
INVALID_ROFF
 &&

363 (
t
 = 
	`__txn_add_bufr
(
dbv
, 
	`BH_OWNER
(dbv, 
oz_bhp
))) != 0) {

364 ()
	`__db_nic
(
dbv
, 
t
);

365 
r
;

374 
	`SH_CHAIN_INSERT_AFTER
(
bhp
, 
oz_bhp
, 
vc
, 
__bh
);

375 i(!
	`SH_CHAIN_HASNEXT
(
oz_bhp
, 
vc
)) {

376 
	`SH_TAILQ_INSERT_BEFORE
(&
hp
->
hash_buck
,

377 
bhp
, 
oz_bhp
, 
hq
, 
__bh
);

378 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
bhp
, 
hq
, 
__bh
);

385 
	`MUTEX_LOCK
(
dbv
, 
bh_m
->
mux
);

386 ++
bh_m
->
block_t
;

387 
	`MUTEX_UNLOCK
(
dbv
, 
bh_m
->
mux
);

389 
	`STAT
(++
hp
->
hash_oz
);

392 
r
: i(
t
 == 0)

393 
t
 = 
EIO
;

394 i(
oz_bhp
 !
NULL
) {

395 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

396 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

397 
	`SH_TAILQ_INSERT_TAIL
(&
c_mp
->
_oz
,

398 
oz_bhp
, 
hq
);

399 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

400 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

403 i(
_me
 !
NULL
)

404 
	`__os_
(
dbv
, 
_me
);

405 i(
fhp
 !
NULL
 &&

406 (
t_t
 = 
	`__os_ohd
(
dbv
, 
fhp
)!0 && 
t
 == 0)

407 
t
 = 
t_t
;

408 i(
t
 !0 && !
ENOMEM
)

409 
	`__db_r
(
dbv
, 
t
, "__memp_bh_freeze");

410 
	`F_CLR
(
bhp
, 
BH_LOCKED
);

411 --
bhp
->
f
;

416 i(
	`F_ISSET
(
hp
, 
IO_WAITER
)) {

417 
	`F_CLR
(
hp
, 
IO_WAITER
);

418 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_io
);

420  (
t
);

421 
	}
}

424 
	$__pgno_cmp
(
a
, 
b
)

425 cڡ *
a
, *
b
;

427 
db_pgno_t
 *

, *
bp
;

429 

 = (
db_pgno_t
 *)
a
;

430 
bp
 = (
db_pgno_t
 *)
b
;

432  ()(*

 - *
bp
);

433 
	}
}

445 
	$__memp_bh_thaw
(
dbmp
, 
f
, 
hp
, 
oz_bhp
, 
loc_bhp
)

446 
DB_MPOOL
 *
dbmp
;

447 
REGINFO
 *
f
;

448 
DB_MPOOL_HASH
 *
hp
;

449 
BH
 *
oz_bhp
, *
loc_bhp
;

451 
BH
 *
xt_bhp
;

452 
DB_ENV
 *
dbv
;

453 
DB_FH
 *
fhp
;

454 #ifde
DIAGNOSTIC


455 
DB_LSN
 
vl
;

457 
MPOOL
 *
c_mp
;

458 
MPOOLFILE
 *
bh_m
;

459 
db_pgno_t
 *
li
, *
gno
, 
pgno
, 
maxpgno
, 
gno
;

460 
size_t
 
nio
;

461 
u_t32_t
 
lisize
, 
magic
, 
nbuck
, 
nche
, 
runc
, 
n
, 
gesize
;

462 
u_t32_t
 
iܙy
;

463 #ifde
HAVE_FTRUNCATE


464 
i
;

466 
ed
, 
d
, 
t
, 
t_t
;

467 
fame
[100], *
_me
;

469 
dbv
 = 
dbmp
->dbenv;

470 
fhp
 = 
NULL
;

471 
c_mp
 = 
f
->
imy
;

472 
bh_m
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
oz_bhp
->
mf_offt
);

473 
li
 = 
NULL
;

474 
gesize
 = 
bh_m
->

.
_gesize
;

475 
t
 = 0;

476 
_me
 = 
NULL
;

478 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
oz_bhp
, 
BH_FROZEN
));

479 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
oz_bhp
, 
BH_LOCKED
));

480 
	`DB_ASSERT
(
dbv
, 
loc_bhp
 !
NULL
 ||

481 
	`BH_OBSOLETE
(
oz_bhp
, 
hp
->
d_ad
, 
vl
));

483 
gno
 = ((
BH_FROZEN_PAGE
 *)
oz_bhp
)->spgno;

485 i(
loc_bhp
 !
NULL
) {

486 #ifde
DIAG_MVCC


487 
	`memy
(
loc_bhp
, 
oz_bhp
, 
	`SSZ
(
BH
, 
ign_off
));

489 
	`memy
(
loc_bhp
, 
oz_bhp
, 
	`SSZA
(
BH
, 
buf
));

491 
loc_bhp
->
f
 = 1;

492 
loc_bhp
->
f_sync
 = 0;

493 
	`F_CLR
(
loc_bhp
, 
BH_FROZEN
);

496 
	`F_SET
(
oz_bhp
, 
BH_LOCKED
);

503 
nche
 = (
u_t32_t
)(
f
 - 
dbmp
->
gfo
);

504 
nbuck
 = (
u_t32_t
)(
hp
 - (
DB_MPOOL_HASH
 *)
	`R_ADDR
(
f
, 
c_mp
->
hb
));

505 
	`tf
(
fame
, (filename), "__db.freezer.%u.%u.%uK",

506 
nche
, 
nbuck
, 
gesize
 / 1024);

508 i((
t
 = 
	`__db_ame
(
dbv
, 
DB_APP_NONE
, 
fame
, 0, 
NULL
,

509 &
_me
)) != 0)

510 
r
;

512 i((
t
 = 
	`__os_ݒ
(

513 
dbv
, 
_me
, 
gesize
, 0, dbv->
db_mode
, &
fhp
)) != 0)

514 
r
;

520 i((
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
magic
, (
u_t32_t
),

521 &
nio
)) < 0 ||io == 0 ||

522 (
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
pgno
, (
db_pgno_t
),

523 &
nio
)) < 0 ||io == 0 ||

524 (
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
maxpgno
, (
db_pgno_t
),

525 &
nio
)) < 0 ||io == 0)

526 
r
;

528 i(
magic
 !
DB_FREEZER_MAGIC
) {

529 
t
 = 
EINVAL
;

530 
r
;

534 i(
loc_bhp
 !
NULL
 &&

535 ((
t
 = 
	`__os_io
(
dbv
, 
DB_IO_READ
, 
fhp
, 
gno
, 
gesize
,

536 0, 
gesize
, 
loc_bhp
->
buf
, &
nio
)) != 0 ||io == 0))

537 
r
;

543 
ed
 = 1;

544 i(
gno
 =
maxpgno
) {

545 
lisize
 = 100;

546 i((
t
 = 
	`__os_mloc
(
dbv
,

547 
lisize
 * (
db_pgno_t
), &
li
)) != 0)

548 
r
;

549 
n
 = 0;

550 
pgno
 != 0) {

551 i(
n
 =
lisize
 - 1) {

552 
lisize
 *= 2;

553 i((
t
 = 
	`__os_loc
(
dbv
,

554 
lisize
 * (
db_pgno_t
),

555 &
li
)) != 0)

556 
r
;

558 
li
[
n
++] = 
pgno
;

559 i((
t
 = 
	`__os_ek
(

560 
dbv
, 
fhp
, 
pgno
, 
gesize
, 0)) != 0 ||

561 (
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
pgno
,

562 (
db_pgno_t
), &
nio
)) < 0 ||io == 0)

563 
r
;

565 
li
[
n
++] = 
gno
;

566 
	`qst
(
li
, 
n
, (
db_pgno_t
), 
__pgno_cmp
);

567 
gno
 = &
li
[
n
 - 1];pgno > freelist;pgno--)

568 i(*(
gno
 - 1) != *ppgno - 1)

570 
runc
 = (
u_t32_t
)(&
li
[
n
] - 
gno
);

571 i(
runc
 =(
u_t32_t
)
maxpgno
) {

572 
ed
 = 0;

573 
t
 = 
	`__os_ohd
(
dbv
, 
fhp
);

574 
fhp
 = 
NULL
;

575 i(
t
 != 0 ||

576 (
t
 = 
	`__os_uƚk
(
dbv
, 
_me
)) != 0)

577 
r
;

579 #ifde
HAVE_FTRUNCATE


581 
maxpgno
 -(
db_pgno_t
)
runc
;

582 i((
t
 = 
	`__os_un
(
dbv
, 
fhp
,

583 
maxpgno
 + 1, 
gesize
)) != 0)

584 
r
;

587 
li
[
n
 - 
runc
] = 0;

588 i((
t
 = 
	`__os_ek
(

589 
dbv
, 
fhp
, 0, 0, (
u_t32_t
))) != 0 ||

590 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
li
[0],

591 (
db_pgno_t
), &
nio
)) < 0 ||io == 0 ||

592 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
maxpgno
,

593 (
db_pgno_t
), &
nio
)) < 0 ||io == 0)

594 
r
;

596 
i
 = 0; i < ()(
n
 - 
runc
); i++)

597 i((
t
 = 
	`__os_ek
(
dbv
,

598 
fhp
, 
li
[
i
], 
gesize
, 0)) != 0 ||

599 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
,

600 &
li
[
i
 + 1], (
db_pgno_t
),

601 &
nio
)) < 0 ||io == 0)

602 
r
;

603 
ed
 = 0;

607 i(
ed
 &&

608 ((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
gno
, 
gesize
, 0)) != 0 ||

609 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
pgno
, (
db_pgno_t
),

610 &
nio
)) < 0 ||io == 0 ||

611 (
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, (
u_t32_t
))) != 0 ||

612 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
gno
, (
db_pgno_t
),

613 &
nio
)) < 0 ||io == 0))

614 
r
;

624 i(
loc_bhp
 !
NULL
) {

625 
loc_bhp
->
iܙy
 = 
c_mp
->
u_cou
;

627 
	`SH_CHAIN_INSERT_AFTER
(
oz_bhp
, 
loc_bhp
, 
vc
, 
__bh
);

628 i(!
	`SH_CHAIN_HASNEXT
(
loc_bhp
, 
vc
)) {

629 
	`SH_TAILQ_INSERT_BEFORE
(&
hp
->
hash_buck
,

630 
oz_bhp
, 
loc_bhp
, 
hq
, 
__bh
);

631 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
oz_bhp
, 
hq
, 
__bh
);

633 
iܙy
 = 
	`BH_PRIORITY
(
loc_bhp
);

634 
d
 = (
iܙy
 =
loc_bhp
->priority ||

635 
iܙy
 =
oz_bhp
->priority);

637 
d
 = 
	`BH_PRIORITY
(
oz_bhp
=oz_bhp->
iܙy
;

638 i((
xt_bhp
 = 
	`SH_CHAIN_NEXT
(
oz_bhp
, 
vc
, 
__bh
)=
NULL
) {

639 i((
xt_bhp
 = 
	`SH_CHAIN_PREV
(
oz_bhp
, 
vc
, 
__bh
)!
NULL
)

640 
	`SH_TAILQ_INSERT_BEFORE
(&
hp
->
hash_buck
, 
oz_bhp
,

641 
xt_bhp
, 
hq
, 
__bh
);

642 
	`SH_TAILQ_REMOVE
(&
hp
->
hash_buck
, 
oz_bhp
, 
hq
, 
__bh
);

644 
	`SH_CHAIN_REMOVE
(
oz_bhp
, 
vc
, 
__bh
);

645 i(
d
) {

646 i(
xt_bhp
 !
NULL
)

647 
	`__memp_buck_d
(
dbv
, 
hp
, 
xt_bhp
);

648 i(!
	`SH_TAILQ_EMPTY
(&
hp
->
hash_buck
))

649 
hp
->
hash_iܙy
 = 
	`BH_PRIORITY
(
	`SH_TAILQ_FIRSTP
(

650 &
hp
->
hash_buck
, 
__bh
));

658 i(--
oz_bhp
->
f
 == 0) {

659 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

661 i(
loc_bhp
 =
NULL
 && 
oz_bhp
->
td_off
 !
INVALID_ROFF
 &&

662 (
t
 = 
	`__txn_move_bufr
(
dbv
,

663 
	`BH_OWNER
(
dbv
, 
oz_bhp
), 
MUTEX_INVALID
)) != 0) {

664 ()
	`__db_nic
(
dbv
, 
t
);

665 
r
;

672 
	`MPOOL_REGION_LOCK
(
dbv
, 
f
);

673 
	`SH_TAILQ_INSERT_TAIL
(&
c_mp
->
_oz
, 
oz_bhp
, 
hq
);

674 
	`MPOOL_REGION_UNLOCK
(
dbv
, 
f
);

675 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

677 
	`F_SET
(
oz_bhp
, 
BH_THAWED
);

678 
	`F_CLR
(
oz_bhp
, 
BH_LOCKED
);

681 #ifde
HAVE_STATISTICS


682 i(
loc_bhp
 !
NULL
)

683 ++
hp
->
hash_thawed
;

685 ++
hp
->
hash_oz_d
;

689 
r
: i(
t
 == 0)

690 
t
 = 
EIO
;

692 i(
_me
 !
NULL
)

693 
	`__os_
(
dbv
, 
_me
);

694 i(
li
 !
NULL
)

695 
	`__os_
(
dbv
, 
li
);

696 i(
fhp
 !
NULL
 &&

697 (
t_t
 = 
	`__os_ohd
(
dbv
, 
fhp
)!0 && 
t
 == 0)

698 
t
 = 
t_t
;

699 i(
t
 != 0)

700 
	`__db_r
(
dbv
, 
t
, "__memp_bh_thaw");

705 i(
	`F_ISSET
(
hp
, 
IO_WAITER
)) {

706 
	`F_CLR
(
hp
, 
IO_WAITER
);

707 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_io
);

710  (
t
);

711 
	}
}

	@../mp/mp_region.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/mp.h
"

14 
__memp__cfig
 
__P
((
DB_ENV
 *, 
MPOOL
 *));

15 
__memp_gi_size
 
__P
((
DB_ENV
 *, 
roff_t
 *, 
u_t32_t
 *));

24 
	$__memp_ݒ
(
dbv
, 
_ok
)

25 
DB_ENV
 *
dbv
;

26 
_ok
;

28 
DB_MPOOL
 *
dbmp
;

29 
MPOOL
 *
mp
;

30 
REGINFO
 
gfo
;

31 
roff_t
 
g_size
;

32 
u_t
 
i
, 
max_eg
;

33 
u_t32_t
 
hb_bucks
, *
gids
;

34 
t
;

37 
	`__memp_gi_size
(
dbv
, &
g_size
, &
hb_bucks
);

40 i((
t
 = 
	`__os_oc
(
dbv
, 1, (*
dbmp
), &dbmp)) != 0)

41  (
t
);

42 
	`LIST_INIT
(&
dbmp
->
dbgq
);

43 
	`TAILQ_INIT
(&
dbmp
->
dbmfq
);

44 
dbmp
->
dbv
 = dbenv;

47 
	`memt
(&
gfo
, 0, (
REGINFO
));

48 
gfo
.
dbv
 = dbenv;

49 
gfo
.
ty
 = 
REGION_TYPE_MPOOL
;

50 
gfo
.
id
 = 
INVALID_REGION_ID
;

51 
gfo
.
ags
 = 
REGION_JOIN_OK
;

52 i(
_ok
)

53 
	`F_SET
(&
gfo
, 
REGION_CREATE_OK
);

54 i((
t
 = 
	`__v_gi_ch
(
dbv
, &
gfo
, 
g_size
)) != 0)

55 
r
;

61 i(
	`F_ISSET
(&
gfo
, 
REGION_CREATE
)) {

67 
max_eg
 = 
	`__memp_max_gis
(
dbv
);

68 i((
t
 = 
	`__os_oc
(
dbv
,

69 
max_eg
, (
REGINFO
), &
dbmp
->
gfo
)) != 0)

70 
r
;

72 
dbmp
->
gfo
[0] =eginfo;

73 
i
 = 1; i < 
max_eg
; ++i)

74 
dbmp
->
gfo
[
i
].
id
 = 
INVALID_REGION_ID
;

77 i((
t
 = 
	`__memp_
(
dbv
, 
dbmp
,

78 0, 
hb_bucks
, 
max_eg
)) != 0)

79 
r
;

85 
mp
 = 
	`R_ADDR
(
dbmp
->
gfo
, dbmp->gfo[0].

->
imy
);

86 
gids
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->regids);

87 
gids
[0] = 
dbmp
->
gfo
[0].
id
;

88 
i
 = 1; i < 
dbv
->
mp_nche
; ++i) {

89 
dbmp
->
gfo
[
i
].
dbv
 = dbenv;

90 
dbmp
->
gfo
[
i
].
ty
 = 
REGION_TYPE_MPOOL
;

91 
dbmp
->
gfo
[
i
].
id
 = 
INVALID_REGION_ID
;

92 
dbmp
->
gfo
[
i
].
ags
 = 
REGION_CREATE_OK
;

93 i((
t
 = 
	`__v_gi_ch
(

94 
dbv
, &
dbmp
->
gfo
[
i
], 
g_size
)) != 0)

95 
r
;

96 i((
t
 = 
	`__memp_
(
dbv
, 
dbmp
,

97 
i
, 
hb_bucks
, 
max_eg
)) != 0)

98 
r
;

100 
gids
[
i
] = 
dbmp
->
gfo
[i].
id
;

108 
mp
 = 
	`R_ADDR
(&
gfo
,egfo.

->
imy
);

109 
dbv
->
mp_nche
 = 
mp
->
eg
;

110 i((
t
 = 
	`__os_oc
(
dbv
,

111 
mp
->
max_eg
, (
REGINFO
), &
dbmp
->
gfo
)) != 0)

112 
r
;

114 
i
 = 0; i < 
dbv
->
mp_nche
; ++i)

115 
dbmp
->
gfo
[
i
].
id
 = 
INVALID_REGION_ID
;

116 
dbmp
->
gfo
[0] =eginfo;

119 
gids
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->regids);

120 
i
 = 1; i < 
dbv
->
mp_nche
; ++i) {

121 
dbmp
->
gfo
[
i
].
dbv
 = dbenv;

122 
dbmp
->
gfo
[
i
].
ty
 = 
REGION_TYPE_MPOOL
;

123 
dbmp
->
gfo
[
i
].
id
 = 
gids
[i];

124 
dbmp
->
gfo
[
i
].
ags
 = 
REGION_JOIN_OK
;

125 i((
t
 = 
	`__v_gi_ch
(

126 
dbv
, &
dbmp
->
gfo
[
i
], 0)) != 0)

127 
r
;

132 
i
 = 0; i < 
dbv
->
mp_nche
; ++i)

133 
dbmp
->
gfo
[
i
].
imy
 =

134 
	`R_ADDR
(&
dbmp
->
gfo
[
i
], dbmp->gfo[i].

->
imy
);

137 i((
t
 = 
	`__mux_loc
(
dbv
,

138 
MTX_MPOOL_HANDLE
, 
DB_MUTEX_PROCESS_ONLY
, &
dbmp
->
mux
)) != 0)

139 
r
;

141 
dbv
->
mp_hd
 = 
dbmp
;

144 i((
t
 = 
	`__memp__cfig
(
dbv
, 
mp
)) != 0)

145  (
t
);

149 
r
: 
dbv
->
mp_hd
 = 
NULL
;

150 i(
dbmp
->
gfo
 !
NULL
 && dbmp->gfo[0].
addr
 != NULL) {

151 
i
 = 0; i < 
dbv
->
mp_nche
; ++i)

152 i(
dbmp
->
gfo
[
i
].
id
 !
INVALID_REGION_ID
)

153 ()
	`__v_gi_dach
(

154 
dbv
, &
dbmp
->
gfo
[
i
], 0);

155 
	`__os_
(
dbv
, 
dbmp
->
gfo
);

158 ()
	`__mux_
(
dbv
, &
dbmp
->
mux
);

159 
	`__os_
(
dbv
, 
dbmp
);

160  (
t
);

161 
	}
}

171 
	$__memp_
(
dbv
, 
dbmp
, 
gfo_off
, 
hb_bucks
, 
max_eg
)

172 
DB_ENV
 *
dbv
;

173 
DB_MPOOL
 *
dbmp
;

174 
u_t
 
gfo_off
, 
max_eg
;

175 
u_t32_t
 
hb_bucks
;

177 
BH_FROZEN_ALLOC
 *
oz
;

178 
BH
 *
oz_bhp
;

179 
DB_MPOOL_HASH
 *
hb
, *
hp
;

180 
MPOOL
 *
mp
, *
ma_mp
;

181 
REGINFO
 *
f
;

182 
db_mux_t
 
mtx_ba
, 
mtx_disrd
, 
mtx_ev
;

183 
u_t32_t
 
i
;

184 
t
;

185 *
p
;

187 
f
 = &
dbmp
->
gfo
[
gfo_off
];

188 i((
t
 = 
	`__v_loc
(
f
, (
MPOOL
), &f->
imy
)) != 0)

189 
mem_r
;

190 
f
->

->
imy
 = 
	`R_OFFSET
(infop, infop->primary);

191 
mp
 = 
f
->
imy
;

192 
	`memt
(
mp
, 0, (*mp));

194 i((
t
 =

195 
	`__mux_loc
(
dbv
, 
MTX_MPOOL_REGION
, 0, &
mp
->
mtx_gi
)) != 0)

196  (
t
);

198 i(
gfo_off
 == 0) {

199 
	`ZERO_LSN
(
mp
->
l
);

201 
mp
->
eg
 = 
dbv
->
mp_nche
;

202 
mp
->
max_eg
 = max_nreg;

203 i((
t
 = 
	`__v_loc
(&
dbmp
->
gfo
[0],

204 
max_eg
 * (
u_t32_t
), &
p
)) != 0)

205 
mem_r
;

206 
mp
->
gids
 = 
	`R_OFFSET
(
dbmp
->
gfo
, 
p
);

207 
mp
->
nbucks
 = 
dbv
->
mp_nche
 * 
hb_bucks
;

210 i((
t
 = 
	`__v_loc
(
f
,

211 
MPOOL_FILE_BUCKETS
 * (
DB_MPOOL_HASH
), &
hb
)) != 0)

212 
mem_r
;

213 
mp
->
ab
 = 
	`R_OFFSET
(
f
, 
hb
);

214 
i
 = 0; i < 
MPOOL_FILE_BUCKETS
; i++) {

215 i((
t
 = 
	`__mux_loc
(
dbv
,

216 
MTX_MPOOL_FILE_BUCKET
, 0, &
hb
[
i
].
mtx_hash
)) != 0)

217  (
t
);

218 
	`SH_TAILQ_INIT
(&
hb
[
i
].
hash_buck
);

219 
hb
[
i
].
hash_ge_dty
 = hb[i].
hash_iܙy
 = 0;

227 
mtx_ba
 = 
mtx_ev
 = 
MUTEX_INVALID
;

228 
i
 = 0; i < 
mp
->
max_eg
 * 
hb_bucks
; i++) {

229 i((
t
 = 
	`__mux_loc
(
dbv
, 
MTX_MPOOL_HASH_BUCKET
,

230 0, &
mtx_disrd
)) != 0)

231  (
t
);

232 i(
i
 == 0) {

233 
mtx_ba
 = 
mtx_disrd
;

234 
mtx_ev
 = 
mtx_disrd
 - 1;

236 
	`DB_ASSERT
(
dbv
, 
mtx_disrd
 =
mtx_ev
 + 1 ||

237 
mtx_ba
 =
MUTEX_INVALID
);

238 
mtx_ev
 = 
mtx_disrd
;

239 i((
t
 = 
	`__mux_loc
(
dbv
, 
MTX_MPOOL_IO
,

240 
DB_MUTEX_SELF_BLOCK
, &
mtx_disrd
)) != 0)

241  (
t
);

242 
	`DB_ASSERT
(
dbv
, 
mtx_disrd
 =
mtx_ev
 + 1 ||

243 
mtx_ba
 =
MUTEX_INVALID
);

244 
mtx_ev
 = 
mtx_disrd
;

247 
ma_mp
 = 
dbmp
->
gfo
[0].
imy
;

248 
hb
 = 
	`R_ADDR
(&
dbmp
->
gfo
[0], 
ma_mp
->htab);

249 
mtx_ba
 = 
hb
[0].
mtx_hash
;

252 i(
mtx_ba
 !
MUTEX_INVALID
)

253 
mtx_ba
 +
gfo_off
 * 
hb_bucks
;

256 i((
t
 = 
	`__v_loc
(
f
,

257 
hb_bucks
 * (
DB_MPOOL_HASH
), &
hb
)) != 0)

258 
mem_r
;

259 
mp
->
hb
 = 
	`R_OFFSET
(
f
, htab);

260 
i
 = 0; i < 
hb_bucks
; i++) {

261 
hp
 = &
hb
[
i
];

262 
hp
->
mtx_hash
 = (
mtx_ba
 =
MUTEX_INVALID
) ? MUTEX_INVALID :

263 
mtx_ba
 + 
i
 * 2;

264 
hp
->
mtx_io
 = (
mtx_ba
 =
MUTEX_INVALID
) ? MUTEX_INVALID :

265 
mtx_ba
 + 
i
 * 2 + 1;

266 
	`SH_TAILQ_INIT
(&
hp
->
hash_buck
);

267 
hp
->
hash_ge_dty
 = hp->
hash_iܙy
 = 0;

268 #ifde
HAVE_STATISTICS


269 
hp
->
hash_io_wa
 = 0;

270 
hp
->
hash_oz
 = hp->
hash_thawed
 = hp->
hash_oz_d
 = 0;

272 
hp
->
ags
 = 0;

273 
	`ZERO_LSN
(
hp
->
d_ad
);

275 
mp
->
hb_bucks
 = htab_buckets;

276 #ifde
HAVE_STATISTICS


277 
mp
->

.
_hash_bucks
 = 
hb_bucks
;

280 
	`SH_TAILQ_INIT
(&
mp
->
_oz
);

281 
	`SH_TAILQ_INIT
(&
mp
->
loc_oz
);

288 i((
t
 = 
	`__v_loc
(
f
,

289 (
BH_FROZEN_ALLOC
+ (
BH_FROZEN_PAGE
), &
oz
)) != 0)

290 
mem_r
;

291 
oz_bhp
 = (
BH
 *)(
oz
 + 1);

292 
	`SH_TAILQ_INSERT_TAIL
(&
mp
->
loc_oz
, 
oz
, 
lks
);

293 
	`SH_TAILQ_INSERT_TAIL
(&
mp
->
_oz
, 
oz_bhp
, 
hq
);

299 
mp
->

.
_gbys
 = 
dbv
->
mp_gbys
;

300 
mp
->

.
_bys
 = 
dbv
->
mp_bys
;

303 
mem_r
:
	`__db_rx
(
dbv
, "Unableollocate memory for mpoolegion");

304  (
t
);

305 
	}
}

310 
u_t32_t


311 
	$__memp_max_gis
(
dbv
)

312 
DB_ENV
 *
dbv
;

314 
roff_t
 
g_size
, 
max_size
;

315 
u_t32_t
 
max_eg
;

317 
	`__memp_gi_size
(
dbv
, &
g_size
, 
NULL
);

318 
max_size
 = (
roff_t
)
dbv
->
mp_max_gbys
 * 
GIGABYTE
 +

319 
dbv
->
mp_max_bys
;

320 
max_eg
 = (
max_size
 + 
g_size
 / 2) /eg_size;

321 i(
max_eg
 <
dbv
->
mp_nche
)

322 
max_eg
 = 
dbv
->
mp_nche
;

323  (
max_eg
);

324 
	}
}

331 
	$__memp_gi_size
(
dbv
, 
g_siz
, 
hb_buck
)

332 
DB_ENV
 *
dbv
;

333 
roff_t
 *
g_siz
;

334 
u_t32_t
 *
hb_buck
;

336 
roff_t
 
g_size
, 
che_size
;

342 
che_size
 = (
roff_t
)
dbv
->
mp_gbys
 * 
GIGABYTE
 + dbv->
mp_bys
;

343 
g_size
 = 
che_size
 / 
dbv
->
mp_nche
;

344 i(
g_siz
 !
NULL
)

345 *
g_siz
 = 
g_size
;

360 i(
hb_buck
 !
NULL
)

361 *
hb_buck
 =

362 
	`__db_bsize
((
u_t32_t
)(
g_size
 / (10 * 1024)));

363 
	}
}

371 
u_t32_t


372 
	$__memp_gi_mux_cou
(
dbv
)

373 
DB_ENV
 *
dbv
;

375 
u_t32_t
 
hb_bucks
;

377 
	`__memp_gi_size
(
dbv
, 
NULL
, &
hb_bucks
);

385  (
dbv
->
mp_nche
 * 
hb_bucks
 * 2 + 50 + 
MPOOL_FILE_BUCKETS
);

386 
	}
}

393 
	$__memp__cfig
(
dbv
, 
mp
)

394 
DB_ENV
 *
dbv
;

395 
MPOOL
 *
mp
;

397 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

399 i(
dbv
->
mp_mmsize
 != 0)

400 
mp
->
mp_mmsize
 = 
dbv
->mp_mmapsize;

401 i(
dbv
->
mp_maxݒfd
 != 0)

402 
mp
->
mp_maxݒfd
 = 
dbv
->mp_maxopenfd;

403 i(
dbv
->
mp_maxwre
 != 0)

404 
mp
->
mp_maxwre
 = 
dbv
->mp_maxwrite;

405 i(
dbv
->
mp_maxwre_p
 != 0)

406 
mp
->
mp_maxwre_p
 = 
dbv
->mp_maxwrite_sleep;

408 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

411 
	}
}

420 
	$__memp_v_esh
(
dbv
)

421 
DB_ENV
 *
dbv
;

423 
BH
 *
bhp
;

424 
BH_FROZEN_ALLOC
 *
oz_loc
;

425 
DB_MPOOL
 *
dbmp
;

426 
DB_MPOOLFILE
 *
dbm
;

427 
DB_MPOOL_HASH
 *
hp
;

428 
DB_MPREG
 *
meg
;

429 
MPOOL
 *
mp
, *
c_mp
;

430 
REGINFO
 *
f
;

431 
db_mux_t
 
mtx_ba
, 
mtx
;

432 
u_t32_t
 
buck
, 
hb_bucks
, 
i
, 
max_eg
, 
eg
;

433 
t
, 
t_t
;

435 
t
 = 0;

436 
dbmp
 = 
dbv
->
mp_hd
;

437 
mp
 = 
dbmp
->
gfo
[0].
imy
;

438 
hb_bucks
 = 
mp
->htab_buckets;

439 
eg
 = 
mp
->nreg;

440 
max_eg
 = 
mp
->max_nreg;

441 
hp
 = 
	`R_ADDR
(&
dbmp
->
gfo
[0], 
mp
->
hb
);

442 
mtx_ba
 = 
hp
->
mtx_hash
;

449 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
))

450 
n_iv
;

453 
i
 = 0; i < 
eg
; ++i) {

454 
f
 = &
dbmp
->
gfo
[
i
];

455 
c_mp
 = 
f
->
imy
;

456 
hp
 = 
	`R_ADDR
(
f
, 
c_mp
->
hb
), 
buck
 = 0;

457 
buck
 < 
c_mp
->
hb_bucks
; ++
hp
, ++bucket) {

458 (
bhp
 = 
	`SH_TAILQ_FIRST
(

459 &
hp
->
hash_buck
, 
__bh
)!
NULL
)

460 i(
	`F_ISSET
(
bhp
, 
BH_FROZEN
))

461 
	`SH_TAILQ_REMOVE
(

462 &
hp
->
hash_buck
, 
bhp
,

463 
hq
, 
__bh
);

465 i(
	`F_ISSET
(
bhp
, 
BH_DIRTY
)) {

466 --
hp
->
hash_ge_dty
;

467 
	`F_CLR
(
bhp
,

468 
BH_DIRTY
 | 
BH_DIRTY_CREATE
);

470 i((
t_t
 = 
	`__memp_bh
(

471 
dbmp
, 
f
, 
hp
, 
bhp
,

472 
BH_FREE_FREEMEM
 |

473 
BH_FREE_UNLOCKED
)!0 && 
t
 == 0)

474 
t
 = 
t_t
;

477 (
oz_loc
 = 
	`SH_TAILQ_FIRST
(

478 &
c_mp
->
loc_oz
, 
__bh_oz_a
)!
NULL
) {

479 
	`SH_TAILQ_REMOVE
(&
c_mp
->
loc_oz
, 
oz_loc
,

480 
lks
, 
__bh_oz_a
);

481 
	`__v_loc_
(
f
, 
oz_loc
);

486 i(
mtx_ba
 !
MUTEX_INVALID
)

487 
i
 = 0; i < 2 * 
max_eg
 * 
hb_bucks
; ++i) {

488 
mtx
 = 
mtx_ba
 + 
i
;

489 i((
t_t
 = 
	`__mux_
(
dbv
, &
mtx
)) != 0 &&

490 
t
 == 0)

491 
t
 = 
t_t
;

494 
n_iv
:

496 (
dbm
 = 
	`TAILQ_FIRST
(&
dbmp
->
dbmfq
)!
NULL
)

497 i((
t_t
 = 
	`__memp_fo
(
dbm
, 0)!0 && 
t
 == 0)

498 
t
 = 
t_t
;

501 i(
dbmp
->
pg_out
 !
NULL
)

502 
	`__os_
(
dbv
, 
dbmp
->
pg_out
);

503 (
meg
 = 
	`LIST_FIRST
(&
dbmp
->
dbgq
)!
NULL
) {

504 
	`LIST_REMOVE
(
meg
, 
q
);

505 
	`__os_
(
dbv
, 
meg
);

509 i((
t_t
 = 
	`__mux_
(
dbv
, &
dbmp
->
mux
)!0 && 
t
 == 0)

510 
t
 = 
t_t
;

512 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

514 
f
 = &
dbmp
->
gfo
[0];

515 
	`__memp_
(
f
, 
NULL
, 
	`R_ADDR
(f, 
mp
->
gids
));

518 
	`__memp_
(
f
, 
NULL
, 
	`R_ADDR
(f, 
mp
->
ab
));

521 
i
 = 0; i < 
eg
; ++i) {

522 
f
 = &
dbmp
->
gfo
[
i
];

523 
c_mp
 = 
f
->
imy
;

524 
	`__memp_
(
f
, 
NULL
, 
	`R_ADDR
(f, 
c_mp
->
hb
));

529 
i
 = 0; i < 
eg
; ++i) {

530 
f
 = &
dbmp
->
gfo
[
i
];

531 i((
t_t
 =

532 
	`__v_gi_dach
(
dbv
, 
f
, 0)!0 && 
t
 == 0)

533 
t
 = 
t_t
;

537 
	`__os_
(
dbv
, 
dbmp
->
gfo
);

538 
	`__os_
(
dbv
, 
dbmp
);

540 
dbv
->
mp_hd
 = 
NULL
;

541  (
t
);

542 
	}
}

	@../mp/mp_register.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/mp.h
"

24 
	$__memp_gi_
(
dbv
, 
y
, 
pg
, 
pgout
)

25 
DB_ENV
 *
dbv
;

26 
y
;

27 (*
pg

	`__P
((
DB_ENV
 *, 
db_pgno_t
, *, 
DBT
 *));

28 (*
pgout

	`__P
((
DB_ENV
 *, 
db_pgno_t
, *, 
DBT
 *));

30 
DB_THREAD_INFO
 *

;

31 
t
;

33 
	`PANIC_CHECK
(
dbv
);

34 
	`ENV_REQUIRES_CONFIG
(
dbv
,

35 
dbv
->
mp_hd
, "DB_ENV->memp_gi", 
DB_INIT_MPOOL
);

37 
	`ENV_ENTER
(
dbv
, 

);

38 
	`REPLICATION_WRAP
(
dbv
,

39 (
	`__memp_gi
(
dbv
, 
y
, 
pg
, 
pgout
)), 
t
);

40 
	`ENV_LEAVE
(
dbv
, 

);

41  (
t
);

42 
	}
}

53 
	$__memp_gi
(
dbv
, 
y
, 
pg
, 
pgout
)

54 
DB_ENV
 *
dbv
;

55 
y
;

56 (*
pg

	`__P
((
DB_ENV
 *, 
db_pgno_t
, *, 
DBT
 *));

57 (*
pgout

	`__P
((
DB_ENV
 *, 
db_pgno_t
, *, 
DBT
 *));

59 
DB_MPOOL
 *
dbmp
;

60 
DB_MPREG
 *
meg
;

61 
t
;

63 
dbmp
 = 
dbv
->
mp_hd
;

72 i(
y
 =
DB_FTYPE_SET
) {

73 i(
dbmp
->
pg_out
 !
NULL
)

75 i((
t
 =

76 
	`__os_mloc
(
dbv
, (
DB_MPREG
), &
dbmp
->
pg_out
)) != 0)

77  (
t
);

78 
dbmp
->
pg_out
->
y
 = ftype;

79 
dbmp
->
pg_out
->
pg
 =gin;

80 
dbmp
->
pg_out
->
pgout
 =gout;

88 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

89 
	`LIST_FOREACH
(
meg
, &
dbmp
->
dbgq
, 
q
)

90 i(
meg
->
y
 == ftype) {

91 
meg
->
pg
 =gin;

92 
meg
->
pgout
 =gout;

96 i(
meg
 =
NULL
) {

97 i((
t
 = 
	`__os_mloc
(
dbv
, (
DB_MPREG
), &
meg
)) != 0)

98  (
t
);

99 
meg
->
y
 = ftype;

100 
meg
->
pg
 =gin;

101 
meg
->
pgout
 =gout;

103 
	`LIST_INSERT_HEAD
(&
dbmp
->
dbgq
, 
meg
, 
q
);

105 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

108 
	}
}

	@../mp/mp_resize.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/mp.h
"

13 
	~"dbc/txn.h
"

15 
__memp_add_buck
 
__P
((
DB_MPOOL
 *));

16 
__memp_add_gi
 
__P
((
DB_MPOOL
 *));

17 
__memp_m_gis
 
__P
((
DB_MPOOL
 *));

18 
__memp_mge_bucks


19 
__P
((
DB_MPOOL
 *, 
u_t32_t
, u_int32_t, u_int32_t));

20 
__memp_move_buck
 
__P
((
DB_MPOOL
 *));

21 
__memp_move_gi
 
__P
((
DB_MPOOL
 *));

28 
	$__memp_g_buck
(
dbm
, 
pgno
, 
fp
, 
h
)

29 
DB_MPOOLFILE
 *
dbm
;

30 
db_pgno_t
 
pgno
;

31 
REGINFO
 **
fp
;

32 
DB_MPOOL_HASH
 **
h
;

34 
DB_ENV
 *
dbv
;

35 
DB_MPOOL
 *
dbmp
;

36 
DB_MPOOL_HASH
 *
hp
;

37 
MPOOL
 *
c_mp
, *
mp
;

38 
REGINFO
 *
f
;

39 
roff_t
 
mf_offt
;

40 
u_t32_t
 
buck
, 
nbucks
, 
w_buck
, 
w_nbucks
, 
gi
;

41 
u_t32_t
 *
gids
;

42 
t
;

44 
dbv
 = 
dbm
->dbenv;

45 
dbmp
 = 
dbv
->
mp_hd
;

46 
mf_offt
 = 
	`R_OFFSET
(
dbmp
->
gfo
, 
dbm
->
m
);

47 
mp
 = 
dbmp
->
gfo
[0].
imy
;

48 
t
 = 0;

51 
nbucks
 = 
mp
->nbuckets;

52 
	`MP_BUCKET
(
mf_offt
, 
pgno
, 
nbucks
, 
buck
);

61 
gi
 = 
	`NREGION
(
mp
, 
buck
);

62 
gids
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->regids);

65 
f
 = *
fp
 = &
dbmp
->
gfo
[
gi
];

66 
c_mp
 = 
f
->
imy
;

69 i(
c_mp
 !
NULL
 && 
gids
[
gi
] =
f
->
id
)

71 i((
t
 = 
	`__memp_m_gis
(
dbmp
)) != 0)

72  (
t
);

76 i(
h
 !
NULL
) {

77 
hp
 = 
	`R_ADDR
(
f
, 
c_mp
->
hb
);

78 
hp
 = &hp[
buck
 - 
gi
 * 
mp
->
hb_bucks
];

80 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

85 i(
gids
[
gi
] !
f
->
id
) {

86 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

94 
w_nbucks
 = 
mp
->
nbucks
;

95 i(
nbucks
 !
w_nbucks
) {

96 
	`MP_BUCKET
(
mf_offt
, 
pgno
, 
w_nbucks
,

97 
w_buck
);

99 i(
w_buck
 !
buck
) {

100 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

105 *
h
 = 
hp
;

111  (
t
);

112 
	}
}

115 
	$__memp_mge_bucks
(
dbmp
, 
w_nbucks
, 
d_buck
, 
w_buck
)

116 
DB_MPOOL
 *
dbmp
;

117 
u_t32_t
 
w_nbucks
, 
d_buck
, 
w_buck
;

119 
BH
 *
loc_bhp
, *
bhp
, *
cut_bhp
, *
w_bhp
, *
xt_bhp
;

120 
DB_ENV
 *
dbv
;

121 
DB_LSN
 
vl
;

122 
DB_MPOOL_HASH
 *
w_hp
, *
d_hp
;

123 
MPOOL
 *
mp
, *
w_mp
, *
d_mp
;

124 
MPOOLFILE
 *
m
;

125 
REGINFO
 *
w_f
, *
d_f
;

126 
u_t32_t
 
buck
, 
high_mask
, 
w_gi
, 
d_gi
;

127 
t
;

129 
dbv
 = 
dbmp
->dbenv;

130 
mp
 = 
dbmp
->
gfo
[0].
imy
;

131 
w_bhp
 = 
NULL
;

132 
t
 = 0;

134 
	`MP_MASK
(
w_nbucks
, 
high_mask
);

136 
d_gi
 = 
	`NREGION
(
mp
, 
d_buck
);

137 
d_f
 = &
dbmp
->
gfo
[
d_gi
];

138 
d_mp
 = 
d_f
->
imy
;

139 
d_hp
 = 
	`R_ADDR
(
d_f
, 
d_mp
->
hb
);

140 
d_hp
 = &d_hp[
d_buck
 - 
d_gi
 * 
mp
->
hb_bucks
];

142 
w_gi
 = 
	`NREGION
(
mp
, 
w_buck
);

143 
w_f
 = &
dbmp
->
gfo
[
w_gi
];

144 
w_mp
 = 
w_f
->
imy
;

145 
w_hp
 = 
	`R_ADDR
(
w_f
, 
w_mp
->
hb
);

146 
w_hp
 = &w_hp[
w_buck
 - 
w_gi
 * 
mp
->
hb_bucks
];

152 
_d
:

153 
	`MUTEX_LOCK
(
dbv
, 
w_hp
->
mtx_hash
);

154 
	`SH_TAILQ_FOREACH
(
bhp
, &
w_hp
->
hash_buck
, 
hq
, 
__bh
) {

155 
	`MP_BUCKET
(
bhp
->
mf_offt
, bhp->
pgno
, 
mp
->
nbucks
, 
buck
);

157 i(
buck
 !
w_buck
) {

163 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
bhp
, 
BH_LOCKED
 | 
BH_DIRTY
) &&

164 
bhp
->
f
 == 0);

165 i((
t
 = 
	`__memp_bh
(
dbmp
,

166 
w_f
, 
w_hp
, 
bhp
, 
BH_FREE_FREEMEM
)) != 0) {

167 
	`MUTEX_UNLOCK
(
dbv
, 
w_hp
->
mtx_hash
);

168  (
t
);

175 
_d
;

178 
	`MUTEX_UNLOCK
(
dbv
, 
w_hp
->
mtx_hash
);

185 
y
: 
	`MUTEX_LOCK
(
dbv
, 
d_hp
->
mtx_hash
);

186 
	`SH_TAILQ_FOREACH
(
bhp
, &
d_hp
->
hash_buck
, 
hq
, 
__bh
) {

187 
	`MP_HASH_BUCKET
(
	`MP_HASH
(
bhp
->
mf_offt
, bhp->
pgno
),

188 
w_nbucks
, 
high_mask
, 
buck
);

190 i(
buck
 =
w_buck
 &&

191 (
	`F_ISSET
(
bhp
, 
BH_LOCKED
|| bhp->
f
 != 0)) {

192 
	`MUTEX_UNLOCK
(
dbv
, 
d_hp
->
mtx_hash
);

193 
	`__os_yld
(
dbv
);

194 
y
;

195 } i(
buck
 =
w_buck
 && 
	`F_ISSET
(
bhp
, 
BH_FROZEN
)) {

196 ++
bhp
->
f
;

197 i(
	`BH_OBSOLETE
(
bhp
, 
d_hp
->
d_ad
, 
vl
))

198 
loc_bhp
 = 
NULL
;

200 
m
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
bhp
->
mf_offt
);

201 
	`MUTEX_UNLOCK
(
dbv
, 
d_hp
->
mtx_hash
);

202 i((
t
 = 
	`__memp_loc
(
dbmp
,

203 
d_f
, 
m
, 0, 
NULL
, &
loc_bhp
)) != 0)

204  (
t
);

205 
	`MUTEX_LOCK
(
dbv
, 
d_hp
->
mtx_hash
);

207 i((
t
 = 
	`__memp_bh_thaw
(
dbmp
,

208 
d_f
, 
d_hp
, 
bhp
, 
loc_bhp
)) != 0) {

209 
	`MUTEX_UNLOCK
(
dbv
, 
d_hp
->
mtx_hash
);

210  (
t
);

219 
	`MUTEX_UNLOCK
(
dbv
, 
d_hp
->
mtx_hash
);

220 
y
;

228 
	`SH_TAILQ_FOREACH
(
bhp
, &
d_hp
->
hash_buck
, 
hq
, 
__bh
) {

229 
	`MP_HASH_BUCKET
(
	`MP_HASH
(
bhp
->
mf_offt
, bhp->
pgno
),

230 
w_nbucks
, 
high_mask
, 
buck
);

231 
m
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
bhp
->
mf_offt
);

238 i(
buck
 !
w_buck
 || (!
	`F_ISSET
(
bhp
, 
BH_DIRTY
) &&

239 
	`SH_CHAIN_SINGLETON
(
bhp
, 
vc
&& !
m
->
no_backg_fe
))

242 
cut_bhp
 = 
bhp
, 
xt_bhp
 = 
NULL
;

243 
cut_bhp
 !
NULL
;

244 
cut_bhp
 = 
	`SH_CHAIN_PREV
(cut_bhp, 
vc
, 
__bh
),

245 
xt_bhp
 = 
loc_bhp
) {

246 i((
t
 = 
	`__memp_loc
(
dbmp
,

247 
w_f
, 
m
, 0, 
NULL
, &
loc_bhp
)) != 0)

250 
loc_bhp
->
f
 = 
cut_bhp
->ref;

251 
loc_bhp
->
f_sync
 = 
cut_bhp
->ref_sync;

252 
loc_bhp
->
iܙy
 = 
cut_bhp
->priority;

253 
loc_bhp
->
pgno
 = 
cut_bhp
->pgno;

254 
loc_bhp
->
mf_offt
 = 
cut_bhp
->mf_offset;

255 
loc_bhp
->
ags
 = 
cut_bhp
->flags;

256 
loc_bhp
->
td_off
 = 
cut_bhp
->td_off;

264 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

265 ++
m
->
block_t
;

266 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

268 i(
loc_bhp
->
td_off
 !
INVALID_ROFF
 &&

269 (
t
 = 
	`__txn_add_bufr
(
dbv
,

270 
	`R_ADDR
(&
dbv
->
tx_hd
->
gfo
,

271 
loc_bhp
->
td_off
))) != 0)

274 
	`memy
(
loc_bhp
->
buf
, 
bhp
->buf, 
m
->

.
_gesize
);

280 i(
xt_bhp
 =
NULL
) {

281 
	`SH_CHAIN_INIT
(
loc_bhp
, 
vc
);

282 
w_bhp
 = 
loc_bhp
;

284 
	`SH_CHAIN_INSERT_BEFORE
(

285 
xt_bhp
, 
loc_bhp
, 
vc
, 
__bh
);

288 
	`MUTEX_LOCK
(
dbv
, 
w_hp
->
mtx_hash
);

289 
	`SH_TAILQ_INSERT_TAIL
(&
w_hp
->
hash_buck
, 
w_bhp
, 
hq
);

290 i(
	`F_ISSET
(
w_bhp
, 
BH_DIRTY
))

291 ++
w_hp
->
hash_ge_dty
;

300 
	`__memp_buck_d
(
dbv
, 
w_hp
, 
w_bhp
);

301 
	`MUTEX_UNLOCK
(
dbv
, 
w_hp
->
mtx_hash
);

303 i(
	`F_ISSET
(
bhp
, 
BH_DIRTY
)) {

304 
	`F_CLR
(
bhp
, 
BH_DIRTY
);

305 --
d_hp
->
hash_ge_dty
;

309 i(
t
 == 0)

310 
mp
->
nbucks
 = 
w_nbucks
;

311 
	`MUTEX_UNLOCK
(
dbv
, 
d_hp
->
mtx_hash
);

313  (
t
);

314 
	}
}

317 
	$__memp_add_buck
(
dbmp
)

318 
DB_MPOOL
 *
dbmp
;

320 
DB_ENV
 *
dbv
;

321 
MPOOL
 *
mp
;

322 
u_t32_t
 
high_mask
, 
w_buck
, 
d_buck
;

324 
dbv
 = 
dbmp
->dbenv;

325 
mp
 = 
dbmp
->
gfo
[0].
imy
;

327 
w_buck
 = 
mp
->
nbucks
;

329 
	`DB_ASSERT
(
dbv
, 
	`NREGION
(
mp
, 
w_buck
=mp->
eg
 - 1);

330 
	`MP_MASK
(
mp
->
nbucks
, 
high_mask
);

331 
d_buck
 = 
w_buck
 & (
high_mask
 >> 1);

339 
	`DB_ASSERT
(
dbv
, 
	`NREGION
(
mp
, 
d_buck
!NREGION(mp, 
w_buck
));

341  (
	`__memp_mge_bucks
(
dbmp
, 
mp
->
nbucks
 + 1,

342 
d_buck
, 
w_buck
));

343 
	}
}

346 
	$__memp_add_gi
(
dbmp
)

347 
DB_MPOOL
 *
dbmp
;

349 
DB_ENV
 *
dbv
;

350 
MPOOL
 *
mp
;

351 
REGINFO
 *
f
;

352 
t
;

353 
roff_t
 
g_size
;

354 
u_t
 
i
;

355 
u_t32_t
 *
gids
;

357 
dbv
 = 
dbmp
->dbenv;

358 
mp
 = 
dbmp
->
gfo
[0].
imy
;

360 
g_size
 = 
dbmp
->
gfo
[0].

->
size
;

361 
t
 = 0;

363 
f
 = &
dbmp
->
gfo
[
mp
->
eg
];

364 
f
->
dbv
 = dbenv;

365 
f
->
ty
 = 
REGION_TYPE_MPOOL
;

366 
f
->
id
 = 
INVALID_REGION_ID
;

367 
f
->
ags
 = 
REGION_CREATE_OK
;

368 i((
t
 = 
	`__v_gi_ch
(
dbv
, 
f
, 
g_size
)) != 0)

369  (
t
);

370 i((
t
 = 
	`__memp_
(
dbv
,

371 
dbmp
, 
mp
->
eg
, mp->
hb_bucks
, mp->
max_eg
)) != 0)

372  (
t
);

373 
gids
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->regids);

374 
gids
[
mp
->
eg
++] = 
f
->
id
;

376 
i
 = 0; i < 
mp
->
hb_bucks
; i++)

377 i((
t
 = 
	`__memp_add_buck
(
dbmp
)) != 0)

380  (
t
);

381 
	}
}

384 
	$__memp_move_buck
(
dbmp
)

385 
DB_MPOOL
 *
dbmp
;

387 
DB_ENV
 *
dbv
;

388 
MPOOL
 *
mp
;

389 
u_t32_t
 
high_mask
, 
w_buck
, 
d_buck
;

391 
dbv
 = 
dbmp
->dbenv;

392 
mp
 = 
dbmp
->
gfo
[0].
imy
;

394 
d_buck
 = 
mp
->
nbucks
 - 1;

397 
	`DB_ASSERT
(
dbv
, 
	`NREGION
(
mp
, 
d_buck
=mp->
eg
 - 1);

398 
	`MP_MASK
(
mp
->
nbucks
 - 1, 
high_mask
);

399 
w_buck
 = 
d_buck
 & (
high_mask
 >> 1);

401  (
	`__memp_mge_bucks
(
dbmp
, 
mp
->
nbucks
 - 1,

402 
d_buck
, 
w_buck
));

403 
	}
}

406 
	$__memp_move_gi
(
dbmp
)

407 
DB_MPOOL
 *
dbmp
;

409 
DB_ENV
 *
dbv
;

410 
MPOOL
 *
mp
;

411 
REGINFO
 *
f
;

412 
t
;

413 
u_t
 
i
;

415 
dbv
 = 
dbmp
->dbenv;

416 
mp
 = 
dbmp
->
gfo
[0].
imy
;

417 
t
 = 0;

419 i(
mp
->
eg
 == 1) {

420 
	`__db_rx
(
dbv
, "cannotemoveheast cache");

421  (
EINVAL
);

424 
i
 = 0; i < 
mp
->
hb_bucks
; i++)

425 i((
t
 = 
	`__memp_move_buck
(
dbmp
)) != 0)

426  (
t
);

429 
f
 = &
dbmp
->
gfo
[--
mp
->
eg
];

430  (
	`__v_gi_dach
(
dbv
, 
f
, 1));

431 
	}
}

434 
	$__memp_m_gis
(
dbmp
)

435 
DB_MPOOL
 *
dbmp
;

437 
DB_ENV
 *
dbv
;

438 
MPOOL
 *
mp
;

439 
t
;

440 
u_t
 
i
;

441 
u_t32_t
 *
gids
;

443 
dbv
 = 
dbmp
->dbenv;

444 
mp
 = 
dbmp
->
gfo
[0].
imy
;

445 
gids
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->regids);

446 
t
 = 0;

448 
i
 = 1; i < 
mp
->
eg
; ++i) {

449 i(
dbmp
->
gfo
[
i
].
imy
 !
NULL
 &&

450 
dbmp
->
gfo
[
i
].
id
 =
gids
[i])

453 i(
dbmp
->
gfo
[
i
].
imy
 !
NULL
)

454 
t
 = 
	`__v_gi_dach
(
dbv
, &
dbmp
->
gfo
[
i
], 0);

456 
dbmp
->
gfo
[
i
].
dbv
 = dbenv;

457 
dbmp
->
gfo
[
i
].
ty
 = 
REGION_TYPE_MPOOL
;

458 
dbmp
->
gfo
[
i
].
id
 = 
gids
[i];

459 
dbmp
->
gfo
[
i
].
ags
 = 
REGION_JOIN_OK
;

460 i((
t
 =

461 
	`__v_gi_ch
(
dbv
, &
dbmp
->
gfo
[
i
], 0)) != 0)

462  (
t
);

463 
dbmp
->
gfo
[
i
].
imy
 = 
	`R_ADDR
(&dbmp->reginfo[i],

464 
dbmp
->
gfo
[
i
].

->
imy
);

467 ; 
i
 < 
mp
->
max_eg
; i++)

468 i(
dbmp
->
gfo
[
i
].
imy
 !
NULL
 &&

469 (
t
 = 
	`__v_gi_dach
(
dbv
,

470 &
dbmp
->
gfo
[
i
], 0)) != 0)

473  (
t
);

474 
	}
}

480 
	$__memp_size
(
dbmp
, 
gbys
, 
bys
)

481 
DB_MPOOL
 *
dbmp
;

482 
u_t32_t
 
gbys
, 
bys
;

484 
DB_ENV
 *
dbv
;

485 
MPOOL
 *
mp
;

486 
t
;

487 
u_t32_t
 
nche
;

488 
roff_t
 
g_size
, 
tٮ_size
;

490 
dbv
 = 
dbmp
->dbenv;

491 
mp
 = 
dbmp
->
gfo
[0].
imy
;

492 
g_size
 = 
dbmp
->
gfo
[0].

->
size
;

493 
tٮ_size
 = (
roff_t
)
gbys
 * 
GIGABYTE
 + 
bys
;

494 
nche
 = (
u_t32_t
)((
tٮ_size
 + 
g_size
 / 2) /eg_size);

496 i(
nche
 < 1)

497 
nche
 = 1;

498 i(
nche
 > 
mp
->
max_eg
) {

499 
	`__db_rx
(
dbv
,

501 (
u_lg
)
nche
, (u_lg)
mp
->
max_eg
);

502  (
EINVAL
);

505 
t
 = 0;

506 
	`MUTEX_LOCK
(
dbv
, 
mp
->
mtx_size
);

507 
mp
->
eg
 !
nche
)

508 i((
t
 = (
mp
->
eg
 < 
nche
 ?

509 
	`__memp_add_gi
(
dbmp
) :

510 
	`__memp_move_gi
(
dbmp
))) != 0)

512 
	`MUTEX_UNLOCK
(
dbv
, 
mp
->
mtx_size
);

514  (
t
);

515 
	}
}

521 
	$__memp_g_che_max
(
dbv
, 
max_gby
, 
max_by
)

522 
DB_ENV
 *
dbv
;

523 
u_t32_t
 *
max_gby
, *
max_by
;

525 
DB_MPOOL
 *
dbmp
;

526 
MPOOL
 *
mp
;

527 
roff_t
 
g_size
, 
max_size
;

529 
	`ENV_NOT_CONFIGURED
(
dbv
,

530 
dbv
->
mp_hd
, "DB_ENV->g_mp_max_nche", 
DB_INIT_MPOOL
);

532 i(
	`MPOOL_ON
(
dbv
)) {

533 
dbmp
 = 
dbv
->
mp_hd
;

534 
mp
 = 
dbmp
->
gfo
[0].
imy
;

535 
g_size
 = 
dbmp
->
gfo
[0].

->
size
;

536 
max_size
 = 
mp
->
max_eg
 * 
g_size
;

537 *
max_gby
 = (
u_t32_t
)(
max_size
 / 
GIGABYTE
);

538 *
max_by
 = (
u_t32_t
)(
max_size
 % 
GIGABYTE
);

540 *
max_gby
 = 
dbv
->
mp_max_gbys
;

541 *
max_by
 = 
dbv
->
mp_max_bys
;

545 
	}
}

551 
	$__memp_t_che_max
(
dbv
, 
max_gbys
, 
max_bys
)

552 
DB_ENV
 *
dbv
;

553 
u_t32_t
 
max_gbys
, 
max_bys
;

555 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_cache_max");

556 
dbv
->
mp_max_gbys
 = 
max_gbys
;

557 
dbv
->
mp_max_bys
 = 
max_bys
;

560 
	}
}

	@../mp/mp_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/mp.h
"

16 
	~"dbc/txn.h
"

18 #ifde
HAVE_STATISTICS


19 
__memp_t_bh
 
__P
((
DB_ENV
 *,

20 
DB_MPOOL
 *, cڡ *, 
BH
 *, 
roff_t
 *));

21 
__memp_t_l
 
__P
((
DB_ENV
 *, 
u_t32_t
));

22 
__memp_t_s
 
__P
((
DB_ENV
 *, 
u_t32_t
));

23 
__memp_t_hash
 
__P
((
DB_ENV
 *,

24 
DB_MPOOL
 *, 
REGINFO
 *, 
roff_t
 *, 
u_t32_t
));

25 
__memp_
 
__P
((
DB_ENV
 *,

26 
DB_MPOOL_STAT
 **, 
DB_MPOOL_FSTAT
 ***, 
u_t32_t
));

27 
__memp__wa
 
__P
((

28 
DB_ENV
 *, 
REGINFO
 *, 
MPOOL
 *, 
DB_MPOOL_STAT
 *, 
u_t32_t
));

29 
__memp_fe_s
 
__P
((
DB_ENV
 *,

30 
MPOOLFILE
 *, *, 
u_t32_t
 *, u_int32_t));

31 
__memp_cou_fes
 
__P
((
DB_ENV
 *,

32 
MPOOLFILE
 *, *, 
u_t32_t
 *, u_int32_t));

33 
__memp_g_fes
 
__P
((
DB_ENV
 *,

34 
MPOOLFILE
 *, *, 
u_t32_t
 *, u_int32_t));

35 
__memp_t_fes
 
__P
((
DB_ENV
 *,

36 
MPOOLFILE
 *, *, 
u_t32_t
 *, u_int32_t));

46 
	$__memp__
(
dbv
, 
gp
, 
fp
, 
ags
)

47 
DB_ENV
 *
dbv
;

48 
DB_MPOOL_STAT
 **
gp
;

49 
DB_MPOOL_FSTAT
 ***
fp
;

50 
u_t32_t
 
ags
;

52 
DB_THREAD_INFO
 *

;

53 
t
;

55 
	`PANIC_CHECK
(
dbv
);

56 
	`ENV_REQUIRES_CONFIG
(
dbv
,

57 
dbv
->
mp_hd
, "DB_ENV->memp_", 
DB_INIT_MPOOL
);

59 i((
t
 = 
	`__db_fchk
(
dbv
,

60 "DB_ENV->memp_", 
ags
, 
DB_STAT_CLEAR
)) != 0)

61  (
t
);

63 
	`ENV_ENTER
(
dbv
, 

);

64 
	`REPLICATION_WRAP
(
dbv
, (
	`__memp_
(dbv, 
gp
, 
fp
, 
ags
)), 
t
);

65 
	`ENV_LEAVE
(
dbv
, 

);

66  (
t
);

67 
	}
}

74 
	$__memp_
(
dbv
, 
gp
, 
fp
, 
ags
)

75 
DB_ENV
 *
dbv
;

76 
DB_MPOOL_STAT
 **
gp
;

77 
DB_MPOOL_FSTAT
 ***
fp
;

78 
u_t32_t
 
ags
;

80 
DB_MPOOL
 *
dbmp
;

81 
DB_MPOOL_FSTAT
 **
tf
;

82 
DB_MPOOL_STAT
 *

;

83 
MPOOL
 *
c_mp
, *
mp
;

84 
size_t
 
n
;

85 
u_t32_t
 
i
, 
_bys
, 
_gbys
, 
_hash_bucks
, 
_ges
;

86 
u_t32_t
 
tmp_wa
, 
tmp_nowa
;

87 
t
;

89 
dbmp
 = 
dbv
->
mp_hd
;

90 
mp
 = 
dbmp
->
gfo
[0].
imy
;

93 i(
gp
 !
NULL
) {

94 *
gp
 = 
NULL
;

96 i((
t
 = 
	`__os_umloc
(
dbv
, (**
gp
), gspp)) != 0)

97  (
t
);

98 
	`memt
(*
gp
, 0, (**gspp));

99 

 = *
gp
;

106 

->
_gbys
 = 
mp
->

.st_gbytes;

107 

->
_bys
 = 
mp
->

.st_bytes;

108 

->
_nche
 = 
mp
->
eg
;

109 

->
_max_nche
 = 
mp
->
max_eg
;

110 

->
_gsize
 = 
dbmp
->
gfo
[0].

->
size
;

112 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

113 

->
_mmsize
 = 
mp
->
mp_mmsize
;

114 

->
_maxݒfd
 = 
mp
->
mp_maxݒfd
;

115 

->
_maxwre
 = 
mp
->
mp_maxwre
;

116 

->
_maxwre_p
 = 
mp
->
mp_maxwre_p
;

117 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

120 
i
 = 0; i < 
mp
->
eg
; ++i) {

121 
c_mp
 = 
dbmp
->
gfo
[
i
].
imy
;

123 

->
_m
 +
c_mp
->

.st_map;

124 

->
_che_h
 +
c_mp
->

.st_cache_hit;

125 

->
_che_miss
 +
c_mp
->

.st_cache_miss;

126 

->
_ge_
 +
c_mp
->

.st_page_create;

127 

->
_ge_
 +
c_mp
->

.st_page_in;

128 

->
_ge_out
 +
c_mp
->

.st_page_out;

129 

->
_ro_evi
 +
c_mp
->

.st_ro_evict;

130 

->
_rw_evi
 +
c_mp
->

.st_rw_evict;

131 

->
_ge_ick
 +
c_mp
->

.st_page_trickle;

132 

->
_ges
 +
c_mp
->

.st_pages;

137 
	`__memp__hash
(

138 &
dbmp
->
gfo
[
i
], 
c_mp
, &

->
_ge_dty
);

139 

->
_ge_n
 = sp->
_ges
 - sp->
_ge_dty
;

140 

->
_hash_bucks
 +
c_mp
->

.st_hash_buckets;

141 

->
_hash_ches
 +
c_mp
->

.st_hash_searches;

142 

->
_hash_lge
 +
c_mp
->

.st_hash_longest;

143 

->
_hash_examed
 +
c_mp
->

.st_hash_examined;

148 
	`__memp__wa
(

149 
dbv
, &
dbmp
->
gfo
[
i
], 
c_mp
, 

, 
ags
);

150 
	`__mux_t_wa_fo
(
dbv
,

151 
c_mp
->
mtx_gi
, &
tmp_wa
, &
tmp_nowa
);

152 

->
_gi_nowa
 +
tmp_nowa
;

153 

->
_gi_wa
 +
tmp_wa
;

154 

->
_loc
 +
c_mp
->

.st_alloc;

155 

->
_loc_bucks
 +
c_mp
->

.st_alloc_buckets;

156 i(

->
_loc_max_bucks
 <

157 
c_mp
->

.
_loc_max_bucks
)

158 

->
_loc_max_bucks
 =

159 
c_mp
->

.
_loc_max_bucks
;

160 

->
_loc_ges
 +
c_mp
->

.st_alloc_pages;

161 i(

->
_loc_max_ges
 <

162 
c_mp
->

.
_loc_max_ges
)

163 

->
_loc_max_ges
 =

164 
c_mp
->

.
_loc_max_ges
;

166 i(
	`LF_ISSET
(
DB_STAT_CLEAR
)) {

167 i(!
	`LF_ISSET
(
DB_STAT_SUBSYSTEM
))

168 
	`__mux_r
(
dbv
, 
c_mp
->
mtx_gi
);

170 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

171 
_bys
 = 
c_mp
->

.st_bytes;

172 
_gbys
 = 
c_mp
->

.st_gbytes;

173 
_hash_bucks
 = 
c_mp
->

.st_hash_buckets;

174 
_ges
 = 
c_mp
->

.st_pages;

175 
	`memt
(&
c_mp
->

, 0, (c_mp->stat));

176 
c_mp
->

.
_bys
 = st_bytes;

177 
c_mp
->

.
_gbys
 = st_gbytes;

178 
c_mp
->

.
_hash_bucks
 = st_hash_buckets;

179 
c_mp
->

.
_ges
 = st_pages;

180 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

192 i((
t
 = 
	`__memp_wk_fes
(
dbv
, 
mp
, 
__memp_fe_s
,

193 

, 
NULL
, 
fp
 =NULL ? 
	`LF_ISSET
(
DB_STAT_CLEAR
) : 0)) != 0)

194  (
t
);

198 i(
fp
 !
NULL
) {

199 *
fp
 = 
NULL
;

202 
i
 = 0;

203 
n
 = 0;

204 i((
t
 = 
	`__memp_wk_fes
(
dbv
,

205 
mp
, 
__memp_cou_fes
, &
n
, &
i
, 
ags
)) != 0)

206  (
t
);

208 i(
i
 == 0)

210 
n
 +(
DB_MPOOL_FSTAT
 *);

213 i((
t
 = 
	`__os_umloc
(
dbv
, 
n
, 
fp
)) != 0)

214  (
t
);

216 
tf
 = *
fp
;

217 *
tf
 = 
NULL
;

223 i((
t
 = 
	`__memp_wk_fes
(
dbv
,

224 
mp
, 
__memp_g_fes
, &
tf
, &
i
, 
ags
)) != 0)

225  (
t
);

227 *++
tf
 = 
NULL
;

231 
	}
}

234 
	$__memp_fe_s
(
dbv
, 
m
, 
gp
, 
coup
, 
ags
)

235 
DB_ENV
 *
dbv
;

236 
MPOOLFILE
 *
m
;

237 *
gp
;

238 
u_t32_t
 *
coup
;

239 
u_t32_t
 
ags
;

241 
DB_MPOOL_STAT
 *

;

242 
u_t32_t
 
gesize
;

244 
	`COMPQUIET
(
dbv
, 
NULL
);

245 
	`COMPQUIET
(
coup
, 
NULL
);

247 

 = 
gp
;

249 

->
_m
 +
m
->

.st_map;

250 

->
_che_h
 +
m
->

.st_cache_hit;

251 

->
_che_miss
 +
m
->

.st_cache_miss;

252 

->
_ge_
 +
m
->

.st_page_create;

253 

->
_ge_
 +
m
->

.st_page_in;

254 

->
_ge_out
 +
m
->

.st_page_out;

255 i(
	`LF_ISSET
(
DB_STAT_CLEAR
)) {

256 
gesize
 = 
m
->

.
_gesize
;

257 
	`memt
(&
m
->

, 0, (mfp->stat));

258 
m
->

.
_gesize
 = 
gesize
;

261 
	}
}

264 
	$__memp_cou_fes
(
dbv
, 
m
, 
gp
, 
coup
, 
ags
)

265 
DB_ENV
 *
dbv
;

266 
MPOOLFILE
 *
m
;

267 *
gp
;

268 
u_t32_t
 *
coup
;

269 
u_t32_t
 
ags
;

271 
DB_MPOOL
 *
dbmp
;

272 
size_t
 
n
;

274 
	`COMPQUIET
(
ags
, 0);

275 
dbmp
 = 
dbv
->
mp_hd
;

276 
n
 = *(
size_t
 *)
gp
;

278 (*
coup
)++;

279 
n
 +(
DB_MPOOL_FSTAT
 *) +

280 (
DB_MPOOL_FSTAT
+ 
	`
(
	`__memp_s
(
dbmp
, 
m
)) + 1;

282 *(
size_t
 *)
gp
 = 
n
;

284 
	}
}

297 
	$__memp_g_fes
(
dbv
, 
m
, 
gp
, 
coup
, 
ags
)

298 
DB_ENV
 *
dbv
;

299 
MPOOLFILE
 *
m
;

300 *
gp
;

301 
u_t32_t
 *
coup
;

302 
u_t32_t
 
ags
;

304 
DB_MPOOL
 *
dbmp
;

305 
DB_MPOOL_FSTAT
 **
tf
, *
tru
;

306 *
me
, *
ame
;

307 
size_t
 
ƒ
;

308 
u_t32_t
 
gesize
;

310 i(*
coup
 == 0)

313 
dbmp
 = 
dbv
->
mp_hd
;

314 
tf
 = *(
DB_MPOOL_FSTAT
 ***)
gp
;

316 i(*
tf
 =
NULL
) {

318 
tru
 = (
DB_MPOOL_FSTAT
 *)(
tf
 + *
coup
 + 1);

319 
ame
 = (*)(
tru
 + *
coup
);

320 *
tf
 = 
tru
;

322 
tru
 = *
tf
 + 1;

323 
ame
 = (*
tf
)->
fe_me
 + 
	`
((*tfsp)->file_name) + 1;

324 *++
tf
 = 
tru
;

327 
me
 = 
	`__memp_s
(
dbmp
, 
m
);

328 
ƒ
 = 
	`
(
me
) + 1;

329 
	`memy
(
ame
, 
me
, 
ƒ
);

330 *
tru
 = 
m
->

;

331 
tru
->
fe_me
 = 
ame
;

333 *(
DB_MPOOL_FSTAT
 ***)
gp
 = 
tf
;

334 (*
coup
)--;

336 i(
	`LF_ISSET
(
DB_STAT_CLEAR
)) {

337 
gesize
 = 
m
->

.
_gesize
;

338 
	`memt
(&
m
->

, 0, (mfp->stat));

339 
m
->

.
_gesize
 = 
gesize
;

342 
	}
}

351 
	$__memp__t_
(
dbv
, 
ags
)

352 
DB_ENV
 *
dbv
;

353 
u_t32_t
 
ags
;

355 
DB_THREAD_INFO
 *

;

356 
t
;

358 
	`PANIC_CHECK
(
dbv
);

359 
	`ENV_REQUIRES_CONFIG
(
dbv
,

360 
dbv
->
mp_hd
, "DB_ENV->memp__t", 
DB_INIT_MPOOL
);

362 
	#DB_STAT_MEMP_FLAGS
 \

363 (
DB_STAT_ALL
 | 
DB_STAT_CLEAR
 | 
DB_STAT_MEMP_HASH
)

	)

364 i((
t
 = 
	`__db_fchk
(
dbv
,

365 "DB_ENV->memp__t", 
ags
, 
DB_STAT_MEMP_FLAGS
)) != 0)

366  (
t
);

368 
	`ENV_ENTER
(
dbv
, 

);

369 
	`REPLICATION_WRAP
(
dbv
, (
	`__memp__t
(dbv, 
ags
)), 
t
);

370 
	`ENV_LEAVE
(
dbv
, 

);

371  (
t
);

372 
	}
}

374 
	#FMAP_ENTRIES
 200

	)

383 
	$__memp__t
(
dbv
, 
ags
)

384 
DB_ENV
 *
dbv
;

385 
u_t32_t
 
ags
;

387 
u_t32_t
 
ig_ags
;

388 
t
;

390 
ig_ags
 = 
ags
;

391 
	`LF_CLR
(
DB_STAT_CLEAR
 | 
DB_STAT_SUBSYSTEM
);

392 i(
ags
 =0 || 
	`LF_ISSET
(
DB_STAT_ALL
)) {

393 
t
 = 
	`__memp_t_s
(
dbv
,

394 
	`LF_ISSET
(
DB_STAT_ALL
? 
ags
 : 
ig_ags
);

395 i(
ags
 =0 || 
t
 != 0)

396  (
t
);

399 i(
	`LF_ISSET
(
DB_STAT_ALL
 | 
DB_STAT_MEMP_HASH
) &&

400 (
t
 = 
	`__memp_t_l
(
dbv
, 
ig_ags
)) != 0)

401  (
t
);

404 
	}
}

411 
	$__memp_t_s
(
dbv
, 
ags
)

412 
DB_ENV
 *
dbv
;

413 
u_t32_t
 
ags
;

415 
DB_MPOOL_FSTAT
 **
f
, **
tf
;

416 
DB_MPOOL_STAT
 *
g
;

417 
t
;

419 i((
t
 = 
	`__memp_
(
dbv
, &
g
, &
f
, 
ags
)) != 0)

420  (
t
);

422 i(
	`LF_ISSET
(
DB_STAT_ALL
))

423 
	`__db_msg
(
dbv
, "Default cacheegion information:");

424 
	`__db_dlbys
(
dbv
, "Total cache size",

425 (
u_lg
)
g
->
_gbys
, (u_lg)0, (u_lg)g->
_bys
);

426 
	`__db_dl
(
dbv
, "Numb oches", (
u_lg
)
g
->
_nche
);

427 
	`__db_dl
(
dbv
, "Maximumumb oches", (
u_lg
)
g
->
_max_nche
);

428 
	`__db_dlbys
(
dbv
, "Pool individual cache size",

429 (
u_lg
)0, (u_lg)0, (u_lg)
g
->
_gsize
);

430 
	`__db_dlbys
(
dbv
, "Maximum memory-mapped file size",

431 (
u_lg
)0, (u_lg)0, (u_lg)
g
->
_mmsize
);

432 
	`STAT_LONG
("Maximum ofdests", 
g
->
_maxݒfd
);

433 
	`STAT_LONG
("Maximum sequtbufwres", 
g
->
_maxwre
);

434 
	`STAT_LONG
("Sleepfter writing maximum sequential buffers",

435 
g
->
_maxwre_p
);

436 
	`__db_dl
(
dbv
,

438 (
u_lg
)
g
->
_m
);

439 
	`__db_dl_p
(
dbv
, "Requestedages found inhe cache",

440 (
u_lg
)
g
->
_che_h
, 
	`DB_PCT
(

441 
g
->
_che_h
, g->_che_h + g->
_che_miss
), 
NULL
);

442 
	`__db_dl
(
dbv
, "Requestedagesot found inhe cache",

443 (
u_lg
)
g
->
_che_miss
);

444 
	`__db_dl
(
dbv
,

445 "Paged ithche", (
u_lg
)
g
->
_ge_
);

446 
	`__db_dl
(
dbv
, "Pagead ithche", (
u_lg
)
g
->
_ge_
);

447 
	`__db_dl
(
dbv
, "Pages written fromhe cacheohe backing file",

448 (
u_lg
)
g
->
_ge_out
);

449 
	`__db_dl
(
dbv
, "Cleanages forced fromhe cache",

450 (
u_lg
)
g
->
_ro_evi
);

451 
	`__db_dl
(
dbv
, "Dirtyages forced fromhe cache",

452 (
u_lg
)
g
->
_rw_evi
);

453 
	`__db_dl
(
dbv
, "Dirtyages written byrickle-synchread",

454 (
u_lg
)
g
->
_ge_ick
);

455 
	`__db_dl
(
dbv
, "Currentotalage count",

456 (
u_lg
)
g
->
_ges
);

457 
	`__db_dl
(
dbv
, "Current cleanage count",

458 (
u_lg
)
g
->
_ge_n
);

459 
	`__db_dl
(
dbv
, "Current dirtyage count",

460 (
u_lg
)
g
->
_ge_dty
);

461 
	`__db_dl
(
dbv
, "Number of hash buckets used forageocation",

462 (
u_lg
)
g
->
_hash_bucks
);

463 
	`__db_dl
(
dbv
,

465 (
u_lg
)
g
->
_hash_ches
);

466 
	`__db_dl
(
dbv
, "Theongest hash chain searched forage",

467 (
u_lg
)
g
->
_hash_lge
);

468 
	`__db_dl
(
dbv
,

470 (
u_lg
)
g
->
_hash_examed
);

471 
	`__db_dl_p
(
dbv
,

473 (
u_lg
)
g
->
_hash_wa
, 
	`DB_PCT
(

474 
g
->
_hash_wa
, g->_hash_wa + g->
_hash_nowa
), 
NULL
);

475 
	`__db_dl_p
(
dbv
,

477 (
u_lg
)
g
->
_hash_max_wa
, 
	`DB_PCT
(gsp->st_hash_max_wait,

478 
g
->
_hash_max_wa
 + g->
_hash_max_nowa
), 
NULL
);

479 
	`__db_dl_p
(
dbv
,

481 (
u_lg
)
g
->
_gi_wa
, 
	`DB_PCT
(gsp->st_region_wait,

482 
g
->
_gi_wa
 + g->
_gi_nowa
), 
NULL
);

483 
	`__db_dl
(
dbv
, "Theumber of buffers frozen",

484 (
u_lg
)
g
->
_mvcc_oz
);

485 
	`__db_dl
(
dbv
, "Theumber of buffershawed",

486 (
u_lg
)
g
->
_mvcc_thawed
);

487 
	`__db_dl
(
dbv
, "Theumber of frozen buffers freed",

488 (
u_lg
)
g
->
_mvcc_d
);

489 
	`__db_dl
(
dbv
, "Thnumb oglotis", (
u_lg
)
g
->
_loc
);

490 
	`__db_dl
(
dbv
,

492 (
u_lg
)
g
->
_loc_bucks
);

493 
	`__db_dl
(
dbv
,

495 (
u_lg
)
g
->
_loc_max_bucks
);

496 
	`__db_dl
(
dbv
, "Theumber ofagesxamined duringllocations",

497 (
u_lg
)
g
->
_loc_ges
);

498 
	`__db_dl
(
dbv
, "The maxumber ofagesxamined fornllocation",

499 (
u_lg
)
g
->
_loc_max_ges
);

500 
	`__db_dl
(
dbv
, "Thadwaed ogI/O", (
u_lg
)
g
->
_io_wa
);

502 
tf
 = 
f
; f !
NULL
 && *tfsp != NULL; ++tfsp) {

503 i(
	`LF_ISSET
(
DB_STAT_ALL
))

504 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

505 
	`__db_msg
(
dbv
, "Po Fe: %s", (*
tf
)->
fe_me
);

506 
	`__db_dl
(
dbv
, "Pagsize", (
u_lg
)(*
tf
)->
_gesize
);

507 
	`__db_dl
(
dbv
,

509 (
u_lg
)(*
tf
)->
_m
);

510 
	`__db_dl_p
(
dbv
, "Requestedages found inhe cache",

511 (
u_lg
)(*
tf
)->
_che_h
, 
	`DB_PCT
((*tfsp)->st_cache_hit,

512 (*
tf
)->
_che_h
 + (*tf)->
_che_miss
), 
NULL
);

513 
	`__db_dl
(
dbv
, "Requestedagesot found inhe cache",

514 (
u_lg
)(*
tf
)->
_che_miss
);

515 
	`__db_dl
(
dbv
, "Pages created inhe cache",

516 (
u_lg
)(*
tf
)->
_ge_
);

517 
	`__db_dl
(
dbv
, "Pagesead intohe cache",

518 (
u_lg
)(*
tf
)->
_ge_
);

519 
	`__db_dl
(
dbv
,

521 (
u_lg
)(*
tf
)->
_ge_out
);

524 
	`__os_u
(
dbv
, 
f
);

525 
	`__os_u
(
dbv
, 
g
);

527 
	}
}

534 
	$__memp_t_l
(
dbv
, 
ags
)

535 
DB_ENV
 *
dbv
;

536 
u_t32_t
 
ags
;

538 cڡ 
FN
 
c
[] = {

539 { 
DB_MPOOL_NOFILE
, "DB_MPOOL_NOFILE" },

540 { 
DB_MPOOL_UNLINK
, "DB_MPOOL_UNLINK" },

541 { 0, 
NULL
 }

543 
DB_MPOOL
 *
dbmp
;

544 
DB_MPOOLFILE
 *
dbm
;

545 
MPOOL
 *
mp
;

546 
roff_t
 
fm
[
FMAP_ENTRIES
 + 1];

547 
u_t32_t
 
i
, 
t
;

548 
t
;

550 
dbmp
 = 
dbv
->
mp_hd
;

551 
mp
 = 
dbmp
->
gfo
[0].
imy
;

552 
t
 = 0;

554 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

556 
	`__db_t_gfo
(
dbv
, 
dbmp
->
gfo
, "Mpo", 
ags
);

557 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

559 
	`__db_msg
(
dbv
, "MPOOL structure:");

560 
	`__mux_t_debug_sg
(

561 
dbv
, "MPOOLegi mux", 
mp
->
mtx_gi
, 
ags
);

562 
	`STAT_LSN
("Maximum checkpoLSN", &
mp
->
l
);

563 
	`STAT_ULONG
("Hashab˃rs", 
mp
->
hb_bucks
);

564 
	`STAT_ULONG
("Hashabˆa-checked", 
mp
->
ϡ_checked
);

565 
	`STAT_ULONG
("Hashab LRU cou", 
mp
->
u_cou
);

566 
	`STAT_ULONG
("Pucou", 
mp
->
put_cou
);

568 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

569 
	`__db_msg
(
dbv
, "DB_MPOOL handle information:");

570 
	`__mux_t_debug_sg
(

571 
dbv
, "DB_MPOOL hd mux", 
dbmp
->
mux
, 
ags
);

572 
	`STAT_ULONG
("Undlyg cachgis", 
mp
->
eg
);

574 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

575 
	`__db_msg
(
dbv
, "DB_MPOOLFILE structures:");

576 
t
 = 0, 
dbm
 = 
	`TAILQ_FIRST
(&
dbmp
->
dbmfq
);

577 
dbm
 !
NULL
; dbm = 
	`TAILQ_NEXT
(dbm, 
q
), ++
t
) {

578 
	`__db_msg
(
dbv
, "File #%lu: %s:er-process, %s",

579 (
u_lg
)
t
 + 1, 
	`__memp_
(
dbm
),

580 
	`F_ISSET
(
dbm
, 
MP_READONLY
) ? "readonly" : "read/write");

581 
	`STAT_ULONG
("Ren cou", 
dbm
->
f
);

582 
	`STAT_ULONG
("Pd blocken cou", 
dbm
->
f
);

583 
	`STAT_ULONG
("Cˬgth", 
dbm
->
r_n
);

584 
	`__db_t_feid
(
dbv
, 
dbm
->
feid
, "\tID");

585 
	`STAT_ULONG
("Fty", 
dbm
->
y
);

586 
	`STAT_ULONG
("LSN offt", 
dbm
->
l_offt
);

587 
	`STAT_ULONG
("Max gbys", 
dbm
->
gbys
);

588 
	`STAT_ULONG
("Max bys", 
dbm
->
bys
);

589 
	`STAT_ULONG
("Cachiܙy", 
dbm
->
iܙy
);

590 
	`STAT_POINTER
("mmddss", 
dbm
->
addr
);

591 
	`STAT_ULONG
("mmgth", 
dbm
->
n
);

592 
	`__db_ags
(
dbv
, 
NULL
, 
dbm
->
ags
, 
c
, NULL, "\tFlags");

593 
	`__db_t_fh
(
dbv
, "Fhd", 
dbm
->
fhp
, 
ags
);

596 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

597 
	`__db_msg
(
dbv
, "MPOOLFILE structures:");

598 
t
 = 0;

599 i((
t
 = 
	`__memp_wk_fes
(
dbv
,

600 
mp
, 
__memp_t_fes
, 
fm
, &
t
, 
ags
)) != 0)

601  (
t
);

602 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

604 i(
t
 < 
FMAP_ENTRIES
)

605 
fm
[
t
] = 
INVALID_ROFF
;

607 
fm
[
FMAP_ENTRIES
] = 
INVALID_ROFF
;

610 
i
 = 0; i < 
mp
->
eg
; ++i) {

611 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

612 
	`__db_msg
(
dbv
, "Cach#%d:", 
i
 + 1);

613 i((
t
 = 
	`__memp_t_hash
(

614 
dbv
, 
dbmp
, &dbmp->
gfo
[
i
], 
fm
, 
ags
)) != 0)

618  (
t
);

619 
	}
}

622 
	$__memp_t_fes
(
dbv
, 
m
, 
gp
, 
coup
, 
ags
)

623 
DB_ENV
 *
dbv
;

624 
MPOOLFILE
 *
m
;

625 *
gp
;

626 
u_t32_t
 *
coup
;

627 
u_t32_t
 
ags
;

629 
roff_t
 *
fm
;

630 
DB_MPOOL
 *
dbmp
;

631 
u_t32_t
 
m_ags
;

632 cڡ 
FN
 

[] = {

633 { 
MP_CAN_MMAP
, "MP_CAN_MMAP" },

634 { 
MP_DIRECT
, "MP_DIRECT" },

635 { 
MP_EXTENT
, "MP_EXTENT" },

636 { 
MP_FAKE_DEADFILE
, "deadfile" },

637 { 
MP_FAKE_FILEWRITTEN
, "file written" },

638 { 
MP_FAKE_NB
, "no backing file" },

639 { 
MP_FAKE_UOC
, "unlink on close" },

640 { 
MP_NOT_DURABLE
, "not durable" },

641 { 
MP_TEMP
, "MP_TEMP" },

642 { 0, 
NULL
 }

645 
dbmp
 = 
dbv
->
mp_hd
;

646 
fm
 = 
gp
;

648 
	`__db_msg
(
dbv
, "F#%d: %s", *
coup
 + 1, 
	`__memp_s
(
dbmp
, 
m
));

649 
	`__mux_t_debug_sg
(
dbv
, "Mux", 
m
->
mux
, 
ags
);

651 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

652 
	`STAT_ULONG
("Ren cou", 
m
->
mpf_t
);

653 
	`STAT_ULONG
("Block cou", 
m
->
block_t
);

654 
	`STAT_ULONG
("Laagnumb", 
m
->
ϡ_pgno
);

655 
	`STAT_ULONG
("Origaagnumb", 
m
->
ig_ϡ_pgno
);

656 
	`STAT_ULONG
("Maximumagnumb", 
m
->
maxpgno
);

657 
	`STAT_LONG
("Ty", 
m
->
y
);

658 
	`STAT_LONG
("Priܙy", 
m
->
iܙy
);

659 
	`STAT_LONG
("Page'LSN offt", 
m
->
l_off
);

660 
	`STAT_LONG
("Page'ngth", 
m
->
r_n
);

662 
	`__db_t_feid
(
dbv
,

663 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
feid_off
), "\tID");

665 
m_ags
 = 0;

666 i(
m
->
ddfe
)

667 
	`FLD_SET
(
m_ags
, 
MP_FAKE_DEADFILE
);

668 i(
m
->
fe_wrn
)

669 
	`FLD_SET
(
m_ags
, 
MP_FAKE_FILEWRITTEN
);

670 i(
m
->
no_backg_fe
)

671 
	`FLD_SET
(
m_ags
, 
MP_FAKE_NB
);

672 i(
m
->
uƚk__o
)

673 
	`FLD_SET
(
m_ags
, 
MP_FAKE_UOC
);

674 
	`__db_ags
(
dbv
, 
NULL
, 
m_ags
, 

, NULL, "\tFlags");

676 i(*
coup
 < 
FMAP_ENTRIES
)

677 
fm
[*
coup
] = 
	`R_OFFSET
(
dbmp
->
gfo
, 
m
);

678 (*
coup
)++;

679 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

681 
	}
}

688 
	$__memp_t_hash
(
dbv
, 
dbmp
, 
gfo
, 
fm
, 
ags
)

689 
DB_ENV
 *
dbv
;

690 
DB_MPOOL
 *
dbmp
;

691 
REGINFO
 *
gfo
;

692 
roff_t
 *
fm
;

693 
u_t32_t
 
ags
;

695 
BH
 *
bhp
, *
vbhp
;

696 
DB_MPOOL_HASH
 *
hp
;

697 
DB_MSGBUF
 
mb
;

698 
MPOOL
 *
c_mp
;

699 
u_t32_t
 
buck
;

701 
c_mp
 = 
gfo
->
imy
;

702 
	`DB_MSGBUF_INIT
(&
mb
);

705 
	`__db_msg
(
dbv
,

706 "BH hashab (%lu hash sls)", (
u_lg
)
c_mp
->
hb_bucks
);

707 
	`__db_msg
(
dbv
, "bucket #:riority, I/O wait, [mutex]");

708 
	`__db_msg
(
dbv
, "\tpageno, file,ef, LSN,ddress,riority, flags");

710 
hp
 = 
	`R_ADDR
(
gfo
, 
c_mp
->
hb
),

711 
buck
 = 0; buck < 
c_mp
->
hb_bucks
; ++
hp
, ++bucket) {

712 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

713 i((
bhp
 = 
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
)!
NULL
) {

714 
	`__db_msgadd
(
dbv
, &
mb
,

716 (
u_lg
)
buck
, (u_lg)
hp
->
hash_io_wa
,

717 (
u_lg
)
hp
->
hash_iܙy
,

718 (
u_lg
)
hp
->
hash_ge_dty
);

719 i(
hp
->
hash_oz
 != 0)

720 
	`__db_msgadd
(
dbv
, &
mb
, "(MVCC %lu/%lu/%lu) ",

721 (
u_lg
)
hp
->
hash_oz
,

722 (
u_lg
)
hp
->
hash_thawed
,

723 (
u_lg
)
hp
->
hash_oz_d
);

724 
	`__mux_t_debug_s
(

725 
dbv
, &
mb
, 
hp
->
mtx_hash
, 
ags
);

726 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

728 ; 
bhp
 !
NULL
; bh
	`SH_TAILQ_NEXT
(bhp, 
hq
, 
__bh
)) {

729 
	`__memp_t_bh
(
dbv
, 
dbmp
, 
NULL
, 
bhp
, 
fm
);

732 
vbhp
 = 
	`SH_CHAIN_PREV
(
bhp
, 
vc
, 
__bh
);

733 
vbhp
 !
NULL
;

734 
vbhp
 = 
	`SH_CHAIN_PREV
(vbhp, 
vc
, 
__bh
)) {

735 
	`__memp_t_bh
(
dbv
, 
dbmp
,

736 "ext:\t", 
vbhp
, 
fm
);

739 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

743 
	}
}

750 
	$__memp_t_bh
(
dbv
, 
dbmp
, 
efix
, 
bhp
, 
fm
)

751 
DB_ENV
 *
dbv
;

752 
DB_MPOOL
 *
dbmp
;

753 cڡ *
efix
;

754 
BH
 *
bhp
;

755 
roff_t
 *
fm
;

757 cڡ 
FN
 

[] = {

758 { 
BH_CALLPGIN
, "callpgin" },

759 { 
BH_DIRTY
, "dirty" },

760 { 
BH_DIRTY_CREATE
, "created" },

761 { 
BH_DISCARD
, "discard" },

762 { 
BH_FREED
, "freed" },

763 { 
BH_FROZEN
, "frozen" },

764 { 
BH_LOCKED
, "locked" },

765 { 
BH_TRASH
, "trash" },

766 { 0, 
NULL
 }

768 
DB_MSGBUF
 
mb
;

769 
i
;

771 
	`DB_MSGBUF_INIT
(&
mb
);

773 i(
efix
 !
NULL
)

774 
	`__db_msgadd
(
dbv
, &
mb
, "%s", 
efix
);

776 
	`__db_msgadd
(
dbv
, &
mb
, "\t");

778 
i
 = 0; i < 
FMAP_ENTRIES
; ++i)

779 i(
fm
[
i
] =
INVALID_ROFF
 || fm[i] =
bhp
->
mf_offt
)

782 i(
fm
[
i
] =
INVALID_ROFF
)

783 
	`__db_msgadd
(
dbv
, &
mb
, "%5lu, %lu, ",

784 (
u_lg
)
bhp
->
pgno
, (u_lg)bhp->
mf_offt
);

786 
	`__db_msgadd
(

787 
dbv
, &
mb
, "%5lu, #%d, ", (
u_lg
)
bhp
->
pgno
, 
i
 + 1);

789 
	`__db_msgadd
(
dbv
, &
mb
, "%2lu%s, %lu/%lu", (
u_lg
)
bhp
->
f
,

790 
bhp
->
f_sync
 == 0 ? "" : " (sync-lock)",

791 
	`F_ISSET
(
bhp
, 
BH_FROZEN
? 0 : (
u_lg
)
	`LSN
(bhp->
buf
).
fe
,

792 
	`F_ISSET
(
bhp
, 
BH_FROZEN
? 0 : (
u_lg
)
	`LSN
(bhp->
buf
).
offt
);

793 i(
bhp
->
td_off
 !
INVALID_ROFF
)

794 
	`__db_msgadd
(
dbv
, &
mb
, " (@%lu/%lu)",

795 (
u_lg
)
	`VISIBLE_LSN
(
dbv
, 
bhp
)->
fe
,

796 (
u_lg
)
	`VISIBLE_LSN
(
dbv
, 
bhp
)->
offt
);

797 
	`__db_msgadd
(
dbv
, &
mb
, ", %#08lx, %lu",

798 (
u_lg
)
	`R_OFFSET
(
dbmp
->
gfo
, 
bhp
), (u_lg)bhp->
iܙy
);

799 
	`__db_ags
(
dbv
, &
mb
, 
bhp
->
ags
, 

, " (", ")");

800 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

801 
	}
}

808 
	$__memp__wa
(
dbv
, 
gfo
, 
mp
, 
m
, 
ags
)

809 
DB_ENV
 *
dbv
;

810 
REGINFO
 *
gfo
;

811 
MPOOL
 *
mp
;

812 
DB_MPOOL_STAT
 *
m
;

813 
u_t32_t
 
ags
;

815 
DB_MPOOL_HASH
 *
hp
;

816 
u_t32_t
 
i
, 
tmp_nowa
, 
tmp_wa
;

818 
m
->
_hash_max_wa
 = 0;

819 
hp
 = 
	`R_ADDR
(
gfo
, 
mp
->
hb
);

820 
i
 = 0; i < 
mp
->
hb_bucks
; i++, 
hp
++) {

821 
	`__mux_t_wa_fo
(

822 
dbv
, 
hp
->
mtx_hash
, &
tmp_wa
, &
tmp_nowa
);

823 
m
->
_hash_nowa
 +
tmp_nowa
;

824 
m
->
_hash_wa
 +
tmp_wa
;

825 i(
tmp_wa
 > 
m
->
_hash_max_wa
) {

826 
m
->
_hash_max_wa
 = 
tmp_wa
;

827 
m
->
_hash_max_nowa
 = 
tmp_nowa
;

829 i(
	`LF_ISSET
(
DB_STAT_CLEAR
 |

830 
DB_STAT_SUBSYSTEM
=
DB_STAT_CLEAR
)

831 
	`__mux_r
(
dbv
, 
hp
->
mtx_hash
);

833 
m
->
_io_wa
 +
hp
->
hash_io_wa
;

834 
m
->
_mvcc_oz
 +
hp
->
hash_oz
;

835 
m
->
_mvcc_thawed
 +
hp
->
hash_thawed
;

836 
m
->
_mvcc_d
 +
hp
->
hash_oz_d
;

837 i(
	`LF_ISSET
(
DB_STAT_CLEAR
)) {

838 
hp
->
hash_io_wa
 = 0;

839 
hp
->
hash_oz
 = 0;

840 
hp
->
hash_thawed
 = 0;

841 
hp
->
hash_oz_d
 = 0;

844 
	}
}

849 
	$__memp__
(
dbv
, 
gp
, 
fp
, 
ags
)

850 
DB_ENV
 *
dbv
;

851 
DB_MPOOL_STAT
 **
gp
;

852 
DB_MPOOL_FSTAT
 ***
fp
;

853 
u_t32_t
 
ags
;

855 
	`COMPQUIET
(
gp
, 
NULL
);

856 
	`COMPQUIET
(
fp
, 
NULL
);

857 
	`COMPQUIET
(
ags
, 0);

859  (
	`__db__n_but
(
dbv
));

860 
	}
}

863 
	$__memp__t_
(
dbv
, 
ags
)

864 
DB_ENV
 *
dbv
;

865 
u_t32_t
 
ags
;

867 
	`COMPQUIET
(
ags
, 0);

869  (
	`__db__n_but
(
dbv
));

870 
	}
}

880 
	$__memp__hash
(
gfo
, 
mp
, 
dtyp
)

881 
REGINFO
 *
gfo
;

882 
MPOOL
 *
mp
;

883 
u_t32_t
 *
dtyp
;

885 
DB_MPOOL_HASH
 *
hp
;

886 
u_t32_t
 
dty
, 
i
;

888 
hp
 = 
	`R_ADDR
(
gfo
, 
mp
->
hb
);

889 
i
 = 0, 
dty
 = 0; i < 
mp
->
hb_bucks
; i++, 
hp
++)

890 
dty
 +
hp
->
hash_ge_dty
;

891 *
dtyp
 = 
dty
;

892 
	}
}

	@../mp/mp_sync.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/mp.h
"

14 
	~"dbc/db_ge.h
"

15 
	~"dbc/hash.h
"

18 
DB_MPOOL_HASH
 *
	mack_hp
;

20 
roff_t
 
	mack_off
;

21 
db_pgno_t
 
	mack_pgno
;

22 } 
	tBH_TRACK
;

24 
__bhcmp
 
__P
((const *, const *));

25 
__memp_o_ush_fes
 
__P
((
DB_ENV
 *, ));

26 
__memp_sync_fes
 
__P
((
DB_ENV
 *));

27 
__memp_sync_fe
 
__P
((
DB_ENV
 *,

28 
MPOOLFILE
 *, *, 
u_t32_t
 *, u_int32_t));

37 
	$__memp_wk_fes
(
dbv
, 
mp
, 
func
, 
g
, 
coup
, 
ags
)

38 
DB_ENV
 *
dbv
;

39 
MPOOL
 *
mp
;

40 (*
func
)
	`__P
((
DB_ENV
 *, 
MPOOLFILE
 *, *, 
u_t32_t
 *, u_int32_t));

41 *
g
;

42 
u_t32_t
 *
coup
;

43 
u_t32_t
 
ags
;

45 
DB_MPOOL
 *
dbmp
;

46 
DB_MPOOL_HASH
 *
hp
;

47 
MPOOLFILE
 *
m
;

48 
i
, 
t
, 
t_t
;

50 
dbmp
 = 
dbv
->
mp_hd
;

51 
t
 = 0;

53 
hp
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->
ab
);

54 
i
 = 0; i < 
MPOOL_FILE_BUCKETS
; i++, 
hp
++) {

55 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

56 
	`SH_TAILQ_FOREACH
(
m
, &
hp
->
hash_buck
, 
q
, 
__mpofe
) {

57 i((
t_t
 = 
	`func
(
dbv
,

58 
m
, 
g
, 
coup
, 
ags
)!0 && 
t
 == 0)

59 
t
 = 
t_t
;

60 i(
t
 !0 && !
	`LF_ISSET
(
DB_STAT_NOERROR
))

63 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

64 i(
t
 !0 && !
	`LF_ISSET
(
DB_STAT_NOERROR
))

67  (
t
);

68 
	}
}

77 
	$__memp_sync_
(
dbv
, 
lp
)

78 
DB_ENV
 *
dbv
;

79 
DB_LSN
 *
lp
;

81 
DB_THREAD_INFO
 *

;

82 
t
;

84 
	`PANIC_CHECK
(
dbv
);

85 
	`ENV_REQUIRES_CONFIG
(
dbv
,

86 
dbv
->
mp_hd
, "memp_sync", 
DB_INIT_MPOOL
);

92 i(
lp
 !
NULL
)

93 
	`ENV_REQUIRES_CONFIG
(
dbv
,

94 
dbv
->
lg_hd
, "memp_sync", 
DB_INIT_LOG
);

96 
	`ENV_ENTER
(
dbv
, 

);

97 
	`REPLICATION_WRAP
(
dbv
, (
	`__memp_sync
(dbv, 
DB_SYNC_CACHE
, 
lp
)), 
t
);

98 
	`ENV_LEAVE
(
dbv
, 

);

99  (
t
);

100 
	}
}

109 
	$__memp_sync
(
dbv
, 
ags
, 
lp
)

110 
DB_ENV
 *
dbv
;

111 
u_t32_t
 
ags
;

112 
DB_LSN
 *
lp
;

114 
DB_MPOOL
 *
dbmp
;

115 
MPOOL
 *
mp
;

116 
ued
, 
t
;

118 
dbmp
 = 
dbv
->
mp_hd
;

119 
mp
 = 
dbmp
->
gfo
[0].
imy
;

122 i(
lp
 !
NULL
) {

123 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

124 i(
	`LOG_COMPARE
(
lp
, &
mp
->
l
) <= 0) {

125 *
lp
 = 
mp
->
l
;

127 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

130 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

133 i((
t
 =

134 
	`__memp_sync_t
(
dbv
, 
NULL
, 0, 
ags
, NULL, &
ued
)) != 0)

135  (
t
);

137 i(!
ued
 && 
lp
 !
NULL
) {

138 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

139 i(
	`LOG_COMPARE
(
lp
, &
mp
->
l
) > 0)

140 
mp
->
l
 = *
lp
;

141 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

145 
	}
}

154 
	$__memp_fsync_
(
dbm
)

155 
DB_MPOOLFILE
 *
dbm
;

157 
DB_ENV
 *
dbv
;

158 
DB_THREAD_INFO
 *

;

159 
t
;

161 
dbv
 = 
dbm
->dbenv;

163 
	`PANIC_CHECK
(
dbv
);

164 
	`MPF_ILLEGAL_BEFORE_OPEN
(
dbm
, "DB_MPOOLFILE->sync");

166 
	`ENV_ENTER
(
dbv
, 

);

167 
	`REPLICATION_WRAP
(
dbv
, (
	`__memp_fsync
(
dbm
)), 
t
);

168 
	`ENV_LEAVE
(
dbv
, 

);

169  (
t
);

170 
	}
}

179 
	$__memp_fsync
(
dbm
)

180 
DB_MPOOLFILE
 *
dbm
;

182 
MPOOLFILE
 *
m
;

184 
m
 = 
dbm
->mfp;

192 i(
	`F_ISSET
(
dbm
, 
MP_READONLY
))

195 i(
	`F_ISSET
(
dbm
->
m
, 
MP_TEMP
|| dbm->m->
no_backg_fe
)

198 i(
m
->
fe_wrn
 == 0)

201  (
	`__memp_sync_t
(

202 
dbm
->
dbv
, dbm, 0, 
DB_SYNC_FILE
, 
NULL
, NULL));

203 
	}
}

212 
	$__mp_xxx_fh
(
dbm
, 
fhp
)

213 
DB_MPOOLFILE
 *
dbm
;

214 
DB_FH
 **
fhp
;

216 
t
;

232 i((*
fhp
 = 
dbm
->fhp!
NULL
)

235 i((
t
 = 
	`__memp_sync_t
(

236 
dbm
->
dbv
, dbm, 0, 
DB_SYNC_FILE
, 
NULL
, NULL)) == 0)

237 *
fhp
 = 
dbm
->fhp;

238  (
t
);

239 
	}
}

249 
	$__memp_sync_t
(
dbv
, 
dbm
, 
ick_max
, 
ags
, 
wre_tٮp
, 
uedp
)

250 
DB_ENV
 *
dbv
;

251 
DB_MPOOLFILE
 *
dbm
;

252 
u_t32_t
 
ick_max
, 
ags
, *
wre_tٮp
;

253 *
uedp
;

255 
BH
 *
bhp
;

256 
BH_TRACK
 *
bhy
;

257 
DB_MPOOL
 *
dbmp
;

258 
DB_MPOOL_HASH
 *
hp
;

259 
MPOOL
 *
c_mp
, *
mp
;

260 
MPOOLFILE
 *
m
;

261 
db_mux_t
 
mux
;

262 
roff_t
 
ϡ_mf_offt
;

263 
u_t32_t
 
_t
, 
_max
, 
dty
, 
i
, 
n_che
, 
mag
, 
wre_tٮ
;

264 
fet
, 
maxݒfd
, 
ss
, 
qued_wre
, 
t
, 
t_t
;

265 
wa_t
, 
wre_t
;

267 
dbmp
 = 
dbv
->
mp_hd
;

268 
mp
 = 
dbmp
->
gfo
[0].
imy
;

269 
ϡ_mf_offt
 = 
INVALID_ROFF
;

270 
fet
 = 
ss
 = 
wre_tٮ
 = 0;

272 i(
wre_tٮp
 !
NULL
)

273 *
wre_tٮp
 = 0;

274 i(
uedp
 !
NULL
)

275 *
uedp
 = 0;

283 
qued_wre
 = 
	`LF_ISSET
(
DB_SYNC_CACHE
 |

284 
DB_SYNC_CHECKPOINT
 | 
DB_SYNC_FILE
 | 
DB_SYNC_QUEUE_EXTENT
);

287 
	`MPOOL_SYSTEM_LOCK
(
dbv
);

288 
maxݒfd
 = 
mp
->
mp_maxݒfd
;

289 
	`MPOOL_SYSTEM_UNLOCK
(
dbv
);

292 
_max
 = 
mp
->
eg
 * mp->
hb_bucks
;

293 i((
t
 =

294 
	`__os_mloc
(
dbv
, 
_max
 * (
BH_TRACK
), &
bhy
)) != 0)

295  (
t
);

302 
_t
 = 0, 
n_che
 = 0;_ch< 
mp
->
eg
; ++n_cache) {

303 
c_mp
 = 
dbmp
->
gfo
[
n_che
].
imy
;

305 
hp
 = 
	`R_ADDR
(&
dbmp
->
gfo
[
n_che
], 
c_mp
->
hb
);

306 
i
 = 0; i < 
c_mp
->
hb_bucks
; i++, 
hp
++) {

314 #ifde
DIAGNOSTIC


315 i(
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
, 
__bh
=
NULL
)

317 i(
hp
->
hash_ge_dty
 == 0)

321 
dty
 = 0;

322 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

323 
	`SH_TAILQ_FOREACH
(
bhp
, &
hp
->
hash_buck
, 
hq
, 
__bh
) {

325 i(!
	`F_ISSET
(
bhp
, 
BH_DIRTY
))

328 
dty
++;

329 
m
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
bhp
->
mf_offt
);

335 i(
m
->
no_backg_fe
)

337 i(!
	`LF_ISSET
(
DB_SYNC_FILE
) &&

338 
	`F_ISSET
(
m
, 
MP_TEMP
))

345 i(
	`LF_ISSET
(
DB_SYNC_CHECKPOINT
) &&

346 
m
->
l_off
 =
DB_LSN_OFF_NOTSET
)

353 i(
	`LF_ISSET
(
DB_SYNC_QUEUE_EXTENT
) &&

354 !
	`F_ISSET
(
m
, 
MP_EXTENT
))

361 i(
dbm
 !
NULL
 && 
m
 != dbmfp->mfp)

365 
bhy
[
_t
].
ack_hp
 = 
hp
;

366 
bhy
[
_t
].
ack_pgno
 = 
bhp
->
pgno
;

367 
bhy
[
_t
].
ack_off
 = 
bhp
->
mf_offt
;

368 
_t
++;

376 i(
_t
 >
_max
) {

377 i((
t
 = 
	`__os_loc
(
dbv
,

378 (
_max
 * 2* (
BH_TRACK
),

379 &
bhy
)) != 0)

381 
_max
 *= 2;

384 
	`DB_ASSERT
(
dbv
, 
dty
 =
hp
->
hash_ge_dty
);

385 i(
dty
 !
hp
->
hash_ge_dty
) {

386 
	`__db_rx
(
dbv
,

388 (
u_lg
)
hp
->
hash_ge_dty
, (u_lg)
dty
);

389 
hp
->
hash_ge_dty
 = 
dty
;

391 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

393 i(
t
 != 0)

394 
r
;

397 i(
	`LF_ISSET
(
DB_SYNC_INTERRUPT_OK
&& 
	`FLD_ISSET
(

398 
mp
->
cfig_ags
, 
DB_MEMP_SYNC_INTERRUPT
)) {

399 i(
uedp
 !
NULL
)

400 *
uedp
 = 1;

401 
r
;

407 i(
_t
 == 0)

408 
de
;

415 i(
_t
 > 1)

416 
	`qst
(
bhy
, 
_t
, (
BH_TRACK
), 
__bhcmp
);

422 i(
	`LF_ISSET
(
DB_SYNC_TRICKLE
&& 
_t
 > 
ick_max
)

423 
_t
 = 
ick_max
;

433 i(
	`LOGGING_ON
(
dbv
&& (
t
 = 
	`__log_ush
(dbv, 
NULL
)) != 0)

434 
r
;

441 
i
 = 
ss
 = 
wre_t
 = 0, 
mag
 = 
_t
;emaining > 0; ++i) {

442 i(
i
 >
_t
) {

443 
i
 = 0;

444 ++
ss
;

445 
	`__os_p
(
dbv
, 1, 0);

447 i((
hp
 = 
bhy
[
i
].
ack_hp
=
NULL
)

451 
mux
 = 
hp
->
mtx_hash
;

452 
	`MUTEX_LOCK
(
dbv
, 
mux
);

453 
	`SH_TAILQ_FOREACH
(
bhp
, &
hp
->
hash_buck
, 
hq
, 
__bh
)

454 i(
bhp
->
pgno
 =
bhy
[
i
].
ack_pgno
 &&

455 
bhp
->
mf_offt
 =
bhy
[
i
].
ack_off
)

465 i(
bhp
 =
NULL
 || !
	`F_ISSET
(bhp, 
BH_DIRTY
)) {

466 
	`MUTEX_UNLOCK
(
dbv
, 
mux
);

467 --
mag
;

468 
bhy
[
i
].
ack_hp
 = 
NULL
;

483 i(
	`F_ISSET
(
bhp
, 
BH_LOCKED
|| (bhp->
f
 !0 && 
ss
 < 2)) {

484 
	`MUTEX_UNLOCK
(
dbv
, 
mux
);

485 i(!
qued_wre
) {

486 --
mag
;

487 
bhy
[
i
].
ack_hp
 = 
NULL
;

493 ++
bhp
->
f
;

494 
	`F_SET
(
bhp
, 
BH_LOCKED
);

511 
bhp
->
f_sync
 = bhp->
f
 - 1;

512 i(
bhp
->
f_sync
 != 0) {

513 
	`MUTEX_UNLOCK
(
dbv
, 
mux
);

514 
wa_t
 = 1;

515 
bhp
->
f_sync
 !0 && 
wa_t
 < 4; ++wait_cnt)

516 
	`__os_p
(
dbv
, 1, 0);

517 
	`MUTEX_LOCK
(
dbv
, 
mux
);

524 i(
maxݒfd
 !0 && 
bhp
->
mf_offt
 !
ϡ_mf_offt
) {

525 i(++
fet
 >
maxݒfd
) {

526 
fet
 = 0;

527 i((
t_t
 = 
	`__memp_o_ush_fes
(

528 
dbv
, 1)!0 && 
t
 == 0)

529 
t
 = 
t_t
;

531 
ϡ_mf_offt
 = 
bhp
->
mf_offt
;

538 i(
bhp
->
f_sync
 == 0) {

539 --
mag
;

540 
bhy
[
i
].
ack_hp
 = 
NULL
;

547 i(
bhp
->
f_sync
 =0 && 
	`F_ISSET
(bhp, 
BH_DIRTY
)) {

548 
m
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
bhp
->
mf_offt
);

549 i((
t_t
 =

550 
	`__memp_bhwre
(
dbmp
, 
hp
, 
m
, 
bhp
, 1)) == 0) {

551 ++
wre_t
;

552 ++
wre_tٮ
;

554 i(
t
 == 0)

555 
t
 = 
t_t
;

556 
__db_rx


557 (
dbv
, "%s: unableo flushage: %lu",

558 
	`__memp_s
(
dbmp
, 
m
), (
u_lg
)
bhp
->
pgno
);

568 i(
	`F_ISSET
(
bhp
, 
BH_LOCKED
))

569 
	`F_CLR
(
bhp
, 
BH_LOCKED
);

575 
bhp
->
f_sync
 = 0;

578 --
bhp
->
f
;

584 i(
	`F_ISSET
(
hp
, 
IO_WAITER
)) {

585 
	`F_CLR
(
hp
, 
IO_WAITER
);

586 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_io
);

590 
	`MUTEX_UNLOCK
(
dbv
, 
mux
);

593 i(
	`LF_ISSET
(
DB_SYNC_INTERRUPT_OK
) &&

594 
	`FLD_ISSET
(
mp
->
cfig_ags
, 
DB_MEMP_SYNC_INTERRUPT
)) {

595 i(
uedp
 !
NULL
)

596 *
uedp
 = 1;

597 
r
;

606 i(!
	`LF_ISSET
(
DB_SYNC_SUPPRESS_WRITE
) &&

607 !
	`FLD_ISSET
(
mp
->
cfig_ags
, 
DB_MEMP_SUPPRESS_WRITE
) &&

608 
mp
->
mp_maxwre
 !0 && 
wre_t
 >= mp->mp_maxwrite) {

609 
wre_t
 = 0;

610 
	`__os_p
(

611 
dbv
, 0, (
u_lg
)
mp
->
mp_maxwre_p
);

615 
de
:

622 i(
t
 =0 && 
qued_wre
) {

623 i(
dbm
 =
NULL
)

624 
t
 = 
	`__memp_sync_fes
(
dbv
);

626 
t
 = 
	`__os_fsync
(
dbv
, 
dbm
->
fhp
);

630 i((
t_t
 = 
	`__memp_o_ush_fes
(
dbv
, 0)!0 && 
t
 == 0)

631 
t
 = 
t_t
;

633 
r
: 
	`__os_
(
dbv
, 
bhy
);

634 i(
wre_tٮp
 !
NULL
)

635 *
wre_tٮp
 = 
wre_tٮ
;

637  (
t
);

638 
	}
}

641 
	$__memp_sync_fe
(
dbv
, 
m
, 
gp
, 
coup
, 
ags
)

642 
DB_ENV
 *
dbv
;

643 
MPOOLFILE
 *
m
;

644 *
gp
;

645 
u_t32_t
 *
coup
;

646 
u_t32_t
 
ags
;

648 
DB_MPOOL
 *
dbmp
;

649 
DB_MPOOLFILE
 *
dbm
;

650 
t
, 
t_t
;

652 
	`COMPQUIET
(
coup
, 
NULL
);

653 
	`COMPQUIET
(
ags
, 0);

655 i(!
m
->
fe_wrn
 || m->
no_backg_fe
 ||

656 
m
->
ddfe
 || 
	`F_ISSET
(m, 
MP_TEMP
))

678 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

679 i(!
m
->
fe_wrn
 || m->
ddfe
) {

680 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

683 ++
m
->
mpf_t
;

684 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

690 
dbmp
 = 
dbv
->
mp_hd
;

691 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

692 
	`TAILQ_FOREACH
(
dbm
, &
dbmp
->
dbmfq
, 
q
) {

693 i(
dbm
->
m
 !m || 
	`F_ISSET
(dbm, 
MP_READONLY
))

700 ++
dbm
->
f
;

703 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

706 i(
dbm
 =
NULL
) {

707 i((
t
 = 
	`__memp_mf_sync
(
dbmp
, 
m
, 1)) != 0) {

708 
	`__db_r
(
dbv
, 
t
,

710 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
th_off
));

713 
t
 = 
	`__os_fsync
(
dbv
, 
dbm
->
fhp
);

719 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

735 i(
m
->
mpf_t
 == 1 || (mfp->mpf_cnt == 2 &&

736 
dbm
 !
NULL
 && 
	`F_ISSET
(dbm, 
MP_FLUSH
))) {

737 
m
->
fe_wrn
 = 0;

747 i(
m
->
mpf_t
 =1 && m->
block_t
 == 0)

748 *(*)
gp
 = 1;

758 i(
dbm
 !
NULL
 && (
t_t
 = 
	`__memp_fo
(dbm, 0)!0 && 
t
 == 0)

759 
t
 = 
t_t
;

761 --
m
->
mpf_t
;

764 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

765  (
t
);

766 
	}
}

773 
	$__memp_sync_fes
(
dbv
)

774 
DB_ENV
 *
dbv
;

776 
DB_MPOOL
 *
dbmp
;

777 
DB_MPOOL_HASH
 *
hp
;

778 
MPOOL
 *
mp
;

779 
MPOOLFILE
 *
m
, *
xt_m
;

780 
i
, 
ed_disrd_ss
, 
t
;

782 
dbmp
 = 
dbv
->
mp_hd
;

783 
mp
 = 
dbmp
->
gfo
[0].
imy
;

784 
ed_disrd_ss
 = 
t
 = 0;

786 
t
 = 
	`__memp_wk_fes
(
dbv
,

787 
mp
, 
__memp_sync_fe
, &
ed_disrd_ss
, 0, 
DB_STAT_NOERROR
);

793 i(!
ed_disrd_ss
)

794  (
t
);

796 
hp
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->
ab
);

797 
i
 = 0; i < 
MPOOL_FILE_BUCKETS
; i++, 
hp
++) {

798 
y
: 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

799 
m
 = 
	`SH_TAILQ_FIRST
(&
hp
->
hash_buck
,

800 
__mpofe
); 
m
 !
NULL
; m = 
xt_m
) {

801 
xt_m
 = 
	`SH_TAILQ_NEXT
(
m
, 
q
, 
__mpofe
);

807 i(
m
->
ddfe
 ||

808 
m
->
block_t
 !0 || m->
mpf_t
 != 0)

811 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

812 i(!
m
->
ddfe
 &&

813 
m
->
block_t
 =0 && m->
mpf_t
 == 0) {

814 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

815 ()
	`__memp_mf_disrd
(
dbmp
, 
m
);

816 
y
;

818 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

820 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

822  (
t
);

823 
	}
}

832 
	$__memp_mf_sync
(
dbmp
, 
m
, 
locked
)

833 
DB_MPOOL
 *
dbmp
;

834 
MPOOLFILE
 *
m
;

835 
locked
;

837 
DB_ENV
 *
dbv
;

838 
DB_FH
 *
fhp
;

839 
DB_MPOOL_HASH
 *
hp
;

840 
MPOOL
 *
mp
;

841 
t
, 
t_t
;

842 *
h
;

844 
	`COMPQUIET
(
hp
, 
NULL
);

845 
dbv
 = 
dbmp
->dbenv;

851 i(!
locked
) {

852 
mp
 = 
dbmp
->
gfo
[0].
imy
;

853 
hp
 = 
	`R_ADDR
(
dbmp
->
gfo
, 
mp
->
ab
);

854 
hp
 +
	`FNBUCKET
(

855 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
feid_off
), 
DB_FILE_ID_LEN
);

856 
	`MUTEX_LOCK
(
dbv
, 
hp
->
mtx_hash
);

859 i((
t
 = 
	`__db_ame
(
dbv
, 
DB_APP_DATA
,

860 
	`R_ADDR
(
dbmp
->
gfo
, 
m
->
th_off
), 0, 
NULL
, &
h
)) == 0) {

861 i((
t
 = 
	`__os_ݒ
(
dbv
, 
h
, 0, 0, 0, &
fhp
)) == 0) {

862 
t
 = 
	`__os_fsync
(
dbv
, 
fhp
);

863 i((
t_t
 =

864 
	`__os_ohd
(
dbv
, 
fhp
)!0 && 
t
 == 0)

865 
t
 = 
t_t
;

867 
	`__os_
(
dbv
, 
h
);

870 i(!
locked
)

871 
	`MUTEX_UNLOCK
(
dbv
, 
hp
->
mtx_hash
);

873  (
t
);

874 
	}
}

881 
	$__memp_o_ush_fes
(
dbv
, 
dosync
)

882 
DB_ENV
 *
dbv
;

883 
dosync
;

885 
DB_MPOOL
 *
dbmp
;

886 
DB_MPOOLFILE
 *
dbm
;

887 
MPOOLFILE
 *
m
;

888 
t
;

890 
dbmp
 = 
dbv
->
mp_hd
;

905 
y
: 
	`MUTEX_LOCK
(
dbv
, 
dbmp
->
mux
);

906 
	`TAILQ_FOREACH
(
dbm
, &
dbmp
->
dbmfq
, 
q
)

907 i(
	`F_ISSET
(
dbm
, 
MP_FLUSH
)) {

908 
	`F_CLR
(
dbm
, 
MP_FLUSH
);

909 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

910 i(
dosync
) {

918 
m
 = 
dbm
->mfp;

919 i(
m
->
mpf_t
 == 1) {

920 
	`MUTEX_LOCK
(
dbv
, 
m
->
mux
);

921 i(
m
->
mpf_t
 == 1)

922 
m
->
fe_wrn
 = 0;

923 
	`MUTEX_UNLOCK
(
dbv
, 
m
->
mux
);

925 i((
t
 = 
	`__os_fsync
(
dbv
, 
dbm
->
fhp
)) != 0)

926  (
t
);

928 i((
t
 = 
	`__memp_fo
(
dbm
, 0)) != 0)

929  (
t
);

930 
y
;

932 
	`MUTEX_UNLOCK
(
dbv
, 
dbmp
->
mux
);

935 
	}
}

938 
	$__bhcmp
(
p1
, 
p2
)

939 cڡ *
p1
, *
p2
;

941 
BH_TRACK
 *
bhp1
, *
bhp2
;

943 
bhp1
 = (
BH_TRACK
 *)
p1
;

944 
bhp2
 = (
BH_TRACK
 *)
p2
;

947 i(
bhp1
->
ack_off
 < 
bhp2
->track_off)

949 i(
bhp1
->
ack_off
 > 
bhp2
->track_off)

957 i(
bhp1
->
ack_pgno
 < 
bhp2
->track_pgno)

959 i(
bhp1
->
ack_pgno
 > 
bhp2
->track_pgno)

962 
	}
}

	@../mp/mp_trickle.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/mp.h
"

15 
__memp_ick
 
__P
((
DB_ENV
 *, , *));

24 
	$__memp_ick_
(
dbv
, 
p
, 
nwrٕ
)

25 
DB_ENV
 *
dbv
;

26 
p
, *
nwrٕ
;

28 
DB_THREAD_INFO
 *

;

29 
t
;

31 
	`PANIC_CHECK
(
dbv
);

32 
	`ENV_REQUIRES_CONFIG
(
dbv
,

33 
dbv
->
mp_hd
, "memp_ick", 
DB_INIT_MPOOL
);

35 
	`ENV_ENTER
(
dbv
, 

);

36 
	`REPLICATION_WRAP
(
dbv
, (
	`__memp_ick
(dbv, 
p
, 
nwrٕ
)), 
t
);

37 
	`ENV_LEAVE
(
dbv
, 

);

38  (
t
);

39 
	}
}

46 
	$__memp_ick
(
dbv
, 
p
, 
nwrٕ
)

47 
DB_ENV
 *
dbv
;

48 
p
, *
nwrٕ
;

50 
DB_MPOOL
 *
dbmp
;

51 
MPOOL
 *
c_mp
, *
mp
;

52 
u_t32_t
 
n
, 
dty
, 
i
, 
ed_n
, 
tٮ
, 
dtmp
, 
wre
;

53 
t
;

55 
dbmp
 = 
dbv
->
mp_hd
;

56 
mp
 = 
dbmp
->
gfo
[0].
imy
;

58 i(
nwrٕ
 !
NULL
)

59 *
nwrٕ
 = 0;

61 i(
p
 < 1 ||ct > 100) {

62 
	`__db_rx
(
dbv
,

64 
p
);

65  (
EINVAL
);

77 
t
 = 0, 
i
 = 
dty
 = 
tٮ
 = 0; i < 
mp
->
eg
; ++i) {

78 
c_mp
 = 
dbmp
->
gfo
[
i
].
imy
;

79 
tٮ
 +
c_mp
->

.
_ges
;

80 
	`__memp__hash
(&
dbmp
->
gfo
[
i
], 
c_mp
, &
dtmp
);

81 
dty
 +
dtmp
;

88 i(
tٮ
 =0 || 
dty
 == 0)

97 
n
 = 
tٮ
 > 
dty
 ?otal - dirty : 0;

98 
ed_n
 = (
tٮ
 * (
u_t
)
p
) / 100;

99 i(
n
 >
ed_n
)

102 
ed_n
 -
n
;

103 
t
 = 
	`__memp_sync_t
(
dbv
, 
NULL
,

104 
ed_n
, 
DB_SYNC_TRICKLE
 | 
DB_SYNC_INTERRUPT_OK
, &
wre
, 
NULL
);

105 
	`STAT
((
mp
->

.
_ge_ick
 +
wre
));

106 i(
nwrٕ
 !
NULL
)

107 *
nwrٕ
 = ()
wre
;

109  (
t
);

110 
	}
}

	@../mutex/mut_alloc.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/mux_t.h
"

21 
	$__mux_loc
(
dbv
, 
loc_id
, 
ags
, 
dxp
)

22 
DB_ENV
 *
dbv
;

23 
loc_id
;

24 
u_t32_t
 
ags
;

25 
db_mux_t
 *
dxp
;

27 
t
;

30 *
dxp
 = 
MUTEX_INVALID
;

38 i(
loc_id
 !
MTX_APPLICATION
 &&

39 (
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
) ||

40 (!
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
) &&

41 (
	`LF_ISSET
(
DB_MUTEX_PROCESS_ONLY
) ||

42 
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)))))

49 i(
	`MUTEX_ON
(
dbv
))

50  (
	`__mux_loc_t
(
dbv
, 1, 
loc_id
, 
ags
, 
dxp
));

60 i(
dbv
->
mux_iq
 =
NULL
) {

61 
dbv
->
mux_iq_max
 = 50;

62 i((
t
 = 
	`__os_oc
(
dbv
, dbv->
mux_iq_max
,

63 (
dbv
->
mux_iq
[0]), &dbenv->mutex_iq)) != 0)

64  (
t
);

65 } i(
dbv
->
mux_iq_xt
 =dbv->
mux_iq_max
 - 1) {

66 
dbv
->
mux_iq_max
 *= 2;

67 i((
t
 = 
	`__os_loc
(
dbv
,

68 
dbv
->
mux_iq_max
 * (dbv->
mux_iq
[0]),

69 &
dbv
->
mux_iq
)) != 0)

70  (
t
);

72 *
dxp
 = 
dbv
->
mux_iq_xt
 + 1;

73 
dbv
->
mux_iq
[dbv->
mux_iq_xt
].
loc_id
 =lloc_id;

74 
dbv
->
mux_iq
[dbv->
mux_iq_xt
].
ags
 = flags;

75 ++
dbv
->
mux_iq_xt
;

78 
	}
}

88 
	$__mux_loc_t
(
dbv
, 
locksys
, 
loc_id
, 
ags
, 
dxp
)

89 
DB_ENV
 *
dbv
;

90 
locksys
, 
loc_id
;

91 
u_t32_t
 
ags
;

92 
db_mux_t
 *
dxp
;

94 
DB_MUTEX
 *
muxp
;

95 
DB_MUTEXMGR
 *
mtxmgr
;

96 
DB_MUTEXREGION
 *
mtxgi
;

97 
t
;

99 
mtxmgr
 = 
dbv
->
mux_hd
;

100 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

101 
t
 = 0;

108 i(
locksys
)

109 
	`MUTEX_SYSTEM_LOCK
(
dbv
);

111 i(
mtxgi
->
mux_xt
 =
MUTEX_INVALID
) {

112 
	`__db_rx
(
dbv
,

114 i(
locksys
)

115 
	`MUTEX_SYSTEM_UNLOCK
(
dbv
);

116  (
ENOMEM
);

119 *
dxp
 = 
mtxgi
->
mux_xt
;

120 
muxp
 = 
	`MUTEXP_SET
(*
dxp
);

121 
	`DB_ASSERT
(
dbv
, ((
u_t
)
muxp
 & (dbv->
mux_ign
 - 1)) == 0);

122 
mtxgi
->
mux_xt
 = 
muxp
->
mux_xt_lk
;

124 --
mtxgi
->

.
_mux_
;

125 ++
mtxgi
->

.
_mux_u
;

126 i(
mtxgi
->

.
_mux_u
 > mtxgi->.
_mux_u_max
)

127 
mtxgi
->

.
_mux_u_max
 =

128 
mtxgi
->

.
_mux_u
;

129 i(
locksys
)

130 
	`MUTEX_SYSTEM_UNLOCK
(
dbv
);

133 
	`memt
(
muxp
, 0, (*mutexp));

134 
	`F_SET
(
muxp
, 
DB_MUTEX_ALLOCATED
 |

135 
	`LF_ISSET
(
DB_MUTEX_LOGICAL_LOCK
 | 
DB_MUTEX_PROCESS_ONLY
));

142 i(
	`LF_ISSET
(
DB_MUTEX_PROCESS_ONLY
))

143 
dbv
->
	`thad_id
(dbv, &
muxp
->
pid
, 
NULL
);

145 #ifde
HAVE_STATISTICS


146 
muxp
->
loc_id
 =lloc_id;

148 
	`COMPQUIET
(
loc_id
, 0);

151 i((
t
 = 
	`__mux_
(
dbv
, *
dxp
, 
ags
)) != 0)

152 ()
	`__mux__t
(
dbv
, 
locksys
, 
dxp
);

154  (
t
);

155 
	}
}

164 
	$__mux_
(
dbv
, 
dxp
)

165 
DB_ENV
 *
dbv
;

166 
db_mux_t
 *
dxp
;

181 i(!
	`MUTEX_ON
(
dbv
|| *
dxp
 =
MUTEX_INVALID
)

184  (
	`__mux__t
(
dbv
, 1, 
dxp
));

185 
	}
}

194 
	$__mux__t
(
dbv
, 
locksys
, 
dxp
)

195 
DB_ENV
 *
dbv
;

196 
locksys
;

197 
db_mux_t
 *
dxp
;

199 
DB_MUTEX
 *
muxp
;

200 
DB_MUTEXMGR
 *
mtxmgr
;

201 
DB_MUTEXREGION
 *
mtxgi
;

202 
db_mux_t
 
mux
;

203 
t
;

205 
mux
 = *
dxp
;

206 *
dxp
 = 
MUTEX_INVALID
;

208 
mtxmgr
 = 
dbv
->
mux_hd
;

209 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

210 
muxp
 = 
	`MUTEXP_SET
(
mux
);

212 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
muxp
, 
DB_MUTEX_ALLOCATED
));

213 
	`F_CLR
(
muxp
, 
DB_MUTEX_ALLOCATED
);

215 
t
 = 
	`__mux_deroy
(
dbv
, 
mux
);

217 i(
locksys
)

218 
	`MUTEX_SYSTEM_LOCK
(
dbv
);

221 
muxp
->
mux_xt_lk
 = 
mtxgi
->
mux_xt
;

222 
mtxgi
->
mux_xt
 = 
mux
;

223 ++
mtxgi
->

.
_mux_
;

224 --
mtxgi
->

.
_mux_u
;

226 i(
locksys
)

227 
	`MUTEX_SYSTEM_UNLOCK
(
dbv
);

229  (
t
);

230 
	}
}

	@../mutex/mut_failchk.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/mux_t.h
"

21 
	$__mut_chk
(
dbv
)

22 
DB_ENV
 *
dbv
;

24 
DB_MUTEXMGR
 *
mtxmgr
;

25 
DB_MUTEXREGION
 *
mtxgi
;

26 
DB_MUTEX
 *
muxp
;

27 
db_mux_t
 
i
;

28 
t
;

29 
buf
[
DB_THREADID_STRLEN
];

31 
mtxmgr
 = 
dbv
->
mux_hd
;

32 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

33 
t
 = 0;

35 
	`MUTEX_SYSTEM_LOCK
(
dbv
);

36 
i
 = 1; i <
mtxgi
->

.
_mux_t
; ++i, ++
muxp
) {

37 
muxp
 = 
	`MUTEXP_SET
(
i
);

43 i(!
	`F_ISSET
(
muxp
, 
DB_MUTEX_ALLOCATED
) ||

44 !
	`F_ISSET
(
muxp
, 
DB_MUTEX_PROCESS_ONLY
))

51 i(
dbv
->
	`is_ive
(

52 
dbv
, 
muxp
->
pid
, 0, 
DB_MUTEX_PROCESS_ONLY
))

55 
	`__db_msg
(
dbv
, "Freeing mutex forrocess: %s",

56 
dbv
->
	`thad_id_rg
(dbv, 
muxp
->
pid
, 0, 
buf
));

59 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
))

60 
	`MUTEX_UNLOCK
(
dbv
, 
i
);

62 i((
t
 = 
	`__mux__t
(
dbv
, 0, &
i
)) != 0)

65 
	`MUTEX_SYSTEM_UNLOCK
(
dbv
);

67  (
t
);

68 
	}
}

	@../mutex/mut_fcntl.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/mux_t.h
"

21 
	$__db_f_mux_
(
dbv
, 
mux
, 
ags
)

22 
DB_ENV
 *
dbv
;

23 
db_mux_t
 
mux
;

24 
u_t32_t
 
ags
;

26 
	`COMPQUIET
(
dbv
, 
NULL
);

27 
	`COMPQUIET
(
mux
, 
MUTEX_INVALID
);

28 
	`COMPQUIET
(
ags
, 0);

31 
	}
}

40 
	$__db_f_mux_lock
(
dbv
, 
mux
)

41 
DB_ENV
 *
dbv
;

42 
db_mux_t
 
mux
;

44 
DB_MUTEX
 *
muxp
;

45 
DB_MUTEXMGR
 *
mtxmgr
;

46 
DB_MUTEXREGION
 *
mtxgi
;

47 
ock
 
k_lock
;

48 
locked
, 
ms
, 
t
;

50 i(!
	`MUTEX_ON
(
dbv
|| 
	`F_ISSET
(dbv, 
DB_ENV_NOLOCKING
))

53 
mtxmgr
 = 
dbv
->
mux_hd
;

54 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

55 
muxp
 = 
	`MUTEXP_SET
(
mux
);

57 #ifde
HAVE_STATISTICS


58 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
))

59 ++
muxp
->
mux_t_wa
;

61 ++
muxp
->
mux_t_nowa
;

65 
k_lock
.
l_wh
 = 
SEEK_SET
;

66 
k_lock
.
l_t
 = 
mux
;

67 
k_lock
.
l_n
 = 1;

69 
locked
 = 0;;) {

74 
ms
 = 1; 
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
);) {

75 
	`__os_p
(
NULL
, 0, 
ms
 * 
US_PER_MS
);

76 i((
ms
 <<1> 
MS_PER_SEC
)

77 
ms
 = 
MS_PER_SEC
;

81 
k_lock
.
l_ty
 = 
F_WRLCK
;

82 i(
	`f
(
dbv
->
lockfhp
->
fd
, 
F_SETLKW
, &
k_lock
))

83 
r
;

86 i(!
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
)) {

87 
locked
 = 1;

89 
	`F_SET
(
muxp
, 
DB_MUTEX_LOCKED
);

90 
dbv
->
	`thad_id
(dbv, &
muxp
->
pid
, &muxp->
tid
);

91 
	`CHECK_MTX_THREAD
(
dbv
, 
muxp
);

95 
k_lock
.
l_ty
 = 
F_UNLCK
;

96 i(
	`f
(
dbv
->
lockfhp
->
fd
, 
F_SETLK
, &
k_lock
))

97 
r
;

108 i(
locked
)

112 #ifde
DIAGNOSTIC


117 i(
	`F_ISSET
(
dbv
, 
DB_ENV_YIELDCPU
))

118 
	`__os_yld
(
dbv
);

122 
r
: 
t
 = 
	`__os_g_sy
();

123 
	`__db_sy
(
dbv
, 
t
, "fcntlock failed");

124  (
	`__db_nic
(
dbv
, 
	`__os_posix_r
(
t
)));

125 
	}
}

134 
	$__db_f_mux_uock
(
dbv
, 
mux
)

135 
DB_ENV
 *
dbv
;

136 
db_mux_t
 
mux
;

138 
DB_MUTEX
 *
muxp
;

139 
DB_MUTEXMGR
 *
mtxmgr
;

140 
DB_MUTEXREGION
 *
mtxgi
;

142 i(!
	`MUTEX_ON
(
dbv
|| 
	`F_ISSET
(dbv, 
DB_ENV_NOLOCKING
))

145 
mtxmgr
 = 
dbv
->
mux_hd
;

146 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

147 
muxp
 = 
	`MUTEXP_SET
(
mux
);

149 #ifde
DIAGNOSTIC


150 i(!
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
)) {

151 
	`__db_rx
(
dbv
, "fcntl unlock failed:ocklready unlocked");

152  (
	`__db_nic
(
dbv
, 
EACCES
));

162 
	`F_CLR
(
muxp
, 
DB_MUTEX_LOCKED
);

165 
	}
}

174 
	$__db_f_mux_deroy
(
dbv
, 
mux
)

175 
DB_ENV
 *
dbv
;

176 
db_mux_t
 
mux
;

178 
	`COMPQUIET
(
dbv
, 
NULL
);

179 
	`COMPQUIET
(
mux
, 
MUTEX_INVALID
);

182 
	}
}

	@../mutex/mut_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/mux_t.h
"

21 
	$__mux_loc_
(
dbv
, 
ags
, 
dxp
)

22 
DB_ENV
 *
dbv
;

23 
u_t32_t
 
ags
;

24 
db_mux_t
 *
dxp
;

26 
DB_THREAD_INFO
 *

;

27 
t
;

29 
	`PANIC_CHECK
(
dbv
);

31 
ags
) {

33 
DB_MUTEX_PROCESS_ONLY
:

34 
DB_MUTEX_SELF_BLOCK
:

37  (
	`__db_
(
dbv
, "DB_ENV->mutex_alloc", 0));

40 
	`ENV_ENTER
(
dbv
, 

);

41 
t
 = 
	`__mux_loc
(
dbv
, 
MTX_APPLICATION
, 
ags
, 
dxp
);

42 
	`ENV_LEAVE
(
dbv
, 

);

44  (
t
);

45 
	}
}

54 
	$__mux__
(
dbv
, 
dx
)

55 
DB_ENV
 *
dbv
;

56 
db_mux_t
 
dx
;

58 
DB_THREAD_INFO
 *

;

59 
t
;

61 
	`PANIC_CHECK
(
dbv
);

63 i(
dx
 =
MUTEX_INVALID
)

64  (
EINVAL
);

72 
	`ENV_ENTER
(
dbv
, 

);

73 
t
 = 
	`__mux_
(
dbv
, &
dx
);

74 
	`ENV_LEAVE
(
dbv
, 

);

76  (
t
);

77 
	}
}

86 
	$__mux_lock_
(
dbv
, 
dx
)

87 
DB_ENV
 *
dbv
;

88 
db_mux_t
 
dx
;

90 
	`PANIC_CHECK
(
dbv
);

92 i(
dx
 =
MUTEX_INVALID
)

93  (
EINVAL
);

95  (
	`__mux_lock
(
dbv
, 
dx
));

96 
	}
}

105 
	$__mux_uock_
(
dbv
, 
dx
)

106 
DB_ENV
 *
dbv
;

107 
db_mux_t
 
dx
;

109 
	`PANIC_CHECK
(
dbv
);

111 i(
dx
 =
MUTEX_INVALID
)

112  (
EINVAL
);

114  (
	`__mux_uock
(
dbv
, 
dx
));

115 
	}
}

124 
	$__mux_g_ign
(
dbv
, 
ig
)

125 
DB_ENV
 *
dbv
;

126 
u_t32_t
 *
ig
;

128 i(
	`MUTEX_ON
(
dbv
))

129 *
ig
 = ((
DB_MUTEXREGION
 *)

130 
dbv
->
mux_hd
->
gfo
.
imy
)->

.
_mux_ign
;

132 *
ig
 = 
dbv
->
mux_ign
;

134 
	}
}

143 
	$__mux_t_ign
(
dbv
, 
ign
)

144 
DB_ENV
 *
dbv
;

145 
u_t32_t
 
ign
;

147 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_mutex_align");

149 i(
ign
 =0 || !
	`POWER_OF_TWO
(align)) {

150 
	`__db_rx
(
dbv
,

152  (
EINVAL
);

155 
dbv
->
mux_ign
 = 
ign
;

157 
	}
}

166 
	$__mux_g_emt
(
dbv
, 
em
)

167 
DB_ENV
 *
dbv
;

168 
u_t32_t
 *
em
;

175 *
em
 = 
dbv
->
mux_c
;

177 
	}
}

186 
	$__mux_t_emt
(
dbv
, 
emt
)

187 
DB_ENV
 *
dbv
;

188 
u_t32_t
 
emt
;

190 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_mutex_increment");

192 
dbv
->
mux_t
 = 0;

193 
dbv
->
mux_c
 = 
emt
;

195 
	}
}

204 
	$__mux_g_max
(
dbv
, 
maxp
)

205 
DB_ENV
 *
dbv
;

206 
u_t32_t
 *
maxp
;

208 i(
	`MUTEX_ON
(
dbv
))

209 *
maxp
 = ((
DB_MUTEXREGION
 *)

210 
dbv
->
mux_hd
->
gfo
.
imy
)->

.
_mux_t
;

212 *
maxp
 = 
dbv
->
mux_t
;

214 
	}
}

223 
	$__mux_t_max
(
dbv
, 
max
)

224 
DB_ENV
 *
dbv
;

225 
u_t32_t
 
max
;

227 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_mutex_max");

229 
dbv
->
mux_t
 = 
max
;

230 
dbv
->
mux_c
 = 0;

232 
	}
}

241 
	$__mux_g_s_s
(
dbv
, 
s_
)

242 
DB_ENV
 *
dbv
;

243 
u_t32_t
 *
s_
;

245 i(
	`MUTEX_ON
(
dbv
))

246 *
s_
 = ((
DB_MUTEXREGION
 *)
dbv
->

247 
mux_hd
->
gfo
.
imy
)->

.
_mux_s_s
;

249 *
s_
 = 
dbv
->
mux_s_s
;

251 
	}
}

260 
	$__mux_t_s_s
(
dbv
, 
s_s
)

261 
DB_ENV
 *
dbv
;

262 
u_t32_t
 
s_s
;

268 i(
s_s
 == 0)

269 
s_s
 = 1;

270 i(
s_s
 > 1000000)

271 
s_s
 = 1000000;

279 i(
	`MUTEX_ON
(
dbv
))

280 ((
DB_MUTEXREGION
 *)
dbv
->
mux_hd


281 ->
gfo
.
imy
)->

.
_mux_s_s
 = 
s_s
;

283 
dbv
->
mux_s_s
 = 
s_s
;

285 
	}
}

	@../mutex/mut_pthread.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

16 
	#LOAD_ACTUAL_MUTEX_CODE


	)

17 
	~"dbc/mux_t.h
"

19 #ifde
HAVE_MUTEX_SOLARIS_LWP


20 
	#had_cd_deroy
(
x
0

	)

21 
	#had_cd_sigl
 
_lwp_cd_sigl


	)

22 
	#had_cd_wa
 
_lwp_cd_wa


	)

23 
	#had_mux_deroy
(
x
0

	)

24 
	#had_mux_lock
 
_lwp_mux_lock


	)

25 
	#had_mux_ylock
 
_lwp_mux_ylock


	)

26 
	#had_mux_uock
 
_lwp_mux_uock


	)

28 #ifde
HAVE_MUTEX_UI_THREADS


29 
	#had_cd_deroy
(
x

cd_deroy


	)

30 
	#had_cd_sigl
 
cd_sigl


	)

31 
	#had_cd_wa
 
cd_wa


	)

32 
	#had_mux_deroy
 
mux_deroy


	)

33 
	#had_mux_lock
 
mux_lock


	)

34 
	#had_mux_ylock
 
mux_ylock


	)

35 
	#had_mux_uock
 
mux_uock


	)

38 
	#PTHREAD_UNLOCK_ATTEMPTS
 5

	)

45 
	#RET_SET
(
f
, 
t
) do { \

46 i(((
t
(
f
)=-1 && (ԑ
o
) == 0) \

47 (
t

EAGAIN
; \

48 } 0)

	)

57 
	$__db_had_mux_
(
dbv
, 
mux
, 
ags
)

58 
DB_ENV
 *
dbv
;

59 
db_mux_t
 
mux
;

60 
u_t32_t
 
ags
;

62 
DB_MUTEX
 *
muxp
;

63 
DB_MUTEXMGR
 *
mtxmgr
;

64 
DB_MUTEXREGION
 *
mtxgi
;

65 
t
;

67 
mtxmgr
 = 
dbv
->
mux_hd
;

68 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

69 
muxp
 = 
	`MUTEXP_SET
(
mux
);

70 
t
 = 0;

72 #ifde
HAVE_MUTEX_PTHREADS


74 
had_cd_t
 
cd
, *
cdp
 = 
NULL
;

75 
had_mux_t
 
mux
, *
muxp
 = 
NULL
;

77 i(!
	`LF_ISSET
(
DB_MUTEX_PROCESS_ONLY
)) {

78 
	`RET_SET
((
	`had_mux_
(&
mux
)), 
t
);

79 #ide
HAVE_MUTEX_THREAD_ONLY


80 i(
t
 == 0)

81 
	`RET_SET
((
	`had_mux_shed
(

82 &
mux
, 
PTHREAD_PROCESS_SHARED
)), 
t
);

84 
muxp
 = &
mux
;

87 i(
t
 == 0)

88 
	`RET_SET
((
	`had_mux_
(&
muxp
->
mux
, 
muxp
)), 
t
);

89 i(
muxp
 !
NULL
)

90 ()
	`had_mux_deroy
(
muxp
);

91 i(
t
 =0 && 
	`LF_ISSET
(
DB_MUTEX_SELF_BLOCK
)) {

92 i(!
	`LF_ISSET
(
DB_MUTEX_PROCESS_ONLY
)) {

93 
	`RET_SET
((
	`had_cd_
(&
cd
)), 
t
);

94 i(
t
 == 0) {

95 
cdp
 = &
cd
;

96 #ide
HAVE_MUTEX_THREAD_ONLY


97 
	`RET_SET
((
	`had_cd_shed
(

98 &
cd
, 
PTHREAD_PROCESS_SHARED
)), 
t
);

103 i(
t
 == 0)

104 
	`RET_SET
(

105 (
	`had_cd_
(&
muxp
->
cd
, 
cdp
)), 
t
);

107 
	`F_SET
(
muxp
, 
DB_MUTEX_SELF_BLOCK
);

108 i(
cdp
 !
NULL
)

109 ()
	`had_cd_deroy
(
cdp
);

114 #ifde
HAVE_MUTEX_SOLARIS_LWP


123 i(
	`LF_ISSET
(
DB_MUTEX_PROCESS_ONLY
)) {

124 
lwp_mux_t
 
mi
 = 
DEFAULTMUTEX
;

126 
muxp
->
mux
 = 
mi
;

128 
lwp_mux_t
 
mi
 = 
SHAREDMUTEX
;

130 
muxp
->
mux
 = 
mi
;

132 i(
	`LF_ISSET
(
DB_MUTEX_SELF_BLOCK
)) {

133 i(
	`LF_ISSET
(
DB_MUTEX_PROCESS_ONLY
)) {

134 
lwp_cd_t
 
ci
 = 
DEFAULTCV
;

136 
muxp
->
cd
 = 
ci
;

138 
lwp_cd_t
 
ci
 = 
SHAREDCV
;

140 
muxp
->
cd
 = 
ci
;

142 
	`F_SET
(
muxp
, 
DB_MUTEX_SELF_BLOCK
);

145 #ifde
HAVE_MUTEX_UI_THREADS


147 
ty
;

149 
ty
 = 
	`LF_ISSET
(
DB_MUTEX_PROCESS_ONLY
? 
USYNC_THREAD
 : 
USYNC_PROCESS
;

151 
t
 = 
	`mux_
(&
muxp
->
mux
, 
ty
, 
NULL
);

152 i(
t
 =0 && 
	`LF_ISSET
(
DB_MUTEX_SELF_BLOCK
)) {

153 
t
 = 
	`cd_
(&
muxp
->
cd
, 
ty
, 
NULL
);

155 
	`F_SET
(
muxp
, 
DB_MUTEX_SELF_BLOCK
);

159 i(
t
 != 0) {

160 
	`__db_r
(
dbv
, 
t
, "unableo initialize mutex");

162  (
t
);

163 
	}
}

172 
	$__db_had_mux_lock
(
dbv
, 
mux
)

173 
DB_ENV
 *
dbv
;

174 
db_mux_t
 
mux
;

176 
DB_MUTEX
 *
muxp
;

177 
DB_MUTEXMGR
 *
mtxmgr
;

178 
DB_MUTEXREGION
 *
mtxgi
;

179 
i
, 
t
;

181 i(!
	`MUTEX_ON
(
dbv
|| 
	`F_ISSET
(dbv, 
DB_ENV_NOLOCKING
))

184 
mtxmgr
 = 
dbv
->
mux_hd
;

185 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

186 
muxp
 = 
	`MUTEXP_SET
(
mux
);

188 #i
	`defed
(
HAVE_STATISTICS
&& !defed(
HAVE_MUTEX_HYBRID
)

196 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
))

197 ++
muxp
->
mux_t_wa
;

199 ++
muxp
->
mux_t_nowa
;

202 
	`RET_SET
((
	`had_mux_lock
(&
muxp
->
mux
)), 
t
);

203 i(
t
 != 0)

204 
r
;

206 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_SELF_BLOCK
)) {

214 #ifde
HAVE_MUTEX_HYBRID


215 
muxp
->
wa
++;

216 
	`MUTEX_MEMBAR
(
muxp
->
wa
);

218 
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
)) {

219 
	`RET_SET
((
	`had_cd_wa
(

220 &
muxp
->
cd
, &muxp->
mux
)), 
t
);

231 i(
t
 !0 && !
EINTR
 &&

232 #ifde
ETIME


233 
t
 !
ETIME
 &&

235 
t
 !
ETIMEDOUT
) {

236 ()
	`had_mux_uock
(&
muxp
->
mux
);

237 
r
;

241 #ifde
HAVE_MUTEX_HYBRID


242 
muxp
->
wa
--;

244 
	`F_SET
(
muxp
, 
DB_MUTEX_LOCKED
);

245 
dbv
->
	`thad_id
(dbv, &
muxp
->
pid
, &muxp->
tid
);

246 
	`CHECK_MTX_THREAD
(
dbv
, 
muxp
);

258 
i
 = 
PTHREAD_UNLOCK_ATTEMPTS
;

260 
	`RET_SET
((
	`had_mux_uock
(&
muxp
->
mux
)), 
t
);

261 } 
t
 =
EFAULT
 && --
i
 > 0);

262 i(
t
 != 0)

263 
r
;

265 #ifde
DIAGNOSTIC


266 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
)) {

267 
buf
[
DB_THREADID_STRLEN
];

268 ()
dbv
->
	`thad_id_rg
(dbenv,

269 
muxp
->
pid
, muxp->
tid
, 
buf
);

270 
	`__db_rx
(
dbv
,

272 
buf
);

273 
t
 = 
EINVAL
;

274 
r
;

277 
	`F_SET
(
muxp
, 
DB_MUTEX_LOCKED
);

278 
dbv
->
	`thad_id
(dbv, &
muxp
->
pid
, &muxp->
tid
);

279 
	`CHECK_MTX_THREAD
(
dbv
, 
muxp
);

282 #ifde
DIAGNOSTIC


287 i(
	`F_ISSET
(
dbv
, 
DB_ENV_YIELDCPU
))

288 
	`__os_yld
(
dbv
);

292 
r
: 
	`__db_r
(
dbv
, 
t
, "pthreadock failed");

293  (
	`__db_nic
(
dbv
, 
t
));

294 
	}
}

303 
	$__db_had_mux_uock
(
dbv
, 
mux
)

304 
DB_ENV
 *
dbv
;

305 
db_mux_t
 
mux
;

307 
DB_MUTEX
 *
muxp
;

308 
DB_MUTEXMGR
 *
mtxmgr
;

309 
DB_MUTEXREGION
 *
mtxgi
;

310 
i
, 
t
;

312 i(!
	`MUTEX_ON
(
dbv
|| 
	`F_ISSET
(dbv, 
DB_ENV_NOLOCKING
))

315 
mtxmgr
 = 
dbv
->
mux_hd
;

316 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

317 
muxp
 = 
	`MUTEXP_SET
(
mux
);

319 #i!
	`defed
(
HAVE_MUTEX_HYBRID
&& defed(
DIAGNOSTIC
)

320 i(!
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
)) {

321 
	`__db_rx
(

322 
dbv
, "pthread unlock failed:ocklready unlocked");

323  (
	`__db_nic
(
dbv
, 
EACCES
));

326 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_SELF_BLOCK
)) {

327 
	`RET_SET
((
	`had_mux_lock
(&
muxp
->
mux
)), 
t
);

328 i(
t
 != 0)

329 
r
;

331 
	`F_CLR
(
muxp
, 
DB_MUTEX_LOCKED
);

333 
	`RET_SET
((
	`had_cd_sigl
(&
muxp
->
cd
)), 
t
);

334 i(
t
 != 0)

335 
r
;

337 
	`F_CLR
(
muxp
, 
DB_MUTEX_LOCKED
);

340 
i
 = 
PTHREAD_UNLOCK_ATTEMPTS
;

342 
	`RET_SET
((
	`had_mux_uock
(&
muxp
->
mux
)), 
t
);

343 } 
t
 =
EFAULT
 && --
i
 > 0);

345 
r
: i(
t
 != 0) {

346 
	`__db_r
(
dbv
, 
t
, "pthread unlock failed");

347  (
	`__db_nic
(
dbv
, 
t
));

349  (
t
);

350 
	}
}

359 
	$__db_had_mux_deroy
(
dbv
, 
mux
)

360 
DB_ENV
 *
dbv
;

361 
db_mux_t
 
mux
;

363 
DB_MUTEX
 *
muxp
;

364 
DB_MUTEXMGR
 *
mtxmgr
;

365 
DB_MUTEXREGION
 *
mtxgi
;

366 
t
, 
t_t
;

368 i(!
	`MUTEX_ON
(
dbv
))

371 
mtxmgr
 = 
dbv
->
mux_hd
;

372 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

373 
muxp
 = 
	`MUTEXP_SET
(
mux
);

375 
t
 = 0;

376 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_SELF_BLOCK
)) {

377 
	`RET_SET
((
	`had_cd_deroy
(&
muxp
->
cd
)), 
t
);

378 i(
t
 != 0)

379 
	`__db_r
(
dbv
, 
t
, "unableo destroy cond");

381 
	`RET_SET
((
	`had_mux_deroy
(&
muxp
->
mux
)), 
t_t
);

382 i(
t_t
 != 0) {

383 
	`__db_r
(
dbv
, 
t_t
, "unableo destroy mutex");

384 i(
t
 == 0)

385 
t
 = 
t_t
;

387  (
t
);

388 
	}
}

	@../mutex/mut_region.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/lock.h
"

14 
	~"dbc/mp.h
"

15 
	~"dbc/txn.h
"

16 
	~"dbc/mux_t.h
"

18 
size_t
 
__mux_ign_size
 
__P
((
DB_ENV
 *));

19 
__mux_gi_
 
__P
((
DB_ENV
 *, 
DB_MUTEXMGR
 *));

20 
size_t
 
__mux_gi_size
 
__P
((
DB_ENV
 *));

29 
	$__mux_ݒ
(
dbv
, 
_ok
)

30 
DB_ENV
 *
dbv
;

31 
_ok
;

33 
DB_MUTEXMGR
 *
mtxmgr
;

34 
DB_MUTEXREGION
 *
mtxgi
;

35 
db_mux_t
 
mux
;

36 
u_t
 
i
;

37 
t
;

44 i(
dbv
->
mux_ign
 == 0)

45 
dbv
->
mux_ign
 = 
MUTEX_ALIGN
;

46 i(
dbv
->
mux_s_s
 == 0 &&

47 ((
t
 = 
	`__mux_t_s_s
(
dbv
, 
	`__os_
(dbenv))) != 0))

48  (
t
);

57 i(
dbv
->
mux_t
 == 0)

58 
dbv
->
mux_t
 =

59 
	`__lock_gi_mux_cou
(
dbv
) +

60 
	`__log_gi_mux_cou
(
dbv
) +

61 
	`__memp_gi_mux_cou
(
dbv
) +

62 
	`__txn_gi_mux_cou
(
dbv
) +

63 
dbv
->
mux_c
 + 100;

66 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_MUTEXMGR
), &
mtxmgr
)) != 0)

67  (
t
);

70 
mtxmgr
->
gfo
.
dbv
 = dbenv;

71 
mtxmgr
->
gfo
.
ty
 = 
REGION_TYPE_MUTEX
;

72 
mtxmgr
->
gfo
.
id
 = 
INVALID_REGION_ID
;

73 
mtxmgr
->
gfo
.
ags
 = 
REGION_JOIN_OK
;

74 i(
_ok
)

75 
	`F_SET
(&
mtxmgr
->
gfo
, 
REGION_CREATE_OK
);

76 i((
t
 = 
	`__v_gi_ch
(
dbv
,

77 &
mtxmgr
->
gfo
, 
	`__mux_gi_size
(
dbv
))) != 0)

78 
r
;

81 i(
	`F_ISSET
(&
mtxmgr
->
gfo
, 
REGION_CREATE
))

82 i((
t
 = 
	`__mux_gi_
(
dbv
, 
mtxmgr
)) != 0)

83 
r
;

86 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
 =

87 
	`R_ADDR
(&
mtxmgr
->
gfo
, mtxmgr->gfo.

->
imy
);

88 
mtxmgr
->
mux_y
 = 
	`R_ADDR
(&mtxmgr->
gfo
, 
mtxgi
->
mux_off
);

90 
dbv
->
mux_hd
 = 
mtxmgr
;

93 i(
dbv
->
mux_iq
 !
NULL
) {

94 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(&
mtxmgr
->
gfo
, 
REGION_CREATE
));

95 
i
 = 0; i < 
dbv
->
mux_iq_xt
; ++i) {

96 i((
t
 = 
	`__mux_loc_t
(

97 
dbv
, 0, dbv->
mux_iq
[
i
].
loc_id
,

98 
dbv
->
mux_iq
[
i
].
ags
, &
mux
)) != 0)

99 
r
;

104 
	`DB_ASSERT
(
dbv
, 
mux
 =
i
 + 1);

106 
	`__os_
(
dbv
, dbv->
mux_iq
);

107 
dbv
->
mux_iq
 = 
NULL
;

117 
mux
 = 
MUTEX_INVALID
;

118 i((
t
 =

119 
	`__mux_loc
(
dbv
, 
MTX_MUTEX_TEST
, 0, &
mux
) != 0) ||

120 (
t
 = 
	`__mux_lock
(
dbv
, 
mux
)) != 0 ||

121 (
t
 = 
	`__mux_uock
(
dbv
, 
mux
)) != 0 ||

122 (
t
 = 
	`__mux_
(
dbv
, &
mux
)) != 0) {

123 
	`__db_rx
(
dbv
,

125 
r
;

131 
r
: 
dbv
->
mux_hd
 = 
NULL
;

132 i(
mtxmgr
->
gfo
.
addr
 !
NULL
)

133 ()
	`__v_gi_dach
(
dbv
, &
mtxmgr
->
gfo
, 0);

135 
	`__os_
(
dbv
, 
mtxmgr
);

136  (
t
);

137 
	}
}

144 
	$__mux_gi_
(
dbv
, 
mtxmgr
)

145 
DB_ENV
 *
dbv
;

146 
DB_MUTEXMGR
 *
mtxmgr
;

148 
DB_MUTEXREGION
 *
mtxgi
;

149 
DB_MUTEX
 *
muxp
;

150 
db_mux_t
 
i
;

151 
t
;

152 *
mux_y
;

154 
	`COMPQUIET
(
muxp
, 
NULL
);

156 i((
t
 = 
	`__v_loc
(&
mtxmgr
->
gfo
,

157 (
DB_MUTEXREGION
), &
mtxmgr
->
gfo
.
imy
)) != 0) {

158 
	`__db_rx
(
dbv
,

160  (
t
);

162 
mtxmgr
->
gfo
.

->
imy
 =

163 
	`R_OFFSET
(&
mtxmgr
->
gfo
, mtxmgr->gfo.
imy
);

164 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

165 
	`memt
(
mtxgi
, 0, (*mtxregion));

167 i((
t
 = 
	`__mux_loc
(

168 
dbv
, 
MTX_MUTEX_REGION
, 0, &
mtxgi
->
mtx_gi
)) != 0)

169  (
t
);

171 
mtxgi
->
mux_size
 = 
	`__mux_ign_size
(
dbv
);

173 
mtxgi
->

.
_mux_ign
 = 
dbv
->
mux_ign
;

174 
mtxgi
->

.
_mux_t
 = 
dbv
->
mux_t
;

175 
mtxgi
->

.
_mux_s_s
 = 
dbv
->
mux_s_s
;

190 i((
t
 = 
	`__v_loc
(&
mtxmgr
->
gfo
,

191 
mtxgi
->

.
_mux_ign
 +

192 (
mtxgi
->

.
_mux_t
 + 1* mtxgi->
mux_size
,

193 &
mux_y
)) != 0) {

194 
	`__db_rx
(
dbv
,

196  (
t
);

199 
mtxgi
->
mux_off_loc
 = 
	`R_OFFSET
(&
mtxmgr
->
gfo
, 
mux_y
);

200 
mux_y
 = 
	`ALIGNP_INC
(mux_y, 
mtxgi
->

.
_mux_ign
);

201 
mtxgi
->
mux_off
 = 
	`R_OFFSET
(&
mtxmgr
->
gfo
, 
mux_y
);

202 
mtxmgr
->
mux_y
 = mutex_array;

212 
i
 = 1; i < 
mtxgi
->

.
_mux_t
; ++i) {

213 
muxp
 = 
	`MUTEXP_SET
(
i
);

214 
muxp
->
ags
 = 0;

215 
muxp
->
mux_xt_lk
 = 
i
 + 1;

217 
muxp
 = 
	`MUTEXP_SET
(
i
);

218 
muxp
->
ags
 = 0;

219 
muxp
->
mux_xt_lk
 = 
MUTEX_INVALID
;

220 
mtxgi
->
mux_xt
 = 1;

221 
mtxgi
->

.
_mux_
 = mtxgi->.
_mux_t
;

222 
mtxgi
->

.
_mux_u
 = mtxgi->.
_mux_u_max
 = 0;

225 
	}
}

234 
	$__mux_v_esh
(
dbv
)

235 
DB_ENV
 *
dbv
;

237 
DB_MUTEXMGR
 *
mtxmgr
;

238 
DB_MUTEXREGION
 *
mtxgi
;

239 
REGINFO
 *
gfo
;

240 
t
;

242 
mtxmgr
 = 
dbv
->
mux_hd
;

243 
gfo
 = &
mtxmgr
->reginfo;

244 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

251 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

252 #ifde
HAVE_MUTEX_SYSTEM_RESOURCES


257 
	`__mux_sour_tu
(
dbv
, 
gfo
);

260 
	`__v_loc_
(

261 
gfo
, 
	`R_ADDR
egfo, 
mtxgi
->
mux_off_loc
));

265 
t
 = 
	`__v_gi_dach
(
dbv
, 
gfo
, 0);

267 
	`__os_
(
dbv
, 
mtxmgr
);

269 
dbv
->
mux_hd
 = 
NULL
;

271  (
t
);

272 
	}
}

279 
size_t


280 
	$__mux_ign_size
(
dbv
)

281 
DB_ENV
 *
dbv
;

283  ((
size_t
)
	`DB_ALIGN
((
DB_MUTEX
), (
dbv
)->
mux_ign
));

284 
	}
}

290 
size_t


291 
	$__mux_gi_size
(
dbv
)

292 
DB_ENV
 *
dbv
;

294 
size_t
 
s
;

296 
s
 = (
DB_MUTEXMGR
) + 1024;

299 
s
 +
	`__v_loc_size
(

300 (
dbv
->
mux_t
 + 1*
	`__mux_ign_size
(dbenv));

302  (
s
);

303 
	}
}

305 #ifdef 
HAVE_MUTEX_SYSTEM_RESOURCES


313 
	$__mux_sour_tu
(
dbv
, 
f
)

314 
DB_ENV
 *
dbv
;

315 
REGINFO
 *
f
;

317 
DB_MUTEX
 *
muxp
;

318 
DB_MUTEXMGR
 *
mtxmgr
, 
mtxmgr_
;

319 
DB_MUTEXREGION
 *
mtxgi
;

320 
db_mux_t
 
i
;

321 *
ig_hd
;

339 
	`memt
(&
mtxmgr_
, 0, (mtxmgr_st));

340 
mtxmgr
 = &
mtxmgr_
;

341 
mtxmgr
->
gfo
 = *
f
;

342 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
 =

343 
	`R_ADDR
(&
mtxmgr
->
gfo
, mtxmgr->gfo.

->
imy
);

344 
mtxmgr
->
mux_y
 = 
	`R_ADDR
(&mtxmgr->
gfo
, 
mtxgi
->
mux_off
);

354 
ig_hd
 = 
dbv
->
mux_hd
;

355 
dbv
->
mux_hd
 = 
mtxmgr
;

356 
i
 = 1; i <
mtxgi
->

.
_mux_t
; ++i, ++
muxp
) {

357 
muxp
 = 
	`MUTEXP_SET
(
i
);

358 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_ALLOCATED
))

359 ()
	`__mux_deroy
(
dbv
, 
i
);

361 
dbv
->
mux_hd
 = 
ig_hd
;

362 
	}
}

	@../mutex/mut_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/mux_t.h
"

16 #ifde
HAVE_STATISTICS


17 
__mux_t_l
 
__P
((
DB_ENV
 *, 
u_t32_t
));

18 cڡ *
__mux_t_id
 
__P
(());

19 
__mux_t_s
 
__P
((
DB_ENV
 *, 
u_t32_t
));

20 
__mux_t_summy
 
__P
((
DB_ENV
 *));

21 
__mux_
 
__P
((
DB_ENV
 *, 
DB_MUTEX_STAT
 **, 
u_t32_t
));

30 
	$__mux__
(
dbv
, 
p
, 
ags
)

31 
DB_ENV
 *
dbv
;

32 
DB_MUTEX_STAT
 **
p
;

33 
u_t32_t
 
ags
;

35 
DB_THREAD_INFO
 *

;

36 
t
;

38 
	`PANIC_CHECK
(
dbv
);

40 i((
t
 = 
	`__db_fchk
(
dbv
,

41 "DB_ENV->mux_", 
ags
, 
DB_STAT_CLEAR
)) != 0)

42  (
t
);

44 
	`ENV_ENTER
(
dbv
, 

);

45 
	`REPLICATION_WRAP
(
dbv
, (
	`__mux_
(dbv, 
p
, 
ags
)), 
t
);

46 
	`ENV_LEAVE
(
dbv
, 

);

47  (
t
);

48 
	}
}

55 
	$__mux_
(
dbv
, 
p
, 
ags
)

56 
DB_ENV
 *
dbv
;

57 
DB_MUTEX_STAT
 **
p
;

58 
u_t32_t
 
ags
;

60 
DB_MUTEXMGR
 *
mtxmgr
;

61 
DB_MUTEXREGION
 *
mtxgi
;

62 
DB_MUTEX_STAT
 *
s
;

63 
t
;

65 
	`PANIC_CHECK
(
dbv
);

67 *
p
 = 
NULL
;

68 
mtxmgr
 = 
dbv
->
mux_hd
;

69 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

71 i((
t
 = 
	`__os_umloc
(
dbv
, (
DB_MUTEX_STAT
), &
s
)) != 0)

72  (
t
);

74 
	`MUTEX_SYSTEM_LOCK
(
dbv
);

80 *
s
 = 
mtxgi
->

;

81 
s
->
_gsize
 = 
mtxmgr
->
gfo
.

->
size
;

82 
	`__mux_t_wa_fo
(
dbv
, 
mtxgi
->
mtx_gi
,

83 &
s
->
_gi_wa
, &s->
_gi_nowa
);

84 i(
	`LF_ISSET
(
DB_STAT_CLEAR
))

85 
	`__mux_r
(
dbv
, 
mtxgi
->
mtx_gi
);

87 
	`MUTEX_SYSTEM_UNLOCK
(
dbv
);

89 *
p
 = 
s
;

91 
	}
}

100 
	$__mux__t_
(
dbv
, 
ags
)

101 
DB_ENV
 *
dbv
;

102 
u_t32_t
 
ags
;

104 
DB_THREAD_INFO
 *

;

105 
t
;

107 
	`PANIC_CHECK
(
dbv
);

109 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->mutex_stat_print",

110 
ags
, 
DB_STAT_ALL
 | 
DB_STAT_CLEAR
)) != 0)

111  (
t
);

113 
	`ENV_ENTER
(
dbv
, 

);

114 
	`REPLICATION_WRAP
(
dbv
, (
	`__mux__t
(dbv, 
ags
)), 
t
);

115 
	`ENV_LEAVE
(
dbv
, 

);

116  (
t
);

117 
	}
}

126 
	$__mux__t
(
dbv
, 
ags
)

127 
DB_ENV
 *
dbv
;

128 
u_t32_t
 
ags
;

130 
u_t32_t
 
ig_ags
;

131 
t
;

133 
ig_ags
 = 
ags
;

134 
	`LF_CLR
(
DB_STAT_CLEAR
 | 
DB_STAT_SUBSYSTEM
);

135 i(
ags
 =0 || 
	`LF_ISSET
(
DB_STAT_ALL
)) {

136 
t
 = 
	`__mux_t_s
(
dbv
, 
ig_ags
);

137 
	`__mux_t_summy
(
dbv
);

138 i(
ags
 =0 || 
t
 != 0)

139  (
t
);

142 i(
	`LF_ISSET
(
DB_STAT_ALL
))

143 
t
 = 
	`__mux_t_l
(
dbv
, 
ig_ags
);

146 
	}
}

149 
	$__mux_t_summy
(
dbv
)

150 
DB_ENV
 *
dbv
;

152 
DB_MUTEX
 *
muxp
;

153 
DB_MUTEXMGR
 *
mtxmgr
;

154 
DB_MUTEXREGION
 *
mtxgi
;

155 
db_mux_t
 
i
;

156 
u_t32_t
 
cous
[
MTX_MAX_ENTRY
 + 2];

157 
loc_id
;

159 
mtxmgr
 = 
dbv
->
mux_hd
;

160 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

161 
	`memt
(
cous
, 0, (counts));

163 
i
 = 1; i <
mtxgi
->

.
_mux_t
; ++i, ++
muxp
) {

164 
muxp
 = 
	`MUTEXP_SET
(
i
);

166 i(!
	`F_ISSET
(
muxp
, 
DB_MUTEX_ALLOCATED
))

167 
cous
[0]++;

168 i(
muxp
->
loc_id
 > 
MTX_MAX_ENTRY
)

169 
cous
[
MTX_MAX_ENTRY
 + 1]++;

171 
cous
[
muxp
->
loc_id
]++;

173 
	`__db_msg
(
dbv
, "Mutex counts");

174 
	`__db_msg
(
dbv
, "%d\tUod", 
cous
[0]);

175 
loc_id
 = 1;oc_id <
MTX_TXN_REGION
 + 1;lloc_id++)

176 i(
cous
[
loc_id
] != 0)

177 
	`__db_msg
(
dbv
, "%lu\t%s",

178 (
u_lg
)
cous
[
loc_id
],

179 
	`__mux_t_id
(
loc_id
));

181 
	}
}

188 
	$__mux_t_s
(
dbv
, 
ags
)

189 
DB_ENV
 *
dbv
;

190 
u_t32_t
 
ags
;

192 
DB_MUTEX_STAT
 *

;

193 
t
;

195 i((
t
 = 
	`__mux_
(
dbv
, &

, 
	`LF_ISSET
(
DB_STAT_CLEAR
))) != 0)

196  (
t
);

198 i(
	`LF_ISSET
(
DB_STAT_ALL
))

199 
	`__db_msg
(
dbv
, "Default mutexegion information:");

201 
	`__db_dlbys
(
dbv
, "Mutexegion size",

202 (
u_lg
)0, (u_lg)0, (u_lg)

->
_gsize
);

203 
	`__db_dl_p
(
dbv
,

205 (
u_lg
)

->
_gi_wa
, 
	`DB_PCT
(sp->st_region_wait,

206 

->
_gi_wa
 + sp->
_gi_nowa
), 
NULL
);

207 
	`STAT_ULONG
("Muxlignmt", 

->
_mux_ign
);

208 
	`STAT_ULONG
("Muxe-d-s", 

->
_mux_s_s
);

209 
	`STAT_ULONG
("Muxٮ cou", 

->
_mux_t
);

210 
	`STAT_ULONG
("Mux fcou", 

->
_mux_
);

211 
	`STAT_ULONG
("Mux in-u cou", 

->
_mux_u
);

212 
	`STAT_ULONG
("Mux maximum in-u cou", 

->
_mux_u_max
);

214 
	`__os_u
(
dbv
, 

);

217 
	}
}

224 
	$__mux_t_l
(
dbv
, 
ags
)

225 
DB_ENV
 *
dbv
;

226 
u_t32_t
 
ags
;

228 cڡ 
FN
 

[] = {

229 { 
DB_MUTEX_ALLOCATED
, "alloc" },

230 { 
DB_MUTEX_LOCKED
, "locked" },

231 { 
DB_MUTEX_LOGICAL_LOCK
, "logical" },

232 { 
DB_MUTEX_PROCESS_ONLY
, "process-private" },

233 { 
DB_MUTEX_SELF_BLOCK
, "self-block" },

234 { 0, 
NULL
 }

236 
DB_MSGBUF
 
mb
, *
mbp
;

237 
DB_MUTEX
 *
muxp
;

238 
DB_MUTEXMGR
 *
mtxmgr
;

239 
DB_MUTEXREGION
 *
mtxgi
;

240 
db_mux_t
 
i
;

242 
	`DB_MSGBUF_INIT
(&
mb
);

243 
mbp
 = &
mb
;

245 
mtxmgr
 = 
dbv
->
mux_hd
;

246 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

248 
	`__db_t_gfo
(
dbv
, &
mtxmgr
->
gfo
, "Mux", 
ags
);

249 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

251 
	`__db_msg
(
dbv
, "DB_MUTEXREGION structure:");

252 
	`__mux_t_debug_sg
(
dbv
,

253 "DB_MUTEXREGIONegi mux", 
mtxgi
->
mtx_gi
, 
ags
);

254 
	`STAT_ULONG
("Sizothigd mux", 
mtxgi
->
mux_size
);

255 
	`STAT_ULONG
("Nex mux", 
mtxgi
->
mux_xt
);

264 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

265 
	`__db_msg
(
dbv
, "mutex\twait/nowait,ct wait, holder, flags");

266 
i
 = 1; i <
mtxgi
->

.
_mux_t
; ++i, ++
muxp
) {

267 
muxp
 = 
	`MUTEXP_SET
(
i
);

269 i(!
	`F_ISSET
(
muxp
, 
DB_MUTEX_ALLOCATED
))

272 
	`__db_msgadd
(
dbv
, 
mbp
, "%5lu\t", (
u_lg
)
i
);

274 
	`__mux_t_debug_s
(
dbv
, 
mbp
, 
i
, 
ags
);

276 i(
muxp
->
loc_id
 != 0)

277 
	`__db_msgadd
(
dbv
,

278 
mbp
, ", %s", 
	`__mux_t_id
(
muxp
->
loc_id
));

280 
	`__db_ags
(
dbv
, 
mbp
, 
muxp
->
ags
, 

, " (", ")");

282 
	`DB_MSGBUF_FLUSH
(
dbv
, 
mbp
);

286 
	}
}

297 
	$__mux_t_debug_sg
(
dbv
, 
g
, 
mux
, 
ags
)

298 
DB_ENV
 *
dbv
;

299 cڡ *
g
;

300 
db_mux_t
 
mux
;

301 
u_t32_t
 
ags
;

303 
DB_MSGBUF
 
mb
, *
mbp
;

305 
	`DB_MSGBUF_INIT
(&
mb
);

306 
mbp
 = &
mb
;

308 i(
	`LF_ISSET
(
DB_STAT_SUBSYSTEM
))

309 
	`LF_CLR
(
DB_STAT_CLEAR
);

310 
	`__db_msgadd
(
dbv
, 
mbp
, "%lu\t%", (
u_lg
)
mux
, 
g
);

311 
	`__mux_t_debug_s
(
dbv
, 
mbp
, 
mux
, 
ags
);

312 
	`DB_MSGBUF_FLUSH
(
dbv
, 
mbp
);

313 
	}
}

324 
	$__mux_t_debug_s
(
dbv
, 
mbp
, 
mux
, 
ags
)

325 
DB_ENV
 *
dbv
;

326 
DB_MSGBUF
 *
mbp
;

327 
db_mux_t
 
mux
;

328 
u_t32_t
 
ags
;

330 
DB_MUTEX
 *
muxp
;

331 
DB_MUTEXMGR
 *
mtxmgr
;

332 
DB_MUTEXREGION
 *
mtxgi
;

333 
u_lg
 
vue
;

334 
buf
[
DB_THREADID_STRLEN
];

336 i(
mux
 =
MUTEX_INVALID
) {

337 
	`__db_msgadd
(
dbv
, 
mbp
, "[!Set]");

341 
mtxmgr
 = 
dbv
->
mux_hd
;

342 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

343 
muxp
 = 
	`MUTEXP_SET
(
mux
);

345 
	`__db_msgadd
(
dbv
, 
mbp
, "[");

346 i((
vue
 = 
muxp
->
mux_t_wa
) < 10000000)

347 
	`__db_msgadd
(
dbv
, 
mbp
, "%lu", 
vue
);

349 
	`__db_msgadd
(
dbv
, 
mbp
, "%luM", 
vue
 / 1000000);

350 i((
vue
 = 
muxp
->
mux_t_nowa
) < 10000000)

351 
	`__db_msgadd
(
dbv
, 
mbp
, "/%lu", 
vue
);

353 
	`__db_msgadd
(
dbv
, 
mbp
, "/%luM", 
vue
 / 1000000);

355 
	`__db_msgadd
(
dbv
, 
mbp
, " %d%%",

356 
	`DB_PCT
(
muxp
->
mux_t_wa
,

357 
muxp
->
mux_t_wa
 + muxp->
mux_t_nowa
));

359 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
))

360 
	`__db_msgadd
(
dbv
, 
mbp
, " %s]",

361 
dbv
->
	`thad_id_rg
(dbenv,

362 
muxp
->
pid
, muxp->
tid
, 
buf
));

364 
	`__db_msgadd
(
dbv
, 
mbp
, " !Own]");

366 i(
	`LF_ISSET
(
DB_STAT_CLEAR
))

367 
	`__mux_r
(
dbv
, 
mux
);

368 
	}
}

371 
	$__mux_t_id
(
loc_id
)

372 
loc_id
;

374 
loc_id
) {

375 
MTX_APPLICATION
:  ("applicationllocated");

376 
MTX_DB_HANDLE
:  ("db handle");

377 
MTX_ENV_DBLIST
:  ("env dblist");

378 
MTX_ENV_REGION
:  ("envegion");

379 
MTX_LOCK_REGION
:  ("lockegion");

380 
MTX_LOGICAL_LOCK
:  ("logicalock");

381 
MTX_LOG_FILENAME
:  ("log filename");

382 
MTX_LOG_FLUSH
:  ("log flush");

383 
MTX_LOG_HANDLE
:  ("log handle");

384 
MTX_LOG_REGION
:  ("logegion");

385 
MTX_MPOOLFILE_HANDLE
:  ("mpoolfile handle");

386 
MTX_MPOOL_FH
:  ("mpool filehandle");

387 
MTX_MPOOL_FILE_BUCKET
:  ("mpool file bucket");

388 
MTX_MPOOL_HANDLE
:  ("mpool handle");

389 
MTX_MPOOL_HASH_BUCKET
:  ("mpool hash bucket");

390 
MTX_MPOOL_IO
:  ("mpool buffer I/O");

391 
MTX_MPOOL_REGION
:  ("mpoolegion");

392 
MTX_REP_DATABASE
:  ("replication database");

393 
MTX_REP_REGION
:  ("replicationegion");

394 
MTX_SEQUENCE
:  ("sequence");

395 
MTX_TWISTER
:  ("twister");

396 
MTX_TXN_ACTIVE
:  ("txnctiveist");

397 
MTX_TXN_COMMIT
:  ("txn commit");

398 
MTX_TXN_MVCC
:  ("txn mvcc");

399 
MTX_TXN_REGION
:  ("txnegion");

403 
	}
}

413 
	$__mux_t_wa_fo
(
dbv
, 
mux
, 
wap
, 
nowap
)

414 
DB_ENV
 *
dbv
;

415 
db_mux_t
 
mux
;

416 
u_t32_t
 *
wap
, *
nowap
;

418 
DB_MUTEX
 *
muxp
;

419 
DB_MUTEXMGR
 *
mtxmgr
;

420 
DB_MUTEXREGION
 *
mtxgi
;

422 
mtxmgr
 = 
dbv
->
mux_hd
;

423 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

424 
muxp
 = 
	`MUTEXP_SET
(
mux
);

426 *
wap
 = 
muxp
->
mux_t_wa
;

427 *
nowap
 = 
muxp
->
mux_t_nowa
;

428 
	}
}

437 
	$__mux_r
(
dbv
, 
mux
)

438 
DB_ENV
 *
dbv
;

439 
db_mux_t
 
mux
;

441 
DB_MUTEX
 *
muxp
;

442 
DB_MUTEXMGR
 *
mtxmgr
;

443 
DB_MUTEXREGION
 *
mtxgi
;

445 
mtxmgr
 = 
dbv
->
mux_hd
;

446 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

447 
muxp
 = 
	`MUTEXP_SET
(
mux
);

449 
muxp
->
mux_t_wa
 = muxp->
mux_t_nowa
 = 0;

450 
	}
}

455 
	$__mux__
(
dbv
, 
p
, 
ags
)

456 
DB_ENV
 *
dbv
;

457 
DB_MUTEX_STAT
 **
p
;

458 
u_t32_t
 
ags
;

460 
	`COMPQUIET
(
p
, 
NULL
);

461 
	`COMPQUIET
(
ags
, 0);

463  (
	`__db__n_but
(
dbv
));

464 
	}
}

467 
	$__mux__t_
(
dbv
, 
ags
)

468 
DB_ENV
 *
dbv
;

469 
u_t32_t
 
ags
;

471 
	`COMPQUIET
(
ags
, 0);

473  (
	`__db__n_but
(
dbv
));

474 
	}
}

	@../mutex/mut_stub.c

9 #ide
HAVE_MUTEX_SUPPORT


10 
	~"db_cfig.h
"

12 
	~"db_t.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/db_am.h
"

20 
__db_nomux
 
__P
((
DB_ENV
 *));

27 
	$__db_nomux
(
dbv
)

28 
DB_ENV
 *
dbv
;

30 
	`__db_rx
(
dbv
,

32  (
DB_OPNOTSUP
);

33 
	}
}

36 
	$__mux_loc_
(
dbv
, 
ags
, 
dxp
)

37 
DB_ENV
 *
dbv
;

38 
u_t32_t
 
ags
;

39 
db_mux_t
 *
dxp
;

41 
	`COMPQUIET
(
ags
, 0);

42 
	`COMPQUIET
(
dxp
, 
NULL
);

43  (
	`__db_nomux
(
dbv
));

44 
	}
}

47 
	$__mux_loc
(
dbv
, 
loc_id
, 
ags
, 
dxp
)

48 
DB_ENV
 *
dbv
;

49 
loc_id
;

50 
u_t32_t
 
ags
;

51 
db_mux_t
 *
dxp
;

53 
	`COMPQUIET
(
dbv
, 
NULL
);

54 
	`COMPQUIET
(
loc_id
, 0);

55 
	`COMPQUIET
(
ags
, 0);

56 *
dxp
 = 
MUTEX_INVALID
;

58 
	}
}

61 
	$__mux_r
(
dbv
, 
mux
)

62 
DB_ENV
 *
dbv
;

63 
db_mux_t
 
mux
;

65 
	`COMPQUIET
(
dbv
, 
NULL
);

66 
	`COMPQUIET
(
mux
, 
MUTEX_INVALID
);

67 
	}
}

70 
	$__mux__
(
dbv
, 
dx
)

71 
DB_ENV
 *
dbv
;

72 
db_mux_t
 
dx
;

74 
	`COMPQUIET
(
dx
, 0);

75  (
	`__db_nomux
(
dbv
));

76 
	}
}

79 
	$__mux_
(
dbv
, 
dxp
)

80 
DB_ENV
 *
dbv
;

81 
db_mux_t
 *
dxp
;

83 
	`COMPQUIET
(
dbv
, 
NULL
);

84 *
dxp
 = 
MUTEX_INVALID
;

86 
	}
}

89 
	$__mux_g_ign
(
dbv
, 
ig
)

90 
DB_ENV
 *
dbv
;

91 
u_t32_t
 *
ig
;

93 
	`COMPQUIET
(
ig
, 
NULL
);

94  (
	`__db_nomux
(
dbv
));

95 
	}
}

98 
	$__mux_g_emt
(
dbv
, 
em
)

99 
DB_ENV
 *
dbv
;

100 
u_t32_t
 *
em
;

102 
	`COMPQUIET
(
em
, 
NULL
);

103  (
	`__db_nomux
(
dbv
));

104 
	}
}

107 
	$__mux_g_max
(
dbv
, 
maxp
)

108 
DB_ENV
 *
dbv
;

109 
u_t32_t
 *
maxp
;

111 
	`COMPQUIET
(
maxp
, 
NULL
);

112  (
	`__db_nomux
(
dbv
));

113 
	}
}

116 
	$__mux_g_s_s
(
dbv
, 
s_
)

117 
DB_ENV
 *
dbv
;

118 
u_t32_t
 *
s_
;

120 
	`COMPQUIET
(
s_
, 
NULL
);

121  (
	`__db_nomux
(
dbv
));

122 
	}
}

125 
	$__mux_lock_
(
dbv
, 
dx
)

126 
DB_ENV
 *
dbv
;

127 
db_mux_t
 
dx
;

129 
	`COMPQUIET
(
dx
, 0);

130  (
	`__db_nomux
(
dbv
));

131 
	}
}

134 
	$__mux_t_debug_sg
(
dbv
, 
g
, 
mux
, 
ags
)

135 
DB_ENV
 *
dbv
;

136 cڡ *
g
;

137 
db_mux_t
 
mux
;

138 
u_t32_t
 
ags
;

140 
	`COMPQUIET
(
dbv
, 
NULL
);

141 
	`COMPQUIET
(
g
, 
NULL
);

142 
	`COMPQUIET
(
mux
, 
MUTEX_INVALID
);

143 
	`COMPQUIET
(
ags
, 0);

144 
	}
}

147 
	$__mux_t_debug_s
(
dbv
, 
mbp
, 
mux
, 
ags
)

148 
DB_ENV
 *
dbv
;

149 
DB_MSGBUF
 *
mbp
;

150 
db_mux_t
 
mux
;

151 
u_t32_t
 
ags
;

153 
	`COMPQUIET
(
dbv
, 
NULL
);

154 
	`COMPQUIET
(
mbp
, 
NULL
);

155 
	`COMPQUIET
(
mux
, 
MUTEX_INVALID
);

156 
	`COMPQUIET
(
ags
, 0);

157 
	}
}

160 
	$__mux_t_ign
(
dbv
, 
ign
)

161 
DB_ENV
 *
dbv
;

162 
u_t32_t
 
ign
;

164 
	`COMPQUIET
(
ign
, 0);

165  (
	`__db_nomux
(
dbv
));

166 
	}
}

169 
	$__mux_t_emt
(
dbv
, 
emt
)

170 
DB_ENV
 *
dbv
;

171 
u_t32_t
 
emt
;

173 
	`COMPQUIET
(
emt
, 0);

174  (
	`__db_nomux
(
dbv
));

175 
	}
}

178 
	$__mux_t_max
(
dbv
, 
max
)

179 
DB_ENV
 *
dbv
;

180 
u_t32_t
 
max
;

182 
	`COMPQUIET
(
max
, 0);

183  (
	`__db_nomux
(
dbv
));

184 
	}
}

187 
	$__mux_t_s_s
(
dbv
, 
s_s
)

188 
DB_ENV
 *
dbv
;

189 
u_t32_t
 
s_s
;

191 
	`COMPQUIET
(
s_s
, 0);

192  (
	`__db_nomux
(
dbv
));

193 
	}
}

196 
	$__mux_t_wa_fo
(
dbv
, 
mux
, 
wap
, 
nowap
)

197 
DB_ENV
 *
dbv
;

198 
db_mux_t
 
mux
;

199 
u_t32_t
 *
wap
, *
nowap
;

201 
	`COMPQUIET
(
dbv
, 
NULL
);

202 
	`COMPQUIET
(
mux
, 
MUTEX_INVALID
);

203 *
wap
 = *
nowap
 = 0;

204 
	}
}

207 
	$__mux__
(
dbv
, 
p
, 
ags
)

208 
DB_ENV
 *
dbv
;

209 
DB_MUTEX_STAT
 **
p
;

210 
u_t32_t
 
ags
;

212 
	`COMPQUIET
(
p
, 
NULL
);

213 
	`COMPQUIET
(
ags
, 0);

214  (
	`__db_nomux
(
dbv
));

215 
	}
}

218 
	$__mux__t_
(
dbv
, 
ags
)

219 
DB_ENV
 *
dbv
;

220 
u_t32_t
 
ags
;

222 
	`COMPQUIET
(
ags
, 0);

223  (
	`__db_nomux
(
dbv
));

224 
	}
}

227 
	$__mux_uock_
(
dbv
, 
dx
)

228 
DB_ENV
 *
dbv
;

229 
db_mux_t
 
dx
;

231 
	`COMPQUIET
(
dx
, 0);

232  (
	`__db_nomux
(
dbv
));

233 
	}
}

	@../mutex/mut_tas.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

16 
	#LOAD_ACTUAL_MUTEX_CODE


	)

17 
	~"dbc/mux_t.h
"

26 
	$__db_s_mux_
(
dbv
, 
mux
, 
ags
)

27 
DB_ENV
 *
dbv
;

28 
db_mux_t
 
mux
;

29 
u_t32_t
 
ags
;

31 
DB_MUTEX
 *
muxp
;

32 
DB_MUTEXMGR
 *
mtxmgr
;

33 
DB_MUTEXREGION
 *
mtxgi
;

34 
t
;

36 
	`COMPQUIET
(
ags
, 0);

38 
mtxmgr
 = 
dbv
->
mux_hd
;

39 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

40 
muxp
 = 
	`MUTEXP_SET
(
mux
);

43 i(((
u_t
)
muxp
 & (
dbv
->
mux_ign
 - 1)) != 0) {

44 
	`__db_rx
(
dbv
, "TAS: mutexotppropriatelyligned");

45  (
EINVAL
);

48 i(
	`MUTEX_INIT
(&
muxp
->
s
)) {

49 
t
 = 
	`__os_g_sy
();

50 
	`__db_sy
(
dbv
, 
t
, "TAS: mutex initialize");

51  (
	`__os_posix_r
(
t
));

53 #ifde
HAVE_MUTEX_HYBRID


54 i((
t
 = 
	`__db_had_mux_
(
dbv
,

55 
mux
, 
ags
 | 
DB_MUTEX_SELF_BLOCK
)) != 0)

56  (
t
);

59 
	}
}

68 
	$__db_s_mux_lock
(
dbv
, 
mux
)

69 
DB_ENV
 *
dbv
;

70 
db_mux_t
 
mux
;

72 
DB_MUTEX
 *
muxp
;

73 
DB_MUTEXMGR
 *
mtxmgr
;

74 
DB_MUTEXREGION
 *
mtxgi
;

75 
u_t32_t
 
ns
;

76 #ifde
HAVE_MUTEX_HYBRID


77 
t
;

79 
u_lg
 
ms
, 
max_ms
;

81 i(!
	`MUTEX_ON
(
dbv
|| 
	`F_ISSET
(dbv, 
DB_ENV_NOLOCKING
))

84 
mtxmgr
 = 
dbv
->
mux_hd
;

85 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

86 
muxp
 = 
	`MUTEXP_SET
(
mux
);

88 #ifde
HAVE_STATISTICS


89 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
))

90 ++
muxp
->
mux_t_wa
;

92 ++
muxp
->
mux_t_nowa
;

95 #ide
HAVE_MUTEX_HYBRID


101 
ms
 = 1;

102 
max_ms
 = 
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOGICAL_LOCK
) ? 10 : 25;

105 
lo
:

106 
ns
 =

107 
mtxgi
->

.
_mux_s_s
; 
ns
 > 0; --nspins) {

108 #ifde
HAVE_MUTEX_HPPA_MSEM_INIT


109 
lock
:

111 #ifde
HAVE_MUTEX_S390_CC_ASSEMBLY


112 
t_t
 
zo
 = 0;

118 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
) ||

119 !
	`MUTEX_SET
(&
muxp
->
s
)) {

124 #ifde
MUTEX_PAUSE


125 
MUTEX_PAUSE


130 #ifde
HAVE_MUTEX_HPPA_MSEM_INIT


141 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
)) {

142 
	`F_SET
(
muxp
, 
DB_MUTEX_LOCKED
);

143 
dbv
->
	`thad_id
(dbv, &
muxp
->
pid
, &muxp->
tid
);

144 
	`CHECK_MTX_THREAD
(
dbv
, 
muxp
);

145 
lock
;

153 #ifde
DIAGNOSTIC


154 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
)) {

155 
buf
[
DB_THREADID_STRLEN
];

156 
	`__db_rx
(
dbv
,

158 
dbv
->
	`thad_id_rg
(dbenv,

159 
muxp
->
pid
, muxp->
tid
, 
buf
));

160  (
	`__db_nic
(
dbv
, 
EACCES
));

163 
	`F_SET
(
muxp
, 
DB_MUTEX_LOCKED
);

164 
dbv
->
	`thad_id
(dbv, &
muxp
->
pid
, &muxp->
tid
);

165 
	`CHECK_MTX_THREAD
(
dbv
, 
muxp
);

167 #ifde
DIAGNOSTIC


172 i(
	`F_ISSET
(
dbv
, 
DB_ENV_YIELDCPU
))

173 
	`__os_yld
(
dbv
);

179 #ifde
HAVE_MUTEX_HYBRID


180 
	`__os_yld
(
dbv
);

181 i(!
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
))

182 
lo
;

183 i((
t
 = 
	`__db_had_mux_lock
(
dbv
, 
mux
)) != 0)

184  (
t
);

186 
	`__os_p
(
dbv
, 0, 
ms
 * 
US_PER_MS
);

187 i((
ms
 <<1> 
max_ms
)

188 
ms
 = 
max_ms
;

197 
	`PANIC_CHECK
(
dbv
);

199 
lo
;

200 
	}
}

209 
	$__db_s_mux_uock
(
dbv
, 
mux
)

210 
DB_ENV
 *
dbv
;

211 
db_mux_t
 
mux
;

213 
DB_MUTEX
 *
muxp
;

214 
DB_MUTEXMGR
 *
mtxmgr
;

215 
DB_MUTEXREGION
 *
mtxgi
;

216 #ifde
HAVE_MUTEX_HYBRID


217 
t
;

220 i(!
	`MUTEX_ON
(
dbv
|| 
	`F_ISSET
(dbv, 
DB_ENV_NOLOCKING
))

223 
mtxmgr
 = 
dbv
->
mux_hd
;

224 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

225 
muxp
 = 
	`MUTEXP_SET
(
mux
);

227 #ifde
DIAGNOSTIC


228 i(!
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
)) {

229 
	`__db_rx
(
dbv
, "TAS unlock failed:ocklready unlocked");

230  (
	`__db_nic
(
dbv
, 
EACCES
));

234 
	`F_CLR
(
muxp
, 
DB_MUTEX_LOCKED
);

235 #ifde
HAVE_MUTEX_HYBRID


236 
	`MUTEX_MEMBAR
(
muxp
->
ags
);

238 i(
muxp
->
wa
 &&

239 (
t
 = 
	`__db_had_mux_uock
(
dbv
, 
mux
)) != 0)

240  (
t
);

242 
	`MUTEX_UNSET
(&
muxp
->
s
);

245 
	}
}

254 
	$__db_s_mux_deroy
(
dbv
, 
mux
)

255 
DB_ENV
 *
dbv
;

256 
db_mux_t
 
mux
;

258 
DB_MUTEX
 *
muxp
;

259 
DB_MUTEXMGR
 *
mtxmgr
;

260 
DB_MUTEXREGION
 *
mtxgi
;

261 #ifde
HAVE_MUTEX_HYBRID


262 
t
;

265 i(!
	`MUTEX_ON
(
dbv
))

268 
mtxmgr
 = 
dbv
->
mux_hd
;

269 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

270 
muxp
 = 
	`MUTEXP_SET
(
mux
);

272 
	`MUTEX_DESTROY
(&
muxp
->
s
);

274 #ifde
HAVE_MUTEX_HYBRID


275 i((
t
 = 
	`__db_had_mux_deroy
(
dbv
, 
mux
)) != 0)

276  (
t
);

279 
	`COMPQUIET
(
muxp
, 
NULL
);

281 
	}
}

	@../mutex/mut_win32.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

16 
	#LOAD_ACTUAL_MUTEX_CODE


	)

17 
	~"dbc/mux_t.h
"

20 #unde
MUTEX_DIAG


32 
_TCHAR
 
	ghex_digs
[] = 
_T
("0123456789abcdef");

33 
SECURITY_DESCRIPTOR
 
	gnu_sd
;

34 
SECURITY_ATTRIBUTES
 
	gl_
;

35 
	gcury_lized
 = 0;

37 
__le
 
	$g_hd
(
dbv
, 
muxp
, 
ev
)

38 
DB_ENV
 *
dbv
;

39 
DB_MUTEX
 *
muxp
;

40 
HANDLE
 *
ev
;

42 
_TCHAR
 
idbuf
[] = 
	`_T
("db.m00000000");

43 
_TCHAR
 *
p
 = 
idbuf
 + 12;

44 
t
 = 0;

45 
u_t32_t
 
id
;

47 
id
 = (
muxp
)->id; id != 0; id >>= 4)

48 *--
p
 = 
hex_digs
[
id
 & 0xf];

50 #ide
DB_WINCE


51 i(!
cury_lized
) {

52 
	`InlizeSecuryDest
(&
nu_sd
,

53 
SECURITY_DESCRIPTOR_REVISION
);

54 
	`SSecuryDestDa
(&
nu_sd
, 
TRUE
, 0, 
FALSE
);

55 
l_
.
nLgth
 = (
SECURITY_ATTRIBUTES
);

56 
l_
.
bInhHd
 = 
FALSE
;

57 
l_
.
SecuryDest
 = &
nu_sd
;

58 
cury_lized
 = 1;

62 i((*
ev
 = 
	`CeEvt
(&
l_
, 
FALSE
, FALSE, 
idbuf
)=
NULL
) {

63 
t
 = 
	`__os_g_sy
();

64 
	`__db_sy
(
dbv
, 
t
, "Win32 createvent failed");

67  (
t
);

68 
	}
}

77 
	$__db_w32_mux_
(
dbv
, 
mux
, 
ags
)

78 
DB_ENV
 *
dbv
;

79 
db_mux_t
 
mux
;

80 
u_t32_t
 
ags
;

82 
DB_MUTEX
 *
muxp
;

83 
DB_MUTEXMGR
 *
mtxmgr
;

84 
DB_MUTEXREGION
 *
mtxgi
;

86 
mtxmgr
 = 
dbv
->
mux_hd
;

87 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

88 
muxp
 = 
	`MUTEXP_SET
(
mux
);

90 
muxp
->
id
 = ((
	`gpid
(& 0xffff<< 16^ 
	`P_TO_UINT32
(mutexp);

93 
	}
}

102 
	$__db_w32_mux_lock
(
dbv
, 
mux
)

103 
DB_ENV
 *
dbv
;

104 
db_mux_t
 
mux
;

106 
DB_MUTEX
 *
muxp
;

107 
DB_MUTEXMGR
 *
mtxmgr
;

108 
DB_MUTEXREGION
 *
mtxgi
;

109 
HANDLE
 
evt
;

110 
u_t32_t
 
ns
;

111 
ms
, 
t
;

112 #ifde
MUTEX_DIAG


113 
LARGE_INTEGER
 
now
;

115 #ifde
DB_WINCE


116 vީ
db_thadid_t
 
tmp_tid
;

119 i(!
	`MUTEX_ON
(
dbv
|| 
	`F_ISSET
(dbv, 
DB_ENV_NOLOCKING
))

122 
mtxmgr
 = 
dbv
->
mux_hd
;

123 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

124 
muxp
 = 
	`MUTEXP_SET
(
mux
);

126 
evt
 = 
NULL
;

127 
ms
 = 50;

128 
t
 = 0;

130 
lo
:

131 
ns
 =

132 
mtxgi
->

.
_mux_s_s
; 
ns
 > 0; --nspins) {

137 #ifde
DB_WINCE


148 
tmp_tid
 = 
muxp
->
tid
;

149 
muxp
->
tid
 = 
tmp_tid
;

151 i(
muxp
->
s
 || !
	`MUTEX_SET
(&mutexp->tas)) {

156 #ifde
MUTEX_PAUSE


157 
MUTEX_PAUSE


162 #ifde
DIAGNOSTIC


163 i(
	`F_ISSET
(
muxp
, 
DB_MUTEX_LOCKED
)) {

164 
buf
[
DB_THREADID_STRLEN
];

165 
	`__db_rx
(
dbv
,

167 
dbv
->
	`thad_id_rg
(dbenv,

168 
muxp
->
pid
, muxp->
tid
, 
buf
));

169  (
	`__db_nic
(
dbv
, 
EACCES
));

172 
	`F_SET
(
muxp
, 
DB_MUTEX_LOCKED
);

173 
dbv
->
	`thad_id
(dbv, &
muxp
->
pid
, &muxp->
tid
);

174 
	`CHECK_MTX_THREAD
(
dbv
, 
muxp
);

176 #ifde
HAVE_STATISTICS


177 i(
evt
 =
NULL
)

178 ++
muxp
->
mux_t_nowa
;

180 ++
muxp
->
mux_t_wa
;

182 i(
evt
 !
NULL
) {

183 
	`CloHd
(
evt
);

184 
	`IlockedDeemt
(&
muxp
->
nwas
);

185 #ifde
MUTEX_DIAG


186 i(
t
 !
WAIT_OBJECT_0
) {

187 
	`QuyPfmCou
(&
now
);

188 
	`tf
("[%I64d]: Lost signal on mutex %p, "

190 
now
.
QuadPt
, 
muxp
, muxp->
id
, 
ms
);

195 #ifde
DIAGNOSTIC


200 i(
	`F_ISSET
(
dbv
, 
DB_ENV_YIELDCPU
))

201 
	`__os_yld
(
dbv
);

213 i(
evt
 =
NULL
) {

214 #ifde
MUTEX_DIAG


215 
	`QuyPfmCou
(&
now
);

216 
	`tf
("[%I64d]: Waiting on mutex %p, id %d\n",

217 
now
.
QuadPt
, 
muxp
, muxp->
id
);

219 
	`IlockedInemt
(&
muxp
->
nwas
);

220 i((
t
 = 
	`g_hd
(
dbv
, 
muxp
, &
evt
)) != 0)

221 
r
;

223 i((
t
 = 
	`WaFSgObje
(
evt
, 
ms
)=
WAIT_FAILED
) {

224 
t
 = 
	`__os_g_sy
();

225 
r
;

227 i((
ms
 <<1> 
MS_PER_SEC
)

228 
ms
 = 
MS_PER_SEC
;

230 
	`PANIC_CHECK
(
dbv
);

231 
lo
;

233 
r
: 
	`__db_sy
(
dbv
, 
t
, "Win32ock failed");

234  (
	`__db_nic
(
dbv
, 
	`__os_posix_r
(
t
)));

235 
	}
}

244 
	$__db_w32_mux_uock
(
dbv
, 
mux
)

245 
DB_ENV
 *
dbv
;

246 
db_mux_t
 
mux
;

248 
DB_MUTEX
 *
muxp
;

249 
DB_MUTEXMGR
 *
mtxmgr
;

250 
DB_MUTEXREGION
 *
mtxgi
;

251 
HANDLE
 
evt
;

252 
t
;

253 #ifde
MUTEX_DIAG


254 
LARGE_INTEGER
 
now
;

256 i(!
	`MUTEX_ON
(
dbv
|| 
	`F_ISSET
(dbv, 
DB_ENV_NOLOCKING
))

259 
mtxmgr
 = 
dbv
->
mux_hd
;

260 
mtxgi
 = 
mtxmgr
->
gfo
.
imy
;

261 
muxp
 = 
	`MUTEXP_SET
(
mux
);

263 #ifde
DIAGNOSTIC


264 i(!
muxp
->
s
 || !
	`F_ISSET
(muxp, 
DB_MUTEX_LOCKED
)) {

265 
	`__db_rx
(
dbv
, "Win32 unlock failed:ocklready unlocked");

266  (
	`__db_nic
(
dbv
, 
EACCES
));

269 
	`F_CLR
(
muxp
, 
DB_MUTEX_LOCKED
);

270 
	`MUTEX_UNSET
(&
muxp
->
s
);

272 i(
muxp
->
nwas
 > 0) {

273 i((
t
 = 
	`g_hd
(
dbv
, 
muxp
, &
evt
)) != 0)

274 
r
;

276 #ifde
MUTEX_DIAG


277 
	`QuyPfmCou
(&
now
);

278 
	`tf
("[%I64d]: Signalling mutex %p, id %d\n",

279 
now
.
QuadPt
, 
muxp
, muxp->
id
);

281 i(!
	`PulEvt
(
evt
)) {

282 
t
 = 
	`__os_g_sy
();

283 
	`CloHd
(
evt
);

284 
r
;

287 
	`CloHd
(
evt
);

292 
r
: 
	`__db_sy
(
dbv
, 
t
, "Win32 unlock failed");

293  (
	`__db_nic
(
dbv
, 
	`__os_posix_r
(
t
)));

294 
	}
}

303 
	$__db_w32_mux_deroy
(
dbv
, 
mux
)

304 
DB_ENV
 *
dbv
;

305 
db_mux_t
 
mux
;

308 
	}
}

	@../mutex/test_mutex.c

7 
	~"db_cfig.h
"

9 
	~"db_t.h
"

11 
	~<sys/wa.h
>

13 #ifde
DB_WIN32


14 
	#MUTEX_THREAD_TEST
 1

	)

16 

gt
(, * const *, const *);

18 
HANDLE
 
	tos_pid_t
;

19 
HANDLE
 
	tos_thad_t
;

21 
	#os_thad_
(
th
, 

, 
func
, 
g
) \

22 (((*(
th

	`CeThad
(
NULL
, 0, \

23 (
LPTHREAD_START_ROUTINE
)(
func
), (
g
), 0, 
NULL
)=NULL? -1 : 0)

	)

24 
	#os_thad_jo
(
thr
, 
u
) \

25 ((
	`WaFSgObje
((
thr
), 
INFINITE
=
WAIT_OBJECT_0
) && \

26 
	`GExCodeThad
((
thr
), (
LPDWORD
)(
u
)? 0 : -1)

	)

27 
	#os_thad_lf
(
	`GCutThadId
()

	)

31 
pid_t
 
	tos_pid_t
;

43 #i!
defed
(
HAVE_MUTEX_FCNTL
&& defed(
HAVE_PTHREAD_YIELD
)

44 
	#MUTEX_THREAD_TEST
 1

	)

46 
	~<had.h
>

48 
had_t
 
	tos_thad_t
;

50 
	#os_thad_
(
th
, 

, 
func
, 
g
) \

51 
	`had_
((
th
), (

), (
func
), (
g
))

	)

52 
	#os_thad_jo
(
thr
, 
u

	`had_jo
(hr), (u))

	)

53 
	#os_thad_lf
(
	`had_lf
()

	)

57 
	#OS_BAD_PID
 ((
os_pid_t
)-1)

	)

59 
	#TESTDIR
 "TESTDIR"

	)

60 
	#MT_FILE
 "TESTDIR/mux.fe"

	)

61 
	#MT_FILE_QUIT
 "TESTDIR/mux.fe.qu"

	)

70 
db_mux_t
 
	mmux
;

71 
u_lg
 
	mid
;

72 
u_t
 
	mwakeme
;

73 } 
	tTM
;

75 
DB_ENV
 *
	gdbv
;

76 
size_t
 
	gn
;

78 
u_t8_t
 *
	ggm_addr
;

79 
u_t8_t
 *
	glm_addr
;

80 
u_t8_t
 *
	gtm_addr
;

82 #ifde
MUTEX_THREAD_TEST


83 
os_thad_t
 *
	gkid
;

84 
os_thad_t
 
	gwak
;

87 #idef 
HAVE_MMAP


88 
u_t
 
	grocs
 = 1;

89 
u_t
 
	ghads
 = 20;

90 #if 
MUTEX_THREAD_TEST


91 
u_t
 
	grocs
 = 5;

92 
u_t
 
	ghads
 = 4;

94 
u_t
 
	grocs
 = 20;

95 
u_t
 
	ghads
 = 1;

98 
u_t
 
	gmaxlocks
 = 20;

99 
u_t
 
	gocks
 = 10000;

100 
	gvbo
;

102 cڡ *
	gogme
;

104 
da_off
(
u_t8_t
 *, 
DB_FH
 *);

105 
da_
(
u_t8_t
 **, u_t8_**, u_t8_**, 
DB_FH
 **, );

106 
lock_t
(
u_lg
);

107 
lock_wa
();

108 
os_pid_t
 
os_awn
(const *, *const[]);

109 
os_wa
(
os_pid_t
 *, 
u_t
);

110 *
run_had
(*);

111 *
run_wthad
(*);

112 
os_pid_t
 
awn_oc
(
u_lg
, *, *);

113 
tm_v_o
();

114 
tm_v_
();

115 
tm_mux_deroy
();

116 
tm_mux_
();

117 
tm_mux_s
();

118 
uge
();

119 
wakeup_t
(
u_lg
);

120 
wakeup_wa
();

123 
	$ma
(
gc
, 
gv
)

124 
gc
;

125 *
gv
[];

127 um {
LOCKER
, 
WAKEUP
, 
PARENT
} 
y
;

128 

td
;

129 
*
ݏrg
;

130 
os_pid_t
 
wakeup_pid
, *
pids
;

131 
u_lg
 
id
;

132 
u_t
 
i
;

133 
DB_FH
 *
fhp
, *
m_fhp
;

134 
ch
, 
r
;

135 *
p
, *
tmth
, 
cmd
[1024];

137 i((
ogme
 = 
	`__db_h
(
gv
[0])=
NULL
)

138 
ogme
 = 
gv
[0];

140 ++
ogme
;

142 
y
 = 
PARENT
;

143 
id
 = 0;

144 
tmth
 = 
gv
[0];

145 (
ch
 = 
	`gt
(
gc
, 
gv
, "l:n:p:T:t:v")!
EOF
)

146 
ch
) {

148 
maxlocks
 = (
u_t
)
	`oi
(
ݏrg
);

151 
ocks
 = (
u_t
)
	`oi
(
ݏrg
);

154 
rocs
 = (
u_t
)
	`oi
(
ݏrg
);

157 i((
hads
 = (
u_t
)
	`oi
(
ݏrg
)) == 0)

158 
hads
 = 1;

159 #i!
	`defed
(
MUTEX_THREAD_TEST
)

160 i(
hads
 != 1) {

161 
	`rtf
(
dr
,

163 
ogme
);

164  (
EXIT_FAILURE
);

169 i(!
	`memcmp
(
ݏrg
, "locker", ("locker") - 1))

170 
y
 = 
LOCKER
;

172 !
	`memcmp
(
ݏrg
, "wakeup", ("wakeup") - 1))

173 
y
 = 
WAKEUP
;

175  (
	`uge
());

176 i((
p
 = 
	`rchr
(
ݏrg
, '=')=
NULL
)

177  (
	`uge
());

178 
id
 = (
u_lg
)
	`oi
(
p
 + 1);

181 
vbo
 = 1;

185  (
	`uge
());

187 
gc
 -
td
;

188 
gv
 +
td
;

194 i(
rocs
 =1 && 
hads
 == 1) {

195 
	`rtf
(
dr
,

197 
ogme
);

198  (
EXIT_FAILURE
);

201 
n
 = (
TM
* (1 + 
hads
 * 
rocs
 + 
maxlocks
);

208 i(
y
 =
LOCKER
 ||ty =
WAKEUP
) {

209 
	`__os_p
(
dbv
, 3, 0);

211 
	`d
((
u_t
)
	`time
(
NULL
% (u_t)
	`gpid
());

213 i(
	`tm_v_
() != 0)

214 
	`ex
(
EXIT_FAILURE
);

216 
	`da_
(&
gm_addr
, &
tm_addr
, &
lm_addr
, &
m_fhp
, 0);

217 i(
vbo
)

218 
	`tf
(

220 (
u_lg
)
gm_addr
, (u_lg)
tm_addr
, (u_lg)
lm_addr
);

222 i((
y
 =
LOCKER
 ?

223 
	`lock_t
(
id
: 
	`wakeup_t
(id)) != 0)

224 
	`ex
(
EXIT_FAILURE
);

225 i((
y
 =
LOCKER
 ? 
	`lock_wa
(: 
	`wakeup_wa
()) != 0)

226 
	`ex
(
EXIT_FAILURE
);

228 
	`da_off
(
gm_addr
, 
m_fhp
);

230 
	`tm_v_o
();

232 
	`ex
(
EXIT_SUCCESS
);

240 
	`tf
(
cmd
, (cmd), "rm -r%s", 
TESTDIR
);

241 ()
	`syem
(
cmd
);

242 
	`tf
(
cmd
, (cmd), "mkd %s", 
TESTDIR
);

243 ()
	`syem
(
cmd
);

245 
	`tf
(

247 
ogme
, 
rocs
, 
hads
, 
ocks
, 
maxlocks
);

248 
	`tf
("%s: backg d%lu bys\n", 
ogme
, (
u_lg
)
n
);

250 i(
	`tm_v_
() != 0)

251 
	`ex
(
EXIT_FAILURE
);

253 
	`da_
(&
gm_addr
, &
tm_addr
, &
lm_addr
, &
m_fhp
, 1);

254 i(
vbo
)

255 
	`tf
(

257 (
u_lg
)
gm_addr
, (u_lg)
tm_addr
, (u_lg)
lm_addr
);

259 
	`tm_mux_
();

261 i(
rocs
 > 1) {

263 i((
pids
 = 
	`oc
(
rocs
, (
os_pid_t
))=
NULL
) {

264 
	`rtf
(
dr
, "%s: %s\n", 
ogme
, 
	`
(
o
));

265 

;

269 
i
 = 0; i < 
rocs
; ++i) {

270 i((
pids
[
i
] =

271 
	`awn_oc
(
id
, 
tmth
, "lock")=
OS_BAD_PID
) {

272 
	`rtf
(
dr
,

273 "%s: faedإawlock\n", 
ogme
);

274 

;

276 
id
 +
hads
;

280 i((
wakeup_pid
 =

281 
	`awn_oc
(
id
, 
tmth
, "wakeup")=
OS_BAD_PID
) {

282 
	`rtf
(
dr
,

283 "%s: faedإawwak\n", 
ogme
);

284 

;

286 ++
id
;

289 i((
r
 = 
	`os_wa
(
pids
, 
rocs
)) != 0) {

290 
	`rtf
(
dr
, "%s:ocker wait failed with %d\n",

291 
ogme
, 
r
);

292 

;

296 i((
r
 = 
	`__os_ݒ
(

297 
dbv
, 
MT_FILE_QUIT
, 0, 
DB_OSO_CREATE
, 0664, &
fhp
)) != 0) {

298 
	`rtf
(
dr
,

299 "%s: o%s\n", 
ogme
, 
	`db_
(
r
));

300 

;

302 ()
	`__os_ohd
(
dbv
, 
fhp
);

305 i((
r
 = 
	`os_wa
(&
wakeup_pid
, 1)) != 0) {

306 
	`rtf
(
dr
, "%s: %lu:xited %d\n",

307 
ogme
, (
u_lg
)
wakeup_pid
, 
r
);

308 

;

312 i(
	`lock_t
(0) != 0)

313 

;

316 i(
	`wakeup_t
(
hads
) != 0)

317 

;

320 i(
	`lock_wa
() != 0)

321 

;

324 i((
r
 = 
	`__os_ݒ
(

325 
dbv
, 
MT_FILE_QUIT
, 0, 
DB_OSO_CREATE
, 0664, &
fhp
)) != 0) {

326 
	`rtf
(
dr
,

327 "%s: o%s\n", 
ogme
, 
	`db_
(
r
));

328 

;

330 ()
	`__os_ohd
(
dbv
, 
fhp
);

333 i(
	`wakeup_wa
() != 0)

334 

;

337 
	`tm_mux_s
();

338 
	`tm_mux_deroy
();

340 
	`da_off
(
gm_addr
, 
m_fhp
);

342 
	`tm_v_o
();

344 
	`tf
("%s:e suceded\n", 
ogme
);

345  (
EXIT_SUCCESS
);

347 

: 
	`tf
("%s: FAILED!\n", 
ogme
);

348  (
EXIT_FAILURE
);

349 
	}
}

352 
	$lock_t
(
id
)

353 
u_lg
 
id
;

355 #i
	`defed
(
MUTEX_THREAD_TEST
)

356 
u_t
 
i
;

357 
r
;

363 i((
kid
 =

364 (
os_thad_t
 *)
	`oc
((os_thad_t), 
hads
)=
NULL
) {

365 
	`rtf
(
dr
, "%s: %s\n", 
ogme
, 
	`
(
o
));

368 
i
 = 0; i < 
hads
; i++)

369 i((
r
 = 
	`os_thad_
(

370 &
kid
[
i
], 
NULL
, 
run_had
, (*)(
id
 + i))) != 0) {

371 
	`rtf
(
dr
, "%s: failed spawninghread: %s\n",

372 
ogme
, 
	`db_
(
r
));

377  (
	`run_had
((*)
id
=
NULL
 ? 0 : 1);

379 
	}
}

382 
	$lock_wa
()

384 #i
	`defed
(
MUTEX_THREAD_TEST
)

385 
u_t
 
i
;

386 *

;

389 
i
 = 0; i < 
hads
; i++) {

390 ()
	`os_thad_jo
(
kid
[
i
], &

);

391 i(

 !
NULL
) {

392 
	`rtf
(
dr
,

393 "%s:hadxed wh\n", 
ogme
);

397 
	`
(
kid
);

400 
	}
}

403 
	$run_had
(
g
)

404 *
g
;

406 
TM
 *
gp
, *
mp
, *

;

407 
u_lg
 
id
, 
tid
;

408 
u_t
 
lock
, 

;

409 
r
, 
i
;

411 
id
 = (
u_t
)
g
;

412 #i
	`defed
(
MUTEX_THREAD_TEST
)

413 
tid
 = (
u_lg
)
	`os_thad_lf
();

415 
tid
 = 0;

417 
	`tf
("Locker: ID %03lu (PID: %lu; TID: %lx)\n",

418 
id
, (
u_lg
)
	`gpid
(), 
tid
);

420 
gp
 = (
TM
 *)
gm_addr
;

421 

 = (
TM
 *)(
tm_addr
 + 
id
 * (TM));

423 

 = 
ocks
;l > 0;) {

425 
lock
 = (
u_t
)
	`nd
(% 
maxlocks
;

426 
mp
 = (
TM
 *)(
lm_addr
 + 
lock
 * (TM));

427 i(
vbo
)

428 
	`tf
("%03lu:ock %d (mtx: %lu)\n",

429 
id
, 
lock
, (
u_lg
)
mp
->
mux
);

431 i((
r
 = 
dbv
->
	`mux_lock
(dbv, 
mp
->
mux
)) != 0) {

432 
	`rtf
(
dr
, "%s: %03lu:ever gotock %d: %s\n",

433 
ogme
, 
id
, 
lock
, 
	`db_
(
r
));

436 i(
mp
->
id
 != 0) {

437 
	`rtf
(
dr
,

439 
ogme
, 
id
, 
lock
, 
mp
->id);

442 
mp
->
id
 = id;

448 
i
 = 0; i < 3; ++i) {

449 
	`__os_p
(
dbv
, 0, (
u_lg
)
	`nd
() % 3);

450 i(
mp
->
id
 != id) {

451 
	`rtf
(
dr
,

453 
ogme
, 
mp
->
id
, 
lock
, id);

468 i((
r
 = 
dbv
->
	`mux_lock
(dbv, 
gp
->
mux
)) != 0) {

469 
	`rtf
(
dr
, "%s: %03lu: globalock: %s\n",

470 
ogme
, 
id
, 
	`db_
(
r
));

473 i(

->
id
 != 0 &&p->id != id) {

474 
	`rtf
(
dr
,

476 
ogme
, 
id
, 

->id);

479 

->
id
 = id;

480 i(
vbo
)

481 
	`tf
("%03lu: self-blocking (mtx: %lu)\n",

482 
id
, (
u_lg
)

->
mux
);

483 i(

->
wakeme
) {

484 
	`rtf
(
dr
,

486 
ogme
, 
id
);

489 

->
wakeme
 = 1;

490 i((
r
 = 
dbv
->
	`mux_uock
(dbv, 
gp
->
mux
)) != 0) {

491 
	`rtf
(
dr
,

493 
ogme
, 
id
, 
	`db_
(
r
));

496 i((
r
 = 
dbv
->
	`mux_lock
(dbv, 

->
mux
)) != 0) {

497 
	`rtf
(
dr
, "%s: %03lu:er-threadock: %s\n",

498 
ogme
, 
id
, 
	`db_
(
r
));

502 i(

->
wakeme
) {

503 
	`rtf
(
dr
, "%s: %03lu: wakeup flagot cleared\n",

504 
ogme
, 
id
);

508 i(
vbo
)

509 
	`tf
("%03lu:elease %d (mtx: %lu)\n",

510 
id
, 
lock
, (
u_lg
)
mp
->
mux
);

513 
mp
->
id
 = 0;

514 i((
r
 = 
dbv
->
	`mux_uock
(dbv, 
mp
->
mux
)) != 0) {

515 
	`rtf
(
dr
,

517 
ogme
, 
id
, 
	`db_
(
r
));

521 i(--

 % 100 == 0)

522 
	`tf
("%03lu: %d\n", 
id
, 

);

525  (
NULL
);

526 
	}
}

529 
	$wakeup_t
(
id
)

530 
u_lg
 
id
;

532 #i
	`defed
(
MUTEX_THREAD_TEST
)

533 
r
;

538 i((
r
 = 
	`os_thad_
(

539 &
wak
, 
NULL
, 
run_wthad
, (*)
id
)) != 0) {

540 
	`rtf
(
dr
, "%s: failed spawning wakeuphread: %s\n",

541 
ogme
, 
	`db_
(
r
));

546  (
	`run_wthad
((*)
id
=
NULL
 ? 0 : 1);

548 
	}
}

551 
	$wakeup_wa
()

553 #i
	`defed
(
MUTEX_THREAD_TEST
)

554 *

;

559 ()
	`os_thad_jo
(
wak
, &

);

560 i(

 !
NULL
) {

561 
	`rtf
(
dr
,

562 "%s: wakeuthadxed wh\n", 
ogme
);

567 
	}
}

574 
	$run_wthad
(
g
)

575 *
g
;

577 
TM
 *
gp
, *

;

578 
u_lg
 
id
, 
tid
;

579 
u_t
 
check_id
;

580 
r
;

582 
id
 = (
u_t
)
g
;

583 #i
	`defed
(
MUTEX_THREAD_TEST
)

584 
tid
 = (
u_lg
)
	`os_thad_lf
();

586 
tid
 = 0;

588 
	`tf
("Wakeup: ID %03lu (PID: %lu; TID: %lx)\n",

589 
id
, (
u_lg
)
	`gpid
(), 
tid
);

591 
gp
 = (
TM
 *)
gm_addr
;

594 
check_id
 = 0;; ++check_id) {

596 i(
	`__os_exis
(
dbv
, 
MT_FILE_QUIT
, 
NULL
) == 0)

600 i(
check_id
 =
hads
 * 
rocs
)

601 
check_id
 = 0;

604 

 = (
TM
 *)(
tm_addr
 + 
check_id
 * (TM));

605 i(!

->
wakeme
)

608 i(
vbo
) {

609 
	`tf
("%03lu: wakeuphread %03lu (mtx: %lu)\n",

610 
id
, 

->id, (
u_lg
p->
mux
);

611 ()
	`fush
(
dout
);

615 i((
r
 = 
dbv
->
	`mux_lock
(dbv, 
gp
->
mux
)) != 0) {

616 
	`rtf
(
dr
, "%s: wakeup: globalock: %s\n",

617 
ogme
, 
	`db_
(
r
));

621 

->
wakeme
 = 0;

622 i((
r
 = 
dbv
->
	`mux_uock
(dbv, 

->
mux
)) != 0) {

623 
	`rtf
(
dr
, "%s: wakeup: unlock: %s\n",

624 
ogme
, 
	`db_
(
r
));

628 i((
r
 = 
dbv
->
	`mux_uock
(dbv, 
gp
->
mux
)) != 0) {

629 
	`rtf
(
dr
, "%s: wakeup: global unlock: %s\n",

630 
ogme
, 
	`db_
(
r
));

634 
	`__os_p
(
dbv
, 0, (
u_lg
)
	`nd
() % 3);

636  (
NULL
);

637 
	}
}

644 
	$tm_v_
()

646 
u_t32_t
 
ags
;

647 
t
;

648 *
home
;

654 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

655 
	`rtf
(
dr
, "%s: %s\n", 
ogme
, 
	`db_
(
t
));

658 
dbv
->
	`t_rfe
(dbv, 
dr
);

659 
dbv
->
	`t_fx
(dbv, 
ogme
);

662 i((
t
 = 
dbv
->
	`mux_t_emt
(dbenv,

663 1 + 
hads
 * 
rocs
 + 
maxlocks
)) != 0) {

664 
dbv
->
	`r
(dbv, 
t
, "dbenv->mutex_set_increment");

668 
ags
 = 
DB_CREATE
;

669 i(
rocs
 == 1) {

670 
home
 = 
NULL
;

671 
ags
 |
DB_PRIVATE
;

673 
home
 = 
TESTDIR
;

674 i(
hads
 != 1)

675 
ags
 |
DB_THREAD
;

676 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
home
, 
ags
, 0)) != 0) {

677 
dbv
->
	`r
(dbv, 
t
, "vmݒ: %s", 
home
);

682 
	}
}

689 
	$tm_v_o
()

691 ()
dbv
->
	`o
(dbenv, 0);

692 
	}
}

699 
	$tm_mux_
()

701 
TM
 *
mp
;

702 
u_t
 
i
;

703 
r
;

705 i(
vbo
)

706 
	`tf
("Allocatehe global mutex: ");

707 
mp
 = (
TM
 *)
gm_addr
;

708 i((
r
 = 
dbv
->
	`mux_loc
(dbv, 0, &
mp
->
mux
)) != 0) {

709 
	`rtf
(
dr
, "%s: DB_ENV->mutex_alloc (global): %s\n",

710 
ogme
, 
	`db_
(
r
));

711 
	`ex
(
EXIT_FAILURE
);

713 i(
vbo
)

714 
	`tf
("%lu\n", (
u_lg
)
mp
->
mux
);

716 i(
vbo
)

717 
	`tf
(

719 
hads
 * 
rocs
);

720 
i
 = 0; i < 
hads
 * 
rocs
; ++i) {

721 
mp
 = (
TM
 *)(
tm_addr
 + 
i
 * (TM));

722 i((
r
 = 
dbv
->
	`mux_loc
(

723 
dbv
, 
DB_MUTEX_SELF_BLOCK
, &
mp
->
mux
)) != 0) {

724 
	`rtf
(
dr
,

726 
ogme
, 
i
, 
	`db_
(
r
));

727 
	`ex
(
EXIT_FAILURE
);

729 i((
r
 = 
dbv
->
	`mux_lock
(dbv, 
mp
->
mux
)) != 0) {

730 
	`rtf
(
dr
,

732 
ogme
, 
i
, 
	`db_
(
r
));

733 
	`ex
(
EXIT_FAILURE
);

735 i(
vbo
)

736 
	`tf
("%lu ", (
u_lg
)
mp
->
mux
);

738 i(
vbo
)

739 
	`tf
("\n");

741 i(
vbo
)

742 
	`tf
("Ao %d-lock muxes: ", 
maxlocks
);

743 
i
 = 0; i < 
maxlocks
; ++i) {

744 
mp
 = (
TM
 *)(
lm_addr
 + 
i
 * (TM));

745 i((
r
 = 
dbv
->
	`mux_loc
(dbv, 0, &
mp
->
mux
)) != 0) {

746 
	`rtf
(
dr
,

748 
ogme
, 
i
, 
	`db_
(
r
));

749 
	`ex
(
EXIT_FAILURE
);

751 i(
vbo
)

752 
	`tf
("%lu ", (
u_lg
)
mp
->
mux
);

754 i(
vbo
)

755 
	`tf
("\n");

756 
	}
}

763 
	$tm_mux_deroy
()

765 
TM
 *
gp
, *
mp
;

766 
u_t
 
i
;

767 
r
;

769 i(
vbo
)

770 
	`tf
("Destroyhe global mutex.\n");

771 
gp
 = (
TM
 *)
gm_addr
;

772 i((
r
 = 
dbv
->
	`mux_
(dbv, 
gp
->
mux
)) != 0) {

773 
	`rtf
(
dr
, "%s: DB_ENV->mutex_free (global): %s\n",

774 
ogme
, 
	`db_
(
r
));

775 
	`ex
(
EXIT_FAILURE
);

778 i(
vbo
)

779 
	`tf
("Destroyheer-thread mutexes.\n");

780 
i
 = 0; i < 
hads
 * 
rocs
; ++i) {

781 
mp
 = (
TM
 *)(
tm_addr
 + 
i
 * (TM));

782 i((
r
 = 
dbv
->
	`mux_
(dbv, 
mp
->
mux
)) != 0) {

783 
	`rtf
(
dr
,

785 
ogme
, 
i
, 
	`db_
(
r
));

786 
	`ex
(
EXIT_FAILURE
);

790 i(
vbo
)

791 
	`tf
("Destroyheer-lock mutexes.\n");

792 
i
 = 0; i < 
maxlocks
; ++i) {

793 
mp
 = (
TM
 *)(
lm_addr
 + 
i
 * (TM));

794 i((
r
 = 
dbv
->
	`mux_
(dbv, 
mp
->
mux
)) != 0) {

795 
	`rtf
(
dr
,

797 
ogme
, 
i
, 
	`db_
(
r
));

798 
	`ex
(
EXIT_FAILURE
);

801 
	}
}

808 
	$tm_mux_s
()

810 #ifde
HAVE_STATISTICS


811 
TM
 *
mp
;

812 
u_t32_t
 
t_wa
, 
t_nowa
;

813 
u_t
 
i
;

815 
	`tf
("Per-lock mutex statistics.\n");

816 
i
 = 0; i < 
maxlocks
; ++i) {

817 
mp
 = (
TM
 *)(
lm_addr
 + 
i
 * (TM));

818 
	`__mux_t_wa_fo
(
dbv
, 
mp
->
mux
, &
t_wa
, &
t_nowa
);

819 
	`tf
("mux %2d: wa: %lu;wa %lu\n", 
i
,

820 (
u_lg
)
t_wa
, (u_lg)
t_nowa
);

823 
	}
}

830 
	$da_
(
gm_add
, 
tm_add
, 
lm_add
, 
fh
, 

)

831 
u_t8_t
 **
gm_add
, **
tm_add
, **
lm_add
;

832 
DB_FH
 **
fh
;

833 

;

835 
DB_FH
 *
fhp
;

836 
size_t
 
nwre
;

837 
r
;

838 *
addr
;

840 
fhp
 = 
NULL
;

845 i(
rocs
 == 1) {

846 i(

) {

847 i((
r
 =

848 
	`__os_oc
(
dbv
, (
size_t
)
n
, 1, &
addr
)) != 0)

849 
	`ex
(
EXIT_FAILURE
);

851 
	`rtf
(
dr
,

853 
ogme
);

854 
	`ex
(
EXIT_FAILURE
);

857 i(

) {

858 i(
vbo
)

859 
	`tf
("Createhe backing file.\n");

861 i((
r
 = 
	`__os_ݒ
(
dbv
, 
MT_FILE
, 0,

862 
DB_OSO_CREATE
 | 
DB_OSO_TRUNC
, 0666, &
fhp
)) == -1) {

863 
	`rtf
(
dr
, "%s: %s: open: %s\n",

864 
ogme
, 
MT_FILE
, 
	`db_
(
r
));

865 
	`ex
(
EXIT_FAILURE
);

868 i((
r
 = 
	`__os_ek
(
dbv
, 
fhp
, 0, 0, 
n
)) != 0 ||

869 (
r
 =

870 
	`__os_wre
(
dbv
, 
fhp
, &
r
, 1, &
nwre
)) != 0 ||

871 
nwre
 != 1) {

872 
	`rtf
(
dr
, "%s: %s: seek/write: %s\n",

873 
ogme
, 
MT_FILE
, 
	`db_
(
r
));

874 
	`ex
(
EXIT_FAILURE
);

877 i((
r
 =

878 
	`__os_ݒ
(
dbv
, 
MT_FILE
, 0, 0, 0, &
fhp
)) != 0)

879 
	`ex
(
EXIT_FAILURE
);

881 i((
r
 =

882 
	`__os_mfe
(
dbv
, 
MT_FILE
, 
fhp
, 
n
, 0, &
addr
)) != 0)

883 
	`ex
(
EXIT_FAILURE
);

886 *
gm_add
 = (
u_t8_t
 *)
addr
;

887 
addr
 = (
u_t8_t
 *dd+ (
TM
);

888 *
tm_add
 = (
u_t8_t
 *)
addr
;

889 
addr
 = (
u_t8_t
 *dd+ (
TM
* (
hads
 * 
rocs
);

890 *
lm_add
 = (
u_t8_t
 *)
addr
;

892 i(
fh
 !
NULL
)

893 *
fh
 = 
fhp
;

894 
	}
}

901 
	$da_off
(
addr
, 
fhp
)

902 
u_t8_t
 *
addr
;

903 
DB_FH
 *
fhp
;

905 i(
rocs
 == 1)

906 
	`__os_
(
dbv
, 
addr
);

908 i(
	`__os_unmfe
(
dbv
, 
addr
, 
n
) != 0)

909 
	`ex
(
EXIT_FAILURE
);

910 i(
	`__os_ohd
(
dbv
, 
fhp
) != 0)

911 
	`ex
(
EXIT_FAILURE
);

913 
	}
}

920 
	$uge
()

922 
	`rtf
(
dr
, "uge: %%s\n\t%s\n", 
ogme
,

925  (
EXIT_FAILURE
);

926 
	}
}

933 
	$os_wa
(
ocs
, 
n
)

934 
os_pid_t
 *
ocs
;

935 
u_t
 
n
;

937 
u_t
 
i
;

938 
us
;

939 #i
	`defed
(
DB_WIN32
)

940 
DWORD
 
t
;

943 
us
 = 0;

945 #i
	`defed
(
DB_WIN32
)

947 
t
 = 
	`WaFMuɝObjes
(
n
, 
ocs
, 
FALSE
, 
INFINITE
);

948 
i
 = 
t
 - 
WAIT_OBJECT_0
;

949 i(
i
 < 0 || i >
n
)

950  (
	`__os_posix_r
(
	`__os_g_sy
()));

952 i((
	`GExCodePross
(
ocs
[
i
], &
t
) == 0) || (ret != 0))

953  (
t
);

956 ++
i
 < 
n
)

957 
ocs
[
i
 - 1] =rocs[i];

958 } --
n
);

959 #i!
	`defed
(
HAVE_VXWORKS
)

961 i(
	`wa
(&
us
) == -1)

962  (
	`__os_posix_r
(
	`__os_g_sy
()));

964 i(
	`WIFEXITED
(
us
=0 || 
	`WEXITSTATUS
(status) != 0) {

965 
i
 = 0; i < 
n
; i++)

966 ()
	`kl
(
ocs
[
i
], 
SIGKILL
);

967  (
	`WEXITSTATUS
(
us
));

969 } --
n
);

973 
	}
}

975 
os_pid_t


976 
	$awn_oc
(
id
, 
tmth
, 
tyg
)

977 
u_lg
 
id
;

978 *
tmth
, *
tyg
;

980 
lbuf
[16], 
nbuf
[16], 
pbuf
[16], 
tbuf
[16], 
Tbuf
[256];

981 *cڡ 
vbuf
 = 
vbo
 ? "-v" : 
NULL
;

982 *
gs
[] = { 
NULL
 ,

983 "-l", 
NULL
 , "-n", NULL ,

984 "-p", 
NULL
 , "-t", NULL ,

985 "-T", 
NULL
 , NULL ,

986 
NULL


989 
gs
[0] = 
tmth
;

990 
	`tf
(
lbuf
, buf), "%d", 
maxlocks
);

991 
gs
[2] = 
lbuf
;

992 
	`tf
(
nbuf
, buf), "%d", 
ocks
);

993 
gs
[4] = 
nbuf
;

994 
	`tf
(
pbuf
, buf), "%d", 
rocs
);

995 
gs
[6] = 
pbuf
;

996 
	`tf
(
tbuf
, buf), "%d", 
hads
);

997 
gs
[8] = 
tbuf
;

998 
	`tf
(
Tbuf
, (Tbuf), "%s=%lu", 
tyg
, 
id
);

999 
gs
[10] = 
Tbuf
;

1000 
gs
[11] = 
vbuf
;

1002  (
	`os_awn
(
tmth
, 
gs
));

1003 
	}
}

1005 
os_pid_t


1006 
	$os_awn
(
th
, 
gv
)

1007 cڡ *
th
;

1008 *cڡ 
gv
[];

1010 
os_pid_t
 
pid
;

1011 
us
;

1013 
	`COMPQUIET
(
pid
, 0);

1014 
	`COMPQUIET
(
us
, 0);

1016 #ifde
HAVE_VXWORKS


1017 
	`rtf
(
dr
, "%s: os_awn su܋d f VxWks.\n", 
ogme
);

1018  (
OS_BAD_PID
);

1019 #i
	`defed
(
HAVE_QNX
)

1028  (
	`awnv
(
P_NOWAIT
, 
th
, 
gv
));

1029 #i
	`defed
(
DB_WIN32
)

1030  (
os_pid_t
)(
	`_awnv
(
P_NOWAIT
, 
th
, 
gv
));

1032 i((
pid
 = 
	`fk
()) != 0) {

1033 i(
pid
 == -1)

1034  (
OS_BAD_PID
);

1035  (
pid
);

1037 ()
	`execv
(
th
, 
gv
);

1038 
	`ex
(
EXIT_FAILURE
);

1041 
	}
}

	@../os/os_abort.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

19 
	$__os_abt
()

21 #ifde
HAVE_ABORT


22 
	`abt
();

24 #ifde
SIGABRT


25 ()
	`i
(
SIGABRT
);

27 
	`ex
(1);

30 
	}
}

	@../os/os_abs.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_abh
(
th
)

21 cڡ *
th
;

23  (
th
[0] == '/');

24 
	}
}

	@../os/os_alloc.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ifde
DIAGNOSTIC


14 
__os_gud
 
__P
((
DB_ENV
 *));

17 
size_t
 
	msize
;

18 
	mign
;

19 } 
	tdb_locfo_t
;

50 
	$__os_umloc
(
dbv
, 
size
, 
ܕ
)

51 
DB_ENV
 *
dbv
;

52 
size_t
 
size
;

53 *
ܕ
;

55 
t
;

58 i(
size
 == 0)

59 ++
size
;

61 i(
dbv
 =
NULL
 || dbv->
db_mloc
 == NULL) {

62 i(
	`DB_GLOBAL
(
j_mloc
!
NULL
)

63 *(**)
ܕ
 = 
	`DB_GLOBAL
(
j_mloc
)(
size
);

65 *(**)
ܕ
 = 
	`mloc
(
size
);

66 i(*(**)
ܕ
 =
NULL
) {

70 i((
t
 = 
	`__os_g_o_t_zo
()) == 0) {

71 
t
 = 
ENOMEM
;

72 
	`__os_t_o
(
ENOMEM
);

74 
	`__db_r
(
dbv
, 
t
, "mloc: %lu", (
u_lg
)
size
);

75  (
t
);

80 i((*(**)
ܕ
 = 
dbv
->
	`db_mloc
(
size
)=
NULL
) {

81 
	`__db_rx
(
dbv
,

83  (
ENOMEM
);

87 
	}
}

98 
	$__os_uloc
(
dbv
, 
size
, 
ܕ
)

99 
DB_ENV
 *
dbv
;

100 
size_t
 
size
;

101 *
ܕ
;

103 
t
;

104 *
r
;

106 
r
 = *(**)
ܕ
;

109 i(
size
 == 0)

110 ++
size
;

112 i(
dbv
 =
NULL
 || dbv->
db_loc
 == NULL) {

113 i(
r
 =
NULL
)

114  (
	`__os_umloc
(
dbv
, 
size
, 
ܕ
));

116 i(
	`DB_GLOBAL
(
j_loc
!
NULL
)

117 *(**)
ܕ
 = 
	`DB_GLOBAL
(
j_loc
)(
r
, 
size
);

119 *(**)
ܕ
 = 
	`loc
(
r
, 
size
);

120 i(*(**)
ܕ
 =
NULL
) {

124 i((
t
 = 
	`__os_g_o_t_zo
()) == 0) {

125 
t
 = 
ENOMEM
;

126 
	`__os_t_o
(
ENOMEM
);

128 
	`__db_r
(
dbv
, 
t
, "loc: %lu", (
u_lg
)
size
);

129  (
t
);

134 i((*(**)
ܕ
 = 
dbv
->
	`db_loc
(
r
, 
size
)=
NULL
) {

135 
	`__db_rx
(
dbv
,

137  (
ENOMEM
);

141 
	}
}

152 
	$__os_u
(
dbv
, 
r
)

153 
DB_ENV
 *
dbv
;

154 *
r
;

156 i(
dbv
 !
NULL
 && dbv->
db_
 != NULL)

157 
dbv
->
	`db_
(
r
);

158 i(
	`DB_GLOBAL
(
j_
!
NULL
)

159 
	`DB_GLOBAL
(
j_
)(
r
);

161 
	`
(
r
);

162 
	}
}

171 
	$__os_rdup
(
dbv
, 
r
, 
ܕ
)

172 
DB_ENV
 *
dbv
;

173 cڡ *
r
;

174 *
ܕ
;

176 
size_t
 
size
;

177 
t
;

178 *
p
;

180 *(**)
ܕ
 = 
NULL
;

182 
size
 = 
	`
(
r
) + 1;

183 i((
t
 = 
	`__os_mloc
(
dbv
, 
size
, &
p
)) != 0)

184  (
t
);

186 
	`memy
(
p
, 
r
, 
size
);

188 *(**)
ܕ
 = 
p
;

190 
	}
}

199 
	$__os_oc
(
dbv
, 
num
, 
size
, 
ܕ
)

200 
DB_ENV
 *
dbv
;

201 
size_t
 
num
, 
size
;

202 *
ܕ
;

204 *
p
;

205 
t
;

207 
size
 *
num
;

208 i((
t
 = 
	`__os_mloc
(
dbv
, 
size
, &
p
)) != 0)

209  (
t
);

211 
	`memt
(
p
, 0, 
size
);

213 *(**)
ܕ
 = 
p
;

215 
	}
}

224 
	$__os_mloc
(
dbv
, 
size
, 
ܕ
)

225 
DB_ENV
 *
dbv
;

226 
size_t
 
size
;

227 *
ܕ
;

229 
t
;

230 *
p
;

232 *(**)
ܕ
 = 
NULL
;

235 i(
size
 == 0)

236 ++
size
;

238 #ifde
DIAGNOSTIC


240 
size
 +(
db_locfo_t
) + 1;

243 i(
	`DB_GLOBAL
(
j_mloc
!
NULL
)

244 
p
 = 
	`DB_GLOBAL
(
j_mloc
)(
size
);

246 
p
 = 
	`mloc
(
size
);

247 i(
p
 =
NULL
) {

254 i((
t
 = 
	`__os_g_o_t_zo
()) == 0) {

255 
t
 = 
ENOMEM
;

256 
	`__os_t_o
(
ENOMEM
);

258 
	`__db_r
(
dbv
, 
t
, "mloc: %lu", (
u_lg
)
size
);

259  (
t
);

262 #ifde
DIAGNOSTIC


264 
	`memt
(
p
, 
CLEAR_BYTE
, 
size
);

271 ((
u_t8_t
 *)
p
)[
size
 - 1] = 
CLEAR_BYTE
;

273 ((
db_locfo_t
 *)
p
)->
size
 = size;

274 
p
 = &((
db_locfo_t
 *)p)[1];

276 *(**)
ܕ
 = 
p
;

279 
	}
}

288 
	$__os_loc
(
dbv
, 
size
, 
ܕ
)

289 
DB_ENV
 *
dbv
;

290 
size_t
 
size
;

291 *
ܕ
;

293 
t
;

294 *
p
, *
r
;

296 
r
 = *(**)
ܕ
;

299 i(
size
 == 0)

300 ++
size
;

303 i(
r
 =
NULL
)

304  (
	`__os_mloc
(
dbv
, 
size
, 
ܕ
));

306 #ifde
DIAGNOSTIC


308 
size
 +(
db_locfo_t
) + 1;

311 
r
 = &((
db_locfo_t
 *)ptr)[-1];

314 
size_t
 
s
;

316 
s
 = ((
db_locfo_t
 *)
r
)->
size
;

317 i(((
u_t8_t
 *)
r
)[
s
 - 1] !
CLEAR_BYTE
)

318 
	`__os_gud
(
dbv
);

326 i(
	`DB_GLOBAL
(
j_loc
!
NULL
)

327 
p
 = 
	`DB_GLOBAL
(
j_loc
)(
r
, 
size
);

329 
p
 = 
	`loc
(
r
, 
size
);

330 i(
p
 =
NULL
) {

337 i((
t
 = 
	`__os_g_o_t_zo
()) == 0) {

338 
t
 = 
ENOMEM
;

339 
	`__os_t_o
(
ENOMEM
);

341 
	`__db_r
(
dbv
, 
t
, "loc: %lu", (
u_lg
)
size
);

342  (
t
);

344 #ifde
DIAGNOSTIC


345 ((
u_t8_t
 *)
p
)[
size
 - 1] = 
CLEAR_BYTE
;

347 ((
db_locfo_t
 *)
p
)->
size
 = size;

348 
p
 = &((
db_locfo_t
 *)p)[1];

351 *(**)
ܕ
 = 
p
;

354 
	}
}

363 
	$__os_
(
dbv
, 
r
)

364 
DB_ENV
 *
dbv
;

365 *
r
;

367 #ifde
DIAGNOSTIC


368 
size_t
 
size
;

375 i(
r
 =
NULL
)

378 #ifde
DIAGNOSTIC


383 
r
 = &((
db_locfo_t
 *)ptr)[-1];

384 
size
 = ((
db_locfo_t
 *)
r
)->size;

385 i(((
u_t8_t
 *)
r
)[
size
 - 1] !
CLEAR_BYTE
)

386 
	`__os_gud
(
dbv
);

389 i(
size
 != 0)

390 
	`memt
(
r
, 
CLEAR_BYTE
, 
size
);

392 
	`COMPQUIET
(
dbv
, 
NULL
);

395 i(
	`DB_GLOBAL
(
j_
!
NULL
)

396 
	`DB_GLOBAL
(
j_
)(
r
);

398 
	`
(
r
);

399 
	}
}

401 #ifde
DIAGNOSTIC


407 
	$__os_gud
(
dbv
)

408 
DB_ENV
 *
dbv
;

410 
	`__db_rx
(
dbv
, "Guard byte incorrect during free");

411 
	`__os_abt
();

413 
	}
}

446 
	$__ua_memy
(
d
, 
c
, 
n
)

447 *
d
;

448 cڡ *
c
;

449 
size_t
 
n
;

451  ((*)
	`memy
(
d
, 
c
, 
n
));

452 
	}
}

	@../os/os_clock.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_gtime
(
dbv
, 

)

21 
DB_ENV
 *
dbv
;

22 
db_timeec
 *

;

24 cڡ *
sc
;

25 
t
;

27 #i
	`defed
(
HAVE_CLOCK_GETTIME
)

28 
	`RETRY_CHK
((
	`ock_gtime
(
CLOCK_REALTIME
, (
timeec
 *)

)), 
t
);

29 i(
t
 != 0) {

30 
sc
 = "clock_gettime";

31 
r
;

34 #i!
	`defed
(
HAVE_CLOCK_GETTIME
&& defed(
HAVE_GETTIMEOFDAY
)

35 
timev
 
v
;

37 
	`RETRY_CHK
((
	`gtimeofday
(&
v
, 
NULL
)), 
t
);

38 i(
t
 != 0) {

39 
sc
 = "gettimeofday";

40 
r
;

43 

->
tv_c
 = 
v
.tv_sec;

44 

->
tv_nc
 = 
v
.
tv_uc
 * 
NS_PER_US
;

46 #i!
	`defed
(
HAVE_GETTIMEOFDAY
&& !defed(
HAVE_CLOCK_GETTIME
)

47 
time_t
 
now
;

49 
	`RETRY_CHK
((
	`time
(&
now
=(
time_t
)-1 ? 1 : 0), 
t
);

50 i(
t
 != 0) {

51 
sc
 = "time";

52 
r
;

55 

->
tv_c
 = 
now
;

56 

->
tv_nc
 = 0;

60 
r
: 
	`__db_sy
(
dbv
, 
t
, "%s", 
sc
);

61 ()
	`__db_nic
(
dbv
, 
	`__os_posix_r
(
t
));

62 
	}
}

	@../os/os_config.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_fs_nzo
()

24 
	}
}

33 
	$__os_sut_de_io
()

35 
t
;

37 
t
 = 0;

39 #ifde
HAVE_O_DIRECT


40 
t
 = 1;

42 #i
	`defed
(
HAVE_DIRECTIO
&& defed(
DIRECTIO_ON
)

43 
t
 = 1;

45  (
t
);

46 
	}
}

55 
	$__os_sut_db_gi
()

58 
	}
}

67 
	$__os_sut_iti
()

70 
	}
}

	@../os/os_dir.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_DIRECTORY
 1

	)

12 
	~"db_t.h
"

21 
	$__os_dli
(
dbv
, 
d
, 
me
, 

)

22 
DB_ENV
 *
dbv
;

23 cڡ *
d
;

24 ***
me
;

25 *

;

27 
dt
 *
dp
;

28 
DIR
 *
dp
;

29 

 
sb
;

30 
ysz
, 
t
, 
t
;

31 **
mes
, 
buf
[
DB_MAXPATHLEN
];

33 i(
dbv
 !
NULL
 &&

34 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

35 
	`__db_msg
(
dbv
, "fes: deyi %s", 
d
);

37 i(
	`DB_GLOBAL
(
j_dli
!
NULL
)

38  (
	`DB_GLOBAL
(
j_dli
)(
d
, 
me
, 

));

40 #ifde
HAVE_VXWORKS


41 i((
dp
 = 
	`ݒd
((*)
d
)=
NULL
)

43 i((
dp
 = 
	`ݒd
(
d
)=
NULL
)

45  (
	`__os_g_o
());

46 
mes
 = 
NULL
;

47 
ysz
 = 
t
 = 0; (
dp
 = 
	`add
(
dp
)!
NULL
;) {

48 
	`tf
(
buf
, (buf), "%s/%s", 
d
, 
dp
->
d_me
);

56 
	`RETRY_CHK
(
	`
(
buf
, &
sb
), 
t
);

57 i(
t
 != 0) {

58 
t
 = 
	`__os_posix_r
(ret);

59 
r
;

61 i(!
	`S_ISREG
(
sb
.
_mode
))

64 i(
t
 >
ysz
) {

65 
ysz
 += 100;

66 i((
t
 = 
	`__os_loc
(
dbv
,

67 (
u_t
)
ysz
 * (
mes
[0]), &names)) != 0)

68 
r
;

70 i((
t
 = 
	`__os_rdup
(
dbv
, 
dp
->
d_me
, &
mes
[
t
])) != 0)

71 
r
;

72 
t
++;

74 ()
	`od
(
dp
);

76 *
me
 = 
mes
;

77 *

 = 
t
;

80 
r
: i(
mes
 !
NULL
)

81 
	`__os_d
(
dbv
, 
mes
, 
t
);

82 i(
dp
 !
NULL
)

83 ()
	`od
(
dp
);

84  (
t
);

85 
	}
}

94 
	$__os_d
(
dbv
, 
mes
, 
t
)

95 
DB_ENV
 *
dbv
;

96 **
mes
;

97 
t
;

99 i(
	`DB_GLOBAL
(
j_d
!
NULL
)

100 
	`DB_GLOBAL
(
j_d
)(
mes
, 
t
);

102 
t
 > 0)

103 
	`__os_
(
dbv
, 
mes
[--
t
]);

104 
	`__os_
(
dbv
, 
mes
);

106 
	}
}

	@../os/os_errno.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_g_o_t_zo
()

23  (
o
);

24 
	}
}

40 
	$__os_g_o
()

43  (
	`__os_g_sy
());

44 
	}
}

55 
	$__os_g_Ë
()

58  (
	`__os_g_sy
());

59 
	}
}

69 
	$__os_g_sy
()

72 i(
o
 == 0)

73 
	`__os_t_o
(
EAGAIN
);

74  (
o
);

75 
	}
}

84 
	$__os_t_o
(
evue
)

85 
evue
;

95 
o
 =

96 
evue
 >0 ?vu: (evu=
DB_RUNRECOVERY
 ? 
EFAULT
 : 
EINVAL
);

97 
	}
}

106 
	$__os_
(
r
, 
buf
, 
n
)

107 
r
;

108 *
buf
;

109 
size_t
 
n
;

112 ()
	`y
(
buf
, 
	`
(
r
), 
n
 - 1);

113 
buf
[
n
 - 1] = '\0';

115  (
buf
);

116 
	}
}

125 
	$__os_posix_r
(
r
)

126 
r
;

128  (
r
);

129 
	}
}

	@../os/os_fid.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_feid
(
dbv
, 
ame
, 
unique_okay
, 
fidp
)

21 
DB_ENV
 *
dbv
;

22 cڡ *
ame
;

23 
unique_okay
;

24 
u_t8_t
 *
fidp
;

26 
pid_t
 
pid
;

27 
size_t
 
i
;

28 
u_t32_t
 
tmp
;

29 
u_t8_t
 *
p
;

31 #ifde
HAVE_STAT


32 

 
sb
;

33 
t
;

46 
	`memt
(
fidp
, 0, 
DB_FILE_ID_LEN
);

47 #ifde
HAVE_VXWORKS


48 
	`RETRY_CHK
((
	`
((*)
ame
, &
sb
)), 
t
);

50 
	`RETRY_CHK
((
	`
(
ame
, &
sb
)), 
t
);

52 i(
t
 != 0) {

53 
	`__db_sy
(
dbv
, 
t
, ": %s", 
ame
);

54  (
	`__os_posix_r
(
t
));

83 
tmp
 = (
u_t32_t
)
sb
.
_o
;

84 
p
 = (
u_t8_t
 *)&
tmp
, 
i
 = (
u_t32_t
); i > 0; --i)

85 *
fidp
++ = *
p
++;

87 
tmp
 = (
u_t32_t
)
sb
.
_dev
;

88 
p
 = (
u_t8_t
 *)&
tmp
, 
i
 = (
u_t32_t
); i > 0; --i)

89 *
fidp
++ = *
p
++;

98 ()
	`y
((*)
fidp
, 
ame
, 
DB_FILE_ID_LEN
);

101 i(
unique_okay
) {

103 
	`__os_unique_id
(
dbv
, &
tmp
);

104 
p
 = (
u_t8_t
 *)&
tmp
, 
i
 = (
u_t32_t
); i > 0; --i)

105 *
fidp
++ = *
p
++;

126 i(
	`DB_GLOBAL
(
fid_rl
) == 0) {

127 
	`__os_id
(
dbv
, &
pid
, 
NULL
);

128 
	`DB_GLOBAL
(
fid_rl
(
u_t32_t
)
pid
;

130 
	`DB_GLOBAL
(
fid_rl
) += 100000;

132 
p
 = (
u_t8_t
 *)

133 &
	`DB_GLOBAL
(
fid_rl
), 
i
 = (
u_t32_t
); i > 0; --i)

134 *
fidp
++ = *
p
++;

138 
	}
}

	@../os/os_flock.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_fdlock
(
dbv
, 
fhp
, 
offt
, 
acque
, 
nowa
)

21 
DB_ENV
 *
dbv
;

22 
DB_FH
 *
fhp
;

23 
acque
, 
nowa
;

24 
off_t
 
offt
;

26 #ifde
HAVE_FCNTL


27 
ock
 

;

28 
t
, 
t_t
;

30 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
&& fhp->
fd
 != -1);

32 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

33 
	`__db_msg
(
dbv
,

35 
fhp
->
me
, 
acque
 ? "acque": "a", (
u_lg
)
offt
);

37 

.
l_t
 = 
offt
;

38 

.
l_n
 = 1;

39 

.
l_ty
 = 
acque
 ? 
F_WRLCK
 : 
F_UNLCK
;

40 

.
l_wh
 = 
SEEK_SET
;

42 
	`RETRY_CHK_EINTR_ONLY
(

43 (
	`f
(
fhp
->
fd
, 
nowa
 ? 
F_SETLK
 : 
F_SETLKW
, &

)), 
t
);

45 i(
t
 == 0)

48 i((
t_t
 = 
	`__os_posix_r
(
t
)!
EACCES
 &&_!
EAGAIN
)

49 
	`__db_sy
(
dbv
, 
t
, "fcntl");

50  (
t_t
);

52 
	`COMPQUIET
(
fhp
, 
NULL
);

53 
	`COMPQUIET
(
acque
, 0);

54 
	`COMPQUIET
(
nowa
, 0);

55 
	`COMPQUIET
(
offt
, 0);

56 
	`__db_sy
(
dbv
, 
DB_OPNOTSUP
, "advisory fileocking unavailable");

57  (
DB_OPNOTSUP
);

59 
	}
}

	@../os/os_fsync.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ifdef 
HAVE_VXWORKS


14 
	~"ioLib.h
"

16 
	#fsync
(
fd

	`__vx_fsync
(fd)

	)

19 
	$__vx_fsync
(
fd
)

20 
fd
;

22 
t
;

29 i((
t
 = 
	`iol
(
fd
, 
FIOSYNC
, 0)!
ERROR
)

31  (
t
);

32 
	}
}

35 #ifde
__hp3000s900


36 
	#fsync
(
fd

	`__m_fsync
(fd)

	)

39 
	$__m_fsync
(
fd
)

40 
fd
;

42 
	`FCONTROL
(, , *);

44 
	`FCONTROL
(
	`_MPE_FILENO
(
fd
), 2, 
NULL
);

45 
	`FCONTROL
(
	`_MPE_FILENO
(
fd
), 6, 
NULL
);

47 
	}
}

57 
	$__os_fsync
(
dbv
, 
fhp
)

58 
DB_ENV
 *
dbv
;

59 
DB_FH
 *
fhp
;

61 
t
;

63 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
&& fhp->
fd
 != -1);

69 i(
	`F_ISSET
(
fhp
, 
DB_FH_NOSYNC
))

72 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

73 
	`__db_msg
(
dbv
, "fes: flush %s", 
fhp
->
me
);

75 i(
	`DB_GLOBAL
(
j_fsync
!
NULL
)

76 
t
 = 
	`DB_GLOBAL
(
j_fsync
)(
fhp
->
fd
);

78 #i
	`defed
(
F_FULLFSYNC
)

79 
	`RETRY_CHK
((
	`f
(
fhp
->
fd
, 
F_FULLFSYNC
, 0)), 
t
);

84 i(
t
 =
ENOTSUP
)

85 
	`RETRY_CHK
((
	`fsync
(
fhp
->
fd
)), 
t
);

86 #i
	`defed
(
HAVE_FDATASYNC
)

87 
	`RETRY_CHK
((
	`fdasync
(
fhp
->
fd
)), 
t
);

89 
	`RETRY_CHK
((
	`fsync
(
fhp
->
fd
)), 
t
);

93 i(
t
 != 0) {

94 
	`__db_sy
(
dbv
, 
t
, "fsync");

95 
t
 = 
	`__os_posix_r
(ret);

97  (
t
);

98 
	}
}

	@../os/os_fzero.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

29 
	$__os_zofl
(
dbv
, 
fhp
)

30 
DB_ENV
 *
dbv
;

31 
DB_FH
 *
fhp
;

33 #ifde
HAVE_FILESYSTEM_NOTZERO


34 
off_t
 
_offt
, 
wre_offt
;

35 
size_t
 
bn
, 
nw
;

36 
u_t32_t
 
bys
, 
mbys
;

37 
group_sync
, 
ed_
, 
t
;

38 
u_t8_t
 
buf
[8 * 1024], *
bp
;

40 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

41 
	`__db_msg
(
dbv
, "fes: zo-f%s", 
fhp
->
me
);

44 
wre_offt
 = (
off_t
)
fhp
->
pgno
 * fhp->
pgsize
 + fhp->
offt
;

47 i((
t
 = 
	`__os_iofo
(
dbv
, 
NULL
, 
fhp
, &
mbys
, &
bys
, NULL)) != 0)

48  (
t
);

49 
_offt
 = (
off_t
)
mbys
 * 
MEGABYTE
 + 
bys
;

52 i(
_offt
 >
wre_offt
)

56 #unde
ZF_LARGE_WRITE


57 
	#ZF_LARGE_WRITE
 (64 * 1024)

	)

58 i(
wre_offt
 - 
_offt
 > 
ZF_LARGE_WRITE
) {

59 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
ZF_LARGE_WRITE
, &
bp
)) != 0)

60  (
t
);

61 
bn
 = 
ZF_LARGE_WRITE
;

62 
ed_
 = 1;

64 
bp
 = 
buf
;

65 
bn
 = (
buf
);

66 
ed_
 = 0;

67 
	`memt
(
buf
, 0, (buf));

71 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
mbys
, 
MEGABYTE
, 
bys
)) != 0)

72 
r
;

80 
group_sync
 = 0; 
_offt
 < 
wre_offt
; group_sync = 1) {

81 i(
wre_offt
 - 
_offt
 <(
off_t
)
bn
) {

82 
bn
 = (
size_t
)(
wre_offt
 - 
_offt
);

83 i(
group_sync
 && (
t
 = 
	`__os_fsync
(
dbv
, 
fhp
)) != 0)

84 
r
;

86 i((
t
 = 
	`__os_physwre
(
dbv
, 
fhp
, 
bp
, 
bn
, &
nw
)) != 0)

87 
r
;

88 
_offt
 +
bn
;

90 i((
t
 = 
	`__os_fsync
(
dbv
, 
fhp
)) != 0)

91 
r
;

94 
mbys
 = (
u_t32_t
)(
wre_offt
 / 
MEGABYTE
);

95 
bys
 = (
u_t32_t
)(
wre_offt
 % 
MEGABYTE
);

96 
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
mbys
, 
MEGABYTE
, 
bys
);

98 
r
: i(
ed_
)

99 
	`__os_
(
dbv
, 
bp
);

100  (
t
);

102 
	`COMPQUIET
(
dbv
, 
NULL
);

103 
	`COMPQUIET
(
fhp
, 
NULL
);

106 
	}
}

	@../os/os_getenv.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_gv
(
dbv
, 
me
, 
b
, 
bu
)

21 
DB_ENV
 *
dbv
;

22 cڡ *
me
;

23 **
b
;

24 
size_t
 
bu
;

36 #ifde
HAVE_GETENV


37 *
p
;

39 i((
p
 = 
	`gv
(
me
)!
NULL
) {

40 i(
	`
(
p
< 
bu
) {

41 ()
	`ry
(*
b
, 
p
);

45 *
b
 = 
NULL
;

46 
	`__db_rx
(
dbv
,

48 
me
, 
p
);

49  (
EINVAL
);

52 
	`COMPQUIET
(
dbv
, 
NULL
);

53 
	`COMPQUIET
(
me
, 
NULL
);

54 
	`COMPQUIET
(
bu
, 0);

56 *
b
 = 
NULL
;

58 
	}
}

	@../os/os_handle.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

21 
	$__os_ݒhd
(
dbv
, 
me
, 
ags
, 
mode
, 
fh
)

22 
DB_ENV
 *
dbv
;

23 cڡ *
me
;

24 
ags
, 
mode
;

25 
DB_FH
 **
fh
;

27 
DB_FH
 *
fhp
;

28 
u_t
 
ĕt
, 
s
;

29 
t
;

30 #ifde
HAVE_VXWORKS


31 
wags
;

41 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_FH
), &
fhp
)) != 0)

42  (
t
);

43 i((
t
 = 
	`__os_rdup
(
dbv
, 
me
, &
fhp
->name)) != 0)

44 
r
;

45 i(
dbv
 !
NULL
) {

46 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_v
);

47 
	`TAILQ_INSERT_TAIL
(&
dbv
->
fdli
, 
fhp
, 
q
);

48 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_v
);

49 
	`F_SET
(
fhp
, 
DB_FH_ENVLINK
);

52 #ifde
HAVE_QNX


53 i(
	`LF_ISSET
(
DB_OSO_REGION
)) {

54 i((
t
 =

55 
	`__os_qnx_gi_ݒ
(
dbv
, 
me
, 
oags
, 
mode
, 
fhp
)) != 0)

56 
r
;

57 
de
;

62 i(
	`DB_GLOBAL
(
j_ݒ
!
NULL
) {

63 i((
fhp
->
fd
 = 
	`DB_GLOBAL
(
j_ݒ
)(
me
, 
ags
, 
mode
)) == -1) {

64 
t
 = 
	`__os_posix_r
(
	`__os_g_sy
());

65 
r
;

67 
de
;

70 
s
 = 0;

71 
ĕt
 = 1;repeat < 4; ++nrepeat) {

72 
t
 = 0;

73 #ifdef 
HAVE_VXWORKS


84 i(
	`LF_ISSET
(
O_CREAT
)) {

85 
DB_BEGIN_SINGLE_THREAD
;

86 
wags
 = 
ags
 & ~(
O_CREAT
 | 
O_EXCL
);

87 i((
fhp
->
fd
 = 
	`ݒ
(
me
, 
wags
, 
mode
)) != -1) {

94 
	`F_SET
(
fhp
, 
DB_FH_OPENED
);

95 i(
	`LF_ISSET
(
O_EXCL
)) {

101 
DB_END_SINGLE_THREAD
;

102 
t
 = 
EEXIST
;

103 
r
;

115 
fhp
->
fd
 = 
	`t
(
me
, 
wags
);

116 
DB_END_SINGLE_THREAD
;

120 #ifde
__VMS


130 
fhp
->
fd
 = 
	`ݒ
(
me
, 
ags
, 
mode
, "shr=get,put,upd,del,upi");

132 
fhp
->
fd
 = 
	`ݒ
(
me
, 
ags
, 
mode
);

134 i(
fhp
->
fd
 != -1) {

135 
t
 = 0;

139 
t
 = 
	`__os_posix_r
(
	`__os_g_sy
())) {

140 
EMFILE
:

141 
ENFILE
:

142 
ENOSPC
:

149 
	`__os_p
(
dbv
, 
ĕt
 * 2, 0);

151 
EAGAIN
:

152 
EBUSY
:

153 
EINTR
:

158 i(++
s
 < 
DB_RETRY
)

159 --
ĕt
;

163 
r
;

167 i(
t
 == 0) {

168 #i
	`defed
(
HAVE_FCNTL_F_SETFD
)

170 i(
	`f
(
fhp
->
fd
, 
F_SETFD
, 1) == -1) {

171 
t
 = 
	`__os_g_sy
();

172 
	`__db_sy
(
dbv
, 
t
, "fcntl(F_SETFD)");

173 
t
 = 
	`__os_posix_r
(ret);

174 
r
;

178 
de
: 
	`F_SET
(
fhp
, 
DB_FH_OPENED
);

179 *
fh
 = 
fhp
;

183 
r
: ()
	`__os_ohd
(
dbv
, 
fhp
);

184  (
t
);

185 
	}
}

194 
	$__os_ohd
(
dbv
, 
fhp
)

195 
DB_ENV
 *
dbv
;

196 
DB_FH
 *
fhp
;

198 
t
;

200 
t
 = 0;

206 
	`DB_ASSERT
(
dbv
, dbv !
NULL
 || !
	`F_ISSET
(
fhp
, 
DB_FH_ENVLINK
));

208 i(
dbv
 !
NULL
) {

209 i(
fhp
->
me
 !
NULL
 && 
	`FLD_ISSET
(

210 
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

211 
	`__db_msg
(
dbv
, "fes: clo %s", 
fhp
->
me
);

213 i(
	`F_ISSET
(
fhp
, 
DB_FH_ENVLINK
)) {

218 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_v
);

219 
	`TAILQ_REMOVE
(&
dbv
->
fdli
, 
fhp
, 
q
);

220 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_v
);

225 i(
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
)) {

226 i(
	`DB_GLOBAL
(
j_o
!
NULL
)

227 
t
 = 
	`DB_GLOBAL
(
j_o
)(
fhp
->
fd
);

229 
	`RETRY_CHK
((
	`o
(
fhp
->
fd
)), 
t
);

230 i(
t
 != 0) {

231 
	`__db_sy
(
dbv
, 
t
, "close");

232 
t
 = 
	`__os_posix_r
(ret);

237 i(
	`F_ISSET
(
fhp
, 
DB_FH_UNLINK
))

238 ()
	`__os_uƚk
(
dbv
, 
fhp
->
me
);

240 i(
fhp
->
me
 !
NULL
)

241 
	`__os_
(
dbv
, 
fhp
->
me
);

242 
	`__os_
(
dbv
, 
fhp
);

244  (
t
);

245 
	}
}

	@../os/os_map.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ifde
HAVE_SYSTEM_INCLUDE_FILES


14 #ifde
HAVE_MMAP


15 
	~<sys/mm.h
>

18 #ifde
HAVE_SHMGET


19 
	~<sys/c.h
>

20 
	~<sys/shm.h
>

24 #ifde
HAVE_MMAP


25 
__os_m
 
__P
((
DB_ENV
 *, *, 
DB_FH
 *, 
size_t
, , , **));

27 #ifde
HAVE_SHMGET


28 
__shm_mode
 
__P
((
DB_ENV
 *));

30 
__no_syem_mem
 
__P
((
DB_ENV
 *));

40 
	$__os_r_syach
(
dbv
, 
f
, 

)

41 
DB_ENV
 *
dbv
;

42 
REGINFO
 *
f
;

43 
REGION
 *

;

45 i(
	`F_ISSET
(
dbv
, 
DB_ENV_SYSTEM_MEM
)) {

56 #i
	`defed
(
HAVE_MUTEX_HPPA_MSEM_INIT
)

57 
	`__db_rx
(
dbv
,

59  (
EINVAL
);

61 #i
	`defed
(
HAVE_SHMGET
)

63 
key_t
 
gid
;

64 
id
, 
mode
, 
t
;

75 i(
	`F_ISSET
(
f
, 
REGION_CREATE
)) {

82 i(
dbv
->
shm_key
 =
INVALID_REGION_SEGID
) {

83 
	`__db_rx
(
dbv
,

85  (
EINVAL
);

87 
gid
 = (
key_t
)(
dbv
->
shm_key
 + (
f
->
id
 - 1));

96 i((
id
 = 
	`shmg
(
gid
, 0, 0)) != -1) {

97 ()
	`shml
(
id
, 
IPC_RMID
, 
NULL
);

98 i((
id
 = 
	`shmg
(
gid
, 0, 0)) != -1) {

99 
	`__db_rx
(
dbv
,

101 ()
gid
);

102  (
EAGAIN
);

110 
mode
 = 
IPC_CREAT
 | 
	`__shm_mode
(
dbv
);

111 i((
id
 = 
	`shmg
(
gid
, 

->
size
, 
mode
)) == -1) {

112 
t
 = 
	`__os_g_sy
();

113 
	`__db_sy
(
dbv
, 
t
,

115 ()
gid
);

116  (
	`__os_posix_r
(
t
));

118 

->
gid
 = 
id
;

120 
id
 = 

->
gid
;

122 i((
f
->
addr
 = 
	`shm
(
id
, 
NULL
, 0)) == (*)-1) {

123 
f
->
addr
 = 
NULL
;

124 
t
 = 
	`__os_g_sy
();

125 
	`__db_sy
(
dbv
, 
t
,

126 "shm: id %d: ubˁةchshed syem memyegi", 
id
);

127  (
	`__os_posix_r
(
t
));

133  (
	`__no_syem_mem
(
dbv
));

137 #ifde
HAVE_MMAP


139 
DB_FH
 *
fhp
;

140 
t
;

142 
fhp
 = 
NULL
;

150 i((
t
 = 
	`__os_ݒ
(
dbv
, 
f
->
me
, 0,

151 
DB_OSO_REGION
 |

152 (
	`F_ISSET
(
f
, 
REGION_CREATE_OK
? 
DB_OSO_CREATE
 : 0),

153 
dbv
->
db_mode
, &
fhp
)) != 0)

154 
	`__db_r
(
dbv
, 
t
, "%s", 
f
->
me
);

163 i(
t
 =0 && 
	`F_ISSET
(
f
, 
REGION_CREATE
)) {

164 i(
	`F_ISSET
(
dbv
, 
DB_ENV_REGION_INIT
))

165 
t
 = 
	`__db_fe_wre
(
dbv
, 
fhp
,

166 

->
size
 / 
MEGABYTE
,p->size % MEGABYTE, 0x00);

168 
t
 = 
	`__db_fe_exnd
(
dbv
, 
fhp
, 

->
size
);

172 i(
t
 == 0)

173 
t
 = 
	`__os_m
(
dbv
,

174 
f
->
me
, 
fhp
, 

->
size
, 1, 0, &f->
addr
);

176 i(
fhp
 !
NULL
)

177 ()
	`__os_ohd
(
dbv
, 
fhp
);

179  (
t
);

182 
	`COMPQUIET
(
f
, 
NULL
);

183 
	`COMPQUIET
(

, 
NULL
);

184 
	`__db_rx
(
dbv
,

186  (
DB_OPNOTSUP
);

188 
	}
}

197 
	$__os_r_sysdach
(
dbv
, 
f
, 
deroy
)

198 
DB_ENV
 *
dbv
;

199 
REGINFO
 *
f
;

200 
deroy
;

202 
REGION
 *

;

203 
t
;

205 

 = 
f
->rp;

207 i(
	`F_ISSET
(
dbv
, 
DB_ENV_SYSTEM_MEM
)) {

208 #ifde
HAVE_SHMGET


209 
gid
;

215 
gid
 = 

->segid;

216 i(
deroy
)

217 

->
gid
 = 
INVALID_REGION_SEGID
;

219 i(
	`shmdt
(
f
->
addr
) != 0) {

220 
t
 = 
	`__os_g_sy
();

221 
	`__db_sy
(
dbv
, 
t
, "shmdt");

222  (
	`__os_posix_r
(
t
));

225 i(
deroy
 && 
	`shml
(
gid
, 
IPC_RMID
,

226 
NULL
!0 && (
t
 = 
	`__os_g_sy
()!
EINVAL
) {

227 
	`__db_sy
(
dbv
, 
t
,

229 
gid
);

230  (
	`__os_posix_r
(
t
));

235  (
	`__no_syem_mem
(
dbv
));

239 #ifde
HAVE_MMAP


240 #ifde
HAVE_MUNLOCK


241 i(
	`F_ISSET
(
dbv
, 
DB_ENV_LOCKDOWN
))

242 ()
	`muock
(
f
->
addr
, 

->
size
);

244 i(
	`munm
(
f
->
addr
, 

->
size
) != 0) {

245 
t
 = 
	`__os_g_sy
();

246 
	`__db_sy
(
dbv
, 
t
, "munmap");

247  (
	`__os_posix_r
(
t
));

250 i(
deroy
 && (
t
 = 
	`__os_gi_uƚk
(
dbv
, 
f
->
me
)) != 0)

251  (
t
);

255 
	`COMPQUIET
(
deroy
, 0);

256 
	`COMPQUIET
(
t
, 0);

257  (
EINVAL
);

259 
	}
}

269 
	$__os_mfe
(
dbv
, 
th
, 
fhp
, 
n
, 
is_rdly
, 
add
)

270 
DB_ENV
 *
dbv
;

271 *
th
;

272 
DB_FH
 *
fhp
;

273 
is_rdly
;

274 
size_t
 
n
;

275 **
add
;

277 #i
	`defed
(
HAVE_MMAP
&& !defed(
HAVE_QNX
)

278 i(
dbv
 !
NULL
 &&

279 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

280 
	`__db_msg
(
dbv
, "fes: mm %s", 
th
);

282  (
	`__os_m
(
dbv
, 
th
, 
fhp
, 
n
, 0, 
is_rdly
, 
add
));

284 
	`COMPQUIET
(
dbv
, 
NULL
);

285 
	`COMPQUIET
(
th
, 
NULL
);

286 
	`COMPQUIET
(
fhp
, 
NULL
);

287 
	`COMPQUIET
(
is_rdly
, 0);

288 
	`COMPQUIET
(
n
, 0);

289 
	`COMPQUIET
(
add
, 
NULL
);

290  (
EINVAL
);

292 
	}
}

301 
	$__os_unmfe
(
dbv
, 
addr
, 
n
)

302 
DB_ENV
 *
dbv
;

303 *
addr
;

304 
size_t
 
n
;

306 
t
;

308 i(
dbv
 !
NULL
 &&

309 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

310 
	`__db_msg
(
dbv
, "fileops: munmap");

313 i(
	`DB_GLOBAL
(
j_unm
!
NULL
)

314  (
	`DB_GLOBAL
(
j_unm
)(
addr
, 
n
));

316 #ifde
HAVE_MMAP


317 #ifde
HAVE_MUNLOCK


318 i(
	`F_ISSET
(
dbv
, 
DB_ENV_LOCKDOWN
))

319 
	`RETRY_CHK
((
	`muock
(
addr
, 
n
)), 
t
);

325 
	`COMPQUIET
(
dbv
, 
NULL
);

327 
	`RETRY_CHK
((
	`munm
(
addr
, 
n
)), 
t
);

328 
t
 = 
	`__os_posix_r
(ret);

330 
	`COMPQUIET
(
dbv
, 
NULL
);

331 
t
 = 
EINVAL
;

333  (
t
);

334 
	}
}

336 #ifde
HAVE_MMAP


342 
	$__os_m
(
dbv
, 
th
, 
fhp
, 
n
, 
is_gi
, 
is_rdly
, 
add
)

343 
DB_ENV
 *
dbv
;

344 *
th
;

345 
DB_FH
 *
fhp
;

346 
is_gi
, 
is_rdly
;

347 
size_t
 
n
;

348 **
add
;

350 *
p
;

351 
ags
, 

, 
t
;

354 i(
	`DB_GLOBAL
(
j_m
!
NULL
)

355  (
	`DB_GLOBAL
(
j_m
)

356 (
th
, 
n
, 
is_gi
, 
is_rdly
, 
add
));

358 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
&& fhp->
fd
 != -1);

364 
ags
 = 
is_rdly
 ? 
MAP_PRIVATE
 : 
MAP_SHARED
;

366 #ifde
MAP_FILE


372 
ags
 |
MAP_FILE
;

382 #ifde
MAP_HASSEMAPHORE


383 i(
is_gi
 && !
is_rdly
)

384 
ags
 |
MAP_HASSEMAPHORE
;

386 
	`COMPQUIET
(
is_gi
, 0);

398 #ifde
MAP_NOSYNC


399 
ags
 |
MAP_NOSYNC
;

402 

 = 
PROT_READ
 | (
is_rdly
 ? 0 : 
PROT_WRITE
);

417 #ifde
VMS


418 i(
	`__os_fsync
(
dbv
, 
fhp
) == -1)

419  (
	`__os_posix_r
(
	`__os_g_sy
()));

423 #ide
MAP_FAILED


424 
	#MAP_FAILED
 -1

	)

426 i((
p
 = 
	`mm
(
NULL
,

427 
n
, 

, 
ags
, 
fhp
->
fd
, (
off_t
)0)=(*)
MAP_FAILED
) {

428 
t
 = 
	`__os_g_sy
();

429 
	`__db_sy
(
dbv
, 
t
, "mmap");

430  (
	`__os_posix_r
(
t
));

433 #ifde
HAVE_MLOCK


443 i(
	`F_ISSET
(
dbv
, 
DB_ENV_LOCKDOWN
&& 
	`mlock
(
p
, 
n
) != 0) {

444 
t
 = 
	`__os_g_sy
();

445 ()
	`munm
(
p
, 
n
);

446 
	`__db_sy
(
dbv
, 
t
, "mlock");

447  (
	`__os_posix_r
(
t
));

450 
	`COMPQUIET
(
dbv
, 
NULL
);

453 *
add
 = 
p
;

455 
	}
}

458 #ifde
HAVE_SHMGET


459 #ide
SHM_R


460 
	#SHM_R
 0400

	)

462 #ide
SHM_W


463 
	#SHM_W
 0200

	)

472 
	$__shm_mode
(
dbv
)

473 
DB_ENV
 *
dbv
;

475 
mode
;

478 i(
dbv
->
db_mode
 == 0)

479  (
SHM_R
 | 
SHM_W
 | SHM_R >> 3 | SHM_W >> 3);

481 
mode
 = 0;

482 i(
dbv
->
db_mode
 & 
S_IRUSR
)

483 
mode
 |
SHM_R
;

484 i(
dbv
->
db_mode
 & 
S_IWUSR
)

485 
mode
 |
SHM_W
;

486 i(
dbv
->
db_mode
 & 
S_IRGRP
)

487 
mode
 |
SHM_R
 >> 3;

488 i(
dbv
->
db_mode
 & 
S_IWGRP
)

489 
mode
 |
SHM_W
 >> 3;

490 i(
dbv
->
db_mode
 & 
S_IROTH
)

491 
mode
 |
SHM_R
 >> 6;

492 i(
dbv
->
db_mode
 & 
S_IWOTH
)

493 
mode
 |
SHM_W
 >> 6;

494  (
mode
);

495 
	}
}

502 
	$__no_syem_mem
(
dbv
)

503 
DB_ENV
 *
dbv
;

505 
	`__db_rx
(
dbv
,

507  (
DB_OPNOTSUP
);

508 
	}
}

	@../os/os_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

17 
	$db_v_t_func_o
(
func_o
)

18 (*
func_o

	`__P
(());

20 
	`DB_GLOBAL
(
j_o

func_o
;

22 
	}
}

28 
	$db_v_t_func_d
(
func_d
)

29 (*
func_d

	`__P
((**, ));

31 
	`DB_GLOBAL
(
j_d

func_d
;

33 
	}
}

40 
	$db_v_t_func_dli
(
func_dli
)

41 (*
func_dli

	`__P
((const *, ***, *));

43 
	`DB_GLOBAL
(
j_dli

func_dli
;

45 
	}
}

51 
	$db_v_t_func_exis
(
func_exis
)

52 (*
func_exis

	`__P
((const *, *));

54 
	`DB_GLOBAL
(
j_exis

func_exis
;

56 
	}
}

62 
	$db_v_t_func_
(
func_
)

63 (*
func_

	`__P
((*));

65 
	`DB_GLOBAL
(
j_

func_
;

67 
	}
}

73 
	$db_v_t_func_fsync
(
func_fsync
)

74 (*
func_fsync

	`__P
(());

76 
	`DB_GLOBAL
(
j_fsync

func_fsync
;

78 
	}
}

84 
	$db_v_t_func_run
(
func_run
)

85 (*
func_run

	`__P
((, 
off_t
));

87 
	`DB_GLOBAL
(
j_run

func_run
;

89 
	}
}

96 
	$db_v_t_func_iofo
(
func_iofo
)

97 (*
func_iofo
)

98 
	`__P
((cڡ *, , 
u_t32_t
 *, u_int32_t *, u_int32_t *));

100 
	`DB_GLOBAL
(
j_iofo

func_iofo
;

102 
	}
}

108 
	$db_v_t_func_mloc
(
func_mloc
)

109 *(*
func_mloc

	`__P
((
size_t
));

111 
	`DB_GLOBAL
(
j_mloc

func_mloc
;

113 
	}
}

120 
	$db_v_t_func_m
(
func_m
)

121 (*
func_m

	`__P
((*, 
size_t
, , , **));

123 
	`DB_GLOBAL
(
j_m

func_m
;

125 
	}
}

132 
	$db_v_t_func_d
(
func_d
)

133 
	$ssize_t
 (*
func_d

	`__P
((, *, 
size_t
, 
off_t
));

135 
	`DB_GLOBAL
(
j_d

func_d
;

137 
	}
}

144 
	$db_v_t_func_pwre
(
func_pwre
)

145 
	$ssize_t
 (*
func_pwre

	`__P
((, cڡ *, 
size_t
, 
off_t
));

147 
	`DB_GLOBAL
(
j_pwre

func_pwre
;

149 
	}
}

155 
	$db_v_t_func_ݒ
(
func_ݒ
)

156 (*
func_ݒ

	`__P
((const *, , ...));

158 
	`DB_GLOBAL
(
j_ݒ

func_ݒ
;

160 
	}
}

166 
	$db_v_t_func_ad
(
func_ad
)

167 
	$ssize_t
 (*
func_ad

	`__P
((, *, 
size_t
));

169 
	`DB_GLOBAL
(
j_ad

func_ad
;

171 
	}
}

177 
	$db_v_t_func_loc
(
func_loc
)

178 *(*
func_loc

	`__P
((*, 
size_t
));

180 
	`DB_GLOBAL
(
j_loc

func_loc
;

182 
	}
}

189 
	$db_v_t_func_me
(
func_me
)

190 (*
func_me

	`__P
((const *, const *));

192 
	`DB_GLOBAL
(
j_me

func_me
;

194 
	}
}

201 
	$db_v_t_func_ek
(
func_ek
)

202 (*
func_ek

	`__P
((, 
off_t
, ));

204 
	`DB_GLOBAL
(
j_ek

func_ek
;

206 
	}
}

212 
	$db_v_t_func_p
(
func_p
)

213 (*
func_p

	`__P
((
u_lg
, u_long));

215 
	`DB_GLOBAL
(
j_p

func_p
;

217 
	}
}

223 
	$db_v_t_func_uƚk
(
func_uƚk
)

224 (*
func_uƚk

	`__P
((const *));

226 
	`DB_GLOBAL
(
j_uƚk

func_uƚk
;

228 
	}
}

234 
	$db_v_t_func_unm
(
func_unm
)

235 (*
func_unm

	`__P
((*, 
size_t
));

237 
	`DB_GLOBAL
(
j_unm

func_unm
;

239 
	}
}

246 
	$db_v_t_func_wre
(
func_wre
)

247 
	$ssize_t
 (*
func_wre

	`__P
((, cڡ *, 
size_t
));

249 
	`DB_GLOBAL
(
j_wre

func_wre
;

251 
	}
}

257 
	$db_v_t_func_yld
(
func_yld
)

258 (*
func_yld

	`__P
(());

260 
	`DB_GLOBAL
(
j_yld

func_yld
;

262 
	}
}

	@../os/os_mkdir.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_mkd
(
dbv
, 
me
, 
mode
)

21 
DB_ENV
 *
dbv
;

22 cڡ *
me
;

23 
mode
;

25 
t
;

27 i(
dbv
 !
NULL
 &&

28 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

29 
	`__db_msg
(
dbv
, "fes: mkd %s", 
me
);

32 #i
	`defed
(
HAVE_VXWORKS
)

33 
	`RETRY_CHK
((
	`mkd
((*)
me
)), 
t
);

35 
	`RETRY_CHK
((
	`mkd
(
me
, 
	`__db_omode
("rwx------"))), 
t
);

37 i(
t
 != 0)

38  (
	`__os_posix_r
(
t
));

41 #i!
	`defed
(
HAVE_VXWORKS
)

42 i(
mode
 != 0) {

43 
	`RETRY_CHK
((
	`chmod
(
me
, 
mode
)), 
t
);

44 i(
t
 != 0)

45 
t
 = 
	`__os_posix_r
(ret);

48  (
t
);

49 
	}
}

	@../os/os_oflags.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ifde
HAVE_SYSTEM_INCLUDE_FILES


14 #ifde
HAVE_SHMGET


15 
	~<sys/c.h
>

16 
	~<sys/shm.h
>

23 #ide
O_CREAT


24 
	#O_CREAT
 0x0200

	)

26 #ide
O_TRUNC


27 
	#O_TRUNC
 0x0400

	)

29 #ide
O_RDONLY


30 
	#O_RDONLY
 0x0000

	)

32 #ide
O_RDWR


33 
	#O_RDWR
 0x0002

	)

35 #ide
O_WRONLY


36 
	#O_WRONLY
 0x0001

	)

39 #ide
S_IREAD


40 
	#S_IREAD
 0000400

	)

42 #ide
S_IWRITE


43 
	#S_IWRITE
 0000200

	)

52 
u_t32_t


53 
	$__db_oags
(
oags
)

54 
oags
;

56 
u_t32_t
 
dbags
;

58 
dbags
 = 0;

60 i(
oags
 & 
O_CREAT
)

61 
dbags
 |
DB_CREATE
;

63 i(
oags
 & 
O_TRUNC
)

64 
dbags
 |
DB_TRUNCATE
;

72 #idef 
O_ACCMODE


73 
	#O_ACCMODE
 (
O_RDONLY
 | 
O_RDWR
 | 
O_WRONLY
)

	)

75 
oags
 & 
O_ACCMODE
) {

76 
O_RDWR
:

77 
O_WRONLY
:

80 
dbags
 |
DB_RDONLY
;

83  (
dbags
);

84 
	}
}

86 #ifde
DB_WIN32


87 #idef 
S_IRUSR


88 
	#S_IRUSR
 
S_IREAD


	)

90 #idef 
S_IWUSR


91 
	#S_IWUSR
 
S_IWRITE


	)

93 #idef 
S_IXUSR


94 
	#S_IXUSR
 0

	)

96 #idef 
S_IRGRP


97 
	#S_IRGRP
 0

	)

99 #idef 
S_IWGRP


100 
	#S_IWGRP
 0

	)

102 #idef 
S_IXGRP


103 
	#S_IXGRP
 0

	)

105 #idef 
S_IROTH


106 
	#S_IROTH
 0

	)

108 #idef 
S_IWOTH


109 
	#S_IWOTH
 0

	)

111 #idef 
S_IXOTH


112 
	#S_IXOTH
 0

	)

115 #idef 
S_IRUSR


116 
	#S_IRUSR
 0000400

	)

118 #idef 
S_IWUSR


119 
	#S_IWUSR
 0000200

	)

121 #idef 
S_IXUSR


122 
	#S_IXUSR
 0000100

	)

124 #idef 
S_IRGRP


125 
	#S_IRGRP
 0000040

	)

127 #idef 
S_IWGRP


128 
	#S_IWGRP
 0000020

	)

130 #idef 
S_IXGRP


131 
	#S_IXGRP
 0000010

	)

133 #idef 
S_IROTH


134 
	#S_IROTH
 0000004

	)

136 #idef 
S_IWOTH


137 
	#S_IWOTH
 0000002

	)

139 #idef 
S_IXOTH


140 
	#S_IXOTH
 0000001

	)

151 
	$__db_omode
(
rm
)

152 cڡ *
rm
;

154 
mode
;

155 
mode
 = 0;

156 i(
rm
[0] == 'r')

157 
mode
 |
S_IRUSR
;

158 i(
rm
[1] == 'w')

159 
mode
 |
S_IWUSR
;

160 i(
rm
[2] == 'x')

161 
mode
 |
S_IXUSR
;

162 i(
rm
[3] == 'r')

163 
mode
 |
S_IRGRP
;

164 i(
rm
[4] == 'w')

165 
mode
 |
S_IWGRP
;

166 i(
rm
[5] == 'x')

167 
mode
 |
S_IXGRP
;

168 i(
rm
[6] == 'r')

169 
mode
 |
S_IROTH
;

170 i(
rm
[7] == 'w')

171 
mode
 |
S_IWOTH
;

172 i(
rm
[8] == 'x')

173 
mode
 |
S_IXOTH
;

174  (
mode
);

175 
	}
}

	@../os/os_open.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

21 
	$__os_ݒ
(
dbv
, 
me
, 
ge_size
, 
ags
, 
mode
, 
fh
)

22 
DB_ENV
 *
dbv
;

23 cڡ *
me
;

24 
u_t32_t
 
ge_size
, 
ags
;

25 
mode
;

26 
DB_FH
 **
fh
;

28 
DB_FH
 *
fhp
;

29 
oags
, 
t
;

31 
	`COMPQUIET
(
ge_size
, 0);

33 *
fh
 = 
NULL
;

34 
oags
 = 0;

36 i(
dbv
 !
NULL
 &&

37 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

38 
	`__db_msg
(
dbv
, "fes: o%s", 
me
);

40 
	#OKFLAGS
 \

41 (
DB_OSO_ABSMODE
 | 
DB_OSO_CREATE
 | 
DB_OSO_DIRECT
 | 
DB_OSO_DSYNC
 |\

42 
DB_OSO_EXCL
 | 
DB_OSO_RDONLY
 | 
DB_OSO_REGION
 | 
DB_OSO_SEQ
 | \

43 
DB_OSO_TEMP
 | 
DB_OSO_TRUNC
)

	)

44 i((
t
 = 
	`__db_fchk
(
dbv
, "__os_ݒ", 
ags
, 
OKFLAGS
)) != 0)

45  (
t
);

47 #i
	`defed
(
O_BINARY
)

54 
oags
 |
O_BINARY
;

62 i(
	`LF_ISSET
(
DB_OSO_CREATE
))

63 
oags
 |
O_CREAT
;

65 i(
	`LF_ISSET
(
DB_OSO_EXCL
))

66 
oags
 |
O_EXCL
;

68 #ifde
HAVE_O_DIRECT


69 i(
	`LF_ISSET
(
DB_OSO_DIRECT
))

70 
oags
 |
O_DIRECT
;

72 #ifde
O_DSYNC


73 i(
	`LF_ISSET
(
DB_OSO_DSYNC
))

74 
oags
 |
O_DSYNC
;

77 i(
	`LF_ISSET
(
DB_OSO_RDONLY
))

78 
oags
 |
O_RDONLY
;

80 
oags
 |
O_RDWR
;

82 i(
	`LF_ISSET
(
DB_OSO_TRUNC
))

83 
oags
 |
O_TRUNC
;

89 i(
dbv
 !
NULL
 &&

90 
dbv
->
d_mode
 !0 && 
	`LF_ISSET
(
DB_OSO_CREATE
) &&

91 (
t
 = 
	`__db_mkth
(
dbv
, 
me
)) != 0)

92  (
t
);

95 i((
t
 = 
	`__os_ݒhd
(
dbv
, 
me
, 
oags
, 
mode
, &
fhp
)) != 0)

96  (
t
);

98 #ifde
HAVE_FCHMOD


107 i(
	`LF_ISSET
(
DB_OSO_CREATE
&& LF_ISSET(
DB_OSO_ABSMODE
))

108 ()
	`fchmod
(
fhp
->
fd
, 
mode
);

111 #ifde
O_DSYNC


116 i(
	`LF_ISSET
(
DB_OSO_DSYNC
))

117 
	`F_SET
(
fhp
, 
DB_FH_NOSYNC
);

120 #i
	`defed
(
HAVE_DIRECTIO
&& defed(
DIRECTIO_ON
)

126 i(
	`LF_ISSET
(
DB_OSO_DIRECT
))

127 ()
	`deio
(
fhp
->
fd
, 
DIRECTIO_ON
);

140 i(
	`LF_ISSET
(
DB_OSO_TEMP
)) {

141 #i
	`defed
(
HAVE_UNLINK_WITH_OPEN_FAILURE
|| defed(
CONFIG_TEST
)

142 
	`F_SET
(
fhp
, 
DB_FH_UNLINK
);

144 ()
	`__os_uƚk
(
dbv
, 
me
);

148 *
fh
 = 
fhp
;

150 
	}
}

	@../os/os_pid.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ifde
HAVE_MUTEX_SUPPORT


14 
	~"dbc/mux_t.h
"

25 
	$__os_id
(
dbv
, 
pidp
, 
tidp
)

26 
DB_ENV
 *
dbv
;

27 
pid_t
 *
pidp
;

28 
db_thadid_t
 *
tidp
;

38 i(
pidp
 !
NULL
) {

39 i(
dbv
 =
NULL
) {

40 #i
	`defed
(
HAVE_VXWORKS
)

41 *
pidp
 = 
	`skIdSf
();

43 *
pidp
 = 
	`gpid
();

46 *
pidp
 = 
dbv
->
pid_che
;

49 i(
tidp
 !
NULL
) {

50 #i
	`defed
(
DB_WIN32
)

51 *
tidp
 = 
	`GCutThadId
();

52 #i
	`defed
(
HAVE_MUTEX_UI_THREADS
)

53 *
tidp
 = 
	`thr_lf
();

54 #i
	`defed
(
HAVE_MUTEX_SOLARIS_LWP
) || \

55 
	`defed
(
HAVE_MUTEX_PTHREADS
|| defed(
HAVE_PTHREAD_API
)

56 *
tidp
 = 
	`had_lf
();

61 *
tidp
 = 0;

64 
	}
}

	@../os/os_region.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_r_ch
(
dbv
, 
f
, 

)

21 
DB_ENV
 *
dbv
;

22 
REGINFO
 *
f
;

23 
REGION
 *

;

25 
t
;

32 
	#OS_VMPAGESIZE
 (8 * 1024)

	)

33 
	#OS_VMROUNDOFF
(
i
) { \

34 i((
i
) < \

35 (
UINT32_MAX
 - 
OS_VMPAGESIZE
+ 1 || (
i
) < OS_VMPAGESIZE) \

36 (
i
+
OS_VMPAGESIZE
 - 1; \

37 (
i
-(i% 
OS_VMPAGESIZE
; \

38 }

	)

39 
	`OS_VMROUNDOFF
(

->
size
);

41 #ifde
DB_REGIONSIZE_MAX


43 i(

->
size
 > 
DB_REGIONSIZE_MAX
) {

44 
	`__db_rx
(
dbv
, "region size %lu isooarge; maximum is %lu",

45 (
u_lg
)

->
size
, (u_lg)
DB_REGIONSIZE_MAX
);

46  (
EINVAL
);

58 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

59 #i
	`defed
(
HAVE_MUTEX_HPPA_MSEM_INIT
)

67 i(
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
)) {

68 
	`__db_rx
(
dbv
, "%s",

70 
	`__db_rx
(
dbv
, "%s",

72  (
EINVAL
);

75 i((
t
 = 
	`__os_mloc
(

76 
dbv
, (
REGENV
), &
f
->
addr
)) != 0)

77  (
t
);

79 
f
->
max_loc
 = 

->
size
;

85 i(
	`DB_GLOBAL
(
j_m
!
NULL
 && (
t
 = DB_GLOBAL(j_map)

86 (
f
->
me
, 

->
size
, 1, 0, &f->
addr
)) != 0)

87  (
t
);

90 i((
t
 = 
	`__os_r_syach
(
dbv
, 
f
, 

)) != 0)

91  (
t
);

99 
f
->
addr_ig
 = inf->
addr
;

100 
f
->
addr
 = 
	`ALIGNP_INC
(f->
addr_ig
, (
size_t
));

102 

->
size_ig
 =p->
size
;

103 i(
f
->
addr
 !f->
addr_ig
)

104 

->
size
 -(
roff_t
)

105 ((
u_t8_t
 *)
f
->
addr
 - (u_t8_*)f->
addr_ig
);

108 
	}
}

117 
	$__os_r_dach
(
dbv
, 
f
, 
deroy
)

118 
DB_ENV
 *
dbv
;

119 
REGINFO
 *
f
;

120 
deroy
;

122 
REGION
 *

;

124 

 = 
f
->rp;

127 i(
f
->
addr
 !f->
addr_ig
) {

128 
f
->
addr
 = inf->
addr_ig
;

129 

->
size
 =p->
size_ig
;

133 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

134 
	`__os_
(
dbv
, 
f
->
addr
);

139 i(
	`DB_GLOBAL
(
j_unm
!
NULL
)

140  (
	`DB_GLOBAL
(
j_unm
)(
f
->
addr
, 

->
size
));

142  (
	`__os_r_sysdach
(
dbv
, 
f
, 
deroy
));

143 
	}
}

	@../os/os_rename.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

21 
	$__os_me
(
dbv
, 
dme
, 
wme
, 
st
)

22 
DB_ENV
 *
dbv
;

23 cڡ *
dme
, *
wme
;

24 
u_t32_t
 
st
;

26 
t
;

28 i(
dbv
 !
NULL
 &&

29 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

30 
	`__db_msg
(
dbv
, "fes:am%t%s", 
dme
, 
wme
);

32 i(
	`DB_GLOBAL
(
j_me
!
NULL
)

33 
t
 = 
	`DB_GLOBAL
(
j_me
)(
dme
, 
wme
);

35 
	`RETRY_CHK
((
	`me
(
dme
, 
wme
)), 
t
);

41 i(
t
 != 0) {

42 i(!
st
)

43 
	`__db_sy
(

44 
dbv
, 
t
, "m%%s", 
dme
, 
wme
);

45 
t
 = 
	`__os_posix_r
(ret);

47  (
t
);

48 
	}
}

	@../os/os_root.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_io
()

22 #ifde
HAVE_GETUID


23  (
	`guid
() == 0);

27 
	}
}

	@../os/os_rpath.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__db_h
(
th
)

21 cڡ *
th
;

23 cڡ *
s
, *
ϡ
;

25 
s
 = 
th
;

26 
ϡ
 = 
NULL
;

27 i(
PATH_SEPARATOR
[1] != '\0') {

28 ; 
s
[0] != '\0'; ++s)

29 i(
	`rchr
(
PATH_SEPARATOR
, 
s
[0]!
NULL
)

30 
ϡ
 = 
s
;

32 ; 
s
[0] != '\0'; ++s)

33 i(
s
[0] =
PATH_SEPARATOR
[0])

34 
ϡ
 = 
s
;

35  ((*)
ϡ
);

36 
	}
}

	@../os/os_rw.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

21 
	$__os_io
(
dbv
, 

, 
fhp
, 
pgno
, 
pgsize
, 
tive
, 
io_n
, 
buf
, 
ni
)

22 
DB_ENV
 *
dbv
;

23 

;

24 
DB_FH
 *
fhp
;

25 
db_pgno_t
 
pgno
;

26 
u_t32_t
 
pgsize
, 
tive
, 
io_n
;

27 
u_t8_t
 *
buf
;

28 
size_t
 *
ni
;

30 #i
	`defed
(
HAVE_PREAD
&& defed(
HAVE_PWRITE
)

31 
off_t
 
offt
;

32 
ssize_t
 
nio
;

34 
t
;

46 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
&& fhp->
fd
 != -1);

47 
	`DB_ASSERT
(
dbv
, (
pgno
 =0 && 
pgsize
 =0|| 
tive
 == 0);

49 #i
	`defed
(
HAVE_PREAD
&& defed(
HAVE_PWRITE
)

50 i((
offt
 = 
tive
) == 0)

51 
offt
 = (
off_t
)
pgno
 * 
pgsize
;

52 

) {

53 
DB_IO_READ
:

54 i(
	`DB_GLOBAL
(
j_ad
!
NULL
)

55 
ow
;

56 i(
dbv
 !
NULL
 &&

57 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS_ALL
))

58 
	`__db_msg
(
dbv
,

60 
fhp
->
me
, (
u_lg
)
io_n
, (u_lg)
offt
);

61 
nio
 = 
	`DB_GLOBAL
(
j_d
!
NULL
 ?

62 
	`DB_GLOBAL
(
j_d
)(
fhp
->
fd
, 
buf
, 
io_n
, 
offt
) :

63 
	`d
(
fhp
->
fd
, 
buf
, 
io_n
, 
offt
);

65 
DB_IO_WRITE
:

66 i(
	`DB_GLOBAL
(
j_wre
!
NULL
)

67 
ow
;

68 #ifde
HAVE_FILESYSTEM_NOTZERO


69 i(
	`__os_fs_nzo
())

70 
ow
;

72 i(
dbv
 !
NULL
 &&

73 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS_ALL
))

74 
	`__db_msg
(
dbv
,

76 
fhp
->
me
, (
u_lg
)
io_n
, (u_lg)
offt
);

77 
nio
 = 
	`DB_GLOBAL
(
j_pwre
!
NULL
 ?

78 
	`DB_GLOBAL
(
j_pwre
)(
fhp
->
fd
, 
buf
, 
io_n
, 
offt
) :

79 
	`pwre
(
fhp
->
fd
, 
buf
, 
io_n
, 
offt
);

82  (
EINVAL
);

84 i(
nio
 =(
ssize_t
)
io_n
) {

85 *
ni
 = 
io_n
;

88 
ow
:

90 
	`MUTEX_LOCK
(
dbv
, 
fhp
->
mtx_fh
);

92 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
pgno
, 
pgsize
, 
tive
)) != 0)

93 
r
;

94 

) {

95 
DB_IO_READ
:

96 
t
 = 
	`__os_ad
(
dbv
, 
fhp
, 
buf
, 
io_n
, 
ni
);

98 
DB_IO_WRITE
:

99 
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
buf
, 
io_n
, 
ni
);

102 
t
 = 
EINVAL
;

106 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 
fhp
->
mtx_fh
);

108  (
t
);

110 
	}
}

119 
	$__os_ad
(
dbv
, 
fhp
, 
addr
, 
n
, 
p
)

120 
DB_ENV
 *
dbv
;

121 
DB_FH
 *
fhp
;

122 *
addr
;

123 
size_t
 
n
;

124 
size_t
 *
p
;

126 
size_t
 
offt
;

127 
ssize_t
 

;

128 
t
;

129 
u_t8_t
 *
ddr
;

131 
t
 = 0;

133 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
&& fhp->
fd
 != -1);

135 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

136 
	`__db_msg
(
dbv
,

137 "fes:d %s: %lu bys", 
fhp
->
me
, (
u_lg
)
n
);

139 i(
	`DB_GLOBAL
(
j_ad
!
NULL
) {

140 *
p
 = 
n
;

141 i(
	`DB_GLOBAL
(
j_ad
)(
fhp
->
fd
, 
addr
, 
n
!(
ssize_t
)len) {

142 
t
 = 
	`__os_g_sy
();

143 
	`__db_sy
(
dbv
, 
t
, "read: %#lx, %lu",

144 
	`P_TO_ULONG
(
addr
), (
u_lg
)
n
);

145 
t
 = 
	`__os_posix_r
(ret);

147  (
t
);

150 
ddr
 = 
addr
, 
offt
 = 0;

151 
offt
 < 
n
; 
ddr
 +

, off+(
u_t32_t
)nr) {

152 
	`RETRY_CHK
(((

 = 
	`ad
(

153 
fhp
->
fd
, 
ddr
, 
n
 - 
offt
)< 0 ? 1 : 0), 
t
);

154 i(

 =0 || 
t
 != 0)

157 *
p
 = (
size_t
)(
ddr
 - (
u_t8_t
 *)
addr
);

158 i(
t
 != 0) {

159 
	`__db_sy
(
dbv
, 
t
, "read: %#lx, %lu",

160 
	`P_TO_ULONG
(
ddr
), (
u_lg
)
n
 - 
offt
);

161 
t
 = 
	`__os_posix_r
(ret);

163  (
t
);

164 
	}
}

173 
	$__os_wre
(
dbv
, 
fhp
, 
addr
, 
n
, 
nwp
)

174 
DB_ENV
 *
dbv
;

175 
DB_FH
 *
fhp
;

176 *
addr
;

177 
size_t
 
n
;

178 
size_t
 *
nwp
;

180 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
&& fhp->
fd
 != -1);

182 #ifde
HAVE_FILESYSTEM_NOTZERO


184 i(
	`__os_fs_nzo
()) {

185 
t
;

186 i((
t
 = 
	`__os_zofl
(
dbv
, 
fhp
)) != 0)

187  (
t
);

190  (
	`__os_physwre
(
dbv
, 
fhp
, 
addr
, 
n
, 
nwp
));

191 
	}
}

201 
	$__os_physwre
(
dbv
, 
fhp
, 
addr
, 
n
, 
nwp
)

202 
DB_ENV
 *
dbv
;

203 
DB_FH
 *
fhp
;

204 *
addr
;

205 
size_t
 
n
;

206 
size_t
 *
nwp
;

208 
size_t
 
offt
;

209 
ssize_t
 
nw
;

210 
t
;

211 
u_t8_t
 *
ddr
;

213 
t
 = 0;

215 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

216 
	`__db_msg
(
dbv
,

217 "fes: wr%s: %lu bys", 
fhp
->
me
, (
u_lg
)
n
);

219 #i
	`defed
(
HAVE_FILESYSTEM_NOTZERO
&& defed(
DIAGNOSTIC
)

220 i(
	`__os_fs_nzo
()) {

221 

 
sb
;

222 
off_t
 
cur_off
;

224 
	`DB_ASSERT
(
dbv
, 
	`f
(
fhp
->
fd
, &
sb
) != -1 &&

225 (
cur_off
 = 
	`lek
(
fhp
->
fd
, (
off_t
)0, 
SEEK_CUR
)) != -1 &&

226 
cur_off
 <
sb
.
_size
);

241 
	`PANIC_CHECK
(
dbv
);

243 i(
	`DB_GLOBAL
(
j_wre
!
NULL
) {

244 *
nwp
 = 
n
;

245 i(
	`DB_GLOBAL
(
j_wre
)(
fhp
->
fd
, 
addr
, 
n
!(
ssize_t
)len) {

246 
t
 = 
	`__os_g_sy
();

247 
	`__db_sy
(
dbv
, 
t
, "write: %#lx, %lu",

248 
	`P_TO_ULONG
(
addr
), (
u_lg
)
n
);

249 
t
 = 
	`__os_posix_r
(ret);

251 
	`DB_EVENT
(
dbv
, 
DB_EVENT_WRITE_FAILED
, 
NULL
);

253  (
t
);

256 
ddr
 = 
addr
, 
offt
 = 0;

257 
offt
 < 
n
; 
ddr
 +
nw
, off+(
u_t32_t
)nw) {

258 
	`RETRY_CHK
(((
nw
 = 
	`wre
(

259 
fhp
->
fd
, 
ddr
, 
n
 - 
offt
)< 0 ? 1 : 0), 
t
);

260 i(
t
 != 0)

263 *
nwp
 = 
n
;

264 i(
t
 != 0) {

265 
	`__db_sy
(
dbv
, 
t
, "write: %#lx, %lu",

266 
	`P_TO_ULONG
(
ddr
), (
u_lg
)
n
 - 
offt
);

267 
t
 = 
	`__os_posix_r
(ret);

269 
	`DB_EVENT
(
dbv
, 
DB_EVENT_WRITE_FAILED
, 
NULL
);

271  (
t
);

272 
	}
}

	@../os/os_seek.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

21 
	$__os_ek
(
dbv
, 
fhp
, 
pgno
, 
pgsize
, 
tive
)

22 
DB_ENV
 *
dbv
;

23 
DB_FH
 *
fhp
;

24 
db_pgno_t
 
pgno
;

25 
u_t32_t
 
pgsize
;

26 
u_t32_t
 
tive
;

28 
off_t
 
offt
;

29 
t
;

31 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
&& fhp->
fd
 != -1);

33 
offt
 = (
off_t
)
pgsize
 * 
pgno
 + 
tive
;

35 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

36 
	`__db_msg
(
dbv
,

37 "fes: sk %t%lu", 
fhp
->
me
, (
u_lg
)
offt
);

39 i(
	`DB_GLOBAL
(
j_ek
!
NULL
)

40 
t
 = 
	`DB_GLOBAL
(
j_ek
)(
fhp
->
fd
, 
offt
, 
SEEK_SET
);

42 
	`RETRY_CHK
((
	`lek
(

43 
fhp
->
fd
, 
offt
, 
SEEK_SET
=-1 ? 1 : 0), 
t
);

45 i(
t
 == 0) {

46 
fhp
->
pgsize
 =gsize;

47 
fhp
->
pgno
 =gno;

48 
fhp
->
offt
 = 
tive
;

50 
	`__db_sy
(
dbv
, 
t
,

51 "ek: %lu: (%lu * %lu+ %lu", (
u_lg
)
offt
,

52 (
u_lg
)
pgno
, (u_lg)
pgsize
, (u_lg)
tive
);

53 
t
 = 
	`__os_posix_r
(ret);

56  (
t
);

57 
	}
}

	@../os/os_sleep.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_SELECT_H
 1

	)

12 
	~"db_t.h
"

21 
	$__os_p
(
dbv
, 
cs
, 
ucs
)

22 
DB_ENV
 *
dbv
;

23 
u_lg
 
cs
, 
ucs
;

25 
timev
 
t
;

26 
t
;

29 ; 
ucs
 >
US_PER_SEC
; usecs -= US_PER_SEC)

30 ++
cs
;

32 i(
	`DB_GLOBAL
(
j_p
!
NULL
) {

33 ()
	`DB_GLOBAL
(
j_p
)(
cs
, 
ucs
);

46 #ifde
HAVE_VXWORKS


47 
	`__os_yld
(
dbv
);

54 
t
.
tv_c
 = ()
cs
;

55 i(
cs
 =0 && 
ucs
 == 0)

56 
t
.
tv_uc
 = 1;

58 
t
.
tv_uc
 = ()
ucs
;

67 i(
	`
(0, 
NULL
, NULL, NULL, &
t
) == -1) {

68 
t
 = 
	`__os_g_sy
();

69 i(
	`__os_posix_r
(
t
!
EINTR
)

70 
	`__db_sy
(
dbv
, 
t
, "select");

72 
	}
}

	@../os/os_spin.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ifde
HAVE_SYSTEM_INCLUDE_FILES


14 #i
defed
(
HAVE_PSTAT_GETDYNAMIC
)

15 
	~<sys/p.h
>

19 #i
defed
(
HAVE_PSTAT_GETDYNAMIC
)

20 
__os_p_gdymic
 
__P
(());

27 
	$__os_p_gdymic
()

29 
p_dymic
 
psd
;

31  (
	`p_gdymic
(&
psd
,

32 (
psd
), (
size_t
)1, 0=-1 ? 1 :sd.
psd_oc_t
);

33 
	}
}

36 #i
defed
(
HAVE_SYSCONF
&& defed(
_SC_NPROCESSORS_ONLN
)

37 
u_t32_t
 
__os_syscf
 
__P
(());

43 
u_t32_t


44 
	$__os_syscf
()

46 
roc
;

48 
roc
 = 
	`syscf
(
_SC_NPROCESSORS_ONLN
);

49  ((
u_t32_t
)(
roc
 > 1 ?proc : 1));

50 
	}
}

59 
u_t32_t


60 
	$__os_
(
dbv
)

61 
DB_ENV
 *
dbv
;

63 
u_t32_t
 
s_s
;

65 
	`COMPQUIET
(
dbv
, 
NULL
);

67 
s_s
 = 1;

68 #i
	`defed
(
HAVE_PSTAT_GETDYNAMIC
)

69 
s_s
 = 
	`__os_p_gdymic
();

71 #i
	`defed
(
HAVE_SYSCONF
&& defed(
_SC_NPROCESSORS_ONLN
)

72 
s_s
 = 
	`__os_syscf
();

79 i(
s_s
 != 1)

80 
s_s
 *= 50;

82  (
s_s
);

83 
	}
}

	@../os/os_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_exis
(
dbv
, 
th
, 
isdp
)

21 
DB_ENV
 *
dbv
;

22 cڡ *
th
;

23 *
isdp
;

25 

 
sb
;

26 
t
;

28 
	`COMPQUIET
(
dbv
, 
NULL
);

30 i(
dbv
 !
NULL
 &&

31 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

32 
	`__db_msg
(
dbv
, "fes: s%s", 
th
);

34 i(
	`DB_GLOBAL
(
j_exis
!
NULL
)

35  (
	`DB_GLOBAL
(
j_exis
)(
th
, 
isdp
));

37 #ifde
HAVE_VXWORKS


38 
	`RETRY_CHK
((
	`
((*)
th
, &
sb
)), 
t
);

40 
	`RETRY_CHK
((
	`
(
th
, &
sb
)), 
t
);

42 i(
t
 != 0)

43  (
	`__os_posix_r
(
t
));

45 #i!
	`defed
(
S_ISDIR
|| defed(
STAT_MACROS_BROKEN
)

46 #unde
S_ISDIR


47 #ifde
_S_IFDIR


48 
	#S_ISDIR
(
m
(
_S_IFDIR
 & (m))

	)

50 
	#S_ISDIR
(
m
(((m& 0170000=0040000)

	)

53 i(
isdp
 !
NULL
)

54 *
isdp
 = 
	`S_ISDIR
(
sb
.
_mode
);

57 
	}
}

68 
	$__os_iofo
(
dbv
, 
th
, 
fhp
, 
mby
, 
by
, 
iosiz
)

69 
DB_ENV
 *
dbv
;

70 cڡ *
th
;

71 
DB_FH
 *
fhp
;

72 
u_t32_t
 *
mby
, *
by
, *
iosiz
;

74 

 
sb
;

75 
t
;

77 i(
	`DB_GLOBAL
(
j_iofo
!
NULL
)

78  (
	`DB_GLOBAL
(
j_iofo
)(
th
,

79 
fhp
->
fd
, 
mby
, 
by
, 
iosiz
));

81 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
&& fhp->
fd
 != -1);

83 
	`RETRY_CHK
((
	`f
(
fhp
->
fd
, &
sb
)), 
t
);

84 i(
t
 != 0) {

85 
	`__db_sy
(
dbv
, 
t
, "fstat");

86  (
	`__os_posix_r
(
t
));

90 i(
mby
 !
NULL
)

91 *
mby
 = (
u_t32_t
)(
sb
.
_size
 / 
MEGABYTE
);

92 i(
by
 !
NULL
)

93 *
by
 = (
u_t32_t
)(
sb
.
_size
 % 
MEGABYTE
);

102 #ifde
HAVE_STRUCT_STAT_ST_BLKSIZE


103 i(
iosiz
 !
NULL
 && (*iosiz = 
sb
.
_blksize
) == 0)

104 *
iosiz
 = 
DB_DEF_IOSIZE
;

106 i(
iosiz
 !
NULL
)

107 *
iosiz
 = 
DB_DEF_IOSIZE
;

110 
	}
}

	@../os/os_tmpdir.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ifde
HAVE_SYSTEM_INCLUDE_FILES


14 #ifde
mactosh


15 
	~<TFeSc.h
>

29 
	$__os_tmpd
(
dbv
, 
ags
)

30 
DB_ENV
 *
dbv
;

31 
u_t32_t
 
ags
;

33 
isd
, 
t
;

34 *
td
, 
td_buf
[
DB_MAXPATHLEN
];

37 i(
	`LF_ISSET
(
DB_USE_ENVIRON
) ||

38 (
	`LF_ISSET
(
DB_USE_ENVIRON_ROOT
&& 
	`__os_io
())) {

40 
td
 = 
td_buf
;

41 i((
t
 = 
	`__os_gv
(

42 
dbv
, "TMPDIR", &
td
, (
td_buf
))) != 0)

43  (
t
);

44 i(
td
 !
NULL
 &&dir[0] != '\0')

45 
found
;

50 
td
 = 
td_buf
;

51 i((
t
 = 
	`__os_gv
(

52 
dbv
, "TEMP", &
td
, (
td_buf
))) != 0)

53  (
t
);

54 i(
td
 !
NULL
 &&dir[0] != '\0')

55 
found
;

57 
td
 = 
td_buf
;

58 i((
t
 = 
	`__os_gv
(

59 
dbv
, "TMP", &
td
, (
td_buf
))) != 0)

60  (
t
);

61 i(
td
 !
NULL
 &&dir[0] != '\0')

62 
found
;

65 
td
 = 
td_buf
;

66 i((
t
 = 
	`__os_gv
(

67 
dbv
, "TempFd", &
td
, (
td_buf
))) != 0)

68  (
t
);

70 i(
td
 !
NULL
 &&dir[0] != '\0')

71 
found
:  (
	`__os_rdup
(
dbv
, 
td
, &dbv->
db_tmp_d
));

74 #ifde
mactosh


76 {
FSSc
 
ec
;

78 i(!
	`Scl2FSSc
(
kTempܬyFdTy
,

79 
kOnSyemDisk
, 0, &
ec
))

80  (
	`__os_rdup
(
dbv
,

81 
	`FSp2FuPh
(&
ec
), &
dbv
->
db_tmp_d
));

84 #ifde
DB_WIN32


87 
_TCHAR
 
h
[
DB_MAXPATHLEN
 + 1];

88 *
th
, *
eos
;

90 i(
	`GTempPh
(
DB_MAXPATHLEN
, 
h
) > 2) {

91 
	`FROM_TSTRING
(
dbv
, 
h
, 
th
, 
t
);

92 i(
t
 != 0)

93  (
t
);

95 
eos
 = 
th
 + 
	`
(path) - 1;

96 i(*
eos
 == '\\' || *eos == '/')

97 *
eos
 = '\0';

98 i(
	`__os_exis
(
dbv
, 
th
, &
isd
) == 0 && isdir) {

99 
t
 = 
	`__os_rdup
(
dbv
,

100 
th
, &
dbv
->
db_tmp_d
);

101 
	`FREE_STRING
(
dbv
, 
th
);

102  (
t
);

104 
	`FREE_STRING
(
dbv
, 
th
);

115 
	#DB_TEMP_DIRECTORY
(
n
) { \

116 *
__p
 = 
n
; \

117 i(
	`__os_exis
(
dbv
, 
__p
, &
isd
) == 0 && isdir != 0) \

118  (
	`__os_rdup
(
dbv
, 
__p
, &dbv->
db_tmp_d
)); \

119 }

	)

120 #ifde
DB_WIN32


121 
	`DB_TEMP_DIRECTORY
("/temp");

122 
	`DB_TEMP_DIRECTORY
("C:/temp");

123 
	`DB_TEMP_DIRECTORY
("C:/tmp");

125 
	`DB_TEMP_DIRECTORY
("/var/tmp");

126 
	`DB_TEMP_DIRECTORY
("/usr/tmp");

127 
	`DB_TEMP_DIRECTORY
("/tmp");

134  (
	`__os_rdup
(
dbv
, "", &dbv->
db_tmp_d
));

135 
	}
}

	@../os/os_truncate.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_un
(
dbv
, 
fhp
, 
pgno
, 
pgsize
)

21 
DB_ENV
 *
dbv
;

22 
DB_FH
 *
fhp
;

23 
db_pgno_t
 
pgno
;

24 
u_t32_t
 
pgsize
;

26 
off_t
 
offt
;

27 
t
;

33 
offt
 = (
off_t
)
pgsize
 * 
pgno
;

35 i(
dbv
 !
NULL
 &&

36 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

37 
	`__db_msg
(
dbv
,

38 "fes:run %t%lu", 
fhp
->
me
, (
u_lg
)
offt
);

40 i(
	`DB_GLOBAL
(
j_run
!
NULL
)

41 
t
 = 
	`DB_GLOBAL
(
j_run
)(
fhp
->
fd
, 
offt
);

43 #ifde
HAVE_FTRUNCATE


44 
	`RETRY_CHK
((
	`run
(
fhp
->
fd
, 
offt
)), 
t
);

46 
t
 = 
DB_OPNOTSUP
;

50 i(
t
 != 0) {

51 
	`__db_sy
(
dbv
, 
t
, "run: %lu", (
u_lg
)
offt
);

52 
t
 = 
	`__os_posix_r
(ret);

55  (
t
);

56 
	}
}

	@../os/os_uid.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_unique_id
(
dbv
, 
idp
)

21 
DB_ENV
 *
dbv
;

22 
u_t32_t
 *
idp
;

24 
db_timeec
 
v
;

25 
pid_t
 
pid
;

26 
u_t32_t
 
id
;

28 *
idp
 = 0;

34 
	`__os_id
(
dbv
, &
pid
, 
NULL
);

35 
	`__os_gtime
(
dbv
, &
v
);

37 
id
 = (
u_t32_t
)
pid
 ^

38 (
u_t32_t
)
v
.
tv_c
 ^ (u_t32_t)v.
tv_nc
 ^ 
	`P_TO_UINT32
(&
pid
);

45 i(
	`DB_GLOBAL
(
uid_
) == 0) {

46 
	`DB_GLOBAL
(
uid_
) = 1;

47 
	`d
((
u_t
)
id
);

49 
id
 ^(
u_t
)
	`nd
();

51 *
idp
 = 
id
;

52 
	}
}

	@../os/os_unlink.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_gi_uƚk
(
dbv
, 
th
)

21 
DB_ENV
 *
dbv
;

22 cڡ *
th
;

24 #ifde
HAVE_QNX


25 
t
;

26 *
wme
;

28 i(
dbv
 !
NULL
 &&

29 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

30 
	`__db_msg
(
dbv
, "fes: uƚk %s", 
th
);

32 #ifde
HAVE_QNX


33 i((
t
 = 
	`__os_qnx_shmme
(
dbv
, 
th
, &
wme
)) != 0)

34 
r
;

36 i((
t
 = 
	`shm_uƚk
(
wme
)) != 0) {

37 
t
 = 
	`__os_g_sy
();

38 i(
	`__os_posix_r
(
t
!
ENOENT
)

39 
	`__db_sy
(
dbv
, 
t
, "shm_uƚk: %s", 
wme
);

41 
r
:

42 i(
wme
 !
NULL
)

43 
	`__os_
(
dbv
, 
wme
);

44  (
t
);

46 i(
	`F_ISSET
(
dbv
, 
DB_ENV_OVERWRITE
))

47 ()
	`__db_fe_mui_wre
(
dbv
, 
th
);

49  (
	`__os_uƚk
(
dbv
, 
th
));

51 
	}
}

60 
	$__os_uƚk
(
dbv
, 
th
)

61 
DB_ENV
 *
dbv
;

62 cڡ *
th
;

64 
t
, 
t_t
;

66 i(
dbv
 !
NULL
 &&

67 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

68 
	`__db_msg
(
dbv
, "fes: uƚk %s", 
th
);

70 i(
	`DB_GLOBAL
(
j_uƚk
!
NULL
)

71 
t
 = 
	`DB_GLOBAL
(
j_uƚk
)(
th
);

73 #ifde
HAVE_VXWORKS


74 
	`RETRY_CHK
((
	`uƚk
((*)
th
)), 
t
);

76 
	`RETRY_CHK
((
	`uƚk
(
th
)), 
t
);

93 i(
t
 != 0) {

94 
t_t
 = 
	`__os_posix_r
(
t
);

95 i(
t_t
 !
ENOENT
)

96 
	`__db_sy
(
dbv
, 
t
, "uƚk: %s", 
th
);

97 
t
 = 
t_t
;

100  (
t
);

101 
	}
}

	@../os/os_yield.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 #ifde
HAVE_SYSTEM_INCLUDE_FILES


14 #i
defed
(
HAVE_SCHED_YIELD
)

15 
	~<sched.h
>

26 
	$__os_yld
(
dbv
)

27 
DB_ENV
 *
dbv
;

29 i(
	`DB_GLOBAL
(
j_yld
!
NULL
) {

30 ()
	`DB_GLOBAL
(
j_yld
)();

34 #i
	`defed
(
HAVE_MUTEX_UI_THREADS
)

35 
	`thr_yld
();

36 #i
	`defed
(
HAVE_PTHREAD_YIELD
) && \

37 (
	`defed
(
HAVE_MUTEX_PTHREADS
|| defed(
HAVE_PTHREAD_API
))

38 
	`had_yld
();

39 #i
	`defed
(
HAVE_SCHED_YIELD
)

40 ()
	`sched_yld
();

41 #i
	`defed
(
HAVE_YIELD
)

42 
	`yld
();

44 
	`__os_p
(
dbv
, 0, 1);

46 
	`COMPQUIET
(
dbv
, 
NULL
);

47 
	}
}

	@../os_brew/ctime.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
__os_bw__numb
 
__P
((*, ));

20 
	$__db_ime
(
tod
, 
time_buf
)

21 cڡ 
time_t
 *
tod
;

22 *
time_buf
;

24 
JulnTy
 
jt
;

25 
time_t
 

;

26 *
n
;

28 
	`ry
(
time_buf
, "Thu Jan 01 00:00:00 1970");

29 
time_buf
[
CTIME_BUFLEN
 - 1] = '\0';

35 

 = *
tod
 - 
BREW_EPOCH_OFFSET
 + 
	`LOCALTIMEOFFSET
(
NULL
);

36 
	`GETJULIANDATE
(

, &
jt
);

41 
n
 = &"MTueWedThuFriSSun"[
jt
.
wWkDay
*3];

42 
time_buf
[0] = *
n
++;

43 
time_buf
[1] = *
n
++;

44 
time_buf
[2] = *
n
;

45 
n
 = &"JFebMAMayJunJulAugSONovDec"[(
jt
.
wMth
 - 1) * 3];

46 
time_buf
[4] = *
n
++;

47 
time_buf
[5] = *
n
++;

48 
time_buf
[6] = *
n
;

50 
	`__os_bw__numb
(
time_buf
 + 8, 
jt
.
wDay
);

52 
	`__os_bw__numb
(
time_buf
 + 11, 
jt
.
wHour
 + 100);

53 
	`__os_bw__numb
(
time_buf
 + 14, 
jt
.
wMu
 + 100);

54 
	`__os_bw__numb
(
time_buf
 + 17, 
jt
.
wSecd
 + 100);

56 i(
jt
.
wYr
 < 100) {

57 
time_buf
[20] = ' ';

58 
time_buf
[21] = ' ';

59 
	`__os_bw__numb
(
time_buf
 + 22, 
jt
.
wYr
);

61 
	`__os_bw__numb
(
time_buf
 + 20, 
jt
.
wYr
 / 100);

62 
	`__os_bw__numb
(
time_buf
 + 22, 
jt
.
wYr
 % 100 + 100);

65  (
time_buf
);

66 
	}
}

73 
	$__os_bw__numb
(

, 
n
)

74 *

;

75 
n
;

77 

[0] = ' ';

78 i(
n
 >= 10)

79 

[0] = (
n
 / 10) % 10 + '0';

80 

[1] = 
n
 % 10 + '0';

81 
	}
}

	@../os_brew/fclose.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

21 
	$fo
(

)

22 
FILE
 *

;

29 ()
	`IFILE_R
(

);

32 
	}
}

	@../os_brew/fgetc.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

21 
	$fgc
(

)

22 
FILE
 *

;

24 
b
[1];

26 i(
	`IFILE_Rd
(

, 
b
, 1))

27  (()
b
[0]);

29 
	`__os_t_o
(
EIO
);

30  (
EOF
);

31 
	}
}

	@../os_brew/fgets.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

21 
	$fgs
(
s
, 
n
, 

)

22 *
s
;

23 
n
;

24 
FILE
 *

;

26 
c
;

27 *
cs
;

29 
c
 = 0;

30 
cs
 = 
s
;

32 --
n
 > 0 && (
c
 = 
	`fgc
(

)!
EOF
) {

33 *
cs
++ = 
c
;

34 i(
c
 == '\n')

37 i(
c
 =
EOF
 && 
cs
 =
s
)

38  (
NULL
);

40 *
cs
++ = '\0';

41  (
s
);

42 
	}
}

	@../os_brew/fopen.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
FILE
 *

21 
	$fݒ
(
fame
, 
mode
)

22 cڡ *
fame
, *
mode
;

24 
IFe
 *
pIFe
;

25 
IFeMgr
 *
pIFeMgr
;

26 
OnFeMode
 
ags
;

27 
f_exis
, 
t
, 
upde_ag
;

36 
	`DB_ASSERT
(
NULL
, 
fame
 !NULL && 
mode
 != NULL);

38 
	`FILE_MANAGER_CREATE
(
NULL
, 
pIFeMgr
, 
t
);

39 i(
t
 != 0) {

40 
	`__os_t_o
(
t
);

41  (
NULL
);

60 
ags
 = 0;

61 
upde_ag
 = 
	`rchr
(
mode
, '+') ? 1 : 0;

62 *
mode
) {

64 
ags
 = 
_OFM_APPEND
 | 
_OFM_CREATE
;

67 
ags
 = 
upde_ag
 ? 
_OFM_READWRITE
 : 
_OFM_READ
;

70 
ags
 = 
_OFM_READWRITE
 | 
_OFM_CREATE
;

74 
f_exis
 = 
	`IFILEMGR_Te
(
pIFeMgr
, 
fame
=
SUCCESS
 ? 1 : 0;

75 i(
f_exis
)

76 
	`LF_CLR
(
_OFM_CREATE
);

78 
	`LF_CLR
(~
_OFM_CREATE
);

80 i((
pIFe
 = 
	`IFILEMGR_OnFe
(

81 
pIFeMgr
, 
fame
, (
OnFeMode
)
ags
)=
NULL
) {

82 
	`FILE_MANAGER_ERR
(
NULL
,

83 
pIFeMgr
, 
fame
, "IFILEMGR_OnFe", 
t
);

84 
	`__os_t_o
(
t
);

87 
	`IFILEMGR_R
(
pIFeMgr
);

88  (
pIFe
);

89 
	}
}

	@../os_brew/fwrite.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
size_t


21 
	$fwre
(
buf
, 
size
, 
cou
, 

)

22 cڡ *
buf
;

23 
size_t
 
size
, 
cou
;

24 
FILE
 *

;

26 i(

 =
dr
) {

27 
	`DBGPRINTF
("%.*s", ()
cou
, 
buf
);

28  (
size
 * 
cou
);

30  ((
size_t
)
	`IFILE_Wre
(

, 
buf
, 
size
 * 
cou
) / size);

31 
	}
}

	@../os_brew/getcwd.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

17 
	$gcwd
(
buf
, 
size
)

18 *
buf
;

19 
size_t
 
size
;

21 
IFeMgr
 *
pIFeMgr
;

22 
t
;

23 #ide
HAVE_BREW_SDK2


24 
ou
;

27 
	`FILE_MANAGER_CREATE
(
NULL
, 
pIFeMgr
, 
t
);

28 i(
t
 != 0) {

29 
	`__os_t_o
(
t
);

30  (
NULL
);

33 
buf
[0] = '\0';

35 #ifde
AEE_SIMULATOR


37 i(
	`IFILEMGR_Te
(
pIFeMgr
, "fs:/"=
SUCCESS
)

39 ()
	`y
(
buf
, "fs:/", 
size
 - 1);

41 
	`FILE_MANAGER_ERR
(

42 
NULL
, 
pIFeMgr
, NULL, "IFILEMGR_ResvePh", 
t
);

44 #ide
HAVE_BREW_SDK2


45 
ou
 = 
size
;

46 i(
	`IFILEMGR_ResvePh
(
pIFeMgr
, ".", 
buf
, &
ou
!
SUCCESS
)

47 
	`FILE_MANAGER_ERR
(

48 
NULL
, 
pIFeMgr
, NULL, "IFILEMGR_ResvePh", 
t
);

52 
	`IFILEMGR_R
(
pIFeMgr
);

54 i(
t
 == 0)

55  (
buf
);

57 
	`__os_t_o
(
t
);

59 
	`COMPQUIET
(
size
, 0);

60  (
NULL
);

61 
	}
}

	@../os_brew/globals.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$bw_bdb_beg
()

20 *
p
;

26 
p
 = ((
BDBA
 *)
	`GETAPPINSTANCE
())->
db_glob_vues
;

27 i(
p
 =
NULL
) {

28 i((
p
 = 
	`mloc
((
DB_GLOBALS
))=
NULL
)

29  (
ENOMEM
);

30 
	`memt
(
p
, 0, (
DB_GLOBALS
));

32 ((
BDBA
 *)
	`GETAPPINSTANCE
())->
db_glob_vues
 = 
p
;

34 
	`TAILQ_INIT
(&
	`DB_GLOBAL
(
db_vq
));

35 
	`DB_GLOBAL
(
db_le
) =

39 
	}
}

46 
	$bw_bdb_d
()

48 *
p
;

50 
p
 = ((
BDBA
 *)
	`GETAPPINSTANCE
())->
db_glob_vues
;

52 
	`
(
p
);

53 
	}
}

	@../os_brew/localtime.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
tm
 *

21 
	$loime
(
tod
)

22 cڡ 
time_t
 *
tod
;

24 
JulnTy
 
jt
;

25 
boޗn
 
is_ds
;

26 
time_t
 

;

27 
emt
;

33 
is_ds
 = 0;

34 

 = *
tod
 - 
BREW_EPOCH_OFFSET
 + 
	`LOCALTIMEOFFSET
(&
is_ds
);

36 
	`GETJULIANDATE
(

, &
jt
);

38 
	`DB_GLOBAL
(
m
).
tm_c
 = 
jt
.
wSecd
;

39 
	`DB_GLOBAL
(
m
).
tm_m
 = 
jt
.
wMu
;

40 
	`DB_GLOBAL
(
m
).
tm_hour
 = 
jt
.
wHour
;

41 
	`DB_GLOBAL
(
m
).
tm_mday
 = 
jt
.
wDay
;

42 
	`DB_GLOBAL
(
m
).
tm_m
 = 
jt
.
wMth
 - 1;

44 
	`DB_GLOBAL
(
m
).
tm_yr
 = 
jt
.
wYr
 - 1900;

46 
	`DB_GLOBAL
(
m
).
tm_wday
 = (
jt
.
wWkDay
 + 1) % 7;

48 
	`DB_GLOBAL
(
m
).
tm_m
) {

50 0: 
emt
 = 0; ;

51 1: 
emt
 = 31; ;

52 2: 
emt
 = 59; ;

53 3: 
emt
 = 90; ;

54 4: 
emt
 = 120; ;

55 5: 
emt
 = 151; ;

56 6: 
emt
 = 181; ;

57 7: 
emt
 = 212; ;

58 8: 
emt
 = 243; ;

59 9: 
emt
 = 273; ;

60 10: 
emt
 = 304; ;

61 11: 
emt
 = 334; ;

63 
	`DB_GLOBAL
(
m
).
tm_yday
 = 
emt
 + DB_GLOBALtm).
tm_mday
 - 1;

65 i(
	`DB_GLOBAL
(
m
).
tm_m
 > 1 &&

66 
jt
.
wYr
 % 4 == 0 && (jt.wYear % 100 != 0 || jt.wYear % 400 == 0))

67 
	`DB_GLOBAL
(
m
).
tm_yday
 += 1;

69 
	`DB_GLOBAL
(
m
).
tm_isd
 = 
is_ds
;

77  (&
	`DB_GLOBAL
(
m
));

78 
	}
}

	@../os_brew/os_abort.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

17 
	$__os_abt
()

19 
AEEAt
 *
p
;

21 
p
 = (
AEEAt
 *)
	`GETAPPINSTANCE
();

22 
	`ISHELL_CloAt
(
p
->
m_pIShl
, 
FALSE
);

25 
	}
}

	@../os_brew/os_abs.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_abh
(
th
)

19 cڡ *
th
;

21  (
th
[0] == 'f' &&ath[1] == 's' &&ath[2] == ':');

22 
	}
}

	@../os_brew/os_config.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_fs_nzo
()

29 
	}
}

36 
	$__os_sut_de_io
()

39 
	}
}

46 
	$__os_sut_db_gi
()

49 
	}
}

56 
	$__os_sut_iti
()

59 
	}
}

	@../os_brew/os_dir.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_dli
(
dbv
, 
d
, 
me
, 

)

19 
DB_ENV
 *
dbv
;

20 cڡ *
d
;

21 ***
me
;

22 *

;

24 
FeInfo
 
fi
;

25 
IFeMgr
 *
pIFeMgr
;

26 
ysz
, 
t
, 
t
;

27 *
fame
, *
p
, **
mes
;

29 
	`FILE_MANAGER_CREATE
(
dbv
, 
pIFeMgr
, 
t
);

30 i(
t
 != 0)

31  (
t
);

33 i((
t
 = 
	`IFILEMGR_EnumIn
(
pIFeMgr
, 
d
, 
FALSE
)!
SUCCESS
) {

34 
	`IFILEMGR_R
(
pIFeMgr
);

35 
	`__db_sy
(
dbv
, 
t
, "IFILEMGR_EnumInit");

36  (
	`__os_posix_r
(
t
));

39 
mes
 = 
NULL
;

40 
ysz
 = 
t
 = 0;

41 
	`IFILEMGR_EnumNext
(
pIFeMgr
, &
fi
!
FALSE
) {

42 
t
 ++;

44 i(
t
 >
ysz
) {

45 
ysz
 += 100;

46 i((
t
 = 
	`__os_loc
(
dbv
,

47 (
u_t
)
ysz
 * (*), &
mes
)) != 0)

48 
nomem
;

50 
fame
 = 
fi
.
szName
;

51 (
p
 = 
	`rchr
(
fame
, '\\')!
NULL
; filename = + 1)

53 ; (
p
 = 
	`rchr
(
fame
, '/')!
NULL
; filename = + 1)

55 i((
t
 = 
	`__os_rdup
(
dbv
, 
fame
, &
mes
[
t
 - 1])) != 0)

56 
nomem
;

58 
	`IFILEMGR_R
(
pIFeMgr
);

60 *
me
 = 
mes
;

61 *

 = 
t
;

62  (
t
);

64 
nomem
: i(
mes
 !
NULL
)

65 
	`__os_d
(
dbv
, 
mes
, 
t
);

66 
	`IFILEMGR_R
(
pIFeMgr
);

68  (
t
);

69 
	}
}

76 
	$__os_d
(
dbv
, 
mes
, 
t
)

77 
DB_ENV
 *
dbv
;

78 **
mes
;

79 
t
;

81 
t
 > 0)

82 
	`__os_
(
dbv
, 
mes
[--
t
]);

83 
	`__os_
(
dbv
, 
mes
);

84 
	}
}

	@../os_brew/os_errno.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_g_o_t_zo
()

21  (
o
);

22 
	}
}

36 
	$__os_g_o
()

39 i(
o
 == 0)

40 
	`__os_t_o
(
EAGAIN
);

41  (
o
);

42 
	}
}

49 
	$__os_g_sy
()

52 i(
o
 == 0)

53 
	`__os_t_o
(
EAGAIN
);

54  (
o
);

55 
	}
}

62 
	$__os_t_o
(
evue
)

63 
evue
;

73 
o
 =

74 
evue
 >0 ?vu: (evu=
DB_RUNRECOVERY
 ? 
EFAULT
 : 
EINVAL
);

75 
	}
}

82 
	$__os_
(
r
, 
buf
, 
n
)

83 
r
;

84 *
buf
;

85 
size_t
 
n
;

87 *
p
;

89 
r
) {

90 
EBADFILENAME
:

91 
p
 = "EBADFILENAME";

93 
EBADSEEKPOS
:

94 
p
 = "EBADSEEKPOS";

96 #ide
HAVE_BREW_SDK2


97 
EDIRNOEXISTS
:

98 
p
 = "EDIRNOEXISTS";

101 
EDIRNOTEMPTY
:

102 
p
 = "EDIRNOTEMPTY";

104 
EFILEEOF
:

105 
p
 = "EFILEEOF";

107 
EFILEEXISTS
:

108 
p
 = "EFILEEXISTS";

110 
EFILENOEXISTS
:

111 
p
 = "EFILENOEXISTS";

113 
EFILEOPEN
:

114 
p
 = "EFILEOPEN";

116 
EFSFULL
:

117 
p
 = "EFSFULL";

119 #ide
HAVE_BREW_SDK2


120 
EINVALIDOPERATION
:

121 
p
 = "EINVALIDOPERATION";

123 
ENOMEDIA
:

124 
p
 = "ENOMEDIA";

127 
ENOMEMORY
:

128 
p
 = "ENOMEMORY";

130 
EOUTOFNODES
:

131 
p
 = "EOUTOFNODES";

134 
p
 = 
	`__db_unknown_r
(
r
);

138 ()
	`y
(
buf
, 
p
, 
n
 - 1);

139 
buf
[
n
 - 1] = '\0';

141  (
buf
);

142 
	}
}

149 
	$__os_posix_r
(
r
)

150 
r
;

152 
t
;

154 
r
) {

155 
EBADFILENAME
:

156 #ide
HAVE_BREW_SDK2


157 
EDIRNOEXISTS
:

159 
EDIRNOTEMPTY
:

160 
EFILENOEXISTS
:

161 
t
 = 
ENOENT
;

164 
EOUTOFNODES
:

165 
t
 = 
EMFILE
;

168 
ENOMEMORY
:

169 
t
 = 
ENOMEM
;

172 
EFSFULL
:

173 
t
 = 
ENOSPC
;

176 #ide
HAVE_BREW_SDK2


177 
EINVALIDOPERATION
:

178 
t
 = 
DB_OPNOTSUP
;

182 
EFILEEXISTS
:

183 
t
 = 
EEXIST
;

186 
EBADSEEKPOS
:

187 
EFILEEOF
:

188 
t
 = 
EIO
;

192 
t
 = 
EFAULT
;

195  (
t
);

196 
	}
}

	@../os_brew/os_handle.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_ݒhd
(
dbv
, 
me
, 
ags
, 
mode
, 
fh
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
me
;

21 
ags
, 
mode
;

22 
DB_FH
 **
fh
;

24 
DB_FH
 *
fhp
;

25 
IFe
 *
pIFe
;

26 
IFeMgr
 *
pIFeMgr
;

27 
f_exis
, 
t
;

29 
	`COMPQUIET
(
mode
, 0);

31 
	`FILE_MANAGER_CREATE
(
dbv
, 
pIFeMgr
, 
t
);

32 i(
t
 != 0)

33  (
t
);

41 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_FH
), &
fhp
)) != 0)

42  (
t
);

43 i((
t
 = 
	`__os_rdup
(
dbv
, 
me
, &
fhp
->name)) != 0)

44 
r
;

51 
f_exis
 = 
	`IFILEMGR_Te
(
pIFeMgr
, 
me
=
SUCCESS
 ? 1 : 0;

52 i(
f_exis
)

53 
	`LF_CLR
(
_OFM_CREATE
);

55 
	`LF_CLR
(~
_OFM_CREATE
);

57 i((
pIFe
 =

58 
	`IFILEMGR_OnFe
(
pIFeMgr
, 
me
, (
OnFeMode
)
ags
)=
NULL
) {

59 
	`FILE_MANAGER_ERR
(
dbv
,

60 
pIFeMgr
, 
me
, "IFILEMGR_OnFe", 
t
);

61 
r
;

64 
fhp
->
i
 = 
pIFe
;

65 
	`IFILEMGR_R
(
pIFeMgr
);

67 
	`F_SET
(
fhp
, 
DB_FH_OPENED
);

68 *
fh
 = 
fhp
;

71 
r
: i(
pIFe
 !
NULL
)

72 
	`IFILE_R
(
pIFe
);

73 
	`IFILEMGR_R
(
pIFeMgr
);

75 i(
fhp
 !
NULL
)

76 ()
	`__os_ohd
(
dbv
, 
fhp
);

77  (
t
);

78 
	}
}

85 
	$__os_ohd
(
dbv
, 
fhp
)

86 
DB_ENV
 *
dbv
;

87 
DB_FH
 *
fhp
;

90 i(
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
))

91 ()
	`IFILE_R
(
fhp
->
i
);

94 i(
	`F_ISSET
(
fhp
, 
DB_FH_UNLINK
))

95 ()
	`__os_uƚk
(
dbv
, 
fhp
->
me
);

97 i(
fhp
->
me
 !
NULL
)

98 
	`__os_
(
dbv
, 
fhp
->
me
);

99 
	`__os_
(
dbv
, 
fhp
);

102 
	}
}

	@../os_brew/os_mkdir.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_mkd
(
dbv
, 
me
, 
mode
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
me
;

21 
mode
;

23 
IFeMgr
 *
ifmp
;

24 
t
;

26 
	`COMPQUIET
(
mode
, 0);

28 
	`FILE_MANAGER_CREATE
(
dbv
, 
ifmp
, 
t
);

29 i(
t
 != 0)

30  (
t
);

32 i(
	`IFILEMGR_MkD
(
ifmp
, 
me
=
SUCCESS
)

33 
t
 = 0;

35 
	`FILE_MANAGER_ERR
(
dbv
, 
ifmp
, 
me
, "IFILEMGR_MkD", 
t
);

37 
	`IFILEMGR_R
(
ifmp
);

39  (
t
);

40 
	}
}

	@../os_brew/os_oflags.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__db_omode
(
rm
)

19 cڡ *
rm
;

21 
	`COMPQUIET
(
rm
, 
NULL
);

27 
	}
}

	@../os_brew/os_open.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_ݒ
(
dbv
, 
me
, 
ge_size
, 
ags
, 
mode
, 
fh
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
me
;

21 
u_t32_t
 
ge_size
, 
ags
;

22 
mode
;

23 
DB_FH
 **
fh
;

25 
OnFeMode
 
oags
;

26 
t
;

28 
	`COMPQUIET
(
ge_size
, 0);

30 
	#OKFLAGS
 \

31 (
DB_OSO_ABSMODE
 | 
DB_OSO_CREATE
 | 
DB_OSO_DIRECT
 | 
DB_OSO_DSYNC
 |\

32 
DB_OSO_EXCL
 | 
DB_OSO_RDONLY
 | 
DB_OSO_REGION
 | 
DB_OSO_SEQ
 | \

33 
DB_OSO_TEMP
 | 
DB_OSO_TRUNC
)

	)

34 i((
t
 = 
	`__db_fchk
(
dbv
, "__os_ݒ", 
ags
, 
OKFLAGS
)) != 0)

35  (
t
);

37 
oags
 = 0;

38 i(
	`LF_ISSET
(
DB_OSO_CREATE
))

39 
oags
 |
_OFM_CREATE
;

41 i(
	`LF_ISSET
(
DB_OSO_RDONLY
))

42 
oags
 |
_OFM_READ
;

44 
oags
 |
_OFM_READWRITE
;

46  (
	`__os_ݒhd
(
dbv
, 
me
, 
oags
, 
mode
, 
fh
));

47 
	}
}

	@../os_brew/os_pid.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_id
(
dbv
, 
pidp
, 
tidp
)

19 
DB_ENV
 *
dbv
;

20 
pid_t
 *
pidp
;

21 
db_thadid_t
 *
tidp
;

23 
AEEAt
 *
p
;

25 
	`COMPQUIET
(
dbv
, 
NULL
);

27 i(
pidp
 !
NULL
) {

28 
p
 = (
AEEAt
 *)
	`GETAPPINSTANCE
();

29 *
pidp
 = (
pid_t
)
	`ISHELL_AiveAt
(
p
->
m_pIShl
);

31 i(
tidp
 !
NULL
)

32 *
tidp
 = 0;

33 
	}
}

	@../os_brew/os_rename.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_me
(
dbv
, 
d
, 
w
, 
st
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
d
, *
w
;

21 
u_t32_t
 
st
;

23 
IFeMgr
 *
pIFeMgr
;

24 
t
;

26 
	`FILE_MANAGER_CREATE
(
dbv
, 
pIFeMgr
, 
t
);

27 i(
t
 != 0)

28  (
t
);

30 i(
	`IFILEMGR_Rame
(
pIFeMgr
, 
d
, 
w
=
SUCCESS
)

31 
t
 = 0;

33 i(!
st
)

34 
	`FILE_MANAGER_ERR
(
dbv
,

35 
pIFeMgr
, 
d
, "IFILEMGR_Rame", 
t
);

37 
t
 = 
	`__os_posix_r
(
	`IFILEMGR_GLaE
(
pIFeMgr
));

39 
	`IFILEMGR_R
(
pIFeMgr
);

40  (
t
);

41 
	}
}

	@../os_brew/os_rw.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_io
(
dbv
, 

, 
fhp
, 
pgno
, 
pgsize
, 
tive
, 
io_n
, 
buf
, 
ni
)

19 
DB_ENV
 *
dbv
;

20 

;

21 
DB_FH
 *
fhp
;

22 
db_pgno_t
 
pgno
;

23 
u_t32_t
 
pgsize
, 
tive
, 
io_n
;

24 
u_t8_t
 *
buf
;

25 
size_t
 *
ni
;

27 
t
;

29 
	`MUTEX_LOCK
(
dbv
, 
fhp
->
mtx_fh
);

31 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
pgno
, 
pgsize
, 
tive
)) != 0)

32 
r
;

33 

) {

34 
DB_IO_READ
:

35 
t
 = 
	`__os_ad
(
dbv
, 
fhp
, 
buf
, 
io_n
, 
ni
);

37 
DB_IO_WRITE
:

38 
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
buf
, 
io_n
, 
ni
);

41 
t
 = 
EINVAL
;

45 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 
fhp
->
mtx_fh
);

47  (
t
);

49 
	}
}

56 
	$__os_ad
(
dbv
, 
fhp
, 
addr
, 
n
, 
p
)

57 
DB_ENV
 *
dbv
;

58 
DB_FH
 *
fhp
;

59 *
addr
;

60 
size_t
 
n
;

61 
size_t
 *
p
;

63 
FeInfo
 
pInfo
;

64 
t
;

66 
t
 = 0;

67 i((*
p
 = (
size_t
)
	`IFILE_Rd
(
fhp
->
i
, 
addr
, 
n
)) !=en) {

68 
	`IFILE_GInfo
(
fhp
->
i
, &
pInfo
);

69 i(
pInfo
.
dwSize
 != 0) {

70 
t
 = 
	`__os_g_sy
();

71 
	`__db_sy
(
dbv
, 
t
, "IFILE_Read: %#lx, %lu",

72 
	`P_TO_ULONG
(
addr
), (
u_lg
)
n
);

73 
t
 = 
	`__os_posix_r
(ret);

76  (
t
);

77 
	}
}

84 
	$__os_wre
(
dbv
, 
fhp
, 
addr
, 
n
, 
nwp
)

85 
DB_ENV
 *
dbv
;

86 
DB_FH
 *
fhp
;

87 *
addr
;

88 
size_t
 
n
;

89 
size_t
 *
nwp
;

92 #ifde
HAVE_FILESYSTEM_NOTZERO


94 i(
	`__os_fs_nzo
()) {

95 
t
;

96 i((
t
 = 
	`__os_zofl
(
dbv
, 
fhp
)) != 0)

97  (
t
);

100  (
	`__os_physwre
(
dbv
, 
fhp
, 
addr
, 
n
, 
nwp
));

101 
	}
}

108 
	$__os_physwre
(
dbv
, 
fhp
, 
addr
, 
n
, 
nwp
)

109 
DB_ENV
 *
dbv
;

110 
DB_FH
 *
fhp
;

111 *
addr
;

112 
size_t
 
n
;

113 
size_t
 *
nwp
;

115 
t
;

128 
	`PANIC_CHECK
(
dbv
);

130 
t
 = 0;

131 i((*
nwp
 = (
size_t
)
	`IFILE_Wre
(
fhp
->
i
, 
addr
, 
n
)) !=en) {

132 
t
 = 
	`__os_g_sy
();

133 
	`__db_sy
(
dbv
, 
t
, "IFILE_Write: %#lx, %lu",

134 
	`P_TO_ULONG
(
addr
), (
u_lg
)
n
);

135 
t
 = 
	`__os_posix_r
(ret);

137  (
t
);

138 
	}
}

	@../os_brew/os_seek.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_ek
(
dbv
, 
fhp
, 
pgno
, 
pgsize
, 
tive
)

19 
DB_ENV
 *
dbv
;

20 
DB_FH
 *
fhp
;

21 
db_pgno_t
 
pgno
;

22 
u_t32_t
 
pgsize
;

23 
u_t32_t
 
tive
;

25 
off_t
 
offt
;

26 
t
;

28 
offt
 = (
off_t
)
pgsize
 * 
pgno
 + 
tive
;

34 
t
 = 
	`IFILE_Sk
(
fhp
->
i
, 
_SEEK_START
, 
offt
);

36 i(
t
 =
SUCCESS
) {

37 
fhp
->
pgsize
 =gsize;

38 
fhp
->
pgno
 =gno;

39 
fhp
->
offt
 = 
tive
;

40 
t
 = 0;

42 
	`__db_sy
(
dbv
, 
t
,

43 "ek: %lu: (%lu * %lu+ %lu", (
u_lg
)
offt
,

44 (
u_lg
)
pgno
, (u_lg)
pgsize
, (u_lg)
tive
);

45 
t
 = 
	`__os_posix_r
(ret);

48  (
t
);

49 
	}
}

	@../os_brew/os_sleep.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_p
(
dbv
, 
cs
, 
ucs
)

19 
DB_ENV
 *
dbv
;

20 
u_lg
 
cs
, 
ucs
;

22 
	`COMPQUIET
(
dbv
, 
NULL
);

24 #ifde
HAVE_BREW_SDK2


25 
	`COMPQUIET
(
cs
, 0);

26 
	`COMPQUIET
(
ucs
, 0);

28 
	`MSLEEP
(
cs
 * 
MS_PER_SEC
 + 
ucs
 / 
US_PER_MS
);

30 
	}
}

	@../os_brew/os_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_exis
(
dbv
, 
th
, 
isdp
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
th
;

21 *
isdp
;

23 
FeInfo
 
fInfo
;

24 
IFeMgr
 *
pIFeMgr
;

25 
t
;

27 
	`FILE_MANAGER_CREATE
(
dbv
, 
pIFeMgr
, 
t
);

28 i(
t
 != 0)

29  (
t
);

31 
t
 = 0;

32 i(
	`IFILEMGR_Te
(
pIFeMgr
, 
th
=
EFAILED
) {

33 
	`FILE_MANAGER_ERR
(

34 
dbv
, 
pIFeMgr
, 
th
, "IFILEMGR_Te", 
t
);

35 
r
;

38 i(
isdp
 !
NULL
) {

39 i(
	`IFILEMGR_GInfo
(
pIFeMgr
, 
th
, &
fInfo
=
EFAILED
) {

40 
	`FILE_MANAGER_ERR
(

41 
dbv
, 
pIFeMgr
, 
th
, "IFILEMGR_GInfo", 
t
);

42 
r
;

44 *
isdp
 = 
fInfo
.
ib
 =
_FA_DIR
 ? 1 : 0;

47 
r
: 
	`IFILEMGR_R
(
pIFeMgr
);

49  (
t
);

50 
	}
}

58 
	$__os_iofo
(
dbv
, 
th
, 
fhp
, 
mby
, 
by
, 
iosiz
)

59 
DB_ENV
 *
dbv
;

60 cڡ *
th
;

61 
DB_FH
 *
fhp
;

62 
u_t32_t
 *
mby
, *
by
, *
iosiz
;

64 
IFeMgr
 *
pIFeMgr
;

65 
FeInfo
 
fInfo
;

66 
t
;

68 
	`FILE_MANAGER_CREATE
(
dbv
, 
pIFeMgr
, 
t
);

69 i(
t
 != 0)

70  (
t
);

72 i(
	`IFILE_GInfo
(
fhp
->
i
, &
fInfo
!
SUCCESS
) {

73 
	`FILE_MANAGER_ERR
(
dbv
, 
pIFeMgr
, 
th
, "IFILE_GInfo", 
t
);

74 
r
;

78 i(
mby
 !
NULL
)

79 *
mby
 = (
u_t32_t
)(
fInfo
.
dwSize
 / 
MEGABYTE
);

80 i(
by
 !
NULL
)

81 *
by
 = (
u_t32_t
)(
fInfo
.
dwSize
 % 
MEGABYTE
);

84 i(
iosiz
 !
NULL
)

85 *
iosiz
 = 
DB_DEF_IOSIZE
;

87 
r
: 
	`IFILEMGR_R
(
pIFeMgr
);

88  (
t
);

89 
	}
}

	@../os_brew/os_truncate.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_un
(
dbv
, 
fhp
, 
pgno
, 
pgsize
)

19 
DB_ENV
 *
dbv
;

20 
DB_FH
 *
fhp
;

21 
db_pgno_t
 
pgno
;

22 
u_t32_t
 
pgsize
;

24 
IFeMgr
 *
pIFeMgr
;

25 
off_t
 
offt
;

26 
t
;

28 
	`FILE_MANAGER_CREATE
(
dbv
, 
pIFeMgr
, 
t
);

29 i(
t
 != 0)

30  (
t
);

36 
offt
 = (
off_t
)
pgsize
 * 
pgno
;

38 i(
	`IFILE_Trun
(
fhp
->
i
, 
offt
=
SUCCESS
)

39 
t
 = 0;

41 
	`FILE_MANAGER_ERR
(
dbv
, 
pIFeMgr
, 
NULL
, "IFILE_Trun", 
t
);

43 
	`IFILEMGR_R
(
pIFeMgr
);

45  (
t
);

46 
	}
}

	@../os_brew/os_unlink.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_uƚk
(
dbv
, 
th
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
th
;

22 
IFeMgr
 *
ifmp
;

23 
t
;

25 
	`FILE_MANAGER_CREATE
(
dbv
, 
ifmp
, 
t
);

26 i(
t
 != 0)

27  (
t
);

29 i(
	`IFILEMGR_Remove
(
ifmp
, 
th
=
EFAILED
)

30 
	`FILE_MANAGER_ERR
(
dbv
, 
ifmp
, 
th
, "IFILEMGR_Remove", 
t
);

32 
	`IFILEMGR_R
(
ifmp
);

34  (
t
);

35 
	}
}

	@../os_brew/time.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
time_t


21 
	$time
(
tim
)

22 
time_t
 *
tim
;

24 
time_t
 
now
;

30 #ifde
HAVE_BREW_SDK2


31 
now
 = (
time_t
)
	`GETTIMESECONDS
(+ 
BREW_EPOCH_OFFSET
;

33 
now
 = (
time_t
)
	`GETUTCSECONDS
(+ 
BREW_EPOCH_OFFSET
;

36 i(
tim
 !
NULL
)

37 *
tim
 = 
now
;

38  (
now
);

39 
	}
}

	@../os_qnx/os_qnx_open.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

23 
	$__os_qnx_gi_ݒ
(
dbv
, 
me
, 
oags
, 
mode
, 
fhp
)

24 
DB_ENV
 *
dbv
;

25 cڡ *
me
;

26 
oags
, 
mode
;

27 
DB_FH
 *
fhp
;

29 
t
;

30 *
wme
;

32 i((
t
 = 
	`__os_qnx_shmme
(
dbv
, 
me
, &
wme
)) != 0)

33  (
t
);

39 
fhp
->
fd
 = 
	`shm_ݒ
(
wme
, 
oags
, 
mode
);

40 i(
fhp
->
fd
 == -1)

41 
t
 = 
	`__os_posix_r
(
	`__os_g_sy
());

42 
	`__os_
(
dbv
, 
wme
);

43 i(
fhp
->
fd
 == -1)

44  (
t
);

46 
	`F_SET
(
fhp
, 
DB_FH_OPENED
);

48 #ifde
HAVE_FCNTL_F_SETFD


50 i(
	`f
(
fhp
->
fd
, 
F_SETFD
, 1) == -1) {

51 
t
 = 
	`__os_g_sy
();

52 
	`__db_sy
(
dbv
, 
t
, "fcntl(F_SETFD)");

53  (
	`__os_posix_r
(
t
));

57 
	}
}

68 
	$__os_qnx_shmme
(
dbv
, 
me
, 
wm
)

69 
DB_ENV
 *
dbv
;

70 cڡ *
me
;

71 **
wm
;

73 
t
;

74 
size_t
 
size
;

75 *
p
, *
q
, *
tmame
;

77 *
wm
 = 
NULL
;

92 i((
t
 = 
	`__os_rdup
(
dbv
, 
me
, &
tmame
)) != 0)

93  (
t
);

102 
p
 = 
	`__db_h
(
tmame
);

103 i(
p
 =
NULL
)

104  (
EINVAL
);

105 i(
p
 !
tmame
) {

106 *
p
 = '\0';

107 
q
 = 
p
;

108 
p
 = 
	`__db_h
(
tmame
);

109 *
q
 = ':';

111 i(
p
 !
NULL
) {

115 
t
 = 
	`__os_rdup
(
dbv
, 
p
, 
wm
);

116 
	`__os_
(
dbv
, 
tmame
);

117  (
t
);

124 
size
 = 
	`
(
tmame
) + 2;

125 i((
t
 = 
	`__os_mloc
(
dbv
, 
size
, &
p
)) != 0)

126  (
t
);

127 
p
[0] = '/';

128 
	`memy
(&
p
[1], 
tmame
, 
size
-1);

129 
	`__os_
(
dbv
, 
tmame
);

130 *
wm
 = 
p
;

132 
	}
}

	@../os_s60/os_config.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_fs_nzo
()

25 
	}
}

32 
	$__os_sut_de_io
()

35 
	}
}

42 
	$__os_sut_db_gi
()

45 
	}
}

52 
	$__os_sut_iti
()

55 
	}
}

	@../os_vxworks/os_vx_abs.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"iosLib.h
"

19 
	$__os_abh
(
th
)

20 cڡ *
th
;

22 
DEV_HDR
 *
dummy
;

23 *
a
;

29 i((
dummy
 = 
	`iosDevFd
((*)
th
, &
a
)=
NULL
)

35 i(
a
 !
th
)

41  (
th
[0] == '/');

42 
	}
}

	@../os_vxworks/os_vx_config.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_fs_nzo
()

26 
	}
}

33 
	$__os_sut_de_io
()

36 
	}
}

43 
	$__os_sut_db_gi
()

46 
	}
}

53 
	$__os_sut_iti
()

56 
	}
}

	@../os_vxworks/os_vx_map.c

12 
	~"db_cfig.h
"

14 
	~"db_t.h
"

33 *
	mgmt
;

34 
u_t32_t
 
	msize
;

35 *
	mme
;

36 
	mgid
;

37 } 
	tos_gda_t
;

39 
os_gda_t
 *
	g__os_gda
;

40 
	g__os_gda_size
;

42 
	#OS_SEGDATA_STARTING_SIZE
 16

	)

43 
	#OS_SEGDATA_INCREMENT
 16

	)

45 
__os_gda_lo


46 
__P
((
DB_ENV
 *, cڡ *, 
REGINFO
 *, 
REGION
 *));

47 
__os_gda_fd_byme


48 
__P
((
DB_ENV
 *, cڡ *, 
REGINFO
 *, 
REGION
 *));

49 
__os_gda_
 
__P
((
DB_ENV
 *));

50 
__os_gda_w
 
__P
((
DB_ENV
 *, *));

51 
__os_gda_a
 
__P
((
DB_ENV
 *, 
REGION
 *, ));

58 
	$__os_r_syach
(
dbv
, 
f
, 

)

59 
DB_ENV
 *
dbv
;

60 
REGINFO
 *
f
;

61 
REGION
 *

;

63 
t
;

65 i(
__os_gda
 =
NULL
)

66 
	`__os_gda_
(
dbv
);

68 
DB_BEGIN_SINGLE_THREAD
;

71 
t
 = 
	`__os_gda_fd_byme
(
dbv
, 
f
->
me
, inf, 

);

78 i(!
	`F_ISSET
(
f
, 
REGION_CREATE
)) {

79 i(
t
 != 0) {

80 
	`__db_rx
(
dbv
, "segment %s doesotxist",

81 
f
->
me
);

82 
t
 = 
EAGAIN
;

84 
out
;

97 i(
t
 !0 && !
ENOENT
)

98 
out
;

100 i(
dbv
->
shm_key
 =
INVALID_REGION_SEGID
) {

101 
	`__db_rx
(
dbv
, "no base shared memory ID specified");

102 
t
 = 
EAGAIN
;

103 
out
;

105 i(
t
 =0 && 
	`__os_gda_a
(
dbv
, 

, 1) != 0) {

106 
	`__db_rx
(
dbv
,

108 
dbv
->
shm_key
 + (
f
->
id
 - 1));

109 
t
 = 
EAGAIN
;

110 
out
;

113 
t
 = 
	`__os_gda_lo
(
dbv
, 
f
->
me
, inf, 

);

114 
out
:

115 
DB_END_SINGLE_THREAD
;

116  (
t
);

117 
	}
}

124 
	$__os_r_sysdach
(
dbv
, 
f
, 
deroy
)

125 
DB_ENV
 *
dbv
;

126 
REGINFO
 *
f
;

127 
deroy
;

133 i(
deroy
)

134  (
	`__os_gda_a
(
dbv
, 
f
->

, 0));

136 
	}
}

143 
	$__os_mfe
(
dbv
, 
th
, 
fhp
, 
n
, 
is_rdly
, 
add
)

144 
DB_ENV
 *
dbv
;

145 *
th
;

146 
DB_FH
 *
fhp
;

147 
is_rdly
;

148 
size_t
 
n
;

149 **
add
;

152 
	`COMPQUIET
(
dbv
, 
NULL
);

153 
	`COMPQUIET
(
th
, 
NULL
);

154 
	`COMPQUIET
(
fhp
, 
NULL
);

155 
	`COMPQUIET
(
is_rdly
, 0);

156 
	`COMPQUIET
(
n
, 0);

157 
	`COMPQUIET
(
add
, 
NULL
);

158  (
EINVAL
);

159 
	}
}

166 
	$__os_unmfe
(
dbv
, 
addr
, 
n
)

167 
DB_ENV
 *
dbv
;

168 *
addr
;

169 
size_t
 
n
;

172 
	`COMPQUIET
(
dbv
, 
NULL
);

173 
	`COMPQUIET
(
addr
, 
NULL
);

174 
	`COMPQUIET
(
n
, 0);

175  (
EINVAL
);

176 
	}
}

184 
	$__os_gda_
(
dbv
)

185 
DB_ENV
 *
dbv
;

187 
t
;

189 i(
__os_gda
 !
NULL
) {

190 
	`__db_rx
(
dbv
, "shared memory segmentlreadyxists");

191  (
EEXIST
);

197 
DB_BEGIN_SINGLE_THREAD
;

198 
__os_gda_size
 = 
OS_SEGDATA_STARTING_SIZE
;

199 
t
 = 
	`__os_oc
(
dbv
,

200 
__os_gda_size
, (
os_gda_t
), &
__os_gda
);

201 
DB_END_SINGLE_THREAD
;

202  (
t
);

203 
	}
}

213 
	$__os_gda_deroy
(
dbv
)

214 
DB_ENV
 *
dbv
;

216 
os_gda_t
 *
p
;

217 
i
;

219 i(
__os_gda
 =
NULL
)

222 
DB_BEGIN_SINGLE_THREAD
;

223 
i
 = 0; i < 
__os_gda_size
; i++) {

224 
p
 = &
__os_gda
[
i
];

225 i(
p
->
me
 !
NULL
) {

226 
	`__os_
(
dbv
, 
p
->
me
);

227 
p
->
me
 = 
NULL
;

229 i(
p
->
gmt
 !
NULL
) {

230 
	`__os_
(
dbv
, 
p
->
gmt
);

231 
p
->
gmt
 = 
NULL
;

233 
p
->
size
 = 0;

236 
	`__os_
(
dbv
, 
__os_gda
);

237 
__os_gda
 = 
NULL
;

238 
__os_gda_size
 = 0;

239 
DB_END_SINGLE_THREAD
;

242 
	}
}

252 
	$__os_gda_lo
(
dbv
, 
me
, 
f
, 

)

253 
DB_ENV
 *
dbv
;

254 cڡ *
me
;

255 
REGINFO
 *
f
;

256 
REGION
 *

;

258 
os_gda_t
 *
p
;

259 
id
, 
t
;

261 i((
t
 = 
	`__os_gda_w
(
dbv
, &
id
)) != 0)

262  (
t
);

264 
p
 = &
__os_gda
[
id
];

265 i((
t
 = 
	`__os_oc
(
dbv
, 1, 

->
size
, &
p
->
gmt
)) != 0)

266  (
t
);

267 i((
t
 = 
	`__os_rdup
(
dbv
, 
me
, &
p
->name)) != 0) {

268 
	`__os_
(
dbv
, 
p
->
gmt
);

269 
p
->
gmt
 = 
NULL
;

270  (
t
);

272 
p
->
size
 = 

->size;

273 
p
->
gid
 = 
dbv
->
shm_key
 + 
f
->
id
 - 1;

275 
f
->
addr
 = 
p
->
gmt
;

276 

->
gid
 = 
id
;

279 
	}
}

289 
	$__os_gda_w
(
dbv
, 
gidp
)

290 
DB_ENV
 *
dbv
;

291 *
gidp
;

293 
os_gda_t
 *
p
;

294 
i
, 
wsize
, 
t
;

296 i(
__os_gda
 =
NULL
) {

297 
	`__db_rx
(
dbv
, "shared memory segmentot initialized");

298  (
EAGAIN
);

301 
i
 = 0; i < 
__os_gda_size
; i++) {

302 
p
 = &
__os_gda
[
i
];

303 i(
p
->
gmt
 =
NULL
) {

304 *
gidp
 = 
i
;

312 
wsize
 = 
__os_gda_size
 + 
OS_SEGDATA_INCREMENT
;

313 i((
t
 = 
	`__os_loc
(
dbv
, 
wsize
 * (
os_gda_t
),

314 &
__os_gda
)) != 0)

315  (
t
);

316 
	`memt
(&
__os_gda
[
__os_gda_size
],

317 0, 
OS_SEGDATA_INCREMENT
 * (
os_gda_t
));

319 *
gidp
 = 
__os_gda_size
;

320 
__os_gda_size
 = 
wsize
;

323 
	}
}

332 
	$__os_gda_fd_byme
(
dbv
, 
me
, 
f
, 

)

333 
DB_ENV
 *
dbv
;

334 cڡ *
me
;

335 
REGINFO
 *
f
;

336 
REGION
 *

;

338 
os_gda_t
 *
p
;

339 
gid
;

340 
i
;

342 i(
__os_gda
 =
NULL
) {

343 
	`__db_rx
(
dbv
, "shared memory segmentot initialized");

344  (
EAGAIN
);

347 i(
me
 =
NULL
) {

348 
	`__db_rx
(
dbv
, "no segmentame given");

349  (
EAGAIN
);

357 i(
	`F_ISSET
(
f
, 
REGION_CREATE
))

358 
gid
 = 
dbv
->
shm_key
 + (
f
->
id
 - 1);

360 i(

->
gid
 >
__os_gda_size
 ||

361 

->
gid
 =
INVALID_REGION_SEGID
) {

362 
	`__db_rx
(
dbv
, "Invalid segment id given");

363  (
EAGAIN
);

365 
gid
 = 
__os_gda
[

->segid].segid;

367 
i
 = 0; i < 
__os_gda_size
; i++) {

368 
p
 = &
__os_gda
[
i
];

369 i(
p
->
me
 !
NULL
 && 
	`rcmp
(name,->name) == 0 &&

370 
p
->
gid
 == segid) {

371 
f
->
addr
 = 
p
->
gmt
;

372 

->
gid
 = 
i
;

376  (
ENOENT
);

377 
	}
}

384 
	$__os_gda_a
(
dbv
, 

, 
is_locked
)

385 
DB_ENV
 *
dbv
;

386 
REGION
 *

;

387 
is_locked
;

389 
os_gda_t
 *
p
;

391 i(
__os_gda
 =
NULL
) {

392 
	`__db_rx
(
dbv
, "shared memory segmentot initialized");

393  (
EAGAIN
);

396 i(

->
gid
 < 0 ||p->gid >
__os_gda_size
) {

397 
	`__db_rx
(
dbv
, "gmid %ld ouonge", 

->
gid
);

398  (
EINVAL
);

401 i(
is_locked
 == 0)

402 
DB_BEGIN_SINGLE_THREAD
;

403 
p
 = &
__os_gda
[

->
gid
];

404 i(
p
->
me
 !
NULL
) {

405 
	`__os_
(
dbv
, 
p
->
me
);

406 
p
->
me
 = 
NULL
;

408 i(
p
->
gmt
 !
NULL
) {

409 
	`__os_
(
dbv
, 
p
->
gmt
);

410 
p
->
gmt
 = 
NULL
;

412 
p
->
size
 = 0;

413 i(
is_locked
 == 0)

414 
DB_END_SINGLE_THREAD
;

419 
	}
}

	@../os_vxworks/os_vx_rpath.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
	~"iosLib.h
"

20 
	$__db_h
(
th
)

21 cڡ *
th
;

23 cڡ *
s
, *
ϡ
;

24 
DEV_HDR
 *
dummy
;

25 *
a
;

40 i((
dummy
 = 
	`iosDevFd
((*)
th
, &
a
)=
NULL
)

41 
s
 = 
th
;

43 
s
 = 
a
;

45 
ϡ
 = 
NULL
;

46 i(
PATH_SEPARATOR
[1] != '\0') {

47 ; 
s
[0] != '\0'; ++s)

48 i(
	`rchr
(
PATH_SEPARATOR
, 
s
[0]!
NULL
)

49 
ϡ
 = 
s
;

51 ; 
s
[0] != '\0'; ++s)

52 i(
s
[0] =
PATH_SEPARATOR
[0])

53 
ϡ
 = 
s
;

54  ((*)
ϡ
);

55 
	}
}

	@../os_windows/ce_ctime.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
__os_wdows__numb
 
__P
((*, ));

20 
	$__db_ime
(
tod
, 
time_buf
)

21 cڡ 
time_t
 *
tod
;

22 *
time_buf
;

24 *
n
;

25 
__t64
 
i64_tod
;

26 
_FILETIME
 
fe_tod
, 
fe_loc
;

27 
_SYSTEMTIME
 
sys_loc
;

28 cڡ 
__t64
 
SECS_BETWEEN_EPOCHS
 = 11644473600;

29 cڡ 
__t64
 
SECS_TO_100NS
 = 10000000;

31 
	`ry
(
time_buf
, "Thu Jan 01 00:00:00 1970");

32 
time_buf
[
CTIME_BUFLEN
 - 1] = '\0';

35 
i64_tod
 = *
tod
;

36 
i64_tod
 = (i64_tod + 
SECS_BETWEEN_EPOCHS
)*
SECS_TO_100NS
;

37 
	`memy
(&
fe_tod
, &
i64_tod
, (file_tod));

38 
	`FeTimeToLolFeTime
(&
fe_tod
, &
fe_loc
);

39 
	`FeTimeToSyemTime
(&
fe_loc
, &
sys_loc
);

47 
n
 = &"MTueWedThuFriSSun"[
sys_loc
.
wDayOfWk
*3];

48 
time_buf
[0] = *
n
++;

49 
time_buf
[1] = *
n
++;

50 
time_buf
[2] = *
n
;

51 
n
 = &"JFebMAMayJunJulAugSONovDec"[(
sys_loc
.
wMth
 - 1) * 3];

52 
time_buf
[4] = *
n
++;

53 
time_buf
[5] = *
n
++;

54 
time_buf
[6] = *
n
;

56 
	`__os_wdows__numb
(
time_buf
 + 8, 
sys_loc
.
wDay
);

58 
	`__os_wdows__numb
(
time_buf
 + 11, 
sys_loc
.
wHour
 + 100);

59 
	`__os_wdows__numb
(
time_buf
 + 14, 
sys_loc
.
wMu
 + 100);

60 
	`__os_wdows__numb
(
time_buf
 + 17, 
sys_loc
.
wSecd
 + 100);

62 i(
sys_loc
.
wYr
 < 100) {

63 
time_buf
[20] = ' ';

64 
time_buf
[21] = ' ';

65 
	`__os_wdows__numb
(
time_buf
 + 22, 
sys_loc
.
wYr
);

67 
	`__os_wdows__numb
(
time_buf
 + 20, 
sys_loc
.
wYr
 / 100);

68 
	`__os_wdows__numb
(
time_buf
 + 22, 
sys_loc
.
wYr
 % 100 + 100);

71  (
time_buf
);

72 
	}
}

79 
	$__os_wdows__numb
(

, 
n
)

80 *

;

81 
n
;

83 

[0] = ' ';

84 i(
n
 >= 10)

85 

[0] = (
n
 / 10) % 10 + '0';

86 

[1] = 
n
 % 10 + '0';

87 
	}
}

	@../os_windows/ce_time.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
time_t


21 
	$time
(
tim
)

22 
time_t
 *
tim
;

32 cڡ 
__t64
 
SECS_BETWEEN_EPOCHS
 = 11644473600;

33 cڡ 
__t64
 
SECS_TO_100NS
 = 10000000;

35 
_SYSTEMTIME
 
ime
;

36 
_FILETIME
 
ime
;

37 
__t64
 
s
;

38 
	`GSyemTime
(&
ime
);

39 
	`SyemTimeToFeTime
(&
ime
, &
ime
);

41 
	`memy
(&
s
, &
ime
, (
__t64
));

43 
s
 = (s/
SECS_TO_100NS
- 
SECS_BETWEEN_EPOCHS
;

50 i(
tim
 !
NULL
)

51 *
tim
 = (
time_t
)
s
;

52  ((
time_t
)
s
);

53 
	}
}

	@../os_windows/os_abs.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_abh
(
th
)

19 cڡ *
th
;

27 i(
	`iha
(
th
[0]) &&ath[1] == ':')

28 
th
 += 2;

29  (
th
[0] == '/' ||ath[0] == '\\');

30 
	}
}

	@../os_windows/os_clock.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_gtime
(
dbv
, 

)

19 
DB_ENV
 *
dbv
;

20 
db_timeec
 *

;

22 #ifde
DB_WINCE


23 
DWORD
 
ticks
;

25 
ticks
 = 
	`GTickCou
();

27 

->
tv_c
 = (
u_t32_t
)(
ticks
 / 1000);

28 

->
tv_nc
 = (
u_t32_t
)((
ticks
 % 1000* 
MS_PER_NS
);

30 
_timeb
 
now
;

32 
	`_ime
(&
now
);

33 

->
tv_c
 = 
now
.
time
;

34 

->
tv_nc
 = 
now
.
mlm
 * 
MS_PER_NS
;

36 
	}
}

	@../os_windows/os_config.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_is_w
()

22 #ifde
DB_WINCE


25 
__os_ty
 = -1;

31 i(
__os_ty
 == -1) {

32 i((
	`GVsi
() & 0x80000000) == 0)

33 
__os_ty
 = 1;

35 
__os_ty
 = 0;

37  (
__os_ty
);

39 
	}
}

46 
	$__os_fs_nzo
()

48 #ifde
DB_WINCE


51 
__os_nzo
 = -1;

52 
OSVERSIONINFO
 
osvi
;

82 i(
__os_nzo
 == -1) {

83 i(
	`__os_is_w
()) {

84 
osvi
.
dwOSVsiInfoSize
 = (
OSVERSIONINFO
);

85 
	`GVsiEx
(&
osvi
);

86 i(
	`_tcscmp
(
osvi
.
szCSDVsi
, 
	`_T
("RTTarget-32")) == 0)

87 
__os_nzo
 = 1;

89 
__os_nzo
 = 0;

91 
__os_nzo
 = 1;

93  (
__os_nzo
);

95 
	}
}

102 
	$__os_sut_de_io
()

105 
	}
}

112 
	$__os_sut_db_gi
()

114 #ifde
DB_WINCE


117  (
	`__os_is_w
());

119 
	}
}

126 
	$__os_sut_iti
()

128 #ifde
DB_WINCE


131  (
	`__os_is_w
());

133 
	}
}

	@../os_windows/os_dir.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_dli
(
dbv
, 
d
, 
me
, 

)

19 
DB_ENV
 *
dbv
;

20 cڡ *
d
;

21 ***
me
;

22 *

;

24 
HANDLE
 
dhd
;

25 
WIN32_FIND_DATA
 
fda
;

26 
ysz
, 
t
, 
t
;

27 **
mes
, *
ڒame
;

28 
_TCHAR
 
tfeec
[
DB_MAXPATHLEN
 + 1];

29 
_TCHAR
 *
td
;

31 
	`TO_TSTRING
(
dbv
, 
d
, 
td
, 
t
);

32 i(
t
 != 0)

33  (
t
);

35 ()
	`_rtf
(
tfeec
, 
DB_MAXPATHLEN
,

36 
	`_T
("%s%hc*"), 
td
, 
PATH_SEPARATOR
[0]);

37 i((
dhd
 =

38 
	`FdFFe
(
tfeec
, &
fda
)=
INVALID_HANDLE_VALUE
)

39  (
	`__os_posix_r
(
	`__os_g_sy
()));

41 
mes
 = 
NULL
;

42 
ysz
 = 
t
 = 
t
 = 0;

44 i((
fda
.
dwFeAribus
 & 
FILE_ATTRIBUTE_DIRECTORY
) == 0) {

45 i(
t
 >
ysz
) {

46 
ysz
 += 100;

47 i((
t
 = 
	`__os_loc
(
dbv
,

48 
ysz
 * (
mes
[0]), &names)) != 0)

49 
r
;

57 
	`FROM_TSTRING
(
dbv
, 
fda
.
cFeName
, 
ڒame
, 
t
);

58 i(
t
 != 0)

59 
r
;

60 
t
 = 
	`__os_rdup
(
dbv
, 
ڒame
, &
mes
[
t
]);

61 
	`FREE_STRING
(
dbv
, 
ڒame
);

62 i(
t
 != 0)

63 
r
;

64 
t
++;

66 i(!
	`FdNextFe
(
dhd
, &
fda
)) {

67 i(
	`GLaE
(=
ERROR_NO_MORE_FILES
)

70 
t
 = 
	`__os_posix_r
(
	`__os_g_sy
());

71 
r
;

76 
r
: i(!
	`FdClo
(
dhd
&& 
t
 == 0)

77 
t
 = 
	`__os_posix_r
(
	`__os_g_sy
());

79 i(
t
 == 0) {

80 *
me
 = 
mes
;

81 *

 = 
t
;

82 } i(
mes
 !
NULL
)

83 
	`__os_d
(
dbv
, 
mes
, 
t
);

85 
	`FREE_STRING
(
dbv
, 
td
);

87  (
t
);

88 
	}
}

95 
	$__os_d
(
dbv
, 
mes
, 
t
)

96 
DB_ENV
 *
dbv
;

97 **
mes
;

98 
t
;

100 
t
 > 0)

101 
	`__os_
(
dbv
, 
mes
[--
t
]);

102 
	`__os_
(
dbv
, 
mes
);

103 
	}
}

	@../os_windows/os_errno.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_g_o_t_zo
()

21  (
o
);

22 
	}
}

36 
	$__os_g_o
()

39 i(
o
 == 0)

40 
	`__os_t_o
(
EAGAIN
);

41  (
o
);

42 
	}
}

44 #ifde
HAVE_REPLICATION_THREADS


54 
	$__os_g_Ë
()

56 
r
;

59 
r
 = 
	`WSAGLaE
();

60 i(
r
 == 0)

61 
	`WSASLaE
(
r
 = 
ERROR_RETRY
);

62  (
r
);

63 
	}
}

71 
	$__os_g_sy
()

73 
r
;

76 
r
 = 
	`GLaE
();

77 i(
r
 == 0)

78 
	`SLaE
(
r
 = 
ERROR_RETRY
);

79  (
r
);

80 
	}
}

87 
	$__os_t_o
(
evue
)

88 
evue
;

98 
o
 =

99 
evue
 >0 ?vu: (evu=
DB_RUNRECOVERY
 ? 
EFAULT
 : 
EINVAL
);

100 
	}
}

107 
	$__os_
(
r
, 
buf
, 
n
)

108 
r
;

109 *
buf
;

110 
size_t
 
n
;

112 #ifde
DB_WINCE


113 
	#MAX_TMPBUF_LEN
 512

	)

114 
_TCHAR
 
tbuf
[
MAX_TMPBUF_LEN
];

115 
size_t
 
maxn
;

117 
	`DB_ASSERT
(
NULL
, 
r
 != 0);

119 
	`memt
(
tbuf
, 0, (
_TCHAR
)*
MAX_TMPBUF_LEN
);

120 
maxn
 = (
n
 > 
MAX_TMPBUF_LEN
 ? MAX_TMPBUF_LEN :en);

121 
	`FmMesge
(
FORMAT_MESSAGE_FROM_SYSTEM
, 0, (
DWORD
)
r
,

122 0, 
tbuf
, 
maxn
-1, 
NULL
);

124 i(
	`WideChToMuiBy
(
CP_UTF8
, 0, 
tbuf
, -1,

125 
buf
, 
n
, 0, 
NULL
) == 0)

126 
	`y
(
buf
, "E mesgi faed.", 
n
);

128 
	`DB_ASSERT
(
NULL
, 
r
 != 0);

133 
	`FmMesgeA
(
FORMAT_MESSAGE_FROM_SYSTEM
,

134 0, (
DWORD
)
r
, 0, 
buf
, (DWORD)(
n
 - 1), 
NULL
);

135 
buf
[
n
 - 1] = '\0';

138  (
buf
);

139 
	}
}

146 
	$__os_posix_r
(
r
)

147 
r
;

150 i(
r
 == 0)

156 
r
) {

157 
ERROR_INVALID_PARAMETER
:

158  (
EINVAL
);

160 
ERROR_FILE_NOT_FOUND
:

161 
ERROR_INVALID_DRIVE
:

162 
ERROR_PATH_NOT_FOUND
:

163  (
ENOENT
);

165 
ERROR_NO_MORE_FILES
:

166 
ERROR_TOO_MANY_OPEN_FILES
:

167  (
EMFILE
);

169 
ERROR_ACCESS_DENIED
:

170  (
EPERM
);

172 
ERROR_INVALID_HANDLE
:

173  (
EBADF
);

175 
ERROR_NOT_ENOUGH_MEMORY
:

176  (
ENOMEM
);

178 
ERROR_DISK_FULL
:

179  (
ENOSPC
);

181 
ERROR_ARENA_TRASHED
:

182 
ERROR_BAD_COMMAND
:

183 
ERROR_BAD_ENVIRONMENT
:

184 
ERROR_BAD_FORMAT
:

185 
ERROR_GEN_FAILURE
:

186 
ERROR_INVALID_ACCESS
:

187 
ERROR_INVALID_BLOCK
:

188 
ERROR_INVALID_DATA
:

189 
ERROR_READ_FAULT
:

190 
ERROR_WRITE_FAULT
:

191  (
EFAULT
);

193 
ERROR_ALREADY_EXISTS
:

194 
ERROR_FILE_EXISTS
:

195  (
EEXIST
);

197 
ERROR_NOT_SAME_DEVICE
:

198  (
EXDEV
);

200 
ERROR_WRITE_PROTECT
:

201  (
EACCES
);

203 
ERROR_LOCK_FAILED
:

204 
ERROR_LOCK_VIOLATION
:

205 
ERROR_NOT_READY
:

206 
ERROR_SHARING_VIOLATION
:

207  (
EBUSY
);

209 
ERROR_RETRY
:

210  (
EINTR
);

216 
r
) {

217 
WSAEADDRINUSE
:

218 #ifde
EADDRINUSE


219  (
EADDRINUSE
);

223 
WSAEADDRNOTAVAIL
:

224 #ifde
EADDRNOTAVAIL


225  (
EADDRNOTAVAIL
);

229 
WSAEAFNOSUPPORT
:

230 #ifde
EAFNOSUPPORT


231  (
EAFNOSUPPORT
);

235 
WSAEALREADY
:

236 #ifde
EALREADY


237  (
EALREADY
);

241 
WSAEBADF
:

242  (
EBADF
);

243 
WSAECONNABORTED
:

244 #ifde
ECONNABORTED


245  (
ECONNABORTED
);

249 
WSAECONNREFUSED
:

250 #ifde
ECONNREFUSED


251  (
ECONNREFUSED
);

255 
WSAECONNRESET
:

256 #ifde
ECONNRESET


257  (
ECONNRESET
);

261 
WSAEDESTADDRREQ
:

262 #ifde
EDESTADDRREQ


263  (
EDESTADDRREQ
);

267 
WSAEFAULT
:

268  (
EFAULT
);

269 
WSAEHOSTDOWN
:

270 #ifde
EHOSTDOWN


271  (
EHOSTDOWN
);

275 
WSAEHOSTUNREACH
:

276 #ifde
EHOSTUNREACH


277  (
EHOSTUNREACH
);

281 
WSAEINPROGRESS
:

282 #ifde
EINPROGRESS


283  (
EINPROGRESS
);

287 
WSAEINTR
:

288  (
EINTR
);

289 
WSAEINVAL
:

290  (
EINVAL
);

291 
WSAEISCONN
:

292 #ifde
EISCONN


293  (
EISCONN
);

297 
WSAELOOP
:

298 #ifde
ELOOP


299  (
ELOOP
);

303 
WSAEMFILE
:

304  (
EMFILE
);

305 
WSAEMSGSIZE
:

306 #ifde
EMSGSIZE


307  (
EMSGSIZE
);

311 
WSAENAMETOOLONG
:

312  (
ENAMETOOLONG
);

313 
WSAENETDOWN
:

314 #ifde
ENETDOWN


315  (
ENETDOWN
);

319 
WSAENETRESET
:

320 #ifde
ENETRESET


321  (
ENETRESET
);

325 
WSAENETUNREACH
:

326 #ifde
ENETUNREACH


327  (
ENETUNREACH
);

331 
WSAENOBUFS
:

332 #ifde
ENOBUFS


333  (
ENOBUFS
);

337 
WSAENOPROTOOPT
:

338 #ifde
ENOPROTOOPT


339  (
ENOPROTOOPT
);

343 
WSAENOTCONN
:

344 #ifde
ENOTCONN


345  (
ENOTCONN
);

349 
WSANOTINITIALISED
:

350  (
EAGAIN
);

351 
WSAENOTSOCK
:

352 #ifde
ENOTSOCK


353  (
ENOTSOCK
);

357 
WSAEOPNOTSUPP
:

358  (
DB_OPNOTSUP
);

359 
WSAEPFNOSUPPORT
:

360 #ifde
EPFNOSUPPORT


361  (
EPFNOSUPPORT
);

365 
WSAEPROTONOSUPPORT
:

366 #ifde
EPROTONOSUPPORT


367  (
EPROTONOSUPPORT
);

371 
WSAEPROTOTYPE
:

372 #ifde
EPROTOTYPE


373  (
EPROTOTYPE
);

377 
WSAESHUTDOWN
:

378 #ifde
ESHUTDOWN


379  (
ESHUTDOWN
);

383 
WSAESOCKTNOSUPPORT
:

384 #ifde
ESOCKTNOSUPPORT


385  (
ESOCKTNOSUPPORT
);

389 
WSAETIMEDOUT
:

390 #ifde
ETIMEDOUT


391  (
ETIMEDOUT
);

395 
WSAETOOMANYREFS
:

396 #ifde
ETOOMANYREFS


397  (
ETOOMANYREFS
);

401 
WSAEWOULDBLOCK
:

402 #ifde
EWOULDBLOCK


403  (
EWOULDBLOCK
);

405  (
EAGAIN
);

407 
WSAHOST_NOT_FOUND
:

408 #ifde
EHOSTUNREACH


409  (
EHOSTUNREACH
);

413 
WSASYSNOTREADY
:

414  (
EAGAIN
);

415 
WSATRY_AGAIN
:

416  (
EAGAIN
);

417 
WSAVERNOTSUPPORTED
:

418  (
DB_OPNOTSUP
);

419 
WSAEACCES
:

420  (
EACCES
);

426  (
EFAULT
);

427 
	}
}

	@../os_windows/os_fid.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_feid
(
dbv
, 
ame
, 
unique_okay
, 
fidp
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
ame
;

21 
unique_okay
;

22 
u_t8_t
 *
fidp
;

24 
pid_t
 
pid
;

25 
size_t
 
i
;

26 
u_t32_t
 
tmp
;

27 
u_t8_t
 *
p
;

28 
t
;

37 
DB_FH
 *
fhp
;

38 
BY_HANDLE_FILE_INFORMATION
 
fi
;

39 
BOOL
 
tv
 = 
FALSE
;

41 
	`DB_ASSERT
(
dbv
, 
ame
 !
NULL
);

44 
	`memt
(
fidp
, 0, 
DB_FILE_ID_LEN
);

50 i((
t
 = 
	`__os_ݒ
(
dbv
, 
ame
, 0,

51 
DB_OSO_RDONLY
, 
	`__db_omode
("r--------"), &
fhp
)) != 0)

52  (
t
);

55 i((
tv
 = 
	`GFeInfmiByHd
(
fhp
->
hd
, &
fi
)=
FALSE
)

56 
t
 = 
	`__os_g_sy
();

57 ()
	`__os_ohd
(
dbv
, 
fhp
);

59 i(
tv
 =
FALSE
)

60  (
	`__os_posix_r
(
t
));

84 
tmp
 = (
u_t32_t
)
fi
.
nFeIndexLow
;

85 
p
 = (
u_t8_t
 *)&
tmp
, 
i
 = (
u_t32_t
); i > 0; --i)

86 *
fidp
++ = *
p
++;

87 
tmp
 = (
u_t32_t
)
fi
.
nFeIndexHigh
;

88 
p
 = (
u_t8_t
 *)&
tmp
, 
i
 = (
u_t32_t
); i > 0; --i)

89 *
fidp
++ = *
p
++;

91 i(
unique_okay
) {

93 
	`__os_unique_id
(
dbv
, &
tmp
);

94 
p
 = (
u_t8_t
 *)&
tmp
, 
i
 = (
u_t32_t
); i > 0; --i)

95 *
fidp
++ = *
p
++;

116 i(
	`DB_GLOBAL
(
fid_rl
) == 0) {

117 
	`__os_id
(
dbv
, &
pid
, 
NULL
);

118 
	`DB_GLOBAL
(
fid_rl
(
u_t32_t
)
pid
;

120 
	`DB_GLOBAL
(
fid_rl
) += 100000;

123 
tmp
 = (
u_t32_t
)
fi
.
dwVumeSlNumb
;

124 
p
 = (
u_t8_t
 *)&
tmp
, 
i
 = (
u_t32_t
); i > 0; --i)

125 *
fidp
++ = *
p
++;

129 
	}
}

	@../os_windows/os_flock.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_fdlock
(
dbv
, 
fhp
, 
offt
, 
acque
, 
nowa
)

19 
DB_ENV
 *
dbv
;

20 
DB_FH
 *
fhp
;

21 
acque
, 
nowa
;

22 
off_t
 
offt
;

24 #ifde
DB_WINCE


31 
	`__db_rx
(
dbv
, "fdlock APIot implemented for WinCE, DB_REGISTER "

33  (
EFAULT
);

35 
t
;

36 
DWORD
 
low
, 
high
;

37 
OVERLAPPED
 
ov
;

39 
	`DB_ASSERT
(
dbv
,

40 
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
&& fhp->
hd
 !
INVALID_HANDLE_VALUE
);

42 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

43 
	`__db_msg
(
dbv
,

45 
fhp
->
me
, 
acque
 ? "acque": "a", (
u_lg
)
offt
);

51 
	`DB_ASSERT
(
dbv
, 
offt
 < (
u_t64_t
)
INT64_MAX
);

52 
offt
 = 
UINT64_MAX
 - offset;

53 
low
 = (
DWORD
)
offt
;

54 
high
 = (
DWORD
)(
offt
 >> 32);

56 i(
acque
) {

57 i(
nowa
)

58 
	`RETRY_CHK_EINTR_ONLY
(

59 !
	`LockFe
(
fhp
->
hd
, 
low
, 
high
, 1, 0), 
t
);

60 i(
	`__os_is_w
()) {

61 
	`memt
(&
ov
, 0, (over));

62 
ov
.
Offt
 = 
low
;

63 
ov
.
OfftHigh
 = 
high
;

64 
	`RETRY_CHK_EINTR_ONLY
(

65 !
	`LockFeEx
(
fhp
->
hd
, 
LOCKFILE_EXCLUSIVE_LOCK
,

66 0, 1, 0, &
ov
),

67 
t
);

71 
	`RETRY_CHK_EINTR_ONLY
(

72 !
	`LockFe
(
fhp
->
hd
, 
low
, 
high
, 1, 0),

73 
t
);

74 i(
	`__os_posix_r
(
t
!
EAGAIN
)

76 
	`__os_p
(
dbv
, 1, 0);

80 
	`RETRY_CHK_EINTR_ONLY
(

81 !
	`UockFe
(
fhp
->
hd
, 
low
, 
high
, 1, 0), 
t
);

83  (
	`__os_posix_r
(
t
));

85 
	}
}

	@../os_windows/os_fsync.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_fsync
(
dbv
, 
fhp
)

19 
DB_ENV
 *
dbv
;

20 
DB_FH
 *
fhp
;

22 
t
;

28 i(
	`F_ISSET
(
fhp
, 
DB_FH_NOSYNC
))

31 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

32 
	`__db_msg
(
dbv
, "fes: flush %s", 
fhp
->
me
);

34 
	`RETRY_CHK
((!
	`FlushFeBufrs
(
fhp
->
hd
)), 
t
);

35 i(
t
 != 0) {

36 
	`__db_sy
(
dbv
, 
t
, "FlushFileBuffers");

37 
t
 = 
	`__os_posix_r
(ret);

39  (
t
);

40 
	}
}

	@../os_windows/os_getenv.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_gv
(
dbv
, 
me
, 
b
, 
bu
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
me
;

21 **
b
;

22 
size_t
 
bu
;

24 #ifde
DB_WINCE


25 
	`COMPQUIET
(
me
, 
NULL
);

29 
_TCHAR
 *
ame
, 
tbuf
[1024];

30 
t
;

31 *
p
;

41 i((
p
 = 
	`gv
(
me
)!
NULL
) {

42 i(
	`
(
p
< 
bu
) {

43 ()
	`ry
(*
b
, 
p
);

46 
sml_buf
;

49 
	`TO_TSTRING
(
dbv
, 
me
, 
ame
, 
t
);

50 i(
t
 != 0)

51  (
t
);

58 
t
 = 
	`GEnvmtVb
(
ame
, 
tbuf
, (tbuf));

59 
	`FREE_STRING
(
dbv
, 
ame
);

71 i(
t
 == 0) {

72 i((
t
 = 
	`__os_g_sy
()=
ERROR_ENVVAR_NOT_FOUND
) {

73 *
b
 = 
NULL
;

76 
	`__db_sy
(
dbv
, 
t
, "GetEnvironmentVariable");

77  (
	`__os_posix_r
(
t
));

79 i(
t
 > ()(
tbuf
))

80 
sml_buf
;

82 
	`FROM_TSTRING
(
dbv
, 
tbuf
, 
p
, 
t
);

83 i(
t
 != 0)

84  (
t
);

85 i(
	`
(
p
< 
bu
)

86 ()
	`ry
(*
b
, 
p
);

88 *
b
 = 
NULL
;

89 
	`FREE_STRING
(
dbv
, 
p
);

90 i(*
b
 =
NULL
)

91 
sml_buf
;

95 
sml_buf
:

96 *
b
 = 
NULL
;

97 
	`__db_rx
(
dbv
,

99 
me
, 
p
);

100  (
EINVAL
);

102 
	}
}

	@../os_windows/os_handle.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_ݒhd
(
dbv
, 
me
, 
ags
, 
mode
, 
fh
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
me
;

21 
ags
, 
mode
;

22 
DB_FH
 **
fh
;

24 #ifde
DB_WINCE


30  (
EFAULT
);

32 
DB_FH
 *
fhp
;

33 
t
, 
ĕt
, 
s
;

43 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_FH
), &
fhp
)) != 0)

44  (
t
);

45 i((
t
 = 
	`__os_rdup
(
dbv
, 
me
, &
fhp
->name)) != 0)

46 
r
;

47 i(
dbv
 !
NULL
) {

48 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_v
);

49 
	`TAILQ_INSERT_TAIL
(&
dbv
->
fdli
, 
fhp
, 
q
);

50 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_v
);

51 
	`F_SET
(
fhp
, 
DB_FH_ENVLINK
);

54 
s
 = 0;

55 
ĕt
 = 1;repeat < 4; ++nrepeat) {

56 
fhp
->
fd
 = 
	`_ݒ
(
me
, 
ags
, 
mode
);

58 i(
fhp
->
fd
 != -1) {

59 
t
 = 0;

63 
t
 = 
	`__os_posix_r
(
	`__os_g_sy
())) {

64 
EMFILE
:

65 
ENFILE
:

66 
ENOSPC
:

73 
	`__os_p
(
dbv
, 
ĕt
 * 2, 0);

75 
EAGAIN
:

76 
EBUSY
:

77 
EINTR
:

82 i(++
s
 < 
DB_RETRY
)

83 --
ĕt
;

87 
r
;

91 i(
t
 == 0) {

92 
	`F_SET
(
fhp
, 
DB_FH_OPENED
);

93 *
fh
 = 
fhp
;

97 
r
: ()
	`__os_ohd
(
dbv
, 
fhp
);

98  (
t
);

100 
	}
}

107 
	$__os_ohd
(
dbv
, 
fhp
)

108 
DB_ENV
 *
dbv
;

109 
DB_FH
 *
fhp
;

111 
t
, 
t_t
;

113 
t
 = 0;

115 i(
dbv
 !
NULL
) {

116 i(
fhp
->
me
 !
NULL
 && 
	`FLD_ISSET
(

117 
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

118 
	`__db_msg
(
dbv
, "fes: %s: clo", 
fhp
->
me
);

120 i(
	`F_ISSET
(
fhp
, 
DB_FH_ENVLINK
)) {

125 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_v
);

126 
	`TAILQ_REMOVE
(&
dbv
->
fdli
, 
fhp
, 
q
);

127 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_v
);

132 i(
	`F_ISSET
(
fhp
, 
DB_FH_OPENED
)) {

133 i(
fhp
->
hd
 !
INVALID_HANDLE_VALUE
)

134 
	`RETRY_CHK
((!
	`CloHd
(
fhp
->
hd
)), 
t
);

136 #ifde
DB_WINCE


137 
t
 = 
EFAULT
;

139 
	`RETRY_CHK
((
	`_o
(
fhp
->
fd
)), 
t
);

142 i(
fhp
->
unc_hd
 !
INVALID_HANDLE_VALUE
) {

143 
	`RETRY_CHK
((!
	`CloHd
(
fhp
->
unc_hd
)), 
t_t
);

144 i(
t_t
 !0 && 
t
 == 0)

145 
t
 = 
t_t
;

148 i(
t
 != 0) {

149 
	`__db_sy
(
dbv
, 
t
, "CloseHandle");

150 
t
 = 
	`__os_posix_r
(ret);

155 i(
	`F_ISSET
(
fhp
, 
DB_FH_UNLINK
))

156 ()
	`__os_uƚk
(
dbv
, 
fhp
->
me
);

158 i(
fhp
->
me
 !
NULL
)

159 
	`__os_
(
dbv
, 
fhp
->
me
);

160 
	`__os_
(
dbv
, 
fhp
);

162  (
t
);

163 
	}
}

	@../os_windows/os_map.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

13 
__os_m


14 
__P
((
DB_ENV
 *, *, 
REGINFO
 *, 
DB_FH
 *, 
size_t
, , , , **));

15 
__os_unique_me
 
__P
((
_TCHAR
 *, 
HANDLE
, _TCHAR *, 
size_t
));

22 
	$__os_r_syach
(
dbv
, 
f
, 

)

23 
DB_ENV
 *
dbv
;

24 
REGINFO
 *
f
;

25 
REGION
 *

;

27 
DB_FH
 *
fhp
;

28 
t
;

35 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
&& 
	`__os_is_w
() == 0) {

36 
	`__db_r
(
dbv
,

37 
EINVAL
, "Windows 9X systems must specify DB_PRIVATE");

38  (
EINVAL
);

46 i((
t
 = 
	`__os_ݒ
(
dbv
, 
f
->
me
, 0, 
DB_OSO_REGION
 |

47 (
	`F_ISSET
(
f
, 
REGION_CREATE_OK
? 
DB_OSO_CREATE
 : 0),

48 
dbv
->
db_mode
, &
fhp
)) != 0) {

49 
	`__db_r
(
dbv
, 
t
, "%s", 
f
->
me
);

50  (
t
);

59 
t
 = 
	`__os_m
(
dbv
, 
f
->
me
, inf, 
fhp
, 

->
size
,

60 1, 
	`F_ISSET
(
dbv
, 
DB_ENV_SYSTEM_MEM
), 0, &
f
->
addr
);

61 i(
t
 =0 && 
	`F_ISSET
(
dbv
, 
DB_ENV_SYSTEM_MEM
))

62 

->
gid
 = 1;

64 ()
	`__os_ohd
(
dbv
, 
fhp
);

66  (
t
);

67 
	}
}

74 
	$__os_r_sysdach
(
dbv
, 
f
, 
deroy
)

75 
DB_ENV
 *
dbv
;

76 
REGINFO
 *
f
;

77 
deroy
;

79 
t
, 
t_t
;

81 i(
f
->
w_hd
 !
NULL
) {

82 ()
	`CloHd
(
f
->
w_hd
);

83 
f
->
w_hd
 = 
NULL
;

86 
t
 = !
	`UnmVwOfFe
(
f
->
addr
? 
	`__os_g_sy
() : 0;

87 i(
t
 != 0) {

88 
	`__db_sy
(
dbv
, 
t
, "UnmapViewOfFile");

89 
t
 = 
	`__os_posix_r
(ret);

92 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_SYSTEM_MEM
&& 
deroy
) {

93 i(
	`F_ISSET
(
dbv
, 
DB_ENV_OVERWRITE
))

94 ()
	`__db_fe_mui_wre
(
dbv
, 
f
->
me
);

95 i((
t_t
 = 
	`__os_uƚk
(
dbv
, 
f
->
me
)!0 && 
t
 == 0)

96 
t
 = 
t_t
;

99  (
t
);

100 
	}
}

107 
	$__os_mfe
(
dbv
, 
th
, 
fhp
, 
n
, 
is_rdly
, 
addr
)

108 
DB_ENV
 *
dbv
;

109 *
th
;

110 
DB_FH
 *
fhp
;

111 
is_rdly
;

112 
size_t
 
n
;

113 **
addr
;

115 i(
dbv
 !
NULL
 &&

116 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

117 
	`__db_msg
(
dbv
, "fes: mm %s", 
th
);

119  (
	`__os_m
(
dbv
, 
th
, 
NULL
, 
fhp
, 
n
, 0, 0, 
is_rdly
, 
addr
));

120 
	}
}

127 
	$__os_unmfe
(
dbv
, 
addr
, 
n
)

128 
DB_ENV
 *
dbv
;

129 *
addr
;

130 
size_t
 
n
;

132 i(
dbv
 !
NULL
 &&

133 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

134 
	`__db_msg
(
dbv
, "fileops: munmap");

136  (!
	`UnmVwOfFe
(
addr
? 
	`__os_posix_r
(
	`__os_g_sy
()) : 0);

137 
	}
}

167 
	$__os_unique_me
(
ig_th
, 
hfe
, 
su_th
, 
su_th_n
)

168 
_TCHAR
 *
ig_th
, *
su_th
;

169 
HANDLE
 
hfe
;

170 
size_t
 
su_th_n
;

172 
BY_HANDLE_FILE_INFORMATION
 
fefo
;

173 
_TCHAR
 *
bame
, *
p
;

180 
bame
 = 
	`_tcchr
(
ig_th
, '/');

181 
p
 = 
	`_tcchr
(
ig_th
, '\\');

182 i(
bame
 =
NULL
 || (
p
 != NULL && > basename))

183 
bame
 = 
p
;

184 i(
bame
 =
NULL
)

185 
bame
 = 
	`_tcchr
(
ig_th
, ':');

187 i(
bame
 =
NULL
)

188 
bame
 = 
ig_th
;

190 
bame
++;

192 i(!
	`GFeInfmiByHd
(
hfe
, &
fefo
))

193  (
	`__os_posix_r
(
	`__os_g_sy
()));

195 ()
	`_rtf
(
su_th
, 
su_th_n
,

196 
	`_T
("__db_shmem.%8.8lx.%8.8lx.%8.8lx.%8.8lx.%8.8lx.%s"),

197 
fefo
.
dwVumeSlNumb
,

198 
fefo
.
nFeIndexHigh
,

199 
fefo
.
nFeIndexLow
,

200 
fefo
.
CiTime
.
dwHighDeTime
,

201 
fefo
.
CiTime
.
dwHighDeTime
,

202 
bame
);

205 
	}
}

212 
	$__os_m
(
dbv
, 
th
, 
f
, 
fhp
, 
n
, 
is_gi
, 
is_syem
, 
is_rdly
, 
addr
)

213 
DB_ENV
 *
dbv
;

214 
REGINFO
 *
f
;

215 *
th
;

216 
DB_FH
 *
fhp
;

217 
is_gi
, 
is_syem
, 
is_rdly
;

218 
size_t
 
n
;

219 **
addr
;

221 
HANDLE
 
hMemy
;

222 
t
, 
u_gefe
;

223 
_TCHAR
 *
h
, 
shmem_me
[
DB_MAXPATHLEN
];

224 *
pMemy
;

225 
__t64
 
n64
;

227 
t
 = 0;

228 i(
f
 !
NULL
)

229 
f
->
w_hd
 = 
NULL
;

237 
n64
 = 
n
;

239 
u_gefe
 = 
is_gi
 && 
is_syem
;

245 i(
u_gefe
) {

246 #ifde
DB_WINCE


247 
	`__db_rx
(
dbv
, "Unableo memory mapegions using system "

249  (
EFAULT
);

251 
	`TO_TSTRING
(
dbv
, 
th
, 
h
, 
t
);

252 i(
t
 != 0)

253  (
t
);

254 
t
 = 
	`__os_unique_me
(
h
, 
fhp
->
hd
,

255 
shmem_me
, (shmem_name));

256 
	`FREE_STRING
(
dbv
, 
h
);

257 i(
t
 != 0)

258  (
t
);

283 
hMemy
 = 
NULL
;

284 i(
u_gefe
) {

285 #ide
DB_WINCE


286 
hMemy
 = 
	`OnFeMpg
(

287 
is_rdly
 ? 
FILE_MAP_READ
 : 
FILE_MAP_ALL_ACCESS
,

288 0, 
shmem_me
);

290 i(
hMemy
 =
NULL
 && 
	`F_ISSET
(
f
, 
REGION_CREATE_OK
))

291 
hMemy
 = 
	`CeFeMpg
((
HANDLE
)-1, 0,

292 
is_rdly
 ? 
PAGE_READONLY
 : 
PAGE_READWRITE
,

293 (
DWORD
)(
n64
 >> 32), (DWORD64, 
shmem_me
);

296 
hMemy
 = 
	`CeFeMpg
(
fhp
->
hd
, 0,

297 
is_rdly
 ? 
PAGE_READONLY
 : 
PAGE_READWRITE
,

298 (
DWORD
)(
n64
 >> 32), (DWORD64, 
NULL
);

299 #ifde
DB_WINCE


304 
fhp
->
hd
 = 
INVALID_HANDLE_VALUE
;

305 
	`F_CLR
(
fhp
, 
DB_FH_OPENED
);

309 i(
hMemy
 =
NULL
) {

310 
t
 = 
	`__os_g_sy
();

311 
	`__db_sy
(
dbv
, 
t
, "OpenFileMapping");

312  (
	`__db_nic
(
dbv
, 
	`__os_posix_r
(
t
)));

315 
pMemy
 = 
	`MVwOfFe
(
hMemy
,

316 (
is_rdly
 ? 
FILE_MAP_READ
 : 
FILE_MAP_ALL_ACCESS
), 0, 0, 
n
);

317 i(
pMemy
 =
NULL
) {

318 
t
 = 
	`__os_g_sy
();

319 
	`__db_sy
(
dbv
, 
t
, "MapViewOfFile");

320  (
	`__db_nic
(
dbv
, 
	`__os_posix_r
(
t
)));

336 i(
u_gefe
 && 
f
 !
NULL
)

337 
f
->
w_hd
 = 
hMemy
;

339 
	`CloHd
(
hMemy
);

341 *
addr
 = 
pMemy
;

342  (
t
);

343 
	}
}

	@../os_windows/os_mkdir.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

20 
	$__os_mkd
(
dbv
, 
me
, 
mode
)

21 
DB_ENV
 *
dbv
;

22 cڡ *
me
;

23 
mode
;

25 
t
;

26 
_TCHAR
 *
ame
;

28 i(
dbv
 !
NULL
 &&

29 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

30 
	`__db_msg
(
dbv
, "fes: mkd %s", 
me
);

33 
	`TO_TSTRING
(
dbv
, 
me
, 
ame
, 
t
);

34 i(
t
 != 0)

35  (
t
);

36 
	`RETRY_CHK
(!
	`CeDey
(
ame
, 
NULL
), 
t
);

37 
	`FREE_STRING
(
dbv
, 
ame
);

38 i(
t
 != 0)

39  (
	`__os_posix_r
(
t
));

41  (
t
);

42 
	}
}

	@../os_windows/os_open.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_ݒ
(
dbv
, 
me
, 
ge_size
, 
ags
, 
mode
, 
fh
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
me
;

21 
u_t32_t
 
ge_size
, 
ags
;

22 
mode
;

23 
DB_FH
 **
fh
;

25 
DB_FH
 *
fhp
;

26 #ide
DB_WINCE


27 
DWORD
 
u_size
, 
_size
, 
_us
, 
tٮ_us
;

28 
_TCHAR
 *
drive
, 
dbuf
[4];

30 
acss
, 

, 
ag
, 
ĕt
, 
t
, 
she
;

31 
_TCHAR
 *
ame
;

33 *
fh
 = 
NULL
;

34 
ame
 = 
NULL
;

36 i(
dbv
 !
NULL
 &&

37 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

38 
	`__db_msg
(
dbv
, "fes: o%s", 
me
);

40 
	#OKFLAGS
 \

41 (
DB_OSO_ABSMODE
 | 
DB_OSO_CREATE
 | 
DB_OSO_DIRECT
 | 
DB_OSO_DSYNC
 |\

42 
DB_OSO_EXCL
 | 
DB_OSO_RDONLY
 | 
DB_OSO_REGION
 | 
DB_OSO_SEQ
 | \

43 
DB_OSO_TEMP
 | 
DB_OSO_TRUNC
)

	)

44 i((
t
 = 
	`__db_fchk
(
dbv
, "__os_ݒ", 
ags
, 
OKFLAGS
)) != 0)

45  (
t
);

47 
	`TO_TSTRING
(
dbv
, 
me
, 
ame
, 
t
);

48 i(
t
 != 0)

49 
r
;

59 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_FH
), &
fhp
)) != 0)

60  (
t
);

61 i((
t
 = 
	`__os_rdup
(
dbv
, 
me
, &
fhp
->name)) != 0)

62 
r
;

63 i(
dbv
 !
NULL
) {

64 
	`MUTEX_LOCK
(
dbv
, dbv->
mtx_v
);

65 
	`TAILQ_INSERT_TAIL
(&
dbv
->
fdli
, 
fhp
, 
q
);

66 
	`MUTEX_UNLOCK
(
dbv
, dbv->
mtx_v
);

67 
	`F_SET
(
fhp
, 
DB_FH_ENVLINK
);

86 
acss
 = 
GENERIC_READ
;

87 i(!
	`LF_ISSET
(
DB_OSO_RDONLY
))

88 
acss
 |
GENERIC_WRITE
;

90 #ifde
DB_WINCE


96 i(
	`LF_ISSET
(
DB_OSO_REGION
))

97 
she
 = 
GENERIC_READ
 | 
GENERIC_WRITE
;

99 
she
 = 
FILE_SHARE_READ
 | 
FILE_SHARE_WRITE
;

101 
she
 = 
FILE_SHARE_READ
 | 
FILE_SHARE_WRITE
;

102 i(
	`__os_is_w
())

103 
she
 |
FILE_SHARE_DELETE
;

105 

 = 
FILE_ATTRIBUTE_NORMAL
;

111 i(
	`LF_ISSET
(
DB_OSO_CREATE
&& LF_ISSET(
DB_OSO_EXCL
))

112 
ag
 = 
CREATE_NEW
;

113 i(!
	`LF_ISSET
(
DB_OSO_CREATE
&& LF_ISSET(
DB_OSO_TRUNC
))

114 
ag
 = 
TRUNCATE_EXISTING
;

115 i(
	`LF_ISSET
(
DB_OSO_TRUNC
))

116 
ag
 = 
CREATE_ALWAYS
;

117 i(
	`LF_ISSET
(
DB_OSO_CREATE
))

118 
ag
 = 
OPEN_ALWAYS
;

120 
ag
 = 
OPEN_EXISTING
;

122 i(
	`LF_ISSET
(
DB_OSO_DSYNC
)) {

123 
	`F_SET
(
fhp
, 
DB_FH_NOSYNC
);

124 

 |
FILE_FLAG_WRITE_THROUGH
;

127 #ide
DB_WINCE


128 i(
	`LF_ISSET
(
DB_OSO_SEQ
))

129 

 |
FILE_FLAG_SEQUENTIAL_SCAN
;

131 

 |
FILE_FLAG_RANDOM_ACCESS
;

134 i(
	`LF_ISSET
(
DB_OSO_TEMP
))

135 

 |
FILE_FLAG_DELETE_ON_CLOSE
;

146 #ide
DB_WINCE


147 i(
	`LF_ISSET
(
DB_OSO_DIRECT
&& 
ge_size
 !0 && 
me
[0] != '\0') {

148 i(
me
[1] == ':') {

149 
drive
 = 
dbuf
;

150 
	`_rtf
(
dbuf
, (dbuf), 
	`_T
("%c:\\"), 
ame
[0]);

152 
drive
 = 
NULL
;

158 i(
	`GDiskFeS
(
drive
, &
u_size
,

159 &
_size
, &
_us
, &
tٮ_us
) &&

160 
ge_size
 % 
_size
 == 0)

161 

 |
FILE_FLAG_NO_BUFFERING
;

165 
fhp
->
hd
 = fhp->
unc_hd
 = 
INVALID_HANDLE_VALUE
;

166 
ĕt
 = 1;; ++nrepeat) {

167 i(
fhp
->
hd
 =
INVALID_HANDLE_VALUE
) {

168 #ifde
DB_WINCE


169 i(
	`LF_ISSET
(
DB_OSO_REGION
))

170 
fhp
->
hd
 = 
	`CeFeFMpg
(
ame
,

171 
acss
, 
she
, 
NULL
, 
ag
, 

, 0);

174 
fhp
->
hd
 = 
	`CeFe
(
ame
,

175 
acss
, 
she
, 
NULL
, 
ag
, 

, 0);

184 #ide
DB_WINCE


191 i(
fhp
->
hd
 !
INVALID_HANDLE_VALUE
 &&

192 !
	`LF_ISSET
(
DB_OSO_RDONLY
 | 
DB_OSO_TEMP
) &&

193 
fhp
->
unc_hd
 =
INVALID_HANDLE_VALUE
)

194 
fhp
->
unc_hd
 = 
	`CeFe
(

195 
ame
, 
acss
, 
she
, 
NULL
, 
OPEN_EXISTING
, 

, 0);

197 i(
fhp
->
hd
 =
INVALID_HANDLE_VALUE
 ||

198 (!
	`LF_ISSET
(
DB_OSO_RDONLY
 | 
DB_OSO_TEMP
) &&

199 
fhp
->
unc_hd
 =
INVALID_HANDLE_VALUE
))

201 i(
fhp
->
hd
 =
INVALID_HANDLE_VALUE
)

210 
t
 = 
	`__os_posix_r
(
	`__os_g_sy
());

211 i((
t
 !
ENFILE
 && !
EMFILE
 && !
ENOSPC
) ||

212 
ĕt
 > 3)

213 
r
;

215 
	`__os_p
(
dbv
, 
ĕt
 * 2, 0);

220 
	`FREE_STRING
(
dbv
, 
ame
);

222 
	`F_SET
(
fhp
, 
DB_FH_OPENED
);

223 *
fh
 = 
fhp
;

226 
r
: 
	`FREE_STRING
(
dbv
, 
ame
);

227 i(
fhp
 !
NULL
)

228 ()
	`__os_ohd
(
dbv
, 
fhp
);

229  (
t
);

230 
	}
}

	@../os_windows/os_rename.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_me
(
dbv
, 
dme
, 
wme
, 
st
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
dme
, *
wme
;

21 
u_t32_t
 
st
;

23 
_TCHAR
 *
tdme
, *
ewme
;

24 
t
;

26 i(
dbv
 !
NULL
 &&

27 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

28 
	`__db_msg
(
dbv
, "fes:am%t%s", 
dme
, 
wme
);

30 
	`TO_TSTRING
(
dbv
, 
dme
, 
tdme
, 
t
);

31 i(
t
 != 0)

32  (
t
);

33 
	`TO_TSTRING
(
dbv
, 
wme
, 
ewme
, 
t
);

34 i(
t
 != 0) {

35 
	`FREE_STRING
(
dbv
, 
tdme
);

36  (
t
);

39 i(!
	`MoveFe
(
tdme
, 
ewme
))

40 
t
 = 
	`__os_g_sy
();

42 i(
	`__os_posix_r
(
t
=
EEXIST
) {

43 
t
 = 0;

44 #ide
DB_WINCE


45 i(
	`__os_is_w
()) {

46 i(!
	`MoveFeEx
(

47 
tdme
, 
ewme
, 
MOVEFILE_REPLACE_EXISTING
))

48 
t
 = 
	`__os_g_sy
();

59 ()
	`DeFe
(
ewme
);

60 i(!
	`MoveFe
(
tdme
, 
ewme
))

61 
t
 = 
	`__os_g_sy
();

65 
	`FREE_STRING
(
dbv
, 
ewme
);

66 
	`FREE_STRING
(
dbv
, 
tdme
);

68 i(
t
 != 0) {

69 i(
st
 == 0)

70 
	`__db_sy
(

71 
dbv
, 
t
, "MoveFeEx %%s", 
dme
, 
wme
);

72 
t
 = 
	`__os_posix_r
(ret);

75  (
t
);

76 
	}
}

	@../os_windows/os_rw.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_io
(
dbv
, 

, 
fhp
, 
pgno
, 
pgsize
, 
tive
, 
io_n
, 
buf
, 
ni
)

19 
DB_ENV
 *
dbv
;

20 

;

21 
DB_FH
 *
fhp
;

22 
db_pgno_t
 
pgno
;

23 
u_t32_t
 
pgsize
, 
tive
, 
io_n
;

24 
u_t8_t
 *
buf
;

25 
size_t
 *
ni
;

27 
t
;

29 #ide
DB_WINCE


30 i(
	`__os_is_w
()) {

31 
ULONG64
 
off
;

32 
OVERLAPPED
 
ov
;

33 
DWORD
 
nbys
;

34 i((
off
 = 
tive
) == 0)

35 
off
 = (
ULONG64
)
pgsize
 * 
pgno
;

36 
ov
.
Offt
 = (
DWORD
)(
off
 & 0xffffffff);

37 
ov
.
OfftHigh
 = (
DWORD
)(
off
 >> 32);

38 
ov
.
hEvt
 = 0;

40 i(
dbv
 !
NULL
 &&

41 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS_ALL
))

42 
	`__db_msg
(
dbv
,

44 

 =
DB_IO_READ
 ? "read" : "write",

45 
fhp
->
me
, (
u_lg
)
io_n
, (u_lg)
off
);

47 

) {

48 
DB_IO_READ
:

49 i(!
	`RdFe
(
fhp
->
hd
,

50 
buf
, (
DWORD
)
io_n
, &
nbys
, &
ov
))

51 
ow
;

53 
DB_IO_WRITE
:

54 #ifde
HAVE_FILESYSTEM_NOTZERO


55 i(
	`__os_fs_nzo
())

56 
ow
;

58 i(!
	`WreFe
(
fhp
->
hd
,

59 
buf
, (
DWORD
)
io_n
, &
nbys
, &
ov
))

60 
ow
;

63 i(
nbys
 =
io_n
) {

64 *
ni
 = (
size_t
)
nbys
;

69 
ow
:

71 
	`MUTEX_LOCK
(
dbv
, 
fhp
->
mtx_fh
);

73 i((
t
 = 
	`__os_ek
(
dbv
, 
fhp
, 
pgno
, 
pgsize
, 
tive
)) != 0)

74 
r
;

76 

) {

77 
DB_IO_READ
:

78 
t
 = 
	`__os_ad
(
dbv
, 
fhp
, 
buf
, 
io_n
, 
ni
);

80 
DB_IO_WRITE
:

81 
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
buf
, 
io_n
, 
ni
);

85 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 
fhp
->
mtx_fh
);

87  (
t
);

88 
	}
}

95 
	$__os_ad
(
dbv
, 
fhp
, 
addr
, 
n
, 
p
)

96 
DB_ENV
 *
dbv
;

97 
DB_FH
 *
fhp
;

98 *
addr
;

99 
size_t
 
n
;

100 
size_t
 *
p
;

102 
size_t
 
offt
, 

;

103 
DWORD
 
cou
;

104 
t
;

105 
u_t8_t
 *
ddr
;

107 
t
 = 0;

109 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

110 
	`__db_msg
(
dbv
,

111 "fes:d %s: %lu bys", 
fhp
->
me
, (
u_lg
)
n
);

113 
ddr
 = 
addr
,

114 
offt
 = 0; off< 
n
; 
ddr
 +

, offset +=r) {

115 
	`RETRY_CHK
((!
	`RdFe
(
fhp
->
hd
,

116 
ddr
, (
DWORD
)(
n
 - 
offt
), &
cou
, 
NULL
)), 
t
);

117 i(
cou
 =0 || 
t
 != 0)

119 

 = (
size_t
)
cou
;

121 *
p
 = 
ddr
 - (
u_t8_t
 *)
addr
;

122 i(
t
 != 0) {

123 
	`__db_sy
(
dbv
, 
t
, "read: 0x%lx, %lu",

124 
	`P_TO_ULONG
(
ddr
), (
u_lg
)
n
 - 
offt
);

125 
t
 = 
	`__os_posix_r
(ret);

127  (
t
);

128 
	}
}

135 
	$__os_wre
(
dbv
, 
fhp
, 
addr
, 
n
, 
nwp
)

136 
DB_ENV
 *
dbv
;

137 
DB_FH
 *
fhp
;

138 *
addr
;

139 
size_t
 
n
;

140 
size_t
 *
nwp
;

142 
t
;

144 #ifde
HAVE_FILESYSTEM_NOTZERO


146 i(
	`__os_fs_nzo
(&& (
t
 = 
	`__os_zofl
(
dbv
, 
fhp
)) != 0)

147  (
t
);

149  (
	`__os_physwre
(
dbv
, 
fhp
, 
addr
, 
n
, 
nwp
));

150 
	}
}

157 
	$__os_physwre
(
dbv
, 
fhp
, 
addr
, 
n
, 
nwp
)

158 
DB_ENV
 *
dbv
;

159 
DB_FH
 *
fhp
;

160 *
addr
;

161 
size_t
 
n
;

162 
size_t
 *
nwp
;

164 
size_t
 
offt
, 
nw
;

165 
DWORD
 
cou
;

166 
t
;

167 
u_t8_t
 *
ddr
;

169 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

170 
	`__db_msg
(
dbv
,

171 "fes: wr%s: %lu bys", 
fhp
->
me
, (
u_lg
)
n
);

184 
	`PANIC_CHECK
(
dbv
);

186 
t
 = 0;

187 
ddr
 = 
addr
,

188 
offt
 = 0; off< 
n
; 
ddr
 +
nw
, offset +=w) {

189 
	`RETRY_CHK
((!
	`WreFe
(
fhp
->
hd
,

190 
ddr
, (
DWORD
)(
n
 - 
offt
), &
cou
, 
NULL
)), 
t
);

191 i(
t
 != 0)

193 
nw
 = (
size_t
)
cou
;

195 *
nwp
 = 
n
;

196 i(
t
 != 0) {

197 
	`__db_sy
(
dbv
, 
t
, "write: %#lx, %lu",

198 
	`P_TO_ULONG
(
ddr
), (
u_lg
)
n
 - 
offt
);

199 
t
 = 
	`__os_posix_r
(ret);

201 
	`DB_EVENT
(
dbv
, 
DB_EVENT_WRITE_FAILED
, 
NULL
);

203  (
t
);

204 
	}
}

	@../os_windows/os_seek.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_ek
(
dbv
, 
fhp
, 
pgno
, 
pgsize
, 
tive
)

19 
DB_ENV
 *
dbv
;

20 
DB_FH
 *
fhp
;

21 
db_pgno_t
 
pgno
;

22 
u_t32_t
 
pgsize
;

23 
u_t32_t
 
tive
;

27 
__t64
 
bigt
;

29 
low
;

30 
high
;

32 } 
offbys
;

33 
off_t
 
offt
;

34 
t
;

36 
offt
 = (
off_t
)
pgsize
 * 
pgno
 + 
tive
;

38 i(
dbv
 !
NULL
 && 
	`FLD_ISSET
(dbv->
vbo
, 
DB_VERB_FILEOPS_ALL
))

39 
	`__db_msg
(
dbv
,

40 "fes: sk %t%lu", 
fhp
->
me
, (
u_lg
)
offt
);

42 
offbys
.
bigt
 = 
offt
;

43 
t
 = (
	`SFePor
(
fhp
->
hd
, 
offbys
.
low
,

44 &
offbys
.
high
, 
FILE_BEGIN
=(
DWORD
)-1? 
	`__os_g_sy
() : 0;

46 i(
t
 == 0) {

47 
fhp
->
pgsize
 =gsize;

48 
fhp
->
pgno
 =gno;

49 
fhp
->
offt
 = 
tive
;

51 
	`__db_sy
(
dbv
, 
t
,

52 "ek: %lu: (%lu * %lu+ %lu", (
u_lg
)
offt
,

53 (
u_lg
)
pgno
, (u_lg)
pgsize
, (u_lg)
tive
);

54 
t
 = 
	`__os_posix_r
(ret);

57  (
t
);

58 
	}
}

	@../os_windows/os_sleep.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_p
(
dbv
, 
cs
, 
ucs
)

19 
DB_ENV
 *
dbv
;

20 
u_lg
 
cs
, 
ucs
;

22 
	`COMPQUIET
(
dbv
, 
NULL
);

31 
	`S˕
(
cs
 * 
MS_PER_SEC
 + (
ucs
 / 
US_PER_MS
) + 1);

32 
	}
}

	@../os_windows/os_spin.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

17 
u_t32_t


18 
	$__os_
(
dbv
)

19 
DB_ENV
 *
dbv
;

21 
SYSTEM_INFO
 
SyemInfo
;

22 
u_t32_t
 
s_s
;

25 
	`GSyemInfo
(&
SyemInfo
);

31 i(
SyemInfo
.
dwNumbOfProsss
 > 1)

32 
s_s
 = 50 * 
SyemInfo
.
dwNumbOfProsss
;

34 
s_s
 = 1;

36  (
s_s
);

37 
	}
}

	@../os_windows/os_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_exis
(
dbv
, 
th
, 
isdp
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
th
;

21 *
isdp
;

23 
t
;

24 
DWORD
 
s
;

25 
_TCHAR
 *
h
;

27 
	`TO_TSTRING
(
dbv
, 
th
, 
h
, 
t
);

28 i(
t
 != 0)

29  (
t
);

31 i(
dbv
 !
NULL
 &&

32 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

33 
	`__db_msg
(
dbv
, "fes: s%s", 
th
);

35 
	`RETRY_CHK
(

36 ((
s
 = 
	`GFeAribus
(
h
)=(
DWORD
)-1 ? 1 : 0), 
t
);

37 i(
t
 == 0) {

38 i(
isdp
 !
NULL
)

39 *
isdp
 = (
s
 & 
FILE_ATTRIBUTE_DIRECTORY
);

41 
t
 = 
	`__os_posix_r
(ret);

43 
	`FREE_STRING
(
dbv
, 
h
);

44  (
t
);

45 
	}
}

53 
	$__os_iofo
(
dbv
, 
th
, 
fhp
, 
mby
, 
by
, 
iosiz
)

54 
DB_ENV
 *
dbv
;

55 cڡ *
th
;

56 
DB_FH
 *
fhp
;

57 
u_t32_t
 *
mby
, *
by
, *
iosiz
;

59 
t
;

60 
BY_HANDLE_FILE_INFORMATION
 
bhfi
;

61 
__t64
 
fesize
;

63 
	`RETRY_CHK
((!
	`GFeInfmiByHd
(
fhp
->
hd
, &
bhfi
)), 
t
);

64 i(
t
 != 0) {

65 
	`__db_sy
(
dbv
, 
t
, "GetFileInformationByHandle");

66  (
	`__os_posix_r
(
t
));

69 
fesize
 = ((
__t64
)
bhfi
.
nFeSizeHigh
 << 32) +

70 
bhfi
.
nFeSizeLow
;

73 i(
mby
 !
NULL
)

74 *
mby
 = (
u_t32_t
)(
fesize
 / 
MEGABYTE
);

75 i(
by
 !
NULL
)

76 *
by
 = (
u_t32_t
)(
fesize
 % 
MEGABYTE
);

84 i(
iosiz
 !
NULL
)

85 *
iosiz
 = 
DB_DEF_IOSIZE
;

87 
	}
}

	@../os_windows/os_truncate.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_un
(
dbv
, 
fhp
, 
pgno
, 
pgsize
)

19 
DB_ENV
 *
dbv
;

20 
DB_FH
 *
fhp
;

21 
db_pgno_t
 
pgno
;

22 
u_t32_t
 
pgsize
;

26 
__t64
 
bigt
;

28 
low
;

29 
high
;

31 } 
off
;

32 
off_t
 
offt
;

33 
t
;

35 
t
 = 0;

36 
offt
 = (
off_t
)
pgsize
 * 
pgno
;

38 i(
dbv
 !
NULL
 &&

39 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

40 
	`__db_msg
(
dbv
,

41 "fes:run %t%lu", 
fhp
->
me
, (
u_lg
)
offt
);

43 #ifde
HAVE_FILESYSTEM_NOTZERO


48 i(
	`__os_fs_nzo
()) {

49 
off_t
 
_offt
;

50 
u_t32_t
 
mbys
, 
bys
;

53 i((
t
 =

54 
	`__os_iofo
(
dbv
, 
NULL
, 
fhp
, &
mbys
, &
bys
, NULL)) != 0)

55  (
t
);

56 
_offt
 = (
off_t
)
mbys
 * 
MEGABYTE
 + 
bys
;

58 i(
offt
 > 
_offt
)

83 
	`RETRY_CHK
((
off
.
bigt
 = (
__t64
)
pgsize
 * 
pgno
,

84 (
	`SFePor
(
fhp
->
unc_hd
, 
off
.
low
, &off.
high
, 
FILE_BEGIN
)

85 =
INVALID_SET_FILE_POINTER
 && 
	`GLaE
(!
NO_ERROR
) ||

86 !
	`SEndOfFe
(
fhp
->
unc_hd
)), 
t
);

88 i(
t
 != 0) {

89 
	`__db_sy
(
dbv
, 
t
, "SFePor: %lu", 
pgno
 * 
pgsize
);

90 
t
 = 
	`__os_posix_r
(ret);

93  (
t
);

94 
	}
}

	@../os_windows/os_unlink.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_gi_uƚk
(
dbv
, 
th
)

19 
DB_ENV
 *
dbv
;

20 cڡ *
th
;

22 i(
dbv
 !
NULL
 &&

23 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

24 
	`__db_msg
(
dbv
, "fes: uƚk %s", 
th
);

26 i(
	`F_ISSET
(
dbv
, 
DB_ENV_OVERWRITE
))

27 ()
	`__db_fe_mui_wre
(
dbv
, 
th
);

29  (
	`__os_uƚk
(
dbv
, 
th
));

30 
	}
}

37 
	$__os_uƚk
(
dbv
, 
th
)

38 
DB_ENV
 *
dbv
;

39 cڡ *
th
;

41 
HANDLE
 
h
;

42 
_TCHAR
 *
h
, *
ig_h
, 
buf
[
DB_MAXPATHLEN
];

43 
u_t32_t
 
id
;

44 
t
, 
t_t
;

46 i(
dbv
 !
NULL
 &&

47 
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_FILEOPS
 | 
DB_VERB_FILEOPS_ALL
))

48 
	`__db_msg
(
dbv
, "fes: uƚk %s", 
th
);

50 
	`TO_TSTRING
(
dbv
, 
th
, 
h
, 
t
);

51 i(
t
 != 0)

52  (
t
);

53 
ig_h
 = 
h
;

70 i(
	`__os_is_w
()) {

71 
	`__os_unique_id
(
dbv
, &
id
);

72 
	`_rtf
(
buf
, 
DB_MAXPATHLEN
, 
	`_T
("%s.d.%010u"), 
h
, 
id
);

73 i(
	`MoveFe
(
h
, 
buf
))

74 
h
 = 
buf
;

76 
t
 = 
	`__os_g_sy
();

77 i(
	`__os_posix_r
(
t
!
ENOENT
)

78 
	`__db_r
(
dbv
, 
t
,

80 
th
);

87 
h
 = 
	`CeFe
(
h
, 0, 
FILE_SHARE_READ
, 
NULL
, 
OPEN_EXISTING
,

88 
FILE_FLAG_DELETE_ON_CLOSE
, 0);

89 i(
h
 !
INVALID_HANDLE_VALUE
) {

90 ()
	`CloHd
 (
h
);

91 i(
	`GFeAribus
(
h
=
INVALID_FILE_ATTRIBUTES
)

92 
skd
;

96 
	`RETRY_CHK
((!
	`DeFe
(
h
)), 
t
);

98 
skd
:

99 
	`FREE_STRING
(
dbv
, 
ig_h
);

109 i(
t
 != 0) {

110 i((
t_t
 = 
	`__os_posix_r
(
t
)!
ENOENT
)

111 
	`__db_sy
(
dbv
, 
t
, "DeFe: %s", 
th
);

112 
t
 = 
t_t
;

115  (
t
);

116 
	}
}

	@../os_windows/os_yield.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

18 
	$__os_yld
(
dbv
)

19 
DB_ENV
 *
dbv
;

25 
	`S˕
(0);

26 
	}
}

	@../qam/qam.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/qam.h
"

19 
__qam_bulk
 
__P
((
DBC
 *, 
DBT
 *, 
u_t32_t
));

20 
__qamc_o
 
__P
((
DBC
 *, 
db_pgno_t
, *));

21 
__qamc_d
 
__P
((
DBC
 *));

22 
__qamc_deroy
 
__P
((
DBC
 *));

23 
__qamc_g
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

24 
__qamc_put
 
__P
((
DBC
 *, 
DBT
 *, DBT *, 
u_t32_t
, 
db_pgno_t
 *));

25 
__qam_csume
 
__P
((
DBC
 *, 
QMETA
 *, 
db_o_t
));

26 
__qam_gno
 
__P
((
DB
 *, cڡ 
DBT
 *, 
db_o_t
 *));

28 
	#DONT_NEED_LOCKS
(
dbc
((dbc)->
txn
 =
NULL
 || \

29 
	`F_ISSET
(
dbc
, 
DBC_READ_COMMITTED
 | 
DBC_READ_UNCOMMITTED
))

	)

39 
	$__qam_posi
(
dbc
, 

, 
lock_mode
, 
g_mode
, 
exap
)

40 
DBC
 *
dbc
;

41 
db_o_t
 *

;

42 
db_lockmode_t
 
lock_mode
;

43 
u_t32_t
 
g_mode
;

44 *
exap
;

46 
QUEUE_CURSOR
 *

;

47 
DB
 *
dbp
;

48 
QAMDATA
 *
qp
;

49 
db_pgno_t
 
pg
;

50 
t
, 
t_t
;

52 
dbp
 = 
dbc
->dbp;

53 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

56 
pg
 = 
	`QAM_RECNO_PAGE
(
dbp
, *

);

58 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
pg
, 
lock_mode
, 0, &

->
lock
)) != 0)

59  (
t
);

60 

->
ge
 = 
NULL
;

61 *
exap
 = 0;

62 i((
t
 = 
	`__qam_fg
(
dbp
, &
pg
,

63 
dbc
->
txn
, 
g_mode
, &

->
ge
)) != 0) {

64 i(!
	`FLD_ISSET
(
g_mode
, 
DB_MPOOL_CREATE
) &&

65 (
t
 =
DB_PAGE_NOTFOUND
 || =
ENOENT
))

66 
t
 = 0;

69 i((
t_t
 = 
	`__LPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

70 
t
 = 
t_t
;

71  (
t
);

73 

->
pgno
 = 
pg
;

74 

->
dx
 = 
	`QAM_RECNO_INDEX
(
dbp
, 
pg
, *

);

76 i(
	`PGNO
(

->
ge
) == 0) {

82 i(!
	`FLD_ISSET
(
g_mode
, 
DB_MPOOL_CREATE
)) {

83 *
exap
 = 0;

86 
	`DB_ASSERT
(
dbp
->
dbv
, 
	`FLD_ISSET
(
g_mode
, 
DB_MPOOL_CREATE
));

87 
	`PGNO
(

->
ge

pg
;

88 
	`TYPE
(

->
ge

P_QAMDATA
;

91 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 

->
ge
, cp->
dx
);

92 *
exap
 = 
	`F_ISSET
(
qp
, 
QAM_VALID
) ? 1 : 0;

94  (
t
);

95 
	}
}

109 
	$__qam_pem
(
dbc
, 
g
, 
dx
, 
o
, 
da
)

110 
DBC
 *
dbc
;

111 
QPAGE
 *
g
;

112 
u_t32_t
 
dx
;

113 
db_o_t
 
o
;

114 
DBT
 *
da
;

116 
DB_ENV
 *
dbv
;

117 
DB
 *
dbp
;

118 
DBT
 
dda
, 
pda
, *
d
;

119 
QAMDATA
 *
qp
;

120 
QUEUE
 *
t
;

121 
u_t8_t
 *
de
, *
p
;

122 
lod
, 
t
;

124 
dbp
 = 
dbc
->dbp;

125 
dbv
 = 
dbp
->dbenv;

126 
t
 = (
QUEUE
 *)
dbp
->
q_
;

127 
lod
 = 
t
 = 0;

129 i(
da
->
size
 > 
t
->
_n
)

130  (
	`__db_c_toobig
(
dbv
, 
da
->
size
, 
t
->
_n
));

131 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
g
, 
dx
);

133 
p
 = 
qp
->
da
;

134 
d
 = 
da
;

135 i(
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
)) {

136 i(
da
->
doff
 + da->
dn
 > 
t
->
_n
) {

137 
	`__db_rx
(
dbv
,

139 "Recdgth", (
u_lg
)
t
->
_n
);

140  (
EINVAL
);

143 i(
da
->
size
 !da->
dn
)

144  (
	`__db_c_
(
dbv
, 
da
->
size
, da->
dn
));

146 i(
da
->
size
 =
t
->
_n
)

147 
no_l
;

161 i(
	`DBC_LOGGING
(
dbc
|| !
	`F_ISSET
(
qp
, 
QAM_VALID
)) {

162 
d
 = &
pda
;

163 
	`memt
(
d
, 0, (*datap));

165 i((
t
 = 
	`__os_mloc
(
dbv
,

166 
t
->
_n
, &
d
->
da
)) != 0)

167  (
t
);

168 
lod
 = 1;

169 
d
->
size
 = 
t
->
_n
;

175 
de
 = 
d
->
da
;

176 i(
	`F_ISSET
(
qp
, 
QAM_VALID
))

177 
	`memy
(
de
, 
p
, 
t
->
_n
);

179 
	`memt
(
de
, ()
t
->
_d
,->
_n
);

181 
de
 +
da
->
doff
;

182 
	`memy
(
de
, 
da
->da, da->
size
);

184 
d
 = 
da
;

185 
p
 +
da
->
doff
;

189 
no_l
:

190 i(
	`DBC_LOGGING
(
dbc
)) {

191 
dda
.
size
 = 0;

192 i(
	`F_ISSET
(
qp
, 
QAM_SET
)) {

193 
dda
.
da
 = 
qp
->data;

194 
dda
.
size
 = 
t
->
_n
;

196 i((
t
 = 
	`__qam_add_log
(
dbp
, 
dbc
->
txn
, &
	`LSN
(
g
),

197 0, &
	`LSN
(
g
),ag->
pgno
,

198 
dx
, 
o
, 
d
, 
qp
->
ags
,

199 
dda
.
size
 =0 ? 
NULL
 : &olddata)) != 0)

200 
r
;

201 } i(!
	`F_ISSET
((
dbc
), 
DBC_RECOVER
))

202 
	`LSN_NOT_LOGGED
(
	`LSN
(
g
));

204 
	`F_SET
(
qp
, 
QAM_VALID
 | 
QAM_SET
);

205 
	`memy
(
p
, 
d
->
da
, d->
size
);

206 i(!
	`F_ISSET
(
da
, 
DB_DBT_PARTIAL
))

207 
	`memt
(
p
 + 
d
->
size
,

208 ()
t
->
_d
,->
_n
 - 
d
->
size
);

210 
r
: i(
lod
)

211 
	`__os_
(
dbv
, 
d
->
da
);

213  (
t
);

214 
	}
}

221 
	$__qamc_put
(
dbc
, 
key
, 
da
, 
ags
, 
pgn
)

222 
DBC
 *
dbc
;

223 
DBT
 *
key
, *
da
;

224 
u_t32_t
 
ags
;

225 
db_pgno_t
 *
pgn
;

227 
DB
 *
dbp
;

228 
DB_ENV
 *
dbv
;

229 
DB_LOCK
 
lock
;

230 
DB_MPOOLFILE
 *
mpf
;

231 
QMETA
 *
ma
;

232 
QUEUE_CURSOR
 *

;

233 
db_pgno_t
 
pg
;

234 
db_o_t
 
w_cur
, 
w_f
;

235 
u_t32_t
 
code
;

236 
exa
, 
t
, 
t_t
, 
wrock
;

238 
dbp
 = 
dbc
->dbp;

239 
dbv
 = 
dbp
->dbenv;

240 
mpf
 = 
dbp
->mpf;

241 i(
pgn
 !
NULL
)

242 *
pgn
 = 
PGNO_INVALID
;

244 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

246 
ags
) {

247 
DB_KEYFIRST
:

248 
DB_KEYLAST
:

249 
DB_NOOVERWRITE
:

250 i((
t
 = 
	`__qam_gno
(
dbp
, 
key
, &

->
o
)) != 0)

251  (
t
);

253 
DB_CURRENT
:

257  (
	`__db_
(
dbv
, "DBC->put", 0));

261 i((
t
 = 
	`__db_lg
(
dbc
, 
LCK_COUPLE
,

262 

->
o
, 
DB_LOCK_WRITE
, 
DB_LOCK_RECORD
, &->
lock
)) != 0)

263  (
t
);

265 
lock
 = 

->lock;

267 i((
t
 = 
	`__qam_posi
(
dbc
, &

->
o
, 
DB_LOCK_WRITE
,

268 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
exa
)) != 0) {

270 ()
	`__LPUT
(
dbc
, 
lock
);

271  (
t
);

274 i(
exa
 !0 && 
ags
 =
DB_NOOVERWRITE
)

275 
t
 = 
DB_KEYEXIST
;

278 
t
 = 
	`__qam_pem
(
dbc
,

279 (
QPAGE
 *)

->
ge
, cp->
dx
, cp->
o
, 
da
);

282 i((
t_t
 = 
	`__LPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

283 
t
 = 
t_t
;

284 i((
t_t
 = 
	`__qam_ut
(
dbp
,

285 

->
pgno
, cp->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

286 
t
 = 
t_t
;

287 

->
ge
 = 
NULL
;

288 

->
lock
 =ock;

289 

->
lock_mode
 = 
DB_LOCK_WRITE
;

290 i(
t
 != 0)

291  (
t
);

294 
pg
 = ((
QUEUE
 *)
dbp
->
q_
)->
q_ma
;

300 
wrock
 = 0;

301 i((
t
 = 
	`__memp_fg
(
mpf
, &
pg
, 
dbc
->
txn
, 0, &
ma
)) != 0)

302  (
t
);

303 i((
t
 = 
	`__db_lg
(
dbc
, 
LCK_COUPLE
,

304 
pg
, 
DB_LOCK_READ
, 0, &

->
lock
)) != 0) {

305 ()
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

306  (
t
);

309 
code
 = 0;

310 
w_cur
 = 
w_f
 = 0;

320 
check
:

321 i(
ma
->
f_o
 =ma->
cur_o
) {

322 
w_f
 = 

->
o
;

323 
w_cur
 = 

->
o
 + 1;

324 i(
w_cur
 =
RECNO_OOB
)

325 
w_cur
++;

326 
code
 |
QAM_SETFIRST
;

327 
code
 |
QAM_SETCUR
;

329 i(
	`QAM_BEFORE_FIRST
(
ma
, 

->
o
)) {

330 
w_f
 = 

->
o
;

331 
code
 |
QAM_SETFIRST
;

334 i(
	`QAM_AFTER_CURRENT
(
ma
, 

->
o
)) {

335 
w_cur
 = 

->
o
 + 1;

336 i(
w_cur
 =
RECNO_OOB
)

337 
w_cur
++;

338 
code
 |
QAM_SETCUR
;

342 i(
code
 == 0)

343 
de
;

346 i(
wrock
 =0 && (
t
 = 
	`__db_lg
(
dbc
, 
LCK_COUPLE_ALWAYS
,

347 
pg
, 
DB_LOCK_WRITE
, 0, &

->
lock
)) != 0) {

348 ()
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

349  (
t
);

351 i(
wrock
++ == 0)

352 
check
;

354 i(((
t
 = 
	`__memp_dty
(
mpf
,

355 &
ma
, 
dbc
->
txn
, dbc->
iܙy
, 
DB_MPOOL_DIRTY
)) != 0 ||

356 (
	`DBC_LOGGING
(
dbc
) &&

357 (
t
 = 
	`__qam_mvr_log
(
dbp
, 
dbc
->
txn
,

358 &
ma
->
dbma
.
l
, 0, 
code
, ma->
f_o
,

359 
w_f
, 
ma
->
cur_o
, 
w_cur
,

360 &
ma
->
dbma
.
l
, 
PGNO_BASE_MD
)) != 0)))

361 
code
 = 0;

363 i(
code
 & 
QAM_SETCUR
)

364 
ma
->
cur_o
 = 
w_cur
;

365 i(
code
 & 
QAM_SETFIRST
)

366 
ma
->
f_o
 = 
w_f
;

368 
de
: i((
t_t
 = 
	`__memp_ut
(
mpf
,

369 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

370 
t
 = 
t_t
;

373 i((
t_t
 = 
	`__LPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

374 
t
 = 
t_t
;

375  (
t
);

376 
	}
}

385 
	$__qam_nd
(
dbc
, 
key
, 
da
)

386 
DBC
 *
dbc
;

387 
DBT
 *
key
, *
da
;

389 
DB
 *
dbp
;

390 
DB_LOCK
 
lock
;

391 
DB_MPOOLFILE
 *
mpf
;

392 
QMETA
 *
ma
;

393 
QPAGE
 *
ge
;

394 
QUEUE
 *
qp
;

395 
QUEUE_CURSOR
 *

;

396 
db_pgno_t
 
pg
;

397 
db_o_t
 
o
;

398 
t
, 
t_t
;

400 
dbp
 = 
dbc
->dbp;

401 
mpf
 = 
dbp
->mpf;

402 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

404 
pg
 = ((
QUEUE
 *)
dbp
->
q_
)->
q_ma
;

409 i((
t
 = 
	`__memp_fg
(
mpf
, &
pg
, 
dbc
->
txn
, 
DB_MPOOL_DIRTY
, &
ma
)) != 0)

410  (
t
);

412 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
pg
, 
DB_LOCK_WRITE
, 0, &
lock
)) != 0) {

413 ()
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

414  (
t
);

418 
o
 = 
ma
->
cur_o
;

419 
ma
->
cur_o
++;

420 i(
ma
->
cur_o
 =
RECNO_OOB
)

421 
ma
->
cur_o
++;

422 i(
ma
->
cur_o
 =ma->
f_o
) {

423 
ma
->
cur_o
--;

424 i(
ma
->
cur_o
 =
RECNO_OOB
)

425 
ma
->
cur_o
--;

426 
t
 = 
	`__LPUT
(
dbc
, 
lock
);

428 i(
t
 == 0)

429 
t
 = 
EFBIG
;

430 
r
;

433 i(
	`QAM_BEFORE_FIRST
(
ma
, 
o
))

434 
ma
->
f_o
 = 
o
;

437 
t
 = 
	`__db_lg
(
dbc
, 
LCK_COUPLE_ALWAYS
,

438 
o
, 
DB_LOCK_WRITE
, 
DB_LOCK_RECORD
, &
lock
);

445 i(
dbc
->
dbp
->
db_nd_o
 !
NULL
 &&

446 (
t_t
 = 
dbc
->
dbp
->
	`db_nd_o
(dbc->dbp, 
da
, 
o
)) != 0 &&

447 
t
 == 0)

448 
t
 = 
t_t
;

454 i(
t
 != 0) {

455 ()
	`__LPUT
(
dbc
, 
lock
);

456 
r
;

459 

->
lock
 =ock;

460 

->
lock_mode
 = 
DB_LOCK_WRITE
;

462 
pg
 = 
	`QAM_RECNO_PAGE
(
dbp
, 
o
);

465 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
pg
, 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

466 
r
;

467 i((
t
 = 
	`__qam_fg
(
dbp
, &
pg
, 
dbc
->
txn
,

468 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
ge
)) != 0) {

470 ()
	`__LPUT
(
dbc
, 
lock
);

471 
r
;

475 i(
ge
->
pgno
 == 0) {

476 
ge
->
pgno
 = 
pg
;

477 
ge
->
ty
 = 
P_QAMDATA
;

481 
t
 = 
	`__qam_pem
(
dbc
, 
ge
,

482 
	`QAM_RECNO_INDEX
(
dbp
, 
pg
, 
o
),eo, 
da
);

485 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

486 
t
 = 
t_t
;

488 i((
t_t
 =

489 
	`__qam_ut
(
dbp
, 
pg
, 
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

490 
t
 = 
t_t
;

493 i(
t
 =0 && 
key
 !
NULL
)

494 
t
 = 
	`__db_tcy
(
dbp
->
dbv
, 
key
,

495 &
o
, eo), &
dbc
->
rkey
->
da
, &dbc->rkey->
un
);

498 

->
o
 =ecno;

501 
qp
 = (
QUEUE
 *
dbp
->
q_
;

502 i(
qp
->
ge_ext
 != 0 &&

503 (
o
 % (
qp
->
ge_ext
 * qp->
c_ge
) == 0 ||

504 
o
 =
UINT32_MAX
)) {

505 i((
t
 = 
	`__db_lg
(
dbc
,

506 0, ((
QUEUE
 *)
dbp
->
q_
)->
q_ma
,

507 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

508 
r
;

509 i(!
	`QAM_AFTER_CURRENT
(
ma
, 
o
))

510 
t
 = 
	`__qam_fo
(
dbp
, 
pg
);

511 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

512 
t
 = 
t_t
;

515 
r
:

516 i((
t_t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

517 
t
 = 
t_t
;

519  (
t
);

520 
	}
}

527 
	$__qamc_d
(
dbc
)

528 
DBC
 *
dbc
;

530 
DB
 *
dbp
;

531 
DBT
 
da
;

532 
DB_LOCK
 
lock
, 
mock
;

533 
DB_MPOOLFILE
 *
mpf
;

534 
PAGE
 *
g
;

535 
QAMDATA
 *
qp
;

536 
QMETA
 *
ma
;

537 
QUEUE_CURSOR
 *

;

538 
db_pgno_t
 
pg
;

539 
exa
, 
t
, 
t_t
;

541 
dbp
 = 
dbc
->dbp;

542 
mpf
 = 
dbp
->mpf;

543 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

544 
	`LOCK_INIT
(
lock
);

546 
pg
 = ((
QUEUE
 *)
dbp
->
q_
)->
q_ma
;

551 i((
t
 = 
	`__memp_fg
(
mpf
, &
pg
, 
dbc
->
txn
, 0, &
ma
)) != 0)

552  (
t
);

554 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
pg
, 
DB_LOCK_READ
, 0, &
mock
)) != 0) {

555 ()
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

556  (
t
);

559 i(
	`QAM_NOT_VALID
(
ma
, 

->
o
))

560 
t
 = 
DB_NOTFOUND
;

563 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

564 
t
 = 
t_t
;

566 i(
t
 != 0)

567 
r
;

569 i((
t
 = 
	`__db_lg
(
dbc
, 
LCK_COUPLE
,

570 

->
o
, 
DB_LOCK_WRITE
, 
DB_LOCK_RECORD
, &->
lock
)) != 0)

571 
r
;

572 

->
lock_mode
 = 
DB_LOCK_WRITE
;

573 
lock
 = 

->lock;

576 i((
t
 = 
	`__qam_posi
(
dbc
, &

->
o
, 
DB_LOCK_WRITE
,

577 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
exa
)) != 0)

578 
r
;

580 i(!
exa
) {

581 
t
 = 
DB_NOTFOUND
;

582 
r
;

585 
g
 = 

->
ge
;

586 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
g
, 

->
dx
);

588 i(
	`DBC_LOGGING
(
dbc
)) {

589 i(((
QUEUE
 *)
dbp
->
q_
)->
ge_ext
 == 0 ||

590 ((
QUEUE
 *)
dbp
->
q_
)->
_n
 == 0) {

591 i((
t
 = 
	`__qam_d_log
(
dbp
,

592 
dbc
->
txn
, &
	`LSN
(
g
), 0, &LSN(pagep),

593 
g
->
pgno
, 

->
dx
, cp->
o
)) != 0)

594 
r
;

596 
da
.
size
 = ((
QUEUE
 *)
dbp
->
q_
)->
_n
;

597 
da
.d
qp
->data;

598 i((
t
 = 
	`__qam_dext_log
(
dbp
,

599 
dbc
->
txn
, &
	`LSN
(
g
), 0, &LSN(pagep),

600 
g
->
pgno
, 

->
dx
, cp->
o
, &
da
)) != 0)

601 
r
;

604 
	`LSN_NOT_LOGGED
(
	`LSN
(
g
));

606 
	`F_CLR
(
qp
, 
QAM_VALID
);

616 i(

->
o
 =
ma
->
f_o
) {

617 
pg
 = ((
QUEUE
 *)
dbp
->
q_
)->
q_ma
;

618 i((
t
 =

619 
	`__db_lg
(
dbc
, 0, 
pg
, 
DB_LOCK_WRITE
, 0, &
mock
)) != 0)

620 
r
;

621 i(

->
o
 =
ma
->
f_o
)

622 
t
 = 
	`__qam_csume
(
dbc
, 
ma
, ma->
f_o
);

623 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

624 
t
 = 
t_t
;

627 
r
: i((
t_t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

628 
t
 = 
t_t
;

629 i(

->
ge
 !
NULL
 &&

630 (
t_t
 = 
	`__qam_ut
(
dbp
,

631 

->
pgno
, cp->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

632 
t
 = 
t_t
;

633 

->
ge
 = 
NULL
;

636 i((
t_t
 = 
	`__LPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

637 
t
 = 
t_t
;

638 

->
lock
 =ock;

640  (
t
);

641 
	}
}

643 #ifdef 
DEBUG_WOP


644 
	#QDEBUG


	)

652 
	$__qamc_g
(
dbc
, 
key
, 
da
, 
ags
, 
pgn
)

653 
DBC
 *
dbc
;

654 
DBT
 *
key
, *
da
;

655 
u_t32_t
 
ags
;

656 
db_pgno_t
 *
pgn
;

658 
DB
 *
dbp
;

659 
DBC
 *
dbcdup
;

660 
DBT
 
tmp
;

661 
DB_ENV
 *
dbv
;

662 
DB_LOCK
 
lock
, 
pglock
, 
mock
;

663 
DB_MPOOLFILE
 *
mpf
;

664 
PAGE
 *
pg
;

665 
QAMDATA
 *
qp
;

666 
QMETA
 *
ma
;

667 
QUEUE
 *
t
;

668 
QUEUE_CURSOR
 *

;

669 
db_lockmode_t
 
lock_mode
, 
ma_mode
;

670 
db_pgno_t
 
mno
;

671 
db_o_t
 
f
;

672 
exa
, 
d
, 
is_f
, 
locked
, 
t
, 
t_t
, 
wa
, 
wh_de
;

673 
yg
;

675 
dbp
 = 
dbc
->dbp;

676 
dbv
 = 
dbp
->dbenv;

677 
mpf
 = 
dbp
->mpf;

678 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

679 
	`LOCK_INIT
(
lock
);

680 
	`LOCK_INIT
(
pglock
);

682 
lock_mode
 = 
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
DB_LOCK_WRITE
 : 
DB_LOCK_READ
;

683 
ma_mode
 = 
DB_LOCK_READ
;

684 
ma
 = 
NULL
;

685 *
pgn
 = 0;

686 
pg
 = 
NULL
;

687 
yg
 = 
t_t
 = 
wa
 = 
wh_de
 = 0;

689 i(
ags
 =
DB_CONSUME_WAIT
) {

690 
wa
 = 1;

691 
ags
 = 
DB_CONSUME
;

693 i(
ags
 =
DB_CONSUME
) {

694 
wh_de
 = 1;

695 
ags
 = 
DB_FIRST
;

696 
ma_mode
 = 
lock_mode
 = 
DB_LOCK_WRITE
;

698 
d
 = 
	`F_ISSET
(
dbp
, 
DB_AM_INORDER
&& 
wh_de
;

700 
	`DEBUG_LREAD
(
dbc
, dbc->
txn
, "qamc_get",

701 
ags
 =
DB_SET
 || fg=
DB_SET_RANGE
 ? 
key
 : 
NULL
, NULL, flags);

704 
locked
 = 0;

706 
is_f
 = 0;

707 
f
 = 0;

709 
t
 = (
QUEUE
 *)
dbp
->
q_
;

710 
mno
 = 
t
->
q_ma
;

711 
	`LOCK_INIT
(
mock
);

718 i((
t
 = 
	`__memp_fg
(
mpf
, &
mno
, 
dbc
->
txn
, 0, &
ma
)) != 0)

719  (
t
);

721 
g_xt
:

722 
ags
) {

723 
DB_NEXT
:

724 
DB_NEXT_NODUP
:

725 
DB_FIRST
:

726 
DB_PREV
:

727 
DB_PREV_NODUP
:

728 
DB_LAST
:

729 i((
t
 = 
	`__db_lg
(
dbc
,

730 0, 
mno
, 
ma_mode
, 0, &
mock
)) != 0)

731 
r
;

732 
locked
 = 1;

739 i((
t
 = 
	`__TLPUT
(
dbc
, 

->
lock
)) != 0)

740 
r
;

742 
y
:

743 
ags
) {

744 
DB_CURRENT
:

746 
DB_NEXT_DUP
:

747 
DB_PREV_DUP
:

748 
t
 = 
DB_NOTFOUND
;

749 
r
;

751 
DB_NEXT
:

752 
DB_NEXT_NODUP
:

753 i(

->
o
 !
RECNO_OOB
) {

754 ++

->
o
;

756 i(

->
o
 =
RECNO_OOB
)

757 

->
o
++;

761 i(
	`QAM_AFTER_CURRENT
(
ma
, 

->
o
)) {

762 
pg
 = 
NULL
;

763 i(!
wa
) {

764 
t
 = 
DB_NOTFOUND
;

765 
r
;

767 
ags
 = 
DB_FIRST
;

774 i(
f
 == 0) {

775 
yg
 = 1;

776 
y
;

779 i(
	`CDB_LOCKING
(
dbv
)) {

781 
t
 = 
	`__memp_ut
(
mpf
,

782 
ma
, 
dbc
->
iܙy
);

783 
ma
 = 
NULL
;

784 i(
t
 != 0)

785 
r
;

786 i((
t
 = 
	`__lock_g
(

787 
dbv
, 
dbc
->
lock
,

788 
DB_LOCK_SWITCH
, &
dbc
->
lock_dbt
,

789 
DB_LOCK_WAIT
, &
dbc
->
mylock
)) != 0)

790 
r
;

792 i((
t
 = 
	`__memp_fg
(
mpf
, &
mno
,

793 
dbc
->
txn
, 0, &
ma
)) != 0)

794 
r
;

795 i((
t
 = 
	`__lock_g
(

796 
dbv
, 
dbc
->
lock
,

797 
DB_LOCK_UPGRADE
, &
dbc
->
lock_dbt
,

798 
DB_LOCK_WRITE
, &
dbc
->
mylock
)) != 0)

799 
r
;

800 
y
;

808 i(
locked
 == 0) {

809 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
mno
,

810 
ma_mode
, 0, &
mock
)) != 0)

811 
r
;

812 
locked
 = 1;

813 i(

->
o
 !
RECNO_OOB
 &&

814 !
	`QAM_AFTER_CURRENT
(
ma
, 

->
o
))

815 
y
;

818 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

819 
ma
 = 
NULL
;

820 i(
t
 != 0)

821 
r
;

822 i((
t
 = 
	`__db_lg
(
dbc
,

823 0, 
mno
, 
DB_LOCK_WAIT
,

824 
DB_LOCK_SWITCH
, &
mock
)) != 0) {

825 i(
t
 =
DB_LOCK_DEADLOCK
)

826 
t
 = 
DB_LOCK_NOTGRANTED
;

827 
r
;

829 i((
t
 = 
	`__memp_fg
(
mpf
, &
mno
, 
dbc
->
txn
,

830 0, &
ma
)) != 0)

831 
r
;

832 i((
t
 = 
	`__db_lg
(
dbc
, 0,

833 
PGNO_INVALID
, 
DB_LOCK_WRITE
,

834 
DB_LOCK_UPGRADE
, &
mock
)) != 0) {

835 i(
t
 =
DB_LOCK_DEADLOCK
)

836 
t
 = 
DB_LOCK_NOTGRANTED
;

837 
r
;

839 
locked
 = 1;

840 
y
;

845 
DB_FIRST
:

846 
ags
 = 
DB_NEXT
;

847 
is_f
 = 1;

850 

->
o
 = 
f
 = 
ma
->
f_o
;

853 
DB_PREV
:

854 
DB_PREV_NODUP
:

855 i(

->
o
 !
RECNO_OOB
) {

856 i(

->
o
 =
ma
->
f_o
 ||

857 
	`QAM_BEFORE_FIRST
(
ma
, 

->
o
)) {

858 
t
 = 
DB_NOTFOUND
;

859 
r
;

861 --

->
o
;

863 i(

->
o
 =
RECNO_OOB
)

864 --

->
o
;

868 
DB_LAST
:

869 i(
ma
->
f_o
 =ma->
cur_o
) {

870 
t
 = 
DB_NOTFOUND
;

871 
r
;

873 

->
o
 = 
ma
->
cur_o
 - 1;

874 i(

->
o
 =
RECNO_OOB
)

875 

->
o
--;

877 
DB_SET
:

878 
DB_SET_RANGE
:

879 
DB_GET_BOTH
:

880 
DB_GET_BOTH_RANGE
:

881 i((
t
 = 
	`__qam_gno
(
dbp
, 
key
, &

->
o
)) != 0)

882 
r
;

885 
t
 = 
	`__db_unknown_ag
(
dbv
, "__qamc_g", 
ags
);

886 
r
;

890 i(
locked
) {

891 i((
t
 = 
	`__LPUT
(
dbc
, 
mock
)) != 0)

892 
r
;

893 
locked
 = 0;

897 i(((
t
 = 
	`__db_lg
(
dbc
, 
LCK_COUPLE
, 

->
o
, 
lock_mode
,

898 (
wh_de
 && !
d
 && !
yg
) ?

899 
DB_LOCK_NOWAIT
 | 
DB_LOCK_RECORD
 : DB_LOCK_RECORD,

900 &
lock
)=
DB_LOCK_DEADLOCK
 || 
t
 =
DB_LOCK_NOTGRANTED
) &&

901 
wh_de
) {

902 #ifde
QDEBUG


903 i(
	`DBC_LOGGING
(
dbc
))

904 ()
	`__log_tf
(
dbv
,

905 
dbc
->
txn
, "Queue S: %x %d %d %d",

906 
dbc
->
lock
 ? dbc->lock->
id
 : 0,

907 

->
o
, 
f
, 
ma
->
f_o
);

909 
f
 = 0;

910 i((
t
 =

911 
	`__db_lg
(
dbc
, 0, 
mno
, 
ma_mode
, 0, &
mock
)) != 0)

912 
r
;

913 
locked
 = 1;

914 
y
;

917 i(
t
 != 0)

918 
r
;

928 
ags
) {

930 i(
d
) {

931 i(
f
 !

->
o
)

933 } i(
wh_de
 || !
is_f
)

936 
DB_SET
:

937 
DB_SET_RANGE
:

938 
DB_GET_BOTH
:

939 
DB_GET_BOTH_RANGE
:

940 
DB_LAST
:

941 i((
t
 =

942 
	`__db_lg
(
dbc
, 0, 
mno
, 
ma_mode
, 0, &
mock
)) != 0)

943 
˼
;

944 
locked
 = 1;

945 i((
is_f
 && 

->
o
 !
ma
->
f_o
) ||

946 (
ags
 =
DB_LAST
 && 

->
o
 !
ma
->
cur_o
 - 1)) {

947 i((
t
 = 
	`__LPUT
(
dbc
, 
lock
)) != 0)

948 
r
;

949 i(
is_f
)

950 
ags
 = 
DB_FIRST
;

951 
y
;

952 } i(!
is_f
 && 
ags
 !
DB_LAST
) {

953 i(
	`QAM_BEFORE_FIRST
(
ma
, 

->
o
)) {

954 i(
ags
 =
DB_SET_RANGE
 ||

955 
ags
 =
DB_GET_BOTH_RANGE
) {

956 i((
t
 = 
	`__LPUT
(
dbc
, 
mock
)) != 0)

957 
r
;

958 
locked
 = 0;

959 

->
lock
 =ock;

960 
	`LOCK_INIT
(
lock
);

961 
a_y
;

963 
t
 = 
DB_NOTFOUND
;

964 
˼
;

966 i(
	`QAM_AFTER_CURRENT
(
ma
, 

->
o
)) {

967 
t
 = 
DB_NOTFOUND
;

968 
˼
;

972 i((
t
 = 
	`__LPUT
(
dbc
, 
mock
)) != 0)

973 
r
;

974 
locked
 = 0;

978 i((
t
 = 
	`__qam_posi
(
dbc
, &

->
o
,

979 
lock_mode
, 0, &
exa
)) != 0) {

981 ()
	`__LPUT
(
dbc
, 
lock
);

982 
r
;

985 
pg
 = 

->
ge
;

986 
pglock
 = 

->
lock
;

987 

->
lock
 =ock;

988 

->
lock_mode
 =ock_mode;

989 
	`LOCK_INIT
(
lock
);

991 i(!
exa
) {

992 
a_y
:

993 i(
pg
 !
NULL
)

994 ()
	`__qam_ut
(
dbp
, 

->
pgno
, 
pg
, 
dbc
->
iܙy
);

995 

->
ge
 = 
pg
 = 
NULL
;

996 i((
t
 = 
	`__LPUT
(
dbc
, 
pglock
)) != 0)

997 
r1
;

998 i(
wh_de
) {

999 i((
t
 = 
	`__LPUT
(
dbc
, 

->
lock
)) != 0)

1000 
r1
;

1001 } i((
t
 = 
	`__TLPUT
(
dbc
, 

->
lock
)) != 0)

1002 
r1
;

1010 
ags
) {

1011 
DB_NEXT
:

1012 
DB_NEXT_NODUP
:

1013 i(!
wh_de
)

1014 
is_f
 = 0;

1015 i(
	`QAM_BEFORE_FIRST
(
ma
, 

->
o
) &&

1016 
	`DONT_NEED_LOCKS
(
dbc
))

1017 
ags
 = 
DB_FIRST
;

1019 
DB_LAST
:

1020 
DB_PREV
:

1021 
DB_PREV_NODUP
:

1022 i(
	`QAM_AFTER_CURRENT
(
ma
, 

->
o
) &&

1023 
	`DONT_NEED_LOCKS
(
dbc
))

1024 
ags
 = 
DB_LAST
;

1026 
ags
 = 
DB_PREV
;

1029 
DB_GET_BOTH_RANGE
:

1030 
DB_SET_RANGE
:

1031 i(
	`QAM_BEFORE_FIRST
(
ma
, 

->
o
) &&

1032 
	`DONT_NEED_LOCKS
(
dbc
))

1033 
ags
 = 
DB_FIRST
;

1035 
ags
 = 
DB_NEXT
;

1040 
t
 = 
DB_KEYEMPTY
;

1041 
r1
;

1043 
yg
 = 0;

1044 
g_xt
;

1047 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
pg
, 

->
dx
);

1050 i(
ags
 =
DB_GET_BOTH
 || fg=
DB_GET_BOTH_RANGE
) {

1054 
tmp
.
da
 = 
qp
->data;

1055 
tmp
.
size
 = 
t
->
_n
;

1056 i((
t
 = 
	`__bam_defcmp
(
dbp
, 
da
, &
tmp
)) != 0) {

1057 i(
ags
 =
DB_GET_BOTH_RANGE
)

1058 
a_y
;

1059 
t
 = 
DB_NOTFOUND
;

1060 
r1
;

1065 i(
key
 !
NULL
 && !
	`F_ISSET
(key, 
DB_DBT_ISSET
)) {

1066 i((
t
 = 
	`__db_tcy
(
dbp
->
dbv
,

1067 
key
, &

->
o
, (cp->recno),

1068 &
dbc
->
rkey
->
da
, &dbc->rkey->
un
)) != 0)

1069 
r1
;

1070 
	`F_SET
(
key
, 
DB_DBT_ISSET
);

1073 i(
da
 !
NULL
 &&

1074 !
	`F_ISSET
(
dbc
, 
DBC_MULTIPLE
|
DBC_MULTIPLE_KEY
) &&

1075 !
	`F_ISSET
(
da
, 
DB_DBT_ISSET
)) {

1076 i((
t
 = 
	`__db_tcy
(
dbp
->
dbv
, 
da
, 
qp
->da, 
t
->
_n
,

1077 &
dbc
->
rda
->
da
, &dbc->rda->
un
)) != 0)

1078 
r1
;

1079 
	`F_SET
(
da
, 
DB_DBT_ISSET
);

1083 i(
wh_de
) {

1090 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
dbp
, 
DB_AM_SECONDARY
));

1092 i((
t
 = 
	`__qam_dty
(
dbp
, 

->
pgno
, &->
ge
,

1093 
dbc
->
txn
, dbc->
iܙy
)) != 0)

1094 
r1
;

1095 
pg
 = 

->
ge
;

1107 i(
	`LIST_FIRST
(&
dbp
->
s_cds
!
NULL
) {

1108 i((
t
 = 
	`__dbc_idup
(
dbc
,

1109 &
dbcdup
, 
DB_POSITION
)) != 0)

1110 
r1
;

1112 i((
t
 = 
	`__dbc_d_imy
(
dbcdup
)) != 0) {

1117 ()
	`__dbc_o
(
dbcdup
);

1118 
r1
;

1121 i((
t
 = 
	`__dbc_o
(
dbcdup
)) != 0)

1122 
r1
;

1125 i(
	`DBC_LOGGING
(
dbc
)) {

1126 i(
t
->
ge_ext
 =0 ||->
_n
 == 0) {

1127 i((
t
 = 
	`__qam_d_log
(
dbp
, 
dbc
->
txn
,

1128 &
	`LSN
(
pg
), 0, &LSN(pg),

1129 
pg
->
pgno
, 

->
dx
, cp->
o
)) != 0)

1130 
r1
;

1132 
tmp
.
da
 = 
qp
->data;

1133 
tmp
.
size
 = 
t
->
_n
;

1134 i((
t
 = 
	`__qam_dext_log
(
dbp
,

1135 
dbc
->
txn
, &
	`LSN
(
pg
), 0, &LSN(pg),

1136 
pg
->
pgno
, 

->
dx
, cp->
o
, &
tmp
)) != 0)

1137 
r1
;

1140 
	`LSN_NOT_LOGGED
(
	`LSN
(
pg
));

1142 
	`F_CLR
(
qp
, 
QAM_VALID
);

1144 i((
t
 = 
	`__LPUT
(
dbc
, 
pglock
)) != 0)

1145 
r1
;

1159 i(
locked
 =0 && (
t
 = 
	`__db_lg
(

1160 
dbc
, 0, 
mno
, 
ma_mode
, 0, &
mock
)) != 0)

1161 
r1
;

1162 
locked
 = 1;

1164 #ifde
QDEBUG


1165 i(
	`DBC_LOGGING
(
dbc
))

1166 ()
	`__log_tf
(
dbv
,

1167 
dbc
->
txn
, "Queue D: %x %d %d %d",

1168 
dbc
->
lock
 ? dbc->lock->
id
 : 0,

1169 

->
o
, 
f
, 
ma
->
f_o
);

1177 i(
f
 == 0)

1178 
f
 = 

->
o
;

1179 i(
f
 !
ma
->
f_o
)

1180 
de
;

1182 i((
t
 = 
	`__qam_csume
(
dbc
, 
ma
, 
f
)) != 0)

1183 
r1
;

1186 
de
:

1187 
r1
: i(

->
ge
 !
NULL
) {

1188 i((
t_t
 = 
	`__qam_ut
(
dbp
,

1189 

->
pgno
, cp->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1190 
t
 = 
t_t
;

1193 i((
t_t
 = 
	`__LPUT
(
dbc
, 
pglock
)!0 && 
t
 == 0)

1194 
t
 = 
t_t
;

1195 

->
ge
 = 
NULL
;

1198 
˼
: ()
	`__LPUT
(
dbc
, 
lock
);

1201 
r
: i(
ma
) {

1203 i((
t_t
 = 
	`__memp_ut
(
mpf
,

1204 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1205 
t
 = 
t_t
;

1208 i(
locked
)

1209 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

1210 
t
 = 
t_t
;

1212 
	`DB_ASSERT
(
dbv
, !
	`LOCK_ISSET
(
mock
));

1214  ((
t
 =
DB_LOCK_NOTGRANTED
 &&

1215 !
	`F_ISSET
(
dbv
, 
DB_ENV_TIME_NOTGRANTED
)) ?

1216 
DB_LOCK_DEADLOCK
 : 
t
);

1217 
	}
}

1224 
	$__qam_csume
(
dbc
, 
ma
, 
f
)

1225 
DBC
 *
dbc
;

1226 
QMETA
 *
ma
;

1227 
db_o_t
 
f
;

1229 
DB
 *
dbp
;

1230 
DB_LOCK
 
lock
, 
ve_lock
;

1231 
DB_MPOOLFILE
 *
mpf
;

1232 
QUEUE_CURSOR
 *

;

1233 
db_dx_t
 
ve_dx
;

1234 
db_pgno_t
 
ve_ge
;

1235 
db_o_t
 
cut
, 
ve_o
;

1236 
u_t32_t
 
c_ex
;

1237 
exa
, 
t
, 
t_t
, 
wed
;

1239 
dbp
 = 
dbc
->dbp;

1240 
mpf
 = 
dbp
->mpf;

1241 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

1242 
t
 = 0;

1244 
ve_ge
 = 

->
pgno
;

1245 
ve_dx
 = 

->
dx
;

1246 
ve_o
 = 

->
o
;

1247 
ve_lock
 = 

->
lock
;

1254 i(
f
 !

->
o
) {

1255 
t
 = 
	`__db_lg
(
dbc
, 0, 
f
, 
DB_LOCK_READ
,

1256 
DB_LOCK_NOWAIT
 | 
DB_LOCK_RECORD
, &
lock
);

1257 i(
t
 =
DB_LOCK_DEADLOCK
) {

1258 
t
 = 0;

1259 
de
;

1261 i(
t
 != 0)

1262 
de
;

1263 i((
t
 =

1264 
	`__qam_ut
(
dbp
, 

->
pgno
, cp->
ge
, 
dbc
->
iܙy
)) != 0)

1265 
de
;

1266 

->
ge
 = 
NULL
;

1267 i((
t
 = 
	`__qam_posi
(
dbc
,

1268 &
f
, 
DB_LOCK_READ
, 0, &
exa
)) != 0 ||xact != 0) {

1269 ()
	`__LPUT
(
dbc
, 
lock
);

1270 
de
;

1272 i((
t
 =
	`__LPUT
(
dbc
, 
lock
)) != 0)

1273 
de
;

1274 i((
t
 = 
	`__LPUT
(
dbc
, 

->
lock
)) != 0)

1275 
de
;

1278 
cut
 = 
ma
->
cur_o
;

1279 
wed
 = 0;

1280 i(
f
 > 
cut
)

1281 
wed
 = 1;

1282 
c_ex
 = 
ma
->
ge_ext
 * ma->
c_ge
;

1294 i(

->
ge
 !
NULL
 && 
c_ex
 != 0 &&

1295 ((
exa
 = (
f
 % 
c_ex
 == 0)) ||

1296 (
f
 % 
ma
->
c_ge
 == 0) ||

1297 
f
 =
UINT32_MAX
)) {

1298 i(
exa
 =1 && (
t
 = 
	`__db_lg
(
dbc
,

1299 0, 

->
pgno
, 
DB_LOCK_WRITE
, 0, &->
lock
)) != 0)

1301 #ifde
QDEBUG


1302 i(
	`DBC_LOGGING
(
dbc
))

1303 ()
	`__log_tf
(
dbp
->
dbv
, 
dbc
->
txn
,

1305 
dbc
->
lock
 ? dbc->lock->
id
 : 0,

1306 

->
pgno
, 
f
, 
ma
->
f_o
);

1308 i((
t
 = 
	`__qam_ut
(
dbp
,

1309 

->
pgno
, cp->
ge
, 
DB_PRIORITY_VERY_LOW
)) != 0)

1311 

->
ge
 = 
NULL
;

1313 i(
exa
 == 1) {

1314 
t
 = 
	`__qam_emove
(
dbp
, 

->
pgno
);

1315 i((
t_t
 =

1316 
	`__LPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

1317 
t
 = 
t_t
;

1319 i(
t
 != 0)

1321 } i(

->
ge
 !
NULL
 && (
t
 = 
	`__qam_ut
(
dbp
,

1322 

->
pgno
, cp->
ge
, 
dbc
->
iܙy
)) != 0)

1324 

->
ge
 = 
NULL
;

1325 
f
++;

1326 i(
f
 =
RECNO_OOB
) {

1327 
wed
 = 0;

1328 
f
++;

1335 i(!
wed
 && 
f
 >
cut
)

1338 
t
 = 
	`__db_lg
(
dbc
, 0, 
f
, 
DB_LOCK_READ
,

1339 
DB_LOCK_NOWAIT
 | 
DB_LOCK_RECORD
, &
lock
);

1340 i(
t
 =
DB_LOCK_DEADLOCK
) {

1341 
t
 = 0;

1344 i(
t
 != 0)

1347 i((
t
 = 
	`__qam_posi
(
dbc
,

1348 &
f
, 
DB_LOCK_READ
, 0, &
exa
)) != 0) {

1349 ()
	`__LPUT
(
dbc
, 
lock
);

1352 i((
t
 =
	`__LPUT
(
dbc
, 
lock
)) != 0 ||

1353 (
t
 = 
	`__LPUT
(
dbc
, 

->
lock
)!0 || 
exa
) {

1354 i((
t_t
 = 
	`__qam_ut
(
dbp
, 

->
pgno
,

1355 

->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1356 
t
 = 
t_t
;

1357 

->
ge
 = 
NULL
;

1362 

->
pgno
 = 
ve_ge
;

1363 

->
dx
 = 
ve_dx
;

1364 

->
o
 = 
ve_o
;

1365 

->
lock
 = 
ve_lock
;

1371 i(
t
 =0 && 
ma
->
f_o
 !
f
) {

1372 i((
t
 = 
	`__memp_dty
(
mpf
,

1373 &
ma
, 
dbc
->
txn
, dbc->
iܙy
, 0)) != 0)

1374 
de
;

1375 #ifde
QDEBUG


1376 i(
	`DBC_LOGGING
(
dbc
))

1377 ()
	`__log_tf
(
dbp
->
dbv
, 
dbc
->
txn
,

1379 
dbc
->
lock
 ? dbc->lock->
id
 : 0,

1380 

->
o
, 
f
, 
ma
->
f_o
);

1382 i(
	`DBC_LOGGING
(
dbc
)) {

1383 i((
t
 = 
	`__qam_cf_log
(
dbp
,

1384 
dbc
->
txn
, &
ma
->
dbma
.
l
, 0,

1385 

->
o
, 
PGNO_BASE_MD
)) != 0)

1386 
de
;

1388 
	`LSN_NOT_LOGGED
(
ma
->
dbma
.
l
);

1389 
ma
->
f_o
 = 
f
;

1392 
de
:

1393  (
t
);

1394 
	}
}

1397 
	$__qam_bulk
(
dbc
, 
da
, 
ags
)

1398 
DBC
 *
dbc
;

1399 
DBT
 *
da
;

1400 
u_t32_t
 
ags
;

1402 
DB
 *
dbp
;

1403 
DB_LOCK
 
mock
, 
ock
;

1404 
DB_MPOOLFILE
 *
mpf
;

1405 
PAGE
 *
pg
;

1406 
QMETA
 *
ma
;

1407 
QAMDATA
 *
qp
;

1408 
QUEUE_CURSOR
 *

;

1409 
db_dx_t
 
dx
;

1410 
db_lockmode_t
 
lkmode
;

1411 
db_pgno_t
 
mno
;

1412 
u_t32_t
 *
dp
, *
of
;

1413 
u_t32_t
 
gesize
, 
_n
, 
cs
;

1414 
u_t8_t
 *
dbuf
, *
dp
, *

;

1415 
exa
, 
t
, 
t_t
, 
vid
;

1416 
is_key
, 
ed_pg
, 
size
, 
a
;

1418 
dbp
 = 
dbc
->dbp;

1419 
mpf
 = 
dbp
->mpf;

1420 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

1422 
lkmode
 = 
	`F_ISSET
(
dbc
, 
DBC_RMW
? 
DB_LOCK_WRITE
 : 
DB_LOCK_READ
;

1424 
gesize
 = 
dbp
->
pgsize
;

1425 
_n
 = ((
QUEUE
 *)
dbp
->
q_
)->re_len;

1426 
cs
 = ((
QUEUE
 *)
dbp
->
q_
)->
c_ge
;

1427 
mno
 = ((
QUEUE
 *)
dbp
->
q_
)->
q_ma
;

1429 
is_key
 = 
	`LF_ISSET
(
DB_MULTIPLE_KEY
) ? 1 : 0;

1430 
size
 = 0;

1432 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
mno
, 
DB_LOCK_READ
, 0, &
mock
)) != 0)

1433  (
t
);

1434 i((
t
 = 
	`__memp_fg
(
mpf
, &
mno
, 
dbc
->
txn
, 0, &
ma
)) != 0) {

1436 ()
	`__LPUT
(
dbc
, 
mock
);

1437  (
t
);

1440 
dbuf
 = 
da
->data;

1441 

 = 
dp
 = 
dbuf
;

1444 
a
 = ()
da
->
un
;

1445 
a
 -()(*
of
);

1448 
dp
 = (
u_t32_t
 *)((
u_t8_t
 *)
dbuf
 + 
da
->
un
);

1449 
dp
--;

1450 
of
 = 
dp
;

1452 
ock
 = 

->
lock
;

1453 
	`LOCK_INIT
(

->
lock
);

1455 
xt_pg
:

1457 i(

->
o
 =
RECNO_OOB
)

1458 

->
o
++;

1459 i((
t
 = 
	`__qam_posi
(
dbc
, &

->
o
, 
lkmode
, 0, &
exa
)) != 0)

1460 
de
;

1462 
pg
 = 

->
ge
;

1463 
dx
 = 

->indx;

1464 
ed_pg
 = 1;

1473 
vid
 = 0;

1475 i(
pg
 !
NULL
) {

1476 i((
t
 = 
	`__db_lg
(
dbc
, 
LCK_COUPLE
,

1477 

->
o
, 
lkmode
, 
DB_LOCK_RECORD
, &
ock
)) != 0)

1478 
de
;

1479 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
pg
, 
dx
);

1480 i(
	`F_ISSET
(
qp
, 
QAM_VALID
)) {

1481 
vid
 = 1;

1482 
a
 -= ()

1483 ((
is_key
 ? 3 : 2* (*
of
));

1484 i(
a
 < 0)

1485 
g_a
;

1486 i(
ed_pg
) {

1487 
dp
 = 

;

1488 
size
 = ()
gesize
 - 
	`QPAGE_SZ
(
dbp
);

1489 i(
a
 < 
size
) {

1490 
g_a
:

1491 i(
of
 =
dp
) {

1492 
da
->
size
 = (
u_t32_t
)

1493 
	`DB_ALIGN
((
u_t32_t
)

1494 
size
 + 
gesize
,

1495 (
u_t32_t
));

1496 
t
 = 
DB_BUFFER_SMALL
;

1499 i(
dx
 != 0)

1500 
dx
--;

1501 

->
o
--;

1502 
a
 = 0;

1505 
	`memy
(
dp
,

1506 (
u_t8_t
 *)
pg
 + 
	`QPAGE_SZ
(
dbp
),

1507 (
u_t
)
size
);

1508 
ed_pg
 = 0;

1509 
a
 -
size
;

1510 

 +
size
;

1512 i(
is_key
)

1513 *
of
-- = 

->
o
;

1514 *
of
-- = (
u_t32_t
)((((
u_t8_t
 *)
qp
 -

1515 (
u_t8_t
 *)
pg
- 
	`QPAGE_SZ
(
dbp
)) +

1516 (
dp
 - 
dbuf
+ 
	`SSZA
(
QAMDATA
, 
da
));

1517 *
of
-- = 
_n
;

1520 i(!
vid
 && 
is_key
 == 0) {

1521 *
of
-- = 0;

1522 *
of
-- = 0;

1524 

->
o
++;

1525 } ++
dx
 < 
cs
 && 

->
o
 !
RECNO_OOB
 &&

1526 !
	`QAM_AFTER_CURRENT
(
ma
, 

->
o
));

1529 i((
t_t
 = 
	`__LPUT
(
dbc
, 

->
lock
)!0 && 
t
 == 0)

1530 
t
 = 
t_t
;

1532 i(

->
ge
 !
NULL
) {

1533 i((
t_t
 = 
	`__qam_ut
(
dbp
,

1534 

->
pgno
, cp->
ge
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1535 
t
 = 
t_t
;

1536 

->
ge
 = 
NULL
;

1539 i(
t
 =0 && 
a
 > 0 &&

1540 (
dx
 >
cs
 || 

->
o
 =
RECNO_OOB
) &&

1541 !
	`QAM_AFTER_CURRENT
(
ma
, 

->
o
))

1542 
xt_pg
;

1549 i(

->
o
 =
RECNO_OOB
 || (
a
 =0 && 
dx
 =
cs
))

1550 

->
o
--;

1552 i(
is_key
 == 1)

1553 *
of
 = 
RECNO_OOB
;

1555 *
of
 = (
u_t32_t
)-1;

1557 
de
:

1558 i((
t_t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1559 
t
 = 
t_t
;

1560 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

1561 
t
 = 
t_t
;

1563 

->
lock
 = 
ock
;

1565  (
t
);

1566 
	}
}

1573 
	$__qamc_o
(
dbc
, 
ro_pgno
, 
rmro
)

1574 
DBC
 *
dbc
;

1575 
db_pgno_t
 
ro_pgno
;

1576 *
rmro
;

1578 
QUEUE_CURSOR
 *

;

1579 
t
;

1581 
	`COMPQUIET
(
ro_pgno
, 0);

1582 
	`COMPQUIET
(
rmro
, 
NULL
);

1584 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

1587 
t
 = 
	`__TLPUT
(
dbc
, 

->
lock
);

1589 
	`LOCK_INIT
(

->
lock
);

1590 

->
ge
 = 
NULL
;

1591 

->
pgno
 = 
PGNO_INVALID
;

1592 

->
dx
 = 0;

1593 

->
lock_mode
 = 
DB_LOCK_NG
;

1594 

->
o
 = 
RECNO_OOB
;

1595 

->
ags
 = 0;

1597  (
t
);

1598 
	}
}

1608 
	$__qamc_dup
(
ig_dbc
, 
w_dbc
)

1609 
DBC
 *
ig_dbc
, *
w_dbc
;

1611 
QUEUE_CURSOR
 *
ig
, *
w
;

1613 
ig
 = (
QUEUE_CURSOR
 *)
ig_dbc
->

;

1614 
w
 = (
QUEUE_CURSOR
 *)
w_dbc
->

;

1616 
w
->
o
 = 
ig
->recno;

1619 
	}
}

1627 
	$__qamc_
(
dbc
)

1628 
DBC
 *
dbc
;

1630 
QUEUE_CURSOR
 *

;

1631 
DB
 *
dbp
;

1632 
t
;

1634 
dbp
 = 
dbc
->dbp;

1637 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

1638 i(

 =
NULL
) {

1639 i((
t
 =

1640 
	`__os_oc
(
dbp
->
dbv
, 1, (
QUEUE_CURSOR
), &

)) != 0)

1641  (
t
);

1642 
dbc
->

 = (
DBC_INTERNAL
 *)

;

1646 
dbc
->
o
 = dbc->
c_o
 = 
__dbc_o_
;

1647 
dbc
->
cou
 = dbc->
c_cou
 = 
__dbc_cou_
;

1648 
dbc
->
d
 = dbc->
c_d
 = 
__dbc_d_
;

1649 
dbc
->
dup
 = dbc->
c_dup
 = 
__dbc_dup_
;

1650 
dbc
->
g
 = dbc->
c_g
 = 
__dbc_g_
;

1651 
dbc
->
pg
 = dbc->
c_pg
 = 
__dbc_pg_
;

1652 
dbc
->
put
 = dbc->
c_put
 = 
__dbc_put_
;

1653 
dbc
->
am_bulk
 = 
__qam_bulk
;

1654 
dbc
->
am_o
 = 
__qamc_o
;

1655 
dbc
->
am_d
 = 
__qamc_d
;

1656 
dbc
->
am_deroy
 = 
__qamc_deroy
;

1657 
dbc
->
am_g
 = 
__qamc_g
;

1658 
dbc
->
am_put
 = 
__qamc_put
;

1659 
dbc
->
am_wrock
 = 
NULL
;

1662 
	}
}

1669 
	$__qamc_deroy
(
dbc
)

1670 
DBC
 *
dbc
;

1673 
	`__os_
(
dbc
->
dbp
->
dbv
, dbc->

);

1676 
	}
}

1683 
	$__qam_gno
(
dbp
, 
key
, 
p
)

1684 
DB
 *
dbp
;

1685 cڡ 
DBT
 *
key
;

1686 
db_o_t
 *
p
;

1688 i((*
p
 = *(
db_o_t
 *)
key
->
da
) == 0) {

1689 
	`__db_rx
(
dbp
->
dbv
, "illegalecordumber of 0");

1690  (
EINVAL
);

1693 
	}
}

1702 
	$__qam_un
(
dbc
, 
coup
)

1703 
DBC
 *
dbc
;

1704 
u_t32_t
 *
coup
;

1706 
DB
 *
dbp
;

1707 
DB_LOCK
 
mock
;

1708 
DB_MPOOLFILE
 *
mpf
;

1709 
QMETA
 *
ma
;

1710 
db_pgno_t
 
mno
;

1711 
u_t32_t
 
cou
;

1712 
t
, 
t_t
;

1714 
dbp
 = 
dbc
->dbp;

1717 
cou
 = 0;

1718 (
t
 = 
	`__qamc_g
(
dbc
, 
NULL
, NULL, 
DB_CONSUME
, &
mno
)) == 0;)

1719 
cou
++;

1720 i(
t
 !
DB_NOTFOUND
)

1721  (
t
);

1724 
mno
 = ((
QUEUE
 *)
dbp
->
q_
)->
q_ma
;

1725 i((
t
 =

1726 
	`__db_lg
(
dbc
, 0, 
mno
, 
DB_LOCK_WRITE
, 0, &
mock
)) != 0)

1727  (
t
);

1729 
mpf
 = 
dbp
->mpf;

1730 i((
t
 = 
	`__memp_fg
(
mpf
, &
mno
, 
dbc
->
txn
,

1731 
DB_MPOOL_DIRTY
, &
ma
)) != 0) {

1733 ()
	`__LPUT
(
dbc
, 
mock
);

1734  (
t
);

1737 i(
ma
->
cur_o
 > 1 && ((
QUEUE
 *)
dbp
->
q_
)->
ge_ext
 != 0) {

1738 i((
t
 = 
	`__qam_emove
(
dbp
,

1739 
	`QAM_RECNO_PAGE
(
dbp
, 
ma
->
cur_o
 - 1))) != 0)

1740  (
t
);

1743 i(
	`DBC_LOGGING
(
dbc
)) {

1744 
t
 = 
	`__qam_mvr_log
(
dbp
, 
dbc
->
txn
, &
ma
->
dbma
.
l
, 0,

1745 
QAM_SETCUR
 | 
QAM_SETFIRST
 | 
QAM_TRUNCATE
, 
ma
->
f_o
,

1746 1, 
ma
->
cur_o
, 1, &ma->
dbma
.
l
, 
PGNO_BASE_MD
);

1748 
	`LSN_NOT_LOGGED
(
ma
->
dbma
.
l
);

1749 i(
t
 == 0)

1750 
ma
->
f_o
 = ma->
cur_o
 = 1;

1752 i((
t_t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

1753 
t
 = 
t_t
;

1754 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

1755 
t
 = 
t_t
;

1757 i(
coup
 !
NULL
)

1758 *
coup
 = 
cou
;

1760  (
t
);

1761 
	}
}

1770 
	$__qam_de
(
dbc
, 
key
)

1771 
DBC
 *
dbc
;

1772 
DBT
 *
key
;

1774 
QUEUE_CURSOR
 *

;

1775 
t
;

1777 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

1778 i((
t
 = 
	`__qam_gno
(
dbc
->
dbp
, 
key
, &

->
o
)) != 0)

1779 
r
;

1781 
t
 = 
	`__qamc_d
(
dbc
);

1783 
r
:  (
t
);

1784 
	}
}

	@../qam/qam_auto.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/log.h
"

11 
	~"dbc/qam.h
"

12 
	~"dbc/txn.h
"

19 
	$__qam_cf_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
o
, 
ma_pgno
)

20 
DB
 *
dbp
;

21 
DB_TXN
 *
tx
;

22 
DB_LSN
 *
t_lp
;

23 
u_t32_t
 
ags
;

24 
db_o_t
 
o
;

25 
db_pgno_t
 
ma_pgno
;

27 
DBT
 
logc
;

28 
DB_ENV
 *
dbv
;

29 
DB_TXNLOGREC
 *

;

30 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

31 
u_t32_t
 
ump
, 
y
, 
txn_num
;

32 
u_t
 
ad
;

33 
u_t8_t
 *
bp
;

34 
is_dub
, 
t
;

36 
dbv
 = 
dbp
->dbenv;

37 
	`COMPQUIET
(

, 
NULL
);

39 
y
 = 
DB___qam_cf
;

40 
ad
 = 0;

41 
p
 = 
t_lp
;

43 
t
 = 0;

45 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

46 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

47 i(
tx
 =
NULL
)

49 
is_dub
 = 0;

51 
is_dub
 = 1;

53 i(
tx
 =
NULL
) {

54 
txn_num
 = 0;

55 
lp
 = &
nu_l
;

56 
nu_l
.
fe
 =u_l.
offt
 = 0;

58 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

59 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

60  (
t
);

67 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

68 
txn_num
 = 
tx
->
txnid
;

71 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

72 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

73 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

74  (
t
);

76 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

77 + (
u_t32_t
)

78 + (
u_t32_t
)

79 + (
u_t32_t
);

80 i(
	`CRYPTO_ON
(
dbv
)) {

81 
ad
 =

82 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

83 
logc
.
size
 +
ad
;

86 i(
is_dub
 || 
tx
 =
NULL
) {

87 i((
t
 =

88 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

89  (
t
);

91 i((
t
 = 
	`__os_mloc
(
dbv
,

92 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

93  (
t
);

94 #ifde
DIAGNOSTIC


95 i((
t
 =

96 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

97 
	`__os_
(
dbv
, 

);

98  (
t
);

101 
logc
.
da
 = 

->data;

104 i(
ad
 > 0)

105 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

107 
bp
 = 
logc
.
da
;

109 
	`memy
(
bp
, &
y
, (rectype));

110 
bp
 +(
y
);

112 
	`memy
(
bp
, &
txn_num
, (txn_num));

113 
bp
 +(
txn_num
);

115 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

116 
bp
 +(
DB_LSN
);

118 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

119 
	`memy
(
bp
, &
ump
, (uinttmp));

120 
bp
 +(
ump
);

122 
ump
 = (
u_t32_t
)
o
;

123 
	`memy
(
bp
, &
ump
, (uinttmp));

124 
bp
 +(
ump
);

126 
ump
 = (
u_t32_t
)
ma_pgno
;

127 
	`memy
(
bp
, &
ump
, (uinttmp));

128 
bp
 +(
ump
);

130 
	`DB_ASSERT
(
dbv
,

131 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

133 i(
is_dub
 || 
tx
 =
NULL
) {

134 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

135 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

136 *
lp
 = *
p
;

137 i(
p
 !
t_lp
)

138 *
t_lp
 = *
p
;

141 
t
 = 0;

142 #ifde
DIAGNOSTIC


147 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

148 
y
 |
DB_debug_FLAG
;

149 
	`memy
(
logc
.
da
, &
y
, (rectype));

151 i(!
	`IS_REP_CLIENT
(
dbv
))

152 
t
 = 
	`__log_put
(
dbv
,

153 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

155 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

156 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

157 
	`LSN_NOT_LOGGED
(*
t_lp
);

160 #ifde
LOG_DIAGNOSTIC


161 i(
t
 != 0)

162 ()
	`__qam_cf_t
(
dbv
,

163 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

166 #ifde
DIAGNOSTIC


167 
	`__os_
(
dbv
, 
logc
.
da
);

169 i(
is_dub
 || 
tx
 =
NULL
)

170 
	`__os_
(
dbv
, 
logc
.
da
);

172  (
t
);

173 
	}
}

180 
	$__qam_cf_ad
(
dbv
, 
cbuf
, 
g
)

181 
DB_ENV
 *
dbv
;

182 *
cbuf
;

183 
__qam_cf_gs
 **
g
;

185 
__qam_cf_gs
 *
gp
;

186 
u_t32_t
 
ump
;

187 
u_t8_t
 *
bp
;

188 
t
;

190 i((
t
 = 
	`__os_mloc
(
dbv
,

191 (
__qam_cf_gs
+ (
DB_TXN
), &
gp
)) != 0)

192  (
t
);

193 
bp
 = 
cbuf
;

194 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

195 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

197 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

198 
bp
 +(
gp
->
ty
);

200 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

201 
bp
 +(
gp
->
tx
->
txnid
);

203 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

204 
bp
 +(
DB_LSN
);

206 
	`memy
(&
ump
, 
bp
, (uinttmp));

207 
gp
->
feid
 = (
t32_t
)
ump
;

208 
bp
 +(
ump
);

210 
	`memy
(&
ump
, 
bp
, (uinttmp));

211 
gp
->
o
 = (
db_o_t
)
ump
;

212 
bp
 +(
ump
);

214 
	`memy
(&
ump
, 
bp
, (uinttmp));

215 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

216 
bp
 +(
ump
);

218 *
g
 = 
gp
;

220 
	}
}

228 
	$__qam_mvr_log
(
dbp
, 
tx
, 
t_lp
, 
ags
,

229 
code
, 
d_f
, 
w_f
, 
d_cur
, 
w_cur
,

230 
m
, 
ma_pgno
)

231 
DB
 *
dbp
;

232 
DB_TXN
 *
tx
;

233 
DB_LSN
 *
t_lp
;

234 
u_t32_t
 
ags
;

235 
u_t32_t
 
code
;

236 
db_o_t
 
d_f
;

237 
db_o_t
 
w_f
;

238 
db_o_t
 
d_cur
;

239 
db_o_t
 
w_cur
;

240 
DB_LSN
 * 
m
;

241 
db_pgno_t
 
ma_pgno
;

243 
DBT
 
logc
;

244 
DB_ENV
 *
dbv
;

245 
DB_TXNLOGREC
 *

;

246 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

247 
u_t32_t
 
ump
, 
y
, 
txn_num
;

248 
u_t
 
ad
;

249 
u_t8_t
 *
bp
;

250 
is_dub
, 
t
;

252 
dbv
 = 
dbp
->dbenv;

253 
	`COMPQUIET
(

, 
NULL
);

255 
y
 = 
DB___qam_mvr
;

256 
ad
 = 0;

257 
p
 = 
t_lp
;

259 
t
 = 0;

261 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

262 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

263 i(
tx
 =
NULL
)

265 
is_dub
 = 0;

267 
is_dub
 = 1;

269 i(
tx
 =
NULL
) {

270 
txn_num
 = 0;

271 
lp
 = &
nu_l
;

272 
nu_l
.
fe
 =u_l.
offt
 = 0;

274 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

275 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

276  (
t
);

283 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

284 
txn_num
 = 
tx
->
txnid
;

287 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

288 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

289 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

290  (
t
);

292 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

293 + (
u_t32_t
)

294 + (
u_t32_t
)

295 + (
u_t32_t
)

296 + (
u_t32_t
)

297 + (
u_t32_t
)

298 + (
u_t32_t
)

299 + (*
m
)

300 + (
u_t32_t
);

301 i(
	`CRYPTO_ON
(
dbv
)) {

302 
ad
 =

303 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

304 
logc
.
size
 +
ad
;

307 i(
is_dub
 || 
tx
 =
NULL
) {

308 i((
t
 =

309 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

310  (
t
);

312 i((
t
 = 
	`__os_mloc
(
dbv
,

313 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

314  (
t
);

315 #ifde
DIAGNOSTIC


316 i((
t
 =

317 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

318 
	`__os_
(
dbv
, 

);

319  (
t
);

322 
logc
.
da
 = 

->data;

325 i(
ad
 > 0)

326 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

328 
bp
 = 
logc
.
da
;

330 
	`memy
(
bp
, &
y
, (rectype));

331 
bp
 +(
y
);

333 
	`memy
(
bp
, &
txn_num
, (txn_num));

334 
bp
 +(
txn_num
);

336 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

337 
bp
 +(
DB_LSN
);

339 
ump
 = (
u_t32_t
)
code
;

340 
	`memy
(
bp
, &
ump
, (uinttmp));

341 
bp
 +(
ump
);

343 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

344 
	`memy
(
bp
, &
ump
, (uinttmp));

345 
bp
 +(
ump
);

347 
ump
 = (
u_t32_t
)
d_f
;

348 
	`memy
(
bp
, &
ump
, (uinttmp));

349 
bp
 +(
ump
);

351 
ump
 = (
u_t32_t
)
w_f
;

352 
	`memy
(
bp
, &
ump
, (uinttmp));

353 
bp
 +(
ump
);

355 
ump
 = (
u_t32_t
)
d_cur
;

356 
	`memy
(
bp
, &
ump
, (uinttmp));

357 
bp
 +(
ump
);

359 
ump
 = (
u_t32_t
)
w_cur
;

360 
	`memy
(
bp
, &
ump
, (uinttmp));

361 
bp
 +(
ump
);

363 i(
m
 !
NULL
) {

364 i(
tx
 !
NULL
) {

365 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

366 i(
	`LOG_COMPARE
(
m
, &

->
l
>0 && (
t
 =

367 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
m
) != 0))

368  (
t
);

370 
	`memy
(
bp
, 
m
, (*metalsn));

372 
	`memt
(
bp
, 0, (*
m
));

373 
bp
 +(*
m
);

375 
ump
 = (
u_t32_t
)
ma_pgno
;

376 
	`memy
(
bp
, &
ump
, (uinttmp));

377 
bp
 +(
ump
);

379 
	`DB_ASSERT
(
dbv
,

380 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

382 i(
is_dub
 || 
tx
 =
NULL
) {

383 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

384 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

385 *
lp
 = *
p
;

386 i(
p
 !
t_lp
)

387 *
t_lp
 = *
p
;

390 
t
 = 0;

391 #ifde
DIAGNOSTIC


396 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

397 
y
 |
DB_debug_FLAG
;

398 
	`memy
(
logc
.
da
, &
y
, (rectype));

400 i(!
	`IS_REP_CLIENT
(
dbv
))

401 
t
 = 
	`__log_put
(
dbv
,

402 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

404 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

405 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

406 
	`LSN_NOT_LOGGED
(*
t_lp
);

409 #ifde
LOG_DIAGNOSTIC


410 i(
t
 != 0)

411 ()
	`__qam_mvr_t
(
dbv
,

412 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

415 #ifde
DIAGNOSTIC


416 
	`__os_
(
dbv
, 
logc
.
da
);

418 i(
is_dub
 || 
tx
 =
NULL
)

419 
	`__os_
(
dbv
, 
logc
.
da
);

421  (
t
);

422 
	}
}

428 
	$__qam_mvr_ad
(
dbv
, 
cbuf
, 
g
)

429 
DB_ENV
 *
dbv
;

430 *
cbuf
;

431 
__qam_mvr_gs
 **
g
;

433 
__qam_mvr_gs
 *
gp
;

434 
u_t32_t
 
ump
;

435 
u_t8_t
 *
bp
;

436 
t
;

438 i((
t
 = 
	`__os_mloc
(
dbv
,

439 (
__qam_mvr_gs
+ (
DB_TXN
), &
gp
)) != 0)

440  (
t
);

441 
bp
 = 
cbuf
;

442 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

443 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

445 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

446 
bp
 +(
gp
->
ty
);

448 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

449 
bp
 +(
gp
->
tx
->
txnid
);

451 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

452 
bp
 +(
DB_LSN
);

454 
	`memy
(&
ump
, 
bp
, (uinttmp));

455 
gp
->
code
 = (
u_t32_t
)
ump
;

456 
bp
 +(
ump
);

458 
	`memy
(&
ump
, 
bp
, (uinttmp));

459 
gp
->
feid
 = (
t32_t
)
ump
;

460 
bp
 +(
ump
);

462 
	`memy
(&
ump
, 
bp
, (uinttmp));

463 
gp
->
d_f
 = (
db_o_t
)
ump
;

464 
bp
 +(
ump
);

466 
	`memy
(&
ump
, 
bp
, (uinttmp));

467 
gp
->
w_f
 = (
db_o_t
)
ump
;

468 
bp
 +(
ump
);

470 
	`memy
(&
ump
, 
bp
, (uinttmp));

471 
gp
->
d_cur
 = (
db_o_t
)
ump
;

472 
bp
 +(
ump
);

474 
	`memy
(&
ump
, 
bp
, (uinttmp));

475 
gp
->
w_cur
 = (
db_o_t
)
ump
;

476 
bp
 +(
ump
);

478 
	`memy
(&
gp
->
m
, 
bp
, (argp->metalsn));

479 
bp
 +(
gp
->
m
);

481 
	`memy
(&
ump
, 
bp
, (uinttmp));

482 
gp
->
ma_pgno
 = (
db_pgno_t
)
ump
;

483 
bp
 +(
ump
);

485 *
g
 = 
gp
;

487 
	}
}

494 
	$__qam_d_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
l
, 
pgno
, 
dx
, 
o
)

495 
DB
 *
dbp
;

496 
DB_TXN
 *
tx
;

497 
DB_LSN
 *
t_lp
;

498 
u_t32_t
 
ags
;

499 
DB_LSN
 * 
l
;

500 
db_pgno_t
 
pgno
;

501 
u_t32_t
 
dx
;

502 
db_o_t
 
o
;

504 
DBT
 
logc
;

505 
DB_ENV
 *
dbv
;

506 
DB_TXNLOGREC
 *

;

507 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

508 
u_t32_t
 
ump
, 
y
, 
txn_num
;

509 
u_t
 
ad
;

510 
u_t8_t
 *
bp
;

511 
is_dub
, 
t
;

513 
dbv
 = 
dbp
->dbenv;

514 
	`COMPQUIET
(

, 
NULL
);

516 
y
 = 
DB___qam_d
;

517 
ad
 = 0;

518 
p
 = 
t_lp
;

520 
t
 = 0;

522 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

523 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

524 i(
tx
 =
NULL
)

526 
is_dub
 = 0;

528 
is_dub
 = 1;

530 i(
tx
 =
NULL
) {

531 
txn_num
 = 0;

532 
lp
 = &
nu_l
;

533 
nu_l
.
fe
 =u_l.
offt
 = 0;

535 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

536 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

537  (
t
);

544 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

545 
txn_num
 = 
tx
->
txnid
;

548 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

549 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

550 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

551  (
t
);

553 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

554 + (
u_t32_t
)

555 + (*
l
)

556 + (
u_t32_t
)

557 + (
u_t32_t
)

558 + (
u_t32_t
);

559 i(
	`CRYPTO_ON
(
dbv
)) {

560 
ad
 =

561 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

562 
logc
.
size
 +
ad
;

565 i(
is_dub
 || 
tx
 =
NULL
) {

566 i((
t
 =

567 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

568  (
t
);

570 i((
t
 = 
	`__os_mloc
(
dbv
,

571 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

572  (
t
);

573 #ifde
DIAGNOSTIC


574 i((
t
 =

575 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

576 
	`__os_
(
dbv
, 

);

577  (
t
);

580 
logc
.
da
 = 

->data;

583 i(
ad
 > 0)

584 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

586 
bp
 = 
logc
.
da
;

588 
	`memy
(
bp
, &
y
, (rectype));

589 
bp
 +(
y
);

591 
	`memy
(
bp
, &
txn_num
, (txn_num));

592 
bp
 +(
txn_num
);

594 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

595 
bp
 +(
DB_LSN
);

597 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

598 
	`memy
(
bp
, &
ump
, (uinttmp));

599 
bp
 +(
ump
);

601 i(
l
 !
NULL
) {

602 i(
tx
 !
NULL
) {

603 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

604 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

605 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

606  (
t
);

608 
	`memy
(
bp
, 
l
, (*lsn));

610 
	`memt
(
bp
, 0, (*
l
));

611 
bp
 +(*
l
);

613 
ump
 = (
u_t32_t
)
pgno
;

614 
	`memy
(
bp
, &
ump
, (uinttmp));

615 
bp
 +(
ump
);

617 
ump
 = (
u_t32_t
)
dx
;

618 
	`memy
(
bp
, &
ump
, (uinttmp));

619 
bp
 +(
ump
);

621 
ump
 = (
u_t32_t
)
o
;

622 
	`memy
(
bp
, &
ump
, (uinttmp));

623 
bp
 +(
ump
);

625 
	`DB_ASSERT
(
dbv
,

626 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

628 i(
is_dub
 || 
tx
 =
NULL
) {

629 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

630 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

631 *
lp
 = *
p
;

632 i(
p
 !
t_lp
)

633 *
t_lp
 = *
p
;

636 
t
 = 0;

637 #ifde
DIAGNOSTIC


642 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

643 
y
 |
DB_debug_FLAG
;

644 
	`memy
(
logc
.
da
, &
y
, (rectype));

646 i(!
	`IS_REP_CLIENT
(
dbv
))

647 
t
 = 
	`__log_put
(
dbv
,

648 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

650 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

651 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

652 
	`LSN_NOT_LOGGED
(*
t_lp
);

655 #ifde
LOG_DIAGNOSTIC


656 i(
t
 != 0)

657 ()
	`__qam_d_t
(
dbv
,

658 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

661 #ifde
DIAGNOSTIC


662 
	`__os_
(
dbv
, 
logc
.
da
);

664 i(
is_dub
 || 
tx
 =
NULL
)

665 
	`__os_
(
dbv
, 
logc
.
da
);

667  (
t
);

668 
	}
}

674 
	$__qam_d_ad
(
dbv
, 
cbuf
, 
g
)

675 
DB_ENV
 *
dbv
;

676 *
cbuf
;

677 
__qam_d_gs
 **
g
;

679 
__qam_d_gs
 *
gp
;

680 
u_t32_t
 
ump
;

681 
u_t8_t
 *
bp
;

682 
t
;

684 i((
t
 = 
	`__os_mloc
(
dbv
,

685 (
__qam_d_gs
+ (
DB_TXN
), &
gp
)) != 0)

686  (
t
);

687 
bp
 = 
cbuf
;

688 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

689 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

691 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

692 
bp
 +(
gp
->
ty
);

694 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

695 
bp
 +(
gp
->
tx
->
txnid
);

697 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

698 
bp
 +(
DB_LSN
);

700 
	`memy
(&
ump
, 
bp
, (uinttmp));

701 
gp
->
feid
 = (
t32_t
)
ump
;

702 
bp
 +(
ump
);

704 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

705 
bp
 +(
gp
->
l
);

707 
	`memy
(&
ump
, 
bp
, (uinttmp));

708 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

709 
bp
 +(
ump
);

711 
	`memy
(&
ump
, 
bp
, (uinttmp));

712 
gp
->
dx
 = (
u_t32_t
)
ump
;

713 
bp
 +(
ump
);

715 
	`memy
(&
ump
, 
bp
, (uinttmp));

716 
gp
->
o
 = (
db_o_t
)
ump
;

717 
bp
 +(
ump
);

719 *
g
 = 
gp
;

721 
	}
}

729 
	$__qam_add_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
l
, 
pgno
, 
dx
, 
o
, 
da
,

730 
vag
, 
dda
)

731 
DB
 *
dbp
;

732 
DB_TXN
 *
tx
;

733 
DB_LSN
 *
t_lp
;

734 
u_t32_t
 
ags
;

735 
DB_LSN
 * 
l
;

736 
db_pgno_t
 
pgno
;

737 
u_t32_t
 
dx
;

738 
db_o_t
 
o
;

739 cڡ 
DBT
 *
da
;

740 
u_t32_t
 
vag
;

741 cڡ 
DBT
 *
dda
;

743 
DBT
 
logc
;

744 
DB_ENV
 *
dbv
;

745 
DB_TXNLOGREC
 *

;

746 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

747 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

748 
u_t
 
ad
;

749 
u_t8_t
 *
bp
;

750 
is_dub
, 
t
;

752 
dbv
 = 
dbp
->dbenv;

753 
	`COMPQUIET
(

, 
NULL
);

755 
y
 = 
DB___qam_add
;

756 
ad
 = 0;

757 
p
 = 
t_lp
;

759 
t
 = 0;

761 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

762 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

763 i(
tx
 =
NULL
)

765 
is_dub
 = 0;

767 
is_dub
 = 1;

769 i(
tx
 =
NULL
) {

770 
txn_num
 = 0;

771 
lp
 = &
nu_l
;

772 
nu_l
.
fe
 =u_l.
offt
 = 0;

774 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

775 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

776  (
t
);

783 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

784 
txn_num
 = 
tx
->
txnid
;

787 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

788 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

789 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

790  (
t
);

792 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

793 + (
u_t32_t
)

794 + (*
l
)

795 + (
u_t32_t
)

796 + (
u_t32_t
)

797 + (
u_t32_t
)

798 + (
u_t32_t
+ (
da
 =
NULL
 ? 0 : da->
size
)

799 + (
u_t32_t
)

800 + (
u_t32_t
+ (
dda
 =
NULL
 ? 0 : oldda->
size
);

801 i(
	`CRYPTO_ON
(
dbv
)) {

802 
ad
 =

803 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

804 
logc
.
size
 +
ad
;

807 i(
is_dub
 || 
tx
 =
NULL
) {

808 i((
t
 =

809 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

810  (
t
);

812 i((
t
 = 
	`__os_mloc
(
dbv
,

813 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

814  (
t
);

815 #ifde
DIAGNOSTIC


816 i((
t
 =

817 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

818 
	`__os_
(
dbv
, 

);

819  (
t
);

822 
logc
.
da
 = 

->data;

825 i(
ad
 > 0)

826 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

828 
bp
 = 
logc
.
da
;

830 
	`memy
(
bp
, &
y
, (rectype));

831 
bp
 +(
y
);

833 
	`memy
(
bp
, &
txn_num
, (txn_num));

834 
bp
 +(
txn_num
);

836 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

837 
bp
 +(
DB_LSN
);

839 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

840 
	`memy
(
bp
, &
ump
, (uinttmp));

841 
bp
 +(
ump
);

843 i(
l
 !
NULL
) {

844 i(
tx
 !
NULL
) {

845 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

846 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

847 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

848  (
t
);

850 
	`memy
(
bp
, 
l
, (*lsn));

852 
	`memt
(
bp
, 0, (*
l
));

853 
bp
 +(*
l
);

855 
ump
 = (
u_t32_t
)
pgno
;

856 
	`memy
(
bp
, &
ump
, (uinttmp));

857 
bp
 +(
ump
);

859 
ump
 = (
u_t32_t
)
dx
;

860 
	`memy
(
bp
, &
ump
, (uinttmp));

861 
bp
 +(
ump
);

863 
ump
 = (
u_t32_t
)
o
;

864 
	`memy
(
bp
, &
ump
, (uinttmp));

865 
bp
 +(
ump
);

867 i(
da
 =
NULL
) {

868 
zo
 = 0;

869 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

870 
bp
 +(
u_t32_t
);

872 
	`memy
(
bp
, &
da
->
size
, (data->size));

873 
bp
 +(
da
->
size
);

874 
	`memy
(
bp
, 
da
->da, da->
size
);

875 
bp
 +
da
->
size
;

878 
ump
 = (
u_t32_t
)
vag
;

879 
	`memy
(
bp
, &
ump
, (uinttmp));

880 
bp
 +(
ump
);

882 i(
dda
 =
NULL
) {

883 
zo
 = 0;

884 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

885 
bp
 +(
u_t32_t
);

887 
	`memy
(
bp
, &
dda
->
size
, (olddata->size));

888 
bp
 +(
dda
->
size
);

889 
	`memy
(
bp
, 
dda
->
da
, oldda->
size
);

890 
bp
 +
dda
->
size
;

893 
	`DB_ASSERT
(
dbv
,

894 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

896 i(
is_dub
 || 
tx
 =
NULL
) {

897 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

898 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

899 *
lp
 = *
p
;

900 i(
p
 !
t_lp
)

901 *
t_lp
 = *
p
;

904 
t
 = 0;

905 #ifde
DIAGNOSTIC


910 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

911 
y
 |
DB_debug_FLAG
;

912 
	`memy
(
logc
.
da
, &
y
, (rectype));

914 i(!
	`IS_REP_CLIENT
(
dbv
))

915 
t
 = 
	`__log_put
(
dbv
,

916 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

918 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

919 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

920 
	`LSN_NOT_LOGGED
(*
t_lp
);

923 #ifde
LOG_DIAGNOSTIC


924 i(
t
 != 0)

925 ()
	`__qam_add_t
(
dbv
,

926 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

929 #ifde
DIAGNOSTIC


930 
	`__os_
(
dbv
, 
logc
.
da
);

932 i(
is_dub
 || 
tx
 =
NULL
)

933 
	`__os_
(
dbv
, 
logc
.
da
);

935  (
t
);

936 
	}
}

942 
	$__qam_add_ad
(
dbv
, 
cbuf
, 
g
)

943 
DB_ENV
 *
dbv
;

944 *
cbuf
;

945 
__qam_add_gs
 **
g
;

947 
__qam_add_gs
 *
gp
;

948 
u_t32_t
 
ump
;

949 
u_t8_t
 *
bp
;

950 
t
;

952 i((
t
 = 
	`__os_mloc
(
dbv
,

953 (
__qam_add_gs
+ (
DB_TXN
), &
gp
)) != 0)

954  (
t
);

955 
bp
 = 
cbuf
;

956 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

957 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

959 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

960 
bp
 +(
gp
->
ty
);

962 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

963 
bp
 +(
gp
->
tx
->
txnid
);

965 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

966 
bp
 +(
DB_LSN
);

968 
	`memy
(&
ump
, 
bp
, (uinttmp));

969 
gp
->
feid
 = (
t32_t
)
ump
;

970 
bp
 +(
ump
);

972 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

973 
bp
 +(
gp
->
l
);

975 
	`memy
(&
ump
, 
bp
, (uinttmp));

976 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

977 
bp
 +(
ump
);

979 
	`memy
(&
ump
, 
bp
, (uinttmp));

980 
gp
->
dx
 = (
u_t32_t
)
ump
;

981 
bp
 +(
ump
);

983 
	`memy
(&
ump
, 
bp
, (uinttmp));

984 
gp
->
o
 = (
db_o_t
)
ump
;

985 
bp
 +(
ump
);

987 
	`memt
(&
gp
->
da
, 0, (argp->data));

988 
	`memy
(&
gp
->
da
.
size
, 
bp
, (
u_t32_t
));

989 
bp
 +(
u_t32_t
);

990 
gp
->
da
.d
bp
;

991 
bp
 +
gp
->
da
.
size
;

993 
	`memy
(&
ump
, 
bp
, (uinttmp));

994 
gp
->
vag
 = (
u_t32_t
)
ump
;

995 
bp
 +(
ump
);

997 
	`memt
(&
gp
->
dda
, 0, (argp->olddata));

998 
	`memy
(&
gp
->
dda
.
size
, 
bp
, (
u_t32_t
));

999 
bp
 +(
u_t32_t
);

1000 
gp
->
dda
.
da
 = 
bp
;

1001 
bp
 +
gp
->
dda
.
size
;

1003 *
g
 = 
gp
;

1005 
	}
}

1013 
	$__qam_dext_log
(
dbp
, 
tx
, 
t_lp
, 
ags
, 
l
, 
pgno
, 
dx
, 
o
, 
da
)

1014 
DB
 *
dbp
;

1015 
DB_TXN
 *
tx
;

1016 
DB_LSN
 *
t_lp
;

1017 
u_t32_t
 
ags
;

1018 
DB_LSN
 * 
l
;

1019 
db_pgno_t
 
pgno
;

1020 
u_t32_t
 
dx
;

1021 
db_o_t
 
o
;

1022 cڡ 
DBT
 *
da
;

1024 
DBT
 
logc
;

1025 
DB_ENV
 *
dbv
;

1026 
DB_TXNLOGREC
 *

;

1027 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1028 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

1029 
u_t
 
ad
;

1030 
u_t8_t
 *
bp
;

1031 
is_dub
, 
t
;

1033 
dbv
 = 
dbp
->dbenv;

1034 
	`COMPQUIET
(

, 
NULL
);

1036 
y
 = 
DB___qam_dext
;

1037 
ad
 = 0;

1038 
p
 = 
t_lp
;

1040 
t
 = 0;

1042 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
) ||

1043 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
)) {

1044 i(
tx
 =
NULL
)

1046 
is_dub
 = 0;

1048 
is_dub
 = 1;

1050 i(
tx
 =
NULL
) {

1051 
txn_num
 = 0;

1052 
lp
 = &
nu_l
;

1053 
nu_l
.
fe
 =u_l.
offt
 = 0;

1055 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1056 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1057  (
t
);

1064 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1065 
txn_num
 = 
tx
->
txnid
;

1068 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

1069 i(
dbp
->
log_fame
->
id
 =
DB_LOGFILEID_INVALID
 &&

1070 (
t
 = 
	`__dbg_zy_id
(
dbp
)) != 0)

1071  (
t
);

1073 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1074 + (
u_t32_t
)

1075 + (*
l
)

1076 + (
u_t32_t
)

1077 + (
u_t32_t
)

1078 + (
u_t32_t
)

1079 + (
u_t32_t
+ (
da
 =
NULL
 ? 0 : da->
size
);

1080 i(
	`CRYPTO_ON
(
dbv
)) {

1081 
ad
 =

1082 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1083 
logc
.
size
 +
ad
;

1086 i(
is_dub
 || 
tx
 =
NULL
) {

1087 i((
t
 =

1088 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1089  (
t
);

1091 i((
t
 = 
	`__os_mloc
(
dbv
,

1092 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1093  (
t
);

1094 #ifde
DIAGNOSTIC


1095 i((
t
 =

1096 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1097 
	`__os_
(
dbv
, 

);

1098  (
t
);

1101 
logc
.
da
 = 

->data;

1104 i(
ad
 > 0)

1105 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1107 
bp
 = 
logc
.
da
;

1109 
	`memy
(
bp
, &
y
, (rectype));

1110 
bp
 +(
y
);

1112 
	`memy
(
bp
, &
txn_num
, (txn_num));

1113 
bp
 +(
txn_num
);

1115 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1116 
bp
 +(
DB_LSN
);

1118 
ump
 = (
u_t32_t
)
dbp
->
log_fame
->
id
;

1119 
	`memy
(
bp
, &
ump
, (uinttmp));

1120 
bp
 +(
ump
);

1122 i(
l
 !
NULL
) {

1123 i(
tx
 !
NULL
) {

1124 
LOG
 *

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

1125 i(
	`LOG_COMPARE
(
l
, &

->l>0 && (
t
 =

1126 
	`__log_check_ge_l
(
dbv
, 
dbp
, 
l
) != 0))

1127  (
t
);

1129 
	`memy
(
bp
, 
l
, (*lsn));

1131 
	`memt
(
bp
, 0, (*
l
));

1132 
bp
 +(*
l
);

1134 
ump
 = (
u_t32_t
)
pgno
;

1135 
	`memy
(
bp
, &
ump
, (uinttmp));

1136 
bp
 +(
ump
);

1138 
ump
 = (
u_t32_t
)
dx
;

1139 
	`memy
(
bp
, &
ump
, (uinttmp));

1140 
bp
 +(
ump
);

1142 
ump
 = (
u_t32_t
)
o
;

1143 
	`memy
(
bp
, &
ump
, (uinttmp));

1144 
bp
 +(
ump
);

1146 i(
da
 =
NULL
) {

1147 
zo
 = 0;

1148 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

1149 
bp
 +(
u_t32_t
);

1151 
	`memy
(
bp
, &
da
->
size
, (data->size));

1152 
bp
 +(
da
->
size
);

1153 
	`memy
(
bp
, 
da
->da, da->
size
);

1154 
bp
 +
da
->
size
;

1157 
	`DB_ASSERT
(
dbv
,

1158 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1160 i(
is_dub
 || 
tx
 =
NULL
) {

1161 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1162 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1163 *
lp
 = *
p
;

1164 i(
p
 !
t_lp
)

1165 *
t_lp
 = *
p
;

1168 
t
 = 0;

1169 #ifde
DIAGNOSTIC


1174 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1175 
y
 |
DB_debug_FLAG
;

1176 
	`memy
(
logc
.
da
, &
y
, (rectype));

1178 i(!
	`IS_REP_CLIENT
(
dbv
))

1179 
t
 = 
	`__log_put
(
dbv
,

1180 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1182 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1183 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1184 
	`LSN_NOT_LOGGED
(*
t_lp
);

1187 #ifde
LOG_DIAGNOSTIC


1188 i(
t
 != 0)

1189 ()
	`__qam_dext_t
(
dbv
,

1190 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1193 #ifde
DIAGNOSTIC


1194 
	`__os_
(
dbv
, 
logc
.
da
);

1196 i(
is_dub
 || 
tx
 =
NULL
)

1197 
	`__os_
(
dbv
, 
logc
.
da
);

1199  (
t
);

1200 
	}
}

1206 
	$__qam_dext_ad
(
dbv
, 
cbuf
, 
g
)

1207 
DB_ENV
 *
dbv
;

1208 *
cbuf
;

1209 
__qam_dext_gs
 **
g
;

1211 
__qam_dext_gs
 *
gp
;

1212 
u_t32_t
 
ump
;

1213 
u_t8_t
 *
bp
;

1214 
t
;

1216 i((
t
 = 
	`__os_mloc
(
dbv
,

1217 (
__qam_dext_gs
+ (
DB_TXN
), &
gp
)) != 0)

1218  (
t
);

1219 
bp
 = 
cbuf
;

1220 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1221 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1223 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1224 
bp
 +(
gp
->
ty
);

1226 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1227 
bp
 +(
gp
->
tx
->
txnid
);

1229 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1230 
bp
 +(
DB_LSN
);

1232 
	`memy
(&
ump
, 
bp
, (uinttmp));

1233 
gp
->
feid
 = (
t32_t
)
ump
;

1234 
bp
 +(
ump
);

1236 
	`memy
(&
gp
->
l
, 
bp
, (argp->lsn));

1237 
bp
 +(
gp
->
l
);

1239 
	`memy
(&
ump
, 
bp
, (uinttmp));

1240 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

1241 
bp
 +(
ump
);

1243 
	`memy
(&
ump
, 
bp
, (uinttmp));

1244 
gp
->
dx
 = (
u_t32_t
)
ump
;

1245 
bp
 +(
ump
);

1247 
	`memy
(&
ump
, 
bp
, (uinttmp));

1248 
gp
->
o
 = (
db_o_t
)
ump
;

1249 
bp
 +(
ump
);

1251 
	`memt
(&
gp
->
da
, 0, (argp->data));

1252 
	`memy
(&
gp
->
da
.
size
, 
bp
, (
u_t32_t
));

1253 
bp
 +(
u_t32_t
);

1254 
gp
->
da
.d
bp
;

1255 
bp
 +
gp
->
da
.
size
;

1257 *
g
 = 
gp
;

1259 
	}
}

1266 
	$__qam__cov
(
dbv
, 
dbp
, 
dbsiz
)

1267 
DB_ENV
 *
dbv
;

1268 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

1269 
size_t
 *
dbsiz
;

1271 
t
;

1273 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1274 
__qam_cf_cov
, 
DB___qam_cf
)) != 0)

1275  (
t
);

1276 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1277 
__qam_mvr_cov
, 
DB___qam_mvr
)) != 0)

1278  (
t
);

1279 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1280 
__qam_d_cov
, 
DB___qam_d
)) != 0)

1281  (
t
);

1282 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1283 
__qam_add_cov
, 
DB___qam_add
)) != 0)

1284  (
t
);

1285 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1286 
__qam_dext_cov
, 
DB___qam_dext
)) != 0)

1287  (
t
);

1289 
	}
}

	@../qam/qam_autop.c

3 
	~"db_cfig.h
"

5 #ifde
HAVE_QUEUE


6 
	~"db_t.h
"

7 
	~"dbc/yo.h
"

8 
	~"dbc/db_ge.h
"

9 
	~"dbc/db_dich.h
"

10 
	~"dbc/db_am.h
"

11 
	~"dbc/log.h
"

12 
	~"dbc/qam.h
"

13 
	~"dbc/txn.h
"

20 
	$__qam_cf_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

21 
DB_ENV
 *
dbv
;

22 
DBT
 *
db
;

23 
DB_LSN
 *
lp
;

24 
db_cs
 
nud2
;

25 *
nud3
;

27 
__qam_cf_gs
 *
gp
;

28 
t
;

30 
nud2
 = 
DB_TXN_PRINT
;

31 
nud3
 = 
NULL
;

33 i((
t
 = 
	`__qam_cf_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

34  (
t
);

35 ()
	`tf
(

37 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

38 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

39 (
u_lg
)
gp
->
ty
,

40 (
u_lg
)
gp
->
tx
->
txnid
,

41 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

42 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

43 ()
	`tf
("\eo: %lu\n", (
u_lg
)
gp
->
o
);

44 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

45 ()
	`tf
("\n");

46 
	`__os_
(
dbv
, 
gp
);

48 
	}
}

55 
	$__qam_mvr_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

56 
DB_ENV
 *
dbv
;

57 
DBT
 *
db
;

58 
DB_LSN
 *
lp
;

59 
db_cs
 
nud2
;

60 *
nud3
;

62 
__qam_mvr_gs
 *
gp
;

63 
t
;

65 
nud2
 = 
DB_TXN_PRINT
;

66 
nud3
 = 
NULL
;

68 i((
t
 = 
	`__qam_mvr_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

69  (
t
);

70 ()
	`tf
(

72 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

73 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

74 (
u_lg
)
gp
->
ty
,

75 (
u_lg
)
gp
->
tx
->
txnid
,

76 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

77 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

78 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

79 ()
	`tf
("\td_f: %lu\n", (
u_lg
)
gp
->
d_f
);

80 ()
	`tf
("\ew_f: %lu\n", (
u_lg
)
gp
->
w_f
);

81 ()
	`tf
("\td_cur: %lu\n", (
u_lg
)
gp
->
d_cur
);

82 ()
	`tf
("\ew_cur: %lu\n", (
u_lg
)
gp
->
w_cur
);

83 ()
	`tf
("\tmetalsn: [%lu][%lu]\n",

84 (
u_lg
)
gp
->
m
.
fe
, (u_lgrgp->m.
offt
);

85 ()
	`tf
("\tma_pgno: %lu\n", (
u_lg
)
gp
->
ma_pgno
);

86 ()
	`tf
("\n");

87 
	`__os_
(
dbv
, 
gp
);

89 
	}
}

96 
	$__qam_d_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

97 
DB_ENV
 *
dbv
;

98 
DBT
 *
db
;

99 
DB_LSN
 *
lp
;

100 
db_cs
 
nud2
;

101 *
nud3
;

103 
__qam_d_gs
 *
gp
;

104 
t
;

106 
nud2
 = 
DB_TXN_PRINT
;

107 
nud3
 = 
NULL
;

109 i((
t
 = 
	`__qam_d_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

110  (
t
);

111 ()
	`tf
(

113 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

114 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

115 (
u_lg
)
gp
->
ty
,

116 (
u_lg
)
gp
->
tx
->
txnid
,

117 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

118 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

119 ()
	`tf
("\tlsn: [%lu][%lu]\n",

120 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

121 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

122 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

123 ()
	`tf
("\eo: %lu\n", (
u_lg
)
gp
->
o
);

124 ()
	`tf
("\n");

125 
	`__os_
(
dbv
, 
gp
);

127 
	}
}

134 
	$__qam_add_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

135 
DB_ENV
 *
dbv
;

136 
DBT
 *
db
;

137 
DB_LSN
 *
lp
;

138 
db_cs
 
nud2
;

139 *
nud3
;

141 
__qam_add_gs
 *
gp
;

142 
u_t32_t
 
i
;

143 
ch
;

144 
t
;

146 
nud2
 = 
DB_TXN_PRINT
;

147 
nud3
 = 
NULL
;

149 i((
t
 = 
	`__qam_add_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

150  (
t
);

151 ()
	`tf
(

153 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

154 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

155 (
u_lg
)
gp
->
ty
,

156 (
u_lg
)
gp
->
tx
->
txnid
,

157 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

158 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

159 ()
	`tf
("\tlsn: [%lu][%lu]\n",

160 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

161 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

162 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

163 ()
	`tf
("\eo: %lu\n", (
u_lg
)
gp
->
o
);

164 ()
	`tf
("\tdata: ");

165 
i
 = 0; i < 
gp
->
da
.
size
; i++) {

166 
ch
 = ((
u_t8_t
 *)
gp
->
da
.da)[
i
];

167 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

169 ()
	`tf
("\n");

170 ()
	`tf
("\tvag: %lu\n", (
u_lg
)
gp
->
vag
);

171 ()
	`tf
("\tolddata: ");

172 
i
 = 0; i < 
gp
->
dda
.
size
; i++) {

173 
ch
 = ((
u_t8_t
 *)
gp
->
dda
.
da
)[
i
];

174 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

176 ()
	`tf
("\n");

177 ()
	`tf
("\n");

178 
	`__os_
(
dbv
, 
gp
);

180 
	}
}

187 
	$__qam_dext_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

188 
DB_ENV
 *
dbv
;

189 
DBT
 *
db
;

190 
DB_LSN
 *
lp
;

191 
db_cs
 
nud2
;

192 *
nud3
;

194 
__qam_dext_gs
 *
gp
;

195 
u_t32_t
 
i
;

196 
ch
;

197 
t
;

199 
nud2
 = 
DB_TXN_PRINT
;

200 
nud3
 = 
NULL
;

202 i((
t
 = 
	`__qam_dext_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

203  (
t
);

204 ()
	`tf
(

206 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

207 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

208 (
u_lg
)
gp
->
ty
,

209 (
u_lg
)
gp
->
tx
->
txnid
,

210 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

211 ()
	`tf
("\tfeid: %ld\n", ()
gp
->
feid
);

212 ()
	`tf
("\tlsn: [%lu][%lu]\n",

213 (
u_lg
)
gp
->
l
.
fe
, (u_lgrgp->l.
offt
);

214 ()
	`tf
("\gno: %lu\n", (
u_lg
)
gp
->
pgno
);

215 ()
	`tf
("\tdx: %lu\n", (
u_lg
)
gp
->
dx
);

216 ()
	`tf
("\eo: %lu\n", (
u_lg
)
gp
->
o
);

217 ()
	`tf
("\tdata: ");

218 
i
 = 0; i < 
gp
->
da
.
size
; i++) {

219 
ch
 = ((
u_t8_t
 *)
gp
->
da
.da)[
i
];

220 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

222 ()
	`tf
("\n");

223 ()
	`tf
("\n");

224 
	`__os_
(
dbv
, 
gp
);

226 
	}
}

233 
	$__qam__t
(
dbv
, 
dbp
, 
dbsiz
)

234 
DB_ENV
 *
dbv
;

235 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

236 
size_t
 *
dbsiz
;

238 
t
;

240 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

241 
__qam_cf_t
, 
DB___qam_cf
)) != 0)

242  (
t
);

243 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

244 
__qam_mvr_t
, 
DB___qam_mvr
)) != 0)

245  (
t
);

246 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

247 
__qam_d_t
, 
DB___qam_d
)) != 0)

248  (
t
);

249 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

250 
__qam_add_t
, 
DB___qam_add
)) != 0)

251  (
t
);

252 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

253 
__qam_dext_t
, 
DB___qam_dext
)) != 0)

254  (
t
);

256 
	}
}

	@../qam/qam_conv.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_sw.h
"

14 
	~"dbc/db_am.h
"

15 
	~"dbc/qam.h
"

24 
	$__qam_msw
(
pg
)

25 
PAGE
 *
pg
;

27 
u_t8_t
 *
p
;

29 
	`__db_masw
(
pg
);

31 
p
 = (
u_t8_t
 *)
pg
 + (
DBMETA
);

33 
	`SWAP32
(
p
);

34 
	`SWAP32
(
p
);

35 
	`SWAP32
(
p
);

36 
	`SWAP32
(
p
);

37 
	`SWAP32
(
p
);

38 
	`SWAP32
(
p
);

39 
p
 +91 * (
u_t32_t
);

40 
	`SWAP32
(
p
);

43 
	}
}

54 
	$__qam_pg_out
(
dbv
, 
pg
, 

, 
cook
)

55 
DB_ENV
 *
dbv
;

56 
db_pgno_t
 
pg
;

57 *

;

58 
DBT
 *
cook
;

60 
DB_PGINFO
 *
pgfo
;

61 
QPAGE
 *
h
;

63 
	`COMPQUIET
(
pg
, 0);

64 
	`COMPQUIET
(
dbv
, 
NULL
);

65 
pgfo
 = (
DB_PGINFO
 *)
cook
->
da
;

66 i(!
	`F_ISSET
(
pgfo
, 
DB_AM_SWAP
))

69 
h
 = 

;

70 i(
h
->
ty
 =
P_QAMMETA
)

71  (
	`__qam_msw
(

));

73 
	`M_32_SWAP
(
h
->
l
.
fe
);

74 
	`M_32_SWAP
(
h
->
l
.
offt
);

75 
	`M_32_SWAP
(
h
->
pgno
);

78 
	}
}

	@../qam/qam_files.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/f.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/qam.h
"

19 
	#QAM_EXNAME
(
Q
, 
I
, 
B
, 
L
) \

20 
	`tf
((
B
), (
L
), \

21 
QUEUE_EXTENT
, (
Q
)->
d
, 
PATH_SEPARATOR
[0], (Q)->
me
, (
I
))

	)

32 
	$__qam_robe
(
dbp
, 
pgno
, 
txn
, 
add
, 
mode
, 
iܙy
, 
ags
)

33 
DB
 *
dbp
;

34 
db_pgno_t
 
pgno
;

35 
DB_TXN
 *
txn
;

36 *
add
;

37 
qam_obe_mode
 
mode
;

38 
DB_CACHE_PRIORITY
 
iܙy
;

39 
u_t32_t
 
ags
;

41 
DB_ENV
 *
dbv
;

42 
DB_MPOOLFILE
 *
mpf
;

43 
MPFARRAY
 *
y
;

44 
QUEUE
 *
qp
;

45 
u_t8_t
 
fid
[
DB_FILE_ID_LEN
];

46 
u_t32_t
 
i
, 
extid
, 
maxext
, 
numext
, 
lags
, 
offt
, 
dext
, 
ݒags
;

47 
buf
[
DB_MAXPATHLEN
];

48 
y
, 
ss
, 
t
, 
t_t
;

50 
dbv
 = 
dbp
->dbenv;

51 
qp
 = (
QUEUE
 *)
dbp
->
q_
;

52 
t
 = 0;

54 i(
qp
->
ge_ext
 == 0) {

55 
mpf
 = 
dbp
->mpf;

56 
mode
) {

57 
QAM_PROBE_GET
:

58  (
	`__memp_fg
(
mpf
, &
pgno
, 
txn
, 
ags
, 
add
));

59 
QAM_PROBE_PUT
:

60  (
	`__memp_ut
(
mpf
, 
add
, 
iܙy
));

61 
QAM_PROBE_DIRTY
:

62  (
	`__memp_dty
(
mpf
, 
add
, 
txn
, 
iܙy
, 
ags
));

63 
QAM_PROBE_MPF
:

64 *(
DB_MPOOLFILE
 **)
add
 = 
mpf
;

69 
mpf
 = 
NULL
;

76 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

77 
extid
 = 
	`QAM_PAGE_EXTENT
(
dbp
, 
pgno
);

80 
y
 = &
qp
->
y1
;

81 i(
y
->
n_ex
 == 0) {

83 
y
->
n_ex
 = 4;

84 
y
->
low_ex
 = 
extid
;

85 
numext
 = 
offt
 = 
dext
 = 0;

86 
ss
 = 0;

87 
loc
;

90 
y
:

91 i(
extid
 < 
y
->
low_ex
) {

92 
ss
 = 1;

93 
offt
 = 
y
->
low_ex
 - 
extid
;

95 
ss
 = 0;

96 
offt
 = 
extid
 - 
y
->
low_ex
;

98 i(
qp
->
y2
.
n_ex
 != 0 &&

99 (
extid
 >
qp
->
y2
.
low_ex
 ?

100 
offt
 > 
extid
 - 
qp
->
y2
.
low_ex
 :

101 
offt
 > 
qp
->
y2
.
low_ex
 - 
extid
)) {

102 
y
 = &
qp
->
y2
;

103 i(
extid
 < 
y
->
low_ex
) {

104 
ss
 = 1;

105 
offt
 = 
y
->
low_ex
 - 
extid
;

107 
ss
 = 0;

108 
offt
 = 
extid
 - 
y
->
low_ex
;

117 i(
ss
 =1 || 
offt
 >
y
->
n_ex
) {

118 
dext
 = 
y
->
n_ex
;

119 
numext
 = (
y
->
hi_ex
 -ay->
low_ex
) + 1;

120 i(
ss
 =1 && 
offt
 + 
numext
 <
y
->
n_ex
) {

126 
	`memmove
(&
y
->
mpay
[
offt
],

127 
y
->
mpay
, 
numext


128 * (
y
->
mpay
[0]));

129 
	`memt
(
y
->
mpay
, 0, 
offt


130 * (
y
->
mpay
[0]));

131 
offt
 = 0;

132 } i(
ss
 =0 && 
offt
 =
y
->
n_ex
 &&

133 (
mode
 =
QAM_PROBE_GET
 || mod=
QAM_PROBE_PUT
) &&

134 
y
->
mpay
[0].
pf
 == 0) {

140 
mpf
 = 
y
->
mpay
[0].mpf;

141 i(
mpf
 !
NULL
 && (
t
 = 
	`__memp_fo
(mpf, 0)) != 0)

142 
r
;

143 
	`memmove
(&
y
->
mpay
[0], &array->mpfarray[1],

144 (
y
->
n_ex
 - 1* ׼ay->
mpay
[0]));

145 
y
->
low_ex
++;

146 
y
->
hi_ex
++;

147 
offt
--;

148 
y
->
mpay
[
offt
].
mpf
 = 
NULL
;

149 
y
->
mpay
[
offt
].
pf
 = 0;

156 
maxext
 = (
u_t32_t

UINT32_MAX


157 / (
qp
->
ge_ext
 * qp->
c_ge
);

158 i(
offt
 >
maxext
/2) {

159 
y
 = &
qp
->
y2
;

160 
	`DB_ASSERT
(
dbv
, 
y
->
n_ex
 == 0);

161 
dext
 = 0;

162 
y
->
n_ex
 = 4;

163 
y
->
low_ex
 = 
extid
;

164 
offt
 = 0;

165 
numext
 = 0;

166 } i(
y
->
mpay
[0].
pf
 == 0) {

172 
i
 = 0; i < 
y
->
n_ex
; i++) {

173 i(
y
->
mpay
[
i
].
pf
 != 0)

175 
mpf
 = 
y
->
mpay
[
i
].mpf;

176 i(
mpf
 =
NULL
)

178 ()
	`__memp_g_ags
(
mpf
, &
lags
);

179 i(!
	`FLD_ISSET
(
lags
, 
DB_MPOOL_UNLINK
))

182 
y
->
mpay
[
i
].
mpf
 = 
NULL
;

183 i((
t
 = 
	`__memp_fo
(
mpf
, 0)) != 0)

184 
r
;

186 i(
i
 == 0)

187 

;

188 
	`memmove
(&
y
->
mpay
[0],

189 &
y
->
mpay
[
i
],

190 (
y
->
n_ex
 - 
i
) *

191 (
y
->
mpay
[0]));

192 
	`memt
(&
y
->
mpay
[y->
n_ex
 - 
i
],

193 '\0', 
i
 * (
y
->
mpay
[0]));

194 
y
->
low_ex
 +
i
;

195 
y
->
hi_ex
 +
i
;

196 
y
;

202 

: 
y
->
n_ex
 +
offt
;

203 
y
->
n_ex
 <<= 2;

205 
loc
: i((
t
 = 
	`__os_loc
(
dbv
,

206 
y
->
n_ex
 * (
__qmpf
),

207 &
y
->
mpay
)) != 0)

208 
r
;

210 i(
ss
 == 1) {

215 
	`memmove
(&
y
->
mpay
[
offt
],

216 
y
->
mpay
,

217 
numext
 * (
y
->
mpay
[0]));

218 
	`memt
(
y
->
mpay
, 0,

219 
offt
 * (
y
->
mpay
[0]));

220 
	`memt
(&
y
->
mpay
[
numext
 + 
offt
], 0,

221 (
y
->
n_ex
 - (
numext
 + 
offt
))

222 * (
y
->
mpay
[0]));

223 
offt
 = 0;

227 
	`memt
(&
y
->
mpay
[
dext
], 0,

228 (
y
->
n_ex
 - 
dext
) *

229 (
y
->
mpay
[0]));

234 i(
extid
 < 
y
->
low_ex
)

235 
y
->
low_ex
 = 
extid
;

236 i(
extid
 > 
y
->
hi_ex
)

237 
y
->
hi_ex
 = 
extid
;

240 i(
y
->
mpay
[
offt
].
mpf
 =
NULL
) {

241 
	`QAM_EXNAME
(
qp
, 
extid
, 
buf
, (buf));

242 i((
t
 = 
	`__memp_f
(

243 
dbv
, &
y
->
mpay
[
offt
].
mpf
)) != 0)

244 
r
;

245 
mpf
 = 
y
->
mpay
[
offt
].mpf;

246 ()
	`__memp_t_l_offt
(
mpf
, 0);

247 ()
	`__memp_t_pgcook
(
mpf
, &
qp
->
pgcook
);

248 ()
	`__memp_g_y
(
dbp
->
mpf
, &
y
);

249 ()
	`__memp_t_y
(
mpf
, 
y
);

250 ()
	`__memp_t_r_n
(
mpf
, 
dbp
->
pgsize
);

253 
	`__qam_exid
(
dbp
, 
fid
, 
extid
);

254 ()
	`__memp_t_feid
(
mpf
, 
fid
);

255 
ݒags
 = 
DB_EXTENT
;

256 i(
	`LF_ISSET
(
DB_MPOOL_CREATE
))

257 
ݒags
 |
DB_CREATE
;

258 i(
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
))

259 
ݒags
 |
DB_RDONLY
;

260 i(
	`F_ISSET
(
dbv
, 
DB_ENV_DIRECT_DB
))

261 
ݒags
 |
DB_DIRECT
;

262 i((
t
 = 
	`__memp_fݒ
(

263 
mpf
, 
NULL
, 
buf
, 
ݒags
, 
qp
->
mode
, 
dbp
->
pgsize
)) != 0) {

264 
y
->
mpay
[
offt
].
mpf
 = 
NULL
;

265 ()
	`__memp_fo
(
mpf
, 0);

266 
r
;

274 
mpf
 = 
y
->
mpay
[
offt
].mpf;

275 i(
mode
 =
QAM_PROBE_GET
)

276 
y
->
mpay
[
offt
].
pf
++;

283 i(
	`LF_ISSET
(
DB_MPOOL_CREATE
))

284 ()
	`__memp_t_ags
(
mpf
, 
DB_MPOOL_UNLINK
, 0);

286 
r
:

287 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

289 i(
t
 == 0) {

290 
pgno
--;

291 
pgno
 %
qp
->
ge_ext
;

292 
mode
) {

293 
QAM_PROBE_GET
:

294 
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
txn
, 
ags
, 
add
);

295 i(
t
 == 0)

298 
QAM_PROBE_PUT
:

299 
t
 = 
	`__memp_ut
(
mpf
, 
add
, 
dbp
->
iܙy
);

301 
QAM_PROBE_DIRTY
:

302  (
	`__memp_dty
(
mpf
,

303 
add
, 
txn
, 
dbp
->
iܙy
, 
ags
));

304 
QAM_PROBE_MPF
:

305 *(
DB_MPOOLFILE
 **)
add
 = 
mpf
;

309 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

311 
offt
 = 
extid
 - 
y
->
low_ex
;

312 
	`DB_ASSERT
(
dbv
, 
y
->
mpay
[
offt
].
pf
 > 0);

313 i(--
y
->
mpay
[
offt
].
pf
 == 0 &&

314 (
mode
 =
QAM_PROBE_GET
 || 
t
 == 0)) {

316 ()
	`__memp_g_ags
(
mpf
, &
ags
);

317 i(
	`LF_ISSET
(
DB_MPOOL_UNLINK
)) {

318 
y
->
mpay
[
offt
].
mpf
 = 
NULL
;

319 i((
t_t
 =

320 
	`__memp_fo
(
mpf
, 0)!0 && 
t
 == 0)

321 
t
 = 
t_t
;

324 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

326  (
t
);

327 
	}
}

338 
	$__qam_fo
(
dbp
, 
pgnddr
)

339 
DB
 *
dbp
;

340 
db_pgno_t
 
pgnddr
;

342 
DB_ENV
 *
dbv
;

343 
DB_MPOOLFILE
 *
mpf
;

344 
MPFARRAY
 *
y
;

345 
QUEUE
 *
qp
;

346 
u_t32_t
 
extid
, 
offt
;

347 
t
;

349 
t
 = 0;

350 
dbv
 = 
dbp
->dbenv;

351 
qp
 = (
QUEUE
 *)
dbp
->
q_
;

353 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

355 
extid
 = 
	`QAM_PAGE_EXTENT
(
dbp
, 
pgnddr
);

356 
y
 = &
qp
->
y1
;

357 i(
y
->
low_ex
 > 
extid
 ||ay->
hi_ex
 <xtid)

358 
y
 = &
qp
->
y2
;

359 
offt
 = 
extid
 - 
y
->
low_ex
;

361 
	`DB_ASSERT
(
dbv
,

362 
extid
 >
y
->
low_ex
 && 
offt
 <ay->
n_ex
);

365 i(
y
->
mpay
[
offt
].
pf
 != 0)

366 
de
;

368 
mpf
 = 
y
->
mpay
[
offt
].mpf;

369 
y
->
mpay
[
offt
].
mpf
 = 
NULL
;

370 
t
 = 
	`__memp_fo
(
mpf
, 0);

372 
de
:

373 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

374  (
t
);

375 
	}
}

387 
	$__qam_emove
(
dbp
, 
pgnddr
)

388 
DB
 *
dbp
;

389 
db_pgno_t
 
pgnddr
;

391 
DB_ENV
 *
dbv
;

392 
DB_MPOOLFILE
 *
mpf
;

393 
MPFARRAY
 *
y
;

394 
QUEUE
 *
qp
;

395 
u_t32_t
 
extid
, 
offt
;

396 
t
;

398 
qp
 = (
QUEUE
 *)
dbp
->
q_
;

399 
dbv
 = 
dbp
->dbenv;

400 
t
 = 0;

402 
	`MUTEX_LOCK
(
dbv
, 
dbp
->
mux
);

404 
extid
 = 
	`QAM_PAGE_EXTENT
(
dbp
, 
pgnddr
);

405 
y
 = &
qp
->
y1
;

406 i(
y
->
low_ex
 > 
extid
 ||ay->
hi_ex
 <xtid)

407 
y
 = &
qp
->
y2
;

408 
offt
 = 
extid
 - 
y
->
low_ex
;

410 
	`DB_ASSERT
(
dbv
,

411 
extid
 >
y
->
low_ex
 && 
offt
 <ay->
n_ex
);

413 
mpf
 = 
y
->
mpay
[
offt
].mpf;

415 i(
mpf
 =
NULL
)

416 
r
;

422 i(
	`LOGGING_ON
(
dbv
&& (
t
 = 
	`__log_ush
(dbv, 
NULL
)) != 0)

423 
r
;

425 ()
	`__memp_t_ags
(
mpf
, 
DB_MPOOL_UNLINK
, 1);

427 i(
y
->
mpay
[
offt
].
pf
 != 0)

428 
r
;

429 
y
->
mpay
[
offt
].
mpf
 = 
NULL
;

430 i((
t
 = 
	`__memp_fo
(
mpf
, 0)) != 0)

431 
r
;

437 i(
offt
 == 0) {

438 
	`memmove
(
y
->
mpay
, &array->mpfarray[1],

439 (
y
->
hi_ex
 -ay->
low_ex
)

440 * (
y
->
mpay
[0]));

441 
y
->
mpay
[

442 
y
->
hi_ex
 -ay->
low_ex
].
mpf
 = 
NULL
;

443 i(
y
->
low_ex
 !y->
hi_ex
)

444 
y
->
low_ex
++;

446 i(
extid
 =
y
->
hi_ex
)

447 
y
->
hi_ex
--;

450 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 
dbp
->
mux
);

452  (
t
);

453 
	}
}

462 
	$__qam_sync
(
dbp
)

463 
DB
 *
dbp
;

465 
t
;

470 i((
t
 = 
	`__memp_fsync
(
dbp
->
mpf
)) != 0)

471  (
t
);

472 i(((
QUEUE
 *)
dbp
->
q_
)->
ge_ext
 != 0)

473  (
	`__memp_sync_t
(

474 
dbp
->
dbv
, 
NULL
, 0, 
DB_SYNC_QUEUE_EXTENT
, NULL, NULL));

476 
	}
}

486 
	$__qam_g_fi
(
dbp
, 
fip
)

487 
DB
 *
dbp
;

488 
QUEUE_FILELIST
 **
fip
;

490 
DB_ENV
 *
dbv
;

491 
DB_MPOOLFILE
 *
mpf
;

492 
QUEUE
 *
qp
;

493 
QMETA
 *
ma
;

494 
size_t
 
ex_t
;

495 
db_o_t
 
i
, 
cut
, 
f
, 

, 
c_ex
;

496 
QUEUE_FILELIST
 *

;

497 
t
;

499 
dbv
 = 
dbp
->dbenv;

500 
mpf
 = 
dbp
->mpf;

501 
qp
 = (
QUEUE
 *)
dbp
->
q_
;

502 *
fip
 = 
NULL
;

504 i(
qp
->
ge_ext
 == 0)

508 i(
qp
->
me
 =
NULL
)

512 
i
 = 
PGNO_BASE_MD
;

513 i((
t
 = 
	`__memp_fg
(
mpf
, &
i
, 
NULL
, 0, &
ma
)) != 0)

514  (
t
);

516 
cut
 = 
ma
->
cur_o
;

517 
f
 = 
ma
->
f_o
;

519 i((
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbp
->
iܙy
)) != 0)

520  (
t
);

531 
c_ex
 = 
qp
->
c_ge
 * qp->
ge_ext
;

532 i(
cut
 >
f
)

533 
ex_t
 = (
cut
 - 
f
/ 
c_ex
 + 3;

535 
ex_t
 =

536 (
cut
 + (
UINT32_MAX
 - 
f
)/ 
c_ex
 + 4;

538 i(
ex_t
 == 0)

540 i((
t
 = 
	`__os_oc
(
dbv
,

541 
ex_t
, (
QUEUE_FILELIST
), 
fip
)) != 0)

542  (
t
);

543 

 = *
fip
;

545 
aga
:

546 i(
cut
 >
f
)

547 

 = 
cut
;

549 

 = 
UINT32_MAX
;

557 
f
 -f % 
c_ex
;

558 
f
 +

 % 
c_ex
;

560 
i
 = 
f
; i >f && i <

; i +
c_ex
) {

561 i((
t
 = 
	`__qam_robe
(
dbp
, 
	`QAM_RECNO_PAGE
(dbp, 
i
), 
NULL
,

562 &

->
mpf
, 
QAM_PROBE_MPF
, 
dbp
->
iܙy
, 0)) != 0) {

563 i(
t
 =
ENOENT
)

565  (
t
);

567 

->
id
 = 
	`QAM_RECNO_EXTENT
(
dbp
, 
i
);

568 

++;

569 
	`DB_ASSERT
(
dbv
, (
size_t
)(

 - *
fip
< 
ex_t
);

572 i(
cut
 < 
f
) {

573 
f
 = 1;

574 
aga
;

578 
	}
}

586 
	$__qam_ex_mes
(
dbv
, 
me
, 
mip
)

587 
DB_ENV
 *
dbv
;

588 *
me
;

589 ***
mip
;

591 
DB
 *
dbp
;

592 
QUEUE
 *
qp
;

593 
QUEUE_FILELIST
 *
fi
, *

;

594 
size_t
 
n
;

595 
t
, 
t
, 
t_t
;

596 
buf
[
DB_MAXPATHLEN
], **

, *
p
;

598 *
mip
 = 
NULL
;

599 
fi
 = 
NULL
;

600 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

601  (
t
);

602 i((
t
 = 
	`__db_ݒ
(
dbp
,

603 
NULL
, 
me
, NULL, 
DB_QUEUE
, 
DB_RDONLY
, 0, 
PGNO_BASE_MD
)) != 0)

604 
de
;

605 
qp
 = 
dbp
->
q_
;

606 i(
qp
->
ge_ext
 == 0)

607 
de
;

609 i((
t
 = 
	`__qam_g_fi
(
dbp
, &
fi
)) != 0)

610 
de
;

612 i(
fi
 =
NULL
)

613 
de
;

615 
t
 = 0;

616 

 = 
fi
; fp->
mpf
 !
NULL
; fp++)

617 
t
++;

620 
n
 = (
size_t
)
t
 * ((**
mip
) +

621 
	`
(
QUEUE_EXTENT
+ sn(
qp
->
d
+ sn(qp->
me
) + 6);

623 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
, 
n
, 
mip
)) != 0)

624 
de
;

625 

 = *
mip
;

626 
p
 = (*)(

 + 
t
 + 1);

627 

 = 
fi
; fp->
mpf
 !
NULL
; fp++) {

628 
	`QAM_EXNAME
(
qp
, 

->
id
, 
buf
, (buf));

629 
n
 = 
	`
(
buf
);

630 *

++ = 
p
;

631 ()
	`ry
(
p
, 
buf
);

632 
p
 +
n
 + 1;

634 *

 = 
NULL
;

636 
de
:

637 i(
fi
 !
NULL
)

638 
	`__os_
(
dbp
->
dbv
, 
fi
);

639 i((
t_t
 = 
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
)!0 && 
t
 == 0)

640 
t
 = 
t_t
;

642  (
t
);

643 
	}
}

660 
	$__qam_exid
(
dbp
, 
fidp
, 
exnum
)

661 
DB
 *
dbp
;

662 
u_t8_t
 *
fidp
;

663 
u_t32_t
 
exnum
;

665 
i
;

666 
u_t8_t
 *
p
;

669 
	`memy
(
fidp
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

672 
i
 = (
u_t32_t
); i > 0; --i)

673 *
fidp
++ = 0;

676 
p
 = (
u_t8_t
 *)&
exnum
, 
i
 = (
u_t32_t
); i > 0; --i)

677 *
fidp
++ = *
p
++;

678 
	}
}

691 
	$__qam_me
(
dbp
, 
txn
, 
wme
, 

)

692 
DB
 *
dbp
;

693 
DB_TXN
 *
txn
;

694 cڡ *
wme
;

695 
qam_me_
 

;

697 
DB_ENV
 *
dbv
;

698 
QUEUE
 *
qp
;

699 
size_t
 
exn
, 
fun
, 
n
;

700 
u_t8_t
 
fid
[
DB_FILE_ID_LEN
];

701 
u_t32_t
 
exid
;

702 
t
, 
i
, 
t
, 
t_t
;

703 
buf
[
DB_MAXPATHLEN
], 
nbuf
[DB_MAXPATHLEN], 
pve
;

704 *
dme
, *
dth
, *
exme
, *
fume
, **
mes
;

705 *
nd
, *
m
, *
w
, *

;

707 
dbv
 = 
dbp
->dbenv;

708 
qp
 = (
QUEUE
 *)
dbp
->
q_
;

709 
t
 = 
t
 = 
t_t
 = 0;

710 
m
 = 
exme
 = 
fume
 = 
NULL
;

711 
mes
 = 
NULL
;

714 i(
qp
->
ge_ext
 == 0)

730 
	`QAM_EXNAME
(
qp
, 0, 
buf
, (buf));

731 i((
t
 =

732 
	`__db_ame
(
dbv
, 
DB_APP_DATA
, 
buf
, 0, 
NULL
, &
fume
)) != 0)

733  (
t
);

736 i((
dth
 = 
	`__db_h
(
fume
)=
NULL
) {

737 
t
 = 
EINVAL
;

738 
r
;

740 
pve
 = *
dth
;

741 *
dth
 = '\0';

747 i((
t
 = 
	`__os_dli
(
dbv
, 
fume
, &
mes
, &
t
)) != 0)

748 
r
;

749 *
dth
 = 
pve
;

752 i(
t
 == 0)

753 
r
;

761 
dth
++;

762 
dme
 = 
	`chr
(
dth
, '.');

763 i(
dme
 =
NULL
) {

764 
t
 = 
EINVAL
;

765 
r
;

767 ++
dme
;

768 *
dme
 = '\0';

769 
n
 = 
	`
(
dth
);

770 
fun
 = 
	`
(
fume
);

773 
exn
 = 
fun
 + 20;

774 i((
t
 = 
	`__os_mloc
(
dbv
, 
exn
, &
exme
)) != 0)

775 
r
;

777 
nd
 = 
w
 = 
NULL
;

778 i(
wme
 !
NULL
) {

779 i((
t
 = 
	`__os_rdup
(
dbv
, 
wme
, &
m
)) != 0)

780 
r
;

781 
nd
 = 
m
;

782 i((
w
 = 
	`__db_h
(
m
)!
NULL
)

783 *
w
++ = '\0';

785 
w
 = 
m
;

786 
nd
 = 
PATH_DOT
;

789 
i
 = 0; i < 
t
; i++) {

791 i(
	`cmp
(
mes
[
i
], 
dth
, 
n
) != 0)

794 

 = &
mes
[
i
][
n
]; *cp != '\0'; cp++)

795 i(!
	`isdig
(()*

))

797 i(*

 != '\0')

804 
exid
 = (
u_t32_t
)
	`oul
(
mes
[
i
] + 
n
, 
NULL
, 10);

805 
	`__qam_exid
(
dbp
, 
fid
, 
exid
);

807 

) {

808 
QAM_NAME_DISCARD
:

809 
	`tf
(
exme
, 
exn
,

810 "%s%s", 
fume
, 
mes
[
i
] + 
n
);

811 i((
t_t
 = 
	`__memp_me
(
dbv
,

812 
fid
, 
NULL
, 
exme
, NULL,

813 
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
))!0 && 
t
 == 0)

814 
t
 = 
t_t
;

817 
QAM_NAME_RENAME
:

818 
	`tf
(
nbuf
, buf), 
QUEUE_EXTENT
,

819 
nd
, 
PATH_SEPARATOR
[0], 
w
, 
exid
);

820 
	`QAM_EXNAME
(
qp
, 
exid
, 
buf
, (buf));

821 i((
t
 = 
	`__f_me
(
dbv
,

822 
txn
, 
buf
, 
nbuf
, 
fid
, 
DB_APP_DATA
, 1,

823 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
) ?

824 
DB_LOG_NOT_DURABLE
 : 0)) != 0)

825 
r
;

828 
QAM_NAME_REMOVE
:

829 
	`QAM_EXNAME
(
qp
, 
exid
, 
buf
, (buf));

830 i((
t
 = 
	`__f_move
(
dbv
, 
txn
, 
fid
, 
buf
,

831 
DB_APP_DATA
, 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
) ?

832 
DB_LOG_NOT_DURABLE
 : 0)) != 0)

833 
r
;

838 
r
: i(
fume
 !
NULL
)

839 
	`__os_
(
dbv
, 
fume
);

840 i(
exme
 !
NULL
)

841 
	`__os_
(
dbv
, 
exme
);

842 i(
m
 !
NULL
)

843 
	`__os_
(
dbv
, 
m
);

844 i(
mes
 !
NULL
)

845 
	`__os_d
(
dbv
, 
mes
, 
t
);

846  (
t
);

847 
	}
}

	@../qam/qam_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/mp.h
"

16 
	~"dbc/qam.h
"

17 
	~"dbc/txn.h
"

19 
__qam_
 
__P
((
DB
 *, 
DB_TXN
 *,

20 cڡ *, cڡ *, cڡ *, 
qam_me_
));

21 
__qam_t_exsize
 
__P
((
DB
 *, 
u_t32_t
));

30 
	$__qam_db_
(
dbp
)

31 
DB
 *
dbp
;

33 
QUEUE
 *
t
;

34 
t
;

37 i((
t
 = 
	`__os_oc
(
dbp
->
dbv
, 1, (
QUEUE
), &
t
)) != 0)

38  (
t
);

39 
dbp
->
q_
 = 
t
;

40 
dbp
->
g_q_exsize
 = 
__qam_g_exsize
;

41 
dbp
->
t_q_exsize
 = 
__qam_t_exsize
;

43 
t
->
_d
 = ' ';

46 
	}
}

55 
	$__qam_db_o
(
dbp
, 
ags
)

56 
DB
 *
dbp
;

57 
u_t32_t
 
ags
;

59 
DB_MPOOLFILE
 *
mpf
;

60 
MPFARRAY
 *
y
;

61 
QUEUE
 *
t
;

62 
__qmpf
 *
mp
;

63 
u_t32_t
 
i
;

64 
t
, 
t_t
;

66 
t
 = 0;

67 i((
t
 = 
dbp
->
q_
=
NULL
)

70 
y
 = &
t
->
y1
;

71 
aga
:

72 
mp
 = 
y
->
mpay
;

73 i(
mp
 !
NULL
) {

74 
i
 = 
y
->
low_ex
;

75 
i
 <
y
->
hi_ex
; i++, 
mp
++) {

76 
mpf
 = 
mp
->mpf;

77 
mp
->
mpf
 = 
NULL
;

78 i(
mpf
 !
NULL
 && (
t_t
 = 
	`__memp_fo
(mpf,

79 
	`LF_ISSET
(
DB_AM_DISCARD
? 
DB_MPOOL_DISCARD
 : 0))

80 !0 && 
t
 == 0)

81 
t
 = 
t_t
;

83 
	`__os_
(
dbp
->
dbv
, 
y
->
mpay
);

85 i(
t
->
y2
.
n_ex
 != 0) {

86 
y
 = &
t
->
y2
;

87 
y
->
n_ex
 = 0;

88 
aga
;

91 i(
	`LF_ISSET
(
DB_AM_DISCARD
) &&

92 (
t_t
 = 
	`__qam_me
(
dbp
, 
NULL
,

93 
NULL
, 
QAM_NAME_DISCARD
)!0 && 
t
 == 0)

94 
t
 = 
t_t
;

96 i(
t
->
th
 !
NULL
)

97 
	`__os_
(
dbp
->
dbv
, 
t
->
th
);

98 
	`__os_
(
dbp
->
dbv
, 
t
);

99 
dbp
->
q_
 = 
NULL
;

101  (
t
);

102 
	}
}

111 
	$__qam_g_exsize
(
dbp
, 
q_exsiz
)

112 
DB
 *
dbp
;

113 
u_t32_t
 *
q_exsiz
;

115 *
q_exsiz
 = ((
QUEUE
*)
dbp
->
q_
)->
ge_ext
;

117 
	}
}

120 
	$__qam_t_exsize
(
dbp
, 
exsize
)

121 
DB
 *
dbp
;

122 
u_t32_t
 
exsize
;

124 
	`DB_ILLEGAL_AFTER_OPEN
(
dbp
, "DB->set_extentsize");

126 i(
exsize
 < 1) {

127 
	`__db_rx
(
dbp
->
dbv
, "Extent size must beteast 1");

128  (
EINVAL
);

131 ((
QUEUE
*)
dbp
->
q_
)->
ge_ext
 = 
exsize
;

134 
	}
}

144 
	$__queue_gefo
(
dbp
, 
fp
, 
ϡp
, 
emyp
, 
ge
, 
ags
)

145 
DB
 *
dbp
;

146 
db_pgno_t
 *
fp
, *
ϡp
;

147 *
emyp
;

148 
ge
;

149 
u_t32_t
 
ags
;

151 
DB_MPOOLFILE
 *
mpf
;

152 
QMETA
 *
ma
;

153 
db_pgno_t
 
f
, 
i
, 
ϡ
;

154 
emy
, 
t
, 
t_t
;

156 
mpf
 = 
dbp
->mpf;

159 
i
 = 
PGNO_BASE_MD
;

160 i((
t
 = 
	`__memp_fg
(
mpf
, &
i
, 
NULL
, 0, &
ma
)) != 0)

161  (
t
);

163 
f
 = 
	`QAM_RECNO_PAGE
(
dbp
, 
ma
->
f_o
);

164 
ϡ
 = 
	`QAM_RECNO_PAGE
(

165 
dbp
, 
ma
->
cur_o
 == 1 ? 1 : meta->cur_recno - 1);

167 
emy
 = 
ma
->
cur_o
 =ma->
f_o
;

168 i(
fp
 !
NULL
)

169 *
fp
 = 
f
;

170 i(
ϡp
 !
NULL
)

171 *
ϡp
 = 
ϡ
;

172 i(
emyp
 !
NULL
)

173 *
emyp
 = 
emy
;

174 #ifde
HAVE_STATISTICS


175 i(
ge
)

176 
t
 = 
	`__db_ge
(
dbp
, (
PAGE
 *)
ma
, 
ags
);

178 
	`COMPQUIET
(
ge
, 0);

179 
	`COMPQUIET
(
ags
, 0);

182 i((
t_t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

183 
t
 = 
t_t
;

185  (
t
);

186 
	}
}

188 #ifde
HAVE_STATISTICS


196 
	$__db_queue
(
dbp
, 
ags
)

197 
DB
 *
dbp
;

198 
u_t32_t
 
ags
;

200 
PAGE
 *
h
;

201 
db_pgno_t
 
f
, 
i
, 
ϡ
, 
pg_ext
, 

;

202 
emy
, 
t
;

204 i((
t
 = 
	`__queue_gefo
(
dbp
, &
f
, &
ϡ
, &
emy
, 1, 
ags
)) != 0)

205  (
t
);

207 i(
emy
 || 
t
 != 0)

208  (
t
);

210 
i
 = 
f
;

211 i(
f
 > 
ϡ
)

212 

 = 
	`QAM_RECNO_PAGE
(
dbp
, 
UINT32_MAX
);

214 

 = 
ϡ
;

217 
beg
:

218 ; 
i
 <

; ++i) {

219 i((
t
 = 
	`__qam_fg
(
dbp
, &
i
, 
NULL
, 0, &
h
)) != 0) {

220 
pg_ext
 = ((
QUEUE
 *)
dbp
->
q_
)->
ge_ext
;

221 i(
pg_ext
 == 0) {

222 i(
t
 =
DB_PAGE_NOTFOUND
 && 
f
 =
ϡ
)

224  (
t
);

226 i(
t
 =
ENOENT
 || =
DB_PAGE_NOTFOUND
) {

227 
i
 +(
pg_ext
 - ((i - 1) %g_ext)) - 1;

230  (
t
);

232 ()
	`__db_ge
(
dbp
, 
h
, 
ags
);

233 i((
t
 = 
	`__qam_ut
(
dbp
, 
i
, 
h
, dbp->
iܙy
)) != 0)

234  (
t
);

237 i(
f
 > 
ϡ
) {

238 
i
 = 1;

239 

 = 
ϡ
;

240 
f
 = 
ϡ
;

241 
beg
;

244 
	}
}

254 
	$__qam_move
(
dbp
, 
txn
, 
me
, 
subdb
)

255 
DB
 *
dbp
;

256 
DB_TXN
 *
txn
;

257 cڡ *
me
, *
subdb
;

259  (
	`__qam_
(
dbp
, 
txn
, 
me
, 
subdb
, 
NULL
, 
QAM_NAME_REMOVE
));

260 
	}
}

270 
	$__qam_me
(
dbp
, 
txn
, 
me
, 
subdb
, 
wme
)

271 
DB
 *
dbp
;

272 
DB_TXN
 *
txn
;

273 cڡ *
me
, *
subdb
, *
wme
;

275  (
	`__qam_
(
dbp
, 
txn
, 
me
, 
subdb
, 
wme
, 
QAM_NAME_RENAME
));

276 
	}
}

283 
	$__qam_
(
dbp
, 
txn
, 
me
, 
subdb
, 
wme
, 

)

284 
DB
 *
dbp
;

285 
DB_TXN
 *
txn
;

286 cڡ *
me
, *
subdb
, *
wme
;

287 
qam_me_
 

;

289 
DB_ENV
 *
dbv
;

290 
DB
 *
tmpdbp
;

291 
QUEUE
 *
qp
;

292 
t
, 
t_t
;

294 
dbv
 = 
dbp
->dbenv;

295 
t
 = 0;

297 i(
subdb
 !
NULL
 && 
me
 != NULL) {

298 
	`__db_rx
(
dbv
,

300  (
EINVAL
);

307 i(
	`F_ISSET
(
dbp
, 
DB_AM_OPEN_CALLED
))

308 
tmpdbp
 = 
dbp
;

310 i((
t
 = 
	`__db__
(&
tmpdbp
, 
dbv
, 0)) != 0)

311  (
t
);

317 
tmpdbp
->
lock
 = 
dbp
->locker;

318 i((
t
 = 
	`__db_ݒ
(
tmpdbp
, 
txn
,

319 
me
, 
NULL
, 
DB_QUEUE
, 
DB_RDONLY
, 0, 
PGNO_BASE_MD
)) != 0)

320 
r
;

323 
qp
 = (
QUEUE
 *)
tmpdbp
->
q_
;

324 i(
qp
->
ge_ext
 != 0)

325 
t
 = 
	`__qam_me
(
tmpdbp
, 
txn
, 
wme
, 

);

327 i(!
	`F_ISSET
(
dbp
, 
DB_AM_OPEN_CALLED
)) {

328 
r
:

332 
tmpdbp
->
lock
 = 
NULL
;

335 i(
txn
 !
NULL
)

336 
	`__txn_mlock
(
dbv
,

337 
txn
, &
tmpdbp
->
hd_lock
, 
DB_LOCK_INVALIDID
);

339 i(
txn
 =
NULL
 ) {

340 i((
t_t
 = 
	`__db_o
(
tmpdbp
,

341 
txn
, 
DB_NOSYNC
)!0 && 
t
 == 0)

342 
t
 = 
t_t
;

344 i((
t_t
 = 
	`__txn_oevt
(
dbv
,

345 
txn
, 
tmpdbp
)!0 && 
t
 == 0)

346 
t
 = 
t_t
;

349  (
t
);

350 
	}
}

359 
	$__qam_m_ags
(
dbp
, 
ag
, 
outag
)

360 
DB
 *
dbp
;

361 
u_t32_t
 *
ag
, *
outag
;

363 
	`COMPQUIET
(
dbp
, 
NULL
);

365 i(
	`FLD_ISSET
(*
ag
, 
DB_INORDER
)) {

366 
	`FLD_SET
(*
outag
, 
DB_AM_INORDER
);

367 
	`FLD_CLR
(*
ag
, 
DB_INORDER
);

369 
	}
}

378 
	$__qam_t_ags
(
dbp
, 
ag
)

379 
DB
 *
dbp
;

380 
u_t32_t
 *
ag
;

383 
	`__qam_m_ags
(
dbp
, 
ag
, &dbp->
ags
);

385 
	}
}

	@../qam/qam_open.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/yo.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/db_sw.h
"

15 
	~"dbc/db_am.h
"

16 
	~"dbc/lock.h
"

17 
	~"dbc/mp.h
"

18 
	~"dbc/qam.h
"

19 
	~"dbc/f.h
"

21 
__qam__ma
 
__P
((
DB
 *, 
QMETA
 *));

30 
	$__qam_ݒ
(
dbp
, 
txn
, 
me
, 
ba_pgno
, 
mode
, 
ags
)

31 
DB
 *
dbp
;

32 
DB_TXN
 *
txn
;

33 cڡ *
me
;

34 
db_pgno_t
 
ba_pgno
;

35 
mode
;

36 
u_t32_t
 
ags
;

38 
DBC
 *
dbc
;

39 
DB_ENV
 *
dbv
;

40 
DB_LOCK
 
mock
;

41 
DB_MPOOLFILE
 *
mpf
;

42 
QMETA
 *
qma
;

43 
QUEUE
 *
t
;

44 
t
, 
t_t
;

46 
dbv
 = 
dbp
->dbenv;

47 
mpf
 = 
dbp
->mpf;

48 
t
 = 
dbp
->
q_
;

49 
t
 = 0;

50 
qma
 = 
NULL
;

52 i(
me
 =
NULL
 && 
t
->
ge_ext
 != 0) {

53 
	`__db_rx
(
dbv
,

55  (
EINVAL
);

58 i(
	`MULTIVERSION
(
dbp
)) {

59 
	`__db_rx
(
dbv
,

61  (
EINVAL
);

65 
dbp
->
db_am_move
 = 
__qam_move
;

66 
dbp
->
db_am_me
 = 
__qam_me
;

74 i((
t
 = 
	`__db_curs
(
dbp
, 
txn
, &
dbc
,

75 
	`LF_ISSET
(
DB_CREATE
&& 
	`CDB_LOCKING
(
dbv
) ?

76 
DB_WRITECURSOR
 : 0)) != 0)

77  (
t
);

84 i((
t
 =

85 
	`__db_lg
(
dbc
, 0, 
ba_pgno
, 
DB_LOCK_READ
, 0, &
mock
)) != 0)

86 
r
;

87 i((
t
 = 
	`__memp_fg
(
mpf
, &
ba_pgno
, 
dbc
->
txn
, 0, &
qma
)) != 0)

88 
r
;

91 i(
qma
->
dbma
.
magic
 !
DB_QAMMAGIC
) {

92 
	`__db_rx
(
dbv
, "%s: uxed fty ofm", 
me
);

93 
t
 = 
EINVAL
;

94 
r
;

98 
t
->
ge_ext
 = 
qma
->page_ext;

100 i(
t
->
ge_ext
 !0 && (
t
 = 
	`__qam_t_ext_da
(
dbp
, 
me
)) != 0)

101 
r
;

103 i(
mode
 == 0)

104 
mode
 = 
	`__db_omode
("rw-rw----");

105 
t
->
mode
 = mode;

106 
t
->
_d
 = ()
qma
->re_pad;

107 
t
->
_n
 = 
qma
->re_len;

108 
t
->
c_ge
 = 
qma
->rec_page;

110 
t
->
q_ma
 = 
ba_pgno
;

111 
t
->
q_ro
 = 
ba_pgno
 + 1;

113 
r
: i(
qma
 !
NULL
 && (
t_t
 =

114 
	`__memp_ut
(
mpf
, 
qma
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

115 
t
 = 
t_t
;

118 i((
t_t
 = 
	`__LPUT
(
dbc
, 
mock
)!0 && 
t
 == 0)

119 
t
 = 
t_t
;

121 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

122 
t
 = 
t_t
;

124  (
t
);

125 
	}
}

134 
	$__qam_t_ext_da
(
dbp
, 
me
)

135 
DB
 *
dbp
;

136 cڡ *
me
;

138 
QUEUE
 *
t
;

139 
t
;

141 
t
 = 
dbp
->
q_
;

142 
t
->
pgfo
.
db_gesize
 = 
dbp
->
pgsize
;

143 
t
->
pgfo
.
ags
 =

144 
	`F_ISSET
(
dbp
, (
DB_AM_CHKSUM
 | 
DB_AM_ENCRYPT
 | 
DB_AM_SWAP
));

145 
t
->
pgfo
.
ty
 = 
dbp
->type;

146 
t
->
pgcook
.
da
 = &t->
pgfo
;

147 
t
->
pgcook
.
size
 = (
DB_PGINFO
);

149 i((
t
 = 
	`__os_rdup
(
dbp
->
dbv
, 
me
, &
t
->
th
)) != 0)

150  (
t
);

151 
t
->
d
 =->
th
;

152 i((
t
->
me
 = 
	`__db_h
->
th
)=
NULL
) {

153 
t
->
me
 =->
th
;

154 
t
->
d
 = 
PATH_DOT
;

156 *
t
->
me
++ = '\0';

159 
	}
}

167 
	$__qam_machk
(
dbp
, 
me
, 
qma
)

168 
DB
 *
dbp
;

169 cڡ *
me
;

170 
QMETA
 *
qma
;

172 
DB_ENV
 *
dbv
;

173 
u_t32_t
 
vs
;

174 
t
;

176 
dbv
 = 
dbp
->dbenv;

177 
t
 = 0;

183 
vs
 = 
qma
->
dbma
.
vsi
;

184 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
))

185 
	`M_32_SWAP
(
vs
);

186 
vs
) {

189 
	`__db_rx
(
dbv
,

191 
me
, (
u_lg
)
vs
);

192  (
DB_OLD_VERSION
);

197 
	`__db_rx
(
dbv
,

198 "%s: unsu܋d qam vsi: %lu", 
me
, (
u_lg
)
vs
);

199  (
EINVAL
);

203 i(
	`F_ISSET
(
dbp
, 
DB_AM_SWAP
&& (
t
 = 
	`__qam_msw
((
PAGE
 *)
qma
)) != 0)

204  (
t
);

207 i(
dbp
->
ty
 !
DB_QUEUE
 && dbp->ty !
DB_UNKNOWN
)

208  (
EINVAL
);

209 
dbp
->
ty
 = 
DB_QUEUE
;

210 
	`DB_ILLEGAL_METHOD
(
dbp
, 
DB_OK_QUEUE
);

213 
dbp
->
pgsize
 = 
qma
->
dbma
.
gesize
;

216 
	`memy
(
dbp
->
feid
, 
qma
->
dbma
.
uid
, 
DB_FILE_ID_LEN
);

219 
dbp
->
db_am_me
 = 
__qam_me
;

220 
dbp
->
db_am_move
 = 
__qam_move
;

222  (
t
);

223 
	}
}

230 
	$__qam__ma
(
dbp
, 
ma
)

231 
DB
 *
dbp
;

232 
QMETA
 *
ma
;

234 
DB_ENV
 *
dbv
;

235 
QUEUE
 *
t
;

237 
dbv
 = 
dbp
->dbenv;

238 
t
 = 
dbp
->
q_
;

240 
	`memt
(
ma
, 0, (
QMETA
));

241 
	`LSN_NOT_LOGGED
(
ma
->
dbma
.
l
);

242 
ma
->
dbma
.
pgno
 = 
PGNO_BASE_MD
;

243 
ma
->
dbma
.
ϡ_pgno
 = 0;

244 
ma
->
dbma
.
magic
 = 
DB_QAMMAGIC
;

245 
ma
->
dbma
.
vsi
 = 
DB_QAMVERSION
;

246 
ma
->
dbma
.
gesize
 = 
dbp
->
pgsize
;

247 i(
	`F_ISSET
(
dbp
, 
DB_AM_CHKSUM
))

248 
	`FLD_SET
(
ma
->
dbma
.
maags
, 
DBMETA_CHKSUM
);

249 i(
	`F_ISSET
(
dbp
, 
DB_AM_ENCRYPT
)) {

250 
ma
->
dbma
.
y_g
 =

251 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
g
;

252 
	`DB_ASSERT
(
dbv
, 
ma
->
dbma
.
y_g
 != 0);

253 
ma
->
yo_magic
 = ma->
dbma
.
magic
;

255 
ma
->
dbma
.
ty
 = 
P_QAMMETA
;

256 
ma
->
_d
 = (
u_t32_t
)
t
->re_pad;

257 
ma
->
_n
 = 
t
->re_len;

258 
ma
->
c_ge
 = 
	`CALC_QAM_RECNO_PER_PAGE
(
dbp
);

259 
ma
->
cur_o
 = 1;

260 
ma
->
f_o
 = 1;

261 
ma
->
ge_ext
 = 
t
->page_ext;

262 
t
->
c_ge
 = 
ma
->rec_page;

263 
	`memy
(
ma
->
dbma
.
uid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

266 i(
	`QAM_RECNO_PER_PAGE
(
dbp
) < 1) {

267 
	`__db_rx
(
dbv
,

269 (
u_lg
)
t
->
_n
, (u_lg)
dbp
->
pgsize
);

270  (
EINVAL
);

274 
	}
}

283 
	$__qam_w_fe
(
dbp
, 
txn
, 
fhp
, 
me
)

284 
DB
 *
dbp
;

285 
DB_TXN
 *
txn
;

286 
DB_FH
 *
fhp
;

287 cڡ *
me
;

289 
DBT
 
pdbt
;

290 
DB_ENV
 *
dbv
;

291 
DB_MPOOLFILE
 *
mpf
;

292 
DB_PGINFO
 
pgfo
;

293 
QMETA
 *
ma
;

294 
db_pgno_t
 
pgno
;

295 
t
, 
t_t
;

308 i(
	`F_ISSET
(
dbp
, 
DB_AM_INMEM
)) {

309 
mpf
 = 
dbp
->mpf;

310 
pgno
 = 
PGNO_BASE_MD
;

311 i((
t
 = 
	`__memp_fg
(
mpf
, &
pgno
, 
txn
,

312 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
ma
)) != 0)

313  (
t
);

315 i((
t
 = 
	`__qam__ma
(
dbp
, 
ma
)) != 0)

316 
r1
;

318 i((
t
 = 
	`__db_log_ge
(
dbp
,

319 
txn
, &
ma
->
dbma
.
l
, 
pgno
, (
PAGE
 *)meta)) != 0)

320 
r1
;

321 
r1
: i((
t_t
 =

322 
	`__memp_ut
(
mpf
, 
ma
, 
dbp
->
iܙy
)!0 && 
t
 == 0)

323 
t
 = 
t_t
;

325 
dbv
 = 
dbp
->dbenv;

326 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
dbp
->
pgsize
, &
ma
)) != 0)

327  (
t
);

329 i((
t
 = 
	`__qam__ma
(
dbp
, 
ma
)) != 0)

330 
r2
;

332 
pgfo
.
db_gesize
 = 
dbp
->
pgsize
;

333 
pgfo
.
ags
 =

334 
	`F_ISSET
(
dbp
, (
DB_AM_CHKSUM
 | 
DB_AM_ENCRYPT
 | 
DB_AM_SWAP
));

335 
pgfo
.
ty
 = 
DB_QUEUE
;

336 
	`DB_SET_DBT
(
pdbt
, &
pgfo
, (pginfo));

337 i((
t
 = 
	`__db_pgout
(
dbv
, 
PGNO_BASE_MD
, 
ma
, &
pdbt
)) != 0)

338 
r2
;

339 
t
 = 
	`__f_wre
(
dbv
, 
txn
, 
me
,

340 
DB_APP_DATA
, 
fhp
, 
dbp
->
pgsize
, 0, 0, 
ma
, dbp->pgsize, 1,

341 
	`F_ISSET
(
dbp
, 
DB_AM_NOT_DURABLE
? 
DB_LOG_NOT_DURABLE
 : 0);

343 
r2
: 
	`__os_
(
dbv
, 
ma
);

346  (
t
);

347 
	}
}

	@../qam/qam_rec.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/qam.h
"

18 
	~"dbc/txn.h
"

29 
	#QAM_DIRTY
(
dbp
, 
pgno
, 
g
) \

30 i((
t
 = 
	`__qam_dty
((
dbp
), \

31 
pgno
, 
g
, 
NULL
, (
dbp
)->
iܙy
)) != 0) { \

32 
t
 = 
	`__db_pgr
((
dbp
), (
pgno
),et); \

33 
out
; \

34 }

	)

44 
	$__qam_cf_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

45 
DB_ENV
 *
dbv
;

46 
DBT
 *
db
;

47 
DB_LSN
 *
lp
;

48 
db_cs
 

;

49 *
fo
;

51 
__qam_cf_gs
 *
gp
;

52 
DB
 *
fe_dbp
;

53 
DBC
 *
dbc
;

54 
DB_LOCK
 
lock
;

55 
DB_LSN
 
unc_l
;

56 
DB_MPOOLFILE
 *
mpf
;

57 
QMETA
 *
ma
;

58 
QUEUE_CURSOR
 *

;

59 
db_pgno_t
 
mg
;

60 
u_t32_t
 
c_ext
;

61 
exa
, 
t
, 
t_t
;

63 
	`LOCK_INIT
(
lock
);

64 
	`COMPQUIET
(
ma
, 
NULL
);

65 
	`REC_PRINT
(
__qam_cf_t
);

66 
	`REC_INTRO
(
__qam_cf_ad
, 1, 1);

68 
mg
 = ((
QUEUE
 *)
fe_dbp
->
q_
)->
q_ma
;

70 i((
t
 = 
	`__db_lg
(
dbc
,

71 
LCK_ROLLBACK
, 
mg
, 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

72 
de
;

73 i((
t
 = 
	`__memp_fg
(
mpf
, &
mg
, 
NULL
,

74 0, &
ma
)) != 0) {

75 i(
	`DB_REDO
(

)) {

76 i((
t
 = 
	`__memp_fg
(
mpf
, &
mg
, 
NULL
,

77 
DB_MPOOL_CREATE
, &
ma
)) != 0) {

78 ()
	`__LPUT
(
dbc
, 
lock
);

79 
out
;

81 
ma
->
dbma
.
pgno
 = 
mg
;

82 
ma
->
dbma
.
ty
 = 
P_QAMMETA
;

84 *
lp
 = 
gp
->
ev_l
;

85 
t
 = 
	`__LPUT
(
dbc
, 
lock
);

86 
out
;

95 i(
	`DB_UNDO
(

)) {

96 i(
	`QAM_BEFORE_FIRST
(
ma
, 
gp
->
o
)) {

97 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

98 
ma
->
f_o
 = 
gp
->
o
;

101 
unc_l
 = ((
DB_TXNHEAD
 *)
fo
)->trunc_lsn;

103 i(!
	`IS_ZERO_LSN
(
unc_l
) &&

104 
	`LOG_COMPARE
(&
	`LSN
(
ma
), &
unc_l
) > 0) {

105 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

106 
	`LSN
(
ma

unc_l
;

109 i(
	`LOG_COMPARE
(&
	`LSN
(
ma
), 
lp
) < 0) {

110 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

111 
	`LSN
(
ma
*
lp
;

113 i(
ma
->
ge_ext
 == 0)

114 
c_ext
 = 0;

116 
c_ext
 = 
ma
->
ge_ext
 * ma->
c_ge
;

117 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

118 i(
ma
->
f_o
 =
RECNO_OOB
)

119 
ma
->
f_o
++;

120 
ma
->
f_o
 !ma->
cur_o
 &&

121 !
	`QAM_BEFORE_FIRST
(
ma
, 
gp
->
o
 + 1)) {

122 i((
t
 = 
	`__qam_posi
(
dbc
,

123 &
ma
->
f_o
, 
DB_LOCK_READ
, 0, &
exa
)) != 0)

124 
r
;

125 i(

->
ge
 !
NULL
 && (
t
 = 
	`__qam_ut
(
fe_dbp
,

126 

->
pgno
, cp->
ge
, 
dbc
->
iܙy
)) != 0)

127 
r
;

129 i(
exa
 == 1)

131 i(

->
ge
 !
NULL
 &&

132 
c_ext
 !0 && 
ma
->
f_o
 %ec_ext == 0)

133 i((
t
 =

134 
	`__qam_emove
(
fe_dbp
, 

->
pgno
)) != 0)

135 
r
;

136 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

137 
ma
->
f_o
++;

138 i(
ma
->
f_o
 =
RECNO_OOB
)

139 
ma
->
f_o
++;

143 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

144 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

145 
t
 = 
t_t
;

146 i(
t
 != 0)

147 
out
;

149 
de
: *
lp
 = 
gp
->
ev_l
;

150 
t
 = 0;

153 
r
: ()
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

154 ()
	`__LPUT
(
dbc
, 
lock
);

157 
out
: 
REC_CLOSE
;

158 
	}
}

168 
	$__qam_mvr_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

169 
DB_ENV
 *
dbv
;

170 
DBT
 *
db
;

171 
DB_LSN
 *
lp
;

172 
db_cs
 

;

173 *
fo
;

175 
__qam_mvr_gs
 *
gp
;

176 
DB
 *
fe_dbp
;

177 
DBC
 *
dbc
;

178 
DB_LSN
 
unc_l
;

179 
DB_LOCK
 
lock
;

180 
DB_MPOOLFILE
 *
mpf
;

181 
QMETA
 *
ma
;

182 
QUEUE_CURSOR
 *

;

183 
db_pgno_t
 
mg
;

184 
cmp_n
, 
cmp_p
, 
exa
, 
t
;

186 
	`REC_PRINT
(
__qam_mvr_t
);

187 
	`REC_INTRO
(
__qam_mvr_ad
, 1, 1);

189 
mg
 = ((
QUEUE
 *)
fe_dbp
->
q_
)->
q_ma
;

191 i((
t
 = 
	`__db_lg
(
dbc
,

192 
LCK_ROLLBACK
, 
mg
, 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

193 
de
;

194 i((
t
 = 
	`__memp_fg
(
mpf
, &
mg
, 
NULL
, 0, &
ma
)) != 0) {

195 i(
	`DB_REDO
(

)) {

196 i((
t
 = 
	`__memp_fg
(
mpf
, &
mg
, 
NULL
,

197 
DB_MPOOL_CREATE
, &
ma
)) != 0) {

198 ()
	`__LPUT
(
dbc
, 
lock
);

199 
out
;

201 
ma
->
dbma
.
pgno
 = 
mg
;

202 
ma
->
dbma
.
ty
 = 
P_QAMMETA
;

204 *
lp
 = 
gp
->
ev_l
;

205 
t
 = 
	`__LPUT
(
dbc
, 
lock
);

206 
out
;

210 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
ma
));

211 
cmp_p
 = 
	`LOG_COMPARE
(&
	`LSN
(
ma
), &
gp
->
m
);

223 i(
	`DB_UNDO
(

)) {

224 i((
gp
->
code
 & 
QAM_TRUNCATE
&& 
cmp_n
 <= 0) {

225 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

226 
ma
->
f_o
 = 
gp
->
d_f
;

227 
ma
->
cur_o
 = 
gp
->
d_cur
;

228 
	`LSN
(
ma

gp
->
m
;

231 
unc_l
 = ((
DB_TXNHEAD
 *)
fo
)->trunc_lsn;

232 i(!
	`IS_ZERO_LSN
(
unc_l
) &&

233 
	`LOG_COMPARE
(&
unc_l
, &
	`LSN
(
ma
)) < 0) {

234 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

235 
	`LSN
(
ma

gp
->
m
;

237 } i(

 =
DB_TXN_APPLY
 || 
cmp_p
 == 0) {

238 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

239 

 = (
QUEUE_CURSOR
 *)
dbc
->

;

240 i((
gp
->
code
 & 
QAM_SETFIRST
) &&

241 
ma
->
f_o
 =
gp
->
d_f
) {

242 i(
gp
->
d_f
 >rgp->
w_f
)

243 
ma
->
f_o
 = 
gp
->
w_f
;

245 i((
t
 = 
	`__qam_posi
(
dbc
,

246 &
ma
->
f_o
, 
DB_LOCK_READ
, 0,

247 &
exa
)) != 0)

248 
r
;

249 i(!
exa
)

250 
ma
->
f_o
 = 
gp
->
w_f
;

251 i(

->
ge
 !
NULL
 &&

252 (
t
 = 
	`__qam_ut
(
fe_dbp
,

253 

->
pgno
, cp->
ge
, 
dbc
->
iܙy
)) != 0)

254 
r
;

258 i((
gp
->
code
 & 
QAM_SETCUR
) &&

259 
ma
->
cur_o
 =
gp
->
d_cur
) {

260 i(
gp
->
d_cur
 <rgp->
w_cur
)

261 
ma
->
cur_o
 = 
gp
->
w_cur
;

263 i((
t
 = 
	`__qam_posi
(
dbc
, &
ma
->
cur_o
,

264 
DB_LOCK_READ
, 0, &
exa
)) != 0)

265 
r
;

266 i(!
exa
)

267 
ma
->
cur_o
 = 
gp
->
w_cur
;

268 i(

->
ge
 !
NULL
 &&

269 (
t
 = 
	`__qam_ut
(
fe_dbp
,

270 

->
pgno
, cp->
ge
, 
dbc
->
iܙy
)) != 0)

271 
r
;

275 
ma
->
dbma
.
l
 = *
lp
;

278 i((
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)) != 0)

279 
out
;

281 i((
t
 = 
	`__LPUT
(
dbc
, 
lock
)) != 0)

282 
out
;

284 
de
: *
lp
 = 
gp
->
ev_l
;

285 
t
 = 0;

288 
r
: ()
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

289 ()
	`__LPUT
(
dbc
, 
lock
);

292 
out
: 
REC_CLOSE
;

293 
	}
}

304 
	$__qam_d_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

305 
DB_ENV
 *
dbv
;

306 
DBT
 *
db
;

307 
DB_LSN
 *
lp
;

308 
db_cs
 

;

309 *
fo
;

311 
__qam_d_gs
 *
gp
;

312 
DB
 *
fe_dbp
;

313 
DBC
 *
dbc
;

314 
DB_LOCK
 
lock
;

315 
DB_MPOOLFILE
 *
mpf
;

316 
QAMDATA
 *
qp
;

317 
QMETA
 *
ma
;

318 
QPAGE
 *
g
;

319 
db_pgno_t
 
mg
;

320 
cmp_n
, 
t
, 
t_t
;

322 
	`COMPQUIET
(
g
, 
NULL
);

323 
	`REC_PRINT
(
__qam_d_t
);

324 
	`REC_INTRO
(
__qam_d_ad
, 1, 1);

326 i((
t
 = 
	`__qam_fg
(
fe_dbp
, &
gp
->
pgno
, 
NULL
,

327 
DB_MPOOL_CREATE
, &
g
)) != 0)

328 
out
;

330 i(
g
->
pgno
 =
PGNO_INVALID
) {

331 
	`QAM_DIRTY
(
fe_dbp
, 
gp
->
pgno
, &
g
);

332 
g
->
pgno
 = 
gp
->pgno;

333 
g
->
ty
 = 
P_QAMDATA
;

336 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

338 i(
	`DB_UNDO
(

)) {

340 
mg
 = ((
QUEUE
 *)
fe_dbp
->
q_
)->
q_ma
;

341 i((
t
 = 
	`__db_lg
(
dbc
,

342 
LCK_ROLLBACK
, 
mg
, 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

343 
r
;

344 i((
t
 = 
	`__memp_fg
(
mpf
, &
mg
, 
NULL
,

345 
DB_MPOOL_EDIT
, &
ma
)) != 0) {

346 ()
	`__LPUT
(
dbc
, 
lock
);

347 
r
;

349 i(
ma
->
f_o
 =
RECNO_OOB
 ||

350 (
	`QAM_BEFORE_FIRST
(
ma
, 
gp
->
o
) &&

351 (
ma
->
f_o
 <ma->
cur_o
 ||

352 
ma
->
f_o
 -

353 
gp
->
o
 <rgp->- 
ma
->
cur_o
))) {

354 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

355 
ma
->
f_o
 = 
gp
->
o
;

356 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

358 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

359 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

360 
t
 = 
t_t
;

361 i(
t
 != 0)

362 
r
;

365 
	`QAM_DIRTY
(
fe_dbp
, 
g
->
pgno
, &pagep);

366 
qp
 = 
	`QAM_GET_RECORD
(
fe_dbp
, 
g
, 
gp
->
dx
);

367 
	`F_SET
(
qp
, 
QAM_VALID
);

376 i(
cmp_n
 <0 && 

 =
DB_TXN_BACKWARD_ROLL
)

377 
	`LSN
(
g

gp
->
l
;

378 } i(

 =
DB_TXN_APPLY
 || (
cmp_n
 > 0 && 
	`DB_REDO
(op))) {

380 
	`QAM_DIRTY
(
fe_dbp
, 
g
->
pgno
, &pagep);

381 
qp
 = 
	`QAM_GET_RECORD
(
fe_dbp
, 
g
, 
gp
->
dx
);

382 
	`F_CLR
(
qp
, 
QAM_VALID
);

389 i(

 =
DB_TXN_APPLY
)

390 
	`LSN
(
g
*
lp
;

392 i((
t
 = 
	`__qam_ut
(
fe_dbp
, 
gp
->
pgno
, 
g
, 
dbc
->
iܙy
)) != 0)

393 
out
;

395 
de
: *
lp
 = 
gp
->
ev_l
;

396 
t
 = 0;

399 
r
: ()
	`__qam_ut
(
fe_dbp
, 
gp
->
pgno
, 
g
, 
dbc
->
iܙy
);

401 
out
: 
REC_CLOSE
;

402 
	}
}

412 
	$__qam_dext_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

413 
DB_ENV
 *
dbv
;

414 
DBT
 *
db
;

415 
DB_LSN
 *
lp
;

416 
db_cs
 

;

417 *
fo
;

419 
__qam_dext_gs
 *
gp
;

420 
DB
 *
fe_dbp
;

421 
DBC
 *
dbc
;

422 
DB_LOCK
 
lock
;

423 
DB_MPOOLFILE
 *
mpf
;

424 
QAMDATA
 *
qp
;

425 
QMETA
 *
ma
;

426 
QPAGE
 *
g
;

427 
db_pgno_t
 
mg
;

428 
cmp_n
, 
t
, 
t_t
;

430 
	`COMPQUIET
(
g
, 
NULL
);

431 
	`REC_PRINT
(
__qam_dext_t
);

432 
	`REC_INTRO
(
__qam_dext_ad
, 1, 1);

434 i((
t
 = 
	`__qam_fg
(
fe_dbp
, &
gp
->
pgno
, 
NULL
,

435 
	`DB_REDO
(

? 0 : 
DB_MPOOL_CREATE
, &
g
)) != 0) {

440 i(
	`DB_REDO
(

&& (
t
 =
DB_PAGE_NOTFOUND
 || =
ENOENT
))

441 
de
;

442 
out
;

445 i(
g
->
pgno
 =
PGNO_INVALID
) {

446 
	`QAM_DIRTY
(
fe_dbp
, 
gp
->
pgno
, &
g
);

447 
g
->
pgno
 = 
gp
->pgno;

448 
g
->
ty
 = 
P_QAMDATA
;

451 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

453 i(
	`DB_UNDO
(

)) {

455 
mg
 = ((
QUEUE
 *)
fe_dbp
->
q_
)->
q_ma
;

456 i((
t
 = 
	`__db_lg
(
dbc
,

457 
LCK_ROLLBACK
, 
mg
, 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

458 
r
;

459 i((
t
 = 
	`__memp_fg
(
mpf
, &
mg
, 
NULL
,

460 
DB_MPOOL_EDIT
, &
ma
)) != 0) {

461 ()
	`__LPUT
(
dbc
, 
lock
);

462 
r
;

464 i(
ma
->
f_o
 =
RECNO_OOB
 ||

465 (
	`QAM_BEFORE_FIRST
(
ma
, 
gp
->
o
) &&

466 (
ma
->
f_o
 <ma->
cur_o
 ||

467 
ma
->
f_o
 -

468 
gp
->
o
 <rgp->- 
ma
->
cur_o
))) {

469 
ma
->
f_o
 = 
gp
->
o
;

470 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

472 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

473 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

474 
t
 = 
t_t
;

475 i(
t
 != 0)

476 
r
;

478 
	`QAM_DIRTY
(
fe_dbp
, 
g
->
pgno
, &pagep);

479 i((
t
 = 
	`__qam_pem
(
dbc
, 
g
,

480 
gp
->
dx
,rgp->
o
, &gp->
da
)) != 0)

481 
r
;

490 i(
cmp_n
 <0 && 

 =
DB_TXN_BACKWARD_ROLL
)

491 
	`LSN
(
g

gp
->
l
;

492 } i(

 =
DB_TXN_APPLY
 || (
cmp_n
 > 0 && 
	`DB_REDO
(op))) {

493 
	`QAM_DIRTY
(
fe_dbp
, 
g
->
pgno
, &pagep);

495 
qp
 = 
	`QAM_GET_RECORD
(
fe_dbp
, 
g
, 
gp
->
dx
);

496 
	`F_CLR
(
qp
, 
QAM_VALID
);

503 i(

 =
DB_TXN_APPLY
)

504 
	`LSN
(
g
*
lp
;

506 i((
t
 = 
	`__qam_ut
(
fe_dbp
, 
gp
->
pgno
, 
g
, 
dbc
->
iܙy
)) != 0)

507 
out
;

509 
de
: *
lp
 = 
gp
->
ev_l
;

510 
t
 = 0;

513 
r
: ()
	`__qam_ut
(
fe_dbp
, 
gp
->
pgno
, 
g
, 
dbc
->
iܙy
);

515 
out
: 
REC_CLOSE
;

516 
	}
}

526 
	$__qam_add_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

527 
DB_ENV
 *
dbv
;

528 
DBT
 *
db
;

529 
DB_LSN
 *
lp
;

530 
db_cs
 

;

531 *
fo
;

533 
__qam_add_gs
 *
gp
;

534 
DB
 *
fe_dbp
;

535 
DBC
 *
dbc
;

536 
DB_MPOOLFILE
 *
mpf
;

537 
QAMDATA
 *
qp
;

538 
QMETA
 *
ma
;

539 
QPAGE
 *
g
;

540 
db_pgno_t
 
mg
;

541 
cmp_n
, 
t
;

543 
	`COMPQUIET
(
g
, 
NULL
);

544 
	`REC_PRINT
(
__qam_add_t
);

545 
	`REC_INTRO
(
__qam_add_ad
, 1, 1);

547 i((
t
 = 
	`__qam_fg
(
fe_dbp
, &
gp
->
pgno
, 
NULL
,

548 
	`DB_UNDO
(

? 0 : 
DB_MPOOL_CREATE
, &
g
)) != 0) {

553 i(
	`DB_UNDO
(

&& (
t
 =
DB_PAGE_NOTFOUND
 || =
ENOENT
))

554 
de
;

555 
out
;

558 i(
g
->
pgno
 =
PGNO_INVALID
) {

559 
	`QAM_DIRTY
(
fe_dbp
, 
gp
->
pgno
, &
g
);

560 
g
->
pgno
 = 
gp
->pgno;

561 
g
->
ty
 = 
P_QAMDATA
;

564 
cmp_n
 = 
	`LOG_COMPARE
(
lp
, &
	`LSN
(
g
));

566 i(
	`DB_REDO
(

)) {

568 
mg
 = ((
QUEUE
 *)
fe_dbp
->
q_
)->
q_ma
;

569 i((
t
 = 
	`__memp_fg
(
mpf
, &
mg
, 
NULL
,

570 0, &
ma
)) != 0)

571 
r
;

572 i(
	`QAM_BEFORE_FIRST
(
ma
, 
gp
->
o
)) {

573 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

574 
ma
->
f_o
 = 
gp
->
o
;

576 i(
gp
->
o
 =
ma
->
cur_o
 ||

577 
	`QAM_AFTER_CURRENT
(
ma
, 
gp
->
o
)) {

578 
	`REC_DIRTY
(
mpf
, 
dbc
->
iܙy
, &
ma
);

579 
ma
->
cur_o
 = 
gp
->
o
 + 1;

581 i((
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
)) != 0)

582 
r
;

585 i(

 =
DB_TXN_APPLY
 || 
cmp_n
 > 0) {

586 
	`QAM_DIRTY
(
fe_dbp
, 
g
->
pgno
, &pagep);

588 i((
t
 = 
	`__qam_pem
(
dbc
,

589 
g
, 
gp
->
dx
,rgp->
o
, &gp->
da
)) != 0)

590 
r
;

597 i(

 =
DB_TXN_APPLY
)

598 
	`LSN
(
g
*
lp
;

600 } i(
	`DB_UNDO
(

)) {

606 i(
gp
->
dda
.
size
 != 0) {

607 
	`QAM_DIRTY
(
fe_dbp
, 
g
->
pgno
, &pagep);

608 i((
t
 = 
	`__qam_pem
(
dbc
, 
g
,

609 
gp
->
dx
,rgp->
o
, &gp->
dda
)) != 0)

610 
r
;

612 i(!(
gp
->
vag
 & 
QAM_VALID
)) {

613 
qp
 = 
	`QAM_GET_RECORD
(

614 
fe_dbp
, 
g
, 
gp
->
dx
);

615 
	`F_CLR
(
qp
, 
QAM_VALID
);

618 
	`QAM_DIRTY
(
fe_dbp
, 
g
->
pgno
, &pagep);

619 
qp
 = 
	`QAM_GET_RECORD
(
fe_dbp
, 
g
, 
gp
->
dx
);

620 
qp
->
ags
 = 0;

630 i(
cmp_n
 <0 && 

 =
DB_TXN_BACKWARD_ROLL
)

631 
	`LSN
(
g

gp
->
l
;

634 i((
t
 = 
	`__qam_ut
(
fe_dbp
, 
gp
->
pgno
, 
g
, 
dbc
->
iܙy
)) != 0)

635 
out
;

637 
de
: *
lp
 = 
gp
->
ev_l
;

638 
t
 = 0;

641 
r
: ()
	`__qam_ut
(
fe_dbp
, 
gp
->
pgno
, 
g
, 
dbc
->
iܙy
);

644 
out
: 
REC_CLOSE
;

645 
	}
}

	@../qam/qam_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/mp.h
"

16 
	~"dbc/qam.h
"

18 #ifde
HAVE_STATISTICS


26 
	$__qam_
(
dbc
, 
p
, 
ags
)

27 
DBC
 *
dbc
;

28 *
p
;

29 
u_t32_t
 
ags
;

31 
DB
 *
dbp
;

32 
DB_LOCK
 
lock
;

33 
DB_MPOOLFILE
 *
mpf
;

34 
DB_QUEUE_STAT
 *

;

35 
PAGE
 *
h
;

36 
QAMDATA
 *
qp
, *

;

37 
QMETA
 *
ma
;

38 
QUEUE
 *
t
;

39 
db_dx_t
 
dx
;

40 
db_pgno_t
 
f
, 
ϡ
, 
pgno
, 
pg_ext
, 

;

41 
u_t32_t
 
_n
;

42 
t
, 
t_t
;

44 
dbp
 = 
dbc
->dbp;

46 
	`LOCK_INIT
(
lock
);

47 
mpf
 = 
dbp
->mpf;

48 

 = 
NULL
;

49 
t
 = 
dbp
->
q_
;

51 i(
p
 =
NULL
)

55 i((
t
 = 
	`__os_umloc
(
dbp
->
dbv
, (*

), &sp)) != 0)

56 
r
;

57 
	`memt
(

, 0, (*sp));

59 
_n
 = ((
QUEUE
 *)
dbp
->
q_
)->re_len;

62 i((
t
 = 
	`__db_lg
(
dbc
, 0, 
t
->
q_ma
, 
DB_LOCK_READ
, 0, &
lock
)) != 0)

63 
r
;

64 i((
t
 = 
	`__memp_fg
(
mpf
, &
t
->
q_ma
, 
dbc
->
txn
, 0, &
ma
)) != 0)

65 
r
;

67 i(
ags
 =
DB_FAST_STAT
) {

68 

->
qs_nkeys
 = 
ma
->
dbma
.
key_cou
;

69 

->
qs_nda
 = 
ma
->
dbma
.
cd_cou
;

70 
ma_ly
;

73 
f
 = 
	`QAM_RECNO_PAGE
(
dbp
, 
ma
->
f_o
);

74 
ϡ
 = 
	`QAM_RECNO_PAGE
(
dbp
, 
ma
->
cur_o
);

76 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

77 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

78 
t
 = 
t_t
;

79 i(
t
 != 0)

80 
r
;

82 
pgno
 = 
f
;

83 i(
f
 > 
ϡ
)

84 

 = 
	`QAM_RECNO_PAGE
(
dbp
, 
UINT32_MAX
);

86 

 = 
ϡ
;

89 
pg_ext
 = ((
QUEUE
 *)
dbp
->
q_
)->
ge_ext
;

90 
beg
:

92 ; 
pgno
 <

; ++pgno) {

93 i((
t
 =

94 
	`__db_lg
(
dbc
, 0, 
pgno
, 
DB_LOCK_READ
, 0, &
lock
)) != 0)

95 
r
;

96 
t
 = 
	`__qam_fg
(
dbp
, &
pgno
, 
dbc
->
txn
, 0, &
h
);

97 i(
t
 =
ENOENT
) {

98 
pgno
 +
pg_ext
 - 1;

101 i(
t
 =
DB_PAGE_NOTFOUND
) {

102 i(
pg_ext
 == 0) {

103 i(
pgno
 !

 && 
f
 !
ϡ
)

104 
r
;

105 
t
 = 0;

108 
pgno
 +(
pg_ext
 - ((pgno - 1) %g_ext)) - 1;

111 i(
t
 != 0)

112 
r
;

114 ++

->
qs_ges
;

116 

 = (
QAMDATA
 *)((
u_t8_t
 *)
h
 + 
dbp
->
pgsize
 - 
_n
);

117 
dx
 = 0, 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
h
, indx);

118 
qp
 <

;

119 ++
dx
, 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
h
, indx)) {

120 i(
	`F_ISSET
(
qp
, 
QAM_VALID
))

121 

->
qs_nda
++;

123 

->
qs_pg
 +
_n
;

126 
t
 = 
	`__qam_ut
(
dbp
, 
pgno
, 
h
, 
dbc
->
iܙy
);

127 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

128 
t
 = 
t_t
;

129 i(
t
 != 0)

130 
r
;

133 i((
t
 = 
	`__LPUT
(
dbc
, 
lock
)) != 0)

134 
r
;

135 i(
f
 > 
ϡ
) {

136 
pgno
 = 1;

137 

 = 
ϡ
;

138 
f
 = 
ϡ
;

139 
beg
;

143 i((
t
 = 
	`__db_lg
(
dbc
,

144 0, 
t
->
q_ma
, 
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
) ?

145 
DB_LOCK_READ
 : 
DB_LOCK_WRITE
, 0, &
lock
)) != 0)

146 
r
;

147 i((
t
 = 
	`__memp_fg
(
mpf
, &
t
->
q_ma
, 
dbc
->
txn
,

148 
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
? 0 : 
DB_MPOOL_DIRTY
, &
ma
)) != 0)

149 
r
;

151 i(!
	`F_ISSET
(
dbp
, 
DB_AM_RDONLY
))

152 
ma
->
dbma
.
key_cou
 =

153 
ma
->
dbma
.
cd_cou
 = 

->
qs_nda
;

154 

->
qs_nkeys
 = sp->
qs_nda
;

156 
ma_ly
:

158 

->
qs_magic
 = 
ma
->
dbma
.
magic
;

159 

->
qs_vsi
 = 
ma
->
dbma
.
vsi
;

160 

->
qs_maags
 = 
ma
->
dbma
.
ags
;

161 

->
qs_gesize
 = 
ma
->
dbma
.
gesize
;

162 

->
qs_exsize
 = 
ma
->
ge_ext
;

163 

->
qs__n
 = 
ma
->
_n
;

164 

->
qs__d
 = 
ma
->
_d
;

165 

->
qs_f_o
 = 
ma
->
f_o
;

166 

->
qs_cur_o
 = 
ma
->
cur_o
;

169 
t
 = 
	`__memp_ut
(
mpf
, 
ma
, 
dbc
->
iܙy
);

170 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

171 
t
 = 
t_t
;

172 i(
t
 != 0)

173 
r
;

175 *(
DB_QUEUE_STAT
 **)
p
 = 

;

178 
r
: i(

 !
NULL
)

179 
	`__os_u
(
dbp
->
dbv
, 

);

182 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lock
)!0 && 
t
 == 0)

183 
t
 = 
t_t
;

185  (
t
);

186 
	}
}

195 
	$__qam__t
(
dbc
, 
ags
)

196 
DBC
 *
dbc
;

197 
u_t32_t
 
ags
;

199 
DB
 *
dbp
;

200 
DB_ENV
 *
dbv
;

201 
DB_QUEUE_STAT
 *

;

202 
t
;

204 
dbp
 = 
dbc
->dbp;

205 
dbv
 = 
dbp
->dbenv;

207 i((
t
 = 
	`__qam_
(
dbc
, &

, 
	`LF_ISSET
(
DB_FAST_STAT
))) != 0)

208  (
t
);

210 i(
	`LF_ISSET
(
DB_STAT_ALL
)) {

211 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

212 
	`__db_msg
(
dbv
, "Default Queue database information:");

214 
	`__db_msg
(
dbv
, "%lx\tQueumaginumb", (
u_lg
)

->
qs_magic
);

215 
	`__db_msg
(
dbv
, "%lu\tQueuvsiڂumb", (
u_lg
)

->
qs_vsi
);

216 
	`__db_dl
(
dbv
, "Fixed-ngthecd size", (
u_lg
)

->
qs__n
);

217 
	`__db_msg
(
dbv
, "%#x\tFixed-ngthecdad", ()

->
qs__d
);

218 
	`__db_dl
(
dbv
,

219 "Undlyg dabaagsize", (
u_lg
)

->
qs_gesize
);

220 
	`__db_dl
(
dbv
,

221 "Undlyg dabax size", (
u_lg
)

->
qs_exsize
);

222 
	`__db_dl
(
dbv
,

223 "Numb ocdhdaba", (
u_lg
)

->
qs_nkeys
);

224 
	`__db_dl
(
dbv
, "Numb odabaages", (
u_lg
)

->
qs_ges
);

225 
	`__db_dl_p
(
dbv
,

227 (
u_lg
)

->
qs_pg
,

228 
	`DB_PCT_PG
(

->
qs_pg
, sp->
qs_ges
, sp->
qs_gesize
), "ff");

229 
	`__db_msg
(
dbv
,

230 "%lu\tF undedecd", (
u_lg
)

->
qs_f_o
);

231 
	`__db_msg
(
dbv
,

232 "%lu\tNexavaab˄ecdumb", (
u_lg
)

->
qs_cur_o
);

234 
	`__os_u
(
dbv
, 

);

237 
	}
}

242 
	$__qam_
(
dbc
, 
p
, 
ags
)

243 
DBC
 *
dbc
;

244 *
p
;

245 
u_t32_t
 
ags
;

247 
	`COMPQUIET
(
p
, 
NULL
);

248 
	`COMPQUIET
(
ags
, 0);

250  (
	`__db__n_but
(
dbc
->
dbp
->
dbv
));

251 
	}
}

	@../qam/qam_stub.c

9 #idef 
HAVE_QUEUE


10 
	~"db_cfig.h
"

12 
	~"db_t.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/qam.h
"

29 
	$__db_no_queue_am
(
dbv
)

30 
DB_ENV
 *
dbv
;

32 
	`__db_rx
(
dbv
,

34  (
DB_OPNOTSUP
);

35 
	}
}

38 
	$__db_queue
(
dbp
, 
ags
)

39 
DB
 *
dbp
;

40 
u_t32_t
 
ags
;

42 
	`COMPQUIET
(
ags
, 0);

43  (
	`__db_no_queue_am
(
dbp
->
dbv
));

44 
	}
}

47 
	$__qam_31_qamma
(
dbp
, 
_me
, 
buf
)

48 
DB
 *
dbp
;

49 *
_me
;

50 
u_t8_t
 *
buf
;

52 
	`COMPQUIET
(
_me
, 
NULL
);

53 
	`COMPQUIET
(
buf
, 
NULL
);

54  (
	`__db_no_queue_am
(
dbp
->
dbv
));

55 
	}
}

58 
	$__qam_32_qamma
(
dbp
, 
_me
, 
buf
)

59 
DB
 *
dbp
;

60 *
_me
;

61 
u_t8_t
 *
buf
;

63 
	`COMPQUIET
(
_me
, 
NULL
);

64 
	`COMPQUIET
(
buf
, 
NULL
);

65  (
	`__db_no_queue_am
(
dbp
->
dbv
));

66 
	}
}

69 
	$__qam_nd
(
dbc
, 
key
, 
da
)

70 
DBC
 *
dbc
;

71 
DBT
 *
key
, *
da
;

73 
	`COMPQUIET
(
key
, 
NULL
);

74 
	`COMPQUIET
(
da
, 
NULL
);

75  (
	`__db_no_queue_am
(
dbc
->
dbp
->
dbv
));

76 
	}
}

79 
	$__qamc_dup
(
ig_dbc
, 
w_dbc
)

80 
DBC
 *
ig_dbc
, *
w_dbc
;

82 
	`COMPQUIET
(
w_dbc
, 
NULL
);

83  (
	`__db_no_queue_am
(
ig_dbc
->
dbp
->
dbv
));

84 
	}
}

87 
	$__qamc_
(
dbc
)

88 
DBC
 *
dbc
;

90  (
	`__db_no_queue_am
(
dbc
->
dbp
->
dbv
));

91 
	}
}

94 
	$__qam_db_o
(
dbp
, 
ags
)

95 
DB
 *
dbp
;

96 
u_t32_t
 
ags
;

98 
	`COMPQUIET
(
dbp
, 
NULL
);

99 
	`COMPQUIET
(
ags
, 0);

101 
	}
}

104 
	$__qam_db_
(
dbp
)

105 
DB
 *
dbp
;

107 
	`COMPQUIET
(
dbp
, 
NULL
);

109 
	}
}

112 
	$__qam_ex_mes
(
dbv
, 
me
, 
mip
)

113 
DB_ENV
 *
dbv
;

114 *
me
;

115 ***
mip
;

117 
	`COMPQUIET
(
me
, 
NULL
);

118 
	`COMPQUIET
(
mip
, 
NULL
);

119  (
	`__db_no_queue_am
(
dbv
));

120 
	}
}

123 
	$__qam_g_fi
(
dbp
, 
fip
)

124 
DB
 *
dbp
;

125 
QUEUE_FILELIST
 **
fip
;

127 
	`COMPQUIET
(
fip
, 
NULL
);

128  (
	`__db_no_queue_am
(
dbp
->
dbv
));

129 
	}
}

132 
	$__qam__t
(
dbv
, 
dbp
, 
dbsiz
)

133 
DB_ENV
 *
dbv
;

134 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

135 
size_t
 *
dbsiz
;

137 
	`COMPQUIET
(
dbv
, 
NULL
);

138 
	`COMPQUIET
(
dbp
, 
NULL
);

139 
	`COMPQUIET
(
dbsiz
, 
NULL
);

141 
	}
}

144 
	$__qam__cov
(
dbv
, 
dbp
, 
dbsiz
)

145 
DB_ENV
 *
dbv
;

146 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

147 
size_t
 *
dbsiz
;

149 
	`COMPQUIET
(
dbv
, 
NULL
);

150 
	`COMPQUIET
(
dbp
, 
NULL
);

151 
	`COMPQUIET
(
dbsiz
, 
NULL
);

153 
	}
}

156 
	$__qam_machk
(
dbp
, 
me
, 
qma
)

157 
DB
 *
dbp
;

158 cڡ *
me
;

159 
QMETA
 *
qma
;

161 
	`COMPQUIET
(
me
, 
NULL
);

162 
	`COMPQUIET
(
qma
, 
NULL
);

163  (
	`__db_no_queue_am
(
dbp
->
dbv
));

164 
	}
}

167 
	$__qam_w_fe
(
dbp
, 
txn
, 
fhp
, 
me
)

168 
DB
 *
dbp
;

169 
DB_TXN
 *
txn
;

170 
DB_FH
 *
fhp
;

171 cڡ *
me
;

173 
	`COMPQUIET
(
txn
, 
NULL
);

174 
	`COMPQUIET
(
fhp
, 
NULL
);

175 
	`COMPQUIET
(
me
, 
NULL
);

176  (
	`__db_no_queue_am
(
dbp
->
dbv
));

177 
	}
}

180 
	$__qam_ݒ
(
dbp
, 
txn
, 
me
, 
ba_pgno
, 
mode
, 
ags
)

181 
DB
 *
dbp
;

182 
DB_TXN
 *
txn
;

183 cڡ *
me
;

184 
db_pgno_t
 
ba_pgno
;

185 
mode
;

186 
u_t32_t
 
ags
;

188 
	`COMPQUIET
(
txn
, 
NULL
);

189 
	`COMPQUIET
(
me
, 
NULL
);

190 
	`COMPQUIET
(
ba_pgno
, 0);

191 
	`COMPQUIET
(
mode
, 0);

192 
	`COMPQUIET
(
ags
, 0);

193  (
	`__db_no_queue_am
(
dbp
->
dbv
));

194 
	}
}

197 
	$__qam_pg_out
(
dbv
, 
pg
, 

, 
cook
)

198 
DB_ENV
 *
dbv
;

199 
db_pgno_t
 
pg
;

200 *

;

201 
DBT
 *
cook
;

203 
	`COMPQUIET
(
pg
, 0);

204 
	`COMPQUIET
(

, 
NULL
);

205 
	`COMPQUIET
(
cook
, 
NULL
);

206  (
	`__db_no_queue_am
(
dbv
));

207 
	}
}

210 
	$__qam_lvage
(
dbp
, 
vdp
, 
pgno
, 
h
, 
hd
, 
back
, 
ags
)

211 
DB
 *
dbp
;

212 
VRFY_DBINFO
 *
vdp
;

213 
db_pgno_t
 
pgno
;

214 
PAGE
 *
h
;

215 *
hd
;

216 (*
back

	`__P
((*, const *));

217 
u_t32_t
 
ags
;

219 
	`COMPQUIET
(
vdp
, 
NULL
);

220 
	`COMPQUIET
(
pgno
, 0);

221 
	`COMPQUIET
(
h
, 
NULL
);

222 
	`COMPQUIET
(
hd
, 
NULL
);

223 
	`COMPQUIET
(
back
, 
NULL
);

224 
	`COMPQUIET
(
ags
, 0);

225  (
	`__db_no_queue_am
(
dbp
->
dbv
));

226 
	}
}

229 
	$__qam_t_ext_da
(
dbp
, 
me
)

230 
DB
 *
dbp
;

231 cڡ *
me
;

233 
	`COMPQUIET
(
me
, 
NULL
);

234  (
	`__db_no_queue_am
(
dbp
->
dbv
));

235 
	}
}

238 
	$__qam_
(
dbc
, 
p
, 
ags
)

239 
DBC
 *
dbc
;

240 *
p
;

241 
u_t32_t
 
ags
;

243 
	`COMPQUIET
(
p
, 
NULL
);

244 
	`COMPQUIET
(
ags
, 0);

245  (
	`__db_no_queue_am
(
dbc
->
dbp
->
dbv
));

246 
	}
}

249 
	$__qam__t
(
dbc
, 
ags
)

250 
DBC
 *
dbc
;

251 
u_t32_t
 
ags
;

253 
	`COMPQUIET
(
ags
, 0);

254  (
	`__db_no_queue_am
(
dbc
->
dbp
->
dbv
));

255 
	}
}

258 
	$__qam_sync
(
dbp
)

259 
DB
 *
dbp
;

261  (
	`__db_no_queue_am
(
dbp
->
dbv
));

262 
	}
}

265 
	$__qam_un
(
dbc
, 
coup
)

266 
DBC
 *
dbc
;

267 
u_t32_t
 *
coup
;

269 
	`COMPQUIET
(
dbc
, 
NULL
);

270 
	`COMPQUIET
(
coup
, 
NULL
);

271  (
	`__db_no_queue_am
(
dbc
->
dbp
->
dbv
));

272 
	}
}

275 
	$__qam_vrfy_da
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

276 
DB
 *
dbp
;

277 
VRFY_DBINFO
 *
vdp
;

278 
QPAGE
 *
h
;

279 
db_pgno_t
 
pgno
;

280 
u_t32_t
 
ags
;

282 
	`COMPQUIET
(
vdp
, 
NULL
);

283 
	`COMPQUIET
(
h
, 
NULL
);

284 
	`COMPQUIET
(
pgno
, 0);

285 
	`COMPQUIET
(
ags
, 0);

286  (
	`__db_no_queue_am
(
dbp
->
dbv
));

287 
	}
}

290 
	$__qam_vrfy_ma
(
dbp
, 
vdp
, 
ma
, 
pgno
, 
ags
)

291 
DB
 *
dbp
;

292 
VRFY_DBINFO
 *
vdp
;

293 
QMETA
 *
ma
;

294 
db_pgno_t
 
pgno
;

295 
u_t32_t
 
ags
;

297 
	`COMPQUIET
(
vdp
, 
NULL
);

298 
	`COMPQUIET
(
ma
, 
NULL
);

299 
	`COMPQUIET
(
pgno
, 0);

300 
	`COMPQUIET
(
ags
, 0);

301  (
	`__db_no_queue_am
(
dbp
->
dbv
));

302 
	}
}

305 
	$__qam_vrfy_ruu
(
dbp
, 
vdp
, 
ags
)

306 
DB
 *
dbp
;

307 
VRFY_DBINFO
 *
vdp
;

308 
u_t32_t
 
ags
;

310 
	`COMPQUIET
(
vdp
, 
NULL
);

311 
	`COMPQUIET
(
ags
, 0);

312  (
	`__db_no_queue_am
(
dbp
->
dbv
));

313 
	}
}

316 
	$__qam_vrfy_wkqueue
(
dbp
, 
vdp
, 
hd
, 
back
, 
ags
)

317 
DB
 *
dbp
;

318 
VRFY_DBINFO
 *
vdp
;

319 *
hd
;

320 (*
back

	`__P
((*, const *));

321 
u_t32_t
 
ags
;

323 
	`COMPQUIET
(
vdp
, 
NULL
);

324 
	`COMPQUIET
(
hd
, 
NULL
);

325 
	`COMPQUIET
(
back
, 
NULL
);

326 
	`COMPQUIET
(
ags
, 0);

327  (
	`__db_no_queue_am
(
dbp
->
dbv
));

328 
	}
}

	@../qam/qam_upgrade.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_upgde.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/qam.h
"

23 
	$__qam_31_qamma
(
dbp
, 
_me
, 
buf
)

24 
DB
 *
dbp
;

25 *
_me
;

26 
u_t8_t
 *
buf
;

28 
QMETA31
 *
wma
;

29 
QMETA30
 *
dma
;

31 
	`COMPQUIET
(
dbp
, 
NULL
);

32 
	`COMPQUIET
(
_me
, 
NULL
);

34 
wma
 = (
QMETA31
 *)
buf
;

35 
dma
 = (
QMETA30
 *)
buf
;

41 
wma
->
c_ge
 = 
dma
->rec_page;

42 
wma
->
_d
 = 
dma
->re_pad;

43 
wma
->
_n
 = 
dma
->re_len;

44 
wma
->
cur_o
 = 
dma
->cur_recno;

45 
wma
->
f_o
 = 
dma
->first_recno;

46 
wma
->
t
 = 
dma
->start;

47 
	`memmove
(
wma
->
dbma
.
uid
,

48 
dma
->
dbma
.
uid
, (oldmeta->dbmeta.uid));

49 
wma
->
dbma
.
ags
 = 
dma
->dbmeta.flags;

50 
wma
->
dbma
.
cd_cou
 = 0;

51 
wma
->
dbma
.
key_cou
 = 0;

52 
	`ZERO_LSN
(
wma
->
dbma
.
unud3
);

55 
wma
->
dbma
.
vsi
 = 2;

58 
	}
}

67 
	$__qam_32_qamma
(
dbp
, 
_me
, 
buf
)

68 
DB
 *
dbp
;

69 *
_me
;

70 
u_t8_t
 *
buf
;

72 
QMETA32
 *
wma
;

73 
QMETA31
 *
dma
;

75 
	`COMPQUIET
(
dbp
, 
NULL
);

76 
	`COMPQUIET
(
_me
, 
NULL
);

78 
wma
 = (
QMETA32
 *)
buf
;

79 
dma
 = (
QMETA31
 *)
buf
;

86 
wma
->
f_o
 = 
dma
->first_recno;

87 
wma
->
cur_o
 = 
dma
->cur_recno;

88 
wma
->
_n
 = 
dma
->re_len;

89 
wma
->
_d
 = 
dma
->re_pad;

90 
wma
->
c_ge
 = 
dma
->rec_page;

91 
wma
->
ge_ext
 = 0;

93 
wma
->
cur_o
++;

94 i(
wma
->
f_o
 == 0)

95 
wma
->
f_o
 = 1;

98 
wma
->
dbma
.
vsi
 = 3;

101 
	}
}

	@../qam/qam_verify.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_vify.h
"

14 
	~"dbc/db_am.h
"

15 
	~"dbc/mp.h
"

16 
	~"dbc/qam.h
"

25 
	$__qam_vrfy_ma
(
dbp
, 
vdp
, 
ma
, 
pgno
, 
ags
)

26 
DB
 *
dbp
;

27 
VRFY_DBINFO
 *
vdp
;

28 
QMETA
 *
ma
;

29 
db_pgno_t
 
pgno
;

30 
u_t32_t
 
ags
;

32 
DB_ENV
 *
dbv
;

33 
QUEUE
 *
qp
;

34 
VRFY_PAGEINFO
 *
p
;

35 
db_pgno_t
 *
exs
, 
extid
, 
f
, 
ϡ
;

36 
size_t
 
n
;

37 
cou
, 
i
, 
isbad
, 
xs
, 
t
, 
t_t
;

38 *
buf
, **
mes
;

40 
	`COMPQUIET
(
cou
, 0);

42 
dbv
 = 
dbp
->dbenv;

43 
qp
 = (
QUEUE
 *)
dbp
->
q_
;

44 
exs
 = 
NULL
;

45 
f
 = 
ϡ
 = 0;

46 
isbad
 = 0;

47 
buf
 = 
NULL
;

48 
mes
 = 
NULL
;

50 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
pgno
, &
p
)) != 0)

51  (
t
);

57 i(!
	`F_ISSET
(
p
, 
VRFY_INCOMPLETE
))

58 
	`EPRINT
((
dbv
, "Page %lu: queue databases must be one-per-file",

59 (
u_lg
)
pgno
));

73 i(
	`DB_ALIGN
(
ma
->
_n
 + (
QAMDATA
- 1, (
u_t32_t
)) *

74 
ma
->
c_ge
 + 
	`QPAGE_SZ
(
dbp
> dbp->
pgsize
) {

75 
	`EPRINT
((
dbv
,

77 (
u_lg
)
pgno
, (u_lg)
ma
->
_n
));

78 
t
 = 
DB_VERIFY_FATAL
;

79 
r
;

86 
vdp
->
_d
 = 
ma
->re_pad;

87 
qp
->
_d
 = ()
ma
->re_pad;

88 
qp
->
_n
 = 
vdp
->_
ma
->re_len;

89 
qp
->
c_ge
 = 
vdp
->c_g
ma
->rec_page;

90 
qp
->
ge_ext
 = 
vdp
->ge_ex
ma
->page_ext;

105 i(
	`F_ISSET
(
vdp
, 
VRFY_QMETA_SET
)) {

106 
isbad
 = 1;

107 
	`EPRINT
((
dbv
,

109 (
u_lg
)
pgno
));

110 
r
;

112 
	`F_SET
(
vdp
, 
VRFY_QMETA_SET
);

113 
qp
->
ge_ext
 = 
ma
->page_ext;

114 
dbp
->
pgsize
 = 
ma
->
dbma
.
gesize
;

115 
qp
->
q_ma
 = 
pgno
;

116 
qp
->
q_ro
 = 
pgno
 + 1;

117 
vdp
->
f_o
 = 
ma
->first_recno;

118 
vdp
->
ϡ_o
 = 
ma
->
cur_o
;

119 i(
qp
->
ge_ext
 != 0) {

120 
f
 = 
	`QAM_RECNO_EXTENT
(
dbp
, 
vdp
->
f_o
);

121 
ϡ
 = 
	`QAM_RECNO_EXTENT
(
dbp
, 
vdp
->
ϡ_o
);

130 i((
t
 = 
	`__db_ame
(
dbv
,

131 
DB_APP_DATA
, 
qp
->
d
, 0, 
NULL
, &
buf
)) != 0)

132 
r
;

133 i((
t
 = 
	`__os_dli
(
dbv
, 
buf
, &
mes
, &
cou
)) != 0)

134 
r
;

135 
	`__os_
(
dbv
, 
buf
);

136 
buf
 = 
NULL
;

138 
n
 = 
	`
(
QUEUE_EXTENT_HEAD
+ sn(
qp
->
me
) + 1;

139 i((
t
 = 
	`__os_mloc
(
dbv
, 
n
, &
buf
)) != 0)

140 
r
;

141 
n
 = (
size_t
)
	`tf
(
buf
,, 
QUEUE_EXTENT_HEAD
, 
qp
->
me
);

142 
i
 = 
xs
 = 0; i < 
cou
; i++) {

143 i(
	`cmp
(
mes
[
i
], 
buf
, 
n
) == 0) {

145 
extid
 = (
db_pgno_t
)
	`oul
(&
mes
[
i
][
n
], 
NULL
, 10);

146 i(
qp
->
ge_ext
 != 0 &&

147 (
ϡ
 > 
f
 ?

148 (
extid
 >
f
 &&xtid <
ϡ
) :

149 (
extid
 >
f
 ||xtid <
ϡ
)))

151 i(
exs
 =
NULL
 && (
t
 = 
	`__os_mloc
(

152 
dbv
, (
size_t
)(
cou
 - 
i
* (
extid
),

153 &
exs
)) != 0)

154 
r
;

155 
exs
[
xs
] = 
extid
;

156 
xs
++;

159 i(
xs
 > 0)

160 
	`__db_rx
(
dbv
,

161 "Wng: %dxex fefound", 
xs
);

162 
vdp
->
xs
 =extents;

163 
vdp
->
exs
 =xtents;

165 
r
: i((
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)!0 && 
t
 == 0)

166 
t
 = 
t_t
;

167 i(
mes
 !
NULL
)

168 
	`__os_d
(
dbv
, 
mes
, 
cou
);

169 i(
buf
 !
NULL
)

170 
	`__os_
(
dbv
, 
buf
);

171 i(
t
 !0 && 
exs
 !
NULL
)

172 
	`__os_
(
dbv
, 
exs
);

173 i(
	`LF_ISSET
(
DB_SALVAGE
) &&

174 (
t_t
 = 
	`__db_lvage_mkde
(
vdp
, 
pgno
)!0 && 
t
 == 0)

175 
t
 = 
t_t
;

176  (
t
 =0 && 
isbad
 =1 ? 
DB_VERIFY_BAD
 :et);

177 
	}
}

187 
	$__qam_vrfy_da
(
dbp
, 
vdp
, 
h
, 
pgno
, 
ags
)

188 
DB
 *
dbp
;

189 
VRFY_DBINFO
 *
vdp
;

190 
QPAGE
 *
h
;

191 
db_pgno_t
 
pgno
;

192 
u_t32_t
 
ags
;

194 
DB
 
kedb
;

195 
__queue
 
keq
;

196 
QAMDATA
 *
qp
;

197 
db_o_t
 
i
;

206 
kedb
.
q_
 = &
keq
;

207 
kedb
.
ags
 = 
dbp
->flags;

208 
keq
.
_n
 = 
vdp
->re_len;

210 
i
 = 0; i < 
vdp
->
c_ge
; i++) {

211 
qp
 = 
	`QAM_GET_RECORD
(&
kedb
, 
h
, 
i
);

212 i((
u_t8_t
 *)
qp
 >(u_t8_*)
h
 + 
dbp
->
pgsize
) {

213 
	`EPRINT
((
dbp
->
dbv
,

215 (
u_lg
)
pgno
, (u_lg)
i
));

216  (
DB_VERIFY_BAD
);

219 i(
qp
->
ags
 & ~(
QAM_VALID
 | 
QAM_SET
)) {

220 
	`EPRINT
((
dbp
->
dbv
,

222 (
u_lg
)
pgno
, (u_lg)
i
, (u_lg)
qp
->
ags
));

223  (
DB_VERIFY_BAD
);

228 
	}
}

237 
	$__qam_vrfy_ruu
(
dbp
, 
vdp
, 
ags
)

238 
DB
 *
dbp
;

239 
VRFY_DBINFO
 *
vdp
;

240 
u_t32_t
 
ags
;

242 
VRFY_PAGEINFO
 *
p
;

243 
db_pgno_t
 
i
;

244 
t
, 
isbad
;

246 
isbad
 = 0;

248 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
PGNO_BASE_MD
, &
p
)) != 0)

249  (
t
);

251 i(
p
->
ty
 !
P_QAMMETA
) {

252 
	`EPRINT
((
dbp
->
dbv
,

254 (
u_lg
)
PGNO_BASE_MD
));

255 
isbad
 = 1;

256 
r
;

259 i((
t
 = 
	`__db_vrfy_pgt_c
(
vdp
->
pgt
, 0)) != 0)

260 
r
;

262 
i
 = 1; i <
vdp
->
ϡ_pgno
; i++) {

264 i(!
	`LF_ISSET
(
DB_SALVAGE
))

265 
	`__db_vrfy_ru_edback
(
dbp
, 
vdp
);

267 i((
t
 = 
	`__db_vrfy_puagefo
(
dbp
->
dbv
, 
vdp
, 
p
)) != 0 ||

268 (
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
i
, &
p
)) != 0)

269  (
t
);

270 i(!
	`F_ISSET
(
p
, 
VRFY_IS_ALLZEROES
) &&

271 
p
->
ty
 !
P_QAMDATA
) {

272 
	`EPRINT
((
dbp
->
dbv
,

274 (
u_lg
)
i
, (u_lg)
p
->
ty
));

275 
isbad
 = 1;

276 
r
;

277 } i((
t
 = 
	`__db_vrfy_pgt_c
(
vdp
->
pgt
, 
i
)) != 0)

278 
r
;

281 
r
: i((
t
 = 
	`__db_vrfy_puagefo
(
dbp
->
dbv
, 
vdp
, 
p
)) != 0)

282  (
t
);

283  (
isbad
 =1 ? 
DB_VERIFY_BAD
 : 0);

284 
	}
}

295 
	$__qam_vrfy_wkqueue
(
dbp
, 
vdp
, 
hd
, 
back
, 
ags
)

296 
DB
 *
dbp
;

297 
VRFY_DBINFO
 *
vdp
;

298 *
hd
;

299 (*
back

	`__P
((*, const *));

300 
u_t32_t
 
ags
;

302 
DB_ENV
 *
dbv
;

303 
PAGE
 *
h
;

304 
QUEUE
 *
qp
;

305 
VRFY_PAGEINFO
 *
p
;

306 
db_pgno_t
 
f
, 
i
, 
ϡ
, 
pg_ext
, 

;

307 
isbad
, 
xs
, 
t
, 
t_t
;

309 
	`COMPQUIET
(
h
, 
NULL
);

311 
dbv
 = 
dbp
->dbenv;

312 
qp
 = 
dbp
->
q_
;

313 
p
 = 
NULL
;

314 
pg_ext
 = 
qp
->
ge_ext
;

315 
isbad
 = 
t
 = 
t_t
 = 0;

318 i(
pg_ext
 == 0)

321 
f
 = 
	`QAM_RECNO_PAGE
(
dbp
, 
vdp
->
f_o
);

322 
ϡ
 = 
	`QAM_RECNO_PAGE
(
dbp
, 
vdp
->
ϡ_o
);

324 
i
 = 
f
;

325 i(
f
 > 
ϡ
)

326 

 = 
	`QAM_RECNO_PAGE
(
dbp
, 
UINT32_MAX
);

328 

 = 
ϡ
;

329 
xs
 = 
vdp
->nextents;

332 
beg
: ; 
i
 <

; i++) {

337 i(
	`LF_ISSET
(
DB_SALVAGE
&& (
	`__db_lvage_isde
(
vdp
, 
i
) != 0))

339 i((
t_t
 = 
	`__qam_fg
(
dbp
, &
i
, 
NULL
, 0, &
h
)) != 0) {

340 i(
t_t
 =
ENOENT
 ||_=
DB_PAGE_NOTFOUND
) {

341 
i
 +(
pg_ext
 - ((i - 1) %g_ext)) - 1;

349 i(
	`LF_ISSET
(
DB_SALVAGE
)) {

350 i(
t
 == 0)

351 
t
 = 
t_t
;

354  (
t_t
);

357 i(
	`LF_ISSET
(
DB_SALVAGE
)) {

363 i((
t_t
 = 
	`__db_lvage
(
dbp
,

364 
vdp
, 
i
, 
h
, 
hd
, 
back
, 
ags
)) != 0) {

365 i(
t
 == 0)

366 
t
 = 
t_t
;

367 
isbad
 = 1;

378 i((
t
 = 
	`__db_vrfy_comm
(
dbp
,

379 
vdp
, 
h
, 
i
, 
ags
)=
DB_VERIFY_BAD
)

380 
isbad
 = 1;

381 i(
t
 != 0)

382 
r
;

384 
	`__db_vrfy_ru_edback
(
dbp
, 
vdp
);

386 i((
t
 = 
	`__db_vrfy_ggefo
(
vdp
, 
i
, &
p
)) != 0)

387  (
t
);

388 i(
	`F_ISSET
(
p
, 
VRFY_IS_ALLZEROES
))

389 
put
;

390 i(
p
->
ty
 !
P_QAMDATA
) {

391 
	`EPRINT
((
dbv
,

393 (
u_lg
)
i
, (u_lg)
p
->
ty
));

394 
isbad
 = 1;

395 
r
;

397 i((
t
 = 
	`__db_vrfy_pgt_c
(
vdp
->
pgt
, 
i
)) != 0)

398 
r
;

399 i((
t
 = 
	`__qam_vrfy_da
(
dbp
, 
vdp
,

400 (
QPAGE
 *)
h
, 
i
, 
ags
)=
DB_VERIFY_BAD
)

401 
isbad
 = 1;

402 i(
t
 != 0)

403 
r
;

405 
put
: i((
t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0)

406 
r
;

407 
p
 = 
NULL
;

411 i((
t_t
 = 
	`__qam_ut
(
dbp
, 
i
, 
h
, dbp->
iܙy
)) != 0) {

412 i(
	`LF_ISSET
(
DB_SALVAGE
)) {

413 i(
t
 == 0)

414 
t
 = 
t_t
;

417  (
t_t
);

421 i(
f
 > 
ϡ
) {

422 
i
 = 1;

423 

 = 
ϡ
;

424 
f
 = 
ϡ
;

425 
beg
;

432 i(
	`LF_ISSET
(
DB_SALVAGE
&& 
xs
 != 0) {

433 
xs
--;

434 
i
 = 1 +

435 
vdp
->
exs
[
xs
] * vdp->
ge_ext
;

436 

 = 
i
 + 
vdp
->
ge_ext
;

437 
beg
;

441 
r
: i((
t_t
 = 
	`__qam_ut
(
dbp
, 
i
, 
h
, dbp->
iܙy
)) != 0)

442  (
t
 =0 ? 
t_t
 :et);

443 i(
p
 !
NULL
 &&

444 (
t_t
 = 
	`__db_vrfy_puagefo
(
dbv
, 
vdp
, 
p
)) != 0)

445  (
t
 =0 ? 
t_t
 :et);

447  ((
isbad
 =1 && 
t
 =0? 
DB_VERIFY_BAD
 :et);

448 
	}
}

458 
	$__qam_lvage
(
dbp
, 
vdp
, 
pgno
, 
h
, 
hd
, 
back
, 
ags
)

459 
DB
 *
dbp
;

460 
VRFY_DBINFO
 *
vdp
;

461 
db_pgno_t
 
pgno
;

462 
PAGE
 *
h
;

463 *
hd
;

464 (*
back

	`__P
((*, const *));

465 
u_t32_t
 
ags
;

467 
DBT
 
dbt
, 
key
;

468 
QAMDATA
 *
qp
, *
q
;

469 
db_o_t
 
o
;

470 
t
, 
r_t
, 
t_t
;

471 
u_t32_t
 
gesize
, 
qn
;

472 
u_t32_t
 
i
;

474 
	`memt
(&
dbt
, 0, (
DBT
));

475 
	`memt
(&
key
, 0, (
DBT
));

477 
r_t
 = 
t
 = 0;

479 
gesize
 = (
u_t32_t
)
dbp
->
mpf
->
m
->

.
_gesize
;

480 
qn
 = ((
QUEUE
 *)
dbp
->
q_
)->
_n
;

481 
dbt
.
size
 = 
qn
;

482 
key
.
da
 = &
o
;

483 
key
.
size
 = (
o
);

484 
o
 = (
pgno
 - 1* 
	`QAM_RECNO_PER_PAGE
(
dbp
) + 1;

485 
i
 = 0;

486 
q
 = (
QAMDATA
 *)((
u_t8_t
 *)
h
 + 
gesize
 - 
qn
);

487 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
h
, 
i
); q< 
q
;

488 
o
++, 
i
++, 
qp
 = 
	`QAM_GET_RECORD
(
dbp
, 
h
, i)) {

489 i(
	`F_ISSET
(
qp
, ~(
QAM_VALID
|
QAM_SET
)))

491 i(!
	`F_ISSET
(
qp
, 
QAM_SET
))

494 i(!
	`LF_ISSET
(
DB_AGGRESSIVE
&& !
	`F_ISSET
(
qp
, 
QAM_VALID
))

497 
dbt
.
da
 = 
qp
->data;

498 i((
t
 = 
	`__db_vrfy_dbt
(&
key
,

499 0, " ", 
hd
, 
back
, 1, 
vdp
)) != 0)

500 
r_t
 = 
t
;

502 i((
t
 = 
	`__db_vrfy_dbt
(&
dbt
,

503 0, " ", 
hd
, 
back
, 0, 
vdp
)) != 0)

504 
r_t
 = 
t
;

507 i((
t_t
 = 
	`__db_lvage_mkde
(
vdp
, 
pgno
)) != 0)

508  (
t_t
);

509  ((
t
 =0 && 
r_t
 != 0) ?rr_ret :et);

510 
	}
}

	@../rep/rep_auto.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/db_ge.h
"

7 
	~"dbc/db_am.h
"

8 
	~"dbc/log.h
"

9 
	~"dbc/mp.h
"

10 
	~"dbc/txn.h
"

17 
	$__p_upde_buf
(
buf
, 
max
, 

,

18 
f_l
, 
f_vs
, 
num_fes
)

19 
u_t8_t
 *
buf
;

20 
size_t
 
max
, *

;

21 
DB_LSN
 * 
f_l
;

22 
u_t32_t
 
f_vs
;

23 
u_t32_t
 
num_fes
;

25 
u_t32_t
 
ump
;

26 
u_t8_t
 *
dbuf
;

27 
u_t8_t
 *
bp
;

28 
t
;

30 
t
 = 0;

32 
bp
 = 
buf
;

33 
dbuf
 = 
bp
 + 
max
;

35 i(
bp
 + (*
f_l
> 
dbuf
)

36  (
ENOMEM
);

37 i(
f_l
 !
NULL
)

38 
	`memy
(
bp
, 
f_l
, (*first_lsn));

40 
	`memt
(
bp
, 0, (*
f_l
));

41 
bp
 +(*
f_l
);

43 
ump
 = (
u_t32_t
)
f_vs
;

44 i(
bp
 + (
ump
> 
dbuf
)

45  (
ENOMEM
);

46 
	`memy
(
bp
, &
ump
, (uinttmp));

47 
bp
 +(
ump
);

49 
ump
 = (
u_t32_t
)
num_fes
;

50 i(
bp
 + (
ump
> 
dbuf
)

51  (
ENOMEM
);

52 
	`memy
(
bp
, &
ump
, (uinttmp));

53 
bp
 +(
ump
);

55 *

 = (
u_t32_t
)(
bp
 - 
buf
);

57  (
t
);

58 
	}
}

65 
	$__p_upde_ad
(
dbv
, 
cbuf
, 
x
, 
g
)

66 
DB_ENV
 *
dbv
;

67 *
cbuf
;

68 **
x
;

69 
__p_upde_gs
 **
g
;

71 
__p_upde_gs
 *
gp
;

72 
u_t32_t
 
ump
;

73 
u_t8_t
 *
bp
;

74 
t
;

76 i((
t
 = 
	`__os_mloc
(
dbv
,

77 (
__p_upde_gs
), &
gp
)) != 0)

78  (
t
);

79 
bp
 = 
cbuf
;

80 
	`memy
(&
gp
->
f_l
, 
bp
, (argp->first_lsn));

81 
bp
 +(
gp
->
f_l
);

83 
	`memy
(&
ump
, 
bp
, (uinttmp));

84 
gp
->
f_vs
 = (
u_t32_t
)
ump
;

85 
bp
 +(
ump
);

87 
	`memy
(&
ump
, 
bp
, (uinttmp));

88 
gp
->
num_fes
 = (
u_t32_t
)
ump
;

89 
bp
 +(
ump
);

91 *
x
 = 
bp
;

92 *
g
 = 
gp
;

94 
	}
}

102 
	$__p_fefo_buf
(
buf
, 
max
, 

,

103 
pgsize
, 
pgno
, 
max_pgno
, 
fum
, 
id
, 
ty
,

104 
ags
, 
uid
, 
fo
)

105 
u_t8_t
 *
buf
;

106 
size_t
 
max
, *

;

107 
u_t32_t
 
pgsize
;

108 
db_pgno_t
 
pgno
;

109 
db_pgno_t
 
max_pgno
;

110 
u_t32_t
 
fum
;

111 
t32_t
 
id
;

112 
u_t32_t
 
ty
;

113 
u_t32_t
 
ags
;

114 cڡ 
DBT
 *
uid
;

115 cڡ 
DBT
 *
fo
;

117 
u_t32_t
 
zo
;

118 
u_t32_t
 
ump
;

119 
u_t8_t
 *
dbuf
;

120 
u_t8_t
 *
bp
;

121 
t
;

123 
t
 = 0;

125 
bp
 = 
buf
;

126 
dbuf
 = 
bp
 + 
max
;

128 
ump
 = (
u_t32_t
)
pgsize
;

129 i(
bp
 + (
ump
> 
dbuf
)

130  (
ENOMEM
);

131 
	`memy
(
bp
, &
ump
, (uinttmp));

132 
bp
 +(
ump
);

134 
ump
 = (
u_t32_t
)
pgno
;

135 i(
bp
 + (
ump
> 
dbuf
)

136  (
ENOMEM
);

137 
	`memy
(
bp
, &
ump
, (uinttmp));

138 
bp
 +(
ump
);

140 
ump
 = (
u_t32_t
)
max_pgno
;

141 i(
bp
 + (
ump
> 
dbuf
)

142  (
ENOMEM
);

143 
	`memy
(
bp
, &
ump
, (uinttmp));

144 
bp
 +(
ump
);

146 
ump
 = (
u_t32_t
)
fum
;

147 i(
bp
 + (
ump
> 
dbuf
)

148  (
ENOMEM
);

149 
	`memy
(
bp
, &
ump
, (uinttmp));

150 
bp
 +(
ump
);

152 
ump
 = (
u_t32_t
)
id
;

153 i(
bp
 + (
ump
> 
dbuf
)

154  (
ENOMEM
);

155 
	`memy
(
bp
, &
ump
, (uinttmp));

156 
bp
 +(
ump
);

158 
ump
 = (
u_t32_t
)
ty
;

159 i(
bp
 + (
ump
> 
dbuf
)

160  (
ENOMEM
);

161 
	`memy
(
bp
, &
ump
, (uinttmp));

162 
bp
 +(
ump
);

164 
ump
 = (
u_t32_t
)
ags
;

165 i(
bp
 + (
ump
> 
dbuf
)

166  (
ENOMEM
);

167 
	`memy
(
bp
, &
ump
, (uinttmp));

168 
bp
 +(
ump
);

170 i(
uid
 =
NULL
) {

171 
zo
 = 0;

172 i(
bp
 + (
u_t32_t
> 
dbuf
)

173  (
ENOMEM
);

174 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

175 
bp
 +(
u_t32_t
);

177 i(
bp
 + (
uid
->
size
> 
dbuf
)

178  (
ENOMEM
);

179 
	`memy
(
bp
, &
uid
->
size
, (uid->size));

180 
bp
 +(
uid
->
size
);

181 i(
bp
 + 
uid
->
size
 > 
dbuf
)

182  (
ENOMEM
);

183 
	`memy
(
bp
, 
uid
->
da
, uid->
size
);

184 
bp
 +
uid
->
size
;

187 i(
fo
 =
NULL
) {

188 
zo
 = 0;

189 i(
bp
 + (
u_t32_t
> 
dbuf
)

190  (
ENOMEM
);

191 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

192 
bp
 +(
u_t32_t
);

194 i(
bp
 + (
fo
->
size
> 
dbuf
)

195  (
ENOMEM
);

196 
	`memy
(
bp
, &
fo
->
size
, (info->size));

197 
bp
 +(
fo
->
size
);

198 i(
bp
 + 
fo
->
size
 > 
dbuf
)

199  (
ENOMEM
);

200 
	`memy
(
bp
, 
fo
->
da
, info->
size
);

201 
bp
 +
fo
->
size
;

204 *

 = (
u_t32_t
)(
bp
 - 
buf
);

206  (
t
);

207 
	}
}

214 
	$__p_fefo_ad
(
dbv
, 
cbuf
, 
x
, 
g
)

215 
DB_ENV
 *
dbv
;

216 *
cbuf
;

217 **
x
;

218 
__p_fefo_gs
 **
g
;

220 
__p_fefo_gs
 *
gp
;

221 
u_t32_t
 
ump
;

222 
u_t8_t
 *
bp
;

223 
t
;

225 i((
t
 = 
	`__os_mloc
(
dbv
,

226 (
__p_fefo_gs
), &
gp
)) != 0)

227  (
t
);

228 
bp
 = 
cbuf
;

229 
	`memy
(&
ump
, 
bp
, (uinttmp));

230 
gp
->
pgsize
 = (
u_t32_t
)
ump
;

231 
bp
 +(
ump
);

233 
	`memy
(&
ump
, 
bp
, (uinttmp));

234 
gp
->
pgno
 = (
db_pgno_t
)
ump
;

235 
bp
 +(
ump
);

237 
	`memy
(&
ump
, 
bp
, (uinttmp));

238 
gp
->
max_pgno
 = (
db_pgno_t
)
ump
;

239 
bp
 +(
ump
);

241 
	`memy
(&
ump
, 
bp
, (uinttmp));

242 
gp
->
fum
 = (
u_t32_t
)
ump
;

243 
bp
 +(
ump
);

245 
	`memy
(&
ump
, 
bp
, (uinttmp));

246 
gp
->
id
 = (
t32_t
)
ump
;

247 
bp
 +(
ump
);

249 
	`memy
(&
ump
, 
bp
, (uinttmp));

250 
gp
->
ty
 = (
u_t32_t
)
ump
;

251 
bp
 +(
ump
);

253 
	`memy
(&
ump
, 
bp
, (uinttmp));

254 
gp
->
ags
 = (
u_t32_t
)
ump
;

255 
bp
 +(
ump
);

257 
	`memt
(&
gp
->
uid
, 0, (argp->uid));

258 
	`memy
(&
gp
->
uid
.
size
, 
bp
, (
u_t32_t
));

259 
bp
 +(
u_t32_t
);

260 
gp
->
uid
.
da
 = 
bp
;

261 
bp
 +
gp
->
uid
.
size
;

263 
	`memt
(&
gp
->
fo
, 0, (argp->info));

264 
	`memy
(&
gp
->
fo
.
size
, 
bp
, (
u_t32_t
));

265 
bp
 +(
u_t32_t
);

266 
gp
->
fo
.
da
 = 
bp
;

267 
bp
 +
gp
->
fo
.
size
;

269 *
x
 = 
bp
;

270 *
g
 = 
gp
;

272 
	}
}

	@../rep/rep_autop.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/db_ge.h
"

7 
	~"dbc/db_am.h
"

8 
	~"dbc/log.h
"

9 
	~"dbc/mp.h
"

10 
	~"dbc/txn.h
"

	@../rep/rep_backup.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/f.h
"

15 
	~"dbc/lock.h
"

16 
	~"dbc/log.h
"

17 
	~"dbc/mp.h
"

18 
	~"dbc/qam.h
"

19 
	~"dbc/txn.h
"

21 
__p_check_uid
 
__P
((
DB_ENV
 *, 
u_t8_t
 *, u_int8_t *, u_int8_t *));

22 
__p_fede
 
__P
((
DB_ENV
 *, , 
REP
 *, 
__p_fefo_gs
 *,

23 
u_t32_t
));

24 
__p_fd_dbs
 
__P
((
DB_ENV
 *, 
u_t8_t
 **, 
size_t
 *,

25 
size_t
 *, 
u_t32_t
 *));

26 
__p_g_fefo
 
__P
((
DB_ENV
 *, const *,

27 cڡ *, 
__p_fefo_gs
 *, 
u_t8_t
 *, 
u_t32_t
 *));

28 
__p_g_fe_li
 
__P
((
DB_ENV
 *, 
DB_FH
 *, 
DBT
 *));

29 
__p_log_tup
 
__P
((
DB_ENV
 *,

30 
REP
 *, 
u_t32_t
, u_t32_t, 
DB_LSN
 *));

31 
__p_mpf_ݒ
 
__P
((
DB_ENV
 *, 
DB_MPOOLFILE
 **,

32 
__p_fefo_gs
 *, 
u_t32_t
));

33 
__p_xtfe
 
__P
((
DB_ENV
 *, , 
REP
 *));

34 
__p_ge_g
 
__P
((
DB_ENV
 *, 
REP
 *, 
__p_fefo_gs
 *,

35 
u_t32_t
));

36 
__p_ge_ndges
 
__P
((
DB_ENV
 *, ,

37 
__p_fefo_gs
 *, 
DB_MPOOLFILE
 *, 
DB
 *));

38 
__p_queue_fede
 
__P
((
DB_ENV
 *, 
REP
 *, 
__p_fefo_gs
 *));

39 
__p_move_l
 
__P
((
DB_ENV
 *, 
DBT
 *));

40 
__p_move_fe
 
__P
((
DB_ENV
 *, 
u_t8_t
 *, const *,

41 
u_t32_t
, u_int32_t));

42 
__p_move_logs
 
__P
((
DB_ENV
 *));

43 
__p_move_by_li
 
__P
((
DB_ENV
 *, *, 
u_t32_t
));

44 
__p_move_by_efix
 
__P
((
DB_ENV
 *, const *, const *,

45 
size_t
, 
APPNAME
));

46 
__p_wk_d
 
__P
((
DB_ENV
 *, cڡ *, 
u_t8_t
 **, u_int8_t *,

47 
size_t
 *, size_*, 
u_t32_t
 *));

48 
__p_wre_ge
 
__P
((
DB_ENV
 *, 
REP
 *, 
__p_fefo_gs
 *));

57 
	$__p_upde_q
(
dbv
, 
eid
)

58 
DB_ENV
 *
dbv
;

59 
eid
;

61 
DBT
 
updbt
, 
vdbt
;

62 
DB_LOG
 *
db
;

63 
DB_LOGC
 *
logc
;

64 
DB_LSN
 
l
;

65 
size_t
 
f
, 
fesz
, 
updn
;

66 
u_t32_t
 
fet
, 
ag
, 
vsi
;

67 
u_t8_t
 *
buf
, *

;

68 
t
, 
t_t
;

82 
db
 = 
dbv
->
lg_hd
;

83 
logc
 = 
NULL
;

84 
fet
 = 0;

85 
f
 = 0;

86 
updn
 = 0;

87 
fesz
 = 
MEGABYTE
;

88 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
fesz
, &
buf
)) != 0)

89  (
t
);

95 

 = 
buf
 + (
__p_upde_gs
);

96 i((
t
 = 
	`__p_fd_dbs
(

97 
dbv
, &

, &
fesz
, &
f
, &
fet
)) != 0)

98 
r
;

104 
ag
 = 
DB_SET
;

105 i((
t
 = 
	`__log_g_ab_l
(
dbv
, &
l
)) != 0) {

106 i(
t
 !
DB_NOTFOUND
)

107 
r
;

112 
t
 = 0;

113 
ag
 = 
DB_FIRST
;

119 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

120 
r
;

122 
	`memt
(&
vdbt
, 0, (vdbt));

127 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
vdbt
, 
ag
)) != 0) {

133 i(
t
 !
DB_NOTFOUND
)

134 
r
;

135 
	`INIT_LSN
(
l
);

136 
vsi
 = 
DB_LOGVERSION
;

138 i((
t
 = 
	`__logc_vsi
(
logc
, &
vsi
)) != 0)

139 
r
;

144 i((
t
 = 
	`__p_upde_buf
(
buf
, 
fesz
, &
updn
,

145 &
l
, 
vsi
, 
fet
)) != 0)

146 
r
;

150 
	`DB_INIT_DBT
(
updbt
, 
buf
, 
f
 + 
updn
);

152 
	`LOG_SYSTEM_LOCK
(
dbv
);

153 
l
 = ((
LOG
 *)
db
->
gfo
.
imy
)->lsn;

154 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

155 ()
	`__p_nd_mesge
(

156 
dbv
, 
eid
, 
REP_UPDATE
, &
l
, &
updbt
, 0, 0);

158 
r
: 
	`__os_
(
dbv
, 
buf
);

159 i(
logc
 !
NULL
 && (
t_t
 = 
	`__logc_o
ogc)!0 && 
t
 == 0)

160 
t
 = 
t_t
;

161  (
t
);

162 
	}
}

179 
	$__p_fd_dbs
(
dbv
, 

, 
feszp
, 
fp
, 
fe
)

180 
DB_ENV
 *
dbv
;

181 
u_t8_t
 **

;

182 
size_t
 *
feszp
, *
fp
;

183 
u_t32_t
 *
fe
;

185 
t
;

186 **
dd
, *
_d
;

187 
u_t8_t
 *
ig
;

189 
t
 = 0;

190 
_d
 = 
NULL
;

191 i(
dbv
->
db_da_d
 =
NULL
) {

196 
t
 = 
	`__p_wk_d
(
dbv
, dbv->
db_home
, 

, 
NULL
,

197 
feszp
, 
fp
, 
fe
);

199 
ig
 = *

;

200 
dd
 = 
dbv
->
db_da_d
; *dd !
NULL
; ++ddir) {

201 i((
t
 = 
	`__db_ame
(
dbv
, 
DB_APP_NONE
,

202 *
dd
, 0, 
NULL
, &
_d
)) != 0)

204 i((
t
 = 
	`__p_wk_d
(
dbv
, 
_d
, 

, 
ig
,

205 
feszp
, 
fp
, 
fe
)) != 0)

207 
	`__os_
(
dbv
, 
_d
);

208 
_d
 = 
NULL
;

213 i(
t
 == 0)

214 
t
 = 
	`__p_wk_d
(
dbv
, 
NULL
,

215 

, 
NULL
, 
feszp
, 
fp
, 
fe
);

217 i(
_d
 !
NULL
)

218 
	`__os_
(
dbv
, 
_d
);

219  (
t
);

220 
	}
}

231 
	$__p_wk_d
(
dbv
, 
d
, 

, 
ig
, 
feszp
, 
fp
, 
fe
)

232 
DB_ENV
 *
dbv
;

233 cڡ *
d
;

234 
u_t8_t
 **

, *
ig
;

235 
size_t
 *
feszp
, *
fp
;

236 
u_t32_t
 *
fe
;

238 
DBT
 
medbt
, 
uiddbt
;

239 
__p_fefo_gs
 
tmp
;

240 
size_t
 
n
, 
offt
;

241 
t
, 
f_fe
, 
i
, 
t
;

242 
u_t8_t
 *
r
, 
uid
[
DB_FILE_ID_LEN
];

243 *
fe
, **
mes
, *
subdb
;

245 
	`memt
(&
medbt
, 0, (namedbt));

246 
	`memt
(&
uiddbt
, 0, (uiddbt));

247 i(
d
 =
NULL
) {

248 
	`RPRINT
(
dbv
, (dbenv,

250 i((
t
 = 
	`__memp_memli
(
dbv
, &
mes
, &
t
)) != 0)

251  (
t
);

253 
	`RPRINT
(
dbv
, (dbenv,

254 "Wk_d: Gtg inff d: %s", 
d
));

255 i((
t
 = 
	`__os_dli
(
dbv
, 
d
, &
mes
, &
t
)) != 0)

256  (
t
);

258 
r
 = 
NULL
;

259 i(

 !
NULL
)

260 
r
 = *

;

261 
	`RPRINT
(
dbv
, (dbenv, "Walk_dir: Dir %s has %d files",

262 (
d
 =
NULL
? "INMEM" : d, 
t
));

263 
f_fe
 = 1;

264 
i
 = 0; i < 
t
; i++) {

265 
	`RPRINT
(
dbv
, (dbenv,

266 "Wk_d: F%dame: %s", 
i
, 
mes
[i]));

270 i(
	`cmp
(
mes
[
i
], "__db", 4) == 0)

272 i(
	`cmp
(
mes
[
i
], "DB_CONFIG", 9) == 0)

274 i(
	`cmp
(
mes
[
i
], "log", 3) == 0)

280 i(
d
 =
NULL
) {

281 
fe
 = 
NULL
;

282 
subdb
 = 
mes
[
i
];

284 
fe
 = 
mes
[
i
];

285 
subdb
 = 
NULL
;

287 i((
t
 = 
	`__p_g_fefo
(
dbv
,

288 
fe
, 
subdb
, &
tmp
, 
uid
, 
fe
)) != 0) {

292 
	`RPRINT
(
dbv
, (dbenv,

294 
i
, 
mes
[i], 
	`db_
(
t
)));

295 
t
 = 0;

298 
	`RPRINT
(
dbv
, (dbenv,

300 
tmp
.
fum
, *
fe
, 
mes
[
i
], 
	`P_TO_ULONG
(
r
),

301 (
u_lg
)
tmp
.
pgsize
, (u_lgmp.
max_pgno
));

308 i(
f_fe
 && 
ig
 !
NULL
) {

312 i(
r
 !
ig
 &&

313 (
t
 = 
	`__p_check_uid
(
dbv
, 
ig
,

314 
ig
 + *
fp
, 
uid
)) != 0) {

319 i(
t
 =
DB_KEYEXIST
) {

320 
t
 = 0;

321 (*
fe
)--;

323 
r
;

325 
f_fe
 = 0;

328 
	`DB_SET_DBT
(
medbt
, 
mes
[
i
], 
	`
(names[i]) + 1);

329 
	`DB_SET_DBT
(
uiddbt
, 
uid
, 
DB_FILE_ID_LEN
);

330 
y
: 
t
 = 
	`__p_fefo_buf
(
r
, *
feszp
, &
n
,

331 
tmp
.
pgsize
,mp.
pgno
,mp.
max_pgno
,

332 
tmp
.
fum
,mp.
id
,mp.
ty
,

333 
tmp
.
ags
, &
uiddbt
, &
medbt
);

334 i(
t
 =
ENOMEM
) {

335 
offt
 = (
size_t
)(
r
 - *

);

336 *
feszp
 *= 2;

341 *

 -(
__p_upde_gs
);

342 i((
t
 = 
	`__os_loc
(
dbv
, *
feszp
, *

)) != 0)

344 *

 +(
__p_upde_gs
);

345 
r
 = *

 + 
offt
;

350 
y
;

352 
r
 +
n
;

353 *

 = 
r
;

354 *
fp
 +
n
;

356 
r
:

357 
	`__os_d
(
dbv
, 
mes
, 
t
);

358  (
t
);

359 
	}
}

369 
	$__p_check_uid
(
dbv
, 

, 
d
, 
uid
)

370 
DB_ENV
 *
dbv
;

371 
u_t8_t
 *

, *
d
, *
uid
;

373 
__p_fefo_gs
 *
r
;

374 
u_t8_t
 *
fuid
;

375 
t
;

376 *
xt
;

378 
t
 = 0;

379 
xt
 = 

;

380 
r
 = 
NULL
;

381 
xt
 <(*)
d
) {

382 i((
t
 =

383 
	`__p_fefo_ad
(
dbv
, 
xt
, &xt, &
r
)) != 0) {

384 
	`__db_rx
(
dbv
, "Rep_check_uid: Couldot malloc");

385 
r
;

387 
fuid
 = (
u_t8_t
 *)
r
->
uid
.
da
;

388 i(
	`memcmp
(
fuid
, 
uid
, 
DB_FILE_ID_LEN
) == 0) {

389 
	`RPRINT
(
dbv
, (dbenv,

391 
t
 = 
DB_KEYEXIST
;

392 
r
;

394 
	`__os_
(
dbv
, 
r
);

395 
r
 = 
NULL
;

397 
r
:

398 i(
r
 !
NULL
)

399 
	`__os_
(
dbv
, 
r
);

400  (
t
);

402 
	}
}

405 
	$__p_g_fefo
(
dbv
, 
fe
, 
subdb
, 
r
, 
uid
, 
fe
)

406 
DB_ENV
 *
dbv
;

407 cڡ *
fe
, *
subdb
;

408 
__p_fefo_gs
 *
r
;

409 
u_t8_t
 *
uid
;

410 
u_t32_t
 *
fe
;

412 
DB
 *
dbp
, *
tdbp
;

413 
DB_LOCK
 
lk
;

414 
DB_LOG
 *
db
;

415 
DB_MPOOLFILE
 *
mpf
;

416 
DBC
 *
dbc
;

417 
DBMETA
 *
dbma
;

418 
PAGE
 *
g
;

419 
i
, 
t
, 
t_t
;

421 
dbp
 = 
NULL
;

422 
dbc
 = 
NULL
;

423 
g
 = 
NULL
;

424 
mpf
 = 
NULL
;

425 
	`LOCK_INIT
(
lk
);

427 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

428 
r
;

429 i((
t
 = 
	`__db_ݒ
(
dbp
, 
NULL
, 
fe
, 
subdb
, 
DB_UNKNOWN
,

430 
DB_RDONLY
 | (
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
? 
DB_THREAD
 : 0),

431 0, 
PGNO_BASE_MD
)) != 0)

432 
r
;

434 i((
t
 = 
	`__db_curs
(
dbp
, 
NULL
, &
dbc
, 0)) != 0)

435 
r
;

436 i((
t
 = 
	`__db_lg
(

437 
dbc
, 0, 
dbp
->
ma_pgno
, 
DB_LOCK_READ
, 0, &
lk
)) != 0)

438 
r
;

439 i((
t
 = 
	`__memp_fg
(
dbp
->
mpf
, &dbp->
ma_pgno
, 
dbc
->
txn
,

440 0, &
g
)) != 0)

441 
r
;

445 
dbma
 = (
DBMETA
 *)
g
;

446 
r
->
pgno
 = 0;

451 i(
dbp
->
ty
 =
DB_QUEUE
)

452 
r
->
max_pgno
 = 0;

454 
r
->
max_pgno
 = 
dbma
->
ϡ_pgno
;

455 
r
->
pgsize
 = 
dbp
->pgsize;

456 
	`memy
(
uid
, 
dbp
->
feid
, 
DB_FILE_ID_LEN
);

457 
r
->
fum
 = (*
fe
)++;

458 
r
->
ty
 = (
u_t32_t
)
dbp
->type;

459 
r
->
ags
 = 
dbp
->flags;

460 
r
->
id
 = 
DB_LOGFILEID_INVALID
;

461 
t
 = 
	`__memp_ut
(
dbp
->
mpf
, 
g
, 
dbc
->
iܙy
);

462 
g
 = 
NULL
;

463 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lk
)!0 && 
t
 == 0)

464 
t
 = 
t_t
;

465 i(
t
 != 0)

466 
r
;

467 
r
:

468 i((
t_t
 = 
	`__LPUT
(
dbc
, 
lk
)!0 && 
t
 == 0)

469 
t
 = 
t_t
;

470 i(
dbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc)!0 && 
t
 == 0)

471 
t
 = 
t_t
;

472 i(
g
 !
NULL
 && (
t_t
 =

473 
	`__memp_ut
(
mpf
, 
g
, 
dbc
->
iܙy
)!0 && 
t
 == 0)

474 
t
 = 
t_t
;

475 i(
dbp
 !
NULL
 && (
t_t
 = 
	`__db_o
(dbp, NULL, 0)!0 && 
t
 == 0)

476 
t
 = 
t_t
;

482 i(
t
 == 0) {

483 
	`LOG_SYSTEM_LOCK
(
dbv
);

488 
db
 = 
dbv
->
lg_hd
,

489 
i
 = 0; i < 
db
->
dby_t
; i++) {

490 
tdbp
 = 
db
->
dby
[
i
].
dbp
;

491 i(
tdbp
 =
NULL
)

493 
	`DB_ASSERT
(
dbv
, 
tdbp
->
log_fame
 !
NULL
);

494 i(
	`memcmp
(
uid
,

495 
tdbp
->
log_fame
->
ufid
,

496 
DB_FILE_ID_LEN
) == 0)

497 
r
->
id
 = 
i
;

499 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

501  (
t
);

502 
	}
}

511 
	$__p_ge_q
(
dbv
, 
eid
, 
c
)

512 
DB_ENV
 *
dbv
;

513 
eid
;

514 
DBT
 *
c
;

516 
__p_fefo_gs
 *
msg
;

517 
DB
 *
dbp
;

518 
DBT
 
msgdbt
;

519 
DB_LOG
 *
db
;

520 
DB_MPOOLFILE
 *
mpf
;

521 
DB_REP
 *
db_p
;

522 
REP
 *
p
;

523 
t
, 
t_t
;

524 *
xt
;

526 
db_p
 = 
dbv
->
p_hd
;

527 
p
 = 
db_p
->
gi
;

528 
db
 = 
dbv
->
lg_hd
;

530 i((
t
 = 
	`__p_fefo_ad
(
dbv
, 
c
->
da
, &
xt
, &
msg
)) != 0)

531  (
t
);

537 
	`RPRINT
(
dbv
, (dbenv, "page_req: file %dage %luo %lu",

538 
msg
->
fum
, (
u_lg
)msg->
pgno
, (u_lg)msg->
max_pgno
));

539 
	`LOG_SYSTEM_LOCK
(
dbv
);

540 i(
msg
->
id
 >0 && 
db
->
dby_t
 > msgfp->id) {

541 
dbp
 = 
db
->
dby
[
msg
->
id
].dbp;

542 i(
dbp
 !
NULL
) {

543 
	`DB_ASSERT
(
dbv
, 
dbp
->
log_fame
 !
NULL
);

544 i(
	`memcmp
(
msg
->
uid
.
da
, 
dbp
->
log_fame
->
ufid
,

545 
DB_FILE_ID_LEN
) == 0) {

546 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

547 
	`RPRINT
(
dbv
, (dbenv,

549 
msg
->
fum
));

550 
t
 = 
	`__p_ge_ndges
(
dbv
, 
eid
,

551 
msg
, 
dbp
->
mpf
, dbp);

552 
r
;

556 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

563 
	`RPRINT
(
dbv
,

564 (
dbv
, "ge_q: O%d v mpf_ݒ", 
msg
->
fum
));

565 i((
t
 = 
	`__p_mpf_ݒ
(
dbv
, &
mpf
, 
msg
, 0)) != 0) {

566 
	`memt
(&
msgdbt
, 0, (msgdbt));

567 
msgdbt
.
da
 = 
msg
;

568 
msgdbt
.
size
 = (*
msg
);

569 
	`RPRINT
(
dbv
, (dbenv, "page_req: Open %d failed",

570 
msg
->
fum
));

571 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
))

572 ()
	`__p_nd_mesge
(
dbv
, 
eid
, 
REP_FILE_FAIL
,

573 
NULL
, &
msgdbt
, 0, 0);

575 
t
 = 
DB_NOTFOUND
;

576 
r
;

579 
t
 = 
	`__p_ge_ndges
(
dbv
, 
eid
, 
msg
, 
mpf
, 
NULL
);

580 
t_t
 = 
	`__memp_fo
(
mpf
, 0);

581 i(
t
 =0 && 
t_t
 != 0)

582 
t
 = 
t_t
;

583 
r
:

584 
	`__os_
(
dbv
, 
msg
);

585  (
t
);

586 
	}
}

589 
	$__p_ge_ndges
(
dbv
, 
eid
, 
msg
, 
mpf
, 
dbp
)

590 
DB_ENV
 *
dbv
;

591 
eid
;

592 
__p_fefo_gs
 *
msg
;

593 
DB_MPOOLFILE
 *
mpf
;

594 
DB
 *
dbp
;

596 
DB
 *
qdbp
;

597 
DBT
 
lockdbt
, 
msgdbt
, 
pgdbt
;

598 
DB_LOCK
 
lock
;

599 
DB_LOCK_ILOCK
 
lock_obj
;

600 
DB_LOCKER
 *
lock
;

601 
DB_LOG
 *
db
;

602 
DB_LSN
 
l
;

603 
DB_REP
 *
db_p
;

604 
PAGE
 *
g
;

605 
REP
 *
p
;

606 
REP_BULK
 
bulk
;

607 
REP_THROTTLE
 
h
;

608 
db_pgno_t
 
p
;

609 
u_t
 
bulkoff
;

610 
size_t
 
n
, 
msgsz
;

611 
u_t32_t
 
bulkags
, 
u_bulk
;

612 
ݒed
, 
t
, 
t_t
;

613 
u_t8_t
 *
buf
;

615 
db_p
 = 
dbv
->
p_hd
;

616 
p
 = 
db_p
->
gi
;

617 
lock
 = 
NULL
;

618 
ݒed
 = 0;

619 
qdbp
 = 
NULL
;

620 
buf
 = 
NULL
;

621 
bulk
.
addr
 = 
NULL
;

622 
u_bulk
 = 
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_BULK
);

623 i(
msg
->
ty
 =(
u_t32_t
)
DB_QUEUE
) {

624 i(
dbp
 =
NULL
) {

625 i((
t
 = 
	`__db__
(&
qdbp
, 
dbv
, 0)) != 0)

626 
r
;

632 i((
t
 = 
	`__db_ݒ
(
qdbp
, 
NULL
,

633 
	`FLD_ISSET
(
msg
->
ags
, 
DB_AM_INMEM
) ?

634 
NULL
 : 
msg
->
fo
.
da
,

635 
	`FLD_ISSET
(
msg
->
ags
, 
DB_AM_INMEM
) ?

636 
msg
->
fo
.
da
 : 
NULL
,

637 
DB_UNKNOWN
,

638 
DB_RDONLY
 | (
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
) ?

639 
DB_THREAD
 : 0), 0, 
PGNO_BASE_MD
)) != 0)

640 
r
;

641 
ݒed
 = 1;

643 
qdbp
 = 
dbp
;

645 
msgsz
 = (
__p_fefo_gs
+ 
DB_FILE_ID_LEN
 + 
msg
->
pgsize
;

646 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
msgsz
, &
buf
)) != 0)

647 
r
;

648 
	`memt
(&
msgdbt
, 0, (msgdbt));

649 
	`memt
(&
pgdbt
, 0, (pgdbt));

650 
	`RPRINT
(
dbv
, (dbenv, "sendpages: file %dage %luo %lu",

651 
msg
->
fum
, (
u_lg
)msg->
pgno
, (u_lg)msg->
max_pgno
));

652 
	`memt
(&
h
, 0, (repth));

662 i(
u_bulk
 && (
t
 = 
	`__p_bulk_loc
(
dbv
, &
bulk
, 
eid
,

663 &
bulkoff
, &
bulkags
, 
REP_BULK_PAGE
)) != 0)

664 
r
;

665 
	`REP_SYSTEM_LOCK
(
dbv
);

666 
h
.
gbys
 = 
p
->gbytes;

667 
h
.
bys
 = 
p
->bytes;

668 
h
.
ty
 = 
REP_PAGE
;

669 
h
.
da_dbt
 = &
msgdbt
;

670 
	`REP_SYSTEM_UNLOCK
(
dbv
);

675 
	`LOCK_INIT
(
lock
);

676 
	`memt
(&
lock_obj
, 0, (lock_obj));

677 i((
t
 = 
	`__lock_id
(
dbv
, 
NULL
, &
lock
)) != 0)

678 
r
;

679 
	`memy
(
lock_obj
.
feid
, 
mpf
->feid, 
DB_FILE_ID_LEN
);

680 
lock_obj
.
ty
 = 
DB_PAGE_LOCK
;

682 
	`memt
(&
lockdbt
, 0, (lockdbt));

683 
lockdbt
.
da
 = &
lock_obj
;

684 
lockdbt
.
size
 = (
lock_obj
);

686 
p
 = 
msg
->
pgno
; <msg->
max_pgno
;++) {

692 
lock_obj
.
pgno
 = 
p
;

693 i((
t
 = 
	`__lock_g
(
dbv
, 
lock
, 
DB_LOCK_NOWAIT
, &
lockdbt
,

694 
DB_LOCK_READ
, &
lock
)) != 0) {

698 i(
t
 =
DB_LOCK_NOTGRANTED
)

703 
r
;

705 i(
msg
->
ty
 =(
u_t32_t
)
DB_QUEUE
 && 
p
 != 0)

706 #ifde
HAVE_QUEUE


707 
t
 = 
	`__qam_fg
(
qdbp
, &
p
, 
NULL
,

708 
DB_MPOOL_CREATE
, &
g
);

710 
t
 = 
DB_PAGE_NOTFOUND
;

713 
t
 = 
	`__memp_fg
(
mpf
, &
p
, 
NULL
,

714 
DB_MPOOL_CREATE
, &
g
);

715 i(
t
 =
DB_PAGE_NOTFOUND
) {

716 
	`memt
(&
pgdbt
, 0, (pgdbt));

717 
	`ZERO_LSN
(
l
);

718 
msg
->
pgno
 = 
p
;

719 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

720 
t
 = 0;

721 
	`RPRINT
(
dbv
, (dbenv,

723 (
u_lg
)
p
));

724 ()
	`__p_nd_mesge
(
dbv
, 
eid
,

725 
REP_PAGE_FAIL
, &
l
, &
msgdbt
, 0, 0);

727 
t
 = 
DB_NOTFOUND
;

728 
lockr
;

729 } i(
t
 != 0)

730 
lockr
;

732 
	`DB_SET_DBT
(
pgdbt
, 
g
, 
msg
->
pgsize
);

733 
n
 = 0;

734 
	`RPRINT
(
dbv
, (dbenv,

735 "ndges: %lu,agl [%lu][%lu]", (
u_lg
)
p
,

736 (
u_lg
)
g
->
l
.
fe
, (u_lgag->l.
offt
));

737 
t
 = 
	`__p_fefo_buf
(
buf
, 
msgsz
, &
n
,

738 
msg
->
pgsize
, 
p
, msg->
max_pgno
,

739 
msg
->
fum
, msg->
id
, msg->
ty
,

740 
msg
->
ags
, &msg->
uid
, &
pgdbt
);

741 i(
msg
->
ty
 !(
u_t32_t
)
DB_QUEUE
 || 
p
 == 0)

742 
t_t
 = 
	`__memp_ut
(
mpf
, 
g
, 
DB_PRIORITY_UNCHANGED
);

743 #ifde
HAVE_QUEUE


750 
t_t
 = 
	`__qam_ut
(
qdbp
, 
p
, 
g
, qdbp->
iܙy
);

752 i((
t_t
 = 
	`__ENV_LPUT
(
dbv
, 
lock
)!0 && 
t
 == 0)

753 
t
 = 
t_t
;

754 i(
t
 != 0)

755 
r
;

757 
	`DB_ASSERT
(
dbv
, 
n
 <
msgsz
);

758 
	`DB_SET_DBT
(
msgdbt
, 
buf
, 
n
);

760 
db
 = 
dbv
->
lg_hd
;

761 
	`LOG_SYSTEM_LOCK
(
dbv
);

762 
h
.
l
 = ((
LOG
 *)
db
->
gfo
.
imy
)->lsn;

763 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

769 i(
u_bulk
)

770 
t
 = 
	`__p_bulk_mesge
(
dbv
, &
bulk
, &
h
,

771 &
h
.
l
, &
msgdbt
, 0);

772 i(!
u_bulk
 || 
t
 =
DB_REP_BULKOVF
)

773 
t
 = 
	`__p_nd_thrَe
(
dbv
, 
eid
, &
h
, 0, 0);

774 
	`RPRINT
(
dbv
, (dbenv,

775 "ndges: %lu, [%lu][%lu]", (
u_lg
)
p
,

776 (
u_lg
)
h
.
l
.
fe
, (u_lgth.l.
offt
));

781 i(
h
.
ty
 =
REP_PAGE_MORE
 || 
t
 != 0) {

783 i(
t
 =
DB_REP_UNAVAIL
)

784 
t
 = 0;

790 
lockr
: i((
t_t
 = 
	`__ENV_LPUT
(
dbv
, 
lock
)!0 && 
t
 == 0)

791 
t
 = 
t_t
;

793 
r
:

798 i(
u_bulk
 && 
bulk
.
addr
 !
NULL
 &&

799 (
t_t
 = 
	`__p_bulk_
(
dbv
, &
bulk
, 0)!0 && 
t
 == 0)

800 
t
 = 
t_t
;

801 i(
ݒed
 && (
t_t
 = 
	`__db_o
(
qdbp
, 
NULL
, 
DB_NOSYNC
)) != 0 &&

802 
t
 == 0)

803 
t
 = 
t_t
;

804 i(
buf
 !
NULL
)

805 
	`__os_
(
dbv
, 
buf
);

806 i(
lock
 !
NULL
 && (
t_t
 = 
	`__lock_id_
(
dbv
,

807 
lock
)!0 && 
t
 == 0)

808 
t
 = 
t_t
;

809  (
t
);

810 
	}
}

819 
	$__p_upde_tup
(
dbv
, 
eid
, 

, 
c
)

820 
DB_ENV
 *
dbv
;

821 
eid
;

822 
REP_CONTROL
 *

;

823 
DBT
 *
c
;

825 
DB_LOG
 *
db
;

826 
DB_REP
 *
db_p
;

827 
LOG
 *

;

828 
REGENV
 *
nv
;

829 
REGINFO
 *
f
;

830 
REP
 *
p
;

831 
__p_upde_gs
 *
rup
;

832 
t
;

833 
u_t32_t
 
cou
, 
fޒ
;

834 *
xt
;

836 
db_p
 = 
dbv
->
p_hd
;

837 
p
 = 
db_p
->
gi
;

838 
db
 = 
dbv
->
lg_hd
;

839 

 = 
db
->
gfo
.
imy
;

840 
t
 = 0;

842 
	`REP_SYSTEM_LOCK
(
dbv
);

843 i(!
	`F_ISSET
(
p
, 
REP_F_RECOVER_UPDATE
|| 
	`IN_ELECTION
(rep)) {

844 
	`REP_SYSTEM_UNLOCK
(
dbv
);

847 
	`F_CLR
(
p
, 
REP_F_RECOVER_UPDATE
);

852 
	`F_SET
(
p
, 
REP_F_RECOVER_PAGE
);

856 
	`DB_ASSERT
(
dbv
,

857 !
	`IS_USING_LEASES
(
dbv
|| 
	`__p_i_ged
(dbenv) == 0);

866 i((
t
 = 
	`__p_lockout_i
(
dbv
, 
p
)) != 0)

867 
r
;

872 
f
 = 
dbv
->
gfo
;

873 
nv
 = 
f
->
imy
;

874 ()
	`time
(&
nv
->
p_timeamp
);

876 
	`REP_SYSTEM_UNLOCK
(
dbv
);

877 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

878 

->
wa_cs
 = 
p
->
que_g
;

879 

->
rcvd_cs
 = 0;

880 
	`ZERO_LSN
(

->
ady_l
);

881 
	`ZERO_LSN
(

->
vify_l
);

882 
	`ZERO_LSN
(

->
wag_l
);

883 
	`ZERO_LSN
(

->
max_wa_l
);

884 
	`ZERO_LSN
(

->
max_rm_l
);

885 i(
db_p
->
p_db
 =
NULL
)

886 
t
 = 
	`__p__db
(
dbv
, 0, 
REP_DB
);

887 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

888 i(
t
 != 0)

889 
r_nock
;

890 i((
t
 = 
	`__p_upde_ad
(
dbv
, 
c
->
da
, &
xt
, &
rup
)) != 0)

891 
r_nock
;

897 i((
t
 = 
	`__db_un
(
db_p
->
p_db
, 
NULL
, &
cou
)) != 0)

898 
r_nock
;

904 
	`REP_SYSTEM_LOCK
(
dbv
);

905 
p
->
f_l
 = 
rup
->first_lsn;

906 
p
->
f_vs
 = 
rup
->first_vers;

907 
p
->
ϡ_l
 = 

->
l
;

908 
p
->
nfes
 = 
rup
->
num_fes
;

910 
	`__os_
(
dbv
, 
rup
);

912 
	`RPRINT
(
dbv
, (dbenv,

913 "Updtuf %d fes.", 
p
->
nfes
));

914 
	`RPRINT
(
dbv
, (dbenv, "Update setup: First LSN [%lu][%lu].",

915 (
u_lg
)
p
->
f_l
.
fe
, (u_lg->f_l.
offt
));

916 
	`RPRINT
(
dbv
, (dbenv, "Update setup: Last LSN [%lu][%lu]",

917 (
u_lg
)
p
->
ϡ_l
.
fe
, (u_lg->ϡ_l.
offt
));

919 i(
p
->
nfes
 > 0) {

920 
fޒ
 = 
c
->
size
 - (
__p_upde_gs
);

921 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
fޒ
, &
p
->
igfo
)) != 0)

922 
r
;

923 
	`memy
(
p
->
igfo
, 
xt
, 
fޒ
);

924 
p
->
xtfo
 =->
igfo
;

931 i((
t
 = 
	`__p_move_l
(
dbv
, 
c
)) != 0)

932 
r
;

934 
p
->
curfe
 = 0;

935 i((
t
 = 
	`__p_xtfe
(
dbv
, 
eid
, 
p
)) != 0)

936 
r
;

939 
r_nock
: 
	`REP_SYSTEM_LOCK
(
dbv
);

942 
r
:

947 i(
t
 != 0) {

948 i(
p
->
igfo
 !
NULL
) {

949 
	`__os_
(
dbv
, 
p
->
igfo
);

950 
p
->
igfo
 = 
NULL
;

952 
	`RPRINT
(
dbv
, (dbenv,

954 
	`db_
(
t
)));

955 
	`F_CLR
(
p
, 
REP_F_RECOVER_PAGE
 | 
REP_F_READY_API
 |

956 
REP_F_READY_OP
);

957 
	`F_SET
(
p
, 
REP_F_RECOVER_UPDATE
);

959 
	`REP_SYSTEM_UNLOCK
(
dbv
);

960  (
t
);

961 
	}
}

977 
	$__p_move_l
(
dbv
, 
c
)

978 
DB_ENV
 *
dbv
;

979 
DBT
 *
c
;

981 
__p_fefo_gs
 *
ffo
;

982 
DB_FH
 *
fhp
;

983 
DB_LSN
 
unud
;

984 
size_t
 
t
, 
f
, 
fesz
, 
updn
;

985 
u_t32_t
 
bufsz
, 
fet
;

986 *
ame
;

987 
t
, 
t_t
;

988 
u_t8_t
 *
buf
, *

, *
ig
;

990 
	`ZERO_LSN
(
unud
);

991 
ffo
 = 
NULL
;

992 
ame
 = 
NULL
;

993 
fhp
 = 
NULL
;

999 
f
 = 0;

1000 
fet
 = 0;

1001 
fesz
 = 
MEGABYTE
;

1002 i((
t
 = 
	`__os_oc
(
dbv
, 1, 
fesz
, &
buf
)) != 0)

1003  (
t
);

1004 
ig
 = 

 = 
buf
 + (
__p_upde_gs
);

1005 i((
t
 = 
	`__p_fd_dbs
(

1006 
dbv
, &

, &
fesz
, &
f
, &
fet
)) != 0)

1007 
out
;

1008 i((
t
 = 
	`__p_upde_buf
(
buf
, 
fesz
, &
updn
,

1009 &
unud
, 0, 
fet
)) != 0)

1010 
out
;

1017 i((
t
 = 
	`__db_ame
(

1018 
dbv
, 
DB_APP_NONE
, 
REP_INITNAME
, 0, 
NULL
, &
ame
)) != 0)

1019 
out
;

1020 
bufsz
 = 
updn
 + 
f
;

1022 i((
t
 = 
	`__os_ݒ
(
dbv
, 
ame
, 0,

1023 
DB_OSO_CREATE
 | 
DB_OSO_TRUNC
, 
	`__db_omode
(
OWNER_RW
), &
fhp
)) != 0 ||

1024 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
bufsz
, (bufsz), &
t
)) != 0 ||

1025 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
buf
, 
bufsz
, &
t
)) != 0 ||

1026 (
t
 = 
	`__os_fsync
(
dbv
, 
fhp
)) != 0) {

1027 
	`__db_r
(
dbv
, 
t
, "%s", 
ame
);

1028 
out
;

1035 i((
t
 = 
	`__p_move_logs
(
dbv
)) != 0)

1036 
out
;

1037 i((
t
 = 
	`__p_ofes
(
dbv
, 0)) != 0)

1038 
out
;

1039 

 = 
ig
;

1040 
fet
-- > 0) {

1041 i((
t
 =
	`__p_fefo_ad
(
dbv
,

1042 

, (*)&, &
ffo
)) != 0)

1043 
out
;

1044 i((
t
 = 
	`__p_move_fe
(
dbv
, 
ffo
->
uid
.
da
,

1045 
ffo
->
fo
.
da
, ffo->
ty
, ffo->
ags
)) != 0)

1046 
out
;

1047 
	`__os_
(
dbv
, 
ffo
);

1048 
ffo
 = 
NULL
;

1057 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
,

1058 &
c
->
size
, ec->size), &
t
)) != 0 ||

1059 (
t
 = 
	`__os_wre
(
dbv
, 
fhp
, 
c
->
da
,ec->
size
, &
t
)) != 0 ||

1060 (
t
 = 
	`__os_fsync
(
dbv
, 
fhp
)) != 0) {

1061 
	`__db_r
(
dbv
, 
t
, "%s", 
ame
);

1062 
out
;

1065 
out
:

1066 i(
fhp
 !
NULL
 && (
t_t
 = 
	`__os_ohd
(
dbv
, fhp)&& 
t
 == 0)

1067 
t
 = 
t_t
;

1068 i(
ame
 !
NULL
)

1069 
	`__os_
(
dbv
, 
ame
);

1070 i(
ffo
 !
NULL
)

1071 
	`__os_
(
dbv
, 
ffo
);

1072 
	`__os_
(
dbv
, 
buf
);

1073  (
t
);

1074 
	}
}

1081 
	$__p_move_logs
(
dbv
)

1082 
DB_ENV
 *
dbv
;

1084 
DB_LOG
 *
db
;

1085 
DB_LSN
 
l
;

1086 
LOG
 *

;

1087 
u_t32_t
 
um
, 
ϡfe
;

1088 
t
;

1089 *
me
;

1091 
db
 = 
dbv
->
lg_hd
;

1092 

 = 
db
->
gfo
.
imy
;

1093 
t
 = 0;

1101 i((
t
 = 
	`__memp_sync_t
(
dbv
,

1102 
NULL
, 0, 
DB_SYNC_CACHE
 | 
DB_SYNC_INTERRUPT_OK
, NULL, NULL)) != 0)

1103  (
t
);

1104 i((
t
 = 
	`__log_ush
(
dbv
, 
NULL
)) != 0)

1105  (
t
);

1110 i(

->
db_log_memy
) {

1111 
	`ZERO_LSN
(
l
);

1112 i((
t
 = 
	`__log_zo
(
dbv
, &
l
)) != 0)

1113  (
t
);

1115 
ϡfe
 = 

->
l
.
fe
;

1116 
um
 = 1; fnum <
ϡfe
; fnum++) {

1117 i((
t
 = 
	`__log_me
(
db
, 
um
, &
me
, 
NULL
, 0)) != 0)

1118  (
t
);

1119 ()
	`time
(&

->
timeamp
);

1120 ()
	`__os_uƚk
(
dbv
, 
me
);

1121 
	`__os_
(
dbv
, 
me
);

1125 
	}
}

1132 
	$__p_move_fe
(
dbv
, 
uid
, 
me
, 
ty
, 
ags
)

1133 
DB_ENV
 *
dbv
;

1134 
u_t8_t
 *
uid
;

1135 cڡ *
me
;

1136 
u_t32_t
 
ty
, 
ags
;

1142 #ifde
HAVE_QUEUE


1143 
DB
 *
dbp
;

1144 
t
;

1152 i(
ty
 =(
u_t32_t
)
DB_QUEUE
 && !
	`LF_ISSET
(
DB_AM_INMEM
)) {

1153 i((
t
 = 
	`__db__
(&
dbp
, 
dbv
, 0)) != 0)

1154  (
t
);

1166 i((
t
 = 
	`__lock_id
(
dbv
, 
NULL
, &
dbp
->
lock
)) != 0)

1167  (
t
);

1169 
	`RPRINT
(
dbv
, (dbv, "QAM: Uƚk %v __qam_move", 
me
));

1170 i((
t
 = 
	`__qam_move
(
dbp
, 
NULL
, 
me
, NULL)) != 0) {

1171 
	`RPRINT
(
dbv
, (dbv, "qam_movtued %d", 
t
));

1172 ()
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
);

1173  (
t
);

1175 i((
t
 = 
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
)) != 0)

1176  (
t
);

1179 
	`COMPQUIET
(
ty
, 0);

1180 
	`COMPQUIET
(
ags
, 0);

1187  (
	`__f_move
(
dbv
, 
NULL
, 
uid
, 
me
, 
DB_APP_DATA
, 0));

1188 
	}
}

1197 
	$__p_bulk_ge
(
dbv
, 
eid
, 

, 
c
)

1198 
DB_ENV
 *
dbv
;

1199 
eid
;

1200 
REP_CONTROL
 *

;

1201 
DBT
 *
c
;

1203 
DBT
 
pgc
;

1204 
REP_CONTROL
 
tmp
;

1205 
u_t32_t
 
n
;

1206 
t
;

1207 
u_t8_t
 *
p
, *

;

1209 
	`memt
(&
pgc
, 0, (pgrec));

1217 
	`memy
(&
tmp
, 

, (tmprp));

1218 
tmp
.
y
 = 
REP_PAGE
;

1219 
t
 = 0;

1220 

 = (
u_t8_t
 *)
c
->
da
 +ec->
size
, 
p
 = (u_int8_t *)rec->data;

1221 
p
 < 

; +
n
) {

1226 
	`memy
(&
n
, 
p
, (len));

1227 
p
 +(
n
);

1228 
	`memy
(&
tmp
.
l
, 
p
, (
DB_LSN
));

1229 
p
 +(
DB_LSN
);

1230 
pgc
.
da
 = 
p
;

1231 
pgc
.
size
 = 
n
;

1232 
	`RPRINT
(
dbv
, (dbenv,

1234 (
u_lg
)
tmp
.
l
.
fe
, (u_lgmp.l.
offt
));

1235 
	`RPRINT
(
dbv
, (dbenv,

1237 
	`P_TO_ULONG
(
p
), P_TO_ULONG(

), P_TO_ULONG(
pgc
.
da
),

1238 (
u_lg
)
pgc
.
size
, (u_long)pgrec.size));

1242 
t
 = 
	`__p_ge
(
dbv
, 
eid
, &
tmp
, &
pgc
);

1243 
	`RPRINT
(
dbv
, (dbenv,

1244 "p_bulk_ge:_g%d", 
t
));

1249 i(
t
 != 0) {

1250 i(
t
 =
DB_REP_PAGEDONE
)

1251 
t
 = 0;

1255  (
t
);

1256 
	}
}

1265 
	$__p_ge
(
dbv
, 
eid
, 

, 
c
)

1266 
DB_ENV
 *
dbv
;

1267 
eid
;

1268 
REP_CONTROL
 *

;

1269 
DBT
 *
c
;

1272 
DB_REP
 *
db_p
;

1273 
DBT
 
key
, 
da
;

1274 
REP
 *
p
;

1275 
__p_fefo_gs
 *
msg
;

1276 
db_o_t
 
o
;

1277 
t
;

1278 *
xt
;

1280 
t
 = 0;

1281 
db_p
 = 
dbv
->
p_hd
;

1282 
p
 = 
db_p
->
gi
;

1284 i(!
	`F_ISSET
(
p
, 
REP_F_RECOVER_PAGE
))

1285  (
DB_REP_PAGEDONE
);

1286 i((
t
 = 
	`__p_fefo_ad
(
dbv
, 
c
->
da
, &
xt
, &
msg
)) != 0)

1287  (
t
);

1288 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

1289 
	`REP_SYSTEM_LOCK
(
dbv
);

1293 
	`DB_ASSERT
(
dbv
,

1294 !
	`IS_USING_LEASES
(
dbv
|| 
	`__p_i_ged
(dbenv) == 0);

1296 
	`RPRINT
(
dbv
, (dbenv,

1298 (
u_lg
)
msg
->
pgno
, msg->
fum
));

1308 i(
msg
->
fum
 !
p
->
curfe
) {

1309 
	`RPRINT
(
dbv
, (dbenv, "Msg file %d != curfile %d",

1310 
msg
->
fum
, 
p
->
curfe
));

1311 
t
 = 
DB_REP_PAGEDONE
;

1312 
r
;

1318 i((
t
 = 
	`__p__db
(
dbv
, 1, 
REP_PG
)) != 0) {

1319 
	`RPRINT
(
dbv
, (dbenv,

1320 "PAGE: Cl_db %s", 
	`db_
(
t
)));

1321 
r
;

1324 
	`memt
(&
key
, 0, (key));

1325 
	`memt
(&
da
, 0, (data));

1326 
o
 = (
db_o_t
)(
msg
->
pgno
 + 1);

1327 
key
.
da
 = &
o
;

1328 
key
.
un
 = key.
size
 = (
db_o_t
);

1329 
key
.
ags
 = 
DB_DBT_USERMEM
;

1336 
t
 = 
	`__db_put
(
p
->
fe_dbp
, 
NULL
, &
key
, &
da
, 
DB_NOOVERWRITE
);

1337 i(
t
 =
DB_KEYEXIST
) {

1338 
	`RPRINT
(
dbv
, (dbenv,

1340 (
u_lg
)
msg
->
pgno
, msg->
fum
));

1341 
	`STAT
(
p
->

.
_pg_duid
++);

1342 
t
 = 0;

1343 
r
;

1345 i(
t
 != 0)

1346 
r
;

1348 
	`RPRINT
(
dbv
, (dbenv,

1349 "PAGE: Wrg%lu impo", (
u_lg
)
msg
->
pgno
));

1353 
t
 = 
	`__p_wre_ge
(
dbv
, 
p
, 
msg
);

1354 i(
t
 != 0) {

1364 ()
	`__db_d
(
p
->
fe_dbp
, 
NULL
, &
key
, 0);

1365 
r
;

1367 
	`STAT
(
p
->

.
_pg_cds
++);

1368 
p
->
ages
++;

1374 i(
	`LOG_COMPARE
(&

->
l
, &
p
->
ϡ_l
) > 0)

1375 
p
->
ϡ_l
 = 

->
l
;

1383 
t
 = 
	`__p_fede
(
dbv
, 
eid
, 
p
, 
msg
, 

->
y
);

1385 
r
: 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1386 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1388 
	`__os_
(
dbv
, 
msg
);

1389  (
t
);

1390 
	}
}

1399 
	$__p_ge_
(
dbv
, 
eid
, 
c
)

1400 
DB_ENV
 *
dbv
;

1401 
eid
;

1402 
DBT
 *
c
;

1405 
DB_REP
 *
db_p
;

1406 
REP
 *
p
;

1407 
__p_fefo_gs
 *
msg
, *
r
;

1408 
t
;

1409 *
xt
;

1411 
t
 = 0;

1412 
db_p
 = 
dbv
->
p_hd
;

1413 
p
 = 
db_p
->
gi
;

1415 i(!
	`F_ISSET
(
p
, 
REP_F_RECOVER_PAGE
))

1417 i((
t
 = 
	`__p_fefo_ad
(
dbv
, 
c
->
da
, &
xt
, &
msg
)) != 0)

1418  (
t
);

1428 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

1429 
	`REP_SYSTEM_LOCK
(
dbv
);

1433 
	`DB_ASSERT
(
dbv
,

1434 !
	`IS_USING_LEASES
(
dbv
|| 
	`__p_i_ged
(dbenv) == 0);

1436 i(
msg
->
fum
 !
p
->
curfe
) {

1437 
	`RPRINT
(
dbv
, (dbenv, "Msg file %d != curfile %d",

1438 
msg
->
fum
, 
p
->
curfe
));

1439 
out
;

1441 
r
 = 
p
->
curfo
;

1442 i(
r
->
ty
 !(
u_t32_t
)
DB_QUEUE
)

1443 --
r
->
max_pgno
;

1450 
	`RPRINT
(
dbv
, (dbenv,

1452 (
u_lg
)
msg
->
pgno
, (u_lg)
p
->
ady_pg
,

1453 (
u_lg
)
r
->
max_pgno
, 
p
->
ages
));

1454 i(
msg
->
pgno
 =
r
->
max_pgno
)

1455 --
r
->
max_pgno
;

1456 i(
msg
->
pgno
 >
p
->
ady_pg
) {

1457 
p
->
ady_pg
 = 
msg
->
pgno
 + 1;

1458 
p
->
ages
 =->
ady_pg
;

1460 
	`RPRINT
(
dbv
, (dbenv,

1462 (
u_lg
)
msg
->
pgno
, (u_lg)
p
->
ady_pg
,

1463 (
u_lg
)
r
->
max_pgno
, 
p
->
ages
));

1473 
t
 = 
	`__p_fede
(
dbv
, 
eid
, 
p
, 
msg
, 
REP_PAGE_FAIL
);

1474 
out
:

1475 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1476 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1477 
	`__os_
(
dbv
, 
msg
);

1478  (
t
);

1479 
	}
}

1486 
	$__p_wre_ge
(
dbv
, 
p
, 
msg
)

1487 
DB_ENV
 *
dbv
;

1488 
REP
 *
p
;

1489 
__p_fefo_gs
 *
msg
;

1491 
__p_fefo_gs
 *
r
;

1492 
t
;

1493 *
d
;

1495 
r
 = 
NULL
;

1506 
r
 = 
p
->
curfo
;

1507 i(
p
->
fe_mpf
 =
NULL
) {

1508 i(!
	`F_ISSET
(
r
, 
DB_AM_INMEM
)) {

1513 
	`RPRINT
(
dbv
, (dbenv,

1515 (*)
r
->
fo
.
da
));

1516 i((
t
 = 
	`__f_
(
dbv
, 
NULL
, NULL,

1517 
r
->
fo
.
da
, 
DB_APP_DATA
,

1518 
dbv
->
db_mode
, 0)) != 0)

1519 
r
;

1522 i((
t
 =

1523 
	`__p_mpf_ݒ
(
dbv
, &
p
->
fe_mpf
,->
curfo
,

1524 
	`F_ISSET
(
r
, 
DB_AM_INMEM
? 
DB_CREATE
 : 0)) != 0)

1525 
r
;

1535 i(
msg
->
ty
 =(
u_t32_t
)
DB_QUEUE
 && msg->
pgno
 != 0) {

1536 #ifde
HAVE_QUEUE


1537 
t
 = 
	`__qam_fg
(
p
->
queue_dbp
, &
msg
->
pgno
, 
NULL
,

1538 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
d
);

1543 
t
 = 
	`__db_no_queue_am
(
dbv
);

1546 
t
 = 
	`__memp_fg
(
p
->
fe_mpf
, &
msg
->
pgno
, 
NULL
,

1547 
DB_MPOOL_CREATE
 | 
DB_MPOOL_DIRTY
, &
d
);

1549 i(
t
 != 0)

1550 
r
;

1552 
	`memy
(
d
, 
msg
->
fo
.
da
, msg->
pgsize
);

1553 #ifde
HAVE_QUEUE


1554 i(
msg
->
ty
 =(
u_t32_t
)
DB_QUEUE
 && msg->
pgno
 != 0)

1555 
t
 = 
	`__qam_ut
(
p
->
queue_dbp
,

1556 
msg
->
pgno
, 
d
, 
p
->
queue_dbp
->
iܙy
);

1559 
t
 = 
	`__memp_ut
(
p
->
fe_mpf
, 
d
,->
fe_dbp
->
iܙy
);

1561 
r
:  (
t
);

1562 
	}
}

1570 
	$__p_ge_g
(
dbv
, 
p
, 
msg
, 
ty
)

1571 
DB_ENV
 *
dbv
;

1572 
REP
 *
p
;

1573 
__p_fefo_gs
 *
msg
;

1574 
u_t32_t
 
ty
;

1576 
DB_LOG
 *
db
;

1577 
DBC
 *
dbc
;

1578 
DBT
 
da
, 
key
;

1579 
LOG
 *

;

1580 
__p_fefo_gs
 *
r
;

1581 
db_o_t
 
o
;

1582 
t
, 
t_t
;

1584 
db
 = 
dbv
->
lg_hd
;

1585 

 = 
db
->
gfo
.
imy
;

1586 
t
 = 0;

1587 
dbc
 = 
NULL
;

1597 
r
 = 
p
->
curfo
;

1603 i(
r
->
fum
 !
msg
->filenum) {

1604 
t
 = 
DB_REP_PAGEDONE
;

1605 
r
;

1623 i(
msg
->
pgno
 < 
p
->
ady_pg
) {

1624 
	`RPRINT
(
dbv
, (dbenv,

1626 (
u_lg
)
msg
->
pgno
, (u_lg)
p
->
ady_pg
,

1627 (
u_lg
)
p
->
wag_pg
));

1628 
r
;

1637 
	`RPRINT
(
dbv
, (dbenv,

1639 (
u_lg
)
msg
->
pgno
, (u_lg)
r
->
max_pgno
, (u_lg)
p
->
ady_pg
,

1640 (
u_lg
)
p
->
wag_pg
, (u_lg->
max_wa_pg
));

1641 i(
msg
->
pgno
 > 
p
->
ady_pg
) {

1642 i(
p
->
wag_pg
 =
PGNO_INVALID
 ||

1643 
msg
->
pgno
 < 
p
->
wag_pg
)

1644 
p
->
wag_pg
 = 
msg
->
pgno
;

1649 
p
->
ady_pg
++;

1650 

->
rcvd_cs
 = 0;

1651 i(
p
->
ady_pg
 =p->
wag_pg
) {

1657 

->
wa_cs
 = 0;

1658 

->
rcvd_cs
 = 0;

1659 
p
->
max_wa_pg
 = 
PGNO_INVALID
;

1664 
	`memt
(&
key
, 0, (key));

1665 
	`memt
(&
da
, 0, (data));

1666 i((
t
 = 
	`__db_curs
(
p
->
fe_dbp
, 
NULL
,

1667 &
dbc
, 0)) != 0)

1668 
r
;

1673 
o
 = (
db_o_t
)
p
->
wag_pg
 + 1;

1674 
key
.
da
 = &
o
;

1675 
key
.
un
 = key.
size
 = (
db_o_t
);

1676 
key
.
ags
 = 
DB_DBT_USERMEM
;

1681 
t
 = 
	`__dbc_g
(
dbc
, &
key
, &
da
, 
DB_SET
);

1682 i(
t
 != 0)

1683 
r
;

1684 
	`RPRINT
(
dbv
, (dbenv,

1686 (
u_lg
)
p
->
ady_pg
, (u_lg->
wag_pg
));

1688 
t
 =0 && 
p
->
ady_pg
 =p->
wag_pg
) {

1689 
p
->
ady_pg
++;

1690 
t
 = 
	`__dbc_g
(
dbc
, &
key
, &
da
, 
DB_NEXT
);

1695 i(
t
 =
DB_NOTFOUND
 || =
DB_KEYEMPTY
) {

1696 
p
->
wag_pg
 = 
PGNO_INVALID
;

1697 
	`RPRINT
(
dbv
, (dbenv,

1699 (
u_lg
)
p
->
ady_pg
,

1700 (
u_lg
)
p
->
wag_pg
));

1708 
p
->
wag_pg
 = *(
db_pgno_t
 *)
key
.
da
;

1709 
p
->
wag_pg
--;

1710 
	`RPRINT
(
dbv
, (dbenv,

1712 (
u_lg
)
p
->
ady_pg
, (u_lg->
wag_pg
));

1721 i(
p
->
ady_pg
 > 
r
->
max_pgno
)

1722 
r
;

1727 i((
p
->
wag_pg
 !
PGNO_INVALID
 &&

1728 
p
->
ady_pg
 !p->
wag_pg
|| 
ty
 =
REP_PAGE_MORE
) {

1732 i(

->
wa_cs
 == 0) {

1739 

->
wa_cs
 = 
p
->
que_g
;

1740 

->
rcvd_cs
 = 0;

1741 
p
->
max_wa_pg
 = 
PGNO_INVALID
;

1748 i(
ty
 =
REP_PAGE_MORE
)

1749 
r
->
pgno
 = 
msg
->pgno;

1750 i((
	`__p_check_deq
(
dbv
, 
p
|| 
ty
 =
REP_PAGE_MORE
) &&

1751 ((
t
 = 
	`__p_pgg_q
(
dbv
, 
p
, 
r
,

1752 (
ty
 =
REP_PAGE_MORE
? 
REP_GAP_FORCE
 : 0)) != 0))

1753 
r
;

1755 

->
wa_cs
 = 0;

1756 
p
->
max_wa_pg
 = 
PGNO_INVALID
;

1759 
r
:

1760 i(
dbc
 !
NULL
 && (
t_t
 = 
	`__dbc_o
(dbc)!0 && 
t
 == 0)

1761 
t
 = 
t_t
;

1763  (
t
);

1764 
	}
}

1776 
	$__p__nup
(
dbv
, 
p
, 
f
)

1777 
DB_ENV
 *
dbv
;

1778 
REP
 *
p
;

1779 
f
;

1781 
DB_LOG
 *
db
;

1782 
LOG
 *

;

1783 
nup_u
, 
t
, 
t_t
;

1785 
t
 = 0;

1793 i(
p
->
fe_mpf
 !
NULL
) {

1794 
t
 = 
	`__memp_fo
(
p
->
fe_mpf
, 0);

1795 
p
->
fe_mpf
 = 
NULL
;

1797 i(
p
->
fe_dbp
 !
NULL
) {

1798 
t_t
 = 
	`__db_o
(
p
->
fe_dbp
, 
NULL
, 
DB_NOSYNC
);

1799 
p
->
fe_dbp
 = 
NULL
;

1800 i(
t_t
 !0 && 
t
 == 0)

1801 
t
 = 
t_t
;

1803 i(
f
 && 
p
->
queue_dbp
 !
NULL
) {

1804 
t_t
 = 
	`__db_o
(
p
->
queue_dbp
, 
NULL
, 
DB_NOSYNC
);

1805 
p
->
queue_dbp
 = 
NULL
;

1806 i(
t_t
 !0 && 
t
 == 0)

1807 
t
 = 
t_t
;

1809 i(
p
->
curfo
 !
NULL
) {

1810 
	`__os_
(
dbv
, 
p
->
curfo
);

1811 
p
->
curfo
 = 
NULL
;

1813 i(
	`F_ISSET
(
p
, 
REP_F_INTERNAL_INIT_MASK
&& 
f
) {

1829 
	`RPRINT
(
dbv
, (dbenv, "clean up interrupted internal init"));

1830 
nup_u
 = 0;

1832 i((
t_t
 = 
	`__p_move_logs
(
dbv
)) == 0) {

1842 
db
 = 
dbv
->
lg_hd
;

1843 

 = 
db
->
gfo
.
imy
;

1845 i((
t_t
 = 
	`__p_log_tup
(
dbv
,

1846 
p
, 1, 
DB_LOGVERSION
, &

->
ady_l
)) != 0) {

1847 
nup_u
 = 1;

1848 i(
t
 == 0)

1849 
t
 = 
t_t
;

1852 
nup_u
 = 1;

1853 i(
t
 == 0)

1854 
t
 = 
t_t
;

1857 i((
t_t
 = 
	`__p_move_by_li
(
dbv
,

1858 
p
->
igfo
,->
nfes
)) != 0) {

1859 
nup_u
 = 1;

1860 i(
t
 == 0)

1861 
t
 = 
t_t
;

1864 i(!
nup_u
 &&

1865 (
t_t
 = 
	`__p_move__fe
(
dbv
)) != 0) {

1866 i(
t
 == 0)

1867 
t
 = 
t_t
;

1870 i(
p
->
igfo
 !
NULL
) {

1871 
	`__os_
(
dbv
, 
p
->
igfo
);

1872 
p
->
igfo
 = 
NULL
;

1876  (
t
);

1877 
	}
}

1889 
	$__p_fede
(
dbv
, 
eid
, 
p
, 
msg
, 
ty
)

1890 
DB_ENV
 *
dbv
;

1891 
eid
;

1892 
REP
 *
p
;

1893 
__p_fefo_gs
 *
msg
;

1894 
u_t32_t
 
ty
;

1896 
__p_fefo_gs
 *
r
;

1897 
t
;

1903 
t
 = 
	`__p_ge_g
(
dbv
, 
p
, 
msg
, 
ty
);

1908 i(
t
 =
DB_REP_PAGEDONE
)

1911 
r
 = 
p
->
curfo
;

1916 
	`RPRINT
(
dbv
, (dbenv, "FILEDONE: have %luages. Need %lu.",

1917 (
u_lg
)
p
->
ages
, (u_lg)
r
->
max_pgno
 + 1));

1918 i(
p
->
ages
 <
r
->
max_pgno
)

1926 i(
r
->
ty
 =(
u_t32_t
)
DB_QUEUE
 &&

1927 ((
t
 = 
	`__p_queue_fede
(
dbv
, 
p
, 
r
)) !=

1928 
DB_REP_PAGEDONE
))

1929  (
t
);

1933 i((
t
 = 
	`__p__nup
(
dbv
, 
p
, 0)) != 0)

1934 
r
;

1936 
p
->
curfe
++;

1937 
t
 = 
	`__p_xtfe
(
dbv
, 
eid
, 
p
);

1938 
r
:

1939  (
t
);

1940 
	}
}

1950 
	$__p_xtfe
(
dbv
, 
eid
, 
p
)

1951 
DB_ENV
 *
dbv
;

1952 
eid
;

1953 
REP
 *
p
;

1955 
DBT
 
dbt
;

1956 
t
;

1963 i(
p
->
ma_id
 !
DB_EID_INVALID
)

1964 
eid
 = 
p
->
ma_id
;

1965 i(
p
->
curfe
 =p->
nfes
) {

1966 
	`RPRINT
(
dbv
, (dbenv,

1967 "NEXTFILE: hav%d fes. RECOVER_LOGow", 
p
->
nfes
));

1978 i((
t
 = 
	`__memp_sync_t
(
dbv
, 
NULL
, 0,

1979 
DB_SYNC_CACHE
 | 
DB_SYNC_INTERRUPT_OK
, 
NULL
, NULL)) != 0)

1980  (
t
);

1981 
	`F_CLR
(
p
, 
REP_F_RECOVER_PAGE
);

1982 
	`F_SET
(
p
, 
REP_F_RECOVER_LOG
);

1983 
	`memt
(&
dbt
, 0, (dbt));

1984 
dbt
.
da
 = &
p
->
ϡ_l
;

1985 
dbt
.
size
 = (
p
->
ϡ_l
);

1986 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1987 i((
t
 = 
	`__p_log_tup
(
dbv
, 
p
,

1988 
p
->
f_l
.
fe
,->
f_vs
, 
NULL
)) != 0)

1989  (
t
);

1990 
	`RPRINT
(
dbv
, (dbenv,

1992 (
u_lg
)
p
->
f_l
.
fe
, (u_lg->f_l.
offt
,

1993 (
u_lg
)
p
->
ϡ_l
.
fe
, (u_lg->ϡ_l.
offt
));

1994 ()
	`__p_nd_mesge
(
dbv
, 
eid
,

1995 
REP_LOG_REQ
, &
p
->
f_l
, &
dbt
,

1996 
REPCTL_INIT
, 
DB_REP_ANYWHERE
);

1997 
	`REP_SYSTEM_LOCK
(
dbv
);

2004 
p
->
ffo
 =->
xtfo
;

2005 i((
t
 = 
	`__p_fefo_ad
(
dbv
, 
p
->
ffo
, &p->
xtfo
,

2006 &
p
->
curfo
)) != 0) {

2007 
	`RPRINT
(
dbv
, (dbenv,

2008 "NEXTINFO: Fefػad: %s", 
	`db_
(
t
)));

2009  (
t
);

2011 
	`DB_ASSERT
(
dbv
, 
p
->
curfo
->
pgno
 == 0);

2012 
p
->
ady_pg
 = 0;

2013 
p
->
ages
 = 0;

2014 
p
->
wag_pg
 = 
PGNO_INVALID
;

2015 
p
->
max_wa_pg
 = 
PGNO_INVALID
;

2016 
	`memt
(&
dbt
, 0, (dbt));

2017 
	`RPRINT
(
dbv
, (dbenv,

2018 "Nexf%d:gsiz%lu, maxpg %lu", 
p
->
curfo
->
fum
,

2019 (
u_lg
)
p
->
curfo
->
pgsize
, (u_lg->curfo->
max_pgno
));

2020 
dbt
.
da
 = 
p
->
ffo
;

2021 
dbt
.
size
 =

2022 (
u_t32_t
)((
u_t8_t
 *)
p
->
xtfo
 - (u_t8_*->
ffo
);

2023 ()
	`__p_nd_mesge
(
dbv
, 
eid
, 
REP_PAGE_REQ
,

2024 
NULL
, &
dbt
, 0, 
DB_REP_ANYWHERE
);

2027 
	}
}

2035 
	$__p_mpf_ݒ
(
dbv
, 
mp
, 
r
, 
ags
)

2036 
DB_ENV
 *
dbv
;

2037 
DB_MPOOLFILE
 **
mp
;

2038 
__p_fefo_gs
 *
r
;

2039 
u_t32_t
 
ags
;

2041 
DB
 
db
;

2042 
t
;

2044 i((
t
 = 
	`__memp_f
(
dbv
, 
mp
)) != 0)

2045  (
t
);

2051 
db
.
dbv
 = dbenv;

2052 
db
.
ty
 = (
DBTYPE
)
r
->type;

2053 
db
.
pgsize
 = 
r
->pgsize;

2054 
	`memy
(
db
.
feid
, 
r
->
uid
.
da
, 
DB_FILE_ID_LEN
);

2055 
db
.
ags
 = 
r
->flags;

2057 
	`F_CLR
(&
db
, 
DB_AM_OPEN_CALLED
);

2058 
db
.
mpf
 = *
mp
;

2059 i(
	`F_ISSET
(&
db
, 
DB_AM_INMEM
))

2060 ()
	`__memp_t_ags
(
db
.
mpf
, 
DB_MPOOL_NOFILE
, 1);

2061 i((
t
 = 
	`__db_v_mpo
(&
db
, 
r
->
fo
.
da
, 
ags
)) != 0) {

2062 ()
	`__memp_fo
(
db
.
mpf
, 0);

2063 *
mp
 = 
NULL
;

2065  (
t
);

2066 
	}
}

2076 
	$__p_pgg_q
(
dbv
, 
p
, 
q
, 
gags
)

2077 
DB_ENV
 *
dbv
;

2078 
REP
 *
p
;

2079 
__p_fefo_gs
 *
q
;

2080 
u_t32_t
 
gags
;

2082 
DBT
 
max_pg_dbt
;

2083 
__p_fefo_gs
 *
tmp
, 
t
;

2084 
size_t
 
n
;

2085 
u_t32_t
 
ags
;

2086 
loc
, 
t
;

2088 
t
 = 0;

2089 
loc
 = 0;

2098 i(
p
->
curfo
 =
NULL
)

2100 i(
q
 =
NULL
) {

2101 i((
t
 = 
	`__p_ffo_loc
(
dbv
, 
p
->
curfo
, &
tmp
)) != 0)

2102  (
t
);

2103 
loc
 = 1;

2105 
t
 = *
q
;

2106 
tmp
 = &
t
;

2115 
ags
 = 0;

2116 
	`memt
(&
max_pg_dbt
, 0, (max_pg_dbt));

2121 i(
	`FLD_ISSET
(
gags
, 
REP_GAP_FORCE
))

2122 
tmp
->
pgno
++;

2124 
tmp
->
pgno
 = 
p
->
ady_pg
;

2125 
max_pg_dbt
.
da
 = 
p
->
ffo
;

2126 
max_pg_dbt
.
size
 =

2127 (
u_t32_t
)((
u_t8_t
 *)
p
->
xtfo
 - (u_t8_*->
ffo
);

2128 i(
p
->
max_wa_pg
 =
PGNO_INVALID
 ||

2129 
	`FLD_ISSET
(
gags
, 
REP_GAP_FORCE
 | 
REP_GAP_REREQUEST
)) {

2134 i(
p
->
wag_pg
 =
PGNO_INVALID
) {

2135 i(
	`FLD_ISSET
(
gags
,

2136 
REP_GAP_FORCE
 | 
REP_GAP_REREQUEST
))

2137 
p
->
max_wa_pg
 =->
curfo
->
max_pgno
;

2139 
p
->
max_wa_pg
 =->
ady_pg
;

2146 i(
	`FLD_ISSET
(
gags
, 
REP_GAP_FORCE
) &&

2147 
p
->
wag_pg
 < 
tmp
->
pgno
)

2148 
p
->
max_wa_pg
 =->
curfo
->
max_pgno
;

2150 
p
->
max_wa_pg
 =->
wag_pg
 - 1;

2152 
tmp
->
max_pgno
 = 
p
->
max_wa_pg
;

2156 i(
	`FLD_ISSET
(
gags
, 
REP_GAP_REREQUEST
))

2157 
ags
 = 
DB_REP_REREQUEST
;

2159 
ags
 = 
DB_REP_ANYWHERE
;

2164 
p
->
max_wa_pg
 =->
ady_pg
;

2165 
tmp
->
max_pgno
 = 
p
->
ady_pg
;

2169 
ags
 = 
DB_REP_REREQUEST
;

2171 i(
p
->
ma_id
 !
DB_EID_INVALID
) {

2172 
	`STAT
(
p
->

.
_pg_queed
++);

2179 
t
 = 
	`__p_fefo_buf
(
p
->
ffo
, 
max_pg_dbt
.
size
, &
n
,

2180 
tmp
->
pgsize
,mp->
pgno
,mp->
max_pgno
,

2181 
tmp
->
fum
,mp->
id
,mp->
ty
,

2182 
tmp
->
ags
, &tmp->
uid
, &tmp->
fo
);

2183 
	`DB_ASSERT
(
dbv
, 
n
 =
max_pg_dbt
.
size
);

2184 ()
	`__p_nd_mesge
(
dbv
, 
p
->
ma_id
,

2185 
REP_PAGE_REQ
, 
NULL
, &
max_pg_dbt
, 0, 
ags
);

2187 ()
	`__p_nd_mesge
(
dbv
, 
DB_EID_BROADCAST
,

2188 
REP_MASTER_REQ
, 
NULL
, NULL, 0, 0);

2190 i(
loc
)

2191 
	`__os_
(
dbv
, 
tmp
);

2192  (
t
);

2193 
	}
}

2203 
	$__p_ffo_loc
(
dbv
, 
rc
, 
rp
)

2204 
DB_ENV
 *
dbv
;

2205 
__p_fefo_gs
 *
rc
, **
rp
;

2207 
__p_fefo_gs
 *
r
;

2208 
size_t
 
size
;

2209 
t
;

2210 *
uidp
, *
f
;

2215 
size
 = (
__p_fefo_gs
+ 
rc
->
uid
.size +

2216 
rc
->
fo
.
size
;

2217 i((
t
 = 
	`__os_mloc
(
dbv
, 
size
, &
r
)) != 0)

2218  (
t
);

2224 
	`memy
(
r
, 
rc
, (
__p_fefo_gs
));

2225 
uidp
 = (
u_t8_t
 *)
r
 + (
__p_fefo_gs
);

2226 
r
->
uid
.
da
 = 
uidp
;

2227 
	`memy
(
uidp
, 
rc
->
uid
.
da
,c->uid.
size
);

2229 
f
 = (
u_t8_t
 *)
uidp
 + 
rc
->
uid
.
size
;

2230 
r
->
fo
.
da
 = 
f
;

2231 
	`memy
(
f
, 
rc
->
fo
.
da
,c->fo.
size
);

2232 *
rp
 = 
r
;

2233  (
t
);

2234 
	}
}

2242 
	$__p_log_tup
(
dbv
, 
p
, 
fe
, 
vsi
, 
lp
)

2243 
DB_ENV
 *
dbv
;

2244 
REP
 *
p
;

2245 
u_t32_t
 
fe
;

2246 
u_t32_t
 
vsi
;

2247 
DB_LSN
 *
lp
;

2249 
DB_LOG
 *
db
;

2250 
DB_LSN
 
l
;

2251 
DB_TXNMGR
 *
mgr
;

2252 
DB_TXNREGION
 *
gi
;

2253 
LOG
 *

;

2254 
t
;

2256 
db
 = 
dbv
->
lg_hd
;

2257 

 = 
db
->
gfo
.
imy
;

2258 
mgr
 = 
dbv
->
tx_hd
;

2259 
gi
 = 
mgr
->
gfo
.
imy
;

2265 
	`LOG_SYSTEM_LOCK
(
dbv
);

2266 i((
t
 = 
	`__log_wfe
(
db
, &
l
, 
fe
, 
vsi
)) == 0 &&

2267 
lp
 !
NULL
)

2268 *
lp
 = 
l
;

2269 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

2277 
p
->
f_l
 = 

->
l
;

2278 
	`TXN_SYSTEM_LOCK
(
dbv
);

2279 
	`ZERO_LSN
(
gi
->
ϡ_ckp
);

2280 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

2281  (
t
);

2282 
	}
}

2305 
	$__p_queue_fede
(
dbv
, 
p
, 
r
)

2306 
DB_ENV
 *
dbv
;

2307 
REP
 *
p
;

2308 
__p_fefo_gs
 *
r
;

2310 #ide
HAVE_QUEUE


2311 
	`COMPQUIET
(
p
, 
NULL
);

2312 
	`COMPQUIET
(
r
, 
NULL
);

2313  (
	`__db_no_queue_am
(
dbv
));

2315 
db_pgno_t
 
f
, 
ϡ
;

2316 
u_t32_t
 
ags
;

2317 
emy
, 
t
, 
t_t
;

2319 
t
 = 0;

2320 i(
p
->
queue_dbp
 =
NULL
) {

2325 i((
t
 = 
	`__memp_sync_t
(
dbv
, 
NULL
, 0,

2326 
DB_SYNC_CACHE
 | 
DB_SYNC_INTERRUPT_OK
, 
NULL
, NULL)) != 0)

2327 
out
;

2328 i((
t
 =

2329 
	`__db__
(&
p
->
queue_dbp
, 
dbv
, 0)) != 0)

2330 
out
;

2331 
ags
 = 
DB_NO_AUTO_COMMIT
 |

2332 (
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
? 
DB_THREAD
 : 0);

2337 i((
t
 = 
	`__db_ݒ
(
p
->
queue_dbp
, 
NULL
,

2338 
	`FLD_ISSET
(
r
->
ags
, 
DB_AM_INMEM
? 
NULL
 :->
fo
.
da
,

2339 
	`FLD_ISSET
(
r
->
ags
, 
DB_AM_INMEM
?->
fo
.
da
 : 
NULL
,

2340 
DB_QUEUE
, 
ags
, 0, 
PGNO_BASE_MD
)) != 0)

2341 
out
;

2343 i((
t
 = 
	`__queue_gefo
(
p
->
queue_dbp
,

2344 &
f
, &
ϡ
, &
emy
, 0, 0)) != 0)

2345 
out
;

2346 
	`RPRINT
(
dbv
, (dbenv,

2348 (
u_lg
)
f
, (u_lg)
ϡ
, 
emy
));

2357 i(
r
->
max_pgno
 == 0) {

2362 i(
emy
)

2363 
out
;

2364 i(
f
 > 
ϡ
) {

2365 
r
->
max_pgno
 =

2366 
	`QAM_RECNO_PAGE
(
p
->
queue_dbp
, 
UINT32_MAX
);

2368 
r
->
max_pgno
 = 
ϡ
;

2369 
	`RPRINT
(
dbv
, (dbenv,

2371 (
u_lg
)
f
, (u_lg)
r
->
max_pgno
));

2372 
q
;

2373 } i(
r
->
max_pgno
 !
ϡ
) {

2380 
f
 = 1;

2381 
r
->
max_pgno
 = 
ϡ
;

2382 
	`RPRINT
(
dbv
, (dbenv,

2384 (
u_lg
)
f
, (u_lg)
ϡ
));

2385 
q
:

2391 
p
->
ages
 = 
f
;

2392 
p
->
ady_pg
 = 
f
;

2393 
p
->
wag_pg
 = 
r
->
max_pgno
 + 1;

2394 
p
->
max_wa_pg
 = 
PGNO_INVALID
;

2395 
t
 = 
	`__p_pgg_q
(
dbv
, 
p
, 
r
, 0);

2396  (
t
);

2403 
out
:

2404 i(
p
->
queue_dbp
 !
NULL
 &&

2405 (
t_t
 = 
	`__db_o
(
p
->
queue_dbp
, 
NULL
, 
DB_NOSYNC
)) != 0 &&

2406 
t
 == 0)

2407 
t
 = 
t_t
;

2408 
p
->
queue_dbp
 = 
NULL
;

2409 i(
t
 == 0)

2410 
t
 = 
DB_REP_PAGEDONE
;

2411  (
t
);

2413 
	}
}

2419 
	$__p_move__fe
(
dbv
)

2420 
DB_ENV
 *
dbv
;

2422 
t
;

2423 *
me
;

2425 i((
t
 = 
	`__db_ame
(

2426 
dbv
, 
DB_APP_NONE
, 
REP_INITNAME
, 0, 
NULL
, &
me
)) != 0)

2427  (
t
);

2428 ()
	`__os_uƚk
(
dbv
, 
me
);

2429 
	`__os_
(
dbv
, 
me
);

2431 
	}
}

2449 
	$__p_t_
(
dbv
)

2450 
DB_ENV
 *
dbv
;

2452 
DB_FH
 *
fhp
;

2453 
__p_upde_gs
 *
rup
;

2454 
DBT
 
dbt
;

2455 *
lod_d
, *
d
, *
_me
;

2456 *
xt
;

2457 
t
, 
t_t
;

2459 
lod_d
 = 
NULL
;

2460 
rup
 = 
NULL
;

2461 
dbt
.
da
 = 
NULL
;

2463 i((
t
 = 
	`__db_ame
(

2464 
dbv
, 
DB_APP_NONE
, 
REP_INITNAME
, 0, 
NULL
, &
_me
)) != 0)

2465  (
t
);

2467 i((
t
 = 
	`__os_ݒ
(
dbv
, 
_me
, 0, 
DB_OSO_RDONLY
,

2468 
	`__db_omode
(
OWNER_RW
), &
fhp
)) != 0) {

2469 i(
t
 =
ENOENT
)

2470 
t
 = 0;

2471 
out
;

2474 
	`RPRINT
(
dbv
, (dbenv, "Cleaning up interrupted internal init"));

2489 
t
 = 
	`__p_g_fe_li
(
dbv
, 
fhp
, &
dbt
);

2490 i((
t_t
 = 
	`__os_ohd
(
dbv
, 
fhp
)!0 || 
t
 != 0) {

2491 i(
t
 == 0)

2492 
t
 = 
t_t
;

2493 
out
;

2495 i(
dbt
.
da
 =
NULL
) {

2503 
rm
;

2507 i(
dbv
->
db_log_d
 =
NULL
)

2508 
d
 = 
dbv
->
db_home
;

2510 i((
t
 = 
	`__db_ame
(
dbv
, 
DB_APP_NONE
,

2511 
dbv
->
db_log_d
, 0, 
NULL
, &
d
)) != 0)

2512 
out
;

2513 
lod_d
 = 
d
;

2516 i((
t
 = 
	`__p_move_by_efix
(
dbv
,

2517 
d
, 
LFPREFIX
, (LFPREFIX)-1, 
DB_APP_LOG
)) != 0)

2518 
out
;

2524 i((
t
 = 
	`__p_upde_ad
(
dbv
, 
dbt
.
da
, &
xt
, &
rup
)) != 0)

2525 
out
;

2526 i((
t
 = 
	`__p_move_by_li
(
dbv
, 
xt
, 
rup
->
num_fes
)) != 0)

2527 
out
;

2530 
rm
: ()
	`__os_uƚk
(
dbv
, 
_me
);

2531 
out
: i(
rup
 !
NULL
)

2532 
	`__os_
(
dbv
, 
rup
);

2533 i(
lod_d
 !
NULL
)

2534 
	`__os_
(
dbv
, 
lod_d
);

2535 i(
dbt
.
da
 !
NULL
)

2536 
	`__os_
(
dbv
, 
dbt
.
da
);

2538 
	`__os_
(
dbv
, 
_me
);

2539  (
t
);

2540 
	}
}

2553 
	$__p_g_fe_li
(
dbv
, 
fhp
, 
dbt
)

2554 
DB_ENV
 *
dbv
;

2555 
DB_FH
 *
fhp
;

2556 
DBT
 *
dbt
;

2558 
u_t32_t
 
ngth
;

2559 
size_t
 
t
;

2560 
i
, 
t
;

2563 
dbt
->
da
 = 
NULL
;

2564 
i
 = 1; i <= 2; i++) {

2565 i((
t
 = 
	`__os_ad
(
dbv
,

2566 
fhp
, &
ngth
, ֒gth), &
t
)) != 0)

2567 
r
;

2573 i(
t
 =0 && 
dbt
->
da
 !
NULL
)

2575 i(
t
 !(
ngth
))

2576 
r
;

2578 i((
t
 = 
	`__os_loc
(
dbv
,

2579 (
size_t
)
ngth
, &
dbt
->
da
)) != 0)

2580 
r
;

2582 i((
t
 = 
	`__os_ad
(

2583 
dbv
, 
fhp
, 
dbt
->
da
, 
ngth
, &
t
)) != 0 ||

2584 
t
 !(
size_t
)
ngth
)

2585 
r
;

2588 
dbt
->
size
 = 
ngth
;

2591 
r
:

2597 i(
dbt
->
da
 !
NULL
)

2598 
	`__os_
(
dbv
, 
dbt
->
da
);

2599 
dbt
->
da
 = 
NULL
;

2600  (
t
);

2601 
	}
}

2608 
	$__p_move_by_efix
(
dbv
, 
d
, 
efix
, 
ef_n
, 
ame
)

2609 
DB_ENV
 *
dbv
;

2610 cڡ *
d
;

2611 cڡ *
efix
;

2612 
size_t
 
ef_n
;

2613 
APPNAME
 
ame
;

2615 *
m
, **
mes
;

2616 
t
, 
i
, 
t
;

2618 i((
t
 = 
	`__os_dli
(
dbv
, 
d
, &
mes
, &
t
)) != 0)

2619  (
t
);

2620 
i
 = 0; i < 
t
; i++) {

2621 i(
	`cmp
(
mes
[
i
], 
efix
, 
ef_n
) == 0) {

2622 i((
t
 = 
	`__db_ame
(
dbv
,

2623 
ame
, 
mes
[
i
], 0, 
NULL
, &
m
)) != 0)

2624 
out
;

2625 ()
	`__os_uƚk
(
dbv
, 
m
);

2626 
	`__os_
(
dbv
, 
m
);

2629 
out
: 
	`__os_d
(
dbv
, 
mes
, 
t
);

2630  (
t
);

2631 
	}
}

2642 
	$__p_move_by_li
(
dbv
, 
fi
, 
cou
)

2643 
DB_ENV
 *
dbv
;

2644 *
fi
;

2645 
u_t32_t
 
cou
;

2647 
__p_fefo_gs
 *
fe_g
;

2648 **
dd
, *
d
, *
m
;

2649 
t
;

2651 
t
 = 0;

2652 
fe_g
 = 
NULL
;

2653 
cou
-- > 0) {

2654 i((
t
 = 
	`__p_fefo_ad
(
dbv
,

2655 
fi
, &fi, &
fe_g
)) != 0)

2656 
out
;

2657 i((
t
 = 
	`__db_ame
(
dbv
,

2658 
DB_APP_DATA
, 
fe_g
->
fo
.
da
, 0, 
NULL
, &
m
)) != 0)

2659 
out
;

2660 ()
	`__os_uƚk
(
dbv
, 
m
);

2661 
	`__os_
(
dbv
, 
m
);

2662 
	`__os_
(
dbv
, 
fe_g
);

2663 
fe_g
 = 
NULL
;

2667 i(
dbv
->
db_da_d
 =
NULL
)

2668 
t
 = 
	`__p_move_by_efix
(
dbv
, dbv->
db_home
,

2669 
QUEUE_EXTENT_PREFIX
, (QUEUE_EXTENT_PREFIX) - 1,

2670 
DB_APP_DATA
);

2672 
dd
 = 
dbv
->
db_da_d
; *dd !
NULL
; ++ddir) {

2673 i((
t
 = 
	`__db_ame
(
dbv
, 
DB_APP_NONE
,

2674 *
dd
, 0, 
NULL
, &
d
)) != 0)

2676 
t
 = 
	`__p_move_by_efix
(
dbv
, 
d
,

2677 
QUEUE_EXTENT_PREFIX
, (QUEUE_EXTENT_PREFIX)-1,

2678 
DB_APP_DATA
);

2679 
	`__os_
(
dbv
, 
d
);

2680 i(
t
 != 0)

2685 
out
:

2686 i(
fe_g
 !
NULL
)

2687 
	`__os_
(
dbv
, 
fe_g
);

2688  (
t
);

2689 
	}
}

	@../rep/rep_elect.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

23 
	#IS_PHASE1_DONE
(
p
) \

24 ((
p
)->
ses
 >ԕ)->
nses
 && (p)->
w_iܙy
 > 0)

	)

26 
	#I_HAVE_WON
(
p
, 
wr
) \

27 ((
p
)->
ves
 >ԕ)->
nves
 && 
wr
 =ԕ)->
eid
)

	)

29 
__p_cmp_ve
 
__P
((
DB_ENV
 *, 
REP
 *, , 
DB_LSN
 *,

30 , 
u_t32_t
, u_int32_t, u_int32_t));

31 
__p_e_


32 
__P
((
DB_ENV
 *, , , *, 
u_t32_t
 *));

33 
__p_fe_eed
 
__P
((
DB_ENV
 *, 
REP
 *, 
u_t32_t
));

34 
__p_e_ma
 
__P
((
DB_ENV
 *, 
REP
 *));

35 
__p_y
 
__P
((
DB_ENV
 *, 
REP
 *, , *, 
u_t32_t
, 
roff_t
));

36 
__p_wa
 
__P
((
DB_ENV
 *, 
db_timeout_t
 *, *, , 
u_t32_t
));

46 
	$__p_e
(
dbv
, 
giv_nses
, 
nves
, 
ags
)

47 
DB_ENV
 *
dbv
;

48 
giv_nses
, 
nves
;

49 
u_t32_t
 
ags
;

51 
DB_LOG
 *
db
;

52 
DB_LSN
 
l
;

53 
DB_REP
 *
db_p
;

54 
DB_THREAD_INFO
 *

;

55 
LOG
 *

;

56 
REP
 *
p
;

57 
ack
, 
de
, 
eid
, 
eed
, 
fu_e
, 
locked
, 
_ogss
, 
ed_q
;

58 
nses
, 
iܙy
, 
i
, 
t
, 
nd_ve
, 
t_t
;

59 
u_t32_t
 
lags
, 
eg
, 
ig_y
, 
tbak
;

60 
db_timeout_t
 
timeout
, 
to
;

62 
	`COMPQUIET
(
ags
, 0);

63 
	`COMPQUIET
(
eg
, 0);

65 
	`PANIC_CHECK
(
dbv
);

66 
	`ENV_REQUIRES_CONFIG_XX
(

67 
dbv
, 
p_hd
, "DB_ENV->p_e", 
DB_INIT_REP
);

70 i(
	`IS_USING_LEASES
(
dbv
&& 
giv_nses
 != 0) {

71 
	`__db_rx
(
dbv
,

73  (
EINVAL
);

75 i(
giv_nses
 < 0) {

76 
	`__db_rx
(
dbv
,

78  (
EINVAL
);

80 i(
nves
 < 0) {

81 
	`__db_rx
(
dbv
,

83  (
EINVAL
);

86 
db_p
 = 
dbv
->
p_hd
;

87 
p
 = 
db_p
->
gi
;

88 
db
 = 
dbv
->
lg_hd
;

89 

 = 
db
->
gfo
.
imy
;

90 
eed
 = 0;

97 
nses
 = 
giv_nses
 =0 ? 
db_p
->
cfig_nses
 : given_nsites;

98 
ack
 = 
nves
 =0 ? 
	`ELECTION_MAJORITY
(
nses
) :votes;

99 
locked
 = 0;

108 i(
ack
 <(
nses
 / 2)) {

109 
	`__db_rx
(
dbv
,

111 
nves
, 
nses
);

114 i(
nses
 < 
ack
) {

115 
	`__db_rx
(
dbv
,

117 
ack
, 
nses
);

118  (
EINVAL
);

125 
fu_e
 = 0;

126 
timeout
 = 
p
->
e_timeout
;

127 i(!
	`F_ISSET
(
p
, 
REP_F_GROUP_ESTD
&&->
fu_e_timeout
 != 0) {

128 
fu_e
 = 1;

129 
timeout
 = 
p
->
fu_e_timeout
;

131 
i
 = 
p
->
iܙy
;

133 
	`RPRINT
(
dbv
, (dbenv, "Startlectionsites %d,ck %d,riority %d",

134 
nses
, 
ack
, 
i
));

147 
lags
 = 
i
 !0 ? 
REPCTL_ELECTABLE
 : 0;

148 
	`ENV_ENTER
(
dbv
, 

);

150 
ig_y
 = 0;

151 i((
t
 = 
	`__p_e_
(
dbv
, 
nses
, 
ack
,

152 &
_ogss
, &
ig_y
)) != 0) {

153 i(
t
 =
DB_REP_NEWMASTER
)

154 
t
 = 0;

155 
r
;

161 i(
_ogss
)

162 
ede
;

164 
iܙy
 = 

->
rsi
.
vsi
 !
DB_LOGVERSION
 ? 0 : 
i
;

165 #ifdef 
CONFIG_TEST


170 i(
iܙy
 > 0 &&riority <= 5) {

171 
	`RPRINT
(
dbv
, (dbenv,

173 
	`DB_ASSERT
(
dbv
, 
lags
 =
REPCTL_ELECTABLE
);

174 
iܙy
 = 0;

177 
	`__os_gtime
(
dbv
, &
p
->
ime
);

178 
	`REP_SYSTEM_LOCK
(
dbv
);

183 i(
	`IS_USING_LEASES
(
dbv
)) {

184 
to
 = 
	`__p_a_watime
(
dbv
);

185 i(
to
 != 0) {

186 
	`F_SET
(
p
, 
REP_F_EPHASE0
);

187 
	`REP_SYSTEM_UNLOCK
(
dbv
);

188 ()
	`__p_nd_mesge
(
dbv
, 
DB_EID_BROADCAST
,

189 
REP_MASTER_REQ
, 
NULL
, NULL, 0, 0);

190 
t
 = 
	`__p_wa
(
dbv
, &
to
, &
eid
,

191 0, 
REP_F_EPHASE0
);

192 
	`REP_SYSTEM_LOCK
(
dbv
);

193 
	`F_CLR
(
p
, 
REP_F_EPHASE0
);

194 
t
) {

199 
DB_REP_EGENCHG
:

201 
	`REP_SYSTEM_UNLOCK
(
dbv
);

202 
ede
;

206 
DB_TIMEOUT
:

209 
lockde
;

219 i((
t
 = 
	`__p_lockout_y
(
dbv
, 
p
, 0)) != 0)

220 
lockde
;

221 
locked
 = 1;

222 
to
 = 
timeout
;

223 
	`REP_SYSTEM_UNLOCK
(
dbv
);

224 
t
:

226 
	`__os_unique_id
(
dbv
, &
tbak
);

227 
	`LOG_SYSTEM_LOCK
(
dbv
);

228 
l
 = 

->lsn;

229 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

230 
	`REP_SYSTEM_LOCK
(
dbv
);

232 
	`F_SET
(
p
, 
REP_F_EPHASE1
 | 
REP_F_NOARCHIVE
);

233 
	`F_CLR
(
p
, 
REP_F_TALLY
);

240 i(
	`IS_USING_LEASES
(
dbv
) &&

241 
	`__p_i_ged
(
dbv
)) {

242 
t
 = 0;

243 
lockde
;

255 i(
	`F_ISSET
(
p
, 
REP_F_READY_API
 | 
REP_F_READY_OP
 |

256 
REP_F_RECOVER_LOG
 | 
REP_F_RECOVER_PAGE
 | 
REP_F_RECOVER_UPDATE
)) {

257 
	`RPRINT
(
dbv
, (dbenv,

259 
iܙy
 = 0;

260 
lags
 = 0;

269 i((
t
 = 
	`__p_wre_eg
(
dbv
, 
p
->
eg
 + 1)) != 0)

270 
lockde
;

273 i(
	`__p_y
(
dbv
, 
p
,->
eid
, &p->
ses
,->
eg
,

274 
p
->
y_off
) != 0) {

275 
t
 = 
EINVAL
;

276 
lockde
;

278 
	`__p_cmp_ve
(
dbv
, 
p
,->
eid
, &
l
, 
iܙy
,->
g
,

279 
tbak
, 
lags
);

281 
	`RPRINT
(
dbv
, (dbenv, "Beginningnlection"));

284 
nd_ve
 = 
DB_EID_INVALID
;

285 
eg
 = 
p
->egen;

286 
de
 = 
	`IS_PHASE1_DONE
(
p
);

287 
	`REP_SYSTEM_UNLOCK
(
dbv
);

288 
	`__p_nd_ve
(
dbv
, &
l
, 
nses
, 
ack
, 
iܙy
, 
tbak
, 
eg
,

289 
DB_EID_BROADCAST
, 
REP_VOTE1
, 
lags
);

290 
	`DB_ENV_TEST_RECOVERY
(
dbv
, 
DB_TEST_ELECTVOTE1
, 
t
, 
NULL
);

291 i(
de
) {

292 
	`REP_SYSTEM_LOCK
(
dbv
);

293 
ve
;

295 
t
 = 
	`__p_wa
(
dbv
, &
to
, &
eid
, 
fu_e
, 
REP_F_EPHASE1
);

296 
t
) {

299 i(
eid
 !
DB_EID_INVALID
 && !
	`IN_ELECTION
(
p
)) {

300 
	`RPRINT
(
dbv
,

301 (
dbv
, "Endedlectionhase 1"));

302 
ede
;

304 
pha2
;

305 
DB_REP_EGENCHG
:

306 i(
to
 > 
timeout
)

307 
to
 = 
timeout
;

308 
to
 = (to * 8) / 10;

309 
	`RPRINT
(
dbv
, (dbenv,

311 (
u_lg
)
p
->
eg
, (u_lg)
to
, (u_lg)
timeout
));

320 
t
;

321 
DB_TIMEOUT
:

324 
r
;

332 
	`REP_SYSTEM_LOCK
(
dbv
);

337 i(
eg
 !
p
->egen) {

338 
	`REP_SYSTEM_UNLOCK
(
dbv
);

339 
	`RPRINT
(
dbv
, (dbenv, "Egen changed from %luo %lu",

340 (
u_lg
)
eg
, (u_lg)
p
->egen));

341 
t
;

343 i(
p
->
ses
 >p->
nves
) {

344 
ve
:

346 
nd_ve
 = 
p
->
wr
;

352 i(
p
->
wr
 =p->
eid
) {

353 ()
	`__p_y
(
dbv
, 
p
,->
eid
, &p->
ves
,

354 
eg
, 
p
->
v2y_off
);

355 
	`RPRINT
(
dbv
, (dbenv,

356 "Coued my vِ%d", 
p
->
ves
));

358 
	`F_SET
(
p
, 
REP_F_EPHASE2
);

359 
	`F_CLR
(
p
, 
REP_F_EPHASE1
);

361 
	`REP_SYSTEM_UNLOCK
(
dbv
);

362 i(
nd_ve
 =
DB_EID_INVALID
) {

364 i(
p
->
ses
 >p->
nves
)

365 
	`__db_rx
(
dbv
,

367 
p
->
ses
,->
nves
,->
nses
);

369 
	`__db_rx
(
dbv
,

371 
p
->
ses
,->
nves
,->
nses
);

372 
t
 = 
DB_REP_UNAVAIL
;

373 
r
;

380 i(
nd_ve
 !
p
->
eid
) {

381 
	`RPRINT
(
dbv
, (dbenv, "Sending vote"));

382 
	`__p_nd_ve
(
dbv
, 
NULL
, 0, 0, 0, 0, 
eg
,

383 
nd_ve
, 
REP_VOTE2
, 0);

396 
to
 =o * 2;

399 
pha2
:

400 i(
	`I_HAVE_WON
(
p
,->
wr
)) {

401 
	`RPRINT
(
dbv
, (dbenv,

402 "Skpgha2 wa:̗dy g %d ves", 
p
->
ves
));

403 
	`REP_SYSTEM_LOCK
(
dbv
);

404 
i_w
;

406 
t
 = 
	`__p_wa
(
dbv
, &
to
, &
eid
, 
fu_e
, 
REP_F_EPHASE2
);

407 
	`RPRINT
(
dbv
, (dbv, "Endediڅha 2 %d", 
t
));

408 
t
) {

410 i(
eid
 !
DB_EID_INVALID
)

411 
ede
;

412 
t
 = 
DB_REP_UNAVAIL
;

414 
DB_REP_EGENCHG
:

415 i(
to
 > 
timeout
)

416 
to
 = 
timeout
;

417 
to
 = (to * 8) / 10;

418 
	`RPRINT
(
dbv
, (dbenv,

420 (
u_lg
)
p
->
eg
,

421 (
u_lg
)
to
, (u_lg)
timeout
));

422 
t
;

423 
DB_TIMEOUT
:

424 
t
 = 
DB_REP_UNAVAIL
;

427 
r
;

429 
	`REP_SYSTEM_LOCK
(
dbv
);

430 i(
eg
 !
p
->egen) {

431 
	`REP_SYSTEM_UNLOCK
(
dbv
);

432 
	`RPRINT
(
dbv
, (dbenv,

434 (
u_lg
)
eg
, (u_lg)
p
->egen));

435 
t
;

437 
de
 = 
p
->
ves
 >p->
nves
;

438 
	`RPRINT
(
dbv
, (dbenv,

440 
p
->
ves
,->
nves
,->
nses
));

441 i(
	`I_HAVE_WON
(
p
,->
wr
)) {

442 
i_w
: 
	`__p_e_ma
(
dbv
, 
p
);

443 
t
 = 0;

444 
eed
 = 1;

447 
r
: 
	`REP_SYSTEM_LOCK
(
dbv
);

449 
lockde
:

456 i(
t
 =0 || =
DB_REP_UNAVAIL
)

457 
	`__p_e_de
(
dbv
, 
p
);

458 i(
ig_y
)

459 
	`F_SET
(
p
, 
ig_y
);

466 
ede
: 
	`REP_SYSTEM_LOCK
(
dbv
);

468 
	`F_CLR
(
p
, 
REP_F_INREPELECT
);

469 i(
locked
) {

470 
ed_q
 = 
	`F_ISSET
(
p
, 
REP_F_SKIPPED_APPLY
);

471 
	`F_CLR
(
p
, 
REP_F_READY_APPLY
 | 
REP_F_SKIPPED_APPLY
);

472 
	`REP_SYSTEM_UNLOCK
(
dbv
);

476 i(
ed_q
 && (
t_t
 = 
	`__p_nd_q
(
dbv
, 0)) != 0 &&

477 
t
 == 0)

478 
t
 = 
t_t
;

480 
	`REP_SYSTEM_UNLOCK
(
dbv
);

482 i(
eed
)

483 
t
 = 
	`__p_fe_eed
(
dbv
, 
p
, 
eg
);

485 
	`RPRINT
(
dbv
, (dbenv,

487 
t
, 
p
->
ses
, (
u_lg
->
eg
, (u_lg->
ags
));

489 
DB_TEST_RECOVERY_LABEL


490 
	`ENV_LEAVE
(
dbv
, 

);

491  (
t
);

492 
	}
}

501 
	$__p_ve1
(
dbv
, 

, 
c
, 
eid
)

502 
DB_ENV
 *
dbv
;

503 
REP_CONTROL
 *

;

504 
DBT
 *
c
;

505 
eid
;

507 
DB_LOG
 *
db
;

508 
DB_LSN
 
l
;

509 
DB_REP
 *
db_p
;

510 
DBT
 
da_dbt
;

511 
LOG
 *

;

512 
REP
 *
p
;

513 
REP_OLD_VOTE_INFO
 *
ovi
;

514 
REP_VOTE_INFO
 
tmpvi
, *
vi
;

515 
u_t32_t
 
eg
;

516 
eed
, 
ma
, 
t
;

518 
	`COMPQUIET
(
eg
, 0);

520 
eed
 = 
t
 = 0;

521 
db_p
 = 
dbv
->
p_hd
;

522 
p
 = 
db_p
->
gi
;

523 
db
 = 
dbv
->
lg_hd
;

524 

 = 
db
->
gfo
.
imy
;

526 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

527 
	`RPRINT
(
dbv
, (dbenv, "Mastereceived vote"));

528 
	`LOG_SYSTEM_LOCK
(
dbv
);

529 
l
 = 

->lsn;

530 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

531 ()
	`__p_nd_mesge
(
dbv
,

532 
DB_EID_BROADCAST
, 
REP_NEWMASTER
, &
l
, 
NULL
, 0, 0);

533 i(
	`IS_USING_LEASES
(
dbv
))

534 
t
 = 
	`__p_a_esh
(
dbv
);

535  (
t
);

538 i(
p
->
vsi
 =
DB_REPVERSION_42
) {

539 
ovi
 = (
REP_OLD_VOTE_INFO
 *)
c
->
da
;

540 
tmpvi
.
eg
 = 
ovi
->egen;

541 
tmpvi
.
nses
 = 
ovi
->nsites;

542 
tmpvi
.
nves
 = 
ovi
->
nses
 / 2 + 1;

543 
tmpvi
.
iܙy
 = 
ovi
->priority;

544 
tmpvi
.
tbak
 = 
ovi
->tiebreaker;

545 
vi
 = &
tmpvi
;

547 
vi
 = (
REP_VOTE_INFO
 *)
c
->
da
;

548 
	`REP_SYSTEM_LOCK
(
dbv
);

556 
	`RPRINT
(
dbv
, (dbenv, "Received vote1gen %lu,gen %lu",

557 (
u_lg
)
vi
->
eg
, (u_lg)
p
->egen));

558 i(
vi
->
eg
 < 
p
->egen) {

559 
	`RPRINT
(
dbv
, (dbenv,

561 (
u_lg
)
vi
->
eg
, (u_lg)
p
->egen));

562 
eg
 = 
p
->egen;

563 
	`REP_SYSTEM_UNLOCK
(
dbv
);

564 
da_dbt
.
da
 = &
eg
;

565 
da_dbt
.
size
 = (
eg
);

566 ()
	`__p_nd_mesge
(
dbv
,

567 
eid
, 
REP_ALIVE
, &

->
l
, &
da_dbt
, 0, 0);

568  (
t
);

570 i(
vi
->
eg
 > 
p
->egen) {

571 
	`RPRINT
(
dbv
, (dbenv,

573 (
u_lg
)
vi
->
eg
, (u_lg)
p
->egen));

574 
	`__p_e_de
(
dbv
, 
p
);

575 
p
->
eg
 = 
vi
->egen;

583 i(!
	`IN_ELECTION_TALLY
(
p
)) {

584 
	`F_SET
(
p
, 
REP_F_TALLY
);

585 
p
->
nses
 = 
vi
->nsites;

586 
p
->
nves
 = 
vi
->nvotes;

588 i(
vi
->
nses
 > 
p
->nsites)

589 
p
->
nses
 = 
vi
->nsites;

590 i(
vi
->
nves
 > 
p
->nvotes)

591 
p
->
nves
 = 
vi
->nvotes;

598 i(
p
->
ses
 + 1 >->
nses
)

599 
p
->
nses
 =->
ses
 + 1;

600 i(
p
->
nses
 >->
ases
 &&

601 (
t
 = 
	`__p_grow_ses
(
dbv
, 
p
->
nses
)) != 0) {

602 
	`RPRINT
(
dbv
, (dbenv,

603 "Grow setued %d", 
t
));

604 
r
;

610 i(
	`F_ISSET
(
p
, 
REP_F_EPHASE2
)) {

611 
	`RPRINT
(
dbv
, (dbenv, "Inhase 2, ignoring vote1"));

612 
r
;

619 i((
t
 = 
	`__p_y
(
dbv
, 
p
, 
eid
, &p->
ses
,

620 
vi
->
eg
, 
p
->
y_off
)) != 0) {

621 
	`RPRINT
(
dbv
, (dbenv, "Tallyeturned %d, sites %d",

622 
t
, 
p
->
ses
));

623 
t
 = 0;

624 
r
;

626 
	`RPRINT
(
dbv
, (dbenv,

628 
eid
, 
vi
->
iܙy
,

629 
	`F_ISSET
(

, 
REPCTL_ELECTABLE
) ? "ELECTABLE" : "",

630 (
u_lg
)

->
g
, (u_lg)
vi
->
eg
,

631 (
u_lg
)

->
l
.
fe
, (u_lgp->l.
offt
));

632 i(
p
->
ses
 > 1)

633 
	`RPRINT
(
dbv
, (dbenv,

635 
p
->
wr
,->
w_iܙy
,

636 (
u_lg
)
p
->
w_g
,->
ses
,

637 (
u_lg
)
p
->
w_l
.
fe
,

638 (
u_lg
)
p
->
w_l
.
offt
));

640 
	`__p_cmp_ve
(
dbv
, 
p
, 
eid
, &

->
l
, 
vi
->
iܙy
,

641 

->
g
, 
vi
->
tbak
,p->
ags
);

647 i(!
	`IN_ELECTION
(
p
)) {

648 
	`RPRINT
(
dbv
, (dbenv,

649 "N iei, buived ve1 0x%x", 
p
->
ags
));

650 
t
 = 
DB_REP_HOLDELECTION
;

651 
r
;

654 
ma
 = 
p
->
wr
;

655 
l
 = 
p
->
w_l
;

656 i(
	`IS_PHASE1_DONE
(
p
)) {

657 
	`RPRINT
(
dbv
, (dbenv, "Phase1lection done"));

658 
	`RPRINT
(
dbv
, (dbenv, "Voting for %d%s",

659 
ma
, ma =
p
->
eid
 ? "(self)" : ""));

660 
eg
 = 
p
->egen;

661 
	`F_SET
(
p
, 
REP_F_EPHASE2
);

662 
	`F_CLR
(
p
, 
REP_F_EPHASE1
);

663 i(
ma
 =
p
->
eid
) {

664 ()
	`__p_y
(
dbv
, 
p
,->
eid
,

665 &
p
->
ves
, 
eg
,->
v2y_off
);

666 
	`RPRINT
(
dbv
, (dbenv,

668 
p
->
ves
,->
nves
));

669 i(
	`I_HAVE_WON
(
p
,->
wr
)) {

670 
	`__p_e_ma
(
dbv
, 
p
);

671 
eed
 = 1;

673 
r
;

675 
	`REP_SYSTEM_UNLOCK
(
dbv
);

678 
	`__p_nd_ve
(
dbv
, 
NULL
, 0, 0, 0, 0, 
eg
,

679 
ma
, 
REP_VOTE2
, 0);

681 
r
: 
	`REP_SYSTEM_UNLOCK
(
dbv
);

682 i(
eed
)

683 
t
 = 
	`__p_fe_eed
(
dbv
, 
p
, 
eg
);

684  (
t
);

685 
	}
}

694 
	$__p_ve2
(
dbv
, 
c
, 
eid
)

695 
DB_ENV
 *
dbv
;

696 
DBT
 *
c
;

697 
eid
;

699 
DB_LOG
 *
db
;

700 
DB_LSN
 
l
;

701 
DB_REP
 *
db_p
;

702 
LOG
 *

;

703 
REP
 *
p
;

704 
REP_OLD_VOTE_INFO
 *
ovi
;

705 
REP_VOTE_INFO
 
tmpvi
, *
vi
;

706 
u_t32_t
 
eg
;

707 
t
;

709 
t
 = 0;

710 
db_p
 = 
dbv
->
p_hd
;

711 
p
 = 
db_p
->
gi
;

712 
db
 = 
dbv
->
lg_hd
;

713 

 = 
db
->
gfo
.
imy
;

715 
	`RPRINT
(
dbv
, (dbenv, "Weeceived vote%s",

716 
	`F_ISSET
(
p
, 
REP_F_MASTER
) ? " (master)" : ""));

717 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

718 
	`LOG_SYSTEM_LOCK
(
dbv
);

719 
l
 = 

->lsn;

720 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

721 
	`STAT
(
p
->

.
_eis_w
++);

722 ()
	`__p_nd_mesge
(
dbv
,

723 
DB_EID_BROADCAST
, 
REP_NEWMASTER
, &
l
, 
NULL
, 0, 0);

724 i(
	`IS_USING_LEASES
(
dbv
))

725 
t
 = 
	`__p_a_esh
(
dbv
);

726  (
t
);

729 
	`REP_SYSTEM_LOCK
(
dbv
);

730 
eg
 = 
p
->egen;

733 
	`DB_ASSERT
(
dbv
, 
p
->
iܙy
 != 0);

743 i(
p
->
vsi
 =
DB_REPVERSION_42
) {

744 
ovi
 = (
REP_OLD_VOTE_INFO
 *)
c
->
da
;

745 
tmpvi
.
eg
 = 
ovi
->egen;

746 
tmpvi
.
nses
 = 
ovi
->nsites;

747 
tmpvi
.
nves
 = 
ovi
->
nses
 / 2 + 1;

748 
tmpvi
.
iܙy
 = 
ovi
->priority;

749 
tmpvi
.
tbak
 = 
ovi
->tiebreaker;

750 
vi
 = &
tmpvi
;

752 
vi
 = (
REP_VOTE_INFO
 *)
c
->
da
;

753 i(!
	`IN_ELECTION_TALLY
(
p
&& 
vi
->
eg
 >=ep->egen) {

754 
	`RPRINT
(
dbv
, (dbenv,

756 (
u_lg
)
vi
->
eg
, (u_lg)
p
->egen));

757 
t
 = 
DB_REP_HOLDELECTION
;

758 
r
;

781 i(
vi
->
eg
 !
p
->egen) {

782 
	`RPRINT
(
dbv
, (dbenv, "Bad votegen %lu. Mine %lu",

783 (
u_lg
)
vi
->
eg
, (u_lg)
p
->egen));

784 
t
 = 0;

785 
r
;

791 i((
t
 = 
	`__p_y
(
dbv
, 
p
, 
eid
, &p->
ves
,

792 
vi
->
eg
, 
p
->
v2y_off
)) != 0) {

793 
t
 = 0;

794 
r
;

796 
	`RPRINT
(
dbv
, (dbenv, "Counted vote %d of %d",

797 
p
->
ves
,->
nves
));

798 i(
	`I_HAVE_WON
(
p
,->
wr
)) {

799 
	`__p_e_ma
(
dbv
, 
p
);

800 
t
 = 
DB_REP_NEWMASTER
;

803 
r
: 
	`REP_SYSTEM_UNLOCK
(
dbv
);

804 i(
t
 =
DB_REP_NEWMASTER
)

805 
t
 = 
	`__p_fe_eed
(
dbv
, 
p
, 
eg
);

806  (
t
);

807 
	}
}

818 
	$__p_y
(
dbv
, 
p
, 
eid
, 
coup
, 
eg
, 
vtoff
)

819 
DB_ENV
 *
dbv
;

820 
REP
 *
p
;

821 
eid
, *
coup
;

822 
u_t32_t
 
eg
;

823 
roff_t
 
vtoff
;

825 
REP_VTALLY
 *
y
, *
v
;

826 
i
;

828 
y
 = 
	`R_ADDR
((
REGINFO
 *)
dbv
->
gfo
, 
vtoff
);

829 
i
 = 0;

830 
v
 = &
y
[
i
];

831 
i
 < *
coup
) {

842 i(
v
->
eid
 ==id) {

843 
	`RPRINT
(
dbv
, (dbenv,

845 
i
, 
v
->
eid
, (
u_lg
)v->
eg
,

846 
eid
, (
u_lg
)
eg
));

847 i(
v
->
eg
 >=gen)

850 
v
->
eg
 =gen;

854 
i
++;

855 
v
 = &
y
[
i
];

862 
	`RPRINT
(
dbv
, (dbenv, "Tallying VOTE%c[%d] (%d, %lu)",

863 
vtoff
 =
p
->
y_off
 ? '1' : '2', 
i
, 
eid
, (
u_lg
)
eg
));

865 
v
->
eid
 =id;

866 
v
->
eg
 =gen;

867 (*
coup
)++;

869 
	}
}

878 
	$__p_cmp_ve
(
dbv
, 
p
, 
eid
, 
lp
, 
iܙy
, 
g
, 
tbak
, 
ags
)

879 
DB_ENV
 *
dbv
;

880 
REP
 *
p
;

881 
eid
;

882 
DB_LSN
 *
lp
;

883 
iܙy
;

884 
u_t32_t
 
ags
, 
g
, 
tbak
;

886 
cmp
;

888 
cmp
 = 
	`LOG_COMPARE
(
lp
, &
p
->
w_l
);

893 i(
p
->
ses
 > 1 &&

894 (
iܙy
 !0 || 
	`LF_ISSET
(
REPCTL_ELECTABLE
))) {

909 i((
iܙy
 !0 && 
p
->
w_iܙy
 == 0) ||

910 (((
iܙy
 =0 && 
p
->
w_iܙy
 == 0) ||

911 (
iܙy
 !0 && 
p
->
w_iܙy
 !0)&& 
cmp
 > 0) ||

912 (
cmp
 =0 && (
iܙy
 > 
p
->
w_iܙy
 ||

913 (
iܙy
 =
p
->
w_iܙy
 &&

914 (
tbak
 > 
p
->
w_tbak
))))) {

915 
	`RPRINT
(
dbv
, (dbenv, "Acceptingew vote"));

916 
p
->
wr
 = 
eid
;

917 
p
->
w_iܙy
 = 
iܙy
;

918 
p
->
w_l
 = *
lp
;

919 
p
->
w_g
 = 
g
;

920 
p
->
w_tbak
 = 
tbak
;

922 } i(
p
->
ses
 == 1) {

923 i(
iܙy
 !0 || 
	`LF_ISSET
(
REPCTL_ELECTABLE
)) {

925 
p
->
wr
 = 
eid
;

926 
p
->
w_iܙy
 = 
iܙy
;

927 
p
->
w_g
 = 
g
;

928 
p
->
w_l
 = *
lp
;

929 
p
->
w_tbak
 = 
tbak
;

931 
p
->
wr
 = 
DB_EID_INVALID
;

932 
p
->
w_iܙy
 = -1;

933 
p
->
w_g
 = 0;

934 
	`ZERO_LSN
(
p
->
w_l
);

935 
p
->
w_tbak
 = 0;

938 
	}
}

946 
	$__p_e_
(
dbv
, 
nses
, 
nves
, 
begp
, 
ٮly
)

947 
DB_ENV
 *
dbv
;

948 
nses
, 
nves
;

949 *
begp
;

950 
u_t32_t
 *
ٮly
;

952 
DB_LOG
 *
db
;

953 
DB_LSN
 
l
;

954 
DB_REP
 *
db_p
;

955 
LOG
 *

;

956 
REP
 *
p
;

957 
t
;

959 
db_p
 = 
dbv
->
p_hd
;

960 
p
 = 
db_p
->
gi
;

962 
t
 = 0;

965 
	`STAT
(
p
->

.
_eis
++);

968 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

969 
db
 = 
dbv
->
lg_hd
;

970 

 = 
db
->
gfo
.
imy
;

971 
	`LOG_SYSTEM_LOCK
(
dbv
);

972 
l
 = 

->lsn;

973 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

974 ()
	`__p_nd_mesge
(
dbv
,

975 
DB_EID_BROADCAST
, 
REP_NEWMASTER
, &
l
, 
NULL
, 0, 0);

976 i(
	`IS_USING_LEASES
(
dbv
))

977 
t
 = 
	`__p_a_esh
(
dbv
);

978 
	`STAT
(
p
->

.
_eis_w
++);

979  (
DB_REP_NEWMASTER
);

982 
	`REP_SYSTEM_LOCK
(
dbv
);

983 i(
ٮly
 !
NULL
)

984 *
ٮly
 = 
	`F_ISSET
(
p
, 
REP_F_TALLY
);

985 *
begp
 = 
	`IN_ELECTION
(
p
|| 
	`F_ISSET
ԕ, 
REP_F_INREPELECT
);

986 i(!*
begp
) {

993 i(
nses
 > 
p
->
ases
 &&

994 (
t
 = 
	`__p_grow_ses
(
dbv
, 
nses
)) != 0)

995 
r
;

996 
	`DB_ENV_TEST_RECOVERY
(
dbv
, 
DB_TEST_ELECTINIT
, 
t
, 
NULL
);

997 
	`F_SET
(
p
, 
REP_F_INREPELECT
);

998 
	`F_CLR
(
p
, 
REP_F_EGENUPDATE
);

1004 i(!
	`IN_ELECTION_TALLY
(
p
)) {

1005 
p
->
nses
 =sites;

1006 
p
->
nves
 =votes;

1008 i(
nses
 > 
p
->nsites)

1009 
p
->
nses
 =sites;

1010 i(
nves
 > 
p
->nvotes)

1011 
p
->
nves
 =votes;

1014 
DB_TEST_RECOVERY_LABEL


1015 
r
: 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1016  (
t
);

1017 
	}
}

1025 
	$__p_e_ma
(
dbv
, 
p
)

1026 
DB_ENV
 *
dbv
;

1027 
REP
 *
p
;

1034 
p
->
ma_id
 =->
eid
;

1036 i(
	`F_ISSET
(
p
, 
REP_F_MASTERELECT
 | 
REP_F_MASTER
)) {

1041 
	`F_SET
(
p
, 
REP_F_MASTERELECT
);

1042 
	`STAT
(
p
->

.
_eis_w
++);

1044 
	`RPRINT
(
dbv
, (dbenv,

1046 
p
->
ma_id
, (
u_lg
->
g
));

1047 
	}
}

1050 
	$__p_fe_eed
(
dbv
, 
p
, 
eg
)

1051 
DB_ENV
 *
dbv
;

1052 
REP
 *
p
;

1053 
u_t32_t
 
eg
;

1055 
	`REP_EVENT_LOCK
(
dbv
);

1056 i(
p
->
nifd_eg
 < 
eg
) {

1057 
	`__p_fe_evt
(
dbv
, 
DB_EVENT_REP_ELECTED
, 
NULL
);

1058 
p
->
nifd_eg
 = 
eg
;

1060 
	`REP_EVENT_UNLOCK
(
dbv
);

1062 
	}
}

1068 
	#SLEEPTIME
(
timeout
) \

1069 (
timeout
 > 5000000? 500000 : (imeou>10?imeou/ 10 : 1);

	)

1072 
	$__p_wa
(
dbv
, 
timeou
, 
eidp
, 
fu_e
, 
ags
)

1073 
DB_ENV
 *
dbv
;

1074 
db_timeout_t
 *
timeou
;

1075 *
eidp
, 
fu_e
;

1076 
u_t32_t
 
ags
;

1078 
DB_REP
 *
db_p
;

1079 
REP
 *
p
;

1080 
de
, 
echg
, 
pha_ov
, 
t
;

1081 
u_t32_t
 
eg
, 
ime
, 
ٮ
, 
timeout
;

1083 
db_p
 = 
dbv
->
p_hd
;

1084 
p
 = 
db_p
->
gi
;

1085 
eg
 = 
p
->egen;

1086 
de
 = 
echg
 = 
pha_ov
 = 
t
 = 0;

1088 
timeout
 = *
timeou
;

1094 
ime
 = 
	`SLEEPTIME
(
timeout
);

1095 
ٮ
 = 0;

1096 
ٮ
 < 
timeout
) {

1097 
	`__os_p
(
dbv
, 0, 
ime
);

1098 
ٮ
 +
ime
;

1099 
	`REP_SYSTEM_LOCK
(
dbv
);

1106 i(
fu_e
 && 
	`F_ISSET
(
p
, 
REP_F_GROUP_ESTD
)) {

1107 *
timeou
 = 
p
->
e_timeout
;

1108 
timeout
 = *
timeou
;

1119 i(
ٮ
 >
timeout
) {

1120 
de
 = 1;

1121 
t
 = 
DB_TIMEOUT
;

1123 
ime
 = 
	`SLEEPTIME
(
timeout
);

1126 
echg
 = 
eg
 !
p
->egen;

1127 
pha_ov
 = !
	`F_ISSET
(
p
, 
ags
);

1146 i(
pha_ov
 && 
echg
 &&

1147 (
	`IN_ELECTION_TALLY
(
p
) ||

1148 
	`F_ISSET
(
p
, 
REP_F_EGENUPDATE
))) {

1149 
de
 = 1;

1150 
	`F_CLR
(
p
, 
REP_F_EGENUPDATE
);

1151 
t
 = 
DB_REP_EGENCHG
;

1152 } i(
pha_ov
) {

1153 *
eidp
 = 
p
->
ma_id
;

1154 
de
 = 1;

1155 
t
 = 0;

1157 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1159 i(
de
)

1160  (
t
);

1162  (
DB_TIMEOUT
);

1163 
	}
}

	@../rep/rep_lease.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

14 
__p_fd_y
 
__P
((
DB_ENV
 *, 
REP
 *, , 
REP_LEASE_ENTRY
 **));

25 
	$__p_upde_g
(
dbv
, 
ts
)

26 
DB_ENV
 *
dbv
;

27 
db_timeec
 *
ts
;

29 
DB_LOG
 *
db
;

30 
DB_REP
 *
db_p
;

31 
DBT
 
a_dbt
;

32 
LOG
 *

;

33 
REP
 *
p
;

34 
REP_GRANT_INFO
 
gi
;

35 
db_timeec
 
mytime
;

37 
db_p
 = 
dbv
->
p_hd
;

38 
p
 = 
db_p
->
gi
;

39 
db
 = 
dbv
->
lg_hd
;

40 

 = 
db
->
gfo
.
imy
;

41 
	`timeecr
(&
mytime
);

47 
	`__os_gtime
(
dbv
, &
mytime
);

48 
	`timeedd
(&
mytime
, &
p
->
a_duti
);

49 
	`REP_SYSTEM_LOCK
(
dbv
);

54 i(
	`IN_ELECTION
(
p
)) {

55 
	`REP_SYSTEM_UNLOCK
(
dbv
);

58 i(
	`timeeccmp
(&
mytime
, &
p
->
g_expe
, >))

59 
p
->
g_expe
 = 
mytime
;

60 
	`REP_SYSTEM_UNLOCK
(
dbv
);

66 
	`memt
(&
gi
, 0, (gi));

67 #ifdef 
DIAGNOSTIC


68 
gi
.
expe_time
 = 
p
->
g_expe
;

70 
gi
.
msg_time
 = *
ts
;

72 
	`DB_INIT_DBT
(
a_dbt
, &
gi
, (gi));

73 ()
	`__p_nd_mesge
(
dbv
, 
p
->
ma_id
, 
REP_LEASE_GRANT
,

74 &

->
max_rm_l
, &
a_dbt
, 0, 0);

76 
	}
}

87 
	$__p_i_ged
(
dbv
)

88 
DB_ENV
 *
dbv
;

90 
DB_REP
 *
db_p
;

91 
REP
 *
p
;

92 
db_timeec
 
mytime
;

94 
db_p
 = 
dbv
->
p_hd
;

95 
p
 = 
db_p
->
gi
;

99 
	`timeecr
(&
mytime
);

100 
	`__os_gtime
(
dbv
, &
mytime
);

102  (
	`timeeccmp
(&
mytime
, &
p
->
g_expe
, <=) ? 1 : 0);

103 
	}
}

114 
	$__p_a_b_loc
(
dbv
, 
nses
)

115 
DB_ENV
 *
dbv
;

116 
nses
;

118 
REGENV
 *
nv
;

119 
REGINFO
 *
f
;

120 
REP
 *
p
;

121 
REP_LEASE_ENTRY
 *

, *
b
;

122 
i
, *
a
, 
t
;

124 
p
 = 
dbv
->
p_hd
->
gi
;

126 
f
 = 
dbv
->
gfo
;

127 
nv
 = 
f
->
imy
;

128 
	`MUTEX_LOCK
(
dbv
, 
nv
->
mtx_gv
);

129 i((
t
 = 
	`__v_loc
(
f
, (
size_t
)
nses
 * (
REP_LEASE_ENTRY
),

130 &
a
)) == 0) {

131 i(
p
->
a_off
 !
INVALID_ROFF
)

132 
	`__v_loc_
(
f
,

133 
	`R_ADDR
(
f
, 
p
->
a_off
));

134 
p
->
a_off
 = 
	`R_OFFSET
(
f
, 
a
);

136 
	`MUTEX_UNLOCK
(
dbv
, 
nv
->
mtx_gv
);

137 
b
 = 
	`R_ADDR
(
f
, 
p
->
a_off
);

138 
i
 = 0; i < 
nses
; i++) {

139 

 = &
b
[
i
];

140 

->
eid
 = 
DB_EID_INVALID
;

141 
	`timeecr
(&

->
t_time
);

142 
	`timeecr
(&

->
d_time
);

143 
	`ZERO_LSN
(

->
a_l
);

145  (
t
);

146 
	}
}

155 
	$__p_a_g
(
dbv
, 

, 
c
, 
eid
)

156 
DB_ENV
 *
dbv
;

157 
REP_CONTROL
 *

;

158 
DBT
 *
c
;

159 
eid
;

161 
DB_REP
 *
db_p
;

162 
REP
 *
p
;

163 
REP_GRANT_INFO
 *
gi
;

164 
REP_LEASE_ENTRY
 *

;

166 
db_p
 = 
dbv
->
p_hd
;

167 
p
 = 
db_p
->
gi
;

168 
gi
 = (
REP_GRANT_INFO
 *)
c
->
da
;

169 

 = 
NULL
;

175 
	`REP_SYSTEM_LOCK
(
dbv
);

176 
	`__p_fd_y
(
dbv
, 
p
, 
eid
, &

);

181 
	`DB_ASSERT
(
dbv
, 

 !
NULL
);

186 
	`RPRINT
(
dbv
, (dbenv, "lease_grant: gi msg_time %lu %lu",

187 (
u_lg
)
gi
->
msg_time
.
tv_c
, (u_lg)gi->msg_time.
tv_nc
));

188 i(

->
eid
 =
DB_EID_INVALID
 ||

189 
	`timeeccmp
(&
gi
->
msg_time
, &

->
t_time
, >)) {

190 

->
eid
 =id;

191 

->
t_time
 = 
gi
->
msg_time
;

192 

->
d_time
 =e->
t_time
;

193 
	`timeedd
(&

->
d_time
, &
p
->
a_duti
);

194 
	`RPRINT
(
dbv
, (dbenv,

196 

->
eid
, (
u_lg
e->
t_time
.
tv_c
, (u_lge->t_time.
tv_nc
,

197 (
u_lg
)

->
d_time
.
tv_c
, (u_lge->d_time.
tv_nc
,

198 (
u_lg
)
p
->
a_duti
.
tv_c
, (u_lg->a_duti.
tv_nc
));

204 
	`DB_ASSERT
(
dbv
, 
	`LOG_COMPARE
(&

->
l
, &

->
a_l
) >= 0);

205 

->
a_l
 = 

->
l
;

207 
	`REP_SYSTEM_UNLOCK
(
dbv
);

209 
	}
}

215 
	$__p_fd_y
(
dbv
, 
p
, 
eid
, 
p
)

216 
DB_ENV
 *
dbv
;

217 
REP
 *
p
;

218 
eid
;

219 
REP_LEASE_ENTRY
 **
p
;

221 
REGINFO
 *
f
;

222 
REP_LEASE_ENTRY
 *

, *
b
;

223 
i
;

225 
f
 = 
dbv
->
gfo
;

226 
b
 = 
	`R_ADDR
(
f
, 
p
->
a_off
);

228 
i
 = 0; i < 
p
->
nses
; i++) {

229 

 = &
b
[
i
];

234 i(

->
eid
 =eid ||e->eid =
DB_EID_INVALID
) {

235 *
p
 = 

;

240 
	}
}

252 
	$__p_a_check
(
dbv
, 
esh
)

253 
DB_ENV
 *
dbv
;

254 
esh
;

256 
DB_LOG
 *
db
;

257 
DB_LSN
 
a_l
;

258 
DB_REP
 *
db_p
;

259 
LOG
 *

;

260 
REGINFO
 *
f
;

261 
REP
 *
p
;

262 
REP_LEASE_ENTRY
 *

, *
b
;

263 
db_timeec
 
cuime
;

264 
i
, 
m_as
, 
t
, 
s
, 
vid_as
;

266 
f
 = 
dbv
->
gfo
;

267 
s
 = 0;

268 
y
:

269 
t
 = 0;

270 
db_p
 = 
dbv
->
p_hd
;

271 
p
 = 
db_p
->
gi
;

272 
db
 = 
dbv
->
lg_hd
;

273 

 = 
db
->
gfo
.
imy
;

274 
	`LOG_SYSTEM_LOCK
(
dbv
);

275 
a_l
 = 

->
max_rm_l
;

276 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

277 
	`REP_SYSTEM_LOCK
(
dbv
);

278 
m_as
 = 
p
->
nses
 / 2;

280 
	`__os_gtime
(
dbv
, &
cuime
);

282 
	`RPRINT
(
dbv
, (dbenv, "lease_check: min_leases %d curtime %lu %lu",

283 
m_as
, (
u_lg
)
cuime
.
tv_c
, (u_lg)cuime.
tv_nc
));

284 
b
 = 
	`R_ADDR
(
f
, 
p
->
a_off
);

285 
i
 = 0, 
vid_as
 = 0;

286 
i
 < 
p
->
nses
 && 
vid_as
 < 
m_as
; i++) {

287 

 = &
b
[
i
];

294 i(

->
eid
 !
DB_EID_INVALID
) {

295 
	`RPRINT
(
dbv
, (dbenv,

297 
vid_as
, 

->
eid
, (
u_lg
e->
a_l
.
fe
,

298 (
u_lg
)

->
a_l
.
offt
));

299 
	`RPRINT
(
dbv
, (dbenv, "lease_check:ndtime %lu %lu",

300 (
u_lg
)

->
d_time
.
tv_c
,

301 (
u_lg
)

->
d_time
.
tv_nc
));

303 i(

->
eid
 !
DB_EID_INVALID
 &&

304 
	`timeeccmp
(&

->
d_time
, &
cuime
, >=) &&

305 
	`LOG_COMPARE
(&

->
a_l
, &lease_lsn) == 0)

306 
vid_as
++;

308 
	`REP_SYSTEM_UNLOCK
(
dbv
);

313 
	`RPRINT
(
dbv
, (dbv, "vid %d, m %d", 
vid_as
, 
m_as
));

314 i(
vid_as
 < 
m_as
) {

315 i(!
esh
)

316 
t
 = 
DB_REP_LEASE_EXPIRED
;

324 i((
t
 = 
	`__p_a_esh
(
dbv
)) == 0) {

325 i(
s
 <
LEASE_REFRESH_TRIES
) {

333 i(
s
 > 0)

334 
	`__os_p
(
dbv
, 1, 0);

335 
s
++;

336 
y
;

338 
t
 = 
DB_REP_LEASE_EXPIRED
;

343  (
t
);

344 
	}
}

354 
	$__p_a_esh
(
dbv
)

355 
DB_ENV
 *
dbv
;

357 
DBT
 
c
;

358 
DB_LOGC
 *
logc
;

359 
DB_LSN
 
l
;

360 
DB_REP
 *
db_p
;

361 
REP
 *
p
;

362 
t
, 
t_t
;

364 
db_p
 = 
dbv
->
p_hd
;

365 
p
 = 
db_p
->
gi
;

367 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

368  (
t
);

370 
	`memt
(&
c
, 0, (rec));

371 
	`memt
(&
l
, 0, (lsn));

375 i((
t
 = 
	`__p_log_backup
(
dbv
, 
p
, 
logc
, &
l
)) != 0)

376 
r
;

378 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_CURRENT
)) != 0)

379 
r
;

381 i((
t
 = 
	`__p_nd_mesge
(
dbv
,

382 
DB_EID_BROADCAST
, 
REP_LOG
, &
l
, &
c
, 
REPCTL_PERM
, 0)) != 0) {

386 ()
	`__p_a_expe
(
dbv
, 0);

387 
t
 = 
DB_REP_LEASE_EXPIRED
;

390 
r
: i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

391 
t
 = 
t_t
;

392  (
t
);

393 
	}
}

402 
	$__p_a_expe
(
dbv
, 
locked
)

403 
DB_ENV
 *
dbv
;

404 
locked
;

406 
DB_REP
 *
db_p
;

407 
REGINFO
 *
f
;

408 
REP
 *
p
;

409 
REP_LEASE_ENTRY
 *

, *
b
;

410 
i
, 
t
;

412 
t
 = 0;

413 
db_p
 = 
dbv
->
p_hd
;

414 
p
 = 
db_p
->
gi
;

415 
f
 = 
dbv
->
gfo
;

417 i(!
locked
)

418 
	`REP_SYSTEM_LOCK
(
dbv
);

419 i(
p
->
a_off
 !
INVALID_ROFF
) {

420 
b
 = 
	`R_ADDR
(
f
, 
p
->
a_off
);

426 
i
 = 0; i < 
p
->
nses
; i++) {

427 

 = &
b
[
i
];

428 

->
d_time
 =e->
t_time
;

431 i(!
locked
)

432 
	`REP_SYSTEM_UNLOCK
(
dbv
);

433  (
t
);

434 
	}
}

443 
db_timeout_t


444 
	$__p_a_watime
(
dbv
)

445 
DB_ENV
 *
dbv
;

447 
DB_REP
 *
db_p
;

448 
REP
 *
p
;

449 
db_timeec
 
exime
, 
mytime
;

450 
db_timeout_t
 
to
;

452 
db_p
 = 
dbv
->
p_hd
;

453 
p
 = 
db_p
->
gi
;

454 
exime
 = 
p
->
g_expe
;

455 
to
 = 0;

462 
	`RPRINT
(
dbv
, (dbenv,

464 (
u_lg
)
exime
.
tv_c
, (u_lgxime.
tv_nc
,

465 (
u_lg
)
p
->
a_timeout
));

466 i(!
	`timeecist
(&
exime
))

467 
to
 = 
p
->
a_timeout
;

469 
	`__os_gtime
(
dbv
, &
mytime
);

470 
	`RPRINT
(
dbv
, (dbenv,

472 (
u_lg
)
mytime
.
tv_c
, (u_lg)mytime.
tv_nc
,

473 (
u_lg
)
exime
.
tv_c
, (u_lgxime.
tv_nc
));

474 i(
	`timeeccmp
(&
mytime
, &
exime
, <=)) {

480 
	`timeecsub
(&
exime
, &
mytime
);

481 
	`DB_TIMESPEC_TO_TIMEOUT
(
to
, &
exime
);

484  (
to
);

485 
	}
}

	@../rep/rep_log.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

14 
__p_chk_wfe
 
__P
((
DB_ENV
 *, 
DB_LOGC
 *, 
REP
 *,

15 
REP_CONTROL
 *, ));

24 
	$__p_eq
(
dbv
, 

, 
eid
)

25 
DB_ENV
 *
dbv
;

26 
REP_CONTROL
 *

;

27 
eid
;

29 
DB_LOGC
 *
logc
;

30 
DB_LSN
 
log_d
, 
df
;

31 
DB_REP
 *
db_p
;

32 
DBT
 
da_dbt
, 
wfedbt
;

33 
REP
 *
p
;

34 
REP_BULK
 
bulk
;

35 
REP_THROTTLE
 
h
;

36 
u_t
 
bulkoff
;

37 
u_t32_t
 
bulkags
, 
d_ag
, 
ags
, 
u_bulk
, 
vsi
;

38 
t
, 
t_t
;

40 
t
 = 0;

41 
db_p
 = 
dbv
->
p_hd
;

42 
p
 = 
db_p
->
gi
;

44 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

45  (
t
);

46 
	`memt
(&
da_dbt
, 0, (data_dbt));

57 
u_bulk
 = 
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_BULK
);

58 i(
u_bulk
 && (
t
 = 
	`__p_bulk_loc
(
dbv
, &
bulk
, 
eid
,

59 &
bulkoff
, &
bulkags
, 
REP_BULK_LOG
)) != 0)

60 
r
;

61 
	`memt
(&
h
, 0, (repth));

62 
	`REP_SYSTEM_LOCK
(
dbv
);

63 
h
.
gbys
 = 
p
->gbytes;

64 
h
.
bys
 = 
p
->bytes;

65 
df
 = 
h
.
l
 = 

->lsn;

66 
h
.
ty
 = 
REP_LOG
;

67 
h
.
da_dbt
 = &data_dbt;

68 
	`REP_SYSTEM_UNLOCK
(
dbv
);

75 i((
t
 = 
	`__logc_g
(
logc
, &
log_d
, &
da_dbt
, 
DB_LAST
)) != 0) {

76 i(
t
 =
DB_NOTFOUND
 && 
	`F_ISSET
(
p
, 
REP_F_MASTER
))

77 
t
 = 0;

78 
r
;

81 
ags
 = 
	`IS_ZERO_LSN
(

->
l
) ||

82 
	`IS_INIT_LSN
(

->
l
? 
DB_FIRST
 : 
DB_SET
;

90 
t
 = 
	`__logc_g
(
logc
, &
h
.
l
, &
da_dbt
, 
ags
);

98 i(
t
 =0 && 
h
.
l
.
fe
 !1 && 
ags
 =
DB_FIRST
) {

99 ()
	`__p_nd_mesge
(
dbv
, 
eid
,

100 
REP_VERIFY_FAIL
, &
h
.
l
, 
NULL
, 0, 0);

101 
r
;

108 i(
t
 =
DB_NOTFOUND
) {

109 
t
 = 
	`__p_chk_wfe
(
dbv
, 
logc
, 
p
, 

, 
eid
);

115 i(
t
 == 0)

116 
t
 = 
	`__logc_g
(
logc
, &
h
.
l
,

117 &
da_dbt
, 
DB_CURRENT
);

118 i(
t
 =
DB_NOTFOUND
 && 
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

119 
t
 = 0;

120 
r
;

122 i(
t
 != 0)

123 
r
;

131 
d_ag
 = 0;

132 
t
 =0 && 
h
.
ty
 !
REP_LOG_MORE
 && 
d_ag
 == 0;

133 
t
 = 
	`__logc_g
(
logc
, &
h
.
l
, &
da_dbt
, 
DB_NEXT
)) {

138 i(
h
.
l
.
fe
 !
df
.file) {

139 i((
t
 = 
	`__logc_vsi
(
logc
, &
vsi
)) != 0)

141 
	`memt
(&
wfedbt
, 0, (newfiledbt));

142 
wfedbt
.
da
 = &
vsi
;

143 
wfedbt
.
size
 = (
vsi
);

144 ()
	`__p_nd_mesge
(
dbv
,

145 
eid
, 
REP_NEWFILE
, &
df
, &
wfedbt
, 0, 0);

155 
d_ag
 = (
	`LOG_COMPARE
(&
h
.
l
, &
log_d
) >= 0 &&

156 (
	`F_ISSET
(
p
, 
REP_F_MASTER
) ||

157 
p
->

.
_tup_come
)) ?

158 
REPCTL_LOG_END
 : 0;

164 i(
u_bulk
)

165 
t
 = 
	`__p_bulk_mesge
(
dbv
, &
bulk
, &
h
,

166 &
h
.
l
, &
da_dbt
, (
REPCTL_RESEND
 | 
d_ag
));

167 i(!
u_bulk
 || 
t
 =
DB_REP_BULKOVF
)

168 
t
 = 
	`__p_nd_thrَe
(
dbv
,

169 
eid
, &
h
, 0, 
d_ag
);

170 i(
t
 != 0)

176 
df
 = 
h
.
l
;

177 
df
.
offt
 +
logc
->
n
;

180 i(
t
 =
DB_NOTFOUND
 || =
DB_REP_UNAVAIL
)

181 
t
 = 0;

186 i(
u_bulk
 && (
t_t
 = 
	`__p_bulk_
(
dbv
, &
bulk
,

187 (
REPCTL_RESEND
 | 
d_ag
))!0 && 
t
 == 0)

188 
t
 = 
t_t
;

189 
r
:

190 i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

191 
t
 = 
t_t
;

192  (
t
);

193 
	}
}

203 
	$__p_log
(
dbv
, 

, 
c
, 
vime
, 
t_lp
)

204 
DB_ENV
 *
dbv
;

205 
REP_CONTROL
 *

;

206 
DBT
 *
c
;

207 
time_t
 
vime
;

208 
DB_LSN
 *
t_lp
;

210 
DB_LOG
 *
db
;

211 
DB_LSN
 
ϡ_l
, 
l
;

212 
DB_REP
 *
db_p
;

213 
LOG
 *

;

214 
REP
 *
p
;

215 
is_dup
, 
ma
, 
t
;

217 
is_dup
 = 
t
 = 0;

218 
db_p
 = 
dbv
->
p_hd
;

219 
p
 = 
db_p
->
gi
;

220 
db
 = 
dbv
->
lg_hd
;

221 

 = 
db
->
gfo
.
imy
;

223 
t
 = 
	`__p_y
(
dbv
, 

, 
c
, 
t_lp
, &
is_dup
, &
ϡ_l
);

224 
t
) {

229 
DB_REP_LOGREADY
:

230 i((
t
 =

231 
	`__p_logady
(
dbv
, 
p
, 
vime
, &
ϡ_l
)) != 0)

232 
out
;

242 
DB_REP_ISPERM
:

243 
DB_REP_NOTPERM
:

245 i(
is_dup
)

246 
out
;

253 
out
;

255 i(

->
y
 =
REP_LOG_MORE
) {

256 
ma
 = 
p
->
ma_id
;

268 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

269 
l
 = 

->
ady_l
;

270 i(
	`LOG_COMPARE
(&

->
l
, &lsn) > 0)

271 
l
 = 

->lsn;

283 i(
ma
 =
DB_EID_INVALID
) {

284 
t
 = 0;

285 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

286 
out
;

293 i(
	`IS_ZERO_LSN
(

->
wag_l
))

294 

->
wa_cs
 = 
p
->
max_g
;

295 
t
 = 
	`__p_logg_q
(
dbv
, 
p
, &
l
, 
REP_GAP_FORCE
);

296 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

298 
out
:

299  (
t
);

300 
	}
}

310 
	$__p_bulk_log
(
dbv
, 

, 
c
, 
vime
, 
t_lp
)

311 
DB_ENV
 *
dbv
;

312 
REP_CONTROL
 *

;

313 
DBT
 *
c
;

314 
time_t
 
vime
;

315 
DB_LSN
 *
t_lp
;

317 
DB_REP
 *
db_p
;

318 
REP
 *
p
;

319 
DB_LSN
 
ϡ_l
;

320 
t
;

322 
db_p
 = 
dbv
->
p_hd
;

323 
p
 = 
db_p
->
gi
;

325 
t
 = 
	`__log_p_l
(
dbv
, 

, 
c
, 
t_lp
, &
ϡ_l
);

326 
t
) {

331 
DB_REP_LOGREADY
:

332 
t
 = 
	`__p_logady
(
dbv
, 
p
, 
vime
, &
ϡ_l
);

340  (
t
);

341 
	}
}

350 
	$__p_logq
(
dbv
, 

, 
c
, 
eid
)

351 
DB_ENV
 *
dbv
;

352 
REP_CONTROL
 *

;

353 
DBT
 *
c
;

354 
eid
;

356 
DB_LOGC
 *
logc
;

357 
DB_LSN
 
l
, 
df
;

358 
DB_REP
 *
db_p
;

359 
DBT
 
da_dbt
, 
wfedbt
;

360 
REP
 *
p
;

361 
REP_BULK
 
bulk
;

362 
REP_THROTTLE
 
h
;

363 
u_t
 
bulkoff
;

364 
u_t32_t
 
bulkags
, 
u_bulk
, 
vsi
;

365 
t
, 
t_t
;

367 
t
 = 0;

368 
db_p
 = 
dbv
->
p_hd
;

369 
p
 = 
db_p
->
gi
;

371 i(
c
 !
NULL
 &&ec->
size
 != 0) {

372 
	`RPRINT
(
dbv
, (dbenv,

374 (
u_lg


->
l
.
fe
, (u_lgp->l.
offt
,

375 (
u_lg
)((
DB_LSN
 *)
c
->
da
)->
fe
,

376 (
u_lg
)((
DB_LSN
 *)
c
->
da
)->
offt
));

392 
	`memt
(&
da_dbt
, 0, (data_dbt));

393 
df
 = 
l
 = 

->lsn;

394 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

395  (
t
);

396 
t
 = 
	`__logc_g
(
logc
, &
l
, &
da_dbt
, 
DB_SET
);

398 i(
t
 == 0)

399 ()
	`__p_nd_mesge
(
dbv
,

400 
eid
, 
REP_LOG
, &
l
, &
da_dbt
, 
REPCTL_RESEND
, 0);

401 i(
t
 =
DB_NOTFOUND
) {

402 
t
 = 
	`__p_chk_wfe
(
dbv
, 
logc
, 
p
, 

, 
eid
);

403 i(
t
 =
DB_NOTFOUND
) {

410 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

411 
	`__db_rx
(
dbv
,

413 (
u_lg
)

->
l
.
fe
,

414 (
u_lg
)

->
l
.
offt
);

415 
t
 = 
EINVAL
;

417 
t
 = 
DB_NOTFOUND
;

421 i(
t
 != 0)

422 
r
;

436 
u_bulk
 = 
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_BULK
);

437 i(
u_bulk
 && (
t
 = 
	`__p_bulk_loc
(
dbv
, &
bulk
, 
eid
,

438 &
bulkoff
, &
bulkags
, 
REP_BULK_LOG
)) != 0)

439 
r
;

440 
	`memt
(&
h
, 0, (repth));

441 
	`REP_SYSTEM_LOCK
(
dbv
);

442 
h
.
gbys
 = 
p
->gbytes;

443 
h
.
bys
 = 
p
->bytes;

444 
h
.
ty
 = 
REP_LOG
;

445 
h
.
da_dbt
 = &data_dbt;

446 
	`REP_SYSTEM_UNLOCK
(
dbv
);

447 
t
 =0 && 
c
 !
NULL
 &&ec->
size
 != 0 &&

448 
h
.
ty
 =
REP_LOG
) {

449 i((
t
 =

450 
	`__logc_g
(
logc
, &
h
.
l
, &
da_dbt
, 
DB_NEXT
)) != 0) {

456 i(
t
 =
DB_NOTFOUND
 && 
	`F_ISSET
(
p
, 
REP_F_MASTER
))

457 
t
 = 0;

460 i(
	`LOG_COMPARE
(&
h
.
l
, (
DB_LSN
 *)
c
->
da
) >= 0)

462 i(
h
.
l
.
fe
 !
df
.file) {

463 i((
t
 = 
	`__logc_vsi
(
logc
, &
vsi
)) != 0)

465 
	`memt
(&
wfedbt
, 0, (newfiledbt));

466 
wfedbt
.
da
 = &
vsi
;

467 
wfedbt
.
size
 = (
vsi
);

468 ()
	`__p_nd_mesge
(
dbv
,

469 
eid
, 
REP_NEWFILE
, &
df
, &
wfedbt
, 0, 0);

476 i(
u_bulk
)

477 
t
 = 
	`__p_bulk_mesge
(
dbv
, &
bulk
, &
h
,

478 &
h
.
l
, &
da_dbt
, 
REPCTL_RESEND
);

479 i(!
u_bulk
 || 
t
 =
DB_REP_BULKOVF
)

480 
t
 = 
	`__p_nd_thrَe
(
dbv
, 
eid
, &
h
, 0, 0);

481 i(
t
 != 0) {

483 i(
t
 =
DB_REP_UNAVAIL
)

484 
t
 = 0;

491 
df
 = 
h
.
l
;

492 
df
.
offt
 +
logc
->
n
;

499 i(
u_bulk
 && (
t_t
 = 
	`__p_bulk_
(
dbv
, &
bulk
,

500 
REPCTL_RESEND
)!0 && 
t
 == 0)

501 
t
 = 
t_t
;

502 
r
:

503 i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

504 
t
 = 
t_t
;

505  (
t
);

506 
	}
}

520 
	$__p_logg_q
(
dbv
, 
p
, 
lp
, 
gags
)

521 
DB_ENV
 *
dbv
;

522 
REP
 *
p
;

523 
DB_LSN
 *
lp
;

524 
u_t32_t
 
gags
;

526 
DB_LOG
 *
db
;

527 
DBT
 
max_l_dbt
, *
max_l_db
;

528 
DB_LSN
 
xt_l
;

529 
LOG
 *

;

530 
u_t32_t
 
lags
, 
ags
, 
ty
;

532 
db
 = 
dbv
->
lg_hd
;

533 

 = 
db
->
gfo
.
imy
;

534 i(
	`FLD_ISSET
(
gags
, 
REP_GAP_FORCE
))

535 
xt_l
 = *
lp
;

537 
xt_l
 = 

->
ady_l
;

538 
lags
 = 
ags
 = 0;

539 
ty
 = 
REP_LOG_REQ
;

553 i(
	`FLD_ISSET
(
gags
, (
REP_GAP_FORCE
 | 
REP_GAP_REREQUEST
)) ||

554 
	`IS_ZERO_LSN
(

->
max_wa_l
) ||

555 (
lp
 !
NULL
 && 
	`LOG_COMPARE
֢p, &

->
max_wa_l
) == 0)) {

556 

->
max_wa_l
 =p->
wag_l
;

564 i(
	`FLD_ISSET
(
gags
, 
REP_GAP_FORCE
)) {

565 i(
	`LOG_COMPARE
(&

->
max_wa_l
, 
lp
) <= 0) {

566 i(
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
)) {

567 
	`DB_ASSERT
(
dbv
, 
	`LOG_COMPARE
(
lp
,

568 &
p
->
ϡ_l
) <= 0);

569 

->
max_wa_l
 = 
p
->
ϡ_l
;

571 
	`ZERO_LSN
(

->
max_wa_l
);

574 i(
	`IS_ZERO_LSN
(

->
max_wa_l
))

575 
ty
 = 
REP_ALL_REQ
;

576 
	`memt
(&
max_l_dbt
, 0, (max_lsn_dbt));

577 
max_l_dbt
.
da
 = &

->
max_wa_l
;

578 
max_l_dbt
.
size
 = (

->
max_wa_l
);

579 
max_l_db
 = &
max_l_dbt
;

584 i(
	`FLD_ISSET
(
gags
, 
REP_GAP_REREQUEST
))

585 
ags
 = 
DB_REP_REREQUEST
;

587 
ags
 = 
DB_REP_ANYWHERE
;

589 
max_l_db
 = 
NULL
;

590 

->
max_wa_l
 = 
xt_l
;

594 
ags
 = 
DB_REP_REREQUEST
;

596 i(
p
->
ma_id
 !
DB_EID_INVALID
) {

597 
	`STAT
(
p
->

.
_log_queed
++);

598 i(
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
))

599 
lags
 = 
REPCTL_INIT
;

600 ()
	`__p_nd_mesge
(
dbv
, 
p
->
ma_id
,

601 
ty
, &
xt_l
, 
max_l_db
, 
lags
, 
ags
);

603 ()
	`__p_nd_mesge
(
dbv
, 
DB_EID_BROADCAST
,

604 
REP_MASTER_REQ
, 
NULL
, NULL, 0, 0);

607 
	}
}

617 
	$__p_logady
(
dbv
, 
p
, 
vime
, 
ϡ_lp
)

618 
DB_ENV
 *
dbv
;

619 
REP
 *
p
;

620 
time_t
 
vime
;

621 
DB_LSN
 *
ϡ_lp
;

623 
t
;

625 i((
t
 = 
	`__log_ush
(
dbv
, 
NULL
)) != 0)

626 
out
;

627 i((
t
 = 
	`__p_vify_mch
(
dbv
, 
ϡ_lp
,

628 
vime
)) == 0) {

629 
	`REP_SYSTEM_LOCK
(
dbv
);

630 
	`ZERO_LSN
(
p
->
f_l
);

632 i(
p
->
igfo
 !
NULL
) {

633 
	`__os_
(
dbv
, 
p
->
igfo
);

634 
p
->
igfo
 = 
NULL
;

637 
	`F_CLR
(
p
, 
REP_F_RECOVER_LOG
);

638 
	`REP_SYSTEM_UNLOCK
(
dbv
);

640 
out
: 
	`__db_rx
(
dbv
,

642  (
	`__db_nic
(
dbv
, 
t
));

644  (
t
);

646 
	}
}

667 
	$__p_chk_wfe
(
dbv
, 
logc
, 
p
, 

, 
eid
)

668 
DB_ENV
 *
dbv
;

669 
DB_LOGC
 *
logc
;

670 
REP
 *
p
;

671 
REP_CONTROL
 *

;

672 
eid
;

674 
DB_LOG
 *
db
;

675 
DB_LSN
 
dl
;

676 
DBT
 
da_dbt
, 
wfedbt
;

677 
LOG
 *

;

678 
u_t32_t
 
vsi
;

679 
t
;

681 
t
 = 0;

682 
db
 = 
dbv
->
lg_hd
;

683 

 = 
db
->
gfo
.
imy
;

684 
	`memt
(&
da_dbt
, 0, (data_dbt));

685 
	`LOG_SYSTEM_LOCK
(
dbv
);

686 
dl
 = 

->
l
;

687 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

688 i(
dl
.
fe
 > 

->
l
.file) {

697 
dl
.
fe
 = 

->
l
.file + 1;

698 
dl
.
offt
 = 0;

699 i((
t
 = 
	`__logc_g
(
logc
,

700 &
dl
, &
da_dbt
, 
DB_SET
)) != 0 ||

701 (
t
 = 
	`__logc_g
(
logc
,

702 &
dl
, &
da_dbt
, 
DB_PREV
)) != 0) {

703 
	`RPRINT
(
dbv
, (dbenv,

705 (
u_lg
)

->
l
.
fe
,

706 (
u_lg
)

->
l
.
offt
));

724 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

725 
t
 = 0;

726 ()
	`__p_nd_mesge
(
dbv
, 
eid
,

727 
REP_VERIFY_FAIL
, &

->
l
,

728 
NULL
, 0, 0);

730 
t
 = 
DB_NOTFOUND
;

732 
dl
.
offt
 +
logc
->
n
;

733 i((
t
 = 
	`__logc_vsi
(
logc
,

734 &
vsi
)) == 0) {

735 
	`memt
(&
wfedbt
, 0,

736 (
wfedbt
));

737 
wfedbt
.
da
 = &
vsi
;

738 
wfedbt
.
size
 = (
vsi
);

739 ()
	`__p_nd_mesge
(
dbv
, 
eid
,

740 
REP_NEWFILE
, &
dl
,

741 &
wfedbt
, 0, 0);

745 
t
 = 
DB_NOTFOUND
;

747  (
t
);

748 
	}
}

	@../rep/rep_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/b.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/mp.h
"

16 
	~"dbc/txn.h
"

18 
__p_abt_ed
 
__P
((
DB_ENV
 *));

19 
__p_bt_cmp
 
__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

20 
__p_cfig_m
 
__P
((
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *));

21 
u_t32_t
 
__p_cv_vs
 
__P
((
DB_ENV
 *, u_int32_t));

22 
__p_e_ed
 
__P
((
DB_ENV
 *));

31 
	$__p_v_
(
dbv
)

32 
DB_ENV
 *
dbv
;

34 
DB_REP
 *
db_p
;

35 
t
;

37 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_REP
), &
db_p
)) != 0)

38  (
t
);

40 
db_p
->
eid
 = 
DB_EID_INVALID
;

41 
db_p
->
bys
 = 
REP_DEFAULT_THROTTLE
;

42 
db_p
->
que_g
 = 
DB_REP_REQUEST_GAP
;

43 
db_p
->
max_g
 = 
DB_REP_MAX_GAP
;

44 
db_p
->
e_timeout
 = 2 * 
US_PER_SEC
;

45 
db_p
->
chk_day
 = 30;

46 
db_p
->
my_iܙy
 = 
DB_REP_DEFAULT_PRIORITY
;

48 #ifde
HAVE_REPLICATION_THREADS


49 i((
t
 = 
	`__pmgr_v_
(
dbv
, 
db_p
)) != 0) {

50 
	`__os_
(
dbv
, 
db_p
);

51  (
t
);

55 
dbv
->
p_hd
 = 
db_p
;

57 
	}
}

66 
	$__p_v_deroy
(
dbv
)

67 
DB_ENV
 *
dbv
;

69 i(
dbv
->
p_hd
 !
NULL
) {

70 #ifde
HAVE_REPLICATION_THREADS


71 
	`__pmgr_v_deroy
(
dbv
, dbv->
p_hd
);

73 
	`__os_
(
dbv
, dbv->
p_hd
);

74 
dbv
->
p_hd
 = 
NULL
;

76 
	}
}

85 
	$__p_g_cfig
(
dbv
, 
which
, 
p
)

86 
DB_ENV
 *
dbv
;

87 
u_t32_t
 
which
;

88 *
p
;

90 
DB_REP
 *
db_p
;

91 
REP
 *
p
;

92 
u_t32_t
 
md
;

94 #unde
OK_FLAGS


95 
	#OK_FLAGS
 \

96 (
DB_REP_CONF_BULK
 | 
DB_REP_CONF_DELAYCLIENT
 | \

97 
DB_REP_CONF_NOAUTOINIT
 | 
DB_REP_CONF_NOWAIT
)

	)

99 i(
	`FLD_ISSET
(
which
, ~
OK_FLAGS
))

100  (
	`__db_
(
dbv
, "DB_ENV->rep_get_config", 0));

102 
db_p
 = 
dbv
->
p_hd
;

103 
	`ENV_NOT_CONFIGURED
(

104 
dbv
, 
db_p
->
gi
, "DB_ENV->p_g_cfig", 
DB_INIT_REP
);

106 
md
 = 0;

107 
	`__p_cfig_m
(
dbv
, &
which
, &
md
);

108 i(
	`REP_ON
(
dbv
)) {

109 
p
 = 
db_p
->
gi
;

110 i(
	`FLD_ISSET
(
p
->
cfig
, 
md
))

111 *
p
 = 1;

113 *
p
 = 0;

115 i(
	`FLD_ISSET
(
db_p
->
cfig
, 
md
))

116 *
p
 = 1;

118 *
p
 = 0;

121 
	}
}

130 
	$__p_t_cfig
(
dbv
, 
which
, 

)

131 
DB_ENV
 *
dbv
;

132 
u_t32_t
 
which
;

133 

;

135 
DB_LOG
 *
db
;

136 
DB_REP
 *
db_p
;

137 
DB_THREAD_INFO
 *

;

138 
LOG
 *

;

139 
REP
 *
p
;

140 
REP_BULK
 
bulk
;

141 
t
;

142 
u_t32_t
 
md
, 
ig
;

144 
t
 = 0;

146 #unde
OK_FLAGS


147 
	#OK_FLAGS
 \

148 (
DB_REP_CONF_BULK
 | 
DB_REP_CONF_DELAYCLIENT
 | \

149 
DB_REP_CONF_NOAUTOINIT
 | 
DB_REP_CONF_NOWAIT
)

	)

151 i(
	`FLD_ISSET
(
which
, ~
OK_FLAGS
))

152  (
	`__db_
(
dbv
, "DB_ENV->rep_set_config", 0));

154 
db_p
 = 
dbv
->
p_hd
;

155 
	`ENV_NOT_CONFIGURED
(

156 
dbv
, 
db_p
->
gi
, "DB_ENV->p_t_cfig", 
DB_INIT_REP
);

158 
md
 = 0;

159 
	`ENV_ENTER
(
dbv
, 

);

160 
	`__p_cfig_m
(
dbv
, &
which
, &
md
);

161 i(
	`REP_ON
(
dbv
)) {

162 
p
 = 
db_p
->
gi
;

163 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

164 
	`REP_SYSTEM_LOCK
(
dbv
);

165 
ig
 = 
p
->
cfig
;

166 i(

)

167 
	`FLD_SET
(
p
->
cfig
, 
md
);

169 
	`FLD_CLR
(
p
->
cfig
, 
md
);

175 
db
 = 
dbv
->
lg_hd
;

176 

 = 
db
->
gfo
.
imy
;

177 i(
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_BULK
) &&

178 !
	`FLD_ISSET
(
ig
, 
REP_C_BULK
))

179 
db_p
->
bulk
 = 
	`R_ADDR
(&
db
->
gfo
, 

->
bulk_buf
);

180 
	`REP_SYSTEM_UNLOCK
(
dbv
);

186 i(
	`FLD_ISSET
(
ig
, 
REP_C_BULK
) &&

187 !
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_BULK
&& 

->
bulk_off
 != 0) {

188 
	`memt
(&
bulk
, 0, (bulk));

189 i(
db_p
->
bulk
 =
NULL
)

190 
bulk
.
addr
 =

191 
	`R_ADDR
(&
db
->
gfo
, 

->
bulk_buf
);

193 
bulk
.
addr
 = 
db_p
->bulk;

194 
bulk
.
of
 = &

->
bulk_off
;

195 
bulk
.
n
 = 

->
bulk_n
;

196 
bulk
.
ty
 = 
REP_BULK_LOG
;

197 
bulk
.
eid
 = 
DB_EID_BROADCAST
;

198 
bulk
.
ag
 = &

->
bulk_ags
;

199 
t
 = 
	`__p_nd_bulk
(
dbv
, &
bulk
, 0);

201 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

203 i(

)

204 
	`FLD_SET
(
db_p
->
cfig
, 
md
);

206 
	`FLD_CLR
(
db_p
->
cfig
, 
md
);

208 
	`ENV_LEAVE
(
dbv
, 

);

209  (
t
);

210 
	}
}

213 
	$__p_cfig_m
(
dbv
, 
ag
, 
outag
)

214 
DB_ENV
 *
dbv
;

215 
u_t32_t
 *
ag
, *
outag
;

217 
	`COMPQUIET
(
dbv
, 
NULL
);

219 i(
	`FLD_ISSET
(*
ag
, 
DB_REP_CONF_BULK
)) {

220 
	`FLD_SET
(*
outag
, 
REP_C_BULK
);

221 
	`FLD_CLR
(*
ag
, 
DB_REP_CONF_BULK
);

223 i(
	`FLD_ISSET
(*
ag
, 
DB_REP_CONF_DELAYCLIENT
)) {

224 
	`FLD_SET
(*
outag
, 
REP_C_DELAYCLIENT
);

225 
	`FLD_CLR
(*
ag
, 
DB_REP_CONF_DELAYCLIENT
);

227 i(
	`FLD_ISSET
(*
ag
, 
DB_REP_CONF_NOAUTOINIT
)) {

228 
	`FLD_SET
(*
outag
, 
REP_C_NOAUTOINIT
);

229 
	`FLD_CLR
(*
ag
, 
DB_REP_CONF_NOAUTOINIT
);

231 i(
	`FLD_ISSET
(*
ag
, 
DB_REP_CONF_NOWAIT
)) {

232 
	`FLD_SET
(*
outag
, 
REP_C_NOWAIT
);

233 
	`FLD_CLR
(*
ag
, 
DB_REP_CONF_NOWAIT
);

235 
	}
}

265 
	$__p_t
(
dbv
, 
dbt
, 
ags
)

266 
DB_ENV
 *
dbv
;

267 
DBT
 *
dbt
;

268 
u_t32_t
 
ags
;

270 
DB
 *
dbp
;

271 
DB_LOG
 *
db
;

272 
DB_LSN
 
l
;

273 
DB_REP
 *
db_p
;

274 
DB_THREAD_INFO
 *

;

275 
DB_TXNREGION
 *
gi
;

276 
LOG
 *

;

277 
REGINFO
 *
f
;

278 
REP
 *
p
;

279 
db_timeout_t
 
tmp
;

280 
u_t32_t
 
dvs
, 
ndg_evt
, 
pags
, 
re
;

281 
noun
, 
locked
, 
t
, 
re_chg
;

282 
t_t
;

284 
	`PANIC_CHECK
(
dbv
);

285 
	`ENV_REQUIRES_CONFIG_XX
(

286 
dbv
, 
p_hd
, "DB_ENV->p_t", 
DB_INIT_REP
);

288 
db_p
 = 
dbv
->
p_hd
;

289 
p
 = 
db_p
->
gi
;

290 
f
 = 
dbv
->
gfo
;

291 
locked
 = 0;

292 
ndg_evt
 = 
DB_EVENT_NO_SUCH_EVENT
;

294 
re
 = 
ags
 & 
DB_REPFLAGS_MASK
;

296 
re
) {

297 
DB_REP_CLIENT
:

298 
DB_REP_MASTER
:

301 
	`__db_rx
(
dbv
,

303  (
EINVAL
);

307 i(
db_p
->
nd
 =
NULL
) {

308 
	`__db_rx
(
dbv
,

310  (
EINVAL
);

313 
	`ENV_ENTER
(
dbv
, 

);

319 i((
t
 = 
	`__log_ush
(
dbv
, 
NULL
)) != 0)

320 
out
;

322 
	`REP_SYSTEM_LOCK
(
dbv
);

329 i(
	`F_ISSET
(
p
, 
REP_F_READY_MSG
)) {

333 
	`RPRINT
(
dbv
, (dbenv, "Threadlready inockout"));

334 
	`REP_SYSTEM_UNLOCK
(
dbv
);

335 
out
;

336 } i((
t
 = 
	`__p_lockout_msg
(
dbv
, 
p
, 0)) != 0)

337 
ruock
;

339 
re_chg
 = (!
	`F_ISSET
(
p
, 
REP_F_MASTER
&& 
re
 =
DB_REP_MASTER
) ||

340 (!
	`F_ISSET
(
p
, 
REP_F_CLIENT
&& 
re
 =
DB_REP_CLIENT
);

347 i(
re_chg
) {

348 i((
t
 = 
	`__p_lockout_i
(
dbv
, 
p
)) != 0)

349 
ruock
;

350 
locked
 = 1;

353 
db
 = 
dbv
->
lg_hd
;

354 

 = 
db
->
gfo
.
imy
;

355 i(
re
 =
DB_REP_MASTER
) {

356 i(
re_chg
) {

374 i((
t
 = 
	`__p_eo
(
dbv
)) != 0)

375 
ruock
;

377 
p
->
g
++;

382 i(
p
->
eg
 >->
g
)

383 
p
->
g
 =->
eg
;

384 i(
	`IS_USING_LEASES
(
dbv
) &&

385 !
	`F_ISSET
(
p
, 
REP_F_MASTERELECT
)) {

386 
	`__db_rx
(
dbv
,

388 
t
 = 
EINVAL
;

389 
ruock
;

391 i(
	`F_ISSET
(
p
, 
REP_F_MASTERELECT
)) {

392 
	`__p_e_de
(
dbv
, 
p
);

393 
	`F_CLR
(
p
, 
REP_F_MASTERELECT
);

395 i(
p
->
eg
 <p->
g
)

396 
p
->
eg
 =->
g
 + 1;

397 
	`RPRINT
(
dbv
, (dbenv,

399 (
u_lg
)
p
->
g
, (u_lg->
eg
));

400 i((
t
 = 
	`__p_wre_g
(
dbv
, 
p
->
g
)) != 0)

401 
ruock
;

406 i(
	`IS_USING_LEASES
(
dbv
) &&

407 (
re_chg
 || !
	`F_ISSET
(
p
, 
REP_F_START_CALLED
))) {

412 i((
t
 = 
	`__p_i_ged
(
dbv
))) {

413 
	`__db_rx
(
dbv
,

415 
t
 = 
EINVAL
;

416 
ruock
;

418 
tmp
 = (
db_timeout_t
)(()
p
->
a_timeout
 /

419 (()
p
->
ock_skew
 / () 100));

420 
	`DB_TIMEOUT_TO_TIMESPEC
(
tmp
, &
p
->
a_duti
);

425 
	`INIT_LSN
(

->
max_rm_l
);

426 i((
t
 = 
	`__p_a_b_loc
(
dbv
,

427 
p
->
nses
)) != 0)

428 
ruock
;

430 
p
->
ma_id
 =->
eid
;

438 
pags
 = 
	`F_ISSET
(
p
, 
REP_F_READY_API
 | 
REP_F_READY_MSG
 |

439 
REP_F_READY_OP
);

440 #ifdef 
DIAGNOSTIC


441 i(!
	`F_ISSET
(
p
, 
REP_F_GROUP_ESTD
))

442 
	`RPRINT
(
dbv
, (dbenv,

445 
	`FLD_SET
(
pags
, 
REP_F_MASTER
 | 
REP_F_GROUP_ESTD
);

446 
p
->
ags
 = 
pags
;

451 
dvs
 = 

->
rsi
.
vsi
;

458 
	`RPRINT
(
dbv
, (dbenv,

459 "p_t: Oldog vsi wa%lu", (
u_lg
)
dvs
));

460 i(

->
rsi
.
vsi
 !
DB_LOGVERSION
) {

461 i((
t
 = 
	`__v__c
(
dbv
, 
DB_LOGVERSION
)) != 0)

462 
ruock
;

464 
p
->
vsi
 = 
DB_REPVERSION
;

465 
	`F_CLR
(
p
, 
REP_F_READY_MSG
);

466 
	`REP_SYSTEM_UNLOCK
(
dbv
);

467 
	`LOG_SYSTEM_LOCK
(
dbv
);

468 
l
 = 

->lsn;

469 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

477 ()
	`__p_nd_mesge
(
dbv
,

478 
DB_EID_BROADCAST
, 
REP_NEWMASTER
, &
l
, 
NULL
, 0, 0);

479 
t
 = 0;

480 i(
re_chg
) {

481 
ndg_evt
 = 
DB_EVENT_REP_MASTER
;

487 
gi
 = 
dbv
->
tx_hd
->
gfo
.
imy
;

488 i(
gi
->

.
_ees
 == 0 &&

489 (
t_t
 = 
	`__p_e_ed
(
dbv
)) != 0 &&

490 
t
 == 0)

491 
t
 = 
t_t
;

492 i(
gi
->

.
_ees
 != 0) {

493 i((
t_t
 = 
	`__dbg_mk_ed
(
dbv
)) != 0 &&

494 
t
 == 0)

495 
t
 = 
t_t
;

497 
t
 = 
	`__dbg_vide_fes
(
dbv
, 0);

498 i((
t_t
 = 
	`__p_ofes
(

499 
dbv
, 0)!0 && 
t
 == 0)

500 
t
 = 
t_t
;

502 i((
t_t
 = 
	`__txn_cye_id
(
dbv
)!0 && 
t
 == 0)

503 
t
 = 
t_t
;

504 
	`DB_ENV_TEST_RECYCLE
(
dbv
, 
t
);

505 
	`REP_SYSTEM_LOCK
(
dbv
);

506 
	`F_CLR
(
p
, 
REP_F_READY_API
 | 
REP_F_READY_OP
);

507 
locked
 = 0;

508 
	`REP_SYSTEM_UNLOCK
(
dbv
);

509 ()
	`__memp_t_cfig
(

510 
dbv
, 
DB_MEMP_SYNC_INTERRUPT
, 0);

513 
noun
 = 
re_chg
 || 
p
->
ma_id
 =
DB_EID_INVALID
;

515 i(
re_chg
)

516 
p
->
ma_id
 = 
DB_EID_INVALID
;

518 
pags
 = 
	`F_ISSET
(
p
, 
REP_F_NOARCHIVE
 | 
REP_F_READY_MSG
 |

519 
REP_F_RECOVER_MASK
 | 
REP_F_TALLY
);

520 
	`FLD_SET
(
pags
, 
REP_F_CLIENT
);

521 i(
re_chg
) {

522 i((
t
 = 
	`__log_g_dvsi
(
dbv
, &
dvs
)) != 0)

523 
ruock
;

524 
	`RPRINT
(
dbv
, (dbenv,

525 "p_t: Found old vsiچog %d", 
dvs
));

526 i(
dvs
 >
DB_LOGVERSION_42
) {

527 
	`__log_t_vsi
(
dbv
, 
dvs
);

528 
dvs
 = 
	`__p_cv_vs
(
dbv
, oldvers);

529 
	`DB_ASSERT
(

530 
dbv
, 
dvs
 !
DB_REPVERSION_INVALID
);

531 
p
->
vsi
 = 
dvs
;

534 
p
->
ags
 = 
pags
;

541 i(
	`IS_USING_LEASES
(
dbv
) &&

542 (
re_chg
 || !
	`F_ISSET
(
p
, 
REP_F_START_CALLED
))) {

543 i((
t
 = 
	`__p_a_expe
(
dbv
, 1)) != 0)

544 
ruock
;

545 
tmp
 = (
db_timeout_t
)(()
p
->
a_timeout
 *

546 (()
p
->
ock_skew
 / () 100));

547 
	`DB_TIMEOUT_TO_TIMESPEC
(
tmp
, &
p
->
a_duti
);

548 i(
p
->
a_off
 !
INVALID_ROFF
) {

549 
	`__v_loc_
(
f
,

550 
	`R_ADDR
(
f
, 
p
->
a_off
));

551 
p
->
a_off
 = 
INVALID_ROFF
;

554 
	`REP_SYSTEM_UNLOCK
(
dbv
);

564 i((
t
 = 
	`__p_abt_ed
(
dbv
)) != 0)

565 
ock
;

570 i(
re_chg
) {

571 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0)

572 
ock
;

577 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

578 ()
	`__db_move
(
dbp
, 
NULL
, 
REPDBNAME
,

579 
NULL
, 
DB_FORCE
);

580 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

584 
ndg_evt
 = 
DB_EVENT_REP_CLIENT
;

586 
	`REP_SYSTEM_LOCK
(
dbv
);

587 
	`F_CLR
(
p
, 
REP_F_READY_MSG
);

588 i(
locked
) {

589 
	`F_CLR
(
p
, 
REP_F_READY_API
 | 
REP_F_READY_OP
);

590 
locked
 = 0;

592 
	`REP_SYSTEM_UNLOCK
(
dbv
);

602 i(
noun
) {

613 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
))

614 
p
->
g
 = 0;

615 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
dbt
)) != 0)

616 
out
;

617 ()
	`__p_nd_mesge
(
dbv
,

618 
DB_EID_BROADCAST
, 
REP_NEWCLIENT
, 
NULL
, 
dbt
, 0, 0);

620 ()
	`__p_nd_mesge
(
dbv
,

621 
DB_EID_BROADCAST
, 
REP_ALIVE_REQ
, 
NULL
, NULL, 0, 0);

632 
DB_TEST_RECOVERY_LABEL


633 
ock
: 
	`REP_SYSTEM_LOCK
(
dbv
);

634 
ruock
: 
	`F_CLR
(
p
, 
REP_F_READY_MSG
);

635 i(
locked
)

636 
	`F_CLR
(
p
, 
REP_F_READY_API
 | 
REP_F_READY_OP
);

637 
	`REP_SYSTEM_UNLOCK
(
dbv
);

639 
out
:

640 i(
t
 == 0) {

641 
	`REP_SYSTEM_LOCK
(
dbv
);

642 
	`F_SET
(
p
, 
REP_F_START_CALLED
);

643 
	`REP_SYSTEM_UNLOCK
(
dbv
);

645 i(
ndg_evt
 !
DB_EVENT_NO_SUCH_EVENT
)

646 
	`__p_fe_evt
(
dbv
, 
ndg_evt
, 
NULL
);

647 
	`__dbt_ur
(
dbv
, 
dbt
, 
NULL
, NULL);

648 
	`ENV_LEAVE
(
dbv
, 

);

649  (
t
);

650 
	}
}

666 
	$__p__db
(
dbv
, 
tup
, 
which
)

667 
DB_ENV
 *
dbv
;

668 
tup
;

669 
pdb_t
 
which
;

671 
DB_REP
 *
db_p
;

672 
DB
 *
dbp
, **
rdb
;

673 
REP
 *
p
;

674 
t
, 
t_t
;

675 
u_t32_t
 
ags
;

676 cڡ *
me
;

678 
	`PANIC_CHECK
(
dbv
);

679 
db_p
 = 
dbv
->
p_hd
;

680 
p
 = 
db_p
->
gi
;

681 
dbp
 = 
NULL
;

683 i(
which
 =
REP_DB
) {

684 
me
 = 
REPDBNAME
;

685 
rdb
 = &
db_p
->
p_db
;

687 
me
 = 
REPPAGENAME
;

688 
rdb
 = &
p
->
fe_dbp
;

691 i(*
rdb
 !
NULL
)

694 i(
tup
) {

695 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0)

696 
r
;

701 ()
	`__db_move
(
dbp
, 
NULL
, 
me
, NULL, 
DB_FORCE
);

704 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 0)) != 0)

705 
r
;

706 i(
which
 =
REP_DB
 &&

707 (
t
 = 
	`__bam_t_bt_com
(
dbp
, 
__p_bt_cmp
)) != 0)

708 
r
;

711 i((
t
 = 
	`__db_t_ags
(
dbp
, 
DB_TXN_NOT_DURABLE
)) != 0)

712 
r
;

714 
ags
 = 
DB_NO_AUTO_COMMIT
 | 
DB_CREATE
 |

715 (
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
? 
DB_THREAD
 : 0);

717 i((
t
 = 
	`__db_ݒ
(
dbp
, 
NULL
, 
me
, NULL,

718 (
which
 =
REP_DB
 ? 
DB_BTREE
 : 
DB_RECNO
),

719 
ags
, 0, 
PGNO_BASE_MD
)) != 0)

720 
r
;

722 *
rdb
 = 
dbp
;

725 
r
: i(
dbp
 !
NULL
 &&

726 (
t_t
 = 
	`__db_o
(
dbp
, 
NULL
, 
DB_NOSYNC
)!0 && 
t
 == 0)

727 
t
 = 
t_t
;

728 *
rdb
 = 
NULL
;

731  (
t
);

732 
	}
}

743 
	$__p_bt_cmp
(
dbp
, 
dbt1
, 
dbt2
)

744 
DB
 *
dbp
;

745 cڡ 
DBT
 *
dbt1
, *
dbt2
;

747 
DB_LSN
 
l1
, 
l2
;

748 
REP_CONTROL
 *
1
, *
2
;

750 
	`COMPQUIET
(
dbp
, 
NULL
);

752 
1
 = 
dbt1
->
da
;

753 
2
 = 
dbt2
->
da
;

755 ()
	`__ua_memy
(&
l1
, &
1
->
l
, (
DB_LSN
));

756 ()
	`__ua_memy
(&
l2
, &
2
->
l
, (
DB_LSN
));

758 i(
l1
.
fe
 > 
l2
.file)

761 i(
l1
.
fe
 < 
l2
.file)

764 i(
l1
.
offt
 > 
l2
.offset)

767 i(
l1
.
offt
 < 
l2
.offset)

771 
	}
}

782 
	$__p_abt_ed
(
dbv
)

783 
DB_ENV
 *
dbv
;

785 
	#PREPLISTSIZE
 50

	)

786 
DB_LOG
 *
db
;

787 
DB_PREPLIST
 

[
PREPLISTSIZE
], *
p
;

788 
DB_TXNMGR
 *
mgr
;

789 
DB_TXNREGION
 *
gi
;

790 
LOG
 *

;

791 
t
;

792 
cou
, 
i
;

793 
u_t32_t
 

;

795 
mgr
 = 
dbv
->
tx_hd
;

796 
gi
 = 
mgr
->
gfo
.
imy
;

797 
db
 = 
dbv
->
lg_hd
;

798 

 = 
db
->
gfo
.
imy
;

800 i(
gi
->

.
_ees
 == 0)

803 

 = 
DB_FIRST
;

805 i((
t
 = 
	`__txn_cov
(
dbv
,

806 

, 
PREPLISTSIZE
, &
cou
, 

)) != 0)

807  (
t
);

808 
i
 = 0; i < 
cou
; i++) {

809 
p
 = &

[
i
];

810 i((
t
 = 
	`__txn_abt
(
p
->
txn
)) != 0)

811  (
t
);

812 
dbv
->
p_hd
->
gi
->
_t
--;

813 
dbv
->
p_hd
->
gi
->
max__l
 = 

->
l
;

814 
gi
->

.
_ees
--;

816 

 = 
DB_NEXT
;

817 } 
cou
 =
PREPLISTSIZE
);

820 
	}
}

833 
	$__p_e_ed
(
dbv
)

834 
DB_ENV
 *
dbv
;

836 
DB_LOGC
 *
logc
;

837 
DB_LSN
 
ckp_l
, 
l
;

838 
DB_REP
 *
db_p
;

839 
DB_TXNHEAD
 *
txnfo
;

840 
DBT
 
c
;

841 
REP
 *
p
;

842 
__txn_ckp_gs
 *
ckp_gs
;

843 
__txn_ckp_42_gs
 *
ckp42_gs
;

844 
__txn_g_gs
 *
g_gs
;

845 
__txn_g_42_gs
 *
g42_gs
;

846 
__txn_xa_g_gs
 *
_gs
;

847 
t
, 
t_t
;

848 
u_t32_t
 
hi_txn
, 
low_txn
, 
y
, 
us
, 
txnid
, 
txn
;

850 
db_p
 = 
dbv
->
p_hd
;

851 
p
 = 
db_p
->
gi
;

852 i(
	`IS_ZERO_LSN
(
p
->
max__l
)) {

853 
	`RPRINT
(
dbv
, (dbenv, "restore_prep: Norepares. Skip."));

856 
txnfo
 = 
NULL
;

857 
ckp_gs
 = 
NULL
;

858 
ckp42_gs
 = 
NULL
;

859 
_gs
 = 
NULL
;

860 
g_gs
 = 
NULL
;

861 
g42_gs
 = 
NULL
;

862 
	`ZERO_LSN
(
ckp_l
);

863 
	`ZERO_LSN
(
l
);

865 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

866  (
t
);

873 
	`memt
(&
c
, 0, (
DBT
));

874 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_FIRST
)) != 0) {

875 
	`__db_rx
(
dbv
, "Firstecordot found");

876 
r
;

882 i(
p
->
max__l
.
fe
 < 
l
.file) {

883 
	`RPRINT
(
dbv
, (dbenv, "restore_prep: Prepareesolved. Skip"));

884 
	`ZERO_LSN
(
p
->
max__l
);

885 
de
;

898 i((
t
 = 
	`__txn_gckp
(
dbv
, &
l
)) == 0) {

899 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_SET
)) != 0) {

900 
	`__db_rx
(
dbv
,

902 (
u_lg
)
l
.
fe
, (u_lg.
offt
);

903 
r
;

906 i(
p
->
vsi
 >
DB_REPVERSION_43
) {

907 i((
t
 = 
	`__txn_ckp_ad
(
dbv
, 
c
.
da
,

908 &
ckp_gs
)) == 0) {

909 
ckp_l
 = 
ckp_gs
->ckp_lsn;

910 
	`__os_
(
dbv
, 
ckp_gs
);

913 i((
t
 = 
	`__txn_ckp_42_ad
(
dbv
, 
c
.
da
,

914 &
ckp42_gs
)) == 0) {

915 
ckp_l
 = 
ckp42_gs
->ckp_lsn;

916 
	`__os_
(
dbv
, 
ckp42_gs
);

919 i(
t
 != 0) {

920 
	`__db_rx
(
dbv
,

922 (
u_lg
)
l
.
fe
, (u_lg.
offt
);

923 
r
;

926 i((
t
 = 
	`__logc_g
(
logc
, &
ckp_l
, &
c
, 
DB_SET
)) != 0) {

927 
	`__db_rx
(
dbv
,

929 (
u_lg
)
ckp_l
.
fe
, (u_lg)ckp_l.
offt
);

930 
r
;

932 } i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_FIRST
)) != 0) {

933 i(
t
 =
DB_NOTFOUND
) {

935 
t
 = 0;

936 
de
;

938 
	`__db_rx
(
dbv
, "Attempto get firstogecord failed");

939 
r
;

951 
	`memy
(&
low_txn
,

952 (
u_t8_t
 *)
c
.
da
 + (
u_t32_t
), (
low_txn
));

953 i(
low_txn
 != 0)

955 } (
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_NEXT
)) == 0);

958 i(
t
 =
DB_NOTFOUND
) {

959 
t
 = 0;

960 
de
;

961 } i(
t
 != 0)

962 
r
;

965 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_LAST
)) != 0) {

970 
	`__db_rx
(
dbv
, "Finalogecordot found");

971 
r
;

975 
	`memy
(&
hi_txn
,

976 (
u_t8_t
 *)
c
.
da
 + (
u_t32_t
), (
hi_txn
));

977 i(
hi_txn
 != 0)

979 } (
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_PREV
)) == 0);

980 i(
t
 =
DB_NOTFOUND
) {

981 
t
 = 0;

982 
de
;

983 } i(
t
 != 0)

984 
r
;

987 i((
t
 =

988 
	`__db_txi_
(
dbv
, 
low_txn
, 
hi_txn
, 
NULL
, &
txnfo
)) != 0)

989 
r
;

1001 
	`F_SET
(
dbv
->
lg_hd
, 
DBLOG_RECOVER
);

1002 
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_LAST
);

1003 
t
 =0 && 
	`LOG_COMPARE
(&
l
, &
ckp_l
) > 0;

1004 
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_PREV
)) {

1005 
	`memy
(&
y
, 
c
.
da
, (rectype));

1006 
y
) {

1007 
DB___txn_g
:

1013 i(
p
->
vsi
 >
DB_REPVERSION_44
) {

1014 i((
t
 = 
	`__txn_g_ad
(
dbv
, 
c
.
da
,

1015 &
g_gs
)) != 0)

1016 
r
;

1017 
txnid
 = 
g_gs
->
tx
->txnid;

1018 
txn
 = 
g_gs
->
code
;

1019 
	`__os_
(
dbv
, 
g_gs
);

1021 i((
t
 = 
	`__txn_g_42_ad
(
dbv
, 
c
.
da
,

1022 &
g42_gs
)) != 0)

1023 
r
;

1024 
txnid
 = 
g42_gs
->
tx
->txnid;

1025 
txn
 = 
g42_gs
->
code
;

1026 
	`__os_
(
dbv
, 
g42_gs
);

1029 
t
 = 
	`__db_txi_fd
(
dbv
,

1030 
txnfo
, 
txnid
, &
us
);

1031 i(
t
 =
DB_NOTFOUND
)

1032 
t
 = 
	`__db_txi_add
(
dbv
, 
txnfo
,

1033 
txnid
, 
txn
, &
l
);

1034 i(
t
 != 0)

1035 
r
;

1037 
DB___txn_xa_g
:

1043 i((
t
 = 
	`__txn_xa_g_ad
(
dbv
, 
c
.
da
,

1044 &
_gs
)) != 0)

1045 
r
;

1046 
t
 = 
	`__db_txi_fd
(
dbv
, 
txnfo
,

1047 
_gs
->
tx
->
txnid
, &
us
);

1048 i(
t
 =
DB_NOTFOUND
) {

1049 i(
_gs
->
code
 =
TXN_ABORT
)

1050 
t
 = 
	`__db_txi_add
(
dbv
, 
txnfo
,

1051 
_gs
->
tx
->
txnid
,

1052 
_gs
->
code
, &
l
);

1053 i((
t
 =

1054 
	`__p_oss_txn
(
dbv
, &
c
)) == 0) {

1063 
p
->
_t
++;

1064 
t
 = 
	`__txn_e_txn
(
dbv
,

1065 &
l
, 
_gs
);

1067 } i(
t
 != 0)

1068 
r
;

1069 
	`__os_
(
dbv
, 
_gs
);

1077 i(
t
 =
DB_NOTFOUND
)

1078 
t
 = 0;

1080 
de
:

1081 
r
: 
t_t
 = 
	`__logc_o
(
logc
);

1082 
	`F_CLR
(
dbv
->
lg_hd
, 
DBLOG_RECOVER
);

1084 i(
txnfo
 !
NULL
)

1085 
	`__db_txi_d
(
dbv
, 
txnfo
);

1087  (
t
 =0 ? 
t_t
 :et);

1088 
	}
}

1098 
	$__p_g_lim
(
dbv
, 
gby
, 
by
)

1099 
DB_ENV
 *
dbv
;

1100 
u_t32_t
 *
gby
, *
by
;

1102 
DB_REP
 *
db_p
;

1103 
REP
 *
p
;

1105 
db_p
 = 
dbv
->
p_hd
;

1106 
	`ENV_NOT_CONFIGURED
(

1107 
dbv
, 
db_p
->
gi
, "DB_ENV->p_g_lim", 
DB_INIT_REP
);

1109 i(
	`REP_ON
(
dbv
)) {

1110 
p
 = 
db_p
->
gi
;

1111 
	`REP_SYSTEM_LOCK
(
dbv
);

1112 i(
gby
 !
NULL
)

1113 *
gby
 = 
p
->
gbys
;

1114 i(
by
 !
NULL
)

1115 *
by
 = 
p
->
bys
;

1116 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1118 i(
gby
 !
NULL
)

1119 *
gby
 = 
db_p
->
gbys
;

1120 i(
by
 !
NULL
)

1121 *
by
 = 
db_p
->
bys
;

1125 
	}
}

1135 
	$__p_t_lim
(
dbv
, 
gbys
, 
bys
)

1136 
DB_ENV
 *
dbv
;

1137 
u_t32_t
 
gbys
, 
bys
;

1139 
DB_REP
 *
db_p
;

1140 
DB_THREAD_INFO
 *

;

1141 
REP
 *
p
;

1143 
db_p
 = 
dbv
->
p_hd
;

1144 
	`ENV_NOT_CONFIGURED
(

1145 
dbv
, 
db_p
->
gi
, "DB_ENV->p_t_lim", 
DB_INIT_REP
);

1147 i(
bys
 > 
GIGABYTE
) {

1148 
gbys
 +
bys
 / 
GIGABYTE
;

1149 
bys
 = by% 
GIGABYTE
;

1152 i(
	`REP_ON
(
dbv
)) {

1153 
p
 = 
db_p
->
gi
;

1154 
	`ENV_ENTER
(
dbv
, 

);

1155 
	`REP_SYSTEM_LOCK
(
dbv
);

1156 
p
->
gbys
 = gbytes;

1157 
p
->
bys
 = bytes;

1158 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1159 
	`ENV_LEAVE
(
dbv
, 

);

1161 
db_p
->
gbys
 = gbytes;

1162 
db_p
->
bys
 = bytes;

1166 
	}
}

1172 
	$__p_t_nses
(
dbv
, 
n
)

1173 
DB_ENV
 *
dbv
;

1174 
n
;

1176 
DB_REP
 *
db_p
;

1177 
REP
 *
p
;

1179 i(
n
 <= 0) {

1180 
	`__db_rx
(
dbv
,

1182  (
EINVAL
);

1185 
db_p
 = 
dbv
->
p_hd
;

1187 
	`ENV_NOT_CONFIGURED
(

1188 
dbv
, 
db_p
->
gi
, "DB_ENV->p_t_nses", 
DB_INIT_REP
);

1190 i(
	`REP_ON
(
dbv
)) {

1191 
p
 = 
db_p
->
gi
;

1192 i(
p
 !
NULL
 && 
	`F_ISSET
ԕ, 
REP_F_START_CALLED
)) {

1193 
	`__db_rx
(
dbv
,

1195  (
EINVAL
);

1197 
p
->
cfig_nses
 = 
n
;

1199 
db_p
->
cfig_nses
 = 
n
;

1201 
	}
}

1207 
	$__p_g_nses
(
dbv
, 
n
)

1208 
DB_ENV
 *
dbv
;

1209 *
n
;

1211 
DB_REP
 *
db_p
;

1212 
REP
 *
p
;

1214 
db_p
 = 
dbv
->
p_hd
;

1218 i(
	`REP_ON
(
dbv
)) {

1219 
p
 = 
db_p
->
gi
;

1220 *
n
 = 
p
->
cfig_nses
;

1222 *
n
 = 
db_p
->
cfig_nses
;

1225 
	}
}

1231 
	$__p_t_iܙy
(
dbv
, 
iܙy
)

1232 
DB_ENV
 *
dbv
;

1233 
iܙy
;

1235 
DB_REP
 *
db_p
;

1236 
REP
 *
p
;

1238 i(
iܙy
 < 0) {

1239 
	`__db_rx
(
dbv
, "priority mayot beegative");

1240  (
EINVAL
);

1242 
db_p
 = 
dbv
->
p_hd
;

1243 i(
	`REP_ON
(
dbv
)) {

1244 
p
 = 
db_p
->
gi
;

1245 
p
->
iܙy
 =riority;

1247 
db_p
->
my_iܙy
 = 
iܙy
;

1249 
	}
}

1255 
	$__p_g_iܙy
(
dbv
, 
iܙy
)

1256 
DB_ENV
 *
dbv
;

1257 *
iܙy
;

1259 
DB_REP
 *
db_p
;

1260 
REP
 *
p
;

1262 
db_p
 = 
dbv
->
p_hd
;

1263 i(
	`REP_ON
(
dbv
)) {

1264 
p
 = 
db_p
->
gi
;

1265 *
iܙy
 = 
p
->priority;

1267 *
iܙy
 = 
db_p
->
my_iܙy
;

1269 
	}
}

1275 
	$__p_t_timeout
(
dbv
, 
which
, 
timeout
)

1276 
DB_ENV
 *
dbv
;

1277 
which
;

1278 
db_timeout_t
 
timeout
;

1280 
DB_REP
 *
db_p
;

1281 
REP
 *
p
;

1282 
t
;

1284 
db_p
 = 
dbv
->
p_hd
;

1285 
p
 = 
db_p
->
gi
;

1286 
t
 = 0;

1288 
which
) {

1289 
DB_REP_CHECKPOINT_DELAY
:

1290 i(
	`REP_ON
(
dbv
))

1291 
p
->
chk_day
 = 
timeout
;

1293 
db_p
->
chk_day
 = 
timeout
;

1295 
DB_REP_ELECTION_TIMEOUT
:

1296 i(
	`REP_ON
(
dbv
))

1297 
p
->
e_timeout
 = 
timeout
;

1299 
db_p
->
e_timeout
 = 
timeout
;

1301 
DB_REP_FULL_ELECTION_TIMEOUT
:

1302 i(
	`REP_ON
(
dbv
))

1303 
p
->
fu_e_timeout
 = 
timeout
;

1305 
db_p
->
fu_e_timeout
 = 
timeout
;

1307 
DB_REP_LEASE_TIMEOUT
:

1308 i(
	`REP_ON
(
dbv
))

1309 
p
->
a_timeout
 = 
timeout
;

1311 
db_p
->
a_timeout
 = 
timeout
;

1313 #ifde
HAVE_REPLICATION_THREADS


1314 
DB_REP_ACK_TIMEOUT
:

1315 
db_p
->
ack_timeout
 = 
timeout
;

1317 
DB_REP_ELECTION_RETRY
:

1318 
db_p
->
ei_y_wa
 = 
timeout
;

1320 
DB_REP_CONNECTION_RETRY
:

1321 
db_p
->
ci_y_wa
 = 
timeout
;

1325 
	`__db_rx
(
dbv
,

1327 
t
 = 
EINVAL
;

1330  (
t
);

1331 
	}
}

1337 
	$__p_g_timeout
(
dbv
, 
which
, 
timeout
)

1338 
DB_ENV
 *
dbv
;

1339 
which
;

1340 
db_timeout_t
 *
timeout
;

1342 
DB_REP
 *
db_p
;

1343 
REP
 *
p
;

1345 
db_p
 = 
dbv
->
p_hd
;

1346 
p
 = 
db_p
->
gi
;

1348 
which
) {

1349 
DB_REP_CHECKPOINT_DELAY
:

1350 *
timeout
 = 
	`REP_ON
(
dbv
) ?

1351 
p
->
chk_day
 : 
db_p
->chkpt_delay;

1353 
DB_REP_ELECTION_TIMEOUT
:

1354 *
timeout
 = 
	`REP_ON
(
dbv
) ?

1355 
p
->
e_timeout
 : 
db_p
->elect_timeout;

1357 
DB_REP_FULL_ELECTION_TIMEOUT
:

1358 *
timeout
 = 
	`REP_ON
(
dbv
) ?

1359 
p
->
fu_e_timeout
 : 
db_p
->full_elect_timeout;

1361 
DB_REP_LEASE_TIMEOUT
:

1362 *
timeout
 = 
	`REP_ON
(
dbv
) ?

1363 
p
->
a_timeout
 : 
db_p
->lease_timeout;

1365 #ifde
HAVE_REPLICATION_THREADS


1366 
DB_REP_ACK_TIMEOUT
:

1367 *
timeout
 = 
db_p
->
ack_timeout
;

1369 
DB_REP_ELECTION_RETRY
:

1370 *
timeout
 = 
db_p
->
ei_y_wa
;

1372 
DB_REP_CONNECTION_RETRY
:

1373 *
timeout
 = 
db_p
->
ci_y_wa
;

1377 
	`__db_rx
(
dbv
,

1379  (
EINVAL
);

1383 
	}
}

1393 
	$__p_g_que
(
dbv
, 
mp
, 
maxp
)

1394 
DB_ENV
 *
dbv
;

1395 
u_t32_t
 *
mp
, *
maxp
;

1397 
DB_REP
 *
db_p
;

1398 
REP
 *
p
;

1400 
db_p
 = 
dbv
->
p_hd
;

1401 
	`ENV_NOT_CONFIGURED
(

1402 
dbv
, 
db_p
->
gi
, "DB_ENV->p_g_que", 
DB_INIT_REP
);

1404 i(
	`REP_ON
(
dbv
)) {

1405 
p
 = 
db_p
->
gi
;

1409 
	`REP_SYSTEM_LOCK
(
dbv
);

1410 i(
mp
 !
NULL
)

1411 *
mp
 = 
p
->
que_g
;

1412 i(
maxp
 !
NULL
)

1413 *
maxp
 = 
p
->
max_g
;

1414 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1416 i(
mp
 !
NULL
)

1417 *
mp
 = 
db_p
->
que_g
;

1418 i(
maxp
 !
NULL
)

1419 *
maxp
 = 
db_p
->
max_g
;

1423 
	}
}

1433 
	$__p_t_que
(
dbv
, 
m
, 
max
)

1434 
DB_ENV
 *
dbv
;

1435 
u_t32_t
 
m
, 
max
;

1437 
LOG
 *

;

1438 
DB_LOG
 *
db
;

1439 
DB_REP
 *
db_p
;

1440 
REP
 *
p
;

1442 
db_p
 = 
dbv
->
p_hd
;

1443 
	`ENV_NOT_CONFIGURED
(

1444 
dbv
, 
db_p
->
gi
, "DB_ENV->p_t_que", 
DB_INIT_REP
);

1446 i(
	`REP_ON
(
dbv
)) {

1447 
p
 = 
db_p
->
gi
;

1451 
	`REP_SYSTEM_LOCK
(
dbv
);

1452 
p
->
que_g
 = 
m
;

1453 
p
->
max_g
 = 
max
;

1454 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1456 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

1457 
db
 = 
dbv
->
lg_hd
;

1458 i(
db
 !
NULL
 && (

 = db->
gfo
.
imy
) != NULL) {

1459 

->
wa_cs
 = 0;

1460 

->
rcvd_cs
 = 0;

1462 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1464 
db_p
->
que_g
 = 
m
;

1465 
db_p
->
max_g
 = 
max
;

1469 
	}
}

1480 
	$__p_t_t
(
dbv
, 
eid
, 
f_nd
)

1481 
DB_ENV
 *
dbv
;

1482 
eid
;

1483 (*
f_nd

	`__P
((
DB_ENV
 *, cڡ 
DBT
 *, cڡ DBT *, cڡ 
DB_LSN
 *,

1484 , 
u_t32_t
));

1486 
DB_REP
 *
db_p
;

1487 
DB_THREAD_INFO
 *

;

1488 
REP
 *
p
;

1490 i(
f_nd
 =
NULL
) {

1491 
	`__db_rx
(
dbv
,

1493  (
EINVAL
);

1496 i(
eid
 < 0) {

1497 
	`__db_rx
(
dbv
,

1499  (
EINVAL
);

1502 
db_p
 = 
dbv
->
p_hd
;

1503 
db_p
->
nd
 = 
f_nd
;

1505 i(
	`REP_ON
(
dbv
)) {

1506 
p
 = 
db_p
->
gi
;

1507 
	`ENV_ENTER
(
dbv
, 

);

1508 
	`REP_SYSTEM_LOCK
(
dbv
);

1509 
p
->
eid
 =id;

1510 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1511 
	`ENV_LEAVE
(
dbv
, 

);

1513 
db_p
->
eid
 =id;

1515 
	}
}

1521 
	$__p_t_a
(
dbv
, 
ock_s_
, 
ags
)

1522 
DB_ENV
 *
dbv
;

1523 
u_t32_t
 
ock_s_
, 
ags
;

1525 
DB_REP
 *
db_p
;

1526 
REP
 *
p
;

1527 
u_t32_t
 
ock_s_nm
;

1528 
t
;

1530 
	`PANIC_CHECK
(
dbv
);

1531 
	`COMPQUIET
(
ags
, 0);

1532 
db_p
 = 
dbv
->
p_hd
;

1533 
	`ENV_NOT_CONFIGURED
(

1534 
dbv
, 
db_p
->
gi
, "DB_ENV->p_t_a", 
DB_INIT_REP
);

1536 
t
 = 0;

1537 
ock_s_nm
 = 
ock_s_
 + 100;

1538 i(
	`REP_ON
(
dbv
)) {

1539 
p
 = 
db_p
->
gi
;

1540 i(
	`F_ISSET
(
p
, 
REP_F_START_CALLED
)) {

1541 
	`__db_rx
(
dbv
,

1543  (
EINVAL
);

1546 
	`REP_SYSTEM_LOCK
(
dbv
);

1547 
	`FLD_SET
(
p
->
cfig
, 
REP_C_LEASE
);

1548 
p
->
ock_skew
 = 
ock_s_nm
;

1549 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1551 
	`FLD_SET
(
db_p
->
cfig
, 
REP_C_LEASE
);

1552 
db_p
->
ock_skew
 = 
ock_s_nm
;

1554  (
t
);

1555 
	}
}

1565 
	$__p_ush
(
dbv
)

1566 
DB_ENV
 *
dbv
;

1568 
DBT
 
c
;

1569 
DB_LOGC
 *
logc
;

1570 
DB_LSN
 
l
;

1571 
DB_THREAD_INFO
 *

;

1572 
t
, 
t_t
;

1574 
	`PANIC_CHECK
(
dbv
);

1575 
	`ENV_REQUIRES_CONFIG_XX
(

1576 
dbv
, 
p_hd
, "DB_ENV->p_ush", 
DB_INIT_REP
);

1577 
	`ENV_ENTER
(
dbv
, 

);

1579 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

1580  (
t
);

1582 
	`memt
(&
c
, 0, (rec));

1583 
	`memt
(&
l
, 0, (lsn));

1585 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
c
, 
DB_LAST
)) != 0)

1586 
r
;

1588 ()
	`__p_nd_mesge
(
dbv
,

1589 
DB_EID_BROADCAST
, 
REP_LOG
, &
l
, &
c
, 0, 0);

1591 
r
: i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

1592 
t
 = 
t_t
;

1593 
	`ENV_LEAVE
(
dbv
, 

);

1594  (
t
);

1595 
	}
}

1605 
	$__p_sync
(
dbv
, 
ags
)

1606 
DB_ENV
 *
dbv
;

1607 
u_t32_t
 
ags
;

1609 
DB_LOG
 *
db
;

1610 
DB_LSN
 
l
;

1611 
DB_REP
 *
db_p
;

1612 
DB_THREAD_INFO
 *

;

1613 
LOG
 *

;

1614 
REP
 *
p
;

1615 
ma
, 
t
;

1616 
u_t32_t
 
pags
, 
ty
;

1618 
	`COMPQUIET
(
ags
, 0);

1620 
	`PANIC_CHECK
(
dbv
);

1621 
	`ENV_REQUIRES_CONFIG_XX
(

1622 
dbv
, 
p_hd
, "DB_ENV->p_sync", 
DB_INIT_REP
);

1624 
db
 = 
dbv
->
lg_hd
;

1625 

 = 
db
->
gfo
.
imy
;

1626 
db_p
 = 
dbv
->
p_hd
;

1627 
p
 = 
db_p
->
gi
;

1629 
	`ENV_ENTER
(
dbv
, 

);

1630 
t
 = 0;

1636 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

1637 
l
 = 

->
vify_l
;

1638 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1639 
	`REP_SYSTEM_LOCK
(
dbv
);

1640 
ma
 = 
p
->
ma_id
;

1641 i(
ma
 =
DB_EID_INVALID
) {

1642 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1643 ()
	`__p_nd_mesge
(
dbv
, 
DB_EID_BROADCAST
,

1644 
REP_MASTER_REQ
, 
NULL
, NULL, 0, 0);

1645 
out
;

1652 i(!
	`F_ISSET
(
p
, 
REP_F_DELAY
)) {

1653 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1654 
out
;

1657 
	`DB_ASSERT
(
dbv
,

1658 !
	`IS_USING_LEASES
(
dbv
|| 
	`__p_i_ged
(dbenv) == 0);

1665 
	`F_CLR
(
p
, 
REP_F_DELAY
);

1666 i(
	`IS_ZERO_LSN
(
l
&& 
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_NOAUTOINIT
)) {

1667 
	`F_CLR
(
p
, 
REP_F_NOARCHIVE
 | 
REP_F_RECOVER_MASK
);

1668 
t
 = 
DB_REP_JOIN_FAILURE
;

1669 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1670 
out
;

1672 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1679 i(
	`IS_ZERO_LSN
(
l
)) {

1680 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
p
, 
REP_F_RECOVER_UPDATE
));

1681 
ty
 = 
REP_UPDATE_REQ
;

1682 
pags
 = 0;

1684 
	`DB_ASSERT
(
dbv
, 
	`F_ISSET
(
p
, 
REP_F_RECOVER_VERIFY
));

1685 
ty
 = 
REP_VERIFY_REQ
;

1686 
pags
 = 
DB_REP_ANYWHERE
;

1688 ()
	`__p_nd_mesge
(
dbv
, 
ma
, 
ty
, &
l
, 
NULL
, 0, 
pags
);

1690 
out
: 
	`ENV_LEAVE
(
dbv
, 

);

1691  (
t
);

1692 
	}
}

1699 
u_t32_t


1700 
	$__p_cv_vs
(
dbv
, 
log_v
)

1701 
DB_ENV
 *
dbv
;

1702 
u_t32_t
 
log_v
;

1704 
	`COMPQUIET
(
dbv
, 
NULL
);

1710 i(
log_v
 =
DB_LOGVERSION_42
)

1711  (
DB_REPVERSION_42
);

1712 i(
log_v
 =
DB_LOGVERSION_43
)

1713  (
DB_REPVERSION_43
);

1714 i(
log_v
 =
DB_LOGVERSION_44
)

1715  (
DB_REPVERSION_44
);

1716 i(
log_v
 =
DB_LOGVERSION_45
)

1717  (
DB_REPVERSION_45
);

1718 i(
log_v
 =
DB_LOGVERSION_46
)

1719  (
DB_REPVERSION_46
);

1720  (
DB_REPVERSION_INVALID
);

1721 
	}
}

	@../rep/rep_record.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc/mp.h
"

17 
	~"dbc/txn.h
"

19 
__p_c_txn
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, 
LSN_COLLECTION
 *));

20 
__p_do_ckp
 
__P
((
DB_ENV
 *, 
DBT
 *, 
REP_CONTROL
 *));

21 
__p_fe_wma
 
__P
((
DB_ENV
 *, 
u_t32_t
, ));

22 
__p_fe_tupde
 
__P
((
DB_ENV
 *, 
u_t32_t
, ));

23 
__p_gxt
 
__P
((
DB_ENV
 *));

24 
__p_l_cmp
 
__P
((const *, const *));

25 
__p_wfe
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *, 
DBT
 *));

26 
__p_oss_c
 
__P
((
DB_ENV
 *, 
REP_CONTROL
 *,

27 
DBT
 *, 
db_timeec
 *, 
DB_LSN
 *));

28 
__p_mf
 
__P
((
DB_ENV
 *, 
DBT
 *, DBT *));

29 
__p_sk_msg
 
__P
((
DB_ENV
 *, 
REP
 *, , 
u_t32_t
));

33 
	#MASTER_ONLY
(
p
, 

) do { \

34 i(!
	`F_ISSET
(
p
, 
REP_F_MASTER
)) { \

35 
	`RPRINT
(
dbv
, \

36 (
dbv
, "Masterecordeceived on client")); \

37 
	`REP_PRINT_MESSAGE
(
dbv
, \

38 
eid
, 

, "rep_process_message", 0); \

39 
t
 = 
EINVAL
; \

40 
ock
; \

42 } 0)

	)

44 
	#CLIENT_ONLY
(
p
, 

) do { \

45 i(!
	`F_ISSET
(
p
, 
REP_F_CLIENT
)) { \

46 
	`RPRINT
(
dbv
, \

47 (
dbv
, "Clientecordeceived on master")); \

54 i(
	`IS_USING_LEASES
(
dbv
)) \

55 
	`DB_ASSERT
(
dbv
, \

56 
	`__p_a_check
(
dbv
, 0) == \

57 
DB_REP_LEASE_EXPIRED
); \

59 
	`REP_PRINT_MESSAGE
(
dbv
, \

60 
eid
, 

, "rep_process_message", 0); \

61 ()
	`__p_nd_mesge
(
dbv
, 
DB_EID_BROADCAST
, \

62 
REP_DUPMASTER
, 
NULL
, NULL, 0, 0); \

64 
t
 = 
DB_REP_DUPMASTER
; \

65 
ock
; \

67 } 0)

	)

74 
	#CLIENT_REREQ
 do { \

75 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
)) { \

76 
	`STAT
(
p
->

.
__svc_q
++); \

77 i(
t
 =
DB_NOTFOUND
) { \

78 
	`STAT
(
p
->

.
__svc_miss
++); \

79 
t
 = 
	`__p_sk_msg
(
dbv
, 
p
, 
eid
, 

->
y
);\

82 } 0)

	)

84 
	#MASTER_UPDATE
(
dbv
, 
nv
) do { \

85 
	`REP_SYSTEM_LOCK
(
dbv
); \

86 
	`F_SET
((
nv
), 
DB_REGENV_REPLOCKED
); \

87 ()
	`time
(&(
nv
)->
_timeamp
); \

88 
	`REP_SYSTEM_UNLOCK
(
dbv
); \

89 } 0)

	)

91 
	#RECOVERING_SKIP
 do { \

92 i(
	`IS_REP_CLIENT
(
dbv
&& 
covg
) { \

94 
	`STAT
(
p
->

.
_msgs_cov
++); \

95 
t
 = 
	`__p_sk_msg
(
dbv
, 
p
, 
eid
, 

->
y
); \

96 
ock
; \

98 } 0)

	)

107 
	#RECOVERING_LOG_SKIP
 do { \

108 i(
	`F_ISSET
(
p
, 
REP_F_DELAY
) || \

109 
p
->
ma_id
 =
DB_EID_INVALID
 || \

110 (
covg
 && \

111 (!
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
) || \

112 
	`LOG_COMPARE
(&

->
l
, &
p
->
ϡ_l
) > 0))) { \

114 
	`STAT
(
p
->

.
_msgs_cov
++); \

115 
t
 = 
	`__p_sk_msg
(
dbv
, 
p
, 
eid
, 

->
y
); \

116 
ock
; \

118 } 0)

	)

120 
	#ANYSITE
(
p
)

	)

138 
	$__p_oss_mesge
(
dbv
, 
cڌ
, 
c
, 
eid
, 
t_lp
)

139 
DB_ENV
 *
dbv
;

140 
DBT
 *
cڌ
, *
c
;

141 
eid
;

142 
DB_LSN
 *
t_lp
;

144 
DB_LOG
 *
db
;

145 
DB_LSN
 
ϡ_l
, 
l
;

146 
DB_REP
 *
db_p
;

147 
DB_THREAD_INFO
 *

;

148 
DBT
 
da_dbt
;

149 
LOG
 *

;

150 
REGENV
 *
nv
;

151 
REGINFO
 *
f
;

152 
REP
 *
p
;

153 
REP_CONTROL
 *

, 
tmp
;

154 
REP_OLD_CONTROL
 *
p
;

155 
u_t32_t
 
eg
, 
g
;

156 
cmp
, 
do_sync
, 
covg
, 
t
;

157 
time_t
 
vime
;

159 
	`PANIC_CHECK
(
dbv
);

160 
	`ENV_REQUIRES_CONFIG_XX
(

161 
dbv
, 
p_hd
, "DB_ENV->p_oss_mesge", 
DB_INIT_REP
);

164 i(
cڌ
 =
NULL
 || cڌ->
size
 == 0) {

165 
	`__db_rx
(
dbv
,

167  (
EINVAL
);

170 i(!
	`IS_REP_MASTER
(
dbv
&& !
	`IS_REP_CLIENT
(dbenv)) {

171 
	`__db_rx
(
dbv
,

173  (
EINVAL
);

176 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
cڌ
)) != 0 ||

177 (
t
 = 
	`__dbt_urcy
(
dbv
, 
c
)) != 0) {

178 
	`__dbt_ur
(
dbv
, 
cڌ
, 
c
, 
NULL
);

179 
	`__db_rx
(
dbv
,

181  
t
;

184 
t
 = 0;

185 
do_sync
 = 0;

186 
db_p
 = 
dbv
->
p_hd
;

187 
p
 = 
db_p
->
gi
;

188 
db
 = 
dbv
->
lg_hd
;

189 

 = 
db
->
gfo
.
imy
;

190 
f
 = 
dbv
->
gfo
;

191 
nv
 = 
f
->
imy
;

197 i(((
REP_OLD_CONTROL
 *)
cڌ
->
da
)->
p_vsi


198 <
DB_REPVERSION_45
) {

199 
p
 = (
REP_OLD_CONTROL
 *)
cڌ
->
da
;

200 
tmp
.
p_vsi
 = 
p
->rep_version;

201 
tmp
.
log_vsi
 = 
p
->log_version;

202 
tmp
.
l
 = 
p
->lsn;

203 
tmp
.
y
 = 
p
->rectype;

204 
tmp
.
g
 = 
p
->gen;

205 
tmp
.
ags
 = 
p
->flags;

206 
	`timeecr
(&
tmp
.
msg_time
);

207 

 = (
REP_CONTROL
 *)&
tmp
;

209 

 = (
REP_CONTROL
 *)
cڌ
->
da
;

210 i(
t_lp
 !
NULL
)

211 
	`ZERO_LSN
(*
t_lp
);

213 
	`ENV_ENTER
(
dbv
, 

);

215 
	`REP_PRINT_MESSAGE
(
dbv
, 
eid
, 

, "rep_process_message", 0);

219 
	`REP_SYSTEM_LOCK
(
dbv
);

220 i(
	`F_ISSET
(
p
, 
REP_F_READY_MSG
)) {

225 
	`RPRINT
(
dbv
, (dbenv,

227 i(
	`F_ISSET
(

, 
REPCTL_PERM
))

228 
t
 = 
DB_REP_IGNORE
;

229 
	`REP_SYSTEM_UNLOCK
(
dbv
);

236 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
&& 
	`REP_MSG_REQ
(

->
y
)) {

237 
	`STAT
(
p
->

.
__svc_q
++);

238 
	`STAT
(
p
->

.
__svc_miss
++);

239 ()
	`__p_nd_mesge
(
dbv
,

240 
eid
, 
REP_REREQUEST
, 
NULL
, NULL, 0, 0);

242 
out
;

244 
p
->
msg_th
++;

245 
g
 = 
p
->gen;

246 
covg
 = 
	`F_ISSET
(
p
, 
REP_F_RECOVER_MASK
);

247 
vime
 = 
nv
->
p_timeamp
;

249 
	`STAT
(
p
->

.
_msgs_osd
++);

250 
	`REP_SYSTEM_UNLOCK
(
dbv
);

256 i(

->
p_vsi
 < 
DB_REPVERSION
) {

257 
	`RPRINT
(
dbv
, (dbenv,

259 (
u_lg
)

->
y
, (u_lgp->
p_vsi
));

260 

->
y
 = 
	`__p_msg_om_d
p->
p_vsi
,p->rectype);

265 
	`DB_ASSERT
(
dbv
, 

->
y
 !
REP_INVALID
);

266 
	`RPRINT
(
dbv
, (dbenv,

268 (
u_lg
)

->
y
, (u_lgp->
p_vsi
));

269 } i(

->
p_vsi
 > 
DB_REPVERSION
) {

270 
	`__db_rx
(
dbv
,

272 (
u_lg
)

->
p_vsi
, 
DB_REPVERSION
);

273 
t
 = 
EINVAL
;

274 
ock
;

277 i(

->
log_vsi
 < 
DB_LOGVERSION
) {

278 
	`RPRINT
(
dbv
, (dbenv,

280 (
u_lg
)

->
y
, (u_lgp->
log_vsi
));

281 } i(

->
log_vsi
 > 
DB_LOGVERSION
) {

282 
	`__db_rx
(
dbv
,

284 (
u_lg
)

->
log_vsi
, 
DB_LOGVERSION
);

285 
t
 = 
EINVAL
;

286 
ock
;

294 i(

->
g
 < g &&p->
y
 !
REP_ALIVE_REQ
 &&

295 

->
y
 !
REP_NEWCLIENT
 &&p->y !
REP_MASTER_REQ
 &&

296 

->
y
 !
REP_DUPMASTER
) {

300 
	`STAT
(
p
->

.
_msgs_badg
++);

301 i(
	`F_ISSET
(

, 
REPCTL_PERM
))

302 
t
 = 
DB_REP_IGNORE
;

303 
ock
;

306 i(

->
g
 > gen) {

311 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

312 
	`STAT
(
p
->

.
_dupmas
++);

313 
t
 = 
DB_REP_DUPMASTER
;

320 i(
	`IS_USING_LEASES
(
dbv
))

321 
	`DB_ASSERT
(
dbv
,

322 
	`__p_a_check
(
dbv
, 0) ==

323 
DB_REP_LEASE_EXPIRED
);

324 i(

->
y
 !
REP_DUPMASTER
)

325 ()
	`__p_nd_mesge
(
dbv
,

326 
DB_EID_BROADCAST
, 
REP_DUPMASTER
,

327 
NULL
, NULL, 0, 0);

328 
ock
;

338 i(

->
y
 =
REP_ALIVE
 ||

339 

->
y
 =
REP_VOTE1
 ||p->y =
REP_VOTE2
) {

340 
	`REP_SYSTEM_LOCK
(
dbv
);

341 
	`RPRINT
(
dbv
, (dbenv,

343 (
u_lg
)
g
, (u_lg)

->gen));

344 
p
->
ma_id
 = 
DB_EID_INVALID
;

345 
g
 = 
p
->g = 

->gen;

350 
	`REP_SYSTEM_UNLOCK
(
dbv
);

351 i(

->
y
 =
REP_ALIVE
)

352 ()
	`__p_nd_mesge
(
dbv
,

353 
DB_EID_BROADCAST
, 
REP_MASTER_REQ
, 
NULL
,

354 
NULL
, 0, 0);

355 } i(

->
y
 !
REP_NEWMASTER
) {

359 i(
	`__p_check_deq
(
dbv
, 
p
))

360 ()
	`__p_nd_mesge
(
dbv
,

361 
DB_EID_BROADCAST
, 
REP_MASTER_REQ
,

362 
NULL
, NULL, 0, 0);

363 
ock
;

375 i(
	`F_ISSET
(

, 
REPCTL_GROUP_ESTD
)) {

376 
	`REP_SYSTEM_LOCK
(
dbv
);

377 #ifdef 
DIAGNOSTIC


378 i(!
	`F_ISSET
(
p
, 
REP_F_GROUP_ESTD
))

379 
	`RPRINT
(
dbv
, (dbenv,

382 
	`F_SET
(
p
, 
REP_F_GROUP_ESTD
);

383 
	`REP_SYSTEM_UNLOCK
(
dbv
);

393 

->
y
) {

394 
REP_ALIVE
:

398 
	`ANYSITE
(
p
);

399 
eg
 = *(
u_t32_t
 *)
c
->
da
;

400 
	`REP_SYSTEM_LOCK
(
dbv
);

401 
	`RPRINT
(
dbv
, (dbenv,

403 (
u_lg
)
eg
, (u_lg)
p
->egen));

404 i(
eg
 > 
p
->egen) {

414 
	`__p_e_de
(
dbv
, 
p
);

415 
p
->
eg
 =gen;

416 
	`F_SET
(
p
, 
REP_F_EGENUPDATE
);

418 
	`REP_SYSTEM_UNLOCK
(
dbv
);

420 
REP_ALIVE_REQ
:

424 
	`ANYSITE
(
p
);

425 
db
 = 
dbv
->
lg_hd
;

426 
	`LOG_SYSTEM_LOCK
(
dbv
);

427 
l
 = ((
LOG
 *)
db
->
gfo
.
imy
)->lsn;

428 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

429 
	`REP_SYSTEM_LOCK
(
dbv
);

430 
eg
 = 
p
->egen;

431 
	`REP_SYSTEM_UNLOCK
(
dbv
);

432 
da_dbt
.
da
 = &
eg
;

433 
da_dbt
.
size
 = (
eg
);

434 ()
	`__p_nd_mesge
(
dbv
,

435 
eid
, 
REP_ALIVE
, &
l
, &
da_dbt
, 0, 0);

437 
REP_ALL_REQ
:

438 
RECOVERING_SKIP
;

439 
t
 = 
	`__p_eq
(
dbv
, 

, 
eid
);

440 
CLIENT_REREQ
;

442 
REP_BULK_LOG
:

443 
RECOVERING_LOG_SKIP
;

444 
	`CLIENT_ONLY
(
p
, 

);

445 
t
 = 
	`__p_bulk_log
(
dbv
, 

, 
c
, 
vime
, 
t_lp
);

447 
REP_BULK_PAGE
:

451 
	`CLIENT_ONLY
(
p
, 

);

452 
t
 = 
	`__p_bulk_ge
(
dbv
, 
eid
, 

, 
c
);

454 
REP_DUPMASTER
:

458 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
))

459 
t
 = 
DB_REP_DUPMASTER
;

461 #ifde
NOTYET


462 
REP_FILE
:

463 
	`CLIENT_ONLY
(
p
, 

);

465 
REP_FILE_REQ
:

466 
t
 = 
	`__p_nd_fe
(
dbv
, 
c
, 
eid
);

469 
REP_FILE_FAIL
:

473 
	`CLIENT_ONLY
(
p
, 

);

478 
REP_LEASE_GRANT
:

482 
	`MASTER_ONLY
(
p
, 

);

483 
t
 = 
	`__p_a_g
(
dbv
, 

, 
c
, 
eid
);

485 
REP_LOG
:

486 
REP_LOG_MORE
:

487 
RECOVERING_LOG_SKIP
;

488 
	`CLIENT_ONLY
(
p
, 

);

489 
t
 = 
	`__p_log
(
dbv
, 

, 
c
, 
vime
, 
t_lp
);

491 
REP_LOG_REQ
:

492 
RECOVERING_SKIP
;

493 i(
	`F_ISSET
(

, 
REPCTL_INIT
))

494 
	`MASTER_UPDATE
(
dbv
, 
nv
);

495 
t
 = 
	`__p_logq
(
dbv
, 

, 
c
, 
eid
);

496 
CLIENT_REREQ
;

498 
REP_NEWSITE
:

503 
	`STAT
(
p
->

.
_wses
++);

506 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

507 
db
 = 
dbv
->
lg_hd
;

508 

 = 
db
->
gfo
.
imy
;

509 
	`LOG_SYSTEM_LOCK
(
dbv
);

510 
l
 = 

->lsn;

511 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

512 ()
	`__p_nd_mesge
(
dbv
,

513 
eid
, 
REP_NEWMASTER
, &
l
, 
NULL
, 0, 0);

514 i(
	`IS_USING_LEASES
(
dbv
))

515 
t
 = 
	`__p_a_esh
(
dbv
);

517 
t
 = 
DB_REP_NEWSITE
;

519 
REP_NEWCLIENT
:

532 ()
	`__p_nd_mesge
(
dbv
,

533 
DB_EID_BROADCAST
, 
REP_NEWSITE
, &

->
l
, 
c
, 0, 0);

535 
t
 = 
DB_REP_NEWSITE
;

537 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
)) {

538 
	`REP_SYSTEM_LOCK
(
dbv
);

539 
eg
 = 
p
->egen;

540 i(
eid
 =
p
->
ma_id
)

541 
p
->
ma_id
 = 
DB_EID_INVALID
;

542 
	`REP_SYSTEM_UNLOCK
(
dbv
);

543 
da_dbt
.
da
 = &
eg
;

544 
da_dbt
.
size
 = (
eg
);

545 ()
	`__p_nd_mesge
(
dbv
, 
DB_EID_BROADCAST
,

546 
REP_ALIVE
, &

->
l
, &
da_dbt
, 0, 0);

550 
REP_MASTER_REQ
:

551 
RECOVERING_SKIP
;

552 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

553 
	`LOG_SYSTEM_LOCK
(
dbv
);

554 
l
 = 

->lsn;

555 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

556 ()
	`__p_nd_mesge
(
dbv
,

557 
DB_EID_BROADCAST
, 
REP_NEWMASTER
, &
l
, 
NULL
, 0, 0);

558 i(
	`IS_USING_LEASES
(
dbv
))

559 
t
 = 
	`__p_a_esh
(
dbv
);

567 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
&& 

->
g
 < gen) {

568 
	`REP_SYSTEM_LOCK
(
dbv
);

569 
eg
 = 
p
->egen;

570 i(
eid
 =
p
->
ma_id
)

571 
p
->
ma_id
 = 
DB_EID_INVALID
;

572 
	`REP_SYSTEM_UNLOCK
(
dbv
);

573 
da_dbt
.
da
 = &
eg
;

574 
da_dbt
.
size
 = (
eg
);

575 ()
	`__p_nd_mesge
(
dbv
, 
eid
,

576 
REP_ALIVE
, &

->
l
, &
da_dbt
, 0, 0);

579 
REP_NEWFILE
:

580 
RECOVERING_LOG_SKIP
;

581 
	`CLIENT_ONLY
(
p
, 

);

582 
t
 = 
	`__p_y
(
dbv
, 

, 
c
, 
t_lp
, 
NULL
, &
ϡ_l
);

583 i(
t
 =
DB_REP_LOGREADY
)

584 
t
 = 
	`__p_logady
(
dbv
, 
p
, 
vime
, &
ϡ_l
);

586 
REP_NEWMASTER
:

590 
	`ANYSITE
(
p
);

591 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
) &&

592 
eid
 !
p
->eid) {

594 
	`STAT
(
p
->

.
_dupmas
++);

595 
t
 = 
DB_REP_DUPMASTER
;

596 i(
	`IS_USING_LEASES
(
dbv
))

597 
	`DB_ASSERT
(
dbv
,

598 
	`__p_a_check
(
dbv
, 0) ==

599 
DB_REP_LEASE_EXPIRED
);

601 ()
	`__p_nd_mesge
(
dbv
,

602 
DB_EID_BROADCAST
, 
REP_DUPMASTER
,

603 
NULL
, NULL, 0, 0);

606 i((
t
 =

607 
	`__p_w_ma
(
dbv
, 

, 
eid
)=
DB_REP_NEWMASTER
)

608 
t
 = 
	`__p_fe_wma
(
dbv
, 

->
g
, 
eid
);

610 
REP_PAGE
:

611 
REP_PAGE_MORE
:

615 
	`CLIENT_ONLY
(
p
, 

);

616 
t
 = 
	`__p_ge
(
dbv
, 
eid
, 

, 
c
);

617 i(
t
 =
DB_REP_PAGEDONE
)

618 
t
 = 0;

620 
REP_PAGE_FAIL
:

624 
	`CLIENT_ONLY
(
p
, 

);

625 
t
 = 
	`__p_ge_
(
dbv
, 
eid
, 
c
);

627 
REP_PAGE_REQ
:

628 
RECOVERING_SKIP
;

629 
	`MASTER_UPDATE
(
dbv
, 
nv
);

630 
t
 = 
	`__p_ge_q
(
dbv
, 
eid
, 
c
);

631 
CLIENT_REREQ
;

633 
REP_REREQUEST
:

638 
	`CLIENT_ONLY
(
p
, 

);

642 
	`STAT
(
p
->

.
__ques
++);

643 
t
 = 
	`__p_nd_q
(
dbv
, 1);

645 
REP_START_SYNC
:

646 
RECOVERING_SKIP
;

647 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

648 
cmp
 = 
	`LOG_COMPARE
(&

->
l
, &

->
ady_l
);

658 i(
cmp
 <= 0) {

659 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

660 
do_sync
 = 1;

662 
	`STAT
(
p
->

.
_tsync_dayed
++);

671 i(
	`LOG_COMPARE
(&

->
l
, &
p
->
ckp_l
) > 0)

672 
p
->
ckp_l
 = 

->
l
;

673 
	`RPRINT
(
dbv
, (dbenv,

675 
	`RPRINT
(
dbv
, (dbenv,

677 (
u_lg
)

->
ady_l
.
fe
, (u_lgp->ady_l.
offt
,

678 (
u_lg
)
p
->
ckp_l
.
fe
, (u_lg->ckp_l.
offt
));

679 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

682 
REP_UPDATE
:

686 
	`CLIENT_ONLY
(
p
, 

);

687 
t
 = 
	`__p_upde_tup
(
dbv
, 
eid
, 

, 
c
);

689 
REP_UPDATE_REQ
:

693 
	`MASTER_ONLY
(
p
, 

);

694 
f
 = 
dbv
->
gfo
;

695 
nv
 = 
f
->
imy
;

696 
	`MASTER_UPDATE
(
dbv
, 
nv
);

697 
t
 = 
	`__p_upde_q
(
dbv
, 
eid
);

699 
REP_VERIFY
:

700 i(
covg
) {

701 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

702 
cmp
 = 
	`LOG_COMPARE
(&

->
vify_l
, &

->
l
);

703 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

707 i(
cmp
 != 0) {

708 
t
 = 
	`__p_sk_msg
(

709 
dbv
, 
p
, 
eid
, 

->
y
);

713 
	`CLIENT_ONLY
(
p
, 

);

714 
t
 = 
	`__p_vify
(
dbv
, 

, 
c
, 
eid
, 
vime
);

716 
REP_VERIFY_FAIL
:

720 
	`CLIENT_ONLY
(
p
, 

);

721 
t
 = 
	`__p_vify_
(
dbv
, 

, 
eid
);

723 
REP_VERIFY_REQ
:

724 
RECOVERING_SKIP
;

725 
t
 = 
	`__p_vify_q
(
dbv
, 

, 
eid
);

726 
CLIENT_REREQ
;

728 
REP_VOTE1
:

732 
t
 = 
	`__p_ve1
(
dbv
, 

, 
c
, 
eid
);

734 
REP_VOTE2
:

738 
t
 = 
	`__p_ve2
(
dbv
, 
c
, 
eid
);

741 
	`__db_rx
(
dbv
,

743 (
u_lg
)

->
y
);

744 
t
 = 
EINVAL
;

748 
ock
:

749 
	`REP_SYSTEM_LOCK
(
dbv
);

750 
p
->
msg_th
--;

751 
	`REP_SYSTEM_UNLOCK
(
dbv
);

752 i(
do_sync
) {

753 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_ckp
);

754 
l
 = 

->lsn;

759 
t
 = 
	`__memp_sync
(

760 
dbv
, 
DB_SYNC_CHECKPOINT
 | 
DB_SYNC_INTERRUPT_OK
, &
l
);

761 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_ckp
);

762 
	`RPRINT
(
dbv
, (dbenv, "ALIVE: Completed sync [%lu][%lu]",

763 (
u_lg
)
l
.
fe
, (u_lg.
offt
));

765 
out
:

766 i(
t
 =0 && 
	`F_ISSET
(

, 
REPCTL_PERM
)) {

767 i(
t_lp
 !
NULL
)

768 *
t_lp
 = 

->
l
;

769 
t
 = 
DB_REP_NOTPERM
;

771 
	`__dbt_ur
(
dbv
, 
cڌ
, 
c
, 
NULL
);

772 
	`ENV_LEAVE
(
dbv
, 

);

773  (
t
);

774 
	}
}

790 
	$__p_y
(
dbv
, 

, 
c
, 
t_lp
, 
is_du
, 
ϡ_lp
)

791 
DB_ENV
 *
dbv
;

792 
REP_CONTROL
 *

;

793 
DBT
 *
c
;

794 
DB_LSN
 *
t_lp
;

795 *
is_du
;

796 
DB_LSN
 *
ϡ_lp
;

798 
DB_REP
 *
db_p
;

799 
DBT
 
cڌ_dbt
, 
key_dbt
;

800 
DBT
 
c_dbt
;

801 
DB
 *
dbp
;

802 
DB_LOG
 *
db
;

803 
DB_LSN
 
max_l
, 
ve_l
;

804 
LOG
 *

;

805 
REP
 *
p
;

806 
db_timeec
 
max_ts
;

807 
u_t32_t
 
g
;

808 
cmp
, 
evt
, 
ma
, 
t
, 
t_y
, 
t_t
;

810 
	`COMPQUIET
(
g
, 0);

811 
	`COMPQUIET
(
ma
, 
DB_EID_INVALID
);

813 
db_p
 = 
dbv
->
p_hd
;

814 
p
 = 
db_p
->
gi
;

815 
evt
 = 
t
 = 
t_y
 = 0;

816 
	`memt
(&
cڌ_dbt
, 0, (control_dbt));

817 
	`memt
(&
c_dbt
, 0, (rec_dbt));

818 
	`ZERO_LSN
(
max_l
);

819 
	`timeecr
(&
max_ts
);

820 
cmp
 = -2;

822 
db
 = 
dbv
->
lg_hd
;

823 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

828 i(
db_p
->
p_db
 =
NULL
 &&

829 (
t
 = 
	`__p__db
(
dbv
, 0, 
REP_DB
)) != 0) {

830 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

831 
out
;

833 
dbp
 = 
db_p
->
p_db
;

834 

 = 
db
->
gfo
.
imy
;

835 
	`REP_SYSTEM_LOCK
(
dbv
);

836 i(
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
) &&

837 
	`LOG_COMPARE
(&

->
ady_l
, &
p
->
f_l
) < 0)

838 

->
ady_l
 = 
p
->
f_l
;

839 
cmp
 = 
	`LOG_COMPARE
(&

->
l
, &

->
ady_l
);

845 i(
	`F_ISSET
(
p
, 
REP_F_READY_APPLY
&& 
cmp
 >= 0)

846 
	`F_SET
(
p
, 
REP_F_SKIPPED_APPLY
);

856 i(
	`F_ISSET
(
p
, 
REP_F_NEWFILE
&& 
cmp
 == 0)

857 
cmp
 = -1;

859 i(
cmp
 == 0) {

871 i(
	`F_ISSET
(
p
, 
REP_F_READY_APPLY
)) {

878 
	`RPRINT
(
dbv
, (dbenv,

880 (
u_lg
)

->
l
.
fe
, (u_lgp->l.
offt
));

881 
	`REP_SYSTEM_UNLOCK
(
dbv
);

882 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

883 
out
;

885 
p
->
y_th
++;

886 
t_y
 = 1;

887 
	`RPRINT
(
dbv
, (dbenv,

888 "p_y: Sly_th %d", 
p
->
y_th
));

889 
	`REP_SYSTEM_UNLOCK
(
dbv
);

890 i((
t
 =

891 
	`__p_oss_c
(
dbv
, 

, 
c
, &
max_ts
, &
max_l
)) != 0)

892 
r
;

898 

->
rcvd_cs
 = 0;

899 
	`ZERO_LSN
(

->
max_wa_l
);

901 
t
 == 0 &&

902 
	`LOG_COMPARE
(&

->
ady_l
, &->
wag_l
) == 0) {

907 
g_check
:

908 i((
t
 =

909 
	`__p_mf
(
dbv
, &
cڌ_dbt
, &
c_dbt
)) != 0)

910 
r
;

912 

 = (
REP_CONTROL
 *)
cڌ_dbt
.
da
;

913 
c
 = &
c_dbt
;

914 i((
t
 = 
	`__p_oss_c
(
dbv
,

915 

, 
c
, &
max_ts
, &
max_l
)) != 0)

916 
r
;

918 --
p
->

.
_log_queued
;

932 

->
rcvd_cs
 = 
p
->

.
_log_queued
;

933 

->
wa_cs
 = 
p
->
que_g
;

935 i((
t
 = 
	`__p_gxt
(
dbv
)=
DB_NOTFOUND
) {

936 

->
rcvd_cs
 = 0;

937 
t
 = 0;

939 } i(
t
 != 0)

940 
r
;

947 i(!
	`IS_ZERO_LSN
(

->
wag_l
) &&

948 
	`LOG_COMPARE
(&

->
ady_l
, &->
wag_l
) != 0) {

956 i(
	`__p_check_deq
(
dbv
, 
p
&& (
t
 =

957 
	`__p_logg_q
(
dbv
, 
p
, &

->
l
, 0)) != 0)

958 
r
;

960 

->
wa_cs
 = 0;

961 
	`ZERO_LSN
(

->
max_wa_l
);

964 } i(
cmp
 > 0) {

972 
	`REP_SYSTEM_UNLOCK
(
dbv
);

973 
	`memt
(&
key_dbt
, 0, (key_dbt));

974 
key_dbt
.
da
 = 

;

975 
key_dbt
.
size
 = (*

);

976 i(

->
wa_cs
 == 0) {

983 

->
wa_cs
 = 
p
->
que_g
;

984 

->
rcvd_cs
 = 0;

985 
	`ZERO_LSN
(

->
max_wa_l
);

987 i(
	`__p_check_deq
(
dbv
, 
p
) &&

988 (
t
 = 
	`__p_logg_q
(
dbv
, 
p
, &

->
l
, 0) != 0))

989 
r
;

991 
t
 = 
	`__db_put
(
dbp
, 
NULL
, &
key_dbt
, 
c
, 
DB_NOOVERWRITE
);

992 i(
t
 == 0) {

993 
p
->

.
_log_queued
++;

994 #ifde
HAVE_STATISTICS


995 
	`STAT
(
p
->

.
_log_queued_tٮ
++);

996 i(
p
->

.
_log_queued_max
 <

997 
p
->

.
_log_queued
)

998 
p
->

.
_log_queued_max
 =

999 
p
->

.
_log_queued
;

1003 i(
t
 =
DB_KEYEXIST
)

1004 
t
 = 0;

1005 i(
t
 != 0)

1006 
de
;

1008 i(
	`IS_ZERO_LSN
(

->
wag_l
) ||

1009 
	`LOG_COMPARE
(&

->
l
, &

->
wag_l
) < 0)

1010 

->
wag_l
 = 

->
l
;

1016 i(
t
 =0 && 
	`F_ISSET
(

, 
REPCTL_PERM
)) {

1017 
max_l
 = 

->
l
;

1018 
t
 = 
DB_REP_NOTPERM
;

1020 
de
;

1022 
	`STAT
(
p
->

.
_log_duid
++);

1023 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1024 i(
is_du
 !
NULL
)

1025 *
is_du
 = 1;

1026 i(
	`F_ISSET
(

, 
REPCTL_PERM
))

1027 
max_l
 = 

->
max_rm_l
;

1034 i(
	`IS_USING_LEASES
(
dbv
) &&

1035 
	`F_ISSET
(

, 
REPCTL_LEASE
) &&

1036 
	`timeecist
(&

->
msg_time
)) {

1037 i(
	`timeeccmp
(&

->
msg_time
, &

->
max_a_ts
, >))

1038 
max_ts
 = 

->
msg_time
;

1040 
max_ts
 = 

->
max_a_ts
;

1042 
de
;

1046 i(
t
 =0 && 
	`LOG_COMPARE
(&

->
ady_l
, &->
wag_l
) == 0)

1047 
g_check
;

1049 
de
:

1050 
r
:

1055 
	`REP_SYSTEM_LOCK
(
dbv
);

1056 i(
t
 == 0 &&

1057 
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
) &&

1058 !
	`IS_ZERO_LSN
(
p
->
ϡ_l
) &&

1059 
	`LOG_COMPARE
(&

->
ady_l
, &
p
->
ϡ_l
) >= 0) {

1060 *
ϡ_lp
 = 
max_l
;

1061 
	`ZERO_LSN
(
p
->
ϡ_l
);

1062 
	`ZERO_LSN
(
max_l
);

1063 
t
 = 
DB_REP_LOGREADY
;

1070 i(
t_y
) {

1071 
p
->
y_th
--;

1072 
	`RPRINT
(
dbv
, (dbenv,

1073 "p_y: Deemy_th %d", 
p
->
y_th
));

1076 i(
t
 =0 && !
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
) &&

1077 !
	`IS_ZERO_LSN
(
max_l
)) {

1078 i(
t_lp
 !
NULL
)

1079 *
t_lp
 = 
max_l
;

1080 
t
 = 
DB_REP_ISPERM
;

1081 
	`DB_ASSERT
(
dbv
, 
	`LOG_COMPARE
(&
max_l
, &

->
max_rm_l
) >= 0);

1082 

->
max_rm_l
 = 
max_l
;

1092 i((
t
 =0 || =
DB_REP_ISPERM
) &&

1093 
p
->

.
_tup_come
 == 0 &&

1094 ((
cmp
 <0 && 
	`F_ISSET
(

, 
REPCTL_LOG_END
)) ||

1095 (
cmp
 =0 && !
	`F_ISSET
(

, 
REPCTL_RESEND
)))) {

1096 
p
->

.
_tup_come
 = 1;

1097 
evt
 = 1;

1098 
g
 = 
p
->gen;

1099 
ma
 = 
p
->
ma_id
;

1101 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1112 i(!
	`IS_ZERO_LSN
(
p
->
ckp_l
) &&

1113 
	`LOG_COMPARE
(&

->
ady_l
, &
p
->
ckp_l
) >= 0) {

1114 
ve_l
 = 
p
->
ckp_l
;

1115 
	`ZERO_LSN
(
p
->
ckp_l
);

1117 
	`ZERO_LSN
(
ve_l
);

1124 i(
t
 =
DB_REP_ISPERM
 && 
	`IS_USING_LEASES
(
dbv
) &&

1125 
	`timeecist
(&
max_ts
)) {

1126 i((
t
 = 
	`__p_upde_g
(
dbv
, &
max_ts
)) != 0)

1127  (
t
);

1128 i(
	`timeeccmp
(&
max_ts
, &

->
max_a_ts
, >))

1129 

->
max_a_ts
 = 
max_ts
;

1132 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1133 i(!
	`IS_ZERO_LSN
(
ve_l
)) {

1137 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_ckp
);

1138 
	`RPRINT
(
dbv
, (dbenv,

1140 (
u_lg
)
ve_l
.
fe
, (u_lg)ve_l.
offt
));

1141 
t
 = 
	`__memp_sync
(
dbv
, 
DB_SYNC_CHECKPOINT
, &
ve_l
);

1142 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_ckp
);

1144 i(
evt
) {

1145 
	`RPRINT
(
dbv
, (dbenv,

1147 (
u_lg
)

->
l
.
fe
, (u_lgp->l.
offt
));

1149 i((
t_t
 = 
	`__p_fe_tupde
(
dbv
, 
g
, 
ma
)) != 0) {

1150 
	`DB_ASSERT
(
dbv
, 
t
 =0 || =
DB_REP_ISPERM
);

1152 
t
 = 
t_t
;

1153 
out
;

1156 i(
t
 =0 && 

->
y
 =
REP_NEWFILE
 && 

->
db_log_autemove
)

1157 
	`__log_autemove
(
dbv
);

1158 i(
cڌ_dbt
.
da
 !
NULL
)

1159 
	`__os_u
(
dbv
, 
cڌ_dbt
.
da
);

1160 i(
c_dbt
.
da
 !
NULL
)

1161 
	`__os_u
(
dbv
, 
c_dbt
.
da
);

1163 
out
:

1164 
t
) {

1167 
DB_REP_ISPERM
:

1168 
	`RPRINT
(
dbv
, (dbenv, "Returning ISPERM [%lu][%lu], cmp = %d",

1169 (
u_lg
)
max_l
.
fe
, (u_lg)max_l.
offt
, 
cmp
));

1171 
DB_REP_LOGREADY
:

1172 
	`RPRINT
(
dbv
, (dbenv,

1174 (
u_lg
)
ϡ_lp
->
fe
,

1175 (
u_lg
)
ϡ_lp
->
offt
, 
cmp
));

1177 
DB_REP_NOTPERM
:

1178 i(!
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
) &&

1179 !
	`IS_ZERO_LSN
(
max_l
&& 
t_lp
 !
NULL
)

1180 *
t_lp
 = 
max_l
;

1182 
	`RPRINT
(
dbv
, (dbenv, "Returning NOTPERM [%lu][%lu], cmp = %d",

1183 (
u_lg
)
max_l
.
fe
, (u_lg)max_l.
offt
, 
cmp
));

1186 
	`RPRINT
(
dbv
, (dbv, "Rug %d [%lu][%lu], cm%d", 
t
,

1187 (
u_lg
)
max_l
.
fe
, (u_lg)max_l.
offt
, 
cmp
));

1191  (
t
);

1192 
	}
}

1203 
	$__p_oss_txn
(
dbv
, 
c
)

1204 
DB_ENV
 *
dbv
;

1205 
DBT
 *
c
;

1207 
DBT
 
da_dbt
, *
lock_dbt
;

1208 
DB_LOCKER
 *
lock
;

1209 
DB_LOCKREQ
 
q
, *
lvp
;

1210 
DB_LOGC
 *
logc
;

1211 
DB_LSN
 
ev_l
, *
lp
;

1212 
DB_REP
 *
db_p
;

1213 
DB_TXNHEAD
 *
txnfo
;

1214 
LSN_COLLECTION
 
lc
;

1215 
REP
 *
p
;

1216 
__txn_g_gs
 *
txn_gs
;

1217 
__txn_g_42_gs
 *
txn42_gs
;

1218 
__txn_xa_g_gs
 *
_gs
;

1219 
u_t32_t
 
y
;

1220 
u_t
 
i
;

1221 
t
, 
t_t
;

1223 
db_p
 = 
dbv
->
p_hd
;

1224 
p
 = 
db_p
->
gi
;

1225 
logc
 = 
NULL
;

1226 
txn_gs
 = 
NULL
;

1227 
txn42_gs
 = 
NULL
;

1228 
_gs
 = 
NULL
;

1229 
txnfo
 = 
NULL
;

1231 
	`memt
(&
da_dbt
, 0, (data_dbt));

1232 i(
	`F_ISSET
(
dbv
, 
DB_ENV_THREAD
))

1233 
	`F_SET
(&
da_dbt
, 
DB_DBT_REALLOC
);

1244 
	`memy
(&
y
, 
c
->
da
, (rectype));

1245 
	`memt
(&
lc
, 0, (lc));

1246 i(
y
 =
DB___txn_g
) {

1251 i(
p
->
vsi
 >
DB_REPVERSION_44
) {

1252 i((
t
 = 
	`__txn_g_ad
(
dbv
, 
c
->
da
,

1253 &
txn_gs
)) != 0)

1254  (
t
);

1255 i(
txn_gs
->
code
 !
TXN_COMMIT
) {

1256 
	`__os_
(
dbv
, 
txn_gs
);

1259 
ev_l
 = 
txn_gs
->prev_lsn;

1260 
lock_dbt
 = &
txn_gs
->
locks
;

1262 i((
t
 = 
	`__txn_g_42_ad
(
dbv
, 
c
->
da
,

1263 &
txn42_gs
)) != 0)

1264  (
t
);

1265 i(
txn42_gs
->
code
 !
TXN_COMMIT
) {

1266 
	`__os_
(
dbv
, 
txn42_gs
);

1269 
ev_l
 = 
txn42_gs
->prev_lsn;

1270 
lock_dbt
 = &
txn42_gs
->
locks
;

1274 
	`DB_ASSERT
(
dbv
, 
y
 =
DB___txn_xa_g
);

1276 i((
t
 =

1277 
	`__txn_xa_g_ad
(
dbv
, 
c
->
da
, &
_gs
)) != 0)

1278  (
t
);

1279 
ev_l
 = 
_gs
->prev_lsn;

1280 
lock_dbt
 = &
_gs
->
locks
;

1284 i((
t
 = 
	`__lock_id
(
dbv
, 
NULL
, &
lock
)) != 0)

1285 
r1
;

1287 i((
t
 =

1288 
	`__lock_g_li
(
dbv
, 
lock
, 0, 
DB_LOCK_WRITE
, 
lock_dbt
)) != 0)

1289 
r
;

1292 i((
t
 = 
	`__p_c_txn
(
dbv
, &
ev_l
, &
lc
)) != 0)

1293 
r
;

1294 
	`qst
(
lc
.
y
,c.
Ƣs
, (
DB_LSN
), 
__p_l_cmp
);

1301 i((
t
 = 
	`__db_txi_
(
dbv
, 0, 0, 
NULL
, &
txnfo
)) != 0)

1302 
r
;

1305 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

1306 
r
;

1307 
lp
 = &
lc
.
y
[0], 
i
 = 0; i <c.
Ƣs
; i++,snp++) {

1308 i((
t
 = 
	`__logc_g
(
logc
, 
lp
, &
da_dbt
, 
DB_SET
)) != 0) {

1309 
	`__db_rx
(
dbv
, "failedoeadheogt [%lu][%lu]",

1310 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
);

1311 
r
;

1313 i((
t
 = 
	`__db_dich
(
dbv
, dbv->
cov_db
,

1314 
dbv
->
cov_db_size
, &
da_dbt
, 
lp
,

1315 
DB_TXN_APPLY
, 
txnfo
)) != 0) {

1316 
	`__db_rx
(
dbv
, "transaction failedt [%lu][%lu]",

1317 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
);

1318 
r
;

1322 
r
: 
	`memt
(&
q
, 0, (req));

1323 
q
.

 = 
DB_LOCK_PUT_ALL
;

1324 i((
t_t
 =

1325 
	`__lock_vec
(
dbv
, 
lock
, 0, &
q
, 1, &
lvp
)!0 && 
t
 == 0)

1326 
t
 = 
t_t
;

1328 i((
t_t
 = 
	`__lock_id_
(
dbv
, 
lock
)!0 && 
t
 == 0)

1329 
t
 = 
t_t
;

1331 
r1
: i(
txn_gs
 !
NULL
)

1332 
	`__os_
(
dbv
, 
txn_gs
);

1333 i(
txn42_gs
 !
NULL
)

1334 
	`__os_
(
dbv
, 
txn42_gs
);

1335 i(
_gs
 !
NULL
)

1336 
	`__os_
(
dbv
, 
_gs
);

1337 i(
lc
.
y
 !
NULL
)

1338 
	`__os_
(
dbv
, 
lc
.
y
);

1340 i(
logc
 !
NULL
 && (
t_t
 = 
	`__logc_o
ogc)!0 && 
t
 == 0)

1341 
t
 = 
t_t
;

1343 i(
txnfo
 !
NULL
)

1344 
	`__db_txi_d
(
dbv
, 
txnfo
);

1346 i(
	`F_ISSET
(&
da_dbt
, 
DB_DBT_REALLOC
&& da_dbt.
da
 !
NULL
)

1347 
	`__os_u
(
dbv
, 
da_dbt
.
da
);

1349 #ifde
HAVE_STATISTICS


1350 i(
t
 == 0)

1354 
p
->

.
_txns_d
++;

1357  (
t
);

1358 
	}
}

1367 
	$__p_c_txn
(
dbv
, 
lp
, 
lc
)

1368 
DB_ENV
 *
dbv
;

1369 
DB_LSN
 *
lp
;

1370 
LSN_COLLECTION
 *
lc
;

1372 
__txn_chd_gs
 *
gp
;

1373 
DB_LOGC
 *
logc
;

1374 
DB_LSN
 
c_l
;

1375 
DBT
 
da
;

1376 
u_t32_t
 
y
;

1377 
u_t
 
oc
;

1378 
t
, 
t_t
;

1380 
	`memt
(&
da
, 0, (data));

1381 
	`F_SET
(&
da
, 
DB_DBT_REALLOC
);

1383 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

1384  (
t
);

1386 !
	`IS_ZERO_LSN
(*
lp
) &&

1387 (
t
 = 
	`__logc_g
(
logc
, 
lp
, &
da
, 
DB_SET
)) == 0) {

1388 
	`memy
(&
y
, 
da
.data, (rectype));

1389 i(
y
 =
DB___txn_chd
) {

1390 i((
t
 = 
	`__txn_chd_ad
(
dbv
,

1391 
da
.da, &
gp
)) != 0)

1392 
r
;

1393 
c_l
 = 
gp
->c_lsn;

1394 *
lp
 = 
gp
->
ev_l
;

1395 
	`__os_
(
dbv
, 
gp
);

1396 
t
 = 
	`__p_c_txn
(
dbv
, &
c_l
, 
lc
);

1398 i(
lc
->
oc
 <c->
Ƣs
 + 1) {

1399 
oc
 = 
lc
->nalloc == 0 ? 20 :c->nalloc * 2;

1400 i((
t
 = 
	`__os_loc
(
dbv
,

1401 
oc
 * (
DB_LSN
), &
lc
->
y
)) != 0)

1402 
r
;

1403 
lc
->
oc
 =alloc;

1405 
lc
->
y
[lc->
Ƣs
++] = *
lp
;

1414 
	`memy
(
lp
, (
u_t8_t
 *)
da
.data +

1415 (
u_t32_t
) + (u_int32_t),

1416 (
DB_LSN
));

1419 i(
t
 != 0)

1420 
r
;

1422 i(
t
 != 0)

1423 
	`__db_rx
(
dbv
, "collect failedt: [%lu][%lu]",

1424 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
);

1426 
r
: i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

1427 
t
 = 
t_t
;

1428 i(
da
.d!
NULL
)

1429 
	`__os_u
(
dbv
, 
da
.data);

1430  (
t
);

1431 
	}
}

1438 
	$__p_l_cmp
(
l1
, 
l2
)

1439 cڡ *
l1
, *
l2
;

1442  (
	`LOG_COMPARE
((
DB_LSN
 *)
l1
, (DB_LSN *)
l2
));

1443 
	}
}

1452 
	$__p_wfe
(
dbv
, 
rc
, 
c
)

1453 
DB_ENV
 *
dbv
;

1454 
REP_CONTROL
 *
rc
;

1455 
DBT
 *
c
;

1457 
DB_LOG
 *
db
;

1458 
DB_LSN
 
tm
;

1459 
DB_REP
 *
db_p
;

1460 
LOG
 *

;

1461 
REP
 *
p
;

1462 
u_t32_t
 
vsi
;

1463 
t
;

1465 
db
 = 
dbv
->
lg_hd
;

1466 

 = 
db
->
gfo
.
imy
;

1467 
db_p
 = 
dbv
->
p_hd
;

1468 
p
 = 
db_p
->
gi
;

1473 i(
	`F_ISSET
(
p
, 
REP_F_NEWFILE
))

1475 i(
rc
->
l
.
fe
 + 1 > 

->
ady_l
.file) {

1476 i(
c
 =
NULL
 ||ec->
size
 == 0) {

1477 
	`RPRINT
(
dbv
, (dbenv,

1479 (
u_lg

rc
->
log_vsi
));

1480 
vsi
 = 
rc
->
log_vsi
;

1482 
vsi
 = *(
u_t32_t
 *)
c
->
da
;

1483 
	`RPRINT
(
dbv
, (dbenv, "Rep_newfile: File %lu vers %lu",

1484 (
u_lg
)
rc
->
l
.
fe
 + 1, (u_lg)
vsi
));

1495 
	`REP_SYSTEM_LOCK
(
dbv
);

1496 
	`F_SET
(
p
, 
REP_F_NEWFILE
);

1497 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1498 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1499 
	`LOG_SYSTEM_LOCK
(
dbv
);

1500 
t
 = 
	`__log_wfe
(
db
, &
tm
, 0, 
vsi
);

1501 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

1502 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

1503 
	`REP_SYSTEM_LOCK
(
dbv
);

1504 
	`F_CLR
(
p
, 
REP_F_NEWFILE
);

1505 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1506 i(
t
 == 0)

1507 

->
ady_l
 = 
tm
;

1508  (
t
);

1512 
	}
}

1521 
	$__p_do_ckp
(
dbv
, 
c
, 

)

1522 
DB_ENV
 *
dbv
;

1523 
DBT
 *
c
;

1524 
REP_CONTROL
 *

;

1526 
__txn_ckp_gs
 *
ckp_gs
;

1527 
DB_LSN
 
ckp_l
;

1528 
REP
 *
p
;

1529 
t
;

1532 i((
t
 = 
	`__txn_ckp_ad
(
dbv
, 
c
->
da
, &
ckp_gs
)) != 0)

1533  (
t
);

1534 
ckp_l
 = 
ckp_gs
->ckp_lsn;

1535 
	`__os_
(
dbv
, 
ckp_gs
);

1537 
p
 = 
dbv
->
p_hd
->
gi
;

1539 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1540 
	`DB_TEST_WAIT
(
dbv
, dbv->
_check
);

1553 ()
	`__memp_t_cfig
(
dbv
, 
DB_MEMP_SUPPRESS_WRITE
, 1);

1554 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_ckp
);

1555 
t
 = 
	`__memp_sync
(
dbv
, 
DB_SYNC_CHECKPOINT
, &
ckp_l
);

1556 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_ckp
);

1557 ()
	`__memp_t_cfig
(
dbv
, 
DB_MEMP_SUPPRESS_WRITE
, 0);

1560 i(
t
 == 0)

1561 
t
 = 
	`__txn_updeckp
(
dbv
, &

->
l
);

1563 
	`__db_rx
(
dbv
, "Error syncing ckp [%lu][%lu]",

1564 (
u_lg
)
ckp_l
.
fe
, (u_lg)ckp_l.
offt
);

1565 
t
 = 
	`__db_nic
(
dbv
,et);

1568 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

1569  (
t
);

1570 
	}
}

1577 
	$__p_mf
(
dbv
, 
l
, 
c
)

1578 
DB_ENV
 *
dbv
;

1579 
DBT
 *
l
;

1580 
DBT
 *
c
;

1582 
DB
 *
dbp
;

1583 
DBC
 *
dbc
;

1584 
DB_REP
 *
db_p
;

1585 
t
, 
t_t
;

1587 
db_p
 = 
dbv
->
p_hd
;

1588 
dbp
 = 
db_p
->
p_db
;

1590 i((
t
 = 
	`__db_curs
(
dbp
, 
NULL
, &
dbc
, 0)) != 0)

1591  (
t
);

1594 
	`F_SET
(
l
, 
DB_DBT_REALLOC
);

1595 
	`F_SET
(
c
, 
DB_DBT_REALLOC
);

1596 i((
t
 = 
	`__dbc_g
(
dbc
, 
l
, 
c
, 
DB_RMW
 | 
DB_FIRST
)) == 0)

1597 
t
 = 
	`__dbc_d
(
dbc
, 0);

1598 i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

1599 
t
 = 
t_t
;

1601  (
t
);

1602 
	}
}

1609 
	$__p_gxt
(
dbv
)

1610 
DB_ENV
 *
dbv
;

1612 
DB
 *
dbp
;

1613 
DB_REP
 *
db_p
;

1614 
DB_LOG
 *
db
;

1615 
DBC
 *
dbc
;

1616 
DBT
 
l_dbt
, 
xec_dbt
;

1617 
LOG
 *

;

1618 
REP_CONTROL
 *

;

1619 
t
, 
t_t
;

1621 
db
 = 
dbv
->
lg_hd
;

1622 

 = 
db
->
gfo
.
imy
;

1624 
db_p
 = 
dbv
->
p_hd
;

1625 
dbp
 = 
db_p
->
p_db
;

1627 i((
t
 = 
	`__db_curs
(
dbp
, 
NULL
, &
dbc
, 0)) != 0)

1628  (
t
);

1640 
	`memt
(&
xec_dbt
, 0, (nextrec_dbt));

1641 
	`F_SET
(&
xec_dbt
, 
DB_DBT_PARTIAL
);

1642 
xec_dbt
.
un
 =exec_dbt.
dn
 = 0;

1644 
	`memt
(&
l_dbt
, 0, (lsn_dbt));

1645 
t
 = 
	`__dbc_g
(
dbc
, &
l_dbt
, &
xec_dbt
, 
DB_FIRST
);

1646 i(
t
 !
DB_NOTFOUND
 &&et != 0)

1647 
r
;

1649 i(
t
 =
DB_NOTFOUND
) {

1650 
	`ZERO_LSN
(

->
wag_l
);

1657 
r
;

1659 

 = (
REP_CONTROL
 *)
l_dbt
.
da
;

1660 

->
wag_l
 = 

->
l
;

1662 
r
: i((
t_t
 = 
	`__dbc_o
(
dbc
)!0 && 
t
 == 0)

1663 
t
 = 
t_t
;

1664  (
t
);

1665 
	}
}

1676 
	$__p_oss_c
(
dbv
, 

, 
c
, 
t_t
, 
t_lp
)

1677 
DB_ENV
 *
dbv
;

1678 
REP_CONTROL
 *

;

1679 
DBT
 *
c
;

1680 
db_timeec
 *
t_t
;

1681 
DB_LSN
 *
t_lp
;

1683 
DB
 *
dbp
;

1684 
DB_REP
 *
db_p
;

1685 
DBT
 
cڌ_dbt
, 
key_dbt
, 
c_dbt
;

1686 
REP
 *
p
;

1687 
u_t32_t
 
y
, 
txnid
;

1688 
t
, 
t_t
;

1690 
db_p
 = 
dbv
->
p_hd
;

1691 
p
 = 
db_p
->
gi
;

1692 
dbp
 = 
db_p
->
p_db
;

1693 
t
 = 0;

1695 i(

->
y
 =
REP_NEWFILE
) {

1696 
t
 = 
	`__p_wfe
(
dbv
, 

, 
c
);

1700 
	`memy
(&
y
, 
c
->
da
, (rectype));

1701 
	`memt
(&
cڌ_dbt
, 0, (control_dbt));

1702 
	`memt
(&
c_dbt
, 0, (rec_dbt));

1722 i(
y
 !
DB___txn_ckp
 || 
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
)) {

1723 i((
t
 = 
	`__log_p_put
(
dbv
, &

->
l
, 
c
, 0)) != 0)

1724  (
t
);

1725 
	`STAT
(
p
->

.
_log_cds
++);

1726 i(
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
)) {

1727 *
t_lp
 = 

->
l
;

1728 
out
;

1732 
y
) {

1733 
DB___dbg_gi
:

1751 
	`memy
(&
txnid
, (
u_t8_t
 *)

1752 
c
->
da
 + (
u_t32_t
), (u_int32_t));

1753 i(
txnid
 =
TXN_INVALID
)

1754 
t
 = 
	`__db_dich
(
dbv
, dbv->
cov_db
,

1755 
dbv
->
cov_db_size
, 
c
, &

->
l
,

1756 
DB_TXN_APPLY
, 
NULL
);

1758 
DB___txn_g
:

1768 
t
 = 0;

1769 i(!
	`F_ISSET
(
db_p
, 
DBREP_OPENFILES
)) {

1770 
t
 = 
	`__txn_ݒfes
(
dbv
, 
NULL
, 1);

1771 
	`F_SET
(
db_p
, 
DBREP_OPENFILES
);

1773 i(
t
 == 0)

1774 
t
 = 
	`__p_oss_txn
(
dbv
, 
c
);

1775 } 
t
 =
DB_LOCK_DEADLOCK
);

1778 i(
t
 =0 && !
	`F_ISSET
(
dbv
, 
DB_ENV_TXN_NOSYNC
))

1779 
t
 = 
	`__log_ush
(
dbv
, 
NULL
);

1780 i(
t
 != 0) {

1781 
	`__db_rx
(
dbv
, "Errorrocessingxn [%lu][%lu]",

1782 (
u_lg
)

->
l
.
fe
, (u_lgp->l.
offt
);

1783 
t
 = 
	`__db_nic
(
dbv
,et);

1786 
DB___txn_xa_g
:

1787 
t
 = 
	`__log_ush
(
dbv
, 
NULL
);

1791 
p
->
max__l
 = 

->
l
;

1792 
	`RPRINT
(
dbv
, (dbenv, "process_rec:reparet [%lu][%lu]",

1793 (
u_lg
)
p
->
max__l
.
fe
,

1794 (
u_lg
)
p
->
max__l
.
offt
));

1796 
DB___txn_ckp
:

1806 
	`memt
(&
key_dbt
, 0, (key_dbt));

1807 
key_dbt
.
da
 = 

;

1808 
key_dbt
.
size
 = (*

);

1814 
t
 = 
	`__db_put
(
dbp
, 
NULL
, &
key_dbt
, 
c
, 
DB_NOOVERWRITE
);

1815 i(
t
 =
DB_KEYEXIST
) {

1816 i(
t_lp
 !
NULL
)

1817 *
t_lp
 = 

->
l
;

1818 
t
 = 
DB_REP_NOTPERM
;

1820 i(
t
 != 0)

1832 i((
t
 = 
	`__p_do_ckp
(
dbv
, 
c
, 

)) == 0)

1833 
t
 = 
	`__log_p_put
(
dbv
, &

->
l
, 
c
,

1834 
DB_LOG_CHKPNT
);

1835 i((
t_t
 = 
	`__p_mf
(
dbv
,

1836 &
cڌ_dbt
, &
c_dbt
)!0 && 
t
 == 0)

1837 
t
 = 
t_t
;

1842 i(
t
 == 0)

1843 
t
 = 
	`__log_ush
(
dbv
, 
NULL
);

1849 
out
:

1850 i(
t
 =0 && 
	`F_ISSET
(

, 
REPCTL_PERM
))

1851 *
t_lp
 = 

->
l
;

1852 i(
	`IS_USING_LEASES
(
dbv
) &&

1853 
	`F_ISSET
(

, 
REPCTL_LEASE
))

1854 *
t_t
 = 

->
msg_time
;

1860 i(
t
 =0 && 
	`F_ISSET
(

, 
REPCTL_FLUSH
))

1861 
t
 = 
	`__log_ush
(
dbv
, 
NULL
);

1862 i(
cڌ_dbt
.
da
 !
NULL
)

1863 
	`__os_u
(
dbv
, 
cڌ_dbt
.
da
);

1864 i(
c_dbt
.
da
 !
NULL
)

1865 
	`__os_u
(
dbv
, 
c_dbt
.
da
);

1867  (
t
);

1868 
	}
}

1879 
	$__p_nd_q
(
dbv
, 
q
)

1880 
DB_ENV
 *
dbv
;

1881 
q
;

1884 
DB_LOG
 *
db
;

1885 
DB_LSN
 
l
;

1886 
DB_REP
 *
db_p
;

1887 
LOG
 *

;

1888 
REP
 *
p
;

1889 
t
;

1890 
u_t32_t
 
gags
, 
pags
;

1892 
db_p
 = 
dbv
->
p_hd
;

1893 
p
 = 
db_p
->
gi
;

1894 
db
 = 
dbv
->
lg_hd
;

1895 

 = 
db
->
gfo
.
imy
;

1896 
t
 = 0;

1898 
pags
 = 
p
->
ags
;

1902 i(
	`FLD_ISSET
(
pags
, 
REP_F_DELAY
))

1903  (
t
);

1904 
gags
 = 
q
 ? 
REP_GAP_REREQUEST
 : 0;

1906 i(
	`FLD_ISSET
(
pags
, 
REP_F_RECOVER_VERIFY
)) {

1907 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

1908 
l
 = 

->
vify_l
;

1909 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1910 i(!
	`IS_ZERO_LSN
(
l
))

1911 ()
	`__p_nd_mesge
(
dbv
, 
p
->
ma_id
,

1912 
REP_VERIFY_REQ
, &
l
, 
NULL
, 0, 
DB_REP_REREQUEST
);

1913 } i(
	`FLD_ISSET
(
pags
, 
REP_F_RECOVER_UPDATE
)) {

1917 ()
	`__p_nd_mesge
(
dbv
, 
p
->
ma_id
,

1918 
REP_UPDATE_REQ
, 
NULL
, NULL, 0, 0);

1919 } i(
	`FLD_ISSET
(
pags
, 
REP_F_RECOVER_PAGE
)) {

1920 
	`REP_SYSTEM_LOCK
(
dbv
);

1921 
t
 = 
	`__p_pgg_q
(
dbv
, 
p
, 
NULL
, 
gags
);

1922 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1924 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

1925 
t
 = 
	`__p_logg_q
(
dbv
, 
p
, 
NULL
, 
gags
);

1926 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1929  (
t
);

1930 
	}
}

1942 
	$__p_check_deq
(
dbv
, 
p
)

1943 
DB_ENV
 *
dbv
;

1944 
REP
 *
p
;

1947 
DB_LOG
 *
db
;

1948 
LOG
 *

;

1949 
q
;

1951 
db
 = 
dbv
->
lg_hd
;

1952 

 = 
db
->
gfo
.
imy
;

1953 
q
 = ++

->
rcvd_cs
 >->
wa_cs
;

1954 i(
q
) {

1955 

->
wa_cs
 *= 2;

1956 i(

->
wa_cs
 > 
p
->
max_g
)

1957 

->
wa_cs
 = 
p
->
max_g
;

1958 

->
rcvd_cs
 = 0;

1960  (
q
);

1961 
	}
}

1970 
	$__p_sk_msg
(
dbv
, 
p
, 
eid
, 
y
)

1971 
DB_ENV
 *
dbv
;

1972 
REP
 *
p
;

1973 
eid
;

1974 
u_t32_t
 
y
;

1976 
do_q
, 
t
;

1978 
t
 = 0;

1983 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
&& 
	`REP_MSG_REQ
(
y
))

1984 
do_q
 = 1;

1987 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

1988 
do_q
 = 
	`__p_check_deq
(
dbv
, 
p
);

1989 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

1995 i(
do_q
 && 
y
 !
REP_MASTER_REQ
) {

2005 i(
p
->
ma_id
 =
DB_EID_INVALID
)

2006 ()
	`__p_nd_mesge
(
dbv
,

2007 
DB_EID_BROADCAST
, 
REP_MASTER_REQ
, 
NULL
, NULL, 0, 0);

2008 i(
eid
 =
p
->
ma_id
)

2009 
t
 = 
	`__p_nd_q
(
dbv
, 0);

2010 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
))

2011 ()
	`__p_nd_mesge
(
dbv
,

2012 
eid
, 
REP_REREQUEST
, 
NULL
, NULL, 0, 0);

2014  (
t
);

2015 
	}
}

2018 
	$__p_fe_wma
(
dbv
, 
g
, 
ma
)

2019 
DB_ENV
 *
dbv
;

2020 
u_t32_t
 
g
;

2021 
ma
;

2023 
DB_REP
 *
db_p
;

2024 
REP
 *
p
;

2026 
db_p
 = 
dbv
->
p_hd
;

2027 
p
 = 
db_p
->
gi
;

2029 
	`REP_EVENT_LOCK
(
dbv
);

2034 i(
p
->
wma_evt_g
 < 
g
) {

2035 
	`__p_fe_evt
(
dbv
, 
DB_EVENT_REP_NEWMASTER
, &
ma
);

2036 
p
->
wma_evt_g
 = 
g
;

2038 
	`REP_EVENT_UNLOCK
(
dbv
);

2040 
	}
}

2043 
	$__p_fe_tupde
(
dbv
, 
g
, 
ma
)

2044 
DB_ENV
 *
dbv
;

2045 
u_t32_t
 
g
;

2046 
ma
;

2048 
DB_REP
 *
db_p
;

2049 
REP
 *
p
;

2051 
db_p
 = 
dbv
->
p_hd
;

2052 
p
 = 
db_p
->
gi
;

2054 
	`REP_EVENT_LOCK
(
dbv
);

2060 i(
p
->
wma_evt_g
 < 
g
) {

2061 
	`__p_fe_evt
(
dbv
, 
DB_EVENT_REP_NEWMASTER
, &
ma
);

2062 
p
->
wma_evt_g
 = 
g
;

2074 i(
p
->
wma_evt_g
 =
g
)

2075 
	`__p_fe_evt
(
dbv
, 
DB_EVENT_REP_STARTUPDONE
, 
NULL
);

2076 
	`REP_EVENT_UNLOCK
(
dbv
);

2078 
	}
}

	@../rep/rep_region.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

16 
__p_eg_
 
__P
((
DB_ENV
 *, 
REP
 *));

17 
__p_g_
 
__P
((
DB_ENV
 *, 
REP
 *));

26 
	$__p_ݒ
(
dbv
)

27 
DB_ENV
 *
dbv
;

29 
REGENV
 *
nv
;

30 
REGINFO
 *
f
;

31 
DB_REP
 *
db_p
;

32 
REP
 *
p
;

33 
t
;

35 
db_p
 = 
dbv
->
p_hd
;

36 
f
 = 
dbv
->
gfo
;

37 
nv
 = 
f
->
imy
;

38 
t
 = 0;

40 i(
nv
->
p_off
 =
INVALID_ROFF
) {

42 i((
t
 = 
	`__v_loc
(
f
, (
REP
), &
p
)) != 0)

43  (
t
);

44 
	`memt
(
p
, 0, (*rep));

51 i((
t
 = 
	`__mux_loc
(

52 
dbv
, 
MTX_REP_REGION
, 0, &
p
->
mtx_gi
)) != 0)

53  (
t
);

61 i((
t
 = 
	`__mux_loc
(

62 
dbv
, 
MTX_REP_DATABASE
, 0, &
p
->
mtx_db
)) != 0)

63  (
t
);

65 i((
t
 = 
	`__mux_loc
(

66 
dbv
, 
MTX_REP_CKP
, 0, &
p
->
mtx_ckp
)) != 0)

67  (
t
);

69 i((
t
 = 
	`__mux_loc
(

70 
dbv
, 
MTX_REP_EVENT
, 0, &
p
->
mtx_evt
)) != 0)

71  (
t
);

73 
p
->
wma_evt_g
 = 0;

74 
p
->
nifd_eg
 = 0;

75 
p
->
a_off
 = 
INVALID_ROFF
;

76 
p
->
y_off
 = 
INVALID_ROFF
;

77 
p
->
v2y_off
 = 
INVALID_ROFF
;

78 
p
->
eid
 = 
db_p
->eid;

79 
p
->
ma_id
 = 
DB_EID_INVALID
;

80 
p
->
g
 = 0;

81 
p
->
vsi
 = 
DB_REPVERSION
;

82 i((
t
 = 
	`__p_g_
(
dbv
, 
p
)) != 0)

83  (
t
);

84 i((
t
 = 
	`__p_eg_
(
dbv
, 
p
)) != 0)

85  (
t
);

86 
p
->
gbys
 = 
db_p
->gbytes;

87 
p
->
bys
 = 
db_p
->bytes;

88 
p
->
que_g
 = 
db_p
->request_gap;

89 
p
->
max_g
 = 
db_p
->max_gap;

90 
p
->
cfig_nses
 = 
db_p
->config_nsites;

91 
p
->
cfig
 = 
db_p
->config;

92 
p
->
e_timeout
 = 
db_p
->elect_timeout;

93 
p
->
fu_e_timeout
 = 
db_p
->full_elect_timeout;

94 
p
->
a_timeout
 = 
db_p
->lease_timeout;

95 
p
->
ock_skew
 = 
db_p
->clock_skew;

96 
	`timeecr
(&
p
->
a_duti
);

97 
	`timeecr
(&
p
->
g_expe
);

98 
p
->
chk_day
 = 
db_p
->chkpt_delay;

99 
p
->
iܙy
 = 
db_p
->
my_iܙy
;

101 
	`F_SET
(
p
, 
REP_F_NOARCHIVE
);

104 
nv
->
p_off
 = 
	`R_OFFSET
(
f
, 
p
);

105 ()
	`time
(&
nv
->
p_timeamp
);

106 
nv
->
_timeamp
 = 0;

107 
	`F_CLR
(
nv
, 
DB_REGENV_REPLOCKED
);

109 
p
 = 
	`R_ADDR
(
f
, 
nv
->
p_off
);

111 
db_p
->
gi
 = 
p
;

114 
	}
}

123 
	$__p_v_esh
(
dbv
)

124 
DB_ENV
 *
dbv
;

126 
DB_REP
 *
db_p
;

127 
REGENV
 *
nv
;

128 
REGINFO
 *
f
;

129 
REP
 *
p
;

130 
t
, 
t_t
;

132 
db_p
 = 
dbv
->
p_hd
;

133 
p
 = 
db_p
->
gi
;

134 
f
 = 
dbv
->
gfo
;

135 
nv
 = 
f
->
imy
;

136 
t
 = 0;

143 i(
nv
->
ft
 == 1) {

144 
	`F_CLR
(
p
, 
REP_F_GROUP_ESTD
);

145 
	`F_CLR
(
p
, 
REP_F_START_CALLED
);

153 i(
	`F_ISSET
(
dbv
, 
DB_ENV_PRIVATE
)) {

154 
db_p
 = 
dbv
->
p_hd
;

155 i(
db_p
->
gi
 !
NULL
) {

156 
t
 = 
	`__mux_
(
dbv
, &
db_p
->
gi
->
mtx_gi
);

157 i((
t_t
 = 
	`__mux_
(
dbv
,

158 &
db_p
->
gi
->
mtx_db
)!0 && 
t
 == 0)

159 
t
 = 
t_t
;

160 i((
t_t
 = 
	`__mux_
(
dbv
,

161 &
db_p
->
gi
->
mtx_ckp
)!0 && 
t
 == 0)

162 
t
 = 
t_t
;

163 i((
t_t
 = 
	`__mux_
(
dbv
,

164 &
db_p
->
gi
->
mtx_evt
)!0 && 
t
 == 0)

165 
t
 = 
t_t
;

168 i(
nv
->
p_off
 !
INVALID_ROFF
)

169 
	`__v_loc_
(
f
, 
	`R_ADDR
(f, 
nv
->
p_off
));

172 
dbv
->
p_hd
->
gi
 = 
NULL
;

173  (
t
);

174 
	}
}

183 
	$__p_v_o
(
dbv
)

184 
DB_ENV
 *
dbv
;

186 
t
, 
t_t
;

188 
t
 = 
	`__p_eo
(
dbv
);

189 i((
t_t
 = 
	`__p_ofes
(
dbv
, 0)!0 && 
t
 == 0)

190 
t
 = 
t_t
;

191  (
t
);

192 
	}
}

202 
	$__p_eo
(
dbv
)

203 
DB_ENV
 *
dbv
;

205 
DB_LOG
 *
db
;

206 
DB_REP
 *
db_p
;

207 
LOG
 *

;

208 
REP_BULK
 
bulk
;

209 
t
;

211 
t
 = 0;

213 
db_p
 = 
dbv
->
p_hd
;

214 
db
 = 
dbv
->
lg_hd
;

221 i(
db_p
 =
NULL
 || db_p->
gi
 == NULL)

222  (
t
);

223 
	`MUTEX_LOCK
(
dbv
, 
db_p
->
gi
->
mtx_db
);

224 i(
db_p
->
p_db
 !
NULL
) {

225 
t
 = 
	`__db_o
(
db_p
->
p_db
, 
NULL
, 
DB_NOSYNC
);

226 
db_p
->
p_db
 = 
NULL
;

232 i(
db
 =
NULL
)

233 
out
;

234 

 = 
db
->
gfo
.
imy
;

239 i(

->
bulk_off
 !0 && 
db_p
->
nd
 !
NULL
) {

240 
	`memt
(&
bulk
, 0, (bulk));

241 
bulk
.
addr
 = 
	`R_ADDR
(&
db
->
gfo
, 

->
bulk_buf
);

242 
bulk
.
of
 = &

->
bulk_off
;

243 
bulk
.
n
 = 

->
bulk_n
;

244 
bulk
.
ty
 = 
REP_BULK_LOG
;

245 
bulk
.
eid
 = 
DB_EID_BROADCAST
;

246 
bulk
.
ag
 = &

->
bulk_ags
;

251 ()
	`__p_nd_bulk
(
dbv
, &
bulk
, 0);

253 
out
: 
	`MUTEX_UNLOCK
(
dbv
, 
db_p
->
gi
->
mtx_db
);

254  (
t
);

255 
	}
}

267 
	$__p_ofes
(
dbv
, 
do_ed
)

268 
DB_ENV
 *
dbv
;

269 
do_ed
;

271 
DB_LOG
 *
db
;

272 
DB_REP
 *
db_p
;

273 
t
;

275 
t
 = 0;

277 
db_p
 = 
dbv
->
p_hd
;

278 
db
 = 
dbv
->
lg_hd
;

280 i(
db_p
 =
NULL
 || db_p->
gi
 == NULL)

281  (
t
);

282 i(
db
 =
NULL
)

283  (
t
);

284 i((
t
 = 
	`__dbg_o_fes
(
dbv
, 
do_ed
)) == 0)

285 
	`F_CLR
(
db_p
, 
DBREP_OPENFILES
);

287  (
t
);

288 
	}
}

298 
	$__p_eg_
(
dbv
, 
p
)

299 
DB_ENV
 *
dbv
;

300 
REP
 *
p
;

302 
DB_FH
 *
fhp
;

303 
t
;

304 
size_t
 
t
;

305 *
p
;

307 i((
t
 =

308 
	`__db_ame
(
dbv
, 
DB_APP_NONE
, 
REP_EGENNAME
, 0, 
NULL
, &
p
)) != 0)

309  (
t
);

313 i(
	`__os_exis
(
dbv
, 
p
, 
NULL
) != 0) {

314 
p
->
eg
 =->
g
 + 1;

315 i((
t
 = 
	`__p_wre_eg
(
dbv
, 
p
->
eg
)) != 0)

316 
r
;

321 i((
t
 = 
	`__os_ݒ
(
dbv
, 
p
, 0,

322 
DB_OSO_RDONLY
, 
	`__db_omode
(
OWNER_RW
), &
fhp
)) != 0)

323 
r
;

324 i((
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
p
->
eg
, (
u_t32_t
),

325 &
t
)!0 || c !(
u_t32_t
))

326 
r1
;

327 
	`RPRINT
(
dbv
, (dbv, "Rd ieg %lu", (
u_lg
)
p
->
eg
));

328 
r1
: ()
	`__os_ohd
(
dbv
, 
fhp
);

330 
r
: 
	`__os_
(
dbv
, 
p
);

331  (
t
);

332 
	}
}

341 
	$__p_wre_eg
(
dbv
, 
eg
)

342 
DB_ENV
 *
dbv
;

343 
u_t32_t
 
eg
;

345 
DB_FH
 *
fhp
;

346 
t
;

347 
size_t
 
t
;

348 *
p
;

350 i((
t
 =

351 
	`__db_ame
(
dbv
, 
DB_APP_NONE
, 
REP_EGENNAME
, 0, 
NULL
, &
p
)) != 0)

352  (
t
);

353 i((
t
 = 
	`__os_ݒ
(
dbv
, 
p
, 0, 
DB_OSO_CREATE
 | 
DB_OSO_TRUNC
,

354 
	`__db_omode
(
OWNER_RW
), &
fhp
)) == 0) {

355 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
eg
, (
u_t32_t
),

356 &
t
)!0 || ((
t
 = 
	`__os_fsync
(
dbv
, 
fhp
)) != 0))

357 
	`__db_r
(
dbv
, 
t
, "%s", 
p
);

358 ()
	`__os_ohd
(
dbv
, 
fhp
);

360 
	`__os_
(
dbv
, 
p
);

361  (
t
);

362 
	}
}

372 
	$__p_g_
(
dbv
, 
p
)

373 
DB_ENV
 *
dbv
;

374 
REP
 *
p
;

376 
DB_FH
 *
fhp
;

377 
t
;

378 
size_t
 
t
;

379 *
p
;

381 i((
t
 =

382 
	`__db_ame
(
dbv
, 
DB_APP_NONE
, 
REP_GENNAME
, 0, 
NULL
, &
p
)) != 0)

383  (
t
);

387 i(
	`__os_exis
(
dbv
, 
p
, 
NULL
) != 0) {

388 
p
->
g
 = 0;

389 i((
t
 = 
	`__p_wre_g
(
dbv
, 
p
->
g
)) != 0)

390 
r
;

395 i((
t
 = 
	`__os_ݒ
(
dbv
, 
p
, 0,

396 
DB_OSO_RDONLY
, 
	`__db_omode
(
OWNER_RW
), &
fhp
)) != 0)

397 
r
;

398 i((
t
 = 
	`__os_ad
(
dbv
, 
fhp
, &
p
->
g
, (
u_t32_t
),

399 &
t
)) < 0 || cnt == 0)

400 
r1
;

401 
	`RPRINT
(
dbv
, (dbenv, "Read in gen %lu",

402 (
u_lg
)
p
->
g
));

403 
r1
: ()
	`__os_ohd
(
dbv
, 
fhp
);

405 
r
: 
	`__os_
(
dbv
, 
p
);

406  (
t
);

407 
	}
}

416 
	$__p_wre_g
(
dbv
, 
g
)

417 
DB_ENV
 *
dbv
;

418 
u_t32_t
 
g
;

420 
DB_FH
 *
fhp
;

421 
t
;

422 
size_t
 
t
;

423 *
p
;

425 i((
t
 =

426 
	`__db_ame
(
dbv
, 
DB_APP_NONE
, 
REP_GENNAME
, 0, 
NULL
, &
p
)) != 0)

427  (
t
);

428 i((
t
 = 
	`__os_ݒ
(
dbv
, 
p
, 0, 
DB_OSO_CREATE
 | 
DB_OSO_TRUNC
,

429 
	`__db_omode
(
OWNER_RW
), &
fhp
)) == 0) {

430 i((
t
 = 
	`__os_wre
(
dbv
, 
fhp
, &
g
, (
u_t32_t
),

431 &
t
)!0 || ((
t
 = 
	`__os_fsync
(
dbv
, 
fhp
)) != 0))

432 
	`__db_r
(
dbv
, 
t
, "%s", 
p
);

433 ()
	`__os_ohd
(
dbv
, 
fhp
);

435 
	`__os_
(
dbv
, 
p
);

436  (
t
);

437 
	}
}

	@../rep/rep_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

16 #ifde
HAVE_STATISTICS


17 
__p_t_l
 
__P
((
DB_ENV
 *, 
u_t32_t
));

18 
__p_t_s
 
__P
((
DB_ENV
 *, 
u_t32_t
));

19 
__p_
 
__P
((
DB_ENV
 *, 
DB_REP_STAT
 **, 
u_t32_t
));

28 
	$__p__
(
dbv
, 
p
, 
ags
)

29 
DB_ENV
 *
dbv
;

30 
DB_REP_STAT
 **
p
;

31 
u_t32_t
 
ags
;

33 
DB_THREAD_INFO
 *

;

34 
t
;

36 
	`PANIC_CHECK
(
dbv
);

37 
	`ENV_REQUIRES_CONFIG_XX
(

38 
dbv
, 
p_hd
, "DB_ENV->p_", 
DB_INIT_REP
);

40 i((
t
 = 
	`__db_fchk
(
dbv
,

41 "DB_ENV->p_", 
ags
, 
DB_STAT_CLEAR
)) != 0)

42  (
t
);

44 
	`ENV_ENTER
(
dbv
, 

);

45 
t
 = 
	`__p_
(
dbv
, 
p
, 
ags
);

46 
	`ENV_LEAVE
(
dbv
, 

);

48  (
t
);

49 
	}
}

56 
	$__p_
(
dbv
, 
p
, 
ags
)

57 
DB_ENV
 *
dbv
;

58 
DB_REP_STAT
 **
p
;

59 
u_t32_t
 
ags
;

61 
DB_LOG
 *
db
;

62 
DB_REP
 *
db_p
;

63 
DB_REP_STAT
 *
s
;

64 
LOG
 *

;

65 
REP
 *
p
;

66 
u_t32_t
 
queued
, 
tupde
;

67 
dock
, 
t
;

69 
db_p
 = 
dbv
->
p_hd
;

70 
p
 = 
db_p
->
gi
;

71 
db
 = 
dbv
->
lg_hd
;

72 

 = 
db
->
gfo
.
imy
;

74 *
p
 = 
NULL
;

77 i((
t
 = 
	`__os_umloc
(
dbv
, (
DB_REP_STAT
), &
s
)) != 0)

78  (
t
);

85 
dock
 = 
	`FLD_ISSET
(
p
->
ags
, 
REP_F_RECOVER_MASK
) ? 0 : 1;

86 
	`memy
(
s
, &
p
->

, (*stats));

89 i(
	`F_ISSET
(
p
, 
REP_F_EPHASE1
))

90 
s
->
_ei_us
 = 1;

91 i(
	`F_ISSET
(
p
, 
REP_F_EPHASE2
))

92 
s
->
_ei_us
 = 2;

94 
s
->
_ei_nses
 = 
p
->
ses
;

95 
s
->
_ei_cur_wr
 = 
p
->
wr
;

96 
s
->
_ei_iܙy
 = 
p
->
w_iܙy
;

97 
s
->
_ei_g
 = 
p
->
w_g
;

98 
s
->
_ei_l
 = 
p
->
w_l
;

99 
s
->
_ei_ves
 = 
p
->
ves
;

100 
s
->
_ei_nves
 = 
p
->
nves
;

101 
s
->
_ei_tbak
 = 
p
->
w_tbak
;

104 
s
->
_v_id
 = 
p
->
eid
;

105 
s
->
_v_iܙy
 = 
p
->
iܙy
;

106 
s
->
_nses
 = 
p
->
nses
;

107 
s
->
_ma
 = 
p
->
ma_id
;

108 
s
->
_g
 = 
p
->
g
;

109 
s
->
_eg
 = 
p
->
eg
;

111 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
))

112 
s
->
_us
 = 
DB_REP_MASTER
;

113 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
))

114 
s
->
_us
 = 
DB_REP_CLIENT
;

116 
s
->
_us
 = 0;

118 i(
	`LF_ISSET
(
DB_STAT_CLEAR
)) {

119 
queued
 = 
p
->

.
_log_queued
;

120 
tupde
 = 
p
->

.
_tup_come
;

121 
	`memt
(&
p
->

, 0, (rep->stat));

122 
p
->

.
_log_queued
 =->.
_log_queued_tٮ
 =

123 
p
->

.
_log_queued_max
 = 
queued
;

124 
p
->

.
_tup_come
 = 
tupde
;

131 i(
dock
)

132 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

133 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
)) {

134 
s
->
_xt_l
 = 

->
ady_l
;

135 
s
->
_wag_l
 = 

->
wag_l
;

136 
s
->
_xt_pg
 = 
p
->
ady_pg
;

137 
s
->
_wag_pg
 = 
p
->
wag_pg
;

139 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
)) {

140 
	`LOG_SYSTEM_LOCK
(
dbv
);

141 
s
->
_xt_l
 = 

->
l
;

142 
	`LOG_SYSTEM_UNLOCK
(
dbv
);

144 
	`ZERO_LSN
(
s
->
_xt_l
);

145 
	`ZERO_LSN
(
s
->
_wag_l
);

147 i(
dock
)

148 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

150 *
p
 = 
s
;

152 
	}
}

161 
	$__p__t_
(
dbv
, 
ags
)

162 
DB_ENV
 *
dbv
;

163 
u_t32_t
 
ags
;

165 
DB_THREAD_INFO
 *

;

166 
t
;

168 
	`PANIC_CHECK
(
dbv
);

169 
	`ENV_REQUIRES_CONFIG_XX
(

170 
dbv
, 
p_hd
, "DB_ENV->p__t", 
DB_INIT_REP
);

172 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->rep_stat_print",

173 
ags
, 
DB_STAT_ALL
 | 
DB_STAT_CLEAR
)) != 0)

174  (
t
);

176 
	`ENV_ENTER
(
dbv
, 

);

177 
t
 = 
	`__p__t
(
dbv
, 
ags
);

178 
	`ENV_LEAVE
(
dbv
, 

);

180  (
t
);

181 
	}
}

190 
	$__p__t
(
dbv
, 
ags
)

191 
DB_ENV
 *
dbv
;

192 
u_t32_t
 
ags
;

194 
u_t32_t
 
ig_ags
;

195 
t
;

197 
ig_ags
 = 
ags
;

198 
	`LF_CLR
(
DB_STAT_CLEAR
 | 
DB_STAT_SUBSYSTEM
);

199 i(
ags
 =0 || 
	`LF_ISSET
(
DB_STAT_ALL
)) {

200 
t
 = 
	`__p_t_s
(
dbv
, 
ig_ags
);

201 i(
ags
 =0 || 
t
 != 0)

202  (
t
);

205 i(
	`LF_ISSET
(
DB_STAT_ALL
) &&

206 (
t
 = 
	`__p_t_l
(
dbv
, 
ig_ags
)) != 0)

207  (
t
);

210 
	}
}

217 
	$__p_t_s
(
dbv
, 
ags
)

218 
DB_ENV
 *
dbv
;

219 
u_t32_t
 
ags
;

221 
DB_REP_STAT
 *

;

222 
is_
, 
t
;

223 *
p
;

225 i((
t
 = 
	`__p_
(
dbv
, &

, 
ags
)) != 0)

226  (
t
);

228 i(
	`LF_ISSET
(
DB_STAT_ALL
))

229 
	`__db_msg
(
dbv
, "Defaulteplicationegion information:");

230 
is_
 = 0;

231 

->
_us
) {

232 
DB_REP_MASTER
:

233 
	`__db_msg
(
dbv
,

236 
DB_REP_CLIENT
:

237 
	`__db_msg
(
dbv
,

239 
is_
 = 1;

242 
	`__db_msg
(
dbv
,

247 
	`__db_msg
(
dbv
, "%lu/%lu\t%s",

248 (
u_lg
)

->
_xt_l
.
fe
, (u_lg)->_xt_l.
offt
,

249 
is_
 ? "Next LSNxpected" : "Next LSNo be used");

250 
	`__db_msg
(
dbv
, "%lu/%lu\t%s",

251 (
u_lg
)

->
_wag_l
.
fe
, (u_lg)->_wag_l.
offt
,

252 

->
_wag_l
.
fe
 == 0 ?

256 
	`__db_dl
(
dbv
, "Nexgnumbxed.", (
u_lg
)

->
_xt_pg
);

257 
p
 = 

->
_wag_pg
 =
PGNO_INVALID
 ?

260 
	`__db_msg
(
dbv
, "%lu\t%s", (
u_lg
)

->
_wag_pg
, 
p
);

261 
	`__db_dl
(
dbv
, "Number of duplicate master conditions detected.",

262 (
u_lg
)

->
_dupmas
);

263 i(

->
_v_id
 !
DB_EID_INVALID
)

264 
	`__db_dl
(
dbv
, "CuvmID", (
u_lg
)

->
_v_id
);

266 
	`__db_msg
(
dbv
, "No currentnvironment ID");

267 
	`__db_dl
(
dbv
,

268 "Cuvmiܙy", (
u_lg
)

->
_v_iܙy
);

269 
	`__db_dl
(
dbv
, "Cugiڂumb", (
u_lg
)

->
_g
);

270 
	`__db_dl
(
dbv
,

271 "Cuei giڂumb", (
u_lg
)

->
_eg
);

272 
	`__db_dl
(
dbv
, "Number of duplicateogecordseceived",

273 (
u_lg
)

->
_log_duid
);

274 
	`__db_dl
(
dbv
, "Number ofogecords currently queued",

275 (
u_lg
)

->
_log_queued
);

276 
	`__db_dl
(
dbv
, "Maximumumber ofogecordsver queuedt once",

277 (
u_lg
)

->
_log_queued_max
);

278 
	`__db_dl
(
dbv
, "Totalumber ofogecords queued",

279 (
u_lg
)

->
_log_queued_tٮ
);

280 
	`__db_dl
(
dbv
,

282 (
u_lg
)

->
_log_cds
);

283 
	`__db_dl
(
dbv
, "Number ofogecords missedndequested",

284 (
u_lg
)

->
_log_queed
);

285 i(

->
_ma
 !
DB_EID_INVALID
)

286 
	`__db_dl
(
dbv
, "Cuma ID", (
u_lg
)

->
_ma
);

288 
	`__db_msg
(
dbv
, "No current master ID");

289 
	`__db_dl
(
dbv
, "Number ofimeshe master has changed",

290 (
u_lg
)

->
_ma_chges
);

291 
	`__db_dl
(
dbv
,

293 (
u_lg
)

->
_msgs_badg
);

294 
	`__db_dl
(
dbv
, "Number of messageseceivedndrocessed",

295 (
u_lg
)

->
_msgs_osd
);

296 
	`__db_dl
(
dbv
, "Number of messages ignored dueoendingecovery",

297 (
u_lg
)

->
_msgs_cov
);

298 
	`__db_dl
(
dbv
, "Number of failed message sends",

299 (
u_lg
)

->
_msgs_nd_us
);

300 
	`__db_dl
(
dbv
, "Numb omesge", (
u_lg
)

->
_msgs_
);

301 
	`__db_dl
(
dbv
,

302 "Numb ow smesgeived", (
u_lg
)

->
_wses
);

303 
	`__db_dl
(
dbv
,

305 (
u_lg
)

->
_nses
);

306 
	`__db_dl
(
dbv
, "Tnsmissiچimed", (
u_lg
)

->
_hrَes
);

307 
	`__db_dl
(
dbv
, "Number of outdated conditions detected",

308 (
u_lg
)

->
_outded
);

309 
	`__db_dl
(
dbv
, "Number of duplicateageecordseceived",

310 (
u_lg
)

->
_pg_duid
);

311 
	`__db_dl
(
dbv
, "Number ofageecordseceivedndddedo databases",

312 (
u_lg
)

->
_pg_cds
);

313 
	`__db_dl
(
dbv
, "Number ofageecords missedndequested",

314 (
u_lg
)

->
_pg_queed
);

315 i(

->
_tup_come
 == 0)

316 
	`__db_msg
(
dbv
, "Startup incomplete");

318 
	`__db_msg
(
dbv
, "Startup complete");

319 
	`__db_dl
(
dbv
,

320 "Numb oiڠd", (
u_lg
)

->
_txns_d
);

322 
	`__db_dl
(
dbv
, "Number of startsync messages delayed",

323 (
u_lg
)

->
_tsync_dayed
);

325 
	`__db_dl
(
dbv
, "Numb oeiڠhd", (
u_lg
)

->
_eis
);

326 
	`__db_dl
(
dbv
,

327 "Numb oeiڠw", (
u_lg
)

->
_eis_w
);

329 i(

->
_ei_us
 == 0) {

330 
	`__db_msg
(
dbv
, "Nolection inrogress");

331 i(

->
_ei_c
 > 0 || sp->
_ei_uc
 > 0)

332 
	`__db_msg
(
dbv
,

334 (
u_lg
)

->
_ei_c
,

335 (
u_lg
)

->
_ei_uc
);

337 
	`__db_dl
(
dbv
, "Currentlectionhase",

338 (
u_lg
)

->
_ei_us
);

339 
	`__db_dl
(
dbv
, "Election winner",

340 (
u_lg
)

->
_ei_cur_wr
);

341 
	`__db_dl
(
dbv
, "Election generationumber",

342 (
u_lg
)

->
_ei_g
);

343 
	`__db_msg
(
dbv
, "%lu/%lu\tMaximum LSN oflection winner",

344 (
u_lg
)

->
_ei_l
.
fe
,

345 (
u_lg
)

->
_ei_l
.
offt
);

346 
	`__db_dl
(
dbv
,

348 (
u_lg
)

->
_ei_nses
);

349 
	`__db_dl
(
dbv
, "Number of voteseededo winnlection",

350 (
u_lg
)

->
_ei_nves
);

351 
	`__db_dl
(
dbv
,

352 "Eiڅriܙy", (
u_lg
)

->
_ei_iܙy
);

353 
	`__db_dl
(
dbv
, "Electioniebreaker value",

354 (
u_lg
)

->
_ei_tbak
);

355 
	`__db_dl
(
dbv
, "Voteseceivedhislectionound",

356 (
u_lg
)

->
_ei_ves
);

358 
	`__db_dl
(
dbv
, "Number of bulk buffer sendsriggered by full buffer",

359 (
u_lg
)

->
_bulk_fls
);

360 
	`__db_dl
(
dbv
, "Number of singleecordsxceeding bulk buffer size",

361 (
u_lg
)

->
_bulk_ovows
);

362 
	`__db_dl
(
dbv
, "Number ofecordsddedo bulk buffer",

363 (
u_lg
)

->
_bulk_cds
);

364 
	`__db_dl
(
dbv
, "Number of bulk buffers sent",

365 (
u_lg
)

->
_bulk_srs
);

366 
	`__db_dl
(
dbv
, "Number ofe-request messageseceived",

367 (
u_lg
)

->
__ques
);

368 
	`__db_dl
(
dbv
,

370 (
u_lg
)

->
__svc_miss
);

371 
	`__db_dl
(
dbv
, "Number ofequest messageseceived byhis client",

372 (
u_lg
)

->
__svc_q
);

374 
	`__os_u
(
dbv
, 

);

377 
	}
}

384 
	$__p_t_l
(
dbv
, 
ags
)

385 
DB_ENV
 *
dbv
;

386 
u_t32_t
 
ags
;

388 cڡ 
FN
 
p_
[] = {

389 { 
REP_F_CLIENT
, "REP_F_CLIENT" },

390 { 
REP_F_EPHASE1
, "REP_F_EPHASE1" },

391 { 
REP_F_EPHASE2
, "REP_F_EPHASE2" },

392 { 
REP_F_INREPELECT
, "REP_F_INREPELECT" },

393 { 
REP_F_MASTER
, "REP_F_MASTER" },

394 { 
REP_F_MASTERELECT
, "REP_F_MASTERELECT" },

395 { 
REP_F_NOARCHIVE
, "REP_F_NOARCHIVE" },

396 { 
REP_F_READY_API
, "REP_F_READY_API" },

397 { 
REP_F_READY_MSG
, "REP_F_READY_MSG" },

398 { 
REP_F_READY_OP
, "REP_F_READY_OP" },

399 { 
REP_F_RECOVER_LOG
, "REP_F_RECOVER_LOG" },

400 { 
REP_F_RECOVER_PAGE
, "REP_F_RECOVER_PAGE" },

401 { 
REP_F_RECOVER_UPDATE
, "REP_F_RECOVER_UPDATE" },

402 { 
REP_F_RECOVER_VERIFY
, "REP_F_RECOVER_VERIFY" },

403 { 
REP_F_TALLY
, "REP_F_TALLY" },

404 { 0, 
NULL
 }

406 cڡ 
FN
 
dbp_
[] = {

407 { 
DBREP_OPENFILES
, "DBREP_OPENFILES" },

408 { 0, 
NULL
 }

410 
DB_LOG
 *
db
;

411 
DB_REP
 *
db_p
;

412 
LOG
 *

;

413 
REGENV
 *
nv
;

414 
REGINFO
 *
f
;

415 
REP
 *
p
;

416 
time_buf
[
CTIME_BUFLEN
];

418 
db_p
 = 
dbv
->
p_hd
;

419 
p
 = 
db_p
->
gi
;

420 
f
 = 
dbv
->
gfo
;

421 
nv
 = 
f
->
imy
;

423 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

424 
	`__db_msg
(
dbv
, "DB_REP handle information:");

426 i(
db_p
->
p_db
 =
NULL
)

427 
	`STAT_ISSET
("Bookkpg daba", 
db_p
->
p_db
);

429 ()
	`__db__t
(
db_p
->
p_db
, 
ags
);

431 
	`__db_ags
(
dbv
, 
NULL
, 
db_p
->
ags
, 
dbp_
, NULL, "\tFlags");

433 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

434 
	`__db_msg
(
dbv
, "REP handle information:");

435 
	`__mux_t_debug_sg
(
dbv
,

436 "Rlitiڄegi mux", 
p
->
mtx_gi
, 
ags
);

437 
	`__mux_t_debug_sg
(
dbv
,

438 "Bookkpg daba mux", 
p
->
mtx_db
, 
ags
);

440 
	`STAT_LONG
("EnvmID", 
p
->
eid
);

441 
	`STAT_LONG
("ManvmID", 
p
->
ma_id
);

442 
	`STAT_ULONG
("Ei gi", 
p
->
eg
);

443 
	`STAT_ULONG
("Ei giڂumb", 
p
->
g
);

444 
	`STAT_ULONG
("La giڂumb ilog", 
p
->
cov_g
);

445 
	`STAT_LONG
("Sod f ses", 
p
->
ases
);

446 
	`STAT_LONG
("Se group", 
p
->
nses
);

447 
	`STAT_LONG
("Veeded f܃i", 
p
->
nves
);

448 
	`STAT_LONG
("Priܙy iei", 
p
->
iܙy
);

449 
	`__db_dlbys
(
dbv
, "Limit on data sent in single call",

450 
p
->
gbys
, (
u_lg
)0,->
bys
);

451 
	`STAT_ULONG
("Reque g", 
p
->
que_g
);

452 
	`STAT_ULONG
("Maximum g", 
p
->
max_g
);

454 
	`STAT_ULONG
("Cr_oc_msg", 
p
->
msg_th
);

455 
	`STAT_ULONG
("Libry hd cou", 
p
->
hd_t
);

456 
	`STAT_ULONG
("Mui- oti cou", 
p
->
_t
);

457 
	`__db_msg
(
dbv
, "%.24s\tRecoveryimestamp",

458 
nv
->
p_timeamp
 == 0 ?

459 "0" : 
	`__db_ime
(&
nv
->
p_timeamp
, 
time_buf
));

461 
	`STAT_LONG
("Sehrd from", 
p
->
ses
);

462 
	`STAT_LONG
("Cuwr", 
p
->
wr
);

463 
	`STAT_LONG
("Wøiܙy", 
p
->
w_iܙy
);

464 
	`STAT_ULONG
("Wøgi", 
p
->
w_g
);

465 
	`STAT_LSN
("WøLSN", &
p
->
w_l
);

466 
	`STAT_LONG
("Wøtbak", 
p
->
w_tbak
);

467 
	`STAT_LONG
("Vef܁hise", 
p
->
ves
);

469 
	`__db_ags
(
dbv
, 
NULL
, 
p
->
ags
, 
p_
, NULL, "\tFlags");

471 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

472 
	`__db_msg
(
dbv
, "LOGeplication information:");

473 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

474 
db
 = 
dbv
->
lg_hd
;

475 

 = (
LOG
 *)
db
->
gfo
.
imy
;

476 
	`STAT_LSN
("Fogecdᔇ g", &

->
wag_l
);

477 
	`STAT_LSN
("LSN wagvify", &

->
vify_l
);

478 
	`STAT_LSN
("Maximum LSNequeed", &

->
max_wa_l
);

479 
	`STAT_ULONG
("Recdtwa befܐqueg", 

->
wa_cs
);

480 
	`STAT_ULONG
("Recdived whwag", 

->
rcvd_cs
);

481 
	`STAT_LSN
("NexLSNxed", &

->
ady_l
);

482 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

485 
	}
}

490 
	$__p__
(
dbv
, 
p
, 
ags
)

491 
DB_ENV
 *
dbv
;

492 
DB_REP_STAT
 **
p
;

493 
u_t32_t
 
ags
;

495 
	`COMPQUIET
(
p
, 
NULL
);

496 
	`COMPQUIET
(
ags
, 0);

498  (
	`__db__n_but
(
dbv
));

499 
	}
}

502 
	$__p__t_
(
dbv
, 
ags
)

503 
DB_ENV
 *
dbv
;

504 
u_t32_t
 
ags
;

506 
	`COMPQUIET
(
ags
, 0);

508  (
	`__db__n_but
(
dbv
));

509 
	}
}

	@../rep/rep_stub.c

9 #ide
HAVE_REPLICATION


10 
	~"db_cfig.h
"

12 
	~"db_t.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/db_am.h
"

20 
__db_nܕ
 
__P
((
DB_ENV
 *));

27 
	$__db_nܕ
(
dbv
)

28 
DB_ENV
 *
dbv
;

30 
	`__db_rx
(
dbv
,

32  (
DB_OPNOTSUP
);

33 
	}
}

36 
	$__db_p_r
(
dbp
, 
checkg
, 
checklock
, 
tu_now
)

37 
DB
 *
dbp
;

38 
checkg
, 
checklock
, 
tu_now
;

40 
	`COMPQUIET
(
checkg
, 0);

41 
	`COMPQUIET
(
checklock
, 0);

42 
	`COMPQUIET
(
tu_now
, 0);

43  (
	`__db_nܕ
(
dbp
->
dbv
));

44 
	}
}

47 
	$__v_p_r
(
dbv
, 
checklock
)

48 
DB_ENV
 *
dbv
;

49 
checklock
;

51 
	`COMPQUIET
(
checklock
, 0);

52  (
	`__db_nܕ
(
dbv
));

53 
	}
}

56 
	$__v_db_p_ex
(
dbv
)

57 
DB_ENV
 *
dbv
;

59  (
	`__db_nܕ
(
dbv
));

60 
	}
}

63 
	$___p_r
(
dbv
)

64 
DB_ENV
 *
dbv
;

66  (
	`__db_nܕ
(
dbv
));

67 
	}
}

70 
	$___p_ex
(
dbv
)

71 
DB_ENV
 *
dbv
;

73  (
	`__db_nܕ
(
dbv
));

74 
	}
}

77 
	$__p_bulk_mesge
(
dbv
, 
bulkp
, 
h
, 
lp
, 
dbt
, 
ags
)

78 
DB_ENV
 *
dbv
;

79 
REP_BULK
 *
bulkp
;

80 
REP_THROTTLE
 *
h
;

81 
DB_LSN
 *
lp
;

82 cڡ 
DBT
 *
dbt
;

83 
u_t32_t
 
ags
;

85 
	`COMPQUIET
(
bulkp
, 
NULL
);

86 
	`COMPQUIET
(
h
, 
NULL
);

87 
	`COMPQUIET
(
lp
, 
NULL
);

88 
	`COMPQUIET
(
dbt
, 
NULL
);

89 
	`COMPQUIET
(
ags
, 0);

90  (
	`__db_nܕ
(
dbv
));

91 
	}
}

94 
	$__p_v_esh
(
dbv
)

95 
DB_ENV
 *
dbv
;

97 
	`COMPQUIET
(
dbv
, 
NULL
);

99 
	}
}

102 
	$__p_e
(
dbv
, 
nses
, 
nves
, 
ags
)

103 
DB_ENV
 *
dbv
;

104 
nses
, 
nves
;

105 
u_t32_t
 
ags
;

107 
	`COMPQUIET
(
nses
, 0);

108 
	`COMPQUIET
(
nves
, 0);

109 
	`COMPQUIET
(
ags
, 0);

110  (
	`__db_nܕ
(
dbv
));

111 
	}
}

114 
	$__p_ush
(
dbv
)

115 
DB_ENV
 *
dbv
;

117  (
	`__db_nܕ
(
dbv
));

118 
	}
}

121 
	$__p_a_check
(
dbv
, 
esh
)

122 
DB_ENV
 *
dbv
;

123 
esh
;

125 
	`COMPQUIET
(
esh
, 0);

126  (
	`__db_nܕ
(
dbv
));

127 
	}
}

130 
	$__p_a_expe
(
dbv
, 
locked
)

131 
DB_ENV
 *
dbv
;

132 
locked
;

134 
	`COMPQUIET
(
locked
, 0);

135  (
	`__db_nܕ
(
dbv
));

136 
	}
}

139 
	$__p_t_a
(
dbv
, 
ock_s_
, 
ags
)

140 
DB_ENV
 *
dbv
;

141 
u_t32_t
 
ock_s_
, 
ags
;

143 
	`COMPQUIET
(
ock_s_
, 0);

144 
	`COMPQUIET
(
ags
, 0);

145  (
	`__db_nܕ
(
dbv
));

146 
	}
}

149 
	$__p_t_nses
(
dbv
, 
n
)

150 
DB_ENV
 *
dbv
;

151 
n
;

153 
	`COMPQUIET
(
n
, 0);

154  (
	`__db_nܕ
(
dbv
));

155 
	}
}

158 
	$__p_g_nses
(
dbv
, 
n
)

159 
DB_ENV
 *
dbv
;

160 *
n
;

162 
	`COMPQUIET
(
n
, 
NULL
);

163  (
	`__db_nܕ
(
dbv
));

164 
	}
}

167 
	$__p_t_iܙy
(
dbv
, 
iܙy
)

168 
DB_ENV
 *
dbv
;

169 
iܙy
;

171 
	`COMPQUIET
(
iܙy
, 0);

172  (
	`__db_nܕ
(
dbv
));

173 
	}
}

176 
	$__p_g_iܙy
(
dbv
, 
iܙy
)

177 
DB_ENV
 *
dbv
;

178 *
iܙy
;

180 
	`COMPQUIET
(
iܙy
, 
NULL
);

181  (
	`__db_nܕ
(
dbv
));

182 
	}
}

185 
	$__p_t_timeout
(
dbv
, 
which
, 
timeout
)

186 
DB_ENV
 *
dbv
;

187 
which
;

188 
db_timeout_t
 
timeout
;

190 
	`COMPQUIET
(
which
, 0);

191 
	`COMPQUIET
(
timeout
, 0);

192  (
	`__db_nܕ
(
dbv
));

193 
	}
}

196 
	$__p_g_timeout
(
dbv
, 
which
, 
timeout
)

197 
DB_ENV
 *
dbv
;

198 
which
;

199 
db_timeout_t
 *
timeout
;

201 
	`COMPQUIET
(
which
, 0);

202 
	`COMPQUIET
(
timeout
, 
NULL
);

203  (
	`__db_nܕ
(
dbv
));

204 
	}
}

207 
	$__p_g_cfig
(
dbv
, 
which
, 
p
)

208 
DB_ENV
 *
dbv
;

209 
u_t32_t
 
which
;

210 *
p
;

212 
	`COMPQUIET
(
which
, 0);

213 
	`COMPQUIET
(
p
, 
NULL
);

214  (
	`__db_nܕ
(
dbv
));

215 
	}
}

218 
	$__p_t_cfig
(
dbv
, 
which
, 

)

219 
DB_ENV
 *
dbv
;

220 
u_t32_t
 
which
;

221 

;

223 
	`COMPQUIET
(
which
, 0);

224 
	`COMPQUIET
(

, 0);

225  (
	`__db_nܕ
(
dbv
));

226 
	}
}

229 
	$__p_g_lim
(
dbv
, 
gby
, 
by
)

230 
DB_ENV
 *
dbv
;

231 
u_t32_t
 *
gby
, *
by
;

233 
	`COMPQUIET
(
gby
, 
NULL
);

234 
	`COMPQUIET
(
by
, 
NULL
);

235  (
	`__db_nܕ
(
dbv
));

236 
	}
}

239 
	$__p_nrchive
(
dbv
)

240 
DB_ENV
 *
dbv
;

242 
	`COMPQUIET
(
dbv
, 
NULL
);

244 
	}
}

247 
	$__p_ݒ
(
dbv
)

248 
DB_ENV
 *
dbv
;

250 
	`COMPQUIET
(
dbv
, 
NULL
);

252 
	}
}

255 
	$__p_eo
(
dbv
)

256 
DB_ENV
 *
dbv
;

258  (
	`__db_nܕ
(
dbv
));

259 
	}
}

262 
	$__p_oss_mesge
(
dbv
, 
cڌ
, 
c
, 
eid
, 
t_lp
)

263 
DB_ENV
 *
dbv
;

264 
DBT
 *
cڌ
, *
c
;

265 
eid
;

266 
DB_LSN
 *
t_lp
;

268 
	`COMPQUIET
(
cڌ
, 
NULL
);

269 
	`COMPQUIET
(
c
, 
NULL
);

270 
	`COMPQUIET
(
eid
, 0);

271 
	`COMPQUIET
(
t_lp
, 
NULL
);

272  (
	`__db_nܕ
(
dbv
));

273 
	}
}

276 
	$__p_nd_mesge
(
dbv
, 
eid
, 
y
, 
lp
, 
db
, 
logags
, 
pags
)

277 
DB_ENV
 *
dbv
;

278 
eid
;

279 
u_t32_t
 
y
;

280 
DB_LSN
 *
lp
;

281 cڡ 
DBT
 *
db
;

282 
u_t32_t
 
logags
, 
pags
;

284 
	`COMPQUIET
(
eid
, 0);

285 
	`COMPQUIET
(
y
, 0);

286 
	`COMPQUIET
(
lp
, 
NULL
);

287 
	`COMPQUIET
(
db
, 
NULL
);

288 
	`COMPQUIET
(
logags
, 0);

289 
	`COMPQUIET
(
pags
, 0);

290  (
	`__db_nܕ
(
dbv
));

291 
	}
}

294 
	$__p_t_lim
(
dbv
, 
gbys
, 
bys
)

295 
DB_ENV
 *
dbv
;

296 
u_t32_t
 
gbys
, 
bys
;

298 
	`COMPQUIET
(
gbys
, 0);

299 
	`COMPQUIET
(
bys
, 0);

300  (
	`__db_nܕ
(
dbv
));

301 
	}
}

304 
	$__p_t_t
(
dbv
, 
eid
, 
f_nd
)

305 
DB_ENV
 *
dbv
;

306 
eid
;

307 (*
f_nd

	`__P
((
DB_ENV
 *, cڡ 
DBT
 *, cڡ DBT *, cڡ 
DB_LSN
 *,

308 , 
u_t32_t
));

310 
	`COMPQUIET
(
eid
, 0);

311 
	`COMPQUIET
(
f_nd
, 
NULL
);

312  (
	`__db_nܕ
(
dbv
));

313 
	}
}

316 
	$__p_t_que
(
dbv
, 
m
, 
max
)

317 
DB_ENV
 *
dbv
;

318 
u_t32_t
 
m
, 
max
;

320 
	`COMPQUIET
(
m
, 0);

321 
	`COMPQUIET
(
max
, 0);

322  (
	`__db_nܕ
(
dbv
));

323 
	}
}

326 
	$__p_t
(
dbv
, 
dbt
, 
ags
)

327 
DB_ENV
 *
dbv
;

328 
DBT
 *
dbt
;

329 
u_t32_t
 
ags
;

331 
	`COMPQUIET
(
dbt
, 
NULL
);

332 
	`COMPQUIET
(
ags
, 0);

333  (
	`__db_nܕ
(
dbv
));

334 
	}
}

337 
	$__p__
(
dbv
, 
p
, 
ags
)

338 
DB_ENV
 *
dbv
;

339 
DB_REP_STAT
 **
p
;

340 
u_t32_t
 
ags
;

342 
	`COMPQUIET
(
p
, 
NULL
);

343 
	`COMPQUIET
(
ags
, 0);

344  (
	`__db_nܕ
(
dbv
));

345 
	}
}

348 
	$__p__t_
(
dbv
, 
ags
)

349 
DB_ENV
 *
dbv
;

350 
u_t32_t
 
ags
;

352 
	`COMPQUIET
(
ags
, 0);

353  (
	`__db_nܕ
(
dbv
));

354 
	}
}

357 
	$__p__t
(
dbv
, 
ags
)

358 
DB_ENV
 *
dbv
;

359 
u_t32_t
 
ags
;

361 
	`COMPQUIET
(
ags
, 0);

362  (
	`__db_nܕ
(
dbv
));

363 
	}
}

366 
	$__p_sync
(
dbv
, 
ags
)

367 
DB_ENV
 *
dbv
;

368 
u_t32_t
 
ags
;

370 
	`COMPQUIET
(
ags
, 0);

371  (
	`__db_nܕ
(
dbv
));

372 
	}
}

	@../rep/rep_util.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/mp.h
"

16 
	~"dbc/txn.h
"

18 #ifde
REP_DIAGNOSTIC


19 
	~"dbc/db_ge.h
"

20 
	~"dbc/f.h
"

21 
	~"dbc/b.h
"

22 
	~"dbc/hash.h
"

23 
	~"dbc/qam.h
"

31 
	#TIMESTAMP_CHECK
(
dbv
, 
ts
, 
nv
) do { \

32 i(
nv
->
_timeamp
 != 0 && \

33 
nv
->
_timeamp
 + 
DB_REGENV_TIMEOUT
 < 
ts
) { \

34 
	`REP_SYSTEM_LOCK
(
dbv
); \

35 
	`F_CLR
(
nv
, 
DB_REGENV_REPLOCKED
); \

36 
nv
->
_timeamp
 = 0; \

37 
	`REP_SYSTEM_UNLOCK
(
dbv
); \

39 } 0)

	)

41 
__p_lockout_t
 
__P
((
DB_ENV
 *, 
REP
 *, 
u_t32_t
 *, u_int32_t,

42 cڡ *, 
u_t32_t
));

43 
__p_wma_emy
 
__P
((
DB_ENV
 *, ));

44 #ifde
REP_DIAGNOSTIC


45 
__p_t_logmsg
 
__P
((
DB_ENV
 *, cڡ 
DBT
 *, 
DB_LSN
 *));

59 
	$__p_bulk_mesge
(
dbv
, 
bulk
, 
h
, 
l
, 
dbt
, 
ags
)

60 
DB_ENV
 *
dbv
;

61 
REP_BULK
 *
bulk
;

62 
REP_THROTTLE
 *
h
;

63 
DB_LSN
 *
l
;

64 cڡ 
DBT
 *
dbt
;

65 
u_t32_t
 
ags
;

67 
DB_REP
 *
db_p
;

68 
REP
 *
p
;

69 
t
;

70 
u_t32_t
 
csize
, 
tyme
;

71 
u_t8_t
 *
p
;

73 
db_p
 = 
dbv
->
p_hd
;

74 
p
 = 
db_p
->
gi
;

75 
t
 = 0;

80 
csize
 = 
dbt
->
size
 + (
DB_LSN
) + (dbt->size);

86 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

87 
	`FLD_ISSET
(*(
bulk
->
ag
), 
BULK_XMIT
)) {

88 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

89 
	`__os_p
(
dbv
, 1, 0);

90 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

99 i(
csize
 > 
bulk
->
n
) {

100 
	`RPRINT
(
dbv
, (dbenv,

102 
csize
,ecsize, 
bulk
->
n
));

103 
	`STAT
(
p
->

.
_bulk_ovows
++);

104 ()
	`__p_nd_bulk
(
dbv
, 
bulk
, 
ags
);

108 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

109  (
DB_REP_BULKOVF
);

117 
csize
 + *(
bulk
->
of
> bulk->
n
) {

118 
	`RPRINT
(
dbv
, (dbenv,

120 (
u_lg
)
csize
, (u_long)recsize,

121 (
u_lg
)
bulk
->
n
, (u_long)bulk->len));

122 
	`STAT
(
p
->

.
_bulk_fls
++);

123 i((
t
 = 
	`__p_nd_bulk
(
dbv
, 
bulk
, 
ags
)) != 0) {

124 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

125  (
t
);

136 i(
bulk
->
ty
 =
REP_BULK_LOG
)

137 
tyme
 = 
REP_LOG_MORE
;

139 
tyme
 = 
REP_PAGE_MORE
;

140 i(
h
 !
NULL
) {

141 i((
t
 = 
	`__p_nd_thrَe
(
dbv
,

142 
bulk
->
eid
, 
h
, 
REP_THROTTLE_ONLY
, 
ags
)) != 0) {

143 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

144  (
t
);

146 i(
h
->
ty
 =
tyme
) {

147 
	`RPRINT
(
dbv
, (dbenv,

149 (
u_lg
)
csize
, (u_long)recsize));

150 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

151  (
t
);

164 
p
 = 
bulk
->
addr
 + *(bulk->
of
);

165 
	`memy
(
p
, &
dbt
->
size
, (dbt->size));

166 
p
 +(
dbt
->
size
);

172 
	`memy
(
p
, 
l
, (
DB_LSN
));

173 
	`RPRINT
(
dbv
, (dbenv,

175 (
u_lg
)
l
->
fe
, (u_lg->
offt
, (u_lg)
dbt
->
size
,

176 
	`P_TO_ULONG
(
p
)));

177 
p
 +(
DB_LSN
);

182 i(*(
bulk
->
of
) == 0)

183 
bulk
->
l
 = *lsn;

187 
	`memy
(
p
, 
dbt
->
da
, dbt->
size
);

188 
p
 +
dbt
->
size
;

189 *(
bulk
->
of
(
u_t
)
p
 - (u_t)bulk->
addr
;

190 
	`STAT
(
p
->

.
_bulk_cds
++);

194 i(
	`LF_ISSET
(
REPCTL_PERM
)) {

195 
	`RPRINT
(
dbv
, (dbenv,

197 
t
 = 
	`__p_nd_bulk
(
dbv
, 
bulk
, 
ags
);

199 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

200  (
t
);

202 
	}
}

213 
	$__p_nd_bulk
(
dbv
, 
bulkp
, 
lags
)

214 
DB_ENV
 *
dbv
;

215 
REP_BULK
 *
bulkp
;

216 
u_t32_t
 
lags
;

218 
DB_REP
 *
db_p
;

219 
REP
 *
p
;

220 
DBT
 
dbt
;

221 
t
;

226 i(*(
bulkp
->
of
) == 0)

229 
db_p
 = 
dbv
->
p_hd
;

230 
p
 = 
db_p
->
gi
;

235 
	`FLD_SET
(*(
bulkp
->
ag
), 
BULK_XMIT
);

236 
	`DB_INIT_DBT
(
dbt
, 
bulkp
->
addr
, *(bulkp->
of
));

237 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

238 
	`RPRINT
(
dbv
, (dbenv,

239 "nd_bulk: Sd %d (0x%xbulk bufbys", 
dbt
.
size
, dbt.size));

244 
	`STAT
(
p
->

.
_bulk_srs
++);

245 i((
t
 = 
	`__p_nd_mesge
(
dbv
,

246 
bulkp
->
eid
, bulkp->
ty
, &bulkp->
l
, &
dbt
, 
lags
, 0)) != 0)

247 
t
 = 
DB_REP_UNAVAIL
;

249 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

253 *(
bulkp
->
of
) = 0;

254 
	`FLD_CLR
(*(
bulkp
->
ag
), 
BULK_XMIT
);

255  (
t
);

256 
	}
}

268 
	$__p_bulk_loc
(
dbv
, 
bulkp
, 
eid
, 
of
, 
ag
, 
ty
)

269 
DB_ENV
 *
dbv
;

270 
REP_BULK
 *
bulkp
;

271 
eid
;

272 
u_t
 *
of
;

273 
u_t32_t
 *
ag
, 
ty
;

275 
t
;

277 
	`memt
(
bulkp
, 0, (
REP_BULK
));

278 *
of
 = *
ag
 = 0;

279 
bulkp
->
n
 = 
MEGABYTE
;

280 i((
t
 = 
	`__os_mloc
(
dbv
, 
bulkp
->
n
, &bulkp->
addr
)) != 0)

281  (
t
);

282 
bulkp
->
of
 = offp;

283 
bulkp
->
ty
 =ype;

284 
bulkp
->
eid
 =id;

285 
bulkp
->
ag
 = flagsp;

286  (
t
);

287 
	}
}

296 
	$__p_bulk_
(
dbv
, 
bulkp
, 
ags
)

297 
DB_ENV
 *
dbv
;

298 
REP_BULK
 *
bulkp
;

299 
u_t32_t
 
ags
;

301 
DB_REP
 *
db_p
;

302 
t
;

304 
db_p
 = 
dbv
->
p_hd
;

306 
	`MUTEX_LOCK
(
dbv
, 
db_p
->
gi
->
mtx_db
);

307 
t
 = 
	`__p_nd_bulk
(
dbv
, 
bulkp
, 
ags
);

308 
	`MUTEX_UNLOCK
(
dbv
, 
db_p
->
gi
->
mtx_db
);

309 
	`__os_
(
dbv
, 
bulkp
->
addr
);

310  (
t
);

311 
	}
}

322 
	$__p_nd_mesge
(
dbv
, 
eid
, 
y
, 
lp
, 
dbt
, 
lags
, 
pags
)

323 
DB_ENV
 *
dbv
;

324 
eid
;

325 
u_t32_t
 
y
;

326 
DB_LSN
 *
lp
;

327 cڡ 
DBT
 *
dbt
;

328 
u_t32_t
 
lags
, 
pags
;

330 
DB_LOG
 *
db
;

331 
DB_REP
 *
db_p
;

332 
DBT
 
cdbt
, 
s_dbt
;

333 
LOG
 *

;

334 
REP
 *
p
;

335 
REP_CONTROL
 
l
;

336 
REP_OLD_CONTROL
 
ol
;

337 
t
;

338 
u_t32_t
 
myags
, 
y
;

340 
db_p
 = 
dbv
->
p_hd
;

341 
p
 = 
db_p
->
gi
;

342 
db
 = 
dbv
->
lg_hd
;

343 

 = 
db
->
gfo
.
imy
;

344 
t
 = 0;

346 #i
	`defed
(
DEBUG_ROP
|| defed(
DEBUG_WOP
)

347 i(
db_p
->
nd
 =
NULL
)

352 
	`memt
(&
l
, 0, (cntrl));

353 
	`memt
(&
ol
, 0, (ocntrl));

354 i(
lp
 =
NULL
)

355 
	`ZERO_LSN
(
l
.
l
);

357 
l
.
l
 = *
lp
;

361 i(
p
->
vsi
 =
DB_REPVERSION
)

362 
l
.
y
 = 
y
;

363 i(
p
->
vsi
 < 
DB_REPVERSION
) {

364 
l
.
y
 = 
	`__p_msg_to_d
(
p
->
vsi
, 
y
);

365 
	`RPRINT
(
dbv
, (dbenv,

367 (
u_lg
)
y
, (u_lg)
p
->
vsi
,

368 (
u_lg
)
l
.
y
));

369 i(
l
.
y
 =
REP_INVALID
)

370  (
t
);

372 
	`__db_rx
(
dbv
,

374 (
u_lg
)
p
->
vsi
, (u_lg)
DB_REPVERSION
);

375  (
	`__db_nic
(
dbv
, 
EINVAL
));

377 
l
.
ags
 = 
lags
;

378 
l
.
p_vsi
 = 
p
->
vsi
;

379 
l
.
log_vsi
 = 

->
rsi
.
vsi
;

380 
l
.
g
 = 
p
->gen;

383 i(
dbt
 =
NULL
) {

384 
	`memt
(&
s_dbt
, 0, (
DBT
));

385 
dbt
 = &
s_dbt
;

398 
myags
 = 
pags
;

399 i(
	`FLD_ISSET
(
lags
, 
REPCTL_PERM
))

400 
myags
 |
DB_REP_PERMANENT
;

401 i(
y
 !
REP_LOG
 || 
	`FLD_ISSET
(
lags
, 
REPCTL_RESEND
))

402 
myags
 |
DB_REP_NOBUFFER
;

403 i(
y
 =
REP_LOG
 && !
	`FLD_ISSET
(
lags
, 
REPCTL_PERM
)) {

409 
	`memy
(&
y
, 
dbt
->
da
, (rectype));

410 i(
y
 =
DB___txn_g
 ||ey =
DB___txn_ckp
)

411 
	`F_SET
(&
l
, 
REPCTL_PERM
);

417 i(
	`F_ISSET
(
p
, 
REP_F_GROUP_ESTD
))

418 
	`F_SET
(&
l
, 
REPCTL_GROUP_ESTD
);

424 i(
p
->
vsi
 !
DB_REPVERSION
)

425 
	`FLD_CLR
(
myags
, 
DB_REP_ANYWHERE
);

435 i(
	`IS_REP_MASTER
(
dbv
&& 
	`IS_USING_LEASES
(dbenv) &&

436 
	`FLD_ISSET
(
lags
, 
REPCTL_PERM
)) {

437 
	`F_SET
(&
l
, 
REPCTL_LEASE
);

438 
	`DB_ASSERT
(
dbv
, 
p
->
vsi
 =
DB_REPVERSION
);

439 
	`__os_gtime
(
dbv
, &
l
.
msg_time
);

442 
	`REP_PRINT_MESSAGE
(
dbv
, 
eid
, &
l
, "p_nd_mesge", 
myags
);

443 #ifde
REP_DIAGNOSTIC


444 i(
	`FLD_ISSET
(
dbv
->
vbo
, 
DB_VERB_REPLICATION
&& 
y
 =
REP_LOG
)

445 
	`__p_t_logmsg
(
dbv
, 
dbt
, 
lp
);

451 
	`DB_ASSERT
(
dbv
, !
	`FLD_ISSET
(
myags
, 
DB_REP_PERMANENT
) ||

452 !
	`IS_ZERO_LSN
(
l
.
l
));

457 
	`memt
(&
cdbt
, 0, (cdbt));

458 i(
p
->
vsi
 < 
DB_REPVERSION
) {

459 
ol
.
p_vsi
 = 
l
.rep_version;

460 
ol
.
log_vsi
 = 
l
.log_version;

461 
ol
.
l
 = 
l
.lsn;

462 
ol
.
y
 = 
l
.rectype;

463 
ol
.
g
 = 
l
.gen;

464 
ol
.
ags
 = 
l
.flags;

465 
cdbt
.
da
 = &
ol
;

466 
cdbt
.
size
 = (
ol
);

468 
cdbt
.
da
 = &
l
;

469 
cdbt
.
size
 = (
l
);

477 
t
 = 
db_p
->
	`nd
(
dbv
, &
cdbt
, 
dbt
, &
l
.
l
, 
eid
, 
myags
);

484 i(
t
 != 0) {

485 
	`RPRINT
(
dbv
, (dbenv,

486 "p_nd_funiڄued: %d", 
t
));

487 #ifde
HAVE_STATISTICS


488 
p
->

.
_msgs_nd_us
++;

490 
p
->

.
_msgs_
++;

494  (
t
);

495 
	}
}

497 #ifde
REP_DIAGNOSTIC


504 
	$__p_t_logmsg
(
dbv
, 
logdbt
, 
lp
)

505 
DB_ENV
 *
dbv
;

506 cڡ 
DBT
 *
logdbt
;

507 
DB_LSN
 *
lp
;

510 
size_t
 
absize
;

511 (**
ab
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

513 i(
ab
 =
NULL
) {

515 ()
	`__bam__t
(
dbv
, &
ab
, &
absize
);

516 ()
	`__d__t
(
dbv
, &
ab
, &
absize
);

517 ()
	`__db__t
(
dbv
, &
ab
, &
absize
);

518 ()
	`__dbg__t
(
dbv
, &
ab
, &
absize
);

519 ()
	`__f__t
(
dbv
, &
ab
, &
absize
);

520 ()
	`__ham__t
(
dbv
, &
ab
, &
absize
);

521 ()
	`__qam__t
(
dbv
, &
ab
, &
absize
);

522 ()
	`__txn__t
(
dbv
, &
ab
, &
absize
);

525 ()
	`__db_dich
(
dbv
,

526 
ab
, 
absize
, (
DBT
 *)
logdbt
, 
lp
, 
DB_TXN_PRINT
, 
NULL
);

527 
	}
}

543 
	$__p_w_ma
(
dbv
, 
l
, 
eid
)

544 
DB_ENV
 *
dbv
;

545 
REP_CONTROL
 *
l
;

546 
eid
;

548 
DB_LOG
 *
db
;

549 
DB_LOGC
 *
logc
;

550 
DB_LSN
 
f_l
, 
l
;

551 
DB_REP
 *
db_p
;

552 
DBT
 
dbt
;

553 
LOG
 *

;

554 
REGENV
 *
nv
;

555 
REGINFO
 *
f
;

556 
REP
 *
p
;

557 
db_timeout_t
 
a_to
;

558 
u_t32_t
 
unud
;

559 
chge
, 
do_q
, 
lockout
, 
t
, 
t_t
;

561 
db_p
 = 
dbv
->
p_hd
;

562 
p
 = 
db_p
->
gi
;

563 
db
 = 
dbv
->
lg_hd
;

564 

 = 
db
->
gfo
.
imy
;

565 
t
 = 0;

566 
logc
 = 
NULL
;

567 
lockout
 = 0;

568 
	`REP_SYSTEM_LOCK
(
dbv
);

569 
chge
 = 
p
->
g
 !
l
->g ||->
ma_id
 !
eid
;

570 i(
chge
) {

583 i(
	`F_ISSET
(
p
, 
REP_F_READY_MSG
))

584 
lckout
;

586 i((
t
 = 
	`__p_lockout_msg
(
dbv
, 
p
, 1)) != 0)

587 
ck
;

589 
lockout
 = 1;

596 i(
	`IS_USING_LEASES
(
dbv
) &&

597 ((
a_to
 = 
	`__p_a_watime
(
dbv
)) != 0)) {

598 
	`REP_SYSTEM_UNLOCK
(
dbv
);

599 
	`__os_p
(
dbv
, 0, (
u_lg
)
a_to
);

600 
	`REP_SYSTEM_LOCK
(
dbv
);

603 i((
t
 = 
	`__v__c
(
dbv
, 
l
->
log_vsi
)) != 0)

604 
ck
;

606 
	`REP_SYSTEM_UNLOCK
(
dbv
);

608 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

609 

->
wa_cs
 = 
p
->
que_g
;

610 

->
rcvd_cs
 = 0;

611 
	`ZERO_LSN
(

->
vify_l
);

612 
	`ZERO_LSN
(

->
wag_l
);

613 
	`ZERO_LSN
(

->
max_wa_l
);

618 i(
db_p
->
p_db
 =
NULL
 &&

619 (
t
 = 
	`__p__db
(
dbv
, 0, 
REP_DB
)) != 0) {

620 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

621 
r
;

624 
	`REP_SYSTEM_LOCK
(
dbv
);

625 i(
	`F_ISSET
(
p
, 
REP_F_READY_API
 | 
REP_F_READY_OP
)) {

626 
t
 = 
	`__p__nup
(
dbv
, 
p
, 
DB_FORCE
);

634 
	`F_CLR
(
p
, 
REP_F_RECOVER_MASK
);

636 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

637 i(
t
 != 0) {

639 
ck
;

641 i((
t
 = 
	`__db_un
(
db_p
->
p_db
, 
NULL
, &
unud
)) != 0)

642 
ck
;

648 
	`__p_e_de
(
dbv
, 
p
);

649 
	`RPRINT
(
dbv
, (dbenv,

651 (
u_lg
)
p
->
g
, (u_lg)
l
->g, 
eid
));

652 
p
->
g
 = 
l
->gen;

653 ()
	`__p_wre_g
(
dbv
, 
p
->
g
);

654 i(
p
->
eg
 <p->
g
)

655 
p
->
eg
 =->
g
 + 1;

656 
p
->
ma_id
 = 
eid
;

657 
	`STAT
(
p
->

.
_ma_chges
++);

658 
p
->

.
_tup_come
 = 0;

659 
	`__log_t_vsi
(
dbv
, 
l
->
log_vsi
);

660 
p
->
vsi
 = 
l
->
p_vsi
;

661 
	`RPRINT
(
dbv
, (dbenv,

663 (
u_lg
)
p
->
eg
, (u_lg->
vsi
));

670 i(
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_DELAYCLIENT
))

671 
	`F_SET
(
p
, 
REP_F_DELAY
);

672 
	`F_SET
(
p
, 
REP_F_NOARCHIVE
 | 
REP_F_RECOVER_VERIFY
);

673 
	`F_CLR
(
p
, 
REP_F_READY_MSG
);

674 
lockout
 = 0;

676 
	`__p_e_de
(
dbv
, 
p
);

677 
	`REP_SYSTEM_UNLOCK
(
dbv
);

679 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

680 
l
 = 

->
ady_l
;

682 i(!
chge
) {

683 
t
 = 0;

684 
do_q
 = 
	`__p_check_deq
(
dbv
, 
p
);

685 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

690 i(
do_q
 &&

691 (
	`F_ISSET
(
p
, 
REP_F_RECOVER_MASK
) ||

692 
	`LOG_COMPARE
(&
l
, &
l
->lsn) < 0)) {

693 
t
 = 
	`__p_nd_q
(
dbv
, 0);

694 i(
t
 != 0)

695 
	`RPRINT
(
dbv
, (dbenv,

696 "nd_q i%lu", (
u_lg
)
t
));

704 i(!
	`F_ISSET
(
p
, 
REP_F_RECOVER_MASK
)) {

705 
	`REP_SYSTEM_LOCK
(
dbv
);

706 
	`F_CLR
(
p
, 
REP_F_NOARCHIVE
);

707 
	`REP_SYSTEM_UNLOCK
(
dbv
);

709  (
t
);

711 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

721 i(
	`IS_INIT_LSN
(
l
|| 
	`IS_ZERO_LSN
(lsn)) {

722 i((
t
 = 
	`__p_wma_emy
(
dbv
, 
eid
)) != 0)

723 
r
;

724 ()
	`__memp_t_cfig
(
dbv
, 
DB_MEMP_SYNC_INTERRUPT
, 0);

725  (
DB_REP_NEWMASTER
);

728 
	`memt
(&
dbt
, 0, (dbt));

735 i(
l
->
l
.
fe
 <sn.file) {

736 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

737 
r
;

738 
t
 = 
	`__logc_g
(
logc
, &
f_l
, &
dbt
, 
DB_FIRST
);

739 i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

740 
t
 = 
t_t
;

741 i(
t
 =
DB_NOTFOUND
)

742 
nfound
;

743 i(
t
 != 0)

744 
r
;

745 i(
l
->
l
.
fe
 < 
f_l
.file) {

746 
	`__db_rx
(
dbv
,

748 
t
 = 
DB_REP_JOIN_FAILURE
;

749 
r
;

752 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

753 
r
;

754 
t
 = 
	`__p_log_backup
(
dbv
, 
p
, 
logc
, &
l
);

755 i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

756 
t
 = 
t_t
;

757 i(
t
 =
DB_NOTFOUND
)

758 
nfound
;

759 i(
t
 != 0)

760 
r
;

765 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

766 

->
vify_l
 = 
l
;

767 

->
rcvd_cs
 = 0;

768 

->
wa_cs
 = 
p
->
que_g
;

769 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

770 i(!
	`F_ISSET
(
p
, 
REP_F_DELAY
))

771 ()
	`__p_nd_mesge
(
dbv
,

772 
eid
, 
REP_VERIFY_REQ
, &
l
, 
NULL
, 0, 
DB_REP_ANYWHERE
);

774 ()
	`__memp_t_cfig
(
dbv
, 
DB_MEMP_SYNC_INTERRUPT
, 0);

775  (
DB_REP_NEWMASTER
);

777 
r
:

781 
	`REP_SYSTEM_LOCK
(
dbv
);

782 
ck
: i(
lockout
)

783 
	`F_CLR
(
p
, 
REP_F_READY_MSG
);

784 
	`F_CLR
(
p
, 
REP_F_RECOVER_MASK
 | 
REP_F_DELAY
);

785 
lckout
: 
	`REP_SYSTEM_UNLOCK
(
dbv
);

786  (
t
);

788 
nfound
:

797 i(

->
db_log_memy
)

798 
	`ZERO_LSN
(
l
);

800 
	`INIT_LSN
(
l
);

801 
	`RPRINT
(
dbv
, (dbenv, "No commit or ckp found. Truncateog."));

802 
t
 = 

->
db_log_memy
 ?

803 
	`__log_zo
(
dbv
, &
l
) :

804 
	`__log_vun
(
dbv
, &
l
, &l, 
NULL
);

805 i(
t
 !0 && !
DB_NOTFOUND
)

806  (
t
);

807 
f
 = 
dbv
->
gfo
;

808 
nv
 = 
f
->
imy
;

809 
	`REP_SYSTEM_LOCK
(
dbv
);

810 ()
	`time
(&
nv
->
p_timeamp
);

811 
	`REP_SYSTEM_UNLOCK
(
dbv
);

812 i((
t
 = 
	`__p_wma_emy
(
dbv
, 
eid
)) != 0)

813 
r
;

814  (
DB_REP_NEWMASTER
);

815 
	}
}

825 
	$__p_wma_emy
(
dbv
, 
eid
)

826 
DB_ENV
 *
dbv
;

827 
eid
;

829 
DB_REP
 *
db_p
;

830 
REP
 *
p
;

831 
LOG
 *

;

832 
msg
, 
t
;

834 
db_p
 = 
dbv
->
p_hd
;

835 
p
 = 
db_p
->
gi
;

836 

 = 
dbv
->
lg_hd
->
gfo
.
imy
;

837 
msg
 = 
t
 = 0;

839 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

840 
	`REP_SYSTEM_LOCK
(
dbv
);

841 

->
wa_cs
 = 
p
->
que_g
;

844 
	`F_CLR
(
p
, 
REP_F_RECOVER_VERIFY
);

845 
	`F_SET
(
p
, 
REP_F_RECOVER_UPDATE
);

847 i(
	`F_ISSET
(
p
, 
REP_F_DELAY
)) {

852 } i(
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_NOAUTOINIT
)) {

853 
	`F_CLR
(
p
, 
REP_F_NOARCHIVE
 | 
REP_F_RECOVER_MASK
);

854 
t
 = 
DB_REP_JOIN_FAILURE
;

857 
msg
 = 1;

859 
	`REP_SYSTEM_UNLOCK
(
dbv
);

860 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

862 i(
msg
)

863 ()
	`__p_nd_mesge
(
dbv
, 
eid
, 
REP_UPDATE_REQ
,

864 
NULL
, NULL, 0, 0);

865  (
t
);

866 
	}
}

876 
	$__p_nrchive
(
dbv
)

877 
DB_ENV
 *
dbv
;

879 
DB_REP
 *
db_p
;

880 
REGENV
 *
nv
;

881 
REGINFO
 *
f
;

882 
REP
 *
p
;

883 
time_t
 
timeamp
;

885 
f
 = 
dbv
->
gfo
;

886 
nv
 = 
f
->
imy
;

893 i(
	`F_ISSET
(
nv
, 
DB_REGENV_REPLOCKED
)) {

894 ()
	`time
(&
timeamp
);

895 
	`TIMESTAMP_CHECK
(
dbv
, 
timeamp
, 
nv
);

900 i(
	`F_ISSET
(
nv
, 
DB_REGENV_REPLOCKED
))

901  (
EINVAL
);

904 i(!
	`REP_ON
(
dbv
))

907 
db_p
 = 
dbv
->
p_hd
;

908 
p
 = 
db_p
->
gi
;

909  (
	`F_ISSET
(
p
, 
REP_F_NOARCHIVE
) ? 1 : 0);

910 
	}
}

920 
	$__p_nd_ve
(
dbv
, 
lp
, 
nses
, 
nves
, 
i
, 
t
, 
eg
, 
eid
, 
vty
, 
ags
)

921 
DB_ENV
 *
dbv
;

922 
DB_LSN
 *
lp
;

923 
eid
, 
nses
, 
nves
, 
i
;

924 
u_t32_t
 
ags
, 
eg
, 
t
, 
vty
;

926 
DB_REP
 *
db_p
;

927 
DBT
 
ve_dbt
;

928 
REP
 *
p
;

929 
REP_OLD_VOTE_INFO
 
ovi
;

930 
REP_VOTE_INFO
 
vi
;

932 
db_p
 = 
dbv
->
p_hd
;

933 
p
 = 
db_p
->
gi
;

935 
	`memt
(&
ovi
, 0, (ovi));

936 
	`memt
(&
vi
, 0, (vi));

937 
	`memt
(&
ve_dbt
, 0, (vote_dbt));

939 i(
p
->
vsi
 =
DB_REPVERSION_42
) {

940 
ovi
.
eg
 =gen;

941 
ovi
.
iܙy
 = 
i
;

942 
ovi
.
nses
 =sites;

943 
ovi
.
tbak
 = 
t
;

944 
ve_dbt
.
da
 = &
ovi
;

945 
ve_dbt
.
size
 = (
ovi
);

947 
vi
.
eg
 =gen;

948 
vi
.
iܙy
 = 
i
;

949 
vi
.
nses
 =sites;

950 
vi
.
nves
 =votes;

951 
vi
.
tbak
 = 
t
;

952 
ve_dbt
.
da
 = &
vi
;

953 
ve_dbt
.
size
 = (
vi
);

956 ()
	`__p_nd_mesge
(
dbv
, 
eid
, 
vty
, 
lp
, &
ve_dbt
, 
ags
, 0);

957 
	}
}

967 
	$__p_e_de
(
dbv
, 
p
)

968 
DB_ENV
 *
dbv
;

969 
REP
 *
p
;

971 
e
;

972 
db_timeec
 
dtime
;

974 
e
 = 
	`IN_ELECTION
(
p
);

975 
	`F_CLR
(
p
,

976 
REP_F_EPHASE0
 | 
REP_F_EPHASE1
 | 
REP_F_EPHASE2
 | 
REP_F_TALLY
);

977 
p
->
ses
 = 0;

978 
p
->
ves
 = 0;

979 i(
e
) {

980 i(
	`timeecist
(&
p
->
ime
)) {

981 
	`__os_gtime
(
dbv
, &
dtime
);

982 
	`timeecsub
(&
dtime
, &
p
->
ime
);

983 #ifde
HAVE_STATISTICS


984 
p
->

.
_ei_c
 = (
u_t32_t
)
dtime
.
tv_c
;

985 
p
->

.
_ei_uc
 = (
u_t32_t
)

986 (
dtime
.
tv_nc
 / 
NS_PER_US
);

988 
	`RPRINT
(
dbv
, (dbenv,

990 (
u_lg
)
dtime
.
tv_c
, (u_lgndtime.
tv_nc
));

991 
	`timeecr
(&
p
->
ime
);

993 
p
->
eg
++;

995 
	`RPRINT
(
dbv
, (dbv, "Ei de;g %lu", (
u_lg
)
p
->
eg
));

996 
	}
}

1008 
	$__p_grow_ses
(
dbv
, 
nses
)

1009 
DB_ENV
 *
dbv
;

1010 
nses
;

1012 
REGENV
 *
nv
;

1013 
REGINFO
 *
f
;

1014 
REP
 *
p
;

1015 
oc
, 
t
, *
y
;

1017 
p
 = 
dbv
->
p_hd
->
gi
;

1023 
oc
 = 2 * 
p
->
ases
;

1024 i(
oc
 < 
nses
)

1025 
oc
 = 
nses
;

1027 
f
 = 
dbv
->
gfo
;

1028 
nv
 = 
f
->
imy
;

1029 
	`MUTEX_LOCK
(
dbv
, 
nv
->
mtx_gv
);

1036 i((
t
 = 
	`__v_loc
(
f
,

1037 (
size_t
)
oc
 * (
REP_VTALLY
), &
y
)) == 0) {

1038 i(
p
->
y_off
 !
INVALID_ROFF
)

1039 
	`__v_loc_
(

1040 
f
, 
	`R_ADDR
(f, 
p
->
y_off
));

1041 
p
->
y_off
 = 
	`R_OFFSET
(
f
, 
y
);

1042 i((
t
 = 
	`__v_loc
(
f
,

1043 (
size_t
)
oc
 * (
REP_VTALLY
), &
y
)) == 0) {

1045 i(
p
->
v2y_off
 !
INVALID_ROFF
)

1046 
	`__v_loc_
(
f
,

1047 
	`R_ADDR
(
f
, 
p
->
v2y_off
));

1048 
p
->
v2y_off
 = 
	`R_OFFSET
(
f
, 
y
);

1049 
p
->
ases
 = 
oc
;

1050 
p
->
nses
 =sites;

1059 i(
p
->
v2y_off
 !
INVALID_ROFF
)

1060 
	`__v_loc_
(
f
,

1061 
	`R_ADDR
(
f
, 
p
->
v2y_off
));

1062 
	`__v_loc_
(
f
,

1063 
	`R_ADDR
(
f
, 
p
->
y_off
));

1064 
p
->
v2y_off
 =->
y_off
 = 
INVALID_ROFF
;

1065 
p
->
ases
 = 0;

1066 
p
->
nses
 = 0;

1069 
	`MUTEX_UNLOCK
(
dbv
, 
nv
->
mtx_gv
);

1070  (
t
);

1071 
	}
}

1084 
	$__v_p_r
(
dbv
, 
checklock
)

1085 
DB_ENV
 *
dbv
;

1086 
checklock
;

1088 
DB_REP
 *
db_p
;

1089 
REGENV
 *
nv
;

1090 
REGINFO
 *
f
;

1091 
REP
 *
p
;

1092 
t
;

1093 
time_t
 
timeamp
;

1096 i(
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
))

1099 
db_p
 = 
dbv
->
p_hd
;

1100 
p
 = 
db_p
->
gi
;

1102 
f
 = 
dbv
->
gfo
;

1103 
nv
 = 
f
->
imy
;

1104 i(
checklock
 && 
	`F_ISSET
(
nv
, 
DB_REGENV_REPLOCKED
)) {

1105 ()
	`time
(&
timeamp
);

1106 
	`TIMESTAMP_CHECK
(
dbv
, 
timeamp
, 
nv
);

1111 i(
	`F_ISSET
(
nv
, 
DB_REGENV_REPLOCKED
))

1112  (
EINVAL
);

1115 
	`REP_SYSTEM_LOCK
(
dbv
);

1116 
t
 = 0; 
	`F_ISSET
(
p
, 
REP_F_READY_API
);) {

1117 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1118 i(
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_NOWAIT
)) {

1119 
	`__db_rx
(
dbv
,

1121  (
DB_REP_LOCKOUT
);

1123 
	`__os_p
(
dbv
, 1, 0);

1124 
	`REP_SYSTEM_LOCK
(
dbv
);

1125 i(++
t
 % 60 == 0)

1126 
	`__db_rx
(
dbv
,

1128 
t
 / 60);

1130 
p
->
hd_t
++;

1131 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1134 
	}
}

1144 
	$__v_db_p_ex
(
dbv
)

1145 
DB_ENV
 *
dbv
;

1147 
DB_REP
 *
db_p
;

1148 
REP
 *
p
;

1151 i(
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
))

1154 
db_p
 = 
dbv
->
p_hd
;

1155 
p
 = 
db_p
->
gi
;

1157 
	`REP_SYSTEM_LOCK
(
dbv
);

1158 
p
->
hd_t
--;

1159 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1162 
	}
}

1179 
	$__db_p_r
(
dbp
, 
checkg
, 
checklock
, 
tu_now
)

1180 
DB
 *
dbp
;

1181 
checkg
, 
checklock
, 
tu_now
;

1183 
DB_ENV
 *
dbv
;

1184 
DB_REP
 *
db_p
;

1185 
REGENV
 *
nv
;

1186 
REGINFO
 *
f
;

1187 
REP
 *
p
;

1188 
time_t
 
timeamp
;

1190 
dbv
 = 
dbp
->dbenv;

1192 i(
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
))

1195 
db_p
 = 
dbv
->
p_hd
;

1196 
p
 = 
db_p
->
gi
;

1197 
f
 = 
dbv
->
gfo
;

1198 
nv
 = 
f
->
imy
;

1200 i(
checklock
 && 
	`F_ISSET
(
nv
, 
DB_REGENV_REPLOCKED
)) {

1201 ()
	`time
(&
timeamp
);

1202 
	`TIMESTAMP_CHECK
(
dbv
, 
timeamp
, 
nv
);

1207 i(
	`F_ISSET
(
nv
, 
DB_REGENV_REPLOCKED
))

1208  (
EINVAL
);

1210 
	`REP_SYSTEM_LOCK
(
dbv
);

1211 i(
	`F_ISSET
(
p
, 
REP_F_READY_OP
)) {

1212 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1213 i(!
tu_now
)

1214 
	`__os_p
(
dbv
, 5, 0);

1215  (
DB_LOCK_DEADLOCK
);

1218 i(
checkg
 && 
dbp
->
timeamp
 !
nv
->
p_timeamp
) {

1219 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1220 
	`__db_rx
(
dbv
, "%s %s",

1223  (
DB_REP_HANDLE_DEAD
);

1225 
p
->
hd_t
++;

1226 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1229 
	}
}

1243 
	$___p_r
(
dbv
)

1244 
DB_ENV
 *
dbv
;

1246 
DB_REP
 *
db_p
;

1247 
REP
 *
p
;

1248 
t
;

1251 i(
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
))

1254 
db_p
 = 
dbv
->
p_hd
;

1255 
p
 = 
db_p
->
gi
;

1257 
	`REP_SYSTEM_LOCK
(
dbv
);

1258 
t
 = 0; 
	`F_ISSET
(
p
, 
REP_F_READY_OP
);) {

1259 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1260 i(
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_NOWAIT
)) {

1261 
	`__db_rx
(
dbv
,

1263  (
DB_REP_LOCKOUT
);

1265 
	`__os_p
(
dbv
, 5, 0);

1266 
t
 += 5;

1267 
	`REP_SYSTEM_LOCK
(
dbv
);

1268 i(
t
 % 60 == 0)

1269 
	`__db_rx
(
dbv
,

1271 
t
 / 60);

1273 
p
->
_t
++;

1274 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1277 
	}
}

1288 
	$___p_ex
(
dbv
)

1289 
DB_ENV
 *
dbv
;

1291 
DB_REP
 *
db_p
;

1292 
REP
 *
p
;

1295 i(
	`F_ISSET
(
dbv
, 
DB_ENV_NOLOCKING
))

1298 
db_p
 = 
dbv
->
p_hd
;

1299 
p
 = 
db_p
->
gi
;

1301 
	`REP_SYSTEM_LOCK
(
dbv
);

1302 
	`DB_ASSERT
(
dbv
, 
p
->
_t
 > 0);

1303 
p
->
_t
--;

1304 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1307 
	}
}

1318 
	$__p_lockout_i
(
dbv
, 
p
)

1319 
DB_ENV
 *
dbv
;

1320 
REP
 *
p
;

1322 
t
;

1324 i((
t
 = 
	`__p_lockout_t
(
dbv
, 
p
, &p->
_t
, 0,

1325 "_t", 
REP_F_READY_OP
)) != 0)

1326  (
t
);

1327  (
	`__p_lockout_t
(
dbv
, 
p
, &p->
hd_t
, 0,

1328 "hd_t", 
REP_F_READY_API
));

1329 
	}
}

1344 
	$__p_lockout_y
(
dbv
, 
p
, 
y_th
)

1345 
DB_ENV
 *
dbv
;

1346 
REP
 *
p
;

1347 
u_t32_t
 
y_th
;

1349  (
	`__p_lockout_t
(
dbv
, 
p
, &p->
y_th
,pply_th,

1350 "y_th", 
REP_F_READY_APPLY
));

1351 
	}
}

1366 
	$__p_lockout_msg
(
dbv
, 
p
, 
msg_th
)

1367 
DB_ENV
 *
dbv
;

1368 
REP
 *
p
;

1369 
u_t32_t
 
msg_th
;

1371  (
	`__p_lockout_t
(
dbv
, 
p
, &p->
msg_th
, msg_th,

1372 "msg_th", 
REP_F_READY_MSG
));

1373 
	}
}

1383 
	$__p_lockout_t
(
dbv
, 
p
, 
fldp
, 
fld_v
, 
msg
, 
lockout_ag
)

1384 
DB_ENV
 *
dbv
;

1385 
REP
 *
p
;

1386 
u_t32_t
 *
fldp
;

1387 cڡ *
msg
;

1388 
u_t32_t
 
fld_v
, 
lockout_ag
;

1390 
wa_t
;

1392 
	`F_SET
(
p
, 
lockout_ag
);

1393 
wa_t
 = 0; *
fldp
 > 
fld_v
;) {

1394 
	`REP_SYSTEM_UNLOCK
(
dbv
);

1395 
	`__os_p
(
dbv
, 1, 0);

1396 #ifde
DIAGNOSTIC


1397 i(
wa_t
 == 5)

1398 
	`__db_rx
(
dbv
,

1400 
msg
, (
u_lg
)*
fldp
);

1401 i(++
wa_t
 % 60 == 0)

1402 
	`__db_rx
(
dbv
,

1404 
msg
, (
u_lg
)*
fldp
, 
wa_t
 / 60);

1406 
	`REP_SYSTEM_LOCK
(
dbv
);

1409 
	`COMPQUIET
(
msg
, 
NULL
);

1411 
	}
}

1429 
	$__p_nd_thrَe
(
dbv
, 
eid
, 
h
, 
ags
, 
lags
)

1430 
DB_ENV
 *
dbv
;

1431 
eid
;

1432 
REP_THROTTLE
 *
h
;

1433 
u_t32_t
 
lags
, 
ags
;

1435 
DB_REP
 *
db_p
;

1436 
REP
 *
p
;

1437 
u_t32_t
 
size
, 
tyme
;

1438 
check_lim
;

1440 
check_lim
 = 
h
->
gbys
 !0 ||th->
bys
 != 0;

1445 i(!
check_lim
 && 
	`LF_ISSET
(
REP_THROTTLE_ONLY
))

1448 
db_p
 = 
dbv
->
p_hd
;

1449 
p
 = 
db_p
->
gi
;

1450 
tyme
 = 0;

1451 i(
h
->
ty
 =
REP_LOG
)

1452 
tyme
 = 
REP_LOG_MORE
;

1453 i(
h
->
ty
 =
REP_PAGE
)

1454 
tyme
 = 
REP_PAGE_MORE
;

1455 
	`DB_ASSERT
(
dbv
, 
tyme
 != 0);

1464 
size
 = 
h
->
da_dbt
->siz+ (
REP_CONTROL
);

1465 i(
check_lim
) {

1466 
h
->
bys
 <
size
) {

1467 i(
h
->
gbys
 > 0) {

1468 
h
->
bys
 +
GIGABYTE
;

1469 --(
h
->
gbys
);

1476 
	`STAT
(
p
->

.
_hrَes
++);

1477 
h
->
ty
 = 
tyme
;

1478 
nd
;

1480 
h
->
bys
 -
size
;

1486 
nd
: i((
h
->
ty
 =
tyme
 || !
	`LF_ISSET
(
REP_THROTTLE_ONLY
)) &&

1487 (
	`__p_nd_mesge
(
dbv
, 
eid
, 
h
->
ty
,

1488 &
h
->
l
,th->
da_dbt
, (
REPCTL_RESEND
 | 
lags
), 0) != 0))

1489  (
DB_REP_UNAVAIL
);

1491 
	}
}

1499 
u_t32_t


1500 
	$__p_msg_to_d
(
vsi
, 
y
)

1501 
u_t32_t
 
vsi
, 
y
;

1511 cڡ 
u_t32_t
 
b
[
DB_REPVERSION
][
REP_MAX_MSG
+1] = {

1513 { 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1514 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1515 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1516 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1517 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1518 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1519 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1520 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID },

1524 { 
REP_INVALID
,

1528 
REP_INVALID
,

1529 
REP_INVALID
,

1532 
REP_INVALID
,

1534 
REP_INVALID
,

1544 
REP_INVALID
,

1545 
REP_INVALID
,

1547 
REP_INVALID
,

1548 
REP_INVALID
,

1549 
REP_INVALID
,

1550 
REP_INVALID
,

1560 { 
REP_INVALID
,

1564 
REP_INVALID
,

1565 
REP_INVALID
,

1570 
REP_INVALID
,

1583 
REP_INVALID
,

1584 
REP_INVALID
,

1596 { 
REP_INVALID
,

1606 
REP_INVALID
,

1620 
REP_INVALID
,

1630  (
b
[
vsi
][
y
]);

1631 
	}
}

1639 
u_t32_t


1640 
	$__p_msg_om_d
(
vsi
, 
y
)

1641 
u_t32_t
 
vsi
, 
y
;

1651 cڡ 
u_t32_t
 
b
[
DB_REPVERSION
][
REP_MAX_MSG
+1] = {

1653 { 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1654 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1655 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1656 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1657 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1658 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1659 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID,

1660 
REP_INVALID
, REP_INVALID, REP_INVALID, REP_INVALID },

1664 { 
REP_INVALID
,

1687 
REP_INVALID
,

1688 
REP_INVALID
,

1698 
REP_INVALID
,

1699 
REP_INVALID
,

1700 
REP_INVALID
,

1701 
REP_INVALID
,

1702 
REP_INVALID
,

1703 
REP_INVALID
,

1704 
REP_INVALID
,

1705 
REP_INVALID


1710 { 
REP_INVALID
,

1742 
REP_INVALID
,

1743 
REP_INVALID
,

1744 
REP_INVALID
,

1745 
REP_INVALID
,

1746 
REP_INVALID


1751 { 
REP_INVALID
,

1783 
REP_INVALID
,

1784 
REP_INVALID


1787  (
b
[
vsi
][
y
]);

1788 
	}
}

1798 #ifde
STDC_HEADERS


1799 
	$__p_t
(
DB_ENV
 *
dbv
, cڡ *
fmt
, ...)

1801 
	$__p_t
(
dbv
, 
fmt
, 
va_i
)

1802 
DB_ENV
 *
dbv
;

1803 cڡ *
fmt
;

1804 
va_d


1807 
va_li
 

;

1808 
DB_MSGBUF
 
mb
;

1809 
REP
 *
p
;

1810 cڡ *
s
;

1812 
	`DB_MSGBUF_INIT
(&
mb
);

1814 
s
 = 
NULL
;

1815 i(
dbv
->
db_fx
 !
NULL
)

1816 
s
 = 
dbv
->
db_fx
;

1817 i(
	`REP_ON
(
dbv
)) {

1818 
p
 = 
dbv
->
p_hd
->
gi
;

1819 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
))

1820 
s
 = "CLIENT";

1821 i(
	`F_ISSET
(
p
, 
REP_F_MASTER
))

1822 
s
 = "MASTER";

1824 i(
s
 =
NULL
)

1825 
s
 = "REP_UNDEF";

1826 
	`__db_msgadd
(
dbv
, &
mb
, "%s: ", 
s
);

1828 #ifde
STDC_HEADERS


1829 
	`va_t
(

, 
fmt
);

1831 
	`va_t
(

);

1833 
	`__db_msgadd_
(
dbv
, &
mb
, 
fmt
, 

);

1834 
	`va_d
(

);

1836 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

1837 
	}
}

1844 
	$__p_t_mesge
(
dbv
, 
eid
, 

, 
r
, 
ags
)

1845 
DB_ENV
 *
dbv
;

1846 
eid
;

1847 
REP_CONTROL
 *

;

1848 *
r
;

1849 
u_t32_t
 
ags
;

1851 
u_t32_t
 
lags
, 
y
;

1852 
y
[64], *
ty
;

1854 
y
 = 

->rectype;

1855 
lags
 = 

->
ags
;

1856 i(

->
p_vsi
 !
DB_REPVERSION
)

1857 
y
 = 
	`__p_msg_om_d
(

->
p_vsi
,ectype);

1858 
y
) {

1859 
REP_ALIVE
:

1860 
ty
 = "alive";

1862 
REP_ALIVE_REQ
:

1863 
ty
 = "alive_req";

1865 
REP_ALL_REQ
:

1866 
ty
 = "all_req";

1868 
REP_BULK_LOG
:

1869 
ty
 = "bulk_log";

1871 
REP_BULK_PAGE
:

1872 
ty
 = "bulk_page";

1874 
REP_DUPMASTER
:

1875 
ty
 = "dupmaster";

1877 
REP_FILE
:

1878 
ty
 = "file";

1880 
REP_FILE_FAIL
:

1881 
ty
 = "file_fail";

1883 
REP_FILE_REQ
:

1884 
ty
 = "file_req";

1886 
REP_LEASE_GRANT
:

1887 
ty
 = "lease_grant";

1889 
REP_LOG
:

1890 
ty
 = "log";

1892 
REP_LOG_MORE
:

1893 
ty
 = "log_more";

1895 
REP_LOG_REQ
:

1896 
ty
 = "log_req";

1898 
REP_MASTER_REQ
:

1899 
ty
 = "master_req";

1901 
REP_NEWCLIENT
:

1902 
ty
 = "newclient";

1904 
REP_NEWFILE
:

1905 
ty
 = "newfile";

1907 
REP_NEWMASTER
:

1908 
ty
 = "newmaster";

1910 
REP_NEWSITE
:

1911 
ty
 = "newsite";

1913 
REP_PAGE
:

1914 
ty
 = "page";

1916 
REP_PAGE_FAIL
:

1917 
ty
 = "page_fail";

1919 
REP_PAGE_MORE
:

1920 
ty
 = "page_more";

1922 
REP_PAGE_REQ
:

1923 
ty
 = "page_req";

1925 
REP_REREQUEST
:

1926 
ty
 = "rerequest";

1928 
REP_START_SYNC
:

1929 
ty
 = "start_sync";

1931 
REP_UPDATE
:

1932 
ty
 = "update";

1934 
REP_UPDATE_REQ
:

1935 
ty
 = "update_req";

1937 
REP_VERIFY
:

1938 
ty
 = "verify";

1940 
REP_VERIFY_FAIL
:

1941 
ty
 = "verify_fail";

1943 
REP_VERIFY_REQ
:

1944 
ty
 = "verify_req";

1946 
REP_VOTE1
:

1947 
ty
 = "vote1";

1949 
REP_VOTE2
:

1950 
ty
 = "vote2";

1953 
ty
 = "NOTYPE";

1962 
y
[0] = '\0';

1963 i(
	`LF_ISSET
(
DB_REP_ANYWHERE
))

1964 ()
	`rt
(
y
, "ny");

1965 i(
	`FLD_ISSET
(
lags
, 
REPCTL_FLUSH
))

1966 ()
	`rt
(
y
, " flush");

1972 i(!
	`FLD_ISSET
(
lags
, 
REPCTL_GROUP_ESTD
))

1973 ()
	`rt
(
y
, "ogroup");

1974 i(
	`FLD_ISSET
(
lags
, 
REPCTL_LEASE
))

1975 ()
	`rt
(
y
, "ease");

1976 i(
	`LF_ISSET
(
DB_REP_NOBUFFER
))

1977 ()
	`rt
(
y
, "obuf");

1978 i(
	`LF_ISSET
(
DB_REP_PERMANENT
))

1979 ()
	`rt
(
y
, "erm");

1980 i(
	`LF_ISSET
(
DB_REP_REREQUEST
))

1981 ()
	`rt
(
y
, "ereq");

1982 i(
	`FLD_ISSET
(
lags
, 
REPCTL_RESEND
))

1983 ()
	`rt
(
y
, "esend");

1984 i(
	`FLD_ISSET
(
lags
, 
REPCTL_LOG_END
))

1985 ()
	`rt
(
y
, "ogend");

1986 
	`RPRINT
(
dbv
,

1987 (
dbv
,

1989 
dbv
->
db_home
, 
r
,

1990 (
u_lg
)

->
p_vsi
, (u_lgp->
log_vsi
, (u_lgp->
g
,

1991 
eid
, 
ty
, (
u_lg
)

->
l
.
fe
, (u_lgp->l.
offt
, 
y
));

1992 
	}
}

1998 
	$__p_fe_evt
(
dbv
, 
evt
, 
fo
)

1999 
DB_ENV
 *
dbv
;

2000 
u_t32_t
 
evt
;

2001 *
fo
;

2003 
t
;

2010 
t
 = 
	`__pmgr_hd_evt
(
dbv
, 
evt
, 
fo
);

2011 
	`DB_ASSERT
(
dbv
, 
t
 =0 || =
DB_EVENT_NOT_HANDLED
);

2013 i(
t
 =
DB_EVENT_NOT_HANDLED
)

2014 
	`DB_EVENT
(
dbv
, 
evt
, 
fo
);

2015 
	}
}

	@../rep/rep_verify.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/txn.h
"

17 
__p_decovy
 
__P
((
DB_ENV
 *, 
DB_LSN
 *, DB_LSN *));

26 
	$__p_vify
(
dbv
, 

, 
c
, 
eid
, 
vime
)

27 
DB_ENV
 *
dbv
;

28 
REP_CONTROL
 *

;

29 
DBT
 *
c
;

30 
eid
;

31 
time_t
 
vime
;

33 
DB_LOG
 *
db
;

34 
DB_LOGC
 *
logc
;

35 
DB_LSN
 
l
;

36 
DB_REP
 *
db_p
;

37 
DBT
 
mylog
;

38 
LOG
 *

;

39 
REP
 *
p
;

40 
u_t32_t
 
y
;

41 
mch
, 
t
, 
t_t
;

43 
t
 = 0;

44 
db_p
 = 
dbv
->
p_hd
;

45 
p
 = 
db_p
->
gi
;

46 
db
 = 
dbv
->
lg_hd
;

47 

 = 
db
->
gfo
.
imy
;

49 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

50 
l
 = 

->
vify_l
;

51 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

52 i(
	`IS_ZERO_LSN
(
l
))

53  (
t
);

58 i(
	`IS_USING_LEASES
(
dbv
)) {

59 
	`REP_SYSTEM_LOCK
(
dbv
);

60 
	`DB_ASSERT
(
dbv
, 
	`__p_i_ged
(dbenv) == 0);

61 
	`REP_SYSTEM_UNLOCK
(
dbv
);

64 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

65  (
t
);

66 
	`memt
(&
mylog
, 0, (mylog));

67 i((
t
 = 
	`__logc_g
(
logc
, &

->
l
, &
mylog
, 
DB_SET
)) != 0)

68 
r
;

69 
mch
 = 0;

70 
	`memy
(&
y
, 
mylog
.
da
, (rectype));

71 i(
mylog
.
size
 =
c
->size &&

72 
	`memcmp
(
mylog
.
da
, 
c
->da,ec->
size
) == 0)

73 
mch
 = 1;

78 i(
mch
 == 0) {

79 
	`ZERO_LSN
(
l
);

80 i((
t
 = 
	`__p_log_backup
(
dbv
, 
p
, 
logc
, &
l
)) == 0) {

81 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

82 

->
vify_l
 = 
l
;

83 

->
rcvd_cs
 = 0;

84 

->
wa_cs
 = 
p
->
que_g
;

85 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

86 ()
	`__p_nd_mesge
(
dbv
, 
eid
, 
REP_VERIFY_REQ
,

87 &
l
, 
NULL
, 0, 
DB_REP_ANYWHERE
);

88 } i(
t
 =
DB_NOTFOUND
) {

97 i(

->
l
.
fe
 == 1) {

98 
	`__db_rx
(
dbv
,

100 
t
 = 
DB_REP_JOIN_FAILURE
;

102 
	`STAT
(
p
->

.
_outded
++);

103 
	`REP_SYSTEM_LOCK
(
dbv
);

104 
	`F_CLR
(
p
, 
REP_F_RECOVER_VERIFY
);

105 i(
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_NOAUTOINIT
) ||

106 
p
->
vsi
 =
DB_REPVERSION_42
)

107 
t
 = 
DB_REP_JOIN_FAILURE
;

109 
	`F_SET
(
p
, 
REP_F_RECOVER_UPDATE
);

110 
	`ZERO_LSN
(
p
->
f_l
);

111 
t
 = 0;

113 
	`REP_SYSTEM_UNLOCK
(
dbv
);

114 i(
t
 == 0)

115 ()
	`__p_nd_mesge
(
dbv
,

116 
eid
, 
REP_UPDATE_REQ
, 
NULL
,

117 
NULL
, 0, 0);

121 
t
 = 
	`__p_vify_mch
(
dbv
, &

->
l
, 
vime
);

123 
r
: i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

124 
t
 = 
t_t
;

125  (
t
);

126 
	}
}

135 
	$__p_vify_
(
dbv
, 

, 
eid
)

136 
DB_ENV
 *
dbv
;

137 
REP_CONTROL
 *

;

138 
eid
;

140 
DB_LOG
 *
db
;

141 
DB_REP
 *
db_p
;

142 
LOG
 *

;

143 
REP
 *
p
;

144 
t
;

146 
t
 = 0;

147 
db_p
 = 
dbv
->
p_hd
;

148 
p
 = 
db_p
->
gi
;

149 
db
 = 
dbv
->
lg_hd
;

150 

 = 
db
->
gfo
.
imy
;

157 i(
	`F_ISSET
(
p
, 
REP_F_RECOVER_MASK
) &&

158 !
	`F_ISSET
(
p
, 
REP_F_RECOVER_VERIFY
))

160 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

161 
	`REP_SYSTEM_LOCK
(
dbv
);

165 
	`DB_ASSERT
(
dbv
,

166 !
	`IS_USING_LEASES
(
dbv
|| 
	`__p_i_ged
(dbenv) == 0);

171 
	`STAT
(
p
->

.
_outded
++);

185 i(
	`FLD_ISSET
(
p
->
cfig
, 
REP_C_NOAUTOINIT
) &&

186 ((
	`F_ISSET
(
p
, 
REP_F_RECOVER_VERIFY
) &&

187 
	`LOG_COMPARE
(&

->
l
, &

->
vify_l
) == 0) ||

188 (
	`F_ISSET
(
p
, 
REP_F_RECOVER_MASK
) == 0 &&

189 
	`LOG_COMPARE
(&

->
l
, &

->
ady_l
) >= 0))) {

190 
t
 = 
DB_REP_JOIN_FAILURE
;

191 
uock
;

201 i(((
	`F_ISSET
(
p
, 
REP_F_RECOVER_VERIFY
)) &&

202 
	`LOG_COMPARE
(&

->
l
, &

->
vify_l
) == 0) ||

203 (
	`F_ISSET
(
p
, 
REP_F_RECOVER_MASK
) == 0 &&

204 
	`LOG_COMPARE
(&

->
l
, &

->
ady_l
) >= 0)) {

205 
	`F_CLR
(
p
, 
REP_F_RECOVER_VERIFY
);

206 
	`F_SET
(
p
, 
REP_F_RECOVER_UPDATE
);

207 
	`ZERO_LSN
(
p
->
f_l
);

208 

->
wa_cs
 = 
p
->
que_g
;

209 
	`REP_SYSTEM_UNLOCK
(
dbv
);

210 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

211 ()
	`__p_nd_mesge
(
dbv
,

212 
eid
, 
REP_UPDATE_REQ
, 
NULL
, NULL, 0, 0);

217 
uock
: 
	`REP_SYSTEM_UNLOCK
(
dbv
);

218 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

220  (
t
);

221 
	}
}

230 
	$__p_vify_q
(
dbv
, 

, 
eid
)

231 
DB_ENV
 *
dbv
;

232 
REP_CONTROL
 *

;

233 
eid
;

235 
DB_LOGC
 *
logc
;

236 
DB_REP
 *
db_p
;

237 
DBT
 *
d
, 
da_dbt
;

238 
REP
 *
p
;

239 
u_t32_t
 
ty
;

240 
d
, 
t
;

242 
t
 = 0;

243 
db_p
 = 
dbv
->
p_hd
;

244 
p
 = 
db_p
->
gi
;

246 
ty
 = 
REP_VERIFY
;

247 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

248  (
t
);

249 
d
 = &
da_dbt
;

250 
	`memt
(
d
, 0, (
da_dbt
));

251 
	`F_SET
(
logc
, 
DB_LOG_SILENT_ERR
);

252 
t
 = 
	`__logc_g
(
logc
, &

->
l
, 
d
, 
DB_SET
);

265 i(
t
 =
DB_NOTFOUND
) {

266 i(
	`F_ISSET
(
p
, 
REP_F_CLIENT
)) {

267 ()
	`__logc_o
(
logc
);

268  (
DB_NOTFOUND
);

270 i(
	`__log_is_outded
(
dbv
, 

->
l
.
fe
, &
d
) == 0 &&

271 
d
 != 0)

272 
ty
 = 
REP_VERIFY_FAIL
;

275 i(
t
 != 0)

276 
d
 = 
NULL
;

278 ()
	`__p_nd_mesge
(
dbv
, 
eid
, 
ty
, &

->
l
, 
d
, 0, 0);

279  (
	`__logc_o
(
logc
));

280 
	}
}

283 
	$__p_decovy
(
dbv
, 
lp
, 
unp
)

284 
DB_ENV
 *
dbv
;

285 
DB_LSN
 *
lp
, *
unp
;

287 
DB_LSN
 
ϡ_ckp
, 
l
;

288 
DB_REP
 *
db_p
;

289 
DBT
 
mylog
;

290 
DB_LOGC
 *
logc
;

291 
REP
 *
p
;

292 
t
, 
sk_c
, 
t_t
, 
upde
;

293 
u_t32_t
 
y
, 
code
;

294 
__txn_g_gs
 *
txec
;

295 
__txn_g_42_gs
 *
txn42c
;

297 
db_p
 = 
dbv
->
p_hd
;

298 
p
 = 
db_p
->
gi
;

301 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

302  (
t
);

304 
	`memt
(&
mylog
, 0, (mylog));

305 i(
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
)) {

311 
sk_c
 = 0;

312 
upde
 = 1;

314 
sk_c
 = 1;

315 
upde
 = 0;

317 
upde
 == 0 &&

318 (
t
 = 
	`__logc_g
(
logc
, &
l
, &
mylog
, 
DB_PREV
)) == 0 &&

319 
	`LOG_COMPARE
(&
l
, 
lp
) > 0) {

320 
	`memy
(&
y
, 
mylog
.
da
, (rectype));

340 
	`DB_ASSERT
(
dbv
, 
p
->
_t
 == 0);

341 
	`DB_ASSERT
(
dbv
, 
p
->
msg_th
 == 1);

342 i(
y
 =
DB___txn_g
 ||ey =
DB___txn_ckp
 ||

343 
y
 =
DB___dbg_gi
)

344 
sk_c
 = 0;

345 i(
y
 =
DB___txn_g
) {

346 i(
p
->
vsi
 >
DB_REPVERSION_44
) {

347 i((
t
 = 
	`__txn_g_ad
(
dbv
,

348 
mylog
.
da
, &
txec
)) != 0)

349 
r
;

350 
code
 = 
txec
->opcode;

351 
	`__os_
(
dbv
, 
txec
);

353 i((
t
 = 
	`__txn_g_42_ad
(
dbv
,

354 
mylog
.
da
, &
txn42c
)) != 0)

355 
r
;

356 
code
 = 
txn42c
->opcode;

357 
	`__os_
(
dbv
, 
txn42c
);

359 i(
code
 !
TXN_ABORT
)

360 
upde
 = 1;

366 i(
t
 != 0)

367 
r
;

374 i(
sk_c
) {

375 i((
t
 = 
	`__log_g_ab_l
(
dbv
, &
ϡ_ckp
)) != 0) {

376 i(
t
 !
DB_NOTFOUND
)

377 
r
;

378 
	`ZERO_LSN
(
ϡ_ckp
);

380 
	`RPRINT
(
dbv
, (dbenv,

382 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

383 (
u_lg
)
ϡ_ckp
.
fe
, (u_lga_ckp.
offt
));

384 
t
 = 
	`__log_vun
(
dbv
, 
lp
, &
ϡ_ckp
, 
unp
);

386 
t
 = 
	`__db_ec
(
dbv
, 
lp
, 
unp
, 
upde
, 0);

388 i(
t
 != 0)

389 
r
;

390 
	`F_SET
(
db_p
, 
DBREP_OPENFILES
);

392 
r
: i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

393 
t
 = 
t_t
;

395  (
t
);

396 
	}
}

408 
	$__p_vify_mch
(
dbv
, 
p
, 
vime
)

409 
DB_ENV
 *
dbv
;

410 
DB_LSN
 *
p
;

411 
time_t
 
vime
;

413 
DB_LOG
 *
db
;

414 
DB_LSN
 
un
;

415 
DB_REP
 *
db_p
;

416 
LOG
 *

;

417 
REGENV
 *
nv
;

418 
REGINFO
 *
f
;

419 
REP
 *
p
;

420 
de
, 
ma
, 
t
;

421 
u_t32_t
 
unud
;

423 
db
 = 
dbv
->
lg_hd
;

424 
db_p
 = 
dbv
->
p_hd
;

425 
p
 = 
db_p
->
gi
;

426 

 = 
db
->
gfo
.
imy
;

427 
t
 = 0;

428 
f
 = 
dbv
->
gfo
;

429 
nv
 = 
f
->
imy
;

436 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

437 
de
 = 
vime
 !
nv
->
p_timeamp
;

438 i(
de
) {

439 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

442 
	`ZERO_LSN
(

->
vify_l
);

443 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

450 
	`REP_SYSTEM_LOCK
(
dbv
);

451 i(
	`F_ISSET
(
p
, 
REP_F_READY_MSG
) ||

452 (!
	`F_ISSET
(
p
, 
REP_F_RECOVER_LOG
) &&

453 
	`F_ISSET
(
p
, 
REP_F_READY_API
 | 
REP_F_READY_OP
))) {

457 
	`STAT
(
p
->

.
_msgs_cov
++);

458 
ruock
;

464 i((
t
 = 
	`__p_lockout_msg
(
dbv
, 
p
, 1)) != 0)

465 
ruock
;

470 i((
t
 = 
	`__p_lockout_i
(
dbv
, 
p
)) != 0)

471 
ruock
;

474 
	`REP_SYSTEM_UNLOCK
(
dbv
);

476 i((
t
 = 
	`__p_decovy
(
dbv
, 
p
, &
un
)) != 0 ||

477 (
t
 = 
	`__p_move__fe
(
dbv
)) != 0) {

478 
	`REP_SYSTEM_LOCK
(
dbv
);

479 
	`F_CLR
(
p
, 
REP_F_READY_API
 | 
REP_F_READY_MSG
 | 
REP_F_READY_OP
);

480 
ruock
;

488 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

489 

->
ady_l
 = 
un
;

490 
	`ZERO_LSN
(

->
wag_l
);

491 
	`ZERO_LSN
(

->
max_wa_l
);

492 

->
max_rm_l
 = *
p
;

493 

->
wa_cs
 = 0;

494 

->
rcvd_cs
 = 0;

495 
	`ZERO_LSN
(

->
vify_l
);

503 i(
db_p
->
p_db
 =
NULL
 &&

504 (
t
 = 
	`__p__db
(
dbv
, 0, 
REP_DB
)) != 0) {

505 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

506 
out
;

509 
	`F_SET
(
db_p
->
p_db
, 
DB_AM_RECOVER
);

510 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

511 
t
 = 
	`__db_un
(
db_p
->
p_db
, 
NULL
, &
unud
);

512 
	`MUTEX_LOCK
(
dbv
, 
p
->
mtx_db
);

513 
	`F_CLR
(
db_p
->
p_db
, 
DB_AM_RECOVER
);

515 
	`REP_SYSTEM_LOCK
(
dbv
);

516 
p
->

.
_log_queued
 = 0;

517 
	`F_CLR
(
p
, 
REP_F_NOARCHIVE
 | 
REP_F_RECOVER_MASK
 | 
REP_F_READY_MSG
);

518 i(
t
 != 0)

519 
ruock2
;

531 
ma
 = 
p
->
ma_id
;

532 
	`REP_SYSTEM_UNLOCK
(
dbv
);

533 i(
ma
 =
DB_EID_INVALID
) {

534 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

535 
t
 = 0;

548 

->
wa_cs
 = 
p
->
max_g
;

549 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

550 ()
	`__p_nd_mesge
(
dbv
,

551 
ma
, 
REP_ALL_REQ
, 
p
, 
NULL
, 0, 
DB_REP_ANYWHERE
);

554 
ruock2
: 
	`MUTEX_UNLOCK
(
dbv
, 
p
->
mtx_db
);

555 
ruock
: 
	`REP_SYSTEM_UNLOCK
(
dbv
);

557 
out
:  (
t
);

558 
	}
}

570 
	$__p_log_backup
(
dbv
, 
p
, 
logc
, 
l
)

571 
DB_ENV
 *
dbv
;

572 
REP
 *
p
;

573 
DB_LOGC
 *
logc
;

574 
DB_LSN
 *
l
;

576 
DBT
 
mylog
;

577 
u_t32_t
 
y
;

578 
t
;

580 
	`COMPQUIET
(
dbv
, 
NULL
);

581 
t
 = 0;

582 
	`memt
(&
mylog
, 0, (mylog));

583 (
t
 = 
	`__logc_g
(
logc
, 
l
, &
mylog
, 
DB_PREV
)) == 0) {

590 
	`memy
(&
y
, 
mylog
.
da
, (rectype));

595 i(
p
->
vsi
 =
DB_REPVERSION_42
 &&

596 
y
 !
DB___txn_ckp
 &&ey !
DB___txn_cye
 &&

597 
y
 !
DB___dbg_gi
)

602 i(
p
->
vsi
 =
DB_REPVERSION_43
 &&

603 
y
 =
DB___txn_ckp
)

608 i(
p
->
vsi
 >
DB_REPVERSION_44
 &&

609 (
y
 =
DB___txn_ckp
 ||ey =
DB___txn_g
))

612  (
t
);

613 
	}
}

	@../repmgr/repmgr_elect.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

14 
__pmgr_is_ady
 
__P
((
DB_ENV
 *));

15 
__pmgr_e_ma
 
__P
((
DB_ENV
 *));

16 *
__pmgr_e_thad
 
__P
((*));

17 
t_ei_thad
 
__P
((
DB_ENV
 *));

30 
	$__pmgr__ei
(
dbv
, 
l_ݔi
)

31 
DB_ENV
 *
dbv
;

32 
l_ݔi
;

34 
DB_REP
 *
db_p
;

35 
t
;

37 
db_p
 = 
dbv
->
p_hd
;

38 i(
db_p
->
fished
) {

39 
	`RPRINT
(
dbv
, (dbenv,

41 
l_ݔi
));

45 
db_p
->
ݔi_eded
 = 
l_ݔi
;

46 i(
db_p
->
e_thad
 =
NULL
)

47 
t
 = 
	`t_ei_thad
(
dbv
);

48 i(
db_p
->
e_thad
->
fished
) {

49 
	`RPRINT
(
dbv
, (dbenv, "join deadlecthread"));

50 i((
t
 = 
	`__pmgr_thad_jo
(
db_p
->
e_thad
)) != 0)

51  (
t
);

52 
	`__os_
(
dbv
, 
db_p
->
e_thad
);

53 
db_p
->
e_thad
 = 
NULL
;

54 
t
 = 
	`t_ei_thad
(
dbv
);

56 
	`RPRINT
(
dbv
, (dbenv, "reusingxistinglecthread"));

57 i((
t
 = 
	`__pmgr_sigl
(&
db_p
->
check_ei
)) != 0)

58 
	`__db_r
(
dbv
, 
t
, "can't signallectionhread");

60  (
t
);

61 
	}
}

68 
	$t_ei_thad
(
dbv
)

69 
DB_ENV
 *
dbv
;

71 
DB_REP
 *
db_p
;

72 
REPMGR_RUNNABLE
 *
e
;

73 
t
;

75 
db_p
 = 
dbv
->
p_hd
;

77 i((
t
 = 
	`__os_mloc
(
dbv
, (
REPMGR_RUNNABLE
), &
e
))

79  (
t
);

80 
e
->
dbv
 = dbenv;

81 
e
->
run
 = 
__pmgr_e_thad
;

83 i((
t
 = 
	`__pmgr_thad_t
(
dbv
, 
e
)) == 0)

84 
db_p
->
e_thad
 = 
e
;

86 
	`__os_
(
dbv
, 
e
);

88  (
t
);

89 
	}
}

92 
	$__pmgr_e_thad
(
gs
)

93 *
gs
;

95 
DB_ENV
 *
dbv
 = 
gs
;

96 
t
;

98 
	`RPRINT
(
dbv
, (dbenv, "startinglectionhread"));

100 i((
t
 = 
	`__pmgr_e_ma
(
dbv
)) != 0) {

101 
	`__db_r
(
dbv
, 
t
, "electionhread failed");

102 
	`__pmgr_thad_u
(
dbv
, 
t
);

105 
	`RPRINT
(
dbv
, (dbenv, "electionhread isxiting"));

106  (
NULL
);

107 
	}
}

110 
	$__pmgr_e_ma
(
dbv
)

111 
DB_ENV
 *
dbv
;

113 
DB_REP
 *
db_p
;

114 
DBT
 
my_addr
;

115 #ifde
DB_WIN32


116 
DWORD
 
duti
;

118 
timeec
 
ddle
;

120 
u_t
 
nses
, 
nves
;

121 
de
, 
u_covy
, 
ϡ_
;

122 
ed_sucss
, 
t
, 
suceded
, 
to_do
;

124 
	`COMPQUIET
(
ed_sucss
, 
TRUE
);

126 
db_p
 = 
dbv
->
p_hd
;

127 
ϡ_
 = 0;

128 
u_covy
 = 
suceded
 = 
FALSE
;

146 
	`LOCK_MUTEX
(
db_p
->
mux
);

147 i(
db_p
->
fished
) {

148 
db_p
->
e_thad
->
fished
 = 
TRUE
;

149 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

152 
to_do
 = 
db_p
->
ݔi_eded
;

153 
db_p
->
ݔi_eded
 = 0;

154 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

163 
to_do
) {

164 
ELECT_FAILURE_ELECTION
:

165 
u_covy
 = 
TRUE
;

166 
to_do
 = 
ELECT_ELECTION
;

168 
ELECT_ELECTION
:

169 
ed_sucss
 = 
TRUE
;

171 
ELECT_SEEK_MASTER
:

172 
to_do
 = 0;

174 
ELECT_REPSTART
:

175 
ed_sucss
 = 
FALSE
;

178 
	`DB_ASSERT
(
dbv
, 
FALSE
);

183 
	`RPRINT
(
dbv
, (dbv, "ehaddo: %d", 
to_do
));

184 
to_do
) {

185 
ELECT_ELECTION
:

186 
nses
 = 
	`__pmgr_g_nses
(
db_p
);

191 
nves
 = 
nses
 =2 ? 1 : 
	`ELECTION_MAJORITY
(nsites);

201 i(
u_covy
)

202 
nses
--;

204 
t
 = 
	`__p_e
(
dbv
,

205 ()
nses
, ()
nves
, 0)) {

206 
DB_REP_UNAVAIL
:

210 
suceded
 = 
TRUE
;

211 i(
db_p
->
keov_ndg
) {

212 
db_p
->
keov_ndg
 = 
FALSE
;

213 i((
t
 =

214 
	`__pmgr_become_ma
(
dbv
)) != 0)

215  (
t
);

220 
	`__db_r
(

221 
dbv
, 
t
, "unexpectedlection failure");

222  (
t
);

224 
ϡ_
 = 
ELECT_ELECTION
;

226 
ELECT_REPSTART
:

227 i((
t
 =

228 
	`__pmgr_e_my_addr
(
dbv
, &
my_addr
)) != 0)

229  (
t
);

230 
t
 = 
	`__p_t
(
dbv
, &
my_addr
, 
DB_REP_CLIENT
);

231 
	`__os_
(
dbv
, 
my_addr
.
da
);

232 i(
t
 != 0) {

233 
	`__db_r
(
dbv
, 
t
, "rep_start");

234  (
t
);

236 
ϡ_
 = 
ELECT_REPSTART
;

243 
ϡ_
 = 0;

246 
	`DB_ASSERT
(
dbv
, 
FALSE
);

249 
	`LOCK_MUTEX
(
db_p
->
mux
);

250 !
suceded
 && !
	`__pmgr_is_ady
(
dbv
)) {

251 #ifde
DB_WIN32


252 
duti
 = 
db_p
->
ei_y_wa
 / 
US_PER_MS
;

253 
t
 = 
	`SiglObjeAndWa
(
db_p
->
mux
,

254 
db_p
->
check_ei
, 
duti
, 
FALSE
);

255 
	`LOCK_MUTEX
(
db_p
->
mux
);

256 i(
t
 =
WAIT_TIMEOUT
)

258 
	`DB_ASSERT
(
dbv
, 
t
 =
WAIT_OBJECT_0
);

260 
	`__pmgr_compu_wa_ddle
(
dbv
, &
ddle
,

261 
db_p
->
ei_y_wa
);

262 i((
t
 = 
	`had_cd_timedwa
(

263 &
db_p
->
check_ei
, &db_p->
mux
, &
ddle
))

264 =
ETIMEDOUT
)

266 
	`DB_ASSERT
(
dbv
, 
t
 == 0);

282 
de
 = 
FALSE
;

283 i((
to_do
 = 
db_p
->
ݔi_eded
) != 0) {

284 
db_p
->
ݔi_eded
 = 0;

285 
to_do
) {

286 
ELECT_FAILURE_ELECTION
:

287 
u_covy
 = 
TRUE
;

288 
to_do
 = 
ELECT_ELECTION
;

290 
ELECT_ELECTION
:

291 
ed_sucss
 = 
TRUE
;

293 
ELECT_SEEK_MASTER
:

294 
to_do
 = 0;

299 } i((
de
 = (
suceded
 ||

300 (!
ed_sucss
 && 
	`IS_VALID_EID
(
db_p
->
ma_eid
)) ||

301 
db_p
->
fished
)))

302 
db_p
->
e_thad
->
fished
 = 
TRUE
;

304 i(
ϡ_
 =
ELECT_ELECTION
)

305 
to_do
 = 
ELECT_REPSTART
;

315 
to_do
 = 
ELECT_ELECTION
;

316 i(
db_p
->
_picy
 =
DB_REP_CLIENT
 &&

317 !
db_p
->
found_ma
)

318 
to_do
 = 
ELECT_REPSTART
;

322 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

323 i(
de
)

326 
	}
}

332 
	$__pmgr_is_ady
(
dbv
)

333 
DB_ENV
 *
dbv
;

335 
DB_REP
 *
db_p
;

337 
db_p
 = 
dbv
->
p_hd
;

339 
	`RPRINT
(
dbv
, (dbenv,

341 
db_p
->
ݔi_eded
, db_p->
fished
, db_p->
ma_eid
));

343  (
db_p
->
ݔi_eded
 || db_p->
fished
);

344 
	}
}

350 
	$__pmgr_become_ma
(
dbv
)

351 
DB_ENV
 *
dbv
;

353 
DB_REP
 *
db_p
;

354 
DBT
 
my_addr
;

355 
t
;

357 
db_p
 = 
dbv
->
p_hd
;

358 
db_p
->
ma_eid
 = 
SELF_EID
;

359 
db_p
->
found_ma
 = 
TRUE
;

367 i((
t
 = 
	`__pmgr_e_my_addr
(
dbv
, &
my_addr
)) != 0)

368  (
t
);

369 
t
 = 
	`__p_t
(
dbv
, &
my_addr
, 
DB_REP_MASTER
);

370 
	`__os_
(
dbv
, 
my_addr
.
da
);

371 
	`__pmgr_ash_gi
(
dbv
);

373  (
t
);

374 
	}
}

	@../repmgr/repmgr_method.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

14 
__pmgr_awa_thads
 
__P
((
DB_ENV
 *));

20 
	$__pmgr_t
(
dbv
, 
hads
, 
ags
)

21 
DB_ENV
 *
dbv
;

22 
hads
;

23 
u_t32_t
 
ags
;

25 
DB_REP
 *
db_p
;

26 
DBT
 
my_addr
;

27 
REPMGR_RUNNABLE
 *

, *
mesng
;

28 
t
, 
i
;

30 
db_p
 = 
dbv
->
p_hd
;

33 i(
db_p
->
my_addr
.
pt
 == 0) {

34 
	`__db_rx
(
dbv
,

36  (
EINVAL
);

39 i(
db_p
->

 !
NULL
 || db_p->
fished
) {

40 
	`__db_rx
(
dbv
,

42  (
EINVAL
);

45 
ags
) {

46 
DB_REP_CLIENT
:

47 
DB_REP_ELECTION
:

48 
DB_REP_MASTER
:

51 
	`__db_rx
(
dbv
,

53  (
EINVAL
);

56 i(
hads
 <= 0) {

57 
	`__db_rx
(
dbv
,

59  (
EINVAL
);

62 i((
t
 =

63 
	`__os_oc
(
dbv
, (
u_t
)
hads
, (
REPMGR_RUNNABLE
 *),

64 &
db_p
->
mesngs
)) != 0)

65  (
t
);

66 
db_p
->
hads
 =threads;

68 i((
t
 = 
	`__pmgr_t_
(
dbv
, 
db_p
)) != 0 ||

69 (
t
 = 
	`__pmgr__sync
(
dbv
, 
db_p
)) != 0 ||

70 (
t
 = 
	`__p_t_t
(
dbv
, 
SELF_EID
, 
__pmgr_nd
)) != 0)

71  (
t
);

78 i((
db_p
->
_picy
 = 
ags
=
DB_REP_MASTER
)

79 
t
 = 
	`__pmgr_become_ma
(
dbv
);

81 i((
t
 = 
	`__pmgr_e_my_addr
(
dbv
, &
my_addr
)) != 0)

82  (
t
);

83 
t
 = 
	`__p_t
(
dbv
, &
my_addr
, 
DB_REP_CLIENT
);

84 
	`__os_
(
dbv
, 
my_addr
.
da
);

85 i(
t
 == 0) {

86 
	`LOCK_MUTEX
(
db_p
->
mux
);

87 
t
 = 
	`__pmgr__ei
(
dbv
, 
ELECT_SEEK_MASTER
);

88 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

91 i(
t
 != 0)

92  (
t
);

94 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
REPMGR_RUNNABLE
), &

))

96  (
t
);

97 

->
dbv
 = dbenv;

98 

->
run
 = 
__pmgr__thad
;

99 i((
t
 = 
	`__pmgr_thad_t
(
dbv
, 

)) != 0) {

100 
	`__db_r
(
dbv
, 
t
, "can't start selectorhread");

101 
	`__os_
(
dbv
, 

);

102  (
t
);

104 
db_p
->

 = selector;

106 
i
=0; i<
hads
; i++) {

107 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
REPMGR_RUNNABLE
),

108 &
mesng
)) != 0)

109  (
t
);

111 
mesng
->
dbv
 = dbenv;

112 
mesng
->
run
 = 
__pmgr_msg_thad
;

113 i((
t
 = 
	`__pmgr_thad_t
(
dbv
, 
mesng
)) != 0) {

114 
	`__os_
(
dbv
, 
mesng
);

115  (
t
);

117 
db_p
->
mesngs
[
i
] = 
mesng
;

120  (
t
);

121 
	}
}

127 
	$__pmgr_o
(
dbv
)

128 
DB_ENV
 *
dbv
;

130 
DB_REP
 *
db_p
;

131 
t
, 
t_t
;

133 
t
 = 0;

134 
db_p
 = 
dbv
->
p_hd
;

135 i(
db_p
->

 !
NULL
) {

136 
	`RPRINT
(
dbv
, (dbenv, "Stoppingepmgrhreads"));

137 
t
 = 
	`__pmgr__thads
(
dbv
);

138 i((
t_t
 = 
	`__pmgr_awa_thads
(
dbv
)!0 && 
t
 == 0)

139 
t
 = 
t_t
;

140 
	`RPRINT
(
dbv
, (dbenv, "Repmgrhreadsre finished"));

143 i((
t_t
 = 
	`__pmgr_t_o
(
dbv
)!0 && 
t
 == 0)

144 
t
 = 
t_t
;

146 i((
t_t
 = 
	`__pmgr_o_sync
(
dbv
)!0 && 
t
 == 0)

147 
t
 = 
t_t
;

149  (
t
);

150 
	}
}

156 
	$__pmgr_t_ack_picy
(
dbv
, 
picy
)

157 
DB_ENV
 *
dbv
;

158 
picy
;

160 
picy
) {

161 
DB_REPMGR_ACKS_ALL
:

162 
DB_REPMGR_ACKS_ALL_PEERS
:

163 
DB_REPMGR_ACKS_NONE
:

164 
DB_REPMGR_ACKS_ONE
:

165 
DB_REPMGR_ACKS_ONE_PEER
:

166 
DB_REPMGR_ACKS_QUORUM
:

167 
dbv
->
p_hd
->
rm_picy
 = 
picy
;

170 
	`__db_rx
(
dbv
,

172  (
EINVAL
);

174 
	}
}

180 
	$__pmgr_g_ack_picy
(
dbv
, 
picy
)

181 
DB_ENV
 *
dbv
;

182 *
picy
;

184 *
picy
 = 
dbv
->
p_hd
->
rm_picy
;

186 
	}
}

192 
	$__pmgr_v_
(
dbv
, 
db_p
)

193 
DB_ENV
 *
dbv
;

194 
DB_REP
 *
db_p
;

196 
t
;

199 
db_p
->
ack_timeout
 = 1 * 
US_PER_SEC
;

200 
db_p
->
ci_y_wa
 = 30 * 
US_PER_SEC
;

201 
db_p
->
ei_y_wa
 = 10 * 
US_PER_SEC
;

202 
db_p
->
cfig_nses
 = 0;

203 
db_p
->

 = 
DB_EID_INVALID
;

204 
db_p
->
rm_picy
 = 
DB_REPMGR_ACKS_QUORUM
;

206 #ifde
DB_WIN32


207 
db_p
->
was
 = 
NULL
;

209 
db_p
->
ad_pe
 = db_p->
wre_pe
 = -1;

211 i((
t
 = 
	`__pmgr_t_
(
dbv
, 
db_p
)) == 0)

212 
t
 = 
	`__pmgr_queue_
(
dbv
, 
db_p
);

214  (
t
);

215 
	}
}

221 
	$__pmgr_v_deroy
(
dbv
, 
db_p
)

222 
DB_ENV
 *
dbv
;

223 
DB_REP
 *
db_p
;

225 
	`__pmgr_queue_deroy
(
dbv
);

226 
	`__pmgr_t_deroy
(
dbv
, 
db_p
);

227 i(
db_p
->
mesngs
 !
NULL
) {

228 
	`__os_
(
dbv
, 
db_p
->
mesngs
);

229 
db_p
->
mesngs
 = 
NULL
;

231 
	}
}

237 
	$__pmgr__thads
(
dbv
)

238 
DB_ENV
 *
dbv
;

240 
DB_REP
 *
db_p
;

241 
t
;

243 
db_p
 = 
dbv
->
p_hd
;

249 
	`LOCK_MUTEX
(
db_p
->
mux
);

250 
db_p
->
fished
 = 
TRUE
;

251 i(
db_p
->
e_thad
 !
NULL
 &&

252 (
t
 = 
	`__pmgr_sigl
(&
db_p
->
check_ei
)) != 0)

253 
uock
;

255 i((
t
 = 
	`__pmgr_sigl
(&
db_p
->
queue_nemy
)) != 0)

256 
uock
;

257 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

259  (
	`__pmgr_wake_ma_thad
(
dbv
));

261 
uock
:

262 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

263  (
t
);

264 
	}
}

267 
	$__pmgr_awa_thads
(
dbv
)

268 
DB_ENV
 *
dbv
;

270 
DB_REP
 *
db_p
;

271 
REPMGR_RUNNABLE
 *
mesng
;

272 
t
, 
t_t
, 
i
;

274 
db_p
 = 
dbv
->
p_hd
;

275 
t
 = 0;

276 i(
db_p
->
e_thad
 !
NULL
) {

277 
t
 = 
	`__pmgr_thad_jo
(
db_p
->
e_thad
);

278 
	`__os_
(
dbv
, 
db_p
->
e_thad
);

279 
db_p
->
e_thad
 = 
NULL
;

282 
i
=0; i<
db_p
->
hads
 && db_p->
mesngs
[i] !
NULL
; i++) {

283 
mesng
 = 
db_p
->
mesngs
[
i
];

284 i((
t_t
 = 
	`__pmgr_thad_jo
(
mesng
)!0 && 
t
 == 0)

285 
t
 = 
t_t
;

286 
	`__os_
(
dbv
, 
mesng
);

287 
db_p
->
mesngs
[
i
] = 
NULL
;

289 
	`__os_
(
dbv
, 
db_p
->
mesngs
);

290 
db_p
->
mesngs
 = 
NULL
;

292 i(
db_p
->

 !
NULL
) {

293 i((
t_t
 = 
	`__pmgr_thad_jo
(
db_p
->

)) != 0 &&

294 
t
 == 0)

295 
t
 = 
t_t
;

296 
	`__os_
(
dbv
, 
db_p
->

);

297 
db_p
->

 = 
NULL
;

300  (
t
);

301 
	}
}

308 
	$__pmgr_t_lol_se
(
dbv
, 
ho
, 
pt
, 
ags
)

309 
DB_ENV
 *
dbv
;

310 cڡ *
ho
;

311 
u_t
 
pt
;

312 
u_t32_t
 
ags
;

314 
ADDRINFO
 *
addss_li
;

315 
DB_REP
 *
db_p
;

316 
pmgr_Ïddr_t
 
addr
;

317 
locked
, 
t
;

318 cڡ *
shab_ho
;

319 
bufr
[
MAXHOSTNAMELEN
];

321 i(
ags
 != 0)

322  (
	`__db_
(
dbv
, "DB_ENV->repmgr_set_local_site", 0));

324 
db_p
 = 
dbv
->
p_hd
;

325 i(
db_p
->
my_addr
.
pt
 != 0) {

326 
	`__db_rx
(
dbv
, "Listenddresslready set");

327  (
EINVAL
);

337 i(
ho
 =
NULL
) {

338 i((
t
 = 
	`ghome
(
bufr
, (buffer))) != 0)

339  (
t_o
);

342 
bufr
[(buffer) - 1] = '\0';

343 
shab_ho
 = 
bufr
;

345 
shab_ho
 = 
ho
;

347 i((
t
 = 
	`__pmgr_gaddr
(
dbv
,

348 
ho
, 
pt
, 
AI_PASSIVE
, &
addss_li
)) != 0)

349  (
t
);

351 i((
t
 = 
	`__pmgr_ck_Ïddr
(
dbv
,

352 
shab_ho
, 
pt
, 
addss_li
, &
addr
)) != 0) {

353 
	`__db_addrfo
(
dbv
, 
addss_li
);

354  (
t
);

357 i(
	`REPMGR_SYNC_INITED
(
db_p
)) {

358 
	`LOCK_MUTEX
(
db_p
->
mux
);

359 
locked
 = 
TRUE
;

361 
locked
 = 
FALSE
;

363 
	`memy
(&
db_p
->
my_addr
, &
addr
, (addr));

365 i(
locked
)

366 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

368 
	}
}

380 
	$__pmgr_add_me_se
(
dbv
, 
ho
, 
pt
, 
eidp
, 
ags
)

381 
DB_ENV
 *
dbv
;

382 cڡ *
ho
;

383 
u_t
 
pt
;

384 *
eidp
;

385 
u_t32_t
 
ags
;

387 
DB_REP
 *
db_p
;

388 
REPMGR_SITE
 *
se
;

389 
eid
, 
locked
, 
t
;

391 i((
t
 = 
	`__db_fchk
(
dbv
,

392 "DB_ENV->pmgr_add_me_se", 
ags
, 
DB_REPMGR_PEER
)) != 0)

393  (
t
);

395 i(
ho
 =
NULL
) {

396 
	`__db_rx
(
dbv
,

398  (
EINVAL
);

401 
db_p
 = 
dbv
->
p_hd
;

403 i(
	`REPMGR_SYNC_INITED
(
db_p
)) {

404 
	`LOCK_MUTEX
(
db_p
->
mux
);

405 
locked
 = 
TRUE
;

407 
locked
 = 
FALSE
;

409 i((
t
 = 
	`__pmgr_add_se
(
dbv
, 
ho
, 
pt
, &
se
)) != 0)

410 
uock
;

411 
eid
 = 
	`EID_FROM_SITE
(
se
);

413 i(
	`LF_ISSET
(
DB_REPMGR_PEER
))

414 
db_p
->

 = 
eid
;

415 i(
eidp
 !
NULL
)

416 *
eidp
 = 
eid
;

418 
uock
: i(
locked
)

419 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

420  (
t
);

421 
	}
}

	@../repmgr/repmgr_msg.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

14 
mesge_lo
 
__P
((
DB_ENV
 *));

15 
oss_mesge
 
__P
((
DB_ENV
*, 
DBT
*, DBT*, ));

16 
hd_wse
 
__P
((
DB_ENV
 *, cڡ 
DBT
 *));

17 
ack_mesge
 
__P
((
DB_ENV
 *, 
u_t32_t
, 
DB_LSN
 *));

23 
	$__pmgr_msg_thad
(
gs
)

24 *
gs
;

26 
DB_ENV
 *
dbv
 = 
gs
;

27 
t
;

29 i((
t
 = 
	`mesge_lo
(
dbv
)) != 0) {

30 
	`__db_r
(
dbv
, 
t
, "messagehread failed");

31 
	`__pmgr_thad_u
(
dbv
, 
t
);

33  (
NULL
);

34 
	}
}

37 
	$mesge_lo
(
dbv
)

38 
DB_ENV
 *
dbv
;

40 
REPMGR_MESSAGE
 *
msg
;

41 
t
;

43 (
t
 = 
	`__pmgr_queue_g
(
dbv
, &
msg
)) == 0) {

44 (
t
 = 
	`oss_mesge
(
dbv
, &
msg
->
cڌ
, &msg->
c
,

45 
msg
->
igg_eid
)=
DB_LOCK_DEADLOCK
)

46 
	`RPRINT
(
dbv
, (dbenv, "repmgr deadlocketry"));

48 
	`__os_
(
dbv
, 
msg
);

49 i(
t
 != 0)

50  (
t
);

53  (
t
 =
DB_REP_UNAVAIL
 ? 0 :et);

54 
	}
}

57 
	$oss_mesge
(
dbv
, 
cڌ
, 
c
, 
eid
)

58 
DB_ENV
 *
dbv
;

59 
DBT
 *
cڌ
, *
c
;

60 
eid
;

62 
DB_REP
 *
db_p
;

63 
REP
 *
p
;

64 
DB_LSN
 
rml
;

65 
t
;

66 
u_t32_t
 
gi
;

68 
db_p
 = 
dbv
->
p_hd
;

74 
gi
 = 
db_p
->generation;

76 
t
 =

77 
	`__p_oss_mesge
(
dbv
, 
cڌ
, 
c
, 
eid
, &
rml
)) {

79 i(
db_p
->
keov_ndg
) {

80 
db_p
->
keov_ndg
 = 
FALSE
;

81  (
	`__pmgr_become_ma
(
dbv
));

85 
DB_REP_NEWSITE
:

86  (
	`hd_wse
(
dbv
, 
c
));

88 
DB_REP_HOLDELECTION
:

89 
	`LOCK_MUTEX
(
db_p
->
mux
);

90 
t
 = 
	`__pmgr__ei
(
dbv
, 
ELECT_ELECTION
);

91 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

92 i(
t
 != 0)

93  (
t
);

96 
DB_REP_DUPMASTER
:

97 i((
t
 = 
	`__pmgr_pt
(
dbv
, 
DB_REP_CLIENT
)) != 0)

98  (
t
);

99 
	`LOCK_MUTEX
(
db_p
->
mux
);

100 
t
 = 
	`__pmgr__ei
(
dbv
, 
ELECT_ELECTION
);

101 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

102 i(
t
 != 0)

103  (
t
);

106 
DB_REP_ISPERM
:

110 
p
 = 
db_p
->
gi
;

111 i(
db_p
->
rm_picy
 =
DB_REPMGR_ACKS_NONE
 ||

112 (
	`IS_PEER_POLICY
(
db_p
->
rm_picy
) &&

113 
p
->
iܙy
 == 0))

116 i((
t
 = 
	`ack_mesge
(
dbv
, 
gi
, &
rml
)) != 0)

117  (
t
);

121 
DB_REP_NOTPERM
:

122 
DB_REP_IGNORE
:

123 
DB_LOCK_DEADLOCK
:

127 
	`__db_r
(
dbv
, 
t
, "DB_ENV->rep_process_message");

128  (
t
);

131 
	}
}

140 
	$__pmgr_hd_evt
(
dbv
, 
evt
, 
fo
)

141 
DB_ENV
 *
dbv
;

142 
u_t32_t
 
evt
;

143 *
fo
;

145 
DB_REP
 *
db_p
;

147 
db_p
 = 
dbv
->
p_hd
;

149 i(
db_p
->

 =
NULL
) {

151  (
DB_EVENT_NOT_HANDLED
);

154 
evt
) {

155 
DB_EVENT_REP_ELECTED
:

156 
	`DB_ASSERT
(
dbv
, 
fo
 =
NULL
);

158 
db_p
->
found_ma
 = 
TRUE
;

159 
db_p
->
keov_ndg
 = 
TRUE
;

169 
DB_EVENT_REP_NEWMASTER
:

170 
	`DB_ASSERT
(
dbv
, 
fo
 !
NULL
);

172 
db_p
->
found_ma
 = 
TRUE
;

173 
db_p
->
ma_eid
 = *(*)
fo
;

174 
	`__pmgr_ash_gi
(
dbv
);

181  (
DB_EVENT_NOT_HANDLED
);

182 
	}
}

192 
	$ack_mesge
(
dbv
, 
gi
, 
l
)

193 
DB_ENV
 *
dbv
;

194 
u_t32_t
 
gi
;

195 
DB_LSN
 *
l
;

197 
DB_REP
 *
db_p
;

198 
REPMGR_SITE
 *
se
;

199 
REPMGR_CONNECTION
 *
cn
;

200 
DB_REPMGR_ACK
 
ack
;

201 
DBT
 
cڌ2
, 
c2
;

202 
t
;

204 
db_p
 = 
dbv
->
p_hd
;

210 i(!
	`IS_VALID_EID
(
db_p
->
ma_eid
) ||

211 
db_p
->
ma_eid
 =
SELF_EID
) {

212 
	`RPRINT
(
dbv
, (dbenv,

213 "drpgck wh ma %d", 
db_p
->
ma_eid
));

217 
t
 = 0;

218 
	`LOCK_MUTEX
(
db_p
->
mux
);

219 
se
 = 
	`SITE_FROM_EID
(
db_p
->
ma_eid
);

220 i(
se
->
e
 =
SITE_CONNECTED
 &&

221 !
	`F_ISSET
(
se
->
f
.
cn
, 
CONN_CONNECTING
)) {

223 
ack
.
gi
 = generation;

224 
	`memy
(&
ack
.
l
,, (
DB_LSN
));

225 
cڌ2
.
da
 = &
ack
;

226 
cڌ2
.
size
 = (
ack
);

227 
c2
.
size
 = 0;

229 
cn
 = 
se
->
f
.conn;

230 i((
t
 = 
	`__pmgr_nd_e
(
dbv
, 
cn
, 
REPMGR_ACK
,

231 &
cڌ2
, &
c2
)=
DB_REP_UNAVAIL
)

232 
t
 = 
	`__pmgr_bu_ci
(
dbv
, 
cn
, 
FALSE
);

235 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

236  (
t
);

237 
	}
}

243 
	$hd_wse
(
dbv
, 
c
)

244 
DB_ENV
 *
dbv
;

245 cڡ 
DBT
 *
c
;

247 
ADDRINFO
 *
ai
;

248 
DB_REP
 *
db_p
;

249 
REPMGR_SITE
 *
se
;

250 
SITE_STRING_BUFFER
 
bufr
;

251 
pmgr_Ïddr_t
 *
addr
;

252 
size_t
 
hn
;

253 
u_t16_t
 
pt
;

254 
t
;

255 *
ho
;

257 
db_p
 = 
dbv
->
p_hd
;

267 i(
c
->
size
 < (
pt
) + 1) {

268 
	`__db_rx
(
dbv
, "unexpected cdata size, msg ignored");

271 
	`memy
(&
pt
, 
c
->
da
, (port));

272 
pt
 = 
	`ohs
(port);

274 
ho
 = (*)((
u_t8_t
*)
c
->
da
 + (
pt
));

275 
hn
 = (
c
->
size
 - (
pt
)) - 1;

276 
ho
[
hn
] = '\0';

279 i(
	`rcmp
(
ho
, 
db_p
->
my_addr
.host) == 0 &&

280 
pt
 =
db_p
->
my_addr
.port) {

281 
	`RPRINT
(
dbv
, (dbenv, "repmgr ignores own NEWSITE info"));

285 
	`LOCK_MUTEX
(
db_p
->
mux
);

286 i((
t
 = 
	`__pmgr_add_se
(
dbv
, 
ho
, 
pt
, &
se
)=
EEXIST
) {

287 
	`RPRINT
(
dbv
, (dbenv,

289 
	`__pmgr_fm_se_loc
(
se
, 
bufr
)));

298 
addr
 = &
se
->
t_addr
;

299 i(
addr
->
addss_li
 =
NULL
) {

300 i((
t
 = 
	`__pmgr_gaddr
(
dbv
,

301 
addr
->
ho
,ddr->
pt
, 0, &
ai
)) == 0)

302 
addr
->
addss_li
 = 
ai
;

303 i(
t
 !
DB_REP_UNAVAIL
)

304 
uock
;

307 
t
 = 0;

308 i(
se
->
e
 =
SITE_CONNECTED
)

309 
uock
;

311 i(
t
 != 0)

312 
uock
;

313 
	`RPRINT
(
dbv
, (dbenv, "NEWSITE infodded %s",

314 
	`__pmgr_fm_se_loc
(
se
, 
bufr
)));

321 
t
 = 
	`__pmgr_wake_ma_thad
(
dbv
);

323 
uock
: 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

324  (
t
);

325 
	}
}

331 
	$__pmgr_ash_gi
(
dbv
)

332 
DB_ENV
 *
dbv
;

334 
DB_REP
 *
db_p
;

335 
REP
 *
p
;

337 
db_p
 = 
dbv
->
p_hd
;

338 
p
 = 
db_p
->
gi
;

340 
db_p
->
gi
 = 
p
->
g
;

341 
	}
}

	@../repmgr/repmgr_net.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

13 
	~"dbc/mp.h
"

54 
	sndg_msg
 {

55 
REPMGR_IOVECS
 
	miovecs
;

56 
u_t8_t
 
	mty
;

57 
u_t32_t
 
	mcڌ_size_buf
, 
	mc_size_buf
;

58 
REPMGR_FLAT
 *
	mfmsg
;

61 
__pmgr_nd_brd


62 
__P
((
DB_ENV
 *, cڡ 
DBT
 *, cڡ DBT *, 
u_t
 *, u_int *));

63 
tup_ndg_msg


64 
__P
((
ndg_msg
 *, 
u_t
, cڡ 
DBT
 *, const DBT *));

65 
__pmgr_nd_


66 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *, 
ndg_msg
 *));

67 
queue_msg


68 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *, 
ndg_msg
 *, 
size_t
));

69 
橋n
 
__P
((
DB_ENV
 *, 
ndg_msg
 *));

70 
REPMGR_SITE
 *
__pmgr_avaab_se
 
__P
((
DB_ENV
 *, ));

87 
	$__pmgr_nd
(
dbv
, 
cڌ
, 
c
, 
lp
, 
eid
, 
ags
)

88 
DB_ENV
 *
dbv
;

89 cڡ 
DBT
 *
cڌ
, *
c
;

90 cڡ 
DB_LSN
 *
lp
;

91 
eid
;

92 
u_t32_t
 
ags
;

94 
DB_REP
 *
db_p
;

95 
u_t
 
nses
, 
œrs
, 
avaab
, 
eded
;

96 
t
, 
t_t
;

97 
REPMGR_SITE
 *
se
;

98 
REPMGR_CONNECTION
 *
cn
;

100 
db_p
 = 
dbv
->
p_hd
;

102 
	`LOCK_MUTEX
(
db_p
->
mux
);

103 i(
eid
 =
DB_EID_BROADCAST
) {

104 i((
t
 = 
	`__pmgr_nd_brd
(
dbv
, 
cڌ
, 
c
,

105 &
nses
, &
œrs
)) != 0)

106 
out
;

114 i((
ags
 & (
DB_REP_ANYWHERE
 | 
DB_REP_REREQUEST
)) ==

115 
DB_REP_ANYWHERE
 &&

116 
	`IS_VALID_EID
(
db_p
->

) &&

117 (
se
 = 
	`__pmgr_avaab_se
(
dbv
, 
db_p
->

)) !=

118 
NULL
) {

119 
	`RPRINT
(
dbv
, (dbenv, "sendingequestoeer"));

120 } i((
se
 = 
	`__pmgr_avaab_se
(
dbv
, 
eid
)) ==

121 
NULL
) {

122 
	`RPRINT
(
dbv
, (dbenv,

124 
t
 = 
DB_REP_UNAVAIL
;

125 
out
;

128 
cn
 = 
se
->
f
.conn;

129 i((
t
 = 
	`__pmgr_nd_e
(
dbv
, 
cn
, 
REPMGR_REP_MESSAGE
,

130 
cڌ
, 
c
)=
DB_REP_UNAVAIL
 &&

131 (
t_t
 = 
	`__pmgr_bu_ci
(
dbv
, 
cn
, 
FALSE
)) != 0)

132 
t
 = 
t_t
;

133 i(
t
 != 0)

134 
out
;

136 
nses
 = 1;

137 
œrs
 = 
se
->
iܙy
 > 0 ? 1 : 0;

148 i(
	`LF_ISSET
(
DB_REP_PERMANENT
)) {

149 
db_p
->
rm_picy
) {

150 
DB_REPMGR_ACKS_NONE
:

151 
out
;

153 
DB_REPMGR_ACKS_ONE
:

154 
eded
 = 1;

155 
avaab
 = 
nses
;

158 
DB_REPMGR_ACKS_ALL
:

160 
eded
 = 
	`__pmgr_g_nses
(
db_p
) - 1;

161 
avaab
 = 
nses
;

164 
DB_REPMGR_ACKS_ONE_PEER
:

165 
eded
 = 1;

166 
avaab
 = 
œrs
;

169 
DB_REPMGR_ACKS_ALL_PEERS
:

175 
eded
 = 1;

176 
avaab
 = 
œrs
;

179 
DB_REPMGR_ACKS_QUORUM
:

184 
eded
 = (
	`__pmgr_g_nses
(
db_p
) - 1) / 2;

185 
avaab
 = 
œrs
;

189 
	`COMPQUIET
(
avaab
, 0);

190 
	`COMPQUIET
(
eded
, 0);

191 ()
	`__db_unknown_th
(
dbv
, "__repmgr_send");

194 i(
avaab
 < 
eded
) {

195 
t
 = 
DB_REP_UNAVAIL
;

196 
out
;

199 
	`RPRINT
(
dbv
, (dbenv,

200 "wawacknowdgemt:d %u", 
eded
));

201 
t
 = 
	`__pmgr_awa_ack
(
dbv
, 
lp
);

204 
out
: 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

205 i(
t
 !0 && 
	`LF_ISSET
(
DB_REP_PERMANENT
)) {

206 
	`STAT
(
db_p
->
gi
->
m
.
_rm_ed
++);

207 
	`DB_EVENT
(
dbv
, 
DB_EVENT_REP_PERM_FAILED
, 
NULL
);

209  (
t
);

210 
	}
}

212 
REPMGR_SITE
 *

213 
	$__pmgr_avaab_se
(
dbv
, 
eid
)

214 
DB_ENV
 *
dbv
;

215 
eid
;

217 
DB_REP
 *
db_p
;

218 
REPMGR_SITE
 *
se
;

220 
db_p
 = 
dbv
->
p_hd
;

221 
se
 = 
	`SITE_FROM_EID
(
eid
);

222 i(
se
->
e
 !
SITE_CONNECTED
)

223  (
NULL
);

225 i(
	`F_ISSET
(
se
->
f
.
cn
, 
CONN_CONNECTING
))

226  (
NULL
);

227  (
se
);

228 
	}
}

244 
	$__pmgr_nd_brd
(
dbv
, 
cڌ
, 
c
, 
nse
, 
œr
)

245 
DB_ENV
 *
dbv
;

246 cڡ 
DBT
 *
cڌ
, *
c
;

247 
u_t
 *
nse
, *
œr
;

249 
DB_REP
 *
db_p
;

250 
ndg_msg
 
msg
;

251 
REPMGR_CONNECTION
 *
cn
;

252 
REPMGR_SITE
 *
se
;

253 
u_t
 
nses
, 
œrs
;

254 
t
;

256 
db_p
 = 
dbv
->
p_hd
;

258 
	`tup_ndg_msg
(&
msg
, 
REPMGR_REP_MESSAGE
, 
cڌ
, 
c
);

259 
nses
 = 
œrs
 = 0;

266 
	`TAILQ_FOREACH
(
cn
, &
db_p
->
cis
, 
s
) {

267 i(
	`F_ISSET
(
cn
, 
CONN_CONNECTING
 | 
CONN_DEFUNCT
) ||

268 !
	`IS_VALID_EID
(
cn
->
eid
))

271 i((
t
 = 
	`__pmgr_nd_
(
dbv
, 
cn
, &
msg
)) == 0) {

272 
se
 = 
	`SITE_FROM_EID
(
cn
->
eid
);

273 
nses
++;

274 i(
se
->
iܙy
 > 0)

275 
œrs
++;

276 } i(
t
 =
DB_REP_UNAVAIL
) {

277 i((
t
 = 
	`__pmgr_bu_ci
(

278 
dbv
, 
cn
, 
FALSE
)) != 0)

279  (
t
);

281  (
t
);

284 *
nse
 = 
nses
;

285 *
œr
 = 
œrs
;

287 
	}
}

307 
	$__pmgr_nd_e
(
dbv
, 
cn
, 
msg_ty
, 
cڌ
, 
c
)

308 
DB_ENV
 *
dbv
;

309 
REPMGR_CONNECTION
 *
cn
;

310 
u_t
 
msg_ty
;

311 cڡ 
DBT
 *
cڌ
, *
c
;

313 
ndg_msg
 
msg
;

315 
	`tup_ndg_msg
(&
msg
, 
msg_ty
, 
cڌ
, 
c
);

316  (
	`__pmgr_nd_
(
dbv
, 
cn
, &
msg
));

317 
	}
}

325 
	$__pmgr_nd_
(
dbv
, 
cn
, 
msg
)

326 
DB_ENV
 *
dbv
;

327 
REPMGR_CONNECTION
 *
cn
;

328 
ndg_msg
 *
msg
;

330 
	#OUT_QUEUE_LIMIT
 10

	)

331 
REPMGR_IOVECS
 
iovecs
;

332 
SITE_STRING_BUFFER
 
bufr
;

333 
t
;

334 
size_t
 
nw
;

335 
size_t
 
tٮ_wrn
;

337 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
cn
, 
CONN_CONNECTING
));

338 i(!
	`STAILQ_EMPTY
(&
cn
->
outbound_queue
)) {

344 
	`RPRINT
(
dbv
, (dbenv, "msgo %so be queued",

345 
	`__pmgr_fm_eid_loc
(
dbv
->
p_hd
,

346 
cn
->
eid
, 
bufr
)));

347 i(
cn
->
out_queue_ngth
 < 
OUT_QUEUE_LIMIT
)

348  (
	`queue_msg
(
dbv
, 
cn
, 
msg
, 0));

350 
	`RPRINT
(
dbv
, (dbenv, "queueimitxceeded"));

351 
	`STAT
(
dbv
->
p_hd
->

352 
gi
->
m
.
_msgs_drݳd
++);

363 
	`memy
(&
iovecs
, &
msg
->iovecs, (iovecs));

364 
tٮ_wrn
 = 0;

365 (
t
 = 
	`__pmgr_wrev
(
cn
->
fd
, &
iovecs
.
ves
[iovecs.
offt
],

366 
iovecs
.
cou
-iovecs.
offt
, &
nw
)) == 0) {

367 
tٮ_wrn
 +
nw
;

368 i(
	`__pmgr_upde_csumed
(&
iovecs
, 
nw
))

372 i(
t
 !
WOULDBLOCK
) {

373 
	`__db_r
(
dbv
, 
t
, "socket writing failure");

374  (
DB_REP_UNAVAIL
);

377 
	`RPRINT
(
dbv
, (dbenv, "wrote only %lu byteso %s",

378 (
u_lg
)
tٮ_wrn
,

379 
	`__pmgr_fm_eid_loc
(
dbv
->
p_hd
, 
cn
->
eid
, 
bufr
)));

385 i((
t
 = 
	`queue_msg
(
dbv
, 
cn
, 
msg
, 
tٮ_wrn
)) != 0)

386  (
t
);

388 
	`STAT
(
dbv
->
p_hd
->
gi
->
m
.
_msgs_queued
++);

397 #ifde
DB_WIN32


398 i(
	`WSAEvtSe
(
cn
->
fd
, cn->
evt_obje
,

399 
FD_READ
|
FD_WRITE
|
FD_CLOSE
=
SOCKET_ERROR
) {

400 
t
 = 
t_o
;

401 
	`__db_r
(
dbv
, 
t
, "can'tdd FD_WRITEvent bit");

402  (
t
);

405  (
	`__pmgr_wake_ma_thad
(
dbv
));

406 
	}
}

418 
	$__pmgr_is_rmt
(
dbv
, 
lp
)

419 
DB_ENV
 *
dbv
;

420 cڡ 
DB_LSN
 *
lp
;

422 
DB_REP
 *
db_p
;

423 
REPMGR_SITE
 *
se
;

424 
u_t
 
eid
, 
nses
, 
œrs
;

425 
is_rm
, 
has_missg_
;

427 
db_p
 = 
dbv
->
p_hd
;

429 i(
db_p
->
rm_picy
 =
DB_REPMGR_ACKS_NONE
)

430  (
TRUE
);

432 
nses
 = 
œrs
 = 0;

433 
has_missg_
 = 
FALSE
;

434 
eid
 = 0;id < 
db_p
->
se_t
;id++) {

435 
se
 = 
	`SITE_FROM_EID
(
eid
);

436 i(
se
->
iܙy
 == -1) {

441 
has_missg_
 = 
TRUE
;

445 i(
	`log_com
(&
se
->
max_ack
, 
lp
) >= 0) {

446 
nses
++;

447 i(
se
->
iܙy
 > 0)

448 
œrs
++;

451 i(
se
->
iܙy
 > 0)

452 
has_missg_
 = 
TRUE
;

456 
db_p
->
rm_picy
) {

457 
DB_REPMGR_ACKS_ONE
:

458 
is_rm
 = (
nses
 >= 1);

460 
DB_REPMGR_ACKS_ONE_PEER
:

461 
is_rm
 = (
œrs
 >= 1);

463 
DB_REPMGR_ACKS_QUORUM
:

471 i(
	`__pmgr_g_nses
(
db_p
) == 2) {

477 
is_rm
 = (
œrs
 >= 1);

479 
is_rm
 = (
œrs
 >(
	`__pmgr_g_nses
(
db_p
)-1)/2);

481 
DB_REPMGR_ACKS_ALL
:

483 
is_rm
 = (
nses
 >
	`__pmgr_g_nses
(
db_p
) - 1);

485 
DB_REPMGR_ACKS_ALL_PEERS
:

486 i(
db_p
->
se_t
 < 
	`__pmgr_g_nses
(db_rep) - 1) {

488 
has_missg_
 = 
TRUE
;

490 
is_rm
 = !
has_missg_
;

493 
is_rm
 = 
FALSE
;

494 ()
	`__db_unknown_th
(
dbv
, "__repmgr_is_permanent");

496  (
is_rm
);

497 
	}
}

515 
	$__pmgr_bu_ci
(
dbv
, 
cn
, 
do_o
)

516 
DB_ENV
 *
dbv
;

517 
REPMGR_CONNECTION
 *
cn
;

518 
do_o
;

520 
DB_REP
 *
db_p
;

521 
cg
, 
t
, 
eid
;

523 
db_p
 = 
dbv
->
p_hd
;

524 
t
 = 0;

526 
	`DB_ASSERT
(
dbv
, !
	`TAILQ_EMPTY
(&
db_p
->
cis
));

527 
eid
 = 
cn
->eid;

528 
cg
 = 
	`F_ISSET
(
cn
, 
CONN_CONNECTING
);

529 i(
do_o
)

530 
	`__pmgr_nup_ci
(
dbv
, 
cn
);

532 
	`F_SET
(
cn
, 
CONN_DEFUNCT
);

533 
cn
->
eid
 = -1;

542 i(
	`IS_VALID_EID
(
eid
)) {

544 i((
t
 = 
	`__pmgr_schedu_ci_m
(

545 
dbv
, (
u_t
)
eid
, 
FALSE
)) != 0)

546  (
t
);

553 i(!
cg
 && 
eid
 =
db_p
->
ma_eid
) {

554 ()
	`__memp_t_cfig
(

555 
dbv
, 
DB_MEMP_SYNC_INTERRUPT
, 1);

556 i((
t
 = 
	`__pmgr__ei
(

557 
dbv
, 
ELECT_FAILURE_ELECTION
)) != 0)

558  (
t
);

560 } i(!
do_o
) {

565 
t
 = 
	`__pmgr_wake_ma_thad
(
dbv
);

567  (
t
);

568 
	}
}

575 
	$__pmgr_nup_ci
(
dbv
, 
cn
)

576 
DB_ENV
 *
dbv
;

577 
REPMGR_CONNECTION
 *
cn
;

579 
DB_REP
 *
db_p
;

580 
QUEUED_OUTPUT
 *
out
;

581 
REPMGR_FLAT
 *
msg
;

582 
DBT
 *
dbt
;

584 
db_p
 = 
dbv
->
p_hd
;

586 
	`TAILQ_REMOVE
(&
db_p
->
cis
, 
cn
, 
s
);

587 i(
cn
->
fd
 !
INVALID_SOCKET
) {

588 ()
	`osock
(
cn
->
fd
);

589 #ifde
DB_WIN32


590 ()
	`WSACloEvt
(
cn
->
evt_obje
);

597 i(
cn
->
adg_pha
 =
DATA_PHASE
) {

598 i(
cn
->
msg_ty
 =
REPMGR_REP_MESSAGE
)

599 
	`__os_
(
dbv
, 
cn
->
put
.
p_mesge
);

601 
dbt
 = &
cn
->
put
.
pmgr_msg
.
l
;

602 
	`__os_
(
dbv
, 
dbt
->
da
);

603 
dbt
 = &
cn
->
put
.
pmgr_msg
.
c
;

604 i(
dbt
->
size
 > 0)

605 
	`__os_
(
dbv
, 
dbt
->
da
);

608 !
	`STAILQ_EMPTY
(&
cn
->
outbound_queue
)) {

609 
out
 = 
	`STAILQ_FIRST
(&
cn
->
outbound_queue
);

610 
	`STAILQ_REMOVE_HEAD
(&
cn
->
outbound_queue
, 
s
);

611 
msg
 = 
out
->msg;

612 i(--
msg
->
f_cou
 <= 0)

613 
	`__os_
(
dbv
, 
msg
);

614 
	`__os_
(
dbv
, 
out
);

617 
	`__os_
(
dbv
, 
cn
);

618 
	}
}

621 
	$queue_msg
(
dbv
, 
cn
, 
msg
, 
offt
)

622 
DB_ENV
 *
dbv
;

623 
REPMGR_CONNECTION
 *
cn
;

624 
ndg_msg
 *
msg
;

625 
size_t
 
offt
;

627 
QUEUED_OUTPUT
 *
q_emt
;

628 
t
;

630 i(
msg
->
fmsg
 =
NULL
 && ((
t
 = 
	`橋n
(
dbv
, msg)) != 0))

631  (
t
);

632 i((
t
 = 
	`__os_mloc
(
dbv
, (
QUEUED_OUTPUT
), &
q_emt
)) != 0)

633  (
t
);

634 
q_emt
->
msg
 = msg->
fmsg
;

635 
msg
->
fmsg
->
f_cou
++;

636 
q_emt
->
offt
 = offset;

639 
	`STAILQ_INSERT_TAIL
(&
cn
->
outbound_queue
, 
q_emt
, 
s
);

640 
cn
->
out_queue_ngth
++;

642 
	}
}

649 
	$tup_ndg_msg
(
msg
, 
ty
, 
cڌ
, 
c
)

650 
ndg_msg
 *
msg
;

651 
u_t
 
ty
;

652 cڡ 
DBT
 *
cڌ
, *
c
;

654 
u_t32_t
 
c_size
;

660 
	`__pmgr_iovec_
(&
msg
->
iovecs
);

661 
msg
->
ty
 =ype;

662 
	`__pmgr_add_bufr
(&
msg
->
iovecs
, &msg->
ty
, (msg->type));

664 
msg
->
cڌ_size_buf
 = 
	`htl
(
cڌ
->
size
);

665 
	`__pmgr_add_bufr
(&
msg
->
iovecs
,

666 &
msg
->
cڌ_size_buf
, (msg->control_size_buf));

668 
c_size
 = 
c
 =
NULL
 ? 0 :ec->
size
;

669 
msg
->
c_size_buf
 = 
	`htl
(
c_size
);

670 
	`__pmgr_add_bufr
(

671 &
msg
->
iovecs
, &msg->
c_size_buf
, (msg->rec_size_buf));

673 i(
cڌ
->
size
 > 0)

674 
	`__pmgr_add_dbt
(&
msg
->
iovecs
, 
cڌ
);

676 i(
c_size
 > 0)

677 
	`__pmgr_add_dbt
(&
msg
->
iovecs
, 
c
);

679 
msg
->
fmsg
 = 
NULL
;

680 
	}
}

688 
	$橋n
(
dbv
, 
msg
)

689 
DB_ENV
 *
dbv
;

690 
ndg_msg
 *
msg
;

692 
u_t8_t
 *
p
;

693 
size_t
 
msg_size
;

694 
i
, 
t
;

696 
	`DB_ASSERT
(
dbv
, 
msg
->
fmsg
 =
NULL
);

698 
msg_size
 = 
msg
->
iovecs
.
tٮ_bys
;

699 i((
t
 = 
	`__os_mloc
(
dbv
, (*
msg
->
fmsg
+ 
msg_size
,

700 &
msg
->
fmsg
)) != 0)

701  (
t
);

702 
msg
->
fmsg
->
ngth
 = 
msg_size
;

703 
msg
->
fmsg
->
f_cou
 = 0;

704 
p
 = &
msg
->
fmsg
->
da
[0];

706 
i
 = 0; i < 
msg
->
iovecs
.
cou
; i++) {

707 
	`memy
(
p
, 
msg
->
iovecs
.
ves
[
i
].
iov_ba
,

708 
msg
->
iovecs
.
ves
[
i
].
iov_n
);

709 
p
 = &p[
msg
->
iovecs
.
ves
[
i
].
iov_n
];

711 
	`__pmgr_iovec_
(&
msg
->
iovecs
);

712 
	`__pmgr_add_bufr
(&
msg
->
iovecs
, &msg->
fmsg
->
da
[0], 
msg_size
);

714 
	}
}

720 
	$__pmgr_fd_se
(
dbv
, 
ho
, 
pt
)

721 
DB_ENV
 *
dbv
;

722 cڡ *
ho
;

723 
u_t
 
pt
;

725 
DB_REP
 *
db_p
;

726 
REPMGR_SITE
 *
se
;

727 
u_t
 
i
;

729 
db_p
 = 
dbv
->
p_hd
;

730 
i
 = 0; i < 
db_p
->
se_t
; i++) {

731 
se
 = &
db_p
->
ses
[
i
];

733 i(
	`rcmp
(
se
->
t_addr
.
ho
, host) == 0 &&

734 
se
->
t_addr
.
pt
 ==ort)

735  (()
i
);

739 
	}
}

753 
	$__pmgr_ck_Ïddr
(
dbv
, 
ho
, 
pt
, 
li
, 
addr
)

754 
DB_ENV
 *
dbv
;

755 cڡ *
ho
;

756 
u_t
 
pt
;

757 
ADDRINFO
 *
li
;

758 
pmgr_Ïddr_t
 *
addr
;

760 
t
;

762 
	`DB_ASSERT
(
dbv
, 
ho
 !
NULL
);

764 i((
t
 = 
	`__os_rdup
(
dbv
, 
ho
, &
addr
->host)) != 0)

765  (
t
);

766 
addr
->
pt
 = (
u_t16_t
)port;

767 
addr
->
addss_li
 = 
li
;

768 
addr
->
cut
 = 
NULL
;

770 
	}
}

777 
	$__pmgr_gaddr
(
dbv
, 
ho
, 
pt
, 
ags
, 
su
)

778 
DB_ENV
 *
dbv
;

779 cڡ *
ho
;

780 
u_t
 
pt
;

781 
ags
;

782 
ADDRINFO
 **
su
;

784 
ADDRINFO
 *
sw
, 
hts
;

785 
bufr
[10];

786 #ifde
DB_WIN32


787 
t
;

794 i(
pt
 > 
UINT16_MAX
) {

795 
	`__db_rx
(
dbv
, "port %uargerhan maxort %u",

796 
pt
, 
UINT16_MAX
);

797  (
EINVAL
);

800 #ifde
DB_WIN32


801 i(!
dbv
->
p_hd
->
w_ed
 &&

802 (
t
 = 
	`__pmgr_w_
(
dbv
)) != 0)

803  (
t
);

806 
	`memt
(&
hts
, 0, (hints));

807 
hts
.
ai_my
 = 
AF_UNSPEC
;

808 
hts
.
ai_sockty
 = 
SOCK_STREAM
;

809 
hts
.
ai_ags
 = 
ags
;

810 ()
	`tf
(
bufr
, (bufr), "%u", 
pt
);

819 i(
	`__db_gaddrfo
(
dbv
, 
ho
, 
pt
, 
bufr
, &
hts
, &
sw
) != 0)

820  (
DB_REP_UNAVAIL
);

821 *
su
 = 
sw
;

824 
	}
}

839 
	$__pmgr_add_se
(
dbv
, 
ho
, 
pt
, 
ws
)

840 
DB_ENV
 *
dbv
;

841 cڡ *
ho
;

842 
u_t
 
pt
;

843 
REPMGR_SITE
 **
ws
;

845 
DB_REP
 *
db_p
;

846 
ADDRINFO
 *
addss_li
;

847 
pmgr_Ïddr_t
 
addr
;

848 
REPMGR_SITE
 *
se
;

849 
t
, 
eid
;

851 
t
 = 0;

852 
db_p
 = 
dbv
->
p_hd
;

854 i(
	`IS_VALID_EID
(
eid
 = 
	`__pmgr_fd_se
(
dbv
, 
ho
, 
pt
))) {

855 
se
 = 
	`SITE_FROM_EID
(
eid
);

856 
t
 = 
EEXIST
;

857 
out
;

860 i((
t
 = 
	`__pmgr_gaddr
(

861 
dbv
, 
ho
, 
pt
, 0, &
addss_li
)=
DB_REP_UNAVAIL
) {

863 
addss_li
 = 
NULL
;

864 } i(
t
 != 0)

865  (
t
);

867 i((
t
 = 
	`__pmgr_ck_Ïddr
(

868 
dbv
, 
ho
, 
pt
, 
addss_li
, &
addr
)) != 0) {

869 
	`__db_addrfo
(
dbv
, 
addss_li
);

870  (
t
);

873 i((
t
 = 
	`__pmgr_w_se
(
dbv
, &
se
, &
addr
, 
SITE_IDLE
)) != 0) {

874 
	`__pmgr_nup_Ïddr
(
dbv
, &
addr
);

875  (
t
);

878 i(
db_p
->

 !
NULL
 &&

879 (
t
 = 
	`__pmgr_schedu_ci_m
(

880 
dbv
, (
u_t
)
	`EID_FROM_SITE
(
se
), 
TRUE
)) != 0)

881  (
t
);

884 
out
:

885 i(
ws
 !
NULL
)

886 *
ws
 = 
se
;

887  (
t
);

888 
	}
}

896 
	$__pmgr_t_
(
dbv
, 
db_p
)

897 
DB_ENV
 *
dbv
;

898 
DB_REP
 *
db_p
;

900 
	`COMPQUIET
(
dbv
, 
NULL
);

902 
db_p
->
li_fd
 = 
INVALID_SOCKET
;

903 
db_p
->
ma_eid
 = 
DB_EID_INVALID
;

905 
	`TAILQ_INIT
(&
db_p
->
cis
);

906 
	`TAILQ_INIT
(&
db_p
->
s
);

909 
	}
}

920 
	$__pmgr_li
(
dbv
)

921 
DB_ENV
 *
dbv
;

923 
DB_REP
 *
db_p
;

924 
ADDRINFO
 *
ai
;

925 *
why
;

926 
sockt
, 
t
;

927 
sock_t
 
s
;

929 
db_p
 = 
dbv
->
p_hd
;

932 
s
 = 
INVALID_SOCKET
;

933 
ai
 = 
	`ADDR_LIST_FIRST
(&
db_p
->
my_addr
);

940 
	`COMPQUIET
(
why
, "");

941 
	`DB_ASSERT
(
dbv
, 
ai
 !
NULL
);

942 ; 
ai
 !
NULL
;
	`ADDR_LIST_NEXT
(&
db_p
->
my_addr
)) {

944 i((
s
 = 
	`sock
(
ai
->
ai_my
,

945 
ai
->
ai_sockty
,i->
ai_oc
)=
INVALID_SOCKET
) {

946 
why
 = "can't createisten socket";

955 
sockt
 = 1;

956 i(
	`tsockt
(
s
, 
SOL_SOCKET
, 
SO_REUSEADDR
, (
sockt_t
)&
sockt
,

957 (
sockt
)) != 0) {

958 
why
 = "can't set REUSEADDR socket option";

962 i(
	`bd
(
s
, 
ai
->
ai_addr
, (
sockn_t
i->
ai_add
) != 0) {

963 
why
 = "can't bind socketoisteningddress";

964 ()
	`osock
(
s
);

965 
s
 = 
INVALID_SOCKET
;

969 i(
	`li
(
s
, 5) != 0) {

970 
why
 = "listen()";

974 i((
t
 = 
	`__pmgr_t_nblockg
(
s
)) != 0) {

975 
	`__db_r
(
dbv
, 
t
, "can't unblockisten socket");

976 
n
;

979 
db_p
->
li_fd
 = 
s
;

983 
t
 = 
t_o
;

984 
	`__db_r
(
dbv
, 
t
, 
why
);

985 
n
: i(
s
 !
INVALID_SOCKET
)

986 ()
	`osock
(
s
);

987  (
t
);

988 
	}
}

994 
	$__pmgr_t_o
(
dbv
)

995 
DB_ENV
 *
dbv
;

997 
DB_REP
 *
db_p
;

998 
REPMGR_CONNECTION
 *
cn
;

999 #ide
DB_WIN32


1000 
sigai
 
siga
;

1002 
t
;

1004 
db_p
 = 
dbv
->
p_hd
;

1005 i(
db_p
->
li_fd
 =
INVALID_SOCKET
)

1008 
	`TAILQ_FOREACH
(
cn
, &
db_p
->
cis
, 
s
) {

1009 i(
cn
->
fd
 !
INVALID_SOCKET
) {

1010 ()
	`osock
(
cn
->
fd
);

1011 
cn
->
fd
 = 
INVALID_SOCKET
;

1012 #ifde
DB_WIN32


1013 ()
	`WSACloEvt
(
cn
->
evt_obje
);

1018 
t
 = 0;

1019 i(
	`osock
(
db_p
->
li_fd
=
SOCKET_ERROR
)

1020 
t
 = 
t_o
;

1022 #ifde
DB_WIN32


1024 i(
	`WSAC˪up
(=
SOCKET_ERROR
 && 
t
 == 0)

1025 
t
 = 
t_o
;

1026 
db_p
->
w_ed
 = 
FALSE
;

1029 i(
db_p
->
chg_sig_hdr
) {

1030 
	`memt
(&
siga
, 0, (sigact));

1031 
siga
.
_hdr
 = 
SIG_DFL
;

1032 i(
	`sigai
(
SIGPIPE
, &
siga
, 
NULL
=-1 && 
t
 == 0)

1033 
t
 = 
o
;

1036 
db_p
->
li_fd
 = 
INVALID_SOCKET
;

1037  (
t
);

1038 
	}
}

1044 
	$__pmgr_t_deroy
(
dbv
, 
db_p
)

1045 
DB_ENV
 *
dbv
;

1046 
DB_REP
 *
db_p
;

1048 
REPMGR_CONNECTION
 *
cn
;

1049 
REPMGR_RETRY
 *
y
;

1050 
REPMGR_SITE
 *
se
;

1051 
u_t
 
i
;

1053 
	`__pmgr_nup_Ïddr
(
dbv
, &
db_p
->
my_addr
);

1055 i(
db_p
->
ses
 =
NULL
)

1058 !
	`TAILQ_EMPTY
(&
db_p
->
s
)) {

1059 
y
 = 
	`TAILQ_FIRST
(&
db_p
->
s
);

1060 
	`TAILQ_REMOVE
(&
db_p
->
s
, 
y
, 
s
);

1061 
	`__os_
(
dbv
, 
y
);

1064 !
	`TAILQ_EMPTY
(&
db_p
->
cis
)) {

1065 
cn
 = 
	`TAILQ_FIRST
(&
db_p
->
cis
);

1066 
	`__pmgr_nup_ci
(
dbv
, 
cn
);

1069 
i
 = 0; i < 
db_p
->
se_t
; i++) {

1070 
se
 = &
db_p
->
ses
[
i
];

1071 
	`__pmgr_nup_Ïddr
(
dbv
, &
se
->
t_addr
);

1073 
	`__os_
(
dbv
, 
db_p
->
ses
);

1074 
db_p
->
ses
 = 
NULL
;

1075 
	}
}

	@../repmgr/repmgr_posix.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	#__INCLUDE_SELECT_H
 1

	)

13 
	~"db_t.h
"

20 #ifde
_POSIX_THREAD_ATTR_STACKSIZE


21 
size_t
 
	g__pmgr_guesimed_max
 = (128 * 1024);

24 
fish_cg
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *));

33 
	$__pmgr_thad_t
(
dbv
, 
ruab
)

34 
DB_ENV
 *
dbv
;

35 
REPMGR_RUNNABLE
 *
ruab
;

37 
had__t
 *
p
;

38 #ifde
_POSIX_THREAD_ATTR_STACKSIZE


39 
had__t
 
ibus
;

40 
size_t
 
size
;

41 
t
;

44 
ruab
->
fished
 = 
FALSE
;

46 #ifde
_POSIX_THREAD_ATTR_STACKSIZE


47 
p
 = &
ibus
;

48 i((
t
 = 
	`had__
(&
ibus
)) != 0) {

49 
	`__db_r
(
dbv
,

50 
t
, "pthread_attr_init inepmgr_thread_start");

51  (
t
);

58 
size
 = 
__pmgr_guesimed_max
;

59 i((
size_t
) > 4)

60 
size
 *= 2;

61 #ifde
PTHREAD_STACK_MIN


62 i(
size
 < 
PTHREAD_STACK_MIN
)

63 
size
 = 
PTHREAD_STACK_MIN
;

65 i((
t
 = 
	`had__tacksize
(&
ibus
, 
size
)) != 0) {

66 
	`__db_r
(
dbv
,

67 
t
, "pthread_attr_setstacksize inepmgr_thread_start");

68  (
t
);

71 
p
 = 
NULL
;

74  (
	`had_
(&
ruab
->
thad_id
, 
p
,

75 
ruab
->
run
, 
dbv
));

76 
	}
}

82 
	$__pmgr_thad_jo
(
thad
)

83 
REPMGR_RUNNABLE
 *
thad
;

85  (
	`had_jo
(
thad
->
thad_id
, 
NULL
));

86 
	}
}

92 
	$__pmgr_t_nblockg
(
fd
)

93 
sock_t
 
fd
;

95 
ags
;

97 i((
ags
 = 
	`f
(
fd
, 
F_GETFL
, 0)) < 0)

98  (
o
);

99 i(
	`f
(
fd
, 
F_SETFL
, 
ags
 | 
O_NONBLOCK
) < 0)

100  (
o
);

102 
	}
}

114 
	$__pmgr_wake_wag_nds
(
dbv
)

115 
DB_ENV
 *
dbv
;

117  (
	`had_cd_brd
(&
dbv
->
p_hd
->
ack_cdi
));

118 
	}
}

130 
	$__pmgr_awa_ack
(
dbv
, 
lp
)

131 
DB_ENV
 *
dbv
;

132 cڡ 
DB_LSN
 *
lp
;

134 
DB_REP
 *
db_p
;

135 
timeec
 
ddle
;

136 
t
, 
timed
;

138 
db_p
 = 
dbv
->
p_hd
;

140 i((
timed
 = (
db_p
->
ack_timeout
 > 0)))

141 
	`__pmgr_compu_wa_ddle
(
dbv
, &
ddle
,

142 
db_p
->
ack_timeout
);

144 
	`COMPQUIET
(
ddle
.
tv_c
, 0);

146 !
	`__pmgr_is_rmt
(
dbv
, 
lp
)) {

147 i(
timed
)

148 
t
 = 
	`had_cd_timedwa
(&
db_p
->
ack_cdi
,

149 &
db_p
->
mux
, &
ddle
);

151 
t
 = 
	`had_cd_wa
(&
db_p
->
ack_cdi
,

152 &
db_p
->
mux
);

153 i(
db_p
->
fished
)

154  (
DB_REP_UNAVAIL
);

155 i(
t
 != 0)

156  (
t
);

159 
	}
}

170 
	$__pmgr_compu_wa_ddle
(
dbv
, 
su
, 
wa
)

171 
DB_ENV
 *
dbv
;

172 
timeec
 *
su
;

173 
db_timeout_t
 
wa
;

175 
db_timeec
 
v
;

183 
	`__os_gtime
(
dbv
, (
db_timeec
 *)
su
);

186 
	`DB_TIMEOUT_TO_TIMESPEC
(
wa
, &
v
);

188 
	`timeedd
(
su
, &
v
);

189 
	}
}

201 
	$__pmgr__sync
(
dbv
, 
db_p
)

202 
DB_ENV
 *
dbv
;

203 
DB_REP
 *
db_p
;

205 
t
, 
mux_ed
, 
ack_ed
, 
e_ed
, 
queue_ed
,

206 
fe_desc
[2];

208 
	`COMPQUIET
(
dbv
, 
NULL
);

210 
mux_ed
 = 
ack_ed
 = 
e_ed
 = 
queue_ed
 = 
FALSE
;

212 i((
t
 = 
	`had_mux_
(&
db_p
->
mux
, 
NULL
)) != 0)

213 
r
;

214 
mux_ed
 = 
TRUE
;

216 i((
t
 = 
	`had_cd_
(&
db_p
->
ack_cdi
, 
NULL
)) != 0)

217 
r
;

218 
ack_ed
 = 
TRUE
;

220 i((
t
 = 
	`had_cd_
(&
db_p
->
check_ei
, 
NULL
)) != 0)

221 
r
;

222 
e_ed
 = 
TRUE
;

224 i((
t
 = 
	`had_cd_
(&
db_p
->
queue_nemy
, 
NULL
)) != 0)

225 
r
;

226 
queue_ed
 = 
TRUE
;

228 i((
t
 = 
	`pe
(
fe_desc
)) == -1) {

229 
t
 = 
o
;

230 
r
;

233 
db_p
->
ad_pe
 = 
fe_desc
[0];

234 
db_p
->
wre_pe
 = 
fe_desc
[1];

236 
r
:

237 i(
queue_ed
)

238 ()
	`had_cd_deroy
(&
db_p
->
queue_nemy
);

239 i(
e_ed
)

240 ()
	`had_cd_deroy
(&
db_p
->
check_ei
);

241 i(
ack_ed
)

242 ()
	`had_cd_deroy
(&
db_p
->
ack_cdi
);

243 i(
mux_ed
)

244 ()
	`had_mux_deroy
(&
db_p
->
mux
);

245 
db_p
->
ad_pe
 = db_p->
wre_pe
 = -1;

247  (
t
);

248 
	}
}

257 
	$__pmgr_o_sync
(
dbv
)

258 
DB_ENV
 *
dbv
;

260 
DB_REP
 *
db_p
;

261 
t
, 
t_t
;

263 
db_p
 = 
dbv
->
p_hd
;

265 i(!(
	`REPMGR_SYNC_INITED
(
db_p
)))

268 
t
 = 
	`had_cd_deroy
(&
db_p
->
queue_nemy
);

270 i((
t_t
 = 
	`had_cd_deroy
(&
db_p
->
check_ei
)) != 0 &&

271 
t
 == 0)

272 
t
 = 
t_t
;

274 i((
t_t
 = 
	`had_cd_deroy
(&
db_p
->
ack_cdi
)) != 0 &&

275 
t
 == 0)

276 
t
 = 
t_t
;

278 i((
t_t
 = 
	`had_mux_deroy
(&
db_p
->
mux
)) != 0 &&

279 
t
 == 0)

280 
t
 = 
t_t
;

282 i(
	`o
(
db_p
->
ad_pe
=-1 && 
t
 == 0)

283 
t
 = 
o
;

284 i(
	`o
(
db_p
->
wre_pe
=-1 && 
t
 == 0)

285 
t
 = 
o
;

287 
db_p
->
ad_pe
 = db_p->
wre_pe
 = -1;

288  (
t
);

289 
	}
}

299 
	$__pmgr_t_
(
dbv
, 
db_p
)

300 
DB_ENV
 *
dbv
;

301 
DB_REP
 *
db_p
;

303 
t
;

304 
sigai
 
siga
;

306 i((
t
 = 
	`__pmgr_li
(
dbv
)) != 0)

307  (
t
);

313 i(
	`sigai
(
SIGPIPE
, 
NULL
, &
siga
) == -1) {

314 
t
 = 
o
;

315 
	`__db_r
(
dbv
, 
t
, "can'tccess signal handler");

316 
r
;

322 i((
db_p
->
chg_sig_hdr
 = (
siga
.
_hdr
 =
SIG_DFL
))) {

323 
siga
.
_hdr
 = 
SIG_IGN
;

324 
siga
.
_ags
 = 0;

325 i(
	`sigai
(
SIGPIPE
, &
siga
, 
NULL
) == -1) {

326 
t
 = 
o
;

327 
	`__db_r
(
dbv
, 
t
, "can'tccess signal handler");

328 
r
;

333 
r
:

334 ()
	`osock
(
db_p
->
li_fd
);

335 
db_p
->
li_fd
 = 
INVALID_SOCKET
;

336  (
t
);

337 
	}
}

343 
	$__pmgr_lock_mux
(
mux
)

344 
mgr_mux_t
 *
mux
;

346  (
	`had_mux_lock
(
mux
));

347 
	}
}

353 
	$__pmgr_uock_mux
(
mux
)

354 
mgr_mux_t
 *
mux
;

356  (
	`had_mux_uock
(
mux
));

357 
	}
}

368 
	$__pmgr_sigl
(
v
)

369 
cd_v_t
 *
v
;

371  (
	`had_cd_brd
(
v
));

372 
	}
}

378 
	$__pmgr_wake_ma_thad
(
dbv
)

379 
DB_ENV
 *
dbv
;

381 
DB_REP
 *
db_p
;

382 
u_t8_t
 
y_vue
;

384 
	`COMPQUIET
(
y_vue
, 0);

385 
db_p
 = 
dbv
->
p_hd
;

392 i(
	`wre
(
db_p
->
wre_pe
, &
y_vue
, 1) == -1)

393  (
o
);

395 
	}
}

401 
	$__pmgr_wrev
(
fd
, 
iovec
, 
buf_cou
, 
by_cou_p
)

402 
sock_t
 
fd
;

403 
db_iovec_t
 *
iovec
;

404 
buf_cou
;

405 
size_t
 *
by_cou_p
;

407 
nw
;

409 i((
nw
 = 
	`wrev
(
fd
, 
iovec
, 
buf_cou
)) == -1)

410  (
o
);

411 *
by_cou_p
 = (
size_t
)
nw
;

413 
	}
}

419 
	$__pmgr_adv
(
fd
, 
iovec
, 
buf_cou
, 
by_cou_p
)

420 
sock_t
 
fd
;

421 
db_iovec_t
 *
iovec
;

422 
buf_cou
;

423 
size_t
 *
by_cou_p
;

425 
ssize_t
 
nw
;

427 i((
nw
 = 
	`adv
(
fd
, 
iovec
, 
buf_cou
)) == -1)

428  (
o
);

429 *
by_cou_p
 = (
size_t
)
nw
;

431 
	}
}

437 
	$__pmgr__lo
(
dbv
)

438 
DB_ENV
 *
dbv
;

440 
timev
 
_timeout
, *
_timeout_p
;

441 
DB_REP
 *
db_p
;

442 
REPMGR_CONNECTION
 *
cn
, *
xt
;

443 
REPMGR_RETRY
 *
y
;

444 
db_timeec
 
timeout
;

445 
fd_t
 
ads
, 
wres
;

446 
t
, 
ow_cڌ
, 
maxfd
, 
ėdy
;

447 
u_t8_t
 
buf
[10];

449 
ow_cڌ
 = 
FALSE
;

451 
db_p
 = 
dbv
->
p_hd
;

457 
	`LOCK_MUTEX
(
db_p
->
mux
);

458 i((
t
 = 
	`__pmgr_f_y_cis
(
dbv
)) != 0)

459 
out
;

461 
	`FD_ZERO
(&
ads
);

462 
	`FD_ZERO
(&
wres
);

468 
	`FD_SET
((
u_t
)
db_p
->
li_fd
, &
ads
);

469 
maxfd
 = 
db_p
->
li_fd
;

471 
	`FD_SET
((
u_t
)
db_p
->
ad_pe
, &
ads
);

472 i(
db_p
->
ad_pe
 > 
maxfd
)

473 
maxfd
 = 
db_p
->
ad_pe
;

479 
	`TAILQ_FOREACH
(
cn
, &
db_p
->
cis
, 
s
) {

480 i(
	`F_ISSET
(
cn
, 
CONN_CONNECTING
)) {

481 
	`FD_SET
((
u_t
)
cn
->
fd
, &
ads
);

482 
	`FD_SET
((
u_t
)
cn
->
fd
, &
wres
);

483 i(
cn
->
fd
 > 
maxfd
)

484 
maxfd
 = 
cn
->
fd
;

488 i(!
	`STAILQ_EMPTY
(&
cn
->
outbound_queue
)) {

489 
	`FD_SET
((
u_t
)
cn
->
fd
, &
wres
);

490 i(
cn
->
fd
 > 
maxfd
)

491 
maxfd
 = 
cn
->
fd
;

497 i(!
ow_cڌ
 || !
	`IS_VALID_EID
(
cn
->
eid
)) {

498 
	`FD_SET
((
u_t
)
cn
->
fd
, &
ads
);

499 i(
cn
->
fd
 > 
maxfd
)

500 
maxfd
 = 
cn
->
fd
;

508 i(
	`TAILQ_EMPTY
(&
db_p
->
s
))

509 
_timeout_p
 = 
NULL
;

511 
y
 = 
	`TAILQ_FIRST
(&
db_p
->
s
);

513 
	`__pmgr_timeec_diff_now
(

514 
dbv
, &
y
->
time
, &
timeout
);

517 
_timeout
.
tv_c
 = 
timeout
.tv_sec;

518 
_timeout
.
tv_uc
 = 
timeout
.
tv_nc
 / 
NS_PER_US
;

519 
_timeout_p
 = &
_timeout
;

522 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

524 i((
t
 = 
	`
(
maxfd
 + 1,

525 &
ads
, &
wres
, 
NULL
, 
_timeout_p
)) == -1) {

526 
t
 = 
o
) {

527 
EINTR
:

528 
EWOULDBLOCK
:

529 
	`LOCK_MUTEX
(
db_p
->
mux
);

532 
	`__db_r
(
dbv
, 
t
, "select");

533  (
t
);

536 
ėdy
 = 
t
;

538 
	`LOCK_MUTEX
(
db_p
->
mux
);

550 
cn
 = 
	`TAILQ_FIRST
(&
db_p
->
cis
);

551 
cn
 !
NULL
;

552 
cn
 = 
xt
) {

553 
xt
 = 
	`TAILQ_NEXT
(
cn
, 
s
);

554 i(
	`F_ISSET
(
cn
, 
CONN_DEFUNCT
))

555 
	`__pmgr_nup_ci
(
dbv
, 
cn
);

558 i((
t
 = 
	`__pmgr_y_cis
(
dbv
)) != 0)

559 
out
;

560 i(
ėdy
 == 0)

567 
cn
 = 
	`TAILQ_FIRST
(&
db_p
->
cis
);

568 
cn
 !
NULL
;

569 
cn
 = 
xt
) {

570 
xt
 = 
	`TAILQ_NEXT
(
cn
, 
s
);

571 i(
	`F_ISSET
(
cn
, 
CONN_CONNECTING
)) {

572 i(
	`FD_ISSET
((
u_t
)
cn
->
fd
, &
ads
) ||

573 
	`FD_ISSET
((
u_t
)
cn
->
fd
, &
wres
)) {

574 i((
t
 = 
	`fish_cg
(
dbv
,

575 
cn
)=
DB_REP_UNAVAIL
) {

576 i((
t
 =

577 
	`__pmgr_bu_ci
(

578 
dbv
, 
cn
, 
TRUE
)) != 0)

579 
out
;

580 } i(
t
 != 0)

581 
out
;

590 i(
	`FD_ISSET
((
u_t
)
cn
->
fd
, &
wres
)) {

591 i((
t
 = 
	`__pmgr_wre_some
(

592 
dbv
, 
cn
)=
DB_REP_UNAVAIL
) {

593 i((
t
 =

594 
	`__pmgr_bu_ci
(
dbv
,

595 
cn
, 
TRUE
)) != 0)

596 
out
;

598 } i(
t
 != 0)

599 
out
;

602 i(!
ow_cڌ
 &&

603 
	`FD_ISSET
((
u_t
)
cn
->
fd
, &
ads
)) {

604 i((
t
 = 
	`__pmgr_ad_om_se
(
dbv
, 
cn
))

605 =
DB_REP_UNAVAIL
) {

606 i((
t
 =

607 
	`__pmgr_bu_ci
(
dbv
,

608 
cn
, 
TRUE
)) != 0)

609 
out
;

611 } i(
t
 != 0)

612 
out
;

621 i(
	`FD_ISSET
((
u_t
)
db_p
->
ad_pe
, &
ads
)) {

622 i(
	`ad
(
db_p
->
ad_pe
, 
buf
, (buf)) <= 0) {

623 
t
 = 
o
;

624 
out
;

625 } i(
db_p
->
fished
) {

626 
t
 = 0;

627 
out
;

630 i(
	`FD_ISSET
((
u_t
)
db_p
->
li_fd
, &
ads
) &&

631 (
t
 = 
	`__pmgr_ac
(
dbv
)) != 0)

632 
out
;

634 
out
:

635 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

636  (
t
);

637 
	}
}

640 
	$fish_cg
(
dbv
, 
cn
)

641 
DB_ENV
 *
dbv
;

642 
REPMGR_CONNECTION
 *
cn
;

644 
DB_REP
 *
db_p
;

645 
REPMGR_SITE
 *
se
;

646 
sockn_t
 
n
;

647 
SITE_STRING_BUFFER
 
bufr
;

648 
u_t
 
eid
;

649 
r
, 
t
;

651 
n
 = (
r
);

652 i(
	`gsockt
(

653 
cn
->
fd
, 
SOL_SOCKET
, 
SO_ERROR
, (
sockt_t
)&
r
, &
n
) < 0)

654 
r_t
;

655 i(
r
) {

656 
o
 = 
r
;

657 
r_t
;

660 
	`F_CLR
(
cn
, 
CONN_CONNECTING
);

661  (
	`__pmgr_nd_hdshake
(
dbv
, 
cn
));

663 
r_t
:

664 
db_p
 = 
dbv
->
p_hd
;

666 
	`DB_ASSERT
(
dbv
, 
	`IS_VALID_EID
(
cn
->
eid
));

667 
eid
 = (
u_t
)
cn
->eid;

669 
se
 = 
	`SITE_FROM_EID
(
eid
);

670 
	`__db_r
(
dbv
, 
o
,

671 "cg%s", 
	`__pmgr_fm_se_loc
(
se
, 
bufr
));

674 i(
	`ADDR_LIST_NEXT
(&
se
->
t_addr
=
NULL
)

675  (
DB_REP_UNAVAIL
);

686 
	`DB_ASSERT
(
dbv
, !
	`TAILQ_EMPTY
(&
db_p
->
cis
));

687 
	`__pmgr_nup_ci
(
dbv
, 
cn
);

688 
t
 = 
	`__pmgr_c_se
(
dbv
, 
eid
);

689 
	`DB_ASSERT
(
dbv
, 
t
 !
DB_REP_UNAVAIL
);

690  (
t
);

691 
	}
}

	@../repmgr/repmgr_queue.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

14 
	$STAILQ_HEAD
(
	t__pmgr_q_hd
, 
	t__pmgr_mesge

	tQUEUE_HEADER
;

15 
	s__pmgr_queue
 {

16 
size
;

17 
QUEUE_HEADER
 
hd
;

24 
	$__pmgr_queue_
(
dbv
, 
db_p
)

25 
DB_ENV
 *
dbv
;

26 
DB_REP
 *
db_p
;

28 
REPMGR_QUEUE
 *
q
;

29 
t
;

31 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
REPMGR_QUEUE
), &
q
)) != 0)

32  (
t
);

33 
q
->
size
 = 0;

34 
	`STAILQ_INIT
(&
q
->
hd
);

35 
db_p
->
put_queue
 = 
q
;

37 
	}
}

46 
	$__pmgr_queue_deroy
(
dbv
)

47 
DB_ENV
 *
dbv
;

49 
REPMGR_QUEUE
 *
q
;

50 
REPMGR_MESSAGE
 *
m
;

52 i((
q
 = 
dbv
->
p_hd
->
put_queue
=
NULL
)

55 !
	`STAILQ_EMPTY
(&
q
->
hd
)) {

56 
m
 = 
	`STAILQ_FIRST
(&
q
->
hd
);

57 
	`STAILQ_REMOVE_HEAD
(&
q
->
hd
, 
s
);

58 
	`__os_
(
dbv
, 
m
);

60 
	`__os_
(
dbv
, 
q
);

61 
	}
}

75 
	$__pmgr_queue_g
(
dbv
, 
msgp
)

76 
DB_ENV
 *
dbv
;

77 
REPMGR_MESSAGE
 **
msgp
;

79 
DB_REP
 *
db_p
;

80 
REPMGR_QUEUE
 *
q
;

81 
REPMGR_MESSAGE
 *
m
;

82 
t
;

84 
t
 = 0;

85 
db_p
 = 
dbv
->
p_hd
;

86 
q
 = 
db_p
->
put_queue
;

88 
	`LOCK_MUTEX
(
db_p
->
mux
);

89 
	`STAILQ_EMPTY
(&
q
->
hd
&& !
db_p
->
fished
) {

90 #ifde
DB_WIN32


91 i(!
	`RetEvt
(
db_p
->
queue_nemy
)) {

92 
t
 = 
	`GLaE
();

93 
r
;

95 i(
	`SiglObjeAndWa
(
db_p
->
mux
, db_p->
queue_nemy
,

96 
INFINITE
, 
FALSE
!
WAIT_OBJECT_0
) {

97 
t
 = 
	`GLaE
();

98 
r
;

100 
	`LOCK_MUTEX
(
db_p
->
mux
);

102 i((
t
 = 
	`had_cd_wa
(&
db_p
->
queue_nemy
,

103 &
db_p
->
mux
)) != 0)

104 
r
;

107 i(
db_p
->
fished
)

108 
t
 = 
DB_REP_UNAVAIL
;

110 
m
 = 
	`STAILQ_FIRST
(&
q
->
hd
);

111 
	`STAILQ_REMOVE_HEAD
(&
q
->
hd
, 
s
);

112 
q
->
size
--;

113 *
msgp
 = 
m
;

116 
r
:

117 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

118  (
t
);

119 
	}
}

128 
	$__pmgr_queue_put
(
dbv
, 
msg
)

129 
DB_ENV
 *
dbv
;

130 
REPMGR_MESSAGE
 *
msg
;

132 
DB_REP
 *
db_p
;

133 
REPMGR_QUEUE
 *
q
;

135 
db_p
 = 
dbv
->
p_hd
;

136 
q
 = 
db_p
->
put_queue
;

138 
	`STAILQ_INSERT_TAIL
(&
q
->
hd
, 
msg
, 
s
);

139 
q
->
size
++;

141  (
	`__pmgr_sigl
(&
db_p
->
queue_nemy
));

142 
	}
}

151 
	$__pmgr_queue_size
(
dbv
)

152 
DB_ENV
 *
dbv
;

154  (
dbv
->
p_hd
->
put_queue
->
size
);

155 
	}
}

	@../repmgr/repmgr_sel.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

14 
__pmgr_c
 
__P
((
DB_ENV
*, 
sock_t
 *, 
REPMGR_SITE
 *));

15 
dich_pha_comi
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *));

16 
nify_hdshake
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *));

17 
cd_ack
 
__P
((
DB_ENV
 *, 
REPMGR_SITE
 *, 
DB_REPMGR_ACK
 *));

18 
__pmgr_y_e
 
__P
((
DB_ENV
 *, 
u_t
));

24 
	$__pmgr__thad
(
gs
)

25 *
gs
;

27 
DB_ENV
 *
dbv
 = 
gs
;

28 
t
;

30 i((
t
 = 
	`__pmgr__lo
(
dbv
)) != 0) {

31 
	`__db_r
(
dbv
, 
t
, "selectoop failed");

32 
	`__pmgr_thad_u
(
dbv
, 
t
);

34  (
NULL
);

35 
	}
}

45 
	$__pmgr_ac
(
dbv
)

46 
DB_ENV
 *
dbv
;

48 
DB_REP
 *
db_p
;

49 
REPMGR_CONNECTION
 *
cn
;

50 
sockaddr_
 
sddr
;

51 
sockn_t
 
add
;

52 
sock_t
 
s
;

53 
t
;

54 #ifde
DB_WIN32


55 
WSAEVENT
 
evt_obj
;

58 
db_p
 = 
dbv
->
p_hd
;

59 
add
 = (
sddr
);

60 i((
s
 = 
	`ac
(
db_p
->
li_fd
, (
sockaddr
 *)&
sddr
,

61 &
add
)) == -1) {

68 
t
 = 
t_o
) {

69 #ifde
DB_WIN32


70 
WSAECONNRESET
:

71 
WSAEWOULDBLOCK
:

73 
EINTR
:

74 
EWOULDBLOCK
:

75 
ECONNABORTED
:

76 
ENETDOWN
:

77 #ifde
EPROTO


78 
EPROTO
:

80 
ENOPROTOOPT
:

81 
EHOSTDOWN
:

82 #ifde
ENONET


83 
ENONET
:

85 
EHOSTUNREACH
:

86 
EOPNOTSUPP
:

87 
ENETUNREACH
:

89 
	`RPRINT
(
dbv
, (dbenv,

90 "ac %d csided iocuous", 
t
));

93 
	`__db_r
(
dbv
, 
t
, "acceptrror");

94  (
t
);

97 
	`RPRINT
(
dbv
, (dbenv, "acceptedew connection"));

99 i((
t
 = 
	`__pmgr_t_nblockg
(
s
)) != 0) {

100 
	`__db_r
(
dbv
, 
t
, "can't setonblockfterccept");

101 ()
	`osock
(
s
);

102  (
t
);

105 #ifde
DB_WIN32


106 i((
evt_obj
 = 
	`WSACeEvt
()=
WSA_INVALID_EVENT
) {

107 
t
 = 
t_o
;

108 
	`__db_r
(
dbv
, 
t
, "can't create WSAvent");

109 ()
	`osock
(
s
);

110  (
t
);

112 i(
	`WSAEvtSe
(
s
, 
evt_obj
, 
FD_READ
|
FD_CLOSE
=
SOCKET_ERROR
) {

113 
t
 = 
t_o
;

114 
	`__db_r
(
dbv
, 
t
, "can't set desiredvent bits");

115 ()
	`WSACloEvt
(
evt_obj
);

116 ()
	`osock
(
s
);

117  (
t
);

120 i((
t
 = 
	`__pmgr_w_ci
(
dbv
, &
cn
, 
s
, 0)) != 0) {

121 #ifde
DB_WIN32


122 ()
	`WSACloEvt
(
evt_obj
);

124 ()
	`osock
(
s
);

125  (
t
);

127 
cn
->
eid
 = -1;

128 #ifde
DB_WIN32


129 
cn
->
evt_obje
 = 
evt_obj
;

132 
t
 = 
	`__pmgr_nd_hdshake
(
dbv
, 
cn
)) {

135 
DB_REP_UNAVAIL
:

136  (
	`__pmgr_bu_ci
(
dbv
, 
cn
, 
TRUE
));

138  (
t
);

140 
	}
}

152 
	$__pmgr_y_cis
(
dbv
)

153 
DB_ENV
 *
dbv
;

155 
DB_REP
 *
db_p
;

156 
REPMGR_RETRY
 *
y
;

157 
db_timeec
 
now
;

158 
u_t
 
eid
;

159 
t
;

161 
db_p
 = 
dbv
->
p_hd
;

162 
	`__os_gtime
(
dbv
, &
now
);

164 !
	`TAILQ_EMPTY
(&
db_p
->
s
)) {

165 
y
 = 
	`TAILQ_FIRST
(&
db_p
->
s
);

166 i(
	`timeeccmp
(&
y
->
time
, &
now
, >=))

169 
	`TAILQ_REMOVE
(&
db_p
->
s
, 
y
, 
s
);

171 
eid
 = 
y
->eid;

172 
	`__os_
(
dbv
, 
y
);

174 i((
t
 = 
	`__pmgr_y_e
(
dbv
, 
eid
)) != 0)

175  (
t
);

178 
	}
}

187 
	$__pmgr_f_y_cis
(
dbv
)

188 
DB_ENV
 *
dbv
;

190 
DB_REP
 *
db_p
;

191 
u_t
 
eid
;

192 
t
;

194 
db_p
 = 
dbv
->
p_hd
;

195 
eid
=0;id<
db_p
->
se_t
;id++)

196 i((
t
 = 
	`__pmgr_y_e
(
dbv
, 
eid
)) != 0)

197  (
t
);

199 
	}
}

208 
	$__pmgr_y_e
(
dbv
, 
eid
)

209 
DB_ENV
 *
dbv
;

210 
u_t
 
eid
;

212 
DB_REP
 *
db_p
;

213 
ADDRINFO
 *
li
;

214 
pmgr_Ïddr_t
 *
addr
;

215 
t
;

217 
db_p
 = 
dbv
->
p_hd
;

235 
addr
 = &
	`SITE_FROM_EID
(
eid
)->
t_addr
;

236 i(
	`ADDR_LIST_FIRST
(
addr
=
NULL
) {

237 i((
t
 = 
	`__pmgr_gaddr
(

238 
dbv
, 
addr
->
ho
,ddr->
pt
, 0, &
li
)) == 0) {

239 
addr
->
addss_li
 = 
li
;

240 ()
	`ADDR_LIST_FIRST
(
addr
);

241 } i(
t
 =
DB_REP_UNAVAIL
)

242  (
	`__pmgr_schedu_ci_m
(

243 
dbv
, 
eid
, 
FALSE
));

245  (
t
);

249  (
	`__pmgr_c_se
(
dbv
, 
eid
));

250 
	}
}

264 
	$__pmgr_c_se
(
dbv
, 
eid
)

265 
DB_ENV
 *
dbv
;

266 
u_t
 
eid
;

268 
DB_REP
 *
db_p
;

269 
REPMGR_SITE
 *
se
;

270 
REPMGR_CONNECTION
 *
c
;

271 
sock_t
 
s
;

272 
u_t32_t
 
ags
;

273 
t
;

274 #ifde
DB_WIN32


275 
desed_evt
;

276 
WSAEVENT
 
evt_obj
;

279 
db_p
 = 
dbv
->
p_hd
;

280 
se
 = 
	`SITE_FROM_EID
(
eid
);

282 
ags
 = 0;

283 
t
 = 
	`__pmgr_c
(
dbv
, &
s
, 
se
)) {

285 
ags
 = 0;

286 #ifde
DB_WIN32


287 
desed_evt
 = 
FD_READ
|
FD_CLOSE
;

290 
INPROGRESS
:

291 
ags
 = 
CONN_CONNECTING
;

292 #ifde
DB_WIN32


293 
desed_evt
 = 
FD_CONNECT
;

297 
	`STAT
(
db_p
->
gi
->
m
.
_c_
++);

299 
	`__pmgr_schedu_ci_m
(
dbv
, 
eid
, 
FALSE
));

302 #ifde
DB_WIN32


303 i((
evt_obj
 = 
	`WSACeEvt
()=
WSA_INVALID_EVENT
) {

304 
t
 = 
t_o
;

305 
	`__db_r
(
dbv
, 
t
, "can't create WSAvent");

306 ()
	`osock
(
s
);

307  (
t
);

309 i(
	`WSAEvtSe
(
s
, 
evt_obj
, 
desed_evt
=
SOCKET_ERROR
) {

310 
t
 = 
t_o
;

311 
	`__db_r
(
dbv
, 
t
, "can't set desiredvent bits");

312 ()
	`WSACloEvt
(
evt_obj
);

313 ()
	`osock
(
s
);

314  (
t
);

318 i((
t
 = 
	`__pmgr_w_ci
(
dbv
, &
c
, 
s
, 
ags
))

320 #ifde
DB_WIN32


321 ()
	`WSACloEvt
(
evt_obj
);

323 ()
	`osock
(
s
);

324  (
t
);

326 #ifde
DB_WIN32


327 
c
->
evt_obje
 = 
evt_obj
;

330 i(
ags
 == 0) {

331 
t
 = 
	`__pmgr_nd_hdshake
(
dbv
, 
c
)) {

334 
DB_REP_UNAVAIL
:

335  (
	`__pmgr_bu_ci
(
dbv
, 
c
, 
TRUE
));

337  (
t
);

341 
c
->
eid
 = ()eid;

343 
se
->
f
.
cn
 = 
c
;

344 
se
->
e
 = 
SITE_CONNECTED
;

346 
	}
}

349 
	$__pmgr_c
(
dbv
, 
sock_su
, 
se
)

350 
DB_ENV
 *
dbv
;

351 
sock_t
 *
sock_su
;

352 
REPMGR_SITE
 *
se
;

354 
pmgr_Ïddr_t
 *
addr
;

355 
ADDRINFO
 *
ai
;

356 
sock_t
 
s
;

357 *
why
;

358 
t
;

359 
SITE_STRING_BUFFER
 
bufr
;

365 
	`COMPQUIET
(
why
, "");

366 
addr
 = &
se
->
t_addr
;

367 
ai
 = 
	`ADDR_LIST_CURRENT
(
addr
);

368 
	`DB_ASSERT
(
dbv
, 
ai
 !
NULL
);

369 ; 
ai
 !
NULL
;
	`ADDR_LIST_NEXT
(
addr
)) {

371 i((
s
 = 
	`sock
(
ai
->
ai_my
,

372 
ai
->
ai_sockty
,i->
ai_oc
)=
SOCKET_ERROR
) {

373 
why
 = "can't create socketo connect";

377 i((
t
 = 
	`__pmgr_t_nblockg
(
s
)) != 0) {

378 
	`__db_r
(
dbv
,

379 
t
, "can't makeonblock socketo connect");

380 ()
	`osock
(
s
);

381  (
t
);

384 i(
	`c
(
s
, 
ai
->
ai_addr
, (
sockn_t
i->
ai_add
) != 0)

385 
t
 = 
t_o
;

387 i(
t
 =0 || =
INPROGRESS
) {

388 *
sock_su
 = 
s
;

389 
	`RPRINT
(
dbv
, (dbenv,

391 
	`__pmgr_fm_se_loc
(
se
, 
bufr
), 
t
));

392  (
t
);

395 
why
 = "connection failed";

396 ()
	`osock
(
s
);

400 
t
 = 
t_o
;

401 
	`__db_r
(
dbv
, 
t
, "%t%s", 
why
,

402 
	`__pmgr_fm_se_loc
(
se
, 
bufr
));

403  (
t
);

404 
	}
}

410 
	$__pmgr_nd_hdshake
(
dbv
, 
cn
)

411 
DB_ENV
 *
dbv
;

412 
REPMGR_CONNECTION
 *
cn
;

414 
DB_REP
 *
db_p
;

415 
REP
 *
p
;

416 
pmgr_Ïddr_t
 *
my_addr
;

417 
DB_REPMGR_HANDSHAKE
 
bufr
;

418 
DBT
 
l
, 
c
;

420 
	`DB_ASSERT
(
dbv
, !
	`F_ISSET
(
cn
, 
CONN_CONNECTING
 | 
CONN_DEFUNCT
));

422 
db_p
 = 
dbv
->
p_hd
;

423 
p
 = 
db_p
->
gi
;

424 
my_addr
 = &
db_p
->my_addr;

430 
	`DB_ASSERT
(
dbv
, (
u_t32_t
) >= ());

432 
bufr
.
vsi
 = 
DB_REPMGR_VERSION
;

433 
bufr
.
iܙy
 = 
	`htl
((
u_t32_t
)
p
->priority);

434 
bufr
.
pt
 = 
my_addr
->port;

435 
l
.
da
 = &
bufr
;

436 
l
.
size
 = (
bufr
);

438 
	`DB_SET_DBT
(
c
, 
my_addr
->
ho
, 
	`
(my_addr->host) + 1);

440  (
	`__pmgr_nd_e
(
dbv
, 
cn
, 
REPMGR_HANDSHAKE
, &
l
, &
c
));

441 
	}
}

450 
	$__pmgr_ad_om_se
(
dbv
, 
cn
)

451 
DB_ENV
 *
dbv
;

452 
REPMGR_CONNECTION
 *
cn
;

454 
SITE_STRING_BUFFER
 
bufr
;

455 
size_t
 

;

456 
t
;

463 i((
t
 = 
	`__pmgr_adv
(
cn
->
fd
,

464 &
cn
->
iovecs
.
ves
[cn->iovecs.
offt
],

465 
cn
->
iovecs
.
cou
 - cn->iovecs.
offt
, &

)) != 0) {

466 
t
) {

467 #ide
DB_WIN32


468 
EINTR
:

471 
WOULDBLOCK
:

474 ()
	`__pmgr_fm_eid_loc
(
dbv
->
p_hd
,

475 
cn
->
eid
, 
bufr
);

476 
	`__db_r
(
dbv
, 
t
,

477 "n'ad from %s", 
bufr
);

478 
	`STAT
(
dbv
->
p_hd
->

479 
gi
->
m
.
_ci_dr
++);

480  (
DB_REP_UNAVAIL
);

484 i(

 > 0) {

485 i(
	`__pmgr_upde_csumed
(&
cn
->
iovecs
, 

))

486  (
	`dich_pha_comi
(
dbv
,

487 
cn
));

489 ()
	`__pmgr_fm_eid_loc
(
dbv
->
p_hd
,

490 
cn
->
eid
, 
bufr
);

491 
	`__db_rx
(
dbv
, "EOF oci from %s", 
bufr
);

492 
	`STAT
(
dbv
->
p_hd
->

493 
gi
->
m
.
_ci_dr
++);

494  (
DB_REP_UNAVAIL
);

497 
	}
}

504 
	$dich_pha_comi
(
dbv
, 
cn
)

505 
DB_ENV
 *
dbv
;

506 
REPMGR_CONNECTION
 *
cn
;

508 
	#MEM_ALIGN
 ()

	)

509 
DB_REP
 *
db_p
;

510 
DB_REPMGR_ACK
 *
ack
;

511 
REPMGR_SITE
 *
se
;

512 
DB_REPMGR_HANDSHAKE
 *
hdshake
;

513 
REPMGR_RETRY
 *
y
;

514 
pmgr_Ïddr_t
 
addr
;

515 
DBT
 *
dbt
;

516 
u_t32_t
 
cڌ_size
, 
c_size
;

517 
size_t
 
memsize
, 
cڌ_offt
, 
c_offt
;

518 *
memba
;

519 *
ho
;

520 
u_t
 
pt
;

521 
t
, 
eid
;

523 
db_p
 = 
dbv
->
p_hd
;

524 
cn
->
adg_pha
) {

525 
SIZES_PHASE
:

532 i(
cn
->
msg_ty
 !
REPMGR_HANDSHAKE
 &&

533 !
	`IS_VALID_EID
(
cn
->
eid
)) {

534 
	`__db_rx
(
dbv
,

536  (
DB_REP_UNAVAIL
);

539 
	`__pmgr_iovec_
(&
cn
->
iovecs
);

540 
cڌ_size
 = 
	`ohl
(
cn
->
cڌ_size_buf
);

541 
c_size
 = 
	`ohl
(
cn
->
c_size_buf
);

542 i(
cn
->
msg_ty
 =
REPMGR_REP_MESSAGE
) {

550 
memsize
 = (
size_t
)

551 
	`DB_ALIGN
((
REPMGR_MESSAGE
), 
MEM_ALIGN
);

552 
cڌ_offt
 = 
memsize
;

553 
memsize
 +
cڌ_size
;

554 i(
c_size
 > 0) {

555 
memsize
 = (
size_t
)
	`DB_ALIGN
(memsize, 
MEM_ALIGN
);

556 
c_offt
 = 
memsize
;

557 
memsize
 +
c_size
;

559 
	`COMPQUIET
(
c_offt
, 0);

560 i((
t
 = 
	`__os_mloc
(
dbv
, 
memsize
, &
memba
)) != 0)

561  (
t
);

562 
cn
->
put
.
p_mesge
 = 
memba
;

563 
	`memt
(&
cn
->
put
.
p_mesge
->
cڌ
, 0,

564 (
DBT
));

565 
	`memt
(&
cn
->
put
.
p_mesge
->
c
, 0, (
DBT
));

566 
cn
->
put
.
p_mesge
->
igg_eid
 = cn->
eid
;

567 
cn
->
put
.
p_mesge
->
cڌ
.
size
 = 
cڌ_size
;

568 
cn
->
put
.
p_mesge
->
cڌ
.
da
 =

569 (
u_t8_t
*)
memba
 + 
cڌ_offt
;

570 
	`__pmgr_add_bufr
(&
cn
->
iovecs
,

571 
cn
->
put
.
p_mesge
->
cڌ
.
da
,

572 
cڌ_size
);

574 
cn
->
put
.
p_mesge
->
c
.
size
 = 
c_size
;

575 i(
c_size
 > 0) {

576 
cn
->
put
.
p_mesge
->
c
.
da
 =

577 (
u_t8_t
*)
memba
 + 
c_offt
;

578 
	`__pmgr_add_bufr
(&
cn
->
iovecs
,

579 
cn
->
put
.
p_mesge
->
c
.
da
,

580 
c_size
);

582 
cn
->
put
.
p_mesge
->
c
.
da
 = 
NULL
;

585 i(
cڌ_size
 == 0) {

586 
	`__db_rx
(

587 
dbv
, "illegal size foron-rep msg");

588  (
DB_REP_UNAVAIL
);

590 
cn
->
put
.
pmgr_msg
.
l
.
size
 = 
cڌ_size
;

591 
cn
->
put
.
pmgr_msg
.
c
.
size
 = 
c_size
;

593 
dbt
 = &
cn
->
put
.
pmgr_msg
.
l
;

594 
dbt
->
size
 = 
cڌ_size
;

595 i((
t
 = 
	`__os_mloc
(
dbv
, 
cڌ_size
,

596 &
dbt
->
da
)) != 0)

597  (
t
);

598 
	`__pmgr_add_dbt
(&
cn
->
iovecs
, 
dbt
);

600 
dbt
 = &
cn
->
put
.
pmgr_msg
.
c
;

601 i((
dbt
->
size
 = 
c_size
) > 0) {

602 i((
t
 = 
	`__os_mloc
(
dbv
, 
c_size
,

603 &
dbt
->
da
)) != 0) {

604 
	`__os_
(
dbv
,

605 
cn
->
put
.
pmgr_msg
.
l
.
da
);

606  (
t
);

608 
	`__pmgr_add_dbt
(&
cn
->
iovecs
, 
dbt
);

612 
cn
->
adg_pha
 = 
DATA_PHASE
;

615 
DATA_PHASE
:

622 
cn
->
msg_ty
) {

623 
REPMGR_ACK
:

628 
ack
 = 
cn
->
put
.
pmgr_msg
.
l
.
da
;

629 i(
cn
->
put
.
pmgr_msg
.
l
.
size
 !(*
ack
) ||

630 
cn
->
put
.
pmgr_msg
.
c
.
size
 != 0) {

631 
	`__db_rx
(
dbv
, "badck msg size");

632  (
DB_REP_UNAVAIL
);

634 i((
t
 = 
	`cd_ack
(
dbv
, 
	`SITE_FROM_EID
(
cn
->
eid
),

635 
ack
)) != 0)

636  (
t
);

637 
	`__os_
(
dbv
, 
cn
->
put
.
pmgr_msg
.
l
.
da
);

640 
REPMGR_HANDSHAKE
:

641 
hdshake
 = 
cn
->
put
.
pmgr_msg
.
l
.
da
;

642 i(
cn
->
put
.
pmgr_msg
.
l
.
size
 >=

643 (
hdshake
->
vsi
) &&

644 
hdshake
->
vsi
 !
DB_REPMGR_VERSION
) {

645 
	`__db_rx
(
dbv
,

647 (
u_lg
)
hdshake
->
vsi
);

648  (
DB_REP_UNAVAIL
);

650 i(
cn
->
put
.
pmgr_msg
.
l
.
size
 !=

651 (*
hdshake
) ||

652 
cn
->
put
.
pmgr_msg
.
c
.
size
 == 0) {

653 
	`__db_rx
(
dbv
, "bad handshake msg size");

654  (
DB_REP_UNAVAIL
);

657 
pt
 = 
hdshake
->port;

658 
ho
 = 
cn
->
put
.
pmgr_msg
.
c
.
da
;

659 
ho
[
cn
->
put
.
pmgr_msg
.
c
.
size
-1] = '\0';

661 
	`RPRINT
(
dbv
, (dbenv,

662 "g hdshak%s:%u,r%lu", 
ho
, 
pt
,

663 (
u_lg
)
	`ohl
(
hdshake
->
iܙy
)));

665 i(
	`IS_VALID_EID
(
cn
->
eid
)) {

672 
se
 = 
	`SITE_FROM_EID
(
cn
->
eid
);

673 
	`RPRINT
(
dbv
, (dbenv,

675 
se
->
t_addr
.
ho
,

676 (
u_lg
)
se
->
t_addr
.
pt
));

678 i(
	`IS_VALID_EID
(
eid
 =

679 
	`__pmgr_fd_se
(
dbv
, 
ho
, 
pt
))) {

680 
se
 = 
	`SITE_FROM_EID
(
eid
);

681 i(
se
->
e
 =
SITE_IDLE
) {

682 
	`RPRINT
(
dbv
, (dbenv,

684 
y
 = 
se
->
f
.retry;

685 
	`TAILQ_REMOVE
(&
db_p
->
s
,

686 
y
, 
s
);

687 
	`__os_
(
dbv
, 
y
);

689 
cn
->
eid
 =id;

690 
se
->
e
 = 
SITE_CONNECTED
;

691 
se
->
f
.
cn
 = conn;

698 
	`__db_rx
(
dbv
,

700  (
DB_REP_UNAVAIL
);

703 
	`RPRINT
(
dbv
, (dbenv,

705 i((
t
 = 
	`__pmgr_ck_Ïddr
(

706 
dbv
, 
ho
, 
pt
, 
NULL
,

707 &
addr
)) != 0)

708  (
t
);

709 i((
t
 = 
	`__pmgr_w_se
(

710 
dbv
, &
se
, &
addr
,

711 
SITE_CONNECTED
)) != 0) {

712 
	`__pmgr_nup_Ïddr
(
dbv
,

713 &
addr
);

714  (
t
);

716 
cn
->
eid
 = 
	`EID_FROM_SITE
(
se
);

717 
se
->
f
.
cn
 = conn;

722 
	`DB_ASSERT
(
dbv
, (=(
u_t32_t
));

723 
se
->
iܙy
 = ()
	`ohl
(
hdshake
->priority);

725 i((
t
 = 
	`nify_hdshake
(
dbv
, 
cn
)) != 0)

726  (
t
);

728 
	`__os_
(
dbv
, 
cn
->
put
.
pmgr_msg
.
l
.
da
);

729 
	`__os_
(
dbv
, 
cn
->
put
.
pmgr_msg
.
c
.
da
);

732 
REPMGR_REP_MESSAGE
:

733 i((
t
 = 
	`__pmgr_queue_put
(
dbv
,

734 
cn
->
put
.
p_mesge
)) != 0)

735  (
t
);

743 
	`__db_rx
(
dbv
, "unknown msgypecvd: %d",

744 ()
cn
->
msg_ty
);

745  (
DB_REP_UNAVAIL
);

748 
	`__pmgr_t_f_adg
(
cn
);

752 
	`DB_ASSERT
(
dbv
, 
FALSE
);

756 
	}
}

765 
	$nify_hdshake
(
dbv
, 
cn
)

766 
DB_ENV
 *
dbv
;

767 
REPMGR_CONNECTION
 *
cn
;

769 
DB_REP
 *
db_p
;

771 
	`COMPQUIET
(
cn
, 
NULL
);

773 
db_p
 = 
dbv
->
p_hd
;

781 i(
db_p
->
ma_eid
 =
DB_EID_INVALID
 && !db_p->
de_e
) {

782 
db_p
->
de_e
 = 
TRUE
;

783 
	`RPRINT
(
dbv
, (dbenv,

785  (
	`__pmgr__ei
(
dbv
, 
ELECT_REPSTART
));

788 
	}
}

791 
	$cd_ack
(
dbv
, 
se
, 
ack
)

792 
DB_ENV
 *
dbv
;

793 
REPMGR_SITE
 *
se
;

794 
DB_REPMGR_ACK
 *
ack
;

796 
DB_REP
 *
db_p
;

797 
SITE_STRING_BUFFER
 
bufr
;

798 
t
;

800 
db_p
 = 
dbv
->
p_hd
;

803 i(
ack
->
gi
 < 
db_p
->generation) {

804 
	`RPRINT
(
dbv
, (dbenv,

806 (
u_lg
)
ack
->
gi
, (u_lg)
db_p
->generation,

807 
	`__pmgr_fm_se_loc
(
se
, 
bufr
)));

810 
	`RPRINT
(
dbv
, (dbenv,

811 "gهck [%lu][%lu](%luom %s", (
u_lg
)
ack
->
l
.
fe
,

812 (
u_lg
)
ack
->
l
.
offt
, (u_lgck->
gi
,

813 
	`__pmgr_fm_se_loc
(
se
, 
bufr
)));

815 i(
ack
->
gi
 =
db_p
->generation &&

816 
	`log_com
(&
ack
->
l
, &
se
->
max_ack
) == 1) {

817 
	`memy
(&
se
->
max_ack
, &
ack
->
l
, (
DB_LSN
));

818 i((
t
 = 
	`__pmgr_wake_wag_nds
(
dbv
)) != 0)

819  (
t
);

822 
	}
}

828 
	$__pmgr_wre_some
(
dbv
, 
cn
)

829 
DB_ENV
 *
dbv
;

830 
REPMGR_CONNECTION
 *
cn
;

832 
REPMGR_FLAT
 *
msg
;

833 
QUEUED_OUTPUT
 *
ouut
;

834 
bys
, 
t
;

836 !
	`STAILQ_EMPTY
(&
cn
->
outbound_queue
)) {

837 
ouut
 = 
	`STAILQ_FIRST
(&
cn
->
outbound_queue
);

838 
msg
 = 
ouut
->msg;

839 i((
bys
 = 
	`nd
(
cn
->
fd
, &
msg
->
da
[
ouut
->
offt
],

840 (
size_t
)
msg
->
ngth
 - 
ouut
->
offt
, 0)=
SOCKET_ERROR
) {

841 i((
t
 = 
t_o
=
WOULDBLOCK
)

844 
	`__db_r
(
dbv
, 
t
, "writing data");

845 
	`STAT
(
dbv
->
p_hd
->

846 
gi
->
m
.
_ci_dr
++);

847  (
DB_REP_UNAVAIL
);

851 i((
ouut
->
offt
 +(
size_t
)
bys
>
msg
->
ngth
) {

852 
	`STAILQ_REMOVE_HEAD
(&
cn
->
outbound_queue
, 
s
);

853 
	`__os_
(
dbv
, 
ouut
);

854 
cn
->
out_queue_ngth
--;

855 i(--
msg
->
f_cou
 <= 0)

856 
	`__os_
(
dbv
, 
msg
);

860 #ifde
DB_WIN32


866 i(
	`WSAEvtSe
(
cn
->
fd
, cn->
evt_obje
, 
FD_READ
|
FD_CLOSE
)

867 =
SOCKET_ERROR
) {

868 
t
 = 
t_o
;

869 
	`__db_r
(
dbv
, 
t
, "can'temove FD_WRITEvent bit");

870  (
t
);

875 
	}
}

	@../repmgr/repmgr_stat.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

14 #ifde
HAVE_STATISTICS


15 
__pmgr_t_l
 
__P
((
DB_ENV
 *, 
u_t32_t
));

16 
__pmgr_t_ses
 
__P
((
DB_ENV
 *));

17 
__pmgr_t_s
 
__P
((
DB_ENV
 *, 
u_t32_t
));

18 
__pmgr_
 
__P
((
DB_ENV
 *, 
DB_REPMGR_STAT
 **, 
u_t32_t
));

19 
__pmgr__t
 
__P
((
DB_ENV
 *, 
u_t32_t
));

28 
	$__pmgr__
(
dbv
, 
p
, 
ags
)

29 
DB_ENV
 *
dbv
;

30 
DB_REPMGR_STAT
 **
p
;

31 
u_t32_t
 
ags
;

33 
DB_THREAD_INFO
 *

;

34 
t
;

36 
	`PANIC_CHECK
(
dbv
);

37 
	`ENV_REQUIRES_CONFIG_XX
(

38 
dbv
, 
p_hd
, "DB_ENV->pmgr_", 
DB_INIT_REP
);

40 i((
t
 = 
	`__db_fchk
(
dbv
,

41 "DB_ENV->pmgr_", 
ags
, 
DB_STAT_CLEAR
)) != 0)

42  (
t
);

44 
	`ENV_ENTER
(
dbv
, 

);

45 
t
 = 
	`__pmgr_
(
dbv
, 
p
, 
ags
);

46 
	`ENV_LEAVE
(
dbv
, 

);

48  (
t
);

49 
	}
}

56 
	$__pmgr_
(
dbv
, 
p
, 
ags
)

57 
DB_ENV
 *
dbv
;

58 
DB_REPMGR_STAT
 **
p
;

59 
u_t32_t
 
ags
;

61 
DB_REP
 *
db_p
;

62 
DB_REPMGR_STAT
 *
s
;

63 
t
;

65 
db_p
 = 
dbv
->
p_hd
;

67 *
p
 = 
NULL
;

70 i((
t
 = 
	`__os_umloc
(
dbv
, (
DB_REPMGR_STAT
), &
s
)) != 0)

71  (
t
);

73 
	`memy
(
s
, &
db_p
->
gi
->
m
, (*stats));

74 i(
	`LF_ISSET
(
DB_STAT_CLEAR
))

75 
	`memt
(&
db_p
->
gi
->
m
, 0, (
DB_REPMGR_STAT
));

77 *
p
 = 
s
;

79 
	}
}

88 
	$__pmgr__t_
(
dbv
, 
ags
)

89 
DB_ENV
 *
dbv
;

90 
u_t32_t
 
ags
;

92 
DB_THREAD_INFO
 *

;

93 
t
;

95 
	`PANIC_CHECK
(
dbv
);

96 
	`ENV_REQUIRES_CONFIG_XX
(

97 
dbv
, 
p_hd
, "DB_ENV->pmgr__t", 
DB_INIT_REP
);

99 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->repmgr_stat_print",

100 
ags
, 
DB_STAT_ALL
 | 
DB_STAT_CLEAR
)) != 0)

101  (
t
);

103 
	`ENV_ENTER
(
dbv
, 

);

104 
t
 = 
	`__pmgr__t
(
dbv
, 
ags
);

105 
	`ENV_LEAVE
(
dbv
, 

);

107  (
t
);

108 
	}
}

111 
	$__pmgr__t
(
dbv
, 
ags
)

112 
DB_ENV
 *
dbv
;

113 
u_t32_t
 
ags
;

115 
u_t32_t
 
ig_ags
;

116 
t
;

118 
ig_ags
 = 
ags
;

119 
	`LF_CLR
(
DB_STAT_CLEAR
 | 
DB_STAT_SUBSYSTEM
);

120 i(
ags
 =0 || 
	`LF_ISSET
(
DB_STAT_ALL
)) {

121 i((
t
 = 
	`__pmgr_t_s
(
dbv
, 
ig_ags
)) == 0)

122 
t
 = 
	`__pmgr_t_ses
(
dbv
);

123 i(
ags
 =0 || 
t
 != 0)

124  (
t
);

127 i(
	`LF_ISSET
(
DB_STAT_ALL
) &&

128 (
t
 = 
	`__pmgr_t_l
(
dbv
, 
ig_ags
)) != 0)

129  (
t
);

132 
	}
}

135 
	$__pmgr_t_s
(
dbv
, 
ags
)

136 
DB_ENV
 *
dbv
;

137 
u_t32_t
 
ags
;

139 
DB_REPMGR_STAT
 *

;

140 
t
;

142 i((
t
 = 
	`__pmgr_
(
dbv
, &

, 
ags
)) != 0)

143  (
t
);

145 
	`__db_dl
(
dbv
, "Number of PERM messagesotcknowledged",

146 (
u_lg
)

->
_rm_ed
);

147 
	`__db_dl
(
dbv
, "Number of messages queued dueoetwork delay",

148 (
u_lg
)

->
_msgs_queued
);

149 
	`__db_dl
(
dbv
, "Number of messages discarded dueo queueength",

150 (
u_lg
)

->
_msgs_drݳd
);

151 
	`__db_dl
(
dbv
, "Number ofxisting connections dropped",

152 (
u_lg
)

->
_ci_dr
);

153 
	`__db_dl
(
dbv
, "Number of failedew connectionttempts",

154 (
u_lg
)

->
_c_
);

156 
	`__os_u
(
dbv
, 

);

159 
	}
}

162 
	$__pmgr_t_ses
(
dbv
)

163 
DB_ENV
 *
dbv
;

165 
DB_REPMGR_SITE
 *
li
;

166 
u_t
 
cou
, 
i
;

167 
t
;

169 i((
t
 = 
	`__pmgr_se_li
(
dbv
, &
cou
, &
li
)) != 0)

170  (
t
);

172 i(
cou
 == 0)

175 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

176 
	`__db_msg
(
dbv
, "DB_REPMGR site information:");

178 
i
 = 0; i < 
cou
; ++i) {

179 
	`__db_msg
(
dbv
, "%s (eid: %d,ort: %u, %sconnected)",

180 
li
[
i
].
ho
,i[i].
eid
,i[i].
pt
,

181 
li
[
i
].
us
 =
DB_REPMGR_CONNECTED
 ? "" : "dis");

184 
	`__os_u
(
dbv
, 
li
);

187 
	}
}

194 
	$__pmgr_t_l
(
dbv
, 
ags
)

195 
DB_ENV
 *
dbv
;

196 
u_t32_t
 
ags
;

198 
	`COMPQUIET
(
dbv
, 
NULL
);

199 
	`COMPQUIET
(
ags
, 0);

201 
	}
}

206 
	$__pmgr__
(
dbv
, 
p
, 
ags
)

207 
DB_ENV
 *
dbv
;

208 
DB_REPMGR_STAT
 **
p
;

209 
u_t32_t
 
ags
;

211 
	`COMPQUIET
(
p
, 
NULL
);

212 
	`COMPQUIET
(
ags
, 0);

214  (
	`__db__n_but
(
dbv
));

215 
	}
}

218 
	$__pmgr__t_
(
dbv
, 
ags
)

219 
DB_ENV
 *
dbv
;

220 
u_t32_t
 
ags
;

222 
	`COMPQUIET
(
ags
, 0);

224  (
	`__db__n_but
(
dbv
));

225 
	}
}

232 
	$__pmgr_se_li
(
dbv
, 
coup
, 
lip
)

233 
DB_ENV
 *
dbv
;

234 
u_t
 *
coup
;

235 
DB_REPMGR_SITE
 **
lip
;

237 
DB_REP
 *
db_p
;

238 
DB_REPMGR_SITE
 *
us
;

239 
REPMGR_SITE
 *
se
;

240 
size_t
 
y_size
, 
tٮ_size
;

241 
u_t
 
cou
, 
i
;

242 
locked
, 
t
;

243 *
me
;

245 
db_p
 = 
dbv
->
p_hd
;

246 i(
	`REPMGR_SYNC_INITED
(
db_p
)) {

247 
	`LOCK_MUTEX
(
db_p
->
mux
);

248 
locked
 = 
TRUE
;

250 
locked
 = 
FALSE
;

253 
t
 = 0;

254 *
coup
 = 0;

255 *
lip
 = 
NULL
;

258 i((
cou
 = 
db_p
->
se_t
) == 0)

259 
r
;

261 
y_size
 = (
DB_REPMGR_SITE
* 
cou
;

262 
tٮ_size
 = 
y_size
;

263 
i
 = 0; i < 
cou
; i++) {

264 
se
 = &
db_p
->
ses
[
i
];

267 
tٮ_size
 +
	`
(
se
->
t_addr
.
ho
) + 1;

270 i((
t
 = 
	`__os_umloc
(
dbv
, 
tٮ_size
, &
us
)) != 0)

271 
r
;

277 
me
 = (*)((
u_t8_t
 *)
us
 + 
y_size
);

278 
i
 = 0; i < 
cou
; i++) {

279 
se
 = &
db_p
->
ses
[
i
];

281 
us
[
i
].
eid
 = 
	`EID_FROM_SITE
(
se
);

283 
us
[
i
].
ho
 = 
me
;

284 ()
	`ry
(
me
, 
se
->
t_addr
.
ho
);

285 
me
 +
	`
(name) + 1;

287 
us
[
i
].
pt
 = 
se
->
t_addr
.port;

288 
us
[
i
].u
se
->
e
 =
SITE_CONNECTED
 ?

289 
DB_REPMGR_CONNECTED
 : 
DB_REPMGR_DISCONNECTED
;

292 *
coup
 = 
cou
;

293 *
lip
 = 
us
;

295 
r
: i(
locked
)

296 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

297  (
t
);

298 
	}
}

	@../repmgr/repmgr_stub.c

9 #ide
HAVE_REPLICATION_THREADS


10 
	~"db_cfig.h
"

12 
	~"db_t.h
"

18 
__db_nܕmgr
 
__P
((
DB_ENV
 *));

25 
	$__db_nܕmgr
(
dbv
)

26 
DB_ENV
 *
dbv
;

28 
	`__db_rx
(
dbv
,

30  (
DB_OPNOTSUP
);

31 
	}
}

39 
	$__pmgr_o
(
dbv
)

40 
DB_ENV
 *
dbv
;

42 
	`COMPQUIET
(
dbv
, 
NULL
);

44 
	}
}

53 
	$__pmgr_add_me_se
(
dbv
, 
ho
, 
pt
, 
eidp
, 
ags
)

54 
DB_ENV
 *
dbv
;

55 cڡ *
ho
;

56 
u_t
 
pt
;

57 *
eidp
;

58 
u_t32_t
 
ags
;

60 
	`COMPQUIET
(
ho
, 
NULL
);

61 
	`COMPQUIET
(
pt
, 0);

62 
	`COMPQUIET
(
eidp
, 
NULL
);

63 
	`COMPQUIET
(
ags
, 0);

64  (
	`__db_nܕmgr
(
dbv
));

65 
	}
}

73 
	$__pmgr_g_ack_picy
(
dbv
, 
picy
)

74 
DB_ENV
 *
dbv
;

75 *
picy
;

77 
	`COMPQUIET
(
picy
, 
NULL
);

78  (
	`__db_nܕmgr
(
dbv
));

79 
	}
}

87 
	$__pmgr_t_ack_picy
(
dbv
, 
picy
)

88 
DB_ENV
 *
dbv
;

89 
picy
;

91 
	`COMPQUIET
(
picy
, 0);

92  (
	`__db_nܕmgr
(
dbv
));

93 
	}
}

102 
	$__pmgr_t_lol_se
(
dbv
, 
ho
, 
pt
, 
ags
)

103 
DB_ENV
 *
dbv
;

104 cڡ *
ho
;

105 
u_t
 
pt
;

106 
u_t32_t
 
ags
;

108 
	`COMPQUIET
(
ho
, 
NULL
);

109 
	`COMPQUIET
(
pt
, 0);

110 
	`COMPQUIET
(
ags
, 0);

111  (
	`__db_nܕmgr
(
dbv
));

112 
	}
}

120 
	$__pmgr_se_li
(
dbv
, 
coup
, 
lip
)

121 
DB_ENV
 *
dbv
;

122 
u_t
 *
coup
;

123 
DB_REPMGR_SITE
 **
lip
;

125 
	`COMPQUIET
(
coup
, 
NULL
);

126 
	`COMPQUIET
(
lip
, 
NULL
);

127  (
	`__db_nܕmgr
(
dbv
));

128 
	}
}

136 
	$__pmgr_t
(
dbv
, 
hads
, 
ags
)

137 
DB_ENV
 *
dbv
;

138 
hads
;

139 
u_t32_t
 
ags
;

141 
	`COMPQUIET
(
hads
, 0);

142 
	`COMPQUIET
(
ags
, 0);

143  (
	`__db_nܕmgr
(
dbv
));

144 
	}
}

152 
	$__pmgr__
(
dbv
, 
p
, 
ags
)

153 
DB_ENV
 *
dbv
;

154 
DB_REPMGR_STAT
 **
p
;

155 
u_t32_t
 
ags
;

157 
	`COMPQUIET
(
p
, 
NULL
);

158 
	`COMPQUIET
(
ags
, 0);

159  (
	`__db_nܕmgr
(
dbv
));

160 
	}
}

168 
	$__pmgr__t_
(
dbv
, 
ags
)

169 
DB_ENV
 *
dbv
;

170 
u_t32_t
 
ags
;

172 
	`COMPQUIET
(
ags
, 0);

173  (
	`__db_nܕmgr
(
dbv
));

174 
	}
}

182 
	$__pmgr_hd_evt
(
dbv
, 
evt
, 
fo
)

183 
DB_ENV
 *
dbv
;

184 
u_t32_t
 
evt
;

185 *
fo
;

187 
	`COMPQUIET
(
dbv
, 
NULL
);

188 
	`COMPQUIET
(
evt
, 0);

189 
	`COMPQUIET
(
fo
, 
NULL
);

196  (
DB_EVENT_NOT_HANDLED
);

197 
	}
}

	@../repmgr/repmgr_util.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

31 
	$__pmgr_schedu_ci_m
(
dbv
, 
eid
, 
immed
)

32 
DB_ENV
 *
dbv
;

33 
u_t
 
eid
;

34 
immed
;

36 
DB_REP
 *
db_p
;

37 
REPMGR_SITE
 *
se
;

38 
REPMGR_RETRY
 *
y
;

39 
db_timeec
 
t
, 
v
;

40 
t
;

42 
db_p
 = 
dbv
->
p_hd
;

43 i((
t
 = 
	`__os_mloc
(
dbv
, (*
y
), &retry)) != 0)

44  (
t
);

46 
	`__os_gtime
(
dbv
, &
t
);

47 i(
immed
)

48 
	`TAILQ_INSERT_HEAD
(&
db_p
->
s
, 
y
, 
s
);

50 
	`DB_TIMEOUT_TO_TIMESPEC
(
db_p
->
ci_y_wa
, &
v
);

51 
	`timeedd
(&
t
, &
v
);

52 
	`TAILQ_INSERT_TAIL
(&
db_p
->
s
, 
y
, 
s
);

54 
y
->
eid
 =id;

55 
y
->
time
 = 
t
;

57 
se
 = 
	`SITE_FROM_EID
(
eid
);

58 
se
->
e
 = 
SITE_IDLE
;

59 
se
->
f
.
y
 =etry;

61  (
	`__pmgr_wake_ma_thad
(
dbv
));

62 
	}
}

71 
	$__pmgr_t_f_adg
(
c
)

72 
REPMGR_CONNECTION
 *
c
;

74 
c
->
adg_pha
 = 
SIZES_PHASE
;

75 
	`__pmgr_iovec_
(&
c
->
iovecs
);

76 
	`__pmgr_add_bufr
(&
c
->
iovecs
, &c->
msg_ty
,

77 (
c
->
msg_ty
));

78 
	`__pmgr_add_bufr
(&
c
->
iovecs
, &c->
cڌ_size_buf
,

79 (
c
->
cڌ_size_buf
));

80 
	`__pmgr_add_bufr
(&
c
->
iovecs
, &c->
c_size_buf
,

81 (
c
->
c_size_buf
));

82 
	}
}

93 
	$__pmgr_w_ci
(
dbv
, 
c
, 
s
, 
ags
)

94 
DB_ENV
 *
dbv
;

95 
REPMGR_CONNECTION
 **
c
;

96 
sock_t
 
s
;

97 
u_t32_t
 
ags
;

99 
DB_REP
 *
db_p
;

100 
REPMGR_CONNECTION
 *
c
;

101 
t
;

103 
db_p
 = 
dbv
->
p_hd
;

104 i((
t
 = 
	`__os_mloc
(
dbv
, (
REPMGR_CONNECTION
), &
c
)) != 0)

105  (
t
);

107 
c
->
fd
 = 
s
;

108 
c
->
ags
 = flags;

110 
	`STAILQ_INIT
(&
c
->
outbound_queue
);

111 
c
->
out_queue_ngth
 = 0;

113 
	`__pmgr_t_f_adg
(
c
);

114 
	`TAILQ_INSERT_TAIL
(&
db_p
->
cis
, 
c
, 
s
);

115 *
c
 = 
c
;

118 
	}
}

128 
	$__pmgr_w_se
(
dbv
, 
s
, 
addr
, 
e
)

129 
DB_ENV
 *
dbv
;

130 
REPMGR_SITE
 **
s
;

131 cڡ 
pmgr_Ïddr_t
 *
addr
;

132 
e
;

134 
DB_REP
 *
db_p
;

135 
REPMGR_SITE
 *
se
;

136 
SITE_STRING_BUFFER
 
bufr
;

137 
u_t
 
w_se_max
, 
eid
;

138 
t
;

140 
db_p
 = 
dbv
->
p_hd
;

141 i(
db_p
->
se_t
 >db_p->
se_max
) {

142 
	#INITIAL_SITES_ALLOCATION
 10

	)

143 
w_se_max
 = 
db_p
->
se_max
 == 0 ?

144 
INITIAL_SITES_ALLOCATION
 : 
db_p
->
se_max
 * 2;

145 i((
t
 = 
	`__os_loc
(
dbv
,

146 (
REPMGR_SITE
* 
w_se_max
, &
db_p
->
ses
)) != 0)

147  (
t
);

148 
db_p
->
se_max
 = 
w_se_max
;

150 
eid
 = 
db_p
->
se_t
++;

152 
se
 = &
db_p
->
ses
[
eid
];

154 
	`memy
(&
se
->
t_addr
, 
addr
, (*addr));

155 
	`ZERO_LSN
(
se
->
max_ack
);

156 
se
->
iܙy
 = -1;

157 
se
->
e
 = state;

159 
	`RPRINT
(
dbv
, (dbv, "EID %u iassigd f %s", 
eid
,

160 
	`__pmgr_fm_se_loc
(
se
, 
bufr
)));

161 *
s
 = 
se
;

163 
	}
}

172 
	$__pmgr_nup_Ïddr
(
dbv
, 
addr
)

173 
DB_ENV
 *
dbv
;

174 
pmgr_Ïddr_t
 *
addr
;

176 i(
addr
->
addss_li
 !
NULL
) {

177 
	`__db_addrfo
(
dbv
, 
addr
->
addss_li
);

178 
addr
->
addss_li
 =ddr->
cut
 = 
NULL
;

180 i(
addr
->
ho
 !
NULL
) {

181 
	`__os_
(
dbv
, 
addr
->
ho
);

182 
addr
->
ho
 = 
NULL
;

184 
	}
}

190 
	$__pmgr_iovec_
(
v
)

191 
REPMGR_IOVECS
 *
v
;

193 
v
->
offt
 = v->
cou
 = 0;

194 
v
->
tٮ_bys
 = 0;

195 
	}
}

204 
	$__pmgr_add_bufr
(
v
, 
addss
, 
ngth
)

205 
REPMGR_IOVECS
 *
v
;

206 *
addss
;

207 
size_t
 
ngth
;

209 
v
->
ves
[v->
cou
].
iov_ba
 = 
addss
;

210 
v
->
ves
[v->
cou
++].
iov_n
 = 
ngth
;

211 
v
->
tٮ_bys
 +
ngth
;

212 
	}
}

218 
	$__pmgr_add_dbt
(
v
, 
dbt
)

219 
REPMGR_IOVECS
 *
v
;

220 cڡ 
DBT
 *
dbt
;

222 
v
->
ves
[v->
cou
].
iov_ba
 = 
dbt
->
da
;

223 
v
->
ves
[v->
cou
++].
iov_n
 = 
dbt
->
size
;

224 
v
->
tٮ_bys
 +
dbt
->
size
;

225 
	}
}

237 
	$__pmgr_upde_csumed
(
v
, 
by_cou
)

238 
REPMGR_IOVECS
 *
v
;

239 
size_t
 
by_cou
;

241 
db_iovec_t
 *
iov
;

242 
i
;

244 
i
 = 
v
->
offt
; ; i++) {

245 
	`DB_ASSERT
(
NULL
, 
i
 < 
v
->
cou
 && 
by_cou
 > 0);

246 
iov
 = &
v
->
ves
[
i
];

247 i(
by_cou
 > 
iov
->
iov_n
) {

252 
by_cou
 -
iov
->
iov_n
;

255 
iov
->
iov_n
 -
by_cou
;

256 i(
iov
->
iov_n
 > 0) {

261 
iov
->
iov_ba
 = (*)

262 ((
u_t8_t
 *)
iov
->
iov_ba
 + 
by_cou
);

263 
v
->
offt
 = 
i
;

269 
v
->
offt
 = 
i
+1;

275  (
v
->
offt
 >v->
cou
);

278 
	}
}

289 
	$__pmgr_e_my_addr
(
dbv
, 
dbt
)

290 
DB_ENV
 *
dbv
;

291 
DBT
 *
dbt
;

293 
DB_REP
 *
db_p
;

294 
size_t
 
size
, 
hn
;

295 
u_t16_t
 
pt_bufr
;

296 
u_t8_t
 *
r
;

297 
t
;

299 
db_p
 = 
dbv
->
p_hd
;

305 
pt_bufr
 = 
	`hts
(
db_p
->
my_addr
.
pt
);

306 
size
 = (
pt_bufr
) +

307 (
hn
 = 
	`
(
db_p
->
my_addr
.
ho
) + 1);

308 i((
t
 = 
	`__os_mloc
(
dbv
, 
size
, &
r
)) != 0)

309  (
t
);

311 
	`DB_INIT_DBT
(*
dbt
, 
r
, 
size
);

313 
	`memy
(
r
, &
pt_bufr
, (port_buffer));

314 
r
 = &r[(
pt_bufr
)];

315 
	`memy
(
r
, 
db_p
->
my_addr
.
ho
, 
hn
);

318 
	}
}

327 
u_t


328 
	$__pmgr_g_nses
(
db_p
)

329 
DB_REP
 *
db_p
;

331 i(
db_p
->
cfig_nses
 > 0)

332  ((
u_t
)
db_p
->
cfig_nses
);

337  (
db_p
->
se_t
 + 1);

338 
	}
}

344 
	$__pmgr_thad_u
(
dbv
, 
why
)

345 
DB_ENV
 *
dbv
;

346 
why
;

348 ()
	`__pmgr__thads
(
dbv
);

349 ()
	`__db_nic
(
dbv
, 
why
);

350 
	}
}

360 
	$__pmgr_fm_eid_loc
(
db_p
, 
eid
, 
bufr
)

361 
DB_REP
 *
db_p
;

362 
eid
;

363 *
bufr
;

365 i(
	`IS_VALID_EID
(
eid
))

366  (
	`__pmgr_fm_se_loc
(
	`SITE_FROM_EID
(
eid
), 
bufr
));

368 
	`tf
(
bufr
, 
MAX_SITE_LOC_STRING
, "(unidentified site)");

369  (
bufr
);

370 
	}
}

376 
	$__pmgr_fm_se_loc
(
se
, 
bufr
)

377 
REPMGR_SITE
 *
se
;

378 *
bufr
;

380 
	`tf
(
bufr
, 
MAX_SITE_LOC_STRING
, "site %s:%lu",

381 
se
->
t_addr
.
ho
, (
u_lg
)se->t_addr.
pt
);

382  (
bufr
);

383 
	}
}

393 
	$__pmgr_timeec_diff_now
(
dbv
, 
wh
, 
su
)

394 
DB_ENV
 *
dbv
;

395 
db_timeec
 *
wh
, *
su
;

397 
db_timeec
 
now
;

399 
	`__os_gtime
(
dbv
, &
now
);

400 i(
	`timeeccmp
(&
now
, 
wh
, >=))

401 
	`timeecr
(
su
);

403 *
su
 = *
wh
;

404 
	`timeecsub
(
su
, &
now
);

406 
	}
}

412 
	$__pmgr_pt
(
dbv
, 
ags
)

413 
DB_ENV
 *
dbv
;

414 
u_t32_t
 
ags
;

416 
DBT
 
my_addr
;

417 
t
;

419 i((
t
 = 
	`__pmgr_e_my_addr
(
dbv
, &
my_addr
)) != 0)

420  (
t
);

421 
t
 = 
	`__p_t
(
dbv
, &
my_addr
, 
ags
);

422 
	`__os_
(
dbv
, 
my_addr
.
da
);

423 i(
t
 != 0)

424 
	`__db_r
(
dbv
, 
t
, "rep_start");

425  (
t
);

426 
	}
}

	@../repmgr/repmgr_windows.c

9 
	~"db_cfig.h
"

11 
	#__INCLUDE_NETWORKING
 1

	)

12 
	~"db_t.h
"

14 
	s__ack_wa
 {

15 
HANDLE
 
	mevt
;

16 cڡ 
DB_LSN
 *
	mlp
;

17 
__ack_wa
 *
	mxt_
;

18 } 
	tACK_WAITER
;

20 
	#WAITER_SLOT_IN_USE
(
w
((w)->
lp
 !
NULL
)

	)

32 
	s__ack_was_b
 {

33 
__ack_wa
 *
	my
;

34 
	msize
;

35 
	mxt_ava
;

36 
__ack_wa
 *
	mf_
;

39 
lo_wa_
 
__P
((
DB_ENV
 *, 
ACK_WAITER
 **));

40 
_wa_
 
__P
((
DB_ENV
 *, 
ACK_WAITER
 *));

41 
hd_comi
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *));

42 
fish_cg
 
__P
((
DB_ENV
 *, 
REPMGR_CONNECTION
 *,

43 
LPWSANETWORKEVENTS
));

46 
	$__pmgr_thad_t
(
dbv
, 
ruab
)

47 
DB_ENV
 *
dbv
;

48 
REPMGR_RUNNABLE
 *
ruab
;

50 
HANDLE
 
thad_id
;

52 
ruab
->
fished
 = 
FALSE
;

54 
thad_id
 = 
	`CeThad
(
NULL
, 0,

55 (
LPTHREAD_START_ROUTINE
)
ruab
->
run
, 
dbv
, 0, 
NULL
);

56 i(
thad_id
 =
NULL
)

57  (
	`GLaE
());

58 
ruab
->
thad_id
 =hread_id;

60 
	}
}

63 
	$__pmgr_thad_jo
(
thad
)

64 
REPMGR_RUNNABLE
 *
thad
;

66 i(
	`WaFSgObje
(
thad
->
thad_id
, 
INFINITE
=
WAIT_OBJECT_0
)

68  (
	`GLaE
());

69 
	}
}

72 
	$__pmgr_t_nblockg
(
s
)

73 
SOCKET
 
s
;

75 
t
;

76 
u_lg
 
g
;

78 
g
 = 1;

79 i((
t
 = 
	`iolsock
(
s
, 
FIONBIO
, &
g
)=
SOCKET_ERROR
)

80  (
	`WSAGLaE
());

82 
	}
}

92 
	$__pmgr_wake_wag_nds
(
dbv
)

93 
DB_ENV
 *
dbv
;

95 
DB_REP
 *
db_p
;

96 
ACK_WAITER
 *

;

97 
i
, 
t
;

99 
t
 = 0;

100 
db_p
 = 
dbv
->
p_hd
;

101 
i
=0; i<
db_p
->
was
->
xt_ava
; i++) {

102 

 = &
db_p
->
was
->
y
[
i
];

103 i(!
	`WAITER_SLOT_IN_USE
(

))

105 i(
	`__pmgr_is_rmt
(
dbv
, 

->
lp
))

106 i(!
	`SEvt
(

->
evt
&& 
t
 == 0)

107 
t
 = 
	`GLaE
();

109  (
t
);

110 
	}
}

117 
	$__pmgr_awa_ack
(
dbv
, 
lp
)

118 
DB_ENV
 *
dbv
;

119 cڡ 
DB_LSN
 *
lp
;

121 
DB_REP
 *
db_p
;

122 
ACK_WAITER
 *
me
;

123 
DWORD
 
t
;

124 
DWORD
 
timeout
;

126 
db_p
 = 
dbv
->
p_hd
;

128 i((
t
 = 
	`lo_wa_
(
dbv
, &
me
)) != 0)

129 
r
;

132 
timeout
 = 
db_p
->
ack_timeout
 > 0 ?

133 ((
db_p
->
ack_timeout
 + (
US_PER_MS
 - 1)/ US_PER_MS: 
INFINITE
;

134 
me
->
lp
 =snp;

135 i((
t
 = 
	`SiglObjeAndWa
(
db_p
->
mux
, 
me
->
evt
, 
timeout
,

136 
FALSE
)=
WAIT_FAILED
) {

137 
t
 = 
	`GLaE
();

138 } i(
t
 =
WAIT_TIMEOUT
)

139 
t
 = 
DB_REP_UNAVAIL
;

141 
	`DB_ASSERT
(
dbv
, 
t
 =
WAIT_OBJECT_0
);

143 
	`LOCK_MUTEX
(
db_p
->
mux
);

144 
	`_wa_
(
dbv
, 
me
);

146 
r
:

147  (
t
);

148 
	}
}

155 
	$lo_wa_
(
dbv
, 
sup
)

156 
DB_ENV
 *
dbv
;

157 
ACK_WAITER
 **
sup
;

159 
DB_REP
 *
db_p
;

160 
ACK_WAITERS_TABLE
 *
b
;

161 
ACK_WAITER
 *
w
;

162 
t
;

164 
db_p
 = 
dbv
->
p_hd
;

165 
b
 = 
db_p
->
was
;

166 i(
b
->
f_
 =
NULL
) {

167 i(
b
->
xt_ava
 >b->
size
) {

171 
b
->
size
 *= 2;

172 
w
 = 
b
->
y
;

173 i((
t
 = 
	`__os_loc
(
dbv
, 
b
->
size
 * (*
w
),

174 &
w
)) != 0)

175  (
t
);

176 
b
->
y
 = 
w
;

182 
w
 = &
b
->
y
[b->
xt_ava
++];

183 i((
w
->
evt
 = 
	`CeEvt
(
NULL
, 
FALSE
, FALSE, NULL)) ==

184 
NULL
) {

189 --
b
->
xt_ava
;

190  (
	`GLaE
());

193 
w
 = 
b
->
f_
;

194 
b
->
f_
 = 
w
->
xt_
;

196 *
sup
 = 
w
;

198 
	}
}

201 
	$_wa_
(
dbv
, 

)

202 
DB_ENV
 *
dbv
;

203 
ACK_WAITER
 *

;

205 
DB_REP
 *
db_p
;

207 
db_p
 = 
dbv
->
p_hd
;

209 

->
lp
 = 
NULL
;

210 

->
xt_
 = 
db_p
->
was
->
f_
;

211 
db_p
->
was
->
f_
 = 

;

212 
	}
}

220 
	$__pmgr__sync
(
dbv
, 
db_p
)

221 
DB_ENV
 *
dbv
;

222 
DB_REP
 *
db_p
;

224 
	#INITIAL_ALLOCATION
 5

	)

225 
ACK_WAITERS_TABLE
 *
b
;

226 
t
;

228 
db_p
->
sigr
 = db_p->
queue_nemy
 = db_p->
check_ei
 =

229 
db_p
->
mux
 = 
NULL
;

230 
b
 = 
NULL
;

232 i((
db_p
->
sigr
 = 
	`CeEvt
(
NULL
,

233 
FALSE
,

234 
FALSE
,

235 
NULL
)) == NULL)

236 
gr
;

238 i((
db_p
->
queue_nemy
 = 
	`CeEvt
(
NULL
, 
TRUE
, 
FALSE
, NULL))

239 =
NULL
)

240 
gr
;

242 i((
db_p
->
check_ei
 = 
	`CeEvt
(
NULL
, 
FALSE
, FALSE, NULL))

243 =
NULL
)

244 
gr
;

246 i((
db_p
->
mux
 = 
	`CeMux
(
NULL
, 
FALSE
, NULL)) == NULL)

247 
gr
;

249 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
ACK_WAITERS_TABLE
), &
b
))

251 
r
;

253 i((
t
 = 
	`__os_oc
(
dbv
, 
INITIAL_ALLOCATION
, (
ACK_WAITER
),

254 &
b
->
y
)) != 0)

255 
r
;

257 
b
->
size
 = 
INITIAL_ALLOCATION
;

258 
b
->
f_
 = 
NULL
;

259 
b
->
xt_ava
 = 0;

262 
db_p
->
was
 = 
b
;

265 
gr
:

266 
t
 = 
	`GLaE
();

267 
r
:

268 i(
db_p
->
check_ei
 !
NULL
)

269 
	`CloHd
(
db_p
->
check_ei
);

270 i(
db_p
->
queue_nemy
 !
NULL
)

271 
	`CloHd
(
db_p
->
queue_nemy
);

272 i(
db_p
->
sigr
 !
NULL
)

273 
	`CloHd
(
db_p
->
sigr
);

274 i(
db_p
->
mux
 !
NULL
)

275 
	`CloHd
(
db_p
->
mux
);

276 i(
b
 !
NULL
)

277 
	`__os_
(
dbv
, 
b
);

278 
db_p
->
was
 = 
NULL
;

279  (
t
);

280 
	}
}

283 
	$__pmgr_o_sync
(
dbv
)

284 
DB_ENV
 *
dbv
;

286 
DB_REP
 *
db_p
;

287 
i
, 
t
;

289 
db_p
 = 
dbv
->
p_hd
;

290 i(!(
	`REPMGR_SYNC_INITED
(
db_p
)))

293 
t
 = 0;

294 
i
 = 0; i < 
db_p
->
was
->
xt_ava
; i++) {

295 i(!
	`CloHd
(
db_p
->
was
->
y
[
i
].
evt
&& 
t
 == 0)

296 
t
 = 
	`GLaE
();

298 
	`__os_
(
dbv
, 
db_p
->
was
->
y
);

299 
	`__os_
(
dbv
, 
db_p
->
was
);

301 i(!
	`CloHd
(
db_p
->
check_ei
&& 
t
 == 0)

302 
t
 = 
	`GLaE
();

304 i(!
	`CloHd
(
db_p
->
queue_nemy
&& 
t
 == 0)

305 
t
 = 
	`GLaE
();

307 i(!
	`CloHd
(
db_p
->
sigr
&& 
t
 == 0)

308 
t
 = 
	`GLaE
();

310 i(!
	`CloHd
(
db_p
->
mux
&& 
t
 == 0)

311 
t
 = 
	`GLaE
();

313 
db_p
->
was
 = 
NULL
;

314  (
t
);

315 
	}
}

325 
	$__pmgr_t_
(
dbv
, 
db_p
)

326 
DB_ENV
 *
dbv
;

327 
DB_REP
 *
db_p
;

329 
t
;

332 i(!
db_p
->
w_ed
 && (
t
 = 
	`__pmgr_w_
(
dbv
)) != 0)

333 
r
;

335 i((
t
 = 
	`__pmgr_li
(
dbv
)) == 0)

338 i(
	`WSAC˪up
(=
SOCKET_ERROR
) {

339 
t
 = 
t_o
;

340 
	`__db_r
(
dbv
, 
t
, "WSACleanup");

343 
r
: 
db_p
->
li_fd
 = 
INVALID_SOCKET
;

344  (
t
);

345 
	}
}

354 
	$__pmgr_w_
(
dbv
)

355 
DB_ENV
 *
dbv
;

357 
DB_REP
 *
db_p
;

358 
WSADATA
 
wDa
;

359 
t
;

361 
db_p
 = 
dbv
->
p_hd
;

363 i((
t
 = 
	`WSASup
(
	`MAKEWORD
(2, 2), &
wDa
)) != 0) {

364 
	`__db_r
(
dbv
, 
t
, "unableo initialize Windowsetworking");

365  (
t
);

367 
db_p
->
w_ed
 = 
TRUE
;

370 
	}
}

373 
	$__pmgr_lock_mux
(
mux
)

374 
mgr_mux_t
 *
mux
;

376 i(
	`WaFSgObje
(*
mux
, 
INFINITE
=
WAIT_OBJECT_0
)

378  (
	`GLaE
());

379 
	}
}

382 
	$__pmgr_uock_mux
(
mux
)

383 
mgr_mux_t
 *
mux
;

385 i(
	`RMux
(*
mux
))

387  (
	`GLaE
());

388 
	}
}

391 
	$__pmgr_sigl
(
v
)

392 
cd_v_t
 *
v
;

394  (
	`SEvt
(*
v
? 0 : 
	`GLaE
());

395 
	}
}

398 
	$__pmgr_wake_ma_thad
(
dbv
)

399 
DB_ENV
 *
dbv
;

401 i(!
	`SEvt
(
dbv
->
p_hd
->
sigr
))

402  (
	`GLaE
());

404 
	}
}

407 
	$__pmgr_wrev
(
fd
, 
iovec
, 
buf_cou
, 
by_cou_p
)

408 
sock_t
 
fd
;

409 
db_iovec_t
 *
iovec
;

410 
buf_cou
;

411 
size_t
 *
by_cou_p
;

413 
DWORD
 
bys
;

415 i(
	`WSASd
(
fd
, 
iovec
,

416 (
DWORD
)
buf_cou
, &
bys
, 0, 
NULL
, NULL=
SOCKET_ERROR
)

417  (
t_o
);

419 *
by_cou_p
 = (
size_t
)
bys
;

421 
	}
}

424 
	$__pmgr_adv
(
fd
, 
iovec
, 
buf_cou
, 
x_cou_p
)

425 
sock_t
 
fd
;

426 
db_iovec_t
 *
iovec
;

427 
buf_cou
;

428 
size_t
 *
x_cou_p
;

430 
DWORD
 
bys
, 
ags
;

432 
ags
 = 0;

433 i(
	`WSARecv
(
fd
, 
iovec
,

434 (
DWORD
)
buf_cou
, &
bys
, &
ags
, 
NULL
, NULL=
SOCKET_ERROR
)

435  (
t_o
);

437 *
x_cou_p
 = (
size_t
)
bys
;

439 
	}
}

442 
	$__pmgr__lo
(
dbv
)

443 
DB_ENV
 *
dbv
;

445 
DWORD
 
_timeout
;

446 
DB_REP
 *
db_p
;

447 
REPMGR_CONNECTION
 *
cn
, *
xt
;

448 
REPMGR_RETRY
 *
y
;

449 
WSAEVENT
 
evts
[
WSA_MAXIMUM_WAIT_EVENTS
];

450 
REPMGR_CONNECTION
 *
cis
[
WSA_MAXIMUM_WAIT_EVENTS
];

451 
DWORD
 
vts
, 
t
;

452 
db_timeec
 
timeout
;

453 
WSAEVENT
 
li_evt
;

454 
WSANETWORKEVENTS
 
t_evts
;

455 
ow_cڌ
, 
i
;

457 
db_p
 = 
dbv
->
p_hd
;

459 i((
li_evt
 = 
	`WSACeEvt
()=
WSA_INVALID_EVENT
) {

460 
	`__db_r
(

461 
dbv
, 
t_o
, "can't createvent foristen socket");

462  (
t_o
);

464 i(
	`WSAEvtSe
(
db_p
->
li_fd
, 
li_evt
, 
FD_ACCEPT
) ==

465 
SOCKET_ERROR
) {

466 
t
 = 
t_o
;

467 
	`__db_r
(
dbv
, 
t
, "can'tnablevent foristener");

468 
out
;

471 
	`LOCK_MUTEX
(
db_p
->
mux
);

472 i((
t
 = 
	`__pmgr_f_y_cis
(
dbv
)) != 0)

473 
uock
;

474 
ow_cڌ
 = 
FALSE
;

477 
evts
[0] = 
db_p
->
sigr
;

478 
evts
[1] = 
li_evt
;

479 
vts
 = 2;

490 
	`TAILQ_FOREACH
(
cn
, &
db_p
->
cis
, 
s
) {

491 i(
	`F_ISSET
(
cn
, 
CONN_CONNECTING
) ||

492 !
	`STAILQ_EMPTY
(&
cn
->
outbound_queue
) ||

493 (!
ow_cڌ
 || !
	`IS_VALID_EID
(
cn
->
eid
))) {

494 
evts
[
vts
] = 
cn
->
evt_obje
;

495 
cis
[
vts
++] = 
cn
;

504 i(
	`TAILQ_EMPTY
(&
db_p
->
s
))

505 
_timeout
 = 
WSA_INFINITE
;

507 
y
 = 
	`TAILQ_FIRST
(&
db_p
->
s
);

509 
	`__pmgr_timeec_diff_now
(

510 
dbv
, &
y
->
time
, &
timeout
);

511 
_timeout
 =

512 (
DWORD
)(
timeout
.
tv_c
 * 
MS_PER_SEC
 +

513 
timeout
.
tv_nc
 / 
NS_PER_MS
);

516 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

517 
t
 = 
	`WSAWaFMuɝEvts
(

518 
vts
, 
evts
, 
FALSE
, 
_timeout
, FALSE);

519 i(
db_p
->
fished
) {

520 
t
 = 0;

521 
out
;

523 
	`LOCK_MUTEX
(
db_p
->
mux
);

533 
cn
 = 
	`TAILQ_FIRST
(&
db_p
->
cis
);

534 
cn
 !
NULL
;

535 
cn
 = 
xt
) {

536 
xt
 = 
	`TAILQ_NEXT
(
cn
, 
s
);

537 i(
	`F_ISSET
(
cn
, 
CONN_DEFUNCT
))

538 
	`__pmgr_nup_ci
(
dbv
, 
cn
);

546 i(
t
 >
WSA_WAIT_EVENT_0
 &&

547 
t
 < 
WSA_WAIT_EVENT_0
 + 
vts
) {

548 
i
 = 
t
 - 
WSA_WAIT_EVENT_0
) {

553 i((
t
 = 
	`WSAEnumNwkEvts
(

554 
db_p
->
li_fd
, 
li_evt
,

555 &
t_evts
)=
SOCKET_ERROR
) {

556 
t
 = 
t_o
;

557 
uock
;

559 
	`DB_ASSERT
(
dbv
,

560 
t_evts
.
lNwkEvts
 & 
FD_ACCEPT
);

561 i((
t
 = 
t_evts
.
iECode
[
FD_ACCEPT_BIT
])

563 
uock
;

564 i((
t
 = 
	`__pmgr_ac
(
dbv
)) != 0)

565 
uock
;

568 i((
t
 = 
	`hd_comi
(
dbv
,

569 
cis
[
i
])) != 0)

570 
uock
;

573 } i(
t
 =
WSA_WAIT_TIMEOUT
) {

574 i((
t
 = 
	`__pmgr_y_cis
(
dbv
)) != 0)

575 
uock
;

576 } i(
t
 =
WSA_WAIT_FAILED
) {

577 
t
 = 
t_o
;

578 
uock
;

582 
uock
:

583 
	`UNLOCK_MUTEX
(
db_p
->
mux
);

584 
out
:

585 i(!
	`CloHd
(
li_evt
&& 
t
 == 0)

586 
t
 = 
	`GLaE
();

587  (
t
);

588 
	}
}

596 
	$hd_comi
(
dbv
, 
cn
)

597 
DB_ENV
 *
dbv
;

598 
REPMGR_CONNECTION
 *
cn
;

600 
t
;

601 
WSANETWORKEVENTS
 
evts
;

603 i((
t
 = 
	`WSAEnumNwkEvts
(
cn
->
fd
, cn->
evt_obje
, &
evts
))

604 =
SOCKET_ERROR
) {

605 
	`__db_r
(
dbv
, 
t_o
, "EnumNetworkEvents");

606 
	`STAT
(
dbv
->
p_hd
->
gi
->
m
.
_ci_dr
++);

607 
t
 = 
DB_REP_UNAVAIL
;

608 
r
;

611 i(
	`F_ISSET
(
cn
, 
CONN_CONNECTING
)) {

612 i((
t
 = 
	`fish_cg
(
dbv
, 
cn
, &
evts
)) != 0)

613 
r
;

615 i(
evts
.
lNwkEvts
 & 
FD_CLOSE
) {

616 
	`__db_r
(
dbv
,

617 
evts
.
iECode
[
FD_CLOSE_BIT
],

619 
	`STAT
(
dbv
->
p_hd
->

620 
gi
->
m
.
_ci_dr
++);

621 
t
 = 
DB_REP_UNAVAIL
;

622 
r
;

625 i(
evts
.
lNwkEvts
 & 
FD_WRITE
) {

626 i(
evts
.
iECode
[
FD_WRITE_BIT
] != 0) {

627 
	`__db_r
(
dbv
,

628 
evts
.
iECode
[
FD_WRITE_BIT
],

630 
	`STAT
(
dbv
->
p_hd
->

631 
gi
->
m
.
_ci_dr
++);

632 
t
 = 
DB_REP_UNAVAIL
;

633 
r
;

634 } i((
t
 =

635 
	`__pmgr_wre_some
(
dbv
, 
cn
)) != 0)

636 
r
;

639 i(
evts
.
lNwkEvts
 & 
FD_READ
) {

640 i(
evts
.
iECode
[
FD_READ_BIT
] != 0) {

641 
	`__db_r
(
dbv
,

642 
evts
.
iECode
[
FD_READ_BIT
],

644 
	`STAT
(
dbv
->
p_hd
->

645 
gi
->
m
.
_ci_dr
++);

646 
t
 = 
DB_REP_UNAVAIL
;

647 
r
;

648 } i((
t
 =

649 
	`__pmgr_ad_om_se
(
dbv
, 
cn
)) != 0)

650 
r
;

656 
r
: i(
t
 =
DB_REP_UNAVAIL
)

657  (
	`__pmgr_bu_ci
(
dbv
, 
cn
, 
TRUE
));

658  (
t
);

659 
	}
}

662 
	$fish_cg
(
dbv
, 
cn
, 
evts
)

663 
DB_ENV
 *
dbv
;

664 
REPMGR_CONNECTION
 *
cn
;

665 
LPWSANETWORKEVENTS
 
evts
;

667 
DB_REP
 *
db_p
;

668 
u_t
 
eid
;

670 
t
 ;

673 i(!(
evts
->
lNwkEvts
 & 
FD_CONNECT
))

676 
	`F_CLR
(
cn
, 
CONN_CONNECTING
);

678 i((
t
 = 
evts
->
iECode
[
FD_CONNECT_BIT
]) != 0) {

687 
	`__db_r
(
dbv
, 
t
, "connecting");

688 
r
;

691 i(
	`WSAEvtSe
(
cn
->
fd
, cn->
evt_obje
, 
FD_READ
 | 
FD_CLOSE
) ==

692 
SOCKET_ERROR
) {

693 
t
 = 
t_o
;

694 
	`__db_r
(
dbv
, 
t
, "settingvent bits foreading");

695  (
t
);

698  (
	`__pmgr_nd_hdshake
(
dbv
, 
cn
));

700 
r
:

701 
db_p
 = 
dbv
->
p_hd
;

702 
eid
 = 
cn
->eid;

703 
	`DB_ASSERT
(
dbv
, 
	`IS_VALID_EID
(
eid
));

705 i(
	`ADDR_LIST_NEXT
(&
	`SITE_FROM_EID
(
eid
)->
t_addr
=
NULL
) {

706 
	`STAT
(
db_p
->
gi
->
m
.
_c_
++);

707  (
DB_REP_UNAVAIL
);

710 
	`DB_ASSERT
(
dbv
, !
	`TAILQ_EMPTY
(&
db_p
->
cis
));

711 
	`__pmgr_nup_ci
(
dbv
, 
cn
);

712 
t
 = 
	`__pmgr_c_se
(
dbv
, 
eid
);

713 
	`DB_ASSERT
(
dbv
, 
t
 !
DB_REP_UNAVAIL
);

714  (
t
);

715 
	}
}

	@../rpc_client/client.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/txn.h
"

16 #ifde
HAVE_SYSTEM_INCLUDE_FILES


17 #ifde
HAVE_VXWORKS


18 
	~<cLib.h
>

20 
	~<c/c.h
>

23 
	~"db_rv.h
"

24 
	~"dbc_auto/c__ext.h
"

26 
__db_c_deroy
 
__P
((
DBC
 *));

27 
__db_txn_o
 
__P
((
DB_ENV
 *));

37 
	$__db_v_t_c_rv
(
dbv
, 

, 
ho
, 
tc
, 
sc
, 
ags
)

38 
DB_ENV
 *
dbv
;

39 *

;

40 cڡ *
ho
;

41 
tc
, 
sc
;

42 
u_t32_t
 
ags
;

44 
CLIENT
 *

;

45 
timev
 

;

47 
	`COMPQUIET
(
ags
, 0);

49 #ifde
HAVE_VXWORKS


50 i(
	`cTaskIn
() != 0) {

51 
	`__db_rx
(
dbv
, "Couldot initialize VxWorks RPC");

52  (
ERROR
);

55 i(
	`RPC_ON
(
dbv
)) {

56 
	`__db_rx
(
dbv
, "Already setn RPC handle");

57  (
EINVAL
);

63 i(

 =
NULL
) {

64 i((

 = 
	`_
((*)
ho
, 
DB_RPC_SERVERPROG
,

65 
DB_RPC_SERVERVERS
, "t")=
NULL
) {

66 
	`__db_rx
(
dbv
, 
	`_r
((*)
ho
));

67  (
DB_NOSERVER
);

69 i(
tc
 != 0) {

70 

.
tv_c
 = 
tc
;

71 

.
tv_uc
 = 0;

72 ()
	`_cڌ
(

, 
CLSET_TIMEOUT
, (*)&

);

75 

 = (
CLIENT
 *)

;

76 
	`F_SET
(
dbv
, 
DB_ENV_RPCCLIENT_GIVEN
);

78 
dbv
->
_hd
 = 

;

80  (
	`__db_v_
(
dbv
, 
sc
));

81 
	}
}

93 
	$__db_v_o_wp
(
dbv
, 
ags
)

94 
DB_ENV
 * 
dbv
;

95 
u_t32_t
 
ags
;

97 
t
, 
t_t
;

99 
t
 = 
	`__db_v_o
(
dbv
, 
ags
);

100 
t_t
 = 
	`__db_esh
(
dbv
);

101 i(
t
 =0 && 
t_t
 != 0)

102 
t
 = 
t_t
;

103  (
t
);

104 
	}
}

116 
	$__db_v_ݒ_wp
(
dbv
, 
home
, 
ags
, 
mode
)

117 
DB_ENV
 * 
dbv
;

118 cڡ * 
home
;

119 
u_t32_t
 
ags
;

120 
mode
;

122 
t
;

124 i(
	`LF_ISSET
(
DB_THREAD
)) {

125 
	`__db_rx
(
dbv
, "DB_THREADotllowed on RPC clients");

126  (
EINVAL
);

129 i((
t
 = 
	`__v_cfig
(
dbv
, 
home
, 
ags
, 
mode
)) != 0)

130  (
t
);

132  (
	`__db_v_ݒ
(
dbv
, dbv->
db_home
, 
ags
, 
mode
));

133 
	}
}

146 
	$__db_db_ݒ_wp
(
dbp
, 
tx
, 
me
, 
subdb
, 
ty
, 
ags
, 
mode
)

147 
DB
 * 
dbp
;

148 
DB_TXN
 * 
tx
;

149 cڡ * 
me
;

150 cڡ * 
subdb
;

151 
DBTYPE
 
ty
;

152 
u_t32_t
 
ags
;

153 
mode
;

155  (
	`__db_db_ݒ
(
dbp
, 
tx
, 
me
, 
subdb
, 
ty
, 
ags
, 
mode
));

156 
	}
}

165 
	$__db_esh
(
dbv
)

166 
DB_ENV
 *
dbv
;

168 
CLIENT
 *

;

169 
t
;

171 

 = (
CLIENT
 *)
dbv
->
_hd
;

173 
t
 = 0;

174 i(
dbv
->
tx_hd
 !
NULL
) {

180 
t
 = 
	`__db_txn_o
(
dbv
);

181 
dbv
->
tx_hd
 = 
NULL
;

183 i(!
	`F_ISSET
(
dbv
, 
DB_ENV_RPCCLIENT_GIVEN
&& 

 !
NULL
)

184 
	`_deroy
(

);

185 
dbv
->
_hd
 = 
NULL
;

186 i(
dbv
->
db_home
 !
NULL
) {

187 
	`__os_
(
dbv
, dbv->
db_home
);

188 
dbv
->
db_home
 = 
NULL
;

190  (
t
);

191 
	}
}

202 
	$__db_tcy
(
dbv
, 
dbt
, 
da
, 
n
, 
memp
, 
memsize
)

203 
DB_ENV
 *
dbv
;

204 
DBT
 *
dbt
;

205 *
da
;

206 
u_t32_t
 
n
;

207 **
memp
;

208 
u_t32_t
 *
memsize
;

210 
t
;

211 
u_t32_t
 
ig_ags
;

219 
ig_ags
 = 
dbt
->
ags
;

220 
	`F_CLR
(
dbt
, 
DB_DBT_PARTIAL
);

221 i(
dbt
->
da
 !
NULL
 && dbt->
size
 =
n
 &&

222 
	`memcmp
(
dbt
->
da
, da, 
n
) == 0)

223 
t
 = 0;

225 
t
 = 
	`__db_tcy
(
dbv
, 
dbt
, 
da
, 
n
, 
memp
, 
memsize
);

226 
dbt
->
ags
 = 
ig_ags
;

227  (
t
);

228 
	}
}

235 
	$__db_txn_o
(
dbv
)

236 
DB_ENV
 *
dbv
;

238 
DB_TXN
 *
tx
;

239 
DB_TXNMGR
 *
tmg
;

240 
t
;

242 
t
 = 0;

243 
tmg
 = 
dbv
->
tx_hd
;

252 (
tx
 = 
	`TAILQ_FIRST
(&
tmg
->
txn_cha
)!
NULL
)

253 
	`__db_txn_d
(
tx
);

255 
	`__os_
(
dbv
, 
tmg
);

256  (
t
);

258 
	}
}

268 
	$__db_txn_d
(
tx
)

269 
DB_TXN
 *
tx
;

271 
DB_ENV
 *
dbv
;

272 
DB_TXN
 *
kids
;

273 
DB_TXNMGR
 *
mgr
;

275 
mgr
 = 
tx
->
mg
;

276 
dbv
 = 
mgr
->dbenv;

281 
kids
 = 
	`TAILQ_FIRST
(&
tx
->kids);

282 
kids
 !
NULL
;

283 
kids
 = 
	`TAILQ_FIRST
(&
tx
->kids))

284 
	`__db_txn_d
(
kids
);

292 i(
tx
->

 !
NULL
)

293 
	`TAILQ_REMOVE
(&
tx
->

->
kids
,x, 
klks
);

294 
	`TAILQ_REMOVE
(&
mgr
->
txn_cha
, 
tx
, 
lks
);

295 
	`__os_
(
dbv
, 
tx
);

296 
	}
}

305 
	$__db_txn_tup
(
dbv
, 
txn
, 

, 
id
)

306 
DB_ENV
 *
dbv
;

307 
DB_TXN
 *
txn
;

308 
DB_TXN
 *

;

309 
u_t32_t
 
id
;

311 
txn
->
mg
 = 
dbv
->
tx_hd
;

312 
txn
->

 =arent;

313 
txn
->
txnid
 = 
id
;

324 
	`TAILQ_INSERT_TAIL
(&
txn
->
mg
->
txn_cha
,xn, 
lks
);

326 
	`TAILQ_INIT
(&
txn
->
kids
);

328 i(

 !
NULL
)

329 
	`TAILQ_INSERT_HEAD
(&

->
kids
, 
txn
, 
klks
);

331 
	`__db_txn_
(
txn
);

333 
txn
->
ags
 = 
TXN_MALLOC
;

334 
	}
}

341 
	$__db_c_deroy
(
dbc
)

342 
DBC
 *
dbc
;

344 
DB
 *
dbp
;

346 
dbp
 = 
dbc
->dbp;

348 
	`TAILQ_REMOVE
(&
dbp
->
_queue
, 
dbc
, 
lks
);

350 i(
dbc
->
my_rskey
.
da
 !
NULL
)

351 
	`__os_
(
dbc
->
dbp
->
dbv
, dbc->
my_rskey
.
da
);

352 i(
dbc
->
my_rkey
.
da
 !
NULL
)

353 
	`__os_
(
dbc
->
dbp
->
dbv
, dbc->
my_rkey
.
da
);

354 i(
dbc
->
my_rda
.
da
 !
NULL
)

355 
	`__os_
(
dbc
->
dbp
->
dbv
, dbc->
my_rda
.
da
);

356 
	`__os_
(
NULL
, 
dbc
);

359 
	}
}

368 
	$__db_c_esh
(
dbc
)

369 
DBC
 *
dbc
;

371 
DB
 *
dbp
;

373 
dbp
 = 
dbc
->dbp;

374 
dbc
->
ags
 = 0;

375 
dbc
->
_id
 = 0;

381 i(
dbp
 !
NULL
) {

382 
	`TAILQ_REMOVE
(&
dbp
->
aive_queue
, 
dbc
, 
lks
);

383 
	`TAILQ_INSERT_TAIL
(&
dbp
->
_queue
, 
dbc
, 
lks
);

385 
	}
}

394 
	$__db_c_tup
(
_id
, 
dbp
, 
db
)

395 
u_t
 
_id
;

396 
DB
 *
dbp
;

397 
DBC
 **
db
;

399 
DBC
 *
dbc
, 
tmpdbc
;

400 
t
;

402 i((
dbc
 = 
	`TAILQ_FIRST
(&
dbp
->
_queue
)!
NULL
)

403 
	`TAILQ_REMOVE
(&
dbp
->
_queue
, 
dbc
, 
lks
);

405 i((
t
 =

406 
	`__os_oc
(
dbp
->
dbv
, 1, (
DBC
), &
dbc
)) != 0) {

411 
tmpdbc
.
dbp
 = 
NULL
;

412 
tmpdbc
.
_id
 = cl_id;

413 ()
	`__db_dbc_o
(&
tmpdbc
);

414  (
t
);

417 
	`__db_dbc_
(
dbc
);

424 
dbc
->
am_deroy
 = 
__db_c_deroy
;

426 
dbc
->
_id
 = cl_id;

427 
dbc
->
dbp
 = dbp;

428 
	`TAILQ_INSERT_TAIL
(&
dbp
->
aive_queue
, 
dbc
, 
lks
);

429 *
db
 = 
dbc
;

431 
	}
}

440 
	$__db_dbo_comm
(
dbp
)

441 
DB
 *
dbp
;

443 
t
, 
t_t
;

444 
DBC
 *
dbc
;

455 
t
 = 0;

456 (
dbc
 = 
	`TAILQ_FIRST
(&
dbp
->
aive_queue
)!
NULL
)

457 
	`__db_c_esh
(
dbc
);

458 (
dbc
 = 
	`TAILQ_FIRST
(&
dbp
->
_queue
)!
NULL
)

459 i((
t_t
 = 
	`__db_c_deroy
(
dbc
)!0 && 
t
 == 0)

460 
t
 = 
t_t
;

462 
	`TAILQ_INIT
(&
dbp
->
_queue
);

463 
	`TAILQ_INIT
(&
dbp
->
aive_queue
);

465 i(
dbp
->
my_rskey
.
da
 !
NULL
)

466 
	`__os_
(
dbp
->
dbv
, dbp->
my_rskey
.
da
);

467 i(
dbp
->
my_rkey
.
da
 !
NULL
)

468 
	`__os_
(
dbp
->
dbv
, dbp->
my_rkey
.
da
);

469 i(
dbp
->
my_rda
.
da
 !
NULL
)

470 
	`__os_
(
dbp
->
dbv
, dbp->
my_rda
.
da
);

472 
	`memt
(
dbp
, 
CLEAR_BYTE
, (*dbp));

473 
	`__os_
(
NULL
, 
dbp
);

474  (
t
);

475 
	}
}

	@../rpc_client/gen_client.c

2 
	~"db_cfig.h
"

4 
	~"db_t.h
"

5 #ifde
HAVE_SYSTEM_INCLUDE_FILES


6 
	~<c/c.h
>

8 
	~"db_rv.h
"

9 
	~"dbc/txn.h
"

10 
	~"dbc_auto/c__ext.h
"

12 
__db_dbp_g
 
__P
((
DB
 *));

13 
__db_norv
 
__P
((
DB_ENV
 *));

14 
__db_txn_g
 
__P
((
DB_TXN
 *));

17 
	$__db_norv
(
dbv
)

18 
DB_ENV
 *
dbv
;

20 
	`__db_rx
(
dbv
, "No Berkeley DB RPC servernvironment");

21  (
DB_NOSERVER
);

22 
	}
}

31 
	$__db_dbv_g
(
dbv
)

32 
DB_ENV
 *
dbv
;

34 
	`__db_rx
(
dbv
,

36  (
DB_OPNOTSUP
);

37 
	}
}

44 
	$__db_dbp_g
(
dbp
)

45 
DB
 *
dbp
;

47  (
	`__db_dbv_g
(
dbp
->
dbv
));

48 
	}
}

55 
	$__db_txn_g
(
txn
)

56 
DB_TXN
 *
txn
;

58  (
	`__db_dbv_g
(
txn
->
mg
->
dbv
));

59 
	}
}

65 
	$__db_v_
(
dbv
, 
timeout
)

66 
DB_ENV
 * 
dbv
;

67 
timeout
;

69 
CLIENT
 *

;

70 
__v__msg
 
msg
;

71 
__v__y
 *
yp
 = 
NULL
;

72 
t
;

74 
t
 = 0;

75 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

76  (
	`__db_norv
(
dbv
));

78 

 = (
CLIENT
 *)
dbv
->
_hd
;

80 
msg
.
timeout
 = (
u_t
)timeout;

82 
yp
 = 
	`__db_v__4006
(&
msg
, 

);

83 i(
yp
 =
NULL
) {

84 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

85 
t
 = 
DB_NOSERVER
;

86 
out
;

88 
t
 = 
	`__db_v__t
(
dbv
, 
timeout
, 
yp
);

89 
out
:

90 i(
yp
 !
NULL
)

91 
	`xdr_
((
xdroc_t
)
xdr___v__y
, (*)
yp
);

92  (
t
);

93 
	}
}

99 
	$__db_v_cdsgroup_beg
(
dbv
, 
txp
)

100 
DB_ENV
 * 
dbv
;

101 
DB_TXN
 ** 
txp
;

103 
CLIENT
 *

;

104 
__v_cdsgroup_beg_msg
 
msg
;

105 
__v_cdsgroup_beg_y
 *
yp
 = 
NULL
;

106 
t
;

108 
t
 = 0;

109 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

110  (
	`__db_norv
(
dbv
));

112 

 = (
CLIENT
 *)
dbv
->
_hd
;

114 
msg
.
dbv_id
 = 
dbv
->
_id
;

116 
yp
 = 
	`__db_v_cdsgroup_beg_4006
(&
msg
, 

);

117 i(
yp
 =
NULL
) {

118 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

119 
t
 = 
DB_NOSERVER
;

120 
out
;

122 
t
 = 
	`__db_v_cdsgroup_beg_t
(
dbv
, 
txp
, 
yp
);

123 
out
:

124 i(
yp
 !
NULL
)

125 
	`xdr_
((
xdroc_t
)
xdr___v_cdsgroup_beg_y
, (*)
yp
);

126  (
t
);

127 
	}
}

133 
	$__db_v_o
(
dbv
, 
ags
)

134 
DB_ENV
 * 
dbv
;

135 
u_t32_t
 
ags
;

137 
CLIENT
 *

;

138 
__v_o_msg
 
msg
;

139 
__v_o_y
 *
yp
 = 
NULL
;

140 
t
;

142 
t
 = 0;

143 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

144  (
	`__db_norv
(
dbv
));

146 

 = (
CLIENT
 *)
dbv
->
_hd
;

148 
msg
.
dbv_id
 = 
dbv
->
_id
;

149 
msg
.
ags
 = (
u_t
)flags;

151 
yp
 = 
	`__db_v_o_4006
(&
msg
, 

);

152 i(
yp
 =
NULL
) {

153 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

154 
t
 = 
DB_NOSERVER
;

155 
out
;

157 
t
 = 
yp
->
us
;

158 
out
:

159 i(
yp
 !
NULL
)

160 
	`xdr_
((
xdroc_t
)
xdr___v_o_y
, (*)
yp
);

161  (
t
);

162 
	}
}

169 
	$__db_v_dbmove
(
dbv
, 
tx
, 
me
, 
subdb
, 
ags
)

170 
DB_ENV
 * 
dbv
;

171 
DB_TXN
 * 
tx
;

172 cڡ * 
me
;

173 cڡ * 
subdb
;

174 
u_t32_t
 
ags
;

176 
CLIENT
 *

;

177 
__v_dbmove_msg
 
msg
;

178 
__v_dbmove_y
 *
yp
 = 
NULL
;

179 
t
;

181 
t
 = 0;

182 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

183  (
	`__db_norv
(
dbv
));

185 

 = (
CLIENT
 *)
dbv
->
_hd
;

187 
msg
.
dbv_id
 = 
dbv
->
_id
;

188 i(
tx
 =
NULL
)

189 
msg
.
tx_id
 = 0;

191 
msg
.
tx_id
 = 
tx
->
txnid
;

192 i(
me
 =
NULL
)

193 
msg
.
me
 = "";

195 
msg
.
me
 = (*)name;

196 i(
subdb
 =
NULL
)

197 
msg
.
subdb
 = "";

199 
msg
.
subdb
 = (*)subdb;

200 
msg
.
ags
 = (
u_t
)flags;

202 
yp
 = 
	`__db_v_dbmove_4006
(&
msg
, 

);

203 i(
yp
 =
NULL
) {

204 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

205 
t
 = 
DB_NOSERVER
;

206 
out
;

208 
t
 = 
yp
->
us
;

209 
out
:

210 i(
yp
 !
NULL
)

211 
	`xdr_
((
xdroc_t
)
xdr___v_dbmove_y
, (*)
yp
);

212  (
t
);

213 
	}
}

220 
	$__db_v_dbme
(
dbv
, 
tx
, 
me
, 
subdb
, 
wme
, 
ags
)

221 
DB_ENV
 * 
dbv
;

222 
DB_TXN
 * 
tx
;

223 cڡ * 
me
;

224 cڡ * 
subdb
;

225 cڡ * 
wme
;

226 
u_t32_t
 
ags
;

228 
CLIENT
 *

;

229 
__v_dbme_msg
 
msg
;

230 
__v_dbme_y
 *
yp
 = 
NULL
;

231 
t
;

233 
t
 = 0;

234 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

235  (
	`__db_norv
(
dbv
));

237 

 = (
CLIENT
 *)
dbv
->
_hd
;

239 
msg
.
dbv_id
 = 
dbv
->
_id
;

240 i(
tx
 =
NULL
)

241 
msg
.
tx_id
 = 0;

243 
msg
.
tx_id
 = 
tx
->
txnid
;

244 i(
me
 =
NULL
)

245 
msg
.
me
 = "";

247 
msg
.
me
 = (*)name;

248 i(
subdb
 =
NULL
)

249 
msg
.
subdb
 = "";

251 
msg
.
subdb
 = (*)subdb;

252 i(
wme
 =
NULL
)

253 
msg
.
wme
 = "";

255 
msg
.
wme
 = (*)newname;

256 
msg
.
ags
 = (
u_t
)flags;

258 
yp
 = 
	`__db_v_dbme_4006
(&
msg
, 

);

259 i(
yp
 =
NULL
) {

260 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

261 
t
 = 
DB_NOSERVER
;

262 
out
;

264 
t
 = 
yp
->
us
;

265 
out
:

266 i(
yp
 !
NULL
)

267 
	`xdr_
((
xdroc_t
)
xdr___v_dbme_y
, (*)
yp
);

268  (
t
);

269 
	}
}

276 
	$__db_v_g_chesize
(
dbv
, 
gby
, 
by
, 
nch
)

277 
DB_ENV
 * 
dbv
;

278 
u_t32_t
 * 
gby
;

279 
u_t32_t
 * 
by
;

280 * 
nch
;

282 
CLIENT
 *

;

283 
__v_g_chesize_msg
 
msg
;

284 
__v_g_chesize_y
 *
yp
 = 
NULL
;

285 
t
;

287 
t
 = 0;

288 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

289  (
	`__db_norv
(
dbv
));

291 

 = (
CLIENT
 *)
dbv
->
_hd
;

293 
msg
.
dbv_id
 = 
dbv
->
_id
;

295 
yp
 = 
	`__db_v_g_chesize_4006
(&
msg
, 

);

296 i(
yp
 =
NULL
) {

297 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

298 
t
 = 
DB_NOSERVER
;

299 
out
;

301 
t
 = 
yp
->
us
;

302 i(
gby
 !
NULL
)

303 *
gby
 = (
u_t32_t
)
yp
->
gbys
;

304 i(
by
 !
NULL
)

305 *
by
 = (
u_t32_t
)
yp
->
bys
;

306 i(
nch
 !
NULL
)

307 *
nch
 = ()
yp
->
nche
;

308 
out
:

309 i(
yp
 !
NULL
)

310 
	`xdr_
((
xdroc_t
)
xdr___v_g_chesize_y
, (*)
yp
);

311  (
t
);

312 
	}
}

318 
	$__db_v_g_y_ags
(
dbv
, 
ag
)

319 
DB_ENV
 * 
dbv
;

320 
u_t32_t
 * 
ag
;

322 
CLIENT
 *

;

323 
__v_g_y_ags_msg
 
msg
;

324 
__v_g_y_ags_y
 *
yp
 = 
NULL
;

325 
t
;

327 
t
 = 0;

328 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

329  (
	`__db_norv
(
dbv
));

331 

 = (
CLIENT
 *)
dbv
->
_hd
;

333 
msg
.
dbv_id
 = 
dbv
->
_id
;

335 
yp
 = 
	`__db_v_g_y_ags_4006
(&
msg
, 

);

336 i(
yp
 =
NULL
) {

337 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

338 
t
 = 
DB_NOSERVER
;

339 
out
;

341 
t
 = 
yp
->
us
;

342 i(
ag
 !
NULL
)

343 *
ag
 = (
u_t32_t
)
yp
->
ags
;

344 
out
:

345 i(
yp
 !
NULL
)

346 
	`xdr_
((
xdroc_t
)
xdr___v_g_y_ags_y
, (*)
yp
);

347  (
t
);

348 
	}
}

354 
	$__db_v_g_ags
(
dbv
, 
ag
)

355 
DB_ENV
 * 
dbv
;

356 
u_t32_t
 * 
ag
;

358 
CLIENT
 *

;

359 
__v_g_ags_msg
 
msg
;

360 
__v_g_ags_y
 *
yp
 = 
NULL
;

361 
t
;

363 
t
 = 0;

364 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

365  (
	`__db_norv
(
dbv
));

367 

 = (
CLIENT
 *)
dbv
->
_hd
;

369 
msg
.
dbv_id
 = 
dbv
->
_id
;

371 
yp
 = 
	`__db_v_g_ags_4006
(&
msg
, 

);

372 i(
yp
 =
NULL
) {

373 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

374 
t
 = 
DB_NOSERVER
;

375 
out
;

377 
t
 = 
yp
->
us
;

378 i(
ag
 !
NULL
)

379 *
ag
 = (
u_t32_t
)
yp
->
ags
;

380 
out
:

381 i(
yp
 !
NULL
)

382 
	`xdr_
((
xdroc_t
)
xdr___v_g_ags_y
, (*)
yp
);

383  (
t
);

384 
	}
}

390 
	$__db_v_g_home
(
dbv
, 
hom
)

391 
DB_ENV
 * 
dbv
;

392 cڡ * * 
hom
;

394 
CLIENT
 *

;

395 
__v_g_home_msg
 
msg
;

396 
__v_g_home_y
 *
yp
 = 
NULL
;

397 
t
;

399 
t
 = 0;

400 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

401  (
	`__db_norv
(
dbv
));

403 

 = (
CLIENT
 *)
dbv
->
_hd
;

405 
msg
.
dbv_id
 = 
dbv
->
_id
;

407 
yp
 = 
	`__db_v_g_home_4006
(&
msg
, 

);

408 i(
yp
 =
NULL
) {

409 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

410 
t
 = 
DB_NOSERVER
;

411 
out
;

413 
t
 = 
yp
->
us
;

414 i(
hom
 !
NULL
)

415 *
hom
 = (cڡ *)
yp
->
home
;

416 
out
:

417 i(
yp
 !
NULL
)

418 
	`xdr_
((
xdroc_t
)
xdr___v_g_home_y
, (*)
yp
);

419  (
t
);

420 
	}
}

426 
	$__db_v_g_ݒ_ags
(
dbv
, 
ag
)

427 
DB_ENV
 * 
dbv
;

428 
u_t32_t
 * 
ag
;

430 
CLIENT
 *

;

431 
__v_g_ݒ_ags_msg
 
msg
;

432 
__v_g_ݒ_ags_y
 *
yp
 = 
NULL
;

433 
t
;

435 
t
 = 0;

436 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

437  (
	`__db_norv
(
dbv
));

439 

 = (
CLIENT
 *)
dbv
->
_hd
;

441 
msg
.
dbv_id
 = 
dbv
->
_id
;

443 
yp
 = 
	`__db_v_g_ݒ_ags_4006
(&
msg
, 

);

444 i(
yp
 =
NULL
) {

445 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

446 
t
 = 
DB_NOSERVER
;

447 
out
;

449 
t
 = 
yp
->
us
;

450 i(
ag
 !
NULL
)

451 *
ag
 = (
u_t32_t
)
yp
->
ags
;

452 
out
:

453 i(
yp
 !
NULL
)

454 
	`xdr_
((
xdroc_t
)
xdr___v_g_ݒ_ags_y
, (*)
yp
);

455  (
t
);

456 
	}
}

462 
	$__db_v_ݒ
(
dbv
, 
home
, 
ags
, 
mode
)

463 
DB_ENV
 * 
dbv
;

464 cڡ * 
home
;

465 
u_t32_t
 
ags
;

466 
mode
;

468 
CLIENT
 *

;

469 
__v_ݒ_msg
 
msg
;

470 
__v_ݒ_y
 *
yp
 = 
NULL
;

471 
t
;

473 
t
 = 0;

474 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

475  (
	`__db_norv
(
dbv
));

477 

 = (
CLIENT
 *)
dbv
->
_hd
;

479 
msg
.
dbv_id
 = 
dbv
->
_id
;

480 i(
home
 =
NULL
)

481 
msg
.
home
 = "";

483 
msg
.
home
 = (*)home;

484 
msg
.
ags
 = (
u_t
)flags;

485 
msg
.
mode
 = (
u_t
)mode;

487 
yp
 = 
	`__db_v_ݒ_4006
(&
msg
, 

);

488 i(
yp
 =
NULL
) {

489 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

490 
t
 = 
DB_NOSERVER
;

491 
out
;

493 
t
 = 
	`__db_v_ݒ_t
(
dbv
, 
home
, 
ags
, 
mode
, 
yp
);

494 
out
:

495 i(
yp
 !
NULL
)

496 
	`xdr_
((
xdroc_t
)
xdr___v_ݒ_y
, (*)
yp
);

497  (
t
);

498 
	}
}

504 
	$__db_v_move
(
dbv
, 
home
, 
ags
)

505 
DB_ENV
 * 
dbv
;

506 cڡ * 
home
;

507 
u_t32_t
 
ags
;

509 
CLIENT
 *

;

510 
__v_move_msg
 
msg
;

511 
__v_move_y
 *
yp
 = 
NULL
;

512 
t
;

514 
t
 = 0;

515 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

516  (
	`__db_norv
(
dbv
));

518 

 = (
CLIENT
 *)
dbv
->
_hd
;

520 
msg
.
dbv_id
 = 
dbv
->
_id
;

521 i(
home
 =
NULL
)

522 
msg
.
home
 = "";

524 
msg
.
home
 = (*)home;

525 
msg
.
ags
 = (
u_t
)flags;

527 
yp
 = 
	`__db_v_move_4006
(&
msg
, 

);

528 i(
yp
 =
NULL
) {

529 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

530 
t
 = 
DB_NOSERVER
;

531 
out
;

533 
t
 = 
	`__db_v_move_t
(
dbv
, 
home
, 
ags
, 
yp
);

534 
out
:

535 i(
yp
 !
NULL
)

536 
	`xdr_
((
xdroc_t
)
xdr___v_move_y
, (*)
yp
);

537  (
t
);

538 
	}
}

545 
	$__db_v_t_chesize
(
dbv
, 
gbys
, 
bys
, 
nche
)

546 
DB_ENV
 * 
dbv
;

547 
u_t32_t
 
gbys
;

548 
u_t32_t
 
bys
;

549 
nche
;

551 
CLIENT
 *

;

552 
__v_t_chesize_msg
 
msg
;

553 
__v_t_chesize_y
 *
yp
 = 
NULL
;

554 
t
;

556 
t
 = 0;

557 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

558  (
	`__db_norv
(
dbv
));

560 

 = (
CLIENT
 *)
dbv
->
_hd
;

562 
msg
.
dbv_id
 = 
dbv
->
_id
;

563 
msg
.
gbys
 = (
u_t
)gbytes;

564 
msg
.
bys
 = (
u_t
)bytes;

565 
msg
.
nche
 = (
u_t
)ncache;

567 
yp
 = 
	`__db_v_t_chesize_4006
(&
msg
, 

);

568 i(
yp
 =
NULL
) {

569 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

570 
t
 = 
DB_NOSERVER
;

571 
out
;

573 
t
 = 
yp
->
us
;

574 
out
:

575 i(
yp
 !
NULL
)

576 
	`xdr_
((
xdroc_t
)
xdr___v_t_chesize_y
, (*)
yp
);

577  (
t
);

578 
	}
}

584 
	$__db_v_t_y
(
dbv
, 
sswd
, 
ags
)

585 
DB_ENV
 * 
dbv
;

586 cڡ * 
sswd
;

587 
u_t32_t
 
ags
;

589 
CLIENT
 *

;

590 
__v_t_y_msg
 
msg
;

591 
__v_t_y_y
 *
yp
 = 
NULL
;

592 
t
;

594 
t
 = 0;

595 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

596  (
	`__db_norv
(
dbv
));

598 

 = (
CLIENT
 *)
dbv
->
_hd
;

600 
msg
.
dbv_id
 = 
dbv
->
_id
;

601 i(
sswd
 =
NULL
)

602 
msg
.
sswd
 = "";

604 
msg
.
sswd
 = (*)passwd;

605 
msg
.
ags
 = (
u_t
)flags;

607 
yp
 = 
	`__db_v_t_y_4006
(&
msg
, 

);

608 i(
yp
 =
NULL
) {

609 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

610 
t
 = 
DB_NOSERVER
;

611 
out
;

613 
t
 = 
yp
->
us
;

614 
out
:

615 i(
yp
 !
NULL
)

616 
	`xdr_
((
xdroc_t
)
xdr___v_t_y_y
, (*)
yp
);

617  (
t
);

618 
	}
}

624 
	$__db_v_t_ags
(
dbv
, 
ags
, 
off
)

625 
DB_ENV
 * 
dbv
;

626 
u_t32_t
 
ags
;

627 
off
;

629 
CLIENT
 *

;

630 
__v_t_ags_msg
 
msg
;

631 
__v_t_ags_y
 *
yp
 = 
NULL
;

632 
t
;

634 
t
 = 0;

635 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

636  (
	`__db_norv
(
dbv
));

638 

 = (
CLIENT
 *)
dbv
->
_hd
;

640 
msg
.
dbv_id
 = 
dbv
->
_id
;

641 
msg
.
ags
 = (
u_t
)flags;

642 
msg
.
off
 = (
u_t
)onoff;

644 
yp
 = 
	`__db_v_t_ags_4006
(&
msg
, 

);

645 i(
yp
 =
NULL
) {

646 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

647 
t
 = 
DB_NOSERVER
;

648 
out
;

650 
t
 = 
yp
->
us
;

651 
out
:

652 i(
yp
 !
NULL
)

653 
	`xdr_
((
xdroc_t
)
xdr___v_t_ags_y
, (*)
yp
);

654  (
t
);

655 
	}
}

662 
	$__db_v_txn_beg
(
dbv
, 

, 
txp
, 
ags
)

663 
DB_ENV
 * 
dbv
;

664 
DB_TXN
 * 

;

665 
DB_TXN
 ** 
txp
;

666 
u_t32_t
 
ags
;

668 
CLIENT
 *

;

669 
__v_txn_beg_msg
 
msg
;

670 
__v_txn_beg_y
 *
yp
 = 
NULL
;

671 
t
;

673 
t
 = 0;

674 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

675  (
	`__db_norv
(
dbv
));

677 

 = (
CLIENT
 *)
dbv
->
_hd
;

679 
msg
.
dbv_id
 = 
dbv
->
_id
;

680 i(

 =
NULL
)

681 
msg
.
_id
 = 0;

683 
msg
.
_id
 = 

->
txnid
;

684 
msg
.
ags
 = (
u_t
)flags;

686 
yp
 = 
	`__db_v_txn_beg_4006
(&
msg
, 

);

687 i(
yp
 =
NULL
) {

688 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

689 
t
 = 
DB_NOSERVER
;

690 
out
;

692 
t
 = 
	`__db_v_txn_beg_t
(
dbv
, 

, 
txp
, 
ags
, 
yp
);

693 
out
:

694 i(
yp
 !
NULL
)

695 
	`xdr_
((
xdroc_t
)
xdr___v_txn_beg_y
, (*)
yp
);

696  (
t
);

697 
	}
}

704 
	$__db_v_txn_cov
(
dbv
, 
li
, 
cou
, 

, 
ags
)

705 
DB_ENV
 * 
dbv
;

706 
DB_PREPLIST
 * 
li
;

707 
cou
;

708 * 

;

709 
u_t32_t
 
ags
;

711 
CLIENT
 *

;

712 
__v_txn_cov_msg
 
msg
;

713 
__v_txn_cov_y
 *
yp
 = 
NULL
;

714 
t
;

716 
t
 = 0;

717 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

718  (
	`__db_norv
(
dbv
));

720 

 = (
CLIENT
 *)
dbv
->
_hd
;

722 
msg
.
dbv_id
 = 
dbv
->
_id
;

723 
msg
.
cou
 = (
u_t
)count;

724 
msg
.
ags
 = (
u_t
)flags;

726 
yp
 = 
	`__db_v_txn_cov_4006
(&
msg
, 

);

727 i(
yp
 =
NULL
) {

728 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

729 
t
 = 
DB_NOSERVER
;

730 
out
;

732 
t
 = 
	`__db_v_txn_cov_t
(
dbv
, 
li
, 
cou
, 

, 
ags
, 
yp
);

733 
out
:

734 i(
yp
 !
NULL
)

735 
	`xdr_
((
xdroc_t
)
xdr___v_txn_cov_y
, (*)
yp
);

736  (
t
);

737 
	}
}

743 
	$__db_db_
(
dbp
, 
dbv
, 
ags
)

744 
DB
 * 
dbp
;

745 
DB_ENV
 * 
dbv
;

746 
u_t32_t
 
ags
;

748 
CLIENT
 *

;

749 
__db__msg
 
msg
;

750 
__db__y
 *
yp
 = 
NULL
;

751 
t
;

753 
t
 = 0;

754 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

755  (
	`__db_norv
(
dbv
));

757 

 = (
CLIENT
 *)
dbv
->
_hd
;

759 
msg
.
dbv_id
 = 
dbv
->
_id
;

760 
msg
.
ags
 = (
u_t
)flags;

762 
yp
 = 
	`__db_db__4006
(&
msg
, 

);

763 i(
yp
 =
NULL
) {

764 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

765 
t
 = 
DB_NOSERVER
;

766 
out
;

768 
t
 = 
	`__db_db__t
(
dbp
, 
dbv
, 
ags
, 
yp
);

769 
out
:

770 i(
yp
 !
NULL
)

771 
	`xdr_
((
xdroc_t
)
xdr___db__y
, (*)
yp
);

772  (
t
);

773 
	}
}

780 
	$__db_db_assoc
(
dbp
, 
tx
, 
sdbp
, 
func0
, 
ags
)

781 
DB
 * 
dbp
;

782 
DB_TXN
 * 
tx
;

783 
DB
 * 
sdbp
;

784 (*
func0

	`__P
((
DB
 *, cڡ 
DBT
 *, const DBT *, DBT *));

785 
u_t32_t
 
ags
;

787 
CLIENT
 *

;

788 
__db_assoc_msg
 
msg
;

789 
__db_assoc_y
 *
yp
 = 
NULL
;

790 
t
;

791 
DB_ENV
 *
dbv
;

793 
t
 = 0;

794 
dbv
 = 
dbp
->dbenv;

795 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

796  (
	`__db_norv
(
NULL
));

798 

 = (
CLIENT
 *)
dbv
->
_hd
;

800 i(
func0
 !
NULL
) {

801 
	`__db_rx
(
dbv
, "User functionsot supported in RPC");

802  (
EINVAL
);

804 i(
dbp
 =
NULL
)

805 
msg
.
dbp_id
 = 0;

807 
msg
.
dbp_id
 = 
dbp
->
_id
;

808 i(
tx
 =
NULL
)

809 
msg
.
tx_id
 = 0;

811 
msg
.
tx_id
 = 
tx
->
txnid
;

812 i(
sdbp
 =
NULL
)

813 
msg
.
sdbp_id
 = 0;

815 
msg
.
sdbp_id
 = 
sdbp
->
_id
;

816 
msg
.
ags
 = (
u_t
)flags;

818 
yp
 = 
	`__db_db_assoc_4006
(&
msg
, 

);

819 i(
yp
 =
NULL
) {

820 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

821 
t
 = 
DB_NOSERVER
;

822 
out
;

824 
t
 = 
yp
->
us
;

825 
out
:

826 i(
yp
 !
NULL
)

827 
	`xdr_
((
xdroc_t
)
xdr___db_assoc_y
, (*)
yp
);

828  (
t
);

829 
	}
}

835 
	$__db_db_o
(
dbp
, 
ags
)

836 
DB
 * 
dbp
;

837 
u_t32_t
 
ags
;

839 
CLIENT
 *

;

840 
__db_o_msg
 
msg
;

841 
__db_o_y
 *
yp
 = 
NULL
;

842 
t
;

843 
DB_ENV
 *
dbv
;

845 
t
 = 0;

846 
dbv
 = 
dbp
->dbenv;

847 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

848  (
	`__db_norv
(
NULL
));

850 

 = (
CLIENT
 *)
dbv
->
_hd
;

852 i(
dbp
 =
NULL
)

853 
msg
.
dbp_id
 = 0;

855 
msg
.
dbp_id
 = 
dbp
->
_id
;

856 
msg
.
ags
 = (
u_t
)flags;

858 
yp
 = 
	`__db_db_o_4006
(&
msg
, 

);

859 i(
yp
 =
NULL
) {

860 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

861 
t
 = 
DB_NOSERVER
;

862 
out
;

864 
t
 = 
	`__db_db_o_t
(
dbp
, 
ags
, 
yp
);

865 
out
:

866 i(
yp
 !
NULL
)

867 
	`xdr_
((
xdroc_t
)
xdr___db_o_y
, (*)
yp
);

868  (
t
);

869 
	}
}

875 
	$__db_db_curs
(
dbp
, 
tx
, 
dbp
, 
ags
)

876 
DB
 * 
dbp
;

877 
DB_TXN
 * 
tx
;

878 
DBC
 ** 
dbp
;

879 
u_t32_t
 
ags
;

881 
CLIENT
 *

;

882 
__db_curs_msg
 
msg
;

883 
__db_curs_y
 *
yp
 = 
NULL
;

884 
t
;

885 
DB_ENV
 *
dbv
;

887 
t
 = 0;

888 
dbv
 = 
dbp
->dbenv;

889 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

890  (
	`__db_norv
(
NULL
));

892 

 = (
CLIENT
 *)
dbv
->
_hd
;

894 i(
dbp
 =
NULL
)

895 
msg
.
dbp_id
 = 0;

897 
msg
.
dbp_id
 = 
dbp
->
_id
;

898 i(
tx
 =
NULL
)

899 
msg
.
tx_id
 = 0;

901 
msg
.
tx_id
 = 
tx
->
txnid
;

902 
msg
.
ags
 = (
u_t
)flags;

904 
yp
 = 
	`__db_db_curs_4006
(&
msg
, 

);

905 i(
yp
 =
NULL
) {

906 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

907 
t
 = 
DB_NOSERVER
;

908 
out
;

910 
t
 = 
	`__db_db_curs_t
(
dbp
, 
tx
, 
dbp
, 
ags
, 
yp
);

911 
out
:

912 i(
yp
 !
NULL
)

913 
	`xdr_
((
xdroc_t
)
xdr___db_curs_y
, (*)
yp
);

914  (
t
);

915 
	}
}

921 
	$__db_db_d
(
dbp
, 
tx
, 
key
, 
ags
)

922 
DB
 * 
dbp
;

923 
DB_TXN
 * 
tx
;

924 
DBT
 * 
key
;

925 
u_t32_t
 
ags
;

927 
CLIENT
 *

;

928 
__db_d_msg
 
msg
;

929 
__db_d_y
 *
yp
 = 
NULL
;

930 
t
;

931 
DB_ENV
 *
dbv
;

933 
t
 = 0;

934 
dbv
 = 
dbp
->dbenv;

935 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

936  (
	`__db_norv
(
NULL
));

938 

 = (
CLIENT
 *)
dbv
->
_hd
;

940 i(
dbp
 =
NULL
)

941 
msg
.
dbp_id
 = 0;

943 
msg
.
dbp_id
 = 
dbp
->
_id
;

944 i(
tx
 =
NULL
)

945 
msg
.
tx_id
 = 0;

947 
msg
.
tx_id
 = 
tx
->
txnid
;

948 
msg
.
keydn
 = 
key
->
dn
;

949 
msg
.
keydoff
 = 
key
->
doff
;

950 
msg
.
keyun
 = 
key
->
un
;

951 
msg
.
keyags
 = 
key
->
ags
;

952 
msg
.
keyda
.
keyda_v
 = 
key
->
da
;

953 
msg
.
keyda
.
keyda_n
 = 
key
->
size
;

954 
msg
.
ags
 = (
u_t
)flags;

956 
yp
 = 
	`__db_db_d_4006
(&
msg
, 

);

957 i(
yp
 =
NULL
) {

958 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

959 
t
 = 
DB_NOSERVER
;

960 
out
;

962 
t
 = 
yp
->
us
;

963 
out
:

964 i(
yp
 !
NULL
)

965 
	`xdr_
((
xdroc_t
)
xdr___db_d_y
, (*)
yp
);

966  (
t
);

967 
	}
}

973 
	$__db_db_g
(
dbp
, 
tx
, 
key
, 
da
, 
ags
)

974 
DB
 * 
dbp
;

975 
DB_TXN
 * 
tx
;

976 
DBT
 * 
key
;

977 
DBT
 * 
da
;

978 
u_t32_t
 
ags
;

980 
CLIENT
 *

;

981 
__db_g_msg
 
msg
;

982 
__db_g_y
 *
yp
 = 
NULL
;

983 
t
;

984 
DB_ENV
 *
dbv
;

986 
t
 = 0;

987 
dbv
 = 
dbp
->dbenv;

988 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

989  (
	`__db_norv
(
NULL
));

991 

 = (
CLIENT
 *)
dbv
->
_hd
;

993 i(
dbp
 =
NULL
)

994 
msg
.
dbp_id
 = 0;

996 
msg
.
dbp_id
 = 
dbp
->
_id
;

997 i(
tx
 =
NULL
)

998 
msg
.
tx_id
 = 0;

1000 
msg
.
tx_id
 = 
tx
->
txnid
;

1001 
msg
.
keydn
 = 
key
->
dn
;

1002 
msg
.
keydoff
 = 
key
->
doff
;

1003 
msg
.
keyun
 = 
key
->
un
;

1004 
msg
.
keyags
 = 
key
->
ags
;

1005 
msg
.
keyda
.
keyda_v
 = 
key
->
da
;

1006 
msg
.
keyda
.
keyda_n
 = 
key
->
size
;

1007 
msg
.
dadn
 = 
da
->
dn
;

1008 
msg
.
dadoff
 = 
da
->
doff
;

1009 
msg
.
daun
 = 
da
->
un
;

1010 
msg
.
daags
 = 
da
->
ags
;

1011 
msg
.
dada
.
dada_v
 = 
da
->data;

1012 
msg
.
dada
.
dada_n
 = 
da
->
size
;

1013 
msg
.
ags
 = (
u_t
)flags;

1015 
yp
 = 
	`__db_db_g_4006
(&
msg
, 

);

1016 i(
yp
 =
NULL
) {

1017 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1018 
t
 = 
DB_NOSERVER
;

1019 
out
;

1021 
t
 = 
	`__db_db_g_t
(
dbp
, 
tx
, 
key
, 
da
, 
ags
, 
yp
);

1022 
out
:

1023 i(
yp
 !
NULL
)

1024 
	`xdr_
((
xdroc_t
)
xdr___db_g_y
, (*)
yp
);

1025  (
t
);

1026 
	}
}

1032 
	$__db_db_g_bt_mkey
(
dbp
, 
mkeyp
)

1033 
DB
 * 
dbp
;

1034 
u_t32_t
 * 
mkeyp
;

1036 
CLIENT
 *

;

1037 
__db_g_bt_mkey_msg
 
msg
;

1038 
__db_g_bt_mkey_y
 *
yp
 = 
NULL
;

1039 
t
;

1040 
DB_ENV
 *
dbv
;

1042 
t
 = 0;

1043 
dbv
 = 
dbp
->dbenv;

1044 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1045  (
	`__db_norv
(
NULL
));

1047 

 = (
CLIENT
 *)
dbv
->
_hd
;

1049 i(
dbp
 =
NULL
)

1050 
msg
.
dbp_id
 = 0;

1052 
msg
.
dbp_id
 = 
dbp
->
_id
;

1054 
yp
 = 
	`__db_db_g_bt_mkey_4006
(&
msg
, 

);

1055 i(
yp
 =
NULL
) {

1056 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1057 
t
 = 
DB_NOSERVER
;

1058 
out
;

1060 
t
 = 
yp
->
us
;

1061 i(
mkeyp
 !
NULL
)

1062 *
mkeyp
 = (
u_t32_t
)
yp
->
mkey
;

1063 
out
:

1064 i(
yp
 !
NULL
)

1065 
	`xdr_
((
xdroc_t
)
xdr___db_g_bt_mkey_y
, (*)
yp
);

1066  (
t
);

1067 
	}
}

1074 
	$__db_db_g_dbme
(
dbp
, 
fam
, 
dbm
)

1075 
DB
 * 
dbp
;

1076 cڡ * * 
fam
;

1077 cڡ * * 
dbm
;

1079 
CLIENT
 *

;

1080 
__db_g_dbme_msg
 
msg
;

1081 
__db_g_dbme_y
 *
yp
 = 
NULL
;

1082 
t
;

1083 
DB_ENV
 *
dbv
;

1085 
t
 = 0;

1086 
dbv
 = 
dbp
->dbenv;

1087 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1088  (
	`__db_norv
(
NULL
));

1090 

 = (
CLIENT
 *)
dbv
->
_hd
;

1092 i(
dbp
 =
NULL
)

1093 
msg
.
dbp_id
 = 0;

1095 
msg
.
dbp_id
 = 
dbp
->
_id
;

1097 
yp
 = 
	`__db_db_g_dbme_4006
(&
msg
, 

);

1098 i(
yp
 =
NULL
) {

1099 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1100 
t
 = 
DB_NOSERVER
;

1101 
out
;

1103 
t
 = 
yp
->
us
;

1104 i(
fam
 !
NULL
)

1105 *
fam
 = (cڡ *)
yp
->
fame
;

1106 i(
dbm
 !
NULL
)

1107 *
dbm
 = (cڡ *)
yp
->
dbme
;

1108 
out
:

1109 i(
yp
 !
NULL
)

1110 
	`xdr_
((
xdroc_t
)
xdr___db_g_dbme_y
, (*)
yp
);

1111  (
t
);

1112 
	}
}

1118 
	$__db_db_g_y_ags
(
dbp
, 
ag
)

1119 
DB
 * 
dbp
;

1120 
u_t32_t
 * 
ag
;

1122 
CLIENT
 *

;

1123 
__db_g_y_ags_msg
 
msg
;

1124 
__db_g_y_ags_y
 *
yp
 = 
NULL
;

1125 
t
;

1126 
DB_ENV
 *
dbv
;

1128 
t
 = 0;

1129 
dbv
 = 
dbp
->dbenv;

1130 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1131  (
	`__db_norv
(
NULL
));

1133 

 = (
CLIENT
 *)
dbv
->
_hd
;

1135 i(
dbp
 =
NULL
)

1136 
msg
.
dbp_id
 = 0;

1138 
msg
.
dbp_id
 = 
dbp
->
_id
;

1140 
yp
 = 
	`__db_db_g_y_ags_4006
(&
msg
, 

);

1141 i(
yp
 =
NULL
) {

1142 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1143 
t
 = 
DB_NOSERVER
;

1144 
out
;

1146 
t
 = 
yp
->
us
;

1147 i(
ag
 !
NULL
)

1148 *
ag
 = (
u_t32_t
)
yp
->
ags
;

1149 
out
:

1150 i(
yp
 !
NULL
)

1151 
	`xdr_
((
xdroc_t
)
xdr___db_g_y_ags_y
, (*)
yp
);

1152  (
t
);

1153 
	}
}

1159 
	$__db_db_g_ags
(
dbp
, 
ag
)

1160 
DB
 * 
dbp
;

1161 
u_t32_t
 * 
ag
;

1163 
CLIENT
 *

;

1164 
__db_g_ags_msg
 
msg
;

1165 
__db_g_ags_y
 *
yp
 = 
NULL
;

1166 
t
;

1167 
DB_ENV
 *
dbv
;

1169 
t
 = 0;

1170 
dbv
 = 
dbp
->dbenv;

1171 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1172  (
	`__db_norv
(
NULL
));

1174 

 = (
CLIENT
 *)
dbv
->
_hd
;

1176 i(
dbp
 =
NULL
)

1177 
msg
.
dbp_id
 = 0;

1179 
msg
.
dbp_id
 = 
dbp
->
_id
;

1181 
yp
 = 
	`__db_db_g_ags_4006
(&
msg
, 

);

1182 i(
yp
 =
NULL
) {

1183 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1184 
t
 = 
DB_NOSERVER
;

1185 
out
;

1187 
t
 = 
yp
->
us
;

1188 i(
ag
 !
NULL
)

1189 *
ag
 = (
u_t32_t
)
yp
->
ags
;

1190 
out
:

1191 i(
yp
 !
NULL
)

1192 
	`xdr_
((
xdroc_t
)
xdr___db_g_ags_y
, (*)
yp
);

1193  (
t
);

1194 
	}
}

1200 
	$__db_db_g_h_f
(
dbp
, 
fp
)

1201 
DB
 * 
dbp
;

1202 
u_t32_t
 * 
fp
;

1204 
CLIENT
 *

;

1205 
__db_g_h_f_msg
 
msg
;

1206 
__db_g_h_f_y
 *
yp
 = 
NULL
;

1207 
t
;

1208 
DB_ENV
 *
dbv
;

1210 
t
 = 0;

1211 
dbv
 = 
dbp
->dbenv;

1212 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1213  (
	`__db_norv
(
NULL
));

1215 

 = (
CLIENT
 *)
dbv
->
_hd
;

1217 i(
dbp
 =
NULL
)

1218 
msg
.
dbp_id
 = 0;

1220 
msg
.
dbp_id
 = 
dbp
->
_id
;

1222 
yp
 = 
	`__db_db_g_h_f_4006
(&
msg
, 

);

1223 i(
yp
 =
NULL
) {

1224 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1225 
t
 = 
DB_NOSERVER
;

1226 
out
;

1228 
t
 = 
yp
->
us
;

1229 i(
fp
 !
NULL
)

1230 *
fp
 = (
u_t32_t
)
yp
->
f
;

1231 
out
:

1232 i(
yp
 !
NULL
)

1233 
	`xdr_
((
xdroc_t
)
xdr___db_g_h_f_y
, (*)
yp
);

1234  (
t
);

1235 
	}
}

1241 
	$__db_db_g_h_m
(
dbp
, 
mp
)

1242 
DB
 * 
dbp
;

1243 
u_t32_t
 * 
mp
;

1245 
CLIENT
 *

;

1246 
__db_g_h_m_msg
 
msg
;

1247 
__db_g_h_m_y
 *
yp
 = 
NULL
;

1248 
t
;

1249 
DB_ENV
 *
dbv
;

1251 
t
 = 0;

1252 
dbv
 = 
dbp
->dbenv;

1253 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1254  (
	`__db_norv
(
NULL
));

1256 

 = (
CLIENT
 *)
dbv
->
_hd
;

1258 i(
dbp
 =
NULL
)

1259 
msg
.
dbp_id
 = 0;

1261 
msg
.
dbp_id
 = 
dbp
->
_id
;

1263 
yp
 = 
	`__db_db_g_h_m_4006
(&
msg
, 

);

1264 i(
yp
 =
NULL
) {

1265 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1266 
t
 = 
DB_NOSERVER
;

1267 
out
;

1269 
t
 = 
yp
->
us
;

1270 i(
mp
 !
NULL
)

1271 *
mp
 = (
u_t32_t
)
yp
->
m
;

1272 
out
:

1273 i(
yp
 !
NULL
)

1274 
	`xdr_
((
xdroc_t
)
xdr___db_g_h_m_y
, (*)
yp
);

1275  (
t
);

1276 
	}
}

1282 
	$__db_db_g_ld
(
dbp
, 
ldp
)

1283 
DB
 * 
dbp
;

1284 * 
ldp
;

1286 
CLIENT
 *

;

1287 
__db_g_ld_msg
 
msg
;

1288 
__db_g_ld_y
 *
yp
 = 
NULL
;

1289 
t
;

1290 
DB_ENV
 *
dbv
;

1292 
t
 = 0;

1293 
dbv
 = 
dbp
->dbenv;

1294 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1295  (
	`__db_norv
(
NULL
));

1297 

 = (
CLIENT
 *)
dbv
->
_hd
;

1299 i(
dbp
 =
NULL
)

1300 
msg
.
dbp_id
 = 0;

1302 
msg
.
dbp_id
 = 
dbp
->
_id
;

1304 
yp
 = 
	`__db_db_g_ld_4006
(&
msg
, 

);

1305 i(
yp
 =
NULL
) {

1306 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1307 
t
 = 
DB_NOSERVER
;

1308 
out
;

1310 
t
 = 
yp
->
us
;

1311 i(
ldp
 !
NULL
)

1312 *
ldp
 = ()
yp
->
ld
;

1313 
out
:

1314 i(
yp
 !
NULL
)

1315 
	`xdr_
((
xdroc_t
)
xdr___db_g_ld_y
, (*)
yp
);

1316  (
t
);

1317 
	}
}

1323 
	$__db_db_g_ݒ_ags
(
dbp
, 
ag
)

1324 
DB
 * 
dbp
;

1325 
u_t32_t
 * 
ag
;

1327 
CLIENT
 *

;

1328 
__db_g_ݒ_ags_msg
 
msg
;

1329 
__db_g_ݒ_ags_y
 *
yp
 = 
NULL
;

1330 
t
;

1331 
DB_ENV
 *
dbv
;

1333 
t
 = 0;

1334 
dbv
 = 
dbp
->dbenv;

1335 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1336  (
	`__db_norv
(
NULL
));

1338 

 = (
CLIENT
 *)
dbv
->
_hd
;

1340 i(
dbp
 =
NULL
)

1341 
msg
.
dbp_id
 = 0;

1343 
msg
.
dbp_id
 = 
dbp
->
_id
;

1345 
yp
 = 
	`__db_db_g_ݒ_ags_4006
(&
msg
, 

);

1346 i(
yp
 =
NULL
) {

1347 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1348 
t
 = 
DB_NOSERVER
;

1349 
out
;

1351 
t
 = 
yp
->
us
;

1352 i(
ag
 !
NULL
)

1353 *
ag
 = (
u_t32_t
)
yp
->
ags
;

1354 
out
:

1355 i(
yp
 !
NULL
)

1356 
	`xdr_
((
xdroc_t
)
xdr___db_g_ݒ_ags_y
, (*)
yp
);

1357  (
t
);

1358 
	}
}

1364 
	$__db_db_g_gesize
(
dbp
, 
gesiz
)

1365 
DB
 * 
dbp
;

1366 
u_t32_t
 * 
gesiz
;

1368 
CLIENT
 *

;

1369 
__db_g_gesize_msg
 
msg
;

1370 
__db_g_gesize_y
 *
yp
 = 
NULL
;

1371 
t
;

1372 
DB_ENV
 *
dbv
;

1374 
t
 = 0;

1375 
dbv
 = 
dbp
->dbenv;

1376 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1377  (
	`__db_norv
(
NULL
));

1379 

 = (
CLIENT
 *)
dbv
->
_hd
;

1381 i(
dbp
 =
NULL
)

1382 
msg
.
dbp_id
 = 0;

1384 
msg
.
dbp_id
 = 
dbp
->
_id
;

1386 
yp
 = 
	`__db_db_g_gesize_4006
(&
msg
, 

);

1387 i(
yp
 =
NULL
) {

1388 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1389 
t
 = 
DB_NOSERVER
;

1390 
out
;

1392 
t
 = 
yp
->
us
;

1393 i(
gesiz
 !
NULL
)

1394 *
gesiz
 = (
u_t32_t
)
yp
->
gesize
;

1395 
out
:

1396 i(
yp
 !
NULL
)

1397 
	`xdr_
((
xdroc_t
)
xdr___db_g_gesize_y
, (*)
yp
);

1398  (
t
);

1399 
	}
}

1405 
	$__db_db_g_iܙy
(
dbp
, 
iܙyp
)

1406 
DB
 * 
dbp
;

1407 
DB_CACHE_PRIORITY
 * 
iܙyp
;

1409 
CLIENT
 *

;

1410 
__db_g_iܙy_msg
 
msg
;

1411 
__db_g_iܙy_y
 *
yp
 = 
NULL
;

1412 
t
;

1413 
DB_ENV
 *
dbv
;

1415 
t
 = 0;

1416 
dbv
 = 
dbp
->dbenv;

1417 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1418  (
	`__db_norv
(
NULL
));

1420 

 = (
CLIENT
 *)
dbv
->
_hd
;

1422 i(
dbp
 =
NULL
)

1423 
msg
.
dbp_id
 = 0;

1425 
msg
.
dbp_id
 = 
dbp
->
_id
;

1427 
yp
 = 
	`__db_db_g_iܙy_4006
(&
msg
, 

);

1428 i(
yp
 =
NULL
) {

1429 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1430 
t
 = 
DB_NOSERVER
;

1431 
out
;

1433 
t
 = 
yp
->
us
;

1434 i(
iܙyp
 !
NULL
)

1435 *
iܙyp
 = (
DB_CACHE_PRIORITY
)
yp
->
iܙy
;

1436 
out
:

1437 i(
yp
 !
NULL
)

1438 
	`xdr_
((
xdroc_t
)
xdr___db_g_iܙy_y
, (*)
yp
);

1439  (
t
);

1440 
	}
}

1446 
	$__db_db_g_q_exsize
(
dbp
, 
exsiz
)

1447 
DB
 * 
dbp
;

1448 
u_t32_t
 * 
exsiz
;

1450 
CLIENT
 *

;

1451 
__db_g_q_exsize_msg
 
msg
;

1452 
__db_g_q_exsize_y
 *
yp
 = 
NULL
;

1453 
t
;

1454 
DB_ENV
 *
dbv
;

1456 
t
 = 0;

1457 
dbv
 = 
dbp
->dbenv;

1458 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1459  (
	`__db_norv
(
NULL
));

1461 

 = (
CLIENT
 *)
dbv
->
_hd
;

1463 i(
dbp
 =
NULL
)

1464 
msg
.
dbp_id
 = 0;

1466 
msg
.
dbp_id
 = 
dbp
->
_id
;

1468 
yp
 = 
	`__db_db_g_q_exsize_4006
(&
msg
, 

);

1469 i(
yp
 =
NULL
) {

1470 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1471 
t
 = 
DB_NOSERVER
;

1472 
out
;

1474 
t
 = 
yp
->
us
;

1475 i(
exsiz
 !
NULL
)

1476 *
exsiz
 = (
u_t32_t
)
yp
->
exsize
;

1477 
out
:

1478 i(
yp
 !
NULL
)

1479 
	`xdr_
((
xdroc_t
)
xdr___db_g_q_exsize_y
, (*)
yp
);

1480  (
t
);

1481 
	}
}

1487 
	$__db_db_g__dim
(
dbp
, 
dimp
)

1488 
DB
 * 
dbp
;

1489 * 
dimp
;

1491 
CLIENT
 *

;

1492 
__db_g__dim_msg
 
msg
;

1493 
__db_g__dim_y
 *
yp
 = 
NULL
;

1494 
t
;

1495 
DB_ENV
 *
dbv
;

1497 
t
 = 0;

1498 
dbv
 = 
dbp
->dbenv;

1499 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1500  (
	`__db_norv
(
NULL
));

1502 

 = (
CLIENT
 *)
dbv
->
_hd
;

1504 i(
dbp
 =
NULL
)

1505 
msg
.
dbp_id
 = 0;

1507 
msg
.
dbp_id
 = 
dbp
->
_id
;

1509 
yp
 = 
	`__db_db_g__dim_4006
(&
msg
, 

);

1510 i(
yp
 =
NULL
) {

1511 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1512 
t
 = 
DB_NOSERVER
;

1513 
out
;

1515 
t
 = 
yp
->
us
;

1516 i(
dimp
 !
NULL
)

1517 *
dimp
 = ()
yp
->
dim
;

1518 
out
:

1519 i(
yp
 !
NULL
)

1520 
	`xdr_
((
xdroc_t
)
xdr___db_g__dim_y
, (*)
yp
);

1521  (
t
);

1522 
	}
}

1528 
	$__db_db_g__n
(
dbp
, 

)

1529 
DB
 * 
dbp
;

1530 
u_t32_t
 * 

;

1532 
CLIENT
 *

;

1533 
__db_g__n_msg
 
msg
;

1534 
__db_g__n_y
 *
yp
 = 
NULL
;

1535 
t
;

1536 
DB_ENV
 *
dbv
;

1538 
t
 = 0;

1539 
dbv
 = 
dbp
->dbenv;

1540 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1541  (
	`__db_norv
(
NULL
));

1543 

 = (
CLIENT
 *)
dbv
->
_hd
;

1545 i(
dbp
 =
NULL
)

1546 
msg
.
dbp_id
 = 0;

1548 
msg
.
dbp_id
 = 
dbp
->
_id
;

1550 
yp
 = 
	`__db_db_g__n_4006
(&
msg
, 

);

1551 i(
yp
 =
NULL
) {

1552 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1553 
t
 = 
DB_NOSERVER
;

1554 
out
;

1556 
t
 = 
yp
->
us
;

1557 i(

 !
NULL
)

1558 *

 = (
u_t32_t
)
yp
->
n
;

1559 
out
:

1560 i(
yp
 !
NULL
)

1561 
	`xdr_
((
xdroc_t
)
xdr___db_g__n_y
, (*)
yp
);

1562  (
t
);

1563 
	}
}

1569 
	$__db_db_g__d
(
dbp
, 
dp
)

1570 
DB
 * 
dbp
;

1571 * 
dp
;

1573 
CLIENT
 *

;

1574 
__db_g__d_msg
 
msg
;

1575 
__db_g__d_y
 *
yp
 = 
NULL
;

1576 
t
;

1577 
DB_ENV
 *
dbv
;

1579 
t
 = 0;

1580 
dbv
 = 
dbp
->dbenv;

1581 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1582  (
	`__db_norv
(
NULL
));

1584 

 = (
CLIENT
 *)
dbv
->
_hd
;

1586 i(
dbp
 =
NULL
)

1587 
msg
.
dbp_id
 = 0;

1589 
msg
.
dbp_id
 = 
dbp
->
_id
;

1591 
yp
 = 
	`__db_db_g__d_4006
(&
msg
, 

);

1592 i(
yp
 =
NULL
) {

1593 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1594 
t
 = 
DB_NOSERVER
;

1595 
out
;

1597 
t
 = 
yp
->
us
;

1598 i(
dp
 !
NULL
)

1599 *
dp
 = ()
yp
->
d
;

1600 
out
:

1601 i(
yp
 !
NULL
)

1602 
	`xdr_
((
xdroc_t
)
xdr___db_g__d_y
, (*)
yp
);

1603  (
t
);

1604 
	}
}

1610 
	$__db_db_jo
(
dbp
, 
curs
, 
db
, 
ags
)

1611 
DB
 * 
dbp
;

1612 
DBC
 ** 
curs
;

1613 
DBC
 ** 
db
;

1614 
u_t32_t
 
ags
;

1616 
CLIENT
 *

;

1617 
__db_jo_msg
 
msg
;

1618 
__db_jo_y
 *
yp
 = 
NULL
;

1619 
t
;

1620 
DB_ENV
 *
dbv
;

1621 
DBC
 ** 
cur
;

1622 
cursi
;

1623 
u_t32_t
 * 
cursq
;

1625 
t
 = 0;

1626 
dbv
 = 
dbp
->dbenv;

1627 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1628  (
	`__db_norv
(
NULL
));

1630 

 = (
CLIENT
 *)
dbv
->
_hd
;

1632 i(
dbp
 =
NULL
)

1633 
msg
.
dbp_id
 = 0;

1635 
msg
.
dbp_id
 = 
dbp
->
_id
;

1636 
cursi
 = 0, 
cur
 = 
curs
; *cursp != 0; cursi++, cursp++)

1638 
msg
.
curs
.
curs_n
 = (
u_t
)
cursi
;

1639 i((
t
 = 
	`__os_oc
(
dbv
,

1640 
msg
.
curs
.
curs_n
, (
u_t32_t
), &msg.curs.
curs_v
)) != 0)

1641  (
t
);

1642 
cursq
 = 
msg
.
curs
.
curs_v
, 
cur
 = curs; 
cursi
--; cursq++, cursp++)

1643 *
cursq
 = (*
cur
)->
_id
;

1644 
msg
.
ags
 = (
u_t
)flags;

1646 
yp
 = 
	`__db_db_jo_4006
(&
msg
, 

);

1647 
	`__os_
(
dbv
, 
msg
.
curs
.
curs_v
);

1648 i(
yp
 =
NULL
) {

1649 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1650 
t
 = 
DB_NOSERVER
;

1651 
out
;

1653 
t
 = 
	`__db_db_jo_t
(
dbp
, 
curs
, 
db
, 
ags
, 
yp
);

1654 
out
:

1655 i(
yp
 !
NULL
)

1656 
	`xdr_
((
xdroc_t
)
xdr___db_jo_y
, (*)
yp
);

1657  (
t
);

1658 
	}
}

1665 
	$__db_db_key_nge
(
dbp
, 
tx
, 
key
, 
nge
, 
ags
)

1666 
DB
 * 
dbp
;

1667 
DB_TXN
 * 
tx
;

1668 
DBT
 * 
key
;

1669 
DB_KEY_RANGE
 * 
nge
;

1670 
u_t32_t
 
ags
;

1672 
CLIENT
 *

;

1673 
__db_key_nge_msg
 
msg
;

1674 
__db_key_nge_y
 *
yp
 = 
NULL
;

1675 
t
;

1676 
DB_ENV
 *
dbv
;

1678 
t
 = 0;

1679 
dbv
 = 
dbp
->dbenv;

1680 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1681  (
	`__db_norv
(
NULL
));

1683 

 = (
CLIENT
 *)
dbv
->
_hd
;

1685 i(
dbp
 =
NULL
)

1686 
msg
.
dbp_id
 = 0;

1688 
msg
.
dbp_id
 = 
dbp
->
_id
;

1689 i(
tx
 =
NULL
)

1690 
msg
.
tx_id
 = 0;

1692 
msg
.
tx_id
 = 
tx
->
txnid
;

1693 
msg
.
keydn
 = 
key
->
dn
;

1694 
msg
.
keydoff
 = 
key
->
doff
;

1695 
msg
.
keyun
 = 
key
->
un
;

1696 
msg
.
keyags
 = 
key
->
ags
;

1697 
msg
.
keyda
.
keyda_v
 = 
key
->
da
;

1698 
msg
.
keyda
.
keyda_n
 = 
key
->
size
;

1699 
msg
.
ags
 = (
u_t
)flags;

1701 
yp
 = 
	`__db_db_key_nge_4006
(&
msg
, 

);

1702 i(
yp
 =
NULL
) {

1703 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1704 
t
 = 
DB_NOSERVER
;

1705 
out
;

1707 
t
 = 
	`__db_db_key_nge_t
(
dbp
, 
tx
, 
key
, 
nge
, 
ags
, 
yp
);

1708 
out
:

1709 i(
yp
 !
NULL
)

1710 
	`xdr_
((
xdroc_t
)
xdr___db_key_nge_y
, (*)
yp
);

1711  (
t
);

1712 
	}
}

1719 
	$__db_db_ݒ
(
dbp
, 
tx
, 
me
, 
subdb
, 
ty
, 
ags
, 
mode
)

1720 
DB
 * 
dbp
;

1721 
DB_TXN
 * 
tx
;

1722 cڡ * 
me
;

1723 cڡ * 
subdb
;

1724 
DBTYPE
 
ty
;

1725 
u_t32_t
 
ags
;

1726 
mode
;

1728 
CLIENT
 *

;

1729 
__db_ݒ_msg
 
msg
;

1730 
__db_ݒ_y
 *
yp
 = 
NULL
;

1731 
t
;

1732 
DB_ENV
 *
dbv
;

1734 
t
 = 0;

1735 
dbv
 = 
dbp
->dbenv;

1736 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1737  (
	`__db_norv
(
NULL
));

1739 

 = (
CLIENT
 *)
dbv
->
_hd
;

1741 i(
dbp
 =
NULL
)

1742 
msg
.
dbp_id
 = 0;

1744 
msg
.
dbp_id
 = 
dbp
->
_id
;

1745 i(
tx
 =
NULL
)

1746 
msg
.
tx_id
 = 0;

1748 
msg
.
tx_id
 = 
tx
->
txnid
;

1749 i(
me
 =
NULL
)

1750 
msg
.
me
 = "";

1752 
msg
.
me
 = (*)name;

1753 i(
subdb
 =
NULL
)

1754 
msg
.
subdb
 = "";

1756 
msg
.
subdb
 = (*)subdb;

1757 
msg
.
ty
 = (
u_t
)type;

1758 
msg
.
ags
 = (
u_t
)flags;

1759 
msg
.
mode
 = (
u_t
)mode;

1761 
yp
 = 
	`__db_db_ݒ_4006
(&
msg
, 

);

1762 i(
yp
 =
NULL
) {

1763 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1764 
t
 = 
DB_NOSERVER
;

1765 
out
;

1767 
t
 = 
	`__db_db_ݒ_t
(
dbp
, 
tx
, 
me
, 
subdb
, 
ty
, 
ags
, 
mode
, 
yp
);

1768 
out
:

1769 i(
yp
 !
NULL
)

1770 
	`xdr_
((
xdroc_t
)
xdr___db_ݒ_y
, (*)
yp
);

1771  (
t
);

1772 
	}
}

1779 
	$__db_db_pg
(
dbp
, 
tx
, 
skey
, 
pkey
, 
da
, 
ags
)

1780 
DB
 * 
dbp
;

1781 
DB_TXN
 * 
tx
;

1782 
DBT
 * 
skey
;

1783 
DBT
 * 
pkey
;

1784 
DBT
 * 
da
;

1785 
u_t32_t
 
ags
;

1787 
CLIENT
 *

;

1788 
__db_pg_msg
 
msg
;

1789 
__db_pg_y
 *
yp
 = 
NULL
;

1790 
t
;

1791 
DB_ENV
 *
dbv
;

1793 
t
 = 0;

1794 
dbv
 = 
dbp
->dbenv;

1795 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1796  (
	`__db_norv
(
NULL
));

1798 

 = (
CLIENT
 *)
dbv
->
_hd
;

1800 i(
dbp
 =
NULL
)

1801 
msg
.
dbp_id
 = 0;

1803 
msg
.
dbp_id
 = 
dbp
->
_id
;

1804 i(
tx
 =
NULL
)

1805 
msg
.
tx_id
 = 0;

1807 
msg
.
tx_id
 = 
tx
->
txnid
;

1808 
msg
.
skeydn
 = 
skey
->
dn
;

1809 
msg
.
skeydoff
 = 
skey
->
doff
;

1810 
msg
.
skeyun
 = 
skey
->
un
;

1811 
msg
.
skeyags
 = 
skey
->
ags
;

1812 
msg
.
skeyda
.
skeyda_v
 = 
skey
->
da
;

1813 
msg
.
skeyda
.
skeyda_n
 = 
skey
->
size
;

1814 
msg
.
pkeydn
 = 
pkey
->
dn
;

1815 
msg
.
pkeydoff
 = 
pkey
->
doff
;

1816 
msg
.
pkeyun
 = 
pkey
->
un
;

1817 
msg
.
pkeyags
 = 
pkey
->
ags
;

1818 
msg
.
pkeyda
.
pkeyda_v
 = 
pkey
->
da
;

1819 
msg
.
pkeyda
.
pkeyda_n
 = 
pkey
->
size
;

1820 
msg
.
dadn
 = 
da
->
dn
;

1821 
msg
.
dadoff
 = 
da
->
doff
;

1822 
msg
.
daun
 = 
da
->
un
;

1823 
msg
.
daags
 = 
da
->
ags
;

1824 
msg
.
dada
.
dada_v
 = 
da
->data;

1825 
msg
.
dada
.
dada_n
 = 
da
->
size
;

1826 
msg
.
ags
 = (
u_t
)flags;

1828 
yp
 = 
	`__db_db_pg_4006
(&
msg
, 

);

1829 i(
yp
 =
NULL
) {

1830 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1831 
t
 = 
DB_NOSERVER
;

1832 
out
;

1834 
t
 = 
	`__db_db_pg_t
(
dbp
, 
tx
, 
skey
, 
pkey
, 
da
, 
ags
, 
yp
);

1835 
out
:

1836 i(
yp
 !
NULL
)

1837 
	`xdr_
((
xdroc_t
)
xdr___db_pg_y
, (*)
yp
);

1838  (
t
);

1839 
	}
}

1845 
	$__db_db_put
(
dbp
, 
tx
, 
key
, 
da
, 
ags
)

1846 
DB
 * 
dbp
;

1847 
DB_TXN
 * 
tx
;

1848 
DBT
 * 
key
;

1849 
DBT
 * 
da
;

1850 
u_t32_t
 
ags
;

1852 
CLIENT
 *

;

1853 
__db_put_msg
 
msg
;

1854 
__db_put_y
 *
yp
 = 
NULL
;

1855 
t
;

1856 
DB_ENV
 *
dbv
;

1858 
t
 = 0;

1859 
dbv
 = 
dbp
->dbenv;

1860 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1861  (
	`__db_norv
(
NULL
));

1863 

 = (
CLIENT
 *)
dbv
->
_hd
;

1865 i(
dbp
 =
NULL
)

1866 
msg
.
dbp_id
 = 0;

1868 
msg
.
dbp_id
 = 
dbp
->
_id
;

1869 i(
tx
 =
NULL
)

1870 
msg
.
tx_id
 = 0;

1872 
msg
.
tx_id
 = 
tx
->
txnid
;

1873 
msg
.
keydn
 = 
key
->
dn
;

1874 
msg
.
keydoff
 = 
key
->
doff
;

1875 
msg
.
keyun
 = 
key
->
un
;

1876 
msg
.
keyags
 = 
key
->
ags
;

1877 
msg
.
keyda
.
keyda_v
 = 
key
->
da
;

1878 
msg
.
keyda
.
keyda_n
 = 
key
->
size
;

1879 
msg
.
dadn
 = 
da
->
dn
;

1880 
msg
.
dadoff
 = 
da
->
doff
;

1881 
msg
.
daun
 = 
da
->
un
;

1882 
msg
.
daags
 = 
da
->
ags
;

1883 
msg
.
dada
.
dada_v
 = 
da
->data;

1884 
msg
.
dada
.
dada_n
 = 
da
->
size
;

1885 
msg
.
ags
 = (
u_t
)flags;

1887 
yp
 = 
	`__db_db_put_4006
(&
msg
, 

);

1888 i(
yp
 =
NULL
) {

1889 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1890 
t
 = 
DB_NOSERVER
;

1891 
out
;

1893 
t
 = 
	`__db_db_put_t
(
dbp
, 
tx
, 
key
, 
da
, 
ags
, 
yp
);

1894 
out
:

1895 i(
yp
 !
NULL
)

1896 
	`xdr_
((
xdroc_t
)
xdr___db_put_y
, (*)
yp
);

1897  (
t
);

1898 
	}
}

1905 
	$__db_db_move
(
dbp
, 
me
, 
subdb
, 
ags
)

1906 
DB
 * 
dbp
;

1907 cڡ * 
me
;

1908 cڡ * 
subdb
;

1909 
u_t32_t
 
ags
;

1911 
CLIENT
 *

;

1912 
__db_move_msg
 
msg
;

1913 
__db_move_y
 *
yp
 = 
NULL
;

1914 
t
;

1915 
DB_ENV
 *
dbv
;

1917 
t
 = 0;

1918 
dbv
 = 
dbp
->dbenv;

1919 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1920  (
	`__db_norv
(
NULL
));

1922 

 = (
CLIENT
 *)
dbv
->
_hd
;

1924 i(
dbp
 =
NULL
)

1925 
msg
.
dbp_id
 = 0;

1927 
msg
.
dbp_id
 = 
dbp
->
_id
;

1928 i(
me
 =
NULL
)

1929 
msg
.
me
 = "";

1931 
msg
.
me
 = (*)name;

1932 i(
subdb
 =
NULL
)

1933 
msg
.
subdb
 = "";

1935 
msg
.
subdb
 = (*)subdb;

1936 
msg
.
ags
 = (
u_t
)flags;

1938 
yp
 = 
	`__db_db_move_4006
(&
msg
, 

);

1939 i(
yp
 =
NULL
) {

1940 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1941 
t
 = 
DB_NOSERVER
;

1942 
out
;

1944 
t
 = 
	`__db_db_move_t
(
dbp
, 
me
, 
subdb
, 
ags
, 
yp
);

1945 
out
:

1946 i(
yp
 !
NULL
)

1947 
	`xdr_
((
xdroc_t
)
xdr___db_move_y
, (*)
yp
);

1948  (
t
);

1949 
	}
}

1956 
	$__db_db_me
(
dbp
, 
me
, 
subdb
, 
wme
, 
ags
)

1957 
DB
 * 
dbp
;

1958 cڡ * 
me
;

1959 cڡ * 
subdb
;

1960 cڡ * 
wme
;

1961 
u_t32_t
 
ags
;

1963 
CLIENT
 *

;

1964 
__db_me_msg
 
msg
;

1965 
__db_me_y
 *
yp
 = 
NULL
;

1966 
t
;

1967 
DB_ENV
 *
dbv
;

1969 
t
 = 0;

1970 
dbv
 = 
dbp
->dbenv;

1971 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

1972  (
	`__db_norv
(
NULL
));

1974 

 = (
CLIENT
 *)
dbv
->
_hd
;

1976 i(
dbp
 =
NULL
)

1977 
msg
.
dbp_id
 = 0;

1979 
msg
.
dbp_id
 = 
dbp
->
_id
;

1980 i(
me
 =
NULL
)

1981 
msg
.
me
 = "";

1983 
msg
.
me
 = (*)name;

1984 i(
subdb
 =
NULL
)

1985 
msg
.
subdb
 = "";

1987 
msg
.
subdb
 = (*)subdb;

1988 i(
wme
 =
NULL
)

1989 
msg
.
wme
 = "";

1991 
msg
.
wme
 = (*)newname;

1992 
msg
.
ags
 = (
u_t
)flags;

1994 
yp
 = 
	`__db_db_me_4006
(&
msg
, 

);

1995 i(
yp
 =
NULL
) {

1996 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

1997 
t
 = 
DB_NOSERVER
;

1998 
out
;

2000 
t
 = 
	`__db_db_me_t
(
dbp
, 
me
, 
subdb
, 
wme
, 
ags
, 
yp
);

2001 
out
:

2002 i(
yp
 !
NULL
)

2003 
	`xdr_
((
xdroc_t
)
xdr___db_me_y
, (*)
yp
);

2004  (
t
);

2005 
	}
}

2011 
	$__db_db_t_bt_mkey
(
dbp
, 
mkey
)

2012 
DB
 * 
dbp
;

2013 
u_t32_t
 
mkey
;

2015 
CLIENT
 *

;

2016 
__db_t_bt_mkey_msg
 
msg
;

2017 
__db_t_bt_mkey_y
 *
yp
 = 
NULL
;

2018 
t
;

2019 
DB_ENV
 *
dbv
;

2021 
t
 = 0;

2022 
dbv
 = 
dbp
->dbenv;

2023 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2024  (
	`__db_norv
(
NULL
));

2026 

 = (
CLIENT
 *)
dbv
->
_hd
;

2028 i(
dbp
 =
NULL
)

2029 
msg
.
dbp_id
 = 0;

2031 
msg
.
dbp_id
 = 
dbp
->
_id
;

2032 
msg
.
mkey
 = (
u_t
)minkey;

2034 
yp
 = 
	`__db_db_t_bt_mkey_4006
(&
msg
, 

);

2035 i(
yp
 =
NULL
) {

2036 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2037 
t
 = 
DB_NOSERVER
;

2038 
out
;

2040 
t
 = 
yp
->
us
;

2041 
out
:

2042 i(
yp
 !
NULL
)

2043 
	`xdr_
((
xdroc_t
)
xdr___db_t_bt_mkey_y
, (*)
yp
);

2044  (
t
);

2045 
	}
}

2051 
	$__db_db_t_y
(
dbp
, 
sswd
, 
ags
)

2052 
DB
 * 
dbp
;

2053 cڡ * 
sswd
;

2054 
u_t32_t
 
ags
;

2056 
CLIENT
 *

;

2057 
__db_t_y_msg
 
msg
;

2058 
__db_t_y_y
 *
yp
 = 
NULL
;

2059 
t
;

2060 
DB_ENV
 *
dbv
;

2062 
t
 = 0;

2063 
dbv
 = 
dbp
->dbenv;

2064 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2065  (
	`__db_norv
(
NULL
));

2067 

 = (
CLIENT
 *)
dbv
->
_hd
;

2069 i(
dbp
 =
NULL
)

2070 
msg
.
dbp_id
 = 0;

2072 
msg
.
dbp_id
 = 
dbp
->
_id
;

2073 i(
sswd
 =
NULL
)

2074 
msg
.
sswd
 = "";

2076 
msg
.
sswd
 = (*)passwd;

2077 
msg
.
ags
 = (
u_t
)flags;

2079 
yp
 = 
	`__db_db_t_y_4006
(&
msg
, 

);

2080 i(
yp
 =
NULL
) {

2081 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2082 
t
 = 
DB_NOSERVER
;

2083 
out
;

2085 
t
 = 
yp
->
us
;

2086 
out
:

2087 i(
yp
 !
NULL
)

2088 
	`xdr_
((
xdroc_t
)
xdr___db_t_y_y
, (*)
yp
);

2089  (
t
);

2090 
	}
}

2096 
	$__db_db_t_ags
(
dbp
, 
ags
)

2097 
DB
 * 
dbp
;

2098 
u_t32_t
 
ags
;

2100 
CLIENT
 *

;

2101 
__db_t_ags_msg
 
msg
;

2102 
__db_t_ags_y
 *
yp
 = 
NULL
;

2103 
t
;

2104 
DB_ENV
 *
dbv
;

2106 
t
 = 0;

2107 
dbv
 = 
dbp
->dbenv;

2108 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2109  (
	`__db_norv
(
NULL
));

2111 

 = (
CLIENT
 *)
dbv
->
_hd
;

2113 i(
dbp
 =
NULL
)

2114 
msg
.
dbp_id
 = 0;

2116 
msg
.
dbp_id
 = 
dbp
->
_id
;

2117 
msg
.
ags
 = (
u_t
)flags;

2119 
yp
 = 
	`__db_db_t_ags_4006
(&
msg
, 

);

2120 i(
yp
 =
NULL
) {

2121 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2122 
t
 = 
DB_NOSERVER
;

2123 
out
;

2125 
t
 = 
yp
->
us
;

2126 
out
:

2127 i(
yp
 !
NULL
)

2128 
	`xdr_
((
xdroc_t
)
xdr___db_t_ags_y
, (*)
yp
);

2129  (
t
);

2130 
	}
}

2136 
	$__db_db_t_h_f
(
dbp
, 
f
)

2137 
DB
 * 
dbp
;

2138 
u_t32_t
 
f
;

2140 
CLIENT
 *

;

2141 
__db_t_h_f_msg
 
msg
;

2142 
__db_t_h_f_y
 *
yp
 = 
NULL
;

2143 
t
;

2144 
DB_ENV
 *
dbv
;

2146 
t
 = 0;

2147 
dbv
 = 
dbp
->dbenv;

2148 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2149  (
	`__db_norv
(
NULL
));

2151 

 = (
CLIENT
 *)
dbv
->
_hd
;

2153 i(
dbp
 =
NULL
)

2154 
msg
.
dbp_id
 = 0;

2156 
msg
.
dbp_id
 = 
dbp
->
_id
;

2157 
msg
.
f
 = (
u_t
)ffactor;

2159 
yp
 = 
	`__db_db_t_h_f_4006
(&
msg
, 

);

2160 i(
yp
 =
NULL
) {

2161 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2162 
t
 = 
DB_NOSERVER
;

2163 
out
;

2165 
t
 = 
yp
->
us
;

2166 
out
:

2167 i(
yp
 !
NULL
)

2168 
	`xdr_
((
xdroc_t
)
xdr___db_t_h_f_y
, (*)
yp
);

2169  (
t
);

2170 
	}
}

2176 
	$__db_db_t_h_m
(
dbp
, 
m
)

2177 
DB
 * 
dbp
;

2178 
u_t32_t
 
m
;

2180 
CLIENT
 *

;

2181 
__db_t_h_m_msg
 
msg
;

2182 
__db_t_h_m_y
 *
yp
 = 
NULL
;

2183 
t
;

2184 
DB_ENV
 *
dbv
;

2186 
t
 = 0;

2187 
dbv
 = 
dbp
->dbenv;

2188 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2189  (
	`__db_norv
(
NULL
));

2191 

 = (
CLIENT
 *)
dbv
->
_hd
;

2193 i(
dbp
 =
NULL
)

2194 
msg
.
dbp_id
 = 0;

2196 
msg
.
dbp_id
 = 
dbp
->
_id
;

2197 
msg
.
m
 = (
u_t
)nelem;

2199 
yp
 = 
	`__db_db_t_h_m_4006
(&
msg
, 

);

2200 i(
yp
 =
NULL
) {

2201 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2202 
t
 = 
DB_NOSERVER
;

2203 
out
;

2205 
t
 = 
yp
->
us
;

2206 
out
:

2207 i(
yp
 !
NULL
)

2208 
	`xdr_
((
xdroc_t
)
xdr___db_t_h_m_y
, (*)
yp
);

2209  (
t
);

2210 
	}
}

2216 
	$__db_db_t_ld
(
dbp
, 
ld
)

2217 
DB
 * 
dbp
;

2218 
ld
;

2220 
CLIENT
 *

;

2221 
__db_t_ld_msg
 
msg
;

2222 
__db_t_ld_y
 *
yp
 = 
NULL
;

2223 
t
;

2224 
DB_ENV
 *
dbv
;

2226 
t
 = 0;

2227 
dbv
 = 
dbp
->dbenv;

2228 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2229  (
	`__db_norv
(
NULL
));

2231 

 = (
CLIENT
 *)
dbv
->
_hd
;

2233 i(
dbp
 =
NULL
)

2234 
msg
.
dbp_id
 = 0;

2236 
msg
.
dbp_id
 = 
dbp
->
_id
;

2237 
msg
.
ld
 = (
u_t
)lorder;

2239 
yp
 = 
	`__db_db_t_ld_4006
(&
msg
, 

);

2240 i(
yp
 =
NULL
) {

2241 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2242 
t
 = 
DB_NOSERVER
;

2243 
out
;

2245 
t
 = 
yp
->
us
;

2246 
out
:

2247 i(
yp
 !
NULL
)

2248 
	`xdr_
((
xdroc_t
)
xdr___db_t_ld_y
, (*)
yp
);

2249  (
t
);

2250 
	}
}

2256 
	$__db_db_t_gesize
(
dbp
, 
gesize
)

2257 
DB
 * 
dbp
;

2258 
u_t32_t
 
gesize
;

2260 
CLIENT
 *

;

2261 
__db_t_gesize_msg
 
msg
;

2262 
__db_t_gesize_y
 *
yp
 = 
NULL
;

2263 
t
;

2264 
DB_ENV
 *
dbv
;

2266 
t
 = 0;

2267 
dbv
 = 
dbp
->dbenv;

2268 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2269  (
	`__db_norv
(
NULL
));

2271 

 = (
CLIENT
 *)
dbv
->
_hd
;

2273 i(
dbp
 =
NULL
)

2274 
msg
.
dbp_id
 = 0;

2276 
msg
.
dbp_id
 = 
dbp
->
_id
;

2277 
msg
.
gesize
 = (
u_t
)pagesize;

2279 
yp
 = 
	`__db_db_t_gesize_4006
(&
msg
, 

);

2280 i(
yp
 =
NULL
) {

2281 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2282 
t
 = 
DB_NOSERVER
;

2283 
out
;

2285 
t
 = 
yp
->
us
;

2286 
out
:

2287 i(
yp
 !
NULL
)

2288 
	`xdr_
((
xdroc_t
)
xdr___db_t_gesize_y
, (*)
yp
);

2289  (
t
);

2290 
	}
}

2296 
	$__db_db_t_iܙy
(
dbp
, 
iܙy
)

2297 
DB
 * 
dbp
;

2298 
DB_CACHE_PRIORITY
 
iܙy
;

2300 
CLIENT
 *

;

2301 
__db_t_iܙy_msg
 
msg
;

2302 
__db_t_iܙy_y
 *
yp
 = 
NULL
;

2303 
t
;

2304 
DB_ENV
 *
dbv
;

2306 
t
 = 0;

2307 
dbv
 = 
dbp
->dbenv;

2308 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2309  (
	`__db_norv
(
NULL
));

2311 

 = (
CLIENT
 *)
dbv
->
_hd
;

2313 i(
dbp
 =
NULL
)

2314 
msg
.
dbp_id
 = 0;

2316 
msg
.
dbp_id
 = 
dbp
->
_id
;

2317 
msg
.
iܙy
 = (
u_t
)priority;

2319 
yp
 = 
	`__db_db_t_iܙy_4006
(&
msg
, 

);

2320 i(
yp
 =
NULL
) {

2321 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2322 
t
 = 
DB_NOSERVER
;

2323 
out
;

2325 
t
 = 
yp
->
us
;

2326 
out
:

2327 i(
yp
 !
NULL
)

2328 
	`xdr_
((
xdroc_t
)
xdr___db_t_iܙy_y
, (*)
yp
);

2329  (
t
);

2330 
	}
}

2336 
	$__db_db_t_q_exsize
(
dbp
, 
exsize
)

2337 
DB
 * 
dbp
;

2338 
u_t32_t
 
exsize
;

2340 
CLIENT
 *

;

2341 
__db_t_q_exsize_msg
 
msg
;

2342 
__db_t_q_exsize_y
 *
yp
 = 
NULL
;

2343 
t
;

2344 
DB_ENV
 *
dbv
;

2346 
t
 = 0;

2347 
dbv
 = 
dbp
->dbenv;

2348 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2349  (
	`__db_norv
(
NULL
));

2351 

 = (
CLIENT
 *)
dbv
->
_hd
;

2353 i(
dbp
 =
NULL
)

2354 
msg
.
dbp_id
 = 0;

2356 
msg
.
dbp_id
 = 
dbp
->
_id
;

2357 
msg
.
exsize
 = (
u_t
)extentsize;

2359 
yp
 = 
	`__db_db_t_q_exsize_4006
(&
msg
, 

);

2360 i(
yp
 =
NULL
) {

2361 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2362 
t
 = 
DB_NOSERVER
;

2363 
out
;

2365 
t
 = 
yp
->
us
;

2366 
out
:

2367 i(
yp
 !
NULL
)

2368 
	`xdr_
((
xdroc_t
)
xdr___db_t_q_exsize_y
, (*)
yp
);

2369  (
t
);

2370 
	}
}

2376 
	$__db_db_t__dim
(
dbp
, 
dim
)

2377 
DB
 * 
dbp
;

2378 
dim
;

2380 
CLIENT
 *

;

2381 
__db_t__dim_msg
 
msg
;

2382 
__db_t__dim_y
 *
yp
 = 
NULL
;

2383 
t
;

2384 
DB_ENV
 *
dbv
;

2386 
t
 = 0;

2387 
dbv
 = 
dbp
->dbenv;

2388 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2389  (
	`__db_norv
(
NULL
));

2391 

 = (
CLIENT
 *)
dbv
->
_hd
;

2393 i(
dbp
 =
NULL
)

2394 
msg
.
dbp_id
 = 0;

2396 
msg
.
dbp_id
 = 
dbp
->
_id
;

2397 
msg
.
dim
 = (
u_t
)delim;

2399 
yp
 = 
	`__db_db_t__dim_4006
(&
msg
, 

);

2400 i(
yp
 =
NULL
) {

2401 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2402 
t
 = 
DB_NOSERVER
;

2403 
out
;

2405 
t
 = 
yp
->
us
;

2406 
out
:

2407 i(
yp
 !
NULL
)

2408 
	`xdr_
((
xdroc_t
)
xdr___db_t__dim_y
, (*)
yp
);

2409  (
t
);

2410 
	}
}

2416 
	$__db_db_t__n
(
dbp
, 
n
)

2417 
DB
 * 
dbp
;

2418 
u_t32_t
 
n
;

2420 
CLIENT
 *

;

2421 
__db_t__n_msg
 
msg
;

2422 
__db_t__n_y
 *
yp
 = 
NULL
;

2423 
t
;

2424 
DB_ENV
 *
dbv
;

2426 
t
 = 0;

2427 
dbv
 = 
dbp
->dbenv;

2428 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2429  (
	`__db_norv
(
NULL
));

2431 

 = (
CLIENT
 *)
dbv
->
_hd
;

2433 i(
dbp
 =
NULL
)

2434 
msg
.
dbp_id
 = 0;

2436 
msg
.
dbp_id
 = 
dbp
->
_id
;

2437 
msg
.
n
 = (
u_t
)len;

2439 
yp
 = 
	`__db_db_t__n_4006
(&
msg
, 

);

2440 i(
yp
 =
NULL
) {

2441 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2442 
t
 = 
DB_NOSERVER
;

2443 
out
;

2445 
t
 = 
yp
->
us
;

2446 
out
:

2447 i(
yp
 !
NULL
)

2448 
	`xdr_
((
xdroc_t
)
xdr___db_t__n_y
, (*)
yp
);

2449  (
t
);

2450 
	}
}

2456 
	$__db_db_t__d
(
dbp
, 
d
)

2457 
DB
 * 
dbp
;

2458 
d
;

2460 
CLIENT
 *

;

2461 
__db_t__d_msg
 
msg
;

2462 
__db_t__d_y
 *
yp
 = 
NULL
;

2463 
t
;

2464 
DB_ENV
 *
dbv
;

2466 
t
 = 0;

2467 
dbv
 = 
dbp
->dbenv;

2468 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2469  (
	`__db_norv
(
NULL
));

2471 

 = (
CLIENT
 *)
dbv
->
_hd
;

2473 i(
dbp
 =
NULL
)

2474 
msg
.
dbp_id
 = 0;

2476 
msg
.
dbp_id
 = 
dbp
->
_id
;

2477 
msg
.
d
 = (
u_t
)pad;

2479 
yp
 = 
	`__db_db_t__d_4006
(&
msg
, 

);

2480 i(
yp
 =
NULL
) {

2481 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2482 
t
 = 
DB_NOSERVER
;

2483 
out
;

2485 
t
 = 
yp
->
us
;

2486 
out
:

2487 i(
yp
 !
NULL
)

2488 
	`xdr_
((
xdroc_t
)
xdr___db_t__d_y
, (*)
yp
);

2489  (
t
);

2490 
	}
}

2496 
	$__db_db_
(
dbp
, 
tx
, 

, 
ags
)

2497 
DB
 * 
dbp
;

2498 
DB_TXN
 * 
tx
;

2499 * 

;

2500 
u_t32_t
 
ags
;

2502 
CLIENT
 *

;

2503 
__db__msg
 
msg
;

2504 
__db__y
 *
yp
 = 
NULL
;

2505 
t
;

2506 
DB_ENV
 *
dbv
;

2508 
t
 = 0;

2509 
dbv
 = 
dbp
->dbenv;

2510 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2511  (
	`__db_norv
(
NULL
));

2513 

 = (
CLIENT
 *)
dbv
->
_hd
;

2515 i(
dbp
 =
NULL
)

2516 
msg
.
dbp_id
 = 0;

2518 
msg
.
dbp_id
 = 
dbp
->
_id
;

2519 i(
tx
 =
NULL
)

2520 
msg
.
tx_id
 = 0;

2522 
msg
.
tx_id
 = 
tx
->
txnid
;

2523 
msg
.
ags
 = (
u_t
)flags;

2525 
yp
 = 
	`__db_db__4006
(&
msg
, 

);

2526 i(
yp
 =
NULL
) {

2527 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2528 
t
 = 
DB_NOSERVER
;

2529 
out
;

2531 
t
 = 
	`__db_db__t
(
dbp
, 
tx
, 

, 
ags
, 
yp
);

2532 
out
:

2533 i(
yp
 !
NULL
)

2534 
	`xdr_
((
xdroc_t
)
xdr___db__y
, (*)
yp
);

2535  (
t
);

2536 
	}
}

2542 
	$__db_db_sync
(
dbp
, 
ags
)

2543 
DB
 * 
dbp
;

2544 
u_t32_t
 
ags
;

2546 
CLIENT
 *

;

2547 
__db_sync_msg
 
msg
;

2548 
__db_sync_y
 *
yp
 = 
NULL
;

2549 
t
;

2550 
DB_ENV
 *
dbv
;

2552 
t
 = 0;

2553 
dbv
 = 
dbp
->dbenv;

2554 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2555  (
	`__db_norv
(
NULL
));

2557 

 = (
CLIENT
 *)
dbv
->
_hd
;

2559 i(
dbp
 =
NULL
)

2560 
msg
.
dbp_id
 = 0;

2562 
msg
.
dbp_id
 = 
dbp
->
_id
;

2563 
msg
.
ags
 = (
u_t
)flags;

2565 
yp
 = 
	`__db_db_sync_4006
(&
msg
, 

);

2566 i(
yp
 =
NULL
) {

2567 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2568 
t
 = 
DB_NOSERVER
;

2569 
out
;

2571 
t
 = 
yp
->
us
;

2572 
out
:

2573 i(
yp
 !
NULL
)

2574 
	`xdr_
((
xdroc_t
)
xdr___db_sync_y
, (*)
yp
);

2575  (
t
);

2576 
	}
}

2583 
	$__db_db_un
(
dbp
, 
tx
, 
coup
, 
ags
)

2584 
DB
 * 
dbp
;

2585 
DB_TXN
 * 
tx
;

2586 
u_t32_t
 * 
coup
;

2587 
u_t32_t
 
ags
;

2589 
CLIENT
 *

;

2590 
__db_un_msg
 
msg
;

2591 
__db_un_y
 *
yp
 = 
NULL
;

2592 
t
;

2593 
DB_ENV
 *
dbv
;

2595 
t
 = 0;

2596 
dbv
 = 
dbp
->dbenv;

2597 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2598  (
	`__db_norv
(
NULL
));

2600 

 = (
CLIENT
 *)
dbv
->
_hd
;

2602 i(
dbp
 =
NULL
)

2603 
msg
.
dbp_id
 = 0;

2605 
msg
.
dbp_id
 = 
dbp
->
_id
;

2606 i(
tx
 =
NULL
)

2607 
msg
.
tx_id
 = 0;

2609 
msg
.
tx_id
 = 
tx
->
txnid
;

2610 
msg
.
ags
 = (
u_t
)flags;

2612 
yp
 = 
	`__db_db_un_4006
(&
msg
, 

);

2613 i(
yp
 =
NULL
) {

2614 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2615 
t
 = 
DB_NOSERVER
;

2616 
out
;

2618 
t
 = 
	`__db_db_un_t
(
dbp
, 
tx
, 
coup
, 
ags
, 
yp
);

2619 
out
:

2620 i(
yp
 !
NULL
)

2621 
	`xdr_
((
xdroc_t
)
xdr___db_un_y
, (*)
yp
);

2622  (
t
);

2623 
	}
}

2629 
	$__db_dbc_o
(
dbc
)

2630 
DBC
 * 
dbc
;

2632 
CLIENT
 *

;

2633 
__dbc_o_msg
 
msg
;

2634 
__dbc_o_y
 *
yp
 = 
NULL
;

2635 
t
;

2636 
DB_ENV
 *
dbv
;

2638 
t
 = 0;

2639 
dbv
 = 
dbc
->
dbp
->dbenv;

2640 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2641  (
	`__db_norv
(
NULL
));

2643 

 = (
CLIENT
 *)
dbv
->
_hd
;

2645 i(
dbc
 =
NULL
)

2646 
msg
.
dbc_id
 = 0;

2648 
msg
.
dbc_id
 = 
dbc
->
_id
;

2650 
yp
 = 
	`__db_dbc_o_4006
(&
msg
, 

);

2651 i(
yp
 =
NULL
) {

2652 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2653 
t
 = 
DB_NOSERVER
;

2654 
out
;

2656 
t
 = 
	`__db_dbc_o_t
(
dbc
, 
yp
);

2657 
out
:

2658 i(
yp
 !
NULL
)

2659 
	`xdr_
((
xdroc_t
)
xdr___dbc_o_y
, (*)
yp
);

2660  (
t
);

2661 
	}
}

2667 
	$__db_dbc_cou
(
dbc
, 
coup
, 
ags
)

2668 
DBC
 * 
dbc
;

2669 
db_o_t
 * 
coup
;

2670 
u_t32_t
 
ags
;

2672 
CLIENT
 *

;

2673 
__dbc_cou_msg
 
msg
;

2674 
__dbc_cou_y
 *
yp
 = 
NULL
;

2675 
t
;

2676 
DB_ENV
 *
dbv
;

2678 
t
 = 0;

2679 
dbv
 = 
dbc
->
dbp
->dbenv;

2680 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2681  (
	`__db_norv
(
NULL
));

2683 

 = (
CLIENT
 *)
dbv
->
_hd
;

2685 i(
dbc
 =
NULL
)

2686 
msg
.
dbc_id
 = 0;

2688 
msg
.
dbc_id
 = 
dbc
->
_id
;

2689 
msg
.
ags
 = (
u_t
)flags;

2691 
yp
 = 
	`__db_dbc_cou_4006
(&
msg
, 

);

2692 i(
yp
 =
NULL
) {

2693 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2694 
t
 = 
DB_NOSERVER
;

2695 
out
;

2697 
t
 = 
	`__db_dbc_cou_t
(
dbc
, 
coup
, 
ags
, 
yp
);

2698 
out
:

2699 i(
yp
 !
NULL
)

2700 
	`xdr_
((
xdroc_t
)
xdr___dbc_cou_y
, (*)
yp
);

2701  (
t
);

2702 
	}
}

2708 
	$__db_dbc_d
(
dbc
, 
ags
)

2709 
DBC
 * 
dbc
;

2710 
u_t32_t
 
ags
;

2712 
CLIENT
 *

;

2713 
__dbc_d_msg
 
msg
;

2714 
__dbc_d_y
 *
yp
 = 
NULL
;

2715 
t
;

2716 
DB_ENV
 *
dbv
;

2718 
t
 = 0;

2719 
dbv
 = 
dbc
->
dbp
->dbenv;

2720 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2721  (
	`__db_norv
(
NULL
));

2723 

 = (
CLIENT
 *)
dbv
->
_hd
;

2725 i(
dbc
 =
NULL
)

2726 
msg
.
dbc_id
 = 0;

2728 
msg
.
dbc_id
 = 
dbc
->
_id
;

2729 
msg
.
ags
 = (
u_t
)flags;

2731 
yp
 = 
	`__db_dbc_d_4006
(&
msg
, 

);

2732 i(
yp
 =
NULL
) {

2733 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2734 
t
 = 
DB_NOSERVER
;

2735 
out
;

2737 
t
 = 
yp
->
us
;

2738 
out
:

2739 i(
yp
 !
NULL
)

2740 
	`xdr_
((
xdroc_t
)
xdr___dbc_d_y
, (*)
yp
);

2741  (
t
);

2742 
	}
}

2748 
	$__db_dbc_dup
(
dbc
, 
db
, 
ags
)

2749 
DBC
 * 
dbc
;

2750 
DBC
 ** 
db
;

2751 
u_t32_t
 
ags
;

2753 
CLIENT
 *

;

2754 
__dbc_dup_msg
 
msg
;

2755 
__dbc_dup_y
 *
yp
 = 
NULL
;

2756 
t
;

2757 
DB_ENV
 *
dbv
;

2759 
t
 = 0;

2760 
dbv
 = 
dbc
->
dbp
->dbenv;

2761 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2762  (
	`__db_norv
(
NULL
));

2764 

 = (
CLIENT
 *)
dbv
->
_hd
;

2766 i(
dbc
 =
NULL
)

2767 
msg
.
dbc_id
 = 0;

2769 
msg
.
dbc_id
 = 
dbc
->
_id
;

2770 
msg
.
ags
 = (
u_t
)flags;

2772 
yp
 = 
	`__db_dbc_dup_4006
(&
msg
, 

);

2773 i(
yp
 =
NULL
) {

2774 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2775 
t
 = 
DB_NOSERVER
;

2776 
out
;

2778 
t
 = 
	`__db_dbc_dup_t
(
dbc
, 
db
, 
ags
, 
yp
);

2779 
out
:

2780 i(
yp
 !
NULL
)

2781 
	`xdr_
((
xdroc_t
)
xdr___dbc_dup_y
, (*)
yp
);

2782  (
t
);

2783 
	}
}

2789 
	$__db_dbc_g
(
dbc
, 
key
, 
da
, 
ags
)

2790 
DBC
 * 
dbc
;

2791 
DBT
 * 
key
;

2792 
DBT
 * 
da
;

2793 
u_t32_t
 
ags
;

2795 
CLIENT
 *

;

2796 
__dbc_g_msg
 
msg
;

2797 
__dbc_g_y
 *
yp
 = 
NULL
;

2798 
t
;

2799 
DB_ENV
 *
dbv
;

2801 
t
 = 0;

2802 
dbv
 = 
dbc
->
dbp
->dbenv;

2803 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2804  (
	`__db_norv
(
NULL
));

2806 

 = (
CLIENT
 *)
dbv
->
_hd
;

2808 i(
dbc
 =
NULL
)

2809 
msg
.
dbc_id
 = 0;

2811 
msg
.
dbc_id
 = 
dbc
->
_id
;

2812 
msg
.
keydn
 = 
key
->
dn
;

2813 
msg
.
keydoff
 = 
key
->
doff
;

2814 
msg
.
keyun
 = 
key
->
un
;

2815 
msg
.
keyags
 = 
key
->
ags
;

2816 
msg
.
keyda
.
keyda_v
 = 
key
->
da
;

2817 
msg
.
keyda
.
keyda_n
 = 
key
->
size
;

2818 
msg
.
dadn
 = 
da
->
dn
;

2819 
msg
.
dadoff
 = 
da
->
doff
;

2820 
msg
.
daun
 = 
da
->
un
;

2821 
msg
.
daags
 = 
da
->
ags
;

2822 
msg
.
dada
.
dada_v
 = 
da
->data;

2823 
msg
.
dada
.
dada_n
 = 
da
->
size
;

2824 
msg
.
ags
 = (
u_t
)flags;

2826 
yp
 = 
	`__db_dbc_g_4006
(&
msg
, 

);

2827 i(
yp
 =
NULL
) {

2828 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2829 
t
 = 
DB_NOSERVER
;

2830 
out
;

2832 
t
 = 
	`__db_dbc_g_t
(
dbc
, 
key
, 
da
, 
ags
, 
yp
);

2833 
out
:

2834 i(
yp
 !
NULL
)

2835 
	`xdr_
((
xdroc_t
)
xdr___dbc_g_y
, (*)
yp
);

2836  (
t
);

2837 
	}
}

2843 
	$__db_dbc_g_iܙy
(
dbc
, 
iܙyp
)

2844 
DBC
 * 
dbc
;

2845 
DB_CACHE_PRIORITY
 * 
iܙyp
;

2847 
CLIENT
 *

;

2848 
__dbc_g_iܙy_msg
 
msg
;

2849 
__dbc_g_iܙy_y
 *
yp
 = 
NULL
;

2850 
t
;

2851 
DB_ENV
 *
dbv
;

2853 
t
 = 0;

2854 
dbv
 = 
dbc
->
dbp
->dbenv;

2855 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2856  (
	`__db_norv
(
NULL
));

2858 

 = (
CLIENT
 *)
dbv
->
_hd
;

2860 i(
dbc
 =
NULL
)

2861 
msg
.
dbc_id
 = 0;

2863 
msg
.
dbc_id
 = 
dbc
->
_id
;

2865 
yp
 = 
	`__db_dbc_g_iܙy_4006
(&
msg
, 

);

2866 i(
yp
 =
NULL
) {

2867 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2868 
t
 = 
DB_NOSERVER
;

2869 
out
;

2871 
t
 = 
yp
->
us
;

2872 i(
iܙyp
 !
NULL
)

2873 *
iܙyp
 = (
DB_CACHE_PRIORITY
)
yp
->
iܙy
;

2874 
out
:

2875 i(
yp
 !
NULL
)

2876 
	`xdr_
((
xdroc_t
)
xdr___dbc_g_iܙy_y
, (*)
yp
);

2877  (
t
);

2878 
	}
}

2884 
	$__db_dbc_pg
(
dbc
, 
skey
, 
pkey
, 
da
, 
ags
)

2885 
DBC
 * 
dbc
;

2886 
DBT
 * 
skey
;

2887 
DBT
 * 
pkey
;

2888 
DBT
 * 
da
;

2889 
u_t32_t
 
ags
;

2891 
CLIENT
 *

;

2892 
__dbc_pg_msg
 
msg
;

2893 
__dbc_pg_y
 *
yp
 = 
NULL
;

2894 
t
;

2895 
DB_ENV
 *
dbv
;

2897 
t
 = 0;

2898 
dbv
 = 
dbc
->
dbp
->dbenv;

2899 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2900  (
	`__db_norv
(
NULL
));

2902 

 = (
CLIENT
 *)
dbv
->
_hd
;

2904 i(
dbc
 =
NULL
)

2905 
msg
.
dbc_id
 = 0;

2907 
msg
.
dbc_id
 = 
dbc
->
_id
;

2908 
msg
.
skeydn
 = 
skey
->
dn
;

2909 
msg
.
skeydoff
 = 
skey
->
doff
;

2910 
msg
.
skeyun
 = 
skey
->
un
;

2911 
msg
.
skeyags
 = 
skey
->
ags
;

2912 
msg
.
skeyda
.
skeyda_v
 = 
skey
->
da
;

2913 
msg
.
skeyda
.
skeyda_n
 = 
skey
->
size
;

2914 
msg
.
pkeydn
 = 
pkey
->
dn
;

2915 
msg
.
pkeydoff
 = 
pkey
->
doff
;

2916 
msg
.
pkeyun
 = 
pkey
->
un
;

2917 
msg
.
pkeyags
 = 
pkey
->
ags
;

2918 
msg
.
pkeyda
.
pkeyda_v
 = 
pkey
->
da
;

2919 
msg
.
pkeyda
.
pkeyda_n
 = 
pkey
->
size
;

2920 
msg
.
dadn
 = 
da
->
dn
;

2921 
msg
.
dadoff
 = 
da
->
doff
;

2922 
msg
.
daun
 = 
da
->
un
;

2923 
msg
.
daags
 = 
da
->
ags
;

2924 
msg
.
dada
.
dada_v
 = 
da
->data;

2925 
msg
.
dada
.
dada_n
 = 
da
->
size
;

2926 
msg
.
ags
 = (
u_t
)flags;

2928 
yp
 = 
	`__db_dbc_pg_4006
(&
msg
, 

);

2929 i(
yp
 =
NULL
) {

2930 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2931 
t
 = 
DB_NOSERVER
;

2932 
out
;

2934 
t
 = 
	`__db_dbc_pg_t
(
dbc
, 
skey
, 
pkey
, 
da
, 
ags
, 
yp
);

2935 
out
:

2936 i(
yp
 !
NULL
)

2937 
	`xdr_
((
xdroc_t
)
xdr___dbc_pg_y
, (*)
yp
);

2938  (
t
);

2939 
	}
}

2945 
	$__db_dbc_put
(
dbc
, 
key
, 
da
, 
ags
)

2946 
DBC
 * 
dbc
;

2947 
DBT
 * 
key
;

2948 
DBT
 * 
da
;

2949 
u_t32_t
 
ags
;

2951 
CLIENT
 *

;

2952 
__dbc_put_msg
 
msg
;

2953 
__dbc_put_y
 *
yp
 = 
NULL
;

2954 
t
;

2955 
DB_ENV
 *
dbv
;

2957 
t
 = 0;

2958 
dbv
 = 
dbc
->
dbp
->dbenv;

2959 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

2960  (
	`__db_norv
(
NULL
));

2962 

 = (
CLIENT
 *)
dbv
->
_hd
;

2964 i(
dbc
 =
NULL
)

2965 
msg
.
dbc_id
 = 0;

2967 
msg
.
dbc_id
 = 
dbc
->
_id
;

2968 
msg
.
keydn
 = 
key
->
dn
;

2969 
msg
.
keydoff
 = 
key
->
doff
;

2970 
msg
.
keyun
 = 
key
->
un
;

2971 
msg
.
keyags
 = 
key
->
ags
;

2972 
msg
.
keyda
.
keyda_v
 = 
key
->
da
;

2973 
msg
.
keyda
.
keyda_n
 = 
key
->
size
;

2974 
msg
.
dadn
 = 
da
->
dn
;

2975 
msg
.
dadoff
 = 
da
->
doff
;

2976 
msg
.
daun
 = 
da
->
un
;

2977 
msg
.
daags
 = 
da
->
ags
;

2978 
msg
.
dada
.
dada_v
 = 
da
->data;

2979 
msg
.
dada
.
dada_n
 = 
da
->
size
;

2980 
msg
.
ags
 = (
u_t
)flags;

2982 
yp
 = 
	`__db_dbc_put_4006
(&
msg
, 

);

2983 i(
yp
 =
NULL
) {

2984 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

2985 
t
 = 
DB_NOSERVER
;

2986 
out
;

2988 
t
 = 
	`__db_dbc_put_t
(
dbc
, 
key
, 
da
, 
ags
, 
yp
);

2989 
out
:

2990 i(
yp
 !
NULL
)

2991 
	`xdr_
((
xdroc_t
)
xdr___dbc_put_y
, (*)
yp
);

2992  (
t
);

2993 
	}
}

2999 
	$__db_dbc_t_iܙy
(
dbc
, 
iܙy
)

3000 
DBC
 * 
dbc
;

3001 
DB_CACHE_PRIORITY
 
iܙy
;

3003 
CLIENT
 *

;

3004 
__dbc_t_iܙy_msg
 
msg
;

3005 
__dbc_t_iܙy_y
 *
yp
 = 
NULL
;

3006 
t
;

3007 
DB_ENV
 *
dbv
;

3009 
t
 = 0;

3010 
dbv
 = 
dbc
->
dbp
->dbenv;

3011 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

3012  (
	`__db_norv
(
NULL
));

3014 

 = (
CLIENT
 *)
dbv
->
_hd
;

3016 i(
dbc
 =
NULL
)

3017 
msg
.
dbc_id
 = 0;

3019 
msg
.
dbc_id
 = 
dbc
->
_id
;

3020 
msg
.
iܙy
 = (
u_t
)priority;

3022 
yp
 = 
	`__db_dbc_t_iܙy_4006
(&
msg
, 

);

3023 i(
yp
 =
NULL
) {

3024 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

3025 
t
 = 
DB_NOSERVER
;

3026 
out
;

3028 
t
 = 
yp
->
us
;

3029 
out
:

3030 i(
yp
 !
NULL
)

3031 
	`xdr_
((
xdroc_t
)
xdr___dbc_t_iܙy_y
, (*)
yp
);

3032  (
t
);

3033 
	}
}

3039 
	$__db_txn_abt
(
tx
)

3040 
DB_TXN
 * 
tx
;

3042 
CLIENT
 *

;

3043 
__txn_abt_msg
 
msg
;

3044 
__txn_abt_y
 *
yp
 = 
NULL
;

3045 
t
;

3046 
DB_ENV
 *
dbv
;

3048 
t
 = 0;

3049 
dbv
 = 
tx
->
mg
->dbenv;

3050 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

3051  (
	`__db_norv
(
NULL
));

3053 

 = (
CLIENT
 *)
dbv
->
_hd
;

3055 i(
tx
 =
NULL
)

3056 
msg
.
tx_id
 = 0;

3058 
msg
.
tx_id
 = 
tx
->
txnid
;

3060 
yp
 = 
	`__db_txn_abt_4006
(&
msg
, 

);

3061 i(
yp
 =
NULL
) {

3062 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

3063 
t
 = 
DB_NOSERVER
;

3064 
out
;

3066 
t
 = 
	`__db_txn_abt_t
(
tx
, 
yp
);

3067 
out
:

3068 i(
yp
 !
NULL
)

3069 
	`xdr_
((
xdroc_t
)
xdr___txn_abt_y
, (*)
yp
);

3070  (
t
);

3071 
	}
}

3077 
	$__db_txn_comm
(
tx
, 
ags
)

3078 
DB_TXN
 * 
tx
;

3079 
u_t32_t
 
ags
;

3081 
CLIENT
 *

;

3082 
__txn_comm_msg
 
msg
;

3083 
__txn_comm_y
 *
yp
 = 
NULL
;

3084 
t
;

3085 
DB_ENV
 *
dbv
;

3087 
t
 = 0;

3088 
dbv
 = 
tx
->
mg
->dbenv;

3089 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

3090  (
	`__db_norv
(
NULL
));

3092 

 = (
CLIENT
 *)
dbv
->
_hd
;

3094 i(
tx
 =
NULL
)

3095 
msg
.
tx_id
 = 0;

3097 
msg
.
tx_id
 = 
tx
->
txnid
;

3098 
msg
.
ags
 = (
u_t
)flags;

3100 
yp
 = 
	`__db_txn_comm_4006
(&
msg
, 

);

3101 i(
yp
 =
NULL
) {

3102 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

3103 
t
 = 
DB_NOSERVER
;

3104 
out
;

3106 
t
 = 
	`__db_txn_comm_t
(
tx
, 
ags
, 
yp
);

3107 
out
:

3108 i(
yp
 !
NULL
)

3109 
	`xdr_
((
xdroc_t
)
xdr___txn_comm_y
, (*)
yp
);

3110  (
t
);

3111 
	}
}

3117 
	$__db_txn_disrd
(
tx
, 
ags
)

3118 
DB_TXN
 * 
tx
;

3119 
u_t32_t
 
ags
;

3121 
CLIENT
 *

;

3122 
__txn_disrd_msg
 
msg
;

3123 
__txn_disrd_y
 *
yp
 = 
NULL
;

3124 
t
;

3125 
DB_ENV
 *
dbv
;

3127 
t
 = 0;

3128 
dbv
 = 
tx
->
mg
->dbenv;

3129 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

3130  (
	`__db_norv
(
NULL
));

3132 

 = (
CLIENT
 *)
dbv
->
_hd
;

3134 i(
tx
 =
NULL
)

3135 
msg
.
tx_id
 = 0;

3137 
msg
.
tx_id
 = 
tx
->
txnid
;

3138 
msg
.
ags
 = (
u_t
)flags;

3140 
yp
 = 
	`__db_txn_disrd_4006
(&
msg
, 

);

3141 i(
yp
 =
NULL
) {

3142 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

3143 
t
 = 
DB_NOSERVER
;

3144 
out
;

3146 
t
 = 
	`__db_txn_disrd_t
(
tx
, 
ags
, 
yp
);

3147 
out
:

3148 i(
yp
 !
NULL
)

3149 
	`xdr_
((
xdroc_t
)
xdr___txn_disrd_y
, (*)
yp
);

3150  (
t
);

3151 
	}
}

3157 
	$__db_txn_e
(
tx
, 
gid
)

3158 
DB_TXN
 * 
tx
;

3159 
u_t8_t
 * 
gid
;

3161 
CLIENT
 *

;

3162 
__txn_e_msg
 
msg
;

3163 
__txn_e_y
 *
yp
 = 
NULL
;

3164 
t
;

3165 
DB_ENV
 *
dbv
;

3167 
t
 = 0;

3168 
dbv
 = 
tx
->
mg
->dbenv;

3169 i(
dbv
 =
NULL
 || !
	`RPC_ON
(dbenv))

3170  (
	`__db_norv
(
NULL
));

3172 

 = (
CLIENT
 *)
dbv
->
_hd
;

3174 i(
tx
 =
NULL
)

3175 
msg
.
tx_id
 = 0;

3177 
msg
.
tx_id
 = 
tx
->
txnid
;

3178 
	`memy
(
msg
.
gid
, gid, 128);

3180 
yp
 = 
	`__db_txn_e_4006
(&
msg
, 

);

3181 i(
yp
 =
NULL
) {

3182 
	`__db_rx
(
dbv
, 
	`_r
(

, "Berkeley DB"));

3183 
t
 = 
DB_NOSERVER
;

3184 
out
;

3186 
t
 = 
yp
->
us
;

3187 
out
:

3188 i(
yp
 !
NULL
)

3189 
	`xdr_
((
xdroc_t
)
xdr___txn_e_y
, (*)
yp
);

3190  (
t
);

3191 
	}
}

3200 
	$__db_dbp_
(
dbp
)

3201 
DB
 *
dbp
;

3203 
dbp
->
assoc
 = 
__db_db_assoc
;

3204 
dbp
->
o
 = 
__db_db_o
;

3205 
dbp
->
com
 =

3206 ((*)(
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
DB_COMPACT
 *, 
u_t32_t
, DBT *))

3207 
__db_dbp_g
;

3208 
dbp
->
curs
 = 
__db_db_curs
;

3209 
dbp
->
d
 = 
__db_db_d
;

3210 
dbp
->
fd
 =

3211 ((*)(
DB
 *, *))

3212 
__db_dbp_g
;

3213 
dbp
->
g
 = 
__db_db_g
;

3214 
dbp
->
g_bt_mkey
 = 
__db_db_g_bt_mkey
;

3215 
dbp
->
g_chesize
 =

3216 ((*)(
DB
 *, 
u_t32_t
 *, u_int32_t *, *))

3217 
__db_dbp_g
;

3218 
dbp
->
g_dbme
 = 
__db_db_g_dbme
;

3219 
dbp
->
g_y_ags
 = 
__db_db_g_y_ags
;

3220 
dbp
->
g_ags
 = 
__db_db_g_ags
;

3221 
dbp
->
g_h_f
 = 
__db_db_g_h_f
;

3222 
dbp
->
g_h_m
 = 
__db_db_g_h_m
;

3223 
dbp
->
g_ld
 = 
__db_db_g_ld
;

3224 
dbp
->
g_mpf
 =

3225 (
DB_MPOOLFILE
 * (*)(
DB
 *))

3226 
__db_dbp_g
;

3227 
dbp
->
g_ݒ_ags
 = 
__db_db_g_ݒ_ags
;

3228 
dbp
->
g_gesize
 = 
__db_db_g_gesize
;

3229 
dbp
->
g_iܙy
 = 
__db_db_g_iܙy
;

3230 
dbp
->
g_q_exsize
 = 
__db_db_g_q_exsize
;

3231 
dbp
->
g__dim
 = 
__db_db_g__dim
;

3232 
dbp
->
g__n
 = 
__db_db_g__n
;

3233 
dbp
->
g__d
 = 
__db_db_g__d
;

3234 
dbp
->
g__sour
 =

3235 ((*)(
DB
 *, const **))

3236 
__db_dbp_g
;

3237 
dbp
->
jo
 = 
__db_db_jo
;

3238 
dbp
->
key_nge
 = 
__db_db_key_nge
;

3239 
dbp
->
ݒ
 = 
__db_db_ݒ
;

3240 
dbp
->
pg
 = 
__db_db_pg
;

3241 
dbp
->
put
 = 
__db_db_put
;

3242 
dbp
->
move
 = 
__db_db_move
;

3243 
dbp
->
me
 = 
__db_db_me
;

3244 
dbp
->
t_loc
 =

3245 ((*)(
DB
 *, *(*)(
size_t
), *(*)(*, size_t), (*)(*)))

3246 
__db_dbp_g
;

3247 
dbp
->
t_nd_o
 =

3248 ((*)(
DB
 *, (*)(DB *, 
DBT
 *, 
db_o_t
)))

3249 
__db_dbp_g
;

3250 
dbp
->
t_bt_com
 =

3251 ((*)(
DB
 *, (*)(DB *, cڡ 
DBT
 *, const DBT *)))

3252 
__db_dbp_g
;

3253 
dbp
->
t_bt_mkey
 = 
__db_db_t_bt_mkey
;

3254 
dbp
->
t_bt_efix
 =

3255 ((*)(
DB
 *, 
	`size_t
(*)(DB *, cڡ 
DBT
 *, const DBT *)))

3256 
__db_dbp_g
;

3257 
dbp
->
t_chesize
 =

3258 ((*)(
DB
 *, 
u_t32_t
, u_int32_t, ))

3259 
__db_dbp_g
;

3260 
dbp
->
t_dup_com
 =

3261 ((*)(
DB
 *, (*)(DB *, cڡ 
DBT
 *, const DBT *)))

3262 
__db_dbp_g
;

3263 
dbp
->
t_y
 = 
__db_db_t_y
;

3264 
dbp
->
t_edback
 =

3265 ((*)(
DB
 *, (*)(DB *, , )))

3266 
__db_dbp_g
;

3267 
dbp
->
t_ags
 = 
__db_db_t_ags
;

3268 
dbp
->
t_h_com
 =

3269 ((*)(
DB
 *, (*)(DB *, cڡ 
DBT
 *, const DBT *)))

3270 
__db_dbp_g
;

3271 
dbp
->
t_h_f
 = 
__db_db_t_h_f
;

3272 
dbp
->
t_h_hash
 =

3273 ((*)(
DB
 *, 
	`u_t32_t
(*)(DB *, cڡ *, 
u_t32_t
)))

3274 
__db_dbp_g
;

3275 
dbp
->
t_h_m
 = 
__db_db_t_h_m
;

3276 
dbp
->
t_ld
 = 
__db_db_t_ld
;

3277 
dbp
->
t_gesize
 = 
__db_db_t_gesize
;

3278 
dbp
->
t_nic
 =

3279 ((*)(
DB
 *, (*)(
DB_ENV
 *, )))

3280 
__db_dbp_g
;

3281 
dbp
->
t_iܙy
 = 
__db_db_t_iܙy
;

3282 
dbp
->
t_q_exsize
 = 
__db_db_t_q_exsize
;

3283 
dbp
->
t__dim
 = 
__db_db_t__dim
;

3284 
dbp
->
t__n
 = 
__db_db_t__n
;

3285 
dbp
->
t__d
 = 
__db_db_t__d
;

3286 
dbp
->
t__sour
 =

3287 ((*)(
DB
 *, const *))

3288 
__db_dbp_g
;

3289 
dbp
->

 = 
__db_db_
;

3290 
dbp
->
_t
 =

3291 ((*)(
DB
 *, 
u_t32_t
))

3292 
__db_dbp_g
;

3293 
dbp
->
sync
 = 
__db_db_sync
;

3294 
dbp
->
un
 = 
__db_db_un
;

3295 
dbp
->
upgde
 =

3296 ((*)(
DB
 *, cڡ *, 
u_t32_t
))

3297 
__db_dbp_g
;

3298 
dbp
->
vify
 =

3299 ((*)(
DB
 *, cڡ *, cڡ *, 
FILE
 *, 
u_t32_t
))

3300 
__db_dbp_g
;

3302 
	}
}

3311 
	$__db_dbc_
(
dbc
)

3312 
DBC
 *
dbc
;

3314 
dbc
->
o
 = dbc->
c_o
 = 
__db_dbc_o
;

3315 
dbc
->
cou
 = dbc->
c_cou
 = 
__db_dbc_cou
;

3316 
dbc
->
d
 = dbc->
c_d
 = 
__db_dbc_d
;

3317 
dbc
->
dup
 = dbc->
c_dup
 = 
__db_dbc_dup
;

3318 
dbc
->
g
 = dbc->
c_g
 = 
__db_dbc_g
;

3319 
dbc
->
g_iܙy
 = 
__db_dbc_g_iܙy
;

3320 
dbc
->
pg
 = dbc->
c_pg
 = 
__db_dbc_pg
;

3321 
dbc
->
put
 = dbc->
c_put
 = 
__db_dbc_put
;

3322 
dbc
->
t_iܙy
 = 
__db_dbc_t_iܙy
;

3324 
	}
}

3333 
	$__db_dbv_
(
dbv
)

3334 
DB_ENV
 *
dbv
;

3336 
dbv
->
cdsgroup_beg
 = 
__db_v_cdsgroup_beg
;

3337 
dbv
->
o
 = 
__db_v_o
;

3338 
dbv
->
dbmove
 = 
__db_v_dbmove
;

3339 
dbv
->
dbme
 = 
__db_v_dbme
;

3340 
dbv
->
chk
 =

3341 ((*)(
DB_ENV
 *, 
u_t32_t
))

3342 
__db_dbv_g
;

3343 
dbv
->
feid_t
 =

3344 ((*)(
DB_ENV
 *, cڡ *, 
u_t32_t
))

3345 
__db_dbv_g
;

3346 
dbv
->
g_chesize
 = 
__db_v_g_chesize
;

3347 
dbv
->
g_che_max
 =

3348 ((*)(
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *))

3349 
__db_dbv_g
;

3350 
dbv
->
g_da_ds
 =

3351 ((*)(
DB_ENV
 *, const ***))

3352 
__db_dbv_g
;

3353 
dbv
->
g_y_ags
 = 
__db_v_g_y_ags
;

3354 
dbv
->
g_ags
 = 
__db_v_g_ags
;

3355 
dbv
->
g_home
 = 
__db_v_g_home
;

3356 
dbv
->
g_lg_bsize
 =

3357 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3358 
__db_dbv_g
;

3359 
dbv
->
g_lg_d
 =

3360 ((*)(
DB_ENV
 *, const **))

3361 
__db_dbv_g
;

3362 
dbv
->
g_lg_femode
 =

3363 ((*)(
DB_ENV
 *, *))

3364 
__db_dbv_g
;

3365 
dbv
->
g_lg_max
 =

3366 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3367 
__db_dbv_g
;

3368 
dbv
->
g_lg_gimax
 =

3369 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3370 
__db_dbv_g
;

3371 
dbv
->
g_lk_cis
 =

3372 ((*)(
DB_ENV
 *, cڡ 
u_t8_t
 **, *))

3373 
__db_dbv_g
;

3374 
dbv
->
g_lk_de
 =

3375 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3376 
__db_dbv_g
;

3377 
dbv
->
g_lk_max_locks
 =

3378 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3379 
__db_dbv_g
;

3380 
dbv
->
g_lk_max_locks
 =

3381 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3382 
__db_dbv_g
;

3383 
dbv
->
g_lk_max_objes
 =

3384 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3385 
__db_dbv_g
;

3386 
dbv
->
g_mp_max_ݒfd
 =

3387 ((*)(
DB_ENV
 *, *))

3388 
__db_dbv_g
;

3389 
dbv
->
g_mp_max_wre
 =

3390 ((*)(
DB_ENV
 *, *, 
db_timeout_t
 *))

3391 
__db_dbv_g
;

3392 
dbv
->
g_mp_mmsize
 =

3393 ((*)(
DB_ENV
 *, 
size_t
 *))

3394 
__db_dbv_g
;

3395 
dbv
->
g_ݒ_ags
 = 
__db_v_g_ݒ_ags
;

3396 
dbv
->
g_shm_key
 =

3397 ((*)(
DB_ENV
 *, *))

3398 
__db_dbv_g
;

3399 
dbv
->
g_thad_cou
 =

3400 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3401 
__db_dbv_g
;

3402 
dbv
->
g_timeout
 =

3403 ((*)(
DB_ENV
 *, 
db_timeout_t
 *, 
u_t32_t
))

3404 
__db_dbv_g
;

3405 
dbv
->
g_tmp_d
 =

3406 ((*)(
DB_ENV
 *, const **))

3407 
__db_dbv_g
;

3408 
dbv
->
g_tx_max
 =

3409 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3410 
__db_dbv_g
;

3411 
dbv
->
g_tx_timeamp
 =

3412 ((*)(
DB_ENV
 *, 
time_t
 *))

3413 
__db_dbv_g
;

3414 
dbv
->
g_vbo
 =

3415 ((*)(
DB_ENV
 *, 
u_t32_t
, *))

3416 
__db_dbv_g
;

3417 
dbv
->
lock_de
 =

3418 ((*)(
DB_ENV
 *, 
u_t32_t
, u_int32_t, *))

3419 
__db_dbv_g
;

3420 
dbv
->
lock_g
 =

3421 ((*)(
DB_ENV
 *, 
u_t32_t
, u_t32_t, cڡ 
DBT
 *, 
db_lockmode_t
, 
DB_LOCK
 *))

3422 
__db_dbv_g
;

3423 
dbv
->
lock_id
 =

3424 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3425 
__db_dbv_g
;

3426 
dbv
->
lock_id_
 =

3427 ((*)(
DB_ENV
 *, 
u_t32_t
))

3428 
__db_dbv_g
;

3429 
dbv
->
lock_put
 =

3430 ((*)(
DB_ENV
 *, 
DB_LOCK
 *))

3431 
__db_dbv_g
;

3432 
dbv
->
lock_
 =

3433 ((*)(
DB_ENV
 *, 
DB_LOCK_STAT
 **, 
u_t32_t
))

3434 
__db_dbv_g
;

3435 
dbv
->
lock__t
 =

3436 ((*)(
DB_ENV
 *, 
u_t32_t
))

3437 
__db_dbv_g
;

3438 
dbv
->
lock_vec
 =

3439 ((*)(
DB_ENV
 *, 
u_t32_t
, u_t32_t, 
DB_LOCKREQ
 *, , DB_LOCKREQ **))

3440 
__db_dbv_g
;

3441 
dbv
->
log_chive
 =

3442 ((*)(
DB_ENV
 *, ***, 
u_t32_t
))

3443 
__db_dbv_g
;

3444 
dbv
->
log_curs
 =

3445 ((*)(
DB_ENV
 *, 
DB_LOGC
 **, 
u_t32_t
))

3446 
__db_dbv_g
;

3447 
dbv
->
log_fe
 =

3448 ((*)(
DB_ENV
 *, cڡ 
DB_LSN
 *, *, 
size_t
))

3449 
__db_dbv_g
;

3450 
dbv
->
log_ush
 =

3451 ((*)(
DB_ENV
 *, cڡ 
DB_LSN
 *))

3452 
__db_dbv_g
;

3453 
dbv
->
log_tf
 =

3454 ((*)(
DB_ENV
 *, 
DB_TXN
 *, const *, ...))

3455 
__db_dbv_g
;

3456 
dbv
->
log_put
 =

3457 ((*)(
DB_ENV
 *, 
DB_LSN
 *, cڡ 
DBT
 *, 
u_t32_t
))

3458 
__db_dbv_g
;

3459 
dbv
->
log_
 =

3460 ((*)(
DB_ENV
 *, 
DB_LOG_STAT
 **, 
u_t32_t
))

3461 
__db_dbv_g
;

3462 
dbv
->
log__t
 =

3463 ((*)(
DB_ENV
 *, 
u_t32_t
))

3464 
__db_dbv_g
;

3465 
dbv
->
l_t
 =

3466 ((*)(
DB_ENV
 *, cڡ *, 
u_t32_t
))

3467 
__db_dbv_g
;

3468 
dbv
->
memp_f
 =

3469 ((*)(
DB_ENV
 *, 
DB_MPOOLFILE
 **, 
u_t32_t
))

3470 
__db_dbv_g
;

3471 
dbv
->
memp_gi
 =

3472 ((*)(
DB_ENV
 *, , (*)(DB_ENV *, 
db_pgno_t
, *, 
DBT
 *), (*)(DB_ENV *, db_pgno_t, *, DBT *)))

3473 
__db_dbv_g
;

3474 
dbv
->
memp_
 =

3475 ((*)(
DB_ENV
 *, 
DB_MPOOL_STAT
 **, 
DB_MPOOL_FSTAT
 ***, 
u_t32_t
))

3476 
__db_dbv_g
;

3477 
dbv
->
memp__t
 =

3478 ((*)(
DB_ENV
 *, 
u_t32_t
))

3479 
__db_dbv_g
;

3480 
dbv
->
memp_sync
 =

3481 ((*)(
DB_ENV
 *, 
DB_LSN
 *))

3482 
__db_dbv_g
;

3483 
dbv
->
memp_ick
 =

3484 ((*)(
DB_ENV
 *, , *))

3485 
__db_dbv_g
;

3486 
dbv
->
mux_loc
 =

3487 ((*)(
DB_ENV
 *, 
u_t32_t
, u_int32_t *))

3488 
__db_dbv_g
;

3489 
dbv
->
mux_
 =

3490 ((*)(
DB_ENV
 *, 
u_t32_t
))

3491 
__db_dbv_g
;

3492 
dbv
->
mux_g_ign
 =

3493 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3494 
__db_dbv_g
;

3495 
dbv
->
mux_g_emt
 =

3496 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3497 
__db_dbv_g
;

3498 
dbv
->
mux_g_max
 =

3499 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3500 
__db_dbv_g
;

3501 
dbv
->
mux_g_s_s
 =

3502 ((*)(
DB_ENV
 *, 
u_t32_t
 *))

3503 
__db_dbv_g
;

3504 
dbv
->
mux_lock
 =

3505 ((*)(
DB_ENV
 *, 
u_t32_t
))

3506 
__db_dbv_g
;

3507 
dbv
->
mux_t_ign
 =

3508 ((*)(
DB_ENV
 *, 
u_t32_t
))

3509 
__db_dbv_g
;

3510 
dbv
->
mux_t_emt
 =

3511 ((*)(
DB_ENV
 *, 
u_t32_t
))

3512 
__db_dbv_g
;

3513 
dbv
->
mux_t_max
 =

3514 ((*)(
DB_ENV
 *, 
u_t32_t
))

3515 
__db_dbv_g
;

3516 
dbv
->
mux_t_s_s
 =

3517 ((*)(
DB_ENV
 *, 
u_t32_t
))

3518 
__db_dbv_g
;

3519 
dbv
->
mux_
 =

3520 ((*)(
DB_ENV
 *, 
DB_MUTEX_STAT
 **, 
u_t32_t
))

3521 
__db_dbv_g
;

3522 
dbv
->
mux__t
 =

3523 ((*)(
DB_ENV
 *, 
u_t32_t
))

3524 
__db_dbv_g
;

3525 
dbv
->
mux_uock
 =

3526 ((*)(
DB_ENV
 *, 
u_t32_t
))

3527 
__db_dbv_g
;

3528 
dbv
->
ݒ
 = 
__db_v_ݒ
;

3529 
dbv
->
move
 = 
__db_v_move
;

3530 
dbv
->
p_e
 =

3531 ((*)(
DB_ENV
 *, , , 
u_t32_t
))

3532 
__db_dbv_g
;

3533 
dbv
->
p_ush
 =

3534 ((*)(
DB_ENV
 *))

3535 
__db_dbv_g
;

3536 
dbv
->
p_g_cfig
 =

3537 ((*)(
DB_ENV
 *, 
u_t32_t
, *))

3538 
__db_dbv_g
;

3539 
dbv
->
p_g_lim
 =

3540 ((*)(
DB_ENV
 *, 
u_t32_t
 *, u_int32_t *))

3541 
__db_dbv_g
;

3542 
dbv
->
p_g_nses
 =

3543 ((*)(
DB_ENV
 *, *))

3544 
__db_dbv_g
;

3545 
dbv
->
p_g_iܙy
 =

3546 ((*)(
DB_ENV
 *, *))

3547 
__db_dbv_g
;

3548 
dbv
->
p_g_timeout
 =

3549 ((*)(
DB_ENV
 *, , 
db_timeout_t
 *))

3550 
__db_dbv_g
;

3551 
dbv
->
p_oss_mesge
 =

3552 ((*)(
DB_ENV
 *, 
DBT
 *, DBT *, , 
DB_LSN
 *))

3553 
__db_dbv_g
;

3554 
dbv
->
p_t_cfig
 =

3555 ((*)(
DB_ENV
 *, 
u_t32_t
, ))

3556 
__db_dbv_g
;

3557 
dbv
->
p_t_a
 =

3558 ((*)(
DB_ENV
 *, 
u_t32_t
, u_int32_t))

3559 
__db_dbv_g
;

3560 
dbv
->
p_t_lim
 =

3561 ((*)(
DB_ENV
 *, 
u_t32_t
, u_int32_t))

3562 
__db_dbv_g
;

3563 
dbv
->
p_t_nses
 =

3564 ((*)(
DB_ENV
 *, ))

3565 
__db_dbv_g
;

3566 
dbv
->
p_t_iܙy
 =

3567 ((*)(
DB_ENV
 *, ))

3568 
__db_dbv_g
;

3569 
dbv
->
p_t_timeout
 =

3570 ((*)(
DB_ENV
 *, , 
db_timeout_t
))

3571 
__db_dbv_g
;

3572 
dbv
->
p_t_t
 =

3573 ((*)(
DB_ENV
 *, , (*)(DB_ENV *, cڡ 
DBT
 *, cڡ DBT *, cڡ 
DB_LSN
 *, , 
u_t32_t
)))

3574 
__db_dbv_g
;

3575 
dbv
->
p_t
 =

3576 ((*)(
DB_ENV
 *, 
DBT
 *, 
u_t32_t
))

3577 
__db_dbv_g
;

3578 
dbv
->
p_
 =

3579 ((*)(
DB_ENV
 *, 
DB_REP_STAT
 **, 
u_t32_t
))

3580 
__db_dbv_g
;

3581 
dbv
->
p__t
 =

3582 ((*)(
DB_ENV
 *, 
u_t32_t
))

3583 
__db_dbv_g
;

3584 
dbv
->
p_sync
 =

3585 ((*)(
DB_ENV
 *, 
u_t32_t
))

3586 
__db_dbv_g
;

3587 
dbv
->
pmgr_add_me_se
 =

3588 ((*)(
DB_ENV
 *, cڡ *, 
u_t
, *, 
u_t32_t
))

3589 
__db_dbv_g
;

3590 
dbv
->
pmgr_g_ack_picy
 =

3591 ((*)(
DB_ENV
 *, *))

3592 
__db_dbv_g
;

3593 
dbv
->
pmgr_t_ack_picy
 =

3594 ((*)(
DB_ENV
 *, ))

3595 
__db_dbv_g
;

3596 
dbv
->
pmgr_t_lol_se
 =

3597 ((*)(
DB_ENV
 *, cڡ *, 
u_t
, 
u_t32_t
))

3598 
__db_dbv_g
;

3599 
dbv
->
pmgr_se_li
 =

3600 ((*)(
DB_ENV
 *, 
u_t
 *, 
DB_REPMGR_SITE
 **))

3601 
__db_dbv_g
;

3602 
dbv
->
pmgr_t
 =

3603 ((*)(
DB_ENV
 *, , 
u_t32_t
))

3604 
__db_dbv_g
;

3605 
dbv
->
pmgr_
 =

3606 ((*)(
DB_ENV
 *, 
DB_REPMGR_STAT
 **, 
u_t32_t
))

3607 
__db_dbv_g
;

3608 
dbv
->
pmgr__t
 =

3609 ((*)(
DB_ENV
 *, 
u_t32_t
))

3610 
__db_dbv_g
;

3611 
dbv
->
t_loc
 =

3612 ((*)(
DB_ENV
 *, *(*)(
size_t
), *(*)(*, size_t), (*)(*)))

3613 
__db_dbv_g
;

3614 
dbv
->
t_p_dich
 =

3615 ((*)(
DB_ENV
 *, (*)(DB_ENV *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
)))

3616 
__db_dbv_g
;

3617 
dbv
->
t_chesize
 = 
__db_v_t_chesize
;

3618 
dbv
->
t_che_max
 =

3619 ((*)(
DB_ENV
 *, 
u_t32_t
, u_int32_t))

3620 
__db_dbv_g
;

3621 
dbv
->
t_da_d
 =

3622 ((*)(
DB_ENV
 *, const *))

3623 
__db_dbv_g
;

3624 
dbv
->
t_y
 = 
__db_v_t_y
;

3625 
dbv
->
t_evt_nify
 =

3626 ((*)(
DB_ENV
 *, (*)(DB_ENV *, 
u_t32_t
, *)))

3627 
__db_dbv_g
;

3628 
dbv
->
t_edback
 =

3629 ((*)(
DB_ENV
 *, (*)(DB_ENV *, , )))

3630 
__db_dbv_g
;

3631 
dbv
->
t_ags
 = 
__db_v_t_ags
;

3632 
dbv
->
t_rmed_d
 =

3633 ((*)(
DB_ENV
 *, , 
u_t32_t
))

3634 
__db_dbv_g
;

3635 
dbv
->
t_ilive
 =

3636 ((*)(
DB_ENV
 *, (*)(DB_ENV *, 
pid_t
, 
db_thadid_t
, 
u_t32_t
)))

3637 
__db_dbv_g
;

3638 
dbv
->
t_lg_bsize
 =

3639 ((*)(
DB_ENV
 *, 
u_t32_t
))

3640 
__db_dbv_g
;

3641 
dbv
->
t_lg_d
 =

3642 ((*)(
DB_ENV
 *, const *))

3643 
__db_dbv_g
;

3644 
dbv
->
t_lg_femode
 =

3645 ((*)(
DB_ENV
 *, ))

3646 
__db_dbv_g
;

3647 
dbv
->
t_lg_max
 =

3648 ((*)(
DB_ENV
 *, 
u_t32_t
))

3649 
__db_dbv_g
;

3650 
dbv
->
t_lg_gimax
 =

3651 ((*)(
DB_ENV
 *, 
u_t32_t
))

3652 
__db_dbv_g
;

3653 
dbv
->
t_lk_cis
 =

3654 ((*)(
DB_ENV
 *, 
u_t8_t
 *, ))

3655 
__db_dbv_g
;

3656 
dbv
->
t_lk_de
 =

3657 ((*)(
DB_ENV
 *, 
u_t32_t
))

3658 
__db_dbv_g
;

3659 
dbv
->
t_lk_max_locks
 =

3660 ((*)(
DB_ENV
 *, 
u_t32_t
))

3661 
__db_dbv_g
;

3662 
dbv
->
t_lk_max_locks
 =

3663 ((*)(
DB_ENV
 *, 
u_t32_t
))

3664 
__db_dbv_g
;

3665 
dbv
->
t_lk_max_objes
 =

3666 ((*)(
DB_ENV
 *, 
u_t32_t
))

3667 
__db_dbv_g
;

3668 
dbv
->
t_mp_max_ݒfd
 =

3669 ((*)(
DB_ENV
 *, ))

3670 
__db_dbv_g
;

3671 
dbv
->
t_mp_max_wre
 =

3672 ((*)(
DB_ENV
 *, , 
db_timeout_t
))

3673 
__db_dbv_g
;

3674 
dbv
->
t_mp_mmsize
 =

3675 ((*)(
DB_ENV
 *, 
size_t
))

3676 
__db_dbv_g
;

3677 
dbv
->
t_nic
 =

3678 ((*)(
DB_ENV
 *, (*)(DB_ENV *, )))

3679 
__db_dbv_g
;

3680 
dbv
->
t_p_que
 =

3681 ((*)(
DB_ENV
 *, 
u_t32_t
, u_int32_t))

3682 
__db_dbv_g
;

3683 
dbv
->
t_c_rv
 = 
__db_v_t_c_rv
;

3684 
dbv
->
t_shm_key
 =

3685 ((*)(
DB_ENV
 *, ))

3686 
__db_dbv_g
;

3687 
dbv
->
t_thad_cou
 =

3688 ((*)(
DB_ENV
 *, 
u_t32_t
))

3689 
__db_dbv_g
;

3690 
dbv
->
t_thad_id
 =

3691 ((*)(
DB_ENV
 *, (*)(DB_ENV *, 
pid_t
 *, 
db_thadid_t
*)))

3692 
__db_dbv_g
;

3693 
dbv
->
t_thad_id_rg
 =

3694 ((*)(
DB_ENV
 *, *(*)(DB_ENV *, 
pid_t
, 
db_thadid_t
, *)))

3695 
__db_dbv_g
;

3696 
dbv
->
t_timeout
 =

3697 ((*)(
DB_ENV
 *, 
u_t32_t
, u_int32_t))

3698 
__db_dbv_g
;

3699 
dbv
->
t_tmp_d
 =

3700 ((*)(
DB_ENV
 *, const *))

3701 
__db_dbv_g
;

3702 
dbv
->
t_tx_max
 =

3703 ((*)(
DB_ENV
 *, 
u_t32_t
))

3704 
__db_dbv_g
;

3705 
dbv
->
t_tx_timeamp
 =

3706 ((*)(
DB_ENV
 *, 
time_t
 *))

3707 
__db_dbv_g
;

3708 
dbv
->
t_vbo
 =

3709 ((*)(
DB_ENV
 *, 
u_t32_t
, ))

3710 
__db_dbv_g
;

3711 
dbv
->
_t
 =

3712 ((*)(
DB_ENV
 *, 
u_t32_t
))

3713 
__db_dbv_g
;

3714 
dbv
->
txn_beg
 = 
__db_v_txn_beg
;

3715 
dbv
->
txn_checkpot
 =

3716 ((*)(
DB_ENV
 *, 
u_t32_t
, u_int32_t, u_int32_t))

3717 
__db_dbv_g
;

3718 
dbv
->
txn_cov
 = 
__db_v_txn_cov
;

3719 
dbv
->
txn_
 =

3720 ((*)(
DB_ENV
 *, 
DB_TXN_STAT
 **, 
u_t32_t
))

3721 
__db_dbv_g
;

3722 
dbv
->
txn__t
 =

3723 ((*)(
DB_ENV
 *, 
u_t32_t
))

3724 
__db_dbv_g
;

3726 
	}
}

3735 
	$__db_txn_
(
txn
)

3736 
DB_TXN
 *
txn
;

3738 
txn
->
abt
 = 
__db_txn_abt
;

3739 
txn
->
comm
 = 
__db_txn_comm
;

3740 
txn
->
disrd
 = 
__db_txn_disrd
;

3741 
txn
->
g_me
 =

3742 ((*)(
DB_TXN
 *, const **))

3743 
__db_txn_g
;

3744 
txn
->
e
 = 
__db_txn_e
;

3745 
txn
->
t_me
 =

3746 ((*)(
DB_TXN
 *, const *))

3747 
__db_txn_g
;

3749 
	}
}

	@../rpc_client/gen_client_ret.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/txn.h
"

16 #ifde
HAVE_SYSTEM_INCLUDE_FILES


17 
	~<c/c.h
>

19 
	~"db_rv.h
"

20 
	~"dbc_auto/c__ext.h
"

22 
	#FREE_IF_CHANGED
(
db
, 
ig
) do { \

23 i((
db
)->
da
 !
NULL
 && (db)->d!
ig
) { \

24 
	`__os_
(
dbv
, (
db
)->
da
); \

25 (
db
)->
da
 = 
NULL
; \

27 } 0)

	)

34 
	$__db_v__t
(
dbv
, 
timeout
, 
yp
)

35 
DB_ENV
 * 
dbv
;

36 
timeout
;

37 
__v__y
 *
yp
;

40 
	`COMPQUIET
(
timeout
, 0);

42 i(
yp
->
us
 != 0)

43  (
yp
->
us
);

44 
dbv
->
_id
 = 
yp
->
v_id
;

45  (
yp
->
us
);

46 
	}
}

53 
	$__db_v_ݒ_t
(
dbv
, 
home
, 
ags
, 
mode
, 
yp
)

54 
DB_ENV
 *
dbv
;

55 cڡ *
home
;

56 
u_t32_t
 
ags
;

57 
mode
;

58 
__v_ݒ_y
 *
yp
;

60 
DB_TXNMGR
 *
tmg
;

61 
t
;

63 
	`COMPQUIET
(
home
, 
NULL
);

64 
	`COMPQUIET
(
mode
, 0);

69 i(
yp
->
us
 != 0)

70  (
yp
->
us
);

72 
dbv
->
_id
 = 
yp
->
v_id
;

77 i(
	`LF_ISSET
(
DB_INIT_TXN
)) {

78 i((
t
 = 
	`__os_oc
(
dbv
,

79 1, (
DB_TXNMGR
), &
tmg
)) != 0)

80  (
t
);

81 
	`TAILQ_INIT
(&
tmg
->
txn_cha
);

82 
tmg
->
dbv
 = dbenv;

83 
dbv
->
tx_hd
 = 
tmg
;

86  (
yp
->
us
);

87 
	}
}

94 
	$__db_v_move_t
(
dbv
, 
home
, 
ags
, 
yp
)

95 
DB_ENV
 *
dbv
;

96 cڡ *
home
;

97 
u_t32_t
 
ags
;

98 
__v_move_y
 *
yp
;

100 
t
;

102 
	`COMPQUIET
(
home
, 
NULL
);

103 
	`COMPQUIET
(
ags
, 0);

105 
t
 = 
	`__db_esh
(
dbv
);

106 
	`__os_
(
NULL
, 
dbv
);

107 i(
yp
->
us
 =0 && 
t
 != 0)

108  (
t
);

110  (
yp
->
us
);

111 
	}
}

117 
	$__db_txn_abt_t
(
tx
, 
yp
)

118 
DB_TXN
 *
tx
;

119 
__txn_abt_y
 *
yp
;

121 
	`__db_txn_d
(
tx
);

122  (
yp
->
us
);

123 
	}
}

130 
	$__db_v_txn_beg_t
(
vp
, 

, 
txp
, 
ags
, 
yp
)

131 
DB_ENV
 *
vp
;

132 
DB_TXN
 *

, **
txp
;

133 
u_t32_t
 
ags
;

134 
__v_txn_beg_y
 *
yp
;

136 
DB_TXN
 *
txn
;

137 
t
;

139 
	`COMPQUIET
(
ags
, 0);

141 i(
yp
->
us
 != 0)

142  (
yp
->
us
);

144 i((
t
 = 
	`__os_oc
(
vp
, 1, (
DB_TXN
), &
txn
)) != 0)

145  (
t
);

152 
	`__db_txn_tup
(
vp
, 
txn
, 

, (
u_t32_t
)
yp
->
txnid_id
);

153 *
txp
 = 
txn
;

154  (
yp
->
us
);

155 
	}
}

162 
	$__db_v_cdsgroup_beg_t
(
vp
, 
txp
, 
yp
)

163 
DB_ENV
 *
vp
;

164 
DB_TXN
 **
txp
;

165 
__v_cdsgroup_beg_y
 *
yp
;

167 
DB_TXN
 *
txn
;

168 
t
;

170 i(
yp
->
us
 != 0)

171  (
yp
->
us
);

173 i((
t
 = 
	`__os_oc
(
vp
, 1, (
DB_TXN
), &
txn
)) != 0)

174  (
t
);

181 
	`__db_txn_tup
(
vp
, 
txn
, 
NULL
, (
u_t32_t
)
yp
->
txnid_id
);

182 *
txp
 = 
txn
;

183  (
yp
->
us
);

184 
	}
}

191 
	$__db_txn_comm_t
(
tx
, 
ags
, 
yp
)

192 
DB_TXN
 *
tx
;

193 
u_t32_t
 
ags
;

194 
__txn_comm_y
 *
yp
;

196 
	`COMPQUIET
(
ags
, 0);

198 
	`__db_txn_d
(
tx
);

199  (
yp
->
us
);

200 
	}
}

207 
	$__db_txn_disrd_t
(
tx
, 
ags
, 
yp
)

208 
DB_TXN
 * 
tx
;

209 
u_t32_t
 
ags
;

210 
__txn_disrd_y
 *
yp
;

212 
	`COMPQUIET
(
ags
, 0);

214 
	`__db_txn_d
(
tx
);

215  (
yp
->
us
);

216 
	}
}

223 
	$__db_v_txn_cov_t
(
dbv
, 
li
, 
cou
, 

, 
ags
, 
yp
)

224 
DB_ENV
 * 
dbv
;

225 
DB_PREPLIST
 * 
li
;

226 
cou
;

227 * 

;

228 
u_t32_t
 
ags
;

229 
__v_txn_cov_y
 *
yp
;

231 
DB_PREPLIST
 *

;

232 
DB_TXN
 *
txǼay
, *
txn
;

233 
u_t32_t
 
i
, *
txnid
;

234 
t
;

235 
u_t8_t
 *
gid
;

237 
	`COMPQUIET
(
ags
, 0);

238 
	`COMPQUIET
(
cou
, 0);

240 i(
yp
->
us
 != 0)

241  (
yp
->
us
);

243 *

 = (
yp
->
tcou
;

245 i(
yp
->
tcou
 == 0)

246  (
yp
->
us
);

248 i((
t
 = 
	`__os_oc
(
dbv
, 
yp
->
tcou
, (
DB_TXN
),

249 &
txǼay
)) != 0)

250  (
t
);

255 
i
 = 0;

256 
txn
 = 
txǼay
;

257 
txnid
 = (
u_t32_t
 *)
yp
->
txn
.
txn_v
;

258 
gid
 = (
u_t8_t
 *)
yp
->gid.
gid_v
;

259 

 = 
li
;

260 
i
++ < 
yp
->
tcou
) {

261 
	`__db_txn_tup
(
dbv
, 
txn
, 
NULL
, *
txnid
);

262 

->
txn
 =xn;

263 
	`memy
(

->
gid
, gid, 
DB_XIDDATASIZE
);

267 
txn
++;

268 
gid
 +
DB_XIDDATASIZE
;

269 
txnid
++;

270 

++;

274 
	}
}

280 
	$__db_db_o_t
(
dbp
, 
ags
, 
yp
)

281 
DB
 *
dbp
;

282 
u_t32_t
 
ags
;

283 
__db_o_y
 *
yp
;

285 
t
;

287 
	`COMPQUIET
(
ags
, 0);

289 
t
 = 
	`__db_dbo_comm
(
dbp
);

291 i(
yp
->
us
 != 0)

292  (
yp
->
us
);

294  (
t
);

295 
	}
}

302 
	$__db_db__t
(
dbp
, 
dbv
, 
ags
, 
yp
)

303 
DB
 * 
dbp
;

304 
DB_ENV
 * 
dbv
;

305 
u_t32_t
 
ags
;

306 
__db__y
 *
yp
;

308 
	`COMPQUIET
(
dbv
, 
NULL
);

309 
	`COMPQUIET
(
ags
, 0);

311 i(
yp
->
us
 != 0)

312  (
yp
->
us
);

313 
dbp
->
_id
 = 
yp
->
db_id
;

314  (
yp
->
us
);

315 
	}
}

322 
	$__db_db_g_t
(
dbp
, 
tx
, 
key
, 
da
, 
ags
, 
yp
)

323 
DB
 *
dbp
;

324 
DB_TXN
 *
tx
;

325 
DBT
 *
key
, *
da
;

326 
u_t32_t
 
ags
;

327 
__db_g_y
 *
yp
;

329 
DB_ENV
 *
dbv
;

330 
t
;

331 *
dkey
;

333 
	`COMPQUIET
(
tx
, 
NULL
);

334 
	`COMPQUIET
(
ags
, 0);

336 
t
 = 0;

337 i(
yp
->
us
 != 0)

338  (
yp
->
us
);

340 
dbv
 = 
dbp
->dbenv;

342 
dkey
 = 
key
->
da
;

343 
t
 = 
	`__db_tcy
(
dbv
, 
key
, 
yp
->
keyda
.
keyda_v
,

344 
yp
->
keyda
.
keyda_n
, &
dbp
->
my_rkey
.
da
,

345 &
dbp
->
my_rkey
.
un
);

346 i(
t
)

347  (
t
);

348 
t
 = 
	`__db_tcy
(
dbv
, 
da
, 
yp
->
dada
.
dada_v
,

349 
yp
->
dada
.
dada_n
, &
dbp
->
my_rda
.
da
,

350 &
dbp
->
my_rda
.
un
);

355 i(
t
)

356 
	`FREE_IF_CHANGED
(
key
, 
dkey
);

357  (
t
);

358 
	}
}

365 
	$__db_db_key_nge_t
(
dbp
, 
tx
, 
key
, 
nge
, 
ags
, 
yp
)

366 
DB
 *
dbp
;

367 
DB_TXN
 *
tx
;

368 
DBT
 *
key
;

369 
DB_KEY_RANGE
 *
nge
;

370 
u_t32_t
 
ags
;

371 
__db_key_nge_y
 *
yp
;

373 
	`COMPQUIET
(
dbp
, 
NULL
);

374 
	`COMPQUIET
(
tx
, 
NULL
);

375 
	`COMPQUIET
(
key
, 
NULL
);

376 
	`COMPQUIET
(
ags
, 0);

378 i(
yp
->
us
 != 0)

379  (
yp
->
us
);

380 
nge
->
ss
 = 
yp
->less;

381 
nge
->
equ
 = 
yp
->equal;

382 
nge
->
g
 = 
yp
->greater;

383  (
yp
->
us
);

384 
	}
}

391 
	$__db_db_ݒ_t
(
dbp
, 
txn
, 
me
, 
subdb
, 
ty
, 
ags
, 
mode
, 
yp
)

392 
DB
 *
dbp
;

393 
DB_TXN
 *
txn
;

394 cڡ *
me
, *
subdb
;

395 
DBTYPE
 
ty
;

396 
u_t32_t
 
ags
;

397 
mode
;

398 
__db_ݒ_y
 *
yp
;

400 
	`COMPQUIET
(
txn
, 
NULL
);

401 
	`COMPQUIET
(
me
, 
NULL
);

402 
	`COMPQUIET
(
subdb
, 
NULL
);

403 
	`COMPQUIET
(
ty
, 
DB_UNKNOWN
);

404 
	`COMPQUIET
(
ags
, 0);

405 
	`COMPQUIET
(
mode
, 0);

407 i(
yp
->
us
 == 0) {

408 
dbp
->
_id
 = 
yp
->
db_id
;

409 
dbp
->
ty
 = (
DBTYPE
)
yp
->type;

420 ()
	`__db_t_ld
(
dbp
, ()
yp
->
ld
);

426 
	`F_SET
(
dbp
, 
DB_AM_OPEN_CALLED
);

428  (
yp
->
us
);

429 
	}
}

436 
	$__db_db_pg_t
(
dbp
, 
tx
, 
skey
, 
pkey
, 
da
, 
ags
, 
yp
)

437 
DB
 * 
dbp
;

438 
DB_TXN
 * 
tx
;

439 
DBT
 * 
skey
;

440 
DBT
 * 
pkey
;

441 
DBT
 * 
da
;

442 
u_t32_t
 
ags
;

443 
__db_pg_y
 *
yp
;

445 
DB_ENV
 *
dbv
;

446 
t
;

447 *
dskey
, *
dpkey
;

449 
	`COMPQUIET
(
tx
, 
NULL
);

450 
	`COMPQUIET
(
ags
, 0);

452 
t
 = 0;

453 i(
yp
->
us
 != 0)

454  (
yp
->
us
);

456 
dbv
 = 
dbp
->dbenv;

458 
dskey
 = 
skey
->
da
;

459 
t
 = 
	`__db_tcy
(
dbv
, 
skey
, 
yp
->
skeyda
.
skeyda_v
,

460 
yp
->
skeyda
.
skeyda_n
, &
dbp
->
my_rskey
.
da
,

461 &
dbp
->
my_rskey
.
un
);

462 i(
t
)

463  (
t
);

465 
dpkey
 = 
pkey
->
da
;

466 i((
t
 = 
	`__db_tcy
(
dbv
, 
pkey
, 
yp
->
pkeyda
.
pkeyda_v
,

467 
yp
->
pkeyda
.
pkeyda_n
, &
dbp
->
my_rkey
.
da
,

468 &
dbp
->
my_rkey
.
un
)) != 0)

469 
r
;

470 
t
 = 
	`__db_tcy
(
dbv
, 
da
, 
yp
->
dada
.
dada_v
,

471 
yp
->
dada
.
dada_n
, &
dbp
->
my_rda
.
da
,

472 &
dbp
->
my_rda
.
un
);

474 i(
t
) {

475 
r
: 
	`FREE_IF_CHANGED
(
skey
, 
dskey
);

476 
	`FREE_IF_CHANGED
(
pkey
, 
dpkey
);

478  (
t
);

479 
	}
}

486 
	$__db_db_put_t
(
dbp
, 
tx
, 
key
, 
da
, 
ags
, 
yp
)

487 
DB
 *
dbp
;

488 
DB_TXN
 *
tx
;

489 
DBT
 *
key
, *
da
;

490 
u_t32_t
 
ags
;

491 
__db_put_y
 *
yp
;

493 
t
;

495 
	`COMPQUIET
(
dbp
, 
NULL
);

496 
	`COMPQUIET
(
tx
, 
NULL
);

497 
	`COMPQUIET
(
da
, 
NULL
);

499 
t
 = 
yp
->
us
;

500 i(
yp
->
us
 =0 && (
ags
 =
DB_APPEND
))

501 *(
db_o_t
 *)
key
->
da
 =

502 *(
db_o_t
 *)
yp
->
keyda
.
keyda_v
;

503  (
t
);

504 
	}
}

511 
	$__db_db_move_t
(
dbp
, 
me
, 
subdb
, 
ags
, 
yp
)

512 
DB
 *
dbp
;

513 cڡ *
me
, *
subdb
;

514 
u_t32_t
 
ags
;

515 
__db_move_y
 *
yp
;

517 
t
;

519 
	`COMPQUIET
(
me
, 0);

520 
	`COMPQUIET
(
subdb
, 0);

521 
	`COMPQUIET
(
ags
, 0);

523 
t
 = 
	`__db_dbo_comm
(
dbp
);

525 i(
yp
->
us
 != 0)

526  (
yp
->
us
);

528  (
t
);

529 
	}
}

536 
	$__db_db_me_t
(
dbp
, 
me
, 
subdb
, 
wme
, 
ags
, 
yp
)

537 
DB
 *
dbp
;

538 cڡ *
me
, *
subdb
, *
wme
;

539 
u_t32_t
 
ags
;

540 
__db_me_y
 *
yp
;

542 
t
;

544 
	`COMPQUIET
(
me
, 0);

545 
	`COMPQUIET
(
subdb
, 0);

546 
	`COMPQUIET
(
wme
, 0);

547 
	`COMPQUIET
(
ags
, 0);

549 
t
 = 
	`__db_dbo_comm
(
dbp
);

551 i(
yp
->
us
 != 0)

552  (
yp
->
us
);

554  (
t
);

555 
	}
}

562 
	$__db_db__t
(
dbp
, 
tx
, 

, 
ags
, 
yp
)

563 
DB
 *
dbp
;

564 
DB_TXN
 *
tx
;

565 *

;

566 
u_t32_t
 
ags
;

567 
__db__y
 *
yp
;

569 
size_t
 
n
;

570 
u_t32_t
 
i
, *
q
, *
p
, *
t
;

571 
t
;

573 
	`COMPQUIET
(
ags
, 0);

574 
	`COMPQUIET
(
tx
, 
NULL
);

576 i(
yp
->
us
 !0 || 

 =
NULL
)

577  (
yp
->
us
);

579 
n
 = 
yp
->
s
.
s_n
 * (
u_t32_t
);

580 i((
t
 = 
	`__os_umloc
(
dbp
->
dbv
, 
n
, &
t
)) != 0)

581  (
t
);

582 
i
 = 0, 
q
 = 
t
, 
p
 = (
u_t32_t
 *)
yp
->
s
.
s_v
;

583 
i
 < 
yp
->
s
.
s_n
; i++, 
q
++, 
p
++)

584 *
q
 = *
p
;

585 *(
u_t32_t
 **)

 = 
t
;

587 
	}
}

594 
	$__db_db_un_t
(
dbp
, 
tx
, 
coup
, 
ags
, 
yp
)

595 
DB
 *
dbp
;

596 
DB_TXN
 *
tx
;

597 
u_t32_t
 *
coup
, 
ags
;

598 
__db_un_y
 *
yp
;

600 
	`COMPQUIET
(
dbp
, 
NULL
);

601 
	`COMPQUIET
(
tx
, 
NULL
);

602 
	`COMPQUIET
(
ags
, 0);

604 i(
yp
->
us
 != 0)

605  (
yp
->
us
);

606 *
coup
 = 
yp
->
cou
;

608  (
yp
->
us
);

609 
	}
}

616 
	$__db_db_curs_t
(
dbp
, 
tx
, 
db
, 
ags
, 
yp
)

617 
DB
 *
dbp
;

618 
DB_TXN
 *
tx
;

619 
DBC
 **
db
;

620 
u_t32_t
 
ags
;

621 
__db_curs_y
 *
yp
;

623 
	`COMPQUIET
(
tx
, 
NULL
);

624 
	`COMPQUIET
(
ags
, 0);

626 i(
yp
->
us
 != 0)

627  (
yp
->
us
);

629  (
	`__db_c_tup
(
yp
->
dbcid_id
, 
dbp
, 
db
));

630 
	}
}

637 
	$__db_db_jo_t
(
dbp
, 
curs
, 
db
, 
ags
, 
yp
)

638 
DB
 *
dbp
;

639 
DBC
 **
curs
, **
db
;

640 
u_t32_t
 
ags
;

641 
__db_jo_y
 *
yp
;

643 
	`COMPQUIET
(
curs
, 
NULL
);

644 
	`COMPQUIET
(
ags
, 0);

646 i(
yp
->
us
 != 0)

647  (
yp
->
us
);

656  (
	`__db_c_tup
(
yp
->
dbcid_id
, 
dbp
, 
db
));

657 
	}
}

663 
	$__db_dbc_o_t
(
dbc
, 
yp
)

664 
DBC
 *
dbc
;

665 
__dbc_o_y
 *
yp
;

667 
	`__db_c_esh
(
dbc
);

668  (
yp
->
us
);

669 
	}
}

676 
	$__db_dbc_cou_t
(
dbc
, 
coup
, 
ags
, 
yp
)

677 
DBC
 *
dbc
;

678 
db_o_t
 *
coup
;

679 
u_t32_t
 
ags
;

680 
__dbc_cou_y
 *
yp
;

682 
	`COMPQUIET
(
dbc
, 
NULL
);

683 
	`COMPQUIET
(
ags
, 0);

685 i(
yp
->
us
 != 0)

686  (
yp
->
us
);

687 *
coup
 = 
yp
->
dupcou
;

689  (
yp
->
us
);

690 
	}
}

697 
	$__db_dbc_dup_t
(
dbc
, 
db
, 
ags
, 
yp
)

698 
DBC
 *
dbc
, **
db
;

699 
u_t32_t
 
ags
;

700 
__dbc_dup_y
 *
yp
;

702 
	`COMPQUIET
(
ags
, 0);

704 i(
yp
->
us
 != 0)

705  (
yp
->
us
);

707  (
	`__db_c_tup
(
yp
->
dbcid_id
, 
dbc
->
dbp
, 
db
));

708 
	}
}

715 
	$__db_dbc_g_t
(
dbc
, 
key
, 
da
, 
ags
, 
yp
)

716 
DBC
 *
dbc
;

717 
DBT
 *
key
, *
da
;

718 
u_t32_t
 
ags
;

719 
__dbc_g_y
 *
yp
;

721 
DB_ENV
 *
dbv
;

722 
t
;

723 *
dkey
;

725 
	`COMPQUIET
(
ags
, 0);

727 
t
 = 0;

728 i(
yp
->
us
 != 0)

729  (
yp
->
us
);

731 
dbv
 = 
dbc
->
dbp
->dbenv;

732 
dkey
 = 
key
->
da
;

733 
t
 = 
	`__db_tcy
(
dbv
, 
key
, 
yp
->
keyda
.
keyda_v
,

734 
yp
->
keyda
.
keyda_n
, &
dbc
->
my_rkey
.
da
,

735 &
dbc
->
my_rkey
.
un
);

736 i(
t
)

737  (
t
);

738 
t
 = 
	`__db_tcy
(
dbv
, 
da
, 
yp
->
dada
.
dada_v
,

739 
yp
->
dada
.
dada_n
, &
dbc
->
my_rda
.
da
,

740 &
dbc
->
my_rda
.
un
);

746 i(
t
)

747 
	`FREE_IF_CHANGED
(
key
, 
dkey
);

748  (
t
);

749 
	}
}

756 
	$__db_dbc_pg_t
(
dbc
, 
skey
, 
pkey
, 
da
, 
ags
, 
yp
)

757 
DBC
 * 
dbc
;

758 
DBT
 * 
skey
;

759 
DBT
 * 
pkey
;

760 
DBT
 * 
da
;

761 
u_t32_t
 
ags
;

762 
__dbc_pg_y
 *
yp
;

764 
DB_ENV
 *
dbv
;

765 
t
;

766 *
dskey
, *
dpkey
;

768 
	`COMPQUIET
(
ags
, 0);

770 
t
 = 0;

771 i(
yp
->
us
 != 0)

772  (
yp
->
us
);

774 
dbv
 = 
dbc
->
dbp
->dbenv;

776 
dskey
 = 
skey
->
da
;

777 
t
 = 
	`__db_tcy
(
dbv
, 
skey
, 
yp
->
skeyda
.
skeyda_v
,

778 
yp
->
skeyda
.
skeyda_n
, &
dbc
->
my_rskey
.
da
,

779 &
dbc
->
my_rskey
.
un
);

780 i(
t
)

781  (
t
);

783 
dpkey
 = 
pkey
->
da
;

784 i((
t
 = 
	`__db_tcy
(
dbv
, 
pkey
, 
yp
->
pkeyda
.
pkeyda_v
,

785 
yp
->
pkeyda
.
pkeyda_n
, &
dbc
->
my_rkey
.
da
,

786 &
dbc
->
my_rkey
.
un
)) != 0)

787 
r
;

788 
t
 = 
	`__db_tcy
(
dbv
, 
da
, 
yp
->
dada
.
dada_v
,

789 
yp
->
dada
.
dada_n
, &
dbc
->
my_rda
.
da
,

790 &
dbc
->
my_rda
.
un
);

796 i(
t
) {

797 
r
: 
	`FREE_IF_CHANGED
(
skey
, 
dskey
);

798 
	`FREE_IF_CHANGED
(
pkey
, 
dpkey
);

800  (
t
);

801 
	}
}

808 
	$__db_dbc_put_t
(
dbc
, 
key
, 
da
, 
ags
, 
yp
)

809 
DBC
 *
dbc
;

810 
DBT
 *
key
, *
da
;

811 
u_t32_t
 
ags
;

812 
__dbc_put_y
 *
yp
;

814 
	`COMPQUIET
(
da
, 
NULL
);

816 i(
yp
->
us
 != 0)

817  (
yp
->
us
);

819 i(
yp
->
us
 =0 && 
dbc
->
dbp
->
ty
 =
DB_RECNO
 &&

820 (
ags
 =
DB_AFTER
 || fg=
DB_BEFORE
))

821 *(
db_o_t
 *)
key
->
da
 =

822 *(
db_o_t
 *)
yp
->
keyda
.
keyda_v
;

823  (
yp
->
us
);

824 
	}
}

	@../rpc_server/c/db_server_proc.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<c/c.h
>

15 
	~"db_rv.h
"

16 
	~"dbc/db_rv_t.h
"

17 
	~"dbc_auto/c_rv_ext.h
"

24 
	$__v_g_chesize_oc
(
dbv_id
, 
yp
)

25 
u_t
 
dbv_id
;

26 
__v_g_chesize_y
 *
yp
;

28 
DB_ENV
 *
dbv
;

29 
_y
 *
dbv_p
;

31 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

32 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

34 
yp
->
us
 = 
dbv
->
	`g_chesize
(dbv, &yp->
gbys
,

35 &
yp
->
bys
, (*)&yp->
nche
);

36 
	}
}

43 
	$__v_t_chesize_oc
(
dbv_id
, 
gbys
, 
bys
, 
nche
, 
yp
)

44 
u_t
 
dbv_id
;

45 
u_t32_t
 
gbys
;

46 
u_t32_t
 
bys
;

47 
u_t32_t
 
nche
;

48 
__v_t_chesize_y
 *
yp
;

50 
DB_ENV
 *
dbv
;

51 
_y
 *
dbv_p
;

52 
t
;

54 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

55 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

57 
t
 = 
dbv
->
	`t_chesize
(dbv, 
gbys
, 
bys
, 
nche
);

59 
yp
->
us
 = 
t
;

61 
	}
}

68 
	$__v_cdsgroup_beg_oc
(
dbv_id
, 
yp
)

69 
u_t
 
dbv_id
;

70 
__v_cdsgroup_beg_y
 *
yp
;

72 
DB_ENV
 *
dbv
;

73 
DB_TXN
 *
tx
;

74 
_y
 *
p
, *
dbv_p
;

75 
t
;

77 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

78 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

80 
p
 = 
	`w__t
(&
yp
->
us
);

81 i(
p
 =
NULL
)

84 
t
 = 
dbv
->
	`cdsgroup_beg
(dbv, &
tx
);

85 i(
t
 == 0) {

86 
p
->
_tx
 = 
tx
;

87 
p
->
_ty
 = 
CT_TXN
;

88 
p
->
_
 = 
NULL
;

89 
p
->
_v
 = 
dbv_p
;

90 
yp
->
txnid_id
 = 
p
->
_id
;

91 
	`__dbv_imeout
(
p
, 
dbv_p
->
_timeout
);

92 
	`__dbv_aive
(
p
);

94 
	`__dbr_p
(
p
);

96 
yp
->
us
 = 
t
;

98 
	}
}

104 
	$__v_o_oc
(
dbv_id
, 
ags
, 
yp
)

105 
u_t
 
dbv_id
;

106 
u_t32_t
 
ags
;

107 
__v_o_y
 *
yp
;

109 
_y
 *
dbv_p
;

111 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

112 
yp
->
us
 = 
	`__v_o_t
(
dbv_id
, 
ags
, 0);

114 
	}
}

120 
	$__v__oc
(
timeout
, 
yp
)

121 
u_t32_t
 
timeout
;

122 
__v__y
 *
yp
;

124 
DB_ENV
 *
dbv
;

125 
_y
 *
p
;

126 
t
;

128 
p
 = 
	`w__t
(&
yp
->
us
);

129 i(
p
 =
NULL
)

131 i((
t
 = 
	`db_v_
(&
dbv
, 0)) == 0) {

132 
p
->
_vp
 = 
dbv
;

133 
p
->
_ty
 = 
CT_ENV
;

134 
p
->
_
 = 
NULL
;

135 
p
->
_v
 = ctp;

136 
	`__dbv_imeout
(
p
, 
timeout
);

137 
	`__dbv_aive
(
p
);

138 
yp
->
v_id
 = 
p
->
_id
;

140 
	`__dbr_p
(
p
);

142 
yp
->
us
 = 
t
;

144 
	}
}

151 
	$__v_dbmove_oc
(
dbv_id
, 
tx_id
, 
me
, 
subdb
, 
ags
, 
yp
)

152 
u_t
 
dbv_id
;

153 
u_t
 
tx_id
;

154 *
me
;

155 *
subdb
;

156 
u_t32_t
 
ags
;

157 
__v_dbmove_y
 *
yp
;

159 
t
;

160 
DB_ENV
 * 
dbv
;

161 
_y
 *
dbv_p
;

162 
DB_TXN
 * 
tx
;

163 
_y
 *
tx_p
;

165 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

166 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

168 i(
tx_id
 != 0) {

169 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

170 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

172 
tx
 = 
NULL
;

174 
t
 = 
dbv
->
	`dbmove
(dbv, 
tx
, 
me
, 
subdb
, 
ags
);

176 
yp
->
us
 = 
t
;

178 
	}
}

185 
	$__v_dbme_oc
(
dbv_id
, 
tx_id
, 
me
, 
subdb
, 
wme
, 
ags
, 
yp
)

186 
u_t
 
dbv_id
;

187 
u_t
 
tx_id
;

188 *
me
;

189 *
subdb
;

190 *
wme
;

191 
u_t32_t
 
ags
;

192 
__v_dbme_y
 *
yp
;

194 
t
;

195 
DB_ENV
 * 
dbv
;

196 
_y
 *
dbv_p
;

197 
DB_TXN
 * 
tx
;

198 
_y
 *
tx_p
;

200 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

201 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

203 i(
tx_id
 != 0) {

204 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

205 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

207 
tx
 = 
NULL
;

209 
t
 = 
dbv
->
	`dbme
(dbv, 
tx
, 
me
, 
subdb
, 
wme
, 
ags
);

211 
yp
->
us
 = 
t
;

213 
	}
}

220 
	$__v_g_y_ags_oc
(
dbv_id
, 
yp
)

221 
u_t
 
dbv_id
;

222 
__v_g_y_ags_y
 *
yp
;

224 
DB_ENV
 *
dbv
;

225 
_y
 *
dbv_p
;

227 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

228 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

230 
yp
->
us
 = 
dbv
->
	`g_y_ags
(dbv, &yp->
ags
);

231 
	}
}

238 
	$__v_t_y_oc
(
dbv_id
, 
sswd
, 
ags
, 
yp
)

239 
u_t
 
dbv_id
;

240 *
sswd
;

241 
u_t32_t
 
ags
;

242 
__v_t_y_y
 *
yp
;

244 
t
;

245 
DB_ENV
 * 
dbv
;

246 
_y
 *
dbv_p
;

248 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

249 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

251 
t
 = 
dbv
->
	`t_y
(dbv, 
sswd
, 
ags
);

253 
yp
->
us
 = 
t
;

255 
	}
}

261 
	$__v_g_ags_oc
(
dbv_id
, 
yp
)

262 
u_t
 
dbv_id
;

263 
__v_g_ags_y
 *
yp
;

265 
DB_ENV
 *
dbv
;

266 
_y
 *
dbv_p
;

268 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

269 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

271 
yp
->
us
 = 
dbv
->
	`g_ags
(dbv, &yp->
ags
);

272 
	}
}

279 
	$__v_t_ags_oc
(
dbv_id
, 
ags
, 
off
, 
yp
)

280 
u_t
 
dbv_id
;

281 
u_t32_t
 
ags
;

282 
u_t32_t
 
off
;

283 
__v_t_ags_y
 *
yp
;

285 
DB_ENV
 *
dbv
;

286 
_y
 *
dbv_p
;

287 
t
;

289 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

290 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

292 
t
 = 
dbv
->
	`t_ags
(dbv, 
ags
, 
off
);

293 i(
off
)

294 
dbv_p
->
_vdp
.
ags
 = 
ags
;

296 
dbv_p
->
_vdp
.
offags
 = 
ags
;

298 
yp
->
us
 = 
t
;

300 
	}
}

306 
	$__v_g_home_oc
(
dbv_id
, 
yp
)

307 
u_t
 
dbv_id
;

308 
__v_g_home_y
 *
yp
;

310 
DB_ENV
 *
dbv
;

311 
_y
 *
dbv_p
;

313 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

314 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

316 
yp
->
us
 = 
dbv
->
	`g_home
(dbenv,

317 (cڡ **)&
yp
->
home
);

318 
	}
}

325 
	$__v_g_ݒ_ags_oc
(
dbv_id
, 
yp
)

326 
u_t
 
dbv_id
;

327 
__v_g_ݒ_ags_y
 *
yp
;

329 
DB_ENV
 *
dbv
;

330 
_y
 *
dbv_p
;

332 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

333 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

335 
yp
->
us
 = 
dbv
->
	`g_ݒ_ags
(dbv, &yp->
ags
);

336 
	}
}

343 
	$__v_ݒ_oc
(
dbv_id
, 
home
, 
ags
, 
mode
, 
yp
)

344 
u_t
 
dbv_id
;

345 *
home
;

346 
u_t32_t
 
ags
;

347 
u_t32_t
 
mode
;

348 
__v_ݒ_y
 *
yp
;

350 
DB_ENV
 *
dbv
;

351 
_y
 *
dbv_p
, *
w_p
;

352 
u_t32_t
 
wags
, 
sheags
;

353 
t
;

354 
home_y
 *
fuhome
;

356 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

357 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

358 
fuhome
 = 
	`g_fuhome
(
home
);

359 i(
fuhome
 =
NULL
) {

360 
t
 = 
DB_NOSERVER_HOME
;

361 
out
;

368 i((
ags
 & 
DB_INIT_LOCK
) &&

369 (
t
 = 
dbv
->
	`t_lk_de
(dbv, 
DB_LOCK_DEFAULT
)) != 0)

370 
out
;

372 i(
__dbv_vbo
) {

373 
dbv
->
	`t_rfe
(dbv, 
dr
);

374 
dbv
->
	`t_fx
(dbv, 
fuhome
->
home
);

376 
dbv
->
	`t_rfe
(dbv, 
NULL
);

381 
wags
 = (
ags
 & ~
DB_SERVER_FLAGMASK
);

382 
sheags
 = (
wags
 & 
DB_SERVER_ENVFLAGS
);

386 
yp
->
v_id
 = 
dbv_id
;

387 i((
w_p
 = 
	`__dbv_shnv
(
dbv_p
, 
fuhome
, 
sheags
))

388 !
NULL
) {

392 i(
__dbv_vbo
)

393 
	`tf
("Shgnv ID %ld\n", 
w_p
->
_id
);

394 
yp
->
v_id
 = 
w_p
->
_id
;

395 
t
 = 
	`__v_o_t
(
dbv_id
, 0, 0);

397 
t
 = 
dbv
->
	`ݒ
(dbv, 
fuhome
->
home
, 
wags
, 
mode
);

398 
dbv_p
->
_vdp
.
home
 = 
fuhome
;

399 
dbv_p
->
_vdp
.
vags
 = 
sheags
;

401 
out
: 
yp
->
us
 = 
t
;

403 
	}
}

410 
	$__v_move_oc
(
dbv_id
, 
home
, 
ags
, 
yp
)

411 
u_t
 
dbv_id
;

412 *
home
;

413 
u_t32_t
 
ags
;

414 
__v_move_y
 *
yp
;

416 
DB_ENV
 *
dbv
;

417 
_y
 *
dbv_p
;

418 
t
;

419 
home_y
 *
fuhome
;

421 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

422 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

424 
fuhome
 = 
	`g_fuhome
(
home
);

425 i(
fuhome
 =
NULL
) {

426 
yp
->
us
 = 
DB_NOSERVER_HOME
;

430 
t
 = 
dbv
->
	`move
(dbv, 
fuhome
->
home
, 
ags
);

431 
	`__dbd_p
(
dbv_p
);

432 
yp
->
us
 = 
t
;

434 
	}
}

440 
	$__txn_abt_oc
(
tx_id
, 
yp
)

441 
u_t
 
tx_id
;

442 
__txn_abt_y
 *
yp
;

444 
DB_TXN
 *
tx
;

445 
_y
 *
tx_p
;

446 
t
;

448 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

449 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

451 
t
 = 
tx
->
	`abt
(txnp);

452 
	`__dbd_p
(
tx_p
);

453 
yp
->
us
 = 
t
;

455 
	}
}

462 
	$__v_txn_beg_oc
(
dbv_id
, 
_id
, 
ags
, 
yp
)

463 
u_t
 
dbv_id
;

464 
u_t
 
_id
;

465 
u_t32_t
 
ags
;

466 
__v_txn_beg_y
 *
yp
;

468 
DB_ENV
 *
dbv
;

469 
DB_TXN
 *

, *
tx
;

470 
_y
 *
p
, *
dbv_p
, *
_p
;

471 
t
;

473 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

474 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

475 
_p
 = 
NULL
;

477 
p
 = 
	`w__t
(&
yp
->
us
);

478 i(
p
 =
NULL
)

481 i(
_id
 != 0) {

482 
	`ACTIVATE_CTP
(
_p
, 
_id
, 
CT_TXN
);

483 

 = (
DB_TXN
 *)
_p
->
_yp
;

484 
p
->
_aiv
 = 
_p
->ct_activep;

486 

 = 
NULL
;

492 
t
 = 
dbv
->
	`txn_beg
(dbv, 

, &
tx
, 
ags
 | 
DB_TXN_NOWAIT
);

493 i(
t
 == 0) {

494 
p
->
_tx
 = 
tx
;

495 
p
->
_ty
 = 
CT_TXN
;

496 
p
->
_
 = 
_p
;

497 
p
->
_v
 = 
dbv_p
;

498 
yp
->
txnid_id
 = 
p
->
_id
;

499 
	`__dbv_imeout
(
p
, 
dbv_p
->
_timeout
);

500 
	`__dbv_aive
(
p
);

502 
	`__dbr_p
(
p
);

504 
yp
->
us
 = 
t
;

506 
	}
}

513 
	$__txn_comm_oc
(
tx_id
, 
ags
, 
yp
)

514 
u_t
 
tx_id
;

515 
u_t32_t
 
ags
;

516 
__txn_comm_y
 *
yp
;

518 
DB_TXN
 *
tx
;

519 
_y
 *
tx_p
;

520 
t
;

522 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

523 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

525 
t
 = 
tx
->
	`comm
x, 
ags
);

526 
	`__dbd_p
(
tx_p
);

528 
yp
->
us
 = 
t
;

530 
	}
}

537 
	$__txn_disrd_oc
(
tx_id
, 
ags
, 
yp
)

538 
u_t
 
tx_id
;

539 
u_t32_t
 
ags
;

540 
__txn_disrd_y
 *
yp
;

542 
DB_TXN
 *
tx
;

543 
_y
 *
tx_p
;

544 
t
;

546 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

547 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

549 
t
 = 
tx
->
	`disrd
x, 
ags
);

550 
	`__dbd_p
(
tx_p
);

552 
yp
->
us
 = 
t
;

554 
	}
}

561 
	$__txn_e_oc
(
tx_id
, 
gid
, 
yp
)

562 
u_t
 
tx_id
;

563 
u_t8_t
 *
gid
;

564 
__txn_e_y
 *
yp
;

566 
DB_TXN
 *
tx
;

567 
_y
 *
tx_p
;

568 
t
;

570 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

571 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

573 
t
 = 
tx
->
	`e
x, 
gid
);

574 
yp
->
us
 = 
t
;

576 
	}
}

583 
	$__v_txn_cov_oc
(
dbv_id
, 
cou
, 
ags
, 
yp
, 
p
)

584 
u_t
 
dbv_id
;

585 
u_t32_t
 
cou
;

586 
u_t32_t
 
ags
;

587 
__v_txn_cov_y
 *
yp
;

588 * 
p
;

590 
DB_ENV
 *
dbv
;

591 
DB_PREPLIST
 *
db
, *
p
;

592 
_y
 *
dbv_p
, *
p
;

593 
ri
, 
i
, 
tcou
;

594 
u_t32_t
 *
txnidp
;

595 
t
;

596 
u_t8_t
 *
gid
;

598 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

599 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

600 
db
 = 
NULL
;

601 *
p
 = 0;

603 i((
t
 =

604 
	`__os_mloc
(
dbv
, 
cou
 * (
DB_PREPLIST
), &
db
)) != 0)

605 
out
;

606 i((
t
 =

607 
dbv
->
	`txn_cov
(dbv, 
db
, 
cou
, &
tcou
, 
ags
)) != 0)

608 
out
;

612 
yp
->
tcou
 =etcount;

613 i(
tcou
 == 0) {

614 
yp
->
txn
.
txn_v
 = 
NULL
;

615 
yp
->
txn
.
txn_n
 = 0;

616 
yp
->
gid
.
gid_v
 = 
NULL
;

617 
yp
->
gid
.
gid_n
 = 0;

624 i((
t
 = 
	`__os_oc
(
dbv
, 
tcou
, (
u_t32_t
),

625 &
yp
->
txn
.
txn_v
)) != 0)

626 
out
;

627 
yp
->
txn
.
txn_n
 = 
tcou
 * (
u_t32_t
);

628 i((
t
 = 
	`__os_oc
(
dbv
, 
tcou
, 
DB_XIDDATASIZE
,

629 &
yp
->
gid
.
gid_v
)) != 0) {

630 
	`__os_
(
dbv
, 
yp
->
txn
.
txn_v
);

631 
out
;

633 
yp
->
gid
.
gid_n
 = 
tcou
 * 
DB_XIDDATASIZE
;

640 
i
 = 0;

641 
p
 = 
db
;

642 
gid
 = 
yp
->gid.
gid_v
;

643 
txnidp
 = 
yp
->
txn
.
txn_v
;

644 
i
++ < 
tcou
) {

645 
p
 = 
	`w__t
(&
t
);

646 i(
t
 != 0) {

647 
i
--;

648 
out2
;

650 
p
->
_tx
 = 
p
->
txn
;

651 
p
->
_ty
 = 
CT_TXN
;

652 
p
->
_
 = 
NULL
;

653 
p
->
_v
 = 
dbv_p
;

654 
	`__dbv_imeout
(
p
, 
dbv_p
->
_timeout
);

655 
	`__dbv_aive
(
p
);

657 *
txnidp
 = 
p
->
_id
;

658 
	`memy
(
gid
, 
p
->gid, 
DB_XIDDATASIZE
);

660 
p
++;

661 
txnidp
++;

662 
gid
 +
DB_XIDDATASIZE
;

668 *
p
 = 1;

669 
out
:

670 i(
db
 !
NULL
)

671 
	`__os_
(
dbv
, 
db
);

672 
yp
->
us
 = 
t
;

674 
out2
:

679 
txnidp
 = 
yp
->
txn
.
txn_v
, 
ri
 = 0;

680 
ri
 < 
i
;i++, 
txnidp
++) {

681 
p
 = 
	`g_b˒t
(*
txnidp
);

682 
	`__dbr_p
(
p
);

684 
	`__os_
(
dbv
, 
yp
->
txn
.
txn_v
);

685 
	`__os_
(
dbv
, 
yp
->
gid
.
gid_v
);

686 
	`__os_
(
dbv
, 
db
);

687 
yp
->
us
 = 
t
;

689 
	}
}

696 
	$__db_assoc_oc
(
dbp_id
, 
tx_id
, 
sdbp_id
, 
ags
, 
yp
)

697 
u_t
 
dbp_id
;

698 
u_t
 
tx_id
;

699 
u_t
 
sdbp_id
;

700 
u_t32_t
 
ags
;

701 
__db_assoc_y
 *
yp
;

703 
DB
 *
dbp
, *
sdbp
;

704 
DB_TXN
 *
tx
;

705 
_y
 *
dbp_p
, *
sdbp_p
, *
tx_p
;

706 
t
;

708 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

709 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

710 
	`ACTIVATE_CTP
(
sdbp_p
, 
sdbp_id
, 
CT_DB
);

711 
sdbp
 = (
DB
 *)
sdbp_p
->
_yp
;

712 i(
tx_id
 != 0) {

713 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

714 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

716 
tx
 = 
NULL
;

724 #ifde
CONFIG_TEST


725 i(
	`LF_ISSET
(
DB_RPC2ND_MASK
 | 
DB_CREATE
))

727 i(
	`LF_ISSET
(
DB_CREATE
))

729 
t
 = 
EINVAL
;

731 
t
 = 
dbp
->
	`assoc
(dbp, 
tx
, 
sdbp
, 
NULL
, 
ags
);

733 
yp
->
us
 = 
t
;

735 
	}
}

742 
	$__db_g_bt_mkey_oc
(
dbp_id
, 
yp
)

743 
u_t
 
dbp_id
;

744 
__db_g_bt_mkey_y
 *
yp
;

746 
DB
 *
dbp
;

747 
_y
 *
dbp_p
;

749 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

750 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

752 
yp
->
us
 = 
dbp
->
	`g_bt_mkey
(dbp, &yp->
mkey
);

753 
	}
}

760 
	$__db_t_bt_mkey_oc
(
dbp_id
, 
mkey
, 
yp
)

761 
u_t
 
dbp_id
;

762 
u_t32_t
 
mkey
;

763 
__db_t_bt_mkey_y
 *
yp
;

765 
DB
 *
dbp
;

766 
_y
 *
dbp_p
;

767 
t
;

769 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

770 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

772 
t
 = 
dbp
->
	`t_bt_mkey
(dbp, 
mkey
);

774 
yp
->
us
 = 
t
;

776 
	}
}

782 
	$__db_o_oc
(
dbp_id
, 
ags
, 
yp
)

783 
u_t
 
dbp_id
;

784 
u_t32_t
 
ags
;

785 
__db_o_y
 *
yp
;

787 
_y
 *
dbp_p
;

789 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

790 
yp
->
us
 = 
	`__db_o_t
(
dbp_id
, 
ags
);

792 
	}
}

798 
	$__db__oc
(
dbv_id
, 
ags
, 
yp
)

799 
u_t
 
dbv_id
;

800 
u_t32_t
 
ags
;

801 
__db__y
 *
yp
;

803 
DB
 *
dbp
;

804 
DB_ENV
 *
dbv
;

805 
_y
 *
dbv_p
, *
dbp_p
;

806 
t
;

808 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

809 
dbv
 = (
DB_ENV
 *)
dbv_p
->
_yp
;

811 
dbp_p
 = 
	`w__t
(&
yp
->
us
);

812 i(
dbp_p
 =
NULL
)

818 
	`DB_ASSERT
(
dbv
, dbv !
NULL
);

819 i((
t
 = 
	`db_
(&
dbp
, 
dbv
, 
ags
)) == 0) {

820 
dbp_p
->
_dbp
 = 
dbp
;

821 
dbp_p
->
_ty
 = 
CT_DB
;

822 
dbp_p
->
_
 = 
dbv_p
;

823 
dbp_p
->
_v
 = 
dbv_p
;

824 
yp
->
db_id
 = 
dbp_p
->
_id
;

826 
	`__dbr_p
(
dbp_p
);

827 
yp
->
us
 = 
t
;

829 
	}
}

837 
	$__db_d_oc
(
dbp_id
, 
tx_id
, 
keydn
, 
keydoff
, 
keyun
, 
keyags
,

838 
keyda
, 
keysize
, 
ags
, 
yp
)

839 
u_t
 
dbp_id
;

840 
u_t
 
tx_id
;

841 
u_t32_t
 
keydn
;

842 
u_t32_t
 
keydoff
;

843 
u_t32_t
 
keyun
;

844 
u_t32_t
 
keyags
;

845 *
keyda
;

846 
u_t32_t
 
keysize
;

847 
u_t32_t
 
ags
;

848 
__db_d_y
 *
yp
;

850 
DB
 *
dbp
;

851 
DBT
 
key
;

852 
DB_TXN
 *
tx
;

853 
_y
 *
dbp_p
, *
tx_p
;

854 
t
;

856 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

857 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

858 i(
tx_id
 != 0) {

859 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

860 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

862 
tx
 = 
NULL
;

864 
	`memt
(&
key
, 0, (key));

867 
key
.
dn
 = 
keydn
;

868 
key
.
un
 = 
keyun
;

869 
key
.
doff
 = 
keydoff
;

870 
key
.
ags
 = 
keyags
;

871 
key
.
size
 = 
keysize
;

872 
key
.
da
 = 
keyda
;

874 
t
 = 
dbp
->
	`d
(dbp, 
tx
, &
key
, 
ags
);

876 
yp
->
us
 = 
t
;

878 
	}
}

885 
	$__db_g_y_ags_oc
(
dbp_id
, 
yp
)

886 
u_t
 
dbp_id
;

887 
__db_g_y_ags_y
 *
yp
;

889 
DB
 *
dbp
;

890 
_y
 *
dbp_p
;

892 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

893 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

895 
yp
->
us
 = 
dbp
->
	`g_y_ags
(dbp, &yp->
ags
);

896 
	}
}

903 
	$__db_t_y_oc
(
dbp_id
, 
sswd
, 
ags
, 
yp
)

904 
u_t
 
dbp_id
;

905 *
sswd
;

906 
u_t32_t
 
ags
;

907 
__db_t_y_y
 *
yp
;

909 
t
;

910 
DB
 * 
dbp
;

911 
_y
 *
dbp_p
;

913 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

914 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

916 
t
 = 
dbp
->
	`t_y
(dbp, 
sswd
, 
ags
);

917 
yp
->
us
 = 
t
;

919 
	}
}

926 
	$__db_g_q_exsize_oc
(
dbp_id
, 
yp
)

927 
u_t
 
dbp_id
;

928 
__db_g_q_exsize_y
 *
yp
;

930 
DB
 *
dbp
;

931 
_y
 *
dbp_p
;

933 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

934 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

936 
yp
->
us
 = 
dbp
->
	`g_q_exsize
(dbp, &yp->
exsize
);

937 
	}
}

944 
	$__db_t_q_exsize_oc
(
dbp_id
, 
exsize
, 
yp
)

945 
u_t
 
dbp_id
;

946 
u_t32_t
 
exsize
;

947 
__db_t_q_exsize_y
 *
yp
;

949 
DB
 *
dbp
;

950 
_y
 *
dbp_p
;

951 
t
;

953 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

954 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

956 
t
 = 
dbp
->
	`t_q_exsize
(dbp, 
exsize
);

958 
yp
->
us
 = 
t
;

960 
	}
}

966 
	$__db_g_ags_oc
(
dbp_id
, 
yp
)

967 
u_t
 
dbp_id
;

968 
__db_g_ags_y
 *
yp
;

970 
DB
 *
dbp
;

971 
_y
 *
dbp_p
;

973 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

974 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

976 
yp
->
us
 = 
dbp
->
	`g_ags
(dbp, &yp->
ags
);

977 
	}
}

984 
	$__db_t_ags_oc
(
dbp_id
, 
ags
, 
yp
)

985 
u_t
 
dbp_id
;

986 
u_t32_t
 
ags
;

987 
__db_t_ags_y
 *
yp
;

989 
DB
 *
dbp
;

990 
_y
 *
dbp_p
;

991 
t
;

993 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

994 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

996 
t
 = 
dbp
->
	`t_ags
(dbp, 
ags
);

997 
dbp_p
->
_dbdp
.
tags
 |
ags
;

999 
yp
->
us
 = 
t
;

1001 
	}
}

1010 
	$__db_g_oc
(
dbp_id
, 
tx_id
, 
keydn
, 
keydoff
, 
keyun
, 
keyags
,

1011 
keyda
, 
keysize
, 
dadn
, 
dadoff
, 
daun
, 
daags
, 
dada
,

1012 
dasize
, 
ags
, 
yp
, 
p
)

1013 
u_t
 
dbp_id
;

1014 
u_t
 
tx_id
;

1015 
u_t32_t
 
keydn
;

1016 
u_t32_t
 
keydoff
;

1017 
u_t32_t
 
keyun
;

1018 
u_t32_t
 
keyags
;

1019 *
keyda
;

1020 
u_t32_t
 
keysize
;

1021 
u_t32_t
 
dadn
;

1022 
u_t32_t
 
dadoff
;

1023 
u_t32_t
 
daun
;

1024 
u_t32_t
 
daags
;

1025 *
dada
;

1026 
u_t32_t
 
dasize
;

1027 
u_t32_t
 
ags
;

1028 
__db_g_y
 *
yp
;

1029 * 
p
;

1031 
DB
 *
dbp
;

1032 
DBT
 
key
, 
da
;

1033 
DB_TXN
 *
tx
;

1034 
_y
 *
dbp_p
, *
tx_p
;

1035 
t
;

1037 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1038 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1039 i(
tx_id
 != 0) {

1040 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1041 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

1043 
tx
 = 
NULL
;

1045 
yp
->
keyda
.
keyda_v
 = 
NULL
;

1046 
yp
->
dada
.
dada_v
 = 
NULL
;

1047 *
p
 = 0;

1048 
	`memt
(&
key
, 0, (key));

1049 
	`memt
(&
da
, 0, (data));

1052 
key
.
dn
 = 
keydn
;

1053 
key
.
doff
 = 
keydoff
;

1057 
key
.
ags
 = 
DB_DBT_MALLOC
;

1058 i(
keyags
 & 
DB_DBT_PARTIAL
)

1059 
key
.
ags
 |
DB_DBT_PARTIAL
;

1060 
key
.
size
 = 
keysize
;

1061 
key
.
un
 = 
keyun
;

1062 
key
.
da
 = 
keyda
;

1064 
da
.
dn
 = 
dadn
;

1065 
da
.
doff
 = 
dadoff
;

1066 
da
.
un
 = 
daun
;

1070 
da
.
size
 = 
dasize
;

1071 
da
.d
dada
;

1072 i(
ags
 & 
DB_MULTIPLE
) {

1073 i(
da
.data == 0) {

1074 
t
 = 
	`__os_umloc
(
dbp
->
dbv
,

1075 
da
.
un
, &data.data);

1076 i(
t
 != 0)

1077 
r
;

1079 
da
.
ags
 |
DB_DBT_USERMEM
;

1081 
da
.
ags
 |
DB_DBT_MALLOC
;

1082 i(
daags
 & 
DB_DBT_PARTIAL
)

1083 
da
.
ags
 |
DB_DBT_PARTIAL
;

1086 
t
 = 
dbp
->
	`g
(dbp, 
tx
, &
key
, &
da
, 
ags
);

1090 i(
t
 == 0) {

1099 *
p
 = 1;

1103 i(
key
.
da
 =
keyda
) {

1104 
t
 = 
	`__os_umloc
(
dbp
->
dbv
,

1105 
key
.
size
, &
yp
->
keyda
.
keyda_v
);

1106 i(
t
 != 0)

1107 
r
;

1108 
	`memy
(
yp
->
keyda
.
keyda_v
, 
key
.
da
, key.
size
);

1110 
yp
->
keyda
.
keyda_v
 = 
key
.
da
;

1112 
yp
->
keyda
.
keyda_n
 = 
key
.
size
;

1117 i(
da
.d=
dada
) {

1118 
t
 = 
	`__os_umloc
(
dbp
->
dbv
,

1119 
da
.
size
, &
yp
->
dada
.
dada_v
);

1120 i(
t
 != 0)

1121 
r
;

1122 
	`memy
(
yp
->
dada
.
dada_v
, 
da
.data,

1123 
da
.
size
);

1125 
yp
->
dada
.
dada_v
 = 
da
.data;

1126 
yp
->
dada
.
dada_n
 = 
da
.
size
;

1128 
r
: 
	`FREE_IF_CHANGED
(
dbp
->
dbv
, 
key
.
da
, 
keyda
);

1129 
	`FREE_IF_CHANGED
(
dbp
->
dbv
, 
da
.da, 
dada
);

1130 
	`FREE_IF_CHANGED
(
dbp
->
dbv
,

1131 
yp
->
keyda
.
keyda_v
, 
key
.
da
);

1132 
	`FREE_IF_CHANGED
(
dbp
->
dbv
,

1133 
yp
->
dada
.
dada_v
, 
da
.data);

1134 
yp
->
keyda
.
keyda_v
 = 
NULL
;

1135 
yp
->
keyda
.
keyda_n
 = 0;

1136 
yp
->
dada
.
dada_v
 = 
NULL
;

1137 
yp
->
dada
.
dada_n
 = 0;

1138 *
p
 = 0;

1140 
yp
->
us
 = 
t
;

1142 
	}
}

1149 
	$__db_g_h_f_oc
(
dbp_id
, 
yp
)

1150 
u_t
 
dbp_id
;

1151 
__db_g_h_f_y
 *
yp
;

1153 
DB
 *
dbp
;

1154 
_y
 *
dbp_p
;

1156 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1157 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1159 
yp
->
us
 = 
dbp
->
	`g_h_f
(dbp, &yp->
f
);

1160 
	}
}

1167 
	$__db_t_h_f_oc
(
dbp_id
, 
f
, 
yp
)

1168 
u_t
 
dbp_id
;

1169 
u_t32_t
 
f
;

1170 
__db_t_h_f_y
 *
yp
;

1172 
DB
 *
dbp
;

1173 
_y
 *
dbp_p
;

1174 
t
;

1176 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1177 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1179 
t
 = 
dbp
->
	`t_h_f
(dbp, 
f
);

1181 
yp
->
us
 = 
t
;

1183 
	}
}

1189 
	$__db_g_h_m_oc
(
dbp_id
, 
yp
)

1190 
u_t
 
dbp_id
;

1191 
__db_g_h_m_y
 *
yp
;

1193 
DB
 *
dbp
;

1194 
_y
 *
dbp_p
;

1196 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1197 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1199 
yp
->
us
 = 
dbp
->
	`g_h_m
(dbp, &yp->
m
);

1200 
	}
}

1207 
	$__db_t_h_m_oc
(
dbp_id
, 
m
, 
yp
)

1208 
u_t
 
dbp_id
;

1209 
u_t32_t
 
m
;

1210 
__db_t_h_m_y
 *
yp
;

1212 
DB
 *
dbp
;

1213 
_y
 *
dbp_p
;

1214 
t
;

1216 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1217 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1219 
t
 = 
dbp
->
	`t_h_m
(dbp, 
m
);

1221 
yp
->
us
 = 
t
;

1223 
	}
}

1231 
	$__db_key_nge_oc
(
dbp_id
, 
tx_id
, 
keydn
, 
keydoff
, 
keyun
,

1232 
keyags
, 
keyda
, 
keysize
, 
ags
, 
yp
)

1233 
u_t
 
dbp_id
;

1234 
u_t
 
tx_id
;

1235 
u_t32_t
 
keydn
;

1236 
u_t32_t
 
keydoff
;

1237 
u_t32_t
 
keyun
;

1238 
u_t32_t
 
keyags
;

1239 *
keyda
;

1240 
u_t32_t
 
keysize
;

1241 
u_t32_t
 
ags
;

1242 
__db_key_nge_y
 *
yp
;

1244 
DB
 *
dbp
;

1245 
DBT
 
key
;

1246 
DB_KEY_RANGE
 
nge
;

1247 
DB_TXN
 *
tx
;

1248 
_y
 *
dbp_p
, *
tx_p
;

1249 
t
;

1251 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1252 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1253 i(
tx_id
 != 0) {

1254 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1255 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

1257 
tx
 = 
NULL
;

1259 
	`memt
(&
key
, 0, (key));

1261 
key
.
dn
 = 
keydn
;

1262 
key
.
un
 = 
keyun
;

1263 
key
.
doff
 = 
keydoff
;

1264 
key
.
size
 = 
keysize
;

1265 
key
.
da
 = 
keyda
;

1266 
key
.
ags
 = 
keyags
;

1268 
t
 = 
dbp
->
	`key_nge
(dbp, 
tx
, &
key
, &
nge
, 
ags
);

1270 
yp
->
us
 = 
t
;

1271 
yp
->
ss
 = 
nge
.less;

1272 
yp
->
equ
 = 
nge
.equal;

1273 
yp
->
g
 = 
nge
.greater;

1275 
	}
}

1281 
	$__db_g_ld_oc
(
dbp_id
, 
yp
)

1282 
u_t
 
dbp_id
;

1283 
__db_g_ld_y
 *
yp
;

1285 
DB
 *
dbp
;

1286 
_y
 *
dbp_p
;

1288 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1289 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1291 
yp
->
us
 = 
dbp
->
	`g_ld
(dbp, (*)&yp->
ld
);

1292 
	}
}

1299 
	$__db_t_ld_oc
(
dbp_id
, 
ld
, 
yp
)

1300 
u_t
 
dbp_id
;

1301 
u_t32_t
 
ld
;

1302 
__db_t_ld_y
 *
yp
;

1304 
DB
 *
dbp
;

1305 
_y
 *
dbp_p
;

1306 
t
;

1308 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1309 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1311 
t
 = 
dbp
->
	`t_ld
(dbp, 
ld
);

1313 
yp
->
us
 = 
t
;

1315 
	}
}

1321 
	$__db_g_dbme_oc
(
dbp_id
, 
yp
)

1322 
u_t
 
dbp_id
;

1323 
__db_g_dbme_y
 *
yp
;

1325 
DB
 *
dbp
;

1326 
_y
 *
dbp_p
;

1328 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1329 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1331 
yp
->
us
 = 
dbp
->
	`g_dbme
(dbp,

1332 (cڡ **)&
yp
->
fame
, (cڡ **)&yp->
dbme
);

1333 
	}
}

1340 
	$__db_g_ݒ_ags_oc
(
dbp_id
, 
yp
)

1341 
u_t
 
dbp_id
;

1342 
__db_g_ݒ_ags_y
 *
yp
;

1344 
DB
 *
dbp
;

1345 
_y
 *
dbp_p
;

1347 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1348 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1350 
yp
->
us
 = 
dbp
->
	`g_ݒ_ags
(dbp, &yp->
ags
);

1351 
	}
}

1358 
	$__db_ݒ_oc
(
dbp_id
, 
tx_id
, 
me
, 
subdb
, 
ty
, 
ags
, 
mode
, 
yp
)

1359 
u_t
 
dbp_id
;

1360 
u_t
 
tx_id
;

1361 *
me
;

1362 *
subdb
;

1363 
u_t32_t
 
ty
;

1364 
u_t32_t
 
ags
;

1365 
u_t32_t
 
mode
;

1366 
__db_ݒ_y
 *
yp
;

1368 
DB
 *
dbp
;

1369 
DB_TXN
 *
tx
;

1370 
DBTYPE
 
dbty
;

1371 
_y
 *
dbp_p
, *
w_p
, *
tx_p
;

1372 
isswd
, 
t
;

1374 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1375 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1377 i(
tx_id
 != 0) {

1378 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1379 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

1381 
tx
 = 
NULL
;

1383 
yp
->
db_id
 = 
dbp_id
;

1384 i((
w_p
 = 
	`__dbv_shedb
(
dbp_p
, 
me
, 
subdb
, 
ty
, 
ags
))

1385 !
NULL
) {

1389 i(
__dbv_vbo
)

1390 
	`tf
("Shg db ID %ld\n", 
w_p
->
_id
);

1391 
yp
->
db_id
 = 
w_p
->
_id
;

1392 
t
 = 
	`__db_o_t
(
dbp_id
, 0);

1393 
out
;

1395 
t
 = 
dbp
->
	`ݒ
(dbp, 
tx
, 
me
, 
subdb
, (
DBTYPE
)
ty
, 
ags
, 
mode
);

1396 i(
t
 == 0) {

1397 ()
dbp
->
	`g_ty
(dbp, &
dbty
);

1398 
yp
->
ty
 = 
dbty
;

1405 ()
dbp
->
	`g_byswd
(dbp, &
isswd
);

1406 i(
	`__db_byd
(
NULL
, 1234) == 0) {

1407 i(
isswd
 == 0)

1408 
yp
->
ld
 = 1234;

1410 
yp
->
ld
 = 4321;

1412 i(
isswd
 == 0)

1413 
yp
->
ld
 = 4321;

1415 
yp
->
ld
 = 1234;

1417 
dbp_p
->
_dbdp
.
ty
 = 
dbty
;

1418 
dbp_p
->
_dbdp
.
dbags
 = 
	`LF_ISSET
(
DB_SERVER_DBFLAGS
);

1419 i(
me
 =
NULL
)

1420 
dbp_p
->
_dbdp
.
db
 = 
NULL
;

1421 i((
t
 = 
	`__os_rdup
(
dbp
->
dbv
, 
me
,

1422 &
dbp_p
->
_dbdp
.
db
)) != 0)

1423 
out
;

1424 i(
subdb
 =
NULL
)

1425 
dbp_p
->
_dbdp
.
subdb
 = 
NULL
;

1426 i((
t
 = 
	`__os_rdup
(
dbp
->
dbv
, 
subdb
,

1427 &
dbp_p
->
_dbdp
.
subdb
)) != 0)

1428 
out
;

1430 
out
:

1431 
yp
->
us
 = 
t
;

1433 
	}
}

1439 
	$__db_g_gesize_oc
(
dbp_id
, 
yp
)

1440 
u_t
 
dbp_id
;

1441 
__db_g_gesize_y
 *
yp
;

1443 
DB
 *
dbp
;

1444 
_y
 *
dbp_p
;

1446 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1447 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1449 
yp
->
us
 = 
dbp
->
	`g_gesize
(dbp, &yp->
gesize
);

1450 
	}
}

1457 
	$__db_t_gesize_oc
(
dbp_id
, 
gesize
, 
yp
)

1458 
u_t
 
dbp_id
;

1459 
u_t32_t
 
gesize
;

1460 
__db_t_gesize_y
 *
yp
;

1462 
DB
 *
dbp
;

1463 
_y
 *
dbp_p
;

1464 
t
;

1466 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1467 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1469 
t
 = 
dbp
->
	`t_gesize
(dbp, 
gesize
);

1471 
yp
->
us
 = 
t
;

1473 
	}
}

1483 
	$__db_pg_oc
(
dbp_id
, 
tx_id
, 
skeydn
, 
skeydoff
, 
skeyun
,

1484 
skeyags
, 
skeyda
, 
skeysize
, 
pkeydn
, 
pkeydoff
, 
pkeyun
, 
pkeyags
,

1485 
pkeyda
, 
pkeysize
, 
dadn
, 
dadoff
, 
daun
, 
daags
, 
dada
,

1486 
dasize
, 
ags
, 
yp
, 
p
)

1487 
u_t
 
dbp_id
;

1488 
u_t
 
tx_id
;

1489 
u_t32_t
 
skeydn
;

1490 
u_t32_t
 
skeydoff
;

1491 
u_t32_t
 
skeyun
;

1492 
u_t32_t
 
skeyags
;

1493 *
skeyda
;

1494 
u_t32_t
 
skeysize
;

1495 
u_t32_t
 
pkeydn
;

1496 
u_t32_t
 
pkeydoff
;

1497 
u_t32_t
 
pkeyun
;

1498 
u_t32_t
 
pkeyags
;

1499 *
pkeyda
;

1500 
u_t32_t
 
pkeysize
;

1501 
u_t32_t
 
dadn
;

1502 
u_t32_t
 
dadoff
;

1503 
u_t32_t
 
daun
;

1504 
u_t32_t
 
daags
;

1505 *
dada
;

1506 
u_t32_t
 
dasize
;

1507 
u_t32_t
 
ags
;

1508 
__db_pg_y
 *
yp
;

1509 * 
p
;

1511 
DB
 *
dbp
;

1512 
DBT
 
skey
, 
pkey
, 
da
;

1513 
DB_TXN
 *
tx
;

1514 
_y
 *
dbp_p
, *
tx_p
;

1515 
t
;

1517 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1518 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1519 i(
tx_id
 != 0) {

1520 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1521 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

1523 
tx
 = 
NULL
;

1525 
yp
->
skeyda
.
skeyda_v
 = 
NULL
;

1526 
yp
->
pkeyda
.
pkeyda_v
 = 
NULL
;

1527 
yp
->
dada
.
dada_v
 = 
NULL
;

1528 *
p
 = 0;

1529 
	`memt
(&
skey
, 0, (skey));

1530 
	`memt
(&
pkey
, 0, (pkey));

1531 
	`memt
(&
da
, 0, (data));

1537 
skey
.
ags
 = 
DB_DBT_MALLOC
;

1538 
skey
.
dn
 = 
skeydn
;

1539 
skey
.
un
 = 
skeyun
;

1540 
skey
.
doff
 = 
skeydoff
;

1541 i(
skeyags
 & 
DB_DBT_PARTIAL
)

1542 
skey
.
ags
 |
DB_DBT_PARTIAL
;

1543 
skey
.
size
 = 
skeysize
;

1544 
skey
.
da
 = 
skeyda
;

1546 
pkey
.
ags
 = 
DB_DBT_MALLOC
;

1547 
pkey
.
dn
 = 
pkeydn
;

1548 
pkey
.
un
 = 
pkeyun
;

1549 
pkey
.
doff
 = 
pkeydoff
;

1550 i(
pkeyags
 & 
DB_DBT_PARTIAL
)

1551 
pkey
.
ags
 |
DB_DBT_PARTIAL
;

1552 
pkey
.
size
 = 
pkeysize
;

1553 
pkey
.
da
 = 
pkeyda
;

1555 
da
.
ags
 = 
DB_DBT_MALLOC
;

1556 
da
.
dn
 = 
dadn
;

1557 
da
.
un
 = 
daun
;

1558 
da
.
doff
 = 
dadoff
;

1559 i(
daags
 & 
DB_DBT_PARTIAL
)

1560 
da
.
ags
 |
DB_DBT_PARTIAL
;

1561 
da
.
size
 = 
dasize
;

1562 
da
.d
dada
;

1565 
t
 = 
dbp
->
	`pg
(dbp, 
tx
, &
skey
, &
pkey
, &
da
, 
ags
);

1569 i(
t
 == 0) {

1578 *
p
 = 1;

1582 i(
skey
.
da
 =
skeyda
) {

1583 
t
 = 
	`__os_umloc
(
dbp
->
dbv
,

1584 
skey
.
size
, &
yp
->
skeyda
.
skeyda_v
);

1585 i(
t
 != 0)

1586 
r
;

1587 
	`memy
(
yp
->
skeyda
.
skeyda_v
, 
skey
.
da
,

1588 
skey
.
size
);

1590 
yp
->
skeyda
.
skeyda_v
 = 
skey
.
da
;

1592 
yp
->
skeyda
.
skeyda_n
 = 
skey
.
size
;

1597 i(
pkey
.
da
 =
pkeyda
) {

1598 
t
 = 
	`__os_umloc
(
dbp
->
dbv
,

1599 
pkey
.
size
, &
yp
->
pkeyda
.
pkeyda_v
);

1600 i(
t
 != 0)

1601 
r
;

1608 
	`memy
(
yp
->
pkeyda
.
pkeyda_v
, 
pkey
.
da
,

1609 
pkey
.
size
);

1611 
yp
->
pkeyda
.
pkeyda_v
 = 
pkey
.
da
;

1612 
yp
->
pkeyda
.
pkeyda_n
 = 
pkey
.
size
;

1617 i(
da
.d=
dada
) {

1618 
t
 = 
	`__os_umloc
(
dbp
->
dbv
,

1619 
da
.
size
, &
yp
->
dada
.
dada_v
);

1620 i(
t
 != 0)

1621 
r
;

1622 
	`memy
(
yp
->
dada
.
dada_v
, 
da
.data,

1623 
da
.
size
);

1625 
yp
->
dada
.
dada_v
 = 
da
.data;

1626 
yp
->
dada
.
dada_n
 = 
da
.
size
;

1628 
r
: 
	`FREE_IF_CHANGED
(
dbp
->
dbv
, 
skey
.
da
, 
skeyda
);

1629 
	`FREE_IF_CHANGED
(
dbp
->
dbv
, 
pkey
.
da
, 
pkeyda
);

1630 
	`FREE_IF_CHANGED
(
dbp
->
dbv
, 
da
.da, 
dada
);

1631 
	`FREE_IF_CHANGED
(
dbp
->
dbv
,

1632 
yp
->
skeyda
.
skeyda_v
, 
skey
.
da
);

1633 
	`FREE_IF_CHANGED
(
dbp
->
dbv
,

1634 
yp
->
pkeyda
.
pkeyda_v
, 
pkey
.
da
);

1635 
	`FREE_IF_CHANGED
(
dbp
->
dbv
,

1636 
yp
->
dada
.
dada_v
, 
da
.data);

1637 
yp
->
skeyda
.
skeyda_v
 = 
NULL
;

1638 
yp
->
skeyda
.
skeyda_n
 = 0;

1639 
yp
->
pkeyda
.
pkeyda_v
 = 
NULL
;

1640 
yp
->
pkeyda
.
pkeyda_n
 = 0;

1641 
yp
->
dada
.
dada_v
 = 
NULL
;

1642 
yp
->
dada
.
dada_n
 = 0;

1643 *
p
 = 0;

1645 
yp
->
us
 = 
t
;

1647 
	}
}

1656 
	$__db_put_oc
(
dbp_id
, 
tx_id
, 
keydn
, 
keydoff
, 
keyun
, 
keyags
,

1657 
keyda
, 
keysize
, 
dadn
, 
dadoff
, 
daun
, 
daags
, 
dada
,

1658 
dasize
, 
ags
, 
yp
, 
p
)

1659 
u_t
 
dbp_id
;

1660 
u_t
 
tx_id
;

1661 
u_t32_t
 
keydn
;

1662 
u_t32_t
 
keydoff
;

1663 
u_t32_t
 
keyun
;

1664 
u_t32_t
 
keyags
;

1665 *
keyda
;

1666 
u_t32_t
 
keysize
;

1667 
u_t32_t
 
dadn
;

1668 
u_t32_t
 
dadoff
;

1669 
u_t32_t
 
daun
;

1670 
u_t32_t
 
daags
;

1671 *
dada
;

1672 
u_t32_t
 
dasize
;

1673 
u_t32_t
 
ags
;

1674 
__db_put_y
 *
yp
;

1675 * 
p
;

1677 
DB
 *
dbp
;

1678 
DBT
 
key
, 
da
;

1679 
DB_TXN
 *
tx
;

1680 
_y
 *
dbp_p
, *
tx_p
;

1681 
t
;

1683 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1684 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1685 i(
tx_id
 != 0) {

1686 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1687 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

1689 
tx
 = 
NULL
;

1691 
yp
->
keyda
.
keyda_v
 = 
NULL
;

1692 *
p
 = 0;

1693 
	`memt
(&
key
, 0, (key));

1694 
	`memt
(&
da
, 0, (data));

1697 
key
.
dn
 = 
keydn
;

1698 
key
.
un
 = 
keyun
;

1699 
key
.
doff
 = 
keydoff
;

1703 
key
.
ags
 = 
DB_DBT_MALLOC
;

1704 i(
keyags
 & 
DB_DBT_PARTIAL
)

1705 
key
.
ags
 |
DB_DBT_PARTIAL
;

1706 
key
.
size
 = 
keysize
;

1707 
key
.
da
 = 
keyda
;

1709 
da
.
dn
 = 
dadn
;

1710 
da
.
un
 = 
daun
;

1711 
da
.
doff
 = 
dadoff
;

1712 
da
.
ags
 = 
daags
;

1713 
da
.
size
 = 
dasize
;

1714 
da
.d
dada
;

1717 
t
 = 
dbp
->
	`put
(dbp, 
tx
, &
key
, &
da
, 
ags
);

1722 i(
t
 =0 && (
ags
 =
DB_APPEND
)) {

1731 *
p
 = 1;

1735 i(
key
.
da
 =
keyda
) {

1736 
t
 = 
	`__os_umloc
(
dbp
->
dbv
,

1737 
key
.
size
, &
yp
->
keyda
.
keyda_v
);

1738 i(
t
 != 0)

1739 
r
;

1740 
	`memy
(
yp
->
keyda
.
keyda_v
, 
key
.
da
, key.
size
);

1742 
yp
->
keyda
.
keyda_v
 = 
key
.
da
;

1744 
yp
->
keyda
.
keyda_n
 = 
key
.
size
;

1746 
r
: 
	`FREE_IF_CHANGED
(
dbp
->
dbv
, 
key
.
da
, 
keyda
);

1747 
	`FREE_IF_CHANGED
(
dbp
->
dbv
,

1748 
yp
->
keyda
.
keyda_v
, 
key
.
da
);

1749 
yp
->
keyda
.
keyda_v
 = 
NULL
;

1750 
yp
->
keyda
.
keyda_n
 = 0;

1751 *
p
 = 0;

1753 
yp
->
us
 = 
t
;

1755 
	}
}

1761 
	$__db_g_iܙy_oc
(
dbp_id
, 
yp
)

1762 
u_t
 
dbp_id
;

1763 
__db_g_iܙy_y
 *
yp
;

1765 
DB
 *
dbp
;

1766 
_y
 *
dbp_p
;

1768 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1769 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1771 
yp
->
us
 =

1772 
dbp
->
	`g_iܙy
(dbp, (
DB_CACHE_PRIORITY
 *)&
yp
->
iܙy
);

1773 
	}
}

1780 
	$__db_t_iܙy_oc
(
dbp_id
, 
iܙy
, 
yp
)

1781 
u_t
 
dbp_id
;

1782 
u_t32_t
 
iܙy
;

1783 
__db_t_iܙy_y
 *
yp
;

1785 
DB
 *
dbp
;

1786 
_y
 *
dbp_p
;

1787 
t
;

1789 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1790 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1792 
t
 = 
dbp
->
	`t_iܙy
(dbp, (
DB_CACHE_PRIORITY
)
iܙy
);

1794 
yp
->
us
 = 
t
;

1796 
	}
}

1802 
	$__db_g__dim_oc
(
dbp_id
, 
yp
)

1803 
u_t
 
dbp_id
;

1804 
__db_g__dim_y
 *
yp
;

1806 
DB
 *
dbp
;

1807 
_y
 *
dbp_p
;

1809 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1810 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1812 
yp
->
us
 = 
dbp
->
	`g__dim
(dbp, (*)&yp->
dim
);

1813 
	}
}

1820 
	$__db_t__dim_oc
(
dbp_id
, 
dim
, 
yp
)

1821 
u_t
 
dbp_id
;

1822 
u_t32_t
 
dim
;

1823 
__db_t__dim_y
 *
yp
;

1825 
DB
 *
dbp
;

1826 
_y
 *
dbp_p
;

1827 
t
;

1829 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1830 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1832 
t
 = 
dbp
->
	`t__dim
(dbp, 
dim
);

1834 
yp
->
us
 = 
t
;

1836 
	}
}

1842 
	$__db_g__n_oc
(
dbp_id
, 
yp
)

1843 
u_t
 
dbp_id
;

1844 
__db_g__n_y
 *
yp
;

1846 
DB
 *
dbp
;

1847 
_y
 *
dbp_p
;

1849 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1850 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1852 
yp
->
us
 = 
dbp
->
	`g__n
(dbp, &yp->
n
);

1853 
	}
}

1860 
	$__db_t__n_oc
(
dbp_id
, 
n
, 
yp
)

1861 
u_t
 
dbp_id
;

1862 
u_t32_t
 
n
;

1863 
__db_t__n_y
 *
yp
;

1865 
DB
 *
dbp
;

1866 
_y
 *
dbp_p
;

1867 
t
;

1869 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1870 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1872 
t
 = 
dbp
->
	`t__n
(dbp, 
n
);

1874 
yp
->
us
 = 
t
;

1876 
	}
}

1882 
	$__db_g__d_oc
(
dbp_id
, 
yp
)

1883 
u_t
 
dbp_id
;

1884 
__db_g__d_y
 *
yp
;

1886 
DB
 *
dbp
;

1887 
_y
 *
dbp_p
;

1889 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1890 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1892 
yp
->
us
 = 
dbp
->
	`g__d
(dbp, (*)&yp->
d
);

1893 
	}
}

1900 
	$__db_t__d_oc
(
dbp_id
, 
d
, 
yp
)

1901 
u_t
 
dbp_id
;

1902 
u_t32_t
 
d
;

1903 
__db_t__d_y
 *
yp
;

1905 
DB
 *
dbp
;

1906 
_y
 *
dbp_p
;

1907 
t
;

1909 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1910 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1912 
t
 = 
dbp
->
	`t__d
(dbp, 
d
);

1914 
yp
->
us
 = 
t
;

1916 
	}
}

1923 
	$__db_move_oc
(
dbp_id
, 
me
, 
subdb
, 
ags
, 
yp
)

1924 
u_t
 
dbp_id
;

1925 *
me
;

1926 *
subdb
;

1927 
u_t32_t
 
ags
;

1928 
__db_move_y
 *
yp
;

1930 
DB
 *
dbp
;

1931 
_y
 *
dbp_p
;

1932 
t
;

1934 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1935 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1937 
t
 = 
dbp
->
	`move
(dbp, 
me
, 
subdb
, 
ags
);

1938 
	`__dbd_p
(
dbp_p
);

1940 
yp
->
us
 = 
t
;

1942 
	}
}

1949 
	$__db_me_oc
(
dbp_id
, 
me
, 
subdb
, 
wme
, 
ags
, 
yp
)

1950 
u_t
 
dbp_id
;

1951 *
me
;

1952 *
subdb
;

1953 *
wme
;

1954 
u_t32_t
 
ags
;

1955 
__db_me_y
 *
yp
;

1957 
DB
 *
dbp
;

1958 
_y
 *
dbp_p
;

1959 
t
;

1961 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1962 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1964 
t
 = 
dbp
->
	`me
(dbp, 
me
, 
subdb
, 
wme
, 
ags
);

1965 
	`__dbd_p
(
dbp_p
);

1967 
yp
->
us
 = 
t
;

1969 
	}
}

1976 
	$__db__oc
(
dbp_id
, 
tx_id
, 
ags
, 
yp
, 
p
)

1977 
u_t
 
dbp_id
;

1978 
u_t
 
tx_id
;

1979 
u_t32_t
 
ags
;

1980 
__db__y
 *
yp
;

1981 * 
p
;

1983 
DB
 *
dbp
;

1984 
DB_TXN
 *
tx
;

1985 
DBTYPE
 
ty
;

1986 
_y
 *
dbp_p
, *
tx_p
;

1987 
u_t32_t
 *
q
, *
p
, *
t
;

1988 
i
, 
n
, 
t
;

1989 *

;

1991 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1992 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

1993 i(
tx_id
 != 0) {

1994 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1995 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

1997 
tx
 = 
NULL
;

1999 
t
 = 
dbp
->
	`
(dbp, 
tx
, &

, 
ags
);

2000 
yp
->
us
 = 
t
;

2001 i(
t
 != 0)

2012 ()
dbp
->
	`g_ty
(dbp, &
ty
);

2013 i(
ty
 =
DB_HASH
)

2014 
n
 = (
DB_HASH_STAT
);

2015 i(
ty
 =
DB_QUEUE
)

2016 
n
 = (
DB_QUEUE_STAT
);

2018 
n
 = (
DB_BTREE_STAT
);

2019 
yp
->
s
.
s_n
 = 
n
 / (
u_t32_t
);

2021 i((
t
 = 
	`__os_umloc
(
dbp
->
dbv
, 
n
 * 
yp
->
s
.
s_n
,

2022 &
t
)) != 0)

2023 
out
;

2024 
i
 = 0, 
q
 = 
t
, 
p
 = 

; i < 
n
;

2025 
i
++, 
q
++, 
p
++)

2026 *
q
 = *
p
;

2027 
yp
->
s
.
s_v
 = 
t
;

2028 
	`__os_u
(
dbp
->
dbv
, 

);

2029 i(
t
 == 0)

2030 *
p
 = 1;

2031 
out
:

2032 
yp
->
us
 = 
t
;

2034 
	}
}

2040 
	$__db_sync_oc
(
dbp_id
, 
ags
, 
yp
)

2041 
u_t
 
dbp_id
;

2042 
u_t32_t
 
ags
;

2043 
__db_sync_y
 *
yp
;

2045 
DB
 *
dbp
;

2046 
_y
 *
dbp_p
;

2047 
t
;

2049 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

2050 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

2052 
t
 = 
dbp
->
	`sync
(dbp, 
ags
);

2054 
yp
->
us
 = 
t
;

2056 
	}
}

2063 
	$__db_un_oc
(
dbp_id
, 
tx_id
, 
ags
, 
yp
)

2064 
u_t
 
dbp_id
;

2065 
u_t
 
tx_id
;

2066 
u_t32_t
 
ags
;

2067 
__db_un_y
 *
yp
;

2069 
DB
 *
dbp
;

2070 
DB_TXN
 *
tx
;

2071 
_y
 *
dbp_p
, *
tx_p
;

2072 
u_t32_t
 
cou
;

2073 
t
;

2075 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

2076 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

2077 i(
tx_id
 != 0) {

2078 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

2079 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

2081 
tx
 = 
NULL
;

2083 
t
 = 
dbp
->
	`un
(dbp, 
tx
, &
cou
, 
ags
);

2084 
yp
->
us
 = 
t
;

2085 i(
t
 == 0)

2086 
yp
->
cou
 = count;

2088 
	}
}

2095 
	$__db_curs_oc
(
dbp_id
, 
tx_id
, 
ags
, 
yp
)

2096 
u_t
 
dbp_id
;

2097 
u_t
 
tx_id
;

2098 
u_t32_t
 
ags
;

2099 
__db_curs_y
 *
yp
;

2101 
DB
 *
dbp
;

2102 
DBC
 *
dbc
;

2103 
DB_TXN
 *
tx
;

2104 
_y
 *
dbc_p
, *
v_p
, *
dbp_p
, *
tx_p
;

2105 
t
;

2107 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

2108 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

2109 
dbc_p
 = 
	`w__t
(&
yp
->
us
);

2110 i(
dbc_p
 =
NULL
)

2113 i(
tx_id
 != 0) {

2114 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

2115 
tx
 = (
DB_TXN
 *)
tx_p
->
_yp
;

2116 
dbc_p
->
_aiv
 = 
tx_p
->ct_activep;

2118 
tx
 = 
NULL
;

2120 i((
t
 = 
dbp
->
	`curs
(dbp, 
tx
, &
dbc
, 
ags
)) == 0) {

2121 
dbc_p
->
_dbc
 = 
dbc
;

2122 
dbc_p
->
_ty
 = 
CT_CURSOR
;

2123 
dbc_p
->
_
 = 
dbp_p
;

2124 
v_p
 = 
dbp_p
->
_v
;

2125 
dbc_p
->
_v
 = 
v_p
;

2126 
	`__dbv_imeout
(
dbc_p
, 
v_p
->
_timeout
);

2127 
	`__dbv_aive
(
dbc_p
);

2128 
yp
->
dbcid_id
 = 
dbc_p
->
_id
;

2130 
	`__dbr_p
(
dbc_p
);

2132 
yp
->
us
 = 
t
;

2134 
	}
}

2141 
	$__db_jo_oc
(
dbp_id
, 
curs
, 
cur
, 
ags
, 
yp
)

2142 
u_t
 
dbp_id
;

2143 
u_t32_t
 * 
curs
;

2144 
u_t32_t
 
cur
;

2145 
u_t32_t
 
ags
;

2146 
__db_jo_y
 *
yp
;

2148 
DB_ENV
 *
dbv
;

2149 
DB
 *
dbp
;

2150 
DBC
 **
jcurs
, **
c
;

2151 
DBC
 *
dbc
;

2152 
_y
 *
dbc_p
, *
p
, *
dbp_p
;

2153 
size_t
 
size
;

2154 
u_t32_t
 *

, 
i
;

2155 
t
;

2157 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

2158 
dbp
 = (
DB
 *)
dbp_p
->
_yp
;

2159 
dbv
 = 
dbp
->dbenv;

2161 
dbc_p
 = 
	`w__t
(&
yp
->
us
);

2162 i(
dbc_p
 =
NULL
)

2165 
size
 = (
cur
 + 1* (
DBC
 *);

2166 i((
t
 = 
	`__os_oc
(

2167 
dbv
, 
cur
 + 1, (
DBC
 *), &
jcurs
)) != 0) {

2168 
yp
->
us
 = 
t
;

2169 
	`__dbr_p
(
dbc_p
);

2177 
p
 = 
	`g_b˒t
(*
curs
);

2178 
	`DB_ASSERT
(
dbv
, 
p
->
_ty
 =
CT_CURSOR
);

2183 i(
p
->
_aiv
 !&p->
_aive
)

2184 
dbc_p
->
_aiv
 = 
p
->ct_activep;

2185 
i
 = 0, 

 = 
curs
, 
c
 = 
jcurs
; i < 
cur
; i++, cl++, c++) {

2186 
p
 = 
	`g_b˒t
(*

);

2187 i(
p
 =
NULL
) {

2188 
yp
->
us
 = 
DB_NOSERVER_ID
;

2189 
out
;

2201 
	`DB_ASSERT
(
dbv
, 
p
->
_ty
 =
CT_CURSOR
);

2202 
p
->
_ty
 |
CT_JOIN
;

2203 
p
->
_igp
 = c->
_aiv
;

2211 
p
->
_aiv
 = &
dbc_p
->
_aive
;

2212 *
c
 = 
p
->
_dbc
;

2214 *
c
 = 
NULL
;

2215 i((
t
 = 
dbp
->
	`jo
(dbp, 
jcurs
, &
dbc
, 
ags
)) == 0) {

2216 
dbc_p
->
_dbc
 = 
dbc
;

2217 
dbc_p
->
_ty
 = (
CT_JOINCUR
 | 
CT_CURSOR
);

2218 
dbc_p
->
_
 = 
dbp_p
;

2219 
dbc_p
->
_v
 = 
dbp_p
->ct_envparent;

2220 
	`__dbv_imeout
(
dbc_p
, 
dbp_p
->
_v
->
_timeout
);

2221 
	`__dbv_aive
(
dbc_p
);

2222 
yp
->
dbcid_id
 = 
dbc_p
->
_id
;

2224 
	`__dbr_p
(
dbc_p
);

2228 

 = 
curs
; *cl != 0; cl++) {

2229 
p
 = 
	`g_b˒t
(*

);

2230 
p
->
_ty
 = 
CT_CURSOR
;

2231 
p
->
_aiv
 = c->
_igp
;

2235 
yp
->
us
 = 
t
;

2237 
out
: 
	`__os_
(
dbv
, 
jcurs
);

2239 
	}
}

2245 
	$__dbc_o_oc
(
dbc_id
, 
yp
)

2246 
u_t
 
dbc_id
;

2247 
__dbc_o_y
 *
yp
;

2249 
_y
 *
dbc_p
;

2251 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2252 
yp
->
us
 = 
	`__dbc_o_t
(
dbc_p
);

2254 
	}
}

2261 
	$__dbc_cou_oc
(
dbc_id
, 
ags
, 
yp
)

2262 
u_t
 
dbc_id
;

2263 
u_t32_t
 
ags
;

2264 
__dbc_cou_y
 *
yp
;

2266 
DBC
 *
dbc
;

2267 
_y
 *
dbc_p
;

2268 
db_o_t
 
num
;

2269 
t
;

2271 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2272 
dbc
 = (
DBC
 *)
dbc_p
->
_yp
;

2274 
t
 = 
dbc
->
	`cou
(dbc, &
num
, 
ags
);

2275 
yp
->
us
 = 
t
;

2276 i(
t
 == 0)

2277 
yp
->
dupcou
 = 
num
;

2279 
	}
}

2285 
	$__dbc_d_oc
(
dbc_id
, 
ags
, 
yp
)

2286 
u_t
 
dbc_id
;

2287 
u_t32_t
 
ags
;

2288 
__dbc_d_y
 *
yp
;

2290 
DBC
 *
dbc
;

2291 
_y
 *
dbc_p
;

2292 
t
;

2294 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2295 
dbc
 = (
DBC
 *)
dbc_p
->
_yp
;

2297 
t
 = 
dbc
->
	`d
(dbc, 
ags
);

2299 
yp
->
us
 = 
t
;

2301 
	}
}

2307 
	$__dbc_dup_oc
(
dbc_id
, 
ags
, 
yp
)

2308 
u_t
 
dbc_id
;

2309 
u_t32_t
 
ags
;

2310 
__dbc_dup_y
 *
yp
;

2312 
DBC
 *
dbc
, *
wdbc
;

2313 
_y
 *
dbc_p
, *
w_p
;

2314 
t
;

2316 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2317 
dbc
 = (
DBC
 *)
dbc_p
->
_yp
;

2319 
w_p
 = 
	`w__t
(&
yp
->
us
);

2320 i(
w_p
 =
NULL
)

2323 i((
t
 = 
dbc
->
	`dup
(dbc, &
wdbc
, 
ags
)) == 0) {

2324 
w_p
->
_dbc
 = 
wdbc
;

2325 
w_p
->
_ty
 = 
CT_CURSOR
;

2326 
w_p
->
_
 = 
dbc_p
->ct_parent;

2327 
w_p
->
_v
 = 
dbc_p
->ct_envparent;

2331 i(
dbc_p
->
_aiv
 !&dbc_p->
_aive
)

2332 
w_p
->
_aiv
 = 
dbc_p
->ct_activep;

2333 
	`__dbv_imeout
(
w_p
, 
dbc_p
->
_timeout
);

2334 
	`__dbv_aive
(
w_p
);

2335 
yp
->
dbcid_id
 = 
w_p
->
_id
;

2337 
	`__dbr_p
(
w_p
);

2339 
yp
->
us
 = 
t
;

2341 
	}
}

2350 
	$__dbc_g_oc
(
dbc_id
, 
keydn
, 
keydoff
, 
keyun
, 
keyags
, 
keyda
,

2351 
keysize
, 
dadn
, 
dadoff
, 
daun
, 
daags
, 
dada
, 
dasize
,

2352 
ags
, 
yp
, 
p
)

2353 
u_t
 
dbc_id
;

2354 
u_t32_t
 
keydn
;

2355 
u_t32_t
 
keydoff
;

2356 
u_t32_t
 
keyun
;

2357 
u_t32_t
 
keyags
;

2358 *
keyda
;

2359 
u_t32_t
 
keysize
;

2360 
u_t32_t
 
dadn
;

2361 
u_t32_t
 
dadoff
;

2362 
u_t32_t
 
daun
;

2363 
u_t32_t
 
daags
;

2364 *
dada
;

2365 
u_t32_t
 
dasize
;

2366 
u_t32_t
 
ags
;

2367 
__dbc_g_y
 *
yp
;

2368 * 
p
;

2370 
DBC
 *
dbc
;

2371 
DBT
 
key
, 
da
;

2372 
DB_ENV
 *
dbv
;

2373 
_y
 *
dbc_p
;

2374 
t
;

2376 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2377 
dbc
 = (
DBC
 *)
dbc_p
->
_yp
;

2378 
dbv
 = 
dbc
->
dbp
->dbenv;

2380 
yp
->
keyda
.
keyda_v
 = 
NULL
;

2381 
yp
->
dada
.
dada_v
 = 
NULL
;

2382 *
p
 = 0;

2383 
	`memt
(&
key
, 0, (key));

2384 
	`memt
(&
da
, 0, (data));

2387 
key
.
dn
 = 
keydn
;

2388 
key
.
un
 = 
keyun
;

2389 
key
.
doff
 = 
keydoff
;

2390 
key
.
size
 = 
keysize
;

2391 i(
keyags
 & 
DB_DBT_USERMEM
) {

2392 i((
t
 = 
	`__os_umloc
(
dbv
, 
key
.
un
, &key.
da
)) != 0)

2393 
r
;

2394 i(
keyda
 != 0)

2395 
	`memy
(
key
.
da
, 
keyda
,

2396 (
key
.
size
 < key.
un
) ? key.size : key.ulen);

2397 
key
.
ags
 = 
DB_DBT_USERMEM
;

2399 
key
.
da
 = 
keyda
;

2400 
key
.
ags
 = 
DB_DBT_MALLOC
;

2402 i(
keyags
 & 
DB_DBT_PARTIAL
)

2403 
key
.
ags
 |
DB_DBT_PARTIAL
;

2405 
da
.
dn
 = 
dadn
;

2406 
da
.
un
 = 
daun
;

2407 
da
.
doff
 = 
dadoff
;

2408 
da
.
size
 = 
dasize
;

2409 i(
ags
 & (
DB_MULTIPLE
 | 
DB_MULTIPLE_KEY
) ||

2410 
daags
 & 
DB_DBT_USERMEM
) {

2411 i((
t
 = 
	`__os_umloc
(
dbv
, 
da
.
un
, &data.data)) != 0)

2412 
r
;

2413 i(
dada
 != 0)

2414 
	`memy
(
da
.da, 
dada
,

2415 (
da
.
size
 < da.
un
) ? data.size : data.ulen);

2416 
da
.
ags
 = 
DB_DBT_USERMEM
;

2418 
da
.d
dada
;

2419 
da
.
ags
 = 
DB_DBT_MALLOC
;

2421 i(
daags
 & 
DB_DBT_PARTIAL
)

2422 
da
.
ags
 |
DB_DBT_PARTIAL
;

2425 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 
ags
);

2430 i(
t
 == 0) {

2439 *
p
 = 1;

2443 i(
key
.
da
 =
keyda
) {

2444 
t
 = 
	`__os_umloc
(
dbv
, 
key
.
size
,

2445 &
yp
->
keyda
.
keyda_v
);

2446 i(
t
 != 0)

2447 
r
;

2448 
	`memy
(
yp
->
keyda
.
keyda_v
, 
key
.
da
, key.
size
);

2450 
yp
->
keyda
.
keyda_v
 = 
key
.
da
;

2452 
yp
->
keyda
.
keyda_n
 = 
key
.
size
;

2457 i(
da
.d=
dada
) {

2458 
t
 = 
	`__os_umloc
(
dbv
, 
da
.
size
,

2459 &
yp
->
dada
.
dada_v
);

2460 i(
t
 != 0)

2461 
r
;

2462 
	`memy
(
yp
->
dada
.
dada_v
, 
da
.data,

2463 
da
.
size
);

2465 
yp
->
dada
.
dada_v
 = 
da
.data;

2466 
yp
->
dada
.
dada_n
 = 
da
.
size
;

2468 
r
: 
	`FREE_IF_CHANGED
(
dbv
, 
key
.
da
, 
keyda
);

2469 
	`FREE_IF_CHANGED
(
dbv
, 
da
.da, 
dada
);

2470 
	`FREE_IF_CHANGED
(
dbv
,

2471 
yp
->
keyda
.
keyda_v
, 
key
.
da
);

2472 
	`FREE_IF_CHANGED
(
dbv
,

2473 
yp
->
dada
.
dada_v
, 
da
.data);

2474 
yp
->
keyda
.
keyda_v
 = 
NULL
;

2475 
yp
->
keyda
.
keyda_n
 = 0;

2476 
yp
->
dada
.
dada_v
 = 
NULL
;

2477 
yp
->
dada
.
dada_n
 = 0;

2478 *
p
 = 0;

2480 
yp
->
us
 = 
t
;

2482 
	}
}

2492 
	$__dbc_pg_oc
(
dbc_id
, 
skeydn
, 
skeydoff
, 
skeyun
, 
skeyags
,

2493 
skeyda
, 
skeysize
, 
pkeydn
, 
pkeydoff
, 
pkeyun
, 
pkeyags
, 
pkeyda
,

2494 
pkeysize
, 
dadn
, 
dadoff
, 
daun
, 
daags
, 
dada
, 
dasize
,

2495 
ags
, 
yp
, 
p
)

2496 
u_t
 
dbc_id
;

2497 
u_t32_t
 
skeydn
;

2498 
u_t32_t
 
skeydoff
;

2499 
u_t32_t
 
skeyun
;

2500 
u_t32_t
 
skeyags
;

2501 *
skeyda
;

2502 
u_t32_t
 
skeysize
;

2503 
u_t32_t
 
pkeydn
;

2504 
u_t32_t
 
pkeydoff
;

2505 
u_t32_t
 
pkeyun
;

2506 
u_t32_t
 
pkeyags
;

2507 *
pkeyda
;

2508 
u_t32_t
 
pkeysize
;

2509 
u_t32_t
 
dadn
;

2510 
u_t32_t
 
dadoff
;

2511 
u_t32_t
 
daun
;

2512 
u_t32_t
 
daags
;

2513 *
dada
;

2514 
u_t32_t
 
dasize
;

2515 
u_t32_t
 
ags
;

2516 
__dbc_pg_y
 *
yp
;

2517 * 
p
;

2519 
DBC
 *
dbc
;

2520 
DBT
 
skey
, 
pkey
, 
da
;

2521 
DB_ENV
 *
dbv
;

2522 
_y
 *
dbc_p
;

2523 
t
;

2525 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2526 
dbc
 = (
DBC
 *)
dbc_p
->
_yp
;

2527 
dbv
 = 
dbc
->
dbp
->dbenv;

2529 
yp
->
skeyda
.
skeyda_v
 = 
NULL
;

2530 
yp
->
pkeyda
.
pkeyda_v
 = 
NULL
;

2531 
yp
->
dada
.
dada_v
 = 
NULL
;

2532 *
p
 = 0;

2533 
	`memt
(&
skey
, 0, (skey));

2534 
	`memt
(&
pkey
, 0, (pkey));

2535 
	`memt
(&
da
, 0, (data));

2541 
skey
.
ags
 = 
DB_DBT_MALLOC
;

2542 
skey
.
dn
 = 
skeydn
;

2543 
skey
.
un
 = 
skeyun
;

2544 
skey
.
doff
 = 
skeydoff
;

2545 i(
skeyags
 & 
DB_DBT_PARTIAL
)

2546 
skey
.
ags
 |
DB_DBT_PARTIAL
;

2547 
skey
.
size
 = 
skeysize
;

2548 
skey
.
da
 = 
skeyda
;

2550 
pkey
.
ags
 = 
DB_DBT_MALLOC
;

2551 
pkey
.
dn
 = 
pkeydn
;

2552 
pkey
.
un
 = 
pkeyun
;

2553 
pkey
.
doff
 = 
pkeydoff
;

2554 i(
pkeyags
 & 
DB_DBT_PARTIAL
)

2555 
pkey
.
ags
 |
DB_DBT_PARTIAL
;

2556 
pkey
.
size
 = 
pkeysize
;

2557 
pkey
.
da
 = 
pkeyda
;

2559 
da
.
ags
 = 
DB_DBT_MALLOC
;

2560 
da
.
dn
 = 
dadn
;

2561 
da
.
un
 = 
daun
;

2562 
da
.
doff
 = 
dadoff
;

2563 i(
daags
 & 
DB_DBT_PARTIAL
)

2564 
da
.
ags
 |
DB_DBT_PARTIAL
;

2565 
da
.
size
 = 
dasize
;

2566 
da
.d
dada
;

2569 
t
 = 
dbc
->
	`pg
(dbc, &
skey
, &
pkey
, &
da
, 
ags
);

2573 i(
t
 == 0) {

2582 *
p
 = 1;

2586 i(
skey
.
da
 =
skeyda
) {

2587 
t
 = 
	`__os_umloc
(
dbv
,

2588 
skey
.
size
, &
yp
->
skeyda
.
skeyda_v
);

2589 i(
t
 != 0)

2590 
r
;

2591 
	`memy
(
yp
->
skeyda
.
skeyda_v
, 
skey
.
da
,

2592 
skey
.
size
);

2594 
yp
->
skeyda
.
skeyda_v
 = 
skey
.
da
;

2595 
yp
->
skeyda
.
skeyda_n
 = 
skey
.
size
;

2600 i(
pkey
.
da
 =
pkeyda
) {

2601 
t
 = 
	`__os_umloc
(
dbv
,

2602 
pkey
.
size
, &
yp
->
pkeyda
.
pkeyda_v
);

2603 i(
t
 != 0)

2604 
r
;

2611 
	`memy
(
yp
->
pkeyda
.
pkeyda_v
, 
pkey
.
da
,

2612 
pkey
.
size
);

2614 
yp
->
pkeyda
.
pkeyda_v
 = 
pkey
.
da
;

2615 
yp
->
pkeyda
.
pkeyda_n
 = 
pkey
.
size
;

2620 i(
da
.d=
dada
) {

2621 
t
 = 
	`__os_umloc
(
dbv
,

2622 
da
.
size
, &
yp
->
dada
.
dada_v
);

2623 i(
t
 != 0)

2624 
r
;

2625 
	`memy
(
yp
->
dada
.
dada_v
, 
da
.data,

2626 
da
.
size
);

2628 
yp
->
dada
.
dada_v
 = 
da
.data;

2629 
yp
->
dada
.
dada_n
 = 
da
.
size
;

2631 
r
: 
	`FREE_IF_CHANGED
(
dbv
, 
skey
.
da
, 
skeyda
);

2632 
	`FREE_IF_CHANGED
(
dbv
, 
pkey
.
da
, 
pkeyda
);

2633 
	`FREE_IF_CHANGED
(
dbv
, 
da
.da, 
dada
);

2634 
	`FREE_IF_CHANGED
(
dbv
,

2635 
yp
->
skeyda
.
skeyda_v
, 
skey
.
da
);

2636 
	`FREE_IF_CHANGED
(
dbv
,

2637 
yp
->
pkeyda
.
pkeyda_v
, 
pkey
.
da
);

2638 
	`FREE_IF_CHANGED
(
dbv
,

2639 
yp
->
dada
.
dada_v
, 
da
.data);

2640 
yp
->
skeyda
.
skeyda_v
 = 
NULL
;

2641 
yp
->
skeyda
.
skeyda_n
 = 0;

2642 
yp
->
pkeyda
.
pkeyda_v
 = 
NULL
;

2643 
yp
->
pkeyda
.
pkeyda_n
 = 0;

2644 
yp
->
dada
.
dada_v
 = 
NULL
;

2645 
yp
->
dada
.
dada_n
 = 0;

2646 *
p
 = 0;

2648 
yp
->
us
 = 
t
;

2650 
	}
}

2659 
	$__dbc_put_oc
(
dbc_id
, 
keydn
, 
keydoff
, 
keyun
, 
keyags
, 
keyda
,

2660 
keysize
, 
dadn
, 
dadoff
, 
daun
, 
daags
, 
dada
, 
dasize
,

2661 
ags
, 
yp
, 
p
)

2662 
u_t
 
dbc_id
;

2663 
u_t32_t
 
keydn
;

2664 
u_t32_t
 
keydoff
;

2665 
u_t32_t
 
keyun
;

2666 
u_t32_t
 
keyags
;

2667 *
keyda
;

2668 
u_t32_t
 
keysize
;

2669 
u_t32_t
 
dadn
;

2670 
u_t32_t
 
dadoff
;

2671 
u_t32_t
 
daun
;

2672 
u_t32_t
 
daags
;

2673 *
dada
;

2674 
u_t32_t
 
dasize
;

2675 
u_t32_t
 
ags
;

2676 
__dbc_put_y
 *
yp
;

2677 * 
p
;

2679 
DB
 *
dbp
;

2680 
DBC
 *
dbc
;

2681 
DBT
 
key
, 
da
;

2682 
_y
 *
dbc_p
;

2683 
t
;

2685 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2686 
dbc
 = (
DBC
 *)
dbc_p
->
_yp
;

2687 
dbp
 = (
DB
 *)
dbc_p
->
_
->
_yp
;

2689 
	`memt
(&
key
, 0, (key));

2690 
	`memt
(&
da
, 0, (data));

2693 
key
.
dn
 = 
keydn
;

2694 
key
.
un
 = 
keyun
;

2695 
key
.
doff
 = 
keydoff
;

2699 
key
.
ags
 = 0;

2700 i(
keyags
 & 
DB_DBT_PARTIAL
)

2701 
key
.
ags
 |
DB_DBT_PARTIAL
;

2702 
key
.
size
 = 
keysize
;

2703 
key
.
da
 = 
keyda
;

2705 
da
.
dn
 = 
dadn
;

2706 
da
.
un
 = 
daun
;

2707 
da
.
doff
 = 
dadoff
;

2708 
da
.
ags
 = 
daags
;

2709 
da
.
size
 = 
dasize
;

2710 
da
.d
dada
;

2713 
t
 = 
dbc
->
	`put
(dbc, &
key
, &
da
, 
ags
);

2715 *
p
 = 0;

2716 i(
t
 =0 && (
ags
 =
DB_AFTER
 || fg=
DB_BEFORE
) &&

2717 
dbp
->
ty
 =
DB_RECNO
) {

2721 
yp
->
keyda
.
keyda_v
 = 
key
.
da
;

2722 
yp
->
keyda
.
keyda_n
 = 
key
.
size
;

2724 
yp
->
keyda
.
keyda_v
 = 
NULL
;

2725 
yp
->
keyda
.
keyda_n
 = 0;

2727 
yp
->
us
 = 
t
;

2729 
	}
}

2736 
	$__dbc_g_iܙy_oc
(
dbc_id
, 
yp
)

2737 
u_t
 
dbc_id
;

2738 
__dbc_g_iܙy_y
 *
yp
;

2740 
DBC
 *
dbc
;

2741 
_y
 *
dbc_p
;

2743 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2744 
dbc
 = (
DBC
 *)
dbc_p
->
_yp
;

2746 
yp
->
us
 =

2747 
dbc
->
	`g_iܙy
(dbc, (
DB_CACHE_PRIORITY
 *)&
yp
->
iܙy
);

2748 
	}
}

2755 
	$__dbc_t_iܙy_oc
(
dbc_id
, 
iܙy
, 
yp
)

2756 
u_t
 
dbc_id
;

2757 
u_t32_t
 
iܙy
;

2758 
__dbc_t_iܙy_y
 *
yp
;

2760 
DBC
 *
dbc
;

2761 
_y
 *
dbc_p
;

2762 
t
;

2764 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2765 
dbc
 = (
DBC
 *)
dbc_p
->
_yp
;

2767 
t
 = 
dbc
->
	`t_iܙy
(dbc, (
DB_CACHE_PRIORITY
)
iܙy
);

2769 
yp
->
us
 = 
t
;

2771 
	}
}

	@../rpc_server/c/db_server_util.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<c/c.h
>

15 
	~"db_rv.h
"

16 
	~"dbc_auto/ib_ext.h
"

17 
	~"dbc/db_rv_t.h
"

18 
	~"dbc_auto/comm_ext.h
"

19 
	~"dbc_auto/c_rv_ext.h
"

21 
add_home
 
__P
((*));

22 
add_sswd
 
__P
((*));

23 
v_cov
 
__P
((*));

24 
__dbr_chd
 
__P
((
_y
 *));

26 
	$LIST_HEAD
(
hd
, 
_y

__dbv_hd
;

27 
	$LIST_HEAD
(
homehd
, 
home_y

__dbv_home
;

28 
__dbv_deo
 = 
DB_SERVER_TIMEOUT
;

29 
__dbv_maxto
 = 
DB_SERVER_MAXTIMEOUT
;

30 
__dbv_idto
 = 
DB_SERVER_IDLETIMEOUT
;

31 *
logfe
 = 
NULL
;

32 *
og
;

34 
uge
 
	`__P
(());

35 
vsi_check
 
	`__P
(());

37 
__dbv_vbo
 = 0;

40 
	$ma
(
gc
, 
gv
)

41 
gc
;

42 **
gv
;

44 

	`__dbv_ma
();

45 
*
ݏrg
;

46 
CLIENT
 *

;

47 
ch
, 
t
;

48 *
sswd
;

50 
og
 = 
gv
[0];

52 
	`vsi_check
();

54 
t
 = 0;

67 i((

 = 
	`_
("localhost",

68 
DB_RPC_SERVERPROG
, 
DB_RPC_SERVERVERS
, "t")!
NULL
) {

69 
	`rtf
(
dr
,

70 "%s: Bkey DB RPC sv̗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 
	}
}

213 
	$__dbv_timeout
(
f
)

214 
f
;

216 
to_ht
 = -1;

217 
time_t
 
t
;

218 
to
;

219 
_y
 *
p
, *
xtp
;

221 i((
t
 = 
	`time
(
NULL
)) == -1)

228 i(!
f
 && 
to_ht
 > 0 && 
t
 <o_hint)

230 
to_ht
 = -1;

244 
p
 = 
	`LIST_FIRST
(&
__dbv_hd
); c !
NULL
; c = 
xtp
) {

245 
xtp
 = 
	`LIST_NEXT
(
p
, 
s
);

246 
p
->
_ty
) {

247 
CT_TXN
:

248 
to
 = *(
p
->
_aiv
+ c->
_timeout
;

250 i(
to
 < 
t
) {

251 i(
__dbv_vbo
)

252 
	`tf
("Timing outxn id %ld\n",

253 
p
->
_id
);

254 ()((
DB_TXN
 *)
p
->
_yp
)->

255 
	`abt
((
DB_TXN
 *)
p
->
_yp
);

256 
	`__dbd_p
(
p
);

262 
xtp
 = 
	`LIST_FIRST
(&
__dbv_hd
);

263 } i((
to_ht
 > 0 &&o_h> 
to
) ||

264 
to_ht
 == -1)

265 
to_ht
 = 
to
;

267 
CT_CURSOR
:

268 (
CT_JOINCUR
 | 
CT_CURSOR
):

269 
to
 = *(
p
->
_aiv
+ c->
_timeout
;

271 i(
to
 < 
t
) {

272 i(
__dbv_vbo
)

273 
	`tf
("Timing out cursor %ld\n",

274 
p
->
_id
);

275 ()
	`__dbc_o_t
(
p
);

279 
xtp
 = 
	`LIST_FIRST
(&
__dbv_hd
);

280 } i((
to_ht
 > 0 &&o_h> 
to
) ||

281 
to_ht
 == -1)

282 
to_ht
 = 
to
;

292 
p
 = 
	`LIST_FIRST
(&
__dbv_hd
); c !
NULL
; c = 
xtp
) {

293 
xtp
 = 
	`LIST_NEXT
(
p
, 
s
);

294 i(
p
->
_ty
 !
CT_ENV
)

296 
to
 = *(
p
->
_aiv
+ c->
_id
;

298 i(
to
 < 
t
 || 
f
) {

299 i(
__dbv_vbo
)

300 
	`tf
("Timg ouv id %ld\n", 
p
->
_id
);

301 ()
	`__v_o_t
(
p
->
_id
, 0, 1);

307 
xtp
 = 
	`LIST_FIRST
(&
__dbv_hd
);

310 
	}
}

317 
	$__dbr_chd
(

)

318 
_y
 *

;

320 
_y
 *
p
, *
xtp
;

322 
p
 = 
	`LIST_FIRST
(&
__dbv_hd
); c !
NULL
;

323 
p
 = 
xtp
) {

324 
xtp
 = 
	`LIST_NEXT
(
p
, 
s
);

325 i(
p
->
_ty
 == 0)

327 i(
p
->
_
 =

) {

328 
	`__dbr_chd
(
p
);

334 
xtp
 = 
	`LIST_NEXT
(
p
, 
s
);

335 
	`__dbr_p
(
p
);

338 
	}
}

344 
	$__dbr_p
(
p
)

345 
_y
 *
p
;

347 
	`LIST_REMOVE
(
p
, 
s
);

348 
	`__os_
(
NULL
, 
p
);

349 
	}
}

355 
	$__dbd_p
(

)

356 
_y
 *

;

358 
	`__dbr_chd
(

);

359 
	`__dbr_p
(

);

360 
	}
}

365 
_y
 *

366 
	$w__t
(

)

367 *

;

369 
time_t
 
t
;

370 
_y
 *
p
, *
op
;

371 
t
;

373 i((
t
 = 
	`__os_mloc
(
NULL
, (
_y
), &
p
)) != 0) {

374 *

 = 
t
;

375  (
NULL
);

377 
	`memt
(
p
, 0, (
_y
));

385 i((
t
 = 
	`time
(
NULL
)) == -1) {

386 *

 = 
	`__os_g_o
();

387 
	`__os_
(
NULL
, 
p
);

388  (
NULL
);

390 
op
 = 
	`LIST_FIRST
(&
__dbv_hd
);

391 i(
op
 !
NULL
 && op->
_id
 >
t
)

392 
t
 = 
op
->
_id
 + 1;

393 
p
->
_id
 = ()
t
;

394 
p
->
_id
 = 
__dbv_idto
;

395 
p
->
_aiv
 = &p->
_aive
;

396 
p
->
_igp
 = 
NULL
;

397 
p
->
_fcou
 = 1;

399 
	`LIST_INSERT_HEAD
(&
__dbv_hd
, 
p
, 
s
);

400  (
p
);

401 
	}
}

406 
_y
 *

407 
	$g_b˒t
(
id
)

408 
id
;

410 
_y
 *
p
;

412 
p
 = 
	`LIST_FIRST
(&
__dbv_hd
); c !
NULL
;

413 
p
 = 
	`LIST_NEXT
(p, 
s
))

414 i(
p
->
_id
 =
id
)

415  (
p
);

416  (
NULL
);

417 
	}
}

423 
_y
 *

424 
	$__dbv_shedb
(
db_p
, 
me
, 
subdb
, 
ty
, 
ags
)

425 
_y
 *
db_p
;

426 cڡ *
me
, *
subdb
;

427 
DBTYPE
 
ty
;

428 
u_t32_t
 
ags
;

430 
_y
 *
p
;

443 i(
ags
 & 
DB_SERVER_DBNOSHARE
)

444  (
NULL
);

445 
p
 = 
	`LIST_FIRST
(&
__dbv_hd
); c !
NULL
;

446 
p
 = 
	`LIST_NEXT
(p, 
s
)) {

450 i(
p
 =
db_p
)

452 i(
p
->
_ty
 !
CT_DB
)

454 i(
p
->
_v
 !
db_p
->ct_envparent)

456 i(
ty
 !
DB_UNKNOWN
 && 
p
->
_dbdp
.type !=ype)

458 i(
p
->
_dbdp
.
dbags
 !
	`LF_ISSET
(
DB_SERVER_DBFLAGS
))

460 i(
db_p
->
_dbdp
.
tags
 != 0 &&

461 
p
->
_dbdp
.
tags
 !
db_p
->ct_dbdp.setflags)

463 i(
me
 =
NULL
 || 
p
->
_dbdp
.
db
 == NULL ||

464 
	`rcmp
(
me
, 
p
->
_dbdp
.
db
) != 0)

466 i(
subdb
 !
p
->
_dbdp
.subdb &&

467 (
subdb
 =
NULL
 || 
p
->
_dbdp
.subdb == NULL ||

468 
	`rcmp
(
subdb
, 
p
->
_dbdp
.subdb) != 0))

473 
p
->
_fcou
++;

474  (
p
);

477  (
NULL
);

478 
	}
}

484 
_y
 *

485 
	$__dbv_shnv
(
v_p
, 
home
, 
ags
)

486 
_y
 *
v_p
;

487 
home_y
 *
home
;

488 
u_t32_t
 
ags
;

490 
_y
 *
p
;

498 
p
 = 
	`LIST_FIRST
(&
__dbv_hd
); c !
NULL
;

499 
p
 = 
	`LIST_NEXT
(p, 
s
)) {

503 i(
p
 =
v_p
)

505 i(
p
->
_ty
 !
CT_ENV
)

507 i(
p
->
_vdp
.
home
 != home)

509 i(
p
->
_vdp
.
vags
 !
ags
)

511 i(
p
->
_vdp
.
ags
 !
v_p
->ct_envdp.onflags)

513 i(
p
->
_vdp
.
offags
 !
v_p
->ct_envdp.offflags)

521 i(
p
->
_timeout
 < 
v_p
->ct_timeout)

522 
p
->
_timeout
 = 
v_p
->ct_timeout;

523 
p
->
_fcou
++;

524  (
p
);

527  (
NULL
);

528 
	}
}

534 
	$__dbv_aive
(
p
)

535 
_y
 *
p
;

537 
time_t
 
t
;

538 
_y
 *
vp
;

540 i(
p
 =
NULL
)

542 i((
t
 = 
	`time
(
NULL
)) == -1)

544 *(
p
->
_aiv

t
;

545 i((
vp
 = 
p
->
_v
=
NULL
)

547 *(
vp
->
_aiv

t
;

549 
	}
}

555 
	$__db_o_t
(
id
, 
ags
)

556 
id
;

557 
u_t32_t
 
ags
;

559 
DB
 *
dbp
;

560 
t
;

561 
_y
 *
p
;

563 
t
 = 0;

564 
p
 = 
	`g_b˒t
(
id
);

565 i(
p
 =
NULL
)

566  (
DB_NOSERVER_ID
);

567 
	`DB_ASSERT
(
p
->
_vp
, c->
_ty
 =
CT_DB
);

568 i(
__dbv_vbo
 && 
p
->
_fcou
 != 1)

569 
	`tf
("Deref'ing dbp id %ld,efcount %d\n",

570 
id
, 
p
->
_fcou
);

571 i(--
p
->
_fcou
 != 0)

572  (
t
);

573 
dbp
 = 
p
->
_dbp
;

574 i(
__dbv_vbo
)

575 
	`tf
("Closg dbid %ld\n", 
id
);

577 
t
 = 
dbp
->
	`o
(dbp, 
ags
);

578 i(
p
->
_dbdp
.
db
 !
NULL
)

579 
	`__os_
(
NULL
, 
p
->
_dbdp
.
db
);

580 i(
p
->
_dbdp
.
subdb
 !
NULL
)

581 
	`__os_
(
NULL
, 
p
->
_dbdp
.
subdb
);

582 
	`__dbd_p
(
p
);

583  (
t
);

584 
	}
}

590 
	$__dbc_o_t
(
dbc_p
)

591 
_y
 *
dbc_p
;

593 
DBC
 *
dbc
;

594 
t
;

595 
_y
 *
p
;

597 
dbc
 = (
DBC
 *)
dbc_p
->
_yp
;

599 
t
 = 
dbc
->
	`o
(dbc);

604 i(
dbc_p
->
_ty
 & 
CT_JOINCUR
)

605 
p
 = 
	`LIST_FIRST
(&
__dbv_hd
); c !
NULL
;

606 
p
 = 
	`LIST_NEXT
(p, 
s
)) {

611 i((
p
->
_ty
 & 
CT_JOIN
) &&

612 
p
->
_aiv
 =&
dbc_p
->
_aive
) {

613 
p
->
_ty
 &~
CT_JOIN
;

614 
p
->
_aiv
 = c->
_igp
;

615 
	`__dbv_aive
(
p
);

618 
	`__dbr_p
(
dbc_p
);

619  (
t
);

621 
	}
}

627 
	$__v_o_t
(
id
, 
ags
, 
f
)

628 
id
;

629 
u_t32_t
 
ags
;

630 
f
;

632 
DB_ENV
 *
dbv
;

633 
t
;

634 
_y
 *
p
, *
dbp
, *
xtp
;

636 
t
 = 0;

637 
p
 = 
	`g_b˒t
(
id
);

638 i(
p
 =
NULL
)

639  (
DB_NOSERVER_ID
);

640 
	`DB_ASSERT
(
p
->
_vp
, c->
_ty
 =
CT_ENV
);

641 i(
__dbv_vbo
 && 
p
->
_fcou
 != 1)

642 
	`tf
("Deref'ingnv id %ld,efcount %d\n",

643 
id
, 
p
->
_fcou
);

648 i(--
p
->
_fcou
 !0 && !
f
)

649  (
t
);

650 
dbv
 = 
p
->
_vp
;

651 i(
__dbv_vbo
)

652 
	`tf
("Closgnv id %ld\n", 
id
);

659 i(
f
)

660 
dbp
 = 
	`LIST_FIRST
(&
__dbv_hd
);

661 
dbp
 !
NULL
; db
xtp
) {

662 
xtp
 = 
	`LIST_NEXT
(
dbp
, 
s
);

663 i(
dbp
->
_ty
 !
CT_DB
)

665 i(
dbp
->
_v
 !
p
)

671 
	`__db_o_t
(
dbp
->
_id
, 0);

677 
xtp
 = 
	`LIST_FIRST
(&
__dbv_hd
);

679 
t
 = 
dbv
->
	`o
(dbv, 
ags
);

680 
	`__dbd_p
(
p
);

681  (
t
);

682 
	}
}

685 
	$add_home
(
home
)

686 *
home
;

688 
home_y
 *
hp
, *
hom
;

689 
t
;

691 i((
t
 = 
	`__os_mloc
(
NULL
, (
home_y
), &
hp
)) != 0)

692  (
t
);

693 i((
t
 = 
	`__os_mloc
(
NULL
, 
	`
(
home
)+1, &
hp
->home)) != 0)

694  (
t
);

695 
	`memy
(
hp
->
home
, home, 
	`
(home)+1);

696 
hp
->
d
 = 
home
;

697 
hp
->
sswd
 = 
NULL
;

702 
hp
->
me
 = 
	`__db_h
(
home
);

703 i(
hp
->
me
 !
NULL
) {

704 *(
hp
->
me
) = '\0';

705 
hp
->
me
++;

707 
hp
->
me
 = 
home
;

708 *(
hp
->
me
) == '\0') {

709 
hp
->
me
 = 
	`__db_h
(
home
);

710 *(
hp
->
me
) = '\0';

711 
hp
->
me
++;

717 
hom
 = 
	`LIST_FIRST
(&
__dbv_home
); hom !
NULL
;

718 
hom
 = 
	`LIST_NEXT
(hom, 
s
))

719 i(
	`rcmp
(
hom
->
me
, 
hp
->name) == 0) {

720 
	`tf
("Alreadydded homeame %s,t directory %s\n",

721 
hp
->
me
, 
hom
->
d
);

722 
	`__os_
(
NULL
, 
hp
->
home
);

723 
	`__os_
(
NULL
, 
hp
);

726 
	`LIST_INSERT_HEAD
(&
__dbv_home
, 
hp
, 
s
);

727 i(
__dbv_vbo
)

728 
	`tf
("Added hom% d %s\n", 
hp
->
me
, hp->
d
);

730 
	}
}

733 
	$add_sswd
(
sswd
)

734 *
sswd
;

736 
home_y
 *
hp
;

743 
hp
 = 
	`LIST_FIRST
(&
__dbv_home
);

744 i(
hp
 =
NULL
 || hp->
sswd
 != NULL)

745  (
EINVAL
);

750 
hp
->
sswd
 =asswd;

752 
	}
}

757 
home_y
 *

758 
	$g_fuhome
(
me
)

759 *
me
;

761 
home_y
 *
hp
;

763 i(
me
 =
NULL
)

764  (
NULL
);

765 
hp
 = 
	`LIST_FIRST
(&
__dbv_home
); h!
NULL
;

766 
hp
 = 
	`LIST_NEXT
(hp, 
s
))

767 i(
	`rcmp
(
me
, 
hp
->name) == 0)

768  (
hp
);

769  (
NULL
);

770 
	}
}

773 
	$v_cov
(
ogme
)

774 *
ogme
;

776 
DB_ENV
 *
dbv
;

777 
home_y
 *
hp
;

778 
u_t32_t
 
ags
;

779 
exv
, 
t
;

781 
hp
 = 
	`LIST_FIRST
(&
__dbv_home
); h!
NULL
;

782 
hp
 = 
	`LIST_NEXT
(hp, 
s
)) {

783 
exv
 = 0;

784 i((
t
 = 
	`db_v_
(&
dbv
, 0)) != 0) {

785 
	`rtf
(
dr
, "%s: db_env_create: %s\n",

786 
ogme
, 
	`db_
(
t
));

787 
	`ex
(
EXIT_FAILURE
);

789 i(
__dbv_vbo
 == 1)

790 ()
dbv
->
	`t_vbo
(dbv, 
DB_VERB_RECOVERY
, 1);

791 
dbv
->
	`t_rfe
(dbv, 
dr
);

792 
dbv
->
	`t_fx
(dbv, 
ogme
);

793 i(
hp
->
sswd
 !
NULL
)

794 ()
dbv
->
	`t_y
(dbv, 
hp
->
sswd
,

795 
DB_ENCRYPT_AES
);

801 i(
__dbv_vbo
)

802 
	`tf
("Rušgecovy o%s\n", 
hp
->
home
);

803 
ags
 = 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 |

804 
DB_INIT_TXN
 | 
DB_USE_ENVIRON
 | 
DB_RECOVER
;

805 i((
t
 = 
dbv
->
	`ݒ
(dbv, 
hp
->
home
, 
ags
, 0)) != 0) {

806 
dbv
->
	`r
(dbv, 
t
, "DB_ENV->open");

807 
r
;

811 
r
: 
exv
 = 1;

813 i((
t
 = 
dbv
->
	`o
(dbenv, 0)) != 0) {

814 
exv
 = 1;

815 
	`rtf
(
dr
, "%s: dbenv->close: %s\n",

816 
ogme
, 
	`db_
(
t
));

818 i(
exv
)

819  (
exv
);

822 
	}
}

	@../rpc_server/cxx/db_server_cxxproc.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"db_cxx.h
"

13 
	~"db_rv.h
"

16 
	~"dbc/db_rv_t.h
"

17 
	~"dbc_auto/c_rv_ext.h
"

21 
	$__v_g_chesize_oc
(

22 
u_t
 
dbv_id
,

23 
__v_g_chesize_y
 *
yp
)

25 
DbEnv
 *
dbv
;

26 
_y
 *
dbv_p
;

28 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

29 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

31 
yp
->
us
 = 
dbv
->
	`g_chesize
(&yp->
gbys
,

32 &
yp
->
bys
, (*)&yp->
nche
);

33 
	}
}

36 
	$__v_t_chesize_oc
(

37 
u_t
 
dbv_id
,

38 
u_t32_t
 
gbys
,

39 
u_t32_t
 
bys
,

40 
u_t32_t
 
nche
,

41 
__v_t_chesize_y
 *
yp
)

43 
DbEnv
 *
dbv
;

44 
_y
 *
dbv_p
;

45 
t
;

47 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

48 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

50 
t
 = 
dbv
->
	`t_chesize
(
gbys
, 
bys
, 
nche
);

52 
yp
->
us
 = 
t
;

54 
	}
}

57 
	$__v_cdsgroup_beg_oc
(
u_t
 
dbv_id
, 
__v_cdsgroup_beg_y
 *
yp
)

59 
DbEnv
 *
dbv
;

60 
DbTxn
 *
tx
;

61 
_y
 *
p
, *
dbv_p
;

62 
t
;

64 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

65 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

67 
p
 = 
	`w__t
(&
yp
->
us
);

68 i(
p
 =
NULL
)

71 
t
 = 
dbv
->
	`cdsgroup_beg
(&
tx
);

72 i(
t
 == 0) {

73 
p
->
_tx
 = 
tx
;

74 
p
->
_ty
 = 
CT_TXN
;

75 
p
->
_
 = 
NULL
;

76 
p
->
_v
 = 
dbv_p
;

77 
yp
->
txnid_id
 = 
p
->
_id
;

78 
	`__dbv_imeout
(
p
, 
dbv_p
->
_timeout
);

79 
	`__dbv_aive
(
p
);

81 
	`__dbr_p
(
p
);

83 
yp
->
us
 = 
t
;

85 
	}
}

88 
	$__v_o_oc
(

89 
u_t
 
dbv_id
,

90 
u_t32_t
 
ags
,

91 
__v_o_y
 *
yp
)

93 
_y
 *
dbv_p
;

95 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

96 
yp
->
us
 = 
	`__v_o_t
(
dbv_id
, 
ags
, 0);

98 
	}
}

101 
	$__v__oc
(

102 
u_t32_t
 
timeout
,

103 
__v__y
 *
yp
)

105 
DbEnv
 *
dbv
;

106 
_y
 *
p
;

108 
p
 = 
	`w__t
(&
yp
->
us
);

109 i(
p
 =
NULL
)

112 
dbv
 = 
w
 
	`DbEnv
(
DB_CXX_NO_EXCEPTIONS
);

113 
p
->
_vp
 = 
dbv
;

114 
p
->
_ty
 = 
CT_ENV
;

115 
p
->
_
 = 
NULL
;

116 
p
->
_v
 = ctp;

117 
	`__dbv_imeout
(
p
, 
timeout
);

118 
	`__dbv_aive
(
p
);

119 
yp
->
v_id
 = 
p
->
_id
;

121 
yp
->
us
 = 0;

123 
	}
}

126 
	$__v_dbmove_oc
(

127 
u_t
 
dbv_id
,

128 
u_t
 
tx_id
,

129 *
me
,

130 *
subdb
,

131 
u_t32_t
 
ags
,

132 
__v_dbmove_y
 *
yp
)

134 
t
;

135 
DbEnv
 *
dbv
;

136 
DbTxn
 *
tx
;

137 
_y
 *
dbv_p
, *
tx_p
;

139 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

140 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

142 i(
tx_id
 != 0) {

143 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

144 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

146 
tx
 = 
NULL
;

148 
t
 = 
dbv
->
	`dbmove
(
tx
, 
me
, 
subdb
, 
ags
);

150 
yp
->
us
 = 
t
;

152 
	}
}

155 
	$__v_dbme_oc
(

156 
u_t
 
dbv_id
,

157 
u_t
 
tx_id
,

158 *
me
,

159 *
subdb
,

160 *
wme
,

161 
u_t32_t
 
ags
,

162 
__v_dbme_y
 *
yp
)

164 
t
;

165 
DbEnv
 *
dbv
;

166 
DbTxn
 *
tx
;

167 
_y
 *
dbv_p
, *
tx_p
;

169 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

170 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

172 i(
tx_id
 != 0) {

173 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

174 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

176 
tx
 = 
NULL
;

178 
t
 = 
dbv
->
	`dbme
(
tx
, 
me
, 
subdb
, 
wme
, 
ags
);

180 
yp
->
us
 = 
t
;

182 
	}
}

185 
	$__v_g_y_ags_oc
(

186 
u_t
 
dbv_id
,

187 
__v_g_y_ags_y
 *
yp
)

189 
DbEnv
 *
dbv
;

190 
_y
 *
dbv_p
;

192 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

193 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

195 
yp
->
us
 = 
dbv
->
	`g_y_ags
(&yp->
ags
);

196 
	}
}

199 
	$__v_t_y_oc
(

200 
u_t
 
dbv_id
,

201 *
sswd
,

202 
u_t32_t
 
ags
,

203 
__v_t_y_y
 *
yp
)

205 
DbEnv
 *
dbv
;

206 
_y
 *
dbv_p
;

207 
t
;

209 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

210 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

212 
t
 = 
dbv
->
	`t_y
(
sswd
, 
ags
);

214 
yp
->
us
 = 
t
;

216 
	}
}

219 
	$__v_g_ags_oc
(

220 
u_t
 
dbv_id
,

221 
__v_g_ags_y
 *
yp
)

223 
DbEnv
 *
dbv
;

224 
_y
 *
dbv_p
;

226 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

227 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

229 
yp
->
us
 = 
dbv
->
	`g_ags
(&yp->
ags
);

230 
	}
}

233 
	$__v_t_ags_oc
(

234 
u_t
 
dbv_id
,

235 
u_t32_t
 
ags
,

236 
u_t32_t
 
off
,

237 
__v_t_ags_y
 *
yp
)

239 
DbEnv
 *
dbv
;

240 
_y
 *
dbv_p
;

241 
t
;

243 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

244 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

246 
t
 = 
dbv
->
	`t_ags
(
ags
, 
off
);

247 i(
off
)

248 
dbv_p
->
_vdp
.
ags
 = 
ags
;

250 
dbv_p
->
_vdp
.
offags
 = 
ags
;

252 
yp
->
us
 = 
t
;

254 
	}
}

257 
	$__v_g_home_oc
(

258 
u_t
 
dbv_id
,

259 
__v_g_home_y
 *
yp
)

261 
DbEnv
 *
dbv
;

262 
_y
 *
dbv_p
;

264 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

265 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

267 
yp
->
us
 = 
dbv
->
	`g_home
((cڡ **)&yp->
home
);

268 
	}
}

271 
	$__v_g_ݒ_ags_oc
(

272 
u_t
 
dbv_id
,

273 
__v_g_ݒ_ags_y
 *
yp
)

275 
DbEnv
 *
dbv
;

276 
_y
 *
dbv_p
;

278 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

279 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

281 
yp
->
us
 = 
dbv
->
	`g_ݒ_ags
(&yp->
ags
);

282 
	}
}

285 
	$__v_ݒ_oc
(

286 
u_t
 
dbv_id
,

287 *
home
,

288 
u_t32_t
 
ags
,

289 
u_t32_t
 
mode
,

290 
__v_ݒ_y
 *
yp
)

292 
DbEnv
 *
dbv
;

293 
_y
 *
dbv_p
, *
w_p
;

294 
u_t32_t
 
wags
, 
sheags
;

295 
t
;

296 
home_y
 *
fuhome
;

298 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

299 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

300 
fuhome
 = 
	`g_fuhome
(
home
);

301 i(
fuhome
 =
NULL
) {

302 
t
 = 
DB_NOSERVER_HOME
;

303 
out
;

310 i((
ags
 & 
DB_INIT_LOCK
) &&

311 (
t
 = 
dbv
->
	`t_lk_de
(
DB_LOCK_DEFAULT
)) != 0)

312 
out
;

314 i(
__dbv_vbo
) {

315 
dbv
->
	`t_rfe
(
dr
);

316 
dbv
->
	`t_fx
(
fuhome
->
home
);

318 
dbv
->
	`t_rfe
(
NULL
);

323 
wags
 = (
ags
 & ~
DB_SERVER_FLAGMASK
);

324 
sheags
 = (
wags
 & 
DB_SERVER_ENVFLAGS
);

328 
yp
->
v_id
 = 
dbv_id
;

329 i((
w_p
 = 
	`__dbv_shnv
(
dbv_p
, 
fuhome
, 
sheags
))

330 !
NULL
) {

334 i(
__dbv_vbo
)

335 
	`tf
("Shgnv ID %ld\n", 
w_p
->
_id
);

336 
yp
->
v_id
 = 
w_p
->
_id
;

337 
t
 = 
	`__v_o_t
(
dbv_id
, 0, 0);

339 
t
 = 
dbv
->
	`ݒ
(
fuhome
->
home
, 
wags
, 
mode
);

340 
dbv_p
->
_vdp
.
home
 = 
fuhome
;

341 
dbv_p
->
_vdp
.
vags
 = 
sheags
;

343 
out
: 
yp
->
us
 = 
t
;

345 
	}
}

348 
	$__v_move_oc
(

349 
u_t
 
dbv_id
,

350 *
home
,

351 
u_t32_t
 
ags
,

352 
__v_move_y
 *
yp
)

354 
DbEnv
 *
dbv
;

355 
_y
 *
dbv_p
;

356 
t
;

357 
home_y
 *
fuhome
;

359 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

360 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

361 
fuhome
 = 
	`g_fuhome
(
home
);

362 i(
fuhome
 =
NULL
) {

363 
yp
->
us
 = 
DB_NOSERVER_HOME
;

367 
t
 = 
dbv
->
	`move
(
fuhome
->
home
, 
ags
);

368 
	`__dbd_p
(
dbv_p
);

369 
yp
->
us
 = 
t
;

371 
	}
}

374 
	$__txn_abt_oc
(

375 
u_t
 
tx_id
,

376 
__txn_abt_y
 *
yp
)

378 
DbTxn
 *
tx
;

379 
_y
 *
tx_p
;

380 
t
;

382 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

383 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

385 
t
 = 
tx
->
	`abt
();

386 
	`__dbd_p
(
tx_p
);

387 
yp
->
us
 = 
t
;

389 
	}
}

392 
	$__v_txn_beg_oc
(

393 
u_t
 
dbv_id
,

394 
u_t
 
_id
,

395 
u_t32_t
 
ags
,

396 
__v_txn_beg_y
 *
yp
)

398 
DbEnv
 *
dbv
;

399 
DbTxn
 *

, *
tx
;

400 
_y
 *
p
, *
dbv_p
, *
_p
;

401 
t
;

403 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

404 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

405 
_p
 = 
NULL
;

407 
p
 = 
	`w__t
(&
yp
->
us
);

408 i(
p
 =
NULL
)

411 i(
_id
 != 0) {

412 
	`ACTIVATE_CTP
(
_p
, 
_id
, 
CT_TXN
);

413 

 = (
DbTxn
 *)
_p
->
_yp
;

414 
p
->
_aiv
 = 
_p
->ct_activep;

416 

 = 
NULL
;

418 
t
 = 
dbv
->
	`txn_beg
(

, &
tx
, 
ags
 | 
DB_TXN_NOWAIT
);

419 i(
t
 == 0) {

420 
p
->
_tx
 = 
tx
;

421 
p
->
_ty
 = 
CT_TXN
;

422 
p
->
_
 = 
_p
;

423 
p
->
_v
 = 
dbv_p
;

424 
yp
->
txnid_id
 = 
p
->
_id
;

425 
	`__dbv_imeout
(
p
, 
dbv_p
->
_timeout
);

426 
	`__dbv_aive
(
p
);

428 
	`__dbr_p
(
p
);

430 
yp
->
us
 = 
t
;

432 
	}
}

435 
	$__txn_comm_oc
(

436 
u_t
 
tx_id
,

437 
u_t32_t
 
ags
,

438 
__txn_comm_y
 *
yp
)

440 
DbTxn
 *
tx
;

441 
_y
 *
tx_p
;

442 
t
;

444 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

445 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

447 
t
 = 
tx
->
	`comm
(
ags
);

448 
	`__dbd_p
(
tx_p
);

450 
yp
->
us
 = 
t
;

452 
	}
}

455 
	$__txn_disrd_oc
(

456 
u_t
 
tx_id
,

457 
u_t32_t
 
ags
,

458 
__txn_disrd_y
 *
yp
)

460 
DbTxn
 *
tx
;

461 
_y
 *
tx_p
;

462 
t
;

464 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

465 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

467 
t
 = 
tx
->
	`disrd
(
ags
);

468 
	`__dbd_p
(
tx_p
);

470 
yp
->
us
 = 
t
;

472 
	}
}

475 
	$__txn_e_oc
(

476 
u_t
 
tx_id
,

477 
u_t8_t
 *
gid
,

478 
__txn_e_y
 *
yp
)

480 
DbTxn
 *
tx
;

481 
_y
 *
tx_p
;

482 
t
;

484 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

485 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

487 
t
 = 
tx
->
	`e
(
gid
);

488 
yp
->
us
 = 
t
;

490 
	}
}

493 
	$__v_txn_cov_oc
(

494 
u_t
 
dbv_id
,

495 
u_t32_t
 
cou
,

496 
u_t32_t
 
ags
,

497 
__v_txn_cov_y
 *
yp
,

498 * 
p
)

500 
DbEnv
 *
dbv
;

501 
DbPi
 *
db
, *
p
;

502 
_y
 *
dbv_p
, *
p
;

503 
ri
, 
i
, 
tcou
;

504 
u_t32_t
 *
txnidp
;

505 
t
;

506 *
gid
;

508 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

509 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

510 *
p
 = 0;

512 i((
t
 = 
	`__os_mloc
(

513 
dbv
->
	`g_DB_ENV
(), 
cou
 * (
DbPi
), &
db
)) != 0)

514 
out
;

515 i((
t
 = 
dbv
->
	`txn_cov
(
db
, 
cou
, &
tcou
, 
ags
)) != 0)

516 
out
;

520 
yp
->
tcou
 =etcount;

521 i(
tcou
 == 0) {

522 
yp
->
txn
.
txn_v
 = 
NULL
;

523 
yp
->
txn
.
txn_n
 = 0;

524 
yp
->
gid
.
gid_v
 = 
NULL
;

525 
yp
->
gid
.
gid_n
 = 0;

532 i((
t
 = 
	`__os_oc
(
dbv
->
	`g_DB_ENV
(), 
tcou
, (
u_t32_t
),

533 &
yp
->
txn
.
txn_v
)) != 0)

534 
out
;

535 
yp
->
txn
.
txn_n
 = 
tcou
 * (
u_t32_t
);

536 i((
t
 = 
	`__os_oc
(
dbv
->
	`g_DB_ENV
(), 
tcou
, 
DB_XIDDATASIZE
,

537 &
yp
->
gid
.
gid_v
)) != 0) {

538 
	`__os_
(
dbv
->
	`g_DB_ENV
(), 
yp
->
txn
.
txn_v
);

539 
out
;

541 
yp
->
gid
.
gid_n
 = 
tcou
 * 
DB_XIDDATASIZE
;

548 
i
 = 0;

549 
p
 = 
db
;

550 
gid
 = 
yp
->gid.
gid_v
;

551 
txnidp
 = 
yp
->
txn
.
txn_v
;

552 
i
++ < 
tcou
) {

553 
p
 = 
	`w__t
(&
t
);

554 i(
t
 != 0) {

555 
i
--;

556 
out2
;

558 
p
->
_tx
 = 
p
->
txn
;

559 
p
->
_ty
 = 
CT_TXN
;

560 
p
->
_
 = 
NULL
;

561 
p
->
_v
 = 
dbv_p
;

562 
	`__dbv_imeout
(
p
, 
dbv_p
->
_timeout
);

563 
	`__dbv_aive
(
p
);

565 *
txnidp
 = 
p
->
_id
;

566 
	`memy
(
gid
, 
p
->gid, 
DB_XIDDATASIZE
);

568 
p
++;

569 
txnidp
++;

570 
gid
 +
DB_XIDDATASIZE
;

576 *
p
 = 1;

577 
out
:

578 i(
db
 !
NULL
)

579 
	`__os_
(
dbv
->
	`g_DB_ENV
(), 
db
);

580 
yp
->
us
 = 
t
;

582 
out2
:

587 
txnidp
 = 
yp
->
txn
.
txn_v
, 
ri
 = 0;

588 
ri
 < 
i
;i++, 
txnidp
++) {

589 
p
 = 
	`g_b˒t
(*
txnidp
);

590 
	`__dbr_p
(
p
);

592 
	`__os_
(
dbv
->
	`g_DB_ENV
(), 
yp
->
txn
.
txn_v
);

593 
	`__os_
(
dbv
->
	`g_DB_ENV
(), 
yp
->
gid
.
gid_v
);

594 
	`__os_
(
dbv
->
	`g_DB_ENV
(), 
db
);

595 
yp
->
us
 = 
t
;

597 
	}
}

600 
	$__db_assoc_oc
(

601 
u_t
 
dbp_id
,

602 
u_t
 
tx_id
,

603 
u_t
 
sdbp_id
,

604 
u_t32_t
 
ags
,

605 
__db_assoc_y
 *
yp
)

607 
Db
 *
dbp
, *
sdbp
;

608 
DbTxn
 *
tx
;

609 
_y
 *
dbp_p
, *
sdbp_p
, *
tx_p
;

610 
t
;

612 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

613 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

614 
	`ACTIVATE_CTP
(
sdbp_p
, 
sdbp_id
, 
CT_DB
);

615 
sdbp
 = (
Db
 *)
sdbp_p
->
_yp
;

616 i(
tx_id
 != 0) {

617 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

618 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

620 
tx
 = 
NULL
;

628 i(
	`LF_ISSET
(
DB_RPC2ND_MASK
 | 
DB_CREATE
))

629 
t
 = 
EINVAL
;

631 
t
 = 
dbp
->
	`assoc
(
tx
, 
sdbp
, 
NULL
, 
ags
);

633 
yp
->
us
 = 
t
;

635 
	}
}

638 
	$__db_g_bt_mkey_oc
(

639 
u_t
 
dbp_id
,

640 
__db_g_bt_mkey_y
 *
yp
)

642 
Db
 *
dbp
;

643 
_y
 *
dbp_p
;

645 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

646 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

648 
yp
->
us
 = 
dbp
->
	`g_bt_mkey
(&yp->
mkey
);

649 
	}
}

652 
	$__db_t_bt_mkey_oc
(

653 
u_t
 
dbp_id
,

654 
u_t32_t
 
mkey
,

655 
__db_t_bt_mkey_y
 *
yp
)

657 
Db
 *
dbp
;

658 
_y
 *
dbp_p
;

659 
t
;

661 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

662 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

664 
t
 = 
dbp
->
	`t_bt_mkey
(
mkey
);

666 
yp
->
us
 = 
t
;

668 
	}
}

671 
	$__db_o_oc
(

672 
u_t
 
dbp_id
,

673 
u_t32_t
 
ags
,

674 
__db_o_y
 *
yp
)

676 
_y
 *
dbp_p
;

678 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

679 
yp
->
us
 = 
	`__db_o_t
(
dbp_id
, 
ags
);

681 
	}
}

684 
	$__db__oc
(

685 
u_t
 
dbv_id
,

686 
u_t32_t
 
ags
,

687 
__db__y
 *
yp
)

689 
Db
 *
dbp
;

690 
DbEnv
 *
dbv
;

691 
_y
 *
dbv_p
, *
dbp_p
;

693 
	`ACTIVATE_CTP
(
dbv_p
, 
dbv_id
, 
CT_ENV
);

694 
dbv
 = (
DbEnv
 *)
dbv_p
->
_yp
;

696 
dbp_p
 = 
	`w__t
(&
yp
->
us
);

697 i(
dbp_p
 =
NULL
)

703 
	`DB_ASSERT
(
NULL
, 
dbv
 != NULL);

704 
dbp
 = 
w
 
	`Db
(
dbv
, 
ags
);

705 
dbp_p
->
_dbp
 = 
dbp
;

706 
dbp_p
->
_ty
 = 
CT_DB
;

707 
dbp_p
->
_
 = 
dbv_p
;

708 
dbp_p
->
_v
 = 
dbv_p
;

709 
yp
->
db_id
 = 
dbp_p
->
_id
;

710 
yp
->
us
 = 0;

712 
	}
}

715 
	$__db_d_oc
(

716 
u_t
 
dbp_id
,

717 
u_t
 
tx_id
,

718 
u_t32_t
 
keydn
,

719 
u_t32_t
 
keydoff
,

720 
u_t32_t
 
keyun
,

721 
u_t32_t
 
keyags
,

722 *
keyda
,

723 
u_t32_t
 
keysize
,

724 
u_t32_t
 
ags
,

725 
__db_d_y
 *
yp
)

727 
Db
 *
dbp
;

728 
DbTxn
 *
tx
;

729 
_y
 *
dbp_p
, *
tx_p
;

730 
t
;

732 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

733 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

734 i(
tx_id
 != 0) {

735 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

736 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

738 
tx
 = 
NULL
;

741 
Dbt
 
	`key
(
keyda
, 
keysize
);

742 
key
.
	`t_dn
(
keydn
);

743 
key
.
	`t_un
(
keyun
);

744 
key
.
	`t_doff
(
keydoff
);

745 
key
.
	`t_ags
(
keyags
);

747 
t
 = 
dbp
->
	`d
(
tx
, &
key
, 
ags
);

749 
yp
->
us
 = 
t
;

751 
	}
}

754 
	$__db_g_y_ags_oc
(

755 
u_t
 
dbp_id
,

756 
__db_g_y_ags_y
 *
yp
)

758 
Db
 *
dbp
;

759 
_y
 *
dbp_p
;

761 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

762 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

764 
yp
->
us
 = 
dbp
->
	`g_y_ags
(&yp->
ags
);

765 
	}
}

768 
	$__db_t_y_oc
(

769 
u_t
 
dbp_id
,

770 *
sswd
,

771 
u_t32_t
 
ags
,

772 
__db_t_y_y
 *
yp
)

774 
Db
 *
dbp
;

775 
_y
 *
dbp_p
;

776 
t
;

778 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

779 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

781 
t
 = 
dbp
->
	`t_y
(
sswd
, 
ags
);

782 
yp
->
us
 = 
t
;

784 
	}
}

787 
	$__db_g_q_exsize_oc
(

788 
u_t
 
dbp_id
,

789 
__db_g_q_exsize_y
 *
yp
)

791 
Db
 *
dbp
;

792 
_y
 *
dbp_p
;

794 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

795 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

797 
yp
->
us
 = 
dbp
->
	`g_q_exsize
(&yp->
exsize
);

798 
	}
}

801 
	$__db_t_q_exsize_oc
(

802 
u_t
 
dbp_id
,

803 
u_t32_t
 
exsize
,

804 
__db_t_q_exsize_y
 *
yp
)

806 
Db
 *
dbp
;

807 
_y
 *
dbp_p
;

808 
t
;

810 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

811 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

813 
t
 = 
dbp
->
	`t_q_exsize
(
exsize
);

815 
yp
->
us
 = 
t
;

817 
	}
}

820 
	$__db_g_ags_oc
(

821 
u_t
 
dbp_id
,

822 
__db_g_ags_y
 *
yp
)

824 
Db
 *
dbp
;

825 
_y
 *
dbp_p
;

827 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

828 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

830 
yp
->
us
 = 
dbp
->
	`g_ags
(&yp->
ags
);

831 
	}
}

834 
	$__db_t_ags_oc
(

835 
u_t
 
dbp_id
,

836 
u_t32_t
 
ags
,

837 
__db_t_ags_y
 *
yp
)

839 
Db
 *
dbp
;

840 
_y
 *
dbp_p
;

841 
t
;

843 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

844 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

846 
t
 = 
dbp
->
	`t_ags
(
ags
);

847 
dbp_p
->
_dbdp
.
tags
 = 
ags
;

849 
yp
->
us
 = 
t
;

851 
	}
}

854 
	$__db_g_oc
(

855 
u_t
 
dbp_id
,

856 
u_t
 
tx_id
,

857 
u_t32_t
 
keydn
,

858 
u_t32_t
 
keydoff
,

859 
u_t32_t
 
keyun
,

860 
u_t32_t
 
keyags
,

861 *
keyda
,

862 
u_t32_t
 
keysize
,

863 
u_t32_t
 
dadn
,

864 
u_t32_t
 
dadoff
,

865 
u_t32_t
 
daun
,

866 
u_t32_t
 
daags
,

867 *
dada
,

868 
u_t32_t
 
dasize
,

869 
u_t32_t
 
ags
,

870 
__db_g_y
 *
yp
,

871 * 
p
)

873 
Db
 *
dbp
;

874 
DbTxn
 *
tx
;

875 
_y
 *
dbp_p
, *
tx_p
;

876 
t
;

877 *
tmpda
;

879 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

880 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

881 i(
tx_id
 != 0) {

882 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

883 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

885 
tx
 = 
NULL
;

887 
yp
->
keyda
.
keyda_v
 = 
NULL
;

888 
yp
->
dada
.
dada_v
 = 
NULL
;

889 *
p
 = 0;

892 
Dbt
 
	`key
(
keyda
, 
keysize
);

893 
key
.
	`t_dn
(
keydn
);

894 
key
.
	`t_un
(
keyun
);

895 
key
.
	`t_doff
(
keydoff
);

899 
key
.
	`t_ags
(
DB_DBT_MALLOC
 | (
keyags
 & 
DB_DBT_PARTIAL
));

901 
Dbt
 
	`da
(
dada
, 
dasize
);

902 
da
.
	`t_dn
(
dadn
);

903 
da
.
	`t_un
(
daun
);

904 
da
.
	`t_doff
(
dadoff
);

908 
daags
 &
DB_DBT_PARTIAL
;

909 i(
ags
 & 
DB_MULTIPLE
) {

910 i(
da
.
	`g_da
() == 0) {

911 
t
 = 
	`__os_umloc
(
dbp
->
	`g_DB
()->
dbv
,

912 
daun
, &
tmpda
);

913 i(
t
 != 0)

914 
r
;

915 
da
.
	`t_da
(
tmpda
);

917 
daags
 |
DB_DBT_USERMEM
;

919 
daags
 |
DB_DBT_MALLOC
;

920 
da
.
	`t_ags
(
daags
);

923 
t
 = 
dbp
->
	`g
(
tx
, &
key
, &
da
, 
ags
);

927 i(
t
 == 0) {

936 *
p
 = 1;

940 i(
key
.
	`g_da
(=
keyda
) {

941 
t
 = 
	`__os_umloc
(
dbp
->
	`g_DB
()->
dbv
,

942 
key
.
	`g_size
(), &
yp
->
keyda
.
keyda_v
);

943 i(
t
 != 0)

944 
r
;

945 
	`memy
(
yp
->
keyda
.
keyda_v
,

946 
key
.
	`g_da
(), key.
	`g_size
());

948 
yp
->
keyda
.
keyda_v
 = (*)
key
.
	`g_da
();

950 
yp
->
keyda
.
keyda_n
 = 
key
.
	`g_size
();

955 i(
da
.
	`g_da
(=
dada
) {

956 
t
 = 
	`__os_umloc
(
dbp
->
	`g_DB
()->
dbv
,

957 
da
.
	`g_size
(), &
yp
->
dada
.
dada_v
);

958 i(
t
 != 0)

959 
r
;

960 
	`memy
(
yp
->
dada
.
dada_v
, 
da
.
	`g_da
(),

961 
da
.
	`g_size
());

963 
yp
->
dada
.
dada_v
 = (*)
da
.
	`g_da
();

964 
yp
->
dada
.
dada_n
 = 
da
.
	`g_size
();

966 
r
: 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

967 
key
.
	`g_da
(), 
keyda
);

968 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

969 
da
.
	`g_da
(), 
dada
);

970 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

971 
yp
->
keyda
.
keyda_v
, 
key
.
	`g_da
());

972 
yp
->
keyda
.
keyda_v
 = 
NULL
;

973 
yp
->
keyda
.
keyda_n
 = 0;

974 
yp
->
dada
.
dada_v
 = 
NULL
;

975 
yp
->
dada
.
dada_n
 = 0;

976 *
p
 = 0;

978 
yp
->
us
 = 
t
;

980 
	}
}

983 
	$__db_g_h_f_oc
(

984 
u_t
 
dbp_id
,

985 
__db_g_h_f_y
 *
yp
)

987 
Db
 *
dbp
;

988 
_y
 *
dbp_p
;

990 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

991 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

993 
yp
->
us
 = 
dbp
->
	`g_h_f
(&yp->
f
);

994 
	}
}

997 
	$__db_t_h_f_oc
(

998 
u_t
 
dbp_id
,

999 
u_t32_t
 
f
,

1000 
__db_t_h_f_y
 *
yp
)

1002 
Db
 *
dbp
;

1003 
_y
 *
dbp_p
;

1004 
t
;

1006 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1007 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1009 
t
 = 
dbp
->
	`t_h_f
(
f
);

1011 
yp
->
us
 = 
t
;

1013 
	}
}

1016 
	$__db_g_h_m_oc
(

1017 
u_t
 
dbp_id
,

1018 
__db_g_h_m_y
 *
yp
)

1020 
Db
 *
dbp
;

1021 
_y
 *
dbp_p
;

1023 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1024 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1026 
yp
->
us
 = 
dbp
->
	`g_h_m
(&yp->
m
);

1027 
	}
}

1030 
	$__db_t_h_m_oc
(

1031 
u_t
 
dbp_id
,

1032 
u_t32_t
 
m
,

1033 
__db_t_h_m_y
 *
yp
)

1035 
Db
 *
dbp
;

1036 
_y
 *
dbp_p
;

1037 
t
;

1039 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1040 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1042 
t
 = 
dbp
->
	`t_h_m
(
m
);

1044 
yp
->
us
 = 
t
;

1046 
	}
}

1049 
	$__db_key_nge_oc
(

1050 
u_t
 
dbp_id
,

1051 
u_t
 
tx_id
,

1052 
u_t32_t
 
keydn
,

1053 
u_t32_t
 
keydoff
,

1054 
u_t32_t
 
keyun
,

1055 
u_t32_t
 
keyags
,

1056 *
keyda
,

1057 
u_t32_t
 
keysize
,

1058 
u_t32_t
 
ags
,

1059 
__db_key_nge_y
 *
yp
)

1061 
Db
 *
dbp
;

1062 
DB_KEY_RANGE
 
nge
;

1063 
DbTxn
 *
tx
;

1064 
_y
 *
dbp_p
, *
tx_p
;

1065 
t
;

1067 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1068 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1069 i(
tx_id
 != 0) {

1070 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1071 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

1073 
tx
 = 
NULL
;

1076 
Dbt
 
	`key
(
keyda
, 
keysize
);

1077 
key
.
	`t_dn
(
keydn
);

1078 
key
.
	`t_un
(
keyun
);

1079 
key
.
	`t_doff
(
keydoff
);

1080 
key
.
	`t_ags
(
keyags
);

1082 
t
 = 
dbp
->
	`key_nge
(
tx
, &
key
, &
nge
, 
ags
);

1084 
yp
->
us
 = 
t
;

1085 
yp
->
ss
 = 
nge
.less;

1086 
yp
->
equ
 = 
nge
.equal;

1087 
yp
->
g
 = 
nge
.greater;

1089 
	}
}

1092 
	$__db_g_ld_oc
(

1093 
u_t
 
dbp_id
,

1094 
__db_g_ld_y
 *
yp
)

1096 
Db
 *
dbp
;

1097 
_y
 *
dbp_p
;

1099 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1100 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1102 
yp
->
us
 = 
dbp
->
	`g_ld
((*)&yp->
ld
);

1103 
	}
}

1106 
	$__db_t_ld_oc
(

1107 
u_t
 
dbp_id
,

1108 
u_t32_t
 
ld
,

1109 
__db_t_ld_y
 *
yp
)

1111 
Db
 *
dbp
;

1112 
_y
 *
dbp_p
;

1113 
t
;

1115 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1116 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1118 
t
 = 
dbp
->
	`t_ld
(
ld
);

1120 
yp
->
us
 = 
t
;

1122 
	}
}

1125 
	$__db_g_dbme_oc
(

1126 
u_t
 
dbp_id
,

1127 
__db_g_dbme_y
 *
yp
)

1129 
Db
 *
dbp
;

1130 
_y
 *
dbp_p
;

1132 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1133 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1135 
yp
->
us
 = 
dbp
->
	`g_dbme
(

1136 (cڡ **)&
yp
->
fame
, (cڡ **)&yp->
dbme
);

1137 
	}
}

1140 
	$__db_g_ݒ_ags_oc
(

1141 
u_t
 
dbp_id
,

1142 
__db_g_ݒ_ags_y
 *
yp
)

1144 
Db
 *
dbp
;

1145 
_y
 *
dbp_p
;

1147 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1148 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1150 
yp
->
us
 = 
dbp
->
	`g_ݒ_ags
(&yp->
ags
);

1151 
	}
}

1154 
	$__db_ݒ_oc
(

1155 
u_t
 
dbp_id
,

1156 
u_t
 
tx_id
,

1157 *
me
,

1158 *
subdb
,

1159 
u_t32_t
 
ty
,

1160 
u_t32_t
 
ags
,

1161 
u_t32_t
 
mode
,

1162 
__db_ݒ_y
 *
yp
)

1164 
Db
 *
dbp
;

1165 
DbTxn
 *
tx
;

1166 
DBTYPE
 
dbty
;

1167 
_y
 *
dbp_p
, *
w_p
, *
tx_p
;

1168 
isswd
, 
t
;

1170 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1171 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1172 i(
tx_id
 != 0) {

1173 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1174 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

1176 
tx
 = 
NULL
;

1178 
yp
->
db_id
 = 
dbp_id
;

1179 i((
w_p
 = 
	`__dbv_shedb
(

1180 
dbp_p
, 
me
, 
subdb
, (
DBTYPE
)
ty
, 
ags
)!
NULL
) {

1184 i(
__dbv_vbo
)

1185 
	`tf
("Shg db ID %ld\n", 
w_p
->
_id
);

1186 
yp
->
db_id
 = 
w_p
->
_id
;

1187 
t
 = 
	`__db_o_t
(
dbp_id
, 0);

1188 
out
;

1190 
t
 = 
dbp
->
	`ݒ
(
tx
, 
me
, 
subdb
, (
DBTYPE
)
ty
, 
ags
, 
mode
);

1191 i(
t
 == 0) {

1192 ()
dbp
->
	`g_ty
(&
dbty
);

1193 
yp
->
ty
 = 
dbty
;

1200 ()
dbp
->
	`g_byswd
(&
isswd
);

1201 i(
	`__db_byd
(
NULL
, 1234) == 0) {

1202 i(
isswd
 == 0)

1203 
yp
->
ld
 = 1234;

1205 
yp
->
ld
 = 4321;

1207 i(
isswd
 == 0)

1208 
yp
->
ld
 = 4321;

1210 
yp
->
ld
 = 1234;

1212 
dbp_p
->
_dbdp
.
ty
 = 
dbty
;

1213 
dbp_p
->
_dbdp
.
dbags
 = 
	`LF_ISSET
(
DB_SERVER_DBFLAGS
);

1214 i(
me
 =
NULL
)

1215 
dbp_p
->
_dbdp
.
db
 = 
NULL
;

1216 i((
t
 = 
	`__os_rdup
(
dbp
->
	`g_DB
()->
dbv
, 
me
,

1217 &
dbp_p
->
_dbdp
.
db
)) != 0)

1218 
out
;

1219 i(
subdb
 =
NULL
)

1220 
dbp_p
->
_dbdp
.
subdb
 = 
NULL
;

1221 i((
t
 = 
	`__os_rdup
(
dbp
->
	`g_DB
()->
dbv
, 
subdb
,

1222 &
dbp_p
->
_dbdp
.
subdb
)) != 0)

1223 
out
;

1225 
out
:

1226 
yp
->
us
 = 
t
;

1228 
	}
}

1231 
	$__db_g_gesize_oc
(

1232 
u_t
 
dbp_id
,

1233 
__db_g_gesize_y
 *
yp
)

1235 
Db
 *
dbp
;

1236 
_y
 *
dbp_p
;

1238 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1239 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1241 
yp
->
us
 = 
dbp
->
	`g_gesize
(&yp->
gesize
);

1242 
	}
}

1245 
	$__db_t_gesize_oc
(

1246 
u_t
 
dbp_id
,

1247 
u_t32_t
 
gesize
,

1248 
__db_t_gesize_y
 *
yp
)

1250 
Db
 *
dbp
;

1251 
_y
 *
dbp_p
;

1252 
t
;

1254 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1255 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1257 
t
 = 
dbp
->
	`t_gesize
(
gesize
);

1259 
yp
->
us
 = 
t
;

1261 
	}
}

1264 
	$__db_g_iܙy_oc
(

1265 
u_t
 
dbp_id
,

1266 
__db_g_iܙy_y
 *
yp
)

1268 
Db
 *
dbp
;

1269 
_y
 *
dbp_p
;

1271 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1272 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1274 
yp
->
us
 =

1275 
dbp
->
	`g_iܙy
((
DB_CACHE_PRIORITY
 *)&
yp
->
iܙy
);

1276 
	}
}

1279 
	$__db_t_iܙy_oc
(

1280 
u_t
 
dbp_id
,

1281 
u_t32_t
 
iܙy
,

1282 
__db_t_iܙy_y
 *
yp
)

1284 
Db
 *
dbp
;

1285 
_y
 *
dbp_p
;

1286 
t
;

1288 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1289 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1291 
t
 = 
dbp
->
	`t_iܙy
((
DB_CACHE_PRIORITY
)
iܙy
);

1293 
yp
->
us
 = 
t
;

1295 
	}
}

1298 
	$__db_pg_oc
(

1299 
u_t
 
dbp_id
,

1300 
u_t
 
tx_id
,

1301 
u_t32_t
 
skeydn
,

1302 
u_t32_t
 
skeydoff
,

1303 
u_t32_t
 
skeyun
,

1304 
u_t32_t
 
skeyags
,

1305 *
skeyda
,

1306 
u_t32_t
 
skeysize
,

1307 
u_t32_t
 
pkeydn
,

1308 
u_t32_t
 
pkeydoff
,

1309 
u_t32_t
 
pkeyun
,

1310 
u_t32_t
 
pkeyags
,

1311 *
pkeyda
,

1312 
u_t32_t
 
pkeysize
,

1313 
u_t32_t
 
dadn
,

1314 
u_t32_t
 
dadoff
,

1315 
u_t32_t
 
daun
,

1316 
u_t32_t
 
daags
,

1317 *
dada
,

1318 
u_t32_t
 
dasize
,

1319 
u_t32_t
 
ags
,

1320 
__db_pg_y
 *
yp
,

1321 * 
p
)

1323 
Db
 *
dbp
;

1324 
DbTxn
 *
tx
;

1325 
_y
 *
dbp_p
, *
tx_p
;

1326 
t
;

1328 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1329 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1330 i(
tx_id
 != 0) {

1331 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1332 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

1334 
tx
 = 
NULL
;

1336 
yp
->
skeyda
.
skeyda_v
 = 
NULL
;

1337 
yp
->
pkeyda
.
pkeyda_v
 = 
NULL
;

1338 
yp
->
dada
.
dada_v
 = 
NULL
;

1339 *
p
 = 0;

1345 
Dbt
 
	`skey
(
skeyda
, 
skeysize
);

1346 
skey
.
	`t_dn
(
skeydn
);

1347 
skey
.
	`t_un
(
skeyun
);

1348 
skey
.
	`t_doff
(
skeydoff
);

1349 
skey
.
	`t_ags
(
DB_DBT_MALLOC
 | (
skeyags
 & 
DB_DBT_PARTIAL
));

1351 
Dbt
 
	`pkey
(
pkeyda
, 
pkeysize
);

1352 
pkey
.
	`t_dn
(
pkeydn
);

1353 
pkey
.
	`t_un
(
pkeyun
);

1354 
pkey
.
	`t_doff
(
pkeydoff
);

1355 
pkey
.
	`t_ags
(
DB_DBT_MALLOC
 | (
pkeyags
 & 
DB_DBT_PARTIAL
));

1357 
Dbt
 
	`da
(
dada
, 
dasize
);

1358 
da
.
	`t_dn
(
dadn
);

1359 
da
.
	`t_un
(
daun
);

1360 
da
.
	`t_doff
(
dadoff
);

1361 
da
.
	`t_ags
(
DB_DBT_MALLOC
 | (
daags
 & 
DB_DBT_PARTIAL
));

1364 
t
 = 
dbp
->
	`pg
(
tx
, &
skey
, &
pkey
, &
da
, 
ags
);

1368 i(
t
 == 0) {

1377 *
p
 = 1;

1381 i(
skey
.
	`g_da
(=
skeyda
) {

1382 
t
 = 
	`__os_umloc
(
dbp
->
	`g_DB
()->
dbv
,

1383 
skey
.
	`g_size
(), &
yp
->
skeyda
.
skeyda_v
);

1384 i(
t
 != 0)

1385 
r
;

1386 
	`memy
(
yp
->
skeyda
.
skeyda_v
, 
skey
.
	`g_da
(),

1387 
skey
.
	`g_size
());

1389 
yp
->
skeyda
.
skeyda_v
 = (*)
skey
.
	`g_da
();

1391 
yp
->
skeyda
.
skeyda_n
 = 
skey
.
	`g_size
();

1396 i(
pkey
.
	`g_da
(=
pkeyda
) {

1397 
t
 = 
	`__os_umloc
(
dbp
->
	`g_DB
()->
dbv
,

1398 
pkey
.
	`g_size
(), &
yp
->
pkeyda
.
pkeyda_v
);

1399 i(
t
 != 0)

1400 
r
;

1401 
	`memy
(
yp
->
pkeyda
.
pkeyda_v
, 
pkey
.
	`g_da
(),

1402 
pkey
.
	`g_size
());

1404 
yp
->
pkeyda
.
pkeyda_v
 = (*)
pkey
.
	`g_da
();

1405 
yp
->
pkeyda
.
pkeyda_n
 = 
pkey
.
	`g_size
();

1410 i(
da
.
	`g_da
(=
dada
) {

1411 
t
 = 
	`__os_umloc
(
dbp
->
	`g_DB
()->
dbv
,

1412 
da
.
	`g_size
(), &
yp
->
dada
.
dada_v
);

1413 i(
t
 != 0)

1414 
r
;

1415 
	`memy
(
yp
->
dada
.
dada_v
, 
da
.
	`g_da
(),

1416 
da
.
	`g_size
());

1418 
yp
->
dada
.
dada_v
 = (*)
da
.
	`g_da
();

1419 
yp
->
dada
.
dada_n
 = 
da
.
	`g_size
();

1421 
r
: 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

1422 
skey
.
	`g_da
(), 
skeyda
);

1423 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

1424 
pkey
.
	`g_da
(), 
pkeyda
);

1425 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

1426 
da
.
	`g_da
(), 
dada
);

1427 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

1428 
yp
->
skeyda
.
skeyda_v
, 
skey
.
	`g_da
());

1429 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

1430 
yp
->
pkeyda
.
pkeyda_v
, 
pkey
.
	`g_da
());

1431 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

1432 
yp
->
dada
.
dada_v
, 
da
.
	`g_da
());

1433 
yp
->
skeyda
.
skeyda_v
 = 
NULL
;

1434 
yp
->
skeyda
.
skeyda_n
 = 0;

1435 
yp
->
pkeyda
.
pkeyda_v
 = 
NULL
;

1436 
yp
->
pkeyda
.
pkeyda_n
 = 0;

1437 
yp
->
dada
.
dada_v
 = 
NULL
;

1438 
yp
->
dada
.
dada_n
 = 0;

1439 *
p
 = 0;

1441 
yp
->
us
 = 
t
;

1443 
	}
}

1446 
	$__db_put_oc
(

1447 
u_t
 
dbp_id
,

1448 
u_t
 
tx_id
,

1449 
u_t32_t
 
keydn
,

1450 
u_t32_t
 
keydoff
,

1451 
u_t32_t
 
keyun
,

1452 
u_t32_t
 
keyags
,

1453 *
keyda
,

1454 
u_t32_t
 
keysize
,

1455 
u_t32_t
 
dadn
,

1456 
u_t32_t
 
dadoff
,

1457 
u_t32_t
 
daun
,

1458 
u_t32_t
 
daags
,

1459 *
dada
,

1460 
u_t32_t
 
dasize
,

1461 
u_t32_t
 
ags
,

1462 
__db_put_y
 *
yp
,

1463 * 
p
)

1465 
Db
 *
dbp
;

1466 
DbTxn
 *
tx
;

1467 
_y
 *
dbp_p
, *
tx_p
;

1468 
t
;

1470 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1471 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1472 i(
tx_id
 != 0) {

1473 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1474 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

1476 
tx
 = 
NULL
;

1478 
yp
->
keyda
.
keyda_v
 = 
NULL
;

1479 *
p
 = 0;

1482 
Dbt
 
	`key
(
keyda
, 
keysize
);

1483 
key
.
	`t_dn
(
keydn
);

1484 
key
.
	`t_un
(
keyun
);

1485 
key
.
	`t_doff
(
keydoff
);

1486 
key
.
	`t_ags
(
DB_DBT_MALLOC
 | (
keyags
 & 
DB_DBT_PARTIAL
));

1488 
Dbt
 
	`da
(
dada
, 
dasize
);

1489 
da
.
	`t_dn
(
dadn
);

1490 
da
.
	`t_un
(
daun
);

1491 
da
.
	`t_doff
(
dadoff
);

1492 
da
.
	`t_ags
(
daags
);

1495 
t
 = 
dbp
->
	`put
(
tx
, &
key
, &
da
, 
ags
);

1500 i(
t
 =0 && (
ags
 =
DB_APPEND
)) {

1509 *
p
 = 1;

1513 i(
key
.
	`g_da
(=
keyda
) {

1514 
t
 = 
	`__os_umloc
(
dbp
->
	`g_DB
()->
dbv
,

1515 
key
.
	`g_size
(), &
yp
->
keyda
.
keyda_v
);

1516 i(
t
 != 0)

1517 
r
;

1518 
	`memy
(
yp
->
keyda
.
keyda_v
,

1519 
key
.
	`g_da
(), key.
	`g_size
());

1521 
yp
->
keyda
.
keyda_v
 = (*)
key
.
	`g_da
();

1523 
yp
->
keyda
.
keyda_n
 = 
key
.
	`g_size
();

1525 
r
: 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

1526 
key
.
	`g_da
(), 
keyda
);

1527 
	`FREE_IF_CHANGED
(
dbp
->
	`g_DB
()->
dbv
,

1528 
yp
->
keyda
.
keyda_v
, 
key
.
	`g_da
());

1529 
yp
->
keyda
.
keyda_v
 = 
NULL
;

1530 
yp
->
keyda
.
keyda_n
 = 0;

1531 *
p
 = 0;

1533 
yp
->
us
 = 
t
;

1535 
	}
}

1538 
	$__db_g__dim_oc
(

1539 
u_t
 
dbp_id
,

1540 
__db_g__dim_y
 *
yp
)

1542 
Db
 *
dbp
;

1543 
_y
 *
dbp_p
;

1545 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1546 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1548 
yp
->
us
 = 
dbp
->
	`g__dim
((*)&yp->
dim
);

1549 
	}
}

1552 
	$__db_t__dim_oc
(

1553 
u_t
 
dbp_id
,

1554 
u_t32_t
 
dim
,

1555 
__db_t__dim_y
 *
yp
)

1557 
Db
 *
dbp
;

1558 
_y
 *
dbp_p
;

1559 
t
;

1561 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1562 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1564 
t
 = 
dbp
->
	`t__dim
(
dim
);

1566 
yp
->
us
 = 
t
;

1568 
	}
}

1571 
	$__db_g__n_oc
(

1572 
u_t
 
dbp_id
,

1573 
__db_g__n_y
 *
yp
)

1575 
Db
 *
dbp
;

1576 
_y
 *
dbp_p
;

1578 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1579 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1581 
yp
->
us
 = 
dbp
->
	`g__n
(&yp->
n
);

1582 
	}
}

1585 
	$__db_t__n_oc
(

1586 
u_t
 
dbp_id
,

1587 
u_t32_t
 
n
,

1588 
__db_t__n_y
 *
yp
)

1590 
Db
 *
dbp
;

1591 
_y
 *
dbp_p
;

1592 
t
;

1594 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1595 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1597 
t
 = 
dbp
->
	`t__n
(
n
);

1599 
yp
->
us
 = 
t
;

1601 
	}
}

1604 
	$__db_g__d_oc
(

1605 
u_t
 
dbp_id
,

1606 
__db_g__d_y
 *
yp
)

1608 
Db
 *
dbp
;

1609 
_y
 *
dbp_p
;

1611 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1612 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1614 
yp
->
us
 = 
dbp
->
	`g__d
((*)&yp->
d
);

1615 
	}
}

1618 
	$__db_t__d_oc
(

1619 
u_t
 
dbp_id
,

1620 
u_t32_t
 
d
,

1621 
__db_t__d_y
 *
yp
)

1623 
Db
 *
dbp
;

1624 
_y
 *
dbp_p
;

1625 
t
;

1627 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1628 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1630 
t
 = 
dbp
->
	`t__d
(
d
);

1632 
yp
->
us
 = 
t
;

1634 
	}
}

1637 
	$__db_move_oc
(

1638 
u_t
 
dbp_id
,

1639 *
me
,

1640 *
subdb
,

1641 
u_t32_t
 
ags
,

1642 
__db_move_y
 *
yp
)

1644 
Db
 *
dbp
;

1645 
_y
 *
dbp_p
;

1646 
t
;

1648 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1649 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1651 
t
 = 
dbp
->
	`move
(
me
, 
subdb
, 
ags
);

1652 
	`__dbd_p
(
dbp_p
);

1654 
yp
->
us
 = 
t
;

1656 
	}
}

1659 
	$__db_me_oc
(

1660 
u_t
 
dbp_id
,

1661 *
me
,

1662 *
subdb
,

1663 *
wme
,

1664 
u_t32_t
 
ags
,

1665 
__db_me_y
 *
yp
)

1667 
Db
 *
dbp
;

1668 
_y
 *
dbp_p
;

1669 
t
;

1671 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1672 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1674 
t
 = 
dbp
->
	`me
(
me
, 
subdb
, 
wme
, 
ags
);

1675 
	`__dbd_p
(
dbp_p
);

1677 
yp
->
us
 = 
t
;

1679 
	}
}

1682 
	$__db__oc
(

1683 
u_t
 
dbp_id
,

1684 
u_t
 
tx_id
,

1685 
u_t32_t
 
ags
,

1686 
__db__y
 *
yp
,

1687 * 
p
)

1689 
Db
 *
dbp
;

1690 
DbTxn
 *
tx
;

1691 
DBTYPE
 
ty
;

1692 
_y
 *
dbp_p
, *
tx_p
;

1693 
u_t32_t
 *
q
, *
p
, *
t
;

1694 
i
, 
n
, 
t
;

1695 *

;

1697 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1698 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1699 i(
tx_id
 != 0) {

1700 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1701 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

1703 
tx
 = 
NULL
;

1705 
t
 = 
dbp
->
	`
(
tx
, &

, 
ags
);

1706 
yp
->
us
 = 
t
;

1707 i(
t
 != 0)

1718 ()
dbp
->
	`g_ty
(&
ty
);

1719 i(
ty
 =
DB_HASH
)

1720 
n
 = (
DB_HASH_STAT
);

1721 i(
ty
 =
DB_QUEUE
)

1722 
n
 = (
DB_QUEUE_STAT
);

1724 
n
 = (
DB_BTREE_STAT
);

1725 
yp
->
s
.
s_n
 = 
n
 / (
u_t32_t
);

1727 i((
t
 = 
	`__os_umloc
(
dbp
->
	`g_DB
()->
dbv
,

1728 
n
 * 
yp
->
s
.
s_n
, &
t
)) != 0)

1729 
out
;

1730 
i
 = 0, 
q
 = 
t
, 
p
 = (
u_t32_t
 *)

; i < 
n
;

1731 
i
++, 
q
++, 
p
++)

1732 *
q
 = *
p
;

1733 
yp
->
s
.
s_v
 = 
t
;

1734 
	`__os_u
(
dbp
->
	`g_DB
()->
dbv
, 

);

1735 i(
t
 == 0)

1736 *
p
 = 1;

1737 
out
:

1738 
yp
->
us
 = 
t
;

1740 
	}
}

1743 
	$__db_sync_oc
(

1744 
u_t
 
dbp_id
,

1745 
u_t32_t
 
ags
,

1746 
__db_sync_y
 *
yp
)

1748 
Db
 *
dbp
;

1749 
_y
 *
dbp_p
;

1750 
t
;

1752 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1753 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1755 
t
 = 
dbp
->
	`sync
(
ags
);

1757 
yp
->
us
 = 
t
;

1759 
	}
}

1762 
	$__db_un_oc
(

1763 
u_t
 
dbp_id
,

1764 
u_t
 
tx_id
,

1765 
u_t32_t
 
ags
,

1766 
__db_un_y
 *
yp
)

1768 
Db
 *
dbp
;

1769 
DbTxn
 *
tx
;

1770 
_y
 *
dbp_p
, *
tx_p
;

1771 
u_t32_t
 
cou
;

1772 
t
;

1774 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1775 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1776 i(
tx_id
 != 0) {

1777 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1778 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

1780 
tx
 = 
NULL
;

1782 
t
 = 
dbp
->
	`un
(
tx
, &
cou
, 
ags
);

1783 
yp
->
us
 = 
t
;

1784 i(
t
 == 0)

1785 
yp
->
cou
 = count;

1787 
	}
}

1790 
	$__db_curs_oc
(

1791 
u_t
 
dbp_id
,

1792 
u_t
 
tx_id
,

1793 
u_t32_t
 
ags
,

1794 
__db_curs_y
 *
yp
)

1796 
Db
 *
dbp
;

1797 
Dbc
 *
dbc
;

1798 
DbTxn
 *
tx
;

1799 
_y
 *
dbc_p
, *
v_p
, *
dbp_p
, *
tx_p
;

1800 
t
;

1802 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1803 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1804 
dbc_p
 = 
	`w__t
(&
yp
->
us
);

1805 i(
dbc_p
 =
NULL
)

1808 i(
tx_id
 != 0) {

1809 
	`ACTIVATE_CTP
(
tx_p
, 
tx_id
, 
CT_TXN
);

1810 
tx
 = (
DbTxn
 *)
tx_p
->
_yp
;

1811 
dbc_p
->
_aiv
 = 
tx_p
->ct_activep;

1813 
tx
 = 
NULL
;

1815 i((
t
 = 
dbp
->
	`curs
(
tx
, &
dbc
, 
ags
)) == 0) {

1816 
dbc_p
->
_dbc
 = 
dbc
;

1817 
dbc_p
->
_ty
 = 
CT_CURSOR
;

1818 
dbc_p
->
_
 = 
dbp_p
;

1819 
v_p
 = 
dbp_p
->
_v
;

1820 
dbc_p
->
_v
 = 
v_p
;

1821 
	`__dbv_imeout
(
dbc_p
, 
v_p
->
_timeout
);

1822 
	`__dbv_aive
(
dbc_p
);

1823 
yp
->
dbcid_id
 = 
dbc_p
->
_id
;

1825 
	`__dbr_p
(
dbc_p
);

1827 
yp
->
us
 = 
t
;

1829 
	}
}

1832 
	$__db_jo_oc
(

1833 
u_t
 
dbp_id
,

1834 
u_t32_t
 *
curs
,

1835 
u_t32_t
 
cur
,

1836 
u_t32_t
 
ags
,

1837 
__db_jo_y
 *
yp
)

1839 
Db
 *
dbp
;

1840 
Dbc
 **
jcurs
, **
c
;

1841 
Dbc
 *
dbc
;

1842 
_y
 *
dbc_p
, *
p
, *
dbp_p
;

1843 
size_t
 
size
;

1844 
u_t32_t
 *

, 
i
;

1845 
t
;

1847 
	`ACTIVATE_CTP
(
dbp_p
, 
dbp_id
, 
CT_DB
);

1848 
dbp
 = (
Db
 *)
dbp_p
->
_yp
;

1850 
dbc_p
 = 
	`w__t
(&
yp
->
us
);

1851 i(
dbc_p
 =
NULL
)

1854 
size
 = (
cur
 + 1* (
Dbc
 *);

1855 i((
t
 = 
	`__os_oc
(
dbp
->
	`g_DB
()->
dbv
,

1856 
cur
 + 1, (
Dbc
 *), &
jcurs
)) != 0) {

1857 
yp
->
us
 = 
t
;

1858 
	`__dbr_p
(
dbc_p
);

1866 
p
 = 
	`g_b˒t
(*
curs
);

1867 
	`DB_ASSERT
(
dbp
->
	`g_DB
()->
dbv
, 
p
->
_ty
 =
CT_CURSOR
);

1872 i(
p
->
_aiv
 !&p->
_aive
)

1873 
dbc_p
->
_aiv
 = 
p
->ct_activep;

1874 
i
 = 0, 

 = 
curs
, 
c
 = 
jcurs
; i < 
cur
; i++, cl++, c++) {

1875 
p
 = 
	`g_b˒t
(*

);

1876 i(
p
 =
NULL
) {

1877 
yp
->
us
 = 
DB_NOSERVER_ID
;

1878 
out
;

1890 
	`DB_ASSERT
(
dbp
->
	`g_DB
()->
dbv
, 
p
->
_ty
 =
CT_CURSOR
);

1891 
p
->
_ty
 |
CT_JOIN
;

1892 
p
->
_igp
 = c->
_aiv
;

1900 
p
->
_aiv
 = &
dbc_p
->
_aive
;

1901 *
c
 = 
p
->
_dbc
;

1903 *
c
 = 
NULL
;

1904 i((
t
 = 
dbp
->
	`jo
(
jcurs
, &
dbc
, 
ags
)) == 0) {

1905 
dbc_p
->
_dbc
 = 
dbc
;

1906 
dbc_p
->
_ty
 = (
CT_JOINCUR
 | 
CT_CURSOR
);

1907 
dbc_p
->
_
 = 
dbp_p
;

1908 
dbc_p
->
_v
 = 
dbp_p
->ct_envparent;

1909 
	`__dbv_imeout
(
dbc_p
, 
dbp_p
->
_v
->
_timeout
);

1910 
	`__dbv_aive
(
dbc_p
);

1911 
yp
->
dbcid_id
 = 
dbc_p
->
_id
;

1913 
	`__dbr_p
(
dbc_p
);

1917 

 = 
curs
; *cl != 0; cl++) {

1918 
p
 = 
	`g_b˒t
(*

);

1919 
p
->
_ty
 = 
CT_CURSOR
;

1920 
p
->
_aiv
 = c->
_igp
;

1924 
yp
->
us
 = 
t
;

1925 
out
:

1926 
	`__os_
(
dbp
->
	`g_DB
()->
dbv
, 
jcurs
);

1928 
	}
}

1931 
	$__dbc_o_oc
(

1932 
u_t
 
dbc_id
,

1933 
__dbc_o_y
 *
yp
)

1935 
_y
 *
dbc_p
;

1937 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

1938 
yp
->
us
 = 
	`__dbc_o_t
(
dbc_p
);

1940 
	}
}

1943 
	$__dbc_cou_oc
(

1944 
u_t
 
dbc_id
,

1945 
u_t32_t
 
ags
,

1946 
__dbc_cou_y
 *
yp
)

1948 
Dbc
 *
dbc
;

1949 
_y
 *
dbc_p
;

1950 
db_o_t
 
num
;

1951 
t
;

1953 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

1954 
dbc
 = (
Dbc
 *)
dbc_p
->
_yp
;

1956 
t
 = 
dbc
->
	`cou
(&
num
, 
ags
);

1957 
yp
->
us
 = 
t
;

1958 i(
t
 == 0)

1959 
yp
->
dupcou
 = 
num
;

1961 
	}
}

1964 
	$__dbc_d_oc
(

1965 
u_t
 
dbc_id
,

1966 
u_t32_t
 
ags
,

1967 
__dbc_d_y
 *
yp
)

1969 
Dbc
 *
dbc
;

1970 
_y
 *
dbc_p
;

1971 
t
;

1973 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

1974 
dbc
 = (
Dbc
 *)
dbc_p
->
_yp
;

1976 
t
 = 
dbc
->
	`d
(
ags
);

1978 
yp
->
us
 = 
t
;

1980 
	}
}

1983 
	$__dbc_dup_oc
(

1984 
u_t
 
dbc_id
,

1985 
u_t32_t
 
ags
,

1986 
__dbc_dup_y
 *
yp
)

1988 
Dbc
 *
dbc
, *
wdbc
;

1989 
_y
 *
dbc_p
, *
w_p
;

1990 
t
;

1992 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

1993 
dbc
 = (
Dbc
 *)
dbc_p
->
_yp
;

1995 
w_p
 = 
	`w__t
(&
yp
->
us
);

1996 i(
w_p
 =
NULL
)

1999 i((
t
 = 
dbc
->
	`dup
(&
wdbc
, 
ags
)) == 0) {

2000 
w_p
->
_dbc
 = 
wdbc
;

2001 
w_p
->
_ty
 = 
CT_CURSOR
;

2002 
w_p
->
_
 = 
dbc_p
->ct_parent;

2003 
w_p
->
_v
 = 
dbc_p
->ct_envparent;

2007 i(
dbc_p
->
_aiv
 !&dbc_p->
_aive
)

2008 
w_p
->
_aiv
 = 
dbc_p
->ct_activep;

2009 
	`__dbv_imeout
(
w_p
, 
dbc_p
->
_timeout
);

2010 
	`__dbv_aive
(
w_p
);

2011 
yp
->
dbcid_id
 = 
w_p
->
_id
;

2013 
	`__dbr_p
(
w_p
);

2015 
yp
->
us
 = 
t
;

2017 
	}
}

2020 
	$__dbc_g_oc
(

2021 
u_t
 
dbc_id
,

2022 
u_t32_t
 
keydn
,

2023 
u_t32_t
 
keydoff
,

2024 
u_t32_t
 
keyun
,

2025 
u_t32_t
 
keyags
,

2026 *
keyda
,

2027 
u_t32_t
 
keysize
,

2028 
u_t32_t
 
dadn
,

2029 
u_t32_t
 
dadoff
,

2030 
u_t32_t
 
daun
,

2031 
u_t32_t
 
daags
,

2032 *
dada
,

2033 
u_t32_t
 
dasize
,

2034 
u_t32_t
 
ags
,

2035 
__dbc_g_y
 *
yp
,

2036 * 
p
)

2038 
Dbc
 *
dbc
;

2039 
DbEnv
 *
dbv
;

2040 
_y
 *
dbc_p
;

2041 
t
;

2042 *
tmpda
;

2044 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2045 
dbc
 = (
Dbc
 *)
dbc_p
->
_yp
;

2046 
dbv
 = 
DbEnv
::
	`g_DbEnv
(((
DBC
 *)
dbc
)->
dbp
->dbenv);

2048 
yp
->
keyda
.
keyda_v
 = 
NULL
;

2049 
yp
->
dada
.
dada_v
 = 
NULL
;

2050 *
p
 = 0;

2053 
Dbt
 
	`key
(
keyda
, 
keysize
);

2054 
key
.
	`t_dn
(
keydn
);

2055 
key
.
	`t_un
(
keyun
);

2056 
key
.
	`t_doff
(
keydoff
);

2057 
key
.
	`t_ags
(
DB_DBT_MALLOC
 | (
keyags
 & 
DB_DBT_PARTIAL
));

2059 
Dbt
 
	`da
(
dada
, 
dasize
);

2060 
da
.
	`t_dn
(
dadn
);

2061 
da
.
	`t_un
(
daun
);

2062 
da
.
	`t_doff
(
dadoff
);

2063 
daags
 &
DB_DBT_PARTIAL
;

2064 i(
ags
 & 
DB_MULTIPLE
 || fg& 
DB_MULTIPLE_KEY
) {

2065 i(
da
.
	`g_da
(=
NULL
) {

2066 
t
 = 
	`__os_umloc
(
dbv
->
	`g_DB_ENV
(),

2067 
da
.
	`g_un
(), &
tmpda
);

2068 i(
t
 != 0)

2069 
r
;

2070 
da
.
	`t_da
(
tmpda
);

2072 
daags
 |
DB_DBT_USERMEM
;

2074 
daags
 |
DB_DBT_MALLOC
;

2075 
da
.
	`t_ags
(
daags
);

2078 
t
 = 
dbc
->
	`g
(&
key
, &
da
, 
ags
);

2083 i(
t
 == 0) {

2092 *
p
 = 1;

2096 i(
key
.
	`g_da
(=
keyda
) {

2097 
t
 = 
	`__os_umloc
(
dbv
->
	`g_DB_ENV
(), 
key
.
	`g_size
(),

2098 &
yp
->
keyda
.
keyda_v
);

2099 i(
t
 != 0)

2100 
r
;

2101 
	`memy
(
yp
->
keyda
.
keyda_v
,

2102 
key
.
	`g_da
(), key.
	`g_size
());

2104 
yp
->
keyda
.
keyda_v
 = (*)
key
.
	`g_da
();

2106 
yp
->
keyda
.
keyda_n
 = 
key
.
	`g_size
();

2111 i(
da
.
	`g_da
(=
dada
) {

2112 
t
 = 
	`__os_umloc
(
dbv
->
	`g_DB_ENV
(), 
da
.
	`g_size
(),

2113 &
yp
->
dada
.
dada_v
);

2114 i(
t
 != 0)

2115 
r
;

2116 
	`memy
(
yp
->
dada
.
dada_v
, 
da
.
	`g_da
(),

2117 
da
.
	`g_size
());

2119 
yp
->
dada
.
dada_v
 = (*)
da
.
	`g_da
();

2120 
yp
->
dada
.
dada_n
 = 
da
.
	`g_size
();

2122 
r
: 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2123 
key
.
	`g_da
(), 
keyda
);

2124 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2125 
da
.
	`g_da
(), 
dada
);

2126 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2127 
yp
->
keyda
.
keyda_v
, 
key
.
	`g_da
());

2128 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2129 
yp
->
dada
.
dada_v
, 
da
.
	`g_da
());

2130 
yp
->
keyda
.
keyda_v
 = 
NULL
;

2131 
yp
->
keyda
.
keyda_n
 = 0;

2132 
yp
->
dada
.
dada_v
 = 
NULL
;

2133 
yp
->
dada
.
dada_n
 = 0;

2134 *
p
 = 0;

2136 
yp
->
us
 = 
t
;

2138 
	}
}

2141 
	$__dbc_pg_oc
(

2142 
u_t
 
dbc_id
,

2143 
u_t32_t
 
skeydn
,

2144 
u_t32_t
 
skeydoff
,

2145 
u_t32_t
 
skeyun
,

2146 
u_t32_t
 
skeyags
,

2147 *
skeyda
,

2148 
u_t32_t
 
skeysize
,

2149 
u_t32_t
 
pkeydn
,

2150 
u_t32_t
 
pkeydoff
,

2151 
u_t32_t
 
pkeyun
,

2152 
u_t32_t
 
pkeyags
,

2153 *
pkeyda
,

2154 
u_t32_t
 
pkeysize
,

2155 
u_t32_t
 
dadn
,

2156 
u_t32_t
 
dadoff
,

2157 
u_t32_t
 
daun
,

2158 
u_t32_t
 
daags
,

2159 *
dada
,

2160 
u_t32_t
 
dasize
,

2161 
u_t32_t
 
ags
,

2162 
__dbc_pg_y
 *
yp
,

2163 * 
p
)

2165 
Dbc
 *
dbc
;

2166 
DbEnv
 *
dbv
;

2167 
_y
 *
dbc_p
;

2168 
t
;

2170 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2171 
dbc
 = (
Dbc
 *)
dbc_p
->
_yp
;

2172 
dbv
 = 
DbEnv
::
	`g_DbEnv
(((
DBC
 *)
dbc
)->
dbp
->dbenv);

2174 
yp
->
skeyda
.
skeyda_v
 = 
NULL
;

2175 
yp
->
pkeyda
.
pkeyda_v
 = 
NULL
;

2176 
yp
->
dada
.
dada_v
 = 
NULL
;

2177 *
p
 = 0;

2183 
Dbt
 
	`skey
(
skeyda
, 
skeysize
);

2184 
skey
.
	`t_dn
(
skeydn
);

2185 
skey
.
	`t_un
(
skeyun
);

2186 
skey
.
	`t_doff
(
skeydoff
);

2187 
skey
.
	`t_ags
(
DB_DBT_MALLOC
 | (
skeyags
 & 
DB_DBT_PARTIAL
));

2189 
Dbt
 
	`pkey
(
pkeyda
, 
pkeysize
);

2190 
pkey
.
	`t_dn
(
pkeydn
);

2191 
pkey
.
	`t_un
(
pkeyun
);

2192 
pkey
.
	`t_doff
(
pkeydoff
);

2193 
pkey
.
	`t_ags
(
DB_DBT_MALLOC
 | (
pkeyags
 & 
DB_DBT_PARTIAL
));

2195 
Dbt
 
	`da
(
dada
, 
dasize
);

2196 
da
.
	`t_dn
(
dadn
);

2197 
da
.
	`t_un
(
daun
);

2198 
da
.
	`t_doff
(
dadoff
);

2199 
da
.
	`t_ags
(
DB_DBT_MALLOC
 | (
daags
 & 
DB_DBT_PARTIAL
));

2202 
t
 = 
dbc
->
	`pg
(&
skey
, &
pkey
, &
da
, 
ags
);

2206 i(
t
 == 0) {

2215 *
p
 = 1;

2219 i(
skey
.
	`g_da
(=
skeyda
) {

2220 
t
 = 
	`__os_umloc
(
dbv
->
	`g_DB_ENV
(),

2221 
skey
.
	`g_size
(), &
yp
->
skeyda
.
skeyda_v
);

2222 i(
t
 != 0)

2223 
r
;

2224 
	`memy
(
yp
->
skeyda
.
skeyda_v
, 
skey
.
	`g_da
(),

2225 
skey
.
	`g_size
());

2227 
yp
->
skeyda
.
skeyda_v
 = (*)
skey
.
	`g_da
();

2228 
yp
->
skeyda
.
skeyda_n
 = 
skey
.
	`g_size
();

2233 i(
pkey
.
	`g_da
(=
pkeyda
) {

2234 
t
 = 
	`__os_umloc
(
dbv
->
	`g_DB_ENV
(),

2235 
pkey
.
	`g_size
(), &
yp
->
pkeyda
.
pkeyda_v
);

2236 i(
t
 != 0)

2237 
r
;

2238 
	`memy
(
yp
->
pkeyda
.
pkeyda_v
, 
pkey
.
	`g_da
(),

2239 
pkey
.
	`g_size
());

2241 
yp
->
pkeyda
.
pkeyda_v
 = (*)
pkey
.
	`g_da
();

2242 
yp
->
pkeyda
.
pkeyda_n
 = 
pkey
.
	`g_size
();

2247 i(
da
.
	`g_da
(=
dada
) {

2248 
t
 = 
	`__os_umloc
(
dbv
->
	`g_DB_ENV
(),

2249 
da
.
	`g_size
(), &
yp
->
dada
.
dada_v
);

2250 i(
t
 != 0)

2251 
r
;

2252 
	`memy
(
yp
->
dada
.
dada_v
, 
da
.
	`g_da
(),

2253 
da
.
	`g_size
());

2255 
yp
->
dada
.
dada_v
 = (*)
da
.
	`g_da
();

2256 
yp
->
dada
.
dada_n
 = 
da
.
	`g_size
();

2258 
r
: 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2259 
skey
.
	`g_da
(), 
skeyda
);

2260 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2261 
pkey
.
	`g_da
(), 
pkeyda
);

2262 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2263 
da
.
	`g_da
(), 
dada
);

2264 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2265 
yp
->
skeyda
.
skeyda_v
, 
skey
.
	`g_da
());

2266 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2267 
yp
->
pkeyda
.
pkeyda_v
, 
pkey
.
	`g_da
());

2268 
	`FREE_IF_CHANGED
(
dbv
->
	`g_DB_ENV
(),

2269 
yp
->
dada
.
dada_v
, 
da
.
	`g_da
());

2270 
yp
->
skeyda
.
skeyda_v
 = 
NULL
;

2271 
yp
->
skeyda
.
skeyda_n
 = 0;

2272 
yp
->
pkeyda
.
pkeyda_v
 = 
NULL
;

2273 
yp
->
pkeyda
.
pkeyda_n
 = 0;

2274 
yp
->
dada
.
dada_v
 = 
NULL
;

2275 
yp
->
dada
.
dada_n
 = 0;

2276 *
p
 = 0;

2278 
yp
->
us
 = 
t
;

2280 
	}
}

2283 
	$__dbc_put_oc
(

2284 
u_t
 
dbc_id
,

2285 
u_t32_t
 
keydn
,

2286 
u_t32_t
 
keydoff
,

2287 
u_t32_t
 
keyun
,

2288 
u_t32_t
 
keyags
,

2289 *
keyda
,

2290 
u_t32_t
 
keysize
,

2291 
u_t32_t
 
dadn
,

2292 
u_t32_t
 
dadoff
,

2293 
u_t32_t
 
daun
,

2294 
u_t32_t
 
daags
,

2295 *
dada
,

2296 
u_t32_t
 
dasize
,

2297 
u_t32_t
 
ags
,

2298 
__dbc_put_y
 *
yp
,

2299 * 
p
)

2301 
Db
 *
dbp
;

2302 
Dbc
 *
dbc
;

2303 
_y
 *
dbc_p
;

2304 
t
;

2305 
DBTYPE
 
dbty
;

2307 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2308 
dbc
 = (
Dbc
 *)
dbc_p
->
_yp
;

2309 
dbp
 = (
Db
 *)
dbc_p
->
_
->
_yp
;

2312 
Dbt
 
	`key
(
keyda
, 
keysize
);

2313 
key
.
	`t_dn
(
keydn
);

2314 
key
.
	`t_un
(
keyun
);

2315 
key
.
	`t_doff
(
keydoff
);

2319 
key
.
	`t_ags
(
DB_DBT_MALLOC
 | (
keyags
 & 
DB_DBT_PARTIAL
));

2321 
Dbt
 
	`da
(
dada
, 
dasize
);

2322 
da
.
	`t_dn
(
dadn
);

2323 
da
.
	`t_un
(
daun
);

2324 
da
.
	`t_doff
(
dadoff
);

2325 
da
.
	`t_ags
(
daags
);

2328 
t
 = 
dbc
->
	`put
(&
key
, &
da
, 
ags
);

2330 *
p
 = 0;

2331 
yp
->
keyda
.
keyda_v
 = 
NULL
;

2332 
yp
->
keyda
.
keyda_n
 = 0;

2333 i(
t
 =0 && (
ags
 =
DB_AFTER
 || fg=
DB_BEFORE
)) {

2334 
t
 = 
dbp
->
	`g_ty
(&
dbty
);

2335 i(
t
 =0 && 
dbty
 =
DB_RECNO
) {

2340 
yp
->
keyda
.
keyda_v
 = (*)
key
.
	`g_da
();

2341 
yp
->
keyda
.
keyda_n
 = 
key
.
	`g_size
();

2344 
yp
->
us
 = 
t
;

2346 
	}
}

2349 
	$__dbc_g_iܙy_oc
(

2350 
u_t
 
dbc_id
,

2351 
__dbc_g_iܙy_y
 *
yp
)

2353 
Dbc
 *
dbc
;

2354 
_y
 *
dbc_p
;

2356 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2357 
dbc
 = (
Dbc
 *)
dbc_p
->
_yp
;

2359 
yp
->
us
 =

2360 
dbc
->
	`g_iܙy
((
DB_CACHE_PRIORITY
 *)&
yp
->
iܙy
);

2361 
	}
}

2364 
	$__dbc_t_iܙy_oc
(

2365 
u_t
 
dbc_id
,

2366 
u_t32_t
 
iܙy
,

2367 
__dbc_t_iܙy_y
 *
yp
)

2369 
Dbc
 *
dbc
;

2370 
_y
 *
dbc_p
;

2371 
t
;

2373 
	`ACTIVATE_CTP
(
dbc_p
, 
dbc_id
, 
CT_CURSOR
);

2374 
dbc
 = (
Dbc
 *)
dbc_p
->
_yp
;

2376 
t
 = 
dbc
->
	`t_iܙy
((
DB_CACHE_PRIORITY
)
iܙy
);

2378 
yp
->
us
 = 
t
;

2380 
	}
}

	@../rpc_server/cxx/db_server_cxxutil.cpp

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"db_cxx.h
"

13 
	~"db_rv.h
"

14 
	~"dbc_auto/ib_ext.h
"

17 
	~"dbc/db_rv_t.h
"

18 
	~"dbc_auto/c_rv_ext.h
"

19 
	~"dbc_auto/comm_ext.h
"

21 

__dbv_ma
 
__P
(());

24 
add_home
 
__P
((*));

25 
add_sswd
 
__P
((*));

26 
v_cov
 
__P
((*));

27 
__dbr_chd
 
__P
((
_y
 *));

29 
	$LIST_HEAD
(
hd
, 
_y

__dbv_hd
;

30 
	$LIST_HEAD
(
homehd
, 
home_y

__dbv_home
;

31 
__dbv_deo
 = 
DB_SERVER_TIMEOUT
;

32 
__dbv_maxto
 = 
DB_SERVER_MAXTIMEOUT
;

33 
__dbv_idto
 = 
DB_SERVER_IDLETIMEOUT
;

34 *
logfe
 = 
NULL
;

35 *
og
;

37 
uge
 
	`__P
((*));

38 
vsi_check
 
	`__P
(());

40 
__dbv_vbo
 = 0;

43 
	$ma
(

44 
gc
,

45 **
gv
)

47 
*
ݏrg
;

48 
CLIENT
 *

;

49 
ch
, 
t
;

50 *
sswd
;

52 
og
 = 
gv
[0];

54 
	`vsi_check
();

68 i((

 = 
	`_
("localhost",

69 
DB_RPC_SERVERPROG
, 
DB_RPC_SERVERVERS
, "t")!
NULL
) {

70 
	`rtf
(
dr
,

71 "%s: Bkey DB RPC sv̗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 
DB_ENV
 *
dbv
;

35 
DB_THREAD_INFO
 *

;

36 
DB_SEQ_RECORD
 
cd
;

37 
DB_SEQUENCE_STAT
 *

;

38 
DBT
 
da
;

39 
hd_check
, 
t
, 
t_t
;

41 
dbp
 = 
q
->
q_dbp
;

42 
dbv
 = 
dbp
->dbenv;

44 
ags
) {

45 
DB_STAT_CLEAR
:

46 
DB_STAT_ALL
:

50  (
	`__db_
(
dbv
, "DB_SEQUENCE->stat", 0));

53 
	`ENV_ENTER
(
dbv
, 

);

56 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

57 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 0)) != 0) {

58 
hd_check
 = 0;

59 
r
;

63 i((
t
 = 
	`__os_umloc
(
dbv
, (*

), &sp)) != 0)

64 
r
;

65 
	`memt
(

, 0, (*sp));

67 i(
q
->
mtx_q
 !
MUTEX_INVALID
) {

68 
	`__mux_t_wa_fo
(

69 
dbv
, 
q
->
mtx_q
, &

->
_wa
, &->
_nowa
);

71 i(
	`LF_ISSET
(
DB_STAT_CLEAR
))

72 
	`__mux_r
(
dbv
, 
q
->
mtx_q
);

74 
	`memt
(&
da
, 0, (data));

75 
da
.d&
cd
;

76 
da
.
un
 = (
cd
);

77 
da
.
ags
 = 
DB_DBT_USERMEM
;

78 
y
: i((
t
 = 
	`__db_g
(
dbp
, 
NULL
, &
q
->
q_key
, &
da
, 0)) != 0) {

79 i(
t
 =
DB_BUFFER_SMALL
 &&

80 
da
.
size
 > (
q
->
q_cd
)) {

81 i((
t
 = 
	`__os_mloc
(
dbv
,

82 
da
.
size
, &data.data)) != 0)

83 
r
;

84 
da
.
un
 = da.
size
;

85 
y
;

87 
r
;

90 i(
da
.d!&
cd
)

91 
	`memy
(&
cd
, 
da
.data, (record));

92 

->
_cut
 = 
cd
.
q_vue
;

93 

->
_vue
 = 
q
->
q_cd
.
q_vue
;

94 

->
_ϡ_vue
 = 
q
->
q_ϡ_vue
;

95 

->
_m
 = 
q
->
q_cd
.
q_m
;

96 

->
_max
 = 
q
->
q_cd
.
q_max
;

97 

->
_che_size
 = 
q
->
q_che_size
;

98 

->
_ags
 = 
q
->
q_cd
.
ags
;

100 *
p
 = 

;

101 i(
da
.d!&
cd
)

102 
	`__os_
(
dbv
, 
da
.data);

105 
r
: i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

106 
t
 = 
t_t
;

107 
	`ENV_LEAVE
(
dbv
, 

);

108  (
t
);

109 
	}
}

118 
	$__q__t
(
q
, 
ags
)

119 
DB_SEQUENCE
 *
q
;

120 
u_t32_t
 
ags
;

122 
DB
 *
dbp
;

123 
DB_ENV
 *
dbv
;

124 
DB_THREAD_INFO
 *

;

125 
hd_check
, 
t
, 
t_t
;

127 
dbp
 = 
q
->
q_dbp
;

128 
dbv
 = 
dbp
->dbenv;

130 
	`ENV_ENTER
(
dbv
, 

);

133 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

134 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 0)) != 0) {

135 
hd_check
 = 0;

136 
r
;

139 i((
t
 = 
	`__q_t_s
(
q
, 
ags
)) != 0)

140 
r
;

142 i(
	`LF_ISSET
(
DB_STAT_ALL
) &&

143 (
t
 = 
	`__q_t_l
(
q
, 
ags
)) != 0)

144 
r
;

147 
r
: i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

148 
t
 = 
t_t
;

150 
	`ENV_LEAVE
(
dbv
, 

);

151  (
t
);

153 
	}
}

155 cڡ 
FN
 
	g__db_q_ags_
[] = {

156 { 
DB_SEQ_DEC
, "decrement" },

157 { 
DB_SEQ_INC
, "increment" },

158 { 
DB_SEQ_RANGE_SET
, "range set (internal)" },

159 { 
DB_SEQ_WRAP
, "wraparoundtnd" },

160 { 0, 
NULL
 }

169 cڡ 
FN
 *

170 
	$__db_g_q_ags_
()

172  (
__db_q_ags_
);

173 
	}
}

180 
	$__q_t_s
(
q
, 
ags
)

181 
DB_SEQUENCE
 *
q
;

182 
u_t32_t
 
ags
;

184 
DB_ENV
 *
dbv
;

185 
DB_SEQUENCE_STAT
 *

;

186 
t
;

188 
dbv
 = 
q
->
q_dbp
->dbenv;

190 i((
t
 = 
	`__q_
(
q
, &

, 
ags
)) != 0)

191  (
t
);

192 
	`__db_dl_p
(
dbv
,

194 (
u_lg
)

->
_wa
,

195 
	`DB_PCT
(

->
_wa
, sp->_wa + sp->
_nowa
), 
NULL
);

196 
	`STAT_FMT
("The current sequence value",

197 
INT64_FMT
, 
t64_t
, 

->
_cut
);

198 
	`STAT_FMT
("The cached sequence value",

199 
INT64_FMT
, 
t64_t
, 

->
_vue
);

200 
	`STAT_FMT
("Theast cached sequence value",

201 
INT64_FMT
, 
t64_t
, 

->
_ϡ_vue
);

202 
	`STAT_FMT
("The minimum sequence value",

203 
INT64_FMT
, 
t64_t
, 

->
_vue
);

204 
	`STAT_FMT
("The maximum sequence value",

205 
INT64_FMT
, 
t64_t
, 

->
_vue
);

206 
	`STAT_ULONG
("Thchsize", 

->
_che_size
);

207 
	`__db_ags
(
dbv
, 
NULL
,

208 

->
_ags
, 
__db_q_ags_
, 
NULL
, "\tSequence flags");

209 
	`__os_u
(
q
->
q_dbp
->
dbv
, 

);

211 
	}
}

219 
	$__q_t_l
(
q
, 
ags
)

220 
DB_SEQUENCE
 *
q
;

221 
u_t32_t
 
ags
;

223 
	`COMPQUIET
(
q
, 
NULL
);

224 
	`COMPQUIET
(
ags
, 0);

226 
	}
}

231 
	$__q_
(
q
, 
p
, 
ags
)

232 
DB_SEQUENCE
 *
q
;

233 
DB_SEQUENCE_STAT
 **
p
;

234 
u_t32_t
 
ags
;

236 
	`COMPQUIET
(
p
, 
NULL
);

237 
	`COMPQUIET
(
ags
, 0);

239  (
	`__db__n_but
(
q
->
q_dbp
->
dbv
));

240 
	}
}

243 
	$__q__t
(
q
, 
ags
)

244 
DB_SEQUENCE
 *
q
;

245 
u_t32_t
 
ags
;

247 
	`COMPQUIET
(
ags
, 0);

249  (
	`__db__n_but
(
q
->
q_dbp
->
dbv
));

250 
	}
}

258 cڡ 
FN
 *

259 
	$__db_g_q_ags_
()

261 cڡ 
FN
 
__db_q_ags_
[] = {

262 { 0, 
NULL
 }

269  (
__db_q_ags_
);

270 
	}
}

	@../sequence/sequence.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/lock.h
"

15 
	~"dbc/txn.h
"

16 
	~"dbc_auto/qu_ext.h
"

18 #ifde
HAVE_RPC


19 #ifde
HAVE_SYSTEM_INCLUDE_FILES


20 
	~<c/c.h
>

22 
	~"db_rv.h
"

23 
	~"dbc_auto/c__ext.h
"

26 #ifde
HAVE_64BIT_TYPES


27 
	#SEQ_ILLEGAL_AFTER_OPEN
(
q
, 
me
) \

28 i(
q
->
q_key
.
da
 !
NULL
) \

29  (
	`__db_mi_ݒ
((
q
)->
q_dbp
->
dbv
, 
me
, 1));

	)

31 
	#SEQ_ILLEGAL_BEFORE_OPEN
(
q
, 
me
) \

32 i(
q
->
q_key
.
da
 =
NULL
) \

33  (
	`__db_mi_ݒ
((
q
)->
q_dbp
->
dbv
, 
me
, 0));

	)

35 
	#SEQ_IS_OPEN
(
q
((q)->
q_key
.
da
 !
NULL
)

	)

47 
	#SEQ_SWAP
(

) \

49 
	`M_32_SWAP
((

)->
q_vsi
); \

50 
	`M_32_SWAP
((

)->
ags
); \

51 
	`M_64_SWAP
((

)->
q_vue
); \

52 
	`M_64_SWAP
((

)->
q_max
); \

53 
	`M_64_SWAP
((

)->
q_m
); \

54 } 0)

	)

56 
	#SEQ_SWAP_IN
(
q
) \

58 i(
	`__db_isbigdn
()) { \

59 
	`memy
(&
q
->
q_cd
, seq->
q_da
.
da
, \

60 (
q
->
q_cd
)); \

61 
	`SEQ_SWAP
(&
q
->
q_cd
); \

63 } 0)

	)

65 
	#SEQ_SWAP_OUT
(
q
) \

67 i(
	`__db_isbigdn
()) { \

68 
	`memy
(
q
->
q_da
.
da
, \

69 &
q
->
q_cd
, (seq->seq_record));\

70 
	`SEQ_SWAP
((
DB_SEQ_RECORD
*)
q
->
q_da
.
da
); \

72 } 0)

	)

74 
__q_chk_chesize
 
__P
((
DB_ENV
 *, 
t32_t
, 
db_q_t
, db_seq_t));

75 
__q_o
 
__P
((
DB_SEQUENCE
 *, 
u_t32_t
));

76 
__q_g


77 
__P
((
DB_SEQUENCE
 *, 
DB_TXN
 *, 
t32_t
, 
db_q_t
 *, 
u_t32_t
));

78 
__q_g_chesize
 
__P
((
DB_SEQUENCE
 *, 
t32_t
 *));

79 
__q_g_db
 
__P
((
DB_SEQUENCE
 *, 
DB
 **));

80 
__q_g_ags
 
__P
((
DB_SEQUENCE
 *, 
u_t32_t
 *));

81 
__q_g_key
 
__P
((
DB_SEQUENCE
 *, 
DBT
 *));

82 
__q_g_nge
 
__P
((
DB_SEQUENCE
 *, 
db_q_t
 *, db_seq_t *));

83 
__q_l_vue
 
__P
((
DB_SEQUENCE
 *, 
db_q_t
));

84 
__q_ݒ_
 
__P
((
DB_SEQUENCE
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

85 
__q_move
 
__P
((
DB_SEQUENCE
 *, 
DB_TXN
 *, 
u_t32_t
));

86 
__q_t_chesize
 
__P
((
DB_SEQUENCE
 *, 
t32_t
));

87 
__q_t_ags
 
__P
((
DB_SEQUENCE
 *, 
u_t32_t
));

88 
__q_t_nge
 
__P
((
DB_SEQUENCE
 *, 
db_q_t
, db_seq_t));

89 
__q_upde
 
__P
((
DB_SEQUENCE
 *, 
DB_TXN
 *, 
t32_t
, 
u_t32_t
));

98 
	$db_qu_
(
qp
, 
dbp
, 
ags
)

99 
DB_SEQUENCE
 **
qp
;

100 
DB
 *
dbp
;

101 
u_t32_t
 
ags
;

103 
DB_ENV
 *
dbv
;

104 
DB_SEQUENCE
 *
q
;

105 
t
;

107 
dbv
 = 
dbp
->dbenv;

109 
	`DB_ILLEGAL_BEFORE_OPEN
(
dbp
, "db_sequence_create");

110 #ifde
HAVE_RPC


111 i(
	`RPC_ON
(
dbv
))

112  (
	`__db_dbv_g
(
dbv
));

116 
ags
) {

120  (
	`__db_
(
dbv
, "db_sequence_create", 0));

124 i((
t
 = 
	`__os_oc
(
dbv
, 1, (*
q
), &seq)) != 0)

125  (
t
);

127 
q
->
q_dbp
 = 
dbp
;

128 
q
->
o
 = 
__q_o
;

129 
q
->
g
 = 
__q_g
;

130 
q
->
g_chesize
 = 
__q_g_chesize
;

131 
q
->
t_chesize
 = 
__q_t_chesize
;

132 
q
->
g_db
 = 
__q_g_db
;

133 
q
->
g_ags
 = 
__q_g_ags
;

134 
q
->
g_key
 = 
__q_g_key
;

135 
q
->
g_nge
 = 
__q_g_nge
;

136 
q
->
l_vue
 = 
__q_l_vue
;

137 
q
->
ݒ
 = 
__q_ݒ_
;

138 
q
->
move
 = 
__q_move
;

139 
q
->
t_ags
 = 
__q_t_ags
;

140 
q
->
t_nge
 = 
__q_t_nge
;

141 
q
->

 = 
__q_
;

142 
q
->
_t
 = 
__q__t
;

143 
q
->
q_
 = &q->
q_cd
;

144 *
qp
 = 
q
;

147 
	}
}

155 
	$__q_ݒ_
(
q
, 
txn
, 
keyp
, 
ags
)

156 
DB_SEQUENCE
 *
q
;

157 
DB_TXN
 *
txn
;

158 
DBT
 *
keyp
;

159 
u_t32_t
 
ags
;

161 
DB
 *
dbp
;

162 
DB_ENV
 *
dbv
;

163 
DB_SEQ_RECORD
 *

;

164 
DB_THREAD_INFO
 *

;

165 
u_t32_t
 
tags
;

166 
hd_check
, 
txn_lol
, 
t
, 
t_t
;

167 
	#SEQ_OPEN_FLAGS
 (
DB_CREATE
 | 
DB_EXCL
 | 
DB_THREAD
)

	)

169 
dbp
 = 
q
->
q_dbp
;

170 
dbv
 = 
dbp
->dbenv;

171 
txn_lol
 = 0;

173 
	`STRIP_AUTO_COMMIT
(
ags
);

174 
	`SEQ_ILLEGAL_AFTER_OPEN
(
q
, "DB_SEQUENCE->open");

176 
	`ENV_ENTER
(
dbv
, 

);

179 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

180 i(
hd_check
 &&

181 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

182 
hd_check
 = 0;

183 
r
;

186 i((
t
 = 
	`__db_fchk
(
dbv
,

187 "DB_SEQUENCE->ݒ", 
ags
, 
SEQ_OPEN_FLAGS
)) != 0)

188 
r
;

190 i(
keyp
->
size
 == 0) {

191 
	`__db_rx
(
dbv
, "Zeroength sequence key specified");

192 
t
 = 
EINVAL
;

193 
r
;

196 i((
t
 = 
	`__db_g_ags
(
dbp
, &
tags
)) != 0)

197 
r
;

199 i(
	`DB_IS_READONLY
(
dbp
)) {

200 
t
 = 
	`__db_rdly
(
dbp
->
dbv
, "DB_SEQUENCE->open");

201 
r
;

203 i(
	`FLD_ISSET
(
tags
, 
DB_DUP
)) {

204 
	`__db_rx
(
dbv
,

206 
t
 = 
EINVAL
;

207 
r
;

210 i(
	`LF_ISSET
(
DB_THREAD
)) {

211 i(
	`RPC_ON
(
dbv
)) {

212 
	`__db_rx
(
dbv
,

214 
r
;

216 i((
t
 = 
	`__mux_loc
(
dbv
,

217 
MTX_SEQUENCE
, 
DB_MUTEX_PROCESS_ONLY
, &
q
->
mtx_q
)) != 0)

218 
r
;

221 
	`memt
(&
q
->
q_da
, 0, (
DBT
));

222 i(
	`__db_isbigdn
()) {

223 i((
t
 = 
	`__os_umloc
(
dbv
,

224 (
q
->
q_cd
), &q->
q_da
.
da
)) != 0)

225 
r
;

226 
q
->
q_da
.
ags
 = 
DB_DBT_REALLOC
;

228 
q
->
q_da
.
da
 = &q->
q_cd
;

229 
q
->
q_da
.
ags
 = 
DB_DBT_USERMEM
;

232 
q
->
q_da
.
un
 = seq->q_da.
size
 = (q->
q_cd
);

233 
q
->
q_
 = &q->
q_cd
;

235 i((
t
 = 
	`__dbt_urcy
(
dbv
, 
keyp
)) != 0)

236 
r
;

238 
	`memt
(&
q
->
q_key
, 0, (
DBT
));

239 i((
t
 = 
	`__os_mloc
(
dbv
, 
keyp
->
size
, &
q
->
q_key
.
da
)) != 0)

240 
r
;

241 
	`memy
(
q
->
q_key
.
da
, 
keyp
->da, keyp->
size
);

242 
q
->
q_key
.
size
 = seq->q_key.
un
 = 
keyp
->size;

243 
q
->
q_key
.
ags
 = 
DB_DBT_USERMEM
;

245 
y
: i((
t
 = 
	`__db_g
(
dbp
, 
txn
, &
q
->
q_key
, &q->
q_da
, 0)) != 0) {

246 i(
t
 =
DB_BUFFER_SMALL
 &&

247 
q
->
q_da
.
size
 > (q->
q_cd
)) {

248 
q
->
q_da
.
ags
 = 
DB_DBT_REALLOC
;

249 
q
->
q_da
.
da
 = 
NULL
;

250 
y
;

252 i((
t
 !
DB_NOTFOUND
 && !
DB_KEYEMPTY
) ||

253 !
	`LF_ISSET
(
DB_CREATE
))

254 
r
;

255 
t
 = 0;

257 

 = &
q
->
q_cd
;

258 i(!
	`F_ISSET
(

, 
DB_SEQ_RANGE_SET
)) {

259 

->
q_max
 = 
INT64_MAX
;

260 

->
q_m
 = 
INT64_MIN
;

263 i(!
	`F_ISSET
(

, 
DB_SEQ_DEC
))

264 
	`F_SET
(

, 
DB_SEQ_INC
);

266 

->
q_vsi
 = 
DB_SEQUENCE_VERSION
;

268 i(

->
q_vue
 >p->
q_max
 ||

269 

->
q_vue
 <p->
q_m
) {

270 
	`__db_rx
(
dbv
, "Sequence value out ofange");

271 
t
 = 
EINVAL
;

272 
r
;

274 
	`SEQ_SWAP_OUT
(
q
);

276 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

277 i((
t
 =

278 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

279 
r
;

280 
txn_lol
 = 1;

283 i((
t
 = 
	`__db_put
(
dbp
, 
txn
, &
q
->
q_key
,

284 &
q
->
q_da
, 
DB_NOOVERWRITE
)) != 0) {

285 
	`__db_rx
(
dbv
, "Sequence create failed");

286 
r
;

289 } i(
	`LF_ISSET
(
DB_CREATE
&& LF_ISSET(
DB_EXCL
)) {

290 
t
 = 
EEXIST
;

291 
r
;

292 } i(
q
->
q_da
.
size
 < (q->
q_cd
)) {

293 
	`__db_rx
(
dbv
, "Bad sequenceecord format");

294 
t
 = 
EINVAL
;

295 
r
;

298 i(!
	`__db_isbigdn
())

299 
q
->
q_
 = seq->
q_da
.
da
;

305 

 = 
q
->
q_da
.
da
;

306 i(

->
q_vsi
 =
DB_SEQUENCE_OLDVER
) {

307 
dv
: 

->
q_vsi
 = 
DB_SEQUENCE_VERSION
;

308 i(
	`__db_isbigdn
()) {

309 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

310 i((
t
 =

311 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

312 
r
;

313 
txn_lol
 = 1;

314 
y
;

316 
	`memy
(&
q
->
q_cd
, 

, (seq->seq_record));

317 
	`SEQ_SWAP_OUT
(
q
);

319 i((
t
 = 
	`__db_put
(
dbp
,

320 
txn
, &
q
->
q_key
, &q->
q_da
, 0)) != 0)

321 
r
;

323 

 = 
q
->
q_
;

325 
	`SEQ_SWAP_IN
(
q
);

327 i(

->
q_vsi
 !
DB_SEQUENCE_VERSION
) {

337 i(

->
q_vsi
 =
DB_SEQUENCE_OLDVER
)

338 
dv
;

339 
	`M_32_SWAP
(

->
q_vsi
);

340 i(

->
q_vsi
 =
DB_SEQUENCE_OLDVER
) {

341 
	`SEQ_SWAP
(

);

342 
dv
;

344 
	`M_32_SWAP
(

->
q_vsi
);

345 
	`__db_rx
(
dbv
,

346 "Unsu܋d sequ vsi: %d", 

->
q_vsi
);

347 
r
;

350 
q
->
q_ϡ_vue
 = 

->
q_vue
;

351 i(
	`F_ISSET
(

, 
DB_SEQ_INC
))

352 
q
->
q_ϡ_vue
--;

354 
q
->
q_ϡ_vue
++;

359 i(
q
->
q_che_size
 !0 && (
t
 = 
	`__q_chk_chesize
(

360 
dbv
, 
q
->
q_che_size
, 

->
q_max
,p->
q_m
)) != 0)

361 
r
;

363 
r
: i(
txn_lol
 &&

364 (
t_t
 = 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 0, 
t
)) &&et == 0)

365 
t
 = 
t_t
;

366 i(
t
 != 0) {

367 
	`__os_
(
dbv
, 
q
->
q_key
.
da
);

368 
q
->
q_key
.
da
 = 
NULL
;

371 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

372 
t
 = 
t_t
;

374 
	`ENV_LEAVE
(
dbv
, 

);

375 
	`__dbt_ur
(
dbv
, 
keyp
, 
NULL
, NULL);

376  (
t
);

377 
	}
}

385 
	$__q_g_chesize
(
q
, 
chesize
)

386 
DB_SEQUENCE
 *
q
;

387 
t32_t
 *
chesize
;

389 
	`SEQ_ILLEGAL_BEFORE_OPEN
(
q
, "DB_SEQUENCE->get_cachesize");

391 *
chesize
 = 
q
->
q_che_size
;

393 
	}
}

401 
	$__q_t_chesize
(
q
, 
chesize
)

402 
DB_SEQUENCE
 *
q
;

403 
t32_t
 
chesize
;

405 
DB_ENV
 *
dbv
;

406 
t
;

408 
dbv
 = 
q
->
q_dbp
->dbenv;

410 i(
chesize
 < 0) {

411 
	`__db_rx
(
dbv
, "Cache size must be >= 0");

412  (
EINVAL
);

418 i(
	`SEQ_IS_OPEN
(
q
&& (
t
 = 
	`__q_chk_chesize
(
dbv
,

419 
chesize
, 
q
->
q_
->
q_max
, seq->q_->
q_m
)) != 0)

420  (
t
);

422 
q
->
q_che_size
 = 
chesize
;

424 
	}
}

426 
	#SEQ_SET_FLAGS
 (
DB_SEQ_WRAP
 | 
DB_SEQ_INC
 | 
DB_SEQ_DEC
)

	)

433 
	$__q_g_ags
(
q
, 
ag
)

434 
DB_SEQUENCE
 *
q
;

435 
u_t32_t
 *
ag
;

437 
	`SEQ_ILLEGAL_BEFORE_OPEN
(
q
, "DB_SEQUENCE->get_flags");

439 *
ag
 = 
	`F_ISSET
(
q
->
q_
, 
SEQ_SET_FLAGS
);

441 
	}
}

449 
	$__q_t_ags
(
q
, 
ags
)

450 
DB_SEQUENCE
 *
q
;

451 
u_t32_t
 
ags
;

453 
DB_ENV
 *
dbv
;

454 
DB_SEQ_RECORD
 *

;

455 
t
;

457 
dbv
 = 
q
->
q_dbp
->dbenv;

458 

 = 
q
->
q_
;

460 
	`SEQ_ILLEGAL_AFTER_OPEN
(
q
, "DB_SEQUENCE->set_flags");

462 i((
t
 = 
	`__db_fchk
(

463 
dbv
, "DB_SEQUENCE->t_ags", 
ags
, 
SEQ_SET_FLAGS
)) != 0)

464  (
t
);

465 i((
t
 = 
	`__db_fcchk
(
dbv
,

466 "DB_SEQUENCE->t_ags", 
ags
, 
DB_SEQ_DEC
, 
DB_SEQ_INC
)) != 0)

467  (
t
);

469 i(
	`LF_ISSET
(
DB_SEQ_DEC
 | 
DB_SEQ_INC
))

470 
	`F_CLR
(

, 
DB_SEQ_DEC
 | 
DB_SEQ_INC
);

471 
	`F_SET
(

, 
ags
);

474 
	}
}

482 
	$__q_l_vue
(
q
, 
vue
)

483 
DB_SEQUENCE
 *
q
;

484 
db_q_t
 
vue
;

486 
DB_ENV
 *
dbv
;

487 
DB_SEQ_RECORD
 *

;

489 
dbv
 = 
q
->
q_dbp
->dbenv;

490 
	`SEQ_ILLEGAL_AFTER_OPEN
(
q
, "DB_SEQUENCE->initial_value");

492 

 = 
q
->
q_
;

493 i(
	`F_ISSET
(

, 
DB_SEQ_RANGE_SET
) &&

494 (
vue
 > 

->
q_max
 || vu<p->
q_m
)) {

495 
	`__db_rx
(
dbv
, "Sequence value out ofange");

496  (
EINVAL
);

499 

->
q_vue
 = 
vue
;

502 
	}
}

510 
	$__q_g_nge
(
q
, 
mp
, 
maxp
)

511 
DB_SEQUENCE
 *
q
;

512 
db_q_t
 *
mp
, *
maxp
;

514 
	`SEQ_ILLEGAL_BEFORE_OPEN
(
q
, "DB_SEQUENCE->get_range");

516 *
mp
 = 
q
->
q_
->
q_m
;

517 *
maxp
 = 
q
->
q_
->
q_max
;

519 
	}
}

527 
	$__q_t_nge
(
q
, 
m
, 
max
)

528 
DB_SEQUENCE
 *
q
;

529 
db_q_t
 
m
, 
max
;

531 
DB_ENV
 *
dbv
;

533 
dbv
 = 
q
->
q_dbp
->dbenv;

534 
	`SEQ_ILLEGAL_AFTER_OPEN
(
q
, "DB_SEQUENCE->set_range");

536 i(
m
 >
max
) {

537 
	`__db_rx
(
dbv
,

539  (
EINVAL
);

542 
q
->
q_
->
q_m
 = 
m
;

543 
q
->
q_
->
q_max
 = 
max
;

544 
	`F_SET
(
q
->
q_
, 
DB_SEQ_RANGE_SET
);

547 
	}
}

550 
	$__q_upde
(
q
, 
txn
, 
d
, 
ags
)

551 
DB_SEQUENCE
 *
q
;

552 
DB_TXN
 *
txn
;

553 
t32_t
 
d
;

554 
u_t32_t
 
ags
;

556 
DB
 *
dbp
;

557 
DB_ENV
 *
dbv
;

558 
DB_SEQ_RECORD
 *

;

559 
t32_t
 
adju
;

560 
t
, 
txn_lol
;

562 
dbp
 = 
q
->
q_dbp
;

563 
dbv
 = 
dbp
->dbenv;

570 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

571 i((
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

572  (
t
);

573 
txn_lol
 = 1;

575 
txn_lol
 = 0;

578 i((
t
 = 
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
, 0)) != 0)

579 
r
;

581 
y
: i((
t
 = 
	`__db_g
(
dbp
, 
txn
, &
q
->
q_key
, &q->
q_da
, 0)) != 0) {

582 i(
t
 =
DB_BUFFER_SMALL
 &&

583 
q
->
q_da
.
size
 > (q->
q_cd
)) {

584 
q
->
q_da
.
ags
 = 
DB_DBT_REALLOC
;

585 
q
->
q_da
.
da
 = 
NULL
;

586 
y
;

588 
r
;

591 i(!
	`__db_isbigdn
())

592 
q
->
q_
 = seq->
q_da
.
da
;

593 
	`SEQ_SWAP_IN
(
q
);

594 

 = 
q
->
q_
;

596 i(
	`F_ISSET
(

, 
DB_SEQ_WRAPPED
))

597 
ovow
;

599 i(
q
->
q_da
.
size
 < (q->
q_cd
)) {

600 
	`__db_rx
(
dbv
, "Bad sequenceecord format");

601 
t
 = 
EINVAL
;

602 
r
;

605 
adju
 = 
d
 > 
q
->
q_che_size
 ? delta : seq->seq_cache_size;

616 
aga
: i(
	`F_ISSET
(

, 
DB_SEQ_INC
)) {

617 i(

->
q_vue
 + 
adju
 - 1 <p->seq_value ||

618 

->
q_vue
 + 
adju
 - 1 >p->
q_max
) {

620 i(
adju
 > 
d
) {

621 
adju
 = 
d
;

622 
aga
;

624 i(
	`F_ISSET
(

, 
DB_SEQ_WRAP
))

625 

->
q_vue
 =p->
q_m
;

627 
ovow
: 
	`__db_rx
(
dbv
, "Sequence overflow");

628 
t
 = 
EINVAL
;

629 
r
;

633 i(!
	`F_ISSET
(

, 
DB_SEQ_WRAP
) &&

634 

->
q_vue
 + 
adju
 <p->seq_value)

635 
	`F_SET
(

, 
DB_SEQ_WRAPPED
);

637 i((

->
q_vue
 - 
adju
) + 1 >p->seq_value ||

638 (

->
q_vue
 - 
adju
+ 1 <p->
q_m
) {

640 i(
adju
 > 
d
) {

641 
adju
 = 
d
;

642 
aga
;

644 i(
	`F_ISSET
(

, 
DB_SEQ_WRAP
))

645 

->
q_vue
 =p->
q_max
;

647 
ovow
;

650 i(!
	`F_ISSET
(

, 
DB_SEQ_WRAP
) &&

651 

->
q_vue
 - 
adju
 >p->seq_value)

652 
	`F_SET
(

, 
DB_SEQ_WRAPPED
);

653 
adju
 = -adjust;

656 

->
q_vue
 +
adju
;

657 
	`SEQ_SWAP_OUT
(
q
);

658 
t
 = 
	`__db_put
(
dbp
, 
txn
, &
q
->
q_key
, &q->
q_da
, 0);

659 

->
q_vue
 -
adju
;

660 i(
t
 != 0) {

661 
	`__db_rx
(
dbv
, "Sequence update failed");

662 
r
;

664 
q
->
q_ϡ_vue
 = 

->
q_vue
 + 
adju
;

665 i(
	`F_ISSET
(

, 
DB_SEQ_INC
))

666 
q
->
q_ϡ_vue
--;

668 
q
->
q_ϡ_vue
++;

670 
r
:  (
txn_lol
 ? 
	`__db_txn_auto_sve
(

671 
dbv
, 
txn
, 
	`LF_ISSET
(
DB_TXN_NOSYNC
), 
t
) :et);

672 
	}
}

675 
	$__q_g
(
q
, 
txn
, 
d
, 

, 
ags
)

676 
DB_SEQUENCE
 *
q
;

677 
DB_TXN
 *
txn
;

678 
t32_t
 
d
;

679 
db_q_t
 *

;

680 
u_t32_t
 
ags
;

682 
DB
 *
dbp
;

683 
DB_ENV
 *
dbv
;

684 
DB_SEQ_RECORD
 *

;

685 
DB_THREAD_INFO
 *

;

686 
hd_check
, 
t
, 
t_t
;

688 
dbp
 = 
q
->
q_dbp
;

689 
dbv
 = 
dbp
->dbenv;

690 

 = 
q
->
q_
;

691 
t
 = 0;

693 
	`STRIP_AUTO_COMMIT
(
ags
);

694 
	`SEQ_ILLEGAL_BEFORE_OPEN
(
q
, "DB_SEQUENCE->get");

696 i(
d
 <= 0) {

697 
	`__db_rx
(
dbv
, "Sequence delta must be greaterhan 0");

698  (
EINVAL
);

701 i(
q
->
q_che_size
 !0 && 
txn
 !
NULL
) {

702 
	`__db_rx
(
dbv
,

704  (
EINVAL
);

707 
	`ENV_ENTER
(
dbv
, 

);

710 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

711 i(
hd_check
 && (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0)

712  (
t
);

714 
	`MUTEX_LOCK
(
dbv
, 
q
->
mtx_q
);

716 i(

->
q_m
 + 
d
 >p->
q_max
) {

717 
	`__db_rx
(
dbv
, "Sequence overflow");

718 
t
 = 
EINVAL
;

719 
r
;

722 i(
	`F_ISSET
(

, 
DB_SEQ_INC
)) {

723 i(
q
->
q_ϡ_vue
 + 1 - 

->
q_vue
 < 
d
 &&

724 (
t
 = 
	`__q_upde
(
q
, 
txn
, 
d
, 
ags
)) != 0)

725 
r
;

727 

 = 
q
->
q_
;

728 *

 = 

->
q_vue
;

729 

->
q_vue
 +
d
;

731 i((

->
q_vue
 - 
q
->
q_ϡ_vue
+ 1 < 
d
 &&

732 (
t
 = 
	`__q_upde
(
q
, 
txn
, 
d
, 
ags
)) != 0)

733 
r
;

735 

 = 
q
->
q_
;

736 *

 = 

->
q_vue
;

737 

->
q_vue
 -
d
;

740 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 
q
->
mtx_q
);

743 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

744 
t
 = 
t_t
;

746 
	`ENV_LEAVE
(
dbv
, 

);

747  (
t
);

748 
	}
}

756 
	$__q_g_db
(
q
, 
db
)

757 
DB_SEQUENCE
 *
q
;

758 
DB
 **
db
;

760 *
db
 = 
q
->
q_dbp
;

762 
	}
}

770 
	$__q_g_key
(
q
, 
key
)

771 
DB_SEQUENCE
 *
q
;

772 
DBT
 *
key
;

774 
	`SEQ_ILLEGAL_BEFORE_OPEN
(
q
, "DB_SEQUENCE->get_key");

776 i(
	`F_ISSET
(
key
, 
DB_DBT_USERCOPY
))

777  (
	`__db_tcy
(
q
->
q_dbp
->
dbv
, 
key
,

778 
q
->
q_key
.
da
, seq->q_key.
size
, 
NULL
, 0));

780 
key
->
da
 = 
q
->
q_key
.data;

781 
key
->
size
 = key->
un
 = 
q
->
q_key
.size;

782 
key
->
ags
 = 
q
->
q_key
.flags;

784 
	}
}

792 
	$__q_o
(
q
, 
ags
)

793 
DB_SEQUENCE
 *
q
;

794 
u_t32_t
 
ags
;

796 
DB_ENV
 *
dbv
;

797 
t
, 
t_t
;

799 
t
 = 0;

800 
dbv
 = 
q
->
q_dbp
->dbenv;

802 i(
ags
 != 0)

803 
t
 = 
	`__db_
(
dbv
, "DB_SEQUENCE->close", 0);

805 i((
t_t
 = 
	`__mux_
(
dbv
, &
q
->
mtx_q
)!0 && 
t
 == 0)

806 
t
 = 
t_t
;

808 i(
q
->
q_key
.
da
 !
NULL
)

809 
	`__os_
(
dbv
, 
q
->
q_key
.
da
);

810 i(
q
->
q_da
.
da
 !
NULL
 &&

811 
q
->
q_da
.
da
 !&q->
q_cd
)

812 
	`__os_u
(
dbv
, 
q
->
q_da
.
da
);

813 
q
->
q_key
.
da
 = 
NULL
;

815 
	`memt
(
q
, 
CLEAR_BYTE
, (*seq));

816 
	`__os_
(
dbv
, 
q
);

818  (
t
);

819 
	}
}

826 
	$__q_move
(
q
, 
txn
, 
ags
)

827 
DB_SEQUENCE
 *
q
;

828 
DB_TXN
 *
txn
;

829 
u_t32_t
 
ags
;

831 
DB
 *
dbp
;

832 
DB_ENV
 *
dbv
;

833 
DB_THREAD_INFO
 *

;

834 
hd_check
, 
t
, 
t_t
, 
txn_lol
;

836 
dbp
 = 
q
->
q_dbp
;

837 
dbv
 = 
dbp
->dbenv;

838 
txn_lol
 = 0;

840 
	`SEQ_ILLEGAL_BEFORE_OPEN
(
q
, "DB_SEQUENCE->remove");

841 
	`ENV_ENTER
(
dbv
, 

);

844 
hd_check
 = 
	`IS_ENV_REPLICATED
(
dbv
);

845 i(
hd_check
 &&

846 (
t
 = 
	`__db_p_r
(
dbp
, 1, 0, 
txn
 !
NULL
)) != 0) {

847 
hd_check
 = 0;

848 
r
;

850 i(
ags
 != 0) {

851 
t
 = 
	`__db_
(
dbv
, "DB_SEQUENCE->remove", 0);

852 
r
;

860 i(
	`IS_DB_AUTO_COMMIT
(
dbp
, 
txn
)) {

861 i((
t
 = 
	`__txn_beg
(
dbv
, 
NULL
, &
txn
, 0)) != 0)

862  (
t
);

863 
txn_lol
 = 1;

867 i((
t
 = 
	`__db_check_txn
(
dbp
, 
txn
, 
DB_LOCK_INVALIDID
, 0)) != 0)

868 
r
;

870 
t
 = 
	`__db_d
(
dbp
, 
txn
, &
q
->
q_key
, 0);

872 i((
t_t
 = 
	`__q_o
(
q
, 0)!0 && 
t
 == 0)

873 
t
 = 
t_t
;

876 i(
hd_check
 && (
t_t
 = 
	`__v_db_p_ex
(
dbv
)!0 && 
t
 == 0)

877 
t
 = 
t_t
;

878 
r
: i(
txn_lol
 && (
t_t
 =

879 
	`__db_txn_auto_sve
(
dbv
, 
txn
, 0, 
t
)) != 0 &&et == 0)

880 
t
 = 
t_t
;

882 
	`ENV_LEAVE
(
dbv
, 

);

883  (
t
);

884 
	}
}

891 
	$__q_chk_chesize
(
dbv
, 
chesize
, 
max
, 
m
)

892 
DB_ENV
 *
dbv
;

893 
t32_t
 
chesize
;

894 
db_q_t
 
max
, 
m
;

903 i((
u_t32_t
)
chesize
 > (
u_t64_t
)
max
 - (u_t64_t)
m
) {

904 
	`__db_rx
(
dbv
,

906  (
EINVAL
);

909 
	}
}

914 
	$db_qu_
(
qp
, 
dbp
, 
ags
)

915 
DB_SEQUENCE
 **
qp
;

916 
DB
 *
dbp
;

917 
u_t32_t
 
ags
;

919 
	`COMPQUIET
(
qp
, 
NULL
);

920 
	`COMPQUIET
(
ags
, 0);

921 
	`__db_rx
(
dbp
->
dbv
,

923  (
DB_OPNOTSUP
);

924 
	}
}

	@../tcl/tcl_compat.c

9 
	~"db_cfig.h
"

10 #ifde
CONFIG_TEST


12 
	#DB_DBM_HSEARCH
 1

	)

13 
	~"db_t.h
"

14 #ifde
HAVE_SYSTEM_INCLUDE_FILES


15 
	~<t.h
>

17 
	~"dbc/t_db.h
"

26 
	$bdb_HCommd
(

, 
objc
, 
objv
)

27 
T_Ip
 *

;

28 
objc
;

29 
T_Obj
 *
CONST
 
objv
[];

31 cڡ *
hcmds
[] = {

35 
NULL


37 
	ehcmds
 {

38 
HHCREATE
,

39 
HHDESTROY
,

40 
HHSEARCH


42 cڡ *
chas
[] = {

45 
NULL


47 
	echas
 {

48 
ACT_ENTER
,

49 
ACT_FIND


51 
ENTRY
 
em
, *
hs
;

52 
ACTION
 
ai
;

53 
adex
, 
cmddex
, 
m
, 
su
, 
t
;

54 
T_Obj
 *
s
;

56 
su
 = 
TCL_OK
;

62 i(
	`T_GIndexFromObj
(

,

63 
objv
[1], 
hcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

64  (
	`IS_HELP
(
objv
[1]));

66 
s
 = 
NULL
;

67 (
hcmds
)
cmddex
) {

68 
HHCREATE
:

72 i(
objc
 != 3) {

73 
	`T_WrgNumArgs
(

, 2, 
objv
, "nelem");

74  (
TCL_ERROR
);

76 
su
 = 
	`T_GIFromObj
(

, 
objv
[2], &
m
);

77 i(
su
 =
TCL_OK
) {

78 
	`_debug_check
();

79 
t
 = 
	`h
((
size_t
)
m
) == 0 ? 1: 0;

80 ()
	`_RuSup
(

81 

, 
t
, 
	`DB_RETOK_STD
(ret), "hcreate");

84 
HHSEARCH
:

88 i(
objc
 != 5) {

89 
	`T_WrgNumArgs
(

, 2, 
objv
, "key dataction");

90  (
TCL_ERROR
);

92 
em
.
key
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

93 
em
.
da
 = 
	`T_GSgFromObj
(
objv
[3], 
NULL
);

94 i(
	`T_GIndexFromObj
(

, 
objv
[4], 
chas
,

95 "ai", 
TCL_EXACT
, &
adex
!
TCL_OK
)

96  (
	`IS_HELP
(
objv
[4]));

97 (
chas
)
adex
) {

98 
ACT_ENTER
:

99 
ai
 = 
ENTER
;

102 
ACT_FIND
:

103 
ai
 = 
FIND
;

106 
	`_debug_check
();

107 
hs
 = 
	`hch
(
em
, 
ai
);

108 i(
hs
 =
NULL
)

109 
	`T_SResu
(

, "-1", 
TCL_STATIC
);

110 i(
ai
 =
FIND
)

111 
	`T_SResu
(

, (*)
hs
->
da
, 
TCL_STATIC
);

114 
	`T_SResu
(

, "0", 
TCL_STATIC
);

117 
HHDESTROY
:

121 i(
objc
 != 2) {

122 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

123  (
TCL_ERROR
);

125 
	`_debug_check
();

126 
	`hderoy
();

127 
s
 = 
	`T_NewIObj
(0);

134 i(
su
 =
TCL_OK
 && 
s
)

135 
	`T_SObjResu
(

, 
s
);

136  (
su
);

137 
	}
}

149 
	$bdb_NdbmOn
(

, 
objc
, 
objv
, 
db
)

150 
T_Ip
 *

;

151 
objc
;

152 
T_Obj
 *
CONST
 
objv
[];

153 
DBM
 **
db
;

155 cڡ *
ndbݒ
[] = {

161 
NULL


163 
	endbݒ
 {

164 
NDB_CREATE
,

165 
NDB_MODE
,

166 
NDB_RDONLY
,

167 
NDB_TRUNC
,

168 
NDB_ENDARG


171 
dg
, 
i
, 
mode
, 
ݒ_ags
, 
tdex
, 
ad_ly
, 
su
, 
t
;

172 *
g
, *
db
;

174 
su
 = 
TCL_OK
;

175 
dg
 = 
mode
 = 
ݒ_ags
 = 
ad_ly
 = 0;

177 i(
objc
 < 2) {

178 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args?");

179  (
TCL_ERROR
);

186 
i
 = 2;

187 
i
 < 
objc
) {

188 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
ndbݒ
, "option",

189 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

190 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

191 i(
g
[0] == '-') {

192 
su
 = 
	`IS_HELP
(
objv
[
i
]);

193 
r
;

195 
	`T_RetResu
(

);

198 
i
++;

199 (
ndbݒ
)
tdex
) {

200 
NDB_CREATE
:

201 
ݒ_ags
 |
O_CREAT
;

203 
NDB_RDONLY
:

204 
ad_ly
 = 1;

206 
NDB_TRUNC
:

207 
ݒ_ags
 |
O_TRUNC
;

209 
NDB_MODE
:

210 i(
i
 >
objc
) {

211 
	`T_WrgNumArgs
(

, 2, 
objv
,

213 
su
 = 
TCL_ERROR
;

222 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
mode
);

224 
NDB_ENDARG
:

225 
dg
 = 1;

233 i(
su
 !
TCL_OK
)

234 
r
;

235 i(
dg
)

238 i(
su
 !
TCL_OK
)

239 
r
;

246 
db
 = 
NULL
;

247 i(
i
 !
objc
 && i != objc - 1) {

248 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? ?file?");

249 
su
 = 
TCL_ERROR
;

250 
r
;

252 i(
i
 !
objc
)

253 
db
 = 
	`T_GSgFromObj
(
objv
[
objc
 - 1], 
NULL
);

262 i(
ad_ly
)

263 
ݒ_ags
 |
O_RDONLY
;

265 
ݒ_ags
 |
O_RDWR
;

266 
	`_debug_check
();

267 i((*
db
 = 
	`dbm_ݒ
(
db
, 
ݒ_ags
, 
mode
)=
NULL
) {

268 
t
 = 
	`T_GEno
();

269 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

271 
r
;

273  (
TCL_OK
);

275 
r
:

276 *
db
 = 
NULL
;

277  (
su
);

278 
	}
}

290 
	$bdb_DbmCommd
(

, 
objc
, 
objv
, 
ag
, 
dbm
)

291 
T_Ip
 *

;

292 
objc
;

293 
T_Obj
 *
CONST
 
objv
[];

294 
ag
;

295 
DBM
 *
dbm
;

297 cڡ *
dbmcmds
[] = {

305 
NULL


307 
	edbmcmds
 {

308 
DBMCLOSE
,

309 
DBMINIT
,

310 
DBMDELETE
,

311 
DBMFETCH
,

312 
DBMFIRST
,

313 
DBMNEXT
,

314 
DBMSTORE


316 cڡ *
ag
[] = {

318 
NULL


320 
	eag
 {

321 
STINSERT
, 
STREPLACE


323 
dum
 
key
, 
da
;

324 *
dtmp
, *
ktmp
;

325 
u_t32_t
 
size
;

326 
cmddex
, 
da
, 
key
, 
dex
, 
su
, 
t
;

327 *
me
, *
t
;

329 
su
 = 
TCL_OK
;

330 
key
 = 
da
 = 0;

331 
dtmp
 = 
ktmp
 = 
NULL
;

338 i(
	`T_GIndexFromObj
(

,

339 
objv
[1], 
dbmcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

340  (
	`IS_HELP
(
objv
[1]));

342 (
dbmcmds
)
cmddex
) {

343 
DBMCLOSE
:

347 i(
objc
 != 2) {

348 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

349  (
TCL_ERROR
);

351 
	`_debug_check
();

352 i(
ag
 =
DBTCL_DBM
)

353 
t
 = 
	`dbmo
();

355 
	`T_SResu
(

,

356 "Bad i fg f commd", 
TCL_STATIC
);

357  (
TCL_ERROR
);

359 ()
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "dbmclose");

361 
DBMINIT
:

365 i(
objc
 != 3) {

366 
	`T_WrgNumArgs
(

, 2, 
objv
, "file");

367  (
TCL_ERROR
);

369 
me
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

370 i(
ag
 =
DBTCL_DBM
)

371 
t
 = 
	`dbm
(
me
);

373 
	`T_SResu
(

, "Bad interface flag for command",

374 
TCL_STATIC
);

375  (
TCL_ERROR
);

377 ()
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "dbminit");

379 
DBMFETCH
:

383 i(
objc
 != 3) {

384 
	`T_WrgNumArgs
(

, 2, 
objv
, "key");

385  (
TCL_ERROR
);

387 i((
t
 = 
	`_CyObjBys
(

388 

, 
objv
[2], &
ktmp
, &
size
, &
key
)) != 0) {

389 
su
 = 
	`_RuSup
(

, 
t
,

390 
	`DB_RETOK_STD
(
t
), "dbm fetch");

391 
out
;

393 
key
.
dsize
 = ()
size
;

394 
key
.
dr
 = (*)
ktmp
;

395 
	`_debug_check
();

396 i(
ag
 =
DBTCL_DBM
)

397 
da
 = 
	`tch
(
key
);

398 i(
ag
 =
DBTCL_NDBM
)

399 
da
 = 
	`dbm_tch
(
dbm
, 
key
);

401 
	`T_SResu
(

,

402 "Bad i fg f commd", 
TCL_STATIC
);

403 
su
 = 
TCL_ERROR
;

404 
out
;

406 i(
da
.
dr
 =
NULL
 ||

407 (
t
 = 
	`__os_mloc
(
NULL
, (
size_t
)
da
.
dsize
 + 1, &
t
)) != 0)

408 
	`T_SResu
(

, "-1", 
TCL_STATIC
);

410 
	`memy
(
t
, 
da
.
dr
, (
size_t
)da.
dsize
);

411 
t
[
da
.
dsize
] = '\0';

412 
	`T_SResu
(

, 
t
, 
TCL_VOLATILE
);

413 
	`__os_
(
NULL
, 
t
);

416 
DBMSTORE
:

420 i(
objc
 !4 && 
ag
 =
DBTCL_DBM
) {

421 
	`T_WrgNumArgs
(

, 2, 
objv
, "key data");

422  (
TCL_ERROR
);

424 i(
objc
 !5 && 
ag
 =
DBTCL_NDBM
) {

425 
	`T_WrgNumArgs
(

, 2, 
objv
, "key dataction");

426  (
TCL_ERROR
);

428 i((
t
 = 
	`_CyObjBys
(

429 

, 
objv
[2], &
ktmp
, &
size
, &
key
)) != 0) {

430 
su
 = 
	`_RuSup
(

, 
t
,

431 
	`DB_RETOK_STD
(
t
), "dbm fetch");

432 
out
;

434 
key
.
dsize
 = ()
size
;

435 
key
.
dr
 = (*)
ktmp
;

436 i((
t
 = 
	`_CyObjBys
(

437 

, 
objv
[3], &
dtmp
, &
size
, &
da
)) != 0) {

438 
su
 = 
	`_RuSup
(

, 
t
,

439 
	`DB_RETOK_STD
(
t
), "dbm fetch");

440 
out
;

442 
da
.
dsize
 = ()
size
;

443 
da
.
dr
 = (*)
dtmp
;

444 
	`_debug_check
();

445 i(
ag
 =
DBTCL_DBM
)

446 
t
 = 
	`e
(
key
, 
da
);

447 i(
ag
 =
DBTCL_NDBM
) {

448 i(
	`T_GIndexFromObj
(

, 
objv
[4], 
ag
,

449 "ag", 
TCL_EXACT
, &
dex
!
TCL_OK
)

450  (
	`IS_HELP
(
objv
[4]));

451 (
ag
)
dex
) {

452 
STINSERT
:

453 
ag
 = 
DBM_INSERT
;

455 
STREPLACE
:

456 
ag
 = 
DBM_REPLACE
;

459 
t
 = 
	`dbm_e
(
dbm
, 
key
, 
da
, 
ag
);

461 
	`T_SResu
(

,

462 "Bad i fg f commd", 
TCL_STATIC
);

463  (
TCL_ERROR
);

465 ()
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "store");

467 
DBMDELETE
:

471 i(
objc
 != 3) {

472 
	`T_WrgNumArgs
(

, 2, 
objv
, "key");

473  (
TCL_ERROR
);

475 i((
t
 = 
	`_CyObjBys
(

476 

, 
objv
[2], &
ktmp
, &
size
, &
key
)) != 0) {

477 
su
 = 
	`_RuSup
(

, 
t
,

478 
	`DB_RETOK_STD
(
t
), "dbm fetch");

479 
out
;

481 
key
.
dsize
 = ()
size
;

482 
key
.
dr
 = (*)
ktmp
;

483 
	`_debug_check
();

484 i(
ag
 =
DBTCL_DBM
)

485 
t
 = 
	`de
(
key
);

486 i(
ag
 =
DBTCL_NDBM
)

487 
t
 = 
	`dbm_de
(
dbm
, 
key
);

489 
	`T_SResu
(

,

490 "Bad i fg f commd", 
TCL_STATIC
);

491  (
TCL_ERROR
);

493 ()
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "delete");

495 
DBMFIRST
:

499 i(
objc
 != 2) {

500 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

501  (
TCL_ERROR
);

503 
	`_debug_check
();

504 i(
ag
 =
DBTCL_DBM
)

505 
key
 = 
	`fkey
();

506 i(
ag
 =
DBTCL_NDBM
)

507 
key
 = 
	`dbm_fkey
(
dbm
);

509 
	`T_SResu
(

,

510 "Bad i fg f commd", 
TCL_STATIC
);

511  (
TCL_ERROR
);

513 i(
key
.
dr
 =
NULL
 ||

514 (
t
 = 
	`__os_mloc
(
NULL
, (
size_t
)
key
.
dsize
 + 1, &
t
)) != 0)

515 
	`T_SResu
(

, "-1", 
TCL_STATIC
);

517 
	`memy
(
t
, 
key
.
dr
, (
size_t
)key.
dsize
);

518 
t
[
key
.
dsize
] = '\0';

519 
	`T_SResu
(

, 
t
, 
TCL_VOLATILE
);

520 
	`__os_
(
NULL
, 
t
);

523 
DBMNEXT
:

527 
	`_debug_check
();

528 i(
ag
 =
DBTCL_DBM
) {

529 i(
objc
 != 3) {

530 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

531  (
TCL_ERROR
);

533 i((
t
 = 
	`_CyObjBys
(

534 

, 
objv
[2], &
ktmp
, &
size
, &
key
)) != 0) {

535 
su
 = 
	`_RuSup
(

, 
t
,

536 
	`DB_RETOK_STD
(
t
), "dbm fetch");

537 
out
;

539 
key
.
dsize
 = ()
size
;

540 
key
.
dr
 = (*)
ktmp
;

541 
da
 = 
	`xtkey
(
key
);

542 } i(
ag
 =
DBTCL_NDBM
) {

543 i(
objc
 != 2) {

544 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

545  (
TCL_ERROR
);

547 
da
 = 
	`dbm_xtkey
(
dbm
);

549 
	`T_SResu
(

,

550 "Bad i fg f commd", 
TCL_STATIC
);

551  (
TCL_ERROR
);

553 i(
da
.
dr
 =
NULL
 ||

554 (
t
 = 
	`__os_mloc
(
NULL
, (
size_t
)
da
.
dsize
 + 1, &
t
)) != 0)

555 
	`T_SResu
(

, "-1", 
TCL_STATIC
);

557 
	`memy
(
t
, 
da
.
dr
, (
size_t
)da.
dsize
);

558 
t
[
da
.
dsize
] = '\0';

559 
	`T_SResu
(

, 
t
, 
TCL_VOLATILE
);

560 
	`__os_
(
NULL
, 
t
);

565 
out
: i(
dtmp
 !
NULL
 && 
da
)

566 
	`__os_
(
NULL
, 
dtmp
);

567 i(
ktmp
 !
NULL
 && 
key
)

568 
	`__os_
(
NULL
, 
ktmp
);

569  (
su
);

570 
	}
}

579 
	$ndbm_Cmd
(
Da
, 

, 
objc
, 
objv
)

580 
ClDa
 
Da
;

581 
T_Ip
 *

;

582 
objc
;

583 
T_Obj
 *
CONST
 
objv
[];

585 cڡ *
ndbcmds
[] = {

597 
NULL


599 
	endbcmds
 {

600 
NDBCLRERR
,

601 
NDBCLOSE
,

602 
NDBDELETE
,

603 
NDBDIRFNO
,

604 
NDBERR
,

605 
NDBFETCH
,

606 
NDBFIRST
,

607 
NDBNEXT
,

608 
NDBPAGFNO
,

609 
NDBRDONLY
,

610 
NDBSTORE


612 
DBM
 *
dbp
;

613 
DBTCL_INFO
 *
db
;

614 
T_Obj
 *
s
;

615 
cmddex
, 
su
, 
t
;

617 
	`T_RetResu
(

);

618 
dbp
 = (
DBM
 *)
Da
;

619 
db
 = 
	`_PToInfo
((*)
dbp
);

620 
su
 = 
TCL_OK
;

621 i(
objc
 <= 1) {

622 
	`T_WrgNumArgs
(

, 1, 
objv
, "command cmdargs");

623  (
TCL_ERROR
);

625 i(
dbp
 =
NULL
) {

626 
	`T_SResu
(

, "NULL dbor", 
TCL_STATIC
);

627  (
TCL_ERROR
);

629 i(
db
 =
NULL
) {

630 
	`T_SResu
(

, "NULL db infpor", 
TCL_STATIC
);

631  (
TCL_ERROR
);

638 i(
	`T_GIndexFromObj
(

,

639 
objv
[1], 
ndbcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

640  (
	`IS_HELP
(
objv
[1]));

642 
s
 = 
NULL
;

643 (
ndbcmds
)
cmddex
) {

644 
NDBCLOSE
:

645 
	`_debug_check
();

646 
	`dbm_o
(
dbp
);

647 ()
	`T_DeCommd
(

, 
db
->
i_me
);

648 
	`_DeInfo
(
db
);

649 
s
 = 
	`T_NewIObj
(0);

651 
NDBDELETE
:

652 
NDBFETCH
:

653 
NDBFIRST
:

654 
NDBNEXT
:

655 
NDBSTORE
:

656 
su
 = 
	`bdb_DbmCommd
(

, 
objc
, 
objv
, 
DBTCL_NDBM
, 
dbp
);

658 
NDBCLRERR
:

662 i(
objc
 > 2) {

663 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

664  (
TCL_ERROR
);

666 
	`_debug_check
();

667 
t
 = 
	`dbm_
(
dbp
);

668 i(
t
)

669 ()
	`_RuSup
(

670 

, 
t
, 
	`DB_RETOK_STD
(ret), "clearerr");

672 
s
 = 
	`T_NewIObj
(
t
);

674 
NDBDIRFNO
:

678 i(
objc
 > 2) {

679 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

680  (
TCL_ERROR
);

682 
	`_debug_check
();

683 
t
 = 
	`dbm_do
(
dbp
);

684 
s
 = 
	`T_NewIObj
(
t
);

686 
NDBPAGFNO
:

690 i(
objc
 > 2) {

691 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

692  (
TCL_ERROR
);

694 
	`_debug_check
();

695 
t
 = 
	`dbm_go
(
dbp
);

696 
s
 = 
	`T_NewIObj
(
t
);

698 
NDBERR
:

702 i(
objc
 > 2) {

703 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

704  (
TCL_ERROR
);

706 
	`_debug_check
();

707 
t
 = 
	`dbm_r
(
dbp
);

708 
	`T_SEno
(
t
);

709 
	`T_SResu
(

,

710 (*)
	`T_PosixE
(

), 
TCL_STATIC
);

712 
NDBRDONLY
:

716 i(
objc
 > 2) {

717 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

718  (
TCL_ERROR
);

720 
	`_debug_check
();

721 
t
 = 
	`dbm_rdly
(
dbp
);

722 i(
t
)

723 ()
	`_RuSup
(

724 

, 
t
, 
	`DB_RETOK_STD
(ret), "rdonly");

726 
s
 = 
	`T_NewIObj
(
t
);

734 i(
su
 =
TCL_OK
 && 
s
)

735 
	`T_SObjResu
(

, 
s
);

736  (
su
);

737 
	}
}

	@../tcl/tcl_db.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/db_ge.h
"

16 
	~"dbc/db_am.h
"

17 
	~"dbc/t_db.h
"

22 
t_DbAssoc
 
__P
((
T_Ip
 *,

23 , 
T_Obj
 * 
CONST
*, 
DB
 *));

24 
t_DbClo
 
__P
((
T_Ip
 *,

25 , 
T_Obj
 * 
CONST
*, 
DB
 *, 
DBTCL_INFO
 *));

26 
t_DbDe
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *));

27 
t_DbG
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *, ));

28 #ifde
CONFIG_TEST


29 
t_DbKeyRge
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *));

31 
t_DbPut
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *));

32 
t_DbSt
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *));

33 
t_DbTrun
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *));

34 #ifde
CONFIG_TEST


35 
t_DbCom
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *));

36 
t_DbComSt
 
__P
((
T_Ip
 *,

37 , 
T_Obj
 * 
CONST
*, 
DB
 *));

39 
t_DbCurs
 
__P
((
T_Ip
 *,

40 , 
T_Obj
 * 
CONST
*, 
DB
 *, 
DBC
 **));

41 
t_DbJo
 
__P
((
T_Ip
 *,

42 , 
T_Obj
 * 
CONST
*, 
DB
 *, 
DBC
 **));

43 
t_DbGFgs
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *));

44 
t_DbGOnFgs
 
__P
((
T_Ip
 *,

45 , 
T_Obj
 * 
CONST
*, 
DB
 *));

46 
t_DbGjo
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *));

47 
t_DbCou
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB
 *));

48 
t_cd_
 
__P
((
DB
 *, cڡ 
DBT
 *, const DBT *, DBT *));

56 
	$_DbInfoDe
(

, 
db
)

57 
T_Ip
 *

;

58 
DBTCL_INFO
 *
db
;

60 
DBTCL_INFO
 *
x
, *
p
;

65 
p
 = 
	`LIST_FIRST
(&
__db_fohd
); !
NULL
; = 
x
) {

66 
x
 = 
	`LIST_NEXT
(
p
, 
s
);

72 i(
p
->
i_
 =
db
 &&->
i_ty
 =
I_DBC
) {

73 ()
	`T_DeCommd
(

, 
p
->
i_me
);

74 
	`_DeInfo
(
p
);

77 ()
	`T_DeCommd
(

, 
db
->
i_me
);

78 
	`_DeInfo
(
db
);

79 
	}
}

89 
	$db_Cmd
(
Da
, 

, 
objc
, 
objv
)

90 
ClDa
 
Da
;

91 
T_Ip
 *

;

92 
objc
;

93 
T_Obj
 *
CONST
 
objv
[];

95 cڡ *
dbcmds
[] = {

96 #ifde
CONFIG_TEST


135 
NULL


137 
	edbcmds
 {

138 #ifde
CONFIG_TEST


139 
DBKEYRANGE
,

140 
DBPGET
,

141 
DBRPCID
,

142 
DBTEST
,

143 
DBCOMPACT
,

144 
DBCOMPACT_STAT
,

146 
DBASSOCIATE
,

147 
DBCLOSE
,

148 
DBCOUNT
,

149 
DBCURSOR
,

150 
DBDELETE
,

151 
DBGET
,

152 
DBGETBTMINKEY
,

153 
DBGETCACHESIZE
,

154 
DBGETDBNAME
,

155 
DBGETENCRYPTFLAGS
,

156 
DBGETENV
,

157 
DBGETERRPFX
,

158 
DBGETFLAGS
,

159 
DBGETHFFACTOR
,

160 
DBGETHNELEM
,

161 
DBGETJOIN
,

162 
DBGETLORDER
,

163 
DBGETOPENFLAGS
,

164 
DBGETPAGESIZE
,

165 
DBGETQEXTENTSIZE
,

166 
DBGETREDELIM
,

167 
DBGETRELEN
,

168 
DBGETREPAD
,

169 
DBGETRESOURCE
,

170 
DBGETTYPE
,

171 
DBSWAPPED
,

172 
DBJOIN
,

173 
DBPUT
,

174 
DBSTAT
,

175 
DBSYNC
,

176 
DBTRUNCATE


178 
DB
 *
dbp
;

179 
DB_ENV
 *
dbv
;

180 
DBC
 *
dbc
;

181 
DBTCL_INFO
 *
db
, *

;

182 
DBTYPE
 
ty
;

183 
T_Obj
 *
s
, *
myobjv
[3];

184 
cmddex
, 
tv
, 
nche
, 
su
, 
t
;

185 
wme
[
MSG_SIZE
];

186 
u_t32_t
 
bys
, 
gbys
, 
vue
;

187 cڡ *
rv
, *
fame
, *
dbme
, *
vid
;

189 
	`T_RetResu
(

);

190 
dbp
 = (
DB
 *)
Da
;

191 
db
 = 
	`_PToInfo
((*)
dbp
);

192 
	`memt
(
wme
, 0, 
MSG_SIZE
);

193 
su
 = 
TCL_OK
;

194 i(
objc
 <= 1) {

195 
	`T_WrgNumArgs
(

, 1, 
objv
, "command cmdargs");

196  (
TCL_ERROR
);

198 i(
dbp
 =
NULL
) {

199 
	`T_SResu
(

, "NULL dbor", 
TCL_STATIC
);

200  (
TCL_ERROR
);

202 i(
db
 =
NULL
) {

203 
	`T_SResu
(

, "NULL db infpor", 
TCL_STATIC
);

204  (
TCL_ERROR
);

211 i(
	`T_GIndexFromObj
(

,

212 
objv
[1], 
dbcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

213  (
	`IS_HELP
(
objv
[1]));

215 
s
 = 
NULL
;

216 (
dbcmds
)
cmddex
) {

217 #ifde
CONFIG_TEST


218 
DBKEYRANGE
:

219 
su
 = 
	`t_DbKeyRge
(

, 
objc
, 
objv
, 
dbp
);

221 
DBPGET
:

222 
su
 = 
	`t_DbG
(

, 
objc
, 
objv
, 
dbp
, 1);

224 
DBRPCID
:

228 i(
objc
 > 2) {

229 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

230  (
TCL_ERROR
);

236 
s
 = 
	`T_NewLgObj
(()
dbp
->
_id
);

238 
DBTEST
:

239 
su
 = 
	`t_EnvTe
(

, 
objc
, 
objv
, 
dbp
->
dbv
);

242 
DBCOMPACT
:

243 
su
 = 
	`t_DbCom
(

, 
objc
, 
objv
, 
dbp
);

246 
DBCOMPACT_STAT
:

247 
su
 = 
	`t_DbComSt
(

, 
objc
, 
objv
, 
dbp
);

251 
DBASSOCIATE
:

252 
su
 = 
	`t_DbAssoc
(

, 
objc
, 
objv
, 
dbp
);

254 
DBCLOSE
:

255 
su
 = 
	`t_DbClo
(

, 
objc
, 
objv
, 
dbp
, 
db
);

257 
DBDELETE
:

258 
su
 = 
	`t_DbDe
(

, 
objc
, 
objv
, 
dbp
);

260 
DBGET
:

261 
su
 = 
	`t_DbG
(

, 
objc
, 
objv
, 
dbp
, 0);

263 
DBPUT
:

264 
su
 = 
	`t_DbPut
(

, 
objc
, 
objv
, 
dbp
);

266 
DBCOUNT
:

267 
su
 = 
	`t_DbCou
(

, 
objc
, 
objv
, 
dbp
);

269 
DBSWAPPED
:

273 i(
objc
 > 2) {

274 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

275  (
TCL_ERROR
);

277 
	`_debug_check
();

278 
t
 = 
dbp
->
	`g_byswd
(dbp, &
tv
);

279 
s
 = 
	`T_NewIObj
(
tv
);

281 
DBGETTYPE
:

285 i(
objc
 > 2) {

286 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

287  (
TCL_ERROR
);

289 
	`_debug_check
();

290 
t
 = 
dbp
->
	`g_ty
(dbp, &
ty
);

291 i(
ty
 =
DB_BTREE
)

292 
s
 = 
	`NewSgObj
("b", 
	`
("btree"));

293 i(
ty
 =
DB_HASH
)

294 
s
 = 
	`NewSgObj
("hash", 
	`
("hash"));

295 i(
ty
 =
DB_RECNO
)

296 
s
 = 
	`NewSgObj
("o", 
	`
("recno"));

297 i(
ty
 =
DB_QUEUE
)

298 
s
 = 
	`NewSgObj
("queue", 
	`
("queue"));

300 
	`T_SResu
(

,

301 "db gty: Rued unknowty\n", 
TCL_STATIC
);

302 
su
 = 
TCL_ERROR
;

305 
DBSTAT
:

306 
su
 = 
	`t_DbSt
(

, 
objc
, 
objv
, 
dbp
);

308 
DBSYNC
:

312 i(
objc
 > 2) {

313 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

314  (
TCL_ERROR
);

316 
	`_debug_check
();

317 
t
 = 
dbp
->
	`sync
(dbp, 0);

318 
s
 = 
	`T_NewIObj
(
t
);

319 i(
t
 != 0) {

320 
	`T_SObjResu
(

, 
s
);

321 
su
 = 
TCL_ERROR
;

324 
DBCURSOR
:

325 
	`tf
(
wme
, (newname),

326 "%s.c%d", 
db
->
i_me
, db->
i_dbdbcid
);

327 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_DBC
);

328 i(

 !
NULL
) {

329 
su
 = 
	`t_DbCurs
(

, 
objc
, 
objv
, 
dbp
, &
dbc
);

330 i(
su
 =
TCL_OK
) {

331 
db
->
i_dbdbcid
++;

332 

->
i_
 = 
db
;

333 ()
	`T_CeObjCommd
(

, 
wme
,

334 (
T_ObjCmdProc
 *)
dbc_Cmd
,

335 (
ClDa
)
dbc
, 
NULL
);

336 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

337 
	`_SInfoDa
(

, 
dbc
);

339 
	`_DeInfo
(

);

341 
	`T_SResu
(

,

342 "Could s ufo", 
TCL_STATIC
);

343 
su
 = 
TCL_ERROR
;

346 
DBJOIN
:

347 
	`tf
(
wme
, (newname),

348 "%s.c%d", 
db
->
i_me
, db->
i_dbdbcid
);

349 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_DBC
);

350 i(

 !
NULL
) {

351 
su
 = 
	`t_DbJo
(

, 
objc
, 
objv
, 
dbp
, &
dbc
);

352 i(
su
 =
TCL_OK
) {

353 
db
->
i_dbdbcid
++;

354 

->
i_
 = 
db
;

355 ()
	`T_CeObjCommd
(

, 
wme
,

356 (
T_ObjCmdProc
 *)
dbc_Cmd
,

357 (
ClDa
)
dbc
, 
NULL
);

358 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

359 
	`_SInfoDa
(

, 
dbc
);

361 
	`_DeInfo
(

);

363 
	`T_SResu
(

,

364 "Could s ufo", 
TCL_STATIC
);

365 
su
 = 
TCL_ERROR
;

368 
DBGETBTMINKEY
:

369 i(
objc
 != 2) {

370 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

371  (
TCL_ERROR
);

373 
t
 = 
dbp
->
	`g_bt_mkey
(dbp, &
vue
);

374 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

375 "db g_bt_mkey")=
TCL_OK
)

376 
s
 = 
	`T_NewIObj
(()
vue
);

378 
DBGETCACHESIZE
:

379 i(
objc
 != 2) {

380 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

381  (
TCL_ERROR
);

383 
t
 = 
dbp
->
	`g_chesize
(dbp, &
gbys
, &
bys
, &
nche
);

384 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

385 "db g_chesize")=
TCL_OK
) {

386 
myobjv
[0] = 
	`T_NewIObj
(()
gbys
);

387 
myobjv
[1] = 
	`T_NewIObj
(()
bys
);

388 
myobjv
[2] = 
	`T_NewIObj
(()
nche
);

389 
s
 = 
	`T_NewLiObj
(3, 
myobjv
);

392 
DBGETDBNAME
:

393 i(
objc
 != 2) {

394 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

395  (
TCL_ERROR
);

397 
t
 = 
dbp
->
	`g_dbme
(dbp, &
fame
, &
dbme
);

398 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

399 "db g_dbme")=
TCL_OK
) {

400 
myobjv
[0] = 
	`NewSgObj
(
fame
, 
	`
(filename));

401 
myobjv
[1] = 
	`NewSgObj
(
dbme
, 
	`
(dbname));

402 
s
 = 
	`T_NewLiObj
(2, 
myobjv
);

405 
DBGETENCRYPTFLAGS
:

406 
su
 = 
	`t_EnvGEnyFgs
(

, 
objc
, 
objv
, 
dbp
->
dbv
);

408 
DBGETENV
:

409 i(
objc
 != 2) {

410 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

411  (
TCL_ERROR
);

413 
dbv
 = 
dbp
->
	`g_v
(dbp);

414 i(
dbv
 !
NULL
 && (

 = 
	`_PToInfo
(dbenv)) != NULL) {

415 
vid
 = 

->
i_me
;

416 
s
 = 
	`NewSgObj
(
vid
, 
	`
(envid));

418 
	`T_RetResu
(

);

420 
DBGETERRPFX
:

421 i(
objc
 != 2) {

422 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

423  (
TCL_ERROR
);

425 
dbp
->
	`g_fx
(dbp, &
rv
);

426 
s
 = 
	`NewSgObj
(
rv
, 
	`
(strval));

428 
DBGETFLAGS
:

429 
su
 = 
	`t_DbGFgs
(

, 
objc
, 
objv
, 
dbp
);

431 
DBGETHFFACTOR
:

432 i(
objc
 != 2) {

433 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

434  (
TCL_ERROR
);

436 
t
 = 
dbp
->
	`g_h_f
(dbp, &
vue
);

437 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

438 "db g_h_f")=
TCL_OK
)

439 
s
 = 
	`T_NewIObj
(()
vue
);

441 
DBGETHNELEM
:

442 i(
objc
 != 2) {

443 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

444  (
TCL_ERROR
);

446 
t
 = 
dbp
->
	`g_h_m
(dbp, &
vue
);

447 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

448 "db g_h_m")=
TCL_OK
)

449 
s
 = 
	`T_NewIObj
(()
vue
);

451 
DBGETJOIN
:

452 
su
 = 
	`t_DbGjo
(

, 
objc
, 
objv
, 
dbp
);

454 
DBGETLORDER
:

458 i(
objc
 > 2) {

459 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

460  (
TCL_ERROR
);

462 
	`_debug_check
();

463 
t
 = 
dbp
->
	`g_ld
(dbp, &
tv
);

464 
s
 = 
	`T_NewIObj
(
tv
);

466 
DBGETOPENFLAGS
:

467 
su
 = 
	`t_DbGOnFgs
(

, 
objc
, 
objv
, 
dbp
);

469 
DBGETPAGESIZE
:

470 i(
objc
 != 2) {

471 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

472  (
TCL_ERROR
);

474 
t
 = 
dbp
->
	`g_gesize
(dbp, &
vue
);

475 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

476 "db g_gesize")=
TCL_OK
)

477 
s
 = 
	`T_NewIObj
(()
vue
);

479 
DBGETQEXTENTSIZE
:

480 i(
objc
 != 2) {

481 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

482  (
TCL_ERROR
);

484 
t
 = 
dbp
->
	`g_q_exsize
(dbp, &
vue
);

485 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

486 "db g_q_exsize")=
TCL_OK
)

487 
s
 = 
	`T_NewIObj
(()
vue
);

489 
DBGETREDELIM
:

490 i(
objc
 != 2) {

491 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

492  (
TCL_ERROR
);

494 
t
 = 
dbp
->
	`g__dim
(dbp, &
tv
);

495 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

496 "db g__dim")=
TCL_OK
)

497 
s
 = 
	`T_NewIObj
(
tv
);

499 
DBGETRELEN
:

500 i(
objc
 != 2) {

501 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

502  (
TCL_ERROR
);

504 
t
 = 
dbp
->
	`g__n
(dbp, &
vue
);

505 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

506 "db g__n")=
TCL_OK
)

507 
s
 = 
	`T_NewIObj
(()
vue
);

509 
DBGETREPAD
:

510 i(
objc
 != 2) {

511 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

512  (
TCL_ERROR
);

514 
t
 = 
dbp
->
	`g__d
(dbp, &
tv
);

515 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

516 "db g__d")=
TCL_OK
)

517 
s
 = 
	`T_NewIObj
(()
tv
);

519 
DBGETRESOURCE
:

520 i(
objc
 != 2) {

521 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

522  (
TCL_ERROR
);

524 
t
 = 
dbp
->
	`g__sour
(dbp, &
rv
);

525 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

526 "db g__sour")=
TCL_OK
)

527 
s
 = 
	`NewSgObj
(
rv
, 
	`
(strval));

529 
DBTRUNCATE
:

530 
su
 = 
	`t_DbTrun
(

, 
objc
, 
objv
, 
dbp
);

537 i(
su
 =
TCL_OK
 && 
s
)

538 
	`T_SObjResu
(

, 
s
);

539  (
su
);

540 
	}
}

546 
	$t_DbSt
(

, 
objc
, 
objv
, 
dbp
)

547 
T_Ip
 *

;

548 
objc
;

549 
T_Obj
 *
CONST
 
objv
[];

550 
DB
 *
dbp
;

552 cڡ *
dbts
[] = {

553 #ifde
CONFIG_TEST


559 
NULL


561 
	edbts
 {

562 #ifde
CONFIG_TEST


563 
DBCUR_READ_COMMITTED
,

564 
DBCUR_READ_UNCOMMITTED
,

566 
DBCUR_FASTSTAT
,

567 
DBCUR_TXN


569 
DBTYPE
 
ty
;

570 
DB_BTREE_STAT
 *
b
;

571 
DB_HASH_STAT
 *
h
;

572 
DB_QUEUE_STAT
 *
q
;

573 
DB_TXN
 *
txn
;

574 
T_Obj
 *
s
, *
agli
, *
myobjv
[2];

575 
u_t32_t
 
ag
;

576 
i
, 
tdex
, 
su
, 
t
;

577 *
g
, 
msg
[
MSG_SIZE
];

578 *

;

580 
su
 = 
TCL_OK
;

581 
ag
 = 0;

582 
txn
 = 
NULL
;

583 

 = 
NULL
;

584 
i
 = 2;

585 
i
 < 
objc
) {

586 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbts
, "option",

587 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

588 
su
 = 
	`IS_HELP
(
objv
[
i
]);

589 
r
;

591 
i
++;

592 (
dbts
)
tdex
) {

593 #ifde
CONFIG_TEST


594 
DBCUR_READ_COMMITTED
:

595 
ag
 |
DB_READ_COMMITTED
;

597 
DBCUR_READ_UNCOMMITTED
:

598 
ag
 |
DB_READ_UNCOMMITTED
;

601 
DBCUR_FASTSTAT
:

602 
ag
 |
DB_FAST_STAT
;

604 
DBCUR_TXN
:

605 i(
i
 =
objc
) {

606 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

607 
su
 = 
TCL_ERROR
;

610 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

611 
txn
 = 
	`NAME_TO_TXN
(
g
);

612 i(
txn
 =
NULL
) {

613 
	`tf
(
msg
, 
MSG_SIZE
,

614 "St: Invidxn: %s\n", 
g
);

615 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

616 
su
 = 
TCL_ERROR
;

620 i(
su
 !
TCL_OK
)

623 i(
su
 !
TCL_OK
)

624 
r
;

626 
	`_debug_check
();

627 
t
 = 
dbp
->
	`
(dbp, 
txn
, &

, 
ag
);

628 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db stat");

629 i(
su
 =
TCL_ERROR
)

630  (
su
);

632 ()
dbp
->
	`g_ty
(dbp, &
ty
);

637 
s
 = 
	`T_NewObj
();

642 i(
ty
 =
DB_HASH
) {

643 
h
 = (
DB_HASH_STAT
 *)

;

644 
	`MAKE_STAT_LIST
("Magic", 
h
->
hash_magic
);

645 
	`MAKE_STAT_LIST
("Vsi", 
h
->
hash_vsi
);

646 
	`MAKE_STAT_LIST
("Pagsize", 
h
->
hash_gesize
);

647 
	`MAKE_STAT_LIST
("Pagcou", 
h
->
hash_get
);

648 
	`MAKE_STAT_LIST
("Numb okeys", 
h
->
hash_nkeys
);

649 
	`MAKE_STAT_LIST
("Numb ocds", 
h
->
hash_nda
);

650 
	`MAKE_STAT_LIST
("F", 
h
->
hash_f
);

651 
	`MAKE_STAT_LIST
("Bucks", 
h
->
hash_bucks
);

652 i(
ag
 !
DB_FAST_STAT
) {

653 
	`MAKE_STAT_LIST
("Fges", 
h
->
hash_
);

654 
	`MAKE_STAT_LIST
("By", 
h
->
hash_b
);

655 
	`MAKE_STAT_LIST
("Number of bigages",

656 
h
->
hash_bigges
);

657 
	`MAKE_STAT_LIST
("Bigages bytes free",

658 
h
->
hash_big_b
);

659 
	`MAKE_STAT_LIST
("Ovowages", 
h
->
hash_ovows
);

660 
	`MAKE_STAT_LIST
("Overflow bytes free",

661 
h
->
hash_ov_
);

662 
	`MAKE_STAT_LIST
("Duiages", 
h
->
hash_dup
);

663 
	`MAKE_STAT_LIST
("Duplicateages bytes free",

664 
h
->
hash_dup_
);

666 } i(
ty
 =
DB_QUEUE
) {

667 
q
 = (
DB_QUEUE_STAT
 *)

;

668 
	`MAKE_STAT_LIST
("Magic", 
q
->
qs_magic
);

669 
	`MAKE_STAT_LIST
("Vsi", 
q
->
qs_vsi
);

670 
	`MAKE_STAT_LIST
("Pagsize", 
q
->
qs_gesize
);

671 
	`MAKE_STAT_LIST
("Ex size", 
q
->
qs_exsize
);

672 
	`MAKE_STAT_LIST
("Numb ocds", 
q
->
qs_nkeys
);

673 
	`MAKE_STAT_LIST
("Recdgth", 
q
->
qs__n
);

674 
	`MAKE_STAT_LIST
("Recdad", 
q
->
qs__d
);

675 
	`MAKE_STAT_LIST
("Fecdumb", 
q
->
qs_f_o
);

676 
	`MAKE_STAT_LIST
("Laecdumb", 
q
->
qs_cur_o
);

677 i(
ag
 !
DB_FAST_STAT
) {

678 
	`MAKE_STAT_LIST
("Numb oges", 
q
->
qs_ges
);

679 
	`MAKE_STAT_LIST
("By", 
q
->
qs_pg
);

682 
b
 = (
DB_BTREE_STAT
 *)

;

683 
	`MAKE_STAT_LIST
("Magic", 
b
->
bt_magic
);

684 
	`MAKE_STAT_LIST
("Vsi", 
b
->
bt_vsi
);

685 
	`MAKE_STAT_LIST
("Numb okeys", 
b
->
bt_nkeys
);

686 
	`MAKE_STAT_LIST
("Numb ocds", 
b
->
bt_nda
);

687 
	`MAKE_STAT_LIST
("Mimum keyge", 
b
->
bt_mkey
);

688 
	`MAKE_STAT_LIST
("Fixedecdgth", 
b
->
bt__n
);

689 
	`MAKE_STAT_LIST
("Recdad", 
b
->
bt__d
);

690 
	`MAKE_STAT_LIST
("Pagsize", 
b
->
bt_gesize
);

691 
	`MAKE_STAT_LIST
("Pagcou", 
b
->
bt_get
);

692 i(
ag
 !
DB_FAST_STAT
) {

693 
	`MAKE_STAT_LIST
("Levs", 
b
->
bt_vs
);

694 
	`MAKE_STAT_LIST
("Iȷges", 
b
->
bt_t_pg
);

695 
	`MAKE_STAT_LIST
("Lges", 
b
->
bt_af_pg
);

696 
	`MAKE_STAT_LIST
("Duiages", 
b
->
bt_dup_pg
);

697 
	`MAKE_STAT_LIST
("Ovowages", 
b
->
bt_ov_pg
);

698 
	`MAKE_STAT_LIST
("Emyages", 
b
->
bt_emy_pg
);

699 
	`MAKE_STAT_LIST
("Page fi", 
b
->
bt_
);

700 
	`MAKE_STAT_LIST
("Internalages bytes free",

701 
b
->
bt_t_pg
);

702 
	`MAKE_STAT_LIST
("Leafages bytes free",

703 
b
->
bt_af_pg
);

704 
	`MAKE_STAT_LIST
("Duplicateages bytes free",

705 
b
->
bt_dup_pg
);

706 
	`MAKE_STAT_LIST
("Bytes free in overflowages",

707 
b
->
bt_ov_pg
);

717 
myobjv
[0] = 
	`NewSgObj
("Fgs", 
	`
("Flags"));

718 
myobjv
[1] = 
	`_GFgsLi
(

, 
dbp
->
ags
, 
	`__db_g_ags_
());

719 
agli
 = 
	`T_NewLiObj
(2, 
myobjv
);

720 i(
agli
 =
NULL
) {

721 
su
 = 
TCL_ERROR
;

722 
r
;

724 i((
su
 =

725 
	`T_LiObjAdEmt
(

, 
s
, 
agli
)!
TCL_OK
)

726 
r
;

728 
	`T_SObjResu
(

, 
s
);

729 
r
:

730 i(

 !
NULL
)

731 
	`__os_u
(
dbp
->
dbv
, 

);

732  (
su
);

733 
	}
}

739 
	$t_DbClo
(

, 
objc
, 
objv
, 
dbp
, 
db
)

740 
T_Ip
 *

;

741 
objc
;

742 
T_Obj
 *
CONST
 
objv
[];

743 
DB
 *
dbp
;

744 
DBTCL_INFO
 *
db
;

746 cڡ *
dbo
[] = {

747 "-nosync", "--", 
NULL


749 
	edbo
 {

750 
TCL_DBCLOSE_NOSYNC
,

751 
TCL_DBCLOSE_ENDARG


753 
u_t32_t
 
ag
;

754 
dg
, 
i
, 
tdex
, 
su
, 
t
;

755 *
g
;

757 
su
 = 
TCL_OK
;

758 
dg
 = 0;

759 
ag
 = 0;

760 i(
objc
 > 4) {

761 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-nosync?");

762  (
TCL_ERROR
);

765 
i
 = 2; i < 
objc
; ++i) {

766 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbo
,

767 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

768 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

769 i(
g
[0] == '-')

770  (
	`IS_HELP
(
objv
[
i
]));

772 
	`T_RetResu
(

);

775 (
dbo
)
tdex
) {

776 
TCL_DBCLOSE_NOSYNC
:

777 
ag
 = 
DB_NOSYNC
;

779 
TCL_DBCLOSE_ENDARG
:

780 
dg
 = 1;

787 i(
su
 !
TCL_OK
)

788  (
su
);

789 i(
dg
)

792 i(
db
->
i_cda
 !
NULL
)

793 
	`__os_
(
dbp
->
dbv
, 
db
->
i_cda
);

794 
	`_DbInfoDe
(

, 
db
);

795 
	`_debug_check
();

798 
dbp
->
i_
 = 
NULL
;

800 
t
 = (
dbp
)->
	`o
(dbp, 
ag
);

801 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db close");

802  (
su
);

803 
	}
}

809 
	$t_DbPut
(

, 
objc
, 
objv
, 
dbp
)

810 
T_Ip
 *

;

811 
objc
;

812 
T_Obj
 *
CONST
 
objv
[];

813 
DB
 *
dbp
;

815 cڡ *
dbputts
[] = {

816 #ifde
CONFIG_TEST


823 
NULL


825 
	edbputts
 {

826 #ifde
CONFIG_TEST


827 
DBGET_NODUPDATA
,

829 
DBPUT_APPEND
,

830 
DBPUT_NOOVER
,

831 
DBPUT_PART
,

832 
DBPUT_TXN


834 cڡ *
dbpu
[] = {

835 "-nd", 
NULL


837 
	edbpu
 { 
DBPUT_APPEND0
 };

838 
DBT
 
key
, 
da
;

839 
DBTYPE
 
ty
;

840 
DB_TXN
 *
txn
;

841 
T_Obj
 **
emv
, *
s
;

842 *
dtmp
, *
ktmp
;

843 
db_o_t
 
o
;

844 
u_t32_t
 
ag
;

845 
emc
, 
d
, 
key
, 
da
;

846 
i
, 
tdex
, 
su
, 
t
;

847 *
g
, 
msg
[
MSG_SIZE
];

849 
txn
 = 
NULL
;

850 
su
 = 
TCL_OK
;

851 
ag
 = 0;

852 i(
objc
 <= 3) {

853 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args? key data");

854  (
TCL_ERROR
);

857 
dtmp
 = 
ktmp
 = 
NULL
;

858 
key
 = 
da
 = 0;

859 
	`memt
(&
key
, 0, (key));

860 
	`memt
(&
da
, 0, (data));

867 ()
dbp
->
	`g_ty
(dbp, &
ty
);

877 
d
 = 
objc
 - 2;

878 i(
ty
 =
DB_QUEUE
 ||y =
DB_RECNO
) {

879 
i
 = 2;

880 
i
 < 
objc
 - 1) {

881 i(
	`T_GIndexFromObj
(

, 
objv
[
i
++], 
dbpu
,

882 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
)

884 (
dbpu
)
tdex
) {

885 
DBPUT_APPEND0
:

886 
d
 = 
objc
 - 1;

891 
	`T_RetResu
(

);

897 
i
 = 2;

898 
i
 < 
d
) {

899 i(
	`T_GIndexFromObj
(

, 
objv
[
i
],

900 
dbputts
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
)

901  (
	`IS_HELP
(
objv
[
i
]));

902 
i
++;

903 (
dbputts
)
tdex
) {

904 #ifde
CONFIG_TEST


905 
DBGET_NODUPDATA
:

906 
	`FLAG_CHECK
(
ag
);

907 
ag
 = 
DB_NODUPDATA
;

910 
DBPUT_TXN
:

911 i(
i
 > (
d
 - 1)) {

912 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

913 
su
 = 
TCL_ERROR
;

916 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

917 
txn
 = 
	`NAME_TO_TXN
(
g
);

918 i(
txn
 =
NULL
) {

919 
	`tf
(
msg
, 
MSG_SIZE
,

920 "Put: Invidxn: %s\n", 
g
);

921 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

922 
su
 = 
TCL_ERROR
;

925 
DBPUT_APPEND
:

926 
	`FLAG_CHECK
(
ag
);

927 
ag
 = 
DB_APPEND
;

929 
DBPUT_NOOVER
:

930 
	`FLAG_CHECK
(
ag
);

931 
ag
 = 
DB_NOOVERWRITE
;

933 
DBPUT_PART
:

934 i(
i
 > (
d
 - 1)) {

935 
	`T_WrgNumArgs
(

, 2, 
objv
,

937 
su
 = 
TCL_ERROR
;

943 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
++],

944 &
emc
, &
emv
);

945 i(
emc
 != 2) {

946 
	`T_SResu
(

,

947 "Li mu b{offngth}", 
TCL_STATIC
);

948 
su
 = 
TCL_ERROR
;

951 
da
.
ags
 = 
DB_DBT_PARTIAL
;

952 
su
 = 
	`_GUI32
(

, 
emv
[0], &
da
.
doff
);

953 i(
su
 !
TCL_OK
)

955 
su
 = 
	`_GUI32
(

, 
emv
[1], &
da
.
dn
);

965 i(
su
 !
TCL_OK
)

969 i(
su
 =
TCL_ERROR
)

970  (
su
);

976 i(
ty
 =
DB_QUEUE
 ||y =
DB_RECNO
) {

977 
key
.
da
 = &
o
;

978 
key
.
un
 = key.
size
 = (
db_o_t
);

979 
key
.
ags
 = 
DB_DBT_USERMEM
;

980 i(
ag
 =
DB_APPEND
)

981 
o
 = 0;

983 
su
 = 
	`_GUI32
(

, 
objv
[
objc
-2], &
o
);

984 i(
su
 !
TCL_OK
)

985  (
su
);

988 
	`COMPQUIET
(
o
, 0);

990 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-2], &
ktmp
,

991 &
key
.
size
, &
key
);

992 i(
t
 != 0) {

993 
su
 = 
	`_RuSup
(

, 
t
,

994 
	`DB_RETOK_DBPUT
(
t
), "dbut");

995  (
su
);

997 
key
.
da
 = 
ktmp
;

999 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-1], &
dtmp
, &
da
.
size
, &
da
);

1000 i(
t
 != 0) {

1001 
su
 = 
	`_RuSup
(

, 
t
,

1002 
	`DB_RETOK_DBPUT
(
t
), "dbut");

1003 
out
;

1005 
da
.d
dtmp
;

1006 
	`_debug_check
();

1007 
t
 = 
dbp
->
	`put
(dbp, 
txn
, &
key
, &
da
, 
ag
);

1008 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBPUT
(ret), "dbut");

1011 i(
t
 == 0 &&

1012 (
ty
 =
DB_QUEUE
 ||y =
DB_RECNO
&& 
ag
 =
DB_APPEND
) {

1013 
s
 = 
	`T_NewWideIObj
((
T_WideI
)
o
);

1014 
	`T_SObjResu
(

, 
s
);

1017 
out
: i(
dtmp
 !
NULL
 && 
da
)

1018 
	`__os_
(
dbp
->
dbv
, 
dtmp
);

1019 i(
ktmp
 !
NULL
 && 
key
)

1020 
	`__os_
(
dbp
->
dbv
, 
ktmp
);

1021  (
su
);

1022 
	}
}

1028 
	$t_DbG
(

, 
objc
, 
objv
, 
dbp
, 
ig
)

1029 
T_Ip
 *

;

1030 
objc
;

1031 
T_Obj
 *
CONST
 
objv
[];

1032 
DB
 *
dbp
;

1033 
ig
;

1035 cڡ *
dbgts
[] = {

1036 #ifde
CONFIG_TEST


1052 
NULL


1054 
	edbgts
 {

1055 #ifde
CONFIG_TEST


1056 
DBGET_DATA_BUF_SIZE
,

1057 
DBGET_MULTI
,

1058 
DBGET_NOLEASE
,

1059 
DBGET_READ_COMMITTED
,

1060 
DBGET_READ_UNCOMMITTED
,

1062 
DBGET_CONSUME
,

1063 
DBGET_CONSUME_WAIT
,

1064 
DBGET_BOTH
,

1065 
DBGET_GLOB
,

1066 
DBGET_PART
,

1067 
DBGET_RECNO
,

1068 
DBGET_RMW
,

1069 
DBGET_TXN
,

1070 
DBGET_ENDARG


1072 
DBC
 *
dbc
;

1073 
DBT
 
key
, 
pkey
, 
da
, 
ve
;

1074 
DBTYPE
 
y
, 
ty
;

1075 
DB_TXN
 *
txn
;

1076 
T_Obj
 **
emv
, *
i
;

1077 
db_o_t
 
eo
, 
o
;

1078 
u_t32_t
 
ag
, 
cag
, 
isdup
, 
mag
, 
rmw
;

1079 
emc
, 
d
, 
dg
, 
key
, 
da
, 
i
;

1080 
tdex
, 
su
, 
t
, 
uglob
, 
ueo
, 
uo
;

1081 *
g
, *
n
, *
efix
, 
msg
[
MSG_SIZE
];

1082 *
dtmp
, *
ktmp
;

1083 #ifde
CONFIG_TEST


1084 
bufsize
, 
da_buf_size
;

1087 
su
 = 
TCL_OK
;

1088 
key
 = 
da
 = 0;

1089 
cag
 = 
dg
 = 
ag
 = 
mag
 = 
rmw
 = 0;

1090 
uglob
 = 
uo
 = 0;

1091 
txn
 = 
NULL
;

1092 
n
 = 
efix
 = 
NULL
;

1093 
dtmp
 = 
ktmp
 = 
NULL
;

1094 #ifde
CONFIG_TEST


1095 
	`COMPQUIET
(
bufsize
, 0);

1096 
da_buf_size
 = 0;

1099 i(
objc
 < 3) {

1100 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args? key");

1101  (
TCL_ERROR
);

1104 
	`memt
(&
key
, 0, (key));

1105 
	`memt
(&
da
, 0, (data));

1106 
	`memt
(&
ve
, 0, (save));

1109 
	`memt
(&
pkey
, 0, (pkey));

1115 
i
 = 2;

1116 ()
dbp
->
	`g_ty
(dbp, &
ty
);

1117 
d
 = 
objc
;

1118 
i
 < 
d
) {

1119 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbgts
, "option",

1120 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

1121 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

1122 i(
g
[0] == '-') {

1123 
su
 = 
	`IS_HELP
(
objv
[
i
]);

1124 
out
;

1126 
	`T_RetResu
(

);

1129 
i
++;

1130 (
dbgts
)
tdex
) {

1131 #ifde
CONFIG_TEST


1132 
DBGET_DATA_BUF_SIZE
:

1133 
su
 =

1134 
	`T_GIFromObj
(

, 
objv
[
i
], &
da_buf_size
);

1135 i(
su
 !
TCL_OK
)

1136 
out
;

1137 
i
++;

1139 
DBGET_MULTI
:

1140 
mag
 |
DB_MULTIPLE
;

1141 
su
 =

1142 
	`T_GIFromObj
(

, 
objv
[
i
], &
bufsize
);

1143 i(
su
 !
TCL_OK
)

1144 
out
;

1145 
i
++;

1147 
DBGET_NOLEASE
:

1148 
rmw
 |
DB_IGNORE_LEASE
;

1150 
DBGET_READ_COMMITTED
:

1151 
rmw
 |
DB_READ_COMMITTED
;

1153 
DBGET_READ_UNCOMMITTED
:

1154 
rmw
 |
DB_READ_UNCOMMITTED
;

1157 
DBGET_BOTH
:

1162 i(
i
 > 
objc
 - 2) {

1163 
	`T_WrgNumArgs
(

, 2, 
objv
,

1165 
su
 = 
TCL_ERROR
;

1168 
d
 = 
objc
 - 2;

1169 
	`FLAG_CHECK
(
ag
);

1170 
ag
 = 
DB_GET_BOTH
;

1172 
DBGET_TXN
:

1173 i(
i
 >
d
) {

1174 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

1175 
su
 = 
TCL_ERROR
;

1178 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1179 
txn
 = 
	`NAME_TO_TXN
(
g
);

1180 i(
txn
 =
NULL
) {

1181 
	`tf
(
msg
, 
MSG_SIZE
,

1182 "G: Invidxn: %s\n", 
g
);

1183 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

1184 
su
 = 
TCL_ERROR
;

1187 
DBGET_GLOB
:

1188 
uglob
 = 1;

1189 
d
 = 
objc
 - 1;

1191 
DBGET_CONSUME
:

1192 
	`FLAG_CHECK
(
ag
);

1193 
ag
 = 
DB_CONSUME
;

1195 
DBGET_CONSUME_WAIT
:

1196 
	`FLAG_CHECK
(
ag
);

1197 
ag
 = 
DB_CONSUME_WAIT
;

1199 
DBGET_RECNO
:

1200 
d
 = 
objc
 - 1;

1201 
uo
 = 1;

1202 i(
ty
 !
DB_RECNO
 &&y !
DB_QUEUE
) {

1203 
	`FLAG_CHECK
(
ag
);

1204 
ag
 = 
DB_SET_RECNO
;

1205 
key
.
ags
 |
DB_DBT_MALLOC
;

1208 
DBGET_RMW
:

1209 
rmw
 |
DB_RMW
;

1211 
DBGET_PART
:

1212 
d
 = 
objc
 - 1;

1213 i(
i
 =
d
) {

1214 
	`T_WrgNumArgs
(

, 2, 
objv
,

1216 
su
 = 
TCL_ERROR
;

1222 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
++],

1223 &
emc
, &
emv
);

1224 i(
emc
 != 2) {

1225 
	`T_SResu
(

,

1226 "Li mu b{offngth}", 
TCL_STATIC
);

1227 
su
 = 
TCL_ERROR
;

1230 
ve
.
ags
 = 
DB_DBT_PARTIAL
;

1231 
su
 = 
	`_GUI32
(

, 
emv
[0], &
ve
.
doff
);

1232 i(
su
 !
TCL_OK
)

1234 
su
 = 
	`_GUI32
(

, 
emv
[1], &
ve
.
dn
);

1243 
DBGET_ENDARG
:

1244 
dg
 = 1;

1247 i(
su
 !
TCL_OK
)

1249 i(
dg
)

1252 i(
su
 !
TCL_OK
)

1253 
out
;

1255 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
)

1256 
uo
 = 1;

1264 i(((
ag
 =
DB_CONSUME
 || fg =
DB_CONSUME_WAIT
&& 
i
 !
objc
) ||

1265 (
ag
 =
DB_GET_BOTH
 && 
i
 !
objc
 - 2)) {

1266 
	`T_SResu
(

,

1268 
TCL_STATIC
);

1269 
su
 = 
TCL_ERROR
;

1270 
out
;

1271 } i(
ag
 =0 && 
i
 !
objc
 - 1) {

1272 
	`T_SResu
(

,

1273 "Wrgumb okey/dgiv\n", 
TCL_STATIC
);

1274 
su
 = 
TCL_ERROR
;

1275 
out
;

1281 i(
ig
 && 
dbp
->
s_imy
 !
NULL
) {

1282 ()
dbp
->
s_imy
->
	`g_ty
(dbp->s_imy, &
y
);

1283 
ueo
 = 
y
 =
DB_RECNO
 ||ty =
DB_QUEUE
;

1285 
ueo
 = 0;

1290 i(
uglob
 && (
uo
 || 
ag
 =
DB_SET_RECNO
 ||

1291 
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
)) {

1292 
	`T_SResu
(

,

1294 
TCL_STATIC
);

1295 
su
 = 
TCL_ERROR
;

1296 
out
;

1298 #ifdef 
CONFIG_TEST


1299 i(
da_buf_size
 !0 && 
ag
 =
DB_GET_BOTH
) {

1300 
	`T_SResu
(

,

1302 
TCL_STATIC
);

1303 
su
 = 
TCL_ERROR
;

1304 
out
;

1306 i(
da_buf_size
 !0 && 
mag
 != 0) {

1307 
	`T_SResu
(

,

1309 
TCL_STATIC
);

1310 
su
 = 
TCL_ERROR
;

1311 
out
;

1314 i(
uglob
 && 
ag
 =
DB_GET_BOTH
) {

1315 
	`T_SResu
(

,

1317 
TCL_STATIC
);

1318 
su
 = 
TCL_ERROR
;

1319 
out
;

1322 i(
uglob
)

1323 
n
 = 
	`T_GSgFromObj
(
objv
[
objc
 - 1], 
NULL
);

1328 
i
 = 
	`T_NewLiObj
(0, 
NULL
);

1329 
ve
.
ags
 |
DB_DBT_MALLOC
;

1335 i((
t
 = 
dbp
->
	`g_ags
(dbp, &
isdup
)) != 0) {

1336 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db get");

1337 
out
;

1339 
isdup
 &
DB_DUP
;

1346 i(
n
 =
NULL
 && (
isdup
 =0 || 
mag
 != 0 ||

1347 #ifdef 
CONFIG_TEST


1348 
da_buf_size
 != 0 ||

1350 
ag
 =
DB_SET_RECNO
 || fg =
DB_GET_BOTH
 ||

1351 
ag
 =
DB_CONSUME
 || fg =
DB_CONSUME_WAIT
)) {

1352 #ifdef 
CONFIG_TEST


1353 i(
da_buf_size
 == 0) {

1354 
	`F_CLR
(&
ve
, 
DB_DBT_USERMEM
);

1355 
	`F_SET
(&
ve
, 
DB_DBT_MALLOC
);

1357 ()
	`__os_mloc
(

1358 
NULL
, (
size_t
)
da_buf_size
, &
ve
.
da
);

1359 
ve
.
un
 = (
u_t32_t
)
da_buf_size
;

1360 
	`F_CLR
(&
ve
, 
DB_DBT_MALLOC
);

1361 
	`F_SET
(&
ve
, 
DB_DBT_USERMEM
);

1364 i(
ag
 =
DB_GET_BOTH
) {

1365 i(
uo
) {

1366 
su
 = 
	`_GUI32
(

,

1367 
objv
[(
objc
 - 2)], &
o
);

1368 i(
su
 =
TCL_OK
) {

1369 
key
.
da
 = &
o
;

1370 
key
.
size
 = (
db_o_t
);

1372 
out
;

1379 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-2],

1380 &
key
.
da
, &key.
size
, &
key
);

1381 i(
t
 != 0) {

1382 
su
 = 
	`_RuSup
(

, 
t
,

1383 
	`DB_RETOK_DBGET
(
t
), "db get");

1384 
out
;

1387 
ktmp
 = 
key
.
da
;

1397 i(
ueo
) {

1398 
su
 = 
	`_GUI32
(

,

1399 
objv
[
objc
 - 1], &
eo
);

1400 i(
su
 =
TCL_OK
) {

1401 
ve
.
da
 = &
eo
;

1402 
ve
.
size
 = (
db_o_t
);

1404 
out
;

1406 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-1],

1407 &
dtmp
, &
ve
.
size
, &
da
);

1408 i(
t
 != 0) {

1409 
su
 = 
	`_RuSup
(

, 
t
,

1410 
	`DB_RETOK_DBGET
(
t
), "db get");

1411 
out
;

1413 
ve
.
da
 = 
dtmp
;

1415 } i(
ag
 !
DB_CONSUME
 && fg !
DB_CONSUME_WAIT
) {

1416 i(
uo
) {

1417 
su
 = 
	`_GUI32
(

1418 

, 
objv
[(
objc
 - 1)], &
o
);

1419 i(
su
 =
TCL_OK
) {

1420 
key
.
da
 = &
o
;

1421 
key
.
size
 = (
db_o_t
);

1423 
out
;

1430 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-1],

1431 &
key
.
da
, &key.
size
, &
key
);

1432 i(
t
 != 0) {

1433 
su
 = 
	`_RuSup
(

, 
t
,

1434 
	`DB_RETOK_DBGET
(
t
), "db get");

1435 
out
;

1438 
ktmp
 = 
key
.
da
;

1439 #ifde
CONFIG_TEST


1440 i(
mag
 & 
DB_MULTIPLE
) {

1441 i((
t
 = 
	`__os_mloc
(
dbp
->
dbv
,

1442 (
size_t
)
bufsize
, &
ve
.
da
)) != 0) {

1443 
	`T_SResu
(

,

1444 
	`db_
(
t
), 
TCL_STATIC
);

1445 
out
;

1447 
ve
.
un
 = (
u_t32_t
)
bufsize
;

1448 
	`F_CLR
(&
ve
, 
DB_DBT_MALLOC
);

1449 
	`F_SET
(&
ve
, 
DB_DBT_USERMEM
);

1454 
da
 = 
ve
;

1456 i(
ig
) {

1457 i(
ag
 =
DB_GET_BOTH
) {

1458 
pkey
.
da
 = 
ve
.data;

1459 
pkey
.
size
 = 
ve
.size;

1460 
da
.d
NULL
;

1461 
da
.
size
 = 0;

1463 
	`F_SET
(&
pkey
, 
DB_DBT_MALLOC
);

1464 
	`_debug_check
();

1465 
t
 = 
dbp
->
	`pg
(dbp,

1466 
txn
, &
key
, &
pkey
, &
da
, 
ag
 | 
rmw
);

1468 
	`_debug_check
();

1469 
t
 = 
dbp
->
	`g
(dbp,

1470 
txn
, &
key
, &
da
, 
ag
 | 
rmw
 | 
mag
);

1472 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBGET
(ret),

1474 i(
t
 == 0) {

1480 i(
mag
 & 
DB_MULTIPLE
)

1481 
su
 = 
	`_SMuiLi
(

,

1482 
i
, &
key
, &
da
, 
ty
, 
ag
);

1483 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
)

1484 i(
ig
)

1485 
su
 = 
	`_S3DBTLi
(

,

1486 
i
, &
key
, 1, &
pkey
,

1487 
ueo
, &
da
);

1489 
su
 = 
	`_SLiReoEm
(

,

1490 
i
, *(
db_o_t
 *)
key
.
da
,

1491 
da
.da, da.
size
);

1493 i(
ig
)

1494 
su
 = 
	`_S3DBTLi
(

,

1495 
i
, &
key
, 0, &
pkey
,

1496 
ueo
, &
da
);

1498 
su
 = 
	`_SLiEm
(

, 
i
,

1499 
key
.
da
, key.
size
,

1500 
da
.da, da.
size
);

1512 i(
	`F_ISSET
(&
key
, 
DB_DBT_MALLOC
&& 
t
 == 0 &&

1513 
key
.
da
 !
ktmp
)

1514 
	`__os_u
(
dbp
->
dbv
, 
key
.
da
);

1515 i(
	`F_ISSET
(&
da
, 
DB_DBT_MALLOC
&& 
t
 == 0 &&

1516 
da
.d!
dtmp
)

1517 
	`__os_u
(
dbp
->
dbv
, 
da
.data);

1518 i(!
	`F_ISSET
(&
da
, 
DB_DBT_MALLOC
))

1519 
	`__os_
(
dbp
->
dbv
, 
da
.data);

1520 i(
ig
 && 
t
 =0 && 
pkey
.
da
 !
ve
.data)

1521 
	`__os_u
(
dbp
->
dbv
, 
pkey
.
da
);

1522 i(
su
 =
TCL_OK
)

1523 
	`T_SObjResu
(

, 
i
);

1524 
out
;

1527 i(
uo
) {

1528 
su
 = 
	`_GUI32
(

, 
objv
[(
objc
 - 1)], &
o
);

1529 i(
su
 =
TCL_OK
) {

1530 
key
.
da
 = &
o
;

1531 
key
.
size
 = (
db_o_t
);

1533 
out
;

1540 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-1], &
key
.
da
,

1541 &
key
.
size
, &
key
);

1542 i(
t
 != 0) {

1543 
su
 = 
	`_RuSup
(

, 
t
,

1544 
	`DB_RETOK_DBGET
(
t
), "db get");

1545  (
su
);

1548 
ktmp
 = 
key
.
da
;

1549 
t
 = 
dbp
->
	`curs
(dbp, 
txn
, &
dbc
, 0);

1550 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db cursor");

1551 i(
su
 =
TCL_ERROR
)

1552 
out
;

1562 
	`memt
(&
da
, 0, (data));

1566 
da
 = 
ve
;

1567 i(
n
) {

1571 
t
 = 
	`_GGlobPfix
(
n
, &
efix
);

1572 i(
t
) {

1573 
su
 = 
TCL_ERROR
;

1574 
	`T_SResu
(

,

1575 "Ubˁخlo s", 
TCL_STATIC
);

1576 
out1
;

1578 
key
.
da
 = 
efix
;

1579 
key
.
size
 = 
	`
(
efix
);

1584 i(
	`
(
efix
) == 0)

1585 
cag
 = 
DB_FIRST
;

1587 
cag
 = 
DB_SET_RANGE
;

1589 
cag
 = 
DB_SET
;

1590 i(
ig
) {

1591 
	`_debug_check
();

1592 
	`F_SET
(&
pkey
, 
DB_DBT_MALLOC
);

1593 
t
 = 
dbc
->
	`pg
(dbc, &
key
, &
pkey
, &
da
, 
cag
 | 
rmw
);

1595 
	`_debug_check
();

1596 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 
cag
 | 
rmw
);

1598 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBCGET
(ret),

1600 i(
su
 =
TCL_ERROR
)

1601 
out1
;

1602 i(
n
) {

1603 i(
t
 =0 && 
efix
 !
NULL
 &&

1604 
	`memcmp
(
key
.
da
, 
efix
, 
	`
(prefix)) != 0) {

1608 
	`__os_u
(
dbp
->
dbv
, 
da
.data);

1609 
out1
;

1611 
cag
 = 
DB_NEXT
;

1613 
cag
 = 
DB_NEXT_DUP
;

1615 
t
 =0 && 
su
 =
TCL_OK
) {

1619 i(
ig
)

1620 
su
 = 
	`_S3DBTLi
(

, 
i
, &
key
, 0,

1621 &
pkey
, 
ueo
, &
da
);

1623 
su
 = 
	`_SLiEm
(

, 
i
,

1624 
key
.
da
, key.
size
, data.data, data.size);

1628 i(
ig
)

1629 
	`__os_u
(
dbp
->
dbv
, 
pkey
.
da
);

1630 
	`__os_u
(
dbp
->
dbv
, 
da
.data);

1631 i(
su
 !
TCL_OK
)

1636 
	`memt
(&
key
, 0, (key));

1637 
	`memt
(&
pkey
, 0, (pkey));

1638 
	`memt
(&
da
, 0, (data));

1642 
da
 = 
ve
;

1643 i(
ig
) {

1644 
	`F_SET
(&
pkey
, 
DB_DBT_MALLOC
);

1645 
t
 = 
dbc
->
	`pg
(dbc, &
key
, &
pkey
, &
da
, 
cag
 | 
rmw
);

1647 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 
cag
 | 
rmw
);

1648 i(
t
 =0 && 
efix
 !
NULL
 &&

1649 
	`memcmp
(
key
.
da
, 
efix
, 
	`
(prefix)) != 0) {

1653 
	`__os_u
(
dbp
->
dbv
, 
da
.data);

1657 
out1
:

1658 ()
dbc
->
	`o
(dbc);

1659 i(
su
 =
TCL_OK
)

1660 
	`T_SObjResu
(

, 
i
);

1661 
out
:

1667 i(
efix
 !
NULL
)

1668 
	`__os_
(
dbp
->
dbv
, 
efix
);

1669 i(
dtmp
 !
NULL
 && 
da
)

1670 
	`__os_
(
dbp
->
dbv
, 
dtmp
);

1671 i(
ktmp
 !
NULL
 && 
key
)

1672 
	`__os_
(
dbp
->
dbv
, 
ktmp
);

1673  (
su
);

1674 
	}
}

1680 
	$t_DbDe
(

, 
objc
, 
objv
, 
dbp
)

1681 
T_Ip
 *

;

1682 
objc
;

1683 
T_Obj
 *
CONST
 
objv
[];

1684 
DB
 *
dbp
;

1686 cڡ *
dbdts
[] = {

1689 
NULL


1691 
	edbdts
 {

1692 
DBDEL_GLOB
,

1693 
DBDEL_TXN


1695 
DBC
 *
dbc
;

1696 
DBT
 
key
, 
da
;

1697 
DBTYPE
 
ty
;

1698 
DB_TXN
 *
txn
;

1699 *
ktmp
;

1700 
db_o_t
 
o
;

1701 
key
, 
i
, 
tdex
, 
su
, 
t
;

1702 
u_t32_t
 
ag
;

1703 *
g
, *
n
, *
efix
, 
msg
[
MSG_SIZE
];

1705 
su
 = 
TCL_OK
;

1706 
key
 = 0;

1707 
n
 = 
efix
 = 
NULL
;

1708 
txn
 = 
NULL
;

1709 i(
objc
 < 3) {

1710 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args? key");

1711  (
TCL_ERROR
);

1714 
ktmp
 = 
NULL
;

1715 
	`memt
(&
key
, 0, (key));

1719 
i
 = 2;

1720 
i
 < 
objc
) {

1721 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbdts
, "option",

1722 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

1729 i(
	`IS_HELP
(
objv
[
i
]=
TCL_OK
)

1730  (
TCL_OK
);

1731 
	`T_RetResu
(

);

1734 
i
++;

1735 (
dbdts
)
tdex
) {

1736 
DBDEL_TXN
:

1737 i(
i
 =
objc
) {

1742 
i
--;

1745 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1746 
txn
 = 
	`NAME_TO_TXN
(
g
);

1747 i(
txn
 =
NULL
) {

1748 
	`tf
(
msg
, 
MSG_SIZE
,

1749 "De: Invidxn: %s\n", 
g
);

1750 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

1751 
su
 = 
TCL_ERROR
;

1754 
DBDEL_GLOB
:

1759 i(
i
 =
objc
) {

1764 
i
--;

1767 
n
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1770 i(
su
 !
TCL_OK
)

1774 i(
su
 !
TCL_OK
)

1775 
out
;

1789 i(
n
 =
NULL
) {

1790 i(
i
 !(
objc
 - 1)) {

1791 
	`T_WrgNumArgs
(

1792 

, 2, 
objv
, "?args? -globattern | key");

1793 
su
 = 
TCL_ERROR
;

1794 
out
;

1797 i(
i
 !
objc
) {

1798 
	`T_WrgNumArgs
(

1799 

, 2, 
objv
, "?args? -globattern | key");

1800 
su
 = 
TCL_ERROR
;

1801 
out
;

1812 ()
dbp
->
	`g_ty
(dbp, &
ty
);

1813 
t
 = 0;

1814 
i
 < 
objc
 && 
t
 == 0) {

1815 
	`memt
(&
key
, 0, (key));

1816 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) {

1817 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
o
);

1818 i(
su
 =
TCL_OK
) {

1819 
key
.
da
 = &
o
;

1820 
key
.
size
 = (
db_o_t
);

1822  (
su
);

1824 
t
 = 
	`_CyObjBys
(

, 
objv
[
i
++], &
ktmp
,

1825 &
key
.
size
, &
key
);

1826 i(
t
 != 0) {

1827 
su
 = 
	`_RuSup
(

, 
t
,

1828 
	`DB_RETOK_DBDEL
(
t
), "db del");

1829  (
su
);

1831 
key
.
da
 = 
ktmp
;

1833 
	`_debug_check
();

1834 
t
 = 
dbp
->
	`d
(dbp, 
txn
, &
key
, 0);

1839 i(
ktmp
 !
NULL
 && 
key
)

1840 
	`__os_
(
dbp
->
dbv
, 
ktmp
);

1841 i(
t
 != 0)

1844 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBDEL
(ret), "db del");

1851 i(
n
) {

1852 
t
 = 
dbp
->
	`curs
(dbp, 
txn
, &
dbc
, 0);

1853 i(
t
 != 0) {

1854 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1856 
out
;

1861 
	`memt
(&
key
, 0, (key));

1862 
	`memt
(&
da
, 0, (data));

1863 
t
 = 
	`_GGlobPfix
(
n
, &
efix
);

1864 i(
t
) {

1865 
su
 = 
TCL_ERROR
;

1866 
	`T_SResu
(

,

1867 "Ubˁخlo s", 
TCL_STATIC
);

1868 
out
;

1870 
key
.
da
 = 
efix
;

1871 
key
.
size
 = 
	`
(
efix
);

1872 i(
	`
(
efix
) == 0)

1873 
ag
 = 
DB_FIRST
;

1875 
ag
 = 
DB_SET_RANGE
;

1876 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 
ag
);

1877 
t
 == 0 &&

1878 
	`memcmp
(
key
.
da
, 
efix
, 
	`
(prefix)) == 0) {

1884 
	`_debug_check
();

1885 
t
 = 
dbc
->
	`d
(dbc, 0);

1886 i(
t
 != 0) {

1887 
su
 = 
	`_RuSup
(

, 
t
,

1888 
	`DB_RETOK_DBCDEL
(
t
), "db c_del");

1895 
	`memt
(&
key
, 0, (key));

1896 
	`memt
(&
da
, 0, (data));

1897 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 
DB_NEXT
);

1899 i(
t
 =
DB_NOTFOUND
)

1900 
t
 = 0;

1906 
	`__os_
(
dbp
->
dbv
, 
efix
);

1907 ()
dbc
->
	`o
(dbc);

1908 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db del");

1910 
out
:

1911  (
su
);

1912 
	}
}

1918 
	$t_DbCurs
(

, 
objc
, 
objv
, 
dbp
, 
db
)

1919 
T_Ip
 *

;

1920 
objc
;

1921 
T_Obj
 *
CONST
 
objv
[];

1922 
DB
 *
dbp
;

1923 
DBC
 **
db
;

1925 cڡ *
dbcurts
[] = {

1926 #ifde
CONFIG_TEST


1932 
NULL


1934 
	edbcurts
 {

1935 #ifde
CONFIG_TEST


1936 
DBCUR_READ_COMMITTED
,

1937 
DBCUR_READ_UNCOMMITTED
,

1938 
DBCUR_UPDATE
,

1940 
DBCUR_TXN


1942 
DB_TXN
 *
txn
;

1943 
u_t32_t
 
ag
;

1944 
i
, 
tdex
, 
su
, 
t
;

1945 *
g
, 
msg
[
MSG_SIZE
];

1947 
su
 = 
TCL_OK
;

1948 
ag
 = 0;

1949 
txn
 = 
NULL
;

1950 
i
 = 2;

1951 
i
 < 
objc
) {

1952 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbcurts
, "option",

1953 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

1954 
su
 = 
	`IS_HELP
(
objv
[
i
]);

1955 
out
;

1957 
i
++;

1958 (
dbcurts
)
tdex
) {

1959 #ifde
CONFIG_TEST


1960 
DBCUR_READ_COMMITTED
:

1961 
ag
 |
DB_READ_COMMITTED
;

1963 
DBCUR_READ_UNCOMMITTED
:

1964 
ag
 |
DB_READ_UNCOMMITTED
;

1966 
DBCUR_UPDATE
:

1967 
ag
 |
DB_WRITECURSOR
;

1970 
DBCUR_TXN
:

1971 i(
i
 =
objc
) {

1972 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

1973 
su
 = 
TCL_ERROR
;

1976 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1977 
txn
 = 
	`NAME_TO_TXN
(
g
);

1978 i(
txn
 =
NULL
) {

1979 
	`tf
(
msg
, 
MSG_SIZE
,

1980 "Curs: Invidxn: %s\n", 
g
);

1981 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

1982 
su
 = 
TCL_ERROR
;

1986 i(
su
 !
TCL_OK
)

1989 i(
su
 !
TCL_OK
)

1990 
out
;

1992 
	`_debug_check
();

1993 
t
 = 
dbp
->
	`curs
(dbp, 
txn
, 
db
, 
ag
);

1994 i(
t
 != 0)

1995 
su
 = 
	`_ESup
(

, 
t
, "db cursor");

1996 
out
:

1997  (
su
);

1998 
	}
}

2005 
	$t_DbAssoc
(

, 
objc
, 
objv
, 
dbp
)

2006 
T_Ip
 *

;

2007 
objc
;

2008 
T_Obj
 *
CONST
 
objv
[];

2009 
DB
 *
dbp
;

2011 cڡ *
dbats
[] = {

2015 
NULL


2017 
	edbats
 {

2018 
DBA_CREATE
,

2019 
DBA_IMMUTABLE_KEY
,

2020 
DBA_TXN


2022 
DB
 *
sdbp
;

2023 
DB_TXN
 *
txn
;

2024 
DBTCL_INFO
 *
sdb
;

2025 
i
, 
tdex
, 
su
, 
t
;

2026 *
g
, 
msg
[
MSG_SIZE
];

2027 
u_t32_t
 
ag
;

2028 #ifde
CONFIG_TEST


2034 cڡ *
cbme
;

2036 cڡ *
me
;

2037 
u_t32_t
 
ag
;

2038 } *
cb
, 
backs
[] = {

2040 { "_s_vda", 
DB_RPC2ND_REVERSEDATA
 },

2041 { "_s_no", 
DB_RPC2ND_NOOP
 },

2042 { "_s_ctkeyda", 
DB_RPC2ND_CONCATKEYDATA
 },

2043 { "_s_ctdakey", 
DB_RPC2ND_CONCATDATAKEY
 },

2044 { "_s_vct", 
DB_RPC2ND_REVERSECONCAT
 },

2045 { "_s_uncda", 
DB_RPC2ND_TRUNCDATA
 },

2046 { "_s_vda", 
DB_RPC2ND_REVERSEDATA
 },

2047 { "_s_cڡt", 
DB_RPC2ND_CONSTANT
 },

2048 { "sj_gz", 
DB_RPC2ND_GETZIP
 },

2049 { "sj_gme", 
DB_RPC2ND_GETNAME
 },

2050 { 
NULL
, 0 }

2054 
txn
 = 
NULL
;

2055 
su
 = 
TCL_OK
;

2056 
ag
 = 0;

2057 i(
objc
 < 2) {

2058 
	`T_WrgNumArgs
(

, 2, 
objv
, "[callback] secondary");

2059  (
TCL_ERROR
);

2062 
i
 = 2;

2063 
i
 < 
objc
) {

2064 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbats
, "option",

2065 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

2066 
su
 = 
	`IS_HELP
(
objv
[
i
]);

2067 i(
su
 =
TCL_OK
)

2068  (
su
);

2069 
su
 = 
TCL_OK
;

2070 
	`T_RetResu
(

);

2073 
i
++;

2074 (
dbats
)
tdex
) {

2075 
DBA_CREATE
:

2076 
ag
 |
DB_CREATE
;

2078 
DBA_IMMUTABLE_KEY
:

2079 
ag
 |
DB_IMMUTABLE_KEY
;

2081 
DBA_TXN
:

2082 i(
i
 > (
objc
 - 1)) {

2083 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

2084 
su
 = 
TCL_ERROR
;

2087 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2088 
txn
 = 
	`NAME_TO_TXN
(
g
);

2089 i(
txn
 =
NULL
) {

2090 
	`tf
(
msg
, 
MSG_SIZE
,

2091 "Assoc: Invidxn: %s\n", 
g
);

2092 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2093 
su
 = 
TCL_ERROR
;

2098 i(
su
 !
TCL_OK
)

2099  (
su
);

2107 
g
 = 
	`T_GSgFromObj
(
objv
[
objc
 - 1], 
NULL
);

2108 
sdbp
 = 
	`NAME_TO_DB
(
g
);

2109 i(
sdbp
 =
NULL
) {

2110 
	`tf
(
msg
, 
MSG_SIZE
,

2111 "Assoc: Invid daba hd: %s\n", 
g
);

2112 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2113  (
TCL_ERROR
);

2124 
sdb
 = (
DBTCL_INFO
 *)
sdbp
->
i_
;

2126 #ifde
CONFIG_TEST


2127 i(
i
 !
objc
 - 1 && 
	`RPC_ON
(
dbp
->
dbv
)) {

2133 i((
ag
 & 
DB_RPC2ND_MASK
) != 0) {

2134 
	`tf
(
msg
, 
MSG_SIZE
,

2136 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2137  (
TCL_ERROR
);

2140 
cbme
 = 
	`T_GSgFromObj
(
objv
[
objc
 - 2], 
NULL
);

2141 
cb
 = 
backs
; cb->
me
 !
NULL
; cb++)

2142 i(
	`rcmp
(
cb
->
me
, 
cbme
) == 0) {

2143 
ag
 |
cb
->flag;

2147 i(
cb
->
me
 =
NULL
) {

2148 
	`tf
(
msg
, 
MSG_SIZE
,

2149 "Assoc: unknowback: %s\n", 
cbme
);

2150 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2151  (
TCL_ERROR
);

2154 
t
 = 
dbp
->
	`assoc
(dbp, 
txn
, 
sdbp
, 
NULL
, 
ag
);

2161 i(
t
 == 0)

2162 
sdbp
->
s_imy
 = 
dbp
;

2163 } i(
i
 !
objc
 - 1) {

2165 i(
i
 !
objc
 - 1) {

2170 
sdb
->
i_cd_
 = 
objv
[
objc
 - 2];

2171 
	`T_InRefCou
(
sdb
->
i_cd_
);

2174 
	`_debug_check
();

2175 
t
 = 
dbp
->
	`assoc
(dbp, 
txn
, 
sdbp
, 
t_cd_
, 
ag
);

2180 
sdb
->
i_cd_
 = 
NULL
;

2181 
t
 = 
dbp
->
	`assoc
(dbp, 
txn
, 
sdbp
, 
NULL
, 
ag
);

2183 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "associate");

2185  (
su
);

2186 
	}
}

2194 
	$t_cd_
(
dbp
, 
pkey
, 
da
, 
skey
)

2195 
DB
 *
dbp
;

2196 cڡ 
DBT
 *
pkey
, *
da
;

2197 
DBT
 *
skey
;

2199 
DBTCL_INFO
 *

;

2200 
DBT
 *
tskey
;

2201 
T_Ip
 *

;

2202 
T_Obj
 *
pobj
, *
dobj
, *
objv
[3], *
robj
, **
skeyli
;

2203 
size_t
 
n
;

2204 

, 
su
, 
t
;

2205 
u_t32_t
 
i
, 
nskeys
;

2206 *
tbuf
, *
dabuf
;

2208 

 = (
DBTCL_INFO
 *)
dbp
->
i_
;

2209 

 = 

->
i_
;

2210 
objv
[0] = 

->
i_cd_
;

2216 
pobj
 = 
	`T_NewByAayObj
(
pkey
->
da
, (key->
size
);

2217 
	`T_InRefCou
(
pobj
);

2218 
dobj
 = 
	`T_NewByAayObj
(
da
->da, ()da->
size
);

2219 
	`T_InRefCou
(
dobj
);

2221 
objv
[1] = 
pobj
;

2222 
objv
[2] = 
dobj
;

2224 
su
 = 
	`T_EvObjv
(

, 3, 
objv
, 0);

2226 
	`T_DeRefCou
(
pobj
);

2227 
	`T_DeRefCou
(
dobj
);

2229 i(
su
 !
TCL_OK
) {

2230 
	`__db_rx
(
dbp
->
dbv
,

2231 "T clback funi faed wh cod%d", 
su
);

2232  (
EINVAL
);

2235 
robj
 = 
	`T_GObjResu
(

);

2236 i(
robj
->
tyP
 =
NULL
 || 
	`rcmp
obj->tyP->
me
, "list") != 0) {

2237 
nskeys
 = 1;

2238 
skeyli
 = &
robj
;

2239 
tskey
 = 
skey
;

2241 i((
su
 = 
	`T_LiObjGEmts
(

,

2242 
robj
, &

, &
skeyli
)!
TCL_OK
) {

2243 
	`__db_rx
(
dbp
->
dbv
,

2245  (
EINVAL
);

2247 
nskeys
 = (
u_t32_t
)

;

2255 i(
nskeys
 == 0) {

2256 
nskeys
 = 1;

2257 
skeyli
 = &
robj
;

2259 i(
nskeys
 == 1)

2260 
tskey
 = 
skey
;

2262 
	`memt
(
skey
, 0, (
DBT
));

2263 i((
t
 = 
	`__os_umloc
(
dbp
->
dbv
,

2264 
nskeys
 * (
DBT
), &
skey
->
da
)) != 0)

2265  (
t
);

2266 
skey
->
size
 = 
nskeys
;

2267 
	`F_SET
(
skey
, 
DB_DBT_MULTIPLE
 | 
DB_DBT_APPMALLOC
);

2268 
tskey
 = (
DBT
 *)
skey
->
da
;

2272 
i
 = 0; i < 
nskeys
; i++, 
tskey
++) {

2273 
tbuf
 = 
	`T_GByAayFromObj
(
skeyli
[
i
], &

);

2274 
n
 = (
size_t
)

;

2282 i((
t
 = 
	`__os_umloc
(
dbp
->
dbv
, 
n
, &
dabuf
)) != 0)

2283  (
t
);

2284 
	`memy
(
dabuf
, 
tbuf
, 
n
);

2286 
	`memt
(
tskey
, 0, (
DBT
));

2287 
tskey
->
da
 = 
dabuf
;

2288 
tskey
->
size
 = 
n
;

2289 
	`F_SET
(
tskey
, 
DB_DBT_APPMALLOC
);

2293 
	}
}

2299 
	$t_DbJo
(

, 
objc
, 
objv
, 
dbp
, 
db
)

2300 
T_Ip
 *

;

2301 
objc
;

2302 
T_Obj
 *
CONST
 
objv
[];

2303 
DB
 *
dbp
;

2304 
DBC
 **
db
;

2306 cڡ *
dbjts
[] = {

2308 
NULL


2310 
	edbjts
 {

2311 
DBJ_NOSORT


2313 
DBC
 **
lip
;

2314 
size_t
 
size
;

2315 
u_t32_t
 
ag
;

2316 
adj
, 
i
, 
j
, 
tdex
, 
su
, 
t
;

2317 *
g
, 
msg
[
MSG_SIZE
];

2319 
su
 = 
TCL_OK
;

2320 
ag
 = 0;

2321 i(
objc
 < 3) {

2322 
	`T_WrgNumArgs
(

, 2, 
objv
, "curs1 curs2 ...");

2323  (
TCL_ERROR
);

2326 
adj
 = 
i
 = 2; i < 
objc
; i++) {

2327 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbjts
, "option",

2328 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

2329 
su
 = 
	`IS_HELP
(
objv
[
i
]);

2330 i(
su
 =
TCL_OK
)

2331  (
su
);

2332 
su
 = 
TCL_OK
;

2333 
	`T_RetResu
(

);

2336 (
dbjts
)
tdex
) {

2337 
DBJ_NOSORT
:

2338 
ag
 |
DB_JOIN_NOSORT
;

2339 
adj
++;

2343 i(
su
 !
TCL_OK
)

2344  (
su
);

2348 
size
 = (
DBC
 ** (
size_t
)((
objc
 - 
adj
) + 1);

2349 
t
 = 
	`__os_mloc
(
dbp
->
dbv
, 
size
, &
lip
);

2350 i(
t
 != 0) {

2351 
	`T_SResu
(

, 
	`db_
(
t
), 
TCL_STATIC
);

2352  (
TCL_ERROR
);

2355 
	`memt
(
lip
, 0, 
size
);

2356 
j
 = 0, 
i
 = 
adj
; i < 
objc
; i++, j++) {

2357 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

2358 
lip
[
j
] = 
	`NAME_TO_DBC
(
g
);

2359 i(
lip
[
j
] =
NULL
) {

2360 
	`tf
(
msg
, 
MSG_SIZE
,

2361 "Jo: Invid curs: %s\n", 
g
);

2362 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2363 
su
 = 
TCL_ERROR
;

2364 
out
;

2367 
lip
[
j
] = 
NULL
;

2368 
	`_debug_check
();

2369 
t
 = 
dbp
->
	`jo
(dbp, 
lip
, 
db
, 
ag
);

2370 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db join");

2372 
out
:

2373 
	`__os_
(
dbp
->
dbv
, 
lip
);

2374  (
su
);

2375 
	}
}

2381 
	$t_DbGjo
(

, 
objc
, 
objv
, 
dbp
)

2382 
T_Ip
 *

;

2383 
objc
;

2384 
T_Obj
 *
CONST
 
objv
[];

2385 
DB
 *
dbp
;

2387 cڡ *
dbgjts
[] = {

2388 #ifde
CONFIG_TEST


2392 
NULL


2394 
	edbgjts
 {

2395 #ifde
CONFIG_TEST


2396 
DBGETJ_NOSORT
,

2398 
DBGETJ_TXN


2400 
DB_TXN
 *
txn
;

2401 
DB
 *
emdbp
;

2402 
DBC
 **
lip
;

2403 
DBC
 *
dbc
;

2404 
DBT
 
key
, 
da
;

2405 
T_Obj
 **
emv
, *
i
;

2406 *
ktmp
;

2407 
size_t
 
size
;

2408 
u_t32_t
 
ag
;

2409 
adj
, 
emc
, 
key
, 
i
, 
j
, 
tdex
, 
su
, 
t
;

2410 *
g
, 
msg
[
MSG_SIZE
];

2412 
su
 = 
TCL_OK
;

2413 
ag
 = 0;

2414 
ktmp
 = 
NULL
;

2415 
key
 = 0;

2416 i(
objc
 < 3) {

2417 
	`T_WrgNumArgs
(

, 2, 
objv
, "{db1 key1} {db2 key2} ...");

2418  (
TCL_ERROR
);

2421 
txn
 = 
NULL
;

2422 
i
 = 2;

2423 
adj
 = 
i
;

2424 
i
 < 
objc
) {

2425 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbgjts
, "option",

2426 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

2427 
su
 = 
	`IS_HELP
(
objv
[
i
]);

2428 i(
su
 =
TCL_OK
)

2429  (
su
);

2430 
su
 = 
TCL_OK
;

2431 
	`T_RetResu
(

);

2434 
i
++;

2435 (
dbgjts
)
tdex
) {

2436 #ifde
CONFIG_TEST


2437 
DBGETJ_NOSORT
:

2438 
ag
 |
DB_JOIN_NOSORT
;

2439 
adj
++;

2442 
DBGETJ_TXN
:

2443 i(
i
 =
objc
) {

2444 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

2445 
su
 = 
TCL_ERROR
;

2448 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2449 
txn
 = 
	`NAME_TO_TXN
(
g
);

2450 
adj
 += 2;

2451 i(
txn
 =
NULL
) {

2452 
	`tf
(
msg
, 
MSG_SIZE
,

2453 "GJo: Invidxn: %s\n", 
g
);

2454 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2455 
su
 = 
TCL_ERROR
;

2460 i(
su
 !
TCL_OK
)

2461  (
su
);

2462 
size
 = (
DBC
 ** (
size_t
)((
objc
 - 
adj
) + 1);

2463 
t
 = 
	`__os_mloc
(
NULL
, 
size
, &
lip
);

2464 i(
t
 != 0) {

2465 
	`T_SResu
(

, 
	`db_
(
t
), 
TCL_STATIC
);

2466  (
TCL_ERROR
);

2469 
	`memt
(
lip
, 0, 
size
);

2470 
j
 = 0, 
i
 = 
adj
; i < 
objc
; i++, j++) {

2474 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

2475 &
emc
, &
emv
);

2476 i(
emc
 != 2) {

2477 
	`T_SResu
(

, "Lists must be {db key}",

2478 
TCL_STATIC
);

2479 
su
 = 
TCL_ERROR
;

2480 
out
;

2486 
emdbp
 = 
	`NAME_TO_DB
(
	`T_GSgFromObj
(
emv
[0], 
NULL
));

2487 i(
emdbp
 =
NULL
) {

2488 
	`tf
(
msg
, 
MSG_SIZE
, "Get_join: Invalid db: %s\n",

2489 
	`T_GSgFromObj
(
emv
[0], 
NULL
));

2490 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2491 
su
 = 
TCL_ERROR
;

2492 
out
;

2494 
t
 = 
emdbp
->
	`curs
mdbp, 
txn
, &
lip
[
j
], 0);

2495 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2496 "db curs")=
TCL_ERROR
)

2497 
out
;

2498 
	`memt
(&
key
, 0, (key));

2499 
	`memt
(&
da
, 0, (data));

2500 
t
 = 
	`_CyObjBys
(

, 
emv
[
emc
-1], &
ktmp
,

2501 &
key
.
size
, &
key
);

2502 i(
t
 != 0) {

2503 
su
 = 
	`_RuSup
(

, 
t
,

2504 
	`DB_RETOK_STD
(
t
), "db join");

2505 
out
;

2507 
key
.
da
 = 
ktmp
;

2508 
t
 = (
lip
[
j
])->
	`g
ip[j], &
key
, &
da
, 
DB_SET
);

2509 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBCGET
(ret),

2510 "db cg")=
TCL_ERROR
)

2511 
out
;

2513 
lip
[
j
] = 
NULL
;

2514 
	`_debug_check
();

2515 
t
 = 
dbp
->
	`jo
(dbp, 
lip
, &
dbc
, 
ag
);

2516 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db join");

2517 i(
su
 =
TCL_ERROR
)

2518 
out
;

2520 
i
 = 
	`T_NewLiObj
(0, 
NULL
);

2521 
t
 =0 && 
su
 =
TCL_OK
) {

2522 
	`memt
(&
key
, 0, (key));

2523 
	`memt
(&
da
, 0, (data));

2524 
key
.
ags
 |
DB_DBT_MALLOC
;

2525 
da
.
ags
 |
DB_DBT_MALLOC
;

2526 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 0);

2530 i(
t
 == 0) {

2531 
su
 = 
	`_SLiEm
(

, 
i
,

2532 
key
.
da
, key.
size
,

2533 
da
.da, da.
size
);

2534 
	`__os_u
(
dbp
->
dbv
, 
key
.
da
);

2535 
	`__os_u
(
dbp
->
dbv
, 
da
.data);

2538 ()
dbc
->
	`o
(dbc);

2539 i(
su
 =
TCL_OK
)

2540 
	`T_SObjResu
(

, 
i
);

2541 
out
:

2542 i(
ktmp
 !
NULL
 && 
key
)

2543 
	`__os_
(
dbp
->
dbv
, 
ktmp
);

2544 
j
) {

2545 i(
lip
[
j
])

2546 ()(
lip
[
j
])->
	`o
(listp[j]);

2547 
j
--;

2549 
	`__os_
(
dbp
->
dbv
, 
lip
);

2550  (
su
);

2551 
	}
}

2557 
	$t_DbGFgs
(

, 
objc
, 
objv
, 
dbp
)

2558 
T_Ip
 *

;

2559 
objc
;

2560 
T_Obj
 *
CONST
 
objv
[];

2561 
DB
 *
dbp
;

2563 
i
, 
t
, 
su
;

2564 
u_t32_t
 
ags
;

2565 
buf
[512];

2566 
T_Obj
 *
s
;

2569 
u_t32_t
 
ag
;

2570 *
g
;

2571 } 
db_ags
[] = {

2572 { 
DB_CHKSUM
, "-chksum" },

2573 { 
DB_DUP
, "-dup" },

2574 { 
DB_DUPSORT
, "-dupsort" },

2575 { 
DB_ENCRYPT
, "-encrypt" },

2576 { 
DB_INORDER
, "-inorder" },

2577 { 
DB_TXN_NOT_DURABLE
, "-notdurable" },

2578 { 
DB_RECNUM
, "-recnum" },

2579 { 
DB_RENUMBER
, "-renumber" },

2580 { 
DB_REVSPLITOFF
, "-revsplitoff" },

2581 { 
DB_SNAPSHOT
, "-snapshot" },

2582 { 0, 
NULL
 }

2585 i(
objc
 != 2) {

2586 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

2587  (
TCL_ERROR
);

2590 
t
 = 
dbp
->
	`g_ags
(dbp, &
ags
);

2591 i((
su
 = 
	`_RuSup
(

2592 

, 
t
, 
	`DB_RETOK_STD
ԑ), "db g_ags")=
TCL_OK
) {

2593 
buf
[0] = '\0';

2595 
i
 = 0; 
db_ags
[i].
ag
 != 0; i++)

2596 i(
	`LF_ISSET
(
db_ags
[
i
].
ag
)) {

2597 i(
	`
(
buf
) > 0)

2598 ()
	`t
(
buf
, " ", (buf));

2599 ()
	`t
(

2600 
buf
, 
db_ags
[
i
].
g
, (buf));

2603 
s
 = 
	`NewSgObj
(
buf
, 
	`
(buf));

2604 
	`T_SObjResu
(

, 
s
);

2607  (
su
);

2608 
	}
}

2614 
	$t_DbGOnFgs
(

, 
objc
, 
objv
, 
dbp
)

2615 
T_Ip
 *

;

2616 
objc
;

2617 
T_Obj
 *
CONST
 
objv
[];

2618 
DB
 *
dbp
;

2620 
i
, 
t
, 
su
;

2621 
u_t32_t
 
ags
;

2622 
buf
[512];

2623 
T_Obj
 *
s
;

2626 
u_t32_t
 
ag
;

2627 *
g
;

2628 } 
ݒ_ags
[] = {

2629 { 
DB_AUTO_COMMIT
, "-auto_commit" },

2630 { 
DB_CREATE
, "-create" },

2631 { 
DB_EXCL
, "-excl" },

2632 { 
DB_NOMMAP
, "-nommap" },

2633 { 
DB_RDONLY
, "-rdonly" },

2634 { 
DB_READ_COMMITTED
, "-read_committed" },

2635 { 
DB_READ_UNCOMMITTED
, "-read_uncommitted" },

2636 { 
DB_THREAD
, "-thread" },

2637 { 
DB_TRUNCATE
, "-truncate" },

2638 { 0, 
NULL
 }

2641 i(
objc
 != 2) {

2642 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

2643  (
TCL_ERROR
);

2646 
t
 = 
dbp
->
	`g_ݒ_ags
(dbp, &
ags
);

2647 i((
su
 = 
	`_RuSup
(

2648 

, 
t
, 
	`DB_RETOK_STD
ԑ), "db g_ݒ_ags")=
TCL_OK
) {

2649 
buf
[0] = '\0';

2651 
i
 = 0; 
ݒ_ags
[i].
ag
 != 0; i++)

2652 i(
	`LF_ISSET
(
ݒ_ags
[
i
].
ag
)) {

2653 i(
	`
(
buf
) > 0)

2654 ()
	`t
(
buf
, " ", (buf));

2655 ()
	`t
(

2656 
buf
, 
ݒ_ags
[
i
].
g
, (buf));

2659 
s
 = 
	`NewSgObj
(
buf
, 
	`
(buf));

2660 
	`T_SObjResu
(

, 
s
);

2663  (
su
);

2664 
	}
}

2670 
	$t_DbCou
(

, 
objc
, 
objv
, 
dbp
)

2671 
T_Ip
 *

;

2672 
objc
;

2673 
T_Obj
 *
CONST
 
objv
[];

2674 
DB
 *
dbp
;

2676 
T_Obj
 *
s
;

2677 
DBC
 *
dbc
;

2678 
DBT
 
key
, 
da
;

2679 *
ktmp
;

2680 
db_o_t
 
cou
, 
o
;

2681 
key
, 
su
, 
t
;

2683 
s
 = 
NULL
;

2684 
cou
 = 0;

2685 
key
 = 
t
 = 0;

2686 
ktmp
 = 
NULL
;

2687 
su
 = 
TCL_OK
;

2689 i(
objc
 != 3) {

2690 
	`T_WrgNumArgs
(

, 2, 
objv
, "key");

2691  (
TCL_ERROR
);

2699 
	`memt
(&
key
, 0, (key));

2700 
	`memt
(&
da
, 0, (data));

2706 i(
dbp
->
ty
 =
DB_RECNO
 || dbp->ty =
DB_QUEUE
) {

2707 
su
 = 
	`_GUI32
(

, 
objv
[2], &
o
);

2708 i(
su
 =
TCL_OK
) {

2709 
key
.
da
 = &
o
;

2710 
key
.
size
 = (
db_o_t
);

2712  (
su
);

2714 
t
 = 
	`_CyObjBys
(

, 
objv
[2], &
ktmp
,

2715 &
key
.
size
, &
key
);

2716 i(
t
 != 0) {

2717 
su
 = 
	`_RuSup
(

, 
t
,

2718 
	`DB_RETOK_STD
(
t
), "db count");

2719  (
su
);

2721 
key
.
da
 = 
ktmp
;

2723 
	`_debug_check
();

2724 
t
 = 
dbp
->
	`curs
(dbp, 
NULL
, &
dbc
, 0);

2725 i(
t
 != 0) {

2726 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2728 
out
;

2733 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 
DB_SET
);

2734 i(
t
 =
DB_KEYEMPTY
 || =
DB_NOTFOUND
)

2735 
cou
 = 0;

2737 
t
 = 
dbc
->
	`cou
(dbc, &
cou
, 0);

2738 i(
t
 != 0) {

2739 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2741 
out
;

2744 
s
 = 
	`T_NewWideIObj
((
T_WideI
)
cou
);

2745 
	`T_SObjResu
(

, 
s
);

2747 
out
: i(
ktmp
 !
NULL
 && 
key
)

2748 
	`__os_
(
dbp
->
dbv
, 
ktmp
);

2749 ()
dbc
->
	`o
(dbc);

2750  (
su
);

2751 
	}
}

2753 #ifde
CONFIG_TEST


2758 
	$t_DbKeyRge
(

, 
objc
, 
objv
, 
dbp
)

2759 
T_Ip
 *

;

2760 
objc
;

2761 
T_Obj
 *
CONST
 
objv
[];

2762 
DB
 *
dbp
;

2764 cڡ *
dbkeyrts
[] = {

2766 
NULL


2768 
	edbkeyrts
 {

2769 
DBKEYR_TXN


2771 
DB_TXN
 *
txn
;

2772 
DB_KEY_RANGE
 
nge
;

2773 
DBT
 
key
;

2774 
DBTYPE
 
ty
;

2775 
T_Obj
 *
myobjv
[3], *
i
;

2776 *
ktmp
;

2777 
db_o_t
 
o
;

2778 
u_t32_t
 
ag
;

2779 
key
, 
i
, 
myobjc
, 
tdex
, 
su
, 
t
;

2780 *
g
, 
msg
[
MSG_SIZE
];

2782 
ktmp
 = 
NULL
;

2783 
ag
 = 0;

2784 
key
 = 0;

2785 
su
 = 
TCL_OK
;

2786 i(
objc
 < 3) {

2787 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id? key");

2788  (
TCL_ERROR
);

2791 
txn
 = 
NULL
;

2792 
i
 = 2; i < 
objc
;) {

2793 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbkeyrts
, "option",

2794 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

2795 
su
 = 
	`IS_HELP
(
objv
[
i
]);

2796 i(
su
 =
TCL_OK
)

2797  (
su
);

2798 
su
 = 
TCL_OK
;

2799 
	`T_RetResu
(

);

2802 
i
++;

2803 (
dbkeyrts
)
tdex
) {

2804 
DBKEYR_TXN
:

2805 i(
i
 =
objc
) {

2806 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

2807 
su
 = 
TCL_ERROR
;

2810 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2811 
txn
 = 
	`NAME_TO_TXN
(
g
);

2812 i(
txn
 =
NULL
) {

2813 
	`tf
(
msg
, 
MSG_SIZE
,

2814 "KeyRge: Invidxn: %s\n", 
g
);

2815 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2816 
su
 = 
TCL_ERROR
;

2821 i(
su
 !
TCL_OK
)

2822  (
su
);

2823 ()
dbp
->
	`g_ty
(dbp, &
ty
);

2824 
t
 = 0;

2828 i(
i
 !(
objc
 - 1)) {

2829 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? key");

2830 
su
 = 
TCL_ERROR
;

2831 
out
;

2833 
	`memt
(&
key
, 0, (key));

2834 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) {

2835 
su
 = 
	`_GUI32
(

, 
objv
[
i
], &
o
);

2836 i(
su
 =
TCL_OK
) {

2837 
key
.
da
 = &
o
;

2838 
key
.
size
 = (
db_o_t
);

2840  (
su
);

2842 
t
 = 
	`_CyObjBys
(

, 
objv
[
i
++], &
ktmp
,

2843 &
key
.
size
, &
key
);

2844 i(
t
 != 0) {

2845 
su
 = 
	`_RuSup
(

, 
t
,

2846 
	`DB_RETOK_STD
(
t
), "db keyrange");

2847  (
su
);

2849 
key
.
da
 = 
ktmp
;

2851 
	`_debug_check
();

2852 
t
 = 
dbp
->
	`key_nge
(dbp, 
txn
, &
key
, &
nge
, 
ag
);

2853 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db keyrange");

2854 i(
su
 =
TCL_ERROR
)

2855 
out
;

2860 
myobjc
 = 3;

2861 
myobjv
[0] = 
	`T_NewDoubObj
(
nge
.
ss
);

2862 
myobjv
[1] = 
	`T_NewDoubObj
(
nge
.
equ
);

2863 
myobjv
[2] = 
	`T_NewDoubObj
(
nge
.
g
);

2864 
i
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

2865 i(
su
 =
TCL_OK
)

2866 
	`T_SObjResu
(

, 
i
);

2868 
out
: i(
ktmp
 !
NULL
 && 
key
)

2869 
	`__os_
(
dbp
->
dbv
, 
ktmp
);

2870  (
su
);

2871 
	}
}

2878 
	$t_DbTrun
(

, 
objc
, 
objv
, 
dbp
)

2879 
T_Ip
 *

;

2880 
objc
;

2881 
T_Obj
 *
CONST
 
objv
[];

2882 
DB
 *
dbp
;

2884 cڡ *
dbcurts
[] = {

2886 
NULL


2888 
	edbcurts
 {

2889 
DBTRUNC_TXN


2891 
DB_TXN
 *
txn
;

2892 
T_Obj
 *
s
;

2893 
u_t32_t
 
cou
;

2894 
i
, 
tdex
, 
su
, 
t
;

2895 *
g
, 
msg
[
MSG_SIZE
];

2897 
txn
 = 
NULL
;

2898 
su
 = 
TCL_OK
;

2900 
i
 = 2;

2901 
i
 < 
objc
) {

2902 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbcurts
, "option",

2903 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

2904 
su
 = 
	`IS_HELP
(
objv
[
i
]);

2905 
out
;

2907 
i
++;

2908 (
dbcurts
)
tdex
) {

2909 
DBTRUNC_TXN
:

2910 i(
i
 =
objc
) {

2911 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

2912 
su
 = 
TCL_ERROR
;

2915 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2916 
txn
 = 
	`NAME_TO_TXN
(
g
);

2917 i(
txn
 =
NULL
) {

2918 
	`tf
(
msg
, 
MSG_SIZE
,

2919 "Trun: Invidxn: %s\n", 
g
);

2920 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2921 
su
 = 
TCL_ERROR
;

2925 i(
su
 !
TCL_OK
)

2928 i(
su
 !
TCL_OK
)

2929 
out
;

2931 
	`_debug_check
();

2932 
t
 = 
dbp
->
	`un
(dbp, 
txn
, &
cou
, 0);

2933 i(
t
 != 0)

2934 
su
 = 
	`_ESup
(

, 
t
, "dbruncate");

2937 
s
 = 
	`T_NewWideIObj
((
T_WideI
)
cou
);

2938 
	`T_SObjResu
(

, 
s
);

2940 
out
:

2941  (
su
);

2942 
	}
}

2944 #ifde
CONFIG_TEST


2949 
	$t_DbCom
(

, 
objc
, 
objv
, 
dbp
)

2950 
T_Ip
 *

;

2951 
objc
;

2952 
T_Obj
 *
CONST
 
objv
[];

2953 
DB
 *
dbp
;

2955 cڡ *
dbcurts
[] = {

2964 
NULL


2966 
	edbcurts
 {

2967 
DBREORG_FILLFACTOR
,

2968 
DBREORG_FREESPACE
,

2969 
DBREORG_FREEONLY
,

2970 
DBREORG_PAGES
,

2971 
DBREORG_START
,

2972 
DBREORG_STOP
,

2973 
DBREORG_TIMEOUT
,

2974 
DBREORG_TXN


2976 
DBTCL_INFO
 *

;

2977 
DBT
 *
key
, 
d
, 
t
, 

;

2978 
DBTYPE
 
ty
;

2979 
DB_TXN
 *
txn
;

2980 
T_Obj
 *
myobj
, *
i
;

2981 
db_o_t
 
o
, 
eo
;

2982 
u_t32_t
 
g
, 
fl
, 
ags
, 
ges
, 
timeout
;

2983 *
rg
, 
msg
[
MSG_SIZE
];

2984 
key
, 
i
, 
tdex
, 
su
, 
t
;

2985 *
kp
;

2987 
ags
 = 0;

2988 
su
 = 
TCL_OK
;

2989 
txn
 = 
NULL
;

2990 ()
dbp
->
	`g_ty
(dbp, &
ty
);

2991 
	`memt
(&
t
, 0, (start));

2992 
	`memt
(&

, 0, (stop));

2993 
	`memt
(&
d
, 0, (end));

2994 

 = (
DBTCL_INFO
 *)
dbp
->
i_
;

2995 
fl
 = 
ges
 = 
timeout
 = 0;

2997 
i
 = 2;

2998 
i
 < 
objc
) {

2999 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbcurts
, "option",

3000 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

3001 
su
 = 
	`IS_HELP
(
objv
[
i
]);

3002 
out
;

3004 
i
++;

3005 (
dbcurts
)
tdex
) {

3006 
DBREORG_FILLFACTOR
:

3007 i(
i
 =
objc
) {

3008 
	`T_WrgNumArgs
(

,

3009 2, 
objv
, "?-fillfactorumber?");

3010 
su
 = 
TCL_ERROR
;

3013 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
g
);

3014 i(
su
 !
TCL_OK
)

3015 
out
;

3016 
i
++;

3017 
fl
 = 
g
;

3019 
DBREORG_FREESPACE
:

3020 
	`LF_SET
(
DB_FREE_SPACE
);

3023 
DBREORG_FREEONLY
:

3024 
	`LF_SET
(
DB_FREELIST_ONLY
);

3027 
DBREORG_PAGES
:

3028 i(
i
 =
objc
) {

3029 
	`T_WrgNumArgs
(

,

3030 2, 
objv
, "?-pagesumber?");

3031 
su
 = 
TCL_ERROR
;

3034 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
g
);

3035 i(
su
 !
TCL_OK
)

3036 
out
;

3037 
i
++;

3038 
ges
 = 
g
;

3040 
DBREORG_TIMEOUT
:

3041 i(
i
 =
objc
) {

3042 
	`T_WrgNumArgs
(

,

3043 2, 
objv
, "?-timeoutumber?");

3044 
su
 = 
TCL_ERROR
;

3047 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
g
);

3048 i(
su
 !
TCL_OK
)

3049 
out
;

3050 
i
++;

3051 
timeout
 = 
g
;

3054 
DBREORG_START
:

3055 
DBREORG_STOP
:

3056 i(
i
 =
objc
) {

3057 
	`T_WrgNumArgs
(

, 1, 
objv
,

3059 
su
 = 
TCL_ERROR
;

3060 
out
;

3062 i((
dbcurts
)
tdex
 =
DBREORG_START
) {

3063 
key
 = &
t
;

3064 
key
->
da
 = &
o
;

3066 
key
 = &

;

3067 
key
->
da
 = &
eo
;

3069 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) {

3070 
su
 = 
	`_GUI32
(

3071 

, 
objv
[
i
], 
key
->
da
);

3072 i(
su
 =
TCL_OK
) {

3073 
key
->
size
 = (
db_o_t
);

3075 
out
;

3077 
t
 = 
	`_CyObjBys
(

, 
objv
[
i
],

3078 &
key
->
da
, &key->
size
, &
key
);

3079 i(
t
 != 0)

3080 
r
;

3081 i(
key
 == 0) {

3082 i((
t
 = 
	`__os_mloc
(
NULL
,

3083 
key
->
size
, &
kp
)) != 0)

3084 
r
;

3086 
	`memy
(
kp
, 
key
->
da
, key->
size
);

3087 
key
->
da
 = 
kp
;

3088 
key
->
un
 = key->
size
;

3091 
i
++;

3093 
DBREORG_TXN
:

3094 i(
i
 =
objc
) {

3095 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

3096 
su
 = 
TCL_ERROR
;

3099 
rg
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

3100 
txn
 = 
	`NAME_TO_TXN
(
rg
);

3101 i(
txn
 =
NULL
) {

3102 
	`tf
(
msg
, 
MSG_SIZE
,

3103 "Com: Invidxn: %s\n", 
rg
);

3104 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

3105 
su
 = 
TCL_ERROR
;

3108 i(
su
 !
TCL_OK
)

3111 i(
su
 !
TCL_OK
)

3112 
out
;

3114 i(

->
i_cda
 =
NULL
)

3115 i((
t
 = 
	`__os_oc
(
dbp
->
dbv
,

3116 1, (
DB_COMPACT
), &

->
i_cda
)) != 0) {

3117 
	`T_SResu
(

,

3118 
	`db_
(
t
), 
TCL_STATIC
);

3119 
out
;

3122 

->
i_cda
->
com_f͔
 = 
fl
;

3123 

->
i_cda
->
com_timeout
 = 
timeout
;

3124 

->
i_cda
->
com_ges
 = 
ges
;

3126 
	`_debug_check
();

3127 
t
 = 
dbp
->
	`com
(dbp, 
txn
, &
t
, &

, 

->
i_cda
, 
ags
, &
d
);

3128 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBCGET
(ret), "dbp compact");

3129 i(
su
 =
TCL_ERROR
)

3130 
out
;

3132 
i
 = 
	`T_NewLiObj
(0, 
NULL
);

3133 i(
t
 != 0)

3134 
out
;

3135 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) {

3136 i(
d
.
size
 == 0)

3137 
o
 = 0;

3139 
o
 = *((
db_o_t
 *)
d
.
da
);

3140 
myobj
 = 
	`T_NewWideIObj
((
T_WideI
)
o
);

3142 
myobj
 = 
	`T_NewByAayObj
(
d
.
da
, (nd.
size
);

3143 
su
 = 
	`T_LiObjAdEmt
(

, 
i
, 
myobj
);

3144 i(
su
 =
TCL_OK
)

3145 
	`T_SObjResu
(

, 
i
);

3148 
r
: 
su
 = 
	`_RuSup
(

,

3149 
t
, 
	`DB_RETOK_DBCGET
(ret), "dbc compact");

3151 
out
:

3152 i(
t
.
da
 !
NULL
 && s.d!&
o
)

3153 
	`__os_
(
NULL
, 
t
.
da
);

3154 i(

.
da
 !
NULL
 && st.d!&
eo
)

3155 
	`__os_
(
NULL
, 

.
da
);

3156 i(
d
.
da
 !
NULL
)

3157 
	`__os_
(
NULL
, 
d
.
da
);

3159  (
su
);

3160 
	}
}

3166 
	$t_DbComSt
(

, 
objc
, 
objv
, 
dbp
)

3167 
T_Ip
 *

;

3168 
objc
;

3169 
T_Obj
 *
CONST
 
objv
[];

3170 
DB
 *
dbp
;

3172 
DBTCL_INFO
 *

;

3174 
	`COMPQUIET
(
objc
, 0);

3175 
	`COMPQUIET
(
objv
, 
NULL
);

3177 

 = (
DBTCL_INFO
 *)
dbp
->
i_
;

3179  (
	`t_ComSt
(

, 

));

3180 
	}
}

3186 
	$t_ComSt
(

, 

)

3187 
T_Ip
 *

;

3188 
DBTCL_INFO
 *

;

3190 
DB_COMPACT
 *

;

3191 
T_Obj
 *
s
;

3192 
su
;

3193 
msg
[
MSG_SIZE
];

3195 
su
 = 
TCL_OK
;

3196 

 = 
NULL
;

3198 
	`_debug_check
();

3199 i((

 = 

->
i_cda
=
NULL
) {

3200 
	`tf
(
msg
, 
MSG_SIZE
,

3202 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

3203 
su
 = 
TCL_ERROR
;

3204 
r
;

3207 
s
 = 
	`T_NewObj
();

3209 
	`MAKE_STAT_LIST
("Paged", 

->
com_ges_
);

3210 
	`MAKE_STAT_LIST
("Pageund", 

->
com_ges_und
);

3211 
	`MAKE_STAT_LIST
("Pageexamed", 

->
com_ges_exame
);

3212 
	`MAKE_STAT_LIST
("Levmoved", 

->
com_vs
);

3213 
	`MAKE_STAT_LIST
("Ddlockcoued", 

->
com_ddlock
);

3215 
	`T_SObjResu
(

, 
s
);

3216 
r
:

3217  (
su
);

3218 
	}
}

	@../tcl/tcl_db_pkg.c

9 
	~"db_cfig.h
"

11 #ifde
CONFIG_TEST


12 
	#DB_DBM_HSEARCH
 1

	)

15 
	~"db_t.h
"

16 #ifde
HAVE_SYSTEM_INCLUDE_FILES


17 
	~<t.h
>

19 
	~"dbc/db_ge.h
"

20 
	~"dbc/hash.h
"

21 
	~"dbc/t_db.h
"

24 
DBTCL_GLOBAL
 
	g__dbt_glob
;

29 
bkdb_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, ,

30 
T_Obj
 * 
CONST
*));

31 
bdb_EnvOn
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*,

32 
DBTCL_INFO
 *, 
DB_ENV
 **));

33 
bdb_DbOn
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*,

34 
DBTCL_INFO
 *, 
DB
 **));

35 
bdb_DbRemove
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

36 
bdb_DbRame
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

37 
bdb_Vsi
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

39 #ifde
HAVE_64BIT_TYPES


40 
bdb_SeqOn
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*,

41 
DBTCL_INFO
 *, 
DB_SEQUENCE
 **));

44 #ifde
CONFIG_TEST


45 
bdb_DbUpgde
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

46 
bdb_DbVify
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

47 
bdb_GCfig
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

48 
bdb_Hds
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

49 
bdb_MsgTy
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

51 
t_bt_com
 
__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

52 
t_com_back
 
__P
((
DB
 *, cڡ 
DBT
 *, const DBT *,

53 
T_Obj
 *, *));

54 
t_db_
 
__P
((*));

55 * 
t_db_mloc
 
__P
((
size_t
));

56 * 
t_db_loc
 
__P
((*, 
size_t
));

57 
t_dup_com
 
__P
((
DB
 *, cڡ 
DBT
 *, const DBT *));

58 
u_t32_t
 
t_h_hash
 
__P
((
DB
 *, const *, u_int32_t));

70 
	$Db_t_In
(

)

71 
T_Ip
 *

;

74 
code
;

75 
pkg
[12];

77 
	`tf
(
pkg
, kg), "%d.%d", 
DB_VERSION_MAJOR
, 
DB_VERSION_MINOR
);

78 
code
 = 
	`T_PkgProvide
(

, "Db_t", 
pkg
);

79 i(
code
 !
TCL_OK
)

80  (
code
);

82 ()
	`T_CeObjCommd
(

,

83 "bkdb", (
T_ObjCmdProc
 *)
bkdb_Cmd
, (
ClDa
)0, 
NULL
);

87 ()
	`T_LkV
(

88 

, "__debug_", (*)&
__debug_
, 
TCL_LINK_INT
);

89 ()
	`T_LkV
(

90 

, "__debug_t", (*)&
__debug_t
, 
TCL_LINK_INT
);

91 ()
	`T_LkV
(

92 

, "__debug_", (*)&
__debug_
, 
TCL_LINK_INT
);

93 ()
	`T_LkV
(

94 

, "__debug_", (*)&
__debug_
,

95 
TCL_LINK_INT
);

96 
	`LIST_INIT
(&
__db_fohd
);

97  (
TCL_OK
);

98 
	}
}

114 
	$bkdb_Cmd
(
nud
, 

, 
objc
, 
objv
)

115 
ClDa
 
nud
;

116 
T_Ip
 *

;

117 
objc
;

118 
T_Obj
 *
CONST
 
objv
[];

120 cڡ *
bkdbcmds
[] = {

121 #ifde
CONFIG_TEST


133 #ifde
HAVE_64BIT_TYPES


137 #ifde
CONFIG_TEST


147 
NULL


152 
	ebkdbcmds
 {

153 #ifde
CONFIG_TEST


154 
BDB_DBVERIFY
,

155 
BDB_GETCONFIG
,

156 
BDB_HANDLES
,

157 
BDB_MSGTYPE
,

158 
BDB_UPGRADE
,

160 
BDB_DBREMOVE
,

161 
BDB_DBRENAME
,

162 
BDB_ENV
,

163 
BDB_ENVREMOVE
,

164 
BDB_OPEN
,

165 #ifde
HAVE_64BIT_TYPES


166 
BDB_SEQUENCE
,

168 
BDB_VERSION
,

169 #ifde
CONFIG_TEST


170 
BDB_HCREATEX
, 
BDB_HSEARCHX
, 
BDB_HDESTROYX
,

171 
BDB_DBMINITX
, 
BDB_FETCHX
, 
BDB_STOREX
,

172 
BDB_DELETEX
, 
BDB_FIRSTKEYX
, 
BDB_NEXTKEYX
,

173 
BDB_NDBMOPENX
, 
BDB_DBMCLOSEX
,

175 
BDB_RANDX
, 
BDB_RAND_INTX
, 
BDB_SRANDX
,

176 
BDB_DBGCKX


178 
v_id
 = 0;

179 
db_id
 = 0;

180 #ifde
HAVE_64BIT_TYPES


181 
q_id
 = 0;

184 
DB
 *
dbp
;

185 #ifde
HAVE_64BIT_TYPES


186 
DB_SEQUENCE
 *
q
;

188 #ifde
CONFIG_TEST


189 
DBM
 *
ndbmp
;

190 
ndbm_id
 = 0;

192 
DBTCL_INFO
 *

;

193 
DB_ENV
 *
vp
;

194 
T_Obj
 *
s
;

195 
cmddex
, 
su
;

196 
wme
[
MSG_SIZE
];

198 
	`COMPQUIET
(
nud
, 
NULL
);

200 
	`T_RetResu
(

);

201 
	`memt
(
wme
, 0, 
MSG_SIZE
);

202 
su
 = 
TCL_OK
;

203 i(
objc
 <= 1) {

204 
	`T_WrgNumArgs
(

, 1, 
objv
, "command cmdargs");

205  (
TCL_ERROR
);

212 i(
	`T_GIndexFromObj
(

,

213 
objv
[1], 
bkdbcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

214  (
	`IS_HELP
(
objv
[1]));

215 
s
 = 
NULL
;

216 (
bkdbcmds
)
cmddex
) {

217 #ifde
CONFIG_TEST


218 
BDB_DBVERIFY
:

219 
su
 = 
	`bdb_DbVify
(

, 
objc
, 
objv
);

221 
BDB_GETCONFIG
:

222 
su
 = 
	`bdb_GCfig
(

, 
objc
, 
objv
);

224 
BDB_HANDLES
:

225 
su
 = 
	`bdb_Hds
(

, 
objc
, 
objv
);

227 
BDB_MSGTYPE
:

228 
su
 = 
	`bdb_MsgTy
(

, 
objc
, 
objv
);

230 
BDB_UPGRADE
:

231 
su
 = 
	`bdb_DbUpgde
(

, 
objc
, 
objv
);

234 
BDB_VERSION
:

235 
	`_debug_check
();

236 
su
 = 
	`bdb_Vsi
(

, 
objc
, 
objv
);

238 
BDB_ENV
:

239 
	`tf
(
wme
, ewme), "v%d", 
v_id
);

240 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_ENV
);

241 i(

 !
NULL
) {

242 
su
 = 
	`bdb_EnvOn
(

, 
objc
, 
objv
, 

, &
vp
);

243 i(
su
 =
TCL_OK
 && 
vp
 !
NULL
) {

244 
v_id
++;

245 ()
	`T_CeObjCommd
(

, 
wme
,

246 (
T_ObjCmdProc
 *)
v_Cmd
,

247 (
ClDa
)
vp
, 
NULL
);

249 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

250 
	`_SInfoDa
(

, 
vp
);

252 
	`_DeInfo
(

);

254 
	`T_SResu
(

, "Couldot set up info",

255 
TCL_STATIC
);

256 
su
 = 
TCL_ERROR
;

259 
BDB_DBREMOVE
:

260 
su
 = 
	`bdb_DbRemove
(

, 
objc
, 
objv
);

262 
BDB_DBRENAME
:

263 
su
 = 
	`bdb_DbRame
(

, 
objc
, 
objv
);

265 
BDB_ENVREMOVE
:

266 
su
 = 
	`t_EnvRemove
(

, 
objc
, 
objv
, 
NULL
, NULL);

268 
BDB_OPEN
:

269 
	`tf
(
wme
, ewme), "db%d", 
db_id
);

270 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_DB
);

271 i(

 !
NULL
) {

272 
su
 = 
	`bdb_DbOn
(

, 
objc
, 
objv
, 

, &
dbp
);

273 i(
su
 =
TCL_OK
 && 
dbp
 !
NULL
) {

274 
db_id
++;

275 ()
	`T_CeObjCommd
(

, 
wme
,

276 (
T_ObjCmdProc
 *)
db_Cmd
,

277 (
ClDa
)
dbp
, 
NULL
);

279 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

280 
	`_SInfoDa
(

, 
dbp
);

282 
	`_DeInfo
(

);

284 
	`T_SResu
(

, "Couldot set up info",

285 
TCL_STATIC
);

286 
su
 = 
TCL_ERROR
;

289 #ifde
HAVE_64BIT_TYPES


290 
BDB_SEQUENCE
:

291 
	`tf
(
wme
, ewme), "q%d", 
q_id
);

292 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_SEQ
);

293 i(

 !
NULL
) {

294 
su
 = 
	`bdb_SeqOn
(

, 
objc
, 
objv
, 

, &
q
);

295 i(
su
 =
TCL_OK
 && 
q
 !
NULL
) {

296 
q_id
++;

297 ()
	`T_CeObjCommd
(

, 
wme
,

298 (
T_ObjCmdProc
 *)
q_Cmd
,

299 (
ClDa
)
q
, 
NULL
);

301 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

302 
	`_SInfoDa
(

, 
q
);

304 
	`_DeInfo
(

);

306 
	`T_SResu
(

, "Couldot set up info",

307 
TCL_STATIC
);

308 
su
 = 
TCL_ERROR
;

312 #ifde
CONFIG_TEST


313 
BDB_HCREATEX
:

314 
BDB_HSEARCHX
:

315 
BDB_HDESTROYX
:

316 
su
 = 
	`bdb_HCommd
(

, 
objc
, 
objv
);

318 
BDB_DBMINITX
:

319 
BDB_DBMCLOSEX
:

320 
BDB_FETCHX
:

321 
BDB_STOREX
:

322 
BDB_DELETEX
:

323 
BDB_FIRSTKEYX
:

324 
BDB_NEXTKEYX
:

325 
su
 = 
	`bdb_DbmCommd
(

, 
objc
, 
objv
, 
DBTCL_DBM
, 
NULL
);

327 
BDB_NDBMOPENX
:

328 
	`tf
(
wme
, ewme), "ndbm%d", 
ndbm_id
);

329 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_NDBM
);

330 i(

 !
NULL
) {

331 
su
 = 
	`bdb_NdbmOn
(

, 
objc
, 
objv
, &
ndbmp
);

332 i(
su
 =
TCL_OK
) {

333 
ndbm_id
++;

334 ()
	`T_CeObjCommd
(

, 
wme
,

335 (
T_ObjCmdProc
 *)
ndbm_Cmd
,

336 (
ClDa
)
ndbmp
, 
NULL
);

338 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

339 
	`_SInfoDa
(

, 
ndbmp
);

341 
	`_DeInfo
(

);

343 
	`T_SResu
(

, "Couldot set up info",

344 
TCL_STATIC
);

345 
su
 = 
TCL_ERROR
;

349 
BDB_RANDX
:

350 
BDB_RAND_INTX
:

351 
BDB_SRANDX
:

352 
su
 = 
	`bdb_RdCommd
(

, 
objc
, 
objv
);

354 
BDB_DBGCKX
:

355 
	`_debug_check
();

356 
s
 = 
	`T_NewIObj
(0);

363 i(
su
 =
TCL_OK
 && 
s
 !
NULL
)

364 
	`T_SObjResu
(

, 
s
);

365  (
su
);

366 
	}
}

381 
	$bdb_EnvOn
(

, 
objc
, 
objv
, 

, 
v
)

382 
T_Ip
 *

;

383 
objc
;

384 
T_Obj
 *
CONST
 
objv
[];

385 
DBTCL_INFO
 *

;

386 
DB_ENV
 **
v
;

388 cڡ *
vݒ
[] = {

389 #ifde
CONFIG_TEST


456 
NULL


463 
	evݒ
 {

464 #ifde
CONFIG_TEST


465 
ENV_ALLOC
,

466 
ENV_AUTO_COMMIT
,

467 
ENV_CDB
,

468 
ENV_CDB_ALLDB
,

469 
ENV_CLIENT_TO
,

470 
ENV_EVENT
,

471 
ENV_LOCK
,

472 
ENV_CONFLICT
,

473 
ENV_DETECT
,

474 
ENV_LOCK_MAX_LOCKS
,

475 
ENV_LOCK_MAX_LOCKERS
,

476 
ENV_LOCK_MAX_OBJECTS
,

477 
ENV_LOCK_TIMEOUT
,

478 
ENV_LOG
,

479 
ENV_LOG_FILEMODE
,

480 
ENV_LOG_BUFFER
,

481 
ENV_LOG_INMEMORY
,

482 
ENV_LOG_MAX
,

483 
ENV_LOG_REGIONMAX
,

484 
ENV_LOG_REMOVE
,

485 
ENV_MPOOL_MAX_OPENFD
,

486 
ENV_MPOOL_MAX_WRITE
,

487 
ENV_MPOOL_MMAP_SIZE
,

488 
ENV_MPOOL_NOMMAP
,

489 
ENV_MULTIVERSION
,

490 
ENV_OVERWRITE
,

491 
ENV_REGION_INIT
,

492 
ENV_REP
,

493 
ENV_REP_CLIENT
,

494 
ENV_REP_LEASE
,

495 
ENV_REP_MASTER
,

496 
ENV_REP_TRANSPORT
,

497 
ENV_SERVER
,

498 
ENV_SERVER_TO
,

499 
ENV_SET_INTERMEDIATE_DIR
,

500 
ENV_SNAPSHOT
,

501 
ENV_THREAD
,

502 
ENV_TIME_NOTGRANTED
,

503 
ENV_TXN_NOWAIT
,

504 
ENV_TXN_TIMEOUT
,

505 
ENV_TXN_TIME
,

506 
ENV_VERBOSE
,

507 
ENV_WRNOSYNC
,

509 
ENV_CACHESIZE
,

510 
ENV_CACHE_MAX
,

511 
ENV_CREATE
,

512 
ENV_DATA_DIR
,

513 
ENV_ENCRYPT_AES
,

514 
ENV_ENCRYPT_ANY
,

515 
ENV_ERRFILE
,

516 
ENV_ERRPFX
,

517 
ENV_HOME
,

518 
ENV_LOG_DIR
,

519 
ENV_MODE
,

520 
ENV_PRIVATE
,

521 
ENV_RECOVER
,

522 
ENV_RECOVER_FATAL
,

523 
ENV_REGISTER
,

524 
ENV_SHM_KEY
,

525 
ENV_SYSTEM_MEM
,

526 
ENV_TMP_DIR
,

527 
ENV_TXN
,

528 
ENV_TXN_MAX
,

529 
ENV_USE_ENVIRON
,

530 
ENV_USE_ENVIRON_ROOT


532 
T_Obj
 **
myobjv
;

533 
u_t32_t
 
_ags
, 
gbys
, 
bys
, 
logbuft
, 
logmaxt
;

534 
u_t32_t
 
ݒ_ags
, 
p_ags
, 
t_ags
, 
urg
;

535 
i
, 
mode
, 
myobjc
, 
nches
, 
tdex
, 
su
, 
t
;

536 
_to
, 
rv_to
, 
shm
;

537 *
g
, *
home
, *
sswd
, *
rv
;

538 #ifde
CONFIG_TEST


539 
T_Obj
 **
myobjv1
;

540 
time_t
 
timeamp
;

541 
v
;

542 
u_t32_t
 
de
;

543 
u_t8_t
 *
cis
;

544 
rg
, 
rg2
, 
j
, 
nmodes
, 
mp
;

547 
su
 = 
TCL_OK
;

548 
mode
 = 0;

549 
p_ags
 = 
t_ags
 = 
_ags
 = 0;

550 
home
 = 
NULL
;

565 
ݒ_ags
 = 0;

566 
logmaxt
 = 
logbuft
 = 0;

568 i(
objc
 <= 2) {

569 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args?");

570  (
TCL_ERROR
);

576 
rv
 = 
NULL
;

577 
rv_to
 = 
_to
 = 0;

578 
i
 = 2;

579 
i
 < 
objc
) {

580 i(
	`T_GIndexFromObj
(

, 
objv
[
i
++], 
vݒ
, "option",

581 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

582 
	`T_RetResu
(

);

585 #ifde
CONFIG_TEST


586 (
vݒ
)
tdex
) {

587 
ENV_SERVER
:

588 i(
i
 >
objc
) {

589 
	`T_WrgNumArgs
(

, 2, 
objv
,

591 
su
 = 
TCL_ERROR
;

594 
	`FLD_SET
(
_ags
, 
DB_RPCCLIENT
);

595 
rv
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

597 
ENV_SERVER_TO
:

598 i(
i
 >
objc
) {

599 
	`T_WrgNumArgs
(

, 2, 
objv
,

601 
su
 = 
TCL_ERROR
;

604 
	`FLD_SET
(
_ags
, 
DB_RPCCLIENT
);

605 
su
 = 
	`T_GLgFromObj
(

, 
objv
[
i
++],

606 &
rv_to
);

608 
ENV_CLIENT_TO
:

609 i(
i
 >
objc
) {

610 
	`T_WrgNumArgs
(

, 2, 
objv
,

612 
su
 = 
TCL_ERROR
;

615 
	`FLD_SET
(
_ags
, 
DB_RPCCLIENT
);

616 
su
 = 
	`T_GLgFromObj
(

, 
objv
[
i
++],

617 &
_to
);

624 i(
su
 !
TCL_OK
)

625  (
TCL_ERROR
);

626 
t
 = 
	`db_v_
(
v
, 
_ags
);

627 i(
t
)

628  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

634 (*
v
)->
	`t_fx
((*v), 

->
i_me
);

635 (*
v
)->
	`t_r
((*v), 
_EFunc
);

636 i(
rv
 !
NULL
 &&

637 (
t
 = (*
v
)->
	`t_c_rv
((*v), 
NULL
, 
rv
,

638 
_to
, 
rv_to
, 0)) != 0) {

639 
su
 = 
TCL_ERROR
;

640 
r
;

644 (*
v
)->
p_ive
 = 

;

650 
i
 = 2;

651 
i
 < 
objc
) {

652 
	`T_RetResu
(

);

653 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
vݒ
, "option",

654 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

655 
su
 = 
	`IS_HELP
(
objv
[
i
]);

656 
r
;

658 
i
++;

659 (
vݒ
)
tdex
) {

660 #ifde
CONFIG_TEST


661 
ENV_SERVER
:

662 
ENV_SERVER_TO
:

663 
ENV_CLIENT_TO
:

667 
i
++;

669 
ENV_ALLOC
:

675 ()(*
v
)->
	`t_loc
(*env,

676 
t_db_mloc
, 
t_db_loc
, 
t_db_
);

678 
ENV_AUTO_COMMIT
:

679 
	`FLD_SET
(
t_ags
, 
DB_AUTO_COMMIT
);

681 
ENV_CDB
:

682 
	`FLD_SET
(
ݒ_ags
, 
DB_INIT_CDB
 | 
DB_INIT_MPOOL
);

684 
ENV_CDB_ALLDB
:

685 
	`FLD_SET
(
t_ags
, 
DB_CDB_ALLDB
);

687 
ENV_LOCK
:

688 
	`FLD_SET
(
ݒ_ags
, 
DB_INIT_LOCK
 | 
DB_INIT_MPOOL
);

690 
ENV_CONFLICT
:

698 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

699 &
myobjc
, &
myobjv
);

700 i(
su
 =
TCL_OK
)

701 
i
++;

704 i(
myobjc
 != 2) {

705 
	`T_WrgNumArgs
(

, 2, 
objv
,

707 
su
 = 
TCL_ERROR
;

710 
su
 = 
	`T_GIFromObj
(

, 
myobjv
[0], &
nmodes
);

711 i(
su
 !
TCL_OK
)

713 
su
 = 
	`T_LiObjGEmts
(

, 
myobjv
[1],

714 &
myobjc
, &
myobjv1
);

715 i(
myobjc
 !(
nmodes
 *modes)) {

716 
	`T_WrgNumArgs
(

, 2, 
objv
,

718 
su
 = 
TCL_ERROR
;

722 
t
 = 
	`__os_mloc
(*
v
, (
u_t8_t
) *

723 (
size_t
)
nmodes
 * (size_tmodes, &
cis
);

724 i(
t
 != 0) {

725 
su
 = 
TCL_ERROR
;

728 
j
 = 0; j < 
myobjc
; j++) {

729 
su
 = 
	`T_GIFromObj
(

, 
myobjv1
[
j
],

730 &
mp
);

731 
cis
[
j
] = 
mp
;

732 i(
su
 !
TCL_OK
) {

733 
	`__os_
(
NULL
, 
cis
);

737 
	`_debug_check
();

738 
t
 = (*
v
)->
	`t_lk_cis
(*env,

739 (
u_t8_t
 *)
cis
, 
nmodes
);

740 
	`__os_
(
NULL
, 
cis
);

741 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

744 
ENV_DETECT
:

745 i(
i
 >
objc
) {

746 
	`T_WrgNumArgs
(

, 2, 
objv
,

748 
su
 = 
TCL_ERROR
;

751 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

752 i(
	`rcmp
(
g
, "default") == 0)

753 
de
 = 
DB_LOCK_DEFAULT
;

754 i(
	`rcmp
(
g
, "expire") == 0)

755 
de
 = 
DB_LOCK_EXPIRE
;

756 i(
	`rcmp
(
g
, "maxlocks") == 0)

757 
de
 = 
DB_LOCK_MAXLOCKS
;

758 i(
	`rcmp
(
g
, "maxwrites") == 0)

759 
de
 = 
DB_LOCK_MAXWRITE
;

760 i(
	`rcmp
(
g
, "minlocks") == 0)

761 
de
 = 
DB_LOCK_MINLOCKS
;

762 i(
	`rcmp
(
g
, "minwrites") == 0)

763 
de
 = 
DB_LOCK_MINWRITE
;

764 i(
	`rcmp
(
g
, "oldest") == 0)

765 
de
 = 
DB_LOCK_OLDEST
;

766 i(
	`rcmp
(
g
, "youngest") == 0)

767 
de
 = 
DB_LOCK_YOUNGEST
;

768 i(
	`rcmp
(
g
, "random") == 0)

769 
de
 = 
DB_LOCK_RANDOM
;

771 
	`T_AddEInfo
(

,

773 
su
 = 
TCL_ERROR
;

776 
	`_debug_check
();

777 
t
 = (*
v
)->
	`t_lk_de
(*v, 
de
);

778 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

781 
ENV_EVENT
:

782 i(
i
 >
objc
) {

783 
	`T_WrgNumArgs
(

, 2, 
objv
,

785 
su
 = 
TCL_ERROR
;

788 
su
 = 
	`t_EvtNify
(

, *
v
, 
objv
[
i
++], 

);

790 
ENV_LOCK_MAX_LOCKS
:

791 
ENV_LOCK_MAX_LOCKERS
:

792 
ENV_LOCK_MAX_OBJECTS
:

793 i(
i
 >
objc
) {

794 
	`T_WrgNumArgs
(

, 2, 
objv
,

796 
su
 = 
TCL_ERROR
;

799 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

800 i(
su
 =
TCL_OK
) {

801 
	`_debug_check
();

802 (
vݒ
)
tdex
) {

803 
ENV_LOCK_MAX_LOCKS
:

804 
t
 = (*
v
)->
	`t_lk_max_locks
(*env,

805 
urg
);

807 
ENV_LOCK_MAX_LOCKERS
:

808 
t
 = (*
v
)->
	`t_lk_max_locks
(*env,

809 
urg
);

811 
ENV_LOCK_MAX_OBJECTS
:

812 
t
 = (*
v
)->
	`t_lk_max_objes
(*env,

813 
urg
);

818 
su
 = 
	`_RuSup
(

, 
t
,

819 
	`DB_RETOK_STD
(
t
), "lock_max");

822 
ENV_TXN_NOWAIT
:

823 
	`FLD_SET
(
t_ags
, 
DB_TXN_NOWAIT
);

825 
ENV_TXN_TIME
:

826 
ENV_TXN_TIMEOUT
:

827 
ENV_LOCK_TIMEOUT
:

828 i(
i
 >
objc
) {

829 
	`T_WrgNumArgs
(

, 2, 
objv
,

831 
su
 = 
TCL_ERROR
;

835 i((
su
 = 
	`T_GLgFromObj
(

836 

, 
objv
[
i
++], &
v
)!
TCL_OK
)

838 
timeamp
 = (
time_t
)
v
;

840 
	`_debug_check
();

841 i((
vݒ
)
tdex
 =
ENV_TXN_TIME
)

842 
t
 =

843 (*
v
)->
	`t_tx_timeamp
(*v, &
timeamp
);

845 
t
 = (*
v
)->
	`t_timeout
(*env,

846 (
db_timeout_t
)
timeamp
,

847 (
vݒ
)
tdex
 =
ENV_TXN_TIMEOUT
 ?

848 
DB_SET_TXN_TIMEOUT
 : 
DB_SET_LOCK_TIMEOUT
);

849 
su
 = 
	`_RuSup
(

, 
t
,

850 
	`DB_RETOK_STD
(
t
), "txn_timestamp");

852 
ENV_LOG
:

853 
	`FLD_SET
(
ݒ_ags
, 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
);

855 
ENV_LOG_BUFFER
:

856 i(
i
 >
objc
) {

857 
	`T_WrgNumArgs
(

, 2, 
objv
,

859 
su
 = 
TCL_ERROR
;

862 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

863 i(
su
 =
TCL_OK
) {

864 
	`_debug_check
();

865 
t
 = (*
v
)->
	`t_lg_bsize
(*v, 
urg
);

866 
su
 = 
	`_RuSup
(

, 
t
,

867 
	`DB_RETOK_STD
(
t
), "log_bsize");

868 
logbuft
 = 1;

869 i(
logmaxt
) {

870 
	`_debug_check
();

871 
t
 = (*
v
)->
	`t_lg_max
(*env,

872 
logmaxt
);

873 
su
 = 
	`_RuSup
(

, 
t
,

874 
	`DB_RETOK_STD
(
t
), "log_max");

875 
logmaxt
 = 0;

876 
logbuft
 = 0;

880 
ENV_LOG_FILEMODE
:

881 i(
i
 >
objc
) {

882 
	`T_WrgNumArgs
(

, 2, 
objv
,

884 
su
 = 
TCL_ERROR
;

887 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

888 i(
su
 =
TCL_OK
) {

889 
	`_debug_check
();

890 
t
 =

891 (*
v
)->
	`t_lg_femode
(*v, ()
urg
);

892 
su
 = 
	`_RuSup
(

, 
t
,

893 
	`DB_RETOK_STD
(
t
), "log_filemode");

896 
ENV_LOG_INMEMORY
:

897 
	`FLD_SET
(
t_ags
, 
DB_LOG_INMEMORY
);

899 
ENV_LOG_MAX
:

900 i(
i
 >
objc
) {

901 
	`T_WrgNumArgs
(

, 2, 
objv
,

903 
su
 = 
TCL_ERROR
;

906 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

907 i(
su
 =
TCL_OK
 && 
logbuft
) {

908 
	`_debug_check
();

909 
t
 = (*
v
)->
	`t_lg_max
(*v, 
urg
);

910 
su
 = 
	`_RuSup
(

, 
t
,

911 
	`DB_RETOK_STD
(
t
), "log_max");

912 
logbuft
 = 0;

914 
logmaxt
 = 
urg
;

916 
ENV_LOG_REGIONMAX
:

917 i(
i
 >
objc
) {

918 
	`T_WrgNumArgs
(

, 2, 
objv
,

920 
su
 = 
TCL_ERROR
;

923 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

924 i(
su
 =
TCL_OK
) {

925 
	`_debug_check
();

926 
t
 = (*
v
)->
	`t_lg_gimax
(*v, 
urg
);

927 
su
 =

928 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

932 
ENV_LOG_REMOVE
:

933 
	`FLD_SET
(
t_ags
, 
DB_LOG_AUTOREMOVE
);

935 
ENV_MPOOL_MAX_OPENFD
:

936 i(
i
 >
objc
) {

937 
	`T_WrgNumArgs
(

, 2, 
objv
,

939 
su
 = 
TCL_ERROR
;

942 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
rg
);

943 i(
su
 =
TCL_OK
) {

944 
	`_debug_check
();

945 
t
 = (*
v
)->
	`t_mp_max_ݒfd
(*v, 
rg
);

946 
su
 = 
	`_RuSup
(

, 
t
,

947 
	`DB_RETOK_STD
(
t
), "mpool_max_openfd");

950 
ENV_MPOOL_MAX_WRITE
:

951 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

952 &
myobjc
, &
myobjv
);

953 i(
su
 =
TCL_OK
)

954 
i
++;

957 i(
myobjc
 != 2) {

958 
	`T_WrgNumArgs
(

, 2, 
objv
,

960 
su
 = 
TCL_ERROR
;

963 
su
 = 
	`T_GIFromObj
(

, 
myobjv
[0], &
rg
);

964 i(
su
 !
TCL_OK
)

966 
su
 = 
	`T_GIFromObj
(

, 
myobjv
[1], &
rg2
);

967 i(
su
 !
TCL_OK
)

969 
	`_debug_check
();

970 
t
 = (*
v
)->
	`t_mp_max_wre
(

971 *
v
, 
rg
, (
db_timeout_t
)
rg2
);

972 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

975 
ENV_MPOOL_MMAP_SIZE
:

976 i(
i
 >
objc
) {

977 
	`T_WrgNumArgs
(

, 2, 
objv
,

979 
su
 = 
TCL_ERROR
;

982 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
rg
);

983 i(
su
 =
TCL_OK
) {

984 
	`_debug_check
();

985 
t
 = (*
v
)->
	`t_mp_mmsize
(*env,

986 (
size_t
)
rg
);

987 
su
 = 
	`_RuSup
(

, 
t
,

988 
	`DB_RETOK_STD
(
t
), "mpool_mmap_size");

991 
ENV_MPOOL_NOMMAP
:

992 
	`FLD_SET
(
t_ags
, 
DB_NOMMAP
);

994 
ENV_MULTIVERSION
:

995 
	`FLD_SET
(
t_ags
, 
DB_MULTIVERSION
);

997 
ENV_OVERWRITE
:

998 
	`FLD_SET
(
t_ags
, 
DB_OVERWRITE
);

1000 
ENV_REGION_INIT
:

1001 
	`_debug_check
();

1002 
t
 = (*
v
)->
	`t_ags
(*v, 
DB_REGION_INIT
, 1);

1003 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1006 
ENV_SET_INTERMEDIATE_DIR
:

1007 i(
i
 >
objc
) {

1008 
	`T_WrgNumArgs
(

,

1009 2, 
objv
, "?-set_intermediate_dir mode?");

1010 
su
 = 
TCL_ERROR
;

1013 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
rg
);

1014 i(
su
 =
TCL_OK
) {

1015 
	`_debug_check
();

1016 
t
 = (*
v
)->

1017 
	`t_rmed_d
(*
v
, 
rg
, 0);

1018 
su
 = 
	`_RuSup
(

, 
t
,

1019 
	`DB_RETOK_STD
(
t
), "set_intermediate_dir");

1022 
ENV_REP
:

1023 
	`FLD_SET
(
ݒ_ags
, 
DB_INIT_REP
);

1025 
ENV_REP_CLIENT
:

1026 
p_ags
 = 
DB_REP_CLIENT
;

1027 
	`FLD_SET
(
ݒ_ags
, 
DB_INIT_REP
);

1029 
ENV_REP_MASTER
:

1030 
p_ags
 = 
DB_REP_MASTER
;

1031 
	`FLD_SET
(
ݒ_ags
, 
DB_INIT_REP
);

1033 
ENV_REP_LEASE
:

1034 i(
i
 >
objc
) {

1035 
	`T_WrgNumArgs
(

, 2, 
objv
,

1037 
su
 = 
TCL_ERROR
;

1040 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

1041 &
myobjc
, &
myobjv
);

1042 i(
su
 =
TCL_OK
)

1043 
i
++;

1046 
su
 = 
	`t_RL
(

, 
myobjc
, 
myobjv
, *
v
);

1047 i(
su
 =
TCL_OK
)

1048 
	`FLD_SET
(
ݒ_ags
, 
DB_INIT_REP
);

1050 
ENV_REP_TRANSPORT
:

1051 i(
i
 >
objc
) {

1052 
	`T_WrgNumArgs
(

, 2, 
objv
,

1054 
su
 = 
TCL_ERROR
;

1057 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

1058 &
myobjc
, &
myobjv
);

1059 i(
su
 =
TCL_OK
)

1060 
i
++;

1063 
su
 = 
	`t_RTnt
(

, 
myobjc
, 
myobjv
,

1064 *
v
, 

);

1065 i(
su
 =
TCL_OK
)

1066 
	`FLD_SET
(
ݒ_ags
, 
DB_INIT_REP
);

1068 
ENV_SNAPSHOT
:

1069 
	`FLD_SET
(
t_ags
, 
DB_TXN_SNAPSHOT
);

1071 
ENV_THREAD
:

1073 
	`FLD_SET
(
ݒ_ags
, 
DB_THREAD
);

1075 
ENV_TIME_NOTGRANTED
:

1076 
	`FLD_SET
(
t_ags
, 
DB_TIME_NOTGRANTED
);

1078 
ENV_VERBOSE
:

1079 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

1080 &
myobjc
, &
myobjv
);

1081 i(
su
 =
TCL_OK
)

1082 
i
++;

1085 i(
myobjc
 != 2) {

1086 
	`T_WrgNumArgs
(

, 2, 
objv
,

1088 
su
 = 
TCL_ERROR
;

1091 
su
 = 
	`t_EnvVbo
(

, *
v
,

1092 
myobjv
[0], myobjv[1]);

1094 
ENV_WRNOSYNC
:

1095 
	`FLD_SET
(
t_ags
, 
DB_TXN_WRITE_NOSYNC
);

1098 
ENV_TXN
:

1099 
	`FLD_SET
(
ݒ_ags
, 
DB_INIT_LOCK
 |

1100 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
);

1102 
i
 < 
objc
) {

1103 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

1104 i(
	`rcmp
(
g
, "nosync") == 0) {

1105 
	`FLD_SET
(
t_ags
, 
DB_TXN_NOSYNC
);

1106 
i
++;

1107 } i(
	`rcmp
(
g
, "snapshot") == 0) {

1108 
	`FLD_SET
(
t_ags
, 
DB_TXN_SNAPSHOT
);

1109 
i
++;

1114 
ENV_CREATE
:

1115 
	`FLD_SET
(
ݒ_ags
, 
DB_CREATE
 | 
DB_INIT_MPOOL
);

1117 
ENV_ENCRYPT_AES
:

1119 i(
i
 >
objc
) {

1120 
	`T_WrgNumArgs
(

, 2, 
objv
,

1122 
su
 = 
TCL_ERROR
;

1125 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1126 
	`_debug_check
();

1127 
t
 = (*
v
)->
	`t_y
(*v, 
sswd
, 
DB_ENCRYPT_AES
);

1128 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1131 
ENV_ENCRYPT_ANY
:

1133 i(
i
 >
objc
) {

1134 
	`T_WrgNumArgs
(

, 2, 
objv
,

1136 
su
 = 
TCL_ERROR
;

1139 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1140 
	`_debug_check
();

1141 
t
 = (*
v
)->
	`t_y
(*v, 
sswd
, 0);

1142 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1145 
ENV_HOME
:

1147 i(
i
 >
objc
) {

1148 
	`T_WrgNumArgs
(

, 2, 
objv
,

1150 
su
 = 
TCL_ERROR
;

1153 
home
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1155 
ENV_MODE
:

1156 i(
i
 >
objc
) {

1157 
	`T_WrgNumArgs
(

, 2, 
objv
,

1159 
su
 = 
TCL_ERROR
;

1168 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
mode
);

1170 
ENV_PRIVATE
:

1171 
	`FLD_SET
(
ݒ_ags
, 
DB_PRIVATE
 | 
DB_INIT_MPOOL
);

1173 
ENV_RECOVER
:

1174 
	`FLD_SET
(
ݒ_ags
, 
DB_RECOVER
);

1176 
ENV_RECOVER_FATAL
:

1177 
	`FLD_SET
(
ݒ_ags
, 
DB_RECOVER_FATAL
);

1179 
ENV_REGISTER
:

1180 
	`FLD_SET
(
ݒ_ags
, 
DB_REGISTER
);

1182 
ENV_SYSTEM_MEM
:

1183 
	`FLD_SET
(
ݒ_ags
, 
DB_SYSTEM_MEM
);

1185 
ENV_USE_ENVIRON_ROOT
:

1186 
	`FLD_SET
(
ݒ_ags
, 
DB_USE_ENVIRON_ROOT
);

1188 
ENV_USE_ENVIRON
:

1189 
	`FLD_SET
(
ݒ_ags
, 
DB_USE_ENVIRON
);

1191 
ENV_CACHESIZE
:

1192 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

1193 &
myobjc
, &
myobjv
);

1194 i(
su
 =
TCL_OK
)

1195 
i
++;

1198 i(
myobjc
 != 3) {

1199 
	`T_WrgNumArgs
(

, 2, 
objv
,

1201 
su
 = 
TCL_ERROR
;

1204 
su
 = 
	`_GUI32
(

, 
myobjv
[0], &
gbys
);

1205 i(
su
 !
TCL_OK
)

1207 
su
 = 
	`_GUI32
(

, 
myobjv
[1], &
bys
);

1208 i(
su
 !
TCL_OK
)

1210 
su
 = 
	`T_GIFromObj
(

, 
myobjv
[2], &
nches
);

1211 i(
su
 !
TCL_OK
)

1213 
	`_debug_check
();

1214 
t
 = (*
v
)->
	`t_chesize
(*v, 
gbys
, 
bys
,

1215 
nches
);

1216 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1219 
ENV_CACHE_MAX
:

1220 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

1221 &
myobjc
, &
myobjv
);

1222 i(
su
 =
TCL_OK
)

1223 
i
++;

1226 i(
myobjc
 != 2) {

1227 
	`T_WrgNumArgs
(

, 2, 
objv
,

1229 
su
 = 
TCL_ERROR
;

1232 
su
 = 
	`_GUI32
(

, 
myobjv
[0], &
gbys
);

1233 i(
su
 !
TCL_OK
)

1235 
su
 = 
	`_GUI32
(

, 
myobjv
[1], &
bys
);

1236 i(
su
 !
TCL_OK
)

1238 
	`_debug_check
();

1239 
t
 = (*
v
)->
	`t_che_max
(*v, 
gbys
, 
bys
);

1240 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1243 
ENV_SHM_KEY
:

1244 i(
i
 >
objc
) {

1245 
	`T_WrgNumArgs
(

, 2, 
objv
,

1247 
su
 = 
TCL_ERROR
;

1250 
su
 = 
	`T_GLgFromObj
(

, 
objv
[
i
++], &
shm
);

1251 i(
su
 =
TCL_OK
) {

1252 
	`_debug_check
();

1253 
t
 = (*
v
)->
	`t_shm_key
(*v, 
shm
);

1254 
su
 = 
	`_RuSup
(

, 
t
,

1255 
	`DB_RETOK_STD
(
t
), "shm_key");

1258 
ENV_TXN_MAX
:

1259 i(
i
 >
objc
) {

1260 
	`T_WrgNumArgs
(

, 2, 
objv
,

1262 
su
 = 
TCL_ERROR
;

1265 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

1266 i(
su
 =
TCL_OK
) {

1267 
	`_debug_check
();

1268 
t
 = (*
v
)->
	`t_tx_max
(*v, 
urg
);

1269 
su
 = 
	`_RuSup
(

, 
t
,

1270 
	`DB_RETOK_STD
(
t
), "txn_max");

1273 
ENV_ERRFILE
:

1274 i(
i
 >
objc
) {

1275 
	`T_WrgNumArgs
(

, 2, 
objv
,

1277 
su
 = 
TCL_ERROR
;

1280 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1281 
	`t_EnvSEfe
(

, *
v
, 

, 
g
);

1283 
ENV_ERRPFX
:

1284 i(
i
 >
objc
) {

1285 
	`T_WrgNumArgs
(

, 2, 
objv
,

1287 
su
 = 
TCL_ERROR
;

1290 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1291 
	`_debug_check
();

1292 
su
 = 
	`t_EnvSEpfx
(

, *
v
, 

, 
g
);

1294 
ENV_DATA_DIR
:

1295 i(
i
 >
objc
) {

1296 
	`T_WrgNumArgs
(

, 2, 
objv
,

1298 
su
 = 
TCL_ERROR
;

1301 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1302 
	`_debug_check
();

1303 
t
 = (*
v
)->
	`t_da_d
(*v, 
g
);

1304 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1307 
ENV_LOG_DIR
:

1308 i(
i
 >
objc
) {

1309 
	`T_WrgNumArgs
(

, 2, 
objv
,

1311 
su
 = 
TCL_ERROR
;

1314 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1315 
	`_debug_check
();

1316 
t
 = (*
v
)->
	`t_lg_d
(*v, 
g
);

1317 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1320 
ENV_TMP_DIR
:

1321 i(
i
 >
objc
) {

1322 
	`T_WrgNumArgs
(

, 2, 
objv
,

1324 
su
 = 
TCL_ERROR
;

1327 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1328 
	`_debug_check
();

1329 
t
 = (*
v
)->
	`t_tmp_d
(*v, 
g
);

1330 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1338 i(
su
 !
TCL_OK
)

1339 
r
;

1350 i(
logmaxt
) {

1351 
	`_debug_check
();

1352 
t
 = (*
v
)->
	`t_lg_max
(*v, (
u_t32_t
)
logmaxt
);

1353 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1357 i(
su
 !
TCL_OK
)

1358 
r
;

1360 i(
t_ags
) {

1361 
t
 = (*
v
)->
	`t_ags
(*v, 
t_ags
, 1);

1362 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1364 i(
su
 =
TCL_ERROR
)

1365 
r
;

1370 
	`T_RetResu
(

);

1379 
	`_debug_check
();

1380 
t
 = (*
v
)->
	`ݒ
(*v, 
home
, 
ݒ_ags
, 
mode
);

1381 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "env open");

1383 i(
p_ags
 !0 && 
su
 =
TCL_OK
) {

1384 
	`_debug_check
();

1385 
t
 = (*
v
)->
	`p_t
(*v, 
NULL
, 
p_ags
);

1386 
su
 = 
	`_RuSup
(

,

1387 
t
, 
	`DB_RETOK_STD
(ret), "rep_start");

1390 
r
: i(
su
 =
TCL_ERROR
) {

1391 i(

->
i_r
 && ip->i_!
dout
 && ip->i_!
dr
) {

1392 ()
	`fo
(

->
i_r
);

1393 

->
i_r
 = 
NULL
;

1395 ()(*
v
)->
	`o
(*env, 0);

1396 *
v
 = 
NULL
;

1398  (
su
);

1399 
	}
}

1415 
	$bdb_DbOn
(

, 
objc
, 
objv
, 

, 
dbp
)

1416 
T_Ip
 *

;

1417 
objc
;

1418 
T_Obj
 *
CONST
 
objv
[];

1419 
DBTCL_INFO
 *

;

1420 
DB
 **
dbp
;

1422 cڡ *
bdbvݒ
[] = {

1423 "-v", 
NULL


1425 
	ebdbvݒ
 {

1426 
TCL_DB_ENV0


1428 cڡ *
bdbݒ
[] = {

1429 #ifde
CONFIG_TEST


1480 
NULL


1482 
	ebdbݒ
 {

1483 #ifde
CONFIG_TEST


1484 
TCL_DB_BTCOMPARE
,

1485 
TCL_DB_DUPCOMPARE
,

1486 
TCL_DB_HASHCOMPARE
,

1487 
TCL_DB_HASHPROC
,

1488 
TCL_DB_LORDER
,

1489 
TCL_DB_MINKEY
,

1490 
TCL_DB_NOMMAP
,

1491 
TCL_DB_NOTDURABLE
,

1492 
TCL_DB_READ_UNCOMMITTED
,

1493 
TCL_DB_REVSPLIT
,

1494 
TCL_DB_TEST
,

1495 
TCL_DB_THREAD
,

1497 
TCL_DB_AUTO_COMMIT
,

1498 
TCL_DB_BTREE
,

1499 
TCL_DB_CACHESIZE
,

1500 
TCL_DB_CHKSUM
,

1501 
TCL_DB_CREATE
,

1502 
TCL_DB_DELIM
,

1503 
TCL_DB_DUP
,

1504 
TCL_DB_DUPSORT
,

1505 
TCL_DB_ENCRYPT
,

1506 
TCL_DB_ENCRYPT_AES
,

1507 
TCL_DB_ENCRYPT_ANY
,

1508 
TCL_DB_ENV
,

1509 
TCL_DB_ERRFILE
,

1510 
TCL_DB_ERRPFX
,

1511 
TCL_DB_EXCL
,

1512 
TCL_DB_EXTENT
,

1513 
TCL_DB_FFACTOR
,

1514 
TCL_DB_HASH
,

1515 
TCL_DB_INORDER
,

1516 
TCL_DB_LEN
,

1517 
TCL_DB_MAXSIZE
,

1518 
TCL_DB_MODE
,

1519 
TCL_DB_MULTIVERSION
,

1520 
TCL_DB_NELEM
,

1521 
TCL_DB_PAD
,

1522 
TCL_DB_PAGESIZE
,

1523 
TCL_DB_QUEUE
,

1524 
TCL_DB_RDONLY
,

1525 
TCL_DB_RECNO
,

1526 
TCL_DB_RECNUM
,

1527 
TCL_DB_RENUMBER
,

1528 
TCL_DB_SNAPSHOT
,

1529 
TCL_DB_SOURCE
,

1530 
TCL_DB_TRUNCATE
,

1531 
TCL_DB_TXN
,

1532 
TCL_DB_UNKNOWN
,

1533 
TCL_DB_ENDARG


1536 
DBTCL_INFO
 *
v
, *
r
;

1537 
DB_TXN
 *
txn
;

1538 
DBTYPE
 
ty
;

1539 
DB_ENV
 *
vp
;

1540 
T_Obj
 **
myobjv
;

1541 
u_t32_t
 
gbys
, 
bys
, 
ݒ_ags
, 
t_ags
, 
urg
;

1542 
dg
, 
i
, 
rg
, 
mode
, 
myobjc
, 
nches
;

1543 
tdex
, 
su
, 
t
, 
t_r
, 
t_pfx
, 
subdbn
;

1544 
u_ch
 *
subdbtmp
;

1545 *
g
, *
db
, *
sswd
, *
subdb
, 
msg
[
MSG_SIZE
];

1547 
ty
 = 
DB_UNKNOWN
;

1548 
dg
 = 
mode
 = 
t_r
 = 
t_ags
 = 
t_pfx
 = 0;

1549 
su
 = 
TCL_OK
;

1550 
subdbtmp
 = 
NULL
;

1551 
db
 = 
subdb
 = 
NULL
;

1566 
ݒ_ags
 = 0;

1568 
vp
 = 
NULL
;

1569 
txn
 = 
NULL
;

1571 i(
objc
 < 2) {

1572 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args?");

1573  (
TCL_ERROR
);

1580 
i
 = 2;

1581 
i
 < 
objc
) {

1582 i(
	`T_GIndexFromObj
(

, 
objv
[
i
++], 
bdbvݒ
,

1583 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

1588 
	`T_RetResu
(

);

1591 (
bdbvݒ
)
tdex
) {

1592 
TCL_DB_ENV0
:

1593 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

1594 
vp
 = 
	`NAME_TO_ENV
(
g
);

1595 i(
vp
 =
NULL
) {

1596 
	`T_SResu
(

,

1597 "db on: iegnvmt", 
TCL_STATIC
);

1598  (
TCL_ERROR
);

1608 
t
 = 
	`db_
(
dbp
, 
vp
, 0);

1609 i(
t
)

1610  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1614 (*
dbp
)->
i_
 = 

;

1624 i(
vp
 =
NULL
) {

1625 (*
dbp
)->
	`t_fx
((*dbp), 

->
i_me
);

1626 (*
dbp
)->
	`t_r
((*dbp), 
_EFunc
);

1628 
v
 = 
	`_PToInfo
(
vp
);

1633 i(
v
)

1634 
r
 = 
v
;

1636 
r
 = 

;

1641 
i
 = 2;

1642 
i
 < 
objc
) {

1643 
	`T_RetResu
(

);

1644 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
bdbݒ
, "option",

1645 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

1646 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

1647 i(
g
[0] == '-') {

1648 
su
 = 
	`IS_HELP
(
objv
[
i
]);

1649 
r
;

1651 
	`T_RetResu
(

);

1654 
i
++;

1655 (
bdbݒ
)
tdex
) {

1656 #ifde
CONFIG_TEST


1657 
TCL_DB_BTCOMPARE
:

1658 i(
i
 >
objc
) {

1659 
	`T_WrgNumArgs
(

, 2, 
objv
,

1661 
su
 = 
TCL_ERROR
;

1672 

->
i_com
 = 
objv
[
i
++];

1673 
	`T_InRefCou
(

->
i_com
);

1674 
	`_debug_check
();

1675 
t
 = (*
dbp
)->
	`t_bt_com
(*dbp, 
t_bt_com
);

1676 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1679 
TCL_DB_DUPCOMPARE
:

1680 i(
i
 >
objc
) {

1681 
	`T_WrgNumArgs
(

, 2, 
objv
,

1683 
su
 = 
TCL_ERROR
;

1691 

->
i_dupcom
 = 
objv
[
i
++];

1692 
	`T_InRefCou
(

->
i_dupcom
);

1693 
	`_debug_check
();

1694 
t
 = (*
dbp
)->
	`t_dup_com
(*dbp, 
t_dup_com
);

1695 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1698 
TCL_DB_HASHCOMPARE
:

1699 i(
i
 >
objc
) {

1700 
	`T_WrgNumArgs
(

, 2, 
objv
,

1702 
su
 = 
TCL_ERROR
;

1713 

->
i_com
 = 
objv
[
i
++];

1714 
	`T_InRefCou
(

->
i_com
);

1715 
	`_debug_check
();

1716 
t
 = (*
dbp
)->
	`t_h_com
(*dbp, 
t_bt_com
);

1717 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1720 
TCL_DB_HASHPROC
:

1721 i(
i
 >
objc
) {

1722 
	`T_WrgNumArgs
(

, 2, 
objv
,

1724 
su
 = 
TCL_ERROR
;

1732 

->
i_hashoc
 = 
objv
[
i
++];

1733 
	`T_InRefCou
(

->
i_hashoc
);

1734 
	`_debug_check
();

1735 
t
 = (*
dbp
)->
	`t_h_hash
(*dbp, 
t_h_hash
);

1736 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1739 
TCL_DB_LORDER
:

1740 i(
i
 >
objc
) {

1741 
	`T_WrgNumArgs
(

, 2, 
objv
,

1743 
su
 = 
TCL_ERROR
;

1746 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
rg
);

1747 i(
su
 =
TCL_OK
) {

1748 
	`_debug_check
();

1749 
t
 = (*
dbp
)->
	`t_ld
(*dbp, 
rg
);

1750 
su
 = 
	`_RuSup
(

, 
t
,

1751 
	`DB_RETOK_STD
(
t
), "set_lorder");

1754 
TCL_DB_MINKEY
:

1755 i(
i
 >
objc
) {

1756 
	`T_WrgNumArgs
(

, 2, 
objv
,

1758 
su
 = 
TCL_ERROR
;

1761 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

1762 i(
su
 =
TCL_OK
) {

1763 
	`_debug_check
();

1764 
t
 = (*
dbp
)->
	`t_bt_mkey
(*dbp, 
urg
);

1765 
su
 = 
	`_RuSup
(

, 
t
,

1766 
	`DB_RETOK_STD
(
t
), "set_bt_minkey");

1769 
TCL_DB_NOMMAP
:

1770 
ݒ_ags
 |
DB_NOMMAP
;

1772 
TCL_DB_NOTDURABLE
:

1773 
t_ags
 |
DB_TXN_NOT_DURABLE
;

1775 
TCL_DB_READ_UNCOMMITTED
:

1776 
ݒ_ags
 |
DB_READ_UNCOMMITTED
;

1778 
TCL_DB_REVSPLIT
:

1779 
t_ags
 |
DB_REVSPLITOFF
;

1781 
TCL_DB_TEST
:

1782 
t
 = (*
dbp
)->
	`t_h_hash
(*dbp, 
__ham_
);

1783 
su
 = 
	`_RuSup
(

, 
t
,

1784 
	`DB_RETOK_STD
(
t
), "set_h_hash");

1786 
TCL_DB_THREAD
:

1788 
ݒ_ags
 |
DB_THREAD
;

1791 
TCL_DB_AUTO_COMMIT
:

1792 
ݒ_ags
 |
DB_AUTO_COMMIT
;

1794 
TCL_DB_ENV
:

1798 
i
++;

1800 
TCL_DB_TXN
:

1801 i(
i
 > (
objc
 - 1)) {

1802 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

1803 
su
 = 
TCL_ERROR
;

1806 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1807 
txn
 = 
	`NAME_TO_TXN
(
g
);

1808 i(
txn
 =
NULL
) {

1809 
	`tf
(
msg
, 
MSG_SIZE
,

1810 "On: Invidxn: %s\n", 
g
);

1811 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

1812 
su
 = 
TCL_ERROR
;

1815 
TCL_DB_BTREE
:

1816 i(
ty
 !
DB_UNKNOWN
) {

1817 
	`T_SResu
(

,

1818 "Tomy DByecifd", 
TCL_STATIC
);

1819 
su
 = 
TCL_ERROR
;

1820 
r
;

1822 
ty
 = 
DB_BTREE
;

1824 
TCL_DB_HASH
:

1825 i(
ty
 !
DB_UNKNOWN
) {

1826 
	`T_SResu
(

,

1827 "Tomy DByecifd", 
TCL_STATIC
);

1828 
su
 = 
TCL_ERROR
;

1829 
r
;

1831 
ty
 = 
DB_HASH
;

1833 
TCL_DB_RECNO
:

1834 i(
ty
 !
DB_UNKNOWN
) {

1835 
	`T_SResu
(

,

1836 "Tomy DByecifd", 
TCL_STATIC
);

1837 
su
 = 
TCL_ERROR
;

1838 
r
;

1840 
ty
 = 
DB_RECNO
;

1842 
TCL_DB_QUEUE
:

1843 i(
ty
 !
DB_UNKNOWN
) {

1844 
	`T_SResu
(

,

1845 "Tomy DByecifd", 
TCL_STATIC
);

1846 
su
 = 
TCL_ERROR
;

1847 
r
;

1849 
ty
 = 
DB_QUEUE
;

1851 
TCL_DB_UNKNOWN
:

1852 i(
ty
 !
DB_UNKNOWN
) {

1853 
	`T_SResu
(

,

1854 "Tomy DByecifd", 
TCL_STATIC
);

1855 
su
 = 
TCL_ERROR
;

1856 
r
;

1859 
TCL_DB_CREATE
:

1860 
ݒ_ags
 |
DB_CREATE
;

1862 
TCL_DB_EXCL
:

1863 
ݒ_ags
 |
DB_EXCL
;

1865 
TCL_DB_RDONLY
:

1866 
ݒ_ags
 |
DB_RDONLY
;

1868 
TCL_DB_TRUNCATE
:

1869 
ݒ_ags
 |
DB_TRUNCATE
;

1871 
TCL_DB_MODE
:

1872 i(
i
 >
objc
) {

1873 
	`T_WrgNumArgs
(

, 2, 
objv
,

1875 
su
 = 
TCL_ERROR
;

1884 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
mode
);

1886 
TCL_DB_DUP
:

1887 
t_ags
 |
DB_DUP
;

1889 
TCL_DB_DUPSORT
:

1890 
t_ags
 |
DB_DUPSORT
;

1892 
TCL_DB_INORDER
:

1893 
t_ags
 |
DB_INORDER
;

1895 
TCL_DB_RECNUM
:

1896 
t_ags
 |
DB_RECNUM
;

1898 
TCL_DB_RENUMBER
:

1899 
t_ags
 |
DB_RENUMBER
;

1901 
TCL_DB_SNAPSHOT
:

1902 
t_ags
 |
DB_SNAPSHOT
;

1904 
TCL_DB_CHKSUM
:

1905 
t_ags
 |
DB_CHKSUM
;

1907 
TCL_DB_ENCRYPT
:

1908 
t_ags
 |
DB_ENCRYPT
;

1910 
TCL_DB_ENCRYPT_AES
:

1912 i(
i
 >
objc
) {

1913 
	`T_WrgNumArgs
(

, 2, 
objv
,

1915 
su
 = 
TCL_ERROR
;

1918 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1919 
	`_debug_check
();

1920 
t
 = (*
dbp
)->
	`t_y
(*dbp, 
sswd
, 
DB_ENCRYPT_AES
);

1921 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1924 
TCL_DB_ENCRYPT_ANY
:

1926 i(
i
 >
objc
) {

1927 
	`T_WrgNumArgs
(

, 2, 
objv
,

1929 
su
 = 
TCL_ERROR
;

1932 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1933 
	`_debug_check
();

1934 
t
 = (*
dbp
)->
	`t_y
(*dbp, 
sswd
, 0);

1935 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1938 
TCL_DB_FFACTOR
:

1939 i(
i
 >
objc
) {

1940 
	`T_WrgNumArgs
(

, 2, 
objv
,

1942 
su
 = 
TCL_ERROR
;

1945 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

1946 i(
su
 =
TCL_OK
) {

1947 
	`_debug_check
();

1948 
t
 = (*
dbp
)->
	`t_h_f
(*dbp, 
urg
);

1949 
su
 = 
	`_RuSup
(

, 
t
,

1950 
	`DB_RETOK_STD
(
t
), "set_h_ffactor");

1953 
TCL_DB_MULTIVERSION
:

1954 
ݒ_ags
 |
DB_MULTIVERSION
;

1956 
TCL_DB_NELEM
:

1957 i(
i
 >
objc
) {

1958 
	`T_WrgNumArgs
(

, 2, 
objv
,

1960 
su
 = 
TCL_ERROR
;

1963 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

1964 i(
su
 =
TCL_OK
) {

1965 
	`_debug_check
();

1966 
t
 = (*
dbp
)->
	`t_h_m
(*dbp, 
urg
);

1967 
su
 = 
	`_RuSup
(

, 
t
,

1968 
	`DB_RETOK_STD
(
t
), "set_h_nelem");

1971 
TCL_DB_DELIM
:

1972 i(
i
 >
objc
) {

1973 
	`T_WrgNumArgs
(

, 2, 
objv
,

1975 
su
 = 
TCL_ERROR
;

1978 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
rg
);

1979 i(
su
 =
TCL_OK
) {

1980 
	`_debug_check
();

1981 
t
 = (*
dbp
)->
	`t__dim
(*dbp, 
rg
);

1982 
su
 = 
	`_RuSup
(

, 
t
,

1983 
	`DB_RETOK_STD
(
t
), "set_re_delim");

1986 
TCL_DB_LEN
:

1987 i(
i
 >
objc
) {

1988 
	`T_WrgNumArgs
(

, 2, 
objv
,

1990 
su
 = 
TCL_ERROR
;

1993 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

1994 i(
su
 =
TCL_OK
) {

1995 
	`_debug_check
();

1996 
t
 = (*
dbp
)->
	`t__n
(*dbp, 
urg
);

1997 
su
 = 
	`_RuSup
(

, 
t
,

1998 
	`DB_RETOK_STD
(
t
), "set_re_len");

2001 
TCL_DB_MAXSIZE
:

2002 i(
i
 >
objc
) {

2003 
	`T_WrgNumArgs
(

, 2, 
objv
,

2005 
su
 = 
TCL_ERROR
;

2008 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

2009 i(
su
 =
TCL_OK
) {

2010 
	`_debug_check
();

2011 
t
 = (*
dbp
)->
mpf
->
	`t_maxsize
(

2012 (*
dbp
)->
mpf
, 0, 
urg
);

2013 
su
 = 
	`_RuSup
(

, 
t
,

2014 
	`DB_RETOK_STD
(
t
), "set_re_len");

2017 
TCL_DB_PAD
:

2018 i(
i
 >
objc
) {

2019 
	`T_WrgNumArgs
(

, 2, 
objv
,

2021 
su
 = 
TCL_ERROR
;

2024 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
rg
);

2025 i(
su
 =
TCL_OK
) {

2026 
	`_debug_check
();

2027 
t
 = (*
dbp
)->
	`t__d
(*dbp, 
rg
);

2028 
su
 = 
	`_RuSup
(

, 
t
,

2029 
	`DB_RETOK_STD
(
t
), "set_re_pad");

2032 
TCL_DB_SOURCE
:

2033 i(
i
 >
objc
) {

2034 
	`T_WrgNumArgs
(

, 2, 
objv
,

2036 
su
 = 
TCL_ERROR
;

2039 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2040 
	`_debug_check
();

2041 
t
 = (*
dbp
)->
	`t__sour
(*dbp, 
g
);

2042 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2045 
TCL_DB_EXTENT
:

2046 i(
i
 >
objc
) {

2047 
	`T_WrgNumArgs
(

, 2, 
objv
,

2049 
su
 = 
TCL_ERROR
;

2052 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

2053 i(
su
 =
TCL_OK
) {

2054 
	`_debug_check
();

2055 
t
 = (*
dbp
)->
	`t_q_exsize
(*dbp, 
urg
);

2056 
su
 = 
	`_RuSup
(

, 
t
,

2057 
	`DB_RETOK_STD
(
t
), "set_q_extentsize");

2060 
TCL_DB_CACHESIZE
:

2061 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
++],

2062 &
myobjc
, &
myobjv
);

2063 i(
su
 !
TCL_OK
)

2065 i(
myobjc
 != 3) {

2066 
	`T_WrgNumArgs
(

, 2, 
objv
,

2068 
su
 = 
TCL_ERROR
;

2071 
su
 = 
	`_GUI32
(

, 
myobjv
[0], &
gbys
);

2072 i(
su
 !
TCL_OK
)

2074 
su
 = 
	`_GUI32
(

, 
myobjv
[1], &
bys
);

2075 i(
su
 !
TCL_OK
)

2077 
su
 = 
	`T_GIFromObj
(

, 
myobjv
[2], &
nches
);

2078 i(
su
 !
TCL_OK
)

2080 
	`_debug_check
();

2081 
t
 = (*
dbp
)->
	`t_chesize
(*dbp, 
gbys
, 
bys
,

2082 
nches
);

2083 
su
 = 
	`_RuSup
(

, 
t
,

2084 
	`DB_RETOK_STD
(
t
), "set_cachesize");

2086 
TCL_DB_PAGESIZE
:

2087 i(
i
 >
objc
) {

2088 
	`T_WrgNumArgs
(

, 2, 
objv
,

2090 
su
 = 
TCL_ERROR
;

2093 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
rg
);

2094 i(
su
 =
TCL_OK
) {

2095 
	`_debug_check
();

2096 
t
 = (*
dbp
)->
	`t_gesize
(*dbp,

2097 (
size_t
)
rg
);

2098 
su
 = 
	`_RuSup
(

, 
t
,

2099 
	`DB_RETOK_STD
(
t
), "setagesize");

2102 
TCL_DB_ERRFILE
:

2103 i(
i
 >
objc
) {

2104 
	`T_WrgNumArgs
(

, 2, 
objv
,

2106 
su
 = 
TCL_ERROR
;

2109 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2113 i(
r
->
i_r
 !
NULL
 &&

2114 
r
->
i_r
 !
dout
 &&->i_!
dr
)

2115 ()
	`fo
(
r
->
i_r
);

2116 i(
	`rcmp
(
g
, "/dev/stdout") == 0)

2117 
r
->
i_r
 = 
dout
;

2118 i(
	`rcmp
(
g
, "/dev/stderr") == 0)

2119 
r
->
i_r
 = 
dr
;

2121 
r
->
i_r
 = 
	`fݒ
(
g
, "a");

2122 i(
r
->
i_r
 !
NULL
) {

2123 
	`_debug_check
();

2124 (*
dbp
)->
	`t_rfe
(*dbp, 
r
->
i_r
);

2125 
t_r
 = 1;

2128 
TCL_DB_ERRPFX
:

2129 i(
i
 >
objc
) {

2130 
	`T_WrgNumArgs
(

, 2, 
objv
,

2132 
su
 = 
TCL_ERROR
;

2135 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2139 i(
r
->
i_fx
 !
NULL
)

2140 
	`__os_
(
NULL
, 
r
->
i_fx
);

2141 i((
t
 = 
	`__os_rdup
((*
dbp
)->
dbv
,

2142 
g
, &
r
->
i_fx
)) != 0) {

2143 
su
 = 
	`_RuSup
(

, 
t
,

2144 
	`DB_RETOK_STD
(
t
), "__os_strdup");

2147 i(
r
->
i_fx
 !
NULL
) {

2148 
	`_debug_check
();

2149 (*
dbp
)->
	`t_fx
(*dbp, 
r
->
i_fx
);

2150 
t_pfx
 = 1;

2153 
TCL_DB_ENDARG
:

2154 
dg
 = 1;

2162 i(
su
 !
TCL_OK
)

2163 
r
;

2164 i(
dg
)

2167 i(
su
 !
TCL_OK
)

2168 
r
;

2175 i(
i
 !
objc
) {

2181 
db
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2182 i(
	`rcmp
(
db
, "") == 0)

2183 
db
 = 
NULL
;

2184 i(
i
 !
objc
) {

2185 
subdbtmp
 =

2186 
	`T_GByAayFromObj
(
objv
[
i
++], &
subdbn
);

2187 i((
t
 = 
	`__os_mloc
(
vp
,

2188 (
size_t
)
subdbn
 + 1, &
subdb
)) != 0) {

2189 
	`T_SResu
(

, 
	`db_
(
t
),

2190 
TCL_STATIC
);

2193 
	`memy
(
subdb
, 
subdbtmp
, (
size_t
)
subdbn
);

2194 
subdb
[
subdbn
] = '\0';

2197 i(
t_ags
) {

2198 
t
 = (*
dbp
)->
	`t_ags
(*dbp, 
t_ags
);

2199 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2201 i(
su
 =
TCL_ERROR
)

2202 
r
;

2207 
	`T_RetResu
(

);

2215 
	`_debug_check
();

2218 
t
 = (*
dbp
)->
	`ݒ
(*dbp, 
txn
, 
db
, 
subdb
, 
ty
, 
ݒ_ags
, 
mode
);

2219 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db open");

2221 
r
:

2222 i(
subdb
)

2223 
	`__os_
(
vp
, 
subdb
);

2224 i(
su
 =
TCL_ERROR
) {

2225 ()(*
dbp
)->
	`o
(*dbp, 0);

2237 i(
t_r
 && 
r
 &&->
i_r
 !
NULL
 &&

2238 
r
->
i_r
 !
dout
 &&->i_!
dr
) {

2239 ()
	`fo
(
r
->
i_r
);

2240 
r
->
i_r
 = 
NULL
;

2242 i(
t_pfx
 && 
r
 &&->
i_fx
 !
NULL
) {

2243 
	`__os_
(
vp
, 
r
->
i_fx
);

2244 
r
->
i_fx
 = 
NULL
;

2246 *
dbp
 = 
NULL
;

2248  (
su
);

2249 
	}
}

2251 #ifde
HAVE_64BIT_TYPES


2257 
	$bdb_SeqOn
(

, 
objc
, 
objv
, 

, 
qp
)

2258 
T_Ip
 *

;

2259 
objc
;

2260 
T_Obj
 *
CONST
 
objv
[];

2261 
DBTCL_INFO
 *

;

2262 
DB_SEQUENCE
 **
qp
;

2264 cڡ *
qݒ
[] = {

2276 
NULL


2278 
	eqݒ
 {

2279 
TCL_SEQ_CACHESIZE
,

2280 
TCL_SEQ_CREATE
,

2281 
TCL_SEQ_INC
,

2282 
TCL_SEQ_INIT
,

2283 
TCL_SEQ_DEC
,

2284 
TCL_SEQ_MAX
,

2285 
TCL_SEQ_MIN
,

2286 
TCL_SEQ_THREAD
,

2287 
TCL_SEQ_TXN
,

2288 
TCL_SEQ_WRAP
,

2289 
TCL_SEQ_ENDARG


2291 
DB
 *
dbp
;

2292 
DBT
 
key
;

2293 
DBTYPE
 
ty
;

2294 
DB_TXN
 *
txn
;

2295 
db_o_t
 
o
;

2296 
db_q_t
 
m
, 
max
, 
vue
;

2297 
T_WideI
 
t_vue
;

2298 
u_t32_t
 
ags
, 
oags
;

2299 
che
, 
dg
, 
i
, 
tdex
, 
su
, 
t
, 
ge
, 
tvue
, 
v
;

2300 *
g
, *
db
, 
msg
[
MSG_SIZE
];

2302 
	`COMPQUIET
(

, 
NULL
);

2303 
	`COMPQUIET
(
vue
, 0);

2304 *
qp
 = 
NULL
;

2306 i(
objc
 < 2) {

2307 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args?");

2308  (
TCL_ERROR
);

2311 
txn
 = 
NULL
;

2312 
dg
 = 0;

2313 
ags
 = 
oags
 = 0;

2314 
ge
 = 
tvue
 = 0;

2315 
m
 = 
INT64_MIN
;

2316 
max
 = 
INT64_MAX
;

2317 
che
 = 0;

2319 
i
 = 2; i < 
objc
;) {

2320 
	`T_RetResu
(

);

2321 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
qݒ
, "option",

2322 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

2323 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

2324 i(
g
[0] == '-') {

2325 
su
 = 
	`IS_HELP
(
objv
[
i
]);

2326 
r
;

2328 
	`T_RetResu
(

);

2331 
i
++;

2332 
su
 = 
TCL_OK
;

2333 (
qݒ
)
tdex
) {

2334 
TCL_SEQ_CREATE
:

2335 
oags
 |
DB_CREATE
;

2337 
TCL_SEQ_INC
:

2338 
	`LF_SET
(
DB_SEQ_INC
);

2340 
TCL_SEQ_CACHESIZE
:

2341 i(
i
 >
objc
) {

2342 
	`T_WrgNumArgs
(

, 2, 
objv
,

2344 
su
 = 
TCL_ERROR
;

2347 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
che
);

2349 
TCL_SEQ_INIT
:

2350 i(
i
 >
objc
) {

2351 
	`T_WrgNumArgs
(

, 2, 
objv
,

2353 
su
 = 
TCL_ERROR
;

2356 
su
 =

2357 
	`T_GWideIFromObj
(

2358 

, 
objv
[
i
++], &
t_vue
);

2359 
vue
 = 
t_vue
;

2360 
tvue
 = 1;

2362 
TCL_SEQ_DEC
:

2363 
	`LF_SET
(
DB_SEQ_DEC
);

2365 
TCL_SEQ_MAX
:

2366 i(
i
 >
objc
) {

2367 
	`T_WrgNumArgs
(

, 2, 
objv
,

2369 
su
 = 
TCL_ERROR
;

2372 i((
su
 =

2373 
	`T_GWideIFromObj
(

,

2374 
objv
[
i
++], &
t_vue
)!
TCL_OK
)

2375 
r
;

2376 
max
 = 
t_vue
;

2377 
ge
 = 1;

2379 
TCL_SEQ_MIN
:

2380 i(
i
 >
objc
) {

2381 
	`T_WrgNumArgs
(

, 2, 
objv
,

2383 
su
 = 
TCL_ERROR
;

2386 i((
su
 =

2387 
	`T_GWideIFromObj
(

,

2388 
objv
[
i
++], &
t_vue
)!
TCL_OK
)

2389 
r
;

2390 
m
 = 
t_vue
;

2391 
ge
 = 1;

2393 
TCL_SEQ_THREAD
:

2394 
oags
 |
DB_THREAD
;

2396 
TCL_SEQ_TXN
:

2397 i(
i
 > (
objc
 - 1)) {

2398 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

2399 
su
 = 
TCL_ERROR
;

2402 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2403 
txn
 = 
	`NAME_TO_TXN
(
g
);

2404 i(
txn
 =
NULL
) {

2405 
	`tf
(
msg
, 
MSG_SIZE
,

2406 "Sequ: Invidxn: %s\n", 
g
);

2407 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2408 
su
 = 
TCL_ERROR
;

2411 
TCL_SEQ_WRAP
:

2412 
	`LF_SET
(
DB_SEQ_WRAP
);

2414 
TCL_SEQ_ENDARG
:

2415 
dg
 = 1;

2422 i(
su
 !
TCL_OK
)

2423 
r
;

2424 i(
dg
)

2428 i(
objc
 - 
i
 != 2) {

2429 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args?");

2430  (
TCL_ERROR
);

2436 
db
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2437 i((
dbp
 = 
	`NAME_TO_DB
(
db
)=
NULL
) {

2438 
	`T_SResu
(

, "Nsuch dbp", 
TCL_STATIC
);

2439  (
TCL_ERROR
);

2441 ()
dbp
->
	`g_ty
(dbp, &
ty
);

2443 i(
ty
 =
DB_QUEUE
 ||y =
DB_RECNO
) {

2444 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
o
);

2445 i(
su
 !
TCL_OK
)

2446  (
su
);

2447 
	`DB_INIT_DBT
(
key
, &
o
, (recno));

2449 
	`DB_INIT_DBT
(
key
, 
	`T_GByAayFromObj
(
objv
[
i
++], &
v
), v);

2450 
t
 = 
	`db_qu_
(
qp
, 
dbp
, 0);

2451 i((
su
 = 
	`_RuSup
(

,

2452 
t
, 
	`DB_RETOK_STD
ԑ), "qu ce")!
TCL_OK
) {

2453 *
qp
 = 
NULL
;

2454  (
su
);

2457 
t
 = (*
qp
)->
	`t_ags
(*qp, 
ags
);

2458 i((
su
 = 
	`_RuSup
(

,

2459 
t
, 
	`DB_RETOK_STD
ԑ), "qu s_ags")!
TCL_OK
)

2460 
r
;

2461 i(
ge
) {

2462 
t
 = (*
qp
)->
	`t_nge
(*qp, 
m
, 
max
);

2463 i((
su
 = 
	`_RuSup
(

,

2464 
t
, 
	`DB_RETOK_STD
ԑ), "qu s_nge")!
TCL_OK
)

2465 
r
;

2467 i(
che
) {

2468 
t
 = (*
qp
)->
	`t_chesize
(*qp, 
che
);

2469 i((
su
 = 
	`_RuSup
(

,

2470 
t
, 
	`DB_RETOK_STD
ԑ), "qu cachesize")!
TCL_OK
)

2471 
r
;

2473 i(
tvue
) {

2474 
t
 = (*
qp
)->
	`l_vue
(*qp, 
vue
);

2475 i((
su
 = 
	`_RuSup
(

,

2476 
t
, 
	`DB_RETOK_STD
ԑ), "qu in")!
TCL_OK
)

2477 
r
;

2479 
t
 = (*
qp
)->
	`ݒ
(*qp, 
txn
, &
key
, 
oags
);

2480 i((
su
 = 
	`_RuSup
(

,

2481 
t
, 
	`DB_RETOK_STD
ԑ), "qu on")!
TCL_OK
)

2482 
r
;

2485 
r
: i(*
qp
 !
NULL
)

2486 ()(*
qp
)->
	`o
(*seqp, 0);

2487 *
qp
 = 
NULL
;

2489  (
su
);

2490 
	}
}

2498 
	$bdb_DbRemove
(

, 
objc
, 
objv
)

2499 
T_Ip
 *

;

2500 
objc
;

2501 
T_Obj
 *
CONST
 
objv
[];

2503 cڡ *
bdbm
[] = {

2511 
NULL


2513 
	ebdbm
 {

2514 
TCL_DBREM_AUTOCOMMIT
,

2515 
TCL_DBREM_ENCRYPT
,

2516 
TCL_DBREM_ENCRYPT_AES
,

2517 
TCL_DBREM_ENCRYPT_ANY
,

2518 
TCL_DBREM_ENV
,

2519 
TCL_DBREM_TXN
,

2520 
TCL_DBREM_ENDARG


2522 
DB
 *
dbp
;

2523 
DB_ENV
 *
vp
;

2524 
DB_TXN
 *
txn
;

2525 
dg
, 
i
, 
tdex
, 
su
, 
t
, 
subdbn
;

2526 
u_t32_t
 
c_ag
, 
iags
, 
t_ags
;

2527 
u_ch
 *
subdbtmp
;

2528 *
g
, *
db
, 
msg
[
MSG_SIZE
], *
sswd
, *
subdb
;

2530 
db
 = 
subdb
 = 
NULL
;

2531 
dbp
 = 
NULL
;

2532 
dg
 = 0;

2533 
vp
 = 
NULL
;

2534 
iags
 = 
c_ag
 = 
t_ags
 = 0;

2535 
sswd
 = 
NULL
;

2536 
su
 = 
TCL_OK
;

2537 
subdbtmp
 = 
NULL
;

2538 
txn
 = 
NULL
;

2540 i(
objc
 < 2) {

2541 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? filename ?database?");

2542  (
TCL_ERROR
);

2549 
i
 = 2;

2550 
i
 < 
objc
) {

2551 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
bdbm
,

2552 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

2553 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

2554 i(
g
[0] == '-') {

2555 
su
 = 
	`IS_HELP
(
objv
[
i
]);

2556 
r
;

2558 
	`T_RetResu
(

);

2561 
i
++;

2562 (
bdbm
)
tdex
) {

2563 
TCL_DBREM_AUTOCOMMIT
:

2564 
iags
 |
DB_AUTO_COMMIT
;

2565 
	`_debug_check
();

2567 
TCL_DBREM_ENCRYPT
:

2568 
t_ags
 |
DB_ENCRYPT
;

2569 
	`_debug_check
();

2571 
TCL_DBREM_ENCRYPT_AES
:

2573 i(
i
 >
objc
) {

2574 
	`T_WrgNumArgs
(

, 2, 
objv
,

2576 
su
 = 
TCL_ERROR
;

2579 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2580 
c_ag
 = 
DB_ENCRYPT_AES
;

2582 
TCL_DBREM_ENCRYPT_ANY
:

2584 i(
i
 >
objc
) {

2585 
	`T_WrgNumArgs
(

, 2, 
objv
,

2587 
su
 = 
TCL_ERROR
;

2590 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2591 
c_ag
 = 0;

2593 
TCL_DBREM_ENV
:

2594 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2595 
vp
 = 
	`NAME_TO_ENV
(
g
);

2596 i(
vp
 =
NULL
) {

2597 
	`T_SResu
(

,

2599 
TCL_STATIC
);

2600  (
TCL_ERROR
);

2603 
TCL_DBREM_ENDARG
:

2604 
dg
 = 1;

2606 
TCL_DBREM_TXN
:

2607 i(
i
 >
objc
) {

2608 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

2609 
su
 = 
TCL_ERROR
;

2612 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2613 
txn
 = 
	`NAME_TO_TXN
(
g
);

2614 i(
txn
 =
NULL
) {

2615 
	`tf
(
msg
, 
MSG_SIZE
,

2616 "Put: Invidxn: %s\n", 
g
);

2617 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2618 
su
 = 
TCL_ERROR
;

2626 i(
su
 !
TCL_OK
)

2627 
r
;

2628 i(
dg
)

2631 i(
su
 !
TCL_OK
)

2632 
r
;

2637 i((
i
 !(
objc
 - 1)) || (i != (objc - 2))) {

2643 
db
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2644 i(
	`rcmp
(
db
, "") == 0)

2645 
db
 = 
NULL
;

2646 i(
i
 !
objc
) {

2647 
subdbtmp
 =

2648 
	`T_GByAayFromObj
(
objv
[
i
++], &
subdbn
);

2649 i((
t
 = 
	`__os_mloc
(
vp
, (
size_t
)
subdbn
 + 1,

2650 &
subdb
)!0{ 
	`T_SResu
(

,

2651 
	`db_
(
t
), 
TCL_STATIC
);

2654 
	`memy
(
subdb
, 
subdbtmp
, (
size_t
)
subdbn
);

2655 
subdb
[
subdbn
] = '\0';

2658 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? filename ?database?");

2659 
su
 = 
TCL_ERROR
;

2660 
r
;

2662 i(
vp
 =
NULL
) {

2663 
t
 = 
	`db_
(&
dbp
, 
vp
, 0);

2664 i(
t
) {

2665 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2667 
r
;

2678 
dbp
->
	`t_fx
(dbp, "DbRemove");

2679 
dbp
->
	`t_r
(dbp, 
_EFunc
);

2681 i(
sswd
 !
NULL
) {

2682 
t
 = 
dbp
->
	`t_y
(dbp, 
sswd
, 
c_ag
);

2683 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2686 i(
t_ags
 != 0) {

2687 
t
 = 
dbp
->
	`t_ags
(dbp, 
t_ags
);

2688 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2696 
	`_debug_check
();

2697 i(
dbp
 =
NULL
)

2698 
t
 = 
vp
->
	`dbmove
nvp, 
txn
, 
db
, 
subdb
, 
iags
);

2700 
t
 = 
dbp
->
	`move
(dbp, 
db
, 
subdb
, 0);

2702 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "dbemove");

2703 
dbp
 = 
NULL
;

2704 
r
:

2705 i(
subdb
)

2706 
	`__os_
(
vp
, 
subdb
);

2707 i(
su
 =
TCL_ERROR
 && 
dbp
 !
NULL
)

2708 ()
dbp
->
	`o
(dbp, 0);

2709  (
su
);

2710 
	}
}

2717 
	$bdb_DbRame
(

, 
objc
, 
objv
)

2718 
T_Ip
 *

;

2719 
objc
;

2720 
T_Obj
 *
CONST
 
objv
[];

2722 cڡ *
bdbmv
[] = {

2730 
NULL


2732 
	ebdbmv
 {

2733 
TCL_DBMV_AUTOCOMMIT
,

2734 
TCL_DBMV_ENCRYPT
,

2735 
TCL_DBMV_ENCRYPT_AES
,

2736 
TCL_DBMV_ENCRYPT_ANY
,

2737 
TCL_DBMV_ENV
,

2738 
TCL_DBMV_TXN
,

2739 
TCL_DBMV_ENDARG


2741 
DB
 *
dbp
;

2742 
DB_ENV
 *
vp
;

2743 
DB_TXN
 *
txn
;

2744 
u_t32_t
 
c_ag
, 
iags
, 
t_ags
;

2745 
dg
, 
i
, 
wn
, 
tdex
, 
su
, 
t
, 
subdbn
;

2746 
u_ch
 *
subdbtmp
;

2747 *
g
, *
db
, 
msg
[
MSG_SIZE
], *
wme
, *
sswd
, *
subdb
;

2749 
db
 = 
wme
 = 
subdb
 = 
NULL
;

2750 
dbp
 = 
NULL
;

2751 
dg
 = 0;

2752 
vp
 = 
NULL
;

2753 
iags
 = 
c_ag
 = 
t_ags
 = 0;

2754 
sswd
 = 
NULL
;

2755 
su
 = 
TCL_OK
;

2756 
subdbtmp
 = 
NULL
;

2757 
txn
 = 
NULL
;

2759 i(
objc
 < 2) {

2760 
	`T_WrgNumArgs
(

,

2761 3, 
objv
, "?args? filename ?database? ?newname?");

2762  (
TCL_ERROR
);

2769 
i
 = 2;

2770 
i
 < 
objc
) {

2771 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
bdbmv
,

2772 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

2773 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

2774 i(
g
[0] == '-') {

2775 
su
 = 
	`IS_HELP
(
objv
[
i
]);

2776 
r
;

2778 
	`T_RetResu
(

);

2781 
i
++;

2782 (
bdbmv
)
tdex
) {

2783 
TCL_DBMV_AUTOCOMMIT
:

2784 
iags
 |
DB_AUTO_COMMIT
;

2785 
	`_debug_check
();

2787 
TCL_DBMV_ENCRYPT
:

2788 
t_ags
 |
DB_ENCRYPT
;

2789 
	`_debug_check
();

2791 
TCL_DBMV_ENCRYPT_AES
:

2793 i(
i
 >
objc
) {

2794 
	`T_WrgNumArgs
(

, 2, 
objv
,

2796 
su
 = 
TCL_ERROR
;

2799 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2800 
c_ag
 = 
DB_ENCRYPT_AES
;

2802 
TCL_DBMV_ENCRYPT_ANY
:

2804 i(
i
 >
objc
) {

2805 
	`T_WrgNumArgs
(

, 2, 
objv
,

2807 
su
 = 
TCL_ERROR
;

2810 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2811 
c_ag
 = 0;

2813 
TCL_DBMV_ENV
:

2814 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2815 
vp
 = 
	`NAME_TO_ENV
(
g
);

2816 i(
vp
 =
NULL
) {

2817 
	`T_SResu
(

,

2819 
TCL_STATIC
);

2820  (
TCL_ERROR
);

2823 
TCL_DBMV_ENDARG
:

2824 
dg
 = 1;

2826 
TCL_DBMV_TXN
:

2827 i(
i
 >
objc
) {

2828 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

2829 
su
 = 
TCL_ERROR
;

2832 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2833 
txn
 = 
	`NAME_TO_TXN
(
g
);

2834 i(
txn
 =
NULL
) {

2835 
	`tf
(
msg
, 
MSG_SIZE
,

2836 "Put: Invidxn: %s\n", 
g
);

2837 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2838 
su
 = 
TCL_ERROR
;

2846 i(
su
 !
TCL_OK
)

2847 
r
;

2848 i(
dg
)

2851 i(
su
 !
TCL_OK
)

2852 
r
;

2857 i((
i
 !(
objc
 - 2)) || (i != (objc - 3))) {

2863 
db
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2864 i(
	`rcmp
(
db
, "") == 0)

2865 
db
 = 
NULL
;

2866 i(
i
 =
objc
 - 2) {

2867 
subdbtmp
 =

2868 
	`T_GByAayFromObj
(
objv
[
i
++], &
subdbn
);

2869 i((
t
 = 
	`__os_mloc
(
vp
, (
size_t
)
subdbn
 + 1,

2870 &
subdb
)) != 0) {

2871 
	`T_SResu
(

,

2872 
	`db_
(
t
), 
TCL_STATIC
);

2875 
	`memy
(
subdb
, 
subdbtmp
, (
size_t
)
subdbn
);

2876 
subdb
[
subdbn
] = '\0';

2878 
subdbtmp
 =

2879 
	`T_GByAayFromObj
(
objv
[
i
++], &
wn
);

2880 i((
t
 = 
	`__os_mloc
(
vp
, (
size_t
)
wn
 + 1,

2881 &
wme
)) != 0) {

2882 
	`T_SResu
(

,

2883 
	`db_
(
t
), 
TCL_STATIC
);

2886 
	`memy
(
wme
, 
subdbtmp
, (
size_t
)
wn
);

2887 
wme
[
wn
] = '\0';

2889 
	`T_WrgNumArgs
(

2890 

, 3, 
objv
, "?args? filename ?database? ?newname?");

2891 
su
 = 
TCL_ERROR
;

2892 
r
;

2894 i(
vp
 =
NULL
) {

2895 
t
 = 
	`db_
(&
dbp
, 
vp
, 0);

2896 i(
t
) {

2897 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2899 
r
;

2909 
dbp
->
	`t_fx
(dbp, "DbRename");

2910 
dbp
->
	`t_r
(dbp, 
_EFunc
);

2912 i(
sswd
 !
NULL
) {

2913 
t
 = 
dbp
->
	`t_y
(dbp, 
sswd
, 
c_ag
);

2914 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2917 i(
t_ags
 != 0) {

2918 
t
 = 
dbp
->
	`t_ags
(dbp, 
t_ags
);

2919 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2927 
	`_debug_check
();

2928 i(
dbp
 =
NULL
)

2929 
t
 = 
vp
->
	`dbme
nvp, 
txn
, 
db
, 
subdb
, 
wme
, 
iags
);

2931 
t
 = 
dbp
->
	`me
(dbp, 
db
, 
subdb
, 
wme
, 0);

2932 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "dbename");

2933 
dbp
 = 
NULL
;

2934 
r
:

2935 i(
subdb
)

2936 
	`__os_
(
vp
, 
subdb
);

2937 i(
wme
)

2938 
	`__os_
(
vp
, 
wme
);

2939 i(
su
 =
TCL_ERROR
 && 
dbp
 !
NULL
)

2940 ()
dbp
->
	`o
(dbp, 0);

2941  (
su
);

2942 
	}
}

2944 #ifde
CONFIG_TEST


2950 
	$bdb_DbVify
(

, 
objc
, 
objv
)

2951 
T_Ip
 *

;

2952 
objc
;

2953 
T_Obj
 *
CONST
 
objv
[];

2955 cڡ *
bdbvify
[] = {

2966 
NULL


2968 
	ebdbvrfy
 {

2969 
TCL_DBVRFY_ENCRYPT
,

2970 
TCL_DBVRFY_ENCRYPT_AES
,

2971 
TCL_DBVRFY_ENCRYPT_ANY
,

2972 
TCL_DBVRFY_ENV
,

2973 
TCL_DBVRFY_ERRFILE
,

2974 
TCL_DBVRFY_ERRPFX
,

2975 
TCL_DBVRFY_NOORDERCHK
,

2976 
TCL_DBVRFY_ORDERCHKONLY
,

2977 
TCL_DBVRFY_UNREF
,

2978 
TCL_DBVRFY_ENDARG


2980 
DB_ENV
 *
vp
;

2981 
DB
 *
dbp
;

2982 
FILE
 *
rf
;

2983 
u_t32_t
 
c_ag
, 
ags
, 
t_ags
;

2984 
dg
, 
i
, 
tdex
, 
su
, 
t
, 
subdbn
;

2985 *
g
, *
db
, *
fx
, *
sswd
, *
subdb
;

2986 
u_ch
 *
subdbtmp
;

2988 
vp
 = 
NULL
;

2989 
dbp
 = 
NULL
;

2990 
sswd
 = 
NULL
;

2991 
su
 = 
TCL_OK
;

2992 
db
 = 
fx
 = 
subdb
 = 
NULL
;

2993 
rf
 = 
NULL
;

2994 
ags
 = 
dg
 = 0;

2995 
c_ag
 = 
t_ags
 = 0;

2997 i(
objc
 < 2) {

2998 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? filename");

2999  (
TCL_ERROR
);

3006 
i
 = 2;

3007 
i
 < 
objc
) {

3008 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
bdbvify
,

3009 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

3010 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

3011 i(
g
[0] == '-') {

3012 
su
 = 
	`IS_HELP
(
objv
[
i
]);

3013 
r
;

3015 
	`T_RetResu
(

);

3018 
i
++;

3019 (
bdbvrfy
)
tdex
) {

3020 
TCL_DBVRFY_ENCRYPT
:

3021 
t_ags
 |
DB_ENCRYPT
;

3022 
	`_debug_check
();

3024 
TCL_DBVRFY_ENCRYPT_AES
:

3026 i(
i
 >
objc
) {

3027 
	`T_WrgNumArgs
(

, 2, 
objv
,

3029 
su
 = 
TCL_ERROR
;

3032 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

3033 
c_ag
 = 
DB_ENCRYPT_AES
;

3035 
TCL_DBVRFY_ENCRYPT_ANY
:

3037 i(
i
 >
objc
) {

3038 
	`T_WrgNumArgs
(

, 2, 
objv
,

3040 
su
 = 
TCL_ERROR
;

3043 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

3044 
c_ag
 = 0;

3046 
TCL_DBVRFY_ENV
:

3047 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

3048 
vp
 = 
	`NAME_TO_ENV
(
g
);

3049 i(
vp
 =
NULL
) {

3050 
	`T_SResu
(

,

3052 
TCL_STATIC
);

3053 
su
 = 
TCL_ERROR
;

3057 
TCL_DBVRFY_ERRFILE
:

3058 i(
i
 >
objc
) {

3059 
	`T_WrgNumArgs
(

, 2, 
objv
,

3061 
su
 = 
TCL_ERROR
;

3064 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

3068 i(
rf
 !
NULL
 &&!
dout
 &&!
dr
)

3069 ()
	`fo
(
rf
);

3070 i(
	`rcmp
(
g
, "/dev/stdout") == 0)

3071 
rf
 = 
dout
;

3072 i(
	`rcmp
(
g
, "/dev/stderr") == 0)

3073 
rf
 = 
dr
;

3075 
rf
 = 
	`fݒ
(
g
, "a");

3077 
TCL_DBVRFY_ERRPFX
:

3078 i(
i
 >
objc
) {

3079 
	`T_WrgNumArgs
(

, 2, 
objv
,

3081 
su
 = 
TCL_ERROR
;

3084 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

3088 i(
fx
 !
NULL
)

3089 
	`__os_
(
vp
, 
fx
);

3090 i((
t
 = 
	`__os_rdup
(
NULL
, 
g
, &
fx
)) != 0) {

3091 
su
 = 
	`_RuSup
(

, 
t
,

3092 
	`DB_RETOK_STD
(
t
), "__os_strdup");

3096 
TCL_DBVRFY_NOORDERCHK
:

3097 
ags
 |
DB_NOORDERCHK
;

3099 
TCL_DBVRFY_ORDERCHKONLY
:

3100 
ags
 |
DB_ORDERCHKONLY
;

3102 
TCL_DBVRFY_UNREF
:

3103 
ags
 |
DB_UNREF
;

3105 
TCL_DBVRFY_ENDARG
:

3106 
dg
 = 1;

3113 i(
su
 !
TCL_OK
)

3114 
r
;

3115 i(
dg
)

3118 i(
su
 !
TCL_OK
)

3119 
r
;

3127 i(
i
 !
objc
) {

3133 
db
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

3134 i(
	`rcmp
(
db
, "") == 0)

3135 
db
 = 
NULL
;

3136 i(
i
 !
objc
) {

3137 
subdbtmp
 =

3138 
	`T_GByAayFromObj
(
objv
[
i
++], &
subdbn
);

3139 i((
t
 = 
	`__os_mloc
(
vp
,

3140 (
size_t
)
subdbn
 + 1, &
subdb
)) != 0) {

3141 
	`T_SResu
(

, 
	`db_
(
t
),

3142 
TCL_STATIC
);

3145 
	`memy
(
subdb
, 
subdbtmp
, (
size_t
)
subdbn
);

3146 
subdb
[
subdbn
] = '\0';

3149 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? filename");

3150 
su
 = 
TCL_ERROR
;

3151 
r
;

3153 
t
 = 
	`db_
(&
dbp
, 
vp
, 0);

3154 i(
t
) {

3155 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

3157 
r
;

3160 i(
sswd
 !
NULL
) {

3161 
t
 = 
dbp
->
	`t_y
(dbp, 
sswd
, 
c_ag
);

3162 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

3166 i(
t_ags
 != 0) {

3167 
t
 = 
dbp
->
	`t_ags
(dbp, 
t_ags
);

3168 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

3171 i(
rf
 !
NULL
)

3172 
dbp
->
	`t_rfe
(dbp, 
rf
);

3173 i(
fx
 !
NULL
)

3174 
dbp
->
	`t_fx
(dbp, 
fx
);

3179 
t
 = 
dbp
->
	`vify
(dbp, 
db
, 
subdb
, 
NULL
, 
ags
);

3180 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db verify");

3181 
dbp
 = 
NULL
;

3182 
r
:

3183 i(
rf
 !
NULL
 &&!
dout
 &&!
dr
)

3184 ()
	`fo
(
rf
);

3185 i(
fx
 !
NULL
)

3186 
	`__os_
(
vp
, 
fx
);

3187 i(
dbp
)

3188 ()
dbp
->
	`o
(dbp, 0);

3189  (
su
);

3190 
	}
}

3198 
	$bdb_Vsi
(

, 
objc
, 
objv
)

3199 
T_Ip
 *

;

3200 
objc
;

3201 
T_Obj
 *
CONST
 
objv
[];

3203 cڡ *
bdbv
[] = {

3204 "-rg", 
NULL


3206 
	ebdbv
 {

3207 
TCL_VERSTRING


3209 
i
, 
tdex
, 
maj
, 
m
, 
tch
, 
su
, 
rg
, 
vobjc
;

3210 *
g
, *
v
;

3211 
T_Obj
 *
s
, *
vobjv
[3];

3213 
su
 = 
TCL_OK
;

3214 
rg
 = 0;

3216 i(
objc
 < 2) {

3217 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args?");

3218  (
TCL_ERROR
);

3225 
i
 = 2;

3226 
i
 < 
objc
) {

3227 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
bdbv
,

3228 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

3229 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

3230 i(
g
[0] == '-') {

3231 
su
 = 
	`IS_HELP
(
objv
[
i
]);

3232 
r
;

3234 
	`T_RetResu
(

);

3237 
i
++;

3238 (
bdbv
)
tdex
) {

3239 
TCL_VERSTRING
:

3240 
rg
 = 1;

3247 i(
su
 !
TCL_OK
)

3248 
r
;

3250 i(
su
 !
TCL_OK
)

3251 
r
;

3253 
v
 = 
	`db_vsi
(&
maj
, &
m
, &
tch
);

3254 i(
rg
)

3255 
s
 = 
	`NewSgObj
(
v
, 
	`
(v));

3257 
vobjc
 = 3;

3258 
vobjv
[0] = 
	`T_NewIObj
(
maj
);

3259 
vobjv
[1] = 
	`T_NewIObj
(
m
);

3260 
vobjv
[2] = 
	`T_NewIObj
(
tch
);

3261 
s
 = 
	`T_NewLiObj
(
vobjc
, 
vobjv
);

3263 
	`T_SObjResu
(

, 
s
);

3264 
r
:

3265  (
su
);

3266 
	}
}

3268 #ifde
CONFIG_TEST


3273 
	#ADD_CONFIG_NAME
(
me
) \

3274 
cf
 = 
	`NewSgObj
(
me
, 
	`
(name)); \

3275 i(
	`T_LiObjAdEmt
(

, 
s
, 
cf
!
TCL_OK
) \

3276  (
TCL_ERROR
);

	)

3279 
	$bdb_GCfig
(

, 
objc
, 
objv
)

3280 
T_Ip
 *

;

3281 
objc
;

3282 
T_Obj
 *
CONST
 
objv
[];

3284 
T_Obj
 *
s
, *
cf
;

3289 i(
objc
 != 2) {

3290 
	`T_WrgNumArgs
(

, 2, 
objv
, "");

3291  (
TCL_ERROR
);

3293 
s
 = 
	`T_NewLiObj
(0, 
NULL
);

3294 
cf
 = 
NULL
;

3302 #ifde
DEBUG


3303 
	`ADD_CONFIG_NAME
("debug");

3305 #ifde
DEBUG_ROP


3306 
	`ADD_CONFIG_NAME
("debug_rop");

3308 #ifde
DEBUG_WOP


3309 
	`ADD_CONFIG_NAME
("debug_wop");

3311 #ifde
HAVE_HASH


3312 
	`ADD_CONFIG_NAME
("hash");

3314 #ifde
HAVE_QUEUE


3315 
	`ADD_CONFIG_NAME
("queue");

3317 #ifde
HAVE_REPLICATION


3318 
	`ADD_CONFIG_NAME
("rep");

3320 #ifde
HAVE_REPLICATION_THREADS


3321 
	`ADD_CONFIG_NAME
("repmgr");

3323 #ifde
HAVE_RPC


3324 
	`ADD_CONFIG_NAME
("rpc");

3326 #ifde
HAVE_VERIFY


3327 
	`ADD_CONFIG_NAME
("verify");

3329 
	`T_SObjResu
(

, 
s
);

3330  (
TCL_OK
);

3331 
	}
}

3338 
	$bdb_Hds
(

, 
objc
, 
objv
)

3339 
T_Ip
 *

;

3340 
objc
;

3341 
T_Obj
 *
CONST
 
objv
[];

3343 
DBTCL_INFO
 *
p
;

3344 
T_Obj
 *
s
, *
hd
;

3349 i(
objc
 != 2) {

3350 
	`T_WrgNumArgs
(

, 2, 
objv
, "");

3351  (
TCL_ERROR
);

3353 
s
 = 
	`T_NewLiObj
(0, 
NULL
);

3355 
	`LIST_FOREACH
(
p
, &
__db_fohd
, 
s
) {

3356 
hd
 = 
	`NewSgObj
(
p
->
i_me
, 
	`
(p->i_name));

3357 i(
	`T_LiObjAdEmt
(

, 
s
, 
hd
!
TCL_OK
)

3358  (
TCL_ERROR
);

3360 
	`T_SObjResu
(

, 
s
);

3361  (
TCL_OK
);

3362 
	}
}

3370 
	$bdb_MsgTy
(

, 
objc
, 
objv
)

3371 
T_Ip
 *

;

3372 
objc
;

3373 
T_Obj
 *
CONST
 
objv
[];

3375 
REP_CONTROL
 *

;

3376 
T_Obj
 *
msgme
;

3377 
u_t32_t
 
n
, 
msgty
;

3378 
䓽
, 
t
;

3384 cڡ *
msgmes
[] = {

3393 "ve1", "ve2", 
NULL


3399 i(
objc
 != 3) {

3400 
	`T_WrgNumArgs
(

, 3, 
objv
, "msgtype msg");

3401  (
TCL_ERROR
);

3404 
t
 = 
	`_CyObjBys
(

, 
objv
[2], &

, &
n
, &
䓽
);

3405 i(
t
 !
TCL_OK
) {

3406 
	`T_SResu
(

,

3407 "msgty: bad cڌ mesge", 
TCL_STATIC
);

3408  (
TCL_ERROR
);

3410 
msgty
 = 

->
y
;

3411 
msgme
 = 
	`NewSgObj
(
msgmes
[
msgty
], 
	`
(msgnames[msgtype]));

3412 
	`T_SObjResu
(

, 
msgme
);

3413 i(

 !
NULL
 && 
䓽
)

3414 
	`__os_
(
NULL
, 

);

3415  (
TCL_OK
);

3416 
	}
}

3423 
	$bdb_DbUpgde
(

, 
objc
, 
objv
)

3424 
T_Ip
 *

;

3425 
objc
;

3426 
T_Obj
 *
CONST
 
objv
[];

3428 cڡ *
bdbupg
[] = {

3429 "-dupst", "-v", "--", 
NULL


3431 
	ebdbupg
 {

3432 
TCL_DBUPG_DUPSORT
,

3433 
TCL_DBUPG_ENV
,

3434 
TCL_DBUPG_ENDARG


3436 
DB_ENV
 *
vp
;

3437 
DB
 *
dbp
;

3438 
u_t32_t
 
ags
;

3439 
dg
, 
i
, 
tdex
, 
su
, 
t
;

3440 *
g
, *
db
;

3442 
vp
 = 
NULL
;

3443 
dbp
 = 
NULL
;

3444 
su
 = 
TCL_OK
;

3445 
db
 = 
NULL
;

3446 
ags
 = 
dg
 = 0;

3448 i(
objc
 < 2) {

3449 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? filename");

3450  (
TCL_ERROR
);

3453 
i
 = 2;

3454 
i
 < 
objc
) {

3455 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
bdbupg
,

3456 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

3457 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

3458 i(
g
[0] == '-') {

3459 
su
 = 
	`IS_HELP
(
objv
[
i
]);

3460 
r
;

3462 
	`T_RetResu
(

);

3465 
i
++;

3466 (
bdbupg
)
tdex
) {

3467 
TCL_DBUPG_DUPSORT
:

3468 
ags
 |
DB_DUPSORT
;

3470 
TCL_DBUPG_ENV
:

3471 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

3472 
vp
 = 
	`NAME_TO_ENV
(
g
);

3473 i(
vp
 =
NULL
) {

3474 
	`T_SResu
(

,

3476 
TCL_STATIC
);

3477  (
TCL_ERROR
);

3480 
TCL_DBUPG_ENDARG
:

3481 
dg
 = 1;

3488 i(
su
 !
TCL_OK
)

3489 
r
;

3490 i(
dg
)

3493 i(
su
 !
TCL_OK
)

3494 
r
;

3498 i(
i
 =(
objc
 - 1))

3499 
db
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

3501 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? filename");

3502 
su
 = 
TCL_ERROR
;

3503 
r
;

3505 
t
 = 
	`db_
(&
dbp
, 
vp
, 0);

3506 i(
t
) {

3507 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

3509 
r
;

3520 i(
vp
 =
NULL
) {

3521 
dbp
->
	`t_fx
(dbp, "DbUpgrade");

3522 
dbp
->
	`t_r
(dbp, 
_EFunc
);

3524 
t
 = 
dbp
->
	`upgde
(dbp, 
db
, 
ags
);

3525 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db upgrade");

3526 
r
:

3527 i(
dbp
)

3528 ()
dbp
->
	`o
(dbp, 0);

3529  (
su
);

3530 
	}
}

3539 
	$t_bt_com
(
dbp
, 
db
, 
dbtb
)

3540 
DB
 *
dbp
;

3541 cڡ 
DBT
 *
db
, *
dbtb
;

3543  (
	`t_com_back
(
dbp
, 
db
, 
dbtb
,

3544 ((
DBTCL_INFO
 *)
dbp
->
i_
)->
i_com
, "bt_compare"));

3545 
	}
}

3548 
	$t_dup_com
(
dbp
, 
db
, 
dbtb
)

3549 
DB
 *
dbp
;

3550 cڡ 
DBT
 *
db
, *
dbtb
;

3552  (
	`t_com_back
(
dbp
, 
db
, 
dbtb
,

3553 ((
DBTCL_INFO
 *)
dbp
->
i_
)->
i_dupcom
, "dup_compare"));

3554 
	}
}

3564 
	$t_com_back
(
dbp
, 
db
, 
dbtb
, 
ocobj
, 
ame
)

3565 
DB
 *
dbp
;

3566 cڡ 
DBT
 *
db
, *
dbtb
;

3567 
T_Obj
 *
ocobj
;

3568 *
ame
;

3570 
DBTCL_INFO
 *

;

3571 
T_Ip
 *

;

3572 
T_Obj
 *
a
, *
b
, *
sobj
, *
objv
[3];

3573 
su
, 
cmp
;

3575 

 = (
DBTCL_INFO
 *)
dbp
->
i_
;

3576 

 = 

->
i_
;

3577 
objv
[0] = 
ocobj
;

3584 
a
 = 
	`T_NewByAayObj
(
db
->
da
, ()db->
size
);

3585 
	`T_InRefCou
(
a
);

3586 
b
 = 
	`T_NewByAayObj
(
dbtb
->
da
, ()dbtb->
size
);

3587 
	`T_InRefCou
(
b
);

3589 
objv
[1] = 
a
;

3590 
objv
[2] = 
b
;

3592 
su
 = 
	`T_EvObjv
(

, 3, 
objv
, 0);

3593 i(
su
 !
TCL_OK
) {

3609 
nic
: 
	`__db_rx
(
dbp
->
dbv
, "T %back faed", 
ame
);

3610  (
	`__db_nic
(
dbp
->
dbv
, 
DB_RUNRECOVERY
));

3613 
sobj
 = 
	`T_GObjResu
(

);

3614 
su
 = 
	`T_GIFromObj
(

, 
sobj
, &
cmp
);

3615 i(
su
 !
TCL_OK
)

3616 
nic
;

3618 
	`T_DeRefCou
(
a
);

3619 
	`T_DeRefCou
(
b
);

3620  (
cmp
);

3621 
	}
}

3629 
u_t32_t


3630 
	$t_h_hash
(
dbp
, 
buf
, 
n
)

3631 
DB
 *
dbp
;

3632 cڡ *
buf
;

3633 
u_t32_t
 
n
;

3635 
DBTCL_INFO
 *

;

3636 
T_Ip
 *

;

3637 
T_Obj
 *
objv
[2];

3638 
su
, 
hv
;

3640 

 = (
DBTCL_INFO
 *)
dbp
->
i_
;

3641 

 = 

->
i_
;

3642 
objv
[0] = 

->
i_hashoc
;

3647 
objv
[1] = 
	`T_NewByAayObj
((*)
buf
, ()
n
);

3648 
	`T_InRefCou
(
objv
[1]);

3649 
su
 = 
	`T_EvObjv
(

, 2, 
objv
, 0);

3650 i(
su
 !
TCL_OK
)

3651 
nic
;

3653 
su
 = 
	`T_GIFromObj
(

, 
	`T_GObjResu
(), &
hv
);

3654 i(
su
 !
TCL_OK
)

3655 
nic
;

3657 
	`T_DeRefCou
(
objv
[1]);

3658  ((
u_t32_t
)
hv
);

3660 
nic
: 
	`__db_rx
(
dbp
->
dbv
, "Tcl h_hash callback failed");

3662 ()
	`__db_nic
(
dbp
->
dbv
, 
DB_RUNRECOVERY
);

3664 
	}
}

3674 
	$t_p_nd
(
dbv
, 
cڌ
, 
c
, 
lp
, 
eid
, 
ags
)

3675 
DB_ENV
 *
dbv
;

3676 cڡ 
DBT
 *
cڌ
, *
c
;

3677 cڡ 
DB_LSN
 *
lp
;

3678 
eid
;

3679 
u_t32_t
 
ags
;

3681 
	#TCLDB_SENDITEMS
 7

	)

3682 
	#TCLDB_MAXREPFLAGS
 32

	)

3683 
DBTCL_INFO
 *

;

3684 
T_Ip
 *

;

3685 
T_Obj
 *
cڌ_o
, *
eid_o
, *
ags_o
, *
l_o
, *
igobj
, *
c_o
;

3686 
T_Obj
 *
lobj
[2], *
myobjv
[
TCLDB_MAXREPFLAGS
], *
objv
[
TCLDB_SENDITEMS
];

3687 
T_Obj
 *
sobj
;

3688 
i
, 
myobjc
, 
su
, 
t
;

3690 

 = (
DBTCL_INFO
 *)
dbv
->
p_ive
;

3691 

 = 

->
i_
;

3692 
objv
[0] = 

->
i_p_nd
;

3694 
cڌ_o
 = 
	`T_NewByAayObj
(
cڌ
->
da
, ()cڌ->
size
);

3695 
	`T_InRefCou
(
cڌ_o
);

3697 
c_o
 = 
	`T_NewByAayObj
(
c
->
da
, (ec->
size
);

3698 
	`T_InRefCou
(
c_o
);

3700 
eid_o
 = 
	`T_NewIObj
(
eid
);

3701 
	`T_InRefCou
(
eid_o
);

3703 
myobjv
[
myobjc
 = 0] = 
NULL
;

3704 i(
ags
 == 0)

3705 
myobjv
[
myobjc
++] = 
	`NewSgObj
("ne", 
	`
("none"));

3706 i(
	`LF_ISSET
(
DB_REP_ANYWHERE
))

3707 
myobjv
[
myobjc
++] = 
	`NewSgObj
("y", 
	`
("any"));

3708 i(
	`LF_ISSET
(
DB_REP_NOBUFFER
))

3709 
myobjv
[
myobjc
++] = 
	`NewSgObj
("nobufr", 
	`
("nobuffer"));

3710 i(
	`LF_ISSET
(
DB_REP_PERMANENT
))

3711 
myobjv
[
myobjc
++] = 
	`NewSgObj
("rm", 
	`
("perm"));

3712 i(
	`LF_ISSET
(
DB_REP_REREQUEST
))

3713 
myobjv
[
myobjc
++] =

3714 
	`NewSgObj
("que", 
	`
("rerequest"));

3718 i(
myobjc
 == 0)

3719 
myobjv
[
myobjc
++] = 
	`NewSgObj
("unknown", 
	`
("unknown"));

3720 
i
 = 0; i < 
myobjc
; i++)

3721 
	`T_InRefCou
(
myobjv
[
i
]);

3722 
ags_o
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

3723 
	`T_InRefCou
(
ags_o
);

3725 
lobj
[0] = 
	`T_NewLgObj
(()
lp
->
fe
);

3726 
	`T_InRefCou
(
lobj
[0]);

3727 
lobj
[1] = 
	`T_NewLgObj
(()
lp
->
offt
);

3728 
	`T_InRefCou
(
lobj
[1]);

3729 
l_o
 = 
	`T_NewLiObj
(2, 
lobj
);

3730 
	`T_InRefCou
(
l_o
);

3732 
objv
[1] = 
cڌ_o
;

3733 
objv
[2] = 
c_o
;

3734 
objv
[3] = 

->
i_p_eid
;

3735 
objv
[4] = 
eid_o
;

3736 
objv
[5] = 
ags_o
;

3737 
objv
[6] = 
l_o
;

3745 
igobj
 = 
	`T_GObjResu
(

);

3746 
	`T_InRefCou
(
igobj
);

3747 
su
 = 
	`T_EvObjv
(

, 
TCLDB_SENDITEMS
, 
objv
, 0);

3748 i(
su
 !
TCL_OK
) {

3755 
r
: 
	`__db_rx
(
dbv
, "Tclep_send failure: %s",

3756 
	`T_GSgResu
(

));

3757  (
EINVAL
);

3760 
sobj
 = 
	`T_GObjResu
(

);

3761 
su
 = 
	`T_GIFromObj
(

, 
sobj
, &
t
);

3762 i(
su
 !
TCL_OK
)

3763 
r
;

3765 
	`T_SObjResu
(

, 
igobj
);

3766 
	`T_DeRefCou
(
igobj
);

3767 
	`T_DeRefCou
(
cڌ_o
);

3768 
	`T_DeRefCou
(
c_o
);

3769 
	`T_DeRefCou
(
eid_o
);

3770 
i
 = 0; i < 
myobjc
; i++)

3771 
	`T_DeRefCou
(
myobjv
[
i
]);

3772 
	`T_DeRefCou
(
ags_o
);

3773 
	`T_DeRefCou
(
lobj
[0]);

3774 
	`T_DeRefCou
(
lobj
[1]);

3775 
	`T_DeRefCou
(
l_o
);

3777  (
t
);

3778 
	}
}

3781 #ifde
CONFIG_TEST


3789 
	$t_db_mloc
(
size
)

3790 
size_t
 
size
;

3792 
T_Obj
 *
obj
;

3793 *
buf
;

3795 
obj
 = 
	`T_NewObj
();

3796 i(
obj
 =
NULL
)

3797  (
NULL
);

3798 
	`T_InRefCou
(
obj
);

3800 
	`T_SObjLgth
(
obj
, ()(
size
 + (
T_Obj
 *)));

3801 
buf
 = 
	`T_GSg
(
obj
);

3802 
	`memy
(
buf
, &
obj
, (&obj));

3804 
buf
 = (
T_Obj
 **)buf + 1;

3805  (
buf
);

3806 
	}
}

3809 
	$t_db_loc
(
r
, 
size
)

3810 *
r
;

3811 
size_t
 
size
;

3813 
T_Obj
 *
obj
;

3815 i(
r
 =
NULL
)

3816  (
	`t_db_mloc
(
size
));

3818 
obj
 = *(
T_Obj
 **)((T_Obj **)
r
 - 1);

3819 
	`T_SObjLgth
(
obj
, ()(
size
 + (
T_Obj
 *)));

3821 
r
 = 
	`T_GSg
(
obj
);

3822 
	`memy
(
r
, &
obj
, (&obj));

3824 
r
 = (
T_Obj
 **)ptr + 1;

3825  (
r
);

3826 
	}
}

3829 
	$t_db_
(
r
)

3830 *
r
;

3832 
T_Obj
 *
obj
;

3834 
obj
 = *(
T_Obj
 **)((T_Obj **)
r
 - 1);

3835 
	`T_DeRefCou
(
obj
);

3836 
	}
}

	@../tcl/tcl_dbcursor.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/t_db.h
"

20 
t_DbcDup
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DBC
 *));

21 
t_DbcG
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DBC
 *, ));

22 
t_DbcPut
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DBC
 *));

31 
	$dbc_Cmd
(
Da
, 

, 
objc
, 
objv
)

32 
ClDa
 
Da
;

33 
T_Ip
 *

;

34 
objc
;

35 
T_Obj
 *
CONST
 
objv
[];

37 cڡ *
dbccmds
[] = {

38 #ifde
CONFIG_TEST


46 
NULL


48 
	edbccmds
 {

49 #ifde
CONFIG_TEST


50 
DBCPGET
,

52 
DBCCLOSE
,

53 
DBCDELETE
,

54 
DBCDUP
,

55 
DBCGET
,

56 
DBCPUT


58 
DBC
 *
dbc
;

59 
DBTCL_INFO
 *
db
;

60 
cmddex
, 
su
, 
t
;

62 
	`T_RetResu
(

);

63 
dbc
 = (
DBC
 *)
Da
;

64 
db
 = 
	`_PToInfo
((*)
dbc
);

65 
su
 = 
TCL_OK
;

67 i(
objc
 <= 1) {

68 
	`T_WrgNumArgs
(

, 1, 
objv
, "command cmdargs");

69  (
TCL_ERROR
);

71 i(
dbc
 =
NULL
) {

72 
	`T_SResu
(

, "NULL dbpor", 
TCL_STATIC
);

73  (
TCL_ERROR
);

75 i(
db
 =
NULL
) {

76 
	`T_SResu
(

, "NULL dbfpor", 
TCL_STATIC
);

77  (
TCL_ERROR
);

84 i(
	`T_GIndexFromObj
(

, 
objv
[1], 
dbccmds
, "command",

85 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

86  (
	`IS_HELP
(
objv
[1]));

87 (
dbccmds
)
cmddex
) {

88 #ifde
CONFIG_TEST


89 
DBCPGET
:

90 
su
 = 
	`t_DbcG
(

, 
objc
, 
objv
, 
dbc
, 1);

93 
DBCCLOSE
:

97 i(
objc
 > 2) {

98 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

99  (
TCL_ERROR
);

101 
	`_debug_check
();

102 
t
 = 
dbc
->
	`o
(dbc);

103 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

105 i(
su
 =
TCL_OK
) {

106 ()
	`T_DeCommd
(

, 
db
->
i_me
);

107 
	`_DeInfo
(
db
);

110 
DBCDELETE
:

114 i(
objc
 > 2) {

115 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

116  (
TCL_ERROR
);

118 
	`_debug_check
();

119 
t
 = 
dbc
->
	`d
(dbc, 0);

120 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBCDEL
(ret),

123 
DBCDUP
:

124 
su
 = 
	`t_DbcDup
(

, 
objc
, 
objv
, 
dbc
);

126 
DBCGET
:

127 
su
 = 
	`t_DbcG
(

, 
objc
, 
objv
, 
dbc
, 0);

129 
DBCPUT
:

130 
su
 = 
	`t_DbcPut
(

, 
objc
, 
objv
, 
dbc
);

133  (
su
);

134 
	}
}

140 
	$t_DbcPut
(

, 
objc
, 
objv
, 
dbc
)

141 
T_Ip
 *

;

142 
objc
;

143 
T_Obj
 *
CONST
 
objv
[];

144 
DBC
 *
dbc
;

146 cڡ *
dbcutts
[] = {

147 #ifde
CONFIG_TEST


156 
NULL


158 
	edbcutts
 {

159 #ifde
CONFIG_TEST


160 
DBCPUT_NODUPDATA
,

162 
DBCPUT_AFTER
,

163 
DBCPUT_BEFORE
,

164 
DBCPUT_CURRENT
,

165 
DBCPUT_KEYFIRST
,

166 
DBCPUT_KEYLAST
,

167 
DBCPUT_PART


169 
DB
 *
thisdbp
;

170 
DBT
 
key
, 
da
;

171 
DBTCL_INFO
 *
dbc
, *
db
;

172 
DBTYPE
 
ty
;

173 
T_Obj
 **
emv
, *
s
;

174 *
dtmp
, *
ktmp
;

175 
db_o_t
 
o
;

176 
u_t32_t
 
ag
;

177 
emc
, 
key
, 
da
, 
i
, 
tdex
, 
su
, 
t
;

179 
	`COMPQUIET
(
dtmp
, 
NULL
);

180 
	`COMPQUIET
(
ktmp
, 
NULL
);

182 
su
 = 
TCL_OK
;

183 
ag
 = 0;

184 
key
 = 
da
 = 0;

186 i(
objc
 < 2) {

187 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args? ?key?");

188  (
TCL_ERROR
);

191 
	`memt
(&
key
, 0, (key));

192 
	`memt
(&
da
, 0, (data));

198 
i
 = 2;

199 
i
 < (
objc
 - 1)) {

200 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbcutts
, "option",

201 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

206 i(
	`IS_HELP
(
objv
[
i
]=
TCL_OK
) {

207 
su
 = 
TCL_OK
;

208 
out
;

210 
	`T_RetResu
(

);

213 
i
++;

214 (
dbcutts
)
tdex
) {

215 #ifde
CONFIG_TEST


216 
DBCPUT_NODUPDATA
:

217 
	`FLAG_CHECK
(
ag
);

218 
ag
 = 
DB_NODUPDATA
;

221 
DBCPUT_AFTER
:

222 
	`FLAG_CHECK
(
ag
);

223 
ag
 = 
DB_AFTER
;

225 
DBCPUT_BEFORE
:

226 
	`FLAG_CHECK
(
ag
);

227 
ag
 = 
DB_BEFORE
;

229 
DBCPUT_CURRENT
:

230 
	`FLAG_CHECK
(
ag
);

231 
ag
 = 
DB_CURRENT
;

233 
DBCPUT_KEYFIRST
:

234 
	`FLAG_CHECK
(
ag
);

235 
ag
 = 
DB_KEYFIRST
;

237 
DBCPUT_KEYLAST
:

238 
	`FLAG_CHECK
(
ag
);

239 
ag
 = 
DB_KEYLAST
;

241 
DBCPUT_PART
:

242 i(
i
 > (
objc
 - 2)) {

243 
	`T_WrgNumArgs
(

, 2, 
objv
,

245 
su
 = 
TCL_ERROR
;

251 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
++],

252 &
emc
, &
emv
);

253 i(
emc
 != 2) {

254 
	`T_SResu
(

,

255 "Li mu b{offngth}", 
TCL_STATIC
);

256 
su
 = 
TCL_ERROR
;

259 
da
.
ags
 |
DB_DBT_PARTIAL
;

260 
su
 = 
	`_GUI32
(

, 
emv
[0], &
da
.
doff
);

261 i(
su
 !
TCL_OK
)

263 
su
 = 
	`_GUI32
(

, 
emv
[1], &
da
.
dn
);

272 i(
su
 !
TCL_OK
)

275 i(
su
 !
TCL_OK
)

276 
out
;

282 
dbc
 = 
	`_PToInfo
(
dbc
);

283 i(
dbc
 =
NULL
)

284 
ty
 = 
DB_UNKNOWN
;

286 
db
 = 
dbc
->
i_
;

287 i(
db
 =
NULL
) {

288 
	`T_SResu
(

, "Cursor withoutarent database",

289 
TCL_STATIC
);

290 
su
 = 
TCL_ERROR
;

291  (
su
);

293 
thisdbp
 = 
db
->
i_dbp
;

294 ()
thisdbp
->
	`g_ty
hisdbp, &
ty
);

301 i(
ag
 =
DB_AFTER
 || fg =
DB_BEFORE
 || fg =
DB_CURRENT
) {

302 i(
i
 !(
objc
 - 1)) {

303 
	`T_WrgNumArgs
(

, 2, 
objv
,

305 
su
 = 
TCL_ERROR
;

306 
out
;

312 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) {

313 
o
 = 0;

314 
key
.
da
 = &
o
;

315 
key
.
size
 = (
db_o_t
);

318 i(
i
 !(
objc
 - 2)) {

319 
	`T_WrgNumArgs
(

, 2, 
objv
,

321 
su
 = 
TCL_ERROR
;

322 
out
;

324 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) {

325 
su
 = 
	`_GUI32
(

, 
objv
[
objc
-2], &
o
);

326 i(
su
 =
TCL_OK
) {

327 
key
.
da
 = &
o
;

328 
key
.
size
 = (
db_o_t
);

330  (
su
);

332 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-2], &
ktmp
,

333 &
key
.
size
, &
key
);

334 i(
t
 != 0) {

335 
su
 = 
	`_RuSup
(

, 
t
,

336 
	`DB_RETOK_DBCPUT
(
t
), "dbcut");

337  (
su
);

339 
key
.
da
 = 
ktmp
;

342 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-1], &
dtmp
,

343 &
da
.
size
, &
da
);

344 
da
.d
dtmp
;

345 i(
t
 != 0) {

346 
su
 = 
	`_RuSup
(

, 
t
,

347 
	`DB_RETOK_DBCPUT
(
t
), "dbcut");

348 
out
;

350 
	`_debug_check
();

351 
t
 = 
dbc
->
	`put
(dbc, &
key
, &
da
, 
ag
);

352 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBCPUT
(ret),

354 i(
t
 == 0 &&

355 (
ag
 =
DB_AFTER
 || fg =
DB_BEFORE
&& 
ty
 =
DB_RECNO
) {

356 
s
 = 
	`T_NewWideIObj
((
T_WideI
)*(
db_o_t
 *)
key
.
da
);

357 
	`T_SObjResu
(

, 
s
);

359 
out
:

360 i(
da
)

361 
	`__os_
(
NULL
, 
dtmp
);

362 i(
key
)

363 
	`__os_
(
NULL
, 
ktmp
);

364  (
su
);

365 
	}
}

371 
	$t_DbcG
(

, 
objc
, 
objv
, 
dbc
, 
ig
)

372 
T_Ip
 *

;

373 
objc
;

374 
T_Obj
 *
CONST
 
objv
[];

375 
DBC
 *
dbc
;

376 
ig
;

378 cڡ *
dbcgts
[] = {

379 #ifde
CONFIG_TEST


406 
NULL


408 
	edbcgts
 {

409 #ifde
CONFIG_TEST


410 
DBCGET_DATA_BUF_SIZE
,

411 
DBCGET_BOTH_RANGE
,

412 
DBCGET_KEY_BUF_SIZE
,

413 
DBCGET_MULTI
,

414 
DBCGET_MULTI_KEY
,

415 
DBCGET_NOLEASE
,

416 
DBCGET_READ_COMMITTED
,

417 
DBCGET_READ_UNCOMMITTED
,

419 
DBCGET_CURRENT
,

420 
DBCGET_FIRST
,

421 
DBCGET_BOTH
,

422 
DBCGET_RECNO
,

423 
DBCGET_JOIN
,

424 
DBCGET_LAST
,

425 
DBCGET_NEXT
,

426 
DBCGET_NEXTDUP
,

427 
DBCGET_NEXTNODUP
,

428 
DBCGET_PART
,

429 
DBCGET_PREV
,

430 
DBCGET_PREVDUP
,

431 
DBCGET_PREVNODUP
,

432 
DBCGET_RMW
,

433 
DBCGET_SET
,

434 
DBCGET_SETRANGE
,

435 
DBCGET_SETRECNO


437 
DB
 *
thisdbp
;

438 
DBT
 
key
, 
da
, 
pda
;

439 
DBTCL_INFO
 *
dbc
, *
db
;

440 
DBTYPE
 
y
, 
ty
;

441 
T_Obj
 **
emv
, *
myobj
, *
i
;

442 *
dtmp
, *
ktmp
;

443 
db_o_t
 
eo
, 
o
;

444 
u_t32_t
 
ag
, 

;

445 
emc
, 
key
, 
da
, 
i
, 
tdex
, 
su
, 
t
;

446 #ifde
CONFIG_TEST


447 
da_buf_size
, 
key_buf_size
;

449 
da_buf_size
 = 
key_buf_size
 = 0;

451 
	`COMPQUIET
(
dtmp
, 
NULL
);

452 
	`COMPQUIET
(
ktmp
, 
NULL
);

454 
su
 = 
TCL_OK
;

455 
ag
 = 0;

456 
key
 = 
da
 = 0;

457 
	`memt
(&
key
, 0, (key));

458 
	`memt
(&
da
, 0, (data));

459 
	`memt
(&
pda
, 0, (
DBT
));

461 i(
objc
 < 2) {

462 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args? ?key?");

463  (
TCL_ERROR
);

470 
i
 = 2;

471 
i
 < 
objc
) {

472 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbcgts
,

473 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

478 i(
	`IS_HELP
(
objv
[
i
]=
TCL_OK
) {

479 
su
 = 
TCL_OK
;

480 
out
;

482 
	`T_RetResu
(

);

485 
i
++;

487 
	#FLAG_CHECK2_STDARG
 \

488 (
DB_RMW
 | 
DB_MULTIPLE
 | 
DB_MULTIPLE_KEY
 | 
DB_IGNORE_LEASE
 | \

489 
DB_READ_UNCOMMITTED
)

	)

491 (
dbcgts
)
tdex
) {

492 #ifde
CONFIG_TEST


493 
DBCGET_DATA_BUF_SIZE
:

494 
su
 =

495 
	`T_GIFromObj
(

, 
objv
[
i
], &
da_buf_size
);

496 i(
su
 !
TCL_OK
)

497 
out
;

498 
i
++;

500 
DBCGET_BOTH_RANGE
:

501 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

502 
ag
 |
DB_GET_BOTH_RANGE
;

504 
DBCGET_KEY_BUF_SIZE
:

505 
su
 =

506 
	`T_GIFromObj
(

, 
objv
[
i
], &
key_buf_size
);

507 i(
su
 !
TCL_OK
)

508 
out
;

509 
i
++;

511 
DBCGET_MULTI
:

512 
ag
 |
DB_MULTIPLE
;

513 
su
 =

514 
	`T_GIFromObj
(

, 
objv
[
i
], &
da_buf_size
);

515 i(
su
 !
TCL_OK
)

516 
out
;

517 
i
++;

519 
DBCGET_MULTI_KEY
:

520 
ag
 |
DB_MULTIPLE_KEY
;

521 
su
 =

522 
	`T_GIFromObj
(

, 
objv
[
i
], &
da_buf_size
);

523 i(
su
 !
TCL_OK
)

524 
out
;

525 
i
++;

527 
DBCGET_NOLEASE
:

528 
ag
 |
DB_IGNORE_LEASE
;

530 
DBCGET_READ_COMMITTED
:

531 
ag
 |
DB_READ_COMMITTED
;

533 
DBCGET_READ_UNCOMMITTED
:

534 
ag
 |
DB_READ_UNCOMMITTED
;

537 
DBCGET_RMW
:

538 
ag
 |
DB_RMW
;

540 
DBCGET_CURRENT
:

541 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

542 
ag
 |
DB_CURRENT
;

544 
DBCGET_FIRST
:

545 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

546 
ag
 |
DB_FIRST
;

548 
DBCGET_LAST
:

549 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

550 
ag
 |
DB_LAST
;

552 
DBCGET_NEXT
:

553 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

554 
ag
 |
DB_NEXT
;

556 
DBCGET_PREV
:

557 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

558 
ag
 |
DB_PREV
;

560 
DBCGET_PREVDUP
:

561 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

562 
ag
 |
DB_PREV_DUP
;

564 
DBCGET_PREVNODUP
:

565 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

566 
ag
 |
DB_PREV_NODUP
;

568 
DBCGET_NEXTNODUP
:

569 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

570 
ag
 |
DB_NEXT_NODUP
;

572 
DBCGET_NEXTDUP
:

573 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

574 
ag
 |
DB_NEXT_DUP
;

576 
DBCGET_BOTH
:

577 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

578 
ag
 |
DB_GET_BOTH
;

580 
DBCGET_RECNO
:

581 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

582 
ag
 |
DB_GET_RECNO
;

584 
DBCGET_JOIN
:

585 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

586 
ag
 |
DB_JOIN_ITEM
;

588 
DBCGET_SET
:

589 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

590 
ag
 |
DB_SET
;

592 
DBCGET_SETRANGE
:

593 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

594 
ag
 |
DB_SET_RANGE
;

596 
DBCGET_SETRECNO
:

597 
	`FLAG_CHECK2
(
ag
, 
FLAG_CHECK2_STDARG
);

598 
ag
 |
DB_SET_RECNO
;

600 
DBCGET_PART
:

601 i(
i
 =
objc
) {

602 
	`T_WrgNumArgs
(

, 2, 
objv
,

604 
su
 = 
TCL_ERROR
;

610 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
++],

611 &
emc
, &
emv
);

612 i(
emc
 != 2) {

613 
	`T_SResu
(

,

614 "Li mu b{offngth}", 
TCL_STATIC
);

615 
su
 = 
TCL_ERROR
;

618 
da
.
ags
 |
DB_DBT_PARTIAL
;

619 
su
 = 
	`_GUI32
(

, 
emv
[0], &
da
.
doff
);

620 i(
su
 !
TCL_OK
)

622 
su
 = 
	`_GUI32
(

, 
emv
[1], &
da
.
dn
);

632 i(
su
 !
TCL_OK
)

635 i(
su
 !
TCL_OK
)

636 
out
;

643 
dbc
 = 
	`_PToInfo
(
dbc
);

644 i(
dbc
 =
NULL
) {

645 
ty
 = 
DB_UNKNOWN
;

646 
y
 = 
DB_UNKNOWN
;

648 
db
 = 
dbc
->
i_
;

649 i(
db
 =
NULL
) {

650 
	`T_SResu
(

, "Cursor withoutarent database",

651 
TCL_STATIC
);

652 
su
 = 
TCL_ERROR
;

653 
out
;

655 
thisdbp
 = 
db
->
i_dbp
;

656 ()
thisdbp
->
	`g_ty
hisdbp, &
ty
);

657 i(
ig
 && 
thisdbp
->
s_imy
 !
NULL
)

658 ()
thisdbp
->

659 
s_imy
->
	`g_ty
(
thisdbp
->s_imy, &
y
);

661 
y
 = 
DB_UNKNOWN
;

669 

 = 
ag
 & 
DB_OPFLAGS_MASK
;

670 

) {

671 
DB_GET_BOTH
:

672 #ifde
CONFIG_TEST


673 
DB_GET_BOTH_RANGE
:

675 i(
i
 !(
objc
 - 2)) {

676 
	`T_WrgNumArgs
(

, 2, 
objv
,

678 
su
 = 
TCL_ERROR
;

679 
out
;

681 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) {

682 
su
 = 
	`_GUI32
(

683 

, 
objv
[
objc
-2], &
o
);

684 i(
su
 =
TCL_OK
) {

685 
key
.
da
 = &
o
;

686 
key
.
size
 = (
db_o_t
);

688 
out
;

695 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-2],

696 &
ktmp
, &
key
.
size
, &
key
);

697 i(
t
 != 0) {

698 
su
 = 
	`_RuSup
(

, 
t
,

699 
	`DB_RETOK_DBCGET
(
t
), "dbc get");

700  (
su
);

702 
key
.
da
 = 
ktmp
;

704 i(
y
 =
DB_RECNO
 ||ty =
DB_QUEUE
) {

705 
su
 = 
	`_GUI32
(

706 

, 
objv
[
objc
-1], &
eo
);

707 i(
su
 =
TCL_OK
) {

708 
da
.d&
eo
;

709 
da
.
size
 = (
db_o_t
);

711 
out
;

713 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-1],

714 &
dtmp
, &
da
.
size
, &
da
);

715 i(
t
 != 0) {

716 
su
 = 
	`_RuSup
(

, 
t
,

717 
	`DB_RETOK_DBCGET
(
t
), "dbc get");

718 
out
;

720 
da
.d
dtmp
;

724 
DB_SET
:

725 
DB_SET_RANGE
:

726 
DB_SET_RECNO
:

727 i(
i
 !(
objc
 - 1)) {

728 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args? key");

729 
su
 = 
TCL_ERROR
;

730 
out
;

732 #ifde
CONFIG_TEST


733 i(
da_buf_size
 != 0) {

734 ()
	`__os_mloc
(

735 
NULL
, (
size_t
)
da_buf_size
, &
da
.data);

736 
da
.
un
 = (
u_t32_t
)
da_buf_size
;

737 
da
.
ags
 |
DB_DBT_USERMEM
;

740 
da
.
ags
 |
DB_DBT_MALLOC
;

741 i(

 =
DB_SET_RECNO
 ||

742 
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) {

743 
su
 = 
	`_GUI32
(

, 
objv
[
objc
 - 1], &
o
);

744 
key
.
da
 = &
o
;

745 
key
.
size
 = (
db_o_t
);

752 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-1],

753 &
ktmp
, &
key
.
size
, &
key
);

754 i(
t
 != 0) {

755 
su
 = 
	`_RuSup
(

, 
t
,

756 
	`DB_RETOK_DBCGET
(
t
), "dbc get");

757  (
su
);

759 
key
.
da
 = 
ktmp
;

763 i(
i
 !
objc
) {

764 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args?");

765 
su
 = 
TCL_ERROR
;

766 
out
;

768 #ifde
CONFIG_TEST


769 i(
key_buf_size
 != 0) {

770 ()
	`__os_mloc
(

771 
NULL
, (
size_t
)
key_buf_size
, &
key
.
da
);

772 
key
.
un
 = (
u_t32_t
)
key_buf_size
;

773 
key
.
ags
 |
DB_DBT_USERMEM
;

776 
key
.
ags
 |
DB_DBT_MALLOC
;

777 #ifde
CONFIG_TEST


778 i(
da_buf_size
 != 0) {

779 ()
	`__os_mloc
(

780 
NULL
, (
size_t
)
da_buf_size
, &
da
.data);

781 
da
.
un
 = (
u_t32_t
)
da_buf_size
;

782 
da
.
ags
 |
DB_DBT_USERMEM
;

785 
da
.
ags
 |
DB_DBT_MALLOC
;

788 
	`_debug_check
();

789 i(
ig
) {

790 
	`F_SET
(&
pda
, 
DB_DBT_MALLOC
);

791 
t
 = 
dbc
->
	`pg
(dbc, &
key
, &
da
, &
pda
, 
ag
);

793 
t
 = 
dbc
->
	`g
(dbc, &
key
, &
da
, 
ag
);

794 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBCGET
(ret), "dbc get");

795 i(
su
 =
TCL_ERROR
)

796 
out
;

798 
i
 = 
	`T_NewLiObj
(0, 
NULL
);

799 i(
t
 != 0)

800 
out1
;

801 i(

 =
DB_GET_RECNO
) {

802 
o
 = *((
db_o_t
 *)
da
.data);

803 
myobj
 = 
	`T_NewWideIObj
((
T_WideI
)
o
);

804 
su
 = 
	`T_LiObjAdEmt
(

, 
i
, 
myobj
);

806 i(
ag
 & (
DB_MULTIPLE
|
DB_MULTIPLE_KEY
))

807 
su
 = 
	`_SMuiLi
(

,

808 
i
, &
key
, &
da
, 
ty
, 
ag
);

809 i((
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) &&

810 
key
.
da
 !
NULL
) {

811 i(
ig
)

812 
su
 = 
	`_S3DBTLi
(

, 
i
, &
key
, 1,

813 &
da
,

814 (
y
 =
DB_RECNO
 ||ty =
DB_QUEUE
),

815 &
pda
);

817 
su
 = 
	`_SLiReoEm
(

, 
i
,

818 *(
db_o_t
 *)
key
.
da
,

819 
da
.da, da.
size
);

821 i(
ig
)

822 
su
 = 
	`_S3DBTLi
(

, 
i
, &
key
, 0,

823 &
da
,

824 (
y
 =
DB_RECNO
 ||ty =
DB_QUEUE
),

825 &
pda
);

827 
su
 = 
	`_SLiEm
(

, 
i
,

828 
key
.
da
, key.
size
, data.data, data.size);

831 
out1
:

832 i(
su
 =
TCL_OK
)

833 
	`T_SObjResu
(

, 
i
);

840 
out
:

841 i(
key
.
da
 !
NULL
 && 
	`F_ISSET
(&key, 
DB_DBT_MALLOC
))

842 
	`__os_u
(
dbc
->
dbp
->
dbv
, 
key
.
da
);

843 i(
key
.
da
 !
NULL
 && 
	`F_ISSET
(&key, 
DB_DBT_USERMEM
))

844 
	`__os_
(
dbc
->
dbp
->
dbv
, 
key
.
da
);

845 i(
da
.d!
NULL
 && 
	`F_ISSET
(&da, 
DB_DBT_MALLOC
))

846 
	`__os_u
(
dbc
->
dbp
->
dbv
, 
da
.data);

847 i(
da
.d!
NULL
 && 
	`F_ISSET
(&da, 
DB_DBT_USERMEM
))

848 
	`__os_
(
dbc
->
dbp
->
dbv
, 
da
.data);

849 i(
pda
.
da
 !
NULL
 && 
	`F_ISSET
(&pda, 
DB_DBT_MALLOC
))

850 
	`__os_u
(
dbc
->
dbp
->
dbv
, 
pda
.
da
);

851 i(
da
)

852 
	`__os_
(
NULL
, 
dtmp
);

853 i(
key
)

854 
	`__os_
(
NULL
, 
ktmp
);

855  (
su
);

857 
	}
}

863 
	$t_DbcDup
(

, 
objc
, 
objv
, 
dbc
)

864 
T_Ip
 *

;

865 
objc
;

866 
T_Obj
 *
CONST
 
objv
[];

867 
DBC
 *
dbc
;

869 cڡ *
dbcdupts
[] = {

871 
NULL


873 
	edbcdupts
 {

874 
DBCDUP_POS


876 
DBC
 *
wdbc
;

877 
DBTCL_INFO
 *
dbc
, *
wdbc
, *
db
;

878 
T_Obj
 *
s
;

879 
u_t32_t
 
ag
;

880 
i
, 
tdex
, 
su
, 
t
;

881 
wme
[
MSG_SIZE
];

883 
su
 = 
TCL_OK
;

884 
ag
 = 0;

885 
s
 = 
NULL
;

887 i(
objc
 < 2) {

888 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args?");

889  (
TCL_ERROR
);

896 
i
 = 2;

897 
i
 < 
objc
) {

898 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
dbcdupts
,

899 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

904 i(
	`IS_HELP
(
objv
[
i
]=
TCL_OK
) {

905 
su
 = 
TCL_OK
;

906 
out
;

908 
	`T_RetResu
(

);

911 
i
++;

912 (
dbcdupts
)
tdex
) {

913 
DBCDUP_POS
:

914 
ag
 = 
DB_POSITION
;

917 i(
su
 !
TCL_OK
)

920 i(
su
 !
TCL_OK
)

921 
out
;

928 
dbc
 = 
	`_PToInfo
(
dbc
);

929 i(
dbc
 =
NULL
) {

930 
	`T_SResu
(

, "Cursor without info structure",

931 
TCL_STATIC
);

932 
su
 = 
TCL_ERROR
;

933 
out
;

935 
db
 = 
dbc
->
i_
;

936 i(
db
 =
NULL
) {

937 
	`T_SResu
(

, "Cursor withoutarent database",

938 
TCL_STATIC
);

939 
su
 = 
TCL_ERROR
;

940 
out
;

947 
	`tf
(
wme
, (newname),

948 "%s.c%d", 
db
->
i_me
, db->
i_dbdbcid
);

949 
wdbc
 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_DBC
);

950 i(
wdbc
 !
NULL
) {

951 
t
 = 
dbc
->
	`dup
(dbc, &
wdbc
, 
ag
);

952 i(
t
 == 0) {

953 
db
->
i_dbdbcid
++;

954 
wdbc
->
i_
 = 
db
;

955 ()
	`T_CeObjCommd
(

, 
wme
,

956 (
T_ObjCmdProc
 *)
dbc_Cmd
,

957 (
ClDa
)
wdbc
, 
NULL
);

958 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

959 
	`_SInfoDa
(
wdbc
, 
wdbc
);

960 
	`T_SObjResu
(

, 
s
);

962 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

964 
	`_DeInfo
(
wdbc
);

967 
	`T_SResu
(

, "Could s ufo", 
TCL_STATIC
);

968 
su
 = 
TCL_ERROR
;

970 
out
:

971  (
su
);

973 
	}
}

	@../tcl/tcl_env.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/lock.h
"

16 
	~"dbc/txn.h
"

17 
	~"dbc/t_db.h
"

22 
_EnvInfoDe
 
__P
((
T_Ip
 *, 
DBTCL_INFO
 *));

23 
v_DbRemove
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

24 
v_DbRame
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

25 
v_GFgs
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

26 
v_GOnFg


27 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

28 
v_GLockDe


29 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

30 
v_GTimeout
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

31 
v_GVbo
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_ENV
 *));

40 
	$v_Cmd
(
Da
, 

, 
objc
, 
objv
)

41 
ClDa
 
Da
;

42 
T_Ip
 *

;

43 
objc
;

44 
T_Obj
 *
CONST
 
objv
[];

46 cڡ *
vcmds
[] = {

47 #ifde
CONFIG_TEST


133 
NULL


135 
	evcmds
 {

136 #ifde
CONFIG_TEST


137 
ENVATTR
,

138 
ENVERRFILE
,

139 
ENVERRPFX
,

140 
ENVEVENT
,

141 
ENVIDRESET
,

142 
ENVLKDETECT
,

143 
ENVLKID
,

144 
ENVLKFREEID
,

145 
ENVLKSETID
,

146 
ENVLKGET
,

147 
ENVLKSTAT
,

148 
ENVLKTIMEOUT
,

149 
ENVLKVEC
,

150 
ENVLOGARCH
,

151 
ENVLOGCMP
,

152 
ENVLOGCURSOR
,

153 
ENVLOGFILE
,

154 
ENVLOGFLUSH
,

155 
ENVLOGGET
,

156 
ENVLOGPUT
,

157 
ENVLOGSTAT
,

158 
ENVLSNRESET
,

159 
ENVMP
,

160 
ENVMPSTAT
,

161 
ENVMPSYNC
,

162 
ENVTRICKLE
,

163 
ENVREPCONFIG
,

164 
ENVREPELECT
,

165 
ENVREPFLUSH
,

166 
ENVREPGETCONFIG
,

167 
ENVREPLEASE
,

168 
ENVREPLIMIT
,

169 
ENVREPPROCMESS
,

170 
ENVREPREQUEST
,

171 
ENVREPSTART
,

172 
ENVREPSTAT
,

173 
ENVREPSYNC
,

174 
ENVREPTRANSPORT
,

175 
ENVREPMGR
,

176 
ENVREPMGRSTAT
,

177 
ENVRPCID
,

178 
ENVSETFLAGS
,

179 
ENVTEST
,

180 
ENVTXNSETID
,

181 
ENVTXNRECOVER
,

182 
ENVTXNSTAT
,

183 
ENVTXNTIMEOUT
,

184 
ENVVERB
,

186 
ENVCDSGROUP
,

187 
ENVCLOSE
,

188 
ENVDBREMOVE
,

189 
ENVDBRENAME
,

190 
ENVGETCACHESIZE
,

191 
ENVGETCACHEMAX
,

192 
ENVGETDATADIRS
,

193 
ENVGETENCRYPTFLAGS
,

194 
ENVGETERRPFX
,

195 
ENVGETFLAGS
,

196 
ENVGETHOME
,

197 
ENVGETLGBSIZE
,

198 
ENVGETLGDIR
,

199 
ENVGETLGFILEMODE
,

200 
ENVGETLGMAX
,

201 
ENVGETLGREGIONMAX
,

202 
ENVGETLKDETECT
,

203 
ENVGETLKMAXLOCKERS
,

204 
ENVGETLKMAXLOCKS
,

205 
ENVGETLKMAXOBJECTS
,

206 
ENVGETMPMAXOPENFD
,

207 
ENVGETMPMAXWRITE
,

208 
ENVGETMPMMAPSIZE
,

209 
ENVGETOPENFLAG
,

210 
ENVGETREPLIMIT
,

211 
ENVGETSHMKEY
,

212 
ENVGETTASSPINS
,

213 
ENVGETTIMEOUT
,

214 
ENVGETTMPDIR
,

215 
ENVGETTXMAX
,

216 
ENVGETTXTIMESTAMP
,

217 
ENVGETVERBOSE
,

218 
ENVRESIZECACHE
,

219 
ENVSETDATADIR
,

220 
ENVTXN
,

221 
ENVTXNCKP


223 
DBTCL_INFO
 *
v
;

224 
DB_ENV
 *
dbv
;

225 
T_Obj
 **
liobjv
, *
myobjv
[3], *
s
;

226 
db_timeout_t
 
timeout
;

227 
size_t
 
size
;

228 
time_t
 
timev
;

229 
u_t32_t
 
bys
, 
gbys
, 
vue
;

230 
shm_key
;

231 
cmddex
, 
i
, 
tvue
, 
liobjc
, 
nche
, 
su
, 
t
;

232 cڡ *
rv
, **
ds
;

233 *
rg
, 
wme
[
MSG_SIZE
];

234 #ifde
CONFIG_TEST


235 
DBTCL_INFO
 *
logc
;

236 
DB_LOGC
 *
logc
;

237 
u_t32_t
 
lockid
;

238 
wv
, 
hv
;

241 
	`T_RetResu
(

);

242 
dbv
 = (
DB_ENV
 *)
Da
;

243 
v
 = 
	`_PToInfo
((*)
dbv
);

244 
su
 = 
TCL_OK
;

245 
	`memt
(
wme
, 0, 
MSG_SIZE
);

247 i(
objc
 <= 1) {

248 
	`T_WrgNumArgs
(

, 1, 
objv
, "command cmdargs");

249  (
TCL_ERROR
);

251 i(
dbv
 =
NULL
) {

252 
	`T_SResu
(

, "NULLnvor", 
TCL_STATIC
);

253  (
TCL_ERROR
);

255 i(
v
 =
NULL
) {

256 
	`T_SResu
(

, "NULLnv infpor", 
TCL_STATIC
);

257  (
TCL_ERROR
);

264 i(
	`T_GIndexFromObj
(

, 
objv
[1], 
vcmds
, "command",

265 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

266  (
	`IS_HELP
(
objv
[1]));

267 
s
 = 
NULL
;

268 (
vcmds
)
cmddex
) {

269 #ifde
CONFIG_TEST


270 
ENVEVENT
:

274 i(
objc
 != 3) {

275 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

276  (
TCL_ERROR
);

278 
su
 = 
	`t_EvtNify
(

, 
dbv
, 
objv
[2], 
v
);

280 
ENVIDRESET
:

281 
su
 = 
	`t_EnvIdRet
(

, 
objc
, 
objv
, 
dbv
);

283 
ENVLSNRESET
:

284 
su
 = 
	`t_EnvLRet
(

, 
objc
, 
objv
, 
dbv
);

286 
ENVLKDETECT
:

287 
su
 = 
	`t_LockDe
(

, 
objc
, 
objv
, 
dbv
);

289 
ENVLKSTAT
:

290 
su
 = 
	`t_LockSt
(

, 
objc
, 
objv
, 
dbv
);

292 
ENVLKTIMEOUT
:

293 
su
 = 
	`t_LockTimeout
(

, 
objc
, 
objv
, 
dbv
);

295 
ENVLKID
:

299 i(
objc
 > 2) {

300 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

301  (
TCL_ERROR
);

303 
	`_debug_check
();

304 
t
 = 
dbv
->
	`lock_id
(dbv, &
lockid
);

305 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

307 i(
su
 =
TCL_OK
)

308 
s
 = 
	`T_NewWideIObj
((
T_WideI
)
lockid
);

310 
ENVLKFREEID
:

311 i(
objc
 != 3) {

312 
	`T_WrgNumArgs
(

, 3, 
objv
, 
NULL
);

313  (
TCL_ERROR
);

315 
su
 = 
	`T_GLgFromObj
(

, 
objv
[2], &
wv
);

316 i(
su
 !
TCL_OK
)

317  (
su
);

318 
t
 = 
dbv
->
	`lock_id_
(dbv, (
u_t32_t
)
wv
);

319 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

322 
ENVLKSETID
:

323 i(
objc
 != 4) {

324 
	`T_WrgNumArgs
(

, 4, 
objv
, "current max");

325  (
TCL_ERROR
);

327 
su
 = 
	`T_GLgFromObj
(

, 
objv
[2], &
wv
);

328 i(
su
 !
TCL_OK
)

329  (
su
);

330 
su
 = 
	`T_GLgFromObj
(

, 
objv
[3], &
hv
);

331 i(
su
 !
TCL_OK
)

332  (
su
);

333 
t
 = 
	`__lock_id_t
(
dbv
,

334 (
u_t32_t
)
wv
, (u_t32_t)
hv
);

335 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

338 
ENVLKGET
:

339 
su
 = 
	`t_LockG
(

, 
objc
, 
objv
, 
dbv
);

341 
ENVLKVEC
:

342 
su
 = 
	`t_LockVec
(

, 
objc
, 
objv
, 
dbv
);

344 
ENVLOGARCH
:

345 
su
 = 
	`t_LogArchive
(

, 
objc
, 
objv
, 
dbv
);

347 
ENVLOGCMP
:

348 
su
 = 
	`t_LogCom
(

, 
objc
, 
objv
);

350 
ENVLOGCURSOR
:

351 
	`tf
(
wme
, (newname),

352 "%s.logc%d", 
v
->
i_me
,nv->
i_vlogcid
);

353 
logc
 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_LOGC
);

354 i(
logc
 !
NULL
) {

355 
t
 = 
dbv
->
	`log_curs
(dbv, &
logc
, 0);

356 i(
t
 == 0) {

357 
su
 = 
TCL_OK
;

358 
v
->
i_vlogcid
++;

365 ()
	`T_CeObjCommd
(

, 
wme
,

366 (
T_ObjCmdProc
 *)
logc_Cmd
,

367 (
ClDa
)
logc
, 
NULL
);

368 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

369 
	`_SInfoDa
(
logc
, 
logc
);

371 
	`_DeInfo
(
logc
);

372 
su
 = 
	`_ESup
(

, 
t
, "log cursor");

375 
	`T_SResu
(

,

376 "Could s ufo", 
TCL_STATIC
);

377 
su
 = 
TCL_ERROR
;

380 
ENVLOGFILE
:

381 
su
 = 
	`t_LogFe
(

, 
objc
, 
objv
, 
dbv
);

383 
ENVLOGFLUSH
:

384 
su
 = 
	`t_LogFlush
(

, 
objc
, 
objv
, 
dbv
);

386 
ENVLOGGET
:

387 
su
 = 
	`t_LogG
(

, 
objc
, 
objv
, 
dbv
);

389 
ENVLOGPUT
:

390 
su
 = 
	`t_LogPut
(

, 
objc
, 
objv
, 
dbv
);

392 
ENVLOGSTAT
:

393 
su
 = 
	`t_LogSt
(

, 
objc
, 
objv
, 
dbv
);

395 
ENVMPSTAT
:

396 
su
 = 
	`t_MpSt
(

, 
objc
, 
objv
, 
dbv
);

398 
ENVMPSYNC
:

399 
su
 = 
	`t_MpSync
(

, 
objc
, 
objv
, 
dbv
);

401 
ENVTRICKLE
:

402 
su
 = 
	`t_MpTrick
(

, 
objc
, 
objv
, 
dbv
);

404 
ENVMP
:

405 
su
 = 
	`t_Mp
(

, 
objc
, 
objv
, 
dbv
, 
v
);

407 
ENVREPCONFIG
:

411 i(
objc
 != 3) {

412 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

413  (
TCL_ERROR
);

415 
su
 = 
	`t_RCfig
(

, 
dbv
, 
objv
[2]);

417 
ENVREPELECT
:

418 
su
 = 
	`t_RE
(

, 
objc
, 
objv
, 
dbv
);

420 
ENVREPFLUSH
:

421 
su
 = 
	`t_RFlush
(

, 
objc
, 
objv
, 
dbv
);

423 
ENVREPGETCONFIG
:

427 i(
objc
 != 3) {

428 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

429  (
TCL_ERROR
);

431 
su
 = 
	`t_RGCfig
(

, 
dbv
, 
objv
[2]);

433 
ENVREPLEASE
:

434 i(
objc
 != 3) {

435 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

436  (
TCL_ERROR
);

438 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[2],

439 &
liobjc
, &
liobjv
);

440 i(
su
 =
TCL_OK
)

441 
su
 = 
	`t_RL
(

,

442 
liobjc
, 
liobjv
, 
dbv
);

444 
ENVREPLIMIT
:

445 
su
 = 
	`t_RLim
(

, 
objc
, 
objv
, 
dbv
);

447 
ENVREPPROCMESS
:

448 
su
 = 
	`t_RProssMesge
(

, 
objc
, 
objv
, 
dbv
);

450 
ENVREPREQUEST
:

451 
su
 = 
	`t_RReque
(

, 
objc
, 
objv
, 
dbv
);

453 
ENVREPSTART
:

454 
su
 = 
	`t_RS
(

, 
objc
, 
objv
, 
dbv
);

456 
ENVREPSTAT
:

457 
su
 = 
	`t_RSt
(

, 
objc
, 
objv
, 
dbv
);

459 
ENVREPSYNC
:

460 
su
 = 
	`t_RSync
(

, 
objc
, 
objv
, 
dbv
);

462 
ENVREPTRANSPORT
:

463 i(
objc
 != 3) {

464 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

465  (
TCL_ERROR
);

467 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[2],

468 &
liobjc
, &
liobjv
);

469 i(
su
 =
TCL_OK
)

470 
su
 = 
	`t_RTnt
(

,

471 
liobjc
, 
liobjv
, 
dbv
, 
v
);

473 
ENVREPMGR
:

474 
su
 = 
	`t_RMgr
(

, 
objc
, 
objv
, 
dbv
);

476 
ENVREPMGRSTAT
:

477 
su
 = 
	`t_RMgrSt
(

, 
objc
, 
objv
, 
dbv
);

479 
ENVRPCID
:

483 i(
objc
 > 2) {

484 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

485  (
TCL_ERROR
);

491 
s
 = 
	`T_NewLgObj
(()
dbv
->
_id
);

493 
ENVTXNSETID
:

494 i(
objc
 != 4) {

495 
	`T_WrgNumArgs
(

, 4, 
objv
, "current max");

496  (
TCL_ERROR
);

498 
su
 = 
	`T_GLgFromObj
(

, 
objv
[2], &
wv
);

499 i(
su
 !
TCL_OK
)

500  (
su
);

501 
su
 = 
	`T_GLgFromObj
(

, 
objv
[3], &
hv
);

502 i(
su
 !
TCL_OK
)

503  (
su
);

504 
t
 = 
	`__txn_id_t
(
dbv
,

505 (
u_t32_t
)
wv
, (u_t32_t)
hv
);

506 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

509 
ENVTXNRECOVER
:

510 
su
 = 
	`t_TxnRecov
(

, 
objc
, 
objv
, 
dbv
, 
v
);

512 
ENVTXNSTAT
:

513 
su
 = 
	`t_TxnSt
(

, 
objc
, 
objv
, 
dbv
);

515 
ENVTXNTIMEOUT
:

516 
su
 = 
	`t_TxnTimeout
(

, 
objc
, 
objv
, 
dbv
);

518 
ENVATTR
:

519 
su
 = 
	`t_EnvAr
(

, 
objc
, 
objv
, 
dbv
);

521 
ENVERRFILE
:

525 i(
objc
 != 3) {

526 
	`T_WrgNumArgs
(

, 2, 
objv
, "errfile");

527  (
TCL_ERROR
);

529 
rg
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

530 
	`t_EnvSEfe
(

, 
dbv
, 
v
, 
rg
);

531 
su
 = 
TCL_OK
;

533 
ENVERRPFX
:

537 i(
objc
 != 3) {

538 
	`T_WrgNumArgs
(

, 2, 
objv
, "pfx");

539  (
TCL_ERROR
);

541 
rg
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

542 
su
 = 
	`t_EnvSEpfx
(

, 
dbv
, 
v
, 
rg
);

544 
ENVSETFLAGS
:

548 i(
objc
 != 4) {

549 
	`T_WrgNumArgs
(

, 2, 
objv
, "which on|off");

550  (
TCL_ERROR
);

552 
su
 = 
	`t_EnvSFgs
(

, 
dbv
, 
objv
[2], objv[3]);

554 
ENVTEST
:

555 
su
 = 
	`t_EnvTe
(

, 
objc
, 
objv
, 
dbv
);

557 
ENVVERB
:

561 i(
objc
 != 4) {

562 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

563  (
TCL_ERROR
);

565 
su
 = 
	`t_EnvVbo
(

, 
dbv
, 
objv
[2], objv[3]);

568 
ENVCDSGROUP
:

569 
su
 = 
	`t_CDSGroup
(

, 
objc
, 
objv
, 
dbv
, 
v
);

571 
ENVCLOSE
:

575 i(
objc
 > 2) {

576 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

577  (
TCL_ERROR
);

587 
	`_debug_check
();

588 
t
 = 
dbv
->
	`o
(dbenv, 0);

589 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

591 
	`_EnvInfoDe
(

, 
v
);

592 
v
 = 
NULL
;

594 
ENVDBREMOVE
:

595 
su
 = 
	`v_DbRemove
(

, 
objc
, 
objv
, 
dbv
);

597 
ENVDBRENAME
:

598 
su
 = 
	`v_DbRame
(

, 
objc
, 
objv
, 
dbv
);

600 
ENVGETCACHESIZE
:

601 i(
objc
 != 2) {

602 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

603  (
TCL_ERROR
);

605 
t
 = 
dbv
->
	`g_chesize
(dbv, &
gbys
, &
bys
, &
nche
);

606 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

607 "v g_chesize")=
TCL_OK
) {

608 
myobjv
[0] = 
	`T_NewLgObj
(()
gbys
);

609 
myobjv
[1] = 
	`T_NewLgObj
(()
bys
);

610 
myobjv
[2] = 
	`T_NewLgObj
(()
nche
);

611 
s
 = 
	`T_NewLiObj
(3, 
myobjv
);

614 
ENVGETCACHEMAX
:

615 i(
objc
 != 2) {

616 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

617  (
TCL_ERROR
);

619 
t
 = 
dbv
->
	`g_che_max
(dbv, &
gbys
, &
bys
);

620 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

621 "v g_che_max")=
TCL_OK
) {

622 
myobjv
[0] = 
	`T_NewLgObj
(()
gbys
);

623 
myobjv
[1] = 
	`T_NewLgObj
(()
bys
);

624 
s
 = 
	`T_NewLiObj
(2, 
myobjv
);

627 
ENVGETDATADIRS
:

628 i(
objc
 != 2) {

629 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

630  (
TCL_ERROR
);

632 
t
 = 
dbv
->
	`g_da_ds
(dbv, &
ds
);

633 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

634 "v g_da_ds")=
TCL_OK
) {

635 
s
 = 
	`T_NewLiObj
(0, 
NULL
);

636 
i
 = 0; 
su
 =
TCL_OK
 && 
ds
[i] !
NULL
; i++)

637 
su
 = 
	`T_LiObjAdEmt
(

, 
s
,

638 
	`NewSgObj
(
ds
[
i
], 
	`
(dirs[i])));

641 
ENVGETENCRYPTFLAGS
:

642 
su
 = 
	`t_EnvGEnyFgs
(

, 
objc
, 
objv
, 
dbv
);

644 
ENVGETERRPFX
:

645 i(
objc
 != 2) {

646 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

647  (
TCL_ERROR
);

649 
dbv
->
	`g_fx
(dbv, &
rv
);

650 
s
 = 
	`NewSgObj
(
rv
, 
	`
(strval));

652 
ENVGETFLAGS
:

653 
su
 = 
	`v_GFgs
(

, 
objc
, 
objv
, 
dbv
);

655 
ENVGETHOME
:

656 i(
objc
 != 2) {

657 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

658  (
TCL_ERROR
);

660 
t
 = 
dbv
->
	`g_home
(dbv, &
rv
);

661 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

662 "v g_home")=
TCL_OK
)

663 
s
 = 
	`NewSgObj
(
rv
, 
	`
(strval));

665 
ENVGETLGBSIZE
:

666 i(
objc
 != 2) {

667 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

668  (
TCL_ERROR
);

670 
t
 = 
dbv
->
	`g_lg_bsize
(dbv, &
vue
);

671 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

672 "v g_lg_bsize")=
TCL_OK
)

673 
s
 = 
	`T_NewLgObj
(()
vue
);

675 
ENVGETLGDIR
:

676 i(
objc
 != 2) {

677 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

678  (
TCL_ERROR
);

680 
t
 = 
dbv
->
	`g_lg_d
(dbv, &
rv
);

681 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

682 "v g_lg_d")=
TCL_OK
)

683 
s
 = 
	`NewSgObj
(
rv
, 
	`
(strval));

685 
ENVGETLGFILEMODE
:

686 i(
objc
 != 2) {

687 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

688  (
TCL_ERROR
);

690 
t
 = 
dbv
->
	`g_lg_femode
(dbv, &
tvue
);

691 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

692 "v g_lg_femode")=
TCL_OK
)

693 
s
 = 
	`T_NewLgObj
(()
tvue
);

695 
ENVGETLGMAX
:

696 i(
objc
 != 2) {

697 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

698  (
TCL_ERROR
);

700 
t
 = 
dbv
->
	`g_lg_max
(dbv, &
vue
);

701 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

702 "v g_lg_max")=
TCL_OK
)

703 
s
 = 
	`T_NewLgObj
(()
vue
);

705 
ENVGETLGREGIONMAX
:

706 i(
objc
 != 2) {

707 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

708  (
TCL_ERROR
);

710 
t
 = 
dbv
->
	`g_lg_gimax
(dbv, &
vue
);

711 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

712 "v g_lg_gimax")=
TCL_OK
)

713 
s
 = 
	`T_NewLgObj
(()
vue
);

715 
ENVGETLKDETECT
:

716 
su
 = 
	`v_GLockDe
(

, 
objc
, 
objv
, 
dbv
);

718 
ENVGETLKMAXLOCKERS
:

719 i(
objc
 != 2) {

720 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

721  (
TCL_ERROR
);

723 
t
 = 
dbv
->
	`g_lk_max_locks
(dbv, &
vue
);

724 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

725 "v g_lk_max_locks")=
TCL_OK
)

726 
s
 = 
	`T_NewLgObj
(()
vue
);

728 
ENVGETLKMAXLOCKS
:

729 i(
objc
 != 2) {

730 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

731  (
TCL_ERROR
);

733 
t
 = 
dbv
->
	`g_lk_max_locks
(dbv, &
vue
);

734 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

735 "v g_lk_max_locks")=
TCL_OK
)

736 
s
 = 
	`T_NewLgObj
(()
vue
);

738 
ENVGETLKMAXOBJECTS
:

739 i(
objc
 != 2) {

740 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

741  (
TCL_ERROR
);

743 
t
 = 
dbv
->
	`g_lk_max_objes
(dbv, &
vue
);

744 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

745 "v g_lk_max_objes")=
TCL_OK
)

746 
s
 = 
	`T_NewLgObj
(()
vue
);

748 
ENVGETMPMAXOPENFD
:

749 i(
objc
 != 2) {

750 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

751  (
TCL_ERROR
);

753 
t
 = 
dbv
->
	`g_mp_max_ݒfd
(dbv, &
tvue
);

754 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

755 "v g_mp_max_ݒfd")=
TCL_OK
)

756 
s
 = 
	`T_NewIObj
(
tvue
);

758 
ENVGETMPMAXWRITE
:

759 i(
objc
 != 2) {

760 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

761  (
TCL_ERROR
);

763 
t
 = 
dbv
->
	`g_mp_max_wre
(dbv, &
tvue
, &
timeout
);

764 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

765 "v g_mp_max_wre")=
TCL_OK
) {

766 
myobjv
[0] = 
	`T_NewIObj
(
tvue
);

767 
myobjv
[1] = 
	`T_NewIObj
(()
timeout
);

768 
s
 = 
	`T_NewLiObj
(2, 
myobjv
);

771 
ENVGETMPMMAPSIZE
:

772 i(
objc
 != 2) {

773 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

774  (
TCL_ERROR
);

776 
t
 = 
dbv
->
	`g_mp_mmsize
(dbv, &
size
);

777 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

778 "v g_mp_mmsize")=
TCL_OK
)

779 
s
 = 
	`T_NewLgObj
(()
size
);

781 
ENVGETOPENFLAG
:

782 
su
 = 
	`v_GOnFg
(

, 
objc
, 
objv
, 
dbv
);

784 
ENVGETREPLIMIT
:

785 i(
objc
 != 2) {

786 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

787  (
TCL_ERROR
);

789 
t
 = 
dbv
->
	`p_g_lim
(dbv, &
gbys
, &
bys
);

790 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

791 "v_g_lim")=
TCL_OK
) {

792 
myobjv
[0] = 
	`T_NewLgObj
(()
gbys
);

793 
myobjv
[1] = 
	`T_NewLgObj
(()
bys
);

794 
s
 = 
	`T_NewLiObj
(2, 
myobjv
);

797 
ENVGETSHMKEY
:

798 i(
objc
 != 2) {

799 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

800  (
TCL_ERROR
);

802 
t
 = 
dbv
->
	`g_shm_key
(dbv, &
shm_key
);

803 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

804 "v shm_key")=
TCL_OK
)

805 
s
 = 
	`T_NewLgObj
(
shm_key
);

807 
ENVGETTASSPINS
:

808 i(
objc
 != 2) {

809 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

810  (
TCL_ERROR
);

812 
t
 = 
dbv
->
	`mux_g_s_s
(dbv, &
vue
);

813 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

814 "v g_s_s")=
TCL_OK
)

815 
s
 = 
	`T_NewLgObj
(()
vue
);

817 
ENVGETTIMEOUT
:

818 
su
 = 
	`v_GTimeout
(

, 
objc
, 
objv
, 
dbv
);

820 
ENVGETTMPDIR
:

821 i(
objc
 != 2) {

822 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

823  (
TCL_ERROR
);

825 
t
 = 
dbv
->
	`g_tmp_d
(dbv, &
rv
);

826 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

827 "v g_tmp_d")=
TCL_OK
)

828 
s
 = 
	`NewSgObj
(
rv
, 
	`
(strval));

830 
ENVGETTXMAX
:

831 i(
objc
 != 2) {

832 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

833  (
TCL_ERROR
);

835 
t
 = 
dbv
->
	`g_tx_max
(dbv, &
vue
);

836 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

837 "v g_tx_max")=
TCL_OK
)

838 
s
 = 
	`T_NewLgObj
(()
vue
);

840 
ENVGETTXTIMESTAMP
:

841 i(
objc
 != 2) {

842 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

843  (
TCL_ERROR
);

845 
t
 = 
dbv
->
	`g_tx_timeamp
(dbv, &
timev
);

846 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

847 "v g_tx_timeamp")=
TCL_OK
)

848 
s
 = 
	`T_NewLgObj
(()
timev
);

850 
ENVGETVERBOSE
:

851 
su
 = 
	`v_GVbo
(

, 
objc
, 
objv
, 
dbv
);

853 
ENVRESIZECACHE
:

854 i((
su
 = 
	`T_LiObjGEmts
(

855 

, 
objv
[2], &
liobjc
, &
liobjv
)!
TCL_OK
)

857 i(
objc
 !3 || 
liobjc
 != 2) {

858 
	`T_WrgNumArgs
(

, 2, 
objv
,

860 
su
 = 
TCL_ERROR
;

863 
su
 = 
	`_GUI32
(

, 
liobjv
[0], &
gbys
);

864 i(
su
 !
TCL_OK
)

866 
su
 = 
	`_GUI32
(

, 
liobjv
[1], &
bys
);

867 i(
su
 !
TCL_OK
)

869 
t
 = 
dbv
->
	`t_chesize
(dbv, 
gbys
, 
bys
, 0);

870 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

873 
ENVSETDATADIR
:

877 i(
objc
 != 3) {

878 
	`T_WrgNumArgs
(

, 2, 
objv
, "pfx");

879  (
TCL_ERROR
);

881 
rg
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

882 
t
 = 
dbv
->
	`t_da_d
(dbv, 
rg
);

883  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

885 
ENVTXN
:

886 
su
 = 
	`t_Txn
(

, 
objc
, 
objv
, 
dbv
, 
v
);

888 
ENVTXNCKP
:

889 
su
 = 
	`t_TxnCheckpot
(

, 
objc
, 
objv
, 
dbv
);

896 i(
su
 =
TCL_OK
 && 
s
)

897 
	`T_SObjResu
(

, 
s
);

898  (
su
);

899 
	}
}

908 
	$t_EnvRemove
(

, 
objc
, 
objv
, 
dbv
, 
v
)

909 
T_Ip
 *

;

910 
objc
;

911 
T_Obj
 *
CONST
 
objv
[];

912 
DB_ENV
 *
dbv
;

913 
DBTCL_INFO
 *
v
;

915 cڡ *
vmts
[] = {

916 #ifde
CONFIG_TEST


929 
NULL


931 
	evmts
 {

932 #ifde
CONFIG_TEST


933 
ENVREM_OVERWRITE
,

934 
ENVREM_SERVER
,

936 
ENVREM_DATADIR
,

937 
ENVREM_ENCRYPT_AES
,

938 
ENVREM_ENCRYPT_ANY
,

939 
ENVREM_FORCE
,

940 
ENVREM_HOME
,

941 
ENVREM_LOGDIR
,

942 
ENVREM_TMPDIR
,

943 
ENVREM_USE_ENVIRON
,

944 
ENVREM_USE_ENVIRON_ROOT


946 
DB_ENV
 *
e
;

947 
u_t32_t
 
cag
, 
c_ag
, 
ag
, 
fag
, 
sag
;

948 
i
, 
tdex
, 
su
, 
t
;

949 *
dad
, *
home
, *
logd
, *
sswd
, *
rv
, *
tmpd
;

951 
su
 = 
TCL_OK
;

952 
cag
 = 
ag
 = 
fag
 = 
sag
 = 0;

953 
home
 = 
NULL
;

954 
sswd
 = 
NULL
;

955 
dad
 = 
logd
 = 
tmpd
 = 
NULL
;

956 
rv
 = 
NULL
;

957 
c_ag
 = 0;

959 i(
objc
 < 2) {

960 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args?");

961  (
TCL_ERROR
);

964 
i
 = 2;

965 
i
 < 
objc
) {

966 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
vmts
, "option",

967 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

968 
su
 = 
	`IS_HELP
(
objv
[
i
]);

969 
r
;

971 
i
++;

972 (
vmts
)
tdex
) {

973 #ifde
CONFIG_TEST


974 
ENVREM_SERVER
:

976 i(
i
 >
objc
) {

977 
	`T_WrgNumArgs
(

, 2, 
objv
,

979 
su
 = 
TCL_ERROR
;

982 
rv
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

983 
cag
 = 
DB_RPCCLIENT
;

986 
ENVREM_ENCRYPT_AES
:

988 i(
i
 >
objc
) {

989 
	`T_WrgNumArgs
(

, 2, 
objv
,

991 
su
 = 
TCL_ERROR
;

994 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

995 
c_ag
 = 
DB_ENCRYPT_AES
;

997 
ENVREM_ENCRYPT_ANY
:

999 i(
i
 >
objc
) {

1000 
	`T_WrgNumArgs
(

, 2, 
objv
,

1002 
su
 = 
TCL_ERROR
;

1005 
sswd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1006 
c_ag
 = 0;

1008 
ENVREM_FORCE
:

1009 
fag
 |
DB_FORCE
;

1011 
ENVREM_HOME
:

1013 i(
i
 >
objc
) {

1014 
	`T_WrgNumArgs
(

, 2, 
objv
,

1016 
su
 = 
TCL_ERROR
;

1019 
home
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1021 #ifde
CONFIG_TEST


1022 
ENVREM_OVERWRITE
:

1023 
sag
 |
DB_OVERWRITE
;

1026 
ENVREM_USE_ENVIRON
:

1027 
ag
 |
DB_USE_ENVIRON
;

1029 
ENVREM_USE_ENVIRON_ROOT
:

1030 
ag
 |
DB_USE_ENVIRON_ROOT
;

1032 
ENVREM_DATADIR
:

1033 i(
i
 >
objc
) {

1034 
	`T_WrgNumArgs
(

, 2, 
objv
,

1036 
su
 = 
TCL_ERROR
;

1039 
dad
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1041 
ENVREM_LOGDIR
:

1042 i(
i
 >
objc
) {

1043 
	`T_WrgNumArgs
(

, 2, 
objv
,

1045 
su
 = 
TCL_ERROR
;

1048 
logd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1050 
ENVREM_TMPDIR
:

1051 i(
i
 >
objc
) {

1052 
	`T_WrgNumArgs
(

, 2, 
objv
,

1054 
su
 = 
TCL_ERROR
;

1057 
tmpd
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1064 i(
su
 !
TCL_OK
)

1065 
r
;

1072 i(
dbv
 =
NULL
) {

1073 i((
t
 = 
	`db_v_
(&
e
, 
cag
)) != 0) {

1074 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1076 
r
;

1078 i(
rv
 !
NULL
) {

1079 
	`_debug_check
();

1080 
t
 = 
e
->
	`t_c_rv
, 
NULL
, 
rv
, 0, 0, 0);

1081 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1083 i(
su
 !
TCL_OK
)

1084 
r
;

1086 i(
dad
 !
NULL
) {

1087 
	`_debug_check
();

1088 
t
 = 
e
->
	`t_da_d
, 
dad
);

1089 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1091 i(
su
 !
TCL_OK
)

1092 
r
;

1094 i(
logd
 !
NULL
) {

1095 
	`_debug_check
();

1096 
t
 = 
e
->
	`t_lg_d
, 
logd
);

1097 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1099 i(
su
 !
TCL_OK
)

1100 
r
;

1102 i(
tmpd
 !
NULL
) {

1103 
	`_debug_check
();

1104 
t
 = 
e
->
	`t_tmp_d
, 
tmpd
);

1105 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1107 i(
su
 !
TCL_OK
)

1108 
r
;

1110 i(
sswd
 !
NULL
) {

1111 
t
 = 
e
->
	`t_y
, 
sswd
, 
c_ag
);

1112 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1115 i(
sag
 !0 && (
t
 = 
e
->
	`t_ags
(e, sflag, 1)) != 0) {

1116 
	`_debug_check
();

1117 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1119 i(
su
 !
TCL_OK
)

1120 
r
;

1122 
e
->
	`t_fx
(e, "EnvRemove");

1123 
e
->
	`t_r
, 
_EFunc
);

1130 
	`_EnvInfoDe
(

, 
v
);

1131 
v
 = 
NULL
;

1132 
e
 = 
dbv
;

1135 
ag
 |
fag
;

1140 
	`_debug_check
();

1141 
t
 = 
e
->
	`move
, 
home
, 
ag
);

1142 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1144 
r
:

1145  (
su
);

1146 
	}
}

1149 
	$_EnvInfoDe
(

, 
v
)

1150 
T_Ip
 *

;

1151 
DBTCL_INFO
 *
v
;

1153 
DBTCL_INFO
 *
x
, *
p
;

1163 
p
 = 
	`LIST_FIRST
(&
__db_fohd
); !
NULL
; = 
x
) {

1175 i(
p
->
i_
 =
v
) {

1176 
p
->
i_ty
) {

1177 
I_TXN
:

1178 
	`_TxnInfoDe
(

, 
p
);

1180 
I_MP
:

1181 
	`_MpInfoDe
(

, 
p
);

1183 
I_DB
:

1184 
I_DBC
:

1185 
I_ENV
:

1186 
I_LOCK
:

1187 
I_LOGC
:

1188 
I_NDBM
:

1189 
I_PG
:

1190 
I_SEQ
:

1191 
	`T_SResu
(

,

1193 
TCL_STATIC
);

1196 
x
 = 
	`LIST_NEXT
(
p
, 
s
);

1197 ()
	`T_DeCommd
(

, 
p
->
i_me
);

1198 
	`_DeInfo
(
p
);

1200 
x
 = 
	`LIST_NEXT
(
p
, 
s
);

1202 ()
	`T_DeCommd
(

, 
v
->
i_me
);

1203 
	`_DeInfo
(
v
);

1204 
	}
}

1206 #ifde
CONFIG_TEST


1215 
	$t_EnvIdRet
(

, 
objc
, 
objv
, 
dbv
)

1216 
T_Ip
 *

;

1217 
objc
;

1218 
T_Obj
 * 
CONST
* 
objv
;

1219 
DB_ENV
 *
dbv
;

1221 cڡ *
idwhich
[] = {

1223 
NULL


1225 
	eidwhich
 {

1226 
IDENCRYPT


1228 
c
, 
i
, 
su
, 
t
;

1229 
u_t32_t
 
ags
;

1230 *
fe
;

1232 
su
 = 
TCL_OK
;

1233 
ags
 = 0;

1234 
i
 = 2;

1235 
	`T_SResu
(

, "0", 
TCL_STATIC
);

1236 i(
objc
 < 3) {

1237 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-encrypt? filename");

1238  (
TCL_ERROR
);

1239 } i(
objc
 > 3) {

1243 i(
	`T_GIndexFromObj
(

, 
objv
[2], 
idwhich
, "option",

1244 
TCL_EXACT
, &
c
!
TCL_OK
)

1245  (
	`IS_HELP
(
objv
[2]));

1246 (
idwhich
)
c
) {

1247 
IDENCRYPT
:

1248 
ags
 |
DB_ENCRYPT
;

1251 
i
 = 3;

1253 
fe
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

1254 
t
 = 
dbv
->
	`feid_t
(dbv, 
fe
, 
ags
);

1255 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "fileideset");

1256  (
su
);

1257 
	}
}

1267 
	$t_EnvLRet
(

, 
objc
, 
objv
, 
dbv
)

1268 
T_Ip
 *

;

1269 
objc
;

1270 
T_Obj
 * 
CONST
* 
objv
;

1271 
DB_ENV
 *
dbv
;

1273 cڡ *
lwhich
[] = {

1275 
NULL


1277 
	elwhich
 {

1278 
IDENCRYPT


1280 
c
, 
i
, 
su
, 
t
;

1281 
u_t32_t
 
ags
;

1282 *
fe
;

1284 
su
 = 
TCL_OK
;

1285 
ags
 = 0;

1286 
i
 = 2;

1287 
	`T_SResu
(

, "0", 
TCL_STATIC
);

1288 i(
objc
 < 3) {

1289 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-encrypt? filename");

1290  (
TCL_ERROR
);

1291 } i(
objc
 > 3) {

1295 i(
	`T_GIndexFromObj
(

, 
objv
[2], 
lwhich
, "option",

1296 
TCL_EXACT
, &
c
!
TCL_OK
)

1297  (
	`IS_HELP
(
objv
[2]));

1299 (
lwhich
)
c
) {

1300 
IDENCRYPT
:

1301 
ags
 |
DB_ENCRYPT
;

1304 
i
 = 3;

1306 
fe
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

1307 
t
 = 
dbv
->
	`l_t
(dbv, 
fe
, 
ags
);

1308 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "lsneset");

1309  (
su
);

1310 
	}
}

1319 
	$t_EnvVbo
(

, 
dbv
, 
which
, 
off
)

1320 
T_Ip
 *

;

1321 
DB_ENV
 *
dbv
;

1322 
T_Obj
 *
which
;

1323 
T_Obj
 *
off
;

1325 cڡ *
vbwhich
[] = {

1333 
NULL


1335 
	evbwhich
 {

1336 
ENVVERB_DEADLOCK
,

1337 
ENVVERB_FILEOPS
,

1338 
ENVVERB_FILEOPS_ALL
,

1339 
ENVVERB_RECOVERY
,

1340 
ENVVERB_REGISTER
,

1341 
ENVVERB_REPLICATION
,

1342 
ENVVERB_WAITSFOR


1344 cڡ *
vboff
[] = {

1347 
NULL


1349 
	evboff
 {

1350 
ENVVERB_OFF
,

1351 
ENVVERB_ON


1353 

, 
tdex
, 
t
;

1354 
u_t32_t
 
wh
;

1356 i(
	`T_GIndexFromObj
(

, 
which
, 
vbwhich
, "option",

1357 
TCL_EXACT
, &
tdex
!
TCL_OK
)

1358  (
	`IS_HELP
(
which
));

1360 (
vbwhich
)
tdex
) {

1361 
ENVVERB_DEADLOCK
:

1362 
wh
 = 
DB_VERB_DEADLOCK
;

1364 
ENVVERB_FILEOPS
:

1365 
wh
 = 
DB_VERB_FILEOPS
;

1367 
ENVVERB_FILEOPS_ALL
:

1368 
wh
 = 
DB_VERB_FILEOPS_ALL
;

1370 
ENVVERB_RECOVERY
:

1371 
wh
 = 
DB_VERB_RECOVERY
;

1373 
ENVVERB_REGISTER
:

1374 
wh
 = 
DB_VERB_REGISTER
;

1376 
ENVVERB_REPLICATION
:

1377 
wh
 = 
DB_VERB_REPLICATION
;

1379 
ENVVERB_WAITSFOR
:

1380 
wh
 = 
DB_VERB_WAITSFOR
;

1383  (
TCL_ERROR
);

1385 i(
	`T_GIndexFromObj
(

, 
off
, 
vboff
, "option",

1386 
TCL_EXACT
, &
tdex
!
TCL_OK
)

1387  (
	`IS_HELP
(
off
));

1388 (
vboff
)
tdex
) {

1389 
ENVVERB_OFF
:

1390 

 = 0;

1392 
ENVVERB_ON
:

1393 

 = 1;

1396  (
TCL_ERROR
);

1398 
t
 = 
dbv
->
	`t_vbo
(dbv, 
wh
, 

);

1399  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1401 
	}
}

1404 #ifde
CONFIG_TEST


1412 
	$t_EnvAr
(

, 
objc
, 
objv
, 
dbv
)

1413 
T_Ip
 *

;

1414 
objc
;

1415 
T_Obj
 *
CONST
 
objv
[];

1416 
DB_ENV
 *
dbv
;

1418 
su
;

1419 
T_Obj
 *
myobj
, *
i
;

1421 
su
 = 
TCL_OK
;

1423 i(
objc
 > 2) {

1424 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

1425  (
TCL_ERROR
);

1427 
i
 = 
	`T_NewLiObj
(0, 
NULL
);

1433 
myobj
 = 
	`NewSgObj
("-home", 
	`
("-home"));

1434 i((
su
 = 
	`T_LiObjAdEmt
(

,

1435 
i
, 
myobj
)!
TCL_OK
)

1436 
r
;

1437 
myobj
 = 
	`NewSgObj
(
dbv
->
db_home
, 
	`
(dbenv->db_home));

1438 i((
su
 = 
	`T_LiObjAdEmt
(

,

1439 
i
, 
myobj
)!
TCL_OK
)

1440 
r
;

1441 i(
	`CDB_LOCKING
(
dbv
)) {

1442 
myobj
 = 
	`NewSgObj
("-cdb", 
	`
("-cdb"));

1443 i((
su
 = 
	`T_LiObjAdEmt
(

,

1444 
i
, 
myobj
)!
TCL_OK
)

1445 
r
;

1447 i(
	`CRYPTO_ON
(
dbv
)) {

1448 
myobj
 = 
	`NewSgObj
("-yo", 
	`
("-crypto"));

1449 i((
su
 = 
	`T_LiObjAdEmt
(

,

1450 
i
, 
myobj
)!
TCL_OK
)

1451 
r
;

1453 i(
	`LOCKING_ON
(
dbv
)) {

1454 
myobj
 = 
	`NewSgObj
("-lock", 
	`
("-lock"));

1455 i((
su
 = 
	`T_LiObjAdEmt
(

,

1456 
i
, 
myobj
)!
TCL_OK
)

1457 
r
;

1459 i(
	`LOGGING_ON
(
dbv
)) {

1460 
myobj
 = 
	`NewSgObj
("-log", 
	`
("-log"));

1461 i((
su
 = 
	`T_LiObjAdEmt
(

,

1462 
i
, 
myobj
)!
TCL_OK
)

1463 
r
;

1465 i(
	`MPOOL_ON
(
dbv
)) {

1466 
myobj
 = 
	`NewSgObj
("-mpo", 
	`
("-mpool"));

1467 i((
su
 = 
	`T_LiObjAdEmt
(

,

1468 
i
, 
myobj
)!
TCL_OK
)

1469 
r
;

1471 i(
	`RPC_ON
(
dbv
)) {

1472 
myobj
 = 
	`NewSgObj
("-c", 
	`
("-rpc"));

1473 i((
su
 = 
	`T_LiObjAdEmt
(

,

1474 
i
, 
myobj
)!
TCL_OK
)

1475 
r
;

1477 i(
	`REP_ON
(
dbv
)) {

1478 
myobj
 = 
	`NewSgObj
("-p", 
	`
("-rep"));

1479 i((
su
 = 
	`T_LiObjAdEmt
(

,

1480 
i
, 
myobj
)!
TCL_OK
)

1481 
r
;

1483 i(
	`TXN_ON
(
dbv
)) {

1484 
myobj
 = 
	`NewSgObj
("-txn", 
	`
("-txn"));

1485 i((
su
 = 
	`T_LiObjAdEmt
(

,

1486 
i
, 
myobj
)!
TCL_OK
)

1487 
r
;

1489 
	`T_SObjResu
(

, 
i
);

1490 
r
:

1491  (
su
);

1492 
	}
}

1506 
	$t_EvtNify
(

, 
dbv
, 
eobj
, 

)

1507 
T_Ip
 *

;

1508 
DB_ENV
 *
dbv
;

1509 
T_Obj
 *
eobj
;

1510 
DBTCL_INFO
 *

;

1512 
t
;

1520 i(

->
i_evt
 !
NULL
)

1521 
	`T_DeRefCou
(

->
i_evt
);

1522 

->
i_evt
 = 
eobj
;

1523 
	`T_InRefCou
(

->
i_evt
);

1524 
	`_debug_check
();

1525 
t
 = 
dbv
->
	`t_evt_nify
(dbv, 
_EvtFunc
);

1526  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1528 
	}
}

1538 
	$t_EnvSFgs
(

, 
dbv
, 
which
, 
off
)

1539 
T_Ip
 *

;

1540 
DB_ENV
 *
dbv
;

1541 
T_Obj
 *
which
;

1542 
T_Obj
 *
off
;

1544 cڡ *
sfwhich
[] = {

1559 
NULL


1561 
	esfwhich
 {

1562 
ENVSF_AUTOCOMMIT
,

1563 
ENVSF_DIRECTDB
,

1564 
ENVSF_DIRECTLOG
,

1565 
ENVSF_DSYNCLOG
,

1566 
ENVSF_LOG_INMEMORY
,

1567 
ENVSF_LOG_REMOVE
,

1568 
ENVSF_MULTIVERSION
,

1569 
ENVSF_NOLOCK
,

1570 
ENVSF_NOMMAP
,

1571 
ENVSF_NOPANIC
,

1572 
ENVSF_NOSYNC
,

1573 
ENVSF_OVERWRITE
,

1574 
ENVSF_PANIC
,

1575 
ENVSF_WRNOSYNC


1577 cڡ *
sfoff
[] = {

1580 
NULL


1582 
	esfoff
 {

1583 
ENVSF_OFF
,

1584 
ENVSF_ON


1586 

, 
tdex
, 
t
;

1587 
u_t32_t
 
wh
;

1589 i(
	`T_GIndexFromObj
(

, 
which
, 
sfwhich
, "option",

1590 
TCL_EXACT
, &
tdex
!
TCL_OK
)

1591  (
	`IS_HELP
(
which
));

1593 (
sfwhich
)
tdex
) {

1594 
ENVSF_AUTOCOMMIT
:

1595 
wh
 = 
DB_AUTO_COMMIT
;

1597 
ENVSF_DIRECTDB
:

1598 
wh
 = 
DB_DIRECT_DB
;

1600 
ENVSF_DIRECTLOG
:

1601 
wh
 = 
DB_DIRECT_LOG
;

1603 
ENVSF_DSYNCLOG
:

1604 
wh
 = 
DB_DSYNC_LOG
;

1606 
ENVSF_LOG_INMEMORY
:

1607 
wh
 = 
DB_LOG_INMEMORY
;

1609 
ENVSF_LOG_REMOVE
:

1610 
wh
 = 
DB_LOG_AUTOREMOVE
;

1612 
ENVSF_MULTIVERSION
:

1613 
wh
 = 
DB_MULTIVERSION
;

1615 
ENVSF_NOLOCK
:

1616 
wh
 = 
DB_NOLOCKING
;

1618 
ENVSF_NOMMAP
:

1619 
wh
 = 
DB_NOMMAP
;

1621 
ENVSF_NOSYNC
:

1622 
wh
 = 
DB_TXN_NOSYNC
;

1624 
ENVSF_NOPANIC
:

1625 
wh
 = 
DB_NOPANIC
;

1627 
ENVSF_PANIC
:

1628 
wh
 = 
DB_PANIC_ENVIRONMENT
;

1630 
ENVSF_OVERWRITE
:

1631 
wh
 = 
DB_OVERWRITE
;

1633 
ENVSF_WRNOSYNC
:

1634 
wh
 = 
DB_TXN_WRITE_NOSYNC
;

1637  (
TCL_ERROR
);

1639 i(
	`T_GIndexFromObj
(

, 
off
, 
sfoff
, "option",

1640 
TCL_EXACT
, &
tdex
!
TCL_OK
)

1641  (
	`IS_HELP
(
off
));

1642 (
sfoff
)
tdex
) {

1643 
ENVSF_OFF
:

1644 

 = 0;

1646 
ENVSF_ON
:

1647 

 = 1;

1650  (
TCL_ERROR
);

1652 
t
 = 
dbv
->
	`t_ags
(dbv, 
wh
, 

);

1653  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1655 
	}
}

1674 
	$t_EnvTe
(

, 
objc
, 
objv
, 
dbv
)

1675 
T_Ip
 *

;

1676 
objc
;

1677 
T_Obj
 *
CONST
 
objv
[];

1678 
DB_ENV
 *
dbv
;

1680 cڡ *
vcmd
[] = {

1685 
NULL


1687 
	evcmd
 {

1688 
ENVTEST_ABORT
,

1689 
ENVTEST_CHECK
,

1690 
ENVTEST_COPY
,

1691 
ENVTEST_FORCE


1693 cڡ *
v
[] = {

1706 
NULL


1708 
	ev
 {

1709 
ENVTEST_ELECTINIT
,

1710 
ENVTEST_ELECTVOTE1
,

1711 
ENVTEST_NONE
,

1712 
ENVTEST_PREDESTROY
,

1713 
ENVTEST_PREOPEN
,

1714 
ENVTEST_POSTDESTROY
,

1715 
ENVTEST_POSTLOG
,

1716 
ENVTEST_POSTLOGMETA
,

1717 
ENVTEST_POSTOPEN
,

1718 
ENVTEST_POSTSYNC
,

1719 
ENVTEST_RECYCLE
,

1720 
ENVTEST_SUBDB_LOCKS


1722 cڡ *
vf
[] = {

1724 
NULL


1726 
	evf
 {

1727 
ENVTEST_NOARCHIVE_TIMEOUT


1729 *
loc
, 
tdex
, 
su
, 
v
;

1731 
su
 = 
TCL_OK
;

1732 
loc
 = 
NULL
;

1734 i(
objc
 != 4) {

1735 
	`T_WrgNumArgs
(

,

1736 2, 
objv
, "abort|check|copy|force <args>");

1737  (
TCL_ERROR
);

1743 i(
	`T_GIndexFromObj
(

, 
objv
[2], 
vcmd
, "command",

1744 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

1745 
su
 = 
	`IS_HELP
(
objv
[2]);

1746  (
su
);

1748 (
vcmd
)
tdex
) {

1749 
ENVTEST_ABORT
:

1750 
loc
 = &
dbv
->
_abt
;

1752 
ENVTEST_CHECK
:

1753 
loc
 = &
dbv
->
_check
;

1754 i(
	`T_GIFromObj
(

, 
objv
[3], &
v
!
TCL_OK
) {

1755 
su
 = 
	`IS_HELP
(
objv
[3]);

1756  (
su
);

1758 
de
;

1759 
ENVTEST_COPY
:

1760 
loc
 = &
dbv
->
_cy
;

1762 
ENVTEST_FORCE
:

1763 i(
	`T_GIndexFromObj
(

, 
objv
[3], 
vf
, "arg",

1764 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

1765 
su
 = 
	`IS_HELP
(
objv
[3]);

1766  (
su
);

1772 
	`DB_ASSERT
(
dbv
,

1773 (
vf
)
tdex
 =
ENVTEST_NOARCHIVE_TIMEOUT
);

1774  (
	`t_RNrchiveTimeout
(

, 
dbv
));

1776 
	`T_SResu
(

, "Ieg stܐloti", 
TCL_STATIC
);

1777  (
TCL_ERROR
);

1783 i(
	`T_GIndexFromObj
(

, 
objv
[3], 
v
, "location",

1784 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

1785 
su
 = 
	`IS_HELP
(
objv
[3]);

1786  (
su
);

1788 (
v
)
tdex
) {

1789 
ENVTEST_ELECTINIT
:

1790 
	`DB_ASSERT
(
dbv
, 
loc
 =&dbv->
_abt
);

1791 
v
 = 
DB_TEST_ELECTINIT
;

1793 
ENVTEST_ELECTVOTE1
:

1794 
	`DB_ASSERT
(
dbv
, 
loc
 =&dbv->
_abt
);

1795 
v
 = 
DB_TEST_ELECTVOTE1
;

1797 
ENVTEST_NONE
:

1798 
v
 = 0;

1800 
ENVTEST_PREOPEN
:

1801 
v
 = 
DB_TEST_PREOPEN
;

1803 
ENVTEST_PREDESTROY
:

1804 
v
 = 
DB_TEST_PREDESTROY
;

1806 
ENVTEST_POSTLOG
:

1807 
v
 = 
DB_TEST_POSTLOG
;

1809 
ENVTEST_POSTLOGMETA
:

1810 
v
 = 
DB_TEST_POSTLOGMETA
;

1812 
ENVTEST_POSTOPEN
:

1813 
v
 = 
DB_TEST_POSTOPEN
;

1815 
ENVTEST_POSTDESTROY
:

1816 
v
 = 
DB_TEST_POSTDESTROY
;

1818 
ENVTEST_POSTSYNC
:

1819 
v
 = 
DB_TEST_POSTSYNC
;

1821 
ENVTEST_RECYCLE
:

1822 
	`DB_ASSERT
(
dbv
, 
loc
 =&dbv->
_cy
);

1823 
v
 = 
DB_TEST_RECYCLE
;

1825 
ENVTEST_SUBDB_LOCKS
:

1826 
	`DB_ASSERT
(
dbv
, 
loc
 =&dbv->
_abt
);

1827 
v
 = 
DB_TEST_SUBDB_LOCKS
;

1830 
	`T_SResu
(

, "Iegeoti", 
TCL_STATIC
);

1831  (
TCL_ERROR
);

1833 
de
:

1834 *
loc
 = 
v
;

1835 
	`T_SResu
(

, "0", 
TCL_STATIC
);

1836  (
su
);

1837 
	}
}

1845 
	$v_DbRemove
(

, 
objc
, 
objv
, 
dbv
)

1846 
T_Ip
 *

;

1847 
objc
;

1848 
T_Obj
 *
CONST
 
objv
[];

1849 
DB_ENV
 *
dbv
;

1851 cڡ *
vdbm
[] = {

1855 
NULL


1857 
	evdbm
 {

1858 
TCL_EDBREM_COMMIT
,

1859 
TCL_EDBREM_TXN
,

1860 
TCL_EDBREM_ENDARG


1862 
DB_TXN
 *
txn
;

1863 
u_t32_t
 
ag
;

1864 
dg
, 
i
, 
tdex
, 
su
, 
t
, 
subdbn
;

1865 
u_ch
 *
subdbtmp
;

1866 *
g
, *
db
, *
subdb
, 
msg
[
MSG_SIZE
];

1868 
txn
 = 
NULL
;

1869 
su
 = 
TCL_OK
;

1870 
subdbtmp
 = 
NULL
;

1871 
db
 = 
subdb
 = 
NULL
;

1872 
dg
 = 0;

1873 
ag
 = 0;

1875 i(
objc
 < 2) {

1876 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? filename ?database?");

1877  (
TCL_ERROR
);

1884 
i
 = 2;

1885 
i
 < 
objc
) {

1886 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
vdbm
,

1887 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

1888 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

1889 i(
g
[0] == '-') {

1890 
su
 = 
	`IS_HELP
(
objv
[
i
]);

1891 
r
;

1893 
	`T_RetResu
(

);

1896 
i
++;

1897 (
vdbm
)
tdex
) {

1898 
TCL_EDBREM_COMMIT
:

1899 
ag
 |
DB_AUTO_COMMIT
;

1901 
TCL_EDBREM_TXN
:

1902 i(
i
 >
objc
) {

1903 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

1904 
su
 = 
TCL_ERROR
;

1907 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1908 
txn
 = 
	`NAME_TO_TXN
(
g
);

1909 i(
txn
 =
NULL
) {

1910 
	`tf
(
msg
, 
MSG_SIZE
,

1911 "v dbmove: Invidx%s\n", 
g
);

1912 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

1913  (
TCL_ERROR
);

1916 
TCL_EDBREM_ENDARG
:

1917 
dg
 = 1;

1924 i(
su
 !
TCL_OK
)

1925 
r
;

1926 i(
dg
)

1929 i(
su
 !
TCL_OK
)

1930 
r
;

1935 i((
i
 !(
objc
 - 1)) || (i != (objc - 2))) {

1941 
db
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1942 i(
	`rcmp
(
db
, "") == 0)

1943 
db
 = 
NULL
;

1944 i(
i
 !
objc
) {

1945 
subdbtmp
 =

1946 
	`T_GByAayFromObj
(
objv
[
i
++], &
subdbn
);

1947 i((
t
 = 
	`__os_mloc
(

1948 
dbv
, (
size_t
)
subdbn
 + 1, &
subdb
)) != 0) {

1949 
	`T_SResu
(

,

1950 
	`db_
(
t
), 
TCL_STATIC
);

1953 
	`memy
(
subdb
, 
subdbtmp
, (
size_t
)
subdbn
);

1954 
subdb
[
subdbn
] = '\0';

1957 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? filename ?database?");

1958 
su
 = 
TCL_ERROR
;

1959 
r
;

1961 
t
 = 
dbv
->
	`dbmove
(dbv, 
txn
, 
db
, 
subdb
, 
ag
);

1962 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1964 
r
:

1965 i(
subdb
)

1966 
	`__os_
(
dbv
, 
subdb
);

1967  (
su
);

1968 
	}
}

1975 
	$v_DbRame
(

, 
objc
, 
objv
, 
dbv
)

1976 
T_Ip
 *

;

1977 
objc
;

1978 
T_Obj
 *
CONST
 
objv
[];

1979 
DB_ENV
 *
dbv
;

1981 cڡ *
vdbmv
[] = {

1985 
NULL


1987 
	evdbmv
 {

1988 
TCL_EDBMV_COMMIT
,

1989 
TCL_EDBMV_TXN
,

1990 
TCL_EDBMV_ENDARG


1992 
DB_TXN
 *
txn
;

1993 
u_t32_t
 
ag
;

1994 
dg
, 
i
, 
wn
, 
tdex
, 
su
, 
t
, 
subdbn
;

1995 
u_ch
 *
subdbtmp
;

1996 *
g
, *
db
, *
wme
, *
subdb
, 
msg
[
MSG_SIZE
];

1998 
txn
 = 
NULL
;

1999 
su
 = 
TCL_OK
;

2000 
subdbtmp
 = 
NULL
;

2001 
db
 = 
wme
 = 
subdb
 = 
NULL
;

2002 
dg
 = 0;

2003 
ag
 = 0;

2005 i(
objc
 < 2) {

2006 
	`T_WrgNumArgs
(

, 3, 
objv
,

2008  (
TCL_ERROR
);

2015 
i
 = 2;

2016 
i
 < 
objc
) {

2017 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
vdbmv
,

2018 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

2019 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

2020 i(
g
[0] == '-') {

2021 
su
 = 
	`IS_HELP
(
objv
[
i
]);

2022 
r
;

2024 
	`T_RetResu
(

);

2027 
i
++;

2028 (
vdbmv
)
tdex
) {

2029 
TCL_EDBMV_COMMIT
:

2030 
ag
 |
DB_AUTO_COMMIT
;

2032 
TCL_EDBMV_TXN
:

2033 i(
i
 >
objc
) {

2034 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

2035 
su
 = 
TCL_ERROR
;

2038 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2039 
txn
 = 
	`NAME_TO_TXN
(
g
);

2040 i(
txn
 =
NULL
) {

2041 
	`tf
(
msg
, 
MSG_SIZE
,

2042 "v dbme: Invidx%s\n", 
g
);

2043 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

2044  (
TCL_ERROR
);

2047 
TCL_EDBMV_ENDARG
:

2048 
dg
 = 1;

2055 i(
su
 !
TCL_OK
)

2056 
r
;

2057 i(
dg
)

2060 i(
su
 !
TCL_OK
)

2061 
r
;

2066 i((
i
 !(
objc
 - 2)) || (i != (objc - 3))) {

2072 
db
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

2073 i(
	`rcmp
(
db
, "") == 0)

2074 
db
 = 
NULL
;

2075 i(
i
 =
objc
 - 2) {

2076 
subdbtmp
 =

2077 
	`T_GByAayFromObj
(
objv
[
i
++], &
subdbn
);

2078 i((
t
 = 
	`__os_mloc
(

2079 
dbv
, (
size_t
)
subdbn
 + 1, &
subdb
)) != 0) {

2080 
	`T_SResu
(

,

2081 
	`db_
(
t
), 
TCL_STATIC
);

2084 
	`memy
(
subdb
, 
subdbtmp
, (
size_t
)
subdbn
);

2085 
subdb
[
subdbn
] = '\0';

2087 
subdbtmp
 = 
	`T_GByAayFromObj
(
objv
[
i
++], &
wn
);

2088 i((
t
 = 
	`__os_mloc
(

2089 
dbv
, (
size_t
)
wn
 + 1, &
wme
)) != 0) {

2090 
	`T_SResu
(

,

2091 
	`db_
(
t
), 
TCL_STATIC
);

2094 
	`memy
(
wme
, 
subdbtmp
, (
size_t
)
wn
);

2095 
wme
[
wn
] = '\0';

2097 
	`T_WrgNumArgs
(

, 3, 
objv
,

2099 
su
 = 
TCL_ERROR
;

2100 
r
;

2102 
t
 = 
dbv
->
	`dbme
(dbv, 
txn
, 
db
, 
subdb
, 
wme
, 
ag
);

2103 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2105 
r
:

2106 i(
subdb
)

2107 
	`__os_
(
dbv
, 
subdb
);

2108 i(
wme
)

2109 
	`__os_
(
dbv
, 
wme
);

2110  (
su
);

2111 
	}
}

2118 
	$v_GFgs
(

, 
objc
, 
objv
, 
dbv
)

2119 
T_Ip
 *

;

2120 
objc
;

2121 
T_Obj
 *
CONST
 
objv
[];

2122 
DB_ENV
 *
dbv
;

2124 
i
, 
t
, 
su
;

2125 
u_t32_t
 
ags
;

2126 
buf
[512];

2127 
T_Obj
 *
s
;

2130 
u_t32_t
 
ag
;

2131 *
g
;

2132 } 
ݒ_ags
[] = {

2133 { 
DB_AUTO_COMMIT
, "-auto_commit" },

2134 { 
DB_CDB_ALLDB
, "-cdb_alldb" },

2135 { 
DB_DIRECT_DB
, "-direct_db" },

2136 { 
DB_DIRECT_LOG
, "-direct_log" },

2137 { 
DB_DSYNC_LOG
, "-dsync_log" },

2138 { 
DB_LOG_AUTOREMOVE
, "-log_remove" },

2139 { 
DB_LOG_INMEMORY
, "-log_inmemory" },

2140 { 
DB_MULTIVERSION
, "-multiversion" },

2141 { 
DB_NOLOCKING
, "-nolock" },

2142 { 
DB_NOMMAP
, "-nommap" },

2143 { 
DB_NOPANIC
, "-nopanic" },

2144 { 
DB_OVERWRITE
, "-overwrite" },

2145 { 
DB_PANIC_ENVIRONMENT
, "-panic" },

2146 { 
DB_REGION_INIT
, "-region_init" },

2147 { 
DB_TXN_NOSYNC
, "-nosync" },

2148 { 
DB_TXN_WRITE_NOSYNC
, "-wrnosync" },

2149 { 
DB_YIELDCPU
, "-yield" },

2150 { 0, 
NULL
 }

2153 i(
objc
 != 2) {

2154 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

2155  (
TCL_ERROR
);

2158 
t
 = 
dbv
->
	`g_ags
(dbv, &
ags
);

2159 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2160 "v g_ags")=
TCL_OK
) {

2161 
buf
[0] = '\0';

2163 
i
 = 0; 
ݒ_ags
[i].
ag
 != 0; i++)

2164 i(
	`LF_ISSET
(
ݒ_ags
[
i
].
ag
)) {

2165 i(
	`
(
buf
) > 0)

2166 ()
	`t
(
buf
, " ", (buf));

2167 ()
	`t
(

2168 
buf
, 
ݒ_ags
[
i
].
g
, (buf));

2171 
s
 = 
	`NewSgObj
(
buf
, 
	`
(buf));

2172 
	`T_SObjResu
(

, 
s
);

2175  (
su
);

2176 
	}
}

2183 
	$v_GOnFg
(

, 
objc
, 
objv
, 
dbv
)

2184 
T_Ip
 *

;

2185 
objc
;

2186 
T_Obj
 *
CONST
 
objv
[];

2187 
DB_ENV
 *
dbv
;

2189 
i
, 
t
, 
su
;

2190 
u_t32_t
 
ags
;

2191 
buf
[512];

2192 
T_Obj
 *
s
;

2195 
u_t32_t
 
ag
;

2196 *
g
;

2197 } 
ݒ_ags
[] = {

2198 { 
DB_CREATE
, "-create" },

2199 { 
DB_INIT_CDB
, "-cdb" },

2200 { 
DB_INIT_LOCK
, "-lock" },

2201 { 
DB_INIT_LOG
, "-log" },

2202 { 
DB_INIT_MPOOL
, "-mpool" },

2203 { 
DB_INIT_TXN
, "-txn" },

2204 { 
DB_LOCKDOWN
, "-lockdown" },

2205 { 
DB_PRIVATE
, "-private" },

2206 { 
DB_RECOVER
, "-recover" },

2207 { 
DB_RECOVER_FATAL
, "-recover_fatal" },

2208 { 
DB_REGISTER
, "-register" },

2209 { 
DB_SYSTEM_MEM
, "-system_mem" },

2210 { 
DB_THREAD
, "-thread" },

2211 { 
DB_USE_ENVIRON
, "-use_environ" },

2212 { 
DB_USE_ENVIRON_ROOT
, "-use_environ_root" },

2213 { 0, 
NULL
 }

2216 i(
objc
 != 2) {

2217 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

2218  (
TCL_ERROR
);

2221 
t
 = 
dbv
->
	`g_ݒ_ags
(dbv, &
ags
);

2222 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2223 "v g_ݒ_ags")=
TCL_OK
) {

2224 
buf
[0] = '\0';

2226 
i
 = 0; 
ݒ_ags
[i].
ag
 != 0; i++)

2227 i(
	`LF_ISSET
(
ݒ_ags
[
i
].
ag
)) {

2228 i(
	`
(
buf
) > 0)

2229 ()
	`t
(
buf
, " ", (buf));

2230 ()
	`t
(

2231 
buf
, 
ݒ_ags
[
i
].
g
, (buf));

2234 
s
 = 
	`NewSgObj
(
buf
, 
	`
(buf));

2235 
	`T_SObjResu
(

, 
s
);

2238  (
su
);

2239 
	}
}

2249 
	$t_EnvGEnyFgs
(

, 
objc
, 
objv
, 
dbv
)

2250 
T_Ip
 *

;

2251 
objc
;

2252 
T_Obj
 *
CONST
 
objv
[];

2253 
DB_ENV
 *
dbv
;

2255 
i
, 
t
, 
su
;

2256 
u_t32_t
 
ags
;

2257 
buf
[512];

2258 
T_Obj
 *
s
;

2261 
u_t32_t
 
ag
;

2262 *
g
;

2263 } 
y_ags
[] = {

2264 { 
DB_ENCRYPT_AES
, "-encryptaes" },

2265 { 0, 
NULL
 }

2268 i(
objc
 != 2) {

2269 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

2270  (
TCL_ERROR
);

2273 
t
 = 
dbv
->
	`g_y_ags
(dbv, &
ags
);

2274 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2275 "v g_y_ags")=
TCL_OK
) {

2276 
buf
[0] = '\0';

2278 
i
 = 0; 
y_ags
[i].
ag
 != 0; i++)

2279 i(
	`LF_ISSET
(
y_ags
[
i
].
ag
)) {

2280 i(
	`
(
buf
) > 0)

2281 ()
	`t
(
buf
, " ", (buf));

2282 ()
	`t
(

2283 
buf
, 
y_ags
[
i
].
g
, (buf));

2286 
s
 = 
	`NewSgObj
(
buf
, 
	`
(buf));

2287 
	`T_SObjResu
(

, 
s
);

2290  (
su
);

2291 
	}
}

2298 
	$v_GLockDe
(

, 
objc
, 
objv
, 
dbv
)

2299 
T_Ip
 *

;

2300 
objc
;

2301 
T_Obj
 *
CONST
 
objv
[];

2302 
DB_ENV
 *
dbv
;

2304 
i
, 
t
, 
su
;

2305 
u_t32_t
 
lk_de
;

2306 cڡ *
sw
;

2307 
T_Obj
 *
s
;

2309 
u_t32_t
 
ag
;

2310 *
me
;

2311 } 
lk_de_tus
[] = {

2312 { 
DB_LOCK_DEFAULT
, "default" },

2313 { 
DB_LOCK_EXPIRE
, "expire" },

2314 { 
DB_LOCK_MAXLOCKS
, "maxlocks" },

2315 { 
DB_LOCK_MAXWRITE
, "maxwrite" },

2316 { 
DB_LOCK_MINLOCKS
, "minlocks" },

2317 { 
DB_LOCK_MINWRITE
, "minwrite" },

2318 { 
DB_LOCK_OLDEST
, "oldest" },

2319 { 
DB_LOCK_RANDOM
, "random" },

2320 { 
DB_LOCK_YOUNGEST
, "youngest" },

2321 { 0, 
NULL
 }

2324 i(
objc
 != 2) {

2325 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

2326  (
TCL_ERROR
);

2328 
t
 = 
dbv
->
	`g_lk_de
(dbv, &
lk_de
);

2329 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2330 "v g_lk_de")=
TCL_OK
) {

2331 
sw
 = "unknown";

2332 
i
 = 0; 
lk_de_tus
[i].
ag
 != 0; i++)

2333 i(
lk_de
 =
lk_de_tus
[
i
].
ag
)

2334 
sw
 = 
lk_de_tus
[
i
].
me
;

2336 
s
 = 
	`NewSgObj
(
sw
, 
	`
(answer));

2337 
	`T_SObjResu
(

, 
s
);

2340  (
su
);

2341 
	}
}

2348 
	$v_GTimeout
(

, 
objc
, 
objv
, 
dbv
)

2349 
T_Ip
 *

;

2350 
objc
;

2351 
T_Obj
 *
CONST
 
objv
[];

2352 
DB_ENV
 *
dbv
;

2355 
u_t32_t
 
ag
;

2356 *
g
;

2357 } 
timeout_ags
[] = {

2358 { 
DB_SET_TXN_TIMEOUT
, "txn" },

2359 { 
DB_SET_LOCK_TIMEOUT
, "lock" },

2360 { 0, 
NULL
 }

2362 
T_Obj
 *
s
;

2363 
db_timeout_t
 
timeout
;

2364 
u_t32_t
 
which
;

2365 
i
, 
t
, 
su
;

2366 cڡ *
g
;

2368 
	`COMPQUIET
(
timeout
, 0);

2370 i(
objc
 != 3) {

2371 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

2372  (
TCL_ERROR
);

2375 
g
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

2376 
which
 = 0;

2377 
i
 = 0; 
timeout_ags
[i].
ag
 != 0; i++)

2378 i(
	`rcmp
(
g
, 
timeout_ags
[
i
].arg) == 0)

2379 
which
 = 
timeout_ags
[
i
].
ag
;

2380 i(
which
 == 0) {

2381 
t
 = 
EINVAL
;

2382 
r
;

2385 
t
 = 
dbv
->
	`g_timeout
(dbv, &
timeout
, 
which
);

2386 
r
: i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2387 "v g_timeout")=
TCL_OK
) {

2388 
s
 = 
	`T_NewLgObj
(()
timeout
);

2389 
	`T_SObjResu
(

, 
s
);

2392  (
su
);

2393 
	}
}

2400 
	$v_GVbo
(

, 
objc
, 
objv
, 
dbv
)

2401 
T_Ip
 *

;

2402 
objc
;

2403 
T_Obj
 *
CONST
 
objv
[];

2404 
DB_ENV
 *
dbv
;

2407 
u_t32_t
 
ag
;

2408 *
g
;

2409 } 
vbo_ags
[] = {

2410 { 
DB_VERB_DEADLOCK
, "deadlock" },

2411 { 
DB_VERB_FILEOPS
, "fileops" },

2412 { 
DB_VERB_FILEOPS_ALL
, "fileops_all" },

2413 { 
DB_VERB_RECOVERY
, "recovery" },

2414 { 
DB_VERB_REGISTER
, "register" },

2415 { 
DB_VERB_REPLICATION
, "rep" },

2416 { 
DB_VERB_WAITSFOR
, "wait" },

2417 { 0, 
NULL
 }

2419 
T_Obj
 *
s
;

2420 
u_t32_t
 
which
;

2421 
i
, 
off
, 
t
, 
su
;

2422 cڡ *
g
, *
sw
;

2424 
	`COMPQUIET
(
off
, 0);

2426 i(
objc
 != 3) {

2427 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

2428  (
TCL_ERROR
);

2431 
g
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

2432 
which
 = 0;

2433 
i
 = 0; 
vbo_ags
[i].
ag
 != 0; i++)

2434 i(
	`rcmp
(
g
, 
vbo_ags
[
i
].arg) == 0)

2435 
which
 = 
vbo_ags
[
i
].
ag
;

2436 i(
which
 == 0) {

2437 
t
 = 
EINVAL
;

2438 
r
;

2441 
t
 = 
dbv
->
	`g_vbo
(dbv, 
which
, &
off
);

2442 
r
: i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

2444 
sw
 = 
off
 ? "on" : "off";

2445 
s
 = 
	`NewSgObj
(
sw
, 
	`
(answer));

2446 
	`T_SObjResu
(

, 
s
);

2449  (
su
);

2450 
	}
}

2460 
	$t_EnvSEfe
(

, 
dbv
, 

, 
rf
)

2461 
T_Ip
 *

;

2462 
DB_ENV
 *
dbv
;

2463 
DBTCL_INFO
 *

;

2464 *
rf
;

2466 
	`COMPQUIET
(

, 
NULL
);

2470 i(

->
i_r
 !
NULL
 && ip->i_!
dout
 &&

2471 

->
i_r
 !
dr
)

2472 ()
	`fo
(

->
i_r
);

2473 i(
	`rcmp
(
rf
, "/dev/stdout") == 0)

2474 

->
i_r
 = 
dout
;

2475 i(
	`rcmp
(
rf
, "/dev/stderr") == 0)

2476 

->
i_r
 = 
dr
;

2478 

->
i_r
 = 
	`fݒ
(
rf
, "a");

2479 i(

->
i_r
 !
NULL
)

2480 
dbv
->
	`t_rfe
(dbv, 

->
i_r
);

2481 
	}
}

2491 
	$t_EnvSEpfx
(

, 
dbv
, 

, 
pfx
)

2492 
T_Ip
 *

;

2493 
DB_ENV
 *
dbv
;

2494 
DBTCL_INFO
 *

;

2495 *
pfx
;

2497 
su
, 
t
;

2503 
su
 = 
TCL_OK
;

2504 
	`T_SResu
(

, "0", 
TCL_STATIC
);

2508 i(

->
i_fx
 !
NULL
)

2509 
	`__os_
(
dbv
, 

->
i_fx
);

2510 i((
t
 = 
	`__os_rdup
(
dbv
, 
pfx
, &

->
i_fx
)) != 0) {

2511 
su
 = 
	`_RuSup
(

, 
t
,

2512 
	`DB_RETOK_STD
(
t
), "__os_strdup");

2513 

->
i_fx
 = 
NULL
;

2515 i(

->
i_fx
 !
NULL
)

2516 
dbv
->
	`t_fx
(dbv, 

->
i_fx
);

2517  (
su
);

2518 
	}
}

	@../tcl/tcl_internal.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/t_db.h
"

16 
	~"dbc/db_ge.h
"

17 
	~"dbc/db_am.h
"

37 
	#GLOB_CHAR
(
c
((c='*' || (c='?')

	)

48 
DBTCL_INFO
 *

49 
	$_NewInfo
(

, 
yp
, 
me
, 
ty
)

50 
T_Ip
 *

;

51 *
yp
;

52 *
me
;

53 
INFOTYPE
 
ty
;

55 
DBTCL_INFO
 *
p
;

56 
t
;

58 i((
t
 = 
	`__os_oc
(
NULL
, (
DBTCL_INFO
), 1, &
p
)) != 0) {

59 
	`T_SResu
(

, 
	`db_
(
t
), 
TCL_STATIC
);

60  (
NULL
);

63 i((
t
 = 
	`__os_rdup
(
NULL
, 
me
, &
p
->
i_me
)) != 0) {

64 
	`T_SResu
(

, 
	`db_
(
t
), 
TCL_STATIC
);

65 
	`__os_
(
NULL
, 
p
);

66  (
NULL
);

68 
p
->
i_
 = 

;

69 
p
->
i_yp
 = 
yp
;

70 
p
->
i_ty
 = 
ty
;

72 
	`LIST_INSERT_HEAD
(&
__db_fohd
, 
p
, 
s
);

73  (
p
);

74 
	}
}

80 
	$_NameToP
(
me
)

81 
CONST
 *
me
;

83 
DBTCL_INFO
 *
p
;

85 
	`LIST_FOREACH
(
p
, &
__db_fohd
, 
s
)

86 i(
	`rcmp
(
me
, 
p
->
i_me
) == 0)

87  (
p
->
i_yp
);

88  (
NULL
);

89 
	}
}

94 
DBTCL_INFO
 *

95 
	$_PToInfo
(
r
)

96 
CONST
 *
r
;

98 
DBTCL_INFO
 *
p
;

100 
	`LIST_FOREACH
(
p
, &
__db_fohd
, 
s
)

101 i(
p
->
i_yp
 =
r
)

102  (
p
);

103  (
NULL
);

104 
	}
}

109 
DBTCL_INFO
 *

110 
	$_NameToInfo
(
me
)

111 
CONST
 *
me
;

113 
DBTCL_INFO
 *
p
;

115 
	`LIST_FOREACH
(
p
, &
__db_fohd
, 
s
)

116 i(
	`rcmp
(
me
, 
p
->
i_me
) == 0)

117  (
p
);

118  (
NULL
);

119 
	}
}

125 
	$_SInfoDa
(
p
, 
da
)

126 
DBTCL_INFO
 *
p
;

127 *
da
;

129 i(
p
 =
NULL
)

131 
p
->
i_yp
 = 
da
;

133 
	}
}

139 
	$_DeInfo
(
p
)

140 
DBTCL_INFO
 *
p
;

142 i(
p
 =
NULL
)

144 
	`LIST_REMOVE
(
p
, 
s
);

145 i(
p
->
i_lockobj
.
da
 !
NULL
)

146 
	`__os_
(
NULL
, 
p
->
i_lockobj
.
da
);

147 i(
p
->
i_r
 !
NULL
 &&->i_!
dr
 &&->i_!
dout
) {

148 ()
	`fo
(
p
->
i_r
);

149 
p
->
i_r
 = 
NULL
;

151 i(
p
->
i_fx
 !
NULL
)

152 
	`__os_
(
NULL
, 
p
->
i_fx
);

153 i(
p
->
i_com
 !
NULL
)

154 
	`T_DeRefCou
(
p
->
i_com
);

155 i(
p
->
i_dupcom
 !
NULL
)

156 
	`T_DeRefCou
(
p
->
i_dupcom
);

157 i(
p
->
i_hashoc
 !
NULL
)

158 
	`T_DeRefCou
(
p
->
i_hashoc
);

159 i(
p
->
i_cd_
 !
NULL
)

160 
	`T_DeRefCou
(
p
->
i_cd_
);

161 i(
p
->
i_p_eid
 !
NULL
)

162 
	`T_DeRefCou
(
p
->
i_p_eid
);

163 i(
p
->
i_p_nd
 !
NULL
)

164 
	`T_DeRefCou
(
p
->
i_p_nd
);

165 i(
p
->
i_evt
 !
NULL
)

166 
	`T_DeRefCou
(
p
->
i_evt
);

167 
	`__os_
(
NULL
, 
p
->
i_me
);

168 
	`__os_
(
NULL
, 
p
);

171 
	}
}

178 
	$_SLiEm
(

, 
li
, 
em1
, 
e1t
, 
em2
, 
e2t
)

179 
T_Ip
 *

;

180 
T_Obj
 *
li
;

181 *
em1
, *
em2
;

182 
u_t32_t
 
e1t
, 
e2t
;

184 
T_Obj
 *
myobjv
[2], *
thii
;

185 
myobjc
;

187 
myobjc
 = 2;

188 
myobjv
[0] = 
	`T_NewByAayObj
((
u_ch
 *)
em1
, ()
e1t
);

189 
myobjv
[1] = 
	`T_NewByAayObj
((
u_ch
 *)
em2
, ()
e2t
);

190 
thii
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

191 i(
thii
 =
NULL
)

192  (
TCL_ERROR
);

193  (
	`T_LiObjAdEmt
(

, 
li
, 
thii
));

195 
	}
}

201 
	$_SLiEmI
(

, 
li
, 
em1
, 
em2
)

202 
T_Ip
 *

;

203 
T_Obj
 *
li
;

204 *
em1
;

205 
em2
;

207 
T_Obj
 *
myobjv
[2], *
thii
;

208 
myobjc
;

210 
myobjc
 = 2;

211 
myobjv
[0] =

212 
	`T_NewByAayObj
((
u_ch
 *)
em1
, ()
	`
((*)elem1));

213 
myobjv
[1] = 
	`T_NewLgObj
(
em2
);

214 
thii
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

215 i(
thii
 =
NULL
)

216  (
TCL_ERROR
);

217  (
	`T_LiObjAdEmt
(

, 
li
, 
thii
));

218 
	}
}

225 #ifde
HAVE_64BIT_TYPES


231 
	$_SLiEmWideI
(

, 
li
, 
em1
, 
em2
)

232 
T_Ip
 *

;

233 
T_Obj
 *
li
;

234 *
em1
;

235 
t64_t
 
em2
;

237 
T_Obj
 *
myobjv
[2], *
thii
;

238 
myobjc
;

240 
myobjc
 = 2;

241 
myobjv
[0] =

242 
	`T_NewByAayObj
((
u_ch
 *)
em1
, ()
	`
((*)elem1));

243 
myobjv
[1] = 
	`T_NewWideIObj
(
em2
);

244 
thii
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

245 i(
thii
 =
NULL
)

246  (
TCL_ERROR
);

247  (
	`T_LiObjAdEmt
(

, 
li
, 
thii
));

248 
	}
}

256 
	$_SLiReoEm
(

, 
li
, 
em1
, 
em2
, 
e2size
)

257 
T_Ip
 *

;

258 
T_Obj
 *
li
;

259 
db_o_t
 
em1
;

260 
u_ch
 *
em2
;

261 
u_t32_t
 
e2size
;

263 
T_Obj
 *
myobjv
[2], *
thii
;

264 
myobjc
;

266 
myobjc
 = 2;

267 
myobjv
[0] = 
	`T_NewWideIObj
((
T_WideI
)
em1
);

268 
myobjv
[1] = 
	`T_NewByAayObj
(
em2
, ()
e2size
);

269 
thii
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

270 i(
thii
 =
NULL
)

271  (
TCL_ERROR
);

272  (
	`T_LiObjAdEmt
(

, 
li
, 
thii
));

274 
	}
}

293 
	$_S3DBTLi
(

, 
li
, 
em1
, 
is1o
, 
em2
, 
is2o
, 
em3
)

294 
T_Ip
 *

;

295 
T_Obj
 *
li
;

296 
DBT
 *
em1
, *
em2
, *
em3
;

297 
is1o
, 
is2o
;

300 
T_Obj
 *
myobjv
[3], *
thii
;

302 i(
is1o
)

303 
myobjv
[0] = 
	`T_NewWideIObj
(

304 (
T_WideI
)*(
db_o_t
 *)
em1
->
da
);

306 
myobjv
[0] = 
	`T_NewByAayObj
(

307 (
u_ch
 *)
em1
->
da
, (m1->
size
);

309 i(
is2o
)

310 
myobjv
[1] = 
	`T_NewWideIObj
(

311 (
T_WideI
)*(
db_o_t
 *)
em2
->
da
);

313 
myobjv
[1] = 
	`T_NewByAayObj
(

314 (
u_ch
 *)
em2
->
da
, (m2->
size
);

316 
myobjv
[2] = 
	`T_NewByAayObj
(

317 (
u_ch
 *)
em3
->
da
, (m3->
size
);

319 
thii
 = 
	`T_NewLiObj
(3, 
myobjv
);

321 i(
thii
 =
NULL
)

322  (
TCL_ERROR
);

323  (
	`T_LiObjAdEmt
(

, 
li
, 
thii
));

324 
	}
}

333 
	$_SMuiLi
(

, 
li
, 
key
, 
da
, 
ty
, 
ag
)

334 
T_Ip
 *

;

335 
T_Obj
 *
li
;

336 
DBT
 *
key
, *
da
;

337 
DBTYPE
 
ty
;

338 
u_t32_t
 
ag
;

340 
db_o_t
 
o
;

341 
u_t32_t
 
dn
, 
kn
;

342 
su
;

343 *
por
, *
dp
, *
kp
;

345 
o
 = 0;

346 
dn
 = 0;

347 
kp
 = 
NULL
;

349 
	`DB_MULTIPLE_INIT
(
por
, 
da
);

350 
su
 = 
TCL_OK
;

352 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
)

353 
o
 = *(
db_o_t
 *
key
->
da
;

355 
kp
 = 
key
->
da
;

356 
kn
 = 
key
->
size
;

358 i(
ag
 & 
DB_MULTIPLE_KEY
) {

359 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
)

360 
	`DB_MULTIPLE_RECNO_NEXT
(
por
,

361 
da
, 
o
, 
dp
, 
dn
);

363 
	`DB_MULTIPLE_KEY_NEXT
(
por
,

364 
da
, 
kp
, 
kn
, 
dp
, 
dn
);

366 
	`DB_MULTIPLE_NEXT
(
por
, 
da
, 
dp
, 
dn
);

368 i(
por
 =
NULL
)

371 i(
ty
 =
DB_RECNO
 ||y =
DB_QUEUE
) {

372 
su
 =

373 
	`_SLiReoEm
(

, 
li
, 
o
, 
dp
, 
dn
);

374 
o
++;

376 i(
o
 == 0)

377 
o
++;

379 
su
 = 
	`_SLiEm
(

, 
li
, 
kp
, 
kn
, 
dp
, 
dn
);

380 } 
su
 =
TCL_OK
);

382  (
su
);

383 
	}
}

388 
	$_GGlobPfix
(
n
, 
efix
)

389 *
n
;

390 **
efix
;

392 
i
, 
j
;

393 *
p
;

398 i(
	`__os_rdup
(
NULL
, 
n
, 
efix
) != 0)

401 
p
 = *
efix
;

402 
i
 = 0, 
j
 = 0; 
p
[i] && !
	`GLOB_CHAR
(p[i]); i++, j++)

406 i(
p
[
i
] == '\\' &&[i+1]) {

407 
p
[
j
] =[
i
+1];

408 
i
++;

410 
p
[
j
] =[
i
];

411 
p
[
j
] = 0;

413 
	}
}

419 
	$_RuSup
(

, 
t
, 
ok
, 
rmsg
)

420 
T_Ip
 *

;

421 
t
, 
ok
;

422 *
rmsg
;

424 *
msg
;

426 i(
t
 > 0)

427  (
	`_ESup
(

, 
t
, 
rmsg
));

436 i(
t
 == 0) {

437 
	`T_SResu
(

, "0", 
TCL_STATIC
);

438  (
TCL_OK
);

441 
msg
 = 
	`db_
(
t
);

442 
	`T_AdResu
(

, 
msg
, 
NULL
);

444 i(
ok
)

445  (
TCL_OK
);

447 
	`T_SECode
(

, "BkeyDB", 
msg
, 
NULL
);

448  (
TCL_ERROR
);

450 
	}
}

456 
	$_ESup
(

, 
t
, 
rmsg
)

457 
T_Ip
 *

;

458 
t
;

459 *
rmsg
;

461 
	`T_SEno
(
t
);

462 
	`T_AdResu
(

, 
rmsg
, ":", 
	`T_PosixE
(), 
NULL
);

463  (
TCL_ERROR
);

464 
	}
}

470 
	$_EFunc
(
dbv
, 
pfx
, 
msg
)

471 cڡ 
DB_ENV
 *
dbv
;

472 
CONST
 *
pfx
;

473 cڡ *
msg
;

475 
DBTCL_INFO
 *
p
;

476 
T_Ip
 *

;

477 
size_t
 
size
;

478 *
r
;

480 
	`COMPQUIET
(
dbv
, 
NULL
);

482 
p
 = 
	`_NameToInfo
(
pfx
);

483 i(
p
 =
NULL
)

485 

 = 
p
->
i_
;

487 
size
 = 
	`
(
pfx
+ sn(
msg
) + 4;

492 i(
	`__os_mloc
(
NULL
, 
size
, &
r
) != 0) {

493 
	`T_AddEInfo
(

, 
msg
);

494 
	`T_AdResu
(

, 
msg
, "\n", 
NULL
);

497 
	`tf
(
r
, 
size
, "%s: %s", 
pfx
, 
msg
);

498 
	`T_AddEInfo
(

, 
r
);

499 
	`T_AdResu
(

, 
r
, "\n", 
NULL
);

500 
	`__os_
(
NULL
, 
r
);

502 
	}
}

508 
	$_EvtFunc
(
dbv
, 
evt
, 
fo
)

509 
DB_ENV
 *
dbv
;

510 
u_t32_t
 
evt
;

511 *
fo
;

513 
	#TCLDB_EVENTITEMS
 2

	)

514 
	#TCLDB_SENDEVENT
 3

	)

515 
DBTCL_INFO
 *

;

516 
T_Ip
 *

;

517 
T_Obj
 *
evt_o
, *
igobj
;

518 
T_Obj
 *
myobjv
[
TCLDB_EVENTITEMS
], *
objv
[
TCLDB_SENDEVENT
];

519 
i
, 
myobjc
, 
su
;

521 

 = (
DBTCL_INFO
 *)
dbv
->
p_ive
;

522 

 = 

->
i_
;

523 i(

->
i_evt
 =
NULL
)

525 
objv
[0] = 

->
i_evt
;

526 
objv
[1] = 
	`NewSgObj
(

->
i_me
, 
	`
(ip->i_name));

532 
myobjv
[1] = 
NULL
;

533 
myobjc
 = 1;

534 
evt
) {

535 
DB_EVENT_PANIC
:

539 
myobjv
[0] = 
	`NewSgObj
("nic", 
	`
("panic"));

540 
myobjv
[
myobjc
++] = 
	`T_NewIObj
(*(*)
fo
);

542 
DB_EVENT_REP_CLIENT
:

543 
myobjv
[0] = 
	`NewSgObj
("p_", 
	`
("rep_client"));

545 
DB_EVENT_REP_ELECTED
:

546 
myobjv
[0] = 
	`NewSgObj
("eed", 
	`
("elected"));

548 
DB_EVENT_REP_MASTER
:

549 
myobjv
[0] = 
	`NewSgObj
("p_ma", 
	`
("rep_master"));

551 
DB_EVENT_REP_NEWMASTER
:

555 
myobjv
[0] = 
	`NewSgObj
("wma", 
	`
("newmaster"));

556 
myobjv
[
myobjc
++] = 
	`T_NewIObj
(*(*)
fo
);

558 
DB_EVENT_REP_PERM_FAILED
:

559 
myobjv
[0] = 
	`NewSgObj
("rm_ed", 
	`
("perm_failed"));

561 
DB_EVENT_REP_STARTUPDONE
:

562 
myobjv
[0] = 
	`NewSgObj
("tupde", 
	`
("startupdone"));

564 
DB_EVENT_WRITE_FAILED
:

565 
myobjv
[0] =

566 
	`NewSgObj
("wre_ed", 
	`
("write_failed"));

569 
	`__db_rx
(
dbv
, "T unknowev%lu", (
u_lg
)
evt
);

573 
i
 = 0; i < 
myobjc
; i++)

574 
	`T_InRefCou
(
myobjv
[
i
]);

576 
evt_o
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

577 
	`T_InRefCou
(
evt_o
);

578 
objv
[2] = 
evt_o
;

586 
igobj
 = 
	`T_GObjResu
(

);

587 
	`T_InRefCou
(
igobj
);

588 
su
 = 
	`T_EvObjv
(

, 
TCLDB_SENDEVENT
, 
objv
, 0);

589 i(
su
 !
TCL_OK
) {

599 
	`__db_rx
(
dbv
, "Tclvent failure");

600 
	`__os_abt
();

603 
	`T_SObjResu
(

, 
igobj
);

604 
	`T_DeRefCou
(
igobj
);

605 
i
 = 0; i < 
myobjc
; i++)

606 
	`T_DeRefCou
(
myobjv
[
i
]);

607 
	`T_DeRefCou
(
evt_o
);

610 
	}
}

612 
	#INVALID_LSNMSG
 "Invid LSN wh %dts. Should hav2.\n"

	)

618 
	$_GL
(

, 
obj
, 
l
)

619 
T_Ip
 *

;

620 
T_Obj
 *
obj
;

621 
DB_LSN
 *
l
;

623 
T_Obj
 **
myobjv
;

624 
msg
[
MSG_SIZE
];

625 
myobjc
, 
su
;

626 
u_t32_t
 
tmp
;

628 
su
 = 
	`T_LiObjGEmts
(

, 
obj
, &
myobjc
, &
myobjv
);

629 i(
su
 =
TCL_ERROR
)

630  (
su
);

631 i(
myobjc
 != 2) {

632 
su
 = 
TCL_ERROR
;

633 
	`tf
(
msg
, 
MSG_SIZE
, 
INVALID_LSNMSG
, 
myobjc
);

634 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

635  (
su
);

637 
su
 = 
	`_GUI32
(

, 
myobjv
[0], &
tmp
);

638 i(
su
 =
TCL_ERROR
)

639  (
su
);

640 
l
->
fe
 = 
tmp
;

641 
su
 = 
	`_GUI32
(

, 
myobjv
[1], &
tmp
);

642 
l
->
offt
 = 
tmp
;

643  (
su
);

644 
	}
}

662 
	$_GUI32
(

, 
obj
, 

)

663 
T_Ip
 *

;

664 
T_Obj
 *
obj
;

665 
u_t32_t
 *

;

667 
su
;

668 
mp
;

670 
su
 = 
	`T_GLgFromObj
(

, 
obj
, &
mp
);

671 i(
su
 !
TCL_OK
)

672  (
su
);

674 i(()
mp
 !(
u_t32_t
)ltmp) {

675 i(

 !
NULL
) {

676 
	`T_RetResu
(

);

677 
	`T_AdToObj
(
	`T_GObjResu
(

),

680  (
TCL_ERROR
);

683 *

 = (
u_t32_t
)
mp
;

684  (
TCL_OK
);

685 
	}
}

694 
T_Obj
 *

695 
	$_GFgsLi
(

, 
ags
, 
p
)

696 
T_Ip
 *

;

697 
u_t32_t
 
ags
;

698 cڡ 
FN
 *
p
;

700 
T_Obj
 *
wli
, *
wobj
;

701 
su
;

703 
wli
 = 
	`T_NewObj
();

709 i(
p
 =
NULL
)

710  (
wli
);

716 ; 
p
->
mask
 != 0; ++fnp)

717 i(
	`LF_ISSET
(
p
->
mask
)) {

718 
wobj
 = 
	`NewSgObj
(
p
->
me
, 
	`
(fnp->name));

719 
su
 =

720 
	`T_LiObjAdEmt
(

, 
wli
, 
wobj
);

728 
	`DB_ASSERT
(
NULL
, 
su
 =
TCL_OK
);

731  (
wli
);

732 
	}
}

734 
	g__debug_
, 
	g__debug_
, 
	g__debug_t
, 
	g__debug_
;

740 
	$_debug_check
()

742 i(
__debug_
 == 0)

745 i(
__debug_t
 != 0) {

746 
	`tf
("\r%7d:", 
__debug_
);

747 ()
	`fush
(
dout
);

749 i(
__debug_
++ =
__debug_
 || 
__debug_
)

750 
	`__db_ldme
();

751 
	}
}

771 
	$_CyObjBys
(

, 
obj
, 
wp
, 
siz
, 
p
)

772 
T_Ip
 *

;

773 
T_Obj
 *
obj
;

774 *
wp
;

775 
u_t32_t
 *
siz
;

776 *
p
;

778 *
tmp
, *
w
;

779 
i
, 
n
, 
t
;

786 *
p
 = 0;

787 
t
 = 
	`T_GIFromObj
(

, 
obj
, &
i
);

788 
tmp
 = 
	`T_GByAayFromObj
(
obj
, &
n
);

789 *
siz
 = (
u_t32_t
)
n
;

790 i(
t
 =
TCL_ERROR
) {

791 
	`T_RetResu
(

);

792 *(**)
wp
 = 
tmp
;

801 i((
t
 = 
	`__os_mloc
(
NULL
, (
size_t
)
n
, &
w
)) != 0)

802  (
t
);

803 
	`memy
(
w
, 
tmp
, (
size_t
)
n
);

804 *(**)
wp
 = 
w
;

805 *
p
 = 1;

807 
	}
}

	@../tcl/tcl_lock.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/t_db.h
"

20 #ifde
CONFIG_TEST


21 
lock_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

22 
_LockMode
 
__P
((
T_Ip
 *, 
T_Obj
 *, 
db_lockmode_t
 *));

23 
_GThisLock
 
__P
((
T_Ip
 *, 
DB_ENV
 *, 
u_t32_t
,

24 
u_t32_t
, 
DBT
 *, 
db_lockmode_t
, *));

25 
_LockPutInfo
 
__P
((
T_Ip
 *, 
db_lock_t
, 
DB_LOCK
 *,

26 
u_t32_t
, 
DBT
 *));

35 
	$t_LockDe
(

, 
objc
, 
objv
, 
vp
)

36 
T_Ip
 *

;

37 
objc
;

38 
T_Obj
 *
CONST
 
objv
[];

39 
DB_ENV
 *
vp
;

41 cڡ *
ldts
[] = {

51 
NULL


53 
	eldts
 {

54 
LD_DEFAULT
,

55 
LD_EXPIRE
,

56 
LD_MAXLOCKS
,

57 
LD_MAXWRITES
,

58 
LD_MINLOCKS
,

59 
LD_MINWRITES
,

60 
LD_OLDEST
,

61 
LD_RANDOM
,

62 
LD_YOUNGEST


64 
u_t32_t
 
ag
, 
picy
;

65 
i
, 
tdex
, 
su
, 
t
;

67 
su
 = 
TCL_OK
;

68 
ag
 = 
picy
 = 0;

69 
i
 = 2;

70 
i
 < 
objc
) {

71 i(
	`T_GIndexFromObj
(

, 
objv
[
i
],

72 
ldts
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
)

73  (
	`IS_HELP
(
objv
[
i
]));

74 
i
++;

75 (
ldts
)
tdex
) {

76 
LD_DEFAULT
:

77 
	`FLAG_CHECK
(
picy
);

78 
picy
 = 
DB_LOCK_DEFAULT
;

80 
LD_EXPIRE
:

81 
	`FLAG_CHECK
(
picy
);

82 
picy
 = 
DB_LOCK_EXPIRE
;

84 
LD_MAXLOCKS
:

85 
	`FLAG_CHECK
(
picy
);

86 
picy
 = 
DB_LOCK_MAXLOCKS
;

88 
LD_MAXWRITES
:

89 
	`FLAG_CHECK
(
picy
);

90 
picy
 = 
DB_LOCK_MAXWRITE
;

92 
LD_MINLOCKS
:

93 
	`FLAG_CHECK
(
picy
);

94 
picy
 = 
DB_LOCK_MINLOCKS
;

96 
LD_MINWRITES
:

97 
	`FLAG_CHECK
(
picy
);

98 
picy
 = 
DB_LOCK_MINWRITE
;

100 
LD_OLDEST
:

101 
	`FLAG_CHECK
(
picy
);

102 
picy
 = 
DB_LOCK_OLDEST
;

104 
LD_RANDOM
:

105 
	`FLAG_CHECK
(
picy
);

106 
picy
 = 
DB_LOCK_RANDOM
;

108 
LD_YOUNGEST
:

109 
	`FLAG_CHECK
(
picy
);

110 
picy
 = 
DB_LOCK_YOUNGEST
;

115 
	`_debug_check
();

116 
t
 = 
vp
->
	`lock_de
nvp, 
ag
, 
picy
, 
NULL
);

117 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "lock detect");

118  (
su
);

119 
	}
}

128 
	$t_LockG
(

, 
objc
, 
objv
, 
vp
)

129 
T_Ip
 *

;

130 
objc
;

131 
T_Obj
 *
CONST
 
objv
[];

132 
DB_ENV
 *
vp
;

134 cڡ *
lgts
[] = {

136 
NULL


138 
	elgts
 {

139 
LGNOWAIT


141 
DBT
 
obj
;

142 
T_Obj
 *
s
;

143 *
mp
;

144 
db_lockmode_t
 
mode
;

145 
u_t32_t
 
ag
, 
lockid
;

146 
obj
, 
tdex
, 
su
, 
t
;

147 
wme
[
MSG_SIZE
];

149 
su
 = 
TCL_OK
;

150 
obj
 = 0;

151 
	`memt
(
wme
, 0, 
MSG_SIZE
);

152 i(
objc
 != 5 && objc != 6) {

153 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-nowait? mode id obj");

154  (
TCL_ERROR
);

162 
	`memt
(&
obj
, 0, (obj));

164 i((
su
 =

165 
	`_GUI32
(

, 
objv
[
objc
-2], &
lockid
)!
TCL_OK
)

166  (
su
);

168 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-1], &
mp
,

169 &
obj
.
size
, &
obj
);

170 i(
t
 != 0) {

171 
su
 = 
	`_RuSup
(

, 
t
,

172 
	`DB_RETOK_STD
(
t
), "lock get");

173  (
su
);

175 
obj
.
da
 = 
mp
;

176 i((
su
 = 
	`_LockMode
(

, 
objv
[(
objc
 - 3)], &
mode
)!
TCL_OK
)

177 
out
;

182 
ag
 = 0;

183 i(
objc
 == 6) {

184 i(
	`T_GIndexFromObj
(

, 
objv
[(
objc
 - 4)],

185 
lgts
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
)

186  (
	`IS_HELP
(
objv
[(
objc
 - 4)]));

187 (
lgts
)
tdex
) {

188 
LGNOWAIT
:

189 
ag
 |
DB_LOCK_NOWAIT
;

194 
su
 = 
	`_GThisLock
(

, 
vp
, 
lockid
, 
ag
, &
obj
, 
mode
, 
wme
);

195 i(
su
 =
TCL_OK
) {

196 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

197 
	`T_SObjResu
(

, 
s
);

199 
out
:

200 i(
obj
)

201 
	`__os_
(
vp
, 
mp
);

202  (
su
);

203 
	}
}

212 
	$t_LockSt
(

, 
objc
, 
objv
, 
vp
)

213 
T_Ip
 *

;

214 
objc
;

215 
T_Obj
 *
CONST
 
objv
[];

216 
DB_ENV
 *
vp
;

218 
DB_LOCK_STAT
 *

;

219 
T_Obj
 *
s
;

220 
su
, 
t
;

222 
su
 = 
TCL_OK
;

226 i(
objc
 != 2) {

227 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

228  (
TCL_ERROR
);

230 
	`_debug_check
();

231 
t
 = 
vp
->
	`lock_
nvp, &

, 0);

232 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "lock stat");

233 i(
su
 =
TCL_ERROR
)

234  (
su
);

239 
s
 = 
	`T_NewObj
();

240 #ifde
HAVE_STATISTICS


244 
	`MAKE_STAT_LIST
("Regi size", 

->
_gsize
);

245 
	`MAKE_STAT_LIST
("Laodock ID", 

->
_id
);

246 
	`MAKE_STAT_LIST
("Cumaximum unudock ID", 

->
_cur_maxid
);

247 
	`MAKE_STAT_LIST
("Maximumocks", 

->
_maxlocks
);

248 
	`MAKE_STAT_LIST
("Maximumocks", 

->
_maxlocks
);

249 
	`MAKE_STAT_LIST
("Maximum objes", 

->
_maxobjes
);

250 
	`MAKE_STAT_LIST
("Lock modes", 

->
_nmodes
);

251 
	`MAKE_STAT_LIST
("Cunumb olocks", 

->
_ocks
);

252 
	`MAKE_STAT_LIST
("Maximumumb olocksr", 

->
_maxocks
);

253 
	`MAKE_STAT_LIST
("Cunumb olocks", 

->
_ocks
);

254 
	`MAKE_STAT_LIST
("Maximumumb olocksr", 

->
_maxocks
);

255 
	`MAKE_STAT_LIST
("Cunumb oobjes", 

->
_nobjes
);

256 
	`MAKE_STAT_LIST
("Maximumumb oobjesr", 

->
_maxnobjes
);

257 
	`MAKE_STAT_LIST
("Lockeques", 

->
_eques
);

258 
	`MAKE_STAT_LIST
("Locks", 

->
_Ės
);

259 
	`MAKE_STAT_LIST
("Lock upgdes", 

->
_nupgde
);

260 
	`MAKE_STAT_LIST
("Lock downgdes", 

->
_ndowngde
);

261 
	`MAKE_STAT_LIST
("Number of conflictedocks for which we waited",

262 

->
_lock_wa
);

263 
	`MAKE_STAT_LIST
("Number of conflictedocks for which we didot wait",

264 

->
_lock_nowa
);

265 
	`MAKE_STAT_LIST
("Ddlockdeed", 

->
_nddlocks
);

266 
	`MAKE_STAT_LIST
("Numb ogiچock was", 

->
_gi_wa
);

267 
	`MAKE_STAT_LIST
("Numb ogiچockowas", 

->
_gi_nowa
);

268 
	`MAKE_STAT_LIST
("Numb oobjeoti was", 

->
_objs_wa
);

269 
	`MAKE_STAT_LIST
("Number of objectllocationowaits",

270 

->
_objs_nowa
);

271 
	`MAKE_STAT_LIST
("Number ofockerllocation waits",

272 

->
_locks_wa
);

273 
	`MAKE_STAT_LIST
("Number ofockerllocationowaits",

274 

->
_locks_nowa
);

275 
	`MAKE_STAT_LIST
("Numb olockoti was", 

->
_locks_wa
);

276 
	`MAKE_STAT_LIST
(

277 "Numb olockotiڂowas", 

->
_locks_nowa
);

278 
	`MAKE_STAT_LIST
("Maximum hash buckgth", 

->
_hash_n
);

279 
	`MAKE_STAT_LIST
("Lockimeouvue", 

->
_locktimeout
);

280 
	`MAKE_STAT_LIST
("Numb olockimeouts", 

->
_ocktimeouts
);

281 
	`MAKE_STAT_LIST
("Tniځimeouvue", 

->
_tximeout
);

282 
	`MAKE_STAT_LIST
("Numb oiځimeouts", 

->
_ximeouts
);

284 
	`T_SObjResu
(

, 
s
);

285 
r
:

286 
	`__os_u
(
vp
, 

);

287  (
su
);

288 
	}
}

297 
	$t_LockTimeout
(

, 
objc
, 
objv
, 
vp
)

298 
T_Ip
 *

;

299 
objc
;

300 
T_Obj
 *
CONST
 
objv
[];

301 
DB_ENV
 *
vp
;

303 
timeout
;

304 
su
, 
t
;

309 i(
objc
 != 3) {

310 
	`T_WrgNumArgs
(

, 2, 
objv
, "?timeout?");

311  (
TCL_ERROR
);

313 
su
 = 
	`T_GLgFromObj
(

, 
objv
[2], &
timeout
);

314 i(
su
 !
TCL_OK
)

315  (
su
);

316 
	`_debug_check
();

317 
t
 = 
vp
->
	`t_timeout
nvp, (
u_t32_t
)
timeout
, 
DB_SET_LOCK_TIMEOUT
);

318 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "lockimeout");

319  (
su
);

320 
	}
}

327 
	$lock_Cmd
(
Da
, 

, 
objc
, 
objv
)

328 
ClDa
 
Da
;

329 
T_Ip
 *

;

330 
objc
;

331 
T_Obj
 *
CONST
 
objv
[];

333 cڡ *
lkcmds
[] = {

335 
NULL


337 
	elkcmds
 {

338 
LKPUT


340 
DB_ENV
 *
v
;

341 
DB_LOCK
 *
lock
;

342 
DBTCL_INFO
 *
lk
;

343 
cmddex
, 
su
, 
t
;

345 
	`T_RetResu
(

);

346 
lock
 = (
DB_LOCK
 *)
Da
;

347 
lk
 = 
	`_PToInfo
((*)
lock
);

348 
su
 = 
TCL_OK
;

350 i(
lock
 =
NULL
) {

351 
	`T_SResu
(

, "NULLock", 
TCL_STATIC
);

352  (
TCL_ERROR
);

354 i(
lk
 =
NULL
) {

355 
	`T_SResu
(

, "NULLock infpor", 
TCL_STATIC
);

356  (
TCL_ERROR
);

359 
v
 = 
	`NAME_TO_ENV
(
lk
->
i_
->
i_me
);

363 i(
objc
 != 2) {

364 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

365  (
TCL_ERROR
);

371 i(
	`T_GIndexFromObj
(

,

372 
objv
[1], 
lkcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

373  (
	`IS_HELP
(
objv
[1]));

375 (
lkcmds
)
cmddex
) {

376 
LKPUT
:

377 
	`_debug_check
();

378 
t
 = 
v
->
	`lock_put
nv, 
lock
);

379 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

381 ()
	`T_DeCommd
(

, 
lk
->
i_me
);

382 
	`_DeInfo
(
lk
);

383 
	`__os_
(
v
, 
lock
);

386  (
su
);

387 
	}
}

395 
	$t_LockVec
(

, 
objc
, 
objv
, 
vp
)

396 
T_Ip
 *

;

397 
objc
;

398 
T_Obj
 *
CONST
 
objv
[];

399 
DB_ENV
 *
vp
;

401 cڡ *
lvts
[] = {

403 
NULL


405 
	elvts
 {

406 
LVNOWAIT


408 cڡ *
lks
[] = {

414 
NULL


416 
	elks
 {

417 
LKGET
,

418 
LKPUT
,

419 
LKPUTALL
,

420 
LKPUTOBJ
,

421 
LKTIMEOUT


424 
DB_LOCK
 *
lock
;

425 
DB_LOCKREQ
 
li
;

426 
DBT
 
obj
;

427 
T_Obj
 **
myobjv
, *
s
, *
this
;

428 *
mp
;

429 
u_t32_t
 
ag
, 
lockid
;

430 
obj
, 
i
, 
myobjc
, 
tdex
, 
su
, 
t
;

431 *
lockme
, 
msg
[
MSG_SIZE
], 
wme
[MSG_SIZE];

433 
su
 = 
TCL_OK
;

434 
	`memt
(
wme
, 0, 
MSG_SIZE
);

435 
	`memt
(&
li
, 0, (
DB_LOCKREQ
));

436 
ag
 = 0;

437 
obj
 = 0;

438 
mp
 = 
NULL
;

443 i(
	`T_GIndexFromObj
(

, 
objv
[2],

444 
lvts
, "ti", 
TCL_EXACT
, &
tdex
=
TCL_OK
) {

445 (
lvts
)
tdex
) {

446 
LVNOWAIT
:

447 
ag
 |
DB_LOCK_NOWAIT
;

450 
i
 = 3;

452 i(
	`IS_HELP
(
objv
[2]=
TCL_OK
)

453  (
TCL_OK
);

454 
	`T_RetResu
(

);

455 
i
 = 2;

461 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
lockid
);

462 i(
su
 !
TCL_OK
)

463  (
su
);

470 
s
 = 
	`T_NewLiObj
(0, 
NULL
);

471 
i
 < 
objc
) {

475 
lock
 = 
NULL
;

476 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

477 &
myobjc
, &
myobjv
);

478 i(
su
 =
TCL_OK
)

479 
i
++;

488 i(
	`T_GIndexFromObj
(

, 
myobjv
[0],

489 
lks
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

490 
su
 = 
	`IS_HELP
(
myobjv
[0]);

491 
r
;

493 (
lks
)
tdex
) {

494 
LKGET
:

495 i(
myobjc
 != 3) {

496 
	`T_WrgNumArgs
(

, 1, 
myobjv
,

498 
su
 = 
TCL_ERROR
;

499 
r
;

501 
su
 = 
	`_LockMode
(

, 
myobjv
[2], &
li
.
mode
);

502 i(
su
 !
TCL_OK
)

503 
r
;

504 
t
 = 
	`_CyObjBys
(

, 
myobjv
[1], &
mp
,

505 &
obj
.
size
, &
obj
);

506 i(
t
 != 0) {

507 
su
 = 
	`_RuSup
(

, 
t
,

508 
	`DB_RETOK_STD
(
t
), "lock vec");

509  (
su
);

511 
obj
.
da
 = 
mp
;

512 
t
 = 
	`_GThisLock
(

, 
vp
, 
lockid
, 
ag
,

513 &
obj
, 
li
.
mode
, 
wme
);

514 i(
t
 != 0) {

515 
su
 = 
	`_RuSup
(

, 
t
,

516 
	`DB_RETOK_STD
(
t
), "lock vec");

517 
this
 = 
	`T_NewIObj
(
t
);

518 ()
	`T_LiObjAdEmt
(

, 
s
,

519 
this
);

520 
r
;

522 
this
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

523 ()
	`T_LiObjAdEmt
(

, 
s
, 
this
);

524 i(
obj
 && 
mp
 !
NULL
) {

525 
	`__os_
(
vp
, 
mp
);

526 
obj
 = 0;

529 
LKPUT
:

530 i(
myobjc
 != 2) {

531 
	`T_WrgNumArgs
(

, 1, 
myobjv
,

533 
su
 = 
TCL_ERROR
;

534 
r
;

536 
li
.

 = 
DB_LOCK_PUT
;

537 
lockme
 = 
	`T_GSgFromObj
(
myobjv
[1], 
NULL
);

538 
lock
 = 
	`NAME_TO_LOCK
(
lockme
);

539 i(
lock
 =
NULL
) {

540 
	`tf
(
msg
, 
MSG_SIZE
, "Invalidock: %s\n",

541 
lockme
);

542 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

543 
su
 = 
TCL_ERROR
;

544 
r
;

546 
li
.
lock
 = *lock;

548 
LKPUTALL
:

549 i(
myobjc
 != 1) {

550 
	`T_WrgNumArgs
(

, 1, 
myobjv
,

552 
su
 = 
TCL_ERROR
;

553 
r
;

555 
li
.

 = 
DB_LOCK_PUT_ALL
;

557 
LKPUTOBJ
:

558 i(
myobjc
 != 2) {

559 
	`T_WrgNumArgs
(

, 1, 
myobjv
,

561 
su
 = 
TCL_ERROR
;

562 
r
;

564 
li
.

 = 
DB_LOCK_PUT_OBJ
;

565 
t
 = 
	`_CyObjBys
(

, 
myobjv
[1], &
mp
,

566 &
obj
.
size
, &
obj
);

567 i(
t
 != 0) {

568 
su
 = 
	`_RuSup
(

, 
t
,

569 
	`DB_RETOK_STD
(
t
), "lock vec");

570  (
su
);

572 
obj
.
da
 = 
mp
;

573 
li
.
obj
 = &obj;

575 
LKTIMEOUT
:

576 
li
.

 = 
DB_LOCK_TIMEOUT
;

584 
	`_debug_check
();

585 
t
 = 
vp
->
	`lock_vec
nvp, 
lockid
, 
ag
, &
li
, 1, 
NULL
);

590 
this
 = 
	`T_NewIObj
(
t
);

591 
su
 = 
	`T_LiObjAdEmt
(

, 
s
, 
this
);

592 i(
t
 !0 && 
su
 =
TCL_OK
)

593 
su
 = 
	`_RuSup
(

, 
t
,

594 
	`DB_RETOK_STD
(
t
), "lockut");

595 i(
obj
 && 
mp
 !
NULL
) {

596 
	`__os_
(
vp
, 
mp
);

597 
obj
 = 0;

604 
	`_LockPutInfo
(

, 
li
.

, 
lock
, 
lockid
, &
obj
);

607 i(
su
 =
TCL_OK
 && 
s
)

608 
	`T_SObjResu
(

, 
s
);

609 
r
:

610  (
su
);

611 
	}
}

614 
	$_LockMode
(

, 
obj
, 
mode
)

615 
T_Ip
 *

;

616 
T_Obj
 *
obj
;

617 
db_lockmode_t
 *
mode
;

619 cڡ *
lkmode
[] = {

626 
NULL


628 
	elkmode
 {

629 
LK_NG
,

630 
LK_READ
,

631 
LK_WRITE
,

632 
LK_IWRITE
,

633 
LK_IREAD
,

634 
LK_IWR


636 
tdex
;

638 i(
	`T_GIndexFromObj
(

, 
obj
, 
lkmode
, "option",

639 
TCL_EXACT
, &
tdex
!
TCL_OK
)

640  (
	`IS_HELP
(
obj
));

641 (
lkmode
)
tdex
) {

642 
LK_NG
:

643 *
mode
 = 
DB_LOCK_NG
;

645 
LK_READ
:

646 *
mode
 = 
DB_LOCK_READ
;

648 
LK_WRITE
:

649 *
mode
 = 
DB_LOCK_WRITE
;

651 
LK_IREAD
:

652 *
mode
 = 
DB_LOCK_IREAD
;

654 
LK_IWRITE
:

655 *
mode
 = 
DB_LOCK_IWRITE
;

657 
LK_IWR
:

658 *
mode
 = 
DB_LOCK_IWR
;

661  (
TCL_OK
);

662 
	}
}

665 
	$_LockPutInfo
(

, 

, 
lock
, 
lockid
, 
objp
)

666 
T_Ip
 *

;

667 
db_lock_t
 

;

668 
DB_LOCK
 *
lock
;

669 
u_t32_t
 
lockid
;

670 
DBT
 *
objp
;

672 
DBTCL_INFO
 *
p
, *
x
;

673 
found
;

675 
p
 = 
	`LIST_FIRST
(&
__db_fohd
); !
NULL
; = 
x
) {

676 
found
 = 0;

677 
x
 = 
	`LIST_NEXT
(
p
, 
s
);

678 i((

 =
DB_LOCK_PUT
 && (
p
->
i_lock
 =
lock
)) ||

679 (

 =
DB_LOCK_PUT_ALL
 && 
p
->
i_lock
 =
lockid
) ||

680 (

 =
DB_LOCK_PUT_OBJ
 && 
p
->
i_lockobj
.
da
 &&

681 
	`memcmp
(
p
->
i_lockobj
.
da
, 
objp
->da, objp->
size
) == 0))

682 
found
 = 1;

683 i(
found
) {

684 ()
	`T_DeCommd
(

, 
p
->
i_me
);

685 
	`__os_
(
NULL
, 
p
->
i_lock
);

686 
	`_DeInfo
(
p
);

689 
	}
}

692 
	$_GThisLock
(

, 
vp
, 
lockid
, 
ag
, 
objp
, 
mode
, 
wme
)

693 
T_Ip
 *

;

694 
DB_ENV
 *
vp
;

695 
u_t32_t
 
lockid
;

696 
u_t32_t
 
ag
;

697 
DBT
 *
objp
;

698 
db_lockmode_t
 
mode
;

699 *
wme
;

701 
DB_LOCK
 *
lock
;

702 
DBTCL_INFO
 *
v
, *

;

703 
su
, 
t
;

705 
su
 = 
TCL_OK
;

706 
v
 = 
	`_PToInfo
((*)
vp
);

707 i(
v
 =
NULL
) {

708 
	`T_SResu
(

, "Could fdnv info\n", 
TCL_STATIC
);

709  (
TCL_ERROR
);

711 
	`tf
(
wme
, 
MSG_SIZE
, "%s.lock%d",

712 
v
->
i_me
,nv->
i_vlockid
);

713 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_LOCK
);

714 i(

 =
NULL
) {

715 
	`T_SResu
(

, "Couldot set up info",

716 
TCL_STATIC
);

717  (
TCL_ERROR
);

719 
t
 = 
	`__os_mloc
(
vp
, (
DB_LOCK
), &
lock
);

720 i(
t
 != 0) {

721 
	`T_SResu
(

, 
	`db_
(
t
), 
TCL_STATIC
);

722  (
TCL_ERROR
);

724 
	`_debug_check
();

725 
t
 = 
vp
->
	`lock_g
nvp, 
lockid
, 
ag
, 
objp
, 
mode
, 
lock
);

726 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "lock get");

727 i(
su
 =
TCL_ERROR
) {

728 
	`__os_
(
vp
, 
lock
);

729 
	`_DeInfo
(

);

730  (
su
);

736 
t
 = 
	`__os_mloc
(
vp
, 
objp
->
size
, &

->
i_lockobj
.
da
);

737 i(
t
 != 0) {

738 
	`T_SResu
(

, "Couldot duplicate obj",

739 
TCL_STATIC
);

740 ()
vp
->
	`lock_put
nvp, 
lock
);

741 
	`__os_
(
vp
, 
lock
);

742 
	`_DeInfo
(

);

743 
su
 = 
TCL_ERROR
;

744 
r
;

746 
	`memy
(

->
i_lockobj
.
da
, 
objp
->da, objp->
size
);

747 

->
i_lockobj
.
size
 = 
objp
->size;

748 
v
->
i_vlockid
++;

749 

->
i_
 = 
v
;

750 

->
i_lock
 = 
lockid
;

751 
	`_SInfoDa
(

, 
lock
);

752 ()
	`T_CeObjCommd
(

, 
wme
,

753 (
T_ObjCmdProc
 *)
lock_Cmd
, (
ClDa
)
lock
, 
NULL
);

754 
r
:

755  (
su
);

756 
	}
}

	@../tcl/tcl_log.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/log.h
"

16 
	~"dbc/t_db.h
"

18 #ifde
CONFIG_TEST


19 
t_LogcG
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*, 
DB_LOGC
 *));

28 
	$t_LogArchive
(

, 
objc
, 
objv
, 
vp
)

29 
T_Ip
 *

;

30 
objc
;

31 
T_Obj
 *
CONST
 
objv
[];

32 
DB_ENV
 *
vp
;

34 cڡ *
chts
[] = {

36 
NULL


38 
	echts
 {

39 
ARCH_ABS
, 
ARCH_DATA
, 
ARCH_LOG
, 
ARCH_REMOVE


41 
T_Obj
 *
feobj
, *
s
;

42 
u_t32_t
 
ag
;

43 
i
, 
tdex
, 
su
, 
t
;

44 **
fe
, **
li
;

46 
su
 = 
TCL_OK
;

47 
ag
 = 0;

52 
i
 = 2;

53 
i
 < 
objc
) {

54 i(
	`T_GIndexFromObj
(

, 
objv
[
i
],

55 
chts
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
)

56  (
	`IS_HELP
(
objv
[
i
]));

57 
i
++;

58 (
chts
)
tdex
) {

59 
ARCH_ABS
:

60 
ag
 |
DB_ARCH_ABS
;

62 
ARCH_DATA
:

63 
ag
 |
DB_ARCH_DATA
;

65 
ARCH_LOG
:

66 
ag
 |
DB_ARCH_LOG
;

68 
ARCH_REMOVE
:

69 
ag
 |
DB_ARCH_REMOVE
;

73 
	`_debug_check
();

74 
li
 = 
NULL
;

75 
t
 = 
vp
->
	`log_chive
nvp, &
li
, 
ag
);

76 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "logrchive");

77 i(
su
 =
TCL_OK
) {

78 
s
 = 
	`T_NewLiObj
(0, 
NULL
);

79 
fe
 = 
li
; f!
NULL
 && *file != NULL; file++) {

80 
feobj
 = 
	`NewSgObj
(*
fe
, 
	`
(*file));

81 
su
 = 
	`T_LiObjAdEmt
(

, 
s
, 
feobj
);

82 i(
su
 !
TCL_OK
)

85 
	`T_SObjResu
(

, 
s
);

87 i(
li
 !
NULL
)

88 
	`__os_u
(
vp
, 
li
);

89  (
su
);

90 
	}
}

99 
	$t_LogCom
(

, 
objc
, 
objv
)

100 
T_Ip
 *

;

101 
objc
;

102 
T_Obj
 *
CONST
 
objv
[];

104 
DB_LSN
 
l0
, 
l1
;

105 
T_Obj
 *
s
;

106 
su
, 
t
;

108 
su
 = 
TCL_OK
;

112 i(
objc
 != 4) {

113 
	`T_WrgNumArgs
(

, 2, 
objv
, "lsn1sn2");

114  (
TCL_ERROR
);

117 
su
 = 
	`_GL
(

, 
objv
[2], &
l0
);

118 i(
su
 =
TCL_ERROR
)

119  (
su
);

120 
su
 = 
	`_GL
(

, 
objv
[3], &
l1
);

121 i(
su
 =
TCL_ERROR
)

122  (
su
);

124 
	`_debug_check
();

125 
t
 = 
	`log_com
(&
l0
, &
l1
);

126 
s
 = 
	`T_NewIObj
(
t
);

127 
	`T_SObjResu
(

, 
s
);

128  (
su
);

129 
	}
}

138 
	$t_LogFe
(

, 
objc
, 
objv
, 
vp
)

139 
T_Ip
 *

;

140 
objc
;

141 
T_Obj
 *
CONST
 
objv
[];

142 
DB_ENV
 *
vp
;

144 
DB_LSN
 
l
;

145 
T_Obj
 *
s
;

146 
size_t
 
n
;

147 
su
, 
t
;

148 *
me
;

150 
su
 = 
TCL_OK
;

154 i(
objc
 != 3) {

155 
	`T_WrgNumArgs
(

, 2, 
objv
, "lsn");

156  (
TCL_ERROR
);

159 
su
 = 
	`_GL
(

, 
objv
[2], &
l
);

160 i(
su
 =
TCL_ERROR
)

161  (
su
);

163 
n
 = 
MSG_SIZE
;

164 
t
 = 
ENOMEM
;

165 
me
 = 
NULL
;

166 
t
 =
ENOMEM
) {

167 i(
me
 !
NULL
)

168 
	`__os_
(
vp
, 
me
);

169 
t
 = 
	`__os_mloc
(
vp
, 
n
, &
me
);

170 i(
t
 != 0) {

171 
	`T_SResu
(

, 
	`db_
(
t
), 
TCL_STATIC
);

174 
	`_debug_check
();

175 
t
 = 
vp
->
	`log_fe
nvp, &
l
, 
me
, 
n
);

176 
n
 *= 2;

178 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "log_file");

179 i(
t
 == 0) {

180 
s
 = 
	`NewSgObj
(
me
, 
	`
(name));

181 
	`T_SObjResu
(

, 
s
);

184 i(
me
 !
NULL
)

185 
	`__os_
(
vp
, 
me
);

187  (
su
);

188 
	}
}

197 
	$t_LogFlush
(

, 
objc
, 
objv
, 
vp
)

198 
T_Ip
 *

;

199 
objc
;

200 
T_Obj
 *
CONST
 
objv
[];

201 
DB_ENV
 *
vp
;

203 
DB_LSN
 
l
, *
lp
;

204 
su
, 
t
;

206 
su
 = 
TCL_OK
;

210 i(
objc
 > 3) {

211 
	`T_WrgNumArgs
(

, 2, 
objv
, "?lsn?");

212  (
TCL_ERROR
);

215 i(
objc
 == 3) {

216 
lp
 = &
l
;

217 
su
 = 
	`_GL
(

, 
objv
[2], &
l
);

218 i(
su
 =
TCL_ERROR
)

219  (
su
);

221 
lp
 = 
NULL
;

223 
	`_debug_check
();

224 
t
 = 
vp
->
	`log_ush
nvp, 
lp
);

225 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "log_flush");

226  (
su
);

227 
	}
}

236 
	$t_LogG
(

, 
objc
, 
objv
, 
vp
)

237 
T_Ip
 *

;

238 
objc
;

239 
T_Obj
 *
CONST
 
objv
[];

240 
DB_ENV
 *
vp
;

243 
	`COMPQUIET
(
objv
, 
NULL
);

244 
	`COMPQUIET
(
objc
, 0);

245 
	`COMPQUIET
(
vp
, 
NULL
);

247 
	`T_SResu
(

, "FAIL:og_g dd\n", 
TCL_STATIC
);

248  (
TCL_ERROR
);

249 
	}
}

258 
	$t_LogPut
(

, 
objc
, 
objv
, 
vp
)

259 
T_Ip
 *

;

260 
objc
;

261 
T_Obj
 *
CONST
 
objv
[];

262 
DB_ENV
 *
vp
;

264 cڡ *
logputts
[] = {

266 
NULL


268 
	elogputts
 {

269 
LOGPUT_FLUSH


271 
DB_LSN
 
l
;

272 
DBT
 
da
;

273 
T_Obj
 *
tobj
, *
s
;

274 *
dtmp
;

275 
u_t32_t
 
ag
;

276 
da
, 
tdex
, 
su
, 
t
;

278 
su
 = 
TCL_OK
;

279 
ag
 = 0;

280 
da
 = 0;

281 i(
objc
 < 3) {

282 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args?ecord");

283  (
TCL_ERROR
);

289 
	`memt
(&
da
, 0, (data));

290 
t
 = 
	`_CyObjBys
(

, 
objv
[
objc
-1], &
dtmp
,

291 &
da
.
size
, &
da
);

292 i(
t
 != 0) {

293 
su
 = 
	`_RuSup
(

, 
t
,

294 
	`DB_RETOK_STD
(
t
), "logut");

295  (
su
);

297 
da
.d
dtmp
;

303 i(
objc
 == 4) {

304 i(
	`T_GIndexFromObj
(

, 
objv
[2],

305 
logputts
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

306  (
	`IS_HELP
(
objv
[2]));

308 (
logputts
)
tdex
) {

309 
LOGPUT_FLUSH
:

310 
ag
 = 
DB_FLUSH
;

315 i(
su
 =
TCL_ERROR
)

316  (
su
);

318 
	`_debug_check
();

319 
t
 = 
vp
->
	`log_put
nvp, &
l
, &
da
, 
ag
);

320 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "log_put");

321 i(
su
 =
TCL_ERROR
)

322  (
su
);

323 
s
 = 
	`T_NewLiObj
(0, 
NULL
);

324 
tobj
 = 
	`T_NewWideIObj
((
T_WideI
)
l
.
fe
);

325 
su
 = 
	`T_LiObjAdEmt
(

, 
s
, 
tobj
);

326 
tobj
 = 
	`T_NewWideIObj
((
T_WideI
)
l
.
offt
);

327 
su
 = 
	`T_LiObjAdEmt
(

, 
s
, 
tobj
);

328 
	`T_SObjResu
(

, 
s
);

329 i(
da
)

330 
	`__os_
(
NULL
, 
dtmp
);

331  (
su
);

332 
	}
}

340 
	$t_LogSt
(

, 
objc
, 
objv
, 
vp
)

341 
T_Ip
 *

;

342 
objc
;

343 
T_Obj
 *
CONST
 
objv
[];

344 
DB_ENV
 *
vp
;

346 
DB_LOG_STAT
 *

;

347 
T_Obj
 *
s
;

348 
su
, 
t
;

350 
su
 = 
TCL_OK
;

354 i(
objc
 != 2) {

355 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

356  (
TCL_ERROR
);

358 
	`_debug_check
();

359 
t
 = 
vp
->
	`log_
nvp, &

, 0);

360 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "log stat");

361 i(
su
 =
TCL_ERROR
)

362  (
su
);

368 
s
 = 
	`T_NewObj
();

372 #ifde
HAVE_STATISTICS


373 
	`MAKE_STAT_LIST
("Magic", 

->
_magic
);

374 
	`MAKE_STAT_LIST
("Log fVsi", 

->
_vsi
);

375 
	`MAKE_STAT_LIST
("Regi size", 

->
_gsize
);

376 
	`MAKE_STAT_LIST
("Log fmode", 

->
_mode
);

377 
	`MAKE_STAT_LIST
("Logecd cachsize", 

->
_lg_bsize
);

378 
	`MAKE_STAT_LIST
("Culog fsize", 

->
_lg_size
);

379 
	`MAKE_STAT_LIST
("Log fcdwrn", 

->
_cd
);

380 
	`MAKE_STAT_LIST
("Mbywrn", 

->
_w_mbys
);

381 
	`MAKE_STAT_LIST
("Bywr(ov Mb)", 

->
_w_bys
);

382 
	`MAKE_STAT_LIST
("Mbywrs checkpot", 

->
_wc_mbys
);

383 
	`MAKE_STAT_LIST
("Bytes written (over Mb) since checkpoint",

384 

->
_wc_bys
);

385 
	`MAKE_STAT_LIST
("Timelog wrn", 

->
_wcou
);

386 
	`MAKE_STAT_LIST
("Timesog written because cache filled up",

387 

->
_wcou_fl
);

388 
	`MAKE_STAT_LIST
("Timelogd from disk", 

->
_rcou
);

389 
	`MAKE_STAT_LIST
("Timelog flusheddisk", 

->
_scou
);

390 
	`MAKE_STAT_LIST
("Culog fnumb", 

->
_cur_fe
);

391 
	`MAKE_STAT_LIST
("Culog fofft", 

->
_cur_offt
);

392 
	`MAKE_STAT_LIST
("On-diskog fnumb", 

->
_disk_fe
);

393 
	`MAKE_STAT_LIST
("On-diskog fofft", 

->
_disk_offt
);

394 
	`MAKE_STAT_LIST
("Max commog flush", 

->
_maxcommrush
);

395 
	`MAKE_STAT_LIST
("M commog flush", 

->
_mcommrush
);

396 
	`MAKE_STAT_LIST
("Numb ogiچock was", 

->
_gi_wa
);

397 
	`MAKE_STAT_LIST
("Numb ogiچockowas", 

->
_gi_nowa
);

399 
	`T_SObjResu
(

, 
s
);

400 
r
:

401 
	`__os_u
(
vp
, 

);

402  (
su
);

403 
	}
}

412 
	$logc_Cmd
(
Da
, 

, 
objc
, 
objv
)

413 
ClDa
 
Da
;

414 
T_Ip
 *

;

415 
objc
;

416 
T_Obj
 *
CONST
 
objv
[];

418 cڡ *
logccmds
[] = {

422 
NULL


424 
	elogccmds
 {

425 
LOGCCLOSE
,

426 
LOGCGET
,

427 
LOGCVERSION


429 
DB_LOGC
 *
logc
;

430 
DBTCL_INFO
 *
logc
;

431 
T_Obj
 *
s
;

432 
u_t32_t
 
vsi
;

433 
cmddex
, 
su
, 
t
;

435 
	`T_RetResu
(

);

436 
logc
 = (
DB_LOGC
 *)
Da
;

437 
logc
 = 
	`_PToInfo
((*)
logc
);

438 
su
 = 
TCL_OK
;

440 i(
objc
 <= 1) {

441 
	`T_WrgNumArgs
(

, 1, 
objv
, "command cmdargs");

442  (
TCL_ERROR
);

444 i(
logc
 =
NULL
) {

445 
	`T_SResu
(

, "NULLogpor", 
TCL_STATIC
);

446  (
TCL_ERROR
);

448 i(
logc
 =
NULL
) {

449 
	`T_SResu
(

, "NULLogfpor", 
TCL_STATIC
);

450  (
TCL_ERROR
);

457 i(
	`T_GIndexFromObj
(

, 
objv
[1], 
logccmds
, "command",

458 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

459  (
	`IS_HELP
(
objv
[1]));

460 (
logccmds
)
cmddex
) {

461 
LOGCCLOSE
:

465 i(
objc
 > 2) {

466 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

467  (
TCL_ERROR
);

469 
	`_debug_check
();

470 
t
 = 
logc
->
	`o
(logc, 0);

471 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

473 i(
su
 =
TCL_OK
) {

474 ()
	`T_DeCommd
(

, 
logc
->
i_me
);

475 
	`_DeInfo
(
logc
);

478 
LOGCGET
:

479 
su
 = 
	`t_LogcG
(

, 
objc
, 
objv
, 
logc
);

481 
LOGCVERSION
:

485 i(
objc
 > 2) {

486 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

487  (
TCL_ERROR
);

489 
	`_debug_check
();

490 
t
 = 
logc
->
	`vsi
ogc, &
vsi
, 0);

491 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

492 "logvsi")=
TCL_OK
) {

493 
s
 = 
	`T_NewIObj
(()
vsi
);

494 
	`T_SObjResu
(

, 
s
);

499  (
su
);

500 
	}
}

503 
	$t_LogcG
(

, 
objc
, 
objv
, 
logc
)

504 
T_Ip
 *

;

505 
objc
;

506 
T_Obj
 * 
CONST
 *
objv
;

507 
DB_LOGC
 *
logc
;

509 cڡ *
logcgts
[] = {

516 
NULL


518 
	elogcgts
 {

519 
LOGCGET_CURRENT
,

520 
LOGCGET_FIRST
,

521 
LOGCGET_LAST
,

522 
LOGCGET_NEXT
,

523 
LOGCGET_PREV
,

524 
LOGCGET_SET


526 
DB_LSN
 
l
;

527 
DBT
 
da
;

528 
T_Obj
 *
daobj
, *
lli
, *
myobjv
[2], *
s
;

529 
u_t32_t
 
ag
;

530 
i
, 
myobjc
, 
tdex
, 
su
, 
t
;

532 
su
 = 
TCL_OK
;

533 
s
 = 
NULL
;

534 
ag
 = 0;

536 i(
objc
 < 3) {

537 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args?sn");

538  (
TCL_ERROR
);

545 
i
 = 2;

546 
i
 < 
objc
) {

547 i(
	`T_GIndexFromObj
(

, 
objv
[
i
],

548 
logcgts
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
)

549  (
	`IS_HELP
(
objv
[
i
]));

550 
i
++;

551 (
logcgts
)
tdex
) {

552 
LOGCGET_CURRENT
:

553 
	`FLAG_CHECK
(
ag
);

554 
ag
 |
DB_CURRENT
;

556 
LOGCGET_FIRST
:

557 
	`FLAG_CHECK
(
ag
);

558 
ag
 |
DB_FIRST
;

560 
LOGCGET_LAST
:

561 
	`FLAG_CHECK
(
ag
);

562 
ag
 |
DB_LAST
;

564 
LOGCGET_NEXT
:

565 
	`FLAG_CHECK
(
ag
);

566 
ag
 |
DB_NEXT
;

568 
LOGCGET_PREV
:

569 
	`FLAG_CHECK
(
ag
);

570 
ag
 |
DB_PREV
;

572 
LOGCGET_SET
:

573 
	`FLAG_CHECK
(
ag
);

574 
ag
 |
DB_SET
;

575 i(
i
 =
objc
) {

576 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-setsn?");

577 
su
 = 
TCL_ERROR
;

580 
su
 = 
	`_GL
(

, 
objv
[
i
++], &
l
);

585 i(
su
 =
TCL_ERROR
)

586  (
su
);

588 
	`memt
(&
da
, 0, (data));

590 
	`_debug_check
();

591 
t
 = 
logc
->
	`g
ogc, &
l
, &
da
, 
ag
);

593 
s
 = 
	`T_NewLiObj
(0, 
NULL
);

594 i(
s
 =
NULL
)

595 
memr
;

597 i(
t
 == 0) {

602 
myobjc
 = 2;

603 
myobjv
[0] = 
	`T_NewWideIObj
((
T_WideI
)
l
.
fe
);

604 
myobjv
[1] = 
	`T_NewWideIObj
((
T_WideI
)
l
.
offt
);

605 
lli
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

606 i(
lli
 =
NULL
)

607 
memr
;

609 
su
 = 
	`T_LiObjAdEmt
(

, 
s
, 
lli
);

610 
daobj
 = 
	`NewSgObj
(
da
.da, da.
size
);

611 i(
daobj
 =
NULL
) {

612 
memr
;

614 
su
 = 
	`T_LiObjAdEmt
(

, 
s
, 
daobj
);

616 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_LGGET
(ret),

619 
	`T_SObjResu
(

, 
s
);

622 
memr
: i(
s
 !
NULL
)

623 
	`T_DeRefCou
(
s
);

624 
	`T_SResu
(

, "loti faed", 
TCL_STATIC
);

627  (
su
);

628 
	}
}

	@../tcl/tcl_mp.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/t_db.h
"

20 #ifde
CONFIG_TEST


21 
mp_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

22 
pg_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
*));

23 
t_MpG
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*,

24 
DB_MPOOLFILE
 *, 
DBTCL_INFO
 *));

25 
t_Pg
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*,

26 *, 
DB_MPOOLFILE
 *, 
DBTCL_INFO
 *));

27 
t_PgIn
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*,

28 *, 
DBTCL_INFO
 *));

29 
t_PgIst
 
__P
((
T_Ip
 *, , 
T_Obj
 * 
CONST
*,

30 *, 
DBTCL_INFO
 *));

41 
	$_MpInfoDe
(

, 
mp
)

42 
T_Ip
 *

;

43 
DBTCL_INFO
 *
mp
;

45 
DBTCL_INFO
 *
x
, *
p
;

47 
p
 = 
	`LIST_FIRST
(&
__db_fohd
); !
NULL
; = 
x
) {

52 
x
 = 
	`LIST_NEXT
(
p
, 
s
);

53 i(
p
->
i_
 =
mp
 &&->
i_ty
 =
I_PG
) {

54 ()
	`T_DeCommd
(

, 
p
->
i_me
);

55 
	`_DeInfo
(
p
);

58 
	}
}

60 #ifde
CONFIG_TEST


67 
	$t_MpSync
(

, 
objc
, 
objv
, 
vp
)

68 
T_Ip
 *

;

69 
objc
;

70 
T_Obj
 *
CONST
 
objv
[];

71 
DB_ENV
 *
vp
;

74 
DB_LSN
 
l
, *
lp
;

75 
su
, 
t
;

77 
su
 = 
TCL_OK
;

78 
lp
 = 
NULL
;

82 i(
objc
 == 3) {

83 
su
 = 
	`_GL
(

, 
objv
[2], &
l
);

84 i(
su
 =
TCL_ERROR
)

85  (
su
);

86 
lp
 = &
l
;

88 i(
objc
 != 2) {

89 
	`T_WrgNumArgs
(

, 2, 
objv
, "lsn");

90  (
TCL_ERROR
);

93 
	`_debug_check
();

94 
t
 = 
vp
->
	`memp_sync
nvp, 
lp
);

95  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "memp sync"));

96 
	}
}

105 
	$t_MpTrick
(

, 
objc
, 
objv
, 
vp
)

106 
T_Ip
 *

;

107 
objc
;

108 
T_Obj
 *
CONST
 
objv
[];

109 
DB_ENV
 *
vp
;

112 
T_Obj
 *
s
;

113 
ges
, 
r
, 
su
, 
t
;

115 
su
 = 
TCL_OK
;

119 i(
objc
 != 3) {

120 
	`T_WrgNumArgs
(

, 2, 
objv
, "percent");

121  (
TCL_ERROR
);

124 
su
 = 
	`T_GIFromObj
(

, 
objv
[2], &
r
);

125 i(
su
 =
TCL_ERROR
)

126  (
su
);

128 
	`_debug_check
();

129 
t
 = 
vp
->
	`memp_ick
nvp, 
r
, &
ges
);

130 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "memprickle");

131 i(
su
 =
TCL_ERROR
)

132  (
su
);

134 
s
 = 
	`T_NewIObj
(
ges
);

135 
	`T_SObjResu
(

, 
s
);

136  (
su
);

138 
	}
}

147 
	$t_Mp
(

, 
objc
, 
objv
, 
vp
, 
v
)

148 
T_Ip
 *

;

149 
objc
;

150 
T_Obj
 *
CONST
 
objv
[];

151 
DB_ENV
 *
vp
;

152 
DBTCL_INFO
 *
v
;

154 cڡ *
mpts
[] = {

161 
NULL


163 
	empts
 {

164 
MPCREATE
,

165 
MPMODE
,

166 
MPMULTIVERSION
,

167 
MPNOMMAP
,

168 
MPPAGE
,

169 
MPRDONLY


171 
DBTCL_INFO
 *

;

172 
DB_MPOOLFILE
 *
mpf
;

173 
T_Obj
 *
s
;

174 
u_t32_t
 
ag
;

175 
i
, 
pgsize
, 
mode
, 
tdex
, 
su
, 
t
;

176 *
fe
, 
wme
[
MSG_SIZE
];

178 
su
 = 
TCL_OK
;

179 
i
 = 2;

180 
ag
 = 0;

181 
mode
 = 0;

182 
pgsize
 = 0;

183 
	`memt
(
wme
, 0, 
MSG_SIZE
);

184 
i
 < 
objc
) {

185 i(
	`T_GIndexFromObj
(

, 
objv
[
i
],

186 
mpts
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

192 i(
	`IS_HELP
(
objv
[
i
]=
TCL_OK
)

193  (
TCL_OK
);

194 
	`T_RetResu
(

);

197 
i
++;

198 (
mpts
)
tdex
) {

199 
MPCREATE
:

200 
ag
 |
DB_CREATE
;

202 
MPMODE
:

203 i(
i
 >
objc
) {

204 
	`T_WrgNumArgs
(

, 2, 
objv
,

206 
su
 = 
TCL_ERROR
;

215 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
mode
);

217 
MPMULTIVERSION
:

218 
ag
 |
DB_MULTIVERSION
;

220 
MPNOMMAP
:

221 
ag
 |
DB_NOMMAP
;

223 
MPPAGE
:

224 i(
i
 >
objc
) {

225 
	`T_WrgNumArgs
(

, 2, 
objv
,

227 
su
 = 
TCL_ERROR
;

236 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
pgsize
);

238 
MPRDONLY
:

239 
ag
 |
DB_RDONLY
;

242 i(
su
 !
TCL_OK
)

243 
r
;

248 
fe
 = 
NULL
;

249 i(
i
 !
objc
) {

250 i(
i
 !
objc
 - 1) {

251 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? ?file?");

252 
su
 = 
TCL_ERROR
;

253 
r
;

255 
fe
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

258 
	`tf
(
wme
, (newname), "%s.mp%d",

259 
v
->
i_me
,nv->
i_vmpid
);

260 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_MP
);

261 i(

 =
NULL
) {

262 
	`T_SResu
(

, "Couldot set up info",

263 
TCL_STATIC
);

264  (
TCL_ERROR
);

267 
	`_debug_check
();

268 i((
t
 = 
vp
->
	`memp_f
nvp, &
mpf
, 0)) != 0) {

269 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "mpool");

270 
	`_DeInfo
(

);

271 
r
;

278 i((
t
 = 
mpf
->
	`ݒ
(mpf, 
fe
, 
ag
, 
mode
, (
size_t
)
pgsize
)) != 0) {

279 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "mpool");

280 
	`_DeInfo
(

);

282 ()
mpf
->
	`o
(mpf, 0);

283 
r
;

290 
v
->
i_vmpid
++;

291 

->
i_
 = 
v
;

292 

->
i_pgsz
 = 
pgsize
;

293 
	`_SInfoDa
(

, 
mpf
);

294 ()
	`T_CeObjCommd
(

, 
wme
,

295 (
T_ObjCmdProc
 *)
mp_Cmd
, (
ClDa
)
mpf
, 
NULL
);

296 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

297 
	`T_SObjResu
(

, 
s
);

299 
r
:

300  (
su
);

301 
	}
}

309 
	$t_MpSt
(

, 
objc
, 
objv
, 
vp
)

310 
T_Ip
 *

;

311 
objc
;

312 
T_Obj
 *
CONST
 
objv
[];

313 
DB_ENV
 *
vp
;

315 
DB_MPOOL_STAT
 *

;

316 
DB_MPOOL_FSTAT
 **
f
, **
vef
;

317 
su
;

318 
t
;

319 
T_Obj
 *
s
;

320 
T_Obj
 *
s1
;

322 
su
 = 
TCL_OK
;

323 
vef
 = 
NULL
;

327 i(
objc
 != 2) {

328 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

329  (
TCL_ERROR
);

331 
	`_debug_check
();

332 
t
 = 
vp
->
	`memp_
nvp, &

, &
f
, 0);

333 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "memp stat");

334 i(
su
 =
TCL_ERROR
)

335  (
su
);

341 
s
 = 
	`T_NewObj
();

342 #ifde
HAVE_STATISTICS


346 
	`MAKE_STAT_LIST
("Cachsiz(gbys)", 

->
_gbys
);

347 
	`MAKE_STAT_LIST
("Cachsiz(bys)", 

->
_bys
);

348 
	`MAKE_STAT_LIST
("Numb oches", 

->
_nche
);

349 
	`MAKE_STAT_LIST
("Maximumumb oches", 

->
_max_nche
);

350 
	`MAKE_STAT_LIST
("Regi size", 

->
_gsize
);

351 
	`MAKE_STAT_LIST
("Maximum memy-md fsize", 

->
_mmsize
);

352 
	`MAKE_STAT_LIST
("Maximum ofdests", 

->
_maxݒfd
);

353 
	`MAKE_STAT_LIST
("Maximum sequtbufwres", 

->
_maxwre
);

354 
	`MAKE_STAT_LIST
(

355 "S˕ wrg maximum bufrs", 

->
_maxwre_p
);

356 
	`MAKE_STAT_LIST
("Pagemd iaddsa", 

->
_m
);

357 
	`MAKE_STAT_LIST
("Cachhs", 

->
_che_h
);

358 
	`MAKE_STAT_LIST
("Cachmiss", 

->
_che_miss
);

359 
	`MAKE_STAT_LIST
("Paged", 

->
_ge_
);

360 
	`MAKE_STAT_LIST
("Pagead in", 

->
_ge_
);

361 
	`MAKE_STAT_LIST
("Pagewrn", 

->
_ge_out
);

362 
	`MAKE_STAT_LIST
("C˪ageviis", 

->
_ro_evi
);

363 
	`MAKE_STAT_LIST
("Dtyageviis", 

->
_rw_evi
);

364 
	`MAKE_STAT_LIST
("Dtyageickd", 

->
_ge_ick
);

365 
	`MAKE_STAT_LIST
("Cachedages", 

->
_ges
);

366 
	`MAKE_STAT_LIST
("Cached c˪ages", 

->
_ge_n
);

367 
	`MAKE_STAT_LIST
("Cached dtyages", 

->
_ge_dty
);

368 
	`MAKE_STAT_LIST
("Hash bucks", 

->
_hash_bucks
);

369 
	`MAKE_STAT_LIST
("Hashookups", 

->
_hash_ches
);

370 
	`MAKE_STAT_LIST
("Lge hash cha found", 

->
_hash_lge
);

371 
	`MAKE_STAT_LIST
("Hashmtexamed", 

->
_hash_examed
);

372 
	`MAKE_STAT_LIST
("Numb ohash buckowas", 

->
_hash_nowa
);

373 
	`MAKE_STAT_LIST
("Numb ohash buck was", 

->
_hash_wa
);

374 
	`MAKE_STAT_LIST
("Maximumumber of hash bucket waits",

375 

->
_hash_max_wa
);

376 
	`MAKE_STAT_LIST
("Numb ogiچockowas", 

->
_gi_nowa
);

377 
	`MAKE_STAT_LIST
("Numb ogiچock was", 

->
_gi_wa
);

378 
	`MAKE_STAT_LIST
("Bufroz", 

->
_mvcc_oz
);

379 
	`MAKE_STAT_LIST
("Bufrthawed", 

->
_mvcc_thawed
);

380 
	`MAKE_STAT_LIST
("Froz bufrd", 

->
_mvcc_d
);

381 
	`MAKE_STAT_LIST
("Paglotis", 

->
_loc
);

382 
	`MAKE_STAT_LIST
("Bucketsxamined duringllocation",

383 

->
_loc_bucks
);

384 
	`MAKE_STAT_LIST
("Maximum bucketsxamined duringllocation",

385 

->
_loc_max_bucks
);

386 
	`MAKE_STAT_LIST
("Pageexamed durgoti", 

->
_loc_ges
);

387 
	`MAKE_STAT_LIST
("Maximumagesxamined duringllocation",

388 

->
_loc_max_ges
);

389 
	`MAKE_STAT_LIST
("Thadwag obufI/O", 

->
_io_wa
);

396 
s1
 = 
s
;

397 
vef
 = 
f
; f !
NULL
 && *fsp != NULL; fsp++) {

398 
s
 = 
	`T_NewObj
();

399 
su
 = 
	`_SLiEm
(

, 
s
, "File Name",

400 
	`
("FName"), (*
f
)->
fe_me
,

401 
	`
((*
f
)->
fe_me
));

402 i(
su
 !
TCL_OK
)

403 
r
;

404 
	`MAKE_STAT_LIST
("Pagsize", (*
f
)->
_gesize
);

405 
	`MAKE_STAT_LIST
("Pages mapped intoddress space",

406 (*
f
)->
_m
);

407 
	`MAKE_STAT_LIST
("Cachhs", (*
f
)->
_che_h
);

408 
	`MAKE_STAT_LIST
("Cachmiss", (*
f
)->
_che_miss
);

409 
	`MAKE_STAT_LIST
("Paged", (*
f
)->
_ge_
);

410 
	`MAKE_STAT_LIST
("Pagead in", (*
f
)->
_ge_
);

411 
	`MAKE_STAT_LIST
("Pagewrn", (*
f
)->
_ge_out
);

416 
su
 = 
	`T_LiObjAdEmt
(

, 
s1
, 
s
);

417 i(
su
 !
TCL_OK
)

418 
r
;

421 
	`T_SObjResu
(

, 
s1
);

422 
r
:

423 
	`__os_u
(
vp
, 

);

424 i(
vef
 !
NULL
)

425 
	`__os_u
(
vp
, 
vef
);

426  (
su
);

427 
	}
}

434 
	$mp_Cmd
(
Da
, 

, 
objc
, 
objv
)

435 
ClDa
 
Da
;

436 
T_Ip
 *

;

437 
objc
;

438 
T_Obj
 *
CONST
 
objv
[];

440 cڡ *
mpcmds
[] = {

449 
NULL


451 
	empcmds
 {

452 
MPCLOSE
,

453 
MPFSYNC
,

454 
MPGET
,

455 
MPGETCLEARLEN
,

456 
MPGETFILEID
,

457 
MPGETFTYPE
,

458 
MPGETLSNOFFSET
,

459 
MPGETPGCOOKIE


461 
DB_MPOOLFILE
 *
mp
;

462 
cmddex
, 
y
, 
ngth
, 
su
, 
t
;

463 
DBTCL_INFO
 *
mp
;

464 
T_Obj
 *
s
;

465 *
obj_me
;

466 
u_t32_t
 
vue
;

467 
t32_t
 
tv
;

468 
u_t8_t
 
feid
[
DB_FILE_ID_LEN
];

469 
DBT
 
cook
;

471 
	`T_RetResu
(

);

472 
mp
 = (
DB_MPOOLFILE
 *)
Da
;

473 
obj_me
 = 
	`T_GSgFromObj
(
objv
[0], &
ngth
);

474 
mp
 = 
	`_NameToInfo
(
obj_me
);

475 
su
 = 
TCL_OK
;

477 i(
mp
 =
NULL
) {

478 
	`T_SResu
(

, "NULL mpor", 
TCL_STATIC
);

479  (
TCL_ERROR
);

481 i(
mp
 =
NULL
) {

482 
	`T_SResu
(

, "NULL mfpor", 
TCL_STATIC
);

483  (
TCL_ERROR
);

490 i(
	`T_GIndexFromObj
(

,

491 
objv
[1], 
mpcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

492  (
	`IS_HELP
(
objv
[1]));

494 
s
 = 
NULL
;

495 (
mpcmds
)
cmddex
) {

496 
MPCLOSE
:

497 i(
objc
 != 2) {

498 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

499  (
TCL_ERROR
);

501 
	`_debug_check
();

502 
t
 = 
mp
->
	`o
(mp, 0);

503 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

505 
	`_MpInfoDe
(

, 
mp
);

506 ()
	`T_DeCommd
(

, 
mp
->
i_me
);

507 
	`_DeInfo
(
mp
);

509 
MPFSYNC
:

510 i(
objc
 != 2) {

511 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

512  (
TCL_ERROR
);

514 
	`_debug_check
();

515 
t
 = 
mp
->
	`sync
(mp);

516 
s
 = 
	`T_NewIObj
(
t
);

518 
MPGET
:

519 
su
 = 
	`t_MpG
(

, 
objc
, 
objv
, 
mp
, 
mp
);

521 
MPGETCLEARLEN
:

522 i(
objc
 != 2) {

523 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

524  (
TCL_ERROR
);

526 
t
 = 
mp
->
	`g_r_n
(mp, &
vue
);

527 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

528 "mg_r_n")=
TCL_OK
)

529 
s
 = 
	`T_NewIObj
(()
vue
);

531 
MPGETFILEID
:

532 i(
objc
 != 2) {

533 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

534  (
TCL_ERROR
);

536 
t
 = 
mp
->
	`g_feid
(mp, 
feid
);

537 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

538 "mg_feid")=
TCL_OK
)

539 
s
 = 
	`NewSgObj
((*)
feid
, 
DB_FILE_ID_LEN
);

541 
MPGETFTYPE
:

542 i(
objc
 != 2) {

543 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

544  (
TCL_ERROR
);

546 
t
 = 
mp
->
	`g_y
(mp, &
y
);

547 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

548 "mg_y")=
TCL_OK
)

549 
s
 = 
	`T_NewIObj
(
y
);

551 
MPGETLSNOFFSET
:

552 i(
objc
 != 2) {

553 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

554  (
TCL_ERROR
);

556 
t
 = 
mp
->
	`g_l_offt
(mp, &
tv
);

557 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

558 "mg_l_offt")=
TCL_OK
)

559 
s
 = 
	`T_NewIObj
(
tv
);

561 
MPGETPGCOOKIE
:

562 i(
objc
 != 2) {

563 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

564  (
TCL_ERROR
);

566 
	`memt
(&
cook
, 0, (
DBT
));

567 
t
 = 
mp
->
	`g_pgcook
(mp, &
cook
);

568 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

569 "mg_pgcook")=
TCL_OK
)

570 
s
 = 
	`T_NewByAayObj
((
u_ch
 *)
cook
.
da
,

571 ()
cook
.
size
);

578 i(
su
 =
TCL_OK
 && 
s
)

579 
	`T_SObjResu
(

, 
s
);

580  (
su
);

581 
	}
}

587 
	$t_MpG
(

, 
objc
, 
objv
, 
mp
, 
mp
)

588 
T_Ip
 *

;

589 
objc
;

590 
T_Obj
 *
CONST
 
objv
[];

591 
DB_MPOOLFILE
 *
mp
;

592 
DBTCL_INFO
 *
mp
;

594 cڡ *
mpg
[] = {

600 
NULL


602 
	empg
 {

603 
MPGET_CREATE
,

604 
MPGET_DIRTY
,

605 
MPGET_LAST
,

606 
MPGET_NEW
,

607 
MPGET_TXN


610 
DBTCL_INFO
 *

;

611 
T_Obj
 *
s
;

612 
DB_TXN
 *
txn
;

613 
db_pgno_t
 
pgno
;

614 
u_t32_t
 
ag
;

615 
i
, 
gno
, 
tdex
, 
su
, 
t
;

616 *
g
, 
msg
[
MSG_SIZE
], 
wme
[MSG_SIZE];

617 *
ge
;

619 
txn
 = 
NULL
;

620 
su
 = 
TCL_OK
;

621 
	`memt
(
wme
, 0, 
MSG_SIZE
);

622 
i
 = 2;

623 
ag
 = 0;

624 
i
 < 
objc
) {

625 i(
	`T_GIndexFromObj
(

, 
objv
[
i
],

626 
mpg
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

632 i(
	`IS_HELP
(
objv
[
i
]=
TCL_OK
)

633  (
TCL_OK
);

634 
	`T_RetResu
(

);

637 
i
++;

638 (
mpg
)
tdex
) {

639 
MPGET_CREATE
:

640 
ag
 |
DB_MPOOL_CREATE
;

642 
MPGET_DIRTY
:

643 
ag
 |
DB_MPOOL_DIRTY
;

645 
MPGET_LAST
:

646 
ag
 |
DB_MPOOL_LAST
;

648 
MPGET_NEW
:

649 
ag
 |
DB_MPOOL_NEW
;

651 
MPGET_TXN
:

652 i(
i
 =
objc
) {

653 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

654 
su
 = 
TCL_ERROR
;

657 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

658 
txn
 = 
	`NAME_TO_TXN
(
g
);

659 i(
txn
 =
NULL
) {

660 
	`tf
(
msg
, 
MSG_SIZE
,

661 "mpo g: Invidxn: %s\n", 
g
);

662 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

663 
su
 = 
TCL_ERROR
;

667 i(
su
 !
TCL_OK
)

668 
r
;

673 
gno
 = 0;

674 i(
i
 !
objc
) {

675 i(
i
 !
objc
 - 1) {

676 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args? ?pgno?");

677 
su
 = 
TCL_ERROR
;

678 
r
;

680 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
gno
);

681 i(
su
 !
TCL_OK
)

682 
r
;

685 
	`tf
(
wme
, (newname), "%s.pg%d",

686 
mp
->
i_me
, mp->
i_mgid
);

687 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_PG
);

688 i(

 =
NULL
) {

689 
	`T_SResu
(

, "Couldot set up info",

690 
TCL_STATIC
);

691  (
TCL_ERROR
);

693 
	`_debug_check
();

694 
pgno
 = (
db_pgno_t
)
gno
;

695 
t
 = 
mp
->
	`g
(mp, &
pgno
, 
NULL
, 
ag
, &
ge
);

696 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_MPGET
(ret), "mpool get");

697 i(
su
 =
TCL_ERROR
)

698 
	`_DeInfo
(

);

704 
mp
->
i_mgid
++;

705 

->
i_
 = 
mp
;

706 

->
i_pgno
 = 
pgno
;

707 

->
i_pgsz
 = 
mp
->i_pgsz;

708 
	`_SInfoDa
(

, 
ge
);

709 ()
	`T_CeObjCommd
(

, 
wme
,

710 (
T_ObjCmdProc
 *)
pg_Cmd
, (
ClDa
)
ge
, 
NULL
);

711 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

712 
	`T_SObjResu
(

, 
s
);

714 
r
:

715  (
su
);

716 
	}
}

723 
	$pg_Cmd
(
Da
, 

, 
objc
, 
objv
)

724 
ClDa
 
Da
;

725 
T_Ip
 *

;

726 
objc
;

727 
T_Obj
 *
CONST
 
objv
[];

729 cڡ *
pgcmds
[] = {

735 
NULL


737 
	epgcmds
 {

738 
PGINIT
,

739 
PGISSET
,

740 
PGNUM
,

741 
PGSIZE
,

742 
PGPUT


744 
DB_MPOOLFILE
 *
mp
;

745 
cmddex
, 
ngth
, 
su
;

746 *
obj_me
;

747 *
ge
;

748 
DBTCL_INFO
 *
pg
;

749 
T_Obj
 *
s
;

751 
	`T_RetResu
(

);

752 
ge
 = (*)
Da
;

753 
obj_me
 = 
	`T_GSgFromObj
(
objv
[0], &
ngth
);

754 
pg
 = 
	`_NameToInfo
(
obj_me
);

755 
mp
 = 
	`NAME_TO_MP
(
pg
->
i_
->
i_me
);

756 
su
 = 
TCL_OK
;

758 i(
ge
 =
NULL
) {

759 
	`T_SResu
(

, "NULLagpor", 
TCL_STATIC
);

760  (
TCL_ERROR
);

762 i(
mp
 =
NULL
) {

763 
	`T_SResu
(

, "NULL mpor", 
TCL_STATIC
);

764  (
TCL_ERROR
);

766 i(
pg
 =
NULL
) {

767 
	`T_SResu
(

, "NULLagfpor", 
TCL_STATIC
);

768  (
TCL_ERROR
);

775 i(
	`T_GIndexFromObj
(

,

776 
objv
[1], 
pgcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

777  (
	`IS_HELP
(
objv
[1]));

779 
s
 = 
NULL
;

780 (
pgcmds
)
cmddex
) {

781 
PGNUM
:

782 
s
 = 
	`T_NewWideIObj
((
T_WideI
)
pg
->
i_pgno
);

784 
PGSIZE
:

785 
s
 = 
	`T_NewWideIObj
((
T_WideI
)
pg
->
i_pgsz
);

787 
PGPUT
:

788 
su
 = 
	`t_Pg
(

, 
objc
, 
objv
, 
ge
, 
mp
, 
pg
);

790 
PGINIT
:

791 
su
 = 
	`t_PgIn
(

, 
objc
, 
objv
, 
ge
, 
pg
);

793 
PGISSET
:

794 
su
 = 
	`t_PgIst
(

, 
objc
, 
objv
, 
ge
, 
pg
);

802 i(
su
 =
TCL_OK
 && 
s
 !
NULL
)

803 
	`T_SObjResu
(

, 
s
);

804  (
su
);

805 
	}
}

808 
	$t_Pg
(

, 
objc
, 
objv
, 
ge
, 
mp
, 
pg
)

809 
T_Ip
 *

;

810 
objc
;

811 
T_Obj
 *
CONST
 
objv
[];

812 *
ge
;

813 
DB_MPOOLFILE
 *
mp
;

814 
DBTCL_INFO
 *
pg
;

816 cڡ *
pgt
[] = {

818 
NULL


820 
	epgt
 {

821 
PGDISCARD


823 
u_t32_t
 
ag
;

824 
i
, 
tdex
, 
su
, 
t
;

826 
su
 = 
TCL_OK
;

827 
i
 = 2;

828 
ag
 = 0;

829 
i
 < 
objc
) {

830 i(
	`T_GIndexFromObj
(

, 
objv
[
i
],

831 
pgt
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
)

832  (
	`IS_HELP
(
objv
[
i
]));

833 
i
++;

834 (
pgt
)
tdex
) {

835 
PGDISCARD
:

836 
ag
 |
DB_MPOOL_DISCARD
;

841 
	`_debug_check
();

842 
t
 = 
mp
->
	`put
(mp, 
ge
, 
DB_PRIORITY_UNCHANGED
, 
ag
);

844 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "page");

846 ()
	`T_DeCommd
(

, 
pg
->
i_me
);

847 
	`_DeInfo
(
pg
);

848  (
su
);

849 
	}
}

852 
	$t_PgIn
(

, 
objc
, 
objv
, 
ge
, 
pg
)

853 
T_Ip
 *

;

854 
objc
;

855 
T_Obj
 *
CONST
 
objv
[];

856 *
ge
;

857 
DBTCL_INFO
 *
pg
;

859 
T_Obj
 *
s
;

860 *
p
, *
dp
, 
wv
;

861 
ngth
, 
pgsz
, 
su
;

862 
u_ch
 *
s
;

864 
su
 = 
TCL_OK
;

865 i(
objc
 != 3) {

866 
	`T_WrgNumArgs
(

, 2, 
objv
, "val");

867  (
TCL_ERROR
);

870 
pgsz
 = 
pg
->
i_pgsz
;

871 
su
 = 
	`T_GLgFromObj
(

, 
objv
[2], &
wv
);

872 i(
su
 !
TCL_OK
) {

873 
s
 = 
	`T_GByAayFromObj
(
objv
[2], &
ngth
);

874 i(
s
 =
NULL
)

875  (
TCL_ERROR
);

876 
	`memy
(
ge
, 
s
, (
size_t
)((
ngth
 < 
pgsz
) ?ength :gsz));

877 
su
 = 
TCL_OK
;

879 
p
 = (*)
ge
;

880 
dp
 = 
p
 + ((
u_t
)
pgsz
 / ()); <ndp;++)

881 *
p
 = 
wv
;

883 
s
 = 
	`T_NewIObj
(0);

884 
	`T_SObjResu
(

, 
s
);

885  (
su
);

886 
	}
}

889 
	$t_PgIst
(

, 
objc
, 
objv
, 
ge
, 
pg
)

890 
T_Ip
 *

;

891 
objc
;

892 
T_Obj
 *
CONST
 
objv
[];

893 *
ge
;

894 
DBTCL_INFO
 *
pg
;

896 
T_Obj
 *
s
;

897 *
p
, *
dp
, 
wv
;

898 
ngth
, 
pgsz
, 
su
;

899 
u_ch
 *
s
;

901 
su
 = 
TCL_OK
;

902 i(
objc
 != 3) {

903 
	`T_WrgNumArgs
(

, 2, 
objv
, "val");

904  (
TCL_ERROR
);

907 
pgsz
 = 
pg
->
i_pgsz
;

908 
su
 = 
	`T_GLgFromObj
(

, 
objv
[2], &
wv
);

909 i(
su
 !
TCL_OK
) {

910 i((
s
 = 
	`T_GByAayFromObj
(
objv
[2], &
ngth
)=
NULL
)

911  (
TCL_ERROR
);

912 
su
 = 
TCL_OK
;

914 i(
	`memcmp
(
ge
, 
s
,

915 (
size_t
)((
ngth
 < 
pgsz
) ?ength :gsz)) != 0) {

916 
s
 = 
	`T_NewIObj
(0);

917 
	`T_SObjResu
(

, 
s
);

918  (
su
);

921 
p
 = (*)
ge
;

927 
dp
 = 
p
 + ((
u_t
)
pgsz
 / ()); <ndp;++)

928 i(*
p
 !
wv
) {

929 
s
 = 
	`T_NewIObj
(0);

930 
	`T_SObjResu
(

, 
s
);

931  (
su
);

935 
s
 = 
	`T_NewIObj
(1);

936 
	`T_SObjResu
(

, 
s
);

937  (
su
);

938 
	}
}

	@../tcl/tcl_rep.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/t_db.h
"

17 #ifde
CONFIG_TEST


26 
	$t_RCfig
(

, 
dbv
, 
li
)

27 
T_Ip
 *

;

28 
DB_ENV
 *
dbv
;

29 
T_Obj
 *
li
;

31 cڡ *
cfwhich
[] = {

36 
NULL


38 
	ecfwhich
 {

39 
REPCONF_BULK
,

40 
REPCONF_DELAYCLIENT
,

41 
REPCONF_NOAUTOINIT
,

42 
REPCONF_NOWAIT


44 cڡ *
cfoff
[] = {

47 
NULL


49 
	ecfoff
 {

50 
REPCONF_OFF
,

51 
REPCONF_ON


53 
T_Obj
 **
myobjv
, *
off
, *
which
;

54 
myobjc
, 

, 
tdex
, 
su
, 
t
;

55 
u_t32_t
 
wh
;

57 
su
 = 
	`T_LiObjGEmts
(

, 
li
, &
myobjc
, &
myobjv
);

58 
which
 = 
myobjv
[0];

59 
off
 = 
myobjv
[1];

60 i(
su
 !
TCL_OK
)

61  (
su
);

62 i(
	`T_GIndexFromObj
(

, 
which
, 
cfwhich
, "option",

63 
TCL_EXACT
, &
tdex
!
TCL_OK
)

64  (
	`IS_HELP
(
which
));

66 (
cfwhich
)
tdex
) {

67 
REPCONF_NOAUTOINIT
:

68 
wh
 = 
DB_REP_CONF_NOAUTOINIT
;

70 
REPCONF_BULK
:

71 
wh
 = 
DB_REP_CONF_BULK
;

73 
REPCONF_DELAYCLIENT
:

74 
wh
 = 
DB_REP_CONF_DELAYCLIENT
;

76 
REPCONF_NOWAIT
:

77 
wh
 = 
DB_REP_CONF_NOWAIT
;

80  (
TCL_ERROR
);

82 i(
	`T_GIndexFromObj
(

, 
off
, 
cfoff
, "option",

83 
TCL_EXACT
, &
tdex
!
TCL_OK
)

84  (
	`IS_HELP
(
off
));

85 (
cfoff
)
tdex
) {

86 
REPCONF_OFF
:

87 

 = 0;

89 
REPCONF_ON
:

90 

 = 1;

93  (
TCL_ERROR
);

95 
t
 = 
dbv
->
	`p_t_cfig
(dbv, 
wh
, 

);

96  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

98 
	}
}

108 
	$t_RGCfig
(

, 
dbv
, 
which
)

109 
T_Ip
 *

;

110 
DB_ENV
 *
dbv
;

111 
T_Obj
 *
which
;

113 cڡ *
cfwhich
[] = {

118 
NULL


120 
	ecfwhich
 {

121 
REPGCONF_BULK
,

122 
REPGCONF_DELAYCLIENT
,

123 
REPGCONF_NOAUTOINIT
,

124 
REPGCONF_NOWAIT


126 
T_Obj
 *
s
;

127 

, 
tdex
, 
su
, 
t
;

128 
u_t32_t
 
wh
;

130 i(
	`T_GIndexFromObj
(

, 
which
, 
cfwhich
, "option",

131 
TCL_EXACT
, &
tdex
!
TCL_OK
)

132  (
	`IS_HELP
(
which
));

134 
s
 = 
NULL
;

135 (
cfwhich
)
tdex
) {

136 
REPGCONF_BULK
:

137 
wh
 = 
DB_REP_CONF_BULK
;

139 
REPGCONF_DELAYCLIENT
:

140 
wh
 = 
DB_REP_CONF_DELAYCLIENT
;

142 
REPGCONF_NOAUTOINIT
:

143 
wh
 = 
DB_REP_CONF_NOAUTOINIT
;

145 
REPGCONF_NOWAIT
:

146 
wh
 = 
DB_REP_CONF_NOWAIT
;

149  (
TCL_ERROR
);

151 
t
 = 
dbv
->
	`p_g_cfig
(dbv, 
wh
, &

);

152 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

153 "v_cfig")=
TCL_OK
) {

154 
s
 = 
	`T_NewIObj
(

);

155 
	`T_SObjResu
(

, 
s
);

157  (
su
);

158 
	}
}

161 #ifde
CONFIG_TEST


170 
	$t_RE
(

, 
objc
, 
objv
, 
dbv
)

171 
T_Ip
 *

;

172 
objc
;

173 
T_Obj
 *
CONST
 
objv
[];

174 
DB_ENV
 *
dbv
;

176 
nses
, 
nves
, 
i
, 
su
, 
t
;

177 
u_t32_t
 
fu_timeout
, 
timeout
;

179 i(
objc
 != 6 && objc != 7) {

180 
	`T_WrgNumArgs
(

, 6, 
objv
,

182  (
TCL_ERROR
);

185 i((
su
 = 
	`T_GIFromObj
(

, 
objv
[2], &
nses
)!
TCL_OK
)

186  (
su
);

187 i((
su
 = 
	`T_GIFromObj
(

, 
objv
[3], &
nves
)!
TCL_OK
)

188  (
su
);

189 i((
su
 = 
	`T_GIFromObj
(

, 
objv
[4], &
i
)!
TCL_OK
)

190  (
su
);

191 i((
su
 = 
	`_GUI32
(

, 
objv
[5], &
timeout
)!
TCL_OK
)

192  (
su
);

193 
fu_timeout
 = 0;

194 i(
objc
 == 7)

195 i((
su
 = 
	`_GUI32
(

, 
objv
[5], &
timeout
)!
TCL_OK
)

196  (
su
);

198 
	`_debug_check
();

200 i((
t
 = 
dbv
->
	`p_t_iܙy
(dbv, 
i
)) != 0)

201  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

203 i((
t
 = 
dbv
->
	`p_t_timeout
(dbv, 
DB_REP_ELECTION_TIMEOUT
,

204 
timeout
)) != 0)

205  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

208 i(
fu_timeout
 !0 && (
t
 = 
dbv
->
	`p_t_timeout
(dbenv,

209 
DB_REP_FULL_ELECTION_TIMEOUT
, 
fu_timeout
)) != 0)

210  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

213 
t
 = 
dbv
->
	`p_e
(dbv, 
nses
, 
nves
, 0);

214  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "envep_elect"));

215 
	}
}

218 #ifde
CONFIG_TEST


227 
	$t_RFlush
(

, 
objc
, 
objv
, 
dbv
)

228 
T_Ip
 *

;

229 
objc
;

230 
T_Obj
 *
CONST
 
objv
[];

231 
DB_ENV
 *
dbv
;

233 
t
;

235 i(
objc
 != 2) {

236 
	`T_WrgNumArgs
(

, 2, 
objv
, "");

237  
TCL_ERROR
;

240 
	`_debug_check
();

241 
t
 = 
dbv
->
	`p_ush
(dbenv);

242  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "envep_flush"));

243 
	}
}

245 #ifde
CONFIG_TEST


254 
	$t_RSync
(

, 
objc
, 
objv
, 
dbv
)

255 
T_Ip
 *

;

256 
objc
;

257 
T_Obj
 *
CONST
 
objv
[];

258 
DB_ENV
 *
dbv
;

260 
t
;

262 i(
objc
 != 2) {

263 
	`T_WrgNumArgs
(

, 2, 
objv
, "");

264  
TCL_ERROR
;

267 
	`_debug_check
();

268 
t
 = 
dbv
->
	`p_sync
(dbenv, 0);

269  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "envep_sync"));

270 
	}
}

273 #ifde
CONFIG_TEST


282 
	$t_RL
(

, 
objc
, 
objv
, 
dbv
)

283 
T_Ip
 *

;

284 
objc
;

285 
T_Obj
 *
CONST
 
objv
[];

286 
DB_ENV
 *
dbv
;

288 
su
, 
t
;

289 
u_t32_t
 
nses
, 
skew
, 
timeout
;

291 i(
objc
 != 3) {

292 
	`T_WrgNumArgs
(

, 1, 
objv
, "{nsitesimeout clockskew}");

293  (
TCL_ERROR
);

296 i((
su
 = 
	`_GUI32
(

, 
objv
[0], &
nses
)!
TCL_OK
)

297  (
su
);

298 i((
su
 = 
	`_GUI32
(

, 
objv
[1], &
timeout
)!
TCL_OK
)

299  (
su
);

300 i((
su
 = 
	`_GUI32
(

, 
objv
[2], &
skew
)!
TCL_OK
)

301  (
su
);

302 
t
 = 
dbv
->
	`p_t_nses
(dbv, ()
nses
);

303 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

305 i(
su
 !
TCL_OK
)

306  (
su
);

307 
t
 = 
dbv
->
	`p_t_timeout
(dbv, 
DB_REP_LEASE_TIMEOUT
,

308 (
db_timeout_t
)
timeout
);

309 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

311 i(
su
 !
TCL_OK
)

312  (
su
);

313 
	`_debug_check
();

314 
t
 = 
dbv
->
	`p_t_a
(dbv, 
skew
, 0);

315  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

317 
	}
}

320 #ifde
CONFIG_TEST


329 
	$t_RLim
(

, 
objc
, 
objv
, 
dbv
)

330 
T_Ip
 *

;

331 
objc
;

332 
T_Obj
 *
CONST
 
objv
[];

333 
DB_ENV
 *
dbv
;

335 
su
, 
t
;

336 
u_t32_t
 
bys
, 
gbys
;

338 i(
objc
 != 4) {

339 
	`T_WrgNumArgs
(

, 4, 
objv
, "gbytes bytes");

340  (
TCL_ERROR
);

343 i((
su
 = 
	`_GUI32
(

, 
objv
[2], &
gbys
)!
TCL_OK
)

344  (
su
);

345 i((
su
 = 
	`_GUI32
(

, 
objv
[3], &
bys
)!
TCL_OK
)

346  (
su
);

348 
	`_debug_check
();

349 i((
t
 = 
dbv
->
	`p_t_lim
(dbv, 
gbys
, 
bys
)) != 0)

350  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

353  (
	`_RuSup
(

,

354 
t
, 
	`DB_RETOK_STD
(ret), "env set_rep_limit"));

355 
	}
}

358 #ifde
CONFIG_TEST


367 
	$t_RReque
(

, 
objc
, 
objv
, 
dbv
)

368 
T_Ip
 *

;

369 
objc
;

370 
T_Obj
 *
CONST
 
objv
[];

371 
DB_ENV
 *
dbv
;

373 
su
, 
t
;

374 
u_t32_t
 
m
, 
max
;

376 i(
objc
 != 4) {

377 
	`T_WrgNumArgs
(

, 4, 
objv
, "min max");

378  (
TCL_ERROR
);

381 i((
su
 = 
	`_GUI32
(

, 
objv
[2], &
m
)!
TCL_OK
)

382  (
su
);

383 i((
su
 = 
	`_GUI32
(

, 
objv
[3], &
max
)!
TCL_OK
)

384  (
su
);

386 
	`_debug_check
();

387 i((
t
 = 
dbv
->
	`t_p_que
(dbv, 
m
, 
max
)) != 0)

388  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

391  (
	`_RuSup
(

,

392 
t
, 
	`DB_RETOK_STD
(ret), "env set_rep_request"));

393 
	}
}

396 #ifde
CONFIG_TEST


405 
	$t_RNrchiveTimeout
(

, 
dbv
)

406 
T_Ip
 *

;

407 
DB_ENV
 *
dbv
;

409 
REGENV
 *
nv
;

410 
REGINFO
 *
f
;

412 
	`_debug_check
();

413 
f
 = 
dbv
->
gfo
;

414 
nv
 = 
f
->
imy
;

415 
	`REP_SYSTEM_LOCK
(
dbv
);

416 
	`F_CLR
(
nv
, 
DB_REGENV_REPLOCKED
);

417 
nv
->
_timeamp
 = 0;

418 
	`REP_SYSTEM_UNLOCK
(
dbv
);

420  (
	`_RuSup
(

,

421 0, 
	`DB_RETOK_STD
(0), "envest forceoarchive_timeout"));

422 
	}
}

425 #ifde
CONFIG_TEST


438 
	$t_RTnt
(

, 
objc
, 
objv
, 
dbv
, 

)

439 
T_Ip
 *

;

440 
objc
;

441 
T_Obj
 *
CONST
 
objv
[];

442 
DB_ENV
 *
dbv
;

443 
DBTCL_INFO
 *

;

445 
rg
, 
su
, 
t
;

447 i(
objc
 != 2) {

448 
	`T_WrgNumArgs
(

, 2, 
objv
, "{idransport_func");

449  (
TCL_ERROR
);

470 i(

->
i_p_eid
 !
NULL
)

471 
	`T_DeRefCou
(

->
i_p_eid
);

472 

->
i_p_eid
 = 
objv
[0];

473 
	`T_InRefCou
(

->
i_p_eid
);

474 
su
 = 
	`T_GIFromObj
(

,

475 

->
i_p_eid
, &
rg
);

476 i(
su
 !
TCL_OK
)

477  (
su
);

479 i(

->
i_p_nd
 !
NULL
)

480 
	`T_DeRefCou
(

->
i_p_nd
);

481 

->
i_p_nd
 = 
objv
[1];

482 
	`T_InRefCou
(

->
i_p_nd
);

483 
	`_debug_check
();

484 
t
 = 
dbv
->
	`p_t_t
(dbv, 
rg
, 
t_p_nd
);

485  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

487 
	}
}

490 #ifde
CONFIG_TEST


503 
	$t_RS
(

, 
objc
, 
objv
, 
dbv
)

504 
T_Ip
 *

;

505 
objc
;

506 
T_Obj
 *
CONST
 
objv
[];

507 
DB_ENV
 *
dbv
;

509 cڡ *
t
[] = {

512 
NULL


514 
	et
 {

515 
TCL_RPSTRT_CLIENT
,

516 
TCL_RPSTRT_MASTER


518 *
g
;

519 
i
, 
tdex
, 
t
;

520 
u_t32_t
 
ag
;

522 
ag
 = 0;

524 i(
objc
 != 3) {

525 
	`T_WrgNumArgs
(

, 3, 
objv
, "[-master/-client]");

526  (
TCL_ERROR
);

529 
i
 = 2;

530 
i
 < 
objc
) {

531 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
t
,

532 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

533 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

534 i(
g
[0] == '-')

535  (
	`IS_HELP
(
objv
[
i
]));

537 
	`T_RetResu
(

);

540 
i
++;

541 (
t
)
tdex
) {

542 
TCL_RPSTRT_CLIENT
:

543 
ag
 = 
DB_REP_CLIENT
;

545 
TCL_RPSTRT_MASTER
:

546 
ag
 = 
DB_REP_MASTER
;

551 
	`_debug_check
();

552 
t
 = 
dbv
->
	`p_t
(dbv, 
NULL
, 
ag
);

553  (
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "envep_start"));

554 
	}
}

557 #ifde
CONFIG_TEST


566 
	$t_RProssMesge
(

, 
objc
, 
objv
, 
dbv
)

567 
T_Ip
 *

;

568 
objc
;

569 
T_Obj
 *
CONST
 
objv
[];

570 
DB_ENV
 *
dbv
;

572 
DBT
 
cڌ
, 
c
;

573 
DB_LSN
 
rml
;

574 
T_Obj
 *
lli
, *
myobjv
[2], *
s
;

575 *
mp
, *
mp
;

576 *
msg
;

577 
eid
;

578 
l
, 
䓻c
, 
myobjc
, 
su
, 
t
;

580 i(
objc
 != 5) {

581 
	`T_WrgNumArgs
(

, 5, 
objv
, "id controlec");

582  (
TCL_ERROR
);

584 
l
 = 
䓻c
 = 0;

586 
	`memt
(&
cڌ
, 0, (control));

587 
	`memt
(&
c
, 0, (rec));

589 i((
su
 = 
	`T_GIFromObj
(

, 
objv
[2], &
eid
)!
TCL_OK
)

590  (
su
);

592 
t
 = 
	`_CyObjBys
(

, 
objv
[3], &
mp
,

593 &
cڌ
.
size
, &
l
);

594 i(
t
 != 0) {

595 
su
 = 
	`_RuSup
(

, 
t
,

596 
	`DB_RETOK_REPPMSG
(
t
), "rep_proc_msg");

597  (
su
);

599 
cڌ
.
da
 = 
mp
;

600 
t
 = 
	`_CyObjBys
(

, 
objv
[4], &
mp
,

601 &
c
.
size
, &
䓻c
);

602 i(
t
 != 0) {

603 
su
 = 
	`_RuSup
(

, 
t
,

604 
	`DB_RETOK_REPPMSG
(
t
), "rep_proc_msg");

605 
out
;

607 
c
.
da
 = 
mp
;

608 
	`_debug_check
();

609 
t
 = 
dbv
->
	`p_oss_mesge
(dbv, &
cڌ
, &
c
, 
eid
, &
rml
);

615 
su
 = 
	`_RuSup
(

, 
t
,

616 
	`DB_RETOK_REPPMSG
(
t
|| =
DB_REP_DUPMASTER
 ||

617 
t
 =
DB_REP_HOLDELECTION
,

620 i(
su
 !
TCL_OK
)

621 
out
;

635 
myobjc
 = 2;

636 
t
) {

638 
myobjv
[0] = 
	`T_NewIObj
(0);

639 
myobjv
[1] = 
	`T_NewIObj
(0);

641 
DB_REP_DUPMASTER
:

642 
myobjv
[0] = 
	`T_NewByAayObj
(

643 (
u_ch
 *)"DUPMASTER", ()
	`
("DUPMASTER"));

644 
myobjv
[1] = 
	`T_NewIObj
(0);

646 
DB_REP_HOLDELECTION
:

647 
myobjv
[0] = 
	`T_NewByAayObj
(

648 (
u_ch
 *)"HOLDELECTION", ()
	`
("HOLDELECTION"));

649 
myobjv
[1] = 
	`T_NewIObj
(0);

651 
DB_REP_IGNORE
:

652 
myobjv
[0] = 
	`T_NewLgObj
(()
rml
.
fe
);

653 
myobjv
[1] = 
	`T_NewLgObj
(()
rml
.
offt
);

654 
lli
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

655 
myobjv
[0] = 
	`T_NewByAayObj
(

656 (
u_ch
 *)"IGNORE", ()
	`
("IGNORE"));

657 
myobjv
[1] = 
lli
;

659 
DB_REP_ISPERM
:

660 
myobjv
[0] = 
	`T_NewLgObj
(()
rml
.
fe
);

661 
myobjv
[1] = 
	`T_NewLgObj
(()
rml
.
offt
);

662 
lli
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

663 
myobjv
[0] = 
	`T_NewByAayObj
(

664 (
u_ch
 *)"ISPERM", ()
	`
("ISPERM"));

665 
myobjv
[1] = 
lli
;

667 
DB_REP_NEWSITE
:

668 
myobjv
[0] = 
	`T_NewByAayObj
(

669 (
u_ch
 *)"NEWSITE", ()
	`
("NEWSITE"));

670 
myobjv
[1] = 
	`T_NewIObj
(0);

672 
DB_REP_NOTPERM
:

673 
myobjv
[0] = 
	`T_NewLgObj
(()
rml
.
fe
);

674 
myobjv
[1] = 
	`T_NewLgObj
(()
rml
.
offt
);

675 
lli
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

676 
myobjv
[0] = 
	`T_NewByAayObj
(

677 (
u_ch
 *)"NOTPERM", ()
	`
("NOTPERM"));

678 
myobjv
[1] = 
lli
;

681 
msg
 = 
	`db_
(
t
);

682 
	`T_AdResu
(

, 
msg
, 
NULL
);

683 
	`T_SECode
(

, "BkeyDB", 
msg
, 
NULL
);

684 
su
 = 
TCL_ERROR
;

685 
out
;

687 
s
 = 
	`T_NewLiObj
(
myobjc
, 
myobjv
);

688 i(
s
 !
NULL
)

689 
	`T_SObjResu
(

, 
s
);

690 
out
:

691 i(
l
)

692 
	`__os_
(
NULL
, 
mp
);

693 i(
䓻c
)

694 
	`__os_
(
NULL
, 
mp
);

696  (
su
);

697 
	}
}

700 #ifde
CONFIG_TEST


709 
	$t_RSt
(

, 
objc
, 
objv
, 
dbv
)

710 
T_Ip
 *

;

711 
objc
;

712 
T_Obj
 *
CONST
 
objv
[];

713 
DB_ENV
 *
dbv
;

715 
DB_REP_STAT
 *

;

716 
T_Obj
 *
myobjv
[2], *
s
, *
thii
, *
lli
;

717 
u_t32_t
 
ag
;

718 
myobjc
, 
su
, 
t
;

719 *
g
;

721 
ag
 = 0;

722 
su
 = 
TCL_OK
;

724 i(
objc
 > 3) {

725 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

726  (
TCL_ERROR
);

728 i(
objc
 == 3) {

729 
g
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

730 i(
	`rcmp
(
g
, "-clear") == 0)

731 
ag
 = 
DB_STAT_CLEAR
;

733 
	`T_SResu
(

,

734 "db st: unknowg", 
TCL_STATIC
);

735  (
TCL_ERROR
);

739 
	`_debug_check
();

740 
t
 = 
dbv
->
	`p_
(dbv, &

, 
ag
);

741 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

743 i(
su
 =
TCL_ERROR
)

744  (
su
);

750 
s
 = 
	`T_NewObj
();

751 #ifde
HAVE_STATISTICS


755 i(

->
_us
 =
DB_REP_MASTER
)

756 
	`MAKE_STAT_LIST
("Master", 1);

758 
	`MAKE_STAT_LIST
("Client", 1);

759 
	`MAKE_STAT_LSN
("NexLSNxed", &

->
_xt_l
);

760 
	`MAKE_STAT_LSN
("F misd LSN", &

->
_wag_l
);

761 
	`MAKE_STAT_LIST
("Bulk buffls", 

->
_bulk_fls
);

762 
	`MAKE_STAT_LIST
("Bulk bufovows", 

->
_bulk_ovows
);

763 
	`MAKE_STAT_LIST
("Bulkecded", 

->
_bulk_cds
);

764 
	`MAKE_STAT_LIST
("Bulk buf㸌srs", 

->
_bulk_srs
);

765 
	`MAKE_STAT_LIST
("Cl svieques", 

->
__svc_q
);

766 
	`MAKE_STAT_LIST
("Cl svieq miss", 

->
__svc_miss
);

767 
	`MAKE_STAT_LIST
("Cleques", 

->
__ques
);

768 
	`MAKE_STAT_LIST
("Dui ma cdis", 

->
_dupmas
);

769 
	`MAKE_STAT_LIST
("EnvmID", 

->
_v_id
);

770 
	`MAKE_STAT_LIST
("Envmiܙy", 

->
_v_iܙy
);

771 
	`MAKE_STAT_LIST
("Giڂumb", 

->
_g
);

772 
	`MAKE_STAT_LIST
("Ei giڂumb", 

->
_eg
);

773 
	`MAKE_STAT_LIST
("Sucome", 

->
_tup_come
);

774 
	`MAKE_STAT_LIST
("Duiogecdived", 

->
_log_duid
);

775 
	`MAKE_STAT_LIST
("Culogecdqueued", 

->
_log_queued
);

776 
	`MAKE_STAT_LIST
("Maximumogecdqueued", 

->
_log_queued_max
);

777 
	`MAKE_STAT_LIST
("Tٮogecdqueued", 

->
_log_queued_tٮ
);

778 
	`MAKE_STAT_LIST
("Logecdived", 

->
_log_cds
);

779 
	`MAKE_STAT_LIST
("Logecdqueed", 

->
_log_queed
);

780 
	`MAKE_STAT_LIST
("ManvmID", 

->
_ma
);

781 
	`MAKE_STAT_LIST
("Ma chges", 

->
_ma_chges
);

782 
	`MAKE_STAT_LIST
("Messages with bad generationumber",

783 

->
_msgs_badg
);

784 
	`MAKE_STAT_LIST
("Mesgeosd", 

->
_msgs_osd
);

785 
	`MAKE_STAT_LIST
("Mesgeigned f܄ecovy", 

->
_msgs_cov
);

786 
	`MAKE_STAT_LIST
("Mesgnd faus", 

->
_msgs_nd_us
);

787 
	`MAKE_STAT_LIST
("Mesge", 

->
_msgs_
);

788 
	`MAKE_STAT_LIST
("New smesges", 

->
_wses
);

789 
	`MAKE_STAT_LIST
("Numb oseliti group", 

->
_nses
);

790 
	`MAKE_STAT_LIST
("Tnsmissiچimed", 

->
_hrَes
);

791 
	`MAKE_STAT_LIST
("Outded cdis", 

->
_outded
);

792 
	`MAKE_STAT_LIST
("Tniڠd", 

->
_txns_d
);

793 
	`MAKE_STAT_LIST
("Nexgexed", 

->
_xt_pg
);

794 
	`MAKE_STAT_LIST
("F misdage", 

->
_wag_pg
);

795 
	`MAKE_STAT_LIST
("Duiageived", 

->
_pg_duid
);

796 
	`MAKE_STAT_LIST
("Pageived", 

->
_pg_cds
);

797 
	`MAKE_STAT_LIST
("Pagequeed", 

->
_pg_queed
);

798 
	`MAKE_STAT_LIST
("Eiڠhd", 

->
_eis
);

799 
	`MAKE_STAT_LIST
("Eiڠw", 

->
_eis_w
);

800 
	`MAKE_STAT_LIST
("Eiڅha", 

->
_ei_us
);

801 
	`MAKE_STAT_LIST
("Ei wr", 

->
_ei_cur_wr
);

802 
	`MAKE_STAT_LIST
("Ei giڂumb", 

->
_ei_g
);

803 
	`MAKE_STAT_LSN
("Ei max LSN", &

->
_ei_l
);

804 
	`MAKE_STAT_LIST
("Ei ses", 

->
_ei_nses
);

805 
	`MAKE_STAT_LIST
("Eiڂves", 

->
_ei_nves
);

806 
	`MAKE_STAT_LIST
("Eiڅriܙy", 

->
_ei_iܙy
);

807 
	`MAKE_STAT_LIST
("Eiځbak", 

->
_ei_tbak
);

808 
	`MAKE_STAT_LIST
("Ei ves", 

->
_ei_ves
);

809 
	`MAKE_STAT_LIST
("Ei secds", 

->
_ei_c
);

810 
	`MAKE_STAT_LIST
("Ei ucs", 

->
_ei_uc
);

811 
	`MAKE_STAT_LIST
("Start-sync operations delayed",

812 

->
_tsync_dayed
);

815 
	`T_SObjResu
(

, 
s
);

816 
r
:

817 
	`__os_u
(
dbv
, 

);

818  (
su
);

819 
	}
}

829 
	$t_RMgr
(

, 
objc
, 
objv
, 
dbv
)

830 
T_Ip
 *

;

831 
objc
;

832 
T_Obj
 *
CONST
 
objv
[];

833 
DB_ENV
 *
dbv
;

835 cڡ *
rmgr
[] = {

844 
NULL


846 
	ermgr
 {

847 
RMGR_ACK
,

848 
RMGR_LOCAL
,

849 
RMGR_MSGTH
,

850 
RMGR_NSITES
,

851 
RMGR_PRI
,

852 
RMGR_REMOTE
,

853 
RMGR_START
,

854 
RMGR_TIMEOUT


856 
T_Obj
 **
myobjv
;

857 
to
;

858 
ack
, 
i
, 
myobjc
, 
tdex
, 
su
, 
t
, 
ty
;

859 
u_t32_t
 
msgth
, 
me_ag
, 
t_ag
, 
urg
;

860 *
g
;

862 
su
 = 
TCL_OK
;

863 
ack
 = 
t
 = 
ty
 = 0;

864 
msgth
 = 1;

865 
me_ag
 = 
t_ag
 = 0;

867 i(
objc
 <= 2) {

868 
	`T_WrgNumArgs
(

, 2, 
objv
, "?args?");

869  (
TCL_ERROR
);

875 
i
 = 2;

876 
i
 < 
objc
) {

877 
	`T_RetResu
(

);

878 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
rmgr
, "option",

879 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

880 
su
 = 
	`IS_HELP
(
objv
[
i
]);

881 
r
;

883 
i
++;

884 (
rmgr
)
tdex
) {

885 
RMGR_ACK
:

886 i(
i
 >
objc
) {

887 
	`T_WrgNumArgs
(

, 2, 
objv
,

889 
su
 = 
TCL_ERROR
;

892 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

893 i(
	`rcmp
(
g
, "all") == 0)

894 
ack
 = 
DB_REPMGR_ACKS_ALL
;

895 i(
	`rcmp
(
g
, "allpeers") == 0)

896 
ack
 = 
DB_REPMGR_ACKS_ALL_PEERS
;

897 i(
	`rcmp
(
g
, "none") == 0)

898 
ack
 = 
DB_REPMGR_ACKS_NONE
;

899 i(
	`rcmp
(
g
, "one") == 0)

900 
ack
 = 
DB_REPMGR_ACKS_ONE
;

901 i(
	`rcmp
(
g
, "onepeer") == 0)

902 
ack
 = 
DB_REPMGR_ACKS_ONE_PEER
;

903 i(
	`rcmp
(
g
, "quorum") == 0)

904 
ack
 = 
DB_REPMGR_ACKS_QUORUM
;

906 
	`T_AddEInfo
(

,

908 
su
 = 
TCL_ERROR
;

911 
	`_debug_check
();

912 
t
 = 
dbv
->
	`pmgr_t_ack_picy
(dbv, 
ack
);

913 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

916 
RMGR_LOCAL
:

917 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

918 &
myobjc
, &
myobjv
);

919 i(
su
 =
TCL_OK
)

920 
i
++;

923 i(
myobjc
 != 2) {

924 
	`T_WrgNumArgs
(

, 2, 
objv
,

926 
su
 = 
TCL_ERROR
;

929 
g
 = 
	`T_GSgFromObj
(
myobjv
[0], 
NULL
);

930 i((
su
 = 
	`_GUI32
(

, 
myobjv
[1], &
urg
))

931 !
TCL_OK
)

933 
	`_debug_check
();

937 
t
 = 
dbv
->
	`pmgr_t_lol_se
(dbenv,

938 
g
, 
urg
, 0);

939 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

942 
RMGR_MSGTH
:

943 i(
i
 >
objc
) {

944 
	`T_WrgNumArgs
(

945 

, 2, 
objv
, "?-msgthth?");

946 
su
 = 
TCL_ERROR
;

949 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
msgth
);

951 
RMGR_NSITES
:

952 i(
i
 >
objc
) {

953 
	`T_WrgNumArgs
(

, 2, 
objv
,

955 
su
 = 
TCL_ERROR
;

958 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

959 i(
su
 =
TCL_OK
) {

960 
	`_debug_check
();

961 
t
 = 
dbv
->

962 
	`p_t_nses
(
dbv
, ()
urg
);

965 
RMGR_PRI
:

966 i(
i
 >
objc
) {

967 
	`T_WrgNumArgs
(

, 2, 
objv
,

969 
su
 = 
TCL_ERROR
;

972 
su
 = 
	`_GUI32
(

, 
objv
[
i
++], &
urg
);

973 i(
su
 =
TCL_OK
) {

974 
	`_debug_check
();

975 
t
 = 
dbv
->

976 
	`p_t_iܙy
(
dbv
, ()
urg
);

979 
RMGR_REMOTE
:

980 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

981 &
myobjc
, &
myobjv
);

982 i(
su
 =
TCL_OK
)

983 
i
++;

986 i(
myobjc
 != 2 && myobjc != 3) {

987 
	`T_WrgNumArgs
(

, 2, 
objv
,

989 
su
 = 
TCL_ERROR
;

995 i(
myobjc
 == 3) {

996 
g
 = 
	`T_GSgFromObj
(
myobjv
[2], 
NULL
);

997 i(
	`rcmp
(
g
, "peer") == 0)

998 
me_ag
 = 
DB_REPMGR_PEER
;

1000 
	`T_AddEInfo
(

,

1002 
su
 = 
TCL_ERROR
;

1006 
g
 = 
	`T_GSgFromObj
(
myobjv
[0], 
NULL
);

1007 i((
su
 = 
	`_GUI32
(

, 
myobjv
[1], &
urg
))

1008 !
TCL_OK
)

1010 
	`_debug_check
();

1011 
t
 = 
dbv
->
	`pmgr_add_me_se
(dbenv,

1012 
g
, 
urg
, 
NULL
, 
me_ag
);

1013 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1016 
RMGR_START
:

1017 i(
i
 >
objc
) {

1018 
	`T_WrgNumArgs
(

1019 

, 2, 
objv
, "?-start state?");

1020 
su
 = 
TCL_ERROR
;

1023 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

1024 i(
	`rcmp
(
g
, "master") == 0)

1025 
t_ag
 = 
DB_REP_MASTER
;

1026 i(
	`rcmp
(
g
, "client") == 0)

1027 
t_ag
 = 
DB_REP_CLIENT
;

1028 i(
	`rcmp
(
g
, "elect") == 0)

1029 
t_ag
 = 
DB_REP_ELECTION
;

1031 
	`T_AddEInfo
(

1032 

, "start: illegal state");

1033 
su
 = 
TCL_ERROR
;

1042 
RMGR_TIMEOUT
:

1043 
su
 = 
	`T_LiObjGEmts
(

, 
objv
[
i
],

1044 &
myobjc
, &
myobjv
);

1045 i(
su
 =
TCL_OK
)

1046 
i
++;

1049 i(
myobjc
 != 2) {

1050 
	`T_WrgNumArgs
(

, 2, 
objv
,

1052 
su
 = 
TCL_ERROR
;

1055 
g
 = 
	`T_GSgFromObj
(
myobjv
[0], 
NULL
);

1056 i(
	`rcmp
(
g
, "ack") == 0)

1057 
ty
 = 
DB_REP_ACK_TIMEOUT
;

1058 i(
	`rcmp
(
g
, "elect") == 0)

1059 
ty
 = 
DB_REP_ELECTION_TIMEOUT
;

1060 i(
	`rcmp
(
g
, "elect_retry") == 0)

1061 
ty
 = 
DB_REP_ELECTION_RETRY
;

1062 i(
	`rcmp
(
g
, "conn_retry") == 0)

1063 
ty
 = 
DB_REP_CONNECTION_RETRY
;

1065 
	`T_AddEInfo
(

,

1067 
su
 = 
TCL_ERROR
;

1070 i((
su
 = 
	`T_GLgFromObj
(

1071 

, 
myobjv
[1], &
to
)!
TCL_OK
)

1073 
	`_debug_check
();

1074 
t
 = 
dbv
->
	`p_t_timeout
(dbv, 
ty
,

1075 (
db_timeout_t
)
to
);

1076 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1084 i(
su
 !
TCL_OK
)

1085 
r
;

1091 i(
t_ag
 !0 && 
su
 =
TCL_OK
) {

1092 
	`_debug_check
();

1093 
t
 = 
dbv
->
	`pmgr_t
(dbv, ()
msgth
, 
t_ag
);

1094 
su
 = 
	`_RuSup
(

1095 

, 
t
, 
	`DB_RETOK_STD
(ret), "repmgr_start");

1097 
r
:

1098  (
su
);

1099 
	}
}

1109 
	$t_RMgrSt
(

, 
objc
, 
objv
, 
dbv
)

1110 
T_Ip
 *

;

1111 
objc
;

1112 
T_Obj
 *
CONST
 
objv
[];

1113 
DB_ENV
 *
dbv
;

1115 
DB_REPMGR_STAT
 *

;

1116 
T_Obj
 *
s
;

1117 
u_t32_t
 
ag
;

1118 
su
, 
t
;

1119 *
g
;

1121 
ag
 = 0;

1122 
su
 = 
TCL_OK
;

1124 i(
objc
 > 3) {

1125 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

1126  (
TCL_ERROR
);

1128 i(
objc
 == 3) {

1129 
g
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

1130 i(
	`rcmp
(
g
, "-clear") == 0)

1131 
ag
 = 
DB_STAT_CLEAR
;

1133 
	`T_SResu
(

,

1134 "db st: unknowg", 
TCL_STATIC
);

1135  (
TCL_ERROR
);

1139 
	`_debug_check
();

1140 
t
 = 
dbv
->
	`pmgr_
(dbv, &

, 
ag
);

1141 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

1143 i(
su
 =
TCL_ERROR
)

1144  (
su
);

1150 
s
 = 
	`T_NewObj
();

1151 #ifde
HAVE_STATISTICS


1155 
	`MAKE_STAT_LIST
("Acknowdgemus", 

->
_rm_ed
);

1156 
	`MAKE_STAT_LIST
("Mesgedayed", 

->
_msgs_queued
);

1157 
	`MAKE_STAT_LIST
("Mesgedisrded", 

->
_msgs_drݳd
);

1158 
	`MAKE_STAT_LIST
("Ciڠdrݳd", 

->
_ci_dr
);

1159 
	`MAKE_STAT_LIST
("Faede-cs", 

->
_c_
);

1162 
	`T_SObjResu
(

, 
s
);

1163 
r
:

1164 
	`__os_u
(
dbv
, 

);

1165  (
su
);

1166 
	}
}

	@../tcl/tcl_seq.c

9 
	~"db_cfig.h
"

10 #ifde
HAVE_64BIT_TYPES


12 
	~"db_t.h
"

13 #ifde
HAVE_SYSTEM_INCLUDE_FILES


14 
	~<t.h
>

16 
	~"dbc/t_db.h
"

17 
	~"dbc_auto/qu_ext.h
"

22 
t_SeqClo
 
__P
((
T_Ip
 *,

23 , 
T_Obj
 * 
CONST
*, 
DB_SEQUENCE
 *, 
DBTCL_INFO
 *));

24 
t_SeqG
 
__P
((
T_Ip
 *,

25 , 
T_Obj
 * 
CONST
*, 
DB_SEQUENCE
 *));

26 
t_SeqRemove
 
__P
((
T_Ip
 *,

27 , 
T_Obj
 * 
CONST
*, 
DB_SEQUENCE
 *, 
DBTCL_INFO
 *));

28 
t_SeqSt
 
__P
((
T_Ip
 *,

29 , 
T_Obj
 * 
CONST
*, 
DB_SEQUENCE
 *));

30 
t_SeqGFgs
 
__P
((
T_Ip
 *,

31 , 
T_Obj
 * 
CONST
*, 
DB_SEQUENCE
 *));

41 
	$q_Cmd
(
Da
, 

, 
objc
, 
objv
)

42 
ClDa
 
Da
;

43 
T_Ip
 *

;

44 
objc
;

45 
T_Obj
 *
CONST
 
objv
[];

47 cڡ *
qcmds
[] = {

57 
NULL


59 
	eqcmds
 {

60 
SEQCLOSE
,

61 
SEQGET
,

62 
SEQGETCACHESIZE
,

63 
SEQGETDB
,

64 
SEQGETFLAGS
,

65 
SEQGETKEY
,

66 
SEQGETRANGE
,

67 
SEQREMOVE
,

68 
SEQSTAT


70 
DB
 *
dbp
;

71 
DBT
 
key
;

72 
DBTCL_INFO
 *
db
, *

;

73 
DB_SEQUENCE
 *
q
;

74 
T_Obj
 *
myobjv
[2], *
s
;

75 
db_q_t
 
m
, 
max
;

76 
cmddex
, 
nche
, 
su
, 
t
;

78 
	`T_RetResu
(

);

79 
q
 = (
DB_SEQUENCE
 *)
Da
;

80 
su
 = 
TCL_OK
;

81 
db
 = 
NULL
;

82 i(
objc
 <= 1) {

83 
	`T_WrgNumArgs
(

, 1, 
objv
, "command cmdargs");

84  (
TCL_ERROR
);

86 i(
q
 =
NULL
) {

87 
	`T_SResu
(

, "NULL sequor", 
TCL_STATIC
);

88  (
TCL_ERROR
);

91 

 = 
	`_PToInfo
((*)
q
);

92 i(

 =
NULL
) {

93 
	`T_SResu
(

, "NULL infpor", 
TCL_STATIC
);

94  (
TCL_ERROR
);

101 i(
	`T_GIndexFromObj
(

,

102 
objv
[1], 
qcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

103  (
	`IS_HELP
(
objv
[1]));

105 
s
 = 
NULL
;

106 (
qcmds
)
cmddex
) {

107 
SEQGETRANGE
:

108 
t
 = 
q
->
	`g_nge
(q, &
m
, &
max
);

109 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

110 "qu g_nge")=
TCL_OK
) {

111 
myobjv
[0] = 
	`T_NewWideIObj
(
m
);

112 
myobjv
[1] = 
	`T_NewWideIObj
(
max
);

113 
s
 = 
	`T_NewLiObj
(2, 
myobjv
);

116 
SEQCLOSE
:

117 
su
 = 
	`t_SeqClo
(

, 
objc
, 
objv
, 
q
, 

);

119 
SEQREMOVE
:

120 
su
 = 
	`t_SeqRemove
(

, 
objc
, 
objv
, 
q
, 

);

122 
SEQGET
:

123 
su
 = 
	`t_SeqG
(

, 
objc
, 
objv
, 
q
);

125 
SEQSTAT
:

126 
su
 = 
	`t_SeqSt
(

, 
objc
, 
objv
, 
q
);

128 
SEQGETCACHESIZE
:

129 i(
objc
 != 2) {

130 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

131  (
TCL_ERROR
);

133 
t
 = 
q
->
	`g_chesize
(q, &
nche
);

134 i((
su
 = 
	`_RuSup
(

, 
t
,

135 
	`DB_RETOK_STD
(
t
), "qu g_chesize")=
TCL_OK
)

136 
s
 = 
	`T_NewIObj
(
nche
);

138 
SEQGETDB
:

139 i(
objc
 != 2) {

140 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

141  (
TCL_ERROR
);

143 
t
 = 
q
->
	`g_db
(q, &
dbp
);

144 i(
t
 =0 && (
db
 = 
	`_PToInfo
((*)
dbp
)=
NULL
) {

145 
	`T_SResu
(

,

146 "NULL db infpor", 
TCL_STATIC
);

147  (
TCL_ERROR
);

150 i((
su
 = 
	`_RuSup
(

, 
t
,

151 
	`DB_RETOK_STD
(
t
), "qu g_db")=
TCL_OK
)

152 
s
 = 
	`NewSgObj
(
db
->
i_me
, 
	`
(dbip->i_name));

154 
SEQGETKEY
:

155 i(
objc
 != 2) {

156 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

157  (
TCL_ERROR
);

159 
t
 = 
q
->
	`g_key
(q, &
key
);

160 i((
su
 = 
	`_RuSup
(

, 
t
,

161 
	`DB_RETOK_STD
(
t
), "qu g_key")=
TCL_OK
)

162 
s
 = 
	`T_NewByAayObj
(

163 (
u_ch
 *)
key
.
da
, ()key.
size
);

165 
SEQGETFLAGS
:

166 
su
 = 
	`t_SeqGFgs
(

, 
objc
, 
objv
, 
q
);

174 i(
su
 =
TCL_OK
 && 
s
)

175 
	`T_SObjResu
(

, 
s
);

176  (
su
);

177 
	}
}

183 
	$t_SeqSt
(

, 
objc
, 
objv
, 
q
)

184 
T_Ip
 *

;

185 
objc
;

186 
T_Obj
 *
CONST
 
objv
[];

187 
DB_SEQUENCE
 *
q
;

189 
DB_SEQUENCE_STAT
 *

;

190 
u_t32_t
 
ag
;

191 
T_Obj
 *
s
, *
agli
, *
myobjv
[2];

192 
su
, 
t
;

193 *
g
;

195 
su
 = 
TCL_OK
;

196 
ag
 = 0;

198 i(
objc
 > 3) {

199 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-clear?");

200  (
TCL_ERROR
);

203 i(
objc
 == 3) {

204 
g
 = 
	`T_GSgFromObj
(
objv
[2], 
NULL
);

205 i(
	`rcmp
(
g
, "-clear") == 0)

206 
ag
 = 
DB_STAT_CLEAR
;

208 
	`T_SResu
(

,

209 "db st: unknowg", 
TCL_STATIC
);

210  (
TCL_ERROR
);

214 
	`_debug_check
();

215 
t
 = 
q
->
	`
(q, &

, 
ag
);

216 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "db stat");

217 i(
su
 =
TCL_ERROR
)

218  (
su
);

220 
s
 = 
	`T_NewObj
();

221 
	`MAKE_STAT_LIST
("Wa", 

->
_wa
);

222 
	`MAKE_STAT_LIST
("Nwa", 

->
_nowa
);

223 
	`MAKE_WSTAT_LIST
("Cut", 

->
_cut
);

224 
	`MAKE_WSTAT_LIST
("Cached", 

->
_vue
);

225 
	`MAKE_WSTAT_LIST
("Max Cached", 

->
_ϡ_vue
);

226 
	`MAKE_WSTAT_LIST
("M", 

->
_m
);

227 
	`MAKE_WSTAT_LIST
("Max", 

->
_max
);

228 
	`MAKE_STAT_LIST
("Cachsize", 

->
_che_size
);

233 
myobjv
[0] = 
	`NewSgObj
("Fgs", 
	`
("Flags"));

234 
myobjv
[1] =

235 
	`_GFgsLi
(

, 

->
_ags
, 
	`__db_g_q_ags_
());

236 
agli
 = 
	`T_NewLiObj
(2, 
myobjv
);

237 i(
agli
 =
NULL
) {

238 
su
 = 
TCL_ERROR
;

239 
r
;

241 i((
su
 =

242 
	`T_LiObjAdEmt
(

, 
s
, 
agli
)!
TCL_OK
)

243 
r
;

245 
	`T_SObjResu
(

, 
s
);

247 
r
: 
	`__os_u
(
q
->
q_dbp
->
dbv
, 

);

248  (
su
);

249 
	}
}

255 
	$t_SeqClo
(

, 
objc
, 
objv
, 
q
, 

)

256 
T_Ip
 *

;

257 
objc
;

258 
T_Obj
 *
CONST
 
objv
[];

259 
DB_SEQUENCE
 *
q
;

260 
DBTCL_INFO
 *

;

262 
su
, 
t
;

264 
su
 = 
TCL_OK
;

265 i(
objc
 > 2) {

266 
	`T_WrgNumArgs
(

, 2, 
objv
, "");

267  (
TCL_ERROR
);

270 
	`_DeInfo
(

);

271 
	`_debug_check
();

273 
t
 = 
q
->
	`o
(seq, 0);

274 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "sequence close");

275  (
su
);

276 
	}
}

282 
	$t_SeqG
(

, 
objc
, 
objv
, 
q
)

283 
T_Ip
 *

;

284 
objc
;

285 
T_Obj
 *
CONST
 
objv
[];

286 
DB_SEQUENCE
 *
q
;

288 cڡ *
qgts
[] = {

291 
NULL


293 
	eqgts
 {

294 
SEQGET_NOSYNC
,

295 
SEQGET_TXN


297 
DB_TXN
 *
txn
;

298 
T_Obj
 *
s
;

299 
db_q_t
 
vue
;

300 
u_t32_t
 
aag
, 
d
;

301 
i
, 
d
, 
tdex
, 
su
, 
t
;

302 *
g
, 
msg
[
MSG_SIZE
];

304 
su
 = 
TCL_OK
;

305 
txn
 = 
NULL
;

306 
aag
 = 0;

308 i(
objc
 < 3) {

309 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args? delta");

310  (
TCL_ERROR
);

317 
i
 = 2;

318 
d
 = 
objc
;

319 
i
 < 
d
) {

320 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
qgts
, "option",

321 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

322 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

323 i(
g
[0] == '-') {

324 
su
 = 
	`IS_HELP
(
objv
[
i
]);

325 
out
;

327 
	`T_RetResu
(

);

330 
i
++;

331 (
qgts
)
tdex
) {

332 
SEQGET_NOSYNC
:

333 
aag
 |
DB_TXN_NOSYNC
;

335 
SEQGET_TXN
:

336 i(
i
 >
d
) {

337 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

338 
su
 = 
TCL_ERROR
;

341 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

342 
txn
 = 
	`NAME_TO_TXN
(
g
);

343 i(
txn
 =
NULL
) {

344 
	`tf
(
msg
, 
MSG_SIZE
,

345 "G: Invidxn: %s\n", 
g
);

346 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

347 
su
 = 
TCL_ERROR
;

351 i(
su
 !
TCL_OK
)

354 i(
su
 !
TCL_OK
)

355 
out
;

357 i(
i
 !
objc
 - 1) {

358 
	`T_SResu
(

,

359 "Wrgumb okey/dgiv\n", 
TCL_STATIC
);

360 
su
 = 
TCL_ERROR
;

361 
out
;

364 i((
su
 = 
	`_GUI32
(

, 
objv
[
objc
 - 1], &
d
)!
TCL_OK
)

365 
out
;

367 
t
 = 
q
->
	`g
(q, 
txn
, (
t32_t
)
d
, &
vue
, 
aag
);

368 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_DBGET
(ret), "sequence get");

369 i(
t
 == 0) {

370 
s
 = 
	`T_NewWideIObj
((
T_WideI
)
vue
);

371 
	`T_SObjResu
(

, 
s
);

373 
out
:

374  (
su
);

375 
	}
}

379 
	$t_SeqRemove
(

, 
objc
, 
objv
, 
q
, 

)

380 
T_Ip
 *

;

381 
objc
;

382 
T_Obj
 *
CONST
 
objv
[];

383 
DB_SEQUENCE
 *
q
;

384 
DBTCL_INFO
 *

;

386 cڡ *
qgts
[] = {

389 
NULL


391 
	eqgts
 {

392 
SEQGET_NOSYNC
,

393 
SEQGET_TXN


395 
DB_TXN
 *
txn
;

396 
u_t32_t
 
aag
;

397 
i
, 
d
, 
tdex
, 
su
, 
t
;

398 *
g
, 
msg
[
MSG_SIZE
];

400 
su
 = 
TCL_OK
;

401 
txn
 = 
NULL
;

402 
aag
 = 0;

404 
	`_DeInfo
(

);

406 i(
objc
 < 2) {

407 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-args?");

408  (
TCL_ERROR
);

415 
i
 = 2;

416 
d
 = 
objc
;

417 
i
 < 
d
) {

418 i(
	`T_GIndexFromObj
(

, 
objv
[
i
], 
qgts
, "option",

419 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

420 
g
 = 
	`T_GSgFromObj
(
objv
[
i
], 
NULL
);

421 i(
g
[0] == '-') {

422 
su
 = 
	`IS_HELP
(
objv
[
i
]);

423 
out
;

425 
	`T_RetResu
(

);

428 
i
++;

429 (
qgts
)
tdex
) {

430 
SEQGET_NOSYNC
:

431 
aag
 |
DB_TXN_NOSYNC
;

433 
SEQGET_TXN
:

434 i(
i
 >
d
) {

435 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-txn id?");

436 
su
 = 
TCL_ERROR
;

439 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

440 
txn
 = 
	`NAME_TO_TXN
(
g
);

441 i(
txn
 =
NULL
) {

442 
	`tf
(
msg
, 
MSG_SIZE
,

443 "Remove: Invidxn: %s\n", 
g
);

444 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

445 
su
 = 
TCL_ERROR
;

449 i(
su
 !
TCL_OK
)

452 i(
su
 !
TCL_OK
)

453 
out
;

455 
t
 = 
q
->
	`move
(q, 
txn
, 
aag
);

456 
su
 = 
	`_RuSup
(

,

457 
t
, 
	`DB_RETOK_DBGET
(ret), "sequenceemove");

458 
out
:

459  (
su
);

460 
	}
}

466 
	$t_SeqGFgs
(

, 
objc
, 
objv
, 
q
)

467 
T_Ip
 *

;

468 
objc
;

469 
T_Obj
 *
CONST
 
objv
[];

470 
DB_SEQUENCE
 *
q
;

472 
i
, 
t
, 
su
;

473 
u_t32_t
 
ags
;

474 
buf
[512];

475 
T_Obj
 *
s
;

478 
u_t32_t
 
ag
;

479 *
g
;

480 } 
q_ags
[] = {

481 { 
DB_SEQ_INC
, "-inc" },

482 { 
DB_SEQ_DEC
, "-dec" },

483 { 
DB_SEQ_WRAP
, "-wrap" },

484 { 0, 
NULL
 }

487 i(
objc
 != 2) {

488 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

489  (
TCL_ERROR
);

492 
t
 = 
q
->
	`g_ags
(q, &
ags
);

493 i((
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

494 "db g_ags")=
TCL_OK
) {

495 
buf
[0] = '\0';

497 
i
 = 0; 
q_ags
[i].
ag
 != 0; i++)

498 i(
	`LF_ISSET
(
q_ags
[
i
].
ag
)) {

499 i(
	`
(
buf
) > 0)

500 ()
	`t
(
buf
, " ", (buf));

501 ()
	`t
(

502 
buf
, 
q_ags
[
i
].
g
, (buf));

505 
s
 = 
	`NewSgObj
(
buf
, 
	`
(buf));

506 
	`T_SObjResu
(

, 
s
);

509  (
su
);

510 
	}
}

	@../tcl/tcl_txn.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/t_db.h
"

17 
t_TxnComm
 
__P
((
T_Ip
 *,

18 , 
T_Obj
 * 
CONST
 *, 
DB_TXN
 *, 
DBTCL_INFO
 *));

19 
txn_Cmd
 
__P
((
ClDa
, 
T_Ip
 *, , 
T_Obj
 * 
CONST
 *));

31 
	$_TxnInfoDe
(

, 
txn
)

32 
T_Ip
 *

;

33 
DBTCL_INFO
 *
txn
;

35 
DBTCL_INFO
 *
x
, *
p
;

37 
p
 = 
	`LIST_FIRST
(&
__db_fohd
); !
NULL
; = 
x
) {

42 
x
 = 
	`LIST_NEXT
(
p
, 
s
);

43 i(
p
->
i_
 =
txn
 &&->
i_ty
 =
I_TXN
) {

44 
	`_TxnInfoDe
(

, 
p
);

45 ()
	`T_DeCommd
(

, 
p
->
i_me
);

46 
	`_DeInfo
(
p
);

49 
	}
}

58 
	$t_TxnCheckpot
(

, 
objc
, 
objv
, 
vp
)

59 
T_Ip
 *

;

60 
objc
;

61 
T_Obj
 *
CONST
 
objv
[];

62 
DB_ENV
 *
vp
;

64 cڡ *
txnckpts
[] = {

68 
NULL


70 
	etxnckpts
 {

71 
TXNCKP_FORCE
,

72 
TXNCKP_KB
,

73 
TXNCKP_MIN


75 
u_t32_t
 
ags
;

76 
i
, 
kb
, 
m
, 
tdex
, 
su
, 
t
;

78 
su
 = 
TCL_OK
;

79 
ags
 = 0;

80 
kb
 = 
m
 = 0;

86 
i
 = 2;

87 
i
 < 
objc
) {

88 i(
	`T_GIndexFromObj
(

, 
objv
[
i
],

89 
txnckpts
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

90  (
	`IS_HELP
(
objv
[
i
]));

92 
i
++;

93 (
txnckpts
)
tdex
) {

94 
TXNCKP_FORCE
:

95 
ags
 = 
DB_FORCE
;

97 
TXNCKP_KB
:

98 i(
i
 =
objc
) {

99 
	`T_WrgNumArgs
(

, 2, 
objv
,

101 
su
 = 
TCL_ERROR
;

104 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
kb
);

106 
TXNCKP_MIN
:

107 i(
i
 =
objc
) {

108 
	`T_WrgNumArgs
(

, 2, 
objv
, "?-min min?");

109 
su
 = 
TCL_ERROR
;

112 
su
 = 
	`T_GIFromObj
(

, 
objv
[
i
++], &
m
);

116 
	`_debug_check
();

117 
t
 = 
vp
->
	`txn_checkpot
nvp, (
u_t32_t
)
kb
, (u_t32_t)
m
, 
ags
);

118 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

120  (
su
);

121 
	}
}

130 
	$t_Txn
(

, 
objc
, 
objv
, 
vp
, 
v
)

131 
T_Ip
 *

;

132 
objc
;

133 
T_Obj
 *
CONST
 
objv
[];

134 
DB_ENV
 *
vp
;

135 
DBTCL_INFO
 *
v
;

137 cڡ *
txnts
[] = {

138 #ifde
CONFIG_TEST


151 
NULL


153 
	etxnts
 {

154 #ifde
CONFIG_TEST


155 
TXNLOCK_TIMEOUT
,

156 
TXNREAD_COMMITTED
,

157 
TXNREAD_UNCOMMITTED
,

158 
TXNTIMEOUT
,

159 
TXNWAIT
,

161 
TXNNOSYNC
,

162 
TXNNOWAIT
,

163 
TXNPARENT
,

164 
TXNSNAPSHOT
,

165 
TXNSYNC
,

166 
TXNWRNOSYNC


168 
DBTCL_INFO
 *

;

169 
DB_TXN
 *

;

170 
DB_TXN
 *
txn
;

171 
T_Obj
 *
s
;

172 
u_t32_t
 
ag
;

173 
i
, 
tdex
, 
su
, 
t
;

174 *
g
, 
msg
[
MSG_SIZE
], 
wme
[MSG_SIZE];

175 #ifde
CONFIG_TEST


176 
db_timeout_t
 
lk_time
, 
tx_time
;

177 
u_t32_t
 
lk_timeag
, 
tx_timeag
;

180 
su
 = 
TCL_OK
;

181 
	`memt
(
wme
, 0, 
MSG_SIZE
);

183 

 = 
NULL
;

184 
ag
 = 0;

185 #ifde
CONFIG_TEST


186 
	`COMPQUIET
(
tx_time
, 0);

187 
	`COMPQUIET
(
lk_time
, 0);

188 
lk_timeag
 = 
tx_timeag
 = 0;

190 
i
 = 2;

191 
i
 < 
objc
) {

192 i(
	`T_GIndexFromObj
(

, 
objv
[
i
],

193 
txnts
, "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
) {

194  (
	`IS_HELP
(
objv
[
i
]));

196 
i
++;

197 (
txnts
)
tdex
) {

198 #ifde
CONFIG_TEST


199 
TXNLOCK_TIMEOUT
:

200 
lk_timeag
 = 
DB_SET_LOCK_TIMEOUT
;

201 
g_timeout
;

202 
TXNTIMEOUT
:

203 
tx_timeag
 = 
DB_SET_TXN_TIMEOUT
;

204 
g_timeout
: i(
i
 >
objc
) {

205 
	`T_WrgNumArgs
(

, 2, 
objv
,

207  (
TCL_ERROR
);

209 
su
 = 
	`T_GLgFromObj
(

, 
objv
[
i
++], (*)

210 ((
txnts
)
tdex
 =
TXNLOCK_TIMEOUT
 ?

211 &
lk_time
 : &
tx_time
));

212 i(
su
 !
TCL_OK
)

213  (
TCL_ERROR
);

215 
TXNREAD_COMMITTED
:

216 
ag
 |
DB_READ_COMMITTED
;

218 
TXNREAD_UNCOMMITTED
:

219 
ag
 |
DB_READ_UNCOMMITTED
;

221 
TXNWAIT
:

222 
ag
 |
DB_TXN_WAIT
;

225 
TXNNOSYNC
:

226 
ag
 |
DB_TXN_NOSYNC
;

228 
TXNNOWAIT
:

229 
ag
 |
DB_TXN_NOWAIT
;

231 
TXNPARENT
:

232 i(
i
 =
objc
) {

233 
	`T_WrgNumArgs
(

, 2, 
objv
,

235 
su
 = 
TCL_ERROR
;

238 
g
 = 
	`T_GSgFromObj
(
objv
[
i
++], 
NULL
);

239 

 = 
	`NAME_TO_TXN
(
g
);

240 i(

 =
NULL
) {

241 
	`tf
(
msg
, 
MSG_SIZE
,

243 
g
);

244 
	`T_SResu
(

, 
msg
, 
TCL_VOLATILE
);

245  (
TCL_ERROR
);

248 
TXNSNAPSHOT
:

249 
ag
 |
DB_TXN_SNAPSHOT
;

251 
TXNSYNC
:

252 
ag
 |
DB_TXN_SYNC
;

254 
TXNWRNOSYNC
:

255 
ag
 |
DB_TXN_WRITE_NOSYNC
;

259 
	`tf
(
wme
, (newname), "%s.txn%d",

260 
v
->
i_me
,nv->
i_vtxnid
);

261 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_TXN
);

262 i(

 =
NULL
) {

263 
	`T_SResu
(

, "Couldot set up info",

264 
TCL_STATIC
);

265  (
TCL_ERROR
);

267 
	`_debug_check
();

268 
t
 = 
vp
->
	`txn_beg
nvp, 

, &
txn
, 
ag
);

269 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

271 i(
su
 =
TCL_ERROR
)

272 
	`_DeInfo
(

);

278 
v
->
i_vtxnid
++;

279 i(

)

280 

->
i_
 = 
	`_PToInfo
(

);

282 

->
i_
 = 
v
;

283 
	`_SInfoDa
(

, 
txn
);

284 ()
	`T_CeObjCommd
(

, 
wme
,

285 (
T_ObjCmdProc
 *)
txn_Cmd
, (
ClDa
)
txn
, 
NULL
);

286 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

287 
	`T_SObjResu
(

, 
s
);

288 #ifde
CONFIG_TEST


289 i(
tx_timeag
 != 0) {

290 
t
 = 
txn
->
	`t_timeout
xn, 
tx_time
, 
tx_timeag
);

291 i(
t
 != 0) {

292 
su
 =

293 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

295 
	`_DeInfo
(

);

298 i(
lk_timeag
 != 0) {

299 
t
 = 
txn
->
	`t_timeout
xn, 
lk_time
, 
lk_timeag
);

300 i(
t
 != 0) {

301 
su
 =

302 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

304 
	`_DeInfo
(

);

309  (
su
);

310 
	}
}

319 
	$t_CDSGroup
(

, 
objc
, 
objv
, 
vp
, 
v
)

320 
T_Ip
 *

;

321 
objc
;

322 
T_Obj
 *
CONST
 
objv
[];

323 
DB_ENV
 *
vp
;

324 
DBTCL_INFO
 *
v
;

326 
DBTCL_INFO
 *

;

327 
DB_TXN
 *
txn
;

328 
T_Obj
 *
s
;

329 
su
, 
t
;

330 
wme
[
MSG_SIZE
];

332 i(
objc
 != 2) {

333 
	`T_WrgNumArgs
(

, 1, 
objv
, "env cdsgroup");

334  (
TCL_ERROR
);

337 
su
 = 
TCL_OK
;

338 
	`memt
(
wme
, 0, 
MSG_SIZE
);

340 
	`tf
(
wme
, (newname), "%s.txn%d",

341 
v
->
i_me
,nv->
i_vtxnid
);

342 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_TXN
);

343 i(

 =
NULL
) {

344 
	`T_SResu
(

, "Couldot set up info",

345 
TCL_STATIC
);

346  (
TCL_ERROR
);

348 
	`_debug_check
();

349 
t
 = 
vp
->
	`cdsgroup_beg
nvp, &
txn
);

350 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "cdsgroup");

351 i(
su
 =
TCL_ERROR
)

352 
	`_DeInfo
(

);

358 
v
->
i_vtxnid
++;

359 

->
i_
 = 
v
;

360 
	`_SInfoDa
(

, 
txn
);

361 ()
	`T_CeObjCommd
(

, 
wme
,

362 (
T_ObjCmdProc
 *)
txn_Cmd
, (
ClDa
)
txn
, 
NULL
);

363 
s
 = 
	`NewSgObj
(
wme
, 
	`
(newname));

364 
	`T_SObjResu
(

, 
s
);

366  (
su
);

367 
	}
}

376 
	$t_TxnSt
(

, 
objc
, 
objv
, 
vp
)

377 
T_Ip
 *

;

378 
objc
;

379 
T_Obj
 *
CONST
 
objv
[];

380 
DB_ENV
 *
vp
;

382 
DBTCL_INFO
 *

;

383 
DB_TXN_ACTIVE
 *
p
;

384 
DB_TXN_STAT
 *

;

385 
T_Obj
 *
myobjv
[2], *
s
, *
thii
, *
lli
;

386 
u_t32_t
 
i
;

387 
myobjc
, 
su
, 
t
;

389 
su
 = 
TCL_OK
;

393 i(
objc
 != 2) {

394 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

395  (
TCL_ERROR
);

397 
	`_debug_check
();

398 
t
 = 
vp
->
	`txn_
nvp, &

, 0);

399 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

401 i(
su
 =
TCL_ERROR
)

402  (
su
);

408 
s
 = 
	`T_NewObj
();

412 #ifde
HAVE_STATISTICS


413 
	`MAKE_STAT_LIST
("Regi size", 

->
_gsize
);

414 
	`MAKE_STAT_LSN
("LSN oϡ checkpot", &

->
_ϡ_ckp
);

415 
	`MAKE_STAT_LIST
("Timoϡ checkpot", 

->
_time_ckp
);

416 
	`MAKE_STAT_LIST
("LaxIDod", 

->
_ϡ_txnid
);

417 
	`MAKE_STAT_LIST
("Maximumxns", 

->
_maxtxns
);

418 
	`MAKE_STAT_LIST
("Numbb܋dxns", 

->
_bts
);

419 
	`MAKE_STAT_LIST
("Numbxnbegun", 

->
_nbegs
);

420 
	`MAKE_STAT_LIST
("Numb commdxns", 

->
_ncomms
);

421 
	`MAKE_STAT_LIST
("Numbivtxns", 

->
_ive
);

422 
	`MAKE_STAT_LIST
("Numb oࢭshفxns", 

->
_nsh
);

423 
	`MAKE_STAT_LIST
("Numbeedxns", 

->
_ees
);

424 
	`MAKE_STAT_LIST
("Maximumivtxns", 

->
_maxive
);

425 
	`MAKE_STAT_LIST
("Maximum spshفxns", 

->
_maxnsh
);

426 
	`MAKE_STAT_LIST
("Numb ogiچock was", 

->
_gi_wa
);

427 
	`MAKE_STAT_LIST
("Numb ogiچockowas", 

->
_gi_nowa
);

428 
i
 = 0, 
p
 = 

->
_txǼay
; i < sp->
_ive
; i++,++)

429 
	`LIST_FOREACH
(

, &
__db_fohd
, 
s
) {

430 i(

->
i_ty
 !
I_TXN
)

432 i(

->
i_ty
 =
I_TXN
 &&

433 (

->
i_tx
->
	`id
(->i_tx=
p
->
txnid
)) {

434 
	`MAKE_STAT_LSN
(

->
i_me
, &
p
->
l
);

435 i(
p
->
id
 != 0)

436 
	`MAKE_STAT_STRLIST
("Parent",

437 

->
i_
->
i_me
);

439 
	`MAKE_STAT_LIST
("Parent", 0);

444 
	`T_SObjResu
(

, 
s
);

445 
r
:

446 
	`__os_u
(
vp
, 

);

447  (
su
);

448 
	}
}

457 
	$t_TxnTimeout
(

, 
objc
, 
objv
, 
vp
)

458 
T_Ip
 *

;

459 
objc
;

460 
T_Obj
 *
CONST
 
objv
[];

461 
DB_ENV
 *
vp
;

463 
timeout
;

464 
su
, 
t
;

469 i(
objc
 != 3) {

470 
	`T_WrgNumArgs
(

, 2, 
objv
, "?timeout?");

471  (
TCL_ERROR
);

473 
su
 = 
	`T_GLgFromObj
(

, 
objv
[2], &
timeout
);

474 i(
su
 !
TCL_OK
)

475  (
su
);

476 
	`_debug_check
();

477 
t
 = 
vp
->
	`t_timeout
nvp, (
u_t32_t
)
timeout
, 
DB_SET_TXN_TIMEOUT
);

478 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

480  (
su
);

481 
	}
}

488 
	$txn_Cmd
(
Da
, 

, 
objc
, 
objv
)

489 
ClDa
 
Da
;

490 
T_Ip
 *

;

491 
objc
;

492 
T_Obj
 *
CONST
 
objv
[];

494 cڡ *
txncmds
[] = {

495 #ifde
CONFIG_TEST


506 
NULL


508 
	etxncmds
 {

509 #ifde
CONFIG_TEST


510 
TXNDISCARD
,

511 
TXNGETNAME
,

512 
TXNID
,

513 
TXNPREPARE
,

514 
TXNSETNAME
,

516 
TXNABORT
,

517 
TXNCOMMIT


519 
DBTCL_INFO
 *
txn
;

520 
DB_TXN
 *
tx
;

521 
T_Obj
 *
s
;

522 
cmddex
, 
su
, 
t
;

523 #ifde
CONFIG_TEST


524 
u_t8_t
 *
gid
, 
gy
[
DB_XIDDATASIZE
];

525 
ngth
;

526 cڡ *
me
;

529 
	`T_RetResu
(

);

530 
tx
 = (
DB_TXN
 *)
Da
;

531 
txn
 = 
	`_PToInfo
((*)
tx
);

532 
su
 = 
TCL_OK
;

533 i(
tx
 =
NULL
) {

534 
	`T_SResu
(

, "NULLxpor", 
TCL_STATIC
);

535  (
TCL_ERROR
);

537 i(
txn
 =
NULL
) {

538 
	`T_SResu
(

, "NULLxfpor", 
TCL_STATIC
);

539  (
TCL_ERROR
);

546 i(
	`T_GIndexFromObj
(

,

547 
objv
[1], 
txncmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

548  (
	`IS_HELP
(
objv
[1]));

550 
s
 = 
NULL
;

551 (
txncmds
)
cmddex
) {

552 #ifde
CONFIG_TEST


553 
TXNDISCARD
:

554 i(
objc
 != 2) {

555 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

556  (
TCL_ERROR
);

558 
	`_debug_check
();

559 
t
 = 
tx
->
	`disrd
(txnp, 0);

560 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

562 
	`_TxnInfoDe
(

, 
txn
);

563 ()
	`T_DeCommd
(

, 
txn
->
i_me
);

564 
	`_DeInfo
(
txn
);

566 
TXNID
:

567 i(
objc
 != 2) {

568 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

569  (
TCL_ERROR
);

571 
	`_debug_check
();

572 
s
 = 
	`T_NewIObj
(()
tx
->
	`id
(txnp));

574 
TXNPREPARE
:

575 i(
objc
 != 3) {

576 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

577  (
TCL_ERROR
);

579 
	`_debug_check
();

580 
gid
 = (
u_t8_t
 *)
	`T_GByAayFromObj
(
objv
[2], &
ngth
);

581 
	`memy
(
gy
, 
gid
, (
size_t
)
ngth
);

582 
t
 = 
tx
->
	`e
x, 
gy
);

590 
	`_TxnInfoDe
(

, 
txn
);

591 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

594 
TXNGETNAME
:

595 i(
objc
 != 2) {

596 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

597  (
TCL_ERROR
);

599 
	`_debug_check
();

600 
t
 = 
tx
->
	`g_me
x, &
me
);

601 i((
su
 = 
	`_RuSup
(

602 

, 
t
, 
	`DB_RETOK_STD
ԑ), "txgme")=
TCL_OK
)

603 
s
 = 
	`NewSgObj
(
me
, 
	`
(name));

605 
TXNSETNAME
:

606 i(
objc
 != 3) {

607 
	`T_WrgNumArgs
(

, 2, 
objv
, "name");

608  (
TCL_ERROR
);

610 
	`_debug_check
();

611 
t
 = 
tx
->
	`t_me
x, 
	`T_GSgFromObj
(
objv
[2], 
NULL
));

612 
su
 =

613 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret), "setname");

616 
TXNABORT
:

617 i(
objc
 != 2) {

618 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

619  (
TCL_ERROR
);

621 
	`_debug_check
();

622 
t
 = 
tx
->
	`abt
(txnp);

623 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

625 
	`_TxnInfoDe
(

, 
txn
);

626 ()
	`T_DeCommd
(

, 
txn
->
i_me
);

627 
	`_DeInfo
(
txn
);

629 
TXNCOMMIT
:

630 
su
 = 
	`t_TxnComm
(

, 
objc
, 
objv
, 
tx
, 
txn
);

631 
	`_TxnInfoDe
(

, 
txn
);

632 ()
	`T_DeCommd
(

, 
txn
->
i_me
);

633 
	`_DeInfo
(
txn
);

640 i(
su
 =
TCL_OK
 && 
s
)

641 
	`T_SObjResu
(

, 
s
);

642  (
su
);

643 
	}
}

646 
	$t_TxnComm
(

, 
objc
, 
objv
, 
tx
, 
txn
)

647 
T_Ip
 *

;

648 
objc
;

649 
T_Obj
 *
CONST
 
objv
[];

650 
DB_TXN
 *
tx
;

651 
DBTCL_INFO
 *
txn
;

653 cڡ *
commt
[] = {

657 
NULL


659 
	ecommt
 {

660 
COMNOSYNC
,

661 
COMSYNC
,

662 
COMWRNOSYNC


664 
u_t32_t
 
ag
;

665 
tdex
, 
su
, 
t
;

667 
	`COMPQUIET
(
txn
, 
NULL
);

669 
su
 = 
TCL_OK
;

670 
ag
 = 0;

671 i(
objc
 != 2 && objc != 3) {

672 
	`T_WrgNumArgs
(

, 1, 
objv
, 
NULL
);

673  (
TCL_ERROR
);

675 i(
objc
 == 3) {

676 i(
	`T_GIndexFromObj
(

, 
objv
[2], 
commt
,

677 "ti", 
TCL_EXACT
, &
tdex
!
TCL_OK
)

678  (
	`IS_HELP
(
objv
[2]));

679 (
commt
)
tdex
) {

680 
COMSYNC
:

681 
ag
 = 
DB_TXN_SYNC
;

683 
COMNOSYNC
:

684 
ag
 = 
DB_TXN_NOSYNC
;

686 
COMWRNOSYNC
:

687 
ag
 = 
DB_TXN_WRITE_NOSYNC
;

692 
	`_debug_check
();

693 
t
 = 
tx
->
	`comm
x, 
ag
);

694 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

696  (
su
);

697 
	}
}

699 #ifde
CONFIG_TEST


707 
	$t_TxnRecov
(

, 
objc
, 
objv
, 
vp
, 
v
)

708 
T_Ip
 *

;

709 
objc
;

710 
T_Obj
 *
CONST
 
objv
[];

711 
DB_ENV
 *
vp
;

712 
DBTCL_INFO
 *
v
;

714 
	#DO_PREPLIST
(
cou
) \

715 
i
 = 0; i < 
cou
; i++) { \

716 
	`tf
(
wme
, (newname), "%s.txn%d", \

717 
v
->
i_me
,nv->
i_vtxnid
); \

718 

 = 
	`_NewInfo
(

, 
NULL
, 
wme
, 
I_TXN
); \

719 i(

 =
NULL
) { \

720 
	`T_SResu
(

, "Couldot set up info", \

721 
TCL_STATIC
); \

722  (
TCL_ERROR
); \

724 
v
->
i_vtxnid
++; \

725 

->
i_
 = 
v
; \

726 
p
 = &

[
i
]; \

727 
	`_SInfoDa
(

, 
p
->
txn
); \

728 ()
	`T_CeObjCommd
(

, 
wme
, \

729 (
T_ObjCmdProc
 *)
txn_Cmd
, (
ClDa
)
p
->
txn
, 
NULL
); \

730 
su
 = 
	`_SLiEm
(

, 
s
, 
wme
, 
	`
(newname), \

731 
p
->
gid
, 
DB_XIDDATASIZE
); \

732 i(
su
 !
TCL_OK
) \

733 
r
; \

734 }

	)

736 
DBTCL_INFO
 *

;

737 
DB_PREPLIST
 

[
DBTCL_PREP
], *
p
;

738 
T_Obj
 *
s
;

739 
cou
, 
i
;

740 
su
, 
t
;

741 
wme
[
MSG_SIZE
];

743 
su
 = 
TCL_OK
;

747 i(
objc
 != 2) {

748 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

749  (
TCL_ERROR
);

751 
	`_debug_check
();

752 
t
 = 
vp
->
	`txn_cov
nvp, 

, 
DBTCL_PREP
, &
cou
, 
DB_FIRST
);

753 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

755 i(
su
 =
TCL_ERROR
)

756  (
su
);

757 
s
 = 
	`T_NewObj
();

758 
	`DO_PREPLIST
(
cou
);

764 
cou
 =
DBTCL_PREP
) {

765 
t
 = 
vp
->
	`txn_cov
(

766 
vp
, 

, 
DBTCL_PREP
, &
cou
, 
DB_NEXT
);

767 
su
 = 
	`_RuSup
(

, 
t
, 
	`DB_RETOK_STD
(ret),

769 i(
su
 =
TCL_ERROR
)

770  (
su
);

771 
	`DO_PREPLIST
(
cou
);

773 
	`T_SObjResu
(

, 
s
);

774 
r
:

775  (
su
);

776 
	}
}

	@../tcl/tcl_util.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 #ifde
HAVE_SYSTEM_INCLUDE_FILES


13 
	~<t.h
>

15 
	~"dbc/t_db.h
"

24 
	$bdb_RdCommd
(

, 
objc
, 
objv
)

25 
T_Ip
 *

;

26 
objc
;

27 
T_Obj
 *
CONST
 
objv
[];

29 cڡ *
rcmds
[] = {

31 
NULL


33 
	ercmds
 {

34 
RRAND
, 
RRAND_INT
, 
RSRAND


36 
T_Obj
 *
s
;

37 
cmddex
, 
hi
, 
lo
, 
su
, 
t
;

39 
su
 = 
TCL_OK
;

45 i(
	`T_GIndexFromObj
(

,

46 
objv
[1], 
rcmds
, "commd", 
TCL_EXACT
, &
cmddex
!
TCL_OK
)

47  (
	`IS_HELP
(
objv
[1]));

49 
s
 = 
NULL
;

50 (
rcmds
)
cmddex
) {

51 
RRAND
:

55 i(
objc
 != 2) {

56 
	`T_WrgNumArgs
(

, 2, 
objv
, 
NULL
);

57  (
TCL_ERROR
);

59 
t
 = 
	`nd
();

60 
s
 = 
	`T_NewIObj
(
t
);

62 
RRAND_INT
:

66 i(
objc
 != 4) {

67 
	`T_WrgNumArgs
(

, 2, 
objv
, "lo hi");

68  (
TCL_ERROR
);

70 i((
su
 =

71 
	`T_GIFromObj
(

, 
objv
[2], &
lo
)!
TCL_OK
)

72  (
su
);

73 i((
su
 =

74 
	`T_GIFromObj
(

, 
objv
[3], &
hi
)!
TCL_OK
)

75  (
su
);

76 i(
lo
 < 0 || 
hi
 < 0) {

77 
	`T_SResu
(

,

78 "Rgvusth 0", 
TCL_STATIC
);

79  (
TCL_ERROR
);

82 
	`_debug_check
();

83 
t
 = 
lo
 + 
	`nd
(% ((
hi
 -o) + 1);

84 
s
 = 
	`T_NewIObj
(
t
);

86 
RSRAND
:

90 i(
objc
 != 3) {

91 
	`T_WrgNumArgs
(

, 2, 
objv
, "seed");

92  (
TCL_ERROR
);

94 i((
su
 =

95 
	`T_GIFromObj
(

, 
objv
[2], &
lo
)=
TCL_OK
) {

96 
	`d
((
u_t
)
lo
);

97 
s
 = 
	`T_NewIObj
(0);

106 i(
su
 =
TCL_OK
 && 
s
)

107 
	`T_SObjResu
(

, 
s
);

108  (
su
);

109 
	}
}

	@../test_micro/SOURCE/b_curalloc.c

4 
	~"bch.h
"

6 
uge
();

9 
	$ma
(
gc
, *
gv
[])

11 
DB
 *
dbp
;

12 
DBC
 *
cu
;

13 
ch
, 
i
, 
cou
;

15 
	`nup__d
();

17 
cou
 = 100000;

18 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:")!
EOF
)

19 
ch
) {

21 
cou
 = 
	`oi
(
ݏrg
);

25  (
	`uge
());

27 
gc
 -
td
;

28 
gv
 +
td
;

29 i(
gc
 != 0)

30  (
	`uge
());

33 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
NULL
, 0) == 0);

34 
dbp
->
	`t_rfe
(dbp, 
dr
);

36 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

37 
	`DB_BENCH_ASSERT
(

38 
dbp
->
	`ݒ
(dbp, 
NULL
, "a", NULL, 
DB_BTREE
, 
DB_CREATE
, 0666) == 0);

40 
	`DB_BENCH_ASSERT
(

41 
dbp
->
	`ݒ
(dbp, "a", 
NULL
, 
DB_BTREE
, 
DB_CREATE
, 0666) == 0);

45 
TIMER_START
;

46 
i
 = 0; i < 
cou
; ++i) {

47 
	`DB_BENCH_ASSERT
(
dbp
->
	`curs
(dbp, 
NULL
, &
cu
, 0) == 0);

48 
	`DB_BENCH_ASSERT
(
cu
->
	`c_o
(curp) == 0);

50 
TIMER_STOP
;

52 
	`tf
("# %d curs܇otis\n", 
cou
);

53 
	`TIMER_DISPLAY
(
cou
);

56 
	}
}

59 
	$uge
()

61 ()
	`rtf
(
dr
, "usage: b_curalloc [-c count]\n");

62  (
EXIT_FAILURE
);

63 
	}
}

	@../test_micro/SOURCE/b_curwalk.c

4 
	~"bch.h
"

6 
uge
();

9 
	$ma
(
gc
, *
gv
[])

11 
DB
 *
dbp
;

12 
DBTYPE
 
ty
;

13 
DBC
 *
dbc
;

14 
DBT
 
key
, 
da
;

15 
db_o_t
 
o
;

16 
u_t32_t
 
wkags
;

17 
ch
, 
i
, 
cou
, 
dupcou
, 
j
;

18 
ev
, 
t
, 
skdupwk
, 
s܋d
, 
wkcou
;

19 *
ts
, 
dbuf
[32], 
kbuf
[32];

21 
	`nup__d
();

23 
cou
 = 100000;

24 
dupcou
 = 
ev
 = 
skdupwk
 = 
s܋d
 = 0;

25 
wkcou
 = 1000;

26 
ts
 = "Btree";

27 
ty
 = 
DB_BTREE
;

28 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:d:pS:w:")!
EOF
)

29 
ch
) {

31 
cou
 = 
	`oi
(
ݏrg
);

34 
dupcou
 = 
	`oi
(
ݏrg
);

37 
ev
 = 1;

40 
skdupwk
 = 1;

43 
s܋d
 = 1;

46 
ݏrg
[0]) {

48 
ts
 = "Btree";

49 
ty
 = 
DB_BTREE
;

52 
ts
 = "Hash";

53 
ty
 = 
DB_HASH
;

56 
ts
 = "Queue";

57 
ty
 = 
DB_QUEUE
;

60 
ts
 = "Recno";

61 
ty
 = 
DB_RECNO
;

64  (
	`uge
());

68 
wkcou
 = 
	`oi
(
ݏrg
);

72  (
	`uge
());

74 
gc
 -
td
;

75 
gv
 +
td
;

76 i(
gc
 != 0)

77  (
	`uge
());

82 i(
dupcou
 !0 && (
ty
 =
DB_QUEUE
 ||y =
DB_RECNO
)) {

83 
	`rtf
(
dr
,

85  (
	`uge
());

88 #i
DB_VERSION_MAJOR
 < 3 || DB_VERSION_MAJOR =3 && 
DB_VERSION_MINOR
 == 0

89 
	#DB_PREV_NODUP
 0

	)

100 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
NULL
, 0) == 0);

101 
	`DB_BENCH_ASSERT
(

102 
dbp
->
	`t_chesize
(dbp, 0, 10 * 1024 * 1024 , 0) == 0);

103 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_gesize
(dbp, 16 * 1024 ) == 0);

104 
dbp
->
	`t_rfe
(dbp, 
dr
);

107 i(
ty
 =
DB_QUEUE
)

108 
	`DB_BENCH_ASSERT
(
dbp
->
	`t__n
(dbp, 20) == 0);

111 i(
dupcou
 != 0)

112 
	`DB_BENCH_ASSERT
(

113 
dbp
->
	`t_ags
(dbp, 
s܋d
 ? 
DB_DUPSORT
 : 
DB_DUP
) == 0);

115 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

116 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(

117 
dbp
, 
NULL
, "a", NULL, 
ty
, 
DB_CREATE
, 0666) == 0);

119 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(

120 
dbp
, "a", 
NULL
, 
ty
, 
DB_CREATE
, 0666) == 0);

124 
	`memt
(&
key
, 0, (key));

125 
	`memt
(&
da
, 0, (data));

128 
da
.d
dbuf
;

129 
da
.
size
 = 20;

130 i(
ty
 =
DB_BTREE
 ||y =
DB_HASH
) {

131 
key
.
size
 = 10;

132 
key
.
da
 = 
kbuf
;

133 
i
 = 0; i < 
cou
; ++i) {

134 ()
	`tf
(
kbuf
, (kbuf), "%010d", 
i
);

135 
j
 = 0; j <
dupcou
; ++j) {

136 ()
	`tf
(
dbuf
, (dbuf), "%020d", 
j
);

137 
	`DB_BENCH_ASSERT
(

138 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

142 
key
.
da
 = &
o
;

143 
key
.
size
 = (
o
);

144 
i
 = 0, 
o
 = 1; i < 
cou
; ++i, ++recno)

145 
	`DB_BENCH_ASSERT
(

146 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

149 
wkags
 = 
ev
 ?

150 (
skdupwk
 ? 
DB_PREV_NODUP
 : 
DB_PREV
) :

151 (
skdupwk
 ? 
DB_NEXT_NODUP
 : 
DB_NEXT
);

154 
TIMER_START
;

155 
i
 = 0; i < 
wkcou
; ++i) {

156 
	`DB_BENCH_ASSERT
(
dbp
->
	`curs
(dbp, 
NULL
, &
dbc
, 0) == 0);

157 (
t
 = 
dbc
->
	`c_g
(dbc, &
key
, &
da
, 
wkags
)) == 0);

158 
	`DB_BENCH_ASSERT
(
t
 =
DB_NOTFOUND
);

159 
	`DB_BENCH_ASSERT
(
dbc
->
	`c_o
(dbc) == 0);

161 
TIMER_STOP
;

163 
	`tf
("# %d %s %s cursor of %d 10/20 byte key/data items",

164 
wkcou
, 
ts
, 
ev
 ?

165 (
skdupwk
 ? "DB_PREV_NODUP" : "DB_PREV") :

166 (
skdupwk
 ? "DB_NEXT_NODUP" : "DB_NEXT"),

167 
cou
);

168 i(
dupcou
 != 0)

169 
	`tf
(" wh %d dups", 
dupcou
);

170 
	`tf
("\n");

171 
	`TIMER_DISPLAY
(
cou
);

173  (
EXIT_SUCCESS
);

174 
	}
}

177 
	$uge
()

179 ()
	`rtf
(
dr
,

181  (
EXIT_FAILURE
);

182 
	}
}

	@../test_micro/SOURCE/b_del.c

4 
	~"bch.h
"

6 
uge
();

9 
	$ma
(
gc
, *
gv
[])

11 
DB
 *
dbp
;

12 
DBC
 *
dbc
;

13 
DBT
 
key
, 
da
;

14 
DBTYPE
 
ty
;

15 
db_o_t
 
o
;

16 
ch
, 
i
, 
cou
, 
t
, 
u_curs
;

17 *
ts
, 
buf
[32];

19 
	`nup__d
();

21 
ty
 = 
DB_BTREE
;

22 
cou
 = 100000;

23 
u_curs
 = 0;

24 
ts
 = "Btree";

25 (
ch
 = 
	`gt
(
gc
, 
gv
, "Cc:t:")!
EOF
)

26 
ch
) {

28 
u_curs
 = 1;

31 
cou
 = 
	`oi
(
ݏrg
);

34 
ݏrg
[0]) {

36 
ts
 = "Btree";

37 
ty
 = 
DB_BTREE
;

40 
ts
 = "Hash";

41 
ty
 = 
DB_HASH
;

44 
ts
 = "Queue";

45 
ty
 = 
DB_QUEUE
;

48 
ts
 = "Recno";

49 
ty
 = 
DB_RECNO
;

52  (
	`uge
());

57  (
	`uge
());

59 
gc
 -
td
;

60 
gv
 +
td
;

61 i(
gc
 != 0)

62  (
	`uge
());

65 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
NULL
, 0) == 0);

66 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_chesize
(dbp, 0, 1048576 , 0) == 0);

67 
dbp
->
	`t_rfe
(dbp, 
dr
);

70 i(
ty
 =
DB_QUEUE
)

71 
	`DB_BENCH_ASSERT
(
dbp
->
	`t__n
(dbp, 20) == 0);

73 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

74 
	`DB_BENCH_ASSERT
(

75 
dbp
->
	`ݒ
(dbp, 
NULL
, "a", NULL, 
ty
, 
DB_CREATE
, 0666) == 0);

77 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(dbp, "a", 
NULL
, 
ty
, 
DB_CREATE
, 0666) == 0);

81 
	`memt
(&
key
, 0, (key));

82 
	`memt
(&
da
, 0, (data));

83 
da
.data = "01234567890123456789";

84 
da
.
size
 = 20;

87 
ty
) {

88 
DB_BTREE
:

89 
DB_HASH
:

90 
key
.
da
 = 
buf
;

91 
key
.
size
 = 10;

93 
DB_QUEUE
:

94 
DB_RECNO
:

95 
key
.
da
 = &
o
;

96 
key
.
size
 = (
o
);

98 
DB_UNKNOWN
:

99 
	`abt
();

104 i(
ty
 =
DB_BTREE
 ||y =
DB_HASH
)

105 
i
 = 0; i < 
cou
; ++i) {

106 ()
	`tf
(
buf
, (buf), "%010d", 
i
);

107 
	`DB_BENCH_ASSERT
(

108 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

111 
i
 = 0, 
o
 = 1; i < 
cou
; ++i, ++recno)

112 
	`DB_BENCH_ASSERT
(

113 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

116 
TIMER_START
;

117 i(
u_curs
) {

118 
	`DB_BENCH_ASSERT
(
dbp
->
	`curs
(dbp, 
NULL
, &
dbc
, 0) == 0);

119 (
t
 = 
dbc
->
	`c_g
(dbc, &
key
, &
da
, 
DB_NEXT
)) == 0)

120 
	`DB_BENCH_ASSERT
(
dbc
->
	`c_d
(dbc, 0) == 0);

121 
	`DB_BENCH_ASSERT
 (
t
 =
DB_NOTFOUND
);

123 i(
ty
 =
DB_BTREE
 ||y =
DB_HASH
)

124 
i
 = 0; i < 
cou
; ++i) {

125 ()
	`tf
(
buf
, (buf), "%010d", 
i
);

126 
	`DB_BENCH_ASSERT
(

127 
dbp
->
	`d
(dbp, 
NULL
, &
key
, 0) == 0);

130 
i
 = 0, 
o
 = 1; i < 
cou
; ++i, ++recno)

131 
	`DB_BENCH_ASSERT
(

132 
dbp
->
	`d
(dbp, 
NULL
, &
key
, 0) == 0);

134 
TIMER_STOP
;

136 
	`tf
(

138 
cou
, 
ts
, 
u_curs
 ? "a cursor" : "the key");

139 
	`TIMER_DISPLAY
(
cou
);

142 
	}
}

145 
	$uge
()

147 ()
	`rtf
(
dr
, "usage: b_del [-C] [-c count] [-type]\n");

148  (
EXIT_FAILURE
);

149 
	}
}

	@../test_micro/SOURCE/b_get.c

4 
	~"bch.h
"

6 
uge
();

9 
	$ma
(
gc
, *
gv
[])

11 
DB
 *
dbp
;

12 
DBTYPE
 
ty
;

13 
DBT
 
key
, 
da
;

14 
db_o_t
 
o
;

15 
ch
, 
i
, 
cou
;

16 *
ts
;

18 
dbp
 = 
NULL
;

19 
	`nup__d
();

21 
cou
 = 100000;

22 
ts
 = "Btree";

23 
ty
 = 
DB_BTREE
;

25 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:t:")!
EOF
)

26 
ch
) {

28 
cou
 = 
	`oi
(
ݏrg
);

31 
ݏrg
[0]) {

33 
ts
 = "Btree";

34 
ty
 = 
DB_BTREE
;

37 
ts
 = "Hash";

38 
ty
 = 
DB_HASH
;

41 
ts
 = "Queue";

42 
ty
 = 
DB_QUEUE
;

45 
ts
 = "Recno";

46 
ty
 = 
DB_RECNO
;

49  (
	`uge
());

54  (
	`uge
());

56 
gc
 -
td
;

57 
gv
 +
td
;

58 i(
gc
 != 0)

59  (
	`uge
());

62 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
NULL
, 0) == 0);

63 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_chesize
(dbp, 0, 1048576 , 0) == 0);

64 
dbp
->
	`t_rfe
(dbp, 
dr
);

67 i(
ty
 =
DB_QUEUE
)

68 
	`DB_BENCH_ASSERT
(
dbp
->
	`t__n
(dbp, 10) == 0);

70 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

71 
	`DB_BENCH_ASSERT
(

72 
dbp
->
	`ݒ
(dbp, 
NULL
, "a", NULL, 
ty
, 
DB_CREATE
, 0666) == 0);

74 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(dbp, "a", 
NULL
, 
ty
, 
DB_CREATE
, 0666) == 0);

78 
	`memt
(&
key
, 0, (key));

79 
	`memt
(&
da
, 0, (data));

80 
ty
) {

81 
DB_BTREE
:

82 
DB_HASH
:

83 
key
.
da
 = "aaaaa";

84 
key
.
size
 = 5;

86 
DB_QUEUE
:

87 
DB_RECNO
:

88 
o
 = 1;

89 
key
.
da
 = &
o
;

90 
key
.
size
 = (
o
);

92 
DB_UNKNOWN
:

93 
	`abt
();

96 
da
.data = "bbbbb";

97 
da
.
size
 = 5;

99 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

102 
TIMER_START
;

103 
i
 = 0; i < 
cou
; ++i)

104 
	`DB_BENCH_ASSERT
(
dbp
->
	`g
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

105 
TIMER_STOP
;

107 
	`tf
("# %d %daba g oched key/dem\n", 
cou
, 
ts
);

108 
	`TIMER_DISPLAY
(
cou
);

111 
	}
}

114 
	$uge
()

116 ()
	`rtf
(
dr
, "usage: b_get [-c count] [-type]\n");

117  (
EXIT_FAILURE
);

118 
	}
}

	@../test_micro/SOURCE/b_load.c

4 
	~"bch.h
"

6 
uge
();

9 
	$ma
(
gc
, *
gv
[])

11 
DB
 *
dbp
;

12 
DBTYPE
 
ty
;

13 
DBT
 
key
, 
da
;

14 
db_o_t
 
o
;

15 
ch
, 
i
, 
cou
, 
dui
;

16 *
ts
, 
buf
[32];

18 
	`nup__d
();

20 
dui
 = 0;

21 
cou
 = 100000;

22 
ts
 = "Btree";

23 
ty
 = 
DB_BTREE
;

24 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:dt:")!
EOF
)

25 
ch
) {

27 
cou
 = 
	`oi
(
ݏrg
);

30 
dui
 = 1;

33 
ݏrg
[0]) {

35 
ts
 = "Btree";

36 
ty
 = 
DB_BTREE
;

39 
ts
 = "Hash";

40 
ty
 = 
DB_HASH
;

43 
ts
 = "Queue";

44 
ty
 = 
DB_QUEUE
;

47 
ts
 = "Recno";

48 
ty
 = 
DB_RECNO
;

51  (
	`uge
());

56  (
	`uge
());

58 
gc
 -
td
;

59 
gv
 +
td
;

60 i(
gc
 != 0)

61  (
	`uge
());

64 i(
dui
 && (
ty
 =
DB_QUEUE
 ||y =
DB_RECNO
)) {

65 
	`rtf
(
dr
,

67  (
	`uge
());

70 #i
DB_VERSION_MAJOR
 < 3 || DB_VERSION_MAJOR =3 && 
DB_VERSION_MINOR
 < 1

75 i(
dui
)

80 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
NULL
, 0) == 0);

81 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_chesize
(dbp, 0, 1048576 , 0) == 0);

82 i(
dui
)

83 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_ags
(dbp, 
DB_DUP
) == 0);

84 
dbp
->
	`t_rfe
(dbp, 
dr
);

87 i(
ty
 =
DB_QUEUE
)

88 
	`DB_BENCH_ASSERT
(
dbp
->
	`t__n
(dbp, 20) == 0);

90 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

91 
	`DB_BENCH_ASSERT
(

92 
dbp
->
	`ݒ
(dbp, 
NULL
, "a", NULL, 
ty
, 
DB_CREATE
, 0666) == 0);

94 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(dbp, "a", 
NULL
, 
ty
, 
DB_CREATE
, 0666) == 0);

98 
	`memt
(&
key
, 0, (key));

99 
	`memt
(&
da
, 0, (data));

102 
TIMER_START
;

103 i(
dui
) {

104 
key
.
size
 = 10;

105 
key
.
da
 = "01234567890123456789";

106 
da
.d
buf
;

107 
da
.
size
 = 20;

108 
i
 = 0; i < 
cou
; ++i) {

109 ()
	`tf
(
buf
, (buf), "%020d", 
i
);

110 
	`DB_BENCH_ASSERT
(

111 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

114 
da
.d
buf
;

115 
da
.
size
 = 20;

116 i(
ty
 =
DB_BTREE
 ||y =
DB_HASH
) {

117 
key
.
size
 = 10;

118 
key
.
da
 = 
buf
;

119 
i
 = 0; i < 
cou
; ++i) {

120 ()
	`tf
(
buf
, (buf), "%010d", 
i
);

121 
	`DB_BENCH_ASSERT
(

122 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

125 
key
.
da
 = &
o
;

126 
key
.
size
 = (
o
);

127 
i
 = 0, 
o
 = 1; i < 
cou
; ++i, ++recno)

128 
	`DB_BENCH_ASSERT
(

129 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

133 
TIMER_STOP
;

135 
	`tf
("# %d %s database in-orderut of 10/20 byte key/data %sitems\n",

136 
cou
, 
ts
, 
dui
 ? "duplicate " : "");

137 
	`TIMER_DISPLAY
(
cou
);

140 
	}
}

143 
	$uge
()

145 ()
	`rtf
(
dr
, "usage: b_load [-d] [-c count] [-type]\n");

146  (
EXIT_FAILURE
);

147 
	}
}

	@../test_micro/SOURCE/b_open.c

4 
	~"bch.h
"

6 
uge
();

9 
	$ma
(
gc
, *
gv
[])

11 
DB_ENV
 *
dbv
;

12 
DB
 *
dbp
;

13 
DBTYPE
 
ty
;

14 
ch
, 
i
, 
cou
;

15 *
ame
, *
dbme
, *
ts
;

17 
	`nup__d
();

19 
cou
 = 1000;

20 
ts
 = "Btree";

21 
ty
 = 
DB_BTREE
;

22 
ame
 = 
dbme
 = 
NULL
;

23 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:d:")!
EOF
)

24 
ch
) {

26 
cou
 = 
	`oi
(
ݏrg
);

29 
dbme
 = "dbname";

32 
ame
 = "filename";

35 
ݏrg
[0]) {

37 
ts
 = "Btree";

38 
ty
 = 
DB_BTREE
;

41 
ts
 = "Hash";

42 
ty
 = 
DB_HASH
;

45 
ts
 = "Queue";

46 
ty
 = 
DB_QUEUE
;

49 
ts
 = "Recno";

50 
ty
 = 
DB_RECNO
;

53  (
	`uge
());

58  (
	`uge
());

60 
gc
 -
td
;

61 
gv
 +
td
;

62 i(
gc
 != 0)

63  (
	`uge
());

65 #i
DB_VERSION_MAJOR
 < 4

70 i(
ame
 =
NULL
 && 
dbme
 == NULL)

73 #i
DB_VERSION_MAJOR
 < 4 || DB_VERSION_MAJOR =4 && 
DB_VERSION_MINOR
 < 4

77 i(
ame
 =
NULL
 && 
dbme
 != NULL)

82 
	`DB_BENCH_ASSERT
(
	`db_v_
(&
dbv
, 0) == 0);

83 
dbv
->
	`t_rfe
(dbv, 
dr
);

84 
	`DB_BENCH_ASSERT
(
dbv
->
	`t_chesize
(

85 
dbv
, 0, 1 * 1024 * 1024 , 0) == 0);

86 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 == 0

87 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbenv, "TESTDIR",

88 
NULL
, 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
, 0666) == 0);

90 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbenv, "TESTDIR",

91 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
, 0666) == 0);

95 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
dbv
, 0) == 0);

96 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_gesize
(dbp, 8 * 1024) == 0);

98 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

99 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(

100 
dbp
, 
NULL
, 
ame
, 
dbme
, 
ty
, 
DB_CREATE
, 0666) == 0);

102 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(

103 
dbp
, 
ame
, 
dbme
, 
ty
, 
DB_CREATE
, 0666) == 0);

105 
	`DB_BENCH_ASSERT
(
dbp
->
	`o
(dbp, 0) == 0);

108 
TIMER_START
;

109 
i
 = 0; i < 
cou
; ++i) {

110 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
dbv
, 0) == 0);

111 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_gesize
(dbp, 8 * 1024) == 0);

112 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

113 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(

114 
dbp
, 
NULL
, 
ame
, 
dbme
, 
ty
, 
DB_CREATE
, 0666) == 0);

116 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(

117 
dbp
, 
ame
, 
dbme
, 
ty
, 
DB_CREATE
, 0666) == 0);

119 
	`DB_BENCH_ASSERT
(
dbp
->
	`o
(dbp, 0) == 0);

121 
TIMER_STOP
;

123 
	`tf
("# %d %s %sdatabase open/closeairs\n",

124 
cou
, 
ts
,

125 
ame
 =
NULL
 ?

126 (
dbme
 =
NULL
 ? "in-memory " : "named in-memory ") :

127 (
dbme
 =
NULL
 ? "" : "sub-"));

128 
	`TIMER_DISPLAY
(
cou
);

131 
	}
}

134 
	$uge
()

136 ()
	`rtf
(
dr
, "usage: b_open [-df] [-c count] [-type]\n");

137  (
EXIT_FAILURE
);

138 
	}
}

	@../test_micro/SOURCE/b_put.c

4 
	~"bch.h
"

6 
uge
();

7 
s
(
DB
 *, cڡ 
DBT
 *, const DBT *, DBT *);

10 
	$ma
(
gc
, *
gv
[])

12 
DB_ENV
 *
dbv
 = 
NULL
;

13 
DB
 *
dbp
, **
cd
;

14 
DBTYPE
 
ty
;

15 
DBT
 
key
, 
da
;

16 
db_o_t
 
o
;

17 
size_t
 
dsize
;

18 
ch
, 
i
, 
cou
, 
cds
;

19 *
ts
, 
buf
[64];

21 
	`nup__d
();

23 
cou
 = 100000;

24 
ts
 = "Btree";

25 
ty
 = 
DB_BTREE
;

26 
dsize
 = 20;

27 
cds
 = 0;

28 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:d:s:t:")!
EOF
)

29 
ch
) {

31 
cou
 = 
	`oi
(
ݏrg
);

34 
dsize
 = 
	`oi
(
ݏrg
);

37 
cds
 = 
	`oi
(
ݏrg
);

40 
ݏrg
[0]) {

42 
ts
 = "Btree";

43 
ty
 = 
DB_BTREE
;

46 
ts
 = "Hash";

47 
ty
 = 
DB_HASH
;

50 
ts
 = "Queue";

51 
ty
 = 
DB_QUEUE
;

54 
ts
 = "Recno";

55 
ty
 = 
DB_RECNO
;

58  (
	`uge
());

63  (
	`uge
());

65 
gc
 -
td
;

66 
gv
 +
td
;

67 i(
gc
 != 0)

68  (
	`uge
());

70 #i
DB_VERSION_MAJOR
 < 3 || DB_VERSION_MAJOR =3 && 
DB_VERSION_MINOR
 < 3

74 i(
cds
)

79 
	`DB_BENCH_ASSERT
(
	`db_v_
(&
dbv
, 0) == 0);

80 
dbv
->
	`t_rfe
(dbv, 
dr
);

81 
	`DB_BENCH_ASSERT
(

82 
dbv
->
	`t_chesize
(dbenv, 0, 1048576 , 0) == 0);

83 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 < 1

84 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbenv, "TESTDIR",

85 
NULL
, 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
, 0666) == 0);

87 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbenv, "TESTDIR",

88 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
, 0666) == 0);

95 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
dbv
, 0) == 0);

96 i(
ty
 =
DB_QUEUE
)

97 
	`DB_BENCH_ASSERT
(
dbp
->
	`t__n
(dbp, 
dsize
) == 0);

98 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

99 
	`DB_BENCH_ASSERT
(

100 
dbp
->
	`ݒ
(dbp, 
NULL
, "a", NULL, 
ty
, 
DB_CREATE
, 0666) == 0);

102 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(dbp, "a", 
NULL
, 
ty
, 
DB_CREATE
, 0666) == 0);

106 i(
cds
 != 0) {

107 
	`DB_BENCH_ASSERT
(

108 (
cd
 = 
	`oc
((
DB
 *), 
cds
)!
NULL
);

109 
i
 = 0; i < 
cds
; ++i) {

110 
	`DB_BENCH_ASSERT
(
	`db_
(&
cd
[
i
], 
dbv
, 0) == 0);

111 
	`tf
(
buf
, (buf), "%d.db", 
i
);

112 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

113 
	`DB_BENCH_ASSERT
(
cd
[
i
]->
	`ݒ
(cd[i], 
NULL
,

114 
buf
, 
NULL
, 
DB_BTREE
, 
DB_CREATE
, 0600) == 0);

116 
	`DB_BENCH_ASSERT
(
cd
[
i
]->
	`ݒ
(second[i],

117 
buf
, 
NULL
, 
DB_BTREE
, 
DB_CREATE
, 0600) == 0);

119 #i
DB_VERSION_MAJOR
 > 3 || DB_VERSION_MAJOR =3 && 
DB_VERSION_MINOR
 >= 3

120 #i
DB_VERSION_MAJOR
 > 3 && 
DB_VERSION_MINOR
 > 0

125 
	`DB_BENCH_ASSERT
(

126 
dbp
->
	`assoc
(dbp, 
NULL
, 
cd
[
i
], 
s
, 0) == 0);

128 
	`DB_BENCH_ASSERT
(

129 
dbp
->
	`assoc
(dbp, 
cd
[
i
], 
s
, 0) == 0);

136 
	`memt
(&
key
, 0, (key));

137 
	`memt
(&
da
, 0, (data));

138 
ty
) {

139 
DB_BTREE
:

140 
DB_HASH
:

141 
key
.
da
 = "01234567890123456789";

142 
key
.
size
 = 10;

144 
DB_QUEUE
:

145 
DB_RECNO
:

146 
o
 = 1;

147 
key
.
da
 = &
o
;

148 
key
.
size
 = (
o
);

150 
DB_UNKNOWN
:

151 
	`abt
();

155 
	`DB_BENCH_ASSERT
((
da
.d
	`mloc
(da.
size
 = 
dsize
)!
NULL
);

158 
TIMER_START
;

159 
i
 = 0; i < 
cou
; ++i)

160 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

161 
TIMER_STOP
;

163 i(
ty
 =
DB_BTREE
 ||y =
DB_HASH
)

164 
	`tf
(

166 
cou
, 
ts
, (
u_lg
)
dsize
);

168 
	`tf
("# %d %s databaseut of key, %lu byte data",

169 
cou
, 
ts
, (
u_lg
)
dsize
);

170 i(
cds
)

171 
	`tf
(" wh %d secds", 
cds
);

172 
	`tf
("\n");

173 
	`TIMER_DISPLAY
(
cou
);

176 
	}
}

179 
	$s
(
dbp
, 
pkey
, 
pda
, 
skey
)

180 
DB
 *
dbp
;

181 cڡ 
DBT
 *
pkey
, *
pda
;

182 
DBT
 *
skey
;

184 
skey
->
da
 = 
pkey
->data;

185 
skey
->
size
 = 
pkey
->size;

187 
	}
}

190 
	$uge
()

192 ()
	`rtf
(
dr
,

194  (
EXIT_FAILURE
);

195 
	}
}

	@../test_micro/SOURCE/b_recover.c

4 
	~"bch.h
"

6 
uge
();

9 
	$ma
(
gc
, *
gv
[])

11 
DB
 *
dbp
;

12 
DBT
 
key
, 
da
;

13 
DB_ENV
 *
dbv
;

14 
DB_TXN
 *
txn
;

15 
ch
, 
i
, 
cou
;

16 *
cfig
;

18 
	`nup__d
();

24 #i
DB_VERSION_MAJOR
 < 4

28 
cou
 = 1000;

29 
cfig
 = "synchronous";

30 (
ch
 = 
	`gt
(
gc
, 
gv
, "c:")!
EOF
)

31 
ch
) {

33 
cou
 = 
	`oi
(
ݏrg
);

37  (
	`uge
());

39 
gc
 -
td
;

40 
gv
 +
td
;

41 i(
gc
 != 0)

42  (
	`uge
());

45 
	`DB_BENCH_ASSERT
(
	`db_v_
(&
dbv
, 0) == 0);

46 
dbv
->
	`t_rfe
(dbv, 
dr
);

47 
	`DB_BENCH_ASSERT
(

48 
dbv
->
	`t_chesize
(dbenv, 0, 1048576 , 0) == 0);

50 
	#OFLAGS
 \

51 
DB_CREATE
 | 
DB_INIT_LOCK
 | \

52 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
 | 
DB_PRIVATE


	)

53 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 == 0

54 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbv, "TESTDIR", 
NULL
, 
OFLAGS
, 0666) == 0);

56 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 == 1

57 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbv, "TESTDIR", 
OFLAGS
, 0666) == 0);

59 #i
DB_VERSION_MAJOR
 > 3 || 
DB_VERSION_MINOR
 > 1

60 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbv, "TESTDIR", 
OFLAGS
, 0666) == 0);

64 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
dbv
, 0) == 0);

65 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

66 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(dbp, 
NULL
,

67 "a", 
NULL
, 
DB_BTREE
, 
DB_CREATE
 | 
DB_AUTO_COMMIT
, 0666) == 0);

69 
	`DB_BENCH_ASSERT
(

70 
dbp
->
	`ݒ
(dbp, "a", 
NULL
, 
DB_BTREE
, 
DB_CREATE
, 0666) == 0);

74 
	`memt
(&
key
, 0, (key));

75 
	`memt
(&
da
, 0, (data));

76 
key
.
size
 = 
da
.size = 20;

77 
key
.
da
 = data.data = "01234567890123456789";

80 
i
 = 0; i < 
cou
; ++i) {

81 #i
DB_VERSION_MAJOR
 < 4

82 
	`DB_BENCH_ASSERT
(

83 
	`txn_beg
(
dbv
, 
NULL
, &
txn
, 
DB_TXN_NOSYNC
) == 0);

84 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
txn
, &
key
, &
da
, 0) == 0);

85 
	`DB_BENCH_ASSERT
(
	`txn_comm
(
txn
, 0) == 0);

87 
	`DB_BENCH_ASSERT
(

88 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
txn
, 
DB_TXN_NOSYNC
) == 0);

89 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
txn
, &
key
, &
da
, 0) == 0);

90 
	`DB_BENCH_ASSERT
(
txn
->
	`comm
(txn, 0) == 0);

95 #i
DB_VERSION_MAJOR
 < 4

96 
	`DB_BENCH_ASSERT
(
	`log_ush
(
dbv
, 
NULL
) == 0);

98 
	`DB_BENCH_ASSERT
(
dbv
->
	`log_ush
(dbv, 
NULL
) == 0);

102 
	`DB_BENCH_ASSERT
(
	`db_v_
(&
dbv
, 0) == 0);

103 
dbv
->
	`t_rfe
(dbv, 
dr
);

104 
	`DB_BENCH_ASSERT
(

105 
dbv
->
	`t_chesize
(dbenv, 0, 1048576 , 0) == 0);

108 
TIMER_START
;

109 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 == 0

110 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(

111 
dbv
, "TESTDIR", 
NULL
, 
OFLAGS
 | 
DB_RECOVER
, 0666) == 0);

113 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 == 1

114 
	`DB_BENCH_ASSERT
(

115 
dbv
->
	`ݒ
(dbv, "TESTDIR", 
OFLAGS
 | 
DB_RECOVER
, 0666) == 0);

117 #i
DB_VERSION_MAJOR
 > 3 || 
DB_VERSION_MINOR
 > 1

118 
	`DB_BENCH_ASSERT
(

119 
dbv
->
	`ݒ
(dbv, "TESTDIR", 
OFLAGS
 | 
DB_RECOVER
, 0666) == 0);

121 
TIMER_STOP
;

123 
	`tf
("#ecovy %dnis\n", 
cou
);

124 
	`TIMER_DISPLAY
(
cou
);

127 
	}
}

130 
	$uge
()

132 ()
	`rtf
(
dr
, "usage: b_recover [-c count]\n");

133  (
EXIT_FAILURE
);

134 
	}
}

	@../test_micro/SOURCE/b_txn.c

4 
	~"bch.h
"

6 
uge
();

9 
	$ma
(
gc
, *
gv
[])

11 
DB_ENV
 *
dbv
;

12 
DB_TXN
 *
txn
;

13 
bt
, 
ch
, 
i
, 
cou
;

15 
	`nup__d
();

17 
cou
 = 1000;

18 
bt
 = 0;

19 (
ch
 = 
	`gt
(
gc
, 
gv
, "ac:")!
EOF
)

20 
ch
) {

22 
bt
 = 1;

25 
cou
 = 
	`oi
(
ݏrg
);

29  (
	`uge
());

31 
gc
 -
td
;

32 
gv
 +
td
;

33 i(
gc
 != 0)

34  (
	`uge
());

37 
	`DB_BENCH_ASSERT
(
	`db_v_
(&
dbv
, 0) == 0);

38 
dbv
->
	`t_rfe
(dbv, 
dr
);

39 
	`DB_BENCH_ASSERT
(

40 
dbv
->
	`t_chesize
(dbenv, 0, 1048576 , 0) == 0);

41 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 < 1

42 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbenv, "TESTDIR",

43 
NULL
, 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 |

44 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
 | 
DB_PRIVATE
, 0666) == 0);

46 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbenv, "TESTDIR",

47 
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 |

48 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
 | 
DB_PRIVATE
, 0666) == 0);

52 
TIMER_START
;

53 i(
bt
)

54 
i
 = 0; i < 
cou
; ++i) {

55 #i
DB_VERSION_MAJOR
 < 4

56 
	`DB_BENCH_ASSERT
(
	`txn_beg
(
dbv
, 
NULL
, &
txn
, 0) == 0);

57 
	`DB_BENCH_ASSERT
(
	`txn_abt
(
txn
) == 0);

59 
	`DB_BENCH_ASSERT
(

60 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
txn
, 0) == 0);

61 
	`DB_BENCH_ASSERT
(
txn
->
	`abt
(txn) == 0);

65 
i
 = 0; i < 
cou
; ++i) {

66 #i
DB_VERSION_MAJOR
 < 4

67 
	`DB_BENCH_ASSERT
(
	`txn_beg
(
dbv
, 
NULL
, &
txn
, 0) == 0);

68 
	`DB_BENCH_ASSERT
(
	`txn_comm
(
txn
, 0) == 0);

70 
	`DB_BENCH_ASSERT
(

71 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
txn
, 0) == 0);

72 
	`DB_BENCH_ASSERT
(
txn
->
	`comm
(txn, 0) == 0);

75 
TIMER_STOP
;

77 
	`tf
("# %dmptyransaction start/%sairs\n",

78 
cou
, 
bt
 ? "abort" : "commit");

79 
	`TIMER_DISPLAY
(
cou
);

82 
	}
}

85 
	$uge
()

87 ()
	`rtf
(
dr
, "usage: b_txn [-c count]\n");

88  (
EXIT_FAILURE
);

89 
	}
}

	@../test_micro/SOURCE/b_txn_write.c

4 
	~"bch.h
"

6 
uge
();

13 
	$nd
(
dbv
, 
cڌ
, 
c
, 
l
, 
eid
, 
ags
)

14 
DB_ENV
 *
dbv
;

15 cڡ 
DBT
 *
cڌ
, *
c
;

16 cڡ 
DB_LSN
 *
l
;

17 
eid
;

18 
u_t32_t
 
ags
;

21 
	}
}

24 
	$ma
(
gc
, *
gv
[])

26 
DB
 *
dbp
;

27 
DBT
 
key
, 
da
;

28 
DB_ENV
 *
dbv
;

29 
DB_TXN
 *
txn
;

30 
u_t32_t
 
ags
, 
oags
;

31 
ch
, 
i
, 
cou
, 
p_ub
;

32 *
cfig
;

34 
	`nup__d
();

36 
cou
 = 1000;

37 
oags
 = 
ags
 = 0;

38 
p_ub
 = 0;

39 
cfig
 = "synchronous";

40 (
ch
 = 
	`gt
(
gc
, 
gv
, "ac:rw")!
EOF
)

41 
ch
) {

43 
cfig
 = "nosync";

44 
ags
 = 
DB_TXN_NOSYNC
;

47 
cou
 = 
	`oi
(
ݏrg
);

50 #ifde
DB_INIT_REP


51 
p_ub
 = 1;

53 
	`ex
(0);

57 
cfig
 = "write-nosync";

58 #ifde
DB_TXN_WRITE_NOSYNC


59 
ags
 = 
DB_TXN_WRITE_NOSYNC
;

61 
	`ex
(0);

66  (
	`uge
());

68 
gc
 -
td
;

69 
gv
 +
td
;

70 i(
gc
 != 0)

71  (
	`uge
());

74 
	`DB_BENCH_ASSERT
(
	`db_v_
(&
dbv
, 0) == 0);

75 
dbv
->
	`t_rfe
(dbv, 
dr
);

76 
	`DB_BENCH_ASSERT
(

77 
dbv
->
	`t_chesize
(dbenv, 0, 1048576 , 0) == 0);

79 #ifde
DB_INIT_REP


80 i(
p_ub
) {

81 #i
DB_VERSION_MAJOR
 =4 && 
DB_VERSION_MINOR
 >= 5 || DB_VERSION_MAJOR > 4

82 
	`DB_BENCH_ASSERT
(
dbv
->
	`p_t_t
(dbv, 1, 
nd
) == 0);

84 
	`DB_BENCH_ASSERT
(
dbv
->
	`t_p_t
(dbv, 1, 
nd
) == 0);

86 
oags
 |
DB_INIT_REP
;

89 
oags
 |
DB_CREATE
 | 
DB_INIT_LOCK
 |

90 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
 | 
DB_PRIVATE
;

91 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 == 0

92 
	`DB_BENCH_ASSERT
(

93 
dbv
->
	`ݒ
(dbv, "TESTDIR", 
NULL
, 
ags
 | 
oags
, 0666) == 0);

95 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 == 1

96 
	`DB_BENCH_ASSERT
(

97 
dbv
->
	`ݒ
(dbv, "TESTDIR", 
ags
 | 
oags
, 0666) == 0);

99 #i
DB_VERSION_MAJOR
 > 3 || 
DB_VERSION_MINOR
 > 1

100 i(
ags
 != 0)

101 
	`DB_BENCH_ASSERT
(
dbv
->
	`t_ags
(dbv, 
ags
, 1) == 0);

102 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbv, "TESTDIR", 
oags
, 0666) == 0);

105 #ifde
DB_INIT_REP


106 i(
p_ub
)

107 
	`DB_BENCH_ASSERT
(

108 
dbv
->
	`p_t
(dbv, 
NULL
, 
DB_REP_MASTER
) == 0);

112 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
dbv
, 0) == 0);

113 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

114 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(dbp, 
NULL
,

115 "a", 
NULL
, 
DB_BTREE
, 
DB_CREATE
 | 
DB_AUTO_COMMIT
, 0666) == 0);

117 
	`DB_BENCH_ASSERT
(

118 
dbp
->
	`ݒ
(dbp, "a", 
NULL
, 
DB_BTREE
, 
DB_CREATE
, 0666) == 0);

122 
	`memt
(&
key
, 0, (key));

123 
	`memt
(&
da
, 0, (data));

124 
key
.
size
 = 
da
.size = 20;

125 
key
.
da
 = data.data = "01234567890123456789";

128 
TIMER_START
;

129 
i
 = 0; i < 
cou
; ++i) {

130 #i
DB_VERSION_MAJOR
 < 4

131 
	`DB_BENCH_ASSERT
(
	`txn_beg
(
dbv
, 
NULL
, &
txn
, 0) == 0);

132 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
txn
, &
key
, &
da
, 0) == 0);

133 
	`DB_BENCH_ASSERT
(
	`txn_comm
(
txn
, 0) == 0);

135 
	`DB_BENCH_ASSERT
(
dbv
->
	`txn_beg
(dbv, 
NULL
, &
txn
, 0) == 0);

136 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
txn
, &
key
, &
da
, 0) == 0);

137 
	`DB_BENCH_ASSERT
(
txn
->
	`comm
(txn, 0) == 0);

140 
TIMER_STOP
;

142 
	`tf
("# %d %stransactions write %s commitairs\n",

143 
cou
, 
p_ub
 ? "id ": "", 
cfig
);

144 
	`TIMER_DISPLAY
(
cou
);

147 
	}
}

150 
	$uge
()

152 ()
	`rtf
(
dr
, "usage: b_txn_write [-arw] [-c count]\n");

153  (
EXIT_FAILURE
);

154 
	}
}

	@../test_micro/SOURCE/b_workload.c

5 
	~"bch.h
"

6 
	~"b_wkld.h
"

15 
	$ma
(
gc
, 
gv
)

16 
gc
;

17 *
gv
[];

19 
CONFIG
 
cf
;

20 
DB
 *
dbp
;

21 
DB_ENV
 *
dbv
;

22 
ch
, 
f
, 
ksz
;

24 
dbv
 = 
NULL
;

25 
	`nup__d
();

26 
	`memt
(&
cf
, 0, (conf));

27 
cf
.
ed
 = 124087;

28 
	`d
(
cf
.
ed
);

30 
cf
.
pcou
 = 100000;

31 
cf
.
ts
 = "Btree";

32 
cf
.
ty
 = 
DB_BTREE
;

33 
cf
.
dsize
 = 20;

34 
cf
.
esize
 = 0;

35 
cf
.
wkld
 = 
T_PUT_GET_DELETE
;

37 (
ch
 = 
	`gt
(
gc
, 
gv
, "b:c:d:e:g:ik:m::r:t:vw:")!
EOF
)

38 
ch
) {

40 
cf
.
chesz
 = 
	`oi
(
ݏrg
);

43 
cf
.
pcou
 = 
	`oi
(
ݏrg
);

46 
cf
.
dsize
 = 
	`oi
(
ݏrg
);

49 
cf
.
curs_d
 = 
	`oi
(
ݏrg
);

52 
cf
.
gcou
 = 
	`oi
(
ݏrg
);

55 
cf
.
esize
 = 1;

58 
cf
.
ksize
 = 
	`oi
(
ݏrg
);

61 
cf
.
mesge
 = 
ݏrg
;

64 
cf
.
dedkeys
 = 1;

67 
cf
.
gesz
 = 
	`oi
(
ݏrg
);

70 
cf
.
num_dups
 = 
	`oi
(
ݏrg
);

73 
ݏrg
[0]) {

75 
cf
.
ts
 = "Btree";

76 
cf
.
ty
 = 
DB_BTREE
;

79 
cf
.
ts
 = "Hash";

80 
cf
.
ty
 = 
DB_HASH
;

83  (
	`uge
());

87 
cf
.
vbo
 = 1;

90 
ݏrg
[0]) {

92 
cf
.
wkld
 = 
T_PUT_GET_DELETE
;

95 
cf
.
wkld
 = 
T_GET
;

98 
cf
.
wkld
 = 
T_PUT
;

101 
cf
.
wkld
 = 
T_DELETE
;

104 
cf
.
wkld
 = 
T_PUT_GET
;

107 
cf
.
wkld
 = 
T_PUT_DELETE
;

110 
cf
.
wkld
 = 
T_GET_DELETE
;

113 
cf
.
wkld
 = 
T_MIXED
;

116  (
	`uge
());

121 
	`rtf
(
dr
, "Invid oi: %c\n", 
ch
);

122  (
	`uge
());

124 
gc
 -
td
;

125 
gv
 +
td
;

126 i(
gc
 != 0)

127  (
	`uge
());

132 i(
cf
.
gesz
 != 0)

133 
	`DB_BENCH_ASSERT
(
cf
.
gesz
 >= 512 && conf.pagesz <= 65536 &&

134 ((
cf
.
gesz
 & (conf.pagesz - 1)) == 0));

136 i(
cf
.
chesz
 != 0)

137 
	`DB_BENCH_ASSERT
(
cf
.
chesz
 > 20480);

138 
	`DB_BENCH_ASSERT
(
cf
.
ksize
 =0 || cf.
dedkeys
 == 0);

141 
	`DB_BENCH_ASSERT
(
	`db_v_
(&
dbv
, 0) == 0);

142 
dbv
->
	`t_rfe
(dbv, 
dr
);

143 i(
cf
.
chesz
 != 0)

144 
	`DB_BENCH_ASSERT
(

145 
dbv
->
	`t_chesize
(dbv, 0, 
cf
.
chesz
, 0) == 0);

147 #i
DB_VERSION_MAJOR
 =3 && 
DB_VERSION_MINOR
 < 1

148 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbenv, "TESTDIR",

149 
NULL
, 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
, 0666) == 0);

151 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbenv, "TESTDIR",

152 
DB_CREATE
 | 
DB_INIT_MPOOL
 | 
DB_PRIVATE
, 0666) == 0);

158 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
dbv
, 0) == 0);

159 i(
cf
.
gesz
 != 0)

160 
	`DB_BENCH_ASSERT
(

161 
dbp
->
	`t_gesize
(dbp, 
cf
.
gesz
) == 0);

162 i(
cf
.
esize
 !0 && cf.
ty
 =
DB_HASH
) {

163 
ksz
 = (
cf
.
dedkeys
 !0? (
u_t32_t
: cf.
ksize
;

164 i(
ksz
 == 0)

165 
ksz
 = 10;

166 
f
 = (
cf
.
gesz
 - 32)/(
ksz
 + cf.
dsize
 + 8);

167 
	`rtf
(
dr
, "f: %d\n", 
f
);

168 
	`DB_BENCH_ASSERT
(

169 
dbp
->
	`t_h_f
(dbp, 
f
) == 0);

170 
	`DB_BENCH_ASSERT
(

171 
dbp
->
	`t_h_m
(dbp, 
cf
.
pcou
*10) == 0);

173 #i
DB_VERSION_MAJOR
 >4 && 
DB_VERSION_MINOR
 >= 1

174 
	`DB_BENCH_ASSERT
(

175 
dbp
->
	`ݒ
(dbp, 
NULL
, "a", NULL, 
cf
.
ty
,

176 
DB_CREATE
 | 
DB_TRUNCATE
, 0666) == 0);

178 
	`DB_BENCH_ASSERT
(

179 
dbp
->
	`ݒ
(dbp, "a", 
NULL
, 
cf
.
ty
, 
DB_CREATE
, 0666) == 0);

182 i(
cf
.
wkld
 =
T_MIXED
)

183 
	`run_mixed_wkld
(
dbp
, &
cf
);

185 
	`run_d_wkld
(
dbp
, &
cf
);

187 i(
	`is_put_wkld
(
cf
.
wkld
) == 0)

188 
	`timeedd
(&
cf
.
t_time
, &cf.
put_time
);

189 i(
	`is_g_wkld
(
cf
.
wkld
) == 0)

190 
	`timeedd
(&
cf
.
t_time
, &cf.
g_time
);

191 i(
	`is_d_wkld
(
cf
.
wkld
) == 0)

192 
	`timeedd
(&
cf
.
t_time
, &cf.
d_time
);

195 
	`DB_BENCH_ASSERT
(
dbp
->
	`sync
(dbp, 0) == 0);

197 i(
cf
.
vbo
 != 0)

198 
	`dump_vbo_s
(
dbp
, &
cf
);

200 
	`DB_BENCH_ASSERT
(
dbp
->
	`o
(dbp, 0) == 0);

201 
	`DB_BENCH_ASSERT
(
dbv
->
	`o
(dbenv, 0) == 0);

208 
	`tf
("# workloadest: %s: %s<br>%lu ops",

209 
cf
.
ts
, 
	`wkld_r
(cf.
wkld
), (
u_lg
)cf.
pcou
);

210 i(
cf
.
ksize
 != 0)

211 
	`tf
(", key size: %lu", (
u_lg
)
cf
.
ksize
);

212 i(
cf
.
dsize
 != 0)

213 
	`tf
(", dsize: %lu", (
u_lg
)
cf
.
dsize
);

214 i(
cf
.
gesz
 != 0)

215 
	`tf
(",agsize: %lu", (
u_lg
)
cf
.
gesz
);

217 
	`tf
(",age size: default");

218 i(
cf
.
chesz
 != 0)

219 
	`tf
(", cachsize: %lu", (
u_lg
)
cf
.
chesz
);

221 
	`tf
(", cache size: default");

222 
	`tf
(", %keys", 
cf
.
dedkeys
 == 1 ? "ordered" : "unordered");

223 
	`tf
(",um dups: %lu", (
u_lg
)
cf
.
num_dups
);

224 
	`tf
("\n");

226 i(
cf
.
wkld
 !
T_MIXED
) {

227 i(
cf
.
mesge
 !
NULL
)

228 
	`tf
("%%", 
cf
.
mesge
, cf.
ts
);

229 
	`TIME_DISPLAY
(
cf
.
pcou
, cf.
t_time
);

231 
	`TIMER_DISPLAY
(
cf
.
pcou
);

234 
	}
}

237 
	$s
(
dbp
, 
pkey
, 
pda
, 
skey
)

238 
DB
 *
dbp
;

239 cڡ 
DBT
 *
pkey
, *
pda
;

240 
DBT
 *
skey
;

242 
skey
->
da
 = 
pkey
->data;

243 
skey
->
size
 = 
pkey
->size;

245 
	}
}

258 
	#GET_PROPORTION
 90

	)

259 
	#PUT_PROPORTION
 7

	)

260 
	#DEL_PROPORTION
 3

	)

263 
	$run_mixed_wkld
(
dbp
, 
cfig
)

264 
DB
 *
dbp
;

265 
CONFIG
 *
cfig
;

267 
DBT
 
key
, 
da
;

268 
size_t
 
xt_
, 
i
, 
ioff
;

269 
kbuf
[10];

270 
bch_q
 
ݔi_queue
;

273 
	`DB_BENCH_ASSERT
(
cfig
->
dedkeys
 == 0);

275 
	`d
(
cfig
->
ed
);

276 
	`memt
(&
ݔi_queue
, 0, (
bch_q
));

278 
ioff
 = 0;

279 
	`INIT_KEY
(
key
, 
cfig
);

280 
	`memt
(&
da
, 0, (data));

281 
	`DB_BENCH_ASSERT
(

282 (
da
.d
	`mloc
(da.
size
 = 
cfig
->
dsize
)!
NULL
);

289 
i
 = 0; i < 100000; ++i) {

290 
	`GET_KEY_NEXT
(
key
, 
cfig
, 
kbuf
, 
i
);

291 
	`BENCH_Q_TAIL_INSERT
(
ݔi_queue
, 
kbuf
);

292 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

295 
TIMER_START
;

296 
i
 = 0; i < 
cfig
->
pcou
; ++i) {

297 
xt_
 = 
	`nd
()%100;

299 i(
xt_
 < 
GET_PROPORTION
 ) {

300 
	`BENCH_Q_POP_PUSH
(
ݔi_queue
, 
kbuf
);

301 
key
.
da
 = 
kbuf
;

302 
key
.
size
 = (
kbuf
);

303 
dbp
->
	`g
(dbp, 
NULL
, &
key
, &
da
, 0);

304 } i(
xt_
 < 
GET_PROPORTION
+
PUT_PROPORTION
) {

305 
	`GET_KEY_NEXT
(
key
, 
cfig
, 
kbuf
, 
i
);

306 
	`BENCH_Q_TAIL_INSERT
(
ݔi_queue
, 
kbuf
);

307 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0);

309 
	`BENCH_Q_POP
(
ݔi_queue
, 
kbuf
);

310 
key
.
da
 = 
kbuf
;

311 
key
.
size
 = (
kbuf
);

312 
dbp
->
	`d
(dbp, 
NULL
, &
key
, 0);

315 
TIMER_STOP
;

316 
	`TIMER_GET
(
cfig
->
t_time
);

319 
	}
}

322 
	$run_d_wkld
(
dbp
, 
cfig
)

323 
DB
 *
dbp
;

324 
CONFIG
 *
cfig
;

326 
DBT
 
key
, 
da
;

327 
DBC
 *
dbc
;

328 
u_t32_t
 
i
, 
t
;

329 
kbuf
[10];

332 
	`INIT_KEY
(
key
, 
cfig
);

333 
	`memt
(&
da
, 0, (data));

334 
	`DB_BENCH_ASSERT
(

335 (
da
.d
	`mloc
(da.
size
 = 
cfig
->
dsize
)!
NULL
);

338 
TIMER_START
;

339 
i
 = 0; i < 
cfig
->
pcou
; ++i) {

340 
	`GET_KEY_NEXT
(
key
, 
cfig
, 
kbuf
, 
i
);

341 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

343 
TIMER_STOP
;

344 
	`TIMER_GET
(
cfig
->
put_time
);

346 i(
	`is_g_wkld
(
cfig
->
wkld
) == 0) {

347 
TIMER_START
;

348 
i
 = 0; i <
cfig
->
gcou
; ++i) {

349 
	`DB_BENCH_ASSERT
(
dbp
->
	`curs
(dbp, 
NULL
, &
dbc
, 0) == 0);

350 (
dbc
->
	`c_g
(dbc, &
key
, &
da
, 
DB_NEXT
)) == 0);

351 
	`DB_BENCH_ASSERT
(
dbc
->
	`c_o
(dbc) == 0);

353 
TIMER_STOP
;

354 
	`TIMER_GET
(
cfig
->
g_time
);

357 i(
	`is_d_wkld
(
cfig
->
wkld
) == 0) {

359 
	`d
(
cfig
->
ed
);

361 
TIMER_START
;

362 i(
cfig
->
curs_d
 != 0) {

363 
	`DB_BENCH_ASSERT
(
dbp
->
	`curs
(dbp, 
NULL
, &
dbc
, 0) == 0);

365 (
t
 = 
dbc
->
	`c_g
(dbc, &
key
, &
da
, 
DB_NEXT
)) == 0)

366 
	`DB_BENCH_ASSERT
(
dbc
->
	`c_d
(dbc, 0) == 0);

367 
	`DB_BENCH_ASSERT
 (
t
 =
DB_NOTFOUND
);

369 
	`INIT_KEY
(
key
, 
cfig
);

370 
i
 = 0; i < 
cfig
->
pcou
; ++i) {

371 
	`GET_KEY_NEXT
(
key
, 
cfig
, 
kbuf
, 
i
);

373 
t
 = 
dbp
->
	`d
(dbp, 
NULL
, &
key
, 0);

378 i(
cfig
->
ksize
 == 0)

379 
DB_BENCH_ASSERT


380 (
t
 =0 || =
DB_NOTFOUND
);

382 
	`DB_BENCH_ASSERT
(
t
 == 0);

385 
TIMER_STOP
;

386 
	`TIMER_GET
(
cfig
->
d_time
);

389 
	}
}

392 
	$dump_vbo_s
(
dbp
, 
cfig
)

393 
DB
 *
dbp
;

394 
CONFIG
 *
cfig
;

400 #ifde
DB_WIN32


401 
_
 
f
;

403 

 
f
;

405 
DB_HASH_STAT
 *
h
;

406 
DB_BTREE_STAT
 *
b
;

407 
_
;

409 #ifde
DB_BENCH_INCLUDE_CONFIG_SUMMARY


410 
	`tf
("Completed workload benchmark.\n");

411 
	`tf
("Configuration summary:\n");

412 
	`tf
("\twkldy: %d\n", ()
cfig
->
wkld
);

413 
	`tf
("\tdabay: %s\n", 
cfig
->
ts
);

414 i(
cfig
->
chesz
 != 0)

415 
	`tf
("\tchsize: %lu\n", (
u_lg
)
cfig
->
chesz
);

416 i(
cfig
->
gesz
 != 0)

417 
	`tf
("\tdabaagsize: %lu\n", (
u_lg
)
cfig
->
gesz
);

418 
	`tf
("\uemcou: %lu\n", (
u_lg
)
cfig
->
pcou
);

419 i
	`is_g_wkld
(
cfig
->
wkld
) == 0)

420 
	`tf
("\tgmcou: %lu\n", (
u_lg
)
cfig
->
gcou
);

421 i(
cfig
->
dedkeys
)

422 
	`tf
("\tInserting items in order\n");

423 i(
cfig
->
ksize
 == 0)

424 
	`tf
("\tInserting keys with size 10\n");

426 
	`tf
(

427 "\tIng keywh size: %lu\n", (
u_lg
)
cfig
->
ksize
);

429 
	`tf
("\tIng demtsize: %lu\n", (
u_lg
)
cfig
->
dsize
);

431 i(
	`is_d_wkld
(
cfig
->
wkld
) == 0) {

432 i(
cfig
->
curs_d
)

433 
	`tf
("\tDeleting items using cursor\n");

435 
	`tf
("\tDeleting items without cursor\n");

439 i(
	`is_put_wkld
(
cfig
->
wkld
) == 0)

440 
	`tf
("%s Time spent inserting (%lu) (%s) items: %lu/%lu\n",

441 
cfig
->
mesge
[0] == '\0' ? "" : config->message,

442 (
u_lg
)
cfig
->
pcou
, cfig->
ts
,

443 (
u_lg
)
cfig
->
put_time
.
tv_c
, cfig->put_time.
tv_nc
);

445 i(
	`is_g_wkld
(
cfig
->
wkld
) == 0)

446 
	`tf
("%s Time spent getting (%lu) (%s) items: %lu/%lu\n",

447 
cfig
->
mesge
[0] == '\0' ? "" : config->message,

448 (
u_lg
)
cfig
->
pcou
 * ((cfig->
gcou
 == 0) ?

449 1 : 
cfig
->
gcou
), cfig->
ts
,

450 (
u_lg
)
cfig
->
g_time
.
tv_c
, cfig->g_time.
tv_nc
);

452 i(
	`is_d_wkld
(
cfig
->
wkld
) == 0)

453 
	`tf
("%s Time spent deleting (%lu) (%s) items: %lu/%lu\n",

454 
cfig
->
mesge
[0] == '\0' ? "" : config->message,

455 (
u_lg
)
cfig
->
pcou
, cfig->
ts
,

456 (
u_lg
)
cfig
->
d_time
.
tv_c
, cfig->d_time.
tv_nc
);

458 #ifde
DB_WIN32


459 i(
	`_
("TESTDIR/a", &
f
) == 0) {

461 i(
	`
("TESTDIR/a", &
f
) == 0) {

463 
	`tf
("%s Size of db file (%s): %lu K\n",

464 
cfig
->
mesge
[0] == '\0' ? "" : config->message,

465 
cfig
->
ts
, (
u_lg
)
f
.
_size
/1024);

468 i(
cfig
->
ty
 =
DB_HASH
) {

469 #i
DB_VERSION_MAJOR
 < 3 || DB_VERSION_MAJOR =3 && 
DB_VERSION_MINOR
 <= 2

470 
	`DB_BENCH_ASSERT
(
dbp
->
	`
(dbp, &
h
, 
NULL
, 0) == 0);

471 #i
DB_VERSION_MAJOR
 < 4 || DB_VERSION_MAJOR =4 && 
DB_VERSION_MINOR
 <= 2

472 
	`DB_BENCH_ASSERT
(
dbp
->
	`
(dbp, &
h
, 0) == 0);

474 
	`DB_BENCH_ASSERT
(
dbp
->
	`
(dbp, 
NULL
, &
h
, 0) == 0);

480 
_
 = 
h
->
hash_gesize
*h->
hash_bucks
;

481 
_
 +
h
->
hash_gesize
*h->
hash_ovows
;

482 
_
 =

483 (
_
 - 
h
->
hash_b
 - h->
hash_ov_
)/

484 
_
;

485 
	`tf
("%s db fill factor (%s): %.2f%%\n",

486 
cfig
->
mesge
[0] == '\0' ? "" : config->message,

487 
cfig
->
ts
, 
_
*100);

488 
	`
(
h
);

490 #i
DB_VERSION_MAJOR
 < 3 || DB_VERSION_MAJOR =3 && 
DB_VERSION_MINOR
 <= 2

491 
	`DB_BENCH_ASSERT
(
dbp
->
	`
(dbp, &
b
, 
NULL
, 0) == 0);

492 #i
DB_VERSION_MAJOR
 < 4 || DB_VERSION_MAJOR =4 && 
DB_VERSION_MINOR
 <= 2

493 
	`DB_BENCH_ASSERT
(
dbp
->
	`
(dbp, &
b
, 0) == 0);

495 
	`DB_BENCH_ASSERT
(
dbp
->
	`
(dbp, 
NULL
, &
b
, 0) == 0);

497 
_
 = 
b
->
bt_gesize
*b->
bt_af_pg
;

498 
_
 = (_-
b
->
bt_af_pg
)/free_prop;

499 
	`tf
("%s db fill factor (%s): %.2f%%\n",

500 
cfig
->
mesge
[0] == '\0' ? "" : config->message,

501 
cfig
->
ts
, 
_
*100);

502 
	`
(
b
);

505 
	}
}

508 
	$wkld_r
(
wkld
)

509 
wkld
;

511 
buf
[128];

513 
wkld
) {

514 
T_PUT_GET_DELETE
:

517 
T_GET
:

520 
T_PUT
:

523 
T_DELETE
:

526 
T_PUT_GET
:

529 
T_PUT_DELETE
:

532 
T_GET_DELETE
:

535 
T_MIXED
:

536 
	`tf
(
buf
, (buf), "MIXED (get: %d,ut: %d, del: %d)",

537 ()
GET_PROPORTION
,

538 ()
PUT_PROPORTION
, ()
DEL_PROPORTION
);

539  (
buf
);

544 
	`ex
(
	`uge
());

546 
	}
}

549 
	$is_g_wkld
(
wkld
)

550 
wkld
;

552 
wkld
) {

553 
T_GET
:

554 
T_PUT_GET
:

555 
T_PUT_GET_DELETE
:

556 
T_GET_DELETE
:

560 
	}
}

563 
	$is_put_wkld
(
wkld
)

564 
wkld
;

566 
wkld
) {

567 
T_PUT
:

568 
T_PUT_GET
:

569 
T_PUT_GET_DELETE
:

570 
T_PUT_DELETE
:

574 
	}
}

577 
	$is_d_wkld
(
wkld
)

578 
wkld
;

580 
wkld
) {

581 
T_DELETE
:

582 
T_PUT_DELETE
:

583 
T_PUT_GET_DELETE
:

584 
T_GET_DELETE
:

588 
	}
}

591 
	$uge
()

593 ()
	`rtf
(
dr
,

595 ()
	`rtf
(
dr
,

597 ()
	`rtf
(
dr
, "\t[-r dup_count] [-type] [-wype]\n");

599 ()
	`rtf
(
dr
, "Where:\n");

600 ()
	`rtf
(
dr
, "\t-bhe size ofhe DB cache.\n");

601 ()
	`rtf
(
dr
, "\t-cheumber oflementso be measured.\n");

602 ()
	`rtf
(
dr
, "\t-dhe size ofach datalement.\n");

603 ()
	`rtf
(
dr
, "\t-e deletentries using cursor.\n");

604 ()
	`rtf
(
dr
, "\t-gumber of get cursorraverses.\n");

605 ()
	`rtf
(
dr
, "\t-i Pre-init hash DB bucket count.\n");

606 ()
	`rtf
(
dr
, "\t-khe size ofach key inserted.\n");

607 ()
	`rtf
(
dr
, "\t-m messagere-pendedoog output.\n");

608 ()
	`rtf
(
dr
, "\t-o keys should be ordered for insert.\n");

609 ()
	`rtf
(
dr
, "\t-pheage size forhe database.\n");

610 ()
	`rtf
(
dr
, "\t-rheumber of duplicateso insert\n");

611 ()
	`rtf
(
dr
, "\t-type ofhe underlying database.\n");

612 ()
	`rtf
(
dr
, "\t-whe workloado measure,vailable:\n");

613 ()
	`rtf
(
dr
, "\t\tA - PUT_GET_DELETE\n");

614 ()
	`rtf
(
dr
, "\t\tB - GET\n");

615 ()
	`rtf
(
dr
, "\t\tC - PUT\n");

616 ()
	`rtf
(
dr
, "\t\tD - DELETE\n");

617 ()
	`rtf
(
dr
, "\t\tE - PUT_GET\n");

618 ()
	`rtf
(
dr
, "\t\tF - PUT_DELETE\n");

619 ()
	`rtf
(
dr
, "\t\tG - GET_DELETE\n");

620 ()
	`rtf
(
dr
, "\t\tH - MIXED\n");

621  (
EXIT_FAILURE
);

622 
	}
}

	@../test_micro/SOURCE/inmem.c

5 
	~"bch.h
"

10 #i
DB_VERSION_MAJOR
 > 4 || DB_VERSION_MAJOR =4 && 
DB_VERSION_MINOR
 > 1

12 #unde
MEGABYTE


13 
	#MEGABYTE
 (1024 * 1024)

	)

15 
u_t32_t
 
	gbulkbufsize
 = 4 * 
MEGABYTE
;

16 
u_t32_t
 
	gchesize
 = 32 * 
MEGABYTE
;

17 
u_t32_t
 
	gdasize
 = 32;

18 
u_t32_t
 
	gkeysize
 = 8;

19 
u_t32_t
 
	glogbufsize
 = 8 * 
MEGABYTE
;

20 
u_t32_t
 
	gnumems
;

21 
u_t32_t
 
	ggesize
 = 32 * 1024;

23 
FILE
 *
	g
;

24 *
	gogme
;

26 
_ds
(
u_t
, );

27 
_ds_bulk
(
u_t
, u_int *);

28 
_tds
(
u_t
, , 
u_t32_t
);

29 
uge
 
__P
(());

32 
	$_ds
(
u_t
 
s
, 
upde
)

34 *
ˉs
 = "abcdefghijklmnopqrstuvwxuz";

35 
DB
 *
dbp
;

36 
DBT
 
key
, 
da
;

37 *
keybuf
, *
dabuf
;

38 
DB_MPOOL_STAT
 *
g
;

40 
	`DB_BENCH_ASSERT
((
keybuf
 = 
	`mloc
(
keysize
)!
NULL
);

41 
	`DB_BENCH_ASSERT
((
dabuf
 = 
	`mloc
(
dasize
)!
NULL
);

43 
	`memt
(&
key
, 0, (key));

44 
	`memt
(&
da
, 0, (data));

45 
key
.
da
 = 
keybuf
;

46 
key
.
size
 = 
keysize
;

47 
	`memt
(
keybuf
, 'a', 
keysize
);

49 
da
.d
dabuf
;

50 
da
.
size
 = 
dasize
;

51 
	`memt
(
dabuf
, 'b', 
dasize
);

53 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
NULL
, 0) == 0);

55 
dbp
->
	`t_rfe
(dbp, 
dr
);

57 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_gesize
(dbp, 
gesize
) == 0);

58 
	`DB_BENCH_ASSERT
(
dbp
->
	`ݒ
(

59 
dbp
, 
NULL
, NULL, NULL, 
DB_BTREE
, 
DB_CREATE
, 0666) == 0);

61 
dbp
->
dbv
->
	`memp_
(dbp->dbv, &
g
, 
NULL
, 
DB_STAT_CLEAR
);

63 i(
upde
) {

64 
TIMER_START
;

65 ; 
s
 > 0; --ops) {

66 
keybuf
[(
s
 % 
keysize
)] = 
ˉs
[(ops % 26)];

67 
	`DB_BENCH_ASSERT
(

68 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

70 
TIMER_STOP
;

72 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

73 
TIMER_START
;

74 ; 
s
 > 0; --ops)

75 
	`DB_BENCH_ASSERT
(

76 
dbp
->
	`g
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

77 
TIMER_STOP
;

80 
dbp
->
dbv
->
	`memp_
(dbp->dbv, &
g
, 
NULL
, 0);

81 
	`DB_BENCH_ASSERT
(
g
->
_che_miss
 == 0);

83 
	`DB_BENCH_ASSERT
(
dbp
->
	`o
(dbp, 0) == 0);

84 
	}
}

87 
	$_ds_bulk
(
u_t
 
s
, u_*
tٮp
)

89 
DB
 *
dbp
;

90 
DBC
 *
dbc
;

91 
DBT
 
key
, 
da
;

92 
u_t32_t
 
n
, 
kn
;

93 
u_t
 
i
, 
tٮ
;

94 *
keybuf
, *
dabuf
;

95 *
por
, *
dp
, *
kp
;

96 
DB_MPOOL_STAT
 *
g
;

98 
	`DB_BENCH_ASSERT
((
keybuf
 = 
	`mloc
(
keysize
)!
NULL
);

99 
	`DB_BENCH_ASSERT
((
dabuf
 = 
	`mloc
(
bulkbufsize
)!
NULL
);

101 
	`memt
(&
key
, 0, (key));

102 
	`memt
(&
da
, 0, (data));

103 
key
.
da
 = 
keybuf
;

104 
key
.
size
 = 
keysize
;

106 
da
.d
dabuf
;

107 
da
.
size
 = 
dasize
;

108 
	`memt
(
dabuf
, 'b', 
dasize
);

110 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
NULL
, 0) == 0);

112 
dbp
->
	`t_rfe
(dbp, 
dr
);

114 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_gesize
(dbp, 
gesize
) == 0);

115 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_chesize
(dbp, 0, 
chesize
, 1) == 0);

116 
	`DB_BENCH_ASSERT
(

117 
dbp
->
	`ݒ
(dbp, 
NULL
, NULL, NULL, 
DB_BTREE
, 
DB_CREATE
, 0666) == 0);

119 
i
 = 1; i <
numems
; ++i) {

120 ()
	`rtf
(
keybuf
, "%10d", 
i
);

121 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

125 

 = 
	`fݒ
("before", "w");

126 
dbp
->
	`t_msgfe
(dbp, 

);

127 
	`DB_BENCH_ASSERT
 (
dbp
->
	`_t
(dbp, 
DB_STAT_ALL
) == 0);

130 
	`DB_BENCH_ASSERT
(
dbp
->
	`curs
(dbp, 
NULL
, &
dbc
, 0) == 0);

132 
da
.
un
 = 
bulkbufsize
;

133 
da
.
ags
 = 
DB_DBT_USERMEM
;

135 
dbp
->
dbv
->
	`memp_
(dbp->dbv, &
g
, 
NULL
, 
DB_STAT_CLEAR
);

137 
TIMER_START
;

138 
tٮ
 = 0; 
s
 > 0; --ops) {

139 
	`DB_BENCH_ASSERT
(
dbc
->
	`c_g
(

140 
dbc
, &
key
, &
da
, 
DB_FIRST
 | 
DB_MULTIPLE_KEY
) == 0);

141 
	`DB_MULTIPLE_INIT
(
por
, &
da
);

142 
por
 !
NULL
) {

143 
	`DB_MULTIPLE_KEY_NEXT
(
por
, &
da
, 
kp
, 
kn
, 
dp
, 
n
);

144 i(
kp
 !
NULL
)

145 ++
tٮ
;

148 
TIMER_STOP
;

149 *
tٮp
 = 
tٮ
;

151 
dbp
->
dbv
->
	`memp_
(dbp->dbv, &
g
, 
NULL
, 0);

152 
	`DB_BENCH_ASSERT
(
g
->
_che_miss
 == 0);

155 

 = 
	`fݒ
("before", "w");

156 
dbp
->
	`t_msgfe
(dbp, 

);

157 
	`DB_BENCH_ASSERT
 (
dbp
->
	`_t
(dbp, 
DB_STAT_ALL
) == 0);

160 
	`DB_BENCH_ASSERT
(
dbp
->
	`o
(dbp, 0) == 0);

161 
	}
}

164 
	$_tds
(
u_t
 
s
, 
upde
, 
u_t32_t
 
ags
)

166 
DB
 *
dbp
;

167 
DBT
 
key
, 
da
;

168 
DB_ENV
 *
dbv
;

169 
DB_TXN
 *
txn
;

170 *
keybuf
, *
dabuf
;

171 
DB_MPOOL_STAT
 *
g
;

173 
	`DB_BENCH_ASSERT
((
keybuf
 = 
	`mloc
(
keysize
)!
NULL
);

174 
	`DB_BENCH_ASSERT
((
dabuf
 = 
	`mloc
(
dasize
)!
NULL
);

176 
	`memt
(&
key
, 0, (key));

177 
	`memt
(&
da
, 0, (data));

178 
key
.
da
 = 
keybuf
;

179 
key
.
size
 = 
keysize
;

180 
	`memt
(
keybuf
, 'a', 
keysize
);

182 
da
.d
dabuf
;

183 
da
.
size
 = 
dasize
;

184 
	`memt
(
dabuf
, 'b', 
dasize
);

186 
	`DB_BENCH_ASSERT
(
	`db_v_
(&
dbv
, 0) == 0);

188 
dbv
->
	`t_rfe
(dbv, 
dr
);

190 #ifde
DB_AUTO_COMMIT


191 
	`DB_BENCH_ASSERT
(
dbv
->
	`t_ags
(dbv, 
DB_AUTO_COMMIT
, 1) == 0);

193 
	`DB_BENCH_ASSERT
(
dbv
->
	`t_ags
(dbv, 
ags
, 1) == 0);

194 #ifde
DB_LOG_INMEMORY


195 i(!(
ags
 & 
DB_LOG_INMEMORY
))

197 
	`DB_BENCH_ASSERT
(
dbv
->
	`t_lg_max
(dbv, 
logbufsize
 * 10) == 0);

198 
	`DB_BENCH_ASSERT
(
dbv
->
	`t_lg_bsize
(dbv, 
logbufsize
) == 0);

199 
	`DB_BENCH_ASSERT
(
dbv
->
	`ݒ
(dbenv, "TESTDIR",

200 
DB_CREATE
 | 
DB_PRIVATE
 | 
DB_INIT_LOCK
 |

201 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | 
DB_INIT_TXN
, 0666) == 0);

203 
	`DB_BENCH_ASSERT
(
	`db_
(&
dbp
, 
dbv
, 0) == 0);

204 
	`DB_BENCH_ASSERT
(
dbp
->
	`t_gesize
(dbp, 
gesize
) == 0);

205 
	`DB_BENCH_ASSERT
(

206 
dbp
->
	`ݒ
(dbp, 
NULL
, "a", NULL, 
DB_BTREE
, 
DB_CREATE
, 0666) == 0);

208 i(
upde
) {

209 
dbv
->
	`memp_
(dbv, &
g
, 
NULL
, 
DB_STAT_CLEAR
);

211 
TIMER_START
;

212 ; 
s
 > 0; --ops)

213 
	`DB_BENCH_ASSERT
(

214 
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

215 
TIMER_STOP
;

217 
dbv
->
	`memp_
(dbv, &
g
, 
NULL
, 0);

218 
	`DB_BENCH_ASSERT
(
g
->
_ge_out
 == 0);

220 
	`DB_BENCH_ASSERT
(
dbp
->
	`put
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

221 
dbv
->
	`memp_
(dbv, &
g
, 
NULL
, 
DB_STAT_CLEAR
);

223 
TIMER_START
;

224 ; 
s
 > 0; --ops) {

225 
	`DB_BENCH_ASSERT
(

226 
dbv
->
	`txn_beg
(dbv, 
NULL
, &
txn
, 0) == 0);

227 
	`DB_BENCH_ASSERT
(

228 
dbp
->
	`g
(dbp, 
NULL
, &
key
, &
da
, 0) == 0);

229 
	`DB_BENCH_ASSERT
(
txn
->
	`comm
(txn, 0) == 0);

231 
TIMER_STOP
;

233 
dbv
->
	`memp_
(dbv, &
g
, 
NULL
, 0);

234 
	`DB_BENCH_ASSERT
(
g
->
_che_miss
 == 0);

237 
	`DB_BENCH_ASSERT
(
dbp
->
	`o
(dbp, 0) == 0);

238 
	`DB_BENCH_ASSERT
(
dbv
->
	`o
(dbenv, 0) == 0);

239 
	}
}

241 
	#DEFAULT_OPS
 1000000

	)

244 
	$ma
(
gc
, *
gv
[])

246 
*
ݏrg
;

247 

td
;

248 
u_t
 
s
, 
tٮ
;

249 
ch
;

251 
	`nup__d
();

253 i((
ogme
 = 
	`chr
(
gv
[0], '/')=
NULL
)

254 
ogme
 = 
gv
[0];

256 ++
ogme
;

258 
s
 = 0;

259 (
ch
 = 
	`gt
(
gc
, 
gv
, "d:k:o:p:")!
EOF
)

260 
ch
) {

262 
dasize
 = (
u_t
)
	`oi
(
ݏrg
);

265 
keysize
 = (
u_t
)
	`oi
(
ݏrg
);

268 
s
 = (
u_t
)
	`oi
(
ݏrg
);

271 
gesize
 = (
u_t32_t
)
	`oi
(
ݏrg
);

275  (
	`uge
());

277 
gc
 -
td
;

278 
gv
 +
td
;

280 i(
gc
 != 1)

281  (
	`uge
());

283 
numems
 = (
chesize
 / (
keysize
 + 
dasize
 - 1)) / 2;

285 i(
	`rcmp
(
gv
[0], "read") == 0) {

286 i(
s
 == 0)

287 
s
 = 
DEFAULT_OPS
;

288 
	`_ds
(
s
, 0);

289 
	`tf
(

291 
s
, 
keysize
, 
dasize
);

292 } i(
	`rcmp
(
gv
[0], "bulk") == 0) {

293 i(
keysize
 < 8) {

294 
	`rtf
(
dr
,

295 "%s: bulkdequekey siz>10\n", 
ogme
);

296  (
EXIT_FAILURE
);

304 i(
s
 == 0)

305 
s
 = 100000;

306 
	`_ds_bulk
(
s
, &
tٮ
);

307 
s
 = 
tٮ
;

308 
	`tf
(

310 
s
, 
keysize
, 
dasize
);

311 } i(
	`rcmp
(
gv
[0], "write") == 0) {

312 i(
s
 == 0)

313 
s
 = 
DEFAULT_OPS
;

314 
	`_ds
(
s
, 1);

315 
	`tf
(

317 
s
, 
keysize
, 
dasize
);

318 } i(
	`rcmp
(
gv
[0], "txn-read") == 0) {

319 i(
s
 == 0)

320 
s
 = 
DEFAULT_OPS
;

321 
	`_tds
(
s
, 0, 0);

322 
	`tf
(

324 
s
, 
keysize
, 
dasize
);

325 } i(
	`rcmp
(
gv
[0], "txn-write") == 0) {

326 i(
s
 == 0)

327 
s
 = 
DEFAULT_OPS
;

328 #ifde
DB_LOG_INMEMORY


329 
	`_tds
(
s
, 1, 
DB_LOG_INMEMORY
);

330 
	`tf
(

332 
s
, 
keysize
, 
dasize
);

334  (
EXIT_SUCCESS
);

336 } i(
	`rcmp
(
gv
[0], "txn-nosync") == 0) {

337 i(
s
 == 0)

338 
s
 = 
DEFAULT_OPS
;

339 
	`_tds
(
s
, 1, 
DB_TXN_NOSYNC
);

340 
	`tf
(

342 
s
, 
keysize
, 
dasize
);

343 } i(
	`rcmp
(
gv
[0], "txn-write-nosync") == 0) {

344 i(
s
 == 0)

345 
s
 = 
DEFAULT_OPS
;

346 #ifde
DB_TXN_WRITE_NOSYNC


347 
	`_tds
(
s
, 1, 
DB_TXN_WRITE_NOSYNC
);

348 
	`tf
(

350 
s
, 
keysize
, 
dasize
);

352  (
EXIT_SUCCESS
);

354 } i(
	`rcmp
(
gv
[0], "txn-sync") == 0) {

359 i(
s
 == 0)

360 
s
 = 100000;

361 
	`_tds
(
s
, 1, 0);

362 
	`tf
(

364 
s
, 
keysize
, 
dasize
);

366 
	`rtf
(
dr
, "%s: unknowkeywd %s\n", 
ogme
, 
gv
[0]);

367  (
EXIT_FAILURE
);

370 
	`TIMER_DISPLAY
(
s
);

371  (
EXIT_SUCCESS
);

372 
	}
}

375 
	$uge
()

377 
	`rtf
(
dr
, "usage: %s %s%s%s",

378 
ogme
,

382  (
EXIT_FAILURE
);

383 
	}
}

386 
	$ma
()

389 
	}
}

	@../test_micro/SOURCE/uname.c

1 
	~<sys/tys.h
>

2 
	~<sys/utame.h
>

4 
	~<dio.h
>

7 
	$ma
()

9 
utame
 
me
;

11 i(
	`ume
(&
me
) == 0)

12 
	`tf
("<p>%s, %s<br>\n%s, %s, %s</p>\n", 
me
.
nodame
,

13 
me
.
mache
,ame.
syame
,ame.
a
,ame.
vsi
);

15 
	}
}

	@../txn/txn.c

40 
	~"db_cfig.h
"

42 
	~"db_t.h
"

43 
	~"dbc/yo.h
"

44 
	~"dbc/hmac.h
"

45 
	~"dbc/db_ge.h
"

46 
	~"dbc/hash.h
"

47 
	~"dbc/lock.h
"

48 
	~"dbc/log.h
"

49 
	~"dbc/mp.h
"

50 
	~"dbc/txn.h
"

52 
	#LOG_FLAGS
(
txn
) \

53 (
DB_LOG_COMMIT
 | (
	`F_ISSET
(
txn
, 
TXN_SYNC
) ? \

54 
DB_FLUSH
 : (
	`F_ISSET
(
txn
, 
TXN_WRITE_NOSYNC
) ? \

55 
DB_LOG_WRNOSYNC
 : 0)))

	)

63 
	mTXN_OP_ABORT
,

64 
	mTXN_OP_COMMIT
,

65 
	mTXN_OP_DISCARD
,

66 
	mTXN_OP_PREPARE


67 } 
	ttxn_t
;

69 
__txn_abt_
 
__P
((
DB_TXN
 *));

70 
__txn_beg_t
 
__P
((
DB_TXN
 *));

71 
__txn_comm_
 
__P
((
DB_TXN
 *, 
u_t32_t
));

72 
__txn_disrd
 
__P
((
DB_TXN
 *, 
u_t32_t
));

73 
__txn_dich_undo


74 
__P
((
DB_ENV
 *, 
DB_TXN
 *, 
DBT
 *, 
DB_LSN
 *, 
DB_TXNHEAD
 *));

75 
__txn_d
 
__P
((
DB_TXN
 *, ));

76 
__txn_isvid
 
__P
((cڡ 
DB_TXN
 *, 
txn_t
));

77 
__txn_undo
 
__P
((
DB_TXN
 *));

78 
__txn_t_txn_lp
 
__P
((
DB_TXN
 *, 
DB_LSN
 **, DB_LSN **));

87 
	$__txn_beg_
(
dbv
, 

, 
txp
, 
ags
)

88 
DB_ENV
 *
dbv
;

89 
DB_TXN
 *

, **
txp
;

90 
u_t32_t
 
ags
;

92 
DB_THREAD_INFO
 *

;

93 
p_check
, 
t
;

95 
	`PANIC_CHECK
(
dbv
);

96 
	`ENV_REQUIRES_CONFIG
(
dbv
, dbv->
tx_hd
, "txn_beg", 
DB_INIT_TXN
);

98 i((
t
 = 
	`__db_fchk
(
dbv
,

99 "txn_beg", 
ags
,

100 
DB_READ_COMMITTED
 | 
DB_READ_UNCOMMITTED
 |

101 
DB_TXN_NOSYNC
 | 
DB_TXN_SNAPSHOT
 | 
DB_TXN_SYNC
 |

102 
DB_TXN_WAIT
 | 
DB_TXN_WRITE_NOSYNC
 | 
DB_TXN_NOWAIT
)) != 0)

103  (
t
);

104 i((
t
 = 
	`__db_fcchk
(
dbv
, "txn_beg", 
ags
,

105 
DB_TXN_WRITE_NOSYNC
 | 
DB_TXN_NOSYNC
, 
DB_TXN_SYNC
)) != 0)

106  (
t
);

107 i((
t
 = 
	`__db_fcchk
(
dbv
, "txn_begin",

108 
ags
, 
DB_TXN_WRITE_NOSYNC
, 
DB_TXN_NOSYNC
)) != 0)

109  (
t
);

110 i(

 !
NULL
 && !
	`F_ISSET
լt, 
TXN_SNAPSHOT
) &&

111 
	`LF_ISSET
(
DB_TXN_SNAPSHOT
)) {

112 
	`__db_rx
(
dbv
,

114  (
EINVAL
);

117 
	`ENV_ENTER
(
dbv
, 

);

119 i(

 =
NULL
) {

120 
p_check
 = 
	`IS_ENV_REPLICATED
(
dbv
) ? 1 : 0;

121 i(
p_check
 && (
t
 = 
	`___p_r
(
dbv
)) != 0)

122 
r
;

124 
p_check
 = 0;

125 
t
 = 
	`__txn_beg
(
dbv
, 

, 
txp
, 
ags
);

131 i(
t
 !0 && 
p_check
)

132 ()
	`___p_ex
(
dbv
);

134 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

135  (
t
);

136 
	}
}

153 
	$__txn_beg
(
dbv
, 

, 
txp
, 
ags
)

154 
DB_ENV
 *
dbv
;

155 
DB_TXN
 *

, **
txp
;

156 
u_t32_t
 
ags
;

158 
DB_LOCKREGION
 *
gi
;

159 
DB_TXN
 *
txn
;

160 
TXN_DETAIL
 *
d
, *
td
;

161 
t
;

163 *
txp
 = 
NULL
;

164 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_TXN
), &
txn
)) != 0)

165  (
t
);

167 
txn
->
mg
 = 
dbv
->
tx_hd
;

168 
txn
->

 =arent;

169 
	`TAILQ_INIT
(&
txn
->
kids
);

170 
	`TAILQ_INIT
(&
txn
->
evts
);

171 
	`STAILQ_INIT
(&
txn
->
logs
);

172 
txn
->
ags
 = 
TXN_MALLOC
;

178 i(
	`LF_ISSET
(
DB_TXN_SYNC
))

179 
	`F_SET
(
txn
, 
TXN_SYNC
);

180 i(
	`LF_ISSET
(
DB_TXN_NOSYNC
))

181 
	`F_SET
(
txn
, 
TXN_NOSYNC
);

182 i(
	`LF_ISSET
(
DB_TXN_WRITE_NOSYNC
))

183 
	`F_SET
(
txn
, 
TXN_WRITE_NOSYNC
);

184 i(
	`F_ISSET
(
dbv
, 
DB_ENV_TXN_NOSYNC
))

185 
	`F_SET
(
txn
, 
TXN_NOSYNC
);

186 i(
	`F_ISSET
(
dbv
, 
DB_ENV_TXN_WRITE_NOSYNC
))

187 
	`F_SET
(
txn
, 
TXN_WRITE_NOSYNC
);

189 
	`F_SET
(
txn
, 
TXN_SYNC
);

191 i(
	`LF_ISSET
(
DB_TXN_NOWAIT
) ||

192 (
	`F_ISSET
(
dbv
, 
DB_ENV_TXN_NOWAIT
&& !
	`LF_ISSET
(
DB_TXN_WAIT
)))

193 
	`F_SET
(
txn
, 
TXN_NOWAIT
);

194 i(
	`LF_ISSET
(
DB_READ_COMMITTED
))

195 
	`F_SET
(
txn
, 
TXN_READ_COMMITTED
);

196 i(
	`LF_ISSET
(
DB_READ_UNCOMMITTED
))

197 
	`F_SET
(
txn
, 
TXN_READ_UNCOMMITTED
);

198 i(
	`LF_ISSET
(
DB_TXN_SNAPSHOT
|| 
	`F_ISSET
(
dbv
, 
DB_ENV_TXN_SNAPSHOT
) ||

199 (

 !
NULL
 && 
	`F_ISSET
լt, 
TXN_SNAPSHOT
)))

200 
	`F_SET
(
txn
, 
TXN_SNAPSHOT
);

202 i((
t
 = 
	`__txn_beg_t
(
txn
)) != 0)

203 
r
;

204 
td
 = 
txn
->td;

206 i(

 !
NULL
) {

207 
d
 = 

->
td
;

208 
	`TAILQ_INSERT_HEAD
(&

->
kids
, 
txn
, 
klks
);

209 
	`SH_TAILQ_INSERT_HEAD
(&
d
->
kids
, 
td
, 
klks
, 
__txn_da
);

212 i(
	`LOCKING_ON
(
dbv
)) {

213 
gi
 = 
dbv
->
lk_hd
->
gfo
.
imy
;

214 i(

 !
NULL
) {

215 
t
 = 
	`__lock_h_timeout
(
dbv
,

216 

->
lock
, 
txn
->locker);

218 i(
t
 =
EINVAL
) {

219 

 = 
NULL
;

220 
t
 = 0;

222 i(
t
 != 0)

223 
r
;

230 i(

 =
NULL
 && 
gi
->
tx_timeout
 != 0)

231 i((
t
 = 
	`__lock_t_timeout
(
dbv
, 
txn
->
lock
,

232 
gi
->
tx_timeout
, 
DB_SET_TXN_TIMEOUT
)) != 0)

233 
r
;

236 *
txp
 = 
txn
;

239 
r
:

240 
	`__os_
(
dbv
, 
txn
);

241  (
t
);

242 
	}
}

251 
	$__txn_xa_beg
(
dbv
, 
txn
)

252 
DB_ENV
 *
dbv
;

253 
DB_TXN
 *
txn
;

255 
	`PANIC_CHECK
(
dbv
);

261 
txn
->
mg
 = 
dbv
->
tx_hd
;

262 
	`TAILQ_INIT
(&
txn
->
kids
);

263 
	`TAILQ_INIT
(&
txn
->
evts
);

264 
	`STAILQ_INIT
(&
txn
->
logs
);

265 
txn
->

 = 
NULL
;

266 
txn
->
txnid
 = 
TXN_INVALID
;

267 
txn
->
curss
 = 0;

268 
	`memt
(&
txn
->
lock_timeout
, 0, (
db_timeout_t
));

269 
	`memt
(&
txn
->
expe
, 0, (
db_timeout_t
));

271  (
	`__txn_beg_t
(
txn
));

272 
	}
}

281 
	$__txn_cye_id
(
dbv
)

282 
DB_ENV
 *
dbv
;

284 
DB_LSN
 
nu_l
;

285 
DB_TXNMGR
 *
mgr
;

286 
DB_TXNREGION
 *
gi
;

287 
TXN_DETAIL
 *
td
;

288 
u_t32_t
 *
ids
;

289 
nids
, 
t
;

291 
mgr
 = 
dbv
->
tx_hd
;

292 
gi
 = 
mgr
->
gfo
.
imy
;

294 i((
t
 = 
	`__os_mloc
(
dbv
,

295 (
u_t32_t
* 
gi
->
maxtxns
, &
ids
)) != 0)

296  (
t
);

297 
nids
 = 0;

298 
	`SH_TAILQ_FOREACH
(
td
, &
gi
->
aive_txn
, 
lks
, 
__txn_da
)

299 
ids
[
nids
++] = 
td
->
txnid
;

300 
gi
->
ϡ_txnid
 = 
TXN_MINIMUM
 - 1;

301 
gi
->
cur_maxid
 = 
TXN_MAXIMUM
;

302 i(
nids
 != 0)

303 
	`__db_ida
(
ids
, 
nids
,

304 &
gi
->
ϡ_txnid
, &gi->
cur_maxid
);

305 
	`__os_
(
dbv
, 
ids
);

311 i(
	`LOGGING_ON
(
dbv
))

312 
t
 = 
	`__txn_cye_log
(
dbv
, 
NULL
, &
nu_l
,

313 0, 
gi
->
ϡ_txnid
 + 1,egi->
cur_maxid
);

315  (
t
);

316 
	}
}

327 
	$__txn_comn_beg
(
dbv
, 
txp
)

328 
DB_ENV
 *
dbv
;

329 
DB_TXN
 **
txp
;

331 
DB_TXN
 *
txn
;

332 
t
;

334 
	`PANIC_CHECK
(
dbv
);

336 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_TXN
), &
txn
)) != 0)

337  (
t
);

339 
txn
->
mg
 = 
dbv
->
tx_hd
;

340 
	`TAILQ_INIT
(&
txn
->
kids
);

341 
	`TAILQ_INIT
(&
txn
->
evts
);

342 
	`STAILQ_INIT
(&
txn
->
logs
);

343 
txn
->
ags
 = 
TXN_COMPENSATE
 | 
TXN_MALLOC
;

345 *
txp
 = 
txn
;

346  (
	`__txn_beg_t
(
txn
));

347 
	}
}

354 
	$__txn_beg_t
(
txn
)

355 
DB_TXN
 *
txn
;

357 
DB_ENV
 *
dbv
;

358 
DB_TXNMGR
 *
mgr
;

359 
DB_TXNREGION
 *
gi
;

360 
TXN_DETAIL
 *
td
;

361 
u_t32_t
 
id
;

362 
t
;

364 
mgr
 = 
txn
->
mg
;

365 
dbv
 = 
mgr
->dbenv;

366 
gi
 = 
mgr
->
gfo
.
imy
;

368 
	`TXN_SYSTEM_LOCK
(
dbv
);

369 i(!
	`F_ISSET
(
txn
, 
TXN_COMPENSATE
&& F_ISSET(
gi
, 
TXN_IN_RECOVERY
)) {

370 
	`__db_rx
(
dbv
, "operationotermitted duringecovery");

371 
t
 = 
EINVAL
;

372 
r
;

379 i(
gi
->
ϡ_txnid
 =
TXN_MAXIMUM
 &&

380 
gi
->
cur_maxid
 !
TXN_MAXIMUM
)

381 
gi
->
ϡ_txnid
 = 
TXN_MINIMUM
 - 1;

383 i(
gi
->
ϡ_txnid
 =gi->
cur_maxid
 &&

384 (
t
 = 
	`__txn_cye_id
(
dbv
)) != 0)

385 
r
;

388 i((
t
 =

389 
	`__v_loc
(&
mgr
->
gfo
, (
TXN_DETAIL
), &
td
)) != 0) {

390 
	`__db_rx
(
dbv
,

392 
r
;

396 
	`SH_TAILQ_INSERT_HEAD
(&
gi
->
aive_txn
, 
td
, 
lks
, 
__txn_da
);

398 
id
 = ++
gi
->
ϡ_txnid
;

400 #ifde
HAVE_STATISTICS


401 ++
gi
->

.
_nbegs
;

402 i(++
gi
->

.
_ive
 >egi->.
_maxive
)

403 
gi
->

.
_maxive
 =egi->.
_ive
;

406 
td
->
txnid
 = 
id
;

407 
dbv
->
	`thad_id
(dbv, &
td
->
pid
, &td->
tid
);

410 i(
	`LOCKING_ON
(
dbv
&& (
t
 =

411 
	`__lock_glock
(
dbv
->
lk_hd
, 
id
, 1, &
txn
->
lock
)) != 0)

412 
r
;

414 
	`ZERO_LSN
(
td
->
ϡ_l
);

415 
	`ZERO_LSN
(
td
->
beg_l
);

416 
	`SH_TAILQ_INIT
(&
td
->
kids
);

417 i(
txn
->

 !
NULL
)

418 
td
->

 = 
	`R_OFFSET
(&
mgr
->
gfo
, 
txn
->parent->td);

420 
td
->

 = 
INVALID_ROFF
;

421 
td
->
me
 = 
INVALID_ROFF
;

422 
	`MAX_LSN
(
td
->
ad_l
);

423 
	`MAX_LSN
(
td
->
visib_l
);

424 
td
->
mvcc_f
 = 0;

425 
td
->
mvcc_mtx
 = 
MUTEX_INVALID
;

426 
td
->
us
 = 
TXN_RUNNING
;

427 
td
->
ags
 = 0;

428 
td
->
xa_us
 = 0;

429 
td
->
og_dbs
 = 0;

430 
td
->
og_s
 = 
TXN_NSLOTS
;

431 
td
->
log_dbs
 = 
	`R_OFFSET
(&
mgr
->
gfo
,d->
s
);

433 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

435 
txn
->
txnid
 = 
id
;

436 
txn
->
td
 =d;

438 
txn
->
abt
 = 
__txn_abt_
;

439 
txn
->
comm
 = 
__txn_comm_
;

440 
txn
->
disrd
 = 
__txn_disrd
;

441 
txn
->
g_me
 = 
__txn_g_me
;

442 
txn
->
id
 = 
__txn_id
;

443 
txn
->
e
 = 
__txn_e
;

444 
txn
->
t_txn_lp
 = 
__txn_t_txn_lp
;

445 
txn
->
t_me
 = 
__txn_t_me
;

446 
txn
->
t_timeout
 = 
__txn_t_timeout
;

452 i(
txn
->

 !
NULL
 && 
	`LOCKING_ON
(
dbv
))

453 i((
t
 = 
	`__lock_addmylock
(
dbv
,

454 
txn
->

->
txnid
,xn->txnid)) != 0)

455  (
t
);

457 i(
	`F_ISSET
(
txn
, 
TXN_MALLOC
)) {

458 
	`MUTEX_LOCK
(
dbv
, 
mgr
->
mux
);

459 
	`TAILQ_INSERT_TAIL
(&
mgr
->
txn_cha
, 
txn
, 
lks
);

460 
	`MUTEX_UNLOCK
(
dbv
, 
mgr
->
mux
);

465 
r
: 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

466  (
t
);

467 
	}
}

477 
	$__txn_ctue
(
v
, 
txn
, 
td
)

478 
DB_ENV
 *
v
;

479 
DB_TXN
 *
txn
;

480 
TXN_DETAIL
 *
td
;

482 
t
;

484 
t
 = 0;

486 
txn
->
mg
 = 
v
->
tx_hd
;

487 
txn
->

 = 
NULL
;

488 
txn
->
txnid
 = 
td
->txnid;

489 
txn
->
td
 =d;

491 
txn
->
abt
 = 
__txn_abt_
;

492 
txn
->
comm
 = 
__txn_comm_
;

493 
txn
->
disrd
 = 
__txn_disrd
;

494 
txn
->
g_me
 = 
__txn_g_me
;

495 
txn
->
id
 = 
__txn_id
;

496 
txn
->
e
 = 
__txn_e
;

497 
txn
->
t_me
 = 
__txn_t_me
;

499 
txn
->
ags
 = 0;

506 i(
	`F_ISSET
(
td
, 
TXN_DTL_RESTORED
))

507 
	`F_SET
(
txn
, 
TXN_RESTORED
);

509 
t
 = 
	`__lock_glock
(
v
->
lk_hd
,

510 
txn
->
txnid
, 0, &txn->
lock
);

512  (
t
);

513 
	}
}

520 
	$__txn_comm_
(
txn
, 
ags
)

521 
DB_TXN
 *
txn
;

522 
u_t32_t
 
ags
;

524 
DB_ENV
 *
dbv
;

525 
DB_THREAD_INFO
 *

;

526 
n_chd
, 
t
, 
t_t
;

528 
dbv
 = 
txn
->
mg
->dbenv;

529 
n_chd
 = 
txn
->

 =
NULL
;

531 
	`ENV_ENTER
(
dbv
, 

);

533 
t
 = 
	`__txn_comm
(
txn
, 
ags
);

534 i(
n_chd
 && 
	`IS_ENV_REPLICATED
(
dbv
) &&

535 (
t_t
 = 
	`___p_ex
(
dbv
)!0 && 
t
 == 0)

536 
t
 = 
t_t
;

537 
	`ENV_LEAVE
(
dbv
, 

);

538  (
t
);

539 
	}
}

548 
	$__txn_comm
(
txn
, 
ags
)

549 
DB_TXN
 *
txn
;

550 
u_t32_t
 
ags
;

552 
DBT
 
li_dbt
;

553 
DB_ENV
 *
dbv
;

554 
DB_LOCKREQ
 
que
;

555 
DB_TXN
 *
kid
;

556 
REGENV
 *
nv
;

557 
REGINFO
 *
f
;

558 
TXN_DETAIL
 *
td
;

559 
u_t32_t
 
id
;

560 
t
, 
t_t
;

562 
dbv
 = 
txn
->
mg
->dbenv;

563 
td
 = 
txn
->td;

565 
	`PANIC_CHECK
(
dbv
);

571 i(
	`F_ISSET
(
txn
, 
TXN_DEADLOCK
)) {

572 
t
 = 
	`__db_txn_ddlock_r
(
dbv
, 
txn
);

573 
r
;

576 i((
t
 = 
	`__txn_isvid
(
txn
, 
TXN_OP_COMMIT
)) != 0)

577  (
t
);

579 
f
 = 
dbv
->
gfo
;

580 
nv
 = 
f
->
imy
;

584 
id
 = 
nv
->
vid
;

593 i(
	`__db_fchk
(
dbv
, "DB_TXN->comm", 
ags
,

594 
DB_TXN_NOSYNC
 | 
DB_TXN_SYNC
 | 
DB_TXN_WRITE_NOSYNC
) != 0)

595 
ags
 = 
DB_TXN_SYNC
;

596 i(
	`__db_fcchk
(
dbv
, "DB_TXN->comm", 
ags
,

597 
DB_TXN_SYNC
, 
DB_TXN_NOSYNC
 | 
DB_TXN_WRITE_NOSYNC
) != 0)

598 
ags
 = 
DB_TXN_SYNC
;

600 i(
	`LF_ISSET
(
DB_TXN_WRITE_NOSYNC
)) {

601 
	`F_CLR
(
txn
, 
TXN_SYNC_FLAGS
);

602 
	`F_SET
(
txn
, 
TXN_WRITE_NOSYNC
);

604 i(
	`LF_ISSET
(
DB_TXN_NOSYNC
)) {

605 
	`F_CLR
(
txn
, 
TXN_SYNC_FLAGS
);

606 
	`F_SET
(
txn
, 
TXN_NOSYNC
);

608 i(
	`LF_ISSET
(
DB_TXN_SYNC
)) {

609 
	`F_CLR
(
txn
, 
TXN_SYNC_FLAGS
);

610 
	`F_SET
(
txn
, 
TXN_SYNC
);

618 (
kid
 = 
	`TAILQ_FIRST
(&
txn
->
kids
)!
NULL
)

619 i((
t
 = 
	`__txn_comm
(
kid
, 
ags
)) != 0)

620 (
kid
 = 
	`TAILQ_FIRST
(&
txn
->
kids
)!
NULL
)

621 i((
t_t
 = 
	`__txn_abt
(
kid
)) != 0)

622  (
	`__db_nic
(
dbv
, 
t_t
));

631 i(
	`DBENV_LOGGING
(
dbv
&& (!
	`IS_ZERO_LSN
(
td
->
ϡ_l
) ||

632 
	`STAILQ_FIRST
(&
txn
->
logs
!
NULL
)) {

633 i(
txn
->

 =
NULL
) {

642 i((
t
 =

643 
	`__txn_dvts
(
dbv
, 
txn
, 
TXN_PREPARE
, 1)) != 0)

644 
r
;

646 
	`memt
(&
que
, 0, (request));

647 i(
	`LOCKING_ON
(
dbv
)) {

648 
que
.

 = 
DB_LOCK_PUT_READ
;

649 i(
	`IS_REP_MASTER
(
dbv
) &&

650 !
	`IS_ZERO_LSN
(
td
->
ϡ_l
)) {

651 
	`memt
(&
li_dbt
, 0, (list_dbt));

652 
que
.
obj
 = &
li_dbt
;

654 
t
 = 
	`__lock_vec
(
dbv
,

655 
txn
->
lock
, 0, &
que
, 1, 
NULL
);

658 i(
t
 =0 && !
	`IS_ZERO_LSN
(
td
->
ϡ_l
)) {

659 
t
 = 
	`__txn_g_log
(
dbv
, 
txn
,

660 &
td
->
visib_l
, 
	`LOG_FLAGS
(
txn
),

661 
TXN_COMMIT
,

662 (
t32_t
)
	`time
(
NULL
), 
id
, 
que
.
obj
);

663 i(
t
 == 0)

664 
td
->
ϡ_l
 =d->
visib_l
;

665 #ifde
DIAGNOSTIC


666 i(
t
 == 0) {

667 
DB_LSN
 
s_l
;

669 
	`DB_ASSERT
(
dbv
, 
	`__log_cut_l
(

670 
dbv
, &
s_l
, 
NULL
, NULL) == 0);

671 
	`DB_ASSERT
(
dbv
, 
	`LOG_COMPARE
(

672 &
td
->
visib_l
, &
s_l
) <= 0);

673 
	`COMPQUIET
(
s_l
.
fe
, 0);

678 i(
que
.
obj
 !
NULL
 &&eque.obj->
da
 != NULL)

679 
	`__os_
(
dbv
, 
que
.
obj
->
da
);

680 i(
t
 != 0)

681 
r
;

684 i(!
	`IS_ZERO_LSN
(
td
->
ϡ_l
) &&

685 (
t
 = 
	`__txn_chd_log
(
dbv
, 
txn
->

,

686 &((
TXN_DETAIL
 *)
txn
->

->
td
)->
ϡ_l
,

687 0, 
txn
->
txnid
, &
td
->
ϡ_l
)) != 0) {

688 
r
;

690 i(
	`STAILQ_FIRST
(&
txn
->
logs
!
NULL
) {

695 
	`STAILQ_CONCAT
(&
txn
->
logs
, &txn->

->logs);

696 
txn
->

->
logs
 =xn->logs;

697 
	`STAILQ_INIT
(&
txn
->
logs
);

700 
	`F_SET
(
txn
->

, 
TXN_CHILDCOMMIT
);

710 i(
txn
->
txn_li
 !
NULL
) {

711 #ide
HAVE_FTRUNCATE


712 
t_t
 = 
	`__db_do_the_limbo
(
dbv
,

713 
NULL
, 
txn
,xn->
txn_li
, 
LIMBO_NORMAL
);

714 i(
t_t
 !0 && 
t
 == 0)

715 
t
 = 
t_t
;

717 
	`__db_txi_d
(
dbv
, 
txn
->
txn_li
);

718 
txn
->
txn_li
 = 
NULL
;

721 i(
t
 != 0)

722 
r
;

725  (
	`__txn_d
(
txn
, 1));

727 
r
:

735 i(
td
->
us
 =
TXN_PREPARED
)

736  (
	`__db_nic
(
dbv
, 
t
));

738 i((
t_t
 = 
	`__txn_abt
(
txn
)) != 0)

739 
t
 = 
t_t
;

740  (
t
);

741 
	}
}

748 
	$__txn_abt_
(
txn
)

749 
DB_TXN
 *
txn
;

751 
DB_ENV
 *
dbv
;

752 
DB_THREAD_INFO
 *

;

753 
n_chd
, 
t
, 
t_t
;

755 
dbv
 = 
txn
->
mg
->dbenv;

756 
n_chd
 = 
txn
->

 =
NULL
;

758 
	`ENV_ENTER
(
dbv
, 

);

760 
t
 = 
	`__txn_abt
(
txn
);

761 i(
n_chd
 && 
	`IS_ENV_REPLICATED
(
dbv
) &&

762 (
t_t
 = 
	`___p_ex
(
dbv
)!0 && 
t
 == 0)

763 
t
 = 
t_t
;

764 
	`ENV_LEAVE
(
dbv
, 

);

765  (
t
);

766 
	}
}

775 
	$__txn_abt
(
txn
)

776 
DB_TXN
 *
txn
;

778 
DB_ENV
 *
dbv
;

779 
DB_LOCKREQ
 
que
;

780 
DB_TXN
 *
kid
;

781 
REGENV
 *
nv
;

782 
REGINFO
 *
f
;

783 
TXN_DETAIL
 *
td
;

784 
u_t32_t
 
id
;

785 
t
;

787 
dbv
 = 
txn
->
mg
->dbenv;

788 
td
 = 
txn
->td;

790 
	`PANIC_CHECK
(
dbv
);

793 i((
t
 = 
	`__txn_isvid
(
txn
, 
TXN_OP_ABORT
)) != 0)

794  (
	`__db_nic
(
dbv
, 
t
));

803 (
kid
 = 
	`TAILQ_FIRST
(&
txn
->
kids
)!
NULL
)

804 i((
t
 = 
	`__txn_abt
(
kid
)) != 0)

805  (
t
);

807 
f
 = 
dbv
->
gfo
;

808 
nv
 = 
f
->
imy
;

812 
id
 = 
nv
->
vid
;

820 i(
	`IS_ZERO_LSN
(
td
->
ϡ_l
&& 
	`STAILQ_FIRST
(&
txn
->
logs
=
NULL
) {

821 i(
txn
->
txn_li
 =
NULL
)

822 
de
;

824 
undo
;

827 i(
	`LOCKING_ON
(
dbv
)) {

829 i(
txn
->
lock
 =
NULL
 &&

830 (
t
 = 
	`__lock_glock
(
dbv
->
lk_hd
,

831 
txn
->
txnid
, 1, &txn->
lock
)) != 0)

832  (
	`__db_nic
(
dbv
, 
t
));

840 i((
t
 = 
	`__txn_dvts
(
dbv
, 
txn
, 
TXN_ABORT
, 1)) != 0)

841  (
	`__db_nic
(
dbv
, 
t
));

844 i((
t
 = 
	`__lock_t_timeout
(
dbv
,

845 
txn
->
lock
, 0, 
DB_SET_TXN_TIMEOUT
)) != 0)

846  (
	`__db_nic
(
dbv
, 
t
));

848 i((
t
 = 
	`__lock_t_timeout
(
dbv
,

849 
txn
->
lock
, 0, 
DB_SET_LOCK_TIMEOUT
)) != 0)

850  (
	`__db_nic
(
dbv
, 
t
));

852 
que
.

 = 
DB_LOCK_UPGRADE_WRITE
;

853 
que
.
obj
 = 
NULL
;

854 i((
t
 = 
	`__lock_vec
(

855 
dbv
, 
txn
->
lock
, 
DB_LOCK_ABORT
, &
que
, 1, 
NULL
)) != 0)

856  (
	`__db_nic
(
dbv
, 
t
));

858 
undo
: i((
t
 = 
	`__txn_undo
(
txn
)) != 0)

859  (
	`__db_nic
(
dbv
, 
t
));

867 
de
: i(
	`DBENV_LOGGING
(
dbv
&& 
td
->
us
 =
TXN_PREPARED
 &&

868 (
t
 = 
	`__txn_g_log
(
dbv
, 
txn
, &
td
->
ϡ_l
,

869 
	`LOG_FLAGS
(
txn
), 
TXN_ABORT
, (
t32_t
)
	`time
(
NULL
), 
id
, NULL)) != 0)

870  (
	`__db_nic
(
dbv
, 
t
));

873  (
	`__txn_d
(
txn
, 0));

874 
	}
}

881 
	$__txn_disrd
(
txn
, 
ags
)

882 
DB_TXN
 *
txn
;

883 
u_t32_t
 
ags
;

885 
DB_ENV
 *
dbv
;

886 
DB_THREAD_INFO
 *

;

887 
t
, 
t_t
;

889 
dbv
 = 
txn
->
mg
->dbenv;

891 
	`ENV_ENTER
(
dbv
, 

);

892 
t
 = 
	`__txn_disrd_t
(
txn
, 
ags
);

893 i(
	`IS_ENV_REPLICATED
(
dbv
) &&

894 (
t_t
 = 
	`___p_ex
(
dbv
)!0 && 
t
 == 0)

895 
t
 = 
t_t
;

896 
	`ENV_LEAVE
(
dbv
, 

);

897  (
t
);

898 
	}
}

907 
	$__txn_disrd_t
(
txn
, 
ags
)

908 
DB_TXN
 *
txn
;

909 
u_t32_t
 
ags
;

911 
DB_ENV
 *
dbv
;

912 
DB_TXN
 *
p
;

913 
DB_TXNMGR
 *
mgr
;

914 
t
;

916 
	`COMPQUIET
(
ags
, 0);

918 
mgr
 = 
txn
->
mg
;

919 
dbv
 = 
mgr
->dbenv;

920 
p
 = 
NULL
;

922 
	`PANIC_CHECK
(
dbv
);

924 i((
t
 = 
	`__txn_isvid
(
txn
, 
TXN_OP_DISCARD
)) != 0)

925  (
t
);

928 
	`DB_ASSERT
(
dbv
, 
	`TAILQ_FIRST
(&
txn
->
kids
=
NULL
);

931 
	`MUTEX_LOCK
(
dbv
, 
mgr
->
mux
);

932 
mgr
->
n_disrds
++;

933 i(
	`F_ISSET
(
txn
, 
TXN_MALLOC
)) {

934 
	`TAILQ_REMOVE
(&
mgr
->
txn_cha
, 
txn
, 
lks
);

935 
p
 = 
txn
;

937 
	`MUTEX_UNLOCK
(
dbv
, 
mgr
->
mux
);

938 i(
p
 !
NULL
)

939 
	`__os_
(
dbv
, 
p
);

942 
	}
}

951 
	$__txn_e
(
txn
, 
gid
)

952 
DB_TXN
 *
txn
;

953 
u_t8_t
 *
gid
;

955 
DBT
 
li_dbt
, 
xid
;

956 
DB_ENV
 *
dbv
;

957 
DB_LOCKREQ
 
que
;

958 
DB_THREAD_INFO
 *

;

959 
DB_TXN
 *
kid
;

960 
TXN_DETAIL
 *
td
;

961 
u_t32_t
 
lags
;

962 
t
;

964 
dbv
 = 
txn
->
mg
->dbenv;

965 
td
 = 
txn
->td;

967 
	`PANIC_CHECK
(
dbv
);

969 i((
t
 = 
	`__txn_isvid
(
txn
, 
TXN_OP_PREPARE
)) != 0)

970  (
t
);

971 i(
	`F_ISSET
(
txn
, 
TXN_DEADLOCK
))

972  (
	`__db_txn_ddlock_r
(
dbv
, 
txn
));

974 
	`ENV_ENTER
(
dbv
, 

);

977 (
kid
 = 
	`TAILQ_FIRST
(&
txn
->
kids
)!
NULL
)

978 i((
t
 = 
	`__txn_comm
(
kid
, 
DB_TXN_NOSYNC
)) != 0)

979 
r
;

981 #ide
HAVE_FTRUNCATE


982 i(
txn
->
txn_li
 !
NULL
 &&

983 (
t
 = 
	`__db_do_the_limbo
(
dbv
,

984 
NULL
, 
txn
,xn->
txn_li
, 
LIMBO_PREPARE
)) != 0)

985 
r
;

995 i((
t
 = 
	`__txn_dvts
(
dbv
, 
txn
, 
TXN_PREPARE
, 1)) != 0)

996 
r
;

997 
	`memt
(&
que
, 0, (request));

998 i(
	`LOCKING_ON
(
dbv
)) {

999 
que
.

 = 
DB_LOCK_PUT_READ
;

1000 i(!
	`IS_ZERO_LSN
(
td
->
ϡ_l
)) {

1001 
	`memt
(&
li_dbt
, 0, (list_dbt));

1002 
que
.
obj
 = &
li_dbt
;

1004 i((
t
 = 
	`__lock_vec
(
dbv
,

1005 
txn
->
lock
, 0, &
que
, 1, 
NULL
)) != 0)

1006 
r
;

1009 i(
	`DBENV_LOGGING
(
dbv
)) {

1010 
	`memt
(&
xid
, 0, (xid));

1011 i(
td
->
xa_us
 !
TXN_XA_ENDED
 &&

1012 
td
->
xa_us
 !
TXN_XA_SUSPENDED
)

1014 
	`memy
(
td
->
xid
, 
gid
, (td->xid));

1016 
xid
.
size
 = (
td
->xid);

1017 
xid
.
da
 = 
td
->xid;

1019 
lags
 = 
DB_LOG_COMMIT
 | 
DB_FLUSH
;

1020 i((
t
 = 
	`__txn_xa_g_log
(
dbv
, 
txn
, &
td
->
ϡ_l
,

1021 
lags
, 
TXN_PREPARE
, &
xid
, 
td
->
fm
,d->
gid
,d->
bqu
,

1022 &
td
->
beg_l
, 
que
.
obj
)) != 0)

1023 
	`__db_r
(

1024 
dbv
, 
t
, "DB_TXN->prepare:og_write failed");

1026 i(
que
.
obj
 !
NULL
 &&eque.obj->
da
 != NULL)

1027 
	`__os_
(
dbv
, 
que
.
obj
->
da
);

1028 i(
t
 != 0)

1029 
r
;

1033 
	`MUTEX_LOCK
(
dbv
, 
txn
->
mg
->
mux
);

1034 
td
->
us
 = 
TXN_PREPARED
;

1035 
	`MUTEX_UNLOCK
(
dbv
, 
txn
->
mg
->
mux
);

1036 
r
: 
	`ENV_LEAVE
(
dbv
, 

);

1037  (
t
);

1038 
	}
}

1046 
u_t32_t


1047 
	$__txn_id
(
txn
)

1048 
DB_TXN
 *
txn
;

1050  (
txn
->
txnid
);

1051 
	}
}

1060 
	$__txn_g_me
(
txn
, 
m
)

1061 
DB_TXN
 *
txn
;

1062 cڡ **
m
;

1064 *
m
 = 
txn
->
me
;

1067 
	}
}

1076 
	$__txn_t_me
(
txn
, 
me
)

1077 
DB_TXN
 *
txn
;

1078 cڡ *
me
;

1080 
DB_ENV
 *
dbv
;

1081 
DB_THREAD_INFO
 *

;

1082 
DB_TXNMGR
 *
mgr
;

1083 
TXN_DETAIL
 *
td
;

1084 
size_t
 
n
;

1085 
t
;

1086 *
p
;

1088 
mgr
 = 
txn
->
mg
;

1089 
dbv
 = 
mgr
->dbenv;

1090 
td
 = 
txn
->td;

1091 
n
 = 
	`
(
me
) + 1;

1093 i((
t
 = 
	`__os_loc
(
dbv
, 
n
, &
txn
->
me
)) != 0)

1094  (
t
);

1095 
	`memy
(
txn
->
me
,ame, 
n
);

1097 
	`ENV_ENTER
(
dbv
, 

);

1098 
	`TXN_SYSTEM_LOCK
(
dbv
);

1099 i(
td
->
me
 !
INVALID_ROFF
) {

1100 
	`__v_loc_
(

1101 &
mgr
->
gfo
, 
	`R_ADDR
(&mgr->gfo, 
td
->
me
));

1102 
td
->
me
 = 
INVALID_ROFF
;

1104 i((
t
 = 
	`__v_loc
(&
mgr
->
gfo
, 
n
, &
p
)) != 0) {

1105 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

1106 
	`__db_rx
(
dbv
,

1109 
	`__os_
(
dbv
, 
txn
->
me
);

1110 
txn
->
me
 = 
NULL
;

1112 
	`ENV_LEAVE
(
dbv
, 

);

1113  (
t
);

1115 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

1116 
td
->
me
 = 
	`R_OFFSET
(&
mgr
->
gfo
, 
p
);

1117 
	`memy
(
p
, 
me
, 
n
);

1119 #ifde
DIAGNOSTIC


1124 i(
	`DBENV_LOGGING
(
dbv
))

1125 ()
	`__log_tf
(
dbv
, 
txn
,

1126 "i %#lxamed %s", (
u_lg
)
txn
->
txnid
, 
me
);

1129 
	`ENV_LEAVE
(
dbv
, 

);

1131 
	}
}

1139 
	$__txn_t_timeout
(
txn
, 
timeout
, 

)

1140 
DB_TXN
 *
txn
;

1141 
db_timeout_t
 
timeout
;

1142 
u_t32_t
 

;

1144 
DB_ENV
 *
dbv
;

1145 
DB_THREAD_INFO
 *

;

1146 
t
;

1148 
dbv
 = 
txn
->
mg
->dbenv;

1150 i(

 !
DB_SET_TXN_TIMEOUT
 && o!
DB_SET_LOCK_TIMEOUT
)

1151  (
	`__db_
(
dbv
, "DB_TXN->set_timeout", 0));

1153 
	`ENV_ENTER
(
dbv
, 

);

1154 
t
 = 
	`__lock_t_timeout

dbv
, 
txn
->
lock
, 
timeout
, 

);

1155 
	`ENV_LEAVE
(
txn
->
mg
->
dbv
, 

);

1156  (
t
);

1157 
	}
}

1164 
	$__txn_isvid
(
txn
, 

)

1165 cڡ 
DB_TXN
 *
txn
;

1166 
txn_t
 

;

1168 
DB_ENV
 *
dbv
;

1169 
DB_TXNMGR
 *
mgr
;

1170 
DB_TXNREGION
 *
gi
;

1171 
TXN_DETAIL
 *
td
;

1173 
mgr
 = 
txn
->
mg
;

1174 
dbv
 = 
mgr
->dbenv;

1175 
gi
 = 
mgr
->
gfo
.
imy
;

1178 i(!
	`F_ISSET
(
txn
, 
TXN_COMPENSATE
) &&

1179 
	`F_ISSET
(
gi
, 
TXN_IN_RECOVERY
)) {

1180 
	`__db_rx
(
dbv
, "operationotermitted duringecovery");

1181 
r
;

1185 i(
txn
->
curss
 != 0) {

1186 
	`__db_rx
(
dbv
, "transaction hasctive cursors");

1187 
r
;

1191 
td
 = 
txn
->td;

1194 

) {

1195 
TXN_OP_DISCARD
:

1202 i(
txn
->
txnid
 !
td
->txnid)

1209 i(
td
->
us
 !
TXN_PREPARED
 &&

1210 !
	`F_ISSET
(
td
, 
TXN_DTL_RESTORED
)) {

1211 
	`__db_rx
(
dbv
, "notestoredransaction");

1212  (
	`__db_nic
(
dbv
, 
EINVAL
));

1216 
TXN_OP_PREPARE
:

1217 i(
txn
->

 !
NULL
) {

1225 
	`__db_rx
(
dbv
,

1227  (
EINVAL
);

1230 
TXN_OP_ABORT
:

1231 
TXN_OP_COMMIT
:

1236 
td
->
us
) {

1237 
TXN_PREPARED
:

1238 i(

 =
TXN_OP_PREPARE
) {

1239 
	`__db_rx
(
dbv
, "transactionlreadyrepared");

1245  (
EINVAL
);

1248 
TXN_RUNNING
:

1250 
TXN_ABORTED
:

1251 
TXN_COMMITTED
:

1253 
	`__db_rx
(
dbv
, "transactionlready %s",

1254 
td
->
us
 =
TXN_COMMITTED
 ? "committed" : "aborted");

1255 
r
;

1260 
r
:

1265  (
	`__db_nic
(
dbv
, 
EINVAL
));

1266 
	}
}

1273 
	$__txn_d
(
txn
, 
is_comm
)

1274 
DB_TXN
 *
txn
;

1275 
is_comm
;

1277 
DB_ENV
 *
dbv
;

1278 
DB_LOCKREQ
 
que
;

1279 
DB_TXNLOGREC
 *

;

1280 
DB_TXNMGR
 *
mgr
;

1281 
DB_TXNREGION
 *
gi
;

1282 
TXN_DETAIL
 *
d
, *
td
;

1283 
db_mux_t
 
mvcc_mtx
;

1284 
do_ofes
, 
t
;

1286 
mgr
 = 
txn
->
mg
;

1287 
dbv
 = 
mgr
->dbenv;

1288 
gi
 = 
mgr
->
gfo
.
imy
;

1289 
do_ofes
 = 0;

1292 i((
t
 = 
	`__txn_dvts
(
dbv
,

1293 
txn
, 
is_comm
 ? 
TXN_COMMIT
 : 
TXN_ABORT
, 0)) != 0)

1294  (
	`__db_nic
(
dbv
, 
t
));

1305 i(
	`LOCKING_ON
(
dbv
)) {

1307 i(
txn
->
lock
 =
NULL
 &&

1308 (
t
 = 
	`__lock_glock
(
dbv
->
lk_hd
,

1309 
txn
->
txnid
, 1, &txn->
lock
)) != 0)

1310  (
	`__db_nic
(
dbv
, 
t
));

1311 
que
.

 = 
txn
->

 =
NULL
 ||

1312 
is_comm
 =0 ? 
DB_LOCK_PUT_ALL
 : 
DB_LOCK_INHERIT
;

1313 
que
.
obj
 = 
NULL
;

1314 i((
t
 = 
	`__lock_vec
(
dbv
,

1315 
txn
->
lock
, 0, &
que
, 1, 
NULL
)) != 0)

1316  (
	`__db_nic
(
dbv
, 
t
));

1320 
td
 = 
txn
->td;

1321 i(
td
->
og_dbs
 !0 && (
t
 = 
	`__txn_df_ame
(
dbv
, 
txn
)) != 0)

1322  (
	`__db_nic
(
dbv
, 
t
));

1324 i(
td
->
mvcc_f
 !0 && 
	`IS_MAX_LSN
d->
visib_l
)) {

1325 
	`DB_ASSERT
(
dbv
, !
is_comm
);

1333 i((
t
 = 
	`__log_cut_l
(
dbv
, &
td
->
visib_l
,

1334 
NULL
, NULL)) != 0)

1335  (
	`__db_nic
(
dbv
, 
t
));

1338 
	`TXN_SYSTEM_LOCK
(
dbv
);

1339 
td
->
us
 = 
is_comm
 ? 
TXN_COMMITTED
 : 
TXN_ABORTED
;

1340 
	`SH_TAILQ_REMOVE
(&
gi
->
aive_txn
, 
td
, 
lks
, 
__txn_da
);

1341 i(
	`F_ISSET
(
td
, 
TXN_DTL_RESTORED
)) {

1342 
gi
->

.
_ees
--;

1343 
do_ofes
 = 
gi
->

.
_ees
 == 0;

1346 i(
td
->
me
 !
INVALID_ROFF
) {

1347 
	`__v_loc_
(

1348 &
mgr
->
gfo
, 
	`R_ADDR
(&mgr->gfo, 
td
->
me
));

1349 
td
->
me
 = 
INVALID_ROFF
;

1351 i(
txn
->

 !
NULL
) {

1352 
d
 = 
txn
->

->
td
;

1353 
	`SH_TAILQ_REMOVE
(&
d
->
kids
, 
td
, 
klks
, 
__txn_da
);

1354 } i((
mvcc_mtx
 = 
td
->mvcc_mtx!
MUTEX_INVALID
) {

1355 
	`MUTEX_LOCK
(
dbv
, 
mvcc_mtx
);

1356 i(
td
->
mvcc_f
 != 0) {

1357 
	`SH_TAILQ_INSERT_HEAD
(&
gi
->
mvcc_txn
,

1358 
td
, 
lks
, 
__txn_da
);

1359 #ifde
HAVE_STATISTICS


1360 i(++
gi
->

.
_nsh
 >

1361 
gi
->

.
_maxnsh
)

1362 
gi
->

.
_maxnsh
 =

1363 
gi
->

.
_nsh
;

1365 
td
 = 
NULL
;

1367 
	`MUTEX_UNLOCK
(
dbv
, 
mvcc_mtx
);

1368 i(
td
 !
NULL
)

1369 i((
t
 = 
	`__mux_
(
dbv
, &
td
->
mvcc_mtx
)) != 0)

1370  (
	`__db_nic
(
dbv
, 
t
));

1373 i(
td
 !
NULL
) {

1374 i(
td
->
og_s
 !
TXN_NSLOTS
)

1375 
	`__v_loc_
(&
mgr
->
gfo
,

1376 
	`R_ADDR
(&
mgr
->
gfo
, 
td
->
log_dbs
));

1377 
	`__v_loc_
(&
mgr
->
gfo
, 
td
);

1380 #ifde
HAVE_STATISTICS


1381 i(
is_comm
)

1382 
gi
->

.
_ncomms
++;

1384 
gi
->

.
_bts
++;

1385 --
gi
->

.
_ive
;

1388 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

1394 i(
	`LOCKING_ON
(
dbv
&& (
t
 =

1395 
	`__lock_mylock
(
dbv
->
lk_hd
, 
txn
->
lock
)) != 0)

1396  (
	`__db_nic
(
dbv
, 
t
));

1397 i(
txn
->

 !
NULL
)

1398 
	`TAILQ_REMOVE
(&
txn
->

->
kids
,xn, 
klks
);

1401 (

 = 
	`STAILQ_FIRST
(&
txn
->
logs
)!
NULL
) {

1402 
	`STAILQ_REMOVE
(&
txn
->
logs
, 

, 
__txn_logc
, 
lks
);

1403 
	`__os_
(
dbv
, 

);

1405 i(
txn
->
me
 !
NULL
) {

1406 
	`__os_
(
dbv
, 
txn
->
me
);

1407 
txn
->
me
 = 
NULL
;

1409 i(
	`F_ISSET
(
txn
, 
TXN_MALLOC
)) {

1410 
	`MUTEX_LOCK
(
dbv
, 
mgr
->
mux
);

1411 
	`TAILQ_REMOVE
(&
mgr
->
txn_cha
, 
txn
, 
lks
);

1412 
	`MUTEX_UNLOCK
(
dbv
, 
mgr
->
mux
);

1414 
	`__os_
(
dbv
, 
txn
);

1417 i(
do_ofes
) {

1423 ()
	`__dbg_vide_fes
(
dbv
, 1);

1424 ()
	`__dbg_o_fes
(
dbv
, 1);

1425 i(
	`IS_REP_MASTER
(
dbv
))

1426 
	`F_CLR
(
dbv
->
p_hd
, 
DBREP_OPENFILES
);

1427 
	`F_CLR
(
dbv
->
lg_hd
, 
DBLOG_OPENFILES
);

1428 
mgr
->
n_disrds
 = 0;

1429 ()
	`__txn_checkpot
(
dbv
, 0, 0,

1430 
DB_CKP_INTERNAL
 | 
DB_FORCE
);

1434 
	}
}

1437 
	$__txn_dich_undo
(
dbv
, 
txn
, 
rdbt
, 
key_l
, 
txi
)

1438 
DB_ENV
 *
dbv
;

1439 
DB_TXN
 *
txn
;

1440 
DBT
 *
rdbt
;

1441 
DB_LSN
 *
key_l
;

1442 
DB_TXNHEAD
 *
txi
;

1444 
t
;

1446 
txi
->
td
 = 
txn
->td;

1447 
t
 = 
	`__db_dich
(
dbv
, dbv->
cov_db
,

1448 
dbv
->
cov_db_size
, 
rdbt
, 
key_l
, 
DB_TXN_ABORT
, 
txi
);

1449 i(
t
 =
DB_SURPRISE_KID
) {

1450 
	`F_SET
(
txn
, 
TXN_CHILDCOMMIT
);

1451 
t
 = 0;

1453 i(
t
 =0 && 
	`F_ISSET
(
txn
, 
TXN_CHILDCOMMIT
&& 
	`IS_ZERO_LSN
(*
key_l
))

1454 
t
 = 
	`__db_txi_lg
(
dbv
, 
txi
, 
key_l
, 0);

1456  (
t
);

1457 
	}
}

1464 
	$__txn_undo
(
txn
)

1465 
DB_TXN
 *
txn
;

1467 
DBT
 
rdbt
;

1468 
DB_ENV
 *
dbv
;

1469 
DB_LOGC
 *
logc
;

1470 
DB_LSN
 
key_l
;

1471 
DB_TXN
 *
xn
;

1472 
DB_TXNHEAD
 *
txi
;

1473 
DB_TXNLOGREC
 *

;

1474 
DB_TXNMGR
 *
mgr
;

1475 
t
, 
t_t
;

1477 
mgr
 = 
txn
->
mg
;

1478 
dbv
 = 
mgr
->dbenv;

1479 
logc
 = 
NULL
;

1480 
txi
 = 
NULL
;

1481 
t
 = 0;

1483 i(!
	`LOGGING_ON
(
dbv
))

1491 
	`memt
(&
rdbt
, 0, (rdbt));

1499 
xn
 = 
txn
->

;tx!
NULL
 &&txn->parent != NULL;)

1500 
xn
 =txn->

;

1502 i(
xn
 !
NULL
 &&txn->
txn_li
 != NULL)

1503 
txi
 = 
xn
->
txn_li
;

1504 i(
txn
->
txn_li
 !
NULL
)

1505 
txi
 = 
txn
->
txn_li
;

1506 i((
t
 = 
	`__db_txi_
(
dbv
, 0, 0, 
NULL
, &
txi
)) != 0)

1507  (
t
);

1508 i(
xn
 !
NULL
)

1509 
xn
->
txn_li
 = 
txi
;

1515 
	`STAILQ_FOREACH
(

, &
txn
->
logs
, 
lks
) {

1516 
rdbt
.
da
 = 

->data;

1517 
rdbt
.
size
 = 0;

1518 
	`LSN_NOT_LOGGED
(
key_l
);

1519 
t
 =

1520 
	`__txn_dich_undo
(
dbv
, 
txn
, &
rdbt
, &
key_l
, 
txi
);

1521 i(
t
 != 0) {

1522 
	`__db_r
(
dbv
, 
t
,

1524 
r
;

1528 
key_l
 = ((
TXN_DETAIL
 *)
txn
->
td
)->
ϡ_l
;

1530 i(!
	`IS_ZERO_LSN
(
key_l
) &&

1531 (
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

1532 
r
;

1534 !
	`IS_ZERO_LSN
(
key_l
)) {

1539 i((
t
 = 
	`__logc_g
(
logc
, &
key_l
, &
rdbt
, 
DB_SET
)) == 0) {

1540 
t
 = 
	`__txn_dich_undo
(
dbv
,

1541 
txn
, &
rdbt
, &
key_l
, 
txi
);

1544 i(
t
 != 0) {

1545 
	`__db_r
(
dbv
, 
t
,

1547 (
u_lg
)
key_l
.
fe
, (u_lg)key_l.
offt
);

1548 
r
;

1552 #ide
HAVE_FTRUNCATE


1553 
t
 = 
	`__db_do_the_limbo
(
dbv
, 
xn
, 
txn
, 
txi
, 
LIMBO_NORMAL
);

1556 
r
: i(
logc
 !
NULL
 && (
t_t
 = 
	`__logc_o
ogc)!0 && 
t
 == 0)

1557 
t
 = 
t_t
;

1559 i(
xn
 =
NULL
 && 
txi
 != NULL)

1560 
	`__db_txi_d
(
dbv
, 
txi
);

1561  (
t
);

1562 
	}
}

1571 
	$__txn_aivekids
(
dbv
, 
y
, 
txn
)

1572 
DB_ENV
 *
dbv
;

1573 
u_t32_t
 
y
;

1574 
DB_TXN
 *
txn
;

1580 i(
	`F_ISSET
(
txn
, 
TXN_COMPENSATE
|| 
y
 =
DB___txn_chd
)

1583 i(
	`TAILQ_FIRST
(&
txn
->
kids
!
NULL
) {

1584 
	`__db_rx
(
dbv
, "Childransaction isctive");

1585  (
EPERM
);

1588 
	}
}

1598 
	$__txn_f_abt
(
dbv
, 
bufr
)

1599 
DB_ENV
 *
dbv
;

1600 
u_t8_t
 *
bufr
;

1602 
DB_CIPHER
 *
db_ch
;

1603 
HDR
 
hdr
, *
hd
;

1604 
u_t32_t
 
offt
, 
code
, 
sum_n
;

1605 
u_t8_t
 *
bp
, *
key
, 
chksum
[
DB_MAC_KEY
];

1606 
size_t
 
hdrsize
, 
c_n
;

1607 
t
;

1609 
db_ch
 = 
dbv
->
yo_hd
;

1617 
hdrsize
 = 
	`CRYPTO_ON
(
dbv
? 
HDR_CRYPTO_SZ
 : 
HDR_NORMAL_SZ
;

1619 
hd
 = (
HDR
 *)
bufr
;

1620 
	`memy
(&
hdr
.
ev
, 
bufr
 + 
	`SSZ
(
HDR
,rev), (hdr.prev));

1621 
	`memy
(&
hdr
.
n
, 
bufr
 + 
	`SSZ
(
HDR
,en), (hdr.len));

1622 
c_n
 = 
hdr
.
n
 - 
hdrsize
;

1624 
offt
 = (
u_t32_t
+ (u_t32_t+ (
DB_LSN
);

1625 i(
	`CRYPTO_ON
(
dbv
)) {

1626 
key
 = 
db_ch
->
mac_key
;

1627 
sum_n
 = 
DB_MAC_KEY
;

1628 i((
t
 = 
db_ch
->
	`dey
(
dbv
, db_ch->
da
,

1629 &
hd
->
iv
[0], 
bufr
 + 
hdrsize
, 
c_n
)) != 0)

1630  (
	`__db_nic
(
dbv
, 
t
));

1632 
key
 = 
NULL
;

1633 
sum_n
 = (
u_t32_t
);

1635 
bp
 = 
bufr
 + 
hdrsize
 + 
offt
;

1636 
code
 = 
TXN_ABORT
;

1637 
	`memy
(
bp
, &
code
, (opcode));

1639 i(
	`CRYPTO_ON
(
dbv
) &&

1640 (
t
 = 
db_ch
->
	`y
(
dbv
,

1641 
db_ch
->
da
, &
hd
->
iv
[0], 
bufr
 + 
hdrsize
, 
c_n
)) != 0)

1642  (
	`__db_nic
(
dbv
, 
t
));

1644 
	`__db_chksum
(&
hdr
, 
bufr
 + 
hdrsize
, 
c_n
, 
key
, 
chksum
);

1645 
	`memy
(
bufr
 + 
	`SSZA
(
HDR
, 
chksum
), chksum, 
sum_n
);

1648 
	}
}

1659 
	$__txn_eo
(
dbv
)

1660 
DB_ENV
 *
dbv
;

1662 
DB_TXNMGR
 *
mgr
;

1663 
DB_TXNREGION
 *
gi
;

1664 
do_ofes
, 
t
;

1666 
mgr
 = 
dbv
->
tx_hd
;

1667 
gi
 = 
mgr
->
gfo
.
imy
;

1668 
do_ofes
 = 0;

1670 
	`TXN_SYSTEM_LOCK
(
dbv
);

1671 i(
gi
 !
NULL
 &&

1672 
gi
->

.
_ees
 <
mgr
->
n_disrds
 &&

1673 
mgr
->
n_disrds
 != 0)

1674 
do_ofes
 = 1;

1675 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

1677 i(
do_ofes
) {

1683 
	`F_SET
(
dbv
->
lg_hd
, 
DBLOG_RECOVER
);

1684 
t
 = 
	`__dbg_o_fes
(
dbv
, 0);

1685 
	`F_CLR
(
dbv
->
lg_hd
, 
DBLOG_RECOVER
);

1687 
t
 = 0;

1689  (
t
);

1690 
	}
}

1699 
	$__txn_t
(
dbv
)

1700 
DB_ENV
 *
dbv
;

1702 
DB_LSN
 
s
;

1703 
DB_TXNREGION
 *
gi
;

1705 
gi
 = 
dbv
->
tx_hd
->
gfo
.
imy
;

1706 
gi
->
ϡ_txnid
 = 
TXN_MINIMUM
;

1708 
	`DB_ASSERT
(
dbv
, 
	`LOGGING_ON
(dbenv));

1709  (
	`__txn_cye_log
(
dbv
,

1710 
NULL
, &
s
, 0, 
TXN_MINIMUM
, 
TXN_MAXIMUM
));

1711 
	}
}

1719 
	$__txn_t_txn_lp
(
txn
, 
blp
, 
΢p
)

1720 
DB_TXN
 *
txn
;

1721 
DB_LSN
 **
blp
, **
΢p
;

1723 
TXN_DETAIL
 *
td
;

1725 
td
 = 
txn
->td;

1726 *
΢p
 = &
td
->
ϡ_l
;

1728 
txn
->

 !
NULL
)

1729 
txn
 =xn->

;

1731 
td
 = 
txn
->td;

1732 i(
	`IS_ZERO_LSN
(
td
->
beg_l
))

1733 *
blp
 = &
td
->
beg_l
;

1734 
	}
}

	@../txn/txn_auto.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/lock.h
"

11 
	~"dbc/log.h
"

12 
	~"dbc/txn.h
"

19 
	$__txn_g_42_ad
(
dbv
, 
cbuf
, 
g
)

20 
DB_ENV
 *
dbv
;

21 *
cbuf
;

22 
__txn_g_42_gs
 **
g
;

24 
__txn_g_42_gs
 *
gp
;

25 
u_t32_t
 
ump
;

26 
u_t8_t
 *
bp
;

27 
t
;

29 i((
t
 = 
	`__os_mloc
(
dbv
,

30 (
__txn_g_42_gs
+ (
DB_TXN
), &
gp
)) != 0)

31  (
t
);

32 
bp
 = 
cbuf
;

33 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

34 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

36 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

37 
bp
 +(
gp
->
ty
);

39 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

40 
bp
 +(
gp
->
tx
->
txnid
);

42 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

43 
bp
 +(
DB_LSN
);

45 
	`memy
(&
ump
, 
bp
, (uinttmp));

46 
gp
->
code
 = (
u_t32_t
)
ump
;

47 
bp
 +(
ump
);

49 
	`memy
(&
ump
, 
bp
, (uinttmp));

50 
gp
->
timeamp
 = (
t32_t
)
ump
;

51 
bp
 +(
ump
);

53 
	`memt
(&
gp
->
locks
, 0, (argp->locks));

54 
	`memy
(&
gp
->
locks
.
size
, 
bp
, (
u_t32_t
));

55 
bp
 +(
u_t32_t
);

56 
gp
->
locks
.
da
 = 
bp
;

57 
bp
 +
gp
->
locks
.
size
;

59 *
g
 = 
gp
;

61 
	}
}

68 
	$__txn_g_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

69 
code
, 
timeamp
, 
vid
, 
locks
)

70 
DB_ENV
 *
dbv
;

71 
DB_TXN
 *
tx
;

72 
DB_LSN
 *
t_lp
;

73 
u_t32_t
 
ags
;

74 
u_t32_t
 
code
;

75 
t32_t
 
timeamp
;

76 
u_t32_t
 
vid
;

77 cڡ 
DBT
 *
locks
;

79 
DBT
 
logc
;

80 
DB_TXNLOGREC
 *

;

81 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

82 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

83 
u_t
 
ad
;

84 
u_t8_t
 *
bp
;

85 
is_dub
, 
t
;

87 
	`COMPQUIET
(

, 
NULL
);

89 
y
 = 
DB___txn_g
;

90 
ad
 = 0;

91 
p
 = 
t_lp
;

93 
t
 = 0;

95 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

96 i(
tx
 =
NULL
)

98 i(
tx
 =
NULL
)

100 
is_dub
 = 0;

102 
is_dub
 = 1;

104 i(
tx
 =
NULL
) {

105 
txn_num
 = 0;

106 
lp
 = &
nu_l
;

107 
nu_l
.
fe
 =u_l.
offt
 = 0;

109 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

110 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

111  (
t
);

118 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

119 
txn_num
 = 
tx
->
txnid
;

122 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

123 + (
u_t32_t
)

124 + (
u_t32_t
)

125 + (
u_t32_t
)

126 + (
u_t32_t
+ (
locks
 =
NULL
 ? 0 :ocks->
size
);

127 i(
	`CRYPTO_ON
(
dbv
)) {

128 
ad
 =

129 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

130 
logc
.
size
 +
ad
;

133 i(
is_dub
 || 
tx
 =
NULL
) {

134 i((
t
 =

135 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

136  (
t
);

138 i((
t
 = 
	`__os_mloc
(
dbv
,

139 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

140  (
t
);

141 #ifde
DIAGNOSTIC


142 i((
t
 =

143 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

144 
	`__os_
(
dbv
, 

);

145  (
t
);

148 
logc
.
da
 = 

->data;

151 i(
ad
 > 0)

152 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

154 
bp
 = 
logc
.
da
;

156 
	`memy
(
bp
, &
y
, (rectype));

157 
bp
 +(
y
);

159 
	`memy
(
bp
, &
txn_num
, (txn_num));

160 
bp
 +(
txn_num
);

162 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

163 
bp
 +(
DB_LSN
);

165 
ump
 = (
u_t32_t
)
code
;

166 
	`memy
(
bp
, &
ump
, (uinttmp));

167 
bp
 +(
ump
);

169 
ump
 = (
u_t32_t
)
timeamp
;

170 
	`memy
(
bp
, &
ump
, (uinttmp));

171 
bp
 +(
ump
);

173 
ump
 = (
u_t32_t
)
vid
;

174 
	`memy
(
bp
, &
ump
, (uinttmp));

175 
bp
 +(
ump
);

177 i(
locks
 =
NULL
) {

178 
zo
 = 0;

179 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

180 
bp
 +(
u_t32_t
);

182 
	`memy
(
bp
, &
locks
->
size
, (locks->size));

183 
bp
 +(
locks
->
size
);

184 
	`memy
(
bp
, 
locks
->
da
,ocks->
size
);

185 
bp
 +
locks
->
size
;

188 
	`DB_ASSERT
(
dbv
,

189 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

191 i(
is_dub
 || 
tx
 =
NULL
) {

192 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

193 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

194 *
lp
 = *
p
;

195 i(
p
 !
t_lp
)

196 *
t_lp
 = *
p
;

199 
t
 = 0;

200 #ifde
DIAGNOSTIC


205 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

206 
y
 |
DB_debug_FLAG
;

207 
	`memy
(
logc
.
da
, &
y
, (rectype));

209 i(!
	`IS_REP_CLIENT
(
dbv
))

210 
t
 = 
	`__log_put
(
dbv
,

211 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

213 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

214 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

215 
	`LSN_NOT_LOGGED
(*
t_lp
);

218 #ifde
LOG_DIAGNOSTIC


219 i(
t
 != 0)

220 ()
	`__txn_g_t
(
dbv
,

221 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

224 #ifde
DIAGNOSTIC


225 
	`__os_
(
dbv
, 
logc
.
da
);

227 i(
is_dub
 || 
tx
 =
NULL
)

228 
	`__os_
(
dbv
, 
logc
.
da
);

230  (
t
);

231 
	}
}

237 
	$__txn_g_ad
(
dbv
, 
cbuf
, 
g
)

238 
DB_ENV
 *
dbv
;

239 *
cbuf
;

240 
__txn_g_gs
 **
g
;

242 
__txn_g_gs
 *
gp
;

243 
u_t32_t
 
ump
;

244 
u_t8_t
 *
bp
;

245 
t
;

247 i((
t
 = 
	`__os_mloc
(
dbv
,

248 (
__txn_g_gs
+ (
DB_TXN
), &
gp
)) != 0)

249  (
t
);

250 
bp
 = 
cbuf
;

251 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

252 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

254 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

255 
bp
 +(
gp
->
ty
);

257 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

258 
bp
 +(
gp
->
tx
->
txnid
);

260 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

261 
bp
 +(
DB_LSN
);

263 
	`memy
(&
ump
, 
bp
, (uinttmp));

264 
gp
->
code
 = (
u_t32_t
)
ump
;

265 
bp
 +(
ump
);

267 
	`memy
(&
ump
, 
bp
, (uinttmp));

268 
gp
->
timeamp
 = (
t32_t
)
ump
;

269 
bp
 +(
ump
);

271 
	`memy
(&
ump
, 
bp
, (uinttmp));

272 
gp
->
vid
 = (
u_t32_t
)
ump
;

273 
bp
 +(
ump
);

275 
	`memt
(&
gp
->
locks
, 0, (argp->locks));

276 
	`memy
(&
gp
->
locks
.
size
, 
bp
, (
u_t32_t
));

277 
bp
 +(
u_t32_t
);

278 
gp
->
locks
.
da
 = 
bp
;

279 
bp
 +
gp
->
locks
.
size
;

281 *
g
 = 
gp
;

283 
	}
}

289 
	$__txn_ckp_42_ad
(
dbv
, 
cbuf
, 
g
)

290 
DB_ENV
 *
dbv
;

291 *
cbuf
;

292 
__txn_ckp_42_gs
 **
g
;

294 
__txn_ckp_42_gs
 *
gp
;

295 
u_t32_t
 
ump
;

296 
u_t8_t
 *
bp
;

297 
t
;

299 i((
t
 = 
	`__os_mloc
(
dbv
,

300 (
__txn_ckp_42_gs
+ (
DB_TXN
), &
gp
)) != 0)

301  (
t
);

302 
bp
 = 
cbuf
;

303 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

304 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

306 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

307 
bp
 +(
gp
->
ty
);

309 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

310 
bp
 +(
gp
->
tx
->
txnid
);

312 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

313 
bp
 +(
DB_LSN
);

315 
	`memy
(&
gp
->
ckp_l
, 
bp
, (argp->ckp_lsn));

316 
bp
 +(
gp
->
ckp_l
);

318 
	`memy
(&
gp
->
ϡ_ckp
, 
bp
, (argp->last_ckp));

319 
bp
 +(
gp
->
ϡ_ckp
);

321 
	`memy
(&
ump
, 
bp
, (uinttmp));

322 
gp
->
timeamp
 = (
t32_t
)
ump
;

323 
bp
 +(
ump
);

325 
	`memy
(&
ump
, 
bp
, (uinttmp));

326 
gp
->
p_g
 = (
u_t32_t
)
ump
;

327 
bp
 +(
ump
);

329 *
g
 = 
gp
;

331 
	}
}

338 
	$__txn_ckp_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

339 
ckp_l
, 
ϡ_ckp
, 
timeamp
, 
vid
, 
e
)

340 
DB_ENV
 *
dbv
;

341 
DB_TXN
 *
tx
;

342 
DB_LSN
 *
t_lp
;

343 
u_t32_t
 
ags
;

344 
DB_LSN
 * 
ckp_l
;

345 
DB_LSN
 * 
ϡ_ckp
;

346 
t32_t
 
timeamp
;

347 
u_t32_t
 
vid
;

348 
u_t32_t
 
e
;

350 
DBT
 
logc
;

351 
DB_TXNLOGREC
 *

;

352 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

353 
u_t32_t
 
ump
, 
y
, 
txn_num
;

354 
u_t
 
ad
;

355 
u_t8_t
 *
bp
;

356 
is_dub
, 
t
;

358 
	`COMPQUIET
(

, 
NULL
);

360 
y
 = 
DB___txn_ckp
;

361 
ad
 = 0;

362 
p
 = 
t_lp
;

364 
t
 = 0;

366 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

367 i(
tx
 =
NULL
)

369 i(
tx
 =
NULL
)

371 
is_dub
 = 0;

373 
is_dub
 = 1;

375 i(
tx
 =
NULL
) {

376 
txn_num
 = 0;

377 
lp
 = &
nu_l
;

378 
nu_l
.
fe
 =u_l.
offt
 = 0;

380 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

381 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

382  (
t
);

389 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

390 
txn_num
 = 
tx
->
txnid
;

393 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

394 + (*
ckp_l
)

395 + (*
ϡ_ckp
)

396 + (
u_t32_t
)

397 + (
u_t32_t
)

398 + (
u_t32_t
);

399 i(
	`CRYPTO_ON
(
dbv
)) {

400 
ad
 =

401 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

402 
logc
.
size
 +
ad
;

405 i(
is_dub
 || 
tx
 =
NULL
) {

406 i((
t
 =

407 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

408  (
t
);

410 i((
t
 = 
	`__os_mloc
(
dbv
,

411 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

412  (
t
);

413 #ifde
DIAGNOSTIC


414 i((
t
 =

415 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

416 
	`__os_
(
dbv
, 

);

417  (
t
);

420 
logc
.
da
 = 

->data;

423 i(
ad
 > 0)

424 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

426 
bp
 = 
logc
.
da
;

428 
	`memy
(
bp
, &
y
, (rectype));

429 
bp
 +(
y
);

431 
	`memy
(
bp
, &
txn_num
, (txn_num));

432 
bp
 +(
txn_num
);

434 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

435 
bp
 +(
DB_LSN
);

437 i(
ckp_l
 !
NULL
)

438 
	`memy
(
bp
, 
ckp_l
, (*ckp_lsn));

440 
	`memt
(
bp
, 0, (*
ckp_l
));

441 
bp
 +(*
ckp_l
);

443 i(
ϡ_ckp
 !
NULL
)

444 
	`memy
(
bp
, 
ϡ_ckp
, (*last_ckp));

446 
	`memt
(
bp
, 0, (*
ϡ_ckp
));

447 
bp
 +(*
ϡ_ckp
);

449 
ump
 = (
u_t32_t
)
timeamp
;

450 
	`memy
(
bp
, &
ump
, (uinttmp));

451 
bp
 +(
ump
);

453 
ump
 = (
u_t32_t
)
vid
;

454 
	`memy
(
bp
, &
ump
, (uinttmp));

455 
bp
 +(
ump
);

457 
ump
 = (
u_t32_t
)
e
;

458 
	`memy
(
bp
, &
ump
, (uinttmp));

459 
bp
 +(
ump
);

461 
	`DB_ASSERT
(
dbv
,

462 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

464 i(
is_dub
 || 
tx
 =
NULL
) {

465 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

466 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

467 *
lp
 = *
p
;

468 i(
p
 !
t_lp
)

469 *
t_lp
 = *
p
;

472 
t
 = 0;

473 #ifde
DIAGNOSTIC


478 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

479 
y
 |
DB_debug_FLAG
;

480 
	`memy
(
logc
.
da
, &
y
, (rectype));

482 i(!
	`IS_REP_CLIENT
(
dbv
))

483 
t
 = 
	`__log_put
(
dbv
,

484 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

486 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

487 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

488 
	`LSN_NOT_LOGGED
(*
t_lp
);

491 #ifde
LOG_DIAGNOSTIC


492 i(
t
 != 0)

493 ()
	`__txn_ckp_t
(
dbv
,

494 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

497 #ifde
DIAGNOSTIC


498 
	`__os_
(
dbv
, 
logc
.
da
);

500 i(
is_dub
 || 
tx
 =
NULL
)

501 
	`__os_
(
dbv
, 
logc
.
da
);

503  (
t
);

504 
	}
}

510 
	$__txn_ckp_ad
(
dbv
, 
cbuf
, 
g
)

511 
DB_ENV
 *
dbv
;

512 *
cbuf
;

513 
__txn_ckp_gs
 **
g
;

515 
__txn_ckp_gs
 *
gp
;

516 
u_t32_t
 
ump
;

517 
u_t8_t
 *
bp
;

518 
t
;

520 i((
t
 = 
	`__os_mloc
(
dbv
,

521 (
__txn_ckp_gs
+ (
DB_TXN
), &
gp
)) != 0)

522  (
t
);

523 
bp
 = 
cbuf
;

524 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

525 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

527 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

528 
bp
 +(
gp
->
ty
);

530 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

531 
bp
 +(
gp
->
tx
->
txnid
);

533 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

534 
bp
 +(
DB_LSN
);

536 
	`memy
(&
gp
->
ckp_l
, 
bp
, (argp->ckp_lsn));

537 
bp
 +(
gp
->
ckp_l
);

539 
	`memy
(&
gp
->
ϡ_ckp
, 
bp
, (argp->last_ckp));

540 
bp
 +(
gp
->
ϡ_ckp
);

542 
	`memy
(&
ump
, 
bp
, (uinttmp));

543 
gp
->
timeamp
 = (
t32_t
)
ump
;

544 
bp
 +(
ump
);

546 
	`memy
(&
ump
, 
bp
, (uinttmp));

547 
gp
->
vid
 = (
u_t32_t
)
ump
;

548 
bp
 +(
ump
);

550 
	`memy
(&
ump
, 
bp
, (uinttmp));

551 
gp
->
e
 = (
u_t32_t
)
ump
;

552 
bp
 +(
ump
);

554 *
g
 = 
gp
;

556 
	}
}

563 
	$__txn_chd_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

564 
chd
, 
c_l
)

565 
DB_ENV
 *
dbv
;

566 
DB_TXN
 *
tx
;

567 
DB_LSN
 *
t_lp
;

568 
u_t32_t
 
ags
;

569 
u_t32_t
 
chd
;

570 
DB_LSN
 * 
c_l
;

572 
DBT
 
logc
;

573 
DB_TXNLOGREC
 *

;

574 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

575 
u_t32_t
 
ump
, 
y
, 
txn_num
;

576 
u_t
 
ad
;

577 
u_t8_t
 *
bp
;

578 
is_dub
, 
t
;

580 
	`COMPQUIET
(

, 
NULL
);

582 
y
 = 
DB___txn_chd
;

583 
ad
 = 0;

584 
p
 = 
t_lp
;

586 
t
 = 0;

588 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

589 i(
tx
 =
NULL
)

591 i(
tx
 =
NULL
)

593 
is_dub
 = 0;

595 
is_dub
 = 1;

597 i(
tx
 =
NULL
) {

598 
txn_num
 = 0;

599 
lp
 = &
nu_l
;

600 
nu_l
.
fe
 =u_l.
offt
 = 0;

602 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

603 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

604  (
t
);

611 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

612 
txn_num
 = 
tx
->
txnid
;

615 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

616 + (
u_t32_t
)

617 + (*
c_l
);

618 i(
	`CRYPTO_ON
(
dbv
)) {

619 
ad
 =

620 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

621 
logc
.
size
 +
ad
;

624 i(
is_dub
 || 
tx
 =
NULL
) {

625 i((
t
 =

626 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

627  (
t
);

629 i((
t
 = 
	`__os_mloc
(
dbv
,

630 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

631  (
t
);

632 #ifde
DIAGNOSTIC


633 i((
t
 =

634 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

635 
	`__os_
(
dbv
, 

);

636  (
t
);

639 
logc
.
da
 = 

->data;

642 i(
ad
 > 0)

643 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

645 
bp
 = 
logc
.
da
;

647 
	`memy
(
bp
, &
y
, (rectype));

648 
bp
 +(
y
);

650 
	`memy
(
bp
, &
txn_num
, (txn_num));

651 
bp
 +(
txn_num
);

653 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

654 
bp
 +(
DB_LSN
);

656 
ump
 = (
u_t32_t
)
chd
;

657 
	`memy
(
bp
, &
ump
, (uinttmp));

658 
bp
 +(
ump
);

660 i(
c_l
 !
NULL
)

661 
	`memy
(
bp
, 
c_l
, (*c_lsn));

663 
	`memt
(
bp
, 0, (*
c_l
));

664 
bp
 +(*
c_l
);

666 
	`DB_ASSERT
(
dbv
,

667 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

669 i(
is_dub
 || 
tx
 =
NULL
) {

670 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

671 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

672 *
lp
 = *
p
;

673 i(
p
 !
t_lp
)

674 *
t_lp
 = *
p
;

677 
t
 = 0;

678 #ifde
DIAGNOSTIC


683 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

684 
y
 |
DB_debug_FLAG
;

685 
	`memy
(
logc
.
da
, &
y
, (rectype));

687 i(!
	`IS_REP_CLIENT
(
dbv
))

688 
t
 = 
	`__log_put
(
dbv
,

689 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

691 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

692 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

693 
	`LSN_NOT_LOGGED
(*
t_lp
);

696 #ifde
LOG_DIAGNOSTIC


697 i(
t
 != 0)

698 ()
	`__txn_chd_t
(
dbv
,

699 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

702 #ifde
DIAGNOSTIC


703 
	`__os_
(
dbv
, 
logc
.
da
);

705 i(
is_dub
 || 
tx
 =
NULL
)

706 
	`__os_
(
dbv
, 
logc
.
da
);

708  (
t
);

709 
	}
}

715 
	$__txn_chd_ad
(
dbv
, 
cbuf
, 
g
)

716 
DB_ENV
 *
dbv
;

717 *
cbuf
;

718 
__txn_chd_gs
 **
g
;

720 
__txn_chd_gs
 *
gp
;

721 
u_t32_t
 
ump
;

722 
u_t8_t
 *
bp
;

723 
t
;

725 i((
t
 = 
	`__os_mloc
(
dbv
,

726 (
__txn_chd_gs
+ (
DB_TXN
), &
gp
)) != 0)

727  (
t
);

728 
bp
 = 
cbuf
;

729 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

730 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

732 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

733 
bp
 +(
gp
->
ty
);

735 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

736 
bp
 +(
gp
->
tx
->
txnid
);

738 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

739 
bp
 +(
DB_LSN
);

741 
	`memy
(&
ump
, 
bp
, (uinttmp));

742 
gp
->
chd
 = (
u_t32_t
)
ump
;

743 
bp
 +(
ump
);

745 
	`memy
(&
gp
->
c_l
, 
bp
, (argp->c_lsn));

746 
bp
 +(
gp
->
c_l
);

748 *
g
 = 
gp
;

750 
	}
}

758 
	$__txn_xa_g_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

759 
code
, 
xid
, 
fmID
, 
gid
, 
bqu
, 
beg_l
,

760 
locks
)

761 
DB_ENV
 *
dbv
;

762 
DB_TXN
 *
tx
;

763 
DB_LSN
 *
t_lp
;

764 
u_t32_t
 
ags
;

765 
u_t32_t
 
code
;

766 cڡ 
DBT
 *
xid
;

767 
t32_t
 
fmID
;

768 
u_t32_t
 
gid
;

769 
u_t32_t
 
bqu
;

770 
DB_LSN
 * 
beg_l
;

771 cڡ 
DBT
 *
locks
;

773 
DBT
 
logc
;

774 
DB_TXNLOGREC
 *

;

775 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

776 
u_t32_t
 
zo
, 
ump
, 
y
, 
txn_num
;

777 
u_t
 
ad
;

778 
u_t8_t
 *
bp
;

779 
is_dub
, 
t
;

781 
	`COMPQUIET
(

, 
NULL
);

783 
y
 = 
DB___txn_xa_g
;

784 
ad
 = 0;

785 
p
 = 
t_lp
;

787 
t
 = 0;

789 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

790 i(
tx
 =
NULL
)

792 i(
tx
 =
NULL
)

794 
is_dub
 = 0;

796 
is_dub
 = 1;

798 i(
tx
 =
NULL
) {

799 
txn_num
 = 0;

800 
lp
 = &
nu_l
;

801 
nu_l
.
fe
 =u_l.
offt
 = 0;

803 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

804 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

805  (
t
);

812 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

813 
txn_num
 = 
tx
->
txnid
;

816 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

817 + (
u_t32_t
)

818 + (
u_t32_t
+ (
xid
 =
NULL
 ? 0 : xid->
size
)

819 + (
u_t32_t
)

820 + (
u_t32_t
)

821 + (
u_t32_t
)

822 + (*
beg_l
)

823 + (
u_t32_t
+ (
locks
 =
NULL
 ? 0 :ocks->
size
);

824 i(
	`CRYPTO_ON
(
dbv
)) {

825 
ad
 =

826 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

827 
logc
.
size
 +
ad
;

830 i(
is_dub
 || 
tx
 =
NULL
) {

831 i((
t
 =

832 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

833  (
t
);

835 i((
t
 = 
	`__os_mloc
(
dbv
,

836 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

837  (
t
);

838 #ifde
DIAGNOSTIC


839 i((
t
 =

840 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

841 
	`__os_
(
dbv
, 

);

842  (
t
);

845 
logc
.
da
 = 

->data;

848 i(
ad
 > 0)

849 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

851 
bp
 = 
logc
.
da
;

853 
	`memy
(
bp
, &
y
, (rectype));

854 
bp
 +(
y
);

856 
	`memy
(
bp
, &
txn_num
, (txn_num));

857 
bp
 +(
txn_num
);

859 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

860 
bp
 +(
DB_LSN
);

862 
ump
 = (
u_t32_t
)
code
;

863 
	`memy
(
bp
, &
ump
, (uinttmp));

864 
bp
 +(
ump
);

866 i(
xid
 =
NULL
) {

867 
zo
 = 0;

868 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

869 
bp
 +(
u_t32_t
);

871 
	`memy
(
bp
, &
xid
->
size
, (xid->size));

872 
bp
 +(
xid
->
size
);

873 
	`memy
(
bp
, 
xid
->
da
, xid->
size
);

874 
bp
 +
xid
->
size
;

877 
ump
 = (
u_t32_t
)
fmID
;

878 
	`memy
(
bp
, &
ump
, (uinttmp));

879 
bp
 +(
ump
);

881 
ump
 = (
u_t32_t
)
gid
;

882 
	`memy
(
bp
, &
ump
, (uinttmp));

883 
bp
 +(
ump
);

885 
ump
 = (
u_t32_t
)
bqu
;

886 
	`memy
(
bp
, &
ump
, (uinttmp));

887 
bp
 +(
ump
);

889 i(
beg_l
 !
NULL
)

890 
	`memy
(
bp
, 
beg_l
, (*begin_lsn));

892 
	`memt
(
bp
, 0, (*
beg_l
));

893 
bp
 +(*
beg_l
);

895 i(
locks
 =
NULL
) {

896 
zo
 = 0;

897 
	`memy
(
bp
, &
zo
, (
u_t32_t
));

898 
bp
 +(
u_t32_t
);

900 
	`memy
(
bp
, &
locks
->
size
, (locks->size));

901 
bp
 +(
locks
->
size
);

902 
	`memy
(
bp
, 
locks
->
da
,ocks->
size
);

903 
bp
 +
locks
->
size
;

906 
	`DB_ASSERT
(
dbv
,

907 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

909 i(
is_dub
 || 
tx
 =
NULL
) {

910 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

911 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

912 *
lp
 = *
p
;

913 i(
p
 !
t_lp
)

914 *
t_lp
 = *
p
;

917 
t
 = 0;

918 #ifde
DIAGNOSTIC


923 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

924 
y
 |
DB_debug_FLAG
;

925 
	`memy
(
logc
.
da
, &
y
, (rectype));

927 i(!
	`IS_REP_CLIENT
(
dbv
))

928 
t
 = 
	`__log_put
(
dbv
,

929 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

931 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

932 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

933 
	`LSN_NOT_LOGGED
(*
t_lp
);

936 #ifde
LOG_DIAGNOSTIC


937 i(
t
 != 0)

938 ()
	`__txn_xa_g_t
(
dbv
,

939 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

942 #ifde
DIAGNOSTIC


943 
	`__os_
(
dbv
, 
logc
.
da
);

945 i(
is_dub
 || 
tx
 =
NULL
)

946 
	`__os_
(
dbv
, 
logc
.
da
);

948  (
t
);

949 
	}
}

956 
	$__txn_xa_g_ad
(
dbv
, 
cbuf
, 
g
)

957 
DB_ENV
 *
dbv
;

958 *
cbuf
;

959 
__txn_xa_g_gs
 **
g
;

961 
__txn_xa_g_gs
 *
gp
;

962 
u_t32_t
 
ump
;

963 
u_t8_t
 *
bp
;

964 
t
;

966 i((
t
 = 
	`__os_mloc
(
dbv
,

967 (
__txn_xa_g_gs
+ (
DB_TXN
), &
gp
)) != 0)

968  (
t
);

969 
bp
 = 
cbuf
;

970 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

971 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

973 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

974 
bp
 +(
gp
->
ty
);

976 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

977 
bp
 +(
gp
->
tx
->
txnid
);

979 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

980 
bp
 +(
DB_LSN
);

982 
	`memy
(&
ump
, 
bp
, (uinttmp));

983 
gp
->
code
 = (
u_t32_t
)
ump
;

984 
bp
 +(
ump
);

986 
	`memt
(&
gp
->
xid
, 0, (argp->xid));

987 
	`memy
(&
gp
->
xid
.
size
, 
bp
, (
u_t32_t
));

988 
bp
 +(
u_t32_t
);

989 
gp
->
xid
.
da
 = 
bp
;

990 
bp
 +
gp
->
xid
.
size
;

992 
	`memy
(&
ump
, 
bp
, (uinttmp));

993 
gp
->
fmID
 = (
t32_t
)
ump
;

994 
bp
 +(
ump
);

996 
	`memy
(&
ump
, 
bp
, (uinttmp));

997 
gp
->
gid
 = (
u_t32_t
)
ump
;

998 
bp
 +(
ump
);

1000 
	`memy
(&
ump
, 
bp
, (uinttmp));

1001 
gp
->
bqu
 = (
u_t32_t
)
ump
;

1002 
bp
 +(
ump
);

1004 
	`memy
(&
gp
->
beg_l
, 
bp
, (argp->begin_lsn));

1005 
bp
 +(
gp
->
beg_l
);

1007 
	`memt
(&
gp
->
locks
, 0, (argp->locks));

1008 
	`memy
(&
gp
->
locks
.
size
, 
bp
, (
u_t32_t
));

1009 
bp
 +(
u_t32_t
);

1010 
gp
->
locks
.
da
 = 
bp
;

1011 
bp
 +
gp
->
locks
.
size
;

1013 *
g
 = 
gp
;

1015 
	}
}

1022 
	$__txn_cye_log
(
dbv
, 
tx
, 
t_lp
, 
ags
,

1023 
m
, 
max
)

1024 
DB_ENV
 *
dbv
;

1025 
DB_TXN
 *
tx
;

1026 
DB_LSN
 *
t_lp
;

1027 
u_t32_t
 
ags
;

1028 
u_t32_t
 
m
;

1029 
u_t32_t
 
max
;

1031 
DBT
 
logc
;

1032 
DB_TXNLOGREC
 *

;

1033 
DB_LSN
 *
lp
, 
nu_l
, *
p
;

1034 
u_t32_t
 
ump
, 
y
, 
txn_num
;

1035 
u_t
 
ad
;

1036 
u_t8_t
 *
bp
;

1037 
is_dub
, 
t
;

1039 
	`COMPQUIET
(

, 
NULL
);

1041 
y
 = 
DB___txn_cye
;

1042 
ad
 = 0;

1043 
p
 = 
t_lp
;

1045 
t
 = 0;

1047 i(
	`LF_ISSET
(
DB_LOG_NOT_DURABLE
)) {

1048 i(
tx
 =
NULL
)

1050 i(
tx
 =
NULL
)

1052 
is_dub
 = 0;

1054 
is_dub
 = 1;

1056 i(
tx
 =
NULL
) {

1057 
txn_num
 = 0;

1058 
lp
 = &
nu_l
;

1059 
nu_l
.
fe
 =u_l.
offt
 = 0;

1061 i(
	`TAILQ_FIRST
(&
tx
->
kids
!
NULL
 &&

1062 (
t
 = 
	`__txn_aivekids
(
dbv
, 
y
, 
tx
)) != 0)

1063  (
t
);

1070 
	`DB_SET_TXN_LSNP
(
tx
, &
p
, &
lp
);

1071 
txn_num
 = 
tx
->
txnid
;

1074 
logc
.
size
 = (
y
+ (
txn_num
+ (
DB_LSN
)

1075 + (
u_t32_t
)

1076 + (
u_t32_t
);

1077 i(
	`CRYPTO_ON
(
dbv
)) {

1078 
ad
 =

1079 ((
DB_CIPHER
 *)
dbv
->
yo_hd
)->
	`adj_size
(
logc
.
size
);

1080 
logc
.
size
 +
ad
;

1083 i(
is_dub
 || 
tx
 =
NULL
) {

1084 i((
t
 =

1085 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0)

1086  (
t
);

1088 i((
t
 = 
	`__os_mloc
(
dbv
,

1089 
logc
.
size
 + (
DB_TXNLOGREC
), &

)) != 0)

1090  (
t
);

1091 #ifde
DIAGNOSTIC


1092 i((
t
 =

1093 
	`__os_mloc
(
dbv
, 
logc
.
size
, &logc.
da
)) != 0) {

1094 
	`__os_
(
dbv
, 

);

1095  (
t
);

1098 
logc
.
da
 = 

->data;

1101 i(
ad
 > 0)

1102 
	`memt
((
u_t8_t
 *)
logc
.
da
 +ogc.
size
 - 
ad
, 0,pad);

1104 
bp
 = 
logc
.
da
;

1106 
	`memy
(
bp
, &
y
, (rectype));

1107 
bp
 +(
y
);

1109 
	`memy
(
bp
, &
txn_num
, (txn_num));

1110 
bp
 +(
txn_num
);

1112 
	`memy
(
bp
, 
lp
, (
DB_LSN
));

1113 
bp
 +(
DB_LSN
);

1115 
ump
 = (
u_t32_t
)
m
;

1116 
	`memy
(
bp
, &
ump
, (uinttmp));

1117 
bp
 +(
ump
);

1119 
ump
 = (
u_t32_t
)
max
;

1120 
	`memy
(
bp
, &
ump
, (uinttmp));

1121 
bp
 +(
ump
);

1123 
	`DB_ASSERT
(
dbv
,

1124 (
u_t32_t
)(
bp
 - (
u_t8_t
 *)
logc
.
da
<logc.
size
);

1126 i(
is_dub
 || 
tx
 =
NULL
) {

1127 i((
t
 = 
	`__log_put
(
dbv
, 
p
,(
DBT
 *)&
logc
,

1128 
ags
 | 
DB_LOG_NOCOPY
)=0 && 
tx
 !
NULL
) {

1129 *
lp
 = *
p
;

1130 i(
p
 !
t_lp
)

1131 *
t_lp
 = *
p
;

1134 
t
 = 0;

1135 #ifde
DIAGNOSTIC


1140 
	`memy
(

->
da
, 
logc
.da,ogc.
size
);

1141 
y
 |
DB_debug_FLAG
;

1142 
	`memy
(
logc
.
da
, &
y
, (rectype));

1144 i(!
	`IS_REP_CLIENT
(
dbv
))

1145 
t
 = 
	`__log_put
(
dbv
,

1146 
p
, (
DBT
 *)&
logc
, 
ags
 | 
DB_LOG_NOCOPY
);

1148 
	`STAILQ_INSERT_HEAD
(&
tx
->
logs
, 

, 
lks
);

1149 
	`F_SET
((
TXN_DETAIL
 *)
tx
->
td
, 
TXN_DTL_INMEMORY
);

1150 
	`LSN_NOT_LOGGED
(*
t_lp
);

1153 #ifde
LOG_DIAGNOSTIC


1154 i(
t
 != 0)

1155 ()
	`__txn_cye_t
(
dbv
,

1156 (
DBT
 *)&
logc
, 
t_lp
, 
DB_TXN_PRINT
, 
NULL
);

1159 #ifde
DIAGNOSTIC


1160 
	`__os_
(
dbv
, 
logc
.
da
);

1162 i(
is_dub
 || 
tx
 =
NULL
)

1163 
	`__os_
(
dbv
, 
logc
.
da
);

1165  (
t
);

1166 
	}
}

1173 
	$__txn_cye_ad
(
dbv
, 
cbuf
, 
g
)

1174 
DB_ENV
 *
dbv
;

1175 *
cbuf
;

1176 
__txn_cye_gs
 **
g
;

1178 
__txn_cye_gs
 *
gp
;

1179 
u_t32_t
 
ump
;

1180 
u_t8_t
 *
bp
;

1181 
t
;

1183 i((
t
 = 
	`__os_mloc
(
dbv
,

1184 (
__txn_cye_gs
+ (
DB_TXN
), &
gp
)) != 0)

1185  (
t
);

1186 
bp
 = 
cbuf
;

1187 
gp
->
tx
 = (
DB_TXN
 *)&argp[1];

1188 
	`memt
(
gp
->
tx
, 0, (
DB_TXN
));

1190 
	`memy
(&
gp
->
ty
, 
bp
, (argp->type));

1191 
bp
 +(
gp
->
ty
);

1193 
	`memy
(&
gp
->
tx
->
txnid
, 
bp
, (argp->txnp->txnid));

1194 
bp
 +(
gp
->
tx
->
txnid
);

1196 
	`memy
(&
gp
->
ev_l
, 
bp
, (
DB_LSN
));

1197 
bp
 +(
DB_LSN
);

1199 
	`memy
(&
ump
, 
bp
, (uinttmp));

1200 
gp
->
m
 = (
u_t32_t
)
ump
;

1201 
bp
 +(
ump
);

1203 
	`memy
(&
ump
, 
bp
, (uinttmp));

1204 
gp
->
max
 = (
u_t32_t
)
ump
;

1205 
bp
 +(
ump
);

1207 *
g
 = 
gp
;

1209 
	}
}

1216 
	$__txn__cov
(
dbv
, 
dbp
, 
dbsiz
)

1217 
DB_ENV
 *
dbv
;

1218 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

1219 
size_t
 *
dbsiz
;

1221 
t
;

1223 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1224 
__txn_g_cov
, 
DB___txn_g
)) != 0)

1225  (
t
);

1226 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1227 
__txn_ckp_cov
, 
DB___txn_ckp
)) != 0)

1228  (
t
);

1229 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1230 
__txn_chd_cov
, 
DB___txn_chd
)) != 0)

1231  (
t
);

1232 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1233 
__txn_xa_g_cov
, 
DB___txn_xa_g
)) != 0)

1234  (
t
);

1235 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

1236 
__txn_cye_cov
, 
DB___txn_cye
)) != 0)

1237  (
t
);

1239 
	}
}

	@../txn/txn_autop.c

3 
	~"db_cfig.h
"

5 
	~"db_t.h
"

6 
	~"dbc/yo.h
"

7 
	~"dbc/db_ge.h
"

8 
	~"dbc/db_dich.h
"

9 
	~"dbc/db_am.h
"

10 
	~"dbc/lock.h
"

11 
	~"dbc/log.h
"

12 
	~"dbc/txn.h
"

19 
	$__txn_g_42_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

20 
DB_ENV
 *
dbv
;

21 
DBT
 *
db
;

22 
DB_LSN
 *
lp
;

23 
db_cs
 
nud2
;

24 *
nud3
;

26 
__txn_g_42_gs
 *
gp
;

27 
tm
 *

;

28 
time_t
 
timev
;

29 
time_buf
[
CTIME_BUFLEN
];

30 
t
;

32 
nud2
 = 
DB_TXN_PRINT
;

33 
nud3
 = 
NULL
;

35 i((
t
 = 
	`__txn_g_42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

36  (
t
);

37 ()
	`tf
(

39 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

40 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

41 (
u_lg
)
gp
->
ty
,

42 (
u_lg
)
gp
->
tx
->
txnid
,

43 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

44 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

45 
timev
 = (
time_t
)
gp
->
timeamp
;

46 

 = 
	`loime
(&
timev
);

47 ()
	`tf
(

49 ()
gp
->
timeamp
, 
	`__db_ime
(&
timev
, 
time_buf
),

50 (
u_lg
)

->
tm_yr
 - 100, (u_lgt->
tm_m
+1,

51 (
u_lg
)

->
tm_mday
, (u_lgt->
tm_hour
,

52 (
u_lg
)

->
tm_m
, (u_lgt->
tm_c
);

53 ()
	`tf
("\tlocks: \n");

54 
	`__lock_li_t
(
dbv
, &
gp
->
locks
);

55 ()
	`tf
("\n");

56 
	`__os_
(
dbv
, 
gp
);

58 
	}
}

65 
	$__txn_g_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

66 
DB_ENV
 *
dbv
;

67 
DBT
 *
db
;

68 
DB_LSN
 *
lp
;

69 
db_cs
 
nud2
;

70 *
nud3
;

72 
__txn_g_gs
 *
gp
;

73 
tm
 *

;

74 
time_t
 
timev
;

75 
time_buf
[
CTIME_BUFLEN
];

76 
t
;

78 
nud2
 = 
DB_TXN_PRINT
;

79 
nud3
 = 
NULL
;

81 i((
t
 = 
	`__txn_g_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

82  (
t
);

83 ()
	`tf
(

85 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

86 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

87 (
u_lg
)
gp
->
ty
,

88 (
u_lg
)
gp
->
tx
->
txnid
,

89 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

90 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

91 
timev
 = (
time_t
)
gp
->
timeamp
;

92 

 = 
	`loime
(&
timev
);

93 ()
	`tf
(

95 ()
gp
->
timeamp
, 
	`__db_ime
(&
timev
, 
time_buf
),

96 (
u_lg
)

->
tm_yr
 - 100, (u_lgt->
tm_m
+1,

97 (
u_lg
)

->
tm_mday
, (u_lgt->
tm_hour
,

98 (
u_lg
)

->
tm_m
, (u_lgt->
tm_c
);

99 ()
	`tf
("\nvid: %lu\n", (
u_lg
)
gp
->
vid
);

100 ()
	`tf
("\tlocks: \n");

101 
	`__lock_li_t
(
dbv
, &
gp
->
locks
);

102 ()
	`tf
("\n");

103 
	`__os_
(
dbv
, 
gp
);

105 
	}
}

112 
	$__txn_ckp_42_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

113 
DB_ENV
 *
dbv
;

114 
DBT
 *
db
;

115 
DB_LSN
 *
lp
;

116 
db_cs
 
nud2
;

117 *
nud3
;

119 
__txn_ckp_42_gs
 *
gp
;

120 
tm
 *

;

121 
time_t
 
timev
;

122 
time_buf
[
CTIME_BUFLEN
];

123 
t
;

125 
nud2
 = 
DB_TXN_PRINT
;

126 
nud3
 = 
NULL
;

128 i((
t
 = 
	`__txn_ckp_42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

129  (
t
);

130 ()
	`tf
(

132 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

133 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

134 (
u_lg
)
gp
->
ty
,

135 (
u_lg
)
gp
->
tx
->
txnid
,

136 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

137 ()
	`tf
("\tckp_lsn: [%lu][%lu]\n",

138 (
u_lg
)
gp
->
ckp_l
.
fe
, (u_lgrgp->ckp_l.
offt
);

139 ()
	`tf
("\tlast_ckp: [%lu][%lu]\n",

140 (
u_lg
)
gp
->
ϡ_ckp
.
fe
, (u_lgrgp->ϡ_ckp.
offt
);

141 
timev
 = (
time_t
)
gp
->
timeamp
;

142 

 = 
	`loime
(&
timev
);

143 ()
	`tf
(

145 ()
gp
->
timeamp
, 
	`__db_ime
(&
timev
, 
time_buf
),

146 (
u_lg
)

->
tm_yr
 - 100, (u_lgt->
tm_m
+1,

147 (
u_lg
)

->
tm_mday
, (u_lgt->
tm_hour
,

148 (
u_lg
)

->
tm_m
, (u_lgt->
tm_c
);

149 ()
	`tf
("\_g: %lu\n", (
u_lg
)
gp
->
p_g
);

150 ()
	`tf
("\n");

151 
	`__os_
(
dbv
, 
gp
);

153 
	}
}

160 
	$__txn_ckp_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

161 
DB_ENV
 *
dbv
;

162 
DBT
 *
db
;

163 
DB_LSN
 *
lp
;

164 
db_cs
 
nud2
;

165 *
nud3
;

167 
__txn_ckp_gs
 *
gp
;

168 
tm
 *

;

169 
time_t
 
timev
;

170 
time_buf
[
CTIME_BUFLEN
];

171 
t
;

173 
nud2
 = 
DB_TXN_PRINT
;

174 
nud3
 = 
NULL
;

176 i((
t
 = 
	`__txn_ckp_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

177  (
t
);

178 ()
	`tf
(

180 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

181 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

182 (
u_lg
)
gp
->
ty
,

183 (
u_lg
)
gp
->
tx
->
txnid
,

184 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

185 ()
	`tf
("\tckp_lsn: [%lu][%lu]\n",

186 (
u_lg
)
gp
->
ckp_l
.
fe
, (u_lgrgp->ckp_l.
offt
);

187 ()
	`tf
("\tlast_ckp: [%lu][%lu]\n",

188 (
u_lg
)
gp
->
ϡ_ckp
.
fe
, (u_lgrgp->ϡ_ckp.
offt
);

189 
timev
 = (
time_t
)
gp
->
timeamp
;

190 

 = 
	`loime
(&
timev
);

191 ()
	`tf
(

193 ()
gp
->
timeamp
, 
	`__db_ime
(&
timev
, 
time_buf
),

194 (
u_lg
)

->
tm_yr
 - 100, (u_lgt->
tm_m
+1,

195 (
u_lg
)

->
tm_mday
, (u_lgt->
tm_hour
,

196 (
u_lg
)

->
tm_m
, (u_lgt->
tm_c
);

197 ()
	`tf
("\nvid: %lu\n", (
u_lg
)
gp
->
vid
);

198 ()
	`tf
("\te: %lu\n", (
u_lg
)
gp
->
e
);

199 ()
	`tf
("\n");

200 
	`__os_
(
dbv
, 
gp
);

202 
	}
}

209 
	$__txn_chd_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

210 
DB_ENV
 *
dbv
;

211 
DBT
 *
db
;

212 
DB_LSN
 *
lp
;

213 
db_cs
 
nud2
;

214 *
nud3
;

216 
__txn_chd_gs
 *
gp
;

217 
t
;

219 
nud2
 = 
DB_TXN_PRINT
;

220 
nud3
 = 
NULL
;

222 i((
t
 = 
	`__txn_chd_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

223  (
t
);

224 ()
	`tf
(

226 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

227 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

228 (
u_lg
)
gp
->
ty
,

229 (
u_lg
)
gp
->
tx
->
txnid
,

230 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

231 ()
	`tf
("\tchd: 0x%lx\n", (
u_lg
)
gp
->
chd
);

232 ()
	`tf
("\tc_lsn: [%lu][%lu]\n",

233 (
u_lg
)
gp
->
c_l
.
fe
, (u_lgrgp->c_l.
offt
);

234 ()
	`tf
("\n");

235 
	`__os_
(
dbv
, 
gp
);

237 
	}
}

244 
	$__txn_xa_g_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

245 
DB_ENV
 *
dbv
;

246 
DBT
 *
db
;

247 
DB_LSN
 *
lp
;

248 
db_cs
 
nud2
;

249 *
nud3
;

251 
__txn_xa_g_gs
 *
gp
;

252 
u_t32_t
 
i
;

253 
ch
;

254 
t
;

256 
nud2
 = 
DB_TXN_PRINT
;

257 
nud3
 = 
NULL
;

259 i((
t
 = 
	`__txn_xa_g_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

260  (
t
);

261 ()
	`tf
(

263 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

264 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

265 (
u_lg
)
gp
->
ty
,

266 (
u_lg
)
gp
->
tx
->
txnid
,

267 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

268 ()
	`tf
("\tcode: %lu\n", (
u_lg
)
gp
->
code
);

269 ()
	`tf
("\txid: ");

270 
i
 = 0; i < 
gp
->
xid
.
size
; i++) {

271 
ch
 = ((
u_t8_t
 *)
gp
->
xid
.
da
)[
i
];

272 
	`tf
(
	`irt
(
ch
) || ch == 0x0a ? "%c" : "%#x ", ch);

274 ()
	`tf
("\n");

275 ()
	`tf
("\tfmID: %ld\n", ()
gp
->
fmID
);

276 ()
	`tf
("\tgid: %lu\n", (
u_lg
)
gp
->
gid
);

277 ()
	`tf
("\tbqu: %lu\n", (
u_lg
)
gp
->
bqu
);

278 ()
	`tf
("\tbegin_lsn: [%lu][%lu]\n",

279 (
u_lg
)
gp
->
beg_l
.
fe
, (u_lgrgp->beg_l.
offt
);

280 ()
	`tf
("\tlocks: \n");

281 
	`__lock_li_t
(
dbv
, &
gp
->
locks
);

282 ()
	`tf
("\n");

283 
	`__os_
(
dbv
, 
gp
);

285 
	}
}

292 
	$__txn_cye_t
(
dbv
, 
db
, 
lp
, 
nud2
, 
nud3
)

293 
DB_ENV
 *
dbv
;

294 
DBT
 *
db
;

295 
DB_LSN
 *
lp
;

296 
db_cs
 
nud2
;

297 *
nud3
;

299 
__txn_cye_gs
 *
gp
;

300 
t
;

302 
nud2
 = 
DB_TXN_PRINT
;

303 
nud3
 = 
NULL
;

305 i((
t
 = 
	`__txn_cye_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

306  (
t
);

307 ()
	`tf
(

309 (
u_lg
)
lp
->
fe
, (u_lgp->
offt
,

310 (
gp
->
ty
 & 
DB_debug_FLAG
) ? "_debug" : "",

311 (
u_lg
)
gp
->
ty
,

312 (
u_lg
)
gp
->
tx
->
txnid
,

313 (
u_lg
)
gp
->
ev_l
.
fe
, (u_lgrgp->ev_l.
offt
);

314 ()
	`tf
("\tm: %lu\n", (
u_lg
)
gp
->
m
);

315 ()
	`tf
("\tmax: %lu\n", (
u_lg
)
gp
->
max
);

316 ()
	`tf
("\n");

317 
	`__os_
(
dbv
, 
gp
);

319 
	}
}

326 
	$__txn__t
(
dbv
, 
dbp
, 
dbsiz
)

327 
DB_ENV
 *
dbv
;

328 (***
dbp
)
	`__P
((
DB_ENV
 *, 
DBT
 *, 
DB_LSN
 *, 
db_cs
, *));

329 
size_t
 *
dbsiz
;

331 
t
;

333 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

334 
__txn_g_t
, 
DB___txn_g
)) != 0)

335  (
t
);

336 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

337 
__txn_ckp_t
, 
DB___txn_ckp
)) != 0)

338  (
t
);

339 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

340 
__txn_chd_t
, 
DB___txn_chd
)) != 0)

341  (
t
);

342 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

343 
__txn_xa_g_t
, 
DB___txn_xa_g
)) != 0)

344  (
t
);

345 i((
t
 = 
	`__db_add_covy
(
dbv
, 
dbp
, 
dbsiz
,

346 
__txn_cye_t
, 
DB___txn_cye
)) != 0)

347  (
t
);

349 
	}
}

	@../txn/txn_chkpt.c

40 
	~"db_cfig.h
"

42 
	~"db_t.h
"

43 
	~"dbc/log.h
"

44 
	~"dbc/mp.h
"

45 
	~"dbc/txn.h
"

55 
	$__txn_checkpot_
(
dbv
, 
kbys
, 
mus
, 
ags
)

56 
DB_ENV
 *
dbv
;

57 
u_t32_t
 
kbys
, 
mus
, 
ags
;

59 
DB_THREAD_INFO
 *

;

60 
t
;

62 
	`PANIC_CHECK
(
dbv
);

63 
	`ENV_REQUIRES_CONFIG
(
dbv
,

64 
dbv
->
tx_hd
, "txn_checkpot", 
DB_INIT_TXN
);

75 i(
	`IS_REP_CLIENT
(
dbv
))

78 
	`ENV_ENTER
(
dbv
, 

);

79 
	`REPLICATION_WRAP
(
dbv
,

80 (
	`__txn_checkpot
(
dbv
, 
kbys
, 
mus
, 
ags
)), 
t
);

81 
	`ENV_LEAVE
(
dbv
, 

);

82  (
t
);

83 
	}
}

93 
	$__txn_checkpot
(
dbv
, 
kbys
, 
mus
, 
ags
)

94 
DB_ENV
 *
dbv
;

95 
u_t32_t
 
kbys
, 
mus
, 
ags
;

97 
DB_LSN
 
ckp_l
, 
ϡ_ckp
;

98 
DB_TXNMGR
 *
mgr
;

99 
DB_TXNREGION
 *
gi
;

100 
REGENV
 *
nv
;

101 
REGINFO
 *
f
;

102 
time_t
 
ϡ_ckp_time
, 
now
;

103 
u_t32_t
 
bys
, 
id
, 
logags
, 
mbys
, 

;

104 
t
;

106 
	`DB_ASSERT
(
dbv
, !
	`IS_REP_CLIENT
(dbenv));

107 
t
 = 0;

109 
mgr
 = 
dbv
->
tx_hd
;

110 
gi
 = 
mgr
->
gfo
.
imy
;

111 
f
 = 
dbv
->
gfo
;

112 
nv
 = 
f
->
imy
;

116 
id
 = 
nv
->
vid
;

123 i((
t
 = 
	`__log_cut_l
(
dbv
, &
ckp_l
, &
mbys
, &
bys
)) != 0)

124  (
t
);

126 i(!
	`LF_ISSET
(
DB_FORCE
)) {

128 i(
bys
 =0 && 
mbys
 == 0)

137 i(
kbys
 != 0 &&

138 
mbys
 * 1024 + 
bys
 / 1024 >(
u_t32_t
)
kbys
)

139 
do_ckp
;

141 i(
mus
 != 0) {

142 ()
	`time
(&
now
);

144 
	`TXN_SYSTEM_LOCK
(
dbv
);

145 
ϡ_ckp_time
 = 
gi
->
time_ckp
;

146 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

148 i(
now
 - 
ϡ_ckp_time
 >(
time_t
)(
mus
 * 60))

149 
do_ckp
;

156 i(
mus
 !0 || 
kbys
 != 0)

168 
do_ckp
:

169 
	`MUTEX_LOCK
(
dbv
, 
gi
->
mtx_ckp
);

170 i((
t
 = 
	`__txn_gaive
(
dbv
, &
ckp_l
)) != 0)

171 
r
;

191 i(
	`LOGGING_ON
(
dbv
) &&

192 
	`IS_REP_MASTER
(
dbv
&& dbv->
p_hd
->
nd
 !
NULL
)

193 ()
	`__p_nd_mesge
(
dbv
,

194 
DB_EID_BROADCAST
, 
REP_START_SYNC
, &
ckp_l
, 
NULL
, 0, 0);

197 i(
	`MPOOL_ON
(
dbv
) &&

198 (
t
 = 
	`__memp_sync_t
(

199 
dbv
, 
NULL
, 0, 
DB_SYNC_CHECKPOINT
, NULL, NULL)) != 0) {

200 
	`__db_r
(
dbv
, 
t
,

202 
r
;

221 #idef 
CONFIG_TEST


222 i(
	`LOGGING_ON
(
dbv
) &&

223 
	`IS_REP_MASTER
(
dbv
&& dbv->
p_hd
->
nd
 !
NULL
 &&

224 !
	`LF_ISSET
(
DB_CKP_INTERNAL
) &&

225 
dbv
->
p_hd
->
gi
->
chk_day
 != 0)

226 
	`__os_p
(
dbv
, dbv->
p_hd
->
gi
->
chk_day
, 0);

234 i(
	`LOGGING_ON
(
dbv
)) {

235 
	`TXN_SYSTEM_LOCK
(
dbv
);

236 
ϡ_ckp
 = 
gi
->last_ckp;

237 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

246 
logags
 = 
DB_LOG_CHKPNT
;

253 

 = 
DBREG_CHKPNT
;

254 i(!
	`IS_RECOVERING
(
dbv
))

255 
logags
 |
DB_FLUSH
;

256 i(
gi
->

.
_ees
 == 0)

257 

 = 
DBREG_RCLOSE
;

258 i((
t
 = 
	`__dbg_log_fes
(
dbv
, 

)) != 0 ||

259 (
t
 = 
	`__txn_ckp_log
(
dbv
, 
NULL
, &
ckp_l
, 
logags
,

260 &
ckp_l
, &
ϡ_ckp
, (
t32_t
)
	`time
(
NULL
), 
id
, 0)) != 0) {

261 
	`__db_r
(
dbv
, 
t
,

263 ()
ckp_l
.
fe
, ()ckp_l.
offt
);

264 
r
;

267 i((
t
 = 
	`__txn_updeckp
(
dbv
, &
ckp_l
)) != 0)

268 
r
;

271 
r
: 
	`MUTEX_UNLOCK
(
dbv
, 
gi
->
mtx_ckp
);

272  (
t
);

273 
	}
}

290 
	$__txn_gaive
(
dbv
, 
lp
)

291 
DB_ENV
 *
dbv
;

292 
DB_LSN
 *
lp
;

294 
DB_TXNMGR
 *
mgr
;

295 
DB_TXNREGION
 *
gi
;

296 
TXN_DETAIL
 *
td
;

298 
mgr
 = 
dbv
->
tx_hd
;

299 
gi
 = 
mgr
->
gfo
.
imy
;

301 
	`TXN_SYSTEM_LOCK
(
dbv
);

302 
	`SH_TAILQ_FOREACH
(
td
, &
gi
->
aive_txn
, 
lks
, 
__txn_da
)

303 i(
td
->
beg_l
.
fe
 != 0 &&

304 
td
->
beg_l
.
offt
 != 0 &&

305 
	`LOG_COMPARE
(&
td
->
beg_l
, 
lp
) < 0)

306 *
lp
 = 
td
->
beg_l
;

307 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

310 
	}
}

319 
	$__txn_gckp
(
dbv
, 
lp
)

320 
DB_ENV
 *
dbv
;

321 
DB_LSN
 *
lp
;

323 
DB_LSN
 
l
;

324 
DB_TXNMGR
 *
mgr
;

325 
DB_TXNREGION
 *
gi
;

327 
mgr
 = 
dbv
->
tx_hd
;

328 
gi
 = 
mgr
->
gfo
.
imy
;

330 
	`TXN_SYSTEM_LOCK
(
dbv
);

331 
l
 = 
gi
->
ϡ_ckp
;

332 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

334 i(
	`IS_ZERO_LSN
(
l
))

335  (
DB_NOTFOUND
);

337 *
lp
 = 
l
;

339 
	}
}

350 
	$__txn_updeckp
(
dbv
, 
lp
)

351 
DB_ENV
 *
dbv
;

352 
DB_LSN
 *
lp
;

354 
DB_TXNMGR
 *
mgr
;

355 
DB_TXNREGION
 *
gi
;

357 
mgr
 = 
dbv
->
tx_hd
;

358 
gi
 = 
mgr
->
gfo
.
imy
;

366 
	`TXN_SYSTEM_LOCK
(
dbv
);

367 i(
	`LOG_COMPARE
(&
gi
->
ϡ_ckp
, 
lp
) < 0) {

368 
gi
->
ϡ_ckp
 = *
lp
;

369 ()
	`time
(&
gi
->
time_ckp
);

371 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

374 
	}
}

	@../txn/txn_failchk.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/txn.h
"

21 
	$__txn_chk
(
dbv
)

22 
DB_ENV
 *
dbv
;

24 
DB_TXN
 *
ktxn
, *
txn
;

25 
DB_TXNMGR
 *
mgr
;

26 
DB_TXNREGION
 *
gi
;

27 
TXN_DETAIL
 *
ktd
, *
td
;

28 
db_thadid_t
 
tid
;

29 
t
;

30 
buf
[
DB_THREADID_STRLEN
];

31 
pid_t
 
pid
;

33 
mgr
 = 
dbv
->
tx_hd
;

34 
gi
 = 
mgr
->
gfo
.
imy
;

36 
y
: 
	`TXN_SYSTEM_LOCK
(
dbv
);

38 
	`SH_TAILQ_FOREACH
(
td
, &
gi
->
aive_txn
, 
lks
, 
__txn_da
) {

43 i(
td
->

 !
INVALID_ROFF
)

49 i(
td
->
us
 =
TXN_PREPARED
)

53 i(
dbv
->
	`is_ive
(dbv, 
td
->
pid
,d->
tid
, 0))

56 i(
	`F_ISSET
(
td
, 
TXN_DTL_INMEMORY
))

57  (
	`__db_ed
(
dbv
,

59 
td
->
pid
,d->
tid
));

62 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

63 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_TXN
), &
txn
)) != 0)

64  (
t
);

65 i((
t
 = 
	`__txn_ctue
(
dbv
, 
txn
, 
td
)) != 0)

66  (
t
);

67 
	`F_SET
(
txn
, 
TXN_MALLOC
);

68 
	`SH_TAILQ_FOREACH
(
ktd
, &
td
->
kids
, 
klks
, 
__txn_da
) {

69 i(
	`F_ISSET
(
ktd
, 
TXN_DTL_INMEMORY
))

70  (
	`__db_ed
(
dbv
,

72 
td
->
pid
,d->
tid
));

73 i((
t
 =

74 
	`__os_oc
(
dbv
, 1, (
DB_TXN
), &
ktxn
)) != 0)

75  (
t
);

76 i((
t
 = 
	`__txn_ctue
(
dbv
, 
ktxn
, 
ktd
)) != 0)

77  (
t
);

78 
	`F_SET
(
ktxn
, 
TXN_MALLOC
);

79 
ktxn
->

 = 
txn
;

80 
	`TAILQ_INSERT_HEAD
(&
txn
->
kids
,xn, 
klks
);

82 
	`TAILQ_INSERT_TAIL
(&
mgr
->
txn_cha
, 
txn
, 
lks
);

83 
pid
 = 
td
->pid;

84 
tid
 = 
td
->tid;

85 ()
dbv
->
	`thad_id_rg
(dbv, 
pid
, 
tid
, 
buf
);

86 
	`__db_msg
(
dbv
,

87 "Abtgx%#lx: %s", (
u_lg
)
txn
->
txnid
, 
buf
);

88 i((
t
 = 
	`__txn_abt
(
txn
)) != 0)

89  (
	`__db_ed
(
dbv
,

90 "Tniڇb܈ed", 
pid
, 
tid
));

91 
y
;

94 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

97 
	}
}

	@../txn/txn_method.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/txn.h
"

21 
	$__txn_v_
(
dbv
)

22 
DB_ENV
 *
dbv
;

30 
dbv
->
tx_max
 = 
DEF_MAX_TXNS
;

33 
	}
}

42 
	$__txn_v_deroy
(
dbv
)

43 
DB_ENV
 *
dbv
;

45 
	`COMPQUIET
(
dbv
, 
NULL
);

46 
	}
}

52 
	$__txn_g_tx_max
(
dbv
, 
tx_maxp
)

53 
DB_ENV
 *
dbv
;

54 
u_t32_t
 *
tx_maxp
;

56 
	`ENV_NOT_CONFIGURED
(
dbv
,

57 
dbv
->
tx_hd
, "DB_ENV->g_tx_max", 
DB_INIT_TXN
);

59 i(
	`TXN_ON
(
dbv
)) {

61 *
tx_maxp
 = ((
DB_TXNREGION
 *)

62 
dbv
->
tx_hd
->
gfo
.
imy
)->
maxtxns
;

64 *
tx_maxp
 = 
dbv
->
tx_max
;

66 
	}
}

75 
	$__txn_t_tx_max
(
dbv
, 
tx_max
)

76 
DB_ENV
 *
dbv
;

77 
u_t32_t
 
tx_max
;

79 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_tx_max");

81 
dbv
->
tx_max
 =x_max;

83 
	}
}

89 
	$__txn_g_tx_timeamp
(
dbv
, 
timeamp
)

90 
DB_ENV
 *
dbv
;

91 
time_t
 *
timeamp
;

93 *
timeamp
 = 
dbv
->
tx_timeamp
;

95 
	}
}

104 
	$__txn_t_tx_timeamp
(
dbv
, 
timeamp
)

105 
DB_ENV
 *
dbv
;

106 
time_t
 *
timeamp
;

108 
	`ENV_ILLEGAL_AFTER_OPEN
(
dbv
, "DB_ENV->set_tx_timestamp");

110 
dbv
->
tx_timeamp
 = *
timeamp
;

112 
	}
}

	@../txn/txn_rec.c

37 
	~"db_cfig.h
"

39 
	~"db_t.h
"

40 
	~"dbc/db_ge.h
"

41 
	~"dbc/lock.h
"

42 
	~"dbc/txn.h
"

43 
	~"dbc/db_am.h
"

54 
	$__txn_g_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

55 
DB_ENV
 *
dbv
;

56 
DBT
 *
db
;

57 
DB_LSN
 *
lp
;

58 
db_cs
 

;

59 *
fo
;

61 
DB_TXNHEAD
 *
hdp
;

62 
__txn_g_gs
 *
gp
;

63 
t
;

64 
u_t32_t
 
us
;

66 #ifde
DEBUG_RECOVER


67 ()
	`__txn_g_t
(
dbv
, 
db
, 
lp
, 

, 
fo
);

70 i((
t
 = 
	`__txn_g_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

71  (
t
);

73 
hdp
 = 
fo
;

80 i(

 =
DB_TXN_FORWARD_ROLL
) {

86 i((
t
 = 
	`__db_txi_move
(
dbv
,

87 
fo
, 
gp
->
tx
->
txnid
)!
DB_NOTFOUND
 && 
t
 != 0)

88 
r
;

89 } i((
dbv
->
tx_timeamp
 != 0 &&

90 
gp
->
timeamp
 > (
t32_t
)
dbv
->
tx_timeamp
) ||

91 (!
	`IS_ZERO_LSN
(
hdp
->
unc_l
) &&

92 
	`LOG_COMPARE
(&
hdp
->
unc_l
, 
lp
) < 0)) {

97 i((
t
 = 
	`__db_txi_upde
(
dbv
, 
fo
,

98 
gp
->
tx
->
txnid
, 
TXN_ABORT
, 
NULL
, &
us
, 1)) != 0)

99 
r
;

100 i(
us
 !
TXN_IGNORE
 && stu!
TXN_OK
)

101 
r
;

104 i((
t
 = 
	`__db_txi_upde
(
dbv
,

105 
fo
, 
gp
->
tx
->
txnid
,rgp->
code
, 
lp
,

106 &
us
, 0)=
DB_NOTFOUND
) {

107 i((
t
 = 
	`__db_txi_add
(
dbv
,

108 
fo
, 
gp
->
tx
->
txnid
,

109 
gp
->
code
 =
TXN_ABORT
 ?

110 
TXN_IGNORE
 : 
gp
->
code
, 
lp
)) != 0)

111 
r
;

112 } i(
t
 != 0 ||

113 (
us
 !
TXN_IGNORE
 && stu!
TXN_OK
))

114 
r
;

117 i(
t
 == 0)

118 *
lp
 = 
gp
->
ev_l
;

121 
r
: 
	`__db_rx
(
dbv
,

123 (
u_lg
)
gp
->
tx
->
txnid
);

124 
t
 = 
EINVAL
;

126 
	`__os_
(
dbv
, 
gp
);

128  (
t
);

129 
	}
}

138 
	$__txn_xa_g_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

139 
DB_ENV
 *
dbv
;

140 
DBT
 *
db
;

141 
DB_LSN
 *
lp
;

142 
db_cs
 

;

143 *
fo
;

145 
DBT
 *
lock_dbt
;

146 
DB_TXNHEAD
 *
hdp
;

147 
DB_LOCKTAB
 *

;

148 
__txn_xa_g_gs
 *
gp
;

149 
t
;

150 
u_t32_t
 
us
;

152 #ifde
DEBUG_RECOVER


153 ()
	`__txn_xa_g_t
(
dbv
, 
db
, 
lp
, 

, 
fo
);

156 i((
t
 = 
	`__txn_xa_g_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

157  (
t
);

159 i(
gp
->
code
 !
TXN_PREPARE
 &&rgp->cod!
TXN_ABORT
) {

160 
t
 = 
EINVAL
;

161 
r
;

163 
hdp
 = 
fo
;

172 
t
 = 
	`__db_txi_fd
(
dbv
, 
fo
, 
gp
->
tx
->
txnid
, &
us
);

180 i(

 =
DB_TXN_FORWARD_ROLL
) {

181 i((
t
 = 
	`__db_txi_move
(
dbv
,

182 
fo
, 
gp
->
tx
->
txnid
)) != 0)

183 
txn_r
;

184 } i(

 =
DB_TXN_BACKWARD_ROLL
 && 
us
 =
TXN_PREPARE
) {

196 i(
gp
->
code
 =
TXN_ABORT
) {

197 i((
t
 = 
	`__db_txi_upde
(
dbv
,

198 
fo
, 
gp
->
tx
->
txnid
,

199 
TXN_ABORT
, 
NULL
, &
us
, 0)) != 0 &&

200 
us
 !
TXN_PREPARE
)

201 
txn_r
;

202 
t
 = 0;

211 i((
t
 = 
	`__db_txi_move
(
dbv
,

212 
fo
, 
gp
->
tx
->
txnid
)) != 0) {

213 
txn_r
: 
	`__db_rx
(
dbv
,

215 (
u_lg
)
gp
->
tx
->
txnid
);

216 
t
 = 
DB_NOTFOUND
;

217 } i(
	`IS_ZERO_LSN
(
hdp
->
unc_l
) ||

218 
	`LOG_COMPARE
(&
hdp
->
unc_l
, 
lp
) >= 0) {

219 i((
t
 = 
	`__db_txi_add
(
dbv
,

220 
fo
, 
gp
->
tx
->
txnid
, 
TXN_COMMIT
, 
lp
)) == 0) {

222 
lock_dbt
 = &
gp
->
locks
;

223 i(
	`LOCKING_ON
(
dbv
)) {

224 

 = 
dbv
->
lk_hd
;

225 i((
t
 = 
	`__lock_glock
(

,

226 
gp
->
tx
->
txnid
, 1,

227 &
gp
->
tx
->
lock
)) != 0)

228 
r
;

229 i((
t
 = 
	`__lock_g_li
(
dbv
,

230 
gp
->
tx
->
lock
, 0,

231 
DB_LOCK_WRITE
, 
lock_dbt
)) != 0)

232 
r
;

235 
t
 = 
	`__txn_e_txn
(
dbv
, 
lp
, 
gp
);

239 
t
 = 0;

241 i(
t
 == 0)

242 *
lp
 = 
gp
->
ev_l
;

244 
r
: 
	`__os_
(
dbv
, 
gp
);

246  (
t
);

247 
	}
}

254 
	$__txn_ckp_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

255 
DB_ENV
 *
dbv
;

256 
DBT
 *
db
;

257 
DB_LSN
 *
lp
;

258 
db_cs
 

;

259 *
fo
;

261 
__txn_ckp_gs
 *
gp
;

262 
t
;

264 #ifde
DEBUG_RECOVER


265 
	`__txn_ckp_t
(
dbv
, 
db
, 
lp
, 

, 
fo
);

267 i((
t
 = 
	`__txn_ckp_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

268  (
t
);

270 i(

 =
DB_TXN_BACKWARD_ROLL
)

271 
	`__db_txi_ckp
(
dbv
, 
fo
, 
lp
);

273 *
lp
 = 
gp
->
ϡ_ckp
;

274 
	`__os_
(
dbv
, 
gp
);

275  (
DB_TXN_CKP
);

276 
	}
}

286 
	$__txn_chd_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

287 
DB_ENV
 *
dbv
;

288 
DBT
 *
db
;

289 
DB_LSN
 *
lp
;

290 
db_cs
 

;

291 *
fo
;

293 
__txn_chd_gs
 *
gp
;

294 
t
, 
t_t
;

295 
u_t32_t
 
c_
, 
p_
, 
tmp
;

297 #ifde
DEBUG_RECOVER


298 ()
	`__txn_chd_t
(
dbv
, 
db
, 
lp
, 

, 
fo
);

300 i((
t
 = 
	`__txn_chd_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

301  (
t
);

310 i(

 =
DB_TXN_ABORT
) {

311 *
lp
 = 
gp
->
c_l
;

312 
t
 = 
	`__db_txi_ladd
(
dbv
, 
fo
, &
gp
->
ev_l
);

313 
out
;

314 } i(

 =
DB_TXN_BACKWARD_ROLL
) {

316 
t
 = 
	`__db_txi_fd
(
dbv
, 
fo
, 
gp
->
chd
, &
c_
);

317 
t_t
 =

318 
	`__db_txi_fd
(
dbv
, 
fo
, 
gp
->
tx
->
txnid
, &
p_
);

319 i(
t
 !0 && !
DB_NOTFOUND
)

320 
out
;

321 i(
t_t
 !0 &&_!
DB_NOTFOUND
) {

322 
t
 = 
t_t
;

323 
out
;

330 i(
t
 =
DB_NOTFOUND
 ||

331 
c_
 =
TXN_OK
 || c_ =
TXN_COMMIT
) {

332 i(
t_t
 =
DB_NOTFOUND
 ||

333 (
p_
 !
TXN_COMMIT
 &&_ !
TXN_IGNORE
))

334 
c_
 = 
TXN_ABORT
;

336 
c_
 = 
p_
;

338 i(
t
 =
DB_NOTFOUND
)

339 
t
 = 
	`__db_txi_add
(
dbv
,

340 
fo
, 
gp
->
chd
, 
c_
, 
NULL
);

342 
t
 = 
	`__db_txi_upde
(
dbv
, 
fo
,

343 
gp
->
chd
, 
c_
, 
NULL
, &
tmp
, 0);

344 } i(
c_
 =
TXN_EXPECTED
) {

350 
p_
) {

351 
TXN_COMMIT
:

352 
TXN_IGNORE
:

353 
c_
 = 
TXN_IGNORE
;

356 
c_
 = 
TXN_ABORT
;

358 
t
 = 
	`__db_txi_upde
(
dbv
,

359 
fo
, 
gp
->
chd
, 
c_
, 
NULL
, &
tmp
, 0);

360 } i(
c_
 =
TXN_UNEXPECTED
) {

368 
t
 = 
	`__db_txi_upde
(
dbv
, 
fo
, 
gp
->
chd
,

369 
p_
 =
TXN_COMMIT
 ? TXN_COMMIT : 
TXN_IGNORE
,

370 
NULL
, &
tmp
, 0);

372 } i(

 =
DB_TXN_OPENFILES
) {

377 i((
t
 = 
	`__db_txi_fd
(
dbv
,

378 
fo
, 
gp
->
chd
, &
c_
)=
DB_NOTFOUND
)

379 
t
 = 
	`__db_txi_upde
(
dbv
, 
fo
,

380 
gp
->
tx
->
txnid
, 
TXN_IGNORE
,

381 
NULL
, &
p_
, 1);

382 } i(
	`DB_REDO
(

)) {

384 i((
t
 =

385 
	`__db_txi_move
(
dbv
, 
fo
, 
gp
->
chd
)) != 0)

386 
	`__db_rx
(
dbv
,

387 "Tniڂ ili %x", 
gp
->
chd
);

390 i(
t
 == 0)

391 *
lp
 = 
gp
->
ev_l
;

393 
out
: 
	`__os_
(
dbv
, 
gp
);

395  (
t
);

396 
	}
}

412 
	$__txn_e_txn
(
dbv
, 
lp
, 
gp
)

413 
DB_ENV
 *
dbv
;

414 
DB_LSN
 *
lp
;

415 
__txn_xa_g_gs
 *
gp
;

417 
DB_TXNMGR
 *
mgr
;

418 
TXN_DETAIL
 *
td
;

419 
DB_TXNREGION
 *
gi
;

420 
t
;

422 i(
gp
->
xid
.
size
 == 0)

425 
mgr
 = 
dbv
->
tx_hd
;

426 
gi
 = 
mgr
->
gfo
.
imy
;

427 
	`TXN_SYSTEM_LOCK
(
dbv
);

430 i((
t
 = 
	`__v_loc
(&
mgr
->
gfo
, (
TXN_DETAIL
), &
td
)) != 0) {

431 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

432  (
t
);

436 
	`SH_TAILQ_INSERT_HEAD
(&
gi
->
aive_txn
, 
td
, 
lks
, 
__txn_da
);

438 
td
->
txnid
 = 
gp
->
tx
->txnid;

439 
	`__os_id
(
dbv
, &
td
->
pid
, &td->
tid
);

440 
td
->
ϡ_l
 = *
lp
;

441 
td
->
beg_l
 = 
gp
->begin_lsn;

442 
td
->

 = 
INVALID_ROFF
;

443 
td
->
me
 = 
INVALID_ROFF
;

444 
	`SH_TAILQ_INIT
(&
td
->
kids
);

445 
	`MAX_LSN
(
td
->
ad_l
);

446 
	`MAX_LSN
(
td
->
visib_l
);

447 
td
->
mvcc_f
 = 0;

448 
td
->
mvcc_mtx
 = 
MUTEX_INVALID
;

449 
td
->
us
 = 
TXN_PREPARED
;

450 
td
->
ags
 = 
TXN_DTL_RESTORED
;

451 
td
->
xa_us
 = 
TXN_XA_PREPARED
;

452 
	`memy
(
td
->
xid
, 
gp
->xid.
da
,rgp->xid.
size
);

453 
td
->
bqu
 = 
gp
->bqual;

454 
td
->
gid
 = 
gp
->gtrid;

455 
td
->
fm
 = 
gp
->
fmID
;

456 
td
->
og_dbs
 = 0;

457 
td
->
og_s
 = 
TXN_NSLOTS
;

458 
td
->
log_dbs
 = 
	`R_OFFSET
(&
mgr
->
gfo
,d->
s
);

460 
gi
->

.
_ees
++;

461 #ifde
HAVE_STATISTICS


462 
gi
->

.
_ive
++;

463 i(
gi
->

.
_ive
 >egi->.
_maxive
)

464 
gi
->

.
_maxive
 =egi->.
_ive
;

466 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

468 
	}
}

478 
	$__txn_cye_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

479 
DB_ENV
 *
dbv
;

480 
DBT
 *
db
;

481 
DB_LSN
 *
lp
;

482 
db_cs
 

;

483 *
fo
;

485 
__txn_cye_gs
 *
gp
;

486 
t
;

488 #ifde
DEBUG_RECOVER


489 ()
	`__txn_chd_t
(
dbv
, 
db
, 
lp
, 

, 
fo
);

491 i((
t
 = 
	`__txn_cye_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

492  (
t
);

494 
	`COMPQUIET
(
lp
, 
NULL
);

496 i((
t
 = 
	`__db_txi_g
(
dbv
, 
fo
,

497 
	`DB_UNDO
(

? -1 : 1, 
gp
->
m
,rgp->
max
)) != 0)

498  (
t
);

500 
	`__os_
(
dbv
, 
gp
);

503 
	}
}

514 
	$__txn_g_42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

515 
DB_ENV
 *
dbv
;

516 
DBT
 *
db
;

517 
DB_LSN
 *
lp
;

518 
db_cs
 

;

519 *
fo
;

521 
DB_TXNHEAD
 *
hdp
;

522 
__txn_g_42_gs
 *
gp
;

523 
t
;

524 
u_t32_t
 
us
;

526 #ifde
DEBUG_RECOVER


527 ()
	`__txn_g_42_t
(
dbv
, 
db
, 
lp
, 

, 
fo
);

530 i((
t
 = 
	`__txn_g_42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

531  (
t
);

533 
hdp
 = 
fo
;

540 i(

 =
DB_TXN_FORWARD_ROLL
) {

546 i((
t
 = 
	`__db_txi_move
(
dbv
,

547 
fo
, 
gp
->
tx
->
txnid
)!
DB_NOTFOUND
 && 
t
 != 0)

548 
r
;

549 } i((
dbv
->
tx_timeamp
 != 0 &&

550 
gp
->
timeamp
 > (
t32_t
)
dbv
->
tx_timeamp
) ||

551 (!
	`IS_ZERO_LSN
(
hdp
->
unc_l
) &&

552 
	`LOG_COMPARE
(&
hdp
->
unc_l
, 
lp
) < 0)) {

557 i((
t
 = 
	`__db_txi_upde
(
dbv
, 
fo
,

558 
gp
->
tx
->
txnid
, 
TXN_ABORT
, 
NULL
, &
us
, 1)) != 0)

559 
r
;

560 i(
us
 !
TXN_IGNORE
 && stu!
TXN_OK
)

561 
r
;

564 i((
t
 = 
	`__db_txi_upde
(
dbv
,

565 
fo
, 
gp
->
tx
->
txnid
,rgp->
code
, 
lp
,

566 &
us
, 0)=
DB_NOTFOUND
) {

567 i((
t
 = 
	`__db_txi_add
(
dbv
,

568 
fo
, 
gp
->
tx
->
txnid
,

569 
gp
->
code
 =
TXN_ABORT
 ?

570 
TXN_IGNORE
 : 
gp
->
code
, 
lp
)) != 0)

571 
r
;

572 } i(
t
 != 0 ||

573 (
us
 !
TXN_IGNORE
 && stu!
TXN_OK
))

574 
r
;

577 i(
t
 == 0)

578 *
lp
 = 
gp
->
ev_l
;

581 
r
: 
	`__db_rx
(
dbv
,

583 (
u_lg
)
gp
->
tx
->
txnid
);

584 
t
 = 
EINVAL
;

586 
	`__os_
(
dbv
, 
gp
);

588  (
t
);

589 
	}
}

596 
	$__txn_ckp_42_cov
(
dbv
, 
db
, 
lp
, 

, 
fo
)

597 
DB_ENV
 *
dbv
;

598 
DBT
 *
db
;

599 
DB_LSN
 *
lp
;

600 
db_cs
 

;

601 *
fo
;

603 
__txn_ckp_42_gs
 *
gp
;

604 
t
;

606 #ifde
DEBUG_RECOVER


607 
	`__txn_ckp_42_t
(
dbv
, 
db
, 
lp
, 

, 
fo
);

609 i((
t
 = 
	`__txn_ckp_42_ad
(
dbv
, 
db
->
da
, &
gp
)) != 0)

610  (
t
);

612 i(

 =
DB_TXN_BACKWARD_ROLL
)

613 
	`__db_txi_ckp
(
dbv
, 
fo
, 
lp
);

615 *
lp
 = 
gp
->
ϡ_ckp
;

616 
	`__os_
(
dbv
, 
gp
);

617  (
DB_TXN_CKP
);

618 
	}
}

	@../txn/txn_recover.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/txn.h
"

13 
	~"dbc/db_ge.h
"

14 
	~"dbc/db_dich.h
"

15 
	~"dbc/log.h
"

16 
	~"dbc_auto/db_auto.h
"

17 
	~"dbc_auto/d_auto.h
"

18 
	~"dbc_auto/db_ext.h
"

28 
	$__txn_m_gid
(
dbv
, 
gid
, 
tdp
, 
of
)

29 
DB_ENV
 *
dbv
;

30 
u_t8_t
 *
gid
;

31 
TXN_DETAIL
 **
tdp
;

32 
roff_t
 *
of
;

34 
DB_TXNMGR
 *
mgr
;

35 
DB_TXNREGION
 *
gi
;

37 
mgr
 = 
dbv
->
tx_hd
;

38 
gi
 = 
mgr
->
gfo
.
imy
;

45 
	`TXN_SYSTEM_LOCK
(
dbv
);

46 
	`SH_TAILQ_FOREACH
(*
tdp
, &
gi
->
aive_txn
, 
lks
, 
__txn_da
)

47 i(
	`memcmp
(
gid
, (*
tdp
)->
xid
, ((*tdp)->xid)) == 0)

49 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

51 i(*
tdp
 =
NULL
)

52  (
EINVAL
);

54 *
of
 = 
	`R_OFFSET
(&
mgr
->
gfo
, *
tdp
);

56 
	}
}

66 
	$__txn_cov_
(
dbv
, 
li
, 
cou
, 

, 
ags
)

67 
DB_ENV
 *
dbv
;

68 
DB_PREPLIST
 *
li
;

69 
cou
, *

;

70 
u_t32_t
 
ags
;

72 
DB_THREAD_INFO
 *

;

73 
t
;

75 
	`PANIC_CHECK
(
dbv
);

76 
	`ENV_REQUIRES_CONFIG
(

77 
dbv
, dbv->
tx_hd
, "txn_cov", 
DB_INIT_TXN
);

79 i(
	`F_ISSET
((
DB_TXNREGION
 *)
dbv
->
tx_hd
->
gfo
.
imy
,

80 
TXN_IN_RECOVERY
)) {

81 
	`__db_rx
(
dbv
, "operationotermitted while inecovery");

82  (
EINVAL
);

85 i(
ags
 !
DB_FIRST
 && fg!
DB_NEXT
)

86  (
	`__db_
(
dbv
, "DB_ENV->txn_recover", 0));

88 
	`ENV_ENTER
(
dbv
, 

);

89 
	`REPLICATION_WRAP
(
dbv
,

90 (
	`__txn_cov
(
dbv
, 
li
, 
cou
, 

, 
ags
)), 
t
);

91 
	`ENV_LEAVE
(
dbv
, 

);

92  (
t
);

93 
	}
}

103 
	$__txn_cov
(
dbv
, 
li
, 
cou
, 

, 
ags
)

104 
DB_ENV
 *
dbv
;

105 
DB_PREPLIST
 *
li
;

106 
cou
, *

;

107 
u_t32_t
 
ags
;

114  (
	`__txn_g_ed
(
dbv
, 
NULL
, 
li
, 
cou
, 

, 
ags
));

115 
	}
}

131 
	$__txn_g_ed
(
dbv
, 
xids
, 
txns
, 
cou
, 

, 
ags
)

132 
DB_ENV
 *
dbv
;

133 
XID
 *
xids
;

134 
DB_PREPLIST
 *
txns
;

135 
cou
;

136 *

;

137 
u_t32_t
 
ags
;

139 
DB_LSN
 
m
;

140 
DB_PREPLIST
 *
p
;

141 
DB_TXNMGR
 *
mgr
;

142 
DB_TXNREGION
 *
gi
;

143 
TXN_DETAIL
 *
td
;

144 
XID
 *
xidp
;

145 
i
;

146 
ed
, 
t
;

148 *

 = 0;

150 
	`MAX_LSN
(
m
);

151 
p
 = 
txns
;

152 
xidp
 = 
xids
;

153 
ed
 = 
t
 = 0;

163 
mgr
 = 
dbv
->
tx_hd
;

164 
gi
 = 
mgr
->
gfo
.
imy
;

173 
	`TXN_SYSTEM_LOCK
(
dbv
);

176 
td
 = 
	`SH_TAILQ_FIRST
(&
gi
->
aive_txn
, 
__txn_da
);

177 
td
 !
NULL
 && *

 < 
cou
;

178 
td
 = 
	`SH_TAILQ_NEXT
d, 
lks
, 
__txn_da
)) {

179 i(
td
->
us
 !
TXN_PREPARED
 ||

180 (
ags
 !
DB_FIRST
 && 
	`F_ISSET
(
td
, 
TXN_DTL_COLLECTED
)))

183 i(
	`F_ISSET
(
td
, 
TXN_DTL_RESTORED
))

184 
ed
 = 1;

186 i(
xids
 !
NULL
) {

187 
xidp
->
fmID
 = 
td
->
fm
;

193 
xidp
->
gid_ngth
 = ()
td
->
gid
;

194 
xidp
->
bqu_ngth
 = ()
td
->
bqu
;

195 
	`memy
(
xidp
->
da
, 
td
->
xid
, (td->xid));

196 
xidp
++;

199 i(
txns
 !
NULL
) {

200 i((
t
 = 
	`__os_oc
(
dbv
,

201 1, (
DB_TXN
), &
p
->
txn
)) != 0) {

202 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

203 
r
;

205 i((
t
 = 
	`__txn_ctue
(
dbv
, 
p
->
txn
, 
td
)) != 0)

206 
r
;

207 
	`F_SET
(
p
->
txn
, 
TXN_MALLOC
);

208 
	`memy
(
p
->
gid
, 
td
->
xid
, (td->xid));

209 
p
++;

212 i(!
	`IS_ZERO_LSN
(
td
->
beg_l
) &&

213 
	`LOG_COMPARE
(&
td
->
beg_l
, &
m
) < 0)

214 
m
 = 
td
->
beg_l
;

216 (*

)++;

217 
	`F_SET
(
td
, 
TXN_DTL_COLLECTED
);

219 i(
ags
 =
DB_FIRST
)

220 ; 
td
 !
NULL
;d = 
	`SH_TAILQ_NEXT
d, 
lks
, 
__txn_da
))

221 
	`F_CLR
(
td
, 
TXN_DTL_COLLECTED
);

222 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

227 i(
txns
 !
NULL
 && *

 != 0) {

228 
	`MUTEX_LOCK
(
dbv
, 
mgr
->
mux
);

229 
i
 = 0; i < *

; i++)

230 
	`TAILQ_INSERT_TAIL
(&
mgr
->
txn_cha
, 
txns
[
i
].
txn
, 
lks
);

231 
	`MUTEX_UNLOCK
(
dbv
, 
mgr
->
mux
);

237 i(
	`REP_ON
(
dbv
)) {

238 
	`REP_SYSTEM_LOCK
(
dbv
);

239 
dbv
->
p_hd
->
gi
->
_t
 +(
u_lg
)*

;

240 
	`REP_SYSTEM_UNLOCK
(
dbv
);

248 i(
ed
 !0 && 
ags
 =
DB_FIRST
 &&

249 !
	`F_ISSET
(
dbv
->
lg_hd
, 
DBLOG_OPENFILES
))

250 
t
 = 
	`__txn_ݒfes
(
dbv
, &
m
, 0);

253 
r
: 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

255  (
t
);

256 
	}
}

265 
	$__txn_ݒfes
(
dbv
, 
m
, 
f
)

266 
DB_ENV
 *
dbv
;

267 
DB_LSN
 *
m
;

268 
f
;

270 
DBT
 
da
;

271 
DB_LOGC
 *
logc
;

272 
DB_LSN
 
ݒ_l
;

273 
DB_TXNHEAD
 *
txnfo
;

274 
__txn_ckp_gs
 *
ckp_gs
;

275 
t
, 
t_t
;

281 
logc
 = 
NULL
;

282 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

283 
r
;

285 
	`memt
(&
da
, 0, (data));

286 i((
t
 = 
	`__txn_gckp
(
dbv
, &
ݒ_l
)) == 0)

287 !
	`IS_ZERO_LSN
(
ݒ_l
&& (
t
 =

288 
	`__logc_g
(
logc
, &
ݒ_l
, &
da
, 
DB_SET
)) == 0 &&

289 (
f
 ||

290 (
m
 !
NULL
 && 
	`LOG_COMPARE
(m, &
ݒ_l
) < 0))) {

292 i((
t
 = 
	`__txn_ckp_ad
(
dbv
,

293 
da
.da, &
ckp_gs
)) != 0) {

294 
	`__db_rx
(
dbv
,

296 (
u_lg
)
ݒ_l
.
fe
,

297 (
u_lg
)
ݒ_l
.
offt
);

298 
r
;

305 
ݒ_l
 = 
f
 ? 
ckp_gs
->
ckp_l
 :

306 
ckp_gs
->
ϡ_ckp
;

307 
	`__os_
(
dbv
, 
ckp_gs
);

308 i(
f
) {

309 i((
t
 = 
	`__logc_g
(
logc
, &
ݒ_l
,

310 &
da
, 
DB_SET
)) != 0)

311 
r
;

325 i((
t
 =
DB_NOTFOUND
 || 
	`IS_ZERO_LSN
(
ݒ_l
)) && (ret =

326 
	`__logc_g
(
logc
, &
ݒ_l
, &
da
, 
DB_FIRST
)) != 0) {

327 
	`__db_rx
(
dbv
, "Noogecords");

328 
r
;

331 i((
t
 = 
	`__db_txi_
(
dbv
, 0, 0, 
NULL
, &
txnfo
)) != 0)

332 
r
;

333 
t
 = 
	`__v_ݒfes
(
dbv
, 
logc
,

334 
txnfo
, &
da
, &
ݒ_l
, 
NULL
, 0, 0);

335 i(
txnfo
 !
NULL
)

336 
	`__db_txi_d
(
dbv
, 
txnfo
);

338 
r
:

339 i(
logc
 !
NULL
 && (
t_t
 = 
	`__logc_o
ogc)!0 && 
t
 == 0)

340 
t
 = 
t_t
;

341  (
t
);

342 
	}
}

	@../txn/txn_region.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/log.h
"

13 
	~"dbc/txn.h
"

15 
__txn_
 
__P
((
DB_ENV
 *, 
DB_TXNMGR
 *));

16 
size_t
 
__txn_gi_size
 
__P
((
DB_ENV
 *));

25 
	$__txn_ݒ
(
dbv
, 
_ok
)

26 
DB_ENV
 *
dbv
;

27 
_ok
;

29 
DB_TXNMGR
 *
mgr
;

30 
t
;

33 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_TXNMGR
), &
mgr
)) != 0)

34  (
t
);

35 
	`TAILQ_INIT
(&
mgr
->
txn_cha
);

36 
mgr
->
dbv
 = dbenv;

39 
mgr
->
gfo
.
dbv
 = dbenv;

40 
mgr
->
gfo
.
ty
 = 
REGION_TYPE_TXN
;

41 
mgr
->
gfo
.
id
 = 
INVALID_REGION_ID
;

42 
mgr
->
gfo
.
ags
 = 
REGION_JOIN_OK
;

43 i(
_ok
)

44 
	`F_SET
(&
mgr
->
gfo
, 
REGION_CREATE_OK
);

45 i((
t
 = 
	`__v_gi_ch
(
dbv
,

46 &
mgr
->
gfo
, 
	`__txn_gi_size
(
dbv
))) != 0)

47 
r
;

50 i(
	`F_ISSET
(&
mgr
->
gfo
, 
REGION_CREATE
))

51 i((
t
 = 
	`__txn_
(
dbv
, 
mgr
)) != 0)

52 
r
;

55 
mgr
->
gfo
.
imy
 =

56 
	`R_ADDR
(&
mgr
->
gfo
, mgr->gfo.

->
imy
);

59 i((
t
 = 
	`__mux_loc
(

60 
dbv
, 
MTX_TXN_ACTIVE
, 
DB_MUTEX_PROCESS_ONLY
, &
mgr
->
mux
)) != 0)

61 
r
;

63 
dbv
->
tx_hd
 = 
mgr
;

66 
r
: 
dbv
->
tx_hd
 = 
NULL
;

67 i(
mgr
->
gfo
.
addr
 !
NULL
)

68 ()
	`__v_gi_dach
(
dbv
, &
mgr
->
gfo
, 0);

70 ()
	`__mux_
(
dbv
, &
mgr
->
mux
);

71 
	`__os_
(
dbv
, 
mgr
);

72  (
t
);

73 
	}
}

80 
	$__txn_
(
dbv
, 
mgr
)

81 
DB_ENV
 *
dbv
;

82 
DB_TXNMGR
 *
mgr
;

84 
DB_LSN
 
ϡ_ckp
;

85 
DB_TXNREGION
 *
gi
;

86 
t
;

91 
	`ZERO_LSN
(
ϡ_ckp
);

92 i(
	`LOGGING_ON
(
dbv
)) {

97 i((
t
 = 
	`__log_g_ched_ckp_l
(
dbv
, &
ϡ_ckp
)) != 0)

98  (
t
);

104 i(
	`IS_ZERO_LSN
(
ϡ_ckp
) &&

105 (
t
 = 
	`__txn_fdϡckp
(
dbv
, &
ϡ_ckp
, 
NULL
)) != 0)

106  (
t
);

109 i((
t
 = 
	`__v_loc
(&
mgr
->
gfo
,

110 (
DB_TXNREGION
), &
mgr
->
gfo
.
imy
)) != 0) {

111 
	`__db_rx
(
dbv
,

113  (
t
);

115 
mgr
->
gfo
.

->
imy
 =

116 
	`R_OFFSET
(&
mgr
->
gfo
, mgr->gfo.
imy
);

117 
gi
 = 
mgr
->
gfo
.
imy
;

118 
	`memt
(
gi
, 0, (*region));

120 i((
t
 = 
	`__mux_loc
(

121 
dbv
, 
MTX_TXN_REGION
, 0, &
gi
->
mtx_gi
)) != 0)

122  (
t
);

124 
gi
->
maxtxns
 = 
dbv
->
tx_max
;

125 
gi
->
ϡ_txnid
 = 
TXN_MINIMUM
;

126 
gi
->
cur_maxid
 = 
TXN_MAXIMUM
;

128 i((
t
 = 
	`__mux_loc
(

129 
dbv
, 
MTX_TXN_CHKPT
, 0, &
gi
->
mtx_ckp
)) != 0)

130  (
t
);

131 
gi
->
ϡ_ckp
 =ast_ckp;

132 
gi
->
time_ckp
 = 
	`time
(
NULL
);

134 
	`memt
(&
gi
->

, 0, (region->stat));

135 #ifde
HAVE_STATISTICS


136 
gi
->

.
_maxtxns
 =egi->
maxtxns
;

139 
	`SH_TAILQ_INIT
(&
gi
->
aive_txn
);

140 
	`SH_TAILQ_INIT
(&
gi
->
mvcc_txn
);

141  (
t
);

142 
	}
}

153 
	$__txn_fdϡckp
(
dbv
, 
lp
, 
max_l
)

154 
DB_ENV
 *
dbv
;

155 
DB_LSN
 *
lp
;

156 
DB_LSN
 *
max_l
;

158 
DB_LOGC
 *
logc
;

159 
DB_LSN
 
l
;

160 
DBT
 
dbt
;

161 
t
, 
t_t
;

162 
u_t32_t
 
y
;

164 
	`ZERO_LSN
(*
lp
);

166 i((
t
 = 
	`__log_curs
(
dbv
, &
logc
)) != 0)

167  (
t
);

170 
	`memt
(&
dbt
, 0, (dbt));

171 i(
max_l
 !
NULL
) {

172 
l
 = *
max_l
;

173 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
dbt
, 
DB_SET
)) != 0)

174 
r
;

176 i((
t
 = 
	`__logc_g
(
logc
, &
l
, &
dbt
, 
DB_LAST
)) != 0)

177 
r
;

183 
l
.
offt
 = 0;

187 (
t
 = 
	`__logc_g
(
logc
, &
l
, &
dbt
, 
DB_PREV
)) == 0) {

188 i(
dbt
.
size
 < (
u_t32_t
))

190 
	`memy
(&
y
, 
dbt
.
da
, (
u_t32_t
));

191 i(
y
 =
DB___txn_ckp
) {

192 *
lp
 = 
l
;

197 
r
: i((
t_t
 = 
	`__logc_o
(
logc
)!0 && 
t
 == 0)

198 
t
 = 
t_t
;

204  ((
t
 =0 || =
DB_NOTFOUND
) ? 0 :et);

205 
	}
}

214 
	$__txn_v_esh
(
dbv
)

215 
DB_ENV
 *
dbv
;

217 
DB_TXN
 *
txn
;

218 
DB_TXNMGR
 *
mgr
;

219 
REGINFO
 *
gfo
;

220 
u_t32_t
 
txnid
;

221 
ab܋d
, 
t
, 
t_t
;

223 
t
 = 0;

224 
mgr
 = 
dbv
->
tx_hd
;

225 
gfo
 = &
mgr
->reginfo;

238 
ab܋d
 = 0;

239 i(
	`TAILQ_FIRST
(&
mgr
->
txn_cha
!
NULL
) {

240 (
txn
 = 
	`TAILQ_FIRST
(&
mgr
->
txn_cha
)!
NULL
) {

242 
txnid
 = 
txn
->txnid;

243 i(((
TXN_DETAIL
 *)
txn
->
td
)->
us
 =
TXN_PREPARED
) {

244 i((
t
 = 
	`__txn_disrd_t
(
txn
, 0)) != 0) {

245 
	`__db_r
(
dbv
, 
t
,

247 (
u_lg
)
txnid
);

252 
ab܋d
 = 1;

253 i((
t_t
 = 
	`__txn_abt
(
txn
)) != 0) {

254 
	`__db_r
(
dbv
, 
t_t
,

256 (
u_lg
)
txnid
);

257 
t
 = 
	`__db_nic
(
dbv
, 
t_t
);

261 i(
ab܋d
) {

262 
	`__db_rx
(
dbv
,

264 i(
t
 == 0)

265 
t
 = 
EINVAL
;

270 i((
t_t
 = 
	`__mux_
(
dbv
, &
mgr
->
mux
)!0 && 
t
 == 0)

271 
t
 = 
t_t
;

274 i((
t_t
 = 
	`__v_gi_dach
(
dbv
, 
gfo
, 0)!0 && 
t
 == 0)

275 
t
 = 
t_t
;

277 
	`__os_
(
dbv
, 
mgr
);

279 
dbv
->
tx_hd
 = 
NULL
;

280  (
t
);

281 
	}
}

289 
u_t32_t


290 
	$__txn_gi_mux_cou
(
dbv
)

291 
DB_ENV
 *
dbv
;

297  (
dbv
->
tx_max
 + 1 + 2);

298 
	}
}

304 
size_t


305 
	$__txn_gi_size
(
dbv
)

306 
DB_ENV
 *
dbv
;

308 
size_t
 
s
;

317 
s
 = (
DB_TXNREGION
) +

318 
dbv
->
tx_max
 * ((
TXN_DETAIL
+ 
	`__v_loc_ovhd
() + 20) +

320  (
s
);

321 
	}
}

331 
	$__txn_id_t
(
dbv
, 
cur_txnid
, 
max_txnid
)

332 
DB_ENV
 *
dbv
;

333 
u_t32_t
 
cur_txnid
, 
max_txnid
;

335 
DB_TXNMGR
 *
mgr
;

336 
DB_TXNREGION
 *
gi
;

337 
t
;

339 
	`ENV_REQUIRES_CONFIG
(
dbv
, dbv->
tx_hd
, "txn_id_t", 
DB_INIT_TXN
);

341 
mgr
 = 
dbv
->
tx_hd
;

342 
gi
 = 
mgr
->
gfo
.
imy
;

343 
gi
->
ϡ_txnid
 = 
cur_txnid
;

344 
gi
->
cur_maxid
 = 
max_txnid
;

346 
t
 = 0;

347 i(
cur_txnid
 < 
TXN_MINIMUM
) {

348 
	`__db_rx
(
dbv
, "Current ID value %lu below minimum",

349 (
u_lg
)
cur_txnid
);

350 
t
 = 
EINVAL
;

352 i(
max_txnid
 < 
TXN_MINIMUM
) {

353 
	`__db_rx
(
dbv
, "Maximum ID value %lu below minimum",

354 (
u_lg
)
max_txnid
);

355 
t
 = 
EINVAL
;

357  (
t
);

358 
	}
}

368 
	$__txn_de_ad
(
dbv
, 
lp
)

369 
DB_ENV
 *
dbv
;

370 
DB_LSN
 *
lp
;

372 
DB_LSN
 
d_l
;

373 
DB_TXNMGR
 *
mgr
;

374 
DB_TXNREGION
 *
gi
;

375 
TXN_DETAIL
 *
td
;

376 
t
;

378 i((
mgr
 = 
dbv
->
tx_hd
=
NULL
)

380 
gi
 = 
mgr
->
gfo
.
imy
;

382 i((
t
 = 
	`__log_cut_l
(
dbv
, &
d_l
, 
NULL
, NULL)) != 0)

383  (
t
);

385 
	`TXN_SYSTEM_LOCK
(
dbv
);

386 
	`SH_TAILQ_FOREACH
(
td
, &
gi
->
aive_txn
, 
lks
, 
__txn_da
)

387 i(
	`LOG_COMPARE
(&
td
->
ad_l
, &
d_l
) < 0)

388 
d_l
 = 
td
->
ad_l
;

389 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

391 
	`DB_ASSERT
(
dbv
, 
	`LOG_COMPARE
(&
d_l
, 
lp
) >= 0);

392 *
lp
 = 
d_l
;

395 
	}
}

404 
	$__txn_add_bufr
(
dbv
, 
td
)

405 
DB_ENV
 *
dbv
;

406 
TXN_DETAIL
 *
td
;

408 
	`DB_ASSERT
(
dbv
, 
td
 !
NULL
);

410 
	`MUTEX_LOCK
(
dbv
, 
td
->
mvcc_mtx
);

411 
	`DB_ASSERT
(
dbv
, 
td
->
mvcc_f
 < 
UINT32_MAX
);

412 ++
td
->
mvcc_f
;

413 
	`MUTEX_UNLOCK
(
dbv
, 
td
->
mvcc_mtx
);

415 
	`COMPQUIET
(
dbv
, 
NULL
);

417 
	}
}

426 
	$__txn_move_bufr
(
dbv
, 
td
, 
hash_mtx
)

427 
DB_ENV
 *
dbv
;

428 
TXN_DETAIL
 *
td
;

429 
db_mux_t
 
hash_mtx
;

431 
DB_TXNMGR
 *
mgr
;

432 
DB_TXNREGION
 *
gi
;

433 
ed_
, 
t
;

435 
	`DB_ASSERT
(
dbv
, 
td
 !
NULL
);

436 
t
 = 0;

437 
mgr
 = 
dbv
->
tx_hd
;

438 
gi
 = 
mgr
->
gfo
.
imy
;

440 
	`MUTEX_LOCK
(
dbv
, 
td
->
mvcc_mtx
);

441 
	`DB_ASSERT
(
dbv
, 
td
->
mvcc_f
 > 0);

442 
ed_
 = (--
td
->
mvcc_f
 == 0);

443 
	`MUTEX_UNLOCK
(
dbv
, 
td
->
mvcc_mtx
);

445 i(
ed_
 &&

446 (
td
->
us
 =
TXN_COMMITTED
 ||d->u=
TXN_ABORTED
)) {

447 
	`MUTEX_UNLOCK
(
dbv
, 
hash_mtx
);

449 
t
 = 
	`__mux_
(
dbv
, &
td
->
mvcc_mtx
);

450 
td
->
mvcc_mtx
 = 
MUTEX_INVALID
;

452 
	`TXN_SYSTEM_LOCK
(
dbv
);

453 
	`SH_TAILQ_REMOVE
(&
gi
->
mvcc_txn
, 
td
, 
lks
, 
__txn_da
);

454 #ifde
HAVE_STATISTICS


455 --
gi
->

.
_nsh
;

457 
	`__v_loc_
(&
mgr
->
gfo
, 
td
);

458 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

460 
	`MUTEX_LOCK
(
dbv
, 
hash_mtx
);

463  (
t
);

464 
	}
}

	@../txn/txn_stat.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/db_am.h
"

14 
	~"dbc/log.h
"

15 
	~"dbc/txn.h
"

17 #ifde
HAVE_STATISTICS


18 
__txn_com
 
__P
((const *, const *));

19 
__txn_t_l
 
__P
((
DB_ENV
 *, 
u_t32_t
));

20 
__txn_t_s
 
__P
((
DB_ENV
 *, 
u_t32_t
));

21 
__txn_
 
__P
((
DB_ENV
 *, 
DB_TXN_STAT
 **, 
u_t32_t
));

22 *
__txn_us
 
__P
((
DB_TXN_ACTIVE
 *));

23 
__txn_gid
 
__P
((
DB_ENV
 *, 
DB_MSGBUF
 *, 
DB_TXN_ACTIVE
 *));

25 
	#XID_FIELD_IS_SET
(
p
) \

26 ((
p
)->
xa_us
 !0 || (p)->
us
 =
TXN_PREPARED
)

	)

35 
	$__txn__
(
dbv
, 
p
, 
ags
)

36 
DB_ENV
 *
dbv
;

37 
DB_TXN_STAT
 **
p
;

38 
u_t32_t
 
ags
;

40 
DB_THREAD_INFO
 *

;

41 
t
;

43 
	`PANIC_CHECK
(
dbv
);

44 
	`ENV_REQUIRES_CONFIG
(
dbv
,

45 
dbv
->
tx_hd
, "DB_ENV->txn_", 
DB_INIT_TXN
);

47 i((
t
 = 
	`__db_fchk
(
dbv
,

48 "DB_ENV->txn_", 
ags
, 
DB_STAT_CLEAR
)) != 0)

49  (
t
);

51 
	`ENV_ENTER
(
dbv
, 

);

52 
	`REPLICATION_WRAP
(
dbv
, (
	`__txn_
(dbv, 
p
, 
ags
)), 
t
);

53 
	`ENV_LEAVE
(
dbv
, 

);

54  (
t
);

55 
	}
}

62 
	$__txn_
(
dbv
, 
p
, 
ags
)

63 
DB_ENV
 *
dbv
;

64 
DB_TXN_STAT
 **
p
;

65 
u_t32_t
 
ags
;

67 
DB_TXNMGR
 *
mgr
;

68 
DB_TXNREGION
 *
gi
;

69 
DB_TXN_STAT
 *
s
;

70 
TXN_DETAIL
 *
td
;

71 
size_t
 
nbys
;

72 
u_t32_t
 
maxtxn
, 
ndx
;

73 
t
;

75 *
p
 = 
NULL
;

76 
mgr
 = 
dbv
->
tx_hd
;

77 
gi
 = 
mgr
->
gfo
.
imy
;

89 
maxtxn
 = 
gi
->
maxtxns
 + (region->maxtxns / 10) + 10;

90 
nbys
 = (
DB_TXN_STAT
+ (
DB_TXN_ACTIVE
* 
maxtxn
;

91 i((
t
 = 
	`__os_umloc
(
dbv
, 
nbys
, &
s
)) != 0)

92  (
t
);

94 
	`TXN_SYSTEM_LOCK
(
dbv
);

95 
	`memy
(
s
, &
gi
->

, (*stats));

96 
s
->
_ϡ_txnid
 = 
gi
->
ϡ_txnid
;

97 
s
->
_ϡ_ckp
 = 
gi
->
ϡ_ckp
;

98 
s
->
_time_ckp
 = 
gi
->
time_ckp
;

99 
s
->
_txǼay
 = (
DB_TXN_ACTIVE
 *)&stats[1];

101 
ndx
 = 0,

102 
td
 = 
	`SH_TAILQ_FIRST
(&
gi
->
aive_txn
, 
__txn_da
);

103 
td
 !
NULL
 && 
ndx
 < 
maxtxn
;

104 
td
 = 
	`SH_TAILQ_NEXT
d, 
lks
, 
__txn_da
), ++
ndx
) {

105 
s
->
_txǼay
[
ndx
].
txnid
 = 
td
->txnid;

106 i(
td
->

 =
INVALID_ROFF
)

107 
s
->
_txǼay
[
ndx
].
id
 = 
TXN_INVALID
;

109 
s
->
_txǼay
[
ndx
].
id
 =

110 ((
TXN_DETAIL
 *)
	`R_ADDR
(&
mgr
->
gfo
,

111 
td
->

))->
txnid
;

112 
s
->
_txǼay
[
ndx
].
pid
 = 
td
->pid;

113 
s
->
_txǼay
[
ndx
].
tid
 = 
td
->tid;

114 
s
->
_txǼay
[
ndx
].
l
 = 
td
->
beg_l
;

115 
s
->
_txǼay
[
ndx
].
ad_l
 = 
td
->read_lsn;

116 
s
->
_txǼay
[
ndx
].
mvcc_f
 = 
td
->mvcc_ref;

117 
s
->
_txǼay
[
ndx
].
us
 = 
td
->status;

118 
s
->
_txǼay
[
ndx
].
xa_us
 = 
td
->xa_status;

119 i(
	`XID_FIELD_IS_SET
(
td
))

120 
	`memy
(
s
->
_txǼay
[
ndx
].
xid
,

121 
td
->
xid
, (td->xid));

122 i(
td
->
me
 !
INVALID_ROFF
) {

123 ()
	`y
(
s
->
_txǼay
[
ndx
].
me
,

124 
	`R_ADDR
(&
mgr
->
gfo
, 
td
->
me
),

125 (
s
->
_txǼay
[
ndx
].
me
) - 1);

126 
s
->
_txǼay
[
ndx
].
me
[

127 (
s
->
_txǼay
[
ndx
].
me
) - 1] = '\0';

129 
s
->
_txǼay
[
ndx
].
me
[0] = '\0';

132 
	`__mux_t_wa_fo
(
dbv
, 
gi
->
mtx_gi
,

133 &
s
->
_gi_wa
, &s->
_gi_nowa
);

134 
s
->
_gsize
 = 
mgr
->
gfo
.

->
size
;

135 i(
	`LF_ISSET
(
DB_STAT_CLEAR
)) {

136 i(!
	`LF_ISSET
(
DB_STAT_SUBSYSTEM
))

137 
	`__mux_r
(
dbv
, 
gi
->
mtx_gi
);

138 
	`memt
(&
gi
->

, 0, (region->stat));

139 
gi
->

.
_maxtxns
 =egi->
maxtxns
;

140 
gi
->

.
_maxive
 =

141 
gi
->

.
_ive
 = 
s
->st_nactive;

142 
gi
->

.
_maxnsh
 =

143 
gi
->

.
_nsh
 = 
s
->st_nsnapshot;

146 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

148 *
p
 = 
s
;

150 
	}
}

159 
	$__txn__t_
(
dbv
, 
ags
)

160 
DB_ENV
 *
dbv
;

161 
u_t32_t
 
ags
;

163 
DB_THREAD_INFO
 *

;

164 
t
;

166 
	`PANIC_CHECK
(
dbv
);

167 
	`ENV_REQUIRES_CONFIG
(
dbv
,

168 
dbv
->
tx_hd
, "DB_ENV->txn__t", 
DB_INIT_TXN
);

170 i((
t
 = 
	`__db_fchk
(
dbv
, "DB_ENV->txn_stat_print",

171 
ags
, 
DB_STAT_ALL
 | 
DB_STAT_CLEAR
)) != 0)

172  (
t
);

174 
	`ENV_ENTER
(
dbv
, 

);

175 
	`REPLICATION_WRAP
(
dbv
, (
	`__txn__t
(dbv, 
ags
)), 
t
);

176 
	`ENV_LEAVE
(
dbv
, 

);

177  (
t
);

178 
	}
}

187 
	$__txn__t
(
dbv
, 
ags
)

188 
DB_ENV
 *
dbv
;

189 
u_t32_t
 
ags
;

191 
u_t32_t
 
ig_ags
;

192 
t
;

194 
ig_ags
 = 
ags
;

195 
	`LF_CLR
(
DB_STAT_CLEAR
 | 
DB_STAT_SUBSYSTEM
);

196 i(
ags
 =0 || 
	`LF_ISSET
(
DB_STAT_ALL
)) {

197 
t
 = 
	`__txn_t_s
(
dbv
, 
ig_ags
);

198 i(
ags
 =0 || 
t
 != 0)

199  (
t
);

202 i(
	`LF_ISSET
(
DB_STAT_ALL
) &&

203 (
t
 = 
	`__txn_t_l
(
dbv
, 
ig_ags
)) != 0)

204  (
t
);

207 
	}
}

214 
	$__txn_t_s
(
dbv
, 
ags
)

215 
DB_ENV
 *
dbv
;

216 
u_t32_t
 
ags
;

218 
DB_MSGBUF
 
mb
;

219 
DB_TXN_STAT
 *

;

220 
DB_TXN_ACTIVE
 *
txn
;

221 
u_t32_t
 
i
;

222 
t
;

223 
buf
[
DB_THREADID_STRLEN
], 
time_buf
[
CTIME_BUFLEN
];

225 i((
t
 = 
	`__txn_
(
dbv
, &

, 
ags
)) != 0)

226  (
t
);

228 i(
	`LF_ISSET
(
DB_STAT_ALL
))

229 
	`__db_msg
(
dbv
, "Defaultransactionegion information:");

230 
	`__db_msg
(
dbv
, "%lu/%lu\t%s",

231 (
u_lg
)

->
_ϡ_ckp
.
fe
, (u_lg)->_ϡ_ckp.
offt
,

232 

->
_ϡ_ckp
.
fe
 == 0 ?

234 i(

->
_time_ckp
 == 0)

235 
	`__db_msg
(
dbv
, "0\tNo checkpointimestamp");

237 
	`__db_msg
(
dbv
, "%.24s\tCheckpointimestamp",

238 
	`__db_ime
(&

->
_time_ckp
, 
time_buf
));

239 
	`__db_msg
(
dbv
, "%#lx\tLastransaction IDllocated",

240 (
u_lg
)

->
_ϡ_txnid
);

241 
	`__db_dl
(
dbv
, "Maximumumber ofctiveransactions configured",

242 (
u_lg
)

->
_maxtxns
);

243 
	`__db_dl
(
dbv
, "Aivis", (
u_lg
)

->
_ive
);

244 
	`__db_dl
(
dbv
,

245 "Maximumivis", (
u_lg
)

->
_maxive
);

246 
	`__db_dl
(
dbv
,

247 "Numb oiڠbegun", (
u_lg
)

->
_nbegs
);

248 
	`__db_dl
(
dbv
,

249 "Numb oiڠab܋d", (
u_lg
)

->
_bts
);

250 
	`__db_dl
(
dbv
,

251 "Numb oiڠcommd", (
u_lg
)

->
_ncomms
);

252 
	`__db_dl
(
dbv
, "Spshفnis", (
u_lg
)

->
_nsh
);

253 
	`__db_dl
(
dbv
, "Maximum snapshotransactions",

254 (
u_lg
)

->
_maxnsh
);

255 
	`__db_dl
(
dbv
,

256 "Numb oiڠed", (
u_lg
)

->
_ees
);

258 
	`__db_dlbys
(
dbv
, "Transactionegion size",

259 (
u_lg
)0, (u_lg)0, (u_lg)

->
_gsize
);

260 
	`__db_dl_p
(
dbv
,

262 (
u_lg
)

->
_gi_wa
, 
	`DB_PCT
(sp->st_region_wait,

263 

->
_gi_wa
 + sp->
_gi_nowa
), 
NULL
);

265 
	`qst
(

->
_txǼay
,

266 

->
_ive
, (->
_txǼay
[0]), 
__txn_com
);

267 
	`__db_msg
(
dbv
, "Activeransactions:");

268 
	`DB_MSGBUF_INIT
(&
mb
);

269 
i
 = 0; i < 

->
_ive
; ++i) {

270 
txn
 = &

->
_txǼay
[
i
];

271 
	`__db_msgadd
(
dbv
, &
mb
,

273 (
u_lg
)
txn
->
txnid
, 
	`__txn_us
(txn),

274 
dbv
->
	`thad_id_rg
(dbv, 
txn
->
pid
,xn->
tid
, 
buf
),

275 (
u_lg
)
txn
->
l
.
fe
, (u_lgxn->l.
offt
);

276 i(
txn
->
id
 != 0)

277 
	`__db_msgadd
(
dbv
, &
mb
,

278 ";t: %lx", (
u_lg
)
txn
->
id
);

279 i(!
	`IS_MAX_LSN
(
txn
->
ad_l
))

280 
	`__db_msgadd
(
dbv
, &
mb
, ";ead LSN: %lu/%lu",

281 (
u_lg
)
txn
->
ad_l
.
fe
,

282 (
u_lg
)
txn
->
ad_l
.
offt
);

283 i(
txn
->
mvcc_f
 != 0)

284 
	`__db_msgadd
(
dbv
, &
mb
,

285 "; mvcfcou: %lu", (
u_lg
)
txn
->
mvcc_f
);

286 i(
txn
->
me
[0] != '\0')

287 
	`__db_msgadd
(
dbv
, &
mb
, "; \"%s\"", 
txn
->
me
);

288 i(
	`XID_FIELD_IS_SET
(
txn
))

289 
	`__txn_gid
(
dbv
, &
mb
, 
txn
);

290 
	`DB_MSGBUF_FLUSH
(
dbv
, &
mb
);

293 
	`__os_u
(
dbv
, 

);

296 
	}
}

303 
	$__txn_t_l
(
dbv
, 
ags
)

304 
DB_ENV
 *
dbv
;

305 
u_t32_t
 
ags
;

307 cڡ 
FN
 

[] = {

308 { 
TXN_IN_RECOVERY
, "TXN_IN_RECOVERY" },

309 { 0, 
NULL
 }

311 
DB_TXNMGR
 *
mgr
;

312 
DB_TXNREGION
 *
gi
;

313 
time_buf
[
CTIME_BUFLEN
];

315 
mgr
 = 
dbv
->
tx_hd
;

316 
gi
 = 
mgr
->
gfo
.
imy
;

318 
	`TXN_SYSTEM_LOCK
(
dbv
);

320 
	`__db_t_gfo
(
dbv
, &
mgr
->
gfo
, "Tni", 
ags
);

322 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

323 
	`__db_msg
(
dbv
, "DB_TXNMGR handle information:");

324 
	`__mux_t_debug_sg
(
dbv
, "DB_TXNMGR mux", 
mgr
->
mux
, 
ags
);

325 
	`__db_dl
(
dbv
,

326 "Numb oiڠdisrded", (
u_lg
)
mgr
->
n_disrds
);

328 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

329 
	`__db_msg
(
dbv
, "DB_TXNREGION handle information:");

330 
	`__mux_t_debug_sg
(

331 
dbv
, "DB_TXNREGIONegi mux", 
gi
->
mtx_gi
, 
ags
);

332 
	`STAT_ULONG
("Maximumumb oaivtxns", 
gi
->
maxtxns
);

333 
	`STAT_HEX
("Lani IDod", 
gi
->
ϡ_txnid
);

334 
	`STAT_HEX
("Cumaximum unud ID", 
gi
->
cur_maxid
);

336 
	`__mux_t_debug_sg
(

337 
dbv
, "checkpomux", 
gi
->
mtx_ckp
, 
ags
);

338 
	`STAT_LSN
("La checkpoLSN", &
gi
->
ϡ_ckp
);

339 
	`__db_msg
(
dbv
,

341 
gi
->
time_ckp
 == 0 ? "0" :

342 
	`__db_ime
(&
gi
->
time_ckp
, 
time_buf
));

344 
	`__db_ags
(
dbv
, 
NULL
, 
gi
->
ags
, 

, NULL, "\tFlags");

346 
	`__db_msg
(
dbv
, "%s", 
	`DB_GLOBAL
(
db_le
));

347 
	`__db_msg
(
dbv
, "XA information:");

348 
	`STAT_LONG
("XA RMID", 
dbv
->
xa_rmid
);

354 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

357 
	}
}

360 
	$__txn_us
(
txn
)

361 
DB_TXN_ACTIVE
 *
txn
;

363 
txn
->
xa_us
) {

365 
txn
->
us
) {

366 
TXN_ABORTED
:

368 
TXN_COMMITTED
:

370 
TXN_PREPARED
:

372 
TXN_RUNNING
:

378 
TXN_XA_ABORTED
:

380 
TXN_XA_DEADLOCKED
:

382 
TXN_XA_ENDED
:

384 
TXN_XA_PREPARED
:

386 
TXN_XA_STARTED
:

388 
TXN_XA_SUSPENDED
:

394 
	}
}

397 
	$__txn_gid
(
dbv
, 
mbp
, 
txn
)

398 
DB_ENV
 *
dbv
;

399 
DB_MSGBUF
 *
mbp
;

400 
DB_TXN_ACTIVE
 *
txn
;

402 
u_t32_t
 
v
, *
xp
;

403 
u_t
 
i
;

404 
t
;

406 
	`__db_msgadd
(
dbv
, 
mbp
, "\n\tGID/XID:");

407 
t
 = 0, 
xp
 = (
u_t32_t
 *)
txn
->
xid
, 
i
 = 0;;) {

408 
	`memy
(&
v
, 
xp
++, (
u_t32_t
));

409 
	`__db_msgadd
(
dbv
, 
mbp
, "%#lx ", (
u_lg
)
v
);

410 i((
i
 +(
u_t32_t
)>
DB_XIDDATASIZE
)

412 i(++
t
 == 4) {

413 
	`DB_MSGBUF_FLUSH
(
dbv
, 
mbp
);

414 
	`__db_msgadd
(
dbv
, 
mbp
, "\t\t");

415 
t
 = 0;

418 
	}
}

421 
	$__txn_com
(
a1
, 
b1
)

422 cڡ *
a1
, *
b1
;

424 cڡ 
DB_TXN_ACTIVE
 *
a
, *
b
;

426 
a
 = 
a1
;

427 
b
 = 
b1
;

429 i(
a
->
txnid
 > 
b
->txnid)

431 i(
a
->
txnid
 < 
b
->txnid)

434 
	}
}

439 
	$__txn__
(
dbv
, 
p
, 
ags
)

440 
DB_ENV
 *
dbv
;

441 
DB_TXN_STAT
 **
p
;

442 
u_t32_t
 
ags
;

444 
	`COMPQUIET
(
p
, 
NULL
);

445 
	`COMPQUIET
(
ags
, 0);

447  (
	`__db__n_but
(
dbv
));

448 
	}
}

451 
	$__txn__t_
(
dbv
, 
ags
)

452 
DB_ENV
 *
dbv
;

453 
u_t32_t
 
ags
;

455 
	`COMPQUIET
(
ags
, 0);

457  (
	`__db__n_but
(
dbv
));

458 
	}
}

	@../txn/txn_util.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/db_ge.h
"

13 
	~"dbc/lock.h
"

14 
	~"dbc/mp.h
"

15 
	~"dbc/txn.h
"

16 
	~"dbc/log.h
"

17 
	~"dbc/db_am.h
"

19 
__txn_evt
 
	tTXN_EVENT
;

20 
	s__txn_evt
 {

21 
TXN_EVENT_T
 
	m
;

22 
TAILQ_ENTRY
(
__txn_evt

	mlks
;

26 
DB
 *
	mdbp
;

27 } 
	mc
;

30 *
	mme
;

31 
u_t8_t
 *
	mfeid
;

32 
	mmem
;

33 } 
	mr
;

36 
DB_LOCK
 
	mlock
;

37 
DB_LOCKER
 *
	mlock
;

38 
DB
 *
	mdbp
;

39 } 
	mt
;

40 } 
	mu
;

52 
	$__txn_oevt
(
dbv
, 
txn
, 
dbp
)

53 
DB_ENV
 *
dbv
;

54 
DB_TXN
 *
txn
;

55 
DB
 *
dbp
;

57 
t
;

58 
TXN_EVENT
 *
e
;

60 
e
 = 
NULL
;

61 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
TXN_EVENT
), &
e
)) != 0)

62  (
t
);

64 
e
->
u
.
c
.
dbp
 = dbp;

65 
e
->

 = 
TXN_CLOSE
;

66 
	`TAILQ_INSERT_TAIL
(&
txn
->
evts
, 
e
, 
lks
);

69 
	}
}

80 
	$__txn_mevt
(
dbv
, 
txn
, 
me
, 
feid
, 
mem
)

81 
DB_ENV
 *
dbv
;

82 
DB_TXN
 *
txn
;

83 cڡ *
me
;

84 
u_t8_t
 *
feid
;

85 
mem
;

87 
t
;

88 
TXN_EVENT
 *
e
;

90 
e
 = 
NULL
;

91 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
TXN_EVENT
), &
e
)) != 0)

92  (
t
);

94 i((
t
 = 
	`__os_rdup
(
dbv
, 
me
, &
e
->
u
.
r
.name)) != 0)

95 
r
;

97 i(
feid
 !
NULL
) {

98 i((
t
 = 
	`__os_oc
(
dbv
,

99 1, 
DB_FILE_ID_LEN
, &
e
->
u
.
r
.
feid
)) != 0)

100  (
t
);

101 
	`memy
(
e
->
u
.
r
.
feid
, feid, 
DB_FILE_ID_LEN
);

104 
e
->
u
.
r
.
mem
 = inmem;

105 
e
->

 = 
TXN_REMOVE
;

106 
	`TAILQ_INSERT_TAIL
(&
txn
->
evts
, 
e
, 
lks
);

110 
r
: i(
e
 !
NULL
)

111 
	`__os_
(
dbv
, 
e
);

113  (
t
);

114 
	}
}

124 
	$__txn_mm
(
dbv
, 
txn
, 
me
)

125 
DB_ENV
 *
dbv
;

126 
DB_TXN
 *
txn
;

127 cڡ *
me
;

129 
TXN_EVENT
 *
e
, *
xt_e
;

131 
e
 = 
	`TAILQ_FIRST
(&
txn
->
evts
); !
NULL
; = 
xt_e
) {

132 
xt_e
 = 
	`TAILQ_NEXT
(
e
, 
lks
);

133 i(
e
->

 !
TXN_REMOVE
 || 
	`rcmp
(
me
,->
u
.
r
.name) != 0)

135 
	`TAILQ_REMOVE
(&
txn
->
evts
, 
e
, 
lks
);

136 
	`__os_
(
dbv
, 
e
->
u
.
r
.
me
);

137 i(
e
->
u
.
r
.
feid
 !
NULL
)

138 
	`__os_
(
dbv
, 
e
->
u
.
r
.
feid
);

139 
	`__os_
(
dbv
, 
e
);

143 
	}
}

155 
	$__txn_lockevt
(
dbv
, 
txn
, 
dbp
, 
lock
, 
lock
)

156 
DB_ENV
 *
dbv
;

157 
DB_TXN
 *
txn
;

158 
DB
 *
dbp
;

159 
DB_LOCK
 *
lock
;

160 
DB_LOCKER
 *
lock
;

162 
t
;

163 
TXN_EVENT
 *
e
;

165 i(!
	`LOCKING_ON
(
dbv
))

168 
e
 = 
NULL
;

169 i((
t
 = 
	`__os_oc
(
dbv
, 1, (
TXN_EVENT
), &
e
)) != 0)

170  (
t
);

172 
e
->
u
.
t
.
lock
 =ocker;

173 
e
->
u
.
t
.
lock
 = *lock;

174 
e
->
u
.
t
.
dbp
 = dbp;

175 
e
->

 = 
TXN_TRADE
;

176 
	`TAILQ_INSERT_TAIL
(&
txn
->
evts
, 
e
, 
lks
);

177 
dbp
->
cur_txn
 = 
txn
;

180 
	}
}

190 
	$__txn_mlock
(
dbv
, 
txn
, 
lock
, 
lock
)

191 
DB_ENV
 *
dbv
;

192 
DB_TXN
 *
txn
;

193 
DB_LOCK
 *
lock
;

194 
DB_LOCKER
 *
lock
;

196 
TXN_EVENT
 *
e
, *
xt_e
;

198 
e
 = 
	`TAILQ_FIRST
(&
txn
->
evts
); !
NULL
; = 
xt_e
) {

199 
xt_e
 = 
	`TAILQ_NEXT
(
e
, 
lks
);

200 i((
e
->

 !
TXN_TRADE
 &&-> !
TXN_TRADED
) ||

201 (
e
->
u
.
t
.
lock
.
off
 !lock->of&&->u.t.
lock
 !=ocker))

203 
	`TAILQ_REMOVE
(&
txn
->
evts
, 
e
, 
lks
);

204 
	`__os_
(
dbv
, 
e
);

208 
	}
}

217 
	#DO_TRADE
 do { \

218 
	`memt
(&
q
, 0, (req)); \

219 
q
.
lock
 = 
e
->
u
.
t
.lock; \

220 
q
.

 = 
DB_LOCK_TRADE
; \

221 
t_t
 = 
	`__lock_vec
(
dbv
, 
e
->
u
.
t
.
lock
, 0, &
q
, 1, 
NULL
); \

222 i(
t_t
 == 0) { \

223 
e
->
u
.
t
.
dbp
->
cur_lock
 =->u.t.
lock
; \

224 
e
->
u
.
t
.
dbp
->
cur_txn
 = 
NULL
; \

225 } i(
t_t
 =
DB_NOTFOUND
) \

226 
t_t
 = 0; \

227 i(
t_t
 !0 && 
t
 == 0) \

228 
t
 = 
t_t
; \

229 
e
->

 = 
TXN_TRADED
; \

230 } 0)

	)

233 
	$__txn_dvts
(
dbv
, 
txn
, 
code
, 
ross
)

234 
DB_ENV
 *
dbv
;

235 
DB_TXN
 *
txn
;

236 
code
, 
ross
;

238 
DB_LOCKREQ
 
q
;

239 
TXN_EVENT
 *
e
;

240 
t
, 
t_t
;

242 
t
 = 0;

251 i(
ross
) {

252 
e
 = 
	`TAILQ_FIRST
(&
txn
->
evts
);

253 
e
 !
NULL
; = 
	`TAILQ_NEXT
, 
lks
)) {

254 i(
e
->

 !
TXN_TRADE
 ||

255 
	`IS_WRITELOCK
(
e
->
u
.
t
.
lock
.
mode
))

257 
DO_TRADE
;

259  (
t
);

266 
	`DB_ASSERT
(
dbv
, 
code
 !
TXN_PREPARE
);

267 (
e
 = 
	`TAILQ_FIRST
(&
txn
->
evts
)!
NULL
) {

268 
	`TAILQ_REMOVE
(&
txn
->
evts
, 
e
, 
lks
);

276 i(
code
 =
TXN_ABORT
 && 
e
->

 !
TXN_CLOSE
)

277 
do
;

278 
e
->

) {

279 
TXN_CLOSE
:

280 i((
t_t
 = 
	`__db_o
(
e
->
u
.
c
.
dbp
,

281 
NULL
, 
DB_NOSYNC
)!0 && 
t
 == 0)

282 
t
 = 
t_t
;

284 
TXN_REMOVE
:

285 i(
e
->
u
.
r
.
feid
 !
NULL
) {

286 i((
t_t
 = 
	`__memp_me
(
dbv
,

287 
e
->
u
.
r
.
feid
, 
NULL
,->u.r.
me
,

288 
NULL
, 
e
->
u
.
r
.
mem
)!0 && 
t
 == 0)

289 
t
 = 
t_t
;

290 } i((
t_t
 =

291 
	`__os_uƚk
(
dbv
, 
e
->
u
.
r
.
me
)!0 && 
t
 == 0)

292 
t
 = 
t_t
;

294 
TXN_TRADE
:

295 
DO_TRADE
;

297 
TXN_TRADED
:

299 i((
t_t
 = 
	`__lock_downgde
(
dbv
,

300 &
e
->
u
.
t
.
lock
, 
DB_LOCK_READ
, 0)!0 && 
t
 == 0)

301 
t
 = 
t_t
;

305 
	`DB_ASSERT
(
dbv
, 0);

307 
do
:

309 
e
->

) {

310 
TXN_REMOVE
:

311 i(
e
->
u
.
r
.
feid
 !
NULL
)

312 
	`__os_
(
dbv
, 
e
->
u
.
r
.
feid
);

313 
	`__os_
(
dbv
, 
e
->
u
.
r
.
me
);

315 
TXN_TRADE
:

316 i(
code
 =
TXN_ABORT
)

317 
e
->
u
.
t
.
dbp
->
cur_txn
 = 
NULL
;

318 
TXN_CLOSE
:

319 
TXN_TRADED
:

323 
	`__os_
(
dbv
, 
e
);

326  (
t
);

327 
	}
}

333 
	$__txn_cd_ame
(
dbv
, 
txn
, 
ame
)

334 
DB_ENV
 *
dbv
;

335 
DB_TXN
 *
txn
;

336 
FNAME
 *
ame
;

338 
DB_TXNMGR
 *
mgr
;

339 
DB_LOG
 *
db
;

340 
TXN_DETAIL
 *
td
;

341 
roff_t
 
ame_off
;

342 
roff_t
 *

, *
ldbs
;

343 
u_t32_t
 
i
;

344 
t
;

346 i((
td
 = 
txn
->td=
NULL
)

348 
mgr
 = 
dbv
->
tx_hd
;

349 
db
 = 
dbv
->
lg_hd
;

350 
ame_off
 = 
	`R_OFFSET
(&
db
->
gfo
, 
ame
);

353 
ldbs
 = 
	`R_ADDR
(&
mgr
->
gfo
, 
td
->
log_dbs
);

354 
i
 = 0, 

 = 
ldbs
; i < 
td
->
og_dbs
; i++,p++)

355 i(*

 =
ame_off
)

358 i(
td
->
og_s
 <td->
og_dbs
) {

359 
	`TXN_SYSTEM_LOCK
(
dbv
);

360 i((
t
 = 
	`__v_loc
(&
mgr
->
gfo
,

361 (
roff_t
* (
td
->
og_s
 << 1), &

)) != 0)

362  (
t
);

363 
	`memy
(

, 
ldbs
, 
td
->
og_dbs
 * (
roff_t
));

364 i(
td
->
og_s
 > 
TXN_NSLOTS
)

365 
	`__v_loc_
(&
mgr
->
gfo
, 
ldbs
);

367 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

368 
td
->
log_dbs
 = 
	`R_OFFSET
(&
mgr
->
gfo
, 

);

369 
ldbs
 = 

;

370 
td
->
og_s
 =d->nlog_slots << 1;

373 
ldbs
[
td
->
og_dbs
] = 
ame_off
;

374 
td
->
og_dbs
++;

375 
ame
->
txn_f
++;

378 
	}
}

388 
	$__txn_df_ame
(
dbv
, 
txn
)

389 
DB_ENV
 *
dbv
;

390 
DB_TXN
 *
txn
;

392 
DB_TXNMGR
 *
mgr
;

393 
DB_LOG
 *
db
;

394 
FNAME
 *
ame
;

395 
roff_t
 *

;

396 
TXN_DETAIL
 *
d
, *
td
;

397 
u_t32_t
 
i
;

398 
t
;

400 
td
 = 
txn
->td;

402 i(
td
->
og_dbs
 == 0)

405 
mgr
 = 
dbv
->
tx_hd
;

406 
db
 = 
dbv
->
lg_hd
;

407 
t
 = 0;

409 
d
 = 
txn
->

 !
NULL
 ?xn->->
td
 : NULL;

411 

 = 
	`R_ADDR
(&
mgr
->
gfo
, 
td
->
log_dbs
);

412 
i
 = 0; i < 
td
->
og_dbs
; i++, 

++) {

413 
ame
 = 
	`R_ADDR
(&
db
->
gfo
, *

);

414 
	`MUTEX_LOCK
(
dbv
, 
ame
->
mux
);

415 i(
d
 !
NULL
) {

416 
ame
->
txn_f
--;

417 
t
 = 
	`__txn_cd_ame
(
dbv
, 
txn
->

, 
ame
);

418 
	`MUTEX_UNLOCK
(
dbv
, 
ame
->
mux
);

419 } i(
ame
->
txn_f
 == 1) {

420 
	`MUTEX_UNLOCK
(
dbv
, 
ame
->
mux
);

421 
	`DB_ASSERT
(
dbv
, 
ame
->
txn_f
 != 0);

422 
t
 = 
	`__dbg_o_id_t
(

423 
dbv
, 
ame
, 
DBREG_CLOSE
, 0);

425 
ame
->
txn_f
--;

426 
	`MUTEX_UNLOCK
(
dbv
, 
ame
->
mux
);

428 i(
t
 != 0)

432  (
t
);

433 
	}
}

	@../xa/xa.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/txn.h
"

14 
__db_xa_o
 
__P
((*, , ));

15 
__db_xa_comm
 
__P
((
XID
 *, , ));

16 
__db_xa_come
 
__P
((*, *, , ));

17 
__db_xa_d
 
__P
((
XID
 *, , ));

18 
__db_xa_fg
 
__P
((
XID
 *, , ));

19 
__db_xa_ݒ
 
__P
((*, , ));

20 
__db_xa_e
 
__P
((
XID
 *, , ));

21 
__db_xa_cov
 
__P
((
XID
 *, , , ));

22 
__db_xa_rlback
 
__P
((
XID
 *, , ));

23 
__db_xa_t
 
__P
((
XID
 *, , ));

24 
__xa_put_txn
 
__P
((
DB_ENV
 *, 
DB_TXN
 *));

36 cڡ 
xa_swch_t
 
	gdb_xa_swch
 = {

38 
TMNOMIGRATE
,

40 
__db_xa_ݒ
,

41 
__db_xa_o
,

42 
__db_xa_t
,

43 
__db_xa_d
,

44 
__db_xa_rlback
,

45 
__db_xa_e
,

46 
__db_xa_comm
,

47 
__db_xa_cov
,

48 
__db_xa_fg
,

49 
__db_xa_come


59 #unde
XA_MULTI_THREAD


70 
	$__xa_g_txn
(
dbv
, 
tx
, 
do_
)

71 
DB_ENV
 *
dbv
;

72 
DB_TXN
 **
tx
;

73 
do_
;

75 #ifde
XA_MULTI_THREAD


76 
DB_TXN
 *
t
;

77 
DB_TXNMGR
 *
mgr
;

78 
TXN_DETAIL
 *
td
;

79 
db_thadid_t
 
tid
;

80 
pid_t
 
pid
;

82 
t
;

84 
t
 = 0;

86 #ifde
XA_MULTI_THREAD


87 
dbv
->
	`thad_id
(dbv, &
pid
, &
tid
);

88 *
tx
 = 
NULL
;

90 
	`DB_ASSERT
(
dbv
, dbv->
tx_hd
 !
NULL
);

91 
mgr
 = 
dbv
->
tx_hd
;

98 
	`MUTEX_LOCK
(
dbv
, 
mgr
->
mux
);

99 
	`TAILQ_FOREACH
(
t
, &
dbv
->
xa_txn
, 
xks
) {

100 
td
 = 
t
->td;

101 i(
td
->
pid
 !=id)

103 #ifde
HAVE_SIMPLE_THREAD_TYPE


104 i(
t
->
tid
 ==id) {

105 *
tx
 = 
t
;

109 i(
	`memcmp
(&
t
->
tid
, &tid, (tid)) == 0) {

110 *
tx
 = 
t
;

115 
	`MUTEX_UNLOCK
(
dbv
, 
mgr
->
mux
);

117 i(*
tx
 =
NULL
) {

118 i(!
do_
)

119 
t
 = 
EINVAL
;

120 i((
t
 =

121 
	`__os_mloc
(
dbv
, (
DB_TXN
), 
tx
)) == 0) {

122 (*
tx
)->
tid
 =id;

123 
	`MUTEX_LOCK
(
dbv
, 
mgr
->
mux
);

124 
	`TAILQ_INSERT_HEAD
(&
dbv
->
xa_txn
, *
tx
, 
xks
);

125 
	`MUTEX_UNLOCK
(
dbv
, 
mgr
->
mux
);

129 
	`COMPQUIET
(
do_
, 0);

131 *
tx
 = 
	`TAILQ_FIRST
(&
dbv
->
xa_txn
);

132 i(*
tx
 =
NULL
 &&

133 (
t
 = 
	`__os_oc
(
dbv
, 1, (
DB_TXN
), 
tx
)) == 0) {

134 (*
tx
)->
txnid
 = 
TXN_INVALID
;

135 
	`TAILQ_INSERT_HEAD
(&
dbv
->
xa_txn
, *
tx
, 
xks
);

139  (
t
);

140 
	}
}

143 
	$__xa_put_txn
(
dbv
, 
tx
)

144 
DB_ENV
 *
dbv
;

145 
DB_TXN
 *
tx
;

147 #ifde
XA_MULTI_THREAD


148 
DB_TXNMGR
 *
mgr
;

149 
mgr
 = 
dbv
->
tx_hd
;

151 
	`MUTEX_LOCK
(
dbv
, 
mgr
->
mux
);

152 
	`TAILQ_REMOVE
(&
dbv
->
xa_txn
, 
tx
, 
xks
);

153 
	`MUTEX_UNLOCK
(
dbv
, 
mgr
->
mux
);

154 
	`__os_
(
dbv
, 
tx
);

156 
	`COMPQUIET
(
dbv
, 
NULL
);

157 
tx
->
txnid
 = 
TXN_INVALID
;

160 
	}
}

162 #ifde
XA_MULTI_THREAD


163 
	#XA_FLAGS
 \

164 (
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | \

165 
DB_INIT_TXN
 | 
DB_THREAD
)

	)

167 
	#XA_FLAGS
 \

168 (
DB_CREATE
 | 
DB_INIT_LOCK
 | 
DB_INIT_LOG
 | 
DB_INIT_MPOOL
 | \

169 
DB_INIT_TXN
)

	)

187 
	$__db_xa_ݒ
(
xa_fo
, 
rmid
, 
g_ags
)

188 *
xa_fo
;

189 
rmid
;

190 
g_ags
;

192 
DB_ENV
 *
dbv
;

193 
u_lg
 
ags
;

195 
ags
 = (
u_lg
)
g_ags
;

197 i(
	`LF_ISSET
(
TMASYNC
))

198  (
XAER_ASYNC
);

199 i(
ags
 !
TMNOFLAGS
)

200  (
XAER_INVAL
);

203 i(
	`__db_rmid_to_v
(
rmid
, &
dbv
) == 0)

204  (
XA_OK
);

207 i(
	`db_v_
(&
dbv
, 0) != 0)

208  (
XAER_RMERR
);

209 i(
dbv
->
	`ݒ
(dbv, 
xa_fo
, 
XA_FLAGS
, 0) != 0)

210 
r
;

213 i(
	`__db_m_rmid
(
rmid
, 
dbv
) != 0)

214 
r
;

217 
	`TAILQ_INIT
(&
dbv
->
xa_txn
);

219  (
XA_OK
);

221 
r
: ()
dbv
->
	`o
(dbenv, 0);

223  (
XAER_RMERR
);

224 
	}
}

235 
	$__db_xa_o
(
xa_fo
, 
rmid
, 
g_ags
)

236 *
xa_fo
;

237 
rmid
;

238 
g_ags
;

240 
DB_ENV
 *
dbv
;

241 
DB_TXN
 *
t
;

242 
t
, 
t_t
;

243 
u_lg
 
ags
;

245 
	`COMPQUIET
(
xa_fo
, 
NULL
);

247 
ags
 = (
u_lg
)
g_ags
;

249 i(
	`LF_ISSET
(
TMASYNC
))

250  (
XAER_ASYNC
);

251 i(
ags
 !
TMNOFLAGS
)

252  (
XAER_INVAL
);

255 i(
	`__db_rmid_to_v
(
rmid
, &
dbv
) != 0)

256  (
XA_OK
);

259 i((
t
 = 
	`TAILQ_FIRST
(&
dbv
->
xa_txn
)!
NULL
 &&

260 
t
->
txnid
 !
TXN_INVALID
)

261  (
XAER_PROTO
);

264 
t
 = 
	`__db_unm_rmid
(
rmid
);

267 (
t
 = 
	`TAILQ_FIRST
(&
dbv
->
xa_txn
)!
NULL
) {

268 
	`TAILQ_REMOVE
(&
dbv
->
xa_txn
, 
t
, 
xks
);

269 
	`__os_
(
dbv
, 
t
);

273 i((
t_t
 = 
dbv
->
	`o
(dbv, 0)!0 && 
t
 == 0)

274 
t
 = 
t_t
;

276  (
t
 =0 ? 
XA_OK
 : 
XAER_RMERR
);

277 
	}
}

284 
	$__db_xa_t
(
xid
, 
rmid
, 
g_ags
)

285 
XID
 *
xid
;

286 
rmid
;

287 
g_ags
;

289 
DB_ENV
 *
dbv
;

290 
DB_TXN
 *
tx
;

291 
TXN_DETAIL
 *
td
;

292 
roff_t
 
off
;

293 
u_lg
 
ags
;

294 
is_known
;

296 
ags
 = (
u_lg
)
g_ags
;

298 
	#OK_FLAGS
 (
TMJOIN
 | 
TMRESUME
 | 
TMNOWAIT
 | 
TMASYNC
 | 
TMNOFLAGS
)

	)

299 i(
	`LF_ISSET
(~
OK_FLAGS
))

300  (
XAER_INVAL
);

302 i(
	`LF_ISSET
(
TMJOIN
&& LF_ISSET(
TMRESUME
))

303  (
XAER_INVAL
);

305 i(
	`LF_ISSET
(
TMASYNC
))

306  (
XAER_ASYNC
);

308 i(
	`__db_rmid_to_v
(
rmid
, &
dbv
) != 0)

309  (
XAER_PROTO
);

311 
is_known
 = 
	`__db_xid_to_txn
(
dbv
, 
xid
, &
off
) == 0;

313 i(
is_known
 && !
	`LF_ISSET
(
TMRESUME
&& !LF_ISSET(
TMJOIN
))

314  (
XAER_DUPID
);

316 i(!
is_known
 && 
	`LF_ISSET
(
TMRESUME
 | 
TMJOIN
))

317  (
XAER_NOTA
);

324 i(
is_known
) {

325 
td
 = 
	`R_ADDR
(&
dbv
->
tx_hd
->
gfo
, 
off
);

326 i(
td
->
xa_us
 =
TXN_XA_SUSPENDED
 &&

327 !
	`LF_ISSET
(
TMRESUME
 | 
TMJOIN
))

328  (
XAER_PROTO
);

329 i(
td
->
xa_us
 =
TXN_XA_DEADLOCKED
)

330  (
XA_RBDEADLOCK
);

331 i(
td
->
xa_us
 =
TXN_XA_ABORTED
)

332  (
XA_RBOTHER
);

335 i(
	`__xa_g_txn
(
dbv
, &
tx
, 1) != 0)

336  (
XAER_RMERR
);

337 i(
	`__txn_ctue
(
dbv
, 
tx
, 
td
) != 0)

338  (
XAER_RMERR
);

339 
td
->
xa_us
 = 
TXN_XA_STARTED
;

341 i(
	`__xa_g_txn
(
dbv
, &
tx
, 1) != 0)

342  (
XAER_RMERR
);

343 i(
	`__txn_xa_beg
(
dbv
, 
tx
))

344  (
XAER_RMERR
);

345 ()
	`__db_m_xid
(
dbv
, 
xid
, 
tx
->
td
);

346 
td
 = 
tx
->td;

347 
td
->
xa_us
 = 
TXN_XA_STARTED
;

349  (
XA_OK
);

350 
	}
}

357 
	$__db_xa_d
(
xid
, 
rmid
, 
ags
)

358 
XID
 *
xid
;

359 
rmid
;

360 
ags
;

362 
DB_ENV
 *
dbv
;

363 
DB_TXN
 *
txn
;

364 
TXN_DETAIL
 *
td
;

365 
roff_t
 
off
;

367 i(
ags
 !
TMNOFLAGS
 && !
	`LF_ISSET
(
TMSUSPEND
 | 
TMSUCCESS
 | 
TMFAIL
))

368  (
XAER_INVAL
);

370 i(
	`__db_rmid_to_v
(
rmid
, &
dbv
) != 0)

371  (
XAER_PROTO
);

373 i(
	`__db_xid_to_txn
(
dbv
, 
xid
, &
off
) != 0)

374  (
XAER_NOTA
);

376 i(
	`__xa_g_txn
(
dbv
, &
txn
, 0) != 0)

377  (
XAER_RMERR
);

379 
td
 = 
	`R_ADDR
(&
dbv
->
tx_hd
->
gfo
, 
off
);

380 i(
td
 !
txn
->td)

381  (
XAER_PROTO
);

383 i(
td
->
xa_us
 =
TXN_XA_DEADLOCKED
)

384  (
XA_RBDEADLOCK
);

386 i(
td
->
us
 =
TXN_ABORTED
)

387  (
XA_RBOTHER
);

389 i(
td
->
xa_us
 !
TXN_XA_STARTED
)

390  (
XAER_PROTO
);

396 i(
	`LF_ISSET
(
TMSUSPEND
))

397 
td
->
xa_us
 = 
TXN_XA_SUSPENDED
;

399 
td
->
xa_us
 = 
TXN_XA_ENDED
;

405 ()
	`__xa_put_txn
(
dbv
, 
txn
);

406  (
XA_OK
);

407 
	}
}

414 
	$__db_xa_e
(
xid
, 
rmid
, 
g_ags
)

415 
XID
 *
xid
;

416 
rmid
;

417 
g_ags
;

419 
DB_ENV
 *
dbv
;

420 
DB_TXN
 *
tx
;

421 
TXN_DETAIL
 *
td
;

422 
roff_t
 
off
;

423 
u_lg
 
ags
;

425 
ags
 = (
u_lg
)
g_ags
;

427 i(
	`LF_ISSET
(
TMASYNC
))

428  (
XAER_ASYNC
);

429 i(
ags
 !
TMNOFLAGS
)

430  (
XAER_INVAL
);

438 i(
	`__db_rmid_to_v
(
rmid
, &
dbv
) != 0)

439  (
XAER_PROTO
);

441 i(
	`__db_xid_to_txn
(
dbv
, 
xid
, &
off
) != 0)

442  (
XAER_NOTA
);

443 
td
 = 
	`R_ADDR
(&
dbv
->
tx_hd
->
gfo
, 
off
);

444 i(
td
->
xa_us
 =
TXN_XA_DEADLOCKED
)

445  (
XA_RBDEADLOCK
);

447 i(
td
->
xa_us
 !
TXN_XA_ENDED
 &&d->xa_u!
TXN_XA_SUSPENDED
)

448  (
XAER_PROTO
);

451 i(
	`__xa_g_txn
(
dbv
, &
tx
, 0) != 0)

452  (
XAER_PROTO
);

453 i(
	`__txn_ctue
(
dbv
, 
tx
, 
td
) != 0)

454  (
XAER_RMERR
);

456 i(
tx
->
	`e
x, (
u_t8_t
 *)
xid
->
da
) != 0)

457  (
XAER_RMERR
);

459 
td
->
xa_us
 = 
TXN_XA_PREPARED
;

465 ()
	`__xa_put_txn
(
dbv
, 
tx
);

466  (
XA_OK
);

467 
	}
}

474 
	$__db_xa_comm
(
xid
, 
rmid
, 
g_ags
)

475 
XID
 *
xid
;

476 
rmid
;

477 
g_ags
;

479 
DB_ENV
 *
dbv
;

480 
DB_TXN
 *
tx
;

481 
TXN_DETAIL
 *
td
;

482 
roff_t
 
off
;

483 
u_lg
 
ags
;

485 
ags
 = (
u_lg
)
g_ags
;

487 i(
	`LF_ISSET
(
TMASYNC
))

488  (
XAER_ASYNC
);

489 #unde
OK_FLAGS


490 
	#OK_FLAGS
 (
TMNOFLAGS
 | 
TMNOWAIT
 | 
TMONEPHASE
)

	)

491 i(
	`LF_ISSET
(~
OK_FLAGS
))

492  (
XAER_INVAL
);

498 i(
	`__db_rmid_to_v
(
rmid
, &
dbv
) != 0)

499  (
XAER_PROTO
);

501 i(
	`__db_xid_to_txn
(
dbv
, 
xid
, &
off
) != 0)

502  (
XAER_NOTA
);

504 
td
 = 
	`R_ADDR
(&
dbv
->
tx_hd
->
gfo
, 
off
);

505 i(
td
->
xa_us
 =
TXN_XA_DEADLOCKED
)

506  (
XA_RBDEADLOCK
);

508 i(
td
->
xa_us
 =
TXN_XA_ABORTED
)

509  (
XA_RBOTHER
);

511 i(
	`LF_ISSET
(
TMONEPHASE
) &&

512 
td
->
xa_us
 !
TXN_XA_ENDED
 &&d->xa_u!
TXN_XA_SUSPENDED
)

513  (
XAER_PROTO
);

515 i(!
	`LF_ISSET
(
TMONEPHASE
&& 
td
->
xa_us
 !
TXN_XA_PREPARED
)

516  (
XAER_PROTO
);

519 i(
	`__xa_g_txn
(
dbv
, &
tx
, 0) != 0)

520  (
XAER_RMERR
);

521 i(
	`__txn_ctue
(
dbv
, 
tx
, 
td
) != 0)

522  (
XAER_RMERR
);

524 i(
tx
->
	`comm
(txnp, 0) != 0)

525  (
XAER_RMERR
);

531 ()
	`__xa_put_txn
(
dbv
, 
tx
);

532  (
XA_OK
);

533 
	}
}

544 
	$__db_xa_cov
(
xids
, 
cou
, 
rmid
, 
ags
)

545 
XID
 *
xids
;

546 
cou
, 
ags
;

547 
rmid
;

549 
DB_ENV
 *
dbv
;

550 
u_t32_t
 
wags
;

551 
rv
;

554 i(
	`__db_rmid_to_v
(
rmid
, &
dbv
) != 0)

555  (
XAER_PROTO
);

557 i(
	`LF_ISSET
(
TMSTARTRSCAN
))

558 
wags
 = 
DB_FIRST
;

559 i(
	`LF_ISSET
(
TMENDRSCAN
))

560 
wags
 = 
DB_LAST
;

562 
wags
 = 
DB_NEXT
;

564 
rv
 = 0;

565 i(
	`__txn_g_ed
(
dbv
, 
xids
, 
NULL
, 
cou
, &
rv
, 
wags
) != 0)

566  (
XAER_RMERR
);

568  (
rv
);

569 
	}
}

576 
	$__db_xa_rlback
(
xid
, 
rmid
, 
g_ags
)

577 
XID
 *
xid
;

578 
rmid
;

579 
g_ags
;

581 
DB_ENV
 *
dbv
;

582 
DB_TXN
 *
tx
;

583 
TXN_DETAIL
 *
td
;

584 
roff_t
 
off
;

585 
u_lg
 
ags
;

587 
ags
 = (
u_lg
)
g_ags
;

589 i(
	`LF_ISSET
(
TMASYNC
))

590  (
XAER_ASYNC
);

591 i(
ags
 !
TMNOFLAGS
)

592  (
XAER_INVAL
);

594 i(
	`__db_rmid_to_v
(
rmid
, &
dbv
) != 0)

595  (
XAER_PROTO
);

597 i(
	`__db_xid_to_txn
(
dbv
, 
xid
, &
off
) != 0)

598  (
XAER_NOTA
);

600 
td
 = 
	`R_ADDR
(&
dbv
->
tx_hd
->
gfo
, 
off
);

601 i(
td
->
xa_us
 =
TXN_XA_DEADLOCKED
)

602  (
XA_RBDEADLOCK
);

604 i(
td
->
xa_us
 =
TXN_XA_ABORTED
)

605  (
XA_RBOTHER
);

607 i(
td
->
xa_us
 !
TXN_XA_ENDED
 &&

608 
td
->
xa_us
 !
TXN_XA_SUSPENDED
 &&

609 
td
->
xa_us
 !
TXN_XA_PREPARED
)

610  (
XAER_PROTO
);

613 i(
	`__xa_g_txn
(
dbv
, &
tx
, 0) != 0)

614  (
XAER_RMERR
);

615 i(
	`__txn_ctue
(
dbv
, 
tx
, 
td
) != 0)

616  (
XAER_RMERR
);

617 i(
tx
->
	`abt
(txnp) != 0)

618  (
XAER_RMERR
);

624 ()
	`__xa_put_txn
(
dbv
, 
tx
);

625  (
XA_OK
);

626 
	}
}

636 
	$__db_xa_fg
(
xid
, 
rmid
, 
g_ags
)

637 
XID
 *
xid
;

638 
rmid
;

639 
g_ags
;

641 
DB_ENV
 *
dbv
;

642 
roff_t
 
off
;

643 
u_lg
 
ags
;

645 
ags
 = (
u_lg
)
g_ags
;

647 i(
	`LF_ISSET
(
TMASYNC
))

648  (
XAER_ASYNC
);

649 i(
ags
 !
TMNOFLAGS
)

650  (
XAER_INVAL
);

652 i(
	`__db_rmid_to_v
(
rmid
, &
dbv
) != 0)

653  (
XAER_PROTO
);

658 i(
	`__db_xid_to_txn
(
dbv
, 
xid
, &
off
) != 0)

659  (
XA_OK
);

661 
	`__db_unm_xid
(
dbv
, 
xid
, 
off
);

664  (
XA_OK
);

665 
	}
}

673 
	$__db_xa_come
(
hd
, 
tv
, 
rmid
, 
ags
)

674 *
hd
, *
tv
, 
rmid
;

675 
ags
;

677 
	`COMPQUIET
(
hd
, 
NULL
);

678 
	`COMPQUIET
(
tv
, 
NULL
);

679 
	`COMPQUIET
(
rmid
, 0);

680 
	`COMPQUIET
(
ags
, 0);

682  (
XAER_INVAL
);

683 
	}
}

	@../xa/xa_db.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/txn.h
"

14 
__xa_o
 
__P
((
DB
 *, 
u_t32_t
));

15 
__xa_curs
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBC
 **, 
u_t32_t
));

16 
__xa_d
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

17 
__xa_g
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

18 
__xa_ݒ
 
__P
((
DB
 *, 
DB_TXN
 *,

19 cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
, ));

20 
__xa_put
 
__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

21 
__xa_t_txn
 
__P
((
DB
 *, 
DB_TXN
 **, ));

22 
__xa_un
 
__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
 *, u_int32_t));

24 
	s__xa_mhods
 {

25 (*
	mo

__P
((
DB
 *, 
u_t32_t
));

26 (*
	mcurs

__P
((
DB
 *, 
DB_TXN
 *, 
DBC
 **, 
u_t32_t
));

27 (*
	md

__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, 
u_t32_t
));

28 (*
	mg

__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

29 (*
	mݒ

__P
((
DB
 *, 
DB_TXN
 *,

30 cڡ *, cڡ *, 
DBTYPE
, 
u_t32_t
, ));

31 (*
	mput

__P
((
DB
 *, 
DB_TXN
 *, 
DBT
 *, DBT *, 
u_t32_t
));

32 (*
	mun

__P
((
DB
 *, 
DB_TXN
 *, 
u_t32_t
 *, u_int32_t));

33 } 
	tXA_METHODS
;

40 
	$__xa_t_txn
(
dbp
, 
txp
, 
no_xa_txn
)

41 
DB
 *
dbp
;

42 
DB_TXN
 **
txp
;

43 
no_xa_txn
;

45 
DB_ENV
 *
dbv
;

46 
t
;

48 
dbv
 = 
dbp
->dbenv;

57 i(*
txp
 !
NULL
) {

58 
	`__db_rx
(
dbv
,

60  (
EINVAL
);

64 i((
t
 = 
	`__xa_g_txn
(
dbv
, 
txp
, 0)) != 0)

65  (
t
);

66 i((*
txp
)->
txnid
 !
TXN_INVALID
)

75 i(
no_xa_txn
) {

76 *
txp
 = 
NULL
;

80 
	`__db_rx
(
dbv
, "no XAransaction declared");

81  (
EINVAL
);

82 
	}
}

91 
	$__db_xa_
(
dbp
)

92 
DB
 *
dbp
;

94 
XA_METHODS
 *
xam
;

95 
t
;

101 i((
t
 = 
	`__os_oc
(
dbp
->
dbv
, 1, (
XA_METHODS
), &
xam
)) != 0)

102  (
t
);

104 
dbp
->
xa_
 = 
xam
;

105 
xam
->
ݒ
 = 
dbp
->open;

106 
dbp
->
ݒ
 = 
__xa_ݒ
;

107 
xam
->
o
 = 
dbp
->close;

108 
dbp
->
o
 = 
__xa_o
;

111 
	}
}

118 
	$__xa_ݒ
(
dbp
, 
txn
, 
me
, 
subdb
, 
ty
, 
ags
, 
mode
)

119 
DB
 *
dbp
;

120 
DB_TXN
 *
txn
;

121 cڡ *
me
, *
subdb
;

122 
DBTYPE
 
ty
;

123 
u_t32_t
 
ags
;

124 
mode
;

126 
XA_METHODS
 *
xam
;

127 
t
;

129 
xam
 = (
XA_METHODS
 *)
dbp
->
xa_
;

131 i((
t
 =

132 
	`__xa_t_txn
(
dbp
, &
txn
, 
	`LF_ISSET
(
DB_AUTO_COMMIT
) ? 1 : 0)) != 0)

133  (
t
);

134 i((
t
 = 
xam
->
	`ݒ
(
dbp
, 
txn
, 
me
, 
subdb
, 
ty
, 
ags
, 
mode
)) != 0)

135  (
t
);

138 
xam
->
curs
 = 
dbp
->cursor;

139 
xam
->
d
 = 
dbp
->del;

140 
xam
->
g
 = 
dbp
->get;

141 
xam
->
put
 = 
dbp
->put;

142 
xam
->
un
 = 
dbp
->truncate;

143 
dbp
->
curs
 = 
__xa_curs
;

144 
dbp
->
d
 = 
__xa_d
;

145 
dbp
->
g
 = 
__xa_g
;

146 
dbp
->
put
 = 
__xa_put
;

147 
dbp
->
un
 = 
__xa_un
;

150 
	}
}

153 
	$__xa_curs
(
dbp
, 
txn
, 
db
, 
ags
)

154 
DB
 *
dbp
;

155 
DB_TXN
 *
txn
;

156 
DBC
 **
db
;

157 
u_t32_t
 
ags
;

159 
t
;

161 i((
t
 = 
	`__xa_t_txn
(
dbp
, &
txn
, 0)) != 0)

162  (
t
);

163  (((
XA_METHODS
 *)

164 
dbp
->
xa_
)->
	`curs
(dbp, 
txn
, 
db
, 
ags
));

165 
	}
}

168 
	$__xa_d
(
dbp
, 
txn
, 
key
, 
ags
)

169 
DB
 *
dbp
;

170 
DB_TXN
 *
txn
;

171 
DBT
 *
key
;

172 
u_t32_t
 
ags
;

174 
t
;

176 i((
t
 = 
	`__xa_t_txn
(
dbp
, &
txn
, 0)) != 0)

177  (
t
);

178  (((
XA_METHODS
 *)
dbp
->
xa_
)->
	`d
(dbp, 
txn
, 
key
, 
ags
));

179 
	}
}

182 
	$__xa_o
(
dbp
, 
ags
)

183 
DB
 *
dbp
;

184 
u_t32_t
 
ags
;

186 (*
_o

	`__P
((
DB
 *, 
u_t32_t
));

188 
_o
 = ((
XA_METHODS
 *)
dbp
->
xa_
)->
o
;

190 
	`__os_
(
dbp
->
dbv
, dbp->
xa_
);

191 
dbp
->
xa_
 = 
NULL
;

193  (
	`_o
(
dbp
, 
ags
));

194 
	}
}

197 
	$__xa_g
(
dbp
, 
txn
, 
key
, 
da
, 
ags
)

198 
DB
 *
dbp
;

199 
DB_TXN
 *
txn
;

200 
DBT
 *
key
, *
da
;

201 
u_t32_t
 
ags
;

203 
t
;

205 i((
t
 = 
	`__xa_t_txn
(
dbp
, &
txn
, 0)) != 0)

206  (
t
);

207  (((
XA_METHODS
 *)

208 
dbp
->
xa_
)->
	`g
(dbp, 
txn
, 
key
, 
da
, 
ags
));

209 
	}
}

212 
	$__xa_put
(
dbp
, 
txn
, 
key
, 
da
, 
ags
)

213 
DB
 *
dbp
;

214 
DB_TXN
 *
txn
;

215 
DBT
 *
key
, *
da
;

216 
u_t32_t
 
ags
;

218 
t
;

220 i((
t
 = 
	`__xa_t_txn
(
dbp
, &
txn
, 0)) != 0)

221  (
t
);

222  (((
XA_METHODS
 *)

223 
dbp
->
xa_
)->
	`put
(dbp, 
txn
, 
key
, 
da
, 
ags
));

224 
	}
}

227 
	$__xa_un
(
dbp
, 
txn
, 
coup
, 
ags
)

228 
DB
 *
dbp
;

229 
DB_TXN
 *
txn
;

230 
u_t32_t
 *
coup
, 
ags
;

232 
t
;

234 i((
t
 = 
	`__xa_t_txn
(
dbp
, &
txn
, 0)) != 0)

235  (
t
);

236  (((
XA_METHODS
 *)

237 
dbp
->
xa_
)->
	`un
(dbp, 
txn
, 
coup
, 
ags
));

238 
	}
}

	@../xa/xa_map.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/txn.h
"

26 
	$__db_rmid_to_v
(
rmid
, 
dbvp
)

27 
rmid
;

28 
DB_ENV
 **
dbvp
;

30 
DB_ENV
 *
dbv
;

32 
dbv
 = 
	`TAILQ_FIRST
(&
	`DB_GLOBAL
(
db_vq
));

33 i(
dbv
 !
NULL
 && dbv->
xa_rmid
 =
rmid
) {

34 *
dbvp
 = 
dbv
;

43 ; 
dbv
 !
NULL
; dbv = 
	`TAILQ_NEXT
(dbv, 
lks
))

44 i(
dbv
->
xa_rmid
 =
rmid
) {

45 
	`TAILQ_REMOVE
(&
	`DB_GLOBAL
(
db_vq
), 
dbv
, 
lks
);

46 
	`TAILQ_INSERT_HEAD
(&
	`DB_GLOBAL
(
db_vq
), 
dbv
, 
lks
);

47 *
dbvp
 = 
dbv
;

52 
	}
}

61 
	$__db_xid_to_txn
(
dbv
, 
xid
, 
of
)

62 
DB_ENV
 *
dbv
;

63 
XID
 *
xid
;

64 
roff_t
 *
of
;

66 
__txn_da
 *
td
;

68  (
	`__txn_m_gid
(
dbv
, (
u_t8_t
 *)
xid
->
da
, &
td
, 
of
));

69 
	}
}

78 
	$__db_m_rmid
(
rmid
, 
dbv
)

79 
rmid
;

80 
DB_ENV
 *
dbv
;

82 
dbv
->
xa_rmid
 = 
rmid
;

83 
	`TAILQ_INSERT_TAIL
(&
	`DB_GLOBAL
(
db_vq
), 
dbv
, 
lks
);

85 
	}
}

94 
	$__db_unm_rmid
(
rmid
)

95 
rmid
;

97 
DB_ENV
 *
e
;

99 
e
 = 
	`TAILQ_FIRST
(&
	`DB_GLOBAL
(
db_vq
));

100 
e
->
xa_rmid
 !
rmid
;

101 
e
 = 
	`TAILQ_NEXT
, 
lks
))

104 i(
e
 =
NULL
)

105  (
EINVAL
);

107 
	`TAILQ_REMOVE
(&
	`DB_GLOBAL
(
db_vq
), 
e
, 
lks
);

109 
	}
}

119 
	$__db_m_xid
(
dbv
, 
xid
, 
td
)

120 
DB_ENV
 *
dbv
;

121 
XID
 *
xid
;

122 
TXN_DETAIL
 *
td
;

124 
	`TXN_SYSTEM_LOCK
(
dbv
);

125 
	`memy
(
td
->
xid
, xid->
da
, 
XIDDATASIZE
);

126 
td
->
bqu
 = (
u_t32_t
)
xid
->
bqu_ngth
;

127 
td
->
gid
 = (
u_t32_t
)
xid
->
gid_ngth
;

128 
td
->
fm
 = (
t32_t
)
xid
->
fmID
;

129 
	`TXN_SYSTEM_UNLOCK
(
dbv
);

132 
	}
}

142 
	$__db_unm_xid
(
dbv
, 
xid
, 
off
)

143 
DB_ENV
 *
dbv
;

144 
XID
 *
xid
;

145 
size_t
 
off
;

147 
TXN_DETAIL
 *
td
;

149 
	`COMPQUIET
(
xid
, 
NULL
);

151 
td
 = 
	`R_ADDR
(&
dbv
->
tx_hd
->
gfo
, 
off
);

152 
	`memt
(
td
->
xid
, 0, (td->xid));

153 
	}
}

	@../xa/xa_stub.c

9 
	~"db_cfig.h
"

11 
	~"db_t.h
"

12 
	~"dbc/txn.h
"

18 
__db_noxa
 
__P
((
DB_ENV
 *));

25 
	$__db_noxa
(
dbv
)

26 
DB_ENV
 *
dbv
;

28 
	`__db_rx
(
dbv
,

30  (
DB_OPNOTSUP
);

31 
	}
}

34 
	$__db_xa_
(
dbp
)

35 
DB
 *
dbp
;

37  (
	`__db_noxa
(
dbp
->
dbv
));

38 
	}
}

	@
1
.
0
526
11911
../btree/bt_compact.c
../btree/bt_compare.c
../btree/bt_conv.c
../btree/bt_curadj.c
../btree/bt_cursor.c
../btree/bt_delete.c
../btree/bt_method.c
../btree/bt_open.c
../btree/bt_put.c
../btree/bt_rec.c
../btree/bt_reclaim.c
../btree/bt_recno.c
../btree/bt_rsearch.c
../btree/bt_search.c
../btree/bt_split.c
../btree/bt_stat.c
../btree/bt_upgrade.c
../btree/bt_verify.c
../btree/btree_auto.c
../btree/btree_autop.c
../build_vxworks/db_archive/db_archive.c
../build_vxworks/db_checkpoint/db_checkpoint.c
../build_vxworks/db_deadlock/db_deadlock.c
../build_vxworks/db_dump/db_dump.c
../build_vxworks/db_hotbackup/db_hotbackup.c
../build_vxworks/db_load/db_load.c
../build_vxworks/db_printlog/db_printlog.c
../build_vxworks/db_recover/db_recover.c
../build_vxworks/db_stat/db_stat.c
../build_vxworks/db_upgrade/db_upgrade.c
../build_vxworks/db_verify/db_verify.c
../build_vxworks/dbdemo/dbdemo.c
../build_windows/dbkill.cpp
../build_windows/libdb.def
../build_windows/libdb.rc
../build_windows/libdb_tcl.def
../clib/atoi.c
../clib/atol.c
../clib/ctime.c
../clib/getaddrinfo.c
../clib/getcwd.c
../clib/getopt.c
../clib/isalpha.c
../clib/isdigit.c
../clib/isprint.c
../clib/isspace.c
../clib/memcmp.c
../clib/memmove.c
../clib/printf.c
../clib/qsort.c
../clib/raise.c
../clib/rand.c
../clib/snprintf.c
../clib/strcasecmp.c
../clib/strcat.c
../clib/strchr.c
../clib/strdup.c
../clib/strerror.c
../clib/strncat.c
../clib/strncmp.c
../clib/strrchr.c
../clib/strsep.c
../clib/strtol.c
../clib/strtoul.c
../common/crypto_stub.c
../common/db_byteorder.c
../common/db_err.c
../common/db_getlong.c
../common/db_idspace.c
../common/db_log2.c
../common/db_shash.c
../common/mkpath.c
../common/util_arg.c
../common/util_cache.c
../common/util_log.c
../common/util_sig.c
../crypto/aes_method.c
../crypto/crypto.c
../crypto/mersenne/mt19937db.c
../crypto/rijndael/rijndael-alg-fst.c
../crypto/rijndael/rijndael-api-fst.c
../cxx/cxx_db.cpp
../cxx/cxx_dbc.cpp
../cxx/cxx_dbt.cpp
../cxx/cxx_env.cpp
../cxx/cxx_except.cpp
../cxx/cxx_lock.cpp
../cxx/cxx_logc.cpp
../cxx/cxx_mpool.cpp
../cxx/cxx_multi.cpp
../cxx/cxx_seq.cpp
../cxx/cxx_txn.cpp
../db/crdel_auto.c
../db/crdel_autop.c
../db/crdel_rec.c
../db/db.c
../db/db_am.c
../db/db_auto.c
../db/db_autop.c
../db/db_cam.c
../db/db_cds.c
../db/db_conv.c
../db/db_dispatch.c
../db/db_dup.c
../db/db_iface.c
../db/db_join.c
../db/db_meta.c
../db/db_method.c
../db/db_open.c
../db/db_overflow.c
../db/db_ovfl_vrfy.c
../db/db_pr.c
../db/db_rec.c
../db/db_reclaim.c
../db/db_remove.c
../db/db_rename.c
../db/db_ret.c
../db/db_setid.c
../db/db_setlsn.c
../db/db_stati.c
../db/db_truncate.c
../db/db_upg.c
../db/db_upg_opd.c
../db/db_vrfy.c
../db/db_vrfy_stub.c
../db/db_vrfyutil.c
../db185/db185.c
../db_archive/db_archive.c
../db_checkpoint/db_checkpoint.c
../db_codegen/code_capi.c
../db_codegen/code_parse.c
../db_codegen/db_codegen.c
../db_deadlock/db_deadlock.c
../db_dump/db_dump.c
../db_dump185/db_dump185.c
../db_hotbackup/db_hotbackup.c
../db_load/db_load.c
../db_printlog/db_printlog.c
../db_recover/db_recover.c
../db_stat/db_stat.c
../db_upgrade/db_upgrade.c
../db_verify/db_verify.c
../dbinc/btree.h
../dbinc/clock.h
../dbinc/crypto.h
../dbinc/cxx_int.h
../dbinc/db.in
../dbinc/db_185.in
../dbinc/db_am.h
../dbinc/db_cxx.in
../dbinc/db_dispatch.h
../dbinc/db_int.in
../dbinc/db_join.h
../dbinc/db_page.h
../dbinc/db_server_int.h
../dbinc/db_swap.h
../dbinc/db_upgrade.h
../dbinc/db_verify.h
../dbinc/debug.h
../dbinc/fop.h
../dbinc/globals.h
../dbinc/hash.h
../dbinc/hmac.h
../dbinc/lock.h
../dbinc/log.h
../dbinc/mp.h
../dbinc/mutex.h
../dbinc/mutex_int.h
../dbinc/os.h
../dbinc/qam.h
../dbinc/queue.h
../dbinc/region.h
../dbinc/rep.h
../dbinc/repmgr.h
../dbinc/shqueue.h
../dbinc/tcl_db.h
../dbinc/txn.h
../dbinc/win_db.h
../dbinc/xa.h
../dbinc_auto/btree_auto.h
../dbinc_auto/btree_ext.h
../dbinc_auto/clib_ext.h
../dbinc_auto/common_ext.h
../dbinc_auto/crdel_auto.h
../dbinc_auto/crypto_ext.h
../dbinc_auto/db_auto.h
../dbinc_auto/db_ext.h
../dbinc_auto/dbreg_auto.h
../dbinc_auto/dbreg_ext.h
../dbinc_auto/env_ext.h
../dbinc_auto/fileops_auto.h
../dbinc_auto/fileops_ext.h
../dbinc_auto/hash_auto.h
../dbinc_auto/hash_ext.h
../dbinc_auto/hmac_ext.h
../dbinc_auto/lock_ext.h
../dbinc_auto/log_ext.h
../dbinc_auto/mp_ext.h
../dbinc_auto/mutex_ext.h
../dbinc_auto/os_ext.h
../dbinc_auto/qam_auto.h
../dbinc_auto/qam_ext.h
../dbinc_auto/rep_auto.h
../dbinc_auto/rep_ext.h
../dbinc_auto/repmgr_ext.h
../dbinc_auto/rpc_client_ext.h
../dbinc_auto/rpc_server_ext.h
../dbinc_auto/sequence_ext.h
../dbinc_auto/tcl_ext.h
../dbinc_auto/txn_auto.h
../dbinc_auto/txn_ext.h
../dbinc_auto/xa_ext.h
../dbm/dbm.c
../dbreg/dbreg.c
../dbreg/dbreg_auto.c
../dbreg/dbreg_autop.c
../dbreg/dbreg_rec.c
../dbreg/dbreg_stat.c
../dbreg/dbreg_util.c
../env/env_alloc.c
../env/env_config.c
../env/env_failchk.c
../env/env_file.c
../env/env_globals.c
../env/env_method.c
../env/env_name.c
../env/env_open.c
../env/env_recover.c
../env/env_region.c
../env/env_register.c
../env/env_stat.c
../examples_c/bench_001.c
../examples_c/csv/DbRecord.c
../examples_c/csv/code.c
../examples_c/csv/db.c
../examples_c/csv/load.c
../examples_c/csv/load_main.c
../examples_c/csv/query.c
../examples_c/csv/query_main.c
../examples_c/csv/util.c
../examples_c/ex_access.c
../examples_c/ex_apprec/ex_apprec.c
../examples_c/ex_apprec/ex_apprec_auto.c
../examples_c/ex_apprec/ex_apprec_autop.c
../examples_c/ex_apprec/ex_apprec_rec.c
../examples_c/ex_btrec.c
../examples_c/ex_dbclient.c
../examples_c/ex_env.c
../examples_c/ex_lock.c
../examples_c/ex_mpool.c
../examples_c/ex_rep/base/rep_base.c
../examples_c/ex_rep/base/rep_msg.c
../examples_c/ex_rep/base/rep_net.c
../examples_c/ex_rep/common/rep_common.c
../examples_c/ex_rep/mgr/rep_mgr.c
../examples_c/ex_sequence.c
../examples_c/ex_thread.c
../examples_c/ex_tpcb.c
../examples_c/getting_started/example_database_load.c
../examples_c/getting_started/example_database_read.c
../examples_c/getting_started/gettingstarted_common.c
../examples_c/txn_guide/txn_guide.c
../examples_c/txn_guide/txn_guide_inmemory.c
../examples_cxx/AccessExample.cpp
../examples_cxx/BtRecExample.cpp
../examples_cxx/EnvExample.cpp
../examples_cxx/LockExample.cpp
../examples_cxx/MpoolExample.cpp
../examples_cxx/SequenceExample.cpp
../examples_cxx/TpcbExample.cpp
../examples_cxx/excxx_repquote/RepConfigInfo.cpp
../examples_cxx/excxx_repquote/RepQuoteExample.cpp
../examples_cxx/getting_started/MyDb.cpp
../examples_cxx/getting_started/excxx_example_database_load.cpp
../examples_cxx/getting_started/excxx_example_database_read.cpp
../examples_cxx/txn_guide/TxnGuide.cpp
../examples_cxx/txn_guide/TxnGuideInMemory.cpp
../examples_cxx/wce_tpcb/TpcbExample.cpp
../examples_cxx/wce_tpcb/TpcbUI.cpp
../examples_cxx/wce_tpcb/wce_tpcb.rc
../fileops/fileops_auto.c
../fileops/fileops_autop.c
../fileops/fop_basic.c
../fileops/fop_rec.c
../fileops/fop_util.c
../hash/hash.c
../hash/hash_auto.c
../hash/hash_autop.c
../hash/hash_conv.c
../hash/hash_dup.c
../hash/hash_func.c
../hash/hash_meta.c
../hash/hash_method.c
../hash/hash_open.c
../hash/hash_page.c
../hash/hash_rec.c
../hash/hash_reclaim.c
../hash/hash_stat.c
../hash/hash_stub.c
../hash/hash_upgrade.c
../hash/hash_verify.c
../hmac/hmac.c
../hmac/sha1.c
../hsearch/hsearch.c
../libdb_java/db_java_wrap.c
../lock/lock.c
../lock/lock_deadlock.c
../lock/lock_failchk.c
../lock/lock_id.c
../lock/lock_list.c
../lock/lock_method.c
../lock/lock_region.c
../lock/lock_stat.c
../lock/lock_stub.c
../lock/lock_timer.c
../lock/lock_util.c
../log/log.c
../log/log_archive.c
../log/log_compare.c
../log/log_debug.c
../log/log_get.c
../log/log_method.c
../log/log_put.c
../log/log_stat.c
../mp/mp_alloc.c
../mp/mp_bh.c
../mp/mp_fget.c
../mp/mp_fmethod.c
../mp/mp_fopen.c
../mp/mp_fput.c
../mp/mp_fset.c
../mp/mp_method.c
../mp/mp_mvcc.c
../mp/mp_region.c
../mp/mp_register.c
../mp/mp_resize.c
../mp/mp_stat.c
../mp/mp_sync.c
../mp/mp_trickle.c
../mutex/mut_alloc.c
../mutex/mut_failchk.c
../mutex/mut_fcntl.c
../mutex/mut_method.c
../mutex/mut_pthread.c
../mutex/mut_region.c
../mutex/mut_stat.c
../mutex/mut_stub.c
../mutex/mut_tas.c
../mutex/mut_win32.c
../mutex/test_mutex.c
../os/os_abort.c
../os/os_abs.c
../os/os_alloc.c
../os/os_clock.c
../os/os_config.c
../os/os_dir.c
../os/os_errno.c
../os/os_fid.c
../os/os_flock.c
../os/os_fsync.c
../os/os_fzero.c
../os/os_getenv.c
../os/os_handle.c
../os/os_map.c
../os/os_method.c
../os/os_mkdir.c
../os/os_oflags.c
../os/os_open.c
../os/os_pid.c
../os/os_region.c
../os/os_rename.c
../os/os_root.c
../os/os_rpath.c
../os/os_rw.c
../os/os_seek.c
../os/os_sleep.c
../os/os_spin.c
../os/os_stat.c
../os/os_tmpdir.c
../os/os_truncate.c
../os/os_uid.c
../os/os_unlink.c
../os/os_yield.c
../os_brew/ctime.c
../os_brew/fclose.c
../os_brew/fgetc.c
../os_brew/fgets.c
../os_brew/fopen.c
../os_brew/fwrite.c
../os_brew/getcwd.c
../os_brew/globals.c
../os_brew/localtime.c
../os_brew/os_abort.c
../os_brew/os_abs.c
../os_brew/os_config.c
../os_brew/os_dir.c
../os_brew/os_errno.c
../os_brew/os_handle.c
../os_brew/os_mkdir.c
../os_brew/os_oflags.c
../os_brew/os_open.c
../os_brew/os_pid.c
../os_brew/os_rename.c
../os_brew/os_rw.c
../os_brew/os_seek.c
../os_brew/os_sleep.c
../os_brew/os_stat.c
../os_brew/os_truncate.c
../os_brew/os_unlink.c
../os_brew/time.c
../os_qnx/os_qnx_open.c
../os_s60/os_config.c
../os_vxworks/os_vx_abs.c
../os_vxworks/os_vx_config.c
../os_vxworks/os_vx_map.c
../os_vxworks/os_vx_rpath.c
../os_windows/ce_ctime.c
../os_windows/ce_time.c
../os_windows/os_abs.c
../os_windows/os_clock.c
../os_windows/os_config.c
../os_windows/os_dir.c
../os_windows/os_errno.c
../os_windows/os_fid.c
../os_windows/os_flock.c
../os_windows/os_fsync.c
../os_windows/os_getenv.c
../os_windows/os_handle.c
../os_windows/os_map.c
../os_windows/os_mkdir.c
../os_windows/os_open.c
../os_windows/os_rename.c
../os_windows/os_rw.c
../os_windows/os_seek.c
../os_windows/os_sleep.c
../os_windows/os_spin.c
../os_windows/os_stat.c
../os_windows/os_truncate.c
../os_windows/os_unlink.c
../os_windows/os_yield.c
../qam/qam.c
../qam/qam_auto.c
../qam/qam_autop.c
../qam/qam_conv.c
../qam/qam_files.c
../qam/qam_method.c
../qam/qam_open.c
../qam/qam_rec.c
../qam/qam_stat.c
../qam/qam_stub.c
../qam/qam_upgrade.c
../qam/qam_verify.c
../rep/rep_auto.c
../rep/rep_autop.c
../rep/rep_backup.c
../rep/rep_elect.c
../rep/rep_lease.c
../rep/rep_log.c
../rep/rep_method.c
../rep/rep_record.c
../rep/rep_region.c
../rep/rep_stat.c
../rep/rep_stub.c
../rep/rep_util.c
../rep/rep_verify.c
../repmgr/repmgr_elect.c
../repmgr/repmgr_method.c
../repmgr/repmgr_msg.c
../repmgr/repmgr_net.c
../repmgr/repmgr_posix.c
../repmgr/repmgr_queue.c
../repmgr/repmgr_sel.c
../repmgr/repmgr_stat.c
../repmgr/repmgr_stub.c
../repmgr/repmgr_util.c
../repmgr/repmgr_windows.c
../rpc_client/client.c
../rpc_client/gen_client.c
../rpc_client/gen_client_ret.c
../rpc_server/c/db_server_proc.c
../rpc_server/c/db_server_util.c
../rpc_server/cxx/db_server_cxxproc.cpp
../rpc_server/cxx/db_server_cxxutil.cpp
../sequence/seq_stat.c
../sequence/sequence.c
../tcl/tcl_compat.c
../tcl/tcl_db.c
../tcl/tcl_db_pkg.c
../tcl/tcl_dbcursor.c
../tcl/tcl_env.c
../tcl/tcl_internal.c
../tcl/tcl_lock.c
../tcl/tcl_log.c
../tcl/tcl_mp.c
../tcl/tcl_rep.c
../tcl/tcl_seq.c
../tcl/tcl_txn.c
../tcl/tcl_util.c
../test_micro/SOURCE/b_curalloc.c
../test_micro/SOURCE/b_curwalk.c
../test_micro/SOURCE/b_del.c
../test_micro/SOURCE/b_get.c
../test_micro/SOURCE/b_load.c
../test_micro/SOURCE/b_open.c
../test_micro/SOURCE/b_put.c
../test_micro/SOURCE/b_recover.c
../test_micro/SOURCE/b_txn.c
../test_micro/SOURCE/b_txn_write.c
../test_micro/SOURCE/b_workload.c
../test_micro/SOURCE/inmem.c
../test_micro/SOURCE/uname.c
../txn/txn.c
../txn/txn_auto.c
../txn/txn_autop.c
../txn/txn_chkpt.c
../txn/txn_failchk.c
../txn/txn_method.c
../txn/txn_rec.c
../txn/txn_recover.c
../txn/txn_region.c
../txn/txn_stat.c
../txn/txn_util.c
../xa/xa.c
../xa/xa_db.c
../xa/xa_map.c
../xa/xa_stub.c