Use Word32 modular type for stats counters
authorAdrian-Ken Rueegsegger <ken@codelabs.ch>
Tue, 3 Oct 2017 08:59:32 +0000 (10:59 +0200)
committerAdrian-Ken Rueegsegger <ken@codelabs.ch>
Fri, 27 Oct 2017 10:42:57 +0000 (12:42 +0200)
Signed-off-by: Adrian-Ken Rueegsegger <ken@codelabs.ch>
src/hw-dbc-transfer_info.adb

index b49264fee53c26804dad3e4baf9405b0109beab1..fe41a89df63e4bfc2463549c89035e140698f361 100644 (file)
@@ -45,9 +45,9 @@ is
          Finished => False));
 
    type Stats_Info is record
-      Enqueued    : Natural;
-      Transfered  : Natural;
-      Lost        : Natural;
+      Enqueued    : Word32;
+      Transfered  : Word32;
+      Lost        : Word32;
    end record;
    type Stats_Array is array (Endpoint_Range) of Stats_Info;
    Stats : Stats_Array := (Endpoint_Range => (others => 0));
@@ -99,6 +99,7 @@ is
       Id       :    out Transfer_Id;
       Success  :    out Boolean)
    is
+      use type Word32;
       use type Word64;
    begin
       Success := False;
@@ -113,7 +114,8 @@ is
                Status   => Error'First,
                Started  => True,
                Finished => False);
-            Stats (Endpoint).Enqueued := Stats (Endpoint).Enqueued + Length;
+            Stats (Endpoint).Enqueued :=
+              Stats (Endpoint).Enqueued + Word32 (Length);
             Start_Counter := Start_Counter + 1;
             Success := True;
             Id := I;
@@ -126,6 +128,7 @@ is
      (Id       : Transfer_Id;
       Length   : Natural)
    is
+      use type Word32;
       use type Word64;
 
       Endpoint : constant Endpoint_Range := Xfers (Id).Endpoint;
@@ -139,7 +142,8 @@ is
          Started  => True,
          Finished => False);
       Start_Counter := Start_Counter + 1;
-      Stats (Endpoint).Enqueued := Stats (Endpoint).Enqueued + Length;
+      Stats (Endpoint).Enqueued
+        := Stats (Endpoint).Enqueued + Word32 (Length);
    end Restart;
 
    procedure Append
@@ -148,6 +152,7 @@ is
       Offset   :    out Natural;
       Id       :    out Transfer_Id)
    is
+      use type Word32;
       use type Word64;
       Success : Boolean;
       Max_Counter : Word64;
@@ -169,7 +174,8 @@ is
          Length := Natural'Min (Length, Max_Bulk_Size - Xfers (Id).Length);
          Offset := Xfers (Id).Length;
          Xfers (Id).Length := Xfers (Id).Length + Length;
-         Stats (Endpoint).Enqueued := Stats (Endpoint).Enqueued + Length;
+         Stats (Endpoint).Enqueued
+           := Stats (Endpoint).Enqueued + Word32 (Length);
       else
          Length := 0;
          Offset := 0;
@@ -181,6 +187,7 @@ is
       Remaining_Length  : Natural;
       Status            : Error)
    is
+      use type Word32;
       use type Word64;
       Id : Transfer_Id;
    begin
@@ -197,12 +204,13 @@ is
             if Remaining_Length <= Xfers (Id).Length then
                Xfers (Id).Length := Xfers (Id).Length - Remaining_Length;
                Stats (Xfers (Id).Endpoint).Transfered :=
-                  Stats (Xfers (Id).Endpoint).Transfered + Xfers (Id).Length;
+                 Stats (Xfers (Id).Endpoint).Transfered + Word32
+                   (Xfers (Id).Length);
                Stats (Xfers (Id).Endpoint).Lost :=
-                  Stats (Xfers (Id).Endpoint).Lost + Remaining_Length;
+                 Stats (Xfers (Id).Endpoint).Lost + Word32 (Remaining_Length);
             else
                Stats (Xfers (Id).Endpoint).Lost :=
-                  Stats (Xfers (Id).Endpoint).Lost + Xfers (Id).Length;
+                 Stats (Xfers (Id).Endpoint).Lost + Word32 (Xfers (Id).Length);
                Xfers (Id).Length := 0;
                Xfers (Id).Status := Controller_Error;
             end if;
@@ -298,6 +306,7 @@ is
 
    procedure Dump_Stats
    is
+      use type Word32;
    begin
       Debug.Put_Line ("DbC statistics:");
       for EP in Endpoint_Range loop
@@ -305,23 +314,23 @@ is
          Debug.Put_Int8 (Int8 (EP));
          Debug.New_Line;
          Debug.Put ("      enqueued: ");
-         Debug.Put_Word32 (Word32 (Stats (EP).Enqueued));
+         Debug.Put_Word32 (Stats (EP).Enqueued);
          Debug.Put (" (");
          Debug.Put_Int32 (Int32 (Stats (EP).Enqueued));
          Debug.Put_Line (")");
          Debug.Put ("    transfered: ");
-         Debug.Put_Word32 (Word32 (Stats (EP).Transfered));
+         Debug.Put_Word32 (Stats (EP).Transfered);
          Debug.Put (" (");
          Debug.Put_Int32 (Int32 (Stats (EP).Transfered));
          Debug.Put_Line (")");
          Debug.Put ("          lost: ");
-         Debug.Put_Word32 (Word32 (Stats (EP).Lost));
+         Debug.Put_Word32 (Stats (EP).Lost);
          Debug.Put (" (");
          Debug.Put_Int32 (Int32 (Stats (EP).Lost));
          Debug.Put_Line (")");
          Debug.Put ("      in queue: ");
-         Debug.Put_Word32 (Word32
-           (Stats (EP).Enqueued - Stats (EP).Transfered - Stats (EP).Lost));
+         Debug.Put_Word32
+           (Stats (EP).Enqueued - Stats (EP).Transfered - Stats (EP).Lost);
          Debug.Put (" (");
          Debug.Put_Int32 (Int32
            (Stats (EP).Enqueued - Stats (EP).Transfered - Stats (EP).Lost));