mirror of
https://github.com/pound-emu/pound.git
synced 2025-12-13 13:37:02 +00:00
create a stub mman.h for Windows
This commit is contained in:
parent
6466c04321
commit
306eaa5732
1 changed files with 52 additions and 0 deletions
52
sys/mman.h
Normal file
52
sys/mman.h
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
// mman.h
|
||||
// only there for Windows compatibility
|
||||
#ifndef MMAN_H
|
||||
#define MMAN_H
|
||||
|
||||
#if defined(__linux__) || defined(__APPLE__)
|
||||
// Linux or macOS: Use standard sys/mman.h
|
||||
#include <sys/mman.h>
|
||||
|
||||
#else
|
||||
// Windows: Define mmap, munmap, and MAP_FAILED
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
#define MAP_FAILED ((void*)-1)
|
||||
|
||||
// Protection and flag constants (minimal subset for your use case)
|
||||
#define PROT_READ 0x1
|
||||
#define PROT_WRITE 0x2
|
||||
#define MAP_PRIVATE 0x2
|
||||
#define MAP_ANONYMOUS 0x20
|
||||
|
||||
// mmap equivalent using VirtualAlloc
|
||||
inline void* mmap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) {
|
||||
(void)addr; // Ignored (VirtualAlloc doesn't support specific address)
|
||||
(void)flags; // Ignored (simplified for anonymous mapping)
|
||||
(void)fd; // Ignored (no file mapping)
|
||||
(void)offset; // Ignored (no file mapping)
|
||||
|
||||
DWORD protect = 0;
|
||||
if (prot & PROT_READ && prot & PROT_WRITE) {
|
||||
protect = PAGE_READWRITE;
|
||||
} else if (prot & PROT_READ) {
|
||||
protect = PAGE_READONLY;
|
||||
} else {
|
||||
return MAP_FAILED; // Unsupported protection
|
||||
}
|
||||
|
||||
void* ptr = VirtualAlloc(nullptr, length, MEM_COMMIT | MEM_RESERVE, protect);
|
||||
return ptr ? ptr : MAP_FAILED;
|
||||
}
|
||||
|
||||
// munmap equivalent using VirtualFree
|
||||
inline int munmap(void* addr, size_t length) {
|
||||
(void)length; // Ignored (VirtualFree doesn't need length for committed memory)
|
||||
BOOL result = VirtualFree(addr, 0, MEM_RELEASE);
|
||||
return result ? 0 : -1; // Return 0 on success, -1 on failure
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif // MMAN_H
|
||||
Loading…
Add table
Add a link
Reference in a new issue