1 /*****************************************************************************\ 2 * slurm_errno.h - error codes and functions for slurm 3 ****************************************************************************** 4 * Copyright (C) 2002-2007 The Regents of the University of California. 5 * Copyright (C) 2008-2009 Lawrence Livermore National Security. 6 * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). 7 * Written by Kevin Tew <tew1@llnl.gov>, 8 * Jim Garlick <garlick@llnl.gov>, et. al. 9 * CODE-OCEC-09-009. All rights reserved. 10 * 11 * This file is part of Slurm, a resource management program. 12 * For details, see <https://slurm.schedmd.com/>. 13 * Please also read the included file: DISCLAIMER. 14 * 15 * Slurm is free software; you can redistribute it and/or modify it under 16 * the terms of the GNU General Public License as published by the Free 17 * Software Foundation; either version 2 of the License, or (at your option) 18 * any later version. 19 * 20 * In addition, as a special exception, the copyright holders give permission 21 * to link the code of portions of this program with the OpenSSL library under 22 * certain conditions as described in each individual source file, and 23 * distribute linked combinations including the two. You must obey the GNU 24 * General Public License in all respects for all of the code used other than 25 * OpenSSL. If you modify file(s) with this exception, you may extend this 26 * exception to your version of the file(s), but you are not obligated to do 27 * so. If you do not wish to do so, delete this exception statement from your 28 * version. If you delete this exception statement from all source files in 29 * the program, then also delete it here. 30 * 31 * Slurm is distributed in the hope that it will be useful, but WITHOUT ANY 32 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 33 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 34 * details. 35 * 36 * You should have received a copy of the GNU General Public License along 37 * with Slurm; if not, write to the Free Software Foundation, Inc., 38 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 39 \*****************************************************************************/ 40 #ifndef _SLURM_ERRNO_H 41 #define _SLURM_ERRNO_H 42 43 #ifdef __cplusplus 44 extern "C" { 45 #endif 46 47 #include <errno.h> 48 49 /* set errno to the specified value - then return -1 */ 50 #define slurm_seterrno_ret(errnum) do { \ 51 slurm_seterrno(errnum); \ 52 return (errnum ? -1 : 0); \ 53 } while (0) 54 55 /* general return codes */ 56 #define SLURM_SUCCESS 0 57 #define SLURM_ERROR -1 58 59 enum { 60 /* General Message error codes */ 61 SLURM_UNEXPECTED_MSG_ERROR = 1000, 62 SLURM_COMMUNICATIONS_CONNECTION_ERROR, 63 SLURM_COMMUNICATIONS_SEND_ERROR, 64 SLURM_COMMUNICATIONS_RECEIVE_ERROR, 65 SLURM_COMMUNICATIONS_SHUTDOWN_ERROR, 66 SLURM_PROTOCOL_VERSION_ERROR, 67 SLURM_PROTOCOL_IO_STREAM_VERSION_ERROR, 68 SLURM_PROTOCOL_AUTHENTICATION_ERROR, 69 SLURM_PROTOCOL_INSANE_MSG_LENGTH, 70 SLURM_MPI_PLUGIN_NAME_INVALID, 71 SLURM_MPI_PLUGIN_PRELAUNCH_SETUP_FAILED, 72 SLURM_PLUGIN_NAME_INVALID, 73 SLURM_UNKNOWN_FORWARD_ADDR, 74 75 /* communication failures to/from slurmctld */ 76 SLURMCTLD_COMMUNICATIONS_CONNECTION_ERROR = 1800, 77 SLURMCTLD_COMMUNICATIONS_SEND_ERROR, 78 SLURMCTLD_COMMUNICATIONS_RECEIVE_ERROR, 79 SLURMCTLD_COMMUNICATIONS_SHUTDOWN_ERROR, 80 81 /* _info.c/communication layer RESPONSE_SLURM_RC message codes */ 82 SLURM_NO_CHANGE_IN_DATA = 1900, 83 84 /* slurmctld error codes */ 85 ESLURM_INVALID_PARTITION_NAME = 2000, 86 ESLURM_DEFAULT_PARTITION_NOT_SET, 87 ESLURM_ACCESS_DENIED, 88 ESLURM_JOB_MISSING_REQUIRED_PARTITION_GROUP, 89 ESLURM_REQUESTED_NODES_NOT_IN_PARTITION, 90 ESLURM_TOO_MANY_REQUESTED_CPUS, 91 ESLURM_INVALID_NODE_COUNT, 92 ESLURM_ERROR_ON_DESC_TO_RECORD_COPY, 93 ESLURM_JOB_MISSING_SIZE_SPECIFICATION, 94 ESLURM_JOB_SCRIPT_MISSING, 95 ESLURM_USER_ID_MISSING = 2010, 96 ESLURM_DUPLICATE_JOB_ID, 97 ESLURM_PATHNAME_TOO_LONG, 98 ESLURM_NOT_TOP_PRIORITY, 99 ESLURM_REQUESTED_NODE_CONFIG_UNAVAILABLE, 100 ESLURM_REQUESTED_PART_CONFIG_UNAVAILABLE, 101 ESLURM_NODES_BUSY, 102 ESLURM_INVALID_JOB_ID, 103 ESLURM_INVALID_NODE_NAME, 104 ESLURM_WRITING_TO_FILE, 105 ESLURM_TRANSITION_STATE_NO_UPDATE = 2020, 106 ESLURM_ALREADY_DONE, 107 ESLURM_INTERCONNECT_FAILURE, 108 ESLURM_BAD_DIST, 109 ESLURM_JOB_PENDING, 110 ESLURM_BAD_TASK_COUNT, 111 ESLURM_INVALID_JOB_CREDENTIAL, 112 ESLURM_IN_STANDBY_MODE, 113 ESLURM_INVALID_NODE_STATE, 114 ESLURM_INVALID_FEATURE, 115 ESLURM_INVALID_AUTHTYPE_CHANGE = 2030, 116 ESLURM_ACTIVE_FEATURE_NOT_SUBSET, 117 ESLURM_INVALID_SCHEDTYPE_CHANGE, 118 ESLURM_INVALID_SELECTTYPE_CHANGE, 119 ESLURM_INVALID_SWITCHTYPE_CHANGE, 120 ESLURM_FRAGMENTATION, 121 ESLURM_NOT_SUPPORTED, 122 ESLURM_DISABLED, 123 ESLURM_DEPENDENCY, 124 ESLURM_BATCH_ONLY, 125 ESLURM_TASKDIST_ARBITRARY_UNSUPPORTED = 2040, 126 ESLURM_TASKDIST_REQUIRES_OVERCOMMIT, 127 ESLURM_JOB_HELD, 128 ESLURM_INVALID_CRED_TYPE_CHANGE, 129 ESLURM_INVALID_TASK_MEMORY, 130 ESLURM_INVALID_ACCOUNT, 131 ESLURM_INVALID_PARENT_ACCOUNT, 132 ESLURM_SAME_PARENT_ACCOUNT, 133 ESLURM_INVALID_LICENSES, 134 ESLURM_NEED_RESTART, 135 ESLURM_ACCOUNTING_POLICY = 2050, 136 ESLURM_INVALID_TIME_LIMIT, 137 ESLURM_RESERVATION_ACCESS, 138 ESLURM_RESERVATION_INVALID, 139 ESLURM_INVALID_TIME_VALUE, 140 ESLURM_RESERVATION_BUSY, 141 ESLURM_RESERVATION_NOT_USABLE, 142 ESLURM_INVALID_WCKEY, 143 ESLURM_RESERVATION_OVERLAP, 144 ESLURM_PORTS_BUSY, 145 ESLURM_PORTS_INVALID = 2060, 146 ESLURM_PROLOG_RUNNING, 147 ESLURM_NO_STEPS, 148 ESLURM_INVALID_BLOCK_STATE, 149 ESLURM_INVALID_BLOCK_LAYOUT, 150 ESLURM_INVALID_BLOCK_NAME, 151 ESLURM_INVALID_QOS, 152 ESLURM_QOS_PREEMPTION_LOOP, 153 ESLURM_NODE_NOT_AVAIL, 154 ESLURM_INVALID_CPU_COUNT, 155 ESLURM_PARTITION_NOT_AVAIL = 2070, 156 ESLURM_CIRCULAR_DEPENDENCY, 157 ESLURM_INVALID_GRES, 158 ESLURM_JOB_NOT_PENDING, 159 ESLURM_QOS_THRES, 160 ESLURM_PARTITION_IN_USE, 161 ESLURM_STEP_LIMIT, 162 ESLURM_JOB_SUSPENDED, 163 ESLURM_CAN_NOT_START_IMMEDIATELY, 164 ESLURM_INTERCONNECT_BUSY, 165 ESLURM_RESERVATION_EMPTY = 2080, 166 ESLURM_INVALID_ARRAY, 167 ESLURM_RESERVATION_NAME_DUP, 168 ESLURM_JOB_STARTED, 169 ESLURM_JOB_FINISHED, 170 ESLURM_JOB_NOT_RUNNING, 171 ESLURM_JOB_NOT_PENDING_NOR_RUNNING, 172 ESLURM_JOB_NOT_SUSPENDED, 173 ESLURM_JOB_NOT_FINISHED, 174 ESLURM_TRIGGER_DUP, 175 ESLURM_INTERNAL = 2090, 176 ESLURM_INVALID_BURST_BUFFER_CHANGE, 177 ESLURM_BURST_BUFFER_PERMISSION, 178 ESLURM_BURST_BUFFER_LIMIT, 179 ESLURM_INVALID_BURST_BUFFER_REQUEST, 180 ESLURM_PRIO_RESET_FAIL, 181 ESLURM_POWER_NOT_AVAIL, 182 ESLURM_POWER_RESERVED, 183 ESLURM_INVALID_POWERCAP, 184 ESLURM_INVALID_MCS_LABEL, 185 ESLURM_BURST_BUFFER_WAIT = 2100, 186 ESLURM_PARTITION_DOWN, 187 ESLURM_DUPLICATE_GRES, 188 ESLURM_JOB_SETTING_DB_INX, 189 ESLURM_RSV_ALREADY_STARTED, 190 ESLURM_SUBMISSIONS_DISABLED, 191 ESLURM_NOT_HET_JOB, 192 ESLURM_NOT_HET_JOB_LEADER, 193 ESLURM_NOT_WHOLE_HET_JOB, 194 ESLURM_CORE_RESERVATION_UPDATE, 195 ESLURM_DUPLICATE_STEP_ID = 2110, 196 ESLURM_INVALID_CORE_CNT, 197 ESLURM_X11_NOT_AVAIL, 198 ESLURM_GROUP_ID_MISSING, 199 ESLURM_BATCH_CONSTRAINT, 200 ESLURM_INVALID_TRES, 201 ESLURM_INVALID_TRES_BILLING_WEIGHTS, 202 ESLURM_INVALID_JOB_DEFAULTS, 203 ESLURM_RESERVATION_MAINT, 204 ESLURM_INVALID_GRES_TYPE, 205 ESLURM_REBOOT_IN_PROGRESS = 2120, 206 ESLURM_MULTI_KNL_CONSTRAINT, 207 ESLURM_UNSUPPORTED_GRES, 208 ESLURM_INVALID_NICE, 209 ESLURM_INVALID_TIME_MIN_LIMIT, 210 ESLURM_DEFER, 211 ESLURM_CONFIGLESS_DISABLED, 212 ESLURM_ENVIRONMENT_MISSING, 213 214 /* slurmd error codes */ 215 ESLURMD_PIPE_ERROR_ON_TASK_SPAWN = 4000, 216 ESLURMD_KILL_TASK_FAILED, 217 ESLURMD_KILL_JOB_ALREADY_COMPLETE, 218 ESLURMD_INVALID_ACCT_FREQ, 219 ESLURMD_INVALID_JOB_CREDENTIAL, 220 ESLURMD_UID_NOT_FOUND, 221 ESLURMD_GID_NOT_FOUND, 222 ESLURMD_CREDENTIAL_EXPIRED, 223 ESLURMD_CREDENTIAL_REVOKED, 224 ESLURMD_CREDENTIAL_REPLAYED, 225 ESLURMD_CREATE_BATCH_DIR_ERROR = 4010, 226 ESLURMD_MODIFY_BATCH_DIR_ERROR, 227 ESLURMD_CREATE_BATCH_SCRIPT_ERROR, 228 ESLURMD_MODIFY_BATCH_SCRIPT_ERROR, 229 ESLURMD_SETUP_ENVIRONMENT_ERROR, 230 ESLURMD_SHARED_MEMORY_ERROR, 231 ESLURMD_SET_UID_OR_GID_ERROR, 232 ESLURMD_SET_SID_ERROR, 233 ESLURMD_CANNOT_SPAWN_IO_THREAD, 234 ESLURMD_FORK_FAILED, 235 ESLURMD_EXECVE_FAILED = 4020, 236 ESLURMD_IO_ERROR, 237 ESLURMD_PROLOG_FAILED, 238 ESLURMD_EPILOG_FAILED, 239 ESLURMD_SESSION_KILLED, 240 ESLURMD_TOOMANYSTEPS, 241 ESLURMD_STEP_EXISTS, 242 ESLURMD_JOB_NOTRUNNING, 243 ESLURMD_STEP_SUSPENDED, 244 ESLURMD_STEP_NOTSUSPENDED, 245 ESLURMD_INVALID_SOCKET_NAME_LEN = 4030, 246 247 /* slurmd errors in user batch job */ 248 ESCRIPT_CHDIR_FAILED = 4100, 249 ESCRIPT_OPEN_OUTPUT_FAILED, 250 ESCRIPT_NON_ZERO_RETURN, 251 252 /* socket specific Slurm communications error */ 253 SLURM_PROTOCOL_SOCKET_IMPL_ZERO_RECV_LENGTH = 5000, 254 SLURM_PROTOCOL_SOCKET_IMPL_NEGATIVE_RECV_LENGTH, 255 SLURM_PROTOCOL_SOCKET_IMPL_NOT_ALL_DATA_SENT, 256 ESLURM_PROTOCOL_INCOMPLETE_PACKET , 257 SLURM_PROTOCOL_SOCKET_IMPL_TIMEOUT , 258 SLURM_PROTOCOL_SOCKET_ZERO_BYTES_SENT, 259 260 /* slurm_auth errors */ 261 ESLURM_AUTH_CRED_INVALID = 6000, 262 ESLURM_AUTH_FOPEN_ERROR, 263 ESLURM_AUTH_NET_ERROR, 264 ESLURM_AUTH_UNABLE_TO_SIGN, 265 ESLURM_AUTH_BADARG, 266 ESLURM_AUTH_MEMORY, 267 ESLURM_AUTH_INVALID, 268 ESLURM_AUTH_UNPACK, 269 270 /* accounting errors */ 271 ESLURM_DB_CONNECTION = 7000, 272 ESLURM_JOBS_RUNNING_ON_ASSOC, 273 ESLURM_CLUSTER_DELETED, 274 ESLURM_ONE_CHANGE, 275 ESLURM_BAD_NAME, 276 ESLURM_OVER_ALLOCATE, 277 ESLURM_RESULT_TOO_LARGE, 278 ESLURM_DB_QUERY_TOO_WIDE, 279 280 /* Federation Errors */ 281 ESLURM_FED_CLUSTER_MAX_CNT = 7100, 282 ESLURM_FED_CLUSTER_MULTIPLE_ASSIGNMENT, 283 ESLURM_INVALID_CLUSTER_FEATURE, 284 ESLURM_JOB_NOT_FEDERATED, 285 ESLURM_INVALID_CLUSTER_NAME, 286 ESLURM_FED_JOB_LOCK, 287 ESLURM_FED_NO_VALID_CLUSTERS, 288 289 /* plugin and custom errors */ 290 ESLURM_MISSING_TIME_LIMIT = 8000, 291 ESLURM_INVALID_KNL 292 }; 293 294 /* look up an errno value */ 295 char * slurm_strerror(int errnum); 296 297 /* set an errno value */ 298 void slurm_seterrno(int errnum); 299 300 /* get an errno value */ 301 int slurm_get_errno(void); 302 303 /* print message: error string for current errno value */ 304 void slurm_perror(const char *msg); 305 306 #ifdef __cplusplus 307 } 308 #endif 309 310 #endif /* !_SLURM_ERRNO_H */ 311