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