From 5afa41551b3d8e0a84cf21cebfc89a194d326e76 Mon Sep 17 00:00:00 2001 From: Stephen Cprek Date: Thu, 6 Apr 2017 17:08:15 -0500 Subject: Add map list initialization and at() methods Also add ErrnoToString() as a test which is a functionality ported from p8 Change-Id: Ia6dd9b37638af2634267e224d9b97133bf984fb4 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38956 Tested-by: Jenkins Server Reviewed-by: Nicholas E. Bofferding Reviewed-by: Martin Gloff Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- src/lib/errno.C | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib/makefile | 1 + 2 files changed, 61 insertions(+) create mode 100644 src/lib/errno.C (limited to 'src/lib') diff --git a/src/lib/errno.C b/src/lib/errno.C new file mode 100644 index 000000000..d4597d23a --- /dev/null +++ b/src/lib/errno.C @@ -0,0 +1,60 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/lib/errno.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2017 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +#include + +const char * ErrnoToString( int i_errno ) +{ + // Map of errnos to string. + // Kept within function for deferred malloc and more error handling + // Otherwise the map is malloc'd before memory is initialized + // Note: All keys and values are preceded with a '-', this is because the + // the errno's will be set to 2's complement when there's an error. + static const std::map ErrnoToStringMap = + { + { -ENOENT , "-ENOENT"}, + { -EIO , "-EIO"}, + { -ENXIO , "-ENXIO"}, + { -ENOEXEC , "-ENOEXEC"}, + { -EBADF , "-EBADF"}, + { -EAGAIN , "-EAGAIN"}, + { -EACCES , "-EACCES"}, + { -EFAULT , "-EFAULT"}, + { -EINVAL , "-EINVAL"}, + { -ENFILE , "-ENFILE"}, + { -EDEADLK , "-EDEADLK"}, + { -ETIME , "-ETIME"}, + { -EALREADY , "-EALREADY"}, + { -EWOULDBLOCK, "-EWOULDBLOCK"}, + }; + + if (ErrnoToStringMap.count(i_errno) > 0) + { + return ErrnoToStringMap.at(i_errno); + } + else + { + return "UNKNOWN"; + } +} \ No newline at end of file diff --git a/src/lib/makefile b/src/lib/makefile index 5fdf78ac8..5e64025d1 100644 --- a/src/lib/makefile +++ b/src/lib/makefile @@ -49,6 +49,7 @@ OBJS += crc32.o OBJS += utilmisc.o OBJS += tls.o +OBJS += errno.o ifdef HOSTBOOT_MEMORY_LEAKS COMMONFLAGS += -DHOSTBOOT_MEMORY_LEAKS=1 -- cgit v1.2.1