cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

seq_oss_event.h (2133B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * OSS compatible sequencer driver
      4 *
      5 * seq_oss_event.h - OSS event queue record
      6 *
      7 * Copyright (C) 1998,99 Takashi Iwai <tiwai@suse.de>
      8 */
      9
     10#ifndef __SEQ_OSS_EVENT_H
     11#define __SEQ_OSS_EVENT_H
     12
     13#include "seq_oss_device.h"
     14
     15#define SHORT_EVENT_SIZE	4
     16#define LONG_EVENT_SIZE		8
     17
     18/* short event (4bytes) */
     19struct evrec_short {
     20	unsigned char code;
     21	unsigned char parm1;
     22	unsigned char dev;
     23	unsigned char parm2;
     24};
     25	
     26/* short note events (4bytes) */
     27struct evrec_note {
     28	unsigned char code;
     29	unsigned char chn;
     30	unsigned char note;
     31	unsigned char vel;
     32};
     33	
     34/* long timer events (8bytes) */
     35struct evrec_timer {
     36	unsigned char code;
     37	unsigned char cmd;
     38	unsigned char dummy1, dummy2;
     39	unsigned int time;
     40};
     41
     42/* long extended events (8bytes) */
     43struct evrec_extended {
     44	unsigned char code;
     45	unsigned char cmd;
     46	unsigned char dev;
     47	unsigned char chn;
     48	unsigned char p1, p2, p3, p4;
     49};
     50
     51/* long channel events (8bytes) */
     52struct evrec_long {
     53	unsigned char code;
     54	unsigned char dev;
     55	unsigned char cmd;
     56	unsigned char chn;
     57	unsigned char p1, p2;
     58	unsigned short val;
     59};
     60	
     61/* channel voice events (8bytes) */
     62struct evrec_voice {
     63	unsigned char code;
     64	unsigned char dev;
     65	unsigned char cmd;
     66	unsigned char chn;
     67	unsigned char note, parm;
     68	unsigned short dummy;
     69};
     70
     71/* sysex events (8bytes) */
     72struct evrec_sysex {
     73	unsigned char code;
     74	unsigned char dev;
     75	unsigned char buf[6];
     76};
     77
     78/* event record */
     79union evrec {
     80	struct evrec_short s;
     81	struct evrec_note n;
     82	struct evrec_long l;
     83	struct evrec_voice v;
     84	struct evrec_timer t;
     85	struct evrec_extended e;
     86	struct evrec_sysex x;
     87	unsigned int echo;
     88	unsigned char c[LONG_EVENT_SIZE];
     89};
     90
     91#define ev_is_long(ev) ((ev)->s.code >= 128)
     92#define ev_length(ev) ((ev)->s.code >= 128 ? LONG_EVENT_SIZE : SHORT_EVENT_SIZE)
     93
     94int snd_seq_oss_process_event(struct seq_oss_devinfo *dp, union evrec *q, struct snd_seq_event *ev);
     95int snd_seq_oss_process_timer_event(struct seq_oss_timer *rec, union evrec *q);
     96int snd_seq_oss_event_input(struct snd_seq_event *ev, int direct, void *private_data, int atomic, int hop);
     97
     98
     99#endif /* __SEQ_OSS_EVENT_H */