📄 smpd.h
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */#ifndef SMPD_H#define SMPD_H#ifdef HAVE_WINDOWS_H#include <winsock2.h>#include <windows.h>#include <sys/types.h>#include <sys/stat.h>#include <io.h>#define SECURITY_WIN32#include <security.h>#else#include "smpdconf.h"#endif#include <stdio.h>#include <stdlib.h>#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_SYS_WAIT_H#include <sys/wait.h>#endif#ifdef HAVE_ERRNO_H#include <errno.h>#endif#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_MALLOC_H#include <malloc.h>#endif#ifdef HAVE_UUID_UUID_H#include <uuid/uuid.h>#endif#ifdef HAVE_STRING_H#include <string.h>#endif#ifdef HAVE_SYS_SOCKET_H#include <sys/socket.h>#endif#ifdef HAVE_SIGNAL_H#include <signal.h>#endif#ifdef USE_PTHREAD_STDIN_REDIRECTION#include <pthread.h>#endif#include "mpi.h"#include "mpidu_sock.h"#include "mpimem.h"#include "mpierror.h"#include "smpd_database.h"#include "pmi.h"#include "smpd_version.h"#define SMPD_VERSION_FAILURE "version_failure"#define SMPD_LISTENER_PORT 8676#define SMPD_SUCCESS 0#define SMPD_FAIL -1#define SMPD_ERR_INVALID_USER -2#define SMPD_CLOSE 2#define SMPD_CONNECTED 3#define SMPD_EXIT 4#define SMPD_DBS_RETURN 5#define SMPD_ABORT 6typedef int SMPD_BOOL;#define SMPD_TRUE 1#define SMPD_FALSE 0#define SMPD_INVALID_SETTING -1#define SMPD_SERVER_AUTHENTICATION 0#define SMPD_CLIENT_AUTHENTICATION 1#define SMPD_MAX_NAME_LENGTH 256#define SMPD_MAX_VALUE_LENGTH 8192#define SMPD_MAX_FILENAME 1024#define SMPD_MAX_LINE_LENGTH 32768#define SMPD_MAX_ARGC 1024/*#define SMPD_MAX_STDOUT_LENGTH 1024*/#define SMPD_MAX_STDOUT_LENGTH (SMPD_MAX_CMD_LENGTH - 100)#define SMPD_MAX_SESSION_HEADER_LENGTH 1024#define SMPD_MAX_ERROR_LEN 1024#define SMPD_CMD_HDR_LENGTH 13#define SMPD_MAX_CMD_LENGTH 32768#define SMPD_MAX_DBG_PRINTF_LENGTH (1024 + SMPD_MAX_CMD_LENGTH)#define SMPD_MAX_CMD_STR_LENGTH 100#define SMPD_MAX_HOST_LENGTH 64#define SMPD_MAX_EXE_LENGTH 2048#define SMPD_MAX_ENV_LENGTH 4096#define SMPD_MAX_CLIQUE_LENGTH 8192#define SMPD_MAX_DIR_LENGTH 1024#define SMPD_MAX_PATH_LENGTH 1024#define SMPD_MAX_ACCOUNT_LENGTH 100#define SMPD_MAX_PASSWORD_LENGTH 200#define SMPD_MAX_CRED_REQUEST_LENGTH 100#define SMPD_MAX_PWD_REQUEST_LENGTH 100#define SMPD_MAX_PORT_STR_LENGTH 20#define SMPD_MAX_TO_STRING_INDENT 20#define SMPD_STDIN_PACKET_SIZE 2048#define SMPD_PASSPHRASE_MAX_LENGTH 256#define SMPD_SALT_VALUE "14"#define SMPD_SESSION_REQUEST_LEN 100#define SMPD_AUTHENTICATION_STR_LEN 256#define SMPD_AUTHENTICATION_REPLY_LENGTH 100#define SMPD_AUTHENTICATION_REJECTED_STR "FAIL"#define SMPD_AUTHENTICATION_REJECTED_VERSION_STR "FAIL_VERSION"#define SMPD_AUTHENTICATION_ACCEPTED_STR "SUCCESS"#define SMPD_SMPD_SESSION_STR "smpd"#define SMPD_PROCESS_SESSION_STR "process"#define SMPD_PMI_SESSION_STR "pmi"#define SMPD_DEFAULT_PASSPHRASE "behappy"#define SMPD_DEFAULT_PASSWORD "gastroduodenostomy"#define SMPD_REGISTRY_KEY "SOFTWARE\\MPICH\\SMPD"#define SMPD_REGISTRY_CACHE_KEY "SOFTWARE\\MPICH\\SMPD\\CACHE"#define MPICH_REGISTRY_KEY "SOFTWARE\\MPICH"#define SMPD_CRED_REQUEST "credentials"#define SMPD_CRED_REQUEST_JOB "job"#define SMPD_NO_CRED_REQUEST "nocredentials"#define SMPD_CRED_ACK_SSPI "sspi"#define SMPD_CRED_ACK_SSPI_JOB_KEY "sspi_job"#define SMPD_PWD_REQUEST "pwd"#define SMPD_NO_PWD_REQUEST "nopwd"#define SMPD_SSPI_REQUEST "sspi"#define SMPD_NO_RECONNECT_PORT_STR "-1"#define SMPD_SUCCESS_STR "SUCCESS"#define SMPD_FAIL_STR "FAIL"#define SMPD_OUTPUT_MUTEX_NAME "SMPD_OUTPUT_MUTEX"#define SMPD_DATA_MUTEX_NAME "SMPD_DATA_MUTEX"#define SMPD_DYNAMIC_HOSTS_KEY "dynamic_hosts"#define SMPD_PATH_SPEC "{SMPD_PATH}"#define SMPD_PLAINTEXT_PREFIX 'y'#define SMPD_ENCRYPTED_PREFIX 'x'#define SMPD_SSPI_HEADER_LENGTH SMPD_CMD_HDR_LENGTH#define SMPD_SSPI_JOB_KEY_LENGTH 100#define SMPD_SSPI_MAX_BUFFER_SIZE (4*1024)/*#define SMPD_SECURITY_PACKAGE "Kerberos"*/#define SMPD_SECURITY_PACKAGE "Negotiate"#define SMPD_ENV_OPTION_PREFIX "SMPD_OPTION_"#define SMPD_FREE_COOKIE 0xDDBEEFDD#define SMPD_DBG_STATE_STDOUT 0x01#define SMPD_DBG_STATE_ERROUT 0x02#define SMPD_DBG_STATE_LOGFILE 0x04#define SMPD_DBG_STATE_PREPEND_RANK 0x08#define SMPD_DBG_STATE_TRACE 0x10#define SMPD_DBG_STATE_ALL (SMPD_DBG_STATE_STDOUT | SMPD_DBG_STATE_ERROUT | SMPD_DBG_STATE_LOGFILE | SMPD_DBG_STATE_PREPEND_RANK | SMPD_DBG_STATE_TRACE)#define SMPD_DBG_FILE_SIZE (4*1024*1024)#define SMPD_QUOTE_CHAR '\"'#define SMPD_DELIM_CHAR '='#define SMPD_DELIM_STR "="#define SMPD_ESCAPE_CHAR '\\'#define SMPD_HIDE_CHAR '*'#define SMPD_SEPAR_CHAR ' '#define DBS_SUCCESS_STR "DBS_SUCCESS"#define DBS_FAIL_STR "DBS_FAIL"#define DBS_END_STR "DBS_END"#define PMI_KVS_ID_KEY "PMI_KVS_ID"#define SMPD_CONSOLE_STR_LENGTH 10*SMPD_MAX_CMD_LENGTH#define SMPD_DEFAULT_TIMEOUT 120#define SMPD_SHORT_TIMEOUT 60#define SMPD_DEFAULT_PRIORITY_CLASS 2#define SMPD_DEFAULT_PRIORITY 3#define SMPD_SINGLETON_MAX_KVS_NAME_LEN 100#define SMPD_SINGLETON_MAX_HOST_NAME_LEN 100#define SMPD_UNREFERENCED_ARG(a) a#ifdef HAVE_WINDOWS_H#define snprintf _snprintf#define vsnprintf _vsnprintf#define smpd_get_last_error GetLastError#else#define smpd_get_last_error() errno#endif#define SMPD_ERR_SETPRINTANDJUMP(msg, errcode) {smpd_err_printf("%s", msg); retval = errcode; goto fn_fail; }#define SMPD_MAX_ERR_MSG_LENGTH 100typedef enum smpd_state_t{ SMPD_IDLE, SMPD_EXITING, SMPD_RESTARTING, SMPD_DONE, SMPD_CLOSING, SMPD_SMPD_LISTENING, SMPD_MGR_LISTENING, SMPD_PMI_LISTENING, SMPD_PMI_SERVER_LISTENING, SMPD_SINGLETON_CLIENT_LISTENING, SMPD_SINGLETON_MPIEXEC_CONNECTING, SMPD_SINGLETON_READING_PMI_INFO, SMPD_SINGLETON_WRITING_PMI_INFO, SMPD_SINGLETON_DONE, SMPD_MPIEXEC_CONNECTING_TREE, SMPD_MPIEXEC_CONNECTING_SMPD, SMPD_CONNECTING_RPMI, SMPD_CONNECTING_PMI, SMPD_CONNECTING, SMPD_RECONNECTING, SMPD_READING_CHALLENGE_STRING, SMPD_WRITING_CHALLENGE_STRING, SMPD_READING_CHALLENGE_RESPONSE, SMPD_WRITING_CHALLENGE_RESPONSE, SMPD_READING_CONNECT_RESULT, SMPD_WRITING_CONNECT_RESULT, SMPD_READING_STDIN, SMPD_WRITING_DATA_TO_STDIN, SMPD_READING_STDOUT, SMPD_READING_STDERR, SMPD_READING_CMD_HEADER, SMPD_READING_CMD, SMPD_WRITING_CMD, SMPD_READING_SESSION_REQUEST, SMPD_WRITING_SMPD_SESSION_REQUEST, SMPD_WRITING_PROCESS_SESSION_REQUEST, SMPD_WRITING_PMI_SESSION_REQUEST, SMPD_READING_PWD_REQUEST, SMPD_WRITING_PWD_REQUEST, SMPD_WRITING_NO_PWD_REQUEST, SMPD_WRITING_SSPI_REQUEST, SMPD_READING_SMPD_PASSWORD, SMPD_WRITING_SMPD_PASSWORD, SMPD_READING_CRED_REQUEST, SMPD_WRITING_CRED_REQUEST, SMPD_WRITING_NO_CRED_REQUEST, SMPD_READING_CRED_ACK, SMPD_WRITING_CRED_ACK_YES, SMPD_WRITING_CRED_ACK_NO, SMPD_READING_ACCOUNT, SMPD_WRITING_ACCOUNT, SMPD_READING_PASSWORD, SMPD_WRITING_PASSWORD, SMPD_READING_RECONNECT_REQUEST, SMPD_WRITING_RECONNECT_REQUEST, SMPD_WRITING_NO_RECONNECT_REQUEST, SMPD_READING_SESSION_HEADER, SMPD_WRITING_SESSION_HEADER, SMPD_READING_SMPD_RESULT, SMPD_WRITING_SESSION_ACCEPT, SMPD_WRITING_SESSION_REJECT, SMPD_READING_PROCESS_RESULT, SMPD_WRITING_PROCESS_SESSION_ACCEPT, SMPD_WRITING_PROCESS_SESSION_REJECT, SMPD_READING_TIMEOUT, SMPD_READING_MPIEXEC_ABORT, SMPD_READING_PMI_ID, SMPD_WRITING_PMI_ID, SMPD_READING_SSPI_HEADER, SMPD_READING_SSPI_BUFFER, SMPD_WRITING_SSPI_HEADER, SMPD_WRITING_SSPI_BUFFER, SMPD_WRITING_DELEGATE_REQUEST, SMPD_READING_DELEGATE_REQUEST_RESULT, SMPD_WRITING_DELEGATE_REQUEST_RESULT, SMPD_WRITING_IMPERSONATE_RESULT, SMPD_READING_IMPERSONATE_RESULT, SMPD_WRITING_CRED_ACK_SSPI, SMPD_WRITING_CRED_ACK_SSPI_JOB_KEY, SMPD_WRITING_SSPI_JOB_KEY, SMPD_READING_SSPI_JOB_KEY, SMPD_READING_CLIENT_SSPI_HEADER, SMPD_READING_CLIENT_SSPI_BUFFER, SMPD_WRITING_CLIENT_SSPI_HEADER, SMPD_WRITING_CLIENT_SSPI_BUFFER, SMPD_END_MARKER_NUM_STATES} smpd_state_t;typedef enum smpd_context_type_t{ SMPD_CONTEXT_INVALID, SMPD_CONTEXT_STDIN, SMPD_CONTEXT_MPIEXEC_STDIN, SMPD_CONTEXT_MPIEXEC_STDIN_RSH, SMPD_CONTEXT_STDOUT, SMPD_CONTEXT_STDOUT_RSH, SMPD_CONTEXT_STDERR, SMPD_CONTEXT_STDERR_RSH, SMPD_CONTEXT_PARENT, SMPD_CONTEXT_LEFT_CHILD, SMPD_CONTEXT_RIGHT_CHILD, SMPD_CONTEXT_CHILD, SMPD_CONTEXT_LISTENER, SMPD_CONTEXT_PMI_LISTENER, SMPD_CONTEXT_SMPD, SMPD_CONTEXT_PMI, SMPD_CONTEXT_TIMEOUT, SMPD_CONTEXT_MPIEXEC_ABORT, SMPD_CONTEXT_SINGLETON_INIT_CLIENT, SMPD_CONTEXT_SINGLETON_INIT_MPIEXEC, SMPD_CONTEXT_UNDETERMINED, SMPD_CONTEXT_FREED} smpd_context_type_t;typedef enum smpd_context_target_t{ SMPD_TARGET_UNDETERMINED, SMPD_TARGET_SMPD, SMPD_TARGET_PROCESS, SMPD_TARGET_PMI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -