📄 socket_read.c
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */#include "socketimpl.h"#ifdef WITH_METHOD_SOCKET#ifndef HAVE_WINSOCK2_H#include <errno.h>#endif#ifdef WITH_METHOD_SHMint socket_read_shm(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int socket_handle_read_shm(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read);#endif#ifdef WITH_METHOD_VIAint socket_read_via(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int socket_handle_read_via(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read);#endif#ifdef WITH_METHOD_VIA_RDMAint socket_read_via_rdma(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int socket_handle_read_via_rdma(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read);#endifint socket_read_vec(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int socket_handle_read_vec(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read);int socket_read_tmp(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int socket_handle_read_tmp(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read);int socket_read_simple(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int socket_handle_read_simple(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read);#ifdef WITH_METHOD_IBint socket_read_ib(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int socket_handle_read_ib(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read);#endif#ifdef WITH_METHOD_NEWint socket_read_new(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr);int socket_handle_read_new(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read);#endif#if 0int socket_read_header(MPIDI_VC *vc_ptr){ MPIDI_STATE_DECL(MPID_STATE_SOCKET_READ_HEADER); MPIDI_FUNC_ENTER(MPID_STATE_SOCKET_READ_HEADER);#ifdef MPICH_DEV_BUILD if (!(vc_ptr->data.socket.state & SOCKET_CONNECTED)) { err_printf("socket_read_header called on an unconnected vc\n"); }#endif#ifdef MPICH_DEV_BUILD /* set the function pointer to INVALID_POINTER to catch the potential error of calling this function again before the pointer is reset. */ /*vc_ptr->data.socket.read = INVALID_POINTER;*/#endif mm_cq_enqueue(&vc_ptr->pkt_car); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_HEADER); return MPI_SUCCESS;}#endifint socket_read_data(MPIDI_VC *vc_ptr){ MM_Car *car_ptr; MM_Segment_buffer *buf_ptr; int ret_val; MPIDI_STATE_DECL(MPID_STATE_SOCKET_READ_DATA); MPIDI_FUNC_ENTER(MPID_STATE_SOCKET_READ_DATA);#ifdef MPICH_DEV_BUILD if (!(vc_ptr->data.socket.state & SOCKET_CONNECTED)) { err_printf("Error: socket_read_data called on connecting vc\n"); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return -1; }#endif if (vc_ptr->readq_head == NULL) { MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return MPI_SUCCESS; } SOCKET_CLR_BIT(vc_ptr->data.socket.state, SOCKET_READING_HEADER); SOCKET_SET_BIT(vc_ptr->data.socket.state, SOCKET_READING_DATA); car_ptr = vc_ptr->readq_head; buf_ptr = car_ptr->buf_ptr; switch (buf_ptr->type) { case MM_VEC_BUFFER: ret_val = socket_read_vec(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return ret_val; break; case MM_SIMPLE_BUFFER: ret_val = socket_read_simple(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return ret_val; break; case MM_TMP_BUFFER: ret_val = socket_read_tmp(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return ret_val; break;#ifdef WITH_METHOD_SHM case MM_SHM_BUFFER: ret_val = socket_read_shm(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_VIA case MM_VIA_BUFFER: ret_val = socket_read_via(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_VIA_RDMA case MM_VIA_RDMA_BUFFER: ret_val = socket_read_via_rdma(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_IB case MM_IB_BUFFER: ret_val = socket_read_ib(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_NEW case MM_NEW_METHOD_BUFFER: ret_val = socket_read_new(vc_ptr, car_ptr, buf_ptr); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return ret_val; break;#endif case MM_NULL_BUFFER: err_printf("Error: socket_read_data called on a null buffer\n"); break; default: err_printf("Error: socket_read_data: unknown or unsupported buffer type: %d\n", buf_ptr->type); break; } MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_DATA); return -1;}int socket_handle_read_data(MPIDI_VC *vc_ptr, int num_read){ MM_Car *car_ptr; MM_Segment_buffer *buf_ptr; int ret_val; MPIDI_STATE_DECL(MPID_STATE_SOCKET_HANDLE_READ_DATA); MPIDI_FUNC_ENTER(MPID_STATE_SOCKET_HANDLE_READ_DATA);#ifdef MPICH_DEV_BUILD if (!(vc_ptr->data.socket.state & SOCKET_CONNECTED)) { err_printf("Error: socket_handle_read_data called on connecting vc\n"); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return -1; }#endif if (vc_ptr->readq_head == NULL) { MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_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 = socket_handle_read_vec(vc_ptr, car_ptr, buf_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return ret_val; break; case MM_SIMPLE_BUFFER: ret_val = socket_handle_read_simple(vc_ptr, car_ptr, buf_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return ret_val; break; case MM_TMP_BUFFER: ret_val = socket_handle_read_tmp(vc_ptr, car_ptr, buf_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return ret_val; break;#ifdef WITH_METHOD_SHM case MM_SHM_BUFFER: ret_val = socket_handle_read_shm(vc_ptr, car_ptr, buf_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_VIA case MM_VIA_BUFFER: ret_val = socket_handle_read_via(vc_ptr, car_ptr, buf_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_VIA_RDMA case MM_VIA_RDMA_BUFFER: ret_val = socket_handle_read_via_rdma(vc_ptr, car_ptr, buf_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_IB case MM_IB_BUFFER: ret_val =socket_handle_read_ib(vc_ptr, car_ptr, buf_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return ret_val; break;#endif#ifdef WITH_METHOD_NEW case MM_NEW_METHOD_BUFFER: ret_val = socket_handle_read_new(vc_ptr, car_ptr, buf_ptr, num_read); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return ret_val; break;#endif case MM_NULL_BUFFER: err_printf("Error: socket_read_data called on a null buffer\n"); break; default: err_printf("Error: socket_read_data: unknown or unsupported buffer type: %d\n", buf_ptr->type); break; } MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_DATA); return -1;}#ifdef WITH_METHOD_SHMint socket_read_shm(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr){ MPIDI_STATE_DECL(MPID_STATE_SOCKET_READ_SHM); MPIDI_FUNC_ENTER(MPID_STATE_SOCKET_READ_SHM); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_SHM); return MPI_SUCCESS;}int socket_handle_read_shm(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read){ MPIDI_STATE_DECL(MPID_STATE_SOCKET_HANDLE_READ_SHM); MPIDI_FUNC_ENTER(MPID_STATE_SOCKET_HANDLE_READ_SHM); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_SHM); return MPI_SUCCESS;}#endif#ifdef WITH_METHOD_VIAint socket_read_via(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr){ MPIDI_STATE_DECL(MPID_STATE_SOCKET_READ_VIA); MPIDI_FUNC_ENTER(MPID_STATE_SOCKET_READ_VIA); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_READ_VIA); return MPI_SUCCESS;}int socket_handle_read_via(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr, int num_read){ MPIDI_STATE_DECL(MPID_STATE_SOCKET_HANDLE_READ_VIA); MPIDI_FUNC_ENTER(MPID_STATE_SOCKET_HANDLE_READ_VIA); MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_HANDLE_READ_VIA); return MPI_SUCCESS;}#endif#ifdef WITH_METHOD_VIA_RDMAint socket_read_via_rdma(MPIDI_VC *vc_ptr, MM_Car *car_ptr, MM_Segment_buffer *buf_ptr){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -