12 #ifndef __METAL_SYS__H__
13 #error "Include metal/sys.h instead of metal/linux/sys.h"
16 #ifndef __METAL_LINUX_SYS__H__
17 #define __METAL_LINUX_SYS__H__
22 #include <metal/cpu.h>
23 #include <metal/errno.h>
32 #include <sys/syscall.h>
33 #include <sys/types.h>
37 #include <linux/futex.h>
38 #include <sysfs/libsysfs.h>
39 #ifdef HAVE_HUGETLBFS_H
40 #include <hugetlbfs.h>
47 #define METAL_INVALID_VADDR NULL
48 #define MAX_PAGE_SIZES 32
50 #define metal_yield() metal_cpu_yield()
103 int metal_map(
int fd, off_t offset,
size_t size,
int expand,
104 int flags,
void **result);
117 const char *property_name,
118 void *output,
int len);
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]; \
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]; \
Structure of shared page or hugepage sized data.
Definition: sys.h:55
size_t page_size
Page size.
Definition: sys.h:57
unsigned long page_shift
Page shift.
Definition: sys.h:60
int mmap_flags
Flags to use for mmap.
Definition: sys.h:66
char path[PATH_MAX]
Path to hugetlbfs (or tmpfs) mount point.
Definition: sys.h:63
int metal_linux_bus_init(void)
Definition: device.c:618
int metal_linux_get_device_property(struct metal_device *device, const char *property_name, void *output, int len)
Definition: device.c:646
void metal_linux_bus_finish(void)
Definition: device.c:629
#define MAX_PAGE_SIZES
Definition: sys.h:48
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
int metal_open(const char *path, int shm)
Open (or create) a file.
Definition: utilities.c:25
int metal_unmap(void *mem, size_t size)
Unmap a segment of the process address space.
Definition: utilities.c:97