diff mbox series

related to fixing depreciated api

Message ID e479c654b6ca08057bf18a4e1c1d1ed3cdf8fdc8.camel@rajagiritech.edu.in
State New
Headers show
Series related to fixing depreciated api | expand

Commit Message

Jeffrin Jose T Dec. 14, 2020, 4:42 p.m. UTC
hello,

i have worked on to  fix  depreciated api issue from
tools/testing/selftests/intel_pstate/aerf.c

i met with the following error related...

--------------x------------------x----------------->
$pwd
/home/jeffrin/UP/linux-kselftest/tools/testing/selftests/intel_pstate
$make
gcc  -Wall -D_GNU_SOURCE    aperf.c /home/jeffrin/UP/linux-
kselftest/tools/testing/selftests/kselftest_harness.h
/home/jeffrin/UP/linux-kselftest/tools/testing/selftests/kselftest.h -
lm -o /home/jeffrin/UP/linux-
kselftest/tools/testing/selftests/intel_pstate/aperf
aperf.c: In function ‘main’:
aperf.c:58:2: warning: ‘ftime’ is deprecated [-Wdeprecated-
declarations]
   58 |  ftime(&before);
      |  ^~~~~
In file included from aperf.c:9:
/usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared here
   39 | extern int ftime (struct timeb *__timebuf)
      |            ^~~~~
aperf.c:67:2: warning: ‘ftime’ is deprecated [-Wdeprecated-
declarations]
   67 |  ftime(&after);
      |  ^~~~~
In file included from aperf.c:9:
/usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared here
   39 | extern int ftime (struct timeb *__timebuf)
      |            ^~~~~
$
----------------x---------------x---------------------->


from ftime manual  i found that it is depreciated...

This  function is deprecated, and will be removed in a future version
of the GNU C library.  Use clock_gettime(2) instead.


now clock_gettime  gives  new data structure.

 struct timespec {
               time_t   tv_sec;        /* seconds */
               long     tv_nsec;       /* nanoseconds */
           };


i worked on with the new data structure and some errors that came
along.
typical final output looks good but  values of runtime and typical
frequency
does not look normal during "sudo bash run.sh".

output of "git diff" and  a  portion of output of   "sudo bash run.sh".
is attached.

Comments

Shuah Khan Dec. 15, 2020, 4:12 p.m. UTC | #1
On 12/14/20 9:42 AM, Jeffrin Jose T wrote:
> hello,

> 

> i have worked on to  fix  depreciated api issue from

> tools/testing/selftests/intel_pstate/aerf.c

> 

> i met with the following error related...

> 

> --------------x------------------x----------------->

> $pwd

> /home/jeffrin/UP/linux-kselftest/tools/testing/selftests/intel_pstate

> $make

> gcc  -Wall -D_GNU_SOURCE    aperf.c /home/jeffrin/UP/linux-

> kselftest/tools/testing/selftests/kselftest_harness.h

> /home/jeffrin/UP/linux-kselftest/tools/testing/selftests/kselftest.h -

> lm -o /home/jeffrin/UP/linux-

> kselftest/tools/testing/selftests/intel_pstate/aperf

> aperf.c: In function ‘main’:

> aperf.c:58:2: warning: ‘ftime’ is deprecated [-Wdeprecated-

> declarations]

>     58 |  ftime(&before);

>        |  ^~~~~

> In file included from aperf.c:9:

> /usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared here

>     39 | extern int ftime (struct timeb *__timebuf)

>        |            ^~~~~

> aperf.c:67:2: warning: ‘ftime’ is deprecated [-Wdeprecated-

> declarations]

>     67 |  ftime(&after);

>        |  ^~~~~

> In file included from aperf.c:9:

> /usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared here

>     39 | extern int ftime (struct timeb *__timebuf)

>        |            ^~~~~

> $

> ----------------x---------------x---------------------->

> 

> 

> from ftime manual  i found that it is depreciated...

> 

> This  function is deprecated, and will be removed in a future version

> of the GNU C library.  Use clock_gettime(2) instead.

> 

> 

> now clock_gettime  gives  new data structure.

> 

>   struct timespec {

>                 time_t   tv_sec;        /* seconds */

>                 long     tv_nsec;       /* nanoseconds */

>             };

> 

> 

> i worked on with the new data structure and some errors that came

> along.

> typical final output looks good but  values of runtime and typical

> frequency

> does not look normal during "sudo bash run.sh".

> 

> output of "git diff" and  a  portion of output of   "sudo bash run.sh".

> is attached.

> 


