2 * Copyright (C) ARM Limited 2010-2013. All rights reserved.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
15 #define MUTEX_INIT() mLoggingMutex = CreateMutex(NULL, false, NULL);
16 #define MUTEX_LOCK() WaitForSingleObject(mLoggingMutex, 0xFFFFFFFF);
17 #define MUTEX_UNLOCK() ReleaseMutex(mLoggingMutex);
18 #define snprintf _snprintf
21 #define MUTEX_INIT() pthread_mutex_init(&mLoggingMutex, NULL)
22 #define MUTEX_LOCK() pthread_mutex_lock(&mLoggingMutex)
23 #define MUTEX_UNLOCK() pthread_mutex_unlock(&mLoggingMutex)
28 // Global thread-safe logging
31 Logging::Logging(bool debug) {
35 strcpy(mErrBuf, "Unknown Error");
36 strcpy(mLogBuf, "Unknown Message");
42 void Logging::logError(const char* file, int line, const char* fmt, ...) {
47 snprintf(mErrBuf, sizeof(mErrBuf), "ERROR[%s:%d]: ", file, line);
53 vsnprintf(mErrBuf + strlen(mErrBuf), sizeof(mErrBuf) - 2 - strlen(mErrBuf), fmt, args); // subtract 2 for \n and \0
56 if (strlen(mErrBuf) > 0) {
57 strcat(mErrBuf, "\n");
62 void Logging::logMessage(const char* fmt, ...) {
67 strcpy(mLogBuf, "INFO: ");
70 vsnprintf(mLogBuf + strlen(mLogBuf), sizeof(mLogBuf) - 2 - strlen(mLogBuf), fmt, args); // subtract 2 for \n and \0
72 strcat(mLogBuf, "\n");
74 fprintf(stdout, "%s", mLogBuf);