Skip to main content

Crate lzma_sdk_sys

Crate lzma_sdk_sys 

Source
Expand description

§lzma-sdk-sys

Raw FFI bindings for the LZMA encoder/decoder components of LZMA-SDK (7-zip).

This crate provides low-level access to LZMA compression functionality, with support for the new optimized assembly routines on supported platforms.

§Motivation

The implementation of LZMA in LZMA-SDK (7z) generally tends to be slightly better than the one in xz-utils, at equivalent settings.

// Meshes from Interesting NPCs SE - Loose-29194-4-3-2-157834454

Tool       Size            Ratio     Flags
----------------------------------------------------
lzma-sdk   42.24 MiB       27.71%    7z a -txz -mx=9
xz         42.73 MiB       28.03%    xz -k -e -z -9

In all, compression speed, size and decompression speed.

However, for library usage, historically xz-utils has been much more common; be it a more familiar API, ease of integration, or any other possible reason.

In recent years however, Igor Pavlov started adding hand-crafted assembly routines for LZMA (de)compression in 7-Zip. These, notably increase decompression speed, by as much as 30%, on supported platforms.

However LZMA-SDK with these optimizations may be non-trivial to build. This Rust crate provides bindings for the LZMA Encoding/Decoding routines of LZMA-SDK, with the possibility of using the hand-optimized assembly routines.

§Usage

Add this to your Cargo.toml:

[dependencies]
lzma-sdk-sys = "0.1.0"

Basic example of compression and decompression:

use lzma_sdk_sys::*;
use std::ptr;

fn main() -> Result<(), &'static str> {
    // Sample data to compress
    let input = b"Hello LZMA compression!";
    
    // Create an allocator for memory management
    let alloc = Allocator::default();
    
    // Compression
    let (compressed, props) = unsafe {
        // Initialize compression properties
        let mut props = [0u8; LZMA_PROPS_SIZE as usize];
        let mut props_size = LZMA_PROPS_SIZE as SizeT;
        
        // Prepare output buffer
        let mut compressed = vec![0u8; input.len() * 2];
        let mut compressed_size = compressed.len() as SizeT;
        
        // Create and configure encoder
        let enc = LzmaEnc_Create(alloc.as_ref() as *const _);
        if enc.is_null() {
            return Err("Failed to create encoder");
        }
        
        let mut enc_props = CLzmaEncProps::default();
        LzmaEncProps_Init(&mut enc_props);
        
        // You can customize compression settings here, for example:
        // enc_props.level = 9; // Maximum compression
        // enc_props.dictSize = 1 << 20; // 1MB dictionary
        
        if LzmaEnc_SetProps(enc, &enc_props) != SZ_OK as i32 {
            return Err("Failed to set encoder properties");
        }

        // Perform compression
        let res = LzmaEncode(
            compressed.as_mut_ptr() as *mut Byte,
            &mut compressed_size,
            input.as_ptr() as *const Byte,
            input.len() as SizeT,
            &enc_props,
            props.as_mut_ptr() as *mut Byte,
            &mut props_size,
            0,
            ptr::null_mut(),
            alloc.as_ref(),
            alloc.as_ref(),
        );
        
        LzmaEnc_Destroy(enc, alloc.as_ref(), alloc.as_ref());
        
        if res != SZ_OK as i32 {
            return Err("Compression failed");
        }
        
        // Trim compressed buffer to actual size
        compressed.truncate(compressed_size as usize);
        (compressed, props)
    };
    
    // Decompression
    let decompressed = unsafe {
        let mut decompressed = vec![0u8; input.len()];
        let mut decompressed_size = decompressed.len() as SizeT;
        let mut source_len = compressed.len() as SizeT;
        let mut status = ELzmaStatus::LZMA_STATUS_NOT_SPECIFIED;
        
        let res = LzmaDecode(
            decompressed.as_mut_ptr() as *mut Byte,
            &mut decompressed_size,
            compressed.as_ptr() as *const Byte,
            &mut source_len,
            props.as_ptr() as *const Byte,
            LZMA_PROPS_SIZE as u32,
            ELzmaFinishMode::LZMA_FINISH_END,
            &mut status,
            alloc.as_ref(),
        );
        
        if res != SZ_OK as i32 {
            return Err("Decompression failed");
        }
        
        decompressed.truncate(decompressed_size as usize);
        decompressed
    };
    
    // Verify the round-trip
    assert_eq!(decompressed, input);
    println!("Successfully compressed and decompressed: {:?}", 
             std::str::from_utf8(&decompressed).unwrap());
    
    Ok(())
}

