Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
sound
core
seq
seq.c
Go to the documentation of this file.
1
/*
2
* ALSA sequencer main module
3
* Copyright (c) 1998-1999 by Frank van de Pol <
[email protected]
>
4
*
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (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
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
*
20
*/
21
22
#include <
linux/init.h
>
23
#include <linux/module.h>
24
#include <linux/device.h>
25
#include <
sound/core.h
>
26
#include <
sound/initval.h
>
27
28
#include <
sound/seq_kernel.h
>
29
#include "
seq_clientmgr.h
"
30
#include "
seq_memory.h
"
31
#include "
seq_queue.h
"
32
#include "
seq_lock.h
"
33
#include "
seq_timer.h
"
34
#include "
seq_system.h
"
35
#include "
seq_info.h
"
36
#include <
sound/minors.h
>
37
#include <
sound/seq_device.h
>
38
39
#if defined(CONFIG_SND_SEQ_DUMMY_MODULE)
40
int
seq_client_load
[15] = {[0] =
SNDRV_SEQ_CLIENT_DUMMY
, [1 ... 14] = -1};
41
#else
42
int
seq_client_load
[15] = {[0 ... 14] = -1};
43
#endif
44
int
seq_default_timer_class
=
SNDRV_TIMER_CLASS_GLOBAL
;
45
int
seq_default_timer_sclass
=
SNDRV_TIMER_SCLASS_NONE
;
46
int
seq_default_timer_card
= -1;
47
int
seq_default_timer_device
=
48
#ifdef CONFIG_SND_SEQ_HRTIMER_DEFAULT
49
SNDRV_TIMER_GLOBAL_HRTIMER
50
#elif defined(CONFIG_SND_SEQ_RTCTIMER_DEFAULT)
51
SNDRV_TIMER_GLOBAL_RTC
52
#else
53
SNDRV_TIMER_GLOBAL_SYSTEM
54
#endif
55
;
56
int
seq_default_timer_subdevice
= 0;
57
int
seq_default_timer_resolution
= 0;
/* Hz */
58
59
MODULE_AUTHOR
(
"Frank van de Pol <
[email protected]
>, Jaroslav Kysela <
[email protected]
>"
);
60
MODULE_DESCRIPTION
(
"Advanced Linux Sound Architecture sequencer."
);
61
MODULE_LICENSE
(
"GPL"
);
62
63
module_param_array
(
seq_client_load
,
int
,
NULL
, 0444);
64
MODULE_PARM_DESC
(
seq_client_load
,
"The numbers of global (system) clients to load through kmod."
);
65
module_param
(
seq_default_timer_class
,
int
, 0644);
66
MODULE_PARM_DESC
(
seq_default_timer_class
,
"The default timer class."
);
67
module_param
(
seq_default_timer_sclass
,
int
, 0644);
68
MODULE_PARM_DESC
(
seq_default_timer_sclass
,
"The default timer slave class."
);
69
module_param
(
seq_default_timer_card
,
int
, 0644);
70
MODULE_PARM_DESC
(
seq_default_timer_card
,
"The default timer card number."
);
71
module_param
(
seq_default_timer_device
,
int
, 0644);
72
MODULE_PARM_DESC
(
seq_default_timer_device
,
"The default timer device number."
);
73
module_param
(
seq_default_timer_subdevice
,
int
, 0644);
74
MODULE_PARM_DESC
(
seq_default_timer_subdevice
,
"The default timer subdevice number."
);
75
module_param
(
seq_default_timer_resolution
,
int
, 0644);
76
MODULE_PARM_DESC
(
seq_default_timer_resolution
,
"The default timer resolution in Hz."
);
77
78
MODULE_ALIAS_CHARDEV
(
CONFIG_SND_MAJOR
,
SNDRV_MINOR_SEQUENCER
);
79
MODULE_ALIAS
(
"devname:snd/seq"
);
80
81
/*
82
* INIT PART
83
*/
84
85
static
int
__init
alsa_seq_init(
void
)
86
{
87
int
err
;
88
89
snd_seq_autoload_lock
();
90
if
((err =
client_init_data
()) < 0)
91
goto
error
;
92
93
/* init memory, room for selected events */
94
if
((err =
snd_sequencer_memory_init
()) < 0)
95
goto
error
;
96
97
/* init event queues */
98
if
((err =
snd_seq_queues_init
()) < 0)
99
goto
error
;
100
101
/* register sequencer device */
102
if
((err =
snd_sequencer_device_init
()) < 0)
103
goto
error
;
104
105
/* register proc interface */
106
if
((err = snd_seq_info_init()) < 0)
107
goto
error
;
108
109
/* register our internal client */
110
if
((err =
snd_seq_system_client_init
()) < 0)
111
goto
error
;
112
113
error
:
114
snd_seq_autoload_unlock
();
115
return
err
;
116
}
117
118
static
void
__exit
alsa_seq_exit(
void
)
119
{
120
/* unregister our internal client */
121
snd_seq_system_client_done
();
122
123
/* unregister proc interface */
124
snd_seq_info_done();
125
126
/* delete timing queues */
127
snd_seq_queues_delete
();
128
129
/* unregister sequencer device */
130
snd_sequencer_device_done
();
131
132
/* release event memory */
133
snd_sequencer_memory_done
();
134
}
135
136
module_init
(alsa_seq_init)
137
module_exit
(alsa_seq_exit)
Generated on Thu Jan 10 2013 15:03:59 for Linux Kernel by
1.8.2