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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? seq_oss_ioctl.c

?? 優(yōu)龍2410linux2.6.8內(nèi)核源代碼
?? C
字號(hào):
/* * OSS compatible sequencer driver * * OSS compatible i/o control * * Copyright (C) 1998,99 Takashi Iwai <tiwai@suse.de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA */#include "seq_oss_device.h"#include "seq_oss_readq.h"#include "seq_oss_writeq.h"#include "seq_oss_timer.h"#include "seq_oss_synth.h"#include "seq_oss_midi.h"#include "seq_oss_event.h"intsnd_seq_oss_ioctl(seq_oss_devinfo_t *dp, unsigned int cmd, unsigned long carg){	int dev, val;	struct synth_info inf;	struct midi_info minf;	unsigned char ev[8];	void __user *arg = (void __user *)carg;	int __user *p = arg;	snd_seq_event_t tmpev;	switch (cmd) {	case SNDCTL_TMR_TIMEBASE:	case SNDCTL_TMR_TEMPO:	case SNDCTL_TMR_START:	case SNDCTL_TMR_STOP:	case SNDCTL_TMR_CONTINUE:	case SNDCTL_TMR_METRONOME:	case SNDCTL_TMR_SOURCE:	case SNDCTL_TMR_SELECT:	case SNDCTL_SEQ_CTRLRATE:		return snd_seq_oss_timer_ioctl(dp->timer, cmd, arg);	case SNDCTL_SEQ_PANIC:		debug_printk(("panic\n"));		snd_seq_oss_reset(dp);		return -EINVAL;	case SNDCTL_SEQ_SYNC:		debug_printk(("sync\n"));		if (! is_write_mode(dp->file_mode) || dp->writeq == NULL)			return 0;		while (snd_seq_oss_writeq_sync(dp->writeq))			;		if (signal_pending(current))			return -ERESTARTSYS;		return 0;	case SNDCTL_SEQ_RESET:		debug_printk(("reset\n"));		snd_seq_oss_reset(dp);		return 0;	case SNDCTL_SEQ_TESTMIDI:		debug_printk(("test midi\n"));		if (get_user(dev, p))			return -EFAULT;		return snd_seq_oss_midi_open(dp, dev, dp->file_mode);	case SNDCTL_SEQ_GETINCOUNT:		debug_printk(("get in count\n"));		if (dp->readq == NULL || ! is_read_mode(dp->file_mode))			return 0;		return put_user(dp->readq->qlen, p) ? -EFAULT : 0;	case SNDCTL_SEQ_GETOUTCOUNT:		debug_printk(("get out count\n"));		if (! is_write_mode(dp->file_mode) || dp->writeq == NULL)			return 0;		return put_user(snd_seq_oss_writeq_get_free_size(dp->writeq), p) ? -EFAULT : 0;	case SNDCTL_SEQ_GETTIME:		debug_printk(("get time\n"));		return put_user(snd_seq_oss_timer_cur_tick(dp->timer), p) ? -EFAULT : 0;	case SNDCTL_SEQ_RESETSAMPLES:		debug_printk(("reset samples\n"));		if (get_user(dev, p))			return -EFAULT;		return snd_seq_oss_synth_ioctl(dp, dev, cmd, carg);	case SNDCTL_SEQ_NRSYNTHS:		debug_printk(("nr synths\n"));		return put_user(dp->max_synthdev, p) ? -EFAULT : 0;	case SNDCTL_SEQ_NRMIDIS:		debug_printk(("nr midis\n"));		return put_user(dp->max_mididev, p) ? -EFAULT : 0;	case SNDCTL_SYNTH_MEMAVL:		debug_printk(("mem avail\n"));		if (get_user(dev, p))			return -EFAULT;		val = snd_seq_oss_synth_ioctl(dp, dev, cmd, carg);		return put_user(val, p) ? -EFAULT : 0;	case SNDCTL_FM_4OP_ENABLE:		debug_printk(("4op\n"));		if (get_user(dev, p))			return -EFAULT;		snd_seq_oss_synth_ioctl(dp, dev, cmd, carg);		return 0;	case SNDCTL_SYNTH_INFO:	case SNDCTL_SYNTH_ID:		debug_printk(("synth info\n"));		if (copy_from_user(&inf, arg, sizeof(inf)))			return -EFAULT;		if (snd_seq_oss_synth_make_info(dp, inf.device, &inf) < 0)			return -EINVAL;		if (copy_to_user(arg, &inf, sizeof(inf)))			return -EFAULT;		return 0;	case SNDCTL_SEQ_OUTOFBAND:		debug_printk(("out of bound\n"));		if (copy_from_user(ev, arg, 8))			return -EFAULT;		memset(&tmpev, 0, sizeof(tmpev));		snd_seq_oss_fill_addr(dp, &tmpev, dp->addr.port, dp->addr.client);		tmpev.time.tick = 0;		if (! snd_seq_oss_process_event(dp, (evrec_t*)ev, &tmpev)) {			snd_seq_oss_dispatch(dp, &tmpev, 0, 0);		}		return 0;	case SNDCTL_MIDI_INFO:		debug_printk(("midi info\n"));		if (copy_from_user(&minf, arg, sizeof(minf)))			return -EFAULT;		if (snd_seq_oss_midi_make_info(dp, minf.device, &minf) < 0)			return -EINVAL;		if (copy_to_user(arg, &minf, sizeof(minf)))			return -EFAULT;		return 0;	case SNDCTL_SEQ_THRESHOLD:		debug_printk(("threshold\n"));		if (! is_write_mode(dp->file_mode))			return 0;		if (get_user(val, p))			return -EFAULT;		if (val < 1)			val = 1;		if (val >= dp->writeq->maxlen)			val = dp->writeq->maxlen - 1;		snd_seq_oss_writeq_set_output(dp->writeq, val);		return 0;	case SNDCTL_MIDI_PRETIME:		debug_printk(("pretime\n"));		if (dp->readq == NULL || !is_read_mode(dp->file_mode))			return 0;		if (get_user(val, p))			return -EFAULT;		if (val <= 0)			val = -1;		else			val = (HZ * val) / 10;		dp->readq->pre_event_timeout = val;		return put_user(val, p) ? -EFAULT : 0;	default:		debug_printk(("others\n"));		if (! is_write_mode(dp->file_mode))			return -EIO;		return snd_seq_oss_synth_ioctl(dp, 0, cmd, carg);	}	return 0;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人dvd| 青青青伊人色综合久久| 精品夜夜嗨av一区二区三区| 懂色av一区二区三区蜜臀| 欧美精品日韩精品| 亚洲电影在线播放| 在线视频你懂得一区| 久久久高清一区二区三区| 日韩av一区二区在线影视| 99re这里都是精品| 久久一夜天堂av一区二区三区| 五月天激情综合网| 色狠狠一区二区三区香蕉| 久久看人人爽人人| 国产成人综合网| 欧美成人精品高清在线播放| 亚洲国产视频一区| 色www精品视频在线观看| 中文字幕一区二区三区视频| 国产美女精品人人做人人爽| 日韩午夜电影在线观看| 日韩国产欧美在线观看| 91精品国产91久久久久久最新毛片 | 久久91精品久久久久久秒播| 日韩女优电影在线观看| 国产一区二区三区黄视频| 久久久亚洲国产美女国产盗摄| 久久99国内精品| 日韩一区二区在线播放| 一区二区三区精品视频| 日本道色综合久久| 亚洲影视在线观看| 91精品国产综合久久久蜜臀图片| 日韩中文字幕1| 欧美成人a视频| 国产精品 欧美精品| 中文字幕中文字幕一区二区| 色中色一区二区| 亚洲成精国产精品女| 欧美日韩不卡在线| 国产一二精品视频| 亚洲一区中文日韩| 精品蜜桃在线看| 欧美亚洲综合另类| 国产电影一区在线| 亚洲午夜一二三区视频| 久久久不卡影院| 日本韩国欧美在线| 国产一区二区三区观看| 亚洲香蕉伊在人在线观| 国产日韩欧美综合在线| 色婷婷亚洲一区二区三区| 日本欧美肥老太交大片| 中文字幕中文字幕在线一区 | 免费久久精品视频| 国产日产欧美一区二区三区| 欧美一区二区三区视频| 99久久99精品久久久久久| 亚洲一区自拍偷拍| 中文字幕精品三区| 欧美精品vⅰdeose4hd| 99久久国产综合精品色伊| 精品在线播放午夜| 图片区日韩欧美亚洲| 亚洲日本免费电影| 国产精品乱码一区二三区小蝌蚪| 欧美一级欧美三级| 欧美裸体bbwbbwbbw| 成人app网站| 国产一区二区在线观看免费| 天堂蜜桃一区二区三区| 欧美韩国日本不卡| 国产精品乱人伦中文| 精品国产1区二区| 日韩一区二区不卡| 欧美mv日韩mv国产网站app| 精品国产一二三区| 久久久精品一品道一区| 久久影院电视剧免费观看| 国产午夜一区二区三区| 久久久一区二区| 国产精品久久久久影院亚瑟 | 色婷婷精品久久二区二区蜜臀av| 国产成人精品免费视频网站| 成人av网站在线| 91原创在线视频| 91亚洲男人天堂| 欧美日韩一级片网站| 欧美男男青年gay1069videost| 欧美嫩在线观看| 91精品视频网| 日韩一区二区精品葵司在线 | 成人av电影在线| 在线亚洲高清视频| 欧美一区二区久久久| 国产日韩欧美亚洲| 亚洲欧洲一区二区在线播放| 亚洲欧美视频在线观看视频| 日日欢夜夜爽一区| www.久久久久久久久| 一本大道久久a久久综合| 91精品国产色综合久久不卡电影| 精品国产伦一区二区三区观看体验| 国产欧美一区二区精品性色超碰 | 日韩黄色免费电影| 国产成人免费av在线| av高清久久久| 欧美一级夜夜爽| 亚洲精品少妇30p| 国产成人综合在线观看| 欧美日韩一本到| 国产日韩欧美高清在线| 亚洲美女免费在线| 国产激情一区二区三区| 欧美精品v国产精品v日韩精品 | 高清免费成人av| 91精品欧美久久久久久动漫| 欧美激情一二三区| 美女视频网站黄色亚洲| av网站免费线看精品| 精品国产欧美一区二区| 天天综合色天天| 欧美亚洲国产一卡| 亚洲美女免费视频| 色老头久久综合| 国产精品色哟哟| 国产精品18久久久久久vr| 91精品国产欧美日韩| 亚洲成a人片在线不卡一二三区| 91在线观看污| 国产精品欧美精品| 国产精品原创巨作av| 国产亚洲一二三区| 亚洲欧洲日韩一区二区三区| 久久爱另类一区二区小说| 在线成人免费视频| 美女网站在线免费欧美精品| 91精品国产福利在线观看| 免费高清不卡av| 日韩午夜精品视频| 国产一区二区三区在线观看精品 | 一区二区三区四区激情| 99re这里都是精品| 亚洲一区二区精品久久av| 制服丝袜国产精品| 狠狠色狠狠色综合| 国产精品乱子久久久久| 91麻豆自制传媒国产之光| 亚洲综合成人在线| 日韩视频免费观看高清完整版| 国产一区二区三区精品视频| 国产亚洲综合在线| 成人av在线资源网| 亚洲韩国精品一区| 久久婷婷综合激情| 色综合久久天天| 久久精品国内一区二区三区| 国产日韩精品视频一区| 一本大道久久a久久综合| 蜜桃av噜噜一区| 亚洲日本免费电影| 欧美电影免费观看高清完整版在线观看| 国产一区二区免费看| 亚洲在线中文字幕| 国产日韩视频一区二区三区| 欧美自拍偷拍午夜视频| 国产传媒一区在线| 丝袜亚洲另类丝袜在线| 中文字幕亚洲综合久久菠萝蜜| 91精品久久久久久久99蜜桃| 91老司机福利 在线| 国产精品99久久不卡二区| 日韩精品一卡二卡三卡四卡无卡| 国产精品全国免费观看高清| 欧美成人一区二区三区| 欧美日韩久久一区| 色婷婷国产精品久久包臀| 国内欧美视频一区二区| 亚洲国产一区二区视频| 日韩黄色小视频| 韩国v欧美v日本v亚洲v| 不卡电影一区二区三区| 色综合久久中文字幕| 欧美一卡二卡在线| 精品乱人伦一区二区三区| 精品国产凹凸成av人网站| 国产三级一区二区| 亚洲精品你懂的| 久久99国产精品久久99 | 亚洲欧洲综合另类在线| 丝袜国产日韩另类美女| 国产一区二区三区综合| 在线精品视频免费播放| 日韩精品在线一区| 亚洲精品久久嫩草网站秘色| 久88久久88久久久| 国产高清亚洲一区| 日韩高清中文字幕一区| 亚洲在线中文字幕| 毛片基地黄久久久久久天堂|