• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
3  * Description: New context and heap for JS && BMS task in JUPITER.
4  * Create: 2020/11/17
5  */
6 
7 #if defined (JERRY_IAR_JUPITER) && (JERRY_EXTERNAL_CONTEXT == 1)
8 
9 #include "jcontext.h"
10 #include "config-jupiter.h"
11 
12 #pragma data_alignment = JMEM_ALIGNMENT
13 extern uint8_t* js_context_and_heap;
14 
15 // heap for bms task
16 extern uint8_t* bms_context_and_heap;
17 
18 /**
19  * The alloc function passed to jerry_create_context for bms
20  */
bms_task_context_alloc(size_t total_size,void * cb_data_p)21 static void * bms_task_context_alloc (size_t total_size, void *cb_data_p)
22 {
23   (void) cb_data_p; /* unused */
24 
25   if (total_size > (BMS_TASK_CONTEXT_AND_HEAP_SIZE * CONVERTION_RATIO)) {
26     /* out of setted space */
27     return NULL;
28   }
29   return bms_context_and_heap;
30 } /* bms_task_context_alloc */
31 
32 /**
33  * Create and set the default external context for bms task
34  */
bms_task_context_init(void)35 void bms_task_context_init (void)
36 {
37   jerry_context_t * bms_task_context = jerry_create_context (BMS_TASK_HEAP_SIZE * CONVERTION_RATIO,
38                                         bms_task_context_alloc, NULL);
39 
40   jerry_port_default_set_current_context (bms_task_context);
41 } /* bms_task_context_init */
42 
43 
44 /**
45  * The alloc function passed to jerry_create_context for js
46  */
js_task_context_alloc(size_t total_size,void * cb_data_p)47 static void * js_task_context_alloc (size_t total_size, void *cb_data_p)
48 {
49   (void) cb_data_p; /* unused */
50 
51   if (total_size > (JS_TASK_CONTEXT_AND_HEAP_SIZE_BYTE)) {
52     /* out of setted space */
53     return NULL;
54   }
55   return js_context_and_heap;
56 } /* js_task_context_alloc */
57 
58 /**
59  * Create and set the default external context for js task., need free after task
60  */
js_task_context_init(void)61 void js_task_context_init (void)
62 {
63   jerry_context_t * js_task_context = jerry_create_context (JS_TASK_HEAP_SIZE * CONVERTION_RATIO,
64                                         js_task_context_alloc, NULL);
65 
66   jerry_port_default_set_current_context (js_task_context);
67 } /* js_task_context_init */
68 
69 /**
70  * Unified interface for Creating external context
71  */
72 void
jerry_external_context_init(uint32_t heap_size,jerry_context_alloc_t alloc,void * cb_data_p)73 jerry_external_context_init (uint32_t heap_size, /**< the size of heap */
74                     jerry_context_alloc_t alloc, /**< the alloc function */
75                     void *cb_data_p) /**< the cb_data for alloc function */
76 {
77   jerry_context_t * external_context = jerry_create_context (heap_size, alloc, NULL);
78   jerry_port_default_set_current_context (external_context);
79 }
80 
81 #endif // defined (JERRY_IAR_JUPITER) && (JERRY_EXTERNAL_CONTEXT == 1)
82