The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/sound/clone.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 2007 Ariff Abdullah <ariff@FreeBSD.org>
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  *
   14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   24  * SUCH DAMAGE.
   25  *
   26  * $FreeBSD: releng/10.4/sys/dev/sound/clone.h 170719 2007-06-14 11:10:21Z ariff $
   27  */
   28 
   29 #ifndef _SND_CLONE_H_
   30 #define _SND_CLONE_H_
   31 
   32 struct snd_clone_entry;
   33 struct snd_clone;
   34 
   35 /*
   36  * 750 milisecond default deadline. Short enough to not cause excessive
   37  * garbage collection, long enough to indicate stalled VFS.
   38  */
   39 #define SND_CLONE_DEADLINE_DEFAULT      750
   40 
   41 /*
   42  * Fit within 24bit MAXMINOR.
   43  */
   44 #define SND_CLONE_MAXUNIT               0xffffff
   45 
   46 /*
   47  * Creation flags, mostly related to the behaviour of garbage collector.
   48  *
   49  * SND_CLONE_ENABLE     - Enable clone allocation.
   50  * SND_CLONE_GC_ENABLE  - Enable garbage collector operation, automatically
   51  *                        or if explicitly called upon.
   52  * SND_CLONE_GC_UNREF   - Garbage collect during unref operation.
   53  * SND_CLONE_GC_LASTREF - Garbage collect during last reference
   54  *                        (refcount = 0)
   55  * SND_CLONE_GC_EXPIRED - Don't garbage collect unless the global clone
   56  *                        handler has been expired.
   57  * SND_CLONE_GC_REVOKE  - Revoke clone invocation status which has been
   58  *                        expired instead of removing and freeing it.
   59  * SND_CLONE_WAITOK     - malloc() is allowed to sleep while allocating
   60  *                        clone entry.
   61  */
   62 #define SND_CLONE_ENABLE        0x00000001
   63 #define SND_CLONE_GC_ENABLE     0x00000002
   64 #define SND_CLONE_GC_UNREF      0x00000004
   65 #define SND_CLONE_GC_LASTREF    0x00000008
   66 #define SND_CLONE_GC_EXPIRED    0x00000010
   67 #define SND_CLONE_GC_REVOKE     0x00000020
   68 #define SND_CLONE_WAITOK        0x80000000
   69 
   70 #define SND_CLONE_GC_MASK       (SND_CLONE_GC_ENABLE  |                 \
   71                                  SND_CLONE_GC_UNREF   |                 \
   72                                  SND_CLONE_GC_LASTREF |                 \
   73                                  SND_CLONE_GC_EXPIRED |                 \
   74                                  SND_CLONE_GC_REVOKE)
   75 
   76 #define SND_CLONE_MASK          (SND_CLONE_ENABLE | SND_CLONE_GC_MASK | \
   77                                  SND_CLONE_WAITOK)
   78 
   79 /*
   80  * Runtime clone device flags
   81  *
   82  * These are mostly private to the clone manager operation:
   83  *
   84  * SND_CLONE_NEW    - New clone allocation in progress.
   85  * SND_CLONE_INVOKE - Cloning being invoked, waiting for next VFS operation.
   86  * SND_CLONE_BUSY   - In progress, being referenced by living thread/proc.
   87  */
   88 #define SND_CLONE_NEW           0x00000001
   89 #define SND_CLONE_INVOKE        0x00000002
   90 #define SND_CLONE_BUSY          0x00000004
   91 
   92 /*
   93  * Nothing important, just for convenience.
   94  */
   95 #define SND_CLONE_ALLOC         (SND_CLONE_NEW | SND_CLONE_INVOKE |     \
   96                                  SND_CLONE_BUSY)
   97 
   98 #define SND_CLONE_DEVMASK       SND_CLONE_ALLOC
   99 
  100 
  101 void snd_timestamp(struct timespec *);
  102 
  103 struct snd_clone *snd_clone_create(int, int, int, uint32_t);
  104 int snd_clone_busy(struct snd_clone *);
  105 int snd_clone_enable(struct snd_clone *);
  106 int snd_clone_disable(struct snd_clone *);
  107 int snd_clone_getsize(struct snd_clone *);
  108 int snd_clone_getmaxunit(struct snd_clone *);
  109 int snd_clone_setmaxunit(struct snd_clone *, int);
  110 int snd_clone_getdeadline(struct snd_clone *);
  111 int snd_clone_setdeadline(struct snd_clone *, int);
  112 int snd_clone_gettime(struct snd_clone *, struct timespec *);
  113 uint32_t snd_clone_getflags(struct snd_clone *);
  114 uint32_t snd_clone_setflags(struct snd_clone *, uint32_t);
  115 int snd_clone_getdevtime(struct cdev *, struct timespec *);
  116 uint32_t snd_clone_getdevflags(struct cdev *);
  117 uint32_t snd_clone_setdevflags(struct cdev *, uint32_t);
  118 int snd_clone_gc(struct snd_clone *);
  119 void snd_clone_destroy(struct snd_clone *);
  120 int snd_clone_acquire(struct cdev *);
  121 int snd_clone_release(struct cdev *);
  122 int snd_clone_ref(struct cdev *);
  123 int snd_clone_unref(struct cdev *);
  124 void snd_clone_register(struct snd_clone_entry *, struct cdev *);
  125 struct snd_clone_entry *snd_clone_alloc(struct snd_clone *, struct cdev **,
  126     int *, int);
  127 
  128 #define snd_clone_enabled(x)    ((x) != NULL &&                         \
  129                                 (snd_clone_getflags(x) & SND_CLONE_ENABLE))
  130 #define snd_clone_disabled(x)   (!snd_clone_enabled(x))
  131 
  132 #endif /* !_SND_CLONE_H */

Cache object: b51e7c8538230c88c2212fecd688a1c7


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.