I'd like to complement Christophe's answers.
Today, Linaro produces an ***API*** and a reference implementation so that
silicon vendors can produce high performance, production grade ODP on their
So I would encourage you to use the version that is compatible with your
hardware (you will find it on the right hand side of the downloads page).
As a reference implementation, odp-linux (left hand side of the downloads)
is essentially a tool for silicon vendors to check the detailed desired
behavior of the API. It is NOT meant to be high performance. It contains
helper libraries that are NOT part of the standard API to facilitate
creation of sample applications. As a matter of fact, odph_linux_process_fork
is NOT part of ODP API. it is an odp-linux library function that you may
NOT find in production ready environments (Cavium, Freescale, Kalray, TI).
An "ODP thread" is an abstract construct. Kalray processor is some form of
GPU, not CPU, and has no traditional operating system (no Linux, no
FreeBSD...). The closer notion they have would be a process but is not even
exactly true. Despite this particular environment, Kalrayhave been able to
implement ODP - it would be technically not feasible to introduce DPDK on
this environment because of memory model and absence of full OS. So
generally speaking "ODP thread" creation must be implementation dependent.
Linaro is now going to produce one additional implementation of ODP API:
odp-cloud. This version will be high performance, production grade,
dedicated to cloud environments (both in host and guest environments). This
implementation will assume odp-threads are posix threads and include
additional standard helpers to manage them. Being part of the helper
library means that developers can still use private helpers to create ODP
threads the way they want. On the first release (date not publicly stated)
it will provide the software vendors with a complete self contained
environment for both ARM and x86 processors on Linux. Further releases may
On 14 February 2017 at 15:12, Christophe Milard <
> I am not sure about who you are, what you are trying to do, and how
> you are trying to do it. I am not even sure I understand fully your
> ODP itself does not specify what concurrency model is used. Some ODP
> implementations may use pthreads, some others processes, or whatever
> they want.
> Having said that, I feel most implementation use pthread, as you said.
> The linux-generic implementation provided by linaro actually claims to
> be supporting poth pthreads and processes. Saddly the process support
> is not really being pushed and is faultly (despite my effort to push
> it for a while).
> But as It claims to support it, you are welcome to file a bug, or even
> better contribute to fix that.
> Hope that helps,
> On 14 February 2017 at 07:26, ice <odp_d...@163.com> wrote:
> > I am trying to apply odp to our project,
> > But I found odp is a multi-threaded model .
> > So I began to worry about the stability of the work-thread,
> > If a thread crashes, what happens to other threads?
> > Why do not odp use a multi-process model?
> > Who can answer my question?
> > thanks
[image: Linaro] <http://www.linaro.org/>
François-Frédéric Ozog | *Director Linaro Networking Group*
francois.o...@linaro.org | Skype: ffozog