summaryrefslogtreecommitdiff
path: root/cmd/cmd_botu.c
blob: d5a9e4eab2c1244cab30ae7196008a2b9189d489 (plain) (blame)
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
40
41
42
43
44
45
46
#include "cmd_botu.h"

#define BILLION 1000000000L

void *cmd_botu(void *data)
{
	char *ret = NULL;
	int fret=-1;

	const int buf_size = 128;
	char buf[buf_size+1];

	struct timespec start;
	struct stat file_stat;
	uint64_t proc_sec;

	printf("BOTU\n");

	stat("/proc/self",&file_stat);

	/*
	CHECK PREDIFINED MACROSES IF SUCH FUNCTIONALITY EXCISTS OR NOT
	*/
	#if _POSIX_C_SOURCE < 199309L
		ERROR("Dont have functionality\n");
	#endif

	fret = clock_gettime(CLOCK_REALTIME, &start);
	if (fret<0)
	{
		perror("clock gettime");
		ret = alloc_new_str("Can get clock thread uptime\n");
		return ret;
	}

	proc_sec = start.tv_sec - file_stat.st_ctim.tv_sec;

	snprintf(buf, buf_size, "%lud %luh %lum %lus\n", 
		(proc_sec/(3600*24)),
		(proc_sec/(3600))%24, 
		(proc_sec/60)%60, 
		proc_sec%60);
	ret = alloc_new_str(buf);

	return ret;
}