MEMORY account reallocs
This commit is contained in:
@@ -129,6 +129,7 @@ struct iscsi_context {
|
|||||||
int reconnect_deferred;
|
int reconnect_deferred;
|
||||||
int debug;
|
int debug;
|
||||||
int mallocs;
|
int mallocs;
|
||||||
|
int reallocs;
|
||||||
int frees;
|
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_malloc(struct iscsi_context *iscsi, size_t size);
|
||||||
inline void* iscsi_zmalloc(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 void iscsi_free(struct iscsi_context *iscsi, void* ptr);
|
||||||
inline char* iscsi_strdup(struct iscsi_context *iscsi, const char* str);
|
inline char* iscsi_strdup(struct iscsi_context *iscsi, const char* str);
|
||||||
|
|
||||||
|
|||||||
+10
-2
@@ -48,6 +48,14 @@ inline void* iscsi_zmalloc(struct iscsi_context *iscsi, size_t size) {
|
|||||||
return ptr;
|
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) {
|
inline void iscsi_free(struct iscsi_context *iscsi, void* ptr) {
|
||||||
if (ptr == NULL) return;
|
if (ptr == NULL) return;
|
||||||
free(ptr);
|
free(ptr);
|
||||||
@@ -262,9 +270,9 @@ iscsi_destroy_context(struct iscsi_context *iscsi)
|
|||||||
iscsi->connect_data = NULL;
|
iscsi->connect_data = NULL;
|
||||||
|
|
||||||
if (iscsi->mallocs != iscsi->frees) {
|
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 {
|
} 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));
|
memset(iscsi, 0, sizeof(struct iscsi_context));
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ iscsi_add_data(struct iscsi_context *iscsi, struct iscsi_data *data,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (data->alloc_size != new_alloc_size) {
|
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) {
|
if (data->data == NULL) {
|
||||||
|
|||||||
Reference in New Issue
Block a user