Have you considered to use process nodes instead?

If you search forvlib_process_suspend and vlib_process_wait_for_event_or_clock 
you will find many samples….

Thanks,

Damjan

> On 16 Jan 2017, at 02:13, yug...@telincn.com wrote:
> 
> Thanks for your reply, Dave.
> I would like to use dpdk timer api in vpp, and i don't know whether  there is 
> a substitude.
> 
> Here is my code in vpp main func.
>         rte_timer_subsystem_init();
>       /* init timer structures */
>       rte_timer_init(&vpptimer0);
>       /* load timer0, every second, on master lcore, reloaded automatically */
>       hz = rte_get_timer_hz();
>       lcore_id = rte_lcore_id();
>       rte_timer_reset(&vpptimer0, hz, PERIODICAL, lcore_id, vpp_timer0_cb, 
> NULL);
> 
> And i got this Segmentation fault.
> 
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib64/libthread_db.so.1".
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000004edde5 in rte_get_hpet_cycles () at 
> /usr/src/VPP16/vpp1609/build-root/build-vpp-native/dpdk/dpdk-16.07/lib/librte_eal/linuxapp/eal/eal_timer.c:151
> 151           t = eal_hpet->counter_l;
> Missing separate debuginfos, use: debuginfo-install 
> glibc-2.17-157.el7_3.1.x86_64 openssl-libs-1.0.1e-60.el7.x86_64 
> zlib-1.2.7-17.el7.x86_64
> (gdb) bt
> #0  0x00000000004edde5 in rte_get_hpet_cycles () at 
> /usr/src/VPP16/vpp1609/build-root/build-vpp-native/dpdk/dpdk-16.07/lib/librte_eal/linuxapp/eal/eal_timer.c:151
> #1  0x000000000050681f in rte_get_timer_cycles () at 
> /usr/src/VPP16/vpp1609/build-root/install-vpp-native/dpdk/include/generic/rte_cycles.h:158
> #2  rte_timer_reset (tim=tim@entry=0xa73b20 <vpptimer0>, ticks=ticks@entry=0, 
> type=type@entry=PERIODICAL, tim_lcore=4294967295, fct=fct@entry=0x54d9e0 
> <vpp_timer0_cb>, arg=arg@entry=0x0)
>     at 
> /usr/src/VPP16/vpp1609/build-root/build-vpp-native/dpdk/dpdk-16.07/lib/librte_timer/rte_timer.c:431
> #3  0x000000000040fe53 in main (argc=26, argv=0xb08810) at 
> /usr/src/VPP16/vpp1609/build-data/../vpp/vnet/main.c:271
> (gdb) 
> yug...@telincn.com <mailto:yug...@telincn.com>
>  
> From: Dave Barach (dbarach) <mailto:dbar...@cisco.com>
> Date: 2017-01-15 21:45
> To: yug...@telincn.com <mailto:yug...@telincn.com>; vpp-dev 
> <mailto:vpp-dev@lists.fd.io>
> Subject: RE: [vpp-dev] rte_timer
> Vpp already calls rte_eal_init(...) in 
> .../src/vnet/dpdk/init.c:dpdk_config(). Please don’t call rte_eal_init(..) 
> elsewhere, it simply won’t work. <>
>  
> At a higher level: what are you trying to do? It’s hard to provide meaningful 
> help with so little information.  
>  
> Thanks… Dave
>  
> From: vpp-dev-boun...@lists.fd.io <mailto:vpp-dev-boun...@lists.fd.io> 
> [mailto:vpp-dev-boun...@lists.fd.io <mailto:vpp-dev-boun...@lists.fd.io>] On 
> Behalf Of yug...@telincn.com <mailto:yug...@telincn.com>
> Sent: Sunday, January 15, 2017 6:38 AM
> To: vpp-dev <vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>>
> Subject: [vpp-dev] rte_timer
>  
> Hi, all.
> If i would like to use dpdk timer, what extra configuration  i need to make?
> Since that if i just call func "   rte_eal_init(argc, argv)" in vpp,  it 
> always reminds me that there is not enough DPDK mem, why?
>  
> Regards,
> Ewan.
> yug...@telincn.com 
> <mailto:yug...@telincn.com>_______________________________________________
> vpp-dev mailing list
> vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>
> https://lists.fd.io/mailman/listinfo/vpp-dev 
> <https://lists.fd.io/mailman/listinfo/vpp-dev>
_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to