Core was generated by `./odp_buffer'.
Program terminated with signal 11, Segmentation fault.
#0 0x0000000000406614 in odp_buf_to_pool (buf=0x134a1300) at ./include/odp_buffer_pool_internal.h:358
358        return odp_pool_to_entry(buf->pool_hdl);
(gdb) bt
#0 0x0000000000406614 in odp_buf_to_pool (buf=0x134a1300) at ./include/odp_buffer_pool_internal.h:358 #1 0x0000000000407964 in odp_buffer_free (buf=2187936352) at odp_buffer_pool.c:518 #2 0x0000000000409666 in odp_packet_free (pkt=2187936352) at odp_packet.c:52 #3 0x000000000040256e in pool_alloc_type (type=1) at buffer/odp_buffer_pool_test.c:171 #4 0x00000000004025c3 in pool_alloc_buffer_raw () at buffer/odp_buffer_pool_test.c:179 #5 0x00007f81826a1f06 in run_single_test (pTest=0x191e0d0, pRunSummary=0x7f81828ab4c0) at TestRun.c:991 #6 0x00007f81826a1b3c in run_single_suite (pSuite=0x191c280, pRunSummary=0x7f81828ab4c0) at TestRun.c:876
#7  0x00007f818269f98b in CU_run_all_tests () at TestRun.c:367
#8  0x00007f81826a3e7d in basic_run_all_tests (pRegistry=0x0) at Basic.c:195
#9  0x00007f81826a3c1a in CU_basic_run_tests () at Basic.c:87
#10 0x000000000040592a in main () at common/odp_cunit_common.c:72
(gdb) p *buf
Cannot access memory at address 0x134a1300
(gdb) l
353 return (pool_entry_t *)get_pool_entry(pool_handle_to_index(pool));
354    }
355
356    static inline pool_entry_t *odp_buf_to_pool(odp_buffer_hdr_t *buf)
357    {
358        return odp_pool_to_entry(buf->pool_hdl);
359    }
360
361 static inline uint32_t odp_buffer_pool_segment_size(odp_buffer_pool_t pool)
362    {
(gdb)

On 01/20/2015 02:18 PM, Petri Savolainen wrote:
Removed odp_buffer_type() from API and made it internal.

Signed-off-by: Petri Savolainen <[email protected]>
---
  platform/linux-generic/include/api/odp_buffer.h    | 16 ----
  .../linux-generic/include/api/odp_buffer_pool.h    |  4 +
  .../linux-generic/include/odp_buffer_internal.h    | 16 ++++
  platform/linux-generic/odp_buffer.c                |  2 +-
  platform/linux-generic/odp_buffer_pool.c           |  4 +-
  platform/linux-generic/odp_event.c                 |  4 +-
  platform/linux-generic/odp_timer.c                 |  4 +-
  test/validation/buffer/odp_buffer_pool_test.c      | 88 +++++++++++++---------
  test/validation/buffer/odp_buffer_test.c           |  4 +-
  test/validation/buffer/odp_packet_test.c           | 15 ++--
  test/validation/odp_pktio.c                        | 16 ++--
  test/validation/odp_timer.c                        |  2 +-
  12 files changed, 97 insertions(+), 78 deletions(-)

diff --git a/platform/linux-generic/include/api/odp_buffer.h 
b/platform/linux-generic/include/api/odp_buffer.h
index 5f825a2..69d5779 100644
--- a/platform/linux-generic/include/api/odp_buffer.h
+++ b/platform/linux-generic/include/api/odp_buffer.h
@@ -69,22 +69,6 @@ void *odp_buffer_addr(odp_buffer_t buf);
  uint32_t odp_buffer_size(odp_buffer_t buf);
/**
- * Buffer type
- *
- * @param buf      Buffer handle
- *
- * @return Buffer type
- */
-int odp_buffer_type(odp_buffer_t buf);
-
-#define ODP_BUFFER_TYPE_INVALID (-1) /**< Buffer type invalid */
-#define ODP_BUFFER_TYPE_ANY       0  /**< Buffer that can hold any other
-                                         buffer type */
-#define ODP_BUFFER_TYPE_RAW       1  /**< Raw buffer, no additional metadata */
-#define ODP_BUFFER_TYPE_PACKET    2  /**< Packet buffer */
-#define ODP_BUFFER_TYPE_TIMEOUT   3  /**< Timeout buffer */
-
-/**
   * Tests if buffer is valid
   *
   * @param buf      Buffer handle
diff --git a/platform/linux-generic/include/api/odp_buffer_pool.h 
b/platform/linux-generic/include/api/odp_buffer_pool.h
index 8380ac1..68fa69e 100644
--- a/platform/linux-generic/include/api/odp_buffer_pool.h
+++ b/platform/linux-generic/include/api/odp_buffer_pool.h
@@ -51,6 +51,10 @@ typedef struct odp_buffer_pool_param_t {
        int      buf_type;  /**< Buffer type */
  } odp_buffer_pool_param_t;
+#define ODP_BUFFER_TYPE_RAW 1 /**< Raw buffer, no additional metadata */
+#define ODP_BUFFER_TYPE_PACKET    2  /**< Packet buffer */
+#define ODP_BUFFER_TYPE_TIMEOUT   3  /**< Timeout buffer */
+
  /**
   * Create a buffer pool
   * This routine is used to create a buffer pool. It take three
diff --git a/platform/linux-generic/include/odp_buffer_internal.h 
b/platform/linux-generic/include/odp_buffer_internal.h
index 39b0b05..0d09531 100644
--- a/platform/linux-generic/include/odp_buffer_internal.h
+++ b/platform/linux-generic/include/odp_buffer_internal.h
@@ -153,6 +153,22 @@ typedef struct {
  /* Forward declarations */
  odp_buffer_t buffer_alloc(odp_buffer_pool_t pool, size_t size);
+
+/*
+ * Buffer type
+ *
+ * @param buf      Buffer handle
+ *
+ * @return Buffer type
+ */
+int _odp_buffer_type(odp_buffer_t buf);
+
+#define _ODP_BUFFER_TYPE_INVALID (-1) /**< Buffer type invalid */
+#define _ODP_BUFFER_TYPE_ANY       0  /**< Buffer that can hold any other
+                                         buffer type */
+
+
+
  #ifdef __cplusplus
  }
  #endif
diff --git a/platform/linux-generic/odp_buffer.c 
b/platform/linux-generic/odp_buffer.c
index 939332a..e657e00 100644
--- a/platform/linux-generic/odp_buffer.c
+++ b/platform/linux-generic/odp_buffer.c
@@ -40,7 +40,7 @@ uint32_t odp_buffer_size(odp_buffer_t buf)
  }
-int odp_buffer_type(odp_buffer_t buf)
+int _odp_buffer_type(odp_buffer_t buf)
  {
        odp_buffer_hdr_t *hdr = odp_buf_to_hdr(buf);
diff --git a/platform/linux-generic/odp_buffer_pool.c b/platform/linux-generic/odp_buffer_pool.c
index eedb380..202d1c7 100644
--- a/platform/linux-generic/odp_buffer_pool.c
+++ b/platform/linux-generic/odp_buffer_pool.c
@@ -160,7 +160,7 @@ odp_buffer_pool_t odp_buffer_pool_create(const char *name,
                break;
case ODP_BUFFER_TYPE_PACKET:
-       case ODP_BUFFER_TYPE_ANY:
+       case _ODP_BUFFER_TYPE_ANY:
                headroom = ODP_CONFIG_PACKET_HEADROOM;
                tailroom = ODP_CONFIG_PACKET_TAILROOM;
                unsegmented = params->buf_size > ODP_CONFIG_PACKET_BUF_LEN_MAX;
@@ -561,7 +561,7 @@ void odp_buffer_pool_print(odp_buffer_pool_t pool_hdl)
                pool->s.params.buf_type == ODP_BUFFER_TYPE_RAW ? "raw" :
               (pool->s.params.buf_type == ODP_BUFFER_TYPE_PACKET ? "packet" :
               (pool->s.params.buf_type == ODP_BUFFER_TYPE_TIMEOUT ? "timeout" :
-              (pool->s.params.buf_type == ODP_BUFFER_TYPE_ANY ? "any" :
+              (pool->s.params.buf_type == _ODP_BUFFER_TYPE_ANY ? "any" :
                "unknown"))));
        ODP_DBG(" pool storage    %sODP managed\n",
                pool->s.flags.user_supplied_shm ?
diff --git a/platform/linux-generic/odp_event.c 
b/platform/linux-generic/odp_event.c
index c646f42..285a19b 100644
--- a/platform/linux-generic/odp_event.c
+++ b/platform/linux-generic/odp_event.c
@@ -6,6 +6,8 @@
#include <odp_event.h>
  #include <odp_buffer.h>
+#include <odp_buffer_pool.h>
+#include <odp_buffer_internal.h>
int odp_event_type(odp_event_t event)
  {
@@ -13,7 +15,7 @@ int odp_event_type(odp_event_t event)
buf = odp_buffer_from_event(event); - switch (odp_buffer_type(buf)) {
+       switch (_odp_buffer_type(buf)) {
        case ODP_BUFFER_TYPE_RAW:
                return ODP_EVENT_BUFFER;
        case ODP_BUFFER_TYPE_PACKET:
diff --git a/platform/linux-generic/odp_timer.c 
b/platform/linux-generic/odp_timer.c
index 322f97f..5d462ba 100644
--- a/platform/linux-generic/odp_timer.c
+++ b/platform/linux-generic/odp_timer.c
@@ -557,7 +557,7 @@ static unsigned timer_expire(odp_timer_pool *tp, uint32_t 
idx, uint64_t tick)
  #endif
        if (odp_likely(tmo_buf != ODP_BUFFER_INVALID)) {
                /* Fill in metadata fields in system timeout buffer */
-               if (odp_buffer_type(tmo_buf) == ODP_BUFFER_TYPE_TIMEOUT) {
+               if (_odp_buffer_type(tmo_buf) == ODP_BUFFER_TYPE_TIMEOUT) {
                        /* Convert from buffer to timeout hdr */
                        odp_timeout_hdr_t *tmo_hdr =
                                timeout_hdr_from_buf(tmo_buf);
@@ -798,7 +798,7 @@ int odp_timer_cancel(odp_timer_t hdl, odp_buffer_t *tmo_buf)
  odp_timeout_t odp_timeout_from_buf(odp_buffer_t buf)
  {
        /* This check not mandated by the API specification */
-       if (odp_buffer_type(buf) != ODP_BUFFER_TYPE_TIMEOUT)
+       if (_odp_buffer_type(buf) != ODP_BUFFER_TYPE_TIMEOUT)
                ODP_ABORT("Buffer not a timeout");
        return (odp_timeout_t)timeout_hdr_from_buf(buf);
  }
diff --git a/test/validation/buffer/odp_buffer_pool_test.c 
b/test/validation/buffer/odp_buffer_pool_test.c
index 6f5eaf7..850f856 100644
--- a/test/validation/buffer/odp_buffer_pool_test.c
+++ b/test/validation/buffer/odp_buffer_pool_test.c
@@ -53,11 +53,6 @@ static void pool_create_destroy_timeout(void)
        pool_create_destroy_type(ODP_BUFFER_TYPE_TIMEOUT);
  }
-static void pool_create_destroy_any(void)
-{
-       pool_create_destroy_type(ODP_BUFFER_TYPE_ANY);
-}
-
  static void pool_create_destroy_raw_shm(void)
  {
        odp_buffer_pool_t pool;
@@ -113,64 +108,85 @@ static void pool_lookup_info_print(void)
        CU_ASSERT(odp_buffer_pool_destroy(pool) == 0);
  }
-static void pool_alloc_buffer_type(int type)
+static void pool_alloc_type(int type)
  {
        odp_buffer_pool_t pool;
-       const int buf_num = 3;
-       const size_t buf_size = 1500;
-       odp_buffer_t buffer[buf_num];
-       int buf_index;
+       const int num = 3;
+       const size_t size = 1500;
+       odp_buffer_t buffer[num];
+       odp_packet_t packet[num];
+       odp_event_t ev;
+       int index;
        char wrong_type = 0, wrong_size = 0;
- pool = pool_create(buf_num, buf_size, type);
+       pool = pool_create(num, size, type);
        odp_buffer_pool_print(pool);
- /* Try to allocate buf_num buffers from the pool */
-       for (buf_index = 0; buf_index < buf_num; buf_index++) {
-               buffer[buf_index] = odp_buffer_alloc(pool);
-               if (buffer[buf_index] == ODP_BUFFER_INVALID)
+       /* Try to allocate num items from the pool */
+       for (index = 0; index < num; index++) {
+               switch (type) {
+               case ODP_BUFFER_TYPE_RAW:
+                       buffer[index] = odp_buffer_alloc(pool);
+
+                       if (buffer[index] == ODP_BUFFER_INVALID)
+                               break;
+
+                       ev = odp_buffer_to_event(buffer[index]);
+                       if (odp_event_type(ev) != ODP_EVENT_BUFFER)
+                               wrong_type = 1;
+                       if (odp_buffer_size(buffer[index]) < size)
+                               wrong_size = 1;
+                       if (wrong_type || wrong_size)
+                               odp_buffer_print(buffer[index]);
+                       break;
+
+               case ODP_BUFFER_TYPE_PACKET:
+                       packet[index] = odp_packet_alloc(pool, size);
+
+                       if (packet[index] == ODP_PACKET_INVALID)
+                               break;
+
+                       ev = odp_packet_to_event(packet[index]);
+                       if (odp_event_type(ev) != ODP_EVENT_PACKET)
+                               wrong_type = 1;
                        break;
-               if (odp_buffer_type(buffer[buf_index]) != type)
-                       wrong_type = 1;
-               if (odp_buffer_size(buffer[buf_index]) < buf_size)
-                       wrong_size = 1;
-               if (wrong_type || wrong_size)
-                       odp_buffer_print(buffer[buf_index]);
+
+               default:
+                       break;
+               }
+
        }
- /* Check that the pool had at least buf_num buffers */
-       CU_ASSERT(buf_index == buf_num);
-       /* buf_index points out of buffer[] or it point to an invalid buffer */
-       buf_index--;
+       /* Check that the pool had at least num items */
+       CU_ASSERT(index == num);
+       /* index points out of buffer[] or it point to an invalid buffer */
+       index--;
/* Check that the pool had correct buffers */
        CU_ASSERT(wrong_type == 0);
        CU_ASSERT(wrong_size == 0);
- for (; buf_index >= 0; buf_index--)
-               odp_buffer_free(buffer[buf_index]);
+       for (; index >= 0; index--) {
+               odp_buffer_free(buffer[index]);
+               odp_packet_free(packet[index]);
+       }
CU_ASSERT(odp_buffer_pool_destroy(pool) == 0);
  }
static void pool_alloc_buffer_raw(void)
  {
-       pool_alloc_buffer_type(ODP_BUFFER_TYPE_RAW);
+       pool_alloc_type(ODP_BUFFER_TYPE_RAW);
  }
static void pool_alloc_buffer_packet(void)
  {
-       pool_alloc_buffer_type(ODP_BUFFER_TYPE_PACKET);
+       pool_alloc_type(ODP_BUFFER_TYPE_PACKET);
  }
static void pool_alloc_buffer_timeout(void)
  {
-       pool_alloc_buffer_type(ODP_BUFFER_TYPE_TIMEOUT);
-}
-
-static void pool_alloc_buffer_any(void)
-{
-       pool_alloc_buffer_type(ODP_BUFFER_TYPE_ANY);
+       pool_alloc_type(ODP_BUFFER_TYPE_TIMEOUT);
  }
static void pool_free_buffer(void)
@@ -200,13 +216,11 @@ CU_TestInfo buffer_pool_tests[] = {
        _CU_TEST_INFO(pool_create_destroy_raw),
        _CU_TEST_INFO(pool_create_destroy_packet),
        _CU_TEST_INFO(pool_create_destroy_timeout),
-       _CU_TEST_INFO(pool_create_destroy_any),
        _CU_TEST_INFO(pool_create_destroy_raw_shm),
        _CU_TEST_INFO(pool_lookup_info_print),
        _CU_TEST_INFO(pool_alloc_buffer_raw),
        _CU_TEST_INFO(pool_alloc_buffer_packet),
        _CU_TEST_INFO(pool_alloc_buffer_timeout),
-       _CU_TEST_INFO(pool_alloc_buffer_any),
        _CU_TEST_INFO(pool_free_buffer),
        CU_TEST_INFO_NULL,
  };
diff --git a/test/validation/buffer/odp_buffer_test.c 
b/test/validation/buffer/odp_buffer_test.c
index 219a9ef..9fd5bb8 100644
--- a/test/validation/buffer/odp_buffer_test.c
+++ b/test/validation/buffer/odp_buffer_test.c
@@ -38,9 +38,11 @@ int buffer_testsuite_finalize(void)
static void buffer_management_basic(void)
  {
+       odp_event_t ev = odp_buffer_to_event(raw_buffer);
+
        CU_ASSERT(odp_buffer_is_valid(raw_buffer) == 1);
        CU_ASSERT(odp_buffer_pool(raw_buffer) != ODP_BUFFER_POOL_INVALID);
-       CU_ASSERT(odp_buffer_type(raw_buffer) == ODP_BUFFER_TYPE_RAW);
+       CU_ASSERT(odp_event_type(ev) == ODP_EVENT_BUFFER);
        CU_ASSERT(odp_buffer_size(raw_buffer) >= raw_buffer_size);
        CU_ASSERT(odp_buffer_addr(raw_buffer) != NULL);
        odp_buffer_print(raw_buffer);
diff --git a/test/validation/buffer/odp_packet_test.c 
b/test/validation/buffer/odp_packet_test.c
index d073b49..63caec6 100644
--- a/test/validation/buffer/odp_packet_test.c
+++ b/test/validation/buffer/odp_packet_test.c
@@ -85,18 +85,17 @@ static void packet_alloc_segmented(void)
        odp_packet_free(pkt);
  }
-static void packet_buffer_conversion(void)
+static void packet_event_conversion(void)
  {
        odp_packet_t pkt = test_packet;
        odp_packet_t tmp_pkt;
-       odp_buffer_t buf;
+       odp_event_t ev;
- buf = odp_packet_to_buffer(pkt);
-       CU_ASSERT_FATAL(buf != ODP_BUFFER_INVALID);
-       CU_ASSERT(odp_buffer_type(buf) == ODP_BUFFER_TYPE_PACKET);
-       CU_ASSERT(odp_buffer_size(buf) == odp_packet_buf_len(pkt));
+       ev = odp_packet_to_event(pkt);
+       CU_ASSERT_FATAL(ev != ODP_EVENT_INVALID);
+       CU_ASSERT(odp_event_type(ev) == ODP_EVENT_PACKET);
- tmp_pkt = odp_packet_from_buffer(buf);
+       tmp_pkt = odp_packet_from_event(ev);
        CU_ASSERT_FATAL(tmp_pkt != ODP_PACKET_INVALID);
        /** @todo: Need an API to compare packets */
  }
@@ -653,7 +652,7 @@ CU_TestInfo packet_tests[] = {
        _CU_TEST_INFO(packet_headroom),
        _CU_TEST_INFO(packet_tailroom),
        _CU_TEST_INFO(packet_context),
-       _CU_TEST_INFO(packet_buffer_conversion),
+       _CU_TEST_INFO(packet_event_conversion),
        _CU_TEST_INFO(packet_layer_offsets),
        _CU_TEST_INFO(packet_segments),
        _CU_TEST_INFO(packet_segment_last),
diff --git a/test/validation/odp_pktio.c b/test/validation/odp_pktio.c
index b1eb61e..2e7b50b 100644
--- a/test/validation/odp_pktio.c
+++ b/test/validation/odp_pktio.c
@@ -244,7 +244,7 @@ static int create_inq(odp_pktio_t pktio)
        return odp_pktio_inq_setdef(pktio, inq_def);
  }
-static odp_buffer_t queue_deq_wait_time(odp_queue_t queue, uint64_t ns)
+static odp_event_t queue_deq_wait_time(odp_queue_t queue, uint64_t ns)
  {
        uint64_t start, now, diff;
        odp_event_t ev;
@@ -254,12 +254,12 @@ static odp_buffer_t queue_deq_wait_time(odp_queue_t 
queue, uint64_t ns)
        do {
                ev = odp_queue_deq(queue);
                if (ev != ODP_EVENT_INVALID)
-                       return odp_buffer_from_event(ev);
+                       return ev;
                now = odp_time_cycles();
                diff = odp_time_diff_cycles(start, now);
        } while (odp_time_cycles_to_ns(diff) < ns);
- return ODP_BUFFER_INVALID;
+       return ODP_EVENT_INVALID;
  }
static odp_packet_t wait_for_packet(odp_queue_t queue,
@@ -267,22 +267,20 @@ static odp_packet_t wait_for_packet(odp_queue_t queue,
  {
        uint64_t start, now, diff;
        odp_event_t ev;
-       odp_buffer_t buf;
        odp_packet_t pkt = ODP_PACKET_INVALID;
start = odp_time_cycles(); do {
                if (queue != ODP_QUEUE_INVALID) {
-                       buf = queue_deq_wait_time(queue, ns);
+                       ev = queue_deq_wait_time(queue, ns);
                } else {
                        ev  = odp_schedule(NULL, ns);
-                       buf = odp_buffer_from_event(ev);
                }
- if (buf != ODP_BUFFER_INVALID &&
-                   odp_buffer_type(buf) == ODP_BUFFER_TYPE_PACKET) {
-                       pkt = odp_packet_from_buffer(buf);
+               if (ev != ODP_EVENT_INVALID &&
+                   odp_event_type(ev) == ODP_EVENT_PACKET) {
+                       pkt = odp_packet_from_event(ev);
                        if (pktio_pkt_seq(pkt) == seq)
                                return pkt;
                }
diff --git a/test/validation/odp_timer.c b/test/validation/odp_timer.c
index eca7e7f..adc1554 100644
--- a/test/validation/odp_timer.c
+++ b/test/validation/odp_timer.c
@@ -49,7 +49,7 @@ static void handle_tmo(odp_buffer_t buf, bool stale, uint64_t 
prev_tick)
  {
        /* Use assert() for internal correctness checks of test program */
        assert(buf != ODP_BUFFER_INVALID);
-       if (odp_buffer_type(buf) != ODP_BUFFER_TYPE_TIMEOUT) {
+       if (odp_event_type(odp_buffer_to_event(buf)) != ODP_EVENT_TIMEOUT) {
                /* Not a timeout buffer */
                CU_FAIL("Unexpected buffer type received");
                return;


_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to