1. A method comprising: receiving, by a computing device, a data packet, wherein the computing device is operating a plurality of kernel-space software modules that are in a suspended state, and wherein the computing device is also operating a plurality of user-space software modules that are in the suspended state; determining that the data packet is of a particular packet type, wherein data packets of the particular packet type are to be consumed by any of a particular subset of the kernel-space software modules; and while the user-space software modules remain in the suspended state, (i) transitioning at least some kernel-space software modules to a non-suspended state, (ii) consuming, by a particular one of the non-suspended kernel-space software modules, the data packet, and (iii) transitioning the non-suspended kernel-space software modules to the suspended state, wherein a plurality of callback functions have been pre-registered with the computing device by one or more of the non-suspended kernel-space software modules, and wherein transitioning the non-suspended kernel-space software modules to the suspended state comprises calling each of the plurality of callback functions and determining, by way of the calls to the plurality of callback functions, that the associated non-suspended kernel-space software modules can be transitioned to the suspended state.