(no commit message)
authoralexh <alexh@web>
Wed, 4 Mar 2009 12:54:11 +0000 (04:54 -0800)
committerCharlie <root@leaf.dragonflybsd.org>
Wed, 4 Mar 2009 12:54:11 +0000 (04:54 -0800)
docs/howtos/howtonewkerneldeveloper/index.mdwn

index e2d0fdd..e00a57d 100644 (file)
@@ -106,6 +106,32 @@ remote debugger.
 familiarize yourself with gdb first.
 
 
+##Adding files to to the kernel
+When you write a new subsystem or driver, requiring new files, you will have to change some files. If your intention is to add something that is not a module and can't be compiled as such, you only have to edit /usr/src/sys/conf/files. If you intend it to be loadable, you also have to edit a few Makefiles. Generally a Makefile in your directory for the module, plus edit the Makefiles in the directories above yours. In the Makefiles above your module you only have to add your directory to the path. Your Makefile should look something like this:
+
+    SRCS=   est.c
+
+    KMOD=   est
+
+    .include <bsd.kmod.mk>
+
+
+conf/files basically has the following format:
+
+    path/from/src/sys/to/your/code.c <optional / standard> [config_variable_which_enables_this_code]
+
+
+"standard" means that it will always be compiled into the kernel, while "optional" means it is optional and has to be explicitly specified in the config file for it to be built in.
+two examples would be:
+
+    dev/drm/drm_irq.c                       optional drm
+
+    libkern/strtouq.c                       standard
+
+
+The first example will compile drm_irq.c into the kernel whenever the option or driver 'drm' is specified in the config file. The second example will always compile strtouq.c into the kernel.
+
+
 ##Valuable Resources
    
 * Modern Operating Systems (Andrew S. Tanenbaum)