All timing functions in LibUCW are based on signed 64-bit timestamps with millisecond precision (the timestamp_t type), which measure time from an unspecified moment in the past. Depending on the compile-time settings, that moment can be the traditional UNIX epoch, or for example system boot if POSIX monotonic clock is used.

timestamp_t get_timestamp(void);

Get current time as a millisecond timestamp.

extern struct cf_user_type timestamp_type;

A user type for parsing of time intervals in configuration files. It is specified as fractional seconds and internally converted to a timestamp_t. When conversion of a non-zero value yields zero, an error is raised.


A timer is a very simple construct for measuring execution time. It can be initialized and then read multiple times. Each read returns the number of milliseconds elapsed since the previous read or initialization.

void init_timer(timestamp_t *timer);

Initialize a timer.

uint get_timer(timestamp_t *timer);

Get the number of milliseconds since last init/get of a timer.

uint switch_timer(timestamp_t *oldt, timestamp_t *newt);

Stop ticking of one timer and resume another.