From b9973d910b97b734c80b1dd24777b4d53aaaadb2 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Thu, 2 Oct 2014 20:21:24 +0200 Subject: kern/error: new error_check function --- kern/error.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 kern/error.c (limited to 'kern/error.c') diff --git a/kern/error.c b/kern/error.c new file mode 100644 index 0000000..3e50149 --- /dev/null +++ b/kern/error.c @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014 Richard Braun. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +void +error_check(int error, const char *prefix) +{ + const char *msg; + + switch (error) { + case 0: + return; + case ERROR_NOMEM: + msg = "out of memory"; + break; + case ERROR_AGAIN: + msg = "resource temporarily unavailable"; + break; + case ERROR_INVAL: + msg = "invalid argument"; + break; + case ERROR_BUSY: + msg = "device or resource busy"; + break; + default: + msg = "unknown error"; + } + + panic("%s%s%s", + (prefix == NULL) ? "" : prefix, + (prefix == NULL) ? "" : ": ", + msg); +} -- cgit v1.2.3