1 /* 2 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 3 * Use is subject to license terms. 4 */ 5 6 #pragma ident "%Z%%M% %I% %E% SMI" 7 8 #include <strings.h> 9 #include <scsi/libses.h> 10 11 static const struct { 12 char *se_name; /* error name */ 13 char *se_msg; /* error message */ 14 } _ses_errstr[] = { 15 { "ESES_NONE", "no error" }, 16 { "ESES_NOMEM", "no memory" }, 17 { "ESES_ZERO_LENGTH","zero-length allocation requested" }, 18 { "ESES_VERSION", "library version mismatch" }, 19 { "ESES_NVL", "nvlist manipulation error" }, 20 { "ESES_BAD_NODE", "bad node" }, 21 { "ESES_INVALID_OP","invalid operation" }, 22 { "ESES_RANGE", "value out of range" }, 23 { "ESES_INVALID_PROP","nonexistent or immutable property" }, 24 { "ESES_BAD_TYPE", "incorrect property type" }, 25 { "ESES_BAD_PAGE", "bad page number" }, 26 { "ESES_BAD_RESPONSE","bad response from target" }, 27 { "ESES_BUSY", "target busy" }, 28 { "ESES_TOOMUCHCHANGE","target configuration changing too rapidly" }, 29 { "ESES_LIBSCSI", "SCSI error" }, 30 { "ESES_NOTSUP", "operation not supported" }, 31 { "ESES_UNKNOWN", "error of unknown type" }, 32 { "ESES_CHANGED", "generation count has changed" }, 33 { "ESES_PLUGIN", "invalid or missing plugin" }, 34 { "ESES_MAX", "maximum libses errno value" }, 35 }; 36 37 static int _ses_nerrno = sizeof (_ses_errstr) / sizeof (_ses_errstr[0]); 38 39 const char * 40 ses_strerror(ses_errno_t err) 41 { 42 return (err < 0 || err >= _ses_nerrno ? "unknown error" : 43 _ses_errstr[err].se_msg); 44 } 45 46 const char * 47 ses_errname(ses_errno_t err) 48 { 49 return (err < 0 || err >= _ses_nerrno ? NULL : 50 _ses_errstr[err].se_name); 51 } 52 53 ses_errno_t 54 ses_errcode(const char *name) 55 { 56 ses_errno_t err; 57 58 for (err = 0; err < _ses_nerrno; err++) { 59 if (strcmp(name, _ses_errstr[err].se_name) == 0) 60 return (err); 61 } 62 63 return (ESES_UNKNOWN); 64 } 65