Commit ee0052b0 authored by Darius Buntinas's avatar Darius Buntinas
Browse files

[svn-r10770] removed channel_private field in VC and used MPIDI_CH3_VC_DECL...

[svn-r10770] removed channel_private field in VC and used MPIDI_CH3_VC_DECL macro which is overridden by channel. Reviewed by Dinan
parent e450c3c4
......@@ -49,7 +49,7 @@ MPID_nem_mpich_send_header (void* buf, int size, MPIDI_VC_t *vc, int *again)
int mpi_errno = MPI_SUCCESS;
MPID_nem_cell_ptr_t el;
int my_rank;
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
/*DO_PAPI (PAPI_reset (PAPI_EventSet)); */
......@@ -173,7 +173,7 @@ MPID_nem_mpich_sendv (MPID_IOV **iov, int *n_iov, MPIDI_VC_t *vc, int *again)
char *cell_buf;
MPIDI_msg_sz_t payload_len;
int my_rank;
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MPICH_SENDV);
MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MPICH_SENDV);
......@@ -275,7 +275,7 @@ MPID_nem_mpich_sendv_header (MPID_IOV **iov, int *n_iov, MPIDI_VC_t *vc, int *ag
char *cell_buf;
MPIDI_msg_sz_t payload_len;
int my_rank;
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MPICH_SENDV_HEADER);
MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MPICH_SENDV_HEADER);
......@@ -421,7 +421,7 @@ MPID_nem_mpich_send_seg_header (MPID_Segment *segment, MPIDI_msg_sz_t *segment_f
MPIDI_msg_sz_t datalen;
int my_rank;
MPIDI_msg_sz_t last;
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
MPIU_Assert(vc_ch->is_local); /* netmods will have their own implementation */
MPIU_Assert(header_sz <= sizeof(MPIDI_CH3_Pkt_t));
......@@ -546,7 +546,7 @@ MPID_nem_mpich_send_seg (MPID_Segment *segment, MPIDI_msg_sz_t *segment_first, M
MPIDI_msg_sz_t datalen;
int my_rank;
MPIDI_msg_sz_t last;
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
MPIU_Assert(vc_ch->is_local); /* netmods will have their own implementation */
......@@ -957,7 +957,7 @@ static inline int
MPID_nem_mpich_release_cell (MPID_nem_cell_ptr_t cell, MPIDI_VC_t *vc)
{
int mpi_errno = MPI_SUCCESS;
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
DO_PAPI (PAPI_reset (PAPI_EventSet));
MPID_nem_queue_enqueue (vc_ch->free_queue, cell);
DO_PAPI (PAPI_accum_var (PAPI_EventSet,PAPI_vvalues9));
......
......@@ -79,100 +79,6 @@ int MPID_nem_lmt_vmsplice_vc_terminated(MPIDI_VC_t *vc);
int MPID_nem_handle_pkt(MPIDI_VC_t *vc, char *buf, MPIDI_msg_sz_t buflen);
/* macro to access the channel_private fields in the vc */
#define VC_CH(vc) ((MPIDI_CH3I_VC *)(vc)->channel_private)
struct MPIDI_VC;
struct MPID_Request;
struct MPID_nem_copy_buf;
union MPIDI_CH3_Pkt;
struct MPID_nem_lmt_shm_wait_element;
typedef struct MPIDI_CH3I_VC
{
int pg_rank;
struct MPID_Request *recv_active;
int is_local;
unsigned short send_seqno;
MPID_nem_fbox_mpich_t *fbox_out;
MPID_nem_fbox_mpich_t *fbox_in;
MPID_nem_queue_ptr_t recv_queue;
MPID_nem_queue_ptr_t free_queue;
#ifdef ENABLE_CHECKPOINTING
MPIDI_msg_sz_t ckpt_msg_len;
void *ckpt_msg_buf;
#endif
/* temp buffer to store partially received header */
MPIDI_msg_sz_t pending_pkt_len;
union MPIDI_CH3_Pkt *pending_pkt;
/* can be used by netmods to put this vc on a send queue or list */
struct MPIDI_VC *next;
struct MPIDI_VC *prev;
/* contig function pointers. Netmods should set these. */
/* iStartContigMsg -- sends a message consisting of a header (hdr) and contiguous data (data), possibly of 0 size. If the
message cannot be sent immediately, the function should create a request and return a pointer in sreq_ptr. The network
module should complete the request once the message has been completely sent. */
int (* iStartContigMsg)(struct MPIDI_VC *vc, void *hdr, MPIDI_msg_sz_t hdr_sz, void *data, MPIDI_msg_sz_t data_sz,
struct MPID_Request **sreq_ptr);
/* iSentContig -- sends a message consisting of a header (hdr) and contiguous data (data), possibly of 0 size. The
network module should complete the request once the message has been completely sent. */
int (* iSendContig)(struct MPIDI_VC *vc, struct MPID_Request *sreq, void *hdr, MPIDI_msg_sz_t hdr_sz,
void *data, MPIDI_msg_sz_t data_sz);
#ifdef ENABLE_CHECKPOINTING
/* ckpt_pause_send -- netmod should stop sending on this vc and queue messages to be sent after ckpt_continue()*/
int (* ckpt_pause_send_vc)(struct MPIDI_VC *vc);
/* ckpt_continue -- Notify remote side to start sending again. */
int (* ckpt_continue_vc)(struct MPIDI_VC *vc);
/* ckpt_restart -- similar to ckpt_continue, except that the process has been restarted */
int (* ckpt_restart_vc)(struct MPIDI_VC *vc);
#endif
/* LMT function pointers */
int (* lmt_initiate_lmt)(struct MPIDI_VC *vc, union MPIDI_CH3_Pkt *rts_pkt, struct MPID_Request *req);
int (* lmt_start_recv)(struct MPIDI_VC *vc, struct MPID_Request *req, MPID_IOV s_cookie);
int (* lmt_start_send)(struct MPIDI_VC *vc, struct MPID_Request *sreq, MPID_IOV r_cookie);
int (* lmt_handle_cookie)(struct MPIDI_VC *vc, struct MPID_Request *req, MPID_IOV cookie);
int (* lmt_done_send)(struct MPIDI_VC *vc, struct MPID_Request *req);
int (* lmt_done_recv)(struct MPIDI_VC *vc, struct MPID_Request *req);
int (* lmt_vc_terminated)(struct MPIDI_VC *vc);
/* LMT shared memory copy-buffer ptr */
struct MPID_nem_copy_buf *lmt_copy_buf;
MPIU_SHMW_Hnd_t lmt_copy_buf_handle;
MPIU_SHMW_Hnd_t lmt_recv_copy_buf_handle;
int lmt_buf_num;
MPIDI_msg_sz_t lmt_surfeit;
struct {struct MPID_nem_lmt_shm_wait_element *head, *tail;} lmt_queue;
struct MPID_nem_lmt_shm_wait_element *lmt_active_lmt;
int lmt_enqueued; /* FIXME: used for debugging */
/* Pointer to per-vc packet handlers */
MPIDI_CH3_PktHandler_Fcn **pkt_handler;
int num_pkt_handlers;
union
{
char padding[MPID_NEM_VC_NETMOD_AREA_LEN];
/* Temporary helper field for ticket #1679. Should force proper pointer
* alignment on finnicky platforms like SPARC. Proper fix is to stop
* this questionable type aliasing altogether. */
void *align_helper;
} netmod_area;
/* FIXME: ch3 assumes there is a field called sendq_head in the ch
portion of the vc. This is unused in nemesis and should be set
to NULL */
void *sendq_head;
} MPIDI_CH3I_VC;
/* Nemesis-provided RMA implementation */
int MPIDI_CH3_SHM_Win_shared_query(MPID_Win *win_ptr, int target_rank, MPI_Aint *size, int *disp_unit, void *baseptr);
int MPIDI_CH3_SHM_Win_free(MPID_Win **win_ptr);
......
......@@ -33,6 +33,93 @@ MPIDI_CH3I_VC_state_t;
#define MPID_NEM_VC_NETMOD_AREA_LEN 128
#define MPID_NEM_REQ_NETMOD_AREA_LEN 192
typedef struct MPIDI_CH3I_VC
{
int pg_rank;
struct MPID_Request *recv_active;
int is_local;
unsigned short send_seqno;
MPID_nem_fbox_mpich_t *fbox_out;
MPID_nem_fbox_mpich_t *fbox_in;
MPID_nem_queue_ptr_t recv_queue;
MPID_nem_queue_ptr_t free_queue;
#ifdef ENABLE_CHECKPOINTING
MPIDI_msg_sz_t ckpt_msg_len;
void *ckpt_msg_buf;
#endif
/* temp buffer to store partially received header */
MPIDI_msg_sz_t pending_pkt_len;
union MPIDI_CH3_Pkt *pending_pkt;
/* can be used by netmods to put this vc on a send queue or list */
struct MPIDI_VC *next;
struct MPIDI_VC *prev;
/* contig function pointers. Netmods should set these. */
/* iStartContigMsg -- sends a message consisting of a header (hdr) and contiguous data (data), possibly of 0 size. If the
message cannot be sent immediately, the function should create a request and return a pointer in sreq_ptr. The network
module should complete the request once the message has been completely sent. */
int (* iStartContigMsg)(struct MPIDI_VC *vc, void *hdr, MPIDI_msg_sz_t hdr_sz, void *data, MPIDI_msg_sz_t data_sz,
struct MPID_Request **sreq_ptr);
/* iSentContig -- sends a message consisting of a header (hdr) and contiguous data (data), possibly of 0 size. The
network module should complete the request once the message has been completely sent. */
int (* iSendContig)(struct MPIDI_VC *vc, struct MPID_Request *sreq, void *hdr, MPIDI_msg_sz_t hdr_sz,
void *data, MPIDI_msg_sz_t data_sz);
#ifdef ENABLE_CHECKPOINTING
/* ckpt_pause_send -- netmod should stop sending on this vc and queue messages to be sent after ckpt_continue()*/
int (* ckpt_pause_send_vc)(struct MPIDI_VC *vc);
/* ckpt_continue -- Notify remote side to start sending again. */
int (* ckpt_continue_vc)(struct MPIDI_VC *vc);
/* ckpt_restart -- similar to ckpt_continue, except that the process has been restarted */
int (* ckpt_restart_vc)(struct MPIDI_VC *vc);
#endif
/* LMT function pointers */
int (* lmt_initiate_lmt)(struct MPIDI_VC *vc, union MPIDI_CH3_Pkt *rts_pkt, struct MPID_Request *req);
int (* lmt_start_recv)(struct MPIDI_VC *vc, struct MPID_Request *req, MPID_IOV s_cookie);
int (* lmt_start_send)(struct MPIDI_VC *vc, struct MPID_Request *sreq, MPID_IOV r_cookie);
int (* lmt_handle_cookie)(struct MPIDI_VC *vc, struct MPID_Request *req, MPID_IOV cookie);
int (* lmt_done_send)(struct MPIDI_VC *vc, struct MPID_Request *req);
int (* lmt_done_recv)(struct MPIDI_VC *vc, struct MPID_Request *req);
int (* lmt_vc_terminated)(struct MPIDI_VC *vc);
/* LMT shared memory copy-buffer ptr */
struct MPID_nem_copy_buf *lmt_copy_buf;
MPIU_SHMW_Hnd_t lmt_copy_buf_handle;
MPIU_SHMW_Hnd_t lmt_recv_copy_buf_handle;
int lmt_buf_num;
MPIDI_msg_sz_t lmt_surfeit;
struct {struct MPID_nem_lmt_shm_wait_element *head, *tail;} lmt_queue;
struct MPID_nem_lmt_shm_wait_element *lmt_active_lmt;
int lmt_enqueued; /* FIXME: used for debugging */
/* Pointer to per-vc packet handlers */
MPIDI_CH3_PktHandler_Fcn **pkt_handler;
int num_pkt_handlers;
union
{
char padding[MPID_NEM_VC_NETMOD_AREA_LEN];
/* Temporary helper field for ticket #1679. Should force proper pointer
* alignment on finnicky platforms like SPARC. Proper fix is to stop
* this questionable type aliasing altogether. */
void *align_helper;
} netmod_area;
/* FIXME: ch3 assumes there is a field called sendq_head in the ch
portion of the vc. This is unused in nemesis and should be set
to NULL */
void *sendq_head;
} MPIDI_CH3I_VC;
#define MPIDI_CH3_VC_DECL struct MPIDI_CH3I_VC ch;
struct MPIDI_CH3I_Request
{
struct MPIDI_VC *vc;
......
......@@ -38,7 +38,7 @@ int MPID_nem_mx_cancel_send(MPIDI_VC_t *vc, MPID_Request *sreq)
int mpi_errno = MPI_SUCCESS;
int handled = FALSE;
if (!VC_CH(vc)->is_local)
if (!vc->ch.is_local)
{
mx_request = &(REQ_FIELD(sreq,mx_request));
ret = mx_cancel(MPID_nem_mx_local_endpoint,mx_request,&result);
......
......@@ -97,7 +97,7 @@ typedef struct
} MPID_nem_mx_vc_area;
/* accessor macro to private fields in VC */
#define VC_FIELD(vcp, field) (((MPID_nem_mx_vc_area *)VC_CH(((vcp)))->netmod_area.padding)->field)
#define VC_FIELD(vcp, field) (((MPID_nem_mx_vc_area *)vcp->ch.netmod_area.padding)->field)
/* The req provides a generic buffer in which network modules can store
private fields This removes all dependencies from the req structure
......
......@@ -237,7 +237,7 @@ int
MPID_nem_mx_vc_init (MPIDI_VC_t *vc)
{
uint32_t threshold;
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
int mpi_errno = MPI_SUCCESS;
/* first make sure that our private fields in the vc fit into the area provided */
......
......@@ -254,7 +254,7 @@ int MPID_nem_mx_directRecv(MPIDI_VC_t *vc, MPID_Request *rreq)
MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MX_DIRECTRECV);
MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MX_DIRECTRECV);
if (!VC_CH(vc)->is_local)
if (!vc->ch.is_local)
{
uint64_t match_info = NEM_MX_MATCH_DIRECT;
uint64_t match_mask = NEM_MX_MATCH_FULL_MASK;
......
......@@ -81,7 +81,7 @@ typedef struct
int pending_sends;
} MPID_nem_newmad_vc_area;
/* accessor macro to private fields in VC */
#define VC_FIELD(vcp, field) (((MPID_nem_newmad_vc_area *)VC_CH(((vcp)))->netmod_area.padding)->field)
#define VC_FIELD(vcp, field) (((MPID_nem_newmad_vc_area *)vcp->ch.netmod_area.padding)->field)
/* The req provides a generic buffer in which network modules can store
private fields This removes all dependencies from the req structure
......
......@@ -238,7 +238,7 @@ MPID_nem_newmad_connect_to_root (const char *business_card, MPIDI_VC_t *new_vc)
int
MPID_nem_newmad_vc_init (MPIDI_VC_t *vc)
{
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
char *business_card;
int mpi_errno = MPI_SUCCESS;
int val_max_sz;
......
......@@ -90,7 +90,7 @@ int MPID_nem_newmad_directRecv(MPIDI_VC_t *vc, MPID_Request *rreq)
MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_NEWMAD_DIRECTRECV);
MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_NEWMAD_DIRECTRECV);
if (!VC_CH(vc)->is_local)
if (!vc->ch.is_local)
{
nm_tag_t match_info = 0;
nm_tag_t match_mask = NEM_NMAD_MATCH_FULL_MASK;
......
......@@ -92,7 +92,7 @@ typedef struct {
} MPID_nem_ptl_vc_area;
/* macro for ptl private in VC */
#define VC_PTL(vc) ((MPID_nem_ptl_vc_area *)VC_CH((vc))->netmod_area.padding)
#define VC_PTL(vc) ((MPID_nem_ptl_vc_area *)vc->ch.netmod_area.padding)
/* Header bit fields
bit field
......
......@@ -271,7 +271,7 @@ static int connect_to_root(const char *business_card, MPIDI_VC_t *new_vc)
static int vc_init(MPIDI_VC_t *vc)
{
int mpi_errno = MPI_SUCCESS;
MPIDI_CH3I_VC *const vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *const vc_ch = &vc->ch;
MPID_nem_ptl_vc_area *const vc_ptl = VC_PTL(vc);
MPIDI_STATE_DECL(MPID_STATE_VC_INIT);
......
......@@ -37,7 +37,7 @@ typedef struct {
} MPID_nem_scif_vc_area;
/* macro for scif private in VC */
#define VC_SCIF(vc) ((MPID_nem_scif_vc_area *)VC_CH((vc))->netmod_area.padding)
#define VC_SCIF(vc) ((MPID_nem_scif_vc_area *)vc->ch.netmod_area.padding)
typedef struct {
uint64_t seqno;
......
......@@ -232,7 +232,7 @@ static int get_addr(MPIDI_VC_t * vc, struct scif_portID *addr)
int MPID_nem_scif_vc_init(MPIDI_VC_t * vc)
{
int mpi_errno = MPI_SUCCESS;
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
MPID_nem_scif_vc_area *vc_scif = VC_SCIF(vc);
int ret;
size_t s;
......
......@@ -26,7 +26,7 @@ static int MPID_nem_scif_recv_handler(scifconn_t * const sc)
MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_SCIF_RECV_HANDLER);
if (VC_CH(sc_vc)->recv_active == NULL) {
if (sc_vc->ch.recv_active == NULL) {
/* receive a new message */
bytes_recvd =
MPID_nem_scif_read(sc_fd, sc_ch, MPID_nem_scif_recv_buf,
......@@ -46,7 +46,7 @@ static int MPID_nem_scif_recv_handler(scifconn_t * const sc)
else {
/* there is a pending receive, receive it directly into the
* user buffer */
MPIDI_CH3I_VC *const sc_vc_ch = VC_CH(sc_vc);
MPIDI_CH3I_VC *const sc_vc_ch = &sc_vc->ch;
MPID_Request *const rreq = sc_vc_ch->recv_active;
MPID_IOV *iov = &rreq->dev.iov[rreq->dev.iov_offset];
int (*reqFn) (MPIDI_VC_t *, MPID_Request *, int *);
......
......@@ -1074,7 +1074,7 @@ int MPID_nem_tcp_ckpt_cleanup(void)
continue;
MPIDI_PG_Get_vc(MPIDI_Process.my_pg, i, &vc);
{
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
MPID_nem_tcp_vc_area *vc_tcp = VC_TCP(vc);
if (vc_ch->is_local || vc_tcp->sc == NULL)
continue;
......@@ -1516,7 +1516,7 @@ static int MPID_nem_tcp_recv_handler(sockconn_t *const sc)
MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_TCP_RECV_HANDLER);
if (VC_CH(sc_vc)->recv_active == NULL)
if (sc_vc->ch.recv_active == NULL)
{
/* receive a new message */
CHECK_EINTR(bytes_recvd, recv(sc_fd, recv_buf, MPID_NEM_TCP_RECV_MAX_PKT_LEN, 0));
......@@ -1566,7 +1566,7 @@ static int MPID_nem_tcp_recv_handler(sockconn_t *const sc)
else
{
/* there is a pending receive, receive it directly into the user buffer */
MPIDI_CH3I_VC *const sc_vc_ch = VC_CH(sc_vc);
MPIDI_CH3I_VC *const sc_vc_ch = &sc_vc->ch;
MPID_Request *const rreq = sc_vc_ch->recv_active;
MPID_IOV *iov = &rreq->dev.iov[rreq->dev.iov_offset];
int (*reqFn)(MPIDI_VC_t *, MPID_Request *, int *);
......
......@@ -47,7 +47,7 @@ typedef struct
} MPID_nem_tcp_vc_area;
/* macro for tcp private in VC */
#define VC_TCP(vc) ((MPID_nem_tcp_vc_area *)VC_CH((vc))->netmod_area.padding)
#define VC_TCP(vc) ((MPID_nem_tcp_vc_area *)vc->ch.netmod_area.padding)
#define ASSIGN_SC_TO_VC(vc_tcp_, sc_) do { \
(vc_tcp_)->sc = (sc_); \
......
......@@ -186,7 +186,7 @@ static int ckpt_restart(void)
if (i == MPIDI_Process.my_pg_rank)
continue;
MPIDI_PG_Get_vc(MPIDI_Process.my_pg, i, &vc);
vc_ch = VC_CH(vc);
vc_ch = &vc->ch;
if (!vc_ch->is_local) {
mpi_errno = vc_ch->ckpt_restart_vc(vc);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
......@@ -433,7 +433,7 @@ int MPID_nem_tcp_connect_to_root (const char *business_card, MPIDI_VC_t *new_vc)
int MPID_nem_tcp_vc_init (MPIDI_VC_t *vc)
{
int mpi_errno = MPI_SUCCESS;
MPIDI_CH3I_VC *vc_ch = VC_CH(vc);
MPIDI_CH3I_VC *vc_ch = &vc->ch;
MPID_nem_tcp_vc_area *vc_tcp = VC_TCP(vc);
MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_TCP_VC_INIT);
......
......@@ -2287,7 +2287,7 @@ static int MPID_nem_newtcp_module_recv_success_handler(MPIU_EXOVERLAPPED *rd_ov)
MPIU_Assert(sc != NULL);
bytes_recvd = ex_read_progress_update(sc, &complete);
rreq = ((MPIDI_CH3I_VC *)sc->vc->channel_private)->recv_active;
rreq = sc->vc->ch.recv_active;
if (rreq == NULL){
/* Received a new message on scratch pad, sc->tmp_buf */
......@@ -2324,7 +2324,7 @@ static int MPID_nem_newtcp_module_recv_success_handler(MPIU_EXOVERLAPPED *rd_ov)
/* The pkt handlers can sever the conn btw sc and vc - eg: when vc is terminated*/
if(sc->vc != NULL){
rreq = ((MPIDI_CH3I_VC *)sc->vc->channel_private)->recv_active;
rreq = sc->vc->ch.recv_active;
if (rreq == NULL){
/* The packets were completely consumed - post read on scratch pad recv buf */
MPIU_DBG_MSG_FMT(CH3_CHANNEL, VERBOSE, (MPIU_DBG_FDEST, "Packets (bytes = %d) on (fd=%d, vc=%p, sc=%p) completely consumed", bytes_recvd, sc->fd, sc->vc, sc));
......@@ -2374,7 +2374,7 @@ static int MPID_nem_newtcp_module_recv_success_handler(MPIU_EXOVERLAPPED *rd_ov)
MPIU_Assert(MPIDI_Request_get_type(rreq) != MPIDI_REQUEST_TYPE_GET_RESP);
MPIDI_CH3U_Request_complete(rreq);
MPIU_DBG_MSG(CH3_CHANNEL, VERBOSE, "Req complete...");
((MPIDI_CH3I_VC *)sc->vc->channel_private)->recv_active = NULL;
sc->vc->ch.recv_active = NULL;
req_complete = 1;
}
else{
......@@ -2385,7 +2385,7 @@ static int MPID_nem_newtcp_module_recv_success_handler(MPIU_EXOVERLAPPED *rd_ov)
if (req_complete){
MPIU_DBG_MSG(CH3_CHANNEL, VERBOSE, "Req complete...");
((MPIDI_CH3I_VC *)sc->vc->channel_private)->recv_active = NULL;
sc->vc->ch.recv_active = NULL;
}
else{
MPIU_DBG_MSG(CH3_CHANNEL, VERBOSE, "Req not complete...");
......
......@@ -66,7 +66,7 @@ typedef struct
} MPID_nem_newtcp_module_vc_area;
/* accessor macro to private fields in VC */
#define VC_FIELD(vc, field) (((MPID_nem_newtcp_module_vc_area *)((MPIDI_CH3I_VC *)(vc)->channel_private)->netmod_area.padding)->field)
#define VC_FIELD(vc, field) (((MPID_nem_newtcp_module_vc_area *)((vc)->ch.netmod_area.padding)->field)
#define ASSIGN_SC_TO_VC(vc_, sc_) do { \
VC_FIELD((vc_), sc) = (sc_); \
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment