I will take a look soon so that we get the basics in.

On 18 November 2015 at 14:59, Bill Fischofer <bill.fischo...@linaro.org>
wrote:

> Another reason to merge these since I have further updates I'd like to
> submit but don't want to get into a tower of babel set of patches.
>
> BTW, my base patch still needs a reviewed-by
>
> On Wed, Nov 18, 2015 at 1:56 PM, Mike Holmes <mike.hol...@linaro.org>
> wrote:
>
>> Thanks, unless Maxim needs it I wont resend.
>>
>> On 18 November 2015 at 14:53, Bill Fischofer <bill.fischo...@linaro.org>
>> wrote:
>>
>>> Looks like this patch needs to be applied on top of my patch to the user
>>> guide.  Other than that:
>>>
>>> On Wed, Nov 18, 2015 at 11:03 AM, Mike Holmes <mike.hol...@linaro.org>
>>> wrote:
>>>
>>>> Signed-off-by: Mike Holmes <mike.hol...@linaro.org>
>>>>
>>>
>>> Reviewed-and-tested-by: Bill Fischofer <bill.fischo...@linaro.org>
>>>
>>>
>>>> ---
>>>>  doc/users-guide/users-guide.adoc | 101
>>>> +++++++++++++++++++++++++--------------
>>>>  1 file changed, 66 insertions(+), 35 deletions(-)
>>>>
>>>> diff --git a/doc/users-guide/users-guide.adoc
>>>> b/doc/users-guide/users-guide.adoc
>>>> index be40d2f..e087696 100644
>>>> --- a/doc/users-guide/users-guide.adoc
>>>> +++ b/doc/users-guide/users-guide.adoc
>>>> @@ -8,13 +8,16 @@ OpenDataPlane (ODP)  Users-Guide
>>>>  Abstract
>>>>  --------
>>>>  This document is intended to guide a new ODP application developer.
>>>> -Further details about ODP may be found at the 
>>>> http://opendataplane.org[ODP]
>>>> home page.
>>>> +Further details about ODP may be found at the 
>>>> http://opendataplane.org[ODP]
>>>> home
>>>> +page.
>>>>
>>>>  .Overview of a system running ODP applications
>>>>  image::../images/overview.png[align="center"]
>>>>
>>>> -ODP is an API specification that allows many implementations to
>>>> provide platform independence, automatic hardware acceleration and CPU
>>>> scaling to high performance networking  applications.
>>>> -This document describes how to write an application that can
>>>> successfully take advantage of the API.
>>>> +ODP is an API specification that allows many implementations to
>>>> provide platform
>>>> +independence, automatic hardware acceleration and CPU scaling to high
>>>> +performance networking  applications. This document describes how to
>>>> write an
>>>> +application that can successfully take advantage of the API.
>>>>
>>>>  :numbered:
>>>>  == Introduction ==
>>>> @@ -422,23 +425,35 @@ goals. Again, the advantage here is that on many
>>>> platforms traffic management
>>>>  functions are implemented in hardware, permitting transparent offload
>>>> of
>>>>  this work.
>>>>
>>>> -Glossary
>>>> ---------
>>>> +== Glossary ==
>>>> +
>>>>  [glossary]
>>>>  odp_worker::
>>>> -    An opd_worker is a type of odp_thread. It will usually be isolated
>>>> from the scheduling of any host operating system and is intended for
>>>> fast-path processing with a low and predictable latency. Odp_workers will
>>>> not generally receive interrupts and will run to completion.
>>>> +    An opd_worker is a type of odp_thread. It will usually be isolated
>>>> from the
>>>> +    scheduling of any host operating system and is intended for
>>>> fast-path
>>>> +    processing with a low and predictable latency. Odp_workers will not
>>>> +    generally receive interrupts and will run to completion.
>>>>  odp_control::
>>>> -    An odp_control is a type of odp_thread. It will be isolated from
>>>> the host operating system house keeping tasks but will be scheduled by it
>>>> and may receive interrupts.
>>>> +    An odp_control is a type of odp_thread. It will be isolated from
>>>> the host
>>>> +    operating system house keeping tasks but will be scheduled by it
>>>> and may
>>>> +    receive interrupts.
>>>>  odp_thread::
>>>> -    An odp_thread is a flow of execution that in a Linux environment
>>>> could be a Linux process or thread.
>>>> +    An odp_thread is a flow of execution that in a Linux environment
>>>> could be a
>>>> +    Linux process or thread.
>>>>  event::
>>>>      An event is a notification that can be placed in a queue.
>>>>
>>>> -The include structure
>>>> ----------------------
>>>> -Applications only include the 'include/odp.h file which includes the
>>>> 'platform/<implementation name>/include/plat' files to provide a complete
>>>> definition of the API on that platform.
>>>> -The doxygen documentation defining the behavior of the ODP API is all
>>>> contained in the public API files, and the actual definitions for an
>>>> implementation will be found in the per platform directories.
>>>> -Per-platform data that might normally be a #define can be recovered
>>>> via the appropriate access function if the #define is not directly visible
>>>> to the application.
>>>> +== The include structure ==
>>>> +
>>>> +Applications only include the 'include/odp.h' file which includes the
>>>> +'platform/<implementation name>/include/plat' files to provide a
>>>> complete
>>>> +definition of the API on that platform.
>>>> +The doxygen documentation defining the behavior of the ODP API is all
>>>> contained
>>>> +in the public API files, and the actual definitions for an
>>>> implementation will
>>>> +be found in the per platform directories.
>>>> +Per-platform data that might normally be a #define can be recovered
>>>> via the
>>>> +appropriate access function if the #define is not directly visible to
>>>> the
>>>> +application.
>>>>
>>>>  .Users include structure
>>>>  ----
>>>> @@ -451,21 +466,29 @@ Per-platform data that might normally be a
>>>> #define can be recovered via the appr
>>>>  │   └── odp.h   This file should be the only file included by the
>>>> application.
>>>>  ----
>>>>
>>>> -Initialization
>>>> ---------------
>>>> -IMPORTANT: ODP depends on the application to perform a graceful
>>>> shutdown, calling the terminate functions should only be done when the
>>>> application is sure it has closed the ingress and subsequently drained all
>>>> queues etc.
>>>> +== Initialization ==
>>>> +
>>>> +IMPORTANT: ODP depends on the application to perform a graceful
>>>> shutdown,
>>>> +calling the terminate functions should only be done when the
>>>> application is sure
>>>> +it has closed the ingress and subsequently drained all queues etc.
>>>> +
>>>> +=== Startup ===
>>>>
>>>> -Startup
>>>> -~~~~~~~~
>>>>  The first API that must be called is 'odp_init_global()'.
>>>> -This takes two pointers, odp_init_t contains ODP initialization data
>>>> that is platform independent and portable.
>>>> -The second odp_platform_init_t is passed un parsed to the
>>>> implementation and can be used for platform specific data that is not yet,
>>>> or may never be suitable for the ODP API.
>>>> +This takes two pointers, +odp_init_t+ contains ODP initialization data
>>>> that is
>>>> +platform independent and portable.
>>>> +The second +odp_platform_init_t+ is passed un parsed to the
>>>> implementation and
>>>> +can be used for platform specific data that is not yet, or may never
>>>> be suitable
>>>> +for the ODP API.
>>>>
>>>> -The second API that must be called is 'odp_init_local()', this must be
>>>> called once per odp_thread, regardless of odp_thread type.  Odp_threads may
>>>> be of type ODP_THREAD_WORKER or ODP_THREAD_CONTROL
>>>> +The second API that must be called is 'odp_init_local()', this must be
>>>> called
>>>> +once per odp_thread, regardless of odp_thread type.  odp_threads may
>>>> be of type
>>>> ++ODP_THREAD_WORKER+ or +ODP_THREAD_CONTROL+
>>>>
>>>> -Shutdown
>>>> -~~~~~~~~~
>>>> -Shutdown is the logical reverse of the initialization procedure, with
>>>> 'odp_thread_term()' called for each worker before 'odp_term_global()' is
>>>> called.
>>>> +=== Shutdown ===
>>>> +
>>>> +Shutdown is the logical reverse of the initialization procedure, with
>>>> +'odp_thread_term()' called for each worker before 'odp_term_global()'
>>>> is called.
>>>>
>>>>  image::../images/resource_management.png[align="center"]
>>>>
>>>> @@ -474,27 +497,35 @@ Queues
>>>>  There are three queue types, atomic, ordered and parallel.
>>>>  A queue belongs to a single odp_worker and a odp_worker may have
>>>> multiple queues.
>>>>
>>>> -Events are sent to a queue, and the the sender chooses a queue based
>>>> on the service it needs.
>>>> -The sender does not need to know which odp_worker (on which core) or
>>>> HW accelerator will process the event, but all the events on a queue are
>>>> eventually scheduled and processed.
>>>> +Events are sent to a queue, and the the sender chooses a queue based
>>>> on the
>>>> +service it needs.
>>>> +The sender does not need to know which odp_worker (on which core) or HW
>>>> +accelerator will process the event, but all the events on a queue are
>>>> eventually
>>>> +scheduled and processed.
>>>>
>>>> -NOTE: Both ordered and parallel queue types improve throughput over an
>>>> atomic queue (due to parallel event processing), but the user has to take
>>>> care of the context data synchronization (if needed).
>>>> +NOTE: Both ordered and parallel queue types improve throughput over an
>>>> atomic
>>>> +queue (due to parallel event processing), but the user has to take
>>>> care of the
>>>> +context data synchronization (if needed).
>>>>
>>>> -Atomic Queue
>>>> -~~~~~~~~~~~~
>>>> -Only one event at a time may be processed from a given queue. The
>>>> processing maintains order and context data synchronization but this will
>>>> impair scaling.
>>>> +=== Atomic Queue ===
>>>> +
>>>> +Only one event at a time may be processed from a given queue. The
>>>> processing
>>>> +maintains order and context data synchronization but this will impair
>>>> scaling.
>>>>
>>>>  .Overview Atomic Queue processing
>>>>  image::../images/atomic_queue.png[align="center"]
>>>>
>>>> -Ordered Queue
>>>> -~~~~~~~~~~~~~
>>>> -An ordered queue will ensure that the sequencing at the output is
>>>> identical to that of the input, but multiple events may be processed
>>>> simultaneously and the order is restored before the events move to the next
>>>> queue
>>>> +=== Ordered Queue ===
>>>> +
>>>> +An ordered queue will ensure that the sequencing at the output is
>>>> identical to
>>>> +that of the input, but multiple events may be processed simultaneously
>>>> and the
>>>> +order is restored before the events move to the next queue
>>>>
>>>>  .Overview Ordered Queue processing
>>>>  image::../images/ordered_queue.png[align="center"]
>>>>
>>>> -Parallel Queue
>>>> -~~~~~~~~~~~~~~
>>>> +=== Parallel Queue ===
>>>> +
>>>>  There are no restrictions on the number of events being processed.
>>>>
>>>>  .Overview parallel Queue processing
>>>> --
>>>> 2.5.0
>>>>
>>>> _______________________________________________
>>>> lng-odp mailing list
>>>> lng-odp@lists.linaro.org
>>>> 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
>>
>>
>>
>


-- 
Mike Holmes
Technical Manager - Linaro Networking Group
Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to