123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #+build linux, darwin, netbsd, openbsd, freebsd
- package posix
- import "core:c"
- when ODIN_OS == .Darwin {
- foreign import lib "system:System.framework"
- } else {
- foreign import lib "system:c"
- }
- // sys/time.h - time types
- foreign lib {
- /*
- Store the current value of timer into value.
- [[ More; https://pubs.opengroup.org/onlinepubs/9699919799/functions/getitimer.html ]]
- */
- @(link_name=LGETITIMER)
- getitimer :: proc(which: ITimer, value: ^itimerval) -> result ---
- /*
- Set the timer to the value given, and store the previous value in ovalue if it is not nil.
- [[ More; https://pubs.opengroup.org/onlinepubs/9699919799/functions/getitimer.html ]]
- */
- @(link_name=LSETITIMER)
- setitimer :: proc(which: ITimer, value: ^itimerval, ovalue: ^itimerval) -> result ---
- /*
- Obtains the current time.
- [[ More; https://pubs.opengroup.org/onlinepubs/9699919799/functions/gettimeofday.html ]]
- */
- @(link_name=LGETTIMEOFDAY)
- gettimeofday :: proc(tp: ^timeval, tzp: rawptr = nil) -> result ---
- /*
- Sets the access and modification times of the file at the given path.
- [[ More; https://pubs.opengroup.org/onlinepubs/9699919799/functions/utimes.html ]]
- */
- @(link_name=LUTIMES)
- utimes :: proc(path: cstring, times: ^[2]timeval) -> result ---
- }
- ITimer :: enum c.int {
- // Decrements in real time.
- REAL = ITIMER_REAL,
- // Decrements in process virtual time, only when the process is executing.
- VIRTUAL = ITIMER_VIRTUAL,
- // Decrements both in process virtual time and when the system is running on
- // behalf of the process.
- PROF = ITIMER_PROF,
- }
- when ODIN_OS == .NetBSD {
- @(private) LGETITIMER :: "__getitimer50"
- @(private) LSETITIMER :: "__setitimer50"
- @(private) LGETTIMEOFDAY :: "__gettimeofday50"
- @(private) LUTIMES :: "__utimes50"
- } else {
- @(private) LGETITIMER :: "getitimer"
- @(private) LSETITIMER :: "setitimer"
- @(private) LGETTIMEOFDAY :: "gettimeofday"
- @(private) LUTIMES :: "utimes"
- }
- when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .Linux {
- itimerval :: struct {
- it_interval: timeval, /* [PSX] timer interval */
- it_value: timeval, /* [PSX] current value */
- }
- ITIMER_REAL :: 0
- ITIMER_VIRTUAL :: 1
- ITIMER_PROF :: 2
- }
|