embox
50 строк · 866.0 Байт
1/**
2* @file
3*
4* @date Mar 12, 2020
5* @author Anton Bondarev
6*/
7
8#include <errno.h>9#include <stdlib.h>10#include <sys/mman.h>11
12#include <mem/vmem.h>13#include <mem/sysmalloc.h>14#include <module/embox/arch/mmu.h>15
16#include <drivers/common/periph_memory_alloc.h>17
18#ifndef NOMMU19
20#include <drivers/common/memory.h>21#include <hal/mmu.h>22#include <kernel/task/kernel_task.h>23#include <kernel/task/resource/mmap.h>24
25#include <mem/mmap.h>26
27void *periph_memory_alloc(size_t len) {28void *mem = sysmemalign(MMU_PAGE_SIZE, len);29if (!mem) {30return NULL;31}32
33vmem_set_flags(vmem_current_context(),34(mmu_vaddr_t) mem,35len,36PROT_WRITE | PROT_READ | PROT_NOCACHE);37
38mmu_flush_tlb();39
40return mem;41}
42#else43void *periph_memory_alloc(size_t len) {44return sysmemalign(sizeof(void *), len);45}
46#endif /* NOMMU */47
48void periph_memory_free(void *ptr) {49sysfree(ptr);50}
51