The test code needs some of those (the no_barrier for examples). I'm pretty sure the hashtable will need some of those because it used a globally shared structure.
Le 12/07/2016 à 09:15 AM, Maxim Uvarov a écrit : > it's ok if this places in api. But do we have such places in examples or > helper code? > > On 7 December 2016 at 10:43, Nicolas Morey-Chaisemartin <nmo...@kalray.eu > <mailto:nmo...@kalray.eu>> wrote: > > I usually force somme access to be uncached. A whole barrier would work, > but the performance cost is way too big. > > > Just as an example: > > static inline void odp_atomic_init_u64(odp_atomic_u64_t *atom, uint64_t > val) > { > atom->v = val; > #if __GCC_ATOMIC_LLONG_LOCK_FREE < 2 > __atomic_clear(&atom->lock, __ATOMIC_RELAXED); > #endif > } > > > becomes > > static inline void odp_atomic_init_u64(odp_atomic_u64_t *atom, uint64_t > val) > { > STORE_U64(atom->v, val); > } > > where STORE_U64 forces an uncached write directly to memory. > > Nicolas > > > Le 12/07/2016 à 08:09 AM, Maxim Uvarov a écrit : >> Nicolas, what do you do to solve coherency problem? I think that maybe >> we are missing some api in odp, like read/write barriers. >> >> Maxim. >> >> On 7 December 2016 at 09:54, Nicolas Morey-Chaisemartin >> <nmo...@kalray.eu <mailto:nmo...@kalray.eu>> wrote: >> >> >> >> Le 12/06/2016 à 09:37 PM, Mike Holmes a écrit : >> > On 6 December 2016 at 12:08, Nicolas Morey-Chaisemartin >> > <nmo...@kalray.eu <mailto:nmo...@kalray.eu>> wrote: >> >> Signed-off-by: Nicolas Morey-Chaisemartin <nmo...@kalray.eu >> <mailto:nmo...@kalray.eu>> >> >> --- >> >> helper/Makefile.am | 6 +++--- >> >> helper/test/Makefile.am | 6 +++--- >> >> 2 files changed, 6 insertions(+), 6 deletions(-) >> >> >> >> diff --git a/helper/Makefile.am b/helper/Makefile.am >> >> index d09d900..c75db00 100644 >> >> --- a/helper/Makefile.am >> >> +++ b/helper/Makefile.am >> >> @@ -1,7 +1,7 @@ >> >> include $(top_srcdir)/platform/@with_platform@/Makefile.inc >> <mailto:platform@/Makefile.inc> >> >> >> >> pkgconfigdir = $(libdir)/pkgconfig >> >> -pkgconfig_DATA = $(top_builddir)/pkgconfig/libodphelper-linux.pc >> >> +pkgconfig_DATA = >> $(top_builddir)/pkgconfig/libodphelper@ODP_LIB_FLAVOR@.pc >> > Why would the helpers be tied to the implementation being built ? >> They >> > should be agnostic and depend on the OS >> I agree that they should not depend on the implementation of ODP. >> But as for libodp, helper might not be ABI compatible. >> The issue is that there's no evident place in the connfigure to >> select which implementation of the helper should be used. >> platform configure.m4 are the easiest place to add this which ties >> this to the platform. >> But I could add an ODPH_LIB_IMPL. So several platforms could use the >> same helper, while keeping the possibility of using non ABI compatible >> versions in other platforms. >> >> > I think the helpers are broken or we need an alternative to >> linux.c in >> > there, perhaps a odp/helpers/platform/linux/linux.c and >> > odp/helpers/platform/mpaa/linux.c >> I changed it in our git tree. helper/linux.c got moved to >> helper/os/linux/linux.c >> And we added helper/os/nodeos/linux.c and helper/os/mos/linux.c (we >> have 2 OS flavors usable with ODP) >> The platform configure.m4 is in charge of selecting the OS depending >> on flags & compiler selected. >> > >> >> LIB = $(top_builddir)/lib >> >> AM_CFLAGS = -I$(srcdir)/include >> >> @@ -31,7 +31,7 @@ noinst_HEADERS = \ >> >> $(srcdir)/odph_lineartable.h \ >> >> $(srcdir)/odph_list_internal.h >> >> >> >> -__LIB__libodphelper_linux_la_SOURCES = \ >> >> +__LIB__libodphelper@ODP_LIB_FLAVOR@_la_SOURCES = \ >> >> eth.c \ >> >> ip.c \ >> >> chksum.c \ >> >> @@ -39,4 +39,4 @@ __LIB__libodphelper_linux_la_SOURCES = \ >> >> hashtable.c \ >> >> lineartable.c >> >> >> >> -lib_LTLIBRARIES = $(LIB)/libodphelper-linux.la >> <http://libodphelper-linux.la> >> >> +lib_LTLIBRARIES = $(LIB)/libodphelper@ODP_LIB_FLAVOR@.la >> <mailto:FLAVOR@.la> >> >> diff --git a/helper/test/Makefile.am b/helper/test/Makefile.am >> >> index 545db73..02c260c 100644 >> >> --- a/helper/test/Makefile.am >> >> +++ b/helper/test/Makefile.am >> >> @@ -28,10 +28,10 @@ EXTRA_DIST = odpthreads_as_processes >> odpthreads_as_pthreads >> >> >> >> dist_chksum_SOURCES = chksum.c >> >> dist_odpthreads_SOURCES = odpthreads.c >> >> -odpthreads_LDADD = $(LIB)/libodphelper-linux.la >> <http://libodphelper-linux.la> $(LIB)/libodp-linux.la >> <http://libodp-linux.la> >> >> +odpthreads_LDADD = $(LIB)/libodphelper@ODP_LIB_FLAVOR@.la >> <mailto:FLAVOR@.la> $(LIB)/libodp@ODP_LIB_FLAVOR@.la >> >> dist_thread_SOURCES = thread.c >> >> -thread_LDADD = $(LIB)/libodphelper-linux.la >> <http://libodphelper-linux.la> $(LIB)/libodp-linux.la >> <http://libodp-linux.la> >> >> +thread_LDADD = $(LIB)/libodphelper@ODP_LIB_FLAVOR@.la >> <mailto:FLAVOR@.la> $(LIB)/libodp@ODP_LIB_FLAVOR@.la >> >> dist_process_SOURCES = process.c >> >> dist_parse_SOURCES = parse.c >> >> -process_LDADD = $(LIB)/libodphelper-linux.la >> <http://libodphelper-linux.la> $(LIB)/libodp-linux.la >> <http://libodp-linux.la> >> >> +process_LDADD = $(LIB)/libodphelper@ODP_LIB_FLAVOR@.la >> <mailto:FLAVOR@.la> $(LIB)/libodp@ODP_LIB_FLAVOR@.la >> >> dist_table_SOURCES = table.c >> >> -- >> >> 2.10.1.4.g0ffc436 >> >> >> >> >> > >> > >> >> > >