Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-19 Thread Savolainen, Petri (NSN - FI/Espoo)
> 
> No, I was considering the abstraction for the fixed size buffer pool only.
> The new type can used to allocate a buffer pool from hardware fixed size
> buffer manager
> without any metadata for queueable. something like,
> 
> pool = odp_buffer_pool_create();
> odp_buffer_t x = odp_buffer_alloc(pool); // for queueable buffers
> 
> odp_buffer_xxx_t x = odp_buffer_xxx_alloc(pool);// for non queueable
> buffers, only for storage


This can be defined after v1.0. I already separated event (ODP_EVENT_XXX) and 
pool type (ODP_POOL_XXX) defines for rev2 of the event patch. With that, there 
can be event types that do not have a matching pool type (no pool, no alloc 
call), and pool types that do not have a matching event type (no xxx_to_event 
call => no queues, no scheduling).

-Petri 

___
lng-odp mailing list
lng-odp@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/lng-odp


Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-19 Thread Jerin Jacob
On Mon, Jan 19, 2015 at 11:26:04AM +0100, Ola Liljedahl wrote:
> On 17 January 2015 at 16:28, Bill Fischofer  wrote:
> > In the new model no buffers are queueable.  Only events are queueable.
> But you can convert a buffer handle to the corresponding event handle
> and enqueue the event. Thus buffers must have the metadata that allows
> them to be enqueued and scheduled.

Then its like a queueable buffer only.


> 
> > Events can contain buffers, packets, timeouts, etc., but are logically
> > distinct from them as they are the queueable/schedulable entity.
> >
> > On Sat, Jan 17, 2015 at 6:16 AM, Jerin Jacob
> >  wrote:
> >>
> >> On Thu, Jan 15, 2015 at 05:40:08PM +0200, Petri Savolainen wrote:
> >> > This patches introduces odp_event_t and replaces with that the usage of
> >> > odp_buffer_t as the super class for other "buffer types". What used to
> >> > be a
> >> > buffer type is now an event type.
> >>
> >> Should we also introduce a new buffer type that NOT queueable to odp_queue
> >> ?
> >> If some application is using the buffers only for the storage then I think
> >> this
> >> new type make sense as queueable buffers will take more resources and
> >> additional meta data(for hardware buffer schedule manager)
> Wouldn't such buffers be more related to some type of malloc-like
> memory manager?
> ODP could use a multicore friendly memory manager for variable size
> objects. Could such a memory manager be implemented by HW and thus be
> considered as a part of the SoC abstraction layer? Or would it be a
> pure SW construct and basically just a utility library?

No, I was considering the abstraction for the fixed size buffer pool only.
The new type can used to allocate a buffer pool from hardware fixed size buffer 
manager
without any metadata for queueable. something like,

pool = odp_buffer_pool_create();
odp_buffer_t x = odp_buffer_alloc(pool); // for queueable buffers

odp_buffer_xxx_t x = odp_buffer_xxx_alloc(pool);// for non queueable buffers, 
only for storage




> 
> >>
> >>
> >> >
> >> > There are some lines over 80 char, since those are caused by temporary
> >> > event <-> buffer, packet -> event -> buffer conversions and should be
> >> > cleaned up
> >> > from the implementation anyway.
> >> >
> >> > Petri Savolainen (15):
> >> >   api: event: Add odp_event_t
> >> >   api: event: odp_schedule and odp_queue_enq
> >> >   api: event: schedule_multi and queue_enq_multi
> >> >   api: event: odp_queue_deq
> >> >   api: event: odp_queue_deq_multi
> >> >   api: buffer: Removed odp_buffer_type
> >> >   api: packet: Removed odp_packet_to_buffer
> >> >   api: packet: Removed odp_packet_from_buffer
> >> >   api: timer: Use odp_event_t instead of odp_buffer_t
> >> >   api: crypto: Use odp_event_t instead of odp_buffer_t
> >> >   linux-generic: crypto: Use packet alloc for packet
> >> >   api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
> >> >   api: pool: Rename pool params and remove buffer types
> >> >   api: pool: Rename odp_buffer_pool_ to odp_pool_
> >> >   api: config: Renamed ODP_CONFIG_BUFFER_POOLS
> >> >
> >> >  example/generator/odp_generator.c  |  38 ++---
> >> >  example/ipsec/odp_ipsec.c  |  70 
> >> >  example/ipsec/odp_ipsec_cache.c|   4 +-
> >> >  example/ipsec/odp_ipsec_cache.h|   2 +-
> >> >  example/ipsec/odp_ipsec_loop_db.c  |   2 +-
> >> >  example/ipsec/odp_ipsec_loop_db.h  |  12 +-
> >> >  example/ipsec/odp_ipsec_stream.c   |  20 +--
> >> >  example/ipsec/odp_ipsec_stream.h   |   2 +-
> >> >  example/l2fwd/odp_l2fwd.c  |  28 +--
> >> >  example/packet/odp_pktio.c |  28 +--
> >> >  example/timer/odp_timer_test.c |  64 +++
> >> >  platform/linux-generic/Makefile.am |   4 +-
> >> >  platform/linux-generic/include/api/odp.h   |   3 +-
> >> >  platform/linux-generic/include/api/odp_buffer.h|  40 +++--
> >> >  .../linux-generic/include/api/odp_buffer_pool.h| 177
> >> > ---
> >> >  .../linux-generic/include/api/odp_classification.h |   2 +-
> >> >  platform/linux-generic/include/api/odp_config.h|   4 +-
> >> >  platform/linux-generic/include/api/odp_crypto.h|  16 +-
> >> >  platform/linux-generic/include/api/odp_event.h |  59 +++
> >> >  platform/linux-generic/include/api/odp_packet.h|  29 ++--
> >> >  platform/linux-generic/include/api/odp_packet_io.h |   4 +-
> >> >  .../linux-generic/include/api/odp_platform_types.h |  10 +-
> >> >  platform/linux-generic/include/api/odp_pool.h  | 189
> >> > +
> >> >  platform/linux-generic/include/api/odp_queue.h |  32 ++--
> >> >  platform/linux-generic/include/api/odp_schedule.h  |  32 ++--
> >> >  platform/linux-generic/include/api/odp_timer.h |  56 +++---
> >> >  .../linux-generic/include/odp_buffer_inlines.h |   6 +-

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-19 Thread Ola Liljedahl
On 17 January 2015 at 16:28, Bill Fischofer  wrote:
> In the new model no buffers are queueable.  Only events are queueable.
But you can convert a buffer handle to the corresponding event handle
and enqueue the event. Thus buffers must have the metadata that allows
them to be enqueued and scheduled.

> Events can contain buffers, packets, timeouts, etc., but are logically
> distinct from them as they are the queueable/schedulable entity.
>
> On Sat, Jan 17, 2015 at 6:16 AM, Jerin Jacob
>  wrote:
>>
>> On Thu, Jan 15, 2015 at 05:40:08PM +0200, Petri Savolainen wrote:
>> > This patches introduces odp_event_t and replaces with that the usage of
>> > odp_buffer_t as the super class for other "buffer types". What used to
>> > be a
>> > buffer type is now an event type.
>>
>> Should we also introduce a new buffer type that NOT queueable to odp_queue
>> ?
>> If some application is using the buffers only for the storage then I think
>> this
>> new type make sense as queueable buffers will take more resources and
>> additional meta data(for hardware buffer schedule manager)
Wouldn't such buffers be more related to some type of malloc-like
memory manager?
ODP could use a multicore friendly memory manager for variable size
objects. Could such a memory manager be implemented by HW and thus be
considered as a part of the SoC abstraction layer? Or would it be a
pure SW construct and basically just a utility library?

>>
>>
>> >
>> > There are some lines over 80 char, since those are caused by temporary
>> > event <-> buffer, packet -> event -> buffer conversions and should be
>> > cleaned up
>> > from the implementation anyway.
>> >
>> > Petri Savolainen (15):
>> >   api: event: Add odp_event_t
>> >   api: event: odp_schedule and odp_queue_enq
>> >   api: event: schedule_multi and queue_enq_multi
>> >   api: event: odp_queue_deq
>> >   api: event: odp_queue_deq_multi
>> >   api: buffer: Removed odp_buffer_type
>> >   api: packet: Removed odp_packet_to_buffer
>> >   api: packet: Removed odp_packet_from_buffer
>> >   api: timer: Use odp_event_t instead of odp_buffer_t
>> >   api: crypto: Use odp_event_t instead of odp_buffer_t
>> >   linux-generic: crypto: Use packet alloc for packet
>> >   api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
>> >   api: pool: Rename pool params and remove buffer types
>> >   api: pool: Rename odp_buffer_pool_ to odp_pool_
>> >   api: config: Renamed ODP_CONFIG_BUFFER_POOLS
>> >
>> >  example/generator/odp_generator.c  |  38 ++---
>> >  example/ipsec/odp_ipsec.c  |  70 
>> >  example/ipsec/odp_ipsec_cache.c|   4 +-
>> >  example/ipsec/odp_ipsec_cache.h|   2 +-
>> >  example/ipsec/odp_ipsec_loop_db.c  |   2 +-
>> >  example/ipsec/odp_ipsec_loop_db.h  |  12 +-
>> >  example/ipsec/odp_ipsec_stream.c   |  20 +--
>> >  example/ipsec/odp_ipsec_stream.h   |   2 +-
>> >  example/l2fwd/odp_l2fwd.c  |  28 +--
>> >  example/packet/odp_pktio.c |  28 +--
>> >  example/timer/odp_timer_test.c |  64 +++
>> >  platform/linux-generic/Makefile.am |   4 +-
>> >  platform/linux-generic/include/api/odp.h   |   3 +-
>> >  platform/linux-generic/include/api/odp_buffer.h|  40 +++--
>> >  .../linux-generic/include/api/odp_buffer_pool.h| 177
>> > ---
>> >  .../linux-generic/include/api/odp_classification.h |   2 +-
>> >  platform/linux-generic/include/api/odp_config.h|   4 +-
>> >  platform/linux-generic/include/api/odp_crypto.h|  16 +-
>> >  platform/linux-generic/include/api/odp_event.h |  59 +++
>> >  platform/linux-generic/include/api/odp_packet.h|  29 ++--
>> >  platform/linux-generic/include/api/odp_packet_io.h |   4 +-
>> >  .../linux-generic/include/api/odp_platform_types.h |  10 +-
>> >  platform/linux-generic/include/api/odp_pool.h  | 189
>> > +
>> >  platform/linux-generic/include/api/odp_queue.h |  32 ++--
>> >  platform/linux-generic/include/api/odp_schedule.h  |  32 ++--
>> >  platform/linux-generic/include/api/odp_timer.h |  56 +++---
>> >  .../linux-generic/include/odp_buffer_inlines.h |   6 +-
>> >  .../linux-generic/include/odp_buffer_internal.h|  20 ++-
>> >  .../include/odp_buffer_pool_internal.h |  22 +--
>> >  .../linux-generic/include/odp_crypto_internal.h|   2 +-
>> >  .../linux-generic/include/odp_packet_internal.h|   8 +-
>> >  platform/linux-generic/include/odp_packet_socket.h |  10 +-
>> >  platform/linux-generic/odp_buffer.c|  12 +-
>> >  platform/linux-generic/odp_buffer_pool.c   | 133
>> > +++
>> >  platform/linux-generic/odp_crypto.c|  29 ++--
>> >  platform/linux-generic/odp_event.c |  19 +++
>> >  platform/linux-generic/odp_packet.c|  34 ++--
>> >  p

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-17 Thread Taras Kondratiuk
On 01/16/2015 05:39 PM, Ola Dahl wrote:
> I am wondering why odp_buffer_t is still around, when it is supposed to
> be replaced by odp_event_t?

It is for ODP_EVENT_BUFFER (previously ODP_BUFFER_TYPE_RAW) type of
odp_event_t.

