*/
#include <sound/asound.h>
+#include <linux/interrupt.h>
#include <linux/spinlock.h>
#include <linux/wait.h>
#include <asm/semaphore.h>
} snd_rawmidi_global_ops_t;
struct _snd_rawmidi_runtime {
- unsigned int trigger: 1, /* transfer is running */
- drain: 1, /* drain stage */
+ unsigned int drain: 1, /* drain stage */
oss: 1; /* OSS compatible mode */
/* midi stream buffer */
unsigned char *buffer; /* buffer for MIDI data */
/* misc */
spinlock_t lock;
wait_queue_head_t sleep;
- /* event handler (room [output] or new bytes [input]) */
+ /* event handler (new bytes, input only) */
void (*event)(snd_rawmidi_substream_t *substream);
+ /* defers calls to event [input] or ops->trigger [output] */
+ struct tasklet_struct tasklet;
/* private data */
void *private_data;
void (*private_free)(snd_rawmidi_substream_t *substream);