Writing Network Drivers in Go [pdf]
It looks like this is not a pure Go implementation:"We originally implemented these functions in pure Go and tried to force reads and writes
through empty C calls as Go does not have the volatile key word or an equivalent for
our needs as far as we know. This resulted in strange behaviour: while initialization
seemed to work, including the corresponding register getters and setters, the program
failed later when the NIC never set flags that were necessary to continue. We invested
a lot of time in this specific problem but could not find a reason for this behaviour.
With the help of cgo, which enables the use of C code in Go programs, we imported
the corresponding functions in device.h alongside log.h of the original C driver and
replaced our go functions. This fixed the aforementioned problem though we never were
able to provide an exact explanation due to limited time constraints."It's still an interesting effort, and it makes me wonder if we'll ever
see a day when a significant portion of Linux is written in a safer
language.