【挑单3.2Release】修复time中TIMEZONE优先使用RTC模块的问题
方案描述:
1、time中timezone全局变量修改为优先从RTC获取
2、settimeofday接口,linux和posix标准有差异,m核中对齐posix标准,具体如下:
int settimeofday(const struct timeval *tv, const struct timezone *tz)
2.1、linux中:
tz参数已弃用,一般设置为NULL;
tv参数,为NULL时返回0,不设置错误码,表示不修改当前时间;
2.2、posix中:
tv或tz全部为NULL时,返回-1,设置错误码EFAULT;
tv或tz有一个不为NULL时,不设置相应的参数,返回0;不设置错误码;
3、新增settimeofday接口设置timezone测试用例
BREAKING CHANGE:
修复time中TIMEZONE优先使用RTC模块的问题对外变更描述:
修改int settimeofday(const struct timeval *tv, const struct timezone *tz)接口
settimeofday接口对入参的判断逻辑修改:
1、tv或tz全部为NULL时,返回-1,设置错误码EFAULT;
2、tv或tz有一个不为NULL时,不设置相应的参数,返回0;不设置错误码;
Close: #I73MT7
Signed-off-by: zhangdengyu <zhangdengyu2@huawei.com>
Change-Id: If16491f909e9564010cf4bb291f0d92b5b8fce3c
This commit is contained in:
@@ -288,6 +288,42 @@ LITE_TEST_CASE(PosixTimeFuncTestSuite, testTimeLocaltime002, Function | MediumTe
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* *
|
||||
* @tc.number SUB_KERNEL_TIME_LOCALTIME_003
|
||||
* @tc.name test settimeofday api
|
||||
* @tc.desc [C- SOFTWARE -0200]
|
||||
*/
|
||||
LITE_TEST_CASE(PosixTimeFuncTestSuite, testTimeLocaltime003, Function | MediumTest | Level1)
|
||||
{
|
||||
char cTime[32]; /* 32, no special meaning */
|
||||
time_t tStart;
|
||||
time_t tEnd;
|
||||
struct timezone tz;
|
||||
struct timeval timeSet = {
|
||||
.tv_sec = 86399, /* 86399, no special meaning */
|
||||
.tv_usec = 0
|
||||
};
|
||||
|
||||
int ret = gettimeofday(NULL, &tz);
|
||||
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
|
||||
|
||||
ret = settimeofday(&timeSet, &tz);
|
||||
time(&tStart);
|
||||
sleep(2); /* 2, no special meaning */
|
||||
time(&tEnd);
|
||||
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
|
||||
|
||||
struct tm *tmStart = localtime(&tStart);
|
||||
strftime(cTime, sizeof(cTime), "%H:%M:%S", tmStart);
|
||||
ICUNIT_ASSERT_STRING_EQUAL(cTime, "07:59:59", 0);
|
||||
LOG("\n time_t=%lld, first time:%s", tStart, cTime);
|
||||
struct tm *tmEnd = localtime(&tEnd);
|
||||
strftime(cTime, sizeof(cTime), "%H:%M:%S", tmEnd);
|
||||
ICUNIT_ASSERT_STRING_EQUAL(cTime, "08:00:01", 0);
|
||||
LOG("\n time_t=%lld, first time:%s", tEnd, cTime);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* *
|
||||
* @tc.number SUB_KERNEL_TIME_LOCALTIMER_001
|
||||
* @tc.name localtime_r api base test
|
||||
@@ -579,6 +615,7 @@ void PosixTimeFuncTest(void)
|
||||
#if (LOSCFG_LIBC_MUSL == 1)
|
||||
RUN_ONE_TESTCASE(testTimeLocaltime001);
|
||||
RUN_ONE_TESTCASE(testTimeLocaltime002);
|
||||
RUN_ONE_TESTCASE(testTimeLocaltime003);
|
||||
RUN_ONE_TESTCASE(testTimeLocaltimer001);
|
||||
RUN_ONE_TESTCASE(testTimeLocaltimer002);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user