It's possible to portably make callbacks typesafe, as well as taking the
existing void * arg. This makes the callers more readable and more typesafe.
Done in a way that doesn't break non-gcc: they just don't get a warning.
Been in linux-next for about two full cycles now, and I really want to start
using this in my own code.