[Svace] Fix unresolved svace issues
authorDongju Chae <dongju.chae@samsung.com>
Fri, 10 Apr 2020 06:09:37 +0000 (15:09 +0900)
committer채동주/On-Device Lab(SR)/Staff Engineer/삼성전자 <dongju.chae@samsung.com>
Tue, 14 Apr 2020 04:19:07 +0000 (13:19 +0900)
This patch fixes unresolved svace issues.

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
include/common/npubinfmt.h
src/core/ne-handler.cc
src/core/ne-model.h
tests/unittests/ne_core_utils_test.cc

index 75e49e9..49c8927 100644 (file)
 
 #include <stdint.h>
 #include <typedef.h>
+#include <assert.h>
 
 /* size of metadata */
-#define NPUBIN_META_SIZE (4096) /* unit size of metadata (minimal size) */
-#define NPUBIN_META_EXTRA(magiccode) ((uint64_t)(((magiccode) >> 8) & 0xFFULL)) /* number of extra metadata */
-#define NPUBIN_META_EXTRA_SIZE(magiccode) (NPUBIN_META_EXTRA(magiccode) * NPUBIN_META_SIZE)
-#define NPUBIN_META_TOTAL_SIZE(magiccode) (NPUBIN_META_SIZE + NPUBIN_META_EXTRA_SIZE(magiccode))
+
+/* unit size of metadata (minimal size) */
+#define NPUBIN_META_SIZE (4096)
+/* number of extra metadata */
+#define NPUBIN_META_EXTRA(magiccode) (((magiccode) >> 8) & 0xFFULL)
+
+/* @brief return extra metadata size of npu binary */
+static inline uint64_t NPUBIN_META_EXTRA_SIZE (uint64_t magiccode) {
+  uint64_t num_extra = NPUBIN_META_EXTRA (magiccode);
+  assert (num_extra <= UINT8_MAX);  /** sanity check for svace */
+  return num_extra * NPUBIN_META_SIZE;
+}
+
+/* @brief return total metadata size of npu binary, including extra data */
+static inline uint64_t NPUBIN_META_TOTAL_SIZE (uint64_t magiccode) {
+  uint64_t size_extra = NPUBIN_META_EXTRA_SIZE (magiccode);
+  assert (size_extra <= UINT8_MAX * NPUBIN_META_SIZE); /** sanity check for svace */
+  return size_extra + NPUBIN_META_SIZE;
+}
 
 /* tensor data constrains */
 #define MAX_TENSORS (16)
index 816887f..20c299d 100644 (file)
@@ -617,7 +617,9 @@ Device::createInstance (dev_type type, int id)
 
 /** @brief host handler constructor */
 HostHandler::HostHandler (Device *device)
-  : device_(device)
+  : device_(device),
+    /* ignored as we don't use double buffering anymore, but for backward-compatibility */
+    async_mode_ (NPUASYNC_WAIT)
 {
 }
 
index c5c1195..63d3723 100644 (file)
@@ -39,7 +39,7 @@ class Metadata {
   public:
     static std::unique_ptr<Metadata> extractMetadata (void *data);
 
-    Metadata (npubin_meta *meta) : meta_(meta) {}
+    Metadata (npubin_meta *meta) : meta_(meta), version_(0) {}
     virtual ~Metadata () {};
 
     virtual uint32_t getInputNum () const = 0;
index fbd8303..a79ac88 100644 (file)
@@ -127,16 +127,15 @@ TEST (ne_core_utils_test, load_conf_ini_n)
   /** load default configurations */
   Conf & conf = Conf::getInstance ();
 
-  /** make dummy .ini file */
-  FILE *fp = fopen ("dummy.ini", "w");
-  const char *ini_str = "[main]\n"
-                        "resv_mem_size=asdf\n"
-                        "num_threads=-1\n";
-
-  /** from .ini file */
-  ASSERT_NE (fp, nullptr);
-  ASSERT_EQ (fwrite (ini_str, strlen(ini_str), 1, fp), 1);
-  ASSERT_EQ (fclose (fp), 0);
+  /** make dummy .ini file (with invalid values) */
+  std::ofstream ofs ("dummy.ini");
+  ASSERT_EQ (ofs.good(), true);
+
+  ofs << "[main]\n";
+  ofs << "resv_mem_size=asdr\n";
+  ofs << "num_threads=-1\n";
+
+  ofs.close();
 
   conf = Conf::getInstance ("dummy.ini");