diff options
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | doc/libstddjb/tai.html | 6 | ||||
| -rw-r--r-- | package/deps.mak | 2 | ||||
| -rw-r--r-- | src/include/skalibs/posixplz.h | 1 | ||||
| -rw-r--r-- | src/include/skalibs/tai.h | 2 | ||||
| -rw-r--r-- | src/libposixplz/millisleep.c | 12 | ||||
| -rw-r--r-- | src/libstddjb/tain_addmsec.c | 10 |
7 files changed, 34 insertions, 1 deletions
@@ -8,7 +8,7 @@ In 2.14.4.0 - New functions: buffer_timed_getv, buffer_timed_putv, timed_read, timed_readv, timed_Write, timed_writev - New sysdeps, better handling of variable sysdeps - - New function: sagetexecname + - New functions: sagetexecname, tain_addmsec, millisleep In 2.14.3.0 diff --git a/doc/libstddjb/tai.html b/doc/libstddjb/tai.html index dcdad11..080a9dd 100644 --- a/doc/libstddjb/tai.html +++ b/doc/libstddjb/tai.html @@ -407,6 +407,12 @@ Adds <em>c</em> seconds to *<em>a1</em> and stores the result into <em>a</em>. </p> <p> +<code> int tain_addmsec (tain *a, tain const *a1, unsigned int c) </code> <br /> +Adds <em>c</em> milliseconds to *<em>a1</em> and stores the result into <em>a</em>. +Unlike with the previous function, <em>c</em> cannot be negative. +</p> + +<p> <code> void tain_half (tain *a, tain const *b) </code> <br /> Stores *<em>b</em>/2 into <em>a</em>. *<em>b</em> must be relative. </p> diff --git a/package/deps.mak b/package/deps.mak index abd27b5..ef923c4 100644 --- a/package/deps.mak +++ b/package/deps.mak @@ -174,6 +174,7 @@ src/libposixplz/execvep_loose.o src/libposixplz/execvep_loose.lo: src/libposixpl src/libposixplz/fork_newpid.o src/libposixplz/fork_newpid.lo: src/libposixplz/fork_newpid.c src/include/skalibs/nonposix.h src/include/skalibs/sysdeps.h src/include/skalibs/uint64.h src/libposixplz/getpeereid.o src/libposixplz/getpeereid.lo: src/libposixplz/getpeereid.c src/include/skalibs/nonposix.h src/include/skalibs/posixplz.h src/include/skalibs/sysdeps.h src/libposixplz/memmem.o src/libposixplz/memmem.lo: src/libposixplz/memmem.c src/include/skalibs/posixplz.h src/include/skalibs/sysdeps.h +src/libposixplz/millisleep.o src/libposixplz/millisleep.lo: src/libposixplz/millisleep.c src/include/skalibs/posixplz.h src/libposixplz/mkbtemp.o src/libposixplz/mkbtemp.lo: src/libposixplz/mkbtemp.c src/include/skalibs/djbunix.h src/include/skalibs/posixplz.h src/libposixplz/mkctemp.o src/libposixplz/mkctemp.lo: src/libposixplz/mkctemp.c src/include/skalibs/djbunix.h src/include/skalibs/posixplz.h src/libposixplz/mkfiletemp.o src/libposixplz/mkfiletemp.lo: src/libposixplz/mkfiletemp.c src/include/skalibs/posixplz.h src/include/skalibs/random.h @@ -618,6 +619,7 @@ src/libstddjb/tai_u64.o src/libstddjb/tai_u64.lo: src/libstddjb/tai_u64.c src/in src/libstddjb/tai_unpack.o src/libstddjb/tai_unpack.lo: src/libstddjb/tai_unpack.c src/include/skalibs/tai.h src/include/skalibs/uint64.h src/libstddjb/tai_unpack_little.o src/libstddjb/tai_unpack_little.lo: src/libstddjb/tai_unpack_little.c src/include/skalibs/tai.h src/include/skalibs/uint64.h src/libstddjb/tain_add.o src/libstddjb/tain_add.lo: src/libstddjb/tain_add.c src/include/skalibs/tai.h +src/libstddjb/tain_addmsec.o src/libstddjb/tain_addmsec.lo: src/libstddjb/tain_addmsec.c src/include/skalibs/tai.h src/include/skalibs/uint64.h src/libstddjb/tain_addsec.o src/libstddjb/tain_addsec.lo: src/libstddjb/tain_addsec.c src/include/skalibs/tai.h src/include/skalibs/uint64.h src/libstddjb/tain_approx.o src/libstddjb/tain_approx.lo: src/libstddjb/tain_approx.c src/include/skalibs/tai.h src/libstddjb/tain_earliest1.o src/libstddjb/tain_earliest1.lo: src/libstddjb/tain_earliest1.c src/include/skalibs/tai.h diff --git a/src/include/skalibs/posixplz.h b/src/include/skalibs/posixplz.h index c990379..c7e8dd2 100644 --- a/src/include/skalibs/posixplz.h +++ b/src/include/skalibs/posixplz.h @@ -39,6 +39,7 @@ extern void munmap_void (void *, size_t) ; extern pid_t doublefork (void) ; extern pid_t fork_newpid (void) ; extern int touch (char const *) ; +extern unsigned int millisleep (unsigned int) ; extern int mkfiletemp (char *, create_func_ref, mode_t, void *) ; extern int mklinktemp (char const *, char *, link_func_ref) ; diff --git a/src/include/skalibs/tai.h b/src/include/skalibs/tai.h index 0e38b8c..c449d9a 100644 --- a/src/include/skalibs/tai.h +++ b/src/include/skalibs/tai.h @@ -121,6 +121,8 @@ extern int tain_add (tain *, tain const *, tain const *) ; #define tain_add_g(deadline, tto) tain_add(deadline, &STAMP, tto) extern int tain_addsec (tain *, tain const *, int) ; #define tain_addsec_g(deadline, n) tain_addsec(deadline, &STAMP, n) +extern int tain_addmsec (tain *, tain const *, unsigned int) ; +#define tain_addmsec_g(deadline, n) tain_addmillisec(deadline, &STAMP, n) extern int tain_sub (tain *, tain const *, tain const *) ; extern int tain_less (tain const *, tain const *) gccattr_pure ; #define tain_future(deadline) tain_less(&STAMP, (deadline)) diff --git a/src/libposixplz/millisleep.c b/src/libposixplz/millisleep.c new file mode 100644 index 0000000..e781f58 --- /dev/null +++ b/src/libposixplz/millisleep.c @@ -0,0 +1,12 @@ +/* ISC license. */ + +#include <time.h> + +#include <skalibs/posixplz.h> + +unsigned int millisleep (unsigned int msec) +{ + struct timespec ts = { .tv_sec = msec / 1000, .tv_nsec = (long)(msec % 1000) * 1000000U } ; + struct timespec tr ; + return nanosleep(&ts, &tr) == -1 ? 1000 * tr.tv_sec + tr.tv_nsec / 1000000U : 0 ; +} diff --git a/src/libstddjb/tain_addmsec.c b/src/libstddjb/tain_addmsec.c new file mode 100644 index 0000000..5608672 --- /dev/null +++ b/src/libstddjb/tain_addmsec.c @@ -0,0 +1,10 @@ +/* ISC license. */ + +#include <skalibs/uint64.h> +#include <skalibs/tai.h> + +int tain_addmsec (tain *b, tain const *a, unsigned int c) +{ + tain tn = { .sec = { .x = (uint64_t)c / 1000 }, .nano = (c % 1000) * 1000000U } ; + return tain_add(b, a, &tn) ; +} |
