block_header.h 827 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef BLOCK_HEADER_H
  2. #define BLOCK_HEADER_H
  3. #include <stddef.h>
  4. #include <stdbool.h>
  5. typedef struct block_header_s {
  6. size_t size;
  7. size_t requested_size;
  8. size_t previous_size;
  9. void *next;
  10. } block_header_t;
  11. #define HEADER_SIZE sizeof(block_header_t)
  12. void * get_next(void *ptr);
  13. size_t get_size(void *ptr);
  14. void set_size(void *ptr, size_t size);
  15. void set_requested_size(void *ptr, size_t size);
  16. void set_next(void *block, void *next_block);
  17. bool is_previous_free(void *ptr);
  18. size_t get_previous_size(void *ptr);
  19. void * get_previous(void *ptr);
  20. /**
  21. * Removes a memory block from a singly linked list of memory blocks.
  22. *
  23. * @param *block The block to be removed.
  24. * @param *starting_node The starting memory block of the list.
  25. */
  26. void remove_block(void *block, void *starting_node);
  27. #endif /* BLOCK_HEADER_H */