diff options
author | Pete Warden <petewarden@google.com> | 2018-09-24 15:54:32 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2018-09-24 16:02:13 -0700 |
commit | 1ff157d82dac29f5a3a3197b2664208f6ed6ba06 (patch) | |
tree | c751f5a665a27c660809c4884eb07f69b4983244 /tensorflow/contrib/lite/kernels/op_macros.h | |
parent | 9c58005ec86297a1d0a17dc4f7ad7cbae9c47e4b (diff) |
Portability preparation for more cross-platform prototyping.
PiperOrigin-RevId: 214346240
Diffstat (limited to 'tensorflow/contrib/lite/kernels/op_macros.h')
-rw-r--r-- | tensorflow/contrib/lite/kernels/op_macros.h | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/tensorflow/contrib/lite/kernels/op_macros.h b/tensorflow/contrib/lite/kernels/op_macros.h index d66364c4d8..11e814daee 100644 --- a/tensorflow/contrib/lite/kernels/op_macros.h +++ b/tensorflow/contrib/lite/kernels/op_macros.h @@ -15,17 +15,55 @@ limitations under the License. #ifndef TENSORFLOW_CONTRIB_LITE_KERNELS_OP_MACROS_H_ #define TENSORFLOW_CONTRIB_LITE_KERNELS_OP_MACROS_H_ +// If we're on a platform without standard IO functions, fall back to a +// non-portable function. +#ifdef TF_LITE_MCU_DEBUG_LOG + +// This header is pulled in from the support library at +// https://github.com/google/stm32_bare_lib +#include <debug_log.h> + +#define DEBUG_LOG(x) \ + do { \ + DebugLog(x); \ + } while (0) + +inline void InfiniteLoop() { + DEBUG_LOG("HALTED\n"); + while (1) { + } +} +#define TFLITE_ASSERT_FALSE InfiniteLoop(); +#define TFLITE_ABORT InfiniteLoop(); + +#else // TF_LITE_MCU_DEBUG_LOG + +#include <cassert> #include <cstdio> +#include <cstdlib> -#define TF_LITE_FATAL(msg) \ - do { \ - fprintf(stderr, "%s\n", (msg)); \ - exit(1); \ +#define DEBUG_LOG(x) \ + do { \ + fprintf(stderr, "%s", (x)); \ } while (0) + +#define TFLITE_ASSERT_FALSE assert(false) +#define TFLITE_ABORT abort() + +#endif // TF_LITE_MCU_DEBUG_LOG + +#define TF_LITE_FATAL(msg) \ + do { \ + DEBUG_LOG(msg); \ + DEBUG_LOG("\nFATAL\n"); \ + TFLITE_ABORT; \ + } while (0) + #define TF_LITE_ASSERT(x) \ do { \ if (!(x)) TF_LITE_FATAL(#x); \ } while (0) + #define TF_LITE_ASSERT_EQ(x, y) \ do { \ if ((x) != (y)) TF_LITE_FATAL(#x " didn't equal " #y); \ |