索尼机芯的球机,本地校时,调用以下的函数,cpu占有率突然100%,视频时不时会断掉。源代码如下:
int SetTime(char buf[])
{
struct tm *time_tt; time_t tt;
memcpy(time_tt,buf,sizeof(tt)); int year,month,day,hour,minutes,second;
memcpy(&year,&time_tt->tm_year,sizeof(int));
memcpy(&month,&time_tt->tm_mon,sizeof(int));
memcpy(&day,&time_tt->tm_mday,sizeof(int));
memcpy(&hour,&time_tt->tm_hour,sizeof(int));
memcpy(&minutes,&time_tt->tm_min,sizeof(int));
memcpy(&second,&time_tt->tm_sec,sizeof(int));
printf("year=%d\n",year);
printf("month=%d\n",month);
printf("day=%d\n",day);
printf("hour=%d\n",hour);
printf("minutes=%d\n",minutes);
printf("second=%d\n",second);
printf("time_tt->tm_year=%d\n",time_tt->tm_year);
printf("time_tt->tm_mon=%d\n",time_tt->tm_mon);
printf("time_tt->tm_day=%d\n",time_tt->tm_mday);
printf("time_tt->tm_hour=%d\n",time_tt->tm_hour);
printf("time_tt->tm_min=%d\n",time_tt->tm_min);
printf("time_tt->tm_sec=%d\n",time_tt->tm_sec);
time(&tt);
time_tt = localtime(&tt);
year = (year>1900) ? year-1900 : 0;
time_tt->tm_year = year;
month = (month>0) ? month-1 : 0;
time_tt->tm_mon = month;
time_tt->tm_mday = day;
time_tt->tm_hour = hour;
time_tt->tm_min = minutes;
time_tt->tm_sec = second+3;
printf("time_tt->tm_year=%d\n",time_tt->tm_year);
printf("time_tt->tm_mon=%d\n",time_tt->tm_mon);
printf("time_tt->tm_day=%d\n",time_tt->tm_mday);
printf("time_tt->tm_hour=%d\n",time_tt->tm_hour);
printf("time_tt->tm_min=%d\n",time_tt->tm_min);
printf("time_tt->tm_sec=%d\n",time_tt->tm_sec);
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
if ((tt = mktime(time_tt)) < 0) return -1;
printf("###########################################\n");
ScheduleStop();
stime(&tt);
system("hwclock -uw");
ResumeSchedule();
return 0;
}
******************************************************************************************************************************************************************
而抢机也是采用上面的代码,本地校时不会出现上面的问题。
请专家指点,问题出在哪里?非常感谢。