[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