Skip to content
Snippets Groups Projects
Select Git revision
  • a1eae7800eb73b76fb604d5510cbc42a5265be86
  • master default protected
  • android-msm-bullhead-3.10-nougat_kgdb_less_changes
  • android-msm-bullhead-3.10-nougat_kgdb
  • android-msm-bullhead-3.10-nougat_klist
  • android-4.4
  • android-msm-vega-4.4-oreo-daydream
  • android-msm-wahoo-4.4-p-preview-5
  • android-msm-wahoo-4.4-pie
  • android-msm-marlin-3.18-p-preview-5
  • android-msm-marlin-3.18-pie
  • android-msm-wahoo-2018.07-oreo-m2
  • android-msm-wahoo-2018.07-oreo-m4
  • android-msm-wahoo-4.4-p-preview-4
  • android-msm-bullhead-3.10-oreo-m6
  • android-msm-angler-3.10-oreo-m6
  • android-msm-marlin-3.18-p-preview-4
  • android-msm-stargazer-3.18-oreo-wear-dr
  • android-msm-catshark-3.18-oreo-wear-dr
  • android-msm-wahoo-4.4-oreo-m2
  • android-msm-wahoo-4.4-oreo-m4
  • android-daydreamos-8.0.0_r0.5
  • android-8.1.0_r0.92
  • android-8.1.0_r0.91
  • android-daydreamos-8.0.0_r0.4
  • android-p-preview-5_r0.2
  • android-p-preview-5_r0.1
  • android-9.0.0_r0.5
  • android-9.0.0_r0.4
  • android-9.0.0_r0.2
  • android-9.0.0_r0.1
  • android-8.1.0_r0.81
  • android-8.1.0_r0.80
  • android-8.1.0_r0.78
  • android-8.1.0_r0.76
  • android-8.1.0_r0.75
  • android-8.1.0_r0.72
  • android-8.1.0_r0.70
  • android-p-preview-4_r0.2
  • android-p-preview-4_r0.1
  • android-wear-8.0.0_r0.30
41 results

Kconfig.debug

Blame
  • inflate.c 38.62 KiB
    #define DEBG(x)
    #define DEBG1(x)
    /* inflate.c -- Not copyrighted 1992 by Mark Adler
       version c10p1, 10 January 1993 */
    
    /* 
     * Adapted for booting Linux by Hannu Savolainen 1993
     * based on gzip-1.0.3 
     *
     * Nicolas Pitre <nico@fluxnic.net>, 1999/04/14 :
     *   Little mods for all variable to reside either into rodata or bss segments
     *   by marking constant variables with 'const' and initializing all the others
     *   at run-time only.  This allows for the kernel uncompressor to run
     *   directly from Flash or ROM memory on embedded systems.
     */
    
    /*
       Inflate deflated (PKZIP's method 8 compressed) data.  The compression
       method searches for as much of the current string of bytes (up to a
       length of 258) in the previous 32 K bytes.  If it doesn't find any
       matches (of at least length 3), it codes the next byte.  Otherwise, it
       codes the length of the matched string and its distance backwards from
       the current position.  There is a single Huffman code that codes both
       single bytes (called "literals") and match lengths.  A second Huffman
       code codes the distance information, which follows a length code.  Each
       length or distance code actually represents a base value and a number
       of "extra" (sometimes zero) bits to get to add to the base value.  At
       the end of each deflated block is a special end-of-block (EOB) literal/
       length code.  The decoding process is basically: get a literal/length
       code; if EOB then done; if a literal, emit the decoded byte; if a
       length then get the distance and emit the referred-to bytes from the
       sliding window of previously emitted data.
    
       There are (currently) three kinds of inflate blocks: stored, fixed, and
       dynamic.  The compressor deals with some chunk of data at a time, and
       decides which method to use on a chunk-by-chunk basis.  A chunk might
       typically be 32 K or 64 K.  If the chunk is incompressible, then the
       "stored" method is used.  In this case, the bytes are simply stored as
       is, eight bits per byte, with none of the above coding.  The bytes are
       preceded by a count, since there is no longer an EOB code.
    
       If the data is compressible, then either the fixed or dynamic methods
       are used.  In the dynamic method, the compressed data is preceded by
       an encoding of the literal/length and distance Huffman codes that are
       to be used to decode this block.  The representation is itself Huffman
       coded, and so is preceded by a description of that code.  These code
       descriptions take up a little space, and so for small blocks, there is
       a predefined set of codes, called the fixed codes.  The fixed method is
       used if the block codes up smaller that way (usually for quite small
       chunks), otherwise the dynamic method is used.  In the latter case, the
       codes are customized to the probabilities in the current block, and so
       can code it much better than the pre-determined fixed codes.
     
       The Huffman codes themselves are decoded using a multi-level table
       lookup, in order to maximize the speed of decoding plus the speed of
       building the decoding tables.  See the comments below that precede the
       lbits and dbits tuning parameters.
     */
    
    
    /*
       Notes beyond the 1.93a appnote.txt:
    
       1. Distance pointers never point before the beginning of the output
          stream.
       2. Distance pointers can point back across blocks, up to 32k away.
       3. There is an implied maximum of 7 bits for the bit length table and
          15 bits for the actual data.
       4. If only one code exists, then it is encoded using one bit.  (Zero
          would be more efficient, but perhaps a little confusing.)  If two