Lines Matching defs:wd_data

101 	struct watchdog_core_data *wd_data = wdd->wd_data;
109 virt_timeout = ktime_add(wd_data->last_keepalive,
112 virt_timeout = wd_data->open_deadline;
131 struct watchdog_core_data *wd_data = wdd->wd_data;
137 hrtimer_start(&wd_data->timer, t,
140 hrtimer_cancel(&wd_data->timer);
146 struct watchdog_core_data *wd_data = wdd->wd_data;
150 earliest_keepalive = ktime_add(wd_data->last_hw_keepalive,
155 hrtimer_start(&wd_data->timer,
161 wd_data->last_hw_keepalive = now;
187 * The caller must hold wd_data->lock.
193 struct watchdog_core_data *wd_data = wdd->wd_data;
198 set_bit(_WDOG_KEEPALIVE, &wd_data->status);
200 wd_data->last_keepalive = ktime_get();
204 static bool watchdog_worker_should_ping(struct watchdog_core_data *wd_data)
206 struct watchdog_device *wdd = wd_data->wdd;
214 return watchdog_hw_running(wdd) && !watchdog_past_open_deadline(wd_data);
219 struct watchdog_core_data *wd_data;
221 wd_data = container_of(work, struct watchdog_core_data, work);
223 mutex_lock(&wd_data->lock);
224 if (watchdog_worker_should_ping(wd_data))
225 __watchdog_ping(wd_data->wdd);
226 mutex_unlock(&wd_data->lock);
231 struct watchdog_core_data *wd_data;
233 wd_data = container_of(timer, struct watchdog_core_data, timer);
235 kthread_queue_work(watchdog_kworker, &wd_data->work);
244 * The caller must hold wd_data->lock.
250 struct watchdog_core_data *wd_data = wdd->wd_data;
257 set_bit(_WDOG_KEEPALIVE, &wd_data->status);
272 wd_data->last_keepalive = started_at;
273 wd_data->last_hw_keepalive = started_at;
288 * The caller must hold wd_data->lock.
327 * The caller must hold wd_data->lock.
333 struct watchdog_core_data *wd_data = wdd->wd_data;
347 if (test_bit(_WDOG_ALLOW_RELEASE, &wd_data->status))
350 if (test_and_clear_bit(_WDOG_KEEPALIVE, &wd_data->status))
364 * The caller must hold wd_data->lock.
426 * The caller must hold wd_data->lock.
477 struct watchdog_core_data *wd_data = wdd->wd_data;
480 mutex_lock(&wd_data->lock);
482 mutex_unlock(&wd_data->lock);
501 struct watchdog_core_data *wd_data = wdd->wd_data;
505 mutex_lock(&wd_data->lock);
507 mutex_unlock(&wd_data->lock);
671 * The caller must hold wd_data->lock.
700 struct watchdog_core_data *wd_data = file->private_data;
713 clear_bit(_WDOG_ALLOW_RELEASE, &wd_data->status);
720 set_bit(_WDOG_ALLOW_RELEASE, &wd_data->status);
726 mutex_lock(&wd_data->lock);
727 wdd = wd_data->wdd;
730 mutex_unlock(&wd_data->lock);
753 struct watchdog_core_data *wd_data = file->private_data;
760 mutex_lock(&wd_data->lock);
762 wdd = wd_data->wdd;
849 mutex_unlock(&wd_data->lock);
866 struct watchdog_core_data *wd_data;
873 wd_data = old_wd_data;
875 wd_data = container_of(inode->i_cdev, struct watchdog_core_data,
879 if (test_and_set_bit(_WDOG_DEV_OPEN, &wd_data->status))
882 wdd = wd_data->wdd;
898 file->private_data = wd_data;
901 get_device(&wd_data->dev);
910 wd_data->open_deadline = KTIME_MAX;
916 module_put(wd_data->wdd->ops->owner);
918 clear_bit(_WDOG_DEV_OPEN, &wd_data->status);
924 struct watchdog_core_data *wd_data;
926 wd_data = container_of(dev, struct watchdog_core_data, dev);
928 kfree(wd_data);
944 struct watchdog_core_data *wd_data = file->private_data;
949 mutex_lock(&wd_data->lock);
951 wdd = wd_data->wdd;
962 else if (test_and_clear_bit(_WDOG_ALLOW_RELEASE, &wd_data->status) ||
975 clear_bit(_WDOG_DEV_OPEN, &wd_data->status);
979 mutex_unlock(&wd_data->lock);
986 module_put(wd_data->cdev.owner);
987 put_device(&wd_data->dev);
1024 struct watchdog_core_data *wd_data;
1027 wd_data = kzalloc(sizeof(struct watchdog_core_data), GFP_KERNEL);
1028 if (!wd_data)
1030 mutex_init(&wd_data->lock);
1032 wd_data->wdd = wdd;
1033 wdd->wd_data = wd_data;
1036 kfree(wd_data);
1040 device_initialize(&wd_data->dev);
1041 wd_data->dev.devt = MKDEV(MAJOR(watchdog_devt), wdd->id);
1042 wd_data->dev.class = &watchdog_class;
1043 wd_data->dev.parent = wdd->parent;
1044 wd_data->dev.groups = wdd->groups;
1045 wd_data->dev.release = watchdog_core_data_release;
1046 dev_set_drvdata(&wd_data->dev, wdd);
1047 err = dev_set_name(&wd_data->dev, "watchdog%d", wdd->id);
1049 put_device(&wd_data->dev);
1053 kthread_init_work(&wd_data->work, watchdog_ping_work);
1054 hrtimer_init(&wd_data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD);
1055 wd_data->timer.function = watchdog_timer_expired;
1059 old_wd_data = wd_data;
1069 put_device(&wd_data->dev);
1075 cdev_init(&wd_data->cdev, &watchdog_fops);
1076 wd_data->cdev.owner = wdd->ops->owner;
1079 err = cdev_device_add(&wd_data->cdev, &wd_data->dev);
1087 put_device(&wd_data->dev);
1092 wd_data->last_hw_keepalive = ktime_sub(ktime_get(), 1);
1093 watchdog_set_open_deadline(wd_data);
1101 get_device(&wd_data->dev);
1103 hrtimer_start(&wd_data->timer, 0,
1122 struct watchdog_core_data *wd_data = wdd->wd_data;
1124 cdev_device_del(&wd_data->cdev, &wd_data->dev);
1137 mutex_lock(&wd_data->lock);
1138 wd_data->wdd = NULL;
1139 wdd->wd_data = NULL;
1140 mutex_unlock(&wd_data->lock);
1142 hrtimer_cancel(&wd_data->timer);
1143 kthread_cancel_work_sync(&wd_data->work);
1145 put_device(&wd_data->dev);
1202 struct watchdog_core_data *wd_data;
1208 wd_data = wdd->wd_data;
1212 wd_data->last_hw_keepalive = ktime_sub(now, ms_to_ktime(last_ping_ms));
1274 struct watchdog_core_data *wd_data = wdd->wd_data;
1277 if (!wdd->wd_data)
1281 mutex_lock(&wd_data->lock);
1282 if (watchdog_worker_should_ping(wd_data))
1283 ret = __watchdog_ping(wd_data->wdd);
1284 mutex_unlock(&wd_data->lock);
1293 hrtimer_cancel(&wd_data->timer);
1294 kthread_cancel_work_sync(&wd_data->work);
1301 struct watchdog_core_data *wd_data = wdd->wd_data;
1304 if (!wdd->wd_data)
1311 mutex_lock(&wd_data->lock);
1312 if (watchdog_worker_should_ping(wd_data))
1313 ret = __watchdog_ping(wd_data->wdd);
1314 mutex_unlock(&wd_data->lock);