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/contrib/openzfs/include/sys/bqueue.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  * CDDL HEADER START
    3  *
    4  * This file and its contents are supplied under the terms of the
    5  * Common Development and Distribution License ("CDDL"), version 1.0.
    6  * You may only use this file in accordance with the terms of version
    7  * 1.0 of the CDDL.
    8  *
    9  * A full copy of the text of the CDDL should have accompanied this
   10  * source.  A copy of the CDDL is also available via the Internet at
   11  * http://www.illumos.org/license/CDDL.
   12  *
   13  * CDDL HEADER END
   14  */
   15 /*
   16  * Copyright (c) 2014, 2018 by Delphix. All rights reserved.
   17  */
   18 
   19 #ifndef _BQUEUE_H
   20 #define _BQUEUE_H
   21 
   22 #ifdef  __cplusplus
   23 extern "C" {
   24 #endif
   25 
   26 #include        <sys/zfs_context.h>
   27 
   28 typedef struct bqueue {
   29         list_t bq_list;
   30         size_t bq_size;
   31         list_t bq_dequeuing_list;
   32         size_t bq_dequeuing_size;
   33         list_t bq_enqueuing_list;
   34         size_t bq_enqueuing_size;
   35         kmutex_t bq_lock;
   36         kcondvar_t bq_add_cv;
   37         kcondvar_t bq_pop_cv;
   38         size_t bq_maxsize;
   39         uint_t bq_fill_fraction;
   40         size_t bq_node_offset;
   41 } bqueue_t;
   42 
   43 typedef struct bqueue_node {
   44         list_node_t bqn_node;
   45         size_t bqn_size;
   46 } bqueue_node_t;
   47 
   48 
   49 int bqueue_init(bqueue_t *, uint_t, size_t, size_t);
   50 void bqueue_destroy(bqueue_t *);
   51 void bqueue_enqueue(bqueue_t *, void *, size_t);
   52 void bqueue_enqueue_flush(bqueue_t *, void *, size_t);
   53 void *bqueue_dequeue(bqueue_t *);
   54 
   55 #ifdef  __cplusplus
   56 }
   57 #endif
   58 
   59 #endif  /* _BQUEUE_H */

Cache object: 6bc2cab60126e0421ed493f55b4bd138


[ 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.