… | |
… | |
224 | static int next_pri = DEFAULT_PRI + PRI_BIAS; |
224 | static int next_pri = DEFAULT_PRI + PRI_BIAS; |
225 | |
225 | |
226 | static unsigned int started, idle, wanted; |
226 | static unsigned int started, idle, wanted; |
227 | |
227 | |
228 | /* worker threads management */ |
228 | /* worker threads management */ |
229 | static mutex_t wrklock = X_MUTEX_INIT; |
229 | static xmutex_t wrklock = X_MUTEX_INIT; |
230 | |
230 | |
231 | typedef struct worker { |
231 | typedef struct worker { |
232 | /* locked by wrklock */ |
232 | /* locked by wrklock */ |
233 | struct worker *prev, *next; |
233 | struct worker *prev, *next; |
234 | |
234 | |
235 | thread_t tid; |
235 | xthread_t tid; |
236 | |
236 | |
237 | /* locked by reslock, reqlock or wrklock */ |
237 | /* locked by reslock, reqlock or wrklock */ |
238 | bdb_req req; /* currently processed request */ |
238 | bdb_req req; /* currently processed request */ |
239 | void *dbuf; |
239 | void *dbuf; |
240 | DIR *dirp; |
240 | DIR *dirp; |
… | |
… | |
257 | static volatile unsigned int nreqs, nready, npending; |
257 | static volatile unsigned int nreqs, nready, npending; |
258 | static volatile unsigned int max_idle = 4; |
258 | static volatile unsigned int max_idle = 4; |
259 | static volatile unsigned int max_outstanding = 0xffffffff; |
259 | static volatile unsigned int max_outstanding = 0xffffffff; |
260 | static s_epipe respipe; |
260 | static s_epipe respipe; |
261 | |
261 | |
262 | static mutex_t reslock = X_MUTEX_INIT; |
262 | static xmutex_t reslock = X_MUTEX_INIT; |
263 | static mutex_t reqlock = X_MUTEX_INIT; |
263 | static xmutex_t reqlock = X_MUTEX_INIT; |
264 | static cond_t reqwait = X_COND_INIT; |
264 | static xcond_t reqwait = X_COND_INIT; |
265 | |
265 | |
266 | #if WORDACCESS_UNSAFE |
266 | #if WORDACCESS_UNSAFE |
267 | |
267 | |
268 | static unsigned int get_nready (void) |
268 | static unsigned int get_nready (void) |
269 | { |
269 | { |
… | |
… | |
1226 | const_iv (TXN_NOT_DURABLE) |
1226 | const_iv (TXN_NOT_DURABLE) |
1227 | const_iv (TXN_WRITE_NOSYNC) |
1227 | const_iv (TXN_WRITE_NOSYNC) |
1228 | const_iv (WRITECURSOR) |
1228 | const_iv (WRITECURSOR) |
1229 | const_iv (YIELDCPU) |
1229 | const_iv (YIELDCPU) |
1230 | const_iv (ENCRYPT_AES) |
1230 | const_iv (ENCRYPT_AES) |
|
|
1231 | #if DB_VERSION_MINOR < 8 |
1231 | const_iv (XA_CREATE) |
1232 | const_iv (XA_CREATE) |
|
|
1233 | #endif |
1232 | const_iv (BTREE) |
1234 | const_iv (BTREE) |
1233 | const_iv (HASH) |
1235 | const_iv (HASH) |
1234 | const_iv (QUEUE) |
1236 | const_iv (QUEUE) |
1235 | const_iv (RECNO) |
1237 | const_iv (RECNO) |
1236 | const_iv (UNKNOWN) |
1238 | const_iv (UNKNOWN) |
… | |
… | |
1300 | const_iv (LOCK_OLDEST) |
1302 | const_iv (LOCK_OLDEST) |
1301 | const_iv (LOCK_RANDOM) |
1303 | const_iv (LOCK_RANDOM) |
1302 | const_iv (LOCK_YOUNGEST) |
1304 | const_iv (LOCK_YOUNGEST) |
1303 | |
1305 | |
1304 | const_iv (DONOTINDEX) |
1306 | const_iv (DONOTINDEX) |
1305 | const_iv (KEYEMPTY ) |
1307 | const_iv (KEYEMPTY) |
1306 | const_iv (KEYEXIST ) |
1308 | const_iv (KEYEXIST) |
1307 | const_iv (LOCK_DEADLOCK) |
1309 | const_iv (LOCK_DEADLOCK) |
1308 | const_iv (LOCK_NOTGRANTED) |
1310 | const_iv (LOCK_NOTGRANTED) |
1309 | const_iv (NOSERVER) |
1311 | const_iv (NOSERVER) |
1310 | const_iv (NOSERVER_HOME) |
1312 | const_iv (NOSERVER_HOME) |
1311 | const_iv (NOSERVER_ID) |
1313 | const_iv (NOSERVER_ID) |
… | |
… | |
1340 | const_iv (VERB_WAITSFOR) |
1342 | const_iv (VERB_WAITSFOR) |
1341 | |
1343 | |
1342 | const_iv (VERSION_MAJOR) |
1344 | const_iv (VERSION_MAJOR) |
1343 | const_iv (VERSION_MINOR) |
1345 | const_iv (VERSION_MINOR) |
1344 | const_iv (VERSION_PATCH) |
1346 | const_iv (VERSION_PATCH) |
|
|
1347 | const_iv (LOGVERSION) |
|
|
1348 | const_iv (LOGOLDVER) |
1345 | #if DB_VERSION_MINOR >= 3 |
1349 | #if DB_VERSION_MINOR >= 3 |
1346 | const_iv (INORDER) |
1350 | const_iv (INORDER) |
1347 | const_iv (LOCK_MAXWRITE) |
1351 | const_iv (LOCK_MAXWRITE) |
1348 | const_iv (SEQ_DEC) |
1352 | const_iv (SEQ_DEC) |
1349 | const_iv (SEQ_INC) |
1353 | const_iv (SEQ_INC) |
… | |
… | |
1390 | const_iv (LOG_AUTOREMOVE) |
1394 | const_iv (LOG_AUTOREMOVE) |
1391 | # if DB_VERSION_MINOR >= 3 |
1395 | # if DB_VERSION_MINOR >= 3 |
1392 | const_iv (DSYNC_LOG) |
1396 | const_iv (DSYNC_LOG) |
1393 | const_iv (LOG_INMEMORY) |
1397 | const_iv (LOG_INMEMORY) |
1394 | # endif |
1398 | # endif |
|
|
1399 | #if DB_VERSION_MINOR >= 8 |
|
|
1400 | const_iv (LOGVERSION_LATCHING) |
|
|
1401 | #endif |
1395 | #endif |
1402 | #endif |
1396 | }; |
1403 | }; |
1397 | |
1404 | |
1398 | bdb_stash = gv_stashpv ("BDB" , 1); |
1405 | bdb_stash = gv_stashpv ("BDB" , 1); |
1399 | bdb_env_stash = gv_stashpv ("BDB::Env" , 1); |
1406 | bdb_env_stash = gv_stashpv ("BDB::Env" , 1); |