Loading...
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
#
# Mach Operating System
# Copyright (c) 1986 Carnegie-Mellon University
# Copyright 2001-2018 Apple Inc.
#
# All rights reserved.  The CMU software License Agreement
# specifies the terms and conditions for use and redistribution.
#
#######################################################################
#
#	Master machine independent configuration file.
#
#	Specific configuration files are created based on this and
#	the machine specific master file using the doconf script.
#
#	Any changes to the master configuration files will affect all
#	other configuration files based upon it.
#
#######################################################################
#
#	To build a configuration, execute "doconf <configuration>."
#	Configurations are specified in the "Configurations:" section
#	of the MASTER and MASTER.* files as follows:
#
#	<configuration> = [ <attribute0> <attribute1> ... <attributeN> ]
#
#	Lines in the MASTER and MASTER.* files are selected based on
#	the attribute selector list, found in a comment at the end of
#	the line.  This is a list of attributes separated by commas.
#	The "!" operator selects the line if none of the attributes are
#	specified.
#
#	For example:
#
#	<foo,bar>	selects a line if "foo" or "bar" are specified.
#	<!foo,bar>	selects a line if neither "foo" nor "bar" is
#			specified.
#
#	Lines with no attributes specified are selected for all
#	configurations.
#
#######################################################################
#
#  SYSTEM SIZE CONFIGURATION (select exactly one)
#
#	xlarge = extra large scale system configuration
#	large  = large scale system configuration
#	medium = medium scale system configuration
#	small  = small scale system configuration
#	xsmall = extra small scale system configuration
#	bsmall = special extra small scale system configuration
#
#######################################################################
#

options		INET		#				# <inet>
options		HW_AST		# Hardware ast support		# <hw_ast>
options 	HW_FOOTPRINT	# Cache footprint support	# <hw_foot>

options 	MACH		# Standard Mach features	# <mach>
options		MACH_COMPAT	# Vendor syscall compatibility  # <mach>
options		MACH_FASTLINK	# Fast symbolic links
options		MACH_HOST	# Mach host (resource alloc.)	# <host>
options		MACH_IPC_COMPAT	# Enable old IPC interface	# <ipc_compat>
options		MACH_IPC_TEST	# Testing code/printfs		# <ipc_test>
options		MACH_FLIPC	# Fast-Local IPC		# <mach_flipc>
options 	MACH_NP		# Mach IPC support		# <np>
options		MACH_NBC	# No buffer cache		# <nbc>
options		MACH_NET	# Fast network access		# <mach_net>
options		MACH_XP		# external pager support	# <xp>
options		NO_DIRECT_RPC	# for untyped mig servers	#
options		LOOP		# loopback support		# <loop>
options		VLAN		#				# <vlan>
options		SIXLOWPAN	# 6LoWPAN support		# <sixlowpan>
options		BOND		#				# <bond>
options		IF_FAKE		#				# <if_fake>
options		IF_HEADLESS	#				# <if_headless>
options		AH_ALL_CRYPTO	# AH all crypto algs		# <ah_all_crypto>
options		PF		# Packet Filter			# <pf>
options		PF_ECN		# PF use ECN marking		# <pf_ecn>
options		PFLOG		# PF log interface		# <pflog>
options		MEASURE_BW	# interface bandwidth measurement # <measure_bw>
options		DUMMYNET	# dummynet support		# <dummynet>
options		TRAFFIC_MGT	# traffic management support		# <traffic_mgt>
options		MULTICAST	# Internet Protocol Class-D	$
options		TCPDEBUG	# TCP debug			# <tcpdebug>
options		TCP_DROP_SYNFIN	# Drop TCP packets with SYN+FIN set	# <tcpdrop_synfin>
options		ICMP_BANDLIM	# ICMP bandwidth limiting sysctl
options		IFNET_INPUT_SANITY_CHK	# allow dlil/ifnet input sanity check # <ifnet_input_chk>
options		MULTIPATH	# Multipath domain		# <multipath>
options		MPTCP		# Multipath TCP			# <mptcp>
options		SYSV_SEM	# SVID semaphores		# <sysv_sem>
options		SYSV_MSG	# SVID messages			# <sysv_msg>
options		SYSV_SHM	# SVID shared mem		# <sysv_shm>
options		PSYNCH		# pthread synch			# <psynch>
options		FLOW_DIVERT								# <flow_divert>
options		NECP									# <necp>
options		CONTENT_FILTER	#						# <content_filter>
options 	PACKET_MANGLER	#						# <packet_mangler>
options 	SIXLOWPAN	#		# <sixlowpan>
# secure_kernel - secure kernel from user programs
options     SECURE_KERNEL       # <secure_kernel>

options     OLD_SEMWAIT_SIGNAL  # old semwait_signal handler

#
#	4.4 general kernel
#
options		SOCKETS		# socket support		# <inet, inet6>
options 	DIAGNOSTIC	# diagnostics			# <diagnostic>
options		PROFILE		# kernel profiling		# <profile>
options		SENDFILE	# sendfile					# <sendfile>
options		NETWORKING	# networking layer		# <inet, inet6>
options		CONFIG_FSE	# file system events		# <config_fse>
options		CONFIG_IMAGEBOOT	# local image boot	# <config_imageboot>
options		CONFIG_LOCKERBOOT 	# locker boot 	# <config_lockerboot>
options		CONFIG_MBUF_JUMBO	# jumbo cluster pool	# <config_mbuf_jumbo>
options		CONFIG_IMAGEBOOT_IMG4	# authenticate image with AppleImage4	# <config_imageboot_img4>
options		CONFIG_IMAGEBOOT_CHUNKLIST	# authenticate image with a chunk list	# <config_imageboot_chunklist>

options		CONFIG_WORKQUEUE	# <config_workqueue>
options		CONFIG_WORKLOOP_DEBUG	# <config_workloop_debug>

#
#	4.4 filesystems
#
options		MOCKFS		# Boot from an executable	# <mockfs>
options		FIFO		# fifo support			# <fifo>
options		FDESC		# fdesc_fs support		# <fdesc>
options		DEVFS		# devfs support			# <devfs>
options		ROUTEFS		# routefs support		# <routefs>
options		NULLFS		# nullfs support 		# <nullfs>
options		FS_COMPRESSION	# fs compression	    # <fs_compression>
options		CONFIG_DEV_KMEM	    # /dev/kmem device for reading KVA	# <config_dev_kmem>

#
#	file system features
#
options		QUOTA		# file system quotas		# <quota>
options		NAMEDSTREAMS	# named stream vnop support	# <namedstreams>
options		CONFIG_APPLEDOUBLE # apple double support	# <config_appledouble>
options		CONFIG_VOLFS	# volfs path support (legacy)	# <config_volfs>
options		CONFIG_IMGSRC_ACCESS # source of imageboot dmg	# <config_imgsrc_access>
options		CONFIG_TRIGGERS	# trigger vnodes		# <config_triggers>
options		CONFIG_EXT_RESOLVER # e.g. memberd		# <config_ext_resolver>
options		CONFIG_SEARCHFS	# searchfs syscall support	# <config_searchfs>
options		CONFIG_MNT_SUID # allow suid binaries  # <config_mnt_suid>
options		CONFIG_MNT_ROOTSNAP # allow rooting from snapshot # <config_mnt_rootsnap>
options 	CONFIG_ROSV_STARTUP # allow read-only system volume startup # <config_rosv_startup>
options		CONFIG_FIRMLINKS # support "firmlinks" # <config_firmlinks>
options 	CONFIG_MOUNT_VM # mount VM volume on startup # <config_mount_vm>
options		CONFIG_DATALESS_FILES # support dataless file materialization # <config_dataless_files>

#
# NFS support
#
options		NFSCLIENT	# Be an NFS client		# <nfsclient>
options		NFSSERVER	# Be an NFS server		# <nfsserver>
options		CONFIG_NFS_GSS	# Support NFS GSSAPI		# <config_nfs_gss>
options		CONFIG_NFS4	# Use NFSv4			# <config_nfs4>
options		CONFIG_NETBOOT	# network booting (requires NFSCLIENT) # <config_netboot>

