README revision 1.9
11.9Skamil $NetBSD: README,v 1.9 2019/01/17 20:47:42 kamil Exp $ 21.1Spgoyette 31.1Spgoyette Kernel Developer's Manual 41.1Spgoyette 51.1SpgoyetteDESCRIPTION 61.1Spgoyette The kernel example dynamic modules. 71.1Spgoyette 81.6Skamil This directory contains the following example modules: 91.6Skamil * executor - basic implementation of callout and RUN_ONCE 101.1Spgoyette * hello - the simplest `hello world' module 111.6Skamil * luahello - the simplest `hello world' Lua module 121.6Skamil * luareadhappy - demonstrates calling Lua code from C 131.9Skamil * mapper - basic implementation of mmap 141.8Skamil * panic_string - shows how panic is being called through a device 151.8Skamil * ping - basic ioctl(9) 161.1Spgoyette * properties - handle incoming properties during the module load 171.1Spgoyette * readhappy - basic implementation of read(9) with happy numbers 181.7Skamil * readhappy_mpsafe- demonstrates how to make a module MPSAFE 191.5Skamil * sysctl - demonstrates adding a sysctl handle dynamically 201.1Spgoyette 211.1Spgoyette To build the examples you need a local copy of NetBSD sources. You also 221.1Spgoyette need the comp set with toolchain. To build the module just enter a 231.1Spgoyette directory with example modules and use make(1): 241.1Spgoyette 251.1Spgoyette # make 261.1Spgoyette 271.1Spgoyette To load, unload, and stat the module use modload(8), modunload(8) and 281.1Spgoyette modstat(8). 291.1Spgoyette 301.1Spgoyette The S parameter in the Makefile files points to src/sys and it can be 311.1Spgoyette overloaded in this way: 321.1Spgoyette 331.1Spgoyette # make S=/data/netbsd/src/sys 341.1Spgoyette 351.1Spgoyette The code of a module does not need to be in src/sys unless you use 361.1Spgoyette the autoconf(9) framework. 371.1Spgoyette 381.1Spgoyette A cross-built of a module for a target platform is possible with the 391.1Spgoyette build.sh framework. You need to generate the toolchain and set 401.1Spgoyette appropriately PATH to point bin/ in the TOOLDIR path. An example command 411.1Spgoyette to cross-build a module with the amd64 toolchain is as follows: 421.1Spgoyette 431.1Spgoyette # nbmake-amd64 S=/data/netbsd/src/sys 441.1Spgoyette 451.1Spgoyette 461.1Spgoyette The example modules should not be used on a production machine. 471.1Spgoyette 481.1Spgoyette All modules that create a cdevsw should be verified that the major number 491.1Spgoyette should not conflict with a real device. 501.1Spgoyette 511.1SpgoyetteSEE ALSO 521.3Spgoyette modctl(2), module(7), modload(8), modstat(8), modunload(8), module(9), 531.3Spgoyette intro(9lua) 541.1Spgoyette 551.1SpgoyetteHISTORY 561.1Spgoyette An example of handling incoming properties first appeared in NetBSD 5.0 571.1Spgoyette and was written by Julio Merino with further modifications by Martin 581.1Spgoyette Husemann, Adam Hamsik, John Nemeth and Mindaugas Rasiukevicius. 591.1Spgoyette 601.1Spgoyette This document and additional modules (hello, readhappy, properties, 611.4Ssevan ping, luahello and luareadhappy) first appeared in NetBSD 8.0; they were 621.4Ssevan written by Kamil Rytarowski. 631.1Spgoyette 641.7Skamil The readhappy_mpsafe, executor and sysctls modules first appeared in NetBSD 651.7Skamil 9.0 and were authored by Siddharth Muralee. 661.5Skamil 671.8Skamil The panic_string module first appeared in NetBSD 9.0 and was authored by 681.8Skamil Harry Pantazis. 691.8Skamil 701.9Skamil The mapper module first appeared in NetBSD 9.0 and was authored by 711.9Skamil Akul Pillai. 721.9Skamil 731.1SpgoyetteAUTHORS 741.1Spgoyette This document was written by Kamil Rytarowski. 75