On 19 April 2016 at 14:30, Mike Holmes <mike.hol...@linaro.org> wrote:
> I have a thought about odph_linux_odpthreads_create() and odph_linux_ > odpthreads_join() > > Should these be > > odph_odpthreads_create() and odph_odpthreads_join() > > > That way we create the notion of an odpthread that is OS independent and > then the tests possibly extend to another OS without modification. > > > +1 I'd be very happy to take these names!: my feeling is that we eventually want the helpers to hide these things. The linux helpers create ODP threads their way. the <whatever other OS> creates them their way. This "linux" should eventually be removed so that helpers becomes an absrtation of any OS. I am happy to do it now, if we can agree on that! Christophe > > On 19 April 2016 at 05:02, Savolainen, Petri (Nokia - FI/Espoo) < > petri.savolai...@nokia.com> wrote: > >> As I said, our test need to be thread agnostic (because we must test both >> model) but those helpers would be for other apps (that are not agnostic). >> Only pthread/process validation test cases would be needed (as any other >> helper code). Thread creation is so common task for any app that those are >> surely needed. Implementation of the agnostic and not agnostic functions >> may share the core parts of the code. >> >> >> >> -Petri >> >> >> >> >> >> *From:* EXT Christophe Milard [mailto:christophe.mil...@linaro.org] >> *Sent:* Tuesday, April 19, 2016 11:10 AM >> >> *To:* Savolainen, Petri (Nokia - FI/Espoo) <petri.savolai...@nokia.com> >> *Cc:* lng-odp@lists.linaro.org; mike.hol...@linaro.org >> *Subject:* Re: [GIT PULL ODP] running things in process mode >> >> >> >> hmmm. >> >> OK. so you want to leave the old functions because they give the >> possibility to pass pointers to threads (and get pointer back), whereas >> processes would just return an int? >> >> (and by doing the change I did, I had to lower all these to the lowest >> common denominator, returning an int in both cases). >> >> Possibly makes sense. The question is really if we want to see that in >> the helper code, or if this is so rare so that the tests willing to do so >> can use fork and pthread directely... >> >> No platform agnostic test should be allowed to do so, actually. And the >> single platform dependent test we have today does nor create odpthreads. >> >> Not sure I really like the idea to leave unused code "just in case", but >> If I get your blessings for the lot except the last patch, I am an happy >> man. :-) >> >> We can delay and see for the "removing dead code", if you want >> >> >> >> If which case my proposal for a fifth parameter should be delayed as well. >> >> >> >> Christophe >> >> >> >> On 19 April 2016 at 09:58, Savolainen, Petri (Nokia - FI/Espoo) < >> petri.savolai...@nokia.com> wrote: >> >> Actually, it’s not the control of thread/process creation but the >> representation of those. With pthread create, user expects to give void >> *(*start)(void *) function pointer for thread starting point (with void* >> return type) and with processes there’s no entry point, but current thread >> of execution is forked. Also parameters are different (pid_t, status, >> pthread_attr_t, …) >> >> >> >> -Petri >> >> >> >> >> >> *From:* EXT Christophe Milard [mailto:christophe.mil...@linaro.org] >> *Sent:* Tuesday, April 19, 2016 10:40 AM >> *To:* Savolainen, Petri (Nokia - FI/Espoo) <petri.savolai...@nokia.com> >> *Cc:* lng-odp@lists.linaro.org; mike.hol...@linaro.org >> *Subject:* Re: [GIT PULL ODP] running things in process mode >> >> >> >> Thanks for your comment, Petri. You are welcome to point out the coding >> guideline faults you have seen, so I don't miss them. I will review for the >> variable declaration position. >> >> Regarding your other comments, wouldn't it be better to add a fifth >> parameter to odph_linux_odpthreads_create() like this: >> >> >> >> +int odph_linux_odpthreads_create(odph_linux_odpthread_t *thread_tbl, >> >> + const odp_cpumask_t *mask, >> >> + int (*start_routine)(void *), void *arg, >> >> + odp_thread_type_t thr_type, >> >> + odph_thread_implementation_e imp); >> >> >> >> where odph_thread_implementation_e would be an enum: { >> >> ANY (i.e. helpers decide according to command line) >> >> FORCE_PTHREAD >> >> FORCE_PROCESS >> >> } >> >> >> >> platform agnostic tests would then only be allowed to use ANY. tests on >> the platform side could pick what they want. >> >> And we can remove the dead code. >> >> >> >> Make sense? >> >> >> >> >> >> On 19 April 2016 at 09:19, Savolainen, Petri (Nokia - FI/Espoo) < >> petri.savolai...@nokia.com> wrote: >> >> Hi, >> >> Looks reasonable. There are some style / coding guideline faults (like >> should introduce all variables in the beginning of a code block). Also pure >> process and pthread helpers should remain (suggesting to leave out "helper: >> removing dead code"), since not all apps want to obscure whether process or >> pthread is used. Opaque thread type helps our purposes to test everything >> on both pthread and process models, but other apps are likely to care only >> one model. >> >> -Petri >> >> >> >> >> > -----Original Message----- >> > From: EXT Christophe Milard [mailto:christophe.mil...@linaro.org] >> > Sent: Monday, April 18, 2016 5:00 PM >> > To: lng-odp@lists.linaro.org; Savolainen, Petri (Nokia - FI/Espoo) >> > <petri.savolai...@nokia.com> >> > Cc: mike.hol...@linaro.org >> > Subject: [GIT PULL ODP] running things in process mode >> > >> > Hi, >> > >> > This patch series adds the ability to run tests/ exemples / perf-test >> > in "process mode" (i.e letting OPD threads being linux processes) >> > It it hence tackling ODP-171. >> > >> > This is achieved in 2 main steps: >> > >> > A] >> > The 2 pairs of helper functions: >> > odph_linux_pthread_create(), odph_linux_pthread_join() >> > and >> > odph_linux_process_fork_n(), odph_linux_process_wait_n() >> > are replaced by: >> > odph_linux_odpthreads_create() and odph_linux_odpthreads_join() >> > The latter's callers are unaware of the actual implementation of the ODP >> > thread (making test truly platform agnostic). >> > The helper functions decide at run time whether an odp thread is to be >> > a linux process or pthread based on the command line argument. >> > >> > B] each test/example now calls a new helper function, >> > odph_linux_parse_options(), so that the helper can get its own arguments >> > out of the command line. >> > Currentely supported args are: --odph_proc, --odph_thread. >> > Defaults assumes thread. specifying both options runs in mixed mode. >> > >> > The changed are first done on the shmem tests, and thereafter propagated >> > to other helper users. >> > Note that this patch series enable the option but does not affect >> > make check at this time: make check still calls the tests with no >> options >> > which default to thread mode. >> > >> > This patch series nicely splits it two groups (you can split your review >> > there): >> > 1) up to "validation: pktio: adding command line argument parsing", the >> > new >> > helper functions are introduced, and used in the validation tests. >> > 2) from "helper: adding a function to merge getopt parameters" the >> ability >> > to parse command line arguments in subset in added and applied to >> > the example and performance tests. >> > >> > Hope this makes sence for you too! >> > >> > ---- >> > >> > The following changes since commit >> > 1f58a8fd51ab0304c0ae767e225abfec8448ac0b: >> > >> > validation: scheduler: correct pause/resume sequence (2016-04-18 >> > 15:03:22 +0300) >> > >> > are available in the git repository at: >> > >> > https://git.linaro.org/people/christophe.milard/odp.git >> > test_in_process_mode_v1 >> > >> > for you to fetch changes up to af9f80c6e9faaaed0c26b0825c25b5d5bb8ef028: >> > >> > helper: removing dead code (2016-04-18 15:25:48 +0200) >> > >> > ---------------------------------------------------------------- >> > Christophe Milard (56): >> > helpers: adding command line argument parsing >> > validation: common: adding command line argument parsing >> > validation: shmem: adding command line argument parsing >> > helpers: linux: creating common entry for process and thread >> > helpers: linux: creating functions to handle odpthreads >> > helper: test: adding odpthread functions tests >> > validation: using implementation agnostic function for ODP threads >> > validation: traffic_mngr: adding command line argument parsing >> > validation: timer: adding command line argument parsing >> > validation: time: adding command line argument parsing >> > validation: thread: adding command line argument parsing >> > validation: system: adding command line argument parsing >> > validation: std_clib: adding command line argument parsing >> > validation: scheduler: adding command line argument parsing >> > validation: random: adding command line argument parsing >> > validation: queue: adding command line argument parsing >> > validation: pool: adding command line argument parsing >> > validation: packet: adding command line argument parsing >> > validation: lock: adding command line argument parsing >> > validation: init: adding command line argument parsing >> > validation: hash: adding command line argument parsing >> > validation: errno: adding command line argument parsing >> > validation: crypto: adding command line argument parsing >> > validation: cpumask: adding command line argument parsing >> > validation: config: adding command line argument parsing >> > validation: classification: adding command line argument parsing >> > validation: buffer: adding command line argument parsing >> > validation: barrier: adding command line argument parsing >> > validation: atomic: adding command line argument parsing >> > validation: pktio: adding command line argument parsing >> > helper: adding a function to merge getopt parameters >> > helper: parsing the complete set of options >> > performance: odp_scheduling: proc mode done by helper >> > performance: odp_pktio_perf: using agnostic function for ODP >> threads >> > performance: odp_pktio_perf: adding helper cmd line parsing >> > performance: odp_l2fwd: using agnostic function for ODP threads >> > performance: odp_l2fwd: adding helper cmd line parsing >> > performance: crypto: using agnostic function for ODP threads >> > performance: crypto: adding helper cmd line parsing >> > example: classifier: using agnostic function for ODP threads >> > example: classifier: adding helper cmd line parsing >> > example: generator: using agnostic function for ODP threads >> > example: generator: adding helper cmd line parsing >> > example: ipsec: using agnostic function for ODP threads >> > example: ipsec: adding helper cmd line parsing >> > example: l2fwd_simple: using agnostic function for ODP threads >> > example: l2fwd_simple: adding helper cmd line parsing >> > example: pktio: using agnostic function for ODP threads >> > example: pktio: adding helper cmd line parsing >> > example: time: using agnostic function for ODP threads >> > example: time: adding helper cmd line parsing >> > example: timer: using agnostic function for ODP threads >> > example: timer: adding helper cmd line parsing >> > example: switch: using agnostic function for ODP threads >> > example: switch: adding helper cmd line parsing >> > helper: removing dead code >> > >> > example/classifier/odp_classifier.c | 39 +- >> > example/generator/odp_generator.c | 55 +-- >> > example/ipsec/odp_ipsec.c | 26 +- >> > example/l2fwd_simple/odp_l2fwd_simple.c | 47 ++- >> > example/packet/odp_pktio.c | 47 ++- >> > example/switch/odp_switch.c | 29 +- >> > example/time/time_global_test.c | 17 +- >> > example/timer/odp_timer_test.c | 26 +- >> > helper/include/odp/helper/linux.h | 170 +++++---- >> > helper/linux.c | 423 >> ++++++++++++++-- >> > ----- >> > helper/test/.gitignore | 3 +- >> > helper/test/Makefile.am | 14 +- >> > helper/test/{thread.c => odpthreads.c} | 30 +- >> > helper/test/odpthreads_as_mixed | 15 + >> > helper/test/odpthreads_as_processes | 15 + >> > helper/test/odpthreads_as_pthreads | 15 + >> > helper/test/process.c | 86 ----- >> > platform/linux-generic/test/pktio/pktio_run | 21 +- >> > platform/linux-generic/test/pktio/pktio_run_dpdk | 17 +- >> > platform/linux-generic/test/pktio/pktio_run_netmap | 5 +- >> > platform/linux-generic/test/pktio/pktio_run_pcap | 5 +- >> > platform/linux-generic/test/pktio/pktio_run_tap | 6 +- >> > test/performance/odp_crypto.c | 28 +- >> > test/performance/odp_l2fwd.c | 39 +- >> > test/performance/odp_pktio_perf.c | 36 +- >> > test/performance/odp_scheduling.c | 85 ++--- >> > test/validation/atomic/atomic.c | 40 +- >> > test/validation/atomic/atomic.h | 2 +- >> > test/validation/atomic/atomic_main.c | 4 +- >> > test/validation/barrier/barrier.c | 14 +- >> > test/validation/barrier/barrier.h | 2 +- >> > test/validation/barrier/barrier_main.c | 4 +- >> > test/validation/buffer/buffer.c | 10 +- >> > test/validation/buffer/buffer.h | 2 +- >> > test/validation/buffer/buffer_main.c | 4 +- >> > test/validation/classification/classification.c | 10 +- >> > test/validation/classification/classification.h | 2 +- >> > .../classification/classification_main.c | 4 +- >> > test/validation/common/odp_cunit_common.c | 24 +- >> > test/validation/common/odp_cunit_common.h | 6 +- >> > test/validation/config/config.c | 10 +- >> > test/validation/config/config.h | 2 +- >> > test/validation/config/config_main.c | 4 +- >> > test/validation/cpumask/cpumask.c | 10 +- >> > test/validation/cpumask/cpumask.h | 2 +- >> > test/validation/cpumask/cpumask_main.c | 4 +- >> > test/validation/crypto/crypto.c | 6 +- >> > test/validation/crypto/crypto.h | 2 +- >> > test/validation/crypto/crypto_main.c | 4 +- >> > test/validation/errno/errno.c | 10 +- >> > test/validation/errno/errno.h | 2 +- >> > test/validation/errno/errno_main.c | 4 +- >> > test/validation/hash/hash.c | 10 +- >> > test/validation/hash/hash.h | 2 +- >> > test/validation/hash/hash_main.c | 4 +- >> > test/validation/init/init.c | 18 +- >> > test/validation/init/init.h | 6 +- >> > test/validation/init/init_main_abort.c | 4 +- >> > test/validation/init/init_main_log.c | 4 +- >> > test/validation/init/init_main_ok.c | 4 +- >> > test/validation/lock/lock.c | 50 +-- >> > test/validation/lock/lock.h | 2 +- >> > test/validation/lock/lock_main.c | 4 +- >> > test/validation/packet/packet.c | 6 +- >> > test/validation/packet/packet.h | 2 +- >> > test/validation/packet/packet_main.c | 4 +- >> > test/validation/pktio/pktio.c | 10 +- >> > test/validation/pktio/pktio.h | 2 +- >> > test/validation/pktio/pktio_main.c | 4 +- >> > test/validation/pool/pool.c | 6 +- >> > test/validation/pool/pool.h | 2 +- >> > test/validation/pool/pool_main.c | 4 +- >> > test/validation/queue/queue.c | 6 +- >> > test/validation/queue/queue.h | 2 +- >> > test/validation/queue/queue_main.c | 4 +- >> > test/validation/random/random.c | 6 +- >> > test/validation/random/random.h | 2 +- >> > test/validation/random/random_main.c | 4 +- >> > test/validation/scheduler/scheduler.c | 14 +- >> > test/validation/scheduler/scheduler.h | 2 +- >> > test/validation/scheduler/scheduler_main.c | 4 +- >> > test/validation/shmem/shmem.c | 12 +- >> > test/validation/shmem/shmem.h | 2 +- >> > test/validation/shmem/shmem_main.c | 4 +- >> > test/validation/std_clib/std_clib.c | 6 +- >> > test/validation/std_clib/std_clib.h | 2 +- >> > test/validation/std_clib/std_clib_main.c | 4 +- >> > test/validation/system/system.c | 6 +- >> > test/validation/system/system.h | 2 +- >> > test/validation/system/system_main.c | 4 +- >> > test/validation/thread/thread.c | 10 +- >> > test/validation/thread/thread.h | 2 +- >> > test/validation/thread/thread_main.c | 4 +- >> > test/validation/time/time.c | 6 +- >> > test/validation/time/time.h | 2 +- >> > test/validation/time/time_main.c | 4 +- >> > test/validation/timer/timer.c | 10 +- >> > test/validation/timer/timer.h | 2 +- >> > test/validation/timer/timer_main.c | 4 +- >> > test/validation/traffic_mngr/traffic_mngr.c | 6 +- >> > test/validation/traffic_mngr/traffic_mngr.h | 2 +- >> > test/validation/traffic_mngr/traffic_mngr_main.c | 4 +- >> > 102 files changed, 1080 insertions(+), 697 deletions(-) >> > rename helper/test/{thread.c => odpthreads.c} (68%) >> > create mode 100755 helper/test/odpthreads_as_mixed >> > create mode 100755 helper/test/odpthreads_as_processes >> > create mode 100755 helper/test/odpthreads_as_pthreads >> > delete mode 100644 helper/test/process.c >> >> >> >> >> > > > > -- > Mike Holmes > Technical Manager - Linaro Networking Group > Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs > "Work should be fun and collaborative, the rest follows" > > >
_______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp