A typical grep over the kernel code will get you to two sets of workqueue interface users the old and the new.. This is because of its rich development history…
Due to its development history, there currently are two sets of interfaces to create workqueues.
- Old: create[_singlethread|_freezable]_workqueue()
- New: alloc[_ordered]_workqueue()
Legacy workqueue interface users are scheduled for removal.. My Outreachy project was to remove 280 legacy workqueue interface users.
Create_workqueue, create_singlethread_workqueue, create_freezable_workqueue, constituted the legacy workqueue interface which was used before 2010. From 2010, the concurrency managed workqueues were designed which consisted of alloc_workqueue and alloc_ordered_workqueue…
Hence, the kernel today has occurrences of both the legacy and new workqueue interface, which wouldn’t be the case for very long since my outreachy project was to perform various conversions to remove the deprecated workqueue instances 🙂