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