From d17b33131c14864bd1eae275f49a3f148e21cf29 Mon Sep 17 00:00:00 2001 From: Leo Chan Date: Thu, 22 Oct 2020 01:53:21 -0400 Subject: Squashed commit of the sb-vbs branch. Includes the SD-VBS benchmarks modified to: - Use libextra to loop as realtime jobs - Preallocate memory before starting their main computation - Accept input via stdin instead of via argc Does not include the SD-VBS matlab code. Fixes libextra execution in LITMUS^RT. --- .../texture_synthesis/src/MEX/innerProd_main.c | 103 +++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c (limited to 'SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c') diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c new file mode 100755 index 0000000..3c828de --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c @@ -0,0 +1,103 @@ +/* + * MATLAB Compiler: 4.4 (R2006a) + * Date: Thu Jul 24 17:19:07 2008 + * Arguments: "-B" "macro_default" "-m" "-W" "main" "-T" "link:exe" "-d" + * "../MEX" "innerProd.m" + */ + +#include +#include "mclmcr.h" +#ifdef __cplusplus +extern "C" { +#endif + +extern mclComponentData __MCC_innerProd_component_data; + +#ifdef __cplusplus +} +#endif + +static HMCRINSTANCE _mcr_inst = NULL; + + +static int mclDefaultPrintHandler(const char *s) +{ + return fwrite(s, sizeof(char), strlen(s), stdout); +} + +static int mclDefaultErrorHandler(const char *s) +{ + int written = 0, len = 0; + len = strlen(s); + written = fwrite(s, sizeof(char), len, stderr); + if (len > 0 && s[ len-1 ] != '\n') + written += fwrite("\n", sizeof(char), 1, stderr); + return written; +} + + +/* This symbol is defined in shared libraries. Define it here + * (to nothing) in case this isn't a shared library. + */ +#ifndef LIB_innerProd_C_API +#define LIB_innerProd_C_API /* No special import/export declaration */ +#endif + +LIB_innerProd_C_API +bool MW_CALL_CONV innerProdInitializeWithHandlers( + mclOutputHandlerFcn error_handler, + mclOutputHandlerFcn print_handler +) +{ + if (_mcr_inst != NULL) + return true; + if (!mclmcrInitialize()) + return false; + if (!mclInitializeComponentInstance(&_mcr_inst, + &__MCC_innerProd_component_data, + true, NoObjectType, ExeTarget, + error_handler, print_handler)) + return false; + return true; +} + +LIB_innerProd_C_API +bool MW_CALL_CONV innerProdInitialize(void) +{ + return innerProdInitializeWithHandlers(mclDefaultErrorHandler, + mclDefaultPrintHandler); +} + +LIB_innerProd_C_API +void MW_CALL_CONV innerProdTerminate(void) +{ + if (_mcr_inst != NULL) + mclTerminateInstance(&_mcr_inst); +} + +int run_main(int argc, const char **argv) +{ + int _retval; + /* Generate and populate the path_to_component. */ + char path_to_component[(PATH_MAX*2)+1]; + separatePathName(argv[0], path_to_component, (PATH_MAX*2)+1); + __MCC_innerProd_component_data.path_to_component = path_to_component; + if (!innerProdInitialize()) { + return -1; + } + _retval = mclMain(_mcr_inst, argc, argv, "innerProd", 1); + if (_retval == 0 /* no error */) mclWaitForFiguresToDie(NULL); + innerProdTerminate(); + mclTerminateApplication(); + return _retval; +} + +int main(int argc, const char **argv) +{ + if (!mclInitializeApplication( + __MCC_innerProd_component_data.runtime_options, + __MCC_innerProd_component_data.runtime_option_count)) + return 0; + + return mclRunMain(run_main, argc, argv); +} -- cgit v1.2.2