C11 Compatibility Summary

Fuchsia's libc supports the functions listed in Appendix B of the C11 standard as documented below.

B.1 Diagnostics <assert.h>

FunctionSupported
void assert(scalar expression);Yes

B.2 Complex <complex.h>

FunctionSupported
double complex cacos(double complex z);Yes
float complex cacosf(float complex z);Yes
long double complex cacosl(long double complex z);Yes
double complex casin(double complex z);Yes
float complex casinf(float complex z);Yes
long double complex casinl(long double complex z);Yes
double complex catan(double complex z);Yes
float complex catanf(float complex z);Yes
long double complex catanl(long double complex z);Yes
double complex ccos(double complex z);Yes
float complex ccosf(float complex z);Yes
long double complex ccosl(long double complex z);Yes
double complex csin(double complex z);Yes
float complex csinf(float complex z);Yes
long double complex csinl(long double complex z);Yes
double complex ctan(double complex z);Yes
float complex ctanf(float complex z);Yes
long double complex ctanl(long double complex z);Yes
double complex cacosh(double complex z);Yes
float complex cacoshf(float complex z);Yes
long double complex cacoshl(long double complex z);Yes
double complex casinh(double complex z);Yes
float complex casinhf(float complex z);Yes
long double complex casinhl(long double complex z);Yes
double complex catanh(double complex z);Yes
float complex catanhf(float complex z);Yes
long double complex catanhl(long double complex z);Yes
double complex ccosh(double complex z);Yes
float complex ccoshf(float complex z);Yes
long double complex ccoshl(long double complex z);Yes
double complex csinh(double complex z);Yes
float complex csinhf(float complex z);Yes
long double complex csinhl(long double complex z);Yes
double complex ctanh(double complex z);Yes
float complex ctanhf(float complex z);Yes
long double complex ctanhl(long double complex z);Yes
double complex cexp(double complex z);Yes
float complex cexpf(float complex z);Yes
long double complex cexpl(long double complex z);Yes
double complex clog(double complex z);Yes
float complex clogf(float complex z);Yes
long double complex clogl(long double complex z);Yes
double cabs(double complex z);Yes
float cabsf(float complex z);Yes
long double cabsl(long double complex z);Yes
double complex cpow(double complex x, double complex y);Yes
float complex cpowf(float complex x, float complex y);Yes
long double complex cpowl(long double complex x, long double complex y);Yes
double complex csqrt(double complex z);Yes
float complex csqrtf(float complex z);Yes
long double complex csqrtl(long double complex z);Yes
double carg(double complex z);Yes
float cargf(float complex z);Yes
long double cargl(long double complex z);Yes
double cimag(double complex z);Yes
float cimagf(float complex z);Yes
long double cimagl(long double complex z);Yes
double complex CMPLX(double x, double y);No
float complex CMPLXF(float x, float y);No
long double complex CMPLXL(long double x, long double y);No
double complex conj(double complex z);Yes
float complex conjf(float complex z);Yes
long double complex conjl(long double complex z);Yes
double complex cproj(double complex z);Yes
float complex cprojf(float complex z);Yes
long double complex cprojl(long double complex z);Yes
double creal(double complex z);Yes
float crealf(float complex z);Yes
long double creall(long double complex z);Yes

B.3 Character handling <ctype.h>

FunctionSupported
int isalnum(int c);Yes
int isalpha(int c);Yes
int isblank(int c);Yes
int iscntrl(int c);Yes
int isdigit(int c);Yes
int isgraph(int c);Yes
int islower(int c);Yes
int isprint(int c);Yes
int ispunct(int c);Yes
int isspace(int c);Yes
int isupper(int c);Yes
int isxdigit(int c);Yes
int tolower(int c);Yes
int toupper(int c);Yes

B.4 Errors <errno.h>

FunctionSupported

B.5 Floating-point environment <fenv.h>

FunctionSupported
int feclearexcept(int excepts);No
int fegetexceptflag(fexcept_t *flagp, int excepts);No
int feraiseexcept(int excepts);No
int fesetexceptflag(const fexcept_t *flagp, int excepts);No
int fetestexcept(int excepts);No
int fegetround(void);Yes
int fesetround(int round);Yes
int fegetenv(fenv_t *envp);No
int feholdexcept(fenv_t *envp);No
int fesetenv(const fenv_t *envp);No
int feupdateenv(const fenv_t *envp);No

B.6 Characteristics of floating types <float.h>

FunctionSupported

B.7 Format conversion of integer types <inttypes.h>

