embox

Форк
0
/
periph_memory_alloc.c 
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 NOMMU
19

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

27
void *periph_memory_alloc(size_t len) {
28
	void *mem = sysmemalign(MMU_PAGE_SIZE, len);
29
	if (!mem) {
30
		return NULL;
31
	}
32

33
	vmem_set_flags(vmem_current_context(),
34
			(mmu_vaddr_t) mem,
35
			len,
36
			PROT_WRITE | PROT_READ | PROT_NOCACHE);
37

38
	mmu_flush_tlb();
39

40
	return mem;
41
}
42
#else
43
void *periph_memory_alloc(size_t len) {
44
	return sysmemalign(sizeof(void *), len);
45
}
46
#endif /* NOMMU */
47

48
void periph_memory_free(void *ptr) {
49
	sysfree(ptr);
50
}
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.