void clOsalMemoryChecker(void) { if (CLIST_SIZE(_memory_logger_element)(g_memory_logger) != 0) { CLIST_ITER_TYPE(_memory_logger_element) iter = CLIST_BEGIN(_memory_logger_element)(g_memory_logger); while (iter != CLIST_END(_memory_logger_element)(g_memory_logger)) { _memory_logger_element *e = CLIST_ITER_GET_DATA(_memory_logger_element)(iter); clOsalPrintf("0x%p, at \"%s\":%d\n", e->ptr, e->filename, e->lineno); iter = CLIST_ITER_INCREMENT(_memory_logger_element)(iter); } } }
void clOsalFreeDbg(void *ptr) { if (ptr != NULL) { CLIST_ITER_TYPE(_memory_logger_element) iter; iter = CLIST_SEARCH(_memory_logger_element)(g_memory_logger, ptr, compare_func); ASSERT(iter != CLIST_END(_memory_logger_element)(g_memory_logger)); CLIST_ERASE(_memory_logger_element)(g_memory_logger, iter); free(ptr); } }
void volume_list_destroy(volume_list_t *list) { volume_t *current, *next; if (list != NULL) { current = CLIST_HEAD(list); while (!CLIST_END(list, current)) { next = CLIST_NEXT(current); CLIST_REMOVE(current); volume_destroy(current); current = next; } } }
volume_t * volume_list_lookup_by_mount_point(volume_list_t *list, const char *mountPoint) { volume_t *current, *result; result = NULL; if ((list != NULL) && (mountPoint != NULL)) { current = CLIST_HEAD(list); while (!CLIST_END(list, current)) { if (strcmp(current->mountPoint, mountPoint) == 0) { result = current; break; } current = CLIST_NEXT(current); } } return result; }
void * clOsalReallocDbg(void *ptr, size_t const size, char const *filename, int const lineno) { CLIST_ITER_TYPE(_memory_logger_element) iter; ASSERT(ptr != NULL); iter = CLIST_SEARCH(_memory_logger_element)(g_memory_logger, ptr, compare_func); ASSERT(iter != CLIST_END(_memory_logger_element)(g_memory_logger)); CLIST_ERASE(_memory_logger_element)(g_memory_logger, iter); if (NULL == g_memory_logger) { g_memory_logger = CLIST_NEW(_memory_logger_element)(); } ptr = realloc(ptr, size); { struct _memory_logger_element e = {filename, lineno, ptr}; CLIST_PUSH_BACK(_memory_logger_element)(g_memory_logger, &e); } return ptr; }