Files
erofs-linux/drivers/comedi/proc.c
T
Greg Kroah-Hartman 8ffdff6a8c staging: comedi: move out of staging directory
The comedi code came into the kernel back in 2008, but traces its
lifetime to much much earlier.  It's been polished and buffed and
there's really nothing preventing it from being part of the "real"
portion of the kernel.

So move it to drivers/comedi/ as it belongs there.

Many thanks to the hundreds of developers who did the work to make this
happen.

Cc: Ian Abbott <[email protected]>
Cc: H Hartley Sweeten <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2021-04-15 09:26:25 +02:00

75 lines
1.7 KiB
C

// SPDX-License-Identifier: GPL-2.0+
/*
* /proc interface for comedi
*
* COMEDI - Linux Control and Measurement Device Interface
* Copyright (C) 1998 David A. Schleef <[email protected]>
*/
/*
* This is some serious bloatware.
*
* Taken from Dave A.'s PCL-711 driver, 'cuz I thought it
* was cool.
*/
#include "comedidev.h"
#include "comedi_internal.h"
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
static int comedi_read(struct seq_file *m, void *v)
{
int i;
int devices_q = 0;
struct comedi_driver *driv;
seq_printf(m, "comedi version " COMEDI_RELEASE "\nformat string: %s\n",
"\"%2d: %-20s %-20s %4d\", i, driver_name, board_name, n_subdevices");
for (i = 0; i < COMEDI_NUM_BOARD_MINORS; i++) {
struct comedi_device *dev = comedi_dev_get_from_minor(i);
if (!dev)
continue;
down_read(&dev->attach_lock);
if (dev->attached) {
devices_q = 1;
seq_printf(m, "%2d: %-20s %-20s %4d\n",
i, dev->driver->driver_name,
dev->board_name, dev->n_subdevices);
}
up_read(&dev->attach_lock);
comedi_dev_put(dev);
}
if (!devices_q)
seq_puts(m, "no devices\n");
mutex_lock(&comedi_drivers_list_lock);
for (driv = comedi_drivers; driv; driv = driv->next) {
seq_printf(m, "%s:\n", driv->driver_name);
for (i = 0; i < driv->num_names; i++)
seq_printf(m, " %s\n",
*(char **)((char *)driv->board_name +
i * driv->offset));
if (!driv->num_names)
seq_printf(m, " %s\n", driv->driver_name);
}
mutex_unlock(&comedi_drivers_list_lock);
return 0;
}
void __init comedi_proc_init(void)
{
if (!proc_create_single("comedi", 0444, NULL, comedi_read))
pr_warn("comedi: unable to create proc entry\n");
}
void comedi_proc_cleanup(void)
{
remove_proc_entry("comedi", NULL);
}