1 1.15 christos $NetBSD: README,v 1.15 2020/04/30 00:48:10 christos Exp $ 2 1.1 pgoyette 3 1.1 pgoyette Kernel Developer's Manual 4 1.1 pgoyette 5 1.1 pgoyette DESCRIPTION 6 1.1 pgoyette The kernel example dynamic modules. 7 1.1 pgoyette 8 1.6 kamil This directory contains the following example modules: 9 1.14 kamil * current_time - prints current date and time in GMT/UTC 10 1.6 kamil * executor - basic implementation of callout and RUN_ONCE 11 1.13 kamil * fopsmapper - basic implementation of mmap with fileops fo_mmap 12 1.1 pgoyette * hello - the simplest `hello world' module 13 1.6 kamil * luahello - the simplest `hello world' Lua module 14 1.6 kamil * luareadhappy - demonstrates calling Lua code from C 15 1.9 kamil * mapper - basic implementation of mmap 16 1.8 kamil * panic_string - shows how panic is being called through a device 17 1.8 kamil * ping - basic ioctl(9) 18 1.11 kamil * ping_block - basic ioctl(9) with a block device 19 1.1 pgoyette * properties - handle incoming properties during the module load 20 1.15 christos * pollpal - implementation of basic poll(9) using palindrome 21 1.1 pgoyette * readhappy - basic implementation of read(9) with happy numbers 22 1.7 kamil * readhappy_mpsafe- demonstrates how to make a module MPSAFE 23 1.5 kamil * sysctl - demonstrates adding a sysctl handle dynamically 24 1.1 pgoyette 25 1.1 pgoyette To build the examples you need a local copy of NetBSD sources. You also 26 1.1 pgoyette need the comp set with toolchain. To build the module just enter a 27 1.1 pgoyette directory with example modules and use make(1): 28 1.1 pgoyette 29 1.1 pgoyette # make 30 1.1 pgoyette 31 1.1 pgoyette To load, unload, and stat the module use modload(8), modunload(8) and 32 1.1 pgoyette modstat(8). 33 1.1 pgoyette 34 1.1 pgoyette The S parameter in the Makefile files points to src/sys and it can be 35 1.1 pgoyette overloaded in this way: 36 1.1 pgoyette 37 1.1 pgoyette # make S=/data/netbsd/src/sys 38 1.1 pgoyette 39 1.12 pgoyette The code of a module does not need to be in src/sys unless it uses 40 1.1 pgoyette the autoconf(9) framework. 41 1.1 pgoyette 42 1.12 pgoyette A cross-build of a module for a target platform is possible with the 43 1.1 pgoyette build.sh framework. You need to generate the toolchain and set 44 1.1 pgoyette appropriately PATH to point bin/ in the TOOLDIR path. An example command 45 1.1 pgoyette to cross-build a module with the amd64 toolchain is as follows: 46 1.1 pgoyette 47 1.1 pgoyette # nbmake-amd64 S=/data/netbsd/src/sys 48 1.1 pgoyette 49 1.1 pgoyette 50 1.1 pgoyette The example modules should not be used on a production machine. 51 1.1 pgoyette 52 1.12 pgoyette All modules that create a cdevsw (or bdevsw) should be verified that 53 1.12 pgoyette the major number(s) should not conflict with a real device. 54 1.1 pgoyette 55 1.1 pgoyette SEE ALSO 56 1.3 pgoyette modctl(2), module(7), modload(8), modstat(8), modunload(8), module(9), 57 1.3 pgoyette intro(9lua) 58 1.1 pgoyette 59 1.1 pgoyette HISTORY 60 1.1 pgoyette An example of handling incoming properties first appeared in NetBSD 5.0 61 1.1 pgoyette and was written by Julio Merino with further modifications by Martin 62 1.1 pgoyette Husemann, Adam Hamsik, John Nemeth and Mindaugas Rasiukevicius. 63 1.1 pgoyette 64 1.1 pgoyette This document and additional modules (hello, readhappy, properties, 65 1.4 sevan ping, luahello and luareadhappy) first appeared in NetBSD 8.0; they were 66 1.4 sevan written by Kamil Rytarowski. 67 1.1 pgoyette 68 1.7 kamil The readhappy_mpsafe, executor and sysctls modules first appeared in NetBSD 69 1.7 kamil 9.0 and were authored by Siddharth Muralee. 70 1.5 kamil 71 1.8 kamil The panic_string module first appeared in NetBSD 9.0 and was authored by 72 1.8 kamil Harry Pantazis. 73 1.8 kamil 74 1.9 kamil The mapper module first appeared in NetBSD 9.0 and was authored by 75 1.9 kamil Akul Pillai. 76 1.10 kamil 77 1.10 kamil The ping_block module first appeared in NetBSD 10.0 and was authored by 78 1.10 kamil Nisarg Joshi. 79 1.9 kamil 80 1.13 kamil The fopsmapper module first appeared in NetBSD 10.0 and was authored by 81 1.13 kamil Aditya Vardhan Padala. 82 1.13 kamil 83 1.14 kamil The current_time module first appeared in NetBSD 10.0 and was authored by 84 1.14 kamil Apurva Nandan. 85 1.14 kamil 86 1.15 christos The pollpall module first appeared in NetBSD 10.0 and was authored by 87 1.15 christos Ayushi Sharma. 88 1.15 christos 89 1.1 pgoyette AUTHORS 90 1.1 pgoyette This document was written by Kamil Rytarowski. 91