
#ifndef __UVISOR_API_UVISOR_LIB_H__
#define __UVISOR_API_UVISOR_LIB_H__

/* This file includes all the uVisor library header files at once.
 * If uVisor is used on a host OS that includes unsupported targets, then
 * unsupported.h is included, which defines a fallback version of those APIs,
 * with no security feature. */

#if defined(UVISOR_PRESENT) && UVISOR_PRESENT == 1

/* Library header files */
#include "api/inc/benchmark.h"
#include "api/inc/box_config.h"
#include "api/inc/debug.h"
#include "api/inc/disabled.h"
#include "api/inc/error.h"
#include "api/inc/interrupts.h"
#include "api/inc/register_gateway.h"
#include "api/inc/rpc.h"
#include "api/inc/rpc_gateway.h"
#include "api/inc/secure_access.h"

#else /* defined(UVISOR_PRESENT) && UVISOR_PRESENT == 1 */

#include "api/inc/unsupported.h"

#endif /* defined(UVISOR_PRESENT) && UVISOR_PRESENT == 1 */

/* The host startup needs to call this after osKernelInitialize to initialize
 * uvisor-lib. The function can fail. It's up the the host startup to decide
 * what to do with any failures. */
UVISOR_EXTERN int uvisor_lib_init(void);

#include "api/inc/page_allocator.h"

/* Include all exported header files used by uVisor internally.
 * These are included independently on whether uVisor is supported or not by the
 * target platform. */
#include "api/inc/debug_exports.h"
#include "api/inc/context_exports.h"
#include "api/inc/export_table_exports.h"
#include "api/inc/halt_exports.h"
#include "api/inc/register_gateway_exports.h"
#include "api/inc/rpc_gateway_exports.h"
#include "api/inc/svc_exports.h"
#include "api/inc/priv_sys_irq_hook_exports.h"
#include "api/inc/unvic_exports.h"
#include "api/inc/uvisor_exports.h"
#include "api/inc/vmpu_exports.h"
#include "api/inc/page_allocator_exports.h"

#endif /* __UVISOR_API_UVISOR_LIB_H__ */
