IP Library Granted Patent US 7,263,685
Granted Patent B2
US 7,263,685 · App. 10/661,321 · Granted Aug 28, 2007

Synchronizing use of a device by multiple software components in accordance with information stored at the device

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 7,263,685
App. No.
10/661,321
Granted
Aug 28, 2007
Kind
B2
Abstract

According to some embodiments, a method is directed to determining via a plurality of flags stored at a PCI device that the PCI device is to perform a first function. The PCI device is shared with a first software component associated with the first function and a second software component associated with a second function, and the plurality of flags comprise a first component flag to indicate free or busy, a second component flag to indicate free or busy, and a turn flag to indicate the first component or the second component. The method further discloses setting the first component flag to busy, setting the turn flag to first component, and performing the first function when the second software component is not using the PCI device. The first function may access the PCI device if either the second component flag is set to free or if the turn flag is set to first component.

Claims (67)

1. A method, comprising:

determining via a plurality of flags stored at a PCI device that the PCI device is to perform a first function, the PCI device being shared with a first software component associated with the first function and a second software component associated with a second function, wherein the plurality of flags comprise a first component flag to indicate free or busy, a second component flag to indicate free or busy, and a turn flag to indicate the first component or the second component;

setting the first component flag to busy;

setting the turn flag to first component; and

performing the first function when the second software component is not using the PCI device,

wherein the first function may access the PCI device if either the second component flag is set to free or if the turn flag is set to first component.

2. The method of claim 1 , further comprising

waiting until either the first component flag is set to free or the turn flag is set to second component before using the device; and

performing the second function when the first software component is not using the PCI device.

3. The method of claim 2 , wherein the first and second component flags are initialized to free.

4. The method of claim 3 , further comprising:

setting the first component flag to busy; and

setting the turn flag to second component.

5. The method of claim 4 , further comprising:

waiting until either the second component flag is free or the turn flag is first component before using the device.

6. The method of claim 5 , further comprising:

setting the first component flag to free after using the device.

7. The method of claim 1 , wherein said performing is in accordance with at least one of: (i) Dekker's algorithm, and (ii) Peterson's algorithm.

8. The method of claim 1 , wherein the plurality of flags are stored using pre-fetchable storage registers at the device.

9. The method of claim 1 , wherein at least one of the first and second software components comprise a device driver.

10. The method of claim 1 , wherein the PCI device comprises at least one of: (i) a network adapter, and (ii) a disk controller.

11. The method of claim 1 , wherein the PCI device comprises a network controller, the first software component comprises a network driver, and the second software component comprises an encryption driver.

12. The method of claim 1 , wherein the first and second software components access the device via at least one of (i) a peripheral component interconnect bus and (ii) a universal serial bus.

13. An apparatus, comprising:

a storage medium having stored thereon instructions that when executed by a machine result in the following:

determining via a plurality of flags stored at a PCI device that the PCI device is to perform a first function, the PCI device being shared with a first software component associated with the first function and a second software component associated with a second function, wherein the plurality of flags comprise a first component flag to indicate free or busy, a second component flag to indicate free or busy, and a turn flag to indicate the first component or the second component;

setting the first component flag to busy;

setting the turn flag to first component; and

performing the first function when the second software component is not using the PCI device,

wherein the first function may access the PCI device if either the second component flag is set to free or if the turn flag is set to first component.

14. The apparatus of claim 13 , wherein the instructions further result in:

waiting until either the first component flag is set to free or the turn flag is set to second component before using the device; and

performing the second function when the first software component is not using the PCI device.

15. The apparatus of claim 14 , wherein the first and second component flags are initialized to free.

16. The apparatus of claim 15 , wherein she instructions further result in:

setting the first component flag to busy, and

setting the turn flag to second component.

17. The apparatus of claim 16 , wherein the instructions further result in:

waiting until either the second component flag is free or the turn flag is first component one before using the device.

18. The apparatus of claim 17 , wherein the instructions further result in:

setting the first component flag to free after using the device.

19. The apparatus of claim 13 , wherein said performing is in accordance with at least one of: (i) Dekker's algorithm, and (ii) Peterson's algorithm.

20. The apparatus of claim 13 , wherein the plurality of registers are stored using pre-fetchable storage registers at the device.

21. The apparatus of claim 13 , wherein at least one of the first and second software components comprise a device driver.

22. The apparatus of claim 13 , wherein the PCI device comprises at least one of: (i) a network adapter, and (ii) a disk controller.

23. An apparatus, comprising:

a processor;

a bus interface, and

a storage medium having stored thereon instructions that when executed by the processor result in the following:

determining via a plurality of flags stored at a PCI device that the PCI device is to perform a first function , the PCI device being shared with a first software component associated with the first function and a second software component associated with a second function, wherein the plurality of flags comprise a first component flag to indicate free or busy, a second component flag to indicate free or busy, and a turn flag to indicate the first component or the second component;

setting the first component flag to busy;

setting the turn flag to first component; and

performing the first function when the second software component is not using the PCI device,

wherein the first function may access the PCI device if either the second component flag is set to free or if the turn flag is set to first component,

wherein the plurality of flags are accessed via the bus interface.

24. The apparatus of claim 23 , wherein the device comprises a peripheral device and the information is stored using pre-fetchable registers at the peripheral device.

25. A system, comprising:

a processor;

a network adapter;

an Ethernet port coupled to the network adapter; and

a storage medium having stored thereon instructions that when executed by the processor result in the following:

determining via a plurality of flags stored at a PCI device that the PCI device is to perform a first function , the PCI device being shared with a first software component associated with the first function and a second software component associated with a second function, wherein the plurality of flags comprise a first component flag to indicate free or busy, a second component flag to indicate free or busy, and a turn flag to indicate the first component or the second component;

setting the first component flag to busy;

setting the turn flag to first component; and

performing the first function when the second software component is not using the PCI device,

wherein the first function may access the PCI device if either the second component flag is set to free or if the turn flag is set to first component.

26. The system of claim 25 , wherein the first software component comprises a network driver and the second software component comprises an encryption driver.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: INTEL CORPORATION
To: TAHOE RESEARCH, LTD.
Reel/Frame 061175/0176 →