Fix Linux 32-bits encoded timestamp limitation - 2038K Bug #35
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Historically time_t has been encoded on Linux as 32-bits signed
integer and with Linux 32 bits <5.6 it is still encoded as a 32-bits
signed integer. As a consequence beyond January 2038 gettimeofday()
will start returning a negative timestamp and this negative timestamp
will be supplied to pthread_cond_timedwait() by MediaSDK. The Linux
kernel will detects the invalid timestamp and return -EINVAL making
MediaSDK unusable.
This patch makes use of the 'clock_gettime(CLOCK_MONOTONIC, ...)' to
get current time since boot and configure the condition variable to
use the same clock.
Since this patch only impact the timestamped used for the
pthread_cond_timedwait() calls it has no impact in the other
components.
Signed-off-by: Jeremy Compostella jeremy.compostella@intel.com