| | |
| | | struct stat st; |
| | | |
| | | /* Create an anonymous file in tmpfs; */ |
| | | if(0 >= len) |
| | | { |
| | | return -1; |
| | | } |
| | | |
| | | fd = sys_memfd_create(name, MFD_CLOEXEC); |
| | | |
| | | if (fd == -1) |
| | | { |
| | | errExit("memfd_create"); |
| | | errExit("memfd_create"); |
| | | } |
| | | |
| | | /* Size the file as specified on the command line */ |
| | |
| | | mydebug("length: %zu\n", len); |
| | | if (ftruncate(fd, len) == -1) |
| | | { |
| | | errExit("truncate"); |
| | | errExit("ftruncate"); |
| | | } |
| | | |
| | | if (fstat (fd, &st)) |
| | |
| | | } |
| | | len = st.st_size; |
| | | |
| | | ret = munmap(*ppaddr, len); |
| | | ret = munmap((void *)*ppaddr, len); |
| | | if (ret == -1) |
| | | { |
| | | errExit("munmap()"); |
| | | } |
| | | |
| | | *ppaddr = NULL; |
| | | mydebug("length: %zu, atime: %lu.%lu\n", len, st.st_atim.tv_sec, st.st_atim.tv_nsec); |
| | | return len; |
| | | } |