From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: Non-argv dependant rte_eal_init() call Date: Thu, 1 Aug 2013 18:01:07 +0200 Message-ID: <201308011801.08070.thomas.monjalon@6wind.com> References: <51FA80BF.2020801@bisdn.de> Mime-Version: 1.0 Content-Type: Text/Plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: dev-VfR2kkLFssw@public.gmane.org To: Marc Sune Return-path: In-Reply-To: <51FA80BF.2020801-kpkqNMk1I7M@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" Hello, 01/08/2013 17:37, Marc Sune : > In our case, we are right now simply faking the argv, which is a little > bit ugly: > > //... > 37 const char* argv[EAL_ARGS] = {"./fake", "-c",CORE_MASK, > "-n",NUM_CACHE_LINES, ""}; > //... > 53 ret = rte_eal_init(EAL_ARGS, (char**)argv); > 54 if (ret < 0) > 55 rte_exit(EXIT_FAILURE, "rte_eal_init failed"); > //... > You should provide a better binary name because in your example, your logs will be prefixed with "fake" which is, I agree with you, a little bit ugly ;) > IMHO it would make more sense to have actually two calls, adding a > library-like initialization. Something like: > > > /* > * In the comments a warning that this should be called at the very > beginning of the program. > *... > */ > int rte_eal_init(eal_coremask_t core_mask, unsigned int num_of_lines > /*More parameters here...*/); > > /* > * > */ > int rte_eal_init_argv(int argc, char **argv); > > The problem with your proposal is that the number of options is static. So when adding a new option in future releases, all the applications should be updated to give a (probably null) value for this new option. Not sure it is an improvement. > Btw, the same applies to the mangling of the main() (MAIN) routine. Is > this really necessary? Isn't it enough to clearly state in the > documentation that certain API calls need to be made on the very > beginning of the application? Not sure to understand this point. MAIN is only defined in examples for the bare-metal use case. What is the link with the API ? -- Thomas