Yes, but that may be my ignorance :) I don't know why the old way is needed now.
On 4 September 2014 17:44, Santosh Shukla <[email protected]> wrote: > On 5 September 2014 03:08, Mike Holmes <[email protected]> wrote: > > > > > > > > On 4 September 2014 17:30, Santosh Shukla <[email protected]> > wrote: > >> > >> On 5 September 2014 00:13, Mike Holmes <[email protected]> wrote: > >> > I am confused about the init sequence, I imagine this > >> > > >> > > >> > > >> > > >> > On 4 September 2014 04:40, Santosh Shukla <[email protected]> > >> > wrote: > >> >> > >> >> On 4 September 2014 13:40, Savolainen, Petri (NSN - FI/Espoo) > >> >> <[email protected]> wrote: > >> >> >> Conti.. > >> >> >> > >> >> >> Root cause of my concern is not entirely specific to this patch. > Its > >> >> >> more related to odp api initialization calling sequence in > >> >> >> application. From early days, we used to follow below step in > >> >> >> application - > >> >> >> > >> >> >> odp_global_init() -> which does almost everything for platform > >> >> >> initialization. > >> >> >> odp_shm_reserve() -> used for argument processing then > >> >> >> odp_create_thread etc... > >> >> >> > >> >> >> Now we found a need to introduce platform specific init hints, > >> >> >> coming > >> >> >> from application. Therefore order of odp_xxx_init api calling > >> >> >> sequence > >> >> >> should change too. > >> >> >> > >> >> >> > >> >> >> Something like. > >> >> >> > >> >> >> Application "X" > >> >> >> > >> >> >> main () > >> >> >> { > >> >> >> > >> >> >> - First do argument processing. For that, call odp_shm_init() in > >> >> >> application and remove it from odp_global_init OR application has > to > >> >> >> allocate memory(bad idea ... I guess). > >> >> > > >> >> > argX and argY can be allocated from stack or heap (malloc). Shared > >> >> > memory is not needed for those to be able to call > odp_global_init(). > >> >> > ODP > >> >> > will take copy of the argument, argX/Y can be destroyed after the > >> >> > call. > >> >> > >> >> Not to *call odp_global_init* , It is to pass command line processed > >> >> input to odp_globa_init().. Are you suggesting calling of > parse_args() > >> >> before and after odp_global_init()? > >> >> > >> >> > >> >> > > >> >> > After ODP init, you can allocate shm and copy args there if you > need > >> >> > to > >> >> > share those within your app. > >> >> > >> >> Same argument processed twice ? isn't it. > >> >> > >> >> > >> >> > >> >> > > >> >> > -Petri > >> >> > > >> >> >> > >> >> >> - Then call odp_global/platform_init(argX, argY); where arg -X : > >> >> >> global param, Y : platform centric stuff. > >> >> >> > >> >> >> ... Rest stuff as it is. > >> >> >> } > >> >> >> > >> >> >> > >> >> >> Any idea? thoughts? Does above make sense. Thanks. > >> >> >> > >> >> >> > >> > > >> > > >> > My view was that it went like this : > >> > > >> > > >> > main starts(args passed in) > >> > int foo; > >> > odp_init_t odp_data > >> > odp_platform_init_t platform_data > >> > > >> > /*Process the arguments passed in as normal.*/ > >> > loop { > >> > Set variables that main will use itself i.e. if --use-foo is passed > >> > set > >> > foo=true locally. > >> > Prepare odp_data to pass things into the implementation that ODP > >> > specifies, <- the internals of odp_data may be an argv string or a > tidy > >> > struct we define populated by an ODP helper > >> > Prepare platform_data packaging any params required into the > platform > >> > specific struct. <- Have no idea what these are, platform needs to > >> > figure > >> > this out > >> > } > >> > > >> > >> Not sure I understood your proposal/pseudo flow completely. > >> > >> = Are you suggesting processing argument twice one for platform_init > >> second for odp thread? > >> > > no, all arguments into main are processed once up front, they are either > > 1. recorded with local variables as appropriate > > 2. stuffed into odp_init - maybe with the helper > > 3. stuffed into odp_platform_init however that platform specifies it > should > > be done. > > > > > > Which mean ignore old way of argument processing using odp shmem? right. > > >> > call global init(odp_data, platform_data) with the above > >> > > >> > ........ > >> > > >> > /* Act on any remaining parameters such as foo. */ > >> > if (foo) > >> > > >> > > >> > -- > >> > Mike Holmes > >> > Linaro Technical Manager / Lead > >> > LNG - ODP > > > > > > > > > > -- > > Mike Holmes > > Linaro Technical Manager / Lead > > LNG - ODP > -- *Mike Holmes* Linaro Technical Manager / Lead LNG - ODP
_______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