FunctionSupported
intmax_t imaxabs(intmax_t j);Yes
imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom);No
intmax_t strtoimax(const char * restrict nptr, char ** restrict endptr, int base);Yes
uintmax_t strtoumax(const char * restrict nptr, char ** restrict endptr, int base);Yes
intmax_t wcstoimax(const wchar_t * restrict nptr, wchar_t ** restrict endptr, int base);No
uintmax_t wcstoumax(const wchar_t * restrict nptr, wchar_t ** restrict endptr, int base);No

B.8 Alternative spellings <iso646.h>

FunctionSupported

B.9 Sizes of integer types <limits.h>

FunctionSupported

B.10 Localization <locale.h>

FunctionSupported
char *setlocale(int category, const char *locale);Yes
struct lconv *localeconv(void);Yes

B.11 Mathematics <math.h>

FunctionSupported
int fpclassify(real-floating x);Yes
int isfinite(real-floating x);Yes
int isinf(real-floating x);Yes
int isnan(real-floating x);Yes
int isnormal(real-floating x);Yes
int signbit(real-floating x);Yes
double acos(double x);Yes
float acosf(float x);Yes
long double acosl(long double x);Yes
double asin(double x);Yes
float asinf(float x);Yes
long double asinl(long double x);Yes
double atan(double x);Yes
float atanf(float x);Yes
long double atanl(long double x);Yes
double atan2(double y, double x);Yes
float atan2f(float y, float x);Yes
long double atan2l(long double y, long double x);Yes
double cos(double x);Yes
float cosf(float x);Yes
long double cosl(long double x);Yes
double sin(double x);Yes
float sinf(float x);Yes
long double sinl(long double x);Yes
double tan(double x);Yes
float tanf(float x);Yes
long double tanl(long double x);Yes
double acosh(double x);Yes
float acoshf(float x);Yes
long double acoshl(long double x);Yes
double asinh(double x);Yes
float asinhf(float x);Yes
long double asinhl(long double x);Yes
double atanh(double x);Yes
float atanhf(float x);Yes
long double atanhl(long double x);Yes
double cosh(double x);Yes
float coshf(float x);Yes
long double coshl(long double x);Yes
double sinh(double x);Yes
float sinhf(float x);Yes
long double sinhl(long double x);Yes
double tanh(double x);Yes
float tanhf(float x);Yes
long double tanhl(long double x);Yes
double exp(double x);Yes
float expf(float x);Yes
long double expl(long double x);Yes
double exp2(double x);Yes
float exp2f(float x);Yes
long double exp2l(long double x);Yes
double expm1(double x);Yes
float expm1f(float x);Yes
long double expm1l(long double x);Yes
double frexp(double value, int *exp);Yes
float frexpf(float value, int *exp);Yes
long double frexpl(long double value, int *exp);Yes
int ilogb(double x);Yes
int ilogbf(float x);Yes
int ilogbl(long double x);Yes
double ldexp(double x, int exp);Yes
float ldexpf(float x, int exp);Yes
long double ldexpl(long double x, int exp);Yes
double log(double x);Yes
float logf(float x);Yes
long double logl(long double x);Yes
double log10(double x);Yes
float log10f(float x);Yes
long double log10l(long double x);Yes
double log1p(double x);Yes
float log1pf(float x);Yes
long double log1pl(long double x);Yes
double log2(double x);Yes
float log2f(float x);Yes
long double log2l(long double x);Yes
double logb(double x);Yes
float logbf(float x);Yes
long double logbl(long double x);Yes
double modf(double value, double *iptr);Yes
float modff(float value, float *iptr);Yes
long double modfl(long double value, long double *iptr);Yes
double scalbn(double x, int n);Yes
float scalbnf(float x, int n);Yes
long double scalbnl(long double x, int n);Yes
double scalbln(double x, long int n);Yes
float scalblnf(float x, long int float cbrtf(float x);Yes
long double cbrtl(long double x);Yes
double fabs(double x);Yes
float fabsf(float x);Yes
long double fabsl(long double x);Yes
double hypot(double x, double y);Yes
float hypotf(float x, float y);Yes
long double hypotl(long double x, long double y);Yes
double pow(double x, double y);Yes
float powf(float x, float y);Yes
long double powl(long double x, long double y);Yes
double sqrt(double x);Yes
float sqrtf(float x);Yes
long double sqrtl(long double x);Yes
double erf(double x);Yes
float erff(float x);Yes
long double erfl(long double x);Yes
double erfc(double x);Yes
float erfcf(float x);Yes
long double erfcl(long double x);Yes
double lgamma(double x);Yes
float lgammaf(float x);Yes
long double lgammal(long double x);Yes
double tgamma(double x);Yes
float tgammaf(float x);Yes
long double tgammal(long double x);Yes
double ceil(double x);Yes
float ceilf(float x);Yes
long double ceill(long double x);Yes
double floor(double x);Yes
float floorf(float x);Yes
long double floorl(long double x);Yes
double nearbyint(double x);Yes
float nearbyintf(float x);Yes
long double nearbyintl(long double x);Yes
double rint(double x);Yes
float rintf(float x);Yes
long double rintl(long double x);Yes
long int lrint(double x);Yes
long int lrintf(float x);Yes
long int lrintl(long double x);Yes
long long int llrint(double x);Yes
long long int llrintf(float x);Yes
long long int llrintl(long double x);Yes
double round(double x);Yes
float roundf(float x);Yes
long double roundl(long double x);Yes
long int lround(double x);Yes
long int lroundf(float x);Yes
long int lroundl(long double x);Yes
long long int llround(double x);Yes
long long int llroundf(float x);Yes
long long int llroundl(long double x);Yes
double trunc(double x);Yes
float truncf(float x);Yes
long double truncl(long double x);Yes
double fmod(double x, double y);Yes
float fmodf(float x, float y);Yes
long double fmodl(long double x, long double y);Yes
double remainder(double x, double y);Yes
float remainderf(float x, float y);Yes
long double remainderl(long double x, long double y);Yes
double remquo(double x, double y, int *quo);Yes
float remquof(float x, float y, int *quo);Yes
long double remquol(long double x, long double y, int *quo);Yes
double copysign(double x, double y);Yes
float copysignf(float x, float y);Yes
long double copysignl(long double x, long double y);Yes
double nan(const char *tagp);Yes
float nanf(const char *tagp);Yes
long double nanl(const char *tagp);Yes
double nextafter(double x, double y);Yes
float nextafterf(float x, float y);Yes
long double nextafterl(long double x, long double y);Yes
double nexttoward(double x, long double y);Yes
float nexttowardf(float x, long double y);Yes
long double nexttowardl(long double x, long double y);Yes
double fdim(double x, double y);Yes
float fdimf(float x, float y);Yes
long double fdiml(long double x, long double y);Yes
double fmax(double x, double y);Yes
float fmaxf(float x, float y);Yes
long double fmaxl(long double x, long double y);Yes
double fmin(double x, double y);Yes
float fminf(float x, float y);Yes
long double fminl(long double x, long double y);Yes
double fma(double x, double y, double z);Yes
float fmaf(float x, float y, float z);Yes
long double fmal(long double x, long double y, long double z);Yes
int isgreater(real-floating x, real-floating y);Yes
int isgreaterequal(real-floating x, real-floating y);Yes
int isless(real-floating x, real-floating y);Yes
int islessequal(real-floating x, real-floating y);Yes
int islessgreater(real-floating x, real-floating y);Yes
int isunordered(real-floating x, real-floating y);Yes

B.12 Nonlocal jumps <setjmp.h>

FunctionSupported
int setjmp(jmp_buf env);Yes
_Noreturn void longjmp(jmp_buf env, int val);Yes

B.13 Signal handling <signal.h>

FunctionSupported
void (*signal(int sig, void (*func)(int)))(int);Yes
int raise(int sig);Yes

B.14 Alignment <stdalign.h>

FunctionSupported

B.15 Variable arguments <stdarg.h>

FunctionSupported
type va_arg(va_list ap, type);Yes
void va_copy(va_list dest, va_list src);Yes
void va_end(va_list ap);Yes
void va_start(va_list ap, parmN);Yes

B.16 Atomics <stdatomic.h>

FunctionSupported
void atomic_init(volatile A *obj, C value);Yes
type kill_dependency(type y);Yes
void atomic_thread_fence(memory_order order);Yes
void atomic_signal_fence(memory_order order);Yes
_Bool atomic_is_lock_free(const volatile A *obj);Yes
void atomic_store(volatile A *object, C desired);Yes
void atomic_store_explicit(volatile A *object, C desired, memory_order order);Yes
C atomic_load(volatile A *object);Yes
C atomic_load_explicit(volatile A *object, memory_order order);Yes
C atomic_exchange(volatile A *object, C desired);Yes
C atomic_exchange_explicit(volatile A *object, C desired, memory_order order);Yes
_Bool atomic_compare_exchange_strong(volatile A *object, C *expected, C desired);Yes
_Bool atomic_compare_exchange_strong_explicit(volatile A *object, C *expected, C desired, memory_order success, memory_order failure);Yes
_Bool atomic_compare_exchange_weak(volatile A *object, C *expected, C desired);Yes
_Bool atomic_compare_exchange_weak_explicit(volatile A *object, C *expected, C desired, memory_order success, memory_order failure);Yes
C atomic_fetch_key(volatile A *object, M operand);Yes
C atomic_fetch_key_explicit(volatile A *object, M operand, memory_order order);Yes
_Bool atomic_flag_test_and_set(volatile atomic_flag *object);Yes
_Bool atomic_flag_test_and_set_explicit(volatile atomic_flag *object, memory_order order);Yes
void atomic_flag_clear(volatile atomic_flag *object);Yes
void atomic_flag_clear_explicit(volatile atomic_flag *object, memory_order order);Yes

B.17 Boolean type and values <stdbool.h>

FunctionSupported

B.18 Common definitions <stddef.h>

FunctionSupported

B.19 Integer types <stdint.h>

FunctionSupported

B.20 Input/output <stdio.h>

FunctionSupported
int remove(const char *filename);Yes
int rename(const char *old, const char *new);Yes
FILE *tmpfile(void);Yes
char *tmpnam(char *s);Yes
int fclose(FILE *stream);Yes
int fflush(FILE *stream);Yes
FILE *fopen(const char * restrict filename, const char * restrict mode);Yes
FILE *freopen(const char * restrict filename, const char * restrict mode, FILE * restrict stream);Yes
void setbuf(FILE * restrict stream, char * restrict buf);Yes
int setvbuf(FILE * restrict stream, char * restrict buf, int mode, size_t size);Yes
int fprintf(FILE * restrict stream, const char * restrict format, ...);Yes
int fscanf(FILE * restrict stream, const char * restrict format, ...);Yes
int printf(const char * restrict format, ...);Yes
int scanf(const char * restrict format, ...);Yes
int snprintf(char * restrict s, size_t n, const char * restrict format, ...);Yes
int sprintf(char * restrict s, const char * restrict format, ...);Yes
int sscanf(const char * restrict s, const char * restrict format, ...);Yes
int vfprintf(FILE * restrict stream, const char * restrict format, va_list arg);Yes
int vfscanf(FILE * restrict stream, const char * restrict format, va_list arg);No
int vprintf(const char * restrict format, va_list arg);Yes
int vscanf(const char * restrict format, va_list arg);No
int vsnprintf(char * restrict s, size_t n, const char * restrict format, va_list arg);Yes
int vsprintf(char * restrict s, const char * restrict format, va_list arg);Yes
int vsscanf(const char * restrict s, const char * restrict format, va_list arg);Yes
int fgetc(FILE *stream);Yes
char *fgets(char * restrict s, int n, FILE * restrict stream);Yes
int fputc(int c, FILE *stream);Yes
int fputs(const char * restrict s, FILE * restrict stream);Yes
int getc(FILE *stream);Yes
int getchar(void);Yes
int putc(int c, FILE *stream);Yes
int putchar(int c);Yes
int puts(const char *s);Yes
int ungetc(int c, FILE *stream);Yes
size_t fread(void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);Yes
size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);Yes
int fgetpos(FILE * restrict stream, fpos_t * restrict pos);No
int fseek(FILE *stream, long int offset, int whence);Yes
int fsetpos(FILE *stream, const fpos_t *pos);No
long int ftell(FILE *stream);Yes
void rewind(FILE *stream);Yes
void clearerr(FILE *stream);Yes
int feof(FILE *stream);Yes
int ferror(FILE *stream);Yes
void perror(const char *s);Yes
errno_t tmpfile_s(FILE * restrict * restrict streamptr);No
errno_t tmpnam_s(char *s, rsize_t maxsize);No
errno_t fopen_s(FILE * restrict * restrict streamptr, const char * restrict filename, const char * restrict mode);No
errno_t freopen_s(FILE * restrict * restrict newstreamptr, const char * restrict filename, const char * restrict mode, FILE * restrict stream);No
int fprintf_s(FILE * restrict stream, const char * restrict format, ...);No
int fscanf_s(FILE * restrict stream, const char * restrict format, ...);No
int printf_s(const char * restrict format, ...);No
int scanf_s(const char * restrict format, ...);No
int snprintf_s(char * restrict s, rsize_t n, const char * restrict format, ...);No
int sprintf_s(char * restrict s, rsize_t n, const char * restrict format, ...);No
int sscanf_s(const char * restrict s, const char * restrict format, ...);No
int vfprintf_s(FILE * restrict stream, const char * restrict format, va_list arg);No
int vfscanf_s(FILE * restrict stream, const char * restrict format, va_list arg);No
int vprintf_s(const char * restrict format, va_list arg);No
int vscanf_s(const char * restrict format, va_list arg);No
int vsnprintf_s(char * restrict s, rsize_t n, const char * restrict format, va_list arg);No
int vsprintf_s(char * restrict s, rsize_t n, const char * restrict format, va_list arg);No
int vsscanf_s(const char * restrict s, const char * restrict format, va_list arg);No
char *gets_s(char *s, rsize_t n);No

