ca2ad6bd77
This change makes the workqueue implementation behave more like in Linux, both functionality wise and structure wise. All workqueue code has been moved to linux_work.c Add an atomic based statemachine to the work_struct to ensure proper operation. Prior to this change struct_work was directly mapped to a FreeBSD task. When a taskqueue has multiple threads the same task may end up being executed on more than one worker thread simultaneously. This might cause problems with code coming from Linux, which expects serial behaviour, similar to Linux tasklets. Move all global workqueue function names into the linux_xxx domain to avoid symbol name clashes in the future. Implement a few more workqueue related functions and macros. Create two multithreaded taskqueues for the LinuxKPI during module load, one for time-consuming callbacks and one for non-time consuming callbacks. MFC after: 1 week Sponsored by: Mellanox Technologies |
||
---|---|---|
.. | ||
cloudabi | ||
cloudabi32 | ||
cloudabi64 | ||
freebsd32 | ||
ia32 | ||
linprocfs | ||
linsysfs | ||
linux | ||
linuxkpi/common | ||
ndis | ||
netbsd | ||
x86bios |