@@ -206,8 +206,10 @@ int get_msr(int cpu, off_t offset, unsigned long long *msr)
206
206
retval = pread (fd , msr , sizeof * msr , offset );
207
207
close (fd );
208
208
209
- if (retval != sizeof * msr )
209
+ if (retval != sizeof * msr ) {
210
+ fprintf (stderr , "%s offset 0x%zx read failed\n" , pathname , offset );
210
211
return -1 ;
212
+ }
211
213
212
214
return 0 ;
213
215
}
@@ -1101,7 +1103,9 @@ void turbostat_loop()
1101
1103
1102
1104
restart :
1103
1105
retval = for_all_cpus (get_counters , EVEN_COUNTERS );
1104
- if (retval ) {
1106
+ if (retval < -1 ) {
1107
+ exit (retval );
1108
+ } else if (retval == -1 ) {
1105
1109
re_initialize ();
1106
1110
goto restart ;
1107
1111
}
@@ -1114,7 +1118,9 @@ void turbostat_loop()
1114
1118
}
1115
1119
sleep (interval_sec );
1116
1120
retval = for_all_cpus (get_counters , ODD_COUNTERS );
1117
- if (retval ) {
1121
+ if (retval < -1 ) {
1122
+ exit (retval );
1123
+ } else if (retval == -1 ) {
1118
1124
re_initialize ();
1119
1125
goto restart ;
1120
1126
}
@@ -1126,7 +1132,9 @@ void turbostat_loop()
1126
1132
flush_stdout ();
1127
1133
sleep (interval_sec );
1128
1134
retval = for_all_cpus (get_counters , EVEN_COUNTERS );
1129
- if (retval ) {
1135
+ if (retval < -1 ) {
1136
+ exit (retval );
1137
+ } else if (retval == -1 ) {
1130
1138
re_initialize ();
1131
1139
goto restart ;
1132
1140
}
@@ -1545,8 +1553,11 @@ void turbostat_init()
1545
1553
int fork_it (char * * argv )
1546
1554
{
1547
1555
pid_t child_pid ;
1556
+ int status ;
1548
1557
1549
- for_all_cpus (get_counters , EVEN_COUNTERS );
1558
+ status = for_all_cpus (get_counters , EVEN_COUNTERS );
1559
+ if (status )
1560
+ exit (status );
1550
1561
/* clear affinity side-effect of get_counters() */
1551
1562
sched_setaffinity (0 , cpu_present_setsize , cpu_present_set );
1552
1563
gettimeofday (& tv_even , (struct timezone * )NULL );
@@ -1556,7 +1567,6 @@ int fork_it(char **argv)
1556
1567
/* child */
1557
1568
execvp (argv [0 ], argv );
1558
1569
} else {
1559
- int status ;
1560
1570
1561
1571
/* parent */
1562
1572
if (child_pid == -1 ) {
@@ -1568,7 +1578,7 @@ int fork_it(char **argv)
1568
1578
signal (SIGQUIT , SIG_IGN );
1569
1579
if (waitpid (child_pid , & status , 0 ) == -1 ) {
1570
1580
perror ("wait" );
1571
- exit (1 );
1581
+ exit (status );
1572
1582
}
1573
1583
}
1574
1584
/*
@@ -1585,7 +1595,7 @@ int fork_it(char **argv)
1585
1595
1586
1596
fprintf (stderr , "%.6f sec\n" , tv_delta .tv_sec + tv_delta .tv_usec /1000000.0 );
1587
1597
1588
- return 0 ;
1598
+ return status ;
1589
1599
}
1590
1600
1591
1601
void cmdline (int argc , char * * argv )
0 commit comments