1*80aae8a3SMartin Matuska // SPDX-License-Identifier: CDDL-1.0 2*80aae8a3SMartin Matuska /* 3*80aae8a3SMartin Matuska * CDDL HEADER START 4*80aae8a3SMartin Matuska * 5*80aae8a3SMartin Matuska * This file and its contents are supplied under the terms of the 6*80aae8a3SMartin Matuska * Common Development and Distribution License ("CDDL"), version 1.0. 7*80aae8a3SMartin Matuska * You may only use this file in accordance with the terms of version 8*80aae8a3SMartin Matuska * 1.0 of the CDDL. 9*80aae8a3SMartin Matuska * 10*80aae8a3SMartin Matuska * A full copy of the text of the CDDL should have accompanied this 11*80aae8a3SMartin Matuska * source. A copy of the CDDL is also available via the Internet at 12*80aae8a3SMartin Matuska * http://www.illumos.org/license/CDDL. 13*80aae8a3SMartin Matuska * 14*80aae8a3SMartin Matuska * CDDL HEADER END 15*80aae8a3SMartin Matuska */ 16*80aae8a3SMartin Matuska 17*80aae8a3SMartin Matuska /* 18*80aae8a3SMartin Matuska * Copyright (c) 2026 by Garth Snyder. All rights reserved. 19*80aae8a3SMartin Matuska */ 20*80aae8a3SMartin Matuska 21*80aae8a3SMartin Matuska #ifndef _ZSTREAM_UTIL_H 22*80aae8a3SMartin Matuska #define _ZSTREAM_UTIL_H 23*80aae8a3SMartin Matuska 24*80aae8a3SMartin Matuska #ifdef __cplusplus 25*80aae8a3SMartin Matuska extern "C" { 26*80aae8a3SMartin Matuska #endif 27*80aae8a3SMartin Matuska 28*80aae8a3SMartin Matuska #include <stddef.h> 29*80aae8a3SMartin Matuska #include <sys/zfs_ioctl.h> 30*80aae8a3SMartin Matuska #include <sys/zio_checksum.h> 31*80aae8a3SMartin Matuska 32*80aae8a3SMartin Matuska /* 33*80aae8a3SMartin Matuska * The safe_ versions of the functions below terminate the process if the 34*80aae8a3SMartin Matuska * operation doesn't succeed instead of returning an error. 35*80aae8a3SMartin Matuska */ 36*80aae8a3SMartin Matuska extern void * 37*80aae8a3SMartin Matuska safe_malloc(size_t size); 38*80aae8a3SMartin Matuska 39*80aae8a3SMartin Matuska extern void * 40*80aae8a3SMartin Matuska safe_calloc(size_t n); 41*80aae8a3SMartin Matuska 42*80aae8a3SMartin Matuska extern int 43*80aae8a3SMartin Matuska sfread(void *buf, size_t size, FILE *fp); 44*80aae8a3SMartin Matuska 45*80aae8a3SMartin Matuska /* 46*80aae8a3SMartin Matuska * 1) Update checksum with the record header up to drr_checksum. 47*80aae8a3SMartin Matuska * 2) Update checksum field in the record header. 48*80aae8a3SMartin Matuska * 3) Update checksum with the checksum field in the record header. 49*80aae8a3SMartin Matuska * 4) Update checksum with the contents of the payload. 50*80aae8a3SMartin Matuska * 5) Write header and payload to fd. 51*80aae8a3SMartin Matuska */ 52*80aae8a3SMartin Matuska extern int 53*80aae8a3SMartin Matuska dump_record(dmu_replay_record_t *drr, void *payload, size_t payload_len, 54*80aae8a3SMartin Matuska zio_cksum_t *zc, int outfd); 55*80aae8a3SMartin Matuska 56*80aae8a3SMartin Matuska #ifdef __cplusplus 57*80aae8a3SMartin Matuska } 58*80aae8a3SMartin Matuska #endif 59*80aae8a3SMartin Matuska 60*80aae8a3SMartin Matuska #endif /* _ZSTREAM_UTIL_H */ 61