DPDK usage discussions
 help / color / mirror / Atom feed
From: Ming Fu <Ming.Fu@esentire.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: "users@dpdk.org" <users@dpdk.org>
Subject: Re: [dpdk-users] How rte_mempool_ops_table is populated in a DPDK client application?
Date: Fri, 1 Sep 2017 20:56:12 +0000	[thread overview]
Message-ID: <fc5bb11265ce4540acb6375259b43151@mbx01cmb01p.esentire.local> (raw)
In-Reply-To: <20170901134724.7e292a7f@xeon-e3>

Hi Stephen,

Is there any document or example project I can reference as how to properly setup static initializer for DPDK from a GNU like Makefile.

Thanks,
Ming
-----Original Message-----
From: Stephen Hemminger [mailto:stephen@networkplumber.org] 
Sent: September-01-17 4:47 PM
To: Ming Fu <Ming.Fu@esentire.com>
Cc: users@dpdk.org
Subject: Re: [dpdk-users] How rte_mempool_ops_table is populated in a DPDK client application?

On Fri, 1 Sep 2017 20:26:48 +0000
Ming Fu <Ming.Fu@esentire.com> wrote:

> Did some digging and find that the rte_mempool_ops_table is populated from function rte_mempool_register_ops().
> From a small program build in the dpdk example, the rte_mempool_register_ops() is called from the following stack trace
> 
> (gdb) where
> #0  0x000000000047eea0 in rte_mempool_register_ops ()
> #1  0x00000000006a8abd in __libc_csu_init ()
> #2  0x00007ffff71f97bf in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
> #3  0x0000000000440f29 in _start ()
> 
> So this function is called probably before rte_eal_init(). If I have an application linked to a static lib of dpdk outside of dpdk build tree, how do I make it to register the call to rte_mempool_register_ops from __libc_csu_init()?
> 
> Thanks
> Ming
> 
> From: Ming Fu
> Sent: September-01-17 9:36 AM
> To: users@dpdk.org
> Subject: How rte_mempool_ops_table is populated in a DPDK client application?
> 
> Try to make snort to receive packet from a dpdk ring as an client application. The DPDK is compiled into the snort DAQ lib statically. The DAQ lib is then linked to snort statically.
> 
> What I am find is that the rte_mempool_ops_table is all 0, causing the client to crash when free the received mbuf from the ring. I was wondering how this rte_mempool_ops_table is populated during DPDK initialization for a client application.
> 
> The my dpdk snort went through rte_eal_init(), rte_ring_lookup() and rte_mempool_lookup() without error.
> 
> Thanks
> Ming

Make sure static initalizers are run in your program. If you use the DPDK mk rules, it works correctly.
If you use other build environments, you need to adjust the linker flags.

  reply	other threads:[~2017-09-01 20:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-01 20:26 Ming Fu
2017-09-01 20:47 ` Stephen Hemminger
2017-09-01 20:56   ` Ming Fu [this message]
2017-09-01 21:01     ` Stephen Hemminger
  -- strict thread matches above, loose matches on Subject: below --
2017-09-01 13:36 Ming Fu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fc5bb11265ce4540acb6375259b43151@mbx01cmb01p.esentire.local \
    --to=ming.fu@esentire.com \
    --cc=stephen@networkplumber.org \
    --cc=users@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).