This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

"Transfer rate" patch


Hi,

The corrected patch again - the output is in "KBytes/sec" or "bytes/sec".
The ChangeLog file is updated too.

I changed to "KBytes/sec" because of our and other fast JTAG Emulators.

regards,
Ilko Iliev
Ronetix - JTAG Emulators and Flash Programmers
www.ronetix.at



Vladimir Prus wrote:
Ilko Iliev wrote:

"Transfer rate" patch
From:
Ilko Iliev <office@ronetix.at>
  Date:
Tuesday 05 September 2006 11:24:48
  Groups:
gmane.comp.gdb.patches
Hi,

I found a small bug by the calculating of the transfer rate at the
"load" command - if the download image size or the download speed is
higher then occurs overflow and the printed information is wrong.

I attached a patch for this problem.


regards,
Ilko Iliev
www.ronetix.at
gdb_download_speed.patch
--- symfile.c.orig 2006-08-31 15:29:12.000000000 +0200
+++ symfile.c 2006-08-31 15:47:28.000000000 +0200
@@ -1769,14 +1769,14 @@
ui_out_text (uiout, "Transfer rate: ");
if (time_count > 0)
{
- ui_out_field_fmt (uiout, "transfer-rate", "%lu",
- 1000 * (data_count * 8) / time_count);
- ui_out_text (uiout, " bits/sec");
+ ui_out_field_fmt (uiout, "transfer-rate", "%lu",
+ (unsigned long)((((unsigned long
long)data_count)*1000)/time_count)/1024); + ui_out_text (uiout, "
Kbytes/sec"); }

I am not sure about motivation to switch to "Kbytes/sec" -- I've seen a
target that does 700 *bytes* per second, so your code will just print '0'
in that case -- is that intended?


else
{
- ui_out_field_fmt (uiout, "transferred-bits", "%lu", (data_count *
8)); - ui_out_text (uiout, " bits in <1 sec");
+ ui_out_field_fmt (uiout, "transferred-bits", "%lu", data_count);
+ ui_out_text (uiout, " bytes in <1 sec");

You've changed the code to output the number of bytes and changes the text to read "bytes" the the name of output field is still 'transferred-bits'. I'm not sure this matters (maybe in MI mode), but in any way, you should adjust that.


- Volodya



--- ChangeLog.orig	2006-09-07 15:23:19.000000000 +0200
+++ ChangeLog	2006-09-07 15:27:46.000000000 +0200
@@ -1,3 +1,8 @@
+2006-09-07  Ilko Iliev <iliev@ronetix.at>
+
+	* symfile.c (print_transfer_performance): Fix overflow problem
+        and change bits/sec to KBytes/sec or bytes/sec
+
 2006-08-28  DJ Delorie  <dj@redhat.com>
 
 	* m32c-tdep.c (m32c_decode_srcdest4): Initialize fields in sd



--- symfile.c.orig	2006-08-31 15:29:12.000000000 +0200
+++ symfile.c	2006-09-07 15:19:45.000000000 +0200
@@ -1769,14 +1769,23 @@
   ui_out_text (uiout, "Transfer rate: ");
   if (time_count > 0)
     {
-      ui_out_field_fmt (uiout, "transfer-rate", "%lu",
-			1000 * (data_count * 8) / time_count);
-      ui_out_text (uiout, " bits/sec");
+      if ( data_count < 1024 )
+        {
+          ui_out_field_fmt (uiout, "transfer-rate", "%lu",
+            (unsigned long)((((unsigned long long)data_count) * 1000) / time_count));
+          ui_out_text (uiout, " bytes/sec");
+        }
+      else
+        {
+          ui_out_field_fmt (uiout, "transfer-rate", "%lu", 
+	    (unsigned long)((((unsigned long long)data_count) * 1000) / time_count) / 1024);
+          ui_out_text (uiout, " Kbytes/sec");
+        }
     }
   else
     {
-      ui_out_field_fmt (uiout, "transferred-bits", "%lu", (data_count * 8));
-      ui_out_text (uiout, " bits in <1 sec");
+      ui_out_field_fmt (uiout, "transferred-bytes", "%lu", data_count);
+      ui_out_text (uiout, " bytes in <1 sec");
     }
   if (write_count > 0)
     {

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]