|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT/LIBCXX PATCH v2] Enable threads support
Hi Felipe,
In deed, we need some changes in pthread-embedded as well. I sent a
small series providing that.
Costin
On 6/5/19 9:48 AM, Felipe Huici wrote:
> Hi Costin,
>
> I get the following compilation error when applying this patch:
>
> CXX libunwind: libunwind.o
> cc1plus: warning: command line option '-Wno-pointer-to-int-cast' is valid for
> C/ObjC but not for C++
> In file included from
> /root/workspace/gitlab/unikraft/upstreaming/apps/helloworld/build/libcxx/origin/libcxx-7.0.0.src/include/algorithm:643:0,
> from
> /root/workspace/gitlab/unikraft/upstreaming/apps/helloworld/build/libunwind/origin/libunwind-7.0.0.src/src/libunwind.cpp:19:
> /root/workspace/gitlab/unikraft/upstreaming/apps/helloworld/build/libcxx/origin/libcxx-7.0.0.src/include/utility:
> In member function 'size_t
> std::__1::hash<pte_handle_t>::operator()(pthread_t) const':
> /root/workspace/gitlab/unikraft/upstreaming/apps/helloworld/build/libcxx/origin/libcxx-7.0.0.src/include/utility:1489:16:
> error: no match for 'operator==' (operand types are 'pthread_t {aka
> pte_handle_t}' and 'int')
> if (__v == 0)
>
> -- Felipe
>
> On 04.06.19, 22:54, "Costin Lupu" <costin.lupu@xxxxxxxxx> wrote:
>
> This patch defines the macros and adds the hashtable template required for
> enabling threads support in cxx library.
>
> Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
> Signed-off-by: Teodora Serbanescu <teo.serbanescu16@xxxxxxxxx>
> Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
> ---
> Config.uk | 6 +++
> Makefile.uk | 5 ++
> ...-Add-hashtable-template-for-pthreads.patch | 51 +++++++++++++++++++
> 3 files changed, 62 insertions(+)
> create mode 100644 patches/0003-Add-hashtable-template-for-pthreads.patch
>
> diff --git a/Config.uk b/Config.uk
> index 9962669..16a11dc 100644
> --- a/Config.uk
> +++ b/Config.uk
> @@ -4,3 +4,9 @@ menuconfig LIBCXX
> select LIBCXXABI
> select LIBUNWIND
> default n
> +
> +if LIBCXX
> +config CXX_THREADS
> + bool "Enable CXX threads support"
> + default n
> +endif
> diff --git a/Makefile.uk b/Makefile.uk
> index a455386..b673f72 100644
> --- a/Makefile.uk
> +++ b/Makefile.uk
> @@ -96,6 +96,11 @@ CONFIG_FLAGS += -D LIBCXX_BUILDING_LIBCXXABI
> \
> -D _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE -D __DYNAMIC_REENT__
> \
>
>
> +ifdef CONFIG_CXX_THREADS
> +CONFIG_FLAGS += -D__linux__ -D_LIBCPP_HAS_THREAD_API_PTHREAD
> +else
> +CONFIG_FLAGS += -D_LIBCPP_HAS_NO_THREADS
> +endif
>
> LIBCXX_CFLAGS-y += $(CONFIG_FLAGS)
> LIBCXX_CXXFLAGS-y += $(CONFIG_FLAGS)
> diff --git a/patches/0003-Add-hashtable-template-for-pthreads.patch
> b/patches/0003-Add-hashtable-template-for-pthreads.patch
> new file mode 100644
> index 0000000..6a99062
> --- /dev/null
> +++ b/patches/0003-Add-hashtable-template-for-pthreads.patch
> @@ -0,0 +1,51 @@
> +From 215ae6f079c9d3e1ed21fc549e41ef5d6d796d71 Mon Sep 17 00:00:00 2001
> +From: Teodora Serbanescu <teo.serbanescu16@xxxxxxxxx>
> +Date: Thu, 18 Apr 2019 15:15:33 +0300
> +Subject: [PATCH] Add hashtable template for pthreads
> +
> +Signed-off-by: Teodora Serbanescu <teo.serbanescu16@xxxxxxxxx>
> +---
> + include/utility | 20 +++++++++++++++++++++
> + 1 file changed, 20 insertions(+)
> +
> +diff --git a/include/utility b/include/utility
> +index ed9bf03..c5b74fd 100644
> +--- a/include/utility
> ++++ b/include/utility
> +@@ -205,6 +205,10 @@ template <size_t I>
> + #include <cstdint>
> + #include <__debug>
> +
> ++#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
> ++#include <pthread.h>
> ++#endif
> ++
> + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
> + #pragma GCC system_header
> + #endif
> +@@ -1473,6 +1478,22 @@ struct _LIBCPP_TEMPLATE_VIS hash<double>
> + }
> + };
> +
> ++#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
> ++template <>
> ++struct _LIBCPP_TEMPLATE_VIS hash<pthread_t>
> ++ : public __scalar_hash<size_t>
> ++{
> ++ _LIBCPP_INLINE_VISIBILITY
> ++ size_t operator()(pthread_t __v) const _NOEXCEPT
> ++ {
> ++ // -0.0 and 0.0 should return same hash
> ++ if (__v == 0)
> ++ return 0;
> ++ return __scalar_hash<size_t>::operator()((size_t) __v.p);
> ++ }
> ++};
> ++#endif
> ++
> + template <>
> + struct _LIBCPP_TEMPLATE_VIS hash<long double>
> + : public __scalar_hash<long double>
> +--
> +2.11.0
> +
> --
> 2.20.1
>
>
>
> _______________________________________________
> Minios-devel mailing list
> Minios-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/mailman/listinfo/minios-devel
>
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |