mirror of
https://github.com/odin-lang/Odin.git
synced 2026-02-12 14:23:33 +00:00
36 lines
720 B
Odin
36 lines
720 B
Odin
#+private
|
|
#+build freebsd
|
|
package os
|
|
|
|
import "core:c"
|
|
|
|
foreign import libc "system:c"
|
|
foreign import dl "system:dl"
|
|
|
|
foreign libc {
|
|
@(link_name="sysctlbyname")
|
|
_sysctlbyname :: proc(path: cstring, oldp: rawptr, oldlenp: rawptr, newp: rawptr, newlen: int) -> c.int ---
|
|
}
|
|
|
|
foreign dl {
|
|
@(link_name="pthread_getthreadid_np")
|
|
pthread_getthreadid_np :: proc() -> c.int ---
|
|
}
|
|
|
|
@(require_results)
|
|
_get_current_thread_id :: proc "contextless" () -> int {
|
|
return int(pthread_getthreadid_np())
|
|
}
|
|
|
|
@(require_results)
|
|
_get_processor_core_count :: proc() -> int {
|
|
count : int = 0
|
|
count_size := size_of(count)
|
|
if _sysctlbyname("hw.ncpu", &count, &count_size, nil, 0) == 0 {
|
|
if count > 0 {
|
|
return count
|
|
}
|
|
}
|
|
|
|
return 1
|
|
} |