#
# Machine Independent Apple Features
#
profile				# build a profiling kernel	# <profile>

#
# IPv6 Support
#
options         "INET6"         # kernel IPv6 Support           # <inet6>
options         IPV6SEND	# Secure Neighbor Discovery	# <ipv6send>
options         IPSEC           # IP security            	# <ipsec>
options         IPSEC_ESP       # IP security            	# <ipsec>
options         "IPV6FIREWALL"  # IPv6 Firewall Feature   	# <ipv6firewall>
options         "IPV6FIREWALL_DEFAULT_TO_ACCEPT"	#IPv6 Firewall Feature   	# <ipv6firewall>
#options         "IPV6FIREWALL_VERBOSE" 		#IPv6 Firewall Feature   	# <ipv6firewall>

pseudo-device   gif     1				# <gif>
pseudo-device   dummy   2				# <dummy>
pseudo-device   stf 	1 				# <stf>

options			CRYPTO				# <ipsec,crypto>
options			CRYPTO_SHA2			# <crypto_sha2>
options			ENCRYPTED_SWAP			# <encrypted_swap>

options			CONFIG_IMG4			# <config_img4>

options		ZLIB	# inflate/deflate support	# <zlib>
options		ZLIBC	# inflate/deflate support	# <zlibc>

options		IF_BRIDGE				# <if_bridge>

#
#  configurable kernel event related resources
#
options   CONFIG_KN_HASHSIZE=64		# <medium,large,xlarge>
options   CONFIG_KN_HASHSIZE=48		# <small,xsmall>
options   CONFIG_KN_HASHSIZE=20		# <bsmall>

#
#  configurable vfs related resources
#  CONFIG_VNODES - used to pre allocate vnode related resources
#  CONFIG_NC_HASH - name cache hash table allocation
#  CONFIG_VFS_NAMES - name strings
#
#  263168 magic number for medium CONFIG_VNODES is based on memory
#  Number vnodes  is (memsize/64k) + 1024
#  This is the calculation that is used by launchd in tiger
#  we are clipping the max based on 16G
#  ie ((16*1024*1024*1024)/(64 *1024)) + 1024 = 263168;

options   CONFIG_VNODES=263168		# <large,xlarge>
options   CONFIG_VNODES=263168		# <medium>
options   CONFIG_VNODES=10240		# <small>
options   CONFIG_VNODES=750		# <bsmall>

options   CONFIG_NC_HASH=5120		# <large,xlarge>
options   CONFIG_NC_HASH=4096		# <medium>
options   CONFIG_NC_HASH=2048		# <small,xsmall>
options   CONFIG_NC_HASH=1024		# <bsmall>

options   CONFIG_VFS_NAMES=5120		# <large,xlarge>
options   CONFIG_VFS_NAMES=4096		# <medium>
options   CONFIG_VFS_NAMES=3072		# <small,xsmall>
options   CONFIG_VFS_NAMES=2048		# <bsmall>

options   CONFIG_MAX_CLUSTERS=8		# <xlarge,large,medium>
options   CONFIG_MAX_CLUSTERS=4		# <small,xsmall,bsmall>

#
#  configurable options for minumum number of buffers for kernel memory
#
options   CONFIG_MIN_NBUF=256		# <medium,large,xlarge>
options   CONFIG_MIN_NBUF=128		# <small>
options   CONFIG_MIN_NBUF=80		# <xsmall>
options   CONFIG_MIN_NBUF=64		# <bsmall>

options   CONFIG_MIN_NIOBUF=128		# <medium,large,xlarge>
options   CONFIG_MIN_NIOBUF=64		# <xsmall,small>
options   CONFIG_MIN_NIOBUF=32		# <bsmall>

#
# set maximum space used for packet buffers
#
options        CONFIG_NMBCLUSTERS="((1024 * 1024) / MCLBYTES)"	# <large,xlarge>
options        CONFIG_NMBCLUSTERS="((1024 * 512) / MCLBYTES)"	# <medium>
options        CONFIG_NMBCLUSTERS="((1024 * 256) / MCLBYTES)"	# <bsmall,xsmall,small>

