kopia lustrzana https://github.com/stlink-org/stlink
34 wiersze
634 B
C
34 wiersze
634 B
C
#include <string.h>
|
|
#include <sys/types.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
#include "stlink/mmap.h"
|
|
|
|
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;
|
|
|
|
count = read(fd, buf, len);
|
|
|
|
if (count != len) {
|
|
free (buf);
|
|
return MAP_FAILED;
|
|
}
|
|
|
|
return buf;
|
|
}
|
|
|
|
int munmap (void *addr, size_t len) {
|
|
free (addr);
|
|
return 0;
|
|
}
|