§Features

The crate provides several configuration options through Cargo features:

§Core Features

  • std (default): Currently a no-op.
  • enable-asm (default): Use hand-optimized assembly routines for improved performance (enabled by default)
  • generate-bindings: Generates the bindings as part of build. You shouldn’t usually need to run this. (Requires clang)
  • prefer-clang: Uses clang as the compiler for the 7z library if available on $PATH

§Threading Options

  • Default: Multi-threaded operation
  • st: Single-threaded mode

§Additional Options

  • debug-build-logs: Enable detailed build configuration logging
  • debug-build-script: Enable debugging of the build script (via CodeLLDB on Linux/macOS)

§Future Features

These features of the crate are set up correctly for future LZMA-SDK bindings, but are not currently used by any of the code we create bindings for.

§Core Features

  • external-codecs (default): Support for external codecs in 7z archive format (enabled by default)

§Additional Options

  • large-pages: Enable large pages support for potential performance improvements
  • long-paths: Support for long file paths

§Performance

When using optimized assembly routines (enable-asm feature), significant performance improvements are achieved.

Here are benchmark results using a Ryzen 5900X, compressing and decompressing the COPYING file from the 7z distribution:

OperationSize (bytes)TimeThroughput
lzma/decompress/2653026530 (0.03 MB)268.29 µs94.304 MiB/s
lzma/decompress/26530 (x64 ASM Optimization)26530 (0.03 MB)196.77 µs128.58 MiB/s

Tested on a Ryzen 5900X

§Platform Support

The optimized assembly routines have been tested on hardware:

  • i686 Linux (Clang)
  • x86_64 Linux (Clang)
  • i686 Linux (GCC)
  • x86_64 Linux (GCC)
  • i686 Windows (MSVC)
  • x86_64 Windows (MSVC)
  • i686 Windows (GNU)
  • x86_64 Windows (GNU)

And on emulator or hypervisor:

  • aarch64 Linux (Clang)
  • aarch64 Linux (GCC)
  • aarch64 macOS

The following fail to compile with the optimized assembly routines and are disabled in build.rs:

  • x86_64 macOS (hard to diagnose, as I don’t have the hardware.)

And a few more platforms are also tested in CI. These however have not been hand checked; all I know is ‘they compile, and pass a basic sanity check’.

§Building

Build should hopefully ‘just work’ with whatever toolchain you have installed. Bindings are pre-generated, and the assembly routines are pre-compiled on the relevant platforms.

If you have clang installed and available in your $PATH, the crate will attempt to build the 7z library code with it if the prefer-clang feature is enabled.

No additional dependencies are required. Normally 7z requires you to bring your own assembler, but this crate provides precompiled assembly code, to make it easy to use just like any other Rust crate.

§Current Status

This crate currently provides bindings sufficient for LZMA Encoding/Decoding functionality.

While most of the groundwork has been laid for supporting remaining 7z features, a small amount of extra work is needed in terms of writing sanity tests around functionality using optimized assembly routines.

So for now, this crate only outputs bindings for functionality I personally am using.

§Contributing

Contributions are welcome! Please feel free to submit a Pull Request. If you’re adding new APIs, please add some basic sanity tests first to verify they work.

If you’re updating the version of LZMA-SDK, please also update the precompiled assembly code.

§Credits & License

This crate is maintained by Sewer56 for usage in sewer56-archives-nx. Licensed under the MIT License.

LZMA-SDK was written by Igor Pavlov. The LZMA encoder/decoder exposed via their bindings are public domain (see file headers).

For any other future code exposed, please see 7zip’s own licensing terms. Chances are it’s LGPL-V3.

Structs§

