lkml.org 
[lkml]   [2007]   [Apr]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] bluetooth hidp: Convert to kthread API.
    Date
    From: Eric W. Biederman <ebiederm@xmission.com>

    This patch starts up khidp using kthread_run instead
    of kernel_thread and daemonize, resulting is slightly
    simpler and more maintainable code.

    Cc: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    ---
    net/bluetooth/hidp/core.c | 29 ++++++++++++++++-------------
    1 files changed, 16 insertions(+), 13 deletions(-)

    diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
    index df2c471..1c9b202 100644
    --- a/net/bluetooth/hidp/core.c
    +++ b/net/bluetooth/hidp/core.c
    @@ -36,6 +36,7 @@
    #include <linux/init.h>
    #include <linux/wait.h>
    #include <linux/freezer.h>
    +#include <linux/kthread.h>
    #include <net/sock.h>

    #include <linux/input.h>
    @@ -531,22 +532,11 @@ static int hidp_session(void *arg)
    struct sock *ctrl_sk = session->ctrl_sock->sk;
    struct sock *intr_sk = session->intr_sock->sk;
    struct sk_buff *skb;
    - int vendor = 0x0000, product = 0x0000;
    wait_queue_t ctrl_wait, intr_wait;

    BT_DBG("session %p", session);

    - if (session->input) {
    - vendor = session->input->id.vendor;
    - product = session->input->id.product;
    - }
    -
    - if (session->hid) {
    - vendor = session->hid->vendor;
    - product = session->hid->product;
    - }

    - daemonize("khidpd_%04x%04x", vendor, product);
    set_user_nice(current, -15);

    init_waitqueue_entry(&ctrl_wait, current);
    @@ -747,7 +737,9 @@ static inline void hidp_setup_hid(struct hidp_session *session, struct hidp_conn

    int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock)
    {
    + int vendor = 0x0000, product = 0x0000;
    struct hidp_session *session, *s;
    + struct task_struct *task;
    int err;

    BT_DBG("");
    @@ -834,8 +826,19 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,

    hidp_set_timer(session);

    - err = kernel_thread(hidp_session, session, CLONE_KERNEL);
    - if (err < 0)
    + if (session->input) {
    + vendor = session->input->id.vendor;
    + product = session->input->id.product;
    + }
    +
    + if (session->hid) {
    + vendor = session->hid->vendor;
    + product = session->hid->product;
    + }
    + task = kthread_run(hidp_session, session,
    + "khidpd_%04x%04x", vendor, product);
    + err = PTR_ERR(task);
    + if (IS_ERR(task))
    goto unlink;

    if (session->input) {
    --
    1.5.0.g53756
    -
    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/

    \
     
     \ /
      Last update: 2007-04-19 10:09    [W:4.205 / U:0.328 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site