[Mesa-dev] [PATCH 03/25] threads: update for late C11 changes
Emil Velikov
emil.l.velikov at gmail.com
Mon Oct 23 11:15:17 UTC 2017
Hi Nicolai,
On 22 October 2017 at 20:07, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> C11 threads were changed to use struct timespec instead of xtime, and
> thrd_sleep got a second argument.
>
As xtime was replaced with timespec there's a couple of odd bits in the code.
> See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1554.htm and
> http://en.cppreference.com/w/c/thread/{thrd_sleep,cnd_timedwait,mtx_timedlock}
>
> Note that cnd_timedwait is spec'd to be relative to TIME_UTC / CLOCK_REALTIME.
>
> Cc: Jose Fonseca <jfonseca at vmware.com>
> ---
> include/c11/threads.h | 11 -----------
> include/c11/threads_posix.h | 39 +++++++++++++++------------------------
> include/c11/threads_win32.h | 37 +++++++++++++++++++------------------
> src/egl/drivers/dri2/egl_dri2.c | 24 +++++++++++++-----------
> 4 files changed, 47 insertions(+), 64 deletions(-)
>
> diff --git a/include/c11/threads.h b/include/c11/threads.h
> index 573348d8091..3c3f23a8ab8 100644
> --- a/include/c11/threads.h
> +++ b/include/c11/threads.h
> @@ -23,42 +23,31 @@
> * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
> * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
> * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
> * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> * DEALINGS IN THE SOFTWARE.
> */
> #ifndef EMULATED_THREADS_H_INCLUDED_
> #define EMULATED_THREADS_H_INCLUDED_
>
> #include <time.h>
> -#ifdef _MSC_VER
> -#include <thr/xtimec.h> // for xtime
> -#endif
>
> #ifndef TIME_UTC
> #define TIME_UTC 1
> #endif
>
> #include "c99_compat.h" /* for `inline` */
>
> /*---------------------------- types ----------------------------*/
> typedef void (*tss_dtor_t)(void*);
> typedef int (*thrd_start_t)(void*);
>
> -#ifndef _MSC_VER
> -struct xtime {
> - time_t sec;
> - long nsec;
> -};
> -typedef struct xtime xtime;
> -#endif
> -
We don't have a fall-back declaration of the struct, yet we use it
below and provide a timespec_get() implementation.
I'd imagine you haven't tested this on Windows (hence Jose in CC)?
Quick search suggests that MSVC 2015 was the first one that introduces
the struct and timespec_get.
If we're safe as-is, please add a comment with some details - I'd
imagine Jose had better knowledge in the area.
> /*-------------------- 7.25.7 Time functions --------------------*/
> // 7.25.6.1
> +#if 0
I'd just drop the hunk mentioning that timespec_get() is part of time.h
Thank
Emil
More information about the mesa-dev
mailing list