35 #ifndef EMBB_MTAPI_C_MTAPI_H_ 36 #define EMBB_MTAPI_C_MTAPI_H_ 246 #include <embb/base/c/core_set.h> 247 #include <embb/base/c/thread.h> 256 #define MCA_ORG_ID_PSI 0 257 #define MCA_ORG_ID_FSL 1 258 #define MCA_ORG_ID_MGC 2 259 #define MCA_ORG_ID_ADI 3 260 #define MCA_ORG_ID_SIE 4 261 #define MCA_ORG_ID_EMB 5 262 #define MCA_ORG_ID_TBD 6 268 #define MTAPI_IN const 278 typedef int mca_int_t;
279 typedef int8_t mca_int8_t;
280 typedef int16_t mca_int16_t;
281 typedef int32_t mca_int32_t;
282 typedef int64_t mca_int64_t;
284 typedef unsigned int mca_uint_t;
285 typedef uint8_t mca_uint8_t;
286 typedef uint16_t mca_uint16_t;
287 typedef uint32_t mca_uint32_t;
288 typedef uint64_t mca_uint64_t;
290 typedef unsigned char mca_boolean_t;
292 typedef unsigned int mca_domain_t;
293 typedef unsigned int mca_node_t;
294 typedef unsigned int mca_status_t;
295 typedef int mca_timeout_t;
298 typedef mca_int_t mtapi_int_t;
299 typedef mca_int8_t mtapi_int8_t;
300 typedef mca_int16_t mtapi_int16_t;
301 typedef mca_int32_t mtapi_int32_t;
302 typedef mca_int64_t mtapi_int64_t;
304 typedef mca_uint_t mtapi_uint_t;
305 typedef mca_uint8_t mtapi_uint8_t;
306 typedef mca_uint16_t mtapi_uint16_t;
307 typedef mca_uint32_t mtapi_uint32_t;
308 typedef mca_uint64_t mtapi_uint64_t;
310 typedef mca_domain_t mtapi_domain_t;
311 typedef mca_node_t mtapi_node_t;
312 typedef mca_timeout_t mtapi_timeout_t;
314 typedef mca_boolean_t mtapi_boolean_t;
315 typedef mtapi_uint_t mtapi_size_t;
359 enum mtapi_status_enum {
364 MTAPI_ERR_ATTR_READONLY,
370 MTAPI_ERR_NODE_INITFAILED,
372 MTAPI_ERR_NODE_INITIALIZED,
375 MTAPI_ERR_NODE_INVALID,
376 MTAPI_ERR_DOMAIN_INVALID,
377 MTAPI_ERR_NODE_NOTINIT,
380 MTAPI_ERR_ACTION_INVALID,
384 MTAPI_ERR_ACTION_EXISTS,
387 MTAPI_ERR_ACTION_LIMIT,
389 MTAPI_ERR_ACTION_NUM_INVALID,
393 MTAPI_ERR_ACTION_FAILED,
398 MTAPI_ERR_ACTION_CANCELLED,
402 MTAPI_ERR_ACTION_DELETED,
409 MTAPI_ERR_ACTION_DISABLED,
418 MTAPI_ERR_CONTEXT_INVALID,
420 MTAPI_ERR_CONTEXT_OUTOFCONTEXT,
428 MTAPI_ERR_TASK_INVALID,
429 MTAPI_ERR_TASK_LIMIT,
433 MTAPI_ERR_JOB_INVALID,
436 MTAPI_ERR_QUEUE_INVALID,
438 MTAPI_ERR_QUEUE_DELETED,
440 MTAPI_ERR_QUEUE_DISABLED,
442 MTAPI_ERR_QUEUE_LIMIT,
446 MTAPI_ERR_GROUP_INVALID,
447 MTAPI_ERR_GROUP_LIMIT,
449 MTAPI_GROUP_COMPLETED,
456 MTAPI_ERR_BUFFER_SIZE,
457 MTAPI_ERR_RESULT_SIZE,
460 MTAPI_ERR_WAIT_PENDING,
465 MTAPI_ERR_FUNC_NOT_IMPLEMENTED,
468 MTAPI_ERR_ARG_NOT_IMPLEMENTED,
474 MTAPI_ERR_RUNTIME_REMOTETASKS_NOTSUPPORTED,
479 MTAPI_ERR_RUNTIME_LOADBALANCING_NOTSUPPORTED,
496 typedef enum mtapi_status_enum mtapi_status_t;
503 enum mtapi_task_state_enum {
504 MTAPI_TASK_INTENTIONALLY_UNUSED,
509 MTAPI_TASK_SCHEDULED,
515 MTAPI_TASK_CANCELLED,
523 typedef enum mtapi_task_state_enum mtapi_task_state_t;
529 enum mtapi_notification_enum {
530 MTAPI_NOTIF_PREFETCH,
531 MTAPI_NOTIF_EXECUTE_NEXT
533 typedef enum mtapi_notification_enum mtapi_notification_t;
539 enum mtapi_worker_priority_type_enum {
540 MTAPI_WORKER_PRIORITY_END = 0,
541 MTAPI_WORKER_PRIORITY_DEFAULT = 1,
542 MTAPI_WORKER_PRIORITY_WORKER = 100,
543 MTAPI_WORKER_PRIORITY_WORKER_0 = MTAPI_WORKER_PRIORITY_WORKER + 0,
544 MTAPI_WORKER_PRIORITY_WORKER_1 = MTAPI_WORKER_PRIORITY_WORKER + 1,
545 MTAPI_WORKER_PRIORITY_WORKER_2 = MTAPI_WORKER_PRIORITY_WORKER + 2,
546 MTAPI_WORKER_PRIORITY_WORKER_3 = MTAPI_WORKER_PRIORITY_WORKER + 3,
547 MTAPI_WORKER_PRIORITY_WORKER_4 = MTAPI_WORKER_PRIORITY_WORKER + 4,
548 MTAPI_WORKER_PRIORITY_WORKER_5 = MTAPI_WORKER_PRIORITY_WORKER + 5,
549 MTAPI_WORKER_PRIORITY_WORKER_6 = MTAPI_WORKER_PRIORITY_WORKER + 6,
550 MTAPI_WORKER_PRIORITY_WORKER_7 = MTAPI_WORKER_PRIORITY_WORKER + 7,
551 MTAPI_WORKER_PRIORITY_WORKER_8 = MTAPI_WORKER_PRIORITY_WORKER + 8,
552 MTAPI_WORKER_PRIORITY_WORKER_9 = MTAPI_WORKER_PRIORITY_WORKER + 9,
553 MTAPI_WORKER_PRIORITY_WORKER_10 = MTAPI_WORKER_PRIORITY_WORKER + 10,
554 MTAPI_WORKER_PRIORITY_WORKER_11 = MTAPI_WORKER_PRIORITY_WORKER + 11,
555 MTAPI_WORKER_PRIORITY_WORKER_12 = MTAPI_WORKER_PRIORITY_WORKER + 12,
556 MTAPI_WORKER_PRIORITY_WORKER_13 = MTAPI_WORKER_PRIORITY_WORKER + 13,
557 MTAPI_WORKER_PRIORITY_WORKER_14 = MTAPI_WORKER_PRIORITY_WORKER + 14,
558 MTAPI_WORKER_PRIORITY_WORKER_15 = MTAPI_WORKER_PRIORITY_WORKER + 15,
559 MTAPI_WORKER_PRIORITY_WORKER_16 = MTAPI_WORKER_PRIORITY_WORKER + 16,
560 MTAPI_WORKER_PRIORITY_WORKER_17 = MTAPI_WORKER_PRIORITY_WORKER + 17,
561 MTAPI_WORKER_PRIORITY_WORKER_18 = MTAPI_WORKER_PRIORITY_WORKER + 18,
562 MTAPI_WORKER_PRIORITY_WORKER_19 = MTAPI_WORKER_PRIORITY_WORKER + 19,
563 MTAPI_WORKER_PRIORITY_WORKER_20 = MTAPI_WORKER_PRIORITY_WORKER + 20,
564 MTAPI_WORKER_PRIORITY_WORKER_21 = MTAPI_WORKER_PRIORITY_WORKER + 21,
565 MTAPI_WORKER_PRIORITY_WORKER_22 = MTAPI_WORKER_PRIORITY_WORKER + 22,
566 MTAPI_WORKER_PRIORITY_WORKER_23 = MTAPI_WORKER_PRIORITY_WORKER + 23,
567 MTAPI_WORKER_PRIORITY_WORKER_24 = MTAPI_WORKER_PRIORITY_WORKER + 24,
568 MTAPI_WORKER_PRIORITY_WORKER_25 = MTAPI_WORKER_PRIORITY_WORKER + 25,
569 MTAPI_WORKER_PRIORITY_WORKER_26 = MTAPI_WORKER_PRIORITY_WORKER + 26,
570 MTAPI_WORKER_PRIORITY_WORKER_27 = MTAPI_WORKER_PRIORITY_WORKER + 27,
571 MTAPI_WORKER_PRIORITY_WORKER_28 = MTAPI_WORKER_PRIORITY_WORKER + 28,
572 MTAPI_WORKER_PRIORITY_WORKER_29 = MTAPI_WORKER_PRIORITY_WORKER + 29,
573 MTAPI_WORKER_PRIORITY_WORKER_30 = MTAPI_WORKER_PRIORITY_WORKER + 30,
574 MTAPI_WORKER_PRIORITY_WORKER_31 = MTAPI_WORKER_PRIORITY_WORKER + 31,
575 MTAPI_WORKER_PRIORITY_WORKER_32 = MTAPI_WORKER_PRIORITY_WORKER + 32,
576 MTAPI_WORKER_PRIORITY_WORKER_33 = MTAPI_WORKER_PRIORITY_WORKER + 33,
577 MTAPI_WORKER_PRIORITY_WORKER_34 = MTAPI_WORKER_PRIORITY_WORKER + 34,
578 MTAPI_WORKER_PRIORITY_WORKER_35 = MTAPI_WORKER_PRIORITY_WORKER + 35,
579 MTAPI_WORKER_PRIORITY_WORKER_36 = MTAPI_WORKER_PRIORITY_WORKER + 36,
580 MTAPI_WORKER_PRIORITY_WORKER_37 = MTAPI_WORKER_PRIORITY_WORKER + 37,
581 MTAPI_WORKER_PRIORITY_WORKER_38 = MTAPI_WORKER_PRIORITY_WORKER + 38,
582 MTAPI_WORKER_PRIORITY_WORKER_39 = MTAPI_WORKER_PRIORITY_WORKER + 39,
583 MTAPI_WORKER_PRIORITY_WORKER_40 = MTAPI_WORKER_PRIORITY_WORKER + 40,
584 MTAPI_WORKER_PRIORITY_WORKER_41 = MTAPI_WORKER_PRIORITY_WORKER + 41,
585 MTAPI_WORKER_PRIORITY_WORKER_42 = MTAPI_WORKER_PRIORITY_WORKER + 42,
586 MTAPI_WORKER_PRIORITY_WORKER_43 = MTAPI_WORKER_PRIORITY_WORKER + 43,
587 MTAPI_WORKER_PRIORITY_WORKER_44 = MTAPI_WORKER_PRIORITY_WORKER + 44,
588 MTAPI_WORKER_PRIORITY_WORKER_45 = MTAPI_WORKER_PRIORITY_WORKER + 45,
589 MTAPI_WORKER_PRIORITY_WORKER_46 = MTAPI_WORKER_PRIORITY_WORKER + 46,
590 MTAPI_WORKER_PRIORITY_WORKER_47 = MTAPI_WORKER_PRIORITY_WORKER + 47,
591 MTAPI_WORKER_PRIORITY_WORKER_48 = MTAPI_WORKER_PRIORITY_WORKER + 48,
592 MTAPI_WORKER_PRIORITY_WORKER_49 = MTAPI_WORKER_PRIORITY_WORKER + 49,
593 MTAPI_WORKER_PRIORITY_WORKER_50 = MTAPI_WORKER_PRIORITY_WORKER + 50,
594 MTAPI_WORKER_PRIORITY_WORKER_51 = MTAPI_WORKER_PRIORITY_WORKER + 51,
595 MTAPI_WORKER_PRIORITY_WORKER_52 = MTAPI_WORKER_PRIORITY_WORKER + 52,
596 MTAPI_WORKER_PRIORITY_WORKER_53 = MTAPI_WORKER_PRIORITY_WORKER + 53,
597 MTAPI_WORKER_PRIORITY_WORKER_54 = MTAPI_WORKER_PRIORITY_WORKER + 54,
598 MTAPI_WORKER_PRIORITY_WORKER_55 = MTAPI_WORKER_PRIORITY_WORKER + 55,
599 MTAPI_WORKER_PRIORITY_WORKER_56 = MTAPI_WORKER_PRIORITY_WORKER + 56,
600 MTAPI_WORKER_PRIORITY_WORKER_57 = MTAPI_WORKER_PRIORITY_WORKER + 57,
601 MTAPI_WORKER_PRIORITY_WORKER_58 = MTAPI_WORKER_PRIORITY_WORKER + 58,
602 MTAPI_WORKER_PRIORITY_WORKER_59 = MTAPI_WORKER_PRIORITY_WORKER + 59,
603 MTAPI_WORKER_PRIORITY_WORKER_60 = MTAPI_WORKER_PRIORITY_WORKER + 60,
604 MTAPI_WORKER_PRIORITY_WORKER_61 = MTAPI_WORKER_PRIORITY_WORKER + 61,
605 MTAPI_WORKER_PRIORITY_WORKER_62 = MTAPI_WORKER_PRIORITY_WORKER + 62,
606 MTAPI_WORKER_PRIORITY_WORKER_63 = MTAPI_WORKER_PRIORITY_WORKER + 63
611 typedef enum mtapi_worker_priority_type_enum mtapi_worker_priority_type_t;
618 mtapi_worker_priority_type_t
type;
630 enum mtapi_node_attributes_enum {
631 MTAPI_NODE_CORE_AFFINITY,
635 MTAPI_NODE_MAX_TASKS,
637 MTAPI_NODE_MAX_ACTIONS,
639 MTAPI_NODE_MAX_GROUPS,
641 MTAPI_NODE_MAX_QUEUES,
643 MTAPI_NODE_QUEUE_LIMIT,
647 MTAPI_NODE_MAX_ACTIONS_PER_JOB,
649 MTAPI_NODE_MAX_PRIORITIES,
651 MTAPI_NODE_REUSE_MAIN_THREAD,
652 MTAPI_NODE_WORKER_PRIORITIES
655 #define MTAPI_NODE_CORE_AFFINITY_SIZE sizeof(embb_core_set_t) 657 #define MTAPI_NODE_NUMCORES_SIZE sizeof(mtapi_uint_t) 659 #define MTAPI_NODE_TYPE_SIZE sizeof(mtapi_uint_t) 661 #define MTAPI_NODE_MAX_TASKS_SIZE sizeof(mtapi_uint_t) 663 #define MTAPI_NODE_MAX_ACTIONS_SIZE sizeof(mtapi_uint_t) 665 #define MTAPI_NODE_MAX_GROUPS_SIZE sizeof(mtapi_uint_t) 667 #define MTAPI_NODE_MAX_QUEUES_SIZE sizeof(mtapi_uint_t) 669 #define MTAPI_NODE_QUEUE_LIMIT_SIZE sizeof(mtapi_uint_t) 671 #define MTAPI_NODE_MAX_JOBS_SIZE sizeof(mtapi_uint_t) 673 #define MTAPI_NODE_MAX_ACTIONS_PER_JOB_SIZE sizeof(mtapi_uint_t) 675 #define MTAPI_NODE_MAX_PRIORITIES_SIZE sizeof(mtapi_uint_t) 677 #define MTAPI_NODE_REUSE_MAIN_THREAD_SIZE sizeof(mtapi_boolean_t) 679 #define MTAPI_NODE_WORKER_PRIORITIES_SIZE 0 682 #define MTAPI_NODE_TYPE_SMP 1 683 #define MTAPI_NODE_TYPE_DSP 2 692 typedef void(*mtapi_task_complete_function_t)(
694 MTAPI_OUT mtapi_status_t* status);
697 enum mtapi_task_attributes_enum {
704 MTAPI_TASK_INSTANCES,
715 MTAPI_TASK_USER_DATA,
717 MTAPI_TASK_COMPLETE_FUNCTION,
719 MTAPI_TASK_PROBLEM_SIZE
723 #define MTAPI_TASK_DETACHED_SIZE sizeof(mtapi_boolean_t) 725 #define MTAPI_TASK_INSTANCES_SIZE sizeof(mtapi_uint_t) 727 #define MTAPI_TASK_PRIORITY_SIZE sizeof(mtapi_uint_t) 729 #define MTAPI_TASK_AFFINITY_SIZE sizeof(mtapi_affinity_t) 731 #define MTAPI_TASK_PROBLEM_SIZE_SIZE sizeof(mtapi_uint_t) 737 enum mtapi_action_attributes_enum {
740 MTAPI_ACTION_AFFINITY,
742 MTAPI_ACTION_DOMAIN_SHARED
746 #define MTAPI_ACTION_GLOBAL_SIZE sizeof(mtapi_boolean_t) 748 #define MTAPI_ACTION_AFFINITY_SIZE sizeof(mtapi_affinity_t) 750 #define MTAPI_ACTION_DOMAIN_SHARED_SIZE sizeof(mtapi_boolean_t) 756 enum mtapi_queue_attributes_enum {
759 MTAPI_QUEUE_PRIORITY,
766 MTAPI_QUEUE_DOMAIN_SHARED
770 #define MTAPI_QUEUE_GLOBAL_SIZE sizeof(mtapi_boolean_t) 772 #define MTAPI_QUEUE_PRIORITY_SIZE sizeof(mtapi_uint_t) 774 #define MTAPI_QUEUE_LIMIT_SIZE sizeof(mtapi_uint_t) 776 #define MTAPI_QUEUE_ORDERED_SIZE sizeof(mtapi_boolean_t) 778 #define MTAPI_QUEUE_RETAIN_SIZE sizeof(mtapi_boolean_t) 780 #define MTAPI_QUEUE_DOMAIN_SHARED_SIZE sizeof(mtapi_boolean_t) 783 #define MTAPI_ATTRIBUTE_VALUE(value) ((void*)(value)) 784 #define MTAPI_ATTRIBUTE_POINTER_AS_VALUE 0 833 mtapi_task_complete_function_t
891 #define MTAPI_DEFAULT_NODE_ATTRIBUTES MTAPI_NULL 894 #define MTAPI_DEFAULT_ACTION_ATTRIBUTES MTAPI_NULL 897 #define MTAPI_DEFAULT_TASK_ATTRIBUTES MTAPI_NULL 900 #define MTAPI_DEFAULT_QUEUE_ATTRIBUTES MTAPI_NULL 903 #define MTAPI_DEFAULT_GROUP_ATTRIBUTES MTAPI_NULL 912 typedef struct embb_mtapi_task_context_struct mtapi_task_context_t;
943 mtapi_size_t args_size,
945 mtapi_size_t result_buffer_size,
946 const void* node_local_data,
949 mtapi_size_t node_local_data_size,
950 mtapi_task_context_t * context
960 typedef mtapi_uint_t mtapi_action_id_t;
961 typedef mtapi_uint_t mtapi_job_id_t;
962 typedef mtapi_uint_t mtapi_queue_id_t;
963 typedef mtapi_uint_t mtapi_group_id_t;
964 typedef mtapi_uint_t mtapi_task_id_t;
972 mtapi_action_id_t
id;
1041 #define MTAPI_TRUE ((mtapi_boolean_t)1) 1042 #define MTAPI_FALSE ((mtapi_boolean_t)0) 1044 extern mtapi_group_hndl_t MTAPI_GROUP_NONE;
1046 #define MTAPI_NULL 0 1048 #define TEN_SECONDS 10000 1049 #define MTAPI_INFINITE -1 1050 #define MTAPI_NOWAIT 0 1052 #define MTAPI_NODE_MAX_TASKS_DEFAULT 1024 1053 #define MTAPI_NODE_MAX_ACTIONS_DEFAULT 1024 1054 #define MTAPI_NODE_MAX_GROUPS_DEFAULT 128 1055 #define MTAPI_NODE_MAX_QUEUES_DEFAULT 16 1057 #define MTAPI_NODE_QUEUE_LIMIT_DEFAULT 1024 1058 #define MTAPI_NODE_MAX_JOBS_DEFAULT 256 1059 #define MTAPI_NODE_MAX_ACTIONS_PER_JOB_DEFAULT 4 1060 #define MTAPI_NODE_MAX_PRIORITIES_DEFAULT 4 1062 #define MTAPI_JOB_ID_INVALID 0 1063 #define MTAPI_DOMAIN_ID_INVALID 0 1064 #define MTAPI_NODE_ID_INVALID 0 1066 #define MTAPI_TASK_ID_NONE 0 1067 #define MTAPI_GROUP_ID_NONE 0 1068 #define MTAPI_QUEUE_ID_NONE 0 1069 #define MTAPI_ACTION_ID_NONE 0 1114 void mtapi_nodeattr_init(
1115 MTAPI_OUT mtapi_node_attributes_t* attributes,
1117 MTAPI_OUT mtapi_status_t* status
1170 void mtapi_nodeattr_set(
1171 MTAPI_INOUT mtapi_node_attributes_t* attributes,
1173 MTAPI_IN mtapi_uint_t attribute_num,
1174 MTAPI_IN
void* attribute,
1175 MTAPI_IN mtapi_size_t attribute_size,
1179 MTAPI_OUT mtapi_status_t* status
1241 MTAPI_IN mtapi_domain_t domain_id,
1242 MTAPI_IN mtapi_node_t node_id,
1243 MTAPI_IN mtapi_node_attributes_t* attributes,
1246 MTAPI_OUT mtapi_status_t* status
1275 MTAPI_IN mtapi_node_t node,
1276 MTAPI_IN mtapi_uint_t attribute_num,
1277 MTAPI_OUT
void* attribute,
1278 MTAPI_IN mtapi_size_t attribute_size,
1279 MTAPI_OUT mtapi_status_t* status
1321 MTAPI_OUT mtapi_status_t* status
1339 MTAPI_OUT mtapi_status_t* status
1357 MTAPI_OUT mtapi_status_t* status
1415 void mtapi_actionattr_init(
1416 MTAPI_OUT mtapi_action_attributes_t* attributes,
1418 MTAPI_OUT mtapi_status_t* status
1484 void mtapi_actionattr_set(
1485 MTAPI_INOUT mtapi_action_attributes_t* attributes,
1487 MTAPI_IN mtapi_uint_t attribute_num,
1488 MTAPI_IN
void* attribute,
1489 MTAPI_IN mtapi_size_t attribute_size,
1493 MTAPI_OUT mtapi_status_t* status
1575 MTAPI_IN mtapi_job_id_t job_id,
1578 MTAPI_IN
void* node_local_data,
1579 MTAPI_IN mtapi_size_t node_local_data_size,
1581 MTAPI_IN mtapi_action_attributes_t* attributes,
1583 MTAPI_OUT mtapi_status_t* status
1611 MTAPI_IN mtapi_action_hndl_t action,
1612 MTAPI_IN mtapi_uint_t attribute_num,
1613 MTAPI_IN
void* attribute,
1614 MTAPI_IN mtapi_size_t attribute_size,
1618 MTAPI_OUT mtapi_status_t* status
1648 MTAPI_IN mtapi_action_hndl_t action,
1649 MTAPI_IN mtapi_uint_t attribute_num,
1650 MTAPI_OUT
void* attribute,
1651 MTAPI_IN mtapi_size_t attribute_size,
1652 MTAPI_OUT mtapi_status_t* status
1705 MTAPI_IN mtapi_action_hndl_t action,
1706 MTAPI_IN mtapi_timeout_t timeout,
1708 MTAPI_OUT mtapi_status_t* status
1754 MTAPI_IN mtapi_action_hndl_t action,
1755 MTAPI_IN mtapi_timeout_t timeout,
1757 MTAPI_OUT mtapi_status_t* status
1778 MTAPI_IN mtapi_action_hndl_t action,
1779 MTAPI_OUT mtapi_status_t* status
1854 MTAPI_INOUT mtapi_task_context_t* task_context,
1856 MTAPI_IN mtapi_status_t error_code,
1857 MTAPI_OUT mtapi_status_t* status
1902 MTAPI_IN mtapi_task_context_t* task_context,
1904 MTAPI_IN mtapi_notification_t notification,
1906 MTAPI_IN
void* data,
1907 MTAPI_IN mtapi_size_t data_size,
1908 MTAPI_OUT mtapi_status_t* status
1952 MTAPI_IN mtapi_task_context_t* task_context,
1954 MTAPI_OUT mtapi_status_t* status
1995 MTAPI_IN mtapi_task_context_t* task_context,
1997 MTAPI_OUT mtapi_status_t* status
2031 MTAPI_IN mtapi_task_context_t* task_context,
2033 MTAPI_OUT mtapi_status_t* status
2070 MTAPI_IN mtapi_task_context_t* task_context,
2072 MTAPI_OUT mtapi_status_t* status
2125 MTAPI_OUT mtapi_affinity_t* mask,
2126 MTAPI_IN mtapi_boolean_t affinity,
2127 MTAPI_OUT mtapi_status_t* status
2161 MTAPI_INOUT mtapi_affinity_t* mask,
2163 MTAPI_IN mtapi_uint_t core_num,
2164 MTAPI_IN mtapi_boolean_t affinity,
2165 MTAPI_OUT mtapi_status_t* status
2196 MTAPI_OUT mtapi_affinity_t* mask,
2197 MTAPI_IN mtapi_uint_t core_num,
2198 MTAPI_OUT mtapi_status_t* status
2256 void mtapi_queueattr_init(
2257 MTAPI_OUT mtapi_queue_attributes_t* attributes,
2259 MTAPI_OUT mtapi_status_t* status
2345 void mtapi_queueattr_set(
2346 MTAPI_INOUT mtapi_queue_attributes_t* attributes,
2348 MTAPI_IN mtapi_uint_t attribute_num,
2349 MTAPI_IN
void* attribute,
2350 MTAPI_IN mtapi_size_t attribute_size,
2354 MTAPI_OUT mtapi_status_t* status
2409 MTAPI_IN mtapi_queue_id_t queue_id,
2410 MTAPI_IN mtapi_job_hndl_t job,
2411 MTAPI_IN mtapi_queue_attributes_t* attributes,
2413 MTAPI_OUT mtapi_status_t* status
2443 MTAPI_IN mtapi_queue_hndl_t queue,
2444 MTAPI_IN mtapi_uint_t attribute_num,
2445 MTAPI_IN
void* attribute,
2446 MTAPI_IN mtapi_size_t attribute_size,
2450 MTAPI_OUT mtapi_status_t* status
2483 MTAPI_IN mtapi_queue_hndl_t queue,
2484 MTAPI_IN mtapi_uint_t attribute_num,
2485 MTAPI_OUT
void* attribute,
2486 MTAPI_IN mtapi_size_t attribute_size,
2487 MTAPI_OUT mtapi_status_t* status
2534 MTAPI_IN mtapi_queue_id_t queue_id,
2535 MTAPI_IN mtapi_domain_t domain_id,
2536 MTAPI_OUT mtapi_status_t* status
2592 MTAPI_IN mtapi_queue_hndl_t queue,
2593 MTAPI_IN mtapi_timeout_t timeout,
2595 MTAPI_OUT mtapi_status_t* status
2647 MTAPI_IN mtapi_queue_hndl_t queue,
2648 MTAPI_IN mtapi_timeout_t timeout,
2650 MTAPI_OUT mtapi_status_t* status
2669 MTAPI_IN mtapi_queue_hndl_t queue,
2670 MTAPI_OUT mtapi_status_t* status
2715 MTAPI_IN mtapi_job_id_t job_id,
2716 MTAPI_IN mtapi_domain_t domain_id,
2717 MTAPI_OUT mtapi_status_t* status
2773 void mtapi_taskattr_init(
2774 MTAPI_OUT mtapi_task_attributes_t* attributes,
2776 MTAPI_OUT mtapi_status_t* status
2871 void mtapi_taskattr_set(
2872 MTAPI_INOUT mtapi_task_attributes_t* attributes,
2874 MTAPI_IN mtapi_uint_t attribute_num,
2875 MTAPI_IN
void* attribute,
2876 MTAPI_IN mtapi_size_t attribute_size,
2880 MTAPI_OUT mtapi_status_t* status
2936 MTAPI_IN mtapi_task_id_t task_id,
2937 MTAPI_IN mtapi_job_hndl_t job,
2938 MTAPI_IN
void* arguments,
2939 MTAPI_IN mtapi_size_t arguments_size,
2940 MTAPI_OUT
void* result_buffer,
2941 MTAPI_IN mtapi_size_t result_size,
2942 MTAPI_IN mtapi_task_attributes_t* attributes,
2944 MTAPI_IN mtapi_group_hndl_t group,
2946 MTAPI_OUT mtapi_status_t* status
3000 MTAPI_IN mtapi_task_id_t task_id,
3001 MTAPI_IN mtapi_queue_hndl_t queue,
3002 MTAPI_IN
void* arguments,
3003 MTAPI_IN mtapi_size_t arguments_size,
3004 MTAPI_OUT
void* result_buffer,
3005 MTAPI_IN mtapi_size_t result_size,
3006 MTAPI_IN mtapi_task_attributes_t* attributes,
3008 MTAPI_IN mtapi_group_hndl_t group,
3010 MTAPI_OUT mtapi_status_t* status
3050 MTAPI_IN mtapi_uint_t attribute_num,
3051 MTAPI_OUT
void* attribute,
3052 MTAPI_IN mtapi_size_t attribute_size,
3053 MTAPI_OUT mtapi_status_t* status
3087 MTAPI_OUT mtapi_status_t* status
3193 MTAPI_IN mtapi_timeout_t timeout,
3195 MTAPI_OUT mtapi_status_t* status
3241 void mtapi_groupattr_init(
3242 MTAPI_OUT mtapi_group_attributes_t* attributes,
3244 MTAPI_OUT mtapi_status_t* status
3281 void mtapi_groupattr_set(
3282 MTAPI_INOUT mtapi_group_attributes_t* attributes,
3284 MTAPI_IN mtapi_uint_t attribute_num,
3285 MTAPI_IN
void* attribute,
3286 MTAPI_IN mtapi_size_t attribute_size,
3290 MTAPI_OUT mtapi_status_t* status
3330 MTAPI_IN mtapi_group_id_t group_id,
3331 MTAPI_IN mtapi_group_attributes_t* attributes,
3333 MTAPI_OUT mtapi_status_t* status
3361 MTAPI_IN mtapi_group_hndl_t group,
3362 MTAPI_IN mtapi_uint_t attribute_num,
3363 MTAPI_OUT
void* attribute,
3364 MTAPI_IN mtapi_size_t attribute_size,
3368 MTAPI_OUT mtapi_status_t* status
3400 MTAPI_IN mtapi_group_hndl_t group,
3401 MTAPI_IN mtapi_uint_t attribute_num,
3402 MTAPI_OUT
void* attribute,
3403 MTAPI_IN mtapi_size_t attribute_size,
3404 MTAPI_OUT mtapi_status_t* status
3510 MTAPI_IN mtapi_group_hndl_t group,
3511 MTAPI_IN mtapi_timeout_t timeout,
3513 MTAPI_OUT mtapi_status_t* status
3625 MTAPI_IN mtapi_group_hndl_t group,
3626 MTAPI_OUT
void** result,
3628 MTAPI_IN mtapi_timeout_t timeout,
3630 MTAPI_OUT mtapi_status_t* status
3652 MTAPI_IN mtapi_group_hndl_t group,
3653 MTAPI_OUT mtapi_status_t* status
3673 #endif // EMBB_MTAPI_C_MTAPI_H_ Group handle.
Definition: mtapi.h:1015
opaque_type embb_core_set_t
Opaque type representing a set of processor cores.
Definition: core_set.h:59
mtapi_uint_t mtapi_context_corenum_get(const mtapi_task_context_t *task_context, mtapi_status_t *status)
This function can be called from an action function to query the current core number for debugging pu...
mtapi_uint_t organization_id
Implementation vendor or organization ID.
Definition: mtapi.h:326
mtapi_uint_t num_instances
stores MTAPI_TASK_INSTANCES
Definition: mtapi.h:829
mtapi_uint_t mtapi_context_numinst_get(const mtapi_task_context_t *task_context, mtapi_status_t *status)
This function can be called from an action function to query the total number of parallel task instan...
Action handle.
Definition: mtapi.h:970
mtapi_uint_t priority
stores MTAPI_TASK_PRIORITY
Definition: mtapi.h:830
void mtapi_node_get_attribute(const mtapi_node_t node, const mtapi_uint_t attribute_num, void *attribute, const mtapi_size_t attribute_size, mtapi_status_t *status)
Given a node and attribute number, returns a copy of the corresponding attribute value in *attribute...
mtapi_boolean_t reuse_main_thread
stores MTAPI_NODE_REUSE_MAIN_THREAD
Definition: mtapi.h:806
mtapi_boolean_t domain_shared
stores MTAPI_QUEUE_DOMAIN_SHARED
Definition: mtapi.h:849
mtapi_worker_priority_type_t type
default or specific worker
Definition: mtapi.h:618
void mtapi_task_wait(const mtapi_task_hndl_t task, const mtapi_timeout_t timeout, mtapi_status_t *status)
This function waits for the completion of the specified task.
void mtapi_queue_set_attribute(const mtapi_queue_hndl_t queue, const mtapi_uint_t attribute_num, const void *attribute, const mtapi_size_t attribute_size, mtapi_status_t *status)
Changes the attribute value that corresponds to the given attribute_num for the specified queue...
mtapi_uint_t mtapi_context_instnum_get(const mtapi_task_context_t *task_context, mtapi_status_t *status)
This function can be called from an action function to query the instance number of the associated ta...
void mtapi_queue_enable(const mtapi_queue_hndl_t queue, mtapi_status_t *status)
This function may be called from any node with a valid queue handle to re-enable a queue previously d...
embb_core_set_t core_affinity
stores MTAPI_NODE_CORE_AFFINITY
Definition: mtapi.h:794
mtapi_boolean_t retain
stores MTAPI_QUEUE_RETAIN
Definition: mtapi.h:848
Group attributes.
Definition: mtapi.h:856
mtapi_uint_t mtapi_version
The three last (rightmost) hex digits are the minor number, and those left of the minor number are th...
Definition: mtapi.h:322
mtapi_uint64_t mtapi_affinity_t
Core affinity type.
Definition: mtapi.h:350
mtapi_action_id_t id
pool index of this handle
Definition: mtapi.h:972
void mtapi_initialize(const mtapi_domain_t domain_id, const mtapi_node_t node_id, const mtapi_node_attributes_t *attributes, mtapi_info_t *mtapi_info, mtapi_status_t *status)
Initializes the MTAPI environment on a given MTAPI node in a given MTAPI domain.
mtapi_queue_hndl_t mtapi_queue_create(const mtapi_queue_id_t queue_id, const mtapi_job_hndl_t job, const mtapi_queue_attributes_t *attributes, mtapi_status_t *status)
This function creates a software queue object and associates it with the specified job...
void mtapi_task_get_attribute(const mtapi_task_hndl_t task, const mtapi_uint_t attribute_num, void *attribute, const mtapi_size_t attribute_size, mtapi_status_t *status)
Returns a copy of the attribute value that corresponds to the given attribute_num for the specified t...
void mtapi_group_set_attribute(const mtapi_group_hndl_t group, const mtapi_uint_t attribute_num, void *attribute, const mtapi_size_t attribute_size, mtapi_status_t *status)
Changes the value of the attribute that corresponds to the given attribute_num for the specified task...
Queue handle.
Definition: mtapi.h:1000
Queue attributes.
Definition: mtapi.h:843
void mtapi_queue_disable(const mtapi_queue_hndl_t queue, const mtapi_timeout_t timeout, mtapi_status_t *status)
This function disables the specified queue in such a way that it can be resumed later.
void mtapi_context_runtime_notify(const mtapi_task_context_t *task_context, const mtapi_notification_t notification, const void *data, const mtapi_size_t data_size, mtapi_status_t *status)
This function can be called from an action function to notify the runtime system. ...
mtapi_uint_t max_actions_per_job
stores MTAPI_NODE_MAX_ACTIONS_PER_JOB
Definition: mtapi.h:803
void mtapi_group_get_attribute(const mtapi_group_hndl_t group, const mtapi_uint_t attribute_num, void *attribute, const mtapi_size_t attribute_size, mtapi_status_t *status)
Returns the attribute value that corresponds to the given attribute_num for this task group...
void mtapi_queue_delete(const mtapi_queue_hndl_t queue, const mtapi_timeout_t timeout, mtapi_status_t *status)
This function deletes the specified software queue.
void mtapi_group_wait_all(const mtapi_group_hndl_t group, const mtapi_timeout_t timeout, mtapi_status_t *status)
This function waits for the completion of a task group.
mtapi_queue_hndl_t mtapi_queue_get(const mtapi_queue_id_t queue_id, const mtapi_domain_t domain_id, mtapi_status_t *status)
This function converts a domain-wide queue_id into a node-local queue handle.
mtapi_uint_t tag
version of this handle
Definition: mtapi.h:1001
mtapi_task_state_t mtapi_context_taskstate_get(const mtapi_task_context_t *task_context, mtapi_status_t *status)
An action function may call this function to obtain the state of the task that is associated with the...
mtapi_boolean_t global
stores MTAPI_ACTION_GLOBAL
Definition: mtapi.h:818
mtapi_uint_t hardware_concurrency
Number of CPU cores available.
Definition: mtapi.h:336
mtapi_uint_t tag
version of this handle
Definition: mtapi.h:986
Action attributes.
Definition: mtapi.h:817
mtapi_uint_t max_tasks
stores MTAPI_NODE_MAX_TASKS
Definition: mtapi.h:797
mtapi_uint_t type
stores MTAPI_NODE_TYPE
Definition: mtapi.h:796
mtapi_queue_id_t id
pool index of this handle
Definition: mtapi.h:1002
mtapi_domain_t mtapi_domain_id_get(mtapi_status_t *status)
Returns the domain id associated with the local node.
mtapi_group_hndl_t mtapi_group_create(const mtapi_group_id_t group_id, const mtapi_group_attributes_t *attributes, mtapi_status_t *status)
This function creates a task group and returns a handle to the group.
mtapi_uint_t tag
version of this handle
Definition: mtapi.h:1016
mtapi_uint_t tag
version of this handle
Definition: mtapi.h:1031
mtapi_affinity_t affinity
stores MTAPI_ACTION_AFFINITY
Definition: mtapi.h:819
mtapi_action_hndl_t mtapi_action_create(const mtapi_job_id_t job_id, const mtapi_action_function_t function, const void *node_local_data, const mtapi_size_t node_local_data_size, const mtapi_action_attributes_t *attributes, mtapi_status_t *status)
This function creates a software action (hardware actions are considered to be pre-existent and do no...
mtapi_worker_priority_entry_t * worker_priorities
stores MTAPI_NODE_WORKER_PRIORITIES
Definition: mtapi.h:808
mtapi_uint_t max_queues
stores MTAPI_NODE_MAX_QUEUES
Definition: mtapi.h:800
Job handle.
Definition: mtapi.h:985
mtapi_boolean_t mtapi_affinity_get(mtapi_affinity_t *mask, const mtapi_uint_t core_num, mtapi_status_t *status)
Returns the affinity that corresponds to the given core_num for this affinity mask.
void mtapi_action_get_attribute(const mtapi_action_hndl_t action, const mtapi_uint_t attribute_num, void *attribute, const mtapi_size_t attribute_size, mtapi_status_t *status)
Returns the attribute value that corresponds to the given attribute_num for this action.
mtapi_boolean_t ordered
stores MTAPI_QUEUE_ORDERED
Definition: mtapi.h:847
mtapi_uint_t queue_limit
stores MTAPI_NODE_QUEUE_LIMIT
Definition: mtapi.h:801
void mtapi_affinity_set(mtapi_affinity_t *mask, const mtapi_uint_t core_num, const mtapi_boolean_t affinity, mtapi_status_t *status)
This function is used to change the default values of an affinity mask object.
mtapi_affinity_t affinity
stores MTAPI_TASK_AFFINITY
Definition: mtapi.h:831
mtapi_task_hndl_t mtapi_task_start(const mtapi_task_id_t task_id, const mtapi_job_hndl_t job, const void *arguments, const mtapi_size_t arguments_size, void *result_buffer, const mtapi_size_t result_size, const mtapi_task_attributes_t *attributes, const mtapi_group_hndl_t group, mtapi_status_t *status)
This function schedules a task for execution.
mtapi_uint_t implementation_version
The three last (rightmost) hex digits are the minor number, and those left of the minor number are th...
Definition: mtapi.h:328
void mtapi_finalize(mtapi_status_t *status)
Finalizes the MTAPI environment on a given MTAPI node and domain.
void mtapi_context_status_set(mtapi_task_context_t *task_context, const mtapi_status_t error_code, mtapi_status_t *status)
This function can be called from an action function to set the status that can be obtained by a subse...
mtapi_boolean_t global
stores MTAPI_QUEUE_GLOBAL
Definition: mtapi.h:844
mtapi_boolean_t is_detached
stores MTAPI_TASK_DETACHED
Definition: mtapi.h:828
mtapi_uint_t number_of_nodes
Number of nodes allowed by the implementation.
Definition: mtapi.h:334
mtapi_uint_t num_cores
stores MTAPI_NODE_NUMCORES
Definition: mtapi.h:795
mtapi_job_id_t id
pool index of this handle
Definition: mtapi.h:987
void mtapi_action_enable(const mtapi_action_hndl_t action, mtapi_status_t *status)
This function enables a previously disabled action.
mtapi_uint_t number_of_domains
Number of domains allowed by the implementation.
Definition: mtapi.h:332
Task attributes.
Definition: mtapi.h:827
mtapi_uint_t limit
stores MTAPI_QUEUE_LIMIT
Definition: mtapi.h:846
mtapi_boolean_t domain_shared
stores MTAPI_ACTION_DOMAIN_SHARED
Definition: mtapi.h:820
mtapi_uint_t used_memory
Bytes of memory used by MTAPI.
Definition: mtapi.h:337
mtapi_node_t mtapi_node_id_get(mtapi_status_t *status)
Returns the node id associated with the local node and domain.
struct mtapi_info_struct mtapi_info_t
Info type.
Definition: mtapi.h:344
void mtapi_affinity_init(mtapi_affinity_t *mask, const mtapi_boolean_t affinity, mtapi_status_t *status)
This function initializes an affinity mask object.
Node attributes.
Definition: mtapi.h:793
mtapi_uint_t max_actions
stores MTAPI_NODE_MAX_ACTIONS
Definition: mtapi.h:798
Task handle.
Definition: mtapi.h:1030
embb_thread_priority_t
Thread priority type.
Definition: thread.h:62
mtapi_uint_t max_priorities
stores MTAPI_NODE_MAX_PRIORITIES
Definition: mtapi.h:805
void mtapi_queue_get_attribute(const mtapi_queue_hndl_t queue, const mtapi_uint_t attribute_num, void *attribute, const mtapi_size_t attribute_size, mtapi_status_t *status)
Returns the attribute value that corresponds to the given attribute_num for the specified queue...
mtapi_uint_t problem_size
stores MTAPI_TASK_PROBLEM_SIZE
Definition: mtapi.h:836
void mtapi_group_delete(const mtapi_group_hndl_t group, mtapi_status_t *status)
This function deletes a task group.
mtapi_task_id_t id
pool index of this handle
Definition: mtapi.h:1032
mtapi_group_id_t id
pool index of this handle
Definition: mtapi.h:1017
mtapi_task_hndl_t mtapi_task_enqueue(const mtapi_task_id_t task_id, const mtapi_queue_hndl_t queue, const void *arguments, const mtapi_size_t arguments_size, void *result_buffer, const mtapi_size_t result_size, const mtapi_task_attributes_t *attributes, const mtapi_group_hndl_t group, mtapi_status_t *status)
This function schedules a task for execution using a queue.
mtapi_job_hndl_t mtapi_job_get(const mtapi_job_id_t job_id, const mtapi_domain_t domain_id, mtapi_status_t *status)
Given a job_id, this function returns the MTAPI handle for referencing the actions implementing the j...
Info structure.
Definition: mtapi.h:321
void mtapi_action_set_attribute(const mtapi_action_hndl_t action, const mtapi_uint_t attribute_num, const void *attribute, const mtapi_size_t attribute_size, mtapi_status_t *status)
This function changes the value of the attribute that corresponds to the given attribute_num for this...
mtapi_task_complete_function_t complete_func
stores MTAPI_TASK_COMPLETE_FUNCTION
Definition: mtapi.h:834
void mtapi_action_disable(const mtapi_action_hndl_t action, const mtapi_timeout_t timeout, mtapi_status_t *status)
This function disables an action.
mtapi_int_t some_value
just a placeholder
Definition: mtapi.h:857
void mtapi_group_wait_any(const mtapi_group_hndl_t group, void **result, const mtapi_timeout_t timeout, mtapi_status_t *status)
This function waits for the completion of any task in a task group.
void(* mtapi_action_function_t)(const void *args, mtapi_size_t args_size, void *result_buffer, mtapi_size_t result_buffer_size, const void *node_local_data, mtapi_size_t node_local_data_size, mtapi_task_context_t *context)
An action function is the executable software function that implements an action. ...
Definition: mtapi.h:941
mtapi_uint_t priority
stores MTAPI_QUEUE_PRIORITY
Definition: mtapi.h:845
void * user_data
stores MTAPI_TASK_USER_DATA
Definition: mtapi.h:832
Describes the default priority of all workers or the priority of a specific worker.
Definition: mtapi.h:617
mtapi_uint_t tag
version of this handle
Definition: mtapi.h:971
embb_thread_priority_t priority
priority to set
Definition: mtapi.h:619
void mtapi_task_cancel(const mtapi_task_hndl_t task, mtapi_status_t *status)
This function cancels a task and sets the task status to MTAPI_TASK_CANCELLED.
mtapi_uint_t max_jobs
stores MTAPI_NODE_MAX_JOBS
Definition: mtapi.h:802
void mtapi_action_delete(const mtapi_action_hndl_t action, const mtapi_timeout_t timeout, mtapi_status_t *status)
This function deletes a software action (Hardware actions exist perpetually and cannot be deleted)...
mtapi_uint_t max_groups
stores MTAPI_NODE_MAX_GROUPS
Definition: mtapi.h:799