SASC
DVBSoftCAM

dvblb_internal.h

Go to the documentation of this file.
00001 #include <linux/wait.h>
00002 #include <linux/proc_fs.h>
00003 #include "dvbdev.h"
00004 #include "dvbloopback.h"
00005 
00006 #define DVBLB_MAX_ADAPTERS 8
00007 
00008 struct dvblb;
00009 
00010 struct dvblb_fwdmap {
00011         struct dvb_device **f;
00012         struct file *map;
00013 };
00014 
00015 struct dvblb_devinfo {
00016         struct dvblb      *parent;
00017         struct dvb_device *lb_dev;
00018         struct dvb_device *user_dev;
00019         int                pid;
00020         unsigned long int  ioctlcmd;
00021         int                ioctlretval;
00022         unsigned char     *ioctldata;
00023         unsigned char     *ioctlretdata;
00024         unsigned int       ioctllen;
00025         unsigned int       ioctl_already_read;
00026         void              *ioctlfd;
00027         unsigned char     *buffer;
00028         unsigned long int  buflen;
00029         wait_queue_head_t  wait_ioctl;
00030         wait_queue_head_t  wait_virt_poll;
00031         struct mutex   lock_fake_ioctl;
00032         struct mutex   lock_ioctl;
00033         struct mutex   lock_buffer;
00034 
00035         wait_queue_head_t    wait_poll[DVBLB_MAXFD];
00036         unsigned long int    poll_waiting;
00037         struct dvb_device    *filemap[DVBLB_MAXFD];
00038         void                 *dbgfilemap[DVBLB_MAXFD];
00039 
00040         struct dvb_device   *forward_dev;
00041         struct dvblb_fwdmap  forwardmap[DVBLB_MAXFD];
00042 
00043         struct proc_dir_entry *procfile;
00044 };
00045 
00046 enum
00047 {
00048         DVBLB_FRONTEND = 0,
00049         DVBLB_DEMUX    = 1,
00050         DVBLB_DVR      = 2,
00051         DVBLB_VIDEO    = 3,
00052         DVBLB_AUDIO    = 4,
00053         DVBLB_OSD      = 5,
00054         DVBLB_NUM_DEVS = 6
00055 };
00056 #define DVBLB_STATUS_FRONTEND (1 << DVBLB_FRONTEND)
00057 #define DVBLB_STATUS_DEMUX    (1 << DVBLB_DEMUX)
00058 #define DVBLB_STATUS_DVR      (1 << DVBLB_DVR)
00059 #define DVBLB_STATUS_ADAPTER  0x0100U
00060 #define DVBLB_STATUS_PROC     0x0200U
00061 
00062 struct dvblb {
00063         struct dvb_adapter adapter;
00064         struct dvblb_devinfo devinfo[DVBLB_NUM_DEVS];
00065 
00066         struct proc_dir_entry *procdir;
00067         struct proc_dir_entry *procfile;
00068         int                    link;
00069         struct list_head *adapter_ll;
00070         unsigned int init;
00071 };
00072 extern int inuse_filemap(struct dvblb_devinfo *lbdev);
00073 
00074 /* dvblb_proc.c */
00075 extern int dvblb_remove_procfs(struct proc_dir_entry *pdir,
00076                         struct proc_dir_entry *parent);
00077 
00078 extern int dvblb_init_procfs_device(struct dvblb *dvblb,
00079                                     struct dvblb_devinfo *lbdev);
00080 
00081 extern int dvblb_init_procfs_adapter(struct dvblb *dvblb);
00082 
00083 extern int dvblb_remove_procfs_adapter(struct dvblb *dvblb);
00084 
00085 extern int dvblb_init_procfs(void);
00086 
00087 extern int dvblb_uninit_procfs(void);
00088 
00089 /* dvblb_forward.c */
00090 extern int dvblb_forward_open(struct dvblb_devinfo *lbdev, struct inode *inode,
00091                        struct file *f);
00092 
00093 extern int dvblb_forward_release(struct dvblb_devinfo *lbdev, struct file *f);
00094 
00095 extern ssize_t dvblb_forward_write(struct dvblb_devinfo *lbdev, struct file *f,
00096                             const char *buf, size_t count, loff_t *offset);
00097 
00098 extern ssize_t dvblb_forward_read (struct dvblb_devinfo *lbdev, struct file *f,
00099                             char * buf, size_t count, loff_t *offset);
00100 
00101 extern int dvblb_forward_ioctl(struct dvblb_devinfo *lbdev, struct file *f,
00102                         unsigned int cmd, unsigned long arg);
00103 
00104 extern int dvblb_forward_mmap(struct dvblb_devinfo *lbdev, struct file *f,
00105                        struct vm_area_struct *vma);
00106 
00107 extern int dvblb_forward_poll(struct dvblb_devinfo *lbdev, struct file *f,
00108                        struct poll_table_struct *wait);
00109 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines