brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · e7613bb Raw
53 lines · cpp
1// RUN: %clangxx -O0 -g %s -o %t && %run %t | FileCheck %s2#include <assert.h>3#include <stdio.h>4#include <string.h>5#include <time.h>6#include <sys/timerfd.h>7#include <unistd.h>8 9int main (int argc, char** argv)10{11  int fd = timerfd_create(CLOCK_REALTIME, 0);12  assert(fd >= 0);13 14  struct itimerspec its;15  its.it_value.tv_sec = 0;16  its.it_value.tv_nsec = 1000000;17  its.it_interval.tv_sec = its.it_value.tv_sec;18  its.it_interval.tv_nsec = its.it_value.tv_nsec;19 20  int res = timerfd_settime(fd, 0, &its, NULL);21  assert(res != -1);22 23  struct itimerspec its2;24  res = timerfd_settime(fd, 0, &its, &its2);25  assert(res != -1);26  assert(its2.it_interval.tv_sec == its.it_interval.tv_sec);27  assert(its2.it_interval.tv_nsec == its.it_interval.tv_nsec);28  assert(its2.it_value.tv_sec <= its.it_value.tv_sec);29  assert(its2.it_value.tv_nsec <= its.it_value.tv_nsec);30 31  struct itimerspec its3;32  res = timerfd_gettime(fd, &its3);33  assert(res != -1);34  assert(its3.it_interval.tv_sec == its.it_interval.tv_sec);35  assert(its3.it_interval.tv_nsec == its.it_interval.tv_nsec);36  assert(its3.it_value.tv_sec <= its.it_value.tv_sec);37  assert(its3.it_value.tv_nsec <= its.it_value.tv_nsec);38 39 40  unsigned long long buf;41  res = read(fd, &buf, sizeof(buf));42  assert(res == 8);43  assert(buf >= 1);44 45  res = close(fd);46  assert(res != -1);47 48  printf("DONE\n");49  // CHECK: DONE50  51  return 0;52}53