#+build linux, darwin, netbsd, openbsd, freebsd, haiku
package posix

when ODIN_OS == .Darwin {
	foreign import lib "system:System"
} else {
	foreign import lib "system:c"
}

// sys/times.h - file access and modification times structure

foreign lib {
	/*
	Get time accounting information.

	Returns: -1 (setting errno) on failure, the elapsed real time, since an arbitrary point in the past
	*/
	@(link_name=LTIMES)
	times :: proc(buffer: ^tms) -> clock_t ---
}

when ODIN_OS == .NetBSD {
	@(private) LTIMES :: "__times13"
} else {
	@(private) LTIMES :: "times"
}

when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .Linux || ODIN_OS == .Haiku {

	tms :: struct {
		tms_utime:  clock_t, /* [PSX] user CPU time */
		tms_stime:  clock_t, /* [PSX] system CPU time */
		tms_cutime: clock_t, /* [PSX] terminated children user CPU time */
		tms_cstime: clock_t, /* [PSX] terminated children system CPU time */
	}

}
