IP Library Granted Patent US 10,678,744
Granted Patent B2
US 10,678,744 · App. 12/772,433 · Granted Jun 9, 2020

Method and system for lockless interprocessor communication

Inventors: Raymond Richardson (Richmond, CA); Mark Dapoz (Kanata, CA)
Assignee: Wind River Systems, Inc.
G06F15/167G06F9/526G06F9/544
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,678,744
App. No.
12/772,433
Granted
Jun 9, 2020
Kind
B2
Abstract

A computer readable storage medium storing a set of instructions executable by a processor. The set of instructions is operable to receive, from a first processor, a message to be sent to a second processor; store the message in a portion of a shared memory, the shared memory being shared by the first processor and the second processor; store, in an instruction list stored in a further portion of the shared memory, an instruction corresponding to the message; and prompt the second processor to read the message list.

Claims (35)

1. A non-transitory computer readable storage medium storing a set of instructions executable by a first processor configured to be one of a plurality of processors in a system, the set of instructions, when executed by the first processor, causing the first processor to perform operations comprising:

storing a message to be read by a second processor of the plurality of processors in one of a plurality of memory blocks included within a portion of a shared memory, wherein storing the message includes setting a status indicator corresponding to the one of the plurality of the memory blocks to a first indication and wherein the shared memory is configured to be shared by at least the first processor and the second processor;

storing, in an instruction list conveying instructions only from the first processor and only to the second processor and stored in a further portion of the shared memory, an indication corresponding to a location of the one of the plurality of memory blocks containing the message;

prompting the second processor to read the instruction list, wherein the second processor determines the location of the one of the plurality of memory blocks containing the message based on the indication and sets the status indicator corresponding to the one of the plurality of memory blocks to a second indication; and

removing the indication corresponding to the message from the instruction list based on identifying that the status indicator corresponding to the one of the plurality of memory blocks is set to the second indication.

2. The non-transitory computer readable storage medium of claim 1 , wherein the operations further comprise:

receiving, from the second processor, an indication that the second processor has read the message from the one of the plurality of memory blocks wherein the indication prompts the first processor to examine the shared memory.

3. The non-transitory computer readable storage medium of claim 2 , wherein the operations further comprise:

generating an indication that the one of the plurality of memory blocks can be used for a further message.

4. The non-transitory computer readable storage medium of claim 1 , wherein the second processor is prompted to read the instruction list by an inter-processor interrupt sent by the first processor.

5. The non-transitory computer readable storage medium of claim 2 , wherein the first processor is prompted to examine the shared memory by an inter-processor interrupt sent by the second processor.

6. The non-transitory computer readable storage medium of claim 1 , wherein setting the status indicator to the first indication includes changing a state of the one of the plurality of memory blocks from a free state to a sent state.

7. The non-transitory computer readable storage medium of claim 3 , wherein generating the indication that the one of the plurality of memory blocks can be used for a further message comprises changing a state of one of the plurality of memory blocks from a received state to a free state.

8. A system, comprising:

a plurality of processors including at least a first processor and a second processor;

a shared memory; and

an instructions list conveying instructions only from the first processor and only to the second processor and stored in the shared memory,

wherein the first processor stores a message to be read by the second processor in one of a plurality of memory blocks included within a portion of the shared memory, wherein storing the message includes setting a status indicator corresponding to the one of the plurality of the memory blocks to a first indication, wherein the first processor creates an entry in the instructions list, the entry including an indication corresponding to the location of the one of the plurality of memory blocks containing the message, and wherein the first processor prompts the second processor to access the instructions list,

wherein the second processor determines the location of the one of the plurality of memory blocks containing the message based on the indication and sets the status indicator corresponding to the one of the plurality of memory blocks to a second indication,

wherein the first processor removes the entry corresponding to the message from the instruction list based on identifying that the status indicator corresponding to the one of the plurality of memory blocks is set to the second indication.

9. The system of claim 8 , wherein the first processor prompts the second processor to access the instructions list by sending an inter-processor interrupt.

10. The system of claim 8 , wherein the second processor reads the message and acts in accordance with the message.

11. The system of claim 10 , wherein setting the status indicator to the second indication indicates that the message has been read, and wherein the second processor prompts the first processor to examine the shared memory.

12. The system of claim 11 , wherein the second processor prompts the first processor by sending an inter-processor interrupt.

13. The system of claim 8 , wherein storing the message in the one of the plurality of memory blocks comprises setting a state of the one of the plurality of memory blocks to a sent state.

14. The system of claim 8 , wherein the first processor stores a plurality of messages for the second processor in at least a set of the plurality of message blocks, and wherein the first processor creates a plurality of entries in the instructions list, each of the plurality of entries corresponding to one of the plurality of messages.

15. The system of claim 8 , wherein the system further comprises a further instructions list stored in the shared memory, and wherein the second processor stores a further message for the first processor in a further one of the plurality of message blocks, and wherein the second processor creates an entry in the further instructions list corresponding to the further message, and wherein the second processor prompts the first processor to inspect the further instructions list.

16. A method comprising:

storing, by a first processor, a message in one of a plurality of memory blocks included within a portion of a shared memory, wherein storing the message includes setting a status indicator corresponding to the one of the plurality of the memory blocks to a first indication and wherein the shared memory being shared by the first processor and the second processor;

storing, in an instruction list conveying instructions only from the first processor and only to the second processor and stored in a further portion of the shared memory, an indication corresponding to a location of the one of the plurality of memory blocks containing the message;

prompting the second processor to read the instruction list, wherein the second processor determines the location of the one of the plurality of memory blocks containing the message based on the indication and sets the status indicator corresponding to the one of the plurality of memory blocks to a second indication; and

removing the indication corresponding to the message from the instruction list based on identifying that the status indicator of the one of the plurality of memory blocks is set to the second indication.

17. The method of claim 16 , further comprising:

receiving, by the first processor and from the second processor, an indication that the second processor has read the message from the one of the plurality of memory blocks; and

prompting the first processor to examine the shared memory.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Dec 28, 2022
From: GUGGENHEIM CORPORATE FUNDING, LLC
To: WIND RIVER SYSTEMS, INC.
Reel/Frame 062239/0590 →
PATENT SECURITY AGREEMENT Recorded Dec 24, 2018
From: WIND RIVER SYSTEMS, INC.
To: GUGGENHEIM CORPORATE FUNDING, LLC
Reel/Frame 049148/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2010
From: RICHARDSON, RAYMOND; DAPOZ, MARK
To: WIND RIVER SYSTEMS, INC.
Reel/Frame 024353/0091 →