1 /* utime.c - IOMultiplexer
2 * Copyright (C) 2014 Philipp Kreil (pk910)
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #include "../IOHandler_config.h"
23 #ifdef HAVE_SYS_SELECT_H
24 # include <sys/select.h>
26 # include <sys/time.h>
27 # include <sys/types.h>
31 void usleep_tv(struct timeval tv) {
32 select(0, NULL, NULL, NULL, &tv);
35 void usleep(long usec)
39 tv.tv_sec = usec / 1000000;
40 tv.tv_usec = usec % 1000000;
46 /* usleep implementation from FreeSCI */
50 void usleep_tv(struct timeval tv) {
51 usleep(tv.tv_sec * 1000000 + tv.tv_usec);
54 void usleep (long usec)
56 LARGE_INTEGER lFrequency;
57 LARGE_INTEGER lEndTime;
58 LARGE_INTEGER lCurTime;
60 QueryPerformanceFrequency (&lFrequency);
61 if (lFrequency.QuadPart) {
62 QueryPerformanceCounter (&lEndTime);
63 lEndTime.QuadPart += (LONGLONG) usec *
64 lFrequency.QuadPart / 1000000;
66 QueryPerformanceCounter (&lCurTime);
68 } while (lCurTime.QuadPart < lEndTime.QuadPart);
80 void usleep_tv(struct timeval tv) {
81 usleep(tv.tv_sec * 1000000 + tv.tv_usec);
84 #endif /* !HAVE_USLEEP */