1 #include "uwsgi.h"
2 
3 extern struct uwsgi_server uwsgi;
4 
uwsgi_simple_wait_milliseconds_hook(int timeout)5 int uwsgi_simple_wait_milliseconds_hook(int timeout) {
6         return poll(NULL, 0, timeout);
7 }
8 
9 
10 // in the future we will need to use the best clock source for each os/system
uwsgi_now()11 time_t uwsgi_now() {
12 	return uwsgi.clock->seconds();
13 }
14 
uwsgi_micros()15 uint64_t uwsgi_micros() {
16 	return uwsgi.clock->microseconds();
17 }
18 
uwsgi_millis()19 uint64_t uwsgi_millis() {
20 	return uwsgi.clock->microseconds() / 1000;
21 }
22 
23 
uwsgi_register_clock(struct uwsgi_clock * clock)24 void uwsgi_register_clock(struct uwsgi_clock *clock) {
25 	struct uwsgi_clock *clocks = uwsgi.clocks;
26 
27 	clock->next = NULL;
28 
29 	if (!clocks) {
30 		uwsgi.clocks = clock;
31 		return;
32 	}
33 
34 	while (clocks) {
35 		if (!clocks->next) {
36 			clocks->next = clock;
37 			return;
38 		}
39 		clocks = clocks->next;
40 	}
41 }
42 
uwsgi_set_clock(char * name)43 void uwsgi_set_clock(char *name) {
44 	struct uwsgi_clock *clocks = uwsgi.clocks;
45 	while (clocks) {
46 		if (!strcmp(name, clocks->name)) {
47 			uwsgi.clock = clocks;
48 			return;
49 		}
50 		clocks = clocks->next;
51 	}
52 
53 	uwsgi_log("unable to set \"%s\" clock\n", name);
54 	exit(1);
55 }
56