]> git.hungrycats.org Git - linux/commitdiff
[ARM] Ecard initialisation tweaks.
authorRussell King <rmk@flint.arm.linux.org.uk>
Fri, 8 Oct 2004 23:24:07 +0000 (00:24 +0100)
committerRussell King <rmk@flint.arm.linux.org.uk>
Fri, 8 Oct 2004 23:24:07 +0000 (00:24 +0100)
Start ecard_task at initialisation time.
Statically initialise ecard wait queue head.

arch/arm/kernel/ecard.c

index 3b27ec0a5ad54a75dfadf55813288a4e58cd51c5..cfcde96a3f3e345c6d1b5b76987f086dd297b3df 100644 (file)
@@ -221,8 +221,7 @@ static void ecard_do_request(struct ecard_request *req)
 
 #include <linux/completion.h>
 
-static pid_t ecard_pid;
-static wait_queue_head_t ecard_wait;
+static DECLARE_WAIT_QUEUE_HEAD(ecard_wait);
 static struct ecard_request *ecard_req;
 static DECLARE_MUTEX(ecard_sem);
 static DECLARE_COMPLETION(ecard_completion);
@@ -320,9 +319,6 @@ ecard_call(struct ecard_request *req)
        if (current == &init_task || in_interrupt())
                BUG();
 
-       if (ecard_pid <= 0)
-               ecard_pid = kernel_thread(ecard_task, NULL, CLONE_KERNEL);
-
        down(&ecard_sem);
        ecard_req = req;
        wake_up(&ecard_wait);
@@ -1061,9 +1057,14 @@ nomem:
  */
 static int __init ecard_init(void)
 {
-       int slot, irqhw;
+       int slot, irqhw, ret;
 
-       init_waitqueue_head(&ecard_wait);
+       ret = kernel_thread(ecard_task, NULL, CLONE_KERNEL);
+       if (ret < 0) {
+               printk(KERN_ERR "Ecard: unable to create kernel thread: %d\n",
+                      ret);
+               return ret;
+       }
 
        printk("Probing expansion cards\n");