From: Udit agarwal <[email protected]>
---
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
[email protected]
http://lists.rtems.org/mailman/listinfo/devel