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