pps: claim parallel port exclusively
[linux-2.6.git] / drivers / pps / generators / pps_gen_parport.c
index a15fe25..b93af3e 100644 (file)
@@ -76,8 +76,15 @@ static enum hrtimer_restart hrtimer_event(struct hrtimer *timer)
        long lim, delta;
        unsigned long flags;
 
-       /* NB: approx time with blocked interrupts =
-          send_delay + 3 * SAFETY_INTERVAL */
+       /* We have to disable interrupts here. The idea is to prevent
+        * other interrupts on the same processor to introduce random
+        * lags while polling the clock. getnstimeofday() takes <1us on
+        * most machines while other interrupt handlers can take much
+        * more potentially.
+        *
+        * NB: approx time with blocked interrupts =
+        * send_delay + 3 * SAFETY_INTERVAL
+        */
        local_irq_save(flags);
 
        /* first of all we get the time stamp... */
@@ -191,7 +198,7 @@ static void parport_attach(struct parport *port)
        }
 
        device.pardev = parport_register_device(port, KBUILD_MODNAME,
-                       NULL, NULL, NULL, 0, &device);
+                       NULL, NULL, NULL, PARPORT_FLAG_EXCL, &device);
        if (!device.pardev) {
                pr_err("couldn't register with %s\n", port->name);
                return;