|
@@ -422,6 +422,12 @@ done:
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static int rtc_dev_fasync(int fd, struct file *file, int on)
|
|
|
|
+{
|
|
|
|
+ struct rtc_device *rtc = file->private_data;
|
|
|
|
+ return fasync_helper(fd, file, on, &rtc->async_queue);
|
|
|
|
+}
|
|
|
|
+
|
|
static int rtc_dev_release(struct inode *inode, struct file *file)
|
|
static int rtc_dev_release(struct inode *inode, struct file *file)
|
|
{
|
|
{
|
|
struct rtc_device *rtc = file->private_data;
|
|
struct rtc_device *rtc = file->private_data;
|
|
@@ -434,16 +440,13 @@ static int rtc_dev_release(struct inode *inode, struct file *file)
|
|
if (rtc->ops->release)
|
|
if (rtc->ops->release)
|
|
rtc->ops->release(rtc->dev.parent);
|
|
rtc->ops->release(rtc->dev.parent);
|
|
|
|
|
|
|
|
+ if (file->f_flags & FASYNC)
|
|
|
|
+ rtc_dev_fasync(-1, file, 0);
|
|
|
|
+
|
|
clear_bit_unlock(RTC_DEV_BUSY, &rtc->flags);
|
|
clear_bit_unlock(RTC_DEV_BUSY, &rtc->flags);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int rtc_dev_fasync(int fd, struct file *file, int on)
|
|
|
|
-{
|
|
|
|
- struct rtc_device *rtc = file->private_data;
|
|
|
|
- return fasync_helper(fd, file, on, &rtc->async_queue);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static const struct file_operations rtc_dev_fops = {
|
|
static const struct file_operations rtc_dev_fops = {
|
|
.owner = THIS_MODULE,
|
|
.owner = THIS_MODULE,
|
|
.llseek = no_llseek,
|
|
.llseek = no_llseek,
|