-- 
Taras Kondratiuk

___
lng-odp mailing list
lng-odp@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/lng-odp


Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-17 Thread Bill Fischofer
In the new model no buffers are queueable.  Only events are queueable.
Events can contain buffers, packets, timeouts, etc., but are logically
distinct from them as they are the queueable/schedulable entity.

On Sat, Jan 17, 2015 at 6:16 AM, Jerin Jacob  wrote:

> On Thu, Jan 15, 2015 at 05:40:08PM +0200, Petri Savolainen wrote:
> > This patches introduces odp_event_t and replaces with that the usage of
> > odp_buffer_t as the super class for other "buffer types". What used to
> be a
> > buffer type is now an event type.
>
> Should we also introduce a new buffer type that NOT queueable to odp_queue
> ?
> If some application is using the buffers only for the storage then I think
> this
> new type make sense as queueable buffers will take more resources and
> additional meta data(for hardware buffer schedule manager)
>
>
> >
> > There are some lines over 80 char, since those are caused by temporary
> > event <-> buffer, packet -> event -> buffer conversions and should be
> cleaned up
> > from the implementation anyway.
> >
> > Petri Savolainen (15):
> >   api: event: Add odp_event_t
> >   api: event: odp_schedule and odp_queue_enq
> >   api: event: schedule_multi and queue_enq_multi
> >   api: event: odp_queue_deq
> >   api: event: odp_queue_deq_multi
> >   api: buffer: Removed odp_buffer_type
> >   api: packet: Removed odp_packet_to_buffer
> >   api: packet: Removed odp_packet_from_buffer
> >   api: timer: Use odp_event_t instead of odp_buffer_t
> >   api: crypto: Use odp_event_t instead of odp_buffer_t
> >   linux-generic: crypto: Use packet alloc for packet
> >   api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
> >   api: pool: Rename pool params and remove buffer types
> >   api: pool: Rename odp_buffer_pool_ to odp_pool_
> >   api: config: Renamed ODP_CONFIG_BUFFER_POOLS
> >
> >  example/generator/odp_generator.c  |  38 ++---
> >  example/ipsec/odp_ipsec.c  |  70 
> >  example/ipsec/odp_ipsec_cache.c|   4 +-
> >  example/ipsec/odp_ipsec_cache.h|   2 +-
> >  example/ipsec/odp_ipsec_loop_db.c  |   2 +-
> >  example/ipsec/odp_ipsec_loop_db.h  |  12 +-
> >  example/ipsec/odp_ipsec_stream.c   |  20 +--
> >  example/ipsec/odp_ipsec_stream.h   |   2 +-
> >  example/l2fwd/odp_l2fwd.c  |  28 +--
> >  example/packet/odp_pktio.c |  28 +--
> >  example/timer/odp_timer_test.c |  64 +++
> >  platform/linux-generic/Makefile.am |   4 +-
> >  platform/linux-generic/include/api/odp.h   |   3 +-
> >  platform/linux-generic/include/api/odp_buffer.h|  40 +++--
> >  .../linux-generic/include/api/odp_buffer_pool.h| 177
> ---
> >  .../linux-generic/include/api/odp_classification.h |   2 +-
> >  platform/linux-generic/include/api/odp_config.h|   4 +-
> >  platform/linux-generic/include/api/odp_crypto.h|  16 +-
> >  platform/linux-generic/include/api/odp_event.h |  59 +++
> >  platform/linux-generic/include/api/odp_packet.h|  29 ++--
> >  platform/linux-generic/include/api/odp_packet_io.h |   4 +-
> >  .../linux-generic/include/api/odp_platform_types.h |  10 +-
> >  platform/linux-generic/include/api/odp_pool.h  | 189
> +
> >  platform/linux-generic/include/api/odp_queue.h |  32 ++--
> >  platform/linux-generic/include/api/odp_schedule.h  |  32 ++--
> >  platform/linux-generic/include/api/odp_timer.h |  56 +++---
> >  .../linux-generic/include/odp_buffer_inlines.h |   6 +-
> >  .../linux-generic/include/odp_buffer_internal.h|  20 ++-
> >  .../include/odp_buffer_pool_internal.h |  22 +--
> >  .../linux-generic/include/odp_crypto_internal.h|   2 +-
> >  .../linux-generic/include/odp_packet_internal.h|   8 +-
> >  platform/linux-generic/include/odp_packet_socket.h |  10 +-
> >  platform/linux-generic/odp_buffer.c|  12 +-
> >  platform/linux-generic/odp_buffer_pool.c   | 133 +++
> >  platform/linux-generic/odp_crypto.c|  29 ++--
> >  platform/linux-generic/odp_event.c |  19 +++
> >  platform/linux-generic/odp_packet.c|  34 ++--
> >  platform/linux-generic/odp_packet_io.c |  14 +-
> >  platform/linux-generic/odp_packet_socket.c |  10 +-
> >  platform/linux-generic/odp_queue.c |  18 +-
> >  platform/linux-generic/odp_schedule.c  |  48 +++---
> >  platform/linux-generic/odp_timer.c |  35 ++--
> >  test/performance/odp_scheduling.c  | 105 +++-
> >  43 files changed, 806 insertions(+), 646 deletions(-)
> >  delete mode 100644 platform/linux-generic/include/api/odp_buffer_pool.h
> >  create mode 100644 platform/linux-generic/include/api/odp_event.h
> >  create mode 100644 platform/linux-generic/include/api/odp_pool.h

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-17 Thread Jerin Jacob
On Thu, Jan 15, 2015 at 05:40:08PM +0200, Petri Savolainen wrote:
> This patches introduces odp_event_t and replaces with that the usage of
> odp_buffer_t as the super class for other "buffer types". What used to be a
> buffer type is now an event type.

Should we also introduce a new buffer type that NOT queueable to odp_queue ?
If some application is using the buffers only for the storage then I think this
new type make sense as queueable buffers will take more resources and 
additional meta data(for hardware buffer schedule manager)


> 
> There are some lines over 80 char, since those are caused by temporary
> event <-> buffer, packet -> event -> buffer conversions and should be cleaned 
> up
> from the implementation anyway.
> 
> Petri Savolainen (15):
>   api: event: Add odp_event_t
>   api: event: odp_schedule and odp_queue_enq
>   api: event: schedule_multi and queue_enq_multi
>   api: event: odp_queue_deq
>   api: event: odp_queue_deq_multi
>   api: buffer: Removed odp_buffer_type
>   api: packet: Removed odp_packet_to_buffer
>   api: packet: Removed odp_packet_from_buffer
>   api: timer: Use odp_event_t instead of odp_buffer_t
>   api: crypto: Use odp_event_t instead of odp_buffer_t
>   linux-generic: crypto: Use packet alloc for packet
>   api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
>   api: pool: Rename pool params and remove buffer types
>   api: pool: Rename odp_buffer_pool_ to odp_pool_
>   api: config: Renamed ODP_CONFIG_BUFFER_POOLS
> 
>  example/generator/odp_generator.c  |  38 ++---
>  example/ipsec/odp_ipsec.c  |  70 
>  example/ipsec/odp_ipsec_cache.c|   4 +-
>  example/ipsec/odp_ipsec_cache.h|   2 +-
>  example/ipsec/odp_ipsec_loop_db.c  |   2 +-
>  example/ipsec/odp_ipsec_loop_db.h  |  12 +-
>  example/ipsec/odp_ipsec_stream.c   |  20 +--
>  example/ipsec/odp_ipsec_stream.h   |   2 +-
>  example/l2fwd/odp_l2fwd.c  |  28 +--
>  example/packet/odp_pktio.c |  28 +--
>  example/timer/odp_timer_test.c |  64 +++
>  platform/linux-generic/Makefile.am |   4 +-
>  platform/linux-generic/include/api/odp.h   |   3 +-
>  platform/linux-generic/include/api/odp_buffer.h|  40 +++--
>  .../linux-generic/include/api/odp_buffer_pool.h| 177 ---
>  .../linux-generic/include/api/odp_classification.h |   2 +-
>  platform/linux-generic/include/api/odp_config.h|   4 +-
>  platform/linux-generic/include/api/odp_crypto.h|  16 +-
>  platform/linux-generic/include/api/odp_event.h |  59 +++
>  platform/linux-generic/include/api/odp_packet.h|  29 ++--
>  platform/linux-generic/include/api/odp_packet_io.h |   4 +-
>  .../linux-generic/include/api/odp_platform_types.h |  10 +-
>  platform/linux-generic/include/api/odp_pool.h  | 189 
> +
>  platform/linux-generic/include/api/odp_queue.h |  32 ++--
>  platform/linux-generic/include/api/odp_schedule.h  |  32 ++--
>  platform/linux-generic/include/api/odp_timer.h |  56 +++---
>  .../linux-generic/include/odp_buffer_inlines.h |   6 +-
>  .../linux-generic/include/odp_buffer_internal.h|  20 ++-
>  .../include/odp_buffer_pool_internal.h |  22 +--
>  .../linux-generic/include/odp_crypto_internal.h|   2 +-
>  .../linux-generic/include/odp_packet_internal.h|   8 +-
>  platform/linux-generic/include/odp_packet_socket.h |  10 +-
>  platform/linux-generic/odp_buffer.c|  12 +-
>  platform/linux-generic/odp_buffer_pool.c   | 133 +++
>  platform/linux-generic/odp_crypto.c|  29 ++--
>  platform/linux-generic/odp_event.c |  19 +++
>  platform/linux-generic/odp_packet.c|  34 ++--
>  platform/linux-generic/odp_packet_io.c |  14 +-
>  platform/linux-generic/odp_packet_socket.c |  10 +-
>  platform/linux-generic/odp_queue.c |  18 +-
>  platform/linux-generic/odp_schedule.c  |  48 +++---
>  platform/linux-generic/odp_timer.c |  35 ++--
>  test/performance/odp_scheduling.c  | 105 +++-
>  43 files changed, 806 insertions(+), 646 deletions(-)
>  delete mode 100644 platform/linux-generic/include/api/odp_buffer_pool.h
>  create mode 100644 platform/linux-generic/include/api/odp_event.h
>  create mode 100644 platform/linux-generic/include/api/odp_pool.h
>  create mode 100644 platform/linux-generic/odp_event.c
> 
> -- 
> 2.2.2
> 
> 
> ___
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp

___
lng-odp mailing list
lng-odp@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/lng-odp


Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Bill Fischofer
It is not replaced by odp_event_t.  odp_buffer_t is the abstract type for
ODP buffers.  odp_event_t is the abstract type for events, which are new.

On Fri, Jan 16, 2015 at 9:39 AM, Ola Dahl  wrote:

> I am wondering why odp_buffer_t is still around, when it is supposed to be
> replaced by odp_event_t?
>
> Best regards,
>
> Ola D
>
>
> On Fri Jan 16 2015 at 4:18:36 PM Bill Fischofer 
> wrote:
>
>> odp_buffer.c is the implementation of all of the APIs defined in
>> odp_buffer.h.  I'm not sure what you're asking here.
>>
>> On Fri, Jan 16, 2015 at 9:12 AM, Ola Dahl  wrote:
>>
>>> On 2015-01-15 16:40, Petri Savolainen wrote:
>>>
 This patches introduces odp_event_t and replaces with that the usage of
 odp_buffer_t as the super class for other "buffer types". What used to
 be a
 buffer type is now an event type.

>>>
>>> I wonder why odp_buffer_t is still kept?
>>>
>>> And why, for instance, the file odp_buffer.c is needed? (or, why it is
>>> not named odp_event.c?)
>>>
>>> Shall we think of
>>>
>>> events as "things that can be scheduled and can be stored in queues"
>>>
>>> and
>>>
>>> buffers as "places where data can be stored" ?
>>>
>>> Best regards,
>>>
>>> Ola D (a bit confused)
>>>
>>>
>>>
 There are some lines over 80 char, since those are caused by temporary
 event <-> buffer, packet -> event -> buffer conversions and should be
 cleaned up
 from the implementation anyway.

 Petri Savolainen (15):
