Commit graph

10 commits

Author SHA1 Message Date
Mark Johnston
48155c983c kern: Make fileops and filterops tables const where possible
No functional change intended.

MFC after:	1 week

(cherry picked from commit ef9ffb8594eee294334ced627755bf5b46b48f9f)
2024-12-03 01:03:42 +00:00
John Baldwin
bf5387a936 timerfd: Move kern_timerfd_* prototypes to <sys/syscallsubr.h>
(cherry picked from commit 18cb422356f259f83ad3189cc4494e56265aef94)
2024-04-08 10:49:59 -07:00
Baptiste Daroussin
104328e630 timerfd_create: accept CLOCK_UPTIME/CLOCK_BOOTTIME
This is a common use case when using timerfd_create to actually use
it with CLOCK_BOOTTIME on linux which is CLOCK_UPTIME for us.

Note that currently on freebsd CLOCK_BOOTTIME is CLOCK_UPTIME, but the
semantic is supposed to be different, this has to be fixed later.

Tested with the fnott notification software

Reviewed by:	des, imp
Differential Revision:	https://reviews.freebsd.org/D44253

(cherry picked from commit cf742faa39a58a9b43b671c66097e6880459d4ae)
(cherry picked from commit 0ecf0b26a750582b804e238e6446db55188d7fdc)
2024-03-18 15:39:52 +01:00
Konstantin Belousov
575a909aa2 kcmp(2): implement for generic file types
(cherry picked from commit f28526e9466cd60ed33053e922238ba1c9040341)
2024-01-30 22:24:42 +02:00
Jake Freeland
27d567847b timerfd: Relocate 32-bit compat code
32-bit compatibility code is conventionally stored in
sys/compat/freebsd32. Move freebsd32_timerfd_gettime() and
freebsd32_timerfd_settime() from sys/kern/sys_timerfd.c to
sys/compat/freebsd32/freebsd32_misc.c.

MFC After: 3 days
Reviewed by: imp, markj
Differential Revision; https://reviews.freebsd.org/D41640

(cherry picked from commit 918966a27479b4fb7c4c8999c4926d83c2c081e5)
2023-09-17 09:01:59 -06:00
Jake Freeland
d00e6d8774 timerfd: Define a locking regime
Define a locking regime for the members of struct timerfd and document
    it so future code can follow the standard. The lock legend can be found
    in a comment above struct timerfd.

    Additionally,
    * Add assertions based on locking regime.
    * Fill kn_data with the expiration count when EVFILT_READ is triggered.
    * Report st_ctim for stat(2).
    * Check if file has f_type == DTYPE_TIMERFD before assigning timerfd
      pointer to f_data.

MFC After: 3 days
Reviewed by:	imp, kib, markj
Differential Revision:	https://reviews.freebsd.org/D41600

(cherry picked from commit a1f506156c4db885d3cc177c93e9c8a28d535d30)
2023-09-17 09:01:46 -06:00
Mateusz Guzik
a87dddf39e timerfd: convert timerfd_list_lock from sx to mtx
There was no good reason to use the former. This should prevent some
head-scratching by an interested and qualified reader.

(cherry picked from commit f4296cfb409a48de00bfa60e76f686c2b031876f)
2023-09-17 09:01:33 -06:00
Mateusz Guzik
fc0c24482f timerfd: compute fflags before calling falloc
While here dodge list locking in timerfd_adjust if empty.

(cherry picked from commit 5eab523053db79b4bd4f926c7d7ac04444d9c1da)

Approved by: re (cperciva@)
2023-09-17 08:34:40 -06:00
Mateusz Guzik
8c496b2664 timerfd: fix up a memory leak and missing locking
timerfd01 from ltp passes (and some other don't), but none of the tests
crash the kernel.

This is a bare minimum patch to fix up the immediate regression.

Reported by:	yasu

(cherry picked from commit 02f534b57f84d6f4f97c337b05b383c8b3aaf18c)

Approved by: re (cperciva@)
2023-09-17 08:34:40 -06:00
Jake Freeland
af93fea710 timerfd: Move implementation from linux compat to sys/kern
Move the timerfd impelemntation from linux compat code to sys/kern. Use
it to implement the new system calls for timerfd. Add a hook to kern_tc
to allow timerfd to know when the system time has stepped. Add kqueue
support to timerfd. Adjust a few names to be less Linux centric.

RelNotes: YES
Reviewed by: markj (on irc), imp, kib (with reservations), jhb (slack)
Differential Revision: https://reviews.freebsd.org/D38459
2023-08-24 14:28:56 -06:00