HomeFreeBSD

LinuxKPI: Implement kthread_worker related functions

Description

LinuxKPI: Implement kthread_worker related functions

Kthread worker is a single thread workqueue which can be used in cases
where specific kthread association is necessary, for example, when it
should have RT priority or be assigned to certain cgroup.

This change implements Linux v4.9 interface which mostly hides kthread
internals from users thus allowing to use ordinary taskqueue(9) KPI.
As kthread worker prohibits enqueueing of already pending or canceling
tasks some minimal changes to taskqueue(9) were done.
taskqueue_enqueue_flags() was added to taskqueue KPI which accepts extra
flags parameter. It contains one or more of the following flags:

TASKQUEUE_FAIL_IF_PENDING - taskqueue_enqueue_flags() fails if the task

is already scheduled to execution. EEXIST is returned and the
ta_pending counter value remains unchanged.

TASKQUEUE_FAIL_IF_CANCELING - taskqueue_enqueue_flags() fails if the

task is in the canceling state and ECANCELED is returned.

Required by: drm-kmod 5.10

MFC after: 1 week
Reviewed by: hselasky, Pau Amma (docs)
Differential Revision: https://reviews.freebsd.org/D35051

(cherry picked from commit b6f87b78b5bb48e00f54b96ddea7ad5bf5e3aa1f)

Details

Provenance
wulfAuthored on May 17 2022, 12:10 PM
Reviewer
hselasky
Differential Revision
D35051: LinuxKPI: Implement kthread_worker related functions
Parents
rG8f41e6af5362: LinuxKPI: Implement sched_set_fifo(_low) functions
Branches
Unknown
Tags
Unknown