libmetal  latest
sys.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 /*
8  * @file sys.h
9  * @brief System primitives for libmetal.
10  * @brief Top level include internal to libmetal library code.
11  */
12 
13 #ifndef __METAL_SYS__H__
14 #define __METAL_SYS__H__
15 
16 #include <stdlib.h>
17 
18 #include <metal/log.h>
19 #include <metal/list.h>
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
30 typedef unsigned long metal_phys_addr_t;
31 
33 typedef int metal_irq_t;
34 
36 #define METAL_BAD_OFFSET ((unsigned long)-1)
37 
39 #define METAL_BAD_PHYS ((metal_phys_addr_t)-1)
40 
42 #define METAL_BAD_VA ((void *)-1)
43 
45 #define METAL_BAD_IRQ ((metal_irq_t)-1)
46 
51 
54 
57 };
58 
65  int ref_count;
66 
69 
72 
74  struct metal_list bus_list;
75 
78 
81 };
82 
83 struct metal_state;
84 
85 #include <metal/system/@PROJECT_SYSTEM@/sys.h>
86 
87 #ifndef METAL_INIT_DEFAULTS
88 #define METAL_INIT_DEFAULTS \
89 { \
90  .log_handler = metal_default_log_handler, \
91  .log_level = METAL_LOG_INFO, \
92 }
93 #endif
94 
96 extern struct metal_state _metal;
97 
109 int metal_init(const struct metal_init_params *params);
110 
118 void metal_finish(void);
119 
120 #ifdef METAL_INTERNAL
121 
132 int metal_sys_init(const struct metal_init_params *params);
133 
142 void metal_sys_finish(void);
143 
144 #endif
145 
148 #ifdef __cplusplus
149 }
150 #endif
151 
152 #endif /* __METAL_SYS__H__ */
metal_log_level
Log message priority levels for libmetal.
Definition: log.h:24
void(* metal_log_handler)(enum metal_log_level level, const char *format,...)
Log message handler type.
Definition: log.h:36
void metal_finish(void)
Shutdown libmetal.
Definition: init.c:34
int metal_irq_t
Interrupt request number.
Definition: sys.h:33
struct metal_state _metal
System specific runtime data.
Definition: init.c:16
int metal_init(const struct metal_init_params *params)
Initialize libmetal.
Definition: init.c:10
unsigned long metal_phys_addr_t
Physical address type.
Definition: sys.h:30
System independent runtime state for libmetal.
Definition: sys.h:63
enum metal_log_level log_level
Current log level.
Definition: sys.h:68
struct metal_list bus_list
List of registered buses.
Definition: sys.h:74
struct metal_list generic_shmem_list
Generic statically defined shared memory segments.
Definition: sys.h:77
struct metal_list generic_device_list
Generic statically defined devices.
Definition: sys.h:80
metal_log_handler log_handler
Current log handler (null for none).
Definition: sys.h:71
int ref_count
reference count to track metal_init/metal_finish.
Definition: sys.h:65
Initialization configuration for libmetal.
Definition: sys.h:50
metal_log_handler log_handler
log message handler (defaults to stderr).
Definition: sys.h:53
enum metal_log_level log_level
default log message level (defaults to emergency).
Definition: sys.h:56
Definition: list.h:26
Structure for FreeRTOS libmetal runtime state.
Definition: sys.h:40
int metal_sys_init(const struct metal_init_params *params)
Definition: init.c:18
void metal_sys_finish(void)
Definition: init.c:25