uboot/include/gzip.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * (C) Copyright 2000-2009
   4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
   5 */
   6
   7#ifndef __GZIP_H
   8#define __GZIP_H
   9
  10/**
  11 * gzip_parse_header() - Parse a header from a gzip file
  12 *
  13 * This returns the length of the header.
  14 *
  15 * @src: Pointer to gzip file
  16 * @len: Length of data
  17 * @return length of header in bytes, or -1 if not enough data
  18 */
  19int gzip_parse_header(const unsigned char *src, unsigned long len);
  20
  21/**
  22 * gunzip() - Decompress gzipped data
  23 *
  24 * @dst: Destination for uncompressed data
  25 * @dstlen: Size of destination buffer
  26 * @src: Source data to decompress
  27 * @lenp: Returns length of uncompressed data
  28 * @return 0 if OK, -1 on error
  29 */
  30int gunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp);
  31
  32/**
  33 * zunzip() - Uncompress blocks compressed with zlib without headers
  34 *
  35 * @dst: Destination for uncompressed data
  36 * @dstlen: Size of destination buffer
  37 * @src: Source data to decompress
  38 * @lenp: On entry, length data at @src. On exit, number of bytes used from @src
  39 * @stoponerr: 0 to continue when a decode error is found, 1 to stop
  40 * @offset: start offset within the src buffer
  41 * @return 0 if OK, -1 on error
  42 */
  43int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp,
  44           int stoponerr, int offset);
  45
  46/**
  47 * gzwrite progress indicators: defined weak to allow board-specific
  48 * overrides:
  49 *
  50 *      gzwrite_progress_init called on startup
  51 *      gzwrite_progress called during decompress/write loop
  52 *      gzwrite_progress_finish called at end of loop to
  53 *              indicate success (retcode=0) or failure
  54 */
  55void gzwrite_progress_init(u64 expected_size);
  56
  57void gzwrite_progress(int iteration, u64 bytes_written, u64 total_bytes);
  58
  59void gzwrite_progress_finish(int retcode, u64 totalwritten, u64 totalsize,
  60                             u32 expected_crc, u32 calculated_crc);
  61
  62/**
  63 * gzwrite() - decompress and write gzipped image from memory to block device
  64 *
  65 * @src:        compressed image address
  66 * @len:        compressed image length in bytes
  67 * @dev:        block device descriptor
  68 * @szwritebuf: bytes per write (pad to erase size)
  69 * @startoffs:  offset in bytes of first write
  70 * @szexpected: expected uncompressed length, may be zero to use gzip trailer
  71 *              for files under 4GiB
  72 * @return 0 if OK, -1 on error
  73 */
  74int gzwrite(unsigned char *src, int len, struct blk_desc *dev, ulong szwritebuf,
  75            u64 startoffs, u64 szexpected);
  76
  77/**
  78 * gzip()- Compress data into a buffer using the gzip algorithm
  79 *
  80 * @dst: Destination buffer for compressed data
  81 * @lenp: On entry, space available in destination buffer (in bytes). On exit,
  82 *      number of bytes used in the buffer
  83 * @src: Source data to compress
  84 * @srclen: Size of source data
  85 * @return 0 if OK, -1 on error
  86 */
  87int gzip(void *dst, unsigned long *lenp, unsigned char *src, ulong srclen);
  88
  89/**
  90 * zzip() - Compress blocks with zlib
  91 *
  92 * @dst: Destination for compressed data
  93 * @lenp: On entry, length data at @dst. On exit, number of bytes written to
  94 *      @dst
  95 * @src: Source data to compress
  96 * @srclen: Size of source data
  97 * @stoponerr: 0 to continue when a decode error is found, 1 to stop
  98 * @func: Some sort of function that is called to do something. !ADD DOCS HERE!
  99 */
 100int zzip(void *dst, ulong *lenp, unsigned char *src, ulong srclen,
 101         int stoponerr, int (*func)(ulong, ulong));
 102
 103#endif
 104