[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/6] sched: add function to execute a function synchronously on a physical cpu
On Fri, Mar 11, 2016 at 01:48:12PM +0100, Juergen Gross wrote: > On 11/03/16 13:42, Peter Zijlstra wrote: > > how about something like: > > > > struct xen_callback_struct { > > struct work_struct work; > > struct completion done; int (*func)(void*); > > void * data; > > int ret; > > }; > > > > static void xen_callback_f(struct work_struct *work) > > { > > struct xen_callback_struct *xcs = container_of(work, struct > > xen_callback_struct, work); > > > > xcs->ret = xcs->func(xcs->data); > > > > complete(&xcs->done); > > } > > > > xen_call_on_cpu_sync(int cpu, int (*func)(void *), void *data) > > { > > struct xen_callback_state xcs = { > > .work = __WORK_INITIALIZER(xcs.work, xen_callback_f); > > .done = COMPLETION_INITIALIZER_ONSTACK(xcs.done), .func = func, > > .data = data, > > }; > > > > queue_work_on(&work, cpu); > > wait_for_completion(&xcs.done); > > > > return xcs.ret; > > } > > > > No mucking about with the scheduler state, no new exported functions > > etc.. > > > > Hey, I like it. Can't be limited to Xen as on bare metal the function > needs to be called on cpu 0, too. But avoiding the scheduler fiddling > is much better! As this seems to be required for Dell hardware only, > I could add it to some Dell base driver in case you don't want to add > it to core code. Urgh yeah, saw that in your other mail. It looks like I should go look at set_cpus_allowed_ptr() abuse :/ Not sure where this would fit best, maybe somewhere near workqueue.c or smp.c. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |