Patent ID: 8526326

Claim:
A method comprising: allocating a list of memory buffers that are each available for use by multiple modules executed within a network device, wherein the list includes a first end and a second, opposite end; removing a first memory buffer from the first end of the list by a first module of the multiple modules without locking the list, wherein the first module manipulates memory buffers only on the first end of the list and is further configured to add memory buffers to the first end of the list without locking the list; storing, by the first module of the multiple modules, data in the first memory buffer; extracting, by a second module of the multiple modules, the data stored in the first memory buffer; and after extracting the data stored in the first memory buffer, adding the first memory buffer to the second end of the list by the second module of the multiple modules without locking the list, wherein the second module manipulates memory buffers only on the second end of the list and is further configured to remove memory buffers from the second end of the list without locking the list.