Allocator
CCriticalSection
CEvent
CLookToRead2
CLzma2Dec
CLzma2Enc
CLzma2EncProps
CLzmaDec
CLzmaEnc
CLzmaEncProps
CLzmaProps
CMatchFinder
CMatchFinderMt_
CMtSync
CSecToLook
CSecToRead
CSemaphore
CThread
CThreadNextGroup
IByteIn_
IByteOut_
ICompressProgress_
ILookInStream_
IMatchFinder2
ISeekInStream_
ISeqInStream_
ISeqOutStream_
ISzAlloc
__atomic_wide_counter__bindgen_ty_1
__cancel_jmp_buf_tag
__fsid_t
__jmp_buf_tag
__locale_data
__locale_struct
__once_flag
__pthread_cleanup_frame
__pthread_cond_s
__pthread_internal_list
__pthread_internal_slist
__pthread_mutex_s
__pthread_rwlock_arch_t
__pthread_unwind_buf_t
__sigset_t
_pthread_cleanup_buffer
cpu_set_t
itimerspec
max_align_t
sched_param
sigevent
timespec
tm

Enums§

ELzma2ParseStatus
ELzmaFinishMode
ELzmaStatus
ESzSeek
_bindgen_ty_1
_bindgen_ty_2
_bindgen_ty_3
_bindgen_ty_4
_bindgen_ty_5
_bindgen_ty_6
_bindgen_ty_7
_bindgen_ty_8
_bindgen_ty_9
_bindgen_ty_10

Constants§

