diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/gen/sysctl.3 | 18 | ||||
-rw-r--r-- | lib/libc/net/getaddrinfo.3 | 7 | ||||
-rw-r--r-- | lib/libc/net/getnameinfo.3 | 16 | ||||
-rw-r--r-- | lib/libc/net/sctp_sys_calls.c | 8 | ||||
-rw-r--r-- | lib/libc/sparc64/gen/makecontext.c | 10 | ||||
-rw-r--r-- | lib/libc/sparc64/gen/signalcontext.c | 6 | ||||
-rw-r--r-- | lib/libc/stdio/fwrite.c | 2 | ||||
-rw-r--r-- | lib/libc/stdio/mktemp.3 | 33 | ||||
-rw-r--r-- | lib/libc/stdlib/getenv.c | 5 | ||||
-rw-r--r-- | lib/libkvm/Makefile | 1 | ||||
-rw-r--r-- | lib/libkvm/kvm.h | 2 | ||||
-rw-r--r-- | lib/libthread_db/arch/sparc64/libpthread_md.c | 12 | ||||
-rw-r--r-- | lib/libusb/Makefile | 15 | ||||
-rw-r--r-- | lib/libusb/libusb20.c | 20 | ||||
-rw-r--r-- | lib/libusb/libusb20_ugen20.c | 78 | ||||
-rw-r--r-- | lib/libusb/libusb_global_linux.h | 9 | ||||
-rw-r--r-- | lib/msun/src/math.h | 78 |
17 files changed, 192 insertions, 128 deletions
diff --git a/lib/libc/gen/sysctl.3 b/lib/libc/gen/sysctl.3 index b3737e2..d689b7c 100644 --- a/lib/libc/gen/sysctl.3 +++ b/lib/libc/gen/sysctl.3 @@ -28,7 +28,7 @@ .\" @(#)sysctl.3 8.4 (Berkeley) 5/9/95 .\" $FreeBSD$ .\" -.Dd February 11, 2012 +.Dd May 17, 2013 .Dt SYSCTL 3 .Os .Sh NAME @@ -547,14 +547,14 @@ The length of each message is contained in the message header. The third level name is a protocol number, which is currently always 0. The fourth level name is an address family, which may be set to 0 to select all address families. -The fifth and sixth level names are as follows: -.Bl -column "Fifth level nameXXXXXX" "Sixth level is:XXX" -offset indent -.It Sy "Fifth level name Sixth level is:" -.It "NET_RT_FLAGS rtflags" -.It "NET_RT_DUMP None" -.It "NET_RT_IFLIST 0 or if_index" -.It "NET_RT_IFMALIST 0 or if_index" -.It "NET_RT_IFLISTL 0 or if_index" +The fifth, sixth, and seventh level names are as follows: +.Bl -column -offset indent "Fifth level Sixth level" "Seventh level" +.It Sy "Fifth level Sixth level" Ta Sy "Seventh level" +.It "NET_RT_FLAGS rtflags" Ta "None" +.It "NET_RT_DUMP None" Ta "None or fib number" +.It "NET_RT_IFLIST 0 or if_index" Ta None +.It "NET_RT_IFMALIST 0 or if_index" Ta None +.It "NET_RT_IFLISTL 0 or if_index" Ta None .El .Pp The diff --git a/lib/libc/net/getaddrinfo.3 b/lib/libc/net/getaddrinfo.3 index c55a493..5d03aab 100644 --- a/lib/libc/net/getaddrinfo.3 +++ b/lib/libc/net/getaddrinfo.3 @@ -255,7 +255,7 @@ member points to a filled-in socket address structure of length This implementation of .Fn getaddrinfo allows numeric IPv6 address notation with scope identifier, -as documented in chapter 11 of draft-ietf-ipv6-scoping-arch-02.txt. +as documented in chapter 11 of RFC 4007. By appending the percent character and scope identifier to addresses, one can fill the .Li sin6_scope_id @@ -441,9 +441,8 @@ freeaddrinfo(res0); .%A E. Nordmark .%A B. Zill .%T "IPv6 Scoped Address Architecture" -.%R internet draft -.%N draft-ietf-ipv6-scoping-arch-02.txt -.%O work in progress material +.%R RFC 4007 +.%D March 2005 .Re .Rs .%A Craig Metz diff --git a/lib/libc/net/getnameinfo.3 b/lib/libc/net/getnameinfo.3 index a904e8c..0549ccd 100644 --- a/lib/libc/net/getnameinfo.3 +++ b/lib/libc/net/getnameinfo.3 @@ -191,10 +191,11 @@ printf("host=%s\en", hbuf); .%A R. Gilligan .%A S. Thomson .%A J. Bound +.%A J. McCann .%A W. Stevens .%T Basic Socket Interface Extensions for IPv6 -.%R RFC 2553 -.%D March 1999 +.%R RFC 3493 +.%D February 2003 .Re .Rs .%A S. Deering @@ -203,9 +204,8 @@ printf("host=%s\en", hbuf); .%A E. Nordmark .%A B. Zill .%T "IPv6 Scoped Address Architecture" -.%R internet draft -.%N draft-ietf-ipv6-scoping-arch-02.txt -.%O work in progress material +.%R RFC 4007 +.%D March 2005 .Re .Rs .%A Craig Metz @@ -217,9 +217,9 @@ printf("host=%s\en", hbuf); The .Fn getnameinfo function is defined by the -.St -p1003.1g-2000 -draft specification and documented in -.Tn "RFC 2553" , +.St -p1003.1-2004 +specification and documented in +.Tn "RFC 3493" , .Dq Basic Socket Interface Extensions for IPv6 . .Sh CAVEATS .Fn getnameinfo diff --git a/lib/libc/net/sctp_sys_calls.c b/lib/libc/net/sctp_sys_calls.c index 6b938a4..1b65b07 100644 --- a/lib/libc/net/sctp_sys_calls.c +++ b/lib/libc/net/sctp_sys_calls.c @@ -274,6 +274,11 @@ sctp_opt_info(int sd, sctp_assoc_t id, int opt, void *arg, socklen_t * size) errno = EINVAL; return (-1); } + if ((id == SCTP_CURRENT_ASSOC) || + (id == SCTP_ALL_ASSOC)) { + errno = EINVAL; + return (-1); + } switch (opt) { case SCTP_RTOINFO: ((struct sctp_rtoinfo *)arg)->srto_assoc_id = id; @@ -338,6 +343,9 @@ sctp_opt_info(int sd, sctp_assoc_t id, int opt, void *arg, socklen_t * size) case SCTP_MAX_BURST: ((struct sctp_assoc_value *)arg)->assoc_id = id; break; + case SCTP_ENABLE_STREAM_RESET: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; default: break; } diff --git a/lib/libc/sparc64/gen/makecontext.c b/lib/libc/sparc64/gen/makecontext.c index 95795de..42bcc88 100644 --- a/lib/libc/sparc64/gen/makecontext.c +++ b/lib/libc/sparc64/gen/makecontext.c @@ -54,12 +54,12 @@ __makecontext(ucontext_t *ucp, void (*start)(void), int argc, ...) mc = &ucp->uc_mcontext; if (ucp == NULL || - (mc->mc_flags & ((1L << _MC_VERSION_BITS) - 1)) != _MC_VERSION) + (mc->_mc_flags & ((1L << _MC_VERSION_BITS) - 1)) != _MC_VERSION) return; if ((argc < 0) || (argc > 6) || (ucp->uc_stack.ss_sp == NULL) || (ucp->uc_stack.ss_size < MINSIGSTKSZ)) { - mc->mc_flags = 0; + mc->_mc_flags = 0; return; } mc = &ucp->uc_mcontext; @@ -71,8 +71,8 @@ __makecontext(ucontext_t *ucp, void (*start)(void), int argc, ...) mc->mc_global[1] = (uint64_t)start; mc->mc_global[2] = (uint64_t)ucp; mc->mc_out[6] = sp - SPOFF - sizeof(struct frame); - mc->mc_tnpc = (uint64_t)_ctx_start + 4; - mc->mc_tpc = (uint64_t)_ctx_start; + mc->_mc_tnpc = (uint64_t)_ctx_start + 4; + mc->_mc_tpc = (uint64_t)_ctx_start; } void @@ -82,7 +82,7 @@ _ctx_done(ucontext_t *ucp) if (ucp->uc_link == NULL) exit(0); else { - ucp->uc_mcontext.mc_flags = 0; + ucp->uc_mcontext._mc_flags = 0; setcontext((const ucontext_t *)ucp->uc_link); abort(); } diff --git a/lib/libc/sparc64/gen/signalcontext.c b/lib/libc/sparc64/gen/signalcontext.c index 622f36f..1591845 100644 --- a/lib/libc/sparc64/gen/signalcontext.c +++ b/lib/libc/sparc64/gen/signalcontext.c @@ -52,7 +52,7 @@ __signalcontext(ucontext_t *ucp, int sig, __sighandler_t *func) mcontext_t *mc; mc = &ucp->uc_mcontext; - sfp = (struct sigframe *)(mc->mc_sp + SPOFF) - 1; + sfp = (struct sigframe *)(mc->_mc_sp + SPOFF) - 1; fp = (struct frame *)sfp - 1; bzero(fp, sizeof(*fp)); @@ -67,8 +67,8 @@ __signalcontext(ucontext_t *ucp, int sig, __sighandler_t *func) mc->mc_out[1] = (uint64_t)&sfp->sf_si; mc->mc_out[2] = (uint64_t)&sfp->sf_uc; mc->mc_out[6] = (uint64_t)fp - SPOFF; - mc->mc_tnpc = (uint64_t)_ctx_start + 4; - mc->mc_tpc = (uint64_t)_ctx_start; + mc->_mc_tnpc = (uint64_t)_ctx_start + 4; + mc->_mc_tpc = (uint64_t)_ctx_start; ucp->uc_link = &sfp->sf_uc; sigdelset(&ucp->uc_sigmask, sig); diff --git a/lib/libc/stdio/fwrite.c b/lib/libc/stdio/fwrite.c index 707d362..5b57fab0 100644 --- a/lib/libc/stdio/fwrite.c +++ b/lib/libc/stdio/fwrite.c @@ -65,7 +65,7 @@ fwrite(const void * __restrict buf, size_t size, size_t count, FILE * __restrict /* * Check for integer overflow. As an optimization, first check that * at least one of {count, size} is at least 2^16, since if both - * values are less than that, their product can't possible overflow + * values are less than that, their product can't possibly overflow * (size_t is always at least 32 bits on FreeBSD). */ if (((count | size) > 0xFFFF) && diff --git a/lib/libc/stdio/mktemp.3 b/lib/libc/stdio/mktemp.3 index b51a177..6a46cf0 100644 --- a/lib/libc/stdio/mktemp.3 +++ b/lib/libc/stdio/mktemp.3 @@ -28,7 +28,7 @@ .\" @(#)mktemp.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd March 4, 2012 +.Dd July 5, 2013 .Dt MKTEMP 3 .Os .Sh NAME @@ -37,15 +37,16 @@ .Sh LIBRARY .Lb libc .Sh SYNOPSIS -.In unistd.h +.In stdlib.h .Ft char * .Fn mktemp "char *template" .Ft int .Fn mkstemp "char *template" -.Ft int -.Fn mkstemps "char *template" "int suffixlen" .Ft char * .Fn mkdtemp "char *template" +.In unistd.h +.Ft int +.Fn mkstemps "char *template" "int suffixlen" .Sh DESCRIPTION The .Fn mktemp @@ -180,12 +181,36 @@ with an argument of will result in a core dump due to .Fn mkstemp attempting to modify the string constant that was given. +.Pp +The +.Fn mkdtemp , +.Fn mkstemp +and +.Fn mktemp +function prototypes are also available from +.In unistd.h . .Sh SEE ALSO .Xr chmod 2 , .Xr getpid 2 , .Xr mkdir 2 , .Xr open 2 , .Xr stat 2 +.Sh STANDARDS +The +.Fn mkstemp +and +.Fn mkdtemp +functions are expected to conform to +.St -p1003.1-2008 . +The +.Fn mktemp +function is expected to conform to +.St -p1003.1-2001 +and is not specified by +.St -p1003.1-2008 . +The +.Fn mkstemps +function does not conform to any standard. .Sh HISTORY A .Fn mktemp diff --git a/lib/libc/stdlib/getenv.c b/lib/libc/stdlib/getenv.c index 47963d5..8451103 100644 --- a/lib/libc/stdlib/getenv.c +++ b/lib/libc/stdlib/getenv.c @@ -505,9 +505,8 @@ __setenv(const char *name, size_t nameLen, const char *value, int overwrite) envVars[envNdx].valueSize = valueLen; /* Save name of name/value pair. */ - env = stpcpy(envVars[envNdx].name, name); - if ((envVars[envNdx].name)[nameLen] != '=') - env = stpcpy(env, "="); + env = stpncpy(envVars[envNdx].name, name, nameLen); + *env++ = '='; } else env = envVars[envNdx].value; diff --git a/lib/libkvm/Makefile b/lib/libkvm/Makefile index 5b5ad43..f21a1bf 100644 --- a/lib/libkvm/Makefile +++ b/lib/libkvm/Makefile @@ -3,6 +3,7 @@ LIB= kvm SHLIBDIR?= /lib +SHLIB_MAJOR= 6 CFLAGS+=-DLIBC_SCCS -I${.CURDIR} .if exists(${.CURDIR}/kvm_${MACHINE_ARCH}.c) diff --git a/lib/libkvm/kvm.h b/lib/libkvm/kvm.h index 43b0551..d2ee8fa 100644 --- a/lib/libkvm/kvm.h +++ b/lib/libkvm/kvm.h @@ -89,8 +89,6 @@ kvm_t *kvm_openfiles (const char *, const char *, const char *, int, char *); ssize_t kvm_read(kvm_t *, unsigned long, void *, size_t); ssize_t kvm_read_zpcpu(kvm_t *, void *, u_long, size_t, int); -ssize_t kvm_uread - (kvm_t *, const struct kinfo_proc *, unsigned long, char *, size_t); ssize_t kvm_write(kvm_t *, unsigned long, const void *, size_t); __END_DECLS diff --git a/lib/libthread_db/arch/sparc64/libpthread_md.c b/lib/libthread_db/arch/sparc64/libpthread_md.c index 6a84518..ffa67e9 100644 --- a/lib/libthread_db/arch/sparc64/libpthread_md.c +++ b/lib/libthread_db/arch/sparc64/libpthread_md.c @@ -57,9 +57,9 @@ pt_fpreg_to_ucontext(const struct fpreg* r, ucontext_t *uc) memcpy(mc->mc_fp, r->fr_regs, MIN(sizeof(mc->mc_fp), sizeof(r->fr_regs))); - mc->mc_fsr = r->fr_fsr; - mc->mc_gsr = r->fr_gsr; - mc->mc_fprs |= FPRS_FEF; + mc->_mc_fsr = r->fr_fsr; + mc->_mc_gsr = r->fr_gsr; + mc->_mc_fprs |= FPRS_FEF; } void @@ -67,11 +67,11 @@ pt_ucontext_to_fpreg(const ucontext_t *uc, struct fpreg *r) { const mcontext_t *mc = &uc->uc_mcontext; - if ((mc->mc_fprs & FPRS_FEF) != 0) { + if ((mc->_mc_fprs & FPRS_FEF) != 0) { memcpy(r->fr_regs, mc->mc_fp, MIN(sizeof(mc->mc_fp), sizeof(r->fr_regs))); - r->fr_fsr = mc->mc_fsr; - r->fr_gsr = mc->mc_gsr; + r->fr_fsr = mc->_mc_fsr; + r->fr_gsr = mc->_mc_gsr; } else memset(r, 0, sizeof(*r)); } diff --git a/lib/libusb/Makefile b/lib/libusb/Makefile index ce50593..d0698e3 100644 --- a/lib/libusb/Makefile +++ b/lib/libusb/Makefile @@ -15,11 +15,12 @@ INCS+= libusb20_desc.h MAN= libusb.3 libusb20.3 MKLINT= no NOGCCERROR= +PTHREAD_LIBS?= -lpthread WARNS?= 2 DPADD= ${LIBPTHREAD} -LDADD= -lpthread +LDADD= ${PTHREAD_LIBS} MLINKS+= libusb.3 usb.3 @@ -42,7 +43,17 @@ CFLAGS+= -DCOMPAT_32BIT # # Examples: # make LIBUSB_GLOBAL_INCLUDE_FILE=libusb_global_linux.h -# make COMPAT_32BIT=YES LIBUSB_GLOBAL_INCLUDE_FILE=libusb_global_linux.h +# make COMPAT_32BIT=YES \ +# LIBUSB_GLOBAL_INCLUDE_FILE=libusb_global_linux.h \ +# DEBUG_FLAGS="-g" +# +# From Ubuntu 10.04: +# freebsd-make LIBUSB_GLOBAL_INCLUDE_FILE=libusb_global_linux.h \ +# PTHREAD_LIBS="-lpthread -lrt" +# freebsd-make COMPAT32_BIT=YES \ +# LIBUSB_GLOBAL_INCLUDE_FILE=libusb_global_linux.h \ +# PTHREAD_LIBS="-lpthread -lrt" +# # .if defined(LIBUSB_GLOBAL_INCLUDE_FILE) CFLAGS+= -DLIBUSB_GLOBAL_INCLUDE_FILE=\"${LIBUSB_GLOBAL_INCLUDE_FILE}\" diff --git a/lib/libusb/libusb20.c b/lib/libusb/libusb20.c index ed332a6..1de3a26 100644 --- a/lib/libusb/libusb20.c +++ b/lib/libusb/libusb20.c @@ -1202,27 +1202,13 @@ libusb20_be_alloc(const struct libusb20_backend_methods *methods) struct libusb20_backend * libusb20_be_alloc_linux(void) { - struct libusb20_backend *pbe; - -#ifdef __linux__ - pbe = libusb20_be_alloc(&libusb20_linux_backend); -#else - pbe = NULL; -#endif - return (pbe); + return (NULL); } struct libusb20_backend * libusb20_be_alloc_ugen20(void) { - struct libusb20_backend *pbe; - -#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) - pbe = libusb20_be_alloc(&libusb20_ugen20_backend); -#else - pbe = NULL; -#endif - return (pbe); + return (libusb20_be_alloc(&libusb20_ugen20_backend)); } struct libusb20_backend * @@ -1230,10 +1216,12 @@ libusb20_be_alloc_default(void) { struct libusb20_backend *pbe; +#ifdef __linux__ pbe = libusb20_be_alloc_linux(); if (pbe) { return (pbe); } +#endif pbe = libusb20_be_alloc_ugen20(); if (pbe) { return (pbe); diff --git a/lib/libusb/libusb20_ugen20.c b/lib/libusb/libusb20_ugen20.c index a4c973e..341bfb6 100644 --- a/lib/libusb/libusb20_ugen20.c +++ b/lib/libusb/libusb20_ugen20.c @@ -46,6 +46,10 @@ #include "libusb20_desc.h" #include "libusb20_int.h" +#ifndef IOUSB +#define IOUSB(a) a +#endif + static libusb20_init_backend_t ugen20_init_backend; static libusb20_open_device_t ugen20_open_device; static libusb20_close_device_t ugen20_close_device; @@ -145,14 +149,14 @@ ugen20_enumerate(struct libusb20_device *pdev, const char *id) if (f < 0) { return (LIBUSB20_ERROR_OTHER); } - if (ioctl(f, USB_GET_PLUGTIME, &plugtime)) { + if (ioctl(f, IOUSB(USB_GET_PLUGTIME), &plugtime)) { error = LIBUSB20_ERROR_OTHER; goto done; } /* store when the device was plugged */ pdev->session_data.plugtime = plugtime; - if (ioctl(f, USB_GET_DEVICE_DESC, &ddesc)) { + if (ioctl(f, IOUSB(USB_GET_DEVICE_DESC), &ddesc)) { error = LIBUSB20_ERROR_OTHER; goto done; } @@ -167,7 +171,7 @@ ugen20_enumerate(struct libusb20_device *pdev, const char *id) error = LIBUSB20_ERROR_OTHER; goto done; } - if (ioctl(f, USB_GET_DEVICEINFO, &devinfo)) { + if (ioctl(f, IOUSB(USB_GET_DEVICEINFO), &devinfo)) { error = LIBUSB20_ERROR_OTHER; goto done; } @@ -241,7 +245,7 @@ repeat: st->urd.urd_maxlen = sizeof(st->buf); st->nparsed = 0; - if (ioctl(st->f, USB_READ_DIR, &st->urd)) { + if (ioctl(st->f, IOUSB(USB_READ_DIR), &st->urd)) { return (EINVAL); } st->ptr = st->buf; @@ -313,7 +317,7 @@ ugen20_tr_release(struct libusb20_device *pdev) /* release all pending USB transfers */ if (pdev->privBeData != NULL) { memset(&fs_uninit, 0, sizeof(fs_uninit)); - if (ioctl(pdev->file, USB_FS_UNINIT, &fs_uninit)) { + if (ioctl(pdev->file, IOUSB(USB_FS_UNINIT), &fs_uninit)) { /* ignore any errors of this kind */ } } @@ -353,7 +357,7 @@ ugen20_tr_renew(struct libusb20_device *pdev) fs_init.pEndpoints = libusb20_pass_ptr(pdev->privBeData); fs_init.ep_index_max = nMaxTransfer; - if (ioctl(pdev->file, USB_FS_INIT, &fs_init)) { + if (ioctl(pdev->file, IOUSB(USB_FS_INIT), &fs_init)) { error = LIBUSB20_ERROR_OTHER; goto done; } @@ -387,7 +391,7 @@ ugen20_open_device(struct libusb20_device *pdev, uint16_t nMaxTransfer) close(g); return (LIBUSB20_ERROR_NO_DEVICE); } - if (ioctl(f, USB_GET_PLUGTIME, &plugtime)) { + if (ioctl(f, IOUSB(USB_GET_PLUGTIME), &plugtime)) { error = LIBUSB20_ERROR_OTHER; goto done; } @@ -430,7 +434,7 @@ ugen20_close_device(struct libusb20_device *pdev) if (pdev->privBeData) { memset(&fs_uninit, 0, sizeof(fs_uninit)); - if (ioctl(pdev->file, USB_FS_UNINIT, &fs_uninit)) { + if (ioctl(pdev->file, IOUSB(USB_FS_UNINIT), &fs_uninit)) { /* ignore this error */ } free(pdev->privBeData); @@ -468,7 +472,7 @@ ugen20_get_config_desc_full(struct libusb20_device *pdev, gen_desc.ugd_maxlen = sizeof(cdesc); gen_desc.ugd_config_index = cfg_index; - error = ioctl(pdev->file_ctrl, USB_GET_FULL_DESC, &gen_desc); + error = ioctl(pdev->file_ctrl, IOUSB(USB_GET_FULL_DESC), &gen_desc); if (error) { return (LIBUSB20_ERROR_OTHER); } @@ -488,7 +492,7 @@ ugen20_get_config_desc_full(struct libusb20_device *pdev, gen_desc.ugd_data = libusb20_pass_ptr(ptr); gen_desc.ugd_maxlen = len; - error = ioctl(pdev->file_ctrl, USB_GET_FULL_DESC, &gen_desc); + error = ioctl(pdev->file_ctrl, IOUSB(USB_GET_FULL_DESC), &gen_desc); if (error) { free(ptr); return (LIBUSB20_ERROR_OTHER); @@ -507,7 +511,7 @@ ugen20_get_config_index(struct libusb20_device *pdev, uint8_t *pindex) { int temp; - if (ioctl(pdev->file_ctrl, USB_GET_CONFIG, &temp)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_GET_CONFIG), &temp)) { return (LIBUSB20_ERROR_OTHER); } *pindex = temp; @@ -523,7 +527,7 @@ ugen20_set_config_index(struct libusb20_device *pdev, uint8_t cfg_index) /* release all active USB transfers */ ugen20_tr_release(pdev); - if (ioctl(pdev->file_ctrl, USB_SET_CONFIG, &temp)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_SET_CONFIG), &temp)) { return (LIBUSB20_ERROR_OTHER); } return (ugen20_tr_renew(pdev)); @@ -543,7 +547,7 @@ ugen20_set_alt_index(struct libusb20_device *pdev, /* release all active USB transfers */ ugen20_tr_release(pdev); - if (ioctl(pdev->file_ctrl, USB_SET_ALTINTERFACE, &alt_iface)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_SET_ALTINTERFACE), &alt_iface)) { return (LIBUSB20_ERROR_OTHER); } return (ugen20_tr_renew(pdev)); @@ -557,7 +561,7 @@ ugen20_reset_device(struct libusb20_device *pdev) /* release all active USB transfers */ ugen20_tr_release(pdev); - if (ioctl(pdev->file_ctrl, USB_DEVICEENUMERATE, &temp)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_DEVICEENUMERATE), &temp)) { return (LIBUSB20_ERROR_OTHER); } return (ugen20_tr_renew(pdev)); @@ -569,7 +573,7 @@ ugen20_check_connected(struct libusb20_device *pdev) uint32_t plugtime; int error = 0; - if (ioctl(pdev->file_ctrl, USB_GET_PLUGTIME, &plugtime)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_GET_PLUGTIME), &plugtime)) { error = LIBUSB20_ERROR_NO_DEVICE; goto done; } @@ -606,7 +610,7 @@ ugen20_set_power_mode(struct libusb20_device *pdev, uint8_t power_mode) default: return (LIBUSB20_ERROR_INVALID_PARAM); } - if (ioctl(pdev->file_ctrl, USB_SET_POWER_MODE, &temp)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_SET_POWER_MODE), &temp)) { return (LIBUSB20_ERROR_OTHER); } return (0); @@ -617,7 +621,7 @@ ugen20_get_power_mode(struct libusb20_device *pdev, uint8_t *power_mode) { int temp; - if (ioctl(pdev->file_ctrl, USB_GET_POWER_MODE, &temp)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_GET_POWER_MODE), &temp)) { return (LIBUSB20_ERROR_OTHER); } switch (temp) { @@ -649,7 +653,7 @@ ugen20_get_port_path(struct libusb20_device *pdev, uint8_t *buf, uint8_t bufsize { struct usb_device_port_path udpp; - if (ioctl(pdev->file_ctrl, USB_GET_DEV_PORT_PATH, &udpp)) + if (ioctl(pdev->file_ctrl, IOUSB(USB_GET_DEV_PORT_PATH), &udpp)) return (LIBUSB20_ERROR_OTHER); if (udpp.udp_port_level > bufsize) @@ -665,7 +669,7 @@ ugen20_get_power_usage(struct libusb20_device *pdev, uint16_t *power_usage) { int temp; - if (ioctl(pdev->file_ctrl, USB_GET_POWER_USAGE, &temp)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_GET_POWER_USAGE), &temp)) { return (LIBUSB20_ERROR_OTHER); } *power_usage = temp; @@ -678,7 +682,7 @@ ugen20_kernel_driver_active(struct libusb20_device *pdev, { int temp = iface_index; - if (ioctl(pdev->file_ctrl, USB_IFACE_DRIVER_ACTIVE, &temp)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_IFACE_DRIVER_ACTIVE), &temp)) { return (LIBUSB20_ERROR_OTHER); } return (0); /* kernel driver is active */ @@ -690,7 +694,7 @@ ugen20_detach_kernel_driver(struct libusb20_device *pdev, { int temp = iface_index; - if (ioctl(pdev->file_ctrl, USB_IFACE_DRIVER_DETACH, &temp)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_IFACE_DRIVER_DETACH), &temp)) { return (LIBUSB20_ERROR_OTHER); } return (0); /* kernel driver is active */ @@ -713,7 +717,7 @@ ugen20_do_request_sync(struct libusb20_device *pdev, sizeof(req.ucr_request), setup)) { /* ignore */ } - if (ioctl(pdev->file_ctrl, USB_DO_REQUEST, &req)) { + if (ioctl(pdev->file_ctrl, IOUSB(USB_DO_REQUEST), &req)) { return (LIBUSB20_ERROR_OTHER); } if (pactlen) { @@ -732,7 +736,7 @@ ugen20_process(struct libusb20_device *pdev) while (1) { - if (ioctl(pdev->file, USB_FS_COMPLETE, &temp)) { + if (ioctl(pdev->file, IOUSB(USB_FS_COMPLETE), &temp)) { if (errno == EBUSY) { break; } else { @@ -800,10 +804,10 @@ ugen20_tr_open(struct libusb20_transfer *xfer, uint32_t MaxBufSize, if (stream_id != 0) { temp.fs_open_stream.stream_id = stream_id; - if (ioctl(xfer->pdev->file, USB_FS_OPEN_STREAM, &temp.fs_open_stream)) + if (ioctl(xfer->pdev->file, IOUSB(USB_FS_OPEN_STREAM), &temp.fs_open_stream)) return (LIBUSB20_ERROR_INVALID_PARAM); } else { - if (ioctl(xfer->pdev->file, USB_FS_OPEN, &temp.fs_open)) + if (ioctl(xfer->pdev->file, IOUSB(USB_FS_OPEN), &temp.fs_open)) return (LIBUSB20_ERROR_INVALID_PARAM); } /* maximums might have changed - update */ @@ -829,7 +833,7 @@ ugen20_tr_close(struct libusb20_transfer *xfer) temp.ep_index = xfer->trIndex; - if (ioctl(xfer->pdev->file, USB_FS_CLOSE, &temp)) { + if (ioctl(xfer->pdev->file, IOUSB(USB_FS_CLOSE), &temp)) { return (LIBUSB20_ERROR_INVALID_PARAM); } return (0); /* success */ @@ -846,7 +850,7 @@ ugen20_tr_clear_stall_sync(struct libusb20_transfer *xfer) temp.ep_index = xfer->trIndex; - if (ioctl(xfer->pdev->file, USB_FS_CLEAR_STALL_SYNC, &temp)) { + if (ioctl(xfer->pdev->file, IOUSB(USB_FS_CLEAR_STALL_SYNC), &temp)) { return (LIBUSB20_ERROR_INVALID_PARAM); } return (0); /* success */ @@ -885,7 +889,7 @@ ugen20_tr_submit(struct libusb20_transfer *xfer) temp.ep_index = xfer->trIndex; - if (ioctl(xfer->pdev->file, USB_FS_START, &temp)) { + if (ioctl(xfer->pdev->file, IOUSB(USB_FS_START), &temp)) { /* ignore any errors - should never happen */ } return; /* success */ @@ -900,7 +904,7 @@ ugen20_tr_cancel_async(struct libusb20_transfer *xfer) temp.ep_index = xfer->trIndex; - if (ioctl(xfer->pdev->file, USB_FS_STOP, &temp)) { + if (ioctl(xfer->pdev->file, IOUSB(USB_FS_STOP), &temp)) { /* ignore any errors - should never happen */ } return; @@ -939,7 +943,7 @@ ugen20_dev_get_iface_desc(struct libusb20_device *pdev, ugd.ugd_maxlen = len; ugd.ugd_iface_index = iface_index; - if (ioctl(pdev->file, USB_GET_IFACE_DRIVER, &ugd)) { + if (ioctl(pdev->file, IOUSB(USB_GET_IFACE_DRIVER), &ugd)) { return (LIBUSB20_ERROR_INVALID_PARAM); } return (0); @@ -949,7 +953,7 @@ static int ugen20_dev_get_info(struct libusb20_device *pdev, struct usb_device_info *pinfo) { - if (ioctl(pdev->file, USB_GET_DEVICEINFO, pinfo)) { + if (ioctl(pdev->file, IOUSB(USB_GET_DEVICEINFO), pinfo)) { return (LIBUSB20_ERROR_INVALID_PARAM); } return (0); @@ -966,7 +970,7 @@ ugen20_root_get_dev_quirk(struct libusb20_backend *pbe, q.index = quirk_index; - error = ugen20_be_ioctl(USB_DEV_QUIRK_GET, &q); + error = ugen20_be_ioctl(IOUSB(USB_DEV_QUIRK_GET), &q); if (error) { if (errno == EINVAL) { @@ -993,7 +997,7 @@ ugen20_root_get_quirk_name(struct libusb20_backend *pbe, uint16_t quirk_index, q.index = quirk_index; - error = ugen20_be_ioctl(USB_QUIRK_NAME_GET, &q); + error = ugen20_be_ioctl(IOUSB(USB_QUIRK_NAME_GET), &q); if (error) { if (errno == EINVAL) { @@ -1020,7 +1024,7 @@ ugen20_root_add_dev_quirk(struct libusb20_backend *pbe, q.bcdDeviceHigh = pq->bcdDeviceHigh; strlcpy(q.quirkname, pq->quirkname, sizeof(q.quirkname)); - error = ugen20_be_ioctl(USB_DEV_QUIRK_ADD, &q); + error = ugen20_be_ioctl(IOUSB(USB_DEV_QUIRK_ADD), &q); if (error) { if (errno == ENOMEM) { return (LIBUSB20_ERROR_NO_MEM); @@ -1044,7 +1048,7 @@ ugen20_root_remove_dev_quirk(struct libusb20_backend *pbe, q.bcdDeviceHigh = pq->bcdDeviceHigh; strlcpy(q.quirkname, pq->quirkname, sizeof(q.quirkname)); - error = ugen20_be_ioctl(USB_DEV_QUIRK_REMOVE, &q); + error = ugen20_be_ioctl(IOUSB(USB_DEV_QUIRK_REMOVE), &q); if (error) { if (errno == EINVAL) { return (LIBUSB20_ERROR_NOT_FOUND); @@ -1056,11 +1060,11 @@ ugen20_root_remove_dev_quirk(struct libusb20_backend *pbe, static int ugen20_root_set_template(struct libusb20_backend *pbe, int temp) { - return (ugen20_be_ioctl(USB_SET_TEMPLATE, &temp)); + return (ugen20_be_ioctl(IOUSB(USB_SET_TEMPLATE), &temp)); } static int ugen20_root_get_template(struct libusb20_backend *pbe, int *ptemp) { - return (ugen20_be_ioctl(USB_GET_TEMPLATE, ptemp)); + return (ugen20_be_ioctl(IOUSB(USB_GET_TEMPLATE), ptemp)); } diff --git a/lib/libusb/libusb_global_linux.h b/lib/libusb/libusb_global_linux.h index cbdd2c6..13d344a 100644 --- a/lib/libusb/libusb_global_linux.h +++ b/lib/libusb/libusb_global_linux.h @@ -29,7 +29,9 @@ #define _XOPEN_SOURCE #define _BSD_SOURCE +#ifdef __linux__ #define _POSIX_SOURCE +#endif #define _POSIX_C_SOURCE 200809 #include <ctype.h> @@ -39,10 +41,13 @@ #include <stdint.h> #include <time.h> #include <unistd.h> +#ifdef __linux__ #include <alloca.h> +#endif #include <string.h> #include <fcntl.h> #include <limits.h> +#include <setjmp.h> #include <pthread.h> #include <sys/queue.h> #include <sys/ioctl.h> @@ -51,6 +56,10 @@ #include <dev/usb/usb_endian.h> #include <dev/usb/usb_freebsd.h> +#include <compat/linux/linux_ioctl.h> + +#define IOUSB(a) FBSD_L##a + #ifndef __aligned #define __aligned(x) __attribute__((__aligned__(x))) #endif diff --git a/lib/msun/src/math.h b/lib/msun/src/math.h index d831f15..458f441 100644 --- a/lib/msun/src/math.h +++ b/lib/msun/src/math.h @@ -80,27 +80,34 @@ extern const union __nan_un { #define FP_NORMAL 0x04 #define FP_SUBNORMAL 0x08 #define FP_ZERO 0x10 + +#if (__STDC_VERSION__ >= 201112L && defined(__clang__)) || \ + __has_extension(c_generic_selections) +#define __fp_type_select(x, f, d, ld) _Generic((0,(x)), \ + float: f(x), \ + double: d(x), \ + long double: ld(x)) +#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus) +#define __fp_type_select(x, f, d, ld) __builtin_choose_expr( \ + __builtin_types_compatible_p(__typeof(x), long double), ld(x), \ + __builtin_choose_expr( \ + __builtin_types_compatible_p(__typeof(x), double), d(x), \ + __builtin_choose_expr( \ + __builtin_types_compatible_p(__typeof(x), float), f(x), (void)0))) +#else +#define __fp_type_select(x, f, d, ld) \ + ((sizeof(x) == sizeof(float)) ? f(x) \ + : (sizeof(x) == sizeof(double)) ? d(x) \ + : ld(x)) +#endif + #define fpclassify(x) \ - ((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) \ - : (sizeof (x) == sizeof (double)) ? __fpclassifyd(x) \ - : __fpclassifyl(x)) - -#define isfinite(x) \ - ((sizeof (x) == sizeof (float)) ? __isfinitef(x) \ - : (sizeof (x) == sizeof (double)) ? __isfinite(x) \ - : __isfinitel(x)) -#define isinf(x) \ - ((sizeof (x) == sizeof (float)) ? __isinff(x) \ - : (sizeof (x) == sizeof (double)) ? isinf(x) \ - : __isinfl(x)) -#define isnan(x) \ - ((sizeof (x) == sizeof (float)) ? __isnanf(x) \ - : (sizeof (x) == sizeof (double)) ? isnan(x) \ - : __isnanl(x)) -#define isnormal(x) \ - ((sizeof (x) == sizeof (float)) ? __isnormalf(x) \ - : (sizeof (x) == sizeof (double)) ? __isnormal(x) \ - : __isnormall(x)) + __fp_type_select(x, __fpclassifyf, __fpclassifyd, __fpclassifyl) +#define isfinite(x) __fp_type_select(x, __isfinitef, __isfinite, __isfinitel) +#define isinf(x) __fp_type_select(x, __isinff, __isinf, __isinfl) +#define isnan(x) \ + __fp_type_select(x, __inline_isnanf, __inline_isnan, __inline_isnanl) +#define isnormal(x) __fp_type_select(x, __isnormalf, __isnormal, __isnormall) #ifdef __MATH_BUILTIN_RELOPS #define isgreater(x, y) __builtin_isgreater((x), (y)) @@ -119,10 +126,7 @@ extern const union __nan_un { #define isunordered(x, y) (isnan(x) || isnan(y)) #endif /* __MATH_BUILTIN_RELOPS */ -#define signbit(x) \ - ((sizeof (x) == sizeof (float)) ? __signbitf(x) \ - : (sizeof (x) == sizeof (double)) ? __signbit(x) \ - : __signbitl(x)) +#define signbit(x) __fp_type_select(x, __signbitf, __signbit, __signbitl) typedef __double_t double_t; typedef __float_t float_t; @@ -175,9 +179,8 @@ int __isfinitef(float) __pure2; int __isfinite(double) __pure2; int __isfinitel(long double) __pure2; int __isinff(float) __pure2; +int __isinf(double) __pure2; int __isinfl(long double) __pure2; -int __isnanf(float) __pure2; -int __isnanl(long double) __pure2; int __isnormalf(float) __pure2; int __isnormal(double) __pure2; int __isnormall(long double) __pure2; @@ -185,6 +188,27 @@ int __signbit(double) __pure2; int __signbitf(float) __pure2; int __signbitl(long double) __pure2; +static __inline int +__inline_isnan(__const double __x) +{ + + return (__x != __x); +} + +static __inline int +__inline_isnanf(__const float __x) +{ + + return (__x != __x); +} + +static __inline int +__inline_isnanl(__const long double __x) +{ + + return (__x != __x); +} + double acos(double); double asin(double); double atan(double); @@ -227,8 +251,6 @@ double expm1(double); double fma(double, double, double); double hypot(double, double); int ilogb(double) __pure2; -int (isinf)(double) __pure2; -int (isnan)(double) __pure2; double lgamma(double); long long llrint(double); long long llround(double); |