diff --git a/host/xtest/xtest_helpers.c b/host/xtest/xtest_helpers.c
index 7a91acd..879bf48 100644
--- a/host/xtest/xtest_helpers.c
+++ b/host/xtest/xtest_helpers.c
@@ -11,16 +11,17 @@
  * GNU General Public License for more details.
  */
 
-#include "xtest_helpers.h"
-#include "xtest_test.h"
-
+#include <assert.h>
+#include <err.h>
+#include <malloc.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <string.h>
 #include <ta_crypt.h>
 #include <utee_defines.h>
 
-#include <string.h>
-#include <stdio.h>
-#include <malloc.h>
-#include <assert.h>
+#include "xtest_helpers.h"
+#include "xtest_test.h"
 
 /* Round up the even multiple of size, size has to be a multiple of 2 */
 #define ROUNDUP(v, size) (((v) + (size - 1)) & ~(size - 1))
@@ -408,3 +409,61 @@
 			p_uuid->clockSeqAndNode[6],
 			p_uuid->clockSeqAndNode[7]);
 }
+
+
+void xtest_mutex_init(pthread_mutex_t *mutex)
+{
+	int e = pthread_mutex_init(mutex, NULL);
+
+	if (e)
+		errx(1, "pthread_mutex_init: %s", strerror(e));
+}
+
+void xtest_mutex_destroy(pthread_mutex_t *mutex)
+{
+	int e = pthread_mutex_destroy(mutex);
+
+	if (e)
+		errx(1, "pthread_mutex_destroy: %s", strerror(e));
+}
+
+void xtest_mutex_lock(pthread_mutex_t *mutex)
+{
+	int e = pthread_mutex_lock(mutex);
+
+	if (e)
+		errx(1, "pthread_mutex_lock: %s", strerror(e));
+}
+
+void xtest_mutex_unlock(pthread_mutex_t *mutex)
+{
+	int e = pthread_mutex_unlock(mutex);
+
+	if (e)
+		errx(1, "pthread_mutex_unlock: %s", strerror(e));
+}
+
+void xtest_barrier_init(pthread_barrier_t *barrier, unsigned count)
+{
+	int e = pthread_barrier_init(barrier, NULL, count);
+
+	if (e)
+		errx(1, "pthread_barrier_init: %s", strerror(e));
+}
+
+void xtest_barrier_destroy(pthread_barrier_t *barrier)
+{
+	int e = pthread_barrier_destroy(barrier);
+
+	if (e)
+		errx(1, "pthread_barrier_destroy: %s", strerror(e));
+}
+
+int xtest_barrier_wait(pthread_barrier_t *barrier)
+{
+	int e = pthread_barrier_wait(barrier);
+
+	if (e && e != PTHREAD_BARRIER_SERIAL_THREAD)
+		errx(1, "pthread _barrier_wait: %s", strerror(e));
+	return e;
+}
diff --git a/host/xtest/xtest_helpers.h b/host/xtest/xtest_helpers.h
index 2339db2..66d372c 100644
--- a/host/xtest/xtest_helpers.h
+++ b/host/xtest/xtest_helpers.h
@@ -14,9 +14,10 @@
 #ifndef XTEST_HELPERS_H
 #define XTEST_HELPERS_H
 
-#include <tee_client_api.h>
-#include <tee_api_types.h>
 #include <adbg.h>
+#include <pthread.h>
+#include <tee_api_types.h>
+#include <tee_client_api.h>
 
 extern unsigned int level;
 
@@ -103,4 +104,13 @@
 
 int ree_fs_get_ta_dirname(TEEC_UUID *p_uuid, char *buffer, uint32_t len);
 
+void xtest_mutex_init(pthread_mutex_t *mutex);
+void xtest_mutex_destroy(pthread_mutex_t *mutex);
+void xtest_mutex_lock(pthread_mutex_t *mutex);
+void xtest_mutex_unlock(pthread_mutex_t *mutex);
+
+void xtest_barrier_init(pthread_barrier_t *barrier, unsigned count);
+void xtest_barrier_destroy(pthread_barrier_t *barrier);
+int xtest_barrier_wait(pthread_barrier_t *barrier);
+
 #endif /*XTEST_HELPERS_H*/
