blob: d37bbd62b928222c0271740e28a2f18e26ca6f3b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#ifndef BASE_STACK_UNIX_H
#define BASE_STACK_UNIX_H
internal MemStack *
unix_stack_create(u64 capacity)
{
MemStack *stack = (MemStack *)mmap(
0,
capacity + sizeof(MemStack),
PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_ANONYMOUS,
-1,
0);
if(stack == MAP_FAILED)
{
return NULL;
}
stack->capacity = capacity;
stack->base_position = (u8 *)stack + sizeof(MemStack);
stack->current_offset = 0;
return stack;
}
internal void
unix_stack_destroy(MemStack *stack)
{
if(!stack)
{
return;
}
munmap(stack, stack->capacity + sizeof(MemStack));
}
#endif /* BASE_STACK_UNIX_H */
|