IP Library Granted Patent US 8,832,713
Granted Patent B2
US 8,832,713 · App. 13/586,137 · Granted Sep 9, 2014

Event queues

Inventors: Christopher M. Gould (Leominster, MA); Peter J. McCann (Mason, NH)
Assignee: EMC Corporation
G06F9/545G06F2209/543G06F9/542
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 8,832,713
App. No.
13/586,137
Filed
Aug 15, 2012
Granted
Sep 9, 2014
Kind
B2
Art Unit
2194
USPC
719/312
Abstract

Described are techniques for communicating between one or more producers and one or more consumers. A first consumer of an event queue registers for notification regarding occurrences of one or more events. A producer of the event queue posts one or more notifications to one or more consumers of the event queue regarding one or more occurrences of one or more events. Each of the consumers receive notification regarding occurrences of events for which said each consumer is registered. The first consumer retrieves posted event notifications regarding events for which said first consumer is registered. If the first consumer is executing in user space and an event notification list to which said event notifications for said first consumer are posted is located in shared memory, said first consumer retrieves said posted event notifications without proxying into kernel space.

Claims (33)

1. A method for communicating between one or more producers and one or more consumers comprising:

registering, by a first consumer of an event queue, for notification regarding occurrences of one or more events;

posting, by a producer of the event queue, notification to a plurality of consumers of the event queue regarding one or more occurrences of one or more events, each of said plurality of consumers receiving notification regarding occurrences of events for which said each consumer is registered on a corresponding one of a plurality of event notification lists, said plurality of consumers including said first consumer, said posting including posting a first event notification to said plurality of event notification lists in accordance with a pending policy whereby processing of said producer is blocked if any of the plurality of event notification lists do not have a free entry to post the first event notification, said posting further including:

posting, by said producer, said first event notification to a portion of said plurality of event notification lists; and

blocking execution of said producer because an event notification list of the first consumer does not have a free entry to post the event notification, wherein said blocking blocks said producer from posting the first event notification to the event notification list and any other remaining ones of the plurality of event notification lists not included in the portion; and

retrieving, by said first consumer, posted event notifications regarding events for which said first consumer is registered, wherein, if said first consumer is executing in user space and said event notification list of said plurality of event notification lists to which said event notifications for said first consumer are posted is located in shared memory, said first consumer retrieves said posted event notifications without proxying into kernel space, and wherein if said event notification list of said first consumer is not located in shared memory, said first consumer proxies into kernel space to retrieve said posted event notifications from said event notification list.

2. The method of claim 1 , wherein posting a notification regarding an occurrence of an event includes posting an event notification to an entry in said event notification list and posting additional data to a private data area, said private data area being located in shared memory if said event notification list is included in shared memory.

3. The method of claim 1 , wherein said producer uses a first application programming interface to create a first reference structure to said event queue, and said first consumer uses said first application programming interface to create a second reference structure to said event queue.

4. The method of claim 3 , wherein said first consumer uses a second application programming interface to perfoun said registering, each invocation of said second application programming interface by said first consumer identifying said second reference structure, and wherein said first consumer uses a third programming interface to perfoi La said retrieving, each invocation of said third programming interface by said first consumer identifying said second reference structure.

5. The method of claim 3 , wherein said producer uses a second application programming interface to perform said posting, each invocation of said second application programming interface by said producer identifying said first reference structure.

6. The method of claim 4 , wherein said producer is also a consumer of one or more events for which said producer has registered using said second application programming interface, wherein each invocation of said second application programming interface by said producer identifies said first reference structure.

7. The method of claim 1 , wherein an application programming interface is invoked by code of a container other than said producer and said one or more consumers to create said event queue.

8. The method of claim 1 , wherein said registering, said posting and said retrieving are performed using defined interfaces, said defined interfaces used when said producer executes in user space and said first consumer executes in user space, when said producer executes in user space and said first consumer executes in kernel space, and when said producer executes in kernel space and said first consumer executes in user space.

9. The method of claim 1 , wherein said event queue is associated with a registration database of registered events for which consumers are registered, wherein processing performed to modify said registration database includes performing processing to close a logical gate, awakening all waiting producers of said event queue waiting for a free entry in any notification list of any consumer of said event queue, modifying said registration database, and opening said logical gate.

10. The method of claim 9 , wherein processing performed by said producer in connection with said posting of an event notification for a first event to said event notification list of said first consumer includes:

reading information from said registration database when said producer determines that said logical gate is opened, said information indicating that said first consumer is registered to receive notifications regarding said first event;

acquiring a mutex to synchronize access to said first consumer's event notification list with other producers; and

