xref: /nrf52832-nimble/rt-thread/components/lwp/lwp.h (revision 104654410c56c573564690304ae786df310c91fc)
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