22 #ifndef __DATA_REQUEST_H__
23 #define __DATA_REQUEST_H__
25 #include <semaphore.h>
27 #include <common/list.h>
35 #define MAX_PENDING_REQUESTS_PER_NODE 20
36 #define MAX_PENDING_PREFETCH_REQUESTS_PER_NODE 10
37 #define MAX_PENDING_IDLE_REQUESTS_PER_NODE 1
38 #define MAX_PUSH_TIME 1000
44 void (*callback_func)(
void *);
51 LIST_TYPE(_starpu_data_request,
56 starpu_data_handle_t handle;
64 unsigned handling_node;
74 enum starpu_data_access_mode mode;
83 enum _starpu_is_prefetch prefetch;
97 struct _starpu_data_request *next_req[STARPU_MAXNODES+1];
99 unsigned next_req_count;
103 unsigned long com_id;
105 PRIO_LIST_TYPE(_starpu_data_request, prio)
109 LIST_TYPE(_starpu_data_requester,
111 enum starpu_data_access_mode mode;
114 unsigned is_requested_by_codelet;
118 unsigned buffer_index;
125 void (*ready_data_callback)(
void *argcb);
128 PRIO_LIST_TYPE(_starpu_data_requester, prio)
130 void _starpu_init_data_request_lists(
void);
131 void _starpu_deinit_data_request_lists(
void);
132 void _starpu_post_data_request(
struct _starpu_data_request *r);
134 int _starpu_handle_node_data_requests(
unsigned src_node,
unsigned may_alloc,
unsigned *pushed);
135 int _starpu_handle_node_prefetch_requests(
unsigned src_node,
unsigned may_alloc,
unsigned *pushed);
136 int _starpu_handle_node_idle_requests(
unsigned src_node,
unsigned may_alloc,
unsigned *pushed);
138 int _starpu_handle_pending_node_data_requests(
unsigned src_node);
139 int _starpu_handle_all_pending_node_data_requests(
unsigned src_node);
141 int _starpu_check_that_no_data_request_exists(
unsigned node);
142 int _starpu_check_that_no_data_request_is_pending(
unsigned node);
144 struct _starpu_data_request *_starpu_create_data_request(starpu_data_handle_t handle,
148 enum starpu_data_access_mode mode,
150 enum _starpu_is_prefetch is_prefetch,
152 unsigned is_write_invalidation,
153 const char *origin) STARPU_ATTRIBUTE_MALLOC;
155 int _starpu_wait_data_request_completion(
struct _starpu_data_request *r,
unsigned may_alloc);
157 void _starpu_data_request_append_callback(
struct _starpu_data_request *r,
158 void (*callback_func)(
void *),
161 void _starpu_update_prefetch_status(
struct _starpu_data_request *r,
enum _starpu_is_prefetch prefetch);
162 #endif // __DATA_REQUEST_H__