Example #1
0
void dnx_log(const char *func, uint32_t line,
  dnx_log_level_t level, const char *fmt, ...)
{
  char buff[DNX_MAX_LOG_BUFF] = {0};
  int n = 0, offset = 0;
  va_list va;

  if (level > dnx_max_dlevel)
    goto Exit;

  if (log_flags & DNX_LOG_FLAG_TIMESTAMP)
  {
    n = dnx_snprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, "[%010u] ",
      dnx_timestamp());
    if (n >= DNX_MAX_LOG_BUFF - offset)
    {
      goto Exit;
    }
    offset += n;
  }

  n = dnx_snprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, "[%s: (%d)]: ", func,
    line);
  if (n >= DNX_MAX_LOG_BUFF - offset)
  {
    goto Exit;
  }
  offset += n;

  va_start(va, fmt);
  dnx_vsnprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, fmt, va);
  va_end(va);

Exit:
  switch (level)
  {
  case DNX_LOG_LEVEL_ERROR:
    printk(KERN_ERR "%s", buff);
    return;
  case DNX_LOG_LEVEL_WARNING:
    printk(KERN_WARNING "%s", buff);
    return;
  case DNX_LOG_LEVEL_INFO:
    printk(KERN_INFO "%s", buff);
    return;
  case DNX_LOG_LEVEL_EXTRA:
    printk(KERN_DEBUG "%s", buff);
    return;
  default:
    DNX_ASSERT(0);
    break;
  }
}
Example #2
0
void dnx_log(const char *func, uint32_t line,
  dnx_log_level_t level, const char *fmt, ...)
{
  char buff[DNX_MAX_LOG_BUFF] = {0};
  int offset = 0, n = 0;
  va_list va;

  if (level > os_max_level)
    return;

  if (log_flags & DNX_LOG_FLAG_TIMESTAMP)
  {
    n = dnx_snprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, "[%010u] ",
      dnx_timestamp());
    if (n >= DNX_MAX_LOG_BUFF - offset)
    {
      goto Exit;
    }
    offset += n;
  }

  switch (level) {
  case DNX_LOG_LEVEL_ERROR:
    n = dnx_snprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, "Error: ");
    break;
  case DNX_LOG_LEVEL_WARNING:
    n = dnx_snprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, "Warning: ");
    break;
  case DNX_LOG_LEVEL_INFO:
    n = dnx_snprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, "Info: ");
    break;
  case DNX_LOG_LEVEL_EXTRA:
    n = dnx_snprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, "Extra: ");
    break;
  default:
    DNX_ASSERT(0);
  } 
  if (n >= DNX_MAX_LOG_BUFF - offset)
    {
      goto Exit;
    }

  offset += n;

  n = dnx_snprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, "[%s: (%d)]: ", func,
    line);
  if (n >= DNX_MAX_LOG_BUFF - offset)
  {
    goto Exit;
  }
  offset += n;

  if (os_ident)
  {
    n = dnx_snprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, "%s: ",
      os_ident);
    /* if ident too long. skip it. */
    if (n < DNX_MAX_LOG_BUFF - offset)
    {
      offset +=n;
    }
  }

  va_start(va, fmt);
  n = dnx_vsnprintf(buff + offset, DNX_MAX_LOG_BUFF - offset, fmt, va);
  va_end(va);

  if (n >= DNX_MAX_LOG_BUFF - offset)
  {
    buff[DNX_MAX_LOG_BUFF - 1] = 0;
  }

Exit:
  OutputDebugStringA(buff);

  if (duplicate_to_stderr)
    fprintf(stderr, "%s\n", buff);
}