Messages in this thread |  | | Date | Fri, 23 Apr 2010 22:21:34 -0700 | | Subject | Re: [PATCH 7/9] PM: Add suspend blocking work. | | From | Arve Hjønnevåg <> |
| |
2010/4/23 Arve Hjønnevåg <arve@android.com>: > On Fri, Apr 23, 2010 at 5:20 AM, Oleg Nesterov <oleg@redhat.com> wrote: >> On 04/23, Tejun Heo wrote: >>> >>> On 04/23/2010 03:08 AM, Arve Hjønnevåg wrote: >>> > Allow work to be queued that will block suspend while it is pending >>> > or executing. To get the same functionality in the calling code often >>> > requires a separate suspend_blocker for pending and executing work, or >>> > additional state and locking. >>> >>> Hmm... I think this can be implemented as pure wrapper around >>> workqueue instead of injecting a flag and code into workqueue core. >>> Adding @fn field to suspend_blocking_work struct and using a custom >>> work function to call it and then invoke suspend_unblock() should be >>> enough, right? Oh, dedicated queue functions will be needed too. I >>> don't think it's wise to meddle with workqueue core code for this. >> >> Completely agreed. The patch adds very "strange" hacks into workqueue >> code to solve the very specific problems. >> > > I want the suspend blocker active when the work is pending or running. > I did not see a way to do this on top of the workqueue api without > adding additional locking. >
I can remove the WORK_STRUCT_SUSPEND_BLOCKING flag and instead add an argument to __queue_work and __cancel_work_timer (or use separate copies) if you think that would be better. It would avoid increasing the alignment requirement of cpu_workqueue_struct, but it will probably add more code than the current patch.
-- Arve Hjønnevåg -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |