From 8343334d7b9cd4338bdac80e17be079cbc675ec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Wed, 4 Mar 2020 11:27:01 +0200 Subject: improve strerror speed change the current O(n) lookup to O(1) based on the machinery described in "How To Write Shared Libraries" (Appendix B). --- src/errno/__strerror.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src/errno/__strerror.h') diff --git a/src/errno/__strerror.h b/src/errno/__strerror.h index 2f04d400..2d992da5 100644 --- a/src/errno/__strerror.h +++ b/src/errno/__strerror.h @@ -1,8 +1,9 @@ -/* This file is sorted such that 'errors' which represent exceptional - * conditions under which a correct program may fail come first, followed - * by messages that indicate an incorrect program or system failure. The - * macro E() along with double-inclusion is used to ensure that ordering - * of the strings remains synchronized. */ +/* The first entry is a catch-all for codes not enumerated here. + * This file is included multiple times to declare and define a structure + * with these messages, and then to define a lookup table translating + * error codes to offsets of corresponding fields in the structure. */ + +E(0, "No error information") E(EILSEQ, "Illegal byte sequence") E(EDOM, "Domain error") @@ -101,5 +102,3 @@ E(EDQUOT, "Quota exceeded") E(ENOMEDIUM, "No medium found") E(EMEDIUMTYPE, "Wrong medium type") E(EMULTIHOP, "Multihop attempted") - -E(0, "No error information") -- cgit v1.2.1