122 iqhead = (iqhead + 1) % SEQ_MAX_QUEUE;
123 iqlen--;
124 }
125 spin_unlock_irqrestore(&lock,flags);
126 return count - c;
127}
128
129static void sequencer_midi_output(int dev)
130{
131
132
133
134}
135
136void seq_copy_to_input(unsigned char *event_rec, int len)
137{
138 unsigned long flags;
139
140
141
142
143
144 if (len != 4 && len != 8)
145 return;
146 if ((seq_mode == SEQ_1) != (len == 4))
147 return;
148
149 if (iqlen >= (SEQ_MAX_QUEUE - 1))
150 return;
151
152 spin_lock_irqsave(&lock,flags);
153 memcpy(&iqueue[iqtail * IEV_SZ], event_rec, len);
154 iqlen++;
155 iqtail = (iqtail + 1) % SEQ_MAX_QUEUE;
156 wake_up(&midi_sleeper);
157 spin_unlock_irqrestore(&lock,flags);
158}
159EXPORT_SYMBOL(seq_copy_to_input);
160
161static void sequencer_midi_input(int dev, unsigned char data)
162{