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/random/randomdev.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) 2000-2015 Mark R V Murray
    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  *    in this position and unchanged.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  *
   15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   17  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   18  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   19  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   20  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   24  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   25  *
   26  * $FreeBSD$
   27  */
   28 
   29 #ifndef SYS_DEV_RANDOM_RANDOMDEV_H_INCLUDED
   30 #define SYS_DEV_RANDOM_RANDOMDEV_H_INCLUDED
   31 
   32 #ifdef _KERNEL
   33 
   34 /* This header contains only those definitions that are global
   35  * and non algorithm-specific for the entropy processor
   36  */
   37 
   38 #ifdef SYSCTL_DECL      /* from sysctl.h */
   39 SYSCTL_DECL(_kern_random);
   40 SYSCTL_DECL(_kern_random_initial_seeding);
   41 
   42 #define RANDOM_CHECK_UINT(name, min, max)                               \
   43 static int                                                              \
   44 random_check_uint_##name(SYSCTL_HANDLER_ARGS)                           \
   45 {                                                                       \
   46         if (oidp->oid_arg1 != NULL) {                                   \
   47                 if (*(u_int *)(oidp->oid_arg1) <= (min))                \
   48                         *(u_int *)(oidp->oid_arg1) = (min);             \
   49                 else if (*(u_int *)(oidp->oid_arg1) > (max))            \
   50                         *(u_int *)(oidp->oid_arg1) = (max);             \
   51         }                                                               \
   52         return (sysctl_handle_int(oidp, oidp->oid_arg1, oidp->oid_arg2, \
   53                 req));                                                  \
   54 }
   55 #endif /* SYSCTL_DECL */
   56 
   57 MALLOC_DECLARE(M_ENTROPY);
   58 
   59 extern bool random_bypass_before_seeding;
   60 extern bool read_random_bypassed_before_seeding;
   61 extern bool arc4random_bypassed_before_seeding;
   62 extern bool random_bypass_disable_warnings;
   63 
   64 #endif /* _KERNEL */
   65 
   66 struct harvest_event;
   67 
   68 typedef void random_alg_pre_read_t(void);
   69 typedef void random_alg_read_t(uint8_t *, size_t);
   70 typedef bool random_alg_seeded_t(void);
   71 typedef void random_alg_eventprocessor_t(struct harvest_event *);
   72 
   73 typedef u_int random_source_read_t(void *, u_int);
   74 
   75 /*
   76  * Random Algorithm is a processor of randomness for the kernel
   77  * and for userland.
   78  */
   79 struct random_algorithm {
   80         const char                      *ra_ident;
   81         u_int                            ra_poolcount;
   82         random_alg_pre_read_t           *ra_pre_read;
   83         random_alg_read_t               *ra_read;
   84         random_alg_seeded_t             *ra_seeded;
   85         random_alg_eventprocessor_t     *ra_event_processor;
   86 };
   87 
   88 #if defined(RANDOM_LOADABLE)
   89 extern const struct random_algorithm *p_random_alg_context;
   90 #else
   91 extern const struct random_algorithm random_alg_context;
   92 #define p_random_alg_context (&random_alg_context)
   93 #endif
   94 
   95 #ifdef _KERNEL
   96 
   97 /*
   98  * Random Source is a source of entropy that can provide
   99  * specified or approximate amount of entropy immediately
  100  * upon request.
  101  */
  102 struct random_source {
  103         const char                      *rs_ident;
  104         enum random_entropy_source       rs_source;
  105         random_source_read_t            *rs_read;
  106 };
  107 
  108 void random_source_register(struct random_source *);
  109 void random_source_deregister(struct random_source *);
  110 
  111 #endif /* _KERNEL */
  112 
  113 void randomdev_unblock(void);
  114 
  115 #endif /* SYS_DEV_RANDOM_RANDOMDEV_H_INCLUDED */

Cache object: bf3a0a2947efaf356098ac96e0c458e6


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