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/zstd/lib/common/zstd_trace.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) Facebook, Inc.
    3  * All rights reserved.
    4  *
    5  * This source code is licensed under both the BSD-style license (found in the
    6  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
    7  * in the COPYING file in the root directory of this source tree).
    8  * You may select, at your option, one of the above-listed licenses.
    9  */
   10 
   11 #ifndef ZSTD_TRACE_H
   12 #define ZSTD_TRACE_H
   13 
   14 #if defined (__cplusplus)
   15 extern "C" {
   16 #endif
   17 
   18 #include <stddef.h>
   19 
   20 /* weak symbol support
   21  * For now, enable conservatively:
   22  * - Only GNUC
   23  * - Only ELF
   24  * - Only x86-64 and i386
   25  * Also, explicitly disable on platforms known not to work so they aren't
   26  * forgotten in the future.
   27  */
   28 #if !defined(ZSTD_HAVE_WEAK_SYMBOLS) && \
   29     defined(__GNUC__) && defined(__ELF__) && \
   30     (defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86)) && \
   31     !defined(__APPLE__) && !defined(_WIN32) && !defined(__MINGW32__) && \
   32     !defined(__CYGWIN__) && !defined(_AIX)
   33 #  define ZSTD_HAVE_WEAK_SYMBOLS 1
   34 #else
   35 #  define ZSTD_HAVE_WEAK_SYMBOLS 0
   36 #endif
   37 #if ZSTD_HAVE_WEAK_SYMBOLS
   38 #  define ZSTD_WEAK_ATTR __attribute__((__weak__))
   39 #else
   40 #  define ZSTD_WEAK_ATTR
   41 #endif
   42 
   43 /* Only enable tracing when weak symbols are available. */
   44 #ifndef ZSTD_TRACE
   45 #  define ZSTD_TRACE ZSTD_HAVE_WEAK_SYMBOLS
   46 #endif
   47 
   48 #if ZSTD_TRACE
   49 
   50 struct ZSTD_CCtx_s;
   51 struct ZSTD_DCtx_s;
   52 struct ZSTD_CCtx_params_s;
   53 
   54 typedef struct {
   55     /**
   56      * ZSTD_VERSION_NUMBER
   57      *
   58      * This is guaranteed to be the first member of ZSTD_trace.
   59      * Otherwise, this struct is not stable between versions. If
   60      * the version number does not match your expectation, you
   61      * should not interpret the rest of the struct.
   62      */
   63     unsigned version;
   64     /**
   65      * Non-zero if streaming (de)compression is used.
   66      */
   67     unsigned streaming;
   68     /**
   69      * The dictionary ID.
   70      */
   71     unsigned dictionaryID;
   72     /**
   73      * Is the dictionary cold?
   74      * Only set on decompression.
   75      */
   76     unsigned dictionaryIsCold;
   77     /**
   78      * The dictionary size or zero if no dictionary.
   79      */
   80     size_t dictionarySize;
   81     /**
   82      * The uncompressed size of the data.
   83      */
   84     size_t uncompressedSize;
   85     /**
   86      * The compressed size of the data.
   87      */
   88     size_t compressedSize;
   89     /**
   90      * The fully resolved CCtx parameters (NULL on decompression).
   91      */
   92     struct ZSTD_CCtx_params_s const* params;
   93     /**
   94      * The ZSTD_CCtx pointer (NULL on decompression).
   95      */
   96     struct ZSTD_CCtx_s const* cctx;
   97     /**
   98      * The ZSTD_DCtx pointer (NULL on compression).
   99      */
  100     struct ZSTD_DCtx_s const* dctx;
  101 } ZSTD_Trace;
  102 
  103 /**
  104  * A tracing context. It must be 0 when tracing is disabled.
  105  * Otherwise, any non-zero value returned by a tracing begin()
  106  * function is presented to any subsequent calls to end().
  107  *
  108  * Any non-zero value is treated as tracing is enabled and not
  109  * interpreted by the library.
  110  *
  111  * Two possible uses are:
  112  * * A timestamp for when the begin() function was called.
  113  * * A unique key identifying the (de)compression, like the
  114  *   address of the [dc]ctx pointer if you need to track
  115  *   more information than just a timestamp.
  116  */
  117 typedef unsigned long long ZSTD_TraceCtx;
  118 
  119 /**
  120  * Trace the beginning of a compression call.
  121  * @param cctx The dctx pointer for the compression.
  122  *             It can be used as a key to map begin() to end().
  123  * @returns Non-zero if tracing is enabled. The return value is
  124  *          passed to ZSTD_trace_compress_end().
  125  */
  126 ZSTD_WEAK_ATTR ZSTD_TraceCtx ZSTD_trace_compress_begin(
  127     struct ZSTD_CCtx_s const* cctx);
  128 
  129 /**
  130  * Trace the end of a compression call.
  131  * @param ctx The return value of ZSTD_trace_compress_begin().
  132  * @param trace The zstd tracing info.
  133  */
  134 ZSTD_WEAK_ATTR void ZSTD_trace_compress_end(
  135     ZSTD_TraceCtx ctx,
  136     ZSTD_Trace const* trace);
  137 
  138 /**
  139  * Trace the beginning of a decompression call.
  140  * @param dctx The dctx pointer for the decompression.
  141  *             It can be used as a key to map begin() to end().
  142  * @returns Non-zero if tracing is enabled. The return value is
  143  *          passed to ZSTD_trace_compress_end().
  144  */
  145 ZSTD_WEAK_ATTR ZSTD_TraceCtx ZSTD_trace_decompress_begin(
  146     struct ZSTD_DCtx_s const* dctx);
  147 
  148 /**
  149  * Trace the end of a decompression call.
  150  * @param ctx The return value of ZSTD_trace_decompress_begin().
  151  * @param trace The zstd tracing info.
  152  */
  153 ZSTD_WEAK_ATTR void ZSTD_trace_decompress_end(
  154     ZSTD_TraceCtx ctx,
  155     ZSTD_Trace const* trace);
  156 
  157 #endif /* ZSTD_TRACE */
  158 
  159 #if defined (__cplusplus)
  160 }
  161 #endif
  162 
  163 #endif /* ZSTD_TRACE_H */

Cache object: ecf5f254e5a935dc1865b9107014d302


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