Resource reservation for real-time self-suspending tasks: Theory and Practice