|
Revision tags: release/13.4.0-p5, release/13.5.0-p1, release/14.2.0-p3, release/13.5.0, release/14.2.0-p2, release/14.1.0-p8, release/13.4.0-p4, release/14.1.0-p7, release/14.2.0-p1, release/13.4.0-p3, release/14.2.0, release/13.4.0, release/14.1.0, release/13.3.0, release/14.0.0 |
|
| #
2ff63af9 |
| 16-Aug-2023 |
Warner Losh <[email protected]> |
sys: Remove $FreeBSD$: one-line .h pattern
Remove /^\s*\*+\s*\$FreeBSD\$.*$\n/
|
|
Revision tags: release/13.2.0 |
|
| #
83158c68 |
| 23-Feb-2023 |
Mateusz Guzik <[email protected]> |
time: s/ppsratecheck/eventratecheck
The routine is used as a general event-limiting routine in places which have nothing to do with packets.
Provide a define to keep everything happy.
Reviewed by:
time: s/ppsratecheck/eventratecheck
The routine is used as a general event-limiting routine in places which have nothing to do with packets.
Provide a define to keep everything happy.
Reviewed by: rew Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D38746
show more ...
|
|
Revision tags: release/12.4.0 |
|
| #
35a33d14 |
| 20-Oct-2022 |
Hans Petter Selasky <[email protected]> |
time(3): Optimize tvtohz() function.
List of changes: - Use integer multiplication instead of long multiplication, because the result is an integer. - Remove multiple if-statements and predict new i
time(3): Optimize tvtohz() function.
List of changes: - Use integer multiplication instead of long multiplication, because the result is an integer. - Remove multiple if-statements and predict new if-statements. - Rename local variable name, "ticks" into "retval" to avoid shadowing the system "ticks" global variable.
Reviewed by: kib@ and imp@ MFC after: 1 week Sponsored by: NVIDIA Networking Differential Revision: https://reviews.freebsd.org/D36859
show more ...
|
| #
ee29897f |
| 03-Oct-2022 |
Hans Petter Selasky <[email protected]> |
time(3): Declare the minimum and maximum hz values supported.
Reviewed by: kib@ and imp@ MFC after: 1 week Sponsored by: NVIDIA Networking Differential Revision: https://reviews.freebsd.org/D
time(3): Declare the minimum and maximum hz values supported.
Reviewed by: kib@ and imp@ MFC after: 1 week Sponsored by: NVIDIA Networking Differential Revision: https://reviews.freebsd.org/D37072
show more ...
|
| #
d97ecf71 |
| 02-Oct-2022 |
Hans Petter Selasky <[email protected]> |
time(3): Increase precision of time conversion functions by using gcd.
When converting times to and from units which have many leading zeros, it pays off to compute the greatest common divisor first
time(3): Increase precision of time conversion functions by using gcd.
When converting times to and from units which have many leading zeros, it pays off to compute the greatest common divisor first, and then do the scaling product. This way all time unit conversion comes down to scaling a signed or unsigned 64-bit value by a fraction represented by two signed or unsigned 32-bit integers.
SBT_1S is defined as 2^32 . When scaling using powers of 10 above 1, the gcd of SBT_1S and 10^N is always greater than or equal to 4, when N is greater or equal to 2.
Scaling a sbt value to milliseconds is then done by multiplying by (1000 / 8) and dividing by (2^32 / 8).
This trick allows for higher precision at very little additional CPU cost.
It shall also be noted that the Xtosbt() functions prior to this patch, sometimes were off-by-one:
For example when converting 1 / 8 of a second to sbt as 125ms the old sbt conversion function would compute 0x20000001 while the new function computes 0x20000000 which multiplied by 8 becomes SBT_1S, which is the correct value.
Reviewed by: kib@ Differential Revision: https://reviews.freebsd.org/D36857 MFC after: 1 week Sponsored by: NVIDIA Networking
show more ...
|
|
Revision tags: release/13.1.0 |
|
| #
10f44229 |
| 06-Apr-2022 |
Alan Somers <[email protected]> |
Fix overflow errors in sbttous and sbttoms
Both of these functions would overflow for very large inputs. Add tests for them. Also, add tests for the inverse functions, *stosbt, whose overflow erro
Fix overflow errors in sbttous and sbttoms
Both of these functions would overflow for very large inputs. Add tests for them. Also, add tests for the inverse functions, *stosbt, whose overflow errors were fixed by 4c30b9ecd47.
PR: 263073 MFC after: 1 week Sponsored by: Axcient Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D34809
show more ...
|
| #
91e7bdcd |
| 25-Apr-2022 |
Dmitry Chagin <[email protected]> |
Add timespecvalid_interval macro and use it.
Reviewed by: jhb, imp (early rev) Differential revision: https://reviews.freebsd.org/D34848 MFC after: 2 weeks
|
| #
4c30b9ec |
| 06-Apr-2022 |
Warner Losh <[email protected]> |
fix integer overflow bugs in *stosbt
68f57679d660 Fixed another class of integer overflows, but introduced a boundary condition for 2-4s in ns conversion, 2-~4000s in us conversions and 2-~4,000,000
fix integer overflow bugs in *stosbt
68f57679d660 Fixed another class of integer overflows, but introduced a boundary condition for 2-4s in ns conversion, 2-~4000s in us conversions and 2-~4,000,000s in ms conversions. This was because we bogusly used SBT_1S for the notion of 1 second, instead of the appropriate power of 10. To fix, just use the appropriate power of 10, which avoids these overflows.
This caused some sleeps in ZFS to be on the order of an hour.
MFC: 1 day PR: 263073 Sponsored by: Netflix Reviewed by: asomers Differential Revision: https://reviews.freebsd.org/D34790
show more ...
|
|
Revision tags: release/12.3.0 |
|
| #
7b797ba2 |
| 30-Jul-2021 |
Warner Losh <[email protected]> |
time.h: reduce CLOCK_ namespace pollution, move to _clock_id.h
Attempt to comply with the strict namespace pollution requirements of _POSIX_C_SOURCE. Add guards to limit visitbility of CLOCK_ and TI
time.h: reduce CLOCK_ namespace pollution, move to _clock_id.h
Attempt to comply with the strict namespace pollution requirements of _POSIX_C_SOURCE. Add guards to limit visitbility of CLOCK_ and TIMER_ defines as appropriate. Only define the CLOCK_ variables relevant to the specific standards. Move all the sharing to sys/_clock_id.h and make time.h and sys/time.h both include that rather than copy due to the now large number of clocks and compat defines.
Please note: The old time.h previously used these newer dates: CLOCK_REALTIME 199506 CLOCK_MONOTONIC 200112 CLOCK_THREAD_CPUTIME_ID 200112 CLOCK_PROCESS_CPUTIME_ID 200112
but glibc defines all of these for 199309. glibc uses this date for all these values, however, only CLOCK_REALTIME was in IEEE 1003.1b. Add a comment about this to document it. A large number of programs and libraries assume that these will be defined for _POSIX_C_SOURCE = 199309.
In addition, leak CLOCK_UPTIME_FAST for the pocl package until it can be updated to use a simple CLOCK_MONOTONIC.
Reviewed by: kib Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D31056
show more ...
|
| #
b45daaea |
| 09-Jun-2021 |
Randall Stewart <[email protected]> |
tcp: LRO timestamps have lost their previous precision
Recently we had a rewrite to tcp_lro.c that was tested but one subtle change was the move to a less precise timestamp. This causes all kinds of
tcp: LRO timestamps have lost their previous precision
Recently we had a rewrite to tcp_lro.c that was tested but one subtle change was the move to a less precise timestamp. This causes all kinds of chaos in tcp's that do pacing and needs to be fixed to use the more precise time that was there before.
Reviewed by: mtuexen, gallatin, hselasky Sponsored by: Netflix Inc Differential Revision: https://reviews.freebsd.org/D30695
show more ...
|
|
Revision tags: release/13.0.0, release/12.2.0 |
|
| #
62693fe8 |
| 28-Aug-2020 |
Warner Losh <[email protected]> |
Treat the boot loader as the same as the kernel for what's visible
The boot loader will be growing some (limited) support for some kernel interfaces for some of the timekeeping routines to support z
Treat the boot loader as the same as the kernel for what's visible
The boot loader will be growing some (limited) support for some kernel interfaces for some of the timekeeping routines to support zstd code. Allow the declarations for them to be visible when compiling for the boot loader, rather than treating it like a user-space environment (which stand.h already provides to a limited degree).
show more ...
|
| #
aeafed21 |
| 14-Jul-2020 |
Konstantin Belousov <[email protected]> |
Make CLOCK_REALTIME and TIMER_ABSTIME available for XOPEN_SOURCE >= 500.
Reported by: jbeich PR: 247701 Reviewed by: jilles Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revisi
Make CLOCK_REALTIME and TIMER_ABSTIME available for XOPEN_SOURCE >= 500.
Reported by: jbeich PR: 247701 Reviewed by: jilles Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D25554
show more ...
|
|
Revision tags: release/11.4.0, release/12.1.0, release/11.3.0 |
|
| #
67580964 |
| 13-Apr-2019 |
Warner Losh <[email protected]> |
Fix sbttons for values > 2s
Add test against negative times. Add code to cope with larger values properly.
Discussed with: bde@ (quite some time ago, for an earlier version)
|
|
Revision tags: release/12.0.0 |
|
| #
68f57679 |
| 20-Nov-2018 |
Warner Losh <[email protected]> |
Ensure that all values of ns, us and ms work for {n,u,m}stosbt
Integer overflows and wrong constants limited the accuracy of these functions and created situatiosn where sbttoXs(Xstosbt(Y)) != Y. Th
Ensure that all values of ns, us and ms work for {n,u,m}stosbt
Integer overflows and wrong constants limited the accuracy of these functions and created situatiosn where sbttoXs(Xstosbt(Y)) != Y. This was especailly true in the ns case where we had millions of values that were wrong.
Instead, used fixed constants because there's no way to say ceil(X) for integer math. Document what these crazy constants are.
Also, use a shift one fewer left to avoid integer overflow causing incorrect results, and adjust the equasion accordingly. Document this.
Allow times >= 1s to be well defined for these conversion functions (at least the Xstosbt). There's too many users in the tree that they work for >= 1s.
This fixes a failure on boot to program firmware on the mlx4 NIC. There was a msleep(1000) in the code. Prior to my recent rounding changes, msleep(1000) worked, but msleep(1001) did not because the old code rounded to just below 2^64 and the new code rounds to just above it (overflowing, causing the msleep(1000) to really sleep 1ms).
A test program to test all cases will be committed shortly. The test exaustively tries every value (thanks to bde for the test).
Sponsored by: Netflix, Inc Differential Revision: https://reviews.freebsd.org/D18051
show more ...
|
| #
023b87bf |
| 15-Nov-2018 |
Warner Losh <[email protected]> |
When converting ns,us,ms to sbt, return the ceil() of the result rather than the floor(). Returning the floor means that sbttoX(Xtosbt(y)) != y for almost all values of y. In practice, this results
When converting ns,us,ms to sbt, return the ceil() of the result rather than the floor(). Returning the floor means that sbttoX(Xtosbt(y)) != y for almost all values of y. In practice, this results in a difference of at most 1 in the lsb of the sbintime_t. This difference is meaningless for all current users of these functions, but is important for the newly introduced sysctl conversion routines which implicitly rely on the transformation being idempotent.
Sponsored by: Netflix, Inc
show more ...
|
| #
6040822c |
| 30-Jul-2018 |
Alan Somers <[email protected]> |
Make timespecadd(3) and friends public
The timespecadd(3) family of macros were imported from NetBSD back in r35029. However, they were initially guarded by #ifdef _KERNEL. In the meantime, we have
Make timespecadd(3) and friends public
The timespecadd(3) family of macros were imported from NetBSD back in r35029. However, they were initially guarded by #ifdef _KERNEL. In the meantime, we have grown at least 28 syscalls that use timespecs in some way, leading many programs both inside and outside of the base system to redefine those macros. It's better just to make the definitions public.
Our kernel currently defines two-argument versions of timespecadd and timespecsub. NetBSD, OpenBSD, and FreeDesktop.org's libbsd, however, define three-argument versions. Solaris also defines a three-argument version, but only in its kernel. This revision changes our definition to match the common three-argument version.
Bump _FreeBSD_version due to the breaking KPI change.
Discussed with: cem, jilles, ian, bde Differential Revision: https://reviews.freebsd.org/D14725
show more ...
|
|
Revision tags: release/11.2.0 |
|
| #
89e560f4 |
| 07-Jun-2018 |
Randall Stewart <[email protected]> |
This commit brings in a new refactored TCP stack called Rack. Rack includes the following features: - A different SACK processing scheme (the old sack structures are not used). - RACK (Recent ackno
This commit brings in a new refactored TCP stack called Rack. Rack includes the following features: - A different SACK processing scheme (the old sack structures are not used). - RACK (Recent acknowledgment) where counting dup-acks is no longer done instead time is used to knwo when to retransmit. (see the I-D) - TLP (Tail Loss Probe) where we will probe for tail-losses to attempt to try not to take a retransmit time-out. (see the I-D) - Burst mitigation using TCPHTPS - PRR (partial rate reduction) see the RFC.
Once built into your kernel, you can select this stack by either socket option with the name of the stack is "rack" or by setting the global sysctl so the default is rack.
Note that any connection that does not support SACK will be kicked back to the "default" base FreeBSD stack (currently known as "default").
To build this into your kernel you will need to enable in your kernel: makeoptions WITH_EXTRA_TCP_STACKS=1 options TCPHPTS
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D15525
show more ...
|
| #
b43a0401 |
| 03-Mar-2018 |
Ian Lepore <[email protected]> |
Correct a misplaced closing paren. Does not affect the result, but does clarify (at least for me) that the multiplication happens before the shift.
|
| #
51369649 |
| 20-Nov-2017 |
Pedro F. Giffuni <[email protected]> |
sys: further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 3-Clause license.
The Software Package Data Exchange (SPDX) group provides a specification to make it easier for
sys: further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 3-Clause license.
The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
Special thanks to Wind River for providing access to "The Duke of Highlander" tool: an older (2014) run over FreeBSD tree was useful as a starting point.
show more ...
|
|
Revision tags: release/10.4.0 |
|
| #
d35f6548 |
| 29-Jul-2017 |
Ian Lepore <[email protected]> |
Add inline functions to convert between sbintime_t and decimal time units. Use them in some existing code that is vulnerable to roundoff errors.
The existing constant SBT_1NS is a honeypot, luring u
Add inline functions to convert between sbintime_t and decimal time units. Use them in some existing code that is vulnerable to roundoff errors.
The existing constant SBT_1NS is a honeypot, luring unsuspecting folks into writing code such as long_timeout_ns*SBT_1NS to generate the argument for a sleep call. The actual value of 1ns in sbt units is ~4.3, leading to a large roundoff error giving a shorter sleep than expected when multiplying by the trucated value of 4 in SBT_1NS. (The evil honeypot aspect becomes clear after you waste a whole day figuring out why your sleeps return early.)
show more ...
|
|
Revision tags: release/11.1.0 |
|
| #
9dbdf2a1 |
| 14-Mar-2017 |
Eric van Gyzen <[email protected]> |
When the RTC is adjusted, reevaluate absolute sleep times based on the RTC
POSIX 2008 says this about clock_settime(2):
If the value of the CLOCK_REALTIME clock is set via clock_settime(),
When the RTC is adjusted, reevaluate absolute sleep times based on the RTC
POSIX 2008 says this about clock_settime(2):
If the value of the CLOCK_REALTIME clock is set via clock_settime(), the new value of the clock shall be used to determine the time of expiration for absolute time services based upon the CLOCK_REALTIME clock. This applies to the time at which armed absolute timers expire. If the absolute time requested at the invocation of such a time service is before the new value of the clock, the time service shall expire immediately as if the clock had reached the requested time normally.
Setting the value of the CLOCK_REALTIME clock via clock_settime() shall have no effect on threads that are blocked waiting for a relative time service based upon this clock, including the nanosleep() function; nor on the expiration of relative timers based upon this clock. Consequently, these time services shall expire when the requested relative interval elapses, independently of the new or old value of the clock.
When the real-time clock is adjusted, such as by clock_settime(3), wake any threads sleeping until an absolute real-clock time. Such a sleep is indicated by a non-zero td_rtcgen. The sleep functions will set that field to zero and return zero to tell the caller to reevaluate its sleep duration based on the new value of the clock.
At present, this affects the following functions:
pthread_cond_timedwait(3) pthread_mutex_timedlock(3) pthread_rwlock_timedrdlock(3) pthread_rwlock_timedwrlock(3) sem_timedwait(3) sem_clockwait_np(3)
I'm working on adding clock_nanosleep(2), which will also be affected.
Reported by: Sebastian Huber <[email protected]> Reviewed by: jhb, kib MFC after: 2 weeks Relnotes: yes Sponsored by: Dell EMC Differential Revision: https://reviews.freebsd.org/D9791
show more ...
|
| #
fbbd9655 |
| 28-Feb-2017 |
Warner Losh <[email protected]> |
Renumber copyright clause 4
Renumber cluase 4 to 3, per what everybody else did when BSD granted them permission to remove clause 3. My insistance on keeping the same numbering for legal reasons is
Renumber copyright clause 4
Renumber cluase 4 to 3, per what everybody else did when BSD granted them permission to remove clause 3. My insistance on keeping the same numbering for legal reasons is too pedantic, so give up on that point.
Submitted by: Jan Schaumann <[email protected]> Pull Request: https://github.com/freebsd/freebsd/pull/96
show more ...
|
|
Revision tags: release/11.0.1, release/11.0.0 |
|
| #
584b675e |
| 27-Jul-2016 |
Konstantin Belousov <[email protected]> |
Hide the boottime and bootimebin globals, provide the getboottime(9) and getboottimebin(9) KPI. Change consumers of boottime to use the KPI. The variables were renamed to avoid shadowing issues with
Hide the boottime and bootimebin globals, provide the getboottime(9) and getboottimebin(9) KPI. Change consumers of boottime to use the KPI. The variables were renamed to avoid shadowing issues with local variables of the same name.
Issue is that boottime* should be adjusted from tc_windup(), which requires them to be members of the timehands structure. As a preparation, this commit only introduces the interface.
Some uses of boottime were found doubtful, e.g. NLM uses boottime to identify the system boot instance. Arguably the identity should not change on the leap second adjustment, but the commit is about the timekeeping code and the consumers were kept bug-to-bug compatible.
Tested by: pho (as part of the bigger patch) Reviewed by: jhb (same) Discussed with: bde Sponsored by: The FreeBSD Foundation MFC after: 1 month X-Differential revision: https://reviews.freebsd.org/D7302
show more ...
|
|
Revision tags: release/10.3.0, release/10.2.0 |
|
| #
61f26cae |
| 21-Dec-2014 |
Warner Losh <[email protected]> |
Where appropriate, use the modern terms for the one true time base (UTC) rather than the archaic (GMT) in comments. Except where the comments are making fun of people doing this (and pedants who insi
Where appropriate, use the modern terms for the one true time base (UTC) rather than the archaic (GMT) in comments. Except where the comments are making fun of people doing this (and pedants who insist on the new terms).
show more ...
|
|
Revision tags: release/10.1.0 |
|
| #
e9577457 |
| 21-Aug-2014 |
Davide Italiano <[email protected]> |
Revert r270227. GCC doesn't like the lack of LL suffix, so this makes powerpc build failing.
|