⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socket_init.c

📁 刚才是说明 现在是安装程序在 LINUX环境下进行编程的MPICH安装文件
💻 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#ifdef HAVE_UNISTD_H#include <unistd.h> /* gethostname */#endifSOCKET_PerProcess SOCKET_Process;MPIDI_VC_functions g_socket_vc_functions = {    socket_post_read,    socket_car_head_enqueue_read,    socket_merge_with_unexpected,    socket_merge_with_posted,    socket_merge_unexpected_data,    socket_post_write,    socket_car_head_enqueue_write,    socket_reset_car,    socket_setup_packet_car,    socket_post_read_pkt};/*@   socket_init - initialize the socket method   Notes:@*/int socket_init(void){    int error;    char *env;    MPIDI_STATE_DECL(MPID_STATE_SOCKET_INIT);    MPIDI_FUNC_ENTER(MPID_STATE_SOCKET_INIT);    error = sock_init();    if (error != SOCK_SUCCESS)    {	err_printf("socket_init: sock_init failed, error %d\n", error);    }    SOCKET_Process.nSOCKET_EAGER_LIMIT = SOCKET_EAGER_LIMIT;    env = getenv("MPICH_SOCKET_EAGER_LIMIT");    if (env)    {	SOCKET_Process.nSOCKET_EAGER_LIMIT = atoi(env);	if (SOCKET_Process.nSOCKET_EAGER_LIMIT < 1)	    SOCKET_Process.nSOCKET_EAGER_LIMIT = SOCKET_EAGER_LIMIT;    }    gethostname(SOCKET_Process.host, 100);    if ((error = sock_create_set(&SOCKET_Process.set)) != SOCK_SUCCESS)    {	socket_print_sock_error(error, "socket_init: sock_create_set failed.");	sock_finalize();	return 0;    }    if ((error = sock_listen(SOCKET_Process.set, SOCKET_LISTENER_POINTER, &SOCKET_Process.port, &SOCKET_Process.listener)) != SOCK_SUCCESS)    {	socket_print_sock_error(error, "socket_init: sock_listen failed.");	sock_finalize();	return 0;    }    MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_INIT);    return MPI_SUCCESS;}/*@   socket_finalize - finalize the socket method   Notes:@*/int socket_finalize(void){    MPIDI_STATE_DECL(MPID_STATE_SOCKET_FINALIZE);    MPIDI_FUNC_ENTER(MPID_STATE_SOCKET_FINALIZE);    sock_post_close(SOCKET_Process.listener);    sock_destroy_set(SOCKET_Process.set);    sock_finalize();    MPIDI_FUNC_EXIT(MPID_STATE_SOCKET_FINALIZE);    return MPI_SUCCESS;}void socket_format_sock_error(int error){#ifdef HAVE_WINSOCK2_H    HLOCAL str_local;    int num_bytes;    SOCKET_Process.error = error;    num_bytes = FormatMessage(	FORMAT_MESSAGE_FROM_SYSTEM |	FORMAT_MESSAGE_ALLOCATE_BUFFER,	0,	error,	MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ),	(LPTSTR) &str_local,	0,0);    if (num_bytes < SOCKET_ERROR_MSG_LENGTH)	memcpy(SOCKET_Process.err_msg, str_local, num_bytes+1);    else    {	LocalFree(str_local);	return;    }    LocalFree(str_local);    strtok(SOCKET_Process.err_msg, "\r\n"); /* remove any CR/LF characters from the output */#else    SOCKET_Process.error = error;    strncpy(SOCKET_Process.err_msg, strerror(error), SOCKET_ERROR_MSG_LENGTH);#endif}void socket_print_sock_error(int error, char *msg){    socket_format_sock_error(error);    err_printf("%s\nError %d: %s\n", msg, SOCKET_Process.error, SOCKET_Process.err_msg);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -