1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2019-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  * Description:
8  *     Framework status code helpers.
9  */
10 
11 #include <fwk_macros.h>
12 #include <fwk_status.h>
13 
14 static const char *const error_string[19] = {
15     [-FWK_E_PARAM] = "E_PARAM",
16     [-FWK_E_ALIGN] = "E_ALIGN",
17     [-FWK_E_SIZE] = "E_SIZE",
18     [-FWK_E_HANDLER] = "E_HANDLER",
19     [-FWK_E_ACCESS] = "E_ACCESS",
20     [-FWK_E_RANGE] = "E_RANGE",
21     [-FWK_E_TIMEOUT] = "E_TIMEOUT",
22     [-FWK_E_NOMEM] = "E_NOMEM",
23     [-FWK_E_PWRSTATE] = "E_PWRSTATE",
24     [-FWK_E_SUPPORT] = "E_SUPPORT",
25     [-FWK_E_DEVICE] = "E_DEVICE",
26     [-FWK_E_BUSY] = "E_BUSY",
27     [-FWK_E_OS] = "E_OS",
28     [-FWK_E_DATA] = "E_DATA",
29     [-FWK_E_STATE] = "E_STATE",
30     [-FWK_E_INIT] = "E_INIT",
31     [-FWK_E_OVERWRITTEN] = "E_OVERWRITTEN",
32     [-FWK_E_PANIC] = "E_PANIC",
33 };
34 
35 static const char *const status_string[2] = {
36     [FWK_SUCCESS] = "SUCCESS",
37     [FWK_PENDING] = "PENDING",
38 };
39 
fwk_status_str(int status)40 const char *fwk_status_str(int status)
41 {
42     static const char unknown[] = "unknown";
43 
44     unsigned int error_idx = (unsigned int)(-status);
45 
46     if ((status < 0) && (error_idx < FWK_ARRAY_SIZE(error_string))) {
47         return error_string[error_idx];
48     } else if ((status >= 0) && (status < (int)FWK_ARRAY_SIZE(status_string))) {
49         return status_string[status];
50     }
51 
52     return unknown;
53 }
54