Event is a thing that can be transmitted through queues. Event gives you the 
event type - nothing more. User needs to convert the received event according 
to its event type ...

buf = odp_buffer_from_event(event);

.. to access the information

my_msg = odp_buffer_addr(buf);

Buffer gives you the minimal support for transferring bytes through queues. 
Some events, like timeouts, may have only metadata (not variable sized user 
data).

-Petri


> -----Original Message-----
> From: lng-odp [mailto:[email protected]] On Behalf Of ext
> Zoltan Kiss
> Sent: Thursday, April 16, 2015 3:58 PM
> To: Ola Liljedahl; Mike Holmes
> Cc: lng-odp-forward
> Subject: Re: [lng-odp] odp timers
> 
> 
> 
> On 15/04/15 22:45, Ola Liljedahl wrote:
> > On 15 April 2015 at 18:22, Mike Holmes <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> >
> >
> >     On 15 April 2015 at 12:14, Zoltan Kiss <[email protected]
> >     <mailto:[email protected]>> wrote:
> >
> >         Btw. is there any documentation which describes the underlying
> >         concepts behind timeouts (why are they buffer types?) and
> events?
> >
> > Timeouts are a primary event type, just like buffers and packets. How
> > they are implemented is platform specific.
> Ok, but what are the expectations towards these buffer types? I mean
> something like these:
> - timeout buffers are expected to be able to store 10200 bytes, because
> that's the size of my favourite cute kitten image
> - packet buffers should support segmentation (this one at least is
> defined in packet.h implicitly), but raw buffers shouldn't
> - etc.
> 
> >
> > The linux-generic implementation uses buffers for timeouts, Petri (?)
> > added odp_timeout_alloc() and odp_timeout_free() when we migrated to the
> > event-based pool system.
> I'm also missing a good documentation written down about why are buffers
> are events, why is it better? How is it different? What's the rationale?
> What exactly are "events" in this case? So last night when I had a beer
> with my friends, what kind of buffer was that? ;)
> I have some vague ideas about that, but even searching the mailing list
> archives doesn't help.
> 
>   I am not sure the design is now 100% correct as
> > odp_timer.c imposes a timeout_header onto the timeouts that are actually
> > buffers. Can we be sure that there is actually space for the three
> > fields that odp_timeout_hdr_t adds to odp_buffer_hdr_t? And can you
> > always call odp_buffer_alloc() with a pool of type ODP_TYPE_TIMEOUT?
> > This seems to be expected by odp_timeout_alloc() and odp_timeout_free()
> > today.
> >
> > platform/linux-generic/include/odp_timer_internal.h:
> > typedef struct {
> >          /* common buffer header */
> >          odp_buffer_hdr_t buf_hdr;
> >
> >          /* Requested expiration time */
> >          uint64_t expiration;
> >          /* User ptr inherited from parent timer */
> >          void *user_ptr;
> >          /* Parent timer */
> >          odp_timer_t timer;
> > } odp_timeout_hdr_t;
> >
> > For portability reasons (reuse linux-generic timer implementation on
> > other platforms), it would be better if timeouts were plain buffers with
> > the extra timeout fields in the buffer data, not in the event header.
> > Then any buffer implementation could be used for the timeout events. The
> > timeouts must still have the event type ODP_TYPE_TIMEOUT.
> >
> >
> >     We have doc [1] which may not be current.
> >     We do need to address the availability documentation in 2015, it is
> >     generally hard to find or incomplete.
> >
> >        [1]
> >
> https://docs.google.com/document/d/1bfY_J8ecLJPsFTmYftb0NVmGnB9qkEc_NpcJ87
> yfaD8/edit
> >
> >
> >
> >         On 15/04/15 11:27, Maxim Uvarov wrote:
> >
> >             Hello Ola,
> >
> >             I have some questions about odp timers, can you please
> >             provide expertise
> >             for that?
> >
> >             odp_timeout_alloc() use pool and calls
> odp_buffer_alloc(pool).
> >
> >             Is it supposed that timeout buffer carries packet data to be
> >             send? Is
> >             there is requirement to allocate that from pool memory which
> >             can be used
> >             for packet transition?
> >
> >
> >             Looks like timer carries only user_ptr and timer structs.
> >
> >             So that it should be possible to use linux-generic timers
> >             for other
> >             platforms like dpdk almost as is.
> >
> >             Thanks,
> >             Maxim.
> >
> >
> >             _______________________________________________
> >             lng-odp mailing list
> >             [email protected] <mailto:[email protected]>
> >             https://lists.linaro.org/mailman/listinfo/lng-odp
> >
> >         _______________________________________________
> >         lng-odp mailing list
> >         [email protected] <mailto:[email protected]>
> >         https://lists.linaro.org/mailman/listinfo/lng-odp
> >
> >
> >
> >
> >     --
> >     Mike Holmes
> >     Technical Manager - Linaro Networking Group
> >     Linaro.org <http://www.linaro.org/>***│ *Open source software for
> >     ARM SoCs
> >
> >     __
> >
> >
> >
> _______________________________________________
> lng-odp mailing list
> [email protected]
> https://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to