Merge "Remove the always-true __INTRODUCED_IN() annotations." am: fee0b45480

Original change: https://android-review.googlesource.com/c/platform/bionic/+/2627536

Change-Id: I68ab2f603c1d0a8fab9b145d8cdbc653eaed5f5e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Elliott Hughes 2023-06-20 21:13:09 +00:00 committed by Automerger Merge Worker
commit 7fc60f8d93
52 changed files with 221 additions and 313 deletions

View file

@ -177,11 +177,8 @@ typedef struct {
* Opens the given library. The `__filename` and `__flags` arguments are
* the same as for [dlopen(3)](http://man7.org/linux/man-pages/man3/dlopen.3.html),
* with the Android-specific flags supplied via the `flags` member of `__info`.
*
* Available since API level 21.
*/
void* _Nullable android_dlopen_ext(const char* _Nullable __filename, int __flags, const android_dlextinfo* _Nullable __info)
__INTRODUCED_IN(21);
void* _Nullable android_dlopen_ext(const char* _Nullable __filename, int __flags, const android_dlextinfo* _Nullable __info);
__END_DECLS

View file

@ -43,9 +43,7 @@ __BEGIN_DECLS
* This is meant for use by libraries that deliberately abort so that they can
* provide an explanation. It is used within bionic to implement assert() and
* all FORTIFY/fdsan aborts.
*
* Available since API level 21.
*/
void android_set_abort_message(const char* _Nullable __msg) __INTRODUCED_IN(21);
void android_set_abort_message(const char* _Nullable __msg);
__END_DECLS

View file

@ -38,10 +38,10 @@ __BEGIN_DECLS
in_addr_t inet_addr(const char* _Nonnull __s);
int inet_aton(const char* _Nonnull __s, struct in_addr* _Nullable __addr);
in_addr_t inet_lnaof(struct in_addr __addr) __INTRODUCED_IN(21);
struct in_addr inet_makeaddr(in_addr_t __net, in_addr_t __host) __INTRODUCED_IN(21);
in_addr_t inet_netof(struct in_addr __addr) __INTRODUCED_IN(21);
in_addr_t inet_network(const char* _Nonnull __s) __INTRODUCED_IN(21);
in_addr_t inet_lnaof(struct in_addr __addr);
struct in_addr inet_makeaddr(in_addr_t __net, in_addr_t __host);
in_addr_t inet_netof(struct in_addr __addr);
in_addr_t inet_network(const char* _Nonnull __s);
char* _Nonnull inet_ntoa(struct in_addr __addr);
const char* _Nullable inet_ntop(int __af, const void* _Nonnull __src, char* _Nonnull __dst, socklen_t __size);
unsigned int inet_nsap_addr(const char* _Nonnull __ascii, unsigned char* _Nonnull __binary, int __n);

View file

@ -30,8 +30,8 @@
#error "Never include this file directly; instead, include <fcntl.h>"
#endif
int __open_2(const char* _Nonnull, int) __INTRODUCED_IN(17);
int __openat_2(int, const char* _Nonnull, int) __INTRODUCED_IN(17);
int __open_2(const char* _Nonnull, int);
int __openat_2(int, const char* _Nonnull, int);
/*
* These are the easiest way to call the real open even in clang FORTIFY.
*/

View file

@ -32,8 +32,7 @@
extern ssize_t __sendto_chk(int, const void* _Nonnull, size_t, size_t, int, const struct sockaddr* _Nullable,
socklen_t) __INTRODUCED_IN(26);
ssize_t __recvfrom_chk(int, void* _Nullable, size_t, size_t, int, struct sockaddr* _Nullable,
socklen_t* _Nullable) __INTRODUCED_IN(21);
ssize_t __recvfrom_chk(int, void* _Nullable, size_t, size_t, int, struct sockaddr* _Nullable, socklen_t* _Nullable);
#if defined(__BIONIC_FORTIFY)

View file

@ -28,7 +28,7 @@
#pragma once
mode_t __umask_chk(mode_t) __INTRODUCED_IN(18);
mode_t __umask_chk(mode_t);
mode_t __umask_real(mode_t mode) __RENAME(umask);
#if defined(__BIONIC_FORTIFY)

View file

@ -30,7 +30,7 @@
#error "Never include this file directly; instead, include <stdio.h>"
#endif
char* _Nullable __fgets_chk(char* _Nonnull, int, FILE* _Nonnull, size_t) __INTRODUCED_IN(17);
char* _Nullable __fgets_chk(char* _Nonnull, int, FILE* _Nonnull, size_t);
size_t __fread_chk(void* _Nonnull, size_t, size_t, FILE* _Nonnull, size_t) __INTRODUCED_IN(24);
size_t __fwrite_chk(const void* _Nonnull, size_t, size_t, FILE* _Nonnull, size_t) __INTRODUCED_IN(24);

View file

@ -32,10 +32,10 @@
void* _Nullable __memchr_chk(const void* _Nonnull, int, size_t, size_t) __INTRODUCED_IN(23);
void* _Nullable __memrchr_chk(const void* _Nonnull, int, size_t, size_t) __INTRODUCED_IN(23);
char* _Nonnull __stpncpy_chk2(char* _Nonnull, const char* _Nonnull, size_t, size_t, size_t) __INTRODUCED_IN(21);
char* _Nonnull __strncpy_chk2(char* _Nonnull, const char* _Nonnull, size_t, size_t, size_t) __INTRODUCED_IN(21);
size_t __strlcpy_chk(char* _Nonnull, const char* _Nonnull, size_t, size_t) __INTRODUCED_IN(17);
size_t __strlcat_chk(char* _Nonnull, const char* _Nonnull, size_t, size_t) __INTRODUCED_IN(17);
char* _Nonnull __stpncpy_chk2(char* _Nonnull, const char* _Nonnull, size_t, size_t, size_t);
char* _Nonnull __strncpy_chk2(char* _Nonnull, const char* _Nonnull, size_t, size_t, size_t);
size_t __strlcpy_chk(char* _Nonnull, const char* _Nonnull, size_t, size_t);
size_t __strlcat_chk(char* _Nonnull, const char* _Nonnull, size_t, size_t);
#if defined(__BIONIC_FORTIFY)
extern void* _Nullable __memrchr_real(const void* _Nonnull, int, size_t) __RENAME(memrchr);

View file

@ -43,7 +43,7 @@ ssize_t __pwrite_real(int, const void* _Nonnull, size_t, off_t) __RENAME(pwrite)
ssize_t __pwrite64_chk(int, const void* _Nonnull, size_t, off64_t, size_t) __INTRODUCED_IN(24);
ssize_t __pwrite64_real(int, const void* _Nonnull, size_t, off64_t) __RENAME(pwrite64);
ssize_t __read_chk(int, void* __BIONIC_COMPLICATED_NULLNESS, size_t, size_t) __INTRODUCED_IN(21);
ssize_t __read_chk(int, void* __BIONIC_COMPLICATED_NULLNESS, size_t, size_t);
ssize_t __write_chk(int, const void* __BIONIC_COMPLICATED_NULLNESS, size_t, size_t) __INTRODUCED_IN(24);
ssize_t __readlink_chk(const char* _Nonnull, char* _Nonnull, size_t, size_t) __INTRODUCED_IN(23);
ssize_t __readlinkat_chk(int dirfd, const char* _Nonnull, char* _Nonnull, size_t, size_t) __INTRODUCED_IN(23);

View file

@ -39,7 +39,7 @@ typedef __WINT_TYPE__ wint_t;
int iswalnum(wint_t __wc);
int iswalpha(wint_t __wc);
int iswblank(wint_t __wc) __INTRODUCED_IN(21);
int iswblank(wint_t __wc);
int iswcntrl(wint_t __wc);
int iswdigit(wint_t __wc);
int iswgraph(wint_t __wc);

View file

@ -123,10 +123,10 @@ struct dirent* _Nullable readdir(DIR* _Nonnull __dir);
* or returns null and leaves `errno` unchanged at the end of the directory,
* or returns null and sets `errno` on failure.
*/
struct dirent64* _Nullable readdir64(DIR* _Nonnull __dir) __INTRODUCED_IN(21);
struct dirent64* _Nullable readdir64(DIR* _Nonnull __dir);
int readdir_r(DIR* _Nonnull __dir, struct dirent* _Nonnull __entry, struct dirent* _Nullable * _Nonnull __buffer) __attribute__((__deprecated__("readdir_r is deprecated; use readdir instead")));
int readdir64_r(DIR* _Nonnull __dir, struct dirent64* _Nonnull __entry, struct dirent64* _Nullable * _Nonnull __buffer) __INTRODUCED_IN(21) __attribute__((__deprecated__("readdir64_r is deprecated; use readdir64 instead")));
int readdir64_r(DIR* _Nonnull __dir, struct dirent64* _Nonnull __entry, struct dirent64* _Nullable * _Nonnull __buffer) __attribute__((__deprecated__("readdir64_r is deprecated; use readdir64 instead")));
/**
* [closedir(3)](http://man7.org/linux/man-pages/man3/closedir.3.html)
@ -179,10 +179,8 @@ int alphasort(const struct dirent* _Nonnull * _Nonnull __lhs, const struct diren
/**
* [alphasort64](http://man7.org/linux/man-pages/man3/alphasort.3.html) is a
* comparator for use with scandir64() that uses strcmp().
*
* Available since API level 21.
*/
int alphasort64(const struct dirent64* _Nonnull * _Nonnull __lhs, const struct dirent64* _Nonnull * _Nonnull __rhs) __INTRODUCED_IN(21);
int alphasort64(const struct dirent64* _Nonnull * _Nonnull __lhs, const struct dirent64* _Nonnull * _Nonnull __rhs);
/**
* [scandir(3)](http://man7.org/linux/man-pages/man3/scandir.3.html)
@ -205,10 +203,8 @@ int scandir(const char* _Nonnull __path, struct dirent* _Nonnull * _Nonnull * _N
*
* Returns the number of entries returned in the list on success,
* and returns -1 and sets `errno` on failure.
*
* Available since API level 21.
*/
int scandir64(const char* _Nonnull __path, struct dirent64* _Nonnull * _Nonnull * _Nonnull __name_list, int (* _Nullable __filter)(const struct dirent64* _Nonnull), int (* _Nullable __comparator)(const struct dirent64* _Nonnull * _Nonnull, const struct dirent64* _Nonnull * _Nonnull)) __INTRODUCED_IN(21);
int scandir64(const char* _Nonnull __path, struct dirent64* _Nonnull * _Nonnull * _Nonnull __name_list, int (* _Nullable __filter)(const struct dirent64* _Nonnull), int (* _Nullable __comparator)(const struct dirent64* _Nonnull * _Nonnull, const struct dirent64* _Nonnull * _Nonnull));
#if defined(__USE_GNU)

View file

@ -111,7 +111,7 @@ __BEGIN_DECLS
*/
int creat(const char* _Nonnull __path, mode_t __mode);
/** See creat(). */
int creat64(const char* _Nonnull __path, mode_t __mode) __INTRODUCED_IN(21);
int creat64(const char* _Nonnull __path, mode_t __mode);
/**
* [openat(2)](http://man7.org/linux/man-pages/man2/openat.2.html)
@ -122,7 +122,7 @@ int creat64(const char* _Nonnull __path, mode_t __mode) __INTRODUCED_IN(21);
*/
int openat(int __dir_fd, const char* _Nonnull __path, int __flags, ...);
/** See openat(). */
int openat64(int __dir_fd, const char* _Nonnull __path, int __flags, ...) __INTRODUCED_IN(21);
int openat64(int __dir_fd, const char* _Nonnull __path, int __flags, ...);
/**
* [open(2)](http://man7.org/linux/man-pages/man2/open.2.html)
@ -133,7 +133,7 @@ int openat64(int __dir_fd, const char* _Nonnull __path, int __flags, ...) __INTR
*/
int open(const char* _Nonnull __path, int __flags, ...);
/** See open(). */
int open64(const char* _Nonnull __path, int __flags, ...) __INTRODUCED_IN(21);
int open64(const char* _Nonnull __path, int __flags, ...);
/**
* [splice(2)](http://man7.org/linux/man-pages/man2/splice.2.html)
@ -144,10 +144,8 @@ int open64(const char* _Nonnull __path, int __flags, ...) __INTRODUCED_IN(21);
*
* Returns the number of bytes spliced on success and returns -1 and sets
* `errno` on failure.
*
* Available since API level 21.
*/
ssize_t splice(int __in_fd, off64_t* __BIONIC_COMPLICATED_NULLNESS __in_offset, int __out_fd, off64_t* __BIONIC_COMPLICATED_NULLNESS __out_offset, size_t __length, unsigned int __flags) __INTRODUCED_IN(21);
ssize_t splice(int __in_fd, off64_t* __BIONIC_COMPLICATED_NULLNESS __in_offset, int __out_fd, off64_t* __BIONIC_COMPLICATED_NULLNESS __out_offset, size_t __length, unsigned int __flags);
/**
* [tee(2)](http://man7.org/linux/man-pages/man2/tee.2.html)
@ -158,10 +156,8 @@ ssize_t splice(int __in_fd, off64_t* __BIONIC_COMPLICATED_NULLNESS __in_offset,
*
* Returns the number of bytes duplicated on success and returns -1 and sets
* `errno` on failure.
*
* Available since API level 21.
*/
ssize_t tee(int __in_fd, int __out_fd, size_t __length, unsigned int __flags) __INTRODUCED_IN(21);
ssize_t tee(int __in_fd, int __out_fd, size_t __length, unsigned int __flags);
/**
* [vmsplice(2)](http://man7.org/linux/man-pages/man2/vmsplice.2.html)
@ -172,10 +168,8 @@ ssize_t tee(int __in_fd, int __out_fd, size_t __length, unsigned int __flags) __
*
* Returns the number of bytes spliced on success and returns -1 and sets
* `errno` on failure.
*
* Available since API level 21.
*/
ssize_t vmsplice(int __fd, const struct iovec* _Nonnull __iov, size_t __count, unsigned int __flags) __INTRODUCED_IN(21);
ssize_t vmsplice(int __fd, const struct iovec* _Nonnull __iov, size_t __count, unsigned int __flags);
/**
* [fallocate(2)](http://man7.org/linux/man-pages/man2/fallocate.2.html)
@ -187,12 +181,10 @@ ssize_t vmsplice(int __fd, const struct iovec* _Nonnull __iov, size_t __count, u
* `FALLOC_FL_UNSHARE_RANGE`.
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*
* Available since API level 21.
*/
int fallocate(int __fd, int __mode, off_t __offset, off_t __length) __RENAME_IF_FILE_OFFSET64(fallocate64) __INTRODUCED_IN(21);
int fallocate(int __fd, int __mode, off_t __offset, off_t __length) __RENAME_IF_FILE_OFFSET64(fallocate64);
/** See fallocate(). */
int fallocate64(int __fd, int __mode, off64_t __offset, off64_t __length) __INTRODUCED_IN(21);
int fallocate64(int __fd, int __mode, off64_t __offset, off64_t __length);
/**
* [posix_fadvise(2)](http://man7.org/linux/man-pages/man2/posix_fadvise.2.html)
@ -203,24 +195,20 @@ int fallocate64(int __fd, int __mode, off64_t __offset, off64_t __length) __INTR
* and `POSIX_FADV_NOREUSE`.
*
* Returns 0 on success and returns an error number on failure.
*
* Available since API level 21.
*/
int posix_fadvise(int __fd, off_t __offset, off_t __length, int __advice) __RENAME_IF_FILE_OFFSET64(posix_fadvise64) __INTRODUCED_IN(21);
int posix_fadvise(int __fd, off_t __offset, off_t __length, int __advice) __RENAME_IF_FILE_OFFSET64(posix_fadvise64);
/** See posix_fadvise(). */
int posix_fadvise64(int __fd, off64_t __offset, off64_t __length, int __advice) __INTRODUCED_IN(21);
int posix_fadvise64(int __fd, off64_t __offset, off64_t __length, int __advice);
/**
* [posix_fallocate(2)](http://man7.org/linux/man-pages/man2/posix_fallocate.2.html)
* allocates file space.
*
* Returns 0 on success and returns an error number on failure.
*
* Available since API level 21.
*/
int posix_fallocate(int __fd, off_t __offset, off_t __length) __RENAME_IF_FILE_OFFSET64(posix_fallocate64) __INTRODUCED_IN(21);
int posix_fallocate(int __fd, off_t __offset, off_t __length) __RENAME_IF_FILE_OFFSET64(posix_fallocate64);
/** See posix_fallocate(). */
int posix_fallocate64(int __fd, off64_t __offset, off64_t __length) __INTRODUCED_IN(21);
int posix_fallocate64(int __fd, off64_t __offset, off64_t __length);
#if defined(__USE_GNU)

View file

@ -117,16 +117,11 @@ typedef struct _ftsent {
__BEGIN_DECLS
/*
* Strictly these functions were available before Lollipop/21, but there was an accidental ABI
* breakage in 21 that means you can't write code that runs on current devices and pre-21 devices,
* so we break the tie in favor of current and future devices.
*/
FTSENT* _Nullable fts_children(FTS* _Nonnull __fts, int __options) __INTRODUCED_IN(21);
int fts_close(FTS* _Nonnull __fts) __INTRODUCED_IN(21);
FTS* _Nullable fts_open(char* _Nonnull const* _Nonnull __path, int __options, int (* _Nullable __comparator)(const FTSENT* _Nonnull * _Nonnull __lhs, const FTSENT* _Nonnull * _Nonnull __rhs)) __INTRODUCED_IN(21);
FTSENT* _Nullable fts_read(FTS* _Nonnull __fts) __INTRODUCED_IN(21);
int fts_set(FTS* _Nonnull __fts, FTSENT* _Nonnull __entry, int __options) __INTRODUCED_IN(21);
FTSENT* _Nullable fts_children(FTS* _Nonnull __fts, int __options);
int fts_close(FTS* _Nonnull __fts);
FTS* _Nullable fts_open(char* _Nonnull const* _Nonnull __path, int __options, int (* _Nullable __comparator)(const FTSENT* _Nonnull * _Nonnull __lhs, const FTSENT* _Nonnull * _Nonnull __rhs));
FTSENT* _Nullable fts_read(FTS* _Nonnull __fts);
int fts_set(FTS* _Nonnull __fts, FTSENT* _Nonnull __entry, int __options);
__END_DECLS

View file

@ -55,10 +55,10 @@ struct FTW {
};
__BEGIN_DECLS
int ftw(const char* _Nonnull __dir_path, int (* _Nonnull __callback)(const char* _Nonnull, const struct stat* _Nonnull, int), int __max_fd_count) __INTRODUCED_IN(17);
int nftw(const char* _Nonnull __dir_path, int (* _Nonnull __callback)(const char* _Nonnull, const struct stat* _Nonnull, int, struct FTW* _Nonnull), int __max_fd_count, int __flags) __INTRODUCED_IN(17);
int ftw64(const char* _Nonnull __dir_path, int (* _Nonnull __callback)(const char* _Nonnull, const struct stat64* _Nonnull, int), int __max_fd_count) __INTRODUCED_IN(21);
int nftw64(const char* _Nonnull __dir_path, int (* _Nonnull __callback)(const char* _Nonnull, const struct stat64* _Nonnull, int, struct FTW* _Nonnull), int __max_fd_count, int __flags) __INTRODUCED_IN(21);
int ftw(const char* _Nonnull __dir_path, int (* _Nonnull __callback)(const char* _Nonnull, const struct stat* _Nonnull, int), int __max_fd_count);
int nftw(const char* _Nonnull __dir_path, int (* _Nonnull __callback)(const char* _Nonnull, const struct stat* _Nonnull, int, struct FTW* _Nonnull), int __max_fd_count, int __flags);
int ftw64(const char* _Nonnull __dir_path, int (* _Nonnull __callback)(const char* _Nonnull, const struct stat64* _Nonnull, int), int __max_fd_count);
int nftw64(const char* _Nonnull __dir_path, int (* _Nonnull __callback)(const char* _Nonnull, const struct stat64* _Nonnull, int, struct FTW* _Nonnull), int __max_fd_count, int __flags);
__END_DECLS
#endif

View file

@ -327,12 +327,12 @@ typedef struct {
} imaxdiv_t;
__BEGIN_DECLS
intmax_t imaxabs(intmax_t __i) __attribute_const__ __INTRODUCED_IN(19);
imaxdiv_t imaxdiv(intmax_t __numerator, intmax_t __denominator) __attribute_const__ __INTRODUCED_IN(19);
intmax_t imaxabs(intmax_t __i) __attribute_const__;
imaxdiv_t imaxdiv(intmax_t __numerator, intmax_t __denominator) __attribute_const__;
intmax_t strtoimax(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
uintmax_t strtoumax(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
intmax_t wcstoimax(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base) __INTRODUCED_IN(21);
uintmax_t wcstoumax(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base) __INTRODUCED_IN(21);
intmax_t wcstoimax(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base);
uintmax_t wcstoumax(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base);
__END_DECLS
#endif

View file

@ -55,11 +55,7 @@ struct dl_phdr_info {
void* _Nullable dlpi_tls_data;
};
#if defined(__arm__)
int dl_iterate_phdr(int (* _Nonnull __callback)(struct dl_phdr_info* _Nonnull, size_t, void* _Nullable), void* _Nullable __data) __INTRODUCED_IN(21);
#else
int dl_iterate_phdr(int (* _Nonnull __callback)(struct dl_phdr_info* _Nonnull, size_t, void*_Nullable ), void* _Nullable __data);
#endif
int dl_iterate_phdr(int (* _Nonnull __callback)(struct dl_phdr_info* _Nonnull, size_t, void* _Nullable), void* _Nullable __data);
#ifdef __arm__
typedef uintptr_t _Unwind_Ptr;

View file

@ -98,11 +98,11 @@ struct lconv {
struct lconv* _Nonnull localeconv(void) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
locale_t _Nullable duplocale(locale_t _Nonnull __l) __INTRODUCED_IN(21);
void freelocale(locale_t _Nonnull __l) __INTRODUCED_IN(21);
locale_t _Nullable newlocale(int __category_mask, const char* _Nonnull __locale_name, locale_t _Nullable __base) __INTRODUCED_IN(21);
locale_t _Nullable duplocale(locale_t _Nonnull __l);
void freelocale(locale_t _Nonnull __l);
locale_t _Nullable newlocale(int __category_mask, const char* _Nonnull __locale_name, locale_t _Nullable __base);
char* _Nullable setlocale(int __category, const char* _Nullable __locale_name);
locale_t _Nullable uselocale(locale_t _Nullable __l) __INTRODUCED_IN(21);
locale_t _Nullable uselocale(locale_t _Nullable __l);
#define LC_GLOBAL_LOCALE __BIONIC_CAST(reinterpret_cast, locale_t, -1L)

View file

@ -92,10 +92,8 @@ void* _Nullable memalign(size_t __alignment, size_t __byte_count) __mallocfunc _
/**
* [malloc_usable_size(3)](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html)
* returns the actual size of the given heap block.
*
* Available since API level 17.
*/
size_t malloc_usable_size(const void* _Nullable __ptr) __INTRODUCED_IN(17);
size_t malloc_usable_size(const void* _Nullable __ptr);
#define __MALLINFO_BODY \
/** Total number of non-mmapped bytes currently allocated from OS. */ \

View file

@ -161,8 +161,8 @@ double log1p(double __x);
float log1pf(float __x);
long double log1pl(long double __x);
double log2(double __x) __INTRODUCED_IN(18);
float log2f(float __x) __INTRODUCED_IN(18);
double log2(double __x);
float log2f(float __x);
long double log2l(long double __x);
double logb(double __x);
@ -319,7 +319,7 @@ long double fmal(long double __x, long double __y, long double __z);
* to the std namespace, making it impossible to use both <cmath> (which gets
* included by a lot of other standard headers) and ::isnan.
*/
int (isinf)(double __x) __attribute_const__ __INTRODUCED_IN(21);
int (isinf)(double __x) __attribute_const__;
int (isnan)(double __x) __attribute_const__;
/* POSIX extensions. */
@ -367,7 +367,7 @@ double gamma_r(double __x, int* _Nonnull __sign);
double lgamma_r(double __x, int* _Nonnull __sign);
double significand(double __x);
long double lgammal_r(long double __x, int* _Nonnull __sign) __INTRODUCED_IN(23);
long double significandl(long double __x) __INTRODUCED_IN(21);
long double significandl(long double __x);
float dremf(float __x, float __y);
int finitef(float __x) __attribute_const__;
float gammaf(float __x);

View file

@ -57,10 +57,10 @@ struct mntent {
__BEGIN_DECLS
int endmntent(FILE* _Nullable __fp) __INTRODUCED_IN(21);
int endmntent(FILE* _Nullable __fp);
struct mntent* _Nullable getmntent(FILE* _Nonnull __fp);
struct mntent* _Nullable getmntent_r(FILE* _Nonnull __fp, struct mntent* _Nonnull __entry, char* _Nonnull __buf, int __size) __INTRODUCED_IN(21);
FILE* _Nullable setmntent(const char* _Nonnull __filename, const char* _Nonnull __type) __INTRODUCED_IN(21);
struct mntent* _Nullable getmntent_r(FILE* _Nonnull __fp, struct mntent* _Nonnull __entry, char* _Nonnull __buf, int __size);
FILE* _Nullable setmntent(const char* _Nonnull __filename, const char* _Nonnull __type);
char* _Nullable hasmntopt(const struct mntent* _Nonnull __entry, const char* _Nonnull __option) __INTRODUCED_IN(26);
__END_DECLS

View file

@ -58,10 +58,8 @@ int poll(struct pollfd* _Nullable __fds, nfds_t __count, int __timeout_ms);
*
* Returns the number of ready file descriptors on success, 0 for timeout,
* and returns -1 and sets `errno` on failure.
*
* Available since API level 28.
*/
int ppoll(struct pollfd* _Nullable __fds, nfds_t __count, const struct timespec* _Nullable __timeout, const sigset_t* _Nullable __mask) __INTRODUCED_IN(21);
int ppoll(struct pollfd* _Nullable __fds, nfds_t __count, const struct timespec* _Nullable __timeout, const sigset_t* _Nullable __mask);
/**
* Like ppoll() but allows setting a signal mask with RT signals even from a 32-bit process.

View file

@ -116,10 +116,10 @@ int pthread_attr_setstack(pthread_attr_t* _Nonnull __attr, void* _Nonnull __addr
int pthread_attr_setstacksize(pthread_attr_t* _Nonnull __addr, size_t __size);
int pthread_condattr_destroy(pthread_condattr_t* _Nonnull __attr);
int pthread_condattr_getclock(const pthread_condattr_t* _Nonnull __attr, clockid_t* _Nonnull __clock) __INTRODUCED_IN(21);
int pthread_condattr_getclock(const pthread_condattr_t* _Nonnull __attr, clockid_t* _Nonnull __clock);
int pthread_condattr_getpshared(const pthread_condattr_t* _Nonnull __attr, int* _Nonnull __shared);
int pthread_condattr_init(pthread_condattr_t* _Nonnull __attr);
int pthread_condattr_setclock(pthread_condattr_t* _Nonnull __attr, clockid_t __clock) __INTRODUCED_IN(21);
int pthread_condattr_setclock(pthread_condattr_t* _Nonnull __attr, clockid_t __clock);
int pthread_condattr_setpshared(pthread_condattr_t* _Nonnull __attr, int __shared);
int pthread_cond_broadcast(pthread_cond_t* _Nonnull __cond);
@ -169,7 +169,7 @@ int pthread_getcpuclockid(pthread_t __pthread, clockid_t* _Nonnull __clock);
void* _Nullable pthread_getspecific(pthread_key_t __key);
pid_t pthread_gettid_np(pthread_t __pthread) __INTRODUCED_IN(21);
pid_t pthread_gettid_np(pthread_t __pthread);
int pthread_join(pthread_t __pthread, void* _Nullable * _Nullable __return_value_ptr);
@ -190,8 +190,7 @@ int pthread_mutex_clocklock(pthread_mutex_t* _Nonnull __mutex, clockid_t __clock
int pthread_mutex_destroy(pthread_mutex_t* _Nonnull __mutex);
int pthread_mutex_init(pthread_mutex_t* _Nonnull __mutex, const pthread_mutexattr_t* _Nullable __attr);
int pthread_mutex_lock(pthread_mutex_t* _Nonnull __mutex);
int pthread_mutex_timedlock(pthread_mutex_t* _Nonnull __mutex, const struct timespec* _Nullable __timeout)
__INTRODUCED_IN(21);
int pthread_mutex_timedlock(pthread_mutex_t* _Nonnull __mutex, const struct timespec* _Nullable __timeout);
/*
* POSIX historically only supported using pthread_mutex_timedlock() with CLOCK_REALTIME, however

View file

@ -179,20 +179,16 @@ int clone(int (* __BIONIC_COMPLICATED_NULLNESS __fn)(void* __BIONIC_COMPLICATED_
* disassociates part of the caller's execution context.
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*
* Available since API level 17.
*/
int unshare(int __flags) __INTRODUCED_IN(17);
int unshare(int __flags);
/**
* [setns(2)](http://man7.org/linux/man-pages/man2/setns.2.html)
* reassociates a thread with a different namespace.
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*
* Available since API level 21.
*/
int setns(int __fd, int __ns_type) __INTRODUCED_IN(21);
int setns(int __fd, int __ns_type);
/**
* [sched_getcpu(3)](http://man7.org/linux/man-pages/man3/sched_getcpu.3.html)

View file

@ -66,18 +66,14 @@ __BEGIN_DECLS
/**
* [insque(3)](http://man7.org/linux/man-pages/man3/insque.3.html) inserts
* an item in a queue (an intrusive doubly-linked list).
*
* Available since API level 21.
*/
void insque(void* _Nonnull __element, void* _Nullable __previous) __INTRODUCED_IN(21);
void insque(void* _Nonnull __element, void* _Nullable __previous);
/**
* [remque(3)](http://man7.org/linux/man-pages/man3/remque.3.html) removes
* an item from a queue (an intrusive doubly-linked list).
*
* Available since API level 21.
*/
void remque(void* _Nonnull __element) __INTRODUCED_IN(21);
void remque(void* _Nonnull __element);
/**
* [hcreate(3)](http://man7.org/linux/man-pages/man3/hcreate.3.html)
@ -155,10 +151,8 @@ int hsearch_r(ENTRY __entry, ACTION __action, ENTRY* _Nullable * _Nonnull __resu
* See bsearch() if you have a sorted array.
*
* Returns a pointer to the matching element on success, or NULL on failure.
*
* Available since API level 21.
*/
void* _Nullable lfind(const void* _Nonnull __key, const void* _Nonnull __array, size_t* _Nonnull __count, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull, const void* _Nonnull)) __INTRODUCED_IN(21);
void* _Nullable lfind(const void* _Nonnull __key, const void* _Nonnull __array, size_t* _Nonnull __count, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull, const void* _Nonnull));
/**
* [lsearch(3)](http://man7.org/linux/man-pages/man3/lsearch.3.html) brute-force
@ -170,10 +164,8 @@ void* _Nullable lfind(const void* _Nonnull __key, const void* _Nonnull __array,
*
* Returns a pointer to the matching element on success, or to the newly-added
* element on failure.
*
* Available since API level 21.
*/
void* _Nonnull lsearch(const void* _Nonnull __key, void* _Nonnull __array, size_t* _Nonnull __count, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull, const void* _Nonnull)) __INTRODUCED_IN(21);
void* _Nonnull lsearch(const void* _Nonnull __key, void* _Nonnull __array, size_t* _Nonnull __count, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull, const void* _Nonnull));
/**
* [tdelete(3)](http://man7.org/linux/man-pages/man3/tdelete.3.html) searches
@ -214,6 +206,6 @@ void* _Nullable tsearch(const void* _Nonnull __key, void* _Nullable * _Nullable
* [twalk(3)](http://man7.org/linux/man-pages/man3/twalk.3.html) calls
* `__visitor` on every node in the tree.
*/
void twalk(const void* _Nullable __root, void (* _Nullable __visitor)(const void* _Nullable, VISIT, int)) __INTRODUCED_IN(21);
void twalk(const void* _Nullable __root, void (* _Nullable __visitor)(const void* _Nullable, VISIT, int));
__END_DECLS

View file

@ -51,8 +51,8 @@ __BEGIN_DECLS
/* We take a few real-time signals for ourselves. May as well use the same names as glibc. */
#define SIGRTMIN (__libc_current_sigrtmin())
#define SIGRTMAX (__libc_current_sigrtmax())
int __libc_current_sigrtmin(void) __INTRODUCED_IN(21);
int __libc_current_sigrtmax(void) __INTRODUCED_IN(21);
int __libc_current_sigrtmin(void);
int __libc_current_sigrtmax(void);
extern const char* _Nonnull const sys_siglist[_NSIG];
extern const char* _Nonnull const sys_signame[_NSIG]; /* BSD compatibility. */
@ -64,16 +64,16 @@ int sigaction64(int __signal, const struct sigaction64* _Nullable __new_action,
int siginterrupt(int __signal, int __flag);
sighandler_t _Nonnull signal(int __signal, sighandler_t _Nullable __handler) __INTRODUCED_IN(21);
int sigaddset(sigset_t* _Nonnull __set, int __signal) __INTRODUCED_IN(21);
sighandler_t _Nonnull signal(int __signal, sighandler_t _Nullable __handler);
int sigaddset(sigset_t* _Nonnull __set, int __signal);
int sigaddset64(sigset64_t* _Nonnull __set, int __signal) __INTRODUCED_IN(28);
int sigdelset(sigset_t* _Nonnull __set, int __signal) __INTRODUCED_IN(21);
int sigdelset(sigset_t* _Nonnull __set, int __signal);
int sigdelset64(sigset64_t* _Nonnull __set, int __signal) __INTRODUCED_IN(28);
int sigemptyset(sigset_t* _Nonnull __set) __INTRODUCED_IN(21);
int sigemptyset(sigset_t* _Nonnull __set);
int sigemptyset64(sigset64_t* _Nonnull __set) __INTRODUCED_IN(28);
int sigfillset(sigset_t* _Nonnull __set) __INTRODUCED_IN(21);
int sigfillset(sigset_t* _Nonnull __set);
int sigfillset64(sigset64_t* _Nonnull __set) __INTRODUCED_IN(28);
int sigismember(const sigset_t* _Nonnull __set, int __signal) __INTRODUCED_IN(21);
int sigismember(const sigset_t* _Nonnull __set, int __signal);
int sigismember64(const sigset64_t* _Nonnull __set, int __signal) __INTRODUCED_IN(28);
int sigpending(sigset_t* _Nonnull __set);
@ -105,8 +105,8 @@ int tgkill(int __tgid, int __tid, int __signal);
int sigaltstack(const stack_t* _Nullable __new_signal_stack, stack_t* _Nullable __old_signal_stack);
void psiginfo(const siginfo_t* _Nonnull __info, const char* _Nullable __msg) __INTRODUCED_IN(17);
void psignal(int __signal, const char* _Nullable __msg) __INTRODUCED_IN(17);
void psiginfo(const siginfo_t* _Nonnull __info, const char* _Nullable __msg);
void psignal(int __signal, const char* _Nullable __msg);
int pthread_kill(pthread_t __pthread, int __signal);
#if defined(__USE_GNU)

View file

@ -118,8 +118,8 @@ int fscanf(FILE* _Nonnull __fp, const char* _Nonnull __fmt, ...) __scanflike(2,
size_t fwrite(const void* _Nonnull __buf, size_t __size, size_t __count, FILE* _Nonnull __fp);
int getc(FILE* _Nonnull __fp);
int getchar(void);
ssize_t getdelim(char* _Nullable * _Nonnull __line_ptr, size_t* _Nonnull __line_length_ptr, int __delimiter, FILE* _Nonnull __fp) __INTRODUCED_IN(18);
ssize_t getline(char* _Nullable * _Nonnull __line_ptr, size_t* _Nonnull __line_length_ptr, FILE* _Nonnull __fp) __INTRODUCED_IN(18);
ssize_t getdelim(char* _Nullable * _Nonnull __line_ptr, size_t* _Nonnull __line_length_ptr, int __delimiter, FILE* _Nonnull __fp);
ssize_t getline(char* _Nullable * _Nonnull __line_ptr, size_t* _Nonnull __line_length_ptr, FILE* _Nonnull __fp);
void perror(const char* _Nullable __msg);
int printf(const char* _Nonnull __fmt, ...) __printflike(1, 2);
@ -136,8 +136,8 @@ int ungetc(int __ch, FILE* _Nonnull __fp);
int vfprintf(FILE* _Nonnull __fp, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
int vprintf(const char* _Nonnull __fp, va_list __args) __printflike(1, 0);
int dprintf(int __fd, const char* _Nonnull __fmt, ...) __printflike(2, 3) __INTRODUCED_IN(21);
int vdprintf(int __fd, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0) __INTRODUCED_IN(21);
int dprintf(int __fd, const char* _Nonnull __fmt, ...) __printflike(2, 3);
int vdprintf(int __fd, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ < 201112L) || \
(defined(__cplusplus) && __cplusplus <= 201103L)

View file

@ -43,12 +43,12 @@ __BEGIN_DECLS
__noreturn void abort(void) __attribute__((__nomerge__));
__noreturn void exit(int __status);
__noreturn void _Exit(int __status) __INTRODUCED_IN(21);
__noreturn void _Exit(int __status);
int atexit(void (* _Nonnull __fn)(void));
int at_quick_exit(void (* _Nonnull __fn)(void)) __INTRODUCED_IN(21);
void quick_exit(int __status) __noreturn __INTRODUCED_IN(21);
int at_quick_exit(void (* _Nonnull __fn)(void));
void quick_exit(int __status) __noreturn;
char* _Nullable getenv(const char* _Nonnull __name);
int putenv(char* _Nonnull __assignment);
@ -63,7 +63,7 @@ int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
int mkostemps64(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
int mkostemps(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
int mkstemp64(char* _Nonnull __template) __INTRODUCED_IN(21);
int mkstemp64(char* _Nonnull __template);
int mkstemp(char* _Nonnull __template);
int mkstemps64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
int mkstemps(char* _Nonnull __template, int __flags);
@ -73,12 +73,12 @@ long long strtoll(const char* _Nonnull __s, char* _Nullable * _Nullable __end_pt
unsigned long strtoul(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
unsigned long long strtoull(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size);
void* _Nullable aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
double strtod(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
unsigned long strtoul_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(26);
@ -99,7 +99,7 @@ void arc4random_buf(void* _Nonnull __buf, size_t __n);
#define RAND_MAX 0x7fffffff
int rand_r(unsigned int* _Nonnull __seed_ptr) __INTRODUCED_IN(21);
int rand_r(unsigned int* _Nonnull __seed_ptr);
double drand48(void);
double erand48(unsigned short __xsubi[_Nonnull 3]);
@ -111,11 +111,11 @@ long nrand48(unsigned short __xsubi[_Nonnull 3]);
unsigned short* _Nonnull seed48(unsigned short __seed16v[_Nonnull 3]);
void srand48(long __seed);
char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n) __INTRODUCED_IN(21);
char* _Nullable setstate(char* _Nonnull __state) __INTRODUCED_IN(21);
char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n);
char* _Nullable setstate(char* _Nonnull __state);
int getpt(void);
int posix_openpt(int __flags) __INTRODUCED_IN(21);
int posix_openpt(int __flags);
char* _Nullable ptsname(int __fd);
int ptsname_r(int __fd, char* _Nonnull __buf, size_t __n);
int unlockpt(int __fd);
@ -153,8 +153,8 @@ lldiv_t lldiv(long long __numerator, long long __denominator) __attribute_const_
int getloadavg(double __averages[_Nonnull], int __n) __INTRODUCED_IN(29);
/* BSD compatibility. */
const char* _Nullable getprogname(void) __INTRODUCED_IN(21);
void setprogname(const char* _Nonnull __name) __INTRODUCED_IN(21);
const char* _Nullable getprogname(void);
void setprogname(const char* _Nonnull __name);
int mblen(const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
size_t mbstowcs(wchar_t* _Nullable __dst, const char* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
@ -163,28 +163,28 @@ int wctomb(char* _Nullable __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK
size_t wcstombs(char* _Nullable __dst, const wchar_t* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21);
size_t __ctype_get_mb_cur_max(void);
#define MB_CUR_MAX __ctype_get_mb_cur_max()
#if defined(__BIONIC_INCLUDE_FORTIFY_HEADERS)
#include <bits/fortify/stdlib.h>
#endif
int abs(int __x) __attribute_const__ __INTRODUCED_IN(19);
long labs(long __x) __attribute_const__ __INTRODUCED_IN(19);
long long llabs(long long __x) __attribute_const__ __INTRODUCED_IN(19);
int abs(int __x) __attribute_const__;
long labs(long __x) __attribute_const__;
long long llabs(long long __x) __attribute_const__;
float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
double atof(const char* _Nonnull __s) __attribute_pure__ __INTRODUCED_IN(21);
int rand(void) __INTRODUCED_IN(21);
void srand(unsigned int __seed) __INTRODUCED_IN(21);
long random(void) __INTRODUCED_IN(21);
void srandom(unsigned int __seed) __INTRODUCED_IN(21);
int grantpt(int __fd) __INTRODUCED_IN(21);
float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
double atof(const char* _Nonnull __s) __attribute_pure__;
int rand(void);
void srand(unsigned int __seed);
long random(void);
void srandom(unsigned int __seed);
int grantpt(int __fd);
long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l);
unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l);
long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l);
#if __ANDROID_API__ >= 26
double strtod_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);

View file

@ -76,7 +76,7 @@ void* _Nonnull memset_explicit(void* _Nonnull __dst, int __ch, size_t __n) __INT
void* _Nullable memmem(const void* _Nonnull __haystack, size_t __haystack_size, const void* _Nonnull __needle, size_t __needle_size) __attribute_pure__;
char* _Nullable strchr(const char* _Nonnull __s, int __ch) __attribute_pure__;
char* _Nullable __strchr_chk(const char* _Nonnull __s, int __ch, size_t __n) __INTRODUCED_IN(18);
char* _Nullable __strchr_chk(const char* _Nonnull __s, int __ch, size_t __n);
#if defined(__USE_GNU)
#if defined(__cplusplus)
extern "C++" char* _Nonnull strchrnul(char* _Nonnull __s, int __ch) __RENAME(strchrnul) __attribute_pure__ __INTRODUCED_IN(24);
@ -87,13 +87,13 @@ char* _Nonnull strchrnul(const char* _Nonnull __s, int __ch) __attribute_pure__
#endif
char* _Nullable strrchr(const char* _Nonnull __s, int __ch) __attribute_pure__;
char* _Nullable __strrchr_chk(const char* _Nonnull __s, int __ch, size_t __n) __INTRODUCED_IN(18);
char* _Nullable __strrchr_chk(const char* _Nonnull __s, int __ch, size_t __n);
size_t strlen(const char* _Nonnull __s) __attribute_pure__;
size_t __strlen_chk(const char* _Nonnull __s, size_t __n) __INTRODUCED_IN(17);
size_t __strlen_chk(const char* _Nonnull __s, size_t __n);
int strcmp(const char* _Nonnull __lhs, const char* _Nonnull __rhs) __attribute_pure__;
char* _Nonnull stpcpy(char* _Nonnull __dst, const char* _Nonnull __src) __INTRODUCED_IN(21);
char* _Nonnull stpcpy(char* _Nonnull __dst, const char* _Nonnull __src);
char* _Nonnull strcpy(char* _Nonnull __dst, const char* _Nonnull __src);
char* _Nonnull strcat(char* _Nonnull __dst, const char* _Nonnull __src);
char* _Nullable strdup(const char* _Nonnull __s);
@ -120,7 +120,7 @@ size_t strnlen(const char* _Nonnull __s, size_t __n) __attribute_pure__;
char* _Nonnull strncat(char* _Nonnull __dst, const char* _Nonnull __src, size_t __n);
char* _Nullable strndup(const char* _Nonnull __s, size_t __n);
int strncmp(const char* _Nonnull __lhs, const char* _Nonnull __rhs, size_t __n) __attribute_pure__;
char* _Nonnull stpncpy(char* _Nonnull __dst, const char* _Nonnull __src, size_t __n) __INTRODUCED_IN(21);
char* _Nonnull stpncpy(char* _Nonnull __dst, const char* _Nonnull __src, size_t __n);
char* _Nonnull strncpy(char* _Nonnull __dst, const char* _Nonnull __src, size_t __n);
size_t strlcat(char* _Nonnull __dst, const char* _Nonnull __src, size_t __n);
@ -136,8 +136,8 @@ char* _Nonnull strsignal(int __signal);
int strcoll(const char* _Nonnull __lhs, const char* _Nonnull __rhs) __attribute_pure__;
size_t strxfrm(char* __BIONIC_COMPLICATED_NULLNESS __dst, const char* _Nonnull __src, size_t __n);
int strcoll_l(const char* _Nonnull __lhs, const char* _Nonnull __rhs, locale_t _Nonnull __l) __attribute_pure__ __INTRODUCED_IN(21);
size_t strxfrm_l(char* __BIONIC_COMPLICATED_NULLNESS __dst, const char* _Nonnull __src, size_t __n, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int strcoll_l(const char* _Nonnull __lhs, const char* _Nonnull __rhs, locale_t _Nonnull __l) __attribute_pure__;
size_t strxfrm_l(char* __BIONIC_COMPLICATED_NULLNESS __dst, const char* _Nonnull __src, size_t __n, locale_t _Nonnull __l);
#if defined(__USE_GNU) && !defined(basename)
/*

View file

@ -45,9 +45,7 @@ __BEGIN_DECLS
*
* Returns the corresponding value on success,
* and returns 0 and sets `errno` to `ENOENT` on failure.
*
* Available since API level 18.
*/
unsigned long int getauxval(unsigned long int __type) __INTRODUCED_IN(18);
unsigned long int getauxval(unsigned long int __type);
__END_DECLS

View file

@ -49,10 +49,10 @@
/* glibc compatibility. */
__BEGIN_DECLS
uint32_t htonl(uint32_t __x) __attribute_const__ __INTRODUCED_IN(21);
uint16_t htons(uint16_t __x) __attribute_const__ __INTRODUCED_IN(21);
uint32_t ntohl(uint32_t __x) __attribute_const__ __INTRODUCED_IN(21);
uint16_t ntohs(uint16_t __x) __attribute_const__ __INTRODUCED_IN(21);
uint32_t htonl(uint32_t __x) __attribute_const__;
uint16_t htons(uint16_t __x) __attribute_const__;
uint32_t ntohl(uint32_t __x) __attribute_const__;
uint16_t ntohs(uint16_t __x) __attribute_const__;
__END_DECLS
#define htonl(x) __swap32(x)

View file

@ -38,11 +38,11 @@
__BEGIN_DECLS
int epoll_create(int __size);
int epoll_create1(int __flags) __INTRODUCED_IN(21);
int epoll_create1(int __flags);
int epoll_ctl(int __epoll_fd, int __op, int __fd, struct epoll_event* __BIONIC_COMPLICATED_NULLNESS __event);
int epoll_wait(int __epoll_fd, struct epoll_event* _Nonnull __events, int __event_count, int __timeout_ms);
int epoll_pwait(int __epoll_fd, struct epoll_event* _Nonnull __events, int __event_count, int __timeout_ms, const sigset_t* _Nullable __mask) __INTRODUCED_IN(21);
int epoll_pwait(int __epoll_fd, struct epoll_event* _Nonnull __events, int __event_count, int __timeout_ms, const sigset_t* _Nullable __mask);
int epoll_pwait64(int __epoll_fd, struct epoll_event* _Nonnull __events, int __event_count, int __timeout_ms, const sigset64_t* _Nullable __mask) __INTRODUCED_IN(28);
__END_DECLS

View file

@ -43,19 +43,15 @@ __BEGIN_DECLS
* filesystem checks.
*
* Returns the previous UID.
*
* Available since API level 21.
*/
int setfsuid(uid_t __uid) __INTRODUCED_IN(21);
int setfsuid(uid_t __uid);
/**
* [setfsgid(2)](http://man7.org/linux/man-pages/man2/setfsgid.2.html) sets the GID used for
* filesystem checks.
*
* Returns the previous GID.
*
* Available since API level 21.
*/
int setfsgid(gid_t __gid) __INTRODUCED_IN(21);
int setfsgid(gid_t __gid);
__END_DECLS

View file

@ -41,7 +41,7 @@ __BEGIN_DECLS
#define IN_NONBLOCK O_NONBLOCK
int inotify_init(void);
int inotify_init1(int __flags) __INTRODUCED_IN(21);
int inotify_init1(int __flags);
int inotify_add_watch(int __fd, const char* _Nonnull __path, uint32_t __mask);
int inotify_rm_watch(int __fd, uint32_t __watch_descriptor);

View file

@ -59,10 +59,8 @@ void* _Nonnull mmap(void* _Nullable __addr, size_t __size, int __prot, int __fla
* mmap64() is a variant of mmap() that takes a 64-bit offset even on LP32.
*
* See https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
*
* Available since API level 21.
*/
void* _Nonnull mmap64(void* _Nullable __addr, size_t __size, int __prot, int __flags, int __fd, off64_t __offset) __INTRODUCED_IN(21);
void* _Nonnull mmap64(void* _Nullable __addr, size_t __size, int __prot, int __flags, int __fd, off64_t __offset);
/**
* [munmap(2)](http://man7.org/linux/man-pages/man2/munmap.2.html)
@ -107,21 +105,17 @@ void* _Nonnull mremap(void* _Nonnull __old_addr, size_t __old_size, size_t __new
* [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
* locks pages (preventing swapping).
*
* Available since API level 17.
*
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*/
int mlockall(int __flags) __INTRODUCED_IN(17);
int mlockall(int __flags);
/**
* [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
* unlocks pages (allowing swapping).
*
* Available since API level 17.
*
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*/
int munlockall(void) __INTRODUCED_IN(17);
int munlockall(void);
/**
* [mlock(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)

View file

@ -46,8 +46,8 @@ typedef unsigned long long rlim64_t;
int getrlimit(int __resource, struct rlimit* _Nonnull __limit);
int setrlimit(int __resource, const struct rlimit* _Nonnull __limit);
int getrlimit64(int __resource, struct rlimit64* _Nonnull __limit) __INTRODUCED_IN(21);
int setrlimit64(int __resource, const struct rlimit64* _Nonnull __limit) __INTRODUCED_IN(21);
int getrlimit64(int __resource, struct rlimit64* _Nonnull __limit);
int setrlimit64(int __resource, const struct rlimit64* _Nonnull __limit);
int getpriority(int __which, id_t __who);
int setpriority(int __which, id_t __who, int __priority);
@ -55,7 +55,7 @@ int setpriority(int __which, id_t __who, int __priority);
int getrusage(int __who, struct rusage* _Nonnull __usage);
int prlimit(pid_t __pid, int __resource, const struct rlimit* _Nullable __new_limit, struct rlimit* _Nullable __old_limit) __INTRODUCED_IN_32(24) __INTRODUCED_IN_64(21);
int prlimit64(pid_t __pid, int __resource, const struct rlimit64* _Nullable __new_limit, struct rlimit64* _Nullable __old_limit) __INTRODUCED_IN(21);
int prlimit64(pid_t __pid, int __resource, const struct rlimit64* _Nullable __new_limit, struct rlimit64* _Nullable __old_limit);
__END_DECLS

View file

@ -71,9 +71,9 @@ typedef struct {
} \
} while (0)
void __FD_CLR_chk(int, fd_set* _Nonnull , size_t) __INTRODUCED_IN(21);
void __FD_SET_chk(int, fd_set* _Nonnull, size_t) __INTRODUCED_IN(21);
int __FD_ISSET_chk(int, const fd_set* _Nonnull, size_t) __INTRODUCED_IN(21);
void __FD_CLR_chk(int, fd_set* _Nonnull , size_t);
void __FD_SET_chk(int, fd_set* _Nonnull, size_t);
int __FD_ISSET_chk(int, const fd_set* _Nonnull, size_t);
#define __FD_CLR(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] &= ~__FDMASK(fd))
#define __FD_SET(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] |= __FDMASK(fd))

View file

@ -40,15 +40,13 @@ __BEGIN_DECLS
/* See https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md */
#if defined(__USE_FILE_OFFSET64)
ssize_t sendfile(int __out_fd, int __in_fd, off_t* _Nullable __offset, size_t __count) __RENAME(sendfile64) __INTRODUCED_IN(21);
ssize_t sendfile(int __out_fd, int __in_fd, off_t* _Nullable __offset, size_t __count) __RENAME(sendfile64);
#else
/**
* [sendfile(2)](http://man7.org/linux/man-pages/man2/sendfile.2.html) copies data directly
* between two file descriptors.
*
* Returns the number of bytes copied on success, and returns -1 and sets `errno` on failure.
*
* Available since API level 21.
*/
ssize_t sendfile(int __out_fd, int __in_fd, off_t* _Nullable __offset, size_t __count);
#endif
@ -57,6 +55,6 @@ ssize_t sendfile(int __out_fd, int __in_fd, off_t* _Nullable __offset, size_t __
* Like sendfile() but allows using a 64-bit offset
* even from a 32-bit process without `_FILE_OFFSET_BITS=64`.
*/
ssize_t sendfile64(int __out_fd, int __in_fd, off64_t* _Nullable __offset, size_t __count) __INTRODUCED_IN(21);
ssize_t sendfile64(int __out_fd, int __in_fd, off64_t* _Nullable __offset, size_t __count);
__END_DECLS

View file

@ -45,10 +45,8 @@ __BEGIN_DECLS
* file descriptor for reading signal events.
*
* Returns the file descriptor on success, and returns -1 and sets `errno` on failure.
*
* Available since API level 18.
*/
int signalfd(int __fd, const sigset_t* _Nonnull __mask, int __flags) __INTRODUCED_IN(18);
int signalfd(int __fd, const sigset_t* _Nonnull __mask, int __flags);
/**
* Like signalfd() but allows setting a signal mask with RT signals even from a 32-bit process.

View file

@ -120,7 +120,7 @@ struct cmsghdr {
? (struct cmsghdr*) (msg)->msg_control : (struct cmsghdr*) NULL)
#define CMSG_OK(mhdr, cmsg) ((cmsg)->cmsg_len >= sizeof(struct cmsghdr) && (cmsg)->cmsg_len <= (unsigned long) ((mhdr)->msg_controllen - ((char*)(cmsg) - (char*)(mhdr)->msg_control)))
struct cmsghdr* _Nullable __cmsg_nxthdr(struct msghdr* _Nonnull __msg, struct cmsghdr* _Nonnull __cmsg) __INTRODUCED_IN(21);
struct cmsghdr* _Nullable __cmsg_nxthdr(struct msghdr* _Nonnull __msg, struct cmsghdr* _Nonnull __cmsg);
#define SCM_RIGHTS 0x01
#define SCM_CREDENTIALS 0x02
@ -292,17 +292,16 @@ struct ucred {
#endif
__socketcall int accept(int __fd, struct sockaddr* _Nullable __addr, socklen_t* _Nullable __addr_length);
__socketcall int accept4(int __fd, struct sockaddr* _Nullable __addr, socklen_t* _Nullable __addr_length, int __flags) __INTRODUCED_IN(21);
__socketcall int accept4(int __fd, struct sockaddr* _Nullable __addr, socklen_t* _Nullable __addr_length, int __flags);
__socketcall int bind(int __fd, const struct sockaddr* _Nonnull __addr, socklen_t __addr_length);
__socketcall int connect(int __fd, const struct sockaddr* _Nonnull __addr, socklen_t __addr_length);
__socketcall int getpeername(int __fd, struct sockaddr* _Nonnull __addr, socklen_t* _Nonnull __addr_length);
__socketcall int getsockname(int __fd, struct sockaddr* _Nonnull __addr, socklen_t* _Nonnull __addr_length);
__socketcall int getsockopt(int __fd, int __level, int __option, void* _Nullable __value, socklen_t* _Nonnull __value_length);
__socketcall int listen(int __fd, int __backlog);
__socketcall int recvmmsg(int __fd, struct mmsghdr* _Nonnull __msgs, unsigned int __msg_count, int __flags, const struct timespec* _Nullable __timeout)
__INTRODUCED_IN(21);
__socketcall int recvmmsg(int __fd, struct mmsghdr* _Nonnull __msgs, unsigned int __msg_count, int __flags, const struct timespec* _Nullable __timeout);
__socketcall ssize_t recvmsg(int __fd, struct msghdr* _Nonnull __msg, int __flags);
__socketcall int sendmmsg(int __fd, const struct mmsghdr* _Nonnull __msgs, unsigned int __msg_count, int __flags) __INTRODUCED_IN(21);
__socketcall int sendmmsg(int __fd, const struct mmsghdr* _Nonnull __msgs, unsigned int __msg_count, int __flags);
__socketcall ssize_t sendmsg(int __fd, const struct msghdr* _Nonnull __msg, int __flags);
__socketcall int setsockopt(int __fd, int __level, int __option, const void* _Nullable __value, socklen_t __value_length);
__socketcall int shutdown(int __fd, int __how);

View file

@ -141,13 +141,13 @@ int fchmod(int __fd, mode_t __mode);
int mkdir(const char* _Nonnull __path, mode_t __mode);
int fstat(int __fd, struct stat* _Nonnull __buf);
int fstat64(int __fd, struct stat64* _Nonnull __buf) __INTRODUCED_IN(21);
int fstat64(int __fd, struct stat64* _Nonnull __buf);
int fstatat(int __dir_fd, const char* _Nonnull __path, struct stat* _Nonnull __buf, int __flags);
int fstatat64(int __dir_fd, const char* _Nonnull __path, struct stat64* _Nonnull __buf, int __flags) __INTRODUCED_IN(21);
int fstatat64(int __dir_fd, const char* _Nonnull __path, struct stat64* _Nonnull __buf, int __flags);
int lstat(const char* _Nonnull __path, struct stat* _Nonnull __buf);
int lstat64(const char* _Nonnull __path, struct stat64* _Nonnull __buf) __INTRODUCED_IN(21);
int lstat64(const char* _Nonnull __path, struct stat64* _Nonnull __buf);
int stat(const char* _Nonnull __path, struct stat* _Nonnull __buf);
int stat64(const char* _Nonnull __path, struct stat64* _Nonnull __buf) __INTRODUCED_IN(21);
int stat64(const char* _Nonnull __path, struct stat64* _Nonnull __buf);
int mknod(const char* _Nonnull __path, mode_t __mode, dev_t __dev);
mode_t umask(mode_t __mask);
@ -156,12 +156,12 @@ mode_t umask(mode_t __mask);
#include <bits/fortify/stat.h>
#endif
int mkfifo(const char* _Nonnull __path, mode_t __mode) __INTRODUCED_IN(21);
int mkfifo(const char* _Nonnull __path, mode_t __mode);
int mkfifoat(int __dir_fd, const char* _Nonnull __path, mode_t __mode) __INTRODUCED_IN(23);
int fchmodat(int __dir_fd, const char* _Nonnull __path, mode_t __mode, int __flags);
int mkdirat(int __dir_fd, const char* _Nonnull __path, mode_t __mode);
int mknodat(int __dir_fd, const char* _Nonnull __path, mode_t __mode, dev_t __dev) __INTRODUCED_IN(21);
int mknodat(int __dir_fd, const char* _Nonnull __path, mode_t __mode, dev_t __dev);
/**
* Used in the tv_nsec field of an argument to utimensat()/futimens()
@ -200,10 +200,8 @@ int utimensat(int __dir_fd, const char* __BIONIC_COMPLICATED_NULLNESS __path, co
* See also UTIME_NOW and UTIME_OMIT.
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*
* Available since API level 19.
*/
int futimens(int __fd, const struct timespec __times[_Nullable 2]) __INTRODUCED_IN(19);
int futimens(int __fd, const struct timespec __times[_Nullable 2]);
#if defined(__USE_GNU)
/**

View file

@ -93,25 +93,21 @@ struct statvfs64 { __STATVFS64_BODY __STATVFS64_CODA };
* queries filesystem statistics for the given path.
*
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*
* Available since API level 19.
*/
int statvfs(const char* _Nonnull __path, struct statvfs* _Nonnull __buf) __INTRODUCED_IN(19);
int statvfs(const char* _Nonnull __path, struct statvfs* _Nonnull __buf);
/**
* [fstatvfs(3)](http://man7.org/linux/man-pages/man3/fstatvfs.3.html)
* queries filesystem statistics for the given file descriptor.
*
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*
* Available since API level 19.
*/
int fstatvfs(int __fd, struct statvfs* _Nonnull __buf) __INTRODUCED_IN(19);
int fstatvfs(int __fd, struct statvfs* _Nonnull __buf);
/** Equivalent to statvfs() . */
int statvfs64(const char* _Nonnull __path, struct statvfs64* _Nonnull __buf) __INTRODUCED_IN(21);
int statvfs64(const char* _Nonnull __path, struct statvfs64* _Nonnull __buf);
/** Equivalent to fstatvfs(). */
int fstatvfs64(int __fd, struct statvfs64* _Nonnull __buf) __INTRODUCED_IN(21);
int fstatvfs64(int __fd, struct statvfs64* _Nonnull __buf);
__END_DECLS

View file

@ -55,18 +55,14 @@ __BEGIN_DECLS
* [swapon(2)](http://man7.org/linux/man-pages/man2/swapon.2.html) enables swapping.
*
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*
* Available since API level 19.
*/
int swapon(const char* _Nonnull __path, int __flags) __INTRODUCED_IN(19);
int swapon(const char* _Nonnull __path, int __flags);
/**
* [swapoff(2)](http://man7.org/linux/man-pages/man2/swapoff.2.html) disables swapping.
*
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*
* Available since API level 19.
*/
int swapoff(const char* _Nonnull __path) __INTRODUCED_IN(19);
int swapoff(const char* _Nonnull __path);
__END_DECLS

View file

@ -66,8 +66,7 @@ void __system_property_read_callback(const prop_info* _Nonnull __pi,
*
* This method is for inspecting and debugging the property system, and not generally useful.
*/
int __system_property_foreach(void (* _Nonnull __callback)(const prop_info* _Nonnull __pi, void* _Nullable __cookie), void* _Nullable __cookie)
__INTRODUCED_IN(19);
int __system_property_foreach(void (* _Nonnull __callback)(const prop_info* _Nonnull __pi, void* _Nullable __cookie), void* _Nullable __cookie);
/*
* Waits for the specific system property identified by `pi` to be updated

View file

@ -50,10 +50,8 @@ __BEGIN_DECLS
* timer file descriptor.
*
* Returns the new file descriptor on success, and returns -1 and sets `errno` on failure.
*
* Available since API level 19.
*/
int timerfd_create(clockid_t __clock, int __flags) __INTRODUCED_IN(19);
int timerfd_create(clockid_t __clock, int __flags);
/** The timerfd_settime() flag to use absolute rather than relative times. */
#define TFD_TIMER_ABSTIME (1 << 0)
@ -65,19 +63,15 @@ int timerfd_create(clockid_t __clock, int __flags) __INTRODUCED_IN(19);
* stops a timer.
*
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*
* Available since API level 19.
*/
int timerfd_settime(int __fd, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value) __INTRODUCED_IN(19);
int timerfd_settime(int __fd, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value);
/**
* [timerfd_gettime(2)](http://man7.org/linux/man-pages/man2/timerfd_gettime.2.html) queries the
* current timer settings.
*
* Returns 0 on success, and returns -1 and sets `errno` on failure.
*
* Available since API level 19.
*/
int timerfd_gettime(int __fd, struct itimerspec* _Nonnull __current_value) __INTRODUCED_IN(19);
int timerfd_gettime(int __fd, struct itimerspec* _Nonnull __current_value);
__END_DECLS

View file

@ -105,9 +105,9 @@ struct statfs64 { __STATFS64_BODY };
#define XFS_SUPER_MAGIC 0x58465342
int statfs(const char* _Nonnull __path, struct statfs* _Nonnull __buf);
int statfs64(const char* _Nonnull __path, struct statfs64* _Nonnull __buf) __INTRODUCED_IN(21);
int statfs64(const char* _Nonnull __path, struct statfs64* _Nonnull __buf);
int fstatfs(int __fd, struct statfs* _Nonnull __buf);
int fstatfs64(int __fd, struct statfs64* _Nonnull __buf) __INTRODUCED_IN(21);
int fstatfs64(int __fd, struct statfs64* _Nonnull __buf);
__END_DECLS

View file

@ -39,7 +39,7 @@ __BEGIN_DECLS
pid_t wait(int* _Nullable __status);
pid_t waitpid(pid_t __pid, int* _Nullable __status, int __options);
pid_t wait4(pid_t __pid, int* _Nullable __status, int __options, struct rusage* _Nullable __rusage) __INTRODUCED_IN(18);
pid_t wait4(pid_t __pid, int* _Nullable __status, int __options, struct rusage* _Nullable __rusage);
/* Posix states that idtype_t should be an enumeration type, but
* the kernel headers define P_ALL, P_PID and P_PGID as constant macros

View file

@ -49,19 +49,19 @@ __BEGIN_DECLS
* [cfgetispeed(3)](http://man7.org/linux/man-pages/man3/cfgetispeed.3.html)
* returns the terminal input baud rate.
*/
speed_t cfgetispeed(const struct termios* _Nonnull __t) __INTRODUCED_IN(21);
speed_t cfgetispeed(const struct termios* _Nonnull __t);
/**
* [cfgetospeed(3)](http://man7.org/linux/man-pages/man3/cfgetospeed.3.html)
* returns the terminal output baud rate.
*/
speed_t cfgetospeed(const struct termios* _Nonnull __t) __INTRODUCED_IN(21);
speed_t cfgetospeed(const struct termios* _Nonnull __t);
/**
* [cfmakeraw(3)](http://man7.org/linux/man-pages/man3/cfmakeraw.3.html)
* configures the terminal for "raw" mode.
*/
void cfmakeraw(struct termios* _Nonnull __t) __INTRODUCED_IN(21);
void cfmakeraw(struct termios* _Nonnull __t);
/**
* [cfsetspeed(3)](http://man7.org/linux/man-pages/man3/cfsetspeed.3.html)
@ -69,7 +69,7 @@ void cfmakeraw(struct termios* _Nonnull __t) __INTRODUCED_IN(21);
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*/
int cfsetspeed(struct termios* _Nonnull __t, speed_t __speed) __INTRODUCED_IN(21);
int cfsetspeed(struct termios* _Nonnull __t, speed_t __speed);
/**
* [cfsetispeed(3)](http://man7.org/linux/man-pages/man3/cfsetispeed.3.html)
@ -77,7 +77,7 @@ int cfsetspeed(struct termios* _Nonnull __t, speed_t __speed) __INTRODUCED_IN(21
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*/
int cfsetispeed(struct termios* _Nonnull _t, speed_t __speed) __INTRODUCED_IN(21);
int cfsetispeed(struct termios* _Nonnull _t, speed_t __speed);
/**
* [cfsetospeed(3)](http://man7.org/linux/man-pages/man3/cfsetospeed.3.html)
@ -85,7 +85,7 @@ int cfsetispeed(struct termios* _Nonnull _t, speed_t __speed) __INTRODUCED_IN(21
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*/
int cfsetospeed(struct termios* _Nonnull __t, speed_t __speed) __INTRODUCED_IN(21);
int cfsetospeed(struct termios* _Nonnull __t, speed_t __speed);
/**
* [tcdrain(3)](http://man7.org/linux/man-pages/man3/tcdrain.3.html)
@ -93,7 +93,7 @@ int cfsetospeed(struct termios* _Nonnull __t, speed_t __speed) __INTRODUCED_IN(2
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*/
int tcdrain(int __fd) __INTRODUCED_IN(21);
int tcdrain(int __fd);
/**
* [tcflow(3)](http://man7.org/linux/man-pages/man3/tcflow.3.html)
@ -102,7 +102,7 @@ int tcdrain(int __fd) __INTRODUCED_IN(21);
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*/
int tcflow(int __fd, int __action) __INTRODUCED_IN(21);
int tcflow(int __fd, int __action);
/**
* [tcflush(3)](http://man7.org/linux/man-pages/man3/tcflush.3.html)
@ -112,7 +112,7 @@ int tcflow(int __fd, int __action) __INTRODUCED_IN(21);
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*/
int tcflush(int __fd, int __queue) __INTRODUCED_IN(21);
int tcflush(int __fd, int __queue);
/**
* [tcgetattr(3)](http://man7.org/linux/man-pages/man3/tcgetattr.3.html)
@ -120,7 +120,7 @@ int tcflush(int __fd, int __queue) __INTRODUCED_IN(21);
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*/
int tcgetattr(int __fd, struct termios* _Nonnull __t) __INTRODUCED_IN(21);
int tcgetattr(int __fd, struct termios* _Nonnull __t);
/**
* [tcgetsid(3)](http://man7.org/linux/man-pages/man3/tcgetsid.3.html)
@ -129,7 +129,7 @@ int tcgetattr(int __fd, struct termios* _Nonnull __t) __INTRODUCED_IN(21);
* Returns a non-negative session id on success and
* returns -1 and sets `errno` on failure.
*/
pid_t tcgetsid(int __fd) __INTRODUCED_IN(21);
pid_t tcgetsid(int __fd);
/**
* [tcsendbreak(3)](http://man7.org/linux/man-pages/man3/tcsendbreak.3.html)
@ -137,7 +137,7 @@ pid_t tcgetsid(int __fd) __INTRODUCED_IN(21);
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*/
int tcsendbreak(int __fd, int __duration) __INTRODUCED_IN(21);
int tcsendbreak(int __fd, int __duration);
/**
* [tcsetattr(3)](http://man7.org/linux/man-pages/man3/tcsetattr.3.html)
@ -145,7 +145,7 @@ int tcsendbreak(int __fd, int __duration) __INTRODUCED_IN(21);
*
* Returns 0 on success and returns -1 and sets `errno` on failure.
*/
int tcsetattr(int __fd, int __optional_actions, const struct termios* _Nonnull __t) __INTRODUCED_IN(21);
int tcsetattr(int __fd, int __optional_actions, const struct termios* _Nonnull __t);
#endif

View file

@ -252,7 +252,7 @@ size_t strftime(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, co
/**
* Equivalent to strftime() on Android where only C/POSIX locales are available.
*/
size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3) __INTRODUCED_IN(21);
size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3);
/**
* [ctime(3)](http://man7.org/linux/man-pages/man3/ctime.3p.html) formats

View file

@ -58,10 +58,8 @@ typedef __CHAR32_TYPE__ char32_t;
*
* Returns the number of bytes written to `__buf` on success, and returns -1 and sets `errno`
* on failure.
*
* Available since API level 21.
*/
size_t c16rtomb(char* _Nullable __buf, char16_t __ch16, mbstate_t* _Nullable __ps) __INTRODUCED_IN(21);
size_t c16rtomb(char* _Nullable __buf, char16_t __ch16, mbstate_t* _Nullable __ps);
/**
* [c32rtomb(3)](http://man7.org/linux/man-pages/man3/c32rtomb.3.html) converts a single UTF-32
@ -69,25 +67,19 @@ size_t c16rtomb(char* _Nullable __buf, char16_t __ch16, mbstate_t* _Nullable __p
*
* Returns the number of bytes written to `__buf` on success, and returns -1 and sets `errno`
* on failure.
*
* Available since API level 21.
*/
size_t c32rtomb(char* _Nullable __buf, char32_t __ch32, mbstate_t* _Nullable __ps) __INTRODUCED_IN(21);
size_t c32rtomb(char* _Nullable __buf, char32_t __ch32, mbstate_t* _Nullable __ps);
/**
* [mbrtoc16(3)](http://man7.org/linux/man-pages/man3/mbrtoc16.3.html) converts the next UTF-8
* sequence to a UTF-16 code point.
*
* Available since API level 21.
*/
size_t mbrtoc16(char16_t* _Nullable __ch16, const char* _Nullable __s, size_t __n, mbstate_t* _Nullable __ps) __INTRODUCED_IN(21);
size_t mbrtoc16(char16_t* _Nullable __ch16, const char* _Nullable __s, size_t __n, mbstate_t* _Nullable __ps);
/**
* [mbrtoc32(3)](http://man7.org/linux/man-pages/man3/mbrtoc32.3.html) converts the next UTF-8
* sequence to a UTF-32 code point.
*
* Available since API level 21.
*/
size_t mbrtoc32(char32_t* _Nullable __ch32, const char* _Nullable __s, size_t __n, mbstate_t* _Nullable __ps) __INTRODUCED_IN(21);
size_t mbrtoc32(char32_t* _Nullable __ch32, const char* _Nullable __s, size_t __n, mbstate_t* _Nullable __ps);
__END_DECLS

View file

@ -86,12 +86,12 @@ int setpgid(pid_t __pid, pid_t __pgid);
pid_t getppid(void);
pid_t getpgrp(void);
int setpgrp(void);
pid_t getsid(pid_t __pid) __INTRODUCED_IN(17);
pid_t getsid(pid_t __pid);
pid_t setsid(void);
int execv(const char* _Nonnull __path, char* _Nullable const* _Nullable __argv);
int execvp(const char* _Nonnull __file, char* _Nullable const* _Nullable __argv);
int execvpe(const char* _Nonnull __file, char* _Nullable const* _Nullable __argv, char* _Nullable const* _Nullable __envp) __INTRODUCED_IN(21);
int execvpe(const char* _Nonnull __file, char* _Nullable const* _Nullable __argv, char* _Nullable const* _Nullable __envp);
int execve(const char* _Nonnull __file, char* _Nullable const* _Nullable __argv, char* _Nullable const* _Nullable __envp);
int execl(const char* _Nonnull __path, const char* _Nullable __arg0, ...) __attribute__((__sentinel__));
int execlp(const char* _Nonnull __file, const char* _Nullable __arg0, ...) __attribute__((__sentinel__));
@ -206,7 +206,7 @@ long pathconf(const char* _Nonnull __path, int __name);
int access(const char* _Nonnull __path, int __mode);
int faccessat(int __dirfd, const char* _Nonnull __path, int __mode, int __flags);
int link(const char* _Nonnull __old_path, const char* _Nonnull __new_path);
int linkat(int __old_dir_fd, const char* _Nonnull __old_path, int __new_dir_fd, const char* _Nonnull __new_path, int __flags) __INTRODUCED_IN(21);
int linkat(int __old_dir_fd, const char* _Nonnull __old_path, int __new_dir_fd, const char* _Nonnull __new_path, int __flags);
int unlink(const char* _Nonnull __path);
int unlinkat(int __dirfd, const char* _Nonnull __path, int __flags);
int chdir(const char* _Nonnull __path);
@ -218,10 +218,9 @@ int pipe2(int __fds[_Nonnull 2], int __flags);
#endif
int chroot(const char* _Nonnull __path);
int symlink(const char* _Nonnull __old_path, const char* _Nonnull __new_path);
int symlinkat(const char* _Nonnull __old_path, int __new_dir_fd, const char* _Nonnull __new_path) __INTRODUCED_IN(21);
int symlinkat(const char* _Nonnull __old_path, int __new_dir_fd, const char* _Nonnull __new_path);
ssize_t readlink(const char* _Nonnull __path, char* _Nonnull __buf, size_t __buf_size);
ssize_t readlinkat(int __dir_fd, const char* _Nonnull __path, char* _Nonnull __buf, size_t __buf_size)
__INTRODUCED_IN(21);
ssize_t readlinkat(int __dir_fd, const char* _Nonnull __path, char* _Nonnull __buf, size_t __buf_size);
int chown(const char* _Nonnull __path, uid_t __owner, gid_t __group);
int fchown(int __fd, uid_t __owner, gid_t __group);
int fchownat(int __dir_fd, const char* _Nonnull __path, uid_t __owner, gid_t __group, int __flags);
@ -261,13 +260,13 @@ ssize_t write(int __fd, const void* __BIONIC_COMPLICATED_NULLNESS __buf, size_t
int dup(int __old_fd);
int dup2(int __old_fd, int __new_fd);
int dup3(int __old_fd, int __new_fd, int __flags) __INTRODUCED_IN(21);
int dup3(int __old_fd, int __new_fd, int __flags);
int fsync(int __fd);
int fdatasync(int __fd);
/* See https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md */
#if defined(__USE_FILE_OFFSET64)
int truncate(const char* _Nonnull __path, off_t __length) __RENAME(truncate64) __INTRODUCED_IN(21);
int truncate(const char* _Nonnull __path, off_t __length) __RENAME(truncate64);
off_t lseek(int __fd, off_t __offset, int __whence) __RENAME(lseek64);
ssize_t pread(int __fd, void* _Nonnull __buf, size_t __count, off_t __offset) __RENAME(pread64);
ssize_t pwrite(int __fd, const void* _Nonnull __buf, size_t __count, off_t __offset) __RENAME(pwrite64);
@ -280,7 +279,7 @@ ssize_t pwrite(int __fd, const void* _Nonnull __buf, size_t __count, off_t __off
int ftruncate(int __fd, off_t __length);
#endif
int truncate64(const char* _Nonnull __path, off64_t __length) __INTRODUCED_IN(21);
int truncate64(const char* _Nonnull __path, off64_t __length);
off64_t lseek64(int __fd, off64_t __offset, int __whence);
ssize_t pread64(int __fd, void* _Nonnull __buf, size_t __count, off64_t __offset);
ssize_t pwrite64(int __fd, const void* _Nonnull __buf, size_t __count, off64_t __offset);
@ -303,7 +302,7 @@ int ttyname_r(int __fd, char* _Nonnull __buf, size_t __buf_size);
int acct(const char* _Nullable __path);
int getpagesize(void) __INTRODUCED_IN(21);
int getpagesize(void);
long syscall(long __number, ...);

View file

@ -58,18 +58,18 @@ size_t mbrlen(const char* _Nullable __s, size_t __n, mbstate_t* _Nullable __ps);
size_t mbrtowc(wchar_t* _Nullable __buf, const char* _Nullable __s, size_t __n, mbstate_t* _Nullable __ps);
size_t mbsrtowcs(wchar_t* _Nullable __dst, const char* _Nullable * _Nonnull __src, size_t __dst_n, mbstate_t* _Nullable __ps);
size_t mbsrtowcs_l(wchar_t* _Nullable __dst, const char* _Nullable * _Nonnull __src, size_t __dst_n, mbstate_t* _Nullable __ps, locale_t _Nonnull __l) __INTRODUCED_IN(35);
size_t mbsnrtowcs(wchar_t* _Nullable __dst, const char* _Nullable * _Nullable __src, size_t __src_n, size_t __dst_n, mbstate_t* _Nullable __ps) __INTRODUCED_IN(21);
size_t mbsnrtowcs(wchar_t* _Nullable __dst, const char* _Nullable * _Nullable __src, size_t __src_n, size_t __dst_n, mbstate_t* _Nullable __ps);
wint_t putwc(wchar_t __wc, FILE* _Nonnull __fp);
wint_t putwchar(wchar_t __wc);
int swprintf(wchar_t* _Nonnull __buf, size_t __n, const wchar_t* _Nonnull __fmt, ...);
int swscanf(const wchar_t* _Nonnull __s, const wchar_t* _Nonnull __fmt, ...);
wint_t ungetwc(wint_t __wc, FILE* _Nonnull __fp);
int vfwprintf(FILE* _Nonnull __fp, const wchar_t* _Nonnull __fmt, va_list __args);
int vfwscanf(FILE* _Nonnull __fp, const wchar_t* _Nonnull __fmt, va_list __args) __INTRODUCED_IN(21);
int vfwscanf(FILE* _Nonnull __fp, const wchar_t* _Nonnull __fmt, va_list __args);
int vswprintf(wchar_t* _Nonnull __buf, size_t __n, const wchar_t* _Nonnull __fmt, va_list __args);
int vswscanf(const wchar_t* _Nonnull __s, const wchar_t* _Nonnull __fmt, va_list __args) __INTRODUCED_IN(21);
int vswscanf(const wchar_t* _Nonnull __s, const wchar_t* _Nonnull __fmt, va_list __args);
int vwprintf(const wchar_t* _Nonnull __fmt, va_list __args);
int vwscanf(const wchar_t* _Nonnull __fmt, va_list __args) __INTRODUCED_IN(21);
int vwscanf(const wchar_t* _Nonnull __fmt, va_list __args);
wchar_t* _Nonnull wcpcpy(wchar_t* _Nonnull __dst, const wchar_t* _Nonnull __src);
wchar_t* _Nonnull wcpncpy(wchar_t* _Nonnull __dst, const wchar_t* _Nonnull __src, size_t __n);
size_t wcrtomb(char* _Nullable __buf, wchar_t __wc, mbstate_t* _Nullable __ps);
@ -89,7 +89,7 @@ int wcsncasecmp_l(const wchar_t* _Nonnull __lhs, const wchar_t* _Nonnull __rhs,
wchar_t* _Nonnull wcsncat(wchar_t* _Nonnull __dst, const wchar_t* _Nonnull __src, size_t __n);
int wcsncmp(const wchar_t* _Nonnull __lhs, const wchar_t* _Nonnull __rhs, size_t __n);
wchar_t* _Nonnull wcsncpy(wchar_t* _Nonnull __dst, const wchar_t* _Nonnull __src, size_t __n);
size_t wcsnrtombs(char* _Nullable __dst, const wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __src, size_t __src_n, size_t __dst_n, mbstate_t* _Nullable __ps) __INTRODUCED_IN(21);
size_t wcsnrtombs(char* _Nullable __dst, const wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __src, size_t __src_n, size_t __dst_n, mbstate_t* _Nullable __ps);
wchar_t* _Nullable wcspbrk(const wchar_t* _Nonnull __s, const wchar_t* _Nonnull __accept);
wchar_t* _Nullable wcsrchr(const wchar_t* _Nonnull __s, wchar_t __wc);
size_t wcsrtombs(char* _Nullable __dst, const wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __src, size_t __dst_n, mbstate_t* _Nullable __ps);
@ -98,16 +98,16 @@ size_t wcsspn(const wchar_t* _Nonnull __s, const wchar_t* _Nonnull __accept);
wchar_t* _Nullable wcsstr(const wchar_t* _Nonnull __haystack, const wchar_t* _Nonnull __needle);
double wcstod(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr);
double wcstod_l(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(28);
float wcstof(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr) __INTRODUCED_IN(21);
float wcstof(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr);
float wcstof_l(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(28);
wchar_t* _Nullable wcstok(wchar_t* _Nullable __s, const wchar_t* _Nonnull __delimiter, wchar_t* _Nonnull * _Nonnull __ptr);
long wcstol(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, int __base);
long wcstol_l(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(28);
long long wcstoll(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, int __base) __INTRODUCED_IN(21);
long double wcstold(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr) __INTRODUCED_IN(21);
long long wcstoll(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, int __base);
long double wcstold(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr);
unsigned long wcstoul(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, int __base);
unsigned long wcstoul_l(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(28);
unsigned long long wcstoull(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, int __base) __INTRODUCED_IN(21);
unsigned long long wcstoull(const wchar_t* _Nonnull __s, wchar_t* __BIONIC_COMPLICATED_NULLNESS * _Nullable __end_ptr, int __base);
int wcswidth(const wchar_t* _Nonnull __s, size_t __n);
size_t wcsxfrm(wchar_t* __BIONIC_COMPLICATED_NULLNESS __dst, const wchar_t* _Nonnull __src, size_t __n);
int wctob(wint_t __wc);
@ -123,13 +123,12 @@ wchar_t* _Nonnull wmemset(wchar_t* _Nonnull __dst, wchar_t __wc, size_t __n);
int wprintf(const wchar_t* _Nonnull __fmt, ...);
int wscanf(const wchar_t* _Nonnull __fmt, ...);
long long wcstoll_l(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
unsigned long long wcstoull_l(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
long double wcstold_l(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
long long wcstoll_l(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l);
unsigned long long wcstoull_l(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l);
long double wcstold_l(const wchar_t* _Nonnull __s, wchar_t* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l);
int wcscoll_l(const wchar_t* _Nonnull __lhs, const wchar_t* _Nonnull __rhs, locale_t _Nonnull __l) __attribute_pure__
__INTRODUCED_IN(21);
size_t wcsxfrm_l(wchar_t* __BIONIC_COMPLICATED_NULLNESS __dst, const wchar_t* _Nonnull __src, size_t __n, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int wcscoll_l(const wchar_t* _Nonnull __lhs, const wchar_t* _Nonnull __rhs, locale_t _Nonnull __l) __attribute_pure__;
size_t wcsxfrm_l(wchar_t* __BIONIC_COMPLICATED_NULLNESS __dst, const wchar_t* _Nonnull __src, size_t __n, locale_t _Nonnull __l);
size_t wcslcat(wchar_t* _Nonnull __dst, const wchar_t* _Nonnull __src, size_t __n);
size_t wcslcpy(wchar_t* _Nonnull __dst, const wchar_t* _Nonnull __src, size_t __n);

View file

@ -35,27 +35,27 @@
__BEGIN_DECLS
int iswalnum_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswalpha_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswblank_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswcntrl_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswdigit_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswgraph_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswlower_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswprint_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswpunct_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswspace_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswupper_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswxdigit_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswalnum_l(wint_t __wc, locale_t _Nonnull __l);
int iswalpha_l(wint_t __wc, locale_t _Nonnull __l);
int iswblank_l(wint_t __wc, locale_t _Nonnull __l);
int iswcntrl_l(wint_t __wc, locale_t _Nonnull __l);
int iswdigit_l(wint_t __wc, locale_t _Nonnull __l);
int iswgraph_l(wint_t __wc, locale_t _Nonnull __l);
int iswlower_l(wint_t __wc, locale_t _Nonnull __l);
int iswprint_l(wint_t __wc, locale_t _Nonnull __l);
int iswpunct_l(wint_t __wc, locale_t _Nonnull __l);
int iswspace_l(wint_t __wc, locale_t _Nonnull __l);
int iswupper_l(wint_t __wc, locale_t _Nonnull __l);
int iswxdigit_l(wint_t __wc, locale_t _Nonnull __l);
wint_t towlower_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
wint_t towupper_l(wint_t __wc, locale_t _Nonnull __l) __INTRODUCED_IN(21);
wint_t towlower_l(wint_t __wc, locale_t _Nonnull __l);
wint_t towupper_l(wint_t __wc, locale_t _Nonnull __l);
wint_t towctrans_l(wint_t __wc, wctrans_t _Nonnull __transform, locale_t _Nonnull __l) __INTRODUCED_IN(26);
wctrans_t _Nonnull wctrans_l(const char* _Nonnull __name, locale_t _Nonnull __l) __INTRODUCED_IN(26);
wctype_t wctype_l(const char* _Nonnull __name, locale_t _Nonnull __l) __INTRODUCED_IN(21);
int iswctype_l(wint_t __wc, wctype_t __transform, locale_t _Nonnull __l) __INTRODUCED_IN(21);
wctype_t wctype_l(const char* _Nonnull __name, locale_t _Nonnull __l);
int iswctype_l(wint_t __wc, wctype_t __transform, locale_t _Nonnull __l);
__END_DECLS