36 lines
1.2 KiB
C#
36 lines
1.2 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
using static BizHawk.BizInvoke.MemoryBlock;
|
|
|
|
namespace BizHawk.BizInvoke
|
|
{
|
|
public static class POSIXLibC
|
|
{
|
|
[DllImport("libc.so.6")]
|
|
public static extern int close(int fd);
|
|
|
|
[DllImport("libc.so.6")]
|
|
public static extern int memfd_create(string name, uint flags);
|
|
|
|
[DllImport("libc.so.6")]
|
|
private static extern IntPtr mmap(IntPtr addr, UIntPtr length, int prot, int flags, int fd, IntPtr offset);
|
|
|
|
public static IntPtr mmap(IntPtr addr, UIntPtr length, MemoryProtection prot, int flags, int fd, IntPtr offset) => mmap(addr, length, (int) prot, flags, fd, offset);
|
|
|
|
[DllImport("libc.so.6")]
|
|
private static extern int mprotect(IntPtr addr, UIntPtr len, int prot);
|
|
|
|
public static int mprotect(IntPtr addr, UIntPtr len, MemoryProtection prot) => mprotect(addr, len, (int) prot);
|
|
|
|
[DllImport("libc.so.6")]
|
|
public static extern int munmap(IntPtr addr, UIntPtr length);
|
|
[DllImport("libc.so.6")]
|
|
public static extern int ftruncate(int fd, IntPtr length);
|
|
|
|
/// <remarks>32-bit signed int</remarks>
|
|
[Flags]
|
|
public enum MemoryProtection : int { None = 0x0, Read = 0x1, Write = 0x2, Execute = 0x4 }
|
|
}
|
|
}
|