Merge branch 'hch.procfs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull procfs updates from Al Viro: "Christoph's proc_create_... cleanups series" * 'hch.procfs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (44 commits) xfs, proc: hide unused xfs procfs helpers isdn/gigaset: add back gigaset_procinfo assignment proc: update SIZEOF_PDE_INLINE_NAME for the new pde fields tty: replace ->proc_fops with ->proc_show ide: replace ->proc_fops with ->proc_show ide: remove ide_driver_proc_write isdn: replace ->proc_fops with ->proc_show atm: switch to proc_create_seq_private atm: simplify procfs code bluetooth: switch to proc_create_seq_data netfilter/x_tables: switch to proc_create_seq_private netfilter/xt_hashlimit: switch to proc_create_{seq,single}_data neigh: switch to proc_create_seq_data hostap: switch to proc_create_{seq,single}_data bonding: switch to proc_create_seq_data rtc/proc: switch to proc_create_single_data drbd: switch to proc_create_single resource: switch to proc_create_seq_data staging/rtl8192u: simplify procfs code jfs: simplify procfs code ...
This commit is contained in:
Коммит
cf626b0da7
|
@ -276,21 +276,9 @@ static int proc_dma_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int proc_dma_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_dma_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_dma_operations = {
|
||||
.open = proc_dma_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __init proc_dma_init(void)
|
||||
{
|
||||
proc_create("dma", 0, NULL, &proc_dma_operations);
|
||||
proc_create_single("dma", 0, NULL, proc_dma_show);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -91,18 +91,6 @@ static int proc_status_show(struct seq_file *m, void *v)
|
|||
seq_printf(m, "Last process:\t\t%d\n", previous_pid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int proc_status_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_status_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations proc_status_fops = {
|
||||
.open = proc_status_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -260,7 +248,8 @@ static int __init swp_emulation_init(void)
|
|||
return 0;
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
if (!proc_create("cpu/swp_emulation", S_IRUGO, NULL, &proc_status_fops))
|
||||
if (!proc_create_single("cpu/swp_emulation", S_IRUGO, NULL,
|
||||
proc_status_show))
|
||||
return -ENOMEM;
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
|
|
|
@ -657,25 +657,13 @@ static int ecard_devices_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ecard_devices_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ecard_devices_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations bus_ecard_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ecard_devices_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static struct proc_dir_entry *proc_bus_ecard_dir = NULL;
|
||||
|
||||
static void ecard_proc_init(void)
|
||||
{
|
||||
proc_bus_ecard_dir = proc_mkdir("bus/ecard", NULL);
|
||||
proc_create("devices", 0, proc_bus_ecard_dir, &bus_ecard_proc_fops);
|
||||
proc_create_single("devices", 0, proc_bus_ecard_dir,
|
||||
ecard_devices_proc_show);
|
||||
}
|
||||
|
||||
#define ec_set_resource(ec,nr,st,sz) \
|
||||
|
|
|
@ -1942,19 +1942,6 @@ static const struct seq_operations ioc_seq_ops = {
|
|||
.show = ioc_show
|
||||
};
|
||||
|
||||
static int
|
||||
ioc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &ioc_seq_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations ioc_fops = {
|
||||
.open = ioc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release
|
||||
};
|
||||
|
||||
static void __init
|
||||
ioc_proc_init(void)
|
||||
{
|
||||
|
@ -1964,7 +1951,7 @@ ioc_proc_init(void)
|
|||
if (!dir)
|
||||
return;
|
||||
|
||||
proc_create(ioc_list->name, 0, dir, &ioc_fops);
|
||||
proc_create_seq(ioc_list->name, 0, dir, &ioc_seq_ops);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -435,19 +435,6 @@ static int rs_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int rs_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, rs_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations rs_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rs_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct tty_operations hp_ops = {
|
||||
.open = rs_open,
|
||||
.close = rs_close,
|
||||
|
@ -462,7 +449,7 @@ static const struct tty_operations hp_ops = {
|
|||
.unthrottle = rs_unthrottle,
|
||||
.send_xchar = rs_send_xchar,
|
||||
.hangup = rs_hangup,
|
||||
.proc_fops = &rs_proc_fops,
|
||||
.proc_show = rs_proc_show,
|
||||
};
|
||||
|
||||
static const struct tty_port_operations hp_port_ops = {
|
||||
|
|
|
@ -920,18 +920,6 @@ static int proc_palinfo_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int proc_palinfo_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_palinfo_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations proc_palinfo_fops = {
|
||||
.open = proc_palinfo_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int palinfo_add_proc(unsigned int cpu)
|
||||
{
|
||||
pal_func_cpu_u_t f;
|
||||
|
@ -948,8 +936,8 @@ static int palinfo_add_proc(unsigned int cpu)
|
|||
|
||||
for (j=0; j < NR_PALINFO_ENTRIES; j++) {
|
||||
f.func_id = j;
|
||||
proc_create_data(palinfo_entries[j].name, 0, cpu_dir,
|
||||
&proc_palinfo_fops, (void *)f.value);
|
||||
proc_create_single_data(palinfo_entries[j].name, 0, cpu_dir,
|
||||
proc_palinfo_show, (void *)f.value);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -5708,13 +5708,6 @@ const struct seq_operations pfm_seq_ops = {
|
|||
.show = pfm_proc_show
|
||||
};
|
||||
|
||||
static int
|
||||
pfm_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &pfm_seq_ops);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* we come here as soon as local_cpu_data->pfm_syst_wide is set. this happens
|
||||
* during pfm_enable() hence before pfm_start(). We cannot assume monitoring
|
||||
|
@ -6537,13 +6530,6 @@ found:
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const struct file_operations pfm_proc_fops = {
|
||||
.open = pfm_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
int __init
|
||||
pfm_init(void)
|
||||
{
|
||||
|
@ -6615,7 +6601,7 @@ pfm_init(void)
|
|||
/*
|
||||
* create /proc/perfmon (mostly for debugging purposes)
|
||||
*/
|
||||
perfmon_dir = proc_create("perfmon", S_IRUGO, NULL, &pfm_proc_fops);
|
||||
perfmon_dir = proc_create_seq("perfmon", S_IRUGO, NULL, &pfm_seq_ops);
|
||||
if (perfmon_dir == NULL) {
|
||||
printk(KERN_ERR "perfmon: cannot create /proc entry, perfmon disabled\n");
|
||||
pmu_conf = NULL;
|
||||
|
|
|
@ -54,8 +54,6 @@ MODULE_AUTHOR("Jesse Barnes <jbarnes@sgi.com>");
|
|||
MODULE_DESCRIPTION("/proc interface to IA-64 SAL features");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
static const struct file_operations proc_salinfo_fops;
|
||||
|
||||
typedef struct {
|
||||
const char *name; /* name of the proc entry */
|
||||
unsigned long feature; /* feature bit */
|
||||
|
@ -578,6 +576,17 @@ static int salinfo_cpu_pre_down(unsigned int cpu)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* 'data' contains an integer that corresponds to the feature we're
|
||||
* testing
|
||||
*/
|
||||
static int proc_salinfo_show(struct seq_file *m, void *v)
|
||||
{
|
||||
unsigned long data = (unsigned long)v;
|
||||
seq_puts(m, (sal_platform_features & data) ? "1\n" : "0\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init
|
||||
salinfo_init(void)
|
||||
{
|
||||
|
@ -593,9 +602,9 @@ salinfo_init(void)
|
|||
|
||||
for (i=0; i < NR_SALINFO_ENTRIES; i++) {
|
||||
/* pass the feature bit in question as misc data */
|
||||
*sdir++ = proc_create_data(salinfo_entries[i].name, 0, salinfo_dir,
|
||||
&proc_salinfo_fops,
|
||||
(void *)salinfo_entries[i].feature);
|
||||
*sdir++ = proc_create_single_data(salinfo_entries[i].name, 0,
|
||||
salinfo_dir, proc_salinfo_show,
|
||||
(void *)salinfo_entries[i].feature);
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(salinfo_log_name); i++) {
|
||||
|
@ -633,27 +642,4 @@ salinfo_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* 'data' contains an integer that corresponds to the feature we're
|
||||
* testing
|
||||
*/
|
||||
static int proc_salinfo_show(struct seq_file *m, void *v)
|
||||
{
|
||||
unsigned long data = (unsigned long)v;
|
||||
seq_puts(m, (sal_platform_features & data) ? "1\n" : "0\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int proc_salinfo_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_salinfo_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations proc_salinfo_fops = {
|
||||
.open = proc_salinfo_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
module_init(salinfo_init);
|
||||
|
|
|
@ -140,18 +140,6 @@ static int proc_fit_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int proc_fit_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_fit_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations proc_fit_fops = {
|
||||
.open = proc_fit_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int proc_version_show(struct seq_file *m, void *v)
|
||||
{
|
||||
unsigned long nasid = (unsigned long)m->private;
|
||||
|
@ -174,18 +162,6 @@ static int proc_version_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int proc_version_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_version_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations proc_version_fops = {
|
||||
.open = proc_version_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/* module entry points */
|
||||
int __init prominfo_init(void);
|
||||
void __exit prominfo_exit(void);
|
||||
|
@ -217,10 +193,10 @@ int __init prominfo_init(void)
|
|||
if (!dir)
|
||||
continue;
|
||||
nasid = cnodeid_to_nasid(cnodeid);
|
||||
proc_create_data("fit", 0, dir,
|
||||
&proc_fit_fops, (void *)nasid);
|
||||
proc_create_data("version", 0, dir,
|
||||
&proc_version_fops, (void *)nasid);
|
||||
proc_create_single_data("fit", 0, dir, proc_fit_show,
|
||||
(void *)nasid);
|
||||
proc_create_single_data("version", 0, dir, proc_version_show,
|
||||
(void *)nasid);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -18,33 +18,18 @@ static int partition_id_show(struct seq_file *s, void *p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int partition_id_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, partition_id_show, NULL);
|
||||
}
|
||||
|
||||
static int system_serial_number_show(struct seq_file *s, void *p)
|
||||
{
|
||||
seq_printf(s, "%s\n", sn_system_serial_number());
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int system_serial_number_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, system_serial_number_show, NULL);
|
||||
}
|
||||
|
||||
static int licenseID_show(struct seq_file *s, void *p)
|
||||
{
|
||||
seq_printf(s, "0x%llx\n", sn_partition_serial_number_val());
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int licenseID_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, licenseID_show, NULL);
|
||||
}
|
||||
|
||||
static int coherence_id_show(struct seq_file *s, void *p)
|
||||
{
|
||||
seq_printf(s, "%d\n", partition_coherence_id());
|
||||
|
@ -52,43 +37,10 @@ static int coherence_id_show(struct seq_file *s, void *p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int coherence_id_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, coherence_id_show, NULL);
|
||||
}
|
||||
|
||||
/* /proc/sgi_sn/sn_topology uses seq_file, see sn_hwperf.c */
|
||||
extern int sn_topology_open(struct inode *, struct file *);
|
||||
extern int sn_topology_release(struct inode *, struct file *);
|
||||
|
||||
static const struct file_operations proc_partition_id_fops = {
|
||||
.open = partition_id_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct file_operations proc_system_sn_fops = {
|
||||
.open = system_serial_number_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct file_operations proc_license_id_fops = {
|
||||
.open = licenseID_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct file_operations proc_coherence_id_fops = {
|
||||
.open = coherence_id_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct file_operations proc_sn_topo_fops = {
|
||||
.open = sn_topology_open,
|
||||
.read = seq_read,
|
||||
|
@ -104,13 +56,13 @@ void register_sn_procfs(void)
|
|||
if (!(sgi_proc_dir = proc_mkdir("sgi_sn", NULL)))
|
||||
return;
|
||||
|
||||
proc_create("partition_id", 0444, sgi_proc_dir,
|
||||
&proc_partition_id_fops);
|
||||
proc_create("system_serial_number", 0444, sgi_proc_dir,
|
||||
&proc_system_sn_fops);
|
||||
proc_create("licenseID", 0444, sgi_proc_dir, &proc_license_id_fops);
|
||||
proc_create("coherence_id", 0444, sgi_proc_dir,
|
||||
&proc_coherence_id_fops);
|
||||
proc_create_single("partition_id", 0444, sgi_proc_dir,
|
||||
partition_id_show);
|
||||
proc_create_single("system_serial_number", 0444, sgi_proc_dir,
|
||||
system_serial_number_show);
|
||||
proc_create_single("licenseID", 0444, sgi_proc_dir, licenseID_show);
|
||||
proc_create_single("coherence_id", 0444, sgi_proc_dir,
|
||||
coherence_id_show);
|
||||
proc_create("sn_topology", 0444, sgi_proc_dir, &proc_sn_topo_fops);
|
||||
}
|
||||
|
||||
|
|
|
@ -527,21 +527,9 @@ static int hardware_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int hardware_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, hardware_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations hardware_proc_fops = {
|
||||
.open = hardware_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __init proc_hardware_init(void)
|
||||
{
|
||||
proc_create("hardware", 0, NULL, &hardware_proc_fops);
|
||||
proc_create_single("hardware", 0, NULL, hardware_proc_show);
|
||||
return 0;
|
||||
}
|
||||
module_init(proc_hardware_init);
|
||||
|
|
|
@ -83,18 +83,6 @@ static int show_msp_pci_counts(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int msp_pci_rd_cnt_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, show_msp_pci_counts, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations msp_pci_rd_cnt_fops = {
|
||||
.open = msp_pci_rd_cnt_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: gen_pci_cfg_wr_show
|
||||
|
@ -160,18 +148,6 @@ static int gen_pci_cfg_wr_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int gen_pci_cfg_wr_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, gen_pci_cfg_wr_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations gen_pci_cfg_wr_fops = {
|
||||
.open = gen_pci_cfg_wr_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: pci_proc_init
|
||||
|
@ -188,8 +164,8 @@ static const struct file_operations gen_pci_cfg_wr_fops = {
|
|||
****************************************************************************/
|
||||
static void pci_proc_init(void)
|
||||
{
|
||||
proc_create("pmc_msp_pci_rd_cnt", 0, NULL, &msp_pci_rd_cnt_fops);
|
||||
proc_create("pmc_msp_pci_cfg_wr", 0, NULL, &gen_pci_cfg_wr_fops);
|
||||
proc_create_single("pmc_msp_pci_rd_cnt", 0, NULL, show_msp_pci_counts);
|
||||
proc_create_single("pmc_msp_pci_cfg_wr", 0, NULL, gen_pci_cfg_wr_show);
|
||||
}
|
||||
#endif /* CONFIG_PROC_FS && PCI_COUNTERS */
|
||||
|
||||
|
|
|
@ -142,24 +142,12 @@ static int bw_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int bw_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, bw_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations bw_proc_fops = {
|
||||
.open = bw_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static void create_proc_decoder(struct bw_stats_struct *stats)
|
||||
{
|
||||
struct proc_dir_entry *ent;
|
||||
|
||||
ent = proc_create_data("bus_watcher", S_IWUSR | S_IRUGO, NULL,
|
||||
&bw_proc_fops, stats);
|
||||
ent = proc_create_single_data("bus_watcher", S_IWUSR | S_IRUGO, NULL,
|
||||
bw_proc_show, stats);
|
||||
if (!ent) {
|
||||
printk(KERN_INFO "Unable to initialize bus_watcher /proc entry\n");
|
||||
return;
|
||||
|
|
|
@ -367,19 +367,6 @@ static int proc_pcxl_dma_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int proc_pcxl_dma_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_pcxl_dma_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_pcxl_dma_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = proc_pcxl_dma_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __init
|
||||
pcxl_dma_init(void)
|
||||
{
|
||||
|
@ -397,8 +384,8 @@ pcxl_dma_init(void)
|
|||
"pcxl_dma_init: Unable to create gsc /proc dir entry\n");
|
||||
else {
|
||||
struct proc_dir_entry* ent;
|
||||
ent = proc_create("pcxl_dma", 0, proc_gsc_root,
|
||||
&proc_pcxl_dma_ops);
|
||||
ent = proc_create_single("pcxl_dma", 0, proc_gsc_root,
|
||||
proc_pcxl_dma_show);
|
||||
if (!ent)
|
||||
printk(KERN_WARNING
|
||||
"pci-dma.c: Unable to create pcxl_dma /proc entry.\n");
|
||||
|
|
|
@ -266,18 +266,6 @@ static int pdc_chassis_warn_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int pdc_chassis_warn_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, pdc_chassis_warn_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations pdc_chassis_warn_fops = {
|
||||
.open = pdc_chassis_warn_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __init pdc_chassis_create_procfs(void)
|
||||
{
|
||||
unsigned long test;
|
||||
|
@ -292,7 +280,7 @@ static int __init pdc_chassis_create_procfs(void)
|
|||
|
||||
printk(KERN_INFO "Enabling PDC chassis warnings support v%s\n",
|
||||
PDC_CHASSIS_VER);
|
||||
proc_create("chassis", 0400, NULL, &pdc_chassis_warn_fops);
|
||||
proc_create_single("chassis", 0400, NULL, pdc_chassis_warn_show);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1775,18 +1775,6 @@ static int proc_eeh_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int proc_eeh_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_eeh_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_eeh_operations = {
|
||||
.open = proc_eeh_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
static int eeh_enable_dbgfs_set(void *data, u64 val)
|
||||
{
|
||||
|
@ -1828,7 +1816,7 @@ DEFINE_SIMPLE_ATTRIBUTE(eeh_freeze_dbgfs_ops, eeh_freeze_dbgfs_get,
|
|||
static int __init eeh_init_proc(void)
|
||||
{
|
||||
if (machine_is(pseries) || machine_is(powernv)) {
|
||||
proc_create("powerpc/eeh", 0, NULL, &proc_eeh_operations);
|
||||
proc_create_single("powerpc/eeh", 0, NULL, proc_eeh_show);
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
debugfs_create_file("eeh_enable", 0600,
|
||||
powerpc_debugfs_root, NULL,
|
||||
|
|
|
@ -154,18 +154,6 @@ static ssize_t ppc_rtas_tone_volume_write(struct file *file,
|
|||
static int ppc_rtas_tone_volume_show(struct seq_file *m, void *v);
|
||||
static int ppc_rtas_rmo_buf_show(struct seq_file *m, void *v);
|
||||
|
||||
static int sensors_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ppc_rtas_sensors_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations ppc_rtas_sensors_operations = {
|
||||
.open = sensors_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int poweron_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ppc_rtas_poweron_show, NULL);
|
||||
|
@ -231,18 +219,6 @@ static const struct file_operations ppc_rtas_tone_volume_operations = {
|
|||
.release = single_release,
|
||||
};
|
||||
|
||||
static int rmo_buf_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ppc_rtas_rmo_buf_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations ppc_rtas_rmo_buf_ops = {
|
||||
.open = rmo_buf_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ppc_rtas_find_all_sensors(void);
|
||||
static void ppc_rtas_process_sensor(struct seq_file *m,
|
||||
struct individual_sensor *s, int state, int error, const char *loc);
|
||||
|
@ -267,14 +243,14 @@ static int __init proc_rtas_init(void)
|
|||
&ppc_rtas_clock_operations);
|
||||
proc_create("powerpc/rtas/poweron", 0644, NULL,
|
||||
&ppc_rtas_poweron_operations);
|
||||
proc_create("powerpc/rtas/sensors", 0444, NULL,
|
||||
&ppc_rtas_sensors_operations);
|
||||
proc_create_single("powerpc/rtas/sensors", 0444, NULL,
|
||||
ppc_rtas_sensors_show);
|
||||
proc_create("powerpc/rtas/frequency", 0644, NULL,
|
||||
&ppc_rtas_tone_freq_operations);
|
||||
proc_create("powerpc/rtas/volume", 0644, NULL,
|
||||
&ppc_rtas_tone_volume_operations);
|
||||
proc_create("powerpc/rtas/rmo_buffer", 0400, NULL,
|
||||
&ppc_rtas_rmo_buf_ops);
|
||||
proc_create_single("powerpc/rtas/rmo_buffer", 0400, NULL,
|
||||
ppc_rtas_rmo_buf_show);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1095,18 +1095,6 @@ static int show_spu_loadavg(struct seq_file *s, void *private)
|
|||
atomic_read(&nr_spu_contexts),
|
||||
idr_get_cursor(&task_active_pid_ns(current)->idr) - 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int spu_loadavg_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, show_spu_loadavg, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations spu_loadavg_fops = {
|
||||
.open = spu_loadavg_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
int __init spu_sched_init(void)
|
||||
|
@ -1135,7 +1123,7 @@ int __init spu_sched_init(void)
|
|||
|
||||
mod_timer(&spuloadavg_timer, 0);
|
||||
|
||||
entry = proc_create("spu_loadavg", 0, NULL, &spu_loadavg_fops);
|
||||
entry = proc_create_single("spu_loadavg", 0, NULL, show_spu_loadavg);
|
||||
if (!entry)
|
||||
goto out_stop_kthread;
|
||||
|
||||
|
|
|
@ -294,21 +294,9 @@ static int sysinfo_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int sysinfo_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, sysinfo_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations sysinfo_fops = {
|
||||
.open = sysinfo_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __init sysinfo_create_proc(void)
|
||||
{
|
||||
proc_create("sysinfo", 0444, NULL, &sysinfo_fops);
|
||||
proc_create_single("sysinfo", 0444, NULL, sysinfo_show);
|
||||
return 0;
|
||||
}
|
||||
device_initcall(sysinfo_create_proc);
|
||||
|
@ -386,18 +374,6 @@ static const struct seq_operations service_level_seq_ops = {
|
|||
.show = service_level_show
|
||||
};
|
||||
|
||||
static int service_level_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &service_level_seq_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations service_level_ops = {
|
||||
.open = service_level_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release
|
||||
};
|
||||
|
||||
static void service_level_vm_print(struct seq_file *m,
|
||||
struct service_level *slr)
|
||||
{
|
||||
|
@ -420,7 +396,7 @@ static struct service_level service_level_vm = {
|
|||
|
||||
static __init int create_proc_service_level(void)
|
||||
{
|
||||
proc_create("service_levels", 0, NULL, &service_level_ops);
|
||||
proc_create_seq("service_levels", 0, NULL, &service_level_seq_ops);
|
||||
if (MACHINE_IS_VM)
|
||||
register_service_level(&service_level_vm);
|
||||
return 0;
|
||||
|
|
|
@ -339,18 +339,6 @@ static int dma_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int dma_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, dma_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations dma_proc_fops = {
|
||||
.open = dma_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
int register_dmac(struct dma_info *info)
|
||||
{
|
||||
unsigned int total_channels, i;
|
||||
|
@ -423,7 +411,7 @@ EXPORT_SYMBOL(unregister_dmac);
|
|||
static int __init dma_api_init(void)
|
||||
{
|
||||
printk(KERN_NOTICE "DMA: Registering DMA API.\n");
|
||||
return proc_create("dma", 0, NULL, &dma_proc_fops) ? 0 : -ENOMEM;
|
||||
return proc_create_single("dma", 0, NULL, dma_proc_show) ? 0 : -ENOMEM;
|
||||
}
|
||||
subsys_initcall(dma_api_init);
|
||||
|
||||
|
|
|
@ -678,25 +678,14 @@ static int sparc_io_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sparc_io_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, sparc_io_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations sparc_io_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = sparc_io_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
static void register_proc_sparc_ioport(void)
|
||||
{
|
||||
#ifdef CONFIG_PROC_FS
|
||||
proc_create_data("io_map", 0, NULL, &sparc_io_proc_fops, &sparc_iomap);
|
||||
proc_create_data("dvma_map", 0, NULL, &sparc_io_proc_fops, &_sparc_dvma);
|
||||
proc_create_single_data("io_map", 0, NULL, sparc_io_proc_show,
|
||||
&sparc_iomap);
|
||||
proc_create_single_data("dvma_map", 0, NULL, sparc_io_proc_show,
|
||||
&_sparc_dvma);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -208,19 +208,6 @@ static int fake_ide_media_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int fake_ide_media_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, fake_ide_media_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations fake_ide_media_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = fake_ide_media_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static void make_ide_entries(const char *dev_name)
|
||||
{
|
||||
struct proc_dir_entry *dir, *ent;
|
||||
|
@ -231,7 +218,8 @@ static void make_ide_entries(const char *dev_name)
|
|||
dir = proc_mkdir(dev_name, proc_ide);
|
||||
if(!dir) return;
|
||||
|
||||
ent = proc_create("media", S_IRUGO, dir, &fake_ide_media_proc_fops);
|
||||
ent = proc_create_single("media", S_IRUGO, dir,
|
||||
fake_ide_media_proc_show);
|
||||
if(!ent) return;
|
||||
snprintf(name, sizeof(name), "ide0/%s", dev_name);
|
||||
proc_symlink(dev_name, proc_ide_root, name);
|
||||
|
|
|
@ -1715,19 +1715,6 @@ static int proc_apm_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int proc_apm_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_apm_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations apm_file_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = proc_apm_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int apm(void *unused)
|
||||
{
|
||||
unsigned short bx;
|
||||
|
@ -2360,7 +2347,7 @@ static int __init apm_init(void)
|
|||
set_desc_base(&gdt[APM_DS >> 3],
|
||||
(unsigned long)__va((unsigned long)apm_info.bios.dseg << 4));
|
||||
|
||||
proc_create("apm", 0, NULL, &apm_file_ops);
|
||||
proc_create_single("apm", 0, NULL, proc_apm_show);
|
||||
|
||||
kapmd_task = kthread_create(apm, NULL, "kapmd");
|
||||
if (IS_ERR(kapmd_task)) {
|
||||
|
|
|
@ -153,19 +153,6 @@ static int rs_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int rs_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, rs_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations rs_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rs_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct tty_operations serial_ops = {
|
||||
.open = rs_open,
|
||||
.close = rs_close,
|
||||
|
@ -176,7 +163,7 @@ static const struct tty_operations serial_ops = {
|
|||
.chars_in_buffer = rs_chars_in_buffer,
|
||||
.hangup = rs_hangup,
|
||||
.wait_until_sent = rs_wait_until_sent,
|
||||
.proc_fops = &rs_proc_fops,
|
||||
.proc_show = rs_proc_show,
|
||||
};
|
||||
|
||||
int __init rs_init(void)
|
||||
|
|
|
@ -1027,18 +1027,6 @@ static const struct seq_operations partitions_op = {
|
|||
.stop = disk_seqf_stop,
|
||||
.show = show_partition
|
||||
};
|
||||
|
||||
static int partitions_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &partitions_op);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_partitions_operations = {
|
||||
.open = partitions_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -1374,22 +1362,10 @@ static const struct seq_operations diskstats_op = {
|
|||
.show = diskstats_show
|
||||
};
|
||||
|
||||
static int diskstats_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &diskstats_op);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_diskstats_operations = {
|
||||
.open = diskstats_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static int __init proc_genhd_init(void)
|
||||
{
|
||||
proc_create("diskstats", 0, NULL, &proc_diskstats_operations);
|
||||
proc_create("partitions", 0, NULL, &proc_partitions_operations);
|
||||
proc_create_seq("diskstats", 0, NULL, &diskstats_op);
|
||||
proc_create_seq("partitions", 0, NULL, &partitions_op);
|
||||
return 0;
|
||||
}
|
||||
module_init(proc_genhd_init);
|
||||
|
|
|
@ -94,21 +94,9 @@ static const struct seq_operations crypto_seq_ops = {
|
|||
.show = c_show
|
||||
};
|
||||
|
||||
static int crypto_info_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &crypto_seq_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_crypto_ops = {
|
||||
.open = crypto_info_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release
|
||||
};
|
||||
|
||||
void __init crypto_init_proc(void)
|
||||
{
|
||||
proc_create("crypto", 0, NULL, &proc_crypto_ops);
|
||||
proc_create_seq("crypto", 0, NULL, &crypto_seq_ops);
|
||||
}
|
||||
|
||||
void __exit crypto_exit_proc(void)
|
||||
|
|
|
@ -82,7 +82,6 @@ static SIMPLE_DEV_PM_OPS(acpi_ac_pm, NULL, acpi_ac_resume);
|
|||
#ifdef CONFIG_ACPI_PROCFS_POWER
|
||||
extern struct proc_dir_entry *acpi_lock_ac_dir(void);
|
||||
extern void *acpi_unlock_ac_dir(struct proc_dir_entry *acpi_ac_dir);
|
||||
static int acpi_ac_open_fs(struct inode *inode, struct file *file);
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -111,16 +110,6 @@ struct acpi_ac {
|
|||
|
||||
#define to_acpi_ac(x) power_supply_get_drvdata(x)
|
||||
|
||||
#ifdef CONFIG_ACPI_PROCFS_POWER
|
||||
static const struct file_operations acpi_ac_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = acpi_ac_open_fs,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
/* --------------------------------------------------------------------------
|
||||
AC Adapter Management
|
||||
-------------------------------------------------------------------------- */
|
||||
|
@ -209,11 +198,6 @@ static int acpi_ac_seq_show(struct seq_file *seq, void *offset)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int acpi_ac_open_fs(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, acpi_ac_seq_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static int acpi_ac_add_fs(struct acpi_ac *ac)
|
||||
{
|
||||
struct proc_dir_entry *entry = NULL;
|
||||
|
@ -228,9 +212,8 @@ static int acpi_ac_add_fs(struct acpi_ac *ac)
|
|||
}
|
||||
|
||||
/* 'state' [R] */
|
||||
entry = proc_create_data(ACPI_AC_FILE_STATE,
|
||||
S_IRUGO, acpi_device_dir(ac->device),
|
||||
&acpi_ac_fops, ac);
|
||||
entry = proc_create_single_data(ACPI_AC_FILE_STATE, S_IRUGO,
|
||||
acpi_device_dir(ac->device), acpi_ac_seq_show, ac);
|
||||
if (!entry)
|
||||
return -ENODEV;
|
||||
return 0;
|
||||
|
|
|
@ -81,14 +81,6 @@ MODULE_PARM_DESC(cache_time, "cache time in milliseconds");
|
|||
#ifdef CONFIG_ACPI_PROCFS_POWER
|
||||
extern struct proc_dir_entry *acpi_lock_battery_dir(void);
|
||||
extern void *acpi_unlock_battery_dir(struct proc_dir_entry *acpi_battery_dir);
|
||||
|
||||
enum acpi_battery_files {
|
||||
info_tag = 0,
|
||||
state_tag,
|
||||
alarm_tag,
|
||||
ACPI_BATTERY_NUMFILES,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
static const struct acpi_device_id battery_device_ids[] = {
|
||||
|
@ -985,9 +977,10 @@ static const char *acpi_battery_units(const struct acpi_battery *battery)
|
|||
"mA" : "mW";
|
||||
}
|
||||
|
||||
static int acpi_battery_print_info(struct seq_file *seq, int result)
|
||||
static int acpi_battery_info_proc_show(struct seq_file *seq, void *offset)
|
||||
{
|
||||
struct acpi_battery *battery = seq->private;
|
||||
int result = acpi_battery_update(battery, false);
|
||||
|
||||
if (result)
|
||||
goto end;
|
||||
|
@ -1041,9 +1034,10 @@ static int acpi_battery_print_info(struct seq_file *seq, int result)
|
|||
return result;
|
||||
}
|
||||
|
||||
static int acpi_battery_print_state(struct seq_file *seq, int result)
|
||||
static int acpi_battery_state_proc_show(struct seq_file *seq, void *offset)
|
||||
{
|
||||
struct acpi_battery *battery = seq->private;
|
||||
int result = acpi_battery_update(battery, false);
|
||||
|
||||
if (result)
|
||||
goto end;
|
||||
|
@ -1088,9 +1082,10 @@ static int acpi_battery_print_state(struct seq_file *seq, int result)
|
|||
return result;
|
||||
}
|
||||
|
||||
static int acpi_battery_print_alarm(struct seq_file *seq, int result)
|
||||
static int acpi_battery_alarm_proc_show(struct seq_file *seq, void *offset)
|
||||
{
|
||||
struct acpi_battery *battery = seq->private;
|
||||
int result = acpi_battery_update(battery, false);
|
||||
|
||||
if (result)
|
||||
goto end;
|
||||
|
@ -1142,82 +1137,22 @@ static ssize_t acpi_battery_write_alarm(struct file *file,
|
|||
return result;
|
||||
}
|
||||
|
||||
typedef int(*print_func)(struct seq_file *seq, int result);
|
||||
|
||||
static print_func acpi_print_funcs[ACPI_BATTERY_NUMFILES] = {
|
||||
acpi_battery_print_info,
|
||||
acpi_battery_print_state,
|
||||
acpi_battery_print_alarm,
|
||||
};
|
||||
|
||||
static int acpi_battery_read(int fid, struct seq_file *seq)
|
||||
static int acpi_battery_alarm_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct acpi_battery *battery = seq->private;
|
||||
int result = acpi_battery_update(battery, false);
|
||||
return acpi_print_funcs[fid](seq, result);
|
||||
return single_open(file, acpi_battery_alarm_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
#define DECLARE_FILE_FUNCTIONS(_name) \
|
||||
static int acpi_battery_read_##_name(struct seq_file *seq, void *offset) \
|
||||
{ \
|
||||
return acpi_battery_read(_name##_tag, seq); \
|
||||
} \
|
||||
static int acpi_battery_##_name##_open_fs(struct inode *inode, struct file *file) \
|
||||
{ \
|
||||
return single_open(file, acpi_battery_read_##_name, PDE_DATA(inode)); \
|
||||
}
|
||||
|
||||
DECLARE_FILE_FUNCTIONS(info);
|
||||
DECLARE_FILE_FUNCTIONS(state);
|
||||
DECLARE_FILE_FUNCTIONS(alarm);
|
||||
|
||||
#undef DECLARE_FILE_FUNCTIONS
|
||||
|
||||
#define FILE_DESCRIPTION_RO(_name) \
|
||||
{ \
|
||||
.name = __stringify(_name), \
|
||||
.mode = S_IRUGO, \
|
||||
.ops = { \
|
||||
.open = acpi_battery_##_name##_open_fs, \
|
||||
.read = seq_read, \
|
||||
.llseek = seq_lseek, \
|
||||
.release = single_release, \
|
||||
.owner = THIS_MODULE, \
|
||||
}, \
|
||||
}
|
||||
|
||||
#define FILE_DESCRIPTION_RW(_name) \
|
||||
{ \
|
||||
.name = __stringify(_name), \
|
||||
.mode = S_IFREG | S_IRUGO | S_IWUSR, \
|
||||
.ops = { \
|
||||
.open = acpi_battery_##_name##_open_fs, \
|
||||
.read = seq_read, \
|
||||
.llseek = seq_lseek, \
|
||||
.write = acpi_battery_write_##_name, \
|
||||
.release = single_release, \
|
||||
.owner = THIS_MODULE, \
|
||||
}, \
|
||||
}
|
||||
|
||||
static const struct battery_file {
|
||||
struct file_operations ops;
|
||||
umode_t mode;
|
||||
const char *name;
|
||||
} acpi_battery_file[] = {
|
||||
FILE_DESCRIPTION_RO(info),
|
||||
FILE_DESCRIPTION_RO(state),
|
||||
FILE_DESCRIPTION_RW(alarm),
|
||||
static const struct file_operations acpi_battery_alarm_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = acpi_battery_alarm_proc_open,
|
||||
.read = seq_read,
|
||||
.write = acpi_battery_write_alarm,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
#undef FILE_DESCRIPTION_RO
|
||||
#undef FILE_DESCRIPTION_RW
|
||||
|
||||
static int acpi_battery_add_fs(struct acpi_device *device)
|
||||
{
|
||||
struct proc_dir_entry *entry = NULL;
|
||||
int i;
|
||||
|
||||
printk(KERN_WARNING PREFIX "Deprecated procfs I/F for battery is loaded,"
|
||||
" please retry with CONFIG_ACPI_PROCFS_POWER cleared\n");
|
||||
if (!acpi_device_dir(device)) {
|
||||
|
@ -1227,28 +1162,24 @@ static int acpi_battery_add_fs(struct acpi_device *device)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
for (i = 0; i < ACPI_BATTERY_NUMFILES; ++i) {
|
||||
entry = proc_create_data(acpi_battery_file[i].name,
|
||||
acpi_battery_file[i].mode,
|
||||
acpi_device_dir(device),
|
||||
&acpi_battery_file[i].ops,
|
||||
acpi_driver_data(device));
|
||||
if (!entry)
|
||||
return -ENODEV;
|
||||
}
|
||||
if (!proc_create_single_data("info", S_IRUGO, acpi_device_dir(device),
|
||||
acpi_battery_info_proc_show, acpi_driver_data(device)))
|
||||
return -ENODEV;
|
||||
if (!proc_create_single_data("state", S_IRUGO, acpi_device_dir(device),
|
||||
acpi_battery_state_proc_show, acpi_driver_data(device)))
|
||||
return -ENODEV;
|
||||
if (!proc_create_data("alarm", S_IFREG | S_IRUGO | S_IWUSR,
|
||||
acpi_device_dir(device), &acpi_battery_alarm_fops,
|
||||
acpi_driver_data(device)))
|
||||
return -ENODEV;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void acpi_battery_remove_fs(struct acpi_device *device)
|
||||
{
|
||||
int i;
|
||||
if (!acpi_device_dir(device))
|
||||
return;
|
||||
for (i = 0; i < ACPI_BATTERY_NUMFILES; ++i)
|
||||
remove_proc_entry(acpi_battery_file[i].name,
|
||||
acpi_device_dir(device));
|
||||
|
||||
remove_proc_entry(acpi_device_bid(device), acpi_battery_dir);
|
||||
remove_proc_subtree(acpi_device_bid(device), acpi_battery_dir);
|
||||
acpi_device_dir(device) = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -263,19 +263,6 @@ static int acpi_button_state_seq_show(struct seq_file *seq, void *offset)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int acpi_button_state_open_fs(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, acpi_button_state_seq_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations acpi_button_state_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = acpi_button_state_open_fs,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int acpi_button_add_fs(struct acpi_device *device)
|
||||
{
|
||||
struct acpi_button *button = acpi_driver_data(device);
|
||||
|
@ -311,9 +298,9 @@ static int acpi_button_add_fs(struct acpi_device *device)
|
|||
}
|
||||
|
||||
/* create /proc/acpi/button/lid/LID/state */
|
||||
entry = proc_create_data(ACPI_BUTTON_FILE_STATE,
|
||||
S_IRUGO, acpi_device_dir(device),
|
||||
&acpi_button_state_fops, device);
|
||||
entry = proc_create_single_data(ACPI_BUTTON_FILE_STATE, S_IRUGO,
|
||||
acpi_device_dir(device), acpi_button_state_seq_show,
|
||||
device);
|
||||
if (!entry) {
|
||||
ret = -ENODEV;
|
||||
goto remove_dev_dir;
|
||||
|
|
|
@ -6446,19 +6446,6 @@ static int dac960_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int dac960_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, dac960_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations dac960_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = dac960_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int dac960_initial_status_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
DAC960_Controller_T *Controller = (DAC960_Controller_T *)m->private;
|
||||
|
@ -6466,19 +6453,6 @@ static int dac960_initial_status_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int dac960_initial_status_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, dac960_initial_status_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations dac960_initial_status_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = dac960_initial_status_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int dac960_current_status_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
DAC960_Controller_T *Controller = (DAC960_Controller_T *) m->private;
|
||||
|
@ -6512,19 +6486,6 @@ static int dac960_current_status_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int dac960_current_status_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, dac960_current_status_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations dac960_current_status_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = dac960_current_status_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int dac960_user_command_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
DAC960_Controller_T *Controller = (DAC960_Controller_T *)m->private;
|
||||
|
@ -6579,16 +6540,18 @@ static void DAC960_CreateProcEntries(DAC960_Controller_T *Controller)
|
|||
|
||||
if (DAC960_ProcDirectoryEntry == NULL) {
|
||||
DAC960_ProcDirectoryEntry = proc_mkdir("rd", NULL);
|
||||
proc_create("status", 0, DAC960_ProcDirectoryEntry,
|
||||
&dac960_proc_fops);
|
||||
proc_create_single("status", 0, DAC960_ProcDirectoryEntry,
|
||||
dac960_proc_show);
|
||||
}
|
||||
|
||||
snprintf(Controller->ControllerName, sizeof(Controller->ControllerName),
|
||||
"c%d", Controller->ControllerNumber);
|
||||
ControllerProcEntry = proc_mkdir(Controller->ControllerName,
|
||||
DAC960_ProcDirectoryEntry);
|
||||
proc_create_data("initial_status", 0, ControllerProcEntry, &dac960_initial_status_proc_fops, Controller);
|
||||
proc_create_data("current_status", 0, ControllerProcEntry, &dac960_current_status_proc_fops, Controller);
|
||||
proc_create_single_data("initial_status", 0, ControllerProcEntry,
|
||||
dac960_initial_status_proc_show, Controller);
|
||||
proc_create_single_data("current_status", 0, ControllerProcEntry,
|
||||
dac960_current_status_proc_show, Controller);
|
||||
proc_create_data("user_command", 0600, ControllerProcEntry, &dac960_user_command_proc_fops, Controller);
|
||||
Controller->ControllerProcEntry = ControllerProcEntry;
|
||||
}
|
||||
|
|
|
@ -1643,7 +1643,7 @@ void drbd_bump_write_ordering(struct drbd_resource *resource, struct drbd_backin
|
|||
|
||||
/* drbd_proc.c */
|
||||
extern struct proc_dir_entry *drbd_proc;
|
||||
extern const struct file_operations drbd_proc_fops;
|
||||
int drbd_seq_show(struct seq_file *seq, void *v);
|
||||
|
||||
/* drbd_actlog.c */
|
||||
extern bool drbd_al_begin_io_prepare(struct drbd_device *device, struct drbd_interval *i);
|
||||
|
|
|
@ -2989,7 +2989,7 @@ static int __init drbd_init(void)
|
|||
goto fail;
|
||||
|
||||
err = -ENOMEM;
|
||||
drbd_proc = proc_create_data("drbd", S_IFREG | 0444 , NULL, &drbd_proc_fops, NULL);
|
||||
drbd_proc = proc_create_single("drbd", S_IFREG | 0444 , NULL, drbd_seq_show);
|
||||
if (!drbd_proc) {
|
||||
pr_err("unable to register proc file\n");
|
||||
goto fail;
|
||||
|
|
|
@ -33,18 +33,7 @@
|
|||
#include <linux/drbd.h>
|
||||
#include "drbd_int.h"
|
||||
|
||||
static int drbd_proc_open(struct inode *inode, struct file *file);
|
||||
static int drbd_proc_release(struct inode *inode, struct file *file);
|
||||
|
||||
|
||||
struct proc_dir_entry *drbd_proc;
|
||||
const struct file_operations drbd_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = drbd_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = drbd_proc_release,
|
||||
};
|
||||
|
||||
static void seq_printf_with_thousands_grouping(struct seq_file *seq, long v)
|
||||
{
|
||||
|
@ -235,7 +224,7 @@ static void drbd_syncer_progress(struct drbd_device *device, struct seq_file *se
|
|||
}
|
||||
}
|
||||
|
||||
static int drbd_seq_show(struct seq_file *seq, void *v)
|
||||
int drbd_seq_show(struct seq_file *seq, void *v)
|
||||
{
|
||||
int i, prev_i = -1;
|
||||
const char *sn;
|
||||
|
@ -345,24 +334,3 @@ static int drbd_seq_show(struct seq_file *seq, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int drbd_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (try_module_get(THIS_MODULE)) {
|
||||
err = single_open(file, drbd_seq_show, NULL);
|
||||
if (err)
|
||||
module_put(THIS_MODULE);
|
||||
return err;
|
||||
}
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static int drbd_proc_release(struct inode *inode, struct file *file)
|
||||
{
|
||||
module_put(THIS_MODULE);
|
||||
return single_release(inode, file);
|
||||
}
|
||||
|
||||
/* PROC FS stuff end */
|
||||
|
|
|
@ -2538,18 +2538,6 @@ static int pkt_seq_show(struct seq_file *m, void *p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int pkt_seq_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, pkt_seq_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations pkt_proc_fops = {
|
||||
.open = pkt_seq_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release
|
||||
};
|
||||
|
||||
static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)
|
||||
{
|
||||
int i;
|
||||
|
@ -2604,7 +2592,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)
|
|||
goto out_mem;
|
||||
}
|
||||
|
||||
proc_create_data(pd->name, 0, pkt_proc, &pkt_proc_fops, pd);
|
||||
proc_create_single_data(pd->name, 0, pkt_proc, pkt_seq_show, pd);
|
||||
pkt_dbg(1, pd, "writer mapped to %s\n", bdevname(bdev, b));
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -521,26 +521,13 @@ static int ps3vram_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ps3vram_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ps3vram_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ps3vram_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ps3vram_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static void ps3vram_proc_init(struct ps3_system_bus_device *dev)
|
||||
{
|
||||
struct ps3vram_priv *priv = ps3_system_bus_get_drvdata(dev);
|
||||
struct proc_dir_entry *pde;
|
||||
|
||||
pde = proc_create_data(DEVICE_NAME, 0444, NULL, &ps3vram_proc_fops,
|
||||
priv);
|
||||
pde = proc_create_single_data(DEVICE_NAME, 0444, NULL,
|
||||
ps3vram_proc_show, priv);
|
||||
if (!pde)
|
||||
dev_warn(&dev->core, "failed to create /proc entry\n");
|
||||
}
|
||||
|
|
|
@ -461,19 +461,6 @@ static int proc_apm_show(struct seq_file *m, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int proc_apm_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_apm_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations apm_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = proc_apm_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
static int kapmd(void *arg)
|
||||
|
@ -657,7 +644,7 @@ static int __init apm_init(void)
|
|||
wake_up_process(kapmd_tsk);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
proc_create("apm", 0, NULL, &apm_proc_fops);
|
||||
proc_create_single("apm", 0, NULL, proc_apm_show);
|
||||
#endif
|
||||
|
||||
ret = misc_register(&apm_device);
|
||||
|
|
|
@ -345,18 +345,6 @@ static int ds1620_proc_therm_show(struct seq_file *m, void *v)
|
|||
fan_state[netwinder_get_fan()]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ds1620_proc_therm_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ds1620_proc_therm_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations ds1620_proc_therm_fops = {
|
||||
.open = ds1620_proc_therm_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
static const struct file_operations ds1620_fops = {
|
||||
|
@ -404,7 +392,7 @@ static int __init ds1620_init(void)
|
|||
return ret;
|
||||
|
||||
#ifdef THERM_USE_PROC
|
||||
if (!proc_create("therm", 0, NULL, &ds1620_proc_therm_fops))
|
||||
if (!proc_create_single("therm", 0, NULL, ds1620_proc_therm_show))
|
||||
printk(KERN_ERR "therm: unable to register /proc/therm\n");
|
||||
#endif
|
||||
|
||||
|
|
|
@ -358,19 +358,6 @@ static int efi_rtc_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int efi_rtc_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, efi_rtc_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations efi_rtc_proc_fops = {
|
||||
.open = efi_rtc_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __init
|
||||
efi_rtc_init(void)
|
||||
{
|
||||
|
@ -386,7 +373,7 @@ efi_rtc_init(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
dir = proc_create("driver/efirtc", 0, NULL, &efi_rtc_proc_fops);
|
||||
dir = proc_create_single("driver/efirtc", 0, NULL, efi_rtc_proc_show);
|
||||
if (dir == NULL) {
|
||||
printk(KERN_ERR "efirtc: can't create /proc/driver/efirtc.\n");
|
||||
misc_deregister(&efi_rtc_dev);
|
||||
|
|
|
@ -95,19 +95,6 @@ static const struct seq_operations misc_seq_ops = {
|
|||
.stop = misc_seq_stop,
|
||||
.show = misc_seq_show,
|
||||
};
|
||||
|
||||
static int misc_seq_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &misc_seq_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations misc_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = misc_seq_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
static int misc_open(struct inode *inode, struct file *file)
|
||||
|
@ -282,7 +269,7 @@ static int __init misc_init(void)
|
|||
int err;
|
||||
struct proc_dir_entry *ret;
|
||||
|
||||
ret = proc_create("misc", 0, NULL, &misc_proc_fops);
|
||||
ret = proc_create_seq("misc", 0, NULL, &misc_seq_ops);
|
||||
misc_class = class_create(THIS_MODULE, "misc");
|
||||
err = PTR_ERR(misc_class);
|
||||
if (IS_ERR(misc_class))
|
||||
|
|
|
@ -389,22 +389,9 @@ static int nvram_proc_read(struct seq_file *seq, void *offset)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int nvram_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, nvram_proc_read, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations nvram_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = nvram_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int nvram_add_proc_fs(void)
|
||||
{
|
||||
if (!proc_create("driver/nvram", 0, NULL, &nvram_proc_fops))
|
||||
if (!proc_create_single("driver/nvram", 0, NULL, nvram_proc_read))
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -2616,19 +2616,6 @@ static int mgslpc_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int mgslpc_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, mgslpc_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations mgslpc_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = mgslpc_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int rx_alloc_buffers(MGSLPC_INFO *info)
|
||||
{
|
||||
/* each buffer has header and data */
|
||||
|
@ -2815,7 +2802,7 @@ static const struct tty_operations mgslpc_ops = {
|
|||
.tiocmget = tiocmget,
|
||||
.tiocmset = tiocmset,
|
||||
.get_icount = mgslpc_get_icount,
|
||||
.proc_fops = &mgslpc_proc_fops,
|
||||
.proc_show = mgslpc_proc_show,
|
||||
};
|
||||
|
||||
static int __init synclink_cs_init(void)
|
||||
|
|
|
@ -171,7 +171,7 @@ static void mask_rtc_irq_bit(unsigned char bit)
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
static int rtc_proc_open(struct inode *inode, struct file *file);
|
||||
static int rtc_proc_show(struct seq_file *seq, void *v);
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -832,16 +832,6 @@ static struct miscdevice rtc_dev = {
|
|||
.fops = &rtc_fops,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
static const struct file_operations rtc_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = rtc_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
static resource_size_t rtc_size;
|
||||
|
||||
static struct resource * __init rtc_request_region(resource_size_t size)
|
||||
|
@ -982,7 +972,7 @@ no_irq:
|
|||
}
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
ent = proc_create("driver/rtc", 0, NULL, &rtc_proc_fops);
|
||||
ent = proc_create_single("driver/rtc", 0, NULL, rtc_proc_show);
|
||||
if (!ent)
|
||||
printk(KERN_WARNING "rtc: Failed to register with procfs.\n");
|
||||
#endif
|
||||
|
@ -1201,11 +1191,6 @@ static int rtc_proc_show(struct seq_file *seq, void *v)
|
|||
#undef YN
|
||||
#undef NY
|
||||
}
|
||||
|
||||
static int rtc_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, rtc_proc_show, NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void rtc_get_rtc_time(struct rtc_time *rtc_tm)
|
||||
|
|
|
@ -326,19 +326,6 @@ static int proc_toshiba_show(struct seq_file *m, void *v)
|
|||
key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int proc_toshiba_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_toshiba_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_toshiba_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = proc_toshiba_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -524,7 +511,7 @@ static int __init toshiba_init(void)
|
|||
{
|
||||
struct proc_dir_entry *pde;
|
||||
|
||||
pde = proc_create("toshiba", 0, NULL, &proc_toshiba_fops);
|
||||
pde = proc_create_single("toshiba", 0, NULL, proc_toshiba_show);
|
||||
if (!pde) {
|
||||
misc_deregister(&tosh_device);
|
||||
return -ENOMEM;
|
||||
|
|
|
@ -260,19 +260,6 @@ static int cn_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int cn_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, cn_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations cn_file_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = cn_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release
|
||||
};
|
||||
|
||||
static struct cn_dev cdev = {
|
||||
.input = cn_rx_skb,
|
||||
};
|
||||
|
@ -297,7 +284,7 @@ static int cn_init(void)
|
|||
|
||||
cn_already_initialized = 1;
|
||||
|
||||
proc_create("connector", S_IRUGO, init_net.proc_net, &cn_file_ops);
|
||||
proc_create_single("connector", S_IRUGO, init_net.proc_net, cn_proc_show);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1426,21 +1426,8 @@ static int idecd_capacity_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idecd_capacity_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idecd_capacity_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idecd_capacity_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idecd_capacity_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static ide_proc_entry_t idecd_proc[] = {
|
||||
{ "capacity", S_IFREG|S_IRUGO, &idecd_capacity_proc_fops },
|
||||
{ "capacity", S_IFREG|S_IRUGO, idecd_capacity_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
@ -52,19 +52,6 @@ static int idedisk_cache_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idedisk_cache_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idedisk_cache_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idedisk_cache_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idedisk_cache_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int idedisk_capacity_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t*drive = (ide_drive_t *)m->private;
|
||||
|
@ -73,19 +60,6 @@ static int idedisk_capacity_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idedisk_capacity_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idedisk_capacity_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idedisk_capacity_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idedisk_capacity_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __idedisk_proc_show(struct seq_file *m, ide_drive_t *drive, u8 sub_cmd)
|
||||
{
|
||||
u8 *buf;
|
||||
|
@ -114,43 +88,17 @@ static int idedisk_sv_proc_show(struct seq_file *m, void *v)
|
|||
return __idedisk_proc_show(m, m->private, ATA_SMART_READ_VALUES);
|
||||
}
|
||||
|
||||
static int idedisk_sv_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idedisk_sv_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idedisk_sv_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idedisk_sv_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int idedisk_st_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
return __idedisk_proc_show(m, m->private, ATA_SMART_READ_THRESHOLDS);
|
||||
}
|
||||
|
||||
static int idedisk_st_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idedisk_st_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idedisk_st_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idedisk_st_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
ide_proc_entry_t ide_disk_proc[] = {
|
||||
{ "cache", S_IFREG|S_IRUGO, &idedisk_cache_proc_fops },
|
||||
{ "capacity", S_IFREG|S_IRUGO, &idedisk_capacity_proc_fops },
|
||||
{ "geometry", S_IFREG|S_IRUGO, &ide_geometry_proc_fops },
|
||||
{ "smart_values", S_IFREG|S_IRUSR, &idedisk_sv_proc_fops },
|
||||
{ "smart_thresholds", S_IFREG|S_IRUSR, &idedisk_st_proc_fops },
|
||||
{ "cache", S_IFREG|S_IRUGO, idedisk_cache_proc_show },
|
||||
{ "capacity", S_IFREG|S_IRUGO, idedisk_capacity_proc_show },
|
||||
{ "geometry", S_IFREG|S_IRUGO, ide_geometry_proc_show },
|
||||
{ "smart_values", S_IFREG|S_IRUSR, idedisk_sv_proc_show },
|
||||
{ "smart_thresholds", S_IFREG|S_IRUSR, idedisk_st_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
@ -14,22 +14,9 @@ static int idefloppy_capacity_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idefloppy_capacity_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idefloppy_capacity_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idefloppy_capacity_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idefloppy_capacity_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
ide_proc_entry_t ide_floppy_proc[] = {
|
||||
{ "capacity", S_IFREG|S_IRUGO, &idefloppy_capacity_proc_fops },
|
||||
{ "geometry", S_IFREG|S_IRUGO, &ide_geometry_proc_fops },
|
||||
{ "capacity", S_IFREG|S_IRUGO, idefloppy_capacity_proc_show },
|
||||
{ "geometry", S_IFREG|S_IRUGO, ide_geometry_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
@ -56,19 +56,6 @@ static int ide_imodel_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_imodel_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_imodel_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_imodel_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_imodel_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ide_mate_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_hwif_t *hwif = (ide_hwif_t *) m->private;
|
||||
|
@ -80,19 +67,6 @@ static int ide_mate_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_mate_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_mate_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_mate_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_mate_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ide_channel_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_hwif_t *hwif = (ide_hwif_t *) m->private;
|
||||
|
@ -101,19 +75,6 @@ static int ide_channel_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_channel_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_channel_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_channel_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_channel_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ide_identify_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t *drive = (ide_drive_t *)m->private;
|
||||
|
@ -141,19 +102,6 @@ static int ide_identify_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_identify_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_identify_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_identify_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_identify_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/**
|
||||
* ide_find_setting - find a specific setting
|
||||
* @st: setting table pointer
|
||||
|
@ -441,27 +389,14 @@ static const struct file_operations ide_settings_proc_fops = {
|
|||
.write = ide_settings_proc_write,
|
||||
};
|
||||
|
||||
static int ide_capacity_proc_show(struct seq_file *m, void *v)
|
||||
int ide_capacity_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
seq_printf(m, "%llu\n", (long long)0x7fffffff);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ide_capacity_proc_show);
|
||||
|
||||
static int ide_capacity_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_capacity_proc_show, NULL);
|
||||
}
|
||||
|
||||
const struct file_operations ide_capacity_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_capacity_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(ide_capacity_proc_fops);
|
||||
|
||||
static int ide_geometry_proc_show(struct seq_file *m, void *v)
|
||||
int ide_geometry_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t *drive = (ide_drive_t *) m->private;
|
||||
|
||||
|
@ -471,20 +406,7 @@ static int ide_geometry_proc_show(struct seq_file *m, void *v)
|
|||
drive->bios_cyl, drive->bios_head, drive->bios_sect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ide_geometry_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_geometry_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
const struct file_operations ide_geometry_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_geometry_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
EXPORT_SYMBOL(ide_geometry_proc_fops);
|
||||
EXPORT_SYMBOL(ide_geometry_proc_show);
|
||||
|
||||
static int ide_dmodel_proc_show(struct seq_file *seq, void *v)
|
||||
{
|
||||
|
@ -495,19 +417,6 @@ static int ide_dmodel_proc_show(struct seq_file *seq, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_dmodel_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_dmodel_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ide_dmodel_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_dmodel_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ide_driver_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t *drive = (ide_drive_t *)m->private;
|
||||
|
@ -523,65 +432,6 @@ static int ide_driver_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ide_driver_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ide_driver_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static int ide_replace_subdriver(ide_drive_t *drive, const char *driver)
|
||||
{
|
||||
struct device *dev = &drive->gendev;
|
||||
int ret = 1;
|
||||
int err;
|
||||
|
||||
device_release_driver(dev);
|
||||
/* FIXME: device can still be in use by previous driver */
|
||||
strlcpy(drive->driver_req, driver, sizeof(drive->driver_req));
|
||||
err = device_attach(dev);
|
||||
if (err < 0)
|
||||
printk(KERN_WARNING "IDE: %s: device_attach error: %d\n",
|
||||
__func__, err);
|
||||
drive->driver_req[0] = 0;
|
||||
if (dev->driver == NULL) {
|
||||
err = device_attach(dev);
|
||||
if (err < 0)
|
||||
printk(KERN_WARNING
|
||||
"IDE: %s: device_attach(2) error: %d\n",
|
||||
__func__, err);
|
||||
}
|
||||
if (dev->driver && !strcmp(dev->driver->name, driver))
|
||||
ret = 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t ide_driver_proc_write(struct file *file, const char __user *buffer,
|
||||
size_t count, loff_t *pos)
|
||||
{
|
||||
ide_drive_t *drive = PDE_DATA(file_inode(file));
|
||||
char name[32];
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EACCES;
|
||||
if (count > 31)
|
||||
count = 31;
|
||||
if (copy_from_user(name, buffer, count))
|
||||
return -EFAULT;
|
||||
name[count] = '\0';
|
||||
if (ide_replace_subdriver(drive, name))
|
||||
return -EINVAL;
|
||||
return count;
|
||||
}
|
||||
|
||||
static const struct file_operations ide_driver_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_driver_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
.write = ide_driver_proc_write,
|
||||
};
|
||||
|
||||
static int ide_media_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
ide_drive_t *drive = (ide_drive_t *) m->private;
|
||||
|
@ -613,11 +463,10 @@ static const struct file_operations ide_media_proc_fops = {
|
|||
};
|
||||
|
||||
static ide_proc_entry_t generic_drive_entries[] = {
|
||||
{ "driver", S_IFREG|S_IRUGO, &ide_driver_proc_fops },
|
||||
{ "identify", S_IFREG|S_IRUSR, &ide_identify_proc_fops},
|
||||
{ "media", S_IFREG|S_IRUGO, &ide_media_proc_fops },
|
||||
{ "model", S_IFREG|S_IRUGO, &ide_dmodel_proc_fops },
|
||||
{ "settings", S_IFREG|S_IRUSR|S_IWUSR, &ide_settings_proc_fops},
|
||||
{ "driver", S_IFREG|S_IRUGO, ide_driver_proc_show },
|
||||
{ "identify", S_IFREG|S_IRUSR, ide_identify_proc_show },
|
||||
{ "media", S_IFREG|S_IRUGO, ide_media_proc_show },
|
||||
{ "model", S_IFREG|S_IRUGO, ide_dmodel_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -628,7 +477,7 @@ static void ide_add_proc_entries(struct proc_dir_entry *dir, ide_proc_entry_t *p
|
|||
if (!dir || !p)
|
||||
return;
|
||||
while (p->name != NULL) {
|
||||
ent = proc_create_data(p->name, p->mode, dir, p->proc_fops, data);
|
||||
ent = proc_create_single_data(p->name, p->mode, dir, p->show, data);
|
||||
if (!ent) return;
|
||||
p++;
|
||||
}
|
||||
|
@ -693,8 +542,12 @@ void ide_proc_port_register_devices(ide_hwif_t *hwif)
|
|||
continue;
|
||||
|
||||
drive->proc = proc_mkdir(drive->name, parent);
|
||||
if (drive->proc)
|
||||
if (drive->proc) {
|
||||
ide_add_proc_entries(drive->proc, generic_drive_entries, drive);
|
||||
proc_create_data("setting", S_IFREG|S_IRUSR|S_IWUSR,
|
||||
drive->proc, &ide_settings_proc_fops,
|
||||
drive);
|
||||
}
|
||||
sprintf(name, "ide%d/%s", (drive->name[2]-'a')/2, drive->name);
|
||||
ent = proc_symlink(drive->name, proc_ide_root, name);
|
||||
if (!ent) return;
|
||||
|
@ -704,6 +557,7 @@ void ide_proc_port_register_devices(ide_hwif_t *hwif)
|
|||
void ide_proc_unregister_device(ide_drive_t *drive)
|
||||
{
|
||||
if (drive->proc) {
|
||||
remove_proc_entry("settings", drive->proc);
|
||||
ide_remove_proc_entries(drive->proc, generic_drive_entries);
|
||||
remove_proc_entry(drive->name, proc_ide_root);
|
||||
remove_proc_entry(drive->name, drive->hwif->proc);
|
||||
|
@ -712,9 +566,9 @@ void ide_proc_unregister_device(ide_drive_t *drive)
|
|||
}
|
||||
|
||||
static ide_proc_entry_t hwif_entries[] = {
|
||||
{ "channel", S_IFREG|S_IRUGO, &ide_channel_proc_fops },
|
||||
{ "mate", S_IFREG|S_IRUGO, &ide_mate_proc_fops },
|
||||
{ "model", S_IFREG|S_IRUGO, &ide_imodel_proc_fops },
|
||||
{ "channel", S_IFREG|S_IRUGO, ide_channel_proc_show },
|
||||
{ "mate", S_IFREG|S_IRUGO, ide_mate_proc_show },
|
||||
{ "model", S_IFREG|S_IRUGO, ide_imodel_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
@ -1847,22 +1847,9 @@ static int idetape_name_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int idetape_name_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, idetape_name_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations idetape_name_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idetape_name_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static ide_proc_entry_t idetape_proc[] = {
|
||||
{ "capacity", S_IFREG|S_IRUGO, &ide_capacity_proc_fops },
|
||||
{ "name", S_IFREG|S_IRUGO, &idetape_name_proc_fops },
|
||||
{ "capacity", S_IFREG|S_IRUGO, ide_capacity_proc_show },
|
||||
{ "name", S_IFREG|S_IRUGO, idetape_name_proc_show },
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
@ -509,18 +509,6 @@ static int hp_sdc_rtc_proc_show(struct seq_file *m, void *v)
|
|||
#undef NY
|
||||
}
|
||||
|
||||
static int hp_sdc_rtc_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, hp_sdc_rtc_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations hp_sdc_rtc_proc_fops = {
|
||||
.open = hp_sdc_rtc_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int hp_sdc_rtc_ioctl(struct file *file,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
|
@ -713,7 +701,7 @@ static int __init hp_sdc_rtc_init(void)
|
|||
if (misc_register(&hp_sdc_rtc_dev) != 0)
|
||||
printk(KERN_INFO "Could not register misc. dev for i8042 rtc\n");
|
||||
|
||||
proc_create("driver/rtc", 0, NULL, &hp_sdc_rtc_proc_fops);
|
||||
proc_create_single("driver/rtc", 0, NULL, hp_sdc_rtc_proc_show);
|
||||
|
||||
printk(KERN_INFO "HP i8042 SDC + MSM-58321 RTC support loaded "
|
||||
"(RTC v " RTC_VERSION ")\n");
|
||||
|
|
|
@ -1340,19 +1340,6 @@ static int capi20_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int capi20_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, capi20_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations capi20_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = capi20_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/*
|
||||
* /proc/capi/capi20ncci:
|
||||
* applid ncci
|
||||
|
@ -1373,23 +1360,10 @@ static int capi20ncci_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int capi20ncci_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, capi20ncci_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations capi20ncci_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = capi20ncci_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static void __init proc_init(void)
|
||||
{
|
||||
proc_create("capi/capi20", 0, NULL, &capi20_proc_fops);
|
||||
proc_create("capi/capi20ncci", 0, NULL, &capi20ncci_proc_fops);
|
||||
proc_create_single("capi/capi20", 0, NULL, capi20_proc_show);
|
||||
proc_create_single("capi/capi20ncci", 0, NULL, capi20ncci_proc_show);
|
||||
}
|
||||
|
||||
static void __exit proc_exit(void)
|
||||
|
|
|
@ -2460,22 +2460,9 @@ static int capidrv_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int capidrv_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, capidrv_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations capidrv_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = capidrv_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static void __init proc_init(void)
|
||||
{
|
||||
proc_create("capi/capidrv", 0, NULL, &capidrv_proc_fops);
|
||||
proc_create_single("capi/capidrv", 0, NULL, capidrv_proc_show);
|
||||
}
|
||||
|
||||
static void __exit proc_exit(void)
|
||||
|
|
|
@ -534,7 +534,8 @@ int attach_capi_ctr(struct capi_ctr *ctr)
|
|||
init_waitqueue_head(&ctr->state_wait_queue);
|
||||
|
||||
sprintf(ctr->procfn, "capi/controllers/%d", ctr->cnr);
|
||||
ctr->procent = proc_create_data(ctr->procfn, 0, NULL, ctr->proc_fops, ctr);
|
||||
ctr->procent = proc_create_single_data(ctr->procfn, 0, NULL,
|
||||
ctr->proc_show, ctr);
|
||||
|
||||
ncontrollers++;
|
||||
|
||||
|
|
|
@ -108,32 +108,6 @@ static const struct seq_operations seq_contrstats_ops = {
|
|||
.show = contrstats_show,
|
||||
};
|
||||
|
||||
static int seq_controller_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &seq_controller_ops);
|
||||
}
|
||||
|
||||
static int seq_contrstats_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &seq_contrstats_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_controller_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = seq_controller_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static const struct file_operations proc_contrstats_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = seq_contrstats_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
// /proc/capi/applications:
|
||||
// applid l3cnt dblkcnt dblklen #ncci recvqueuelen
|
||||
// /proc/capi/applstats:
|
||||
|
@ -216,34 +190,6 @@ static const struct seq_operations seq_applstats_ops = {
|
|||
.show = applstats_show,
|
||||
};
|
||||
|
||||
static int
|
||||
seq_applications_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &seq_applications_ops);
|
||||
}
|
||||
|
||||
static int
|
||||
seq_applstats_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &seq_applstats_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_applications_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = seq_applications_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static const struct file_operations proc_applstats_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = seq_applstats_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
static void *capi_driver_start(struct seq_file *seq, loff_t *pos)
|
||||
|
@ -279,22 +225,6 @@ static const struct seq_operations seq_capi_driver_ops = {
|
|||
.show = capi_driver_show,
|
||||
};
|
||||
|
||||
static int
|
||||
seq_capi_driver_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
int err;
|
||||
err = seq_open(file, &seq_capi_driver_ops);
|
||||
return err;
|
||||
}
|
||||
|
||||
static const struct file_operations proc_driver_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = seq_capi_driver_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
void __init
|
||||
|
@ -302,11 +232,11 @@ kcapi_proc_init(void)
|
|||
{
|
||||
proc_mkdir("capi", NULL);
|
||||
proc_mkdir("capi/controllers", NULL);
|
||||
proc_create("capi/controller", 0, NULL, &proc_controller_ops);
|
||||
proc_create("capi/contrstats", 0, NULL, &proc_contrstats_ops);
|
||||
proc_create("capi/applications", 0, NULL, &proc_applications_ops);
|
||||
proc_create("capi/applstats", 0, NULL, &proc_applstats_ops);
|
||||
proc_create("capi/driver", 0, NULL, &proc_driver_ops);
|
||||
proc_create_seq("capi/controller", 0, NULL, &seq_controller_ops);
|
||||
proc_create_seq("capi/contrstats", 0, NULL, &seq_contrstats_ops);
|
||||
proc_create_seq("capi/applications", 0, NULL, &seq_applications_ops);
|
||||
proc_create_seq("capi/applstats", 0, NULL, &seq_applstats_ops);
|
||||
proc_create_seq("capi/driver", 0, NULL, &seq_capi_driver_ops);
|
||||
}
|
||||
|
||||
void __exit
|
||||
|
|
|
@ -2437,19 +2437,6 @@ static int gigaset_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int gigaset_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, gigaset_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations gigaset_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = gigaset_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/**
|
||||
* gigaset_isdn_regdev() - register device to LL
|
||||
* @cs: device descriptor structure.
|
||||
|
@ -2479,7 +2466,7 @@ int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)
|
|||
iif->ctr.release_appl = gigaset_release_appl;
|
||||
iif->ctr.send_message = gigaset_send_message;
|
||||
iif->ctr.procinfo = gigaset_procinfo;
|
||||
iif->ctr.proc_fops = &gigaset_proc_fops;
|
||||
iif->ctr.proc_show = gigaset_proc_show,
|
||||
INIT_LIST_HEAD(&iif->appls);
|
||||
skb_queue_head_init(&iif->sendqueue);
|
||||
atomic_set(&iif->sendqlen, 0);
|
||||
|
|
|
@ -556,7 +556,7 @@ u16 b1_send_message(struct capi_ctr *ctrl, struct sk_buff *skb);
|
|||
void b1_parse_version(avmctrl_info *card);
|
||||
irqreturn_t b1_interrupt(int interrupt, void *devptr);
|
||||
|
||||
extern const struct file_operations b1ctl_proc_fops;
|
||||
int b1_proc_show(struct seq_file *m, void *v);
|
||||
|
||||
avmcard_dmainfo *avmcard_dma_alloc(char *name, struct pci_dev *,
|
||||
long rsize, long ssize);
|
||||
|
@ -576,6 +576,6 @@ void b1dma_register_appl(struct capi_ctr *ctrl,
|
|||
capi_register_params *rp);
|
||||
void b1dma_release_appl(struct capi_ctr *ctrl, u16 appl);
|
||||
u16 b1dma_send_message(struct capi_ctr *ctrl, struct sk_buff *skb);
|
||||
extern const struct file_operations b1dmactl_proc_fops;
|
||||
int b1dma_proc_show(struct seq_file *m, void *v);
|
||||
|
||||
#endif /* _AVMCARD_H_ */
|
||||
|
|
|
@ -637,7 +637,7 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
|
|||
}
|
||||
|
||||
/* ------------------------------------------------------------- */
|
||||
static int b1ctl_proc_show(struct seq_file *m, void *v)
|
||||
int b1_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct capi_ctr *ctrl = m->private;
|
||||
avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata);
|
||||
|
@ -699,20 +699,7 @@ static int b1ctl_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int b1ctl_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, b1ctl_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
const struct file_operations b1ctl_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = b1ctl_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
EXPORT_SYMBOL(b1ctl_proc_fops);
|
||||
EXPORT_SYMBOL(b1_proc_show);
|
||||
|
||||
/* ------------------------------------------------------------- */
|
||||
|
||||
|
|
|
@ -858,7 +858,7 @@ u16 b1dma_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
|
|||
|
||||
/* ------------------------------------------------------------- */
|
||||
|
||||
static int b1dmactl_proc_show(struct seq_file *m, void *v)
|
||||
int b1dma_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct capi_ctr *ctrl = m->private;
|
||||
avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata);
|
||||
|
@ -941,20 +941,7 @@ static int b1dmactl_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int b1dmactl_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, b1dmactl_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
const struct file_operations b1dmactl_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = b1dmactl_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
EXPORT_SYMBOL(b1dmactl_proc_fops);
|
||||
EXPORT_SYMBOL(b1dma_proc_show);
|
||||
|
||||
/* ------------------------------------------------------------- */
|
||||
|
||||
|
|
|
@ -121,7 +121,7 @@ static int b1isa_probe(struct pci_dev *pdev)
|
|||
cinfo->capi_ctrl.load_firmware = b1_load_firmware;
|
||||
cinfo->capi_ctrl.reset_ctr = b1_reset_ctr;
|
||||
cinfo->capi_ctrl.procinfo = b1isa_procinfo;
|
||||
cinfo->capi_ctrl.proc_fops = &b1ctl_proc_fops;
|
||||
cinfo->capi_ctrl.proc_show = b1_proc_show;
|
||||
strcpy(cinfo->capi_ctrl.name, card->name);
|
||||
|
||||
retval = attach_capi_ctr(&cinfo->capi_ctrl);
|
||||
|
|
|
@ -112,7 +112,7 @@ static int b1pci_probe(struct capicardparams *p, struct pci_dev *pdev)
|
|||
cinfo->capi_ctrl.load_firmware = b1_load_firmware;
|
||||
cinfo->capi_ctrl.reset_ctr = b1_reset_ctr;
|
||||
cinfo->capi_ctrl.procinfo = b1pci_procinfo;
|
||||
cinfo->capi_ctrl.proc_fops = &b1ctl_proc_fops;
|
||||
cinfo->capi_ctrl.proc_show = b1_proc_show;
|
||||
strcpy(cinfo->capi_ctrl.name, card->name);
|
||||
cinfo->capi_ctrl.owner = THIS_MODULE;
|
||||
|
||||
|
@ -251,7 +251,7 @@ static int b1pciv4_probe(struct capicardparams *p, struct pci_dev *pdev)
|
|||
cinfo->capi_ctrl.load_firmware = b1dma_load_firmware;
|
||||
cinfo->capi_ctrl.reset_ctr = b1dma_reset_ctr;
|
||||
cinfo->capi_ctrl.procinfo = b1pciv4_procinfo;
|
||||
cinfo->capi_ctrl.proc_fops = &b1dmactl_proc_fops;
|
||||
cinfo->capi_ctrl.proc_show = b1dma_proc_show;
|
||||
strcpy(cinfo->capi_ctrl.name, card->name);
|
||||
|
||||
retval = attach_capi_ctr(&cinfo->capi_ctrl);
|
||||
|
|
|
@ -108,7 +108,7 @@ static int b1pcmcia_add_card(unsigned int port, unsigned irq,
|
|||
cinfo->capi_ctrl.load_firmware = b1_load_firmware;
|
||||
cinfo->capi_ctrl.reset_ctr = b1_reset_ctr;
|
||||
cinfo->capi_ctrl.procinfo = b1pcmcia_procinfo;
|
||||
cinfo->capi_ctrl.proc_fops = &b1ctl_proc_fops;
|
||||
cinfo->capi_ctrl.proc_show = b1_proc_show;
|
||||
strcpy(cinfo->capi_ctrl.name, card->name);
|
||||
|
||||
retval = attach_capi_ctr(&cinfo->capi_ctrl);
|
||||
|
|
|
@ -1127,19 +1127,6 @@ static int c4_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int c4_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, c4_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations c4_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = c4_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------- */
|
||||
|
||||
static int c4_add_card(struct capicardparams *p, struct pci_dev *dev,
|
||||
|
@ -1211,7 +1198,7 @@ static int c4_add_card(struct capicardparams *p, struct pci_dev *dev,
|
|||
cinfo->capi_ctrl.load_firmware = c4_load_firmware;
|
||||
cinfo->capi_ctrl.reset_ctr = c4_reset_ctr;
|
||||
cinfo->capi_ctrl.procinfo = c4_procinfo;
|
||||
cinfo->capi_ctrl.proc_fops = &c4_proc_fops;
|
||||
cinfo->capi_ctrl.proc_show = c4_proc_show;
|
||||
strcpy(cinfo->capi_ctrl.name, card->name);
|
||||
|
||||
retval = attach_capi_ctr(&cinfo->capi_ctrl);
|
||||
|
|
|
@ -430,7 +430,7 @@ static int t1isa_probe(struct pci_dev *pdev, int cardnr)
|
|||
cinfo->capi_ctrl.load_firmware = t1isa_load_firmware;
|
||||
cinfo->capi_ctrl.reset_ctr = t1isa_reset_ctr;
|
||||
cinfo->capi_ctrl.procinfo = t1isa_procinfo;
|
||||
cinfo->capi_ctrl.proc_fops = &b1ctl_proc_fops;
|
||||
cinfo->capi_ctrl.proc_show = b1_proc_show;
|
||||
strcpy(cinfo->capi_ctrl.name, card->name);
|
||||
|
||||
retval = attach_capi_ctr(&cinfo->capi_ctrl);
|
||||
|
|
|
@ -119,7 +119,7 @@ static int t1pci_add_card(struct capicardparams *p, struct pci_dev *pdev)
|
|||
cinfo->capi_ctrl.load_firmware = b1dma_load_firmware;
|
||||
cinfo->capi_ctrl.reset_ctr = b1dma_reset_ctr;
|
||||
cinfo->capi_ctrl.procinfo = t1pci_procinfo;
|
||||
cinfo->capi_ctrl.proc_fops = &b1dmactl_proc_fops;
|
||||
cinfo->capi_ctrl.proc_show = b1dma_proc_show;
|
||||
strcpy(cinfo->capi_ctrl.name, card->name);
|
||||
|
||||
retval = attach_capi_ctr(&cinfo->capi_ctrl);
|
||||
|
|
|
@ -90,19 +90,6 @@ static int diva_ctl_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int diva_ctl_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, diva_ctl_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations diva_ctl_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = diva_ctl_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/*
|
||||
* set additional os settings in capi_ctr struct
|
||||
*/
|
||||
|
@ -111,7 +98,7 @@ void diva_os_set_controller_struct(struct capi_ctr *ctrl)
|
|||
ctrl->driver_name = DRIVERLNAME;
|
||||
ctrl->load_firmware = NULL;
|
||||
ctrl->reset_ctr = NULL;
|
||||
ctrl->proc_fops = &diva_ctl_proc_fops;
|
||||
ctrl->proc_show = diva_ctl_proc_show;
|
||||
ctrl->owner = THIS_MODULE;
|
||||
}
|
||||
|
||||
|
|
|
@ -78,26 +78,13 @@ static int divadidd_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int divadidd_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, divadidd_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations divadidd_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = divadidd_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __init create_proc(void)
|
||||
{
|
||||
proc_net_eicon = proc_mkdir("eicon", init_net.proc_net);
|
||||
|
||||
if (proc_net_eicon) {
|
||||
proc_didd = proc_create(DRIVERLNAME, S_IRUGO, proc_net_eicon,
|
||||
&divadidd_proc_fops);
|
||||
proc_didd = proc_create_single(DRIVERLNAME, S_IRUGO,
|
||||
proc_net_eicon, divadidd_proc_show);
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
|
|
|
@ -101,23 +101,10 @@ static int um_idi_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int um_idi_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, um_idi_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations um_idi_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = um_idi_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __init create_um_idi_proc(void)
|
||||
{
|
||||
um_idi_proc_entry = proc_create(DRIVERLNAME, S_IRUGO, proc_net_eicon,
|
||||
&um_idi_proc_fops);
|
||||
um_idi_proc_entry = proc_create_single(DRIVERLNAME, S_IRUGO,
|
||||
proc_net_eicon, um_idi_proc_show);
|
||||
if (!um_idi_proc_entry)
|
||||
return (0);
|
||||
return (1);
|
||||
|
|
|
@ -467,19 +467,6 @@ static int hycapi_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int hycapi_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, hycapi_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations hycapi_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = hycapi_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/**************************************************************
|
||||
hycapi_load_firmware
|
||||
|
||||
|
@ -774,7 +761,7 @@ hycapi_capi_create(hysdn_card *card)
|
|||
ctrl->load_firmware = hycapi_load_firmware;
|
||||
ctrl->reset_ctr = hycapi_reset_ctr;
|
||||
ctrl->procinfo = hycapi_procinfo;
|
||||
ctrl->proc_fops = &hycapi_proc_fops;
|
||||
ctrl->proc_show = hycapi_proc_show;
|
||||
strcpy(ctrl->name, cinfo->cardname);
|
||||
ctrl->owner = THIS_MODULE;
|
||||
|
||||
|
|
|
@ -191,10 +191,10 @@ static int init_pmu(void);
|
|||
static void pmu_start(void);
|
||||
static irqreturn_t via_pmu_interrupt(int irq, void *arg);
|
||||
static irqreturn_t gpio1_interrupt(int irq, void *arg);
|
||||
static const struct file_operations pmu_info_proc_fops;
|
||||
static const struct file_operations pmu_irqstats_proc_fops;
|
||||
static int pmu_info_proc_show(struct seq_file *m, void *v);
|
||||
static int pmu_irqstats_proc_show(struct seq_file *m, void *v);
|
||||
static int pmu_battery_proc_show(struct seq_file *m, void *v);
|
||||
static void pmu_pass_intr(unsigned char *data, int len);
|
||||
static const struct file_operations pmu_battery_proc_fops;
|
||||
static const struct file_operations pmu_options_proc_fops;
|
||||
|
||||
#ifdef CONFIG_ADB
|
||||
|
@ -511,13 +511,15 @@ static int __init via_pmu_dev_init(void)
|
|||
for (i=0; i<pmu_battery_count; i++) {
|
||||
char title[16];
|
||||
sprintf(title, "battery_%ld", i);
|
||||
proc_pmu_batt[i] = proc_create_data(title, 0, proc_pmu_root,
|
||||
&pmu_battery_proc_fops, (void *)i);
|
||||
proc_pmu_batt[i] = proc_create_single_data(title, 0,
|
||||
proc_pmu_root, pmu_battery_proc_show,
|
||||
(void *)i);
|
||||
}
|
||||
|
||||
proc_pmu_info = proc_create("info", 0, proc_pmu_root, &pmu_info_proc_fops);
|
||||
proc_pmu_irqstats = proc_create("interrupts", 0, proc_pmu_root,
|
||||
&pmu_irqstats_proc_fops);
|
||||
proc_pmu_info = proc_create_single("info", 0, proc_pmu_root,
|
||||
pmu_info_proc_show);
|
||||
proc_pmu_irqstats = proc_create_single("interrupts", 0,
|
||||
proc_pmu_root, pmu_irqstats_proc_show);
|
||||
proc_pmu_options = proc_create("options", 0600, proc_pmu_root,
|
||||
&pmu_options_proc_fops);
|
||||
}
|
||||
|
@ -811,19 +813,6 @@ static int pmu_info_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int pmu_info_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, pmu_info_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations pmu_info_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = pmu_info_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int pmu_irqstats_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
int i;
|
||||
|
@ -848,19 +837,6 @@ static int pmu_irqstats_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int pmu_irqstats_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, pmu_irqstats_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations pmu_irqstats_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = pmu_irqstats_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int pmu_battery_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
long batnum = (long)m->private;
|
||||
|
@ -875,19 +851,6 @@ static int pmu_battery_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int pmu_battery_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, pmu_battery_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations pmu_battery_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = pmu_battery_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int pmu_options_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
|
||||
|
|
|
@ -1122,23 +1122,11 @@ static int saa7164_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int saa7164_proc_open(struct inode *inode, struct file *filp)
|
||||
{
|
||||
return single_open(filp, saa7164_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations saa7164_proc_fops = {
|
||||
.open = saa7164_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int saa7164_proc_create(void)
|
||||
{
|
||||
struct proc_dir_entry *pe;
|
||||
|
||||
pe = proc_create("saa7164", S_IRUGO, NULL, &saa7164_proc_fops);
|
||||
pe = proc_create_single("saa7164", S_IRUGO, NULL, saa7164_proc_show);
|
||||
if (!pe)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
@ -344,19 +344,6 @@ static int proc_videocodecs_show(struct seq_file *m, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int proc_videocodecs_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, proc_videocodecs_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations videocodecs_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = proc_videocodecs_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
/* ===================== */
|
||||
|
@ -373,7 +360,8 @@ videocodec_init (void)
|
|||
VIDEOCODEC_VERSION);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
videocodec_proc_entry = proc_create("videocodecs", 0, NULL, &videocodecs_proc_fops);
|
||||
videocodec_proc_entry = proc_create_single("videocodecs", 0, NULL,
|
||||
proc_videocodecs_show);
|
||||
if (!videocodec_proc_entry) {
|
||||
dprintk(1, KERN_ERR "videocodec: can't init procfs.\n");
|
||||
}
|
||||
|
|
|
@ -197,9 +197,9 @@ static int mpt_host_page_access_control(MPT_ADAPTER *ioc, u8 access_control_valu
|
|||
static int mpt_host_page_alloc(MPT_ADAPTER *ioc, pIOCInit_t ioc_init);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
static const struct file_operations mpt_summary_proc_fops;
|
||||
static const struct file_operations mpt_version_proc_fops;
|
||||
static const struct file_operations mpt_iocinfo_proc_fops;
|
||||
static int mpt_summary_proc_show(struct seq_file *m, void *v);
|
||||
static int mpt_version_proc_show(struct seq_file *m, void *v);
|
||||
static int mpt_iocinfo_proc_show(struct seq_file *m, void *v);
|
||||
#endif
|
||||
static void mpt_get_fw_exp_ver(char *buf, MPT_ADAPTER *ioc);
|
||||
|
||||
|
@ -2040,8 +2040,10 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
*/
|
||||
dent = proc_mkdir(ioc->name, mpt_proc_root_dir);
|
||||
if (dent) {
|
||||
proc_create_data("info", S_IRUGO, dent, &mpt_iocinfo_proc_fops, ioc);
|
||||
proc_create_data("summary", S_IRUGO, dent, &mpt_summary_proc_fops, ioc);
|
||||
proc_create_single_data("info", S_IRUGO, dent,
|
||||
mpt_iocinfo_proc_show, ioc);
|
||||
proc_create_single_data("summary", S_IRUGO, dent,
|
||||
mpt_summary_proc_show, ioc);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -6606,8 +6608,10 @@ procmpt_create(void)
|
|||
if (mpt_proc_root_dir == NULL)
|
||||
return -ENOTDIR;
|
||||
|
||||
proc_create("summary", S_IRUGO, mpt_proc_root_dir, &mpt_summary_proc_fops);
|
||||
proc_create("version", S_IRUGO, mpt_proc_root_dir, &mpt_version_proc_fops);
|
||||
proc_create_single("summary", S_IRUGO, mpt_proc_root_dir,
|
||||
mpt_summary_proc_show);
|
||||
proc_create_single("version", S_IRUGO, mpt_proc_root_dir,
|
||||
mpt_version_proc_show);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -6646,19 +6650,6 @@ static int mpt_summary_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int mpt_summary_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, mpt_summary_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations mpt_summary_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = mpt_summary_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int mpt_version_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
u8 cb_idx;
|
||||
|
@ -6701,19 +6692,6 @@ static int mpt_version_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int mpt_version_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, mpt_version_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations mpt_version_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = mpt_version_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
MPT_ADAPTER *ioc = m->private;
|
||||
|
@ -6793,19 +6771,6 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mpt_iocinfo_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, mpt_iocinfo_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations mpt_iocinfo_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = mpt_iocinfo_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif /* CONFIG_PROC_FS } */
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
|
|
@ -270,16 +270,6 @@ static int options_open(struct inode *inode, struct file *file)
|
|||
return single_open(file, options_show, NULL);
|
||||
}
|
||||
|
||||
static int cch_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &cch_seq_ops);
|
||||
}
|
||||
|
||||
static int gru_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &gru_seq_ops);
|
||||
}
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
static const struct file_operations statistics_fops = {
|
||||
.open = statistics_open,
|
||||
|
@ -305,73 +295,30 @@ static const struct file_operations options_fops = {
|
|||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct file_operations cch_fops = {
|
||||
.open = cch_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
static const struct file_operations gru_fops = {
|
||||
.open = gru_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static struct proc_entry {
|
||||
char *name;
|
||||
umode_t mode;
|
||||
const struct file_operations *fops;
|
||||
struct proc_dir_entry *entry;
|
||||
} proc_files[] = {
|
||||
{"statistics", 0644, &statistics_fops},
|
||||
{"mcs_statistics", 0644, &mcs_statistics_fops},
|
||||
{"debug_options", 0644, &options_fops},
|
||||
{"cch_status", 0444, &cch_fops},
|
||||
{"gru_status", 0444, &gru_fops},
|
||||
{NULL}
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
static struct proc_dir_entry *proc_gru __read_mostly;
|
||||
|
||||
static int create_proc_file(struct proc_entry *p)
|
||||
{
|
||||
p->entry = proc_create(p->name, p->mode, proc_gru, p->fops);
|
||||
if (!p->entry)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void delete_proc_files(void)
|
||||
{
|
||||
struct proc_entry *p;
|
||||
|
||||
if (proc_gru) {
|
||||
for (p = proc_files; p->name; p++)
|
||||
if (p->entry)
|
||||
remove_proc_entry(p->name, proc_gru);
|
||||
proc_remove(proc_gru);
|
||||
}
|
||||
}
|
||||
|
||||
int gru_proc_init(void)
|
||||
{
|
||||
struct proc_entry *p;
|
||||
|
||||
proc_gru = proc_mkdir("sgi_uv/gru", NULL);
|
||||
|
||||
for (p = proc_files; p->name; p++)
|
||||
if (create_proc_file(p))
|
||||
goto err;
|
||||
if (!proc_gru)
|
||||
return -1;
|
||||
if (!proc_create("statistics", 0644, proc_gru, &statistics_fops))
|
||||
goto err;
|
||||
if (!proc_create("mcs_statistics", 0644, proc_gru, &mcs_statistics_fops))
|
||||
goto err;
|
||||
if (!proc_create("debug_options", 0644, proc_gru, &options_fops))
|
||||
goto err;
|
||||
if (!proc_create_seq("cch_status", 0444, proc_gru, &cch_seq_ops))
|
||||
goto err;
|
||||
if (!proc_create_seq("gru_status", 0444, proc_gru, &gru_seq_ops))
|
||||
goto err;
|
||||
return 0;
|
||||
|
||||
err:
|
||||
delete_proc_files();
|
||||
remove_proc_subtree("sgi_uv/gru", NULL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
void gru_proc_exit(void)
|
||||
{
|
||||
delete_proc_files();
|
||||
remove_proc_subtree("sgi_uv/gru", NULL);
|
||||
}
|
||||
|
|
|
@ -1008,19 +1008,6 @@ static int sdio_uart_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int sdio_uart_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, sdio_uart_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations sdio_uart_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = sdio_uart_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct tty_port_operations sdio_uart_port_ops = {
|
||||
.dtr_rts = uart_dtr_rts,
|
||||
.carrier_raised = uart_carrier_raised,
|
||||
|
@ -1045,7 +1032,7 @@ static const struct tty_operations sdio_uart_ops = {
|
|||
.tiocmset = sdio_uart_tiocmset,
|
||||
.install = sdio_uart_install,
|
||||
.cleanup = sdio_uart_cleanup,
|
||||
.proc_fops = &sdio_uart_proc_fops,
|
||||
.proc_show = sdio_uart_proc_show,
|
||||
};
|
||||
|
||||
static struct tty_driver *sdio_uart_tty_driver;
|
||||
|
|
|
@ -1829,18 +1829,6 @@ static int mtd_proc_show(struct seq_file *m, void *v)
|
|||
mutex_unlock(&mtd_table_mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mtd_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, mtd_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations mtd_proc_ops = {
|
||||
.open = mtd_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
/*====================================================================*/
|
||||
|
@ -1883,7 +1871,7 @@ static int __init init_mtd(void)
|
|||
goto err_bdi;
|
||||
}
|
||||
|
||||
proc_mtd = proc_create("mtd", 0, NULL, &mtd_proc_ops);
|
||||
proc_mtd = proc_create_single("mtd", 0, NULL, mtd_proc_show);
|
||||
|
||||
ret = init_mtdchar();
|
||||
if (ret)
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
static void *bond_info_seq_start(struct seq_file *seq, loff_t *pos)
|
||||
__acquires(RCU)
|
||||
{
|
||||
struct bonding *bond = seq->private;
|
||||
struct bonding *bond = PDE_DATA(file_inode(seq->file));
|
||||
struct list_head *iter;
|
||||
struct slave *slave;
|
||||
loff_t off = 0;
|
||||
|
@ -29,7 +29,7 @@ static void *bond_info_seq_start(struct seq_file *seq, loff_t *pos)
|
|||
|
||||
static void *bond_info_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
||||
{
|
||||
struct bonding *bond = seq->private;
|
||||
struct bonding *bond = PDE_DATA(file_inode(seq->file));
|
||||
struct list_head *iter;
|
||||
struct slave *slave;
|
||||
bool found = false;
|
||||
|
@ -56,7 +56,7 @@ static void bond_info_seq_stop(struct seq_file *seq, void *v)
|
|||
|
||||
static void bond_info_show_master(struct seq_file *seq)
|
||||
{
|
||||
struct bonding *bond = seq->private;
|
||||
struct bonding *bond = PDE_DATA(file_inode(seq->file));
|
||||
const struct bond_opt_value *optval;
|
||||
struct slave *curr, *primary;
|
||||
int i;
|
||||
|
@ -167,7 +167,7 @@ static void bond_info_show_master(struct seq_file *seq)
|
|||
static void bond_info_show_slave(struct seq_file *seq,
|
||||
const struct slave *slave)
|
||||
{
|
||||
struct bonding *bond = seq->private;
|
||||
struct bonding *bond = PDE_DATA(file_inode(seq->file));
|
||||
|
||||
seq_printf(seq, "\nSlave Interface: %s\n", slave->dev->name);
|
||||
seq_printf(seq, "MII Status: %s\n", bond_slave_link_status(slave->link));
|
||||
|
@ -257,38 +257,14 @@ static const struct seq_operations bond_info_seq_ops = {
|
|||
.show = bond_info_seq_show,
|
||||
};
|
||||
|
||||
static int bond_info_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct seq_file *seq;
|
||||
int res;
|
||||
|
||||
res = seq_open(file, &bond_info_seq_ops);
|
||||
if (!res) {
|
||||
/* recover the pointer buried in proc_dir_entry data */
|
||||
seq = file->private_data;
|
||||
seq->private = PDE_DATA(inode);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static const struct file_operations bond_info_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = bond_info_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
void bond_create_proc_entry(struct bonding *bond)
|
||||
{
|
||||
struct net_device *bond_dev = bond->dev;
|
||||
struct bond_net *bn = net_generic(dev_net(bond_dev), bond_net_id);
|
||||
|
||||
if (bn->proc_dir) {
|
||||
bond->proc_entry = proc_create_data(bond_dev->name,
|
||||
0444, bn->proc_dir,
|
||||
&bond_info_fops, bond);
|
||||
bond->proc_entry = proc_create_seq_data(bond_dev->name, 0444,
|
||||
bn->proc_dir, &bond_info_seq_ops, bond);
|
||||
if (bond->proc_entry == NULL)
|
||||
netdev_warn(bond_dev, "Cannot create /proc/net/%s/%s\n",
|
||||
DRV_NAME, bond_dev->name);
|
||||
|
|
|
@ -449,20 +449,6 @@ static const struct seq_operations bpq_seqops = {
|
|||
.show = bpq_seq_show,
|
||||
};
|
||||
|
||||
static int bpq_info_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &bpq_seqops);
|
||||
}
|
||||
|
||||
static const struct file_operations bpq_info_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = bpq_info_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
static const struct net_device_ops bpq_netdev_ops = {
|
||||
|
@ -590,7 +576,7 @@ static int bpq_device_event(struct notifier_block *this,
|
|||
static int __init bpq_init_driver(void)
|
||||
{
|
||||
#ifdef CONFIG_PROC_FS
|
||||
if (!proc_create("bpqether", 0444, init_net.proc_net, &bpq_info_fops)) {
|
||||
if (!proc_create_seq("bpqether", 0444, init_net.proc_net, &bpq_seqops)) {
|
||||
printk(KERN_ERR
|
||||
"bpq: cannot create /proc/net/bpqether entry.\n");
|
||||
return -ENOENT;
|
||||
|
|
|
@ -2084,21 +2084,6 @@ static const struct seq_operations scc_net_seq_ops = {
|
|||
.stop = scc_net_seq_stop,
|
||||
.show = scc_net_seq_show,
|
||||
};
|
||||
|
||||
|
||||
static int scc_net_seq_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &scc_net_seq_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations scc_net_seq_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = scc_net_seq_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release_private,
|
||||
};
|
||||
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
|
||||
|
@ -2122,7 +2107,7 @@ static int __init scc_init_driver (void)
|
|||
}
|
||||
rtnl_unlock();
|
||||
|
||||
proc_create("z8530drv", 0, init_net.proc_net, &scc_net_seq_fops);
|
||||
proc_create_seq("z8530drv", 0, init_net.proc_net, &scc_net_seq_ops);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -841,20 +841,6 @@ static const struct seq_operations yam_seqops = {
|
|||
.stop = yam_seq_stop,
|
||||
.show = yam_seq_show,
|
||||
};
|
||||
|
||||
static int yam_info_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &yam_seqops);
|
||||
}
|
||||
|
||||
static const struct file_operations yam_info_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = yam_info_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -1168,7 +1154,7 @@ static int __init yam_init_driver(void)
|
|||
yam_timer.expires = jiffies + HZ / 100;
|
||||
add_timer(&yam_timer);
|
||||
|
||||
proc_create("yam", 0444, init_net.proc_net, &yam_info_fops);
|
||||
proc_create_seq("yam", 0444, init_net.proc_net, &yam_seqops);
|
||||
return 0;
|
||||
error:
|
||||
while (--i >= 0) {
|
||||
|
|
|
@ -1096,21 +1096,6 @@ static const struct seq_operations pppoe_seq_ops = {
|
|||
.stop = pppoe_seq_stop,
|
||||
.show = pppoe_seq_show,
|
||||
};
|
||||
|
||||
static int pppoe_seq_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open_net(inode, file, &pppoe_seq_ops,
|
||||
sizeof(struct seq_net_private));
|
||||
}
|
||||
|
||||
static const struct file_operations pppoe_seq_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = pppoe_seq_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release_net,
|
||||
};
|
||||
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
static const struct proto_ops pppoe_ops = {
|
||||
|
@ -1146,7 +1131,8 @@ static __net_init int pppoe_init_net(struct net *net)
|
|||
|
||||
rwlock_init(&pn->hash_lock);
|
||||
|
||||
pde = proc_create("pppoe", 0444, net->proc_net, &pppoe_seq_fops);
|
||||
pde = proc_create_net("pppoe", 0444, net->proc_net,
|
||||
&pppoe_seq_ops, sizeof(struct seq_net_private));
|
||||
#ifdef CONFIG_PROC_FS
|
||||
if (!pde)
|
||||
return -ENOMEM;
|
||||
|
|
|
@ -1482,18 +1482,6 @@ static int atmel_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int atmel_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, atmel_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations atmel_proc_fops = {
|
||||
.open = atmel_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct net_device_ops atmel_netdev_ops = {
|
||||
.ndo_open = atmel_open,
|
||||
.ndo_stop = atmel_close,
|
||||
|
@ -1614,7 +1602,8 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port,
|
|||
|
||||
netif_carrier_off(dev);
|
||||
|
||||
if (!proc_create_data("driver/atmel", 0, NULL, &atmel_proc_fops, priv))
|
||||
if (!proc_create_single_data("driver/atmel", 0, NULL, atmel_proc_show,
|
||||
priv))
|
||||
printk(KERN_WARNING "atmel: unable to create /proc entry.\n");
|
||||
|
||||
printk(KERN_INFO "%s: Atmel at76c50x. Version %d.%d. MAC %pM\n",
|
||||
|
|
|
@ -69,7 +69,7 @@ static void prism2_send_mgmt(struct net_device *dev,
|
|||
#ifndef PRISM2_NO_PROCFS_DEBUG
|
||||
static int ap_debug_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct ap_data *ap = m->private;
|
||||
struct ap_data *ap = PDE_DATA(file_inode(m->file));
|
||||
|
||||
seq_printf(m, "BridgedUnicastFrames=%u\n", ap->bridged_unicast);
|
||||
seq_printf(m, "BridgedMulticastFrames=%u\n", ap->bridged_multicast);
|
||||
|
@ -81,18 +81,6 @@ static int ap_debug_proc_show(struct seq_file *m, void *v)
|
|||
seq_printf(m, "tx_drop_nonassoc=%u\n", ap->tx_drop_nonassoc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ap_debug_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ap_debug_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations ap_debug_proc_fops = {
|
||||
.open = ap_debug_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif /* PRISM2_NO_PROCFS_DEBUG */
|
||||
|
||||
|
||||
|
@ -333,7 +321,7 @@ void hostap_deauth_all_stas(struct net_device *dev, struct ap_data *ap,
|
|||
|
||||
static int ap_control_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct ap_data *ap = m->private;
|
||||
struct ap_data *ap = PDE_DATA(file_inode(m->file));
|
||||
char *policy_txt;
|
||||
struct mac_entry *entry;
|
||||
|
||||
|
@ -365,20 +353,20 @@ static int ap_control_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
static void *ap_control_proc_start(struct seq_file *m, loff_t *_pos)
|
||||
{
|
||||
struct ap_data *ap = m->private;
|
||||
struct ap_data *ap = PDE_DATA(file_inode(m->file));
|
||||
spin_lock_bh(&ap->mac_restrictions.lock);
|
||||
return seq_list_start_head(&ap->mac_restrictions.mac_list, *_pos);
|
||||
}
|
||||
|
||||
static void *ap_control_proc_next(struct seq_file *m, void *v, loff_t *_pos)
|
||||
{
|
||||
struct ap_data *ap = m->private;
|
||||
struct ap_data *ap = PDE_DATA(file_inode(m->file));
|
||||
return seq_list_next(v, &ap->mac_restrictions.mac_list, _pos);
|
||||
}
|
||||
|
||||
static void ap_control_proc_stop(struct seq_file *m, void *v)
|
||||
{
|
||||
struct ap_data *ap = m->private;
|
||||
struct ap_data *ap = PDE_DATA(file_inode(m->file));
|
||||
spin_unlock_bh(&ap->mac_restrictions.lock);
|
||||
}
|
||||
|
||||
|
@ -389,24 +377,6 @@ static const struct seq_operations ap_control_proc_seqops = {
|
|||
.show = ap_control_proc_show,
|
||||
};
|
||||
|
||||
static int ap_control_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
int ret = seq_open(file, &ap_control_proc_seqops);
|
||||
if (ret == 0) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = PDE_DATA(inode);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct file_operations ap_control_proc_fops = {
|
||||
.open = ap_control_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
|
||||
int ap_control_add_mac(struct mac_restrictions *mac_restrictions, u8 *mac)
|
||||
{
|
||||
struct mac_entry *entry;
|
||||
|
@ -585,20 +555,20 @@ static int prism2_ap_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
static void *prism2_ap_proc_start(struct seq_file *m, loff_t *_pos)
|
||||
{
|
||||
struct ap_data *ap = m->private;
|
||||
struct ap_data *ap = PDE_DATA(file_inode(m->file));
|
||||
spin_lock_bh(&ap->sta_table_lock);
|
||||
return seq_list_start_head(&ap->sta_list, *_pos);
|
||||
}
|
||||
|
||||
static void *prism2_ap_proc_next(struct seq_file *m, void *v, loff_t *_pos)
|
||||
{
|
||||
struct ap_data *ap = m->private;
|
||||
struct ap_data *ap = PDE_DATA(file_inode(m->file));
|
||||
return seq_list_next(v, &ap->sta_list, _pos);
|
||||
}
|
||||
|
||||
static void prism2_ap_proc_stop(struct seq_file *m, void *v)
|
||||
{
|
||||
struct ap_data *ap = m->private;
|
||||
struct ap_data *ap = PDE_DATA(file_inode(m->file));
|
||||
spin_unlock_bh(&ap->sta_table_lock);
|
||||
}
|
||||
|
||||
|
@ -608,23 +578,6 @@ static const struct seq_operations prism2_ap_proc_seqops = {
|
|||
.stop = prism2_ap_proc_stop,
|
||||
.show = prism2_ap_proc_show,
|
||||
};
|
||||
|
||||
static int prism2_ap_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
int ret = seq_open(file, &prism2_ap_proc_seqops);
|
||||
if (ret == 0) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = PDE_DATA(inode);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct file_operations prism2_ap_proc_fops = {
|
||||
.open = prism2_ap_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */
|
||||
|
||||
|
||||
|
@ -896,12 +849,13 @@ void hostap_init_ap_proc(local_info_t *local)
|
|||
return;
|
||||
|
||||
#ifndef PRISM2_NO_PROCFS_DEBUG
|
||||
proc_create_data("ap_debug", 0, ap->proc, &ap_debug_proc_fops, ap);
|
||||
proc_create_single_data("ap_debug", 0, ap->proc, ap_debug_proc_show, ap);
|
||||
#endif /* PRISM2_NO_PROCFS_DEBUG */
|
||||
|
||||
#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT
|
||||
proc_create_data("ap_control", 0, ap->proc, &ap_control_proc_fops, ap);
|
||||
proc_create_data("ap", 0, ap->proc, &prism2_ap_proc_fops, ap);
|
||||
proc_create_seq_data("ap_control", 0, ap->proc, &ap_control_proc_seqops,
|
||||
ap);
|
||||
proc_create_seq_data("ap", 0, ap->proc, &prism2_ap_proc_seqops, ap);
|
||||
#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */
|
||||
|
||||
}
|
||||
|
@ -1106,18 +1060,6 @@ static int prism2_sta_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int prism2_sta_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, prism2_sta_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations prism2_sta_proc_fops = {
|
||||
.open = prism2_sta_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static void handle_add_proc_queue(struct work_struct *work)
|
||||
{
|
||||
struct ap_data *ap = container_of(work, struct ap_data,
|
||||
|
@ -1138,9 +1080,9 @@ static void handle_add_proc_queue(struct work_struct *work)
|
|||
|
||||
if (sta) {
|
||||
sprintf(name, "%pM", sta->addr);
|
||||
sta->proc = proc_create_data(
|
||||
sta->proc = proc_create_single_data(
|
||||
name, 0, ap->proc,
|
||||
&prism2_sta_proc_fops, sta);
|
||||
prism2_sta_proc_show, sta);
|
||||
|
||||
atomic_dec(&sta->users);
|
||||
}
|
||||
|
|
|
@ -2951,19 +2951,6 @@ static int prism2_registers_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int prism2_registers_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, prism2_registers_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations prism2_registers_proc_fops = {
|
||||
.open = prism2_registers_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
#endif /* PRISM2_NO_PROCFS_DEBUG */
|
||||
|
||||
|
||||
|
@ -3279,8 +3266,8 @@ static int hostap_hw_ready(struct net_device *dev)
|
|||
}
|
||||
hostap_init_proc(local);
|
||||
#ifndef PRISM2_NO_PROCFS_DEBUG
|
||||
proc_create_data("registers", 0, local->proc,
|
||||
&prism2_registers_proc_fops, local);
|
||||
proc_create_single_data("registers", 0, local->proc,
|
||||
prism2_registers_proc_show, local);
|
||||
#endif /* PRISM2_NO_PROCFS_DEBUG */
|
||||
hostap_init_ap_proc(local);
|
||||
return 0;
|
||||
|
|
|
@ -43,18 +43,6 @@ static int prism2_debug_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int prism2_debug_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, prism2_debug_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations prism2_debug_proc_fops = {
|
||||
.open = prism2_debug_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif /* PRISM2_NO_PROCFS_DEBUG */
|
||||
|
||||
|
||||
|
@ -95,19 +83,6 @@ static int prism2_stats_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int prism2_stats_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, prism2_stats_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations prism2_stats_proc_fops = {
|
||||
.open = prism2_stats_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
|
||||
static int prism2_wds_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct list_head *ptr = v;
|
||||
|
@ -122,20 +97,20 @@ static int prism2_wds_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
static void *prism2_wds_proc_start(struct seq_file *m, loff_t *_pos)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
read_lock_bh(&local->iface_lock);
|
||||
return seq_list_start(&local->hostap_interfaces, *_pos);
|
||||
}
|
||||
|
||||
static void *prism2_wds_proc_next(struct seq_file *m, void *v, loff_t *_pos)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
return seq_list_next(v, &local->hostap_interfaces, _pos);
|
||||
}
|
||||
|
||||
static void prism2_wds_proc_stop(struct seq_file *m, void *v)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
read_unlock_bh(&local->iface_lock);
|
||||
}
|
||||
|
||||
|
@ -146,27 +121,9 @@ static const struct seq_operations prism2_wds_proc_seqops = {
|
|||
.show = prism2_wds_proc_show,
|
||||
};
|
||||
|
||||
static int prism2_wds_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
int ret = seq_open(file, &prism2_wds_proc_seqops);
|
||||
if (ret == 0) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = PDE_DATA(inode);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct file_operations prism2_wds_proc_fops = {
|
||||
.open = prism2_wds_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
|
||||
static int prism2_bss_list_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
struct list_head *ptr = v;
|
||||
struct hostap_bss_info *bss;
|
||||
|
||||
|
@ -193,20 +150,20 @@ static int prism2_bss_list_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
static void *prism2_bss_list_proc_start(struct seq_file *m, loff_t *_pos)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
spin_lock_bh(&local->lock);
|
||||
return seq_list_start_head(&local->bss_list, *_pos);
|
||||
}
|
||||
|
||||
static void *prism2_bss_list_proc_next(struct seq_file *m, void *v, loff_t *_pos)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
return seq_list_next(v, &local->bss_list, _pos);
|
||||
}
|
||||
|
||||
static void prism2_bss_list_proc_stop(struct seq_file *m, void *v)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
spin_unlock_bh(&local->lock);
|
||||
}
|
||||
|
||||
|
@ -217,24 +174,6 @@ static const struct seq_operations prism2_bss_list_proc_seqops = {
|
|||
.show = prism2_bss_list_proc_show,
|
||||
};
|
||||
|
||||
static int prism2_bss_list_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
int ret = seq_open(file, &prism2_bss_list_proc_seqops);
|
||||
if (ret == 0) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = PDE_DATA(inode);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct file_operations prism2_bss_list_proc_fops = {
|
||||
.open = prism2_bss_list_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
|
||||
static int prism2_crypt_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
|
@ -252,19 +191,6 @@ static int prism2_crypt_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int prism2_crypt_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, prism2_crypt_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations prism2_crypt_proc_fops = {
|
||||
.open = prism2_crypt_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
|
||||
static ssize_t prism2_pda_proc_read(struct file *file, char __user *buf,
|
||||
size_t count, loff_t *_pos)
|
||||
{
|
||||
|
@ -342,7 +268,7 @@ static int prism2_io_debug_proc_read(char *page, char **start, off_t off,
|
|||
#ifndef PRISM2_NO_STATION_MODES
|
||||
static int prism2_scan_results_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
unsigned long entry;
|
||||
int i, len;
|
||||
struct hfa384x_hostscan_result *scanres;
|
||||
|
@ -392,7 +318,7 @@ static int prism2_scan_results_proc_show(struct seq_file *m, void *v)
|
|||
|
||||
static void *prism2_scan_results_proc_start(struct seq_file *m, loff_t *_pos)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
spin_lock_bh(&local->lock);
|
||||
|
||||
/* We have a header (pos 0) + N results to show (pos 1...N) */
|
||||
|
@ -403,7 +329,7 @@ static void *prism2_scan_results_proc_start(struct seq_file *m, loff_t *_pos)
|
|||
|
||||
static void *prism2_scan_results_proc_next(struct seq_file *m, void *v, loff_t *_pos)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
|
||||
++*_pos;
|
||||
if (*_pos > local->last_scan_results_count)
|
||||
|
@ -413,7 +339,7 @@ static void *prism2_scan_results_proc_next(struct seq_file *m, void *v, loff_t *
|
|||
|
||||
static void prism2_scan_results_proc_stop(struct seq_file *m, void *v)
|
||||
{
|
||||
local_info_t *local = m->private;
|
||||
local_info_t *local = PDE_DATA(file_inode(m->file));
|
||||
spin_unlock_bh(&local->lock);
|
||||
}
|
||||
|
||||
|
@ -423,25 +349,6 @@ static const struct seq_operations prism2_scan_results_proc_seqops = {
|
|||
.stop = prism2_scan_results_proc_stop,
|
||||
.show = prism2_scan_results_proc_show,
|
||||
};
|
||||
|
||||
static int prism2_scan_results_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
int ret = seq_open(file, &prism2_scan_results_proc_seqops);
|
||||
if (ret == 0) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = PDE_DATA(inode);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct file_operations prism2_scan_results_proc_fops = {
|
||||
.open = prism2_scan_results_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
|
||||
#endif /* PRISM2_NO_STATION_MODES */
|
||||
|
||||
|
||||
|
@ -463,29 +370,29 @@ void hostap_init_proc(local_info_t *local)
|
|||
}
|
||||
|
||||
#ifndef PRISM2_NO_PROCFS_DEBUG
|
||||
proc_create_data("debug", 0, local->proc,
|
||||
&prism2_debug_proc_fops, local);
|
||||
proc_create_single_data("debug", 0, local->proc,
|
||||
prism2_debug_proc_show, local);
|
||||
#endif /* PRISM2_NO_PROCFS_DEBUG */
|
||||
proc_create_data("stats", 0, local->proc,
|
||||
&prism2_stats_proc_fops, local);
|
||||
proc_create_data("wds", 0, local->proc,
|
||||
&prism2_wds_proc_fops, local);
|
||||
proc_create_single_data("stats", 0, local->proc, prism2_stats_proc_show,
|
||||
local);
|
||||
proc_create_seq_data("wds", 0, local->proc,
|
||||
&prism2_wds_proc_seqops, local);
|
||||
proc_create_data("pda", 0, local->proc,
|
||||
&prism2_pda_proc_fops, local);
|
||||
proc_create_data("aux_dump", 0, local->proc,
|
||||
local->func->read_aux_fops ?: &prism2_aux_dump_proc_fops,
|
||||
local);
|
||||
proc_create_data("bss_list", 0, local->proc,
|
||||
&prism2_bss_list_proc_fops, local);
|
||||
proc_create_data("crypt", 0, local->proc,
|
||||
&prism2_crypt_proc_fops, local);
|
||||
proc_create_seq_data("bss_list", 0, local->proc,
|
||||
&prism2_bss_list_proc_seqops, local);
|
||||
proc_create_single_data("crypt", 0, local->proc, prism2_crypt_proc_show,
|
||||
local);
|
||||
#ifdef PRISM2_IO_DEBUG
|
||||
proc_create_data("io_debug", 0, local->proc,
|
||||
&prism2_io_debug_proc_fops, local);
|
||||
proc_create_single_data("io_debug", 0, local->proc,
|
||||
prism2_debug_proc_show, local);
|
||||
#endif /* PRISM2_IO_DEBUG */
|
||||
#ifndef PRISM2_NO_STATION_MODES
|
||||
proc_create_data("scan_results", 0, local->proc,
|
||||
&prism2_scan_results_proc_fops, local);
|
||||
proc_create_seq_data("scan_results", 0, local->proc,
|
||||
&prism2_scan_results_proc_seqops, local);
|
||||
#endif /* PRISM2_NO_STATION_MODES */
|
||||
}
|
||||
|
||||
|
|
|
@ -2663,19 +2663,6 @@ static int ray_cs_proc_show(struct seq_file *m, void *v)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ray_cs_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, ray_cs_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations ray_cs_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ray_cs_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif
|
||||
/*===========================================================================*/
|
||||
static int build_auth_frame(ray_dev_t *local, UCHAR *dest, int auth_type)
|
||||
|
@ -2814,7 +2801,7 @@ static int __init init_ray_cs(void)
|
|||
#ifdef CONFIG_PROC_FS
|
||||
proc_mkdir("driver/ray_cs", NULL);
|
||||
|
||||
proc_create("driver/ray_cs/ray_cs", 0, NULL, &ray_cs_proc_fops);
|
||||
proc_create_single("driver/ray_cs/ray_cs", 0, NULL, ray_cs_proc_show);
|
||||
proc_create("driver/ray_cs/essid", 0200, NULL, &ray_cs_essid_proc_fops);
|
||||
proc_create_data("driver/ray_cs/net_type", 0200, NULL, &int_proc_fops,
|
||||
&net_type);
|
||||
|
|
|
@ -45,18 +45,6 @@ nubus_devices_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int nubus_devices_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, nubus_devices_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations nubus_devices_proc_fops = {
|
||||
.open = nubus_devices_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static struct proc_dir_entry *proc_bus_nubus_dir;
|
||||
|
||||
/*
|
||||
|
@ -149,18 +137,6 @@ static int nubus_proc_rsrc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int nubus_proc_rsrc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, nubus_proc_rsrc_show, inode);
|
||||
}
|
||||
|
||||
static const struct file_operations nubus_proc_rsrc_fops = {
|
||||
.open = nubus_proc_rsrc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
void nubus_proc_add_rsrc_mem(struct proc_dir_entry *procdir,
|
||||
const struct nubus_dirent *ent,
|
||||
unsigned int size)
|
||||
|
@ -176,8 +152,8 @@ void nubus_proc_add_rsrc_mem(struct proc_dir_entry *procdir,
|
|||
pde_data = nubus_proc_alloc_pde_data(nubus_dirptr(ent), size);
|
||||
else
|
||||
pde_data = NULL;
|
||||
proc_create_data(name, S_IFREG | 0444, procdir,
|
||||
&nubus_proc_rsrc_fops, pde_data);
|
||||
proc_create_single_data(name, S_IFREG | 0444, procdir,
|
||||
nubus_proc_rsrc_show, pde_data);
|
||||
}
|
||||
|
||||
void nubus_proc_add_rsrc(struct proc_dir_entry *procdir,
|
||||
|
@ -190,32 +166,21 @@ void nubus_proc_add_rsrc(struct proc_dir_entry *procdir,
|
|||
return;
|
||||
|
||||
snprintf(name, sizeof(name), "%x", ent->type);
|
||||
proc_create_data(name, S_IFREG | 0444, procdir,
|
||||
&nubus_proc_rsrc_fops,
|
||||
nubus_proc_alloc_pde_data(data, 0));
|
||||
proc_create_single_data(name, S_IFREG | 0444, procdir,
|
||||
nubus_proc_rsrc_show,
|
||||
nubus_proc_alloc_pde_data(data, 0));
|
||||
}
|
||||
|
||||
/*
|
||||
* /proc/nubus stuff
|
||||
*/
|
||||
|
||||
static int nubus_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, nubus_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations nubus_proc_fops = {
|
||||
.open = nubus_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
void __init nubus_proc_init(void)
|
||||
{
|
||||
proc_create("nubus", 0, NULL, &nubus_proc_fops);
|
||||
proc_create_single("nubus", 0, NULL, nubus_proc_show);
|
||||
proc_bus_nubus_dir = proc_mkdir("bus/nubus", NULL);
|
||||
if (!proc_bus_nubus_dir)
|
||||
return;
|
||||
proc_create("devices", 0, proc_bus_nubus_dir, &nubus_devices_proc_fops);
|
||||
proc_create_single("devices", 0, proc_bus_nubus_dir,
|
||||
nubus_devices_proc_show);
|
||||
}
|
||||
|
|
|
@ -1108,19 +1108,6 @@ static int ccio_proc_info(struct seq_file *m, void *p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ccio_proc_info_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, &ccio_proc_info, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations ccio_proc_info_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ccio_proc_info_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int ccio_proc_bitmap_info(struct seq_file *m, void *p)
|
||||
{
|
||||
struct ioc *ioc = ioc_list;
|
||||
|
@ -1135,19 +1122,6 @@ static int ccio_proc_bitmap_info(struct seq_file *m, void *p)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ccio_proc_bitmap_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, &ccio_proc_bitmap_info, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations ccio_proc_bitmap_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ccio_proc_bitmap_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
/**
|
||||
|
@ -1589,10 +1563,10 @@ static int __init ccio_probe(struct parisc_device *dev)
|
|||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
if (ioc_count == 0) {
|
||||
proc_create(MODULE_NAME, 0, proc_runway_root,
|
||||
&ccio_proc_info_fops);
|
||||
proc_create(MODULE_NAME"-bitmap", 0, proc_runway_root,
|
||||
&ccio_proc_bitmap_fops);
|
||||
proc_create_single(MODULE_NAME, 0, proc_runway_root,
|
||||
ccio_proc_info);
|
||||
proc_create_single(MODULE_NAME"-bitmap", 0, proc_runway_root,
|
||||
ccio_proc_bitmap_info);
|
||||
}
|
||||
#endif
|
||||
ioc_count++;
|
||||
|
|
|
@ -1863,20 +1863,6 @@ static int sba_proc_info(struct seq_file *m, void *p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
sba_proc_open(struct inode *i, struct file *f)
|
||||
{
|
||||
return single_open(f, &sba_proc_info, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations sba_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = sba_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int
|
||||
sba_proc_bitmap_info(struct seq_file *m, void *p)
|
||||
{
|
||||
|
@ -1889,20 +1875,6 @@ sba_proc_bitmap_info(struct seq_file *m, void *p)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
sba_proc_bitmap_open(struct inode *i, struct file *f)
|
||||
{
|
||||
return single_open(f, &sba_proc_bitmap_info, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations sba_proc_bitmap_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = sba_proc_bitmap_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
static const struct parisc_device_id sba_tbl[] __initconst = {
|
||||
|
@ -2014,8 +1986,8 @@ static int __init sba_driver_callback(struct parisc_device *dev)
|
|||
break;
|
||||
}
|
||||
|
||||
proc_create("sba_iommu", 0, root, &sba_proc_fops);
|
||||
proc_create("sba_iommu-bitmap", 0, root, &sba_proc_bitmap_fops);
|
||||
proc_create_single("sba_iommu", 0, root, sba_proc_info);
|
||||
proc_create_single("sba_iommu-bitmap", 0, root, sba_proc_bitmap_info);
|
||||
#endif
|
||||
|
||||
parisc_has_iommu();
|
||||
|
|
|
@ -435,25 +435,12 @@ int pci_proc_detach_bus(struct pci_bus *bus)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int proc_bus_pci_dev_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &proc_bus_pci_devices_op);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_bus_pci_dev_operations = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = proc_bus_pci_dev_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static int __init pci_proc_init(void)
|
||||
{
|
||||
struct pci_dev *dev = NULL;
|
||||
proc_bus_pci_dir = proc_mkdir("bus/pci", NULL);
|
||||
proc_create("devices", 0, proc_bus_pci_dir,
|
||||
&proc_bus_pci_dev_operations);
|
||||
proc_create_seq("devices", 0, proc_bus_pci_dir,
|
||||
&proc_bus_pci_devices_op);
|
||||
proc_initialized = 1;
|
||||
for_each_pci_dev(dev)
|
||||
pci_proc_attach_device(dev);
|
||||
|
|
|
@ -1689,19 +1689,6 @@ static int version_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int version_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, version_proc_show, PDE_DATA(inode));
|
||||
}
|
||||
|
||||
static const struct file_operations version_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = version_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/*
|
||||
* Proc and module init
|
||||
*/
|
||||
|
@ -1722,8 +1709,8 @@ static void create_toshiba_proc_entries(struct toshiba_acpi_dev *dev)
|
|||
if (dev->hotkey_dev)
|
||||
proc_create_data("keys", S_IRUGO | S_IWUSR, toshiba_proc_dir,
|
||||
&keys_proc_fops, dev);
|
||||
proc_create_data("version", S_IRUGO, toshiba_proc_dir,
|
||||
&version_proc_fops, dev);
|
||||
proc_create_single_data("version", S_IRUGO, toshiba_proc_dir,
|
||||
version_proc_show, dev);
|
||||
}
|
||||
|
||||
static void remove_toshiba_proc_entries(struct toshiba_acpi_dev *dev)
|
||||
|
|
|
@ -47,19 +47,6 @@ static int pnpconfig_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int pnpconfig_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, pnpconfig_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations pnpconfig_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = pnpconfig_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int escd_info_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct escd_info_struc escd;
|
||||
|
@ -74,19 +61,6 @@ static int escd_info_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int escd_info_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, escd_info_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations escd_info_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = escd_info_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
#define MAX_SANE_ESCD_SIZE (32*1024)
|
||||
static int escd_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
|
@ -129,19 +103,6 @@ static int escd_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int escd_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, escd_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations escd_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = escd_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int pnp_legacyres_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
void *buf;
|
||||
|
@ -159,19 +120,6 @@ static int pnp_legacyres_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int pnp_legacyres_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, pnp_legacyres_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations pnp_legacyres_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = pnp_legacyres_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int pnp_devices_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct pnp_bios_node *node;
|
||||
|
@ -202,19 +150,6 @@ static int pnp_devices_proc_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int pnp_devices_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, pnp_devices_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations pnp_devices_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = pnp_devices_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int pnpbios_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
void *data = m->private;
|
||||
|
@ -318,12 +253,13 @@ int __init pnpbios_proc_init(void)
|
|||
proc_pnp_boot = proc_mkdir("boot", proc_pnp);
|
||||
if (!proc_pnp_boot)
|
||||
return -EIO;
|
||||
proc_create("devices", 0, proc_pnp, &pnp_devices_proc_fops);
|
||||
proc_create("configuration_info", 0, proc_pnp, &pnpconfig_proc_fops);
|
||||
proc_create("escd_info", 0, proc_pnp, &escd_info_proc_fops);
|
||||
proc_create("escd", S_IRUSR, proc_pnp, &escd_proc_fops);
|
||||
proc_create("legacy_device_resources", 0, proc_pnp, &pnp_legacyres_proc_fops);
|
||||
|
||||
proc_create_single("devices", 0, proc_pnp, pnp_devices_proc_show);
|
||||
proc_create_single("configuration_info", 0, proc_pnp,
|
||||
pnpconfig_proc_show);
|
||||
proc_create_single("escd_info", 0, proc_pnp, escd_info_proc_show);
|
||||
proc_create_single("escd", S_IRUSR, proc_pnp, escd_proc_show);
|
||||
proc_create_single("legacy_device_resources", 0, proc_pnp,
|
||||
pnp_legacyres_proc_show);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -107,40 +107,11 @@ static int rtc_proc_show(struct seq_file *seq, void *offset)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int rtc_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
int ret;
|
||||
struct rtc_device *rtc = PDE_DATA(inode);
|
||||
|
||||
if (!try_module_get(rtc->owner))
|
||||
return -ENODEV;
|
||||
|
||||
ret = single_open(file, rtc_proc_show, rtc);
|
||||
if (ret)
|
||||
module_put(rtc->owner);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rtc_proc_release(struct inode *inode, struct file *file)
|
||||
{
|
||||
int res = single_release(inode, file);
|
||||
struct rtc_device *rtc = PDE_DATA(inode);
|
||||
|
||||
module_put(rtc->owner);
|
||||
return res;
|
||||
}
|
||||
|
||||
static const struct file_operations rtc_proc_fops = {
|
||||
.open = rtc_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = rtc_proc_release,
|
||||
};
|
||||
|
||||
void rtc_proc_add_device(struct rtc_device *rtc)
|
||||
{
|
||||
if (is_rtc_hctosys(rtc))
|
||||
proc_create_data("driver/rtc", 0, NULL, &rtc_proc_fops, rtc);
|
||||
proc_create_single_data("driver/rtc", 0, NULL, rtc_proc_show,
|
||||
rtc);
|
||||
}
|
||||
|
||||
void rtc_proc_del_device(struct rtc_device *rtc)
|
||||
|
|
|
@ -131,19 +131,6 @@ static const struct seq_operations dasd_devices_seq_ops = {
|
|||
.show = dasd_devices_show,
|
||||
};
|
||||
|
||||
static int dasd_devices_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &dasd_devices_seq_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations dasd_devices_file_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = dasd_devices_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DASD_PROFILE
|
||||
static int dasd_stats_all_block_on(void)
|
||||
{
|
||||
|
@ -352,10 +339,10 @@ dasd_proc_init(void)
|
|||
dasd_proc_root_entry = proc_mkdir("dasd", NULL);
|
||||
if (!dasd_proc_root_entry)
|
||||
goto out_nodasd;
|
||||
dasd_devices_entry = proc_create("devices",
|
||||
dasd_devices_entry = proc_create_seq("devices",
|
||||
S_IFREG | S_IRUGO | S_IWUSR,
|
||||
dasd_proc_root_entry,
|
||||
&dasd_devices_file_ops);
|
||||
&dasd_devices_seq_ops);
|
||||
if (!dasd_devices_entry)
|
||||
goto out_nodevices;
|
||||
dasd_statistics_entry = proc_create("statistics",
|
||||
|
|
|
@ -105,29 +105,14 @@ static const struct seq_operations tape_proc_seq = {
|
|||
.show = tape_proc_show,
|
||||
};
|
||||
|
||||
static int tape_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &tape_proc_seq);
|
||||
}
|
||||
|
||||
static const struct file_operations tape_proc_ops =
|
||||
{
|
||||
.owner = THIS_MODULE,
|
||||
.open = tape_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
/*
|
||||
* Initialize procfs stuff on startup
|
||||
*/
|
||||
void
|
||||
tape_proc_init(void)
|
||||
{
|
||||
tape_proc_devices =
|
||||
proc_create("tapedevices", S_IFREG | S_IRUGO | S_IWUSR, NULL,
|
||||
&tape_proc_ops);
|
||||
tape_proc_devices = proc_create_seq("tapedevices",
|
||||
S_IFREG | S_IRUGO | S_IWUSR, NULL, &tape_proc_seq);
|
||||
if (tape_proc_devices == NULL) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -2731,53 +2731,6 @@ proc_show_rdrv_40(struct seq_file *m, void *v)
|
|||
return proc_show_rdrv(m, m->private, 30, 39);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* seq_file wrappers for procfile show routines.
|
||||
*/
|
||||
static int mega_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
adapter_t *adapter = proc_get_parent_data(inode);
|
||||
int (*show)(struct seq_file *, void *) = PDE_DATA(inode);
|
||||
|
||||
return single_open(file, show, adapter);
|
||||
}
|
||||
|
||||
static const struct file_operations mega_proc_fops = {
|
||||
.open = mega_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
/*
|
||||
* Table of proc files we need to create.
|
||||
*/
|
||||
struct mega_proc_file {
|
||||
const char *name;
|
||||
unsigned short ptr_offset;
|
||||
int (*show) (struct seq_file *m, void *v);
|
||||
};
|
||||
|
||||
static const struct mega_proc_file mega_proc_files[] = {
|
||||
{ "config", offsetof(adapter_t, proc_read), proc_show_config },
|
||||
{ "stat", offsetof(adapter_t, proc_stat), proc_show_stat },
|
||||
{ "mailbox", offsetof(adapter_t, proc_mbox), proc_show_mbox },
|
||||
#if MEGA_HAVE_ENH_PROC
|
||||
{ "rebuild-rate", offsetof(adapter_t, proc_rr), proc_show_rebuild_rate },
|
||||
{ "battery-status", offsetof(adapter_t, proc_battery), proc_show_battery },
|
||||
{ "diskdrives-ch0", offsetof(adapter_t, proc_pdrvstat[0]), proc_show_pdrv_ch0 },
|
||||
{ "diskdrives-ch1", offsetof(adapter_t, proc_pdrvstat[1]), proc_show_pdrv_ch1 },
|
||||
{ "diskdrives-ch2", offsetof(adapter_t, proc_pdrvstat[2]), proc_show_pdrv_ch2 },
|
||||
{ "diskdrives-ch3", offsetof(adapter_t, proc_pdrvstat[3]), proc_show_pdrv_ch3 },
|
||||
{ "raiddrives-0-9", offsetof(adapter_t, proc_rdrvstat[0]), proc_show_rdrv_10 },
|
||||
{ "raiddrives-10-19", offsetof(adapter_t, proc_rdrvstat[1]), proc_show_rdrv_20 },
|
||||
{ "raiddrives-20-29", offsetof(adapter_t, proc_rdrvstat[2]), proc_show_rdrv_30 },
|
||||
{ "raiddrives-30-39", offsetof(adapter_t, proc_rdrvstat[3]), proc_show_rdrv_40 },
|
||||
#endif
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
/**
|
||||
* mega_create_proc_entry()
|
||||
* @index - index in soft state array
|
||||
|
@ -2788,31 +2741,45 @@ static const struct mega_proc_file mega_proc_files[] = {
|
|||
static void
|
||||
mega_create_proc_entry(int index, struct proc_dir_entry *parent)
|
||||
{
|
||||
const struct mega_proc_file *f;
|
||||
adapter_t *adapter = hba_soft_state[index];
|
||||
struct proc_dir_entry *dir, *de, **ppde;
|
||||
u8 string[16];
|
||||
adapter_t *adapter = hba_soft_state[index];
|
||||
struct proc_dir_entry *dir;
|
||||
u8 string[16];
|
||||
|
||||
sprintf(string, "hba%d", adapter->host->host_no);
|
||||
|
||||
dir = adapter->controller_proc_dir_entry =
|
||||
proc_mkdir_data(string, 0, parent, adapter);
|
||||
if(!dir) {
|
||||
dir = proc_mkdir_data(string, 0, parent, adapter);
|
||||
if (!dir) {
|
||||
dev_warn(&adapter->dev->dev, "proc_mkdir failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (f = mega_proc_files; f->name; f++) {
|
||||
de = proc_create_data(f->name, S_IRUSR, dir, &mega_proc_fops,
|
||||
f->show);
|
||||
if (!de) {
|
||||
dev_warn(&adapter->dev->dev, "proc_create failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
ppde = (void *)adapter + f->ptr_offset;
|
||||
*ppde = de;
|
||||
}
|
||||
proc_create_single_data("config", S_IRUSR, dir,
|
||||
proc_show_config, adapter);
|
||||
proc_create_single_data("stat", S_IRUSR, dir,
|
||||
proc_show_stat, adapter);
|
||||
proc_create_single_data("mailbox", S_IRUSR, dir,
|
||||
proc_show_mbox, adapter);
|
||||
#if MEGA_HAVE_ENH_PROC
|
||||
proc_create_single_data("rebuild-rate", S_IRUSR, dir,
|
||||
proc_show_rebuild_rate, adapter);
|
||||
proc_create_single_data("battery-status", S_IRUSR, dir,
|
||||
proc_show_battery, adapter);
|
||||
proc_create_single_data("diskdrives-ch0", S_IRUSR, dir,
|
||||
proc_show_pdrv_ch0, adapter);
|
||||
proc_create_single_data("diskdrives-ch1", S_IRUSR, dir,
|
||||
proc_show_pdrv_ch1, adapter);
|
||||
proc_create_single_data("diskdrives-ch2", S_IRUSR, dir,
|
||||
proc_show_pdrv_ch2, adapter);
|
||||
proc_create_single_data("diskdrives-ch3", S_IRUSR, dir,
|
||||
proc_show_pdrv_ch3, adapter);
|
||||
proc_create_single_data("raiddrives-0-9", S_IRUSR, dir,
|
||||
proc_show_rdrv_10, adapter);
|
||||
proc_create_single_data("raiddrives-10-19", S_IRUSR, dir,
|
||||
proc_show_rdrv_20, adapter);
|
||||
proc_create_single_data("raiddrives-20-29", S_IRUSR, dir,
|
||||
proc_show_rdrv_30, adapter);
|
||||
proc_create_single_data("raiddrives-30-39", S_IRUSR, dir,
|
||||
proc_show_rdrv_40, adapter);
|
||||
#endif
|
||||
}
|
||||
|
||||
#else
|
||||
|
@ -4580,6 +4547,7 @@ megaraid_remove_one(struct pci_dev *pdev)
|
|||
{
|
||||
struct Scsi_Host *host = pci_get_drvdata(pdev);
|
||||
adapter_t *adapter = (adapter_t *)host->hostdata;
|
||||
char buf[12] = { 0 };
|
||||
|
||||
scsi_remove_host(host);
|
||||
|
||||
|
@ -4594,44 +4562,8 @@ megaraid_remove_one(struct pci_dev *pdev)
|
|||
|
||||
mega_free_sgl(adapter);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
if (adapter->controller_proc_dir_entry) {
|
||||
remove_proc_entry("stat", adapter->controller_proc_dir_entry);
|
||||
remove_proc_entry("config",
|
||||
adapter->controller_proc_dir_entry);
|
||||
remove_proc_entry("mailbox",
|
||||
adapter->controller_proc_dir_entry);
|
||||
#if MEGA_HAVE_ENH_PROC
|
||||
remove_proc_entry("rebuild-rate",
|
||||
adapter->controller_proc_dir_entry);
|
||||
remove_proc_entry("battery-status",
|
||||
adapter->controller_proc_dir_entry);
|
||||
|
||||
remove_proc_entry("diskdrives-ch0",
|
||||
adapter->controller_proc_dir_entry);
|
||||
remove_proc_entry("diskdrives-ch1",
|
||||
adapter->controller_proc_dir_entry);
|
||||
remove_proc_entry("diskdrives-ch2",
|
||||
adapter->controller_proc_dir_entry);
|
||||
remove_proc_entry("diskdrives-ch3",
|
||||
adapter->controller_proc_dir_entry);
|
||||
|
||||
remove_proc_entry("raiddrives-0-9",
|
||||
adapter->controller_proc_dir_entry);
|
||||
remove_proc_entry("raiddrives-10-19",
|
||||
adapter->controller_proc_dir_entry);
|
||||
remove_proc_entry("raiddrives-20-29",
|
||||
adapter->controller_proc_dir_entry);
|
||||
remove_proc_entry("raiddrives-30-39",
|
||||
adapter->controller_proc_dir_entry);
|
||||
#endif
|
||||
{
|
||||
char buf[12] = { 0 };
|
||||
sprintf(buf, "hba%d", adapter->host->host_no);
|
||||
remove_proc_entry(buf, mega_proc_dir_entry);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
sprintf(buf, "hba%d", adapter->host->host_no);
|
||||
remove_proc_subtree(buf, mega_proc_dir_entry);
|
||||
|
||||
pci_free_consistent(adapter->dev, MEGA_BUFFER_SIZE,
|
||||
adapter->mega_buffer, adapter->buf_dma_handle);
|
||||
|
|
|
@ -814,18 +814,6 @@ typedef struct {
|
|||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
struct proc_dir_entry *controller_proc_dir_entry;
|
||||
struct proc_dir_entry *proc_read;
|
||||
struct proc_dir_entry *proc_stat;
|
||||
struct proc_dir_entry *proc_mbox;
|
||||
|
||||
#if MEGA_HAVE_ENH_PROC
|
||||
struct proc_dir_entry *proc_rr;
|
||||
struct proc_dir_entry *proc_battery;
|
||||
#define MAX_PROC_CHANNELS 4
|
||||
struct proc_dir_entry *proc_pdrvstat[MAX_PROC_CHANNELS];
|
||||
struct proc_dir_entry *proc_rdrvstat[MAX_PROC_CHANNELS];
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
int has_64bit_addr; /* are we using 64-bit addressing */
|
||||
|
|
|
@ -66,7 +66,6 @@ static int sg_version_num = 30536; /* 2 digits for each component */
|
|||
static char *sg_version_date = "20140603";
|
||||
|
||||
static int sg_proc_init(void);
|
||||
static void sg_proc_cleanup(void);
|
||||
#endif
|
||||
|
||||
#define SG_ALLOW_DIO_DEF 0
|
||||
|
@ -1661,7 +1660,7 @@ static void __exit
|
|||
exit_sg(void)
|
||||
{
|
||||
#ifdef CONFIG_SCSI_PROC_FS
|
||||
sg_proc_cleanup();
|
||||
remove_proc_subtree("scsi/sg", NULL);
|
||||
#endif /* CONFIG_SCSI_PROC_FS */
|
||||
scsi_unregister_interface(&sg_interface);
|
||||
class_destroy(sg_sysfs_class);
|
||||
|
@ -2274,11 +2273,6 @@ sg_get_dev(int dev)
|
|||
}
|
||||
|
||||
#ifdef CONFIG_SCSI_PROC_FS
|
||||
|
||||
static struct proc_dir_entry *sg_proc_sgp = NULL;
|
||||
|
||||
static char sg_proc_sg_dirname[] = "scsi/sg";
|
||||
|
||||
static int sg_proc_seq_show_int(struct seq_file *s, void *v);
|
||||
|
||||
static int sg_proc_single_open_adio(struct inode *inode, struct file *file);
|
||||
|
@ -2306,37 +2300,11 @@ static const struct file_operations dressz_fops = {
|
|||
};
|
||||
|
||||
static int sg_proc_seq_show_version(struct seq_file *s, void *v);
|
||||
static int sg_proc_single_open_version(struct inode *inode, struct file *file);
|
||||
static const struct file_operations version_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = sg_proc_single_open_version,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int sg_proc_seq_show_devhdr(struct seq_file *s, void *v);
|
||||
static int sg_proc_single_open_devhdr(struct inode *inode, struct file *file);
|
||||
static const struct file_operations devhdr_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = sg_proc_single_open_devhdr,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int sg_proc_seq_show_dev(struct seq_file *s, void *v);
|
||||
static int sg_proc_open_dev(struct inode *inode, struct file *file);
|
||||
static void * dev_seq_start(struct seq_file *s, loff_t *pos);
|
||||
static void * dev_seq_next(struct seq_file *s, void *v, loff_t *pos);
|
||||
static void dev_seq_stop(struct seq_file *s, void *v);
|
||||
static const struct file_operations dev_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = sg_proc_open_dev,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
static const struct seq_operations dev_seq_ops = {
|
||||
.start = dev_seq_start,
|
||||
.next = dev_seq_next,
|
||||
|
@ -2345,14 +2313,6 @@ static const struct seq_operations dev_seq_ops = {
|
|||
};
|
||||
|
||||
static int sg_proc_seq_show_devstrs(struct seq_file *s, void *v);
|
||||
static int sg_proc_open_devstrs(struct inode *inode, struct file *file);
|
||||
static const struct file_operations devstrs_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = sg_proc_open_devstrs,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
static const struct seq_operations devstrs_seq_ops = {
|
||||
.start = dev_seq_start,
|
||||
.next = dev_seq_next,
|
||||
|
@ -2361,14 +2321,6 @@ static const struct seq_operations devstrs_seq_ops = {
|
|||
};
|
||||
|
||||
static int sg_proc_seq_show_debug(struct seq_file *s, void *v);
|
||||
static int sg_proc_open_debug(struct inode *inode, struct file *file);
|
||||
static const struct file_operations debug_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = sg_proc_open_debug,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
static const struct seq_operations debug_seq_ops = {
|
||||
.start = dev_seq_start,
|
||||
.next = dev_seq_next,
|
||||
|
@ -2376,52 +2328,25 @@ static const struct seq_operations debug_seq_ops = {
|
|||
.show = sg_proc_seq_show_debug,
|
||||
};
|
||||
|
||||
|
||||
struct sg_proc_leaf {
|
||||
const char * name;
|
||||
const struct file_operations * fops;
|
||||
};
|
||||
|
||||
static const struct sg_proc_leaf sg_proc_leaf_arr[] = {
|
||||
{"allow_dio", &adio_fops},
|
||||
{"debug", &debug_fops},
|
||||
{"def_reserved_size", &dressz_fops},
|
||||
{"device_hdr", &devhdr_fops},
|
||||
{"devices", &dev_fops},
|
||||
{"device_strs", &devstrs_fops},
|
||||
{"version", &version_fops}
|
||||
};
|
||||
|
||||
static int
|
||||
sg_proc_init(void)
|
||||
{
|
||||
int num_leaves = ARRAY_SIZE(sg_proc_leaf_arr);
|
||||
int k;
|
||||
struct proc_dir_entry *p;
|
||||
|
||||
sg_proc_sgp = proc_mkdir(sg_proc_sg_dirname, NULL);
|
||||
if (!sg_proc_sgp)
|
||||
p = proc_mkdir("scsi/sg", NULL);
|
||||
if (!p)
|
||||
return 1;
|
||||
for (k = 0; k < num_leaves; ++k) {
|
||||
const struct sg_proc_leaf *leaf = &sg_proc_leaf_arr[k];
|
||||
umode_t mask = leaf->fops->write ? S_IRUGO | S_IWUSR : S_IRUGO;
|
||||
proc_create(leaf->name, mask, sg_proc_sgp, leaf->fops);
|
||||
}
|
||||
|
||||
proc_create("allow_dio", S_IRUGO | S_IWUSR, p, &adio_fops);
|
||||
proc_create_seq("debug", S_IRUGO, p, &debug_seq_ops);
|
||||
proc_create("def_reserved_size", S_IRUGO | S_IWUSR, p, &dressz_fops);
|
||||
proc_create_single("device_hdr", S_IRUGO, p, sg_proc_seq_show_devhdr);
|
||||
proc_create_seq("devices", S_IRUGO, p, &dev_seq_ops);
|
||||
proc_create_seq("device_strs", S_IRUGO, p, &devstrs_seq_ops);
|
||||
proc_create_single("version", S_IRUGO, p, sg_proc_seq_show_version);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
sg_proc_cleanup(void)
|
||||
{
|
||||
int k;
|
||||
int num_leaves = ARRAY_SIZE(sg_proc_leaf_arr);
|
||||
|
||||
if (!sg_proc_sgp)
|
||||
return;
|
||||
for (k = 0; k < num_leaves; ++k)
|
||||
remove_proc_entry(sg_proc_leaf_arr[k].name, sg_proc_sgp);
|
||||
remove_proc_entry(sg_proc_sg_dirname, NULL);
|
||||
}
|
||||
|
||||
|
||||
static int sg_proc_seq_show_int(struct seq_file *s, void *v)
|
||||
{
|
||||
|
@ -2482,22 +2407,12 @@ static int sg_proc_seq_show_version(struct seq_file *s, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int sg_proc_single_open_version(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, sg_proc_seq_show_version, NULL);
|
||||
}
|
||||
|
||||
static int sg_proc_seq_show_devhdr(struct seq_file *s, void *v)
|
||||
{
|
||||
seq_puts(s, "host\tchan\tid\tlun\ttype\topens\tqdepth\tbusy\tonline\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sg_proc_single_open_devhdr(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, sg_proc_seq_show_devhdr, NULL);
|
||||
}
|
||||
|
||||
struct sg_proc_deviter {
|
||||
loff_t index;
|
||||
size_t max;
|
||||
|
@ -2531,11 +2446,6 @@ static void dev_seq_stop(struct seq_file *s, void *v)
|
|||
kfree(s->private);
|
||||
}
|
||||
|
||||
static int sg_proc_open_dev(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &dev_seq_ops);
|
||||
}
|
||||
|
||||
static int sg_proc_seq_show_dev(struct seq_file *s, void *v)
|
||||
{
|
||||
struct sg_proc_deviter * it = (struct sg_proc_deviter *) v;
|
||||
|
@ -2562,11 +2472,6 @@ static int sg_proc_seq_show_dev(struct seq_file *s, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int sg_proc_open_devstrs(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &devstrs_seq_ops);
|
||||
}
|
||||
|
||||
static int sg_proc_seq_show_devstrs(struct seq_file *s, void *v)
|
||||
{
|
||||
struct sg_proc_deviter * it = (struct sg_proc_deviter *) v;
|
||||
|
@ -2650,11 +2555,6 @@ static void sg_proc_debug_helper(struct seq_file *s, Sg_device * sdp)
|
|||
}
|
||||
}
|
||||
|
||||
static int sg_proc_open_debug(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &debug_seq_ops);
|
||||
}
|
||||
|
||||
static int sg_proc_seq_show_debug(struct seq_file *s, void *v)
|
||||
{
|
||||
struct sg_proc_deviter * it = (struct sg_proc_deviter *) v;
|
||||
|
|
|
@ -62,25 +62,9 @@ static int comedi_read(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* seq_file wrappers for procfile show routines.
|
||||
*/
|
||||
static int comedi_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, comedi_read, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations comedi_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = comedi_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
void __init comedi_proc_init(void)
|
||||
{
|
||||
if (!proc_create("comedi", 0444, NULL, &comedi_proc_fops))
|
||||
if (!proc_create_single("comedi", 0444, NULL, comedi_read))
|
||||
pr_warn("comedi: unable to create proc entry\n");
|
||||
}
|
||||
|
||||
|
|
|
@ -1506,11 +1506,6 @@ static int fwtty_debugfs_peers_show(struct seq_file *m, void *v)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int fwtty_proc_open(struct inode *inode, struct file *fp)
|
||||
{
|
||||
return single_open(fp, fwtty_proc_show, NULL);
|
||||
}
|
||||
|
||||
static int fwtty_stats_open(struct inode *inode, struct file *fp)
|
||||
{
|
||||
return single_open(fp, fwtty_debugfs_stats_show, inode->i_private);
|
||||
|
@ -1537,14 +1532,6 @@ static const struct file_operations fwtty_peers_fops = {
|
|||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct file_operations fwtty_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = fwtty_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static const struct tty_port_operations fwtty_port_ops = {
|
||||
.dtr_rts = fwtty_port_dtr_rts,
|
||||
.carrier_raised = fwtty_port_carrier_raised,
|
||||
|
@ -1570,7 +1557,7 @@ static const struct tty_operations fwtty_ops = {
|
|||
.tiocmget = fwtty_tiocmget,
|
||||
.tiocmset = fwtty_tiocmset,
|
||||
.get_icount = fwtty_get_icount,
|
||||
.proc_fops = &fwtty_proc_fops,
|
||||
.proc_show = fwtty_proc_show,
|
||||
};
|
||||
|
||||
static const struct tty_operations fwloop_ops = {
|
||||
|
|
|
@ -244,42 +244,6 @@ static const struct seq_operations ipx_seq_socket_ops = {
|
|||
.show = ipx_seq_socket_show,
|
||||
};
|
||||
|
||||
static int ipx_seq_route_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &ipx_seq_route_ops);
|
||||
}
|
||||
|
||||
static int ipx_seq_interface_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &ipx_seq_interface_ops);
|
||||
}
|
||||
|
||||
static int ipx_seq_socket_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &ipx_seq_socket_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations ipx_seq_interface_fops = {
|
||||
.open = ipx_seq_interface_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static const struct file_operations ipx_seq_route_fops = {
|
||||
.open = ipx_seq_route_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static const struct file_operations ipx_seq_socket_fops = {
|
||||
.open = ipx_seq_socket_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static struct proc_dir_entry *ipx_proc_dir;
|
||||
|
||||
int __init ipx_proc_init(void)
|
||||
|
@ -291,16 +255,17 @@ int __init ipx_proc_init(void)
|
|||
|
||||
if (!ipx_proc_dir)
|
||||
goto out;
|
||||
p = proc_create("interface", S_IRUGO,
|
||||
ipx_proc_dir, &ipx_seq_interface_fops);
|
||||
p = proc_create_seq("interface", S_IRUGO, ipx_proc_dir,
|
||||
&ipx_seq_interface_ops);
|
||||
if (!p)
|
||||
goto out_interface;
|
||||
|
||||
p = proc_create("route", S_IRUGO, ipx_proc_dir, &ipx_seq_route_fops);
|
||||
p = proc_create_seq("route", S_IRUGO, ipx_proc_dir, &ipx_seq_route_ops);
|
||||
if (!p)
|
||||
goto out_route;
|
||||
|
||||
p = proc_create("socket", S_IRUGO, ipx_proc_dir, &ipx_seq_socket_fops);
|
||||
p = proc_create_seq("socket", S_IRUGO, ipx_proc_dir,
|
||||
&ipx_seq_socket_ops);
|
||||
if (!p)
|
||||
goto out_socket;
|
||||
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче