Embedded Multicore Building Blocks V1.0.0
mtapi_ext.h
1 /*
2  * Copyright (c) 2014-2017, Siemens AG. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  *
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
18  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24  * POSSIBILITY OF SUCH DAMAGE.
25  */
26 
27 #ifndef EMBB_MTAPI_C_MTAPI_EXT_H_
28 #define EMBB_MTAPI_C_MTAPI_EXT_H_
29 
30 
31 #include <embb/mtapi/c/mtapi.h>
32 
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
61  MTAPI_IN mtapi_task_hndl_t task,
62  MTAPI_OUT mtapi_status_t* status
63 );
64 
74  MTAPI_IN mtapi_task_hndl_t task,
75  MTAPI_OUT mtapi_status_t* status
76 );
77 
87  MTAPI_IN mtapi_action_hndl_t action,
88  MTAPI_OUT mtapi_status_t* status
89 );
90 
153  MTAPI_IN mtapi_job_id_t job_id,
154  MTAPI_IN mtapi_ext_plugin_task_start_function_t task_start_function,
156  MTAPI_IN mtapi_ext_plugin_task_cancel_function_t task_cancel_function,
159  action_finalize_function,
160  MTAPI_IN void* plugin_data,
162  MTAPI_IN void* node_local_data,
164  MTAPI_IN mtapi_size_t node_local_data_size,
166  MTAPI_IN mtapi_action_attributes_t* attributes,
168  MTAPI_OUT mtapi_status_t* status
170 );
171 
173 typedef mtapi_uint_t(*mtapi_ext_problem_size_function_t)(
174  MTAPI_IN mtapi_task_hndl_t task);
175 
177 enum mtapi_ext_job_attributes_enum {
178  MTAPI_JOB_PROBLEM_SIZE_FUNCTION,
181  MTAPI_JOB_DEFAULT_PROBLEM_SIZE
184 };
186 #define MTAPI_JOB_DEFAULT_PROBLEM_SIZE_SIZE sizeof(mtapi_uint_t)
187 
193  mtapi_ext_problem_size_function_t
196  mtapi_uint_t default_problem_size;
198 };
199 
205 
251  MTAPI_IN mtapi_job_hndl_t job,
252  MTAPI_IN mtapi_uint_t attribute_num,
253  MTAPI_IN void* attribute,
254  MTAPI_IN mtapi_size_t attribute_size,
258  MTAPI_OUT mtapi_status_t* status
260  );
261 
267 void mtapi_ext_yield();
268 
269 #ifdef __cplusplus
270 }
271 #endif
272 
273 
274 #endif // EMBB_MTAPI_C_MTAPI_EXT_H_
mtapi_action_hndl_t mtapi_ext_plugin_action_create(MTAPI_IN mtapi_job_id_t job_id, MTAPI_IN mtapi_ext_plugin_task_start_function_t task_start_function, MTAPI_IN mtapi_ext_plugin_task_cancel_function_t task_cancel_function, MTAPI_IN mtapi_ext_plugin_action_finalize_function_t action_finalize_function, MTAPI_IN void *plugin_data, MTAPI_IN void *node_local_data, MTAPI_IN mtapi_size_t node_local_data_size, MTAPI_IN mtapi_action_attributes_t *attributes, MTAPI_OUT mtapi_status_t *status)
This function creates a plugin action.
void mtapi_ext_yield()
This function yields execution to the MTAPI scheduler for at most one task.
struct mtapi_action_attributes_struct mtapi_action_attributes_t
Action attributes type.
Definition: mtapi.h:870
void(* mtapi_ext_plugin_task_start_function_t)(MTAPI_IN mtapi_task_hndl_t task, MTAPI_OUT mtapi_status_t *status)
Represents a callback function that is called when a plugin action is about to start a plugin task...
Definition: mtapi_ext.h:60
void mtapi_ext_job_set_attribute(MTAPI_IN mtapi_job_hndl_t job, MTAPI_IN mtapi_uint_t attribute_num, MTAPI_IN void *attribute, MTAPI_IN mtapi_size_t attribute_size, MTAPI_OUT mtapi_status_t *status)
This function changes the value of the attribute that corresponds to the given attribute_num for this...
struct mtapi_task_hndl_struct mtapi_task_hndl_t
Task handle type.
Definition: mtapi.h:689
struct mtapi_action_hndl_struct mtapi_action_hndl_t
Action handle type.
Definition: mtapi.h:979
mtapi_ext_problem_size_function_t problem_size_func
stores MTAPI_JOB_PROBLEM_SIZE_FUNCTION
Definition: mtapi_ext.h:194
Job attributes.
Definition: mtapi_ext.h:192
mtapi_uint_t default_problem_size
stores MTAPI_JOB_DEFAULT_PROBLEM_SIZE_SIZE
Definition: mtapi_ext.h:196
void(* mtapi_ext_plugin_task_cancel_function_t)(MTAPI_IN mtapi_task_hndl_t task, MTAPI_OUT mtapi_status_t *status)
Represents a callback function that is called when a plugin task is about to be canceled.
Definition: mtapi_ext.h:73
void(* mtapi_ext_plugin_action_finalize_function_t)(MTAPI_IN mtapi_action_hndl_t action, MTAPI_OUT mtapi_status_t *status)
Represents a callback function that is called when a plugin action is about to be finalized...
Definition: mtapi_ext.h:86