static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-
#ifdef SMARTALLOC
#define HEAD_SIZE BALIGN(sizeof(struct abufhead))
return (POOLMEM *)(((char *)buf)+HEAD_SIZE);
}
-
/* Return the size of a memory buffer */
int32_t sm_sizeof_pool_memory(const char *fname, int lineno, POOLMEM *obuf)
{
V(mutex);
}
-
#else
/* ========= NO SMARTALLOC ========================================= */
return (POOLMEM *)(((char *)buf)+HEAD_SIZE);
}
-
/* Return the size of a memory buffer */
int32_t sizeof_pool_memory(POOLMEM *obuf)
{
return ((struct abufhead *)cp)->ablen;
}
-
-
/* Realloc pool memory buffer */
POOLMEM *realloc_pool_memory(POOLMEM *obuf, int32_t size)
{
return (POOLMEM *)(((char *)buf)+HEAD_SIZE);
}
-
POOLMEM *check_pool_memory_size(POOLMEM *obuf, int32_t size)
{
ASSERT(obuf);
Dmsg2(1800, "free_pool_memory %p pool=%d\n", buf, pool);
V(mutex);
}
-
#endif /* SMARTALLOC */
-
/*
* Clean up memory pool periodically
*
}
}
-
-
-
/* Release all pooled memory */
void close_memory_pool()
{
}
#ifdef DEBUG
-
static const char *pool_name(int pool)
{
static const char *name[] = {"NoPool", "NAME ", "FNAME ", "MSG ", "EMSG "};
void print_memory_pool_stats() {}
#endif /* DEBUG */
-
/*
* Concatenate a string (str) onto a pool memory buffer pm
* Returns: length of concatenated string
return pmlen + len - 1;
}
-
int pm_strcat(POOLMEM *&pm, POOL_MEM &str)
{
int pmlen = strlen(pm);
return pmlen + len - 1;
}
-
/*
* Copy a string (str) into a pool memory buffer pm
* Returns: length of string copied
return len - 1;
}
-
int pm_strcpy(POOL_MEM &pm, const char *str)
{
int len;
return len - 1;
}
+/*
+ * Copy data into a pool memory buffer pm
+ * Returns: length of data copied
+ */
+int pm_memcpy(POOLMEM **pm, const char *data, int32_t n)
+{
+ *pm = check_pool_memory_size(*pm, n);
+ memcpy(*pm, data, n);
+ return n;
+}
+
+int pm_memcpy(POOLMEM *&pm, const char *data, int32_t n)
+{
+ pm = check_pool_memory_size(pm, n);
+ memcpy(pm, data, n);
+ return n;
+}
+
+int pm_memcpy(POOLMEM *&pm, POOL_MEM &data, int32_t n)
+{
+ pm = check_pool_memory_size(pm, n);
+ memcpy(pm, data.c_str(), n);
+ return n;
+}
+
+int pm_memcpy(POOL_MEM &pm, const char *data, int32_t n)
+{
+ pm.check_size(n);
+ memcpy(pm.c_str(), data, n);
+ return n;
+}
+
/* ============== CLASS POOL_MEM ============== */
/* Return the size of a memory buffer */
return pmlen + len - 1;
}
-
int POOL_MEM::strcpy(const char *str)
{
int len;