IP Library Granted Patent US 6,883,006
Granted Patent B2
US 6,883,006 · App. 09/891,684 · Granted Apr 19, 2005

Additions on circular singly linked lists

Assignee: Sun Microsystems, Inc.
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,883,006
App. No.
09/891,684
Granted
Apr 19, 2005
Kind
B2
Abstract

During a scan operation in a circular, singly linked list having a number of list entries each of which has an associated next pointer field and a root pointer register that includes a root pointer that points to, or otherwise references, an arbitrary list entry. In order to add a new list entry to the list, the root pointer included in the root pointer register is copied into a next pointer field of the added list entry. Next, the root pointer register is overwritten with a pointer that points to or otherwise references the added list entry. In this way, additions to a circular, singly linked list that are done at the time of scanning involve only a single SRAM write access.

Claims (57)

1. In a circular singly linked list having a first member having a first member next pointer field, a current pointer register and a root pointer register, a method for adding a new member to the list at an arbitrary location during a scan operation, comprising:

copying a root pointer included in the root pointer register to a new member next pointer field associated with the new member such that the new member next pointer field points to the first member; and

overwriting the root pointer register with a new member root pointer such that the root pointer register points to the new member.

2. A method as recited in claim 1 , wherein the first member includes a first content field suitable for storing a data field.

3. A method as recited in claim 2 , wherein the data field stored in the current content field is read by a consumer during a list scan operation.

4. A method as recited in claim 1 , wherein the addition requires only a single memory access operation.

5. A method as recited in claim 1 , further comprising:

once the new member has been added to the list,

if the root pointer is not NULL, then reading the current pointer register to obtain the next pointer;

if the next pointer is not NULL, the setting a current pointer to the next pointer.

6. A method as recited in claim 5 , further comprising:

if the current pointer is NULL, and

if the root pointer is NULL, then setting the list as an empty list,

if the root pointer is not NULL, then setting the current pointer to the root pointer.

7. A method as recited in claim 5 ,

if the next pointer is NULL, then

if the root pointer is NULL, then setting the list as an empty list,

if the root pointer is not NULL, then setting the current pointer to the root pointer.

8. In a circular singly linked list having a first member having a first member next pointer field, a current pointer register and a root pointer register, an apparatus for adding a new member to the list at an arbitrary location during a scan operation, comprising:

a means for copying a root pointer included in the root pointer register to a new member next pointer field associated with the new member such that the new member next pointer field points to the first member; and

a means for overwriting the root pointer register with a new member root pointer such that the root pointer register points to the new member.

9. An apparatus as recited in claim 8 , wherein the first member includes a first content field suitable for storing a data field.

10. An apparatus as recited in claim 9 , wherein the data field stored in the current content field is read by a consumer during a list scan operation.

11. An apparatus as recited in claim 8 , wherein the addition requires only a single memory access operation.

12. An apparatus as recited in claim 8 , further comprising:

a means for determining if a current pointer is not NULL;

a means for reading the current pointer register to obtain the next pointer when the current pointer is not NULL;

a means for determining if the next pointer is not NULL; and

a means for setting the current pointer to the next pointer.

13. An apparatus as recited in claim 12 , further comprising:

a means for determining if the current pointer is NULL;

a means for determining if the root pointer is NULL;

a means for setting the list as an empty list when the current pointer and the root pointer are NULL; and

a means for setting the current pointer to the root pointer when the root pointer is not NULL.

14. An apparatus as recited in claim 12 , further comprising:

a means for determining if the next pointer is NULL;

a means for setting the List as an empty list when the root pointer is NULL; and

a means for setting the current pointer to the root pointer when the root pointer is not NULL.

15. A computer program product for adding a new member to the list at an arbitrary location during a scan operation in a circular singly linked list having a first member having a first member next pointer field, a current pointer register and a root pointer register, comprising:

computer code for copying a root pointer included in the root pointer register to a new member next pointer field associated with the new member such that the new member next pointer field points to the first member; and

computer code for overwriting the root pointer register with a new member root pointer such that the root pointer register points to the new member; and

a computer-readable medium that stores the computer codes.

16. A computer program product as recited in claim 15 , wherein the first member includes a first content field suitable for storing a data field.

17. A computer program product as recited in claim 16 , wherein the data field stored in the current content field is read by a consumer during a list scan operation.

18. A computer program product as recited in claim 15 , wherein the addition requires only a single memory access operation.

19. An apparatus as recited in claim 18 , further comprising:

computer code for determining if a current pointer is not NULL;

computer code for reading the current pointer register to obtain the next pointer when the current pointer is not NULL;

computer code for determining if the next pointer is not NULL;

computer code for setting the current pointer to the next pointer;

computer code for determining if the current pointer is NULL;

computer code for determining if the root pointer is NULL;

computer code for setting the list as an empty list when the current pointer and the root pointer are NULL;

computer code for setting the current pointer to the root pointer when the root pointer is not NULL;

computer code for determining if the next pointer is NULL;

computer code for setting the list as an empty list when the root pointer is NULL; and

computer code for setting the current pointer to the root pointer when the root pointer is not NULL.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Aug 31, 2016
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 039604/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2001
From: WEBBER, THOMAS PETER
To: SUN MIRCOSYSTEMS, INC.
Reel/Frame 011936/0703 →
Continuity (1)
Related Publication 20020199030A1 · Dec 26, 2002