Author: dteske
Date: Fri Feb 16 04:22:29 2018
New Revision: 329353
URL: https://svnweb.freebsd.org/changeset/base/329353

Log:
  Add inline to errno.d for translating int to string
  
  Gives DTrace scripts strerror(3) functionality.
  
  Reviewed by:  markj
  Sponsored by: Smule, Inc.
  Differential Revision:        https://reviews.freebsd.org/D14386

Modified:
  head/cddl/lib/libdtrace/errno.d

Modified: head/cddl/lib/libdtrace/errno.d
==============================================================================
--- head/cddl/lib/libdtrace/errno.d     Fri Feb 16 04:10:10 2018        
(r329352)
+++ head/cddl/lib/libdtrace/errno.d     Fri Feb 16 04:22:29 2018        
(r329353)
@@ -20,6 +20,7 @@
  * CDDL HEADER END
  *
  * Portions Copyright 2006-2008 John Birrell j...@freebsd.org
+ * Portions Copyright 2018 Devin Teske dte...@freebsd.org
  *
  * $FreeBSD$
  */
@@ -236,3 +237,112 @@ inline int EDIRIOCTL = -4;
 #pragma D binding "1.0" EDIRIOCTL
 inline int ERELOOKUP = -5;
 #pragma D binding "1.13" ERELOOKUP
