lkml.org 
[lkml]   [2008]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/8] Add interface for queuing work on a specific CPU
    On Thu,  7 Feb 2008 10:18:59 +0100 Jens Axboe <jens.axboe@oracle.com> wrote:

    > Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
    > ---
    > include/linux/workqueue.h | 1 +
    > kernel/workqueue.c | 15 +++++++++++++++
    > 2 files changed, 16 insertions(+), 0 deletions(-)
    >
    > diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
    > index 7f28c32..4c46944 100644
    > --- a/include/linux/workqueue.h
    > +++ b/include/linux/workqueue.h
    > @@ -179,6 +179,7 @@ __create_workqueue_key(const char *name, int singlethread,
    > extern void destroy_workqueue(struct workqueue_struct *wq);
    >
    > extern int FASTCALL(queue_work(struct workqueue_struct *wq, struct work_struct *work));
    > +extern int FASTCALL(queue_work_on_cpu(struct workqueue_struct *wq, struct work_struct *work, int cpu));

    -ETOOWIDE

    please don't add fastcall - we're trying to remove it.

    > extern int FASTCALL(queue_delayed_work(struct workqueue_struct *wq,
    > struct delayed_work *work, unsigned long delay));
    > extern int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
    > diff --git a/kernel/workqueue.c b/kernel/workqueue.c
    > index 52db48e..551ad7e 100644
    > --- a/kernel/workqueue.c
    > +++ b/kernel/workqueue.c
    > @@ -175,6 +175,21 @@ int fastcall queue_work(struct workqueue_struct *wq, struct work_struct *work)
    > }
    > EXPORT_SYMBOL_GPL(queue_work);
    >
    > +int fastcall queue_work_on_cpu(struct workqueue_struct *wq,
    > + struct work_struct *work, int cpu)
    > +{
    > + int ret = 0;
    > +
    > + if (!test_and_set_bit(WORK_STRUCT_PENDING, work_data_bits(work))) {
    > + BUG_ON(!list_empty(&work->entry));
    > + __queue_work(per_cpu_ptr(wq->cpu_wq, cpu), work);
    > + ret = 1;
    > + }
    > +
    > + return ret;
    > +}
    > +EXPORT_SYMBOL_GPL(queue_work_on_cpu);

    Might as well change queue_work() to call this?

    Oleg cc'ed as queue_work() maintainer ;)


    \
     
     \ /
      Last update: 2008-02-07 10:49    [W:0.038 / U:0.892 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site