Please send a proper patch to fix intel_pstate to use clock_gettime.

thanks,
-- Shuah
Shuah Khan Dec. 15, 2020, 7:52 p.m. UTC | #2
On 12/15/20 9:12 AM, Shuah Khan wrote:
> On 12/14/20 9:42 AM, Jeffrin Jose T wrote:

>> hello,

>>

>> i have worked on to  fix  depreciated api issue from

>> tools/testing/selftests/intel_pstate/aerf.c

>>

>> i met with the following error related...

>>

>> --------------x------------------x----------------->

>> $pwd

>> /home/jeffrin/UP/linux-kselftest/tools/testing/selftests/intel_pstate

>> $make

>> gcc  -Wall -D_GNU_SOURCE    aperf.c /home/jeffrin/UP/linux-

>> kselftest/tools/testing/selftests/kselftest_harness.h

>> /home/jeffrin/UP/linux-kselftest/tools/testing/selftests/kselftest.h -

>> lm -o /home/jeffrin/UP/linux-

>> kselftest/tools/testing/selftests/intel_pstate/aperf

>> aperf.c: In function ‘main’:

>> aperf.c:58:2: warning: ‘ftime’ is deprecated [-Wdeprecated-

>> declarations]

>>     58 |  ftime(&before);

>>        |  ^~~~~

>> In file included from aperf.c:9:

>> /usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared here

>>     39 | extern int ftime (struct timeb *__timebuf)

>>        |            ^~~~~

>> aperf.c:67:2: warning: ‘ftime’ is deprecated [-Wdeprecated-

>> declarations]

>>     67 |  ftime(&after);

>>        |  ^~~~~

>> In file included from aperf.c:9:

>> /usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared here

>>     39 | extern int ftime (struct timeb *__timebuf)

>>        |            ^~~~~

>> $

>> ----------------x---------------x---------------------->

>>

>>

>> from ftime manual  i found that it is depreciated...

>>

>> This  function is deprecated, and will be removed in a future version

>> of the GNU C library.  Use clock_gettime(2) instead.

>>

>>

>> now clock_gettime  gives  new data structure.

>>

>>   struct timespec {

>>                 time_t   tv_sec;        /* seconds */

>>                 long     tv_nsec;       /* nanoseconds */

>>             };

>>

>>

>> i worked on with the new data structure and some errors that came

>> along.

>> typical final output looks good but  values of runtime and typical

>> frequency

>> does not look normal during "sudo bash run.sh".

>>

>> output of "git diff" and  a  portion of output of   "sudo bash run.sh".

>> is attached.

>>

> 

> Please send a proper patch to fix intel_pstate to use clock_gettime.

> 


The fix for this is already in next - no need to send patch.

thanks,
-- Shuah
Jeffrin Jose T Dec. 15, 2020, 11:02 p.m. UTC | #3
On Tue, 2020-12-15 at 12:52 -0700, Shuah Khan wrote:
> On 12/15/20 9:12 AM, Shuah Khan wrote:
> > On 12/14/20 9:42 AM, Jeffrin Jose T wrote:
> > > hello,
> > > 
> > > i have worked on to  fix  depreciated api issue from
> > > tools/testing/selftests/intel_pstate/aerf.c
> > > 
> > > i met with the following error related...
> > > 
> > > --------------x------------------x----------------->
> > > $pwd
> > > /home/jeffrin/UP/linux-
> > > kselftest/tools/testing/selftests/intel_pstate
> > > $make
> > > gcc  -Wall -D_GNU_SOURCE    aperf.c /home/jeffrin/UP/linux-
> > > kselftest/tools/testing/selftests/kselftest_harness.h
> > > /home/jeffrin/UP/linux-
> > > kselftest/tools/testing/selftests/kselftest.h -
> > > lm -o /home/jeffrin/UP/linux-
> > > kselftest/tools/testing/selftests/intel_pstate/aperf
> > > aperf.c: In function ‘main’:
> > > aperf.c:58:2: warning: ‘ftime’ is deprecated [-Wdeprecated-
> > > declarations]
> > >     58 |  ftime(&before);
> > >        |  ^~~~~
> > > In file included from aperf.c:9:
> > > /usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared
> > > here
> > >     39 | extern int ftime (struct timeb *__timebuf)
> > >        |            ^~~~~
> > > aperf.c:67:2: warning: ‘ftime’ is deprecated [-Wdeprecated-
> > > declarations]
> > >     67 |  ftime(&after);
> > >        |  ^~~~~
> > > In file included from aperf.c:9:
> > > /usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared
> > > here
> > >     39 | extern int ftime (struct timeb *__timebuf)
> > >        |            ^~~~~
> > > $
> > > ----------------x---------------x---------------------->
> > > 
> > > 
> > > from ftime manual  i found that it is depreciated...
> > > 
> > > This  function is deprecated, and will be removed in a future
> > > version
> > > of the GNU C library.  Use clock_gettime(2) instead.
> > > 
> > > 
> > > now clock_gettime  gives  new data structure.
> > > 
> > >   struct timespec {
> > >                 time_t   tv_sec;        /* seconds */
> > >                 long     tv_nsec;       /* nanoseconds */
> > >             };
> > > 
> > > 
> > > i worked on with the new data structure and some errors that came
> > > along.
> > > typical final output looks good but  values of runtime and
> > > typical
> > > frequency
> > > does not look normal during "sudo bash run.sh".
> > > 
> > > output of "git diff" and  a  portion of output of   "sudo bash
> > > run.sh".
> > > is attached.
> > > 
> > 
> > Please send a proper patch to fix intel_pstate to use
> > clock_gettime.
> > 
> 
> The fix for this is already in next - no need to send patch.
> 
> thanks,
> -- Shuah
> 
anyway thanks .
diff mbox series

