Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.5.6.
  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 the
  7 * LICENSE file in the root directory of this source tree) and the GPLv2 (found
  8 * 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 implementation
 15 * to compile zstd without libc support.
 16 */
 17
 18/* Need:
 19 * NULL
 20 * INT_MAX
 21 * UINT_MAX
 22 * ZSTD_memcpy()
 23 * ZSTD_memset()
 24 * ZSTD_memmove()
 25 */
 26#ifndef ZSTD_DEPS_COMMON
 27#define ZSTD_DEPS_COMMON
 28
 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 must
 40 * 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_MALLOC
 47#ifndef ZSTD_DEPS_MALLOC
 48#define ZSTD_DEPS_MALLOC
 49
 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_MATH64
 63#ifndef ZSTD_DEPS_MATH64
 64#define ZSTD_DEPS_MATH64
 65
 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, meaning
 77 * it is disabled in production.
 78 * Need:
 79 * assert()
 80 */
 81#ifdef ZSTD_DEPS_NEED_ASSERT
 82#ifndef ZSTD_DEPS_ASSERT
 83#define ZSTD_DEPS_ASSERT
 84
 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, meaning
 94 * it is disabled in production.
 95 * Need:
 96 * ZSTD_DEBUG_PRINT()
 97 */
 98#ifdef ZSTD_DEPS_NEED_IO
 99#ifndef ZSTD_DEPS_IO
100#define ZSTD_DEPS_IO
101
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 */