]> git.saurik.com Git - apple/xnu.git/blame - osfmk/conf/MASTER
xnu-123.5.tar.gz
[apple/xnu.git] / osfmk / conf / MASTER
CommitLineData
1c79356b
A
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#
42# Basic compilation options.
43#
44# The MACH ident is passed to every kernel file compilation as -DMACH.
45# This is useful in order to #ifdef code that is intended to be used in
46# a MACH kernel.
47#
48ident MACH
49##############################################################################
50#
51# MACH configuration options.
52#
53# TASK_SWAPPER enables code that manages demand for physical memory by
54# forcibly suspending tasks when the demand exceeds supply. This
55# option should be on.
56#
57options MACH_KERNEL
58options MACH_PAGEMAP
59options MACH_LOAD
60options MACH_RT
61options THREAD_SWAPPER # <thread_swapper_disabled>
62options TASK_SWAPPER # <task_swapper_disabled>
63pseudo-device test_device 1
64options ADVISORY_PAGEOUT
65##########################################################
66#
67# conf/config.debug
68#
69# This defines configuration options that are normally used only during
70# kernel code development and debugging. They add run-time error checks or
71# statistics gathering, which will slow down the system
72#
73##########################################################
74#
75# MACH_ASSERT controls the assert() and ASSERT() macros, used to verify the
76# consistency of various algorithms in the kernel. The performance impact
77# of this option is significant.
78#
79options MACH_ASSERT # # <debug>
80#
81# MACH_DEBUG enables the mach_debug_server, a message interface used to
82# retrieve or control various statistics. This interface may expose data
83# structures that would not normally be allowed outside the kernel, and
84# MUST NOT be enabled on a released configuration.
85# Other options here enable information retrieval for specific subsystems
86#
87options MACH_DEBUG # #
88#
89options MACH_IPC_DEBUG # # <debug>
90options MACH_VM_DEBUG # # <debug>
91#
92# MACH_MP_DEBUG control the possible dead locks that may occur by controlling
93# that IPL level has been raised down to SPL0 after some calls to
94# hardclock device driver.
95#
96options MACH_MP_DEBUG # # <debug>
97#
98# ZONE_DEBUG keeps track of all zalloc()ed elements to perform further
99# operations on each element.
100#
101options ZONE_DEBUG # # <debug>
102#
103# XPR_DEBUG enables the gathering of data through the XPR macros inserted
104# into various subsystems. This option is normally only enabled for
105# specific performance or behavior studies, as the overhead in both
106# code and data space is large. The data is normally retrieved through
107# the kernel debugger (kdb) or by reading /dev/kmem.
108#
109options XPR_DEBUG # # <debug>
110#
111# MACH_LDEBUG controls the internal consistency checks and
112# data gathering in the locking package. This also enables a debug-only
113# version of simple-locks on uniprocessor machines. The code size and
114# performance impact of this option is significant.
115#
116options MACH_LDEBUG # # <debug>
117
118#
119#
120#
121options KDEBUG # kernel tracing # <kdebug>
122
123#
124# MACH_COUNTERS enables code that handles various counters in the system.
125#
126options MACH_COUNTERS # # <debug>
127#
128# ETAP The Event Trace Analysis Package enables user-level tasks to monitor
129# and analyze kernel events. ETAP supports three modes of tracing:
130#
131# 1. General event tracing: ETAP_EVENT_MONITOR
132# 2. Monitored lock tracing: ETAP_LOCK_MONITOR
133# 3. Cumulative lock tracing: ETAP_LOCK_ACCUMULATE
134#
135# Each of these trace modes are mutually exclusive.
136#
137# CONFIGURING ETAP: To enable the trace package, the ETAP switch
138# along with *ONE* ETAP trace mode is selected. The selected ETAP
139# mode determines the level of instrumentation built into the kernel.
140# Mode 1 configures event probes through-out the system. Modes 2 & 3
141# add instumentation to the kernel lock mechanisms.
142#
143# ETAP (and all its trace modes) is mutually exclusive with the
144# MACH_LDEBUG option. It is assumed that general lock debugging is
145# completed before gathering event information.
146#
147# ETAP functionality is normally only enabled for event profiling and
148# performance studies. Event tracing should not be enabled for release
149# configurations, as the code size and performance impact of these
150# options are significant.
151#
152#
153#options ETAP # ETAP enable
154#options ETAP_EVENT_MONITOR # Monitor events
155#options ETAP_LOCK_MONITOR # Monitor lock behavior
156#options ETAP_LOCK_ACCUMULATE # Collect cumulative lock data
157
158##########################################################
159#
160# This defines configuration options that are normally used only during
161# kernel code development and performance characterization. They add run-time
162# statistics gathering, which will slow down the system,
163#
164##########################################################
165#
166# MACH_PROF enables the profiling server, a message interface used to
167# retrieve profiling statistics.
168#
169#options MACH_PROF # # <mach_prof>
170#
171# MACH_IPC_STATS controls the collection of statistics in the MACH IPC
172# subsystem.
173#
174#options MACH_IPC_STATS
175#
176# MACH_CO_INFO controls the collection of callout statistics. This
177# information is retrieved via a mach_debug message, or though
178# /dev/kmem. The runtime impact of the option is minimal.
179#
180#options MACH_CO_INFO
181#
182# MACH_CLUSTER_STATS controls the collection of various statistics concerning
183# the effectiveness and behavior of the clustered pageout and pagein
184# code.
185#
186#options MACH_CLUSTER_STATS
187#
188# MACH_SCTIMES enables optional code that can be used to measure the
189# execution overhead of performing Mach traps with 1 through 6
190# arguments.
191#
192#options MACH_SCTIMES
193#
194# MACH_COUNTERS enables various code-path statistics. Most of these
195# are accessed through the debugger.
196#
197options MACH_COUNTERS # # <stats>
198