Actually that is what I originally had (“ctx” as a void *). For some reason I had it in my head that there were folks that didn’t like that and would prefer the 64 bit opaque value that the app was free to use as it saw fit. I will submit the original.
From: Ola Liljedahl [mailto:[email protected]] Sent: Tuesday, August 19, 2014 9:47 AM To: Robbie King (robking) Cc: Bill Fischofer; lng-odp-forward Subject: Re: [lng-odp] [PATCH] Add 64 bit context to packet Better use a pointer than a 64 bit integer. On a 32 bit system, someone may use this to store both a pointer and a 32-bit value of some type. This won't port to a 64-bit system as the pointer alone will consume all reserved space. As Bill writes, use intptr_t or why not just a "void *" if a pointer is what you want? On 19 August 2014 15:01, Robbie King (robking) <[email protected]<mailto:[email protected]>> wrote: Pointer is really all I’m looking for. Just wanted to get as many ‘tidbits’ out of the way before the IPsec application patch. From: Bill Fischofer [mailto:[email protected]<mailto:[email protected]>] Sent: Tuesday, August 19, 2014 8:58 AM To: Robbie King (robking) Cc: lng-odp-forward Subject: Re: [lng-odp] [PATCH] Add 64 bit context to packet Are you really wanting to define a 64-bit integer or are you looking for a pointer? uint64_t is not portable to 32-bit systems, however intptr_t is guaranteed to be a native pointer type of appropriate size. Bill On Tue, Aug 19, 2014 at 7:46 AM, Robbie King <[email protected]<mailto:[email protected]>> wrote: Signed-off-by: Robbie King <[email protected]<mailto:[email protected]>> --- include/odp_packet.h | 18 ++++++++++++++++++ .../linux-generic/include/odp_packet_internal.h | 2 ++ platform/linux-generic/odp_packet.c | 10 ++++++++++ 3 files changed, 30 insertions(+), 0 deletions(-) diff --git a/include/odp_packet.h b/include/odp_packet.h index ef4be9e..db75540 100644 --- a/include/odp_packet.h +++ b/include/odp_packet.h @@ -98,6 +98,24 @@ void odp_packet_set_len(odp_packet_t pkt, size_t len); size_t odp_packet_get_len(odp_packet_t pkt); /** + * Set packet user context + * + * @param buf Packet handle + * @param ctx User context + * + */ +void odp_packet_set_ctx(odp_packet_t buf, uint64_t ctx); + +/** + * Get packet user context + * + * @param buf Packet handle + * + * @return User context + */ +uint64_t odp_packet_get_ctx(odp_packet_t buf); + +/** * Get address to the start of the packet buffer * * The address of the packet buffer is not necessarily the same as the start diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h index 0ab3be2..49c59b2 100644 --- a/platform/linux-generic/include/odp_packet_internal.h +++ b/platform/linux-generic/include/odp_packet_internal.h @@ -112,6 +112,8 @@ typedef struct { uint32_t frame_len; + uint64_t user_ctx; /* user context */ + odp_pktio_t input; uint32_t pad; diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index 13e2471..bbfef49 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -386,3 +386,13 @@ int odp_packet_copy(odp_packet_t pkt_dst, odp_packet_t pkt_src) return 0; } + +void odp_packet_set_ctx(odp_packet_t pkt, uint64_t ctx) +{ + odp_packet_hdr(pkt)->user_ctx = ctx; +} + +uint64_t odp_packet_get_ctx(odp_packet_t pkt) +{ + return odp_packet_hdr(pkt)->user_ctx; +} -- 1.7.7.6 _______________________________________________ lng-odp mailing list [email protected]<mailto:[email protected]> http://lists.linaro.org/mailman/listinfo/lng-odp _______________________________________________ lng-odp mailing list [email protected]<mailto:[email protected]> http://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
