Import 2.2.6pre3
[davej-history.git] / include / net / irda / irmod.h
blob4605b1b7799ae655adc780b8f6c4a00aa1f00ce2
1 /*********************************************************************
2 *
3 * Filename: irmod.h
4 * Version: 0.3
5 * Description: IrDA module and utilities functions
6 * Status: Experimental.
7 * Author: Dag Brattli <dagb@cs.uit.no>
8 * Created at: Mon Dec 15 13:58:52 1997
9 * Modified at: Tue Mar 16 22:27:41 1999
10 * Modified by: Dag Brattli <dagb@cs.uit.no>
12 * Copyright (c) 1998 Dag Brattli, All Rights Reserved.
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License as
16 * published by the Free Software Foundation; either version 2 of
17 * the License, or (at your option) any later version.
19 * Neither Dag Brattli nor University of Tromsø admit liability nor
20 * provide warranty for any of this software. This material is
21 * provided "AS-IS" and at no charg.
23 ********************************************************************/
25 #ifndef IRMOD_H
26 #define IRMOD_H
28 #include <linux/skbuff.h>
29 #include <linux/miscdevice.h>
31 #include <net/irda/irqueue.h>
33 #define IRMGR_IOC_MAGIC 'm'
34 #define IRMGR_IOCTNPC _IO(IRMGR_IOC_MAGIC, 1)
35 #define IRMGR_IOC_MAXNR 1
38 * Events that we pass to the user space manager
40 typedef enum {
41 EVENT_DEVICE_DISCOVERED = 0,
42 EVENT_REQUEST_MODULE,
43 EVENT_IRLAN_START,
44 EVENT_IRLAN_STOP,
45 EVENT_IRLPT_START,
46 EVENT_IRLPT_STOP,
47 EVENT_IROBEX_START,
48 EVENT_IROBEX_STOP,
49 EVENT_IRDA_STOP,
50 EVENT_NEED_PROCESS_CONTEXT,
51 } IRMGR_EVENT;
54 * Event information passed to the IrManager daemon process
56 struct irmanager_event {
57 IRMGR_EVENT event;
58 char devname[10];
59 char info[32];
60 int service;
61 __u32 saddr;
62 __u32 daddr;
65 typedef void (*TODO_CALLBACK)( void *self, __u32 param);
68 * Same as irmanager_event but this one can be queued and inclueds some
69 * addtional information
71 struct irda_event {
72 QUEUE q; /* Must be first */
74 struct irmanager_event event;
78 * Funtions with needs to be called with a process context
80 struct irda_todo {
81 QUEUE q; /* Must be first */
83 void *self;
84 TODO_CALLBACK callback;
85 __u32 param;
89 * Main structure for the IrDA device (not much here :-)
91 struct irda_cb {
92 struct miscdevice dev;
93 struct wait_queue *wait_queue;
95 int in_use;
97 QUEUE *event_queue; /* Events queued for the irmanager */
98 QUEUE *todo_queue; /* Todo list */
101 int irmod_init_module(void);
102 void irmod_cleanup_module(void);
104 inline int irda_lock(int *lock);
105 inline int irda_unlock(int *lock);
107 void irda_notify_init(struct notify_t *notify);
109 void irda_execute_as_process(void *self, TODO_CALLBACK callback, __u32 param);
110 void irmanager_notify(struct irmanager_event *event);
112 extern void irda_proc_modcount(struct inode *, int);
113 void irda_mod_inc_use_count(void);
114 void irda_mod_dec_use_count(void);
116 #endif /* IRMOD_H */