io: add select helpers