MEMORY account reallocs
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
12
lib/init.c
12
lib/init.c
@@ -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));
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user