[Beignet] [PATCH] add a semaphore for clang lib
Yang, Rong R
rong.r.yang at intel.com
Mon Oct 21 23:56:05 PDT 2013
LGTM, thanks.
-----Original Message-----
From: beignet-bounces+rong.r.yang=intel.com at lists.freedesktop.org [mailto:beignet-bounces+rong.r.yang=intel.com at lists.freedesktop.org] On Behalf Of Homer Hsing
Sent: Monday, October 21, 2013 4:31 PM
To: beignet at lists.freedesktop.org
Subject: [Beignet] [PATCH] add a semaphore for clang lib
Signed-off-by: Homer Hsing <homer.xing at intel.com>
---
backend/src/backend/gen_program.cpp | 6 ++++++
backend/src/backend/gen_program.h | 3 +++
backend/src/backend/program.cpp | 6 +++++-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/backend/src/backend/gen_program.cpp b/backend/src/backend/gen_program.cpp
index 33f07b2..781152d 100644
--- a/backend/src/backend/gen_program.cpp
+++ b/backend/src/backend/gen_program.cpp
@@ -160,3 +160,9 @@ void genSetupCallBacks(void)
gbe_program_new_from_llvm = gbe::genProgramNewFromLLVM; }
+sem_t llvm_semaphore;
+
+void genSetupLLVMSemaphore(void)
+{
+ sem_init(&llvm_semaphore, 0, 1);
+}
diff --git a/backend/src/backend/gen_program.h b/backend/src/backend/gen_program.h
index 9fae2e7..a498a5d 100644
--- a/backend/src/backend/gen_program.h
+++ b/backend/src/backend/gen_program.h
@@ -29,9 +29,12 @@
#include <stdint.h>
#include <stdlib.h>
+#include <semaphore.h>
/*! This will make the compiler output Gen ISA code */ extern void genSetupCallBacks(void);
+extern sem_t llvm_semaphore;
+extern void genSetupLLVMSemaphore(void);
#endif /* __GBE_GEN_PROGRAM_H__ */
diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp index b2879a4..205f7f2 100644
--- a/backend/src/backend/program.cpp
+++ b/backend/src/backend/program.cpp
@@ -553,7 +553,10 @@ namespace gbe {
// Create an action and make the compiler instance carry it out
llvm::OwningPtr<clang::CodeGenAction> Act(new clang::EmitLLVMOnlyAction());
- if (!Clang.ExecuteAction(*Act))
+ sem_wait(&llvm_semaphore);
+ auto retVal = Clang.ExecuteAction(*Act);
+ sem_post(&llvm_semaphore);
+ if (!retVal)
return;
llvm::Module *module = Act->takeModule(); @@ -847,6 +850,7 @@ namespace gbe
gbe_get_image_base_index = gbe::getImageBaseIndex;
gbe_set_image_base_index = gbe::setImageBaseIndex;
genSetupCallBacks();
+ genSetupLLVMSemaphore();
}
};
--
1.8.3.2
_______________________________________________
Beignet mailing list
Beignet at lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list