Lines Matching refs:heap
80 static buffer_alloc_ctx heap;
107 memory_header *cur = heap.first;
116 cur = heap.first_free;
167 memory_header *prv = heap.first, *cur;
177 if (heap.first->prev != NULL) {
185 cur = heap.first->next;
213 memory_header *new, *cur = heap.first_free;
222 if (heap.buf == NULL || heap.first == NULL) {
262 heap.alloc_count++;
276 heap.first_free = cur->next_free;
287 heap.total_used += cur->size;
288 if (heap.total_used > heap.maximum_used) {
289 heap.maximum_used = heap.total_used;
298 if ((heap.verify & MBEDTLS_MEMORY_VERIFY_ALLOC) && verify_chain() != 0) {
333 heap.first_free = new;
347 heap.header_count++;
348 if (heap.header_count > heap.maximum_header_count) {
349 heap.maximum_header_count = heap.header_count;
351 heap.total_used += cur->size;
352 if (heap.total_used > heap.maximum_used) {
353 heap.maximum_used = heap.total_used;
362 if ((heap.verify & MBEDTLS_MEMORY_VERIFY_ALLOC) && verify_chain() != 0) {
377 if (ptr == NULL || heap.buf == NULL || heap.first == NULL) {
381 if (p < heap.buf || p >= heap.buf + heap.len) {
407 heap.free_count++;
408 heap.total_used -= hdr->size;
421 heap.header_count--;
439 heap.header_count--;
449 heap.first_free = hdr->next_free;
463 heap.first_free = hdr;
481 hdr->next_free = heap.first_free;
482 if (heap.first_free != NULL) {
483 heap.first_free->prev_free = hdr;
485 heap.first_free = hdr;
488 if ((heap.verify & MBEDTLS_MEMORY_VERIFY_FREE) && verify_chain() != 0) {
495 heap.verify = verify;
509 heap.header_count, heap.total_used,
510 heap.maximum_header_count, heap.maximum_used,
511 heap.maximum_header_count * sizeof(memory_header)
512 + heap.maximum_used,
513 heap.alloc_count, heap.free_count);
515 if (heap.first->next == NULL) {
525 *alloc_count = heap.alloc_count;
526 *free_count = heap.free_count;
531 *max_used = heap.maximum_used;
532 *max_blocks = heap.maximum_header_count;
537 heap.maximum_used = 0;
538 heap.maximum_header_count = 0;
543 *cur_used = heap.total_used;
544 *cur_blocks = heap.header_count;
552 if (mbedtls_mutex_lock(&heap.mutex) != 0) {
556 if (mbedtls_mutex_unlock(&heap.mutex)) {
564 /* We have no good option here, but corrupting the heap seems
566 if (mbedtls_mutex_lock(&heap.mutex)) {
570 (void) mbedtls_mutex_unlock(&heap.mutex);
576 memset(&heap, 0, sizeof(buffer_alloc_ctx));
579 mbedtls_mutex_init(&heap.mutex);
598 heap.buf = buf;
599 heap.len = len;
601 heap.first = (memory_header *) buf;
602 heap.first->size = len - sizeof(memory_header);
603 heap.first->magic1 = MAGIC1;
604 heap.first->magic2 = MAGIC2;
605 heap.first_free = heap.first;
611 mbedtls_mutex_free(&heap.mutex);
613 mbedtls_platform_zeroize(&heap, sizeof(buffer_alloc_ctx));
634 heap.total_used != 0 ||
636 heap.first != heap.first_free ||
637 (void *) heap.first != (void *) heap.buf) {
681 end = heap.buf + heap.len;
695 TEST_ASSERT(heap.buf + heap.len == end);