⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dev_table.h

📁 <Linux1.0核心游记>电子书+书后源码+Linux1.0源码
💻 H
字号:
/* *	dev_table.h * *	Global definitions for device call tables *  * Copyright by Hannu Savolainen 1993 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. **/#ifndef _DEV_TABLE_H_#define _DEV_TABLE_H_/* *	NOTE! 	NOTE!	NOTE!	NOTE! * *	If you modify this file, please check the dev_table.c also. * *	NOTE! 	NOTE!	NOTE!	NOTE! */struct card_info {	int card_type;	/*	From soundcard.c	*/	char *name;	long (*attach) (long mem_start, struct address_info *hw_config);	int (*probe) (struct address_info *hw_config);	struct address_info config;	int enabled;};/** UWM -- new  MIDI structure here.. **/struct generic_midi_info{        char *name;	/* Name of the MIDI device.. */        long (*attach) (long mem_start);};struct audio_operations {        char name[32];	int (*open) (int dev, int mode);	void (*close) (int dev);	void (*output_block) (int dev, unsigned long buf, 			      int count, int intrflag, int dma_restart);	void (*start_input) (int dev, unsigned long buf, 			     int count, int intrflag, int dma_restart);	int (*ioctl) (int dev, unsigned int cmd, unsigned int arg, int local);	int (*prepare_for_input) (int dev, int bufsize, int nbufs);	int (*prepare_for_output) (int dev, int bufsize, int nbufs);	void (*reset) (int dev);	void (*halt_xfer) (int dev);	int (*has_output_drained)(int dev);        void (*copy_from_user)(int dev, char *localbuf, int localoffs,                               snd_rw_buf *userbuf, int useroffs, int len);};struct mixer_operations {	int (*ioctl) (int dev, unsigned int cmd, unsigned int arg);};struct synth_operations {	struct synth_info *info;	int synth_type;	int synth_subtype;	int (*open) (int dev, int mode);	void (*close) (int dev);	int (*ioctl) (int dev, unsigned int cmd, unsigned int arg);	int (*kill_note) (int dev, int voice, int velocity);	int (*start_note) (int dev, int voice, int note, int velocity);	int (*set_instr) (int dev, int voice, int instr);	void (*reset) (int dev);	void (*hw_control) (int dev, unsigned char *event);	int (*load_patch) (int dev, int format, snd_rw_buf *addr,	     int offs, int count, int pmgr_flag);	void (*aftertouch) (int dev, int voice, int pressure);	void (*controller) (int dev, int voice, int ctrl_num, int value);	void (*panning) (int dev, int voice, int value);	int (*pmgr_interface) (int dev, struct patmgr_info *info);};struct midi_operations {	struct midi_info info;	int (*open) (int dev, int mode,		void (*inputintr)(int dev, unsigned char data),		void (*outputintr)(int dev)		);	void (*close) (int dev);	int (*ioctl) (int dev, unsigned int cmd, unsigned int arg);	int (*putc) (int dev, unsigned char data);	int (*start_read) (int dev);	int (*end_read) (int dev);	void (*kick)(int dev);	int (*command) (int dev, unsigned char data);	int (*buffer_status) (int dev);};/** UWM -- new structure for MIDI  **/struct generic_midi_operations {	struct midi_info info;	int (*open) (int dev, int mode);	void (*close) (int dev);	int (*write) (int dev, snd_rw_buf *data);	int (*read)  (int dev, snd_rw_buf *data);};	#ifndef ALL_EXTERNAL_TO_ME#ifdef _MIDI_TABLE_C_/** UWM **/       struct generic_midi_operations * generic_midi_devs[MAX_MIDI_DEV] = {NULL};        int num_generic_midis = 0, pro_midi_dev = 0;       struct generic_midi_info midi_supported[] = {#ifndef EXCLUDE_PRO_MIDI        {"ProAudioSpectrum MV101",pro_midi_attach}#endif        };         int num_midi_drivers =             sizeof (midi_supported) / sizeof(struct generic_midi_info);#endif#ifdef _DEV_TABLE_C_   	struct audio_operations * dsp_devs[MAX_DSP_DEV] = {NULL}; int num_dspdevs = 0;	struct mixer_operations * mixer_devs[MAX_MIXER_DEV] = {NULL}; int num_mixers = 0;	struct synth_operations * synth_devs[MAX_SYNTH_DEV] = {NULL}; int num_synths = 0;	struct midi_operations * midi_devs[MAX_MIDI_DEV] = {NULL}; int num_midis = 0;#   ifndef EXCLUDE_MPU401        int mpu401_dev = 0;#   endif/* *	Note! The detection order is significant. Don't change it. */	struct card_info supported_drivers[] = {#if !defined(EXCLUDE_MPU401) && !defined(EXCLUDE_MIDI)		{SNDCARD_MPU401,"Roland MPU-401",	attach_mpu401, probe_mpu401,			{MPU_BASE, MPU_IRQ, 0}, SND_DEFAULT_ENABLE},#endif#ifndef EXCLUDE_PAS		{SNDCARD_PAS,	"ProAudioSpectrum",	attach_pas_card, probe_pas,			{PAS_BASE, PAS_IRQ, PAS_DMA}, SND_DEFAULT_ENABLE},#endif#ifndef EXCLUDE_SB		{SNDCARD_SB,	"SoundBlaster",		attach_sb_card, probe_sb,			{SBC_BASE, SBC_IRQ, SBC_DMA}, SND_DEFAULT_ENABLE},#endif#if !defined(EXCLUDE_SB) && !defined(EXCLUDE_SB16)#ifndef EXCLUDE_AUDIO		{SNDCARD_SB16,	"SoundBlaster16",	sb16_dsp_init, sb16_dsp_detect,			{SBC_BASE, SBC_IRQ, SB16_DMA}, SND_DEFAULT_ENABLE},#endif#ifndef EXCLUDE_MIDI		{SNDCARD_SB16MIDI,"SB16 MPU-401",	attach_sb16midi, probe_sb16midi,			{SB16MIDI_BASE, SBC_IRQ, 0}, SND_DEFAULT_ENABLE},#endif#endif#ifndef EXCLUDE_GUS		{SNDCARD_GUS,	"Gravis Ultrasound",	attach_gus_card, probe_gus,			{GUS_BASE, GUS_IRQ, GUS_DMA}, SND_DEFAULT_ENABLE},#endif#ifndef EXCLUDE_YM3812		{SNDCARD_ADLIB,	"AdLib",		attach_adlib_card, probe_adlib,			{FM_MONO, 0, 0}, SND_DEFAULT_ENABLE},#endif		{0,			"*?*",			NULL, 0}	};	int num_sound_drivers =	    sizeof(supported_drivers) / sizeof (struct card_info);# ifndef EXCLUDE_AUDIO 	int sound_buffcounts[MAX_DSP_DEV] = {0};	long sound_buffsizes[MAX_DSP_DEV] = {0};	int sound_dsp_dmachan[MAX_DSP_DEV] = {0};	int sound_dma_automode[MAX_DSP_DEV] = {0};# endif#else	extern struct audio_operations * dsp_devs[MAX_DSP_DEV]; int num_dspdevs;	extern struct mixer_operations * mixer_devs[MAX_MIXER_DEV]; extern int num_mixers;	extern struct synth_operations * synth_devs[MAX_SYNTH_DEV]; extern int num_synths;	extern struct midi_operations * midi_devs[MAX_MIDI_DEV]; extern int num_midis;#   ifndef EXCLUDE_MPU401        extern int mpu401_dev;#   endif	extern struct card_info supported_drivers[];	extern int num_sound_drivers;# ifndef EXCLUDE_AUDIO	extern int sound_buffcounts[MAX_DSP_DEV];	extern long sound_buffsizes[MAX_DSP_DEV];	extern int sound_dsp_dmachan[MAX_DSP_DEV];	extern int sound_dma_automode[MAX_DSP_DEV];# endif#endiflong sndtable_init(long mem_start);int sndtable_get_cardcount (void);long CMIDI_init(long mem_start); /* */struct address_info *sound_getconf(int card_type);void sound_chconf(int card_type, int ioaddr, int irq, int dma);#endif#endif/* If external to me.... :) */#ifdef ALL_EXTERNAL_TO_ME	extern struct audio_operations * dsp_devs[MAX_DSP_DEV]; int num_dspdevs;        extern struct mixer_operations * mixer_devs[MAX_MIXER_DEV]; extern int num_mixers;        extern struct synth_operations * synth_devs[MAX_SYNTH_DEV]; extern int num_synths;        extern struct midi_operations * midi_devs[MAX_MIDI_DEV]; extern int num_midis;	extern struct generic_midi_operations *generic_midi_devs[]; 	extern int num_generic_midis, pro_midi_dev; #ifndef EXCLUDE_MPU401        extern int mpu401_dev;#endif	extern struct generic_midi_info midi_supported[];	extern struct card_info supported_drivers[];        extern int num_sound_drivers;	extern int num_midi_drivers;	#ifndef EXCLUDE_AUDIO        extern int sound_buffcounts[MAX_DSP_DEV];        extern long sound_buffsizes[MAX_DSP_DEV];        extern int sound_dsp_dmachan[MAX_DSP_DEV];        extern int sound_dma_automode[MAX_DSP_DEV];#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -