Update logging.

This commit is contained in:
Thomas Harte 2024-01-19 14:22:23 -05:00
parent 7e47329e2a
commit 2200940efe
4 changed files with 49 additions and 27 deletions

View File

@ -11,6 +11,12 @@
#include <algorithm>
namespace {
Log::Logger<Log::Source::MultiMachine> logger;
}
using namespace Analyser::Dynamic;
MultiMachine::MultiMachine(std::vector<std::unique_ptr<DynamicMachine>> &&machines) :
@ -61,13 +67,14 @@ bool MultiMachine::would_collapse(const std::vector<std::unique_ptr<DynamicMachi
void MultiMachine::did_run_machines(MultiTimedMachine *) {
std::lock_guard machines_lock(machines_mutex_);
#ifndef NDEBUG
for(const auto &machine: machines_) {
auto timed_machine = machine->timed_machine();
LOGNBR(PADHEX(2) << timed_machine->get_confidence() << " " << timed_machine->debug_type() << "; ");
if constexpr (logger.enabled) {
auto line = logger.info();
for(const auto &machine: machines_) {
auto timed_machine = machine->timed_machine();
line.append("%0.4f %s; ", timed_machine->get_confidence(), timed_machine->debug_type().c_str());
}
}
LOGNBR(std::endl);
#endif
DynamicMachine *front = machines_.front().get();
std::stable_sort(machines_.begin(), machines_.end(),

View File

@ -11,13 +11,14 @@
#include <algorithm>
#include <cstring>
#ifndef NDEBUG
#define NDEBUG
#endif
#define LOG_PREFIX "[MFP] "
#include "../../Outputs/Log.hpp"
namespace {
Log::Logger<Log::Source::MFP68901> logger;
}
using namespace Motorola::MFP68901;
ClockingHint::Preference MFP68901::preferred_clocking() const {
@ -64,11 +65,11 @@ uint8_t MFP68901::read(int address) {
case 0x11: case 0x12: return get_timer_data(address - 0xf);
// USART block: TODO.
case 0x13: LOG("Read: sync character generator"); break;
case 0x14: LOG("Read: USART control"); break;
case 0x15: LOG("Read: receiver status"); break;
case 0x16: LOG("Read: transmitter status"); break;
case 0x17: LOG("Read: USART data"); break;
case 0x13: logger.error().append("Read: sync character generator"); break;
case 0x14: logger.error().append("Read: USART control"); break;
case 0x15: logger.error().append("Read: receiver status"); break;
case 0x16: logger.error().append("Read: transmitter status"); break;
case 0x17: logger.error().append("Read: USART data"); break;
}
return 0x00;
}
@ -169,11 +170,11 @@ void MFP68901::write(int address, uint8_t value) {
break;
// USART block: TODO.
case 0x13: LOG("Write: sync character generator"); break;
case 0x14: LOG("Write: USART control"); break;
case 0x15: LOG("Write: receiver status"); break;
case 0x16: LOG("Write: transmitter status"); break;
case 0x17: LOG("Write: USART data"); break;
case 0x13: logger.error().append("Write: sync character generator"); break;
case 0x14: logger.error().append("Write: USART control"); break;
case 0x15: logger.error().append("Write: receiver status"); break;
case 0x16: logger.error().append("Write: transmitter status"); break;
case 0x17: logger.error().append("Write: USART data"); break;
}
update_clocking_observer();
@ -220,7 +221,7 @@ HalfCycles MFP68901::next_sequence_point() {
// MARK: - Timers
void MFP68901::set_timer_mode(int timer, TimerMode mode, int prescale, bool reset_timer) {
LOG("Timer " << timer << " mode set: " << int(mode) << "; prescale: " << prescale);
logger.error().append("Timer %d mode set: %d; prescale: %d", timer, mode, prescale);
timers_[timer].mode = mode;
if(reset_timer) {
timers_[timer].prescale_count = 0;
@ -398,7 +399,7 @@ int MFP68901::acknowledge_interrupt() {
int selected = 0;
while((1 << selected) != mask) ++selected;
// LOG("Interrupt acknowledged: " << selected);
// logger.error().append("Interrupt acknowledged: %d", selected);
return (interrupt_vector_ & 0xf0) | uint8_t(selected);
}

View File

@ -29,10 +29,12 @@ enum class Source {
M50740,
Macintosh,
MasterSystem,
MultiMachine,
MFP68901,
MSX,
NCR5380,
OpenGL,
PCMTrack,
SCC,
SCSI,
SZX,
@ -52,6 +54,7 @@ constexpr bool is_enabled(Source source) {
default: return true;
// The following are all things I'm not actively working on.
case Source::MFP68901:
case Source::NCR5380:
case Source::SCC: return false;
}
@ -65,7 +68,10 @@ constexpr const char *prefix(Source source) {
case Source::AtariST: return "AtariST";
case Source::CommodoreStaticAnalyser: return "Commodore StaticAnalyser";
case Source::i8272: return "i8272";
case Source::MFP68901: return "MFP68901";
case Source::MultiMachine: return "Multi machine";
case Source::NCR5380: return "5380";
case Source::PCMTrack: return "PCM Track";
case Source::SCSI: return "SCSI";
case Source::SCC: return "SCC";
case Source::SZX: return "SZX";
@ -81,12 +87,14 @@ constexpr const char *prefix(Source source) {
template <Source source>
class Logger {
public:
static constexpr bool enabled = is_enabled(source);
Logger() {}
struct LogLine {
public:
LogLine(FILE *stream) : stream_(stream) {
if constexpr (!is_enabled(source)) return;
if constexpr (!enabled) return;
const auto source_prefix = prefix(source);
if(source_prefix) {
@ -95,12 +103,12 @@ class Logger {
}
~LogLine() {
if constexpr (!is_enabled(source)) return;
if constexpr (!enabled) return;
fprintf(stream_, "\n");
}
void append(const char *format, ...) {
if constexpr (!is_enabled(source)) return;
if constexpr (!enabled) return;
va_list args;
va_start(args, format);
vfprintf(stream_, format, args);

View File

@ -9,6 +9,12 @@
#include "PCMTrack.hpp"
#include "../../../Outputs/Log.hpp"
namespace {
Log::Logger<Log::Source::PCMTrack> logger;
}
using namespace Storage::Disk;
PCMTrack::PCMTrack() : segment_pointer_(0) {}
@ -60,7 +66,7 @@ PCMTrack *PCMTrack::resampled_clone(Track *original, size_t bits_per_track) {
return pcm_original->resampled_clone(bits_per_track);
}
ERROR("NOT IMPLEMENTED: resampling non-PCMTracks");
logger.error().append("NOT IMPLEMENTED: resampling non-PCMTracks");
return nullptr;
}