[dpdk-dev] daemon process problem in DPDK

Hiroshi Shimamoto h-shimamoto at ct.jp.nec.com
Tue Jan 13 09:05:38 CET 2015


Hi,

> Subject: Re: [dpdk-dev] daemon process problem in DPDK
> 
> Much appericated, Get it now.
> 
> Thanks,
> Xun
> 
> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen at networkplumber.org]
> Sent: Tuesday, January 13, 2015 3:14 AM
> To: Neil Horman
> Cc: Ni, Xun; dev at dpdk.org
> Subject: Re: [dpdk-dev] daemon process problem in DPDK
> 
> On Mon, 12 Jan 2015 09:52:10 -0500
> Neil Horman <nhorman at tuxdriver.com> wrote:
> 
> > On Mon, Jan 12, 2015 at 02:28:20PM +0000, Ni, Xun wrote:
> > > Hello:
> > >
> > >    I have basic questions related to dpdk and trying to find help.
> > >
> > >    I am about to create a daemon process, is there a way for other process to know whether the daemon is already created?
> I doesn't mean to get the pid, because it changes every time.
> > >
> > >    If the daemon is created, how do other process to communicate with this daemon? Dpdk seems to have rte ring but
> it only exists on the Ethernet, while I am talking about the process within the same computer, and the way like share-memory,
> but I didn't find examples about the share memory between processes.
> > >
> > > Thanks,
> > > Xun
> > >
> > >
> >
> > Thats not really a dpdk question, that a generic programming question.
> > You can do this lots of ways.  Open a socket that other process can
> > connect to on an agreed port, create a shared memory segment, write a
> > file with connect information to a well know location, etc.
> > Neil
> >
> 
> We did have to make some changes to the basic application model (not in DPDK) to allow for a daemon.
> 
> The normal/correct way to make a daemon is to use the daemon glibc call, and this closes all file descriptors etc. Therefore
> the DPDK (eal) must be initialized after the daemon call.

How about to have daemon option in DPDK eal?

I think that many network service programs work as daemon.
If DPDK has daemon option, it may be helpful.

thanks,
Hiroshi

> 
> Also, wanted to make daemon optional for debugging.
> This led to change where the main program process application argv first then passes DPDK args as second group. This is
> the inverse of the example applications.
> 
> 
> int
> main(int argc, char **argv)
> {
> 	int ret;
>         char *progname;
> 
> 	progname = strrchr(argv[0], '/');
> 	progname = strdup(progname ? progname + 1 : argv[0]);
> 
> 	ret = parse_args(argc, argv);
> 	if (ret < 0)
> 		return -1;
> 
> 	argc -= ret;
> 	argv += ret;
> 
> 	if (daemon_mode && daemon(1, 1) < 0)
> 		return -1;
> 
> 	/* workaround fact that EAL expects progname as first argument */
> 	argv[0] = progname;
> 
> 	ret = rte_eal_init(argc, argv);
> 	if (ret < 0)
> 		return -1;


More information about the dev mailing list