瀏覽代碼

- add some more native Fortran wrappers for sched_ctx routines

Olivier Aumage 8 年之前
父節點
當前提交
4f7c375cbd
共有 1 個文件被更改,包括 384 次插入1 次删除
  1. 384 1
      include/fstarpu_mod.f90

+ 384 - 1
include/fstarpu_mod.f90

@@ -1621,7 +1621,28 @@ module fstarpu_mod
                 end function fstarpu_sched_ctx_create
 
                 ! unsigned starpu_sched_ctx_create_inside_interval(const char *policy_name, const char *sched_ctx_name, int min_ncpus, int max_ncpus, int min_ngpus, int max_ngpus, unsigned allow_overlap);
+                function fstarpu_sched_ctx_create_inside_interval(policy_name, sched_ctx_name, &
+                                min_ncpus, max_ncpus, min_ngpus, max_ngpus, allow_overlap)     &
+                                bind(C,name="starpu_sched_ctx_create_inside_interval")
+                        use iso_c_binding, only: c_int, c_char
+                        integer(c_int) :: fstarpu_sched_ctx_create_inside_interval
+                        character(c_char), intent(in) :: policy_name
+                        character(c_char), intent(in) :: sched_ctx_name
+                        integer(c_int), value, intent(in) :: min_ncpus
+                        integer(c_int), value, intent(in) :: max_ncpus
+                        integer(c_int), value, intent(in) :: min_ngpus
+                        integer(c_int), value, intent(in) :: max_ngpus
+                        integer(c_int), value, intent(in) :: allow_overlap
+                end function fstarpu_sched_ctx_create_inside_interval
+
                 ! void starpu_sched_ctx_register_close_callback(unsigned sched_ctx_id, void (*close_callback)(unsigned sched_ctx_id, void* args), void *args);
+                subroutine fstarpu_sched_ctx_register_close_callback (sched_ctx_id, close_callback, args) &
+                                bind(c,name="starpu_sched_ctx_register_close_callback")
+                        use iso_c_binding, only: c_ptr, c_funptr, c_int
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        type(c_funptr), value, intent(in) :: close_callback
+                        type(c_ptr), value, intent(in) :: args
+                end subroutine fstarpu_sched_ctx_register_close_callback
 
                 ! void starpu_sched_ctx_add_workers(int *workerids_ctx, int nworkers_ctx, unsigned sched_ctx_id);
                 subroutine fstarpu_sched_ctx_add_workers(workerids,nworkers,ctx) bind(C,name="starpu_sched_ctx_add_workers")
@@ -1684,6 +1705,369 @@ module fstarpu_mod
                         integer(c_int) :: fstarpu_sched_ctx_get_context
                 end function fstarpu_sched_ctx_get_context
 
