summaryrefslogtreecommitdiff
path: root/lib/std/syswrap-ss+linux.myr
blob: 760a7db0bc90daa71447ef8bf70a9319f8819180 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use sys
use "types"
use "errno"

pkg std =
	const nanosleep	: (nsecs : uint64 -> errno)
	$noret const exit	: (status:int -> void)

	pkglocal const bgetcwd	: (buf : byte[:] -> errno)
;;

const nanosleep	= {nsecs
	var req, rem
	var s, ns

	s = (nsecs / 1_000_000_000 : int64)
	ns = (nsecs % 1_000_000_000 : int64)
	req = [.sec = s, .nsec = ns]

	-> (sys.nanosleep(&req, &rem) : errno)
}

const exit = {status;
	sys.exit_group(status)
}

const bgetcwd = {buf;
	var err
	err = (sys.getcwd(buf) : errno)
	/*
	if we got a length back, it includes
	the nul byte. chop that off.
	*/
	if err > 0
		-> err - 1
	else
		-> err
	;;
}