freebsd-nq/lib
David Bright 95c05062ec Allow a EVFILT_TIMER kevent to be updated.
If a timer is updated (re-added) with a different time period
(specified in the .data field of the kevent), the new time period has
no effect; the timer will not expire until the original time has
elapsed. This violates the documented behavior as the kqueue(2) man
page says (in part) "Re-adding an existing event will modify the
parameters of the original event, and not result in a duplicate
entry."

This modification, adapted from a patch submitted by cem@ to PR214987,
fixes the kqueue system to allow updating a timer entry. The
kevent timer behavior is changed to:

  * When a timer is re-added, update the timer parameters to and
    re-start the timer using the new parameters.
  * Allow updating both active and already expired timers.
  * When the timer has already expired, dequeue any undelivered events
    and clear the count of expirations.

All of these changes address the original PR and also bring the
FreeBSD and macOS kevent timer behaviors into agreement.

A few other changes were made along the way:

  * Update the kqueue(2) man page to reflect the new timer behavior.
  * Fix man page style issues in kqueue(2) diagnosed by igor.
  * Update the timer libkqueue system test to test for the updated
    timer behavior.
  * Fix the (test) libkqueue common.h file so that it includes
    config.h which defines various HAVE_* feature defines, before the
    #if tests for such variables in common.h. This enables the use of
    the actual err(3) family of functions.
  * Fix the usages of the err(3) functions in the tests for incorrect
    type of variables. Those were formerly undiagnosed due to the
    disablement of the err(3) functions (see previous bullet point).

