IP Library › Granted Patent US 11,748,179
Granted Patent B2
US 11,748,179 · App. 17/325,539 · Granted Sep 5, 2023

Dynamic type resolution for shared memory

Inventors: Stuart Ritchie (Bowen Island, CA); Sebastian Sapa (Vancouver, CA); Christopher Neilson (Vancouver, CA); Eric Secules (Vancouver, CA); Peter Edwards (Santa Clara, CA)
Assignee: ARISTA NETWORKS, INC.
G06F9/544G06F9/44536G06F9/5016G06F13/1663G06F2209/503G06F2209/504
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 11,748,179
App. No.
17/325,539
Granted
Sep 5, 2023
Kind
B2
Abstract

A method and apparatus of a network device that allocates a shared memory buffer for an object is described. In an exemplary embodiment, the network device receives an allocation request for the shared memory buffer for the object. In addition, the network device allocates the shared memory buffer from shared memory of a network device, where the shared memory buffer is accessible by a writer and a plurality of readers. The network device further returns a writer pointer to the writer, where the writer pointer references a base address of the shared memory buffer. Furthermore, the network device stores the object in the shared memory buffer, wherein the writer accesses the shared memory using the writer pointer. The network device further shares the writer pointer with at least a first reader of the plurality of readers. The network device additionally translates the base address of the shared memory buffer to a reader pointer, where the reader pointer is expressed in a memory space of the first reader.

Claims (46)

1. A non-transitory machine-readable medium having executable instructions to cause one or more processing units to perform a method to determine an object type for an object shared between a writer and a plurality of readers in a network device, the method comprising:

receiving the object, the object referenced by a reader pointer for one of the plurality of readers in the network device;

obtaining data from the received object that enables indexing into a table;

performing a lookup in the table using the data, the table storing derived type information for a plurality of objects created by the writer;

identifying an entry for the object in the table;

retrieving the derived type information for the object related to the entry;

loading a code associated with the derived type information for the object;

executing a function using the code; and

reading a virtual table pointer from the object to locate the object type in the table.

2. The non-transitory machine-readable medium of claim 1 , wherein the object is a C++ object, D object, or C# object.

3. The non-transitory machine-readable medium of claim 1 , wherein an identifier of the derived type information is stored as a string.

4. The non-transitory machine-readable medium of claim 1 , wherein the writer and the plurality of readers have different memory spaces.

5. The non-transitory machine-readable medium of claim 1 , wherein the derived type information is an Internet Protocol version 4 (IPv4) route.

6. The non-transitory machine-readable medium of claim 1 , further comprising: creating an instance of the object in a memory space of one of the plurality of readers.

7. A method for determining an object type for an object shared between a writer and a plurality of readers in a network device, the method comprising:

receiving the shared object that is referenced by a reader pointer for one of the plurality of readers in the network device;

determining a virtual pointer using at least the shared object;

generating the object type from at least the virtual pointer;

processing the shared object using at least the object type;

determining an object factory from the object type; and

processing the shared object using the object factory,

wherein the object factory includes a function that processes the shared object.

8. The method of claim 7 , further comprising:

creating an instance of the shared object in a memory space of one of the plurality of readers.

9. The method of claim 8 , wherein the determining of the virtual pointer is determined from a writer map that includes a shared library address.

10. The method of claim 8 , wherein the object type is generated by retrieving a type name in a field that is offset from the virtual pointer.

11. The method of claim 7 , further comprising:

caching a mapping of the virtual pointer to the object factory in a memory space of one of the plurality of readers.

12. The method of claim 7 , wherein the object is a C++ object, a D object, or a C# object.

13. The method of claim 7 , further comprising: determining the virtual pointer from a writer map including a shared library address.

14. A network device comprising:

a processor; and

a memory communicatively coupled to the processor, the processor storing instructions executable by the processor to perform a method for determining an object type of a shared object, the method comprising:

receiving the shared object, the shared object being stored in a shared memory and referred to by a reader pointer, the shared memory being shared by a writer and a plurality of readers in the network device;

determining a virtual table pointer from the shared object;

looking up a derived type in a table using the virtual table pointer, the table storing a plurality of virtual table pointers and associated derived types;

loading a code associated with the derived type;

executing functions on the shared object using the code;

receiving a writer pointer, the writer pointer being associated with the shared object; and

translating the writer pointer into the reader pointer.

15. The network device of claim 14 , wherein each of the derived types differ from others of the derived types by at least one of a structure, field, size, and function.

16. The network device of claim 14 , wherein the writer pointer is used by the writer to access the shared object in the shared memory.

17. The network device of claim 14 , wherein the shared object is at least one of a C++ object, D object, and C# object.

18. The network device of claim 14 , wherein the derived type is identified in the table by a type name string and the code is loaded based on the type name string.

19. The network device of claim 14 , wherein the writer and the plurality of readers have different memory spaces.

20. The network device of claim 14 , wherein the derived type is an Internet Protocol version 4 (IPv4) route.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2021
From: RITCHIE, STUART; SAPA, SEBASTIAN; NEILSON, CHRISTOPHER; SECULES, ERIC; EDWARDS, PETER
To: ARISTA NETWORKS, INC.
Reel/Frame 056301/0292 →
Continuity (3)
Continuation 16516995 · Jul 19, 2019
Provisional Application 62739118 · Sep 28, 2018
Related Publication 20210271535A1 · Sep 2, 2021