From: Udit agarwal <dev.mada...@gmail.com>

---
 c/src/lib/libbsp/arm/atsam/startup/getentropy-trng.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/c/src/lib/libbsp/arm/atsam/startup/getentropy-trng.c 
b/c/src/lib/libbsp/arm/atsam/startup/getentropy-trng.c
index 11e24dc..d3f1cf5 100644
--- a/c/src/lib/libbsp/arm/atsam/startup/getentropy-trng.c
+++ b/c/src/lib/libbsp/arm/atsam/startup/getentropy-trng.c
@@ -16,6 +16,10 @@
 #include <unistd.h>
 #include <string.h>
 #include <rtems/sysinit.h>
+#include <rtems/thread.h>
+
+static rtems_mutex atsam_trng_mutex =
+    RTEMS_MUTEX_INITIALIZER("atsam_trng");
 
 static void atsam_trng_enable(void)
 {
@@ -25,6 +29,8 @@ static void atsam_trng_enable(void)
 
 int getentropy(void *ptr, size_t n)
 {
+       rtems_mutex_lock(&atsam_trng_mutex);
+
        while (n > 0) {
                uint32_t random;
                size_t copy;
@@ -51,6 +57,7 @@ int getentropy(void *ptr, size_t n)
                ptr += copy;
        }
 
+       rtems_mutex_unlock(&atsam_trng_mutex);
        return 0;
 }
 
-- 
1.9.1

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to