Thanks. I'll fix that tomorrow. -Petri
> -----Original Message----- > From: ext Maxim Uvarov [mailto:[email protected]] > Sent: Tuesday, January 20, 2015 4:42 PM > To: [email protected]; Petri Savolainen > Subject: Re: [lng-odp] [PATCH v2 06/16] api: buffer: Removed > odp_buffer_type > > Petri, you just did mistake in test. > > > test/validation/buffer/odp_buffer_pool_test.c > pool_alloc_type() > > > case ODP_BUFFER_TYPE_RAW: > buf = alloc_buf; > case ODP_BUFFER_TYPE_PKT: > packet = alloc_packet; > > .... > > Then you calll free for both buf and packet. But in one case you did not > allocate packet, > in other case you did not allocate buffer. > > Maxim. > > On 01/20/2015 05:29 PM, Maxim Uvarov wrote: > > 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
