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

Reply via email to