This code is highly Linux-specific so move it out of the core repository.
It is intended to at least be extended by subclasses, so isn't really internal, rather part of API.