#
# Configure size of TCP hash table
#
options CONFIG_TCBHASHSIZE=4096		# <medium,large,xlarge>
options CONFIG_TCBHASHSIZE=128		# <xsmall,small,bsmall>

#
# Configure bandwidth limiting sysctl
#
options CONFIG_ICMP_BANDLIM=250		# <medium,large,xlarge>
options CONFIG_ICMP_BANDLIM=50		# <xsmall,small,bsmall>

#
#  configurable async IO options
#  CONFIG_AIO_MAX - system wide limit of async IO requests.
#  CONFIG_AIO_PROCESS_MAX - process limit of async IO requests.
#  CONFIG_AIO_THREAD_COUNT - number of async IO worker threads created.
#
options   CONFIG_AIO_MAX=360			# <xlarge>
options   CONFIG_AIO_MAX=180			# <large>
options   CONFIG_AIO_MAX=90			# <medium>
options   CONFIG_AIO_MAX=45			# <small>
options   CONFIG_AIO_MAX=20			# <xsmall>
options   CONFIG_AIO_MAX=10			# <bsmall>

options   CONFIG_AIO_PROCESS_MAX=64		# <xlarge>
options   CONFIG_AIO_PROCESS_MAX=32		# <large>
options   CONFIG_AIO_PROCESS_MAX=16		# <medium>
options   CONFIG_AIO_PROCESS_MAX=12		# <small>
options   CONFIG_AIO_PROCESS_MAX=8		# <xsmall>
options   CONFIG_AIO_PROCESS_MAX=4		# <bsmall>

options   CONFIG_AIO_THREAD_COUNT=16		# <xlarge>
options   CONFIG_AIO_THREAD_COUNT=8		# <large>
options   CONFIG_AIO_THREAD_COUNT=4		# <medium>
options   CONFIG_AIO_THREAD_COUNT=3		# <small>
options   CONFIG_AIO_THREAD_COUNT=2		# <xsmall,bsmall>

options   CONFIG_MAXVIFS=32			# <medium,large,xlarge>
options   CONFIG_MAXVIFS=16			# <small,xsmall>
options   CONFIG_MAXVIFS=2			# <bsmall>

options   CONFIG_MFCTBLSIZ=256			# <medium,large,xlarge>
options   CONFIG_MFCTBLSIZ=128			# <small,xsmall>
options   CONFIG_MFCTBLSIZ=16			# <bsmall>

#
# configurable kernel message buffer size
#
options   CONFIG_MSG_BSIZE_REL=4096		# <bsmall,small,xsmall>
options   CONFIG_MSG_BSIZE_DEV=4096		# <bsmall,small,xsmall>
options   CONFIG_MSG_BSIZE_REL=16384		# <medium,large,xlarge>
options   CONFIG_MSG_BSIZE_DEV=131072		# <medium,large,xlarge>
options   CONFIG_MSG_BSIZE=CONFIG_MSG_BSIZE_REL	# <!development,debug>
options   CONFIG_MSG_BSIZE=CONFIG_MSG_BSIZE_DEV	# <development,debug>

#
# maximum size of the per-process Mach IPC table
#
options   CONFIG_IPC_TABLE_ENTRIES_STEPS=64  	# 137898 entries	# <bsmall,small,xsmall>
options   CONFIG_IPC_TABLE_ENTRIES_STEPS=256 	# 300714 entries	# <medium,large,xlarge>

#
#  configurable kernel - use these options to strip strings from panic
#  and printf calls.
#  no_printf_str - saves around 45K of kernel footprint.
#
options   CONFIG_NO_PRINTF_STRINGS		# <no_printf_str>
options   CONFIG_NO_KPRINTF_STRINGS		# <no_kprintf_str>

#
# configurable kernel - general switch to say we are building for an
# embedded device
#
options   CONFIG_EMBEDDED			# <config_embedded>


# support dynamic signing of code
#
options		CONFIG_DYNAMIC_CODE_SIGNING	# <dynamic_codesigning>

# enforce library validation on all processes.
#
options		CONFIG_ENFORCE_LIBRARY_VALIDATION  # <config_library_validation>

#
# code decryption... used on embedded for app protection, DSMOS on desktop
#
options		CONFIG_CODE_DECRYPTION		# <config_code_decryption>

