You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

53 lines
1.5 KiB

  1. /*
  2. * This file is part of PowerDNS or dnsdist.
  3. * Copyright -- PowerDNS.COM B.V. and its contributors
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of version 2 of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * In addition, for the avoidance of any doubt, permission is granted to
  10. * link this program with OpenSSL and to (re)distribute the binaries
  11. * produced as the result of such linking.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  21. */
  22. #include "gettime.hh"
  23. #include "config.h"
  24. #ifdef HAVE_CLOCK_GETTIME
  25. #include <time.h>
  26. #ifndef CLOCK_MONOTONIC_RAW
  27. #define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC
  28. #endif
  29. int gettime(struct timespec *tp, bool needRealTime)
  30. {
  31. return clock_gettime(needRealTime ? CLOCK_REALTIME : CLOCK_MONOTONIC, tp);
  32. }
  33. #else
  34. #include <sys/time.h>
  35. int gettime(struct timespec *tp, bool needRealTime)
  36. {
  37. struct timeval tv;
  38. int ret = gettimeofday(&tv, NULL);
  39. if(ret < 0) return ret;
  40. tp->tv_sec = tv.tv_sec;
  41. tp->tv_nsec = tv.tv_usec * 1000;
  42. return ret;
  43. }
  44. #endif