aboutsummaryrefslogtreecommitdiff
path: root/core/sys/info
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2025-08-08 12:10:01 +0100
committergingerBill <gingerBill@users.noreply.github.com>2025-08-08 12:10:01 +0100
commit7642e0a0e0bb0ff79da6ac7a2ba3b787afa32b78 (patch)
treeaec4baaf441f58b3c6c9a8a55c61e5f8c6218f4b /core/sys/info
parent3194fda8f3b01affc086eec4102d924277fe9f43 (diff)
Require `@(init)` and `@(fini)` to be `proc "contextless" ()`
Diffstat (limited to 'core/sys/info')
-rw-r--r--core/sys/info/cpu_intel.odin4
-rw-r--r--core/sys/info/cpu_linux_arm.odin4
-rw-r--r--core/sys/info/cpu_linux_intel.odin5
-rw-r--r--core/sys/info/cpu_windows.odin5
-rw-r--r--core/sys/info/platform_darwin.odin5
-rw-r--r--core/sys/info/platform_linux.odin9
-rw-r--r--core/sys/info/platform_windows.odin12
7 files changed, 31 insertions, 13 deletions
diff --git a/core/sys/info/cpu_intel.odin b/core/sys/info/cpu_intel.odin
index 7c5b38ca4..e8f07c732 100644
--- a/core/sys/info/cpu_intel.odin
+++ b/core/sys/info/cpu_intel.odin
@@ -52,7 +52,7 @@ CPU :: struct {
cpu: CPU
@(init, private)
-init_cpu_features :: proc "c" () {
+init_cpu_features :: proc "contextless" () {
is_set :: #force_inline proc "c" (bit: u32, value: u32) -> bool {
return (value>>bit) & 0x1 != 0
}
@@ -156,7 +156,7 @@ init_cpu_features :: proc "c" () {
_cpu_name_buf: [72]u8
@(init, private)
-init_cpu_name :: proc "c" () {
+init_cpu_name :: proc "contextless" () {
number_of_extended_ids, _, _, _ := cpuid(0x8000_0000, 0)
if number_of_extended_ids < 0x8000_0004 {
return
diff --git a/core/sys/info/cpu_linux_arm.odin b/core/sys/info/cpu_linux_arm.odin
index cde76a83d..6e8b1a634 100644
--- a/core/sys/info/cpu_linux_arm.odin
+++ b/core/sys/info/cpu_linux_arm.odin
@@ -2,11 +2,13 @@
#+build linux
package sysinfo
+import "base:runtime"
import "core:sys/linux"
import "core:strings"
@(init, private)
-init_cpu_features :: proc() {
+init_cpu_features :: proc "contextless" () {
+ context = runtime.default_context()
fd, err := linux.open("/proc/cpuinfo", {})
if err != .NONE { return }
defer linux.close(fd)
diff --git a/core/sys/info/cpu_linux_intel.odin b/core/sys/info/cpu_linux_intel.odin
index e43737475..af76a75e4 100644
--- a/core/sys/info/cpu_linux_intel.odin
+++ b/core/sys/info/cpu_linux_intel.odin
@@ -2,12 +2,15 @@
#+build linux
package sysinfo
+import "base:runtime"
import "core:sys/linux"
import "core:strings"
import "core:strconv"
@(init, private)
-init_cpu_core_count :: proc() {
+init_cpu_core_count :: proc "contextless" () {
+ context = runtime.default_context()
+
fd, err := linux.open("/proc/cpuinfo", {})
if err != .NONE { return }
defer linux.close(fd)
diff --git a/core/sys/info/cpu_windows.odin b/core/sys/info/cpu_windows.odin
index 7dd2d2a8c..72d79f9a7 100644
--- a/core/sys/info/cpu_windows.odin
+++ b/core/sys/info/cpu_windows.odin
@@ -2,9 +2,12 @@ package sysinfo
import sys "core:sys/windows"
import "base:intrinsics"
+import "base:runtime"
@(init, private)
-init_cpu_core_count :: proc() {
+init_cpu_core_count :: proc "contextless" () {
+ context = runtime.default_context()
+
infos: []sys.SYSTEM_LOGICAL_PROCESSOR_INFORMATION
defer delete(infos)
diff --git a/core/sys/info/platform_darwin.odin b/core/sys/info/platform_darwin.odin
index 3fc8064ec..07c26ec28 100644
--- a/core/sys/info/platform_darwin.odin
+++ b/core/sys/info/platform_darwin.odin
@@ -1,5 +1,7 @@
package sysinfo
+import "base:runtime"
+
import "core:strconv"
import "core:strings"
import "core:sys/unix"
@@ -9,7 +11,8 @@ import NS "core:sys/darwin/Foundation"
version_string_buf: [1024]u8
@(init, private)
-init_platform :: proc() {
+init_platform :: proc "contextless" () {
+ context = runtime.default_context()
ws :: strings.write_string
wi :: strings.write_int
diff --git a/core/sys/info/platform_linux.odin b/core/sys/info/platform_linux.odin
index 9c342e567..43cd580c1 100644
--- a/core/sys/info/platform_linux.odin
+++ b/core/sys/info/platform_linux.odin
@@ -1,6 +1,7 @@
package sysinfo
import "base:intrinsics"
+import "base:runtime"
import "core:strconv"
import "core:strings"
@@ -10,7 +11,9 @@ import "core:sys/linux"
version_string_buf: [1024]u8
@(init, private)
-init_os_version :: proc () {
+init_os_version :: proc "contextless" () {
+ context = runtime.default_context()
+
os_version.platform = .Linux
b := strings.builder_from_bytes(version_string_buf[:])
@@ -91,11 +94,11 @@ init_os_version :: proc () {
}
@(init, private)
-init_ram :: proc() {
+init_ram :: proc "contextless" () {
// Retrieve RAM info using `sysinfo`
sys_info: linux.Sys_Info
errno := linux.sysinfo(&sys_info)
- assert(errno == .NONE, "Good luck to whoever's debugging this, something's seriously cucked up!")
+ assert_contextless(errno == .NONE, "Good luck to whoever's debugging this, something's seriously cucked up!")
ram = RAM{
total_ram = int(sys_info.totalram) * int(sys_info.mem_unit),
free_ram = int(sys_info.freeram) * int(sys_info.mem_unit),
diff --git a/core/sys/info/platform_windows.odin b/core/sys/info/platform_windows.odin
index dd1441d30..ff8ebe2ee 100644
--- a/core/sys/info/platform_windows.odin
+++ b/core/sys/info/platform_windows.odin
@@ -12,7 +12,9 @@ import "base:runtime"
version_string_buf: [1024]u8
@(init, private)
-init_os_version :: proc () {
+init_os_version :: proc "contextless" () {
+ context = runtime.default_context()
+
/*
NOTE(Jeroen):
`GetVersionEx` will return 6.2 for Windows 10 unless the program is manifested for Windows 10.
@@ -43,6 +45,7 @@ init_os_version :: proc () {
os_version.minor = int(osvi.dwMinorVersion)
os_version.build[0] = int(osvi.dwBuildNumber)
+
b := strings.builder_from_bytes(version_string_buf[:])
strings.write_string(&b, "Windows ")
@@ -259,7 +262,7 @@ init_os_version :: proc () {
}
@(init, private)
-init_ram :: proc() {
+init_ram :: proc "contextless" () {
state: sys.MEMORYSTATUSEX
state.dwLength = size_of(state)
@@ -276,10 +279,11 @@ init_ram :: proc() {
}
@(init, private)
-init_gpu_info :: proc() {
-
+init_gpu_info :: proc "contextless" () {
GPU_INFO_BASE :: "SYSTEM\\ControlSet001\\Control\\Class\\{4d36e968-e325-11ce-bfc1-08002be10318}\\"
+ context = runtime.default_context()
+
gpu_list: [dynamic]GPU
gpu_index: int