#
# User Content Protection, used on embedded
#
options		CONFIG_PROTECT			# <config_protect>

#allow write-protection of key page
options		CONFIG_KEYPAGE_WP		# <config_keypage_wp>

#
# allow vm_pageout_scan to dynamically adjust its priority based on priorities of waiters
#
options		CONFIG_VPS_DYNAMIC_PRIO		# <vps_dynamic_prio>

#
# enable per-process memory priority tracking
#
options		CONFIG_MEMORYSTATUS		# <memorystatus>

#
# enable jetsam - used on embedded
#
options		CONFIG_JETSAM			# <jetsam>

#
# enable new link table implementation stats/debugging
# (adds mesaureable overhead)
#
options		CONFIG_LTABLE_STATS			# <config_ltable_stats>
options		CONFIG_LTABLE_DEBUG			# <config_ltable_debug>

#
# enable new wait queue implementation stats / debugging
#
options		CONFIG_WAITQ_STATS			# <config_waitq_stats>
options		CONFIG_WAITQ_DEBUG			# <config_waitq_debug>

#
# enable freezing of suspended processes - used on embedded
#
options		CONFIG_FREEZE			# <freeze>

options		CHECK_CS_VALIDATION_BITMAP	# <config_cs_validation_bitmap>

#
# enable detectiion of file cache thrashing - used on platforms with
# dynamic VM compression enabled
#
options		CONFIG_PHANTOM_CACHE		# <phantom_cache>

#
# memory pressure event support
#
options		VM_PRESSURE_EVENTS		# <vm_pressure_events>

options		CONFIG_SECLUDED_MEMORY		# <config_secluded_memory>

options		CONFIG_BACKGROUND_QUEUE		# <config_background_queue>

#
# Ledger features
#
options		CONFIG_LEDGER_INTERVAL_MAX	# <config_ledger_interval_max>

#
# I/O Scheduling
#
options		CONFIG_IOSCHED			# <config_iosched>

#
# Accounting for I/O usage
#
options 	CONFIG_IO_ACCOUNTING 		# <config_io_accounting>

#
# Enable inheritance of importance through specially marked mach ports and for file locks
# For now debug is enabled wherever inheritance is
#
options		IMPORTANCE_INHERITANCE		# <importance_inheritance>
options		IMPORTANCE_TRACE		# <importance_trace>
options		IMPORTANCE_DEBUG		# <importance_debug>

options		CONFIG_TELEMETRY		# <config_telemetry>

options		CONFIG_PROC_UUID_POLICY		# <config_proc_uuid_policy>

#
# ECC data logging
#
options		CONFIG_ECC_LOGGING		# <config_ecc_logging>

#
# Application core dumps
#
options		CONFIG_COREDUMP			# <config_coredump>

#
# Vnode guards
#
options		CONFIG_VNGUARD			# <config_vnguard>

#
#  Ethernet (ARP)
#
pseudo-device	ether				# <networking,inet,inet6>
#
#  Network loopback device
#
pseudo-device	loop				# <networking,inet,inet6>
#
#  UCB pseudo terminal service
#
pseudo-device  pty     512 init pty_init       # <xlarge>
pseudo-device  pty     256 init pty_init       # <large>
pseudo-device  pty     128 init pty_init       # <medium>
pseudo-device  pty      48 init pty_init       # <small>
pseudo-device  pty      16 init pty_init       # <xsmall>
pseudo-device  pty       8 init pty_init       # <bsmall>
#
# Cloning pseudo terminal service
#
pseudo-device	ptmx	1 init ptmx_init

#
# vnode device
#
pseudo-device  vndevice		4       init    vndevice_init   # <development,debug>

#
# memory device
pseudo-device	mdevdevice	1	init	mdevinit

#
#
# packet filter device
#
pseudo-device	bpfilter	4	init	bpf_init		# <networking,inet,inet6>

#
# fsevents device
pseudo-device	fsevents	1	init	fsevents_init	# <config_fse>

