ri.tmplt 3.35 KB
Newer Older
1
2
@@-- The following tags are available in this template:
@@--
3
4
5
6
@@-- @_Name_@                   : The name of the interface
@@-- @_Direction_@              : "PI" or "RI"
@@-- @_Kind_@                   : The RCM Kind
@@-- @_Parent_Function_@        : The name of the function
7
@@-- @_Partition_Name_@         : Partition name for parent function
8
9
10
11
12
@@-- @_Param_Names_@            : List of parameter names
@@-- @_Param_Types_@            :   |_ Corresponding parameter types
@@-- @_Param_Directions_@       :   |_ Corresponding direction
@@-- @_Remote_Function_Names_@  : List of callees
@@-- @_Remote_Interface_Names_@ :   |_ callee's interface name
13
@@-- @_Calling_Threads_@        : Calling threads of the containing block
14
15
16
17
18
19
20
21
22
23
24
25
26
// Required interface @_Name_@ in function @_Parent_Function_@
void vm_@_LOWER:Parent_Function_@_@_LOWER:Name_@
@@INLINE(        \()(,\n         )(\)\n)@@
   @@TABLE@@
      @@IF@@ @_Param_Directions_@ = "PARAM_IN"
         void *IN_buf_@_LOWER:Param_Names_@, size_t size_IN_buf_@_LOWER:Param_Names_@
      @@ELSE@@
         void *OUT_buf_@_LOWER:Param_Names_@, size_t *size_OUT_buf_@_LOWER:Param_Names_@
      @@END_IF@@
   @@END_TABLE@@
@@END_INLINE@@
{
@@IF@@ @_Kind_@ = SPORADIC_OPERATION
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
   puts("[TASTE] Sporadic call of @_Name_@");
   __po_hi_task_id current_task = __po_hi_get_task_id();
@@TABLE@@
   // @_Calling_Threads_@ calling thread
   if (@_LOWER:Partition_Name_@_@_LOWER:Calling_Threads_@_k == current_task) {
@@IF@@ @_Param_Names'Length_@ > 0
@@INLINE(      )( \n      )(\n)@@
   __po_hi_request_t request;
   __po_hi_copy_array(&(request.vars.@_LOWER:Calling_Threads_@_global_outport_@_LOWER:Name_@.@_LOWER:Calling_Threads_@_global_outport_@_LOWER:Name_@.buffer),
@@TABLE@@
 IN_buf_@_LOWER:Param_Names_@, size_IN_buf_@_LOWER:Param_Names_@);
@@END_TABLE@@
   request.vars.@_LOWER:Calling_Threads_@_global_outport_@_LOWER:Name_@.@_LOWER:Calling_Threads_@_global_outport_@_LOWER:Name_@.length = 
@@TABLE@@
size_IN_buf_@_LOWER:Param_Names_@;
@@END_TABLE@@
   request.port = @_LOWER:Calling_Threads_@_global_outport_@_LOWER:Name_@;
   __po_hi_gqueue_store_out(@_LOWER:Partition_Name_@_@_LOWER:Calling_Threads_@_k, @_LOWER:Calling_Threads_@_local_outport_@_LOWER:Name_@, &request);
   __po_hi_send_output(@_LOWER:Partition_Name_@_@_LOWER:Calling_Threads_@_k, @_LOWER:Calling_Threads_@_global_outport_@_LOWER:Name_@);
@@END_INLINE@@
@@END_IF@@
      return;
   }
@@END_TABLE@@
   // calling threads: @_Calling_Threads_@ partition: @_Partition_Name_@
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@@ELSIF@@ @_Kind_@ = UNPROTECTED_OPERATION
@@TABLE@@
   @_LOWER:Remote_Function_Names_@_@_LOWER:Remote_Interface_Names_@
@@INLINE(        \()(,\n         )(\);\n)@@
   @@TABLE@@
      @@IF@@ @_Param_Directions_@ = "PARAM_IN"
         IN_buf_@_LOWER:Param_Names_@, size_IN_buf_@_LOWER:Param_Names_@
      @@ELSE@@
         OUT_buf_@_LOWER:Param_Names_@, size_OUT_buf_@_LOWER:Param_Names_@
      @@END_IF@@
   @@END_TABLE@@
@@END_INLINE@@

@@END_TABLE@@
@@ELSE@@ @@-- Protected call
67
68
69
70
71
72
73
74
75
76
77
78
79
   puts("[TASTE] Protected call of @_Name_@");
@@TABLE@@
   pro_@_LOWER:Remote_Function_Names_@_@_LOWER:Remote_Interface_Names_@
@@INLINE(        \()(,\n         )(\);\n)@@
   @@TABLE@@
      @@IF@@ @_Param_Directions_@ = "PARAM_IN"
         IN_buf_@_LOWER:Param_Names_@, size_IN_buf_@_LOWER:Param_Names_@
      @@ELSE@@
         OUT_buf_@_LOWER:Param_Names_@, size_OUT_buf_@_LOWER:Param_Names_@
      @@END_IF@@
   @@END_TABLE@@
@@END_INLINE@@
@@END_TABLE@@
80
81
@@END_IF@@
}
82