Index: ossp-pkg/pth/ChangeLog RCS File: /v/ossp/cvs/ossp-pkg/pth/ChangeLog,v rcsdiff -q -kk '-r1.521' '-r1.522' -u '/v/ossp/cvs/ossp-pkg/pth/ChangeLog,v' 2>/dev/null --- ChangeLog 2000/07/18 09:02:03 1.521 +++ ChangeLog 2000/07/28 19:18:46 1.522 @@ -20,6 +20,9 @@ __|_(_) |_|_____________________________________________________________ Changes between 1.4a2 and 1.4a3 (01-Jul-2000 to xx-Jul-2000) + + *) Fixed (unused) pth_time_mul() function: operator & replaced by % + [Tim Harris ] *) Use --disable-lock for ltconfig. [Ralf S. Engelschall] Index: ossp-pkg/pth/pth_time.c RCS File: /v/ossp/cvs/ossp-pkg/pth/pth_time.c,v co -q -kk -p'1.25' '/v/ossp/cvs/ossp-pkg/pth/pth_time.c,v' | diff -u /dev/null - -L'ossp-pkg/pth/pth_time.c' 2>/dev/null --- ossp-pkg/pth/pth_time.c +++ - 2024-05-14 15:28:09.426355694 +0200 @@ -0,0 +1,182 @@ +/* +** GNU Pth - The GNU Portable Threads +** Copyright (c) 1999-2000 Ralf S. Engelschall +** +** This file is part of GNU Pth, a non-preemptive thread scheduling +** library which can be found at http://www.gnu.org/software/pth/. +** +** This library is free software; you can redistribute it and/or +** modify it under the terms of the GNU Lesser General Public +** License as published by the Free Software Foundation; either +** version 2.1 of the License, or (at your option) any later version. +** +** This library 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 +** Lesser General Public License for more details. +** +** You should have received a copy of the GNU Lesser General Public +** License along with this library; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +** USA, or contact Ralf S. Engelschall . +** +** pth_time.c: Pth time calculations +*/ + /* ``Real programmers confuse + Christmas and Halloween + because DEC 25 = OCT 31.'' + -- Unknown */ +#include "pth_p.h" + +#if cpp +#define PTH_TIME_NOW (pth_time_t *)(0) +#define PTH_TIME_ZERO &pth_time_zero +#define PTH_TIME(sec,usec) { sec, usec } +#define pth_time_equal(t1,t2) \ + (((t1).tv_sec == (t2).tv_sec) && ((t1).tv_usec == (t2).tv_usec)) +#endif /* cpp */ + +/* a global variable holding a zero time */ +intern pth_time_t pth_time_zero = { 0L, 0L }; + +/* sleep for a specified amount of microseconds */ +intern void pth_time_usleep(unsigned long usec) +{ +#ifdef HAVE_USLEEP + usleep((unsigned int )usec); +#else + struct timeval timeout; + timeout.tv_sec = usec / 1000000; + timeout.tv_usec = usec - (1000000 * timeout.tv_sec); + while (pth_sc(select)(1, NULL, NULL, NULL, &timeout) < 0 && errno == EINTR) ; +#endif + return; +} + +/* calculate: t1 = t2 */ +#if cpp +#if defined(HAVE_GETTIMEOFDAY_ARGS1) +#define __gettimeofday(t) gettimeofday(t) +#else +#define __gettimeofday(t) gettimeofday(t, NULL) +#endif +#define pth_time_set(t1,t2) \ + do { \ + if ((t2) == PTH_TIME_NOW) \ + __gettimeofday((t1)); \ + else { \ + (t1)->tv_sec = (t2)->tv_sec; \ + (t1)->tv_usec = (t2)->tv_usec; \ + } \ + } while (0) +#endif /* cpp */ + +/* time value constructor */ +pth_time_t pth_time(long sec, long usec) +{ + pth_time_t tv; + + tv.tv_sec = sec; + tv.tv_usec = usec; + return tv; +} + +/* timeout value constructor */ +pth_time_t pth_timeout(long sec, long usec) +{ + pth_time_t tv; + pth_time_t tvd; + + pth_time_set(&tv, PTH_TIME_NOW); + tvd.tv_sec = sec; + tvd.tv_usec = usec; + pth_time_add(&tv, &tvd); + return tv; +} + +/* calculate: t1 <=> t2 */ +intern int pth_time_cmp(pth_time_t *t1, pth_time_t *t2) +{ + int rc; + + rc = t1->tv_sec - t2->tv_sec; + if (rc == 0) + rc = t1->tv_usec - t2->tv_usec; + return rc; +} + +/* calculate: t1 = t1 + t2 */ +#if cpp +#define pth_time_add(t1,t2) \ + (t1)->tv_sec += (t2)->tv_sec; \ + (t1)->tv_usec += (t2)->tv_usec; \ + if ((t1)->tv_usec > 1000000) { \ + (t1)->tv_sec += 1; \ + (t1)->tv_usec -= 1000000; \ + } +#endif + +/* calculate: t1 = t1 - t2 */ +#if cpp +#define pth_time_sub(t1,t2) \ + (t1)->tv_sec -= (t2)->tv_sec; \ + (t1)->tv_usec -= (t2)->tv_usec; \ + if ((t1)->tv_usec < 0) { \ + (t1)->tv_sec -= 1; \ + (t1)->tv_usec += 1000000; \ + } +#endif + +/* calculate: t1 = t1 / n */ +intern void pth_time_div(pth_time_t *t1, int n) +{ + long q, r; + + q = (t1->tv_sec / n); + r = (((t1->tv_sec % n) * 1000000) / n) + (t1->tv_usec / n); + if (r > 1000000) { + q += 1; + r -= 1000000; + } + t1->tv_sec = q; + t1->tv_usec = r; + return; +} + +/* calculate: t1 = t1 * n */ +intern void pth_time_mul(pth_time_t *t1, int n) +{ + t1->tv_sec *= n; + t1->tv_usec *= n; + t1->tv_sec += (t1->tv_usec / 1000000); + t1->tv_usec = (t1->tv_usec % 1000000); + return; +} + +/* convert a time structure into a double value */ +intern double pth_time_t2d(pth_time_t *t) +{ + double d; + + d = ((double)t->tv_sec*1000000 + (double)t->tv_usec) / 1000000; + return d; +} + +/* convert a time structure into a integer value */ +intern int pth_time_t2i(pth_time_t *t) +{ + int i; + + i = (t->tv_sec*1000000 + t->tv_usec) / 1000000; + return i; +} + +/* check whether time is positive */ +intern int pth_time_pos(pth_time_t *t) +{ + if (t->tv_sec > 0 && t->tv_usec > 0) + return 1; + else + return 0; +} +