Messages in this thread | | | From | Allen <> | Date | Thu, 29 Feb 2024 10:24:33 -0800 | Subject | Re: [PATCH] kernel: Introduce enable_and_queue_work() convenience function |
| |
> > > > +/** > > + * enable_and_queue_work - Enable and queue a work item on a specific workqueue > > + * @wq: The target workqueue > > + * @work: The work item to be enabled and queued > > + * > > + * This function attempts to enable the specified work item using enable_work(). > > + * If the enable operation is successful, the work item is then queued on the > > Could you please specify what "successful" means and also please > document it that it might cause unnecessary spurious wake-ups and > the caller should prepare for it if it is not desired.
Thank you for the review. I will work on documenting it.
Thanks. > Thanks > Lai > > PS: > > I'm afraid it can cause unnecessary spurious wake-ups in cases > where the work item is expected to be dormant ordinarily but disable/enable() > are called often for maintenance. However, the user can resort to other > synchronization in this case rather than just disable/enable() only to avoid the > wake-ups overheads. > > > > > + * provided workqueue using queue_work(). It returns %true if the work item was > > + * successfully enabled and queued, and %false otherwise. > > + * > > + * This function combines the operations of enable_work() and queue_work(), > > + * providing a convenient way to enable and queue a work item in a single call. > > + */ > > +static inline bool enable_and_queue_work(struct workqueue_struct *wq, > > + struct work_struct *work) > > +{ > > + if (enable_work(work)) { > > + queue_work(wq, work); > > + return true; > > + } > > + return false; > > +} > > + > > /* > > * Detect attempt to flush system-wide workqueues at compile time when possible. > > * Warn attempt to flush system-wide workqueues at runtime. > > -- > > 2.17.1 > > >
-- - Allen
| |