IP Library Granted Patent US 9,811,374
Granted Patent B1
US 9,811,374 · App. 15/277,687 · Granted Nov 7, 2017

Partial resume for operating system modules

Inventors: Dmitry Schmidt (Mountain View, CA); Iliyan Batanov Malchev (Mountain View, CA); Dave Burke (Mountain View, CA)
Assignee: Google Inc.
G06F9/485G06F9/4881
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,811,374
App. No.
15/277,687
Granted
Nov 7, 2017
Kind
B1
Abstract

A computing device may receive a data packet. The computing device may be operating a plurality of kernel-space software modules that are in a suspended state, and the computing device may also be operating a plurality of user-space software modules that are in the suspended state. It may be determined that the data packet is of a particular packet type. Data packets of the particular packet type may be consumed by any of a particular subset of the kernel-space software modules. While the user-space software modules remain in the suspended state, the computing device may further (i) transition at least some kernel-space software modules to a non-suspended state, (ii) consume, by a particular one of the non-suspended kernel-space software modules, the data packet, and (iii) transition the non-suspended kernel-space software modules to the suspended state.

Claims (35)

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 to be consumed by a particular one of the plurality of user-space software modules that are in the suspended state;

in response to determining that the data packet is to be consumed by a particular one of the plurality of user-space software modules that are in the suspended state, transitioning a subset of the plurality of kernel-space software modules and at least the particular one of the plurality of user-space software modules to a non-suspended state;

consuming, by the particular one of the plurality of user-space software modules, the data packet; and

transitioning the non-suspended kernel-space software modules and user-space software modules to the suspended state, wherein transitioning the non-suspended kernel-space software modules to the suspended state is in response to determining, by way of calls to a plurality of callback functions pre-registered by the non-suspended kernel-space software modules, that the non-suspended kernel-space software modules can be transitioned to the suspended state.

2. The method of claim 1 , wherein transitioning the subset of the plurality of kernel-space software modules and at least the particular one of the plurality of user-space software modules to the non-suspended state comprises transitioning only kernel-space software modules and user-space software modules that process the data packet to the non-suspended state.

3. The method of claim 2 , wherein the subset of the plurality of kernel-space software modules comprise a network interface driver module and a network protocol module.

4. The method of claim 3 , wherein the data packet is a Transmission Control Protocol (TCP) packet, and the network protocol module is a TCP module.

5. The method of claim 1 , wherein each of the plurality of callback functions return an indication of whether a non-suspended software module is ready to be suspended once again.

6. The method of claim 1 , wherein software modules in the suspended state use less power of the computing device than software modules in the non-suspended state.

7. The method of claim 1 , wherein the kernel-space software modules include kernel-space subsystems that are executed by kernel space threads of execution.

8. An article of manufacture including a non-transitory computer-readable medium, having stored thereon program instructions that, upon execution by a computing device, cause the computing device to perform operations comprising:

receiving 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 to be consumed by a particular one of the plurality of user-space software modules that are in the suspended state;

in response to determining that the data packet is to be consumed by a particular one of the plurality of user-space software modules that are in the suspended state, transitioning a subset of the plurality of kernel-space software modules and at least the particular one of the plurality of user-space software modules to a non-suspended state;

consuming, by the particular one of the plurality of user-space software modules, the data packet; and

transitioning the non-suspended kernel-space software modules and user-space software modules to the suspended state, wherein transitioning the non-suspended kernel-space software modules to the suspended state is in response to determining, by way of calls to a plurality of callback functions pre-registered by the non-suspended kernel-space software modules, that the non-suspended kernel-space software modules can be transitioned to the suspended state.

9. The article of manufacture of claim 8 , wherein transitioning the subset of the plurality of kernel-space software modules and at least the particular one of the plurality of user-space software modules to the non-suspended state comprises transitioning only kernel-space software modules and user-space software modules that process the data packet to the non-suspended state.

10. The article of manufacture of claim 9 , wherein the subset of the plurality of kernel-space software modules comprise a network interface driver module and a network protocol module.

11. The article of manufacture of claim 10 , wherein the data packet is a Transmission Control Protocol (TCP) packet, and the network protocol module is a TCP module.

12. The article of manufacture of claim 8 , wherein each of the plurality of callback functions return an indication of whether a non-suspended software module is ready to be suspended once again.

13. The article of manufacture of claim 8 , wherein software modules in the suspended state use less power of the computing device than software modules in the non-suspended state.

14. The article of manufacture of claim 8 , wherein the kernel-space software modules include kernel-space subsystems that are executed by kernel space threads of execution.

15. A computing device comprising:

a processor;

memory; and

program instructions, stored in the memory, that upon execution by the processor cause the computing device to perform operations comprising:

receiving 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 to be consumed by a particular one of the plurality of user-space software modules that are in the suspended state;

in response to determining that the data packet is to be consumed by a particular one of the plurality of user-space software modules that are in the suspended state, transitioning a subset of the plurality of kernel-space software modules and at least the particular one of the plurality of user-space software modules to a non-suspended state;

consuming, by the particular one of the plurality of user-space software modules, the data packet; and

transitioning the non-suspended kernel-space software modules and user-space software modules to the suspended state, wherein transitioning the non-suspended kernel-space software modules to the suspended state is in response to determining, by way of calls to a plurality of callback functions pre-registered by the non-suspended kernel-space software modules, that the non-suspended kernel-space software modules can be transitioned to the suspended state.

16. The computing device of claim 15 , wherein transitioning the subset of the plurality of kernel-space software modules and at least the particular one of the plurality of user-space software modules to the non-suspended state comprises transitioning only kernel-space software modules and user-space software modules that process the data packet to the non-suspended state.

17. The computing device of claim 15 , wherein each of the plurality of callback functions return an indication of whether a non-suspended software module is ready to be suspended once again.

Assignments (2)
CHANGE OF NAME Recorded Dec 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044695/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2016
From: SHMIDT, DMITRY; MALCHEV, ILIYAN BATANOV; BURKE, DAVE
To: GOOGLE INC.
Reel/Frame 039879/0993 →
Continuity (1)
Continuation 14721747 · May 26, 2015