1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 24d3c95f5SJorgen Lundman /* 34d3c95f5SJorgen Lundman * GRUB -- GRand Unified Bootloader 44d3c95f5SJorgen Lundman * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc. 54d3c95f5SJorgen Lundman */ 64d3c95f5SJorgen Lundman /* 74d3c95f5SJorgen Lundman * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 84d3c95f5SJorgen Lundman * Use is subject to license terms. 94d3c95f5SJorgen Lundman */ 104d3c95f5SJorgen Lundman 114d3c95f5SJorgen Lundman #ifndef _SYS_ZIO_CHECKSUM_H 124d3c95f5SJorgen Lundman #define _SYS_ZIO_CHECKSUM_H 134d3c95f5SJorgen Lundman 144d3c95f5SJorgen Lundman /* 154d3c95f5SJorgen Lundman * Signature for checksum functions. 164d3c95f5SJorgen Lundman */ 174d3c95f5SJorgen Lundman typedef void zio_checksum_t(const void *data, uint64_t size, 184d3c95f5SJorgen Lundman zfs_endian_t endian, zio_cksum_t *zcp); 194d3c95f5SJorgen Lundman 204d3c95f5SJorgen Lundman /* 214d3c95f5SJorgen Lundman * Information about each checksum function. 224d3c95f5SJorgen Lundman */ 234d3c95f5SJorgen Lundman typedef struct zio_checksum_info { 244d3c95f5SJorgen Lundman zio_checksum_t *ci_func; /* checksum function for each byteorder */ 254d3c95f5SJorgen Lundman int ci_correctable; /* number of correctable bits */ 264d3c95f5SJorgen Lundman int ci_eck; /* uses zio embedded checksum? */ 274d3c95f5SJorgen Lundman char *ci_name; /* descriptive name */ 284d3c95f5SJorgen Lundman } zio_checksum_info_t; 294d3c95f5SJorgen Lundman 304d3c95f5SJorgen Lundman extern void zio_checksum_SHA256(const void *, uint64_t, 314d3c95f5SJorgen Lundman zfs_endian_t endian, zio_cksum_t *); 324d3c95f5SJorgen Lundman extern void fletcher_2_endian(const void *, uint64_t, zfs_endian_t endian, 334d3c95f5SJorgen Lundman zio_cksum_t *); 344d3c95f5SJorgen Lundman extern void fletcher_4_endian(const void *, uint64_t, zfs_endian_t endian, 354d3c95f5SJorgen Lundman zio_cksum_t *); 364d3c95f5SJorgen Lundman 374d3c95f5SJorgen Lundman #endif /* _SYS_ZIO_CHECKSUM_H */ 38