api: event: Add odp_event_t
api: event: odp_schedule and odp_queue_enq
api: event: schedule_multi and queue_enq_multi
api: event: odp_queue_deq
api: event: odp_queue_deq_multi
api: buffer: Removed odp_buffer_type
api: packet: Removed odp_packet_to_buffer
api: packet: Removed odp_packet_from_buffer
api: timer: Use odp_event_t instead of odp_buffer_t
api: crypto: Use odp_event_t instead of odp_buffer_t
linux-generic: crypto: Use packet alloc for packet
api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
api: pool: Rename pool params and remove buffer types
api: pool: Rename odp_buffer_pool_ to odp_pool_
api: config: Renamed ODP_CONFIG_BUFFER_POOLS

   example/generator/odp_generator.c  |  38 ++---
   example/ipsec/odp_ipsec.c  |  70 
   example/ipsec/odp_ipsec_cache.c|   4 +-
   example/ipsec/odp_ipsec_cache.h|   2 +-
   example/ipsec/odp_ipsec_loop_db.c  |   2 +-
   example/ipsec/odp_ipsec_loop_db.h  |  12 +-
   example/ipsec/odp_ipsec_stream.c   |  20 +--
   example/ipsec/odp_ipsec_stream.h   |   2 +-
   example/l2fwd/odp_l2fwd.c  |  28 +--
   example/packet/odp_pktio.c |  28 +--
   example/timer/odp_timer_test.c |  64 +++
   platform/linux-generic/Makefile.am |   4 +-
   platform/linux-generic/include/api/odp.h   |   3 +-
   platform/linux-generic/include/api/odp_buffer.h|  40 +++--
   .../linux-generic/include/api/odp_buffer_pool.h| 177
 ---
   .../linux-generic/include/api/odp_classification.h |   2 +-
   platform/linux-generic/include/api/odp_config.h|   4 +-
   platform/linux-generic/include/api/odp_crypto.h|  16 +-
   platform/linux-generic/include/api/odp_event.h |  59 +++
   platform/linux-generic/include/api/odp_packet.h|  29 ++--
   platform/linux-generic/include/api/odp_packet_io.h |   4 +-
   .../linux-generic/include/api/odp_platform_types.h |  10 +-
   platform/linux-generic/include/api/odp_pool.h  | 189
 +
   platform/linux-generic/include/api/odp_queue.h |  32 ++--
   platform/linux-generic/include/api/odp_schedule.h  |  32 ++--
   platform/linux-generic/include/api/odp_timer.h |  56 +++---
   .../linux-generic/include/odp_buffer_inlines.h |   6 +-
   .../linux-generic/include/odp_buffer_internal.h|  20 ++-
   .../include/odp_buffer_pool_internal.h |  22 +--
   .../linux-generic/include/odp_crypto_internal.h|   2 +-
   .../linux-generic/include/odp_packet_internal.h|   8 +-
   platform/linux-generic/include/odp_packet_socket.h |  10 +-
   platform/linux-generic/odp_buffer.c|  12 +-
   platform/linux-generic/odp_buffer_pool.c   | 133
 +++
   platform/linux-generic/odp_crypto.c|  29 ++--
   platform/linux-generic/odp_event.c |  19 +++
   platform/linux-generic/odp_packet.c|  34 ++--
   platform/linux-generic/odp_packet_io.c |  14 +-
   platform/linux-generic/odp_packet_socket.c |  10 +-
   platform/linux-gener

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Ola Dahl
I am wondering why odp_buffer_t is still around, when it is supposed to be
replaced by odp_event_t?

Best regards,

Ola D


On Fri Jan 16 2015 at 4:18:36 PM Bill Fischofer 
wrote:

> odp_buffer.c is the implementation of all of the APIs defined in
> odp_buffer.h.  I'm not sure what you're asking here.
>
> On Fri, Jan 16, 2015 at 9:12 AM, Ola Dahl  wrote:
>
>> On 2015-01-15 16:40, Petri Savolainen wrote:
>>
>>> This patches introduces odp_event_t and replaces with that the usage of
>>> odp_buffer_t as the super class for other "buffer types". What used to
>>> be a
>>> buffer type is now an event type.
>>>
>>
>> I wonder why odp_buffer_t is still kept?
>>
>> And why, for instance, the file odp_buffer.c is needed? (or, why it is
>> not named odp_event.c?)
>>
>> Shall we think of
>>
>> events as "things that can be scheduled and can be stored in queues"
>>
>> and
>>
>> buffers as "places where data can be stored" ?
>>
>> Best regards,
>>
>> Ola D (a bit confused)
>>
>>
>>
>>> There are some lines over 80 char, since those are caused by temporary
>>> event <-> buffer, packet -> event -> buffer conversions and should be
>>> cleaned up
>>> from the implementation anyway.
>>>
>>> Petri Savolainen (15):
>>>api: event: Add odp_event_t
>>>api: event: odp_schedule and odp_queue_enq
>>>api: event: schedule_multi and queue_enq_multi
>>>api: event: odp_queue_deq
>>>api: event: odp_queue_deq_multi
>>>api: buffer: Removed odp_buffer_type
>>>api: packet: Removed odp_packet_to_buffer
>>>api: packet: Removed odp_packet_from_buffer
>>>api: timer: Use odp_event_t instead of odp_buffer_t
>>>api: crypto: Use odp_event_t instead of odp_buffer_t
>>>linux-generic: crypto: Use packet alloc for packet
>>>api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
>>>api: pool: Rename pool params and remove buffer types
>>>api: pool: Rename odp_buffer_pool_ to odp_pool_
>>>api: config: Renamed ODP_CONFIG_BUFFER_POOLS
>>>
>>>   example/generator/odp_generator.c  |  38 ++---
>>>   example/ipsec/odp_ipsec.c  |  70 
>>>   example/ipsec/odp_ipsec_cache.c|   4 +-
>>>   example/ipsec/odp_ipsec_cache.h|   2 +-
>>>   example/ipsec/odp_ipsec_loop_db.c  |   2 +-
>>>   example/ipsec/odp_ipsec_loop_db.h  |  12 +-
>>>   example/ipsec/odp_ipsec_stream.c   |  20 +--
>>>   example/ipsec/odp_ipsec_stream.h   |   2 +-
>>>   example/l2fwd/odp_l2fwd.c  |  28 +--
>>>   example/packet/odp_pktio.c |  28 +--
>>>   example/timer/odp_timer_test.c |  64 +++
>>>   platform/linux-generic/Makefile.am |   4 +-
>>>   platform/linux-generic/include/api/odp.h   |   3 +-
>>>   platform/linux-generic/include/api/odp_buffer.h|  40 +++--
>>>   .../linux-generic/include/api/odp_buffer_pool.h| 177
>>> ---
>>>   .../linux-generic/include/api/odp_classification.h |   2 +-
>>>   platform/linux-generic/include/api/odp_config.h|   4 +-
>>>   platform/linux-generic/include/api/odp_crypto.h|  16 +-
>>>   platform/linux-generic/include/api/odp_event.h |  59 +++
>>>   platform/linux-generic/include/api/odp_packet.h|  29 ++--
>>>   platform/linux-generic/include/api/odp_packet_io.h |   4 +-
>>>   .../linux-generic/include/api/odp_platform_types.h |  10 +-
>>>   platform/linux-generic/include/api/odp_pool.h  | 189
>>> +
>>>   platform/linux-generic/include/api/odp_queue.h |  32 ++--
>>>   platform/linux-generic/include/api/odp_schedule.h  |  32 ++--
>>>   platform/linux-generic/include/api/odp_timer.h |  56 +++---
>>>   .../linux-generic/include/odp_buffer_inlines.h |   6 +-
>>>   .../linux-generic/include/odp_buffer_internal.h|  20 ++-
>>>   .../include/odp_buffer_pool_internal.h |  22 +--
>>>   .../linux-generic/include/odp_crypto_internal.h|   2 +-
>>>   .../linux-generic/include/odp_packet_internal.h|   8 +-
>>>   platform/linux-generic/include/odp_packet_socket.h |  10 +-
>>>   platform/linux-generic/odp_buffer.c|  12 +-
>>>   platform/linux-generic/odp_buffer_pool.c   | 133
>>> +++
>>>   platform/linux-generic/odp_crypto.c|  29 ++--
>>>   platform/linux-generic/odp_event.c |  19 +++
>>>   platform/linux-generic/odp_packet.c|  34 ++--
>>>   platform/linux-generic/odp_packet_io.c |  14 +-
>>>   platform/linux-generic/odp_packet_socket.c |  10 +-
>>>   platform/linux-generic/odp_queue.c |  18 +-
>>>   platform/linux-generic/odp_schedule.c  |  48 +++---
>>>   platform/linux-generic/odp_timer.c |  35 ++--
>>>   test/performance/odp_scheduling.c  | 105 +++-
>>>   43 files changed, 806 insertions(+), 646 deletions(-)

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Bill Fischofer
odp_buffer.c is the implementation of all of the APIs defined in
odp_buffer.h.  I'm not sure what you're asking here.

On Fri, Jan 16, 2015 at 9:12 AM, Ola Dahl  wrote:

> On 2015-01-15 16:40, Petri Savolainen wrote:
>
>> This patches introduces odp_event_t and replaces with that the usage of
>> odp_buffer_t as the super class for other "buffer types". What used to be
>> a
>> buffer type is now an event type.
>>
>
> I wonder why odp_buffer_t is still kept?
>
> And why, for instance, the file odp_buffer.c is needed? (or, why it is not
> named odp_event.c?)
>
> Shall we think of
>
> events as "things that can be scheduled and can be stored in queues"
>
> and
>
> buffers as "places where data can be stored" ?
>
> Best regards,
>
> Ola D (a bit confused)
>
>
>
>> There are some lines over 80 char, since those are caused by temporary
>> event <-> buffer, packet -> event -> buffer conversions and should be
>> cleaned up
>> from the implementation anyway.
>>
>> Petri Savolainen (15):
>>api: event: Add odp_event_t
>>api: event: odp_schedule and odp_queue_enq
>>api: event: schedule_multi and queue_enq_multi
>>api: event: odp_queue_deq
>>api: event: odp_queue_deq_multi
>>api: buffer: Removed odp_buffer_type
>>api: packet: Removed odp_packet_to_buffer
>>api: packet: Removed odp_packet_from_buffer
>>api: timer: Use odp_event_t instead of odp_buffer_t
>>api: crypto: Use odp_event_t instead of odp_buffer_t
>>linux-generic: crypto: Use packet alloc for packet
>>api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
>>api: pool: Rename pool params and remove buffer types
>>api: pool: Rename odp_buffer_pool_ to odp_pool_
>>api: config: Renamed ODP_CONFIG_BUFFER_POOLS
>>
>>   example/generator/odp_generator.c  |  38 ++---
>>   example/ipsec/odp_ipsec.c  |  70 
>>   example/ipsec/odp_ipsec_cache.c|   4 +-
>>   example/ipsec/odp_ipsec_cache.h|   2 +-
>>   example/ipsec/odp_ipsec_loop_db.c  |   2 +-
>>   example/ipsec/odp_ipsec_loop_db.h  |  12 +-
>>   example/ipsec/odp_ipsec_stream.c   |  20 +--
>>   example/ipsec/odp_ipsec_stream.h   |   2 +-
>>   example/l2fwd/odp_l2fwd.c  |  28 +--
>>   example/packet/odp_pktio.c |  28 +--
>>   example/timer/odp_timer_test.c |  64 +++
>>   platform/linux-generic/Makefile.am |   4 +-
>>   platform/linux-generic/include/api/odp.h   |   3 +-
>>   platform/linux-generic/include/api/odp_buffer.h|  40 +++--
>>   .../linux-generic/include/api/odp_buffer_pool.h| 177
>> ---
>>   .../linux-generic/include/api/odp_classification.h |   2 +-
>>   platform/linux-generic/include/api/odp_config.h|   4 +-
>>   platform/linux-generic/include/api/odp_crypto.h|  16 +-
>>   platform/linux-generic/include/api/odp_event.h |  59 +++
>>   platform/linux-generic/include/api/odp_packet.h|  29 ++--
>>   platform/linux-generic/include/api/odp_packet_io.h |   4 +-
>>   .../linux-generic/include/api/odp_platform_types.h |  10 +-
>>   platform/linux-generic/include/api/odp_pool.h  | 189
>> +
>>   platform/linux-generic/include/api/odp_queue.h |  32 ++--
>>   platform/linux-generic/include/api/odp_schedule.h  |  32 ++--
>>   platform/linux-generic/include/api/odp_timer.h |  56 +++---
>>   .../linux-generic/include/odp_buffer_inlines.h |   6 +-
>>   .../linux-generic/include/odp_buffer_internal.h|  20 ++-
>>   .../include/odp_buffer_pool_internal.h |  22 +--
>>   .../linux-generic/include/odp_crypto_internal.h|   2 +-
>>   .../linux-generic/include/odp_packet_internal.h|   8 +-
>>   platform/linux-generic/include/odp_packet_socket.h |  10 +-
>>   platform/linux-generic/odp_buffer.c|  12 +-
>>   platform/linux-generic/odp_buffer_pool.c   | 133
>> +++
>>   platform/linux-generic/odp_crypto.c|  29 ++--
>>   platform/linux-generic/odp_event.c |  19 +++
>>   platform/linux-generic/odp_packet.c|  34 ++--
>>   platform/linux-generic/odp_packet_io.c |  14 +-
>>   platform/linux-generic/odp_packet_socket.c |  10 +-
>>   platform/linux-generic/odp_queue.c |  18 +-
>>   platform/linux-generic/odp_schedule.c  |  48 +++---
>>   platform/linux-generic/odp_timer.c |  35 ++--
>>   test/performance/odp_scheduling.c  | 105 +++-
>>   43 files changed, 806 insertions(+), 646 deletions(-)
>>   delete mode 100644 platform/linux-generic/include/api/odp_buffer_pool.h
>>   create mode 100644 platform/linux-generic/include/api/odp_event.h
>>   create mode 100644 platform/linux-generic/include/api/odp_pool.h
>>   create mode 100644 platform/linux-generic/odp_event.c
>>
>>
>

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Ola Dahl

