From owner-p4-projects@FreeBSD.ORG Mon Jun 7 14:50:31 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 90DC716A4D1; Mon, 7 Jun 2004 14:50:30 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 685DF16A4CE for ; Mon, 7 Jun 2004 14:50:30 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 659EF43D4C for ; Mon, 7 Jun 2004 14:50:30 +0000 (GMT) (envelope-from dfr@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id i57EoUAx030899 for ; Mon, 7 Jun 2004 14:50:30 GMT (envelope-from dfr@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id i57EoTip030896 for perforce@freebsd.org; Mon, 7 Jun 2004 14:50:29 GMT (envelope-from dfr@freebsd.org) Date: Mon, 7 Jun 2004 14:50:29 GMT Message-Id: <200406071450.i57EoTip030896@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to dfr@freebsd.org using -f From: Doug Rabson To: Perforce Change Reviews Subject: PERFORCE change 54315 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Jun 2004 14:50:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=54315 Change 54315 by dfr@dfr_home on 2004/06/07 14:50:12 IFC Affected files ... .. //depot/projects/kse/include/wchar.h#11 integrate .. //depot/projects/kse/lib/libc/gen/signal.3#4 integrate .. //depot/projects/kse/lib/libc/i386/gen/signalcontext.c#4 integrate .. //depot/projects/kse/lib/libc/sys/sigaction.2#4 integrate .. //depot/projects/kse/lib/libc/sys/wait.2#3 integrate .. //depot/projects/kse/sys/alpha/include/ioctl_meteor.h#2 integrate .. //depot/projects/kse/sys/dev/sound/pcm/sound.c#15 integrate .. //depot/projects/kse/sys/geom/nop/g_nop.c#2 integrate .. //depot/projects/kse/sys/i386/include/ioctl_meteor.h#2 integrate .. //depot/projects/kse/sys/kern/kern_sig.c#72 integrate .. //depot/projects/kse/sys/kern/kern_synch.c#83 integrate .. //depot/projects/kse/sys/kern/uipc_syscalls.c#26 integrate .. //depot/projects/kse/sys/kern/vfs_syscalls.c#40 integrate .. //depot/projects/kse/sys/netinet/ip_icmp.c#15 integrate Differences ... ==== //depot/projects/kse/include/wchar.h#11 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/include/wchar.h,v 1.40 2004/05/27 10:08:44 tjr Exp $ + * $FreeBSD: src/include/wchar.h,v 1.41 2004/06/07 10:31:10 tjr Exp $ */ /*- @@ -180,7 +180,7 @@ #define getwc(fp) fgetwc(fp) #define getwchar() fgetwc(__stdinp) -#define putwc(wc, fp) fputwc(x, fp) +#define putwc(wc, fp) fputwc(wc, fp) #define putwchar(wc) fputwc(wc, __stdoutp) #if __ISO_C_VISIBLE >= 1999 ==== //depot/projects/kse/lib/libc/gen/signal.3#4 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)signal.3 8.3 (Berkeley) 4/19/94 -.\" $FreeBSD: src/lib/libc/gen/signal.3,v 1.35 2004/04/27 09:18:49 ru Exp $ +.\" $FreeBSD: src/lib/libc/gen/signal.3,v 1.36 2004/06/07 11:01:39 yar Exp $ .\" -.Dd April 19, 1994 +.Dd June 7, 2004 .Dt SIGNAL 3 .Os .Sh NAME @@ -204,6 +204,22 @@ function; ignored signals remain ignored. .Pp +If a process explicitly specifies +.Dv SIG_IGN +as the action for the signal +.Dv SIGCHLD , +the system will not create zombie processes when children +of the calling process exit. +As a consequence, the system will discard the exit status +from the child processes. +If the calling process subsequently issues a call to +.Xr wait 2 +or equivalent, it will block until all of the calling process's +children terminate, and then return a value of \-1 with +.Va errno +set to +.Er ECHILD . +.Pp See .Xr sigaction 2 for a list of functions @@ -239,6 +255,7 @@ .Xr sigaltstack 2 , .Xr sigprocmask 2 , .Xr sigsuspend 2 , +.Xr wait 2 , .Xr fpsetmask 3 , .Xr setjmp 3 , .Xr siginterrupt 3 , @@ -248,3 +265,7 @@ .Fn signal facility appeared in .Bx 4.0 . +The option to avoid the creation of child zombies through ignoring +.Dv SIGCHLD +appeared in +.Fx 5.0 . ==== //depot/projects/kse/lib/libc/i386/gen/signalcontext.c#4 (text+ko) ==== @@ -22,29 +22,29 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ #include -__FBSDID("$FreeBSD"); +__FBSDID("$FreeBSD: src/lib/libc/i386/gen/signalcontext.c,v 1.6 2004/02/10 20:42:32 cperciva Exp $"); #include -#include -#include #include #include #include +#include +#include + +__weak_reference(__signalcontext, signalcontext); extern void _ctx_start(ucontext_t *, int argc, ...); int -signalcontext(ucontext_t *ucp, int sig, __sighandler_t *func) +__signalcontext(ucontext_t *ucp, int sig, __sighandler_t *func) { + register_t *p; struct sigframe *sfp; - int *p; - /* + /*- * Set up stack. * (n = sizeof(int)) * 2n+sizeof(struct sigframe) ucp @@ -52,29 +52,28 @@ * 1n &func * 0n &_ctx_start */ - p = (int *)ucp->uc_mcontext.mc_esp; - *--p = (int)ucp; - p -= sizeof(struct sigframe); + p = (register_t *)(void *)(intptr_t)ucp->uc_mcontext.mc_esp; + *--p = (register_t)(intptr_t)ucp; + p = (register_t *)((u_register_t)p & ~0xF); /* Align to 16 bytes. */ + p = (register_t *)((u_register_t)p - sizeof(struct sigframe)); sfp = (struct sigframe *)p; bzero(sfp, sizeof(struct sigframe)); sfp->sf_signum = sig; - sfp->sf_siginfo = (int)&sfp->sf_si; - sfp->sf_ucontext = (int)&sfp->sf_uc; + sfp->sf_siginfo = (register_t)(intptr_t)&sfp->sf_si; + sfp->sf_ucontext = (register_t)(intptr_t)&sfp->sf_uc; sfp->sf_ahu.sf_action = (__siginfohandler_t *)func; bcopy(ucp, &sfp->sf_uc, sizeof(ucontext_t)); sfp->sf_si.si_signo = sig; + *--p = (register_t)(intptr_t)func; - *--p = (int)func; - /* * Set up ucontext_t. */ ucp->uc_mcontext.mc_ebp = ucp->uc_mcontext.mc_esp - sizeof(int); - ucp->uc_mcontext.mc_esp = (int)p; - ucp->uc_mcontext.mc_eip = (int)_ctx_start; + ucp->uc_mcontext.mc_esp = (register_t)(intptr_t)p; + ucp->uc_mcontext.mc_eip = (register_t)(intptr_t)_ctx_start; ucp->uc_mcontext.mc_eflags &= ~PSL_T; ucp->uc_link = &sfp->sf_uc; - SIGDELSET(ucp->uc_sigmask, sig); + sigdelset(&ucp->uc_sigmask, sig); return (0); } - ==== //depot/projects/kse/lib/libc/sys/sigaction.2#4 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" From: @(#)sigaction.2 8.2 (Berkeley) 4/3/94 -.\" $FreeBSD: src/lib/libc/sys/sigaction.2,v 1.49 2003/09/08 19:57:16 ru Exp $ +.\" $FreeBSD: src/lib/libc/sys/sigaction.2,v 1.50 2004/06/07 11:01:39 yar Exp $ .\" -.Dd April 3, 1994 +.Dd June 7, 2004 .Dt SIGACTION 2 .Os .Sh NAME @@ -201,6 +201,12 @@ (or equivalent), it blocks until all of the calling process's child processes terminate, and then returns a value of -1 with errno set to .Er ECHILD . +The same effect of avoiding zombie creation can also be achieved by setting +.Fa sa_handler +for +.Dv SIGCHLD +to +.Dv SIG_IGN . .It Dv SA_ONSTACK If this bit is set, the system will deliver the signal to the process on a @@ -601,6 +607,10 @@ .\" and .\" SA_SIGINFO flags are featuring options commonly found in other operating systems. +The flags are approved by +.St -susv2 , +along with the option to avoid zombie creation by ignoring +.Dv SIGCHLD . .Sh SEE ALSO .Xr kill 1 , .Xr kill 2 , ==== //depot/projects/kse/lib/libc/sys/wait.2#3 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)wait.2 8.2 (Berkeley) 4/19/94 -.\" $FreeBSD: src/lib/libc/sys/wait.2,v 1.16 2002/12/19 09:40:25 ru Exp $ +.\" $FreeBSD: src/lib/libc/sys/wait.2,v 1.17 2004/06/07 11:01:39 yar Exp $ .\" .Dd April 19, 1994 .Dt WAIT 2 @@ -274,6 +274,14 @@ .It Bq Er ECHILD The calling process has no existing unwaited-for child processes. +.It Bq Er ECHILD +No status from the terminated child process is available +because the calling process has asked the system to discard +such status by ignoring the signal +.Dv SIGCHLD +or setting the flag +.Dv SA_NOCLDWAIT +for that signal. .It Bq Er EFAULT The .Fa status ==== //depot/projects/kse/sys/alpha/include/ioctl_meteor.h#2 (text+ko) ==== @@ -1,5 +1,5 @@ -/* - * Copyright (c) 1995 Mark Tinguely and Jim Lowe +/*- + * Copyright (c) 2003 David O'Brien * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -10,11 +10,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Mark Tinguely and Jim Lowe - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED @@ -28,160 +23,16 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/alpha/include/ioctl_meteor.h,v 1.1 2000/04/15 08:07:56 roger Exp $ + * $FreeBSD: src/sys/alpha/include/ioctl_meteor.h,v 1.4 2003/12/08 07:22:41 obrien Exp $ */ -/* - * ioctl constants for Matrox Meteor Capture card. - */ #ifndef _MACHINE_IOCTL_METEOR_H_ #define _MACHINE_IOCTL_METEOR_H_ -#ifndef _KERNEL -#include +#ifdef __GNUC__ +#warning Include dev/bktr/ioctl_meteor.h instead of this header. #endif -#include -struct meteor_capframe { - short command; /* see below for valid METEORCAPFRM commands */ - short lowat; /* start transfer if < this number */ - short hiwat; /* stop transfer if > this number */ -} ; +#include -/* structure for METEOR[GS]ETGEO - get/set geometry */ -struct meteor_geomet { - u_short rows; - u_short columns; - u_short frames; - u_long oformat; -} ; - -/* structure for METEORGCOUNT-get count of frames, fifo errors and dma errors */ -struct meteor_counts { - u_long fifo_errors; /* count of fifo errors since open */ - u_long dma_errors; /* count of dma errors since open */ - u_long frames_captured; /* count of frames captured since open */ - u_long even_fields_captured; /* count of even fields captured */ - u_long odd_fields_captured; /* count of odd fields captured */ -} ; - -/* structure for getting and setting direct transfers to vram */ -struct meteor_video { - u_long addr; /* Address of location to dma to */ - u_long width; /* Width of memory area */ - u_long banksize; /* Size of Vram bank */ - u_long ramsize; /* Size of Vram */ -}; - -#define METEORCAPTUR _IOW('x', 1, int) /* capture a frame */ -#define METEORCAPFRM _IOW('x', 2, struct meteor_capframe) /* sync capture */ -#define METEORSETGEO _IOW('x', 3, struct meteor_geomet) /* set geometry */ -#define METEORGETGEO _IOR('x', 4, struct meteor_geomet) /* get geometry */ -#define METEORSTATUS _IOR('x', 5, unsigned short) /* get status */ -#define METEORSHUE _IOW('x', 6, signed char) /* set hue */ -#define METEORGHUE _IOR('x', 6, signed char) /* get hue */ -#define METEORSFMT _IOW('x', 7, unsigned long) /* set format */ -#define METEORGFMT _IOR('x', 7, unsigned long) /* get format */ -#define METEORSINPUT _IOW('x', 8, unsigned long) /* set input dev */ -#define METEORGINPUT _IOR('x', 8, unsigned long) /* get input dev */ -#define METEORSCHCV _IOW('x', 9, unsigned char) /* set uv gain */ -#define METEORGCHCV _IOR('x', 9, unsigned char) /* get uv gain */ -#define METEORSCOUNT _IOW('x',10, struct meteor_counts) -#define METEORGCOUNT _IOR('x',10, struct meteor_counts) -#define METEORSFPS _IOW('x',11, unsigned short) /* set fps */ -#define METEORGFPS _IOR('x',11, unsigned short) /* get fps */ -#define METEORSSIGNAL _IOW('x', 12, unsigned int) /* set signal */ -#define METEORGSIGNAL _IOR('x', 12, unsigned int) /* get signal */ -#define METEORSVIDEO _IOW('x', 13, struct meteor_video) /* set video */ -#define METEORGVIDEO _IOR('x', 13, struct meteor_video) /* get video */ -#define METEORSBRIG _IOW('x', 14, unsigned char) /* set brightness */ -#define METEORGBRIG _IOR('x', 14, unsigned char) /* get brightness */ -#define METEORSCSAT _IOW('x', 15, unsigned char) /* set chroma sat */ -#define METEORGCSAT _IOR('x', 15, unsigned char) /* get uv saturation */ -#define METEORSCONT _IOW('x', 16, unsigned char) /* set contrast */ -#define METEORGCONT _IOR('x', 16, unsigned char) /* get contrast */ -#define METEORSBT254 _IOW('x', 17, unsigned short) /* set Bt254 reg */ -#define METEORGBT254 _IOR('x', 17, unsigned short) /* get Bt254 reg */ -#define METEORSHWS _IOW('x', 18, unsigned char) /* set hor start reg */ -#define METEORGHWS _IOR('x', 18, unsigned char) /* get hor start reg */ -#define METEORSVWS _IOW('x', 19, unsigned char) /* set vert start reg */ -#define METEORGVWS _IOR('x', 19, unsigned char) /* get vert start reg */ -#define METEORSTS _IOW('x', 20, unsigned char) /* set time stamp */ -#define METEORGTS _IOR('x', 20, unsigned char) /* get time stamp */ - -#define METEOR_STATUS_ID_MASK 0xf000 /* ID of 7196 */ -#define METEOR_STATUS_DIR 0x0800 /* Direction of Expansion port YUV */ -#define METEOR_STATUS_OEF 0x0200 /* Field detected: Even/Odd */ -#define METEOR_STATUS_SVP 0x0100 /* State of VRAM Port:inactive/active */ -#define METEOR_STATUS_STTC 0x0080 /* Time Constant: TV/VCR */ -#define METEOR_STATUS_HCLK 0x0040 /* Horiz PLL: locked/unlocked */ -#define METEOR_STATUS_FIDT 0x0020 /* Field detect: 50/60hz */ -#define METEOR_STATUS_ALTD 0x0002 /* Line alt: no line alt/line alt */ -#define METEOR_STATUS_CODE 0x0001 /* Colour info: no colour/colour */ - - /* METEORCAPTUR capture options */ -#define METEOR_CAP_SINGLE 0x0001 /* capture one frame */ -#define METEOR_CAP_CONTINOUS 0x0002 /* continuously capture */ -#define METEOR_CAP_STOP_CONT 0x0004 /* stop the continuous capture */ - - /* METEORCAPFRM capture commands */ -#define METEOR_CAP_N_FRAMES 0x0001 /* capture N frames */ -#define METEOR_CAP_STOP_FRAMES 0x0002 /* stop capture N frames */ -#define METEOR_HALT_N_FRAMES 0x0003 /* halt of capture N frames */ -#define METEOR_CONT_N_FRAMES 0x0004 /* continue after above halt */ - - /* valid video input formats: */ -#define METEOR_FMT_NTSC 0x00100 /* NTSC -- initialized default */ -#define METEOR_FMT_PAL 0x00200 /* PAL */ -#define METEOR_FMT_SECAM 0x00400 /* SECAM */ -#define METEOR_FMT_AUTOMODE 0x00800 /* auto-mode */ -#define METEOR_INPUT_DEV0 0x01000 /* camera input 0 -- default */ -#define METEOR_INPUT_DEV_RCA METEOR_INPUT_DEV0 -#define METEOR_INPUT_DEV1 0x02000 /* camera input 1 */ -#define METEOR_INPUT_DEV2 0x04000 /* camera input 2 */ -#define METEOR_INPUT_DEV3 0x08000 /* camera input 3 */ -#define METEOR_INPUT_DEV_RGB 0x0a000 /* for rgb version of meteor */ -#define METEOR_INPUT_DEV_SVIDEO 0x06000 /* S-video input port */ - - /* valid video output formats: */ -#define METEOR_GEO_RGB16 0x0010000 /* packed -- initialized default */ -#define METEOR_GEO_RGB24 0x0020000 /* RBG 24 bits packed */ - /* internally stored in 32 bits */ -#define METEOR_GEO_YUV_PACKED 0x0040000 /* 4-2-2 YUV 16 bits packed */ -#define METEOR_GEO_YUV_PLANAR 0x0080000 /* 4-2-2 YUV 16 bits planer */ -#define METEOR_GEO_YUV_PLANER METEOR_GEO_YUV_PLANAR -#define METEOR_GEO_UNSIGNED 0x0400000 /* unsigned uv outputs */ -#define METEOR_GEO_EVEN_ONLY 0x1000000 /* set for even only field capture */ -#define METEOR_GEO_ODD_ONLY 0x2000000 /* set for odd only field capture */ -#define METEOR_GEO_FIELD_MASK 0x3000000 -#define METEOR_GEO_YUV_422 0x4000000 /* 4-2-2 YUV in Y-U-V combined */ -#define METEOR_GEO_OUTPUT_MASK 0x40f0000 -#define METEOR_GEO_YUV_12 0x10000000 /* YUV 12 format */ -#define METEOR_GEO_YUV_9 0x40000000 /* YUV 9 format */ - -#define METEOR_FIELD_MODE 0x80000000 /* Field cap or Frame cap */ - -#define METEOR_SIG_MODE_MASK 0xffff0000 -#define METEOR_SIG_FRAME 0x00000000 /* signal every frame */ -#define METEOR_SIG_FIELD 0x00010000 /* signal every field */ - - /* following structure is used to coordinate the synchronous */ - -struct meteor_mem { - /* kernel write only */ - int frame_size; /* row*columns*depth */ - unsigned num_bufs; /* number of frames in buffer (1-32) */ - /* user and kernel change these */ - int lowat; /* kernel starts capture if < this number */ - int hiwat; /* kernel stops capture if > this number. - hiwat <= numbufs */ - unsigned active; /* bit mask of active frame buffers - kernel sets, user clears */ - int num_active_bufs; /* count of active frame buffer - kernel increments, user decrements */ - - /* reference to mmapped data */ - caddr_t buf; /* The real space (virtual addr) */ -} ; - -#endif /* !_MACHINE_IOCTL_METEOR_H_ */ +#endif /* _MACHINE_IOCTL_METEOR_H_ */ ==== //depot/projects/kse/sys/dev/sound/pcm/sound.c#15 (text+ko) ==== @@ -32,7 +32,7 @@ #include "feeder_if.h" -SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/sound.c,v 1.90 2004/02/28 19:47:02 truckman Exp $"); +SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/sound.c,v 1.91 2004/06/07 12:25:14 truckman Exp $"); devclass_t pcm_devclass; @@ -869,7 +869,6 @@ x = pcm_inprog(d, 1); if (x != 1) { - printf("x: %d\n", x); pcm_inprog(d, -1); return EINPROGRESS; } ==== //depot/projects/kse/sys/geom/nop/g_nop.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/nop/g_nop.c,v 1.2 2004/05/21 15:23:48 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/nop/g_nop.c,v 1.4 2004/06/07 13:40:40 pjd Exp $"); #include #include @@ -124,6 +124,7 @@ struct g_geom *gp; struct g_provider *newpp; struct g_consumer *cp; + char name[64]; int error; g_topology_assert(); @@ -132,10 +133,16 @@ newpp = NULL; cp = NULL; - gp = g_new_geomf(mp, "%s%s", pp->name, G_NOP_SUFFIX); + snprintf(name, sizeof(name), "%s%s", pp->name, G_NOP_SUFFIX); + LIST_FOREACH(gp, &mp->geom, geom) { + if (strcmp(gp->name, name) == 0) { + gctl_error(req, "Provider %s already exists.", name); + return (EEXIST); + } + } + gp = g_new_geomf(mp, name); if (gp == NULL) { - gctl_error(req, "Cannot create geom %s%s.", pp->name, - G_NOP_SUFFIX); + gctl_error(req, "Cannot create geom %s.", name); return (ENOMEM); } gp->softc = NULL; @@ -147,8 +154,7 @@ newpp = g_new_providerf(gp, gp->name); if (newpp == NULL) { - gctl_error(req, "Cannot create provider %s%s.", pp->name, - G_NOP_SUFFIX); + gctl_error(req, "Cannot create provider %s.", name); error = ENOMEM; goto fail; } ==== //depot/projects/kse/sys/i386/include/ioctl_meteor.h#2 (text+ko) ==== @@ -1,5 +1,5 @@ -/* - * Copyright (c) 1995 Mark Tinguely and Jim Lowe +/*- + * Copyright (c) 2003 David O'Brien * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -10,11 +10,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Mark Tinguely and Jim Lowe - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED @@ -28,160 +23,16 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/i386/include/ioctl_meteor.h,v 1.11 1999/12/29 04:33:02 peter Exp $ + * $FreeBSD: src/sys/i386/include/ioctl_meteor.h,v 1.15 2004/03/12 21:45:30 trhodes Exp $ */ -/* - * ioctl constants for Matrox Meteor Capture card. - */ #ifndef _MACHINE_IOCTL_METEOR_H_ #define _MACHINE_IOCTL_METEOR_H_ -#ifndef _KERNEL -#include +#if defined(__GNUC__) || defined(__INTEL_COMPILER) +#warning Include dev/bktr/ioctl_meteor.h instead of this header. #endif -#include -struct meteor_capframe { - short command; /* see below for valid METEORCAPFRM commands */ - short lowat; /* start transfer if < this number */ - short hiwat; /* stop transfer if > this number */ -} ; +#include -/* structure for METEOR[GS]ETGEO - get/set geometry */ -struct meteor_geomet { - u_short rows; - u_short columns; - u_short frames; - u_long oformat; -} ; - -/* structure for METEORGCOUNT-get count of frames, fifo errors and dma errors */ -struct meteor_counts { - u_long fifo_errors; /* count of fifo errors since open */ - u_long dma_errors; /* count of dma errors since open */ - u_long frames_captured; /* count of frames captured since open */ - u_long even_fields_captured; /* count of even fields captured */ - u_long odd_fields_captured; /* count of odd fields captured */ -} ; - -/* structure for getting and setting direct transfers to vram */ -struct meteor_video { - u_long addr; /* Address of location to dma to */ - u_long width; /* Width of memory area */ - u_long banksize; /* Size of Vram bank */ - u_long ramsize; /* Size of Vram */ -}; - -#define METEORCAPTUR _IOW('x', 1, int) /* capture a frame */ -#define METEORCAPFRM _IOW('x', 2, struct meteor_capframe) /* sync capture */ -#define METEORSETGEO _IOW('x', 3, struct meteor_geomet) /* set geometry */ -#define METEORGETGEO _IOR('x', 4, struct meteor_geomet) /* get geometry */ -#define METEORSTATUS _IOR('x', 5, unsigned short) /* get status */ -#define METEORSHUE _IOW('x', 6, signed char) /* set hue */ -#define METEORGHUE _IOR('x', 6, signed char) /* get hue */ -#define METEORSFMT _IOW('x', 7, unsigned long) /* set format */ -#define METEORGFMT _IOR('x', 7, unsigned long) /* get format */ -#define METEORSINPUT _IOW('x', 8, unsigned long) /* set input dev */ -#define METEORGINPUT _IOR('x', 8, unsigned long) /* get input dev */ -#define METEORSCHCV _IOW('x', 9, unsigned char) /* set uv gain */ -#define METEORGCHCV _IOR('x', 9, unsigned char) /* get uv gain */ -#define METEORSCOUNT _IOW('x',10, struct meteor_counts) -#define METEORGCOUNT _IOR('x',10, struct meteor_counts) -#define METEORSFPS _IOW('x',11, unsigned short) /* set fps */ -#define METEORGFPS _IOR('x',11, unsigned short) /* get fps */ -#define METEORSSIGNAL _IOW('x', 12, unsigned int) /* set signal */ -#define METEORGSIGNAL _IOR('x', 12, unsigned int) /* get signal */ -#define METEORSVIDEO _IOW('x', 13, struct meteor_video) /* set video */ -#define METEORGVIDEO _IOR('x', 13, struct meteor_video) /* get video */ -#define METEORSBRIG _IOW('x', 14, unsigned char) /* set brightness */ -#define METEORGBRIG _IOR('x', 14, unsigned char) /* get brightness */ -#define METEORSCSAT _IOW('x', 15, unsigned char) /* set chroma sat */ -#define METEORGCSAT _IOR('x', 15, unsigned char) /* get uv saturation */ -#define METEORSCONT _IOW('x', 16, unsigned char) /* set contrast */ -#define METEORGCONT _IOR('x', 16, unsigned char) /* get contrast */ -#define METEORSBT254 _IOW('x', 17, unsigned short) /* set Bt254 reg */ -#define METEORGBT254 _IOR('x', 17, unsigned short) /* get Bt254 reg */ -#define METEORSHWS _IOW('x', 18, unsigned char) /* set hor start reg */ -#define METEORGHWS _IOR('x', 18, unsigned char) /* get hor start reg */ -#define METEORSVWS _IOW('x', 19, unsigned char) /* set vert start reg */ -#define METEORGVWS _IOR('x', 19, unsigned char) /* get vert start reg */ -#define METEORSTS _IOW('x', 20, unsigned char) /* set time stamp */ -#define METEORGTS _IOR('x', 20, unsigned char) /* get time stamp */ - -#define METEOR_STATUS_ID_MASK 0xf000 /* ID of 7196 */ -#define METEOR_STATUS_DIR 0x0800 /* Direction of Expansion port YUV */ -#define METEOR_STATUS_OEF 0x0200 /* Field detected: Even/Odd */ -#define METEOR_STATUS_SVP 0x0100 /* State of VRAM Port:inactive/active */ -#define METEOR_STATUS_STTC 0x0080 /* Time Constant: TV/VCR */ -#define METEOR_STATUS_HCLK 0x0040 /* Horiz PLL: locked/unlocked */ -#define METEOR_STATUS_FIDT 0x0020 /* Field detect: 50/60hz */ -#define METEOR_STATUS_ALTD 0x0002 /* Line alt: no line alt/line alt */ -#define METEOR_STATUS_CODE 0x0001 /* Colour info: no colour/colour */ - - /* METEORCAPTUR capture options */ -#define METEOR_CAP_SINGLE 0x0001 /* capture one frame */ -#define METEOR_CAP_CONTINOUS 0x0002 /* continuously capture */ -#define METEOR_CAP_STOP_CONT 0x0004 /* stop the continuous capture */ - - /* METEORCAPFRM capture commands */ -#define METEOR_CAP_N_FRAMES 0x0001 /* capture N frames */ -#define METEOR_CAP_STOP_FRAMES 0x0002 /* stop capture N frames */ -#define METEOR_HALT_N_FRAMES 0x0003 /* halt of capture N frames */ -#define METEOR_CONT_N_FRAMES 0x0004 /* continue after above halt */ - - /* valid video input formats: */ -#define METEOR_FMT_NTSC 0x00100 /* NTSC -- initialized default */ -#define METEOR_FMT_PAL 0x00200 /* PAL */ -#define METEOR_FMT_SECAM 0x00400 /* SECAM */ -#define METEOR_FMT_AUTOMODE 0x00800 /* auto-mode */ -#define METEOR_INPUT_DEV0 0x01000 /* camera input 0 -- default */ -#define METEOR_INPUT_DEV_RCA METEOR_INPUT_DEV0 -#define METEOR_INPUT_DEV1 0x02000 /* camera input 1 */ -#define METEOR_INPUT_DEV2 0x04000 /* camera input 2 */ -#define METEOR_INPUT_DEV3 0x08000 /* camera input 3 */ -#define METEOR_INPUT_DEV_RGB 0x0a000 /* for rgb version of meteor */ -#define METEOR_INPUT_DEV_SVIDEO 0x06000 /* S-video input port */ - - /* valid video output formats: */ -#define METEOR_GEO_RGB16 0x0010000 /* packed -- initialized default */ -#define METEOR_GEO_RGB24 0x0020000 /* RBG 24 bits packed */ - /* internally stored in 32 bits */ -#define METEOR_GEO_YUV_PACKED 0x0040000 /* 4-2-2 YUV 16 bits packed */ -#define METEOR_GEO_YUV_PLANAR 0x0080000 /* 4-2-2 YUV 16 bits planer */ -#define METEOR_GEO_YUV_PLANER METEOR_GEO_YUV_PLANAR -#define METEOR_GEO_UNSIGNED 0x0400000 /* unsigned uv outputs */ -#define METEOR_GEO_EVEN_ONLY 0x1000000 /* set for even only field capture */ -#define METEOR_GEO_ODD_ONLY 0x2000000 /* set for odd only field capture */ -#define METEOR_GEO_FIELD_MASK 0x3000000 -#define METEOR_GEO_YUV_422 0x4000000 /* 4-2-2 YUV in Y-U-V combined */ -#define METEOR_GEO_OUTPUT_MASK 0x40f0000 -#define METEOR_GEO_YUV_12 0x10000000 /* YUV 12 format */ -#define METEOR_GEO_YUV_9 0x40000000 /* YUV 9 format */ - -#define METEOR_FIELD_MODE 0x80000000 /* Field cap or Frame cap */ - -#define METEOR_SIG_MODE_MASK 0xffff0000 -#define METEOR_SIG_FRAME 0x00000000 /* signal every frame */ -#define METEOR_SIG_FIELD 0x00010000 /* signal every field */ - - /* following structure is used to coordinate the synchronous */ - -struct meteor_mem { - /* kernel write only */ - int frame_size; /* row*columns*depth */ - unsigned num_bufs; /* number of frames in buffer (1-32) */ - /* user and kernel change these */ - int lowat; /* kernel starts capture if < this number */ - int hiwat; /* kernel stops capture if > this number. - hiwat <= numbufs */ - unsigned active; /* bit mask of active frame buffers - kernel sets, user clears */ - int num_active_bufs; /* count of active frame buffer - kernel increments, user decrements */ - - /* reference to mmapped data */ - caddr_t buf; /* The real space (virtual addr) */ -} ; - -#endif /* !_MACHINE_IOCTL_METEOR_H_ */ +#endif /* _MACHINE_IOCTL_METEOR_H_ */ ==== //depot/projects/kse/sys/kern/kern_sig.c#72 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.279 2004/06/02 07:52:35 tjr Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.280 2004/06/07 13:35:02 davidxu Exp $"); #include "opt_compat.h" #include "opt_ktrace.h" @@ -746,12 +746,18 @@ int error; error = copyin(uap->set, &set, sizeof(set)); - if (error) - return (error); + if (error) { + td->td_retval[0] = error; + return (0); + } error = kern_sigtimedwait(td, set, &info, NULL); - if (error) - return (error); + if (error) { + if (error == ERESTART) + return (error); + td->td_retval[0] = error; + return (0); + } error = copyout(&info.si_signo, uap->sig, sizeof(info.si_signo)); /* Repost if we got an error. */ @@ -760,7 +766,8 @@ tdsignal(td, info.si_signo, SIGTARGET_TD); PROC_UNLOCK(td->td_proc); } - return (error); + td->td_retval[0] = error; + return (0); } /* * MPSAFE ==== //depot/projects/kse/sys/kern/kern_synch.c#83 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_synch.c,v 1.248 2004/05/14 20:51:42 bde Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_synch.c,v 1.249 2004/06/07 09:35:00 tjr Exp $"); #include "opt_ddb.h" #include "opt_ktrace.h" @@ -171,13 +171,6 @@ sq = sleepq_lookup(ident); mtx_lock_spin(&sched_lock); - /* - * If we are capable of async syscalls and there isn't already - * another one ready to return, start a new thread - * and queue it as ready to run. Note that there is danger here - * because we need to make sure that we don't sleep allocating - * the thread (recursion here might be bad). - */ if (p->p_flag & P_SA || p->p_numthreads > 1) { /* * Just don't bother if we are exiting ==== //depot/projects/kse/sys/kern/uipc_syscalls.c#26 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.186 2004/06/02 04:15:37 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.187 2004/06/07 09:59:50 ume Exp $"); #include "opt_compat.h" #include "opt_ktrace.h" @@ -1574,11 +1574,19 @@ buflen = MLEN; /* unix domain compat. hack */ else #endif - return (EINVAL); + if ((u_int)buflen > MCLBYTES) + return (EINVAL); } m = m_get(M_TRYWAIT, type); if (m == NULL) return (ENOBUFS); + if ((u_int)buflen > MLEN) { + MCLGET(m, M_TRYWAIT); + if ((m->m_flags & M_EXT) == 0) { + m_free(m); + return (ENOBUFS); + } + } m->m_len = buflen; error = copyin(buf, mtod(m, caddr_t), (u_int)buflen); if (error) ==== //depot/projects/kse/sys/kern/vfs_syscalls.c#40 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_syscalls.c,v 1.347 2004/06/04 11:00:22 tjr Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_syscalls.c,v 1.348 2004/06/07 12:19:55 pjd Exp $"); #include "opt_compat.h" #include "opt_mac.h" @@ -4097,7 +4097,7 @@ struct statfs *buf; } */ *uap; { - struct statfs *sp, sb; + struct statfs *sp; struct mount *mp; struct vnode *vp; fhandle_t fh; @@ -4128,11 +4128,6 @@ sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; if ((error = VFS_STATFS(mp, sp, td)) != 0) return (error); - if (suser(td)) { - bcopy(sp, &sb, sizeof(sb)); - sb.f_fsid.val[0] = sb.f_fsid.val[1] = 0; - sp = &sb; - } return (copyout(sp, uap->buf, sizeof(*sp))); } ==== //depot/projects/kse/sys/netinet/ip_icmp.c#15 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)ip_icmp.c 8.2 (Berkeley) 1/4/94 - * $FreeBSD: src/sys/netinet/ip_icmp.c,v 1.92 2004/05/07 01:24:53 maxim Exp $ + * $FreeBSD: src/sys/netinet/ip_icmp.c,v 1.93 2004/06/07 09:56:59 ume Exp $ */ #include "opt_ipsec.h" @@ -154,10 +154,13 @@ if (type != ICMP_REDIRECT) icmpstat.icps_error++; /* + * Don't send error if the original packet was encrypted. * Don't send error if not the first fragment of message. * Don't error if the old packet protocol was ICMP * error message, only known informational types. */ + if (n->m_flags & M_DECRYPTED) + goto freeit; if (oip->ip_off &~ (IP_MF|IP_DF)) goto freeit; if (oip->ip_p == IPPROTO_ICMP && type != ICMP_REDIRECT &&