2005-04-17 02:20:36 +04:00
/*********************************************************************
2007-02-09 17:24:53 +03:00
*
2005-04-17 02:20:36 +04:00
* Filename : irproc . c
* Version : 1.0
* Description : Various entries in the / proc file system
* Status : Experimental .
* Author : Thomas Davis , < ratbert @ radiks . net >
* Created at : Sat Feb 21 21 : 33 : 24 1998
* Modified at : Sun Nov 14 08 : 54 : 54 1999
* Modified by : Dag Brattli < dagb @ cs . uit . no >
*
* Copyright ( c ) 1998 - 1999 , Dag Brattli < dagb @ cs . uit . no >
2007-02-09 17:24:53 +03:00
* Copyright ( c ) 1998 , Thomas Davis , < ratbert @ radiks . net > ,
2005-04-17 02:20:36 +04:00
* All Rights Reserved .
2007-02-09 17:24:53 +03:00
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation ; either version 2 of
2005-04-17 02:20:36 +04:00
* the License , or ( at your option ) any later version .
2007-02-09 17:24:53 +03:00
*
* I , Thomas Davis , provide no warranty for any of this software .
* This material is provided " AS-IS " and at no charge .
*
2005-04-17 02:20:36 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include <linux/miscdevice.h>
# include <linux/proc_fs.h>
# include <linux/seq_file.h>
# include <linux/module.h>
# include <linux/init.h>
2007-09-12 14:01:34 +04:00
# include <net/net_namespace.h>
2005-04-17 02:20:36 +04:00
# include <net/irda/irda.h>
# include <net/irda/irlap.h>
# include <net/irda/irlmp.h>
extern struct file_operations discovery_seq_fops ;
extern struct file_operations irlap_seq_fops ;
extern struct file_operations irlmp_seq_fops ;
extern struct file_operations irttp_seq_fops ;
extern struct file_operations irias_seq_fops ;
struct irda_entry {
const char * name ;
struct file_operations * fops ;
} ;
struct proc_dir_entry * proc_irda ;
EXPORT_SYMBOL ( proc_irda ) ;
2007-02-09 17:24:53 +03:00
2005-04-17 02:20:36 +04:00
static struct irda_entry irda_dirs [ ] = {
{ " discovery " , & discovery_seq_fops } ,
{ " irttp " , & irttp_seq_fops } ,
{ " irlmp " , & irlmp_seq_fops } ,
{ " irlap " , & irlap_seq_fops } ,
{ " irias " , & irias_seq_fops } ,
} ;
/*
* Function irda_proc_register ( void )
*
* Register irda entry in / proc file system
*
*/
2007-02-09 17:24:53 +03:00
void __init irda_proc_register ( void )
2005-04-17 02:20:36 +04:00
{
int i ;
struct proc_dir_entry * d ;
2007-09-12 14:01:34 +04:00
proc_irda = proc_mkdir ( " irda " , init_net . proc_net ) ;
2005-04-17 02:20:36 +04:00
if ( proc_irda = = NULL )
return ;
proc_irda - > owner = THIS_MODULE ;
for ( i = 0 ; i < ARRAY_SIZE ( irda_dirs ) ; i + + ) {
d = create_proc_entry ( irda_dirs [ i ] . name , 0 , proc_irda ) ;
2007-02-09 17:24:53 +03:00
if ( d )
2005-04-17 02:20:36 +04:00
d - > proc_fops = irda_dirs [ i ] . fops ;
}
}
/*
* Function irda_proc_unregister ( void )
*
* Unregister irda entry in / proc file system
*
*/
2007-07-18 13:16:30 +04:00
void irda_proc_unregister ( void )
2005-04-17 02:20:36 +04:00
{
int i ;
2007-02-09 17:24:53 +03:00
if ( proc_irda ) {
for ( i = 0 ; i < ARRAY_SIZE ( irda_dirs ) ; i + + )
remove_proc_entry ( irda_dirs [ i ] . name , proc_irda ) ;
2005-04-17 02:20:36 +04:00
2007-09-12 14:01:34 +04:00
remove_proc_entry ( " irda " , init_net . proc_net ) ;
2007-02-09 17:24:53 +03:00
proc_irda = NULL ;
}
2005-04-17 02:20:36 +04:00
}