projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move struct senders[] from server.c to vss.c.
[paraslash.git]
/
time.c
diff --git
a/time.c
b/time.c
index b77138295c2ded13d8890cf3e626a7a8a0df3494..1fd7b0981584fc4557079ee62a87fbd713554f3a 100644
(file)
--- a/
time.c
+++ b/
time.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 2005-200
7
Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-200
8
Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
@@
-121,17
+121,10
@@
void tv_scale(const unsigned long mult, const struct timeval *tv,
void tv_divide(const unsigned long divisor, const struct timeval *tv,
struct timeval *result)
{
void tv_divide(const unsigned long divisor, const struct timeval *tv,
struct timeval *result)
{
-
long unsigned q
;
+
uint64_t x = ((uint64_t)tv->tv_sec * 1000 * 1000 + tv->tv_usec) / divisor
;
- q = tv->tv_usec / divisor;
- result->tv_sec = tv->tv_sec / divisor;
- result->tv_usec = (tv->tv_sec - result->tv_sec * divisor)
- * 1000 * 1000 / divisor;
- if (result->tv_usec + q >= 1000 * 1000) {
- result->tv_sec++;
- result->tv_usec = 1000 * 1000 - result->tv_usec - q;
- } else
- result->tv_usec += q;
+ result->tv_sec = x / 1000 / 1000;
+ result->tv_usec = x % (1000 * 1000);
}
/**
}
/**
@@
-176,3
+169,13
@@
int tv_convex_combination(const long a, const struct timeval *tv1,
ret = -ret;
return ret;
}
ret = -ret;
return ret;
}
+
+void compute_chunk_time(long unsigned chunk_num,
+ struct timeval *chunk_tv, struct timeval *stream_start,
+ struct timeval *result)
+{
+ struct timeval tmp;
+
+ tv_scale(chunk_num, chunk_tv, &tmp);
+ tv_add(&tmp, stream_start, result);
+}