1#
2# Mach Operating System
3# Copyright (c) 1986 Carnegie-Mellon University
4# All rights reserved.	The CMU software License Agreement
5# specifies the terms and conditions for use and redistribution.
6#  
7#######################################################################
8#
9#	Master machine independent configuration file.
10#
11#	Specific configuration files are created based on this and
12#	the machine specific master file using the doconf script.
13#
14#	Any changes to the master configuration files will affect all
15#	other configuration files based upon it.
16#
17#######################################################################
18#
19#	To build a configuration, execute "doconf <configuration>."
20#	Configurations are specified in the "Configurations:" section
21#	of the MASTER and MASTER.* files as follows:
22#
23#	<configuration> = [ <attribute0> <attribute1> ... <attributeN> ]
24#
25#	Lines in the MASTER and MASTER.* files are selected based on
26#	the attribute selector list, found in a comment at the end of
27#	the line.  This is a list of attributes separated by commas.
28#	The "!" operator selects the line if none of the attributes are
29#	specified.
30#
31#	For example:
32#
33#	<foo,bar>	selects a line if "foo" or "bar" are specified.
34#	<!foo,bar>	selects a line if neither "foo" nor "bar" is
35#			specified.
36#
37#	Lines with no attributes specified are selected for all
38#	configurations.
39#
40#######################################################################
41#  SYSTEM SIZE CONFIGURATION (select exactly one)
42#
43#	xlarge = extra large scale system configuration
44#	large  = large scale system configuration
45#	medium = medium scale system configuration
46#	small  = small scale system configuration
47#	xsmall = extra small scale system configuration
48#	bsmall = special extra small scale system configuration 
49#
50#######################################################################
51#
52# Basic compilation options.
53#
54# The MACH ident is passed to every kernel file compilation as -DMACH.
55#	This is useful in order to #ifdef code that is intended to be used in
56#	a MACH kernel.
57#
58ident		MACH
59##############################################################################
60#
61# MACH configuration options.
62#
63# TASK_SWAPPER enables code that manages demand for physical memory by
64#	forcibly suspending tasks when the demand exceeds supply. This
65#	option should be on.
66#
67options		MACH_KERNEL
68options		MACH_PAGEMAP	#	<mach_pagemap>
69options		MACH_LOAD
70options		MACH_RT
71options		TASK_SWAPPER	#	<task_swapper_disabled>
72pseudo-device	test_device	1
73options		ADVISORY_PAGEOUT
74##########################################################
75#
76# conf/config.debug
77#
78# This defines configuration options that are normally used only during
79# kernel code development and debugging. They add run-time error checks or
80# statistics gathering, which will slow down the system
81#
82##########################################################
83#
84# MACH_ASSERT controls the assert() and ASSERT() macros, used to verify the
85#	consistency of various algorithms in the kernel. The performance impact
86#	of this option is significant.
87#
88options		MACH_ASSERT	#		# <mach_assert>
89#
90# MACH_DEBUG enables the mach_debug_server, a message interface used to
91#	retrieve or control various statistics. This interface may expose data
92#	structures that would not normally be allowed outside the kernel, and
93#	MUST NOT be enabled on a released configuration.
94#	Other options here enable information retrieval for specific subsystems
95#
96options		MACH_DEBUG	#		#
97options		MACH_IPC_DEBUG	#		#
98#
99options		MACH_VM_DEBUG	#		# <debug>
100#
101# MACH_MP_DEBUG control the possible dead locks that may occur by controlling
102#	that IPL level has been raised down to SPL0 after some calls to
103#	hardclock device driver.
104#
105options		MACH_MP_DEBUG	#		# <debug>
106#
107# ZONE_DEBUG keeps track of all zalloc()ed elements to perform further
108#	operations on each element.
109#
110options		ZONE_DEBUG	#		# <debug>
111
112options		CONFIG_ZLEAKS	# Live zone leak debugging	# <zleaks>
113
114#
115options		ZONE_ALIAS_ADDR	#		# <zone_alias_addr>
116
117
118#
119# CONFIG_TASK_ZONE_INFO allows per-task zone information to be extracted
120# Primarily useful for xnu debug and development.
121#
122options		CONFIG_TASK_ZONE_INFO		# <task_zone_info>
123#
124# CONFIG_DEBUGGER_FOR_ZONE_INFO restricts zone info so that it is only
125# available when the kernel is being debugged.
126#
127options		CONFIG_DEBUGGER_FOR_ZONE_INFO	# <debugger_for_zone_info>
128# 
129# XPR_DEBUG enables the gathering of data through the XPR macros inserted
130#	into various subsystems. This option is normally only enabled for
131#	specific performance or behavior studies, as the overhead in both
132#	code and data space is large. The data is normally retrieved through
133#	the kernel debugger (kdb) or by reading /dev/kmem.
134#	
135options		XPR_DEBUG	#		# <debug>
136# 
137# MACH_LDEBUG controls the internal consistency checks and
138#	data gathering in the locking package. This also enables a debug-only
139#	version of simple-locks on uniprocessor machines. The code size and
140#	performance impact of this option is significant.
141# 
142options		MACH_LDEBUG	#		# <debug>
143
144#
145# configuration option for full, partial, or no kernel debug event tracing
146#
147options		KDEBUG			# kernel tracing	# <kdebug>
148options		IST_KDEBUG		# limited tracing	# <ist_kdebug>
149options		NO_KDEBUG       # no kernel tracing # <no_kdebug>
150
151#
152# CONFIG_DTRACE enables code needed to support DTrace. Currently this is
153# only used for delivery of traps/interrupts to DTrace.
154#
155options		CONFIG_DTRACE	#		# <config_dtrace>
156
157# MACH_COUNTERS enables code that handles various counters in the system.
158# 
159options		MACH_COUNTERS	#		# <debug>
160
161# DEVELOPMENT define for development builds
162options		DEVELOPMENT		# dev kernel		# <development>
163
164##########################################################
165#
166# This defines configuration options that are normally used only during
167# kernel code development and performance characterization. They add run-time
168# statistics gathering, which will slow down the system,
169#
170##########################################################
171#
172# MACH_IPC_STATS controls the collection of statistics in the MACH IPC
173#	subsystem.
174#
175#options	MACH_IPC_STATS
176#
177# MACH_CO_INFO controls the collection of callout statistics. This
178#	information is retrieved via a mach_debug message, or though
179#	/dev/kmem. The runtime impact of the option is minimal.
180#
181#options	MACH_CO_INFO
182#
183# MACH_CLUSTER_STATS controls the collection of various statistics concerning
184#	the effectiveness and behavior of the clustered pageout and pagein
185#	code.
186#
187#options	MACH_CLUSTER_STATS
188#
189# MACH_SCTIMES enables optional code that can be used to measure the
190#	execution overhead of performing Mach traps with 1 through 6
191#	arguments.
192#
193#options	MACH_SCTIMES
194#
195# MACH_COUNTERS enables various code-path statistics. Most of these
196#	are accessed through the debugger.
197#
198options		MACH_COUNTERS		#		# <stats>
199
200#
201#  configuration option for including cypto code
202#
203options		CRYPTO                  # <crypto>
204
205# HIBERNATION - include hibernation code
206#
207options		HIBERNATION		#		# <hibernation>
208
209# CONFIG_SLEEP - include sleep power state code
210#
211options		CONFIG_SLEEP		#		# <config_sleep>
212
213# CONFIG_KEXT_BASEMENT - alloc post boot loaded kexts after prelinked kexts
214#
215options		CONFIG_KEXT_BASEMENT		#		# <config_kext_basement>
216
217
218#
219#  configurable kernel related resources (CONFIG_THREAD_MAX needs to stay in 
220#  sync with bsd/conf/MASTER until we fix the config system... todo XXX
221#
222options   CONFIG_THREAD_MAX=2560		# <medium,large,xlarge>
223options   CONFIG_THREAD_MAX=1536		# <small,xsmall>
224options   CONFIG_THREAD_MAX=1024		# <bsmall>
225
226options   CONFIG_TASK_MAX=1024			# <medium,large,xlarge>
227options   CONFIG_TASK_MAX=768			# <small,xsmall>
228options   CONFIG_TASK_MAX=512			# <bsmall>
229
230options   CONFIG_ZONE_MAP_MIN=12582912	# <medium,large,xlarge>
231options   CONFIG_ZONE_MAP_MIN=6291456	# <small,xsmall>
232options   CONFIG_ZONE_MAP_MIN=1048576	# <bsmall>
233
234# Sizes must be a power of two for the zhash to 
235# be able to just mask off bits instead of mod 
236options	  CONFIG_ZLEAK_ALLOCATION_MAP_NUM=16384 #<medium,large,xlarge>
237options	  CONFIG_ZLEAK_ALLOCATION_MAP_NUM=8192	#<small,xsmall,bsmall>
238options   CONFIG_ZLEAK_TRACE_MAP_NUM=8192 #<medium,large,xlarge>
239options   CONFIG_ZLEAK_TRACE_MAP_NUM=4096 #<small,xsmall,bsmall>
240
241#
242#  configurable kernel - use these options to strip strings from panic
243#  and printf calls.
244#  no_panic_str - saves around 50K of kernel footprint.
245#  no_printf_str - saves around 45K of kernel footprint.
246#
247options   CONFIG_NO_PANIC_STRINGS		# <no_panic_str>
248options   CONFIG_NO_PRINTF_STRINGS		# <no_printf_str>
249options   CONFIG_NO_KPRINTF_STRINGS		# <no_kprintf_str>
250
251# support dynamic signing of code
252#
253options		CONFIG_DYNAMIC_CODE_SIGNING	# <dynamic_codesigning>
254
255# vc_progress_white - make the progress gear white instead of black
256options	  CONFIG_VC_PROGRESS_WHITE		# <vc_progress_white>
257
258# secure_kernel - secure kernel from user programs
259options		SECURE_KERNEL		# <secure_kernel>
260
261#
262# Context switched counters 
263#
264options		CONFIG_COUNTERS			# <config_counters>
265
266#
267# Timeshare scheduler implementations
268#
269options		CONFIG_SCHED_TRADITIONAL	# <config_sched_traditional>
270options		CONFIG_SCHED_PROTO		# <config_sched_proto>
271options		CONFIG_SCHED_GRRR		# <config_sched_grrr>
272options		CONFIG_SCHED_FIXEDPRIORITY	# <config_sched_fixedpriority>
273options		CONFIG_SCHED_GRRR_CORE		# <config_sched_grrr,config_sched_fixedpriority>
274
275options		CONFIG_SCHED_IDLE_IN_PLACE		# <config_sched_idle_in_place>
276options		CONFIG_GZALLOC			# <config_gzalloc>
277#
278# enable per-process memory priority tracking
279#
280options		CONFIG_MEMORYSTATUS				# <memorystatus>
281
282#
283# enable jetsam - used on embedded
284#
285options		CONFIG_JETSAM				# <jetsam>
286
287#
288# enable freezing of suspended processes - used on embedded
289#
290options		CONFIG_FREEZE					# <freeze>
291
292options		CHECK_CS_VALIDATION_BITMAP	# <config_cs_validation_bitmap>
293
294#
295# Enable dispatch of memory pressure events from the vm_pageout_garbage_collect thread
296#
297options		VM_PRESSURE_EVENTS		# <vm_pressure_events>
298
299#
300# Enable inheritance of importance through specially marked mach ports and for file locks
301# For now debug is enabled wherever inheritance is
302#
303options		IMPORTANCE_INHERITANCE		# <importance_inheritance>
304options		IMPORTANCE_DEBUG		# <importance_inheritance>
305
306# Enable allocation of contiguous physical memory through vm_map_enter_cpm()
307options		VM_CPM		# <vm_cpm>
308
309options	    CONFIG_SKIP_PRECISE_USER_KERNEL_TIME	# <config_skip_precise_user_kernel_time>
310
311options		CONFIG_TELEMETRY			# <config_telemetry>
312
313#
314# Switch to disable cpu, wakeup and high memory watermark monitors
315#
316options 	CONFIG_NOMONITORS				# <config_nomonitors>
317
318#
319# In-kernel tests
320#
321options         CONFIG_IN_KERNEL_TESTS                  # <in_kernel_tests>
322
323