base: add extensible type

Extensible is for carrying additional user-defined
information. Each type of the extension will have a unique
extension ID and there is a linked list of extension in every
Extensible object. There will be most one extension with the same type in
the linked list. With the shared_ptr, the extension will be
deleted automatically. That is, the caller should allocate
the extension and add into the packet.

Change-Id: I54729536a305c91c751d5fb059bd2f9a3db05523
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/62892
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
This commit is contained in:
Yan Lee
2023-02-14 19:47:38 -08:00
parent f028bd55e0
commit 109c327209
3 changed files with 299 additions and 0 deletions

View File

@@ -90,6 +90,7 @@ GTest('bitunion.test', 'bitunion.test.cc')
GTest('channel_addr.test', 'channel_addr.test.cc', 'channel_addr.cc')
GTest('circlebuf.test', 'circlebuf.test.cc')
GTest('circular_queue.test', 'circular_queue.test.cc')
GTest('extensible.test', 'extensible.test.cc')
GTest('sat_counter.test', 'sat_counter.test.cc')
GTest('refcnt.test','refcnt.test.cc')
GTest('condcodes.test', 'condcodes.test.cc')