1 /* 2 * Copyright (c) 2006-2018, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2018-06-29 heyuanjie first version 9 */ 10 11 #ifndef __LWP_H__ 12 #define __LWP_H__ 13 14 #define LWP_MAGIC 0x5A 15 16 #define LWP_TYPE_FIX_ADDR 0x01 17 #define LWP_TYPE_DYN_ADDR 0x02 18 19 #define LWP_ARG_MAX 8 20 21 #include <stdint.h> 22 #include <rtthread.h> 23 #include <dfs.h> 24 #include <lwp_memheap.h> 25 26 struct rt_lwp 27 { 28 uint8_t lwp_type; 29 uint8_t heap_cnt; 30 uint8_t reserv[2]; 31 32 rt_list_t hlist; /**< headp list */ 33 34 uint8_t *text_entry; 35 uint32_t text_size; 36 37 uint8_t *data; 38 uint32_t data_size; 39 40 uint32_t *kernel_sp; /**< kernel stack point */ 41 struct dfs_fdtable fdt; 42 void *args; 43 }; 44 45 struct lwp_header 46 { 47 uint8_t magic; 48 uint8_t compress_encrypt_algo; 49 uint16_t reserved; 50 51 uint32_t crc32; 52 }; 53 54 struct lwp_chunk 55 { 56 uint32_t total_len; 57 58 char name[4]; 59 uint32_t data_len; 60 uint32_t data_len_space; 61 }; 62 63 extern struct rt_lwp *rt_lwp_self(void); 64 65 extern void rt_lwp_mem_init(struct rt_lwp *lwp); 66 extern void rt_lwp_mem_deinit(struct rt_lwp *lwp); 67 extern void *rt_lwp_mem_malloc(rt_uint32_t size); 68 extern void rt_lwp_mem_free(void *addr); 69 extern void *rt_lwp_mem_realloc(void *rmem, rt_size_t newsize); 70 71 #endif 72