Message ID | e479c654b6ca08057bf18a4e1c1d1ed3cdf8fdc8.camel@rajagiritech.edu.in |
---|---|
State | New |
Headers | show |
Series | related to fixing depreciated api | expand |
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
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
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 --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; }