summaryrefslogtreecommitdiff
path: root/cbits/mmap.c
blob: 079959f5dc9db10dfe9553fd2d34a836698e28fe (plain)
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
#include <stdio.h>
#include <sys/mman.h>
#include <sys/stat.h>


void* ircbrowse_mmap(int fd, size_t *lengthp) {
  struct stat statbuf;
  int ret = fstat(fd, &statbuf);
  if (ret < 0) {
    perror("stat");
    return NULL;
  }
  void *addr = mmap(NULL, statbuf.st_size, PROT_READ, MAP_SHARED, fd, 0);
  if (addr == NULL) {
    perror("mmap");
  }
  if (lengthp != NULL) *lengthp = statbuf.st_size;
  return addr;
}

void ircbrowse_munmap(void *addr, size_t length) {
  int ret = munmap(addr, length);
  if (ret < 0) {
    perror("munmap");
  }
}