* Memory pools
*/
+#define isc_mempool_create(c, s, mp) \
+ isc__mempool_create((c), (s), (mp)_ISC_MEM_FILELINE)
void
-isc_mempool_create(isc_mem_t *mctx, size_t size, isc_mempool_t **mpctxp);
+isc__mempool_create(isc_mem_t *mctx, size_t size,
+ isc_mempool_t **mpctxp _ISC_MEM_FLARG);
/*%<
* Create a memory pool.
*
*\li #ISC_R_SUCCESS -- all is well.
*/
+#define isc_mempool_destroy(mp) isc__mempool_destroy((mp)_ISC_MEM_FILELINE)
void
-isc_mempool_destroy(isc_mempool_t **mpctxp);
+isc__mempool_destroy(isc_mempool_t **mpctxp _ISC_MEM_FLARG);
/*%<
* Destroy a memory pool.
*
*/
void
-isc_mempool_create(isc_mem_t *mctx, size_t size, isc_mempool_t **mpctxp) {
+isc__mempool_create(isc_mem_t *mctx, size_t size,
+ isc_mempool_t **mpctxp FLARG) {
REQUIRE(VALID_CONTEXT(mctx));
REQUIRE(size > 0U);
REQUIRE(mpctxp != NULL && *mpctxp == NULL);
atomic_init(&mpctx->fillcount, 1);
atomic_init(&mpctx->gets, 0);
+#if ISC_MEM_TRACKLINES
+ if ((isc_mem_debugging & ISC_MEM_DEBUGTRACE) != 0) {
+ fprintf(stderr, "create pool %p file %s line %u mctx %p\n",
+ mpctx, file, line, mctx);
+ }
+#endif /* ISC_MEM_TRACKLINES */
+
*mpctxp = (isc_mempool_t *)mpctx;
MCTXLOCK(mctx);
}
void
-isc_mempool_destroy(isc_mempool_t **mpctxp) {
+isc__mempool_destroy(isc_mempool_t **mpctxp FLARG) {
REQUIRE(mpctxp != NULL);
REQUIRE(VALID_MEMPOOL(*mpctxp));
mpctx = *mpctxp;
*mpctxp = NULL;
+
+#if ISC_MEM_TRACKLINES
+ if ((isc_mem_debugging & ISC_MEM_DEBUGTRACE) != 0) {
+ fprintf(stderr, "destroy pool %p file %s line %u mctx %p\n",
+ mpctx, file, line, mctx);
+ }
+#endif
+
if (atomic_load_acquire(&mpctx->allocated) > 0) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_mempool_destroy(): mempool %s "