X-Git-Url: https://git.ao2.it/libam7xxx.git/blobdiff_plain/2d1f8c13ccce07e38c0dd08e28323f2dcbd14bc8..2aaeac65529d1bd4a030c3c15728143c66b141dd:/src/tools.c diff --git a/src/tools.c b/src/tools.c new file mode 100644 index 0000000..be63ac6 --- /dev/null +++ b/src/tools.c @@ -0,0 +1,48 @@ +/* am7xxx - communication with AM7xxx based USB Pico Projectors and DPFs + * + * Copyright (C) 2014 Antonio Ospite + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include "tools.h" + +/** + * Sleep for a period expressed in milliseconds + * + * @param[in] msecs Time to sleep in milliseconds + * + * @return 0 on success, -1 on error + */ +int msleep(unsigned long msecs) +{ + struct timespec delay; + int ret; + + delay.tv_sec = msecs / 1000; + delay.tv_nsec = (msecs % 1000) * 1000000; + while (1) { + ret = nanosleep(&delay, &delay); + if (ret == -1 && errno == EINTR) + continue; + break; + } + if (ret == -1) + return ret; + + return 0; +}