#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2016 Joyent, Inc.
#

#
# Definitions found in stddef.h
#

#
# Types
#
type | cnd_t		| threads.h | -ALL +C11
type | thrd_t		| threads.h | -ALL +C11
type | tss_t		| threads.h | -ALL +C11
type | mtx_t		| threads.h | -ALL +C11
type | once_flag	| threads.h | -ALL +C11
type | tss_dtor_t	| threads.h | -ALL +C11
type | thrd_start_t	| threads.h | -ALL +C11

#
# Values.
#
value | mtx_plain	| int	| threads.h	| -ALL +C11
value | mtx_recursive	| int	| threads.h	| -ALL +C11
value | mtx_timed	| int	| threads.h	| -ALL +C11
value | thrd_success	| int	| threads.h	| -ALL +C11
value | thrd_error	| int	| threads.h	| -ALL +C11
value | thrd_busy	| int	| threads.h	| -ALL +C11
value | thrd_timedout	| int	| threads.h	| -ALL +C11
value | thrd_nomem	| int	| threads.h	| -ALL +C11

#
# Defines
#
define | thread_local		|	| threads.h	| -ALL +C11
define | ONCE_FLAG_INIT 	|	| threads.h	| -ALL +C11
define | TSS_DTOR_ITERATIONS	|	| threads.h	| -ALL +C11

#
# Functions
#
func | call_once					|\
	void						|\
	once_flag *; void (*)(void)			|\
	threads.h | -ALL +C11

func | cnd_broadcast					|\
	int						|\
	cnd_t *						|\
	threads.h | -ALL +C11

func | cnd_destroy					|\
	void						|\
	cnd_t *						|\
	threads.h | -ALL +C11

func | cnd_init						|\
	int						|\
	cnd_t *						|\
	threads.h | -ALL +C11

func | cnd_signal					|\
	int						|\
	cnd_t *						|\
	threads.h | -ALL +C11

func | cnd_timedwait					|\
	int						|\
	cnd_t *; mtx_t *; const struct timespec *	|\
	threads.h | -ALL +C11

func | cnd_wait						|\
	int						|\
	cnd_t *; mtx_t *				|\
	threads.h | -ALL +C11

func | mtx_destroy					|\
	void						|\
	mtx_t *						|\
	threads.h | -ALL +C11

func | mtx_init						|\
	int						|\
	mtx_t *; int					|\
	threads.h | -ALL +C11

func | mtx_lock						|\
	int						|\
	mtx_t *						|\
	threads.h | -ALL +C11

func | mtx_timedlock					|\
	int						|\
	mtx_t *; const struct timespec *		|\
	threads.h | -ALL +C11

func | mtx_trylock					|\
	int						|\
	mtx_t *						|\
	threads.h | -ALL +C11

func | mtx_unlock					|\
	int						|\
	mtx_t *						|\
	threads.h | -ALL +C11

func | thrd_create					|\
	int						|\
	thrd_t *; thrd_start_t; void *			|\
	threads.h | -ALL +C11

func | thrd_current					|\
	thrd_t						|\
	void						|\
	threads.h | -ALL +C11

func | thrd_detach					|\
	int						|\
	thrd_t						|\
	threads.h | -ALL +C11

func | thrd_equal					|\
	int						|\
	thrd_t; thrd_t					|\
	threads.h | -ALL +C11

func | thrd_exit					|\
	void						|\
	int						|\
	threads.h | -ALL +C11

func | thrd_join					|\
	int						|\
	thrd_t; int *					|\
	threads.h | -ALL +C11

func | thrd_sleep					|\
	int						|\
	const struct timespec *; struct timespec *	|\
	threads.h | -ALL +C11

func | thrd_yield				|\
	void					|\
	void					|\
	threads.h | -ALL +C11

func | tss_create				|\
	int					|\
	tss_t *; tss_dtor_t			|\
	threads.h | -ALL +C11

func | tss_delete				|\
	void					|\
	tss_t					|\
	threads.h | -ALL +C11

func | tss_get					|\
	void *					|\
	tss_t					|\
	threads.h | -ALL +C11

func | tss_set					|\
	int					|\
	tss_t; void *				|\
	threads.h | -ALL +C11