IP Library Granted Patent US 10,671,458
Granted Patent B2
US 10,671,458 · App. 15/042,507 · Granted Jun 2, 2020

Epoll optimisations

Inventors: Steven L. Pope (Costa Mesa, CA); David J. Riddoch (Fenstanton, GB)
Assignee: XILINX, INC.
G06F9/545G06F9/48
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 10,671,458
App. No.
15/042,507
Granted
Jun 2, 2020
Kind
B2
Abstract

A method for managing I/O event notifications in a data processing system comprising a plurality of applications and an operating system having a kernel and an I/O event notification mechanism operable to maintain a plurality of I/O event notification objects each handling a set of file descriptors associated with one or more I/O resources. For each of a plurality of application-level configuration calls: intercepting at a user-level interface a configuration call from an application to the I/O event notification mechanism for configuring an I/O event notification object; and storing a set of parameters of the configuration call at a data structure, each set of parameters representing an operation on the set of file descriptors handled by the I/O event notification object; and subsequently, upon meeting a predetermined criterion: the user-level interface causing the plurality of configuration calls to be effected by means of a first system call to the kernel.

Claims (19)

1. A method for processing a blocking system call at a data processing system comprising an operating system that supports kernel and user-level contexts, the method comprising:

intercepting a blocking system call from an entity running in a kernel context or user-level context, wherein when executed the blocking system call invokes an operation and blocks until the operation occurs;

in response to intercepting the blocking system call, instead of executing the blocking system call, repeatedly executing the system call in non-blocking mode for a first timeout period; and

in response to determining that the system call in non-blocking mode has not returned a value within the first timeout period, subtracting the first timeout period from a second timeout period and executing the blocking system call for a remainder of the second timeout period after subtraction.

2. A method as claimed in claim 1 , further comprising, in response to determining that the system call in non-blocking mode has not returned a value within the first timeout period, enabling interrupts for the entity.

3. A method as claimed in claim 1 , wherein the system call is executed in non-blocking mode with a third timeout of zero.

4. A method as claimed in claim 1 , wherein the intercepting step is performed in the kernel context.

5. A method as claimed in claim 1 , wherein the intercepting step is performed at a user-level interface, the user-level interface:

replacing the blocking system call with a new system call; and

causing, by means of the new system call, the step of repeatedly executing the system call in non-blocking mode to be performed in the kernel context.

6. A method as claimed in claim 1 , wherein the data processing system comprises a plurality of CPU cores.

7. A method as claimed in claim 1 , wherein the step of repeatedly executing the system call in non-blocking mode further comprises not enabling interrupts for the entity whilst the system call is being repeatedly executed in non-blocking mode.

8. A method as claimed in claim 1 , wherein the step of repeatedly executing the system call in non-blocking mode further comprises not enabling interrupts for the entity in respect of the system calls.

9. A method as claimed in claim 1 , wherein the operating system is Linux and the blocking system call is one of epoll( ) select( ) poll( ) read( ) write( ), send( ) recv( ) accept( ) and futex( ).

10. A method as claimed in claim 1 , wherein the first timeout period expresses a maximum number of times that the system call is to be executed in non-blocking mode.

11. A data processing system comprising a memory and one or more processors coupled to the memory, the one or more processors configured to execute an operating system that supports kernel and user-level contexts, the memory having stored therein a plurality of software code portions defining logic for:

intercepting a blocking system call from an entity running in a kernel context or user-level context, wherein when executed the blocking system call invokes an operation and blocks until the operation occurs;

in response to intercepting the blocking system call, instead of executing the blocking system call repeatedly executing the system call in non-blocking mode for a first timeout period; and

in response to determining that the system call in non-blocking mode has not returned a value within the first timeout period, subtracting the first timeout period from a second timeout period and executing the blocking system call for a remainder of the second timeout period after subtraction.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2019
From: SOLARFLARE COMMUNICATIONS, INC.
To: XILINX, INC.
Reel/Frame 051108/0209 →
RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jul 31, 2019
From: ALLY BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 049918/0440 →
SECURITY INTEREST Recorded Mar 7, 2017
From: SOLARFLARE COMMUNICATIONS, INC.
To: ALLY BANK
Reel/Frame 041902/0527 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2016
From: POPE, STEVEN L.; RIDDOCH, DAVID J.
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 038689/0773 →
Continuity (3)
Division 13158176 · Jun 10, 2011
Provisional Application 61470396 · Mar 31, 2011
Related Publication 20160162330A1 · Jun 9, 2016