This proposes to add some interfaces for DmaFile (and maybe other necessary structures later).
DmaFile's read/write implementations use Source::collect_rw() which relies on poll_fn to convert a poll-based workflow into async fn. IMHO It would also be natural to expose those poll-based APIs alone with async version. This brings a bit more flexibility by providing another way to use DmaFile under the async environment. Otherwise, we need to do a lot of (bad) workarounds to "poll" those read/write tasks.
Please let me know your opinion!