2020-08-10 17:42:27 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2016-2020, Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This source code is licensed under both the BSD-style license (found in the
|
|
|
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
|
|
* in the COPYING file in the root directory of this source tree).
|
|
|
|
* You may select, at your option, one of the above-listed licenses.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* Need:
|
|
|
|
* NULL
|
|
|
|
* ZSTD_memcpy()
|
|
|
|
* ZSTD_memset()
|
|
|
|
* ZSTD_memmove()
|
|
|
|
* BYTE
|
|
|
|
* S16
|
|
|
|
* U16
|
|
|
|
* U32
|
|
|
|
* U64
|
|
|
|
* size_t
|
|
|
|
* ptrdiff_t
|
|
|
|
* INT_MAX
|
2020-08-11 06:11:20 +00:00
|
|
|
* UINT_MAX
|
2020-08-10 17:42:27 +00:00
|
|
|
*/
|
|
|
|
#ifndef ZSTD_DEPS_COMMON
|
|
|
|
#define ZSTD_DEPS_COMMON
|
|
|
|
|
2020-08-11 06:11:20 +00:00
|
|
|
#include <linux/limits.h>
|
|
|
|
#include <linux/types.h>
|
|
|
|
#include <linux/stddef.h>
|
2020-08-10 17:42:27 +00:00
|
|
|
|
2020-08-11 06:11:20 +00:00
|
|
|
typedef uint8_t BYTE;
|
|
|
|
typedef uint16_t U16;
|
|
|
|
typedef int16_t S16;
|
|
|
|
typedef uint32_t U32;
|
|
|
|
typedef int32_t S32;
|
|
|
|
typedef uint64_t U64;
|
|
|
|
typedef int64_t S64;
|
2020-08-10 17:42:27 +00:00
|
|
|
|
|
|
|
#define ZSTD_memcpy(d,s,n) __builtin_memcpy((d),(s),(n))
|
|
|
|
#define ZSTD_memmove(d,s,n) __builtin_memmove((d),(s),(n))
|
|
|
|
#define ZSTD_memset(d,s,n) __builtin_memset((d),(s),(n))
|
2020-08-11 21:31:09 +00:00
|
|
|
|
2020-08-10 17:42:27 +00:00
|
|
|
#endif /* ZSTD_DEPS_COMMON */
|
|
|
|
|
2020-08-11 06:11:20 +00:00
|
|
|
/*
|
|
|
|
* Define malloc as always failing. That means the user must
|
|
|
|
* either use ZSTD_customMem or statically allocate memory.
|
|
|
|
* Need:
|
2020-08-10 17:42:27 +00:00
|
|
|
* ZSTD_malloc()
|
|
|
|
* ZSTD_free()
|
|
|
|
* ZSTD_calloc()
|
|
|
|
*/
|
|
|
|
#ifdef ZSTD_DEPS_NEED_MALLOC
|
|
|
|
#ifndef ZSTD_DEPS_MALLOC
|
|
|
|
#define ZSTD_DEPS_MALLOC
|
|
|
|
|
2020-09-23 19:54:10 +00:00
|
|
|
#define ZSTD_malloc(s) ({ (void)(s); NULL; })
|
|
|
|
#define ZSTD_free(p) ((void)(p))
|
|
|
|
#define ZSTD_calloc(n,s) ({ (void)(n); (void)(s); NULL; })
|
2020-08-10 17:42:27 +00:00
|
|
|
|
|
|
|
#endif /* ZSTD_DEPS_MALLOC */
|
|
|
|
#endif /* ZSTD_DEPS_NEED_MALLOC */
|
|
|
|
|
2020-08-11 06:11:20 +00:00
|
|
|
/*
|
|
|
|
* Provides 64-bit math support.
|
|
|
|
* Need:
|
|
|
|
* U64 ZSTD_div64(U64 dividend, U32 divisor)
|
|
|
|
*/
|
|
|
|
#ifdef ZSTD_DEPS_NEED_MATH64
|
|
|
|
#ifndef ZSTD_DEPS_MATH64
|
|
|
|
#define ZSTD_DEPS_MATH64
|
|
|
|
|
|
|
|
#include <linux/math64.h>
|
|
|
|
|
|
|
|
static U64 ZSTD_div64(U64 dividend, U32 divisor) {
|
|
|
|
return div_u64(dividend, divisor);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* ZSTD_DEPS_MATH64 */
|
|
|
|
#endif /* ZSTD_DEPS_NEED_MATH64 */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This is only requested when DEBUGLEVEL >= 1, meaning
|
|
|
|
* it is disabled in production.
|
|
|
|
* Need:
|
2020-08-10 17:42:27 +00:00
|
|
|
* assert()
|
|
|
|
*/
|
|
|
|
#ifdef ZSTD_DEPS_NEED_ASSERT
|
|
|
|
#ifndef ZSTD_DEPS_ASSERT
|
|
|
|
#define ZSTD_DEPS_ASSERT
|
|
|
|
|
2020-08-11 06:11:20 +00:00
|
|
|
#include <linux/kernel.h>
|
|
|
|
|
|
|
|
#define assert(x) WARN_ON((x))
|
2020-08-10 17:42:27 +00:00
|
|
|
|
|
|
|
#endif /* ZSTD_DEPS_ASSERT */
|
|
|
|
#endif /* ZSTD_DEPS_NEED_ASSERT */
|
|
|
|
|
2020-08-11 06:11:20 +00:00
|
|
|
/*
|
|
|
|
* This is only requested when DEBUGLEVEL >= 2, meaning
|
|
|
|
* it is disabled in production.
|
|
|
|
* Need:
|
2020-08-10 17:42:27 +00:00
|
|
|
* ZSTD_DEBUG_PRINT()
|
|
|
|
*/
|
|
|
|
#ifdef ZSTD_DEPS_NEED_IO
|
|
|
|
#ifndef ZSTD_DEPS_IO
|
|
|
|
#define ZSTD_DEPS_IO
|
|
|
|
|
2020-08-11 06:11:20 +00:00
|
|
|
#include <linux/printk.h>
|
|
|
|
|
|
|
|
#define ZSTD_DEBUG_PRINT(...) pr_debug(__VA_ARGS__)
|
2020-08-10 17:42:27 +00:00
|
|
|
|
|
|
|
#endif /* ZSTD_DEPS_IO */
|
|
|
|
#endif /* ZSTD_DEPS_NEED_IO */
|
|
|
|
|
2020-08-11 06:11:20 +00:00
|
|
|
/*
|
|
|
|
* Only requested when MSAN is enabled.
|
2020-08-10 17:42:27 +00:00
|
|
|
* Need:
|
|
|
|
* intptr_t
|
|
|
|
*/
|
|
|
|
#ifdef ZSTD_DEPS_NEED_STDINT
|
|
|
|
#ifndef ZSTD_DEPS_STDINT
|
|
|
|
#define ZSTD_DEPS_STDINT
|
|
|
|
|
2020-08-11 06:11:20 +00:00
|
|
|
/*
|
|
|
|
* The Linux Kernel doesn't provide intptr_t, only uintptr_t, which
|
|
|
|
* is an unsigned long.
|
|
|
|
*/
|
2020-09-24 03:36:47 +00:00
|
|
|
typedef long intptr_t;
|
2020-08-10 17:42:27 +00:00
|
|
|
|
|
|
|
#endif /* ZSTD_DEPS_STDINT */
|
|
|
|
#endif /* ZSTD_DEPS_NEED_STDINT */
|