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

📄 seq_instr.h

📁 Linux Kernel 2.6.9 for OMAP1710
💻 H
字号:
#ifndef __SOUND_SEQ_INSTR_H#define __SOUND_SEQ_INSTR_H/* *  Main kernel header file for the ALSA sequencer *  Copyright (c) 1999 by Jaroslav Kysela <perex@suse.cz> * * *   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_kernel.h"/* Instrument cluster */typedef struct _snd_seq_kcluster {	snd_seq_instr_cluster_t cluster;	char name[32];	int priority;	struct _snd_seq_kcluster *next;} snd_seq_kcluster_t;/* return pointer to private data */#define KINSTR_DATA(kinstr)	(void *)(((char *)kinstr) + sizeof(snd_seq_kinstr_t))typedef struct snd_seq_kinstr_ops snd_seq_kinstr_ops_t;/* Instrument structure */typedef struct _snd_seq_kinstr {	snd_seq_instr_t instr;	char name[32];	int type;			/* instrument type */	int use;			/* use count */	int busy;			/* not useable */	int add_len;			/* additional length */	snd_seq_kinstr_ops_t *ops;	/* operations */	struct _snd_seq_kinstr *next;} snd_seq_kinstr_t;#define SNDRV_SEQ_INSTR_HASH_SIZE		32/* Instrument flags */#define SNDRV_SEQ_INSTR_FLG_DIRECT	(1<<0)	/* accept only direct events *//* List of all instruments */typedef struct {	snd_seq_kinstr_t *hash[SNDRV_SEQ_INSTR_HASH_SIZE];	int count;			/* count of all instruments */		snd_seq_kcluster_t *chash[SNDRV_SEQ_INSTR_HASH_SIZE];	int ccount;			/* count of all clusters */	int owner;			/* current owner of the instrument list */	unsigned int flags;	spinlock_t lock;	spinlock_t ops_lock;	struct semaphore ops_mutex;	unsigned long ops_flags;} snd_seq_kinstr_list_t;#define SNDRV_SEQ_INSTR_NOTIFY_REMOVE	0#define SNDRV_SEQ_INSTR_NOTIFY_CHANGE	1struct snd_seq_kinstr_ops {	void *private_data;	long add_len;			/* additional length */	char *instr_type;	int (*info)(void *private_data, char *info_data, long len);	int (*put)(void *private_data, snd_seq_kinstr_t *kinstr,		   char __user *instr_data, long len, int atomic, int cmd);	int (*get)(void *private_data, snd_seq_kinstr_t *kinstr,		   char __user *instr_data, long len, int atomic, int cmd);	int (*get_size)(void *private_data, snd_seq_kinstr_t *kinstr, long *size);	int (*remove)(void *private_data, snd_seq_kinstr_t *kinstr, int atomic);	void (*notify)(void *private_data, snd_seq_kinstr_t *kinstr, int what);	struct snd_seq_kinstr_ops *next;};/* instrument operations */snd_seq_kinstr_list_t *snd_seq_instr_list_new(void);void snd_seq_instr_list_free(snd_seq_kinstr_list_t **list);int snd_seq_instr_list_free_cond(snd_seq_kinstr_list_t *list,				 snd_seq_instr_header_t *ifree,				 int client,				 int atomic);snd_seq_kinstr_t *snd_seq_instr_find(snd_seq_kinstr_list_t *list,				     snd_seq_instr_t *instr,				     int exact,				     int follow_alias);void snd_seq_instr_free_use(snd_seq_kinstr_list_t *list,			    snd_seq_kinstr_t *instr);int snd_seq_instr_event(snd_seq_kinstr_ops_t *ops,			snd_seq_kinstr_list_t *list,			snd_seq_event_t *ev,			int client,			int atomic,			int hop);#endif /* __SOUND_SEQ_INSTR_H */

⌨️ 快捷键说明

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