pseudo-device	random		1	init	random_init
pseudo-device	dtrace		1	init	dtrace_init	# <config_dtrace>
pseudo-device	helper		1	init	helper_init	# <config_dtrace>
pseudo-device	lockstat	1	init	lockstat_init	# <config_dtrace>
pseudo-device	lockprof	1	init	lockprof_init	# <config_dtrace>
pseudo-device	sdt		1	init	sdt_init	# <config_dtrace>
pseudo-device	systrace	1	init	systrace_init	# <config_dtrace>
pseudo-device	fbt		1	init	fbt_init	# <config_dtrace>
pseudo-device	profile_prvd	1	init	profile_init	# <config_dtrace>


#
# IOKit configuration options
#

options		HIBERNATION	# system hibernation	# <hibernation>
options		IOKITCPP	# C++ implementation	# <iokitcpp>
options		IOKITSTATS	# IOKit statistics	# <iokitstats>
options		IOTRACKING	# IOKit tracking	# <iotracking>
options		CONFIG_SLEEP	#			# <config_sleep>
options   CONFIG_MAX_THREADS=64	# IOConfigThread threads
options         NO_KEXTD                		# <no_kextd>
options         NO_KERNEL_HID           		# <no_kernel_hid>

#
# Libkern configuration options
#

options		LIBKERNCPP		# C++ implementation	# <libkerncpp>
options		CONFIG_BLOCKS		# Blocks runtime	# <config_blocks>
options		CONFIG_KXLD		# kxld/runtime linking of kexts # <config_kxld>
options		CONFIG_KEC_FIPS		# Kernel External Components for FIPS compliance (KEC_FIPS) # <config_kec_fips>

# Note that when adding this config option to an architecture, one MUST
# add the architecture to the preprocessor test at the beginning of
# libkern/kmod/cplus_{start.c,stop.c}.
options         CONFIG_STATIC_CPPINIT   # Static library initializes kext cpp runtime # <config_static_cppinit>

#
# libsa configuration options
#

# CONFIG_KEXT_BASEMENT - alloc post boot loaded kexts after prelinked kexts
#
options		CONFIG_KEXT_BASEMENT		#	# <config_kext_basement>

#
# Persona Management
#
options		CONFIG_PERSONAS	    # Persona management    # <config_personas>
options		PERSONA_DEBUG	    # Persona debugging     # <persona_debug>

#
# security configuration options
#

options		CONFIG_MACF	# Mandatory Access Control Framework	# <config_macf>
options		CONFIG_MACF_SOCKET_SUBSET	# MAC socket subest (no labels)	# <config_macf>
#options	CONFIG_MACF_SOCKET  # MAC socket labels	    # <config_macf>
#options	CONFIG_MACF_NET	    # mbuf	    	    # <config_macf>
#options	CONFIG_MACF_DEBUG   # debug	    	    # <config_macf>

options		CONFIG_AUDIT	    # Kernel auditing	    # <config_audit>

options		CONFIG_ARCADE		# Arcade validation support	# <config_arcade>

#
# MACH configuration options.
#
# TASK_SWAPPER enables code that manages demand for physical memory by
#	forcibly suspending tasks when the demand exceeds supply. This
#	option should be on.
#
options		TASK_SWAPPER	#	<task_swapper_disabled>

#
# This defines configuration options that are normally used only during
# kernel code development and debugging. They add run-time error checks or
# statistics gathering, which will slow down the system
#
##########################################################
#
# MACH_ASSERT controls the assert() and ASSERT() macros, used to verify the
#	consistency of various algorithms in the kernel. The performance impact
#	of this option is significant.
#
options		MACH_ASSERT	#		# <mach_assert>
#
# MACH_DEBUG enables the mach_debug_server, a message interface used to
#	retrieve or control various statistics. This interface may expose data
#	structures that would not normally be allowed outside the kernel, and
#	MUST NOT be enabled on a released configuration.
#	Other options here enable information retrieval for specific subsystems
#
options		MACH_DEBUG	# IPC debugging interface	# <mdebug>
options		MACH_IPC_DEBUG	# Enable IPC debugging calls	# <ipc_debug>
options		MACH_VM_DEBUG	#				# <debug>
#
# MACH_MP_DEBUG control the possible dead locks that may occur by controlling
#	that IPL level has been raised down to SPL0 after some calls to
#	hardclock device driver.
#
options		MACH_MP_DEBUG	#				# <debug>
#
# ZONE_DEBUG keeps track of all zalloc()ed elements to perform further
#	operations on each element.
#
options		ZONE_DEBUG	#		# <debug>
options		CONFIG_ZCACHE 	#Enable per-cpu caching for zones	# <config_zcache>
options		CONFIG_ZLEAKS	# Live zone leak debugging	# <zleaks>

