PatchworkOS
Loading...
Searching...
No Matches
Logging

Logging. More...

Modules

 Log file
 Userspace kernel log file.
 
 Screen
 Screen logging.
 
 Panic
 Panic handling.
 

Macros

#define LOG_MAX_BUFFER   0x1000
 Maximum buffer size for a single log line.
 
#define LOG_DEBUG(format, ...)   log_print(LOG_LEVEL_DEBUG, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
 
#define LOG_USER(format, ...)   log_print(LOG_LEVEL_USER, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
 
#define LOG_INFO(format, ...)   log_print(LOG_LEVEL_INFO, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
 
#define LOG_WARN(format, ...)   log_print(LOG_LEVEL_WARN, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
 
#define LOG_ERR(format, ...)   log_print(LOG_LEVEL_ERR, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
 
#define LOG_PANIC(format, ...)   log_print(LOG_LEVEL_PANIC, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
 

Enumerations

enum  log_output_t {
  LOG_OUTPUT_SERIAL = 1 << 0 ,
  LOG_OUTPUT_SCREEN = 1 << 1 ,
  LOG_OUTPUT_FILE = 1 << 2
}
 Logging output options. More...
 
enum  log_level_t {
  LOG_LEVEL_DEBUG ,
  LOG_LEVEL_USER ,
  LOG_LEVEL_INFO ,
  LOG_LEVEL_WARN ,
  LOG_LEVEL_ERR ,
  LOG_LEVEL_PANIC
}
 Log levels. More...
 

Functions

void log_init (const boot_gop_t *gop)
 Initialize the logging system.
 
void log_screen_enable (void)
 Enable logging to the screen.
 
void log_screen_disable (void)
 Disable logging to the screen.
 
void log_write (const char *string, uint64_t length)
 Write directly to the log outputs without any formatting or headers.
 
uint64_t log_print (log_level_t level, const char *prefix, const char *format,...)
 Print a formatted log message.
 
uint64_t log_vprint (log_level_t level, const char *prefix, const char *format, va_list args)
 Print a formatted log message with a va_list.
 

Detailed Description

Logging.

Macro Definition Documentation

◆ LOG_DEBUG

#define LOG_DEBUG (   format,
  ... 
)    log_print(LOG_LEVEL_DEBUG, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)

Definition at line 81 of file log.h.

◆ LOG_ERR

#define LOG_ERR (   format,
  ... 
)    log_print(LOG_LEVEL_ERR, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)

Definition at line 89 of file log.h.

◆ LOG_INFO

#define LOG_INFO (   format,
  ... 
)    log_print(LOG_LEVEL_INFO, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)

Definition at line 87 of file log.h.

◆ LOG_MAX_BUFFER

#define LOG_MAX_BUFFER   0x1000

Maximum buffer size for a single log line.

Definition at line 23 of file log.h.

◆ LOG_PANIC

#define LOG_PANIC (   format,
  ... 
)    log_print(LOG_LEVEL_PANIC, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)

Definition at line 90 of file log.h.

◆ LOG_USER

#define LOG_USER (   format,
  ... 
)    log_print(LOG_LEVEL_USER, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)

Definition at line 86 of file log.h.

◆ LOG_WARN

#define LOG_WARN (   format,
  ... 
)    log_print(LOG_LEVEL_WARN, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)

Definition at line 88 of file log.h.

Enumeration Type Documentation

◆ log_level_t

Log levels.

Enumerator
LOG_LEVEL_DEBUG 
LOG_LEVEL_USER 
LOG_LEVEL_INFO 
LOG_LEVEL_WARN 
LOG_LEVEL_ERR 
LOG_LEVEL_PANIC 

Definition at line 38 of file log.h.

◆ log_output_t

Logging output options.

Enumerator
LOG_OUTPUT_SERIAL 
LOG_OUTPUT_SCREEN 
LOG_OUTPUT_FILE 

Definition at line 28 of file log.h.

Function Documentation

◆ log_init()

void log_init ( const boot_gop_t gop)

Initialize the logging system.

Parameters
gopPointer to the bootloader-provided GOP information for screen logging.

Definition at line 50 of file log.c.

References COM1, com_init(), gop, isLastCharNewline, LOG_LEVEL_DEBUG, LOG_LEVEL_USER, LOG_OUTPUT_FILE, LOG_OUTPUT_SCREEN, LOG_OUTPUT_SERIAL, log_screen_init(), log_splash(), minLevel, and outputs.

Referenced by init_early().

◆ log_print()

uint64_t log_print ( log_level_t  level,
const char *  prefix,
const char *  format,
  ... 
)

Print a formatted log message.

Definition at line 164 of file log.c.

References log_vprint(), va_end, and va_start.

◆ log_screen_disable()

void log_screen_disable ( void  )

Disable logging to the screen.

Definition at line 85 of file log.c.

References lock, LOCK_SCOPE, and outputs.

Referenced by fb_buffer_mmap().

◆ log_screen_enable()

void log_screen_enable ( void  )

Enable logging to the screen.

Definition at line 72 of file log.c.

References lock, LOCK_SCOPE, log_file_flush_to_screen(), LOG_OUTPUT_SCREEN, and outputs.

Referenced by panic().

◆ log_vprint()

uint64_t log_vprint ( log_level_t  level,
const char *  prefix,
const char *  format,
va_list  args 
)

Print a formatted log message with a va_list.

Definition at line 173 of file log.c.

References EINVAL, ERR, errno, lineBuffer, lock, LOCK_SCOPE, log_handle_char(), LOG_MAX_BUFFER, minLevel, and vsnprintf().

Referenced by aml_debug_error(), and log_print().

◆ log_write()

void log_write ( const char *  string,
uint64_t  length 
)

Write directly to the log outputs without any formatting or headers.

Definition at line 92 of file log.c.

References COM1, com_write(), log_file_write(), LOG_OUTPUT_FILE, LOG_OUTPUT_SCREEN, LOG_OUTPUT_SERIAL, log_screen_write(), and outputs.

Referenced by log_handle_char(), log_print_header(), and panic().