patch-2.3.99-pre2 linux/drivers/char/rtc.c
Next file: linux/drivers/char/serial.c
Previous file: linux/drivers/char/raw.c
Back to the patch index
Back to the overall index
- Lines: 37
- Date:
Thu Mar 16 14:07:09 2000
- Orig file:
v2.3.99-pre1/linux/drivers/char/rtc.c
- Orig date:
Sat Feb 26 22:31:45 2000
diff -u --recursive --new-file v2.3.99-pre1/linux/drivers/char/rtc.c linux/drivers/char/rtc.c
@@ -87,11 +87,11 @@
static DECLARE_WAIT_QUEUE_HEAD(rtc_wait);
-static spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED;
+extern spinlock_t rtc_lock;
static struct timer_list rtc_irq_timer;
-static long long rtc_llseek(struct file *file, loff_t offset, int origin);
+static loff_t rtc_llseek(struct file *file, loff_t offset, int origin);
static ssize_t rtc_read(struct file *file, char *buf,
size_t count, loff_t *ppos);
@@ -141,8 +141,11 @@
#ifndef __alpha__
/*
* A very tiny interrupt handler. It runs with SA_INTERRUPT set,
- * so that there is no possibility of conflicting with the
- * set_rtc_mmss() call that happens during some timer interrupts.
+ * but there is possibility of conflicting with the set_rtc_mmss()
+ * call (the rtc irq and the timer irq can easily run at the same
+ * time in two different CPUs). So we need to serializes
+ * accesses to the chip with the rtc_lock spinlock that each
+ * architecture should implement in the timer code.
* (See ./arch/XXXX/kernel/time.c for the set_rtc_mmss() function.)
*/
@@ -175,7 +178,7 @@
* Now all the various file operations that we export.
*/
-static long long rtc_llseek(struct file *file, loff_t offset, int origin)
+static loff_t rtc_llseek(struct file *file, loff_t offset, int origin)
{
return -ESPIPE;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)