| Index: fusl/src/linux/adjtime.c
 | 
| diff --git a/fusl/src/linux/adjtime.c b/fusl/src/linux/adjtime.c
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..fa8af9f021773f575989fb34b872699434cfe4cf
 | 
| --- /dev/null
 | 
| +++ b/fusl/src/linux/adjtime.c
 | 
| @@ -0,0 +1,27 @@
 | 
| +#define _GNU_SOURCE
 | 
| +#include <sys/time.h>
 | 
| +#include <sys/timex.h>
 | 
| +#include <errno.h>
 | 
| +#include "syscall.h"
 | 
| +
 | 
| +int adjtime(const struct timeval *in, struct timeval *out)
 | 
| +{
 | 
| +	struct timex tx = { 0 };
 | 
| +	if (in) {
 | 
| +		if (in->tv_sec > 1000 || in->tv_usec > 1000000000) {
 | 
| +			errno = EINVAL;
 | 
| +			return -1;
 | 
| +		}
 | 
| +		tx.offset = in->tv_sec*1000000 + in->tv_usec;
 | 
| +		tx.modes = ADJ_OFFSET_SINGLESHOT;
 | 
| +	}
 | 
| +	if (syscall(SYS_adjtimex, &tx) < 0) return -1;
 | 
| +	if (out) {
 | 
| +		out->tv_sec = tx.offset / 1000000;
 | 
| +		if ((out->tv_usec = tx.offset % 1000000) < 0) {
 | 
| +			out->tv_sec--;
 | 
| +			out->tv_usec += 1000000;
 | 
| +		}
 | 
| +	}
 | 
| +	return 0;
 | 
| +}
 | 
| 
 |