1/* 2 * Copyright (c) 2017 The Chromium OS Authors. All rights reserved. 3 * Use of this source code is governed by a BSD-style license that can be 4 * found in the LICENSE file. 5 */ 6 7#include <errno.h> 8#include <string.h> 9#include <time.h> 10 11#include <sys/timex.h> 12 13/* This program is expected to run under android alt-syscall. */ 14int main(void) { 15 struct timex buf; 16 int ret; 17 18 /* Test read operation. Should succeed (i.e. not returning -1). */ 19 memset(&buf, 0, sizeof(buf)); 20 ret = clock_adjtime(CLOCK_REALTIME, &buf); 21 if (ret == -1) 22 return 1; 23 24 /* Test with nullptr buffer. Should fail with EFAULT. */ 25 ret = clock_adjtime(CLOCK_REALTIME, NULL); 26 if (ret != -1 || errno != EFAULT) 27 return 2; 28 29 /* 30 * Test a write operation. Under android alt-syscall, should fail with 31 * EPERM. 32 */ 33 buf.modes = ADJ_MAXERROR; 34 ret = clock_adjtime(CLOCK_REALTIME, &buf); 35 if (ret != -1 || errno != EPERM) 36 return 3; 37 38 /* Passed successfully */ 39 return 0; 40} 41