作業系統工程 Operating System Programming note
, 110-1
, 2021
#ifdef RT_USING_HEAP
struct rt_memory
{
struct rt_object parent; /**< inherit from rt_object */
const char * algorithm;/**< Memory management algorithm name */
rt_ubase_t address; /**< memory start address */
rt_size_t total; /**< memory size */
rt_size_t used; /**< size used */
rt_size_t max; /**< maximum usage */
};
typedef struct rt_memory *rt_mem_t;
#endif
struct rt_memheap_item
{
rt_uint32_t magic; /**< magic number for memheap */
struct rt_memheap *pool_ptr; /**< point of pool */
struct rt_memheap_item *next; /**< next memheap item */
struct rt_memheap_item *prev; /**< prev memheap item */
struct rt_memheap_item *next_free; /**< next free memheap item */
struct rt_memheap_item *prev_free; /**< prev free memheap item */
#ifdef RT_USING_MEMTRACE
rt_uint8_t owner_thread_name[4];/**< owner thread name */
#endif
};
struct rt_memheap
{
struct rt_object parent; /**< inherit from rt_object */
void *start_addr; /**< pool start address and size */
rt_size_t pool_size; /**< pool size */
rt_size_t available_size;/**< available size */
rt_size_t max_used_size; /**< maximum allocated size */
struct rt_memheap_item *block_list; /**< used block list */
struct rt_memheap_item *free_list; /**< free block list */
struct rt_memheap_item free_header; /**< free block list header */
struct rt_semaphore lock; /**< semaphore lock */
rt_bool_t locked; /**< External lock mark */
};
#endif
#ifdef RT_USING_MEMPOOL
struct rt_mempool
{
struct rt_object parent; /**< inherit from rt_object */
void *start_address; /**< memory pool start */
rt_size_t size; /**< size of memory pool */
rt_size_t block_size; /**< size of memory blocks */
rt_uint8_t *block_list; /**< memory blocks list */
rt_size_t block_total_count;/**< numbers of memory block */
rt_size_t block_free_count; /**< numbers of free memory block */
rt_list_t suspend_thread; /**< threads pended on this resource */
};
typedef struct rt_mempool *rt_mp_t;
#endif
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up