CHAR_PATH_SEPARATOR
CLOCK_BOOTTIME
CLOCK_BOOTTIME_ALARM
CLOCK_MONOTONIC
CLOCK_MONOTONIC_COARSE
CLOCK_MONOTONIC_RAW
CLOCK_PROCESS_CPUTIME_ID
CLOCK_REALTIME
CLOCK_REALTIME_ALARM
CLOCK_REALTIME_COARSE
CLOCK_TAI
CLOCK_THREAD_CPUTIME_ID
E2BIG
EACCES
EADDRINUSE
EADDRNOTAVAIL
EADV
EAFNOSUPPORT
EAGAIN
EALREADY
EBADE
EBADF
EBADFD
EBADMSG
EBADR
EBADRQC
EBADSLT
EBFONT
EBUSY
ECANCELED
ECHILD
ECHRNG
ECOMM
ECONNABORTED
ECONNREFUSED
ECONNRESET
EDEADLK
EDEADLOCK
EDESTADDRREQ
EDOM
EDOTDOT
EDQUOT
EEXIST
EFAULT
EFBIG
EHOSTDOWN
EHOSTUNREACH
EHWPOISON
EIDRM
EILSEQ
EINPROGRESS
EINTR
EINVAL
EIO
EISCONN
EISDIR
EISNAM
EKEYEXPIRED
EKEYREJECTED
EKEYREVOKED
EL2HLT
EL2NSYNC
EL3HLT
EL3RST
ELIBACC
ELIBBAD
ELIBEXEC
ELIBMAX
ELIBSCN
ELNRNG
ELOOP
EMEDIUMTYPE
EMFILE
EMLINK
EMSGSIZE
EMULTIHOP
ENAMETOOLONG
ENAVAIL
ENETDOWN
ENETRESET
ENETUNREACH
ENFILE
ENOANO
ENOBUFS
ENOCSI
ENODATA
ENODEV
ENOENT
ENOEXEC
ENOKEY
ENOLCK
ENOLINK
ENOMEDIUM
ENOMEM
ENOMSG
ENONET
ENOPKG
ENOPROTOOPT
ENOSPC
ENOSR
ENOSTR
ENOSYS
ENOTBLK
ENOTCONN
ENOTDIR
ENOTEMPTY
ENOTNAM
ENOTRECOVERABLE
ENOTSOCK
ENOTSUP
ENOTTY
ENOTUNIQ
ENXIO
EOPNOTSUPP
EOVERFLOW
EOWNERDEAD
EPERM
EPFNOSUPPORT
EPIPE
EPROTO
EPROTONOSUPPORT
EPROTOTYPE
ERANGE
EREMCHG
EREMOTE
EREMOTEIO
ERESTART
ERFKILL
EROFS
ERROR_ALREADY_EXISTS
ERROR_DISK_FULL
ERROR_FILE_EXISTS
ERROR_FILE_NOT_FOUND
ERROR_INVALID_FUNCTION
ERROR_INVALID_PARAMETER
ERROR_PATH_NOT_FOUND
ESHUTDOWN
ESOCKTNOSUPPORT
ESPIPE
ESRCH
ESRMNT
ESTALE
ESTRPIPE
ETIME
ETIMEDOUT
ETOOMANYREFS
ETXTBSY
EUCLEAN
EUNATCH
EUSERS
EWOULDBLOCK
EXDEV
EXFULL
FILE_ATTRIBUTE_ARCHIVE
FILE_ATTRIBUTE_COMPRESSED
FILE_ATTRIBUTE_DEVICE
FILE_ATTRIBUTE_DIRECTORY
FILE_ATTRIBUTE_ENCRYPTED
FILE_ATTRIBUTE_HIDDEN
FILE_ATTRIBUTE_NORMAL
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
FILE_ATTRIBUTE_OFFLINE
FILE_ATTRIBUTE_READONLY
FILE_ATTRIBUTE_REPARSE_POINT
FILE_ATTRIBUTE_SPARSE_FILE
FILE_ATTRIBUTE_SYSTEM
FILE_ATTRIBUTE_TEMPORARY
FILE_ATTRIBUTE_UNIX_EXTENSION
False
INT8_MAX
INT8_MIN
INT16_MAX
INT16_MIN
INT32_MAX
INT32_MIN
INTPTR_MAX
INTPTR_MIN
INT_FAST8_MAX
INT_FAST8_MIN
INT_FAST16_MAX
INT_FAST16_MIN
INT_FAST32_MAX
INT_FAST32_MIN
INT_LEAST8_MAX
INT_LEAST8_MIN
INT_LEAST16_MAX
INT_LEAST16_MIN
INT_LEAST32_MAX
INT_LEAST32_MIN
LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO
LZMA_PROPS_SIZE
LZMA_REQUIRED_INPUT_MAX
MY_CPU_NAME
MY_CPU_SIZEOF_POINTER
MY_FACILITY_ERRNO
MY_FACILITY_WIN32
MY_FACILITY_WRes
PTHREAD_BARRIER_SERIAL_THREAD
PTHREAD_CANCEL_ASYNCHRONOUS
PTHREAD_CANCEL_DEFERRED
PTHREAD_CANCEL_DISABLE
PTHREAD_CANCEL_ENABLE
PTHREAD_CREATE_DETACHED
PTHREAD_CREATE_JOINABLE
PTHREAD_EXPLICIT_SCHED
PTHREAD_INHERIT_SCHED
PTHREAD_MUTEX_ADAPTIVE_NP
PTHREAD_MUTEX_DEFAULT
PTHREAD_MUTEX_ERRORCHECK
PTHREAD_MUTEX_ERRORCHECK_NP
PTHREAD_MUTEX_NORMAL
PTHREAD_MUTEX_RECURSIVE
PTHREAD_MUTEX_RECURSIVE_NP
PTHREAD_MUTEX_ROBUST
PTHREAD_MUTEX_ROBUST_NP
PTHREAD_MUTEX_STALLED
PTHREAD_MUTEX_STALLED_NP
PTHREAD_MUTEX_TIMED_NP
PTHREAD_ONCE_INIT
PTHREAD_PRIO_INHERIT
PTHREAD_PRIO_NONE
PTHREAD_PRIO_PROTECT
PTHREAD_PROCESS_PRIVATE
PTHREAD_PROCESS_SHARED
PTHREAD_RWLOCK_DEFAULT_NP
PTHREAD_RWLOCK_PREFER_READER_NP
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
PTHREAD_RWLOCK_PREFER_WRITER_NP
PTHREAD_SCOPE_PROCESS
PTHREAD_SCOPE_SYSTEM
PTHREAD_STACK_MIN
PTRDIFF_MAX
PTRDIFF_MIN
SCHED_FIFO
SCHED_OTHER
SCHED_RR
SIG_ATOMIC_MAX
SIG_ATOMIC_MIN
SIZE_MAX
STRING_PATH_SEPARATOR
SZ_ERROR_ARCHIVE
SZ_ERROR_CRC
SZ_ERROR_DATA
SZ_ERROR_FAIL
SZ_ERROR_INPUT_EOF
SZ_ERROR_MEM
SZ_ERROR_NO_ARCHIVE
SZ_ERROR_OUTPUT_EOF
SZ_ERROR_PARAM
SZ_ERROR_PROGRESS
SZ_ERROR_READ
SZ_ERROR_THREAD
SZ_ERROR_UNSUPPORTED
SZ_ERROR_WRITE
SZ_OK
TIMER_ABSTIME
TIME_UTC
True
UINT8_MAX
UINT16_MAX
UINT32_MAX
UINTPTR_MAX
UINT_FAST8_MAX
UINT_FAST16_MAX
UINT_FAST32_MAX
UINT_LEAST8_MAX
UINT_LEAST16_MAX
UINT_LEAST32_MAX
WCHAR_PATH_SEPARATOR
WINT_MAX
WINT_MIN
WSTRING_PATH_SEPARATOR
_ATFILE_SOURCE
_BITS_CPU_SET_H
_BITS_ENDIANNESS_H
_BITS_ENDIAN_H
_BITS_ERRNO_H
_BITS_PTHREADTYPES_ARCH_H
_BITS_PTHREADTYPES_COMMON_H
_BITS_SCHED_H
_BITS_SETJMP_H
_BITS_STDINT_INTN_H
_BITS_STDINT_LEAST_H
_BITS_STDINT_UINTN_H
_BITS_TIME64_H
_BITS_TIME_H
_BITS_TYPESIZES_H
_BITS_TYPES_H
_BITS_TYPES_LOCALE_T_H
_BITS_TYPES_STRUCT_SCHED_PARAM
_BITS_TYPES___LOCALE_T_H
_BITS_WCHAR_H
_DEFAULT_SOURCE
_ERRNO_H
_FEATURES_H
_POSIX_C_SOURCE
_POSIX_SOURCE
_PTHREAD_H
_SCHED_H
_STDC_PREDEF_H
_STDINT_H
_STRUCT_TIMESPEC
_SYS_CDEFS_H
_THREAD_MUTEX_INTERNAL_H
_THREAD_SHARED_TYPES_H
_TIME_H
__BIG_ENDIAN
__BYTE_ORDER
__CPU_SETSIZE
__FD_SETSIZE
__FLOAT_WORD_ORDER
__GLIBC_MINOR__
__GLIBC_USE_C23_STRTOL
__GLIBC_USE_DEPRECATED_GETS
__GLIBC_USE_DEPRECATED_SCANF
__GLIBC_USE_IEC_60559_BFP_EXT
__GLIBC_USE_IEC_60559_BFP_EXT_C23
__GLIBC_USE_IEC_60559_EXT
__GLIBC_USE_IEC_60559_FUNCS_EXT
__GLIBC_USE_IEC_60559_FUNCS_EXT_C23
__GLIBC_USE_IEC_60559_TYPES_EXT
__GLIBC_USE_ISOC23
__GLIBC_USE_LIB_EXT2
__GLIBC__
__GNU_LIBRARY__
__HAVE_GENERIC_SELECTION
__INO_T_MATCHES_INO64_T
__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64
__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
__LITTLE_ENDIAN
__OFF_T_MATCHES_OFF64_T
__PDP_ENDIAN
__PTHREAD_MUTEX_HAVE_PREV
__RLIM_T_MATCHES_RLIM64_T
__SIZEOF_PTHREAD_ATTR_T
__SIZEOF_PTHREAD_BARRIERATTR_T
__SIZEOF_PTHREAD_BARRIER_T
__SIZEOF_PTHREAD_CONDATTR_T
__SIZEOF_PTHREAD_COND_T
__SIZEOF_PTHREAD_MUTEXATTR_T
__SIZEOF_PTHREAD_MUTEX_T
__SIZEOF_PTHREAD_RWLOCKATTR_T
__SIZEOF_PTHREAD_RWLOCK_T
__STATFS_MATCHES_STATFS64
__STDC_IEC_559_COMPLEX__
__STDC_IEC_559__
__STDC_IEC_60559_BFP__
__STDC_IEC_60559_COMPLEX__
__STDC_ISO_10646__
__SYSCALL_WORDSIZE
__TIMESIZE
__USE_ATFILE
__USE_FILE_OFFSET64
__USE_FORTIFY_LEVEL
__USE_ISOC11
__USE_ISOC95
__USE_ISOC99
__USE_LARGEFILE
__USE_MISC
__USE_POSIX
__USE_POSIX2
__USE_POSIX199309
__USE_POSIX199506
__USE_POSIX_IMPLICITLY
__USE_TIME_BITS64
__USE_XOPEN2K
__USE_XOPEN2K8
__WORDSIZE
__WORDSIZE_TIME64_COMPAT32
__clock_t_defined
__clockid_t_defined
__glibc_c99_flexarr_available
__have_pthread_attr_t
__itimerspec_defined
__jmp_buf_tag_defined
__struct_tm_defined
__time_t_defined
__timer_t_defined
kEmptyHashValue
kMtCacheLineDummy
k_PropVar_TimePrec_0
k_PropVar_TimePrec_1ns
k_PropVar_TimePrec_100ns
k_PropVar_TimePrec_Base
k_PropVar_TimePrec_DOS
k_PropVar_TimePrec_HighPrec
k_PropVar_TimePrec_Unix