Patch

diff --git a/tools/testing/selftests/intel_pstate/aperf.c b/tools/testing/selftests/intel_pstate/aperf.c
index f6cd03a87493..7e35e7872f16 100644
--- a/tools/testing/selftests/intel_pstate/aperf.c
+++ b/tools/testing/selftests/intel_pstate/aperf.c
@@ -6,7 +6,7 @@ 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
-#include <sys/timeb.h>
+#include <time.h>
 #include <sched.h>
 #include <errno.h>
 #include <string.h>
@@ -22,10 +22,12 @@  int main(int argc, char **argv) {
 	long long tsc, old_tsc, new_tsc;
 	long long aperf, old_aperf, new_aperf;
 	long long mperf, old_mperf, new_mperf;
-	struct timeb before, after;
+	struct timespec before, after;
+        clockid_t clkid;
 	long long int start, finish, total;
 	cpu_set_t cpuset;
 
+
 	if (argc != 2) {
 		usage(argv[0]);
 		return 1;
@@ -41,6 +43,10 @@  int main(int argc, char **argv) {
 
 	sprintf(msr_file_name, "/dev/cpu/%d/msr", cpu);
 	fd = open(msr_file_name, O_RDONLY);
+        #define CLOCKFD 3
+        #define FD_TO_CLOCKID(fd)   ((~(clockid_t) (fd) << 3) | CLOCKFD)
+        clkid = FD_TO_CLOCKID(fd);
+
 
 	if (fd == -1) {
 		printf("/dev/cpu/%d/msr: %s\n", cpu, strerror(errno));
@@ -55,7 +61,7 @@  int main(int argc, char **argv) {
 		return 1;
 	}
 
-	ftime(&before);
+	clock_gettime(clkid,&before);
 	pread(fd, &old_tsc,  sizeof(old_tsc), 0x10);
 	pread(fd, &old_aperf,  sizeof(old_mperf), 0xe7);
 	pread(fd, &old_mperf,  sizeof(old_aperf), 0xe8);
@@ -64,7 +70,7 @@  int main(int argc, char **argv) {
 		sqrt(i);
 	}
 
-	ftime(&after);
+	clock_gettime(clkid,&after);
 	pread(fd, &new_tsc,  sizeof(new_tsc), 0x10);
 	pread(fd, &new_aperf,  sizeof(new_mperf), 0xe7);
 	pread(fd, &new_mperf,  sizeof(new_aperf), 0xe8);
@@ -73,11 +79,10 @@  int main(int argc, char **argv) {
 	aperf = new_aperf-old_aperf;
 	mperf = new_mperf-old_mperf;
 
-	start = before.time*1000 + before.millitm;
-	finish = after.time*1000 + after.millitm;
-	total = finish - start;
-
-	printf("runTime: %4.2f\n", 1.0*total/1000);
-	printf("freq: %7.0f\n", tsc / (1.0*aperf / (1.0 * mperf)) / total);
+	start = before.tv_sec*1000000 + before.tv_nsec;
+	finish = after.tv_sec*1000000 + after.tv_nsec;
+	total = finish - start; 
+	printf("runTime: %4.2f\n", 1.0*total/1000000); 
+	printf("freq: %7.0f\n", tsc / (1.0 * aperf /1.0 * (mperf)) / total);
 	return 0;
 }