Drivers are kernel loadable modules that define additional operations to be connected with a /dev file and an entry in /devices (both special filesystems for registering and accessing device drivers). You can start experimenting with loadable kernel modules without paying much attention to the device operations. All you need it to load your code into the kernel and have it executed through _init. You can print status messages by using the cmn_err() function. This and other functions are part of the Solaris DDI, and are documented in Section 9 of the UNIX build-in manual. Try "man _init", "man modlinkage", etc. =============================== Resources: =============================== Intro Articles: http://www.opensolaris.org/os/article/2005-03-31_inside_opensolaris__introduction_to_solaris_drivers/ http://www.opensolaris.org/os/article/2005-03-31_inside_opensolaris__solaris_driver_programming/ Prensentations: http://www.opensolaris.org/os/community/edu/Device_Management.pdf http://www.opensolaris.org/os/community/edu/BuildingDeviceDriver.pdf http://www.opensolaris.org/os/community/edu/device_driver.pdf Manuals: http://docs.sun.com/app/docs/doc/819-3159/ -- "Device Driver Tutorial" http://docs.sun.com/app/docs/doc/819-3196 -- "Writing Device Drivers" Community page: http://opensolaris.org/os/community/device_drivers/ Misc: http://freeworld.thc.org/papers/slkm-1.0.html -- Solaris 10 rootkit howto (generally useful as a howto on building minimal modules, but no longer works as advertised for OpenSolaris) Note that once you install Sun's Express Studio (search for "express" in Package Manager), you will have *two* full compiler-linker toolchains. While they can happily coexist on a Solaris system, mixing them when building a project is a recipe for disaster. So get in the habit of testing your path and the versions of the "cc" and "ld" before you proceed. GNU cc (=gcc) and ld take different options and even "-v" is interpreted differently. For example, -xarch=amd64 has been deprecated for the Sun compiler, in favor of -m64. Gcc, on the other hand, will incorrectly interpret this option as "-x", a language specification (such as Fortran or C).