HOPS
HOPS class reference
Macros | Functions
compress.c File Reference
#include <string.h>
#include <stdio.h>
#include "mk4_typedefs.h"
#include "mk4_dfio.h"

Macros

#define ALIGNMENT_FUDGE   (U(16))
 
#define ANY_HASH_INDEX   (0)
 
#define COMPRESS_ACTION_COMPRESS   1
 
#define COMPRESS_ACTION_DECOMPRESS   2
 
#define COMPRESS_ACTION_IDENTITY   0
 
#define DEPTH_MASK   (HASH_TABLE_DEPTH-1)
 
#define FLAG_BYTES   4
 
#define FLAG_COMPRESS   0 /* Signals that output was result of compression. */
 
#define FLAG_COPY   1 /* Signals that output was simply copied over. */
 
#define HASH(PTR)
 
#define HASH_MASK   (PARTITION_LENGTH-1)
 
#define HASH_TABLE_DEPTH   (1<<HASH_TABLE_DEPTH_BITS )
 
#define HASH_TABLE_DEPTH_BITS   (3) /* Must be in range [0,12]. */
 
#define HASH_TABLE_LENGTH   (4096)
 
#define MAX_CMP_GROUP   (2+16*2)
 
#define MAX_RAW_GROUP   (16*MAX_RAW_ITEM)
 
#define MAX_RAW_ITEM   (18)
 
#define MEM_REQ   ( U(4096)*(SIZE_P_BYTE) + ALIGNMENT_FUDGE )
 
#define PARTITION_LENGTH   (1<<PARTITION_LENGTH_BITS)
 
#define PARTITION_LENGTH_BITS   (12-HASH_TABLE_DEPTH_BITS)
 
#define PS   *p++!=*s++
 
#define SIZE_P_BYTE   (U(sizeof(U8 *)))
 
#define START_STRING_18   ((U8 *) "123456789012345678")
 
#define TOPWORD   0xFFFF0000
 
#define U(X)   ((U32) X)
 
#define U32_ALIGN_UP(X)   (X)
 
#define UCARD   unsigned
 
#define UPDATE_I(I_BASE, NEWPTR)   {hash[(I_BASE)+cycle++]=(NEWPTR); cycle&=DEPTH_MASK;}
 
#define UPDATE_P(P_BASE, NEWPTR)   {(P_BASE)[cycle++]=(NEWPTR); cycle&=DEPTH_MASK;}
 
#define ZH   *p_h++=START_STRING_18
 
#define ZJ   *p_h++=START_STRING_18
 

Functions

void compress (U16 action, U8 *wrk_mem, U8 *src_adr, U32 src_len, U8 *dst_adr, U32 *p_dst_len)
 
void compress_compress (U8 *, U8 *, U32, U8 *, U32 *)
 
void compress_decompress (U8 *, U8 *, U32, U8 *, U32 *)
 

Macro Definition Documentation

◆ ALIGNMENT_FUDGE

#define ALIGNMENT_FUDGE   (U(16))

◆ ANY_HASH_INDEX

#define ANY_HASH_INDEX   (0)

◆ COMPRESS_ACTION_COMPRESS

#define COMPRESS_ACTION_COMPRESS   1

◆ COMPRESS_ACTION_DECOMPRESS

#define COMPRESS_ACTION_DECOMPRESS   2

◆ COMPRESS_ACTION_IDENTITY

#define COMPRESS_ACTION_IDENTITY   0

◆ DEPTH_MASK

#define DEPTH_MASK   (HASH_TABLE_DEPTH-1)

◆ FLAG_BYTES

#define FLAG_BYTES   4

◆ FLAG_COMPRESS

#define FLAG_COMPRESS   0 /* Signals that output was result of compression. */

◆ FLAG_COPY

#define FLAG_COPY   1 /* Signals that output was simply copied over. */

◆ HASH

#define HASH (   PTR)
Value:
( \
(((40543*(((*(PTR))<<8)^((*((PTR)+1))<<4)^(*((PTR)+2))))>>4) & HASH_MASK) \
)
#define HASH_MASK
Definition: compress.c:120
#define HASH_TABLE_DEPTH_BITS
Definition: compress.c:115

◆ HASH_MASK

#define HASH_MASK   (PARTITION_LENGTH-1)

◆ HASH_TABLE_DEPTH

#define HASH_TABLE_DEPTH   (1<<HASH_TABLE_DEPTH_BITS )

◆ HASH_TABLE_DEPTH_BITS

#define HASH_TABLE_DEPTH_BITS   (3) /* Must be in range [0,12]. */

◆ HASH_TABLE_LENGTH

#define HASH_TABLE_LENGTH   (4096)

◆ MAX_CMP_GROUP

#define MAX_CMP_GROUP   (2+16*2)

◆ MAX_RAW_GROUP

#define MAX_RAW_GROUP   (16*MAX_RAW_ITEM)

◆ MAX_RAW_ITEM

#define MAX_RAW_ITEM   (18)

◆ MEM_REQ

#define MEM_REQ   ( U(4096)*(SIZE_P_BYTE) + ALIGNMENT_FUDGE )

◆ PARTITION_LENGTH

#define PARTITION_LENGTH   (1<<PARTITION_LENGTH_BITS)

◆ PARTITION_LENGTH_BITS

#define PARTITION_LENGTH_BITS   (12-HASH_TABLE_DEPTH_BITS)

◆ PS

#define PS   *p++!=*s++

◆ SIZE_P_BYTE

#define SIZE_P_BYTE   (U(sizeof(U8 *)))

◆ START_STRING_18

#define START_STRING_18   ((U8 *) "123456789012345678")

◆ TOPWORD

#define TOPWORD   0xFFFF0000

◆ U

#define U (   X)    ((U32) X)

◆ U32_ALIGN_UP

#define U32_ALIGN_UP (   X)    (X)

◆ UCARD

#define UCARD   unsigned

◆ UPDATE_I

#define UPDATE_I (   I_BASE,
  NEWPTR 
)    {hash[(I_BASE)+cycle++]=(NEWPTR); cycle&=DEPTH_MASK;}

◆ UPDATE_P

#define UPDATE_P (   P_BASE,
  NEWPTR 
)    {(P_BASE)[cycle++]=(NEWPTR); cycle&=DEPTH_MASK;}

◆ ZH

#define ZH   *p_h++=START_STRING_18

◆ ZJ

#define ZJ   *p_h++=START_STRING_18

Function Documentation

◆ compress()

void compress ( U16  action,
U8 wrk_mem,
U8 src_adr,
U32  src_len,
U8 dst_adr,
U32 p_dst_len 
)

◆ compress_compress()

void compress_compress ( U8 p_wrk_mem,
U8 p_src_first,
U32  src_len,
U8 p_dst_first,
U32 p_dst_len 
)

◆ compress_decompress()

void compress_decompress ( U8 p_wrk_mem,
U8 p_src_first,
U32  src_len,
U8 p_dst_first,
U32 p_dst_len 
)