📄 ib_read.c
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */#include "ibimpl.h"#ifdef WITH_METHOD_IB#ifndef min#define min(a, b) ((a) < (b) ? (a) : (b))#endif/* Handling read data */#ifdef WITH_METHOD_SHMint ib_handle_read_shm(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read);#endif#ifdef WITH_METHOD_VIAint ib_handle_read_via(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read);#endif#ifdef WITH_METHOD_VIA_RDMAint ib_handle_read_via_rdma(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read);#endifint ib_handle_read_vec(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read);int ib_handle_read_tmp(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read);int ib_handle_read_simple(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read);#ifdef WITH_METHOD_IBint ib_handle_read_ib(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read);#endif#ifdef WITH_METHOD_NEWint ib_handle_read_new(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read);#endif/* Actively reading data */#ifdef WITH_METHOD_SHMint ib_read_shm(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);#endif#ifdef WITH_METHOD_VIAint ib_read_via(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);#endif#ifdef WITH_METHOD_VIA_RDMAint ib_read_via_rdma(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);#endifint ib_read_vec(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int ib_read_tmp(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int ib_read_simple(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);#ifdef WITH_METHOD_IBint ib_read_ib(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);#endif#ifdef WITH_METHOD_NEWint ib_read_new(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);#endifint ib_read_data(MPIDI_VC *vc_ptr){ MM_Car *car_ptr; MM_Segment_buffer *buf_ptr; int ret_val; MPIDI_STATE_DECL(MPID_STATE_IB_READ_DATA); MPIDI_FUNC_ENTER(MPID_STATE_IB_READ_DATA); if (vc_ptr->readq_head == NULL) { MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return MPI_SUCCESS; } vc_ptr->data.ib.reading_header = FALSE; car_ptr = vc_ptr->readq_head; buf_ptr = car_ptr->buf_ptr; switch (buf_ptr->type) { case MM_VEC_BUFFER: ret_val = ib_read_vec(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return ret_val; break; case MM_SIMPLE_BUFFER: ret_val = ib_read_simple(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return ret_val; break; case MM_TMP_BUFFER: ret_val = ib_read_tmp(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return ret_val; break;#ifdef WITH_METHOD_SHM case MM_SHM_BUFFER: ret_val = ib_read_shm(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_VIA case MM_VIA_BUFFER: ret_val = ib_read_via(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_VIA_RDMA case MM_VIA_RDMA_BUFFER: ret_val = ib_read_via_rdma(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_IB case MM_IB_BUFFER: ret_val = ib_read_ib(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_NEW case MM_NEW_METHOD_BUFFER: ret_val = ib_read_new(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return ret_val; break;#endif case MM_NULL_BUFFER: err_printf("Error: ib_read_data called on a null buffer\n"); break; default: err_printf("Error: ib_read_data: unknown or unsupported buffer type: %d\n", buf_ptr->type); break; } MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_DATA); return -1;}int ib_handle_read_data(MPIDI_VC *vc_ptr, void * mem_ptr, int num_read){ MM_Car *car_ptr; MM_Segment_buffer *buf_ptr; int ret_val; MPIDI_STATE_DECL(MPID_STATE_IB_HANDLE_READ_DATA); MPIDI_FUNC_ENTER(MPID_STATE_IB_HANDLE_READ_DATA); if (vc_ptr->readq_head == NULL) { MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return MPI_SUCCESS; } car_ptr = vc_ptr->readq_head; buf_ptr = car_ptr->buf_ptr; switch (buf_ptr->type) { case MM_VEC_BUFFER: ret_val = ib_handle_read_vec(vc_ptr, car_ptr, buf_ptr, mem_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return ret_val; break; case MM_SIMPLE_BUFFER: ret_val = ib_handle_read_simple(vc_ptr, car_ptr, buf_ptr, mem_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return ret_val; break; case MM_TMP_BUFFER: ret_val = ib_handle_read_tmp(vc_ptr, car_ptr, buf_ptr, mem_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return ret_val; break;#ifdef WITH_METHOD_SHM case MM_SHM_BUFFER: ret_val = ib_handle_read_shm(vc_ptr, car_ptr, buf_ptr, mem_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_VIA case MM_VIA_BUFFER: ret_val = ib_handle_read_via(vc_ptr, car_ptr, buf_ptr, mem_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_VIA_RDMA case MM_VIA_RDMA_BUFFER: ret_val = ib_handle_read_via_rdma(vc_ptr, car_ptr, buf_ptr, mem_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_IB case MM_IB_BUFFER: ret_val =ib_handle_read_ib(vc_ptr, car_ptr, buf_ptr, mem_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_NEW case MM_NEW_METHOD_BUFFER: ret_val = ib_handle_read_new(vc_ptr, car_ptr, buf_ptr, mem_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return ret_val; break;#endif case MM_NULL_BUFFER: err_printf("Error: ib_read_data called on a null buffer\n"); break; default: err_printf("Error: ib_read_data: unknown or unsupported buffer type: %d\n", buf_ptr->type); break; } MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_DATA); return -1;}#ifdef WITH_METHOD_SHMint ib_read_shm(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr){ MPIDI_STATE_DECL(MPID_STATE_IB_READ_SHM); MPIDI_FUNC_ENTER(MPID_STATE_IB_READ_SHM); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_SHM); return MPI_SUCCESS;}int ib_handle_read_shm(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read){ MPIDI_STATE_DECL(MPID_STATE_IB_HANDLE_READ_SHM); MPIDI_FUNC_ENTER(MPID_STATE_IB_HANDLE_READ_SHM); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_SHM); return MPI_SUCCESS;}#endif#ifdef WITH_METHOD_VIAint ib_read_via(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr){ MPIDI_STATE_DECL(MPID_STATE_IB_READ_VIA); MPIDI_FUNC_ENTER(MPID_STATE_IB_READ_VIA); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_VIA); return MPI_SUCCESS;}int ib_handle_read_via(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read){ MPIDI_STATE_DECL(MPID_STATE_IB_HANDLE_READ_VIA); MPIDI_FUNC_ENTER(MPID_STATE_IB_HANDLE_READ_VIA); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_VIA); return MPI_SUCCESS;}#endif#ifdef WITH_METHOD_VIA_RDMAint ib_read_via_rdma(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr){ MPIDI_STATE_DECL(MPID_STATE_IB_READ_VIA_RDMA); MPIDI_FUNC_ENTER(MPID_STATE_IB_READ_VIA_RDMA); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_VIA_RDMA); return MPI_SUCCESS;}int ib_handle_read_via_rdma(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read){ MPIDI_STATE_DECL(MPID_STATE_IB_HANDLE_READ_VIA_RDMA); MPIDI_FUNC_ENTER(MPID_STATE_IB_HANDLE_READ_VIA_RDMA); MPIDI_FUNC_EXIT(MPID_STATE_IB_HANDLE_READ_VIA_RDMA); return MPI_SUCCESS;}#endif#ifdef WITH_METHOD_IBint ib_read_ib(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr){ MPIDI_STATE_DECL(MPID_STATE_IB_READ_IB); MPIDI_FUNC_ENTER(MPID_STATE_IB_READ_IB); MPIDI_FUNC_EXIT(MPID_STATE_IB_READ_IB); return MPI_SUCCESS;}int ib_handle_read_ib(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, void *mem_ptr, int num_read){ MPIDI_STATE_DECL(MPID_STATE_IB_HANDLE_READ_IB); MPIDI_FUNC_ENTER(MPID_STATE_IB_HANDLE_READ_IB);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -