seL4/include/api/failures.h
2015-12-10 10:45:20 +11:00

47 lines
1.1 KiB
C

/*
* Copyright 2014, General Dynamics C4 Systems
*
* This software may be distributed and modified according to the terms of
* the GNU General Public License version 2. Note that NO WARRANTY is provided.
* See "LICENSE_GPLv2.txt" for details.
*
* @TAG(GD_GPL)
*/
#ifndef __FAILURES_H
#define __FAILURES_H
#include <types.h>
#include <api/errors.h>
/* These datatypes differ markedly from haskell, due to the
* different implementation of the various fault monads */
enum exception {
EXCEPTION_NONE,
EXCEPTION_FAULT,
EXCEPTION_LOOKUP_FAULT,
EXCEPTION_SYSCALL_ERROR,
EXCEPTION_PREEMPTED
};
typedef word_t exception_t;
typedef word_t syscall_error_type_t;
struct syscall_error {
unsigned int invalidArgumentNumber;
unsigned int invalidCapNumber;
word_t rangeErrorMin;
word_t rangeErrorMax;
word_t memoryLeft;
bool_t failedLookupWasSource;
syscall_error_type_t type;
};
typedef struct syscall_error syscall_error_t;
extern lookup_fault_t current_lookup_fault;
extern fault_t current_fault;
extern syscall_error_t current_syscall_error;
#endif