Merge pull request #3008 from laytan/fix-stat-struct-layout-linux-arm64

fix struct stat layout linux arm64
This commit is contained in:
gingerBill
2023-12-13 15:24:38 +00:00
committed by GitHub
+27 -5
View File
@@ -263,14 +263,37 @@ Unix_File_Time :: struct {
nanoseconds: i64, nanoseconds: i64,
} }
OS_Stat :: struct { when ODIN_ARCH == .arm64 {
OS_Stat :: struct {
device_id: u64, // ID of device containing file
serial: u64, // File serial number
mode: u32, // Mode of the file
nlink: u32, // Number of hard links
uid: u32, // User ID of the file's owner
gid: u32, // Group ID of the file's group
rdev: u64, // Device ID, if device
_: u64, // Padding
size: i64, // Size of the file, in bytes
block_size: i32, // Optimal blocksize for I/O
_: i32, // Padding
blocks: i64, // Number of 512-byte blocks allocated
last_access: Unix_File_Time, // Time of last access
modified: Unix_File_Time, // Time of last modification
status_change: Unix_File_Time, // Time of last status change
_reserved: [2]i32,
}
#assert(size_of(OS_Stat) == 128)
} else {
OS_Stat :: struct {
device_id: u64, // ID of device containing file device_id: u64, // ID of device containing file
serial: u64, // File serial number serial: u64, // File serial number
nlink: u64, // Number of hard links nlink: u64, // Number of hard links
mode: u32, // Mode of the file mode: u32, // Mode of the file
uid: u32, // User ID of the file's owner uid: u32, // User ID of the file's owner
gid: u32, // Group ID of the file's group gid: u32, // Group ID of the file's group
_padding: i32, // 32 bits of padding _: i32, // 32 bits of padding
rdev: u64, // Device ID, if device rdev: u64, // Device ID, if device
size: i64, // Size of the file, in bytes size: i64, // Size of the file, in bytes
block_size: i64, // Optimal bllocksize for I/O block_size: i64, // Optimal bllocksize for I/O
@@ -280,9 +303,8 @@ OS_Stat :: struct {
modified: Unix_File_Time, // Time of last modification modified: Unix_File_Time, // Time of last modification
status_change: Unix_File_Time, // Time of last status change status_change: Unix_File_Time, // Time of last status change
_reserve1, _reserved: [3]i64,
_reserve2, }
_reserve3: i64,
} }
// NOTE(laleksic, 2021-01-21): Comment and rename these to match OS_Stat above // NOTE(laleksic, 2021-01-21): Comment and rename these to match OS_Stat above