brintos

brintos / linux-shallow public Read only

0
0
Text · 2.5 KiB · 2c34e8a Raw
108 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */2/*3 * Copyright (c) Facebook, Inc.4 * All rights reserved.5 *6 * This source code is licensed under both the BSD-style license (found in the7 * LICENSE file in the root directory of this source tree) and the GPLv2 (found8 * in the COPYING file in the root directory of this source tree).9 * You may select, at your option, one of the above-listed licenses.10 */11 12/*13 * This file provides common libc dependencies that zstd requires.14 * The purpose is to allow replacing this file with a custom implementation15 * to compile zstd without libc support.16 */17 18/* Need:19 * NULL20 * INT_MAX21 * UINT_MAX22 * ZSTD_memcpy()23 * ZSTD_memset()24 * ZSTD_memmove()25 */26#ifndef ZSTD_DEPS_COMMON27#define ZSTD_DEPS_COMMON28 29#include <linux/limits.h>30#include <linux/stddef.h>31 32#define ZSTD_memcpy(d,s,n) __builtin_memcpy((d),(s),(n))33#define ZSTD_memmove(d,s,n) __builtin_memmove((d),(s),(n))34#define ZSTD_memset(d,s,n) __builtin_memset((d),(s),(n))35 36#endif /* ZSTD_DEPS_COMMON */37 38/*39 * Define malloc as always failing. That means the user must40 * either use ZSTD_customMem or statically allocate memory.41 * Need:42 * ZSTD_malloc()43 * ZSTD_free()44 * ZSTD_calloc()45 */46#ifdef ZSTD_DEPS_NEED_MALLOC47#ifndef ZSTD_DEPS_MALLOC48#define ZSTD_DEPS_MALLOC49 50#define ZSTD_malloc(s) ({ (void)(s); NULL; })51#define ZSTD_free(p) ((void)(p))52#define ZSTD_calloc(n,s) ({ (void)(n); (void)(s); NULL; })53 54#endif /* ZSTD_DEPS_MALLOC */55#endif /* ZSTD_DEPS_NEED_MALLOC */56 57/*58 * Provides 64-bit math support.59 * Need:60 * U64 ZSTD_div64(U64 dividend, U32 divisor)61 */62#ifdef ZSTD_DEPS_NEED_MATH6463#ifndef ZSTD_DEPS_MATH6464#define ZSTD_DEPS_MATH6465 66#include <linux/math64.h>67 68static uint64_t ZSTD_div64(uint64_t dividend, uint32_t divisor) {69  return div_u64(dividend, divisor);70}71 72#endif /* ZSTD_DEPS_MATH64 */73#endif /* ZSTD_DEPS_NEED_MATH64 */74 75/*76 * This is only requested when DEBUGLEVEL >= 1, meaning77 * it is disabled in production.78 * Need:79 * assert()80 */81#ifdef ZSTD_DEPS_NEED_ASSERT82#ifndef ZSTD_DEPS_ASSERT83#define ZSTD_DEPS_ASSERT84 85#include <linux/kernel.h>86 87#define assert(x) WARN_ON(!(x))88 89#endif /* ZSTD_DEPS_ASSERT */90#endif /* ZSTD_DEPS_NEED_ASSERT */91 92/*93 * This is only requested when DEBUGLEVEL >= 2, meaning94 * it is disabled in production.95 * Need:96 * ZSTD_DEBUG_PRINT()97 */98#ifdef ZSTD_DEPS_NEED_IO99#ifndef ZSTD_DEPS_IO100#define ZSTD_DEPS_IO101 102#include <linux/printk.h>103 104#define ZSTD_DEBUG_PRINT(...) pr_debug(__VA_ARGS__)105 106#endif /* ZSTD_DEPS_IO */107#endif /* ZSTD_DEPS_NEED_IO */108