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/netgraph/bluetooth/include/ng_bluetooth.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  * bluetooth.h
    3  */
    4 
    5 /*-
    6  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    7  *
    8  * Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
    9  * All rights reserved.
   10  *
   11  * Redistribution and use in source and binary forms, with or without
   12  * modification, are permitted provided that the following conditions
   13  * are met:
   14  * 1. Redistributions of source code must retain the above copyright
   15  *    notice, this list of conditions and the following disclaimer.
   16  * 2. Redistributions in binary form must reproduce the above copyright
   17  *    notice, this list of conditions and the following disclaimer in the
   18  *    documentation and/or other materials provided with the distribution.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   23  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   30  * SUCH DAMAGE.
   31  *
   32  * $Id: ng_bluetooth.h,v 1.4 2003/04/26 22:32:34 max Exp $
   33  * $FreeBSD$
   34  */
   35 
   36 #ifndef _NETGRAPH_BLUETOOTH_H_
   37 #define _NETGRAPH_BLUETOOTH_H_
   38 
   39 #include <sys/queue.h>
   40 
   41 /*
   42  * Version of the stack
   43  */
   44 
   45 #define NG_BLUETOOTH_VERSION    1
   46 
   47 /*
   48  * Declare the base of the Bluetooth sysctl hierarchy, 
   49  * but only if this file cares about sysctl's
   50  */
   51 
   52 #ifdef SYSCTL_DECL
   53 SYSCTL_DECL(_net_bluetooth);
   54 SYSCTL_DECL(_net_bluetooth_hci);
   55 SYSCTL_DECL(_net_bluetooth_l2cap);
   56 SYSCTL_DECL(_net_bluetooth_rfcomm);
   57 SYSCTL_DECL(_net_bluetooth_sco);
   58 #endif /* SYSCTL_DECL */
   59 
   60 /*
   61  * Mbuf qeueue and useful mbufq macros. We do not use ifqueue because we
   62  * do not need mutex and other locking stuff
   63  */
   64 
   65 struct mbuf;
   66 
   67 struct ng_bt_mbufq {
   68         struct mbuf     *head;   /* first item in the queue */
   69         struct mbuf     *tail;   /* last item in the queue */
   70         u_int32_t        len;    /* number of items in the queue */
   71         u_int32_t        maxlen; /* maximal number of items in the queue */
   72         u_int32_t        drops;  /* number if dropped items */
   73 };
   74 typedef struct ng_bt_mbufq      ng_bt_mbufq_t;
   75 typedef struct ng_bt_mbufq *    ng_bt_mbufq_p;
   76 
   77 #define NG_BT_MBUFQ_INIT(q, _maxlen)                    \
   78         do {                                            \
   79                 (q)->head = NULL;                       \
   80                 (q)->tail = NULL;                       \
   81                 (q)->len = 0;                           \
   82                 (q)->maxlen = (_maxlen);                \
   83                 (q)->drops = 0;                         \
   84         } while (0)
   85 
   86 #define NG_BT_MBUFQ_DESTROY(q)                          \
   87         do {                                            \
   88                 NG_BT_MBUFQ_DRAIN((q));                 \
   89         } while (0)
   90 
   91 #define NG_BT_MBUFQ_FIRST(q)    (q)->head
   92 
   93 #define NG_BT_MBUFQ_LEN(q)      (q)->len
   94 
   95 #define NG_BT_MBUFQ_FULL(q)     ((q)->len >= (q)->maxlen)
   96 
   97 #define NG_BT_MBUFQ_DROP(q)     (q)->drops ++
   98 
   99 #define NG_BT_MBUFQ_ENQUEUE(q, i)                       \
  100         do {                                            \
  101                 (i)->m_nextpkt = NULL;                  \
  102                                                         \
  103                 if ((q)->tail == NULL)                  \
  104                         (q)->head = (i);                \
  105                 else                                    \
  106                         (q)->tail->m_nextpkt = (i);     \
  107                                                         \
  108                 (q)->tail = (i);                        \
  109                 (q)->len ++;                            \
  110         } while (0)
  111 
  112 #define NG_BT_MBUFQ_DEQUEUE(q, i)                       \
  113         do {                                            \
  114                 (i) = (q)->head;                        \
  115                 if ((i) != NULL) {                      \
  116                         (q)->head = (q)->head->m_nextpkt; \
  117                         if ((q)->head == NULL)          \
  118                                 (q)->tail = NULL;       \
  119                                                         \
  120                         (q)->len --;                    \
  121                         (i)->m_nextpkt = NULL;          \
  122                 }                                       \
  123         } while (0)
  124 
  125 #define NG_BT_MBUFQ_PREPEND(q, i)                       \
  126         do {                                            \
  127                 (i)->m_nextpkt = (q)->head;             \
  128                 if ((q)->tail == NULL)                  \
  129                         (q)->tail = (i);                \
  130                                                         \
  131                 (q)->head = (i);                        \
  132                 (q)->len ++;                            \
  133         } while (0)
  134 
  135 #define NG_BT_MBUFQ_DRAIN(q)                            \
  136         do {                                            \
  137                 struct mbuf     *m = NULL;              \
  138                                                         \
  139                 for (;;) {                              \
  140                         NG_BT_MBUFQ_DEQUEUE((q), m);    \
  141                         if (m == NULL)                  \
  142                                 break;                  \
  143                                                         \
  144                         NG_FREE_M(m);                   \
  145                 }                                       \
  146         } while (0)
  147 
  148 /* 
  149  * Netgraph item queue and useful itemq macros
  150  */
  151 
  152 struct ng_item;
  153 
  154 struct ng_bt_itemq {
  155         STAILQ_HEAD(, ng_item)  queue;  /* actually items queue */
  156         u_int32_t        len;    /* number of items in the queue */
  157         u_int32_t        maxlen; /* maximal number of items in the queue */
  158         u_int32_t        drops;  /* number if dropped items */
  159 };
  160 typedef struct ng_bt_itemq      ng_bt_itemq_t;
  161 typedef struct ng_bt_itemq *    ng_bt_itemq_p;
  162 
  163 #define NG_BT_ITEMQ_INIT(q, _maxlen)                    \
  164         do {                                            \
  165                 STAILQ_INIT(&(q)->queue);               \
  166                 (q)->len = 0;                           \
  167                 (q)->maxlen = (_maxlen);                \
  168                 (q)->drops = 0;                         \
  169         } while (0)
  170 
  171 #define NG_BT_ITEMQ_DESTROY(q)                          \
  172         do {                                            \
  173                 NG_BT_ITEMQ_DRAIN((q));                 \
  174         } while (0)
  175 
  176 #define NG_BT_ITEMQ_FIRST(q)    STAILQ_FIRST(&(q)->queue)
  177 
  178 #define NG_BT_ITEMQ_LEN(q)      NG_BT_MBUFQ_LEN((q))
  179 
  180 #define NG_BT_ITEMQ_FULL(q)     NG_BT_MBUFQ_FULL((q))
  181 
  182 #define NG_BT_ITEMQ_DROP(q)     NG_BT_MBUFQ_DROP((q))
  183 
  184 #define NG_BT_ITEMQ_ENQUEUE(q, i)                       \
  185         do {                                            \
  186                 STAILQ_INSERT_TAIL(&(q)->queue, (i), el_next);  \
  187                 (q)->len ++;                            \
  188         } while (0)
  189 
  190 #define NG_BT_ITEMQ_DEQUEUE(q, i)                       \
  191         do {                                            \
  192                 (i) = STAILQ_FIRST(&(q)->queue);        \
  193                 if ((i) != NULL) {                      \
  194                         STAILQ_REMOVE_HEAD(&(q)->queue, el_next);       \
  195                         (q)->len --;                    \
  196                 }                                       \
  197         } while (0)
  198 
  199 #define NG_BT_ITEMQ_PREPEND(q, i)                       \
  200         do {                                            \
  201                 STAILQ_INSERT_HEAD(&(q)->queue, (i), el_next);  \
  202                 (q)->len ++;                            \
  203         } while (0)
  204 
  205 #define NG_BT_ITEMQ_DRAIN(q)                            \
  206         do {                                            \
  207                 struct ng_item  *i = NULL;              \
  208                                                         \
  209                 for (;;) {                              \
  210                         NG_BT_ITEMQ_DEQUEUE((q), i);    \
  211                         if (i == NULL)                  \
  212                                 break;                  \
  213                                                         \
  214                         NG_FREE_ITEM(i);                \
  215                 }                                       \
  216         } while (0)
  217 
  218 /*
  219  * Get Bluetooth stack sysctl globals
  220  */
  221 
  222 u_int32_t       bluetooth_hci_command_timeout   (void);
  223 u_int32_t       bluetooth_hci_connect_timeout   (void);
  224 u_int32_t       bluetooth_hci_max_neighbor_age  (void);
  225 u_int32_t       bluetooth_l2cap_rtx_timeout     (void);
  226 u_int32_t       bluetooth_l2cap_ertx_timeout    (void);
  227 u_int32_t      bluetooth_sco_rtx_timeout       (void);
  228 
  229 #define BDADDR_BREDR 0
  230 #define BDADDR_LE_PUBLIC 1
  231 #define BDADDR_LE_RANDOM 2
  232 
  233 #endif /* _NETGRAPH_BLUETOOTH_H_ */

Cache object: 924aacd067ada50f5efecd1c4dacd4eb


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