Lines Matching refs:debug_data
49 static void smsdvb_print_dvb_stats(struct smsdvb_debugfs *debug_data, in smsdvb_print_dvb_stats() argument
55 spin_lock(&debug_data->lock); in smsdvb_print_dvb_stats()
56 if (debug_data->stats_count) { in smsdvb_print_dvb_stats()
57 spin_unlock(&debug_data->lock); in smsdvb_print_dvb_stats()
61 buf = debug_data->stats_data; in smsdvb_print_dvb_stats()
147 debug_data->stats_count = n; in smsdvb_print_dvb_stats()
148 spin_unlock(&debug_data->lock); in smsdvb_print_dvb_stats()
149 wake_up(&debug_data->stats_queue); in smsdvb_print_dvb_stats()
152 static void smsdvb_print_isdb_stats(struct smsdvb_debugfs *debug_data, in smsdvb_print_isdb_stats() argument
158 spin_lock(&debug_data->lock); in smsdvb_print_isdb_stats()
159 if (debug_data->stats_count) { in smsdvb_print_isdb_stats()
160 spin_unlock(&debug_data->lock); in smsdvb_print_isdb_stats()
164 buf = debug_data->stats_data; in smsdvb_print_isdb_stats()
237 debug_data->stats_count = n; in smsdvb_print_isdb_stats()
238 spin_unlock(&debug_data->lock); in smsdvb_print_isdb_stats()
239 wake_up(&debug_data->stats_queue); in smsdvb_print_isdb_stats()
242 static void smsdvb_print_isdb_stats_ex(struct smsdvb_debugfs *debug_data, in smsdvb_print_isdb_stats_ex() argument
248 spin_lock(&debug_data->lock); in smsdvb_print_isdb_stats_ex()
249 if (debug_data->stats_count) { in smsdvb_print_isdb_stats_ex()
250 spin_unlock(&debug_data->lock); in smsdvb_print_isdb_stats_ex()
254 buf = debug_data->stats_data; in smsdvb_print_isdb_stats_ex()
330 debug_data->stats_count = n; in smsdvb_print_isdb_stats_ex()
331 spin_unlock(&debug_data->lock); in smsdvb_print_isdb_stats_ex()
333 wake_up(&debug_data->stats_queue); in smsdvb_print_isdb_stats_ex()
339 struct smsdvb_debugfs *debug_data = client->debug_data; in smsdvb_stats_open() local
341 kref_get(&debug_data->refcount); in smsdvb_stats_open()
343 spin_lock(&debug_data->lock); in smsdvb_stats_open()
344 debug_data->stats_count = 0; in smsdvb_stats_open()
345 debug_data->stats_was_read = false; in smsdvb_stats_open()
346 spin_unlock(&debug_data->lock); in smsdvb_stats_open()
348 file->private_data = debug_data; in smsdvb_stats_open()
355 struct smsdvb_debugfs *debug_data; in smsdvb_debugfs_data_release() local
357 debug_data = container_of(ref, struct smsdvb_debugfs, refcount); in smsdvb_debugfs_data_release()
358 kfree(debug_data); in smsdvb_debugfs_data_release()
361 static int smsdvb_stats_wait_read(struct smsdvb_debugfs *debug_data) in smsdvb_stats_wait_read() argument
365 spin_lock(&debug_data->lock); in smsdvb_stats_wait_read()
367 if (debug_data->stats_was_read) in smsdvb_stats_wait_read()
370 rc = debug_data->stats_count; in smsdvb_stats_wait_read()
373 spin_unlock(&debug_data->lock); in smsdvb_stats_wait_read()
379 struct smsdvb_debugfs *debug_data = file->private_data; in smsdvb_stats_poll() local
382 kref_get(&debug_data->refcount); in smsdvb_stats_poll()
384 poll_wait(file, &debug_data->stats_queue, wait); in smsdvb_stats_poll()
386 rc = smsdvb_stats_wait_read(debug_data); in smsdvb_stats_poll()
390 kref_put(&debug_data->refcount, smsdvb_debugfs_data_release); in smsdvb_stats_poll()
399 struct smsdvb_debugfs *debug_data = file->private_data; in smsdvb_stats_read() local
401 kref_get(&debug_data->refcount); in smsdvb_stats_read()
404 rc = smsdvb_stats_wait_read(debug_data); in smsdvb_stats_read()
410 rc = wait_event_interruptible(debug_data->stats_queue, in smsdvb_stats_read()
411 smsdvb_stats_wait_read(debug_data)); in smsdvb_stats_read()
416 if (debug_data->stats_was_read) { in smsdvb_stats_read()
421 len = debug_data->stats_count - *ppos; in smsdvb_stats_read()
424 debug_data->stats_data, len); in smsdvb_stats_read()
428 if (*ppos >= debug_data->stats_count) { in smsdvb_stats_read()
429 spin_lock(&debug_data->lock); in smsdvb_stats_read()
430 debug_data->stats_was_read = true; in smsdvb_stats_read()
431 spin_unlock(&debug_data->lock); in smsdvb_stats_read()
434 kref_put(&debug_data->refcount, smsdvb_debugfs_data_release); in smsdvb_stats_read()
440 struct smsdvb_debugfs *debug_data = file->private_data; in smsdvb_stats_release() local
442 spin_lock(&debug_data->lock); in smsdvb_stats_release()
443 debug_data->stats_was_read = true; /* return EOF to read() */ in smsdvb_stats_release()
444 spin_unlock(&debug_data->lock); in smsdvb_stats_release()
445 wake_up_interruptible_sync(&debug_data->stats_queue); in smsdvb_stats_release()
447 kref_put(&debug_data->refcount, smsdvb_debugfs_data_release); in smsdvb_stats_release()
469 struct smsdvb_debugfs *debug_data; in smsdvb_debugfs_create() local
489 debug_data = kzalloc(sizeof(*client->debug_data), GFP_KERNEL); in smsdvb_debugfs_create()
490 if (!debug_data) in smsdvb_debugfs_create()
493 client->debug_data = debug_data; in smsdvb_debugfs_create()
498 init_waitqueue_head(&debug_data->stats_queue); in smsdvb_debugfs_create()
499 spin_lock_init(&debug_data->lock); in smsdvb_debugfs_create()
500 kref_init(&debug_data->refcount); in smsdvb_debugfs_create()
515 kref_put(&client->debug_data->refcount, smsdvb_debugfs_data_release); in smsdvb_debugfs_release()
517 client->debug_data = NULL; in smsdvb_debugfs_release()