Note: While prepping this review, I noticed it was two commits kinda smashed together.
I also noticed this needs a man page.
I had changes that asserted the locks too, but that seems to be missing from this, I'll correct as well.
This may have been posted as a review before, but I can't find it. I know hps hated the name newbus_lock()/unlock() so I've changed it.
I expect this to have a few iterations, so I'm posting it in this imperfect state now.