On 2015-01-15 16:40, Petri Savolainen wrote:

This patches introduces odp_event_t and replaces with that the usage of
odp_buffer_t as the super class for other "buffer types". What used to be a
buffer type is now an event type.


I wonder why odp_buffer_t is still kept?

And why, for instance, the file odp_buffer.c is needed? (or, why it is 
not named odp_event.c?)


Shall we think of

events as "things that can be scheduled and can be stored in queues"

and

buffers as "places where data can be stored" ?

Best regards,

Ola D (a bit confused)



There are some lines over 80 char, since those are caused by temporary
event <-> buffer, packet -> event -> buffer conversions and should be cleaned up
from the implementation anyway.

Petri Savolainen (15):
   api: event: Add odp_event_t
   api: event: odp_schedule and odp_queue_enq
   api: event: schedule_multi and queue_enq_multi
   api: event: odp_queue_deq
   api: event: odp_queue_deq_multi
   api: buffer: Removed odp_buffer_type
   api: packet: Removed odp_packet_to_buffer
   api: packet: Removed odp_packet_from_buffer
   api: timer: Use odp_event_t instead of odp_buffer_t
   api: crypto: Use odp_event_t instead of odp_buffer_t
   linux-generic: crypto: Use packet alloc for packet
   api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
   api: pool: Rename pool params and remove buffer types
   api: pool: Rename odp_buffer_pool_ to odp_pool_
   api: config: Renamed ODP_CONFIG_BUFFER_POOLS

  example/generator/odp_generator.c  |  38 ++---
  example/ipsec/odp_ipsec.c  |  70 
  example/ipsec/odp_ipsec_cache.c|   4 +-
  example/ipsec/odp_ipsec_cache.h|   2 +-
  example/ipsec/odp_ipsec_loop_db.c  |   2 +-
  example/ipsec/odp_ipsec_loop_db.h  |  12 +-
  example/ipsec/odp_ipsec_stream.c   |  20 +--
  example/ipsec/odp_ipsec_stream.h   |   2 +-
  example/l2fwd/odp_l2fwd.c  |  28 +--
  example/packet/odp_pktio.c |  28 +--
  example/timer/odp_timer_test.c |  64 +++
  platform/linux-generic/Makefile.am |   4 +-
  platform/linux-generic/include/api/odp.h   |   3 +-
  platform/linux-generic/include/api/odp_buffer.h|  40 +++--
  .../linux-generic/include/api/odp_buffer_pool.h| 177 ---
  .../linux-generic/include/api/odp_classification.h |   2 +-
  platform/linux-generic/include/api/odp_config.h|   4 +-
  platform/linux-generic/include/api/odp_crypto.h|  16 +-
  platform/linux-generic/include/api/odp_event.h |  59 +++
  platform/linux-generic/include/api/odp_packet.h|  29 ++--
  platform/linux-generic/include/api/odp_packet_io.h |   4 +-
  .../linux-generic/include/api/odp_platform_types.h |  10 +-
  platform/linux-generic/include/api/odp_pool.h  | 189 +
  platform/linux-generic/include/api/odp_queue.h |  32 ++--
  platform/linux-generic/include/api/odp_schedule.h  |  32 ++--
  platform/linux-generic/include/api/odp_timer.h |  56 +++---
  .../linux-generic/include/odp_buffer_inlines.h |   6 +-
  .../linux-generic/include/odp_buffer_internal.h|  20 ++-
  .../include/odp_buffer_pool_internal.h |  22 +--
  .../linux-generic/include/odp_crypto_internal.h|   2 +-
  .../linux-generic/include/odp_packet_internal.h|   8 +-
  platform/linux-generic/include/odp_packet_socket.h |  10 +-
  platform/linux-generic/odp_buffer.c|  12 +-
  platform/linux-generic/odp_buffer_pool.c   | 133 +++
  platform/linux-generic/odp_crypto.c|  29 ++--
  platform/linux-generic/odp_event.c |  19 +++
  platform/linux-generic/odp_packet.c|  34 ++--
  platform/linux-generic/odp_packet_io.c |  14 +-
  platform/linux-generic/odp_packet_socket.c |  10 +-
  platform/linux-generic/odp_queue.c |  18 +-
  platform/linux-generic/odp_schedule.c  |  48 +++---
  platform/linux-generic/odp_timer.c |  35 ++--
  test/performance/odp_scheduling.c  | 105 +++-
  43 files changed, 806 insertions(+), 646 deletions(-)
  delete mode 100644 platform/linux-generic/include/api/odp_buffer_pool.h
  create mode 100644 platform/linux-generic/include/api/odp_event.h
  create mode 100644 platform/linux-generic/include/api/odp_pool.h
  create mode 100644 platform/linux-generic/odp_event.c




___
lng-odp mailing list
lng-odp@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/lng-odp


Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Mike Holmes
Events is scheduled for 0.9.0 and it is invasive so it looks like we will
hold off all other commits for 0.9.0 until it is in, I would like to follow
it immediately by the header reorg patch as that is also very invasive so
that we get the disruption out of the way.

To make this happen can we review events and the header reorg with high
priority, and then be aware that other scheduled patches may need rebasing.

As a reminder, below is in the 0.9.0 bucket but I think a portion of the
list will have bump to 0.10

ABA issues - Geoffrey

   - linux-generic: Implement _odp_atomic_tptr_t opaque type to avoid ABA
   problems on fast non-deterministic systems
   -

   Convert buffer_pool allocators to use opaque tagged pointer


Crypto Completion - Robie

   -

   http://lists.linaro.org/pipermail/lng-odp/2015-January/007601.html
   -

   Follows Events


Events - Petri

   -

   https://patches.linaro.org/43202/


*Packet I/O impl: Stuart / Maxim *

   -

   Missing five pktio functions in test
   -
   -

   Missing support for Bala
   -

  linux-generic: pktio: add loopback device support
  -
   -

   [lng-odp] [PATCH] linux-generic: pktio: add loopback device support
   -

  Need review
  -

   lng-odp] [PATCH] example: pktio: don't create inq for burst mode
   -

  Reviewed
  -

  needs to be applied
  -



*Termination implementation API: Yan*

   -

   New termination APIs


Add odp_errno.h - Mario


Termination tests / implementation: - Yan


Move header files out of linux-generic - Taras / Anders

   -

   [RFC PULL REQUEST] reorganisation of API header files


Debian packaging - Anders

   -

   https://patches.linaro.org/43146/


*Classification tests : Bala*

   -

   depends on Stuart / Maxim
   -

   Working on RFC


Classification cleanup API Bala

On 16 January 2015 at 06:54, Savolainen, Petri (NSN - FI/Espoo) <
petri.savolai...@nsn.com> wrote:

