libmetal
Toggle main menu visibility
Loading...
Searching...
No Matches
lib
system
linux
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
11
12
#ifndef __METAL_SYS__H__
13
#error "Include metal/sys.h instead of metal/linux/sys.h"
14
#endif
15
16
#ifndef __METAL_LINUX_SYS__H__
17
#define __METAL_LINUX_SYS__H__
18
19
#include <fcntl.h>
20
#include <libgen.h>
21
#include <limits.h>
22
#include <metal/cpu.h>
23
#include <metal/errno.h>
24
#include <pthread.h>
25
#include <stdio.h>
26
#include <stdlib.h>
27
#include <stdarg.h>
28
#include <syslog.h>
29
#include <sys/file.h>
30
#include <sys/mman.h>
31
#include <sys/stat.h>
32
#include <sys/syscall.h>
33
#include <sys/types.h>
34
#include <sys/wait.h>
35
#include <unistd.h>
36
37
#include <linux/futex.h>
38
#include <sysfs/libsysfs.h>
39
#ifdef HAVE_HUGETLBFS_H
40
#include <hugetlbfs.h>
41
#endif
42
43
#ifdef __cplusplus
44
extern
"C"
{
45
#endif
46
47
#define METAL_INVALID_VADDR NULL
48
#define MAX_PAGE_SIZES 32
49
50
#define metal_yield() metal_cpu_yield()
51
52
struct
metal_device
;
53
55
struct
metal_page_size
{
57
size_t
page_size
;
58
60
unsigned
long
page_shift
;
61
63
char
path
[PATH_MAX];
64
66
int
mmap_flags
;
67
};
68
70
struct
metal_state
{
71
73
struct
metal_common_state
common
;
74
76
int
data_fd
;
77
79
unsigned
long
page_size
;
80
82
unsigned
long
page_shift
;
83
85
const
char
*
tmp_path
;
86
88
struct
metal_page_size
page_sizes
[
MAX_PAGE_SIZES
];
89
91
int
num_page_sizes
;
92
94
int
pagemap_fd
;
95
};
96
97
#ifdef METAL_INTERNAL
98
int
metal_linux_bus_init
(
void
);
99
void
metal_linux_bus_finish
(
void
);
100
101
int
metal_open
(
const
char
*
path
,
int
shm);
102
103
int
metal_map
(
int
fd, off_t offset,
size_t
size,
int
expand,
104
int
flags,
void
**result);
105
int
metal_unmap
(
void
*mem,
size_t
size);
106
116
int
metal_linux_get_device_property
(
struct
metal_device
*device,
117
const
char
*property_name,
118
void
*output,
int
len);
119
120
#define metal_for_each_page_size_up(ps) \
121
for ((ps) = &_metal.page_sizes[0]; \
122
(ps) <= &_metal.page_sizes[_metal.num_page_sizes - 1]; \
123
(ps)++)
124
125
#define metal_for_each_page_size_down(ps) \
126
for ((ps) = &_metal.page_sizes[_metal.num_page_sizes - 1]; \
127
(ps) >= &_metal.page_sizes[0]; \
128
(ps)--)
129
130
#endif
131
132
#ifdef __cplusplus
133
}
134
#endif
135
136
#endif
/* __METAL_LINUX_SYS__H__ */
metal_common_state
Definition
sys.h:63
metal_device
Definition
device.h:72
metal_page_size
Definition
sys.h:55
metal_page_size::page_size
size_t page_size
Definition
sys.h:57
metal_page_size::page_shift
unsigned long page_shift
Definition
sys.h:60
metal_page_size::mmap_flags
int mmap_flags
Definition
sys.h:66
metal_page_size::path
char path[PATH_MAX]
Definition
sys.h:63
metal_state
Definition
sys.h:34
metal_state::num_page_sizes
int num_page_sizes
Definition
sys.h:91
metal_state::pagemap_fd
int pagemap_fd
Definition
sys.h:94
metal_state::tmp_path
const char * tmp_path
Definition
sys.h:85
metal_state::page_size
unsigned long page_size
Definition
sys.h:79
metal_state::page_sizes
struct metal_page_size page_sizes[MAX_PAGE_SIZES]
Definition
sys.h:88
metal_state::common
struct metal_common_state common
Definition
sys.h:37
metal_state::page_shift
unsigned long page_shift
Definition
sys.h:82
metal_state::data_fd
int data_fd
Definition
sys.h:76
metal_linux_bus_init
int metal_linux_bus_init(void)
Definition
device.c:618
metal_linux_get_device_property
int metal_linux_get_device_property(struct metal_device *device, const char *property_name, void *output, int len)
Definition
device.c:646
metal_linux_bus_finish
void metal_linux_bus_finish(void)
Definition
device.c:629
MAX_PAGE_SIZES
#define MAX_PAGE_SIZES
Definition
sys.h:48
metal_map
int metal_map(int fd, off_t offset, size_t size, int expand, int flags, void **result)
Map a segment of a file/device.
Definition
utilities.c:55
metal_open
int metal_open(const char *path, int shm)
Open (or create) a file.
Definition
utilities.c:25
metal_unmap
int metal_unmap(void *mem, size_t size)
Unmap a segment of the process address space.
Definition
utilities.c:97
Generated on
for libmetal by
1.17.0