simulavr-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Simulavr-devel] [PATCH] Reduce warnings about registers not simulated


From: Torsten Duwe
Subject: [Simulavr-devel] [PATCH] Reduce warnings about registers not simulated
Date: Wed, 22 Feb 2012 11:07:42 +0100 (CET)
User-agent: Alpine 2.00 (LNX 1167 2008-08-23)

Hi All,

First, thanks a lot for this great and quite accurate simulator!
Packaging 1.0.0 for our build service https://build.opensuse.org/package/show?package=simulavr&project=CrossToolchain%3Aavr I made 2 patches, the first of which I'd like you to consider for upstream inclusion. Please comment or apply.

        Torsten

-----8<-----
NotSimulatedRegister warns on stdout about each r/w access to each instance. This causes not only the regular startup messages to scroll off screen, but also warnings about config registers used only once during device initialisation. This patch makes simulavr warn only once for every register written, and for the 10 first registers' read-before-write accesses.

Signed-off-by: Torsten Duwe <address@hidden>

--- simulavr-1.0.0/src/rwmem.h.orig     2012-02-12 16:26:38.000000000 +0100
+++ simulavr-1.0.0/src/rwmem.h  2012-02-22 10:03:19.000000000 +0100
@@ -144,6 +144,7 @@ class InvalidMem : public RWMemoryMember
 class NotSimulatedRegister : public RWMemoryMember {
     private:
         const char * message_on_access;
+        bool have_warned;

     public:
         NotSimulatedRegister(const char * message_on_access);
--- simulavr-1.0.0/src/rwmem.cpp.orig   2012-02-12 16:26:38.000000000 +0100
+++ simulavr-1.0.0/src/rwmem.cpp        2012-02-22 10:03:19.000000000 +0100
@@ -125,15 +125,22 @@ void InvalidMem::set(unsigned char c) {
 }

 NotSimulatedRegister::NotSimulatedRegister(const char * message_on_access_)
-    : message_on_access(message_on_access_)  {}
+    : message_on_access(message_on_access_)  {have_warned = false;}

 unsigned char NotSimulatedRegister::get() const {
-    avr_warning(message_on_access);
+    static unsigned warn_count = 0;
+
+    if(!have_warned) {
+        if (warn_count++ < 10)
+         avr_warning(message_on_access);
+    }
     return 0;
 }

 void NotSimulatedRegister::set(unsigned char c) {
-    avr_warning(message_on_access);
+    if(!have_warned)
+        avr_warning(message_on_access);
+    have_warned = true;
 }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]