The char layer has been growing some nasty warts for some time now as we ask it to do things it was never intended on doing. It's been long over due for an overhaul and its become evident to me that we need to address this first before adding any more features to the char layer.
This series is the start at sanitizing the char layer. It effectively turns the char layer into an internal pipe. It supports flow control using an intermediate ring queue for each direction. This series is an RFC because I don't think we should merge the series until we completely convert the old style flow control users to the new style. One particularly nasty area is the mux device. I'm not entirely sure yet how to preceed there.