diff options
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/db/mutex.c')
-rw-r--r-- | debian/htdig/htdig-3.2.0b6/db/mutex.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/db/mutex.c b/debian/htdig/htdig-3.2.0b6/db/mutex.c new file mode 100644 index 00000000..d7244c21 --- /dev/null +++ b/debian/htdig/htdig-3.2.0b6/db/mutex.c @@ -0,0 +1,72 @@ +/*- + * See the file LICENSE for redistribution information. + * + * Copyright (c) 1999 + * Sleepycat Software. All rights reserved. + */ + +#include "db_config.h" + +#ifndef lint +static const char sccsid[] = "@(#)mutex.c 11.1 (Sleepycat) 7/25/99"; +#endif /* not lint */ + +#ifndef NO_SYSTEM_INCLUDES +#include <sys/types.h> +#endif + +#include "db_int.h" + +/* + * CDB___db_mutex_alloc -- + * Allocate and initialize a mutex. + * + * PUBLIC: int CDB___db_mutex_alloc __P((DB_ENV *, REGINFO *, MUTEX **)); + */ +int +CDB___db_mutex_alloc(dbenv, infop, storep) + DB_ENV *dbenv; + REGINFO *infop; + MUTEX **storep; +{ + int ret; + + /* + * If the architecture supports mutex in heap memory, simply + * use that memory. If it doesn't, we have to allocate space + * in the region. + */ +#ifdef MUTEX_NO_MALLOC_LOCKS + R_LOCK(dbenv, infop); + ret = CDB___db_shalloc(infop->addr, sizeof(MUTEX), MUTEX_ALIGN, storep); + R_UNLOCK(dbenv, infop); +#else + COMPQUIET(dbenv, NULL); + COMPQUIET(infop, NULL); + ret = CDB___os_calloc(1, sizeof(MUTEX), storep); +#endif + return (ret); +} + +/* + * CDB___db_mutex_free -- + * Free a mutex. + * + * PUBLIC: void CDB___db_mutex_free __P((DB_ENV *, REGINFO *, MUTEX *)); + */ +void +CDB___db_mutex_free(dbenv, infop, mutexp) + DB_ENV *dbenv; + REGINFO *infop; + MUTEX *mutexp; +{ +#ifdef MUTEX_NO_MALLOC_LOCKS + R_LOCK(dbenv, infop); + CDB___db_shalloc_free(infop->addr, mutexp); + R_UNLOCK(dbenv, infop); +#else + COMPQUIET(dbenv, NULL); + COMPQUIET(infop, NULL); + CDB___os_free(mutexp, sizeof(*mutexp)); +#endif +} |