PR:		214987
Reported by:	Brian Wellington <bwelling@xbill.org>
Reviewed by:	kib
MFC after:	1 week
Relnotes:	yes
Sponsored by:	Dell EMC
Differential Revision:	https://reviews.freebsd.org/D15778
2018-07-27 13:49:17 +00:00
..
atf DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
clang llvm: remove __FreeBSD_version conditionals 2018-07-25 00:06:18 +00:00
csu lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
geom geli init: Allow initialization of multiple geli providers at once if 2018-07-23 23:04:43 +00:00
lib80211 DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libalias DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libarchive MFV r328323,328324: 2018-01-24 14:24:17 +00:00
libauditd DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libbegemot DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libblacklist DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libblocksruntime DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libbluetooth Fix bthidd build with GCC 4.2 after r333110 2018-05-01 08:03:12 +00:00
libbsdstat lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libbsm DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libbsnmp Update bsnmp to version 1.13. This does not bring user-visible changes. 2018-07-03 08:44:40 +00:00
libbz2 DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libc Allow a EVFILT_TIMER kevent to be updated. 2018-07-27 13:49:17 +00:00
libc_nonshared lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libc++ DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libc++experimental DIRDEPS_BUILD: Connect more libraries. 2017-07-11 00:32:48 +00:00
libcalendar lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libcam SPDX: Small for a license ID tags. 2017-12-27 21:36:37 +00:00
libcapsicum Fix description. 2018-07-18 21:57:04 +00:00
libcasper With r335636 C++ program use libcasper.h and capsicum_helpers.h. 2018-07-01 18:58:53 +00:00
libclang_rt Remove special cases for armeb in the build. 2018-07-17 23:23:54 +00:00
libcom_err DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libcompat Use __SCSSID() for SCCS IDs. 2018-06-10 02:34:41 +00:00
libcompiler_rt The routines defined in comparedf2 and comparesf2 are defined in libc 2018-02-02 05:04:43 +00:00
libcrypt libcrypt: There is no need to clear message digest context after they 2018-07-20 07:16:28 +00:00
libcuse DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libcxxrt libcxxrt: Move mangled symbols out of extern "C++" in Version.map 2018-01-23 22:41:13 +00:00
libdevctl DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libdevdctl zfsd: Allow zfsd to work on any type of GEOM provider 2018-02-14 23:52:39 +00:00
libdevinfo Update to device enumeration protocol 2 2018-05-31 02:58:03 +00:00
libdevstat lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libdl Add libdl to clibs package 2018-03-29 19:43:29 +00:00
libdpv Fix comparison between pointer and char literal 2018-06-16 20:00:41 +00:00
libdwarf DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libedit libedit: sort the Makefile in line with NetBSD's version. 2018-01-29 22:38:23 +00:00
libefivar Fix an obvious 'is odd' check. 2018-07-12 16:19:17 +00:00
libelf DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libelftc Update ELF Tool Chain to r3614 2018-04-27 13:59:24 +00:00
libevent DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libexecinfo DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libexpat DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libfetch Fix an inverted conditional in the netrc code, which would ignore the 2018-05-29 13:07:36 +00:00
libfigpar Bump copyright following recent changes 2018-03-14 20:55:28 +00:00
libgcc_eh DIRDEPS_BUILD: libgcc now depends on MK_LLVM_LIBUNWIND 2017-10-31 00:03:36 +00:00
libgcc_s Fix build by escaping a line break. 2018-01-31 21:41:42 +00:00
libgeom lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libgpio DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libgssapi lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libiconv_modules libiconv: correct undefined behavior. 2018-07-08 23:22:04 +00:00
libifconfig Finish removing FDDI and tokenring media support. 2018-04-23 21:10:33 +00:00
libipsec Update pfkey_open() function to set socket's write buffer size to 2018-03-11 19:26:34 +00:00
libipt Add new shared library -- libipt. 2018-03-21 14:37:04 +00:00
libjail Make it easier for filesystems to count themselves as jail-enabled, 2018-05-04 20:54:27 +00:00
libkiconv lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libkvm Make struct xinpcb and friends word-size independent. 2018-07-05 13:13:48 +00:00
libldns DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
liblzma MFV r333779: xz 5.2.4. 2018-05-18 06:10:16 +00:00
libmagic Don't use CCACHE for linking. 2018-06-27 19:29:15 +00:00
libmd libmd: Always erase context in _Final method, and when doing 2018-07-20 07:01:28 +00:00
libmemstat Reduce <sys/queue.h> pollution. 2018-05-11 00:01:43 +00:00
libmilter DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libmp lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libmt Add the LTO-8 Type M density code (0x5d, LTO-8M) to libmt and the 2017-11-03 21:04:22 +00:00
libnandfs lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libnetbsd libnetbsd: Make the function declaration of efopen() match the definition 2018-01-16 21:43:21 +00:00
libnetgraph s/NgSendMsgReply/NgSendReplyMsg/ in man to match the code. 2017-11-08 12:34:47 +00:00
libngatm DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libnv No longer install sys/nv.h and sys/cnv.h in lib/libnv/Makefile 2018-07-16 10:57:26 +00:00
libopenbsd Fix a few more speelling errors 2017-12-28 01:31:28 +00:00
libopencsd Add new shared library -- libopencsd. 2018-04-04 14:31:56 +00:00
libopie DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libpam Don't use CCACHE for linking. 2018-06-27 19:29:15 +00:00
libpathconv Disconnect libpathconv tests since they require external perl and do not work with kyua. 2017-10-31 19:52:30 +00:00
libpcap Remove redundant header file from source list in libpcap. 2018-05-30 08:24:57 +00:00
libpe
libpjdlog Revert 335888 ("Ensure va_list is declared by including stdarg.h.") 2018-07-03 15:48:34 +00:00
libpmc Put in temporary hacks for jevents. 2018-06-15 19:19:36 +00:00
libpmcstat pmc(3)/hwpmc(4): update supported Intel processors to rely fully on the 2018-05-26 19:29:19 +00:00
libproc Take the mapping's segment offset into account when resolving symbols. 2018-07-21 22:15:48 +00:00
libprocstat libprocstat: fix memory leak 2018-05-28 02:10:35 +00:00
libradius lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libregex libregex: Mark gnuext test as an expected fail 2018-01-29 14:00:33 +00:00
librpcsec_gss lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
librpcsvc spdx: initial adoption of licensing ID tags. 2017-11-18 14:26:50 +00:00
librss DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
librt lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
librtld_db lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libsbuf DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libsdp libsdp: Add method that returns actual source BD_ADDR of SDP session. 2018-04-30 10:15:58 +00:00
libsm
libsmb DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libsmdb
libsmutil
libsqlite3 Revert r333353 - FTS5 uses log(3) which currently breakes non-amd64 builds. 2018-05-08 06:09:49 +00:00
libstdbuf lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libstdthreads lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libsysdecode Retire lmc(4) 2018-05-01 16:30:48 +00:00
libtacplus lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libtelnet Remove redundant include directories which expand to a noop, 2017-07-31 19:07:45 +00:00
libthr Remove unused file. 2018-06-16 17:11:23 +00:00
libthread_db lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libucl DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libufs Don't put multiple names on a single .Nm line. This fixes apropos(1) 2018-04-17 09:05:46 +00:00
libugidfw Allow jail names (not just IDs) to be specified for: cpuset(1), ipfw(8), 2018-07-03 23:47:20 +00:00
libulog lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libunbound Upgrade Unbound to 1.6.4. More to follow. 2018-05-12 14:36:58 +00:00
libusb Improve the userspace USB string reading function in LibUSB. 2018-06-26 16:00:16 +00:00
libusbhid lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libutil Make pw_scan(3) more compatible with getpwent(3) et. al. when processing 2018-07-26 18:34:38 +00:00
libveriexec This library allows for user space applications to check file descriptors 2018-06-20 00:55:18 +00:00
libvgl lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libvmmapi Fix style(9) space vs tab. 2018-06-14 01:28:55 +00:00
libwrap DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libxo Import libxo-0.9.0: 2018-05-23 01:20:31 +00:00
liby liby: rewrite yyerror.h 2018-06-17 18:05:27 +00:00
libypclnt lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libz Remove "All rights reserved" from my files. 2018-05-10 06:41:08 +00:00
libzstd lib(private)zstd: Fix riscv build 2018-03-18 03:42:57 +00:00
msun In C remquol() and thus also in C remainderl(), don't clobber the sign bit 2018-07-24 11:50:05 +00:00
ncurses Don't use CCACHE for linking. 2018-06-27 19:29:15 +00:00
ofed Move OFED libraries libmlx5.so.1 and libibverbs.so.1 to /lib. 2018-07-20 23:49:57 +00:00
tests
Makefile Remove special cases for armeb in the build. 2018-07-17 23:23:54 +00:00
Makefile.inc