diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2025-04-04 09:30:22 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska@appnovation.com> | 2025-04-04 09:30:22 +0000 |
| commit | 84b1c5f50749523d940a449d8f684a38a5d157f5 (patch) | |
| tree | d8bd3c0fd5499b138a5c130373b22f5bedd5973b /src | |
| parent | c8c1cab2b6a2754acbe7ee130c356383d0289f09 (diff) | |
| download | skalibs-84b1c5f50749523d940a449d8f684a38a5d157f5.tar.gz | |
Add tain_addmsec, millisleep
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src')
| -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 |
4 files changed, 25 insertions, 0 deletions
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) ; +} |
