summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/gen/sysctl.318
-rw-r--r--lib/libc/net/getaddrinfo.37
-rw-r--r--lib/libc/net/getnameinfo.316
-rw-r--r--lib/libc/net/sctp_sys_calls.c8
-rw-r--r--lib/libc/sparc64/gen/makecontext.c10
-rw-r--r--lib/libc/sparc64/gen/signalcontext.c6
-rw-r--r--lib/libc/stdio/fwrite.c2
-rw-r--r--lib/libc/stdio/mktemp.333
-rw-r--r--lib/libc/stdlib/getenv.c5
-rw-r--r--lib/libkvm/Makefile1
-rw-r--r--lib/libkvm/kvm.h2
-rw-r--r--lib/libthread_db/arch/sparc64/libpthread_md.c12
-rw-r--r--lib/libusb/Makefile15
-rw-r--r--lib/libusb/libusb20.c20
-rw-r--r--lib/libusb/libusb20_ugen20.c78
-rw-r--r--lib/libusb/libusb_global_linux.h9
-rw-r--r--lib/msun/src/math.h78
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);
OpenPOWER on IntegriCloud