Implemented node system statistics
This commit is contained in:
36
MoonlightServers.Daemon/Helpers/NativeMethods.cs
Normal file
36
MoonlightServers.Daemon/Helpers/NativeMethods.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace MoonlightServers.Daemon.Helpers;
|
||||
|
||||
internal static partial class NativeMethods
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct StatVfsResult
|
||||
{
|
||||
public ulong bsize;
|
||||
public ulong frsize;
|
||||
public ulong blocks;
|
||||
public ulong bfree;
|
||||
public ulong bavail;
|
||||
public ulong files;
|
||||
public ulong ffree;
|
||||
public ulong favail;
|
||||
public ulong fsid;
|
||||
public ulong flag;
|
||||
public ulong namemax;
|
||||
private ulong __spare0; // } kernel reserved padding —
|
||||
private ulong __spare1; // } never read, exist only to
|
||||
private ulong __spare2; // } match the 112-byte struct
|
||||
private ulong __spare3; // } statvfs layout on x86-64
|
||||
private ulong __spare4; // } Linux so the fields above
|
||||
private ulong __spare5; // } land at the right offsets
|
||||
}
|
||||
|
||||
// SetLastError = true tells the marshaller to capture errno immediately
|
||||
// after the call, before any other code can clobber it. Retrieve it with
|
||||
// Marshal.GetLastPInvokeError() which maps to the thread-local errno value.
|
||||
[LibraryImport("libc", EntryPoint = "statvfs",
|
||||
StringMarshalling = StringMarshalling.Utf8,
|
||||
SetLastError = true)]
|
||||
internal static partial int StatVfs(string path, out StatVfsResult buf);
|
||||
}
|
||||
Reference in New Issue
Block a user