[$] Sleepable BPF programs
When support for classic BPF was added to the kernel many yearsago, there was no question of whether BPF programs could block in theirexecution. Their functionality was limited to examining a packet'scontents and deciding whether the packet should be forwarded or not; therewas nothing such a program could do to block. Since then, BPF has changeda lot, but the assumption that BPF programs cannot sleep has been builtdeeply into the BPF machinery. More recently, classic BPF has been pushedaside by the extended BPF dialect; thewider applicability of extended BPF is nowforcing a rethink of some basic assumptions.