>  Maybe it’s better to test first which way results less (and more
> trivial) merge conflicts. I suspect that event first, directory/file
> restructure second would be easier job for git merge tool.
>
>
>
> Once we have decide that events are the way to go, someone can pick-up the
> job to update validation suite. It’s just matter of optimizing work flow
> for next couple of weeks.
>
>
>
> -Petri
>
>
>
>
>
> *From:* ext Bill Fischofer [mailto:bill.fischo...@linaro.org]
> *Sent:* Friday, January 16, 2015 1:13 PM
> *To:* Savolainen, Petri (NSN - FI/Espoo)
> *Cc:* ext Ola Liljedahl; LNG ODP Mailman List
>
> *Subject:* Re: [lng-odp] [PATCH 00/15] Event introduction
>
>
>
> We definitely need the validation tests to be updated as part of the
> initial patch, otherwise we have a patch that results in a non-buildable
> system, which violates our agreed-to patch rules.
>
>
>
> Given that Anders' API restructure patch is at a more complete state and
> is needed to support API inlining in a portable manner, I suggest that we
> integrate that patch first and then rebase this one (in a complete form) on
> it.  This would also ease the conversion issues for other implementations
> since this change would then ride on the platform-independent API structure
> that the former patch introduces.
>
>
>
> On Fri, Jan 16, 2015 at 4:52 AM, Savolainen, Petri (NSN - FI/Espoo) <
> petri.savolai...@nsn.com> wrote:
>
> Yes, agree validation needs to be updated (soon or at the same time).
>
> Because the patch set is out now, someone could have picked that up and
> started that work already yesterday. We just need to decide if we merge
> this for 0.9 and if so, who updates validation suite and how those are
> merged. This patch set builds and runs for the default target.
>
> ./bootstrap
> ./configure
> make
>
>
> -Petri
>
>
>
> > -Original Message-
> > From: ext Ola Liljedahl [mailto:ola.liljed...@linaro.org]
> > Sent: Friday, January 16, 2015 12:43 PM
> > To: Savolainen, Petri (NSN - FI/Espoo)
> > Cc: ext Bill Fischofer; LNG ODP Mailman List
> > Subject: Re: [lng-odp] [PATCH 00/15] Event introduction
> >
> > Petri this is quite well described but really should be part of the
> > patch description (in the cover letter)? Then no need to have to ask
> > why all this is done.
> > I think we would like the validation suite (and everything else) to
> > build as well... It's a bitch to change API's, I know.
> > Even if the changes in some (more or less subjective) ways are not
> > complete, if everything builds and runs then we know that ODP is in
> > the same state as before the patch was applied. Cleaning up the
> > implementation can and will always continue.
> >
> >
> > On 16 January 2015 at 10:25, Savolainen, Petri (NSN

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Savolainen, Petri (NSN - FI/Espoo)
Maybe it’s better to test first which way results less (and more trivial) merge 
conflicts. I suspect that event first, directory/file restructure second would 
be easier job for git merge tool.

Once we have decide that events are the way to go, someone can pick-up the job 
to update validation suite. It’s just matter of optimizing work flow for next 
couple of weeks.

-Petri


From: ext Bill Fischofer [mailto:bill.fischo...@linaro.org]
Sent: Friday, January 16, 2015 1:13 PM
To: Savolainen, Petri (NSN - FI/Espoo)
Cc: ext Ola Liljedahl; LNG ODP Mailman List
Subject: Re: [lng-odp] [PATCH 00/15] Event introduction

We definitely need the validation tests to be updated as part of the initial 
patch, otherwise we have a patch that results in a non-buildable system, which 
violates our agreed-to patch rules.

Given that Anders' API restructure patch is at a more complete state and is 
needed to support API inlining in a portable manner, I suggest that we 
integrate that patch first and then rebase this one (in a complete form) on it. 
 This would also ease the conversion issues for other implementations since 
this change would then ride on the platform-independent API structure that the 
former patch introduces.

On Fri, Jan 16, 2015 at 4:52 AM, Savolainen, Petri (NSN - FI/Espoo) 
mailto:petri.savolai...@nsn.com>> wrote:
Yes, agree validation needs to be updated (soon or at the same time).

Because the patch set is out now, someone could have picked that up and started 
that work already yesterday. We just need to decide if we merge this for 0.9 
and if so, who updates validation suite and how those are merged. This patch 
set builds and runs for the default target.

./bootstrap
./configure
make


-Petri


> -Original Message-
> From: ext Ola Liljedahl 
> [mailto:ola.liljed...@linaro.org<mailto:ola.liljed...@linaro.org>]
> Sent: Friday, January 16, 2015 12:43 PM
> To: Savolainen, Petri (NSN - FI/Espoo)
> Cc: ext Bill Fischofer; LNG ODP Mailman List
> Subject: Re: [lng-odp] [PATCH 00/15] Event introduction
>
> Petri this is quite well described but really should be part of the
> patch description (in the cover letter)? Then no need to have to ask
> why all this is done.
> I think we would like the validation suite (and everything else) to
> build as well... It's a bitch to change API's, I know.
> Even if the changes in some (more or less subjective) ways are not
> complete, if everything builds and runs then we know that ODP is in
> the same state as before the patch was applied. Cleaning up the
> implementation can and will always continue.
>
>
> On 16 January 2015 at 10:25, Savolainen, Petri (NSN - FI/Espoo)
> mailto:petri.savolai...@nsn.com>> wrote:
> >
> >
> >
> >
> > From: ext Bill Fischofer 
> > [mailto:bill.fischo...@linaro.org<mailto:bill.fischo...@linaro.org>]
> > Sent: Thursday, January 15, 2015 11:26 PM
> > To: Petri Savolainen
> > Cc: LNG ODP Mailman List
> > Subject: Re: [lng-odp] [PATCH 00/15] Event introduction
> >
> >
> >
> > Some more observations after having looked this over in a bit more
> detail:
> >
> >
> >
> > This patch in its current form is basically a massive rename from
> buffers to
> > events and changing things like odp_buffer_pool_t to odp_pool_t.
> Presumably
> > this is intended to be followed by additional patches that surface new
> > capabilities that build on this revised nomenclature, but for now the
> > advantages of this change are unclear.  While a patch is good, it would
> be
> > really helpful to have a description of what the envisioned target looks
> > like so that the motivation behind this rename can be better
> appreciated.
> >
> >
> >
> > This patch set introduces the new API structure. Implementation changes
> are
> > minimal since it’s an implementation choice if buffer is used as the
> base
> > class. Validation should be added and implementation cleaned where
> needed
> > after this.
> >
> >
> >
> > As we have talked this already multiple times:
> >
> > -Event replaces buffer as the “base class” of things that can be
> > transmitted over queues and scheduled
> >
> > -Event has minimum metadata (only event type ==
> odp_event_type())
> >
> > -Currently supported event types are: buffer, packet, timeout.
> > Crypto completion event is likely to be the fourth one.
> >
> > -Buffer is just a another event (=raw buffer, no segmentation)
> >
> > -Benefit of the opaque base class is that different event types
> are
> > more independent (e.g. do not have to implement odp_buffer_size(),
> > odp_buffer_a

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Bill Fischofer
We definitely need the validation tests to be updated as part of the
initial patch, otherwise we have a patch that results in a non-buildable
system, which violates our agreed-to patch rules.

Given that Anders' API restructure patch is at a more complete state and is
needed to support API inlining in a portable manner, I suggest that we
integrate that patch first and then rebase this one (in a complete form) on
it.  This would also ease the conversion issues for other implementations
since this change would then ride on the platform-independent API structure
that the former patch introduces.

On Fri, Jan 16, 2015 at 4:52 AM, Savolainen, Petri (NSN - FI/Espoo) <
petri.savolai...@nsn.com> wrote:

> Yes, agree validation needs to be updated (soon or at the same time).
>
> Because the patch set is out now, someone could have picked that up and
> started that work already yesterday. We just need to decide if we merge
> this for 0.9 and if so, who updates validation suite and how those are
> merged. This patch set builds and runs for the default target.
>
> ./bootstrap
> ./configure
> make
>
>
> -Petri
>
>
> > -Original Message-
> > From: ext Ola Liljedahl [mailto:ola.liljed...@linaro.org]
> > Sent: Friday, January 16, 2015 12:43 PM
> > To: Savolainen, Petri (NSN - FI/Espoo)
> > Cc: ext Bill Fischofer; LNG ODP Mailman List
> > Subject: Re: [lng-odp] [PATCH 00/15] Event introduction
> >
> > Petri this is quite well described but really should be part of the
> > patch description (in the cover letter)? Then no need to have to ask
> > why all this is done.
> > I think we would like the validation suite (and everything else) to
> > build as well... It's a bitch to change API's, I know.
> > Even if the changes in some (more or less subjective) ways are not
> > complete, if everything builds and runs then we know that ODP is in
> > the same state as before the patch was applied. Cleaning up the
> > implementation can and will always continue.
> >
> >
> > On 16 January 2015 at 10:25, Savolainen, Petri (NSN - FI/Espoo)
> >  wrote:
> > >
> > >
> > >
> > >
> > > From: ext Bill Fischofer [mailto:bill.fischo...@linaro.org]
> > > Sent: Thursday, January 15, 2015 11:26 PM
> > > To: Petri Savolainen
> > > Cc: LNG ODP Mailman List
> > > Subject: Re: [lng-odp] [PATCH 00/15] Event introduction
> > >
> > >
> > >
> > > Some more observations after having looked this over in a bit more
> > detail:
> > >
> > >
> > >
> > > This patch in its current form is basically a massive rename from
> > buffers to
> > > events and changing things like odp_buffer_pool_t to odp_pool_t.
> > Presumably
> > > this is intended to be followed by additional patches that surface new
> > > capabilities that build on this revised nomenclature, but for now the
> > > advantages of this change are unclear.  While a patch is good, it would
> > be
> > > really helpful to have a description of what the envisioned target
> looks
> > > like so that the motivation behind this rename can be better
> > appreciated.
> > >
> > >
> > >
> > > This patch set introduces the new API structure. Implementation changes
> > are
> > > minimal since it’s an implementation choice if buffer is used as the
> > base
> > > class. Validation should be added and implementation cleaned where
> > needed
> > > after this.
> > >
> > >
> > >
> > > As we have talked this already multiple times:
> > >
> > > -Event replaces buffer as the “base class” of things that can
> be
> > > transmitted over queues and scheduled
> > >
> > > -Event has minimum metadata (only event type ==
> > odp_event_type())
> > >
> > > -Currently supported event types are: buffer, packet, timeout.
> > > Crypto completion event is likely to be the fourth one.
> > >
> > > -Buffer is just a another event (=raw buffer, no segmentation)
> > >
> > > -Benefit of the opaque base class is that different event types
> > are
> > > more independent (e.g. do not have to implement odp_buffer_size(),
> > > odp_buffer_addr(), etc)
> > >
> > > -There are event types that do not carry data, but only
> metadata
> > > (e.g. timer timeout). Also in future, some event types may not be
> linked
> > to
> > > a pool (user could not allocate, or ask for the pool)
> >

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Savolainen, Petri (NSN - FI/Espoo)
Yes, agree validation needs to be updated (soon or at the same time).

Because the patch set is out now, someone could have picked that up and started 
that work already yesterday. We just need to decide if we merge this for 0.9 
and if so, who updates validation suite and how those are merged. This patch 
set builds and runs for the default target.

./bootstrap
./configure
make


-Petri


> -Original Message-
> From: ext Ola Liljedahl [mailto:ola.liljed...@linaro.org]
> Sent: Friday, January 16, 2015 12:43 PM
> To: Savolainen, Petri (NSN - FI/Espoo)
> Cc: ext Bill Fischofer; LNG ODP Mailman List
> Subject: Re: [lng-odp] [PATCH 00/15] Event introduction
> 
> Petri this is quite well described but really should be part of the
> patch description (in the cover letter)? Then no need to have to ask
> why all this is done.
> I think we would like the validation suite (and everything else) to
> build as well... It's a bitch to change API's, I know.
> Even if the changes in some (more or less subjective) ways are not
> complete, if everything builds and runs then we know that ODP is in
> the same state as before the patch was applied. Cleaning up the
> implementation can and will always continue.
> 
> 
> On 16 January 2015 at 10:25, Savolainen, Petri (NSN - FI/Espoo)
>  wrote:
> >
> >
> >
> >
> > From: ext Bill Fischofer [mailto:bill.fischo...@linaro.org]
> > Sent: Thursday, January 15, 2015 11:26 PM
> > To: Petri Savolainen
> > Cc: LNG ODP Mailman List
> > Subject: Re: [lng-odp] [PATCH 00/15] Event introduction
> >
> >
> >
> > Some more observations after having looked this over in a bit more
> detail:
> >
> >
> >
> > This patch in its current form is basically a massive rename from
> buffers to
> > events and changing things like odp_buffer_pool_t to odp_pool_t.
> Presumably
> > this is intended to be followed by additional patches that surface new
> > capabilities that build on this revised nomenclature, but for now the
> > advantages of this change are unclear.  While a patch is good, it would
> be
> > really helpful to have a description of what the envisioned target looks
> > like so that the motivation behind this rename can be better
> appreciated.
> >
> >
> >
> > This patch set introduces the new API structure. Implementation changes
> are
> > minimal since it’s an implementation choice if buffer is used as the
> base
> > class. Validation should be added and implementation cleaned where
> needed
> > after this.
> >
> >
> >
> > As we have talked this already multiple times:
> >
> > -Event replaces buffer as the “base class” of things that can be
> > transmitted over queues and scheduled
> >
> > -Event has minimum metadata (only event type ==
> odp_event_type())
> >
> > -Currently supported event types are: buffer, packet, timeout.
> > Crypto completion event is likely to be the fourth one.
> >
> > -Buffer is just a another event (=raw buffer, no segmentation)
> >
> > -Benefit of the opaque base class is that different event types
> are
> > more independent (e.g. do not have to implement odp_buffer_size(),
> > odp_buffer_addr(), etc)
> >
> > -There are event types that do not carry data, but only metadata
> > (e.g. timer timeout). Also in future, some event types may not be linked
> to
> > a pool (user could not allocate, or ask for the pool)
> >
> > -Application cannot access one event type through multiple APIs
> > (e.g. mix odp_buffer_xxx() and odp_packet_xxx() calls when accessing a
> > packet)
> >
> > -Pools are not only for buffers, but for multiple event types
> > (buffers, packets, timeouts, etc)
> >
> >
> >
> >
> >
> > Unless we also get API inline support into v1.0, there will be a
> performance
> > hit here since as a result of the rename it seems a lot of applications
> will
> > be making frequent calls to odp_buffer_to_event() and
> > odp_buffer_from_event() that were not needed before.
> >
> >
> >
> > Performance is exactly the same as earlier. There are same number of
> handle
> > conversions for packet, timeouts, etc (other than raw buffers). The
> > conversion is still most likely a cast. I added some extra conversion
> into
> > implementation to limit implementation changes (but performance of two
> type
> > casts instead of one is the same).
> >
> >
> >
> > ev = odp_schedule();
> >
> > pkt = odp_packet_from_e

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Ola Liljedahl
Petri this is quite well described but really should be part of the
patch description (in the cover letter)? Then no need to have to ask
why all this is done.
I think we would like the validation suite (and everything else) to
build as well... It's a bitch to change API's, I know.
Even if the changes in some (more or less subjective) ways are not
complete, if everything builds and runs then we know that ODP is in
the same state as before the patch was applied. Cleaning up the
implementation can and will always continue.


On 16 January 2015 at 10:25, Savolainen, Petri (NSN - FI/Espoo)
 wrote:
>
>
>
>
> From: ext Bill Fischofer [mailto:bill.fischo...@linaro.org]
> Sent: Thursday, January 15, 2015 11:26 PM
> To: Petri Savolainen
> Cc: LNG ODP Mailman List
> Subject: Re: [lng-odp] [PATCH 00/15] Event introduction
>
>
>
> Some more observations after having looked this over in a bit more detail:
>
>
>
> This patch in its current form is basically a massive rename from buffers to
> events and changing things like odp_buffer_pool_t to odp_pool_t.  Presumably
> this is intended to be followed by additional patches that surface new
> capabilities that build on this revised nomenclature, but for now the
> advantages of this change are unclear.  While a patch is good, it would be
> really helpful to have a description of what the envisioned target looks
> like so that the motivation behind this rename can be better appreciated.
>
>
>
> This patch set introduces the new API structure. Implementation changes are
> minimal since it’s an implementation choice if buffer is used as the base
> class. Validation should be added and implementation cleaned where needed
> after this.
>
>
>
> As we have talked this already multiple times:
>
> -Event replaces buffer as the “base class” of things that can be
> transmitted over queues and scheduled
>
> -Event has minimum metadata (only event type == odp_event_type())
>
> -Currently supported event types are: buffer, packet, timeout.
> Crypto completion event is likely to be the fourth one.
>
> -Buffer is just a another event (=raw buffer, no segmentation)
>
> -Benefit of the opaque base class is that different event types are
> more independent (e.g. do not have to implement odp_buffer_size(),
> odp_buffer_addr(), etc)
>
> -There are event types that do not carry data, but only metadata
> (e.g. timer timeout). Also in future, some event types may not be linked to
> a pool (user could not allocate, or ask for the pool)
>
> -Application cannot access one event type through multiple APIs
> (e.g. mix odp_buffer_xxx() and odp_packet_xxx() calls when accessing a
> packet)
>
> -Pools are not only for buffers, but for multiple event types
> (buffers, packets, timeouts, etc)
>
>
>
>
>
> Unless we also get API inline support into v1.0, there will be a performance
> hit here since as a result of the rename it seems a lot of applications will
> be making frequent calls to odp_buffer_to_event() and
> odp_buffer_from_event() that were not needed before.
>
>
>
> Performance is exactly the same as earlier. There are same number of handle
> conversions for packet, timeouts, etc (other than raw buffers). The
> conversion is still most likely a cast. I added some extra conversion into
> implementation to limit implementation changes (but performance of two type
> casts instead of one is the same).
>
>
>
> ev = odp_schedule();
>
> pkt = odp_packet_from_event(ev)
>
>
>
> vs.
>
>
>
> buf = odp_schedule();
>
> pkt = odp_packet_from_buffer(buf);
>
>
>
>
>
> There are a few oddities.  Why wasn't odp_buffer_pool.c renamed to
> odp_pool.c since it now implements odp_pool_create(), not
> odp_buffer_pool_create(), etc.?  There also doesn't appear to be any way to
> manipulate events other than by first converting them to buffers.  For
> example, when an event is obtained from odp_schedule() it can't be freed.
> Instead, you do an odp_buffer_from_event() followed by an odp_buffer_free()
> call. This seems awkward.
>
>
>
> Since .c is implementation. I did minimal implementation change. Others can
> continue with implementation clean ups where needed.
>
>
>
> odp_event_free(odp_event_t* ev) can be added, but it would be mostly useful
> when application wants to blindly drop an event (without checking its type
> first).
>
>
>
> Event <-> buffer conversion is the feature. It promotes usage of correct
> types when accessing the event. Also (linux-generic) implementation should
> enforce type correctness and report a build (or run time) error if user
> tries

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Savolainen, Petri (NSN - FI/Espoo)


From: ext Bill Fischofer [mailto:bill.fischo...@linaro.org]
Sent: Thursday, January 15, 2015 11:26 PM
To: Petri Savolainen
Cc: LNG ODP Mailman List
Subject: Re: [lng-odp] [PATCH 00/15] Event introduction

Some more observations after having looked this over in a bit more detail:

This patch in its current form is basically a massive rename from buffers to 
events and changing things like odp_buffer_pool_t to odp_pool_t.  Presumably 
this is intended to be followed by additional patches that surface new 
capabilities that build on this revised nomenclature, but for now the 
advantages of this change are unclear.  While a patch is good, it would be 
really helpful to have a description of what the envisioned target looks like 
so that the motivation behind this rename can be better appreciated.

This patch set introduces the new API structure. Implementation changes are 
minimal since it’s an implementation choice if buffer is used as the base 
class. Validation should be added and implementation cleaned where needed after 
this.

As we have talked this already multiple times:

-Event replaces buffer as the “base class” of things that can be 
transmitted over queues and scheduled

-Event has minimum metadata (only event type == odp_event_type())

-Currently supported event types are: buffer, packet, timeout. Crypto 
completion event is likely to be the fourth one.

-Buffer is just a another event (=raw buffer, no segmentation)

-Benefit of the opaque base class is that different event types are 
more independent (e.g. do not have to implement odp_buffer_size(), 
odp_buffer_addr(), etc)

-There are event types that do not carry data, but only metadata (e.g. 
timer timeout). Also in future, some event types may not be linked to a pool 
(user could not allocate, or ask for the pool)

-Application cannot access one event type through multiple APIs (e.g. 
mix odp_buffer_xxx() and odp_packet_xxx() calls when accessing a packet)

-Pools are not only for buffers, but for multiple event types (buffers, 
packets, timeouts, etc)



Unless we also get API inline support into v1.0, there will be a performance 
hit here since as a result of the rename it seems a lot of applications will be 
making frequent calls to odp_buffer_to_event() and odp_buffer_from_event() that 
were not needed before.

Performance is exactly the same as earlier. There are same number of handle 
conversions for packet, timeouts, etc (other than raw buffers). The conversion 
is still most likely a cast. I added some extra conversion into implementation 
to limit implementation changes (but performance of two type casts instead of 
one is the same).

ev = odp_schedule();
pkt = odp_packet_from_event(ev)

vs.

buf = odp_schedule();
pkt = odp_packet_from_buffer(buf);


There are a few oddities.  Why wasn't odp_buffer_pool.c renamed to odp_pool.c 
since it now implements odp_pool_create(), not odp_buffer_pool_create(), etc.?  
There also doesn't appear to be any way to manipulate events other than by 
first converting them to buffers.  For example, when an event is obtained from 
odp_schedule() it can't be freed.  Instead, you do an odp_buffer_from_event() 
followed by an odp_buffer_free() call. This seems awkward.

Since .c is implementation. I did minimal implementation change. Others can 
continue with implementation clean ups where needed.

odp_event_free(odp_event_t* ev) can be added, but it would be mostly useful 
when application wants to blindly drop an event (without checking its type 
first).

Event <-> buffer conversion is the feature. It promotes usage of correct types 
when accessing the event. Also (linux-generic) implementation should enforce 
type correctness and report a build (or run time) error if user tries to e.g. 
do odp_buffer_addr(event) or odp_packet_data(buf).

The odp_pool_param_t (formerly odp_buffer_pool_param_t) is also incomplete 
since it's not clear how its intended to be used for the various event types.  
For example, there is a pkt section that has some items but odp_pool_create() 
still only references the buf section for creating packet events.  And the tmo 
section is null.

It’s incomplete to minimize implementation changes at this point. Those packet 
(and timeout) pool parametesr have to be defined and implementation changed 
accordingly. This type change enabled per event/pool type parameters, but does 
not implement those yet (== does not change the current pool param 
functionality).

It seems very late in v1.0 to be contemplating this large a change, especially 
as it doesn't seem to be fully fleshed out yet.  It would seem if we did 
something partial now applications would still face a step function conversion 
when the "second half" of the change was introduced later.  So I'm wondering if 
it might be better if this were deferred to post-v1.0 to allow time for it to 
be fully developed and intr

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-16 Thread Savolainen, Petri (NSN - FI/Espoo)
True, validation suites are not updated. Those can be updated after merge.

-Petri

From: ext Bill Fischofer [mailto:bill.fischo...@linaro.org]
Sent: Thursday, January 15, 2015 9:58 PM
To: Petri Savolainen
Cc: LNG ODP Mailman List
Subject: Re: [lng-odp] [PATCH 00/15] Event introduction

Actually, looks like none of the unit tests are updated by this patch, so 
tests/validation do not compile with this patch applied.

On Thu, Jan 15, 2015 at 1:48 PM, Bill Fischofer 
mailto:bill.fischo...@linaro.org>> wrote:
Initial comment:

Patch series applies, however appears incomplete as test/validation/odp_queue.c 
hasn't been updated:

odp_queue.c: In function ‘init_queue_suite’:
odp_queue.c:18:2: error: unknown type name ‘odp_buffer_pool_t’
  odp_buffer_pool_t pool;
  ^
odp_queue.c:19:2: error: unknown type name ‘odp_buffer_pool_param_t’
  odp_buffer_pool_param_t params;
  ^
odp_queue.c:21:8: error: request for member ‘buf_size’ in something not a 
structure or union
  params.buf_size  = 0;
^
odp_queue.c:22:8: error: request for member ‘buf_align’ in something not a 
structure or union
  params.buf_align = ODP_CACHE_LINE_SIZE;
^
odp_queue.c:23:8: error: request for member ‘num_bufs’ in something not a 
structure or union
  params.num_bufs  = 1024 * 10;
^
odp_queue.c:24:8: error: request for member ‘buf_type’ in something not a 
structure or union
  params.buf_type  = ODP_BUFFER_TYPE_RAW;
^
odp_queue.c:24:21: error: ‘ODP_BUFFER_TYPE_RAW’ undeclared (first use in this 
function)
  params.buf_type  = ODP_BUFFER_TYPE_RAW;
 ^
odp_queue.c:24:21: note: each undeclared identifier is reported only once for 
each function it appears in
odp_queue.c:26:2: error: implicit declaration of function 
‘odp_buffer_pool_create’ [-Werror=implicit-function-declaration]
  pool = odp_buffer_pool_create("msg_pool", ODP_SHM_NULL, ¶ms);
  ^
odp_queue.c:26:2: error: nested extern declaration of ‘odp_buffer_pool_create’ 
[-Werror=nested-externs]
odp_queue.c:28:6: error: ‘ODP_BUFFER_POOL_INVALID’ undeclared (first use in 
this function)
  if (ODP_BUFFER_POOL_INVALID == pool) {
  ^
odp_queue.c: In function ‘test_odp_queue_sunnyday’:
odp_queue.c:40:2: error: unknown type name ‘odp_buffer_pool_t’
  odp_buffer_pool_t msg_pool;
  ^
odp_queue.c:68:2: error: implicit declaration of function 
‘odp_buffer_pool_lookup’ [-Werror=implicit-function-declaration]
  msg_pool = odp_buffer_pool_lookup("msg_pool");
  ^
odp_queue.c:68:2: error: nested extern declaration of ‘odp_buffer_pool_lookup’ 
[-Werror=nested-externs]
cc1: all warnings being treated as errors
Makefile:843: recipe for target 'odp_queue.o' failed
make[2]: *** [odp_queue.o] Error 1
make[2]: Leaving directory '/home/bill/linaro/events/test/validation'
Makefile:369: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/bill/linaro/events/test'
Makefile:454: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
bill@ubuntu:~/linaro/events$


On Thu, Jan 15, 2015 at 9:40 AM, Petri Savolainen 
mailto:petri.savolai...@linaro.org>> wrote:
This patches introduces odp_event_t and replaces with that the usage of
odp_buffer_t as the super class for other "buffer types". What used to be a
buffer type is now an event type.

There are some lines over 80 char, since those are caused by temporary
event <-> buffer, packet -> event -> buffer conversions and should be cleaned up
from the implementation anyway.

Petri Savolainen (15):
  api: event: Add odp_event_t
  api: event: odp_schedule and odp_queue_enq
  api: event: schedule_multi and queue_enq_multi
  api: event: odp_queue_deq
  api: event: odp_queue_deq_multi
  api: buffer: Removed odp_buffer_type
  api: packet: Removed odp_packet_to_buffer
  api: packet: Removed odp_packet_from_buffer
  api: timer: Use odp_event_t instead of odp_buffer_t
  api: crypto: Use odp_event_t instead of odp_buffer_t
  linux-generic: crypto: Use packet alloc for packet
  api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
  api: pool: Rename pool params and remove buffer types
  api: pool: Rename odp_buffer_pool_ to odp_pool_
  api: config: Renamed ODP_CONFIG_BUFFER_POOLS

 example/generator/odp_generator.c  |  38 ++---
 example/ipsec/odp_ipsec.c  |  70 
 example/ipsec/odp_ipsec_cache.c|   4 +-
 example/ipsec/odp_ipsec_cache.h|   2 +-
 example/ipsec/odp_ipsec_loop_db.c  |   2 +-
 example/ipsec/odp_ipsec_loop_db.h  |  12 +-
 example/ipsec/odp_ipsec_stream.c   |  20 +--
 example/ipsec/odp_ipsec_stream.h   |   2 +-
 example/l2fwd/odp_l2fwd.c  |  28 +--
 example/packet/odp_pktio.c |  28 +--
 example/timer/odp_timer_test.c |

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-15 Thread Bill Fischofer
Some more observations after having looked this over in a bit more detail:

This patch in its current form is basically a massive rename from buffers
to events and changing things like odp_buffer_pool_t to odp_pool_t.
Presumably this is intended to be followed by additional patches that
surface new capabilities that build on this revised nomenclature, but for
now the advantages of this change are unclear.  While a patch is good, it
would be really helpful to have a description of what the envisioned target
looks like so that the motivation behind this rename can be better
appreciated.

Unless we also get API inline support into v1.0, there will be a
performance hit here since as a result of the rename it seems a lot of
applications will be making frequent calls to odp_buffer_to_event() and
odp_buffer_from_event() that were not needed before.

There are a few oddities.  Why wasn't odp_buffer_pool.c renamed to
odp_pool.c since it now implements odp_pool_create(), not
odp_buffer_pool_create(), etc.?  There also doesn't appear to be any way to
manipulate events other than by first converting them to buffers.  For
example, when an event is obtained from odp_schedule() it can't be freed.
Instead, you do an odp_buffer_from_event() followed by an odp_buffer_free()
call. This seems awkward.

The odp_pool_param_t (formerly odp_buffer_pool_param_t) is also incomplete
since it's not clear how its intended to be used for the various event
types.  For example, there is a pkt section that has some items but
odp_pool_create() still only references the buf section for creating packet
events.  And the tmo section is null.

It seems very late in v1.0 to be contemplating this large a change,
especially as it doesn't seem to be fully fleshed out yet.  It would seem
if we did something partial now applications would still face a step
function conversion when the "second half" of the change was introduced
later.  So I'm wondering if it might be better if this were deferred to
post-v1.0 to allow time for it to be fully developed and introduced as part
of a later release?  I think we can introduce new concepts in a reasonably
backward-compatible manner with some planning.


On Thu, Jan 15, 2015 at 1:58 PM, Bill Fischofer 
wrote:

> Actually, looks like none of the unit tests are updated by this patch, so
> tests/validation do not compile with this patch applied.
>
> On Thu, Jan 15, 2015 at 1:48 PM, Bill Fischofer  > wrote:
>
>> Initial comment:
>>
>> Patch series applies, however appears incomplete as
>> test/validation/odp_queue.c hasn't been updated:
>>
>> odp_queue.c: In function ‘init_queue_suite’:
>> odp_queue.c:18:2: error: unknown type name ‘odp_buffer_pool_t’
>>   odp_buffer_pool_t pool;
>>   ^
>> odp_queue.c:19:2: error: unknown type name ‘odp_buffer_pool_param_t’
>>   odp_buffer_pool_param_t params;
>>   ^
>> odp_queue.c:21:8: error: request for member ‘buf_size’ in something not a
>> structure or union
>>   params.buf_size  = 0;
>> ^
>> odp_queue.c:22:8: error: request for member ‘buf_align’ in something not
>> a structure or union
>>   params.buf_align = ODP_CACHE_LINE_SIZE;
>> ^
>> odp_queue.c:23:8: error: request for member ‘num_bufs’ in something not a
>> structure or union
>>   params.num_bufs  = 1024 * 10;
>> ^
>> odp_queue.c:24:8: error: request for member ‘buf_type’ in something not a
>> structure or union
>>   params.buf_type  = ODP_BUFFER_TYPE_RAW;
>> ^
>> odp_queue.c:24:21: error: ‘ODP_BUFFER_TYPE_RAW’ undeclared (first use in
>> this function)
>>   params.buf_type  = ODP_BUFFER_TYPE_RAW;
>>  ^
>> odp_queue.c:24:21: note: each undeclared identifier is reported only once
>> for each function it appears in
>> odp_queue.c:26:2: error: implicit declaration of function
>> ‘odp_buffer_pool_create’ [-Werror=implicit-function-declaration]
>>   pool = odp_buffer_pool_create("msg_pool", ODP_SHM_NULL, ¶ms);
>>   ^
>> odp_queue.c:26:2: error: nested extern declaration of
>> ‘odp_buffer_pool_create’ [-Werror=nested-externs]
>> odp_queue.c:28:6: error: ‘ODP_BUFFER_POOL_INVALID’ undeclared (first use
>> in this function)
>>   if (ODP_BUFFER_POOL_INVALID == pool) {
>>   ^
>> odp_queue.c: In function ‘test_odp_queue_sunnyday’:
>> odp_queue.c:40:2: error: unknown type name ‘odp_buffer_pool_t’
>>   odp_buffer_pool_t msg_pool;
>>   ^
>> odp_queue.c:68:2: error: implicit declaration of function
>> ‘odp_buffer_pool_lookup’ [-Werror=implicit-function-declaration]
>>   msg_pool = odp_buffer_pool_lookup("msg_pool");
>>   ^
>> odp_queue.c:68:2: error: nested extern declaration of
>> ‘odp_buffer_pool_lookup’ [-Werror=nested-externs]
>> cc1: all warnings being treated as errors
>> Makefile:843: recipe for target 'odp_queue.o' failed
>> make[2]: *** [odp_queue.o] Error 1
>> make[2]: Leaving directory '/home/bill/linaro/events/test/validation'
>> Makefile:369: recipe for target 'all-recursive' failed
>> make[1]: *** [all-recursive] Error 1
>> make[1]: Leaving directory '/home/bill/li

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-15 Thread Bill Fischofer
Actually, looks like none of the unit tests are updated by this patch, so
tests/validation do not compile with this patch applied.

On Thu, Jan 15, 2015 at 1:48 PM, Bill Fischofer 
wrote:

> Initial comment:
>
> Patch series applies, however appears incomplete as
> test/validation/odp_queue.c hasn't been updated:
>
> odp_queue.c: In function ‘init_queue_suite’:
> odp_queue.c:18:2: error: unknown type name ‘odp_buffer_pool_t’
>   odp_buffer_pool_t pool;
>   ^
> odp_queue.c:19:2: error: unknown type name ‘odp_buffer_pool_param_t’
>   odp_buffer_pool_param_t params;
>   ^
> odp_queue.c:21:8: error: request for member ‘buf_size’ in something not a
> structure or union
>   params.buf_size  = 0;
> ^
> odp_queue.c:22:8: error: request for member ‘buf_align’ in something not a
> structure or union
>   params.buf_align = ODP_CACHE_LINE_SIZE;
> ^
> odp_queue.c:23:8: error: request for member ‘num_bufs’ in something not a
> structure or union
>   params.num_bufs  = 1024 * 10;
> ^
> odp_queue.c:24:8: error: request for member ‘buf_type’ in something not a
> structure or union
>   params.buf_type  = ODP_BUFFER_TYPE_RAW;
> ^
> odp_queue.c:24:21: error: ‘ODP_BUFFER_TYPE_RAW’ undeclared (first use in
> this function)
>   params.buf_type  = ODP_BUFFER_TYPE_RAW;
>  ^
> odp_queue.c:24:21: note: each undeclared identifier is reported only once
> for each function it appears in
> odp_queue.c:26:2: error: implicit declaration of function
> ‘odp_buffer_pool_create’ [-Werror=implicit-function-declaration]
>   pool = odp_buffer_pool_create("msg_pool", ODP_SHM_NULL, ¶ms);
>   ^
> odp_queue.c:26:2: error: nested extern declaration of
> ‘odp_buffer_pool_create’ [-Werror=nested-externs]
> odp_queue.c:28:6: error: ‘ODP_BUFFER_POOL_INVALID’ undeclared (first use
> in this function)
>   if (ODP_BUFFER_POOL_INVALID == pool) {
>   ^
> odp_queue.c: In function ‘test_odp_queue_sunnyday’:
> odp_queue.c:40:2: error: unknown type name ‘odp_buffer_pool_t’
>   odp_buffer_pool_t msg_pool;
>   ^
> odp_queue.c:68:2: error: implicit declaration of function
> ‘odp_buffer_pool_lookup’ [-Werror=implicit-function-declaration]
>   msg_pool = odp_buffer_pool_lookup("msg_pool");
>   ^
> odp_queue.c:68:2: error: nested extern declaration of
> ‘odp_buffer_pool_lookup’ [-Werror=nested-externs]
> cc1: all warnings being treated as errors
> Makefile:843: recipe for target 'odp_queue.o' failed
> make[2]: *** [odp_queue.o] Error 1
> make[2]: Leaving directory '/home/bill/linaro/events/test/validation'
> Makefile:369: recipe for target 'all-recursive' failed
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory '/home/bill/linaro/events/test'
> Makefile:454: recipe for target 'all-recursive' failed
> make: *** [all-recursive] Error 1
> bill@ubuntu:~/linaro/events$
>
>
> On Thu, Jan 15, 2015 at 9:40 AM, Petri Savolainen <
> petri.savolai...@linaro.org> wrote:
>
>> This patches introduces odp_event_t and replaces with that the usage of
>> odp_buffer_t as the super class for other "buffer types". What used to be
>> a
>> buffer type is now an event type.
>>
>> There are some lines over 80 char, since those are caused by temporary
>> event <-> buffer, packet -> event -> buffer conversions and should be
>> cleaned up
>> from the implementation anyway.
>>
>> Petri Savolainen (15):
>>   api: event: Add odp_event_t
>>   api: event: odp_schedule and odp_queue_enq
>>   api: event: schedule_multi and queue_enq_multi
>>   api: event: odp_queue_deq
>>   api: event: odp_queue_deq_multi
>>   api: buffer: Removed odp_buffer_type
>>   api: packet: Removed odp_packet_to_buffer
>>   api: packet: Removed odp_packet_from_buffer
>>   api: timer: Use odp_event_t instead of odp_buffer_t
>>   api: crypto: Use odp_event_t instead of odp_buffer_t
>>   linux-generic: crypto: Use packet alloc for packet
>>   api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
>>   api: pool: Rename pool params and remove buffer types
>>   api: pool: Rename odp_buffer_pool_ to odp_pool_
>>   api: config: Renamed ODP_CONFIG_BUFFER_POOLS
>>
>>  example/generator/odp_generator.c  |  38 ++---
>>  example/ipsec/odp_ipsec.c  |  70 
>>  example/ipsec/odp_ipsec_cache.c|   4 +-
>>  example/ipsec/odp_ipsec_cache.h|   2 +-
>>  example/ipsec/odp_ipsec_loop_db.c  |   2 +-
>>  example/ipsec/odp_ipsec_loop_db.h  |  12 +-
>>  example/ipsec/odp_ipsec_stream.c   |  20 +--
>>  example/ipsec/odp_ipsec_stream.h   |   2 +-
>>  example/l2fwd/odp_l2fwd.c  |  28 +--
>>  example/packet/odp_pktio.c |  28 +--
>>  example/timer/odp_timer_test.c |  64 +++
>>  platform/linux-generic/Makefile.am |   4 +-
>>  platform/linux-generic/include/api/odp.h   |   3 +-
>>  platform/linux-generic/include/api/odp_buffer.h|  40 +++--
>

Re: [lng-odp] [PATCH 00/15] Event introduction

2015-01-15 Thread Bill Fischofer
Initial comment:

Patch series applies, however appears incomplete as
test/validation/odp_queue.c hasn't been updated:

odp_queue.c: In function ‘init_queue_suite’:
odp_queue.c:18:2: error: unknown type name ‘odp_buffer_pool_t’
  odp_buffer_pool_t pool;
  ^
odp_queue.c:19:2: error: unknown type name ‘odp_buffer_pool_param_t’
  odp_buffer_pool_param_t params;
  ^
odp_queue.c:21:8: error: request for member ‘buf_size’ in something not a
structure or union
  params.buf_size  = 0;
^
odp_queue.c:22:8: error: request for member ‘buf_align’ in something not a
structure or union
  params.buf_align = ODP_CACHE_LINE_SIZE;
^
odp_queue.c:23:8: error: request for member ‘num_bufs’ in something not a
structure or union
  params.num_bufs  = 1024 * 10;
^
odp_queue.c:24:8: error: request for member ‘buf_type’ in something not a
structure or union
  params.buf_type  = ODP_BUFFER_TYPE_RAW;
^
odp_queue.c:24:21: error: ‘ODP_BUFFER_TYPE_RAW’ undeclared (first use in
this function)
  params.buf_type  = ODP_BUFFER_TYPE_RAW;
 ^
odp_queue.c:24:21: note: each undeclared identifier is reported only once
for each function it appears in
odp_queue.c:26:2: error: implicit declaration of function
‘odp_buffer_pool_create’ [-Werror=implicit-function-declaration]
  pool = odp_buffer_pool_create("msg_pool", ODP_SHM_NULL, ¶ms);
  ^
odp_queue.c:26:2: error: nested extern declaration of
‘odp_buffer_pool_create’ [-Werror=nested-externs]
odp_queue.c:28:6: error: ‘ODP_BUFFER_POOL_INVALID’ undeclared (first use in
this function)
  if (ODP_BUFFER_POOL_INVALID == pool) {
  ^
odp_queue.c: In function ‘test_odp_queue_sunnyday’:
odp_queue.c:40:2: error: unknown type name ‘odp_buffer_pool_t’
  odp_buffer_pool_t msg_pool;
  ^
odp_queue.c:68:2: error: implicit declaration of function
‘odp_buffer_pool_lookup’ [-Werror=implicit-function-declaration]
  msg_pool = odp_buffer_pool_lookup("msg_pool");
  ^
odp_queue.c:68:2: error: nested extern declaration of
‘odp_buffer_pool_lookup’ [-Werror=nested-externs]
cc1: all warnings being treated as errors
Makefile:843: recipe for target 'odp_queue.o' failed
make[2]: *** [odp_queue.o] Error 1
make[2]: Leaving directory '/home/bill/linaro/events/test/validation'
Makefile:369: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/bill/linaro/events/test'
Makefile:454: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
bill@ubuntu:~/linaro/events$


On Thu, Jan 15, 2015 at 9:40 AM, Petri Savolainen <
petri.savolai...@linaro.org> wrote:

> This patches introduces odp_event_t and replaces with that the usage of
> odp_buffer_t as the super class for other "buffer types". What used to be a
> buffer type is now an event type.
>
> There are some lines over 80 char, since those are caused by temporary
> event <-> buffer, packet -> event -> buffer conversions and should be
> cleaned up
> from the implementation anyway.
>
> Petri Savolainen (15):
>   api: event: Add odp_event_t
>   api: event: odp_schedule and odp_queue_enq
>   api: event: schedule_multi and queue_enq_multi
>   api: event: odp_queue_deq
>   api: event: odp_queue_deq_multi
>   api: buffer: Removed odp_buffer_type
>   api: packet: Removed odp_packet_to_buffer
>   api: packet: Removed odp_packet_from_buffer
>   api: timer: Use odp_event_t instead of odp_buffer_t
>   api: crypto: Use odp_event_t instead of odp_buffer_t
>   linux-generic: crypto: Use packet alloc for packet
>   api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
>   api: pool: Rename pool params and remove buffer types
>   api: pool: Rename odp_buffer_pool_ to odp_pool_
>   api: config: Renamed ODP_CONFIG_BUFFER_POOLS
>
>  example/generator/odp_generator.c  |  38 ++---
>  example/ipsec/odp_ipsec.c  |  70 
>  example/ipsec/odp_ipsec_cache.c|   4 +-
>  example/ipsec/odp_ipsec_cache.h|   2 +-
>  example/ipsec/odp_ipsec_loop_db.c  |   2 +-
>  example/ipsec/odp_ipsec_loop_db.h  |  12 +-
>  example/ipsec/odp_ipsec_stream.c   |  20 +--
>  example/ipsec/odp_ipsec_stream.h   |   2 +-
>  example/l2fwd/odp_l2fwd.c  |  28 +--
>  example/packet/odp_pktio.c |  28 +--
>  example/timer/odp_timer_test.c |  64 +++
>  platform/linux-generic/Makefile.am |   4 +-
>  platform/linux-generic/include/api/odp.h   |   3 +-
>  platform/linux-generic/include/api/odp_buffer.h|  40 +++--
>  .../linux-generic/include/api/odp_buffer_pool.h| 177
> ---
>  .../linux-generic/include/api/odp_classification.h |   2 +-
>  platform/linux-generic/include/api/odp_config.h|   4 +-
>  platform/linux-generic/include/api/odp_crypto.h|  16 +-
>  platform/linux-generic/include/api/odp_event.h |  59 +++
>  platform/linux-generic/i

[lng-odp] [PATCH 00/15] Event introduction

2015-01-15 Thread Petri Savolainen
This patches introduces odp_event_t and replaces with that the usage of
odp_buffer_t as the super class for other "buffer types". What used to be a
buffer type is now an event type.

There are some lines over 80 char, since those are caused by temporary
event <-> buffer, packet -> event -> buffer conversions and should be cleaned up
from the implementation anyway.

Petri Savolainen (15):
  api: event: Add odp_event_t
  api: event: odp_schedule and odp_queue_enq
  api: event: schedule_multi and queue_enq_multi
  api: event: odp_queue_deq
  api: event: odp_queue_deq_multi
  api: buffer: Removed odp_buffer_type
  api: packet: Removed odp_packet_to_buffer
  api: packet: Removed odp_packet_from_buffer
  api: timer: Use odp_event_t instead of odp_buffer_t
  api: crypto: Use odp_event_t instead of odp_buffer_t
  linux-generic: crypto: Use packet alloc for packet
  api: buffer_pool: Rename odp_buffer_pool.h to odp_pool.h
  api: pool: Rename pool params and remove buffer types
  api: pool: Rename odp_buffer_pool_ to odp_pool_
  api: config: Renamed ODP_CONFIG_BUFFER_POOLS

 example/generator/odp_generator.c  |  38 ++---
 example/ipsec/odp_ipsec.c  |  70 
 example/ipsec/odp_ipsec_cache.c|   4 +-
 example/ipsec/odp_ipsec_cache.h|   2 +-
 example/ipsec/odp_ipsec_loop_db.c  |   2 +-
 example/ipsec/odp_ipsec_loop_db.h  |  12 +-
 example/ipsec/odp_ipsec_stream.c   |  20 +--
 example/ipsec/odp_ipsec_stream.h   |   2 +-
 example/l2fwd/odp_l2fwd.c  |  28 +--
 example/packet/odp_pktio.c |  28 +--
 example/timer/odp_timer_test.c |  64 +++
 platform/linux-generic/Makefile.am |   4 +-
 platform/linux-generic/include/api/odp.h   |   3 +-
 platform/linux-generic/include/api/odp_buffer.h|  40 +++--
 .../linux-generic/include/api/odp_buffer_pool.h| 177 ---
 .../linux-generic/include/api/odp_classification.h |   2 +-
 platform/linux-generic/include/api/odp_config.h|   4 +-
 platform/linux-generic/include/api/odp_crypto.h|  16 +-
 platform/linux-generic/include/api/odp_event.h |  59 +++
 platform/linux-generic/include/api/odp_packet.h|  29 ++--
 platform/linux-generic/include/api/odp_packet_io.h |   4 +-
 .../linux-generic/include/api/odp_platform_types.h |  10 +-
 platform/linux-generic/include/api/odp_pool.h  | 189 +
 platform/linux-generic/include/api/odp_queue.h |  32 ++--
 platform/linux-generic/include/api/odp_schedule.h  |  32 ++--
 platform/linux-generic/include/api/odp_timer.h |  56 +++---
 .../linux-generic/include/odp_buffer_inlines.h |   6 +-
 .../linux-generic/include/odp_buffer_internal.h|  20 ++-
 .../include/odp_buffer_pool_internal.h |  22 +--
 .../linux-generic/include/odp_crypto_internal.h|   2 +-
 .../linux-generic/include/odp_packet_internal.h|   8 +-
 platform/linux-generic/include/odp_packet_socket.h |  10 +-
 platform/linux-generic/odp_buffer.c|  12 +-
 platform/linux-generic/odp_buffer_pool.c   | 133 +++
 platform/linux-generic/odp_crypto.c|  29 ++--
 platform/linux-generic/odp_event.c |  19 +++
 platform/linux-generic/odp_packet.c|  34 ++--
 platform/linux-generic/odp_packet_io.c |  14 +-
 platform/linux-generic/odp_packet_socket.c |  10 +-
 platform/linux-generic/odp_queue.c |  18 +-
 platform/linux-generic/odp_schedule.c  |  48 +++---
 platform/linux-generic/odp_timer.c |  35 ++--
 test/performance/odp_scheduling.c  | 105 +++-
 43 files changed, 806 insertions(+), 646 deletions(-)
 delete mode 100644 platform/linux-generic/include/api/odp_buffer_pool.h
 create mode 100644 platform/linux-generic/include/api/odp_event.h
 create mode 100644 platform/linux-generic/include/api/odp_pool.h
 create mode 100644 platform/linux-generic/odp_event.c

-- 
2.2.2


___
lng-odp mailing list
lng-odp@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/lng-odp