level-triggered resource observer like select(2)