C++程序  |  41行  |  970 B

/*
 * Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include <errno.h>
#include <string.h>
#include <time.h>

#include <sys/timex.h>

/* This program is expected to run under android alt-syscall. */
int main(void) {
  struct timex buf;
  int ret;

  /* Test read operation. Should succeed (i.e. not returning -1). */
  memset(&buf, 0, sizeof(buf));
  ret = clock_adjtime(CLOCK_REALTIME, &buf);
  if (ret == -1)
    return 1;

  /* Test with nullptr buffer. Should fail with EFAULT. */
  ret = clock_adjtime(CLOCK_REALTIME, NULL);
  if (ret != -1 || errno != EFAULT)
    return 2;

  /*
   * Test a write operation. Under android alt-syscall, should fail with
   * EPERM.
   */
  buf.modes = ADJ_MAXERROR;
  ret = clock_adjtime(CLOCK_REALTIME, &buf);
  if (ret != -1 || errno != EPERM)
    return 3;

  /* Passed successfully */
  return 0;
}