freebsd-dev/share/examples/drivers
Warner Losh 226a9d167b Remove 'All Rights Reserved' from the collection copyright and templates.
The original Berkeley Software Distributions were made in the 1980's
and 1990's. At that time, the Buenos Ares Convention of 1910 was in
force in most of the countries in the Americas. It required an
affirmative statement of rights reservation, typically using 'All
Rights Reserved.' The Regents included this phrase in their copyright
notices to invoke this treaty to ensure maximal copyright protection.

In the 1990's, Latin America coutries ratifeid the Berne Convention on
copyrights which prohibited them from requiring an affirmative
statement to reserve the rights. When Nicaragua ratified in 2000, the
Buenos Ares Convention of 1910 was effectively repealed. This made all
the 'All Rights Reserved' phrases obsolete and legal deadweight most
of the time, and certainly in the cases removed here.

Since it's no longer required, and is in fact meaningless, core has
decided to dropped it from the project's collection copyright and
sample templates. It encourages other rights holders to do the same
after consultation with their legal department.

More see https://en.wikipedia.org/wiki/Buenos_Aires_Convention for
more information.

Approved by: core@ (emaste@, jhb@)
Differential Review:  https://reviews.freebsd.org/D15264
2018-05-09 02:02:49 +00:00
..
make_device_driver.sh Remove 'All Rights Reserved' from the collection copyright and templates. 2018-05-09 02:02:49 +00:00
make_pseudo_driver.sh Remove 'All Rights Reserved' from the collection copyright and templates. 2018-05-09 02:02:49 +00:00
README

$FreeBSD$

Author: Julian Elischer

The files in this directory are shell scripts.

They will, when run, create an example skeleton driver
for you. You can use this driver as a starting point for
writing drivers for your own devices. They have all the hooks needed
for initialization, probing, attaching, as well as DEVFS
node creation. They also create sample ioctl commands and a sample
ioctl definition .h file in /sys/sys. In other words they are fully
functional in a 'skeleton' sort of a way. They support multiple devices
so that you may have several of your 'foobar' devices probed and attached
at once.

I expect that these scripts will improve with time.

At present these scripts also link the newly created driver into
the kernel sources in /sys. Possibly a better way would be
to make them interactive. (and ask what kernel tree to use as well as
a name for the driver.).

There are presently two scripts.
One for making a real device driver for ISA devices, and 
one for making a device driver for pseudo devices (e.g. /dev/null).
Hopefully they will be joined by similar scripts for creating
skeletons for PCI devices as well.

Give them a single argument: the name of the driver.
They will use this given name in many places within the driver,
both in lower and upper case form.  (conforming to normal usage).

The skeleton driver should already link with the kernel 
and in fact the shell script will compile a kernel with the new 
drive linked in..  The new kernel should still be 
runnable and the new driver should be
fully callable (once you get your device to probe).
You should simply edit the driver and continue to use
'make' (as done in the script) until your driver does what you want.

The driver will end up in /sys/i386/isa for the device driver script,
and in /sys/dev for the pseudo driver script.