/* -*- auto-fill -*-                                                         */

		Device File System (devfs) Boot Options

		Richard Gooch <rgooch@atnf.csiro.au>

			      18-AUG-2001


When CONFIG_DEVFS_DEBUG is enabled, you can pass several boot options
to the kernel to debug devfs. The boot options are prefixed by
"devfs=", and are separated by commas. Spaces are not allowed. The
syntax looks like this:

devfs=<option1>,<option2>,<option3>

and so on. For example, if you wanted to turn on debugging for module
load requests and device registration, you would do:

devfs=dmod,dreg

You may prefix "no" to any option. This will invert the option.


Debugging Options
=================

These requires CONFIG_DEVFS_DEBUG to be enabled.
Note that all debugging options have 'd' as the first character. By
default all options are off. All debugging output is sent to the
kernel logs. The debugging options do not take effect until the devfs
version message appears (just prior to the root filesystem being
mounted).

These are the options:

dmod		print module load requests to <request_module>

dreg		print device register requests to <devfs_register>

dunreg		print device unregister requests to <devfs_unregister>

dchange		print device change requests to <devfs_set_flags>

dilookup	print inode lookup requests

diget		print VFS inode allocations

diunlink	print inode unlinks

dichange	print inode changes

dimknod		print calls to mknod(2)

dall		some debugging turned on


Other Options
=============

These control the default behaviour of devfs. The options are:

mount		mount devfs onto /dev at boot time

only		disable non-devfs device nodes for devfs-capable drivers
