lkml.org 
[lkml]   [2009]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 05/19] kthread: implement kthread_data()
    Date
    Implement kthread_data() which takes @task pointing to a kthread and
    returns @data specified when creating the kthread. The caller is
    responsible for ensuring the validity of @task when calling this
    function.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    ---
    include/linux/kthread.h | 1 +
    kernel/kthread.c | 15 +++++++++++++++
    2 files changed, 16 insertions(+), 0 deletions(-)

    diff --git a/include/linux/kthread.h b/include/linux/kthread.h
    index aabc8a1..14f63e8 100644
    --- a/include/linux/kthread.h
    +++ b/include/linux/kthread.h
    @@ -30,6 +30,7 @@ struct task_struct *kthread_create(int (*threadfn)(void *data),
    void kthread_bind(struct task_struct *k, unsigned int cpu);
    int kthread_stop(struct task_struct *k);
    int kthread_should_stop(void);
    +void *kthread_data(struct task_struct *k);

    int kthreadd(void *unused);
    extern struct task_struct *kthreadd_task;
    diff --git a/kernel/kthread.c b/kernel/kthread.c
    index 5fe7099..bd4cb7f 100644
    --- a/kernel/kthread.c
    +++ b/kernel/kthread.c
    @@ -35,6 +35,7 @@ struct kthread_create_info

    struct kthread {
    int should_stop;
    + void *data;
    struct completion exited;
    };

    @@ -54,6 +55,19 @@ int kthread_should_stop(void)
    }
    EXPORT_SYMBOL(kthread_should_stop);

    +/**
    + * kthread_data - return data value specified on kthread creation
    + * @task: kthread task in question
    + *
    + * Return the data value specified when kthread @task was created.
    + * The caller is responsible for ensuring the validity of @task when
    + * calling this function.
    + */
    +void *kthread_data(struct task_struct *task)
    +{
    + return to_kthread(task)->data;
    +}
    +
    static int kthread(void *_create)
    {
    /* Copy data: it's on kthread's stack */
    @@ -64,6 +78,7 @@ static int kthread(void *_create)
    int ret;

    self.should_stop = 0;
    + self.data = data;
    init_completion(&self.exited);
    current->vfork_done = &self.exited;

    --
    1.6.4.2


    \
     
     \ /
      Last update: 2009-10-01 10:15    [W:0.022 / U:60.856 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site