xref: /plan9-contrib/sys/src/cmd/ld/Posix.c (revision 40d015479ed36701ae6dcfd8814f849fc6285e8d)
1*40d01547SDavid du Colombier #include	"l.h"
2*40d01547SDavid du Colombier #include <sys/types.h>
3*40d01547SDavid du Colombier #include <sys/stat.h>
4*40d01547SDavid du Colombier #include <sys/times.h>
5*40d01547SDavid du Colombier #undef getwd
6*40d01547SDavid du Colombier #include <unistd.h>	/* For sysconf() and _SC_CLK_TCK */
7*40d01547SDavid du Colombier 
8*40d01547SDavid du Colombier void*
mysbrk(usize size)9*40d01547SDavid du Colombier mysbrk(usize size)
10*40d01547SDavid du Colombier {
11*40d01547SDavid du Colombier 	return (void*)sbrk(size);
12*40d01547SDavid du Colombier }
13*40d01547SDavid du Colombier 
14*40d01547SDavid du Colombier double
cputime(void)15*40d01547SDavid du Colombier cputime(void)
16*40d01547SDavid du Colombier {
17*40d01547SDavid du Colombier 
18*40d01547SDavid du Colombier 	struct tms tmbuf;
19*40d01547SDavid du Colombier 	double	ret_val;
20*40d01547SDavid du Colombier 
21*40d01547SDavid du Colombier 	/*
22*40d01547SDavid du Colombier 	 * times() only fails if &tmbuf is invalid.
23*40d01547SDavid du Colombier 	 */
24*40d01547SDavid du Colombier 	(void)times(&tmbuf);
25*40d01547SDavid du Colombier 	/*
26*40d01547SDavid du Colombier 	 * Return the total time (in system clock ticks)
27*40d01547SDavid du Colombier 	 * spent in user code and system
28*40d01547SDavid du Colombier 	 * calls by both the calling process and its children.
29*40d01547SDavid du Colombier 	 */
30*40d01547SDavid du Colombier 	ret_val = (double)(tmbuf.tms_utime + tmbuf.tms_stime +
31*40d01547SDavid du Colombier 			tmbuf.tms_cutime + tmbuf.tms_cstime);
32*40d01547SDavid du Colombier 	/*
33*40d01547SDavid du Colombier 	 * Convert to seconds.
34*40d01547SDavid du Colombier 	 */
35*40d01547SDavid du Colombier 	ret_val *= sysconf(_SC_CLK_TCK);
36*40d01547SDavid du Colombier 	return ret_val;
37*40d01547SDavid du Colombier 
38*40d01547SDavid du Colombier }
39*40d01547SDavid du Colombier 
40*40d01547SDavid du Colombier int
fileexists(char * name)41*40d01547SDavid du Colombier fileexists(char *name)
42*40d01547SDavid du Colombier {
43*40d01547SDavid du Colombier 	struct stat sb;
44*40d01547SDavid du Colombier 
45*40d01547SDavid du Colombier 	return stat(name, &sb) >= 0;
46*40d01547SDavid du Colombier }
47