Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  *      IrNET protocol module : Synchronous PPP over an IrDA socket.
  3  *
  4  *              Jean II - HPL `00 - <jt@hpl.hp.com>
  5  *
  6  * This file contains all definitions and declarations necessary for the
  7  * PPP part of the IrNET module.
  8  * This file is a private header, so other modules don't want to know
  9  * what's in there...
 10  */
 11 
 12 #ifndef IRNET_PPP_H
 13 #define IRNET_PPP_H
 14 
 15 /***************************** INCLUDES *****************************/
 16 
 17 #include "irnet.h"              /* Module global include */
 18 
 19 /************************ CONSTANTS & MACROS ************************/
 20 
 21 /* /dev/irnet file constants */
 22 #define IRNET_MAJOR     10      /* Misc range */
 23 #define IRNET_MINOR     187     /* Official allocation */
 24 
 25 /* IrNET control channel stuff */
 26 #define IRNET_MAX_COMMAND       256     /* Max length of a command line */
 27 
 28 /* PPP hardcore stuff */
 29 
 30 /* Bits in rbits (PPP flags in irnet struct) */
 31 #define SC_RCV_BITS     (SC_RCV_B7_1|SC_RCV_B7_0|SC_RCV_ODDP|SC_RCV_EVNP)
 32 
 33 /* Bit numbers in busy */
 34 #define XMIT_BUSY       0
 35 #define RECV_BUSY       1
 36 #define XMIT_WAKEUP     2
 37 #define XMIT_FULL       3
 38 
 39 /* Queue management */
 40 #define PPPSYNC_MAX_RQLEN       32      /* arbitrary */
 41 
 42 /****************************** TYPES ******************************/
 43 
 44 
 45 /**************************** PROTOTYPES ****************************/
 46 
 47 /* ----------------------- CONTROL CHANNEL ----------------------- */
 48 static inline ssize_t
 49         irnet_ctrl_write(irnet_socket *,
 50                          const char *,
 51                          size_t);
 52 static inline ssize_t
 53         irnet_ctrl_read(irnet_socket *,
 54                         struct file *,
 55                         char *,
 56                         size_t);
 57 static inline unsigned int
 58         irnet_ctrl_poll(irnet_socket *,
 59                         struct file *,
 60                         poll_table *);
 61 /* ----------------------- CHARACTER DEVICE ----------------------- */
 62 static int
 63         dev_irnet_open(struct inode *,  /* fs callback : open */
 64                        struct file *),
 65         dev_irnet_close(struct inode *,
 66                         struct file *);
 67 static ssize_t
 68         dev_irnet_write(struct file *,
 69                         const char __user *,
 70                         size_t,
 71                         loff_t *),
 72         dev_irnet_read(struct file *,
 73                        char __user *,
 74                        size_t,
 75                        loff_t *);
 76 static unsigned int
 77         dev_irnet_poll(struct file *,
 78                        poll_table *);
 79 static int
 80         dev_irnet_ioctl(struct inode *,
 81                         struct file *,
 82                         unsigned int,
 83                         unsigned long);
 84 /* ------------------------ PPP INTERFACE ------------------------ */
 85 static inline struct sk_buff *
 86         irnet_prepare_skb(irnet_socket *,
 87                           struct sk_buff *);
 88 static int
 89         ppp_irnet_send(struct ppp_channel *,
 90                       struct sk_buff *);
 91 static int
 92         ppp_irnet_ioctl(struct ppp_channel *,
 93                         unsigned int,
 94                         unsigned long);
 95 
 96 /**************************** VARIABLES ****************************/
 97 
 98 /* Filesystem callbacks (to call us) */
 99 static struct file_operations irnet_device_fops =
100 {
101         .owner          = THIS_MODULE,
102         .read           = dev_irnet_read,
103         .write          = dev_irnet_write,
104         .poll           = dev_irnet_poll,
105         .ioctl          = dev_irnet_ioctl,
106         .open           = dev_irnet_open,
107         .release        = dev_irnet_close
108   /* Also : llseek, readdir, mmap, flush, fsync, fasync, lock, readv, writev */
109 };
110 
111 /* Structure so that the misc major (drivers/char/misc.c) take care of us... */
112 static struct miscdevice irnet_misc_device =
113 {
114         IRNET_MINOR,
115         "irnet",
116         &irnet_device_fops
117 };
118 
119 #endif /* IRNET_PPP_H */
120 
  This page was automatically generated by the LXR engine.