stlink/src/mmap.c

34 wiersze
634 B
C
Czysty Zwykły widok Historia

#include <string.h>
#include <sys/types.h>
#include <stdlib.h>
2012-05-16 21:15:38 +00:00
#include <unistd.h>
#include "stlink/mmap.h"
2012-05-16 21:15:38 +00:00
void *mmap (void *addr, size_t len, int prot, int flags, int fd, long long offset) {
void *buf;
ssize_t count;
if ( addr || fd == -1 || (prot & PROT_WRITE)) return MAP_FAILED;
buf = malloc(len);
if ( NULL == buf ) return MAP_FAILED;
if (lseek(fd,offset,SEEK_SET) != offset) return MAP_FAILED;
2012-05-16 21:22:54 +00:00
count = read(fd, buf, len);
2012-05-16 21:22:54 +00:00
if (count != len) {
free (buf);
return MAP_FAILED;
}
return buf;
}
2012-05-16 21:15:38 +00:00
int munmap (void *addr, size_t len) {
free (addr);
return 0;
}