-static void
-lizard_alloc_internal(struct lizard_buffer *buf, uns max_len)
-{
- if (!max_len)
- {
- buf->len = 0;
- buf->start = NULL;
- return;
- }
- buf->len = ALIGN(max_len + 3, PAGE_SIZE); // +3 due to the unaligned access
- buf->start = mmap(NULL, buf->len + PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
- if (buf->start == MAP_FAILED)
- die("mmap(anonymous): %m");
- if (mprotect(buf->start + buf->len, PAGE_SIZE, PROT_NONE) < 0)
- die("mprotect: %m");
-}