#
# CONFIG_TASK_ZONE_INFO allows per-task zone information to be extracted
# Primarily useful for xnu debug and development.
#
options		CONFIG_TASK_ZONE_INFO		# <task_zone_info>
#
# CONFIG_DEBUGGER_FOR_ZONE_INFO restricts zone info so that it is only
# available when the kernel is being debugged.
#
options		CONFIG_DEBUGGER_FOR_ZONE_INFO	# <debugger_for_zone_info>
#
# MACH_LDEBUG controls the internal consistency checks and
#	data gathering in the locking package. This also enables a debug-only
#	version of simple-locks on uniprocessor machines. The code size and
#	performance impact of this option is significant.
#
options		MACH_LDEBUG	#		# <debug>

#
# configuration option for full, partial, or no kernel debug event tracing
#
options		KDEBUG			# kernel tracing	# <kdebug>
options		IST_KDEBUG		# limited tracing	# <ist_kdebug>
options		NO_KDEBUG       	# no kernel tracing 	# <no_kdebug>

#
# CONFIG_DTRACE enables code needed to support DTrace. Currently this is
# only used for delivery of traps/interrupts to DTrace.
#
options		CONFIG_DTRACE		#		    # <config_dtrace>

options		LOCK_STATS		#		    # <lock_stats>

# kernel performance tracing
options     KPERF                  # <kperf>
options     KPC                    # <kpc>


options     PGO                    # <pgo>

# MACH_COUNTERS enables code that handles various counters in the system.
#
options		MACH_COUNTERS	#			    # <debug>

# DEVELOPMENT define for development builds
options		DEVELOPMENT	# dev kernel	    	    # <development>

# DEBUG kernel
options		DEBUG		# general debugging code    # <debug>
options		CONFIG_NONFATAL_ASSERTS	# non fatal asserts	# <softasserts>

##########################################################
#
# This defines configuration options that are normally used only during
# kernel code development and performance characterization. They add run-time
# statistics gathering, which will slow down the system,
#
##########################################################
#
# MACH_IPC_STATS controls the collection of statistics in the MACH IPC
#	subsystem.
#
#options	MACH_IPC_STATS
#
# MACH_CLUSTER_STATS controls the collection of various statistics concerning
#	the effectiveness and behavior of the clustered pageout and pagein
#	code.
#
#options	MACH_CLUSTER_STATS

options		MACH_BSD	# BSD subsystem on top of Mach	# <mach_bsd>
options         IOKIT		#				# <iokit>

#
#  configurable kernel related resources (CONFIG_THREAD_MAX needs to stay in
#  sync with bsd/conf/MASTER until we fix the config system... todo XXX
#
options   CONFIG_THREAD_MAX=2560		# <medium,large,xlarge>
options   CONFIG_THREAD_MAX=1536		# <small,xsmall>
options   CONFIG_THREAD_MAX=1024		# <bsmall>

options   CONFIG_TASK_MAX=1024			# <medium,large,xlarge>
options   CONFIG_TASK_MAX=768			# <small,>
options   CONFIG_TASK_MAX=512			# <xsmall,bsmall>

#
# Minimum zone map size: 115 MB
#
options   CONFIG_ZONE_MAP_MIN=120586240	# <xsmall,bsmall,small,medium,large,xlarge>

# Sizes must be a power of two for the zhash to
# be able to just mask off bits instead of mod
options	  CONFIG_ZLEAK_ALLOCATION_MAP_NUM=16384 #<medium,large,xlarge>
options	  CONFIG_ZLEAK_ALLOCATION_MAP_NUM=8192	#<small,xsmall,bsmall>
options   CONFIG_ZLEAK_TRACE_MAP_NUM=8192 #<medium,large,xlarge>
options   CONFIG_ZLEAK_TRACE_MAP_NUM=4096 #<small,xsmall,bsmall>

