]> git.saurik.com Git - apple/xnu.git/blob - osfmk/conf/MASTER
xnu-2422.1.72.tar.gz
[apple/xnu.git] / osfmk / conf / MASTER
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 #
58 ident 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 #
67 options MACH_KERNEL
68 options MACH_PAGEMAP # <mach_pagemap>
69 options MACH_LOAD
70 options MACH_RT
71 options TASK_SWAPPER # <task_swapper_disabled>
72 pseudo-device test_device 1
73 options 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 #
88 options 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 #
96 options MACH_DEBUG # #
97 options MACH_IPC_DEBUG # #
98 #
99 options 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 #
105 options MACH_MP_DEBUG # # <debug>
106 #
107 # ZONE_DEBUG keeps track of all zalloc()ed elements to perform further
108 # operations on each element.
109 #
110 options ZONE_DEBUG # # <debug>
111
112 options CONFIG_ZLEAKS # Live zone leak debugging # <zleaks>
113
114 #
115 options 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 #
122 options 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 #
127 options 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 #
135 options 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 #
142 options MACH_LDEBUG # # <debug>
143
144 #
145 # configuration option for full, partial, or no kernel debug event tracing
146 #
147 options KDEBUG # kernel tracing # <kdebug>
148 options IST_KDEBUG # limited tracing # <ist_kdebug>
149 options 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 #
155 options CONFIG_DTRACE # # <config_dtrace>
156
157 # MACH_COUNTERS enables code that handles various counters in the system.
158 #
159 options MACH_COUNTERS # # <debug>
160
161 # DEVELOPMENT define for development builds
162 options 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 #
198 options MACH_COUNTERS # # <stats>
199
200 #
201 # configuration option for including cypto code
202 #
203 options CRYPTO # <crypto>
204
205 # HIBERNATION - include hibernation code
206 #
207 options HIBERNATION # # <hibernation>
208
209 # CONFIG_SLEEP - include sleep power state code
210 #
211 options CONFIG_SLEEP # # <config_sleep>
212
213 # CONFIG_KEXT_BASEMENT - alloc post boot loaded kexts after prelinked kexts
214 #
215 options 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 #
222 options CONFIG_THREAD_MAX=2560 # <medium,large,xlarge>
223 options CONFIG_THREAD_MAX=1536 # <small,xsmall>
224 options CONFIG_THREAD_MAX=1024 # <bsmall>
225
226 options CONFIG_TASK_MAX=1024 # <medium,large,xlarge>
227 options CONFIG_TASK_MAX=768 # <small,xsmall>
228 options CONFIG_TASK_MAX=512 # <bsmall>
229
230 options CONFIG_ZONE_MAP_MIN=12582912 # <medium,large,xlarge>
231 options CONFIG_ZONE_MAP_MIN=6291456 # <small,xsmall>
232 options 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
236 options CONFIG_ZLEAK_ALLOCATION_MAP_NUM=16384 #<medium,large,xlarge>
237 options CONFIG_ZLEAK_ALLOCATION_MAP_NUM=8192 #<small,xsmall,bsmall>
238 options CONFIG_ZLEAK_TRACE_MAP_NUM=8192 #<medium,large,xlarge>
239 options 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 #
247 options CONFIG_NO_PANIC_STRINGS # <no_panic_str>
248 options CONFIG_NO_PRINTF_STRINGS # <no_printf_str>
249 options CONFIG_NO_KPRINTF_STRINGS # <no_kprintf_str>
250
251 # support dynamic signing of code
252 #
253 options CONFIG_DYNAMIC_CODE_SIGNING # <dynamic_codesigning>
254
255 # vc_progress_white - make the progress gear white instead of black
256 options CONFIG_VC_PROGRESS_WHITE # <vc_progress_white>
257
258 # secure_kernel - secure kernel from user programs
259 options SECURE_KERNEL # <secure_kernel>
260
261 #
262 # Context switched counters
263 #
264 options CONFIG_COUNTERS # <config_counters>
265
266 #
267 # Timeshare scheduler implementations
268 #
269 options CONFIG_SCHED_TRADITIONAL # <config_sched_traditional>
270 options CONFIG_SCHED_PROTO # <config_sched_proto>
271 options CONFIG_SCHED_GRRR # <config_sched_grrr>
272 options CONFIG_SCHED_FIXEDPRIORITY # <config_sched_fixedpriority>
273 options CONFIG_SCHED_GRRR_CORE # <config_sched_grrr,config_sched_fixedpriority>
274
275 options CONFIG_SCHED_IDLE_IN_PLACE # <config_sched_idle_in_place>
276 options CONFIG_GZALLOC # <config_gzalloc>
277 #
278 # enable per-process memory priority tracking
279 #
280 options CONFIG_MEMORYSTATUS # <memorystatus>
281
282 #
283 # enable jetsam - used on embedded
284 #
285 options CONFIG_JETSAM # <jetsam>
286
287 #
288 # enable freezing of suspended processes - used on embedded
289 #
290 options CONFIG_FREEZE # <freeze>
291
292 options 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 #
297 options 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 #
303 options IMPORTANCE_INHERITANCE # <importance_inheritance>
304 options IMPORTANCE_DEBUG # <importance_inheritance>
305
306 # Enable allocation of contiguous physical memory through vm_map_enter_cpm()
307 options VM_CPM # <vm_cpm>
308
309 options CONFIG_SKIP_PRECISE_USER_KERNEL_TIME # <config_skip_precise_user_kernel_time>
310
311 options CONFIG_TELEMETRY # <config_telemetry>
312
313 #
314 # Switch to disable cpu, wakeup and high memory watermark monitors
315 #
316 options CONFIG_NOMONITORS # <config_nomonitors>
317
318 #
319 # In-kernel tests
320 #
321 options CONFIG_IN_KERNEL_TESTS # <in_kernel_tests>
322