| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /********************************************************************* | 
| YOSHIFUJI Hideaki | 6819bc2 | 2007-02-09 23:24:53 +0900 | [diff] [blame] | 2 | * | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 3 | * Filename:      irproc.c | 
|  | 4 | * Version:       1.0 | 
|  | 5 | * Description:   Various entries in the /proc file system | 
|  | 6 | * Status:        Experimental. | 
|  | 7 | * Author:        Thomas Davis, <ratbert@radiks.net> | 
|  | 8 | * Created at:    Sat Feb 21 21:33:24 1998 | 
|  | 9 | * Modified at:   Sun Nov 14 08:54:54 1999 | 
|  | 10 | * Modified by:   Dag Brattli <dagb@cs.uit.no> | 
|  | 11 | * | 
|  | 12 | *     Copyright (c) 1998-1999, Dag Brattli <dagb@cs.uit.no> | 
| YOSHIFUJI Hideaki | 6819bc2 | 2007-02-09 23:24:53 +0900 | [diff] [blame] | 13 | *     Copyright (c) 1998, Thomas Davis, <ratbert@radiks.net>, | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 | *     All Rights Reserved. | 
| YOSHIFUJI Hideaki | 6819bc2 | 2007-02-09 23:24:53 +0900 | [diff] [blame] | 15 | * | 
|  | 16 | *     This program is free software; you can redistribute it and/or | 
|  | 17 | *     modify it under the terms of the GNU General Public License as | 
|  | 18 | *     published by the Free Software Foundation; either version 2 of | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 19 | *     the License, or (at your option) any later version. | 
| YOSHIFUJI Hideaki | 6819bc2 | 2007-02-09 23:24:53 +0900 | [diff] [blame] | 20 | * | 
|  | 21 | *     I, Thomas Davis, provide no warranty for any of this software. | 
|  | 22 | *     This material is provided "AS-IS" and at no charge. | 
|  | 23 | * | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 24 | ********************************************************************/ | 
|  | 25 |  | 
|  | 26 | #include <linux/miscdevice.h> | 
|  | 27 | #include <linux/proc_fs.h> | 
|  | 28 | #include <linux/seq_file.h> | 
|  | 29 | #include <linux/module.h> | 
|  | 30 | #include <linux/init.h> | 
| Eric W. Biederman | 457c4cb | 2007-09-12 12:01:34 +0200 | [diff] [blame] | 31 | #include <net/net_namespace.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 32 |  | 
|  | 33 | #include <net/irda/irda.h> | 
|  | 34 | #include <net/irda/irlap.h> | 
|  | 35 | #include <net/irda/irlmp.h> | 
|  | 36 |  | 
|  | 37 | extern struct file_operations discovery_seq_fops; | 
|  | 38 | extern struct file_operations irlap_seq_fops; | 
|  | 39 | extern struct file_operations irlmp_seq_fops; | 
|  | 40 | extern struct file_operations irttp_seq_fops; | 
|  | 41 | extern struct file_operations irias_seq_fops; | 
|  | 42 |  | 
|  | 43 | struct irda_entry { | 
|  | 44 | const char *name; | 
|  | 45 | struct file_operations *fops; | 
|  | 46 | }; | 
|  | 47 |  | 
|  | 48 | struct proc_dir_entry *proc_irda; | 
|  | 49 | EXPORT_SYMBOL(proc_irda); | 
| YOSHIFUJI Hideaki | 6819bc2 | 2007-02-09 23:24:53 +0900 | [diff] [blame] | 50 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 51 | static struct irda_entry irda_dirs[] = { | 
|  | 52 | {"discovery",	&discovery_seq_fops}, | 
|  | 53 | {"irttp",	&irttp_seq_fops}, | 
|  | 54 | {"irlmp",	&irlmp_seq_fops}, | 
|  | 55 | {"irlap",	&irlap_seq_fops}, | 
|  | 56 | {"irias",	&irias_seq_fops}, | 
|  | 57 | }; | 
|  | 58 |  | 
|  | 59 | /* | 
|  | 60 | * Function irda_proc_register (void) | 
|  | 61 | * | 
|  | 62 | *    Register irda entry in /proc file system | 
|  | 63 | * | 
|  | 64 | */ | 
| YOSHIFUJI Hideaki | 6819bc2 | 2007-02-09 23:24:53 +0900 | [diff] [blame] | 65 | void __init irda_proc_register(void) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 66 | { | 
|  | 67 | int i; | 
|  | 68 | struct proc_dir_entry *d; | 
|  | 69 |  | 
| Eric W. Biederman | 457c4cb | 2007-09-12 12:01:34 +0200 | [diff] [blame] | 70 | proc_irda = proc_mkdir("irda", init_net.proc_net); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 71 | if (proc_irda == NULL) | 
|  | 72 | return; | 
|  | 73 | proc_irda->owner = THIS_MODULE; | 
|  | 74 |  | 
|  | 75 | for (i=0; i<ARRAY_SIZE(irda_dirs); i++) { | 
|  | 76 | d = create_proc_entry(irda_dirs[i].name, 0, proc_irda); | 
| YOSHIFUJI Hideaki | 6819bc2 | 2007-02-09 23:24:53 +0900 | [diff] [blame] | 77 | if (d) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 78 | d->proc_fops = irda_dirs[i].fops; | 
|  | 79 | } | 
|  | 80 | } | 
|  | 81 |  | 
|  | 82 | /* | 
|  | 83 | * Function irda_proc_unregister (void) | 
|  | 84 | * | 
|  | 85 | *    Unregister irda entry in /proc file system | 
|  | 86 | * | 
|  | 87 | */ | 
| Samuel Ortiz | 75a69ac | 2007-07-18 02:16:30 -0700 | [diff] [blame] | 88 | void irda_proc_unregister(void) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 89 | { | 
|  | 90 | int i; | 
|  | 91 |  | 
| YOSHIFUJI Hideaki | 6819bc2 | 2007-02-09 23:24:53 +0900 | [diff] [blame] | 92 | if (proc_irda) { | 
|  | 93 | for (i=0; i<ARRAY_SIZE(irda_dirs); i++) | 
|  | 94 | remove_proc_entry(irda_dirs[i].name, proc_irda); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 95 |  | 
| Eric W. Biederman | 457c4cb | 2007-09-12 12:01:34 +0200 | [diff] [blame] | 96 | remove_proc_entry("irda", init_net.proc_net); | 
| YOSHIFUJI Hideaki | 6819bc2 | 2007-02-09 23:24:53 +0900 | [diff] [blame] | 97 | proc_irda = NULL; | 
|  | 98 | } | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 99 | } | 
|  | 100 |  | 
|  | 101 |  |