B.21 General utilities <stdlib.h>

FunctionSupported
double atof(const char *nptr);Yes
int atoi(const char *nptr);Yes
long int atol(const char *nptr);Yes
long long int atoll(const char *nptr);Yes
double strtod(const char * restrict nptr, char ** restrict endptr);Yes
float strtof(const char * restrict nptr, char ** restrict endptr);Yes
long double strtold(const char * restrict nptr, char ** restrict endptr);Yes
long int strtol(const char * restrict nptr, char ** restrict endptr, int base);Yes
long long int strtoll(const char * restrict nptr, char ** restrict endptr, int base);Yes
unsigned long int strtoul(const char * restrict nptr, char ** restrict endptr, int base);Yes
unsigned long long int strtoull(const char * restrict nptr, char ** restrict endptr, int base);Yes
int rand(void);Yes
void srand(unsigned int seed);Yes
void *aligned_alloc(size_t alignment, size_t size);Yes
void *calloc(size_t nmemb, size_t size);Yes
void free(void *ptr);Yes
void *malloc(size_t size);Yes
void *realloc(void *ptr, size_t size);Yes
_Noreturn void abort(void);Yes
int atexit(void (*func)(void));Yes
int at_quick_exit(void (*func)(void));No
_Noreturn void exit(int status);Yes
_Noreturn void _Exit(int status);No
char *getenv(const char *name);Yes
_Noreturn void quick_exit(int status);No
int system(const char *string);Yes
void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));Yes
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));Yes
int abs(int j);Yes
long int labs(long int j);Yes
long long int llabs(long long int j);Yes
div_t div(int numer, int denom);Yes
ldiv_t ldiv(long int numer, long int denom);Yes
lldiv_t lldiv(long long int numer, long long int denom);Yes
int mblen(const char *s, size_t n);Yes
int mbtowc(wchar_t * restrict pwc, const char * restrict s, size_t n);Yes
int wctomb(char *s, wchar_t wchar);Yes
size_t mbstowcs(wchar_t * restrict pwcs, const char * restrict s, size_t n);Yes
size_t wcstombs(char * restrict s, const wchar_t * restrict pwcs, size_t n);Yes
constraint_handler_t set_constraint_handler_s(constraint_handler_t handler);No
void abort_handler_s(const char * restrict msg, void * restrict ptr, errno_t error);No
void ignore_handler_s(const char * restrict msg, void * restrict ptr, errno_t error);No
errno_t getenv_s(size_t * restrict len, char * restrict value, rsize_t maxsize, const char * restrict name);No
void *bsearch_s(const void *key, const void *base, rsize_t nmemb, rsize_t size, int (*compar)(const void *k, const void *y, void *context), void *context);No
errno_t qsort_s(void *base, rsize_t nmemb, rsize_t size, int (*compar)(const void *x, const void *y, void *context), void *context);No
errno_t wctomb_s(int * restrict status, char * restrict s, rsize_t smax, wchar_t wc);No
errno_t mbstowcs_s(size_t * restrict retval, wchar_t * restrict dst, rsize_t dstmax, const char * restrict src, rsize_t len);No
errno_t wcstombs_s(size_t * restrict retval, char * restrict dst, rsize_t dstmax, const wchar_t * restrict src, rsize_t len);No

