bond/include/status.h
secXsQuared 9256f5b575 - Refactored Makefile + included dependencies.
- asm and ld files referencing c symbols are now generated by c preprocessor instead of duplicate definition.
- Finished kernel memory layout. Unfinished init code.
2018-02-11 22:26:03 -05:00

53 lines
1.5 KiB
C

#ifndef _STATUS_H_
#define _STATUS_H_
#include "type.h"
#include "lib/sxtdlib.h"
typedef uint32_t status_t;
//
// 32 bit ints
//
// bits 30 - 31 - Error/Success
// 00 = Success
// 01 = Error
//
// bits 0-14 - Return Code - 32768 in total
// bits 15-29 - Facility 32768 in total
//
#define SX_MAKE_STATUS(Severity, Facility, Return) (((Severity) << 30) | ((Facility) << 16) | (Return))
#define SEVERITY_ERROR 0x3
#define SEVERITY_SUCCESS 0x0
#define SEVERITY_INFO 0x1
#define FACILITY_GENERIC 0
#define FACILITY_RF 1
#define FACILITY_MM 2
static inline bool sx_success(status_t status)
{
uint32_t severity = status >> 30;
return (severity == SEVERITY_INFO) || (severity == SEVERITY_SUCCESS);
}
enum _status_t
{
STATUS_SUCCESS = SX_MAKE_STATUS(SEVERITY_SUCCESS, FACILITY_GENERIC, 0),
STATUS_FAIL = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_GENERIC, 0),
RF_UNINITIALIZED = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_RF, 1),
RF_ALLOCATION_FAILED = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_RF, 2),
RF_INVALID_ARGUMENTS = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_RF, 3),
RF_INVALID_HANDLE = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_RF, 4),
RF_DUPLICATED_HANDLE = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_RF, 5),
MM_INVALID_ARGUMENTS = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_MM, 1),
MM_ALLOCATION_FAILED = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_MM, 2),
MM_UNINITIALIZED = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_MM, 3),
MM_NOT_ENOUGH_PAGE = SX_MAKE_STATUS(SEVERITY_ERROR, FACILITY_MM, 4),
};
#endif