mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-31 00:17:44 +00:00
1a59d1b8e0
Based on 1 normalized pattern(s): 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 extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 1334 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Richard Fontana <rfontana@redhat.com> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070033.113240726@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
57 lines
1.6 KiB
C
57 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* ALSA sequencer FIFO
|
|
* Copyright (c) 1998 by Frank van de Pol <fvdpol@coil.demon.nl>
|
|
*/
|
|
#ifndef __SND_SEQ_FIFO_H
|
|
#define __SND_SEQ_FIFO_H
|
|
|
|
#include "seq_memory.h"
|
|
#include "seq_lock.h"
|
|
|
|
|
|
/* === FIFO === */
|
|
|
|
struct snd_seq_fifo {
|
|
struct snd_seq_pool *pool; /* FIFO pool */
|
|
struct snd_seq_event_cell *head; /* pointer to head of fifo */
|
|
struct snd_seq_event_cell *tail; /* pointer to tail of fifo */
|
|
int cells;
|
|
spinlock_t lock;
|
|
snd_use_lock_t use_lock;
|
|
wait_queue_head_t input_sleep;
|
|
atomic_t overflow;
|
|
|
|
};
|
|
|
|
/* create new fifo (constructor) */
|
|
struct snd_seq_fifo *snd_seq_fifo_new(int poolsize);
|
|
|
|
/* delete fifo (destructor) */
|
|
void snd_seq_fifo_delete(struct snd_seq_fifo **f);
|
|
|
|
|
|
/* enqueue event to fifo */
|
|
int snd_seq_fifo_event_in(struct snd_seq_fifo *f, struct snd_seq_event *event);
|
|
|
|
/* lock fifo from release */
|
|
#define snd_seq_fifo_lock(fifo) snd_use_lock_use(&(fifo)->use_lock)
|
|
#define snd_seq_fifo_unlock(fifo) snd_use_lock_free(&(fifo)->use_lock)
|
|
|
|
/* get a cell from fifo - fifo should be locked */
|
|
int snd_seq_fifo_cell_out(struct snd_seq_fifo *f, struct snd_seq_event_cell **cellp, int nonblock);
|
|
|
|
/* free dequeued cell - fifo should be locked */
|
|
void snd_seq_fifo_cell_putback(struct snd_seq_fifo *f, struct snd_seq_event_cell *cell);
|
|
|
|
/* clean up queue */
|
|
void snd_seq_fifo_clear(struct snd_seq_fifo *f);
|
|
|
|
/* polling */
|
|
int snd_seq_fifo_poll_wait(struct snd_seq_fifo *f, struct file *file, poll_table *wait);
|
|
|
|
/* resize pool in fifo */
|
|
int snd_seq_fifo_resize(struct snd_seq_fifo *f, int poolsize);
|
|
|
|
|
|
#endif
|