B.22 _Noreturn <stdnoreturn.h>

FunctionSupported

B.23 String handling <string.h>

FunctionSupported
void *memcpy(void * restrict s1, const void * restrict s2, size_t n);Yes
void *memmove(void *s1, const void *s2, size_t n);Yes
char *strcpy(char * restrict s1, const char * restrict s2);Yes
char *strncpy(char * restrict s1, const char * restrict s2, size_t n);Yes
char *strcat(char * restrict s1, const char * restrict s2);Yes
char *strncat(char * restrict s1, const char * restrict s2, size_t n);Yes
int memcmp(const void *s1, const void *s2, size_t n);Yes
int strcmp(const char *s1, const char *s2);Yes
int strcoll(const char *s1, const char *s2);Yes
int strncmp(const char *s1, const char *s2, size_t n);Yes
size_t strxfrm(char * restrict s1, const char * restrict s2, size_t n);Yes
void *memchr(const void *s, int c, size_t n);Yes
char *strchr(const char *s, int c);Yes
size_t strcspn(const char *s1, const char *s2);Yes
char *strpbrk(const char *s1, const char *s2);Yes
char *strrchr(const char *s, int c);Yes
size_t strspn(const char *s1, const char *s2);Yes
char *strstr(const char *s1, const char *s2);Yes
char *strtok(char * restrict s1, const char * restrict s2);Yes
void *memset(void *s, int c, size_t n);Yes
char *strerror(int errnum);Yes
size_t strlen(const char *s);Yes
errno_t memcpy_s(void * restrict s1, rsize_t s1max, const void * restrict s2, rsize_t n);No
errno_t memmove_s(void *s1, rsize_t s1max, const void *s2, rsize_t n);No
errno_t strcpy_s(char * restrict s1, rsize_t s1max, const char * restrict s2);No
errno_t strncpy_s(char * restrict s1, rsize_t s1max, const char * restrict s2, rsize_t n);No
errno_t strcat_s(char * restrict s1, rsize_t s1max, const char * restrict s2);No
errno_t strncat_s(char * restrict s1, rsize_t s1max, const char * restrict s2, rsize_t n);No
char *strtok_s(char * restrict s1, rsize_t * restrict s1max, const char * restrict s2, char ** restrict ptr);No
errno_t memset_s(void *s, rsize_t smax, int c, rsize_t n);No
errno_t strerror_s(char *s, rsize_t maxsize, errno_t errnum);No
size_t strerrorlen_s(errno_t errnum);No
size_t strnlen_s(const char *s, size_t maxsize);No

