|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT/LIBCXX PATCH v2] Enable threads support
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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |