mem_inner.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * Copyright (c) 2018 Actions Semiconductor Co., Ltd
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. /**
  7. * @file mem inner interface
  8. */
  9. #ifndef __MEM_INNER_H__
  10. #define __MEM_INNER_H__
  11. #ifdef CONFIG_APP_USED_MEM_POOL
  12. void *mem_pool_malloc(unsigned int num_bytes);
  13. void mem_pool_free(void *ptr);
  14. void mem_pool_dump(void);
  15. void mem_pool_init(void);
  16. #endif
  17. #ifdef APP_USED_MEM_SLAB
  18. #define SLAB0_BUSY 0x01
  19. #define SLAB1_BUSY 0x02
  20. #define ALL_SLAB_BUSY 0x03
  21. #define SYSTEM_MEM_SLAB 0
  22. #define APP_MEM_SLAB 1
  23. struct dynamic_slab_info
  24. {
  25. sys_snode_t node;
  26. void * base_addr;
  27. uint32_t alloc_mask;
  28. uint16_t block_size;
  29. uint16_t block_num;
  30. };
  31. struct slab_info
  32. {
  33. struct k_mem_slab *slab;
  34. char * slab_base;
  35. uint16_t block_num;
  36. uint16_t block_size;
  37. #ifdef CONFIG_USED_DYNAMIC_SLAB
  38. sys_slist_t * dynamic_slab_list;
  39. #endif
  40. };
  41. struct slabs_info
  42. {
  43. uint16_t slab_num;
  44. uint16_t slab_flag;
  45. uint8_t * max_used;
  46. uint16_t * max_size;
  47. struct slab_info slabs[CONFIG_SLAB_TOTAL_NUM];
  48. };
  49. #define DYNAMIC_SLAB_INFO(_node) CONTAINER_OF(_node, struct dynamic_slab_info, node)
  50. void mem_slabs_init(struct slabs_info * slabs);
  51. void mem_slabs_free(struct slabs_info * slabs, void *ptr);
  52. void *mem_slabs_malloc(struct slabs_info * slabs, unsigned int num_bytes);
  53. void mem_slabs_dump(struct slabs_info * slabs,int index);
  54. #endif
  55. #ifdef CONFIG_APP_USED_MEM_PAGE
  56. void mem_page_init(void);
  57. void *mem_page_malloc(unsigned int num_bytes, void *caller);
  58. void mem_page_free(void *ptr, void *caller);
  59. void mem_page_dump(uint32_t dump_detail,const char * match_str);
  60. #endif
  61. #endif