Lines Matching refs:debug_data
34 static void smsdvb_print_dvb_stats(struct smsdvb_debugfs *debug_data, in smsdvb_print_dvb_stats() argument
40 spin_lock(&debug_data->lock); in smsdvb_print_dvb_stats()
41 if (debug_data->stats_count) { in smsdvb_print_dvb_stats()
42 spin_unlock(&debug_data->lock); in smsdvb_print_dvb_stats()
46 buf = debug_data->stats_data; in smsdvb_print_dvb_stats()
91 debug_data->stats_count = n; in smsdvb_print_dvb_stats()
92 spin_unlock(&debug_data->lock); in smsdvb_print_dvb_stats()
93 wake_up(&debug_data->stats_queue); in smsdvb_print_dvb_stats()
96 static void smsdvb_print_isdb_stats(struct smsdvb_debugfs *debug_data, in smsdvb_print_isdb_stats() argument
102 spin_lock(&debug_data->lock); in smsdvb_print_isdb_stats()
103 if (debug_data->stats_count) { in smsdvb_print_isdb_stats()
104 spin_unlock(&debug_data->lock); in smsdvb_print_isdb_stats()
108 buf = debug_data->stats_data; in smsdvb_print_isdb_stats()
155 debug_data->stats_count = n; in smsdvb_print_isdb_stats()
156 spin_unlock(&debug_data->lock); in smsdvb_print_isdb_stats()
157 wake_up(&debug_data->stats_queue); in smsdvb_print_isdb_stats()
160 static void smsdvb_print_isdb_stats_ex(struct smsdvb_debugfs *debug_data, in smsdvb_print_isdb_stats_ex() argument
166 spin_lock(&debug_data->lock); in smsdvb_print_isdb_stats_ex()
167 if (debug_data->stats_count) { in smsdvb_print_isdb_stats_ex()
168 spin_unlock(&debug_data->lock); in smsdvb_print_isdb_stats_ex()
172 buf = debug_data->stats_data; in smsdvb_print_isdb_stats_ex()
221 debug_data->stats_count = n; in smsdvb_print_isdb_stats_ex()
222 spin_unlock(&debug_data->lock); in smsdvb_print_isdb_stats_ex()
224 wake_up(&debug_data->stats_queue); in smsdvb_print_isdb_stats_ex()
230 struct smsdvb_debugfs *debug_data = client->debug_data; in smsdvb_stats_open() local
232 kref_get(&debug_data->refcount); in smsdvb_stats_open()
234 spin_lock(&debug_data->lock); in smsdvb_stats_open()
235 debug_data->stats_count = 0; in smsdvb_stats_open()
236 debug_data->stats_was_read = false; in smsdvb_stats_open()
237 spin_unlock(&debug_data->lock); in smsdvb_stats_open()
239 file->private_data = debug_data; in smsdvb_stats_open()
246 struct smsdvb_debugfs *debug_data; in smsdvb_debugfs_data_release() local
248 debug_data = container_of(ref, struct smsdvb_debugfs, refcount); in smsdvb_debugfs_data_release()
249 kfree(debug_data); in smsdvb_debugfs_data_release()
252 static int smsdvb_stats_wait_read(struct smsdvb_debugfs *debug_data) in smsdvb_stats_wait_read() argument
256 spin_lock(&debug_data->lock); in smsdvb_stats_wait_read()
258 if (debug_data->stats_was_read) in smsdvb_stats_wait_read()
261 rc = debug_data->stats_count; in smsdvb_stats_wait_read()
264 spin_unlock(&debug_data->lock); in smsdvb_stats_wait_read()
270 struct smsdvb_debugfs *debug_data = file->private_data; in smsdvb_stats_poll() local
273 kref_get(&debug_data->refcount); in smsdvb_stats_poll()
275 poll_wait(file, &debug_data->stats_queue, wait); in smsdvb_stats_poll()
277 rc = smsdvb_stats_wait_read(debug_data); in smsdvb_stats_poll()
278 kref_put(&debug_data->refcount, smsdvb_debugfs_data_release); in smsdvb_stats_poll()
287 struct smsdvb_debugfs *debug_data = file->private_data; in smsdvb_stats_read() local
289 kref_get(&debug_data->refcount); in smsdvb_stats_read()
292 rc = smsdvb_stats_wait_read(debug_data); in smsdvb_stats_read()
298 rc = wait_event_interruptible(debug_data->stats_queue, in smsdvb_stats_read()
299 smsdvb_stats_wait_read(debug_data)); in smsdvb_stats_read()
304 if (debug_data->stats_was_read) { in smsdvb_stats_read()
309 len = debug_data->stats_count - *ppos; in smsdvb_stats_read()
312 debug_data->stats_data, len); in smsdvb_stats_read()
316 if (*ppos >= debug_data->stats_count) { in smsdvb_stats_read()
317 spin_lock(&debug_data->lock); in smsdvb_stats_read()
318 debug_data->stats_was_read = true; in smsdvb_stats_read()
319 spin_unlock(&debug_data->lock); in smsdvb_stats_read()
322 kref_put(&debug_data->refcount, smsdvb_debugfs_data_release); in smsdvb_stats_read()
328 struct smsdvb_debugfs *debug_data = file->private_data; in smsdvb_stats_release() local
330 spin_lock(&debug_data->lock); in smsdvb_stats_release()
331 debug_data->stats_was_read = true; /* return EOF to read() */ in smsdvb_stats_release()
332 spin_unlock(&debug_data->lock); in smsdvb_stats_release()
333 wake_up_interruptible_sync(&debug_data->stats_queue); in smsdvb_stats_release()
335 kref_put(&debug_data->refcount, smsdvb_debugfs_data_release); in smsdvb_stats_release()
357 struct smsdvb_debugfs *debug_data; in smsdvb_debugfs_create() local
377 debug_data = kzalloc(sizeof(*client->debug_data), GFP_KERNEL); in smsdvb_debugfs_create()
378 if (!debug_data) in smsdvb_debugfs_create()
381 client->debug_data = debug_data; in smsdvb_debugfs_create()
386 init_waitqueue_head(&debug_data->stats_queue); in smsdvb_debugfs_create()
387 spin_lock_init(&debug_data->lock); in smsdvb_debugfs_create()
388 kref_init(&debug_data->refcount); in smsdvb_debugfs_create()
403 kref_put(&client->debug_data->refcount, smsdvb_debugfs_data_release); in smsdvb_debugfs_release()
405 client->debug_data = NULL; in smsdvb_debugfs_release()