Home | History | Annotate | Line # | Download | only in programs
      1 /*
      2  * Copyright (c) Meta Platforms, Inc. and affiliates.
      3  * All rights reserved.
      4  *
      5  * This source code is licensed under both the BSD-style license (found in the
      6  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
      7  * in the COPYING file in the root directory of this source tree).
      8  * You may select, at your option, one of the above-listed licenses.
      9  */
     10 
     11 #ifndef FILEIO_TYPES_HEADER
     12 #define FILEIO_TYPES_HEADER
     13 
     14 #define ZSTD_STATIC_LINKING_ONLY   /* ZSTD_compressionParameters */
     15 #include "../lib/zstd.h"           /* ZSTD_* */
     16 
     17 /*-*************************************
     18 *  Parameters: FIO_prefs_t
     19 ***************************************/
     20 
     21 typedef struct FIO_display_prefs_s FIO_display_prefs_t;
     22 
     23 typedef enum { FIO_ps_auto, FIO_ps_never, FIO_ps_always } FIO_progressSetting_e;
     24 
     25 struct FIO_display_prefs_s {
     26     int displayLevel;   /* 0 : no display;  1: errors;  2: + result + interaction + warnings;  3: + progression;  4: + information */
     27     FIO_progressSetting_e progressSetting;
     28 };
     29 
     30 
     31 typedef enum { FIO_zstdCompression, FIO_gzipCompression, FIO_xzCompression, FIO_lzmaCompression, FIO_lz4Compression } FIO_compressionType_t;
     32 
     33 typedef struct FIO_prefs_s {
     34 
     35     /* Algorithm preferences */
     36     FIO_compressionType_t compressionType;
     37     int sparseFileSupport;   /* 0: no sparse allowed; 1: auto (file yes, stdout no); 2: force sparse */
     38     int dictIDFlag;
     39     int checksumFlag;
     40     int blockSize;
     41     int overlapLog;
     42     int adaptiveMode;
     43     int useRowMatchFinder;
     44     int rsyncable;
     45     int minAdaptLevel;
     46     int maxAdaptLevel;
     47     int ldmFlag;
     48     int ldmHashLog;
     49     int ldmMinMatch;
     50     int ldmBucketSizeLog;
     51     int ldmHashRateLog;
     52     size_t streamSrcSize;
     53     size_t targetCBlockSize;
     54     int srcSizeHint;
     55     int testMode;
     56     ZSTD_paramSwitch_e literalCompressionMode;
     57 
     58     /* IO preferences */
     59     int removeSrcFile;
     60     int overwrite;
     61     int asyncIO;
     62 
     63     /* Computation resources preferences */
     64     unsigned memLimit;
     65     int nbWorkers;
     66 
     67     int excludeCompressedFiles;
     68     int patchFromMode;
     69     int contentSize;
     70     int allowBlockDevices;
     71     int passThrough;
     72     ZSTD_paramSwitch_e mmapDict;
     73 } FIO_prefs_t;
     74 
     75 typedef enum {FIO_mallocDict, FIO_mmapDict} FIO_dictBufferType_t;
     76 
     77 typedef struct {
     78     void* dictBuffer;
     79     size_t dictBufferSize;
     80     FIO_dictBufferType_t dictBufferType;
     81 #if defined(_MSC_VER) || defined(_WIN32)
     82     HANDLE dictHandle;
     83 #endif
     84 } FIO_Dict_t;
     85 
     86 #endif /* FILEIO_TYPES_HEADER */
     87