90 lines
2.1 KiB
C++
90 lines
2.1 KiB
C++
/*
|
|
* statuscodes.h
|
|
* MontaukOS status codes
|
|
* Copyright (c) 2026 Daniel Hammer
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
// Userspace status codes.
|
|
// Analogous to kernel/src/Common/StatusCodes.hpp, but positive numbers are used.
|
|
#ifdef __cplusplus
|
|
namespace montauk {
|
|
#endif
|
|
|
|
typedef enum {
|
|
Success = 0,
|
|
GenericFailure = 1,
|
|
PermissionDenied = 2,
|
|
CapabilityDenied = 3,
|
|
SystemIntegrityError = 4,
|
|
BadPointer = 5,
|
|
InvalidArgument = 6,
|
|
UnsupportedOp = 7,
|
|
NoDevice = 8,
|
|
IoFailure = 9,
|
|
BadInvocation = 10,
|
|
NoSuchPath = 11,
|
|
Busy = 12,
|
|
BufferTooSmall = 13,
|
|
OutOfMemory = 14
|
|
} StatusCodes;
|
|
|
|
inline const char* GetStatusText(StatusCodes statusCode) {
|
|
const char* statusText[] = {
|
|
"Success", // 0
|
|
"Generic failure", // 1
|
|
"Permission denied", // 2
|
|
"Capability denied", // 3
|
|
"System integrity error", // 4
|
|
"Bad pointer", // 5
|
|
"Invalid argument", // 6
|
|
"Unsupported operation", // 7
|
|
"No device", // 8
|
|
"I/O failure", // 9
|
|
"Bad invocation", // 10
|
|
"No such path", // 11
|
|
"Busy", // 12
|
|
"Buffer too small", // 13
|
|
"Out of memory", // 14
|
|
};
|
|
|
|
if (statusCode > 0 && statusCode <= 14) {
|
|
return statusText[statusCode];
|
|
} else {
|
|
return "Unknown error";
|
|
}
|
|
}
|
|
|
|
inline const char* GetStatusExplanationText(StatusCodes statusCode) {
|
|
const char* explanationText[] = {
|
|
nullptr, // 0
|
|
nullptr, // 1
|
|
nullptr, // 2
|
|
nullptr, // 3
|
|
"The path is protected by the system and cannot be modified.", // 4
|
|
nullptr, // 5
|
|
nullptr, // 6
|
|
nullptr, // 7
|
|
nullptr, // 8
|
|
nullptr, // 9
|
|
nullptr, // 10
|
|
nullptr, // 11
|
|
nullptr, // 12
|
|
"The buffer supplied by the caller is too small.", // 13
|
|
nullptr, // 14
|
|
};
|
|
|
|
if (statusCode > 0 && statusCode <= 14) {
|
|
if (explanationText[statusCode] != nullptr) {
|
|
return explanationText[statusCode];
|
|
}
|
|
}
|
|
|
|
return GetStatusText(statusCode);
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|