summaryrefslogtreecommitdiff
path: root/static/netbsd/man4/options.4 3.html
blob: 6871c04a81ee7f17ea04a826a239bc6557348d9e (plain)
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
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
<table class="head">
  <tr>
    <td class="head-ltitle">OPTIONS(4)</td>
    <td class="head-vol">Device Drivers Manual</td>
    <td class="head-rtitle">OPTIONS(4)</td>
  </tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">options</code> &#x2014;
    <span class="Nd">Miscellaneous kernel configuration options</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp"><code class="Cd">cinclude ...</code>
  <br/>
  <code class="Cd">config ...</code>
  <br/>
  <code class="Cd">[no] file-system ...</code>
  <br/>
  <code class="Cd">ident ...</code>
  <br/>
  <code class="Cd">include ...</code>
  <br/>
  <code class="Cd">[no] makeoptions ...</code>
  <br/>
  <code class="Cd">maxusers ...</code>
  <br/>
  <code class="Cd">[no] options ...</code>
  <br/>
  <code class="Cd">[no] pseudo-device ...</code></p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">This manual page describes a number of miscellaneous kernel
    configuration options that may be specified in a kernel config file. See
    <a class="Xr">config(1)</a> and <a class="Xr">config(5)</a> for information
    on how to configure and build kernels.</p>
<p class="Pp">The <var class="Ar">no</var> form removes a previously specified
    option.</p>
<section class="Ss">
<h2 class="Ss" id="Keywords"><a class="permalink" href="#Keywords">Keywords</a></h2>
<p class="Pp">The following keywords are recognized in a kernel configuration
    file:</p>
<dl class="Bl-ohang">
  <dt id="cinclude"><a class="permalink" href="#cinclude"><b class="Sy">cinclude</b></a>
    &quot;<var class="Ar">filename</var>&quot;</dt>
  <dd>Conditionally includes another kernel configuration file whose name is
      <var class="Ar">filename</var>, which may be double-quoted and may be an
      explicit path or relative to the kernel source directory. Failure to open
      the named file is ignored.</dd>
  <dt id="config"><a class="permalink" href="#config"><b class="Sy">config</b></a>
    <var class="Ar">exec_name</var> <span class="No">root on</span>
    <var class="Ar">rootdev</var> [type <var class="Ar">fstype</var>] [dumps on
    <var class="Ar">dumpdev</var>]</dt>
  <dd>Defines a configuration whose kernel executable is named
      <var class="Ar">exec_name</var>, normally &#x201C;netbsd&#x201D;, with its
      root file system of type <var class="Ar">fstype</var> on the device
      <var class="Ar">rootdev</var>, and optionally specifying the location of
      kernel core dumps on the device <var class="Ar">dumpdev</var>.
      <var class="Ar">dev</var> or <var class="Ar">dumpdev</var> and
      <var class="Ar">fstype</var> may be specified as &#x201C;?&#x201D;, which
      is a wild card. The root <var class="Ar">fstype</var> and
      <var class="Ar">dumpdev</var> are optional and assumed to be wild carded
      if they are not specified.</dd>
  <dt><var class="Ar">device_instance</var> <span class="No">at</span>
    <var class="Ar">attachment</var> [<var class="Ar">locators value</var>
    [...]] [flags <var class="Ar">value</var>]</dt>
  <dd>Define an instance of the device driver
      <var class="Ar">device_instance</var> that attaches to the bus or device
      named <var class="Ar">attachment</var>. An
      <var class="Ar">attachment</var> may require additional information on
      where the device can be found, such as an address, channel, function,
      offset, and/or slot, referred to as <var class="Ar">locators</var>, whose
      <var class="Ar">value</var> often may be a wild card, &#x201C;?&#x201D;.
      Some device drivers have one or more <var class="Ar">flags</var> that can
      be adjusted to affect the way they operate.</dd>
  <dt id="file-system"><a class="permalink" href="#file-system"><b class="Sy">file-system</b></a>
    <var class="Ar">fs_name</var> [, <var class="Ar">fs_name</var> [...]]</dt>
  <dd>Include support for the file-system <var class="Ar">fs_name</var>.</dd>
  <dt id="ident"><a class="permalink" href="#ident"><b class="Sy">ident</b></a>
    &quot;<var class="Ar">string</var>&quot;</dt>
  <dd>Sets the kernel identification string to
    <var class="Ar">string</var>.</dd>
  <dt id="include"><a class="permalink" href="#include"><b class="Sy">include</b></a>
    &quot;<var class="Ar">filename</var>&quot;</dt>
  <dd>Functions the same as <var class="Ar">cinclude</var>, except failure to
      open <var class="Ar">filename</var> produces a fatal error.</dd>
  <dt id="makeoptions"><a class="permalink" href="#makeoptions"><b class="Sy">makeoptions</b></a>
    <var class="Ar">name=value</var></dt>
  <dd>Defines a <a class="Xr">make(1)</a> macro <var class="Ar">name</var> with
      the value <var class="Ar">value</var> in the kernel Makefile.</dd>
  <dt id="maxusers"><a class="permalink" href="#maxusers"><b class="Sy">maxusers</b></a>
    <var class="Ar">integer</var></dt>
  <dd>Set the maxusers variable in the kernel.</dd>
  <dt id="no"><a class="permalink" href="#no"><b class="Sy">no</b></a>
    <var class="Ar">keyword</var> <var class="Ar">name</var>
    [<var class="Ar">arguments</var> [...]]</dt>
  <dd>For the <a class="Xr">config(1)</a> <var class="Ar">keywords</var>
      file-system, makeoptions, options, and pseudo-device,
      <var class="Ar">no</var> removes the file-system, makeoption, options, or
      pseudo-device, <var class="Ar">name</var>. This is useful when a kernel
      configuration file includes another which has undesired options.
    <p class="Pp">For example, a local configuration file that wanted the
        kitchen sink, but not COMPAT_09 or bridging, might be:</p>
    <div class="Bd Pp Bd-indent Li">
    <pre>include &quot;arch/i386/conf/GENERIC&quot;
no options COMPAT_09
no pseudo-device bridge</pre>
    </div>
  </dd>
  <dt id="options"><a class="permalink" href="#options"><b class="Sy">options</b></a>
    <var class="Ar">option_name</var> [, <var class="Ar">option_name=value</var>
    [...]]</dt>
  <dd>Specifies (or sets) the option, or comma-separated list of options,
      <var class="Ar">option_name</var>. Some options expect to be assigned a
      value, which may be an integer, a double-quoted word, a bare word, or an
      empty string (&quot;&quot;). Note that those are eventually handled by the
      C compiler, so the rules of that language apply.
    <p class="Pp" id="Note"><a class="permalink" href="#Note"><i class="Em">Note</i></a>:
        Options that are not defined by device definition files are passed to
        the compile process as <code class="Fl">-D</code> flags to the C
        compiler.</p>
  </dd>
  <dt id="pseudo-device"><a class="permalink" href="#pseudo-device"><b class="Sy">pseudo-device</b></a>
    <var class="Ar">name</var> [<var class="Ar">N</var>]</dt>
  <dd>Includes support for the pseudo-device <var class="Ar">name</var>. Some
      pseudo-devices can have multiple or <var class="Ar">N</var>
    instances.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Compatibility_Options"><a class="permalink" href="#Compatibility_Options">Compatibility
  Options</a></h2>
<p class="Pp">Note that compatibility options for older
    <span class="Ux">NetBSD</span> releases includes support for newer releases
    as well. This means that typically only one of these is necessary, with the
    <code class="Cd">COMPAT_09</code> option enabling all
    <span class="Ux">NetBSD</span> compatibility. This does not include the
    <code class="Cd">COMPAT_43</code> or <code class="Cd">COMPAT_44</code>
    options.</p>
<dl class="Bl-ohang">
  <dt><code class="Cd">options COMPAT_09</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 0.9</span>. This
      enables support for 16-bit user, group, and process IDs (following
      revisions support 32-bit identifiers). It also allows the use of the
      deprecated <a class="Xr">getdomainname(3)</a>,
      <a class="Xr">setdomainname(3)</a>, and <a class="Xr">uname(3)</a>
      syscalls. This option also allows using numeric file system identifiers
      rather than strings. Post <span class="Ux">NetBSD 0.9</span> versions use
      string identifiers.</dd>
  <dt><code class="Cd">options COMPAT_10</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 1.0</span>. This
      option allows the use of the file system name of &#x201C;ufs&#x201D; as an
      alias for &#x201C;ffs&#x201D;. The name &#x201C;ffs&#x201D; should be used
      post 1.0 in <span class="Pa">/etc/fstab</span> and other files. It also
      adds old syscalls for the <span class="Ux">AT&amp;T System&#x00A0;V
      UNIX</span> shared memory interface. This was changed post 1.0 to work on
      64-bit architectures. This option also enables &#x201C;sgtty&#x201D;
      compatibility, without which programs using the old interface produce an
      &#x201C;inappropriate ioctl&#x201D; error, and
      <span class="Pa">/dev/io</span> only works when this option is set in the
      kernel, see <a class="Xr">io(4)</a> on ports that support it.</dd>
  <dt id="COMPAT_11"><code class="Cd">options COMPAT_11</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 1.1</span>. This
      allows binaries running on the i386 port to gain direct access to the io
      ports by opening <span class="Pa">/dev/io</span> read/write. This
      functionality was replaced by <a class="Xr">i386_iopl(2)</a> post 1.1. On
      the Atari port, the location of the disk label was moved after 1.1. When
      the <a class="permalink" href="#COMPAT_11"><i class="Em">COMPAT_11</i></a>
      option is set, the kernel will read (pre) 1.1 style disk labels as a last
      resort. When a disk label is re-written, the old style label will be
      replaced with a post 1.1 style label. This also enables the
      <i class="Em">EXEC_ELF_NOTELESS</i> option.</dd>
  <dt id="reboot"><code class="Cd">options COMPAT_12</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 1.2</span>. This
      allows the use of old syscalls for
      <a class="permalink" href="#reboot"><code class="Fn">reboot</code></a>()
      and
      <a class="permalink" href="#swapon"><code class="Fn" id="swapon">swapon</code></a>().
      The syscall numbers were changed post 1.2 to add functionality to the
      <a class="Xr">reboot(2)</a> syscall, and the new
      <a class="Xr">swapctl(2)</a> interface was introduced. This also enables
      the <i class="Em">EXEC_ELF_NOTELESS</i> option.</dd>
  <dt id="sigaltstack"><code class="Cd">options COMPAT_13</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 1.3</span>. This
      allows the use of old syscalls for
      <a class="permalink" href="#sigaltstack"><code class="Fn">sigaltstack</code></a>(),
      and also enables the old <a class="Xr">swapctl(2)</a> command
      <code class="Dv">SWAP_STATS</code> (now called
      <code class="Dv">SWAP_OSTATS</code>), which does not include the
      <var class="Fa">se_path</var> member of <var class="Va">struct
      swapent</var>.</dd>
  <dt><code class="Cd">options COMPAT_14</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 1.4</span>. This
      allows some old <a class="Xr">ioctl(2)</a> on <a class="Xr">wscons(4)</a>
      to be performed, and allows the <code class="Dv">NFSSVC_BIOD</code> mode
      of the <a class="Xr">nfssvc(2)</a> system call to be used for
      compatibility with the deprecated nfsiod program.</dd>
  <dt><code class="Cd">options COMPAT_15</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 1.5</span>. Since
      there were no API changes from <span class="Ux">NetBSD 1.5</span> and
      <span class="Ux">NetBSD 1.6</span>, this option does nothing.</dd>
  <dt><code class="Cd">options COMPAT_16</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 1.6</span>. This
      allows the use of old signal trampoline code which has been deprecated
      with the addition of <a class="Xr">siginfo(2)</a>.</dd>
  <dt id="statfs"><code class="Cd">options COMPAT_20</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 2.0</span>. This
      allows the use of old syscalls for
      <a class="permalink" href="#statfs"><code class="Fn">statfs</code></a>(),
      <a class="permalink" href="#fstatfs"><code class="Fn" id="fstatfs">fstatfs</code></a>(),
      <a class="permalink" href="#getfsstat"><code class="Fn" id="getfsstat">getfsstat</code></a>()
      and
      <a class="permalink" href="#fhstatfs"><code class="Fn" id="fhstatfs">fhstatfs</code></a>(),
      which have been deprecated with the addition of the
      <a class="Xr">statvfs(2)</a>, <a class="Xr">fstatvfs(2)</a>,
      <a class="Xr">getvfsstat(2)</a> and <a class="Xr">fhstatvfs(2)</a> system
      calls.</dd>
  <dt><code class="Cd">options COMPAT_30</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 3.0</span>. See
      <a class="Xr">compat_30(8)</a> for details about the changes made after
      the <span class="Ux">NetBSD 3.0</span> release.</dd>
  <dt><code class="Cd">options COMPAT_40</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 4.0</span>. This
      allows the use of old <a class="Xr">ptrace(2)</a> calls for the SH3
      platform. It also enables the old <a class="Xr">mount(2)</a> system call
      that did not include the data length parameter. The power_event_t
      structure's pev_switch is filled in.</dd>
  <dt><code class="Cd">options COMPAT_43</code></dt>
  <dd>Enables compatibility with <span class="Ux">4.3BSD</span>. This adds an
      old syscall for <a class="Xr">lseek(2)</a>. It also adds the ioctls for
      <code class="Dv">TIOCGETP</code> and <code class="Dv">TIOCSETP</code>. The
      return values for <a class="Xr">getpid(2)</a>,
      <a class="Xr">getgid(2)</a>, and <a class="Xr">getuid(2)</a> syscalls are
      modified as well, to return the parent's PID and UID as well as the
      current process's. It also enables the deprecated
      <code class="Dv">NTTYDISC</code> terminal line discipline. It also
      provides backwards compatibility with &#x201C;old&#x201D;
      SIOC[GS]IF{ADDR,DSTADDR,BRDADDR,NETMASK} interface ioctls, including
      binary compatibility with code written before the introduction of the
      sa_len field in sockaddrs. It also enables support for some older pre
      <span class="Ux">4.4BSD</span> socket calls.</dd>
  <dt><code class="Cd">options COMPAT_50</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 5.0</span>. This
      enables support for the old <var class="Ft">time_t</var> and
      <var class="Ft">dev_t</var> types as 32 bit, and all the associated kernel
      interface changes. It also enables old <a class="Xr">gpio(4)</a> and
      <a class="Xr">rnd(4)</a> interfaces.</dd>
  <dt><code class="Cd">options COMPAT_60</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 6.0</span>. This
      provides old <a class="Xr">ccd(4)</a> interfaces, enables support for old
      <a class="Xr">cpuctl(8)</a> microcode interfaces, and support for the old
      <var class="Ft">ptmget</var> structure.</dd>
  <dt><code class="Cd">options COMPAT_70</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 7.0</span>. This
      provides support for old <a class="Xr">route(4)</a> interfaces.</dd>
  <dt><code class="Cd">options COMPAT_80</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 8.0</span>.</dd>
  <dt><code class="Cd">options COMPAT_90</code></dt>
  <dd>Enable binary compatibility with <span class="Ux">NetBSD 9.0</span>.</dd>
  <dt><code class="Cd">options COMPAT_BSDPTY</code></dt>
  <dd>This option is currently on by default and enables the pty multiplexer
      <a class="Xr">ptm(4)</a> and <a class="Xr">ptmx(4)</a> to find and use
      ptys named <span class="Pa">/dev/ptyXX</span> (master) and
      <span class="Pa">/dev/ttyXX</span> (slave). Eventually this option will
      become optional as ptyfs based pseudo-ttys become the default, see
      <a class="Xr">mount_ptyfs(8)</a>.</dd>
  <dt><code class="Cd">options COMPAT_LINUX</code></dt>
  <dd>On those architectures that support it, this enables binary compatibility
      with Linux ELF and <a class="Xr">a.out(5)</a> applications built for the
      same architecture. This currently includes the alpha, arm, i386, m68k,
      mips, powerpc and x86_64 ports.</dd>
  <dt><code class="Cd">options COMPAT_LINUX32</code></dt>
  <dd>On those 64 bit architectures that support it, this enables binary
      compatibility with 32 bit Linux binaries. For now this is limited to
      running i386 ELF Linux binaries on amd64.</dd>
  <dt id="COMPAT_NETBSD32"><code class="Cd">options COMPAT_SUNOS</code></dt>
  <dd>On those architectures that support it, this enables binary compatibility
      with SunOS 4.1 applications built for the same architecture. This
      currently includes the sparc, sparc64 and most or all m68k ports. Note
      that the sparc64 requires the
      <a class="permalink" href="#COMPAT_NETBSD32"><i class="Em">COMPAT_NETBSD32</i></a>
      option for 64-bit kernels, in addition to this option.</dd>
  <dt><code class="Cd">options COMPAT_ULTRIX</code></dt>
  <dd>On those architectures that support it, this enables binary compatibility
      with ULTRIX applications built for the same architecture. This currently
      is limited to the pmax. The functionality of this option is unknown.</dd>
  <dt><code class="Cd">options COMPAT_FREEBSD</code></dt>
  <dd>On those architectures that support it, this enables binary compatibility
      with <span class="Ux">FreeBSD</span> applications built for the same
      architecture. At the moment this is limited to the i386 port.</dd>
  <dt><code class="Cd">options COMPAT_NOMID</code></dt>
  <dd>Enable compatibility with <a class="Xr">a.out(5)</a> executables that lack
      a machine ID. This includes <span class="Ux">NetBSD 0.8</span>'s ZMAGIC
      format, and 386BSD and BSDI's QMAGIC, NMAGIC, and OMAGIC
      <a class="Xr">a.out(5)</a> formats.</dd>
  <dt><code class="Cd">options COMPAT_NETBSD32</code></dt>
  <dd>On those architectures that support it, this enables binary compatibility
      with 32-bit applications built for the same architecture. This is
      currently limited to the amd64 and sparc64 ports, and only applicable for
      64-bit kernels.</dd>
  <dt><code class="Cd">options COMPAT_AOUT_M68K</code></dt>
  <dd>On m68k architectures which have switched to ELF, this enables binary
      compatibility with <span class="Ux">NetBSD</span>/m68k
      <a class="Xr">a.out(5)</a> executables on
      <span class="Ux">NetBSD</span>/m68k ELF kernels. This handles alignment
      incompatibility of m68k ABI between a.out and ELF which causes the
      structure padding differences. Currently only some system calls which use
      <var class="Va">struct stat</var> are adjusted and some binaries which use
      <a class="Xr">sysctl(3)</a> to retrieve network details would not work
      properly.</dd>
  <dt><code class="Cd">options EMUL_NATIVEROOT=string</code></dt>
  <dd>Just like emulated binaries first try looking up files in an emulation
      root (e.g. <span class="Pa">/emul/linux</span>) before looking them up in
      real root, this option causes native binaries to first look up files in an
      &quot;emulation&quot; directory too. This can be useful to test an amd64
      kernel on top of an i386 system before full migration: by unpacking the
      amd64 distribution in e.g. <span class="Pa">/emul/netbsd64</span> and
      specifying that location as <code class="Cd">EMUL_NATIVEROOT</code>,
      native amd64 binaries can be run while the root file system remains
      populated with i386 binaries. Beware of <span class="Pa">/dev</span>
      incompatibilities between i386 and amd64 if you do this.</dd>
  <dt id="any"><code class="Cd">options EXEC_ELF_NOTELESS</code></dt>
  <dd>Run unidentified ELF binaries as <span class="Ux">NetBSD</span> binaries.
      This might be needed for very old <span class="Ux">NetBSD</span> ELF
      binaries on some archs. These old binaries didn't contain an appropriate
      <code class="Li">.note.netbsd.ident</code> section, and thus can't be
      identified by the kernel as <span class="Ux">NetBSD</span> binaries
      otherwise. Beware - if this option is on, the kernel would run
      <a class="permalink" href="#any"><i class="Em">any</i></a> unknown ELF
      binaries as if they were <span class="Ux">NetBSD</span> binaries.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Debugging_Options"><a class="permalink" href="#Debugging_Options">Debugging
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options DDB</code></dt>
  <dd>Compiles in a kernel debugger for diagnosing kernel problems. See
      <a class="Xr">ddb(4)</a> for details. <i class="Em">NOTE</i>: not
      available on all architectures.</dd>
  <dt id="ddb.fromconsole"><code class="Cd">options
    DDB_FROMCONSOLE=integer</code></dt>
  <dd>If set to non-zero, DDB may be entered by sending a break on a serial
      console or by a special key sequence on a graphics console. A value of
      &quot;0&quot; ignores console breaks or key sequences. If not explicitly
      specified, the default value is &quot;1&quot;. Note that this sets the
      value of the
      <a class="permalink" href="#ddb.fromconsole"><i class="Em">ddb.fromconsole</i></a>
      <a class="Xr">sysctl(3)</a> variable which may be changed at run time
      &#x2014; see <a class="Xr">sysctl(8)</a> for details.</dd>
  <dt><code class="Cd">options DDB_HISTORY_SIZE=integer</code></dt>
  <dd>If this is non-zero, enable history editing in the kernel debugger and set
      the size of the history to this value.</dd>
  <dt id="ddb.onpanic"><code class="Cd">options DDB_ONPANIC</code></dt>
  <dd>The default if not specified is &#x201C;1&#x201D; - just enter into DDB.
      If set to &#x201C;0&#x201D; the kernel will attempt to print out a stack
      trace and reboot the system. If set to &#x201C;-1&#x201D; then neither a
      stack trace is printed or DDB entered - it is as if DDB were not compiled
      into the kernel. Note that this sets the value of the
      <a class="permalink" href="#ddb.onpanic"><i class="Em">ddb.onpanic</i></a>
      <a class="Xr">sysctl(3)</a> variable which may be changed at run time
      &#x2014; see <a class="Xr">sysctl(8)</a> for details.</dd>
  <dt id="ddb.commandonenter"><code class="Cd">options
    DDB_COMMANDONENTER=string</code></dt>
  <dd>This option specify commands which will be executed on each entry to DDB.
      This sets the default value of the
      <a class="permalink" href="#ddb.commandonenter"><i class="Em">ddb.commandonenter</i></a>
      <a class="Xr">sysctl(3)</a> variable which may be changed at run
    time.</dd>
  <dt><code class="Cd">options DDB_BREAK_CHAR=integer</code></dt>
  <dd>This option overrides using break to enter the kernel debugger on the
      serial console. The value given is the ASCII value to be used instead.
      This is currently only supported by the com driver.</dd>
  <dt><code class="Cd">options CNMAGIC=string</code></dt>
  <dd>This option overrides the <a class="Xr">cnmagic(9)</a> string used to
      enter the kernel debugger.</dd>
  <dt id="help"><code class="Cd">options DDB_VERBOSE_HELP</code></dt>
  <dd>This option adds more verbose descriptions to the
      <a class="permalink" href="#help"><i class="Em">help</i></a> command.</dd>
  <dt><code class="Cd">options DDB_PANICSTACKFRAMES=integer</code></dt>
  <dd>Number of stack frames to display on panic. Useful to avoid scrolling away
      the interesting frames on a glass tty. Default value is
      <code class="Dv">65535</code> (all frames), useful value around
      <code class="Dv">10</code>.</dd>
  <dt><code class="Cd">options KGDB</code></dt>
  <dd>Compiles in a remote kernel debugger stub for diagnosing kernel problems
      using the &#x201C;remote target&#x201D; feature of gdb. See
      <a class="Xr">gdb(1)</a> for details. <i class="Em">NOTE</i>: not
      available on all architectures.</dd>
  <dt><code class="Cd">options KGDB_DEV</code></dt>
  <dd>Device number (as a <code class="Dv">dev_t</code>) of kgdb device.</dd>
  <dt><code class="Cd">options KGDB_DEVADDR</code></dt>
  <dd>Memory address of kgdb device.</dd>
  <dt><code class="Cd">options KGDB_DEVMODE</code></dt>
  <dd>Permissions of kgdb device.</dd>
  <dt><code class="Cd">options KGDB_DEVNAME</code></dt>
  <dd>Device name of kgdb device.</dd>
  <dt><code class="Cd">options KGDB_DEVRATE</code></dt>
  <dd>Baud rate of kgdb device.</dd>
  <dt><code class="Cd">makeoptions DEBUG=&quot;-g&quot;</code></dt>
  <dd>The <code class="Fl">-g</code> flag causes
      <span class="Pa">netbsd.gdb</span> to be built in addition to
      <span class="Pa">netbsd</span>. <span class="Pa">netbsd.gdb</span> is
      useful for debugging kernel crash dumps with gdb. See
      <a class="Xr">gdb(1)</a> for details.</dd>
  <dt id="_define"><code class="Cd">options DEBUG</code></dt>
  <dd>Turns on miscellaneous kernel debugging. Since options are turned into
      preprocessor defines (see above), <i class="Em">options DEBUG</i> is
      equivalent to doing a
      <a class="permalink" href="#_define"><i class="Em">#define DEBUG</i></a>
      throughout the kernel. Much of the kernel has <i class="Em">#ifdef
      DEBUG</i> conditionalized debugging code. Note that many parts of the
      kernel (typically device drivers) include their own <i class="Em">#ifdef
      XXX_DEBUG</i> conditionals instead. This option also turns on certain
      other options, which may decrease system performance. Systems with this
      option are not suitable for regular use, and are intended only for
      debugging or looking for bugs.</dd>
  <dt><code class="Cd">options DIAGNOSTIC</code></dt>
  <dd>Adds code to the kernel that does internal consistency checks. This code
      will cause the kernel to panic if corruption of internal data structures
      is detected. Historically, the performance degradation is sufficiently
      small that it is reasonable for systems with <i class="Em">options
      DIAGNOSTIC</i> to be in production use, with the real consideration not
      being performance but instead a preference for more panics versus
      continued operation with undetected problems.</dd>
  <dt><code class="Cd">options LOCKDEBUG</code></dt>
  <dd>Adds code to the kernel to detect incorrect use of locking primitives
      (mutex, rwlock). This code will cause the kernel to check for dead lock
      conditions. It will also check for memory being freed to not contain
      initialised lock primitives. Functions for use in <a class="Xr">ddb(4)</a>
      to check lock chains etc. are also enabled. These checks are very
      expensive and can decrease performance on multi-processor machines by a
      factor of three.</dd>
  <dt><code class="Cd">options KDTRACE_HOOKS</code></dt>
  <dd>Adds hooks for the DTrace tracing facility, which allows users to analyze
      many aspects of system and application behavior. See
      <a class="Xr">dtrace(1)</a> for details.</dd>
  <dt><code class="Cd">options KSTACK_CHECK_MAGIC</code></dt>
  <dd>Check kernel stack usage and panic if stack overflow is detected. This
      check is performance sensitive because it scans stack on each context
      switch.</dd>
  <dt><code class="Cd">options KTRACE</code></dt>
  <dd>Add hooks for the system call tracing facility, which allows users to
      watch the system call invocation behavior of processes. See
      <a class="Xr">ktrace(1)</a> for details.</dd>
  <dt id="printf"><code class="Cd">options MSGBUFSIZE=integer</code></dt>
  <dd>This option sets the size of the kernel message buffer in bytes. This
      buffer holds the kernel output of
      <a class="permalink" href="#printf"><code class="Fn">printf</code></a>()
      when not (yet) read by <a class="Xr">syslogd(8)</a>. This is particularly
      useful when the system has crashed and you wish to lookup the kernel
      output from just before the crash. Also, since the autoconfig output
      becomes more and more verbose, it sometimes happens that the message
      buffer overflows before <a class="Xr">syslogd(8)</a> was able to read it.
      Note that not all systems are capable of obtaining a variable sized
      message buffer. There are also some systems on which memory contents are
      not preserved across reboots.</dd>
  <dt><code class="Cd">options KERNHIST</code></dt>
  <dd>Enables the kernel history logs, which create in-memory traces of various
      kernel activities. These logs can be displayed by using
      <code class="Cm">show kernhist</code> from DDB. See the kernel source file
      <span class="Pa">sys/kern/kern_history.c</span> and the
      <a class="Xr">kernhist(9)</a> manual for details.</dd>
  <dt><code class="Cd">options KERNHIST_PRINT</code></dt>
  <dd>Prints the kernel history logs on the system console as entries are added.
      Note that the output is <i class="Em">extremely</i> voluminous, so this
      option is really only useful for debugging the very earliest parts of
      kernel initialization.</dd>
  <dt><code class="Cd">options UVMHIST</code></dt>
  <dd>Like <i class="Em">KERNHIST</i>, it enables the UVM history logs. These
      logs can be displayed by using <code class="Cm">show kernhist</code> from
      DDB. See the kernel source file <span class="Pa">sys/uvm/uvm_stat.c</span>
      for details.</dd>
  <dt><code class="Cd">options UVMHIST_PRINT</code></dt>
  <dd>Like <i class="Em">UVMHIST</i>, it prints the UVM history logs on the
      system console as entries are added. Note that the output is
      <i class="Em">extremely</i> voluminous, so this option is really only
      useful for debugging the very earliest parts of kernel
    initialization.</dd>
  <dt><code class="Cd">options UVMHIST_MAPHIST_SIZE</code></dt>
  <dd>Set the size of the &#x201C;maphist&#x201D; kernel history. The default is
      100. This option depends upon the <i class="Em">UVMHIST</i> option.</dd>
  <dt><code class="Cd">options UVMHIST_PDHIST_SIZE</code></dt>
  <dd>Set the size of the &#x201C;pdhist&#x201D; kernel history. The default is
      100. This option depends upon the <i class="Em">UVMHIST</i> option.</dd>
  <dt><code class="Cd">options BIOHIST</code></dt>
  <dd>Like <i class="Em">KERNHIST</i>, it enables the BIO history logs. These
      logs can be displayed by using <code class="Cm">show kernhist</code> from
      DDB, and can help in debugging problems with Buffered I/O operations. See
      the kernel source file <span class="Pa">sys/kern/vfs_vio.c</span> for
      details.</dd>
  <dt><code class="Cd">options BIOHIST_PRINT</code></dt>
  <dd>Like <i class="Em">BIOHIST</i>, it prints the BIO history logs on the
      system console as entries are added. Note that the output is
      <i class="Em">extremely</i> voluminous, so this option is really only
      useful for debugging the very earliest parts of kernel
    initialization.</dd>
  <dt><code class="Cd">options BIOHIST_SIZE</code></dt>
  <dd>Set the size of the &#x201C;biohist&#x201D; kernel history. The default is
      500. This option depends upon the <i class="Em">BIOHIST</i> option.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="File_Systems"><a class="permalink" href="#File_Systems">File
  Systems</a></h2>
