Add __android_log_assert.
Called from android logging macro used in mesa.
BUG=358029
Review URL: https://codereview.chromium.org/321353002
git-svn-id: http://src.chromium.org/svn/trunk/src/third_party/hwcplus@277862 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
diff --git a/src/hwcplus_util.c b/src/hwcplus_util.c
index 57c4519..1c7873a 100644
--- a/src/hwcplus_util.c
+++ b/src/hwcplus_util.c
@@ -6,8 +6,9 @@
#include <stdio.h>
#include <string.h>
-#include <hardware/hardware.h>
+#include <android/log.h>
#include <cutils/properties.h>
+#include <hardware/hardware.h>
#define LOG_BUF_SIZE 1024
@@ -64,6 +65,33 @@
return __android_log_write(prio, tag, buf);
}
+void __android_log_assert(const char* cond,
+ const char* tag,
+ const char* fmt,
+ ...) {
+ char buf[LOG_BUF_SIZE];
+
+ if (fmt) {
+ va_list ap;
+ va_start(ap, fmt);
+ vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
+ va_end(ap);
+ } else {
+ /* Msg not provided, log condition. N.B. Do not use cond directly as
+ * format string as it could contain spurious '%' syntax (e.g.
+ * "%d" in "blocks%devs == 0").
+ */
+ if (cond)
+ snprintf(buf, LOG_BUF_SIZE, "Assertion failed: %s", cond);
+ else
+ snprintf(buf, LOG_BUF_SIZE, "Unspecified assertion failed");
+ }
+
+ __android_log_write(ANDROID_LOG_FATAL, tag, buf);
+
+ __builtin_trap(); /* trap so we have a chance to debug the situation */
+}
+
int property_get(const char* key, char* value, const char* default_value) {
printf("property_get %s\n", key);
const char* r = default_value;
@@ -72,4 +100,3 @@
strncpy(value, r, PROPERTY_VALUE_MAX);
return strlen(r);
}
-