1 /*
2  * Copyright (C) by Argonne National Laboratory
3  *     See COPYRIGHT in top-level directory
4  */
5 
6 #ifndef MPIDI_CH3_POST_H_INCLUDED
7 #define MPIDI_CH3_POST_H_INCLUDED
8 
9 #define MPIDI_CH3_Progress_start(progress_state_)                                                       \
10         (progress_state_)->ch.completion_count = MPL_atomic_relaxed_load_int(&MPIDI_CH3I_progress_completion_count);
11 #define MPIDI_CH3_Progress_end(progress_state_)
12 
13 enum {
14     MPIDI_CH3_start_packet_handler_id = 128,
15     MPIDI_CH3_continue_packet_handler_id = 129,
16     MPIDI_CH3_CTS_packet_handler_id = 130,
17     MPIDI_CH3_reload_IOV_or_done_handler_id = 131,
18     MPIDI_CH3_reload_IOV_reply_handler_id = 132
19 };
20 
21 
22 int MPIDI_CH3I_Progress(MPID_Progress_state *progress_state, int blocking);
23 #define MPIDI_CH3_Progress_test() MPIDI_CH3I_Progress(NULL, FALSE)
24 #define MPIDI_CH3_Progress_wait(progress_state) MPIDI_CH3I_Progress(progress_state, TRUE)
25 #define MPIDI_CH3_Progress_poke() MPIDI_CH3I_Progress(NULL, FALSE)
26 
27 void MPIDI_CH3I_Posted_recv_enqueued(MPIR_Request *rreq);
28 /* returns non-zero when req has been matched by channel */
29 int  MPIDI_CH3I_Posted_recv_dequeued(MPIR_Request *rreq);
30 
31 /*
32  * Enable optional functionality
33  */
34 #define MPIDI_CH3_Comm_Spawn MPIDI_CH3_Comm_Spawn
35 
36 #include "mpid_nem_post.h"
37 
38 int MPIDI_CH3I_Register_anysource_notification(void (*enqueue_fn)(MPIR_Request *rreq), int (*dequeue_fn)(MPIR_Request *rreq));
39 
40 #endif /* MPIDI_CH3_POST_H_INCLUDED */
41