PERFORCE change 221619 for review
Brooks Davis
brooks at FreeBSD.org
Wed Jan 30 17:46:14 UTC 2013
http://p4web.freebsd.org/@@221619?ac=10
Change 221619 by brooks at brooks_zenith on 2013/01/30 17:45:19
IFC @221618
Affected files ...
.. //depot/projects/ctsrd/beribsd/src/UPDATING#7 integrate
.. //depot/projects/ctsrd/beribsd/src/etc/Makefile#6 integrate
.. //depot/projects/ctsrd/beribsd/src/include/stdio.h#4 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/amd64/sys/__vdso_gettc.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/arm/sys/Makefile.inc#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/arm/sys/__vdso_gettc.c#1 branch
.. //depot/projects/ctsrd/beribsd/src/lib/libc/i386/sys/__vdso_gettc.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/ia64/sys/Makefile.inc#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/ia64/sys/__vdso_gettc.c#1 branch
.. //depot/projects/ctsrd/beribsd/src/lib/libc/mips/sys/Makefile.inc#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/mips/sys/__vdso_gettc.c#1 branch
.. //depot/projects/ctsrd/beribsd/src/lib/libc/powerpc/Makefile.inc#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/powerpc/sys/__vdso_gettc.c#1 branch
.. //depot/projects/ctsrd/beribsd/src/lib/libc/powerpc64/Makefile.inc#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/powerpc64/sys/__vdso_gettc.c#1 branch
.. //depot/projects/ctsrd/beribsd/src/lib/libc/sparc64/Makefile.inc#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/sparc64/sys/__vdso_gettc.c#1 branch
.. //depot/projects/ctsrd/beribsd/src/lib/libc/stdio/Makefile.inc#4 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/stdio/Symbol.map#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/stdio/fmemopen.c#1 branch
.. //depot/projects/ctsrd/beribsd/src/lib/libc/stdio/fopen.3#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/sys/__vdso_gettimeofday.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/lib/libc/sys/gettimeofday.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/libexec/tftpd/tftp-io.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sbin/devd/devd.8#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sbin/devd/devd.cc#5 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/amd64/include/vmm_instruction_emul.h#2 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/amd64/vmm/vmm_instruction_emul.c#2 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/at91dci.c#5 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/atmegadci.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/avr32dci.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/dwc_otg.c#5 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/ehci.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/musb_otg.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/ohci.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/uhci.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/usb_controller.c#5 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/uss820dci.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/xhci.c#5 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/storage/ustorage_fs.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/template/usb_template.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/template/usb_template_audio.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/template/usb_template_cdce.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/template/usb_template_kbd.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/template/usb_template_modem.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/template/usb_template_mouse.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/template/usb_template_msc.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/template/usb_template_mtp.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/ufm_ioctl.h#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb.h#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_busdma.c#5 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_busdma.h#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_compat_linux.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_core.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_core.h#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_debug.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_dev.c#5 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_dev.h#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_device.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_dynamic.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_endian.h#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_error.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_freebsd.h#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_freebsd_loader.h#1 branch
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_generic.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_handle_request.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_hid.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_hub.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_ioctl.h#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_lookup.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_mbuf.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_msctest.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_parse.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_pci.h#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_pf.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_process.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_process.h#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_request.c#5 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_transfer.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usb_util.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usbdi.h#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/dev/usb/usbhid.h#4 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/kern/kern_exit.c#6 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/sys/vdso.h#3 integrate
.. //depot/projects/ctsrd/beribsd/src/sys/x86/x86/tsc.c#4 integrate
.. //depot/projects/ctsrd/beribsd/src/tools/regression/lib/libc/stdio/test-fmemopen.c#1 branch
.. //depot/projects/ctsrd/beribsd/src/tools/regression/lib/libc/stdio/test-fmemopen.t#1 branch
.. //depot/projects/ctsrd/beribsd/src/tools/test/pthread_vfork/pthread_vfork_test.c#3 integrate
.. //depot/projects/ctsrd/beribsd/src/usr.sbin/bhyve/pci_emul.c#2 integrate
.. //depot/projects/ctsrd/beribsd/src/usr.sbin/bhyve/pci_emul.h#2 integrate
.. //depot/projects/ctsrd/beribsd/src/usr.sbin/bhyve/pci_virtio_net.c#2 integrate
.. //depot/projects/ctsrd/beribsd/src/usr.sbin/bhyve/virtio.h#2 integrate
Differences ...
==== //depot/projects/ctsrd/beribsd/src/UPDATING#7 (text+ko) ====
@@ -31,7 +31,7 @@
as bsdpatch, being the GNU version the default patch.
To inverse the logic and use the BSD-licensed one as default,
while having the GNU version installed as gnupatch, rebuild
- ans install world with the WITH_BSD_PATCH knob set.
+ and install world with the WITH_BSD_PATCH knob set.
20130118:
The install(1) option -M has changed meaning and now takes an
@@ -1758,4 +1758,4 @@
Contact Warner Losh if you have any questions about your use of
this document.
-$FreeBSD: head/UPDATING 246074 2013-01-29 17:03:18Z gabor $
+$FreeBSD: head/UPDATING 246114 2013-01-30 10:23:38Z gabor $
==== //depot/projects/ctsrd/beribsd/src/etc/Makefile#6 (text+ko) ====
@@ -1,5 +1,5 @@
# from: @(#)Makefile 5.11 (Berkeley) 5/21/91
-# $FreeBSD: head/etc/Makefile 246097 2013-01-29 22:17:58Z brooks $
+# $FreeBSD: head/etc/Makefile 246127 2013-01-30 17:39:43Z brooks $
.include <bsd.own.mk>
@@ -348,9 +348,10 @@
test "$$d" == "/" && d=""; \
d=${DISTBASE}$$d; \
shift; \
- ${ECHO} "${MTREE_CMD} -C -f $$m | sed s#^\.#.$$d# |" \
- "${METALOG.add}" ; \
- ${MTREE_CMD} -C -f $$m | sed s#^\.#.$$d# | ${METALOG.add} ; \
+ ${ECHO} "${MTREE_CMD:N-W} -C -f $$m -K uname,gname | " \
+ "sed s#^\.#.$$d# | ${METALOG.add}" ; \
+ ${MTREE_CMD:N-W} -C -f $$m -K uname,gname | sed s#^\.#.$$d# | \
+ ${METALOG.add} ; \
done; true
.endif
${INSTALL_SYMLINK} usr/src/sys ${DESTDIR}/sys
==== //depot/projects/ctsrd/beribsd/src/include/stdio.h#4 (text+ko) ====
@@ -30,7 +30,7 @@
* SUCH DAMAGE.
*
* @(#)stdio.h 8.5 (Berkeley) 4/29/95
- * $FreeBSD: head/include/stdio.h 233600 2012-03-28 12:11:54Z theraven $
+ * $FreeBSD: head/include/stdio.h 246120 2013-01-30 14:59:26Z gahr $
*/
#ifndef _STDIO_H_
@@ -343,6 +343,7 @@
#endif
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809
+FILE *fmemopen(void * __restrict, size_t, const char * __restrict);
ssize_t getdelim(char ** __restrict, size_t * __restrict, int,
FILE * __restrict);
int renameat(int, const char *, int, const char *);
==== //depot/projects/ctsrd/beribsd/src/lib/libc/amd64/sys/__vdso_gettc.c#3 (text+ko) ====
@@ -24,12 +24,14 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/lib/libc/amd64/sys/__vdso_gettc.c 237434 2012-06-22 07:13:30Z kib $");
+__FBSDID("$FreeBSD: head/lib/libc/amd64/sys/__vdso_gettc.c 246117 2013-01-30 12:48:16Z kib $");
#include <sys/types.h>
+#include <sys/elf.h>
#include <sys/time.h>
#include <sys/vdso.h>
#include <machine/cpufunc.h>
+#include "libc_private.h"
static u_int
__vdso_gettc_low(const struct vdso_timehands *th)
@@ -41,9 +43,18 @@
return (rv);
}
+#pragma weak __vdso_gettc
u_int
__vdso_gettc(const struct vdso_timehands *th)
{
return (th->th_x86_shift > 0 ? __vdso_gettc_low(th) : rdtsc32());
}
+
+#pragma weak __vdso_gettimekeep
+int
+__vdso_gettimekeep(struct vdso_timekeep **tk)
+{
+
+ return (_elf_aux_info(AT_TIMEKEEP, tk, sizeof(*tk)));
+}
==== //depot/projects/ctsrd/beribsd/src/lib/libc/arm/sys/Makefile.inc#3 (text+ko) ====
@@ -1,4 +1,6 @@
-# $FreeBSD: head/lib/libc/arm/sys/Makefile.inc 184789 2008-11-09 10:45:13Z ed $
+# $FreeBSD: head/lib/libc/arm/sys/Makefile.inc 246117 2013-01-30 12:48:16Z kib $
+
+SRCS+= __vdso_gettc.c
MDASM= Ovfork.S brk.S cerror.S pipe.S ptrace.S sbrk.S shmat.S sigreturn.S syscall.S
==== //depot/projects/ctsrd/beribsd/src/lib/libc/i386/sys/__vdso_gettc.c#3 (text+ko) ====
@@ -24,12 +24,14 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/lib/libc/i386/sys/__vdso_gettc.c 237434 2012-06-22 07:13:30Z kib $");
+__FBSDID("$FreeBSD: head/lib/libc/i386/sys/__vdso_gettc.c 246117 2013-01-30 12:48:16Z kib $");
#include <sys/types.h>
+#include <sys/elf.h>
#include <sys/time.h>
#include <sys/vdso.h>
#include <machine/cpufunc.h>
+#include "libc_private.h"
static u_int
__vdso_gettc_low(const struct vdso_timehands *th)
@@ -48,3 +50,11 @@
return (th->th_x86_shift > 0 ? __vdso_gettc_low(th) : rdtsc32());
}
+
+#pragma weak __vdso_gettimekeep
+int
+__vdso_gettimekeep(struct vdso_timekeep **tk)
+{
+
+ return (_elf_aux_info(AT_TIMEKEEP, tk, sizeof(*tk)));
+}
==== //depot/projects/ctsrd/beribsd/src/lib/libc/ia64/sys/Makefile.inc#3 (text+ko) ====
@@ -1,4 +1,6 @@
-# $FreeBSD: head/lib/libc/ia64/sys/Makefile.inc 184789 2008-11-09 10:45:13Z ed $
+# $FreeBSD: head/lib/libc/ia64/sys/Makefile.inc 246117 2013-01-30 12:48:16Z kib $
+
+SRCS+= __vdso_gettc.c
MDASM+= Ovfork.S brk.S cerror.S exect.S fork.S getcontext.S pipe.S ptrace.S \
sbrk.S setlogin.S sigreturn.S swapcontext.S
==== //depot/projects/ctsrd/beribsd/src/lib/libc/mips/sys/Makefile.inc#3 (text+ko) ====
@@ -1,4 +1,6 @@
-# $FreeBSD: head/lib/libc/mips/sys/Makefile.inc 209233 2010-06-16 14:13:36Z jchandra $
+# $FreeBSD: head/lib/libc/mips/sys/Makefile.inc 246117 2013-01-30 12:48:16Z kib $
+
+SRCS+= __vdso_gettc.c
MDASM= Ovfork.S brk.S cerror.S exect.S \
fork.S pipe.S ptrace.S sbrk.S syscall.S
==== //depot/projects/ctsrd/beribsd/src/lib/libc/powerpc/Makefile.inc#3 (text+ko) ====
@@ -1,4 +1,6 @@
-# $FreeBSD: head/lib/libc/powerpc/Makefile.inc 156613 2006-03-13 01:15:01Z deischen $
+# $FreeBSD: head/lib/libc/powerpc/Makefile.inc 246117 2013-01-30 12:48:16Z kib $
+
+SRCS+= __vdso_gettc.c
# Long double is 64-bits
MDSRCS+=machdep_ldisd.c
==== //depot/projects/ctsrd/beribsd/src/lib/libc/powerpc64/Makefile.inc#3 (text+ko) ====
@@ -1,4 +1,6 @@
-# $FreeBSD: head/lib/libc/powerpc64/Makefile.inc 209878 2010-07-10 14:45:03Z nwhitehorn $
+# $FreeBSD: head/lib/libc/powerpc64/Makefile.inc 246117 2013-01-30 12:48:16Z kib $
+
+SRCS+= __vdso_gettc.c
# Long double is 64-bits
MDSRCS+=machdep_ldisd.c
==== //depot/projects/ctsrd/beribsd/src/lib/libc/sparc64/Makefile.inc#3 (text+ko) ====
@@ -1,10 +1,12 @@
-# $FreeBSD: head/lib/libc/sparc64/Makefile.inc 174204 2007-12-03 07:17:33Z das $
+# $FreeBSD: head/lib/libc/sparc64/Makefile.inc 246117 2013-01-30 12:48:16Z kib $
#
# Machine dependent definitions for the ultra sparc architecture.
#
.include "fpu/Makefile.inc"
+SRCS+= __vdso_gettc.c
+
# Long double is quad precision
GDTOASRCS+=strtorQ.c
MDSRCS+=machdep_ldisQ.c
==== //depot/projects/ctsrd/beribsd/src/lib/libc/stdio/Makefile.inc#4 (text+ko) ====
@@ -1,5 +1,5 @@
# @(#)Makefile.inc 8.3 (Berkeley) 4/17/94
-# $FreeBSD: head/lib/libc/stdio/Makefile.inc 235848 2012-05-23 17:13:30Z issyl0 $
+# $FreeBSD: head/lib/libc/stdio/Makefile.inc 246120 2013-01-30 14:59:26Z gahr $
# stdio sources
.PATH: ${.CURDIR}/stdio
@@ -8,7 +8,8 @@
fclose.c fcloseall.c fdopen.c \
feof.c ferror.c fflush.c fgetc.c fgetln.c fgetpos.c fgets.c fgetwc.c \
fgetwln.c fgetws.c \
- fileno.c findfp.c flags.c fopen.c fprintf.c fpurge.c fputc.c fputs.c \
+ fileno.c findfp.c flags.c fmemopen.c fopen.c fprintf.c fpurge.c \
+ fputc.c fputs.c \
fputwc.c fputws.c fread.c freopen.c fscanf.c fseek.c fsetpos.c \
ftell.c funopen.c fvwrite.c fwalk.c fwide.c fwprintf.c fwscanf.c \
fwrite.c getc.c getchar.c getdelim.c getline.c \
@@ -48,7 +49,7 @@
MLINKS+=fflush.3 fpurge.3
MLINKS+=fgets.3 gets.3
MLINKS+=flockfile.3 ftrylockfile.3 flockfile.3 funlockfile.3
-MLINKS+=fopen.3 fdopen.3 fopen.3 freopen.3
+MLINKS+=fopen.3 fdopen.3 fopen.3 freopen.3 fopen.3 fmemopen.3
MLINKS+=fputs.3 puts.3
MLINKS+=fread.3 fwrite.3
MLINKS+=fseek.3 fgetpos.3 fseek.3 fseeko.3 fseek.3 fsetpos.3 fseek.3 ftell.3 \
==== //depot/projects/ctsrd/beribsd/src/lib/libc/stdio/Symbol.map#3 (text) ====
@@ -1,5 +1,5 @@
/*
- * $FreeBSD: head/lib/libc/stdio/Symbol.map 227753 2011-11-20 14:45:42Z theraven $
+ * $FreeBSD: head/lib/libc/stdio/Symbol.map 246120 2013-01-30 14:59:26Z gahr $
*/
FBSD_1.0 {
@@ -155,6 +155,7 @@
getwchar_l;
putwc_l;
putwchar_l;
+ fmemopen;
};
FBSDprivate_1.0 {
==== //depot/projects/ctsrd/beribsd/src/lib/libc/stdio/fopen.3#3 (text+ko) ====
@@ -30,15 +30,16 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)fopen.3 8.1 (Berkeley) 6/4/93
-.\" $FreeBSD: head/lib/libc/stdio/fopen.3 243731 2012-11-30 23:51:33Z jilles $
+.\" $FreeBSD: head/lib/libc/stdio/fopen.3 246120 2013-01-30 14:59:26Z gahr $
.\"
-.Dd November 30, 2012
+.Dd January 30, 2013
.Dt FOPEN 3
.Os
.Sh NAME
.Nm fopen ,
.Nm fdopen ,
-.Nm freopen
+.Nm freopen ,
+.Nm fmemopen
.Nd stream open functions
.Sh LIBRARY
.Lb libc
@@ -50,6 +51,8 @@
.Fn fdopen "int fildes" "const char *mode"
.Ft FILE *
.Fn freopen "const char *path" "const char *mode" "FILE *stream"
+.Ft FILE *
+.Fn fmemopen "void *restrict *buf" "size_t size" "const char * restrict mode"
.Sh DESCRIPTION
The
.Fn fopen
@@ -202,6 +205,29 @@
.Dv ( stderr , stdin ,
or
.Dv stdout ) .
+.Pp
+The
+.Fn fmemopen
+function
+associates the buffer given by the
+.Fa buf
+and
+.Fa size
+arguments with a stream.
+The
+.Fa buf
+argument shall be either a null pointer or point to a buffer that
+is at least
+.Fa size
+bytes long.
+If a null pointer is specified as the
+.Fa buf
+argument,
+.Fn fmemopen
+shall allocate
+.Fa size
+bytes of memory. This buffer shall be automatically freed when the
+stream is closed.
.Sh RETURN VALUES
Upon successful completion
.Fn fopen ,
@@ -225,16 +251,18 @@
to
.Fn fopen ,
.Fn fdopen ,
+.Fn freopen ,
or
-.Fn freopen
+.Fn fmemopen
was invalid.
.El
.Pp
The
.Fn fopen ,
-.Fn fdopen
+.Fn fdopen ,
+.Fn freopen
and
-.Fn freopen
+.Fn fmemopen
functions
may also fail and set
.Va errno
@@ -294,3 +322,8 @@
.Dq Li e
mode option does not conform to any standard
but is also supported by glibc.
+The
+.Fn fmemopen
+function
+conforms to
+.St -p1003.1-2008 .
==== //depot/projects/ctsrd/beribsd/src/lib/libc/sys/__vdso_gettimeofday.c#3 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/lib/libc/sys/__vdso_gettimeofday.c 237434 2012-06-22 07:13:30Z kib $");
+__FBSDID("$FreeBSD: head/lib/libc/sys/__vdso_gettimeofday.c 246117 2013-01-30 12:48:16Z kib $");
#include <sys/elf.h>
#include <sys/time.h>
@@ -79,6 +79,7 @@
static struct vdso_timekeep *tk;
+#pragma weak __vdso_gettimeofday
int
__vdso_gettimeofday(struct timeval *tv, struct timezone *tz)
{
@@ -88,7 +89,7 @@
if (tz != NULL)
return (ENOSYS);
if (tk == NULL) {
- error = _elf_aux_info(AT_TIMEKEEP, &tk, sizeof(tk));
+ error = __vdso_gettimekeep(&tk);
if (error != 0 || tk == NULL)
return (ENOSYS);
}
@@ -101,6 +102,7 @@
return (0);
}
+#pragma weak __vdso_clock_gettime
int
__vdso_clock_gettime(clockid_t clock_id, struct timespec *ts)
{
==== //depot/projects/ctsrd/beribsd/src/lib/libc/sys/gettimeofday.c#3 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/lib/libc/sys/gettimeofday.c 237434 2012-06-22 07:13:30Z kib $");
+__FBSDID("$FreeBSD: head/lib/libc/sys/gettimeofday.c 246117 2013-01-30 12:48:16Z kib $");
#include <sys/syscall.h>
#include <sys/time.h>
@@ -41,10 +41,7 @@
{
int error;
- if (__vdso_gettimeofday != NULL && __vdso_gettc != NULL)
- error = __vdso_gettimeofday(tv, tz);
- else
- error = ENOSYS;
+ error = __vdso_gettimeofday(tv, tz);
if (error == ENOSYS)
error = __sys_gettimeofday(tv, tz);
return (error);
==== //depot/projects/ctsrd/beribsd/src/libexec/tftpd/tftp-io.c#4 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/libexec/tftpd/tftp-io.c 244686 2012-12-25 17:06:05Z antoine $");
+__FBSDID("$FreeBSD: head/libexec/tftpd/tftp-io.c 246106 2013-01-30 01:36:04Z sbruno $");
#include <sys/stat.h>
#include <sys/types.h>
@@ -142,7 +142,7 @@
char buf[MAXPKTSIZE];
if (debug&DEBUG_PACKETS)
- tftp_log(LOG_DEBUG, "Sending ERROR %d: %s", error);
+ tftp_log(LOG_DEBUG, "Sending ERROR %d", error);
DROPPACKET("send_error");
==== //depot/projects/ctsrd/beribsd/src/sbin/devd/devd.8#3 (text+ko) ====
@@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: head/sbin/devd/devd.8 228566 2011-12-16 10:21:01Z glebius $
+.\" $FreeBSD: head/sbin/devd/devd.8 246121 2013-01-30 15:21:18Z ian $
.\"
.Dd November 24, 2005
.Dt DEVD 8
@@ -35,6 +35,7 @@
.Nm
.Op Fl Ddn
.Op Fl f Ar file
+.Op Fl l Ar num
.Sh DESCRIPTION
The
.Nm
@@ -55,6 +56,12 @@
If option
.Fl f
is specified more than once, the last file specified is used.
+.It Fl l Ar num
+Limit concurrent
+.Pa /var/run/devd.pipe
+connections to
+.Ar num .
+The default connection limit is 10.
.It Fl n
Do not process all pending events before becoming a daemon.
Instead, call daemon right away.
==== //depot/projects/ctsrd/beribsd/src/sbin/devd/devd.cc#5 (text+ko) ====
@@ -63,7 +63,7 @@
// - devd.conf needs more details on the supported statements.
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/sbin/devd/devd.cc 243932 2012-12-06 01:25:21Z eadler $");
+__FBSDID("$FreeBSD: head/sbin/devd/devd.cc 246121 2013-01-30 15:21:18Z ian $");
#include <sys/param.h>
#include <sys/socket.h>
@@ -80,6 +80,7 @@
#include <fcntl.h>
#include <libutil.h>
#include <paths.h>
+#include <poll.h>
#include <regex.h>
#include <signal.h>
#include <stdlib.h>
@@ -814,23 +815,58 @@
return (fd);
}
+unsigned int max_clients = 10; /* Default, can be overriden on cmdline. */
+unsigned int num_clients;
list<int> clients;
void
notify_clients(const char *data, int len)
{
- list<int> bad;
- list<int>::const_iterator i;
+ list<int>::iterator i;
- for (i = clients.begin(); i != clients.end(); ++i) {
- if (write(*i, data, len) <= 0) {
- bad.push_back(*i);
+ /*
+ * Deliver the data to all clients. Throw clients overboard at the
+ * first sign of trouble. This reaps clients who've died or closed
+ * their sockets, and also clients who are alive but failing to keep up
+ * (or who are maliciously not reading, to consume buffer space in
+ * kernel memory or tie up the limited number of available connections).
+ */
+ for (i = clients.begin(); i != clients.end(); ) {
+ if (write(*i, data, len) != len) {
+ --num_clients;
close(*i);
- }
+ i = clients.erase(i);
+ } else
+ ++i;
}
+}
- for (i = bad.begin(); i != bad.end(); ++i)
- clients.erase(find(clients.begin(), clients.end(), *i));
+void
+check_clients(void)
+{
+ int s;
+ struct pollfd pfd;
+ list<int>::iterator i;
+
+ /*
+ * Check all existing clients to see if any of them have disappeared.
+ * Normally we reap clients when we get an error trying to send them an
+ * event. This check eliminates the problem of an ever-growing list of
+ * zombie clients because we're never writing to them on a system
+ * without frequent device-change activity.
+ */
+ pfd.events = 0;
+ for (i = clients.begin(); i != clients.end(); ) {
+ pfd.fd = *i;
+ s = poll(&pfd, 1, 0);
+ if ((s < 0 && s != EINTR ) ||
+ (s > 0 && (pfd.revents & POLLHUP))) {
+ --num_clients;
+ close(*i);
+ i = clients.erase(i);
+ } else
+ ++i;
+ }
}
void
@@ -838,9 +874,18 @@
{
int s;
+ /*
+ * First go reap any zombie clients, then accept the connection, and
+ * shut down the read side to stop clients from consuming kernel memory
+ * by sending large buffers full of data we'll never read.
+ */
+ check_clients();
s = accept(fd, NULL, NULL);
- if (s != -1)
+ if (s != -1) {
+ shutdown(s, SHUT_RD);
clients.push_back(s);
+ ++num_clients;
+ }
}
static void
@@ -851,6 +896,7 @@
char buffer[DEVCTL_MAXBUF];
int once = 0;
int server_fd, max_fd;
+ int accepting;
timeval tv;
fd_set fds;
@@ -858,6 +904,7 @@
if (fd == -1)
err(1, "Can't open devctl device %s", PATH_DEVCTL);
server_fd = create_socket(PIPE);
+ accepting = 1;
max_fd = max(fd, server_fd) + 1;
while (1) {
if (romeo_must_die)
@@ -880,15 +927,38 @@
once++;
}
}
+ /*
+ * When we've already got the max number of clients, stop
+ * accepting new connections (don't put server_fd in the set),
+ * shrink the accept() queue to reject connections quickly, and
+ * poll the existing clients more often, so that we notice more
+ * quickly when any of them disappear to free up client slots.
+ */
FD_ZERO(&fds);
FD_SET(fd, &fds);
- FD_SET(server_fd, &fds);
- rv = select(max_fd, &fds, NULL, NULL, NULL);
+ if (num_clients < max_clients) {
+ if (!accepting) {
+ listen(server_fd, max_clients);
+ accepting = 1;
+ }
+ FD_SET(server_fd, &fds);
+ tv.tv_sec = 60;
+ tv.tv_usec = 0;
+ } else {
+ if (accepting) {
+ listen(server_fd, 0);
+ accepting = 0;
+ }
+ tv.tv_sec = 2;
+ tv.tv_usec = 0;
+ }
+ rv = select(max_fd, &fds, NULL, NULL, &tv);
if (rv == -1) {
if (errno == EINTR)
continue;
err(1, "select");
- }
+ } else if (rv == 0)
+ check_clients();
if (FD_ISSET(fd, &fds)) {
rv = read(fd, buffer, sizeof(buffer) - 1);
if (rv > 0) {
@@ -1007,7 +1077,8 @@
static void
usage()
{
- fprintf(stderr, "usage: %s [-Ddn] [-f file]\n", getprogname());
+ fprintf(stderr, "usage: %s [-Ddn] [-l connlimit] [-f file]\n",
+ getprogname());
exit(1);
}
@@ -1036,7 +1107,7 @@
int ch;
check_devd_enabled();
- while ((ch = getopt(argc, argv, "Ddf:n")) != -1) {
+ while ((ch = getopt(argc, argv, "Ddf:l:n")) != -1) {
switch (ch) {
case 'D':
Dflag++;
@@ -1047,6 +1118,9 @@
case 'f':
configfile = optarg;
break;
+ case 'l':
+ max_clients = MAX(1, strtoul(optarg, NULL, 0));
+ break;
case 'n':
nflag++;
break;
==== //depot/projects/ctsrd/beribsd/src/sys/amd64/include/vmm_instruction_emul.h#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: head/sys/amd64/include/vmm_instruction_emul.h 245652 2013-01-19 04:18:52Z neel $
+ * $FreeBSD: head/sys/amd64/include/vmm_instruction_emul.h 246108 2013-01-30 04:09:09Z neel $
*/
#ifndef _VMM_INSTRUCTION_EMUL_H_
@@ -49,7 +49,8 @@
uint8_t rex_w:1, /* REX prefix */
rex_r:1,
rex_x:1,
- rex_b:1;
+ rex_b:1,
+ rex_present:1;
uint8_t mod:2, /* ModRM byte */
reg:4,
==== //depot/projects/ctsrd/beribsd/src/sys/amd64/vmm/vmm_instruction_emul.c#2 (text+ko) ====
@@ -24,11 +24,11 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: head/sys/amd64/vmm/vmm_instruction_emul.c 243703 2012-11-30 05:40:24Z grehan $
+ * $FreeBSD: head/sys/amd64/vmm/vmm_instruction_emul.c 246108 2013-01-30 04:09:09Z neel $
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/sys/amd64/vmm/vmm_instruction_emul.c 243703 2012-11-30 05:40:24Z grehan $");
+__FBSDID("$FreeBSD: head/sys/amd64/vmm/vmm_instruction_emul.c 246108 2013-01-30 04:09:09Z neel $");
#ifdef _KERNEL
#include <sys/param.h>
@@ -65,6 +65,10 @@
#define VIE_OP_F_IMM8 (1 << 1) /* 8-bit immediate operand */
static const struct vie_op one_byte_opcodes[256] = {
+ [0x88] = {
+ .op_byte = 0x88,
+ .op_type = VIE_OP_TYPE_MOV,
+ },
[0x89] = {
.op_byte = 0x89,
.op_type = VIE_OP_TYPE_MOV,
@@ -161,6 +165,46 @@
}
static int
+vie_read_bytereg(void *vm, int vcpuid, struct vie *vie, uint8_t *rval)
+{
+ uint64_t val;
+ int error, rshift;
+ enum vm_reg_name reg;
+
+ rshift = 0;
+ reg = gpr_map[vie->reg];
+
+ /*
+ * 64-bit mode imposes limitations on accessing legacy byte registers.
+ *
+ * The legacy high-byte registers cannot be addressed if the REX
+ * prefix is present. In this case the values 4, 5, 6 and 7 of the
+ * 'ModRM:reg' field address %spl, %bpl, %sil and %dil respectively.
+ *
+ * If the REX prefix is not present then the values 4, 5, 6 and 7
+ * of the 'ModRM:reg' field address the legacy high-byte registers,
+ * %ah, %ch, %dh and %bh respectively.
+ */
+ if (!vie->rex_present) {
+ if (vie->reg & 0x4) {
+ /*
+ * Obtain the value of %ah by reading %rax and shifting
+ * right by 8 bits (same for %bh, %ch and %dh).
+ */
+ rshift = 8;
+ reg = gpr_map[vie->reg & 0x3];
+ }
+ }
+
+ if (!vie_valid_register(reg))
+ return (EINVAL);
+
+ error = vm_get_register(vm, vcpuid, reg, &val);
+ *rval = val >> rshift;
+ return (error);
+}
+
+static int
vie_update_register(void *vm, int vcpuid, enum vm_reg_name reg,
uint64_t val, int size)
{
@@ -209,12 +253,24 @@
{
int error, size;
enum vm_reg_name reg;
+ uint8_t byte;
uint64_t val;
size = 4;
error = EINVAL;
switch (vie->op.op_byte) {
+ case 0x88:
+ /*
+ * MOV byte from reg (ModRM:reg) to mem (ModRM:r/m)
+ * 88/r: mov r/m8, r8
+ * REX + 88/r: mov r/m8, r8 (%ah, %ch, %dh, %bh not available)
+ */
+ size = 1;
+ error = vie_read_bytereg(vm, vcpuid, vie, &byte);
+ if (error == 0)
+ error = memwrite(vm, vcpuid, gpa, byte, size, arg);
+ break;
case 0x89:
/*
* MOV from reg (ModRM:reg) to mem (ModRM:r/m)
@@ -497,6 +553,8 @@
return (-1);
if (x >= 0x40 && x <= 0x4F) {
+ vie->rex_present = 1;
+
vie->rex_w = x & 0x8 ? 1 : 0;
vie->rex_r = x & 0x4 ? 1 : 0;
vie->rex_x = x & 0x2 ? 1 : 0;
==== //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/at91dci.c#5 (text+ko) ====
@@ -1,6 +1,4 @@
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/sys/dev/usb/controller/at91dci.c 241082 2012-10-01 05:42:43Z hselasky $");
-
+/* $FreeBSD: head/sys/dev/usb/controller/at91dci.c 246125 2013-01-30 16:05:54Z hselasky $ */
/*-
* Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved.
*
@@ -44,6 +42,9 @@
* endpoints, Function-address and more.
*/
+#ifdef USB_GLOBAL_INCLUDE_FILE
+#include USB_GLOBAL_INCLUDE_FILE
+#else
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/param.h>
@@ -79,6 +80,8 @@
#include <dev/usb/usb_controller.h>
#include <dev/usb/usb_bus.h>
+#endif /* USB_GLOBAL_INCLUDE_FILE */
+
#include <dev/usb/controller/at91dci.h>
#define AT9100_DCI_BUS2SC(bus) \
@@ -1737,18 +1740,12 @@
.DeviceRemovable = {0}, /* port is removable */
};
-#define STRING_LANG \
- 0x09, 0x04, /* American English */
-
#define STRING_VENDOR \
- 'A', 0, 'T', 0, 'M', 0, 'E', 0, 'L', 0
+ "A\0T\0M\0E\0L"
#define STRING_PRODUCT \
- 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \
- 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \
- 'U', 0, 'B', 0,
+ "D\0C\0I\0 \0R\0o\0o\0t\0 \0H\0U\0B"
-USB_MAKE_STRING_DESC(STRING_LANG, at91dci_langtab);
USB_MAKE_STRING_DESC(STRING_VENDOR, at91dci_vendor);
USB_MAKE_STRING_DESC(STRING_PRODUCT, at91dci_product);
@@ -1950,8 +1947,8 @@
case UDESC_STRING:
switch (value & 0xff) {
case 0: /* Language table */
- len = sizeof(at91dci_langtab);
- ptr = (const void *)&at91dci_langtab;
+ len = sizeof(usb_string_lang_en);
+ ptr = (const void *)&usb_string_lang_en;
goto tr_valid;
case 1: /* Vendor */
==== //depot/projects/ctsrd/beribsd/src/sys/dev/usb/controller/atmegadci.c#4 (text+ko) ====
@@ -1,6 +1,4 @@
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/sys/dev/usb/controller/atmegadci.c 241082 2012-10-01 05:42:43Z hselasky $");
-
+/* $FreeBSD: head/sys/dev/usb/controller/atmegadci.c 246125 2013-01-30 16:05:54Z hselasky $ */
/*-
* Copyright (c) 2009 Hans Petter Selasky. All rights reserved.
*
@@ -36,6 +34,9 @@
* endpoints, Function-address and more.
*/
+#ifdef USB_GLOBAL_INCLUDE_FILE
+#include USB_GLOBAL_INCLUDE_FILE
+#else
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/param.h>
@@ -71,6 +72,8 @@
#include <dev/usb/usb_controller.h>
#include <dev/usb/usb_bus.h>
+#endif /* USB_GLOBAL_INCLUDE_FILE */
+
#include <dev/usb/controller/atmegadci.h>
#define ATMEGA_BUS2SC(bus) \
@@ -1562,18 +1565,12 @@
.DeviceRemovable = {0}, /* port is removable */
};
-#define STRING_LANG \
- 0x09, 0x04, /* American English */
-
#define STRING_VENDOR \
- 'A', 0, 'T', 0, 'M', 0, 'E', 0, 'G', 0, 'A', 0
+ "A\0T\0M\0E\0G\0A"
#define STRING_PRODUCT \
- 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \
- 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \
- 'U', 0, 'B', 0,
+ "D\0C\0I\0 \0R\0o\0o\0t\0 \0H\0U\0B"
-USB_MAKE_STRING_DESC(STRING_LANG, atmegadci_langtab);
USB_MAKE_STRING_DESC(STRING_VENDOR, atmegadci_vendor);
USB_MAKE_STRING_DESC(STRING_PRODUCT, atmegadci_product);
@@ -1776,8 +1773,8 @@
case UDESC_STRING:
switch (value & 0xff) {
case 0: /* Language table */
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list