History log of /haiku/src/libs/compat/freebsd_network/taskqueue.c
Revision Date Author Comments
# a928b16e 21-Jun-2022 Augustin Cavalier <waddlesplash@gmail.com>

freebsd_network: Unlock the taskqueue before waiting for threads.

Also set tq_threads to NULL to prevent double-frees.


# 01631912 21-Jun-2022 Augustin Cavalier <waddlesplash@gmail.com>

freebsd_network: Rework taskqueues implementation.

* Use FreeBSD's queue management directly, only retaining thread
creation and synchronization functions from Haiku.

* Use FreeBSD's task structure declarations.

* Use a standard non-FAST taskqueue for taskqueue_thread.

* Rewrite header and adjust consumers as appropriate.


# 8548a4ad 12-May-2022 Augustin Cavalier <waddlesplash@gmail.com>

freebsd_network: Adaptations in preparation for the OpenBSD layer.

Most of these changes however add things that FreeBSD has (with a few
exceptions noted in comments) which the OpenBSD shim layer merely needs
to make use of.

(FreeBSD used to have support for IFF_NEEDSGIANT but removed it. The
support instated here is very similar to what FreeBSD used to have.)


# 09ea42fa 21-Mar-2022 Augustin Cavalier <waddlesplash@gmail.com>

freebsd_network: Rearrange taskqueue_block functions and add NULL checks.

Should fix #17218.


# 1b333e91 09-Mar-2022 Augustin Cavalier <waddlesplash@gmail.com>

freebsd_network: Use MTX_SPIN for fast taskqueues instead of a direct spinlock.


# 49fd143d 09-Mar-2022 Augustin Cavalier <waddlesplash@gmail.com>

freebsd_network: Print the taskqueue name in the timeout KASSERT.

Should help with diagnosing #17634.


# 27632129 08-Jan-2019 Augustin Cavalier <waddlesplash@gmail.com>

freebsd_network: Implement taskqueue_drain_all.

Required by FreeBSD 12's iprowifi4965.


# 8267c193 29-Dec-2018 Augustin Cavalier <waddlesplash@gmail.com>

freebsd_network: Lots of additions and modifications for iflib.


# dba28784 24-Dec-2018 Augustin Cavalier <waddlesplash@gmail.com>

freebsd11_network -> freebsd_network.

FreeBSD 12 has no major changes to the ifnet KPIs that constitute a
source compatibility break, save a single one related to locking
which doesn't really apply to us, and so we don't need to create
a "freebsd12_network" directory to work through the upgrades.


# 57e2ce54 31-Jul-2012 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

CID-701956: list_remove_head_item may return null.

Simplified from while (1) to while that checks sem directly.


# 2406849d 27-Oct-2009 Colin Günther <coling@gmx.de>

* Coding style fixes regarding whitespace usage.
* Copyright style fixes.
* Implemented FreeBSD hardclock subsystem, which is needed to update the ticks
variable. The previous usage of "#define ticks system_time()" wasn't
sufficient anymore, as there are drivers using the ticks name for local
scoped variables.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33785 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 14627e08 22-Oct-2009 Colin Günther <coling@gmx.de>

* reordering of headerfile inclusion to comply to FreeBSD 8
ordering.
this makes porting driver (especially wifi ones) more
convinient
* based on FreeBSD svn revision 196691

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33739 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1c8de858 01-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added optional spinlock contention measurement feature. Enabled when
B_DEBUG_SPINLOCK_CONTENTION is defined to 1. It typedefs spinlock to a
structure (thus breaking BeOS binary compatibility), containing a
counter which is incremented whenever a thread has to wait for the
spinlock.
* Added macros for spinlock initialization and access and changed
code using spinlocks accordingly. This breaks compilation for BeOS --
the macros should be defined in the respective compatibility wrappers.
* Added generic syscall to get the spinlock counters for the thread and
the team spinlocks.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25752 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c615a01 01-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Removed old mutex implementation and renamed cutex to mutex.
* Trivial adjustments of code using mutexes. Mostly removing the
mutex_init() return value check.
* Added mutex_lock_threads_locked(), which is called with the threads
spinlock being held. The spinlock is released while waiting, of
course. This function is useful in cases where the existence of the
mutex object is ensured by holding the threads spinlock.
* Changed the two instances in the VFS code where an IO context of
another team needs to be locked to use mutex_lock_threads_locked().
Before it required a semaphore-based mutex implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25283 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0747d47e 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: added swi taskqueue and a couple more methods that if_xl needs. also marked some as unimplemented so its clearer what is left to be done.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21080 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9628dc45 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: remove arbitrary limit on number of created threads available in taskqueue_start_threads.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21077 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 303a4a3d 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: a couple more changes. a DMA-using driver (FreeBSD's em, Intel Pro 1000) now works without any modifications (it has a fast interrupt mode).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21076 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4d281161 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: respect requested priority in taskqueue_start_threads.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21075 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3f3e58db 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: gcc 4 fixes, it seems __FUNCTION__ is variant.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21074 a95241bf-73f2-0310-859d-f6bbb57e9c96


# adf90245 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: only init taskqueue_fast if FBSD_FAST_TASKQUEUE requirement is set (since it starts a thread and consumes a couple semaphores).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21073 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 859a95b6 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: taskqueue implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21071 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 25d42ceb 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: a few more definitions, preparing for a DMA-using driver.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21067 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 57e2ce542e59a69f405a60f1ab7a3e0e54e4f6a2 31-Jul-2012 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

CID-701956: list_remove_head_item may return null.

Simplified from while (1) to while that checks sem directly.


# 2406849d4a8bcb152bc992bc5c1c6ef51e783f4b 27-Oct-2009 Colin Günther <coling@gmx.de>

* Coding style fixes regarding whitespace usage.
* Copyright style fixes.
* Implemented FreeBSD hardclock subsystem, which is needed to update the ticks
variable. The previous usage of "#define ticks system_time()" wasn't
sufficient anymore, as there are drivers using the ticks name for local
scoped variables.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33785 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 14627e087b920676d05d45cec5f28688744e1fdb 22-Oct-2009 Colin Günther <coling@gmx.de>

* reordering of headerfile inclusion to comply to FreeBSD 8
ordering.
this makes porting driver (especially wifi ones) more
convinient
* based on FreeBSD svn revision 196691

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33739 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1c8de8581b66c14ea94bccd7ddcea99291955796 01-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added optional spinlock contention measurement feature. Enabled when
B_DEBUG_SPINLOCK_CONTENTION is defined to 1. It typedefs spinlock to a
structure (thus breaking BeOS binary compatibility), containing a
counter which is incremented whenever a thread has to wait for the
spinlock.
* Added macros for spinlock initialization and access and changed
code using spinlocks accordingly. This breaks compilation for BeOS --
the macros should be defined in the respective compatibility wrappers.
* Added generic syscall to get the spinlock counters for the thread and
the team spinlocks.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25752 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c615a01ae49634aaf59fbe35b3d55b3bb8890df 01-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Removed old mutex implementation and renamed cutex to mutex.
* Trivial adjustments of code using mutexes. Mostly removing the
mutex_init() return value check.
* Added mutex_lock_threads_locked(), which is called with the threads
spinlock being held. The spinlock is released while waiting, of
course. This function is useful in cases where the existence of the
mutex object is ensured by holding the threads spinlock.
* Changed the two instances in the VFS code where an IO context of
another team needs to be locked to use mutex_lock_threads_locked().
Before it required a semaphore-based mutex implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25283 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0747d47e40a090591b09e6fbf2c750ac7b2359dc 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: added swi taskqueue and a couple more methods that if_xl needs. also marked some as unimplemented so its clearer what is left to be done.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21080 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9628dc45e2c41980924d1de304d4ad053a9cde2a 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: remove arbitrary limit on number of created threads available in taskqueue_start_threads.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21077 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 303a4a3df65bdf47d29c6f7429d523a5a0e8aa1b 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: a couple more changes. a DMA-using driver (FreeBSD's em, Intel Pro 1000) now works without any modifications (it has a fast interrupt mode).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21076 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4d281161bad61578fb142f7fd7740e26de0f3f1e 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: respect requested priority in taskqueue_start_threads.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21075 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3f3e58db2051137353eb2cbba79ed579d3e30c13 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: gcc 4 fixes, it seems __FUNCTION__ is variant.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21074 a95241bf-73f2-0310-859d-f6bbb57e9c96


# adf9024529bff9fe3633e54b30490d571dafbe4b 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: only init taskqueue_fast if FBSD_FAST_TASKQUEUE requirement is set (since it starts a thread and consumes a couple semaphores).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21073 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 859a95b6c77ee889682b75b942af5f0300d763ff 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: taskqueue implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21071 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 25d42ceb99f745c136482397667bc9ebb6bd5013 08-May-2007 Hugo Santos <hugosantos@nowhere.fake>

freebsd compat. layer: a few more definitions, preparing for a DMA-using driver.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21067 a95241bf-73f2-0310-859d-f6bbb57e9c96