<dl class="Bl-ohang">
  <dt id="FFS"><code class="Cd">file-system FFS</code></dt>
  <dd>Includes code implementing the Berkeley Fast File System
      (<a class="permalink" href="#FFS"><i class="Em">FFS</i></a>). Most
      machines need this if they are not running diskless.</dd>
  <dt id="filetype"><code class="Cd">file-system EXT2FS</code></dt>
  <dd>Includes code implementing the Second Extended File System
      (<i class="Em">ext2</i>), revision 0 and revision 1 with the
      <a class="permalink" href="#filetype"><i class="Em">filetype</i></a>,
      <a class="permalink" href="#sparse_super"><i class="Em" id="sparse_super">sparse_super</i></a>
      and
      <a class="permalink" href="#large_file"><i class="Em" id="large_file">large_file</i></a>
      options. This is the most commonly used file system on the Linux operating
      system, and is provided here for compatibility. Some of the specific
      features of <i class="Em">ext2</i> like the &quot;behavior on errors&quot;
      are not implemented. See <a class="Xr">mount_ext2fs(8)</a> for
    details.</dd>
  <dt id="LFS"><code class="Cd">file-system LFS</code></dt>
  <dd>[<i class="Em">EXPERIMENTAL</i>] Include the Log-structured File System
      (<a class="permalink" href="#LFS"><i class="Em">LFS</i></a>). See
      <a class="Xr">mount_lfs(8)</a> and <a class="Xr">newfs_lfs(8)</a> for
      details.</dd>
  <dt id="MFS"><code class="Cd">file-system MFS</code></dt>
  <dd>Include the Memory File System
      (<a class="permalink" href="#MFS"><i class="Em">MFS</i></a>). This file
      system stores files in swappable memory, and produces notable performance
      improvements when it is used as the file store for
      <span class="Pa">/tmp</span> and similar file systems. See
      <a class="Xr">mount_mfs(8)</a> for details.</dd>
  <dt><code class="Cd">file-system NFS</code></dt>
  <dd>Include the client side of the Network File System (NFS) remote file
      sharing protocol. Although the bulk of the code implementing NFS is kernel
      based, several user level daemons are needed for it to work. See
      <a class="Xr">mount_nfs(8)</a> for details.</dd>
  <dt><code class="Cd">file-system CD9660</code></dt>
  <dd>Includes code for the ISO 9660 + Rock Ridge file system, which is the
      standard file system on many CD-ROM discs. Useful primarily if you have a
      CD-ROM drive. See <a class="Xr">mount_cd9660(8)</a> for details.</dd>
  <dt><code class="Cd">file-system MSDOSFS</code></dt>
  <dd>Includes the MS-DOS FAT file system, which is reportedly still used by
      unfortunate people who have not heard about
      <span class="Ux">NetBSD</span>. Also implements the Windows 95 extensions
      to the same, which permit the use of longer, mixed case file names. See
      <a class="Xr">mount_msdos(8)</a> and <a class="Xr">fsck_msdos(8)</a> for
      details.</dd>
  <dt><code class="Cd">file-system NTFS</code></dt>
  <dd>[<i class="Em">EXPERIMENTAL</i>] Includes code for the Microsoft Windows
      NT file system. See <a class="Xr">mount_ntfs(8)</a> for details.</dd>
  <dt><code class="Cd">file-system FDESC</code></dt>
  <dd>Includes code for a file system, conventionally mounted on
      <span class="Pa">/dev/fd</span>, which permits access to the per-process
      file descriptor space via special files in the file system. See
      <a class="Xr">mount_fdesc(8)</a> for details. Note that this facility is
      redundant, and thus unneeded on most <span class="Ux">NetBSD</span>
      systems, since the <a class="Xr">fd(4)</a> pseudo-device driver already
      provides identical functionality. On most <span class="Ux">NetBSD</span>
      systems, instances of <a class="Xr">fd(4)</a> are mknoded under
      <span class="Pa">/dev/fd/</span> and on
      <span class="Pa">/dev/stdin</span>, <span class="Pa">/dev/stdout</span>,
      and <span class="Pa">/dev/stderr</span>.</dd>
  <dt><code class="Cd">file-system KERNFS</code></dt>
  <dd>Includes code which permits the mounting of a special file system
      (normally mounted on <span class="Pa">/kern</span>) in which files
      representing various kernel variables and parameters may be found. See
      <a class="Xr">mount_kernfs(8)</a> for details.</dd>
  <dt><code class="Cd">file-system NULLFS</code></dt>
  <dd>Includes code for a loopback file system. This permits portions of the
      file hierarchy to be re-mounted in other places. The code really exists to
      provide an example of a stackable file system layer. See
      <a class="Xr">mount_null(8)</a> for details.</dd>
  <dt><code class="Cd">file-system OVERLAY</code></dt>
  <dd>Includes code for a file system filter. This permits the overlay file
      system to intercept all access to an underlying file system. This file
      system is intended to serve as an example of a stacking file system which
      has a need to interpose itself between an underlying file system and all
      other access. See <a class="Xr">mount_overlay(8)</a> for details.</dd>
  <dt><code class="Cd">file-system PROCFS</code></dt>
  <dd>Includes code for a special file system (conventionally mounted on
      <span class="Pa">/proc</span>) in which the process space becomes visible
      in the file system. Among other things, the memory spaces of processes
      running on the system are visible as files, and signals may be sent to
      processes by writing to <span class="Pa">ctl</span> files in the procfs
      namespace. See <a class="Xr">mount_procfs(8)</a> for details.</dd>
  <dt><code class="Cd">file-system UDF</code></dt>
  <dd>Includes code for the UDF file system commonly found on CD and DVD media
      but also on USB sticks and harddiscs for interchange and backup. Supports
      read and write access for all formats on discs and on rewritable and
      recordable CD/DVD/BD media. It has a somewhat limited write support for
      UDF 2.50 as it can't expand the metadata partion. See
      <a class="Xr">mount_udf(8)</a> and <a class="Xr">fsck_udf(8)</a> for
      details.</dd>
  <dt><code class="Cd">file-system UMAPFS</code></dt>
  <dd>Includes a loopback file system in which user and group IDs may be
      remapped &#x2014; this can be useful when mounting alien file systems with
      different UIDs and GIDs than the local system. See
      <a class="Xr">mount_umap(8)</a> for details.</dd>
  <dt><code class="Cd">file-system UNION</code></dt>
  <dd>[<i class="Em">EXPERIMENTAL</i>] Includes code for the union file system,
      which permits directories to be mounted on top of each other in such a way
      that both file systems remain visible &#x2014; this permits tricks like
      allowing writing (and the deleting of files) on a read-only file system
      like a CD-ROM by mounting a local writable file system on top of the
      read-only file system. See <a class="Xr">mount_union(8)</a> for
    details.</dd>
  <dt><code class="Cd">file-system CODA</code></dt>
  <dd>[<i class="Em">EXPERIMENTAL</i>] Includes code for the Coda file system.
      Coda is a distributed file system like NFS and AFS. It is freely
      available, like NFS, but it functions much like AFS in being a
      &#x201C;stateful&#x201D; file system. Both Coda and AFS cache files on
      your local machine to improve performance. Then Coda goes a step further
      than AFS by letting you access the cached files when there is no available
      network, viz. disconnected laptops and network outages. In Coda, both the
      client and server are outside the kernel which makes them easier to
      experiment with. Coda is available for several UNIX and non-UNIX
      platforms. See
      <a class="Lk" href="http://www.coda.cs.cmu.edu">http://www.coda.cs.cmu.edu</a>
      for more details. <i class="Em">NOTE</i>: You also need to enable the
      pseudo-device, vcoda, for the Coda file system to work.</dd>
  <dt><code class="Cd">file-system PTYFS</code></dt>
  <dd>Includes code for a special file system (normally mounted on
      <span class="Pa">/dev/pts</span>) in which pseudo-terminal slave devices
      become visible in the file system. See <a class="Xr">mount_ptyfs(8)</a>
      for details.</dd>
  <dt><code class="Cd">file-system TMPFS</code></dt>
  <dd>Includes code for the efficient memory file system, normally used over
      <span class="Pa">/tmp</span>. See <a class="Xr">mount_tmpfs(8)</a> for
      details.</dd>
  <dt><code class="Cd">file-system PUFFS</code></dt>
  <dd>Includes kernel support for the pass-to-userspace framework file system.
      It can be used to implement file system functionality in userspace. See
      <a class="Xr">puffs(3)</a> for more details. This enables for example
      sshfs: <a class="Xr">mount_psshfs(8)</a>.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="File_System_Options"><a class="permalink" href="#File_System_Options">File
  System Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options DISKLABEL_EI</code></dt>
  <dd>Enable &#x201C;Endian-Independent&#x201D; <a class="Xr">disklabel(5)</a>
      support. This allows a system to recognize a disklabel written in the
      other byte order. For writing, when a label already exists, its byte order
      is preserved. Otherwise, a new label is written in the native byte order.
      To specify the byte order explicitly, the <code class="Fl">-F</code>
      option of <a class="Xr">disklabel(8)</a> should be used with the
      <code class="Fl">-B</code> option in order to avoid using
      <a class="Xr">ioctl(2)</a>, which results in the default behavior
      explained above. At the moment this option is restricted to the following
      ports: amd64, bebox, emips, epoc32, evbarm, i386, ibmnws, landisk,
      mvmeppc, prep, rs6000, sandpoint, xen, and zaurus; also to machines of the
      evbmips and evbppc ports that support Master Boot Record (MBR).</dd>
  <dt><code class="Cd">options MAGICLINKS</code></dt>
  <dd>Enables the expansion of special strings (beginning with
      &#x201C;@&#x201D;) when traversing symbolic links. See
      <a class="Xr">symlink(7)</a> for a list of supported strings. Note that
      this option only controls the enabling of this feature by the kernel at
      boot-up. This feature can still be manipulated with the
      <a class="Xr">sysctl(8)</a> command regardless of the setting of this
      option.</dd>
  <dt><code class="Cd">options NFSSERVER</code></dt>
  <dd>Include the server side of the <i class="Em">NFS</i> (Network File System)
      remote file sharing protocol. Although the bulk of the code implementing
      <i class="Em">NFS</i> is kernel based, several user level daemons are
      needed for it to work. See <a class="Xr">mountd(8)</a> and
      <a class="Xr">nfsd(8)</a> for details.</dd>
  <dt id="namei"><code class="Cd">options NVNODE=integer</code></dt>
  <dd>This option sets the size of the cache used by the name-to-inode
      translation routines, (a.k.a. the
      <a class="permalink" href="#namei"><code class="Fn">namei</code></a>()
      cache, though called by many other names in the kernel source). By
      default, this cache has (<code class="Dv">NPROC + NTEXT + 100</code>)
      entries (NPROC set as 20 + 16 * MAXUSERS and NTEXT as 80 + NPROC / 8). A
      reasonable way to derive a value of <code class="Dv">NVNODE</code>, should
      you notice a large number of namei cache misses with a tool such as
      <a class="Xr">systat(1)</a>, is to examine your system's current computed
      value with <a class="Xr">sysctl(8)</a>, (which calls this parameter
      &quot;kern.maxvnodes&quot;) and to increase this value until either the
      namei cache hit rate improves or it is determined that your system does
      not benefit substantially from an increase in the size of the namei
    cache.</dd>
  <dt><code class="Cd">options NAMECACHE_ENTER_REVERSE</code></dt>
  <dd>Causes the namei cache to always enter a reverse mapping (vnode -&gt;
      name) as well as a normal one. Normally, this is already done for
      directory vnodes, to speed up the getcwd operation. This option will cause
      longer hash chains in the reverse cache, and thus slow down getcwd
      somewhat. However, it does make vnode -&gt; path translations possible in
      some cases. For now, only useful if strict
      <span class="Pa">/proc/#/maps</span> emulation for Linux binaries is
      required.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Options_for_FFS/UFS_File_Systems"><a class="permalink" href="#Options_for_FFS/UFS_File_Systems">Options
  for FFS/UFS File Systems</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options APPLE_UFS</code></dt>
  <dd>Enable support for UFS file systems created on Mac OS X.</dd>
  <dt><code class="Cd">options FFS_EI</code></dt>
  <dd>Enable &#x201C;Endian-Independent&#x201D; FFS support. This allows a
      system to mount an FFS file system created for another architecture, at a
      small performance cost for all FFS file systems. See also
      <a class="Xr">newfs(8)</a>, <a class="Xr">fsck_ffs(8)</a>,
      <a class="Xr">dumpfs(8)</a> for file system byte order status and
      manipulation.</dd>
  <dt><code class="Cd">options FFS_NO_SNAPSHOT</code></dt>
  <dd>Disable support for the creation of file system internal snapshot of FFS
      file systems. Maybe useful for install media kernels, small memory systems
      and embedded systems which don't require the snapshot support.</dd>
  <dt><code class="Cd">options QUOTA</code></dt>
  <dd>Enables kernel support for traditional quotas in FFS. Traditional quotas
      store the quota information in external files and require
      <a class="Xr">quotacheck(8)</a> and <a class="Xr">quotaon(8)</a> at boot
      time. Traditional quotas are limited to 32-bit sizes and are at this point
      considered a legacy feature.</dd>
  <dt><code class="Cd">options QUOTA2</code></dt>
  <dd>Enables kernel support for in-volume quotas in FFS. The quota information
      is file system metadata maintained by <a class="Xr">fsck(8)</a> and/or
      WAPBL journaling. MFS volumes can also use <code class="Dv">QUOTA2</code>
      quotas; see <a class="Xr">mount_mfs(8)</a> for more information.</dd>
  <dt><code class="Cd">options UFS_DIRHASH</code></dt>
  <dd>Increase lookup performance by maintaining in-core hash tables for large
      directories.</dd>
  <dt><code class="Cd">options UFS_EXTATTR</code></dt>
  <dd>Enable extended attribute support for UFS1 file systems.</dd>
  <dt><code class="Cd">options WAPBL</code></dt>
  <dd>Enable &#x201C;Write Ahead Physical Block Logging file system
      journaling&#x201D;. This provides rapid file system consistency checking
      after a system outage. It also provides better general use performance
      over regular FFS. See also <a class="Xr">wapbl(4)</a>.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Options_for_the_LFS_File_System"><a class="permalink" href="#Options_for_the_LFS_File_System">Options
  for the LFS File System</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options LFS_EI</code></dt>
  <dd>Enable &#x201C;Endian-Independent&#x201D; LFS support. This allows (at a
      small performance cost) mounting an LFS file system created for another
      architecture.</dd>
  <dt><code class="Cd">options LFS_DIRHASH</code></dt>
  <dd>Increase lookup performance by maintaining in-core hash tables for large
      directories.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Options_for_the_NFS_File_System"><a class="permalink" href="#Options_for_the_NFS_File_System">Options
  for the NFS File System</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options NFS_BOOT_BOOTP</code></dt>
  <dd>Enable use of the BOOTP protocol (RFCs 951 and 1048) to get configuration
      information if NFS is used to mount the root file system. See
      <a class="Xr">diskless(8)</a> for details.</dd>
  <dt><code class="Cd">options NFS_BOOT_BOOTSTATIC</code></dt>
  <dd>Enable use of static values defined as
      &#x201C;NFS_BOOTSTATIC_MYIP&#x201D;, &#x201C;NFS_BOOTSTATIC_GWIP&#x201D;,
      &#x201C;NFS_BOOTSTATIC_SERVADDR&#x201D;, and
      &#x201C;NFS_BOOTSTATIC_SERVER&#x201D; in kernel options to get
      configuration information if NFS is used to mount the root file
    system.</dd>
  <dt><code class="Cd">options NFS_BOOT_DHCP</code></dt>
  <dd>Same as &#x201C;NFS_BOOT_BOOTP&#x201D;, but use the DHCP extensions to the
      BOOTP protocol (RFC 1541).</dd>
  <dt><code class="Cd">options NFS_BOOT_BOOTP_REQFILE</code></dt>
  <dd>Specifies the string sent in the bp_file field of the BOOTP/DHCP request
      packet.</dd>
  <dt><code class="Cd">options NFS_BOOT_BOOTPARAM</code></dt>
  <dd>Enable use of the BOOTPARAM protocol, consisting of RARP and BOOTPARAM
      RPC, to get configuration information if NFS is used to mount the root
      file system. See <a class="Xr">diskless(8)</a> for details.</dd>
  <dt><code class="Cd">options NFS_BOOT_RWSIZE=value</code></dt>
  <dd>Set the initial NFS read and write sizes for diskless-boot requests. The
      normal default is 8Kbytes. This option provides a way to lower the value
      (e.g., to 1024 bytes) as a workaround for buggy network interface cards or
      boot PROMs. Once booted, the read and write request sizes can be increased
      by remounting the file system. See <a class="Xr">mount_nfs(8)</a> for
      details.</dd>
  <dt><code class="Cd">options NFS_V2_ONLY</code></dt>
  <dd>Reduce the size of the NFS client code by omitting code that's only
      required for NFSv3 and NQNFS support, leaving only that code required to
      use NFSv2 servers.</dd>
  <dt><code class="Cd">options NFS_BOOT_UDP</code></dt>
  <dd>Use NFS over UDP instead of the default TCP, for mounting root.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Buffer_queue_strategy_options"><a class="permalink" href="#Buffer_queue_strategy_options">Buffer
  queue strategy options</a></h2>