Statics§

__daylight
__timezone
__tzname
daylight
timezone
tzname

Functions§

AutoResetEvent_Create
AutoResetEvent_CreateNotSignaled
AutoResetEvent_OptCreate_And_Reset
Bt3Zip_MatchFinder_GetMatches
Bt3Zip_MatchFinder_Skip
CPU_IsSupported_AES
CPU_IsSupported_AVX
CPU_IsSupported_AVX2
CPU_IsSupported_AVX512F_AVX512VL
CPU_IsSupported_CMOV
CPU_IsSupported_PageGB
CPU_IsSupported_SHA
CPU_IsSupported_SHA512
CPU_IsSupported_SSE
CPU_IsSupported_SSE2
CPU_IsSupported_SSE41
CPU_IsSupported_SSSE3
CPU_IsSupported_VAES_AVX2
CriticalSection_Delete
CriticalSection_Enter
CriticalSection_Init
CriticalSection_Leave
Event_Close
Event_Reset
Event_Set
Event_Wait
GetMatchesSpec1
GetMatchesSpecN_2
Hc3Zip_MatchFinder_GetMatches
Hc3Zip_MatchFinder_Skip
InterlockedDecrement
InterlockedIncrement
LookInStream_LookRead
LookInStream_Read
LookInStream_Read2
LookInStream_SeekTo
LookToRead2_CreateVTable
LzFindPrepare
Lzma2Dec_Allocate
Lzma2Dec_AllocateProbs
Lzma2Dec_DecodeToBuf
Lzma2Dec_DecodeToDic
Lzma2Dec_Init
Lzma2Dec_Parse
Lzma2Decode
Lzma2EncProps_Init
Lzma2EncProps_Normalize
Lzma2Enc_Create
Lzma2Enc_Destroy
Lzma2Enc_Encode2
Lzma2Enc_SetDataSize
Lzma2Enc_SetProps
Lzma2Enc_WriteProperties
LzmaDec_Allocate
LzmaDec_AllocateProbs
LzmaDec_DecodeToBuf
LzmaDec_DecodeToDic
LzmaDec_Free
LzmaDec_FreeProbs
LzmaDec_Init
LzmaDecode
LzmaEncProps_GetDictSize
LzmaEncProps_Init
LzmaEncProps_Normalize
LzmaEnc_Create
LzmaEnc_Destroy
LzmaEnc_Encode
LzmaEnc_IsWriteEndMark
LzmaEnc_MemEncode
LzmaEnc_SetDataSize
LzmaEnc_SetProps
LzmaEnc_WriteProperties
LzmaEncode
LzmaProps_Decode
ManualResetEvent_Create
ManualResetEvent_CreateNotSignaled
MatchFinderMt_Construct
MatchFinderMt_Create
MatchFinderMt_CreateVTable
MatchFinderMt_Destruct
MatchFinderMt_InitMt
MatchFinderMt_ReleaseStream
MatchFinder_Construct
MatchFinder_Create
MatchFinder_CreateVTable
MatchFinder_Free
MatchFinder_Init
MatchFinder_Init_4
MatchFinder_Init_HighHash
MatchFinder_Init_LowHash
MatchFinder_MoveBlock
MatchFinder_NeedMove
MatchFinder_Normalize3
MatchFinder_ReadIfRequired
SecToLook_CreateVTable
SecToRead_CreateVTable
Semaphore_Close
Semaphore_Create
Semaphore_OptCreateInit
Semaphore_ReleaseN
Semaphore_Wait
SeqInStream_ReadByte
SeqInStream_ReadMax
ThreadNextGroup_GetNext
ThreadNextGroup_Init
Thread_Close
Thread_Create
Thread_Create_With_Affinity
Thread_Create_With_CpuSet
Thread_Wait_Close
__errno_location
__pthread_register_cancel
__pthread_unregister_cancel
__pthread_unwind_next
__sched_cpualloc
__sched_cpucount
__sched_cpufree
__sigsetjmp
asctime
asctime_r
clock
clock_getcpuclockid
clock_getres
clock_gettime
clock_nanosleep
clock_settime
ctime
ctime_r
difftime
dysize
gmtime
gmtime_r
localtime
localtime_r
mktime
nanosleep
pthread_atfork
pthread_attr_destroy
pthread_attr_getdetachstate
pthread_attr_getguardsize
pthread_attr_getinheritsched
pthread_attr_getschedparam
pthread_attr_getschedpolicy
pthread_attr_getscope
pthread_attr_getstack
pthread_attr_getstackaddr
pthread_attr_getstacksize
pthread_attr_init
pthread_attr_setdetachstate
pthread_attr_setguardsize
pthread_attr_setinheritsched
pthread_attr_setschedparam
pthread_attr_setschedpolicy
pthread_attr_setscope
pthread_attr_setstack
pthread_attr_setstackaddr
pthread_attr_setstacksize
pthread_barrier_destroy
pthread_barrier_init
pthread_barrier_wait
pthread_barrierattr_destroy
pthread_barrierattr_getpshared
pthread_barrierattr_init
pthread_barrierattr_setpshared
pthread_cancel
pthread_cond_broadcast
pthread_cond_destroy
pthread_cond_init
pthread_cond_signal
pthread_cond_timedwait
pthread_cond_wait
pthread_condattr_destroy
pthread_condattr_getclock
pthread_condattr_getpshared
pthread_condattr_init
pthread_condattr_setclock
pthread_condattr_setpshared
pthread_create
pthread_detach
pthread_equal
pthread_exit
pthread_getcpuclockid
pthread_getschedparam
pthread_getspecific
pthread_join
pthread_key_create
pthread_key_delete
pthread_mutex_consistent
pthread_mutex_destroy
pthread_mutex_getprioceiling
pthread_mutex_init
pthread_mutex_lock
pthread_mutex_setprioceiling
pthread_mutex_timedlock
pthread_mutex_trylock
pthread_mutex_unlock
pthread_mutexattr_destroy
pthread_mutexattr_getprioceiling
pthread_mutexattr_getprotocol
pthread_mutexattr_getpshared
pthread_mutexattr_getrobust
pthread_mutexattr_gettype
pthread_mutexattr_init
pthread_mutexattr_setprioceiling
pthread_mutexattr_setprotocol
pthread_mutexattr_setpshared
pthread_mutexattr_setrobust
pthread_mutexattr_settype
pthread_once
pthread_rwlock_destroy
pthread_rwlock_init
pthread_rwlock_rdlock
pthread_rwlock_timedrdlock
pthread_rwlock_timedwrlock
pthread_rwlock_tryrdlock
pthread_rwlock_trywrlock
pthread_rwlock_unlock
pthread_rwlock_wrlock
pthread_rwlockattr_destroy
pthread_rwlockattr_getkind_np
pthread_rwlockattr_getpshared
pthread_rwlockattr_init
pthread_rwlockattr_setkind_np
pthread_rwlockattr_setpshared
pthread_self
pthread_setcancelstate
pthread_setcanceltype
pthread_setschedparam
pthread_setschedprio
pthread_setspecific
pthread_spin_destroy
pthread_spin_init
pthread_spin_lock
pthread_spin_trylock
pthread_spin_unlock
pthread_testcancel
sched_get_priority_max
sched_get_priority_min
sched_getparam
sched_getscheduler
sched_rr_get_interval
sched_setparam
sched_setscheduler
sched_yield
strftime
strftime_l
time
timegm
timelocal
timer_create
timer_delete
timer_getoverrun
timer_gettime
timer_settime
timespec_get
tzset
z7_x86_cpuid
z7_x86_cpuid_GetMaxFunc