B.24 Type-generic math <tgmath.h>

FunctionSupported

B.25 Threads <threads.h>

FunctionSupported
void call_once(once_flag *flag, void (*func)(void));No
int cnd_broadcast(cnd_t *cond);Yes
void cnd_destroy(cnd_t *cond);Yes
int cnd_init(cnd_t *cond);Yes
int cnd_signal(cnd_t *cond);Yes
int cnd_timedwait(cnd_t *restrict cond, mtx_t *restrict mtx, const struct timespec *restrict ts);Yes
int cnd_wait(cnd_t *cond, mtx_t *mtx);Yes
void mtx_destroy(mtx_t *mtx);Yes
int mtx_init(mtx_t *mtx, int type);Yes
int mtx_lock(mtx_t *mtx);Yes
int mtx_timedlock(mtx_t *restrict mtx, const struct timespec *restrict ts);Yes
int mtx_trylock(mtx_t *mtx);Yes
int mtx_unlock(mtx_t *mtx);Yes
int thrd_create(thrd_t *thr, thrd_start_t func, void *arg);Yes
thrd_t thrd_current(void);Yes
int thrd_detach(thrd_t thr);Yes
int thrd_equal(thrd_t thr0, thrd_t thr1);No
_Noreturn void thrd_exit(int res);No
int thrd_join(thrd_t thr, int *res);Yes
int thrd_sleep(const struct timespec *duration, struct timespec *remaining);No
void thrd_yield(void);Yes
int tss_create(tss_t *key, tss_dtor_t dtor);No
void tss_delete(tss_t key);No
void *tss_get(tss_t key);No
int tss_set(tss_t key, void *val);No

