IP Library Granted Patent US 6,877,157
Granted Patent B2
US 6,877,157 · App. 09/749,143 · Granted Apr 5, 2005

Multi-tasking software architecture

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 6,877,157
App. No.
09/749,143
Granted
Apr 5, 2005
Kind
B2
Abstract

The invention relates to a computer program product comprising semaphore means for stalling a first task until one of a predetermined set of events occurs. The computer program product comprises specific message files associated with said first task for receiving data to be processed by the first task. The occurrence of one of said set of predetermined events causes a piece of data to be written in one of the associated messages files. The computer program in accordance with the invention can be implemented by using any operating system having basic synchronization tools. Such synchronization tools include semaphore means for causing a task to be waiting for a unique event such as the release of the semaphore by another task. They also include blocking mechanisms for temporarily blocking “interruptions” coming from interruption handlers during data writing (message reception) in the message files associated with the first task. The invention, in effect, provides an equivalent to the “select mechanism” but uses only very basic synchronization tools so as to be suitable for embedded systems.

Claims (43)

1. A computer program product comprising:

semaphore means for stalling a first task until one of a predetermined set of events occurs, and

a plurality of message files associated with said first task for receiving data to be processed by the first task, the occurrence of one of said set of predetermined events causing a piece of data to be written in one of the associated message files;

wherein the message files are each given a priority level; and

wherein the first task is capable of processing the data in the message files in order of the priority of the message files.

2. A computer program product as claimed in claim 1 , wherein said set of predetermined events includes hardware interruptions, a hardware interruption causing a selected interruption handler to write data into one of the message files associated with the first task, a blocking mechanism being used for temporarily blocking the interruptions during said data writing into the message file.

3. A computer program product as claimed in any one of claim 1 or 2 , wherein said set of predetermined events includes at least an event causing a second task to write data into one of the associated message files.

4. A computer program product as claimed in claim 1 , wherein the message files with the highest priority level are allocated to interruption handlers so as to receive data from said interruption handlers.

5. A computer program product as claimed in any one of claims 1 to 4 , wherein said message files comprise a data structure which is accessible by pointer manipulation.

6. A computer system for implementing a computer program as claimed in any one of claims 1 to 5 , wherein said system comprises:

a processor for executing a set of schedulable tasks including at least the first task,

a scheduler for selecting one of said schedulable tasks for execution by said processor,

at least an interrupt handler for handling interrupts,

an interrupt server for performing a specific function in response to the occurrence of an interrupt.

7. An electronic apparatus comprising a computer system as claimed in claim 6 .

8. A method of synchronizing a first task with respect to an occurrence of one of a predetermined set of events, the method comprising:

a waiting step for making said first task wait for a specific semaphore until one of said predetermined set of events occurs, said first task being associated with a plurality of message files for receiving data in a message, said data reception being caused by the occurrence of one of said predetermined events, the message files each given a priority level,

a blocking step for temporarily blocking interruptions during reception of said data,

a reception step for receiving said data in at least one of the associated message files,

a wakeup step for waking up said first task upon reception of the data in at least one of its associated files, and

a reading and processing step performed by said first task for reading and processing the data received in at least one of the message files, wherein processing the data comprises processing the data in the message files in order of the priority of the message files.

9. A method as claimed in claim 8 , wherein said set of predetermined events includes hardware interrupts causing interrupt handlers to write data into one of the message files associated with the first task.

10. The computer program product of claim 1 , wherein:

the message files comprise first-in, first-out data structures; and

an interrupt handler is capable of writing data to the first-in, first-out data structures.

11. The computer program product of claim 1 , wherein the semaphore means comprise a counter capable of being incremented when a message is received in any of the message files and capable of being decremented when a message is read from any of the message files by the first task.

12. The method of claim 8 , wherein:

the message files comprise first-in, first-out data structures; and

an interrupt handler is capable of writing data to the first-in, first-out data structures.

13. A system, comprising:

a processor capable of executing at least one task including a first task and at least one interrupt handler;

a memory capable of storing a plurality of message files associated with the first task, the message files containing data to be processed by the first task, the message files each given a priority level;

a scheduler capable of controlling the at least one task; and

an interrupt server capable of providing an interrupt to one of the at least one interrupt handler for processing;

wherein the scheduler is capable of using a semaphore to stall the first task until at least one of a plurality of events occurs; and

wherein the occurrence of at least one of the events causes data to be written in at least one of the message files, the first task capable of processing the data in the message files in order of the priority of the message files.

14. The system of claim 13 , wherein the plurality of events includes a hardware interrupt capable of causing one of the at least one interrupt handler to write data into one of the message files associated with the first task.

15. The system of claim 14 , wherein a blocking mechanism is capable of temporarily blocking the hardware interrupts when data is being written into one of the message files.

16. The system of claim 13 , wherein the plurality of events includes an event causing a second task to write data into one of the message files.

17. The system of claim 13 , wherein one or more of the message files are capable of receiving data from the at least one interrupt handler and are assigned a highest priority level.

18. The system of claim 13 , wherein the message files comprise first-in, first-out data structures.

19. The system of claim 18 , wherein the at least one interrupt handler is capable of writing data to the first-in, first-out data structures.

20. The system of clam 13 , wherein the semaphore comprises a counter capable of being incremented when a message is received in any of the message files and capable of being decremented when a message is read from any of the message files by the first task.

Assignments (9)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2021
From: ARRIS GLOBAL LTD
To: ARRIS ENTERPRISES LLC
Reel/Frame 057142/0645 →
CHANGE OF NAME Recorded Aug 8, 2021
From: PACE MICRO TECHNOLOGY PLC
To: PACE PLC
Reel/Frame 057115/0123 →
CHANGE OF NAME Recorded Aug 8, 2021
From: PACE PLC
To: PACE LIMITED
Reel/Frame 057116/0328 →
CHANGE OF NAME Recorded Aug 8, 2021
From: PACE LIMITED
To: ARRIS GLOBAL LTD
Reel/Frame 057116/0332 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 8, 2019
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: ARRIS GLOBAL LIMITED, F/K/A PACE PLC; 2WIRE, INC.; AURORA NETWORKS, INC.
Reel/Frame 048817/0496 →
SECURITY INTEREST Recorded Sep 15, 2016
From: ARRIS GLOBAL LIMITED F/K/A PACE PLC; 2WIRE, INC.; AURORA NETWORKS, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 040054/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2008
From: KONINIKLIJKE PHILIPS ELECTRONICS N.V.
To: PACE MICRO TECHNOLOGY PLC
Reel/Frame 021243/0122 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2004
From: U.S. PHILIPS CORPORATION
To: KONINKLIJKE PHILIPS ELECTRONICS N.V.
Reel/Frame 015909/0519 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2001
From: MARCO, YVES
To: U.S. PHILIPS CORPORATION
Reel/Frame 011705/0562 →