<p class="Pp">The following options enable alternative buffer queue
  strategies.</p>
<dl class="Bl-ohang">
  <dt><code class="Cd">options BUFQ_READPRIO</code></dt>
  <dd>Enable alternate buffer queue strategy for disk I/O. In the default
      strategy, outstanding disk requests are ordered by sector number and sent
      to the disk, regardless of whether the operation is a read or write; this
      option gives priority to issuing read requests over write requests.
      Although requests may therefore be issued out of sector-order, causing
      more seeks and thus lower overall throughput, interactive system
      responsiveness under heavy disk I/O load may be improved, as processes
      blocking on disk reads are serviced sooner (file writes typically don't
      cause applications to block). The performance effect varies greatly
      depending on the hardware, drive firmware, file system configuration,
      workload, and desired performance trade-off. Systems using drive
      write-cache (most modern IDE disks, by default) are unlikely to benefit
      and may well suffer; such disks acknowledge writes very quickly, and
      optimize them internally according to physical layout. Giving these disks
      as many requests to work with as possible (the standard strategy) will
      typically produce the best results, especially if the drive has a large
      cache; the drive will silently complete writes from cache as it seeks for
      reads. Disks that support a large number of concurrent tagged requests
      (SCSI disks and many hardware RAID controllers) expose this internal
      scheduling with tagged responses, and don't block for reads; such disks
      may not see a noticeable difference with either strategy. However, if IDE
      disks are run with write-cache disabled for safety, writes are not
      acknowledged until actually completed, and only one request can be
      outstanding; a large number of small writes in one locality can keep the
      disk busy, starving reads elsewhere on the disk. Such systems are likely
      to see the most benefit from this option. Finally, the performance
      interaction of this option with ffs soft dependencies can be subtle, as
      that mechanism can drastically alter the workload for file system metadata
      writes.</dd>
  <dt><code class="Cd">options BUFQ_PRIOCSCAN</code></dt>
  <dd>Enable another buffer queue strategy for disk I/O, per-priority cyclical
      scan.</dd>
  <dt id="BUFQ_READPRIO"><code class="Cd">options NEW_BUFQ_STRATEGY</code></dt>
  <dd>Synonym of
      <a class="permalink" href="#BUFQ_READPRIO"><i class="Em">BUFQ_READPRIO</i></a>.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Miscellaneous_Options"><a class="permalink" href="#Miscellaneous_Options">Miscellaneous
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options CPU_UCODE</code></dt>
  <dd>Support cpu microcode loading via <a class="Xr">cpuctl(8)</a>.</dd>
  <dt><code class="Cd">options MEMORY_DISK_DYNAMIC</code></dt>
  <dd>This option makes the <a class="Xr">md(4)</a> RAM disk size dynamically
      sized. It is incompatible with <a class="Xr">mdsetimage(8)</a>.</dd>
  <dt><code class="Cd">options MEMORY_DISK_HOOKS</code></dt>
  <dd>This option allows for some machine dependent functions to be called when
      the <a class="Xr">md(4)</a> RAM disk driver is configured. This can result
      in automatically loading a RAM disk from floppy on open (among other
      things).</dd>
  <dt><code class="Cd">options MEMORY_DISK_IS_ROOT</code></dt>
  <dd>Forces the <a class="Xr">md(4)</a> RAM disk to be the root device. This
      can only be overridden when the kernel is booted in the 'ask-for-root'
      mode.</dd>
  <dt><code class="Cd">options MEMORY_DISK_ROOT_SIZE=integer</code></dt>
  <dd>Allocates the given number of 512 byte blocks as memory for the
      <a class="Xr">md(4)</a> RAM disk, to be populated with
      <a class="Xr">mdsetimage(8)</a>.</dd>
  <dt><code class="Cd">options MEMORY_DISK_SERVER=0</code></dt>
  <dd>Do not include the interface to a userland memory disk server process. Per
      default, this option is set to 1, including the support code. Useful for
      install media kernels.</dd>
  <dt><code class="Cd">options MEMORY_DISK_RBFLAGS=value</code></dt>
  <dd>This option sets the <a class="Xr">reboot(2)</a> flags used when booting
      with a memory disk as root file system. Possible values include
      <code class="Dv">RB_AUTOBOOT</code> (boot in the usual fashion - default
      value), and <code class="Dv">RB_SINGLE</code> (boot in single-user
    mode).</dd>
  <dt><code class="Cd">options MODULAR</code></dt>
  <dd>Enables the framework for kernel modules (see
      <a class="Xr">module(7)</a>).</dd>
  <dt id="kern.module.autoload"><code class="Cd">options
    MODULAR_DEFAULT_AUTOLOAD</code></dt>
  <dd>Enables the autoloading of kernel modules by default. This sets the
      default value of the
      <a class="permalink" href="#kern.module.autoload"><i class="Em">kern.module.autoload</i></a>
      <a class="Xr">sysctl(3)</a> variable which may be changed at run
    time.</dd>
  <dt id="kern.module.verbose"><code class="Cd">options
    MODULAR_DEFAULT_VERBOSE</code></dt>
  <dd>Enables verbose debug messages of kernel modules by default. This sets the
      default value of the
      <a class="permalink" href="#kern.module.verbose"><i class="Em">kern.module.verbose</i></a>
      <a class="Xr">sysctl(3)</a> variable which may be changed at run
    time.</dd>
  <dt><code class="Cd">options VND_COMPRESSION</code></dt>
  <dd>Enables the <a class="Xr">vnd(4)</a> driver to also handle compressed
      images. See <a class="Xr">vndcompress(1)</a>, <a class="Xr">vnd(4)</a> and
      <a class="Xr">vnconfig(8)</a> for more information.</dd>
  <dt><code class="Cd">options SELFRELOC</code></dt>
  <dd>Make the kernel able to self relocate at bootstrap, so that it can run
      whatever its load address is. This is intented to be used with the
      <code class="Ic">reloc</code> bootstrap command documented in
      <a class="Xr">x86/boot(8)</a>, to workaround UEFI bugs, and is only
      available on amd64.</dd>
  <dt id="spllower"><code class="Cd">options SPLDEBUG</code></dt>
  <dd>Help the kernel programmer find bugs related to the interrupt priority
      level. When
      <a class="permalink" href="#spllower"><code class="Fn">spllower</code></a>()
      or
      <a class="permalink" href="#splraise"><code class="Fn" id="splraise">splraise</code></a>()
      changes the current CPU's interrupt priority level to or from
      <code class="Dv">IPL_HIGH</code>, record a backtrace. Read
      <a class="Xr">i386/return_address(9)</a> for caveats about collecting
      backtraces. This feature is experimental, and it is only available on
      i386. See <span class="Pa">sys/kern/subr_spldebug.c</span>.</dd>
  <dt id="MEMORY_DISK_HOOKS"><code class="Cd">options TFTPROOT</code></dt>
  <dd>Download the root memory disk through TFTP at root mount time. This
      enables the use of a root RAM disk without requiring it to be embedded in
      the kernel using <a class="Xr">mdsetimage(8)</a>. The RAM disk name is
      obtained using DHCP's filename parameter. This option requires
      <a class="permalink" href="#MEMORY_DISK_HOOKS"><i class="Em">MEMORY_DISK_HOOKS</i></a>
      and
      <a class="permalink" href="#MEMORY_DISK_DYNAMIC"><i class="Em" id="MEMORY_DISK_DYNAMIC">MEMORY_DISK_DYNAMIC</i></a>.
      It is incompatible with
      <a class="permalink" href="#MEMORY_DISK_ROOT_SIZE"><i class="Em" id="MEMORY_DISK_ROOT_SIZE">MEMORY_DISK_ROOT_SIZE</i></a>.</dd>
  <dt><code class="Cd">options HEARTBEAT</code></dt>
  <dd>Turns on heartbeat checks to panic if any CPU in the system or the
      timecounter appears stuck.
    <p class="Pp">Each CPU will periodically check in hard interrupt context
        that the timecounter has advanced and soft interrupts have run on the
        current CPU, and each CPU will also be periodically checked for progress
        by another CPU.</p>
    <p class="Pp">If a CPU detects no progress has been made after
        <code class="Dv">HEARTBEAT_MAX_PERIOD</code> seconds,
        <span class="Ux">NetBSD</span> will panic, giving the opportunity to
        enter ddb or get a crash dump even if the system has become totally
        unresponsive to keyboard input.</p>
    <p class="Pp">This is different from a hardware watchdog timer
        (<a class="Xr">wdogctl(8)</a>):</p>
    <ul class="Bl-bullet">
      <li><code class="Cd">options HEARTBEAT</code> is purely a software
          mechanism, so if hard interrupts are stuck on all CPUs, then
          <code class="Cd">options HEARTBEAT</code> cannot trigger, but a
          hardware watchdog timer can.</li>
      <li>A hardware watchdog timer won't notice if a single CPU is stuck, or if
          the system timecounter is stuck, as long as at least one CPU is not
          stuck and able to run <a class="Xr">wdogctl(8)</a> or the kernel
          watchdog tickle thread. In contrast, <code class="Cd">options
          HEARTBEAT</code> uses hard interrupts on each CPU to cross-check soft
          interrupt progress on another CPU as well as the timecounter, so it
          can detect when a single CPU is unable to make progress when others
          are able.</li>
    </ul>
  </dd>
  <dt><code class="Cd">options HEARTBEAT_MAX_PERIOD_DEFAULT=integer</code></dt>
  <dd>Time in seconds since the last <code class="Cd">options HEARTBEAT</code>
      progress check has passed before it will trigger a panic. Default: 15.
    <p class="Pp">Can be changed at runtime via the
        <code class="Li">kern.heartbeat.max_period</code>
        <a class="Xr">sysctl(7)</a> knob.</p>
  </dd>
  <dt><code class="Cd">options HZ=integer</code></dt>
  <dd>On ports that support it, set the system clock frequency (see
      <a class="Xr">hz(9)</a>) to the supplied value. Handle with care.</dd>
  <dt><code class="Cd">options NTP</code></dt>
  <dd>Turns on in-kernel precision timekeeping support used by software
      implementing <i class="Em">NTP</i> (Network Time Protocol, RFC 1305). The
      <i class="Em">NTP</i> option adds an in-kernel Phase-Locked Loop (PLL) for
      normal <i class="Em">NTP</i> operation, and a Frequency-Locked Loop (FLL)
      for intermittently-connected operation. <a class="Xr">ntpd(8)</a> will
      employ a user-level PLL when kernel support is unavailable, but the
      in-kernel version has lower latency and more precision, and so typically
      keeps much better time.
    <p class="Pp">The interface to the kernel <i class="Em">NTP</i> support is
        provided by the <a class="Xr">ntp_adjtime(2)</a> and
        <a class="Xr">ntp_gettime(2)</a> system calls, which are intended for
        use by <a class="Xr">ntpd(8)</a> and are enabled by the option. On
        systems with sub-microsecond resolution timers, or where (HZ/100000) is
        not an integer, the <i class="Em">NTP</i> option also enables
        extended-precision arithmetic to keep track of fractional clock ticks at
        NTP time-format precision.</p>
  </dd>
  <dt><code class="Cd">options PPS_SYNC</code></dt>
  <dd>This option enables a kernel serial line discipline for receiving time
      phase signals from an external reference clock such as a radio clock. Some
      reference clocks generate a Pulse Per Second (PPS) signal in phase with
      their time source. The <i class="Em">PPS</i> line discipline receives this
      signal on either the data leads or the DCD control lead of a serial port.
    <p class="Pp"><i class="Em">NTP</i> uses the PPS signal to discipline the
        local clock oscillator to a high degree of precision (typically less
        than 50 microseconds in time and 0.1 ppm in accuracy).
        <i class="Em">PPS</i> can also generate a serial output pulse when the
        system receives a PPS interrupt. This can be used to measure the system
        interrupt latency and thus calibrate <i class="Em">NTP</i> to account
        for it. Using <i class="Em">PPS</i> usually requires a gadget box to
        convert from TTL to RS-232 signal levels. The gadget box and PPS are
        described in more detail in the HTML documentation for
        <a class="Xr">ntpd(8)</a> in
        <span class="Pa">/usr/share/doc/reference/ref8/ntp</span>.</p>
    <p class="Pp"><span class="Ux">NetBSD</span> currently supports this option
        in <a class="Xr">com(4)</a> and <a class="Xr">zsc(4)</a>.</p>
    <p class="Pp"><i class="Em">NOTE</i>: Using this option will also enable
        <i class="Em">options NTP</i>.</p>
  </dd>
  <dt><code class="Cd">options SETUIDSCRIPTS</code></dt>
  <dd>Allows scripts with the setuid bit set to execute as the effective user
      rather than the real user, just like binary executables.
    <p class="Pp"><i class="Em">NOTE</i>: Using this option will also enable
        <i class="Em">options FDSCRIPTS</i></p>
  </dd>
  <dt><code class="Cd">options FDSCRIPTS</code></dt>
  <dd>Allows execution of scripts with the execute bit set, but not the read
      bit, by opening the file and passing the file descriptor to the shell,
      rather than the filename.
    <p class="Pp"><i class="Em">NOTE</i>: Execute only (non-readable) scripts
        will have <var class="Va">argv[0]</var> set to
        <span class="Pa">/dev/fd/*</span>. What this option allows as far as
        security is concerned, is the ability to safely ensure that the correct
        script is run by the interpreter, as it is passed as an already open
        file.</p>
  </dd>
  <dt id="GMT"><code class="Cd">options RTC_OFFSET=integer</code></dt>
  <dd>The kernel (and typically the hardware battery backed-up clock on those
      machines that have one) keeps time in <i class="Em">UTC</i> (Universal
      Coordinated Time, once known as
      <a class="permalink" href="#GMT"><i class="Em">GMT</i></a>, or Greenwich
      Mean Time) and not in the time of the local time zone. The
      <i class="Em">RTC_OFFSET</i> option is used on some ports (such as the
      i386) to tell the kernel that the hardware clock is offset from
      <i class="Em">UTC</i> by the specified number of minutes. This is
      typically used when a machine boots several operating systems and one of
      them wants the hardware clock to run in the local time zone and not in
      <i class="Em">UTC</i>, e.g.
      <a class="permalink" href="#RTC_OFFSET=300"><i class="Em" id="RTC_OFFSET=300">RTC_OFFSET=300</i></a>
      means the hardware clock is set to US Eastern Time (300 minutes behind
      <i class="Em">UTC</i>), and not <i class="Em">UTC</i>. (Note:
      <i class="Em">RTC_OFFSET</i> is used to initialize a kernel variable named
      <var class="Va">rtc_offset</var> which is the source actually used to
      determine the clock offset, and which may be accessed via the
      kern.rtc_offset sysctl variable. See <a class="Xr">sysctl(8)</a> and
      <a class="Xr">sysctl(3)</a> for details. Since the kernel clock is
      initialized from the hardware clock very early in the boot process, it is
      not possible to meaningfully change <var class="Va">rtc_offset</var> in
      system initialization scripts. Changing this value currently may only be
      done at kernel compile time or by patching the kernel and rebooting).
    <p class="Pp"><i class="Em">NOTE</i>: Unfortunately, in many cases where the
        hardware clock is kept in local time, it is adjusted for Daylight
        Savings Time; this means that attempting to use
        <i class="Em">RTC_OFFSET</i> to let <span class="Ux">NetBSD</span>
        coexist with such an operating system, like Windows, would necessitate
        changing <i class="Em">RTC_OFFSET</i> twice a year. As such, this
        solution is imperfect.</p>
  </dd>
  <dt id="MAXUPRC"><code class="Cd">options MAXUPRC=integer</code></dt>
  <dd>Sets the soft <code class="Dv">RLIMIT_NPROC</code> resource limit, which
      specifies the maximum number of simultaneous processes a user is permitted
      to run, for process 0; this value is inherited by its child processes. It
      defaults to <i class="Em">CHILD_MAX</i>, which is currently defined to be
      160. Setting
      <a class="permalink" href="#MAXUPRC"><i class="Em">MAXUPRC</i></a> to a
      value less than <i class="Em">CHILD_MAX</i> is not permitted, as this
      would result in a violation of the semantics of <span class="St">IEEE Std
      1003.1-1990 (&#x201C;POSIX.1&#x201D;)</span>.</dd>
  <dt id="OPEN_MAX"><code class="Cd">options NOFILE=integer</code></dt>
  <dd>Sets the soft <code class="Dv">RLIMIT_NOFILE</code> resource limit, which
      specifies the maximum number of open file descriptors for each process;
      this value is inherited by its child processes. It defaults to
      <a class="permalink" href="#OPEN_MAX"><i class="Em">OPEN_MAX</i></a>,
      which is currently defined to be 128.</dd>
  <dt id="kern.maxfiles"><code class="Cd">options MAXFILES=integer</code></dt>
  <dd>Sets the default value of the
      <a class="permalink" href="#kern.maxfiles"><i class="Em">kern.maxfiles</i></a>
      sysctl variable, which indicates the maximum number of files that may be
      open in the system.</dd>
  <dt id="kern.defcorename"><code class="Cd">options
    DEFCORENAME=string</code></dt>
  <dd>Sets the default value of the
      <a class="permalink" href="#kern.defcorename"><i class="Em">kern.defcorename</i></a>
      sysctl variable, otherwise it is set to <code class="Nm">%n.core</code>.
      See <a class="Xr">sysctl(8)</a> and <a class="Xr">sysctl(3)</a> for
      details.</dd>
  <dt><code class="Cd">options RASOPS_CLIPPING</code></dt>
  <dd>Enables clipping within the <code class="Nm">rasops</code> raster-console
      output system. <i class="Em">NOTE</i>: only available on architectures
      that use <code class="Nm">rasops</code> for console output.</dd>
  <dt><code class="Cd">options RASOPS_SMALL</code></dt>
  <dd>Removes optimized character writing code from the
      <code class="Nm">rasops</code> raster-console output system.
      <i class="Em">NOTE</i>: only available on architectures that use
      <code class="Nm">rasops</code> for console output.</dd>
  <dt><code class="Cd">options INCLUDE_CONFIG_FILE</code></dt>
  <dd>Embeds the kernel config file used to define the kernel in the kernel
      binary itself. The embedded data also includes any files directly included
      by the config file itself, e.g. <span class="Pa">GENERIC.local</span> or
      <span class="Pa">std.$MACHINE</span>. The embedded config file can be
      extracted from the resulting kernel with <a class="Xr">config(1)</a>
      <code class="Fl">-x</code>, or by the following command:
    <div class="Bd Pp Bd-indent Li">
    <pre>strings netbsd | sed -n 's/^_CFG_//p' | unvis</pre>
    </div>
  </dd>
  <dt><code class="Cd">options INCLUDE_JUST_CONFIG</code></dt>
  <dd>Similar to the above option, but includes just the actual config file, not
      any included files.</dd>
  <dt><code class="Cd">options PIPE_SOCKETPAIR</code></dt>
  <dd>Use slower, but smaller socketpair(2)-based pipe implementation instead of
      default faster, but bigger one. Primarily useful for installation
    kernels.</dd>
  <dt><code class="Cd">options USERCONF</code></dt>
  <dd>Compiles in the in-kernel device configuration manager. See
      <a class="Xr">userconf(4)</a> for details.</dd>
  <dt><code class="Cd">options SCDEBUG_DEFAULT</code></dt>
  <dd>Used with the <code class="Cd">options SYSCALL_DEBUG</code> described
      below to choose which types of events are displayed.
    <p class="Pp"></p>
    <div class="Bd-indent">
    <dl class="Bl-tag Bl-compact">
      <dt id="SCDEBUG_CALLS"><a class="permalink" href="#SCDEBUG_CALLS"><code class="Dv">SCDEBUG_CALLS</code></a></dt>
      <dd>Show system call entry points.</dd>
      <dt id="SCDEBUG_RETURNS"><a class="permalink" href="#SCDEBUG_RETURNS"><code class="Dv">SCDEBUG_RETURNS</code></a></dt>
      <dd>Show system call exit points.</dd>
      <dt id="SCDEBUG_ALL"><a class="permalink" href="#SCDEBUG_ALL"><code class="Dv">SCDEBUG_ALL</code></a></dt>
      <dd>Show all system call requests, including unimplemented calls.</dd>
      <dt id="SCDEBUG_SHOWARGS"><a class="permalink" href="#SCDEBUG_SHOWARGS"><code class="Dv">SCDEBUG_SHOWARGS</code></a></dt>
      <dd>Show the arguments provided.</dd>
      <dt id="SCDEBUG_KERNHIST"><a class="permalink" href="#SCDEBUG_KERNHIST"><code class="Dv">SCDEBUG_KERNHIST</code></a></dt>
      <dd>Store a restricted form of the system call debug in a kernel history
          instead of printing it to the console. This option relies upon
          <code class="Cd">options KERNHIST</code>.</dd>
    </dl>
    </div>
    <p class="Pp">The default value is
        <code class="Dv">(SCDEBUG_CALLS|SCDEBUG_RETURNS|SCDEBUG_SHOWARGS)</code>.</p>
  </dd>
  <dt><code class="Cd">options SYSCALL_DEBUG</code></dt>
  <dd>Useful for debugging system call issues, usually in early single user
      bringup. By default, writes entries to the system console for most system
      call events. Can be configured with the <code class="Cd">options
      SCDEBUG_DEFAULT</code> option to to use the <code class="Cd">options
      KERNHIST</code> facility instead.</dd>
  <dt><code class="Cd">options SYSCALL_STATS</code></dt>
  <dd>Count the number of times each system call number is called. The values
      can be read through the sysctl interface and displayed using
      <a class="Xr">systat(1)</a>. <i class="Em">NOTE</i>: not yet available on
      all architectures.</dd>
  <dt id="cpu_counter32"><code class="Cd">options SYSCALL_TIMES</code></dt>
  <dd>Count the time spent (using
      <a class="permalink" href="#cpu_counter32"><code class="Fn">cpu_counter32</code></a>())
      in each system call. <i class="Em">NOTE</i>: Using this option will also
      enable <code class="Cd">options SYSCALL_STATS</code>.</dd>
  <dt id="cpu_hascounter"><code class="Cd">options
    SYSCALL_TIMES_HASCOUNTER</code></dt>
  <dd>Force use of <code class="Fn">cpu_counter32</code>() even if
      <a class="permalink" href="#cpu_hascounter"><code class="Fn">cpu_hascounter</code></a>()
      reports false. Useful for systems where the cycle counter doesn't run at a
      constant rate (e.g. Soekris boxes).</dd>
  <dt><code class="Cd">options XSERVER_DDB</code></dt>
  <dd>A supplement to XSERVER that adds support for entering
      <a class="Xr">ddb(4)</a> while in X11.</dd>
  <dt><code class="Cd">options FILEASSOC</code></dt>
  <dd>Support for <a class="Xr">fileassoc(9)</a>. Required for
      <code class="Cd">options PAX_SEGVGUARD</code> and
      <code class="Cd">pseudo-device veriexec</code>.</dd>
  <dt><code class="Cd">options FILEASSOC_NHOOKS=integer</code></dt>
  <dd>Number of storage slots per file for <a class="Xr">fileassoc(9)</a>.
      Default is 4.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Networking_Options"><a class="permalink" href="#Networking_Options">Networking
  Options</a></h2>
<dl class="Bl-ohang">
  <dt id="NMBCLUSTERS"><code class="Cd">options GATEWAY</code></dt>
  <dd>Enables <i class="Em">IPFORWARDING</i> and (on most ports) increases the
      size of
      <a class="permalink" href="#NMBCLUSTERS"><i class="Em">NMBCLUSTERS</i></a>.
      In general, <i class="Em">GATEWAY</i> is used to indicate that a system
      should act as a router, and <i class="Em">IPFORWARDING</i> is not invoked
      directly. (Note that <i class="Em">GATEWAY</i> has no impact on protocols
      other than IP). <i class="Em">GATEWAY</i> option also compiles IPv4 and
      IPv6 fast forwarding code into the kernel.</dd>
  <dt><code class="Cd">options IPFORWARDING=value</code></dt>
  <dd>If <i class="Em">value</i> is 1 this enables IP routing behavior. If
      <i class="Em">value</i> is 0 (the default), it disables it. The
      <i class="Em">GATEWAY</i> option sets this to 1 automatically. With this
      option enabled, the machine will forward IP datagrams destined for other
      machines between its interfaces. Note that even without this option, the
      kernel will still forward some packets (such as source routed packets)
      &#x2014; removing <i class="Em">GATEWAY</i> and
      <i class="Em">IPFORWARDING</i> is insufficient to stop all routing through
      a bastion host on a firewall &#x2014; source routing is controlled
      independently. Note that IP forwarding may be turned on and off
      independently of the setting of the <i class="Em">IPFORWARDING</i> option
      through the use of the <i class="Em">net.inet.ip.forwarding</i> sysctl
      variable. If <i class="Em">net.inet.ip.forwarding</i> is 1, IP forwarding
      is on. See <a class="Xr">sysctl(8)</a> and <a class="Xr">sysctl(3)</a> for
      details.</dd>
  <dt><code class="Cd">options IFA_STATS</code></dt>
  <dd>Tells the kernel to maintain per-address statistics on bytes sent and
      received over (currently) Internet and AppleTalk addresses. The option is
      not recommended as it degrades system stability.</dd>
  <dt><code class="Cd">options IFQ_MAXLEN=value</code></dt>
  <dd>Increases the allowed size of the network interface packet queues. The
      default queue size is 50 packets, and you do not normally need to increase
      it.</dd>
  <dt><code class="Cd">options IPSELSRC</code></dt>
  <dd>Includes support for source-address selection policies. See
      <a class="Xr">in_getifa(9)</a>.</dd>
  <dt><code class="Cd">options MROUTING</code></dt>
  <dd>Includes support for IP multicast routers. You certainly want
      <i class="Em">INET</i> with this. Multicast routing is controlled by the
      <a class="Xr">mrouted(8)</a> daemon. See also option
      <code class="Cd">PIM</code>.</dd>
  <dt id="MROUTING"><code class="Cd">options PIM</code></dt>
  <dd>Includes support for Protocol Independent Multicast (PIM) routing. You
      need <a class="permalink" href="#MROUTING"><i class="Em">MROUTING</i></a>
      and <i class="Em">INET</i> with this. Software using this can be found
      e.g. in <span class="Pa">pkgsrc/net/xorp</span>.</dd>
  <dt><code class="Cd">options INET</code></dt>
  <dd>Includes support for the TCP/IP protocol stack. You almost certainly want
      this. See <a class="Xr">inet(4)</a> for details.</dd>
  <dt id="INET6"><code class="Cd">options INET6</code></dt>
  <dd>Includes support for the IPv6 protocol stack. See
      <a class="Xr">inet6(4)</a> for details. Unlike <i class="Em">INET</i>,
      <a class="permalink" href="#INET6"><i class="Em">INET6</i></a> enables
      multicast routing code as well. This option requires
      <i class="Em">INET</i> at this moment, but it should not.</dd>
  <dt><code class="Cd">options ND6_DEBUG</code></dt>
  <dd>The option sets the default value of net.inet6.icmp6.nd6_debug to 1, for
      debugging IPv6 neighbor discovery protocol handling. See
      <a class="Xr">sysctl(3)</a> for details.</dd>
  <dt><code class="Cd">options IPSEC</code></dt>
  <dd>Includes support for the IPsec protocol, using the implementation derived
      from <span class="Ux">OpenBSD</span>, relying on
      <a class="Xr">opencrypto(9)</a> to carry out cryptographic operations. See
      <a class="Xr">ipsec(4)</a> for details.</dd>
  <dt><code class="Cd">options IPSEC_DEBUG</code></dt>
  <dd>Enables debugging code in IPsec stack. See <a class="Xr">ipsec(4)</a> for
      details. The <code class="Cd">IPSEC</code> option includes support for
      IPsec Network Address Translator traversal (NAT-T), as described in RFCs
      3947 and 3948. This feature might be patent-encumbered in some
    countries.</dd>
  <dt><code class="Cd">options ALTQ</code></dt>
  <dd>Enabled ALTQ (Alternate Queueing). For simple rate-limiting, use
      <a class="Xr">tbrconfig(8)</a> to set up the interface transmission rate.
      To use queueing disciplines, their appropriate kernel options should also
      be defined (documented below). Queueing disciplines are managed by
      <a class="Xr">altqd(8)</a>. See <a class="Xr">altq(9)</a> for
    details.</dd>
  <dt><code class="Cd">options ALTQ_HFSC</code></dt>
  <dd>Include support for ALTQ-implemented HFSC (Hierarchical Fair Service
      Curve) module. HFSC supports both link-sharing and guaranteed real-time
      services. HFSC employs a service curve based QoS model, and its unique
      feature is an ability to decouple delay and bandwidth allocation. Requires
      <i class="Em">ALTQ_RED</i> to use the RED queueing discipline on HFSC
      classes, or <i class="Em">ALTQ_RIO</i> to use the RIO queueing discipline
      on HFSC classes. This option assumes <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_PRIQ</code></dt>
  <dd>Include support for ALTQ-implemented PRIQ (Priority Queueing). PRIQ
      implements a simple priority-based queueing discipline. A higher priority
      class is always served first. Requires <i class="Em">ALTQ_RED</i> to use
      the RED queueing discipline on HFSC classes, or <i class="Em">ALTQ_RIO</i>
      to use the RIO queueing discipline on HFSC classes. This option assumes
      <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_WFQ</code></dt>
  <dd>Include support for ALTQ-implemented WFQ (Weighted Fair Queueing). WFQ
      implements a weighted-round robin scheduler for a set of queues. A weight
      can be assigned to each queue to give a different proportion of the link
      capacity. A hash function is used to map a flow to one of a set of queues.
      This option assumes <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_FIFOQ</code></dt>
  <dd>Include support for ALTQ-implemented FIFO queueing. FIFOQ is a simple
      drop-tail FIFO (First In, First Out) queueing discipline. This option
      assumes <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_RIO</code></dt>
  <dd>Include support for ALTQ-implemented RIO (RED with In/Out). The original
      RIO has 2 sets of RED parameters; one for in-profile packets and the other
      for out-of-profile packets. At the ingress of the network, profile meters
      tag packets as IN or OUT based on contracted profiles for customers.
      Inside the network, IN packets receive preferential treatment by the RIO
      dropper. ALTQ/RIO has 3 drop precedence levels defined for the Assured
      Forwarding PHB of DiffServ (RFC 2597). This option assumes
      <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_BLUE</code></dt>
  <dd>Include support for ALTQ-implemented Blue buffer management. Blue is
      another active buffer management mechanism. This option assumes
      <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_FLOWVALVE</code></dt>
  <dd>Include support for ALTQ-implemented Flowvalve. Flowvalve is a simple
      implementation of a RED penalty box that identifies and punishes
      misbehaving flows. This option requires <i class="Em">ALTQ_RED</i> and
      assumes <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_CDNR</code></dt>
  <dd>Include support for ALTQ-implemented CDNR (diffserv traffic conditioner)
      packet marking/manipulation. Traffic conditioners are components to meter,
      mark, or drop incoming packets according to some rules. As opposed to
      queueing disciplines, traffic conditioners handle incoming packets at an
      input interface. This option assumes <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_NOPCC</code></dt>
  <dd>Disables use of processor cycle counter to measure time in ALTQ. This
      option should be defined for a non-Pentium i386 CPU which does not have
      TSC, SMP (per-CPU counters are not in sync), or power management which
      affects processor cycle counter. This option assumes
      <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_IPSEC</code></dt>
  <dd>Include support for IPsec in IPv4 ALTQ. This option assumes
      <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_JOBS</code></dt>
  <dd>Include support for ALTQ-implemented JoBS (Joint Buffer Management and
      Scheduling). This option assumes <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_AFMAP</code></dt>
  <dd>Include support for an undocumented ALTQ feature that is used to map an IP
      flow to an ATM VC (Virtual Circuit). This option assumes
      <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options ALTQ_LOCALQ</code></dt>
  <dd>Include support for ALTQ-implemented local queues. Its practical use is
      undefined. Assumes <i class="Em">ALTQ</i>.</dd>
  <dt><code class="Cd">options SUBNETSARELOCAL</code></dt>
  <dd>Sets default value for net.inet.ip.subnetsarelocal variable, which
      controls whether non-directly-connected subnets of connected networks are
      considered &quot;local&quot; for purposes of choosing the MSS for a TCP
      connection. This is mostly present for historic reasons and completely
      irrelevant if you enable Path MTU discovery.</dd>
  <dt><code class="Cd">options HOSTZEROBROADCAST</code></dt>
  <dd>Sets default value for net.inet.ip.hostzerobroadcast variable, which
      controls whether the zeroth host address of each connected subnet is also
      considered a broadcast address. Default value is &quot;1&quot;, for
      compatibility with old systems; if this is set to zero on all hosts on a
      subnet, you should be able to fit an extra host per subnet on the
      &quot;.0&quot; address.</dd>
  <dt id="MCLBYTES"><code class="Cd">options MCLSHIFT=value</code></dt>
  <dd>This option is the base-2 logarithm of the size of mbuf clusters. The
      <span class="Ux">BSD</span> networking stack keeps network packets in a
      linked list, or chain, of kernel buffer objects called mbufs. The system
      provides larger mbuf clusters as an optimization for large packets,
      instead of using long chains for large packets. The mbuf cluster size, or
      <a class="permalink" href="#MCLBYTES"><i class="Em">MCLBYTES</i></a>, must
      be a power of two, and is computed as two raised to the power
      <i class="Em">MCLSHIFT</i>. On systems with Ethernet network adapters,
      <i class="Em">MCLSHIFT</i> is often set to 11, giving 2048-byte mbuf
      clusters, large enough to hold a 1500-byte Ethernet frame in a single
      cluster. Systems with network interfaces supporting larger frame sizes
      like ATM, FDDI, or HIPPI may perform better with
      <i class="Em">MCLSHIFT</i> set to 12 or 13, giving mbuf cluster sizes of
      4096 and 8192 bytes, respectively.</dd>
  <dt id="Datagram"><code class="Cd">options NETATALK</code></dt>
  <dd>Include support for the AppleTalk protocol stack. The kernel provides
      provision for the
      <a class="permalink" href="#Datagram"><i class="Em">Datagram Delivery
      Protocol</i></a> (DDP), providing SOCK_DGRAM support and AppleTalk
      routing. This stack is used by the
      <a class="permalink" href="#NETATALK"><i class="Em" id="NETATALK">NETATALK</i></a>
      package, which adds support for AppleTalk server services via user
      libraries and applications.</dd>
  <dt><code class="Cd">options BLUETOOTH</code></dt>
  <dd>Include support for the Bluetooth protocol stack. See
      <a class="Xr">bluetooth(4)</a> for details.</dd>
  <dt><code class="Cd">options IPNOPRIVPORTS</code></dt>
  <dd>Normally, only root can bind a socket descriptor to a so-called
      &#x201C;privileged&#x201D; TCP port, that is, a port number in the range
      0-1023. This option eliminates those checks from the kernel. This can be
      useful if there is a desire to allow daemons without privileges to bind
      those ports, e.g., on firewalls. The security tradeoffs in doing this are
      subtle. This option should only be used by experts.</dd>
  <dt id="TCP_NDEBUG"><code class="Cd">options TCP_DEBUG</code></dt>
  <dd>Record the last
      <a class="permalink" href="#TCP_NDEBUG"><i class="Em">TCP_NDEBUG</i></a>
      TCP packets with SO_DEBUG set, and decode to the console if
      <a class="permalink" href="#tcpconsdebug"><i class="Em" id="tcpconsdebug">tcpconsdebug</i></a>
      is set.</dd>
  <dt id="TCP_DEBUG"><code class="Cd">options TCP_NDEBUG</code></dt>
  <dd>Number of packets to record for
      <a class="permalink" href="#TCP_DEBUG"><i class="Em">TCP_DEBUG</i></a>.
      Defaults to 100.</dd>
  <dt><code class="Cd">options TCP_SENDSPACE=value</code></dt>
  <dd></dd>
  <dt><code class="Cd">options TCP_RECVSPACE=value</code></dt>
  <dd>These options set the max TCP window size to other sizes than the default.
      The TCP window sizes can be altered via <a class="Xr">sysctl(8)</a> as
      well.</dd>
  <dt><code class="Cd">options TCP_INIT_WIN=value</code></dt>
  <dd>This option sets the initial TCP window size for non-local connections,
      which is used when the transmission starts. The default size is 1, but if
      the machine should act more aggressively, the initial size can be set to
      some other value. The initial TCP window size can be set via
      <a class="Xr">sysctl(8)</a> as well.</dd>
  <dt><code class="Cd">options TCP_SIGNATURE</code></dt>
  <dd>Enable MD5 TCP signatures (RFC 2385) to protect BGP sessions.</dd>
  <dt><code class="Cd">options IPFILTER_LOG</code></dt>
  <dd>This option, in conjunction with <i class="Em">pseudo-device ipfilter</i>,
      enables logging of IP packets using IP-Filter.</dd>
  <dt><code class="Cd">options IPFILTER_LOOKUP</code></dt>
  <dd>This option enables the IP-Filter <a class="Xr">ippool(8)</a>
      functionality to be enabled.</dd>
  <dt><code class="Cd">options IPFILTER_COMPAT</code></dt>
  <dd>This option enables older IP-Filter binaries to work.</dd>
  <dt><code class="Cd">options IPFILTER_DEFAULT_BLOCK</code></dt>
  <dd>This option sets the default policy of IP-Filter. If it is set, IP-Filter
      will block packets by default.</dd>
  <dt><code class="Cd">options MBUFTRACE</code></dt>
  <dd>This option can help track down mbuf leaks. When enabled, mbufs are tagged
      with the devices and protocols using them. This can significantly decrease
      network performance, particularly on MP systems. This additional
      information can be viewed with <a class="Xr">netstat(1)</a>:
    <div class="Bd Bd-indent"><code class="Li"><code class="Ic">netstat</code>
      <code class="Fl">-mssv</code></code></div>
    Not all devices or protocols support this option.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Sysctl_Related_Options"><a class="permalink" href="#Sysctl_Related_Options">Sysctl
  Related Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options SYSCTL_DISALLOW_CREATE</code></dt>
  <dd>Disallows the creation or deletion of nodes from the sysctl tree, as well
      as the assigning of descriptions to nodes that lack them, by any process.
      These operations are still available to kernel sub-systems, including
      loadable kernel modules.</dd>
  <dt><code class="Cd">options SYSCTL_DISALLOW_KWRITE</code></dt>
  <dd>Prevents processes from adding nodes to the sysctl tree that make existing
      kernel memory areas writable. Sections of kernel memory can still be read
      and new nodes that own their own data may still be writable.</dd>
  <dt><code class="Cd">options SYSCTL_DEBUG_SETUP</code></dt>
  <dd>Causes the SYSCTL_SETUP routines to print a brief message when they are
      invoked. This is merely meant as an aid in determining the order in which
      sections of the tree are created.</dd>
  <dt id="sysctl_create"><code class="Cd">options
    SYSCTL_DEBUG_CREATE</code></dt>
  <dd>Prints a message each time
      <a class="permalink" href="#sysctl_create"><code class="Fn">sysctl_create</code></a>(),
      the function that adds nodes to the tree, is called.</dd>
  <dt><code class="Cd">options SYSCTL_INCLUDE_DESCR</code></dt>
  <dd>Causes the kernel to include short, human readable descriptions for nodes
      in the sysctl tree. The descriptions can be retrieved programmatically
      (see <a class="Xr">sysctl(3)</a>), or by the sysctl binary itself (see
      <a class="Xr">sysctl(8)</a>). The descriptions are meant to give an
      indication of the purpose and/or effects of a given node's value, not
      replace the documentation for the given subsystem as a whole.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="System_V_IPC_Options"><a class="permalink" href="#System_V_IPC_Options">System
  V IPC Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options SYSVMSG</code></dt>
  <dd>Includes support for <span class="Ux">AT&amp;T System&#x00A0;V UNIX</span>
      style message queues. See <a class="Xr">msgctl(2)</a>,
      <a class="Xr">msgget(2)</a>, <a class="Xr">msgrcv(2)</a>,
      <a class="Xr">msgsnd(2)</a>.</dd>
  <dt><code class="Cd">options SYSVSEM</code></dt>
  <dd>Includes support for <span class="Ux">AT&amp;T System&#x00A0;V UNIX</span>
      style semaphores. See <a class="Xr">semctl(2)</a>,
      <a class="Xr">semget(2)</a>, <a class="Xr">semop(2)</a>.</dd>
  <dt><code class="Cd">options SEMMNI=value</code></dt>
  <dd>Sets the number of <span class="Ux">AT&amp;T System&#x00A0;V UNIX</span>
      style semaphore identifiers. The GENERIC config file for your port will
      have the default.</dd>
  <dt><code class="Cd">options SEMMNS=value</code></dt>
  <dd>Sets the number of <span class="Ux">AT&amp;T System&#x00A0;V UNIX</span>
      style semaphores in the system. The GENERIC config file for your port will
      have the default.</dd>
  <dt><code class="Cd">options SEMUME=value</code></dt>
  <dd>Sets the maximum number of undo entries per process for
      <span class="Ux">AT&amp;T System&#x00A0;V UNIX</span> style semaphores.
      The GENERIC config file for your port will have the default.</dd>
  <dt><code class="Cd">options SEMMNU=value</code></dt>
  <dd>Sets the number of undo structures in the system for
      <span class="Ux">AT&amp;T System&#x00A0;V UNIX</span> style semaphores.
      The GENERIC config file for your port will have the default.</dd>
  <dt><code class="Cd">options SYSVSHM</code></dt>
  <dd>Includes support for <span class="Ux">AT&amp;T System&#x00A0;V UNIX</span>
      style shared memory. See <a class="Xr">shmat(2)</a>,
      <a class="Xr">shmctl(2)</a>, <a class="Xr">shmdt(2)</a>,
      <a class="Xr">shmget(2)</a>.</dd>
  <dt><code class="Cd">options SHMMAXPGS=value</code></dt>
  <dd>Sets the maximum number of <span class="Ux">AT&amp;T System&#x00A0;V
      UNIX</span> style shared memory pages that are available through the
      <a class="Xr">shmget(2)</a> system call. Default value is 1024 on most
      ports. See <span class="Pa">/usr/include/machine/vmparam.h</span> for the
      default.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="VM_Related_Options"><a class="permalink" href="#VM_Related_Options">VM
  Related Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options NMBCLUSTERS=value</code></dt>
  <dd>The number of mbuf clusters the kernel supports. Mbuf clusters are
      MCLBYTES in size (usually 2k). The default value is calculated from the
      amount of physical memory. Architectures without direct mapping also limit
      it based on the kmem_map size, which is used as backing store. Some archs
      limit the value with &#x2018;NMBCLUSTERS_MAX&#x2019;. See
      <span class="Pa">/usr/include/machine/param.h</span> for those archs. This
      value can be accessed via the kern.mbuf.nmbclusters sysctl variable.
      Increase this value if you get &#x201C;mclpool limit reached&#x201D;
      messages.</dd>
  <dt><code class="Cd">options NMBCLUSTERS_MAX=value</code></dt>
  <dd>The upper limit of NMBCLUSTERS.</dd>
  <dt><code class="Cd">options NKMEMPAGES=value</code></dt>
  <dd></dd>
  <dt><code class="Cd">options NKMEMPAGES_MIN=value</code></dt>
  <dd></dd>
  <dt id="kmem_map"><code class="Cd">options NKMEMPAGES_MAX=value</code></dt>
  <dd>Size of kernel VM map
      <a class="permalink" href="#kmem_map"><i class="Em">kmem_map</i></a>, in
      PAGE_SIZE-sized chunks (the VM page size; this value may be read from the
      <a class="Xr">sysctl(8)</a> variable
      <a class="permalink" href="#hw.pagesize"><i class="Em" id="hw.pagesize">hw.pagesize</i></a>
      ). This VM map is used to map the kernel malloc arena. The kernel attempts
      to auto-size this map based on the amount of physical memory in the
      system. Platform-specific code may place bounds on this computed size,
      which may be viewed with the <a class="Xr">sysctl(8)</a> variable
      <a class="permalink" href="#vm.nkmempages"><i class="Em" id="vm.nkmempages">vm.nkmempages</i></a>.
      See <span class="Pa">/usr/include/machine/param.h</span> for the default
      upper and lower bounds. The related options &#x2018;NKMEMPAGES_MIN&#x2019;
      and &#x2018;NKMEMPAGES_MAX&#x2019; allow the bounds to be overridden in
      the kernel configuration file. These options are provided in the event the
      computed value is insufficient resulting in an &#x201C;out of space in
      kmem_map&#x201D; panic.</dd>
  <dt><code class="Cd">options SB_MAX=value</code></dt>
  <dd>Sets the max size in bytes that a socket buffer is allowed to occupy. The
      default is 256k, but sometimes it needs to be increased, for example when
      using large TCP windows. This option can be changed via
      <a class="Xr">sysctl(8)</a> as well.</dd>
  <dt><code class="Cd">options SOMAXKVA=value</code></dt>
  <dd>Sets the maximum size of kernel virtual memory that the socket buffers are
      allowed to use. The default is 16MB, but in situations where for example
      large TCP windows are used this value must also be increased. This option
      can be changed via <a class="Xr">sysctl(8)</a> as well.</dd>
  <dt><code class="Cd">options BUFCACHE=value</code></dt>
  <dd>Size of the buffer cache as a percentage of total available RAM. Ignored
      if BUFPAGES is also specified.</dd>
  <dt><code class="Cd">options NBUF=value</code></dt>
  <dd>Sets the number of buffer headers available, i.e., the number of open
      files that may have a buffer cache entry. Each buffer header requires
      MAXBSIZE (machine dependent, but usually 65536) bytes. The default value
      is machine dependent, but is usually equal to the value of BUFPAGES.</dd>
  <dt><code class="Cd">options BUFPAGES=value</code></dt>
  <dd>These options set the number of pages available for the buffer cache.
      Their default value is a machine dependent value, often calculated as
      between 5% and 10% of total available RAM.</dd>
  <dt><code class="Cd">options MAXTSIZ=bytes</code></dt>
  <dd>Sets the maximum size limit of a process' text segment. See
      <span class="Pa">/usr/include/machine/vmparam.h</span> for the
      port-specific default.</dd>
  <dt><code class="Cd">options DFLDSIZ=bytes</code></dt>
  <dd>Sets the default size limit of a process' data segment, the value that
      will be returned as the soft limit for <code class="Dv">RLIMIT_DATA</code>
      (as returned by <a class="Xr">getrlimit(2)</a>). See
      <span class="Pa">/usr/include/machine/vmparam.h</span> for the
      port-specific default.</dd>
  <dt><code class="Cd">options MAXDSIZ=bytes</code></dt>
  <dd>Sets the maximum size limit of a process' data segment, the value that
      will be returned as the hard limit for <code class="Dv">RLIMIT_DATA</code>
      (as returned by <a class="Xr">getrlimit(2)</a>). See
      <span class="Pa">/usr/include/machine/vmparam.h</span> for the
      port-specific default.</dd>
  <dt><code class="Cd">options DFLSSIZ=bytes</code></dt>
  <dd>Sets the default size limit of a process' stack segment, the value that
      will be returned as the soft limit for
      <code class="Dv">RLIMIT_STACK</code> (as returned by
      <a class="Xr">getrlimit(2)</a>). See
      <span class="Pa">/usr/include/machine/vmparam.h</span> for the
      port-specific default.</dd>
  <dt><code class="Cd">options MAXSSIZ=bytes</code></dt>
  <dd>Sets the maximum size limit of a process' stack segment, the value that
      will be returned as the hard limit for
      <code class="Dv">RLIMIT_STACK</code> (as returned by
      <a class="Xr">getrlimit(2)</a>). See
      <span class="Pa">/usr/include/machine/vmparam.h</span> for the
      port-specific default.</dd>
  <dt id="kern.dump_on_panic"><code class="Cd">options
    DUMP_ON_PANIC=integer</code></dt>
  <dd>Defaults to one. If set to zero, the kernel will not dump to the dump
      device when it panics, though dumps can still be forced via
      <a class="Xr">ddb(4)</a> with the &#x201C;sync&#x201D; command. Note that
      this sets the value of the
      <a class="permalink" href="#kern.dump_on_panic"><i class="Em">kern.dump_on_panic</i></a>
      <a class="Xr">sysctl(3)</a> variable which may be changed at run time
      &#x2014; see <a class="Xr">sysctl(8)</a> for details.</dd>
  <dt><code class="Cd">options VMSWAP</code></dt>
  <dd>Enable paging device/file support. This option is on by default.</dd>
  <dt id="vm.swap_encrypt"><code class="Cd">options
    VMSWAP_DEFAULT_PLAINTEXT</code></dt>
  <dd>Store swap in plaintext, not encrypted, which may expose secrets if the
      underlying nonvolatile medium is disclosed. This option is off by default;
      it is available only for extremely slow machines where the performance
      impact of swapping early at boot outweighs the security risks. Swap
      encryption can still be turned on dynamically with the
      <a class="permalink" href="#vm.swap_encrypt"><i class="Em">vm.swap_encrypt</i></a>
      <a class="Xr">sysctl(7)</a> knob.</dd>
  <dt><code class="Cd">options PDPOLICY_CLOCKPRO</code></dt>
  <dd>Use CLOCK-Pro, an alternative page replace policy.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Security_Options"><a class="permalink" href="#Security_Options">Security
  Options</a></h2>
<dl class="Bl-ohang">
  <dt id="kern.securelevel"><code class="Cd">options INSECURE</code></dt>
  <dd>Initializes the kernel security level with -1 instead of 0. This means
      that the system always starts in secure level -1 mode, even when running
      multiuser, unless the securelevel variable is set to value &gt; -1 in
      <span class="Pa">/etc/rc.conf</span>. In this case the kernel security
      level will be raised to that value when the
      <span class="Pa">/etc/rc.d/securelevel</span> script is run during system
      startup. See the manual page for <a class="Xr">init(8)</a> for details on
      the implications of this. The kernel secure level may manipulated by the
      superuser by altering the
      <a class="permalink" href="#kern.securelevel"><i class="Em">kern.securelevel</i></a>
      <a class="Xr">sysctl(3)</a> variable (the secure level may only be lowered
      by a call from process ID 1, i.e., <a class="Xr">init(8)</a>). See also
      <a class="Xr">secmodel_securelevel(9)</a>, <a class="Xr">sysctl(8)</a> and
      <a class="Xr">sysctl(3)</a>.</dd>
  <dt><code class="Cd">options VERIFIED_EXEC_FP_SHA256</code></dt>
  <dd>Enables support for SHA256 hashes in Veriexec.</dd>
  <dt><code class="Cd">options VERIFIED_EXEC_FP_SHA384</code></dt>
  <dd>Enables support for SHA384 hashes in Veriexec.</dd>
  <dt><code class="Cd">options VERIFIED_EXEC_FP_SHA512</code></dt>
  <dd>Enables support for SHA512 hashes in Veriexec.</dd>
  <dt><code class="Cd">options PAX_MPROTECT=value</code></dt>
  <dd>Enables PaX MPROTECT, <a class="Xr">mprotect(2)</a> restrictions from the
      PaX project.
    <p class="Pp">The <var class="Ar">value</var> is the default value for the
        <i class="Em">global</i> knob, see <a class="Xr">sysctl(3)</a>. If 0,
        PaX MPROTECT will be enabled only if explicitly set on programs using
        <a class="Xr">paxctl(8)</a>. If 1, PaX MPROTECT will be enabled for all
        programs. Programs can be exempted using
      <a class="Xr">paxctl(8)</a>.</p>
    <p class="Pp">See <a class="Xr">security(7)</a> for more details.</p>
  </dd>
  <dt><code class="Cd">options PAX_SEGVGUARD=value</code></dt>
  <dd>Enables PaX Segvguard. Requires <code class="Cd">options FILEASSOC</code>.
    <p class="Pp">The <var class="Ar">value</var> is the default value for the
        <i class="Em">global</i> knob, see <a class="Xr">sysctl(3)</a>. If 0,
        PaX Segvguard will be enabled only if explicitly set on programs using
        <a class="Xr">paxctl(8)</a>. If 1, PaX Segvguard will be enabled to all
        programs, and exemption can be done using
      <a class="Xr">paxctl(8)</a>.</p>
    <p class="Pp">See <a class="Xr">security(7)</a> for more details.</p>
  </dd>
  <dt><code class="Cd">options PAX_ASLR=value</code></dt>
  <dd>Enables PaX ASLR.
    <p class="Pp">The <var class="Ar">value</var> is the default value for the
        <i class="Em">global</i> knob, see <a class="Xr">sysctl(3)</a>. If 0,
        PaX ASLR will be enabled only if explicitly set on programs using
        <a class="Xr">paxctl(8)</a>. If 1, PaX ASLR will be enabled to all
        programs, and exemption can be done using
      <a class="Xr">paxctl(8)</a>.</p>
    <p class="Pp">See <a class="Xr">security(7)</a> for more details.</p>
  </dd>
  <dt><code class="Cd">options USER_VA0_DISABLE_DEFAULT=value</code></dt>
  <dd>Sets the initial value of the flag which controls whether user programs
      can map virtual address 0. The flag can be changed at runtime by
      <a class="Xr">sysctl(3)</a>.</dd>
  <dt><code class="Cd">options KASAN</code></dt>
  <dd>Enables Kernel Address Sanitizer. <i class="Em">NOTE</i>: not available on
      all architectures.</dd>
  <dt><code class="Cd">options KASLR</code></dt>
  <dd>Enables Kernel ASLR. This randomizes the location of the kernel image in
      memory. <i class="Em">NOTE</i>: not available on all architectures.</dd>
  <dt><code class="Cd">options SVS</code></dt>
  <dd>Enables Separate Virtual Space. On architectures that are designed to
      function with a shared address space, this option explicitly isolates the
      kernel and user spaces. <i class="Em">NOTE</i>: not available on all
      architectures.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="amiga-specific_Options"><a class="permalink" href="#amiga-specific_Options">amiga-specific
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options BB060STUPIDROM</code></dt>
  <dd>When the bootloader (which passes AmigaOS ROM information) claims we have
      a 68060 CPU without FPU, go look into the Processor Configuration Register
      (PCR) to find out. You need this with Amiga ROMs up to (at least) V40.xxx
      (OS3.1), when you boot via the bootblocks and don't have a DraCo.</dd>
  <dt><code class="Cd">options IOBZCLOCK=frequency</code></dt>
  <dd>The IOBlix boards come with two different serial master clocks: older ones
      use 24 MHz, newer ones use 22.1184 MHz. The driver normally assumes the
      latter. If your board uses 24 MHz, you can recompile your kernel with
      options IOBZCLOCK=24000000 or patch the kernel variable iobzclock to the
      same value.</dd>
  <dt><code class="Cd">options LIMITMEM=value</code></dt>
  <dd>If there, limit the part of the first memory bank used by
      <span class="Ux">NetBSD</span> to value megabytes. Default is
    unlimited.</dd>
  <dt><code class="Cd">options P5PPC68KBOARD</code></dt>
  <dd>Add special support for Phase5 mixed 68k+PPC boards. Currently, this only
      affects rebooting from <span class="Ux">NetBSD</span> and is only needed
      on 68040+PPC, not on 68060+PPC; without this, affected machines will hang
      after <span class="Ux">NetBSD</span> has shut down and will only restart
      after a keyboard reset or a power cycle.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="atari-specific_Options"><a class="permalink" href="#atari-specific_Options">atari-specific
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options DISKLABEL_AHDI</code></dt>
  <dd>Include support for AHDI (native Atari) disklabels.</dd>
  <dt><code class="Cd">options DISKLABEL_NBDA</code></dt>
  <dd>Include support for <span class="Ux">NetBSD</span>/atari labels. If you
      don't set this option, it will be set automatically.
      <span class="Ux">NetBSD</span>/atari will not work without it.</dd>
  <dt><code class="Cd">options FALCON_SCSI</code></dt>
  <dd>Include support for the 5380-SCSI configuration as found on the
    Falcon.</dd>
  <dt id="Beware"><code class="Cd">options RELOC_KERNEL</code></dt>
  <dd>If set, the kernel will relocate itself to TT-RAM, if possible. This will
      give you a slightly faster system.
      <a class="permalink" href="#Beware"><i class="Em">Beware</i></a> that on
      some TT030 systems, the system will frequently dump with MMU-faults with
      this option enabled.</dd>
  <dt><code class="Cd">options SERCONSOLE</code></dt>
  <dd>Allow the modem1-port to act as the system-console. A carrier should be
      active on modem1 during system boot to active the console
    functionality.</dd>
  <dt><code class="Cd">options TT_SCSI</code></dt>
  <dd>Include support for the 5380-SCSI configuration as found on the TT030 and
      Hades.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="i386-specific_Options"><a class="permalink" href="#i386-specific_Options">i386-specific
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options CPURESET_DELAY=value</code></dt>
  <dd>Specifies the time (in millisecond) to wait before doing a hardware reset
      in the last phase of a reboot. This gives the user a chance to see error
      messages from the shutdown operations (like NFS unmounts, buffer cache
      flush, etc ...). Setting this to 0 will disable the delay. Default is 2
      seconds.</dd>
  <dt><code class="Cd">options USER_LDT</code></dt>
  <dd>Include i386-specific system calls for modifying the local descriptor
      table, used by Windows emulators.</dd>
  <dt><code class="Cd">options PAE</code></dt>
  <dd>Enable PAE (Physical Address Extension) mode. PAE permits up to 36 bits
      physical addressing (64GB of physical memory), and turns physical
      addresses to 64 bits entities in the memory management subsystem. Userland
      virtual address space remains at 32 bits (4GB). PAE mode is required to
      enable the NX/XD (No-eXecute/eXecute Disable) bit for pages, which allows
      marking certain ones as not being executable. Any attempt to execute code
      from such a page will raise an exception.</dd>
  <dt id="REALBASEMEM"><code class="Cd">options REALBASEMEM=integer</code></dt>
  <dd>Overrides the base memory size passed in from the boot block. (Value given
      in kilobytes.) Use this option only if the boot block reports the size
      incorrectly. (Note that some BIOSes put the extended BIOS data area at the
      top of base memory, and therefore report a smaller base memory size to
      prevent programs overwriting it. This is correct behavior, and you should
      not use the
      <a class="permalink" href="#REALBASEMEM"><i class="Em">REALBASEMEM</i></a>
      option to access this memory).</dd>
  <dt><code class="Cd">options SPECTRE_V2_GCC_MITIGATION=1</code></dt>
  <dd>Enable GCC-specific Spectre variant 2 mitigations. For 32-bit kernels this
      means these options:
    <div class="Bd Pp Bd-indent Li">
    <pre>-mindirect-branch=thunk -mindirect-branch-register</pre>
    </div>
    <p class="Pp">For 64-bit kernels this means these options:</p>
    <div class="Bd Pp Bd-indent Li">
    <pre>-mindirect-branch=thunk-inline -mindirect-branch-register</pre>
    </div>
  </dd>
  <dt><code class="Cd">options REALEXTMEM=integer</code></dt>
  <dd>Overrides the extended memory size passed in from the boot block. (Value
      given in kilobytes. Extended memory does not include the first megabyte.)
      Use this option only if the boot block reports the size incorrectly.</dd>
  <dt><code class="Cd">options CYRIX_CACHE_WORKS</code></dt>
  <dd>Relevant only to the Cyrix 486DLC CPU. This option is used to turn on the
      cache in hold-flush mode. It is not turned on by default because it is
      known to have problems in certain motherboard implementations.</dd>
  <dt id="CYRIX_CACHE_WORKS"><code class="Cd">options
    CYRIX_CACHE_REALLY_WORKS</code></dt>
  <dd>Relevant only to the Cyrix 486DLC CPU. This option is used to turn on the
      cache in write-back mode. It is not turned on by default because it is
      known to have problems in certain motherboard implementations. In order
      for this option to take effect, option
      <a class="permalink" href="#CYRIX_CACHE_WORKS"><i class="Em">CYRIX_CACHE_WORKS</i></a>
      must also be specified.</dd>
  <dt><code class="Cd">options PCIBIOS</code></dt>
  <dd>Enable support for initializing the PCI bus using information from the
      BIOS. See <a class="Xr">pcibios(4)</a> for details.</dd>
  <dt><code class="Cd">options MTRR</code></dt>
  <dd>Include support for accessing MTRR registers from user-space. See
      <a class="Xr">i386_get_mtrr(2)</a>.</dd>
  <dt><code class="Cd">options BEEP_ONHALT</code></dt>
  <dd>Make the system speaker emit several beeps when it is completely safe to
      power down the computer after a <a class="Xr">halt(8)</a> command.
      Requires <a class="Xr">sysbeep(4)</a> support.</dd>
  <dt><code class="Cd">options BEEP_ONHALT_COUNT=times</code></dt>
  <dd>Number of times to beep the speaker when <code class="Cd">options
      BEEP_ONHALT</code> is enabled. Defaults to 3.</dd>
  <dt><code class="Cd">options BEEP_ONHALT_PITCH=hz</code></dt>
  <dd>The tone frequency used when <code class="Cd">options BEEP_ONHALT</code>
      option, in hertz. Defaults to 1500.</dd>
  <dt><code class="Cd">options BEEP_ONHALT_PERIOD=msecs</code></dt>
  <dd>The duration of each beep when <code class="Cd">options BEEP_ONHALT</code>
      is enabled, in milliseconds. Defaults to 250.</dd>
  <dt><code class="Cd">options MULTIBOOT</code></dt>
  <dd>Makes the kernel Multiboot-compliant, allowing it to be booted through a
      Multiboot-compliant boot manager such as GRUB. See
      <a class="Xr">multiboot(8)</a> for more information.</dd>
  <dt><code class="Cd">options SPLASHSCREEN</code></dt>
  <dd>Display a splash screen during boot.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="isa-specific_Options"><a class="permalink" href="#isa-specific_Options">isa-specific
  Options</a></h2>
<p class="Pp">Options specific to <a class="Xr">isa(4)</a> busses.</p>
<dl class="Bl-ohang">
  <dt><code class="Cd">options PCIC_ISA_ALLOC_IOBASE=address,
    PCIC_ISA_ALLOC_IOSIZE=size</code></dt>
  <dd>Control the section of IO bus space used for PCMCIA bus space mapping.
      Ideally the probed defaults are satisfactory, however in practice that is
      not always the case. See <a class="Xr">pcmcia(4)</a> for details.</dd>
  <dt><code class="Cd">options PCIC_ISA_INTR_ALLOC_MASK=mask</code></dt>
  <dd>Controls the allowable interrupts that may be used for PCMCIA devices.
      This mask is a logical-or of power-of-2s of allowable interrupts:
    <div class="Bd Pp Bd-indent Li">
    <pre><a class="permalink" href="#IRQ"><i class="Em" id="IRQ">IRQ Val      IRQ Val      IRQ Val       IRQ Val</i></a>
 0  0x0001    4  0x0010    8  0x0100    12  0x1000
 1  0x0002    5  0x0020    9  0x0200    13  0x2000
 2  0x0004    6  0x0040   10  0x0400    14  0x4000
 3  0x0008    7  0x0080   11  0x0800    15  0x8000</pre>
    </div>
  </dd>
  <dt><code class="Cd">options PCKBC_CNATTACH_SELFTEST</code></dt>
  <dd>Perform a self test of the keyboard controller before attaching it as a
      console. This might be necessary on machines where we boot on cold iron,
      and pckbc refuses to talk until we request a self test. Currently only the
      netwinder port uses it.</dd>
  <dt><code class="Cd">options PCKBD_CNATTACH_MAY_FAIL</code></dt>
  <dd>If this option is set the PS/2 keyboard will not be used as the console if
      it cannot be found during boot. This allows other keyboards, like USB, to
      be the console keyboard.</dd>
  <dt><code class="Cd">options PCKBD_LAYOUT=layout</code></dt>
  <dd>Sets the default keyboard layout, see <a class="Xr">pckbd(4)</a>.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="m68k-specific_Options"><a class="permalink" href="#m68k-specific_Options">m68k-specific
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options FPU_EMULATE</code></dt>
  <dd>Include support for MC68881/MC68882 emulator.</dd>
  <dt><code class="Cd">options FPSP</code></dt>
  <dd>Include support for 68040 floating point.</dd>
  <dt><code class="Cd">options M68020,M68030,M68040,M68060</code></dt>
  <dd>Include support for a specific CPU, at least one (the one you are using)
      should be specified.</dd>
  <dt><code class="Cd">options M060SP</code></dt>
  <dd>Include software support for 68060. This provides emulation of
      unimplemented integer instructions as well as emulation of unimplemented
      floating point instructions and data types and software support for
      floating point traps.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="powerpc-specific_Options_(OEA_Only)"><a class="permalink" href="#powerpc-specific_Options_(OEA_Only)">powerpc-specific
  Options (OEA Only)</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options PMAP_MEMLIMIT=value</code></dt>
  <dd>Limit the amount of memory seen by the kernel to
      <var class="Ar">value</var> bytes.</dd>
  <dt><code class="Cd">options PTEGCOUNT=value</code></dt>
  <dd>Specify the size of the page table as <var class="Ar">value</var> PTE
      groups. Normally, one PTEG is allocated per physical page frame.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="sparc-specific_Options"><a class="permalink" href="#sparc-specific_Options">sparc-specific
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options AUDIO_DEBUG</code></dt>
  <dd>Enable simple event debugging of the logging of the
      <a class="Xr">audio(4)</a> device.</dd>
  <dt><code class="Cd">options BLINK</code></dt>
  <dd>Enable blinking of LED. Blink rate is full cycle every N seconds for N
      &lt; then current load average. See <a class="Xr">getloadavg(3)</a>.</dd>
  <dt><code class="Cd">options COUNT_SW_LEFTOVERS</code></dt>
  <dd>Count how many times the sw SCSI device has left 3, 2, 1 and 0 in the
      sw_3_leftover, sw_2_leftover, sw_1_leftover, and sw_0_leftover variables
      accessible from <a class="Xr">ddb(4)</a>. See
    <a class="Xr">sw(4)</a>.</dd>
  <dt><code class="Cd">options DEBUG_ALIGN</code></dt>
  <dd>Adds debugging messages calls when user-requested alignment fault handling
      happens.</dd>
  <dt><code class="Cd">options DEBUG_EMUL</code></dt>
  <dd>Adds debugging messages calls for emulated floating point and alignment
      fixing operations.</dd>
  <dt><code class="Cd">options EXTREME_DEBUG</code></dt>
  <dd>Adds debugging functions callable from <a class="Xr">ddb(4)</a>. The
      debug_pagetables, test_region and print_fe_map functions print information
      about page tables for the SUN4M platforms only.</dd>
  <dt><code class="Cd">options EXTREME_EXTREME_DEBUG</code></dt>
  <dd>Adds extra info to <i class="Em">options EXTREME_DEBUG</i>.</dd>
  <dt><code class="Cd">options FPU_CONTEXT</code></dt>
  <dd>Make <i class="Em">options COMPAT_SVR4</i> getcontext and setcontext
      include floating point registers.</dd>
  <dt><code class="Cd">options MAGMA_DEBUG</code></dt>
  <dd>Adds debugging messages to the <a class="Xr">magma(4)</a> device.</dd>
  <dt><code class="Cd">options RASTERCONS_FULLSCREEN</code></dt>
  <dd>Use the entire screen for the console.</dd>
  <dt><code class="Cd">options RASTERCONS_SMALLFONT</code></dt>
  <dd>Use the Fixed font on the console, instead of the normal font.</dd>
  <dt><code class="Cd">options SUN4</code></dt>
  <dd>Support sun4 class machines.</dd>
  <dt><code class="Cd">options SUN4C</code></dt>
  <dd>Support sun4c class machines.</dd>
  <dt><code class="Cd">options SUN4M</code></dt>
  <dd>Support sun4m class machines.</dd>
  <dt><code class="Cd">options SUN4_MMU3L</code></dt>
  <dd>Enable support for sun4 3-level MMU machines.</dd>
  <dt><code class="Cd">options V9</code></dt>
  <dd>Enable SPARC V9 assembler in <a class="Xr">ddb(4)</a>.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="sparc64-specific_Options"><a class="permalink" href="#sparc64-specific_Options">sparc64-specific
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options AUDIO_DEBUG</code></dt>
  <dd>Enable simple event debugging of the logging of the
      <a class="Xr">audio(4)</a> device.</dd>
  <dt><code class="Cd">options BLINK</code></dt>
  <dd>Enable blinking of LED. Blink rate is full cycle every N seconds for N
      &lt; then current load average. See <a class="Xr">getloadavg(3)</a>.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="x68k-specific_Options"><a class="permalink" href="#x68k-specific_Options">x68k-specific
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options EXTENDED_MEMORY</code></dt>
  <dd>Include support for extended memory, e.g., TS-6BE16 and 060turbo
    on-board.</dd>
  <dt><code class="Cd">options JUPITER</code></dt>
  <dd>Include support for Jupiter-X MPU accelerator</dd>
  <dt><code class="Cd">options ZSCONSOLE,ZSCN_SPEED=value</code></dt>
  <dd>Use the built-in serial port as the system-console. Speed is specified in
      bps, defaults to 9600.</dd>
  <dt><code class="Cd">options ITE_KERNEL_ATTR=value</code></dt>
  <dd>Set the kernel message attribute for ITE. Value, an integer, is a logical
      or of the following values:
    <div class="Bd-indent">
    <dl class="Bl-tag Bl-compact">
      <dt>1</dt>
      <dd>color inversed</dd>
      <dt>2</dt>
      <dd>underlined</dd>
      <dt>4</dt>
      <dd>bolded</dd>
    </dl>
    </div>
  </dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="x86-specific_Options"><a class="permalink" href="#x86-specific_Options">x86-specific
  Options</a></h2>
<dl class="Bl-ohang">
  <dt><code class="Cd">options NO_PCI_MSI_MSIX</code></dt>
  <dd>Disable support for MSI/MSIX in the kernel. See
      <a class="Xr">pci_msi(9)</a> for details of MSI/MSIX support</dd>
  <dt><code class="Cd">options NO_PREEMPTION</code></dt>
  <dd>Disables <a class="Xr">kpreempt(9)</a> support in the kernel.</dd>
</dl>
</section>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
  ALSO</a></h1>
<p class="Pp"><a class="Xr">config(1)</a>, <a class="Xr">gcc(1)</a>,
    <a class="Xr">gdb(1)</a>, <a class="Xr">ktrace(1)</a>,
    <a class="Xr">quota(1)</a>, <a class="Xr">vndcompress(1)</a>,
    <a class="Xr">gettimeofday(2)</a>, <a class="Xr">i386_get_mtrr(2)</a>,
    <a class="Xr">i386_iopl(2)</a>, <a class="Xr">msgctl(2)</a>,
    <a class="Xr">msgget(2)</a>, <a class="Xr">msgrcv(2)</a>,
    <a class="Xr">msgsnd(2)</a>, <a class="Xr">ntp_adjtime(2)</a>,
    <a class="Xr">ntp_gettime(2)</a>, <a class="Xr">reboot(2)</a>,
    <a class="Xr">semctl(2)</a>, <a class="Xr">semget(2)</a>,
    <a class="Xr">semop(2)</a>, <a class="Xr">shmat(2)</a>,
    <a class="Xr">shmctl(2)</a>, <a class="Xr">shmdt(2)</a>,
    <a class="Xr">shmget(2)</a>, <a class="Xr">sysctl(3)</a>,
    <a class="Xr">apm(4)</a>, <a class="Xr">ddb(4)</a>,
    <a class="Xr">inet(4)</a>, <a class="Xr">md(4)</a>,
    <a class="Xr">pcibios(4)</a>, <a class="Xr">pcmcia(4)</a>,
    <a class="Xr">ppp(4)</a>, <a class="Xr">userconf(4)</a>,
    <a class="Xr">vnd(4)</a>, <a class="Xr">wscons(4)</a>,
    <a class="Xr">config(5)</a>, <a class="Xr">edquota(8)</a>,
    <a class="Xr">init(8)</a>, <a class="Xr">mdsetimage(8)</a>,
    <a class="Xr">mount_cd9660(8)</a>, <a class="Xr">mount_fdesc(8)</a>,
    <a class="Xr">mount_kernfs(8)</a>, <a class="Xr">mount_lfs(8)</a>,
    <a class="Xr">mount_mfs(8)</a>, <a class="Xr">mount_msdos(8)</a>,
    <a class="Xr">mount_nfs(8)</a>, <a class="Xr">mount_ntfs(8)</a>,
    <a class="Xr">mount_null(8)</a>, <a class="Xr">mount_portal(8)</a>,
    <a class="Xr">mount_procfs(8)</a>, <a class="Xr">mount_udf(8)</a>,
    <a class="Xr">mount_umap(8)</a>, <a class="Xr">mount_union(8)</a>,
    <a class="Xr">mrouted(8)</a>, <a class="Xr">newfs_lfs(8)</a>,
    <a class="Xr">ntpd(8)</a>, <a class="Xr">quotaon(8)</a>,
    <a class="Xr">rpc.rquotad(8)</a>, <a class="Xr">sysctl(8)</a>,
    <a class="Xr">cnmagic(9)</a>, <a class="Xr">in_getifa(9)</a>,
    <a class="Xr">kernhist(9)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">The <code class="Nm">options</code> man page first appeared in
    <span class="Ux">NetBSD 1.3</span>.</p>
</section>
</div>
<table class="foot">
  <tr>
    <td class="foot-date">December 12, 2025</td>
    <td class="foot-os">NetBSD 10.1</td>
  </tr>
</table>