xref: /freebsd/sys/contrib/openzfs/cmd/zstream/zstream_util.h (revision 80aae8a3f8aa70712930664572be9e6885dc0be7)
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