+                ! void starpu_sched_ctx_stop_task_submission(void);
+                subroutine fstarpu_sched_ctx_stop_task_submission () bind(c,name="starpu_sched_ctx_stop_task_submission")
+                        use iso_c_binding
+                end subroutine fstarpu_sched_ctx_stop_task_submission
+
+                ! void starpu_sched_ctx_finished_submit(unsigned sched_ctx_id);
+                subroutine fstarpu_sched_ctx_finished_submit (sched_ctx_id) bind(c,name="starpu_sched_ctx_finished_submit")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end subroutine fstarpu_sched_ctx_finished_submit
+
+                ! unsigned starpu_sched_ctx_get_workers_list(unsigned sched_ctx_id, int **workerids);
+
+                ! unsigned starpu_sched_ctx_get_nworkers(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_get_nworkers (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_get_nworkers")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_get_nworkers
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_get_nworkers
+
+                ! unsigned starpu_sched_ctx_get_nshared_workers(unsigned sched_ctx_id, unsigned sched_ctx_id2);
+                function fstarpu_sched_ctx_get_nshared_workers (sched_ctx_id, sched_ctx_id2) &
+                                bind(c,name="starpu_sched_ctx_get_nshared_workers")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_get_nshared_workers
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        integer(c_int), value, intent(in) :: sched_ctx_id2
+                end function fstarpu_sched_ctx_get_nshared_workers
+
+                ! unsigned starpu_sched_ctx_contains_worker(int workerid, unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_contains_worker (workerid, sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_contains_worker")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_contains_worker
+                        integer(c_int), value, intent(in) :: workerid
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_contains_worker
+
+                ! unsigned starpu_sched_ctx_contains_type_of_worker(enum starpu_worker_archtype arch, unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_contains_type_of_worker (arch, sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_contains_type_of_worker")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_contains_type_of_worker
+                        integer(c_int), value, intent(in) :: arch
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_contains_type_of_worker
+
+                ! unsigned starpu_sched_ctx_worker_get_id(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_worker_get_id (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_worker_get_id")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_worker_get_id
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_worker_get_id
+
+                ! unsigned starpu_sched_ctx_get_ctx_for_task(struct starpu_task *task);
+                function fstarpu_sched_ctx_get_ctx_for_task (task) &
+                                bind(c,name="starpu_sched_ctx_get_ctx_for_task")
+                        use iso_c_binding, only: c_int, c_ptr
+                        integer(c_int) :: fstarpu_sched_ctx_get_ctx_for_task
+                        type(c_ptr), value, intent(in) :: task
+                end function fstarpu_sched_ctx_get_ctx_for_task
+
+                ! unsigned starpu_sched_ctx_overlapping_ctxs_on_worker(int workerid);
+                function fstarpu_sched_ctx_overlapping_ctxs_on_worker (workerid) &
+                                bind(c,name="starpu_sched_ctx_overlapping_ctxs_on_worker")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_overlapping_ctxs_on_worker
+                        integer(c_int), value, intent(in) :: workerid
+                end function fstarpu_sched_ctx_overlapping_ctxs_on_worker
+
+                ! int starpu_sched_get_min_priority(void);
+                function fstarpu_sched_get_min_priority () &
+                                bind(c,name="starpu_sched_get_min_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_get_min_priority
+                end function fstarpu_sched_get_min_priority
+
+                ! int starpu_sched_get_max_priority(void);
+                function fstarpu_sched_get_max_priority () &
+                                bind(c,name="starpu_sched_get_max_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_get_max_priority
+                end function fstarpu_sched_get_max_priority
+
+                ! int starpu_sched_set_min_priority(int min_prio);
+                function fstarpu_sched_set_min_priority (min_prio) &
+                                bind(c,name="starpu_sched_set_min_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_set_min_priority
+                        integer(c_int), value, intent(in) :: min_prio
+                end function fstarpu_sched_set_min_priority
+
+                ! int starpu_sched_set_max_priority(int max_prio);
+                function fstarpu_sched_set_max_priority (max_prio) &
+                                bind(c,name="starpu_sched_set_max_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_set_max_priority
+                        integer(c_int), value, intent(in) :: max_prio
+                end function fstarpu_sched_set_max_priority
+
+                ! int starpu_sched_ctx_get_min_priority(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_get_min_priority (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_get_min_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_get_min_priority
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_get_min_priority
+
+                ! int starpu_sched_ctx_get_max_priority(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_get_max_priority (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_get_max_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_get_max_priority
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_get_max_priority
+
+                ! int starpu_sched_ctx_set_min_priority(unsigned sched_ctx_id, int min_prio);
+                function fstarpu_sched_ctx_set_min_priority (sched_ctx_id, min_prio) &
+                                bind(c,name="starpu_sched_ctx_set_min_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_set_min_priority
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        integer(c_int), value, intent(in) :: min_prio
+                end function fstarpu_sched_ctx_set_min_priority
+
+                ! int starpu_sched_ctx_set_max_priority(unsigned sched_ctx_id, int max_prio);
+                function fstarpu_sched_ctx_set_max_priority (sched_ctx_id, max_prio) &
+                                bind(c,name="starpu_sched_ctx_set_max_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_set_max_priority
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        integer(c_int), value, intent(in) :: max_prio
+                end function fstarpu_sched_ctx_set_max_priority
+
+                ! int starpu_sched_ctx_min_priority_is_set(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_min_priority_is_set (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_min_priority_is_set")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_min_priority_is_set
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_min_priority_is_set
+
+                ! int starpu_sched_ctx_max_priority_is_set(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_max_priority_is_set (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_max_priority_is_set")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_max_priority_is_set
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_max_priority_is_set
+
+                ! struct starpu_worker_collection *starpu_sched_ctx_create_worker_collection(unsigned sched_ctx_id, enum starpu_worker_collection_type type) STARPU_ATTRIBUTE_MALLOC;
+
+                ! void starpu_sched_ctx_delete_worker_collection(unsigned sched_ctx_id);
+                subroutine fstarpu_sched_ctx_delete_worker_collection (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_delete_worker_collection")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end subroutine fstarpu_sched_ctx_delete_worker_collection
+
+                ! struct starpu_worker_collection *starpu_sched_ctx_get_worker_collection(unsigned sched_ctx_id);
+
+                ! void starpu_sched_ctx_set_policy_data(unsigned sched_ctx_id, void *policy_data);
+                subroutine fstarpu_sched_ctx_set_policy_data (sched_ctx_id, policy_data) &
+                                bind(c,name="starpu_sched_ctx_set_policy_data")
+                        use iso_c_binding, only: c_int, c_ptr
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        type(c_ptr), value, intent(in) :: policy_data
+                end subroutine fstarpu_sched_ctx_set_policy_data
+
+                ! void *starpu_sched_ctx_get_policy_data(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_get_policy_data (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_get_policy_data")
+                        use iso_c_binding, only: c_int, c_ptr
+                        type(c_ptr) :: fstarpu_sched_ctx_get_policy_data
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_get_policy_data
+
+                ! void *starpu_sched_ctx_exec_parallel_code(void* (*func)(void*), void *param, unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_exec_parallel_code (func, param, sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_exec_parallel_code")
+                        use iso_c_binding, only: c_int, c_funptr, c_ptr
+                        type(c_ptr) :: fstarpu_sched_ctx_exec_parallel_code
+                        type(c_funptr), value, intent(in) :: func
+                        type(c_ptr), value, intent(in) :: param
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_exec_parallel_code
+
+
+                ! int starpu_sched_ctx_get_nready_tasks(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_get_nready_tasks (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_get_nready_tasks")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_get_nready_tasks
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_get_nready_tasks
+
+                ! double starpu_sched_ctx_get_nready_flops(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_get_nready_flops (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_get_nready_flops")
+                        use iso_c_binding, only: c_int, c_double
+                        real(c_double) :: fstarpu_sched_ctx_get_nready_flops
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_get_nready_flops
+
+                ! void starpu_sched_ctx_list_task_counters_increment(unsigned sched_ctx_id, int workerid);
+                subroutine fstarpu_sched_ctx_list_task_counters_increment (sched_ctx_id, workerid) &
+                        bind(c,name="starpu_sched_ctx_list_task_counters_increment")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        integer(c_int), value, intent(in) :: workerid
+                end subroutine fstarpu_sched_ctx_list_task_counters_increment
+
+                ! void starpu_sched_ctx_list_task_counters_decrement(unsigned sched_ctx_id, int workerid);
+                subroutine fstarpu_sched_ctx_list_task_counters_decrement (sched_ctx_id, workerid) &
+                        bind(c,name="starpu_sched_ctx_list_task_counters_decrement")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        integer(c_int), value, intent(in) :: workerid
+ 
+                end subroutine fstarpu_sched_ctx_list_task_counters_decrement
+
+                ! void starpu_sched_ctx_list_task_counters_reset(unsigned sched_ctx_id, int workerid);
+                subroutine fstarpu_sched_ctx_list_task_counters_reset (sched_ctx_id, workerid) &
+                                bind(c,name="starpu_sched_ctx_list_task_counters_reset")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        integer(c_int), value, intent(in) :: workerid
+ 
+                end subroutine fstarpu_sched_ctx_list_task_counters_reset
+
+                ! void starpu_sched_ctx_list_task_counters_increment_all(struct starpu_task *task, unsigned sched_ctx_id);
+                subroutine fstarpu_sched_ctx_list_task_counters_increment_all (task, sched_ctx_id) &
+                        bind(c,name="starpu_sched_ctx_list_task_counters_increment_all")
+                        use iso_c_binding, only: c_ptr, c_int
+                        type(c_ptr), value, intent(in) :: task
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end subroutine fstarpu_sched_ctx_list_task_counters_increment_all
+
+                ! void starpu_sched_ctx_list_task_counters_decrement_all(struct starpu_task *task, unsigned sched_ctx_id);
+                subroutine fstarpu_sched_ctx_list_task_counters_decrement_all (task, sched_ctx_id) &
+                        bind(c,name="starpu_sched_ctx_list_task_counters_decrement_all")
+                        use iso_c_binding, only: c_ptr, c_int
+                        type(c_ptr), value, intent(in) :: task
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end subroutine fstarpu_sched_ctx_list_task_counters_decrement_all
+
+                ! void starpu_sched_ctx_list_task_counters_reset_all(struct starpu_task *task, unsigned sched_ctx_id);
+                subroutine fstarpu_sched_ctx_list_task_counters_reset_all (task, sched_ctx_id) &
+                        bind(c,name="starpu_sched_ctx_list_task_counters_reset_all")
+                        use iso_c_binding, only: c_ptr, c_int
+                        type(c_ptr), value, intent(in) :: task
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end subroutine fstarpu_sched_ctx_list_task_counters_reset_all
+
+                ! void starpu_sched_ctx_set_priority(int *workers, int nworkers, unsigned sched_ctx_id, unsigned priority);
+                subroutine fstarpu_sched_ctx_set_priority (workers, nworkers,  sched_ctx_id, priority) &
+                                bind(c,name="starpu_sched_ctx_set_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), intent(in) :: workers(*)
+                        integer(c_int), value, intent(in) :: nworkers
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        integer(c_int), value, intent(in) :: priority
+                end subroutine fstarpu_sched_ctx_set_priority
+
+                ! void starpu_sched_ctx_set_priority_on_level(int* workers_to_add, unsigned nworkers_to_add, unsigned sched_ctx, unsigned priority);
+                subroutine fstarpu_sched_ctx_set_priority_on_level ( workers_to_add, nworkers_to_add, sched_ctx, priority) &
+                                bind(c,name="starpu_sched_ctx_set_priority_on_level")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), intent(in) :: workers_to_add(*)
+                        integer(c_int), value, intent(in) :: nworkers_to_add
+                        integer(c_int), value, intent(in) :: sched_ctx
+                        integer(c_int), value, intent(in) :: priority
+                end subroutine fstarpu_sched_ctx_set_priority_on_level
+
+                ! unsigned starpu_sched_ctx_get_priority(int worker, unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_get_priority (worker, sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_get_priority")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_get_priority
+                        integer(c_int), value, intent(in) :: worker
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_get_priority
+
+                ! void starpu_sched_ctx_get_available_cpuids(unsigned sched_ctx_id, int **cpuids, int *ncpuids);
+
+                ! void starpu_sched_ctx_bind_current_thread_to_cpuid(unsigned cpuid);
+                subroutine fstarpu_sched_ctx_bind_current_thread_to_cpuid (cpuid) &
+                        bind(c,name="starpu_sched_ctx_bind_current_thread_to_cpuid")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), value, intent(in) :: cpuid
+                end subroutine fstarpu_sched_ctx_bind_current_thread_to_cpuid
+
+                ! int starpu_sched_ctx_book_workers_for_task(unsigned sched_ctx_id, int *workerids, int nworkers);
+                function fstarpu_sched_ctx_book_workers_for_task (sched_ctx_id, workerids, nworkers) &
+                                bind(c,name="starpu_sched_ctx_book_workers_for_task")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_book_workers_for_task
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        integer(c_int), intent(in) :: workerids(*)
+                        integer(c_int), value, intent(in) :: nworkers
+                end function fstarpu_sched_ctx_book_workers_for_task
+
+                ! void starpu_sched_ctx_unbook_workers_for_task(unsigned sched_ctx_id, int master);
+                subroutine fstarpu_sched_ctx_unbook_workers_for_task (sched_ctx_id, master) &
+                                bind(c,name="starpu_sched_ctx_unbook_workers_for_task")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        integer(c_int), value, intent(in) :: master
+                end subroutine fstarpu_sched_ctx_unbook_workers_for_task
+
+                ! unsigned starpu_sched_ctx_worker_is_master_for_child_ctx(int workerid, unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_worker_is_master_for_child_ctx (workerid, sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_worker_is_master_for_child_ctx")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_worker_is_master_for_child_ctx
+                        integer(c_int), value, intent(in) :: workerid
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_worker_is_master_for_child_ctx
+
+                ! unsigned starpu_sched_ctx_master_get_context(int masterid);
+                function fstarpu_sched_ctx_master_get_context (masterid) &
+                                bind(c,name="starpu_sched_ctx_master_get_context")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_master_get_context
+                        integer(c_int), value, intent(in) :: masterid
+                end function fstarpu_sched_ctx_master_get_context
+
+                ! void starpu_sched_ctx_revert_task_counters(unsigned sched_ctx_id, double flops);
+                subroutine fstarpu_sched_ctx_revert_task_counters (sched_ctx_id, flops) &
+                                bind(c,name="starpu_sched_ctx_revert_task_counters")
+                        use iso_c_binding, only: c_int, c_double
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                        real(c_double), value, intent(in) :: flops
+                end subroutine fstarpu_sched_ctx_revert_task_counters
+
+                ! void starpu_sched_ctx_move_task_to_ctx(struct starpu_task *task, unsigned sched_ctx, unsigned manage_mutex);
+                subroutine fstarpu_sched_ctx_move_task_to_ctx (task, sched_ctx, manage_mutex) &
+                                bind(c,name="starpu_sched_ctx_move_task_to_ctx")
+                        use iso_c_binding, only: c_ptr, c_int
+                        type(c_ptr), value, intent(in) :: task
+                        integer(c_int), value, intent(in) :: sched_ctx
+                        integer(c_int), value, intent(in) :: manage_mutex
+                end subroutine fstarpu_sched_ctx_move_task_to_ctx
+
+                ! int starpu_sched_ctx_get_worker_rank(unsigned sched_ctx_id);
+                function fstarpu_sched_ctx_get_worker_rank (sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_get_worker_rank")
+                        use iso_c_binding, only: c_int
+                        integer(c_int) :: fstarpu_sched_ctx_get_worker_rank
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end function fstarpu_sched_ctx_get_worker_rank
+
+                ! unsigned starpu_sched_ctx_has_starpu_scheduler(unsigned sched_ctx_id, unsigned *awake_workers);
+
+                ! void starpu_sched_ctx_call_pushed_task_cb(int workerid, unsigned sched_ctx_id);
+                subroutine fstarpu_sched_ctx_call_pushed_task_cb (workerid, sched_ctx_id) &
+                                bind(c,name="starpu_sched_ctx_call_pushed_task_cb")
+                        use iso_c_binding, only: c_int
+                        integer(c_int), value, intent(in) :: workerid
+                        integer(c_int), value, intent(in) :: sched_ctx_id
+                end subroutine fstarpu_sched_ctx_call_pushed_task_cb
 
                 ! == starpu_fxt.h ==
 
@@ -1726,7 +2110,6 @@ module fstarpu_mod
                         use iso_c_binding, only: c_long
                         integer(c_long), value, intent(in) :: code
                 end subroutine fstarpu_trace_user_event
-
         end interface
 
         contains