Added some pedantic defaults to make super-duper-extra-special sure things are as we expect.
This commit is contained in:
parent
c8699679c3
commit
5ccd73c2ea
2 changed files with 15 additions and 12 deletions
|
@ -49,7 +49,7 @@ static void* txn_checkpoint(void* arg);
|
||||||
/**
|
/**
|
||||||
* Global instance of DB_ENV; only a single one exists per O/S process.
|
* Global instance of DB_ENV; only a single one exists per O/S process.
|
||||||
*/
|
*/
|
||||||
static DB_ENV* G_DB_ENV;
|
static DB_ENV* G_DB_ENV = 0;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -57,7 +57,7 @@ static DB_ENV* G_DB_ENV;
|
||||||
* value so as to provide a useful error code when the user attempts to open the
|
* value so as to provide a useful error code when the user attempts to open the
|
||||||
* port and it fails due to an error that occurred when opening the environment.
|
* port and it fails due to an error that occurred when opening the environment.
|
||||||
*/
|
*/
|
||||||
static int G_DB_ENV_ERROR;
|
static int G_DB_ENV_ERROR = 0;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,17 +72,17 @@ static int G_DB_ENV_ERROR;
|
||||||
* All access to G_DATABASES and G_DATABASES_NAMES must be protected by the read/write lock
|
* All access to G_DATABASES and G_DATABASES_NAMES must be protected by the read/write lock
|
||||||
* G_DATABASES_RWLOCK.
|
* G_DATABASES_RWLOCK.
|
||||||
*/
|
*/
|
||||||
static Database* G_DATABASES;
|
static Database* G_DATABASES = 0;
|
||||||
static int G_DATABASES_SIZE;
|
static int G_DATABASES_SIZE = 0;
|
||||||
static ErlDrvRWLock* G_DATABASES_RWLOCK;
|
static ErlDrvRWLock* G_DATABASES_RWLOCK = 0;
|
||||||
static hive_hash* G_DATABASES_NAMES;
|
static hive_hash* G_DATABASES_NAMES = 0;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deadlock detector thread variables. We run a single thread per VM to detect deadlocks within
|
* Deadlock detector thread variables. We run a single thread per VM to detect deadlocks within
|
||||||
* our global environment. G_DEADLOCK_CHECK_INTERVAL is the time between runs in milliseconds.
|
* our global environment. G_DEADLOCK_CHECK_INTERVAL is the time between runs in milliseconds.
|
||||||
*/
|
*/
|
||||||
static ErlDrvTid G_DEADLOCK_THREAD;
|
static ErlDrvTid G_DEADLOCK_THREAD = 0;
|
||||||
static unsigned int G_DEADLOCK_CHECK_ACTIVE = 1;
|
static unsigned int G_DEADLOCK_CHECK_ACTIVE = 1;
|
||||||
static unsigned int G_DEADLOCK_CHECK_INTERVAL = 100; /* Milliseconds between checks */
|
static unsigned int G_DEADLOCK_CHECK_INTERVAL = 100; /* Milliseconds between checks */
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ static unsigned int G_DEADLOCK_CHECK_INTERVAL = 100; /* Milliseconds between che
|
||||||
* Trickle writer for dirty pages. We run a single thread per VM to perform background
|
* Trickle writer for dirty pages. We run a single thread per VM to perform background
|
||||||
* trickling of dirty pages to disk. G_TRICKLE_INTERVAL is the time between runs in seconds.
|
* trickling of dirty pages to disk. G_TRICKLE_INTERVAL is the time between runs in seconds.
|
||||||
*/
|
*/
|
||||||
static ErlDrvTid G_TRICKLE_THREAD;
|
static ErlDrvTid G_TRICKLE_THREAD = 0;
|
||||||
static unsigned int G_TRICKLE_ACTIVE = 1;
|
static unsigned int G_TRICKLE_ACTIVE = 1;
|
||||||
static unsigned int G_TRICKLE_INTERVAL = 60 * 15; /* Seconds between trickle writes */
|
static unsigned int G_TRICKLE_INTERVAL = 60 * 15; /* Seconds between trickle writes */
|
||||||
static unsigned int G_TRICKLE_PERCENTAGE = 10; /* Desired % of clean pages in cache */
|
static unsigned int G_TRICKLE_PERCENTAGE = 10; /* Desired % of clean pages in cache */
|
||||||
|
@ -102,7 +102,7 @@ static unsigned int G_TRICKLE_PERCENTAGE = 10; /* Desired % of clean pages
|
||||||
* logs into the backing data store. G_CHECKPOINT_INTERVAL is the time between runs in seconds.
|
* logs into the backing data store. G_CHECKPOINT_INTERVAL is the time between runs in seconds.
|
||||||
* TODO The interval should be configurable.
|
* TODO The interval should be configurable.
|
||||||
*/
|
*/
|
||||||
static ErlDrvTid G_CHECKPOINT_THREAD;
|
static ErlDrvTid G_CHECKPOINT_THREAD = 0;
|
||||||
static unsigned int G_CHECKPOINT_ACTIVE = 1;
|
static unsigned int G_CHECKPOINT_ACTIVE = 1;
|
||||||
static unsigned int G_CHECKPOINT_INTERVAL = 60 * 60; /* Seconds between checkpoints */
|
static unsigned int G_CHECKPOINT_INTERVAL = 60 * 60; /* Seconds between checkpoints */
|
||||||
|
|
||||||
|
@ -110,8 +110,8 @@ static unsigned int G_CHECKPOINT_INTERVAL = 60 * 60; /* Seconds between checkpoi
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static TPool* G_TPOOL_GENERAL;
|
static TPool* G_TPOOL_GENERAL = NULL;
|
||||||
static TPool* G_TPOOL_TXNS;
|
static TPool* G_TPOOL_TXNS = NULL;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -800,7 +800,7 @@ static int close_database(int dbref, unsigned flags, PortData* data)
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE_UNLOCK(G_DATABASES_RWLOCK);
|
WRITE_UNLOCK(G_DATABASES_RWLOCK);
|
||||||
return 0;
|
return ERROR_NONE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -63,6 +63,9 @@ static int bdberl_drv_control(ErlDrvData handle, unsigned int cmd,
|
||||||
* Error codes -- chosen so that we do not conflict with other packages, particularly
|
* Error codes -- chosen so that we do not conflict with other packages, particularly
|
||||||
* db.h. We use error namespace from -29000 to -29500.
|
* db.h. We use error namespace from -29000 to -29500.
|
||||||
*/
|
*/
|
||||||
|
#ifndef ERROR_NONE
|
||||||
|
# define ERROR_NONE 0
|
||||||
|
#endif
|
||||||
#define ERROR_MAX_DBS (-29000) /* System can not open any further databases */
|
#define ERROR_MAX_DBS (-29000) /* System can not open any further databases */
|
||||||
#define ERROR_ASYNC_PENDING (-29001) /* Async operation already pending on this port */
|
#define ERROR_ASYNC_PENDING (-29001) /* Async operation already pending on this port */
|
||||||
#define ERROR_INVALID_DBREF (-29002) /* DbRef not currently opened by this port */
|
#define ERROR_INVALID_DBREF (-29002) /* DbRef not currently opened by this port */
|
||||||
|
|
Loading…
Reference in a new issue