cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

zutil.h (2793B)


      1/* zutil.h -- internal interface and configuration of the compression library
      2 * Copyright (C) 1995-1998 Jean-loup Gailly.
      3 * For conditions of distribution and use, see copyright notice in zlib.h
      4 */
      5
      6/* WARNING: this file should *not* be used by applications. It is
      7   part of the implementation of the compression library and is
      8   subject to change. Applications should only use zlib.h.
      9 */
     10
     11/* @(#) $Id: zutil.h,v 1.1 2000/01/01 03:32:23 davem Exp $ */
     12
     13#ifndef _Z_UTIL_H
     14#define _Z_UTIL_H
     15
     16#include <linux/zlib.h>
     17#include <linux/string.h>
     18#include <linux/kernel.h>
     19
     20typedef unsigned char  uch;
     21typedef unsigned short ush;
     22typedef unsigned long  ulg;
     23
     24        /* common constants */
     25
     26#define STORED_BLOCK 0
     27#define STATIC_TREES 1
     28#define DYN_TREES    2
     29/* The three kinds of block type */
     30
     31#define MIN_MATCH  3
     32#define MAX_MATCH  258
     33/* The minimum and maximum match lengths */
     34
     35#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
     36
     37        /* target dependencies */
     38
     39        /* Common defaults */
     40
     41#ifndef OS_CODE
     42#  define OS_CODE  0x03  /* assume Unix */
     43#endif
     44
     45         /* functions */
     46
     47typedef uLong (*check_func) (uLong check, const Byte *buf,
     48				       uInt len);
     49
     50
     51                        /* checksum functions */
     52
     53#define BASE 65521L /* largest prime smaller than 65536 */
     54#define NMAX 5552
     55/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
     56
     57#define DO1(buf,i)  {s1 += buf[i]; s2 += s1;}
     58#define DO2(buf,i)  DO1(buf,i); DO1(buf,i+1);
     59#define DO4(buf,i)  DO2(buf,i); DO2(buf,i+2);
     60#define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4);
     61#define DO16(buf)   DO8(buf,0); DO8(buf,8);
     62
     63/* ========================================================================= */
     64/*
     65     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
     66   return the updated checksum. If buf is NULL, this function returns
     67   the required initial value for the checksum.
     68   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
     69   much faster. Usage example:
     70
     71     uLong adler = zlib_adler32(0L, NULL, 0);
     72
     73     while (read_buffer(buffer, length) != EOF) {
     74       adler = zlib_adler32(adler, buffer, length);
     75     }
     76     if (adler != original_adler) error();
     77*/
     78static inline uLong zlib_adler32(uLong adler,
     79				 const Byte *buf,
     80				 uInt len)
     81{
     82    unsigned long s1 = adler & 0xffff;
     83    unsigned long s2 = (adler >> 16) & 0xffff;
     84    int k;
     85
     86    if (buf == NULL) return 1L;
     87
     88    while (len > 0) {
     89        k = len < NMAX ? len : NMAX;
     90        len -= k;
     91        while (k >= 16) {
     92            DO16(buf);
     93	    buf += 16;
     94            k -= 16;
     95        }
     96        if (k != 0) do {
     97            s1 += *buf++;
     98	    s2 += s1;
     99        } while (--k);
    100        s1 %= BASE;
    101        s2 %= BASE;
    102    }
    103    return (s2 << 16) | s1;
    104}
    105
    106#endif /* _Z_UTIL_H */