Document Number: AUSTIN/45r1 Title: Action item 2000-05-007 ( restrict ) Revision Date: 2000-05-25 Source: Ulrich Drepper Action: for review ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The rules for using restrict are (hopefully) following those the ISO C committee used to determine which functions of the ISO C library should get the restrict keyword added to the parameter list. They are as follows (let me know if you think the rules are incomplete or wrong): - only functions with two or more parameters need restrict - additionally at least two of the objects pointed to must have the same type. I.e., int foo (int *, double *) does not need a restrict - an exception to the above rule comes with pointers to structures. Since the standard does not define the structures in all details we must assume the worst case which is that it contains an element of the type described by one of the other parameters. I.e., int bar (int restrict *, struct baz restrict *) needs restrict since the structure baz can potentially contain an element of type `int'. With these rules the following editing rules on top of the draft 3 are necessary. I hope it's complete but am also sure I made the one or the other mistake. -- drepper@redhat.com ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Changes to the draft 3 for this action. XSH accept(), 3578-3579 int accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len); asctime_r(), 4351 char *asctime_r(const struct tm *restrict tm, char *restrict buf); dlsym(), 7759 void *dlsym(void *restrict handle, const char *restrict name); ecvt(), 8007-8009 char *ecvt(double value, int ndigit, int *restrict decpt, int *restrict sign); char *fcvt(double value, int ndigit, int *restrict decpt, int *restrict sign); not gcvt() also fcvt(), 10012 freeaddrinfo(), 12398-12399 int getaddrinfo(const char *restrict nodename, const char *restrict servname, const struct addrinfo *restrict, struct addrinfo *restrict *res); also 14365-14366 fstatvfs(), 13242 int statvfs(const char *restrict path, struct statvfs *restrict buf); gethostbyaddr(), 15322 struct hostent *getipnodebyaddr(const void *restrict, socklen_t len, int type, int *restrict error_num); also getipnodebyaddr(), 15538 setitimer(), 15555-15556 int setitimer(int which, const struct itimerval *restrict value, struct itimerval *restrict ovalue); getmsg(), 15721-15724 int getmsg(int fildes, struct strbuf *restrict ctlptr, struct strbuf *restrict dataptr, int *restrict flagsp); int getpmsg(int fildes, struct strbuf *restrict ctlptr, struct strbuf *restrict dataptr, int *restrict bandp, int *restrict flagsp); also 16345-16346 getnameinfo(), 15876-15878 int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen, char *restrict node, socklen_t nodelen, char *restrict service, socklen_t servicelen, unsigned int flags); getpeername(), 18184-16185 int getpeername(int socket, struct sockaddr *restrict address, socklen_t *address_len); getsockname(), 17001-17002 int getsockname(intsocket, struct sockaddr *address, socklen_t *address_len); getsockopt(), 17043-17044 int getsockopt(int socket, int level, int option_name, void *restrict option_value, socklen_t *restrict option_len); gettimeofday(), 17301 int gettimeofday(struct timeval *tp, void *tcp); glob(), 17487-17488 int glob(const char *restrict pattern, int flags, int (*restrict errfunc) (const char *epath, int eerrno), glob_t *restrict pglob); gmtime(), 17650 struct tm *gmtime_r(const time_t *restrict clock, struct tm *restrict result); iconv(), 17969-17970 size_t iconv(iconv_t cd, char **resrict inbuf, size_t *restrict inbytesleft, char **restrict outbuf, size_t *restrict outbytesleft); inet_ntop(), 18416-18419 const char *inet_ntop(int af, const void *restrict src, char *restrict dst, socklen_t size); int inet_pton(int ad, const char *restrict src, void *restrict dst); lio_listio(), 20883-20884 int lio_listio(int mode, struct aiocb *restict const list[restrict], int nent, struct sigevent *restrict sig); localtime_r(), 21202 struct tm *localtime_r(const time_t *restrict clock, struct tm *restrict result); lstat(), 21824 int lstat(const char *restrict path, struct stat *restrict buf); makecontext(), 21807 int swapcontext(ucontext_t *restrict oucp, const ucontext_t *restrict ucp); also 41366 memccpy(), 22329 void *memccpy(void *restrict s1, const void *restrict s2, int c, size_t n); mq_receive(), 23805-23806 int mq_timedreceive(mqd_t mqdes, char *resrict msg_ptr, size_t msg_len, unsigned int *restrict msg_prio, const struct timespec *restrict abs_timeout); also 24027-24028 mq_setattr(), 23980-23981 int mq_setattr(mqd_t mqdes, const struct mq_attr *restrict mqstat, struct mq_attr *restrict omqstat); posix_mem_offset(), 26104-26105 int posix_mem_offset(const void *restrict addr, size_t len, off_t *restrict off, size_t *restrict config_len, int *restrict fildes); posix_spawn(), 26185-26193 int posix_spawn(pid_t *restrict, const char *restrict path, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *restrict attrp, char *const argv[restrict], char *const envp[restrict]); int posix_spawnp(pid_t *restrict, const char *restrict path, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *restrict attrp, char *const argv[restrict], char *const envp[restrict]); also 27152-27155 posix_spawn_file_actions_addclose(), 26523-26525 int posix_spawn_file_actions_addopen(posi_spawn_file_actions_t *restrict file_actions, int fildes, const char *restrict, int oflag, mode_t mode); also 26670-26672 posix_spawnattr_getsigdefault(), 26796-26800 int posix_spawnattr_getsigdefault(const posix_spawnattr_t *restrict attr, sigset_t *restrict sigdefault); int posix_spawnattr_setsigdefault(posix_spawnattr_t *restrict attr, const sigset_t *restrict sigdefault); also 27093-27094 posix_spawnattr_getflags(), 26843-26844 int posix_spawnattr_getflags(const posix_spawnattr_t *restrict attr, short *restrict flags); posix_spawnattr_getpgroup(), 26893-26894 int posix_spawnattr_getpgroup(const posix_spawnattr_t *restrict attr, pid_t *restrict pgroup); posix_spawnattr_getschedparam(), 26940-26941 int posix_spawnattr_getschedparam(const posix_spawnattr_t *restrict attr, struct sched_param *restrict schedparam); int posix_spawnattr_setschedparam(posix_spawnattr_t *restrict attr, const struct sched_param *restrict schedparam); posix_spawnattr_getschedpolicy(), 26989-26990 int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *restrict attr, int *restrict schedpolicy); posix_spawn_attr_getsigmask(), 27037-27040 int posix_spawnattr_getsigmask(const posix_spawnattr_t *restrict attr, sigset_t *restrict sigmask); int posix_spawnattr_setsigmask(posix_spawnattr_t *restrict attr, const sigset_t *restrict sigmask); also 27143-27144 pthread_attr_getguardsize(), 27631-27632 int pthread_attr_getguardsize(const pthread_attr_t *restrict attr, size_t *restrict guardsize); pthread_attr_getinheritsched(), 27691-27692 int pthread_attr_getinheritsched(const pthread_attr_t *restrict attr, int *restrict inheritsched); pthtread_attr_getshedparam(), 27743-27746 int pthread_attr_getschedparam(const pthread_attr_t *restrict attr, struct sched_param *restrict param); int pthread_attr_setschedparam(pthread_attr_t *restrict attr, const struct sched_param *restrict param); also 27991-27992 pthread_attr_getschedpolicy(), 27791-27792 int pthread_attr_getschedpolicy(const pthread_attr_t *restrict attr, int *restrict policy); pthread_attr_getscope(), 27837-27838 int pthread_attr_getscope(const pthread_attr_t *restrict attr, int *restrict contentionscope); pthread_attr_getstackaddr(), 27881-27882 int pthread_attr_getstackaddr(const pthread_attr_t *restrict attr, void **restrict stackaddr); pthread_attr_getstacksize(), 27918-27919 int pthread_attr_getstacksize(const pthread_attr_t *restrict attr, size_t *restrict stacksize); pthread_barrier_destroy(), 28038-28039 int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restrict attr, unsigned int count); also 28101-28102 pthread_barrierattr_getpshared(), 28207-28208 int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict attr, int *restrict pshared); pthread_cond_destroy(), 28633-28634 int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr); also 28735-28736 pthread_cond_timedwait(), 28753-28756 int pthread_cond_timedwait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex, const struct timespec *restrict abstime); int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex); also 28944 pthread_condattr_getclock(), 29003-29004 int pthread_condattr_getclock(const pthread_condattr_t *restrict attr, clockid_t *restrict clock_id); pthread_condattr_getpshared(), 29050-29051 int pthread_condattr_getpshared(const pthread_condattr_t *restrict attr, int *restrict pshared); pthread_create(), 29128-29129 int pthread_create(pthread_t *restrict, const pthread_attr_t *restrict attr, void *(*start_routine)(void *), void *arg); pthread_getschedparam(), 29457-29458 int pthread_getschedparam(pthread_t thread, int *restrict policy, struct sched_para *restrict param); pthread_mutex_destroy(), 29909-29910 int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); also 30166-30167 pthread_mutex_getprioceiling(), 30115-30119 int pthread_mutex_getprioceiling(const pthread_mutex_t *restrict mutex, int *restrict prioceiling); int pthread_mutex_setprioceiling(pthread_mutex_t *restrict, mutex, int prioceiling, int *restrict old_ceiling); also 30284-30285 pthread_mutex_timedlock(), 30294-30295 int pthread_mutex_timedlock(pthread_mutex_t *restrict mutex, const struct timespec *restrict abs_timeout); pthread_mutexattr_getprioceiling(), 30581-30582 int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *restrict attr, int *restrict prioceiling); pthread_mutexattr_getprotocol(), 30632-30633 int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict attr, int *restrict protocol); pthread_mutexattr_getpshared(), 30707-30708 int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict attr, int *restrict pshared); pthread_mutexattr_gettype(), 30760-30761 int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict attr, int *restrict type); pthread_rwlock_destroy(), 30958-30959 int pthread_rwlock_init(pthred_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr); also 31036-31037 pthread_rwlock_timedrdlock(), 31129-31130 int pthread_rwlock_timedrdlock(pthread_rwlock_t *restrict rwlock, const struct timespec *restrict abs_timeout); pthread_rwlock_timedwrlock(), 31129-31130 int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rwlock, const struct timespec *restrict abs_timeout); pthread_rwlockattr_getpshared(), 31424-31425 int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict attr, int *restrict pshared); pthread_sigmask(), 31618-31619 int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict oset); int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset); readdir(), 32831 int readdir_r(DIR *restrict disp, struct dirent *restrict entry, struct dirent **restrict result); readlink(), 32968 ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize); realpath(), 33122 char *realpath(const char *restrict file_name, char *restrict resolved_named); recvfrom(), 33260-33261 ssize_t recvfrom(int socket, void *restrict buffer, size_t length, int flags, struct sockaddr *restrict address, socklent *restrict address_len); regcomp(), 33454-33458 int regcomp(regex_t *restrict preg, const char *restrict pattern, int cflags); size_t regerror(int errcode, const rege_t *restrict preg, char *restrict errbuf, size_t errbuf_size); int regexec(const regex_t *restrict preg, const char *restrict string, size_t nmatch, regmatch_t pmatch[restrict], int eflags); select(), 34779-34780 int select(int nfds, fd_set *restrict readfds, restrict *restrict writefds, fd_set *restrict errorfds, struct timeval *restrict restrict timeout); sem_getvalue(), 34982 int sem_getvalue(sem_t *restrict sem, int *restrict sval); sem_timedwait(), 35224 int sem_timedwait(sem_t *restrict sem, const timespec *restrict abs_timeout); setitimer(), 36363-3364 int setitimer(int which, const struct itimerval *restrict value, struct itimerval *restrict ovalue); sigaction(), 37784-37785 int sigaction(int sig, const struct sigaction *restrict act, struct sigaction *restrict oact); sigaltstack(), 38114 int sigaltstack(const stack_t *restrict ss, stack_t *restrict oss); sigprocmask(), 38619 int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset); sigtimedwait(), 38839-38840 int sigtimedwait(const sigset_t *restrict set, siginfo_t *restrict info, const struct timespec *restrict timeout); int sigwaitinfo(const sigset_t *restrict set, siginfo_t *restrict info); also 39039 sigwait(), 38984 int sigwait(const sigset_t *restrict set, int *restrict sig); stat(), 39468 int stat(const char *restrict path, struct stat *restrict buf); statvfs(), 39635 int statvfs(const char *restrict path, struct statvfs *restrict buf); strfmon(), 40137 ssize_t strfmon(char *restrict s, size_t maxsize, const char *restrict format, ...); strptime(), 40653 char *strptime(const char *restrict buf, const char *restrict format, struct tm*restrict tm); strtok(), 40982 char *strtok_r(char *restrict s, const char *restrict sep, char **restrict lasts); swab(), 41327 void swab(const void *restrict src, void *restrict dest, ssize_t nbytes); tdelete(), 42636-42637 void *tdelete(const void *restrict key, void **restrict rootp, int (*compar)(const void *, const void *)); also 43598-43599 timer_create(), 42836-42837 int timer_create(clockid_t clockid, struct sigevent *restrict evp, timer_t *restrict timerid); timer_getoverrun(), 42983-42984 int timer_settime(timer_t timerid, int flags, const struct itimerspec *restrct value, struct itimerspec *restrict ovalue); wordexp(), 46667 int wordexp(const char *restrict words, wordexp_t *restrict pwordep, int flags); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XBD: , 8278-8279 int lio_listio(int mode, struct aiocb *restict const list[restrict], int nent, struct sigevent *restrict sig); , 8320-8321 const char *inet_ntop(int af, const void *restrict src, char *restrict dst, socklen_t size); int inet_pton(int ad, const char *restrict src, void *restrict dst); , 8479 int readdir_r(DIR *restrict disp, struct dirent *restrict entry, struct dirent **restrict result); , 8543 void *dlsym(void *restrict handle, const char *restrict name); , 9019-9020 int glob(const char *restrict pattern, int flags, int (*restrict errfunc) (const char *epath, int eerrno), glob_t *restrict pglob); , 9097 size_t iconv(iconv_t cd, char **resrict inbuf, size_t *restrict inbytesleft, char **restrict outbuf, size_t *restrict outbytesleft); ssize_t strfmon(char *restrict s, size_t maxsize, const char *restrict format, ...); , 10114 int mq_setattr(mqd_t mqdes, const struct mq_attr *restrict mqstat, struct mq_attr *restrict omqstat); , 10115 int mq_timedreceive(mqd_t mqdes, char *resrict msg_ptr, size_t msg_len, unsigned int *restrict msg_prio, const struct timespec *restrict abs_timeout); , 10280 struct hostent *getipnodebyaddr(const void *restrict, socklen_t len, int type, int *restrict error_num); , 10622-10629 int pthread_attr_getguardsize(const pthread_attr_t *restrict attr, size_t *restrict guardsize); int pthread_attr_getinheritsched(const pthread_attr_t *restrict attr, int *restrict inheritsched); int pthread_attr_getschedparam(const pthread_attr_t *restrict attr, struct sched_param *restrict param); int pthread_attr_getschedpolicy(const pthread_attr_t *restrict attr, int *restrict policy); int pthread_attr_getscope(const pthread_attr_t *restrict attr, int *restrict contentionscope); int pthread_attr_getstackaddr(const pthread_attr_t *restrict attr, void **restrict stackaddr); int pthread_attr_getstacksize(const pthread_attr_t *restrict attr, size_t *restrict stacksize); , 10634-10635 int pthread_attr_setschedparam(pthread_attr_t *restrict attr, const struct sched_param *restrict param); , 10641-10642 int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restrict attr, unsigned int count); , 10645-10646 int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict attr, int *restrict pshared); , 10654 int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr); , 10656-10658 int pthread_cond_timedwait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex, const struct timespec *restrict abstime); int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex); , 10660-10661 int pthread_condattr_getclock(const pthread_condattr_t *restrict attr, clockid_t *restrict clock_id); int pthread_condattr_getpshared(const pthread_condattr_t *restrict attr, int *restrict pshared); , 10665-10666 int pthread_create(pthread_t *restrict, const pthread_attr_t *restrict attr, void *(*start_routine)(void *), void *arg); , 10672 int pthread_getschedparam(pthread_t thread, int *restrict policy, struct sched_para *restrict param); , 10679-10680 int pthread_mutex_getprioceiling(const pthread_mutex_t *restrict mutex, int *restrict prioceiling); int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); , 10682-10684 int pthread_mutex_setprioceiling(pthread_mutex_t *restrict, mutex, int prioceiling, int *restrict old_ceiling); int pthread_mutex_timedlock(pthread_mutex_t *restrict mutex, const struct timespec *restrict abs_timeout); , 10688-10692 int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *restrict attr, int *restrict prioceiling); int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict attr, int *restrict protocol); int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict attr, int *restrict pshared); int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict attr, int *restrict type); , 10700-10701 int pthread_rwlock_init(pthred_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr); , 10703-10706 int pthread_rwlock_timedrdlock(pthread_rwlock_t *restrict rwlock, const struct timespec *restrict abs_timeout); int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rwlock, const struct timespec *restrict abs_timeout); , 10712-10713 int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict attr, int *restrict pshared); , 10725 int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict oset); , 10873-10875 int regcomp(regex_t *restrict preg, const char *restrict pattern, int cflags); size_t regerror(int errcode, const rege_t *restrict preg, char *restrict errbuf, size_t errbuf_size); int regexec(const regex_t *restrict preg, const char *restrict string, size_t nmatch, regmatch_t pmatch[restrict], int eflags); , 10971 void *tdelete(const void *restrict key, void **restrict rootp, int (*compar)(const void *, const void *)); , 11014 int sem_getvalue(sem_t *restrict sem, int *restrict sval); , 11018 int sem_timedwait(sem_t *restrict sem, const timespec *restrict abs_timeout); , 11301 int sigaction(int sig, const struct sigaction *restrict act, struct sigaction *restrict oact); , 11303 int sigaltstack(const stack_t *restrict ss, stack_t *restrict oss); , 11314 int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset); , 11321-11324 int sigtimedwait(const sigset_t *restrict set, siginfo_t *restrict info, const struct timespec *restrict timeout); int sigwait(const sigset_t *restrict set, int *restrict sig); int sigwaitinfo(const sigset_t *restrict set, siginfo_t *restrict info); , 11411-11417 int posix_spawnattr_getsigdefault(const posix_spawnattr_t *restrict attr, sigset_t *restrict sigdefault); int posix_spawnattr_getflags(const posix_spawnattr_t *restrict attr, short *restrict flags); int posix_spawnattr_getpgroup(const posix_spawnattr_t *restrict attr, pid_t *restrict pgroup); int posix_spawnattr_getschedparam(const posix_spawnattr_t *restrict attr, struct sched_param *restrict schedparam); int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *restrict attr, int *restrict schedpolicy); int posix_spawnattr_getsigmask(const posix_spawnattr_t *restrict attr, sigset_t *restrict sigmask); , 11419 int posix_spawnattr_setsigdefault(posix_spawnattr_t *restrict attr, const sigset_t *restrict sigdefault); , 11422-11424 int posix_spawnattr_setschedparam(posix_spawnattr_t *restrict attr, const struct sched_param *restrict schedparam); int posix_spawnattr_setsigmask(posix_spawnattr_t *restrict attr, const sigset_t *restrict sigmask); , 11430 int posix_spawn_file_actions_addopen(posi_spawn_file_actions_t *restrict file_actions, int fildes, const char *restrict, int oflag, mode_t mode); , 11434-11439 int posix_spawn(pid_t *restrict, const char *restrict path, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *restrict attrp, char *const argv[restrict], char *const envp[restrict]); int posix_spawnp(pid_t *restrict, const char *restrict path, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *restrict attrp, char *const argv[restrict], char *const envp[restrict]); , 11764 char *ecvt(double value, int ndigit, int *restrict decpt, int *restrict sign); , 11767 char *fcvt(double value, int ndigit, int *restrict decpt, int *restrict sign); , 11797 char *realpath(const char *restrict file_name, char *restrict resolved_named); , 11882 void *memccpy(void *restrict s1, const void *restrict s2, int c, size_t n); , 11905 char *strtok_r(char *restrict s, const char *restrict sep, char **restrict lasts); , 12127-12128 int getmsg(int fildes, struct strbuf *restrict ctlptr, struct strbuf *restrict dataptr, int *restrict flagsp); int getpmsg(int fildes, struct strbuf *restrict ctlptr, struct strbuf *restrict dataptr, int *restrict bandp, int *restrict flagsp); int posix_mem_offset(const void *restrict addr, size_t len, off_t *restrict off, size_t *restrict config_len, int *restrict fildes); , 12648 int accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len); , 12651 int getpeername(int socket, struct sockaddr *restrict address, socklen_t *address_len); int getsockname(int socket, struct sockaddr *restrict address, socklen_t *address_len); int getsockopt(int socket, int level, int option_name, void *restrict option_value, socklen_t *restrict option_len); , 12656 ssize_t recvfrom(int socket, void *restrict buffer, size_t length, int flags, struct sockaddr *restrict address, socklent *restrict address_len); , 12837 int lstat(const char *restrict path, struct stat *restrict buf); , 12841 int stat(const char *restrict path, struct stat *restrict buf); , 12932 int statvfs(const char *restrict path, struct statvfs *restrict buf); , 12991-12993 int setitimer(int which, const struct itimerval *restrict value, struct itimerval *restrict ovalue); int gettimeofday(struct timeval *tp, void *tcp); int select(int nfds, fd_set *restrict readfds, restrict *restrict writefds, fd_set *restrict errorfds, struct timeval *restrict restrict timeout); pid_t wait3(int *restrict, int, struct rusage *restrict); , 13702 char *asctime_r(const struct tm *restrict tm, char *restrict buf); , 13715 struct tm *gmtime_r(const time_t *restrict clock, struct tm *restrict result); , 13717 struct tm *localtime_r(const time_t *restrict clock, struct tm *restrict result); , 13721 char *strptime(const char *restrict buf, const char *restrict format, struct tm*restrict tm); , 13723 int timer_create(clockid_t clockid, struct sigevent *restrict evp, timer_t *restrict timerid); , 13727 int timer_settime(timer_t timerid, int flags, const struct itimerspec *restrct value, struct itimerspec *restrict ovalue); , 13807 int swapcontext(ucontext_t *restrict oucp, const ucontext_t *restrict ucp); , 14434 ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize); , 14447 void swab(const void *restrict src, void *restrict dest, ssize_t nbytes); , 14952 int wordexp(const char *restrict words, wordexp_t *restrict pwordep, int flags);