Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
From: c.briere@samsung.com (Charles Briere)
Subject: [lttng-dev] [PATCH lttng-tools 17/24] Add : Compatibility layer for pthread
Date: Mon, 27 Oct 2014 20:49:29 +0000	[thread overview]
Message-ID: <1414442926-14381-18-git-send-email-c.briere@samsung.com> (raw)
In-Reply-To: <1414442926-14381-1-git-send-email-c.briere@samsung.com>

From: Charles Briere <c.briere@samsung.com>

pthread_cond_timedwait:
	As pthread_cond_timedwait is only used with MONOTONIC
	and that Android provides pthread_cond_timedwait_monotonic_np,
	use that one in the compatibility layer for now.

pthread_cancel:
	pthread_kill with sigkill

Signed-off-by: Charles Briere <c.briere at samsung.com>
---
 configure.ac                               |  3 +++
 src/bin/lttng-consumerd/health-consumerd.c |  2 +-
 src/bin/lttng-consumerd/lttng-consumerd.c  |  2 +-
 src/bin/lttng-relayd/health-relayd.c       |  2 +-
 src/common/compat/Makefile.am              |  3 ++-
 src/common/compat/compat-pthread.c         | 30 +++++++++++++++++++++++++++++
 src/common/compat/pthread.h                | 31 ++++++++++++++++++++++++++++++
 7 files changed, 69 insertions(+), 4 deletions(-)
 create mode 100644 src/common/compat/compat-pthread.c
 create mode 100644 src/common/compat/pthread.h

diff --git a/configure.ac b/configure.ac
index f372b07..e219689 100644
--- a/configure.ac
+++ b/configure.ac
@@ -66,8 +66,11 @@ AC_CHECK_HEADERS([ \
 AC_CHECK_TYPES([in_port_t], [], [], [[#include <netinet/in.h>]])
 
 AC_CHECK_DECLS([sigwaitinfo],[],[], [[#include <signal.h>]])
+AC_CHECK_DECLS([pthread_cancel], [], [], [[#include <pthread.h>]])
+
 AC_CHECK_FUNCS([getpwuid_r],[],[])
 
+
 # Babeltrace viewer check
 AC_ARG_WITH([babeltrace-bin],
 	AS_HELP_STRING([--with-babeltrace-bin],
diff --git a/src/bin/lttng-consumerd/health-consumerd.c b/src/bin/lttng-consumerd/health-consumerd.c
index 5f2415b..618497f 100644
--- a/src/bin/lttng-consumerd/health-consumerd.c
+++ b/src/bin/lttng-consumerd/health-consumerd.c
@@ -27,7 +27,6 @@
 #include <string.h>
 #include <sys/ipc.h>
 #include <sys/resource.h>
-#include <sys/shm.h>
 #include <sys/socket.h>
 #include <common/compat/stat.h>
 #include <sys/types.h>
@@ -46,6 +45,7 @@
 #include <common/consumer-timer.h>
 #include <common/compat/poll.h>
 #include <common/compat/ulimit.h>
+#include <common/compat/shm.h>
 #include <common/sessiond-comm/sessiond-comm.h>
 #include <common/utils.h>
 
diff --git a/src/bin/lttng-consumerd/lttng-consumerd.c b/src/bin/lttng-consumerd/lttng-consumerd.c
index 70605bf..a74ab8b 100644
--- a/src/bin/lttng-consumerd/lttng-consumerd.c
+++ b/src/bin/lttng-consumerd/lttng-consumerd.c
@@ -28,7 +28,6 @@
 #include <string.h>
 #include <sys/ipc.h>
 #include <sys/resource.h>
-#include <sys/shm.h>
 #include <sys/socket.h>
 #include <common/compat/stat.h>
 #include <sys/types.h>
@@ -46,6 +45,7 @@
 #include <common/consumer-timer.h>
 #include <common/compat/poll.h>
 #include <common/compat/ulimit.h>
+#include <common/compat/shm.h>
 #include <common/sessiond-comm/sessiond-comm.h>
 #include <common/utils.h>
 
diff --git a/src/bin/lttng-relayd/health-relayd.c b/src/bin/lttng-relayd/health-relayd.c
index 812fb03..4e22f08 100644
--- a/src/bin/lttng-relayd/health-relayd.c
+++ b/src/bin/lttng-relayd/health-relayd.c
@@ -27,7 +27,6 @@
 #include <string.h>
 #include <sys/ipc.h>
 #include <sys/resource.h>
-#include <sys/shm.h>
 #include <sys/socket.h>
 #include <common/compat/stat.h>
 #include <sys/types.h>
@@ -46,6 +45,7 @@
 #include <common/consumer-timer.h>
 #include <common/compat/poll.h>
 #include <common/compat/ulimit.h>
+#include <common/compat/shm.h>
 #include <common/sessiond-comm/sessiond-comm.h>
 #include <common/utils.h>
 
diff --git a/src/common/compat/Makefile.am b/src/common/compat/Makefile.am
index 2ebe84f..181a80d 100644
--- a/src/common/compat/Makefile.am
+++ b/src/common/compat/Makefile.am
@@ -10,4 +10,5 @@ endif
 
 libcompat_la_SOURCES = poll.h fcntl.h endian.h mman.h clone.h \
                        socket.h compat-fcntl.c uuid.h tid.h netinet/in.h \
-		       limits.h compat-signal.c compat-pwd.c $(COMPAT)
+		       limits.h compat-signal.c compat-pwd.c \
+		       compat-pthread.c $(COMPAT)
diff --git a/src/common/compat/compat-pthread.c b/src/common/compat/compat-pthread.c
new file mode 100644
index 0000000..1573cfc
--- /dev/null
+++ b/src/common/compat/compat-pthread.c
@@ -0,0 +1,30 @@
+#include <common/compat/pthread.h>
+
+# if !HAVE_DECL_PTHREAD_CANCEL
+int pthread_cancel(pthread_t thread) {
+	pthread_kill(thread, SIGKILL);
+}
+
+/*
+ * As for now, Android doesnt support pthread_cond_timedwait but there is a
+ * commit on master which fixes that, but isnt' available in any relases yet.
+ * As of now, pthead_cond_timedwait is only used with MONOTONIC clock so we
+ * will use pthread_cond_timedwait_monotonic instead.
+ *
+ * https://android-review.googlesource.com/#/c/83881/
+ */
+int pthread_condattr_setclock(pthread_condattr_t* cond, clockid_t clockid)
+{
+	return 0;
+}
+
+int pthread_cond_timedwait(pthread_cond_t *cond,
+	       pthread_mutex_t *mutex,
+	       const struct timespec *abstime)
+{
+	return pthread_cond_timedwait_monotonic_np(
+			cond,
+			mutex,
+			abstime);
+}
+# endif /* !HAVE_PTHREAD_CANCEL */
diff --git a/src/common/compat/pthread.h b/src/common/compat/pthread.h
new file mode 100644
index 0000000..8f38321
--- /dev/null
+++ b/src/common/compat/pthread.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2014 - Charles Briere <c.briere at samsung.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2 only,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _COMPAT_PTHREAD_H
+#define _COMPAT_PTHREAD_H
+
+# include <pthread.h>
+
+# if !HAVE_DECL_PTHREAD_CANCEL
+int pthread_cancel(pthread_t);
+int pthread_condattr_setclock(pthread_condattr_t *cond, clockid_t clockid);
+int pthread_cond_timedwait(pthread_cond_t *cond,
+	       pthread_mutex_t *mutex,
+	       const struct timespec *abstime);
+# endif /* HAVE_PTHREAD_CANCEL */
+
+#endif /* _COMPAT_PTHREAD_H */
-- 
2.1.2



  parent reply	other threads:[~2014-10-27 20:49 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-27 20:49 [lttng-dev] Fixes for Android Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 03/24] Fix : Wrap variable with URCU_TLS for sizeof Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 01/24] Fix : wait.h should be sys/wait.h according to posix and android doesn't redirect wait.h to sys/wait.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 04/24] Fix : Only link librt if available Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 02/24] Fix : Include sys/stat.h where needed Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 05/24] Fix : Do not use gLibc specific macros Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 06/24] Fix : Do not redeclare gettid if found Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 07/24] Fix : need to include config.h if using it's definitions Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 08/24] Fix : Don't compile ust functions when not enabled Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 15/24] Add : Compatibility layer for stat.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 13/24] Add : Compatibility layer for un.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 11/24] Add : Compatibility layer for limit.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 14/24] Add : Compatibility layer for signal.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 09/24] Add : Compatibility layer for syscall.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 16/24] Add : Compatibility layer for pwd.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 12/24] Add : Compatibility layer for ulimit.h Charles Briere
2014-10-27 20:49 ` Charles Briere [this message]
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 10/24] Add : Compatibility layer for netinet/in.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 23/24] Android : Define posix_fadvise Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 18/24] Add : Compatibility layer for shm.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 24/24] Android : Add splice compatibility to fcntl layer Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 20/24] Android : %m[^] not supported in fscanf Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 22/24] Android : Missing defintion in fcntl.h Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 19/24] Android : Looking for pthread in libc Charles Briere
2014-10-27 20:49 ` [lttng-dev] [PATCH lttng-tools 21/24] Android : Adding bswap defintions Charles Briere
2014-10-27 20:58 ` [lttng-dev] Fixes for Android Karim Yaghmour

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1414442926-14381-18-git-send-email-c.briere@samsung.com \
    --to=c.briere@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox