new-bus: Add taskqueue_bus to process hot-plug device events

Use a system-wide taskqueue for hot-plug events.  This avoids possibly
blocking unrelated events on the thread taskqueue without requiring
multiple driver-specific taskqueues.

Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D49268
This commit is contained in:
John Baldwin 2025-03-10 13:32:23 -04:00
parent db6f2bb93a
commit 44d5f5ed1e
2 changed files with 9 additions and 0 deletions

View file

@ -51,6 +51,7 @@
#include <sys/smp.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
#include <sys/taskqueue.h>
#include <sys/bus.h>
#include <sys/cpuset.h>
#ifdef INTRNG
@ -120,6 +121,8 @@ struct device_prop_elm {
LIST_ENTRY(device_prop_elm) link;
};
TASKQUEUE_DEFINE_THREAD(bus);
static void device_destroy_props(device_t dev);
/**

View file

@ -215,4 +215,10 @@ struct taskqueue *taskqueue_create_fast(const char *name, int mflags,
taskqueue_enqueue_fn enqueue,
void *context);
/*
* This queue is used to process asynchronous device events such as
* hot plug insertion and removal of devices.
*/
TASKQUEUE_DECLARE(bus);
#endif /* !_SYS_TASKQUEUE_H_ */