"Fossies" - the Fresh Open Source Software Archive

Member "tor-0.4.1.6/src/lib/ctime/di_ops.h" (10 Jun 2019, 2032 Bytes) of package /linux/misc/tor-0.4.1.6.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "di_ops.h" see the Fossies "Dox" file reference documentation.

    1 /* Copyright (c) 2003-2004, Roger Dingledine
    2  * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
    3  * Copyright (c) 2007-2019, The Tor Project, Inc. */
    4 /* See LICENSE for licensing information */
    5 
    6 /**
    7  * \file di_ops.h
    8  * \brief Headers for di_ops.c
    9  **/
   10 
   11 #ifndef TOR_DI_OPS_H
   12 #define TOR_DI_OPS_H
   13 
   14 #include "orconfig.h"
   15 #include "lib/cc/torint.h"
   16 
   17 int tor_memcmp(const void *a, const void *b, size_t sz);
   18 int tor_memeq(const void *a, const void *b, size_t sz);
   19 #define tor_memneq(a,b,sz) (!tor_memeq((a),(b),(sz)))
   20 
   21 /** Alias for the platform's memcmp() function.  This function is
   22  * <em>not</em> data-independent: we define this alias so that we can
   23  * mark cases where we are deliberately using a data-dependent memcmp()
   24  * implementation.
   25  */
   26 #define fast_memcmp(a,b,c) (memcmp((a),(b),(c)))
   27 #define fast_memeq(a,b,c)  (0==memcmp((a),(b),(c)))
   28 #define fast_memneq(a,b,c) (0!=memcmp((a),(b),(c)))
   29 
   30 int safe_mem_is_zero(const void *mem, size_t sz);
   31 
   32 /** A type for a map from DIGEST256_LEN-byte blobs to void*, such that
   33  * data lookups take an amount of time proportional only to the size
   34  * of the map, and not to the position or presence of the item in the map.
   35  *
   36  * Not efficient for large maps! */
   37 typedef struct di_digest256_map_t di_digest256_map_t;
   38 typedef void (*dimap_free_fn)(void *);
   39 
   40 void dimap_free_(di_digest256_map_t *map, dimap_free_fn free_fn);
   41 #define dimap_free(map, free_fn)                \
   42   do {                                          \
   43     dimap_free_((map), (free_fn));              \
   44     (map) = NULL;                               \
   45   } while (0)
   46 void dimap_add_entry(di_digest256_map_t **map,
   47                      const uint8_t *key, void *val);
   48 void *dimap_search(const di_digest256_map_t *map, const uint8_t *key,
   49                    void *dflt_val);
   50 int select_array_member_cumulative_timei(const uint64_t *entries,
   51                                          int n_entries,
   52                                          uint64_t total, uint64_t rand_val);
   53 
   54 #endif /* !defined(TOR_DI_OPS_H) */
   55