
19 Aug
2021
19 Aug
'21
12:28 p.m.
On Wed, 18 Aug 2021 21:40:31 -0600 Simon Glass sjg@chromium.org wrote:
It is useful to map a file into memory so that it can be accessed using simple pointers. Add a function to support this.
Signed-off-by: Simon Glass sjg@chromium.org
+int os_map_file(const char *pathname, int os_flags, void **bufp, int *sizep) +{
- void *ptr;
- int size;
- int ifd;
- ifd = os_open(pathname, os_flags);
- if (ifd < 0) {
printf("Cannot open file '%s'\n", pathname);
return -EIO;
- }
- size = os_filesize(ifd);
- if (size < 0) {
printf("Cannot get file size of '%s'\n", pathname);
return -EIO;
- }
- ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, ifd, 0);
- if (ptr == MAP_FAILED) {
printf("Can't map file '%s': %s\n", pathname, strerror(errno));
return -EPERM;
- }
- *bufp = ptr;
- *sizep = size;
- return 0;
+}
You need to close the file descriptor after mmapping.
Marek