B.26 Date and time <time.h>

FunctionSupported
clock_t clock(void);Yes
double difftime(time_t time1, time_t time0);Yes
time_t mktime(struct tm *timeptr);Yes
time_t time(time_t *timer);Yes
int timespec_get(timespec *ts, int base);Yes
char *asctime(const struct tm *timeptr);No
char *ctime(const time_t *timer);Yes
struct tm *gmtime(const time_t *timer);Yes
struct tm *localtime(const time_t *timer);Yes
size_t strftime(char * restrict s, size_t maxsize, const char * restrict format, const struct tm * restrict timeptr);Yes
errno_t asctime_s(char *s, rsize_t maxsize, const struct tm *timeptr);No
errno_t ctime_s(char *s, rsize_t maxsize, const time_t *timer);No
struct tm *gmtime_s(const time_t * restrict timer, struct tm * restrict result);No
struct tm *localtime_s(const time_t * restrict timer, struct tm * restrict result);No

B.27 Unicode utilities <uchar.h>

FunctionSupported
size_t mbrtoc16(char16_t * restrict pc16, const char * restrict s, size_t n, mbstate_t * restrict ps);No
size_t c16rtomb(char * restrict s, char16_t c16, mbstate_t * restrict ps);No
size_t mbrtoc32(char32_t * restrict pc32, const char * restrict s, size_t n, mbstate_t * restrict ps);No
size_t c32rtomb(char * restrict s, char32_t c32, mbstate_t * restrict ps);No

