ad0x0_memman.h 1.0 KB

12345678910111213141516171819202122232425262728
  1. #ifndef AD0X0_MEMMAN_H
  2. #define AD0X0_MEMMAN_H
  3. #include "stdint.h"
  4. //#include "ad0x0_sfuncs.h"
  5. //#define AD0X0_SFUNC_COUNT 10
  6. /*typedef __packed struct{
  7. uint8_t mb_index;
  8. }ad0x0_memman_eba_t;
  9. typedef __packed struct{
  10. uint8_t eb_index;
  11. }ad0x0_memman_la_t;*/
  12. typedef struct{
  13. volatile uint8_t *puba,*pla,cur_ei,total_count,lock;
  14. void (*perr)(void);
  15. }ad0x0_memman_desc_t;
  16. /*Используется два байтовых массива и индекс свободной ячейки.
  17. Один массив нужен для хранения индексов занятых ячеек, второй по индексу
  18. ячейки ссылается на первый. Такой гемор нужен для произвольного использования ячеек*/
  19. void ad0x0_memman_init(ad0x0_memman_desc_t *_mdesc);
  20. uint8_t ad0x0_memman_get(ad0x0_memman_desc_t *_mdesc,uint8_t *_out_i);//вернет 0 если забилось
  21. uint8_t ad0x0_memman_free(ad0x0_memman_desc_t *_mdesc,uint8_t _index);
  22. #endif