include/sound/emux_synth.h
Source file repositories/reference/linux-study-clean/include/sound/emux_synth.h
File Facts
- System
- Linux kernel
- Corpus path
include/sound/emux_synth.h- Extension
.h- Size
- 6945 bytes
- Lines
- 230
- Domain
- Driver Families
- Bucket
- include/sound
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
sound/seq_kernel.hsound/seq_device.hsound/soundfont.hsound/seq_midi_emul.hsound/seq_oss.hsound/emux_legacy.hsound/seq_virmidi.h
Detected Declarations
struct snd_emuxstruct snd_emux_portstruct snd_emux_voicestruct snd_emux_effect_tablestruct snd_emux_operatorsstruct snd_emuxstruct snd_emux_portstruct snd_emux_voicestruct snd_emux_effect_table
Annotated Snippet
struct snd_emux_operators {
struct module *owner;
struct snd_emux_voice *(*get_voice)(struct snd_emux *emu,
struct snd_emux_port *port);
int (*prepare)(struct snd_emux_voice *vp);
void (*trigger)(struct snd_emux_voice *vp);
void (*release)(struct snd_emux_voice *vp);
void (*update)(struct snd_emux_voice *vp, int update);
void (*terminate)(struct snd_emux_voice *vp);
void (*free_voice)(struct snd_emux_voice *vp);
void (*reset)(struct snd_emux *emu, int ch);
/* the first parameters are struct snd_emux */
int (*sample_new)(struct snd_emux *emu, struct snd_sf_sample *sp,
struct snd_util_memhdr *hdr,
const void __user *data, long count);
int (*sample_free)(struct snd_emux *emu, struct snd_sf_sample *sp,
struct snd_util_memhdr *hdr);
void (*sample_reset)(struct snd_emux *emu);
int (*load_fx)(struct snd_emux *emu, int type, int arg,
const void __user *data, long count);
void (*sysex)(struct snd_emux *emu, char *buf, int len, int parsed,
struct snd_midi_channel_set *chset);
#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
int (*oss_ioctl)(struct snd_emux *emu, int cmd, int p1, int p2);
#endif
int (*get_pitch_shift)(struct snd_emux *emu);
};
/*
* constant values
*/
#define SNDRV_EMUX_MAX_PORTS 32 /* max # of sequencer ports */
#define SNDRV_EMUX_MAX_VOICES 64 /* max # of voices */
#define SNDRV_EMUX_MAX_MULTI_VOICES 16 /* max # of playable voices
* simultineously
*/
/*
* flags
*/
#define SNDRV_EMUX_ACCEPT_ROM (1<<0)
/*
* emuX wavetable
*/
struct snd_emux {
struct snd_card *card; /* assigned card */
/* following should be initialized before registration */
int max_voices; /* Number of voices */
int mem_size; /* memory size (in byte) */
int num_ports; /* number of ports to be created */
struct snd_emux_operators ops; /* operators */
void *hw; /* hardware */
unsigned long flags; /* other conditions */
int midi_ports; /* number of virtual midi devices */
int midi_devidx; /* device offset of virtual midi */
unsigned int linear_panning: 1; /* panning is linear (sbawe = 1, emu10k1 = 0) */
int hwdep_idx; /* hwdep device index */
struct snd_hwdep *hwdep; /* hwdep device */
/* private */
int num_voices; /* current number of voices */
struct snd_sf_list *sflist; /* root of SoundFont list */
struct snd_emux_voice *voices; /* Voices (EMU 'channel') */
int use_time; /* allocation counter */
spinlock_t voice_lock; /* Lock for voice access */
struct mutex register_mutex;
int client; /* For the sequencer client */
int ports[SNDRV_EMUX_MAX_PORTS]; /* The ports for this device */
struct snd_emux_port *portptrs[SNDRV_EMUX_MAX_PORTS];
int used; /* use counter */
const char *name; /* name of the device (internal) */
struct snd_rawmidi **vmidi;
struct timer_list tlist; /* for pending note-offs */
int timer_active;
struct snd_util_memhdr *memhdr; /* memory chunk information */
#ifdef CONFIG_SND_PROC_FS
struct snd_info_entry *proc;
#endif
#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
struct snd_seq_device *oss_synth;
#endif
};
Annotation
- Immediate include surface: `sound/seq_kernel.h`, `sound/seq_device.h`, `sound/soundfont.h`, `sound/seq_midi_emul.h`, `sound/seq_oss.h`, `sound/emux_legacy.h`, `sound/seq_virmidi.h`.
- Detected declarations: `struct snd_emux`, `struct snd_emux_port`, `struct snd_emux_voice`, `struct snd_emux_effect_table`, `struct snd_emux_operators`, `struct snd_emux`, `struct snd_emux_port`, `struct snd_emux_voice`, `struct snd_emux_effect_table`.
- Atlas domain: Driver Families / include/sound.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.