void appendPrintf(Logging *logging, const char *fmt, ...) { efiAssertVoid(getRemainingStack(chThdSelf()) > 128, "lowstck#4"); va_list ap; va_start(ap, fmt); vappendPrintf(logging, fmt, ap); va_end(ap); }
void scheduleMsg(Logging *logging, const char *fmt, ...) { resetLogging(logging); // todo: is 'reset' really needed here? appendMsgPrefix(logging); va_list ap; va_start(ap, fmt); vappendPrintf(logging, fmt, ap); va_end(ap); appendMsgPostfix(logging); scheduleLogging(logging); }
/** * This method would output a simple console message immediately. * This method should only be invoked on main thread because only the main thread can write to the console */ void printMsg(Logging *logger, const char *fmt, ...) { // resetLogging(logging); // I guess 'reset' is not needed here? appendMsgPrefix(logger); va_list ap; va_start(ap, fmt); vappendPrintf(logger, fmt, ap); va_end(ap); append(logger, DELIMETER); printLine(logger); }
/** * This method would output a simple console message immediately. * This method should only be invoked on main thread because only the main thread can write to the console */ void printMsg(Logging *logger, const char *fmt, ...) { efiAssertVoid(getRemainingStack(chThdSelf()) > 128, "lowstck#5o"); // resetLogging(logging); // I guess 'reset' is not needed here? appendMsgPrefix(logger); va_list ap; va_start(ap, fmt); vappendPrintf(logger, fmt, ap); va_end(ap); append(logger, DELIMETER); printLine(logger); }
/** * this whole method is executed under syslock so that we can have multiple threads use the same shared buffer * in order to reduce memory usage */ void scheduleMsg(Logging *logging, const char *fmt, ...) { efiAssertVoid(logging != NULL, "logging NULL"); int wasLocked = lockAnyContext(); resetLogging(logging); // todo: is 'reset' really needed here? appendMsgPrefix(logging); va_list ap; va_start(ap, fmt); vappendPrintf(logging, fmt, ap); va_end(ap); appendMsgPostfix(logging); scheduleLogging(logging); if (!wasLocked) { unlockAnyContext(); } }