Blame view

include/sound/seq_kernel.h 4.17 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  #ifndef __SOUND_SEQ_KERNEL_H
  #define __SOUND_SEQ_KERNEL_H
  
  /*
   *  Main kernel header file for the ALSA sequencer
   *  Copyright (c) 1998 by Frank van de Pol <fvdpol@coil.demon.nl>
   *
   *
   *   This program is free software; you can redistribute it and/or modify
   *   it under the terms of the GNU General Public License as published by
   *   the Free Software Foundation; either version 2 of the License, or
   *   (at your option) any later version.
   *
   *   This program is distributed in the hope that it will be useful,
   *   but WITHOUT ANY WARRANTY; without even the implied warranty of
   *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   *   GNU General Public License for more details.
   *
   *   You should have received a copy of the GNU General Public License
   *   along with this program; if not, write to the Free Software
   *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   *
   */
  #include <linux/time.h>
  #include "asequencer.h"
c7e0b5bf9   Takashi Iwai   [ALSA] Remove xxx...
26
27
  typedef struct snd_seq_real_time snd_seq_real_time_t;
  typedef union snd_seq_timestamp snd_seq_timestamp_t;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  
  /* maximum number of events dequeued per schedule interval */
  #define SNDRV_SEQ_MAX_DEQUEUE		50
  
  /* maximum number of queues */
  #define SNDRV_SEQ_MAX_QUEUES		8
  
  /* max number of concurrent clients */
  #define SNDRV_SEQ_MAX_CLIENTS 		192
  
  /* max number of concurrent ports */
  #define SNDRV_SEQ_MAX_PORTS 		254
  
  /* max number of events in memory pool */
  #define SNDRV_SEQ_MAX_EVENTS		2000
  
  /* default number of events in memory chunk */
  #define SNDRV_SEQ_DEFAULT_CHUNK_EVENTS	64
  
  /* default number of events in memory pool */
  #define SNDRV_SEQ_DEFAULT_EVENTS	500
  
  /* max number of events in memory pool for one client (outqueue) */
  #define SNDRV_SEQ_MAX_CLIENT_EVENTS	2000
  
  /* default number of events in memory pool for one client (outqueue) */
  #define SNDRV_SEQ_DEFAULT_CLIENT_EVENTS	200
  
  /* max delivery path length */
  #define SNDRV_SEQ_MAX_HOPS		10
  
  /* max size of event size */
  #define SNDRV_SEQ_MAX_EVENT_LEN		0x3fffffff
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
61
  /* call-backs for kernel port */
c7e0b5bf9   Takashi Iwai   [ALSA] Remove xxx...
62
  struct snd_seq_port_callback {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
63
64
  	struct module *owner;
  	void *private_data;
c7e0b5bf9   Takashi Iwai   [ALSA] Remove xxx...
65
66
67
68
69
70
  	int (*subscribe)(void *private_data, struct snd_seq_port_subscribe *info);
  	int (*unsubscribe)(void *private_data, struct snd_seq_port_subscribe *info);
  	int (*use)(void *private_data, struct snd_seq_port_subscribe *info);
  	int (*unuse)(void *private_data, struct snd_seq_port_subscribe *info);
  	int (*event_input)(struct snd_seq_event *ev, int direct, void *private_data, int atomic, int hop);
  	void (*private_free)(void *private_data);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
71
72
  	unsigned int callback_all;	/* call subscribe callbacks at each connection/disconnection */
  	/*...*/
c7e0b5bf9   Takashi Iwai   [ALSA] Remove xxx...
73
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
74
75
  
  /* interface for kernel client */
b9075fa96   Joe Perches   treewide: use __p...
76
  __printf(3, 4)
7b6d92451   Clemens Ladisch   [ALSA] seq: set c...
77
  int snd_seq_create_kernel_client(struct snd_card *card, int client_index,
b9075fa96   Joe Perches   treewide: use __p...
78
  				 const char *name_fmt, ...);
c7e0b5bf9   Takashi Iwai   [ALSA] Remove xxx...
79
80
81
82
  int snd_seq_delete_kernel_client(int client);
  int snd_seq_kernel_client_enqueue(int client, struct snd_seq_event *ev, int atomic, int hop);
  int snd_seq_kernel_client_dispatch(int client, struct snd_seq_event *ev, int atomic, int hop);
  int snd_seq_kernel_client_ctl(int client, unsigned int cmd, void *arg);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
83
84
85
86
87
88
  
  #define SNDRV_SEQ_EXT_MASK	0xc0000000
  #define SNDRV_SEQ_EXT_USRPTR	0x80000000
  #define SNDRV_SEQ_EXT_CHAINED	0x40000000
  
  typedef int (*snd_seq_dump_func_t)(void *ptr, void *buf, int count);
c7e0b5bf9   Takashi Iwai   [ALSA] Remove xxx...
89
90
91
92
  int snd_seq_expand_var_event(const struct snd_seq_event *event, int count, char *buf,
  			     int in_kernel, int size_aligned);
  int snd_seq_dump_var_event(const struct snd_seq_event *event,
  			   snd_seq_dump_func_t func, void *private_data);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
93
94
  
  /* interface for OSS emulation */
c7e0b5bf9   Takashi Iwai   [ALSA] Remove xxx...
95
  int snd_seq_set_queue_tempo(int client, struct snd_seq_queue_tempo *tempo);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
96
97
  
  /* port callback routines */
c7e0b5bf9   Takashi Iwai   [ALSA] Remove xxx...
98
99
  void snd_port_init_callback(struct snd_seq_port_callback *p);
  struct snd_seq_port_callback *snd_port_alloc_callback(void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
100
101
  
  /* port attach/detach */
c7e0b5bf9   Takashi Iwai   [ALSA] Remove xxx...
102
  int snd_seq_event_port_attach(int client, struct snd_seq_port_callback *pcbp,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
103
104
  			      int cap, int type, int midi_channels, int midi_voices, char *portname);
  int snd_seq_event_port_detach(int client, int port);
ee2da9978   Johannes Berg   ALSA: remove CONF...
105
  #ifdef CONFIG_MODULES
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
106
107
108
109
110
111
112
113
  void snd_seq_autoload_lock(void);
  void snd_seq_autoload_unlock(void);
  #else
  #define snd_seq_autoload_lock()
  #define snd_seq_autoload_unlock()
  #endif
  
  #endif /* __SOUND_SEQ_KERNEL_H */