memmgr.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /**
  2. * @file memmgr.h
  3. * Furi: memory managment API and glue
  4. */
  5. #pragma once
  6. #include <stddef.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9. #include "check.h"
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. // define for test case "link against furi memmgr"
  14. #define FURI_MEMMGR_GUARD 1
  15. /** Get free heap size
  16. *
  17. * @return free heap size in bytes
  18. */
  19. size_t memmgr_get_free_heap(void);
  20. /** Get total heap size
  21. *
  22. * @return total heap size in bytes
  23. */
  24. size_t memmgr_get_total_heap(void);
  25. /** Get heap watermark
  26. *
  27. * @return minimum heap in bytes
  28. */
  29. size_t memmgr_get_minimum_free_heap(void);
  30. /**
  31. * An aligned version of malloc, used when you need to get the aligned space on the heap
  32. * Freeing the received address is performed ONLY through the aligned_free function
  33. * @param size
  34. * @param alignment
  35. * @return void*
  36. */
  37. void* aligned_malloc(size_t size, size_t alignment);
  38. /**
  39. * Freed space obtained through the aligned_malloc function
  40. * @param p pointer to result of aligned_malloc
  41. */
  42. void aligned_free(void* p);
  43. /**
  44. * @brief Allocate memory from separate memory pool. That memory can't be freed.
  45. *
  46. * @param size
  47. * @return void*
  48. */
  49. void* memmgr_alloc_from_pool(size_t size);
  50. /**
  51. * @brief Get free memory pool size
  52. *
  53. * @return size_t
  54. */
  55. size_t memmgr_pool_get_free(void);
  56. /**
  57. * @brief Get max free block size from memory pool
  58. *
  59. * @return size_t
  60. */
  61. size_t memmgr_pool_get_max_block(void);
  62. #ifdef __cplusplus
  63. }
  64. #endif