亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dev_table.h

?? 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

#endif

long 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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品在线观看播放| 国产米奇在线777精品观看| 91猫先生在线| 亚洲精品美国一| 欧美亚洲自拍偷拍| 久久精品99国产国产精| 国产欧美久久久精品影院| 99国产精品久久久久| 亚洲制服丝袜av| 欧美成人一级视频| 成人福利视频网站| 一区二区三区精品视频在线| 欧美二区在线观看| 国产伦精品一区二区三区在线观看| 日本一区二区三区视频视频| 欧美无砖专区一中文字| 久久99精品久久久| 亚洲天堂a在线| 欧美一区二区视频在线观看2022| 韩国毛片一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 色综合久久久久综合体| 久久国产精品99精品国产| 国产精品久久久久久户外露出 | 欧美色偷偷大香| 久久99精品国产| 国产精品短视频| 日韩无一区二区| av男人天堂一区| 日韩av电影免费观看高清完整版在线观看 | 91看片淫黄大片一级在线观看| 亚洲成在人线在线播放| 国产欧美一区二区精品性色超碰 | 麻豆精品新av中文字幕| 成人欧美一区二区三区1314| 9191久久久久久久久久久| 99久久精品免费看国产免费软件| 午夜精品久久久久久久蜜桃app| 中文字幕欧美日韩一区| 91麻豆精品国产91久久久久 | 成人免费毛片aaaaa**| 日本免费在线视频不卡一不卡二| 国产精品女主播av| 精品国产免费一区二区三区四区 | 欧美激情中文不卡| 欧美一级片免费看| 91社区在线播放| 国产高清精品久久久久| 人禽交欧美网站| 亚洲国产欧美日韩另类综合| 国产精品国模大尺度视频| 精品盗摄一区二区三区| 欧美三级日本三级少妇99| 99久久综合国产精品| 国产在线麻豆精品观看| 日产欧产美韩系列久久99| 亚洲欧洲综合另类| 亚洲欧洲www| 国产精品久久久久一区二区三区 | 欧美一区二区黄| 欧美人xxxx| 欧美日韩另类一区| 欧美伊人精品成人久久综合97| 99精品一区二区三区| 成人三级伦理片| 国产suv一区二区三区88区| 国产精选一区二区三区| 久久精品72免费观看| 日本成人中文字幕在线视频 | 亚洲一区二区三区三| 亚洲精选在线视频| 亚洲激情第一区| 一卡二卡三卡日韩欧美| 一区二区三区精品在线观看| 亚洲久草在线视频| 亚洲免费av观看| 一区二区三区在线视频观看58| 亚洲日本va午夜在线影院| 亚洲免费在线观看视频| 伊人色综合久久天天人手人婷| 亚洲精品成a人| 视频一区免费在线观看| 男女男精品视频网| 精品亚洲国内自在自线福利| 九九**精品视频免费播放| 国产又粗又猛又爽又黄91精品| 国产精品一区在线观看乱码| 国产一区二区三区综合| 成人a区在线观看| 色综合欧美在线视频区| 欧美日韩精品一区视频| 精品久久99ma| 国产精品乱码人人做人人爱| 亚洲美女偷拍久久| 日韩1区2区日韩1区2区| 国产精品中文欧美| 不卡视频在线观看| 欧美精品日韩一本| 精品国产91久久久久久久妲己 | 久久综合久久99| 国产精品免费网站在线观看| 一区二区三区在线观看视频| 亚洲成年人影院| 韩国精品免费视频| eeuss鲁片一区二区三区在线观看| 91蜜桃免费观看视频| 欧美区一区二区三区| 国产欧美一区二区精品婷婷| 一区二区在线观看免费| 日本va欧美va瓶| 99久久精品免费看国产| 欧美一卡二卡三卡四卡| 国产精品色婷婷久久58| 日韩av二区在线播放| 成人app下载| 91精品国产一区二区三区| 国产精品麻豆久久久| 三级欧美在线一区| 成人av午夜电影| 日韩一级在线观看| 亚洲欧洲精品一区二区三区不卡| 日韩专区欧美专区| 99久久免费国产| 欧美一区二区三区视频免费| 最好看的中文字幕久久| 国产一区二区三区免费看| 在线免费观看不卡av| 久久精品视频免费| 欧美96一区二区免费视频| 91美女片黄在线观看| 久久综合色8888| 亚洲福利一二三区| 91在线观看地址| 久久影院午夜片一区| 亚洲成人一区在线| 99re6这里只有精品视频在线观看| 精品人在线二区三区| 天天色天天操综合| 欧洲一区二区av| 亚洲欧美综合网| 国产99精品视频| 2021久久国产精品不只是精品| 五月综合激情婷婷六月色窝| 91蝌蚪国产九色| 中文字幕一区二区三区不卡| 国产精品亚洲专一区二区三区| 欧美一级在线免费| 三级欧美在线一区| 欧美日韩久久久久久| 亚洲一区二区三区四区在线免费观看| 成人av网站在线观看免费| 久久久久国色av免费看影院| 激情综合亚洲精品| 欧美肥大bbwbbw高潮| 婷婷久久综合九色综合绿巨人| 欧美色精品在线视频| 亚洲综合色区另类av| 欧美少妇bbb| 亚洲永久免费av| 欧美无人高清视频在线观看| 亚洲婷婷综合久久一本伊一区 | 欧美日韩二区三区| 亚洲亚洲人成综合网络| 欧美日韩中文国产| 亚洲成人资源在线| 91精品国产综合久久婷婷香蕉| 亚洲r级在线视频| 欧美精品久久99久久在免费线 | 天堂成人免费av电影一区| 欧美精选午夜久久久乱码6080| 亚洲国产aⅴ天堂久久| 在线播放国产精品二区一二区四区| 偷拍亚洲欧洲综合| 日韩欧美国产一区二区在线播放| 麻豆91精品91久久久的内涵| 欧美电影免费观看高清完整版| 国产一区二区三区在线看麻豆| 国产欧美va欧美不卡在线| 本田岬高潮一区二区三区| 亚洲天堂2014| 欧美日韩dvd在线观看| 麻豆91在线播放免费| 国产日韩成人精品| 91国偷自产一区二区开放时间| 亚洲一区二区在线视频| 欧美一区二区在线播放| 国产乱码精品一区二区三区av | 亚洲另类中文字| 欧美精品一二三| 国产一区欧美二区| 国产精品福利一区| 欧美日韩一级黄| 国产精品一区二区不卡| 亚洲卡通欧美制服中文| 日韩精品一区二区三区视频播放| 国产+成+人+亚洲欧洲自线| 亚洲黄色性网站| 久久综合九色综合97婷婷女人| 99久久精品免费精品国产| 偷拍与自拍一区|