Lines Matching defs:wd_data

121 	struct watchdog_core_data *wd_data = wdd->wd_data;
129 virt_timeout = ktime_add(wd_data->last_keepalive,
132 virt_timeout = wd_data->open_deadline;
151 struct watchdog_core_data *wd_data = wdd->wd_data;
157 hrtimer_start(&wd_data->timer, t,
160 hrtimer_cancel(&wd_data->timer);
166 struct watchdog_core_data *wd_data = wdd->wd_data;
170 earliest_keepalive = ktime_add(wd_data->last_hw_keepalive,
175 hrtimer_start(&wd_data->timer,
181 wd_data->last_hw_keepalive = now;
197 * The caller must hold wd_data->lock.
207 struct watchdog_core_data *wd_data = wdd->wd_data;
212 set_bit(_WDOG_KEEPALIVE, &wd_data->status);
214 wd_data->last_keepalive = ktime_get();
218 static bool watchdog_worker_should_ping(struct watchdog_core_data *wd_data)
220 struct watchdog_device *wdd = wd_data->wdd;
228 return watchdog_hw_running(wdd) && !watchdog_past_open_deadline(wd_data);
233 struct watchdog_core_data *wd_data;
235 wd_data = container_of(work, struct watchdog_core_data, work);
237 mutex_lock(&wd_data->lock);
238 if (watchdog_worker_should_ping(wd_data))
239 __watchdog_ping(wd_data->wdd);
240 mutex_unlock(&wd_data->lock);
245 struct watchdog_core_data *wd_data;
247 wd_data = container_of(timer, struct watchdog_core_data, timer);
249 kthread_queue_work(watchdog_kworker, &wd_data->work);
257 * The caller must hold wd_data->lock.
266 struct watchdog_core_data *wd_data = wdd->wd_data;
273 set_bit(_WDOG_KEEPALIVE, &wd_data->status);
284 wd_data->last_keepalive = started_at;
285 wd_data->last_hw_keepalive = started_at;
297 * The caller must hold wd_data->lock.
337 * The caller must hold wd_data->lock.
344 struct watchdog_core_data *wd_data = wdd->wd_data;
358 if (test_bit(_WDOG_ALLOW_RELEASE, &wd_data->status))
361 if (test_and_clear_bit(_WDOG_KEEPALIVE, &wd_data->status))
372 * The caller must hold wd_data->lock.
430 * The caller must hold wd_data->lock.
481 struct watchdog_core_data *wd_data = wdd->wd_data;
484 mutex_lock(&wd_data->lock);
486 mutex_unlock(&wd_data->lock);
505 struct watchdog_core_data *wd_data = wdd->wd_data;
509 mutex_lock(&wd_data->lock);
511 mutex_unlock(&wd_data->lock);
637 * The caller must hold wd_data->lock.
664 struct watchdog_core_data *wd_data = file->private_data;
677 clear_bit(_WDOG_ALLOW_RELEASE, &wd_data->status);
684 set_bit(_WDOG_ALLOW_RELEASE, &wd_data->status);
690 mutex_lock(&wd_data->lock);
691 wdd = wd_data->wdd;
694 mutex_unlock(&wd_data->lock);
715 struct watchdog_core_data *wd_data = file->private_data;
722 mutex_lock(&wd_data->lock);
724 wdd = wd_data->wdd;
811 mutex_unlock(&wd_data->lock);
827 struct watchdog_core_data *wd_data;
834 wd_data = old_wd_data;
836 wd_data = container_of(inode->i_cdev, struct watchdog_core_data,
840 if (test_and_set_bit(_WDOG_DEV_OPEN, &wd_data->status))
843 wdd = wd_data->wdd;
859 file->private_data = wd_data;
862 get_device(&wd_data->dev);
871 wd_data->open_deadline = KTIME_MAX;
877 module_put(wd_data->wdd->ops->owner);
879 clear_bit(_WDOG_DEV_OPEN, &wd_data->status);
885 struct watchdog_core_data *wd_data;
887 wd_data = container_of(dev, struct watchdog_core_data, dev);
889 kfree(wd_data);
904 struct watchdog_core_data *wd_data = file->private_data;
909 mutex_lock(&wd_data->lock);
911 wdd = wd_data->wdd;
922 else if (test_and_clear_bit(_WDOG_ALLOW_RELEASE, &wd_data->status) ||
935 clear_bit(_WDOG_DEV_OPEN, &wd_data->status);
939 mutex_unlock(&wd_data->lock);
946 module_put(wd_data->cdev.owner);
947 put_device(&wd_data->dev);
984 struct watchdog_core_data *wd_data;
987 wd_data = kzalloc(sizeof(struct watchdog_core_data), GFP_KERNEL);
988 if (!wd_data)
990 mutex_init(&wd_data->lock);
992 wd_data->wdd = wdd;
993 wdd->wd_data = wd_data;
996 kfree(wd_data);
1000 device_initialize(&wd_data->dev);
1001 wd_data->dev.devt = MKDEV(MAJOR(watchdog_devt), wdd->id);
1002 wd_data->dev.class = &watchdog_class;
1003 wd_data->dev.parent = wdd->parent;
1004 wd_data->dev.groups = wdd->groups;
1005 wd_data->dev.release = watchdog_core_data_release;
1006 dev_set_drvdata(&wd_data->dev, wdd);
1007 dev_set_name(&wd_data->dev, "watchdog%d", wdd->id);
1009 kthread_init_work(&wd_data->work, watchdog_ping_work);
1010 hrtimer_init(&wd_data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD);
1011 wd_data->timer.function = watchdog_timer_expired;
1014 old_wd_data = wd_data;
1024 put_device(&wd_data->dev);
1030 cdev_init(&wd_data->cdev, &watchdog_fops);
1031 wd_data->cdev.owner = wdd->ops->owner;
1034 err = cdev_device_add(&wd_data->cdev, &wd_data->dev);
1042 put_device(&wd_data->dev);
1047 wd_data->last_hw_keepalive = ktime_sub(ktime_get(), 1);
1048 watchdog_set_open_deadline(wd_data);
1056 get_device(&wd_data->dev);
1058 hrtimer_start(&wd_data->timer, 0,
1078 struct watchdog_core_data *wd_data = wdd->wd_data;
1080 cdev_device_del(&wd_data->cdev, &wd_data->dev);
1091 mutex_lock(&wd_data->lock);
1092 wd_data->wdd = NULL;
1093 wdd->wd_data = NULL;
1094 mutex_unlock(&wd_data->lock);
1096 hrtimer_cancel(&wd_data->timer);
1097 kthread_cancel_work_sync(&wd_data->work);
1099 put_device(&wd_data->dev);
1154 struct watchdog_core_data *wd_data;
1160 wd_data = wdd->wd_data;
1164 wd_data->last_hw_keepalive = ktime_sub(now, ms_to_ktime(last_ping_ms));