MEMORY account reallocs

This commit is contained in:
Peter Lieven
2012-11-05 15:20:15 +01:00
parent 65cd38e8ff
commit e6553c2ef8
3 changed files with 13 additions and 3 deletions

View File

@@ -129,6 +129,7 @@ struct iscsi_context {
int reconnect_deferred;
int debug;
int mallocs;
int reallocs;
int frees;
};
@@ -291,6 +292,7 @@ unsigned char *scsi_task_get_data_in_buffer(struct scsi_task *task, uint32_t pos
inline void* iscsi_malloc(struct iscsi_context *iscsi, size_t size);
inline void* iscsi_zmalloc(struct iscsi_context *iscsi, size_t size);
inline void* iscsi_realloc(struct iscsi_context *iscsi, void* ptr, size_t size);
inline void iscsi_free(struct iscsi_context *iscsi, void* ptr);
inline char* iscsi_strdup(struct iscsi_context *iscsi, const char* str);

View File

@@ -48,6 +48,14 @@ inline void* iscsi_zmalloc(struct iscsi_context *iscsi, size_t size) {
return ptr;
}
inline void* iscsi_realloc(struct iscsi_context *iscsi, void* ptr, size_t size) {
void * _ptr = realloc(ptr, size);
if (_ptr != NULL) {
iscsi->reallocs++;
}
return _ptr;
}
inline void iscsi_free(struct iscsi_context *iscsi, void* ptr) {
if (ptr == NULL) return;
free(ptr);
@@ -262,9 +270,9 @@ iscsi_destroy_context(struct iscsi_context *iscsi)
iscsi->connect_data = NULL;
if (iscsi->mallocs != iscsi->frees) {
DPRINTF(iscsi,1,"%d memory blocks lost at iscsi_destroy_context() after %d mallocs and %d frees",iscsi->mallocs-iscsi->frees,iscsi->mallocs,iscsi->frees);
DPRINTF(iscsi,1,"%d memory blocks lost at iscsi_destroy_context() after %d malloc(s), %d realloc(s) and %d free(s)",iscsi->mallocs-iscsi->frees,iscsi->mallocs,iscsi->reallocs,iscsi->frees);
} else {
DPRINTF(iscsi,5,"memory is clean at iscsi_destroy_context() after %d mallocs and %d frees",iscsi->mallocs,iscsi->frees);
DPRINTF(iscsi,5,"memory is clean at iscsi_destroy_context() after %d mallocs, %d realloc(s) and %d frees",iscsi->mallocs,iscsi->reallocs,iscsi->frees);
}
memset(iscsi, 0, sizeof(struct iscsi_context));

View File

@@ -149,7 +149,7 @@ iscsi_add_data(struct iscsi_context *iscsi, struct iscsi_data *data,
}
else
if (data->alloc_size != new_alloc_size) {
data->data = realloc(data->data, new_alloc_size);
data->data = iscsi_realloc(iscsi, data->data, new_alloc_size);
}
if (data->data == NULL) {