1 #ifndef KMP_TASK_DEPS_H 2 #define KMP_TASK_DEPS_H 3 4 #include <stddef.h> /* size_t */ 5 6 // --------------------------------------------------------------------------- 7 // internal data to emulate compiler codegen 8 typedef struct DEP { 9 size_t addr; 10 size_t len; 11 unsigned char flags; 12 } dep; 13 14 typedef struct task { 15 void **shareds; 16 void *entry; 17 int part_id; 18 void *destr_thunk; 19 int priority; 20 long long device_id; 21 int f_priv; 22 } kmp_task_t; 23 typedef int (*entry_t)(int, kmp_task_t *); 24 typedef struct ID { 25 int reserved_1; 26 int flags; 27 int reserved_2; 28 int reserved_3; 29 char *psource; 30 } id; 31 32 #define TIED 1 33 34 struct kmp_depnode_list; 35 36 typedef struct kmp_base_depnode { 37 struct kmp_depnode_list *successors; 38 /* [...] more stuff down here */ 39 } kmp_base_depnode_t; 40 41 typedef struct kmp_depnode_list { 42 struct kmp_base_depnode *node; 43 struct kmp_depnode_list *next; 44 } kmp_depnode_list_t; 45 46 static id loc = {0, 2, 0, 0, ";file;func;0;0;;"}; 47 kmp_task_t *__kmpc_omp_task_alloc(id *loc, int gtid, int flags, size_t sz, 48 size_t shar, entry_t rtn); 49 int __kmpc_omp_task_with_deps(id *loc, int gtid, kmp_task_t *task, int nd, 50 dep *dep_lst, int nd_noalias, 51 dep *noalias_dep_lst); 52 kmp_depnode_list_t *__kmpc_task_get_successors(kmp_task_t *task); 53 kmp_base_depnode_t *__kmpc_task_get_depnode(kmp_task_t *task); 54 int __kmpc_global_thread_num(id *); 55 56 #endif /* KMP_TASK_DEPS_H */ 57