Blame


1 8c573cab 2020-01-14 rsc #include <u.h>
2 8c573cab 2020-01-14 rsc #include <sys/mman.h>
3 8c573cab 2020-01-14 rsc #include "threadimpl.h"
4 8c573cab 2020-01-14 rsc
5 8c573cab 2020-01-14 rsc #ifndef MAP_STACK
6 8c573cab 2020-01-14 rsc #define MAP_STACK 0
7 8c573cab 2020-01-14 rsc #endif
8 8c573cab 2020-01-14 rsc
9 8c573cab 2020-01-14 rsc void*
10 8c573cab 2020-01-14 rsc _threadstkalloc(int n)
11 8c573cab 2020-01-14 rsc {
12 8c573cab 2020-01-14 rsc void *p;
13 8c573cab 2020-01-14 rsc
14 8c573cab 2020-01-14 rsc p = mmap(nil, n, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON|MAP_STACK, -1, 0);
15 8c573cab 2020-01-14 rsc if(p == (void*)-1)
16 8c573cab 2020-01-14 rsc return nil;
17 8c573cab 2020-01-14 rsc return p;
18 8c573cab 2020-01-14 rsc }
19 8c573cab 2020-01-14 rsc
20 8c573cab 2020-01-14 rsc void
21 8c573cab 2020-01-14 rsc _threadstkfree(void *v, int n)
22 8c573cab 2020-01-14 rsc {
23 8c573cab 2020-01-14 rsc if(n > 0)
24 8c573cab 2020-01-14 rsc munmap(v, n);
25 8c573cab 2020-01-14 rsc }