LCOV - code coverage report
Current view: top level - drivers/video/fbdev/core - fb_procfs.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 5 23 21.7 %
Date: 2023-08-24 13:40:31 Functions: 1 6 16.7 %

          Line data    Source code
       1             : // SPDX-License-Identifier: GPL-2.0
       2             : 
       3             : #include <linux/proc_fs.h>
       4             : 
       5             : #include "fb_internal.h"
       6             : 
       7             : static struct proc_dir_entry *fb_proc_dir_entry;
       8             : 
       9           0 : static void *fb_seq_start(struct seq_file *m, loff_t *pos)
      10             : {
      11           0 :         mutex_lock(&registration_lock);
      12             : 
      13           0 :         return (*pos < FB_MAX) ? pos : NULL;
      14             : }
      15             : 
      16           0 : static void fb_seq_stop(struct seq_file *m, void *v)
      17             : {
      18           0 :         mutex_unlock(&registration_lock);
      19           0 : }
      20             : 
      21           0 : static void *fb_seq_next(struct seq_file *m, void *v, loff_t *pos)
      22             : {
      23           0 :         (*pos)++;
      24             : 
      25           0 :         return (*pos < FB_MAX) ? pos : NULL;
      26             : }
      27             : 
      28           0 : static int fb_seq_show(struct seq_file *m, void *v)
      29             : {
      30           0 :         int i = *(loff_t *)v;
      31           0 :         struct fb_info *fi = registered_fb[i];
      32             : 
      33           0 :         if (fi)
      34           0 :                 seq_printf(m, "%d %s\n", fi->node, fi->fix.id);
      35             : 
      36           0 :         return 0;
      37             : }
      38             : 
      39             : static const struct seq_operations __maybe_unused fb_proc_seq_ops = {
      40             :         .start  = fb_seq_start,
      41             :         .stop   = fb_seq_stop,
      42             :         .next   = fb_seq_next,
      43             :         .show   = fb_seq_show,
      44             : };
      45             : 
      46           1 : int fb_init_procfs(void)
      47             : {
      48             :         struct proc_dir_entry *proc;
      49             : 
      50           1 :         proc = proc_create_seq("fb", 0, NULL, &fb_proc_seq_ops);
      51           1 :         if (!proc)
      52             :                 return -ENOMEM;
      53             : 
      54           1 :         fb_proc_dir_entry = proc;
      55             : 
      56           1 :         return 0;
      57             : }
      58             : 
      59           0 : void fb_cleanup_procfs(void)
      60             : {
      61           0 :         proc_remove(fb_proc_dir_entry);
      62           0 : }

Generated by: LCOV version 1.14