bugfix and changelog for Linux getUptime

This commit is contained in:
Robin Müller 2023-03-15 12:21:50 +01:00
parent dc7afc5415
commit 1f36c082ef
No known key found for this signature in database
GPG Key ID: 71B58F8A3CDFA9AC
2 changed files with 11 additions and 4 deletions

View File

@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
# [unreleased] # [unreleased]
## Fixes
- Linux OSAL `getUptime` fix: Check validity of `/proc/uptime` file before reading uptime.
# [v6.0.0] 2023-02-10 # [v6.0.0] 2023-02-10
## Fixes ## Fixes

View File

@ -76,15 +76,18 @@ timeval Clock::getUptime() {
} }
ReturnValue_t Clock::getUptime(timeval* uptime) { ReturnValue_t Clock::getUptime(timeval* uptime) {
// TODO This is not posix compatible and delivers only seconds precision
// Linux specific file read but more precise.
double uptimeSeconds; double uptimeSeconds;
if (std::ifstream("/proc/uptime", std::ios::in) >> uptimeSeconds) { std::ifstream ifile("/proc/uptime");
if (ifile.bad()) {
return returnvalue::FAILED;
}
if (ifile >> uptimeSeconds) {
uptime->tv_sec = uptimeSeconds; uptime->tv_sec = uptimeSeconds;
uptime->tv_usec = uptimeSeconds * (double)1e6 - (uptime->tv_sec * 1e6); uptime->tv_usec = uptimeSeconds * (double)1e6 - (uptime->tv_sec * 1e6);
}
return returnvalue::OK; return returnvalue::OK;
} }
return returnvalue::FAILED;
}
// Wait for new FSFW Clock function delivering seconds uptime. // Wait for new FSFW Clock function delivering seconds uptime.
// uint32_t Clock::getUptimeSeconds() { // uint32_t Clock::getUptimeSeconds() {