From 2a232b371bd639cb6ab46817e319b141f9b70d16 Mon Sep 17 00:00:00 2001
From: Armin Luntzer <armin.luntzer@univie.ac.at>
Date: Wed, 6 May 2020 13:19:54 +0200
Subject: [PATCH] change API to smile_fee_ctrl_init() so the user may provide
 their own memory buffer

---
 FEE/smile_fee_ctrl.c | 19 ++++++++++++-------
 FEE/smile_fee_ctrl.h |  2 +-
 FEE/smile_fee_demo.c |  2 +-
 3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/FEE/smile_fee_ctrl.c b/FEE/smile_fee_ctrl.c
index 274e85a..f178415 100644
--- a/FEE/smile_fee_ctrl.c
+++ b/FEE/smile_fee_ctrl.c
@@ -1861,19 +1861,24 @@ int smile_fee_sync_execute_op(enum sync_direction dir)
 
 
 
-
-
-
-
 /**
  * @brief initialise the smile_fee control library
+ *
+ * @param fee_mirror the desired FEE mirror, set NULL to allocate it for you
  */
 
-void smile_fee_ctrl_init(void)
+void smile_fee_ctrl_init(struct smile_fee_mirror *fee_mirror)
 {
-	smile_fee = (struct smile_fee_mirror *) malloc(sizeof(struct smile_fee_mirror));
-	if (!smile_fee)
+	if (!fee_mirror)
+		smile_fee = (struct smile_fee_mirror *)
+				malloc(sizeof(struct smile_fee_mirror));
+	else
+		smile_fee = fee_mirror;
+
+	if (!smile_fee) {
 		printf("Error allocating memory for the SMILE_FEE mirror\n");
+		return;
+	}
 
 	bzero(smile_fee, sizeof(struct smile_fee_mirror));
 }
diff --git a/FEE/smile_fee_ctrl.h b/FEE/smile_fee_ctrl.h
index a60dbe5..deca718 100644
--- a/FEE/smile_fee_ctrl.h
+++ b/FEE/smile_fee_ctrl.h
@@ -239,7 +239,7 @@ void smile_fee_set_execute_op(uint32_t mode);
 
 
 /* setup */
-void smile_fee_ctrl_init(void);
+void smile_fee_ctrl_init(struct smile_fee_mirror *fee_mirror);
 
 
 #endif /* _SMILE_FEE_CTRL_H_ */
diff --git a/FEE/smile_fee_demo.c b/FEE/smile_fee_demo.c
index 681dfd4..eb98d8d 100644
--- a/FEE/smile_fee_demo.c
+++ b/FEE/smile_fee_demo.c
@@ -549,7 +549,7 @@ int main(void)
 #endif
 
 	/* initialise the libraries */
-	smile_fee_ctrl_init();
+	smile_fee_ctrl_init(NULL);
 	smile_fee_rmap_init(GRSPW2_DEFAULT_MTU, rmap_tx, rmap_rx);
 
 
-- 
GitLab