1 Commits
Author SHA1 Message Date
RandyTheSilly 534f6d6ab0 Apply patch 2025-11-09 13:58:29 -05:00
27 changed files with 83 additions and 162 deletions
+3
View File
@@ -92,6 +92,9 @@ var ARM64 struct {
HasSHA2 bool // SHA2 hardware implementation HasSHA2 bool // SHA2 hardware implementation
HasCRC32 bool // CRC32 hardware implementation HasCRC32 bool // CRC32 hardware implementation
HasATOMICS bool // Atomic memory operation instruction set HasATOMICS bool // Atomic memory operation instruction set
HasHPDS bool // Hierarchical permission disables in translations tables
HasLOR bool // Limited ordering regions
HasPAN bool // Privileged access never
HasFPHP bool // Half precision floating-point instruction set HasFPHP bool // Half precision floating-point instruction set
HasASIMDHP bool // Advanced SIMD half precision instruction set HasASIMDHP bool // Advanced SIMD half precision instruction set
HasCPUID bool // CPUID identification scheme registers HasCPUID bool // CPUID identification scheme registers
+18 -2
View File
@@ -65,10 +65,10 @@ func setMinimalFeatures() {
func readARM64Registers() { func readARM64Registers() {
Initialized = true Initialized = true
parseARM64SystemRegisters(getisar0(), getisar1(), getpfr0()) parseARM64SystemRegisters(getisar0(), getisar1(), getmmfr1(), getpfr0())
} }
func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) { func parseARM64SystemRegisters(isar0, isar1, mmfr1, pfr0 uint64) {
// ID_AA64ISAR0_EL1 // ID_AA64ISAR0_EL1
switch extractBits(isar0, 4, 7) { switch extractBits(isar0, 4, 7) {
case 1: case 1:
@@ -152,6 +152,22 @@ func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) {
ARM64.HasI8MM = true ARM64.HasI8MM = true
} }
// ID_AA64MMFR1_EL1
switch extractBits(mmfr1, 12, 15) {
case 1, 2:
ARM64.HasHPDS = true
}
switch extractBits(mmfr1, 16, 19) {
case 1:
ARM64.HasLOR = true
}
switch extractBits(mmfr1, 20, 23) {
case 1, 2, 3:
ARM64.HasPAN = true
}
// ID_AA64PFR0_EL1 // ID_AA64PFR0_EL1
switch extractBits(pfr0, 16, 19) { switch extractBits(pfr0, 16, 19) {
case 0: case 0:
+7
View File
@@ -20,6 +20,13 @@ TEXT ·getisar1(SB),NOSPLIT,$0-8
MOVD R0, ret+0(FP) MOVD R0, ret+0(FP)
RET RET
// func getmmfr1() uint64
TEXT ·getmmfr1(SB),NOSPLIT,$0-8
// get Memory Model Feature Register 1 into x0
MRS ID_AA64MMFR1_EL1, R0
MOVD R0, ret+0(FP)
RET
// func getpfr0() uint64 // func getpfr0() uint64
TEXT ·getpfr0(SB),NOSPLIT,$0-8 TEXT ·getpfr0(SB),NOSPLIT,$0-8
// get Processor Feature Register 0 into x0 // get Processor Feature Register 0 into x0
+1
View File
@@ -8,5 +8,6 @@ package cpu
func getisar0() uint64 func getisar0() uint64
func getisar1() uint64 func getisar1() uint64
func getmmfr1() uint64
func getpfr0() uint64 func getpfr0() uint64
func getzfr0() uint64 func getzfr0() uint64
+1
View File
@@ -8,4 +8,5 @@ package cpu
func getisar0() uint64 { return 0 } func getisar0() uint64 { return 0 }
func getisar1() uint64 { return 0 } func getisar1() uint64 { return 0 }
func getmmfr1() uint64 { return 0 }
func getpfr0() uint64 { return 0 } func getpfr0() uint64 { return 0 }
+1 -1
View File
@@ -167,7 +167,7 @@ func doinit() {
setMinimalFeatures() setMinimalFeatures()
return return
} }
parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0) parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64mmfr1, cpuid.aa64pfr0)
Initialized = true Initialized = true
} }
+1 -1
View File
@@ -59,7 +59,7 @@ func doinit() {
if !ok { if !ok {
return return
} }
parseARM64SystemRegisters(isar0, isar1, 0) parseARM64SystemRegisters(isar0, isar1, 0, 0)
Initialized = true Initialized = true
} }
+48 -122
View File
@@ -64,80 +64,6 @@ func initOptions() {
func archInit() { func archInit() {
// From internal/cpu
const (
// eax bits
cpuid_AVXVNNI = 1 << 4
// ecx bits
cpuid_SSE3 = 1 << 0
cpuid_PCLMULQDQ = 1 << 1
cpuid_AVX512VBMI = 1 << 1
cpuid_AVX512VBMI2 = 1 << 6
cpuid_SSSE3 = 1 << 9
cpuid_AVX512GFNI = 1 << 8
cpuid_AVX512VAES = 1 << 9
cpuid_AVX512VNNI = 1 << 11
cpuid_AVX512BITALG = 1 << 12
cpuid_FMA = 1 << 12
cpuid_AVX512VPOPCNTDQ = 1 << 14
cpuid_SSE41 = 1 << 19
cpuid_SSE42 = 1 << 20
cpuid_POPCNT = 1 << 23
cpuid_AES = 1 << 25
cpuid_OSXSAVE = 1 << 27
cpuid_AVX = 1 << 28
// "Extended Feature Flag" bits returned in EBX for CPUID EAX=0x7 ECX=0x0
cpuid_BMI1 = 1 << 3
cpuid_AVX2 = 1 << 5
cpuid_BMI2 = 1 << 8
cpuid_ERMS = 1 << 9
cpuid_AVX512F = 1 << 16
cpuid_AVX512DQ = 1 << 17
cpuid_ADX = 1 << 19
cpuid_AVX512CD = 1 << 28
cpuid_SHA = 1 << 29
cpuid_AVX512BW = 1 << 30
cpuid_AVX512VL = 1 << 31
// "Extended Feature Flag" bits returned in ECX for CPUID EAX=0x7 ECX=0x0
cpuid_AVX512_VBMI = 1 << 1
cpuid_AVX512_VBMI2 = 1 << 6
cpuid_GFNI = 1 << 8
cpuid_AVX512VPCLMULQDQ = 1 << 10
cpuid_AVX512_BITALG = 1 << 12
// edx bits
cpuid_FSRM = 1 << 4
// edx bits for CPUID 0x80000001
cpuid_RDTSCP = 1 << 27
)
// Additional constants not in internal/cpu
const (
// eax=1: edx
cpuid_SSE2 = 1 << 26
// eax=1: ecx
cpuid_CX16 = 1 << 13
cpuid_RDRAND = 1 << 30
// eax=7,ecx=0: ebx
cpuid_RDSEED = 1 << 18
cpuid_AVX512IFMA = 1 << 21
cpuid_AVX512PF = 1 << 26
cpuid_AVX512ER = 1 << 27
// eax=7,ecx=0: edx
cpuid_AVX5124VNNIW = 1 << 2
cpuid_AVX5124FMAPS = 1 << 3
cpuid_AMXBF16 = 1 << 22
cpuid_AMXTile = 1 << 24
cpuid_AMXInt8 = 1 << 25
// eax=7,ecx=1: eax
cpuid_AVX512BF16 = 1 << 5
cpuid_AVXIFMA = 1 << 23
// eax=7,ecx=1: edx
cpuid_AVXVNNIInt8 = 1 << 4
)
Initialized = true Initialized = true
maxID, _, _, _ := cpuid(0, 0) maxID, _, _, _ := cpuid(0, 0)
@@ -147,90 +73,90 @@ func archInit() {
} }
_, _, ecx1, edx1 := cpuid(1, 0) _, _, ecx1, edx1 := cpuid(1, 0)
X86.HasSSE2 = isSet(edx1, cpuid_SSE2) X86.HasSSE2 = isSet(26, edx1)
X86.HasSSE3 = isSet(ecx1, cpuid_SSE3) X86.HasSSE3 = isSet(0, ecx1)
X86.HasPCLMULQDQ = isSet(ecx1, cpuid_PCLMULQDQ) X86.HasPCLMULQDQ = isSet(1, ecx1)
X86.HasSSSE3 = isSet(ecx1, cpuid_SSSE3) X86.HasSSSE3 = isSet(9, ecx1)
X86.HasFMA = isSet(ecx1, cpuid_FMA) X86.HasFMA = isSet(12, ecx1)
X86.HasCX16 = isSet(ecx1, cpuid_CX16) X86.HasCX16 = isSet(13, ecx1)
X86.HasSSE41 = isSet(ecx1, cpuid_SSE41) X86.HasSSE41 = isSet(19, ecx1)
X86.HasSSE42 = isSet(ecx1, cpuid_SSE42) X86.HasSSE42 = isSet(20, ecx1)
X86.HasPOPCNT = isSet(ecx1, cpuid_POPCNT) X86.HasPOPCNT = isSet(23, ecx1)
X86.HasAES = isSet(ecx1, cpuid_AES) X86.HasAES = isSet(25, ecx1)
X86.HasOSXSAVE = isSet(ecx1, cpuid_OSXSAVE) X86.HasOSXSAVE = isSet(27, ecx1)
X86.HasRDRAND = isSet(ecx1, cpuid_RDRAND) X86.HasRDRAND = isSet(30, ecx1)
var osSupportsAVX, osSupportsAVX512 bool var osSupportsAVX, osSupportsAVX512 bool
// For XGETBV, OSXSAVE bit is required and sufficient. // For XGETBV, OSXSAVE bit is required and sufficient.
if X86.HasOSXSAVE { if X86.HasOSXSAVE {
eax, _ := xgetbv() eax, _ := xgetbv()
// Check if XMM and YMM registers have OS support. // Check if XMM and YMM registers have OS support.
osSupportsAVX = isSet(eax, 1<<1) && isSet(eax, 1<<2) osSupportsAVX = isSet(1, eax) && isSet(2, eax)
if runtime.GOOS == "darwin" { if runtime.GOOS == "darwin" {
// Darwin requires special AVX512 checks, see cpu_darwin_x86.go // Darwin requires special AVX512 checks, see cpu_darwin_x86.go
osSupportsAVX512 = osSupportsAVX && darwinSupportsAVX512() osSupportsAVX512 = osSupportsAVX && darwinSupportsAVX512()
} else { } else {
// Check if OPMASK and ZMM registers have OS support. // Check if OPMASK and ZMM registers have OS support.
osSupportsAVX512 = osSupportsAVX && isSet(eax, 1<<5) && isSet(eax, 1<<6) && isSet(eax, 1<<7) osSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax)
} }
} }
X86.HasAVX = isSet(ecx1, cpuid_AVX) && osSupportsAVX X86.HasAVX = isSet(28, ecx1) && osSupportsAVX
if maxID < 7 { if maxID < 7 {
return return
} }
eax7, ebx7, ecx7, edx7 := cpuid(7, 0) eax7, ebx7, ecx7, edx7 := cpuid(7, 0)
X86.HasBMI1 = isSet(ebx7, cpuid_BMI1) X86.HasBMI1 = isSet(3, ebx7)
X86.HasAVX2 = isSet(ebx7, cpuid_AVX2) && osSupportsAVX X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX
X86.HasBMI2 = isSet(ebx7, cpuid_BMI2) X86.HasBMI2 = isSet(8, ebx7)
X86.HasERMS = isSet(ebx7, cpuid_ERMS) X86.HasERMS = isSet(9, ebx7)
X86.HasRDSEED = isSet(ebx7, cpuid_RDSEED) X86.HasRDSEED = isSet(18, ebx7)
X86.HasADX = isSet(ebx7, cpuid_ADX) X86.HasADX = isSet(19, ebx7)
X86.HasAVX512 = isSet(ebx7, cpuid_AVX512F) && osSupportsAVX512 // Because avx-512 foundation is the core required extension X86.HasAVX512 = isSet(16, ebx7) && osSupportsAVX512 // Because avx-512 foundation is the core required extension
if X86.HasAVX512 { if X86.HasAVX512 {
X86.HasAVX512F = true X86.HasAVX512F = true
X86.HasAVX512CD = isSet(ebx7, cpuid_AVX512CD) X86.HasAVX512CD = isSet(28, ebx7)
X86.HasAVX512ER = isSet(ebx7, cpuid_AVX512ER) X86.HasAVX512ER = isSet(27, ebx7)
X86.HasAVX512PF = isSet(ebx7, cpuid_AVX512PF) X86.HasAVX512PF = isSet(26, ebx7)
X86.HasAVX512VL = isSet(ebx7, cpuid_AVX512VL) X86.HasAVX512VL = isSet(31, ebx7)
X86.HasAVX512BW = isSet(ebx7, cpuid_AVX512BW) X86.HasAVX512BW = isSet(30, ebx7)
X86.HasAVX512DQ = isSet(ebx7, cpuid_AVX512DQ) X86.HasAVX512DQ = isSet(17, ebx7)
X86.HasAVX512IFMA = isSet(ebx7, cpuid_AVX512IFMA) X86.HasAVX512IFMA = isSet(21, ebx7)
X86.HasAVX512VBMI = isSet(ecx7, cpuid_AVX512_VBMI) X86.HasAVX512VBMI = isSet(1, ecx7)
X86.HasAVX5124VNNIW = isSet(edx7, cpuid_AVX5124VNNIW) X86.HasAVX5124VNNIW = isSet(2, edx7)
X86.HasAVX5124FMAPS = isSet(edx7, cpuid_AVX5124FMAPS) X86.HasAVX5124FMAPS = isSet(3, edx7)
X86.HasAVX512VPOPCNTDQ = isSet(ecx7, cpuid_AVX512VPOPCNTDQ) X86.HasAVX512VPOPCNTDQ = isSet(14, ecx7)
X86.HasAVX512VPCLMULQDQ = isSet(ecx7, cpuid_AVX512VPCLMULQDQ) X86.HasAVX512VPCLMULQDQ = isSet(10, ecx7)
X86.HasAVX512VNNI = isSet(ecx7, cpuid_AVX512VNNI) X86.HasAVX512VNNI = isSet(11, ecx7)
X86.HasAVX512GFNI = isSet(ecx7, cpuid_AVX512GFNI) X86.HasAVX512GFNI = isSet(8, ecx7)
X86.HasAVX512VAES = isSet(ecx7, cpuid_AVX512VAES) X86.HasAVX512VAES = isSet(9, ecx7)
X86.HasAVX512VBMI2 = isSet(ecx7, cpuid_AVX512VBMI2) X86.HasAVX512VBMI2 = isSet(6, ecx7)
X86.HasAVX512BITALG = isSet(ecx7, cpuid_AVX512BITALG) X86.HasAVX512BITALG = isSet(12, ecx7)
} }
X86.HasAMXTile = isSet(edx7, cpuid_AMXTile) X86.HasAMXTile = isSet(24, edx7)
X86.HasAMXInt8 = isSet(edx7, cpuid_AMXInt8) X86.HasAMXInt8 = isSet(25, edx7)
X86.HasAMXBF16 = isSet(edx7, cpuid_AMXBF16) X86.HasAMXBF16 = isSet(22, edx7)
// These features depend on the second level of extended features. // These features depend on the second level of extended features.
if eax7 >= 1 { if eax7 >= 1 {
eax71, _, _, edx71 := cpuid(7, 1) eax71, _, _, edx71 := cpuid(7, 1)
if X86.HasAVX512 { if X86.HasAVX512 {
X86.HasAVX512BF16 = isSet(eax71, cpuid_AVX512BF16) X86.HasAVX512BF16 = isSet(5, eax71)
} }
if X86.HasAVX { if X86.HasAVX {
X86.HasAVXIFMA = isSet(eax71, cpuid_AVXIFMA) X86.HasAVXIFMA = isSet(23, eax71)
X86.HasAVXVNNI = isSet(eax71, cpuid_AVXVNNI) X86.HasAVXVNNI = isSet(4, eax71)
X86.HasAVXVNNIInt8 = isSet(edx71, cpuid_AVXVNNIInt8) X86.HasAVXVNNIInt8 = isSet(4, edx71)
} }
} }
} }
func isSet(hwc uint32, value uint32) bool { func isSet(bitpos uint, value uint32) bool {
return hwc&value != 0 return value&(1<<bitpos) != 0
} }
+1 -2
View File
@@ -256,7 +256,6 @@ struct ltchars {
#include <linux/loop.h> #include <linux/loop.h>
#include <linux/lwtunnel.h> #include <linux/lwtunnel.h>
#include <linux/magic.h> #include <linux/magic.h>
#include <linux/mei.h>
#include <linux/memfd.h> #include <linux/memfd.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/mount.h> #include <linux/mount.h>
@@ -614,7 +613,7 @@ ccflags="$@"
$2 !~ /IOC_MAGIC/ && $2 !~ /IOC_MAGIC/ &&
$2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ || $2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ ||
$2 ~ /^(VM|VMADDR)_/ || $2 ~ /^(VM|VMADDR)_/ ||
$2 ~ /^(IOCTL_VM_SOCKETS_|IOCTL_MEI_)/ || $2 ~ /^IOCTL_VM_SOCKETS_/ ||
$2 ~ /^(TASKSTATS|TS)_/ || $2 ~ /^(TASKSTATS|TS)_/ ||
$2 ~ /^CGROUPSTATS_/ || $2 ~ /^CGROUPSTATS_/ ||
$2 ~ /^GENL_/ || $2 ~ /^GENL_/ ||
+1 -1
View File
@@ -909,7 +909,7 @@ func sockaddrIUCVToAny(in RawSockaddrIUCV) *RawSockaddrAny {
var out RawSockaddrAny var out RawSockaddrAny
copy( copy(
(*(*[SizeofSockaddrAny]byte)(unsafe.Pointer(&out)))[:], (*(*[SizeofSockaddrAny]byte)(unsafe.Pointer(&out)))[:],
(*(*[SizeofSockaddrIUCV]byte)(unsafe.Pointer(&in)))[:], (*(*[SizeofSockaddrUnix]byte)(unsafe.Pointer(&in)))[:],
) )
return &out return &out
} }
-2
View File
@@ -1615,8 +1615,6 @@ const (
IN_OPEN = 0x20 IN_OPEN = 0x20
IN_Q_OVERFLOW = 0x4000 IN_Q_OVERFLOW = 0x4000
IN_UNMOUNT = 0x2000 IN_UNMOUNT = 0x2000
IOCTL_MEI_CONNECT_CLIENT = 0xc0104801
IOCTL_MEI_CONNECT_CLIENT_VTAG = 0xc0144804
IPPROTO_AH = 0x33 IPPROTO_AH = 0x33
IPPROTO_BEETPH = 0x5e IPPROTO_BEETPH = 0x5e
IPPROTO_COMP = 0x6c IPPROTO_COMP = 0x6c
-2
View File
@@ -116,8 +116,6 @@ const (
IEXTEN = 0x8000 IEXTEN = 0x8000
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x80044803
IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWLABEL_MASK = 0xffff0f00
-2
View File
@@ -116,8 +116,6 @@ const (
IEXTEN = 0x8000 IEXTEN = 0x8000
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x80044803
IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWLABEL_MASK = 0xffff0f00
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x8000 IEXTEN = 0x8000
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x80044803
IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWLABEL_MASK = 0xffff0f00
-2
View File
@@ -120,8 +120,6 @@ const (
IEXTEN = 0x8000 IEXTEN = 0x8000
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x80044803
IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWLABEL_MASK = 0xffff0f00
-2
View File
@@ -116,8 +116,6 @@ const (
IEXTEN = 0x8000 IEXTEN = 0x8000
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x80044803
IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWLABEL_MASK = 0xffff0f00
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x100 IEXTEN = 0x100
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x80 IN_NONBLOCK = 0x80
IOCTL_MEI_NOTIFY_GET = 0x40044803
IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff IPV6_FLOWLABEL_MASK = 0xfffff
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x100 IEXTEN = 0x100
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x80 IN_NONBLOCK = 0x80
IOCTL_MEI_NOTIFY_GET = 0x40044803
IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff IPV6_FLOWLABEL_MASK = 0xfffff
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x100 IEXTEN = 0x100
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x80 IN_NONBLOCK = 0x80
IOCTL_MEI_NOTIFY_GET = 0x40044803
IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWLABEL_MASK = 0xffff0f00
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x100 IEXTEN = 0x100
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x80 IN_NONBLOCK = 0x80
IOCTL_MEI_NOTIFY_GET = 0x40044803
IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWLABEL_MASK = 0xffff0f00
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x400 IEXTEN = 0x400
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x40044803
IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff IPV6_FLOWLABEL_MASK = 0xfffff
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x400 IEXTEN = 0x400
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x40044803
IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff IPV6_FLOWLABEL_MASK = 0xfffff
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x400 IEXTEN = 0x400
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x40044803
IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWLABEL_MASK = 0xffff0f00
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x8000 IEXTEN = 0x8000
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x80044803
IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWLABEL_MASK = 0xffff0f00
-2
View File
@@ -115,8 +115,6 @@ const (
IEXTEN = 0x8000 IEXTEN = 0x8000
IN_CLOEXEC = 0x80000 IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800 IN_NONBLOCK = 0x800
IOCTL_MEI_NOTIFY_GET = 0x80044803
IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xfffffff IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff IPV6_FLOWLABEL_MASK = 0xfffff
-2
View File
@@ -119,8 +119,6 @@ const (
IEXTEN = 0x8000 IEXTEN = 0x8000
IN_CLOEXEC = 0x400000 IN_CLOEXEC = 0x400000
IN_NONBLOCK = 0x4000 IN_NONBLOCK = 0x4000
IOCTL_MEI_NOTIFY_GET = 0x40044803
IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff IPV6_FLOWLABEL_MASK = 0xfffff
+1 -1
View File
@@ -104,7 +104,7 @@ type Statvfs_t struct {
Fsid uint32 Fsid uint32
Namemax uint32 Namemax uint32
Owner uint32 Owner uint32
Spare [4]uint64 Spare [4]uint32
Fstypename [32]byte Fstypename [32]byte
Mntonname [1024]byte Mntonname [1024]byte
Mntfromname [1024]byte Mntfromname [1024]byte