Wait 5 seconds testing for jiffies. relax
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Thu, 20 May 2010 20:22:43 +0000 (16:22 -0400)
committerThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Thu, 20 May 2010 20:22:43 +0000 (16:22 -0400)
hellochar.c

index 206b6d1..a197a1d 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/cdev.h>
 #include <linux/slab.h>
 #include <linux/spinlock.h>
+#include <linux/sched.h>
 
 MODULE_LICENSE("GPL");
 
@@ -38,11 +39,9 @@ static int hello_open(struct inode *ino, struct file *fp)
 static ssize_t hello_read(struct file *fp, char __user *buf, size_t sz,
        loff_t *pos)
 {
-       int i = 1 << 28;
-       spin_lock(&hello_lock);
-       while (i--)
+       unsigned long expire = jiffies + 5 * HZ;
+       while (time_after(expire, jiffies))
                cpu_relax();
-       spin_unlock(&hello_lock);
        return 0;
 }