> From: David Marchand [mailto:david.marchand at 6wind.com] > >> The issue is that if a secondary process is initialized, it holds a read > >> lock on /var/run/.rte_config and this prevents a primary from starting. > > > > The new function is advertised as a monitoring feature. > > But it seems to be also a workaround for an ordering issue when starting > > primary and secondary processes concurrently, right? > > +1
You are correct, the function rte_eal_primary_proc_alive() added here is for monitoring if there is a primary process alive. The rte_eal_mcfg_complete() function call in rte_eal_init() is delayed to avoid a race-condition between secondary and primary processes. This race-condition occurs when two processes probe the PCI devices at the same time. Delaying the rte_eal_mcfg_complete() call until after the primary has finished rte_eal_pci_probe() ensures that this race condition is avoided. -Harry