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/sys/bus_proto.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 /*      $NetBSD: bus_proto.h,v 1.14 2022/01/15 07:11:26 skrll Exp $     */
    2 
    3 /*-
    4  * Copyright (c) 1996, 1997, 1998, 2001, 2007 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
    9  * NASA Ames Research Center, and by Andrew Doran.
   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 NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   23  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   30  * POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 /*
   34  * Copyright (c) 1996 Charles M. Hannum.  All rights reserved.
   35  * Copyright (c) 1996 Christopher G. Demetriou.  All rights reserved.
   36  *
   37  * Redistribution and use in source and binary forms, with or without
   38  * modification, are permitted provided that the following conditions
   39  * are met:
   40  * 1. Redistributions of source code must retain the above copyright
   41  *    notice, this list of conditions and the following disclaimer.
   42  * 2. Redistributions in binary form must reproduce the above copyright
   43  *    notice, this list of conditions and the following disclaimer in the
   44  *    documentation and/or other materials provided with the distribution.
   45  * 3. All advertising materials mentioning features or use of this software
   46  *    must display the following acknowledgement:
   47  *      This product includes software developed by Christopher G. Demetriou
   48  *      for the NetBSD Project.
   49  * 4. The name of the author may not be used to endorse or promote products
   50  *    derived from this software without specific prior written permission
   51  *
   52  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   53  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   54  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   55  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   56  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   57  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   58  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   59  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   60  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   61  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   62  */
   63 
   64 #ifndef _SYS_BUS_PROTO_H_
   65 #define _SYS_BUS_PROTO_H_
   66 
   67 #ifdef _KERNEL_OPT
   68 #include "opt_kasan.h"
   69 #include "opt_kcsan.h"
   70 #include "opt_kmsan.h"
   71 #endif
   72 
   73 /*
   74  * Forwards needed by prototypes below.
   75  */
   76 struct mbuf;
   77 struct uio;
   78 
   79 /*
   80  * bus_space(9)
   81  */
   82 
   83 /* Map types. */
   84 #define BUS_SPACE_MAP_CACHEABLE         0x01
   85 #define BUS_SPACE_MAP_LINEAR            0x02
   86 #define BUS_SPACE_MAP_PREFETCHABLE      0x04
   87 
   88 /* Bus read/write barrier methods. */
   89 #define BUS_SPACE_BARRIER_READ          0x01    /* force read barrier */
   90 #define BUS_SPACE_BARRIER_WRITE         0x02    /* force write barrier */
   91 
   92 int     bus_space_map(bus_space_tag_t, bus_addr_t, bus_size_t, int,
   93                       bus_space_handle_t *);
   94 
   95 void    bus_space_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t);
   96 
   97 int     bus_space_subregion(bus_space_tag_t, bus_space_handle_t,
   98                             bus_size_t, bus_size_t, bus_space_handle_t *);
   99 
  100 int     bus_space_alloc(bus_space_tag_t, bus_addr_t, bus_addr_t,
  101                         bus_size_t, bus_size_t, bus_size_t,
  102                         int, bus_addr_t *, bus_space_handle_t *);
  103 
  104 void    bus_space_free(bus_space_tag_t, bus_space_handle_t, bus_size_t);
  105 
  106 paddr_t bus_space_mmap(bus_space_tag_t, bus_addr_t, off_t, int, int);
  107 
  108 void    *bus_space_vaddr(bus_space_tag_t, bus_space_handle_t);
  109 
  110 void    bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh,
  111                           bus_size_t offset, bus_size_t len, int flags);
  112 
  113 /*
  114  * bus_space(9) accessors
  115  */
  116 
  117 uint8_t bus_space_read_1(bus_space_tag_t, bus_space_handle_t,
  118                          bus_size_t);
  119 uint8_t bus_space_read_stream_1(bus_space_tag_t, bus_space_handle_t,
  120                                 bus_size_t);
  121 
  122 uint16_t bus_space_read_2(bus_space_tag_t, bus_space_handle_t,
  123                           bus_size_t);
  124 uint16_t bus_space_read_stream_2(bus_space_tag_t, bus_space_handle_t,
  125                                  bus_size_t);
  126 
  127 uint32_t bus_space_read_4(bus_space_tag_t, bus_space_handle_t,
  128                           bus_size_t);
  129 uint32_t bus_space_read_stream_4(bus_space_tag_t, bus_space_handle_t,
  130                                  bus_size_t);
  131 
  132 #ifdef __HAVE_BUS_SPACE_8
  133 uint64_t bus_space_read_8(bus_space_tag_t, bus_space_handle_t,
  134                           bus_size_t);
  135 uint64_t bus_space_read_stream_8(bus_space_tag_t, bus_space_handle_t,
  136                                  bus_size_t);
  137 #endif
  138 
  139 #if defined(KASAN) && defined(__HAVE_KASAN_INSTR_BUS)
  140 #define BUS_SPACE_READ_MEM_PROTOS(bytes, bits)                                  \
  141 void kasan_bus_space_read_multi_##bytes(bus_space_tag_t, bus_space_handle_t,    \
  142     bus_size_t, uint##bits##_t *, bus_size_t);                                  \
  143 void kasan_bus_space_read_multi_stream_##bytes(bus_space_tag_t,                 \
  144     bus_space_handle_t, bus_size_t, uint##bits##_t *, bus_size_t);              \
  145 void kasan_bus_space_read_region_##bytes(bus_space_tag_t, bus_space_handle_t,   \
  146     bus_size_t, uint##bits##_t *, bus_size_t);                                  \
  147 void kasan_bus_space_read_region_stream_##bytes(bus_space_tag_t,                \
  148     bus_space_handle_t, bus_size_t, uint##bits##_t *, bus_size_t);
  149 #define bus_space_read_multi_1 kasan_bus_space_read_multi_1
  150 #define bus_space_read_multi_2 kasan_bus_space_read_multi_2
  151 #define bus_space_read_multi_4 kasan_bus_space_read_multi_4
  152 #define bus_space_read_multi_8 kasan_bus_space_read_multi_8
  153 #define bus_space_read_multi_stream_1 kasan_bus_space_read_multi_stream_1
  154 #define bus_space_read_multi_stream_2 kasan_bus_space_read_multi_stream_2
  155 #define bus_space_read_multi_stream_4 kasan_bus_space_read_multi_stream_4
  156 #define bus_space_read_multi_stream_8 kasan_bus_space_read_multi_stream_8
  157 #define bus_space_read_region_1 kasan_bus_space_read_region_1
  158 #define bus_space_read_region_2 kasan_bus_space_read_region_2
  159 #define bus_space_read_region_4 kasan_bus_space_read_region_4
  160 #define bus_space_read_region_8 kasan_bus_space_read_region_8
  161 #define bus_space_read_region_stream_1 kasan_bus_space_read_region_stream_1
  162 #define bus_space_read_region_stream_2 kasan_bus_space_read_region_stream_2
  163 #define bus_space_read_region_stream_4 kasan_bus_space_read_region_stream_4
  164 #define bus_space_read_region_stream_8 kasan_bus_space_read_region_stream_8
  165 #elif defined(KCSAN)
  166 #define BUS_SPACE_READ_MEM_PROTOS(bytes, bits)                                  \
  167 void kcsan_bus_space_read_multi_##bytes(bus_space_tag_t, bus_space_handle_t,    \
  168     bus_size_t, uint##bits##_t *, bus_size_t);                                  \
  169 void kcsan_bus_space_read_multi_stream_##bytes(bus_space_tag_t,                 \
  170     bus_space_handle_t, bus_size_t, uint##bits##_t *, bus_size_t);              \
  171 void kcsan_bus_space_read_region_##bytes(bus_space_tag_t, bus_space_handle_t,   \
  172     bus_size_t, uint##bits##_t *, bus_size_t);                                  \
  173 void kcsan_bus_space_read_region_stream_##bytes(bus_space_tag_t,                \
  174     bus_space_handle_t, bus_size_t, uint##bits##_t *, bus_size_t);
  175 #define bus_space_read_multi_1 kcsan_bus_space_read_multi_1
  176 #define bus_space_read_multi_2 kcsan_bus_space_read_multi_2
  177 #define bus_space_read_multi_4 kcsan_bus_space_read_multi_4
  178 #define bus_space_read_multi_8 kcsan_bus_space_read_multi_8
  179 #define bus_space_read_multi_stream_1 kcsan_bus_space_read_multi_stream_1
  180 #define bus_space_read_multi_stream_2 kcsan_bus_space_read_multi_stream_2
  181 #define bus_space_read_multi_stream_4 kcsan_bus_space_read_multi_stream_4
  182 #define bus_space_read_multi_stream_8 kcsan_bus_space_read_multi_stream_8
  183 #define bus_space_read_region_1 kcsan_bus_space_read_region_1
  184 #define bus_space_read_region_2 kcsan_bus_space_read_region_2
  185 #define bus_space_read_region_4 kcsan_bus_space_read_region_4
  186 #define bus_space_read_region_8 kcsan_bus_space_read_region_8
  187 #define bus_space_read_region_stream_1 kcsan_bus_space_read_region_stream_1
  188 #define bus_space_read_region_stream_2 kcsan_bus_space_read_region_stream_2
  189 #define bus_space_read_region_stream_4 kcsan_bus_space_read_region_stream_4
  190 #define bus_space_read_region_stream_8 kcsan_bus_space_read_region_stream_8
  191 #elif defined(KMSAN)
  192 #define BUS_SPACE_READ_MEM_PROTOS(bytes, bits)                                  \
  193 void kmsan_bus_space_read_multi_##bytes(bus_space_tag_t, bus_space_handle_t,    \
  194     bus_size_t, uint##bits##_t *, bus_size_t);                                  \
  195 void kmsan_bus_space_read_multi_stream_##bytes(bus_space_tag_t,                 \
  196     bus_space_handle_t, bus_size_t, uint##bits##_t *, bus_size_t);              \
  197 void kmsan_bus_space_read_region_##bytes(bus_space_tag_t, bus_space_handle_t,   \
  198     bus_size_t, uint##bits##_t *, bus_size_t);                                  \
  199 void kmsan_bus_space_read_region_stream_##bytes(bus_space_tag_t,                \
  200     bus_space_handle_t, bus_size_t, uint##bits##_t *, bus_size_t);
  201 #define bus_space_read_multi_1 kmsan_bus_space_read_multi_1
  202 #define bus_space_read_multi_2 kmsan_bus_space_read_multi_2
  203 #define bus_space_read_multi_4 kmsan_bus_space_read_multi_4
  204 #define bus_space_read_multi_8 kmsan_bus_space_read_multi_8
  205 #define bus_space_read_multi_stream_1 kmsan_bus_space_read_multi_stream_1
  206 #define bus_space_read_multi_stream_2 kmsan_bus_space_read_multi_stream_2
  207 #define bus_space_read_multi_stream_4 kmsan_bus_space_read_multi_stream_4
  208 #define bus_space_read_multi_stream_8 kmsan_bus_space_read_multi_stream_8
  209 #define bus_space_read_region_1 kmsan_bus_space_read_region_1
  210 #define bus_space_read_region_2 kmsan_bus_space_read_region_2
  211 #define bus_space_read_region_4 kmsan_bus_space_read_region_4
  212 #define bus_space_read_region_8 kmsan_bus_space_read_region_8
  213 #define bus_space_read_region_stream_1 kmsan_bus_space_read_region_stream_1
  214 #define bus_space_read_region_stream_2 kmsan_bus_space_read_region_stream_2
  215 #define bus_space_read_region_stream_4 kmsan_bus_space_read_region_stream_4
  216 #define bus_space_read_region_stream_8 kmsan_bus_space_read_region_stream_8
  217 #else
  218 #define BUS_SPACE_READ_MEM_PROTOS(bytes, bits)                          \
  219 void bus_space_read_multi_##bytes(bus_space_tag_t, bus_space_handle_t,  \
  220     bus_size_t, uint##bits##_t *, bus_size_t);                          \
  221 void bus_space_read_multi_stream_##bytes(bus_space_tag_t,               \
  222     bus_space_handle_t, bus_size_t, uint##bits##_t *, bus_size_t);      \
  223 void bus_space_read_region_##bytes(bus_space_tag_t, bus_space_handle_t, \
  224     bus_size_t, uint##bits##_t *, bus_size_t);                          \
  225 void bus_space_read_region_stream_##bytes(bus_space_tag_t,              \
  226     bus_space_handle_t, bus_size_t, uint##bits##_t *, bus_size_t);
  227 #endif
  228 
  229 BUS_SPACE_READ_MEM_PROTOS(1, 8)
  230 BUS_SPACE_READ_MEM_PROTOS(2, 16)
  231 BUS_SPACE_READ_MEM_PROTOS(4, 32)
  232 BUS_SPACE_READ_MEM_PROTOS(8, 64)
  233 
  234 void    bus_space_write_1(bus_space_tag_t, bus_space_handle_t,
  235                           bus_size_t, uint8_t);
  236 void    bus_space_write_stream_1(bus_space_tag_t, bus_space_handle_t,
  237                                  bus_size_t, uint8_t);
  238 
  239 void    bus_space_write_2(bus_space_tag_t, bus_space_handle_t,
  240                           bus_size_t, uint16_t);
  241 void    bus_space_write_stream_2(bus_space_tag_t, bus_space_handle_t,
  242                                  bus_size_t, uint16_t);
  243 
  244 void    bus_space_write_4(bus_space_tag_t, bus_space_handle_t,
  245                           bus_size_t, uint32_t);
  246 void    bus_space_write_stream_4(bus_space_tag_t, bus_space_handle_t,
  247                                  bus_size_t, uint32_t);
  248 
  249 #ifdef __HAVE_BUS_SPACE_8
  250 void    bus_space_write_8(bus_space_tag_t, bus_space_handle_t,
  251                           bus_size_t, uint64_t);
  252 void    bus_space_write_stream_8(bus_space_tag_t, bus_space_handle_t,
  253                                  bus_size_t, uint64_t);
  254 #endif
  255 
  256 #if defined(KASAN) && defined(__HAVE_KASAN_INSTR_BUS)
  257 #define BUS_SPACE_WRITE_MEM_PROTOS(bytes, bits)                                 \
  258 void kasan_bus_space_write_multi_##bytes(bus_space_tag_t, bus_space_handle_t,   \
  259     bus_size_t, const uint##bits##_t *, bus_size_t);                            \
  260 void kasan_bus_space_write_multi_stream_##bytes(bus_space_tag_t,                \
  261     bus_space_handle_t, bus_size_t, const uint##bits##_t *, bus_size_t);        \
  262 void kasan_bus_space_write_region_##bytes(bus_space_tag_t, bus_space_handle_t,  \
  263     bus_size_t, const uint##bits##_t *, bus_size_t);                            \
  264 void kasan_bus_space_write_region_stream_##bytes(bus_space_tag_t,               \
  265     bus_space_handle_t, bus_size_t, const uint##bits##_t *, bus_size_t);
  266 #define bus_space_write_multi_1 kasan_bus_space_write_multi_1
  267 #define bus_space_write_multi_2 kasan_bus_space_write_multi_2
  268 #define bus_space_write_multi_4 kasan_bus_space_write_multi_4
  269 #define bus_space_write_multi_8 kasan_bus_space_write_multi_8
  270 #define bus_space_write_multi_stream_1 kasan_bus_space_write_multi_stream_1
  271 #define bus_space_write_multi_stream_2 kasan_bus_space_write_multi_stream_2
  272 #define bus_space_write_multi_stream_4 kasan_bus_space_write_multi_stream_4
  273 #define bus_space_write_multi_stream_8 kasan_bus_space_write_multi_stream_8
  274 #define bus_space_write_region_1 kasan_bus_space_write_region_1
  275 #define bus_space_write_region_2 kasan_bus_space_write_region_2
  276 #define bus_space_write_region_4 kasan_bus_space_write_region_4
  277 #define bus_space_write_region_8 kasan_bus_space_write_region_8
  278 #define bus_space_write_region_stream_1 kasan_bus_space_write_region_stream_1
  279 #define bus_space_write_region_stream_2 kasan_bus_space_write_region_stream_2
  280 #define bus_space_write_region_stream_4 kasan_bus_space_write_region_stream_4
  281 #define bus_space_write_region_stream_8 kasan_bus_space_write_region_stream_8
  282 #elif defined(KCSAN)
  283 #define BUS_SPACE_WRITE_MEM_PROTOS(bytes, bits)                                 \
  284 void kcsan_bus_space_write_multi_##bytes(bus_space_tag_t, bus_space_handle_t,   \
  285     bus_size_t, const uint##bits##_t *, bus_size_t);                            \
  286 void kcsan_bus_space_write_multi_stream_##bytes(bus_space_tag_t,                \
  287     bus_space_handle_t, bus_size_t, const uint##bits##_t *, bus_size_t);        \
  288 void kcsan_bus_space_write_region_##bytes(bus_space_tag_t, bus_space_handle_t,  \
  289     bus_size_t, const uint##bits##_t *, bus_size_t);                            \
  290 void kcsan_bus_space_write_region_stream_##bytes(bus_space_tag_t,               \
  291     bus_space_handle_t, bus_size_t, const uint##bits##_t *, bus_size_t);
  292 #define bus_space_write_multi_1 kcsan_bus_space_write_multi_1
  293 #define bus_space_write_multi_2 kcsan_bus_space_write_multi_2
  294 #define bus_space_write_multi_4 kcsan_bus_space_write_multi_4
  295 #define bus_space_write_multi_8 kcsan_bus_space_write_multi_8
  296 #define bus_space_write_multi_stream_1 kcsan_bus_space_write_multi_stream_1
  297 #define bus_space_write_multi_stream_2 kcsan_bus_space_write_multi_stream_2
  298 #define bus_space_write_multi_stream_4 kcsan_bus_space_write_multi_stream_4
  299 #define bus_space_write_multi_stream_8 kcsan_bus_space_write_multi_stream_8
  300 #define bus_space_write_region_1 kcsan_bus_space_write_region_1
  301 #define bus_space_write_region_2 kcsan_bus_space_write_region_2
  302 #define bus_space_write_region_4 kcsan_bus_space_write_region_4
  303 #define bus_space_write_region_8 kcsan_bus_space_write_region_8
  304 #define bus_space_write_region_stream_1 kcsan_bus_space_write_region_stream_1
  305 #define bus_space_write_region_stream_2 kcsan_bus_space_write_region_stream_2
  306 #define bus_space_write_region_stream_4 kcsan_bus_space_write_region_stream_4
  307 #define bus_space_write_region_stream_8 kcsan_bus_space_write_region_stream_8
  308 #elif defined(KMSAN)
  309 #define BUS_SPACE_WRITE_MEM_PROTOS(bytes, bits)                                 \
  310 void kmsan_bus_space_write_multi_##bytes(bus_space_tag_t, bus_space_handle_t,   \
  311     bus_size_t, const uint##bits##_t *, bus_size_t);                            \
  312 void kmsan_bus_space_write_multi_stream_##bytes(bus_space_tag_t,                \
  313     bus_space_handle_t, bus_size_t, const uint##bits##_t *, bus_size_t);        \
  314 void kmsan_bus_space_write_region_##bytes(bus_space_tag_t, bus_space_handle_t,  \
  315     bus_size_t, const uint##bits##_t *, bus_size_t);                            \
  316 void kmsan_bus_space_write_region_stream_##bytes(bus_space_tag_t,               \
  317     bus_space_handle_t, bus_size_t, const uint##bits##_t *, bus_size_t);
  318 #define bus_space_write_multi_1 kmsan_bus_space_write_multi_1
  319 #define bus_space_write_multi_2 kmsan_bus_space_write_multi_2
  320 #define bus_space_write_multi_4 kmsan_bus_space_write_multi_4
  321 #define bus_space_write_multi_8 kmsan_bus_space_write_multi_8
  322 #define bus_space_write_multi_stream_1 kmsan_bus_space_write_multi_stream_1
  323 #define bus_space_write_multi_stream_2 kmsan_bus_space_write_multi_stream_2
  324 #define bus_space_write_multi_stream_4 kmsan_bus_space_write_multi_stream_4
  325 #define bus_space_write_multi_stream_8 kmsan_bus_space_write_multi_stream_8
  326 #define bus_space_write_region_1 kmsan_bus_space_write_region_1
  327 #define bus_space_write_region_2 kmsan_bus_space_write_region_2
  328 #define bus_space_write_region_4 kmsan_bus_space_write_region_4
  329 #define bus_space_write_region_8 kmsan_bus_space_write_region_8
  330 #define bus_space_write_region_stream_1 kmsan_bus_space_write_region_stream_1
  331 #define bus_space_write_region_stream_2 kmsan_bus_space_write_region_stream_2
  332 #define bus_space_write_region_stream_4 kmsan_bus_space_write_region_stream_4
  333 #define bus_space_write_region_stream_8 kmsan_bus_space_write_region_stream_8
  334 #else
  335 #define BUS_SPACE_WRITE_MEM_PROTOS(bytes, bits)                         \
  336 void bus_space_write_multi_##bytes(bus_space_tag_t, bus_space_handle_t, \
  337     bus_size_t, const uint##bits##_t *, bus_size_t);                    \
  338 void bus_space_write_multi_stream_##bytes(bus_space_tag_t,              \
  339     bus_space_handle_t, bus_size_t, const uint##bits##_t *, bus_size_t);\
  340 void bus_space_write_region_##bytes(bus_space_tag_t, bus_space_handle_t,\
  341     bus_size_t, const uint##bits##_t *, bus_size_t);                    \
  342 void bus_space_write_region_stream_##bytes(bus_space_tag_t,             \
  343     bus_space_handle_t, bus_size_t, const uint##bits##_t *, bus_size_t);
  344 #endif
  345 
  346 BUS_SPACE_WRITE_MEM_PROTOS(1, 8)
  347 BUS_SPACE_WRITE_MEM_PROTOS(2, 16)
  348 BUS_SPACE_WRITE_MEM_PROTOS(4, 32)
  349 BUS_SPACE_WRITE_MEM_PROTOS(8, 64)
  350 
  351 void    bus_space_set_multi_1(bus_space_tag_t, bus_space_handle_t,
  352                               bus_size_t, u_int8_t, bus_size_t);
  353 void    bus_space_set_multi_2(bus_space_tag_t, bus_space_handle_t,
  354                               bus_size_t, u_int16_t, bus_size_t);
  355 void    bus_space_set_multi_4(bus_space_tag_t, bus_space_handle_t,
  356                               bus_size_t, u_int32_t, bus_size_t);
  357 #ifdef __HAVE_BUS_SPACE_8
  358 void    bus_space_set_multi_8(bus_space_tag_t, bus_space_handle_t,
  359                               bus_size_t, u_int64_t, bus_size_t);
  360 #endif
  361 
  362 void    bus_space_set_multi_stream_1(bus_space_tag_t, bus_space_handle_t,
  363                               bus_size_t, u_int8_t, bus_size_t);
  364 void    bus_space_set_multi_stream_2(bus_space_tag_t, bus_space_handle_t,
  365                               bus_size_t, u_int16_t, bus_size_t);
  366 void    bus_space_set_multi_stream_4(bus_space_tag_t, bus_space_handle_t,
  367                               bus_size_t, u_int32_t, bus_size_t);
  368 #ifdef __HAVE_BUS_SPACE_8
  369 void    bus_space_set_multi_stream_8(bus_space_tag_t, bus_space_handle_t,
  370                               bus_size_t, u_int64_t, bus_size_t);
  371 #endif
  372 
  373 void    bus_space_set_region_1(bus_space_tag_t, bus_space_handle_t,
  374                                bus_size_t, u_int8_t, bus_size_t);
  375 void    bus_space_set_region_2(bus_space_tag_t, bus_space_handle_t,
  376                                bus_size_t, u_int16_t, bus_size_t);
  377 void    bus_space_set_region_4(bus_space_tag_t, bus_space_handle_t,
  378                                bus_size_t, u_int32_t, bus_size_t);
  379 #ifdef __HAVE_BUS_SPACE_8
  380 void    bus_space_set_region_8(bus_space_tag_t, bus_space_handle_t,
  381                                bus_size_t, u_int64_t, bus_size_t);
  382 #endif
  383 
  384 void    bus_space_set_region_stream_1(bus_space_tag_t, bus_space_handle_t,
  385                                bus_size_t, u_int8_t, bus_size_t);
  386 void    bus_space_set_region_stream_2(bus_space_tag_t, bus_space_handle_t,
  387                                bus_size_t, u_int16_t, bus_size_t);
  388 void    bus_space_set_region_stream_4(bus_space_tag_t, bus_space_handle_t,
  389                                bus_size_t, u_int32_t, bus_size_t);
  390 #ifdef __HAVE_BUS_SPACE_8
  391 void    bus_space_set_region_stream_8(bus_space_tag_t, bus_space_handle_t,
  392                                bus_size_t, u_int64_t, bus_size_t);
  393 #endif
  394 
  395 void    bus_space_copy_region_1(bus_space_tag_t, bus_space_handle_t,
  396                                 bus_size_t, bus_space_handle_t,
  397                                 bus_size_t, bus_size_t);
  398 void    bus_space_copy_region_2(bus_space_tag_t, bus_space_handle_t,
  399                                 bus_size_t, bus_space_handle_t,
  400                                 bus_size_t, bus_size_t);
  401 void    bus_space_copy_region_4(bus_space_tag_t, bus_space_handle_t,
  402                                 bus_size_t, bus_space_handle_t,
  403                                 bus_size_t, bus_size_t);
  404 #ifdef __HAVE_BUS_SPACE_8
  405 void    bus_space_copy_region_8(bus_space_tag_t, bus_space_handle_t,
  406                                 bus_size_t, bus_space_handle_t,
  407                                 bus_size_t, bus_size_t);
  408 #endif
  409 
  410 void    bus_space_copy_region_stream_1(bus_space_tag_t, bus_space_handle_t,
  411                                 bus_size_t, bus_space_handle_t,
  412                                 bus_size_t, bus_size_t);
  413 void    bus_space_copy_region_stream_2(bus_space_tag_t, bus_space_handle_t,
  414                                 bus_size_t, bus_space_handle_t,
  415                                 bus_size_t, bus_size_t);
  416 void    bus_space_copy_region_stream_4(bus_space_tag_t, bus_space_handle_t,
  417                                 bus_size_t, bus_space_handle_t,
  418                                 bus_size_t, bus_size_t);
  419 #ifdef __HAVE_BUS_SPACE_8
  420 void    bus_space_copy_region_stream_8(bus_space_tag_t, bus_space_handle_t,
  421                                 bus_size_t, bus_space_handle_t,
  422                                 bus_size_t, bus_size_t);
  423 #endif
  424 
  425 bool    bus_space_is_equal(bus_space_tag_t, bus_space_tag_t);
  426 bool    bus_space_handle_is_equal(bus_space_tag_t, bus_space_handle_t,
  427     bus_space_handle_t);
  428 
  429 /*
  430  * bus_dma(9)
  431  */
  432 
  433 /* Flags used in various bus DMA methods. */
  434 #define BUS_DMA_WAITOK          0x000   /* safe to sleep (pseudo-flag) */
  435 #define BUS_DMA_NOWAIT          0x001   /* not safe to sleep */
  436 #define BUS_DMA_ALLOCNOW        0x002   /* perform resource allocation now */
  437 #define BUS_DMA_COHERENT        0x004   /* hint: map memory DMA coherent */
  438 #define BUS_DMA_STREAMING       0x008   /* hint: sequential, unidirectional */
  439 #define BUS_DMA_BUS1            0x010   /* placeholders for bus functions... */
  440 #define BUS_DMA_BUS2            0x020
  441 #define BUS_DMA_BUS3            0x040
  442 #define BUS_DMA_BUS4            0x080
  443 #define BUS_DMA_READ            0x100   /* mapping is device -> memory only */
  444 #define BUS_DMA_WRITE           0x200   /* mapping is memory -> device only */
  445 #define BUS_DMA_NOCACHE         0x400   /* hint: map non-cached memory */
  446 #define BUS_DMA_PREFETCHABLE    0x800   /* hint: map non-cached but allow
  447                                          * things like write combining */
  448 
  449 /* Operations performed by bus_dmamap_sync(). */
  450 #define BUS_DMASYNC_PREREAD     0x01    /* pre-read synchronization */
  451 #define BUS_DMASYNC_POSTREAD    0x02    /* post-read synchronization */
  452 #define BUS_DMASYNC_PREWRITE    0x04    /* pre-write synchronization */
  453 #define BUS_DMASYNC_POSTWRITE   0x08    /* post-write synchronization */
  454 
  455 int     bus_dmamap_create(bus_dma_tag_t, bus_size_t, int, bus_size_t,
  456                           bus_size_t, int, bus_dmamap_t *);
  457 void    bus_dmamap_destroy(bus_dma_tag_t, bus_dmamap_t);
  458 int     bus_dmamap_load(bus_dma_tag_t, bus_dmamap_t, void *, bus_size_t,
  459                         struct proc *, int);
  460 int     bus_dmamap_load_mbuf(bus_dma_tag_t, bus_dmamap_t,
  461                              struct mbuf *, int);
  462 int     bus_dmamap_load_uio(bus_dma_tag_t, bus_dmamap_t,
  463                             struct uio *, int);
  464 int     bus_dmamap_load_raw(bus_dma_tag_t, bus_dmamap_t,
  465                             bus_dma_segment_t *, int, bus_size_t, int);
  466 void    bus_dmamap_unload(bus_dma_tag_t, bus_dmamap_t);
  467 void    bus_dmamap_sync(bus_dma_tag_t, bus_dmamap_t, bus_addr_t,
  468                         bus_size_t, int);
  469 
  470 int     bus_dmamem_alloc(bus_dma_tag_t, bus_size_t, bus_size_t,
  471                          bus_size_t, bus_dma_segment_t *,
  472                          int, int *, int);
  473 void    bus_dmamem_free(bus_dma_tag_t, bus_dma_segment_t *, int);
  474 int     bus_dmamem_map(bus_dma_tag_t, bus_dma_segment_t *, int,
  475                        size_t, void **, int);
  476 void    bus_dmamem_unmap(bus_dma_tag_t, void *, size_t);
  477 paddr_t bus_dmamem_mmap(bus_dma_tag_t, bus_dma_segment_t *, int,
  478                         off_t, int, int);
  479 
  480 int     bus_dmatag_subregion(bus_dma_tag_t, bus_addr_t, bus_addr_t,
  481                              bus_dma_tag_t *, int);
  482 void    bus_dmatag_destroy(bus_dma_tag_t);
  483 
  484 #endif  /* _SYS_BUS_PROTO_H_ */

Cache object: c5bf5429ec93fc09500281b9608902db


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