Page Menu
Home
Phabricator (Chris)
Search
Configure Global Search
Log In
Files
F622552
LzFindMt.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
LzFindMt.h
View Options
/* LzFindMt.h -- multithreaded Match finder for LZ algorithms
2009-02-07 : Igor Pavlov : Public domain */
#ifndef __LZ_FIND_MT_H
#define __LZ_FIND_MT_H
#include
"LzFind.h"
#include
"Threads.h"
#ifdef __cplusplus
extern
"C"
{
#endif
#define kMtHashBlockSize (1 << 13)
#define kMtHashNumBlocks (1 << 3)
#define kMtHashNumBlocksMask (kMtHashNumBlocks - 1)
#define kMtBtBlockSize (1 << 14)
#define kMtBtNumBlocks (1 << 6)
#define kMtBtNumBlocksMask (kMtBtNumBlocks - 1)
typedef
struct
_CMtSync
{
LzmaBool
wasCreated
;
LzmaBool
needStart
;
LzmaBool
exit
;
LzmaBool
stopWriting
;
CThread
thread
;
CAutoResetEvent
canStart
;
CAutoResetEvent
wasStarted
;
CAutoResetEvent
wasStopped
;
CSemaphore
freeSemaphore
;
CSemaphore
filledSemaphore
;
LzmaBool
csWasInitialized
;
LzmaBool
csWasEntered
;
CCriticalSection
cs
;
UInt32
numProcessedBlocks
;
}
CMtSync
;
typedef
UInt32
*
(
*
Mf_Mix_Matches
)(
void
*
p
,
UInt32
matchMinPos
,
UInt32
*
distances
);
/* kMtCacheLineDummy must be >= size_of_CPU_cache_line */
#define kMtCacheLineDummy 128
typedef
void
(
*
Mf_GetHeads
)(
const
Byte
*
buffer
,
UInt32
pos
,
UInt32
*
hash
,
UInt32
hashMask
,
UInt32
*
heads
,
UInt32
numHeads
,
const
UInt32
*
crc
);
typedef
struct
_CMatchFinderMt
{
/* LZ */
const
Byte
*
pointerToCurPos
;
UInt32
*
btBuf
;
UInt32
btBufPos
;
UInt32
btBufPosLimit
;
UInt32
lzPos
;
UInt32
btNumAvailBytes
;
UInt32
*
hash
;
UInt32
fixedHashSize
;
UInt32
historySize
;
const
UInt32
*
crc
;
Mf_Mix_Matches
MixMatchesFunc
;
/* LZ + BT */
CMtSync
btSync
;
Byte
btDummy
[
kMtCacheLineDummy
];
/* BT */
UInt32
*
hashBuf
;
UInt32
hashBufPos
;
UInt32
hashBufPosLimit
;
UInt32
hashNumAvail
;
CLzRef
*
son
;
UInt32
matchMaxLen
;
UInt32
numHashBytes
;
UInt32
pos
;
Byte
*
buffer
;
UInt32
cyclicBufferPos
;
UInt32
cyclicBufferSize
;
/* it must be historySize + 1 */
UInt32
cutValue
;
/* BT + Hash */
CMtSync
hashSync
;
/* Byte hashDummy[kMtCacheLineDummy]; */
/* Hash */
Mf_GetHeads
GetHeadsFunc
;
CMatchFinder
*
MatchFinder
;
}
CMatchFinderMt
;
void
MatchFinderMt_Construct
(
CMatchFinderMt
*
p
);
void
MatchFinderMt_Destruct
(
CMatchFinderMt
*
p
,
ISzAlloc
*
alloc
);
SRes
MatchFinderMt_Create
(
CMatchFinderMt
*
p
,
UInt32
historySize
,
UInt32
keepAddBufferBefore
,
UInt32
matchMaxLen
,
UInt32
keepAddBufferAfter
,
ISzAlloc
*
alloc
);
void
MatchFinderMt_CreateVTable
(
CMatchFinderMt
*
p
,
IMatchFinder
*
vTable
);
void
MatchFinderMt_ReleaseStream
(
CMatchFinderMt
*
p
);
#ifdef __cplusplus
}
#endif
#endif
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Sat, Nov 14, 8:18 PM (12 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
126575
Default Alt Text
LzFindMt.h (2 KB)
Attached To
Mode
R75 R-Tech1
Attached
Detach File
Event Timeline