#ifndef __ZVFS_HOOK_MMAP_H__
#define __ZVFS_HOOK_MMAP_H__

#include <sys/mman.h>
#include <stddef.h>

/*
 * mmap 族。
 *
 * 当前策略：
 *   - fd 属于 zvfs → 返回 ENOTSUP，强制上层走非 mmap 路径
 *     （RocksDB: options.use_mmap_reads/writes = false）
 *   - fd 不属于 zvfs，或 MAP_ANONYMOUS → 透传 real_mmap
 *
 * munmap / msync：
 *   zvfs fd 的 mmap 不会成功，所以 munmap/msync 里永远找不到
 *   zvfs 的映射，直接透传即可。
 *
 * 预留扩展点（future）：
 *   实现时在此处：
 *     mmap  → MAP_ANONYMOUS 分配匿名内存 + blob_read 填充
 *             将 (addr, length, inode, file_offset) 插入 mmap_table
 *     munmap → 查 mmap_table，若命中则 blob_write 写回，再真正 munmap
 *     msync  → 查 mmap_table，blob_write 对应范围
 */

void *mmap(void *addr, size_t length, int prot, int flags,
           int fd, off_t offset);
void *mmap64(void *addr, size_t length, int prot, int flags,
             int fd, off_t offset);
int   munmap(void *addr, size_t length);
int   msync(void *addr, size_t length, int flags);

#endif // __ZVFS_HOOK_MMAP_H__