This is xnu-12377.1.9. See this file in:
/*
 * Copyright (c) 2025 Apple Computer, Inc. All rights reserved.
 *
 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
 *
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. The rights granted to you under the License
 * may not be used to create, or enable the creation or redistribution of,
 * unlawful or unlicensed copies of an Apple operating system, or to
 * circumvent, violate, or enable the circumvention or violation of, any
 * terms of an Apple operating system software license agreement.
 *
 * Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this file.
 *
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 *
 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
 */

#ifndef _SYS_DISK_PRIVATE_H_
#define _SYS_DISK_PRIVATE_H_

#include <sys/disk.h>

#ifdef XNU_KERNEL_PRIVATE
#include <mach/boolean.h>
#endif /* XNU_KERNEL_PRIVATE */

#ifdef KERNEL

/* Definitions of option bits for dk_unmap_t */
#define _DK_UNMAP_INITIALIZE                   0x00000100

#ifdef XNU_KERNEL_PRIVATE
typedef struct{
	boolean_t mi_mdev; /* Is this a memdev device? */
	boolean_t mi_phys; /* Physical memory? */
	uint32_t mi_base; /* Base page number of the device? */
	uint64_t mi_size; /* Size of the device (in ) */
} dk_memdev_info_t;

typedef dk_memdev_info_t memdev_info_t;

#define DKIOCGETMEMDEVINFO                    _IOR('d', 90, dk_memdev_info_t)
#endif /* XNU_KERNEL_PRIVATE */
typedef struct _dk_cs_pin {
	dk_extent_t     cp_extent;
	int64_t         cp_flags;
} _dk_cs_pin_t;
/* The following are modifiers to _DKIOCCSPINEXTENT/cp_flags operation */
#define _DKIOCCSPINTOFASTMEDIA          (0)                     /* Pin extent to the fast (SSD) media             */
#define _DKIOCCSPINFORHIBERNATION       (1 << 0)        /* Pin of hibernation file, content not preserved */
#define _DKIOCCSPINDISCARDDENYLIST      (1 << 1)        /* Hibernation complete/error, stop denylist-ing  */
#define _DKIOCCSPINTOSLOWMEDIA          (1 << 2)        /* Pin extent to the slow (HDD) media             */
#define _DKIOCCSTEMPORARYPIN            (1 << 3)        /* Relocate, but do not pin, to indicated media   */
#define _DKIOCCSHIBERNATEIMGSIZE        (1 << 4)        /* Anticipate/Max size of the upcoming hibernate  */
#define _DKIOCCSPINFORSWAPFILE          (1 << 5)        /* Pin of swap file, content not preserved        */

#define _DKIOCCSSETLVNAME                     _IOW('d', 198, char[256])
#define _DKIOCCSPINEXTENT                     _IOW('d', 199, _dk_cs_pin_t)
#define _DKIOCCSUNPINEXTENT                   _IOW('d', 200, _dk_cs_pin_t)
#define _DKIOCGETMIGRATIONUNITBYTESIZE        _IOR('d', 201, uint32_t)

typedef struct _dk_cs_map {
	dk_extent_t     cm_extent;
	uint64_t        cm_bytes_mapped;
} _dk_cs_map_t;

typedef struct _dk_cs_unmap {
	dk_extent_t                  *extents;
	uint32_t                     extentsCount;
	uint32_t                     options;
} _dk_cs_unmap_t;

#define _DKIOCCSMAP                           _IOWR('d', 202, _dk_cs_map_t)
// No longer used: _DKIOCCSSETFSVNODE (203) & _DKIOCCSGETFREEBYTES (204)
#define _DKIOCCSUNMAP                         _IOWR('d', 205, _dk_cs_unmap_t)

typedef enum {
	DK_APFS_ONE_DEVICE = 1,
	DK_APFS_FUSION
} dk_apfs_flavour_t;

#define DKIOCGETAPFSFLAVOUR     _IOR('d', 91, dk_apfs_flavour_t)

// Extent's offset and length returned in bytes
typedef struct dk_apfs_wbc_range {
	dev_t dev;              // Physical device for extents
	uint32_t count;         // Number of extents
	dk_extent_t extents[2]; // Addresses are relative to device we return
} dk_apfs_wbc_range_t;

#define DKIOCAPFSGETWBCRANGE           _IOR('d', 92, dk_apfs_wbc_range_t)
#define DKIOCAPFSRELEASEWBCRANGE       _IO('d', 93)

#define DKIOCGETMAXSWAPWRITE           _IOR('d', 94, uint64_t)

#endif /* KERNEL */

#define _DKIOCSETSTATIC                       _IO('d', 84)

#endif  /* _SYS_DISK_PRIVATE_H_ */