+
+/*
+ * Error strings from <sys/errno.h>
+ */
+#pragma D binding "1.13" strerror
+inline string strerror[int errno] =
+       errno == 0 ?                    "Success" :
+       errno == EPERM ?                "Operation not permitted" :
+       errno == ENOENT ?               "No such file or directory" :
+       errno == ESRCH ?                "No such process" :
+       errno == EINTR ?                "Interrupted system call" :
+       errno == EIO ?                  "Input/output error" :
+       errno == ENXIO ?                "Device not configured" :
+       errno == E2BIG ?                "Argument list too long" :
+       errno == ENOEXEC ?              "Exec format error" :
+       errno == EBADF ?                "Bad file descriptor" :
+       errno == ECHILD ?               "No child processes" :
+       errno == EDEADLK ?              "Resource deadlock avoided" :
+       errno == ENOMEM ?               "Cannot allocate memory" :
+       errno == EACCES ?               "Permission denied" :
+       errno == EFAULT ?               "Bad address" :
+       errno == ENOTBLK ?              "Block device required" :
+       errno == EBUSY ?                "Device busy" :
+       errno == EEXIST ?               "File exists" :
+       errno == EXDEV ?                "Cross-device link" :
+       errno == ENODEV ?               "Operation not supported by device" :
+       errno == ENOTDIR ?              "Not a directory" :
+       errno == EISDIR ?               "Is a directory" :
+       errno == EINVAL ?               "Invalid argument" :
+       errno == ENFILE ?               "Too many open files in system" :
+       errno == EMFILE ?               "Too many open files" :
+       errno == ENOTTY ?               "Inappropriate ioctl for device" :
+       errno == ETXTBSY ?              "Text file busy" :
+       errno == EFBIG ?                "File too large" :
+       errno == ENOSPC ?               "No space left on device" :
+       errno == ESPIPE ?               "Illegal seek" :
+       errno == EROFS ?                "Read-only filesystem" :
+       errno == EMLINK ?               "Too many links" :
+       errno == EPIPE ?                "Broken pipe" :
+       errno == EDOM ?                 "Numerical argument out of domain" :
+       errno == ERANGE ?               "Result too large" :
+       errno == EAGAIN ?               "Resource temporarily unavailable" :
+       errno == EINPROGRESS ?          "Operation now in progress" :
+       errno == EALREADY ?             "Operation already in progress" :
+       errno == ENOTSOCK ?             "Socket operation on non-socket" :
+       errno == EDESTADDRREQ ?         "Destination address required" :
+       errno == EMSGSIZE ?             "Message too long" :
+       errno == EPROTOTYPE ?           "Protocol wrong type for socket" :
+       errno == ENOPROTOOPT ?          "Protocol not available" :
+       errno == EPROTONOSUPPORT ?      "Protocol not supported" :
+       errno == ESOCKTNOSUPPORT ?      "Socket type not supported" :
+       errno == EOPNOTSUPP ?           "Operation not supported" :
+       errno == EPFNOSUPPORT ?         "Protocol family not supported" :
+       errno == EAFNOSUPPORT ?         "Address family not supported by 
protocol family" :
+       errno == EADDRINUSE ?           "Address already in use" :
+       errno == EADDRNOTAVAIL ?        "Can't assign requested address" :
+       errno == ENETDOWN ?             "Network is down" :
+       errno == ENETUNREACH ?          "Network is unreachable" :
+       errno == ENETRESET ?            "Network dropped connection on reset" :
+       errno == ECONNABORTED ?         "Software caused connection abort" :
+       errno == ECONNRESET ?           "Connection reset by peer" :
+       errno == ENOBUFS ?              "No buffer space available" :
+       errno == EISCONN ?              "Socket is already connected" :
+       errno == ENOTCONN ?             "Socket is not connected" :
+       errno == ESHUTDOWN ?            "Can't send after socket shutdown" :
+       errno == ETOOMANYREFS ?         "Too many references: can't splice" :
+       errno == ETIMEDOUT ?            "Operation timed out" :
+       errno == ECONNREFUSED ?         "Connection refused" :
+       errno == ELOOP ?                "Too many levels of symbolic links" :
+       errno == ENAMETOOLONG ?         "File name too long" :
+       errno == EHOSTDOWN ?            "Host is down" :
+       errno == EHOSTUNREACH ?         "No route to host" :
+       errno == ENOTEMPTY ?            "Directory not empty" :
+       errno == EPROCLIM ?             "Too many processes" :
+       errno == EUSERS ?               "Too many users" :
+       errno == EDQUOT ?               "Disc quota exceeded" :
+       errno == ESTALE ?               "Stale NFS file handle" :
+       errno == EREMOTE ?              "Too many levels of remote in path" :
+       errno == EBADRPC ?              "RPC struct is bad" :
+       errno == ERPCMISMATCH ?         "RPC version wrong" :
+       errno == EPROGUNAVAIL ?         "RPC prog. not avail" :
+       errno == EPROGMISMATCH ?        "Program version wrong" :
+       errno == EPROCUNAVAIL ?         "Bad procedure for program" :
+       errno == ENOLCK ?               "No locks available" :
+       errno == ENOSYS ?               "Function not implemented" :
+       errno == EFTYPE ?               "Inappropriate file type or format" :
+       errno == EAUTH ?                "Authentication error" :
+       errno == ENEEDAUTH ?            "Need authenticator" :
+       errno == EIDRM ?                "Identifier removed" :
+       errno == ENOMSG ?               "No message of desired type" :
+       errno == EOVERFLOW ?            "Value too large to be stored in data 
type" :
+       errno == ECANCELED ?            "Operation canceled" :
+       errno == EILSEQ ?               "Illegal byte sequence" :
+       errno == ENOATTR ?              "Attribute not found" :
+       errno == EDOOFUS ?              "Programming error" :
+       errno == EBADMSG ?              "Bad message" :
+       errno == EMULTIHOP ?            "Multihop attempted" :
+       errno == ENOLINK ?              "Link has been severed" :
+       errno == EPROTO ?               "Protocol error" :
+       errno == ENOTCAPABLE ?          "Capabilities insufficient" :
+       errno == ECAPMODE ?             "Not permitted in capability mode" :
+       errno == ENOTRECOVERABLE ?      "State not recoverable" :
+       errno == EOWNERDEAD ?           "Previous owner died" :
+       errno == ERESTART ?             "restart syscall" :
+       errno == EJUSTRETURN ?          "don't modify regs, just return" :
+       errno == ENOIOCTL ?             "ioctl not handled by this layer" :
+       errno == EDIRIOCTL ?            "do direct ioctl in GEOM" :
+       errno == ERELOOKUP ?            "retry the directory lookup" :
+       "Unknown error";
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to