if there are no free entries in said first consumer's event notification list and said producer is trying to post an event notification to a free entry in said first consumer's event notification list, said producer determines whether the gate is closed, and if the gate is closed, the producer releases said mutex and resumes processing when said gate is opened, and if the gate is open, said producer blocks waiting for a free entry in said first consumer's event notification list.

11. The method of claim 10 , wherein an application programming interface includes a first defined interface for use by a consumer to perform said registering, a second defined interface for use by a consumer to unregister for a specified event, and a third defined interface used by producers and consumers of said event queue to indicate that an invoking container is ending use of said event queue for communications with other containers which have opened said event queue for communications using a fourth defined interface, and wherein code of routines for said first defined interface, said second defined interface and said third defined interface modify said registration database.

12. The method of claim 11 , wherein said application programming interface includes a fifth defined interface used by a producer to perform said posting.

13. The method of claim 12 , wherein said fifth defined interface includes a parameter indicating a policy utilized in connection with posting an event notification to a consumer's event notification list when the consumer's event notification list is full, said parameter indicating one of a plurality of policies, said plurality of policies including said pending policy, overwrite oldest, and overwrite newest, wherein said pending policy causes processing of a posting producer to wait until an entry in the consumer's event notification list is free, said overwrite oldest causes a posting producer to overwrite an oldest entry in the consumer's event notification list when full, and said overwrite newest causes a posting producer to overwrite a newest entry in the consumer's event notification list when full.

14. The method of claim 1 , wherein a defined interface is used by said first consumer to perform said retrieving, said defined interface including a parameter indicating a timeout value, wherein, if said event notification list of said first consumer is empty, said timeout value specifies an amount of time said first consumer waits for an event notification to be posted to said event notification list prior to said first consumer continuing processing.

15. A non-transitory computer readable medium comprising code stored thereon for communicating between one or more producers and one or more consumers, the non-transitory computer readable medium comprising code for:

registering, by a first consumer of an event queue, for notification regarding occurrences of one or more events;

posting, by a producer of the event queue, notification to a plurality of consumers of the event queue regarding one or more occurrences of one or more events, each of said plurality of consumers receiving notification regarding occurrences of events for which said each consumer is registered on a corresponding one of a plurality of event notification lists, said plurality of consumers including said first consumer, said posting including posting a first event notification to said plurality of event notification lists in accordance with a pending policy whereby processing of said producer is blocked if any of the plurality of event notification lists do not have a free entry to post the first event notification, said posting further including:

posting, by said producer, said first event notification to a portion of said plurality of event notification lists; and

blocking execution of said producer because an event notification list of the first consumer does not have a free entry to post the event notification, wherein said blocking blocks said producer from posting the first event notification to the event notification list and any other remaining ones of the plurality of event notification lists not included in the portion; and

retrieving, by said first consumer, posted event notifications regarding events for which said first consumer is registered, wherein, if said first consumer is executing in user space and said event notification list of said plurality of event notification lists to which said event notifications for said first consumer are posted is located in shared memory, said first consumer retrieves said posted event notifications without proxying into kernel space, and wherein if said event notification list of said first consumer is not located in shared memory, said first consumer proxies into kernel space to retrieve said posted event notifications from said event notification list.

16. The non-transitory computer readable medium of claim 15 , wherein posting a notification regarding an occurrence of an event includes posting an event notification to an entry in said event notification list and posting additional data to a private data area, said private data area being located in shared memory if said event notification list is included in shared memory.

17. The non-transitory computer readable medium of claim 15 , wherein said producer uses a first application programming interface to create a first reference structure to said event queue, and said first consumer uses said first application programming interface to create a second reference structure to said event queue.

18. The non-transitory computer readable medium of claim 17 , wherein said first consumer uses a second application programming interface to perform said registering, each invocation of said second application programming interface by said first consumer identifying said second reference structure, and wherein said first consumer uses a third programming interface to perform said retrieving, each invocation of said third programming interface by said first consumer identifying said second reference structure.

19. The non-transitory computer readable medium of claim 15 , wherein the event notification list is implemented using a ring buffer.

20. The non-transitory computer readable medium of claim 15 , wherein the event queue is used by different containers for communicating therebetween, each of said different containers executing in a context of its own address space that is different from address spaces of other containers.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2012
From: GOULD, CHRISTOPHER M.; MCCANN, PETER J.
To: EMC CORPORATION
Reel/Frame 028796/0835 →
Continuity (2)
Continuation 12286493 · Sep 29, 2008
Related Publication 20130042001A1 · Feb 14, 2013