Date: Mon, 10 Nov 2003 15:26:17 -0800 (PST) From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 41948 for review Message-ID: <200311102326.hAANQHlM070271@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=41948 Change 41948 by sam@sam_ebb on 2003/11/10 15:25:53 IFC @ 41947 Affected files ... .. //depot/projects/netperf/sys/alpha/alpha/machdep.c#7 integrate .. //depot/projects/netperf/sys/amd64/amd64/machdep.c#8 integrate .. //depot/projects/netperf/sys/boot/i386/boot2/boot2.c#3 integrate .. //depot/projects/netperf/sys/boot/ia64/libski/pal_stub.S#2 integrate .. //depot/projects/netperf/sys/boot/ia64/skiload/Makefile#2 integrate .. //depot/projects/netperf/sys/cam/cam_xpt.c#2 integrate .. //depot/projects/netperf/sys/cam/scsi/scsi_target.c#4 integrate .. //depot/projects/netperf/sys/coda/coda_psdev.c#3 integrate .. //depot/projects/netperf/sys/compat/linux/linux_socket.c#3 integrate .. //depot/projects/netperf/sys/conf/files#23 edit .. //depot/projects/netperf/sys/crypto/rijndael/rijndael-alg-fst.c#4 integrate .. //depot/projects/netperf/sys/crypto/rijndael/rijndael-alg-fst.h#4 integrate .. //depot/projects/netperf/sys/crypto/rijndael/rijndael-api-fst.c#6 integrate .. //depot/projects/netperf/sys/crypto/rijndael/rijndael-api-fst.h#4 integrate .. //depot/projects/netperf/sys/dev/aac/aac.c#8 integrate .. //depot/projects/netperf/sys/dev/aha/aha.c#4 integrate .. //depot/projects/netperf/sys/dev/aha/aha_isa.c#4 integrate .. //depot/projects/netperf/sys/dev/aha/aha_mca.c#4 integrate .. //depot/projects/netperf/sys/dev/aha/ahareg.h#3 integrate .. //depot/projects/netperf/sys/dev/ata/atapi-cam.c#8 integrate .. //depot/projects/netperf/sys/dev/ata/atapi-cd.c#12 integrate .. //depot/projects/netperf/sys/dev/bktr/bktr_core.c#7 integrate .. //depot/projects/netperf/sys/dev/firewire/firewire.c#8 integrate .. //depot/projects/netperf/sys/dev/firewire/sbp.c#10 integrate .. //depot/projects/netperf/sys/dev/kbd/kbd.c#4 integrate .. //depot/projects/netperf/sys/dev/nmdm/nmdm.c#4 integrate .. //depot/projects/netperf/sys/dev/random/randomdev.c#4 integrate .. //depot/projects/netperf/sys/dev/sab/sab.c#4 integrate .. //depot/projects/netperf/sys/dev/sn/if_sn.c#5 integrate .. //depot/projects/netperf/sys/dev/sn/if_sn_isa.c#3 integrate .. //depot/projects/netperf/sys/dev/snp/snp.c#3 integrate .. //depot/projects/netperf/sys/dev/sound/midi/midibuf.c#2 integrate .. //depot/projects/netperf/sys/dev/sound/pcm/channel.c#4 integrate .. //depot/projects/netperf/sys/dev/usb/ehci.c#3 integrate .. //depot/projects/netperf/sys/dev/usb/ohci.c#3 integrate .. //depot/projects/netperf/sys/dev/usb/ucom.c#4 integrate .. //depot/projects/netperf/sys/dev/usb/ugen.c#7 integrate .. //depot/projects/netperf/sys/dev/usb/uhci.c#3 integrate .. //depot/projects/netperf/sys/dev/usb/uhid.c#6 integrate .. //depot/projects/netperf/sys/dev/usb/ums.c#6 integrate .. //depot/projects/netperf/sys/dev/usb/usb.c#5 integrate .. //depot/projects/netperf/sys/dev/usb/usb_port.h#3 integrate .. //depot/projects/netperf/sys/dev/usb/usbdi.c#3 integrate .. //depot/projects/netperf/sys/dev/zs/zs.c#4 integrate .. //depot/projects/netperf/sys/fs/fifofs/fifo_vnops.c#2 integrate .. //depot/projects/netperf/sys/i386/acpica/madt.c#4 integrate .. //depot/projects/netperf/sys/i386/bios/apm.c#2 integrate .. //depot/projects/netperf/sys/i386/conf/NOTES#9 integrate .. //depot/projects/netperf/sys/i386/i386/initcpu.c#5 integrate .. //depot/projects/netperf/sys/i386/i386/machdep.c#11 integrate .. //depot/projects/netperf/sys/i386/i386/mp_machdep.c#11 integrate .. //depot/projects/netperf/sys/i386/i386/mptable.c#3 integrate .. //depot/projects/netperf/sys/i386/isa/asc.c#2 integrate .. //depot/projects/netperf/sys/i386/isa/cx.c#3 integrate .. //depot/projects/netperf/sys/i386/isa/istallion.c#2 integrate .. //depot/projects/netperf/sys/i386/isa/mse.c#2 integrate .. //depot/projects/netperf/sys/i386/isa/spic.c#3 integrate .. //depot/projects/netperf/sys/i386/isa/stallion.c#3 integrate .. //depot/projects/netperf/sys/i4b/driver/i4b_rbch.c#2 integrate .. //depot/projects/netperf/sys/i4b/driver/i4b_tel.c#2 integrate .. //depot/projects/netperf/sys/i4b/driver/i4b_trace.c#2 integrate .. //depot/projects/netperf/sys/i4b/include/i4b_global.h#2 integrate .. //depot/projects/netperf/sys/i4b/layer4/i4b_i4bdrv.c#2 integrate .. //depot/projects/netperf/sys/ia64/ia64/machdep.c#16 integrate .. //depot/projects/netperf/sys/ia64/ia64/syscall.S#6 integrate .. //depot/projects/netperf/sys/ia64/ia64/vm_machdep.c#8 integrate .. //depot/projects/netperf/sys/ia64/include/ucontext.h#4 integrate .. //depot/projects/netperf/sys/isa/psm.c#2 integrate .. //depot/projects/netperf/sys/kern/kern_condvar.c#2 integrate .. //depot/projects/netperf/sys/kern/kern_context.c#2 integrate .. //depot/projects/netperf/sys/kern/kern_event.c#4 integrate .. //depot/projects/netperf/sys/kern/sched_4bsd.c#9 integrate .. //depot/projects/netperf/sys/kern/subr_log.c#2 integrate .. //depot/projects/netperf/sys/kern/subr_taskqueue.c#5 integrate .. //depot/projects/netperf/sys/kern/sys_generic.c#4 integrate .. //depot/projects/netperf/sys/kern/sys_pipe.c#11 integrate .. //depot/projects/netperf/sys/kern/sysv_sem.c#5 integrate .. //depot/projects/netperf/sys/kern/tty.c#2 integrate .. //depot/projects/netperf/sys/kern/tty_pty.c#3 integrate .. //depot/projects/netperf/sys/kern/uipc_socket.c#6 integrate .. //depot/projects/netperf/sys/kern/uipc_socket2.c#6 integrate .. //depot/projects/netperf/sys/kern/vfs_subr.c#11 integrate .. //depot/projects/netperf/sys/modules/Makefile#10 edit .. //depot/projects/netperf/sys/modules/netgraph/etf/Makefile#2 integrate .. //depot/projects/netperf/sys/net/bpf.c#9 integrate .. //depot/projects/netperf/sys/net/if_tap.c#3 integrate .. //depot/projects/netperf/sys/net/if_tun.c#5 integrate .. //depot/projects/netperf/sys/net80211/ieee80211_node.c#15 integrate .. //depot/projects/netperf/sys/netinet/in_pcb.c#14 integrate .. //depot/projects/netperf/sys/netinet/tcp_syncache.c#10 integrate .. //depot/projects/netperf/sys/netinet6/ah_core.c#7 integrate .. //depot/projects/netperf/sys/netinet6/esp_core.c#7 integrate .. //depot/projects/netperf/sys/netinet6/esp_rijndael.h#3 integrate .. //depot/projects/netperf/sys/pc98/i386/machdep.c#9 integrate .. //depot/projects/netperf/sys/pc98/pc98/mse.c#2 integrate .. //depot/projects/netperf/sys/pccard/mecia.c#2 integrate .. //depot/projects/netperf/sys/pccard/pccard.c#2 integrate .. //depot/projects/netperf/sys/pccard/pcic.c#4 integrate .. //depot/projects/netperf/sys/powerpc/powerpc/machdep.c#4 integrate .. //depot/projects/netperf/sys/sparc64/sparc64/machdep.c#6 integrate .. //depot/projects/netperf/sys/sys/condvar.h#2 integrate .. //depot/projects/netperf/sys/sys/selinfo.h#2 integrate .. //depot/projects/netperf/sys/sys/signalvar.h#3 integrate .. //depot/projects/netperf/sys/sys/ucontext.h#2 integrate .. //depot/projects/netperf/sys/vm/vm_fault.c#8 integrate .. //depot/projects/netperf/sys/vm/vm_glue.c#6 integrate .. //depot/projects/netperf/sys/vm/vm_kern.c#8 integrate .. //depot/projects/netperf/sys/vm/vm_map.c#13 integrate .. //depot/projects/netperf/sys/vm/vm_map.h#8 integrate .. //depot/projects/netperf/sys/vm/vm_mmap.c#7 integrate .. //depot/projects/netperf/sys/vm/vm_object.c#11 integrate .. //depot/projects/netperf/sys/vm/vm_object.h#4 integrate Differences ... ==== //depot/projects/netperf/sys/alpha/alpha/machdep.c#7 (text+ko) ==== @@ -88,7 +88,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.213 2003/10/19 02:36:06 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.214 2003/11/09 20:31:02 marcel Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -2027,14 +2027,14 @@ } int -get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) +get_mcontext(struct thread *td, mcontext_t *mcp, int flags) { /* * Use a trapframe for getsetcontext, so just copy the * threads trapframe. */ bcopy(td->td_frame, &mcp->mc_regs, sizeof(struct trapframe)); - if (clear_ret != 0) { + if (flags & GET_MC_CLEAR_RET) { mcp->mc_regs[FRAME_V0] = 0; mcp->mc_regs[FRAME_A4] = 0; mcp->mc_regs[FRAME_A3] = 0; ==== //depot/projects/netperf/sys/amd64/amd64/machdep.c#8 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.596 2003/11/08 04:37:54 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.597 2003/11/09 20:31:02 marcel Exp $"); #include "opt_atalk.h" #include "opt_compat.h" @@ -1441,7 +1441,7 @@ * Get machine context. */ int -get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) +get_mcontext(struct thread *td, mcontext_t *mcp, int flags) { struct trapframe *tp; @@ -1462,7 +1462,7 @@ mcp->mc_rbp = tp->tf_rbp; mcp->mc_rbx = tp->tf_rbx; mcp->mc_rcx = tp->tf_rcx; - if (clear_ret != 0) { + if (flags & GET_MC_CLEAR_RET) { mcp->mc_rax = 0; mcp->mc_rdx = 0; } else { ==== //depot/projects/netperf/sys/boot/i386/boot2/boot2.c#3 (text+ko) ==== @@ -14,7 +14,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.64 2003/08/25 23:28:31 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.65 2003/11/10 19:06:09 bde Exp $"); #include <sys/param.h> #include <sys/disklabel.h> @@ -51,7 +51,7 @@ #define RBX_NOINTR 0x1c /* -n */ #define RBX_DUAL 0x1d /* -D */ #define RBX_PROBEKBD 0x1e /* -P */ -/* 0x1f is reserved for the historical RB_BOOTINFO option */ +/* 0x1f is reserved for the RB_BOOTINFO flag. */ /* pass: -a, -s, -r, -d, -c, -v, -h, -C, -g, -m, -p, -D */ #define RBX_MASK 0x2005ffff @@ -359,7 +359,7 @@ bootinfo.bi_esymtab = VTOP(p); bootinfo.bi_kernelname = VTOP(kname); bootinfo.bi_bios_dev = dsk.drive; - __exec((caddr_t)addr, opts & RBX_MASK, + __exec((caddr_t)addr, RB_BOOTINFO | (opts & RBX_MASK), MAKEBOOTDEV(dev_maj[dsk.type], 0, dsk.slice, dsk.unit, dsk.part), 0, 0, 0, VTOP(&bootinfo)); } ==== //depot/projects/netperf/sys/boot/ia64/libski/pal_stub.S#2 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/ia64/libski/pal_stub.S,v 1.2 2003/07/02 11:47:33 ru Exp $ + * $FreeBSD: src/sys/boot/ia64/libski/pal_stub.S,v 1.3 2003/11/09 07:42:16 marcel Exp $ */ #include <machine/asm.h> @@ -41,6 +41,9 @@ cmp.eq p6,p0=14,r28 // PAL_FREQ_RATIOS (p6) br.cond.dptk pal_freq_ratios ;; + cmp.eq p6,p0=29,r28 // PAL_HALT_LIGHT +(p6) br.cond.dptk pal_halt_light + ;; mov r15=66 // EXIT break.i 0x80000 // SSC ;; @@ -62,4 +65,10 @@ movl r10=0x0000000100000001 // bus ratio 1/1 movl r11=0x0000000B00000002 // ITC ratio 11/2 br.sptk b0 +pal_halt_light: + mov r8=0 + mov r9=0 + mov r10=0 + mov r11=0 + br.sptk b0 END(PalProc) ==== //depot/projects/netperf/sys/boot/ia64/skiload/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/ia64/skiload/Makefile,v 1.11 2003/07/17 01:49:59 marcel Exp $ +# $FreeBSD: src/sys/boot/ia64/skiload/Makefile,v 1.12 2003/11/09 06:53:37 marcel Exp $ .PATH: ${.CURDIR}/../common @@ -6,6 +6,7 @@ NOMAN= NEWVERSWHAT= "ia64 SKI boot" ${MACHINE_ARCH} BINDIR?= /boot +STRIP= # We must not strip skiload at install time. SRCS+= conf.c main.c start.S ==== //depot/projects/netperf/sys/cam/cam_xpt.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.134 2003/06/10 17:50:20 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.135 2003/11/09 02:22:33 scottl Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -1453,6 +1453,8 @@ int32_t status; struct periph_list *periph_head; + GIANT_REQUIRED; + device = periph->path->device; periph_head = &device->periphs; @@ -1488,6 +1490,8 @@ { struct cam_ed *device; + GIANT_REQUIRED; + device = periph->path->device; if (device != NULL) { @@ -1524,6 +1528,8 @@ u_int mb; int s; + GIANT_REQUIRED; + path = periph->path; /* * To ensure that this is printed in one piece, @@ -1646,6 +1652,8 @@ struct cam_path *path; struct ccb_trans_settings cts; + GIANT_REQUIRED; + path = periph->path; /* * To ensure that this is printed in one piece, @@ -2945,6 +2953,8 @@ { int iopl; + GIANT_REQUIRED; + CAM_DEBUG(start_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_action\n")); start_ccb->ccb_h.status = CAM_REQ_INPROG; @@ -3578,6 +3588,8 @@ struct cam_devq *devq; struct cam_ed *dev; + GIANT_REQUIRED; + timeout = start_ccb->ccb_h.timeout; sim = start_ccb->ccb_h.path->bus->sim; devq = sim->devq; @@ -3640,6 +3652,8 @@ int s; int runq; + GIANT_REQUIRED; + CAM_DEBUG(perph->path, CAM_DEBUG_TRACE, ("xpt_schedule\n")); device = perph->path->device; s = splsoftcam(); @@ -3936,6 +3950,8 @@ void xpt_merge_ccb(union ccb *master_ccb, union ccb *slave_ccb) { + GIANT_REQUIRED; + /* * Pull fields that are valid for peripheral drivers to set * into the master CCB along with the CCB "payload". @@ -3951,6 +3967,8 @@ void xpt_setup_ccb(struct ccb_hdr *ccb_h, struct cam_path *path, u_int32_t priority) { + GIANT_REQUIRED; + CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_setup_ccb\n")); ccb_h->pinfo.priority = priority; ccb_h->path = path; @@ -3977,6 +3995,8 @@ struct cam_path *path; cam_status status; + GIANT_REQUIRED; + path = (struct cam_path *)malloc(sizeof(*path), M_DEVBUF, M_NOWAIT); if (path == NULL) { @@ -4087,6 +4107,8 @@ void xpt_free_path(struct cam_path *path) { + GIANT_REQUIRED; + CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_free_path\n")); xpt_release_path(path); free(path, M_DEVBUF); @@ -4100,6 +4122,8 @@ int xpt_path_comp(struct cam_path *path1, struct cam_path *path2) { + GIANT_REQUIRED; + int retval = 0; if (path1->bus != path2->bus) { @@ -4134,6 +4158,8 @@ void xpt_print_path(struct cam_path *path) { + GIANT_REQUIRED; + if (path == NULL) printf("(nopath): "); else { @@ -4167,6 +4193,8 @@ { struct sbuf sb; + GIANT_REQUIRED; + sbuf_new(&sb, str, str_len, 0); if (path == NULL) @@ -4203,12 +4231,16 @@ path_id_t xpt_path_path_id(struct cam_path *path) { + GIANT_REQUIRED; + return(path->bus->path_id); } target_id_t xpt_path_target_id(struct cam_path *path) { + GIANT_REQUIRED; + if (path->target != NULL) return (path->target->target_id); else @@ -4218,6 +4250,8 @@ lun_id_t xpt_path_lun_id(struct cam_path *path) { + GIANT_REQUIRED; + if (path->device != NULL) return (path->device->lun_id); else @@ -4227,12 +4261,16 @@ struct cam_sim * xpt_path_sim(struct cam_path *path) { + GIANT_REQUIRED; + return (path->bus->sim); } struct cam_periph* xpt_path_periph(struct cam_path *path) { + GIANT_REQUIRED; + return (path->periph); } @@ -4250,6 +4288,8 @@ struct cam_ed *device; struct cam_eb *bus; + GIANT_REQUIRED; + CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_release_ccb\n")); path = free_ccb->ccb_h.path; device = path->device; @@ -4293,6 +4333,8 @@ struct ccb_pathinq cpi; int s; + GIANT_REQUIRED; + sim->bus_id = bus; new_bus = (struct cam_eb *)malloc(sizeof(*new_bus), M_DEVBUF, M_NOWAIT); @@ -4347,6 +4389,8 @@ struct cam_path bus_path; cam_status status; + GIANT_REQUIRED; + status = xpt_compile_path(&bus_path, NULL, pathid, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); if (status != CAM_REQ_CMP) @@ -4443,6 +4487,8 @@ struct cam_ed *device, *next_device; int s; + GIANT_REQUIRED; + CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_async\n")); /* @@ -4608,6 +4654,8 @@ int s; struct ccb_hdr *ccbh; + GIANT_REQUIRED; + s = splcam(); path->device->qfrozen_cnt += count; @@ -4634,6 +4682,8 @@ u_int32_t xpt_freeze_simq(struct cam_sim *sim, u_int count) { + GIANT_REQUIRED; + sim->devq->send_queue.qfrozen_cnt += count; if (sim->devq->active_dev != NULL) { struct ccb_hdr *ccbh; @@ -4659,6 +4709,8 @@ void xpt_release_devq(struct cam_path *path, u_int count, int run_queue) { + GIANT_REQUIRED; + xpt_release_devq_device(path->device, count, run_queue); } @@ -4717,6 +4769,8 @@ int s; struct camq *sendq; + GIANT_REQUIRED; + sendq = &(sim->devq->send_queue); s = splcam(); if (sendq->qfrozen_cnt > 0) { @@ -4765,6 +4819,8 @@ { int s; + GIANT_REQUIRED; + s = splcam(); CAM_DEBUG(done_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_done\n")); @@ -4796,6 +4852,8 @@ { union ccb *new_ccb; + GIANT_REQUIRED; + new_ccb = malloc(sizeof(*new_ccb), M_DEVBUF, M_WAITOK); return (new_ccb); } ==== //depot/projects/netperf/sys/cam/scsi/scsi_target.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.57 2003/10/02 08:56:14 simokawa Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.58 2003/11/09 09:17:20 tanimura Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1119,7 +1119,7 @@ * Notify users sleeping via poll(), kqueue(), and * blocking read(). */ - selwakeup(&softc->read_select); + selwakeuppri(&softc->read_select, PRIBIO); KNOTE(&softc->read_select.si_note, 0); wakeup(&softc->user_ccb_queue); } ==== //depot/projects/netperf/sys/coda/coda_psdev.c#3 (text+ko) ==== @@ -49,7 +49,7 @@ /* These routines are the device entry points for Venus. */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/coda/coda_psdev.c,v 1.28 2003/09/10 01:41:15 tjr Exp $"); +__FBSDID("$FreeBSD: src/sys/coda/coda_psdev.c,v 1.29 2003/11/09 09:17:20 tanimura Exp $"); extern int coda_nc_initialized; /* Set if cache has been initialized */ @@ -526,7 +526,7 @@ /* Append msg to request queue and poke Venus. */ INSQUE(vmp->vm_chain, vcp->vc_requests); - selwakeup(&(vcp->vc_selproc)); + selwakeuppri(&(vcp->vc_selproc), coda_call_sleep); /* We can be interrupted while we wait for Venus to process * our request. If the interrupt occurs before Venus has read @@ -664,7 +664,7 @@ /* insert at head of queue! */ INSQUE(svmp->vm_chain, vcp->vc_requests); - selwakeup(&(vcp->vc_selproc)); + selwakeuppri(&(vcp->vc_selproc), coda_call_sleep); } } ==== //depot/projects/netperf/sys/compat/linux/linux_socket.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.43 2003/10/11 15:08:32 iwasaki Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.44 2003/11/09 17:04:04 dwmalone Exp $"); /* XXX we use functions that might not exist. */ #include "opt_compat.h" @@ -45,6 +45,7 @@ #include <sys/file.h> #include <sys/limits.h> #include <sys/malloc.h> +#include <sys/mbuf.h> #include <sys/socket.h> #include <sys/socketvar.h> #include <sys/syscallsubr.h> @@ -333,39 +334,6 @@ return ret_flags; } -/* - * Allocate stackgap and put the converted sockaddr structure - * there, address on stackgap returned in sap. - */ -static int -linux_sa_get(caddr_t *sgp, struct sockaddr **sap, - const struct osockaddr *osa, int *osalen) -{ - struct sockaddr *sa, *usa; - int alloclen, error; - - alloclen = *osalen; - error = do_sa_get(&sa, osa, &alloclen, M_TEMP); - if (error) - return (error); - - usa = (struct sockaddr *) stackgap_alloc(sgp, alloclen); - if (!usa) { - error = ENOMEM; - goto out; - } - - if ((error = copyout(sa, usa, alloclen))) - goto out; - - *sap = usa; - *osalen = alloclen; - -out: - FREE(sa, M_TEMP); - return (error); -} - static int linux_sa_put(struct osockaddr *osa) { @@ -392,6 +360,46 @@ return (0); } +static int +linux_sendit(struct thread *td, int s, struct msghdr *mp, int flags) +{ + struct mbuf *control; + struct sockaddr *to; + int error; + + if (mp->msg_name != NULL) { + error = linux_getsockaddr(&to, mp->msg_name, mp->msg_namelen); + if (error) + return (error); + mp->msg_name = to; + } else + to = NULL; + + if (mp->msg_control != NULL) { + struct cmsghdr *cmsg; + + if (mp->msg_controllen < sizeof(struct cmsghdr)) { + error = EINVAL; + goto bad; + } + error = sockargs(&control, mp->msg_control, + mp->msg_controllen, MT_CONTROL); + if (error) + goto bad; + + cmsg = mtod(control, struct cmsghdr *); + cmsg->cmsg_level = linux_to_bsd_sockopt_level(cmsg->cmsg_level); + } else + control = NULL; + + error = kern_sendit(td, s, mp, linux_to_bsd_msg_flags(flags), control); + +bad: + if (to) + FREE(to, M_SONAME); + return (error); +} + /* Return 0 if IP_HDRINCL is set for the given socket. */ static int linux_check_hdrincl(struct thread *td, caddr_t *sg, int s) @@ -428,12 +436,21 @@ return (optval == 0); } +struct linux_sendto_args { + int s; + void *msg; + int len; + int flags; + caddr_t to; + int tolen; +}; + /* * Updated sendto() when IP_HDRINCL is set: * tweak endian-dependent fields in the IP packet. */ static int -linux_sendto_hdrincl(struct thread *td, caddr_t *sg, struct sendto_args *bsd_args) +linux_sendto_hdrincl(struct thread *td, caddr_t *sg, struct linux_sendto_args *linux_args) { /* * linux_ip_copysize defines how many bytes we should copy @@ -444,55 +461,43 @@ #define linux_ip_copysize 8 struct ip *packet; - struct msghdr *msg; - struct iovec *iov; - + struct msghdr msg; + struct iovec aiov[2]; int error; - struct sendmsg_args /* { - int s; - caddr_t msg; - int flags; - } */ sendmsg_args; /* Check the packet isn't too small before we mess with it */ - if (bsd_args->len < linux_ip_copysize) + if (linux_args->len < linux_ip_copysize) return (EINVAL); /* * Tweaking the user buffer in place would be bad manners. * We create a corrected IP header with just the needed length, * then use an iovec to glue it to the rest of the user packet - * when calling sendmsg(). + * when calling sendit(). */ packet = (struct ip *)stackgap_alloc(sg, linux_ip_copysize); - msg = (struct msghdr *)stackgap_alloc(sg, sizeof(*msg)); - iov = (struct iovec *)stackgap_alloc(sg, sizeof(*iov)*2); /* Make a copy of the beginning of the packet to be sent */ - if ((error = copyin(bsd_args->buf, packet, linux_ip_copysize))) + if ((error = copyin(linux_args->msg, packet, linux_ip_copysize))) return (error); /* Convert fields from Linux to BSD raw IP socket format */ - packet->ip_len = bsd_args->len; + packet->ip_len = linux_args->len; packet->ip_off = ntohs(packet->ip_off); /* Prepare the msghdr and iovec structures describing the new packet */ - msg->msg_name = bsd_args->to; - msg->msg_namelen = bsd_args->tolen; - msg->msg_iov = iov; - msg->msg_iovlen = 2; - msg->msg_control = NULL; - msg->msg_controllen = 0; - msg->msg_flags = 0; - iov[0].iov_base = (char *)packet; - iov[0].iov_len = linux_ip_copysize; - iov[1].iov_base = (char *)(bsd_args->buf) + linux_ip_copysize; - iov[1].iov_len = bsd_args->len - linux_ip_copysize; - - sendmsg_args.s = bsd_args->s; - sendmsg_args.msg = (caddr_t)msg; - sendmsg_args.flags = bsd_args->flags; - return (sendmsg(td, &sendmsg_args)); + msg.msg_name = linux_args->to; + msg.msg_namelen = linux_args->tolen; + msg.msg_iov = aiov; + msg.msg_iovlen = 2; + msg.msg_control = NULL; + msg.msg_flags = 0; + aiov[0].iov_base = (char *)packet; + aiov[0].iov_len = linux_ip_copysize; + aiov[1].iov_base = (char *)(linux_args->msg) + linux_ip_copysize; + aiov[1].iov_len = linux_args->len - linux_ip_copysize; + error = linux_sendit(td, linux_args->s, &msg, linux_args->flags); + return (error); } struct linux_socket_args { @@ -895,55 +900,32 @@ return (orecv(td, &bsd_args)); } -struct linux_sendto_args { - int s; - void *msg; - int len; - int flags; - caddr_t to; - int tolen; -}; - static int linux_sendto(struct thread *td, struct linux_sendto_args *args) { struct linux_sendto_args linux_args; - struct sendto_args /* { - int s; - caddr_t buf; - size_t len; - int flags; - caddr_t to; - int tolen; - } */ bsd_args; + struct msghdr msg; + struct iovec aiov; caddr_t sg = stackgap_init(); - struct sockaddr *to; - int tolen, error; + int error; if ((error = copyin(args, &linux_args, sizeof(linux_args)))) return (error); - tolen = linux_args.tolen; - if (linux_args.to) { - error = linux_sa_get(&sg, &to, - (struct osockaddr *) linux_args.to, &tolen); - if (error) - return (error); - } else - to = NULL; - - bsd_args.s = linux_args.s; - bsd_args.buf = linux_args.msg; - bsd_args.len = linux_args.len; - bsd_args.flags = linux_args.flags; - bsd_args.to = (caddr_t) to; - bsd_args.tolen = (unsigned int) tolen; - if (linux_check_hdrincl(td, &sg, linux_args.s) == 0) /* IP_HDRINCL set, tweak the packet before sending */ - return (linux_sendto_hdrincl(td, &sg, &bsd_args)); + return (linux_sendto_hdrincl(td, &sg, &linux_args)); - return (sendto(td, &bsd_args)); + msg.msg_name = linux_args.to; + msg.msg_namelen = linux_args.tolen; + msg.msg_iov = &aiov; + msg.msg_iovlen = 1; + msg.msg_control = NULL; + msg.msg_flags = 0; + aiov.iov_base = linux_args.msg; + aiov.iov_len = linux_args.len; + error = linux_sendit(td, linux_args.s, &msg, linux_args.flags); + return (error); } struct linux_recvfrom_args { @@ -999,16 +981,9 @@ linux_sendmsg(struct thread *td, struct linux_sendmsg_args *args) { struct linux_sendmsg_args linux_args; - struct sendmsg_args /* { - int s; - const struct msghdr *msg; - int flags; - } */ bsd_args; struct msghdr msg; - struct msghdr *nmsg = NULL; - struct cmsghdr *cmsg; + struct iovec aiov[UIO_SMALLIOV], *iov; int error; - caddr_t sg; if ((error = copyin(args, &linux_args, sizeof(linux_args)))) return (error); @@ -1016,41 +991,27 @@ error = copyin(linux_args.msg, &msg, sizeof(msg)); if (error) return (error); - - sg = stackgap_init(); - nmsg = (struct msghdr *)stackgap_alloc(&sg, sizeof(struct msghdr)); - if (nmsg == NULL) - return (ENOMEM); - - bcopy(&msg, nmsg, sizeof(struct msghdr)); - - if (msg.msg_name != NULL) { - struct sockaddr *sa; - - error = linux_sa_get(&sg, &sa, - (struct osockaddr *) msg.msg_name, &msg.msg_namelen); - if (error) - return (error); - - nmsg->msg_name = sa; + if ((u_int)msg.msg_iovlen >= UIO_SMALLIOV) { + if ((u_int)msg.msg_iovlen >= UIO_MAXIOV) + return (EMSGSIZE); + MALLOC(iov, struct iovec *, + sizeof(struct iovec) * (u_int)msg.msg_iovlen, M_IOV, + M_WAITOK); + } else { + iov = aiov; } + if (msg.msg_iovlen && + (error = copyin(msg.msg_iov, iov, + (unsigned)(msg.msg_iovlen * sizeof (struct iovec))))) + goto done; + msg.msg_iov = iov; + msg.msg_flags = 0; - if (msg.msg_control != NULL) { - nmsg->msg_control = (struct cmsghdr *)stackgap_alloc(&sg, - msg.msg_controllen); - if (nmsg->msg_control == NULL) - return (ENOMEM); - - bcopy(msg.msg_control, nmsg->msg_control, msg.msg_controllen); - cmsg = (struct cmsghdr*)nmsg->msg_control; - - cmsg->cmsg_level = linux_to_bsd_sockopt_level(cmsg->cmsg_level); - } - - bsd_args.s = linux_args.s; - bsd_args.msg = (caddr_t)nmsg; - bsd_args.flags = linux_to_bsd_msg_flags(linux_args.flags); - return (sendmsg(td, &bsd_args)); + error = linux_sendit(td, linux_args.s, &msg, linux_args.flags); +done: + if (iov != aiov) + FREE(iov, M_IOV); + return (error); } struct linux_recvmsg_args { ==== //depot/projects/netperf/sys/conf/files#23 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.845 2003/11/07 09:18:52 harti Exp $ +# $FreeBSD: src/sys/conf/files,v 1.846 2003/11/10 10:39:14 ume Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -208,7 +208,7 @@ crypto/des/des_setkey.c optional ipsec ipsec_esp crypto/rijndael/rijndael-alg-fst.c optional ipsec crypto/rijndael/rijndael-api-fst.c optional ipsec -opencrypto/rmd160.c optional ipsec +opencrypto/rmd160.c optional ipsec crypto/sha1.c optional ipsec crypto/sha2/sha2.c optional ipsec ddb/db_access.c optional ddb @@ -495,6 +495,7 @@ dev/joy/joy.c optional joy dev/joy/joy_isa.c optional joy isa dev/joy/joy_pccard.c optional joy pccard +dev/kttcp/kttcp.c optional kttcp dev/led/led.c optional cpu_soekris dev/lge/if_lge.c optional lge dev/lmc/if_lmc.c optional lmc nowerror @@ -1462,12 +1463,12 @@ netinet/tcp_timer.c optional inet netinet/tcp_usrreq.c optional inet netinet/udp_usrreq.c optional inet -#netinet6/ah_aesxcbcmac.c optional ipsec +netinet6/ah_aesxcbcmac.c optional ipsec netinet6/ah_core.c optional ipsec netinet6/ah_input.c optional ipsec netinet6/ah_output.c optional ipsec netinet6/dest6.c optional inet6 -#netinet6/esp_aesctr.c optional ipsec ipsec_esp +netinet6/esp_aesctr.c optional ipsec ipsec_esp netinet6/esp_core.c optional ipsec ipsec_esp netinet6/esp_input.c optional ipsec ipsec_esp netinet6/esp_output.c optional ipsec ipsec_esp ==== //depot/projects/netperf/sys/crypto/rijndael/rijndael-alg-fst.c#4 (text+ko) ==== @@ -1,19 +1,31 @@ -/* $KAME: rijndael-alg-fst.c,v 1.7 2001/05/27 00:23:23 itojun Exp $ */ - -/* - * rijndael-alg-fst.c v2.3 April '2000 +/* $KAME: rijndael-alg-fst.c,v 1.10 2003/07/15 10:47:16 itojun Exp $ */ +/** + * rijndael-alg-fst.c + * + * @version 3.0 (December 2000) + * + * Optimised ANSI C code for the Rijndael cipher (now AES) * - * Optimised ANSI C code + * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> + * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> + * @author Paulo Barreto <paulo.barreto@terra.com.br> * - * authors: v1.0: Antoon Bosselaers - * v2.0: Vincent Rijmen - * v2.3: Paulo Barreto + * This code is hereby placed in the public domain. >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311102326.hAANQHlM070271>