B.28 Extended multibyte/wide character utilities <wchar.h>

FunctionSupported
int fwprintf(FILE * restrict stream, const wchar_t * restrict format, ...);No
int fwscanf(FILE * restrict stream, const wchar_t * restrict format, ...);No
int swprintf(wchar_t * restrict s, size_t n, const wchar_t * restrict format, ...);Yes
int swscanf(const wchar_t * restrict s, const wchar_t * restrict format, ...);No
int vfwprintf(FILE * restrict stream, const wchar_t * restrict format, va_list arg);No
int vfwscanf(FILE * restrict stream, const wchar_t * restrict format, va_list arg);No
int vswprintf(wchar_t * restrict s, size_t n, const wchar_t * restrict format, va_list arg);No
int vswscanf(const wchar_t * restrict s, const wchar_t * restrict format, va_list arg);No
int vwprintf(const wchar_t * restrict format, va_list arg);No
int vwscanf(const wchar_t * restrict format, va_list arg);No
int wprintf(const wchar_t * restrict format, ...);No
int wscanf(const wchar_t * restrict format, ...);No
wint_t fgetwc(FILE *stream);Yes
wchar_t *fgetws(wchar_t * restrict s, int n, FILE * restrict stream);No
wint_t fputwc(wchar_t c, FILE *stream);No
int fputws(const wchar_t * restrict s, FILE * restrict stream);No
int fwide(FILE *stream, int mode);No
wint_t getwc(FILE *stream);No
wint_t getwchar(void);No
wint_t putwc(wchar_t c, FILE *stream);No
wint_t putwchar(wchar_t c);No
wint_t ungetwc(wint_t c, FILE *stream);No
double wcstod(const wchar_t * restrict nptr, wchar_t ** restrict endptr);Yes
float wcstof(const wchar_t * restrict nptr, wchar_t ** restrict endptr);Yes
long double wcstold(const wchar_t * restrict nptr, wchar_t ** restrict endptr);Yes
long int wcstol(const wchar_t * restrict nptr, wchar_t ** restrict endptr, int base);Yes
long long int wcstoll(const wchar_t * restrict nptr, wchar_t ** restrict endptr, int base);Yes
unsigned long int wcstoul(const wchar_t * restrict nptr, wchar_t ** restrict endptr, int base);Yes
unsigned long long int wcstoull(const wchar_t * restrict nptr, wchar_t ** restrict endptr, int base);Yes
wchar_t *wcscpy(wchar_t * restrict s1, const wchar_t * restrict s2);Yes
wchar_t *wcsncpy(wchar_t * restrict s1, const wchar_t * restrict s2, size_t n);Yes
wchar_t *wmemcpy(wchar_t * restrict s1, const wchar_t * restrict s2, size_t n);Yes
wchar_t *wmemmove(wchar_t *s1, const wchar_t *s2, size_t n);Yes
wchar_t *wcscat(wchar_t * restrict s1, const wchar_t * restrict s2);Yes
wchar_t *wcsncat(wchar_t * restrict s1, const wchar_t * restrict s2, size_t n);Yes
int wcscmp(const wchar_t *s1, const wchar_t *s2);Yes
int wcscoll(const wchar_t *s1, const wchar_t *s2);Yes
int wcsncmp(const wchar_t *s1, const wchar_t *s2, size_t n);Yes
size_t wcsxfrm(wchar_t * restrict s1, const wchar_t * restrict s2, size_t n);Yes
int wmemcmp(const wchar_t *s1, const wchar_t *s2, size_t n);Yes
wchar_t *wcschr(const wchar_t *s, wchar_t c);Yes
size_t wcscspn(const wchar_t *s1, const wchar_t *s2);Yes
wchar_t *wcspbrk(const wchar_t *s1, const wchar_t *s2);Yes
wchar_t *wcsrchr(const wchar_t *s, wchar_t c);Yes
size_t wcsspn(const wchar_t *s1, const wchar_t *s2);Yes
wchar_t *wcsstr(const wchar_t *s1, const wchar_t *s2);Yes
wchar_t *wcstok(wchar_t * restrict s1, const wchar_t * restrict s2, wchar_t ** restrict ptr);Yes
wchar_t *wmemchr(const wchar_t *s, wchar_t c, size_t n);Yes
size_t wcslen(const wchar_t *s);Yes
wchar_t *wmemset(wchar_t *s, wchar_t c, size_t n);Yes
size_t wcsftime(wchar_t * restrict s, size_t maxsize, const wchar_t * restrict format, const struct tm * restrict timeptr);No
wint_t btowc(int c);Yes
int wctob(wint_t c);Yes
int mbsinit(const mbstate_t *ps);Yes
size_t mbrlen(const char * restrict s, size_t n, mbstate_t * restrict ps);Yes
size_t mbrtowc(wchar_t * restrict pwc, const char * restrict s, size_t n, mbstate_t * restrict ps);Yes
size_t wcrtomb(char * restrict s, wchar_t wc, mbstate_t * restrict ps);Yes
size_t mbsrtowcs(wchar_t * restrict dst, const char ** restrict src, size_t len, mbstate_t * restrict ps);Yes
size_t wcsrtombs(char * restrict dst, const wchar_t ** restrict src, size_t len, mbstate_t * restrict ps);Yes
int fwprintf_s(FILE * restrict stream, const wchar_t * restrict format, ...);No
int fwscanf_s(FILE * restrict stream, const wchar_t * restrict format, ...);No
int snwprintf_s(wchar_t * restrict s, rsize_t n, const wchar_t * restrict format, ...);No
int swprintf_s(wchar_t * restrict s, rsize_t n, const wchar_t * restrict format, ...);No
int swscanf_s(const wchar_t * restrict s, const wchar_t * restrict format, ...);No
int vfwprintf_s(FILE * restrict stream, const wchar_t * restrict format, va_list arg);No
int vfwscanf_s(FILE * restrict stream, const wchar_t * restrict format, va_list arg);No
int vsnwprintf_s(wchar_t * restrict s, rsize_t n, const wchar_t * restrict format, va_list arg);No
int vswprintf_s(wchar_t * restrict s, rsize_t n, const wchar_t * restrict format, va_list arg);No
int vswscanf_s(const wchar_t * restrict s, const wchar_t * restrict format, va_list arg);No
int vwprintf_s(const wchar_t * restrict format, va_list arg);No
int vwscanf_s(const wchar_t * restrict format, va_list arg);No
int wprintf_s(const wchar_t * restrict format, ...);No
int wscanf_s(const wchar_t * restrict format, ...);No
errno_t wcscpy_s(wchar_t * restrict s1, rsize_t s1max, const wchar_t * restrict s2);No
errno_t wcsncpy_s(wchar_t * restrict s1, rsize_t s1max, const wchar_t * restrict s2, rsize_t n);No
errno_t wmemcpy_s(wchar_t * restrict s1, rsize_t s1max, const wchar_t * restrict s2, rsize_t n);No
errno_t wmemmove_s(wchar_t *s1, rsize_t s1max, const wchar_t *s2, rsize_t n);No
errno_t wcscat_s(wchar_t * restrict s1, rsize_t s1max, const wchar_t * restrict s2);No
errno_t wcsncat_s(wchar_t * restrict s1, rsize_t s1max, const wchar_t * restrict s2, rsize_t n);No
wchar_t *wcstok_s(wchar_t * restrict s1, rsize_t * restrict s1max, const wchar_t * restrict s2, wchar_t ** restrict ptr);No
size_t wcsnlen_s(const wchar_t *s, size_t maxsize);No
errno_t wcrtomb_s(size_t * restrict retval, char * restrict s, rsize_t smax, wchar_t wc, mbstate_t * restrict ps);No
errno_t mbsrtowcs_s(size_t * restrict retval, wchar_t * restrict dst, rsize_t dstmax, const char ** restrict src, rsize_t len, mbstate_t * restrict ps);No
errno_t wcsrtombs_s(size_t * restrict retval, char * restrict dst, rsize_t dstmax, const wchar_t ** restrict src, rsize_t len, mbstate_t * restrict ps);No

B.29 Wide character classification and mapping utilities <wctype.h>

FunctionSupported
int iswalnum(wint_t wc);No
int iswalpha(wint_t wc);Yes
int iswblank(wint_t wc);Yes
int iswcntrl(wint_t wc);Yes
int iswdigit(wint_t wc);Yes
int iswgraph(wint_t wc);No
int iswlower(wint_t wc);Yes
int iswprint(wint_t wc);Yes
int iswpunct(wint_t wc);Yes
int iswspace(wint_t wc);Yes
int iswupper(wint_t wc);Yes
int iswxdigit(wint_t wc);Yes
int iswctype(wint_t wc, wctype_t desc);No
wctype_t wctype(const char *property);No
wint_t towlower(wint_t wc);Yes
wint_t towupper(wint_t wc);Yes
wint_t towctrans(wint_t wc, wctrans_t desc);No
wctrans_t wctrans(const char *property);No