# vc_progress_white - make the progress gear white instead of black
options	  CONFIG_VC_PROGRESS_WHITE		# <vc_progress_white>

#
# Timeshare scheduler implementations
#
options		CONFIG_SCHED_TRADITIONAL	# <config_sched_traditional>
options		CONFIG_SCHED_PROTO		# <config_sched_proto>
options		CONFIG_SCHED_GRRR		# <config_sched_grrr>
options		CONFIG_SCHED_GRRR_CORE		# <config_sched_grrr>
options		CONFIG_SCHED_MULTIQ		# <config_sched_multiq>
options		CONFIG_SCHED_TIMESHARE_CORE	# <config_sched_traditional,config_sched_multiq>
options		CONFIG_CLUTCH			# <config_clutch>

options		CONFIG_SCHED_IDLE_IN_PLACE	# <config_sched_idle_in_place>
options		CONFIG_SCHED_SFI		# <config_sched_sfi>
options		CONFIG_GZALLOC			# <config_gzalloc>
options		CONFIG_SCHED_DEFERRED_AST	# <config_sched_deferred_ast>

# Enable allocation of contiguous physical memory through vm_map_enter_cpm()
options		VM_CPM				# <vm_cpm>

options	    CONFIG_SKIP_PRECISE_USER_KERNEL_TIME    # <config_skip_precise_user_kernel_time>

#
# Switch to disable cpu, wakeup and high memory watermark monitors
#
options 	CONFIG_NOMONITORS			# <config_nomonitors>

options		MACH_KDP	    # KDP		# <mach_kdp>
options		CONFIG_SERIAL_KDP   # KDP over serial	# <config_serial_kdp>
options		CONFIG_KDP_INTERACTIVE_DEBUGGING	# <kdp_interactive_debugging>

#
# Kernel Power On Self Tests
#
options		CONFIG_XNUPOST				# <config_xnupost>

#
# Kernel proc reference instrumentation
#
options PROC_REF_DEBUG					# <proc_ref_debug>

#
# Kernel OS reason debug instrumentation
#
options OS_REASON_DEBUG					# <os_reason_debug>

#
# Kernel Voucher Attr Manager for Activity Trace
#
options 	CONFIG_ATM				# <config_atm>

# Group related tasks together into coalitions
options		CONFIG_COALITIONS			# <config_coalitions>

# Enable support for sysdiagnose notifications
options		CONFIG_SYSDIAGNOSE			# <config_sysdiagnose>

# Configurable Security Restrictions
options		CONFIG_CSR				# <config_csr>

#
# Console options
#
options		SERIAL_CONSOLE	# bi-directional serial over UART
options		VIDEO_CONSOLE	# uni-directional output over framebuffer

#
# Syscall options
#
options		CONFIG_REQUIRES_U32_MUNGING	# incoming U32 argument structures must be munged to match U64	# <config_requires_u32_munging>

#
# copyout() instrumentation
#
options		COPYOUT_SHIM			# Shim for copyout memory analysis via kext #<copyout_shim>

#
# Enable hardware correlation of mach absolute time
# across intel/arm boundary
options		CONFIG_MACH_BRIDGE_SEND_TIME #  # <config_mach_bridge_send_time>
options		CONFIG_MACH_BRIDGE_RECV_TIME #  # <config_mach_bridge_recv_time>

#
# Telemetry for 32-bit process launch
#
options		CONFIG_32BIT_TELEMETRY # # <config_32bit_telemetry>

options		CONFIG_QUIESCE_COUNTER # Support for _COMM_PAGE_CPU_QUIESCENT_COUNTER # <config_quiesce_counter>

#
# Sanitizers
#
options		CONFIG_KASAN		# <config_kasan>
options		CONFIG_UBSAN		# <config_ubsan>
options		CONFIG_KSANCOV		# <config_ksancov>

pseudo-device ksancov 1 init ksancov_init_dev # <config_ksancov>