Type Aliases§

BoolInt
Byte
CAffinityMask
CAutoResetEvent
CCpuSet
CLzRef
CLzma2EncHandle
CLzmaEncHandle
CLzmaProb
CManualResetEvent
CMatchFinderMt
DWORD
DWORD_PTR
IByteIn
IByteInPtr
IByteOut
IByteOutPtr
ICompressProgress
ICompressProgressPtr
ILookInStream
ILookInStreamPtr
INT
INT32
INT_PTR
ISeekInStream
ISeekInStreamPtr
ISeqInStream
ISeqInStreamPtr
ISeqOutStream
ISeqOutStreamPtr
ISzAllocPtr
Int16
Int32
Int64
LONG
LONG_PTR
LPVOID
Mf_GetHeads
Mf_GetMatches_Func
Mf_GetNumAvailableBytes_Func
Mf_GetPointerToCurrentPos_Func
Mf_Init_Func
Mf_Mix_Matches
Mf_Skip_Func
SIZE_T
SRes
SizeT
THREAD_FUNC_RET_TYPE
THREAD_FUNC_TYPE
UINT
UINT32
UINT_PTR
UInt16
UInt32
UInt64
ULONG
WRes
Z7_void_Function
__blkcnt64_t
__blkcnt_t
__blksize_t
__caddr_t
__clock_t
__clockid_t
__cpu_mask
__daddr_t
__dev_t
__fsblkcnt64_t
__fsblkcnt_t
__fsfilcnt64_t
__fsfilcnt_t
__fsword_t
__gid_t
__id_t
__ino64_t
__ino_t
__int8_t
__int16_t
__int32_t
__int64_t
__int_least8_t
__int_least16_t
__int_least32_t
__int_least64_t
__intmax_t
__intptr_t
__jmp_buf
__key_t
__locale_t
__loff_t
__mode_t
__nlink_t
__off64_t
__off_t
__pid_t
__pthread_list_t
__pthread_slist_t
__quad_t
__rlim64_t
__rlim_t
__sig_atomic_t
__socklen_t
__ssize_t
__suseconds64_t
__suseconds_t
__syscall_slong_t
__syscall_ulong_t
__thrd_t
__time_t
__timer_t
__tss_t
__u_char
__u_int
__u_long
__u_quad_t
__u_short
__uid_t
__uint8_t
__uint16_t
__uint32_t
__uint64_t
__uint_least8_t
__uint_least16_t
__uint_least32_t
__uint_least64_t
__uintmax_t
__useconds_t
clock_t
clockid_t
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
int_least8_t
int_least16_t
int_least32_t
int_least64_t
intmax_t
locale_t
pid_t
pthread_key_t
pthread_once_t
pthread_spinlock_t
pthread_t
time_t
timer_t
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
uintmax_t
wchar_t

Unions§

__atomic_wide_counter
pthread_attr_t
pthread_barrier_t
pthread_barrierattr_t
pthread_cond_t
pthread_condattr_t
pthread_mutex_t
pthread_mutexattr_t
pthread_rwlock_t
pthread_rwlockattr_t