lkml.org 
[lkml]   [2009]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 4/7] sched: implement force_cpus_allowed()
    From
    Date
    On Fri, 2009-12-04 at 11:40 +0100, Peter Zijlstra wrote:
    > On Wed, 2009-12-02 at 12:56 +0900, Tejun Heo wrote:
    > > set_cpus_allowed_ptr() modifies the allowed cpu mask of a task. The
    > > function performs the following checks before applying new mask.
    > >
    > > * Check whether PF_THREAD_BOUND is set. This is set for bound
    > > kthreads so that they can't be moved around.
    > >
    > > * Check whether the target cpu is still marked active - cpu_active().
    > > Active state is cleared early while downing a cpu.
    > >
    > > This patch adds force_cpus_allowed() which bypasses the above two
    > > checks. The caller is responsible for guaranteeing that the
    > > destination cpu doesn't go down until force_cpus_allowed() finishes.
    > >
    > > The first check is bypassed by factoring out actual migration part
    > > into __set_cpus_allowed() from set_cpus_allowed_ptr() and calling the
    > > inner function from force_cpus_allowed().
    > >
    > > The second check is buried deep down in __migrate_task() which is
    > > executed by migration threads. @force parameter is added to
    > > __migrate_task(). As the only way to pass parameters from
    > > __set_cpus_allowed() is through migration_req, migration_req->force is
    > > added and the @force parameter is passed down to __migrate_task().
    > >
    > > Please note the naming discrepancy between set_cpus_allowed_ptr() and
    > > the new functions. The _ptr suffix is from the days when cpumask api
    > > wasn't mature and future changes should drop it from
    > > set_cpus_allowed_ptr() too.
    > >
    > > force_cpus_allowed() will be used for concurrency-managed workqueue.
    >
    > Would still like to know why all this is needed.

    That is, what problem do these new-fangled workqueues have and why is
    this a good solution.



    \
     
     \ /
      Last update: 2009-12-04 11:47    [W:0.024 / U:63.704 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site