Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/media/dvb_net.h
26282 views
1
/*
2
* dvb_net.h
3
*
4
* Copyright (C) 2001 Ralph Metzler for convergence integrated media GmbH
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public License
8
* as published by the Free Software Foundation; either version 2.1
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
*/
17
18
#ifndef _DVB_NET_H_
19
#define _DVB_NET_H_
20
21
#include <linux/module.h>
22
23
#include <media/dvbdev.h>
24
25
struct net_device;
26
27
#define DVB_NET_DEVICES_MAX 10
28
29
#ifdef CONFIG_DVB_NET
30
31
/**
32
* struct dvb_net - describes a DVB network interface
33
*
34
* @dvbdev: pointer to &struct dvb_device.
35
* @device: array of pointers to &struct net_device.
36
* @state: array of integers to each net device. A value
37
* different than zero means that the interface is
38
* in usage.
39
* @exit: flag to indicate when the device is being removed.
40
* @demux: pointer to &struct dmx_demux.
41
* @ioctl_mutex: protect access to this struct.
42
* @remove_mutex: mutex that avoids a race condition between a callback
43
* called when the hardware is disconnected and the
44
* file_operations of dvb_net.
45
*
46
* Currently, the core supports up to %DVB_NET_DEVICES_MAX (10) network
47
* devices.
48
*/
49
50
struct dvb_net {
51
struct dvb_device *dvbdev;
52
struct net_device *device[DVB_NET_DEVICES_MAX];
53
int state[DVB_NET_DEVICES_MAX];
54
unsigned int exit:1;
55
struct dmx_demux *demux;
56
struct mutex ioctl_mutex;
57
struct mutex remove_mutex;
58
};
59
60
/**
61
* dvb_net_init - nitializes a digital TV network device and registers it.
62
*
63
* @adap: pointer to &struct dvb_adapter.
64
* @dvbnet: pointer to &struct dvb_net.
65
* @dmxdemux: pointer to &struct dmx_demux.
66
*/
67
int dvb_net_init(struct dvb_adapter *adap, struct dvb_net *dvbnet,
68
struct dmx_demux *dmxdemux);
69
70
/**
71
* dvb_net_release - releases a digital TV network device and unregisters it.
72
*
73
* @dvbnet: pointer to &struct dvb_net.
74
*/
75
void dvb_net_release(struct dvb_net *dvbnet);
76
77
#else
78
79
struct dvb_net {
80
struct dvb_device *dvbdev;
81
};
82
83
static inline void dvb_net_release(struct dvb_net *dvbnet)
84
{
85
}
86
87
static inline int dvb_net_init(struct dvb_adapter *adap,
88
struct dvb_net *dvbnet, struct dmx_demux *dmx)
89
{
90
return 0;
91
}
92
93
#endif /* ifdef CONFIG_DVB_NET */
94
95
#endif
96
97