From bilouro at FreeBSD.org Tue Jul 1 00:58:49 2008 From: bilouro at FreeBSD.org (Victor Hugo Bilouro) Date: Tue Jul 1 00:58:51 2008 Subject: PERFORCE change 144402 for review Message-ID: <200807010058.m610wmIe089210@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144402 Change 144402 by bilouro@bilouro_tcptest on 2008/07/01 00:58:40 tcptest module (tcptest.py) test: send syn to a broadcast address (csynbroadcast.py) Affected files ... .. //depot/projects/soc2008/bilouro_tcptest/src/scripts/tests/csynbroadcast.py#1 add .. //depot/projects/soc2008/bilouro_tcptest/src/scripts/tests/tcptest.py#1 add Differences ... From bilouro at FreeBSD.org Tue Jul 1 01:07:59 2008 From: bilouro at FreeBSD.org (Victor Hugo Bilouro) Date: Tue Jul 1 01:08:04 2008 Subject: PERFORCE change 144403 for review Message-ID: <200807010107.m6117wvk091074@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144403 Change 144403 by bilouro@bilouro_tcptest on 2008/07/01 01:07:02 Some small fixes Affected files ... .. //depot/projects/soc2008/bilouro_tcptest/src/scripts/tests/cthreewayhandshake_nooptions.py#4 edit Differences ... ==== //depot/projects/soc2008/bilouro_tcptest/src/scripts/tests/cthreewayhandshake_nooptions.py#4 (text+ko) ==== @@ -126,7 +126,8 @@ self.tcb.tcpsequence[ self.tcb.thatside ] = tcpsynack.sequence assertSequenceAcknowledgmentOK(self, self.tcb, tcpsynack, \ self.tcb.thisside, self.tcb.thatside) - + + assertSynPresent(self, tcpsynack) #OK Its a SYN+ACK --> SYN consumes a sequence self.tcb.tcpsequence[ self.tcb.thatside ] = tcpsynack.sequence + 1 @@ -271,7 +272,7 @@ def assertFin(self, tcp): """is fin flag on? """ - self.failIf(tcp.fin<0) + self.failIf(tcp.fin<1) def createsyn(self, tcb, from_, to): @@ -363,7 +364,7 @@ tcb.tcpport[ to ]==tcp.sport): break except: - print "eeee" + print "packet ignored" pass return (ip, tcp) From hselasky at FreeBSD.org Tue Jul 1 08:50:46 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 08:50:48 2008 Subject: PERFORCE change 144412 for review Message-ID: <200807010850.m618ojt1059196@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144412 Change 144412 by hselasky@hselasky_laptop001 on 2008/07/01 08:50:14 Revert my changes. It appears that the "how" argument is not always passed on from unlock to lock like expected. The problem will be solved in another way. Affected files ... .. //depot/projects/usb/src/sys/kern/kern_mutex.c#10 integrate Differences ... ==== //depot/projects/usb/src/sys/kern/kern_mutex.c#10 (text+ko) ==== @@ -133,8 +133,7 @@ void lock_mtx(struct lock_object *lock, int how) { - if (how == 1) - return; + mtx_lock((struct mtx *)lock); } @@ -151,18 +150,6 @@ struct mtx *m; m = (struct mtx *)lock; - if ((m == &Giant) && (!mtx_owned(m))) { - /* - * Sometimes DROP_GIANT() gets in our way when we use - * the system condition variables passing the "Giant" - * mutex. If Giant is not locked when we get into this - * function then we can simply ignore those cases, - * because the locking is then handled by the DROP_XXX - * macros! - */ - return (1); - } - mtx_assert(m, MA_OWNED | MA_NOTRECURSED); mtx_unlock(m); return (0); From hselasky at FreeBSD.org Tue Jul 1 11:04:00 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 11:04:02 2008 Subject: PERFORCE change 144415 for review Message-ID: <200807011103.m61B3x2b079270@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144415 Change 144415 by hselasky@hselasky_laptop001 on 2008/07/01 11:03:31 To allow USB drivers using the Giant mutex, like ukbd and the tty layer (ucom), condition variable functions like mtx_sleep() and cv_wait() needs to support the Giant mutex. Previously using the Giant mutex with these functions resulted in a panic due to an unlock race between the GIANT_DROP macro and the internal mutex unlock in the condition variable function. This patch will try to resolve that race. Affected files ... .. //depot/projects/usb/src/sys/kern/kern_condvar.c#7 edit .. //depot/projects/usb/src/sys/kern/kern_synch.c#9 edit .. //depot/projects/usb/src/sys/sys/mutex.h#8 edit Differences ... ==== //depot/projects/usb/src/sys/kern/kern_condvar.c#7 (text+ko) ==== @@ -123,7 +123,7 @@ sleepq_lock(cvp); cvp->cv_waiters++; - DROP_GIANT(); + DROP_GIANT(lock); sleepq_add(cvp, lock, cvp->cv_description, SLEEPQ_CONDVAR, 0); if (class->lc_flags & LC_SLEEPABLE) @@ -176,7 +176,7 @@ sleepq_lock(cvp); cvp->cv_waiters++; - DROP_GIANT(); + DROP_GIANT(lock); sleepq_add(cvp, lock, cvp->cv_description, SLEEPQ_CONDVAR, 0); if (class->lc_flags & LC_SLEEPABLE) @@ -233,7 +233,7 @@ sleepq_lock(cvp); cvp->cv_waiters++; - DROP_GIANT(); + DROP_GIANT(lock); sleepq_add(cvp, lock, cvp->cv_description, SLEEPQ_CONDVAR | SLEEPQ_INTERRUPTIBLE, 0); @@ -293,7 +293,7 @@ sleepq_lock(cvp); cvp->cv_waiters++; - DROP_GIANT(); + DROP_GIANT(lock); sleepq_add(cvp, lock, cvp->cv_description, SLEEPQ_CONDVAR, 0); sleepq_set_timeout(cvp, timo); @@ -356,7 +356,7 @@ sleepq_lock(cvp); cvp->cv_waiters++; - DROP_GIANT(); + DROP_GIANT(lock); sleepq_add(cvp, lock, cvp->cv_description, SLEEPQ_CONDVAR | SLEEPQ_INTERRUPTIBLE, 0); ==== //depot/projects/usb/src/sys/kern/kern_synch.c#9 (text+ko) ==== @@ -181,7 +181,7 @@ CTR5(KTR_PROC, "sleep: thread %ld (pid %ld, %s) on %s (%p)", td->td_tid, p->p_pid, td->td_name, wmesg, ident); - DROP_GIANT(); + DROP_GIANT(lock); if (lock != NULL && !(class->lc_flags & LC_SLEEPABLE)) { WITNESS_SAVE(lock, lock_witness); lock_state = class->lc_unlock(lock); ==== //depot/projects/usb/src/sys/sys/mutex.h#8 (text+ko) ==== @@ -366,17 +366,44 @@ * * Note that DROP_GIANT*() needs to be paired with PICKUP_GIANT() * The #ifndef is to allow lint-like tools to redefine DROP_GIANT. + * + * Note that by default DROP_GIANT takes no argument. Optionally you + * can specify an argument which explicitly has the name "lock" and + * type "struct lock_object *". If this "lock" pointer is equal to + * "&Giant", the DROP_GIANT macro will not do the final drop on the + * Giant mutex, but expects the calling code to do so. This feature is + * used by condition variables to allow sleeping on Giant. The + * condition variable code will then do the final drop! */ #ifndef DROP_GIANT -#define DROP_GIANT() \ +#define DROP_GIANT(arg) DROP_GIANT_SUB_##arg(arg) +#define DROP_GIANT_SUB_lock(arg) DROP_GIANT_SUB(arg) /* "lock" argument */ +#define DROP_GIANT_SUB_(arg) DROP_GIANT_SUB(NULL) /* no argument */ +#define DROP_GIANT_SUB(lock) \ do { \ - int _giantcnt = 0; \ + unsigned int _giantcnt; \ WITNESS_SAVE_DECL(Giant); \ \ if (mtx_owned(&Giant)) { \ - WITNESS_SAVE(&Giant.lock_object, Giant); \ - for (_giantcnt = 0; mtx_owned(&Giant); _giantcnt++) \ - mtx_unlock(&Giant); \ + unsigned int _giantn; \ + if (((void *)(lock)) == ((void *)&Giant)) { \ + /* special case */ \ + _giantn = Giant.mtx_recurse; \ + } else { \ + /* default case */ \ + _giantn = Giant.mtx_recurse + 1; \ + } \ + if (_giantn != 0) { \ + WITNESS_SAVE(&Giant.lock_object, Giant); \ + _giantcnt = _giantn; \ + do { \ + mtx_unlock(&Giant); \ + } while (--_giantn); \ + } else { \ + _giantcnt = 0; \ + } \ + } else { \ + _giantcnt = 0; \ } #define PICKUP_GIANT() \ From hselasky at FreeBSD.org Tue Jul 1 12:35:33 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 12:35:35 2008 Subject: PERFORCE change 144418 for review Message-ID: <200807011235.m61CZWXJ094735@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144418 Change 144418 by hselasky@hselasky_laptop001 on 2008/07/01 12:35:00 Add more debugging and fix various bugs. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_atmelarm.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_pci.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2_pci.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci_pccard.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_config_td.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#6 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_debug.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#5 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#5 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_sw_transfer.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#6 edit .. //depot/projects/usb/src/sys/dev/usb2/input/uhid2.c#3 edit .. //depot/projects/usb/src/sys/modules/usb2/controller/Makefile#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#3 (text+ko) ==== @@ -205,7 +205,7 @@ if (!(sc->sc_vbus_irq_res)) { goto error; } - sc->sc_dci.sc_bus.bdev = device_add_child(dev, "usb", -1); + sc->sc_dci.sc_bus.bdev = device_add_child(dev, "usbus", -1); if (!(sc->sc_dci.sc_bus.bdev)) { goto error; } ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#3 (text+ko) ==== @@ -3043,6 +3043,8 @@ { ehci_softc_t *sc = xfer->usb2_sc; + DPRINTF(0, "\n"); + sc->sc_root_ctrl.xfer = xfer; usb2_config_td_queue_command ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#3 (text+ko) ==== @@ -281,7 +281,7 @@ device_printf(self, "Could not allocate irq\n"); goto error; } - sc->sc_bus.bdev = device_add_child(self, "usb", -1); + sc->sc_bus.bdev = device_add_child(self, "usbus", -1); if (!sc->sc_bus.bdev) { device_printf(self, "Could not add USB device\n"); goto error; ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_atmelarm.c#3 (text) ==== @@ -103,7 +103,7 @@ if (!(sc->sc_ohci.sc_irq_res)) { goto error; } - sc->sc_ohci.sc_bus.bdev = device_add_child(dev, "usb", -1); + sc->sc_ohci.sc_bus.bdev = device_add_child(dev, "usbus", -1); if (!(sc->sc_ohci.sc_bus.bdev)) { goto error; } ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_pci.c#3 (text+ko) ==== @@ -229,7 +229,7 @@ device_printf(self, "Could not allocate irq\n"); goto error; } - sc->sc_bus.bdev = device_add_child(self, "usb", -1); + sc->sc_bus.bdev = device_add_child(self, "usbus", -1); if (!sc->sc_bus.bdev) { device_printf(self, "Could not add USB device\n"); goto error; ==== //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#3 (text+ko) ==== @@ -2532,6 +2532,8 @@ { uhci_softc_t *sc = xfer->usb2_sc; + DPRINTF(0, "\n"); + sc->sc_root_ctrl.xfer = xfer; usb2_config_td_queue_command ==== //depot/projects/usb/src/sys/dev/usb2/controller/uhci2_pci.c#3 (text+ko) ==== @@ -282,7 +282,7 @@ device_printf(self, "Could not allocate irq\n"); goto error; } - sc->sc_bus.bdev = device_add_child(self, "usb", -1); + sc->sc_bus.bdev = device_add_child(self, "usbus", -1); if (!sc->sc_bus.bdev) { device_printf(self, "Could not add USB device\n"); goto error; ==== //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#3 (text+ko) ==== @@ -58,9 +58,9 @@ /* static variables */ #ifdef USB_DEBUG -static int usb2_ctrl_debug; +static int usb2_ctrl_debug = 0; -SYSCTL_NODE(_hw_usb2, OID_AUTO, ctrl, CTLFLAG_RW, 0, "USB ctrless"); +SYSCTL_NODE(_hw_usb2, OID_AUTO, ctrl, CTLFLAG_RW, 0, "USB controller"); SYSCTL_INT(_hw_usb2_ctrl, OID_AUTO, debug, CTLFLAG_RW, &usb2_ctrl_debug, 0, "Debug level"); #endif @@ -118,7 +118,9 @@ mtx_lock(&Giant); if (usb2_post_init_called) { + mtx_lock(&Giant); usb2_attach_sub(dev, bus); + mtx_unlock(&Giant); usb2_needs_explore(bus, 1); } mtx_unlock(&Giant); @@ -139,7 +141,6 @@ /* Let the USB explore process detach all devices. */ mtx_lock(&(bus->mtx)); - if (usb2_proc_msignal(&(bus->explore_proc), &(bus->detach_msg[0]), &(bus->detach_msg[1]))) { /* ignore */ @@ -155,10 +156,12 @@ usb2_proc_unsetup(&(bus->explore_proc)); + /* clear the softc */ + device_set_softc(dev, NULL); + return (0); } - /*------------------------------------------------------------------------* * usb2_bus_explore * @@ -219,7 +222,6 @@ bus->ready = 0; mtx_unlock(&(bus->mtx)); - mtx_lock(&Giant); /* detach children first */ @@ -233,9 +235,7 @@ usb2_free_device(udev); mtx_unlock(&Giant); - mtx_lock(&(bus->mtx)); - return; } @@ -347,9 +347,11 @@ max = devclass_get_maxunit(dc) + 1; for (n = 0; n != max; n++) { dev = devclass_get_device(dc, n); - if (dev) { + if (dev && device_is_attached(dev)) { bus = device_get_softc(dev); + mtx_lock(&Giant); usb2_attach_sub(dev, bus); + mtx_unlock(&Giant); } } } else { ==== //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci_pccard.c#3 (text+ko) ==== @@ -184,7 +184,7 @@ if (sc->sc_irq_res == NULL) { goto error; } - sc->sc_bus.bdev = device_add_child(dev, "usb", -1); + sc->sc_bus.bdev = device_add_child(dev, "usbus", -1); if (!(sc->sc_bus.bdev)) { goto error; } ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_config_td.c#2 (text+ko) ==== @@ -38,6 +38,8 @@ struct usb2_config_td_item *pi = (void *)pm; struct usb2_config_td *ctd = pi->p_ctd; + DPRINTF(0, "\n"); + (pi->command_func) (ctd->p_softc, (void *)(pi + 1), pi->command_ref); if (TAILQ_NEXT(pm, pm_qentry) == NULL) { @@ -68,6 +70,8 @@ struct usb2_config_td_item *pi; uint16_t n; + DPRINTF(0, " size=%u, count=%u \n", item_size, item_count); + if (item_count >= 256) { DPRINTF(-1, "too many items!\n"); return (1); @@ -83,8 +87,8 @@ return (1); } if (usb2_proc_setup(&(ctd->usb2_proc), priv_mtx, USB_PRI_MED)) { + free(M_USBDEV, ctd->p_msgs); ctd->p_msgs = NULL; - free(M_USBDEV, ctd->p_msgs); return (1); } /* initialise messages */ @@ -109,6 +113,7 @@ void usb2_config_td_stop(struct usb2_config_td *ctd) { + DPRINTF(0, "\n"); if (ctd->p_msgs) { usb2_proc_drain(&(ctd->usb2_proc)); } @@ -124,6 +129,8 @@ void usb2_config_td_unsetup(struct usb2_config_td *ctd) { + DPRINTF(0, "\n"); + usb2_config_td_stop(ctd); if (ctd->p_msgs) { @@ -161,9 +168,12 @@ uint16_t n; if (usb2_config_td_is_gone(ctd)) { + DPRINTF(0, "gone\n"); /* nothing more to do */ return; } + DPRINTF(0, "\n"); + pi = USB_ADD_BYTES(ctd->p_msgs, 0); for (n = 0;; n += 2) { if (n == ctd->msg_count) { @@ -172,19 +182,28 @@ __FUNCTION__, __LINE__); return; } - if ((pi->command_func == NULL) || - ((pi->command_func == command_post_func) && - (pi->command_ref == command_ref))) { + if (pi->command_func == NULL) { + /* reserve our entry */ + pi->command_func = command_post_func; + pi->command_ref = command_ref; + pi_0 = pi; + pi = USB_ADD_BYTES(pi, ctd->msg_size); + pi->command_func = command_post_func; + pi->command_ref = command_ref; + pi_1 = pi; + break; + } + if ((pi->command_func == command_post_func) && + (pi->command_ref == command_ref)) { /* found an entry */ + pi_0 = pi; + pi = USB_ADD_BYTES(pi, ctd->msg_size); + pi_1 = pi; break; } pi = USB_ADD_BYTES(pi, (2 * ctd->msg_size)); } - pi_0 = pi; - pi = USB_ADD_BYTES(pi, ctd->msg_size); - pi_1 = pi; - /* * We have two message structures. One of them will get * queued: @@ -198,8 +217,6 @@ * That way commands queued by the pre command will be queued after * the current command. */ - pi->command_func = command_post_func; - pi->command_ref = command_ref; /* * The job of the pre-command function is to copy the needed ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#6 (text+ko) ==== @@ -349,6 +349,7 @@ struct usb2_interface *iface; /* current interface */ uint8_t usb2_mode; /* see USB_MODE_XXX */ uint8_t port; + uint8_t use_generic; /* hint for generic drivers */ }; /* Structure used when referring an USB device */ ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_debug.h#2 (text+ko) ==== @@ -42,10 +42,10 @@ /* Check if USB debugging is enabled. */ #ifdef USB_DEBUG_VAR #ifdef USB_DEBUG -#define DPRINTF(n,fmt,...) do { \ +#define DPRINTF(n,fmt,...) do { \ if ((USB_DEBUG_VAR) > (n)) { \ - printf("%s:%u@%s: " fmt, __FILE__, __LINE__, \ - __FUNCTION__,## __VA_ARGS__); \ + printf("%s:%u: " fmt, \ + __FUNCTION__, __LINE__,## __VA_ARGS__); \ } \ } while (0) #else ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#5 (text+ko) ==== @@ -776,15 +776,15 @@ if (fp == NULL) { return (ENXIO); } - if (usb2_old_f_data != NULL) { - if (usb2_old_f_data != fp->f_data) { + if (usb2_old_f_data != fp->f_data) { + if (usb2_old_f_data != NULL) { DPRINTF(-1, "File data mismatch!\n"); return (ENXIO); } usb2_old_f_data = fp->f_data; } - if (usb2_old_f_ops != NULL) { - if (usb2_old_f_ops != fp->f_ops) { + if (usb2_old_f_ops != fp->f_ops) { + if (usb2_old_f_ops != NULL) { DPRINTF(-1, "File ops mismatch!\n"); return (ENXIO); } @@ -981,6 +981,8 @@ int fflags; int err; + DPRINTF(1, "\n"); + err = usb2_ref_device(fp, &loc, 0);; /* restore some file variables */ @@ -1614,10 +1616,10 @@ if (kern_unlink(curthread, buf, UIO_SYSSPACE)) { /* ignore */ } - if (kern_symlink(curthread, buf, src, UIO_SYSSPACE)) { + if (kern_symlink(curthread, src, buf, UIO_SYSSPACE)) { /* ignore */ } - printf("Symlink: %s -> %s\n", src, buf); + printf("Symlink: %s -> %s\n", buf, src); } DPRINTF(1, "attached %p/%p\n", f_tx, f_rx); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#3 (text+ko) ==== @@ -582,6 +582,7 @@ } else selfpowered = 1; } + DPRINTF(0, "udev=%p cdesc=%p (addr %d) cno=%d attr=0x%02x, " "selfpowered=%d, power=%d\n", udev, cdp, @@ -611,8 +612,8 @@ udev->curr_config_index = index; /* Set the actual configuration value. */ - err = usb2_req_set_config(udev, &Giant, - cdp->bConfigurationValue); + err = usb2_req_set_config(udev, &Giant, +cdp->bConfigurationValue); if (err) { goto error; } @@ -989,7 +990,7 @@ usb2_init_attach_arg(struct usb2_device *udev, struct usb2_attach_arg *uaa) { - bzero(&uaa, sizeof(uaa)); + bzero(uaa, sizeof(*uaa)); uaa->device = udev; uaa->usb2_mode = udev->flags.usb2_mode; @@ -1076,10 +1077,28 @@ uaa.info.bIfaceIndex = i; uaa.info.bIfaceNum = iface->idesc->bInterfaceNumber; + uaa.use_generic = 0; + DPRINTF(1, "iclass=%u/%u/%u iindex=%u/%u\n", + uaa.info.bInterfaceClass, + uaa.info.bInterfaceSubClass, + uaa.info.bInterfaceProtocol, + uaa.info.bIfaceIndex, + uaa.info.bIfaceNum); + + /* try specific interface drivers first */ + if (usb2_probe_and_attach_sub(udev, &uaa)) { /* ignore */ } + + /* try generic interface drivers last */ + + uaa.use_generic = 1; + + if (usb2_probe_and_attach_sub(udev, &uaa)) { + /* ignore */ + } } if (uaa.temp_dev) { @@ -1824,7 +1843,7 @@ uint8_t usb2_test_quirk(const struct usb2_attach_arg *uaa, uint16_t quirk) { - uint8_t found = 0; + uint8_t found; found = (usb2_test_quirk_p) (&(uaa->info), quirk); return (found); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#5 (text+ko) ==== @@ -126,7 +126,7 @@ static driver_t uhub_driver = { - .name = "uhub", + .name = "ushub", .methods = (device_method_t[]){ DEVMETHOD(device_probe, uhub_probe), DEVMETHOD(device_attach, uhub_attach), @@ -644,14 +644,14 @@ req.bRequest = UR_GET_DESCRIPTOR; USETW2(req.wValue, UDESC_HUB, 0); USETW(req.wIndex, 0); - USETW(req.wLength, sizeof(hubdesc)); + USETW(req.wLength, 9); /* assuming that there is one port */ err = usb2_do_request(udev, &Giant, &req, &hubdesc); nports = hubdesc.bNbrPorts; if (!err && (nports >= 8)) { - uint16_t len = (sizeof(hubdesc) - 1) + ((nports + 7) / 8); + uint16_t len = 8 + ((nports + 7) / 8); USETW(req.wLength, len); err = usb2_do_request(udev, &Giant, &req, &hubdesc); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#2 (text+ko) ==== @@ -131,7 +131,7 @@ pm = TAILQ_FIRST(&(up->up_qhead)); if (pm) { - DPRINTF(0, "Message %p,%p (enter)\n", + DPRINTF(0, "Message pm=%p, cb=%p (enter)\n", pm, pm->pm_callback); (pm->pm_callback) (pm); @@ -141,7 +141,7 @@ TAILQ_REMOVE(&(up->up_qhead), pm, pm_qentry); pm->pm_qentry.tqe_prev = NULL; } - DPRINTF(0, "Message %p (leave)\n", pm); + DPRINTF(0, "Message pm=%p (leave)\n", pm); continue; } @@ -150,18 +150,14 @@ cv_broadcast(&(up->up_drain)); } up->up_msleep = 1; - cv_wait(&(up->up_cv), up->up_mtx); - - up->up_msleep = 0; } up->up_ptr = NULL; - cv_signal(&(up->up_cv)); - mtx_unlock(up->up_mtx); + USB_THREAD_EXIT(0); return; } @@ -295,6 +291,8 @@ pm2 = NULL; /* panic - should not happen */ } + DPRINTF(0, " t=%u, num=%u\n", t, up->up_msg_num); + /* Put message last on queue */ pm2->pm_num = up->up_msg_num; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#3 (text+ko) ==== @@ -70,6 +70,8 @@ { ; /* workaround for a bug in "indent" */ + DPRINTF(0, "st=%u\n", USB_GET_STATE(xfer)); + switch (USB_GET_STATE(xfer)) { case USB_ST_SETUP: usb2_start_hardware(xfer); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_sw_transfer.c#2 (text+ko) ==== @@ -27,11 +27,14 @@ #include #include +#define USB_DEBUG_VAR usb2_debug + #include #include #include #include #include +#include /*------------------------------------------------------------------------* * usb2_sw_transfer - factored out code @@ -60,6 +63,7 @@ xfer = std->xfer; if (xfer == NULL) { /* the transfer is gone */ + DPRINTF(0, "xfer gone\n"); return; } mtx_assert(xfer->usb2_mtx, MA_OWNED); @@ -154,10 +158,8 @@ } } done: + DPRINTF(0, "done err=%s\n", usb2_errstr(std->err)); std->state = USB_SW_TR_PRE_CALLBACK; (func) (xfer, std); - - /* call the USB transfer callback */ - usb2_command_wrapper(&(xfer->usb2_root->done_q), xfer); return; } ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#6 (text+ko) ==== @@ -1280,6 +1280,8 @@ if (!xfer->flags_int.open) { xfer->flags_int.open = 1; + DPRINTF(0, "open\n"); + mtx_lock(xfer->usb2_mtx); (xfer->pipe->methods->open) (xfer); mtx_unlock(xfer->usb2_mtx); @@ -1415,6 +1417,8 @@ pipe = xfer->pipe; + DPRINTF(0, "enter\n"); + /* enter the transfer */ (pipe->methods->enter) (xfer); @@ -1511,11 +1515,19 @@ */ if (xfer->flags_int.transferring) { if (xfer->flags_int.can_cancel_immed) { - usb2_transfer_done(xfer, 0); + /* + * The close method will be called by the + * "usb2_callback_wrapper()" when it detects + * that we are closed. This way we resolve + * some races. + */ + usb2_transfer_done(xfer, USB_ERR_CANCELLED); } else { /* need to wait for the next done callback */ } } else { + DPRINTF(0, "close\n"); + /* close here and now */ (xfer->pipe->methods->close) (xfer); } @@ -1676,6 +1688,8 @@ * 4) We are doing an ordinary callback */ DPRINTF(2, "case 1-4\n"); + /* get next USB transfer in the queue */ + info->done_q.curr = NULL; mtx_unlock(xfer->usb2_mtx); mtx_assert(xfer->usb2_mtx, MA_NOTOWNED); @@ -1688,8 +1702,6 @@ if (usb2_callback_wrapper_sub(xfer)) { /* the callback has been deferred */ mtx_lock(xfer->usb2_mtx); - /* get next USB transfer in the queue */ - info->done_q.curr = NULL; goto done; } xfer->flags_int.transferring = 0; @@ -1723,18 +1735,14 @@ (xfer->flags_int.started) && (xfer->usb2_state == USB_ST_ERROR)) { /* do nothing - just loop */ + usb2_command_wrapper(&(info->done_q), xfer); + return; } else if (xfer->flags_int.draining && (!xfer->flags_int.transferring)) { - /* get next USB transfer in the queue */ - info->done_q.curr = NULL; /* "usb2_transfer_drain()" is waiting for end of transfer */ xfer->flags_int.draining = 0; wakeup(&(xfer->flags_int)); - } else { - /* get next USB transfer in the queue */ - info->done_q.curr = NULL; } - done: /* do the next callback, if any */ usb2_command_wrapper(&(info->done_q), @@ -1828,6 +1836,16 @@ mtx_assert(xfer->usb2_mtx, MA_OWNED); + DPRINTF(0, "err=%s\n", usb2_errstr(error)); + + /* + * If we are not transferring then just return. + * This can happen during transfer cancel. + */ + if (!xfer->flags_int.transferring) { + DPRINTF(0, "not transferring\n"); + return; + } /* only set transfer error if not already set */ if (!xfer->error) { xfer->error = error; @@ -1902,6 +1920,8 @@ mtx_assert(xfer->usb2_mtx, MA_OWNED); + DPRINTF(0, "start\n"); + /* start the transfer */ (pipe->methods->start) (xfer); @@ -2045,6 +2065,8 @@ return; } } + DPRINTF(0, "start\n"); + /* start USB transfer */ (pipe->methods->start) (xfer); @@ -2105,6 +2127,7 @@ if (!xfer->flags_int.open && !xfer->flags_int.did_close) { + DPRINTF(0, "close\n"); mtx_lock(xfer->usb2_mtx); (xfer->pipe->methods->close) (xfer); mtx_unlock(xfer->usb2_mtx); @@ -2245,6 +2268,7 @@ usb2_transfer_enqueue(pq, xfer); if (pq->curr != NULL) { /* something is already processing */ + DPRINTF(5, "busy %p\n", pq->curr); return; } } @@ -2272,7 +2296,9 @@ break; } } + DPRINTF(5, "cb %p (enter)\n", pq->curr); (pq->command) (pq); + DPRINTF(5, "cb %p (leave)\n", pq->curr); } while (!pq->recurse_2); ==== //depot/projects/usb/src/sys/dev/usb2/input/uhid2.c#3 (text+ko) ==== @@ -630,6 +630,10 @@ if (uaa->usb2_mode != USB_MODE_HOST) { return (ENXIO); } + if (uaa->use_generic == 0) { + /* give Mouse and Keyboard drivers a try first */ + return (ENXIO); + } if (uaa->info.bInterfaceClass != UICLASS_HID) { /* the Xbox 360 gamepad doesn't use the HID class */ ==== //depot/projects/usb/src/sys/modules/usb2/controller/Makefile#3 (text+ko) ==== @@ -7,16 +7,25 @@ SRCS+= bus_if.h usb2_if.h device_if.h vnode_if.h SRCS+= opt_usb.h pci_if.h opt_bus.h card_if.h +# +# The "usb2_controller.c" file must be first to +# resolve a "MODULE_DRIVER()" race. +# + +SRCS+= usb2_controller.c + +.if defined(HAS_ATMELARM) +SRCS+= at91dci_atmelarm.c +SRCS+= ohci2_atmelarm.c +.endif + SRCS+= at91dci.c -SRCS+= at91dci_atmelarm.c SRCS+= ehci2.c SRCS+= ehci2_pci.c SRCS+= ohci2.c -SRCS+= ohci2_atmelarm.c SRCS+= ohci2_pci.c SRCS+= uhci2.c SRCS+= uhci2_pci.c -SRCS+= usb2_controller.c SRCS+= uss820dci.c SRCS+= uss820dci_pccard.c From vi0 at FreeBSD.org Tue Jul 1 14:24:24 2008 From: vi0 at FreeBSD.org (Przemek Witaszczyk) Date: Tue Jul 1 14:24:29 2008 Subject: PERFORCE change 144423 for review Message-ID: <200807011424.m61EONvs016491@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144423 Change 144423 by vi0@vi0_gilgamesh.semihalf.com on 2008/07/01 14:24:12 New config Affected files ... .. //depot/projects/soc2008/vi0/efika/sys/powerpc/conf/EFIKA#1 add Differences ... From sson at FreeBSD.org Tue Jul 1 15:26:26 2008 From: sson at FreeBSD.org (Stacey Son) Date: Tue Jul 1 15:26:28 2008 Subject: PERFORCE change 144425 for review Message-ID: <200807011526.m61FQPQL026558@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144425 Change 144425 by sson@sson_amd64 on 2008/07/01 15:25:44 Fixed problem when building outside the source directories. Affected files ... .. //depot/projects/trustedbsd/openbsm/bin/audit/Makefile.am#3 edit .. //depot/projects/trustedbsd/openbsm/bin/audit/Makefile.in#6 edit .. //depot/projects/trustedbsd/openbsm/bin/audit/auditd_control.defs#2 delete .. //depot/projects/trustedbsd/openbsm/bin/auditd/Makefile.am#3 edit .. //depot/projects/trustedbsd/openbsm/bin/auditd/Makefile.in#6 edit .. //depot/projects/trustedbsd/openbsm/bin/auditfilterd/Makefile.am#2 edit .. //depot/projects/trustedbsd/openbsm/bin/auditfilterd/Makefile.in#3 edit .. //depot/projects/trustedbsd/openbsm/bin/auditreduce/Makefile.am#2 edit .. //depot/projects/trustedbsd/openbsm/bin/auditreduce/Makefile.in#5 edit .. //depot/projects/trustedbsd/openbsm/bin/praudit/Makefile.am#2 edit .. //depot/projects/trustedbsd/openbsm/bin/praudit/Makefile.in#5 edit .. //depot/projects/trustedbsd/openbsm/libbsm/Makefile.am#4 edit .. //depot/projects/trustedbsd/openbsm/libbsm/Makefile.in#6 edit .. //depot/projects/trustedbsd/openbsm/modules/auditfilter_noop/Makefile.am#2 edit .. //depot/projects/trustedbsd/openbsm/modules/auditfilter_noop/Makefile.in#3 edit .. //depot/projects/trustedbsd/openbsm/test/bsm/Makefile.am#2 edit .. //depot/projects/trustedbsd/openbsm/test/bsm/Makefile.in#3 edit .. //depot/projects/trustedbsd/openbsm/tools/Makefile.am#3 edit .. //depot/projects/trustedbsd/openbsm/tools/Makefile.in#6 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/bin/audit/Makefile.am#3 (text+ko) ==== @@ -1,8 +1,8 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/audit/Makefile.am#2 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/audit/Makefile.am#3 $ # -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) sbin_PROGRAMS = audit audit_LDADD = $(top_builddir)/libbsm/libbsm.la @@ -12,8 +12,8 @@ audit_SOURCES = auditd_control_user.c audit.c CLEANFILES = auditd_control_user.c auditd_control_user.h -auditd_control_user.c: auditd_control.defs - $(MIG) -user auditd_control_user.c -header auditd_control_user.h -server /dev/null -sheader /dev/null auditd_control.defs +auditd_control_user.c: $(top_srcdir)/bin/auditd/auditd_control.defs + $(MIG) -user auditd_control_user.c -header auditd_control_user.h -server /dev/null -sheader /dev/null $(top_srcdir)/bin/auditd/auditd_control.defs else audit_SOURCES = audit.c endif ==== //depot/projects/trustedbsd/openbsm/bin/audit/Makefile.in#6 (text+ko) ==== @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/audit/Makefile.in#5 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/audit/Makefile.in#6 $ # VPATH = @srcdir@ @@ -127,6 +127,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -182,7 +183,7 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) audit_LDADD = $(top_builddir)/libbsm/libbsm.la man8_MANS = audit.8 @USE_MACH_IPC_FALSE@audit_SOURCES = audit.c @@ -519,8 +520,8 @@ uninstall-sbinPROGRAMS -@USE_MACH_IPC_TRUE@auditd_control_user.c: auditd_control.defs -@USE_MACH_IPC_TRUE@ $(MIG) -user auditd_control_user.c -header auditd_control_user.h -server /dev/null -sheader /dev/null auditd_control.defs +@USE_MACH_IPC_TRUE@auditd_control_user.c: $(top_srcdir)/bin/auditd/auditd_control.defs +@USE_MACH_IPC_TRUE@ $(MIG) -user auditd_control_user.c -header auditd_control_user.h -server /dev/null -sheader /dev/null $(top_srcdir)/bin/auditd/auditd_control.defs # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ==== //depot/projects/trustedbsd/openbsm/bin/auditd/Makefile.am#3 (text+ko) ==== @@ -1,8 +1,8 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/Makefile.am#2 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/Makefile.am#3 $ # -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) sbin_PROGRAMS = auditd auditd_LDADD = $(top_builddir)/libbsm/libbsm.la @@ -13,10 +13,10 @@ CLEANFILES = auditd_control_server.c auditd_control_server.h audit_triggers_server.c audit_triggers_server.h auditd_control_server.c: auditd_control.defs - $(MIG) -user /dev/null -header /dev/null -server auditd_control_server.c -sheader auditd_control_server.h auditd_control.defs + $(MIG) -user /dev/null -header /dev/null -server auditd_control_server.c -sheader auditd_control_server.h $(top_srcdir)/bin/auditd/auditd_control.defs audit_triggers_server.c: audit_triggers.defs - $(MIG) -user /dev/null -header /dev/null -server audit_triggers_server.c -sheader audit_triggers_server.h audit_triggers.defs + $(MIG) -user /dev/null -header /dev/null -server audit_triggers_server.c -sheader audit_triggers_server.h $(top_srcdir)/bin/auditd/audit_triggers.defs else auditd_SOURCES = audit_warn.c auditd.c endif ==== //depot/projects/trustedbsd/openbsm/bin/auditd/Makefile.in#6 (text+ko) ==== @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/Makefile.in#5 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/Makefile.in#6 $ # VPATH = @srcdir@ @@ -186,7 +186,7 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) auditd_LDADD = $(top_builddir)/libbsm/libbsm.la man8_MANS = auditd.8 @USE_MACH_IPC_FALSE@auditd_SOURCES = audit_warn.c auditd.c @@ -526,10 +526,10 @@ @USE_MACH_IPC_TRUE@auditd_control_server.c: auditd_control.defs -@USE_MACH_IPC_TRUE@ $(MIG) -user /dev/null -header /dev/null -server auditd_control_server.c -sheader auditd_control_server.h auditd_control.defs +@USE_MACH_IPC_TRUE@ $(MIG) -user /dev/null -header /dev/null -server auditd_control_server.c -sheader auditd_control_server.h $(top_srcdir)/bin/auditd/auditd_control.defs @USE_MACH_IPC_TRUE@audit_triggers_server.c: audit_triggers.defs -@USE_MACH_IPC_TRUE@ $(MIG) -user /dev/null -header /dev/null -server audit_triggers_server.c -sheader audit_triggers_server.h audit_triggers.defs +@USE_MACH_IPC_TRUE@ $(MIG) -user /dev/null -header /dev/null -server audit_triggers_server.c -sheader audit_triggers_server.h $(top_srcdir)/bin/auditd/audit_triggers.defs # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ==== //depot/projects/trustedbsd/openbsm/bin/auditfilterd/Makefile.am#2 (text+ko) ==== @@ -1,8 +1,8 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/Makefile.am#1 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/Makefile.am#2 $ # -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) sbin_PROGRAMS = auditfilterd auditfilterd_SOURCES = auditfilterd_conf.c auditfilterd.c ==== //depot/projects/trustedbsd/openbsm/bin/auditfilterd/Makefile.in#3 (text+ko) ==== @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/Makefile.in#2 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/Makefile.in#3 $ # VPATH = @srcdir@ @@ -114,6 +114,7 @@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MIG = @MIG@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ @@ -124,7 +125,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ -SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -180,7 +180,7 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) auditfilterd_SOURCES = auditfilterd_conf.c auditfilterd.c auditfilterd_LDADD = $(top_builddir)/libbsm/libbsm.la man8_MANS = auditfilterd.8 @@ -197,9 +197,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign bin/auditfilterd/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bin/auditfilterd/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign bin/auditfilterd/Makefile + $(AUTOMAKE) --gnu bin/auditfilterd/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ ==== //depot/projects/trustedbsd/openbsm/bin/auditreduce/Makefile.am#2 (text+ko) ==== @@ -1,8 +1,8 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/auditreduce/Makefile.am#1 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/auditreduce/Makefile.am#2 $ # -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) sbin_PROGRAMS = auditreduce auditreduce_SOURCES = auditreduce.c ==== //depot/projects/trustedbsd/openbsm/bin/auditreduce/Makefile.in#5 (text+ko) ==== @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/auditreduce/Makefile.in#4 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/auditreduce/Makefile.in#5 $ # VPATH = @srcdir@ @@ -113,6 +113,7 @@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MIG = @MIG@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ @@ -123,7 +124,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ -SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -179,7 +179,7 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) auditreduce_SOURCES = auditreduce.c auditreduce_LDADD = $(top_builddir)/libbsm/libbsm.la man1_MANS = auditreduce.1 @@ -196,9 +196,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign bin/auditreduce/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bin/auditreduce/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign bin/auditreduce/Makefile + $(AUTOMAKE) --gnu bin/auditreduce/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ ==== //depot/projects/trustedbsd/openbsm/bin/praudit/Makefile.am#2 (text+ko) ==== @@ -1,8 +1,8 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/praudit/Makefile.am#1 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/praudit/Makefile.am#2 $ # -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) sbin_PROGRAMS = praudit praudit_SOURCES = praudit.c ==== //depot/projects/trustedbsd/openbsm/bin/praudit/Makefile.in#5 (text+ko) ==== @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $P4: //depot/projects/trustedbsd/openbsm/bin/praudit/Makefile.in#4 $ +# $P4: //depot/projects/trustedbsd/openbsm/bin/praudit/Makefile.in#5 $ # VPATH = @srcdir@ @@ -113,6 +113,7 @@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MIG = @MIG@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ @@ -123,7 +124,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ -SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -179,7 +179,7 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) praudit_SOURCES = praudit.c praudit_LDADD = $(top_builddir)/libbsm/libbsm.la man1_MANS = praudit.1 @@ -196,9 +196,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign bin/praudit/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bin/praudit/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign bin/praudit/Makefile + $(AUTOMAKE) --gnu bin/praudit/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ ==== //depot/projects/trustedbsd/openbsm/libbsm/Makefile.am#4 (text+ko) ==== @@ -1,8 +1,8 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/libbsm/Makefile.am#3 $ +# $P4: //depot/projects/trustedbsd/openbsm/libbsm/Makefile.am#4 $ # -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) lib_LTLIBRARIES = libbsm.la ==== //depot/projects/trustedbsd/openbsm/libbsm/Makefile.in#6 (text+ko) ==== @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $P4: //depot/projects/trustedbsd/openbsm/libbsm/Makefile.in#5 $ +# $P4: //depot/projects/trustedbsd/openbsm/libbsm/Makefile.in#6 $ # VPATH = @srcdir@ @@ -129,6 +129,7 @@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MIG = @MIG@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ @@ -139,7 +140,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ -SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -195,7 +195,7 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) lib_LTLIBRARIES = libbsm.la libbsm_la_SOURCES = bsm_audit.c bsm_class.c bsm_control.c bsm_event.c \ bsm_flags.c bsm_io.c bsm_mask.c bsm_token.c bsm_user.c \ @@ -225,9 +225,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libbsm/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libbsm/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign libbsm/Makefile + $(AUTOMAKE) --gnu libbsm/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ ==== //depot/projects/trustedbsd/openbsm/modules/auditfilter_noop/Makefile.am#2 (text+ko) ==== @@ -1,8 +1,8 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/modules/auditfilter_noop/Makefile.am#1 $ +# $P4: //depot/projects/trustedbsd/openbsm/modules/auditfilter_noop/Makefile.am#2 $ # -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) lib_LTLIBRARIES = auditfilter_noop.la ==== //depot/projects/trustedbsd/openbsm/modules/auditfilter_noop/Makefile.in#3 (text+ko) ==== @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $P4: //depot/projects/trustedbsd/openbsm/modules/auditfilter_noop/Makefile.in#2 $ +# $P4: //depot/projects/trustedbsd/openbsm/modules/auditfilter_noop/Makefile.in#3 $ # VPATH = @srcdir@ @@ -118,6 +118,7 @@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MIG = @MIG@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ @@ -128,7 +129,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ -SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -184,7 +184,7 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) lib_LTLIBRARIES = auditfilter_noop.la auditfilter_noop_la_SOURCE = auditfilter_noop.c auditfilter_noop_la_LDFLAGS = -module @@ -201,9 +201,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/auditfilter_noop/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/auditfilter_noop/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign modules/auditfilter_noop/Makefile + $(AUTOMAKE) --gnu modules/auditfilter_noop/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ ==== //depot/projects/trustedbsd/openbsm/test/bsm/Makefile.am#2 (text+ko) ==== @@ -1,8 +1,8 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/test/bsm/Makefile.am#1 $ +# $P4: //depot/projects/trustedbsd/openbsm/test/bsm/Makefile.am#2 $ # -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) bin_PROGRAMS = generate generate_SOURCES = generate.c ==== //depot/projects/trustedbsd/openbsm/test/bsm/Makefile.in#3 (text+ko) ==== @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $P4: //depot/projects/trustedbsd/openbsm/test/bsm/Makefile.in#2 $ +# $P4: //depot/projects/trustedbsd/openbsm/test/bsm/Makefile.in#3 $ # VPATH = @srcdir@ @@ -110,6 +110,7 @@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MIG = @MIG@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ @@ -120,7 +121,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ -SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -176,7 +176,7 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) generate_SOURCES = generate.c generate_LDADD = $(top_builddir)/libbsm/libbsm.la all: all-am @@ -192,9 +192,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/bsm/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/bsm/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign test/bsm/Makefile + $(AUTOMAKE) --gnu test/bsm/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ ==== //depot/projects/trustedbsd/openbsm/tools/Makefile.am#3 (text+ko) ==== @@ -1,8 +1,8 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/tools/Makefile.am#2 $ +# $P4: //depot/projects/trustedbsd/openbsm/tools/Makefile.am#3 $ # -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) bin_PROGRAMS = audump audump_SOURCES = audump.c ==== //depot/projects/trustedbsd/openbsm/tools/Makefile.in#6 (text+ko) ==== @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $P4: //depot/projects/trustedbsd/openbsm/tools/Makefile.in#5 $ +# $P4: //depot/projects/trustedbsd/openbsm/tools/Makefile.in#6 $ # VPATH = @srcdir@ @@ -110,6 +110,7 @@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ +MIG = @MIG@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ @@ -120,7 +121,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ -SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -176,7 +176,7 @@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) +INCLUDES = -I$(top_builddir) -I$(top_srcdir) audump_SOURCES = audump.c audump_LDADD = $(top_builddir)/libbsm/libbsm.la all: all-am @@ -192,9 +192,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign tools/Makefile + $(AUTOMAKE) --gnu tools/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ From hselasky at FreeBSD.org Tue Jul 1 16:49:50 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 16:49:53 2008 Subject: PERFORCE change 144427 for review Message-ID: <200807011649.m61GnnWM045493@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144427 Change 144427 by hselasky@hselasky_laptop001 on 2008/07/01 16:48:54 Mostly USB HUB descriptor cleanup. The substitution I made for the HUB descriptor size was incorrect. Cleanup this and some other USB descriptor related stuff. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#6 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_standard.h#4 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#3 (text+ko) ==== @@ -1830,8 +1830,8 @@ }, }; -static const struct usb2_hub_descriptor at91dci_hubd = { - .bDescLength = sizeof(struct usb2_hub_descriptor), +static const struct usb2_hub_descriptor_min at91dci_hubd = { + .bDescLength = sizeof(at91dci_hubd), .bDescriptorType = UDESC_HUB, .bNbrPorts = 1, .wHubCharacteristics[0] = ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#4 (text+ko) ==== @@ -2975,35 +2975,33 @@ static const struct ehci_config_desc ehci_confd = { .confd = { - sizeof(struct usb2_config_descriptor), - UDESC_CONFIG, - {sizeof(ehci_confd), 0}, - 1, - 1, - 0, - UC_SELF_POWERED, - 0 /* max power */ + .bLength = sizeof(struct usb2_config_descriptor), + .bDescriptorType = UDESC_CONFIG, + .wTotalLength[0] = sizeof(ehci_confd), + .bNumInterface = 1, + .bConfigurationValue = 1, + .iConfiguration = 0, + .bmAttributes = UC_SELF_POWERED, + .bMaxPower = 0 /* max power */ }, .ifcd = { - sizeof(struct usb2_interface_descriptor), - UDESC_INTERFACE, - 0, - 0, - 1, - UICLASS_HUB, - UISUBCLASS_HUB, - UIPROTO_HSHUBSTT, + .bLength = sizeof(struct usb2_interface_descriptor), + .bDescriptorType = UDESC_INTERFACE, + .bNumEndpoints = 1, + .bInterfaceClass = UICLASS_HUB, + .bInterfaceSubClass = UISUBCLASS_HUB, + .bInterfaceProtocol = UIPROTO_HSHUBSTT, 0 }, .endpd = { - sizeof(struct usb2_endpoint_descriptor), - UDESC_ENDPOINT, - UE_DIR_IN | EHCI_INTR_ENDPT, - UE_INTERRUPT, - {8, 0}, /* max packet (63 ports) */ - 255 + .bLength = sizeof(struct usb2_endpoint_descriptor), + .bDescriptorType = UDESC_ENDPOINT, + .bEndpointAddress = UE_DIR_IN | EHCI_INTR_ENDPT, + .bmAttributes = UE_INTERRUPT, + .wMaxPacketSize[0] = 8, /* max packet (63 ports) */ + .bInterval = 255, }, }; @@ -3142,7 +3140,7 @@ goto done; } std->len = sizeof(ehci_confd); - sc->sc_hub_desc.confd = ehci_confd; + std->ptr = USB_ADD_BYTES(&ehci_confd, 0); break; case UDESC_STRING: ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.h#3 (text+ko) ==== @@ -438,7 +438,6 @@ struct usb2_device_descriptor devd; struct usb2_device_qualifier odevd; struct usb2_hub_descriptor hubd; - struct ehci_config_desc confd; uint8_t temp[128]; }; ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#3 (text+ko) ==== @@ -2121,35 +2121,32 @@ struct ohci_config_desc ohci_confd = { .confd = { - sizeof(struct usb2_config_descriptor), - UDESC_CONFIG, - {sizeof(ohci_confd), 0}, - 1, - 1, - 0, - UC_SELF_POWERED, - 0 /* max power */ + .bLength = sizeof(struct usb2_config_descriptor), + .bDescriptorType = UDESC_CONFIG, + .wTotalLength[0] = sizeof(ohci_confd), + .bNumInterface = 1, + .bConfigurationValue = 1, + .iConfiguration = 0, + .bmAttributes = UC_SELF_POWERED, + .bMaxPower = 0, /* max power */ }, .ifcd = { - sizeof(struct usb2_interface_descriptor), - UDESC_INTERFACE, - 0, - 0, - 1, - UICLASS_HUB, - UISUBCLASS_HUB, - UIPROTO_FSHUB, - 0 + .bLength = sizeof(struct usb2_interface_descriptor), + .bDescriptorType = UDESC_INTERFACE, + .bNumEndpoints = 1, + .bInterfaceClass = UICLASS_HUB, + .bInterfaceSubClass = UISUBCLASS_HUB, + .bInterfaceProtocol = UIPROTO_FSHUB, }, .endpd = { - sizeof(struct usb2_endpoint_descriptor), - UDESC_ENDPOINT, - UE_DIR_IN | OHCI_INTR_ENDPT, - UE_INTERRUPT, - {32, 0}, /* max packet (255 ports) */ - 255 + .bLength = sizeof(struct usb2_endpoint_descriptor), + .bDescriptorType = UDESC_ENDPOINT, + .bEndpointAddress = UE_DIR_IN | OHCI_INTR_ENDPT, + .bmAttributes = UE_INTERRUPT, + .wMaxPacketSize[0] = 32,/* max packet (255 ports) */ + .bInterval = 255, }, }; @@ -2259,7 +2256,7 @@ goto done; } std->len = sizeof(ohci_confd); - sc->sc_hub_desc.confd = ohci_confd; + std->ptr = USB_ADD_BYTES(&ohci_confd, 0); break; case UDESC_STRING: ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.h#3 (text+ko) ==== @@ -311,7 +311,6 @@ struct usb2_port_status ps; struct usb2_device_descriptor devd; struct usb2_hub_descriptor hubd; - struct ohci_config_desc confd; uint8_t temp[128]; }; ==== //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#4 (text+ko) ==== @@ -2363,42 +2363,39 @@ static const struct uhci_config_desc uhci_confd = { .confd = { - sizeof(struct usb2_config_descriptor), - UDESC_CONFIG, - {sizeof(uhci_confd), 0}, - 1, - 1, - 0, - UC_SELF_POWERED, - 0 /* max power */ + .bLength = sizeof(struct usb2_config_descriptor), + .bDescriptorType = UDESC_CONFIG, + .wTotalLength[0] = sizeof(uhci_confd), + .bNumInterface = 1, + .bConfigurationValue = 1, + .iConfiguration = 0, + .bmAttributes = UC_SELF_POWERED, + .bMaxPower = 0 /* max power */ }, .ifcd = { - sizeof(struct usb2_interface_descriptor), - UDESC_INTERFACE, - 0, - 0, - 1, - UICLASS_HUB, - UISUBCLASS_HUB, - UIPROTO_FSHUB, - 0 + .bLength = sizeof(struct usb2_interface_descriptor), + .bDescriptorType = UDESC_INTERFACE, + .bNumEndpoints = 1, + .bInterfaceClass = UICLASS_HUB, + .bInterfaceSubClass = UISUBCLASS_HUB, + .bInterfaceProtocol = UIPROTO_FSHUB, }, .endpd = { - sizeof(struct usb2_endpoint_descriptor), - UDESC_ENDPOINT, - UE_DIR_IN | UHCI_INTR_ENDPT, - UE_INTERRUPT, - {8, 0}, /* max packet (63 ports) */ - 255 + .bLength = sizeof(struct usb2_endpoint_descriptor), + .bDescriptorType = UDESC_ENDPOINT, + .bEndpointAddress = UE_DIR_IN | UHCI_INTR_ENDPT, + .bmAttributes = UE_INTERRUPT, + .wMaxPacketSize[0] = 8, /* max packet (63 ports) */ + .bInterval = 255, }, }; static const -struct usb2_hub_descriptor uhci_hubd_piix = +struct usb2_hub_descriptor_min uhci_hubd_piix = { - sizeof(struct usb2_hub_descriptor), + sizeof(uhci_hubd_piix), UDESC_HUB, 2, {UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL, 0}, @@ -2618,7 +2615,7 @@ goto done; } std->len = sizeof(uhci_confd); - sc->sc_hub_desc.confd = uhci_confd; + std->ptr = USB_ADD_BYTES(&uhci_confd, 0); break; case UDESC_STRING: @@ -2763,7 +2760,7 @@ goto done; } std->len = sizeof(uhci_hubd_piix); - sc->sc_hub_desc.hubd = uhci_hubd_piix; + std->ptr = USB_ADD_BYTES(&uhci_hubd_piix, 0); break; case C(UR_GET_STATUS, UT_READ_CLASS_DEVICE): std->len = 16; ==== //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.h#3 (text+ko) ==== @@ -241,8 +241,6 @@ struct usb2_status stat; struct usb2_port_status ps; struct usb2_device_descriptor devd; - struct usb2_hub_descriptor hubd; - struct uhci_config_desc confd; uint8_t temp[128]; }; ==== //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci.c#3 (text+ko) ==== @@ -1861,8 +1861,8 @@ }, }; -static const struct usb2_hub_descriptor uss820dci_hubd = { - .bDescLength = sizeof(struct usb2_hub_descriptor), +static const struct usb2_hub_descriptor_min uss820dci_hubd = { + .bDescLength = sizeof(uss820dci_hubd), .bDescriptorType = UDESC_HUB, .bNbrPorts = 1, .wHubCharacteristics[0] = ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#6 (text+ko) ==== @@ -596,7 +596,6 @@ struct usb2_device *udev = uaa->device; struct usb2_device *parent_hub = udev->parent_hub; struct usb2_hub *hub; - struct usb2_device_request req; struct usb2_hub_descriptor hubdesc; uint16_t pwrdly; uint8_t x; @@ -632,29 +631,22 @@ } if (!udev->flags.self_powered && parent_hub && (!parent_hub->flags.self_powered)) { - DPRINTF(-1, "bus powered hub connected to " - "bus powered hub. HUB ignored!\n"); + DPRINTF(-1, "bus powered HUB connected to " + "bus powered HUB. HUB ignored!\n"); goto error; } - /* get hub descriptor */ + /* get HUB descriptor */ - DPRINTF(1, "getting hub descriptor\n"); + DPRINTF(1, "getting HUB descriptor\n"); - req.bmRequestType = UT_READ_CLASS_DEVICE; - req.bRequest = UR_GET_DESCRIPTOR; - USETW2(req.wValue, UDESC_HUB, 0); - USETW(req.wIndex, 0); - USETW(req.wLength, 9); /* assuming that there is one port */ - - err = usb2_do_request(udev, &Giant, &req, &hubdesc); + /* assuming that there is one port */ + err = usb2_req_get_hub_descriptor(udev, &Giant, &hubdesc, 1); nports = hubdesc.bNbrPorts; if (!err && (nports >= 8)) { - uint16_t len = 8 + ((nports + 7) / 8); - - USETW(req.wLength, len); - err = usb2_do_request(udev, &Giant, &req, &hubdesc); + /* get complete HUB descriptor */ + err = usb2_req_get_hub_descriptor(udev, &Giant, &hubdesc, nports); } if (err) { DPRINTF(-1, "getting hub descriptor failed," ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#4 (text+ko) ==== @@ -892,7 +892,7 @@ req.bRequest = UR_GET_STATUS; USETW(req.wValue, 0); USETW(req.wIndex, 0); - USETW(req.wLength, sizeof(usb2_error_t)); + USETW(req.wLength, sizeof(*st)); return (usb2_do_request(udev, mtx, &req, st)); } @@ -905,15 +905,16 @@ *------------------------------------------------------------------------*/ usb2_error_t usb2_req_get_hub_descriptor(struct usb2_device *udev, struct mtx *mtx, - struct usb2_hub_descriptor *hd) + struct usb2_hub_descriptor *hd, uint8_t nports) { struct usb2_device_request req; + uint16_t len = (nports + 7 + (8 * 8)) / 8; req.bmRequestType = UT_READ_CLASS_DEVICE; req.bRequest = UR_GET_DESCRIPTOR; - USETW(req.wValue, 0); + USETW2(req.wValue, UDESC_HUB, 0); USETW(req.wIndex, 0); - USETW(req.wLength, sizeof(*hd)); + USETW(req.wLength, len); return (usb2_do_request(udev, mtx, &req, hd)); } ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.h#3 (text+ko) ==== @@ -36,7 +36,7 @@ usb2_error_t usb2_req_get_desc(struct usb2_device *udev, struct mtx *mtx, void *desc, uint16_t min_len, uint16_t max_len, uint16_t id, uint8_t type, uint8_t index, uint8_t retries); usb2_error_t usb2_req_get_device_desc(struct usb2_device *udev, struct mtx *mtx, struct usb2_device_descriptor *d); usb2_error_t usb2_req_get_device_status(struct usb2_device *udev, struct mtx *mtx, struct usb2_status *st); -usb2_error_t usb2_req_get_hub_descriptor(struct usb2_device *udev, struct mtx *mtx, struct usb2_hub_descriptor *hd); +usb2_error_t usb2_req_get_hub_descriptor(struct usb2_device *udev, struct mtx *mtx, struct usb2_hub_descriptor *hd, uint8_t nports); usb2_error_t usb2_req_get_hub_status(struct usb2_device *udev, struct mtx *mtx, struct usb2_hub_status *st); usb2_error_t usb2_req_get_port_status(struct usb2_device *udev, struct mtx *mtx, struct usb2_port_status *ps, uint8_t port); usb2_error_t usb2_req_get_report(struct usb2_device *udev, struct mtx *mtx, void *data, uint16_t len, uint8_t iface_index, uint8_t type, uint8_t id); ==== //depot/projects/usb/src/sys/dev/usb2/include/usb2_standard.h#4 (text+ko) ==== @@ -412,6 +412,18 @@ /* deprecated */ uByte PortPowerCtrlMask[1]; } __packed; +/* minimum HUB descriptor (8-ports maximum) */ +struct usb2_hub_descriptor_min { + uByte bDescLength; + uByte bDescriptorType; + uByte bNbrPorts; + uWord wHubCharacteristics; + uByte bPwrOn2PwrGood; + uByte bHubContrCurrent; + uByte DeviceRemovable[1]; + uByte PortPowerCtrlMask[1]; +} __packed; + struct usb2_device_qualifier { uByte bLength; uByte bDescriptorType; From hselasky at FreeBSD.org Tue Jul 1 16:51:52 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 16:51:55 2008 Subject: PERFORCE change 144428 for review Message-ID: <200807011651.m61GppqV045688@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144428 Change 144428 by hselasky@hselasky_laptop001 on 2008/07/01 16:51:13 Fix stopping of USB transfers. Some state stuff was a little bit broken. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#7 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#4 (text+ko) ==== @@ -511,6 +511,7 @@ if (!sx_xlocked(udev->default_sx + 1)) { /* the caller is not properly locked */ + DPRINTF(-1, "not locked\n"); return (USB_ERR_NOT_LOCKED); } /* detach all interface drivers */ @@ -529,7 +530,6 @@ return (err); } /* get the full config descriptor */ - err = usb2_req_get_config_desc_full(udev, &Giant, &cdp, M_USB, index); if (err) { @@ -553,36 +553,42 @@ /* Must ask device. */ if (udev->flags.uq_power_claim) { /* - * Hub claims to be self powered, but isn't. + * HUB claims to be self powered, but isn't. * It seems that the power status can be - * determined by the hub characteristics. + * determined by the HUB characteristics. */ err = usb2_req_get_hub_descriptor - (udev, &Giant, &hd); + (udev, &Giant, &hd, 1); + if (err) { + DPRINTF(-1, "could not read " + "HUB descriptor: %s\n", + usb2_errstr(err)); - if (!err && - (UGETW(hd.wHubCharacteristics) & - UHD_PWR_INDIVIDUAL)) { + } else if (UGETW(hd.wHubCharacteristics) & + UHD_PWR_INDIVIDUAL) { selfpowered = 1; } - DPRINTF(0, "characteristics=0x%04x, error=%s\n", - UGETW(hd.wHubCharacteristics), - usb2_errstr(err)); + DPRINTF(0, "characteristics=0x%04x\n", + UGETW(hd.wHubCharacteristics)); } else { + + usb2_pause_mtx(&Giant, 100); + err = usb2_req_get_device_status (udev, &Giant, &ds); - - if (!err && - (UGETW(ds.wStatus) & UDS_SELF_POWERED)) { + if (err) { + DPRINTF(-1, "could not read " + "device status: %s\n", + usb2_errstr(err)); + } else if (UGETW(ds.wStatus) & UDS_SELF_POWERED) { selfpowered = 1; } - DPRINTF(0, "status=0x%04x, error=%s\n", - UGETW(ds.wStatus), usb2_errstr(err)); + DPRINTF(0, "status=0x%04x \n", + UGETW(ds.wStatus)); } } else selfpowered = 1; } - DPRINTF(0, "udev=%p cdesc=%p (addr %d) cno=%d attr=0x%02x, " "selfpowered=%d, power=%d\n", udev, cdp, @@ -612,8 +618,7 @@ udev->curr_config_index = index; /* Set the actual configuration value. */ - err = usb2_req_set_config(udev, &Giant, -cdp->bConfigurationValue); + err = usb2_req_set_config(udev, &Giant, cdp->bConfigurationValue); if (err) { goto error; } @@ -654,6 +659,7 @@ if (!sx_xlocked(udev->default_sx + 1)) { /* the caller is not properly locked */ + DPRINTF(-1, "not locked\n"); err = USB_ERR_NOT_LOCKED; goto done; } @@ -1091,7 +1097,6 @@ if (usb2_probe_and_attach_sub(udev, &uaa)) { /* ignore */ } - /* try generic interface drivers last */ uaa.use_generic = 1; @@ -1452,7 +1457,7 @@ udev->ddesc.iSerialNumber) { /* read out the language ID string */ err = usb2_req_get_string_desc(udev, &Giant, - scratch_ptr, 4, sizeof(udev->bus->scratch), + scratch_ptr, 4, scratch_size, USB_LANGUAGE_TABLE); } else { err = USB_ERR_INVAL; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#7 (text+ko) ==== @@ -1514,14 +1514,12 @@ * Check if we can cancel the USB transfer immediately. */ if (xfer->flags_int.transferring) { - if (xfer->flags_int.can_cancel_immed) { - /* - * The close method will be called by the - * "usb2_callback_wrapper()" when it detects - * that we are closed. This way we resolve - * some races. - */ - usb2_transfer_done(xfer, USB_ERR_CANCELLED); + if (xfer->flags_int.can_cancel_immed && + (!xfer->flags_int.did_close)) { + DPRINTF(0, "close\n"); + (xfer->pipe->methods->close) (xfer); + /* only close once */ + xfer->flags_int.did_close = 1; } else { /* need to wait for the next done callback */ } @@ -1530,6 +1528,11 @@ /* close here and now */ (xfer->pipe->methods->close) (xfer); + + /* + * Any additional DMA delay is done by + * "usb2_transfer_unsetup()". + */ } mtx_unlock(xfer->usb2_mtx); @@ -1734,7 +1737,7 @@ if ((!xfer->flags_int.open) && (xfer->flags_int.started) && (xfer->usb2_state == USB_ST_ERROR)) { - /* do nothing - just loop */ + /* try to loop, but not recursivly */ usb2_command_wrapper(&(info->done_q), xfer); return; } else if (xfer->flags_int.draining && @@ -2125,14 +2128,15 @@ struct usb2_pipe *pipe; uint32_t x; - if (!xfer->flags_int.open && - !xfer->flags_int.did_close) { + if ((!xfer->flags_int.open) && + (!xfer->flags_int.did_close)) { DPRINTF(0, "close\n"); mtx_lock(xfer->usb2_mtx); (xfer->pipe->methods->close) (xfer); mtx_unlock(xfer->usb2_mtx); /* only close once */ xfer->flags_int.did_close = 1; + return (1); /* wait for new callback */ } /* * If we have a non-hardware induced error we @@ -2140,7 +2144,7 @@ */ if (((xfer->error == USB_ERR_CANCELLED) || (xfer->error == USB_ERR_TIMEOUT)) && - !xfer->flags_int.did_dma_delay) { + (!xfer->flags_int.did_dma_delay)) { uint32_t temp; From hselasky at FreeBSD.org Tue Jul 1 16:51:53 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 16:51:55 2008 Subject: PERFORCE change 144429 for review Message-ID: <200807011651.m61GppKG045693@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144429 Change 144429 by hselasky@hselasky_laptop001 on 2008/07/01 16:51:43 Result from running "usb_style.sh" ... Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#7 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#7 (text+ko) ==== @@ -349,7 +349,7 @@ struct usb2_interface *iface; /* current interface */ uint8_t usb2_mode; /* see USB_MODE_XXX */ uint8_t port; - uint8_t use_generic; /* hint for generic drivers */ + uint8_t use_generic; /* hint for generic drivers */ }; /* Structure used when referring an USB device */ From hselasky at FreeBSD.org Tue Jul 1 17:02:02 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 17:02:05 2008 Subject: PERFORCE change 144430 for review Message-ID: <200807011702.m61H22mb046535@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144430 Change 144430 by hselasky@hselasky_laptop001 on 2008/07/01 17:01:14 Finished new USB quirk module. USB quirks are now in a separate module and are loaded when needed. The quirks can also be updated without having to restart the whole USB stack. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.h#2 edit .. //depot/projects/usb/src/sys/modules/usb2/quirk/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.c#2 (text+ko) ==== @@ -1,13 +1,8 @@ -/* $NetBSD: usb_quirks.c,v 1.50 2004/06/23 02:30:52 mycroft Exp $ */ - /*- - * Copyright (c) 1998 The NetBSD Foundation, Inc. - * All rights reserved. + * Copyright (c) 1998 The NetBSD Foundation, Inc. All rights reserved. + * Copyright (c) 1998 Lennart Augustsson. All rights reserved. + * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * - * This code is derived from software contributed to The NetBSD Foundation - * by Lennart Augustsson (lennart@augustsson.net) at - * Carlstedt Research & Technology. - * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -16,133 +11,151 @@ * 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 the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT 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. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * 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. */ -#include -__FBSDID("$FreeBSD: src/sys/dev/usb/usb_quirks.c,v 1.65 2008/03/14 15:59:30 jkim Exp $"); +#include +#include + +#define USB_DEBUG_VAR usb2_debug + +#include +#include +#include +#include -#include -#include +#include -#include -#include -#include +MODULE_DEPEND(usb2_quirk, usb2_core, 1, 1, 1); +MODULE_VERSION(usb2_quirk, 1); -#include "usbdevs.h" +/* + * The following macro adds a quirk for any revision of a device: + */ +#define USB_VPA(v,p,r,...) \ + USB_VPI(v,p,((const uint16_t []){__VA_ARGS__})) -#define ANY 0xffff +/* + * The following macro adds a quirk for a specific revision of a + * device: + */ +#define USB_VPR(v,p,r,...) \ + USB_VPI(v,p, ((const uint16_t []){__VA_ARGS__})), \ + USB_DEV_BCD_LTEQ(r), \ + USB_DEV_BCD_GTEQ(r) -struct usbd_quirk_entry { - uint16_t idVendor; - uint16_t idProduct; - uint16_t bcdDevice; - struct usbd_quirks quirks; -}; +/* try to keep the quirks on one line, hence grepping becomes easier */ -static const struct usbd_quirk_entry usb_quirks[] = { - {USB_VENDOR_ASUS, USB_PRODUCT_ASUS_LCM, ANY, {UQ_HID_IGNORE}}, - {USB_VENDOR_INSIDEOUT, USB_PRODUCT_INSIDEOUT_EDGEPORT4, - 0x094, {UQ_SWAP_UNICODE}}, - {USB_VENDOR_DALLAS, USB_PRODUCT_DALLAS_J6502, 0x0a2, {UQ_BAD_ADC}}, - {USB_VENDOR_DALLAS, USB_PRODUCT_DALLAS_J6502, 0x0a2, {UQ_AU_NO_XU}}, - {USB_VENDOR_ALTEC, USB_PRODUCT_ALTEC_ADA70, 0x103, {UQ_BAD_ADC}}, - {USB_VENDOR_ALTEC, USB_PRODUCT_ALTEC_ASC495, 0x000, {UQ_BAD_AUDIO}}, - {USB_VENDOR_QTRONIX, USB_PRODUCT_QTRONIX_980N, 0x110, {UQ_SPUR_BUT_UP}}, - {USB_VENDOR_ALCOR2, USB_PRODUCT_ALCOR2_KBD_HUB, 0x001, {UQ_SPUR_BUT_UP}}, - {USB_VENDOR_MCT, USB_PRODUCT_MCT_HUB0100, 0x102, {UQ_BUS_POWERED}}, - {USB_VENDOR_MCT, USB_PRODUCT_MCT_USB232, 0x102, {UQ_BUS_POWERED}}, - {USB_VENDOR_TI, USB_PRODUCT_TI_UTUSB41, 0x110, {UQ_POWER_CLAIM}}, - {USB_VENDOR_TELEX, USB_PRODUCT_TELEX_MIC1, 0x009, {UQ_AU_NO_FRAC}}, - {USB_VENDOR_SILICONPORTALS, USB_PRODUCT_SILICONPORTALS_YAPPHONE, - 0x100, {UQ_AU_INP_ASYNC}}, - {USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_UN53B, ANY, {UQ_NO_STRINGS}}, +static const struct usb2_device_id usb2_quirks[] = { + {USB_VPA(USB_VENDOR_ASUS, USB_PRODUCT_ASUS_LCM, 0x000, UQ_HID_IGNORE, UQ_NONE)}, + {USB_VPR(USB_VENDOR_INSIDEOUT, USB_PRODUCT_INSIDEOUT_EDGEPORT4, 0x094, UQ_SWAP_UNICODE, UQ_NONE)}, + {USB_VPR(USB_VENDOR_DALLAS, USB_PRODUCT_DALLAS_J6502, 0x0a2, UQ_BAD_ADC, UQ_NONE)}, + {USB_VPR(USB_VENDOR_DALLAS, USB_PRODUCT_DALLAS_J6502, 0x0a2, UQ_AU_NO_XU, UQ_NONE)}, + {USB_VPR(USB_VENDOR_ALTEC, USB_PRODUCT_ALTEC_ADA70, 0x103, UQ_BAD_ADC, UQ_NONE)}, + {USB_VPR(USB_VENDOR_ALTEC, USB_PRODUCT_ALTEC_ASC495, 0x000, UQ_BAD_AUDIO, UQ_NONE)}, + {USB_VPR(USB_VENDOR_QTRONIX, USB_PRODUCT_QTRONIX_980N, 0x110, UQ_SPUR_BUT_UP, UQ_NONE)}, + {USB_VPR(USB_VENDOR_ALCOR2, USB_PRODUCT_ALCOR2_KBD_HUB, 0x001, UQ_SPUR_BUT_UP, UQ_NONE)}, + {USB_VPR(USB_VENDOR_MCT, USB_PRODUCT_MCT_HUB0100, 0x102, UQ_BUS_POWERED, UQ_NONE)}, + {USB_VPR(USB_VENDOR_MCT, USB_PRODUCT_MCT_USB232, 0x102, UQ_BUS_POWERED, UQ_NONE)}, + {USB_VPR(USB_VENDOR_TI, USB_PRODUCT_TI_UTUSB41, 0x110, UQ_POWER_CLAIM, UQ_NONE)}, + {USB_VPR(USB_VENDOR_TELEX, USB_PRODUCT_TELEX_MIC1, 0x009, UQ_AU_NO_FRAC, UQ_NONE)}, + {USB_VPR(USB_VENDOR_SILICONPORTALS, USB_PRODUCT_SILICONPORTALS_YAPPHONE, 0x100, UQ_AU_INP_ASYNC, UQ_NONE)}, + {USB_VPA(USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_UN53B, 0x000, UQ_NO_STRINGS, UQ_NONE)}, /* * XXX These should have a revision number, but I don't know what * they are. */ - {USB_VENDOR_HP, USB_PRODUCT_HP_895C, ANY, {UQ_BROKEN_BIDIR}}, - {USB_VENDOR_HP, USB_PRODUCT_HP_880C, ANY, {UQ_BROKEN_BIDIR}}, - {USB_VENDOR_HP, USB_PRODUCT_HP_815C, ANY, {UQ_BROKEN_BIDIR}}, - {USB_VENDOR_HP, USB_PRODUCT_HP_810C, ANY, {UQ_BROKEN_BIDIR}}, - {USB_VENDOR_HP, USB_PRODUCT_HP_830C, ANY, {UQ_BROKEN_BIDIR}}, - {USB_VENDOR_HP, USB_PRODUCT_HP_1220C, ANY, {UQ_BROKEN_BIDIR}}, - {USB_VENDOR_XEROX, USB_PRODUCT_XEROX_WCM15, ANY, {UQ_BROKEN_BIDIR}}, + {USB_VPA(USB_VENDOR_HP, USB_PRODUCT_HP_895C, 0x000, UQ_BROKEN_BIDIR, UQ_NONE)}, + {USB_VPA(USB_VENDOR_HP, USB_PRODUCT_HP_880C, 0x000, UQ_BROKEN_BIDIR, UQ_NONE)}, + {USB_VPA(USB_VENDOR_HP, USB_PRODUCT_HP_815C, 0x000, UQ_BROKEN_BIDIR, UQ_NONE)}, + {USB_VPA(USB_VENDOR_HP, USB_PRODUCT_HP_810C, 0x000, UQ_BROKEN_BIDIR, UQ_NONE)}, + {USB_VPA(USB_VENDOR_HP, USB_PRODUCT_HP_830C, 0x000, UQ_BROKEN_BIDIR, UQ_NONE)}, + {USB_VPA(USB_VENDOR_HP, USB_PRODUCT_HP_1220C, 0x000, UQ_BROKEN_BIDIR, UQ_NONE)}, + {USB_VPA(USB_VENDOR_XEROX, USB_PRODUCT_XEROX_WCM15, 0x000, UQ_BROKEN_BIDIR, UQ_NONE)}, /* Devices which should be ignored by uhid */ - {USB_VENDOR_APC, USB_PRODUCT_APC_UPS, - ANY, {UQ_HID_IGNORE}}, - {USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F6C550AVR, - ANY, {UQ_HID_IGNORE}}, - {USB_VENDOR_DELORME, USB_PRODUCT_DELORME_EARTHMATE, - ANY, {UQ_HID_IGNORE}}, - {USB_VENDOR_ITUNERNET, USB_PRODUCT_ITUNERNET_USBLCD2X20, - ANY, {UQ_HID_IGNORE}}, - {USB_VENDOR_MGE, USB_PRODUCT_MGE_UPS1, - ANY, {UQ_HID_IGNORE}}, - {USB_VENDOR_MGE, USB_PRODUCT_MGE_UPS2, - ANY, {UQ_HID_IGNORE}}, + {USB_VPA(USB_VENDOR_APC, USB_PRODUCT_APC_UPS, 0x000, UQ_HID_IGNORE, UQ_NONE)}, + {USB_VPA(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F6C550AVR, 0x000, UQ_HID_IGNORE, UQ_NONE)}, + {USB_VPA(USB_VENDOR_DELORME, USB_PRODUCT_DELORME_EARTHMATE, 0x000, UQ_HID_IGNORE, UQ_NONE)}, + {USB_VPA(USB_VENDOR_ITUNERNET, USB_PRODUCT_ITUNERNET_USBLCD2X20, 0x000, UQ_HID_IGNORE, UQ_NONE)}, + {USB_VPA(USB_VENDOR_MGE, USB_PRODUCT_MGE_UPS1, 0x000, UQ_HID_IGNORE, UQ_NONE)}, + {USB_VPA(USB_VENDOR_MGE, USB_PRODUCT_MGE_UPS2, 0x000, UQ_HID_IGNORE, UQ_NONE)}, /* Devices which should be ignored by both ukbd and uhid */ - {USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_WISPY1A, - ANY, {UQ_KBD_IGNORE}}, - {USB_VENDOR_METAGEEK, USB_PRODUCT_METAGEEK_WISPY1B, - ANY, {UQ_KBD_IGNORE}}, - {USB_VENDOR_TENX, USB_PRODUCT_TENX_UAUDIO0, - 0x0101, {UQ_AUDIO_SWAP_LR}}, + {USB_VPA(USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_WISPY1A, 0x000, UQ_KBD_IGNORE, UQ_HID_IGNORE, UQ_NONE)}, + {USB_VPA(USB_VENDOR_METAGEEK, USB_PRODUCT_METAGEEK_WISPY1B, 0x000, UQ_KBD_IGNORE, UQ_HID_IGNORE, UQ_NONE)}, + {USB_VPR(USB_VENDOR_TENX, USB_PRODUCT_TENX_UAUDIO0, 0x0101, UQ_AUDIO_SWAP_LR, UQ_NONE)}, /* MS keyboards do weird things */ - {USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_WLNOTEBOOK, - ANY, {UQ_MS_BAD_CLASS | UQ_MS_LEADING_BYTE}}, - {USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_WLNOTEBOOK2, - ANY, {UQ_MS_BAD_CLASS | UQ_MS_LEADING_BYTE}}, - {USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_WLINTELLIMOUSE, - ANY, {UQ_MS_LEADING_BYTE}}, + {USB_VPA(USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_WLNOTEBOOK, 0x000, UQ_MS_BAD_CLASS, UQ_MS_LEADING_BYTE, UQ_NONE)}, + {USB_VPA(USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_WLNOTEBOOK2, 0x000, UQ_MS_BAD_CLASS, UQ_MS_LEADING_BYTE, UQ_NONE)}, + {USB_VPA(USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_WLINTELLIMOUSE, 0x000, UQ_MS_LEADING_BYTE, UQ_NONE)}, + {USB_VPA(USB_VENDOR_METAGEEK, USB_PRODUCT_METAGEEK_WISPY24X, 0x000, UQ_KBD_IGNORE, UQ_HID_IGNORE, UQ_NONE)}, +}; - {USB_VENDOR_METAGEEK, USB_PRODUCT_METAGEEK_WISPY24X, - ANY, {UQ_KBD_IGNORE}}, +USB_MAKE_DEBUG_TABLE(USB_QUIRK); - {0, 0, 0, {0}} -}; +/*------------------------------------------------------------------------* + * usb2_quirkstr + * + * This function converts an USB quirk code into a string. + *------------------------------------------------------------------------*/ +static const char * +usb2_quirkstr(uint16_t quirk) +{ + return ((quirk < USB_QUIRK_MAX) ? + USB_QUIRK[quirk] : "USB_QUIRK_UNKNOWN"); +} -const struct usbd_quirks usbd_no_quirk = {0}; - -const struct usbd_quirks * -usbd_find_quirk(usb_device_descriptor_t *d) +/*------------------------------------------------------------------------* + * usb2_test_quirk_by_info + * + * Returns: + * 0: Quirk not found + * Else: Quirk found + *------------------------------------------------------------------------*/ +static uint8_t +usb2_test_quirk_by_info(const struct usb2_lookup_info *info, uint16_t quirk) { - const struct usbd_quirk_entry *t; - uint16_t vendor = UGETW(d->idVendor); - uint16_t product = UGETW(d->idProduct); - uint16_t revision = UGETW(d->bcdDevice); + const struct usb2_device_id *pe; + const uint16_t *px; - for (t = usb_quirks; t->idVendor != 0; t++) { - if (t->idVendor == vendor && - t->idProduct == product && - (t->bcdDevice == ANY || t->bcdDevice == revision)) - break; + if (quirk == UQ_NONE) { + return (0); } -#ifdef USB_DEBUG - if (usbdebug && t->quirks.uq_flags) { - printf("usbd_find_quirk 0x%04x/0x%04x/%x: %d\n", - UGETW(d->idVendor), UGETW(d->idProduct), - UGETW(d->bcdDevice), t->quirks.uq_flags); + pe = usb2_lookup_id_by_info(usb2_quirks, sizeof(usb2_quirks), info); + if (pe && pe->driver_info) { + px = pe->driver_info; + while (1) { + if (*px == quirk) { + DPRINTF(0, "Found quirk '%s'.\n", usb2_quirkstr(quirk)); + return (1); + } + if (*px == UQ_NONE) { + return (0); + } + px++; + } } -#endif - return (&t->quirks); + return (0); +} + +static void +usb2_quirk_init(void *arg) +{ + /* register our function */ + usb2_test_quirk_p = &usb2_test_quirk_by_info; + return; } + +SYSINIT(usb2_quirk_init, SI_SUB_LOCK, SI_ORDER_FIRST, usb2_quirk_init, NULL); +SYSUNINIT(usb2_quirk_unload, SI_SUB_LOCK, SI_ORDER_ANY, usb2_quirk_unload, NULL); ==== //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.h#2 (text+ko) ==== @@ -1,13 +1,5 @@ -/* $NetBSD: usb_quirks.h,v 1.20 2001/04/15 09:38:01 augustss Exp $ */ -/* $FreeBSD: src/sys/dev/usb/usb_quirks.h,v 1.25 2007/06/29 21:07:41 imp Exp $ */ - /*- - * Copyright (c) 1998 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Lennart Augustsson (lennart@augustsson.net) at - * Carlstedt Research & Technology. + * Copyright (c) 2008 Hans Petter Selasky. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -17,57 +9,72 @@ * 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 the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT 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. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * 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. */ -struct usbd_quirks { - uint32_t uq_flags; /* Device problems: */ -#define UQ_AUDIO_SWAP_LR (1 << 0) /* left and right sound channels are - * swapped */ -#define UQ_AU_INP_ASYNC (1 << 1) /* input is async despite claim of - * adaptive */ -#define UQ_AU_NO_FRAC (1 << 2) /* don't adjust for fractional samples */ -#define UQ_AU_NO_XU (1 << 3) /* audio device has broken extension - * unit */ -#define UQ_BAD_ADC (1 << 4) /* bad audio spec version number */ -#define UQ_BAD_AUDIO (1 << 5) /* device claims audio class, but - * isn't */ -#define UQ_BROKEN_BIDIR (1 << 6) /* printer has broken bidir mode */ -#define UQ_BUS_POWERED (1 << 7) /* device is bus powered, despite - * claim */ -#define UQ_HID_IGNORE (1 << 8) /* device should be ignored by hid - * class */ -#define UQ_KBD_IGNORE ((1 << 9)|UQ_HID_IGNORE) /* device should be - * ignored by both kbd - * and hid class */ -#define UQ_MS_BAD_CLASS (1 << 10) /* doesn't identify properly */ -#define UQ_MS_LEADING_BYTE (1 << 11) /* mouse sends an unknown leading byte */ -#define UQ_MS_REVZ (1 << 12) /* mouse has Z-axis reversed */ -#define UQ_NO_STRINGS (1 << 13) /* string descriptors are broken */ -#define UQ_OPEN_CLEARSTALL (1 << 14) /* device needs clear endpoint stall */ -#define UQ_POWER_CLAIM (1 << 15) /* hub lies about power status */ -#define UQ_SPUR_BUT_UP (1 << 16) /* spurious mouse button up events */ -#define UQ_SWAP_UNICODE (1 << 17) /* has some Unicode strings swapped */ -}; +#ifndef _USB2_QUIRK_H_ +#define _USB2_QUIRK_H_ + +/* NOTE: UQ_NONE is not a valid quirk */ + +#define USB_QUIRK(m,n) \ + m(n, UQ_NONE) \ + /* left and right sound channels are swapped */ \ + m(n, UQ_AUDIO_SWAP_LR) \ + /* input is async despite claim of adaptive */ \ + m(n, UQ_AU_INP_ASYNC) \ + /* don't adjust for fractional samples */ \ + m(n, UQ_AU_NO_FRAC) \ + /* audio device has broken extension unit */ \ + m(n, UQ_AU_NO_XU) \ + /* bad audio spec version number */ \ + m(n, UQ_BAD_ADC) \ + /* device claims audio class, but isn't */ \ + m(n, UQ_BAD_AUDIO) \ + /* printer has broken bidir mode */ \ + m(n, UQ_BROKEN_BIDIR) \ + /* device is bus powered, despite claim */ \ + m(n, UQ_BUS_POWERED) \ + /* device should be ignored by hid class */ \ + m(n, UQ_HID_IGNORE) \ + /* device should be ignored by kbd class */ \ + m(n, UQ_KBD_IGNORE) \ + /* doesn't identify properly */ \ + m(n, UQ_MS_BAD_CLASS) \ + /* mouse sends an unknown leading byte */ \ + m(n, UQ_MS_LEADING_BYTE) \ + /* mouse has Z-axis reversed */ \ + m(n, UQ_MS_REVZ) \ + /* string descriptors are broken */ \ + m(n, UQ_NO_STRINGS) \ + /* device needs clear endpoint stall */ \ + m(n, UQ_OPEN_CLEARSTALL) \ + /* hub lies about power status */ \ + m(n, UQ_POWER_CLAIM) \ + /* spurious mouse button up events */ \ + m(n, UQ_SPUR_BUT_UP) \ + /* has some Unicode strings swapped */ \ + m(n, UQ_SWAP_UNICODE) \ + /* select configuration index 1 by default */ \ + m(n, UQ_CFG_INDEX_1) \ + /* select configuration index 2 by default */ \ + m(n, UQ_CFG_INDEX_2) \ + /* select configuration index 3 by default */ \ + m(n, UQ_CFG_INDEX_3) \ + /* select configuration index 4 by default */ \ + m(n, UQ_CFG_INDEX_4) -extern const struct usbd_quirks usbd_no_quirk; +USB_MAKE_ENUM(USB_QUIRK); -const struct usbd_quirks *usbd_find_quirk(usb_device_descriptor_t *); +#endif /* _USB2_QUIRK_H_ */ ==== //depot/projects/usb/src/sys/modules/usb2/quirk/Makefile#2 (text+ko) ==== @@ -1,0 +1,10 @@ +S= ${.CURDIR}/../../.. + +.PATH: $S/dev/usb2/quirk + +KMOD= usb2_quirk +SRCS= +SRCS+= bus_if.h usb2_if.h device_if.h vnode_if.h opt_usb.h opt_bus.h +SRCS+= usb2_quirk.c + +.include From rwatson at FreeBSD.org Tue Jul 1 17:31:39 2008 From: rwatson at FreeBSD.org (Robert Watson) Date: Tue Jul 1 17:31:41 2008 Subject: PERFORCE change 144434 for review Message-ID: <200807011731.m61HVciq050276@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144434 Change 144434 by rwatson@rwatson_fledge on 2008/07/01 17:30:44 Update Apple copyrights for recent Mac OS X changes. Affected files ... .. //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#10 edit .. //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#31 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#10 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005 Apple Computer, Inc. + * Copyright (c) 2005-2008 Apple Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -11,7 +11,7 @@ * 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. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * 3. Neither the name of Apple Inc. ("Apple") nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * @@ -26,7 +26,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#9 $ + * $P4: //depot/projects/trustedbsd/openbsm/bin/audit/audit.c#10 $ */ /* * Program to trigger the audit daemon with a message that is either: ==== //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#31 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. + * Copyright (c) 2004-2008 Apple Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -11,7 +11,7 @@ * 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. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * 3. Neither the name of Apple Inc. ("Apple") nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * @@ -26,7 +26,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#30 $ + * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#31 $ */ #include From hselasky at FreeBSD.org Tue Jul 1 17:38:47 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 17:38:53 2008 Subject: PERFORCE change 144435 for review Message-ID: <200807011738.m61HckWA051141@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144435 Change 144435 by hselasky@hselasky_laptop001 on 2008/07/01 17:38:36 New USB template modules is finished. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_cdce.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_msc.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/template/usb2_template_mtp.c#2 edit .. //depot/projects/usb/src/sys/modules/usb2/template/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/template/usb2_template.c#2 (text+ko) ==== @@ -1,9 +1,5 @@ -#include -__FBSDID("$FreeBSD: src/sys/dev/usb/usb_template.c $"); - /*- - * Copyright (c) 2007 Hans Petter Selasky - * All rights reserved. + * Copyright (c) 2007 Hans Petter Selasky. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -32,28 +28,62 @@ * USB templates. */ -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include + +#define USB_DEBUG_VAR usb2_debug + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +MODULE_DEPEND(usb2_template, usb2_core, 1, 1, 1); +MODULE_VERSION(usb2_template, 1); + +/* function prototypes */ -#include -#include -#include -#include -#include +static void usb2_make_raw_desc(struct usb2_temp_setup *temp, const uint8_t *raw); +static void usb2_make_endpoint_desc(struct usb2_temp_setup *temp, const struct usb2_temp_endpoint_desc *ted); +static void usb2_make_interface_desc(struct usb2_temp_setup *temp, const struct usb2_temp_interface_desc *tid); +static void usb2_make_config_desc(struct usb2_temp_setup *temp, const struct usb2_temp_config_desc *tcd); +static void usb2_make_device_desc(struct usb2_temp_setup *temp, const struct usb2_temp_device_desc *tdd); +static uint8_t usb2_hw_ep_match(const struct usb2_hw_ep_profile *pf, uint8_t ep_type, uint8_t ep_dir_in); +static uint8_t usb2_hw_ep_find_match(struct usb2_hw_ep_scratch *ues, struct usb2_hw_ep_scratch_sub *ep, uint8_t is_simplex); +static uint8_t usb2_hw_ep_get_needs(struct usb2_hw_ep_scratch *ues, uint8_t ep_type, uint8_t is_complete); +static usb2_error_t usb2_hw_ep_resolve(struct usb2_device *udev, struct usb2_descriptor *desc); +static const struct usb2_temp_device_desc *usb2_temp_get_tdd(struct usb2_device *udev); +static void *usb2_temp_get_device_desc(struct usb2_device *udev); +static void *usb2_temp_get_qualifier_desc(struct usb2_device *udev); +static void *usb2_temp_get_config_desc(struct usb2_device *udev, uint16_t *pLength, uint8_t index); +static const void *usb2_temp_get_string_desc(struct usb2_device *udev, uint16_t lang_id, uint8_t string_index); +static const void *usb2_temp_get_hub_desc(struct usb2_device *udev); +static void usb2_temp_get_desc(struct usb2_device *udev, struct usb2_device_request *req, const void **pPtr, uint16_t *pLength); +static usb2_error_t usb2_temp_setup(struct usb2_device *udev, const struct usb2_temp_device_desc *tdd); +static void usb2_temp_unsetup(struct usb2_device *udev); +static usb2_error_t usb2_temp_setup_by_index(struct usb2_device *udev, uint16_t index); +static void usb2_temp_init(void *arg); /*------------------------------------------------------------------------* - * usbd_make_raw_desc + * usb2_make_raw_desc * * This function will insert a raw USB descriptor into the generated * USB configuration. *------------------------------------------------------------------------*/ static void -usbd_make_raw_desc(struct usbd_temp_setup *temp, +usb2_make_raw_desc(struct usb2_temp_setup *temp, const uint8_t *raw) { void *dst; @@ -65,15 +95,15 @@ if (raw) { len = raw[0]; if (temp->buf) { - dst = USBD_ADD_BYTES(temp->buf, temp->size); + dst = USB_ADD_BYTES(temp->buf, temp->size); bcopy(raw, dst, len); /* check if we have got a CDC union descriptor */ - if ((raw[0] >= sizeof(usb_cdc_union_descriptor_t)) && + if ((raw[0] >= sizeof(struct usb2_cdc_union_descriptor)) && (raw[1] == UDESC_CS_INTERFACE) && (raw[2] == UDESCSUB_CDC_UNION)) { - usb_cdc_union_descriptor_t *ud = (void *)dst; + struct usb2_cdc_union_descriptor *ud = (void *)dst; /* update the interface numbers */ @@ -89,17 +119,17 @@ } /*------------------------------------------------------------------------* - * usbd_make_endpoint_desc + * usb2_make_endpoint_desc * * This function will generate an USB endpoint descriptor from the * given USB template endpoint descriptor, which will be inserted into * the USB configuration. *------------------------------------------------------------------------*/ static void -usbd_make_endpoint_desc(struct usbd_temp_setup *temp, - const struct usb_temp_endpoint_desc *ted) +usb2_make_endpoint_desc(struct usb2_temp_setup *temp, + const struct usb2_temp_endpoint_desc *ted) { - usb_endpoint_descriptor_t *ed; + struct usb2_endpoint_descriptor *ed; const void **rd; uint16_t old_size; uint16_t mps; @@ -115,19 +145,19 @@ rd = ted->ppRawDesc; if (rd) { while (*rd) { - usbd_make_raw_desc(temp, *rd); + usb2_make_raw_desc(temp, *rd); rd++; } } if (ted->pPacketSize == NULL) { /* not initialized */ - temp->err = USBD_ERR_INVAL; + temp->err = USB_ERR_INVAL; return; } - mps = ted->pPacketSize->mps[temp->usb_speed]; + mps = ted->pPacketSize->mps[temp->usb2_speed]; if (mps == 0) { /* not initialized */ - temp->err = USBD_ERR_INVAL; + temp->err = USB_ERR_INVAL; return; } else if (mps == UE_ZERO_MPS) { /* escape for Zero Max Packet Size */ @@ -141,7 +171,7 @@ * in case there is a buffer present: */ if (temp->buf) { - ed = USBD_ADD_BYTES(temp->buf, old_size); + ed = USB_ADD_BYTES(temp->buf, old_size); ed->bLength = sizeof(*ed); ed->bDescriptorType = UDESC_ENDPOINT; ed->bEndpointAddress = ea; @@ -151,9 +181,9 @@ /* setup bInterval parameter */ if (ted->pIntervals && - ted->pIntervals->bInterval[temp->usb_speed]) { + ted->pIntervals->bInterval[temp->usb2_speed]) { ed->bInterval = - ted->pIntervals->bInterval[temp->usb_speed]; + ted->pIntervals->bInterval[temp->usb2_speed]; } else { switch (et) { case UE_BULK: @@ -161,7 +191,7 @@ ed->bInterval = 0; /* not used */ break; case UE_INTERRUPT: - switch (temp->usb_speed) { + switch (temp->usb2_speed) { case USB_SPEED_LOW: case USB_SPEED_FULL: ed->bInterval = 1; /* 1 ms */ @@ -172,7 +202,7 @@ } break; default: /* UE_ISOCHRONOUS */ - switch (temp->usb_speed) { + switch (temp->usb2_speed) { case USB_SPEED_LOW: case USB_SPEED_FULL: ed->bInterval = 1; /* 1 ms */ @@ -190,18 +220,18 @@ } /*------------------------------------------------------------------------* - * usbd_make_interface_desc + * usb2_make_interface_desc * * This function will generate an USB interface descriptor from the * given USB template interface descriptor, which will be inserted * into the USB configuration. *------------------------------------------------------------------------*/ static void -usbd_make_interface_desc(struct usbd_temp_setup *temp, - const struct usb_temp_interface_desc *tid) +usb2_make_interface_desc(struct usb2_temp_setup *temp, + const struct usb2_temp_interface_desc *tid) { - usb_interface_descriptor_t *id; - const struct usb_temp_endpoint_desc **ted; + struct usb2_interface_descriptor *id; + const struct usb2_temp_endpoint_desc **ted; const void **rd; uint16_t old_size; @@ -225,7 +255,7 @@ if (rd) { while (*rd) { - usbd_make_raw_desc(temp, *rd); + usb2_make_raw_desc(temp, *rd); rd++; } } @@ -238,7 +268,7 @@ ted = tid->ppEndpoints; if (ted) { while (*ted) { - usbd_make_endpoint_desc(temp, *ted); + usb2_make_endpoint_desc(temp, *ted); ted++; } } @@ -247,7 +277,7 @@ * in case there is a buffer present: */ if (temp->buf) { - id = USBD_ADD_BYTES(temp->buf, old_size); + id = USB_ADD_BYTES(temp->buf, old_size); id->bLength = sizeof(*id); id->bDescriptorType = UDESC_INTERFACE; id->bInterfaceNumber = temp->bInterfaceNumber; @@ -262,18 +292,18 @@ } /*------------------------------------------------------------------------* - * usbd_make_config_desc + * usb2_make_config_desc * * This function will generate an USB config descriptor from the given * USB template config descriptor, which will be inserted into the USB * configuration. *------------------------------------------------------------------------*/ static void -usbd_make_config_desc(struct usbd_temp_setup *temp, - const struct usb_temp_config_desc *tcd) +usb2_make_config_desc(struct usb2_temp_setup *temp, + const struct usb2_temp_config_desc *tcd) { - usb_config_descriptor_t *cd; - const struct usb_temp_interface_desc **tid; + struct usb2_config_descriptor *cd; + const struct usb2_temp_interface_desc **tid; uint16_t old_size; /* Reserve memory */ @@ -291,7 +321,7 @@ tid = tcd->ppIfaceDesc; if (tid) { while (*tid) { - usbd_make_interface_desc(temp, *tid); + usb2_make_interface_desc(temp, *tid); tid++; } } @@ -300,7 +330,7 @@ * in case there is a buffer present: */ if (temp->buf) { - cd = USBD_ADD_BYTES(temp->buf, old_size); + cd = USB_ADD_BYTES(temp->buf, old_size); /* compute total size */ old_size = temp->size - old_size; @@ -325,17 +355,17 @@ } /*------------------------------------------------------------------------* - * usbd_make_device_desc + * usb2_make_device_desc * * This function will generate an USB device descriptor from the * given USB template device descriptor. *------------------------------------------------------------------------*/ static void -usbd_make_device_desc(struct usbd_temp_setup *temp, - const struct usb_temp_device_desc *tdd) +usb2_make_device_desc(struct usb2_temp_setup *temp, + const struct usb2_temp_device_desc *tdd) { - struct usb_temp_data *utd; - const struct usb_temp_config_desc **tcd; + struct usb2_temp_data *utd; + const struct usb2_temp_config_desc **tcd; uint16_t old_size; /* Reserve memory */ @@ -349,7 +379,7 @@ tcd = tdd->ppConfigDesc; if (tcd) { while (*tcd) { - usbd_make_config_desc(temp, *tcd); + usb2_make_config_desc(temp, *tcd); temp->bConfigurationValue++; tcd++; } @@ -360,7 +390,7 @@ */ if (temp->buf) { - utd = USBD_ADD_BYTES(temp->buf, old_size); + utd = USB_ADD_BYTES(temp->buf, old_size); /* Store a pointer to our template device descriptor */ utd->tdd = tdd; @@ -395,7 +425,7 @@ USETW(utd->udq.bcdUSB, 0x0200); utd->udq.bMaxPacketSize0 = 0; - switch (temp->usb_speed) { + switch (temp->usb2_speed) { case USB_SPEED_LOW: USETW(utd->udd.bcdUSB, 0x0110); utd->udd.bMaxPacketSize = 8; @@ -413,7 +443,7 @@ utd->udd.bMaxPacketSize = 255; /* 512 bytes */ break; default: - temp->err = USBD_ERR_INVAL; + temp->err = USB_ERR_INVAL; break; } } @@ -421,14 +451,14 @@ } /*------------------------------------------------------------------------* - * usbd_hw_ep_match + * usb2_hw_ep_match * * Return values: * 0: The endpoint profile does not match the criterias * Else: The endpoint profile matches the criterias *------------------------------------------------------------------------*/ static uint8_t -usbd_hw_ep_match(const struct usbd_hw_ep_profile *pf, +usb2_hw_ep_match(const struct usb2_hw_ep_profile *pf, uint8_t ep_type, uint8_t ep_dir_in) { if (ep_type == UE_CONTROL) { @@ -447,7 +477,7 @@ } /*------------------------------------------------------------------------* - * usbd_hw_ep_find_match + * usb2_hw_ep_find_match * * This function is used to find the best matching endpoint profile * for and endpoint belonging to an USB descriptor. @@ -457,10 +487,10 @@ * Else: Failure. No match. *------------------------------------------------------------------------*/ static uint8_t -usbd_hw_ep_find_match(struct usbd_hw_ep_scratch *ues, - struct usbd_sw_ep_scratch *ep, uint8_t is_simplex) +usb2_hw_ep_find_match(struct usb2_hw_ep_scratch *ues, + struct usb2_hw_ep_scratch_sub *ep, uint8_t is_simplex) { - const struct usbd_hw_ep_profile *pf; + const struct usb2_hw_ep_profile *pf; uint16_t distance; uint16_t temp; uint8_t n; @@ -486,7 +516,7 @@ } } - for (n = 1; n != (USB_MAX_ENDPOINTS / 2); n++) { + for (n = 1; n != (USB_EP_MAX / 2); n++) { /* check if IN-endpoint is reserved */ if (dir_in) { @@ -514,7 +544,7 @@ continue; } /* check if HW endpoint matches */ - if (!usbd_hw_ep_match(pf, ep->needs_ep_type, dir_in)) { + if (!usb2_hw_ep_match(pf, ep->needs_ep_type, dir_in)) { /* mismatch */ continue; } @@ -568,7 +598,7 @@ } /*------------------------------------------------------------------------* - * usbd_hw_ep_get_needs + * usb2_hw_ep_get_needs * * This function will figure out the type and number of endpoints * which are needed for an USB configuration. @@ -578,16 +608,16 @@ * Else: Failure. *------------------------------------------------------------------------*/ static uint8_t -usbd_hw_ep_get_needs(struct usbd_hw_ep_scratch *ues, +usb2_hw_ep_get_needs(struct usb2_hw_ep_scratch *ues, uint8_t ep_type, uint8_t is_complete) { - struct usbd_sw_ep_scratch *ep_iface; - struct usbd_sw_ep_scratch *ep_curr; - struct usbd_sw_ep_scratch *ep_max; - struct usbd_sw_ep_scratch *ep_end; - usb_descriptor_t *desc; - usb_interface_descriptor_t *id; - usb_endpoint_descriptor_t *ed; + struct usb2_hw_ep_scratch_sub *ep_iface; + struct usb2_hw_ep_scratch_sub *ep_curr; + struct usb2_hw_ep_scratch_sub *ep_max; + struct usb2_hw_ep_scratch_sub *ep_end; + struct usb2_descriptor *desc; + struct usb2_interface_descriptor *id; + struct usb2_endpoint_descriptor *ed; uint16_t wMaxPacketSize; uint16_t temp; uint8_t allow_override; @@ -595,14 +625,14 @@ ep_iface = ues->ep_max; ep_curr = ues->ep_max; - ep_end = ues->ep + USB_MAX_ENDPOINTS; + ep_end = ues->ep + USB_EP_MAX; ep_max = ues->ep_max; desc = NULL; - speed = ues->udev->speed; + speed = usb2_get_speed(ues->udev); repeat: - while ((desc = usbd_desc_foreach(ues->cd, desc))) { + while ((desc = usb2_desc_foreach(ues->cd, desc))) { if ((desc->bDescriptorType == UDESC_INTERFACE) && (desc->bLength >= sizeof(*id))) { @@ -726,7 +756,7 @@ } /*------------------------------------------------------------------------* - * usbd_hw_ep_resolve + * usb2_hw_ep_resolve * * This function will try to resolve endpoint requirements by the * given endpoint profiles that the USB hardware reports. @@ -735,42 +765,42 @@ * 0: Success * Else: Failure *------------------------------------------------------------------------*/ -static usbd_status_t -usbd_hw_ep_resolve(struct usbd_device *udev, - usb_descriptor_t *desc) +static usb2_error_t +usb2_hw_ep_resolve(struct usb2_device *udev, + struct usb2_descriptor *desc) { - struct usbd_hw_ep_scratch *ues; - struct usbd_sw_ep_scratch *ep; - const struct usbd_hw_ep_profile *pf; - struct usbd_bus_methods *methods; - usb_device_descriptor_t *dd; + struct usb2_hw_ep_scratch *ues; + struct usb2_hw_ep_scratch_sub *ep; + const struct usb2_hw_ep_profile *pf; + struct usb2_bus_methods *methods; + struct usb2_device_descriptor *dd; uint16_t mps; if (desc == NULL) { - return (USBD_ERR_INVAL); + return (USB_ERR_INVAL); } /* get bus methods */ methods = udev->bus->methods; if (methods->get_hw_ep_profile == NULL) { - return (USBD_ERR_INVAL); + return (USB_ERR_INVAL); } if (desc->bDescriptorType == UDESC_DEVICE) { if (desc->bLength < sizeof(*dd)) { - return (USBD_ERR_INVAL); + return (USB_ERR_INVAL); } dd = (void *)desc; /* get HW control endpoint 0 profile */ (methods->get_hw_ep_profile) (udev, &pf, 0); if (pf == NULL) { - return (USBD_ERR_INVAL); + return (USB_ERR_INVAL); } - if (!usbd_hw_ep_match(pf, UE_CONTROL, 0)) { - PRINTFN(-1, ("Endpoint 0 does not " - "support control\n")); - return (USBD_ERR_INVAL); + if (!usb2_hw_ep_match(pf, UE_CONTROL, 0)) { + DPRINTF(-1, "Endpoint 0 does not " + "support control\n"); + return (USB_ERR_INVAL); } mps = dd->bMaxPacketSize; @@ -788,7 +818,7 @@ /* check if "mps" is too small */ if (mps < 8) { - return (USBD_ERR_INVAL); + return (USB_ERR_INVAL); } } @@ -801,18 +831,18 @@ } /* Check if we support the specified wMaxPacketSize */ if (pf->max_frame_size < mps) { - return (USBD_ERR_INVAL); + return (USB_ERR_INVAL); } } return (0); /* success */ } if (desc->bDescriptorType != UDESC_CONFIG) { - return (USBD_ERR_INVAL); + return (USB_ERR_INVAL); } if (desc->bLength < sizeof(*(ues->cd))) { - return (USBD_ERR_INVAL); + return (USB_ERR_INVAL); } - ues = udev->scratch[0].hw_ep_scratch; + ues = udev->bus->scratch[0].hw_ep_scratch; bzero(ues, sizeof(*ues)); @@ -823,12 +853,12 @@ /* Get all the endpoints we need */ - if (usbd_hw_ep_get_needs(ues, UE_ISOCHRONOUS, 0) || - usbd_hw_ep_get_needs(ues, UE_INTERRUPT, 0) || - usbd_hw_ep_get_needs(ues, UE_CONTROL, 0) || - usbd_hw_ep_get_needs(ues, UE_BULK, 0)) { - PRINTFN(-1, ("Could not get needs\n")); - return (USBD_ERR_INVAL); + if (usb2_hw_ep_get_needs(ues, UE_ISOCHRONOUS, 0) || + usb2_hw_ep_get_needs(ues, UE_INTERRUPT, 0) || + usb2_hw_ep_get_needs(ues, UE_CONTROL, 0) || + usb2_hw_ep_get_needs(ues, UE_BULK, 0)) { + DPRINTF(-1, "Could not get needs\n"); + return (USB_ERR_INVAL); } for (ep = ues->ep; ep != ues->ep_max; ep++) { @@ -838,10 +868,10 @@ * First try to use a simplex endpoint. * Then try to use a duplex endpoint. */ - if (usbd_hw_ep_find_match(ues, ep, 1) && - usbd_hw_ep_find_match(ues, ep, 0)) { - PRINTFN(-1, ("Could not find match\n")); - return (USBD_ERR_INVAL); + if (usb2_hw_ep_find_match(ues, ep, 1) && + usb2_hw_ep_find_match(ues, ep, 0)) { + DPRINTF(-1, "Could not find match\n"); + return (USB_ERR_INVAL); } } } @@ -850,48 +880,48 @@ /* Update all endpoint addresses */ - if (usbd_hw_ep_get_needs(ues, UE_ISOCHRONOUS, 1) || - usbd_hw_ep_get_needs(ues, UE_INTERRUPT, 1) || - usbd_hw_ep_get_needs(ues, UE_CONTROL, 1) || - usbd_hw_ep_get_needs(ues, UE_BULK, 1)) { - PRINTFN(-1, ("Could not update endpoint address\n")); - return (USBD_ERR_INVAL); + if (usb2_hw_ep_get_needs(ues, UE_ISOCHRONOUS, 1) || + usb2_hw_ep_get_needs(ues, UE_INTERRUPT, 1) || + usb2_hw_ep_get_needs(ues, UE_CONTROL, 1) || + usb2_hw_ep_get_needs(ues, UE_BULK, 1)) { + DPRINTF(-1, "Could not update endpoint address\n"); + return (USB_ERR_INVAL); } return (0); /* success */ } /*------------------------------------------------------------------------* - * usbd_temp_get_tdd + * usb2_temp_get_tdd * * Returns: * NULL: No USB template device descriptor found. * Else: Pointer to the USB template device descriptor. *------------------------------------------------------------------------*/ -static const struct usb_temp_device_desc * -usbd_temp_get_tdd(struct usbd_device *udev) +static const struct usb2_temp_device_desc * +usb2_temp_get_tdd(struct usb2_device *udev) { - if (udev->usb_template_ptr == NULL) { + if (udev->usb2_template_ptr == NULL) { return (NULL); } - return (udev->usb_template_ptr->tdd); + return (udev->usb2_template_ptr->tdd); } /*------------------------------------------------------------------------* - * usbd_temp_get_device_desc + * usb2_temp_get_device_desc * * Returns: * NULL: No USB device descriptor found. * Else: Pointer to USB device descriptor. *------------------------------------------------------------------------*/ static void * -usbd_temp_get_device_desc(struct usbd_device *udev) +usb2_temp_get_device_desc(struct usb2_device *udev) { - usb_device_descriptor_t *dd; + struct usb2_device_descriptor *dd; - if (udev->usb_template_ptr == NULL) { + if (udev->usb2_template_ptr == NULL) { return (NULL); } - dd = &(udev->usb_template_ptr->udd); + dd = &(udev->usb2_template_ptr->udd); if (dd->bDescriptorType != UDESC_DEVICE) { /* sanity check failed */ return (NULL); @@ -900,21 +930,21 @@ } /*------------------------------------------------------------------------* - * usbd_temp_get_qualifier_desc + * usb2_temp_get_qualifier_desc * * Returns: * NULL: No USB device_qualifier descriptor found. * Else: Pointer to USB device_qualifier descriptor. *------------------------------------------------------------------------*/ static void * -usbd_temp_get_qualifier_desc(struct usbd_device *udev) +usb2_temp_get_qualifier_desc(struct usb2_device *udev) { - usb_device_qualifier_t *dq; + struct usb2_device_qualifier *dq; - if (udev->usb_template_ptr == NULL) { + if (udev->usb2_template_ptr == NULL) { return (NULL); } - dq = &(udev->usb_template_ptr->udq); + dq = &(udev->usb2_template_ptr->udq); if (dq->bDescriptorType != UDESC_DEVICE_QUALIFIER) { /* sanity check failed */ return (NULL); @@ -923,25 +953,25 @@ } /*------------------------------------------------------------------------* - * usbd_temp_get_config_desc + * usb2_temp_get_config_desc * * Returns: * NULL: No USB config descriptor found. * Else: Pointer to USB config descriptor having index "index". *------------------------------------------------------------------------*/ static void * -usbd_temp_get_config_desc(struct usbd_device *udev, +usb2_temp_get_config_desc(struct usb2_device *udev, uint16_t *pLength, uint8_t index) { - usb_device_descriptor_t *dd; - usb_config_descriptor_t *cd; + struct usb2_device_descriptor *dd; + struct usb2_config_descriptor *cd; uint16_t temp; - if (udev->usb_template_ptr == NULL) { + if (udev->usb2_template_ptr == NULL) { return (NULL); } - dd = &(udev->usb_template_ptr->udd); - cd = (void *)(udev->usb_template_ptr + 1); + dd = &(udev->usb2_template_ptr->udd); + cd = (void *)(udev->usb2_template_ptr + 1); if (index >= dd->bNumConfigurations) { /* out of range */ @@ -953,7 +983,7 @@ return (NULL); } temp = UGETW(cd->wTotalLength); - cd = USBD_ADD_BYTES(cd, temp); + cd = USB_ADD_BYTES(cd, temp); } if (pLength) { @@ -963,19 +993,19 @@ } /*------------------------------------------------------------------------* - * usbd_temp_get_string_desc + * usb2_temp_get_string_desc * * Returns: * NULL: No string descriptor found. * Else: Pointer to a string descriptor. *------------------------------------------------------------------------*/ static const void * -usbd_temp_get_string_desc(struct usbd_device *udev, +usb2_temp_get_string_desc(struct usb2_device *udev, uint16_t lang_id, uint8_t string_index) { - const struct usb_temp_device_desc *tdd; + const struct usb2_temp_device_desc *tdd; - tdd = usbd_temp_get_tdd(udev); + tdd = usb2_temp_get_tdd(udev); if (tdd == NULL) { return (NULL); } @@ -986,26 +1016,26 @@ } /*------------------------------------------------------------------------* - * usbd_temp_get_hub_desc + * usb2_temp_get_hub_desc * * Returns: * NULL: No USB HUB descriptor found. * Else: Pointer to a USB HUB descriptor. *------------------------------------------------------------------------*/ static const void * -usbd_temp_get_hub_desc(struct usbd_device *udev) +usb2_temp_get_hub_desc(struct usb2_device *udev) { return (NULL); /* needs to be implemented */ } /*------------------------------------------------------------------------* - * usbd_temp_get_desc + * usb2_temp_get_desc * * This function is a demultiplexer for local USB device side control * endpoint requests. *------------------------------------------------------------------------*/ -void -usbd_temp_get_desc(struct usbd_device *udev, usb_device_request_t *req, +static void +usb2_temp_get_desc(struct usb2_device *udev, struct usb2_device_request *req, const void **pPtr, uint16_t *pLength) { const uint8_t *buf; @@ -1041,7 +1071,7 @@ if (req->wValue[0]) { goto tr_stalled; } - buf = usbd_temp_get_device_desc(udev); + buf = usb2_temp_get_device_desc(udev); goto tr_valid; case UDESC_DEVICE_QUALIFIER: if (udev->speed != USB_SPEED_HIGH) { @@ -1050,18 +1080,18 @@ if (req->wValue[0]) { goto tr_stalled; } - buf = usbd_temp_get_qualifier_desc(udev); + buf = usb2_temp_get_qualifier_desc(udev); goto tr_valid; case UDESC_OTHER_SPEED_CONFIGURATION: if (udev->speed != USB_SPEED_HIGH) { goto tr_stalled; } case UDESC_CONFIG: - buf = usbd_temp_get_config_desc(udev, + buf = usb2_temp_get_config_desc(udev, &len, req->wValue[0]); goto tr_valid; case UDESC_STRING: - buf = usbd_temp_get_string_desc(udev, + buf = usb2_temp_get_string_desc(udev, UGETW(req->wIndex), req->wValue[0]); goto tr_valid; default: @@ -1073,7 +1103,7 @@ if (req->wValue[0]) { goto tr_stalled; } - buf = usbd_temp_get_hub_desc(udev); + buf = usb2_temp_get_hub_desc(udev); goto tr_valid; tr_valid: @@ -1094,7 +1124,7 @@ } /*------------------------------------------------------------------------* - * usbd_temp_setup + * usb2_temp_setup * * This function generates USB descriptors according to the given USB * template device descriptor. It will also try to figure out the best @@ -1104,11 +1134,11 @@ * 0: Success * Else: Failure *------------------------------------------------------------------------*/ -usbd_status_t -usbd_temp_setup(struct usbd_device *udev, - const struct usb_temp_device_desc *tdd) +static usb2_error_t +usb2_temp_setup(struct usb2_device *udev, + const struct usb2_temp_device_desc *tdd) { - struct usbd_temp_setup *uts; + struct usb2_temp_setup *uts; void *buf; uint8_t n; @@ -1116,16 +1146,16 @@ /* be NULL safe */ return (0); } - uts = udev->scratch[0].temp_setup; + uts = udev->bus->scratch[0].temp_setup; bzero(uts, sizeof(*uts)); - uts->usb_speed = udev->speed; + uts->usb2_speed = udev->speed; uts->self_powered = udev->flags.self_powered; /* first pass */ - usbd_make_device_desc(uts, tdd); + usb2_make_device_desc(uts, tdd); if (uts->err) { /* some error happened */ @@ -1133,24 +1163,24 @@ } /* sanity check */ if (uts->size == 0) { - return (USBD_ERR_INVAL); + return (USB_ERR_INVAL); } /* allocate zeroed memory */ uts->buf = malloc(uts->size, M_USB, M_WAITOK | M_ZERO); if (uts->buf == NULL) { /* could not allocate memory */ - return (USBD_ERR_NOMEM); + return (USB_ERR_NOMEM); } /* second pass */ uts->size = 0; - usbd_make_device_desc(uts, tdd); + usb2_make_device_desc(uts, tdd); /* * Store a pointer to our descriptors: */ - udev->usb_template_ptr = uts->buf; + udev->usb2_template_ptr = uts->buf; if (uts->err) { /* some error happened during second pass */ @@ -1159,49 +1189,84 @@ /* * Resolve all endpoint addresses ! */ - buf = usbd_temp_get_device_desc(udev); - uts->err = usbd_hw_ep_resolve(udev, buf); + buf = usb2_temp_get_device_desc(udev); + uts->err = usb2_hw_ep_resolve(udev, buf); if (uts->err) { - PRINTFN(-1, ("Could not resolve endpoints for " + DPRINTF(-1, "Could not resolve endpoints for " "Device Descriptor, error = %s\n", - usbd_errstr(uts->err))); + usb2_errstr(uts->err)); goto error; } for (n = 0;; n++) { - buf = usbd_temp_get_config_desc(udev, NULL, n); + buf = usb2_temp_get_config_desc(udev, NULL, n); if (buf == NULL) { break; } - uts->err = usbd_hw_ep_resolve(udev, buf); + uts->err = usb2_hw_ep_resolve(udev, buf); if (uts->err) { - PRINTFN(-1, ("Could not resolve endpoints for " + DPRINTF(-1, "Could not resolve endpoints for " "Config Descriptor %u, error = %s\n", n, - usbd_errstr(uts->err))); + usb2_errstr(uts->err)); goto error; } } return (uts->err); error: - usbd_temp_unsetup(udev); + usb2_temp_unsetup(udev); return (uts->err); } /*------------------------------------------------------------------------* - * usbd_temp_unsetup + * usb2_temp_unsetup * * This function frees any memory associated with the currently * setup template, if any. *------------------------------------------------------------------------*/ -void -usbd_temp_unsetup(struct usbd_device *udev) +static void +usb2_temp_unsetup(struct usb2_device *udev) { - if (udev->usb_template_ptr) { + if (udev->usb2_template_ptr) { + + free(udev->usb2_template_ptr, M_USB); + + udev->usb2_template_ptr = NULL; + } + return; +} - free(udev->usb_template_ptr, M_USB); +static usb2_error_t +usb2_temp_setup_by_index(struct usb2_device *udev, uint16_t index) +{ + usb2_error_t err; - udev->usb_template_ptr = NULL; + switch (index) { + case 0: + err = usb2_temp_setup(udev, &usb2_template_msc); + break; + case 1: + err = usb2_temp_setup(udev, &usb2_template_cdce); + break; + case 2: + err = usb2_temp_setup(udev, &usb2_template_mtp); + break; + default: + return (USB_ERR_INVAL); } + + return (err); +} + +static void +usb2_temp_init(void *arg) >>> TRUNCATED FOR MAIL (1000 lines) <<< From julian at FreeBSD.org Tue Jul 1 21:29:39 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Tue Jul 1 21:29:41 2008 Subject: PERFORCE change 144441 for review Message-ID: <200807012129.m61LTcDK089975@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144441 Change 144441 by julian@julian_trafmon1 on 2008/07/01 21:29:03 Need the include files in kernmel modules too Affected files ... .. //depot/projects/vimage-commit3/src/sys/contrib/ipfilter/netinet/fil.c#2 edit Differences ... ==== //depot/projects/vimage-commit3/src/sys/contrib/ipfilter/netinet/fil.c#2 (text+ko) ==== @@ -28,14 +28,16 @@ (__FreeBSD_version >= 220000) # if (__FreeBSD_version >= 400000) # if !defined(IPFILTER_LKM) -# include "opt_vimage.h" # include "opt_inet6.h" -# include # endif # if (__FreeBSD_version == 400019) # define CSUM_DELAY_DATA # endif # endif +# if (__FreeBSD_version >= 800000) +# include "opt_vimage.h" +# include +# endif # include #else # include From hselasky at FreeBSD.org Tue Jul 1 21:41:52 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 21:41:54 2008 Subject: PERFORCE change 144443 for review Message-ID: <200807012141.m61Lfpr6091042@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144443 Change 144443 by hselasky@hselasky_laptop001 on 2008/07/01 21:41:25 Several fixes and improvements to the USB device layer /dev/usbXXX . Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#6 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#6 (text+ko) ==== @@ -75,6 +75,7 @@ static int usb2_fifo_open(struct usb2_fifo *f, struct file *fp, struct thread *td, int fflags); static void usb2_fifo_close(struct usb2_fifo *f, struct thread *td, int fflags); static void usb2_dev_init(void *arg); +static void usb2_dev_init_post(void *arg); static void usb2_dev_uninit(void *arg); static int usb2_fifo_uiomove(struct usb2_fifo *f, void *cp, int n, struct uio *uio); static void usb2_fifo_wakeup(struct usb2_fifo *f); @@ -310,28 +311,35 @@ mtx_lock(&usb2_ref_lock); ploc->bus = devclass_get_softc(usb2_devclass_ptr, ploc->bus_index); if (ploc->bus == NULL) { + DPRINTF(1, "no bus\n"); goto error; } if (ploc->bus->ready == 0) { + DPRINTF(1, "not ready\n"); goto error; } if (ploc->dev_index >= ploc->bus->devices_max) { + DPRINTF(1, "invalid dev index\n"); goto error; } ploc->udev = ploc->bus->devices[ploc->dev_index]; if (ploc->udev == NULL) { + DPRINTF(1, "no device\n"); goto error; } if (ploc->udev->refcount == USB_DEV_REF_MAX) { + DPRINTF(1, "no dev ref\n"); goto error; } ploc->iface = usb2_get_iface(ploc->udev, ploc->iface_index); if (ploc->ep_index != 0) { /* non control endpoint - we need an interface */ if (ploc->iface == NULL) { + DPRINTF(1, "no iface\n"); goto error; } if (ploc->iface->idesc == NULL) { + DPRINTF(1, "no idesc\n"); goto error; } } @@ -368,12 +376,15 @@ /* when everything is OK we increment the refcounts */ if (ploc->is_uref) { + DPRINTF(1, "ref udev\n"); ploc->udev->refcount++; } if (ploc->is_write) { + DPRINTF(1, "ref write\n"); ploc->txfifo->refcount++; } if (ploc->is_read) { + DPRINTF(1, "ref read\n"); ploc->rxfifo->refcount++; } mtx_unlock(&usb2_ref_lock); @@ -390,6 +401,7 @@ error: mtx_unlock(&usb2_ref_lock); + DPRINTF(1, "fail\n"); return (USB_ERR_INVAL); } @@ -513,10 +525,12 @@ if (f) { /* nothing do to - we already have a FIFO */ + DPRINTF(1, "has FIFO\n"); return; } if (ep_index >= 16) { /* nothing to do - these are virtual endpoints */ + DPRINTF(1, "VEP\n"); return; } /* automatically create a generic endpoint */ @@ -601,6 +615,7 @@ if (f == NULL) { /* no FIFO there */ + DPRINTF(1, "no FIFO\n"); return (ENXIO); } /* remove FWRITE and FREAD flags */ @@ -743,7 +758,7 @@ /* check if we are sleeping */ if (f->flag_sleeping) { - DPRINTF(-1, "Sleeping at close!\n"); + DPRINTF(1, "Sleeping at close!\n"); } mtx_unlock(f->priv_mtx); @@ -774,6 +789,7 @@ usb2_last_devloc = (0 - 1); /* reset "usb2_devloc" */ if (fp == NULL) { + DPRINTF(1, "fp == NULL\n"); return (ENXIO); } if (usb2_old_f_data != fp->f_data) { @@ -799,10 +815,12 @@ } if (devloc == (uint32_t)(0 - 1)) { /* tried to open /dev/usb */ + DPRINTF(1, "no devloc\n"); return (ENXIO); } err = usb2_ref_device(NULL, &loc, devloc); if (err) { + DPRINTF(1, "cannot ref device\n"); return (ENXIO); } /* create a permissions mask */ @@ -854,7 +872,6 @@ } usb2_fifo_check(&loc, fflags & FREAD); usb2_fifo_check(&loc, fflags & FWRITE); - usb2_unref_device(&loc); /* try to refer the device and associated FIFOs again */ @@ -866,6 +883,7 @@ err = usb2_fifo_open(loc.rxfifo, fp, td, fflags); if (err) { + DPRINTF(1, "read open failed\n"); usb2_unref_device(&loc); return (err); } @@ -874,6 +892,7 @@ err = usb2_fifo_open(loc.txfifo, fp, td, fflags); if (err) { + DPRINTF(1, "write open failed\n"); if (fflags & FREAD) { usb2_fifo_close(loc.rxfifo, td, fflags); @@ -923,7 +942,6 @@ } if (usb2_last_devloc != (uint32_t)(0 - 1)) { DPRINTF(-1, "Clone race!\n"); - return; } usb2_last_devloc = usb2_path_convert(name + sizeof(USB_DEVICE_NAME) - 1); @@ -941,7 +959,14 @@ usb2_dev_init(void *arg) { mtx_init(&usb2_ref_lock, "USB ref mutex", NULL, MTX_DEF); + return; +} +SYSINIT(usb2_dev_init, SI_SUB_KLD, SI_ORDER_FIRST, usb2_dev_init, NULL); + +static void +usb2_dev_init_post(void *arg) +{ /* create a dummy device so that we are visible */ usb2_dev = make_dev(&usb2_devsw, 0, UID_ROOT, GID_OPERATOR, 0000, USB_DEVICE_NAME " "); @@ -955,7 +980,7 @@ return; } -SYSINIT(usb2_dev_init, SI_SUB_KLD, SI_ORDER_FIRST, usb2_dev_init, NULL); +SYSINIT(usb2_dev_init_post, SI_SUB_KICK_SCHEDULER, SI_ORDER_FIRST, usb2_dev_init_post, NULL); static void usb2_dev_uninit(void *arg) @@ -981,7 +1006,9 @@ int fflags; int err; - DPRINTF(1, "\n"); + fflags = fp->f_flag; + + DPRINTF(1, "fflags=%u\n", fflags); err = usb2_ref_device(fp, &loc, 0);; @@ -991,6 +1018,7 @@ /* check for error */ if (err) { + DPRINTF(1, "could not ref\n"); goto done; } if (fflags & FREAD) { @@ -1062,6 +1090,9 @@ return (ENXIO); } fflags = fp->f_flag; + + DPRINTF(1, "fflags=%u, cmd=0x%lx\n", fflags, cmd); + if ((fflags & FREAD) && (err == 0)) { err = usb2_ioctl_f_sub(loc.rxfifo, cmd, addr, td); if (err) { @@ -1297,6 +1328,7 @@ f = loc.txfifo; if (f == NULL) { /* should not happen */ + usb2_unref_device(&loc); return (EPERM); } resid = uio->uio_resid; @@ -1358,6 +1390,8 @@ done: mtx_unlock(f->priv_mtx); + usb2_unref_device(&loc); + if ((flags & FOF_OFFSET) == 0) fp->f_offset = uio->uio_offset; fp->f_nextoff = uio->uio_offset; @@ -1387,6 +1421,8 @@ int usb2_fifo_wait(struct usb2_fifo *f) { + int err; + mtx_assert(f->priv_mtx, MA_OWNED); if (f->flag_iserror) { @@ -1394,13 +1430,14 @@ return (EIO); } f->flag_sleeping = 1; - cv_wait(&(f->cv_io), f->priv_mtx); + + err = cv_wait_sig(&(f->cv_io), f->priv_mtx); if (f->flag_iserror) { /* we are gone */ - return (EIO); + err = EIO; } - return (0); + return (err); } void From hselasky at FreeBSD.org Tue Jul 1 21:44:55 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 21:44:58 2008 Subject: PERFORCE change 144445 for review Message-ID: <200807012144.m61LisVj091287@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144445 Change 144445 by hselasky@hselasky_laptop001 on 2008/07/01 21:44:42 New USB sound module is finished and tested. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#8 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_defs.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2_reg.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/sound/usb2_sound.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/sound/usb2_sound.h#1 add .. //depot/projects/usb/src/sys/modules/usb2/sound/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#8 (text+ko) ==== @@ -391,7 +391,7 @@ struct usb2_interface_descriptor *usb2_get_interface_descriptor(struct usb2_interface *iface); uint8_t usb2_clear_stall_callback(struct usb2_xfer *xfer1, struct usb2_xfer *xfer2); uint8_t usb2_get_interface_altindex(struct usb2_interface *iface); -uint8_t usb2_get_quirk(struct usb2_attach_arg *uaa, uint16_t quirk); +usb2_error_t usb2_set_alt_interface_index(struct usb2_device *udev, uint8_t iface_index, uint8_t alt_index); uint8_t usb2_get_speed(struct usb2_device *udev); usb2_error_t usb2_transfer_setup(struct usb2_device *udev, const uint8_t *ifaces, struct usb2_xfer **pxfer, const struct usb2_config *setup_start, uint16_t n_setup, void *priv_sc, struct mtx *priv_mtx); void usb2_set_frame_data(struct usb2_xfer *xfer, void *ptr, uint32_t frindex); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.h#3 (text+ko) ==== @@ -147,7 +147,6 @@ usb2_error_t usb2_interface_count(struct usb2_device *udev, uint8_t *count); usb2_error_t usb2_probe_and_attach(struct usb2_device *udev, uint8_t iface_index); usb2_error_t usb2_reset_iface_endpoints(struct usb2_device *udev, uint8_t iface_index); -usb2_error_t usb2_set_alt_interface_index(struct usb2_device *udev, uint8_t iface_index, uint8_t alt_index); usb2_error_t usb2_set_config_index(struct usb2_device *udev, uint8_t index); usb2_error_t usb2_set_endpoint_stall(struct usb2_device *udev, struct usb2_pipe *pipe, uint8_t do_stall); usb2_error_t usb2_suspend_resume(struct usb2_device *udev, uint8_t do_suspend); ==== //depot/projects/usb/src/sys/dev/usb2/include/usb2_defs.h#3 (text+ko) ==== @@ -32,7 +32,7 @@ #define USB_DEV_MAX 128 /* units */ #define USB_IFACE_MAX 32 /* units */ #define USB_EP_MAX (2*16) /* hardcoded */ -#define USB_FIFO_MAX (2 * USB_EP_MAX) +#define USB_FIFO_MAX (4 * USB_EP_MAX) #define USB_MAX_DEVICES USB_DEV_MAX /* including virtual root HUB and * address zero */ ==== //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#2 (text+ko) ==== @@ -52,18 +52,30 @@ * $NetBSD: uaudio.c,v 1.97 2005/02/24 08:19:38 martin Exp $ */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include + +#define USB_DEBUG_VAR uaudio_debug + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + #include /* for bootverbose */ -#include -#include -#include -#include - #include #include #include "feeder_if.h" @@ -72,17 +84,11 @@ #include #ifdef USB_DEBUG -#define DPRINTF(n,fmt,...) \ - do { if (uaudio_debug > (n)) { \ - printf("%s: " fmt, __FUNCTION__,## __VA_ARGS__); } } while (0) - static int uaudio_debug = 0; -SYSCTL_NODE(_hw_usb, OID_AUTO, uaudio, CTLFLAG_RW, 0, "USB uaudio"); -SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, debug, CTLFLAG_RW, +SYSCTL_NODE(_hw_usb2, OID_AUTO, uaudio, CTLFLAG_RW, 0, "USB uaudio"); +SYSCTL_INT(_hw_usb2_uaudio, OID_AUTO, debug, CTLFLAG_RW, &uaudio_debug, 0, "uaudio debug level"); -#else -#define DPRINTF(...) do { } while (0) #endif static uint32_t uaudio_default_rate = 96000; @@ -94,8 +100,6 @@ #define UAUDIO_RECURSE_LIMIT 24 /* rounds */ #define UAUDIO_DEFAULT_BUFSZ (16*1024) /* bytes */ - - #define MAKE_WORD(h,l) (((h) << 8) | (l)) #define BIT_TEST(bm,bno) (((bm)[(bno) / 8] >> (7 - ((bno) % 8))) & 1) @@ -135,16 +139,16 @@ struct pcmchan_caps pcm_cap; /* capabilities */ struct snd_dbuf *pcm_buf; - const struct usbd_config *usb_cfg; + const struct usb2_config *usb2_cfg; struct mtx *pcm_mtx; /* lock protecting this structure */ struct uaudio_softc *priv_sc; struct pcm_channel *pcm_ch; - struct usbd_xfer *xfer[UAUDIO_NCHANBUFS]; - const struct usb_audio_streaming_interface_descriptor *p_asid; - const struct usb_audio_streaming_type1_descriptor *p_asf1d; - const struct usb_audio_streaming_endpoint_descriptor *p_sed; - const usb_endpoint_descriptor_audio_t *p_ed1; - const usb_endpoint_descriptor_audio_t *p_ed2; + struct usb2_xfer *xfer[UAUDIO_NCHANBUFS]; + const struct usb2_audio_streaming_interface_descriptor *p_asid; + const struct usb2_audio_streaming_type1_descriptor *p_asf1d; + const struct usb2_audio_streaming_endpoint_descriptor *p_sed; + const usb2_endpoint_descriptor_audio_t *p_ed1; + const usb2_endpoint_descriptor_audio_t *p_ed2; const struct uaudio_format *p_fmt; uint8_t *buf; /* pointer to buffer */ @@ -170,7 +174,7 @@ #define UMIDI_BULK_SIZE 1024 /* bytes */ struct umidi_sub_chan { - struct usb_cdev cdev; + struct usb2_fifo_sc fifo; uint8_t *temp_cmd; uint8_t temp_0[4]; uint8_t temp_1[4]; @@ -193,7 +197,7 @@ struct umidi_sub_chan sub[UMIDI_CABLES_MAX]; struct mtx mtx; - struct usbd_xfer *xfer[UMIDI_N_TRANSFER]; + struct usb2_xfer *xfer[UMIDI_N_TRANSFER]; uint8_t iface_index; uint8_t iface_alt_index; @@ -217,8 +221,8 @@ struct uaudio_chan sc_play_chan; struct umidi_chan sc_midi_chan; - struct usbd_device *sc_udev; - struct usbd_xfer *sc_mixer_xfer[1]; + struct usb2_device *sc_udev; + struct usb2_xfer *sc_mixer_xfer[1]; struct mtx *sc_mixer_lock; struct uaudio_mixer_node *sc_mixer_root; struct uaudio_mixer_node *sc_mixer_curr; @@ -226,7 +230,6 @@ uint32_t sc_buffer_size; uint32_t sc_mix_info; uint32_t sc_recsrc_info; - uint32_t sc_quirks; uint16_t sc_audio_rev; uint16_t sc_mixer_count; @@ -237,7 +240,10 @@ uint8_t sc_mixer_chan; uint8_t sc_pcm_registered:1; uint8_t sc_mixer_init:1; - uint8_t sc_unused:6; + uint8_t sc_uq_audio_swap_lr:1; + uint8_t sc_uq_au_inp_async:1; + uint8_t sc_uq_au_no_xu:1; + uint8_t sc_uq_bad_adc:1; }; struct uaudio_search_result { @@ -250,14 +256,14 @@ struct uaudio_terminal_node { union { - const usb_descriptor_t *desc; - const struct usb_audio_input_terminal *it; - const struct usb_audio_output_terminal *ot; - const struct usb_audio_mixer_unit_0 *mu; - const struct usb_audio_selector_unit *su; - const struct usb_audio_feature_unit *fu; - const struct usb_audio_processing_unit_0 *pu; - const struct usb_audio_extension_unit_0 *eu; + const struct usb2_descriptor *desc; + const struct usb2_audio_input_terminal *it; + const struct usb2_audio_output_terminal *ot; + const struct usb2_audio_mixer_unit_0 *mu; + const struct usb2_audio_selector_unit *su; + const struct usb2_audio_feature_unit *fu; + const struct usb2_audio_processing_unit_0 *pu; + const struct usb2_audio_extension_unit_0 *eu; } u; struct uaudio_search_result usr; struct uaudio_terminal_node *root; @@ -307,157 +313,74 @@ static device_attach_t uaudio_attach; static device_detach_t uaudio_detach; -static usbd_callback_t uaudio_chan_play_callback; -static usbd_callback_t uaudio_chan_record_callback; -static usbd_callback_t uaudio_mixer_write_cfg_callback; -static usbd_callback_t umidi_read_clear_stall_callback; -static usbd_callback_t umidi_bulk_read_callback; -static usbd_callback_t umidi_write_clear_stall_callback; -static usbd_callback_t umidi_bulk_write_callback; +static usb2_callback_t uaudio_chan_play_callback; +static usb2_callback_t uaudio_chan_record_callback; +static usb2_callback_t uaudio_mixer_write_cfg_callback; +static usb2_callback_t umidi_read_clear_stall_callback; +static usb2_callback_t umidi_bulk_read_callback; +static usb2_callback_t umidi_write_clear_stall_callback; +static usb2_callback_t umidi_bulk_write_callback; #ifdef USB_DEBUG -static void - uaudio_chan_dump_ep_desc(const usb_endpoint_descriptor_audio_t *ed); +static void uaudio_chan_dump_ep_desc(const usb2_endpoint_descriptor_audio_t *ed); #endif -static void -uaudio_chan_fill_info_sub(struct uaudio_softc *sc, struct usbd_device *udev, - uint32_t rate, uint16_t fps, uint8_t channels, - uint8_t bit_resolution); - -static void - uaudio_chan_fill_info(struct uaudio_softc *sc, struct usbd_device *udev); - -static void -uaudio_mixer_add_ctl_sub(struct uaudio_softc *sc, - struct uaudio_mixer_node *mc); -static void - uaudio_mixer_add_ctl(struct uaudio_softc *sc, struct uaudio_mixer_node *mc); +static void uaudio_chan_fill_info_sub(struct uaudio_softc *sc, struct usb2_device *udev, uint32_t rate, uint16_t fps, uint8_t channels, uint8_t bit_resolution); +static void uaudio_chan_fill_info(struct uaudio_softc *sc, struct usb2_device *udev); +static void uaudio_mixer_add_ctl_sub(struct uaudio_softc *sc, struct uaudio_mixer_node *mc); +static void uaudio_mixer_add_ctl(struct uaudio_softc *sc, struct uaudio_mixer_node *mc); +static void uaudio_mixer_add_input(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id); +static void uaudio_mixer_add_output(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id); +static void uaudio_mixer_add_mixer(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id); +static void uaudio_mixer_add_selector(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id); +static uint32_t uaudio_mixer_feature_get_bmaControls(const struct usb2_audio_feature_unit *d, uint8_t index); +static void uaudio_mixer_add_feature(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id); +static void uaudio_mixer_add_processing_updown(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id); +static void uaudio_mixer_add_processing(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id); +static void uaudio_mixer_add_extension(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id); +static const void *uaudio_mixer_verify_desc(const void *arg, uint32_t len); -static void -uaudio_mixer_add_input(struct uaudio_softc *sc, - const struct uaudio_terminal_node *iot, int id); -static void -uaudio_mixer_add_output(struct uaudio_softc *sc, - const struct uaudio_terminal_node *iot, int id); -static void -uaudio_mixer_add_mixer(struct uaudio_softc *sc, - const struct uaudio_terminal_node *iot, int id); -static void -uaudio_mixer_add_selector(struct uaudio_softc *sc, - const struct uaudio_terminal_node *iot, int id); -static uint32_t -uaudio_mixer_feature_get_bmaControls(const struct usb_audio_feature_unit *d, - uint8_t index); -static void -uaudio_mixer_add_feature(struct uaudio_softc *sc, - const struct uaudio_terminal_node *iot, int id); -static void -uaudio_mixer_add_processing_updown(struct uaudio_softc *sc, - const struct uaudio_terminal_node *iot, - int id); -static void -uaudio_mixer_add_processing(struct uaudio_softc *sc, - const struct uaudio_terminal_node *iot, int id); -static void -uaudio_mixer_add_extension(struct uaudio_softc *sc, - const struct uaudio_terminal_node *iot, int id); -static const void * - uaudio_mixer_verify_desc(const void *arg, uint32_t len); - #ifdef USB_DEBUG -static void - uaudio_mixer_dump_cluster(uint8_t id, const struct uaudio_terminal_node *iot); +static void uaudio_mixer_dump_cluster(uint8_t id, const struct uaudio_terminal_node *iot); #endif -static struct usb_audio_cluster - uaudio_mixer_get_cluster(uint8_t id, const struct uaudio_terminal_node *iot); +static struct usb2_audio_cluster uaudio_mixer_get_cluster(uint8_t id, const struct uaudio_terminal_node *iot); #ifdef USB_DEBUG -static const char * - uaudio_mixer_get_terminal_name(uint16_t terminal_type); +static const char *uaudio_mixer_get_terminal_name(uint16_t terminal_type); #endif -static uint16_t -uaudio_mixer_determine_class(const struct uaudio_terminal_node *iot, - struct uaudio_mixer_node *mix); -static uint16_t -uaudio_mixer_feature_name(const struct uaudio_terminal_node *iot, - struct uaudio_mixer_node *mix); +static uint16_t uaudio_mixer_determine_class(const struct uaudio_terminal_node *iot, struct uaudio_mixer_node *mix); +static uint16_t uaudio_mixer_feature_name(const struct uaudio_terminal_node *iot, struct uaudio_mixer_node *mix); +static const struct uaudio_terminal_node *uaudio_mixer_get_input(const struct uaudio_terminal_node *iot, uint8_t index); +static const struct uaudio_terminal_node *uaudio_mixer_get_output(const struct uaudio_terminal_node *iot, uint8_t index); +static void uaudio_mixer_find_inputs_sub(struct uaudio_terminal_node *root, const uint8_t *p_id, uint8_t n_id, struct uaudio_search_result *info); +static void uaudio_mixer_find_outputs_sub(struct uaudio_terminal_node *root, uint8_t id, uint8_t n_id, struct uaudio_search_result *info); +static void uaudio_mixer_fill_info(struct uaudio_softc *sc, struct usb2_device *udev, void *desc); +static uint16_t uaudio_mixer_get(struct usb2_device *udev, uint8_t what, struct uaudio_mixer_node *mc); +static usb2_error_t uaudio_set_speed(struct usb2_device *udev, uint8_t endpt, uint32_t speed); +static int uaudio_mixer_signext(uint8_t type, int val); +static int uaudio_mixer_bsd2value(struct uaudio_mixer_node *mc, int32_t val); -static const struct uaudio_terminal_node * - uaudio_mixer_get_input(const struct uaudio_terminal_node *iot, uint8_t index); +static void uaudio_mixer_ctl_set(struct uaudio_softc *sc, struct uaudio_mixer_node *mc, uint8_t chan, int32_t val); +static void uaudio_mixer_init(struct uaudio_softc *sc); +static uint8_t umidi_convert_to_usb(struct umidi_sub_chan *sub, uint8_t cn, uint8_t b); +static struct umidi_sub_chan *umidi_sub_by_fifo(struct usb2_fifo *fifo); +static void umidi_start_read(struct usb2_fifo *fifo); +static void umidi_stop_read(struct usb2_fifo *fifo); +static void umidi_start_write(struct usb2_fifo *fifo); +static void umidi_stop_write(struct usb2_fifo *fifo); +static int umidi_open(struct usb2_fifo *fifo, int fflags, struct thread *td); +static int umidi_ioctl(struct usb2_fifo *fifo, u_long cmd, void *data, int fflags, struct thread *td); +static void umidi_close(struct usb2_fifo *fifo, int fflags, struct thread *td); +static void umidi_init(device_t dev); +static int32_t umidi_probe(device_t dev); +static int32_t umidi_detach(device_t dev); -static const struct uaudio_terminal_node * -uaudio_mixer_get_output(const struct uaudio_terminal_node *iot, - uint8_t index); -static void -uaudio_mixer_find_inputs_sub(struct uaudio_terminal_node *root, - const uint8_t *p_id, uint8_t n_id, - struct uaudio_search_result *info); -static void -uaudio_mixer_find_outputs_sub(struct uaudio_terminal_node *root, uint8_t id, - uint8_t n_id, - struct uaudio_search_result *info); -static void -uaudio_mixer_fill_info(struct uaudio_softc *sc, struct usbd_device *udev, - void *desc); -static uint16_t -uaudio_mixer_get(struct usbd_device *udev, uint8_t what, - struct uaudio_mixer_node *mc); -static usbd_status_t - uaudio_set_speed(struct usbd_device *udev, uint8_t endpt, uint32_t speed); - -static int - uaudio_mixer_signext(uint8_t type, int val); - -static int - uaudio_mixer_bsd2value(struct uaudio_mixer_node *mc, int32_t val); - -static void -uaudio_mixer_ctl_set(struct uaudio_softc *sc, struct uaudio_mixer_node *mc, - uint8_t chan, int32_t val); -static void - uaudio_mixer_init(struct uaudio_softc *sc); - -static uint8_t - umidi_convert_to_usb(struct umidi_sub_chan *sub, uint8_t cn, uint8_t b); - -static struct umidi_sub_chan * - umidi_sub_by_cdev(struct usb_cdev *cdev); - -static void - umidi_start_read(struct usb_cdev *cdev); - -static void - umidi_stop_read(struct usb_cdev *cdev); - -static void - umidi_start_write(struct usb_cdev *cdev); - -static void - umidi_stop_write(struct usb_cdev *cdev); - -static int32_t -umidi_open(struct usb_cdev *cdev, int32_t fflags, - int32_t devtype, struct thread *td); - -static int32_t -umidi_ioctl(struct usb_cdev *cdev, u_long cmd, caddr_t data, - int32_t fflags, struct thread *td); -static void - umidi_init(device_t dev); - -static int32_t - umidi_probe(device_t dev); - -static int32_t - umidi_detach(device_t dev); - -static const struct usbd_config +static const struct usb2_config uaudio_cfg_record_full_speed[UAUDIO_NCHANBUFS] = { [0] = { .type = UE_ISOCHRONOUS, @@ -480,7 +403,7 @@ }, }; -static const struct usbd_config +static const struct usb2_config uaudio_cfg_record_high_speed[UAUDIO_NCHANBUFS] = { [0] = { .type = UE_ISOCHRONOUS, @@ -503,7 +426,7 @@ }, }; -static const struct usbd_config +static const struct usb2_config uaudio_cfg_play_full_speed[UAUDIO_NCHANBUFS] = { [0] = { .type = UE_ISOCHRONOUS, @@ -526,7 +449,7 @@ }, }; -static const struct usbd_config +static const struct usb2_config uaudio_cfg_play_high_speed[UAUDIO_NCHANBUFS] = { [0] = { .type = UE_ISOCHRONOUS, @@ -549,13 +472,13 @@ }, }; -static const struct usbd_config +static const struct usb2_config uaudio_mixer_config[1] = { [0] = { .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = (sizeof(usb_device_request_t) + 4), + .mh.bufsize = (sizeof(struct usb2_device_request) + 4), .mh.callback = &uaudio_mixer_write_cfg_callback, .mh.timeout = 1000, /* 1 second */ }, @@ -581,7 +504,7 @@ [0xF] = 1, /* bytes */ }; -static const struct usbd_config +static const struct usb2_config umidi_config[UMIDI_N_TRANSFER] = { [0] = { .type = UE_BULK, @@ -605,7 +528,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, .mh.callback = &umidi_write_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ @@ -616,7 +539,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, .mh.callback = &umidi_read_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ @@ -646,34 +569,29 @@ static int uaudio_probe(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); - usb_interface_descriptor_t *id; + struct usb2_attach_arg *uaa = device_get_ivars(dev); - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); - } - if (uaa->iface == NULL) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - id = usbd_get_interface_descriptor(uaa->iface); - /* trigger on the control interface */ - if ((id == NULL) || - (id->bInterfaceClass != UICLASS_AUDIO) || - (id->bInterfaceSubClass != UISUBCLASS_AUDIOCONTROL) || - (usbd_get_quirks(uaa->device)->uq_flags & UQ_BAD_AUDIO)) { - return (UMATCH_NONE); + if ((uaa->info.bInterfaceClass == UICLASS_AUDIO) && + (uaa->info.bInterfaceSubClass == UISUBCLASS_AUDIOCONTROL)) { + if (usb2_test_quirk(uaa, UQ_BAD_AUDIO)) + return (ENXIO); + else + return (0); } - return (UMATCH_IFACECLASS_IFACESUBCLASS); + return (ENXIO); } static int uaudio_attach(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); struct uaudio_softc *sc = device_get_softc(dev); - usb_interface_descriptor_t *id; + struct usb2_interface_descriptor *id; device_t child; if (sc == NULL) { @@ -682,20 +600,31 @@ sc->sc_play_chan.priv_sc = sc; sc->sc_rec_chan.priv_sc = sc; sc->sc_udev = uaa->device; - sc->sc_quirks = usbd_get_quirks(uaa->device)->uq_flags; + + if (usb2_test_quirk(uaa, UQ_AUDIO_SWAP_LR)) + sc->sc_uq_audio_swap_lr = 1; + + if (usb2_test_quirk(uaa, UQ_AU_INP_ASYNC)) + sc->sc_uq_au_inp_async = 1; + + if (usb2_test_quirk(uaa, UQ_AU_NO_XU)) + sc->sc_uq_au_no_xu = 1; + + if (usb2_test_quirk(uaa, UQ_BAD_ADC)) + sc->sc_uq_bad_adc = 1; umidi_init(dev); - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); - id = usbd_get_interface_descriptor(uaa->iface); + id = usb2_get_interface_descriptor(uaa->iface); uaudio_chan_fill_info(sc, uaa->device); uaudio_mixer_fill_info(sc, uaa->device, id); - sc->sc_mixer_iface_index = uaa->iface_index; - sc->sc_mixer_iface_no = id->bInterfaceNumber; + sc->sc_mixer_iface_index = uaa->info.bIfaceIndex; + sc->sc_mixer_iface_no = uaa->info.bIfaceNum; DPRINTF(0, "audio rev %d.%02x\n", sc->sc_audio_rev >> 8, @@ -782,7 +711,7 @@ } uaudio_mixer_init(sc); - if (sc->sc_quirks & UQ_AUDIO_SWAP_LR) { + if (sc->sc_uq_audio_swap_lr) { DPRINTF(0, "hardware has swapped left and right\n"); uaudio_pcm_setflags(dev, SD_F_PSWAPLR); } @@ -868,7 +797,7 @@ #ifdef USB_DEBUG static void -uaudio_chan_dump_ep_desc(const usb_endpoint_descriptor_audio_t *ed) +uaudio_chan_dump_ep_desc(const usb2_endpoint_descriptor_audio_t *ed) { if (ed) { DPRINTF(0, "endpoint=%p bLength=%d bDescriptorType=%d \n" @@ -886,18 +815,18 @@ #endif static void -uaudio_chan_fill_info_sub(struct uaudio_softc *sc, struct usbd_device *udev, +uaudio_chan_fill_info_sub(struct uaudio_softc *sc, struct usb2_device *udev, uint32_t rate, uint16_t fps, uint8_t channels, uint8_t bit_resolution) { - usb_descriptor_t *desc = NULL; - const struct usb_audio_streaming_interface_descriptor *asid = NULL; - const struct usb_audio_streaming_type1_descriptor *asf1d = NULL; - const struct usb_audio_streaming_endpoint_descriptor *sed = NULL; - const usb_endpoint_descriptor_audio_t *ed1 = NULL; - const usb_endpoint_descriptor_audio_t *ed2 = NULL; - usb_config_descriptor_t *cd = usbd_get_config_descriptor(udev); - usb_interface_descriptor_t *id; + struct usb2_descriptor *desc = NULL; + const struct usb2_audio_streaming_interface_descriptor *asid = NULL; + const struct usb2_audio_streaming_type1_descriptor *asf1d = NULL; + const struct usb2_audio_streaming_endpoint_descriptor *sed = NULL; + const usb2_endpoint_descriptor_audio_t *ed1 = NULL; + const usb2_endpoint_descriptor_audio_t *ed2 = NULL; + struct usb2_config_descriptor *cd = usb2_get_config_descriptor(udev); + struct usb2_interface_descriptor *id; const struct uaudio_format *p_fmt; struct uaudio_chan *chan; uint16_t curidx = 0xFFFF; @@ -913,7 +842,7 @@ uint8_t audio_if = 0; uint8_t sample_size; - while ((desc = usbd_desc_foreach(cd, desc))) { + while ((desc = usb2_desc_foreach(cd, desc))) { if ((desc->bDescriptorType == UDESC_INTERFACE) && (desc->bLength >= sizeof(*id))) { @@ -945,7 +874,7 @@ */ if ((sc->sc_midi_chan.valid == 0) && - usbd_get_iface(udev, curidx)) { + usb2_get_iface(udev, curidx)) { sc->sc_midi_chan.iface_index = curidx; sc->sc_midi_chan.iface_alt_index = alt_index; sc->sc_midi_chan.valid = 1; @@ -1028,7 +957,7 @@ ep_type = UE_GET_ISO_TYPE(ed1->bmAttributes); ep_sync = 0; - if ((sc->sc_quirks & UQ_AU_INP_ASYNC) && + if ((sc->sc_uq_au_inp_async) && (ep_dir == UE_DIR_IN) && (ep_type == UE_ISO_ADAPT)) { ep_type = UE_ISO_ASYNC; } @@ -1105,7 +1034,7 @@ &(sc->sc_rec_chan) : &(sc->sc_play_chan); - if ((chan->valid == 0) && usbd_get_iface(udev, curidx)) { + if ((chan->valid == 0) && usb2_get_iface(udev, curidx)) { chan->valid = 1; #ifdef USB_DEBUG @@ -1133,7 +1062,7 @@ chan->iface_index = curidx; chan->iface_alt_index = alt_index; - chan->usb_cfg = + chan->usb2_cfg = (ep_dir == UE_DIR_IN) ? ((fps == 1000) ? uaudio_cfg_record_full_speed : @@ -1167,11 +1096,11 @@ } static void -uaudio_chan_fill_info(struct uaudio_softc *sc, struct usbd_device *udev) +uaudio_chan_fill_info(struct uaudio_softc *sc, struct usb2_device *udev) { uint32_t rate = uaudio_default_rate; uint32_t z; - uint16_t fps = (usbd_get_speed(udev) == USB_SPEED_HIGH) ? 8000 : 1000; + uint16_t fps = (usb2_get_speed(udev) == USB_SPEED_HIGH) ? 8000 : 1000; uint8_t bits = uaudio_default_bits; uint8_t y; uint8_t channels = uaudio_default_channels; @@ -1206,7 +1135,7 @@ } static void -uaudio_chan_play_callback(struct usbd_xfer *xfer) +uaudio_chan_play_callback(struct usb2_xfer *xfer) { struct uaudio_chan *ch = xfer->priv_sc; uint32_t *p_len = xfer->frlengths; @@ -1214,8 +1143,8 @@ uint32_t total = (ch->bytes_per_frame * xfer->nframes); uint32_t offset; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: if (xfer->actlen < xfer->sumlen) { DPRINTF(0, "short transfer, " @@ -1223,7 +1152,7 @@ } chn_intr(ch->pcm_ch); - case USBD_ST_SETUP: + case USB_ST_SETUP: if (ch->bytes_per_frame > xfer->max_frame_size) { DPRINTF(0, "bytes per transfer, %d, " "exceeds maximum, %d!\n", @@ -1249,7 +1178,7 @@ if (n > total) { n = total; } - usbd_copy_in(xfer->frbuffers, offset, ch->cur, n); + usb2_copy_in(xfer->frbuffers, offset, ch->cur, n); total -= n; ch->cur += n; @@ -1260,11 +1189,11 @@ } } - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { + if (xfer->error == USB_ERR_CANCELLED) { return; } goto tr_transferred; @@ -1272,7 +1201,7 @@ } static void -uaudio_chan_record_callback(struct usbd_xfer *xfer) +uaudio_chan_record_callback(struct usb2_xfer *xfer) { struct uaudio_chan *ch = xfer->priv_sc; uint32_t *p_len = xfer->frlengths; @@ -1282,8 +1211,8 @@ uint32_t offset0; uint32_t offset1; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: if (xfer->actlen < total) { DPRINTF(0, "short transfer, " @@ -1305,7 +1234,7 @@ if (m > p_len[n]) { m = p_len[n]; } - usbd_copy_out(xfer->frbuffers, offset1, ch->cur, m); + usb2_copy_out(xfer->frbuffers, offset1, ch->cur, m); p_len[n] -= m; offset1 += m; @@ -1321,7 +1250,7 @@ chn_intr(ch->pcm_ch); - case USBD_ST_SETUP: + case USB_ST_SETUP: if (ch->bytes_per_frame > xfer->max_frame_size) { DPRINTF(0, "bytes per transfer, %d, " "exceeds maximum, %d!\n", @@ -1337,11 +1266,11 @@ DPRINTF(0, "no buffer!\n"); return; } - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { + if (xfer->error == USB_ERR_CANCELLED) { return; } goto tr_transferred; @@ -1357,7 +1286,7 @@ uint8_t endpoint; uint8_t iface_index; uint8_t alt_index; - usbd_status_t err; + usb2_error_t err; ch->buf = malloc(sc->sc_buffer_size, M_DEVBUF, M_WAITOK | M_ZERO); @@ -1405,13 +1334,13 @@ DPRINTF(0, "endpoint=0x%02x, speed=%d, iface=%d alt=%d\n", endpoint, ch->sample_rate, iface_index, alt_index); - err = usbd_set_alt_interface_index(sc->sc_udev, iface_index, alt_index); + err = usb2_set_alt_interface_index(sc->sc_udev, iface_index, alt_index); if (err) { DPRINTF(0, "setting of alternate index failed: %s!\n", - usbd_errstr(err)); + usb2_errstr(err)); goto error; } - USBD_SET_IFACE_NO_PROBE(sc->sc_udev, iface_index); + usb2_set_parent_iface(sc->sc_udev, iface_index, sc->sc_mixer_iface_index); /* * If just one sampling rate is supported, @@ -1427,8 +1356,8 @@ DPRINTF(0, "setting of sample rate failed! (continuing anyway)\n"); } } - if (usbd_transfer_setup(sc->sc_udev, &iface_index, ch->xfer, - ch->usb_cfg, UAUDIO_NCHANBUFS, ch, ch->pcm_mtx)) { + if (usb2_transfer_setup(sc->sc_udev, &iface_index, ch->xfer, + ch->usb2_cfg, UAUDIO_NCHANBUFS, ch, ch->pcm_mtx)) { DPRINTF(0, "could not allocate USB transfers!\n"); goto error; } @@ -1446,7 +1375,7 @@ free(ch->buf, M_DEVBUF); ch->buf = NULL; } - usbd_transfer_unsetup(ch->xfer, UAUDIO_NCHANBUFS); + usb2_transfer_unsetup(ch->xfer, UAUDIO_NCHANBUFS); ch->valid = 0; @@ -1533,10 +1462,10 @@ #error "please update code" #endif if (ch->xfer[0]) { - usbd_transfer_start(ch->xfer[0]); + usb2_transfer_start(ch->xfer[0]); } if (ch->xfer[1]) { - usbd_transfer_start(ch->xfer[1]); + usb2_transfer_start(ch->xfer[1]); } return (0); } @@ -1547,8 +1476,8 @@ #if (UAUDIO_NCHANBUFS != 2) #error "please update code" #endif - usbd_transfer_stop(ch->xfer[0]); - usbd_transfer_stop(ch->xfer[1]); + usb2_transfer_stop(ch->xfer[0]); + usb2_transfer_stop(ch->xfer[1]); return (0); } @@ -1639,7 +1568,7 @@ const struct uaudio_terminal_node *iot, int id) { #ifdef USB_DEBUG - const struct usb_audio_input_terminal *d = iot[id].u.it; + const struct usb2_audio_input_terminal *d = iot[id].u.it; DPRINTF(2, "bTerminalId=%d wTerminalType=0x%04x " "bAssocTerminal=%d bNrChannels=%d wChannelConfig=%d " @@ -1656,7 +1585,7 @@ const struct uaudio_terminal_node *iot, int id) { #ifdef USB_DEBUG - const struct usb_audio_output_terminal *d = iot[id].u.ot; + const struct usb2_audio_output_terminal *d = iot[id].u.ot; DPRINTF(2, "bTerminalId=%d wTerminalType=0x%04x " "bAssocTerminal=%d bSourceId=%d iTerminal=%d\n", @@ -1672,8 +1601,8 @@ { struct uaudio_mixer_node mix; - const struct usb_audio_mixer_unit_0 *d0 = iot[id].u.mu; - const struct usb_audio_mixer_unit_1 *d1; + const struct usb2_audio_mixer_unit_0 *d0 = iot[id].u.mu; + const struct usb2_audio_mixer_unit_1 *d1; uint32_t bno; /* bit number */ uint32_t p; /* bit number accumulator */ @@ -1756,7 +1685,7 @@ uaudio_mixer_add_selector(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id) { - const struct usb_audio_selector_unit *d = iot[id].u.su; + const struct usb2_audio_selector_unit *d = iot[id].u.su; struct uaudio_mixer_node mix; struct uaudio_mixer_node dummy; uint16_t i; @@ -1797,7 +1726,7 @@ } static uint32_t -uaudio_mixer_feature_get_bmaControls(const struct usb_audio_feature_unit *d, +uaudio_mixer_feature_get_bmaControls(const struct usb2_audio_feature_unit *d, uint8_t index) { uint32_t temp = 0; @@ -1822,7 +1751,7 @@ uaudio_mixer_add_feature(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id) { - const struct usb_audio_feature_unit *d = iot[id].u.fu; + const struct usb2_audio_feature_unit *d = iot[id].u.fu; struct uaudio_mixer_node mix; uint32_t fumask; uint32_t mmask; @@ -1949,10 +1878,10 @@ uaudio_mixer_add_processing_updown(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id) { - const struct usb_audio_processing_unit_0 *d0 = iot[id].u.pu; - const struct usb_audio_processing_unit_1 *d1 = + const struct usb2_audio_processing_unit_0 *d0 = iot[id].u.pu; + const struct usb2_audio_processing_unit_1 *d1 = (const void *)(d0->baSourceId + d0->bNrInPins); - const struct usb_audio_processing_unit_updown *ud = + const struct usb2_audio_processing_unit_updown *ud = (const void *)(d1->bmControls + d1->bControlSize); struct uaudio_mixer_node mix; uint8_t i; @@ -1992,8 +1921,8 @@ uaudio_mixer_add_processing(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id) { - const struct usb_audio_processing_unit_0 *d0 = iot[id].u.pu; - const struct usb_audio_processing_unit_1 *d1 = + const struct usb2_audio_processing_unit_0 *d0 = iot[id].u.pu; + const struct usb2_audio_processing_unit_1 *d1 = (const void *)(d0->baSourceId + d0->bNrInPins); struct uaudio_mixer_node mix; uint16_t ptype; @@ -2038,15 +1967,15 @@ uaudio_mixer_add_extension(struct uaudio_softc *sc, const struct uaudio_terminal_node *iot, int id) { - const struct usb_audio_extension_unit_0 *d0 = iot[id].u.eu; - const struct usb_audio_extension_unit_1 *d1 = + const struct usb2_audio_extension_unit_0 *d0 = iot[id].u.eu; + const struct usb2_audio_extension_unit_1 *d1 = (const void *)(d0->baSourceId + d0->bNrInPins); struct uaudio_mixer_node mix; DPRINTF(2, "bUnitId=%d bNrInPins=%d\n", d0->bUnitId, d0->bNrInPins); - if (sc->sc_quirks & UQ_AU_NO_XU) { + if (sc->sc_uq_au_no_xu) { return; } if (d1->bControlSize == 0) { @@ -2070,19 +1999,19 @@ static const void * uaudio_mixer_verify_desc(const void *arg, uint32_t len) { - const struct usb_audio_mixer_unit_1 *d1; - const struct usb_audio_extension_unit_1 *e1; - const struct usb_audio_processing_unit_1 *u1; + const struct usb2_audio_mixer_unit_1 *d1; + const struct usb2_audio_extension_unit_1 *e1; + const struct usb2_audio_processing_unit_1 *u1; union { - const usb_descriptor_t *desc; - const struct usb_audio_input_terminal *it; - const struct usb_audio_output_terminal *ot; - const struct usb_audio_mixer_unit_0 *mu; - const struct usb_audio_selector_unit *su; - const struct usb_audio_feature_unit *fu; - const struct usb_audio_processing_unit_0 *pu; - const struct usb_audio_extension_unit_0 *eu; + const struct usb2_descriptor *desc; + const struct usb2_audio_input_terminal *it; + const struct usb2_audio_output_terminal *ot; + const struct usb2_audio_mixer_unit_0 *mu; + const struct usb2_audio_selector_unit *su; + const struct usb2_audio_feature_unit *fu; + const struct usb2_audio_processing_unit_0 *pu; + const struct usb2_audio_extension_unit_0 *eu; } u; u.desc = arg; @@ -2206,7 +2135,7 @@ }; uint16_t cc; uint8_t i; - const struct usb_audio_cluster cl = uaudio_mixer_get_cluster(id, iot); + const struct usb2_audio_cluster cl = uaudio_mixer_get_cluster(id, iot); >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Tue Jul 1 23:36:53 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 23:36:56 2008 Subject: PERFORCE change 144450 for review Message-ID: <200807012336.m61Narvo002646@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144450 Change 144450 by hselasky@hselasky_laptop001 on 2008/07/01 23:36:42 Workaround panic at USB sound device detach during playback! There might be a deadlock situation here if the USB sound device is located on the same HUB like the mouse and keyboard, and the HUB is detached, but else this works fine and is better than nothing. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#3 (text+ko) ==== @@ -661,11 +661,6 @@ device_printf(dev, "No midi sequencer\n"); } - if (sc->sc_play_chan.valid || - sc->sc_rec_chan.valid) { - device_printf(dev, "WARNING: Unplugging the device while " - "it is in use will cause a panic!\n"); - } DPRINTF(0, "doing child attach\n"); /* attach the children */ @@ -760,6 +755,7 @@ struct uaudio_softc *sc = device_get_softc(device_get_parent(dev)); int error = 0; +repeat: if (sc->sc_pcm_registered) { error = pcm_unregister(dev); } else { @@ -769,8 +765,11 @@ } if (error) { - panic("Please don't detach your sound device " - "while it is in use. This is not supported yet!\n"); + device_printf(dev, "Waiting for sound application to exit!\n"); + mtx_lock(&Giant); + usb2_pause_mtx(&Giant, 2000); + mtx_unlock(&Giant); + goto repeat; /* try again */ } return (0); /* success */ } From hselasky at FreeBSD.org Tue Jul 1 23:43:00 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Tue Jul 1 23:43:02 2008 Subject: PERFORCE change 144451 for review Message-ID: <200807012342.m61NgxUU003398@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144451 Change 144451 by hselasky@hselasky_laptop001 on 2008/07/01 23:42:40 - Fix some synchronisation issues. - Remove a debug "usb2_pause_mtx()". - Add code to automatically decide if IOCTLs should be merged or split when two USB FIFOs are opened in Read+Write mode. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_atmelarm.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_pci.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2_pci.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_bus.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci_pccard.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#7 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#5 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#7 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#8 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#4 (text+ko) ==== @@ -210,7 +210,6 @@ goto error; } device_set_ivars(sc->sc_dci.sc_bus.bdev, &(sc->sc_dci.sc_bus)); - device_set_softc(sc->sc_dci.sc_bus.bdev, &(sc->sc_dci.sc_bus)); err = usb2_config_td_setup(&(sc->sc_dci.sc_config_td), sc, &(sc->sc_dci.sc_bus.mtx), NULL, 0, 4); ==== //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#4 (text+ko) ==== @@ -287,7 +287,6 @@ goto error; } device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); - device_set_softc(sc->sc_bus.bdev, &sc->sc_bus); /* * ehci_pci_match will never return NULL if ehci_pci_probe ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_atmelarm.c#4 (text) ==== @@ -108,7 +108,6 @@ goto error; } device_set_ivars(sc->sc_ohci.sc_bus.bdev, &(sc->sc_ohci.sc_bus)); - device_set_softc(sc->sc_ohci.sc_bus.bdev, &(sc->sc_ohci.sc_bus)); strlcpy(sc->sc_ohci.sc_vendor, "Atmel", sizeof(sc->sc_ohci.sc_vendor)); ==== //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_pci.c#4 (text+ko) ==== @@ -235,7 +235,6 @@ goto error; } device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); - device_set_softc(sc->sc_bus.bdev, &sc->sc_bus); /* * ohci_pci_match will never return NULL if ohci_pci_probe ==== //depot/projects/usb/src/sys/dev/usb2/controller/uhci2_pci.c#4 (text+ko) ==== @@ -288,7 +288,6 @@ goto error; } device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); - device_set_softc(sc->sc_bus.bdev, &sc->sc_bus); /* * uhci_pci_match must never return NULL if uhci_pci_probe ==== //depot/projects/usb/src/sys/dev/usb2/controller/usb2_bus.h#2 (text+ko) ==== @@ -75,7 +75,6 @@ uint8_t usbrev; /* USB revision. See "USB_REV_XXX". */ uint8_t devices_max; /* maximum number of USB devices */ - uint8_t ready; /* set when USB BUS is ready */ uint8_t do_probe; /* set if USB BUS should be re-probed */ union { ==== //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#4 (text+ko) ==== @@ -50,7 +50,6 @@ static void usb2_attach_sub(device_t dev, struct usb2_bus *bus); static void usb2_post_init(void *arg); -static void usb2_bus_init(void *arg); static void usb2_bus_mem_flush_all_cb(struct usb2_bus *bus, struct usb2_page_cache *pc, struct usb2_page *pg, uint32_t size, uint32_t align); static void usb2_bus_mem_alloc_all_cb(struct usb2_bus *bus, struct usb2_page_cache *pc, struct usb2_page *pg, uint32_t size, uint32_t align); static void usb2_bus_mem_free_all_cb(struct usb2_bus *bus, struct usb2_page_cache *pc, struct usb2_page *pg, uint32_t size, uint32_t align); @@ -112,19 +111,20 @@ static int usb2_attach(device_t dev) { - struct usb2_bus *bus = device_get_softc(dev); + struct usb2_bus *bus = device_get_ivars(dev); DPRINTF(0, "\n"); - mtx_lock(&Giant); + if (bus == NULL) { + DPRINTF(-1, "USB device has no ivars\n"); + return (ENXIO); + } if (usb2_post_init_called) { mtx_lock(&Giant); usb2_attach_sub(dev, bus); mtx_unlock(&Giant); usb2_needs_explore(bus, 1); } - mtx_unlock(&Giant); - return (0); /* return success */ } @@ -138,6 +138,10 @@ DPRINTF(0, "\n"); + if (bus == NULL) { + /* was never setup properly */ + return (0); + } /* Let the USB explore process detach all devices. */ mtx_lock(&(bus->mtx)); @@ -156,9 +160,6 @@ usb2_proc_unsetup(&(bus->explore_proc)); - /* clear the softc */ - device_set_softc(dev, NULL); - return (0); } @@ -218,8 +219,10 @@ bus = ((struct usb2_bus_msg *)pm)->bus; udev = bus->devices[USB_ROOT_HUB_ADDR]; dev = bus->bdev; + /* clear the softc */ + device_set_softc(dev, NULL); + /* clear bdev variable */ bus->bdev = NULL; - bus->ready = 0; mtx_unlock(&(bus->mtx)); mtx_lock(&Giant); @@ -231,7 +234,9 @@ * Free USB Root device, but not any sub-devices, hence they * are freed by the caller of this function: */ + sx_xlock(udev->default_sx + 1); usb2_detach_device(udev, USB_IFACE_INDEX_ANY, 0); + sx_unlock(udev->default_sx + 1); usb2_free_device(udev); mtx_unlock(&Giant); @@ -320,8 +325,8 @@ &(bus->mtx), USB_PRI_MED)) { printf("WARNING: Creation of USB explore process failed.\n"); } - /* set ready flag */ - bus->ready = 1; + /* set softc - we are ready */ + device_set_softc(dev, bus); return; } @@ -342,16 +347,20 @@ mtx_lock(&Giant); + usb2_devclass_ptr = devclass_find("usbus"); + dc = usb2_devclass_ptr; if (dc) { max = devclass_get_maxunit(dc) + 1; for (n = 0; n != max; n++) { dev = devclass_get_device(dc, n); if (dev && device_is_attached(dev)) { - bus = device_get_softc(dev); - mtx_lock(&Giant); - usb2_attach_sub(dev, bus); - mtx_unlock(&Giant); + bus = device_get_ivars(dev); + if (bus) { + mtx_lock(&Giant); + usb2_attach_sub(dev, bus); + mtx_unlock(&Giant); + } } } } else { @@ -369,21 +378,6 @@ } SYSINIT(usb2_post_init, SI_SUB_KICK_SCHEDULER, SI_ORDER_ANY, usb2_post_init, NULL); - -/*------------------------------------------------------------------------* - * usb2_bus_init - * - * This function is called before the USB system is started. - *------------------------------------------------------------------------*/ -static void -usb2_bus_init(void *arg) -{ - /* register our devclass */ - usb2_devclass_ptr = devclass_find("usbus"); - return; -} - -SYSINIT(usb2_bus_init, SI_SUB_DRIVERS, SI_ORDER_FIRST, usb2_bus_init, NULL); SYSUNINIT(usb2_bus_unload, SI_SUB_KLD, SI_ORDER_ANY, usb2_bus_unload, NULL); /*------------------------------------------------------------------------* ==== //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci_pccard.c#4 (text+ko) ==== @@ -189,7 +189,6 @@ goto error; } device_set_ivars(sc->sc_bus.bdev, &(sc->sc_bus)); - device_set_softc(sc->sc_bus.bdev, &(sc->sc_bus)); err = usb2_config_td_setup(&(sc->sc_config_td), sc, &(sc->sc_bus.mtx), NULL, 0, 4); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#7 (text+ko) ==== @@ -314,10 +314,6 @@ DPRINTF(1, "no bus\n"); goto error; } - if (ploc->bus->ready == 0) { - DPRINTF(1, "not ready\n"); - goto error; - } if (ploc->dev_index >= ploc->bus->devices_max) { DPRINTF(1, "invalid dev index\n"); goto error; @@ -941,7 +937,11 @@ return; } if (usb2_last_devloc != (uint32_t)(0 - 1)) { - DPRINTF(-1, "Clone race!\n"); + /* + * XXX can we assume that the clone and open operation is + * atomic ? + */ + DPRINTF(1, "Clone race!\n"); } usb2_last_devloc = usb2_path_convert(name + sizeof(USB_DEVICE_NAME) - 1); @@ -1083,7 +1083,10 @@ { struct usb2_location loc; int fflags; + int err_rx; + int err_tx; int err; + uint8_t is_common = 0; err = usb2_ref_device(fp, &loc, 0);; if (err) { @@ -1093,19 +1096,49 @@ DPRINTF(1, "fflags=%u, cmd=0x%lx\n", fflags, cmd); - if ((fflags & FREAD) && (err == 0)) { - err = usb2_ioctl_f_sub(loc.rxfifo, cmd, addr, td); - if (err) { - err = (loc.rxfifo->methods->f_ioctl) ( - loc.rxfifo, cmd, addr, fflags & ~FWRITE, td); + if (fflags & FREAD) { + if (fflags & FWRITE) { + /* + * Automagically figure out if we have an IOCTL that + * should not be replicated to both FIFOs: + */ + if ((loc.rxfifo->priv_sc0 == + loc.txfifo->priv_sc0) && + (loc.rxfifo->priv_sc1 == + loc.txfifo->priv_sc1) && + (loc.rxfifo->methods == + loc.txfifo->methods)) { + is_common = 1; + } + } + err_rx = usb2_ioctl_f_sub(loc.rxfifo, cmd, addr, td); + if (err_rx == ENOTTY) { + err_rx = (loc.rxfifo->methods->f_ioctl) ( + loc.rxfifo, cmd, addr, + is_common ? fflags : (fflags & ~FWRITE), td); } + } else { + err_rx = 0; } - if ((fflags & FWRITE) && (err == 0)) { - err = usb2_ioctl_f_sub(loc.txfifo, cmd, addr, td); - if (err) { - err = (loc.txfifo->methods->f_ioctl) ( - loc.txfifo, cmd, addr, fflags & ~FREAD, td); + if (fflags & FWRITE) { + err_tx = usb2_ioctl_f_sub(loc.txfifo, cmd, addr, td); + if (err_tx == ENOTTY) { + if (is_common) + err_tx = 0; /* already handled this IOCTL */ + else + err_tx = (loc.txfifo->methods->f_ioctl) ( + loc.txfifo, cmd, addr, fflags & ~FREAD, td); } + } else { + err_tx = 0; + } + + if (err_rx) { + err = err_rx; + } else if (err_tx) { + err = err_tx; + } else { + err = 0; /* no error */ } usb2_unref_device(&loc); return (err); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#5 (text+ko) ==== @@ -571,9 +571,6 @@ DPRINTF(0, "characteristics=0x%04x\n", UGETW(hd.wHubCharacteristics)); } else { - - usb2_pause_mtx(&Giant, 100); - err = usb2_req_get_device_status (udev, &Giant, &ds); if (err) { ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#7 (text+ko) ==== @@ -1282,8 +1282,8 @@ { DPRINTF(0, "\n"); - if (bus->ready == 0) { - DPRINTF(0, "BUS is not ready\n"); + if (bus == NULL) { + DPRINTF(0, "No bus pointer!\n"); return; } mtx_lock(&(bus->mtx)); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#8 (text+ko) ==== @@ -1885,6 +1885,14 @@ if (pq->curr == xfer) { /* start the next USB transfer, if any */ usb2_command_wrapper(pq, NULL); + + if (pq->curr || TAILQ_FIRST(&(pq->head))) { + /* there is another USB transfer waiting */ + } else { + /* this is the last USB transfer */ + /* clear isochronous sync flag */ + xfer->pipe->is_synced = 0; + } } } /* keep some statistics */ @@ -1896,13 +1904,6 @@ [xfer->pipe->edesc->bmAttributes & UE_XFERTYPE]++; } - /* - * if this is the last USB transfer on the PIPE queue we are no - * longer synced: - */ - if (TAILQ_FIRST(&(xfer->pipe->pipe_q.head)) == NULL) { - xfer->pipe->is_synced = 0; - } /* call the USB transfer callback */ usb2_command_wrapper(&(xfer->usb2_root->done_q), xfer); return; From peter at FreeBSD.org Wed Jul 2 01:12:37 2008 From: peter at FreeBSD.org (Peter Wemm) Date: Wed Jul 2 01:12:41 2008 Subject: PERFORCE change 144452 for review Message-ID: <200807020112.m621CVOM023449@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144452 Change 144452 by peter@peter_daintree on 2008/07/02 01:12:05 IFC @144449 Affected files ... .. //depot/projects/bike_sched/sys/Makefile#5 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/bpf_jit_machdep.c#2 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/bpf_jit_machdep.h#2 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/exception.S#4 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/genassym.c#4 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/identcpu.c#5 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/local_apic.c#5 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/machdep.c#9 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/mem.c#3 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/minidump_machdep.c#4 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/pmap.c#11 integrate .. //depot/projects/bike_sched/sys/amd64/amd64/trap.c#6 integrate .. //depot/projects/bike_sched/sys/amd64/conf/GENERIC#8 integrate .. //depot/projects/bike_sched/sys/amd64/conf/NOTES#8 integrate .. //depot/projects/bike_sched/sys/amd64/include/clock.h#6 integrate .. //depot/projects/bike_sched/sys/amd64/include/iodev.h#2 integrate .. //depot/projects/bike_sched/sys/amd64/include/memdev.h#2 integrate .. //depot/projects/bike_sched/sys/amd64/include/pcpu.h#3 integrate .. //depot/projects/bike_sched/sys/amd64/include/pmap.h#4 integrate .. //depot/projects/bike_sched/sys/amd64/include/pmc_mdep.h#3 integrate .. //depot/projects/bike_sched/sys/amd64/include/stack.h#2 integrate .. //depot/projects/bike_sched/sys/amd64/include/vmparam.h#4 integrate .. //depot/projects/bike_sched/sys/amd64/isa/clock.c#7 integrate .. //depot/projects/bike_sched/sys/amd64/linux32/linux32_dummy.c#5 integrate .. //depot/projects/bike_sched/sys/amd64/linux32/linux32_proto.h#7 integrate .. //depot/projects/bike_sched/sys/amd64/linux32/linux32_syscall.h#7 integrate .. //depot/projects/bike_sched/sys/amd64/linux32/linux32_sysent.c#7 integrate .. //depot/projects/bike_sched/sys/amd64/linux32/syscalls.master#7 integrate .. //depot/projects/bike_sched/sys/arm/arm/identcpu.c#3 integrate .. //depot/projects/bike_sched/sys/arm/arm/intr.c#5 integrate .. //depot/projects/bike_sched/sys/arm/arm/machdep.c#5 integrate .. //depot/projects/bike_sched/sys/arm/arm/pmap.c#6 integrate .. //depot/projects/bike_sched/sys/arm/at91/at91.c#4 integrate .. //depot/projects/bike_sched/sys/arm/at91/at91_twi.c#3 integrate .. //depot/projects/bike_sched/sys/arm/at91/if_ate.c#5 integrate .. //depot/projects/bike_sched/sys/arm/at91/uart_dev_at91usart.c#6 integrate .. //depot/projects/bike_sched/sys/arm/conf/AVILA#6 integrate .. //depot/projects/bike_sched/sys/arm/conf/BWCT#4 integrate .. //depot/projects/bike_sched/sys/arm/conf/CRB#4 integrate .. //depot/projects/bike_sched/sys/arm/conf/EP80219#4 integrate .. //depot/projects/bike_sched/sys/arm/conf/GUMSTIX#1 branch .. //depot/projects/bike_sched/sys/arm/conf/GUMSTIX.hints#1 branch .. //depot/projects/bike_sched/sys/arm/conf/HL200#4 integrate .. //depot/projects/bike_sched/sys/arm/conf/IQ31244#6 integrate .. //depot/projects/bike_sched/sys/arm/conf/KB920X#7 integrate .. //depot/projects/bike_sched/sys/arm/conf/SIMICS#6 integrate .. //depot/projects/bike_sched/sys/arm/conf/SKYEYE#6 integrate .. //depot/projects/bike_sched/sys/arm/include/intr.h#3 integrate .. //depot/projects/bike_sched/sys/arm/include/memdev.h#2 integrate .. //depot/projects/bike_sched/sys/arm/sa11x0/sa11x0_ost.c#3 integrate .. //depot/projects/bike_sched/sys/arm/xscale/i8134x/crb_machdep.c#4 integrate .. //depot/projects/bike_sched/sys/arm/xscale/i8134x/i81342_pci.c#2 integrate .. //depot/projects/bike_sched/sys/arm/xscale/pxa/files.pxa#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/if_smc_smi.c#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/pxa_gpio.c#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/pxa_icu.c#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/pxa_machdep.c#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/pxa_obio.c#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/pxa_smi.c#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/pxa_space.c#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/pxa_timer.c#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/pxareg.h#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/pxavar.h#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/std.pxa#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/uart_bus_pxa.c#1 branch .. //depot/projects/bike_sched/sys/arm/xscale/pxa/uart_cpu_pxa.c#1 branch .. //depot/projects/bike_sched/sys/boot/Makefile.inc#1 branch .. //depot/projects/bike_sched/sys/boot/arm/Makefile.inc#1 branch .. //depot/projects/bike_sched/sys/boot/arm/at91/Makefile.inc#3 integrate .. //depot/projects/bike_sched/sys/boot/common/ufsread.c#3 integrate .. //depot/projects/bike_sched/sys/boot/efi/Makefile.inc#2 integrate .. //depot/projects/bike_sched/sys/boot/forth/loader.conf#5 integrate .. //depot/projects/bike_sched/sys/boot/i386/Makefile.inc#3 integrate .. //depot/projects/bike_sched/sys/boot/i386/boot2/boot2.c#4 integrate .. //depot/projects/bike_sched/sys/boot/i386/libi386/biossmap.c#3 integrate .. //depot/projects/bike_sched/sys/boot/i386/libi386/time.c#2 integrate .. //depot/projects/bike_sched/sys/boot/i386/loader/Makefile#3 integrate .. //depot/projects/bike_sched/sys/boot/ia64/Makefile.inc#2 integrate .. //depot/projects/bike_sched/sys/boot/ia64/common/Makefile#2 integrate .. //depot/projects/bike_sched/sys/boot/ia64/efi/Makefile#3 integrate .. //depot/projects/bike_sched/sys/boot/ia64/ski/Makefile#3 integrate .. //depot/projects/bike_sched/sys/boot/ofw/Makefile.inc#1 branch .. //depot/projects/bike_sched/sys/boot/pc98/Makefile.inc#3 integrate .. //depot/projects/bike_sched/sys/boot/pc98/boot2/Makefile#2 integrate .. //depot/projects/bike_sched/sys/boot/pc98/loader/Makefile#3 integrate .. //depot/projects/bike_sched/sys/boot/powerpc/Makefile.inc#1 branch .. //depot/projects/bike_sched/sys/boot/powerpc/ofw/Makefile#2 integrate .. //depot/projects/bike_sched/sys/boot/sparc64/Makefile.inc#2 integrate .. //depot/projects/bike_sched/sys/boot/sparc64/loader/Makefile#2 integrate .. //depot/projects/bike_sched/sys/boot/uboot/Makefile.inc#1 branch .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/kern/opensolaris.c#1 branch .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c#1 branch .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/kern/opensolaris_string.c#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/machine/endian.h#2 delete .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/rpc/xdr.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/acl.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/atomic.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/bitmap.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/byteorder.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/callb.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/cmn_err.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/cpupart.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/cpuvar.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/cpuvar_defs.h#1 branch .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/cyclic.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/cyclic_impl.h#1 branch .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/dkio.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/feature_tests.h#1 branch .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/kmem.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/lock.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/mntent.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/objfs.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/pcpu.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/sema.h#1 branch .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/sysmacros.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/taskq.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/compat/opensolaris/sys/taskq_impl.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/ctf/ctf_mod.c#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/ctf/ctf_subr.c#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/dtrace/lockstat.c#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/dtrace/profile.c#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/dtrace/sdt_subr.c#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/dtrace/systrace.c#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c#2 integrate .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c#2 integrate .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#2 integrate .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#3 integrate .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/cmn_err.h#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/cpupart.h#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/cpuvar.h#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/ctf.h#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/ctf_api.h#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/debug.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap.h#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h#2 integrate .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/sdt.h#2 delete .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/common/sys/vmem.h#2 delete .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/intel/sys/fasttrap_isa.h#1 branch .. //depot/projects/bike_sched/sys/cddl/contrib/opensolaris/uts/sparc/sys/fasttrap_isa.h#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/cyclic/amd64/cyclic_machdep.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/cyclic/cyclic.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/cyclic/cyclic_test.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/cyclic/i386/cyclic_machdep.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtmalloc/dtmalloc.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/amd64/dis_tables.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/amd64/dis_tables.h#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/amd64/dtrace_asm.S#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/amd64/dtrace_isa.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/amd64/dtrace_subr.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/amd64/instr_size.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_anon.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_cddl.h#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_clone.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_debug.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_hacks.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_ioctl.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_load.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_modevent.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_sysctl.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_test.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_unload.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/dtrace_vtime.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/i386/dis_tables.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/i386/dis_tables.h#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/i386/dtrace_asm.S#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/i386/dtrace_isa.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/i386/dtrace_subr.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/dtrace/i386/instr_size.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/fbt/fbt.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/profile/profile.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/prototype.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/sdt/sdt.c#1 branch .. //depot/projects/bike_sched/sys/cddl/dev/systrace/systrace.c#1 branch .. //depot/projects/bike_sched/sys/compat/linux/linux_emul.c#2 integrate .. //depot/projects/bike_sched/sys/compat/linux/linux_emul.h#2 integrate .. //depot/projects/bike_sched/sys/compat/linux/linux_file.c#7 integrate .. //depot/projects/bike_sched/sys/compat/linux/linux_futex.c#4 integrate .. //depot/projects/bike_sched/sys/compat/linux/linux_futex.h#3 integrate .. //depot/projects/bike_sched/sys/compat/linux/linux_mib.c#3 integrate .. //depot/projects/bike_sched/sys/compat/linux/linux_misc.c#8 integrate .. //depot/projects/bike_sched/sys/compat/linux/linux_stats.c#5 integrate .. //depot/projects/bike_sched/sys/compat/linux/linux_util.c#5 integrate .. //depot/projects/bike_sched/sys/compat/ndis/subr_ndis.c#5 integrate .. //depot/projects/bike_sched/sys/compat/ndis/subr_ntoskrnl.c#4 integrate .. //depot/projects/bike_sched/sys/compat/pecoff/imgact_pecoff.c#5 delete .. //depot/projects/bike_sched/sys/compat/pecoff/imgact_pecoff.h#2 delete .. //depot/projects/bike_sched/sys/compat/svr4/svr4_misc.c#6 integrate .. //depot/projects/bike_sched/sys/conf/Makefile.amd64#4 integrate .. //depot/projects/bike_sched/sys/conf/NOTES#9 integrate .. //depot/projects/bike_sched/sys/conf/files#12 integrate .. //depot/projects/bike_sched/sys/conf/files.amd64#6 integrate .. //depot/projects/bike_sched/sys/conf/files.i386#6 integrate .. //depot/projects/bike_sched/sys/conf/files.pc98#5 integrate .. //depot/projects/bike_sched/sys/conf/files.powerpc#5 integrate .. //depot/projects/bike_sched/sys/conf/files.sparc64#4 integrate .. //depot/projects/bike_sched/sys/conf/files.sun4v#3 integrate .. //depot/projects/bike_sched/sys/conf/kern.mk#4 integrate .. //depot/projects/bike_sched/sys/conf/kern.post.mk#5 integrate .. //depot/projects/bike_sched/sys/conf/kern.pre.mk#5 integrate .. //depot/projects/bike_sched/sys/conf/ldscript.mips#2 integrate .. //depot/projects/bike_sched/sys/conf/ldscript.mips.cfe#2 integrate .. //depot/projects/bike_sched/sys/conf/newvers.sh#3 integrate .. //depot/projects/bike_sched/sys/conf/options#9 integrate .. //depot/projects/bike_sched/sys/conf/options.amd64#4 integrate .. //depot/projects/bike_sched/sys/conf/options.arm#4 integrate .. //depot/projects/bike_sched/sys/conf/options.i386#4 integrate .. //depot/projects/bike_sched/sys/conf/options.pc98#4 integrate .. //depot/projects/bike_sched/sys/contrib/dev/iwn/LICENSE#1 branch .. //depot/projects/bike_sched/sys/contrib/dev/iwn/iwlwifi-4965-4.44.17.fw.uu#1 branch .. //depot/projects/bike_sched/sys/contrib/dev/ral/LICENSE#1 branch .. //depot/projects/bike_sched/sys/contrib/dev/ral/Makefile#1 branch .. //depot/projects/bike_sched/sys/contrib/dev/ral/rt2561.fw.uu#1 branch .. //depot/projects/bike_sched/sys/contrib/dev/ral/rt2561s.fw.uu#1 branch .. //depot/projects/bike_sched/sys/contrib/dev/ral/rt2661.fw.uu#1 branch .. //depot/projects/bike_sched/sys/contrib/dev/ral/rt2661_ucode.h#1 branch .. //depot/projects/bike_sched/sys/contrib/dev/ral/rt2860.fw.uu#1 branch .. //depot/projects/bike_sched/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#3 integrate .. //depot/projects/bike_sched/sys/contrib/pf/net/pf.c#4 integrate .. //depot/projects/bike_sched/sys/contrib/pf/net/pf_ioctl.c#4 integrate .. //depot/projects/bike_sched/sys/contrib/rdma/core_priv.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_addr.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_cache.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_cm.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_fmr_pool.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_mad.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_marshall.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_pack.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_sa.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_smi.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_umem.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_user_cm.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_user_mad.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_user_sa.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_user_verbs.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/ib_verbs.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/iw_cm.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/krping/getopt.c#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/krping/getopt.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/krping/krping.c#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/krping/krping.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/krping/krping_dev.c#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/rdma_addr.c#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/rdma_cache.c#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/rdma_cm.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/rdma_cm_ib.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/rdma_cma.c#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/rdma_device.c#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/rdma_iwcm.c#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/rdma_user_cm.h#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/rdma_verbs.c#1 branch .. //depot/projects/bike_sched/sys/contrib/rdma/types.h#1 branch .. //depot/projects/bike_sched/sys/ddb/db_capture.c#2 integrate .. //depot/projects/bike_sched/sys/ddb/db_ps.c#6 integrate .. //depot/projects/bike_sched/sys/dev/aac/aac.c#8 integrate .. //depot/projects/bike_sched/sys/dev/aac/aac_pci.c#6 integrate .. //depot/projects/bike_sched/sys/dev/acpi_support/acpi_asus.c#4 integrate .. //depot/projects/bike_sched/sys/dev/acpi_support/acpi_ibm.c#4 integrate .. //depot/projects/bike_sched/sys/dev/acpi_support/acpi_sony.c#3 integrate .. //depot/projects/bike_sched/sys/dev/acpica/acpi_thermal.c#5 integrate .. //depot/projects/bike_sched/sys/dev/age/if_age.c#1 branch .. //depot/projects/bike_sched/sys/dev/age/if_agereg.h#1 branch .. //depot/projects/bike_sched/sys/dev/age/if_agevar.h#1 branch .. //depot/projects/bike_sched/sys/dev/agp/agp_i810.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ata/ata-all.c#5 integrate .. //depot/projects/bike_sched/sys/dev/ata/ata-chipset.c#7 integrate .. //depot/projects/bike_sched/sys/dev/ata/ata-disk.c#6 integrate .. //depot/projects/bike_sched/sys/dev/ata/ata-lowlevel.c#6 integrate .. //depot/projects/bike_sched/sys/dev/ata/ata-pci.c#4 integrate .. //depot/projects/bike_sched/sys/dev/ata/ata-pci.h#6 integrate .. //depot/projects/bike_sched/sys/dev/ata/ata-queue.c#4 integrate .. //depot/projects/bike_sched/sys/dev/ata/atapi-cd.c#5 integrate .. //depot/projects/bike_sched/sys/dev/ata/atapi-fd.c#4 integrate .. //depot/projects/bike_sched/sys/dev/ata/atapi-tape.c#4 integrate .. //depot/projects/bike_sched/sys/dev/ath/ah_osdep.c#2 integrate .. //depot/projects/bike_sched/sys/dev/ath/ah_osdep.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ath/ath_rate/amrr/amrr.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ath/ath_rate/amrr/amrr.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ath/ath_rate/onoe/onoe.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ath/ath_rate/onoe/onoe.h#3 integrate .. //depot/projects/bike_sched/sys/dev/ath/ath_rate/sample/sample.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ath/ath_rate/sample/sample.h#3 integrate .. //depot/projects/bike_sched/sys/dev/ath/if_ath.c#6 integrate .. //depot/projects/bike_sched/sys/dev/ath/if_ath_pci.c#4 integrate .. //depot/projects/bike_sched/sys/dev/ath/if_athioctl.h#4 integrate .. //depot/projects/bike_sched/sys/dev/ath/if_athrate.h#3 integrate .. //depot/projects/bike_sched/sys/dev/ath/if_athvar.h#4 integrate .. //depot/projects/bike_sched/sys/dev/atkbdc/psm.c#5 integrate .. //depot/projects/bike_sched/sys/dev/awi/am79c930.c#2 delete .. //depot/projects/bike_sched/sys/dev/awi/am79c930reg.h#2 delete .. //depot/projects/bike_sched/sys/dev/awi/am79c930var.h#2 delete .. //depot/projects/bike_sched/sys/dev/awi/awi.c#3 delete .. //depot/projects/bike_sched/sys/dev/awi/awireg.h#2 delete .. //depot/projects/bike_sched/sys/dev/awi/awivar.h#3 delete .. //depot/projects/bike_sched/sys/dev/awi/if_awi_pccard.c#3 delete .. //depot/projects/bike_sched/sys/dev/bce/if_bce.c#7 integrate .. //depot/projects/bike_sched/sys/dev/bce/if_bcefw.h#5 integrate .. //depot/projects/bike_sched/sys/dev/bce/if_bcereg.h#5 integrate .. //depot/projects/bike_sched/sys/dev/bfe/if_bfe.c#4 integrate .. //depot/projects/bike_sched/sys/dev/bge/if_bge.c#6 integrate .. //depot/projects/bike_sched/sys/dev/bge/if_bgereg.h#5 integrate .. //depot/projects/bike_sched/sys/dev/bktr/bktr_i2c.c#3 integrate .. //depot/projects/bike_sched/sys/dev/bm/if_bm.c#1 branch .. //depot/projects/bike_sched/sys/dev/bm/if_bmreg.h#1 branch .. //depot/projects/bike_sched/sys/dev/bm/if_bmvar.h#1 branch .. //depot/projects/bike_sched/sys/dev/ce/ceddk.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ce/if_ce.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ciss/ciss.c#4 integrate .. //depot/projects/bike_sched/sys/dev/cnw/if_cnw.c#3 integrate .. //depot/projects/bike_sched/sys/dev/coretemp/coretemp.c#3 integrate .. //depot/projects/bike_sched/sys/dev/cp/cpddk.h#2 integrate .. //depot/projects/bike_sched/sys/dev/cp/if_cp.c#3 integrate .. //depot/projects/bike_sched/sys/dev/cs/if_cs.c#3 integrate .. //depot/projects/bike_sched/sys/dev/cs/if_cs_isa.c#3 integrate .. //depot/projects/bike_sched/sys/dev/cs/if_cs_pccard.c#3 integrate .. //depot/projects/bike_sched/sys/dev/cs/if_csreg.h#2 integrate .. //depot/projects/bike_sched/sys/dev/cs/if_csvar.h#3 integrate .. //depot/projects/bike_sched/sys/dev/ctau/ctddk.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ctau/if_ct.c#3 integrate .. //depot/projects/bike_sched/sys/dev/cx/cxddk.h#2 integrate .. //depot/projects/bike_sched/sys/dev/cx/if_cx.c#3 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/cxgb_config.h#3 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/cxgb_l2t.c#3 delete .. //depot/projects/bike_sched/sys/dev/cxgb/cxgb_l2t.h#3 delete .. //depot/projects/bike_sched/sys/dev/cxgb/cxgb_main.c#5 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/cxgb_offload.c#3 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/cxgb_offload.h#4 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/cxgb_osdep.h#3 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/t3cdev.h#2 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.h#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.h#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cq.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_dbg.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_ev.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_hal.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_hal.h#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_mem.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.h#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_qp.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_resource.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_resource.h#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_user.h#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_wr.h#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#4 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_cpl_socket.c#5 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_ddp.c#3 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_defs.h#3 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_l2t.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_l2t.h#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_listen.c#2 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_t3_ddp.h#2 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_tcp_offload.c#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_tcp_offload.h#1 branch .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_toepcb.h#2 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_tom.c#2 integrate .. //depot/projects/bike_sched/sys/dev/cxgb/ulp/tom/cxgb_tom_sysctl.c#2 integrate .. //depot/projects/bike_sched/sys/dev/dc/if_dc.c#5 integrate .. //depot/projects/bike_sched/sys/dev/dcons/dcons_os.c#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_82571.c#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_82571.h#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_api.c#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_api.h#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_defines.h#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_hw.h#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_ich8lan.c#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_ich8lan.h#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_osdep.h#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_phy.c#4 integrate .. //depot/projects/bike_sched/sys/dev/em/e1000_phy.h#4 integrate .. //depot/projects/bike_sched/sys/dev/em/if_em.c#6 integrate .. //depot/projects/bike_sched/sys/dev/em/if_em.h#5 integrate .. //depot/projects/bike_sched/sys/dev/et/if_et.c#1 branch .. //depot/projects/bike_sched/sys/dev/et/if_etreg.h#1 branch .. //depot/projects/bike_sched/sys/dev/et/if_etvar.h#1 branch .. //depot/projects/bike_sched/sys/dev/ex/if_ex.c#2 integrate .. //depot/projects/bike_sched/sys/dev/ex/if_ex_isa.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ex/if_ex_pccard.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ex/if_exvar.h#3 integrate .. //depot/projects/bike_sched/sys/dev/fe/if_fe.c#3 integrate .. //depot/projects/bike_sched/sys/dev/fe/if_fe_cbus.c#2 integrate .. //depot/projects/bike_sched/sys/dev/fe/if_fe_isa.c#2 integrate .. //depot/projects/bike_sched/sys/dev/fe/if_fe_pccard.c#2 integrate .. //depot/projects/bike_sched/sys/dev/fe/if_fevar.h#2 integrate .. //depot/projects/bike_sched/sys/dev/firewire/firewire.c#3 integrate .. //depot/projects/bike_sched/sys/dev/firewire/fwohci.c#3 integrate .. //depot/projects/bike_sched/sys/dev/gem/if_gem.c#5 integrate .. //depot/projects/bike_sched/sys/dev/harp/if_harp.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore.h#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_aali.h#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_buffer.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_command.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_globals.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_if.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_include.h#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_init.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_intr.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_output.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_receive.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_slave.h#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_stats.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_stats.h#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_timer.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_transmit.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_var.h#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/fore_vcm.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/hfa_eisa.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/hfa_freebsd.c#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/hfa_freebsd.h#2 delete .. //depot/projects/bike_sched/sys/dev/hfa/hfa_pci.c#3 delete .. //depot/projects/bike_sched/sys/dev/hfa/hfa_sbus.c#2 delete .. //depot/projects/bike_sched/sys/dev/hme/if_hme.c#3 integrate .. //depot/projects/bike_sched/sys/dev/hme/if_hme_pci.c#3 integrate .. //depot/projects/bike_sched/sys/dev/hme/if_hme_sbus.c#3 integrate .. //depot/projects/bike_sched/sys/dev/hme/if_hmereg.h#2 integrate .. //depot/projects/bike_sched/sys/dev/hme/if_hmevar.h#3 integrate .. //depot/projects/bike_sched/sys/dev/ichsmb/ichsmb.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ichsmb/ichsmb_pci.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ichsmb/ichsmb_var.h#2 integrate .. //depot/projects/bike_sched/sys/dev/idt/idt.c#2 delete .. //depot/projects/bike_sched/sys/dev/idt/idt_harp.c#2 delete .. //depot/projects/bike_sched/sys/dev/idt/idt_pci.c#3 delete .. //depot/projects/bike_sched/sys/dev/idt/idtreg.h#3 delete .. //depot/projects/bike_sched/sys/dev/idt/idtvar.h#2 delete .. //depot/projects/bike_sched/sys/dev/ie/if_ie.c#2 integrate .. //depot/projects/bike_sched/sys/dev/ie/if_ie_isa.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ie/if_ievar.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ieee488/upd7210.c#2 integrate .. //depot/projects/bike_sched/sys/dev/if_ndis/if_ndis.c#5 integrate .. //depot/projects/bike_sched/sys/dev/if_ndis/if_ndisvar.h#5 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_82575.c#2 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_api.c#2 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_api.h#2 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_defines.h#2 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_hw.h#2 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_mac.c#3 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_manage.h#2 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_osdep.c#2 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_osdep.h#2 integrate .. //depot/projects/bike_sched/sys/dev/igb/e1000_phy.c#2 integrate .. //depot/projects/bike_sched/sys/dev/igb/if_igb.c#3 integrate .. //depot/projects/bike_sched/sys/dev/igb/if_igb.h#2 integrate .. //depot/projects/bike_sched/sys/dev/iicbus/iicsmb.c#3 integrate .. //depot/projects/bike_sched/sys/dev/io/iodev.c#2 integrate .. //depot/projects/bike_sched/sys/dev/ipw/if_ipw.c#5 integrate .. //depot/projects/bike_sched/sys/dev/ipw/if_ipwvar.h#4 integrate .. //depot/projects/bike_sched/sys/dev/iscsi/initiator/iscsi.c#2 integrate .. //depot/projects/bike_sched/sys/dev/iwi/if_iwi.c#4 integrate .. //depot/projects/bike_sched/sys/dev/iwi/if_iwivar.h#3 integrate .. //depot/projects/bike_sched/sys/dev/iwn/if_iwn.c#1 branch .. //depot/projects/bike_sched/sys/dev/iwn/if_iwnreg.h#1 branch .. //depot/projects/bike_sched/sys/dev/iwn/if_iwnvar.h#1 branch .. //depot/projects/bike_sched/sys/dev/ixgbe/LICENSE#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/README#1 branch .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe.c#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe_82598.c#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe_api.c#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe_api.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe_common.c#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe_common.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe_osdep.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe_phy.c#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe_phy.h#2 integrate .. //depot/projects/bike_sched/sys/dev/ixgbe/ixgbe_type.h#2 integrate .. //depot/projects/bike_sched/sys/dev/jme/if_jme.c#1 branch .. //depot/projects/bike_sched/sys/dev/jme/if_jmereg.h#1 branch .. //depot/projects/bike_sched/sys/dev/jme/if_jmevar.h#1 branch .. //depot/projects/bike_sched/sys/dev/k8temp/k8temp.c#2 integrate .. //depot/projects/bike_sched/sys/dev/led/led.c#3 integrate .. //depot/projects/bike_sched/sys/dev/malo/if_malo.c#2 integrate .. //depot/projects/bike_sched/sys/dev/malo/if_malo.h#2 integrate .. //depot/projects/bike_sched/sys/dev/md/md.c#4 integrate .. //depot/projects/bike_sched/sys/dev/mfi/mfi.c#7 integrate .. //depot/projects/bike_sched/sys/dev/mfi/mfi_ioctl.h#3 integrate .. //depot/projects/bike_sched/sys/dev/mii/atphy.c#1 branch .. //depot/projects/bike_sched/sys/dev/mii/atphyreg.h#1 branch .. //depot/projects/bike_sched/sys/dev/mii/brgphy.c#5 integrate .. //depot/projects/bike_sched/sys/dev/mii/brgphyreg.h#3 integrate .. //depot/projects/bike_sched/sys/dev/mii/ciphy.c#5 integrate .. //depot/projects/bike_sched/sys/dev/mii/jmphy.c#1 branch .. //depot/projects/bike_sched/sys/dev/mii/jmphyreg.h#1 branch .. //depot/projects/bike_sched/sys/dev/mii/lxtphy.c#4 integrate .. //depot/projects/bike_sched/sys/dev/mii/miidevs#5 integrate .. //depot/projects/bike_sched/sys/dev/mii/smcphy.c#1 branch .. //depot/projects/bike_sched/sys/dev/mii/truephy.c#1 branch .. //depot/projects/bike_sched/sys/dev/mii/truephyreg.h#1 branch .. //depot/projects/bike_sched/sys/dev/mpt/mpt.h#5 integrate .. //depot/projects/bike_sched/sys/dev/mpt/mpt_cam.c#5 integrate .. //depot/projects/bike_sched/sys/dev/mpt/mpt_pci.c#5 integrate .. //depot/projects/bike_sched/sys/dev/mpt/mpt_raid.c#3 integrate .. //depot/projects/bike_sched/sys/dev/mpt/mpt_user.c#1 branch .. //depot/projects/bike_sched/sys/dev/nmdm/nmdm.c#3 integrate .. //depot/projects/bike_sched/sys/dev/nve/if_nve.c#3 integrate .. //depot/projects/bike_sched/sys/dev/nve/if_nvereg.h#3 integrate .. //depot/projects/bike_sched/sys/dev/ofw/ofw_console.c#5 integrate .. //depot/projects/bike_sched/sys/dev/pccard/pccard_cis.c#3 integrate .. //depot/projects/bike_sched/sys/dev/pci/pcivar.h#4 integrate .. //depot/projects/bike_sched/sys/dev/puc/pucdata.c#5 integrate .. //depot/projects/bike_sched/sys/dev/ral/if_ral_pci.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ral/if_ralrate.c#2 delete .. //depot/projects/bike_sched/sys/dev/ral/if_ralrate.h#2 delete .. //depot/projects/bike_sched/sys/dev/ral/rt2560.c#4 integrate .. //depot/projects/bike_sched/sys/dev/ral/rt2560reg.h#4 integrate .. //depot/projects/bike_sched/sys/dev/ral/rt2560var.h#4 integrate .. //depot/projects/bike_sched/sys/dev/ral/rt2661.c#5 integrate .. //depot/projects/bike_sched/sys/dev/ral/rt2661_ucode.h#2 delete .. //depot/projects/bike_sched/sys/dev/ral/rt2661var.h#3 integrate .. //depot/projects/bike_sched/sys/dev/scc/scc_bfe.h#4 integrate .. //depot/projects/bike_sched/sys/dev/scc/scc_bfe_ebus.c#3 integrate .. //depot/projects/bike_sched/sys/dev/scc/scc_bfe_macio.c#3 integrate .. //depot/projects/bike_sched/sys/dev/scc/scc_bfe_quicc.c#2 integrate .. //depot/projects/bike_sched/sys/dev/scc/scc_bfe_sbus.c#3 integrate .. //depot/projects/bike_sched/sys/dev/scc/scc_core.c#3 integrate .. //depot/projects/bike_sched/sys/dev/si/si.c#3 integrate .. //depot/projects/bike_sched/sys/dev/si/si.h#2 integrate .. //depot/projects/bike_sched/sys/dev/sio/sio.c#5 integrate .. //depot/projects/bike_sched/sys/dev/smbus/smb.c#3 integrate .. //depot/projects/bike_sched/sys/dev/smc/if_smc.c#1 branch .. //depot/projects/bike_sched/sys/dev/smc/if_smcreg.h#1 branch .. //depot/projects/bike_sched/sys/dev/smc/if_smcvar.h#1 branch .. //depot/projects/bike_sched/sys/dev/snc/dp83932.c#2 integrate .. //depot/projects/bike_sched/sys/dev/snc/dp83932subr.c#2 integrate .. //depot/projects/bike_sched/sys/dev/snc/dp83932var.h#2 integrate .. //depot/projects/bike_sched/sys/dev/snc/if_sncreg.h#2 integrate .. //depot/projects/bike_sched/sys/dev/snp/snp.c#4 integrate .. //depot/projects/bike_sched/sys/dev/sound/midi/sequencer.c#5 integrate .. //depot/projects/bike_sched/sys/dev/sound/pci/atiixp.h#3 integrate .. //depot/projects/bike_sched/sys/dev/sound/pci/hda/hdac.c#4 integrate .. //depot/projects/bike_sched/sys/dev/sound/pcm/dsp.c#4 integrate .. //depot/projects/bike_sched/sys/dev/speaker/spkr.c#5 integrate .. //depot/projects/bike_sched/sys/dev/sym/sym_defs.h#2 integrate .. //depot/projects/bike_sched/sys/dev/sym/sym_fw.h#2 integrate .. //depot/projects/bike_sched/sys/dev/sym/sym_fw1.h#3 integrate .. //depot/projects/bike_sched/sys/dev/sym/sym_fw2.h#3 integrate .. //depot/projects/bike_sched/sys/dev/sym/sym_hipd.c#3 integrate .. //depot/projects/bike_sched/sys/dev/ti/if_ti.c#5 integrate .. //depot/projects/bike_sched/sys/dev/tx/if_tx.c#3 integrate .. //depot/projects/bike_sched/sys/dev/tx/if_txvar.h#2 integrate .. //depot/projects/bike_sched/sys/dev/uart/uart_core.c#4 integrate .. //depot/projects/bike_sched/sys/dev/uart/uart_dev_ns8250.c#4 integrate .. //depot/projects/bike_sched/sys/dev/usb/ehci.c#5 integrate .. //depot/projects/bike_sched/sys/dev/usb/ehcivar.h#3 integrate .. //depot/projects/bike_sched/sys/dev/usb/if_axe.c#4 integrate .. //depot/projects/bike_sched/sys/dev/usb/if_rum.c#4 integrate .. //depot/projects/bike_sched/sys/dev/usb/if_rumvar.h#2 integrate .. //depot/projects/bike_sched/sys/dev/usb/if_udav.c#4 integrate .. //depot/projects/bike_sched/sys/dev/usb/if_ural.c#4 integrate .. //depot/projects/bike_sched/sys/dev/usb/if_uralvar.h#3 integrate .. //depot/projects/bike_sched/sys/dev/usb/if_zyd.c#4 integrate .. //depot/projects/bike_sched/sys/dev/usb/if_zydreg.h#2 integrate .. //depot/projects/bike_sched/sys/dev/usb/ohci.c#4 integrate .. //depot/projects/bike_sched/sys/dev/usb/ubsa.c#6 integrate .. //depot/projects/bike_sched/sys/dev/usb/uipaq.c#3 integrate .. //depot/projects/bike_sched/sys/dev/usb/umass.c#4 integrate .. //depot/projects/bike_sched/sys/dev/usb/ums.c#4 integrate .. //depot/projects/bike_sched/sys/dev/usb/uplcom.c#5 integrate .. //depot/projects/bike_sched/sys/dev/usb/usb.c#3 integrate .. //depot/projects/bike_sched/sys/dev/usb/usbdevs#9 integrate .. //depot/projects/bike_sched/sys/dev/usb/uscanner.c#5 integrate .. //depot/projects/bike_sched/sys/dev/usb/uxb360gp_rdesc.h#2 integrate .. //depot/projects/bike_sched/sys/dev/vkbd/vkbd.c#4 integrate .. //depot/projects/bike_sched/sys/dev/vx/if_vx.c#2 integrate .. //depot/projects/bike_sched/sys/dev/wi/if_wavelan_ieee.h#3 integrate .. //depot/projects/bike_sched/sys/dev/wi/if_wi.c#4 integrate .. //depot/projects/bike_sched/sys/dev/wi/if_wi_pccard.c#2 integrate .. //depot/projects/bike_sched/sys/dev/wi/if_wi_pci.c#2 integrate .. //depot/projects/bike_sched/sys/dev/wi/if_wivar.h#3 integrate .. //depot/projects/bike_sched/sys/dev/wi/spectrum24t_cf.h#2 delete .. //depot/projects/bike_sched/sys/dev/wpi/if_wpi.c#3 integrate .. //depot/projects/bike_sched/sys/dev/wpi/if_wpivar.h#3 integrate .. //depot/projects/bike_sched/sys/dev/xe/if_xe.c#3 integrate .. //depot/projects/bike_sched/sys/dev/xe/if_xe_pccard.c#2 integrate .. //depot/projects/bike_sched/sys/dev/xe/if_xevar.h#2 integrate .. //depot/projects/bike_sched/sys/fs/cd9660/cd9660_vnops.c#2 integrate .. //depot/projects/bike_sched/sys/fs/devfs/devfs_devs.c#4 integrate .. //depot/projects/bike_sched/sys/fs/devfs/devfs_int.h#3 integrate .. //depot/projects/bike_sched/sys/fs/devfs/devfs_rule.c#4 integrate .. //depot/projects/bike_sched/sys/fs/devfs/devfs_vnops.c#5 integrate .. //depot/projects/bike_sched/sys/fs/fdescfs/fdesc.h#2 integrate .. //depot/projects/bike_sched/sys/fs/fdescfs/fdesc_vfsops.c#4 integrate .. //depot/projects/bike_sched/sys/fs/fdescfs/fdesc_vnops.c#5 integrate .. //depot/projects/bike_sched/sys/fs/ntfs/ntfs_ihash.c#3 integrate .. //depot/projects/bike_sched/sys/fs/ntfs/ntfs_subr.c#4 integrate .. //depot/projects/bike_sched/sys/fs/smbfs/smbfs_node.c#4 integrate .. //depot/projects/bike_sched/sys/fs/tmpfs/tmpfs_subr.c#3 integrate .. //depot/projects/bike_sched/sys/fs/udf/udf_vnops.c#4 integrate .. //depot/projects/bike_sched/sys/fs/unionfs/union.h#3 integrate .. //depot/projects/bike_sched/sys/fs/unionfs/union_subr.c#5 integrate .. //depot/projects/bike_sched/sys/fs/unionfs/union_vnops.c#5 integrate .. //depot/projects/bike_sched/sys/geom/geom_dev.c#5 integrate .. //depot/projects/bike_sched/sys/geom/geom_subr.c#5 integrate .. //depot/projects/bike_sched/sys/geom/journal/g_journal.c#2 integrate .. //depot/projects/bike_sched/sys/geom/part/g_part.c#5 integrate .. //depot/projects/bike_sched/sys/geom/part/g_part.h#6 integrate .. //depot/projects/bike_sched/sys/geom/part/g_part_apm.c#3 integrate .. //depot/projects/bike_sched/sys/geom/part/g_part_bsd.c#3 integrate .. //depot/projects/bike_sched/sys/geom/part/g_part_gpt.c#4 integrate .. //depot/projects/bike_sched/sys/geom/part/g_part_if.m#3 integrate .. //depot/projects/bike_sched/sys/geom/part/g_part_mbr.c#5 integrate .. //depot/projects/bike_sched/sys/geom/part/g_part_pc98.c#3 integrate .. //depot/projects/bike_sched/sys/geom/part/g_part_vtoc8.c#3 integrate .. //depot/projects/bike_sched/sys/geom/vinum/geom_vinum_share.c#3 integrate .. //depot/projects/bike_sched/sys/geom/virstor/g_virstor.c#2 integrate .. //depot/projects/bike_sched/sys/i386/acpica/acpi_machdep.c#5 integrate .. //depot/projects/bike_sched/sys/i386/bios/apm.c#4 integrate .. //depot/projects/bike_sched/sys/i386/conf/GENERIC#8 integrate .. //depot/projects/bike_sched/sys/i386/conf/NOTES#7 integrate .. //depot/projects/bike_sched/sys/i386/conf/PAE#5 integrate .. //depot/projects/bike_sched/sys/i386/cpufreq/est.c#4 integrate .. //depot/projects/bike_sched/sys/i386/i386/bpf_jit_machdep.c#2 integrate .. //depot/projects/bike_sched/sys/i386/i386/bpf_jit_machdep.h#2 integrate .. //depot/projects/bike_sched/sys/i386/i386/exception.s#4 integrate .. //depot/projects/bike_sched/sys/i386/i386/genassym.c#3 integrate .. //depot/projects/bike_sched/sys/i386/i386/identcpu.c#6 integrate .. //depot/projects/bike_sched/sys/i386/i386/local_apic.c#8 integrate .. //depot/projects/bike_sched/sys/i386/i386/machdep.c#9 integrate .. //depot/projects/bike_sched/sys/i386/i386/pmap.c#9 integrate .. //depot/projects/bike_sched/sys/i386/i386/trap.c#7 integrate .. //depot/projects/bike_sched/sys/i386/include/clock.h#6 integrate .. //depot/projects/bike_sched/sys/i386/include/iodev.h#2 integrate .. //depot/projects/bike_sched/sys/i386/include/memdev.h#2 integrate .. //depot/projects/bike_sched/sys/i386/include/pcpu.h#3 integrate .. //depot/projects/bike_sched/sys/i386/include/pecoff_machdep.h#2 delete .. //depot/projects/bike_sched/sys/i386/isa/clock.c#7 integrate .. //depot/projects/bike_sched/sys/i386/isa/pmtimer.c#3 integrate .. //depot/projects/bike_sched/sys/i386/linux/linux_dummy.c#5 integrate .. //depot/projects/bike_sched/sys/i386/linux/linux_proto.h#7 integrate .. //depot/projects/bike_sched/sys/i386/linux/linux_syscall.h#7 integrate .. //depot/projects/bike_sched/sys/i386/linux/linux_sysent.c#7 integrate .. //depot/projects/bike_sched/sys/i386/linux/syscalls.master#7 integrate .. //depot/projects/bike_sched/sys/i4b/capi/README#2 delete .. //depot/projects/bike_sched/sys/i4b/capi/capi.h#2 delete .. //depot/projects/bike_sched/sys/i4b/capi/capi_l4if.c#3 delete .. //depot/projects/bike_sched/sys/i4b/capi/capi_llif.c#3 delete .. //depot/projects/bike_sched/sys/i4b/capi/capi_msgs.c#3 delete .. //depot/projects/bike_sched/sys/i4b/capi/capi_msgs.h#2 delete .. //depot/projects/bike_sched/sys/i4b/capi/iavc/iavc.h#2 delete .. //depot/projects/bike_sched/sys/i4b/capi/iavc/iavc_card.c#3 delete .. //depot/projects/bike_sched/sys/i4b/capi/iavc/iavc_isa.c#3 delete .. //depot/projects/bike_sched/sys/i4b/capi/iavc/iavc_lli.c#3 delete .. //depot/projects/bike_sched/sys/i4b/capi/iavc/iavc_pci.c#3 delete .. //depot/projects/bike_sched/sys/i4b/driver/i4b_ctl.c#3 delete .. //depot/projects/bike_sched/sys/i4b/driver/i4b_ing.c#3 delete .. //depot/projects/bike_sched/sys/i4b/driver/i4b_ipr.c#3 delete .. //depot/projects/bike_sched/sys/i4b/driver/i4b_isppp.c#3 delete .. //depot/projects/bike_sched/sys/i4b/driver/i4b_rbch.c#3 delete .. //depot/projects/bike_sched/sys/i4b/driver/i4b_tel.c#3 delete .. //depot/projects/bike_sched/sys/i4b/driver/i4b_trace.c#3 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_cause.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_debug.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_global.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_ioctl.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_isdnq931.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_l1l2.h#3 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_l2l3.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_l3l4.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_mbuf.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_rbch_ioctl.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_tel_ioctl.h#2 delete .. //depot/projects/bike_sched/sys/i4b/include/i4b_trace.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/i4b_hdlc.c#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/i4b_hdlc.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/i4b_l1.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/i4b_l1dmux.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/i4b_l1lib.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi/i4b_ifpi_ext.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi/i4b_ifpi_isac.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi/i4b_ifpi_l1.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi/i4b_ifpi_l1fsm.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi/i4b_ifpi_pci.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi2/i4b_ifpi2_ext.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi2/i4b_ifpi2_isacsx.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi2/i4b_ifpi2_isacsx.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi2/i4b_ifpi2_l1.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi2/i4b_ifpi2_l1fsm.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpi2/i4b_ifpi2_pci.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpnp/i4b_ifpnp_avm.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpnp/i4b_ifpnp_ext.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpnp/i4b_ifpnp_isac.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpnp/i4b_ifpnp_l1.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ifpnp/i4b_ifpnp_l1fsm.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ihfc/i4b_ihfc.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ihfc/i4b_ihfc_drv.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ihfc/i4b_ihfc_drv.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ihfc/i4b_ihfc_ext.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ihfc/i4b_ihfc_l1if.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/ihfc/i4b_ihfc_pnp.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_asuscom_ipac.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_avm_a1.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_bchan.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_ctx_s0P.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_diva.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_drn_ngo.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_dynalink.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_elsa_pcc16.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_elsa_qs1i.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_elsa_qs1p.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_hscx.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_hscx.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_ipac.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_isac.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_isac.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_isic.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_isic.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_isic_ext.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_isic_isa.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_isic_pnp.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_itk_ix1.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_l1.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_l1fsm.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_siemens_isurf.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_sws.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_tel_s016.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_tel_s0163.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_tel_s08.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/isic/i4b_usr_sti.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/itjc/i4b_hdlc.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/itjc/i4b_itjc_ext.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/itjc/i4b_itjc_isac.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/itjc/i4b_itjc_l1.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/itjc/i4b_itjc_l1fsm.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/itjc/i4b_itjc_pci.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/iwic/i4b_iwic.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/iwic/i4b_iwic_bchan.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/iwic/i4b_iwic_dchan.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/iwic/i4b_iwic_ext.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer1/iwic/i4b_iwic_fsm.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/iwic/i4b_iwic_l1if.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/iwic/i4b_iwic_pci.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer1/iwic/i4b_w6692.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_iframe.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_l2.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_l2.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_l2fsm.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_l2fsm.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_l2timer.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_lme.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_mbuf.c#2 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_sframe.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_tei.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_uframe.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer2/i4b_util.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_l2if.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_l3.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_l3fsm.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_l3fsm.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_l3timer.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_l4if.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_q931.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_q931.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_q932fac.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer3/i4b_q932fac.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer4/i4b_i4bdrv.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer4/i4b_l4.c#3 delete .. //depot/projects/bike_sched/sys/i4b/layer4/i4b_l4.h#2 delete .. //depot/projects/bike_sched/sys/i4b/layer4/i4b_l4mgmt.c#4 delete .. //depot/projects/bike_sched/sys/i4b/layer4/i4b_l4timer.c#3 delete .. //depot/projects/bike_sched/sys/ia64/conf/DEFAULTS#7 integrate .. //depot/projects/bike_sched/sys/ia64/ia64/clock.c#4 integrate .. //depot/projects/bike_sched/sys/ia64/ia64/interrupt.c#5 integrate .. //depot/projects/bike_sched/sys/ia64/ia64/machdep.c#11 integrate .. //depot/projects/bike_sched/sys/ia64/ia64/mp_machdep.c#4 integrate .. //depot/projects/bike_sched/sys/ia64/ia64/pmap.c#6 integrate .. //depot/projects/bike_sched/sys/ia64/include/atomic.h#4 integrate .. //depot/projects/bike_sched/sys/ia64/include/memdev.h#2 integrate .. //depot/projects/bike_sched/sys/kern/Make.tags.inc#3 integrate .. //depot/projects/bike_sched/sys/kern/imgact_elf.c#5 integrate .. //depot/projects/bike_sched/sys/kern/init_sysent.c#10 integrate .. //depot/projects/bike_sched/sys/kern/kern_conf.c#6 integrate .. //depot/projects/bike_sched/sys/kern/kern_cpu.c#4 integrate .. //depot/projects/bike_sched/sys/kern/kern_cpuset.c#5 integrate .. //depot/projects/bike_sched/sys/kern/kern_ctf.c#1 branch .. //depot/projects/bike_sched/sys/kern/kern_descrip.c#8 integrate .. //depot/projects/bike_sched/sys/kern/kern_dtrace.c#1 branch .. //depot/projects/bike_sched/sys/kern/kern_event.c#7 integrate .. //depot/projects/bike_sched/sys/kern/kern_exec.c#6 integrate .. //depot/projects/bike_sched/sys/kern/kern_exit.c#5 integrate .. //depot/projects/bike_sched/sys/kern/kern_fork.c#11 integrate .. //depot/projects/bike_sched/sys/kern/kern_intr.c#10 integrate .. //depot/projects/bike_sched/sys/kern/kern_jail.c#6 integrate .. //depot/projects/bike_sched/sys/kern/kern_kthread.c#5 integrate .. //depot/projects/bike_sched/sys/kern/kern_linker.c#8 integrate .. //depot/projects/bike_sched/sys/kern/kern_lock.c#7 integrate .. //depot/projects/bike_sched/sys/kern/kern_lockf.c#5 integrate .. //depot/projects/bike_sched/sys/kern/kern_malloc.c#4 integrate .. //depot/projects/bike_sched/sys/kern/kern_proc.c#7 integrate .. //depot/projects/bike_sched/sys/kern/kern_rwlock.c#5 integrate .. //depot/projects/bike_sched/sys/kern/kern_sdt.c#1 branch .. //depot/projects/bike_sched/sys/kern/kern_sig.c#8 integrate .. //depot/projects/bike_sched/sys/kern/kern_switch.c#16 integrate .. //depot/projects/bike_sched/sys/kern/kern_sx.c#4 integrate .. //depot/projects/bike_sched/sys/kern/kern_thr.c#8 integrate .. //depot/projects/bike_sched/sys/kern/kern_umtx.c#5 integrate .. //depot/projects/bike_sched/sys/kern/kern_xxx.c#3 integrate .. //depot/projects/bike_sched/sys/kern/link_elf.c#6 integrate .. //depot/projects/bike_sched/sys/kern/link_elf_obj.c#6 integrate .. //depot/projects/bike_sched/sys/kern/linker_if.m#3 integrate .. //depot/projects/bike_sched/sys/kern/sched_4bsd.c#25 integrate .. //depot/projects/bike_sched/sys/kern/sched_ule.c#25 integrate .. //depot/projects/bike_sched/sys/kern/stack_protector.c#1 branch .. //depot/projects/bike_sched/sys/kern/subr_blist.c#2 integrate .. //depot/projects/bike_sched/sys/kern/subr_bus.c#7 integrate .. //depot/projects/bike_sched/sys/kern/subr_clist.c#1 branch .. //depot/projects/bike_sched/sys/kern/subr_clock.c#4 integrate .. //depot/projects/bike_sched/sys/kern/subr_kdb.c#5 integrate .. //depot/projects/bike_sched/sys/kern/subr_lock.c#4 integrate .. //depot/projects/bike_sched/sys/kern/subr_param.c#3 integrate .. //depot/projects/bike_sched/sys/kern/subr_rtc.c#2 integrate .. //depot/projects/bike_sched/sys/kern/subr_smp.c#5 integrate .. //depot/projects/bike_sched/sys/kern/subr_witness.c#7 integrate .. //depot/projects/bike_sched/sys/kern/sys_pipe.c#5 integrate .. //depot/projects/bike_sched/sys/kern/sys_socket.c#4 integrate .. //depot/projects/bike_sched/sys/kern/syscalls.c#9 integrate .. //depot/projects/bike_sched/sys/kern/syscalls.master#11 integrate .. //depot/projects/bike_sched/sys/kern/systrace_args.c#6 integrate .. //depot/projects/bike_sched/sys/kern/sysv_sem.c#5 integrate .. //depot/projects/bike_sched/sys/kern/tty.c#7 integrate .. //depot/projects/bike_sched/sys/kern/tty_cons.c#6 integrate .. //depot/projects/bike_sched/sys/kern/tty_subr.c#3 delete .. //depot/projects/bike_sched/sys/kern/tty_tty.c#4 integrate .. //depot/projects/bike_sched/sys/kern/uipc_mbuf.c#6 integrate .. //depot/projects/bike_sched/sys/kern/uipc_sem.c#4 integrate .. //depot/projects/bike_sched/sys/kern/uipc_shm.c#3 integrate .. //depot/projects/bike_sched/sys/kern/uipc_sockbuf.c#3 integrate .. //depot/projects/bike_sched/sys/kern/uipc_socket.c#9 integrate .. //depot/projects/bike_sched/sys/kern/uipc_syscalls.c#7 integrate .. //depot/projects/bike_sched/sys/kern/vfs_aio.c#4 integrate .. //depot/projects/bike_sched/sys/kern/vfs_export.c#3 integrate .. //depot/projects/bike_sched/sys/kern/vfs_mount.c#8 integrate .. //depot/projects/bike_sched/sys/kern/vfs_subr.c#10 integrate .. //depot/projects/bike_sched/sys/kern/vfs_syscalls.c#8 integrate .. //depot/projects/bike_sched/sys/mips/conf/ADM5120#2 integrate .. //depot/projects/bike_sched/sys/mips/conf/IDT#2 integrate .. //depot/projects/bike_sched/sys/mips/conf/MALTA#2 integrate .. //depot/projects/bike_sched/sys/mips/conf/QEMU#2 integrate .. //depot/projects/bike_sched/sys/mips/conf/SENTRY5#2 integrate .. //depot/projects/bike_sched/sys/mips/include/am29lv081b.h#2 delete .. //depot/projects/bike_sched/sys/mips/include/cp0.h#2 delete .. //depot/projects/bike_sched/sys/mips/include/float.h#2 integrate .. //depot/projects/bike_sched/sys/mips/include/iodev.h#2 integrate .. //depot/projects/bike_sched/sys/mips/include/memdev.h#2 integrate .. //depot/projects/bike_sched/sys/mips/include/pmap.h#2 integrate .. //depot/projects/bike_sched/sys/mips/include/pte.h#2 integrate .. //depot/projects/bike_sched/sys/mips/mips/machdep.c#2 integrate .. //depot/projects/bike_sched/sys/mips/mips/mips_subr.c#2 delete .. //depot/projects/bike_sched/sys/mips/mips/pmap.c#2 integrate .. //depot/projects/bike_sched/sys/mips/mips/trap.c#2 integrate .. //depot/projects/bike_sched/sys/modules/Makefile#7 integrate .. //depot/projects/bike_sched/sys/modules/age/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/ath_rate_amrr/Makefile#3 integrate .. //depot/projects/bike_sched/sys/modules/ath_rate_onoe/Makefile#3 integrate .. //depot/projects/bike_sched/sys/modules/ath_rate_sample/Makefile#3 integrate .. //depot/projects/bike_sched/sys/modules/awi/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/bm/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/cnw/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/cxgb/Makefile#3 integrate .. //depot/projects/bike_sched/sys/modules/cxgb/cxgb/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/cxgb/iw_cxgb/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/cxgb/tom/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/cyclic/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/Makefile.inc#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/dtmalloc/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/dtrace/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/dtrace_test/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/dtraceall/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/dtraceall/dtraceall.c#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/fasttrap/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/fbt/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/lockstat/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/profile/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/prototype/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/sdt/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/dtrace/systrace/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/em/Makefile#6 integrate .. //depot/projects/bike_sched/sys/modules/esp/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/et/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/firmware/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/harp/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/hfa/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/hfa/Makefile.inc#2 delete .. //depot/projects/bike_sched/sys/modules/hfa/eisa/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/hfa/hfa/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/hfa/pci/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/hfa/sbus/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/hme/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/idt/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/isp/Makefile#3 integrate .. //depot/projects/bike_sched/sys/modules/ispfw/Makefile#4 integrate .. //depot/projects/bike_sched/sys/modules/iwn/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/iwnfw/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/ixgbe/Makefile#3 integrate .. //depot/projects/bike_sched/sys/modules/jme/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/le/Makefile#3 integrate .. //depot/projects/bike_sched/sys/modules/malo/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/mii/Makefile#4 integrate .. //depot/projects/bike_sched/sys/modules/mpt/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/netgraph/atm/Makefile#3 integrate .. //depot/projects/bike_sched/sys/modules/netgraph/atm/atmpif/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/nfslockd/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/opensolaris/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/pecoff/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/ral/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/ralfw/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/ralfw/Makefile.inc#1 branch .. //depot/projects/bike_sched/sys/modules/ralfw/rt2561/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/ralfw/rt2561s/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/ralfw/rt2661/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/rdma/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/rdma/addr/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/rdma/cma/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/rdma/core/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/rdma/iwcm/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/rdma/krping/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/scc/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/sem/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/sound/driver/Makefile#4 integrate .. //depot/projects/bike_sched/sys/modules/wlan/Makefile#3 integrate .. //depot/projects/bike_sched/sys/modules/wlan_acl/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/wlan_amrr/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/wlan_ccmp/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/wlan_rssadapt/Makefile#1 branch .. //depot/projects/bike_sched/sys/modules/wlan_scan_ap/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/wlan_scan_sta/Makefile#2 delete .. //depot/projects/bike_sched/sys/modules/wlan_tkip/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/wlan_wep/Makefile#2 integrate .. //depot/projects/bike_sched/sys/modules/wlan_xauth/Makefile#2 integrate .. //depot/projects/bike_sched/sys/net/bpf.c#9 integrate .. //depot/projects/bike_sched/sys/net/ethernet.h#3 integrate .. //depot/projects/bike_sched/sys/net/if.c#8 integrate .. //depot/projects/bike_sched/sys/net/if_atmsubr.c#4 integrate .. //depot/projects/bike_sched/sys/net/if_bridge.c#6 integrate .. //depot/projects/bike_sched/sys/net/if_ethersubr.c#5 integrate .. //depot/projects/bike_sched/sys/net/if_fwsubr.c#3 integrate .. //depot/projects/bike_sched/sys/net/if_gif.c#6 integrate .. //depot/projects/bike_sched/sys/net/if_gif.h#2 integrate .. //depot/projects/bike_sched/sys/net/if_gre.c#5 integrate .. //depot/projects/bike_sched/sys/net/if_gre.h#2 integrate .. //depot/projects/bike_sched/sys/net/if_iso88025subr.c#4 integrate .. //depot/projects/bike_sched/sys/net/if_loop.c#6 integrate .. //depot/projects/bike_sched/sys/net/if_media.h#4 integrate .. //depot/projects/bike_sched/sys/net/if_stf.c#5 integrate .. //depot/projects/bike_sched/sys/net/if_tap.c#4 integrate .. //depot/projects/bike_sched/sys/net/if_tun.c#4 integrate .. //depot/projects/bike_sched/sys/net/if_var.h#6 integrate .. //depot/projects/bike_sched/sys/net/radix_mpath.c#2 integrate .. //depot/projects/bike_sched/sys/net/radix_mpath.h#2 integrate .. //depot/projects/bike_sched/sys/net/route.c#6 integrate .. //depot/projects/bike_sched/sys/net/route.h#4 integrate .. //depot/projects/bike_sched/sys/net/rtsock.c#6 integrate .. //depot/projects/bike_sched/sys/net80211/_ieee80211.h#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211.c#4 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211.h#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_acl.c#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_adhoc.c#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_adhoc.h#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_amrr.h#2 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_crypto.c#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_crypto.h#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_crypto_ccmp.c#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_crypto_none.c#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_crypto_tkip.c#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_crypto_wep.c#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_ddb.c#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_dfs.c#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_dfs.h#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_freebsd.c#4 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_freebsd.h#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_hostap.c#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_hostap.h#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_ht.c#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_ht.h#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_input.c#4 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_input.h#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_ioctl.c#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_ioctl.h#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_monitor.c#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_monitor.h#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_node.c#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_node.h#3 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_output.c#4 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_phy.c#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_phy.h#1 branch .. //depot/projects/bike_sched/sys/net80211/ieee80211_power.c#2 integrate .. //depot/projects/bike_sched/sys/net80211/ieee80211_power.h#2 integrate >>> TRUNCATED FOR MAIL (1000 lines) <<< From peter at FreeBSD.org Wed Jul 2 02:29:55 2008 From: peter at FreeBSD.org (Peter Wemm) Date: Wed Jul 2 02:30:01 2008 Subject: PERFORCE change 144453 for review Message-ID: <200807020229.m622TrGl030566@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144453 Change 144453 by peter@peter_daintree on 2008/07/02 02:29:27 IFC @144452 Affected files ... .. //depot/projects/hammer/Makefile.inc1#137 integrate .. //depot/projects/hammer/ObsoleteFiles.inc#54 integrate .. //depot/projects/hammer/contrib/gcc/config/i386/freebsd.h#14 integrate .. //depot/projects/hammer/etc/devd.conf#33 integrate .. //depot/projects/hammer/etc/periodic/security/800.loginfail#7 integrate .. //depot/projects/hammer/etc/rc.d/lockd#6 integrate .. //depot/projects/hammer/etc/rc.d/statd#5 integrate .. //depot/projects/hammer/games/fortune/datfiles/fortunes#82 integrate .. //depot/projects/hammer/gnu/lib/Makefile#8 integrate .. //depot/projects/hammer/gnu/lib/csu/Makefile#12 integrate .. //depot/projects/hammer/gnu/lib/libssp/Makefile#2 integrate .. //depot/projects/hammer/gnu/usr.bin/cvs/contrib/Makefile#5 integrate .. //depot/projects/hammer/lib/csu/Makefile.inc#1 branch .. //depot/projects/hammer/lib/libarchive/archive_read_support_format_zip.c#20 integrate .. //depot/projects/hammer/lib/libarchive/test/Makefile#12 integrate .. //depot/projects/hammer/lib/libarchive/test/test_compat_zip_1.zip.uu#2 integrate .. //depot/projects/hammer/lib/libarchive/test/test_read_format_zip.c#4 integrate .. //depot/projects/hammer/lib/libarchive/test/test_read_format_zip.zip.uu#1 branch .. //depot/projects/hammer/lib/libc/Makefile#31 integrate .. //depot/projects/hammer/lib/libc/amd64/gen/_setjmp.S#8 integrate .. //depot/projects/hammer/lib/libc/amd64/gen/setjmp.S#10 integrate .. //depot/projects/hammer/lib/libc/gen/glob.c#7 integrate .. //depot/projects/hammer/lib/libc/i386/gen/_setjmp.S#3 integrate .. //depot/projects/hammer/lib/libc/i386/gen/setjmp.S#3 integrate .. //depot/projects/hammer/lib/libc/net/getaddrinfo.3#14 integrate .. //depot/projects/hammer/lib/libc/stdio/Makefile.inc#18 integrate .. //depot/projects/hammer/lib/libc/stdio/printf-pos.c#1 branch .. //depot/projects/hammer/lib/libc/stdio/printflocal.h#1 branch .. //depot/projects/hammer/lib/libc/stdio/vfprintf.c#26 integrate .. //depot/projects/hammer/lib/libc/stdio/vfwprintf.c#22 integrate .. //depot/projects/hammer/lib/libc/stdlib/system.3#3 integrate .. //depot/projects/hammer/lib/libc/sys/mkdir.2#7 integrate .. //depot/projects/hammer/lib/libc/sys/socket.2#7 integrate .. //depot/projects/hammer/lib/libstand/Makefile#21 integrate .. //depot/projects/hammer/lib/libthr/Makefile#28 integrate .. //depot/projects/hammer/lib/libutil/Makefile#18 integrate .. //depot/projects/hammer/lib/libutil/hexdump.3#1 branch .. //depot/projects/hammer/lib/libutil/hexdump.c#1 branch .. //depot/projects/hammer/lib/libutil/libutil.h#11 integrate .. //depot/projects/hammer/lib/msun/man/cos.3#4 integrate .. //depot/projects/hammer/libexec/rtld-elf/Makefile#19 integrate .. //depot/projects/hammer/release/Makefile#100 integrate .. //depot/projects/hammer/release/picobsd/build/picobsd#8 integrate .. //depot/projects/hammer/release/scripts/src-install.sh#6 integrate .. //depot/projects/hammer/rescue/librescue/Makefile#9 integrate .. //depot/projects/hammer/rescue/rescue/Makefile#39 integrate .. //depot/projects/hammer/sbin/atacontrol/atacontrol.8#11 integrate .. //depot/projects/hammer/sbin/devfs/devfs.8#14 integrate .. //depot/projects/hammer/sbin/dhclient/dhclient.c#15 integrate .. //depot/projects/hammer/sbin/ggate/ggated/ggated.c#7 integrate .. //depot/projects/hammer/sbin/sconfig/sconfig.c#6 integrate .. //depot/projects/hammer/share/man/man4/aac.4#17 integrate .. //depot/projects/hammer/share/man/man5/src.conf.5#19 integrate .. //depot/projects/hammer/share/mk/bsd.cpu.mk#36 integrate .. //depot/projects/hammer/share/mk/bsd.sys.mk#17 integrate .. //depot/projects/hammer/sys/amd64/include/iodev.h#2 integrate .. //depot/projects/hammer/sys/amd64/include/memdev.h#2 integrate .. //depot/projects/hammer/sys/amd64/include/pmap.h#67 integrate .. //depot/projects/hammer/sys/amd64/include/vmparam.h#28 integrate .. //depot/projects/hammer/sys/arm/include/memdev.h#2 integrate .. //depot/projects/hammer/sys/boot/Makefile.inc#1 branch .. //depot/projects/hammer/sys/boot/arm/Makefile.inc#1 branch .. //depot/projects/hammer/sys/boot/arm/at91/Makefile.inc#4 integrate .. //depot/projects/hammer/sys/boot/efi/Makefile.inc#4 integrate .. //depot/projects/hammer/sys/boot/i386/Makefile.inc#8 integrate .. //depot/projects/hammer/sys/boot/i386/boot2/boot2.c#23 integrate .. //depot/projects/hammer/sys/boot/i386/loader/Makefile#16 integrate .. //depot/projects/hammer/sys/boot/ia64/Makefile.inc#4 integrate .. //depot/projects/hammer/sys/boot/ia64/common/Makefile#2 integrate .. //depot/projects/hammer/sys/boot/ia64/efi/Makefile#5 integrate .. //depot/projects/hammer/sys/boot/ia64/ski/Makefile#6 integrate .. //depot/projects/hammer/sys/boot/ofw/Makefile.inc#1 branch .. //depot/projects/hammer/sys/boot/pc98/Makefile.inc#5 integrate .. //depot/projects/hammer/sys/boot/pc98/boot2/Makefile#10 integrate .. //depot/projects/hammer/sys/boot/pc98/loader/Makefile#13 integrate .. //depot/projects/hammer/sys/boot/powerpc/Makefile.inc#1 branch .. //depot/projects/hammer/sys/boot/powerpc/ofw/Makefile#4 integrate .. //depot/projects/hammer/sys/boot/sparc64/Makefile.inc#2 integrate .. //depot/projects/hammer/sys/boot/sparc64/loader/Makefile#10 integrate .. //depot/projects/hammer/sys/boot/uboot/Makefile.inc#1 branch .. //depot/projects/hammer/sys/compat/pecoff/imgact_pecoff.c#20 delete .. //depot/projects/hammer/sys/compat/pecoff/imgact_pecoff.h#3 delete .. //depot/projects/hammer/sys/conf/NOTES#147 integrate .. //depot/projects/hammer/sys/conf/files#184 integrate .. //depot/projects/hammer/sys/conf/kern.mk#27 integrate .. //depot/projects/hammer/sys/conf/kern.pre.mk#54 integrate .. //depot/projects/hammer/sys/dev/aac/aac_pci.c#33 integrate .. //depot/projects/hammer/sys/dev/acpi_support/acpi_asus.c#12 integrate .. //depot/projects/hammer/sys/dev/ce/ceddk.h#2 integrate .. //depot/projects/hammer/sys/dev/ce/if_ce.c#7 integrate .. //depot/projects/hammer/sys/dev/cp/cpddk.h#5 integrate .. //depot/projects/hammer/sys/dev/cp/if_cp.c#26 integrate .. //depot/projects/hammer/sys/dev/ctau/ctddk.h#3 integrate .. //depot/projects/hammer/sys/dev/ctau/if_ct.c#29 integrate .. //depot/projects/hammer/sys/dev/cx/cxddk.h#3 integrate .. //depot/projects/hammer/sys/dev/cx/if_cx.c#37 integrate .. //depot/projects/hammer/sys/dev/io/iodev.c#2 integrate .. //depot/projects/hammer/sys/dev/mfi/mfi.c#16 integrate .. //depot/projects/hammer/sys/dev/mpt/mpt_pci.c#24 integrate .. //depot/projects/hammer/sys/dev/mpt/mpt_user.c#2 integrate .. //depot/projects/hammer/sys/dev/sound/pci/atiixp.h#5 integrate .. //depot/projects/hammer/sys/dev/usb/usbdevs#105 integrate .. //depot/projects/hammer/sys/dev/usb/uscanner.c#31 integrate .. //depot/projects/hammer/sys/fs/smbfs/smbfs_node.c#26 integrate .. //depot/projects/hammer/sys/geom/virstor/g_virstor.c#2 integrate .. //depot/projects/hammer/sys/i386/include/iodev.h#2 integrate .. //depot/projects/hammer/sys/i386/include/memdev.h#2 integrate .. //depot/projects/hammer/sys/ia64/include/memdev.h#2 integrate .. //depot/projects/hammer/sys/kern/kern_cpuset.c#7 integrate .. //depot/projects/hammer/sys/kern/kern_descrip.c#83 integrate .. //depot/projects/hammer/sys/kern/kern_intr.c#50 integrate .. //depot/projects/hammer/sys/kern/kern_lockf.c#21 integrate .. //depot/projects/hammer/sys/kern/kern_xxx.c#15 integrate .. //depot/projects/hammer/sys/kern/stack_protector.c#1 branch .. //depot/projects/hammer/sys/kern/uipc_sem.c#23 integrate .. //depot/projects/hammer/sys/kern/uipc_shm.c#4 integrate .. //depot/projects/hammer/sys/mips/include/iodev.h#2 integrate .. //depot/projects/hammer/sys/mips/include/memdev.h#2 integrate .. //depot/projects/hammer/sys/modules/nfslockd/Makefile#2 integrate .. //depot/projects/hammer/sys/modules/pecoff/Makefile#5 delete .. //depot/projects/hammer/sys/modules/ralfw/Makefile#2 integrate .. //depot/projects/hammer/sys/modules/sem/Makefile#3 integrate .. //depot/projects/hammer/sys/net/if.c#77 integrate .. //depot/projects/hammer/sys/net/if_bridge.c#41 integrate .. //depot/projects/hammer/sys/net/if_gre.c#38 integrate .. //depot/projects/hammer/sys/net/if_loop.c#35 integrate .. //depot/projects/hammer/sys/net/if_var.h#48 integrate .. //depot/projects/hammer/sys/netinet/udp_usrreq.c#56 integrate .. //depot/projects/hammer/sys/netinet6/in6_rmx.c#15 integrate .. //depot/projects/hammer/sys/netinet6/ip6_ipsec.c#6 integrate .. //depot/projects/hammer/sys/netipsec/key.c#21 integrate .. //depot/projects/hammer/sys/nfsclient/nfs.h#23 integrate .. //depot/projects/hammer/sys/nfsclient/nfs_node.c#27 integrate .. //depot/projects/hammer/sys/nfsclient/nfs_vfsops.c#58 integrate .. //depot/projects/hammer/sys/nfsclient/nfs_vnops.c#62 integrate .. //depot/projects/hammer/sys/nfsclient/nfsmount.h#12 integrate .. //depot/projects/hammer/sys/nfsclient/nfsnode.h#22 integrate .. //depot/projects/hammer/sys/nfsserver/nfs_syscalls.c#26 integrate .. //depot/projects/hammer/sys/nlm/nlm.h#2 integrate .. //depot/projects/hammer/sys/nlm/nlm_advlock.c#1 branch .. //depot/projects/hammer/sys/nlm/nlm_prot.h#2 integrate .. //depot/projects/hammer/sys/nlm/nlm_prot_clnt.c#3 integrate .. //depot/projects/hammer/sys/nlm/nlm_prot_impl.c#5 integrate .. //depot/projects/hammer/sys/nlm/nlm_prot_server.c#3 integrate .. //depot/projects/hammer/sys/powerpc/include/memdev.h#2 integrate .. //depot/projects/hammer/sys/rpc/auth_unix.c#3 integrate .. //depot/projects/hammer/sys/rpc/authunix_prot.c#3 integrate .. //depot/projects/hammer/sys/rpc/clnt.h#2 integrate .. //depot/projects/hammer/sys/rpc/clnt_dg.c#3 integrate .. //depot/projects/hammer/sys/rpc/clnt_rc.c#4 integrate .. //depot/projects/hammer/sys/rpc/clnt_vc.c#3 integrate .. //depot/projects/hammer/sys/rpc/rpcb_clnt.c#3 integrate .. //depot/projects/hammer/sys/rpc/svc_vc.c#3 integrate .. //depot/projects/hammer/sys/security/mac/mac_framework.h#13 integrate .. //depot/projects/hammer/sys/security/mac/mac_policy.h#14 integrate .. //depot/projects/hammer/sys/security/mac/mac_posix_sem.c#8 integrate .. //depot/projects/hammer/sys/security/mac_biba/mac_biba.c#48 integrate .. //depot/projects/hammer/sys/security/mac_mls/mac_mls.c#47 integrate .. //depot/projects/hammer/sys/security/mac_stub/mac_stub.c#31 integrate .. //depot/projects/hammer/sys/security/mac_test/mac_test.c#50 integrate .. //depot/projects/hammer/sys/sparc64/include/in_cksum.h#4 integrate .. //depot/projects/hammer/sys/sparc64/include/memdev.h#2 integrate .. //depot/projects/hammer/sys/sun4v/include/in_cksum.h#2 integrate .. //depot/projects/hammer/sys/sun4v/include/memdev.h#2 integrate .. //depot/projects/hammer/sys/sys/fcntl.h#9 integrate .. //depot/projects/hammer/sys/sys/file.h#20 integrate .. //depot/projects/hammer/sys/sys/ksem.h#2 integrate .. //depot/projects/hammer/sys/sys/lockf.h#9 integrate .. //depot/projects/hammer/sys/sys/param.h#114 integrate .. //depot/projects/hammer/sys/sys/priv.h#9 integrate .. //depot/projects/hammer/sys/sys/semaphore.h#2 integrate .. //depot/projects/hammer/sys/sys/user.h#26 integrate .. //depot/projects/hammer/tools/build/options/WITHOUT_SSP#2 integrate .. //depot/projects/hammer/tools/regression/file/flock/flock.c#2 integrate .. //depot/projects/hammer/tools/regression/lib/libc/stdio/Makefile#5 integrate .. //depot/projects/hammer/tools/regression/lib/libc/stdio/test-print-positional.c#1 branch .. //depot/projects/hammer/tools/regression/posixsem/Makefile#1 branch .. //depot/projects/hammer/tools/regression/posixsem/posixsem.c#1 branch .. //depot/projects/hammer/tools/regression/posixsem/posixsem.t#1 branch .. //depot/projects/hammer/tools/regression/posixsem/test.c#1 branch .. //depot/projects/hammer/tools/regression/posixsem/test.h#1 branch .. //depot/projects/hammer/tools/regression/posixshm/test.c#2 integrate .. //depot/projects/hammer/usr.bin/cpio/cpio.c#4 integrate .. //depot/projects/hammer/usr.bin/gzip/gzip.1#5 integrate .. //depot/projects/hammer/usr.bin/gzip/unbzip2.c#2 integrate .. //depot/projects/hammer/usr.bin/gzip/znew#3 integrate .. //depot/projects/hammer/usr.bin/make/make.1#35 integrate .. //depot/projects/hammer/usr.bin/procstat/procstat_files.c#4 integrate .. //depot/projects/hammer/usr.bin/su/su.1#13 integrate .. //depot/projects/hammer/usr.bin/tar/write.c#33 integrate .. //depot/projects/hammer/usr.bin/unzip/unzip.1#2 integrate .. //depot/projects/hammer/usr.bin/unzip/unzip.c#2 integrate .. //depot/projects/hammer/usr.sbin/config/mkmakefile.c#17 integrate .. //depot/projects/hammer/usr.sbin/cron/cron/cron.8#6 integrate .. //depot/projects/hammer/usr.sbin/cron/cron/cron.c#7 integrate .. //depot/projects/hammer/usr.sbin/cron/cron/cron.h#6 integrate .. //depot/projects/hammer/usr.sbin/cron/cron/do_command.c#8 integrate .. //depot/projects/hammer/usr.sbin/mountd/exports.5#9 integrate .. //depot/projects/hammer/usr.sbin/newsyslog/newsyslog.conf.5#7 integrate .. //depot/projects/hammer/usr.sbin/ngctl/main.c#11 integrate .. //depot/projects/hammer/usr.sbin/pmcstat/pmcstat.8#11 integrate .. //depot/projects/hammer/usr.sbin/pmcstat/pmcstat.c#16 integrate .. //depot/projects/hammer/usr.sbin/rpc.lockd/lockd.c#13 integrate .. //depot/projects/hammer/usr.sbin/rpc.statd/file.c#4 integrate .. //depot/projects/hammer/usr.sbin/wpa/wpa_supplicant/Makefile#14 integrate .. //depot/projects/hammer/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5#10 integrate Differences ... ==== //depot/projects/hammer/Makefile.inc1#137 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.606 2008/06/18 13:52:58 obrien Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.607 2008/06/25 21:33:28 ru Exp $ # # Make command line options: # -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir @@ -225,6 +225,7 @@ ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ DESTDIR= \ BOOTSTRAPPING=${OSRELDATE} \ + -DWITHOUT_SSP \ -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \ -DWITHOUT_NLS -DNO_PIC -DWITHOUT_PROFILE -DNO_SHARED \ -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF @@ -235,7 +236,7 @@ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ DESTDIR= \ BOOTSTRAPPING=${OSRELDATE} -DNO_LINT -DNO_CPU_CFLAGS \ - -DNO_WARNS -DNO_CTF + -DNO_WARNS -DNO_CTF -DWITHOUT_SSP # cross-tools stage XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \ @@ -452,7 +453,7 @@ .if ${MK_KERBEROS} != "no" .for _t in obj depend all cd ${.CURDIR}/kerberos5/tools; \ - MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} DESTDIR= ${_t} + MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} -DWITHOUT_SSP DESTDIR= ${_t} .endfor .endif .for _t in obj includes @@ -480,7 +481,7 @@ .endfor .for _dir in lib/ncurses/ncurses lib/ncurses/ncursesw lib/libmagic cd ${.CURDIR}/${_dir}; \ - MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} DESTDIR= build-tools + MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} -DWITHOUT_SSP DESTDIR= build-tools .endfor cd ${.CURDIR}; \ ${LIB32WMAKE} -f Makefile.inc1 libraries @@ -772,14 +773,14 @@ @echo "--------------------------------------------------------------" cd ${KRNLOBJDIR}/${_kernel}; \ MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \ - ${MAKE} -DNO_CPU_CFLAGS -DNO_CTF \ + ${MAKE} -DWITHOUT_SSP -DNO_CPU_CFLAGS -DNO_CTF \ -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile # XXX - Gratuitously builds aicasm in the ``makeoptions NO_MODULES'' case. .if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules) .for target in obj depend all cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \ MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \ - ${MAKE} -DNO_CPU_CFLAGS -DNO_CTF ${target} + ${MAKE} -DWITHOUT_SSP -DNO_CPU_CFLAGS -DNO_CTF ${target} .endfor .endif .if !defined(NO_KERNELDEPEND) ==== //depot/projects/hammer/ObsoleteFiles.inc#54 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.143 2008/06/14 10:42:18 ed Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.144 2008/07/01 21:54:08 danger Exp $ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently @@ -14,6 +14,9 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20080701: wpa_supplicant.conf moved to share/examples/etc/ +OLD_FILES+=usr/share/examples/wpa_supplicant/wpa_supplicant.conf +OLD_DIRS+=usr/share/examples/wpa_supplicant # 20080614: sgtty removed OLD_FILES+=usr/include/sys/ttychars.h OLD_FILES+=usr/include/sys/ttydev.h ==== //depot/projects/hammer/contrib/gcc/config/i386/freebsd.h#14 (text+ko) ==== @@ -22,7 +22,7 @@ the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* $FreeBSD: src/contrib/gcc/config/i386/freebsd.h,v 1.73 2007/05/19 02:30:20 kan Exp $ */ +/* $FreeBSD: src/contrib/gcc/config/i386/freebsd.h,v 1.75 2008/06/28 15:28:17 obrien Exp $ */ #undef CC1_SPEC #define CC1_SPEC "%(cc1_cpu) %{profile:-p}" @@ -54,7 +54,7 @@ /* Reset our STARTFILE_SPEC which was properly set in config/freebsd.h but trashed by config//. */ -#undef STARTFILE_SPEC +#undef STARTFILE_SPEC #define STARTFILE_SPEC FBSD_STARTFILE_SPEC /* Provide an ENDFILE_SPEC appropriate for FreeBSD/i386. */ @@ -78,13 +78,13 @@ #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD) -#undef SUBTARGET_EXTRA_SPECS /* i386.h bogusly defines it. */ +#undef SUBTARGET_EXTRA_SPECS /* i386.h bogusly defines it. */ #define SUBTARGET_EXTRA_SPECS \ { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER } #define TARGET_VERSION fprintf (stderr, " (i386 FreeBSD/ELF)"); -#define TARGET_ELF 1 +#define TARGET_ELF 1 /* This goes away when the math emulator is fixed. */ #undef TARGET_SUBTARGET_DEFAULT @@ -101,7 +101,7 @@ /* FreeBSD sets the rounding precision of the FPU to 53 bits. Let the compiler get the contents of and std::numeric_limits correct. */ -#undef TARGET_96_ROUND_53_LONG_DOUBLE +#undef TARGET_96_ROUND_53_LONG_DOUBLE #define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT) /* Tell final.c that we don't need a label passed to mcount. */ @@ -110,7 +110,7 @@ /* Output assembler code to FILE to begin profiling of the current function. LABELNO is an optional label. */ -#undef MCOUNT_NAME +#undef MCOUNT_NAME #define MCOUNT_NAME ".mcount" /* Output assembler code to FILE to end profiling of the current function. */ @@ -145,7 +145,7 @@ else \ fprintf ((FILE), "%s", xname); \ } \ - else \ + else \ { \ if (xname[0] == '%') \ xname += 2; \ @@ -191,7 +191,7 @@ uninitialized global data will be output in the data section if `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be used. */ -#undef BSS_SECTION_ASM_OP +#undef BSS_SECTION_ASM_OP #define BSS_SECTION_ASM_OP "\t.section\t.bss" /* Like `ASM_OUTPUT_BSS' except takes the required alignment as a @@ -202,7 +202,7 @@ Try to use function `asm_output_aligned_bss' defined in file `varasm.c' when defining this macro. */ -#undef ASM_OUTPUT_ALIGNED_BSS +#undef ASM_OUTPUT_ALIGNED_BSS #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN) @@ -230,7 +230,7 @@ assemble_name (asm_out_file, NAME); \ fputc ('-', asm_out_file); \ assemble_name (asm_out_file, \ - XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \ + XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \ fprintf (asm_out_file, "\n"); \ } while (0) ==== //depot/projects/hammer/etc/devd.conf#33 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/devd.conf,v 1.41 2008/06/15 13:26:25 kmacy Exp $ +# $FreeBSD: src/etc/devd.conf,v 1.42 2008/06/27 12:04:36 rpaulo Exp $ # # Refer to devd.conf(5) and devd(8) man pages for the details on how to # run and configure devd. @@ -255,6 +255,28 @@ action "/etc/rc.resume acpi $notify"; }; +# The next blocks enable volume hotkeys that can be found on the Asus EeePC +notify 0 { + match "system" "ACPI"; + match "subsystem" "ASUS-Eee"; + match "notify" "0x13"; + action "mixer 0"; +}; + +notify 0 { + match "system" "ACPI"; + match "subsystem" "ASUS-Eee"; + match "notify" "0x14"; + action "mixer vol -10"; +}; + +notify 0 { + match "system" "ACPI"; + match "subsystem" "ASUS-Eee"; + match "notify" "0x15"; + action "mixer vol +10"; +}; + /* EXAMPLES TO END OF FILE # The following might be an example of something that a vendor might ==== //depot/projects/hammer/etc/periodic/security/800.loginfail#7 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/periodic/security/800.loginfail,v 1.8 2007/02/23 21:42:54 remko Exp $ +# $FreeBSD: src/etc/periodic/security/800.loginfail,v 1.9 2008/06/30 08:01:47 mtm Exp $ # # Show login failures @@ -59,7 +59,7 @@ [Yy][Ee][Ss]) echo "" echo "${host} login failures:" - n=$(catmsgs | egrep -ia "^$yesterday.*: .* (fail|invalid|bad|illegal)" | + n=$(catmsgs | egrep -ia "^$yesterday.*: .*(fail|invalid|bad|illegal)" | tee /dev/stderr | wc -l) [ $n -gt 0 ] && rc=1 || rc=0;; *) rc=0;; ==== //depot/projects/hammer/etc/rc.d/lockd#6 (text+ko) ==== @@ -1,7 +1,7 @@ #!/bin/sh # # FreeBSD History: src/etc/rc.d/nfslocking,v 1.11 2004/10/07 13:55:26 mtm -# $FreeBSD: src/etc/rc.d/lockd,v 1.20 2008/06/23 04:05:39 mtm Exp $ +# $FreeBSD: src/etc/rc.d/lockd,v 1.21 2008/06/27 15:45:17 mtm Exp $ # # PROVIDE: lockd @@ -15,7 +15,7 @@ rcvar=rpc_lockd_enable command="/usr/sbin/rpc.${name}" start_precmd='lockd_precmd' -stop_precmd='checkyesno nfs_server_enable || checkyesno nfsclient_enable' +stop_precmd='checkyesno nfs_server_enable || checkyesno nfs_client_enable' status_precmd=$stop_precmd # Make sure that we are either an NFS client or server, and that we get @@ -26,7 +26,7 @@ local ret ret=0 - if ! checkyesno nfs_server_enable && ! checkyesno nfsclient_enable + if ! checkyesno nfs_server_enable && ! checkyesno nfs_client_enable then ret=1 fi ==== //depot/projects/hammer/etc/rc.d/statd#5 (text+ko) ==== @@ -1,7 +1,7 @@ #!/bin/sh # # FreeBSD History: src/etc/rc.d/nfslocking,v 1.11 2004/10/07 13:55:26 mtm Exp -# $FreeBSD: src/etc/rc.d/statd,v 1.19 2008/06/23 04:05:39 mtm Exp $ +# $FreeBSD: src/etc/rc.d/statd,v 1.20 2008/06/27 15:45:17 mtm Exp $ # # PROVIDE: statd @@ -15,7 +15,7 @@ rcvar=rpc_statd_enable command="/usr/sbin/rpc.${name}" start_precmd='statd_precmd' -stop_precmd='checkyesno nfs_server_enable || checkyesno nfsclient_enable' +stop_precmd='checkyesno nfs_server_enable || checkyesno nfs_client_enable' status_precmd=$stop_precmd # Make sure that we are either an NFS client or server, and that we get @@ -26,7 +26,7 @@ local ret ret=0 - if ! checkyesno nfs_server_enable && ! checkyesno nfsclient_enable + if ! checkyesno nfs_server_enable && ! checkyesno nfs_client_enable then ret=1 fi ==== //depot/projects/hammer/games/fortune/datfiles/fortunes#82 (text+ko) ==== @@ -1,5 +1,5 @@ This fortune brought to you by: -$FreeBSD: src/games/fortune/datfiles/fortunes,v 1.264 2008/06/23 20:27:37 phk Exp $ +$FreeBSD: src/games/fortune/datfiles/fortunes,v 1.265 2008/06/25 04:56:08 wollman Exp $ % ======================================================================= || || @@ -14259,7 +14259,7 @@ The computer assumes that all behavior is in pursuit of an ultimate goal. Whenever a motorist changes his or her mind and veers off course, the GPS lady issues that snippy announcement: "Recalculating!" - -- Joel Achenbach (www.slate.com, 20 jun 2008) + -- Joel Achenbach (www.slate.com, 20 Jun 2008) % Computers don't actually think. You just think they think. ==== //depot/projects/hammer/gnu/lib/Makefile#8 (text+ko) ==== @@ -1,8 +1,8 @@ -# $FreeBSD: src/gnu/lib/Makefile,v 1.42 2007/05/19 04:25:54 kan Exp $ +# $FreeBSD: src/gnu/lib/Makefile,v 1.43 2008/06/25 21:33:28 ru Exp $ .include -SUBDIR= csu libgcc libgcov libdialog libgomp libregex libreadline +SUBDIR= csu libgcc libgcov libdialog libgomp libregex libreadline libssp # libsupc++ uses libstdc++ headers, although 'make includes' should # have taken care of that already. @@ -14,8 +14,4 @@ SUBDIR+= libobjc .endif -.if ${MK_SSP} != "no" -SUBDIR+= libssp -.endif - .include ==== //depot/projects/hammer/gnu/lib/csu/Makefile#12 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/lib/csu/Makefile,v 1.28 2008/01/24 07:43:09 ru Exp $ +# $FreeBSD: src/gnu/lib/csu/Makefile,v 1.29 2008/06/25 21:33:28 ru Exp $ GCCDIR= ${.CURDIR}/../../../contrib/gcc GCCLIB= ${.CURDIR}/../../../contrib/gcclibs @@ -19,6 +19,7 @@ -I${CCDIR}/cc_tools CRTS_CFLAGS= -DCRTSTUFFS_O -DSHARED ${PICFLAG} MKDEP= -DCRT_BEGIN +WITHOUT_SSP= .if ${MACHINE_ARCH} == "ia64" BEGINSRC= crtbegin.asm ==== //depot/projects/hammer/gnu/lib/libssp/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/lib/libssp/Makefile,v 1.2 2007/05/22 10:40:58 ru Exp $ +# $FreeBSD: src/gnu/lib/libssp/Makefile,v 1.3 2008/06/25 21:33:28 ru Exp $ GCCDIR= ${.CURDIR}/../../../contrib/gcc GCCLIB= ${.CURDIR}/../../../contrib/gcclibs @@ -10,6 +10,7 @@ SHLIB_MAJOR= 0 SHLIBDIR?= /lib NO_PROFILE= +WITHOUT_SSP= SRCS= ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \ memset-chk.c snprintf-chk.c sprintf-chk.c stpcpy-chk.c \ ==== //depot/projects/hammer/gnu/usr.bin/cvs/contrib/Makefile#5 (text+ko) ==== @@ -1,6 +1,4 @@ -# $FreeBSD: src/gnu/usr.bin/cvs/contrib/Makefile,v 1.20 2008/01/16 17:15:59 obrien Exp $ - -.POSIX: +# $FreeBSD: src/gnu/usr.bin/cvs/contrib/Makefile,v 1.21 2008/06/27 14:59:23 obrien Exp $ .include "../Makefile.inc" @@ -21,6 +19,10 @@ .SUFFIXES: .sh .pl .in +# Prevent Makefile.in from overwriting Makefile through the suffix rules. +Makefile: + @: + .sh: cp ${.IMPSRC} ${.TARGET} ==== //depot/projects/hammer/lib/libarchive/archive_read_support_format_zip.c#20 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_zip.c,v 1.24 2008/06/15 05:15:53 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_zip.c,v 1.26 2008/06/30 16:19:26 des Exp $"); #ifdef HAVE_ERRNO_H #include @@ -53,6 +53,9 @@ int64_t entry_compressed_bytes_read; int64_t entry_uncompressed_bytes_read; + /* Running CRC32 of the decompressed data */ + unsigned long entry_crc32; + unsigned version; unsigned system; unsigned flags; @@ -70,7 +73,7 @@ char end_of_entry; char end_of_entry_cleanup; - long crc32; + unsigned long crc32; ssize_t filename_length; ssize_t extra_length; int64_t uncompressed_size; @@ -299,6 +302,7 @@ zip->end_of_entry_cleanup = 0; zip->entry_uncompressed_bytes_read = 0; zip->entry_compressed_bytes_read = 0; + zip->entry_crc32 = crc32(0, NULL, 0); if ((h = __archive_read_ahead(a, 4)) == NULL) return (ARCHIVE_FATAL); @@ -523,14 +527,13 @@ "ZIP uncompressed data is wrong size"); return (ARCHIVE_WARN); } -/* TODO: Compute CRC. */ -/* - if (zip->crc32 != zip->entry_crc32_calculated) { + /* Check computed CRC against header */ + if (zip->crc32 != zip->entry_crc32) { archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, - "ZIP data CRC error"); + "ZIP bad CRC: 0x%lx should be 0x%lx", + zip->entry_crc32, zip->crc32); return (ARCHIVE_WARN); } -*/ /* End-of-entry cleanup done. */ zip->end_of_entry_cleanup = 1; } @@ -570,6 +573,11 @@ } break; } + /* Update checksum */ + if (r == ARCHIVE_OK && *size) { + zip->entry_crc32 = + crc32(zip->entry_crc32, *buff, *size); + } return (r); } ==== //depot/projects/hammer/lib/libarchive/test/Makefile#12 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libarchive/test/Makefile,v 1.21 2008/06/15 05:05:53 kientzle Exp $ +# $FreeBSD: src/lib/libarchive/test/Makefile,v 1.23 2008/06/26 11:58:26 des Exp $ # Where to find the libarchive sources LA_SRCDIR=${.CURDIR}/.. @@ -72,7 +72,7 @@ # Build the test program using all libarchive sources + the test sources. SRCS= ${LA_SRCS} \ ${TESTS} \ - ${.OBJDIR}/list.h \ + list.h \ main.c \ read_open_memory.c @@ -84,19 +84,19 @@ CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\" LDADD= -lz -lbz2 CFLAGS+= -static -g -CFLAGS+= -I${LA_SRCDIR} +CFLAGS+= -I${LA_SRCDIR} -I. # Uncomment to link against dmalloc -LDADD+= -L/usr/local/lib -ldmalloc -CFLAGS+= -I/usr/local/include -DUSE_DMALLOC -WARNS=6 +#LDADD+= -L/usr/local/lib -ldmalloc +#CFLAGS+= -I/usr/local/include -DUSE_DMALLOC +#WARNS=6 # Build libarchive_test and run it. check test: libarchive_test ./libarchive_test -v -r ${.CURDIR} # list.h is just a list of all tests, as indicated by DEFINE_TEST macro lines -${.OBJDIR}/list.h: ${TESTS} Makefile +list.h: ${TESTS} Makefile (cd ${.CURDIR}; cat ${TESTS}) | grep DEFINE_TEST > list.h CLEANFILES += *.out *.o *.core *~ list.h ==== //depot/projects/hammer/lib/libarchive/test/test_compat_zip_1.zip.uu#2 (text+ko) ==== @@ -1,3 +1,4 @@ +$FreeBSD: src/lib/libarchive/test/test_compat_zip_1.zip.uu,v 1.2 2008/06/30 15:49:12 des Exp $ begin 644 test_compat_zip_1.zip M4$L#!!0`"``(``B$@S<````````````````4````345402U)3D8O34%.249% M4U0N34;S3 1 assert(0 == archive_read_finish(a)); #else ==== //depot/projects/hammer/lib/libc/Makefile#31 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.2 (Berkeley) 2/3/94 -# $FreeBSD: src/lib/libc/Makefile,v 1.73 2007/10/01 18:15:10 ru Exp $ +# $FreeBSD: src/lib/libc/Makefile,v 1.74 2008/06/25 21:33:28 ru Exp $ SHLIBDIR?= /lib @@ -122,3 +122,9 @@ # Disable warnings in contributed sources. CWARNFLAGS:= ${.IMPSRC:Ngdtoa_*.c:C/^.+$/${CWARNFLAGS}/} +# XXX For now, we don't allow libc to be compiled with +# -fstack-protector-all because it breaks rtld. We may want to make a librtld +# in the future to circumvent this. +SSP_CFLAGS:= ${SSP_CFLAGS:S/^-fstack-protector-all$/-fstack-protector/} +# Disable stack protection for SSP symbols. +SSP_CFLAGS:= ${.IMPSRC:N*/stack_protector.c:C/^.+$/${SSP_CFLAGS}/} ==== //depot/projects/hammer/lib/libc/amd64/gen/_setjmp.S#8 (text+ko) ==== @@ -34,7 +34,7 @@ .asciz "@(#)_setjmp.s 5.1 (Berkeley) 4/23/90" #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/_setjmp.S,v 1.19 2007/01/09 00:27:48 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/_setjmp.S,v 1.20 2008/06/28 17:55:43 das Exp $"); /* * C library -- _setjmp, _longjmp @@ -58,6 +58,7 @@ movq %r14,48(%rax) /* 6; r14 */ movq %r15,56(%rax) /* 7; r15 */ fnstcw 64(%rax) /* 8; fpu cw */ + stmxcsr 68(%rax) /* and mxcsr */ xorq %rax,%rax ret @@ -65,6 +66,15 @@ .set CNAME(_longjmp),CNAME(___longjmp) ENTRY(___longjmp) movq %rdi,%rdx + /* Restore the mxcsr, but leave exception flags intact. */ + stmxcsr -4(%rsp) + movl 68(%rdx),%eax + andl $0xffffffc0,%eax + movl -4(%rsp),%edi + andl $0x3f,%edi + xorl %eax,%edi + movl %edi,-4(%rsp) + ldmxcsr -4(%rsp) movq %rsi,%rax /* retval */ movq 0(%rdx),%rcx movq 8(%rdx),%rbx @@ -74,7 +84,6 @@ movq 40(%rdx),%r13 movq 48(%rdx),%r14 movq 56(%rdx),%r15 - fninit fldcw 64(%rdx) testq %rax,%rax jnz 1f ==== //depot/projects/hammer/lib/libc/amd64/gen/setjmp.S#10 (text+ko) ==== @@ -34,7 +34,7 @@ .asciz "@(#)setjmp.s 5.1 (Berkeley) 4/23/90" #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/setjmp.S,v 1.27 2007/01/09 00:27:48 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/setjmp.S,v 1.28 2008/06/28 17:55:43 das Exp $"); /* * C library -- _setjmp, _longjmp @@ -67,6 +67,7 @@ movq %r14,48(%rcx) /* 6; r14 */ movq %r15,56(%rcx) /* 7; r15 */ fnstcw 64(%rcx) /* 8; fpu cw */ + stmxcsr 68(%rcx) /* and mxcsr */ xorq %rax,%rax ret @@ -83,6 +84,15 @@ popq %rsi popq %rdi /* jmpbuf */ movq %rdi,%rdx + /* Restore the mxcsr, but leave exception flags intact. */ + stmxcsr -4(%rsp) + movl 68(%rdx),%eax + andl $0xffffffc0,%eax + movl -4(%rsp),%edi + andl $0x3f,%edi + xorl %eax,%edi + movl %edi,-4(%rsp) + ldmxcsr -4(%rsp) movq %rsi,%rax /* retval */ movq 0(%rdx),%rcx movq 8(%rdx),%rbx @@ -92,7 +102,6 @@ movq 40(%rdx),%r13 movq 48(%rdx),%r14 movq 56(%rdx),%r15 - fninit fldcw 64(%rdx) testq %rax,%rax jnz 1f ==== //depot/projects/hammer/lib/libc/gen/glob.c#7 (text+ko) ==== @@ -34,7 +34,7 @@ static char sccsid[] = "@(#)glob.c 8.3 (Berkeley) 10/13/93"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.26 2007/01/09 00:27:54 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.27 2008/06/26 07:12:35 mtm Exp $"); /* * glob(3) -- a superset of the one defined in POSIX 1003.2. @@ -143,7 +143,7 @@ static int g_Ctoc(const Char *, char *, size_t); static int g_lstat(Char *, struct stat *, glob_t *); static DIR *g_opendir(Char *, glob_t *); -static Char *g_strchr(Char *, wchar_t); +static const Char *g_strchr(const Char *, wchar_t); #ifdef notdef static Char *g_strcat(Char *, const Char *); #endif @@ -246,7 +246,7 @@ if (pattern[0] == LBRACE && pattern[1] == RBRACE && pattern[2] == EOS) return glob0(pattern, pglob, limit); - while ((ptr = (const Char *) g_strchr((Char *) ptr, LBRACE)) != NULL) + while ((ptr = g_strchr(ptr, LBRACE)) != NULL) if (!globexp2(ptr, pattern, pglob, &rv, limit)) return rv; @@ -449,7 +449,7 @@ if (c == NOT) ++qpatnext; if (*qpatnext == EOS || - g_strchr((Char *) qpatnext+1, RBRACKET) == NULL) { + g_strchr(qpatnext+1, RBRACKET) == NULL) { *bufnext++ = LBRACKET; if (c == NOT) --qpatnext; @@ -859,8 +859,8 @@ return(stat(buf, sb)); } -static Char * -g_strchr(Char *str, wchar_t ch) +static const Char * +g_strchr(const Char *str, wchar_t ch) { do { ==== //depot/projects/hammer/lib/libc/i386/gen/_setjmp.S#3 (text+ko) ==== @@ -34,7 +34,7 @@ .asciz "@(#)_setjmp.s 5.1 (Berkeley) 4/23/90" #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/i386/gen/_setjmp.S,v 1.17 2007/01/09 00:27:58 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/i386/gen/_setjmp.S,v 1.18 2008/06/28 17:58:06 das Exp $"); /* * C library -- _setjmp, _longjmp @@ -70,7 +70,6 @@ movl 12(%edx),%ebp movl 16(%edx),%esi movl 20(%edx),%edi - fninit fldcw 24(%edx) testl %eax,%eax jnz 1f ==== //depot/projects/hammer/lib/libc/i386/gen/setjmp.S#3 (text+ko) ==== @@ -34,7 +34,7 @@ .asciz "@(#)setjmp.s 5.1 (Berkeley) 4/23/90" #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/i386/gen/setjmp.S,v 1.23 2007/01/09 00:27:58 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/i386/gen/setjmp.S,v 1.24 2008/06/28 17:58:06 das Exp $"); /* * C library -- _setjmp, _longjmp @@ -90,7 +90,6 @@ movl 12(%edx),%ebp movl 16(%edx),%esi movl 20(%edx),%edi - fninit fldcw 24(%edx) testl %eax,%eax jnz 1f ==== //depot/projects/hammer/lib/libc/net/getaddrinfo.3#14 (text+ko) ==== @@ -16,9 +16,9 @@ .\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR .\" PERFORMANCE OF THIS SOFTWARE. .\" -.\" $FreeBSD: src/lib/libc/net/getaddrinfo.3,v 1.33 2007/06/06 19:24:02 remko Exp $ +.\" $FreeBSD: src/lib/libc/net/getaddrinfo.3,v 1.34 2008/07/01 22:59:20 danger Exp $ >>> TRUNCATED FOR MAIL (1000 lines) <<< From pgj at FreeBSD.org Wed Jul 2 03:36:01 2008 From: pgj at FreeBSD.org (Gabor Pali) Date: Wed Jul 2 03:36:06 2008 Subject: PERFORCE change 144455 for review Message-ID: <200807020336.m623a0Oi037943@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144455 Change 144455 by pgj@disznohal on 2008/07/02 03:35:57 A bit of rework in www/hu/advocacy Affected files ... .. //depot/projects/docproj_hu/www/hu/advocacy/index.sgml#4 edit .. //depot/projects/docproj_hu/www/hu/advocacy/myths.sgml#4 edit Differences ... ==== //depot/projects/docproj_hu/www/hu/advocacy/index.sgml#4 (text+ko) ==== @@ -33,15 +33,27 @@ -

Webes források

+

Webes források

  • *BSD mítoszok

    -

    Bemutatunk és leleplezünk néhány *BSD - projektrõl terjedõ mítoszt.

    +

    Bemutatunk és leleplezünk néhány + *BSD projektrõl terjedõ mítoszt.

    +
  • + +
  • &os; a @@ -63,34 +75,51 @@

    &os;-t használó oldalak

      +
    • A Daemon News + egy elektronikus publikáció a BSD + operációs rendszerekrõl + általában. A célja, hogy egy forrás + legyen a &os;, OpenBSD, és NetBSD + közösségek számára.
    • + +
    • A BSD Freak egy új + oldal, amely a BSD rendszerekrõl felhasználói + szemszögbõl bemutató leírásokat, + cikkeket és folyóiratokat + kínál.
    • + +
    • A Hosting Providers Performance a Netcraft + oldala, a nagyobb tár- és + tartalomszolgáltatások + megbízhatóságát követi nyomon, + amelyek közül sok &os;-t használ.
    • +
    • A Daemon News - egy elektronikus publikáció a BSD operációs - rendszerekrõl általában. A célja, hogy egy - forrás legyen a FreeBSD, OpenBSD, és NetBSD - közösségek számára.
    • + href="http://dmoz.org/Computers/Software/Operating_Systems/Unix/BSD/FreeBSD/" + name="dmoz">The Open Directory Project célja, hogy + a legátfogóbb könyvtár legyen a + weben. Ebben önkéntes szerkesztõk serege + segíti. -
    • A BSD Freak egy új oldal, - útmutatókat, cikkeket és folyóiratokat - kínál a BSD rendszerekrõl felhasználói - szemszögbõl
    • +
    • BSDCan, az - évente megrendezett BSD Konferencia a Kanadában található Ottawában.
    • + évente megrendezett BSD Konferencia a Kanadában + található Ottawában. -
    • EuroBSDCon, - az éves BSD Konferencia Európában.
    • +
    • EuroBSDCon, az + éves BSD Konferencia Európában.
    ==== //depot/projects/docproj_hu/www/hu/advocacy/myths.sgml#4 (text+ko) ==== @@ -2,7 +2,7 @@ - + %developers; @@ -17,579 +17,689 @@ &header; -

    Miközben a BSD projektek (DragonflyBSD, FreeBSD, NetBSD, és - OpenBSD) nagyra nõttek, számos mítosz kezdett - terjedni róluk. Ezek közül néhányat - jó szándékú, ám megfontolatlan - személyek indítottak el, másokat pedig önhitt - emberek.

    +

    Miközben a BSD projektek (DragonflyBSD, &os;, NetBSD + és az OpenBSD) nagyra nõttek, számos + mítosz kezdett terjedni róluk. Ezek közül + néhányat jó szándékú, + ám megfontolatlan személyek indítottak el, + másokat pedig önhitt emberek.

    -

    Ennek az oldalnak az a célja, hogy a lehetõ legnagyobb - tárgyilagosság mellett eloszlassa ezeket a +

    Ennek az oldalnak az a célja, hogy a lehetõ + legnagyobb tárgyilagosság mellett eloszlassa ezeket a tévhiteket.

    -
    Megjegyzés: Ezen az oldalon a "*BSD" - kifejezés mind a négy BSD projektre vonatkozik. Ahol a - mende-monda az egyik különálló projektre - vonatkozik, ott azt külön említjük.
    +
    Megjegyzés: Ezen az oldalon a ,,*BSD'' + kifejezés mind a négy BSD projektre vonatkozik. + Ahol az adott mende-monda csak az egyik + különálló projektre vonatkozik, ott azt + külön említjük.
    -
    Ha úgy gondolja, hogy az oldal valamely - témában hiányos ismereteket közöl, - kérjük értesítse az oldal - fenntartóját, &a.trhodes;-ot a következõ e-mail - címen: - <trhodes@FreeBSD.org> +
    Ha úgy érezzük, hogy az oldal + valamely témában hiányos ismereteket + közöl, akkor értesítsük az oldal + fenntartóját, &a.trhodes;-ot a következõ + e-mail címen: <trhodes@FreeBSD.org>

    Tartalom

    -

    Mítoszok

    +

    Mítoszok

    -

    A *BSD zárt fejlesztési - modellel rendelkezik

    +

    A *BSD rendszerek zárt + fejlesztési modellel rendelkeznek, sokkal inkább + ,,katedrálisok'' mintsem ,,bazárok''

    -

    Eric Raymond nagy hatású írása - "The - Cathedral and the Bazaar" címmel a Linux fejlesztési - modellt (és azt a modellt, amelyet Eric a fetchmail-hez - használt) említi mint a "nyílt" fejlesztési - modell példáját. Ezzel szemben a *BSD +

    Eric Raymond nagy hatású írása A katedrális és a bazár + címmel a Linux fejlesztési modellt (és azt a + modellt, amelyet Eric a fetchmail + kifejlesztéséhez használt) említi mint + a ,,nyílt'' fejlesztési modell + példáját. Ezzel szemben a *BSD fejlesztési modelljét gyakran jellemzik zártként.

    -

    A hallgatólagos bírálat szerint a "bazár" - (nyílt) jó, és a "katedrális" (zárt) - rossz.

    +

    A hallgatólagos bírálat szerint a + ,,bazár'' (nyílt) jó, és a + ,,katedrális'' (zárt) rossz.

    -

    Ha valami, akkor a *BSD fejlesztési modell - még inkább hasonlít a - "bazárhoz", mint a Linux vagy a fetchmail - esetében, amelyeket Eric említ.

    +

    Ha valami, akkor a *BSD rendszerek által alkalmazott + fejlesztési modell még inkább + hasonlít a ,,bazárhoz'', mint a Linux vagy a + fetchmail esetében, amelyeket Eric + említ.

    -

    Vegye figyelembe a következõket:

    +

    Ehhez elég csupán a következõket + figyelembe vennünk:

      -
    • Minden *BSD projekt: Az aktuális fejlesztési - forráskód a FreeBSD, NetBSD, és az OpenBSD - esetében is bárki számára - elérhetõ az Interneten keresztül, a nap 24 - órájában. Nem szükséges - arra várni, hogy egy új kiadás jelenjen meg.

      +
    • +

      Minden *BSD projekt esetén: A + forráskód aktuális változata a + &os;, NetBSD, és az OpenBSD esetében is a nap 24 + órájában bárki + számára elérhetõ az Interneten + keresztül. Nem szükséges arra várni, + hogy egy új kiadás jelenjen meg.

      -

      FreeBSD, NetBSD: Egy telepíthetõ "snapshot" - verzió válik elérhetõvé 24 - óránként. Ezek a snapshotok teljesen - ugyanúgy telepíthetõk mint a - közönséges kiadások, és a - telepítéshez nem szükséges egy - meglévõ rendszer.

      +

      &os;, NetBSD: Egy telepíthetõ ,,pillanat'' + verzió 24 óránként válik + elérhetõvé. Ezek a pillanatképek + teljesen ugyanúgy telepíthetõk mint a + közönséges kiadások, és a + telepítéshez nem szükséges egy + meglévõ rendszer.

      -

      OpenBSD: OpenBSD snapshotok naponta készülnek, - és ha Theo elég jónak találja õket, - felkerülnek a tükörszerverekre.

      +

      OpenBSD: OpenBSD pillanatképei naponta + készülnek, és ha Theo elég + jónak találja ezeket, felkerülnek a + tükörszerverekre.

      -

      Ezzel ellentétben a Linux kernelnek csak alkalmilag - válik elérhetõvé új verziója, - és a különbözõ disztribúciók - kiadási gyakorisága a disztribúció - fejlesztõitõl függ.

      +

      Ezzel ellentétben a Linux kernelnek csak alkalmilag + válik elérhetõvé új + verziója, és a különbözõ + disztribúciók kiadási gyakorisága + a disztribúció fejlesztõitõl + függ.

      -

      Itt nem kíséri harsonaszó egy új kernel - megjelenését, mivel a legtöbb *BSD - felhasználó számára ez egy mindennapi - esemény.

    • +

      Itt nem kíséri harsonaszó egy új + kernel megjelenését, mivel a legtöbb *BSD + felhasználó számára ez egy + teljesen megszokott esemény.

      + -
    • A *BSD projektek mind CVS-t használnak a - forráskód karbantartásához.

      +
    • +

      A *BSD projektek mind CVS-t használnak a + forráskód karbantartásához.

      -

      Minden *BSD projekt: a CVS Repository a nap 24 - órájában böngészhetõ, és - a repóból az egész rendszer letölthetõ. - A forrás elérhetõ Anonymous CVS, CVSup, CVSupit, - CTM (e-mail-en keresztül), vagy FTP - segítségével.

    • +

      Minden *BSD projekt esetén: a CVS Repository a + nap 24 órájában + böngészhetõ, és a repositoryból + az egész rendszer letölthetõ. A + forrás elérhetõ anonim CVS, CVSup, CVSupit, + CTM (e-mail-en keresztül) vagy egyszerû FTP + segítségével.

      + -
    • Bárki küldhet javításokat, - hibajelentéseket, dokumentációt, és - egyéb hozzájárulásokat. Ezt a *BSD - rendszerek részét képezõ send-pr - program, vagy a webes felület segítségével - lehet megtenni.

      +
    • +

      Bárki küldhet javításokat, + hibajelentéseket, dokumentációt, + és egyéb módokon is + hozzájárulhat a munkához. Ezt a *BSD + rendszerek részét képezõ + send-pr program vagy a webes felület + segítségével lehet megtenni.

      -

      A dokumentáció hemzseg az erre való - hivatkozásoktól.

    • +

      A dokumentáció hemzseg az erre utaló + hivatkozásoktól.

      + -
    • Nem mindenki hajthat végre változtatásokat a - *BSD kódban. Elõször committerré kell - válnia. Általában olyan emberek kapnak "commit - jogot", akik már a send-pr - segítségével, vagy hasonló módon - beküldtek pár jól átgondolt - változtatást a projektnek.

      +
    • +

      Nem mindenki hajthat végre + változtatásokat a *BSD rendszerek + forráskódjában, ehhez elõször + committerré kell válnia. + Általában olyan emberek kapnak ,,commit jogot'', + akik már a send-pr + segítségével vagy más + hasonló módon beküldtek már + pár alapos változtatást a projektnek.

      Ez a rendszer hasonló a Linux módszeréhez. Egyetlen ember, Linus jogosult megváltoztatni a kernelt, - de a különbözõ területek fejlesztése - (mint például a hálózati kód) - más emberek közt van szétosztva - karbantartásra.

      + de a különbözõ területek (mint + például a hálózati kód) + fejlesztését más emberek tartják + karban.

      -

      Mellesleg: Nik (nik@FreeBSD.org) jó példa erre. - Miután számos fejlesztést hajtott végre a - FreeBSD Dokumentációs Projekten és a weboldalon, - felajánlották neki a "commit jogot", hogy ne kelljen - más committereket zargatnia, hogy hajtsák végre - az általa készített fejlesztéseket. - Soha nem kérte ezt a jogot, ingyen kapta.

    • +

      Mellesleg Nik (nik@FreeBSD.org) jó példa erre. + Miután számos fejlesztést hajtott + végre a FreeBSD Dokumentációs Projekten + és a weboldalon, felajánlották neki a + ,,commit jogot'', hogy ne kelljen más committereket + zargatnia, hogy hajtsák végre az általa + készített fejlesztéseket. Soha nem + kérte ezt a jogot, ingyen kapta.

      +

    -

    Nem készíthet saját - disztribúciót, vagy egyéb, *BSD-bõl - származó munkát

    +

    A *BSD rendszerekrõl nem + készíthetõ saját + disztribúció, vagy nem származtatható + egyéb munka

    -

    Készíthet, csak a dokumentációban és - a forrásfájlokban fel kell tüntetnie, hogy a - kód honnan - származik. Rengeteg származtatott projekt - létezik:

    +

    Készíthetõ, csak a + dokumentációban és a + forrásfájlokban fel kell tüntetni, hogy a + forráskód honnan származik. Rengeteg + származtatott projekt létezik:

      -
    • A DragonflyBSD - a FreeBSD 4.X egy kódelágazásaként - indult, de azóta kialakult a saját - felhasználói közössége és a - fejlesztési céljai.

    • +
    • +

      A DragonflyBSD a + &os; 4.X egy leágazásaként indult, + de azóta már van saját + felhasználói közössége + és vannak fejlesztési céljai.

      +
    • -
    • A TrustedBSD - olyan kiegészítéseket nyújt - a FreeBSD-hez, amelyek a trusted operációs - rendszerekre jellemzõ funkciókkal látják - el azt, megcélozva ezzel az IT biztonsági - minõsítést, a Common Criteria-t (CC). - Ez a projekt fejlesztés alatt áll, a kód - nagy része visszakerül a FreeBSD alaprendszerbe, de a - fejlesztés külön történik.

    • +
    • +

      A TrustedBSD a + &os;-hez nyújt a megbízható (trusted) + operációs rendszerekre jellemzõ + funkciókat képviselõ + különbözõ kiterjesztéseket, + és ezzel az IT biztonsági + minõsítést, a Common Criteria-t (CC) + célozza meg. Ez a projekt folyamatos fejlesztés + alatt áll, a kód nagy része + visszakerül a &os; alaprendszerébe, de a + fejlesztés külön történik.

      +

    • -
    • A FreeSBIE egy - CD-ROM-ról futó teljes desktop rendszer. - Telepíthetõ is, de különösen - hasznos háttértár nélküli - számítógépekhez.

    • +
    • +

      A FreeSBIE egy + CD-ROM-ról futó teljes asztali rendszer. + Telepíthetõ is, de különösen + hasznos háttértár nélküli + számítógépekhez.

    • -
    • A Frenzy egy - másik live-CD disztribúció, de - elsõsorban adminisztrációs feladatokhoz. - Egyaránt tartalmaz hardvertesztelõ, - fájlrendszer-ellenõrzõ, biztonsági - ellenõrzõ, hálózat-konfiguráló - és -analizáló szoftvereket.

    • +
    • +

      A Frenzy egy + másik live-CD disztribúció, de + elsõsorban adminisztrációs feladatokhoz. + Egyaránt tartalmaz hardvertesztelõ, + állományrendszer-ellenõrzõ, + biztonsági ellenõrzõ, + hálózatkonfiguráló és + -analizáló szoftvereket.

      +

    • -
    • A PicoBSD - egy testreszabott FreeBSD disztribúció, amely - elfér akár egy floppy lemezen is. Remek eszköz - merevlemez nélküli 386-os PC-k routerré, vagy - nyomtató szerverré alakításához. - A FreeBSD forrásfa része, tekintse meg a - /usr/src/release/picobsd könyvtárat.

    • +
    • +

      A PicoBSD + egy testreszabott &os; disztribúció, amely + elfér akár egy floppy lemezen is. Remek + eszköz merevlemez nélküli 386-os PC-k + útválasztóvá vagy + nyomtatószerverré + alakításához. A &os; + forrásfájának része, lásd a + /usr/src/release/picobsd könyvtárat.

      +
    • -
    • A NanoBSD egy - másik projekt a FreeBSD minimális - helyigényû verzióinak - elõállításához amelyek - elférnek egy Compact Flash kártyán, vagy - egyéb elterjedt adathordozón. Ez a projekt is - a FreeBSD forrásfa része, tekintse meg a - /usr/src/tools/tools/nanobsd könyvtárat.

    • +
    • +

      A NanoBSD egy + másik olyan projekt, amely a &os; minimális + helyigényû verziójának + elõállításával foglalkozik. + Ez a változat elfér egy Compact Flash + kártyán vagy egyéb kisebb + méretû adathordozón. Ez a projekt is a + &os; forrásfájának része, + lásd a /usr/src/tools/tools/nanobsd + könyvtárat.

      +
    • -
    • A TinyBSD - shell scriptek egy olyan készlete, amelyek a - FreeBSD 5.X és 6.X verzióin alapuló - beágyazott rendszerek fejlesztéséhez - használható.

    • +
    • +

      A TinyBSD olyan + shell szripteket foglal össze, amelyek a &os; 5.X + és 6.X verzióin alapuló beágyazott + rendszerek fejlesztéséhez + használhatóak.

    • -
    • A ThinBSD egy - kisméretû rendszerindító lemez, - amellyel egy egyszerû PC-t használhatunk - Microsoft Windows RDP kliensként, vagy - X terminálként. Az egész - konfiguráció DHCP protokollon - végezhetõ.

    • +
    • +

      A ThinBSD egy + kisméretû rendszerindító lemez, + amellyel egy egyszerû PC-t használhatunk Microsoft + Windows RDP kliensként, vagy X + terminálként. Az egész + konfiguráció DHCP protokollon + végezhetõ.

      +
    • -
    • A PC-BSD egy dekstop - felhasználásra készített - FreeBSD leszármazott. A fejlesztés - célja, hogy könnyen telepíthetõ - legyen és egy segítõkész - közösség alakuljon ki - körülötte.

    • +
    • +

      A PC-BSD egy asztali + felhasználásra elõkészített + &os; leszármazott. A fejlesztés célja, + hogy könnyen telepíthetõ legyen és egy + segítõkész közösség + alakuljon ki körülötte.

      +
    • -
    • A DesktopBSD egy - másik desktop felhasználásra - szánt FreeBSD alapú operációs - rendszer.

    • +
    • +

      A DesktopBSD egy + másik asztali felhasználásra szánt + &os; alapú operációs rendszer.

      +
    • -
    • A - Gentoo/FreeBSD a Gentoo Projekt kezdeményezése - arra, hogy a Gentoo adminisztrációs adottságait - portolják a megbízható FreeBSD kernelre és - szoftverkörnyezetre. A projekt befejezetlen, - kísérleti stádiumban van.

    • +
    • +

      A Gentoo/&os; + a Gentoo Projekt kezdeményezése arra, hogy a + Gentoo adminisztrációs adottságait + portolják a megbízható &os; + rendszermagjára és + szoftverkörnyezetére. A projekt befejezetlen, + jelenleg kísérleti stádiumban van.

      +
    • -
    • A m0n0wall egy - FreeBSD alapú tûzfalrendszer, amely - rengeteg olyan funkcióval rendelkezik, amelyet - a drága tûzfalak nyújtanak, mint - például a webes interfész, - visszaállíthatóság a - gyári beállításokra, - alapos csomagszûrés, NAT/PAT - átirányítás, DHCP kliens - és szerver, gyorstáras névszerver - és még ennél is több.

    • +
    • +

      A m0n0wall egy &os; + alapú tûzfalrendszer. Rengeteg olyan + funkcióval rendelkezik, amelyet a drága + tûzfalak is nyújtanak, mint például + a webes interfész, gyári + beállítások + visszaállítása, + állapottartó csomagszûrés, NAT/PAT + átirányítás, DHCP kliens és + szerver, gyorstárazó névszerver és + még sok minden más.

      +
    • -
    • A pfSense egy - mo0nowall alapú tûzfalrendszer, de a fejlesztés - céljai és a támogatott funkciók - különbözõek, mint pl. az OpenBSD Packet - Filter (PF), FreeBSD 6.1, ALTQ támogatás a - kiûnõ háló csomagütemezéshez - és egy integrált csomagkezelõ rendszer a - bõvíthetõ funkcionalitásért.

    • +
    • +

      A pfSense egy m0n0wall + alapú tûzfalrendszer, de a fejlesztés + céljai és a támogatott funkciók + különbözõek, mint például az + OpenBSD Packet Filter (PF) és a &os; 6.1 + támogatása, vagy a kitûnõ + hálózati ütemezéshez az ALTQ + támogatása, valamint a funkcionalitás + bõvíthetõségét egy + integrált csomagkezelõ rendszer + segítségével valósítja + meg.

      +
    • -
    • A Whistle Interjet egy "hálózati - készülék", ami router, webszerver, - e-mail szerver és egyéb funkciókat - lát el, továbbá webböngészõvel - konfigurálható. A készülék - alapja a FreeBSD operációs rendszer, - és a Whistle a fejlesztéseinek nagy - részét visszaküldte a FreeBSD projekthez - (miközben eleget megtartott ahhoz, hogy az - üzleti versenyben maradhasson).

    • - +
    • +

      A Whistle Interjet egy ,,hálózati + készülék'', amely + útválasztó, webszerver, e-mail szerver + és egyéb funkciókat lát el, + továbbá webböngészõvel + konfigurálható. A készülék + alapja a &os; operációs rendszer, és a + Whistle a fejlesztéseinek nagy részét + visszaküldte a &os; Projektnek (miközben eleget + megtartott ahhoz, hogy az üzleti versenyben + maradhasson).

      +
    -

    A DragonflyBSD esetéhez hasonlóan, az OpenBSD sem volt - önálló projekt, a NetBSD projekt alapjaitól - indult el, és azóta kialakult a saját - szemléletmódja.

    +

    A DragonflyBSD esetéhez hasonlóan, az OpenBSD sem + volt önálló projekt, a NetBSD projekt + alapjaitól indult el és azóta kialakult a + saját szemléletmódja.


    -

    A *BSD egy remek kiszolgáló, de - rossz desktop rendszer

    +

    A *BSD rendszerek remek + kiszolgálók, de rossz asztali rendszerek

    -

    A *BSD egy remek kiszolgáló, de egy remek desktop - rendszer is. Sok elvárás a kiszolgálók - felé (gyors válaszidõ nagy terhelés alatt is, - stabilitás, erõforrások hatéony - kihasználása) ugyanúgy elvárás a - dektop rendszerek esetén is.

    +

    A *BSD rendszerek remek kiszolgálók, de egyben + remek asztali rendszerek is. Sok elvárás a + kiszolgálók felé (rövid + válaszidõ nagy terhelés alatt is, + stabilitás, az erõforrások hatékony + kihasználása) ugyanúgy elvárás + az asztali rendszerek esetén is.

    -

    A *BSD mûködik ugyanazokkal a desktop szoftverekkel (KDE, - GNOME, Firefox, ablakkezelõk), mint a Linux, és az irodai - szoftverek, mint például az OpenOffice csomag is - remekül mûködik a *BSD rendszerek alatt.

    +

    A *BSD rendszerek ugyanazokkal az asztali szoftverekkel (KDE, + GNOME, Firefox, ablakkezelõk) mûködnek, mint a + Linux, és az irodai szoftverek, mint például + az OpenOffice csomag is remekül mûködnek + alattuk.


    -

    A BSD kódbázis régi, - elavult és haldokló

    +

    A *BSD rendszerek + forráskódja régi, elavult és + haldoklik

    -

    A BSD kódbázis egyes részei több mint 20 - évesek is lehetnek, de ez egyáltalán nem jelenti - azt, hogy elavult, vagy haldokló. Rengeteg profi - felhasználó szereti azt a stabilitást, amelyet - többéves tesztelés eredményezett.

    +

    Noha a BSD rendszerek forráskódjának egyes + részei akár több mint 20 évesek is + lehetnek, egyáltalán nem jelenti azt, hogy elavult + lenne vagy éppen haldokolna. Rengeteg profi + felhasználó szereti azt a stabilitást, + amelyet ez a többéves tesztelés hozott + magával.

    Technológiai fejlesztések továbbra is - bekerülnek a *BSD rendszerekbe, mint például:

    + bekerülnek a *BSD rendszerekbe, mint + például:

      -
    • SMP: Symmetric Multi-Processing, több processzorral - rendelkezõ rendszerek használata.

    • +
    • +

      SMP: Symmetric Multi-Processing, vagyis a több + processzorral rendelkezõ rendszerek használata.

      +
    • -
    • SoftUpdates: A BSD fájlrendszert legalább olyan - gyorssá teszi, mint a Linux fájlrendszer, - az szinkron írási mûveletek - engedélyezése - és így az ezzel - járó kockázat - - nélkül.

    • +
    • +

      SoftUpdates: A BSD állományrendszert + legalább olyan gyorssá teszi mint a Linux + által használt állományrendszerek, + az aszinkron írási mûveletek + engedélyezése — és így az + ezzel járó kockázat — + nélkül.

      +
    • -
    • VM rendszer: A VM (Virtuális Memória) alrendszer - folyamatosan fejlõdik. A VM/cache kialakítása - segít a wcarchive.cdrom.com-hoz hasonló - kiszolgálóknak a több ezer (konkrétan - több mint 10.000) egyidejû FTP kapcsolat szakadatlan - kezelésében.

    • +
    • +

      VM rendszer: A VM (Virtuális Memória) + alrendszer folyamatosan fejlõdik. A VM/cache + kialakítása segít a wcarchive.cdrom.com + szolgáltatásához hasonló + kiszolgálóknak a több ezer + (konkrétan több mint 10 000) egyidejû + FTP kapcsolat kiesésektõl mentes + kezelésében.

      +
    • -
    • Architektúra portok: A FreeBSD jelenleg hat fõ - architektúrát támogat: AMD64, i386, - Itanium, PC-98, PowerPC és UltraSPARC. - Jelenleg is folynak fejlesztések további - architektúrák támogatására. - Tekintse meg a Támogatott Platformok - oldalt bõvebb információért.

    • +
    • +

      Különbözõ architektúrák: A + &os; jelenleg hét fõ architektúrát + támogat: Alpha, AMD64, i386, Itanium, PC-98, PowerPC + és UltraSPARC. Jelenleg is folynak fejlesztések + további architektúrák + támogatására. Bõvebb + információért lásd a Támogatott + platformok oldalt.

      +
    • -
    • MAC keretrendszer: A FreeBSD támogatja a Mandatory - Access Controlt, azt a funkciót, amely általában - drága trusted operációs rendszerekben - található meg. A FreeBSD kiemelkedõ - biztonságot nyújt Önnek ingyen! A - TrustedBSD Projekt - további trusted operációs rendszer - kiegészítéseket kínál.

    • +
    • +

      MAC alrendszer: A &os; támogatja a Mandatory Access + Controlt, vagyis egy olyan funkciót, amely + általában csak drága + megbízható (trusted) operációs + rendszerekben található meg. A &os; ellenben + kiemelkedõ biztonságot nyújt ingyen! A + témával kapcsolatban a TrustedBSD Projekt + kínál további + kiegészítéseket.

    • -
    • GEOM keretrendszer: A GEOM egy moduláris lemezkezelõ - keretrendszer, amelynek segítségével - összefûzhet, tükrözhet, csíkozhat, vagy - titkosíthat lemezeket. Funkcionalitásban gazdag, - és biztonságban tartja az adatait.

    • - +
    • +

      GEOM alrendszer: A GEOM egy moduláris lemezkezelõ + rendszer, amelynek segítségével + összefûzhetünk, tükrözhetünk, + csíkozhatunk vagy titkosíthatunk lemezeket. + Funkcionalitásban gazdag, és biztonságban + tartja az adatainkat. +


    -

    A *BSD projektek egymással versengenek - felhasználók csoportjait egyre jobban megosztva ezzel

    +

    A *BSD projektek egymással + háborúznak, hetente válnak ki újabb + felhasználói csoportok

    -

    Ez nem így van. Noha idõnként heves viták - zajlanak a *BSD rendszerek képviselõi között, - a projektek továbbra is együtt dolgoznak. A FreeBSD Alpha - portja kezdetben nagyrészt a NetBSD csapat munkáján - alapult. A NetBSD és az OpenBSD is a FreeBSD Ports Collectiont - vette alapul a saját portrendszerének - kialakításakor. A FreeBSD és a NetBSD is - átvett biztonsági javításokat, amelyeket - az OpenBSD-ben fedeztek fel elõször.

    +

    Ez nem így van. Noha idõnként heves + viták zajlanak a *BSD rendszerek képviselõi + között, a projektek továbbra is együtt + dolgoznak. A &os; Alpha portja kezdetben nagyrészt a + NetBSD csapat munkáján alapult. A NetBSD és + az OpenBSD is a &os; Portgyûjteményét vette + alapul a saját portrendszerének + kialakításakor. A &os; és a NetBSD is + vesznek át olyan biztonsági + javításokat, amelyeket az OpenBSD-ben fedeznek fel + elõször.

    -

    A FreeBSD és a NetBSD több mint öt éve - vált szét, csak az OpenBSD és a DragonflyBSD - számítanak újabb projektnek.

    +

    A &os; és a NetBSD projektek több mint tíz + éve váltak szét, azóta csak az OpenBSD + és a DragonflyBSD számítanak újabb BSD + projektnek.

    A *BSD projektek más területen is - együttmûködnek. Például a - DaemonNews - havonta frissülõ online magazin is a négy projekt + együttmûködnek. Például a DaemonNews havonta + frissülõ internetes magazin is a négy projekt tagjainak közös munkája.


    -

    Nem lehet *BSD rendszereket - fürtözni (párhuzamos használat)

    +

    A *BSD rendszereket nem + fürtözni (párhuzamos + számításokra)

    -

    A következõ (angol nyelvû) URL-ek cáfolják - ezt;

    +

    A következõ (angol nyelvû) linkek pontosan ezt + cáfolják:

    -
- -

Ezen kívül a - freebsd-cluster - levelezési lista is rendelkezésre áll a FreeBSD - fürtözésével kapcsolatos kérdések - megvitatására.

+

Ezeken kívül még a freebsd-cluster + levelezési lista is rendelkezésre áll a >>> TRUNCATED FOR MAIL (1000 lines) <<< From pgj at FreeBSD.org Wed Jul 2 05:09:36 2008 From: pgj at FreeBSD.org (Gabor Pali) Date: Wed Jul 2 05:09:39 2008 Subject: PERFORCE change 144459 for review Message-ID: <200807020509.m6259Zku057024@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144459 Change 144459 by pgj@disznohal on 2008/07/02 05:09:10 Rework in www/hu/community Affected files ... .. //depot/projects/docproj_hu/www/hu/community/irc.sgml#5 edit .. //depot/projects/docproj_hu/www/hu/community/mailinglists.sgml#7 edit .. //depot/projects/docproj_hu/www/hu/community/newsgroups.sgml#7 edit .. //depot/projects/docproj_hu/www/hu/community/webresources.sgml#4 edit Differences ... ==== //depot/projects/docproj_hu/www/hu/community/irc.sgml#5 (text+ko) ==== @@ -17,23 +17,24 @@ &header;

Ugyan több IRC hálózaton létezik - #freebsd csatorna, de a FreeBSD Projekt nem felügyeli ezeket - és nem ismeri el az IRC-t, mint támogatási - formát. Elõfordulhat, hogy nem figyelnek Önre, - inzultálják, vagy kirúgják, ha - kérdéseket tesz fel bármilyen IRC - csatornán, de kicsit több szerencséje lehet, ha - #freebsdhelp csatornákon próbálkozik, ahol - létezik ilyen. A &os;-vel foglalkozó IRC - csatornákat a &os; wikijében - olvashatjuk. Ha ki akarja próbálni ezeket, vagy - más IRC csatornákat, teljes mértékben - a saját felelõsségére teszi, a FreeBSD - Projekt nem foglalkozik az ezekkel a csatornákkal - kapcsolatos panaszokkal. Ha többet szeretne errõl - megtudni, akkor tekintse meg az erre vonatkozó GYIK bejegyzést + olvashatjuk. Teljesen a saját + felelõsségünkre tegyünk próbát + ezeken vagy más IRC csatornákon, a &os; Projekt + nem foglalkozik az ezzel kapcsolatos panaszokkal. Ha többet + szeretnénk errõl megtudni, akkor tekintsünk meg + az erre vonatkozó GYIK bejegyzést .

&footer; ==== //depot/projects/docproj_hu/www/hu/community/mailinglists.sgml#7 (text+ko) ==== @@ -2,7 +2,7 @@ - + ]> @@ -16,29 +16,29 @@ &header; -

A levelezési listák jelentik a FreeBSD +

A levelezési listák jelentik a &os; közösség fõ kommunikációs - csatornáját és rengeteg - témát érintenek.

+ csatornáját és rengeteg témát + érintenek.

Levelezési lista archívumok

-

A levelezési listák archívumait - keresheti - vagy böngészheti - a - www.FreeBSD.org - honlapon keresztül. A Mailman is biztosít egy - webes felületet az archívum - böngészéséhez. -

+

A www.FreeBSD.org honlapon + keresztül kereshetünk + vagy böngészhetünk + a levelezési listák archívumában. + Ehhez a Mailman nyújt webes felületet + .

-

Angol Levelezési Listák

+

Angol nyelvû levelezési listák

-

Az angol nyelvû levelezési listák a FreeBSD - Kézikönyvben vannak - felsorolva.

+

Az angol nyelvû levelezési listákat a &os; + kézikönyvben soroltuk fel + .

Nem angol nyelvû levelezési listák

@@ -46,89 +46,89 @@ létezik:

-

Ha létrehoz egy újabb FreeBSD levelezési - listát, kérjük - tudassa velünk!

+

Ha létrehoz egy újabb &os; levelezési + listát, kérjük tudassa velünk!

&footer; ==== //depot/projects/docproj_hu/www/hu/community/newsgroups.sgml#7 (text+ko) ==== @@ -2,7 +2,7 @@ - + ]> @@ -16,20 +16,21 @@ &header; -

Létezik pár FreeBSD-vel foglalkozó - hírcsoport, +

Létezik pár &os;-vel foglalkozó hírcsoport, és sok más egyéb olyan hírcsoport is, - amelyek érdekesek lehetnek a FreeBSD felhasználói - számára, de ennek ellenére a levelezési - listák jelentik a legmegbízhatóbb utat, hogy - felvegye a kapcsolatot a FreeBSD fejlesztõivel. - A különféle FreBSD-vel kapcsolatos - megbeszéléseket comp.unix.bsd.freebsd.misc - hírcsoportban találja. Fontos bejelentésekhez - tekintse meg a - comp.unix.bsd.freebsd.announce - hírcsoportot.

+ hírcsoportban találjuk. A fontos + bejelentéset lásd a comp.unix.bsd.freebsd.announce + hírcsoportban.

&footer; ==== //depot/projects/docproj_hu/www/hu/community/webresources.sgml#4 (text+ko) ==== @@ -2,7 +2,7 @@ - + ]> @@ -17,53 +17,55 @@ &header;

Ez a weboldal a legjobb információforrás, - ráadásul rengeteg tükörrel rendelkezik - világszerte. Próbálja ki a + ráadásul rengeteg tükrözéssel + rendelkezik világszerte. Próbálkozzunk a www.országrövidítés.FreeBSD.org - címet (pl. - www.de.FreeBSD.org - Németország, vagy - www.au.FreeBSD.org - Ausztrália tükréhez), vagy válasszon egy - szervert a fõoldal - legördülõ listájából.

+ címmel (például a www.de.FreeBSD.org a + németországi, vagy a www.au.FreeBSD.org az + ausztráliai tükrözés), vagy + válasszunk egy szervert a fõoldal legördülõ + listájából.

-

A FreeBSD weboldala több nyelvre le lett fordítva. - A fordított verziókhoz linkeket a - fõoldalon - találhat.

+

A &os; honlapja több nyelven is olvasható. A + különbözõ fordítások linkjeit a + fõoldalon találhatjuk + meg.

-

Ezen kívül több nem angol nyelvû +

Ezenkívül még több nem angol nyelvû forrás is létezik:

-

A FreeBSD jelenlegi állapotáról - szóló információkért tekintse meg a - Hírek oldalt.

+

A &os; jelenlegi állapotáról + szóló információkat a Hírek oldalon + találjuk.

&footer; From hselasky at FreeBSD.org Wed Jul 2 09:47:18 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Jul 2 09:47:22 2008 Subject: PERFORCE change 144475 for review Message-ID: <200807020947.m629lHIg004365@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144475 Change 144475 by hselasky@hselasky_laptop001 on 2008/07/02 09:47:12 Fix some LORs. When starting and stopping an USB transfer it is safest to defer the callback to the callback thread, and not do all callbacks from the current execution environment. That way the USB callback is always executed from the callback thread/process: See: xfer->usb2_root->done_p (struct usb2_process) Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#5 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#6 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#8 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#5 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#9 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.h#4 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#5 (text+ko) ==== @@ -234,9 +234,7 @@ * Free USB Root device, but not any sub-devices, hence they * are freed by the caller of this function: */ - sx_xlock(udev->default_sx + 1); usb2_detach_device(udev, USB_IFACE_INDEX_ANY, 0); - sx_unlock(udev->default_sx + 1); usb2_free_device(udev); mtx_unlock(&Giant); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#6 (text+ko) ==== @@ -856,6 +856,7 @@ { struct usb2_interface *iface; uint8_t i; + uint8_t do_unlock; if (udev == NULL) { /* nothing to do */ @@ -863,7 +864,13 @@ } DPRINTF(3, "udev=%p\n", udev); - sx_assert(udev->default_sx + 1, SA_LOCKED); + /* automatic locking */ + if (sx_xlocked(udev->default_sx + 1)) { + do_unlock = 0; + } else { + do_unlock = 1; + sx_xlock(udev->default_sx + 1); + } /* * First detach the child to give the child's detach routine a @@ -890,6 +897,10 @@ } usb2_detach_device_sub(udev, &(iface->subdev), free_subdev); } + + if (do_unlock) { + sx_unlock(udev->default_sx + 1); + } return; } ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#8 (text+ko) ==== @@ -313,9 +313,7 @@ /* detach any existing devices */ if (child) { - sx_xlock(child->default_sx + 1); usb2_detach_device(child, USB_IFACE_INDEX_ANY, 1); - sx_unlock(child->default_sx + 1); usb2_free_device(child); child = NULL; } @@ -409,9 +407,7 @@ error: if (child) { - sx_xlock(child->default_sx + 1); usb2_detach_device(child, USB_IFACE_INDEX_ANY, 1); - sx_unlock(child->default_sx + 1); usb2_free_device(child); child = NULL; } @@ -806,9 +802,7 @@ * Subdevices are not freed, because the caller of * uhub_detach() will do that. */ - sx_xlock(child->default_sx + 1); usb2_detach_device(child, USB_IFACE_INDEX_ANY, 0); - sx_unlock(child->default_sx + 1); usb2_free_device(child); child = NULL; } ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#5 (text+ko) ==== @@ -365,7 +365,7 @@ usb2_transfer_start(xfer); - while (xfer->flags_int.transferring) { + while (usb2_transfer_pending(xfer)) { if ((flags & USB_USE_POLLING) || cold) { usb2_do_poll(udev->default_xfer, USB_DEFAULT_XFER_MAX); } else { ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#9 (text+ko) ==== @@ -125,6 +125,7 @@ static void usb2_control_transfer_init(struct usb2_xfer *xfer); static uint8_t usb2_start_hardware_sub(struct usb2_xfer *xfer); static void usb2_callback_proc(struct usb2_proc_msg *_pm); +static void usb2_callback_ss_done_defer(struct usb2_xfer *xfer); static void usb2_callback_wrapper(struct usb2_xfer_queue *pq); static void usb2_dma_delay_done_cb(void *arg); static void usb2_transfer_start_cb(void *arg); @@ -1164,6 +1165,9 @@ /* the size of the SETUP structure is hardcoded ! */ if (xfer->frlengths[0] != sizeof(struct usb2_device_request)) { + DPRINTF(-1, "Wrong framelength %u != %u\n", + xfer->frlengths[0], sizeof(struct + usb2_device_request)); goto error; } /* check USB mode */ @@ -1470,7 +1474,7 @@ } mtx_lock(xfer->usb2_mtx); /* call the USB transfer callback */ - usb2_command_wrapper(&(xfer->usb2_root->done_q), xfer); + usb2_callback_ss_done_defer(xfer); mtx_unlock(xfer->usb2_mtx); return; } @@ -1540,6 +1544,46 @@ } /*------------------------------------------------------------------------* + * usb2_transfer_pending + * + * This function will check if an USB transfer is pending which is a + * little bit complicated! + * Return values: + * 0: Not pending + * 1: Pending: The USB transfer will receive a callback in the future. + *------------------------------------------------------------------------*/ +uint8_t +usb2_transfer_pending(struct usb2_xfer *xfer) +{ + struct usb2_xfer_root *info; + struct usb2_xfer_queue *pq; + + mtx_assert(xfer->priv_mtx, MA_OWNED); + + if (xfer->flags_int.transferring) { + /* trivial case */ + return (1); + } + mtx_lock(xfer->usb2_mtx); + if (xfer->wait_queue) { + /* we are waiting on a queue somewhere */ + mtx_unlock(xfer->usb2_mtx); + return (1); + } + info = xfer->usb2_root; + pq = &(info->done_q); + + if (pq->curr == xfer) { + /* we are currently scheduled for callback */ + mtx_unlock(xfer->usb2_mtx); + return (1); + } + /* we are not pending */ + mtx_unlock(xfer->usb2_mtx); + return (0); +} + +/*------------------------------------------------------------------------* * usb2_transfer_drain * * This function will stop the USB transfer and wait for any @@ -1564,7 +1608,7 @@ usb2_transfer_stop(xfer); - while (xfer->flags_int.transferring) { + while (usb2_transfer_pending(xfer)) { xfer->flags_int.draining = 1; /* * Wait until the current outstanding USB @@ -1645,6 +1689,43 @@ } /*------------------------------------------------------------------------* + * usb2_callback_ss_done_defer + * + * This function will defer the start, stop and done callback to the + * correct thread. + *------------------------------------------------------------------------*/ +static void +usb2_callback_ss_done_defer(struct usb2_xfer *xfer) +{ + struct usb2_xfer_root *info = xfer->usb2_root; + struct usb2_xfer_queue *pq = &(info->done_q); + + if (!mtx_owned(xfer->usb2_mtx)) { + panic("%s: called unlocked!\n", __FUNCTION__); + } + if (pq->curr != xfer) { + usb2_transfer_enqueue(pq, xfer); + } + if (!pq->recurse_1) { + + /* + * We have to postpone the callback due to the fact we + * will have a Lock Order Reversal, LOR, if we try to + * proceed ! + */ + if (usb2_proc_msignal(&(info->done_p), + &(info->done_m[0]), &(info->done_m[1]))) { + /* ignore */ + } + } else { + /* clear second recurse flag */ + pq->recurse_2 = 0; + } + return; + +} + +/*------------------------------------------------------------------------* * usb2_callback_wrapper * * This is a wrapper for USB callbacks. This wrapper does some @@ -1663,11 +1744,10 @@ } if (!mtx_owned(xfer->priv_mtx)) { /* - * Cases that end up here: - * - * 5) HW interrupt done callback or other source. - */ - + * Cases that end up here: + * + * 5) HW interrupt done callback or other source. + */ DPRINTF(2, "case 5\n"); /* @@ -1675,7 +1755,6 @@ * will have a Lock Order Reversal, LOR, if we try to * proceed ! */ - if (usb2_proc_msignal(&(info->done_p), &(info->done_m[0]), &(info->done_m[1]))) { /* ignore */ @@ -1700,6 +1779,11 @@ /* set correct USB state for callback */ if (!xfer->flags_int.transferring) { xfer->usb2_state = USB_ST_SETUP; + if (!xfer->flags_int.started) { + /* we got stopped before we even got started */ + mtx_lock(xfer->usb2_mtx); + goto done; + } } else { if (usb2_callback_wrapper_sub(xfer)) { @@ -1905,7 +1989,7 @@ } /* call the USB transfer callback */ - usb2_command_wrapper(&(xfer->usb2_root->done_q), xfer); + usb2_callback_ss_done_defer(xfer); return; } ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.h#4 (text+ko) ==== @@ -63,10 +63,8 @@ uint32_t dma_nframes; /* number of page caches to load */ uint32_t dma_currframe; /* currect page cache number */ uint32_t dma_frlength_0; /* length of page cache zero */ - uint8_t dma_error; /* set if virtual memory could not be * loaded */ - uint8_t done_sleep; /* set if done thread is sleeping */ }; @@ -103,6 +101,7 @@ /* function prototypes */ +uint8_t usb2_transfer_pending(struct usb2_xfer *xfer); uint8_t usb2_transfer_setup_sub_malloc(struct usb2_setup_params *parm, struct usb2_page_search *info, struct usb2_page_cache **ppc, uint32_t size, uint32_t align); void usb2_command_wrapper(struct usb2_xfer_queue *pq, struct usb2_xfer *xfer); void usb2_pipe_enter(struct usb2_xfer *xfer); From trasz at FreeBSD.org Wed Jul 2 10:04:35 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Wed Jul 2 10:04:38 2008 Subject: PERFORCE change 144476 for review Message-ID: <200807021004.m62A4YnS006795@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144476 Change 144476 by trasz@trasz_traszkan on 2008/07/02 10:03:54 IFC Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/ObsoleteFiles.inc#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/net/getaddrinfo.3#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libutil/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libutil/hexdump.3#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/lib/libutil/hexdump.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/lib/libutil/libutil.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/dhclient/dhclient.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/sconfig/sconfig.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/amd64/pmap.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/boot/i386/boot2/boot2.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/compat/pecoff/imgact_pecoff.c#2 delete .. //depot/projects/soc2008/trasz_nfs4acl/sys/compat/pecoff/imgact_pecoff.h#2 delete .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ce/ceddk.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ce/if_ce.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cp/cpddk.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cp/if_cp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ctau/ctddk.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ctau/if_ct.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cx/cxddk.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cx/if_cx.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mii/rgephy.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mii/rgephyreg.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mpt/mpt_pci.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mpt/mpt_user.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/re/if_re.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/smbfs/smbfs_node.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/pecoff/Makefile#2 delete .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/if_bridge.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/nfsserver/nfs_syscalls.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/pci/if_rlreg.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/cpio/cpio.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/gzip/unbzip2.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/gzip/znew#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/su/su.1#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/mountd/exports.5#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/pmcstat/pmcstat.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/wpa/wpa_supplicant/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5#2 integrate Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/ObsoleteFiles.inc#3 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.143 2008/06/14 10:42:18 ed Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.144 2008/07/01 21:54:08 danger Exp $ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently @@ -14,6 +14,9 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20080701: wpa_supplicant.conf moved to share/examples/etc/ +OLD_FILES+=usr/share/examples/wpa_supplicant/wpa_supplicant.conf +OLD_DIRS+=usr/share/examples/wpa_supplicant # 20080614: sgtty removed OLD_FILES+=usr/include/sys/ttychars.h OLD_FILES+=usr/include/sys/ttydev.h ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/net/getaddrinfo.3#2 (text+ko) ==== @@ -16,9 +16,9 @@ .\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR .\" PERFORMANCE OF THIS SOFTWARE. .\" -.\" $FreeBSD: src/lib/libc/net/getaddrinfo.3,v 1.33 2007/06/06 19:24:02 remko Exp $ +.\" $FreeBSD: src/lib/libc/net/getaddrinfo.3,v 1.34 2008/07/01 22:59:20 danger Exp $ .\" -.Dd June 6, 2007 +.Dd July 1, 2008 .Dt GETADDRINFO 3 .Os .Sh NAME @@ -237,6 +237,11 @@ .Fa ai_family equals .Dv AF_INET6 . +Note: this flag is currently +.Em not +supported, see the +.Sx BUGS +section. .El .El .Pp @@ -485,6 +490,18 @@ .%B "Proceedings of the freenix track: 2000 USENIX annual technical conference" .%D June 2000 .Re +.Sh BUGS +The +.Nm +function as implemented in +.Fx +currently does not support +.Dv AI_ALL +and +.Dv AI_V4MAPPED +flags and returns +.Dv EAI_BADFLAGS +if one of them is specified. .Sh STANDARDS The .Fn getaddrinfo ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libutil/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.1 (Berkeley) 6/4/93 -# $FreeBSD: src/lib/libutil/Makefile,v 1.67 2008/04/23 00:49:12 scf Exp $ +# $FreeBSD: src/lib/libutil/Makefile,v 1.68 2008/07/01 22:30:57 jhb Exp $ SHLIBDIR?= /lib @@ -9,9 +9,9 @@ SHLIB_MAJOR= 7 SRCS= _secure_path.c auth.c gr_util.c expand_number.c flopen.c fparseln.c \ - humanize_number.c kld.c login.c login_auth.c login_cap.c login_class.c \ - login_crypt.c login_ok.c login_times.c login_tty.c logout.c \ - logwtmp.c pidfile.c property.c pty.c pw_util.c realhostname.c \ + hexdump.c humanize_number.c kld.c login.c login_auth.c login_cap.c \ + login_class.c login_crypt.c login_ok.c login_times.c login_tty.c \ + logout.c logwtmp.c pidfile.c property.c pty.c pw_util.c realhostname.c \ stub.c trimdomain.c uucplock.c INCS= libutil.h login_cap.h ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libutil/libutil.h#2 (text+ko) ==== @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libutil/libutil.h,v 1.47 2008/04/23 00:49:12 scf Exp $ + * $FreeBSD: src/lib/libutil/libutil.h,v 1.48 2008/07/01 22:30:57 jhb Exp $ */ #ifndef _LIBUTIL_H_ @@ -71,6 +71,7 @@ int extattr_namespace_to_string(int _attrnamespace, char **_string); int extattr_string_to_namespace(const char *_string, int *_attrnamespace); int flopen(const char *_path, int _flags, ...); +void hexdump(const void *ptr, int length, const char *hdr, int flags); void login(struct utmp *_ut); int login_tty(int _fd); int logout(const char *_line); @@ -171,4 +172,11 @@ #define HN_GETSCALE 0x10 #define HN_AUTOSCALE 0x20 +/* hexdump(3) */ +#define HD_COLUMN_MASK 0xff +#define HD_DELIM_MASK 0xff00 +#define HD_OMIT_COUNT (1 << 16) +#define HD_OMIT_HEX (1 << 17) +#define HD_OMIT_CHARS (1 << 18) + #endif /* !_LIBUTIL_H_ */ ==== //depot/projects/soc2008/trasz_nfs4acl/sbin/dhclient/dhclient.c#2 (text+ko) ==== @@ -54,7 +54,7 @@ */ #include -__FBSDID("$FreeBSD: src/sbin/dhclient/dhclient.c,v 1.23 2008/03/22 16:24:02 sam Exp $"); +__FBSDID("$FreeBSD: src/sbin/dhclient/dhclient.c,v 1.24 2008/06/30 20:23:49 ed Exp $"); #include "dhcpd.h" #include "privsep.h" @@ -2612,6 +2612,7 @@ setproctitle("%s [priv]", ifi->name); + setsid(); dup2(nullfd, STDIN_FILENO); dup2(nullfd, STDOUT_FILENO); dup2(nullfd, STDERR_FILENO); ==== //depot/projects/soc2008/trasz_nfs4acl/sbin/sconfig/sconfig.c#2 (text+ko) ==== @@ -18,7 +18,7 @@ */ #include -__FBSDID("$FreeBSD: src/sbin/sconfig/sconfig.c,v 1.5 2008/02/19 07:09:18 ru Exp $"); +__FBSDID("$FreeBSD: src/sbin/sconfig/sconfig.c,v 1.6 2008/06/30 21:18:27 rik Exp $"); #include #include @@ -276,6 +276,15 @@ system (buf); } +static void +set_debug_ifconfig (int on) +{ + char buf [64]; + sprintf (buf, "ifconfig %s %sdebug 2>/dev/null", chan_name, + on ? "" : "-"); + system (buf); +} + static char * format_long (unsigned long val) { @@ -724,6 +733,7 @@ int i, mode, loop, nrzi, dpll, invclk, phony, use16, crc4, unfram, ami; int higain, clk, keepalive, debug, port, dlci, invrclk, invtclk; int monitor, dir, scrambler, rloop, cablen; + int mode_valid; long baud, timeslots, mtu, rqlen; for (i=0; i -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.623 2008/06/21 19:19:09 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.624 2008/07/02 05:41:23 alc Exp $"); /* * Manages physical address maps. @@ -173,7 +173,6 @@ vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */ vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */ -static int nkpt; static int ndmpdp; static vm_paddr_t dmaplimit; vm_offset_t kernel_vm_end; @@ -543,7 +542,6 @@ kernel_pmap->pm_root = NULL; kernel_pmap->pm_active = -1; /* don't allow deactivation */ TAILQ_INIT(&kernel_pmap->pm_pvchunk); - nkpt = NKPT; /* * Reserve some special page table entries/VA space for temporary @@ -650,7 +648,7 @@ * page table pages. */ pd = pmap_pde(kernel_pmap, VM_MIN_KERNEL_ADDRESS); - for (i = 0; i < nkpt; i++) { + for (i = 0; i < NKPT; i++) { if ((pd[i] & (PG_PS | PG_V)) == (PG_PS | PG_V)) continue; mpte = PHYS_TO_VM_PAGE(pd[i] & PG_FRAME); @@ -1708,10 +1706,8 @@ mtx_assert(&kernel_map->system_mtx, MA_OWNED); if (kernel_vm_end == 0) { kernel_vm_end = VM_MIN_KERNEL_ADDRESS; - nkpt = 0; while ((*pmap_pde(kernel_pmap, kernel_vm_end) & PG_V) != 0) { kernel_vm_end = (kernel_vm_end + PAGE_SIZE * NPTEPG) & ~(PAGE_SIZE * NPTEPG - 1); - nkpt++; if (kernel_vm_end - 1 >= kernel_map->max_offset) { kernel_vm_end = kernel_map->max_offset; break; @@ -1725,7 +1721,7 @@ pde = pmap_pde(kernel_pmap, kernel_vm_end); if (pde == NULL) { /* We need a new PDP entry */ - nkpg = vm_page_alloc(NULL, nkpt, + nkpg = vm_page_alloc(NULL, kernel_vm_end >> PDPSHIFT, VM_ALLOC_NOOBJ | VM_ALLOC_SYSTEM | VM_ALLOC_WIRED); if (nkpg == NULL) panic("pmap_growkernel: no memory to grow kernel"); @@ -1749,9 +1745,6 @@ VM_ALLOC_NOOBJ | VM_ALLOC_SYSTEM | VM_ALLOC_WIRED); if (nkpg == NULL) panic("pmap_growkernel: no memory to grow kernel"); - - nkpt++; - pmap_zero_page(nkpg); paddr = VM_PAGE_TO_PHYS(nkpg); newpdir = (pd_entry_t) (paddr | PG_V | PG_RW | PG_A | PG_M); ==== //depot/projects/soc2008/trasz_nfs4acl/sys/boot/i386/boot2/boot2.c#2 (text+ko) ==== @@ -14,7 +14,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.86 2008/02/28 17:08:05 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.87 2008/07/01 11:18:51 nyan Exp $"); #include #include @@ -472,7 +472,7 @@ dsk.slice = WHOLE_DISK_SLICE; if (arg[1] == ',') { dsk.slice = *arg - '0' + 1; - if (dsk.slice > NDOSPART) + if (dsk.slice > NDOSPART + 1) return -1; arg += 2; } ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ce/ceddk.h#2 (text+ko) ==== @@ -13,7 +13,7 @@ * works or modified versions. * * $Cronyx: ceddk.h,v 1.2.6.1 2005/11/09 13:01:39 rik Exp $ - * $FreeBSD: src/sys/dev/ce/ceddk.h,v 1.1 2006/01/27 09:02:09 rik Exp $ + * $FreeBSD: src/sys/dev/ce/ceddk.h,v 1.2 2008/06/30 21:18:27 rik Exp $ */ #define TAU32_UserContext_Add void *sys; @@ -72,6 +72,7 @@ TAU32_UserRequest *rx_queue; TAU32_UserRequest *tx_queue; unsigned char debug; + unsigned char debug_shadow; void (*transmit) (struct _ce_chan_t*, void*, int); void (*receive) (struct _ce_chan_t*, unsigned char*, int); void (*error) (struct _ce_chan_t*, int); ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ce/if_ce.c#2 (text+ko) ==== @@ -16,7 +16,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ce/if_ce.c,v 1.9 2007/07/27 11:59:56 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ce/if_ce.c,v 1.11 2008/07/01 14:41:03 dds Exp $"); #include @@ -962,8 +962,8 @@ if (! (ifp->if_flags & IFF_DEBUG)) d->chan->debug = 0; - else if (! d->chan->debug) - d->chan->debug = 1; + else + d->chan->debug = d->chan->debug_shadow; switch (cmd) { default: CE_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0; @@ -1333,7 +1333,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1374,7 +1374,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1404,7 +1404,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1424,7 +1424,7 @@ CE_DEBUG2 (d, ("ioctl: setcfg\n")); #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1526,7 +1526,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1562,7 +1562,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1590,7 +1590,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1614,19 +1614,24 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); #endif if (error) return error; +#ifndef NETGRAPH + /* + * The debug_shadow is always greater than zero for logic + * simplicity. For switching debug off the IFF_DEBUG is + * responsible. + */ + d->chan->debug_shadow = (*(int*)data) ? (*(int*)data) : 1; + if (d->ifp->if_flags & IFF_DEBUG) + d->chan->debug = d->chan->debug_shadow; +#else d->chan->debug = *(int*)data; -#ifndef NETGRAPH - if (d->chan->debug) - d->ifp->if_flags |= IFF_DEBUG; - else - d->ifp->if_flags &= ~IFF_DEBUG; #endif return 0; @@ -1642,7 +1647,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1668,7 +1673,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1698,7 +1703,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1722,7 +1727,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1750,7 +1755,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1776,7 +1781,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1804,7 +1809,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1832,7 +1837,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1860,7 +1865,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1893,7 +1898,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1920,7 +1925,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1939,7 +1944,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1977,7 +1982,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cp/cpddk.h#2 (text+ko) ==== @@ -16,7 +16,7 @@ * works or modified versions. * * $Cronyx: cpddk.h,v 1.8.4.20 2004/12/06 16:21:06 rik Exp $ - * $FreeBSD: src/sys/dev/cp/cpddk.h,v 1.4 2005/01/06 01:42:32 imp Exp $ + * $FreeBSD: src/sys/dev/cp/cpddk.h,v 1.5 2008/06/30 21:18:27 rik Exp $ */ #define NBRD 6 /* the maximum number of installed boards */ #define NCHAN 4 /* the number of channels on the board */ @@ -205,6 +205,7 @@ void *tag [NTBUF]; /* system dependent data per buffer */ void *sys; /* system dependent data per channel */ unsigned char debug; /* debug level, 0..2 */ + unsigned char debug_shadow; /* debug shadow */ void (*transmit) (struct _cp_chan_t *c, void *tag, int len); void (*receive) (struct _cp_chan_t *c, unsigned char *data, int len); ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cp/if_cp.c#2 (text+ko) ==== @@ -22,7 +22,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.34 2007/07/27 11:59:56 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.35 2008/06/30 21:18:27 rik Exp $"); #include #include @@ -733,8 +733,8 @@ if (! (ifp->if_flags & IFF_DEBUG)) d->chan->debug = 0; - else if (! d->chan->debug) - d->chan->debug = 1; + else + d->chan->debug = d->chan->debug_shadow; switch (cmd) { default: CP_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0; @@ -1349,12 +1349,17 @@ error = priv_check (td, PRIV_DRIVER); if (error) return error; +#ifndef NETGRAPH + /* + * The debug_shadow is always greater than zero for logic + * simplicity. For switching debug off the IFF_DEBUG is + * responsible. + */ + d->chan->debug_shadow = (*(int*)data) ? (*(int*)data) : 1; + if (d->ifp->if_flags & IFF_DEBUG) + d->chan->debug = d->chan->debug_shadow; +#else d->chan->debug = *(int*)data; -#ifndef NETGRAPH - if (d->chan->debug) - d->ifp->if_flags |= IFF_DEBUG; - else - d->ifp->if_flags &= ~IFF_DEBUG; #endif return 0; ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ctau/ctddk.h#2 (text+ko) ==== @@ -12,7 +12,7 @@ * all derivative works or modified versions. * * Cronyx Id: ctddk.h,v 1.1.2.3 2003/12/11 17:33:44 rik Exp $ - * $FreeBSD: src/sys/dev/ctau/ctddk.h,v 1.2 2005/01/06 01:42:33 imp Exp $ + * $FreeBSD: src/sys/dev/ctau/ctddk.h,v 1.3 2008/06/30 21:18:27 rik Exp $ */ #define NBRD 3 /* the maximum number of installed boards */ #define NPORT 32 /* the number of i/o ports per board */ @@ -412,6 +412,7 @@ void *attach [NBUF]; /* system dependent data per buffer */ void *sys; /* system dependent data per channel */ int debug; + int debug_shadow; int e1_first_int; unsigned char *sccrx, *scctx; /* pointers to SCC rx and tx buffers */ ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ctau/if_ct.c#2 (text+ko) ==== @@ -22,7 +22,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ctau/if_ct.c,v 1.35 2007/10/12 06:03:43 kevlo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ctau/if_ct.c,v 1.36 2008/06/30 21:18:27 rik Exp $"); #include #include @@ -949,8 +949,8 @@ if (! (ifp->if_flags & IFF_DEBUG)) d->chan->debug = 0; - else if (! d->chan->debug) - d->chan->debug = 1; + else + d->chan->debug = d->chan->debug_shadow; switch (cmd) { default: CT_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0; @@ -1529,12 +1529,17 @@ error = priv_check (td, PRIV_DRIVER); if (error) return error; +#ifndef NETGRAPH + /* + * The debug_shadow is always greater than zero for logic + * simplicity. For switching debug off the IFF_DEBUG is + * responsible. + */ + c->debug_shadow = (*(int*)data) ? (*(int*)data) : 1; + if (d->ifp->if_flags & IFF_DEBUG) + c->debug = c->debug_shadow; +#else c->debug = *(int*)data; -#ifndef NETGRAPH - if (d->chan->debug) - d->ifp->if_flags |= IFF_DEBUG; - else - d->ifp->if_flags &= (~IFF_DEBUG); #endif return 0; ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cx/cxddk.h#2 (text+ko) ==== @@ -15,7 +15,7 @@ * all derivative works or modified versions. * * Cronyx Id: cxddk.h,v 1.1.2.1 2003/11/12 17:13:41 rik Exp $ - * $FreeBSD: src/sys/dev/cx/cxddk.h,v 1.2 2005/01/06 01:42:34 imp Exp $ + * $FreeBSD: src/sys/dev/cx/cxddk.h,v 1.3 2008/06/30 21:18:27 rik Exp $ */ #ifndef port_t @@ -337,6 +337,7 @@ void *sys; int debug; + int debug_shadow; void *attach [2]; char *received_data; int received_len; ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/cx/if_cx.c#2 (text+ko) ==== @@ -23,7 +23,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.58 2007/10/12 06:03:43 kevlo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.59 2008/06/30 21:18:27 rik Exp $"); #include @@ -1102,10 +1102,14 @@ if (error) return error; + s = splhigh (); + CX_LOCK (bd); if (! (ifp->if_flags & IFF_DEBUG)) d->chan->debug = 0; - else if (! d->chan->debug) - d->chan->debug = 1; + else + d->chan->debug = d->chan->debug_shadow; + CX_UNLOCK (bd); + splx (s); switch (cmd) { default: CX_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0; @@ -1745,6 +1749,8 @@ cx_enable_receive (c, 0); cx_enable_transmit (c, 0); } else if (c->mode == M_ASYNC && *(int*)data == SERIAL_HDLC) { + if (d->ifp->if_flags & IFF_DEBUG) + c->debug = c->debug_shadow; cx_set_mode (c, M_HDLC); cx_enable_receive (c, 1); cx_enable_transmit (c, 1); @@ -1913,15 +1919,24 @@ return error; s = splhigh (); CX_LOCK (bd); +#ifndef NETGRAPH + if (c->mode == M_ASYNC) { + c->debug = *(int*)data; + } else { + /* + * The debug_shadow is always greater than zero for + * logic simplicity. For switching debug off the + * IFF_DEBUG is responsible (for !M_ASYNC mode). + */ + c->debug_shadow = (*(int*)data) ? (*(int*)data) : 1; + if (d->ifp->if_flags & IFF_DEBUG) + c->debug = c->debug_shadow; + } +#else c->debug = *(int*)data; +#endif CX_UNLOCK (bd); splx (s); -#ifndef NETGRAPH - if (d->chan->debug) - d->ifp->if_flags |= IFF_DEBUG; - else - d->ifp->if_flags &= (~IFF_DEBUG); -#endif return 0; } ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mii/rgephy.c#2 (text+ko) ==== @@ -31,10 +31,10 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mii/rgephy.c,v 1.19 2008/03/05 01:15:10 yongari Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mii/rgephy.c,v 1.20 2008/07/02 08:10:18 yongari Exp $"); /* - * Driver for the RealTek 8169S/8110S/8211B internal 10/100/1000 PHY. + * Driver for the RealTek 8169S/8110S/8211B/8211C internal 10/100/1000 PHY. */ #include @@ -531,6 +531,18 @@ static void rgephy_reset(struct mii_softc *sc) { + struct rgephy_softc *rsc; + uint16_t ssr; + + rsc = (struct rgephy_softc *)sc; + if (rsc->mii_revision == 3) { + /* RTL8211C(L) */ + ssr = PHY_READ(sc, RGEPHY_MII_SSR); + if ((ssr & RGEPHY_SSR_ALDPS) != 0) { + ssr &= ~RGEPHY_SSR_ALDPS; + PHY_WRITE(sc, RGEPHY_MII_SSR, ssr); + } + } mii_phy_reset(sc); DELAY(1000); ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mii/rgephyreg.h#2 (text+ko) ==== @@ -29,7 +29,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/mii/rgephyreg.h,v 1.3 2007/10/29 02:17:07 yongari Exp $ + * $FreeBSD: src/sys/dev/mii/rgephyreg.h,v 1.4 2008/07/02 08:10:18 yongari Exp $ */ #ifndef _DEV_MII_RGEPHYREG_H_ @@ -137,7 +137,7 @@ #define RGEPHY_EXTSTS_T_FD_CAP 0x2000 /* 1000base-T FD capable */ #define RGEPHY_EXTSTS_T_HD_CAP 0x1000 /* 1000base-T HD capable */ -/* RTL8211B(L) */ +/* RTL8211B(L)/RTL8211C(L) */ #define RGEPHY_MII_SSR 0x11 /* PHY Specific status register */ #define RGEPHY_SSR_S1000 0x8000 /* 1000Mbps */ #define RGEPHY_SSR_S100 0x4000 /* 100Mbps */ @@ -148,6 +148,7 @@ #define RGEPHY_SSR_SPD_DPLX_RESOLVED 0x0800 /* speed/duplex resolved */ #define RGEPHY_SSR_LINK 0x0400 /* link up */ #define RGEPHY_SSR_MDI_XOVER 0x0040 /* MDI crossover */ +#define RGEPHY_SSR_ALDPS 0x0008 /* RTL8211C(L) only */ #define RGEPHY_SSR_JABBER 0x0001 /* Jabber */ #endif /* _DEV_RGEPHY_MIIREG_H_ */ ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mpt/mpt_pci.c#2 (text+ko) ==== @@ -99,7 +99,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_pci.c,v 1.52 2008/05/10 01:27:23 delphij Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_pci.c,v 1.53 2008/07/01 19:44:38 jhb Exp $"); #include #include @@ -688,7 +688,7 @@ mpt_free_bus_resources(mpt); mpt_raid_free_mem(mpt); if (mpt->eh != NULL) { - EVENTHANDLER_DEREGISTER(shutdown_final, mpt->eh); + EVENTHANDLER_DEREGISTER(shutdown_post_sync, mpt->eh); } } return(0); ==== //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mpt/mpt_user.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_user.c,v 1.1 2008/05/06 20:49:52 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_user.c,v 1.2 2008/07/01 19:48:15 jhb Exp $"); #include #include @@ -47,6 +47,13 @@ uint16_t action_status; }; +struct mpt_page_memory { + bus_dma_tag_t tag; + bus_dmamap_t map; + bus_addr_t paddr; + void *vaddr; +}; + static mpt_probe_handler_t mpt_user_probe; static mpt_attach_handler_t mpt_user_attach; static mpt_enable_handler_t mpt_user_enable; @@ -180,6 +187,56 @@ } static int +mpt_alloc_buffer(struct mpt_softc *mpt, struct mpt_page_memory *page_mem, + size_t len) +{ + struct mpt_map_info mi; + int error; + + page_mem->vaddr = NULL; + + /* Limit requests to 16M. */ + if (len > 16 * 1024 * 1024) + return (ENOSPC); + error = mpt_dma_tag_create(mpt, mpt->parent_dmat, 1, 0, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, + len, 1, len, 0, &page_mem->tag); + if (error) + return (error); + error = bus_dmamem_alloc(page_mem->tag, &page_mem->vaddr, + BUS_DMA_NOWAIT, &page_mem->map); + if (error) { + bus_dma_tag_destroy(page_mem->tag); + return (error); + } + mi.mpt = mpt; + error = bus_dmamap_load(page_mem->tag, page_mem->map, page_mem->vaddr, + len, mpt_map_rquest, &mi, BUS_DMA_NOWAIT); + if (error == 0) + error = mi.error; + if (error) { + bus_dmamem_free(page_mem->tag, page_mem->vaddr, page_mem->map); + bus_dma_tag_destroy(page_mem->tag); + page_mem->vaddr = NULL; + return (error); + } + page_mem->paddr = mi.phys; + return (0); +} + +static void +mpt_free_buffer(struct mpt_page_memory *page_mem) +{ + + if (page_mem->vaddr == NULL) + return; + bus_dmamap_unload(page_mem->tag, page_mem->map); + bus_dmamem_free(page_mem->tag, page_mem->vaddr, page_mem->map); + bus_dma_tag_destroy(page_mem->tag); + page_mem->vaddr = NULL; +} + +static int mpt_user_read_cfg_header(struct mpt_softc *mpt, struct mpt_cfg_page_req *page_req) { @@ -225,7 +282,7 @@ static int mpt_user_read_cfg_page(struct mpt_softc *mpt, struct mpt_cfg_page_req *page_req, - void *mpt_page) + struct mpt_page_memory *mpt_page) { CONFIG_PAGE_HEADER *hdr; request_t *req; @@ -238,15 +295,14 @@ return (ENOMEM); } - hdr = mpt_page; + hdr = mpt_page->vaddr; params.Action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; params.PageVersion = hdr->PageVersion; params.PageLength = hdr->PageLength; params.PageNumber = hdr->PageNumber; params.PageType = hdr->PageType & MPI_CONFIG_PAGETYPE_MASK; params.PageAddress = page_req->page_address; - error = mpt_issue_cfg_req(mpt, req, ¶ms, - req->req_pbuf + MPT_RQSL(mpt), + error = mpt_issue_cfg_req(mpt, req, ¶ms, mpt_page->paddr, page_req->len, TRUE, 5000); if (error != 0) { mpt_prt(mpt, "mpt_user_read_cfg_page timed out\n"); >>> TRUNCATED FOR MAIL (1000 lines) <<< From trasz at FreeBSD.org Wed Jul 2 10:47:19 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Wed Jul 2 10:47:22 2008 Subject: PERFORCE change 144477 for review Message-ID: <200807021047.m62AlICi010865@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144477 Change 144477 by trasz@trasz_traszkan on 2008/07/02 10:46:29 Initial cut of the NFSv4 ACLs implementation, kernel part. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/files#4 edit .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#1 add .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_posix1e.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/vfs_acl.c#4 edit .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/acl.h#6 edit .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/vnode.h#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/sys/ufs/ffs/ffs_vfsops.c#4 edit .. //depot/projects/soc2008/trasz_nfs4acl/sys/ufs/ufs/ufs_acl.c#5 edit .. //depot/projects/soc2008/trasz_nfs4acl/sys/ufs/ufs/ufs_vnops.c#5 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/sys/conf/files#4 (text+ko) ==== @@ -1611,6 +1611,7 @@ kern/stack_protector.c standard \ compile-with "${NORMAL_C:N-fstack-protector*}" kern/subr_acl_posix1e.c standard +kern/subr_acl_nfs4.c standard kern/subr_autoconf.c standard kern/subr_blist.c standard kern/subr_bus.c standard ==== //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_posix1e.c#2 (text+ko) ==== @@ -427,6 +427,10 @@ printf("acl_posix1e_mode_to_entry: invalid tag (%d)\n", tag); } + acl_entry.ae_acl = NULL; + acl_entry.ae_extended = ACL_EXTENDED_ALLOW; + acl_entry.ae_flags = 0; + return (acl_entry); } ==== //depot/projects/soc2008/trasz_nfs4acl/sys/kern/vfs_acl.c#4 (text+ko) ==== @@ -66,7 +66,114 @@ static int vacl_aclcheck(struct thread *td, struct vnode *vp, acl_type_t type, struct acl *aclp); +int +acl_copy_oldacl_into_acl(const struct oldacl *source, struct acl *dest) +{ + int i; + + if (source->acl_cnt < 0 || source->acl_cnt >= ACL_MAX_ENTRIES) + return (-1); + + bzero(dest, sizeof(*dest)); + + dest->acl_magic = ACL_MAGIC; + dest->acl_cnt = source->acl_cnt; + + for (i = 0; i < dest->acl_cnt; i++) { + dest->acl_entry[i].ae_tag = source->acl_entry[i].ae_tag; + dest->acl_entry[i].ae_id = source->acl_entry[i].ae_id; + dest->acl_entry[i].ae_perm = source->acl_entry[i].ae_perm; + dest->acl_entry[i].ae_extended = ACL_EXTENDED_ALLOW; + dest->acl_entry[i].ae_flags = 0; + } + + return (0); +} + +int +acl_copy_acl_into_oldacl(const struct acl *source, struct oldacl *dest) +{ + int i; + + if (source->acl_cnt < 0 || source->acl_cnt >= ACL_MAX_ENTRIES) + return (-1); + + bzero(dest, sizeof(*dest)); + + dest->acl_cnt = source->acl_cnt; + + for (i = 0; i < dest->acl_cnt; i++) { + dest->acl_entry[i].ae_tag = source->acl_entry[i].ae_tag; + dest->acl_entry[i].ae_id = source->acl_entry[i].ae_id; + dest->acl_entry[i].ae_perm = source->acl_entry[i].ae_perm; + } + + return (0); +} + /* + * At one time, "struct ACL" was extended in order to add support for NFSv4 + * ACLs. Instead of creating compatibility versions of all the ACL-related + * syscalls, they were left intact. It's possible to find out what the code + * calling these syscalls (libc) expects basing on "type" argument - if it's + * either ACL_TYPE_ACCESS_OLD or ACL_TYPE_DEFAULT_OLD (which previously were + * known as ACL_TYPE_ACCESS and ACL_TYPE_DEFAULT), then it's the "struct + * oldacl". If it's something else, then it's the new "struct acl". In the + * latter case, the routines below just copyin/copyout the contents. In the + * former case, they copyin the "struct oldacl" and convert it to the new + * format. + */ +static int +copyin_acl(void *user_acl, struct acl *kernel_acl, acl_type_t type) +{ + int error; + struct oldacl old; + + /* Is it the new "struct acl"? */ + if (type != ACL_TYPE_ACCESS_OLD && type != ACL_TYPE_DEFAULT_OLD) + return (copyin(user_acl, kernel_acl, sizeof(struct acl))); + + /* Nope, it's a "struct oldacl". */ + error = copyin(user_acl, &old, sizeof(struct oldacl)); + if (error) + return (error); + + error = acl_copy_oldacl_into_acl(&old, kernel_acl); + + return (error); +} + +static int +copyout_acl(struct acl *kernel_acl, void *user_acl, acl_type_t type) +{ + int error; + struct oldacl old; + + if (type != ACL_TYPE_ACCESS_OLD && type != ACL_TYPE_DEFAULT_OLD) + return (copyout(kernel_acl, user_acl, sizeof(struct acl))); + + error = acl_copy_acl_into_oldacl(kernel_acl, &old); + if (error) + return (error); + + error = copyout(&old, user_acl, sizeof(struct oldacl)); + + return (error); +} + +static int +type_unold(int type) +{ + if (type == ACL_TYPE_ACCESS_OLD) + return (ACL_TYPE_ACCESS); + + if (type == ACL_TYPE_DEFAULT_OLD) + return (ACL_TYPE_DEFAULT); + + return (type); +} + +/* * These calls wrap the real vnode operations, and are called by the syscall * code once the syscall has converted the path or file descriptor to a vnode * (unlocked). The aclp pointer is assumed still to point to userland, so @@ -85,7 +192,7 @@ struct mount *mp; int error; - error = copyin(aclp, &inkernacl, sizeof(struct acl)); + error = copyin_acl(aclp, &inkernacl, type); if (error) return(error); error = vn_start_write(vp, &mp, V_WAIT | PCATCH); @@ -98,7 +205,7 @@ if (error != 0) goto out; #endif - error = VOP_SETACL(vp, type, &inkernacl, td->td_ucred, td); + error = VOP_SETACL(vp, type_unold(type), &inkernacl, td->td_ucred, td); #ifdef MAC out: #endif @@ -124,13 +231,14 @@ if (error != 0) goto out; #endif - error = VOP_GETACL(vp, type, &inkernelacl, td->td_ucred, td); + error = VOP_GETACL(vp, type_unold(type), &inkernelacl, + td->td_ucred, td); #ifdef MAC out: #endif VOP_UNLOCK(vp, 0); if (error == 0) - error = copyout(&inkernelacl, aclp, sizeof(struct acl)); + error = copyout_acl(&inkernelacl, aclp, type); return (error); } @@ -153,7 +261,7 @@ if (error) goto out; #endif - error = VOP_SETACL(vp, type, 0, td->td_ucred, td); + error = VOP_SETACL(vp, type_unold(type), 0, td->td_ucred, td); #ifdef MAC out: #endif @@ -172,10 +280,11 @@ struct acl inkernelacl; int error; - error = copyin(aclp, &inkernelacl, sizeof(struct acl)); + error = copyin_acl(aclp, &inkernelacl, type); if (error) return(error); - error = VOP_ACLCHECK(vp, type, &inkernelacl, td->td_ucred, td); + error = VOP_ACLCHECK(vp, type_unold(type), &inkernelacl, + td->td_ucred, td); return (error); } ==== //depot/projects/soc2008/trasz_nfs4acl/sys/sys/acl.h#6 (text+ko) ==== @@ -47,23 +47,58 @@ #define POSIX1E_ACL_ACCESS_EXTATTR_NAME "posix1e.acl_access" #define POSIX1E_ACL_DEFAULT_EXTATTR_NAMESPACE EXTATTR_NAMESPACE_SYSTEM #define POSIX1E_ACL_DEFAULT_EXTATTR_NAME "posix1e.acl_default" +#define NFS4_ACL_EXTATTR_NAMESPACE EXTATTR_NAMESPACE_SYSTEM +#define NFS4_ACL_EXTATTR_NAME "nfs4.acl" #define ACL_MAX_ENTRIES 32 /* maximum entries in an ACL */ +/* + * "struct oldacl" is used in compatibility ACL syscalls and for on-disk + * storage of POSIX.1e ACLs. + */ +typedef int oldacl_tag_t; +typedef mode_t oldacl_perm_t; + +struct oldacl_entry { + oldacl_tag_t ae_tag; + uid_t ae_id; + oldacl_perm_t ae_perm; +}; +typedef struct oldacl_entry *oldacl_entry_t; + +/* internal ACL structure */ +struct oldacl { + int acl_cnt; + struct oldacl_entry acl_entry[ACL_MAX_ENTRIES]; +}; + +/* + * Current "struct acl". + */ +typedef int acl_tag_t; +typedef int acl_flag_t; +typedef int acl_perm_t; +typedef int acl_extended_t; typedef int acl_type_t; -typedef int acl_tag_t; -typedef mode_t acl_perm_t; -typedef mode_t *acl_permset_t; +typedef int *acl_permset_t; struct acl_entry { acl_tag_t ae_tag; uid_t ae_id; acl_perm_t ae_perm; + /* "allow" or "deny". Unused in POSIX ACLs. */ + acl_extended_t ae_extended; + /* Flags control inheritance. Unused in POSIX ACLs. */ + acl_flag_t ae_flags; + struct acl *ae_acl; /* XXX: This is ugly. */ }; typedef struct acl_entry *acl_entry_t; /* internal ACL structure */ struct acl { + int acl_magic; int acl_cnt; + int acl_length; + int acl_brand; struct acl_entry acl_entry[ACL_MAX_ENTRIES]; }; @@ -74,6 +109,15 @@ }; typedef struct acl_t_struct *acl_t; +#define ACL_MAGIC 0x5452535a + +/* + * Possible valid values for acl_brand field. + */ +#define ACL_BRAND_UNKNOWN 0 +#define ACL_BRAND_POSIX 1 +#define ACL_BRAND_NFS4 2 + /* * Possible valid values for ae_tag field. */ @@ -85,15 +129,27 @@ #define ACL_MASK 0x00000010 #define ACL_OTHER 0x00000020 #define ACL_OTHER_OBJ ACL_OTHER +#define ACL_EVERYONE 0x00000040 /* + * Possible valid values for ae_extended field. + */ +#define ACL_EXTENDED_ALLOW 0x00000100 +#define ACL_EXTENDED_DENY 0x00000200 +#define ACL_EXTENDED_AUDIT 0x00000400 +#define ACL_EXTENDED_ALARM 0x00000800 + +/* * Possible valid values for acl_type_t arguments. */ -#define ACL_TYPE_ACCESS 0x00000000 -#define ACL_TYPE_DEFAULT 0x00000001 +#define ACL_TYPE_ACCESS_OLD 0x00000000 +#define ACL_TYPE_DEFAULT_OLD 0x00000001 +#define ACL_TYPE_ACCESS 0x00000002 +#define ACL_TYPE_DEFAULT 0x00000003 +#define ACL_TYPE_NFS4 0x00000004 /* - * Possible flags in ae_perm field. + * Possible flags in ae_perm field for POSIX ACLs. */ #define ACL_EXECUTE 0x0001 #define ACL_WRITE 0x0002 @@ -103,12 +159,65 @@ #define ACL_POSIX1E_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ) /* + * Possible flags in ae_perm field for NFSv4 ACLs. + * XXX: Change values of these to match rfc3530. + */ +#define ACL_READ_DATA 0x00010000 +#define ACL_LIST_DIRECTORY 0x00010000 +#define ACL_WRITE_DATA 0x00020000 +#define ACL_ADD_FILE 0x00020000 +#define ACL_APPEND_DATA 0x00040000 +#define ACL_ADD_SUBDIRECTORY 0x00040000 +#define ACL_READ_NAMED_ATTRS 0x00080000 +#define ACL_READ_EXTATTRIBUTES ACL_READ_NAMED_ATTRS /* Darwin compatibility. */ +#define ACL_WRITE_NAMED_ATTRS 0x00100000 +#define ACL_WRITE_EXTATTRIBUTES ACL_WRITE_NAMED_ATTRS /* Darwin compatibility. */ +#ifdef XXX_conflicting_defines +#define ACL_EXECUTE 0x00200000 +#define ACL_SEARCH ACL_EXECUTE /* Darwin compatibility. */ +#else +#define ACL_SEARCH 0x00200000 +#endif +#define ACL_DELETE_CHILD 0x00400000 +#define ACL_READ_ATTRIBUTES 0x00800000 +#define ACL_WRITE_ATTRIBUTES 0x01000000 +#define ACL_DELETE 0x02000000 +#define ACL_READ_ACL 0x04000000 +#define ACL_READ_SECURITY ACL_READ_ACL /* Darwin compatibility. */ +#define ACL_WRITE_ACL 0x08000000 +#define ACL_WRITE_SECURITY ACL_WRITE_ACL /* Darwin compatibility. */ +#define ACL_WRITE_OWNER 0x10000000 +#define ACL_CHANGE_OWNER ACL_WRITE_OWNER /* Darwin compatibility. */ +#define ACL_SYNCHRONIZE 0x20000000 + +#define ACL_NFS4_PERM_BITS (ACL_READ_DATA | ACL_WRITE_DATA | ACL_APPEND_DATA | \ + ACL_READ_NAMED_ATTRS | ACL_WRITE_NAMED_ATTRS | ACL_EXECUTE | ACL_DELETE_CHILD | \ + ACL_READ_ATTRIBUTES | ACL_WRITE_ATTRIBUTES | ACL_DELETE | ACL_READ_ACL | \ + ACL_WRITE_ACL | ACL_WRITE_OWNER | ACL_SYNCHRONIZE) + +/* * Possible entry_id values for acl_get_entry() */ #define ACL_FIRST_ENTRY 0 #define ACL_NEXT_ENTRY 1 /* + * Possible values in ae_flags field; valid only for NFSv4 ACLs. + */ +/* #define ACL_FLAG_DEFER_INHERIT - this doesn't seem to be used in Darwin. */ +/* #define ACL_ENTRY_INHERITED - this seems to be used in Darwin, but how does it translate into rfc3530? */ +#define ACL_ENTRY_FILE_INHERIT 0x00000001 /* ACE4_FILE_INHERIT_ACE */ +#define ACL_ENTRY_DIRECTORY_INHERIT 0x00000002 /* ACE4_DIRECTORY_INHERIT_ACE */ +#define ACL_ENTRY_LIMIT_INHERIT 0x00000004 /* ACE4_NO_PROPAGATE_INHERIT_ACE */ +#define ACL_ENTRY_ONLY_INHERIT 0x00000008 /* ACE4_INHERIT_ONLY_ACE */ +#define ACL_FLAG_SUCCESSFUL_ACCESS 0x00000010 /* Valid only for ACL_EXTENDED_ALARM and ACL_EXTENDED_AUDIT. */ +#define ACL_FLAG_FAILED_ACCESS 0x00000020 /* s/a */ + +#define ACL_FLAGS_BITS (ACL_ENTRY_FILE_INHERIT | ACL_ENTRY_DIRECTORY_INHERIT | \ + ACL_ENTRY_LIMIT_INHERIT | ACL_ENTRY_ONLY_INHERIT | ACL_FLAG_SUCCESSFUL_ACCESS | \ + ACL_FLAG_FAILED_ACCESS) + +/* * Undefined value in ae_id field */ #define ACL_UNDEFINED_ID ((uid_t)-1) @@ -118,6 +227,7 @@ extern uma_zone_t acl_zone; +#endif /* * POSIX.1e ACLs are capable of expressing the read, write, and execute bits * of the POSIX mode field. We provide two masks: one that defines the bits @@ -127,6 +237,7 @@ #define ACL_OVERRIDE_MASK (S_IRWXU | S_IRWXG | S_IRWXO) #define ACL_PRESERVE_MASK (~ACL_OVERRIDE_MASK) +#ifdef _KERNEL /* * File system independent code to move back and forth between POSIX mode and * POSIX.1e ACL representations. @@ -142,10 +253,19 @@ mode_t acl_posix1e_newfilemode(mode_t cmode, struct acl *dacl); +int acl_nfs4_sync_acl_from_mode(struct acl *aclp, mode_t mode, int file_owner_id); +void acl_nfs4_sync_mode_from_acl(mode_t *mode, const struct acl *aclp); +int acl_nfs4_is_trivial(const struct acl *aclp); +int acl_nfs4_compute_inherited_acl(struct acl *child_aclp, const struct acl *parent_aclp, + mode_t mode, int file_owner_id, int is_directory); +int acl_copy_oldacl_into_acl(const struct oldacl *source, struct acl *dest); +int acl_copy_acl_into_oldacl(const struct acl *source, struct oldacl *dest); + /* * File system independent syntax check for a POSIX.1e ACL. */ int acl_posix1e_check(struct acl *acl); +int acl_nfs4_check(const struct acl *aclp, int is_directory); #else /* !_KERNEL */ @@ -184,7 +304,9 @@ ssize_t acl_copy_ext(void *_buf_p, acl_t _acl, ssize_t _size); acl_t acl_copy_int(const void *_buf_p); int acl_create_entry(acl_t *_acl_p, acl_entry_t *_entry_p); +int acl_create_entry_at_position_np(acl_t *_acl_p, acl_entry_t *_entry_p, int _index); int acl_delete_entry(acl_t _acl, acl_entry_t _entry_d); +int acl_delete_entry_at_position_np(acl_t _acl, int _index); int acl_delete_fd_np(int _filedes, acl_type_t _type); int acl_delete_file_np(const char *_path_p, acl_type_t _type); int acl_delete_link_np(const char *_path_p, acl_type_t _type); @@ -198,6 +320,8 @@ acl_t acl_get_fd(int _fd); acl_t acl_get_fd_np(int fd, acl_type_t _type); acl_t acl_get_file(const char *_path_p, acl_type_t _type); +int acl_get_flags_np(acl_entry_t _entry_d, acl_flag_t *_flags_p); +int acl_get_extended_np(acl_entry_t _entry_d, acl_extended_t *_extended_p); acl_t acl_get_link_np(const char *_path_p, acl_type_t _type); void *acl_get_qualifier(acl_entry_t _entry_d); int acl_get_perm_np(acl_permset_t _permset_d, acl_perm_t _perm); @@ -207,6 +331,8 @@ int acl_set_fd(int _fd, acl_t _acl); int acl_set_fd_np(int _fd, acl_t _acl, acl_type_t _type); int acl_set_file(const char *_path_p, acl_type_t _type, acl_t _acl); +int acl_set_flags_np(acl_entry_t _entry_d, acl_flag_t _flags); +int acl_set_extended_np(acl_entry_t _entry_d, acl_extended_t _extended); int acl_set_link_np(const char *_path_p, acl_type_t _type, acl_t _acl); int acl_set_permset(acl_entry_t _entry_d, acl_permset_t _permset_d); int acl_set_qualifier(acl_entry_t _entry_d, const void *_tag_qualifier_p); @@ -217,6 +343,9 @@ int acl_valid_fd_np(int _fd, acl_type_t _type, acl_t _acl); int acl_valid_file_np(const char *_path_p, acl_type_t _type, acl_t _acl); int acl_valid_link_np(const char *_path_p, acl_type_t _type, acl_t _acl); +int acl_is_trivial_np(const acl_t _acl); +acl_t acl_compute_trivial_np(const acl_t _acl); +acl_t acl_strip_np(const acl_t _acl, int recalculate_mask); __END_DECLS #endif /* !_KERNEL */ ==== //depot/projects/soc2008/trasz_nfs4acl/sys/sys/vnode.h#2 (text+ko) ==== @@ -589,6 +589,9 @@ int vaccess_acl_posix1e(enum vtype type, uid_t file_uid, gid_t file_gid, struct acl *acl, mode_t acc_mode, struct ucred *cred, int *privused); +int vaccess_acl_nfs4(enum vtype type, uid_t file_uid, + gid_t file_gid, struct acl *acl, mode_t acc_mode, + struct ucred *cred, int *privused); void vattr_null(struct vattr *vap); int vcount(struct vnode *vp); void vdrop(struct vnode *); ==== //depot/projects/soc2008/trasz_nfs4acl/sys/ufs/ffs/ffs_vfsops.c#4 (text+ko) ==== @@ -172,10 +172,12 @@ vfs_deleteopt(mp->mnt_opt, "snapshot"); if (vfs_getopt(mp->mnt_optnew, "nfs4acls", NULL, NULL) == 0) { - printf("WARNING: both acls and nfs4acls specified\n"); + if (mntorflags & MNT_ACLS) { + printf("WARNING: both acls and nfs4acls specified\n"); #if 0 - return (EINVAL); + return (EINVAL); #endif + } mntorflags |= MNT_NFS4ACLS; } ==== //depot/projects/soc2008/trasz_nfs4acl/sys/ufs/ufs/ufs_acl.c#5 (text+ko) ==== @@ -139,6 +139,52 @@ DIP_SET(ip, i_mode, ip->i_mode); } +static int +ufs_getacl_nfs4(struct vop_getacl_args *ap) +{ + int error, len; + struct inode *ip = VTOI(ap->a_vp); + + if ((ap->a_vp->v_mount->mnt_flag & MNT_NFS4ACLS) == 0) + return (EOPNOTSUPP); + + bzero(ap->a_aclp, sizeof(*ap->a_aclp)); + len = sizeof(*ap->a_aclp); + + error = vn_extattr_get(ap->a_vp, IO_NODELOCKED, + NFS4_ACL_EXTATTR_NAMESPACE, + NFS4_ACL_EXTATTR_NAME, &len, (char *) ap->a_aclp, + ap->a_td); + + if (error == ENOATTR) { + /* + * Legitimately no ACL set on object, purely + * emulate it through the inode. + */ + error = acl_nfs4_sync_acl_from_mode(ap->a_aclp, ip->i_mode, ip->i_uid); + + return (error); + } + + if (error) + return (error); + + if (len != sizeof(*ap->a_aclp)) { + /* + * A short (or long) read, meaning that for + * some reason the ACL is corrupted. Return + * EPERM since the object DAC protections + * are unsafe. + */ + printf("ufs_getacl_nfs4(): Loaded invalid ACL (" + "%d bytes)\n", len); + + return (EPERM); + } + + return (0); +} + /* * Retrieve the ACL on a file. * @@ -146,18 +192,12 @@ * assemble both into a final ACL product. Right now this is not done * very efficiently. */ -int -ufs_getacl(ap) - struct vop_getacl_args /* { - struct vnode *vp; - struct acl_type_t type; - struct acl *aclp; - struct ucred *cred; - struct thread *td; - } */ *ap; +static int +ufs_getacl_posix1e(struct vop_getacl_args *ap) { struct inode *ip = VTOI(ap->a_vp); int error, len; + struct oldacl old; /* * XXX: If ufs_getacl() should work on file systems not supporting @@ -169,8 +209,8 @@ /* * Attempt to retrieve the ACL based on the ACL type. */ - bzero(ap->a_aclp, sizeof(*ap->a_aclp)); - len = sizeof(*ap->a_aclp); + bzero(&old, sizeof(old)); + len = sizeof(old); switch(ap->a_type) { case ACL_TYPE_ACCESS: /* @@ -182,7 +222,7 @@ */ error = vn_extattr_get(ap->a_vp, IO_NODELOCKED, POSIX1E_ACL_ACCESS_EXTATTR_NAMESPACE, - POSIX1E_ACL_ACCESS_EXTATTR_NAME, &len, (char *) ap->a_aclp, + POSIX1E_ACL_ACCESS_EXTATTR_NAME, &len, (char *) &old, ap->a_td); switch (error) { /* XXX: If ufs_getacl() should work on filesystems without @@ -194,34 +234,45 @@ * be updated when the ACL is synchronized with * the inode later. */ - ap->a_aclp->acl_cnt = 3; - ap->a_aclp->acl_entry[0].ae_tag = ACL_USER_OBJ; - ap->a_aclp->acl_entry[0].ae_id = ACL_UNDEFINED_ID; - ap->a_aclp->acl_entry[0].ae_perm = ACL_PERM_NONE; - ap->a_aclp->acl_entry[1].ae_tag = ACL_GROUP_OBJ; - ap->a_aclp->acl_entry[1].ae_id = ACL_UNDEFINED_ID; - ap->a_aclp->acl_entry[1].ae_perm = ACL_PERM_NONE; - ap->a_aclp->acl_entry[2].ae_tag = ACL_OTHER; - ap->a_aclp->acl_entry[2].ae_id = ACL_UNDEFINED_ID; - ap->a_aclp->acl_entry[2].ae_perm = ACL_PERM_NONE; + old.acl_cnt = 3; + old.acl_entry[0].ae_tag = ACL_USER_OBJ; + old.acl_entry[0].ae_id = ACL_UNDEFINED_ID; + old.acl_entry[0].ae_perm = ACL_PERM_NONE; + old.acl_entry[1].ae_tag = ACL_GROUP_OBJ; + old.acl_entry[1].ae_id = ACL_UNDEFINED_ID; + old.acl_entry[1].ae_perm = ACL_PERM_NONE; + old.acl_entry[2].ae_tag = ACL_OTHER; + old.acl_entry[2].ae_id = ACL_UNDEFINED_ID; + old.acl_entry[2].ae_perm = ACL_PERM_NONE; + + error = acl_copy_oldacl_into_acl(&old, ap->a_aclp); + if (error) + return (error); + ufs_sync_acl_from_inode(ip, ap->a_aclp); - error = 0; - break; + + return (0); case 0: - if (len != sizeof(*ap->a_aclp)) { + if (len != sizeof(old)) { /* * A short (or long) read, meaning that for * some reason the ACL is corrupted. Return * EPERM since the object DAC protections * are unsafe. */ - printf("ufs_getacl(): Loaded invalid ACL (" + printf("ufs_getacl_posix1e(): Loaded invalid ACL (" "%d bytes)\n", len); return (EPERM); } + + error = acl_copy_oldacl_into_acl(&old, ap->a_aclp); + if (error) + return (error); + ufs_sync_acl_from_inode(ip, ap->a_aclp); - break; + + return (0); default: break; @@ -236,7 +287,7 @@ error = vn_extattr_get(ap->a_vp, IO_NODELOCKED, POSIX1E_ACL_DEFAULT_EXTATTR_NAMESPACE, POSIX1E_ACL_DEFAULT_EXTATTR_NAME, &len, - (char *) ap->a_aclp, ap->a_td); + (char *) &old, ap->a_td); /* * Unlike ACL_TYPE_ACCESS, there is no relationship between * the inode contents and the ACL, and it is therefore @@ -248,13 +299,13 @@ /* XXX: If ufs_getacl() should work on filesystems without * the EA configured, add case EOPNOTSUPP here. */ case ENOATTR: - bzero(ap->a_aclp, sizeof(*ap->a_aclp)); - ap->a_aclp->acl_cnt = 0; + bzero(&old, sizeof(old)); + old.acl_cnt = 0; error = 0; break; case 0: - if (len != sizeof(*ap->a_aclp)) { + if (len != sizeof(old)) { /* * A short (or long) read, meaning that for * some reason the ACL is corrupted. Return @@ -276,9 +327,98 @@ error = EINVAL; } + if (error) + return (error); + + error = acl_copy_oldacl_into_acl(&old, ap->a_aclp); + return (error); } +int +ufs_getacl(ap) + struct vop_getacl_args /* { + struct vnode *vp; + acl_type_t type; + struct acl *aclp; + struct ucred *cred; + struct thread *td; + } */ *ap; +{ + if (ap->a_type == ACL_TYPE_NFS4) + return (ufs_getacl_nfs4(ap)); + + return (ufs_getacl_posix1e(ap)); +} + +static int +ufs_setacl_nfs4(struct vop_setacl_args *ap) +{ + int error; + mode_t mode; + struct inode *ip = VTOI(ap->a_vp); + + if ((ap->a_vp->v_mount->mnt_flag & MNT_NFS4ACLS) == 0) + return (EOPNOTSUPP); + + if (ap->a_vp->v_mount->mnt_flag & MNT_RDONLY) + return (EROFS); + + if (ap->a_aclp == NULL) + return (EINVAL); + + error = VOP_ACLCHECK(ap->a_vp, ap->a_type, ap->a_aclp, ap->a_cred, ap->a_td); + if (error) + return (error); + + /* + * Authorize the ACL operation. + */ + if (ip->i_flags & (IMMUTABLE | APPEND)) + return (EPERM); + + /* + * Must hold VADMIN (be file owner) or have appropriate privilege. + */ + if ((error = VOP_ACCESS(ap->a_vp, VADMIN, ap->a_cred, ap->a_td))) + return (error); + + if (acl_nfs4_is_trivial(ap->a_aclp)) { + error = vn_extattr_rm(ap->a_vp, IO_NODELOCKED, + NFS4_ACL_EXTATTR_NAMESPACE, + NFS4_ACL_EXTATTR_NAME, ap->a_td); + + } else { + error = vn_extattr_set(ap->a_vp, IO_NODELOCKED, + NFS4_ACL_EXTATTR_NAMESPACE, + NFS4_ACL_EXTATTR_NAME, sizeof(*ap->a_aclp), + (char *) ap->a_aclp, ap->a_td); + } + + /* + * Map lack of attribute definition in UFS_EXTATTR into lack of + * support for ACLs on the filesystem. + */ + if (error == ENOATTR) + return (EOPNOTSUPP); + + if (error) + return (error); + + mode = ip->i_mode; + + acl_nfs4_sync_mode_from_acl(&mode, ap->a_aclp); + + ip->i_mode &= ACL_PRESERVE_MASK; + ip->i_mode |= mode; + DIP_SET(ip, i_mode, ip->i_mode); + ip->i_flag |= IN_CHANGE; + + VN_KNOTE_UNLOCKED(ap->a_vp, NOTE_ATTRIB); + + return (0); +} + /* * Set the ACL on a file. * @@ -288,18 +428,12 @@ * a fair number of different access checks may be required to go ahead * with the operation at all. */ -int -ufs_setacl(ap) - struct vop_setacl_args /* { - struct vnode *vp; - acl_type_t type; - struct acl *aclp; - struct ucred *cred; - struct proc *p; - } */ *ap; +static int +ufs_setacl_posix1e(struct vop_setacl_args *ap) { struct inode *ip = VTOI(ap->a_vp); int error; + struct oldacl old; if ((ap->a_vp->v_mount->mnt_flag & MNT_ACLS) == 0) return (EOPNOTSUPP); @@ -344,12 +478,16 @@ if ((error = VOP_ACCESS(ap->a_vp, VADMIN, ap->a_cred, ap->a_td))) return (error); + error = acl_copy_acl_into_oldacl(ap->a_aclp, &old); + if (error) + return (error); + switch(ap->a_type) { case ACL_TYPE_ACCESS: error = vn_extattr_set(ap->a_vp, IO_NODELOCKED, POSIX1E_ACL_ACCESS_EXTATTR_NAMESPACE, - POSIX1E_ACL_ACCESS_EXTATTR_NAME, sizeof(*ap->a_aclp), - (char *) ap->a_aclp, ap->a_td); + POSIX1E_ACL_ACCESS_EXTATTR_NAME, sizeof(old), + (char *) &old, ap->a_td); break; case ACL_TYPE_DEFAULT: @@ -373,7 +511,7 @@ error = vn_extattr_set(ap->a_vp, IO_NODELOCKED, POSIX1E_ACL_DEFAULT_EXTATTR_NAMESPACE, POSIX1E_ACL_DEFAULT_EXTATTR_NAME, - sizeof(*ap->a_aclp), (char *) ap->a_aclp, ap->a_td); + sizeof(old), (char *) &old, ap->a_td); break; default: @@ -401,12 +539,9 @@ return (0); } -/* - * Check the validity of an ACL for a file. - */ int -ufs_aclcheck(ap) - struct vop_aclcheck_args /* { +ufs_setacl(ap) + struct vop_setacl_args /* { struct vnode *vp; acl_type_t type; struct acl *aclp; @@ -414,7 +549,29 @@ struct thread *td; } */ *ap; { + if (ap->a_type == ACL_TYPE_NFS4) + return (ufs_setacl_nfs4(ap)); + + return (ufs_setacl_posix1e(ap)); +} + +static int +ufs_aclcheck_nfs4(struct vop_aclcheck_args *ap) +{ + int is_directory = 0; + + if ((ap->a_vp->v_mount->mnt_flag & MNT_NFS4ACLS) == 0) + return (EOPNOTSUPP); + + if (ap->a_vp->v_type == VDIR) + is_directory = 1; + return (acl_nfs4_check(ap->a_aclp, is_directory)); +} + +static int +ufs_aclcheck_posix1e(struct vop_aclcheck_args *ap) +{ if ((ap->a_vp->v_mount->mnt_flag & MNT_ACLS) == 0) return (EOPNOTSUPP); @@ -438,4 +595,23 @@ return (acl_posix1e_check(ap->a_aclp)); } +/* + * Check the validity of an ACL for a file. + */ +int +ufs_aclcheck(ap) + struct vop_aclcheck_args /* { + struct vnode *vp; + acl_type_t type; + struct acl *aclp; + struct ucred *cred; + struct thread *td; + } */ *ap; +{ + if (ap->a_type == ACL_TYPE_NFS4) + return (ufs_aclcheck_nfs4(ap)); + + return (ufs_aclcheck_posix1e(ap)); +} + #endif /* !UFS_ACL */ ==== //depot/projects/soc2008/trasz_nfs4acl/sys/ufs/ufs/ufs_vnops.c#5 (text+ko) ==== @@ -312,6 +312,7 @@ int error; #ifdef UFS_ACL struct acl *acl; + acl_type_t type; #endif /* @@ -337,9 +338,14 @@ return (EPERM); #ifdef UFS_ACL - if ((vp->v_mount->mnt_flag & MNT_ACLS) != 0) { + if ((vp->v_mount->mnt_flag & (MNT_ACLS | MNT_NFS4ACLS)) != 0) { + if (vp->v_mount->mnt_flag & MNT_NFS4ACLS) + type = ACL_TYPE_NFS4; + else + type = ACL_TYPE_ACCESS; + acl = uma_zalloc(acl_zone, M_WAITOK); - error = VOP_GETACL(vp, ACL_TYPE_ACCESS, acl, ap->a_cred, + error = VOP_GETACL(vp, type, acl, ap->a_cred, ap->a_td); switch (error) { case EOPNOTSUPP: @@ -347,8 +353,13 @@ ip->i_gid, ap->a_mode, ap->a_cred, NULL); break; case 0: - error = vaccess_acl_posix1e(vp->v_type, ip->i_uid, - ip->i_gid, acl, ap->a_mode, ap->a_cred, NULL); + if (type == ACL_TYPE_NFS4) { + error = vaccess_acl_nfs4(vp->v_type, ip->i_uid, + ip->i_gid, acl, ap->a_mode, ap->a_cred, NULL); + } else { + error = vaccess_acl_posix1e(vp->v_type, ip->i_uid, + ip->i_gid, acl, ap->a_mode, ap->a_cred, NULL); + } break; default: printf( @@ -631,6 +642,37 @@ return (error); } +#ifdef UFS_ACL +static int +ufs_update_nfs4_acl_after_mode_change(struct vnode *vp, int mode, + int file_owner_id, struct ucred *cred, struct thread *td) +{ + int error; + struct acl *aclp; + + aclp = uma_zalloc(acl_zone, M_WAITOK); + + error = VOP_GETACL(vp, ACL_TYPE_NFS4, aclp, cred, td); + /* + * We cannot get EOPNOTSUPP here, as the filesystem claims + * to support ACLs. + */ + if (error) + goto out; + + error = acl_nfs4_sync_acl_from_mode(aclp, mode, file_owner_id); + if (error) + goto out; + + error = VOP_SETACL(vp, ACL_TYPE_NFS4, aclp, cred, td); + +out: + uma_zfree(acl_zone, aclp); + + return (error); +} +#endif /* UFS_ACL */ + /* * Change the mode on a file. * Inode must be locked before calling. @@ -670,7 +712,11 @@ ip->i_mode |= (mode & ALLPERMS); DIP_SET(ip, i_mode, ip->i_mode); ip->i_flag |= IN_CHANGE; - return (0); +#ifdef UFS_ACL + if ((vp->v_mount->mnt_flag & MNT_NFS4ACLS) != 0) + error = ufs_update_nfs4_acl_after_mode_change(vp, mode, ip->i_uid, cred, td); +#endif + return (error); } /* @@ -1355,6 +1401,38 @@ >>> TRUNCATED FOR MAIL (1000 lines) <<< From trasz at FreeBSD.org Wed Jul 2 11:03:40 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Wed Jul 2 11:03:43 2008 Subject: PERFORCE change 144478 for review Message-ID: <200807021103.m62B3d0O013866@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144478 Change 144478 by trasz@trasz_traszkan on 2008/07/02 11:02:45 NFSv4 ACLs, libc part. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/Makefile.inc#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/Symbol.map#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_branding.c#1 add .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_calc_mask.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_copy.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_delete.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_delete_entry.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_entry.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_flags_nfs4.c#1 add .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_flags_nfs4.h#1 add .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_from_text.c#3 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_from_text_nfs4.c#1 add .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_get.c#3 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_init.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_perm.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_set.c#3 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_strip.c#1 add .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_support.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_support.h#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_to_text.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_to_text_nfs4.c#1 add .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_valid.c#2 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/Makefile.inc#2 (text+ko) ==== @@ -7,14 +7,20 @@ acl_delete.c \ acl_delete_entry.c \ acl_entry.c \ + acl_flags_nfs4.c \ acl_free.c \ acl_from_text.c \ + acl_from_text_nfs4.c \ acl_get.c \ acl_init.c \ acl_perm.c \ acl_set.c \ acl_support.c \ + acl_branding.c \ + acl_strip.c \ acl_to_text.c \ + acl_to_text_nfs4.c \ + acl_strip.c \ acl_valid.c \ extattr.c \ mac.c \ ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/Symbol.map#2 (text) ==== @@ -13,12 +13,16 @@ acl_delete_link_np; acl_delete_fd_np; acl_delete_entry; + acl_delete_entry_at_position_np; acl_create_entry; + acl_create_entry_at_position_np; acl_get_entry; acl_free; acl_from_text; acl_get_file; acl_get_link_np; + acl_get_extended_np; + acl_get_flags_np; acl_get_fd; acl_get_fd_np; acl_get_perm_np; @@ -30,6 +34,8 @@ acl_add_perm; acl_clear_perms; acl_delete_perm; + acl_set_extended_np; + acl_set_flags_np; acl_set_file; acl_set_link_np; acl_set_fd; @@ -42,6 +48,8 @@ acl_valid_file_np; acl_valid_link_np; acl_valid_fd_np; + acl_is_trivial_np; + acl_strip_np; extattr_namespace_to_string; extattr_string_to_namespace; mac_reload; ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_calc_mask.c#2 (text+ko) ==== @@ -35,6 +35,8 @@ #include #include +#include "acl_support.h" + /* * acl_calc_mask() (23.4.2): calculate and set the permissions * associated with the ACL_MASK ACL entry. If the ACL already @@ -48,6 +50,11 @@ acl_t acl_new; int i, mask_mode, mask_num; + if (!_acl_must_be_posix(*acl_p)) { + errno = EINVAL; + return (-1); + } + /* * (23.4.2.4) requires acl_p to point to a pointer to a valid ACL. * Since one of the primary reasons to use this function would be ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_copy.c#2 (text+ko) ==== @@ -35,6 +35,8 @@ #include #include +#include "acl_support.h" + /* * acl_copy_entry() (23.4.4): copy the contents of ACL entry src_d to * ACL entry dest_d @@ -48,9 +50,25 @@ return (-1); } - dest_d->ae_tag = src_d->ae_tag; - dest_d->ae_id = src_d->ae_id; + if (_entry_is_posix(src_d)) { + if (!_entry_must_be_posix(dest_d)) { + errno = EINVAL; + return (-1); + } + } + + if (_entry_is_nfs4(src_d)) { + if (!_entry_must_be_nfs4(dest_d)) { + errno = EINVAL; + return (-1); + } + } + + dest_d->ae_tag = src_d->ae_tag; + dest_d->ae_id = src_d->ae_id; dest_d->ae_perm = src_d->ae_perm; + dest_d->ae_extended = src_d->ae_extended; + dest_d->ae_flags = src_d->ae_flags; return (0); } ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_delete.c#2 (text+ko) ==== @@ -38,6 +38,8 @@ #include "un-namespace.h" #include +#include "acl_support.h" + int acl_delete_def_file(const char *path_p) { @@ -56,6 +58,8 @@ acl_delete_file_np(const char *path_p, acl_type_t type) { + type = _acl_type_unold(type); + return (__acl_delete_file(path_p, type)); } @@ -63,6 +67,8 @@ acl_delete_link_np(const char *path_p, acl_type_t type) { + type = _acl_type_unold(type); + return (__acl_delete_link(path_p, type)); } @@ -71,5 +77,7 @@ acl_delete_fd_np(int filedes, acl_type_t type) { + type = _acl_type_unold(type); + return (___acl_delete_fd(filedes, type)); } ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_delete_entry.c#2 (text+ko) ==== @@ -33,6 +33,40 @@ #include "un-namespace.h" #include #include +#include + +#include "acl_support.h" + +static int +_entry_matches(const acl_entry_t a, const acl_entry_t b) +{ + /* + * There is a semantical difference here between NFSv4 and POSIX + * draft ACLs. In POSIX, there may be only one entry for the particular + * user or group. In NFSv4 ACL, there may be any number of them. We're + * trying to be more specific here in that case. + * + * XXX: The proper way would be to remove them by entry number. + */ + if (_entry_is_nfs4(a)) { + if (a->ae_tag != b->ae_tag || a->ae_extended != b->ae_extended) + return (0); + + /* If ae_ids matter, compare them as well. */ + if (a->ae_tag == ACL_USER || a->ae_tag == ACL_GROUP) { + if (a->ae_id != b->ae_id) + return (0); + } + + return (1); + + } else { + if ((a->ae_tag == b->ae_tag) && (a->ae_id == b->ae_id)) + return (1); + } + + return (0); +} /* * acl_delete_entry() (23.4.9): remove the ACL entry indicated by entry_d @@ -42,7 +76,7 @@ acl_delete_entry(acl_t acl, acl_entry_t entry_d) { struct acl *acl_int; - int i; + int i, found = 0; if (acl == NULL || entry_d == NULL) { errno = EINVAL; @@ -51,15 +85,18 @@ acl_int = &acl->ats_acl; + if (_entry_is_nfs4(entry_d) != _acl_is_nfs4(acl)) { + errno = EINVAL; + return (-1); + } + if ((acl->ats_acl.acl_cnt < 1) || (acl->ats_acl.acl_cnt > ACL_MAX_ENTRIES)) { errno = EINVAL; return (-1); } for (i = 0; i < acl->ats_acl.acl_cnt; i++) { - /* if this is our entry... */ - if ((acl->ats_acl.acl_entry[i].ae_tag == entry_d->ae_tag) && - (acl->ats_acl.acl_entry[i].ae_id == entry_d->ae_id)) { + if (_entry_matches(&(acl->ats_acl.acl_entry[i]), entry_d)) { /* ...shift the remaining entries... */ for (; i < acl->ats_acl.acl_cnt - 1; ++i) acl->ats_acl.acl_entry[i] = @@ -68,12 +105,57 @@ acl->ats_acl.acl_cnt--; bzero(&acl->ats_acl.acl_entry[i], sizeof(struct acl_entry)); + /* XXX: We need this because of the bzero above. */ + _acl_fixup_entry_pointers(acl); acl->ats_cur_entry = 0; - return (0); + + /* Continue with the loop to remove all maching entries. */ + found = 1; } } + if (found) + return (0); errno = EINVAL; return (-1); } + +int +acl_delete_entry_at_position_np(acl_t acl, int offset) +{ + struct acl *acl_int; + int i; + + if (acl == NULL) { + errno = EINVAL; + return (-1); + } + + acl_int = &acl->ats_acl; + + if (offset < 0 || offset >= acl_int->acl_cnt) { + errno = EINVAL; + return (-1); + } + + if ((acl->ats_acl.acl_cnt < 1) || + (acl->ats_acl.acl_cnt > ACL_MAX_ENTRIES)) { + errno = EINVAL; + return (-1); + } + + /* ...shift the remaining entries... */ + for (i = offset; i < acl->ats_acl.acl_cnt - 1; ++i) + acl->ats_acl.acl_entry[i] = + acl->ats_acl.acl_entry[i+1]; + /* ...drop the count and zero the unused entry... */ + acl->ats_acl.acl_cnt--; + bzero(&acl->ats_acl.acl_entry[i], + sizeof(struct acl_entry)); + /* XXX: We need this because of the bzero above. */ + _acl_fixup_entry_pointers(acl); + acl->ats_cur_entry = 0; + + return (0); +} ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_entry.c#2 (text+ko) ==== @@ -51,7 +51,8 @@ acl_int = &(*acl_p)->ats_acl; - if ((acl_int->acl_cnt >= ACL_MAX_ENTRIES) || (acl_int->acl_cnt < 0)) { + /* XXX: There was a bug here. */ + if ((acl_int->acl_cnt + 1 >= ACL_MAX_ENTRIES) || (acl_int->acl_cnt < 0)) { errno = EINVAL; return (-1); } @@ -61,6 +62,50 @@ (**entry_p).ae_tag = ACL_UNDEFINED_TAG; (**entry_p).ae_id = ACL_UNDEFINED_ID; (**entry_p).ae_perm = ACL_PERM_NONE; + (**entry_p).ae_acl = acl_int; + (**entry_p).ae_flags= 0; + + (*acl_p)->ats_cur_entry = 0; + + return (0); +} + +int +acl_create_entry_at_position_np(acl_t *acl_p, acl_entry_t *entry_p, int offset) +{ + int i; + struct acl *acl_int; + + if (acl_p == NULL) { + errno = EINVAL; + return (-1); + } + + acl_int = &(*acl_p)->ats_acl; + + if ((acl_int->acl_cnt + 1 >= ACL_MAX_ENTRIES) || (acl_int->acl_cnt < 0)) { + errno = EINVAL; + return (-1); + } + + if (offset < 0 || offset >= acl_int->acl_cnt) { + errno = EINVAL; + return (-1); + } + + /* Make room for the new entry. */ + for (i = acl_int->acl_cnt; i > offset; i--) + acl_int->acl_entry[i] = acl_int->acl_entry[i - 1]; + + acl_int->acl_cnt++; + + *entry_p = &acl_int->acl_entry[offset]; + + (**entry_p).ae_tag = ACL_UNDEFINED_TAG; + (**entry_p).ae_id = ACL_UNDEFINED_ID; + (**entry_p).ae_perm = ACL_PERM_NONE; + (**entry_p).ae_acl = acl_int; + (**entry_p).ae_flags= 0; (*acl_p)->ats_cur_entry = 0; @@ -90,6 +135,7 @@ if (acl->ats_cur_entry >= acl->ats_acl.acl_cnt) return 0; *entry_p = &acl_int->acl_entry[acl->ats_cur_entry++]; + (*entry_p)->ae_acl = acl_int; return (1); } ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_from_text.c#3 (text+ko) ==== @@ -40,46 +40,16 @@ #include #include #include +#include #include "acl_support.h" static int _posix1e_acl_name_to_id(acl_tag_t tag, char *name, uid_t *id); static acl_tag_t acl_string_to_tag(char *tag, char *qualifier); -static char *string_skip_whitespace(char *string); -static void string_trim_trailing_whitespace(char *string); -static char * -string_skip_whitespace(char *string) -{ - - while (*string && ((*string == ' ') || (*string == '\t'))) { - string++; - } - return (string); -} - -static void -string_trim_trailing_whitespace(char *string) -{ - char *end; +int _nfs4_acl_entry_from_text(acl_t aclp, char *entry); +int _text_could_be_nfs4_acl(const char *entry); - if (*string == '\0') - return; - - end = string + strlen(string) - 1; - - while (end != string) { - if ((*end == ' ') || (*end == '\t')) { - *end = '\0'; - end--; - } else { - return; - } - } - - return; -} - static acl_tag_t acl_string_to_tag(char *tag, char *qualifier) { @@ -118,6 +88,8 @@ uid_t id; int error; + assert(_acl_is_posix(aclp)); + /* Split into three ':' delimited fields. */ tag = strsep(&entry, ":"); if (tag == NULL) { @@ -194,6 +166,25 @@ return (0); } +static int +_text_is_nfs4_entry(const char *entry) +{ + int count = 0; + + assert(strlen(entry) > 0); + + while (*entry != '\0') { + if (*entry == ':' || *entry == '@') + count++; + entry++; + } + + if (count <= 2) + return (0); + + return (1); +} + /* * acl_from_text -- Convert a string into an ACL. * Postpone most validity checking until the end and call acl_valid() to do @@ -211,7 +202,7 @@ if (mybuf_p == NULL) return(NULL); - acl = acl_init(3); + acl = acl_init(3); /* XXX: WTF, 3? */ if (acl == NULL) { free(mybuf_p); return(NULL); @@ -226,7 +217,21 @@ /* Inner loop: delimit at ',' boundaries. */ while ((entry = strsep(¬comment, ","))) { - error = _posix1e_acl_entry_from_text(acl, entry); + + /* Skip empty lines. */ + if (strlen(string_skip_whitespace(entry)) == 0) + continue; + + if (_acl_is_unknown(acl) && _text_is_nfs4_entry(entry)) + _acl_must_be_nfs4(acl); + else + _acl_must_be_posix(acl); + + if (_acl_is_nfs4(acl)) + error = _nfs4_acl_entry_from_text(acl, entry); + else + error = _posix1e_acl_entry_from_text(acl, entry); + if (error) goto error_label; } ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_get.c#3 (text+ko) ==== @@ -49,6 +49,9 @@ #include #include #include +#include + +#include "acl_support.h" acl_t acl_get_file(const char *path_p, acl_type_t type) @@ -60,12 +63,17 @@ if (aclp == NULL) return (NULL); + type = _acl_type_unold(type); + error = __acl_get_file(path_p, type, &aclp->ats_acl); if (error) { acl_free(aclp); return (NULL); } + _acl_fixup_entry_pointers(aclp); + _acl_brand_from_type(aclp, type); + return (aclp); } @@ -79,18 +87,26 @@ if (aclp == NULL) return (NULL); + type = _acl_type_unold(type); + error = __acl_get_link(path_p, type, &aclp->ats_acl); if (error) { acl_free(aclp); return (NULL); } + _acl_fixup_entry_pointers(aclp); + _acl_brand_from_type(aclp, type); + return (aclp); } acl_t acl_get_fd(int fd) { + if (fpathconf(fd, _PC_EXTENDED_SECURITY_NP)) + return (acl_get_fd_np(fd, ACL_TYPE_NFS4)); + return (acl_get_fd_np(fd, ACL_TYPE_ACCESS)); } @@ -104,15 +120,23 @@ if (aclp == NULL) return (NULL); + type = _acl_type_unold(type); + error = ___acl_get_fd(fd, type, &aclp->ats_acl); if (error) { acl_free(aclp); return (NULL); } + _acl_fixup_entry_pointers(aclp); + _acl_brand_from_type(aclp, type); + return (aclp); } +/* + * XXX: Possible binary compatibility problem; acl_perm_t definition changed. + */ int acl_get_perm_np(acl_permset_t permset_d, acl_perm_t perm) { @@ -200,3 +224,40 @@ return (0); } + +int +acl_get_extended_np(acl_entry_t entry_d, acl_extended_t *extended_p) +{ + if (entry_d == NULL || extended_p == NULL) { + errno = EINVAL; + return (-1); + } + + if (!_entry_is_nfs4(entry_d)) { + errno = EINVAL; + return (-1); + } + + *extended_p = entry_d->ae_extended; + + return (0); +} + +int +acl_get_flags_np(acl_entry_t entry_d, acl_flag_t *flags_p) +{ + if (entry_d == NULL || flags_p == NULL) { + errno = EINVAL; + return (-1); + } + + if (!_entry_is_nfs4(entry_d)) { + errno = EINVAL; + return (-1); + } + + *flags_p = entry_d->ae_flags; + + return (0); +} + ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_init.c#2 (text+ko) ==== @@ -39,6 +39,8 @@ #include #include +#include "acl_support.h" + acl_t acl_init(int count) { @@ -57,6 +59,11 @@ if (acl != NULL) bzero(acl, sizeof(struct acl_t_struct)); + acl->ats_acl.acl_brand = ACL_BRAND_UNKNOWN; + acl->ats_acl.acl_magic = ACL_MAGIC; + + _acl_fixup_entry_pointers(acl); + return (acl); } @@ -72,5 +79,7 @@ acl_new->ats_cur_entry = 0; } + _acl_fixup_entry_pointers(acl_new); + return (acl_new); } ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_perm.c#2 (text+ko) ==== @@ -39,6 +39,9 @@ * acl_add_perm() (23.4.1): add the permission contained in perm to the * permission set permset_d */ +/* + * XXX: Possible binary compatibility problem; acl_perm_t definition changed. + */ int acl_add_perm(acl_permset_t permset_d, acl_perm_t perm) { @@ -79,6 +82,9 @@ * acl_delete_perm() (23.4.10): remove the permission in perm from the * permission set permset_d */ +/* + * XXX: Possible binary compatibility problem; acl_perm_t definition changed. + */ int acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm) { ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_set.c#3 (text+ko) ==== @@ -40,6 +40,7 @@ #include #include #include +#include #include "acl_support.h" @@ -58,6 +59,15 @@ errno = EINVAL; return (-1); } + + /* This is for old binaries using new libc. */ + type = _acl_type_unold(type); + + if (_acl_type_not_valid_for_acl(acl, type)) { + errno = EINVAL; + return (-1); + } + if (_posix1e_acl(acl, type)) { error = _posix1e_acl_sort(acl); if (error) { @@ -80,6 +90,14 @@ errno = EINVAL; return (-1); } + + type = _acl_type_unold(type); + + if (_acl_type_not_valid_for_acl(acl, type)) { + errno = EINVAL; + return (-1); + } + if (_posix1e_acl(acl, type)) { error = _posix1e_acl_sort(acl); if (error) { @@ -96,6 +114,9 @@ int acl_set_fd(int fd, acl_t acl) { + if (fpathconf(fd, _PC_EXTENDED_SECURITY_NP)) + return (acl_set_fd_np(fd, acl, ACL_TYPE_NFS4)); + return (acl_set_fd_np(fd, acl, ACL_TYPE_ACCESS)); } @@ -104,6 +125,18 @@ { int error; + if (acl == NULL) { + errno = EINVAL; + return (-1); + } + + type = _acl_type_unold(type); + + if (_acl_type_not_valid_for_acl(acl, type)) { + errno = EINVAL; + return (-1); + } + if (_posix1e_acl(acl, type)) { error = _posix1e_acl_sort(acl); if (error) { @@ -130,6 +163,19 @@ return (-1); } + if ((*permset_d & ACL_POSIX1E_BITS) != *permset_d) { + + if ((*permset_d & ACL_NFS4_PERM_BITS) != *permset_d) { + errno = EINVAL; + return (-1); + } + + if (!_entry_must_be_nfs4(entry_d)) { + errno = EINVAL; + return (-1); + } + } + entry_d->ae_perm = *permset_d; return (0); @@ -173,6 +219,15 @@ return (-1); } + if ((tag_type == ACL_OTHER || tag_type == ACL_MASK) && + !_entry_must_be_posix(entry_d)) { + errno = EINVAL; + return (-1); + } else if (tag_type == ACL_EVERYONE && !_entry_must_be_nfs4(entry_d)) { + errno = EINVAL; + return (-1); + } + switch(tag_type) { case ACL_USER_OBJ: case ACL_USER: @@ -180,6 +235,7 @@ case ACL_GROUP: case ACL_MASK: case ACL_OTHER: + case ACL_EVERYONE: entry_d->ae_tag = tag_type; return (0); } @@ -187,3 +243,53 @@ errno = EINVAL; return (-1); } + +int +acl_set_extended_np(acl_entry_t entry_d, acl_extended_t extended) +{ + if (entry_d == NULL) { + errno = EINVAL; + return (-1); + } + + if (!_entry_must_be_nfs4(entry_d)) { + errno = EINVAL; + return (-1); + } + + switch (extended) { + case ACL_EXTENDED_ALLOW: + case ACL_EXTENDED_DENY: + case ACL_EXTENDED_AUDIT: + case ACL_EXTENDED_ALARM: + + entry_d->ae_extended = extended; + return (0); + } + + errno = EINVAL; + return (-1); +} + +int +acl_set_flags_np(acl_entry_t entry_d, acl_flag_t flags) +{ + if (entry_d == NULL) { + errno = EINVAL; + return (-1); + } + + if ((flags & ACL_FLAGS_BITS) != flags) { + errno = EINVAL; + return (-1); + } + + if (!_entry_must_be_nfs4(entry_d)) { + errno = EINVAL; + return (-1); + } + + entry_d->ae_flags = flags; + return (0); +} + ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_support.c#2 (text+ko) ==== @@ -40,6 +40,8 @@ #include #include #include +#include +#include #include "acl_support.h" @@ -49,6 +51,51 @@ #define ACL_STRING_PERM_NONE '-' /* + * Convert "old" type - ACL_TYPE_{ACCESS,DEFAULT}_OLD - into its "new" + * counterpart. It's neccessary for the old (pre-NFS4 ACLs) binaries + * to work with new libc and kernel. Fixing "type" for old binaries with + * old libc and new kernel is being done by kern/vfs_acl.c:type_unold(). + */ +int +_acl_type_unold(acl_type_t type) +{ + if (type == ACL_TYPE_ACCESS_OLD) + return (ACL_TYPE_ACCESS); + + if (type == ACL_TYPE_DEFAULT_OLD) + return (ACL_TYPE_DEFAULT); + + return (type); +} + +/* + * Return 0, if both ACLs are identical. + */ +int +_acl_differs(const acl_t a, const acl_t b) +{ + int i; + struct acl_entry *entrya, *entryb; + + if (a->ats_acl.acl_cnt != b->ats_acl.acl_cnt) + return (1); + + for (i = 0; i < b->ats_acl.acl_cnt; i++) { + entrya = &(a->ats_acl.acl_entry[i]); + entryb = &(b->ats_acl.acl_entry[i]); + + if (entrya->ae_tag != entryb->ae_tag || + entrya->ae_id != entryb->ae_id || + entrya->ae_perm != entryb->ae_perm || + entrya->ae_extended != entryb->ae_extended || + entrya->ae_flags != entryb->ae_flags) + return (1); + } + + return (0); +} + +/* * _posix1e_acl_entry_compare -- compare two acl_entry structures to * determine the order they should appear in. Used by _posix1e_acl_sort to * sort ACL entries into the kernel-desired order -- i.e., the order useful @@ -59,6 +106,9 @@ static int _posix1e_acl_entry_compare(struct acl_entry *a, struct acl_entry *b) { + assert(_entry_is_posix(a)); + assert(_entry_is_posix(b)); + /* * First, sort between tags -- conveniently defined in the correct * order for verification. @@ -101,6 +151,9 @@ acl_int = &acl->ats_acl; + /* XXX: */ + assert(_entry_is_posix(&(acl->ats_acl.acl_entry[3]))); + qsort(&acl_int->acl_entry[0], acl_int->acl_cnt, sizeof(struct acl_entry), (compare) _posix1e_acl_entry_compare); @@ -115,6 +168,8 @@ int _posix1e_acl(acl_t acl, acl_type_t type) { + if (!_acl_is_posix(acl)) + return (0); return ((type == ACL_TYPE_ACCESS) || (type == ACL_TYPE_DEFAULT)); } @@ -382,3 +437,37 @@ return (0); } + +char * +string_skip_whitespace(char *string) +{ + + while (*string && ((*string == ' ') || (*string == '\t'))) { + string++; + } + return (string); +} + +void +string_trim_trailing_whitespace(char *string) +{ + char *end; + + if (*string == '\0') + return; + + end = string + strlen(string) - 1; + + while (end != string) { + if ((*end == ' ') || (*end == '\t')) { + *end = '\0'; + end--; + } else { + return; + } + } + + return; +} + + ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/acl_support.h#2 (text+ko) ==== >>> TRUNCATED FOR MAIL (1000 lines) <<< From trasz at FreeBSD.org Wed Jul 2 11:04:41 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Wed Jul 2 11:04:43 2008 Subject: PERFORCE change 144479 for review Message-ID: <200807021104.m62B4eqU013942@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144479 Change 144479 by trasz@trasz_traszkan on 2008/07/02 11:04:20 Add support for the new ACLs to getfacl(1). Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/bin/getfacl/getfacl.c#5 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/bin/getfacl/getfacl.c#5 (text+ko) ==== @@ -196,6 +196,9 @@ else more_than_one++; + if (pathconf(path, _PC_EXTENDED_SECURITY_NP)) + type = ACL_TYPE_NFS4; + if (!qflag) printf("# file: %s\n# owner: %s\n# group: %s\n", path, getuname(sb.st_uid), getgname(sb.st_gid)); @@ -210,7 +213,7 @@ return(-1); } errno = 0; - if (type != ACL_TYPE_ACCESS) + if (type != ACL_TYPE_ACCESS && type != ACL_TYPE_NFS4) return(0); acl = acl_from_stat(sb); if (!acl) { From trasz at FreeBSD.org Wed Jul 2 11:09:46 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Wed Jul 2 11:09:48 2008 Subject: PERFORCE change 144480 for review Message-ID: <200807021109.m62B9jHc014393@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144480 Change 144480 by trasz@trasz_traszkan on 2008/07/02 11:09:31 Add support for the new ACLs to ls(1). Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/bin/ls/print.c#2 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/bin/ls/print.c#2 (text+ko) ==== @@ -616,9 +616,8 @@ aclmode(char *buf, const FTSENT *p, int *haveacls) { char name[MAXPATHLEN + 1]; - int entries, ret; + int type = ACL_TYPE_ACCESS, ret; acl_t facl; - acl_entry_t ae; /* * Add a + after the standard rwxrwxrwx mode if the file has an @@ -638,29 +637,34 @@ *haveacls = 1; return; } - if ((ret = pathconf(name, _PC_ACL_EXTENDED)) <= 0) { - if (ret < 0 && errno != EINVAL) - warn("%s", name); - else - *haveacls = 0; + + *haveacls = 0; + + ret = pathconf(name, _PC_ACL_EXTENDED); + if (ret > 0) { + type = ACL_TYPE_ACCESS; + *haveacls = 1; + } else if (ret < 0 && errno != EINVAL) { + warn("%s", name); + return; + } + + ret = pathconf(name, _PC_EXTENDED_SECURITY_NP); + if (ret > 0) { + type = ACL_TYPE_NFS4; + *haveacls = 1; + } else if (ret < 0 && errno != EINVAL) { + warn("%s", name); return; } - *haveacls = 1; - if ((facl = acl_get_file(name, ACL_TYPE_ACCESS)) != NULL) { - if (acl_get_entry(facl, ACL_FIRST_ENTRY, &ae) == 1) { - entries = 1; - while (acl_get_entry(facl, ACL_NEXT_ENTRY, &ae) == 1) - if (++entries > 3) - break; - /* - * POSIX.1e requires that ACLs of type ACL_TYPE_ACCESS - * must have at least three entries (owner, group, - * and other). So anything with more than 3 ACLs looks - * interesting to us. - */ - if (entries > 3) - buf[10] = '+'; - } + + if (*haveacls == 0) + return; + + if ((facl = acl_get_file(name, type)) != NULL) { + if (!acl_is_trivial_np(facl)) + buf[10] = '+'; + acl_free(facl); } else warn("%s", name); From trasz at FreeBSD.org Wed Jul 2 11:16:54 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Wed Jul 2 11:16:56 2008 Subject: PERFORCE change 144481 for review Message-ID: <200807021116.m62BGra9015011@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144481 Change 144481 by trasz@trasz_traszkan on 2008/07/02 11:16:14 Add support for the new ACLs to setfacl(1). Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/bin/setfacl/merge.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/bin/setfacl/remove.c#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/bin/setfacl/setfacl.c#3 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/bin/setfacl/merge.c#2 (text+ko) ==== @@ -42,6 +42,8 @@ merge_user_group(acl_entry_t *entry, acl_entry_t *entry_new) { acl_permset_t permset; + acl_extended_t extended; + acl_flag_t flags; int have_entry; uid_t *id, *id_new; @@ -59,6 +61,18 @@ err(1, "acl_get_permset() failed"); if (acl_set_permset(*entry_new, permset) == -1) err(1, "acl_set_permset() failed"); + + if (acl_type == ACL_TYPE_NFS4) { + if (acl_get_extended_np(*entry, &extended)) + err(1, "acl_get_extended_np() failed"); + if (acl_set_extended_np(*entry_new, extended)) + err(1, "acl_set_extended_np() failed"); + if (acl_get_flags_np(*entry, &flags)) + err(1, "acl_get_flags_np() failed"); + if (acl_set_flags_np(*entry_new, flags)) + err(1, "acl_set_flags_np() failed"); + } + have_entry = 1; } acl_free(id); @@ -77,9 +91,11 @@ acl_permset_t permset; acl_t acl_new; acl_tag_t tag, tag_new; + acl_extended_t extended, extended_new; + acl_flag_t flags; int entry_id, entry_id_new, have_entry; - if (acl_type == ACL_TYPE_ACCESS) + if (acl_type == ACL_TYPE_ACCESS || acl_type == ACL_TYPE_NFS4) acl_new = acl_dup(prev_acl[ACCESS_ACL]); else acl_new = acl_dup(prev_acl[DEFAULT_ACL]); @@ -111,6 +127,19 @@ if (tag != tag_new) continue; + /* + * For NFS4, in addition to "tag" and "id" we also + * compare "extended". + */ + if (acl_type == ACL_TYPE_NFS4) { + if (acl_get_extended_np(entry, &extended)) + err(1, "acl_get_extended_np() failed"); + if (acl_get_extended_np(entry_new, &extended_new)) + err(1, "acl_get_extended_np() failed"); + if (extended != extended_new) + continue; + } + switch(tag) { case ACL_USER: case ACL_GROUP: @@ -123,10 +152,22 @@ case ACL_GROUP_OBJ: case ACL_OTHER: case ACL_MASK: + case ACL_EVERYONE: if (acl_get_permset(entry, &permset) == -1) err(1, "acl_get_permset() failed"); if (acl_set_permset(entry_new, permset) == -1) err(1, "acl_set_permset() failed"); + + if (acl_type == ACL_TYPE_NFS4) { + if (acl_get_extended_np(entry, &extended)) + err(1, "acl_get_extended_np() failed"); + if (acl_set_extended_np(entry_new, extended)) + err(1, "acl_set_extended_np() failed"); + if (acl_get_flags_np(entry, &flags)) + err(1, "acl_get_flags_np() failed"); + if (acl_set_flags_np(entry_new, flags)) + err(1, "acl_set_flags_np() failed"); + } have_entry = 1; break; default: @@ -138,16 +179,29 @@ /* if this entry has not been found, it must be new */ if (have_entry == 0) { - if (acl_create_entry(&acl_new, &entry_new) == -1) { - acl_free(acl_new); - return (-1); + + /* + * NFS4 ACL entries must be prepended to the ACL. + * Appending them at the end makes no sense, since + * in most cases they wouldn't even get evaluated. + */ + if (acl_type == ACL_TYPE_NFS4) { + if (acl_create_entry_at_position_np(&acl_new, &entry_new, 0) == -1) { + acl_free(acl_new); + return (-1); + } + } else { + if (acl_create_entry(&acl_new, &entry_new) == -1) { + acl_free(acl_new); + return (-1); + } } if (acl_copy_entry(entry_new, entry) == -1) err(1, "acl_copy_entry() failed"); } } - if (acl_type == ACL_TYPE_ACCESS) { + if (acl_type == ACL_TYPE_ACCESS || acl_type == ACL_TYPE_NFS4) { acl_free(prev_acl[ACCESS_ACL]); prev_acl[ACCESS_ACL] = acl_new; } else { ==== //depot/projects/soc2008/trasz_nfs4acl/bin/setfacl/remove.c#2 (text+ko) ==== @@ -50,7 +50,7 @@ carried_error = 0; - if (acl_type == ACL_TYPE_ACCESS) + if (acl_type == ACL_TYPE_ACCESS || acl_type == ACL_TYPE_NFS4) acl_new = acl_dup(prev_acl[ACCESS_ACL]); else acl_new = acl_dup(prev_acl[DEFAULT_ACL]); @@ -73,7 +73,7 @@ } } - if (acl_type == ACL_TYPE_ACCESS) { + if (acl_type == ACL_TYPE_ACCESS || acl_type == ACL_TYPE_NFS4) { acl_free(prev_acl[ACCESS_ACL]); prev_acl[ACCESS_ACL] = acl_new; } else { @@ -113,64 +113,17 @@ remove_ext(acl_t *prev_acl) { acl_t acl_new, acl_old; - acl_entry_t entry, entry_new; - acl_permset_t perm; - acl_tag_t tag; - int entry_id, have_mask_entry; - if (acl_type == ACL_TYPE_ACCESS) - acl_old = acl_dup(prev_acl[ACCESS_ACL]); + if (acl_type == ACL_TYPE_ACCESS || acl_type == ACL_TYPE_NFS4) + acl_old = prev_acl[ACCESS_ACL]; else - acl_old = acl_dup(prev_acl[DEFAULT_ACL]); - if (acl_old == NULL) - err(1, "acl_dup() failed"); + acl_old = prev_acl[DEFAULT_ACL]; - have_mask_entry = 0; - acl_new = acl_init(ACL_MAX_ENTRIES); + acl_new = acl_strip_np(acl_old, !n_flag); if (acl_new == NULL) - err(1, "acl_init() failed"); - tag = ACL_UNDEFINED_TAG; + err(1, "acl_strip_np() failed"); - /* only save the default user/group/other entries */ - entry_id = ACL_FIRST_ENTRY; - while (acl_get_entry(acl_old, entry_id, &entry) == 1) { - entry_id = ACL_NEXT_ENTRY; - - if (acl_get_tag_type(entry, &tag) == -1) - err(1, "acl_get_tag_type() failed"); - - switch(tag) { - case ACL_USER_OBJ: - case ACL_GROUP_OBJ: - case ACL_OTHER: - if (acl_get_tag_type(entry, &tag) == -1) - err(1, "acl_get_tag_type() failed"); - if (acl_get_permset(entry, &perm) == -1) - err(1, "acl_get_permset() failed"); - if (acl_create_entry(&acl_new, &entry_new) == -1) - err(1, "acl_create_entry() failed"); - if (acl_set_tag_type(entry_new, tag) == -1) - err(1, "acl_set_tag_type() failed"); - if (acl_set_permset(entry_new, perm) == -1) - err(1, "acl_get_permset() failed"); - if (acl_copy_entry(entry_new, entry) == -1) - err(1, "acl_copy_entry() failed"); - break; - case ACL_MASK: - have_mask_entry = 1; - break; - default: - break; - } - } - if (have_mask_entry && n_flag == 0) { - if (acl_calc_mask(&acl_new) == -1) - err(1, "acl_calc_mask() failed"); - } else { - have_mask = 1; - } - - if (acl_type == ACL_TYPE_ACCESS) { + if (acl_type == ACL_TYPE_ACCESS || acl_type == ACL_TYPE_NFS4) { acl_free(prev_acl[ACCESS_ACL]); prev_acl[ACCESS_ACL] = acl_new; } else { ==== //depot/projects/soc2008/trasz_nfs4acl/bin/setfacl/setfacl.c#3 (text+ko) ==== @@ -64,20 +64,26 @@ { acl_t *acl; struct stat sb; + int type; if (stat(filename, &sb) == -1) { warn("stat() of %s failed", filename); return (NULL); } + if (pathconf(filename, _PC_EXTENDED_SECURITY_NP)) + type = ACL_TYPE_NFS4; + else + type = ACL_TYPE_ACCESS; + acl = zmalloc(sizeof(acl_t) * 2); if (h_flag) - acl[ACCESS_ACL] = acl_get_link_np(filename, ACL_TYPE_ACCESS); + acl[ACCESS_ACL] = acl_get_link_np(filename, type); else - acl[ACCESS_ACL] = acl_get_file(filename, ACL_TYPE_ACCESS); + acl[ACCESS_ACL] = acl_get_file(filename, type); if (acl[ACCESS_ACL] == NULL) err(1, "acl_get_file() failed"); - if (S_ISDIR(sb.st_mode)) { + if (S_ISDIR(sb.st_mode) && type != ACL_TYPE_NFS4) { if (h_flag) acl[DEFAULT_ACL] = acl_get_link_np(filename, ACL_TYPE_DEFAULT); @@ -210,6 +216,11 @@ local_error = 0; + if (acl_type != ACL_TYPE_DEFAULT && pathconf(file->filename, _PC_EXTENDED_SECURITY_NP)) + acl_type = ACL_TYPE_NFS4; + else + acl_type = ACL_TYPE_ACCESS; + /* cycle through each option */ TAILQ_FOREACH(entry, &entrylist, next) { if (local_error) @@ -245,11 +256,14 @@ continue; } - if (acl_type == ACL_TYPE_ACCESS) + if (acl_type == ACL_TYPE_ACCESS || acl_type == ACL_TYPE_NFS4) final_acl = acl[ACCESS_ACL]; else final_acl = acl[DEFAULT_ACL]; + if (acl_type == ACL_TYPE_NFS4) + need_mask = 0; + if (need_mask && (set_acl_mask(&final_acl) == -1)) { warnx("failed to set ACL mask on %s", file->filename); carried_error++; From trasz at FreeBSD.org Wed Jul 2 12:12:50 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Wed Jul 2 12:12:52 2008 Subject: PERFORCE change 144482 for review Message-ID: <200807021212.m62CCnWW021201@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144482 Change 144482 by trasz@trasz_traszkan on 2008/07/02 12:12:47 Keep the list sorted. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/Makefile.inc#3 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libc/posix1e/Makefile.inc#3 (text+ko) ==== @@ -2,7 +2,8 @@ .PATH: ${.CURDIR}/posix1e -SRCS+= acl_calc_mask.c \ +SRCS+= acl_branding.c \ + acl_calc_mask.c \ acl_copy.c \ acl_delete.c \ acl_delete_entry.c \ @@ -15,12 +16,10 @@ acl_init.c \ acl_perm.c \ acl_set.c \ + acl_strip.c \ acl_support.c \ - acl_branding.c \ - acl_strip.c \ acl_to_text.c \ acl_to_text_nfs4.c \ - acl_strip.c \ acl_valid.c \ extattr.c \ mac.c \ From gabor at FreeBSD.org Wed Jul 2 14:30:08 2008 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Wed Jul 2 14:30:17 2008 Subject: PERFORCE change 144485 for review Message-ID: <200807021430.m62EU7xG044262@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144485 Change 144485 by gabor@gabor_server on 2008/07/02 14:29:53 - Fix handling of binary files - The fixed routine supports multibyte characters Affected files ... .. //depot/projects/soc2008/gabor_textproc/diff/diffreg.c#4 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/diff/diffreg.c#4 (text+ko) ==== @@ -86,6 +86,8 @@ #include #include #include +#include +#include #include "diff.h" #include "pathnames.h" @@ -1280,17 +1282,22 @@ static int asciifile(FILE *f) { - char buf[BUFSIZ]; - int i, cnt; + wint_t ch = L'\0'; + size_t i; if (aflag || f == NULL) return (1); rewind(f); - cnt = fread(buf, 1, sizeof(buf), f); - for (i = 0; i < cnt; i++) - if (!isprint(buf[i]) && !isspace(buf[i])) + for (i = 0; i <= BUFSIZ; i++) { + if ((ch = fgetwc(f)) == WEOF) { + if (errno == EILSEQ) + return (0); + break; + } + if (!iswspace(ch) && iswcntrl(ch)) return (0); + } return (1); } From gabor at FreeBSD.org Wed Jul 2 14:48:26 2008 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Wed Jul 2 14:48:31 2008 Subject: PERFORCE change 144486 for review Message-ID: <200807021448.m62EmPUk046059@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144486 Change 144486 by gabor@gabor_server on 2008/07/02 14:47:44 - Reset errno before calling fgetwc Affected files ... .. //depot/projects/soc2008/gabor_textproc/diff/diffreg.c#5 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/diff/diffreg.c#5 (text+ko) ==== @@ -1289,6 +1289,7 @@ return (1); rewind(f); + errno = 0; for (i = 0; i <= BUFSIZ; i++) { if ((ch = fgetwc(f)) == WEOF) { if (errno == EILSEQ) From gabor at FreeBSD.org Wed Jul 2 14:49:28 2008 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Wed Jul 2 14:49:32 2008 Subject: PERFORCE change 144487 for review Message-ID: <200807021449.m62EnRf4046127@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144487 Change 144487 by gabor@gabor_server on 2008/07/02 14:48:36 - Reset errno before calling fgetwc Affected files ... .. //depot/projects/soc2008/gabor_textproc/grep/file.c#13 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/grep/file.c#13 (text+ko) ==== @@ -66,6 +66,7 @@ if (fseek(f->f, 0L, SEEK_SET) == -1) return (0); + errno = 0; for (i = 0; i <= BUFSIZ; i++) { if ((ch = fgetwc(f->f)) == WEOF) { if (errno == EILSEQ) From gabor at FreeBSD.org Wed Jul 2 14:53:32 2008 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Wed Jul 2 14:53:38 2008 Subject: PERFORCE change 144488 for review Message-ID: <200807021453.m62ErVFN046506@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144488 Change 144488 by gabor@gabor_server on 2008/07/02 14:52:50 - Remove false comment Affected files ... .. //depot/projects/soc2008/gabor_textproc/diff/diff.c#5 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/diff/diff.c#5 (text+ko) ==== @@ -76,7 +76,6 @@ /* XXX: UNIMPLEMENTED { "ignore-blank-lines", no_argument, NULL, 'B' }, */ { "ignore-space-change", no_argument, NULL, 'b' }, -/* XXX: -c is incompatible with GNU version */ { "context", optional_argument, NULL, 'C' }, { "ifdef", required_argument, NULL, 'D' }, { "minimal", no_argument, NULL, 'd' }, @@ -100,7 +99,6 @@ { "report-identical-files", no_argument, NULL, 's' }, { "initial-tab", no_argument, NULL, 'T' }, { "expand-tabs", no_argument, NULL, 't' }, -/* XXX: -u is incompatible with GNU version */ { "unified", optional_argument, NULL, 'U' }, { "version", no_argument, NULL, 'v' }, /* XXX: UNIMPLEMENTED From trasz at FreeBSD.org Wed Jul 2 14:53:32 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Wed Jul 2 14:53:38 2008 Subject: PERFORCE change 144489 for review Message-ID: <200807021453.m62ErV0t046511@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144489 Change 144489 by trasz@trasz_traszkan on 2008/07/02 14:53:26 Clarify comments. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#2 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#2 (text+ko) ==== @@ -265,7 +265,7 @@ aclp->acl_magic = ACL_MAGIC; /* - * NFSv4 Minor Version 1 + * NFSv4 Minor Version 1, draft-ietf-nfsv4-minorversion1-03.txt * * 3.16.6.3. Applying a Mode to an Existing ACL */ @@ -605,7 +605,7 @@ const struct acl_entry *entry; /* - * NFSv4 Minor Version 1 + * NFSv4 Minor Version 1, draft-ietf-nfsv4-minorversion1-03.txt * * 3.16.6.1. Recomputing mode upon SETATTR of ACL */ @@ -740,7 +740,7 @@ KASSERT(child_aclp->acl_cnt == 0, "child_aclp->acl_cnt == 0"); /* - * NFSv4 Minor Version 1 + * NFSv4 Minor Version 1, draft-ietf-nfsv4-minorversion1-03.txt * * 3.16.6.2. Applying the mode given to CREATE or OPEN * to an inherited ACL From gabor at FreeBSD.org Wed Jul 2 14:59:38 2008 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Wed Jul 2 14:59:40 2008 Subject: PERFORCE change 144490 for review Message-ID: <200807021459.m62ExbNZ047040@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144490 Change 144490 by gabor@gabor_server on 2008/07/02 14:59:18 - -Add --help Affected files ... .. //depot/projects/soc2008/gabor_textproc/diff/diff.c#6 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/diff/diff.c#6 (text+ko) ==== @@ -53,6 +53,10 @@ struct excludes *excludes_list; regex_t ignore_re; +enum { + HELP_OPT = CHAR_MAX + 1 +}; + #define OPTIONS "0123456789abC:cdD:efhI:iL:lnNPpqrS:sTtU:uvwX:x:" static struct option longopts[] = { /* XXX: UNIMPLEMENTED @@ -70,8 +74,8 @@ { "from-file", required_argument, NULL, OPT_FFILE }, { "to-file", required_argument, NULL, OPT_TOFILE }, { "horizon-lines", required_argument, NULL, OPT_HLINES }, - { "speed-large-files", no_argument, NULL, OPT_LFILES }, - { "help", no_argument, NULL, OPT_HELP }, */ + { "speed-large-files", no_argument, NULL, OPT_LFILES }, */ + { "help", no_argument, NULL, HELP_OPT }, { "text", no_argument, NULL, 'a' }, /* XXX: UNIMPLEMENTED { "ignore-blank-lines", no_argument, NULL, 'B' }, */ @@ -243,6 +247,7 @@ case 'x': push_excludes(optarg); break; + case HELP_OPT: default: usage(); break; From gabor at FreeBSD.org Wed Jul 2 15:10:49 2008 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Wed Jul 2 15:10:51 2008 Subject: PERFORCE change 144491 for review Message-ID: <200807021510.m62FAn3S049049@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144491 Change 144491 by gabor@gabor_server on 2008/07/02 15:10:37 - Add --normal Affected files ... .. //depot/projects/soc2008/gabor_textproc/diff/diff.c#7 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/diff/diff.c#7 (text+ko) ==== @@ -54,7 +54,8 @@ regex_t ignore_re; enum { - HELP_OPT = CHAR_MAX + 1 + HELP_OPT = CHAR_MAX + 1, + NORMAL_OPT }; #define OPTIONS "0123456789abC:cdD:efhI:iL:lnNPpqrS:sTtU:uvwX:x:" @@ -62,8 +63,9 @@ /* XXX: UNIMPLEMENTED { "ignore-file-name-case", no_argument, NULL, OPT_IGN_FN_CASE }, { "no-ignore-file-name-case", no_argument, NULL, OPT_NIGN_FN_CASE }, - { "strip-trailing-cr", no_argument, NULL, OPT_STRIPCR }, - { "normal", no_argument, NULL, OPT_NORMAL }, + { "strip-trailing-cr", no_argument, NULL, OPT_STRIPCR }, */ + { "normal", no_argument, NULL, NORMAL_OPT }, +/* XXX: UNIMPLEMENTED { "left-column", no_argument, NULL, OPT_LEFTC }, { "suppress-common-lines", no_argument, NULL, OT_SUPCL }, { "GTYPE-group-format", required_argument, NULL, OPT_GTYPE }, @@ -247,6 +249,9 @@ case 'x': push_excludes(optarg); break; + case NORMAL_OPT: + /* compatibility, this is the default */ + break; case HELP_OPT: default: usage(); From andenore at FreeBSD.org Wed Jul 2 17:41:57 2008 From: andenore at FreeBSD.org (Anders Nore) Date: Wed Jul 2 17:42:00 2008 Subject: PERFORCE change 144499 for review Message-ID: <200807021741.m62HfuWN074750@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144499 Change 144499 by andenore@andenore_laptop on 2008/07/02 17:41:54 A lot of small fixes and merging. I think everything works with what I've done so far. Affected files ... .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/CHANGES#5 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/Makefile#3 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/Makefile.inc#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/add/main.c#4 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/add/perform.c#4 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/add/pkg_add.1#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/convert/main.c#3 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/create/create.h#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/create/main.c#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/create/perform.c#4 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/create/pkg_create.1#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/delete/main.c#4 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/delete/perform.c#4 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/delete/pkg_delete.1#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/info/Makefile#5 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/info/info.h#2 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/info/main.c#6 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/info/perform.c#5 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/info/pkg_info.1#3 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/database.c#6 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/file.c#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/lib.h#7 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/match.c#5 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/plist.c#4 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/url.c#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/updating/main.c#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/updating/pkg_updating.1#2 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/version/main.c#5 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/version/pkg_version.1#2 integrate Differences ... ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/CHANGES#5 (text+ko) ==== @@ -4,6 +4,7 @@ Converter: - Added convert program that indexes information to PKG_DBCACHE_FILE + - Added some features to lookup keys and print them (or print whole db) Info: - Improved performance for -W option using the dbcache @@ -20,7 +21,7 @@ - Deindexes information according to the delete Lib: - - Changed methods in match.c to use cache if available + - Changed methods in match.c to use cache if available (matchallbyorigin, ispkginstalled) - Added global variable 'database' of type DB* (the database object) - Added database helper functions - Added function to cache a Packagelist (cache_plist()) ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/usr.sbin/pkg_install/Makefile,v 1.22 2008/04/09 15:08:31 flz Exp $ +# $FreeBSD: src/usr.sbin/pkg_install/Makefile,v 1.25 2008/06/16 09:15:27 flz Exp $ .include @@ -6,18 +6,15 @@ .include -CP= /bin/cp -RM= /bin/rm -TAR= /usr/bin/tar - -DATE!= date +%Y%m%d +DATE!= grep PKG_INSTALL_VERSION ${.CURDIR}/lib/lib.h | sed 's|.*[ ]||' distfile: clean @(cd ${.CURDIR}/..; \ - ${CP} -r pkg_install pkg_install-${DATE}; \ - ${TAR} -czf pkg_install/pkg_install-${DATE}.tar.gz \ + cp -r pkg_install pkg_install-${DATE}; \ + tar -czf pkg_install/pkg_install-${DATE}.tar.gz \ --exclude .#* --exclude *~ --exclude CVS \ - --exclude pkg_install-*.tar.gz pkg_install-${DATE}; \ - ${RM} -rf pkg_install-${DATE}) + --exclude .svn --exclude pkg_install-*.tar.gz \ + pkg_install-${DATE}; \ + rm -rf pkg_install-${DATE}) ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/Makefile.inc#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/usr.sbin/pkg_install/Makefile.inc,v 1.14 2006/03/17 18:54:42 ru Exp $ +# $FreeBSD: src/usr.sbin/pkg_install/Makefile.inc,v 1.16 2008/05/03 23:17:37 pav Exp $ .include @@ -11,4 +11,4 @@ .endif # Inherit BINDIR from one level up. -.include "../Makefile.inc" +#.include "../Makefile.inc" ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/add/main.c#4 (text+ko) ==== @@ -19,16 +19,16 @@ */ #include -__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/add/main.c,v 1.76 2008/02/26 14:35:01 kensmith Exp $"); +__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/add/main.c,v 1.78 2008/06/16 23:41:11 flz Exp $"); -#include #include #include +#include +#include + #include "lib.h" #include "add.h" -static char Options[] = "hviIRfFnrp:P:SMt:C:K"; - char *Prefix = NULL; Boolean PrefixRecursive = FALSE; char *Chroot = NULL; @@ -95,246 +95,257 @@ static void usage(void); +static char opts[] = "hviIRfFnrp:P:SMt:C:K"; +static struct option longopts[] = { + { "chroot", required_argument, NULL, 'C' }, + { "dry-run", no_argument, NULL, 'n' }, + { "force", no_argument, NULL, 'f' }, + { "help", no_argument, NULL, 'h' }, + { "keep", no_argument, NULL, 'K' }, + { "master", no_argument, NULL, 'M' }, + { "no-deps", no_argument, NULL, 'i' }, + { "no-record", no_argument, NULL, 'R' }, + { "no-script", no_argument, NULL, 'I' }, + { "prefix", required_argument, NULL, 'p' }, + { "remote", no_argument, NULL, 'r' }, + { "template", required_argument, NULL, 't' }, + { "slave", no_argument, NULL, 'S' }, + { "verbose", no_argument, NULL, 'v' }, + { NULL, 0, NULL, 0 } +}; + int main(int argc, char **argv) { - int ch, error; - char **start; - char *cp, *packagesite = NULL, *remotepkg = NULL, *ptr; - static char temppackageroot[MAXPATHLEN]; - static char pkgaddpath[MAXPATHLEN]; + int ch, error; + char **start; + char *cp, *packagesite = NULL, *remotepkg = NULL, *ptr; + static char temppackageroot[MAXPATHLEN]; + static char pkgaddpath[MAXPATHLEN]; + + if (*argv[0] != '/' && strchr(argv[0], '/') != NULL) + PkgAddCmd = realpath(argv[0], pkgaddpath); + else + PkgAddCmd = argv[0]; + + openDatabase(O_CREAT | O_RDWR); + atexit(closeDatabase); + + start = argv; + while ((ch = getopt_long(argc, argv, opts, longopts, NULL)) != -1) { + switch(ch) { + case 'v': + Verbose++; + break; + + case 'p': + Prefix = optarg; + PrefixRecursive = FALSE; + break; + + case 'P': + Prefix = optarg; + PrefixRecursive = TRUE; + break; + + case 'I': + NoInstall = TRUE; + break; + + case 'R': + NoRecord = TRUE; + break; + + case 'f': + Force = TRUE; + break; + + case 'F': + FailOnAlreadyInstalled = FALSE; + break; + + case 'K': + KeepPackage = TRUE; + break; + + case 'n': + Fake = TRUE; + break; + + case 'r': + Remote = TRUE; + break; + + case 't': + if (strlcpy(FirstPen, optarg, sizeof(FirstPen)) >= sizeof(FirstPen)) + errx(1, "-t Argument too long."); + break; + + case 'S': + AddMode = SLAVE; + break; + + case 'M': + AddMode = MASTER; + break; - if (*argv[0] != '/' && strchr(argv[0], '/') != NULL) - PkgAddCmd = realpath(argv[0], pkgaddpath); - else - PkgAddCmd = argv[0]; + case 'C': + Chroot = optarg; + break; - if(cacheExists()) { - printf("add.main(): cacheExists()\n"); - openDatabase(); - } + case 'i': + IgnoreDeps = TRUE; + break; - start = argv; - while ((ch = getopt(argc, argv, Options)) != -1) { - switch(ch) { - case 'v': - Verbose++; - break; - - case 'p': - Prefix = optarg; - PrefixRecursive = FALSE; - break; - - case 'P': - Prefix = optarg; - PrefixRecursive = TRUE; - break; - - case 'I': - NoInstall = TRUE; - break; - - case 'R': - NoRecord = TRUE; - break; - - case 'f': - Force = TRUE; - break; - - case 'F': - FailOnAlreadyInstalled = FALSE; - break; - - case 'K': - KeepPackage = TRUE; - break; - - case 'n': - Fake = TRUE; - break; - - case 'r': - Remote = TRUE; - break; - - case 't': - if (strlcpy(FirstPen, optarg, sizeof(FirstPen)) >= sizeof(FirstPen)) - errx(1, "-t Argument too long."); - break; - - case 'S': - AddMode = SLAVE; - break; - - case 'M': - AddMode = MASTER; - break; - - case 'C': - Chroot = optarg; - break; - case 'i': - IgnoreDeps = TRUE; - break; - - case 'h': - case '?': - default: - usage(); - break; - } + case 'h': + default: + usage(); + break; } - argc -= optind; - argv += optind; + } + argc -= optind; + argv += optind; - if (AddMode != SLAVE) { - pkgs = (char **)malloc((argc+1) * sizeof(char *)); - for (ch = 0; ch <= argc; pkgs[ch++] = NULL) ; + if (AddMode != SLAVE) { + pkgs = (char **)malloc((argc+1) * sizeof(char *)); + for (ch = 0; ch <= argc; pkgs[ch++] = NULL) ; - /* Get all the remaining package names, if any */ - for (ch = 0; *argv; ch++, argv++) { - char temp[MAXPATHLEN]; - if (Remote) { - if ((packagesite = getpackagesite()) == NULL) - errx(1, "package name too long"); - if (strlcpy(temppackageroot, packagesite, - sizeof(temppackageroot)) >= sizeof(temppackageroot)) - errx(1, "package name too long"); - if (strlcat(temppackageroot, *argv, sizeof(temppackageroot)) - >= sizeof(temppackageroot)) - errx(1, "package name too long"); - remotepkg = temppackageroot; - if (!((ptr = strrchr(remotepkg, '.')) && ptr[1] == 't' && - (ptr[2] == 'b' || ptr[2] == 'g') && ptr[3] == 'z' && - !ptr[4])) - if (strlcat(remotepkg, -#if defined(__FreeBSD_version) && __FreeBSD_version >= 500039 - ".tbz", -#else - ".tgz", -#endif - sizeof(temppackageroot)) >= sizeof(temppackageroot)) - errx(1, "package name too long"); + /* Get all the remaining package names, if any */ + for (ch = 0; *argv; ch++, argv++) { + char temp[MAXPATHLEN]; + if (Remote) { + if ((packagesite = getpackagesite()) == NULL) + errx(1, "package name too long"); + if (strlcpy(temppackageroot, packagesite, + sizeof(temppackageroot)) >= sizeof(temppackageroot)) + errx(1, "package name too long"); + if (strlcat(temppackageroot, *argv, sizeof(temppackageroot)) + >= sizeof(temppackageroot)) + errx(1, "package name too long"); + remotepkg = temppackageroot; + if (!((ptr = strrchr(remotepkg, '.')) && ptr[1] == 't' && + (ptr[2] == 'b' || ptr[2] == 'g') && ptr[3] == 'z' && + !ptr[4])) + if (strlcat(remotepkg, ".tbz", + sizeof(temppackageroot)) >= sizeof(temppackageroot)) + errx(1, "package name too long"); } - if (!strcmp(*argv, "-")) /* stdin? */ - pkgs[ch] = (char *)"-"; - else if (isURL(*argv)) { /* preserve URLs */ - if (strlcpy(temp, *argv, sizeof(temp)) >= sizeof(temp)) - errx(1, "package name too long"); - pkgs[ch] = strdup(temp); - } - else if ((Remote) && isURL(remotepkg)) { - if (strlcpy(temp, remotepkg, sizeof(temp)) >= sizeof(temp)) - errx(1, "package name too long"); - pkgs[ch] = strdup(temp); - } else { /* expand all pathnames to fullnames */ - if (fexists(*argv)) /* refers to a file directly */ - pkgs[ch] = strdup(realpath(*argv, temp)); - else { /* look for the file in the expected places */ - if (!(cp = fileFindByPath(NULL, *argv))) { - /* let pkg_do() fail later, so that error is reported */ - if (strlcpy(temp, *argv, sizeof(temp)) >= sizeof(temp)) - errx(1, "package name too long"); - pkgs[ch] = strdup(temp); - } else { - if (strlcpy(temp, cp, sizeof(temp)) >= sizeof(temp)) - errx(1, "package name too long"); - pkgs[ch] = strdup(temp); - } - } - } - if (packagesite != NULL) - packagesite[0] = '\0'; + if (!strcmp(*argv, "-")) /* stdin? */ + pkgs[ch] = (char *)"-"; + else if (isURL(*argv)) { /* preserve URLs */ + if (strlcpy(temp, *argv, sizeof(temp)) >= sizeof(temp)) + errx(1, "package name too long"); + pkgs[ch] = strdup(temp); + } + else if ((Remote) && isURL(remotepkg)) { + if (strlcpy(temp, remotepkg, sizeof(temp)) >= sizeof(temp)) + errx(1, "package name too long"); + pkgs[ch] = strdup(temp); + } else { /* expand all pathnames to fullnames */ + if (fexists(*argv)) /* refers to a file directly */ + pkgs[ch] = strdup(realpath(*argv, temp)); + else { /* look for the file in the expected places */ + if (!(cp = fileFindByPath(NULL, *argv))) { + /* let pkg_do() fail later, so that error is reported */ + if (strlcpy(temp, *argv, sizeof(temp)) >= sizeof(temp)) + errx(1, "package name too long"); + pkgs[ch] = strdup(temp); + } else { + if (strlcpy(temp, cp, sizeof(temp)) >= sizeof(temp)) + errx(1, "package name too long"); + pkgs[ch] = strdup(temp); + } } + } + if (packagesite != NULL) + packagesite[0] = '\0'; } - - /* If no packages, yelp */ - else if (!ch) { - warnx("missing package name(s)"); - usage(); - } - else if (ch > 1 && AddMode == MASTER) { - warnx("only one package name may be specified with master mode"); - usage(); - } - - /* Perform chroot if requested */ - if (Chroot != NULL) { - if (chroot(Chroot)) - errx(1, "chroot to %s failed", Chroot); - } - /* Make sure the sub-execs we invoke get found */ - setenv("PATH", - "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin", - 1); + } + /* If no packages, yelp */ + else if (!ch) { + warnx("missing package name(s)"); + usage(); + } + else if (ch > 1 && AddMode == MASTER) { + warnx("only one package name may be specified with master mode"); + usage(); + } + /* Perform chroot if requested */ + if (Chroot != NULL) { + if (chroot(Chroot)) + errx(1, "chroot to %s failed", Chroot); + } + /* Make sure the sub-execs we invoke get found */ + setenv("PATH", + "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin", + 1); - /* Set a reasonable umask */ - umask(022); + /* Set a reasonable umask */ + umask(022); - if ((error = pkg_perform(pkgs)) != 0) { - if (Verbose) - warnx("%d package addition(s) failed", error); - return error; - } - else - return 0; + if ((error = pkg_perform(pkgs)) != 0) { + if (Verbose) + warnx("%d package addition(s) failed", error); + return error; + } + else + return 0; } static char * getpackagesite(void) { - int reldate, i; - static char sitepath[MAXPATHLEN]; - struct utsname u; + int reldate, i; + static char sitepath[MAXPATHLEN]; + struct utsname u; + + if (getenv("PACKAGESITE")) { + if (strlcpy(sitepath, getenv("PACKAGESITE"), sizeof(sitepath)) + >= sizeof(sitepath)) + return NULL; + return sitepath; + } + + if (getenv("PACKAGEROOT")) { + if (strlcpy(sitepath, getenv("PACKAGEROOT"), sizeof(sitepath)) + >= sizeof(sitepath)) + return NULL; + } else { + if (strlcat(sitepath, "ftp://ftp.freebsd.org", sizeof(sitepath)) + >= sizeof(sitepath)) + return NULL; + } - if (getenv("PACKAGESITE")) { - if (strlcpy(sitepath, getenv("PACKAGESITE"), sizeof(sitepath)) - >= sizeof(sitepath)) - return NULL; - return sitepath; - } + if (strlcat(sitepath, "/pub/FreeBSD/ports/", sizeof(sitepath)) + >= sizeof(sitepath)) + return NULL; - if (getenv("PACKAGEROOT")) { - if (strlcpy(sitepath, getenv("PACKAGEROOT"), sizeof(sitepath)) - >= sizeof(sitepath)) - return NULL; - } else { - if (strlcat(sitepath, "ftp://ftp.freebsd.org", sizeof(sitepath)) - >= sizeof(sitepath)) - return NULL; - } + uname(&u); + if (strlcat(sitepath, u.machine, sizeof(sitepath)) >= sizeof(sitepath)) + return NULL; - if (strlcat(sitepath, "/pub/FreeBSD/ports/", sizeof(sitepath)) + reldate = getosreldate(); + for(i = 0; releases[i].directory != NULL; i++) { + if (reldate >= releases[i].lowver && reldate <= releases[i].hiver) { + if (strlcat(sitepath, releases[i].directory, sizeof(sitepath)) >= sizeof(sitepath)) - return NULL; - - uname(&u); - if (strlcat(sitepath, u.machine, sizeof(sitepath)) >= sizeof(sitepath)) return NULL; + break; + } + } - reldate = getosreldate(); - for(i = 0; releases[i].directory != NULL; i++) { - if (reldate >= releases[i].lowver && reldate <= releases[i].hiver) { - if (strlcat(sitepath, releases[i].directory, sizeof(sitepath)) - >= sizeof(sitepath)) - return NULL; - break; - } - } + if (strlcat(sitepath, "/Latest/", sizeof(sitepath)) >= sizeof(sitepath)) + return NULL; - if (strlcat(sitepath, "/Latest/", sizeof(sitepath)) >= sizeof(sitepath)) - return NULL; + return sitepath; - return sitepath; } static void usage() { - fprintf(stderr, "%s\n%s\n", + fprintf(stderr, "%s\n%s\n", "usage: pkg_add [-viInfFrRMSK] [-t template] [-p prefix] [-P prefix] [-C chrootdir]", " pkg-name [pkg-name ...]"); - exit(1); + exit(1); } ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/add/perform.c#4 (text+ko) ==== @@ -19,7 +19,7 @@ */ #include -__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/add/perform.c,v 1.83 2008/04/11 08:26:06 pav Exp $"); +__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/add/perform.c,v 1.86 2008/06/16 23:41:11 flz Exp $"); #include #include @@ -29,6 +29,7 @@ #include #include #include +#include static int pkg_do(char *); static int sanity_check(char *); @@ -38,18 +39,18 @@ int pkg_perform(char **pkgs) { - int i, err_cnt = 0; + int i, err_cnt = 0; - signal(SIGINT, cleanup); - signal(SIGHUP, cleanup); + signal(SIGINT, cleanup); + signal(SIGHUP, cleanup); - if (AddMode == SLAVE) - err_cnt = pkg_do(NULL); - else { - for (i = 0; pkgs[i]; i++) - err_cnt += pkg_do(pkgs[i]); - } - return err_cnt; + if (AddMode == SLAVE) + err_cnt = pkg_do(NULL); + else { + for (i = 0; pkgs[i]; i++) + err_cnt += pkg_do(pkgs[i]); + } + return err_cnt; } static Package Plist; @@ -63,678 +64,643 @@ static int pkg_do(char *pkg) { - char pkg_fullname[FILENAME_MAX]; - char playpen[FILENAME_MAX]; - char extract_contents[FILENAME_MAX]; - char *where_to, *extract; - FILE *cfile; - int code; - PackingList p; - struct stat sb; - int inPlace, conflictsfound, errcode; - /* support for separate pre/post install scripts */ - int new_m = 0; - char pre_script[FILENAME_MAX] = INSTALL_FNAME; - char post_script[FILENAME_MAX]; - char pre_arg[FILENAME_MAX], post_arg[FILENAME_MAX]; - char *conflict[2]; - char **matched; + char pkg_fullname[FILENAME_MAX]; + char playpen[FILENAME_MAX]; + char extract_contents[FILENAME_MAX]; + char *where_to, *extract; + FILE *cfile; + int code; + PackingList p; + struct stat sb; + int inPlace, conflictsfound, errcode; + /* support for separate pre/post install scripts */ + int new_m = 0; + char pre_script[FILENAME_MAX] = INSTALL_FNAME; + char post_script[FILENAME_MAX]; + char pre_arg[FILENAME_MAX], post_arg[FILENAME_MAX]; + char *conflict[2]; + char **matched; - conflictsfound = 0; - code = 0; - zapLogDir = 0; - LogDir[0] = '\0'; - strcpy(playpen, FirstPen); - inPlace = 0; + conflictsfound = 0; + code = 0; + zapLogDir = 0; + LogDir[0] = '\0'; + strcpy(playpen, FirstPen); + inPlace = 0; - /* Are we coming in for a second pass, everything already extracted? */ - if (!pkg) { - fgets(playpen, FILENAME_MAX, stdin); - playpen[strlen(playpen) - 1] = '\0'; /* pesky newline! */ - if (chdir(playpen) == FAIL) { - warnx("pkg_add in SLAVE mode can't chdir to %s", playpen); - return 1; - } - read_plist(&Plist, stdin); - where_to = playpen; + /* Are we coming in for a second pass, everything already extracted? */ + if (!pkg) { + fgets(playpen, FILENAME_MAX, stdin); + playpen[strlen(playpen) - 1] = '\0'; /* pesky newline! */ + if (chdir(playpen) == FAIL) { + warnx("pkg_add in SLAVE mode can't chdir to %s", playpen); + return 1; + } + read_plist(&Plist, stdin); + where_to = playpen; + } + /* Nope - do it now */ + else { + /* Is it an ftp://foo.bar.baz/file.t[bg]z specification? */ + if (isURL(pkg)) { + if (!(Home = fileGetURL(NULL, pkg, KeepPackage))) { + warnx("unable to fetch '%s' by URL", pkg); + return 1; + } + where_to = Home; + strcpy(pkg_fullname, pkg); + cfile = fopen(CONTENTS_FNAME, "r"); + if (!cfile) { + warnx( + "unable to open table of contents file '%s' - not a package?", + CONTENTS_FNAME); + goto bomb; + } + read_plist(&Plist, cfile); + fclose(cfile); } - /* Nope - do it now */ else { - /* Is it an ftp://foo.bar.baz/file.t[bg]z specification? */ - if (isURL(pkg)) { - if (!(Home = fileGetURL(NULL, pkg, KeepPackage))) { - warnx("unable to fetch '%s' by URL", pkg); - return 1; - } - where_to = Home; - strcpy(pkg_fullname, pkg); - cfile = fopen(CONTENTS_FNAME, "r"); - if (!cfile) { - warnx( - "unable to open table of contents file '%s' - not a package?", - CONTENTS_FNAME); - - goto bomb; - } - read_plist(&Plist, cfile); - fclose(cfile); + strcpy(pkg_fullname, pkg); /* + * Copy for sanity's sake, + * could remove pkg_fullname + */ + if (strcmp(pkg, "-")) { + if (stat(pkg_fullname, &sb) == FAIL) { + warnx("can't stat package file '%s'", pkg_fullname); + goto bomb; } - else { - strcpy(pkg_fullname, pkg); /* - * Copy for sanity's sake, - * could remove pkg_fullname - */ - if (strcmp(pkg, "-")) { - if (stat(pkg_fullname, &sb) == FAIL) { - warnx("can't stat package file '%s'", pkg_fullname); - goto bomb; - } - sprintf(extract_contents, "--fast-read %s", CONTENTS_FNAME); - extract = extract_contents; - } - else { - extract = NULL; - sb.st_size = 100000; /* Make up a plausible average size */ - } - - Home = make_playpen(playpen, sb.st_size * 4); - if (!Home) - errx(1, "unable to make playpen for %lld bytes", (long long)sb.st_size * 4); - - where_to = Home; - /* Since we can call ourselves recursively, keep notes on where we came from */ - if (!getenv("_TOP")) - setenv("_TOP", Home, 1); - - if (unpack(pkg_fullname, extract)) { - warnx( - "unable to extract table of contents file from '%s' - not a package?", + sprintf(extract_contents, "--fast-read %s", CONTENTS_FNAME); + extract = extract_contents; + } + else { + extract = NULL; + sb.st_size = 100000; /* Make up a plausible average size */ + } + Home = make_playpen(playpen, sb.st_size * 4); + if (!Home) + errx(1, "unable to make playpen for %lld bytes", (long long)sb.st_size * 4); + where_to = Home; + /* Since we can call ourselves recursively, keep notes on where we came from */ + if (!getenv("_TOP")) + setenv("_TOP", Home, 1); + if (unpack(pkg_fullname, extract)) { + warnx( + "unable to extract table of contents file from '%s' - not a package?", pkg_fullname); - goto bomb; - } - - cfile = fopen(CONTENTS_FNAME, "r"); - if (!cfile) { - warnx( - "unable to open table of contents file '%s' - not a package?", - CONTENTS_FNAME); - goto bomb; - } - read_plist(&Plist, cfile); - fclose(cfile); + goto bomb; + } + cfile = fopen(CONTENTS_FNAME, "r"); + if (!cfile) { + warnx( + "unable to open table of contents file '%s' - not a package?", + CONTENTS_FNAME); + goto bomb; + } + read_plist(&Plist, cfile); + fclose(cfile); - /* Extract directly rather than moving? Oh goodie! */ - if (find_plist_option(&Plist, "extract-in-place")) { - if (Verbose) - printf("Doing in-place extraction for %s\n", pkg_fullname); - - p = find_plist(&Plist, PLIST_CWD); - if (p) { - if (!isdir(p->name) && !Fake) { - if (Verbose) - printf("Desired prefix of %s does not exist, creating..\n", p->name); - vsystem("/bin/mkdir -p %s", p->name); - if (chdir(p->name) == -1) { - warn("unable to change directory to '%s'", p->name); - goto bomb; - } - } - where_to = p->name; - inPlace = 1; - } - else { - warnx( - "no prefix specified in '%s' - this is a bad package!", - pkg_fullname); - goto bomb; - } + /* Extract directly rather than moving? Oh goodie! */ + if (find_plist_option(&Plist, "extract-in-place")) { + if (Verbose) + printf("Doing in-place extraction for %s\n", pkg_fullname); + p = find_plist(&Plist, PLIST_CWD); + if (p) { + if (!isdir(p->name) && !Fake) { + if (Verbose) + printf("Desired prefix of %s does not exist, creating..\n", p->name); + vsystem("/bin/mkdir -p %s", p->name); + if (chdir(p->name) == -1) { + warn("unable to change directory to '%s'", p->name); + goto bomb; } + } + where_to = p->name; + inPlace = 1; + } + else { + warnx( + "no prefix specified in '%s' - this is a bad package!", + pkg_fullname); + goto bomb; + } + } - /* - * Apply a crude heuristic to see how much space the package will - * take up once it's unpacked. I've noticed that most packages - * compress an average of 75%, so multiply by 4 for good measure. - */ + /* + * Apply a crude heuristic to see how much space the package will + * take up once it's unpacked. I've noticed that most packages + * compress an average of 75%, so multiply by 4 for good measure. + */ - if (!extract && !inPlace && min_free(playpen) < sb.st_size * 4) { - warnx("projected size of %lld exceeds available free space.\n" - "Please set your PKG_TMPDIR variable to point to a location with more\n" - "free space and try again", (long long)sb.st_size * 4); - warnx("not extracting %s\ninto %s, sorry!", - pkg_fullname, where_to); - goto bomb; + if (!extract && !inPlace && min_free(playpen) < sb.st_size * 4) { + warnx("projected size of %lld exceeds available free space.\n" +"Please set your PKG_TMPDIR variable to point to a location with more\n" + "free space and try again", (long long)sb.st_size * 4); + warnx("not extracting %s\ninto %s, sorry!", + pkg_fullname, where_to); + goto bomb; } /* If this is a direct extract and we didn't want it, stop now */ - if (inPlace && Fake) - goto success; + if (inPlace && Fake) + goto success; - /* Finally unpack the whole mess. If extract is null we - already + did so so don't bother doing it again. */ - if (extract && unpack(pkg_fullname, NULL)) { - warnx("unable to extract '%s'!", pkg_fullname); - goto bomb; - } + /* Finally unpack the whole mess. If extract is null we + already + did so so don't bother doing it again. */ + if (extract && unpack(pkg_fullname, NULL)) { + warnx("unable to extract '%s'!", pkg_fullname); + goto bomb; + } } - /* Check for sanity and dependencies */ - if (sanity_check(pkg)) - goto bomb; - - /* If we're running in MASTER mode, just output the plist and return */ - if (AddMode == MASTER) { - printf("%s\n", where_playpen()); - write_plist(&Plist, stdout); - return 0; - } + /* Check for sanity and dependencies */ + if (sanity_check(pkg)) + goto bomb; + + /* If we're running in MASTER mode, just output the plist and return */ + if (AddMode == MASTER) { + printf("%s\n", where_playpen()); + write_plist(&Plist, stdout); + return 0; } + } /* * If we have a prefix, delete the first one we see and add this * one in place of it. */ - if (Prefix) { - delete_plist(&Plist, FALSE, PLIST_CWD, NULL); - add_plist_top(&Plist, PLIST_CWD, Prefix); - } + if (Prefix) { + delete_plist(&Plist, FALSE, PLIST_CWD, NULL); + add_plist_top(&Plist, PLIST_CWD, Prefix); + } - setenv(PKG_PREFIX_VNAME, (p = find_plist(&Plist, PLIST_CWD)) ? p->name : ".", 1); - /* Protect against old packages with bogus @name and origin fields */ - if (Plist.name == NULL) - Plist.name = "anonymous"; - - if (Plist.origin == NULL) - Plist.origin = "anonymous/anonymous"; + setenv(PKG_PREFIX_VNAME, (p = find_plist(&Plist, PLIST_CWD)) ? p->name : ".", 1); + /* Protect against old packages with bogus @name and origin fields */ + if (Plist.name == NULL) + Plist.name = "anonymous"; + if (Plist.origin == NULL) + Plist.origin = "anonymous/anonymous"; - /* - * See if we're already registered either with the same name (the same - * version) or some other version with the same origin. - */ - if ((isinstalledpkg(Plist.name) > 0 || + /* + * See if we're already registered either with the same name (the same + * version) or some other version with the same origin. + */ + if ((isinstalledpkg(Plist.name) > 0 || matchbyorigin(Plist.origin, NULL) != NULL) && !Force) { - warnx("package '%s' or its older version already installed%s", - Plist.name, FailOnAlreadyInstalled ? "" : " (ignored)"); - code = FailOnAlreadyInstalled != FALSE; - goto success; /* close enough for government work */ >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Wed Jul 2 19:06:48 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Jul 2 19:06:52 2008 Subject: PERFORCE change 144502 for review Message-ID: <200807021906.m62J6l3H083820@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144502 Change 144502 by hselasky@hselasky_laptop001 on 2008/07/02 19:05:48 Renaming symbols and fixing the device ID tables is complete for the new USB serial module. Some minor stuff has been fixed in "ulpt" driver. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#8 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uark2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ubsa2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ubser2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uchcom2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ucycom2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ufoma2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uftdi2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ugensa2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uipaq2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/ulpt2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/umct2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/umodem2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/umoscom2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uplcom2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/usb2_serial.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uvisor2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uvscom2.c#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#8 (text+ko) ==== @@ -1511,10 +1511,18 @@ usb2_fifo_opened(struct usb2_fifo *f) { uint8_t temp; + uint8_t do_unlock; - mtx_lock(f->priv_mtx); + if (mtx_owned(f->priv_mtx)) { + do_unlock = 0; + } else { + do_unlock = 1; + mtx_lock(f->priv_mtx); + } temp = f->curr_file ? 1 : 0; - mtx_unlock(f->priv_mtx); + if (do_unlock) { + mtx_unlock(f->priv_mtx); + } return (temp); } ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.h#4 (text+ko) ==== @@ -94,6 +94,7 @@ uint8_t iface_index; /* set to the interface we belong to */ uint8_t fifo_index; /* set to the FIFO index in "struct * usb2_device" */ + uint8_t fifo_zlp; /* zero length packet count */ uint8_t refcount; #define USB_FIFO_REF_MAX 0xFF }; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#4 (text+ko) ==== @@ -97,7 +97,7 @@ static int ugen_debug = 0; SYSCTL_NODE(_hw_usb2, OID_AUTO, ugen, CTLFLAG_RW, 0, "USB generic"); -SYSCTL_INT(_hw_usb2_ugen, OID_AUTO, ugen, CTLFLAG_RW, &ugen_debug, +SYSCTL_INT(_hw_usb2_ugen, OID_AUTO, debug, CTLFLAG_RW, &ugen_debug, 0, "Debug level"); #endif @@ -164,6 +164,7 @@ } f->timeout = USB_NO_TIMEOUT; f->flag_short = 0; + f->fifo_zlp = 0; mtx_unlock(f->priv_mtx); return (0); @@ -372,6 +373,21 @@ switch (USB_GET_STATE(xfer)) { case USB_ST_TRANSFERRED: + if (xfer->actlen == 0) { + if (f->fifo_zlp != 4) { + f->fifo_zlp++; + } else { + /* + * Throttle a little bit we have multiple ZLPs + * in a row! + */ + xfer->interval = 64; /* ms */ + } + } else { + /* clear throttle */ + xfer->interval = 0; + f->fifo_zlp = 0; + } usb2_fifo_put_data(f, xfer->frbuffers, 0, xfer->actlen, 1); @@ -390,6 +406,7 @@ default: /* Error */ if (xfer->error != USB_ERR_CANCELLED) { f->flag_stall = 1; + f->fifo_zlp = 0; usb2_transfer_start(f->xfer[1]); } break; ==== //depot/projects/usb/src/sys/dev/usb2/serial/uark2.c#2 (text+ko) ==== @@ -23,23 +23,24 @@ * be called from within the config thread function ! */ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include -#include -#include +#define USB_DEBUG_VAR usb2_debug -#include +#include +#include +#include +#include +#include +#include +#include -#include "usbdevs.h" +#include -#define DPRINTF(...) do { } while (0) - #define UARK_BUF_SIZE 1024 /* bytes */ #define UARK_N_TRANSFER 4 /* units */ @@ -64,11 +65,11 @@ #define UARK_IFACE_INDEX 0 struct uark_softc { - struct ucom_super_softc sc_super_ucom; - struct ucom_softc sc_ucom; + struct usb2_com_super_softc sc_super_ucom; + struct usb2_com_softc sc_ucom; - struct usbd_xfer *sc_xfer[UARK_N_TRANSFER]; - struct usbd_device *sc_udev; + struct usb2_xfer *sc_xfer[UARK_N_TRANSFER]; + struct usb2_device *sc_udev; uint8_t sc_flags; #define UARK_FLAG_BULK_READ_STALL 0x01 @@ -83,23 +84,23 @@ static device_attach_t uark_attach; static device_detach_t uark_detach; -static usbd_callback_t uark_bulk_write_callback; -static usbd_callback_t uark_bulk_write_clear_stall_callback; -static usbd_callback_t uark_bulk_read_callback; -static usbd_callback_t uark_bulk_read_clear_stall_callback; +static usb2_callback_t uark_bulk_write_callback; +static usb2_callback_t uark_bulk_write_clear_stall_callback; +static usb2_callback_t uark_bulk_read_callback; +static usb2_callback_t uark_bulk_read_clear_stall_callback; -static void uark_start_read(struct ucom_softc *ucom); -static void uark_stop_read(struct ucom_softc *ucom); -static void uark_start_write(struct ucom_softc *ucom); -static void uark_stop_write(struct ucom_softc *ucom); +static void uark_start_read(struct usb2_com_softc *ucom); +static void uark_stop_read(struct usb2_com_softc *ucom); +static void uark_start_write(struct usb2_com_softc *ucom); +static void uark_stop_write(struct usb2_com_softc *ucom); -static int uark_pre_param(struct ucom_softc *ucom, struct termios *t); -static void uark_cfg_param(struct ucom_softc *ucom, struct termios *t); -static void uark_cfg_get_status(struct ucom_softc *ucom, uint8_t *lsr, uint8_t *msr); -static void uark_cfg_set_break(struct ucom_softc *ucom, uint8_t onoff); +static int uark_pre_param(struct usb2_com_softc *ucom, struct termios *t); +static void uark_cfg_param(struct usb2_com_softc *ucom, struct termios *t); +static void uark_cfg_get_status(struct usb2_com_softc *ucom, uint8_t *lsr, uint8_t *msr); +static void uark_cfg_set_break(struct usb2_com_softc *ucom, uint8_t onoff); static void uark_cfg_write(struct uark_softc *sc, uint16_t index, uint16_t value); -static const struct usbd_config +static const struct usb2_config uark_xfer_config[UARK_N_TRANSFER] = { [0] = { @@ -124,7 +125,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, .mh.callback = &uark_bulk_write_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ @@ -135,7 +136,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, .mh.callback = &uark_bulk_read_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ @@ -143,15 +144,15 @@ }, }; -static const struct ucom_callback uark_callback = { - .ucom_cfg_get_status = &uark_cfg_get_status, - .ucom_cfg_set_break = &uark_cfg_set_break, - .ucom_cfg_param = &uark_cfg_param, - .ucom_pre_param = &uark_pre_param, - .ucom_start_read = &uark_start_read, - .ucom_stop_read = &uark_stop_read, - .ucom_start_write = &uark_start_write, - .ucom_stop_write = &uark_stop_write, +static const struct usb2_com_callback uark_callback = { + .usb2_com_cfg_get_status = &uark_cfg_get_status, + .usb2_com_cfg_set_break = &uark_cfg_set_break, + .usb2_com_cfg_param = &uark_cfg_param, + .usb2_com_pre_param = &uark_pre_param, + .usb2_com_start_read = &uark_start_read, + .usb2_com_stop_read = &uark_stop_read, + .usb2_com_start_write = &uark_start_write, + .usb2_com_stop_write = &uark_stop_write, }; static device_method_t uark_methods[] = { @@ -170,35 +171,35 @@ .size = sizeof(struct uark_softc), }; -DRIVER_MODULE(uark, uhub, uark_driver, uark_devclass, usbd_driver_load, 0); -MODULE_DEPEND(uark, usb, 1, 1, 1); +DRIVER_MODULE(uark, ushub, uark_driver, uark_devclass, NULL, 0); +MODULE_DEPEND(uark, usb2_core, 1, 1, 1); MODULE_DEPEND(uark, ucom, UCOM_MINVER, UCOM_PREFVER, UCOM_MAXVER); -static const struct usb_devno uark_devs[] = { - {USB_VENDOR_ARKMICRO, USB_PRODUCT_ARKMICRO_ARK3116}, +static const struct usb2_device_id uark_devs[] = { + {USB_VPI(USB_VENDOR_ARKMICRO, USB_PRODUCT_ARKMICRO_ARK3116, 0)}, }; -#define uark_lookup(v, p) usb_lookup(uark_devs, v, p) - static int uark_probe(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); + } + if (uaa->info.bConfigIndex != 0) { + return (ENXIO); } - if (uaa->iface) { - return (UMATCH_NONE); + if (uaa->info.bIfaceIndex != UARK_IFACE_INDEX) { + return (ENXIO); } - return (uark_lookup(uaa->vendor, uaa->product) ? - UMATCH_VENDOR_PRODUCT : UMATCH_NONE); + return (usb2_lookup_id_by_uaa(uark_devs, sizeof(uark_devs), uaa)); } static int uark_attach(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); struct uark_softc *sc = device_get_softc(dev); int32_t error; uint8_t iface_index; @@ -206,19 +207,12 @@ if (sc == NULL) { return (ENOMEM); } - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); sc->sc_udev = uaa->device; - /* Move the device into the configured state */ - error = usbd_set_config_index(uaa->device, UARK_CONFIG_INDEX, 1); - if (error) { - device_printf(dev, "failed to set configuration, err=%s\n", - usbd_errstr(error)); - goto detach; - } iface_index = UARK_IFACE_INDEX; - error = usbd_transfer_setup + error = usb2_transfer_setup (uaa->device, &iface_index, sc->sc_xfer, uark_xfer_config, UARK_N_TRANSFER, sc, &Giant); @@ -231,10 +225,10 @@ sc->sc_flags |= (UARK_FLAG_BULK_WRITE_STALL | UARK_FLAG_BULK_READ_STALL); - error = ucom_attach(&(sc->sc_super_ucom), &(sc->sc_ucom), 1, sc, + error = usb2_com_attach(&(sc->sc_super_ucom), &(sc->sc_ucom), 1, sc, &uark_callback, &Giant); if (error) { - DPRINTF(sc, 0, "ucom_attach failed\n"); + DPRINTF(0, "usb2_com_attach failed\n"); goto detach; } return (0); /* success */ @@ -249,37 +243,37 @@ { struct uark_softc *sc = device_get_softc(dev); - ucom_detach(&(sc->sc_super_ucom), &(sc->sc_ucom), 1); + usb2_com_detach(&(sc->sc_super_ucom), &(sc->sc_ucom), 1); - usbd_transfer_unsetup(sc->sc_xfer, UARK_N_TRANSFER); + usb2_transfer_unsetup(sc->sc_xfer, UARK_N_TRANSFER); return (0); } static void -uark_bulk_write_callback(struct usbd_xfer *xfer) +uark_bulk_write_callback(struct usb2_xfer *xfer) { struct uark_softc *sc = xfer->priv_sc; uint32_t actlen; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_SETUP: - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_SETUP: + case USB_ST_TRANSFERRED: if (sc->sc_flags & UARK_FLAG_BULK_WRITE_STALL) { - usbd_transfer_start(sc->sc_xfer[2]); + usb2_transfer_start(sc->sc_xfer[2]); return; } - if (ucom_get_data(&(sc->sc_ucom), xfer->frbuffers, 0, + if (usb2_com_get_data(&(sc->sc_ucom), xfer->frbuffers, 0, UARK_BUF_SIZE, &actlen)) { xfer->frlengths[0] = actlen; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); } return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { sc->sc_flags |= UARK_FLAG_BULK_WRITE_STALL; - usbd_transfer_start(sc->sc_xfer[2]); + usb2_transfer_start(sc->sc_xfer[2]); } return; @@ -287,42 +281,42 @@ } static void -uark_bulk_write_clear_stall_callback(struct usbd_xfer *xfer) +uark_bulk_write_clear_stall_callback(struct usb2_xfer *xfer) { struct uark_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer[0]; + struct usb2_xfer *xfer_other = sc->sc_xfer[0]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UARK_FLAG_BULK_WRITE_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } static void -uark_bulk_read_callback(struct usbd_xfer *xfer) +uark_bulk_read_callback(struct usb2_xfer *xfer) { struct uark_softc *sc = xfer->priv_sc; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: - ucom_put_data(&(sc->sc_ucom), xfer->frbuffers, 0, + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + usb2_com_put_data(&(sc->sc_ucom), xfer->frbuffers, 0, xfer->actlen); - case USBD_ST_SETUP: + case USB_ST_SETUP: if (sc->sc_flags & UARK_FLAG_BULK_READ_STALL) { - usbd_transfer_start(sc->sc_xfer[3]); + usb2_transfer_start(sc->sc_xfer[3]); } else { xfer->frlengths[0] = xfer->max_data_length; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); } return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { sc->sc_flags |= UARK_FLAG_BULK_READ_STALL; - usbd_transfer_start(sc->sc_xfer[3]); + usb2_transfer_start(sc->sc_xfer[3]); } return; @@ -330,59 +324,59 @@ } static void -uark_bulk_read_clear_stall_callback(struct usbd_xfer *xfer) +uark_bulk_read_clear_stall_callback(struct usb2_xfer *xfer) { struct uark_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer[1]; + struct usb2_xfer *xfer_other = sc->sc_xfer[1]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UARK_FLAG_BULK_READ_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } static void -uark_start_read(struct ucom_softc *ucom) +uark_start_read(struct usb2_com_softc *ucom) { struct uark_softc *sc = ucom->sc_parent; - usbd_transfer_start(sc->sc_xfer[1]); + usb2_transfer_start(sc->sc_xfer[1]); return; } static void -uark_stop_read(struct ucom_softc *ucom) +uark_stop_read(struct usb2_com_softc *ucom) { struct uark_softc *sc = ucom->sc_parent; - usbd_transfer_stop(sc->sc_xfer[3]); - usbd_transfer_stop(sc->sc_xfer[1]); + usb2_transfer_stop(sc->sc_xfer[3]); + usb2_transfer_stop(sc->sc_xfer[1]); return; } static void -uark_start_write(struct ucom_softc *ucom) +uark_start_write(struct usb2_com_softc *ucom) { struct uark_softc *sc = ucom->sc_parent; - usbd_transfer_start(sc->sc_xfer[0]); + usb2_transfer_start(sc->sc_xfer[0]); return; } static void -uark_stop_write(struct ucom_softc *ucom) +uark_stop_write(struct usb2_com_softc *ucom) { struct uark_softc *sc = ucom->sc_parent; - usbd_transfer_stop(sc->sc_xfer[2]); - usbd_transfer_stop(sc->sc_xfer[0]); + usb2_transfer_stop(sc->sc_xfer[2]); + usb2_transfer_stop(sc->sc_xfer[0]); return; } static int -uark_pre_param(struct ucom_softc *ucom, struct termios *t) +uark_pre_param(struct usb2_com_softc *ucom, struct termios *t) { if ((t->c_ospeed < 300) || (t->c_ospeed > 115200)) return (EINVAL); @@ -390,7 +384,7 @@ } static void -uark_cfg_param(struct ucom_softc *ucom, struct termios *t) +uark_cfg_param(struct usb2_com_softc *ucom, struct termios *t) { struct uark_softc *sc = ucom->sc_parent; uint32_t speed = t->c_ospeed; @@ -441,7 +435,7 @@ } static void -uark_cfg_get_status(struct ucom_softc *ucom, uint8_t *lsr, uint8_t *msr) +uark_cfg_get_status(struct usb2_com_softc *ucom, uint8_t *lsr, uint8_t *msr) { struct uark_softc *sc = ucom->sc_parent; @@ -451,11 +445,11 @@ } static void -uark_cfg_set_break(struct ucom_softc *ucom, uint8_t onoff) +uark_cfg_set_break(struct usb2_com_softc *ucom, uint8_t onoff) { struct uark_softc *sc = ucom->sc_parent; - DPRINTF(sc, 0, "onoff=%d\n", onoff); + DPRINTF(0, "onoff=%d\n", onoff); uark_cfg_write(sc, 4, onoff ? 0x01 : 0x00); return; @@ -464,10 +458,10 @@ static void uark_cfg_write(struct uark_softc *sc, uint16_t index, uint16_t value) { - usb_device_request_t req; - usbd_status_t err; + struct usb2_device_request req; + usb2_error_t err; - if (ucom_cfg_is_gone(&(sc->sc_ucom))) { + if (usb2_com_cfg_is_gone(&(sc->sc_ucom))) { return; } req.bmRequestType = UARK_WRITE; @@ -476,12 +470,12 @@ USETW(req.wIndex, index); USETW(req.wLength, 0); - err = usbd_do_request_flags + err = usb2_do_request_flags (sc->sc_udev, &Giant, &req, NULL, 0, NULL, 1000); if (err) { - DPRINTF(sc, -1, "device request failed, err=%s " - "(ignored)\n", usbd_errstr(err)); + DPRINTF(-1, "device request failed, err=%s " + "(ignored)\n", usb2_errstr(err)); } return; } ==== //depot/projects/usb/src/sys/dev/usb2/serial/ubsa2.c#2 (text+ko) ==== @@ -62,34 +62,31 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include -#include -#include -#include -#include +#define USB_DEBUG_VAR ubsa_debug -#include +#include +#include +#include +#include +#include +#include +#include +#include -#include "usbdevs.h" +#include #ifdef USB_DEBUG -#define DPRINTF(n,fmt,...) \ - do { if (ubsa_debug > (n)) { \ - printf("%s: " fmt, __FUNCTION__,## __VA_ARGS__); } } while (0) - static int ubsa_debug = 0; -SYSCTL_NODE(_hw_usb, OID_AUTO, ubsa, CTLFLAG_RW, 0, "USB ubsa"); -SYSCTL_INT(_hw_usb_ubsa, OID_AUTO, debug, CTLFLAG_RW, +SYSCTL_NODE(_hw_usb2, OID_AUTO, ubsa, CTLFLAG_RW, 0, "USB ubsa"); +SYSCTL_INT(_hw_usb2_ubsa, OID_AUTO, debug, CTLFLAG_RW, &ubsa_debug, 0, "ubsa debug level"); -#else -#define DPRINTF(...) do { } while (0) #endif #define UBSA_N_TRANSFER 6 /* units */ @@ -146,11 +143,11 @@ #define UBSA_MSR_DCTS 0x01 /* CTS has changed state */ struct ubsa_softc { - struct ucom_super_softc sc_super_ucom; - struct ucom_softc sc_ucom; + struct usb2_com_super_softc sc_super_ucom; + struct usb2_com_softc sc_ucom; - struct usbd_xfer *sc_xfer[UBSA_N_TRANSFER]; - struct usbd_device *sc_udev; + struct usb2_xfer *sc_xfer[UBSA_N_TRANSFER]; + struct usb2_device *sc_udev; uint16_t sc_flag; #define UBSA_FLAG_WRITE_STALL 0x0001 @@ -167,26 +164,26 @@ static device_attach_t ubsa_attach; static device_detach_t ubsa_detach; -static usbd_callback_t ubsa_write_callback; -static usbd_callback_t ubsa_write_clear_stall_callback; -static usbd_callback_t ubsa_read_callback; -static usbd_callback_t ubsa_read_clear_stall_callback; -static usbd_callback_t ubsa_intr_callback; -static usbd_callback_t ubsa_intr_clear_stall_callback; +static usb2_callback_t ubsa_write_callback; +static usb2_callback_t ubsa_write_clear_stall_callback; +static usb2_callback_t ubsa_read_callback; +static usb2_callback_t ubsa_read_clear_stall_callback; +static usb2_callback_t ubsa_intr_callback; +static usb2_callback_t ubsa_intr_clear_stall_callback; static void ubsa_cfg_request(struct ubsa_softc *sc, uint8_t index, uint16_t value); -static void ubsa_cfg_set_dtr(struct ucom_softc *ucom, uint8_t onoff); -static void ubsa_cfg_set_rts(struct ucom_softc *ucom, uint8_t onoff); -static void ubsa_cfg_set_break(struct ucom_softc *ucom, uint8_t onoff); -static int ubsa_pre_param(struct ucom_softc *ucom, struct termios *t); -static void ubsa_cfg_param(struct ucom_softc *ucom, struct termios *t); -static void ubsa_start_read(struct ucom_softc *ucom); -static void ubsa_stop_read(struct ucom_softc *ucom); -static void ubsa_start_write(struct ucom_softc *ucom); -static void ubsa_stop_write(struct ucom_softc *ucom); -static void ubsa_cfg_get_status(struct ucom_softc *ucom, uint8_t *lsr, uint8_t *msr); +static void ubsa_cfg_set_dtr(struct usb2_com_softc *ucom, uint8_t onoff); +static void ubsa_cfg_set_rts(struct usb2_com_softc *ucom, uint8_t onoff); +static void ubsa_cfg_set_break(struct usb2_com_softc *ucom, uint8_t onoff); +static int ubsa_pre_param(struct usb2_com_softc *ucom, struct termios *t); +static void ubsa_cfg_param(struct usb2_com_softc *ucom, struct termios *t); +static void ubsa_start_read(struct usb2_com_softc *ucom); +static void ubsa_stop_read(struct usb2_com_softc *ucom); +static void ubsa_start_write(struct usb2_com_softc *ucom); +static void ubsa_stop_write(struct usb2_com_softc *ucom); +static void ubsa_cfg_get_status(struct usb2_com_softc *ucom, uint8_t *lsr, uint8_t *msr); -static const struct usbd_config ubsa_config[UBSA_N_TRANSFER] = { +static const struct usb2_config ubsa_config[UBSA_N_TRANSFER] = { [0] = { .type = UE_BULK, @@ -210,7 +207,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.callback = &ubsa_write_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ @@ -220,7 +217,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.callback = &ubsa_read_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ @@ -239,69 +236,63 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.callback = &ubsa_intr_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ }, }; -static const struct ucom_callback ubsa_callback = { - .ucom_cfg_get_status = &ubsa_cfg_get_status, - .ucom_cfg_set_dtr = &ubsa_cfg_set_dtr, - .ucom_cfg_set_rts = &ubsa_cfg_set_rts, - .ucom_cfg_set_break = &ubsa_cfg_set_break, - .ucom_cfg_param = &ubsa_cfg_param, - .ucom_pre_param = &ubsa_pre_param, - .ucom_start_read = &ubsa_start_read, - .ucom_stop_read = &ubsa_stop_read, - .ucom_start_write = &ubsa_start_write, - .ucom_stop_write = &ubsa_stop_write, +static const struct usb2_com_callback ubsa_callback = { + .usb2_com_cfg_get_status = &ubsa_cfg_get_status, + .usb2_com_cfg_set_dtr = &ubsa_cfg_set_dtr, + .usb2_com_cfg_set_rts = &ubsa_cfg_set_rts, + .usb2_com_cfg_set_break = &ubsa_cfg_set_break, + .usb2_com_cfg_param = &ubsa_cfg_param, + .usb2_com_pre_param = &ubsa_pre_param, + .usb2_com_start_read = &ubsa_start_read, + .usb2_com_stop_read = &ubsa_stop_read, + .usb2_com_start_write = &ubsa_start_write, + .usb2_com_stop_write = &ubsa_stop_write, }; -struct ubsa_product { - uint16_t vendor; - uint16_t product; -}; - -static const struct ubsa_product ubsa_products[] = { +static const struct usb2_device_id ubsa_devs[] = { /* AnyData ADU-500A */ - {USB_VENDOR_ANYDATA, USB_PRODUCT_ANYDATA_ADU_500A}, + {USB_VPI(USB_VENDOR_ANYDATA, USB_PRODUCT_ANYDATA_ADU_500A, 0)}, /* AnyData ADU-E100A/H */ - {USB_VENDOR_ANYDATA, USB_PRODUCT_ANYDATA_ADU_E100X}, + {USB_VPI(USB_VENDOR_ANYDATA, USB_PRODUCT_ANYDATA_ADU_E100X, 0)}, /* Axesstel MV100H */ - {USB_VENDOR_AXESSTEL, USB_PRODUCT_AXESSTEL_DATAMODEM}, + {USB_VPI(USB_VENDOR_AXESSTEL, USB_PRODUCT_AXESSTEL_DATAMODEM, 0)}, /* BELKIN F5U103 */ - {USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5U103}, + {USB_VPI(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5U103, 0)}, /* BELKIN F5U120 */ - {USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5U120}, + {USB_VPI(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5U120, 0)}, /* GoHubs GO-COM232 */ - {USB_VENDOR_ETEK, USB_PRODUCT_ETEK_1COM}, + {USB_VPI(USB_VENDOR_ETEK, USB_PRODUCT_ETEK_1COM, 0)}, /* GoHubs GO-COM232 */ - {USB_VENDOR_GOHUBS, USB_PRODUCT_GOHUBS_GOCOM232}, + {USB_VPI(USB_VENDOR_GOHUBS, USB_PRODUCT_GOHUBS_GOCOM232, 0)}, /* Peracom */ - {USB_VENDOR_PERACOM, USB_PRODUCT_PERACOM_SERIAL1}, + {USB_VPI(USB_VENDOR_PERACOM, USB_PRODUCT_PERACOM_SERIAL1, 0)}, /* Novatel Wireless Merlin cards */ - {USB_VENDOR_NOVATEL, USB_PRODUCT_NOVATEL_U740}, + {USB_VPI(USB_VENDOR_NOVATEL, USB_PRODUCT_NOVATEL_U740, 0)}, /* Dell version of the above */ - {USB_VENDOR_DELL, USB_PRODUCT_DELL_U740}, + {USB_VPI(USB_VENDOR_DELL, USB_PRODUCT_DELL_U740, 0)}, /* Novatel Wireless Merlin v740 */ - {USB_VENDOR_NOVATEL, USB_PRODUCT_NOVATEL_V740}, + {USB_VPI(USB_VENDOR_NOVATEL, USB_PRODUCT_NOVATEL_V740, 0)}, /* Option Vodafone MC3G */ - {USB_VENDOR_OPTION, USB_PRODUCT_OPTION_VODAFONEMC3G}, + {USB_VPI(USB_VENDOR_OPTION, USB_PRODUCT_OPTION_VODAFONEMC3G, 0)}, /* Option GlobeTrotter 3G */ - {USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GT3G}, + {USB_VPI(USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GT3G, 0)}, /* Option GlobeTrotter 3G+ */ - {USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GT3GPLUS}, + {USB_VPI(USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GT3GPLUS, 0)}, /* Option GlobeTrotter Max 3.6 */ - {USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GTMAX36}, + {USB_VPI(USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GTMAX36, 0)}, /* Option GlobeTrotter 3G QUAD */ - {USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GT3GQUAD}, + {USB_VPI(USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GT3GQUAD, 0)}, /* Huawei Mobile */ - {USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_MOBILE}, + {USB_VPI(USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_MOBILE, 0)}, /* Qualcomm, Inc. ZTE CDMA */ - {USB_VENDOR_QUALCOMMINC, USB_PRODUCT_QUALCOMMINC_CDMA_MSM}, - {0, 0} + {USB_VPI(USB_VENDOR_QUALCOMMINC, USB_PRODUCT_QUALCOMMINC_CDMA_MSM, 0)}, }; static device_method_t ubsa_methods[] = { @@ -319,39 +310,32 @@ .size = sizeof(struct ubsa_softc), }; -DRIVER_MODULE(ubsa, uhub, ubsa_driver, ubsa_devclass, usbd_driver_load, 0); -MODULE_DEPEND(ubsa, usb, 1, 1, 1); +DRIVER_MODULE(ubsa, ushub, ubsa_driver, ubsa_devclass, NULL, 0); +MODULE_DEPEND(ubsa, usb2_core, 1, 1, 1); MODULE_DEPEND(ubsa, ucom, UCOM_MINVER, UCOM_PREFVER, UCOM_MAXVER); static int ubsa_probe(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); - const struct ubsa_product *up = ubsa_products; + struct usb2_attach_arg *uaa = device_get_ivars(dev); - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - if (uaa->iface) { - return (UMATCH_NONE); + if (uaa->info.bConfigIndex != UBSA_CONFIG_INDEX) { + return (ENXIO); } - while (up->vendor) { - if ((up->vendor == uaa->vendor) && - (up->product == uaa->product)) { - return (UMATCH_VENDOR_PRODUCT); - } - up++; + if (uaa->info.bIfaceIndex != UBSA_IFACE_INDEX) { + return (ENXIO); } - return (UMATCH_NONE); + return (usb2_lookup_id_by_uaa(ubsa_devs, sizeof(ubsa_devs), uaa)); } static int ubsa_attach(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); struct ubsa_softc *sc = device_get_softc(dev); - struct usbd_interface *iface; - usb_interface_descriptor_t *id; int error; DPRINTF(0, "sc=%p\n", sc); @@ -359,35 +343,13 @@ if (sc == NULL) { return (ENOMEM); } - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); sc->sc_udev = uaa->device; - - /* configure the device */ - - error = usbd_set_config_index(uaa->device, UBSA_CONFIG_INDEX, 1); - - if (error) { - DPRINTF(0, "failed to set configuration, error=%s\n", - usbd_errstr(error)); - goto detach; - } - iface = usbd_get_iface(uaa->device, UBSA_IFACE_INDEX); - - if (iface == NULL) { - DPRINTF(0, "no interface\n"); - goto detach; - } - id = usbd_get_interface_descriptor(iface); - - if (id == NULL) { - DPRINTF(0, "no interface descriptor\n"); - goto detach; - } - sc->sc_iface_no = id->bInterfaceNumber; + sc->sc_iface_no = uaa->info.bIfaceNum; sc->sc_iface_index = UBSA_IFACE_INDEX; - error = usbd_transfer_setup(uaa->device, &(sc->sc_iface_index), + error = usb2_transfer_setup(uaa->device, &(sc->sc_iface_index), sc->sc_xfer, ubsa_config, UBSA_N_TRANSFER, sc, &Giant); if (error) { @@ -398,10 +360,10 @@ sc->sc_flag |= (UBSA_FLAG_WRITE_STALL | UBSA_FLAG_READ_STALL); - error = ucom_attach(&(sc->sc_super_ucom), &(sc->sc_ucom), 1, sc, + error = usb2_com_attach(&(sc->sc_super_ucom), &(sc->sc_ucom), 1, sc, &ubsa_callback, &Giant); if (error) { - DPRINTF(0, "ucom_attach failed\n"); + DPRINTF(0, "usb2_com_attach failed\n"); goto detach; } return (0); @@ -418,9 +380,9 @@ DPRINTF(0, "sc=%p\n", sc); - ucom_detach(&(sc->sc_super_ucom), &(sc->sc_ucom), 1); + usb2_com_detach(&(sc->sc_super_ucom), &(sc->sc_ucom), 1); - usbd_transfer_unsetup(sc->sc_xfer, UBSA_N_TRANSFER); + usb2_transfer_unsetup(sc->sc_xfer, UBSA_N_TRANSFER); return (0); } @@ -428,10 +390,10 @@ static void ubsa_cfg_request(struct ubsa_softc *sc, uint8_t index, uint16_t value) { - usb_device_request_t req; - usbd_status_t err; + struct usb2_device_request req; + usb2_error_t err; - if (ucom_cfg_is_gone(&(sc->sc_ucom))) { + if (usb2_com_cfg_is_gone(&(sc->sc_ucom))) { return; } req.bmRequestType = UT_WRITE_VENDOR_DEVICE; @@ -441,18 +403,18 @@ req.wIndex[1] = 0; USETW(req.wLength, 0); - err = usbd_do_request_flags + err = usb2_do_request_flags (sc->sc_udev, &Giant, &req, NULL, 0, NULL, 1000); if (err) { DPRINTF(-1, "device request failed, err=%s " - "(ignored)\n", usbd_errstr(err)); + "(ignored)\n", usb2_errstr(err)); } return; } static void -ubsa_cfg_set_dtr(struct ucom_softc *ucom, uint8_t onoff) +ubsa_cfg_set_dtr(struct usb2_com_softc *ucom, uint8_t onoff) { struct ubsa_softc *sc = ucom->sc_parent; @@ -463,7 +425,7 @@ } static void -ubsa_cfg_set_rts(struct ucom_softc *ucom, uint8_t onoff) +ubsa_cfg_set_rts(struct usb2_com_softc *ucom, uint8_t onoff) { struct ubsa_softc *sc = ucom->sc_parent; @@ -474,7 +436,7 @@ } static void -ubsa_cfg_set_break(struct ucom_softc *ucom, uint8_t onoff) +ubsa_cfg_set_break(struct usb2_com_softc *ucom, uint8_t onoff) { struct ubsa_softc *sc = ucom->sc_parent; @@ -485,7 +447,7 @@ } static int -ubsa_pre_param(struct ucom_softc *ucom, struct termios *t) +ubsa_pre_param(struct usb2_com_softc *ucom, struct termios *t) { struct ubsa_softc *sc = ucom->sc_parent; @@ -512,7 +474,7 @@ } static void >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Wed Jul 2 21:48:37 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Jul 2 21:48:39 2008 Subject: PERFORCE change 144510 for review Message-ID: <200807022148.m62LmavX008916@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144510 Change 144510 by hselasky@hselasky_laptop001 on 2008/07/02 21:48:14 New USB bluetooth module finished. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/TODO.TXT#2 edit .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2_var.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#9 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#7 edit .. //depot/projects/usb/src/sys/modules/usb2/bluetooth/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/TODO.TXT#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#2 (text+ko) ==== @@ -31,29 +31,32 @@ * $FreeBSD: src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c,v 1.33 2007/06/23 04:34:38 imp Exp $ */ -#include -#include -#include -#include +#include +#include +#include +#include +#include + +#define USB_DEBUG_VAR usb2_debug + +#include +#include +#include +#include +#include +#include + #include -#include -#include -#include -#include -#include - #include #include #include #include #include #include -#include -#include "usbdevs.h" - -#define DPRINTF(...) do { } while (0) +#include +#include /* * USB methods @@ -181,30 +184,23 @@ /* USB methods */ -static usbd_callback_t ubt_ctrl_write_callback; -static usbd_callback_t ubt_intr_read_callback; -static usbd_callback_t ubt_intr_read_clear_stall_callback; -static usbd_callback_t ubt_bulk_read_callback; -static usbd_callback_t ubt_bulk_read_clear_stall_callback; -static usbd_callback_t ubt_bulk_write_callback; -static usbd_callback_t ubt_bulk_write_clear_stall_callback; -static usbd_callback_t ubt_isoc_read_callback; -static usbd_callback_t ubt_isoc_write_callback; +static usb2_callback_t ubt_ctrl_write_callback; +static usb2_callback_t ubt_intr_read_callback; +static usb2_callback_t ubt_intr_read_clear_stall_callback; +static usb2_callback_t ubt_bulk_read_callback; +static usb2_callback_t ubt_bulk_read_clear_stall_callback; +static usb2_callback_t ubt_bulk_write_callback; +static usb2_callback_t ubt_bulk_write_clear_stall_callback; +static usb2_callback_t ubt_isoc_read_callback; +static usb2_callback_t ubt_isoc_write_callback; -static int - ubt_modevent(module_t mod, int event, void *data); +static int ubt_modevent(module_t mod, int event, void *data); +static void ubt_intr_read_complete(node_p node, hook_p hook, void *arg1, int arg2); +static void ubt_bulk_read_complete(node_p node, hook_p hook, void *arg1, int arg2); +static void ubt_isoc_read_complete(node_p node, hook_p hook, void *arg1, int arg2); -static void - ubt_intr_read_complete(node_p node, hook_p hook, void *arg1, int arg2); - -static void - ubt_bulk_read_complete(node_p node, hook_p hook, void *arg1, int arg2); - -static void - ubt_isoc_read_complete(node_p node, hook_p hook, void *arg1, int arg2); - /* USB config */ -static const struct usbd_config ubt_config_if_0[UBT_IF_0_N_TRANSFER] = { +static const struct usb2_config ubt_config_if_0[UBT_IF_0_N_TRANSFER] = { [0] = { .type = UE_BULK, @@ -237,7 +233,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = (sizeof(usb_device_request_t) + UBT_CTRL_BUFFER_SIZE), + .mh.bufsize = (sizeof(struct usb2_device_request) + UBT_CTRL_BUFFER_SIZE), .mh.callback = &ubt_ctrl_write_callback, .mh.timeout = 5000, /* 5 seconds */ }, @@ -246,7 +242,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.callback = &ubt_bulk_write_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ @@ -256,7 +252,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.callback = &ubt_bulk_read_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ @@ -266,7 +262,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.callback = &ubt_intr_read_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ @@ -274,7 +270,7 @@ }; /* USB config */ -static const struct usbd_config +static const struct usb2_config ubt_config_if_1_full_speed[UBT_IF_1_N_TRANSFER] = { [0] = { @@ -319,7 +315,7 @@ }; /* USB config */ -static const struct usbd_config +static const struct usb2_config ubt_config_if_1_high_speed[UBT_IF_1_N_TRANSFER] = { [0] = { @@ -367,10 +363,10 @@ * Module */ -DRIVER_MODULE(ng_ubt, uhub, ubt_driver, ubt_devclass, ubt_modevent, 0); +DRIVER_MODULE(ng_ubt, ushub, ubt_driver, ubt_devclass, ubt_modevent, 0); MODULE_VERSION(ng_ubt, NG_BLUETOOTH_VERSION); MODULE_DEPEND(ng_ubt, netgraph, NG_ABI_VERSION, NG_ABI_VERSION, NG_ABI_VERSION); -MODULE_DEPEND(ng_ubt, usb, 1, 1, 1); +MODULE_DEPEND(ng_ubt, usb2_core, 1, 1, 1); /**************************************************************************** **************************************************************************** @@ -394,101 +390,85 @@ printf("%s: Could not register " "Netgraph node type, error=%d\n", NG_UBT_NODE_TYPE, error); - } else - error = usbd_driver_load(mod, event, data); + } break; case MOD_UNLOAD: error = ng_rmtype(&typestruct); - if (error == 0) - error = usbd_driver_load(mod, event, data); break; default: error = EOPNOTSUPP; break; } - return (error); } /* ubt_modevent */ /* + * If for some reason device should not be attached then put + * VendorID/ProductID pair into the list below. The format is + * as follows: + * + * { VENDOR_ID, PRODUCT_ID }, + * + * where VENDOR_ID and PRODUCT_ID are hex numbers. + */ +static const struct usb2_device_id ubt_ignore_devs[] = { + /* AVM USB Bluetooth-Adapter BlueFritz! v1.0 */ + {USB_VPI(USB_VENDOR_AVM, 0x2200, 0)}, +}; + +/* List of supported bluetooth devices */ +static const struct usb2_device_id ubt_devs[] = { + /* Generic Bluetooth class devices. */ + {USB_IFACE_CLASS(UDCLASS_WIRELESS), + USB_IFACE_SUBCLASS(UDSUBCLASS_RF), + USB_IFACE_PROTOCOL(UDPROTO_BLUETOOTH)}, + + /* AVM USB Bluetooth-Adapter BlueFritz! v2.0 */ + {USB_VPI(USB_VENDOR_AVM, 0x3800, 0)}, +}; + +/* * Probe for a USB Bluetooth device */ -static int32_t +static int ubt_probe(device_t dev) { - /* - * If for some reason device should not be attached then put - * VendorID/ProductID pair into the list below. The format is - * as follows: - * - * { VENDOR_ID, PRODUCT_ID }, - * - * where VENDOR_ID and PRODUCT_ID are hex numbers. - */ + struct usb2_attach_arg *uaa = device_get_ivars(dev); - static struct usb_devno const ubt_ignored_devices[] = { - {USB_VENDOR_AVM, 0x2200}, /* AVM USB Bluetooth-Adapter - * BlueFritz! v1.0 */ - {0, 0} /* This should be the last item in the - * list */ - }; - - /* - * If device violates Bluetooth specification and has bDeviceClass, - * bDeviceSubClass and bDeviceProtocol set to wrong values then you - * could try to put VendorID/ProductID pair into the list below. - * Adding VendorID/ProductID pair into this list forces ng_ubt(4) - * to attach to the broken device. - */ - - static struct usb_devno const ubt_broken_devices[] = { - {USB_VENDOR_AVM, 0x3800}, /* AVM USB Bluetooth-Adapter - * BlueFritz! v2.0 */ - {0, 0} /* This should be the last item in the - * list */ - }; - - struct usb_attach_arg *uaa = device_get_ivars(dev); - usb_device_descriptor_t *dd = usbd_get_device_descriptor(uaa->device); - - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - if ((uaa->iface == NULL) || - usb_lookup(ubt_ignored_devices, uaa->vendor, uaa->product)) { - return (UMATCH_NONE); + if (uaa->info.bIfaceIndex != 0) { + return (ENXIO); } - if ((dd->bDeviceClass == UDCLASS_WIRELESS) && - (dd->bDeviceSubClass == UDSUBCLASS_RF) && - (dd->bDeviceProtocol == UDPROTO_BLUETOOTH)) { - return (UMATCH_DEVCLASS_DEVSUBCLASS); + if (usb2_lookup_id_by_uaa(ubt_ignore_devs, + sizeof(ubt_ignore_devs), uaa) == 0) { + return (ENXIO); } - if (usb_lookup(ubt_broken_devices, uaa->vendor, uaa->product)) { - return (UMATCH_VENDOR_PRODUCT); - } - return (UMATCH_NONE); + return (usb2_lookup_id_by_uaa(ubt_devs, sizeof(ubt_devs), uaa)); } /* * Attach the device */ -static int32_t +static int ubt_attach(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); struct ubt_softc *sc = device_get_softc(dev); - const struct usbd_config *isoc_setup; - struct usbd_pipe *pipe; + const struct usb2_config *isoc_setup; + struct usb2_endpoint_descriptor *ed; uint16_t wMaxPacketSize; uint8_t alt_index; uint8_t iface_index; uint8_t i; + uint8_t j; - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); snprintf(sc->sc_name, sizeof(sc->sc_name), "%s", device_get_nameunit(dev)); @@ -510,13 +490,13 @@ /* isoc-out pipe */ NG_BT_MBUFQ_INIT(&sc->sc_scoq, - (usbd_get_speed(uaa->device) == USB_SPEED_HIGH) ? + (usb2_get_speed(uaa->device) == USB_SPEED_HIGH) ? (2 * UBT_ISOC_NFRAMES * 8) : (2 * UBT_ISOC_NFRAMES)); /* isoc-in pipe */ NG_BT_MBUFQ_INIT(&sc->sc_sciq, - (usbd_get_speed(uaa->device) == USB_SPEED_HIGH) ? + (usb2_get_speed(uaa->device) == USB_SPEED_HIGH) ? (2 * UBT_ISOC_NFRAMES * 8) : (2 * UBT_ISOC_NFRAMES)); @@ -549,7 +529,7 @@ mtx_init(&(sc->sc_mtx), "ubt lock", NULL, MTX_DEF | MTX_RECURSE); iface_index = 0; - if (usbd_transfer_setup + if (usb2_transfer_setup (uaa->device, &iface_index, sc->sc_xfer_if_0, ubt_config_if_0, UBT_IF_0_N_TRANSFER, sc, &(sc->sc_mtx))) { device_printf(dev, "Could not allocate transfers " @@ -563,37 +543,47 @@ * wMaxPacketSize) */ isoc_setup = - ((usbd_get_speed(uaa->device) == USB_SPEED_HIGH) ? + ((usb2_get_speed(uaa->device) == USB_SPEED_HIGH) ? ubt_config_if_1_high_speed : ubt_config_if_1_full_speed); wMaxPacketSize = 0; - alt_index = 0; - for (i = 0; i < 32; i++) { + /* search through all the descriptors looking for bidir mode */ - if (usbd_fill_iface_data(uaa->device, 1, i)) { - /* end of alternate settings */ - break; - } - pipe = usbd_get_pipe(uaa->device, 1, isoc_setup); + alt_index = 0 - 1; + i = 0; + j = 0; + while (1) { + uint16_t temp; - if (pipe && pipe->edesc) { - - if (UGETW(pipe->edesc->wMaxPacketSize) > wMaxPacketSize) { - wMaxPacketSize = UGETW(pipe->edesc->wMaxPacketSize); - alt_index = i; + ed = usb2_find_edesc( + usb2_get_config_descriptor(uaa->device), 1, i, j); + if (ed == NULL) { + if (j == 0) { + /* end of interfaces */ + break; + } else { + /* next interface */ + j = 0; + i++; + continue; } } + temp = UGETW(ed->wMaxPacketSize); + if (temp > wMaxPacketSize) { + wMaxPacketSize = temp; + alt_index = i; + } } - if (usbd_set_alt_interface_index(uaa->device, 1, alt_index)) { + if (usb2_set_alt_interface_index(uaa->device, 1, alt_index)) { device_printf(dev, "Could not set alternate " "setting %d for interface 1!\n", alt_index); goto detach; } iface_index = 1; - if (usbd_transfer_setup + if (usb2_transfer_setup (uaa->device, &iface_index, sc->sc_xfer_if_1, isoc_setup, UBT_IF_1_N_TRANSFER, sc, &(sc->sc_mtx))) { device_printf(dev, "Could not allocate transfers " @@ -622,12 +612,12 @@ /* claim all interfaces on the device */ - for (i = 0;; i++) { + for (i = 1;; i++) { - if (usbd_get_iface(uaa->device, i) == NULL) { + if (usb2_get_iface(uaa->device, i) == NULL) { break; } - USBD_SET_IFACE_NO_PROBE(uaa->device, i); + usb2_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex); } return (0); /* success */ @@ -642,7 +632,7 @@ * Detach the device */ -int32_t +int ubt_detach(device_t dev) { struct ubt_softc *sc = device_get_softc(dev); @@ -656,9 +646,9 @@ } /* free USB transfers, if any */ - usbd_transfer_unsetup(sc->sc_xfer_if_0, UBT_IF_0_N_TRANSFER); + usb2_transfer_unsetup(sc->sc_xfer_if_0, UBT_IF_0_N_TRANSFER); - usbd_transfer_unsetup(sc->sc_xfer_if_1, UBT_IF_1_N_TRANSFER); + usb2_transfer_unsetup(sc->sc_xfer_if_1, UBT_IF_1_N_TRANSFER); mtx_destroy(&(sc->sc_mtx)); @@ -673,14 +663,14 @@ } static void -ubt_ctrl_write_callback(struct usbd_xfer *xfer) +ubt_ctrl_write_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; - usb_device_request_t req; + struct usb2_device_request req; struct mbuf *m; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: if (xfer->error) { @@ -690,7 +680,7 @@ NG_UBT_STAT_PCKTS_SENT(sc->sc_stat); } - case USBD_ST_SETUP: + case USB_ST_SETUP: /* get next mbuf, if any */ @@ -719,8 +709,8 @@ NG_UBT_INFO(sc, "Sending control request, bmRequestType=0x%02x, " "wLength=%d\n", req.bmRequestType, UGETW(req.wLength)); - usbd_copy_in(xfer->frbuffers, 0, &req, sizeof(req)); - usbd_m_copy_in(xfer->frbuffers + 1, 0, m, 0, m->m_pkthdr.len); + usb2_copy_in(xfer->frbuffers, 0, &req, sizeof(req)); + usb2_m_copy_in(xfer->frbuffers + 1, 0, m, 0, m->m_pkthdr.len); xfer->frlengths[0] = sizeof(req); xfer->frlengths[1] = m->m_pkthdr.len; @@ -728,11 +718,11 @@ NG_FREE_M(m); - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { + if (xfer->error == USB_ERR_CANCELLED) { /* ignore */ return; } @@ -741,15 +731,15 @@ } static void -ubt_intr_read_callback(struct usbd_xfer *xfer) +ubt_intr_read_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; struct mbuf *m; uint32_t max_len; uint8_t *ptr; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: /* allocate a new mbuf */ @@ -778,7 +768,7 @@ } ptr = ((uint8_t *)(m->m_data)) + m->m_len; - usbd_copy_out(xfer->frbuffers, 0, ptr, xfer->actlen); + usb2_copy_out(xfer->frbuffers, 0, ptr, xfer->actlen); m->m_pkthdr.len += xfer->actlen; m->m_len += xfer->actlen; @@ -788,7 +778,7 @@ sc->sc_intr_buffer = m; - case USBD_ST_SETUP: + case USB_ST_SETUP: tr_setup: if (sc->sc_intr_buffer) { @@ -796,19 +786,19 @@ return; } if (sc->sc_flags & UBT_FLAG_INTR_STALL) { - usbd_transfer_start(sc->sc_xfer_if_0[6]); + usb2_transfer_start(sc->sc_xfer_if_0[6]); return; } xfer->frlengths[0] = xfer->max_data_length; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ sc->sc_flags |= UBT_FLAG_INTR_STALL; - usbd_transfer_start(sc->sc_xfer_if_0[6]); + usb2_transfer_start(sc->sc_xfer_if_0[6]); } return; @@ -816,15 +806,15 @@ } static void -ubt_intr_read_clear_stall_callback(struct usbd_xfer *xfer) +ubt_intr_read_clear_stall_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer_if_0[2]; + struct usb2_xfer *xfer_other = sc->sc_xfer_if_0[2]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UBT_FLAG_INTR_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } @@ -888,7 +878,7 @@ } /* start USB transfer if not already started */ - usbd_transfer_start(sc->sc_xfer_if_0[2]); + usb2_transfer_start(sc->sc_xfer_if_0[2]); mtx_unlock(&(sc->sc_mtx)); @@ -896,15 +886,15 @@ } static void -ubt_bulk_read_callback(struct usbd_xfer *xfer) +ubt_bulk_read_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; struct mbuf *m; uint32_t max_len; uint8_t *ptr; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: /* allocate new mbuf */ @@ -933,7 +923,7 @@ } ptr = ((uint8_t *)(m->m_data)) + m->m_len; - usbd_copy_out(xfer->frbuffers, 0, ptr, xfer->actlen); + usb2_copy_out(xfer->frbuffers, 0, ptr, xfer->actlen); m->m_pkthdr.len += xfer->actlen; m->m_len += xfer->actlen; @@ -943,26 +933,26 @@ sc->sc_bulk_in_buffer = m; - case USBD_ST_SETUP: + case USB_ST_SETUP: tr_setup: if (sc->sc_bulk_in_buffer) { ng_send_fn(sc->sc_node, NULL, ubt_bulk_read_complete, NULL, 0); return; } if (sc->sc_flags & UBT_FLAG_READ_STALL) { - usbd_transfer_start(sc->sc_xfer_if_0[5]); + usb2_transfer_start(sc->sc_xfer_if_0[5]); return; } xfer->frlengths[0] = xfer->max_data_length; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ sc->sc_flags |= UBT_FLAG_READ_STALL; - usbd_transfer_start(sc->sc_xfer_if_0[5]); + usb2_transfer_start(sc->sc_xfer_if_0[5]); } return; @@ -970,15 +960,15 @@ } static void -ubt_bulk_read_clear_stall_callback(struct usbd_xfer *xfer) +ubt_bulk_read_clear_stall_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer_if_0[1]; + struct usb2_xfer *xfer_other = sc->sc_xfer_if_0[1]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UBT_FLAG_READ_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } @@ -1045,7 +1035,7 @@ } /* start USB transfer if not already started */ - usbd_transfer_start(sc->sc_xfer_if_0[1]); + usb2_transfer_start(sc->sc_xfer_if_0[1]); mtx_unlock(&(sc->sc_mtx)); @@ -1053,21 +1043,21 @@ } static void -ubt_bulk_write_callback(struct usbd_xfer *xfer) +ubt_bulk_write_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; struct mbuf *m; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: NG_UBT_INFO(sc, "sent %d bytes to bulk-out " "pipe\n", xfer->actlen); NG_UBT_STAT_BYTES_SENT(sc->sc_stat, xfer->actlen); NG_UBT_STAT_PCKTS_SENT(sc->sc_stat); - case USBD_ST_SETUP: + case USB_ST_SETUP: if (sc->sc_flags & UBT_FLAG_WRITE_STALL) { - usbd_transfer_start(sc->sc_xfer_if_0[4]); + usb2_transfer_start(sc->sc_xfer_if_0[4]); return; } /* get next mbuf, if any */ @@ -1089,7 +1079,7 @@ UBT_BULK_WRITE_BUFFER_SIZE, m->m_pkthdr.len); } - usbd_m_copy_in(xfer->frbuffers, 0, m, 0, m->m_pkthdr.len); + usb2_m_copy_in(xfer->frbuffers, 0, m, 0, m->m_pkthdr.len); NG_UBT_INFO(sc, "bulk-out transfer has been started, " "len=%d\n", m->m_pkthdr.len); @@ -1098,20 +1088,20 @@ NG_FREE_M(m); - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { NG_UBT_WARN(sc, "bulk-out transfer failed: %s\n", - usbd_errstr(xfer->error)); + usb2_errstr(xfer->error)); NG_UBT_STAT_OERROR(sc->sc_stat); /* try to clear stall first */ sc->sc_flags |= UBT_FLAG_WRITE_STALL; - usbd_transfer_start(sc->sc_xfer_if_0[4]); + usb2_transfer_start(sc->sc_xfer_if_0[4]); } return; @@ -1119,21 +1109,21 @@ } static void -ubt_bulk_write_clear_stall_callback(struct usbd_xfer *xfer) +ubt_bulk_write_clear_stall_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer_if_0[0]; + struct usb2_xfer *xfer_other = sc->sc_xfer_if_0[0]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UBT_FLAG_WRITE_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } static void -ubt_isoc_read_callback(struct usbd_xfer *xfer) +ubt_isoc_read_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; ng_hci_scodata_pkt_t hdr; @@ -1143,8 +1133,8 @@ uint32_t n; uint32_t offset; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: offset = 0; @@ -1152,7 +1142,7 @@ if (xfer->frlengths[n] >= sizeof(hdr)) { - usbd_copy_out(xfer->frbuffers, offset, + usb2_copy_out(xfer->frbuffers, offset, &hdr, sizeof(hdr)); if (hdr.length == (xfer->frlengths[n] - sizeof(hdr))) { @@ -1194,7 +1184,7 @@ } ptr = ((uint8_t *)(m->m_data)) + m->m_len; - usbd_copy_out + usb2_copy_out (xfer->frbuffers, offset, ptr, xfer->frlengths[n]); @@ -1208,7 +1198,7 @@ offset += xfer->max_frame_size; } - case USBD_ST_SETUP: + case USB_ST_SETUP: tr_setup: if (NG_BT_MBUFQ_LEN(&(sc->sc_sciq)) > 0) { @@ -1218,11 +1208,11 @@ xfer->frlengths[n] = xfer->max_frame_size; } - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { + if (xfer->error == USB_ERR_CANCELLED) { /* ignore */ return; } @@ -1278,7 +1268,7 @@ } static void -ubt_isoc_write_callback(struct usbd_xfer *xfer) +ubt_isoc_write_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; struct mbuf *m; @@ -1286,8 +1276,8 @@ uint32_t len; uint32_t offset; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: if (xfer->error) { NG_UBT_STAT_OERROR(sc->sc_stat); @@ -1296,7 +1286,7 @@ NG_UBT_STAT_PCKTS_SENT(sc->sc_stat); } - case USBD_ST_SETUP: + case USB_ST_SETUP: offset = 0; for (n = 0; n < xfer->nframes; n++) { @@ -1306,7 +1296,7 @@ if (m) { len = min(xfer->max_frame_size, m->m_pkthdr.len); - usbd_m_copy_in(xfer->frbuffers, offset, m, 0, len); + usb2_m_copy_in(xfer->frbuffers, offset, m, 0, len); NG_FREE_M(m); @@ -1317,11 +1307,11 @@ } } - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { + if (xfer->error == USB_ERR_CANCELLED) { /* ignore */ return; } @@ -1436,27 +1426,27 @@ UBT_FLAG_INTR_STALL); /* start intr transfer */ - usbd_transfer_start(sc->sc_xfer_if_0[2]); + usb2_transfer_start(sc->sc_xfer_if_0[2]); /* start bulk-in transfer */ - usbd_transfer_start(sc->sc_xfer_if_0[1]); + usb2_transfer_start(sc->sc_xfer_if_0[1]); /* start bulk-out transfer */ - usbd_transfer_start(sc->sc_xfer_if_0[0]); + usb2_transfer_start(sc->sc_xfer_if_0[0]); /* start control-out transfer */ - usbd_transfer_start(sc->sc_xfer_if_0[3]); + usb2_transfer_start(sc->sc_xfer_if_0[3]); #if 0 XXX can enable this XXX /* start isoc-in transfer */ - usbd_transfer_start(sc->sc_xfer_if_1[0]); + usb2_transfer_start(sc->sc_xfer_if_1[0]); - usbd_transfer_start(sc->sc_xfer_if_1[1]); + usb2_transfer_start(sc->sc_xfer_if_1[1]); /* start isoc-out transfer */ - usbd_transfer_start(sc->sc_xfer_if_1[2]); - usbd_transfer_start(sc->sc_xfer_if_1[3]); + usb2_transfer_start(sc->sc_xfer_if_1[2]); + usb2_transfer_start(sc->sc_xfer_if_1[3]); #endif mtx_unlock(&(sc->sc_mtx)); @@ -1483,27 +1473,27 @@ } else { /* stop intr transfer */ - usbd_transfer_stop(sc->sc_xfer_if_0[2]); - usbd_transfer_stop(sc->sc_xfer_if_0[6]); + usb2_transfer_stop(sc->sc_xfer_if_0[2]); + usb2_transfer_stop(sc->sc_xfer_if_0[6]); /* stop bulk-in transfer */ - usbd_transfer_stop(sc->sc_xfer_if_0[1]); - usbd_transfer_stop(sc->sc_xfer_if_0[5]); + usb2_transfer_stop(sc->sc_xfer_if_0[1]); + usb2_transfer_stop(sc->sc_xfer_if_0[5]); /* stop bulk-out transfer */ - usbd_transfer_stop(sc->sc_xfer_if_0[0]); - usbd_transfer_stop(sc->sc_xfer_if_0[4]); + usb2_transfer_stop(sc->sc_xfer_if_0[0]); + usb2_transfer_stop(sc->sc_xfer_if_0[4]); /* stop control transfer */ - usbd_transfer_stop(sc->sc_xfer_if_0[3]); + usb2_transfer_stop(sc->sc_xfer_if_0[3]); /* stop isoc-in transfer */ - usbd_transfer_stop(sc->sc_xfer_if_1[0]); - usbd_transfer_stop(sc->sc_xfer_if_1[1]); + usb2_transfer_stop(sc->sc_xfer_if_1[0]); + usb2_transfer_stop(sc->sc_xfer_if_1[1]); /* stop isoc-out transfer */ - usbd_transfer_stop(sc->sc_xfer_if_1[2]); - usbd_transfer_stop(sc->sc_xfer_if_1[3]); + usb2_transfer_stop(sc->sc_xfer_if_1[2]); + usb2_transfer_stop(sc->sc_xfer_if_1[3]); /* cleanup queues */ NG_BT_MBUFQ_DRAIN(&sc->sc_cmdq); @@ -1713,7 +1703,7 @@ struct ubt_softc *sc = NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); struct mbuf *m; struct ng_bt_mbufq *q; - struct usbd_xfer *xfer; + struct usb2_xfer *xfer; int error = 0; if (sc == NULL) { @@ -1771,7 +1761,7 @@ } if (xfer) { - usbd_transfer_start(xfer); + usb2_transfer_start(xfer); } done: NG_FREE_ITEM(item); ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2_var.h#2 (text+ko) ==== @@ -92,8 +92,8 @@ struct mtx sc_mtx; /* USB device specific */ - struct usbd_xfer *sc_xfer_if_0[UBT_IF_0_N_TRANSFER]; - struct usbd_xfer *sc_xfer_if_1[UBT_IF_1_N_TRANSFER]; + struct usb2_xfer *sc_xfer_if_0[UBT_IF_0_N_TRANSFER]; + struct usb2_xfer *sc_xfer_if_1[UBT_IF_1_N_TRANSFER]; /* Interrupt pipe (HCI events) */ struct mbuf *sc_intr_buffer; /* interrupt buffer */ ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#2 (text+ko) ==== @@ -31,21 +31,24 @@ * $FreeBSD: src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c,v 1.18 2007/06/23 04:34:38 imp Exp $ */ -#include -#include -#include -#include -#include -#include +#include +#include +#include >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Wed Jul 2 22:00:49 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Wed Jul 2 22:00:53 2008 Subject: PERFORCE change 144511 for review Message-ID: <200807022200.m62M0m5f010183@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144511 Change 144511 by hselasky@hselasky_laptop001 on 2008/07/02 22:00:07 Bugfix. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#3 (text+ko) ==== @@ -555,7 +555,7 @@ i = 0; j = 0; while (1) { - uint16_t temp; + uint16_t temp; ed = usb2_find_edesc( usb2_get_config_descriptor(uaa->device), 1, i, j); @@ -575,6 +575,7 @@ wMaxPacketSize = temp; alt_index = i; } + j++; } if (usb2_set_alt_interface_index(uaa->device, 1, alt_index)) { From julian at FreeBSD.org Thu Jul 3 01:24:01 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 01:24:04 2008 Subject: PERFORCE change 144527 for review Message-ID: <200807030124.m631O1om042445@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144527 Change 144527 by julian@julian_trafmon1 on 2008/07/03 01:23:07 IFC@144523 Affected files ... .. //depot/projects/vimage-commit2/src/sys/amd64/amd64/pmap.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/include/pmap.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/include/vmparam.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/boot/i386/boot2/boot2.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/compat/pecoff/imgact_pecoff.c#2 delete .. //depot/projects/vimage-commit2/src/sys/compat/pecoff/imgact_pecoff.h#2 delete .. //depot/projects/vimage-commit2/src/sys/dev/ce/ceddk.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ce/if_ce.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cp/cpddk.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cp/if_cp.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ctau/ctddk.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ctau/if_ct.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cx/cxddk.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cx/if_cx.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/mii/rgephy.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/mii/rgephyreg.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/mpt/mpt_pci.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/mpt/mpt_user.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/re/if_re.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/sound/pci/atiixp.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/fs/smbfs/smbfs_node.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/geom/virstor/g_virstor.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_alq.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/kern/uipc_socket.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/modules/pecoff/Makefile#2 delete .. //depot/projects/vimage-commit2/src/sys/net/if_bridge.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/udp_usrreq.c#6 integrate .. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_input.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/nfsserver/nfs_syscalls.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/pci/if_rlreg.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/sys/socketvar.h#2 integrate Differences ... ==== //depot/projects/vimage-commit2/src/sys/amd64/amd64/pmap.c#4 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.623 2008/06/21 19:19:09 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.624 2008/07/02 05:41:23 alc Exp $"); /* * Manages physical address maps. @@ -173,7 +173,6 @@ vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */ vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */ -static int nkpt; static int ndmpdp; static vm_paddr_t dmaplimit; vm_offset_t kernel_vm_end; @@ -543,7 +542,6 @@ kernel_pmap->pm_root = NULL; kernel_pmap->pm_active = -1; /* don't allow deactivation */ TAILQ_INIT(&kernel_pmap->pm_pvchunk); - nkpt = NKPT; /* * Reserve some special page table entries/VA space for temporary @@ -650,7 +648,7 @@ * page table pages. */ pd = pmap_pde(kernel_pmap, VM_MIN_KERNEL_ADDRESS); - for (i = 0; i < nkpt; i++) { + for (i = 0; i < NKPT; i++) { if ((pd[i] & (PG_PS | PG_V)) == (PG_PS | PG_V)) continue; mpte = PHYS_TO_VM_PAGE(pd[i] & PG_FRAME); @@ -1708,10 +1706,8 @@ mtx_assert(&kernel_map->system_mtx, MA_OWNED); if (kernel_vm_end == 0) { kernel_vm_end = VM_MIN_KERNEL_ADDRESS; - nkpt = 0; while ((*pmap_pde(kernel_pmap, kernel_vm_end) & PG_V) != 0) { kernel_vm_end = (kernel_vm_end + PAGE_SIZE * NPTEPG) & ~(PAGE_SIZE * NPTEPG - 1); - nkpt++; if (kernel_vm_end - 1 >= kernel_map->max_offset) { kernel_vm_end = kernel_map->max_offset; break; @@ -1725,7 +1721,7 @@ pde = pmap_pde(kernel_pmap, kernel_vm_end); if (pde == NULL) { /* We need a new PDP entry */ - nkpg = vm_page_alloc(NULL, nkpt, + nkpg = vm_page_alloc(NULL, kernel_vm_end >> PDPSHIFT, VM_ALLOC_NOOBJ | VM_ALLOC_SYSTEM | VM_ALLOC_WIRED); if (nkpg == NULL) panic("pmap_growkernel: no memory to grow kernel"); @@ -1749,9 +1745,6 @@ VM_ALLOC_NOOBJ | VM_ALLOC_SYSTEM | VM_ALLOC_WIRED); if (nkpg == NULL) panic("pmap_growkernel: no memory to grow kernel"); - - nkpt++; - pmap_zero_page(nkpg); paddr = VM_PAGE_TO_PHYS(nkpg); newpdir = (pd_entry_t) (paddr | PG_V | PG_RW | PG_A | PG_M); ==== //depot/projects/vimage-commit2/src/sys/amd64/include/pmap.h#3 (text+ko) ==== @@ -39,7 +39,7 @@ * * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.142 2008/06/29 19:13:27 alc Exp $ + * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.143 2008/06/30 02:35:55 alc Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -115,7 +115,7 @@ #endif #define NKPML4E 1 /* number of kernel PML4 slots */ -#define NKPDPE 5 /* number of kernel PDP slots */ +#define NKPDPE howmany(NKPT, NPDEPG)/* number of kernel PDP slots */ #define NUPML4E (NPML4EPG/2) /* number of userland PML4 pages */ #define NUPDPE (NUPML4E*NPDPEPG)/* number of userland PDP pages */ ==== //depot/projects/vimage-commit2/src/sys/amd64/include/vmparam.h#3 (text+ko) ==== @@ -38,7 +38,7 @@ * SUCH DAMAGE. * * from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.52 2008/06/29 19:13:27 alc Exp $ + * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.53 2008/06/30 03:14:39 alc Exp $ */ @@ -148,8 +148,18 @@ /* * Virtual addresses of things. Derived from the page directory and * page table indexes from pmap.h for precision. - * Because of the page that is both a PD and PT, it looks a little - * messy at times, but hey, we'll do anything to save a page :-) + * + * 0x0000000000000000 - 0x00007fffffffffff user map + * 0x0000800000000000 - 0xffff7fffffffffff does not exist (hole) + * 0xffff800000000000 - 0xffff804020100fff recursive page table (512GB slot) + * 0xffff804020101000 - 0xfffffeffffffffff unused + * 0xffffff0000000000 - 0xffffff7fffffffff 512GB direct map mappings + * 0xffffff8000000000 - 0xfffffffe7fffffff unused (506GB) + * 0xfffffffe80000000 - 0xffffffffffffffff 6GB kernel map + * + * Within the kernel map: + * + * 0xffffffff80000000 KERNBASE */ #define VM_MAX_KERNEL_ADDRESS KVADDR(KPML4I, NPDPEPG-1, NPDEPG-1, NPTEPG-1) ==== //depot/projects/vimage-commit2/src/sys/boot/i386/boot2/boot2.c#2 (text+ko) ==== @@ -14,7 +14,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.86 2008/02/28 17:08:05 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.87 2008/07/01 11:18:51 nyan Exp $"); #include #include @@ -472,7 +472,7 @@ dsk.slice = WHOLE_DISK_SLICE; if (arg[1] == ',') { dsk.slice = *arg - '0' + 1; - if (dsk.slice > NDOSPART) + if (dsk.slice > NDOSPART + 1) return -1; arg += 2; } ==== //depot/projects/vimage-commit2/src/sys/dev/ce/ceddk.h#2 (text+ko) ==== @@ -13,7 +13,7 @@ * works or modified versions. * * $Cronyx: ceddk.h,v 1.2.6.1 2005/11/09 13:01:39 rik Exp $ - * $FreeBSD: src/sys/dev/ce/ceddk.h,v 1.1 2006/01/27 09:02:09 rik Exp $ + * $FreeBSD: src/sys/dev/ce/ceddk.h,v 1.2 2008/06/30 21:18:27 rik Exp $ */ #define TAU32_UserContext_Add void *sys; @@ -72,6 +72,7 @@ TAU32_UserRequest *rx_queue; TAU32_UserRequest *tx_queue; unsigned char debug; + unsigned char debug_shadow; void (*transmit) (struct _ce_chan_t*, void*, int); void (*receive) (struct _ce_chan_t*, unsigned char*, int); void (*error) (struct _ce_chan_t*, int); ==== //depot/projects/vimage-commit2/src/sys/dev/ce/if_ce.c#2 (text+ko) ==== @@ -16,7 +16,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ce/if_ce.c,v 1.9 2007/07/27 11:59:56 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ce/if_ce.c,v 1.11 2008/07/01 14:41:03 dds Exp $"); #include @@ -962,8 +962,8 @@ if (! (ifp->if_flags & IFF_DEBUG)) d->chan->debug = 0; - else if (! d->chan->debug) - d->chan->debug = 1; + else + d->chan->debug = d->chan->debug_shadow; switch (cmd) { default: CE_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0; @@ -1333,7 +1333,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1374,7 +1374,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1404,7 +1404,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1424,7 +1424,7 @@ CE_DEBUG2 (d, ("ioctl: setcfg\n")); #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1526,7 +1526,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1562,7 +1562,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1590,7 +1590,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1614,19 +1614,24 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); #endif if (error) return error; +#ifndef NETGRAPH + /* + * The debug_shadow is always greater than zero for logic + * simplicity. For switching debug off the IFF_DEBUG is + * responsible. + */ + d->chan->debug_shadow = (*(int*)data) ? (*(int*)data) : 1; + if (d->ifp->if_flags & IFF_DEBUG) + d->chan->debug = d->chan->debug_shadow; +#else d->chan->debug = *(int*)data; -#ifndef NETGRAPH - if (d->chan->debug) - d->ifp->if_flags |= IFF_DEBUG; - else - d->ifp->if_flags &= ~IFF_DEBUG; #endif return 0; @@ -1642,7 +1647,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1668,7 +1673,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1698,7 +1703,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1722,7 +1727,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1750,7 +1755,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1776,7 +1781,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1804,7 +1809,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1832,7 +1837,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1860,7 +1865,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1893,7 +1898,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1920,7 +1925,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1939,7 +1944,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); @@ -1977,7 +1982,7 @@ /* Only for superuser! */ #if __FreeBSD_version < 500000 error = suser (p); -#elsif __FreeBSD_version < 700000 +#elif __FreeBSD_version < 700000 error = suser (td); #else error = priv_check (td, PRIV_DRIVER); ==== //depot/projects/vimage-commit2/src/sys/dev/cp/cpddk.h#2 (text+ko) ==== @@ -16,7 +16,7 @@ * works or modified versions. * * $Cronyx: cpddk.h,v 1.8.4.20 2004/12/06 16:21:06 rik Exp $ - * $FreeBSD: src/sys/dev/cp/cpddk.h,v 1.4 2005/01/06 01:42:32 imp Exp $ + * $FreeBSD: src/sys/dev/cp/cpddk.h,v 1.5 2008/06/30 21:18:27 rik Exp $ */ #define NBRD 6 /* the maximum number of installed boards */ #define NCHAN 4 /* the number of channels on the board */ @@ -205,6 +205,7 @@ void *tag [NTBUF]; /* system dependent data per buffer */ void *sys; /* system dependent data per channel */ unsigned char debug; /* debug level, 0..2 */ + unsigned char debug_shadow; /* debug shadow */ void (*transmit) (struct _cp_chan_t *c, void *tag, int len); void (*receive) (struct _cp_chan_t *c, unsigned char *data, int len); ==== //depot/projects/vimage-commit2/src/sys/dev/cp/if_cp.c#2 (text+ko) ==== @@ -22,7 +22,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.34 2007/07/27 11:59:56 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.35 2008/06/30 21:18:27 rik Exp $"); #include #include @@ -733,8 +733,8 @@ if (! (ifp->if_flags & IFF_DEBUG)) d->chan->debug = 0; - else if (! d->chan->debug) - d->chan->debug = 1; + else + d->chan->debug = d->chan->debug_shadow; switch (cmd) { default: CP_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0; @@ -1349,12 +1349,17 @@ error = priv_check (td, PRIV_DRIVER); if (error) return error; +#ifndef NETGRAPH + /* + * The debug_shadow is always greater than zero for logic + * simplicity. For switching debug off the IFF_DEBUG is + * responsible. + */ + d->chan->debug_shadow = (*(int*)data) ? (*(int*)data) : 1; + if (d->ifp->if_flags & IFF_DEBUG) + d->chan->debug = d->chan->debug_shadow; +#else d->chan->debug = *(int*)data; -#ifndef NETGRAPH - if (d->chan->debug) - d->ifp->if_flags |= IFF_DEBUG; - else - d->ifp->if_flags &= ~IFF_DEBUG; #endif return 0; ==== //depot/projects/vimage-commit2/src/sys/dev/ctau/ctddk.h#2 (text+ko) ==== @@ -12,7 +12,7 @@ * all derivative works or modified versions. * * Cronyx Id: ctddk.h,v 1.1.2.3 2003/12/11 17:33:44 rik Exp $ - * $FreeBSD: src/sys/dev/ctau/ctddk.h,v 1.2 2005/01/06 01:42:33 imp Exp $ + * $FreeBSD: src/sys/dev/ctau/ctddk.h,v 1.3 2008/06/30 21:18:27 rik Exp $ */ #define NBRD 3 /* the maximum number of installed boards */ #define NPORT 32 /* the number of i/o ports per board */ @@ -412,6 +412,7 @@ void *attach [NBUF]; /* system dependent data per buffer */ void *sys; /* system dependent data per channel */ int debug; + int debug_shadow; int e1_first_int; unsigned char *sccrx, *scctx; /* pointers to SCC rx and tx buffers */ ==== //depot/projects/vimage-commit2/src/sys/dev/ctau/if_ct.c#2 (text+ko) ==== @@ -22,7 +22,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ctau/if_ct.c,v 1.35 2007/10/12 06:03:43 kevlo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ctau/if_ct.c,v 1.36 2008/06/30 21:18:27 rik Exp $"); #include #include @@ -949,8 +949,8 @@ if (! (ifp->if_flags & IFF_DEBUG)) d->chan->debug = 0; - else if (! d->chan->debug) - d->chan->debug = 1; + else + d->chan->debug = d->chan->debug_shadow; switch (cmd) { default: CT_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0; @@ -1529,12 +1529,17 @@ error = priv_check (td, PRIV_DRIVER); if (error) return error; +#ifndef NETGRAPH + /* + * The debug_shadow is always greater than zero for logic + * simplicity. For switching debug off the IFF_DEBUG is + * responsible. + */ + c->debug_shadow = (*(int*)data) ? (*(int*)data) : 1; + if (d->ifp->if_flags & IFF_DEBUG) + c->debug = c->debug_shadow; +#else c->debug = *(int*)data; -#ifndef NETGRAPH - if (d->chan->debug) - d->ifp->if_flags |= IFF_DEBUG; - else - d->ifp->if_flags &= (~IFF_DEBUG); #endif return 0; ==== //depot/projects/vimage-commit2/src/sys/dev/cx/cxddk.h#2 (text+ko) ==== @@ -15,7 +15,7 @@ * all derivative works or modified versions. * * Cronyx Id: cxddk.h,v 1.1.2.1 2003/11/12 17:13:41 rik Exp $ - * $FreeBSD: src/sys/dev/cx/cxddk.h,v 1.2 2005/01/06 01:42:34 imp Exp $ + * $FreeBSD: src/sys/dev/cx/cxddk.h,v 1.3 2008/06/30 21:18:27 rik Exp $ */ #ifndef port_t @@ -337,6 +337,7 @@ void *sys; int debug; + int debug_shadow; void *attach [2]; char *received_data; int received_len; ==== //depot/projects/vimage-commit2/src/sys/dev/cx/if_cx.c#2 (text+ko) ==== @@ -23,7 +23,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.58 2007/10/12 06:03:43 kevlo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.59 2008/06/30 21:18:27 rik Exp $"); #include @@ -1102,10 +1102,14 @@ if (error) return error; + s = splhigh (); + CX_LOCK (bd); if (! (ifp->if_flags & IFF_DEBUG)) d->chan->debug = 0; - else if (! d->chan->debug) - d->chan->debug = 1; + else + d->chan->debug = d->chan->debug_shadow; + CX_UNLOCK (bd); + splx (s); switch (cmd) { default: CX_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0; @@ -1745,6 +1749,8 @@ cx_enable_receive (c, 0); cx_enable_transmit (c, 0); } else if (c->mode == M_ASYNC && *(int*)data == SERIAL_HDLC) { + if (d->ifp->if_flags & IFF_DEBUG) + c->debug = c->debug_shadow; cx_set_mode (c, M_HDLC); cx_enable_receive (c, 1); cx_enable_transmit (c, 1); @@ -1913,15 +1919,24 @@ return error; s = splhigh (); CX_LOCK (bd); +#ifndef NETGRAPH + if (c->mode == M_ASYNC) { + c->debug = *(int*)data; + } else { + /* + * The debug_shadow is always greater than zero for + * logic simplicity. For switching debug off the + * IFF_DEBUG is responsible (for !M_ASYNC mode). + */ + c->debug_shadow = (*(int*)data) ? (*(int*)data) : 1; + if (d->ifp->if_flags & IFF_DEBUG) + c->debug = c->debug_shadow; + } +#else c->debug = *(int*)data; +#endif CX_UNLOCK (bd); splx (s); -#ifndef NETGRAPH - if (d->chan->debug) - d->ifp->if_flags |= IFF_DEBUG; - else - d->ifp->if_flags &= (~IFF_DEBUG); -#endif return 0; } ==== //depot/projects/vimage-commit2/src/sys/dev/mii/rgephy.c#2 (text+ko) ==== @@ -31,10 +31,10 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mii/rgephy.c,v 1.19 2008/03/05 01:15:10 yongari Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mii/rgephy.c,v 1.20 2008/07/02 08:10:18 yongari Exp $"); /* - * Driver for the RealTek 8169S/8110S/8211B internal 10/100/1000 PHY. + * Driver for the RealTek 8169S/8110S/8211B/8211C internal 10/100/1000 PHY. */ #include @@ -531,6 +531,18 @@ static void rgephy_reset(struct mii_softc *sc) { + struct rgephy_softc *rsc; + uint16_t ssr; + + rsc = (struct rgephy_softc *)sc; + if (rsc->mii_revision == 3) { + /* RTL8211C(L) */ + ssr = PHY_READ(sc, RGEPHY_MII_SSR); + if ((ssr & RGEPHY_SSR_ALDPS) != 0) { + ssr &= ~RGEPHY_SSR_ALDPS; + PHY_WRITE(sc, RGEPHY_MII_SSR, ssr); + } + } mii_phy_reset(sc); DELAY(1000); ==== //depot/projects/vimage-commit2/src/sys/dev/mii/rgephyreg.h#2 (text+ko) ==== @@ -29,7 +29,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/mii/rgephyreg.h,v 1.3 2007/10/29 02:17:07 yongari Exp $ + * $FreeBSD: src/sys/dev/mii/rgephyreg.h,v 1.4 2008/07/02 08:10:18 yongari Exp $ */ #ifndef _DEV_MII_RGEPHYREG_H_ @@ -137,7 +137,7 @@ #define RGEPHY_EXTSTS_T_FD_CAP 0x2000 /* 1000base-T FD capable */ #define RGEPHY_EXTSTS_T_HD_CAP 0x1000 /* 1000base-T HD capable */ -/* RTL8211B(L) */ +/* RTL8211B(L)/RTL8211C(L) */ #define RGEPHY_MII_SSR 0x11 /* PHY Specific status register */ #define RGEPHY_SSR_S1000 0x8000 /* 1000Mbps */ #define RGEPHY_SSR_S100 0x4000 /* 100Mbps */ @@ -148,6 +148,7 @@ #define RGEPHY_SSR_SPD_DPLX_RESOLVED 0x0800 /* speed/duplex resolved */ #define RGEPHY_SSR_LINK 0x0400 /* link up */ #define RGEPHY_SSR_MDI_XOVER 0x0040 /* MDI crossover */ +#define RGEPHY_SSR_ALDPS 0x0008 /* RTL8211C(L) only */ #define RGEPHY_SSR_JABBER 0x0001 /* Jabber */ #endif /* _DEV_RGEPHY_MIIREG_H_ */ ==== //depot/projects/vimage-commit2/src/sys/dev/mpt/mpt_pci.c#2 (text+ko) ==== @@ -99,7 +99,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_pci.c,v 1.52 2008/05/10 01:27:23 delphij Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_pci.c,v 1.53 2008/07/01 19:44:38 jhb Exp $"); #include #include @@ -688,7 +688,7 @@ mpt_free_bus_resources(mpt); mpt_raid_free_mem(mpt); if (mpt->eh != NULL) { - EVENTHANDLER_DEREGISTER(shutdown_final, mpt->eh); + EVENTHANDLER_DEREGISTER(shutdown_post_sync, mpt->eh); } } return(0); ==== //depot/projects/vimage-commit2/src/sys/dev/mpt/mpt_user.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_user.c,v 1.1 2008/05/06 20:49:52 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_user.c,v 1.2 2008/07/01 19:48:15 jhb Exp $"); #include #include @@ -47,6 +47,13 @@ uint16_t action_status; }; +struct mpt_page_memory { + bus_dma_tag_t tag; + bus_dmamap_t map; + bus_addr_t paddr; + void *vaddr; +}; + static mpt_probe_handler_t mpt_user_probe; static mpt_attach_handler_t mpt_user_attach; static mpt_enable_handler_t mpt_user_enable; @@ -180,6 +187,56 @@ } static int +mpt_alloc_buffer(struct mpt_softc *mpt, struct mpt_page_memory *page_mem, + size_t len) +{ + struct mpt_map_info mi; + int error; + + page_mem->vaddr = NULL; + + /* Limit requests to 16M. */ + if (len > 16 * 1024 * 1024) + return (ENOSPC); + error = mpt_dma_tag_create(mpt, mpt->parent_dmat, 1, 0, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, + len, 1, len, 0, &page_mem->tag); + if (error) + return (error); + error = bus_dmamem_alloc(page_mem->tag, &page_mem->vaddr, + BUS_DMA_NOWAIT, &page_mem->map); + if (error) { + bus_dma_tag_destroy(page_mem->tag); + return (error); + } + mi.mpt = mpt; + error = bus_dmamap_load(page_mem->tag, page_mem->map, page_mem->vaddr, + len, mpt_map_rquest, &mi, BUS_DMA_NOWAIT); + if (error == 0) + error = mi.error; + if (error) { + bus_dmamem_free(page_mem->tag, page_mem->vaddr, page_mem->map); + bus_dma_tag_destroy(page_mem->tag); + page_mem->vaddr = NULL; + return (error); + } + page_mem->paddr = mi.phys; + return (0); +} + +static void +mpt_free_buffer(struct mpt_page_memory *page_mem) +{ + + if (page_mem->vaddr == NULL) + return; + bus_dmamap_unload(page_mem->tag, page_mem->map); + bus_dmamem_free(page_mem->tag, page_mem->vaddr, page_mem->map); + bus_dma_tag_destroy(page_mem->tag); + page_mem->vaddr = NULL; +} + +static int mpt_user_read_cfg_header(struct mpt_softc *mpt, struct mpt_cfg_page_req *page_req) { @@ -225,7 +282,7 @@ static int mpt_user_read_cfg_page(struct mpt_softc *mpt, struct mpt_cfg_page_req *page_req, - void *mpt_page) + struct mpt_page_memory *mpt_page) { CONFIG_PAGE_HEADER *hdr; request_t *req; @@ -238,15 +295,14 @@ return (ENOMEM); } - hdr = mpt_page; + hdr = mpt_page->vaddr; params.Action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; params.PageVersion = hdr->PageVersion; params.PageLength = hdr->PageLength; params.PageNumber = hdr->PageNumber; params.PageType = hdr->PageType & MPI_CONFIG_PAGETYPE_MASK; params.PageAddress = page_req->page_address; - error = mpt_issue_cfg_req(mpt, req, ¶ms, - req->req_pbuf + MPT_RQSL(mpt), + error = mpt_issue_cfg_req(mpt, req, ¶ms, mpt_page->paddr, page_req->len, TRUE, 5000); if (error != 0) { mpt_prt(mpt, "mpt_user_read_cfg_page timed out\n"); @@ -254,12 +310,9 @@ } page_req->ioc_status = req->IOCStatus; - if ((req->IOCStatus & MPI_IOCSTATUS_MASK) == MPI_IOCSTATUS_SUCCESS) { - bus_dmamap_sync(mpt->request_dmat, mpt->request_dmap, + if ((req->IOCStatus & MPI_IOCSTATUS_MASK) == MPI_IOCSTATUS_SUCCESS) + bus_dmamap_sync(mpt_page->tag, mpt_page->map, BUS_DMASYNC_POSTREAD); - memcpy(mpt_page, ((uint8_t *)req->req_vbuf)+MPT_RQSL(mpt), - page_req->len); - } mpt_free_request(mpt, req); return (0); } @@ -315,7 +368,7 @@ static int mpt_user_read_extcfg_page(struct mpt_softc *mpt, - struct mpt_ext_cfg_page_req *ext_page_req, void *mpt_page) + struct mpt_ext_cfg_page_req *ext_page_req, struct mpt_page_memory *mpt_page) { CONFIG_EXTENDED_PAGE_HEADER *hdr; request_t *req; @@ -328,7 +381,7 @@ return (ENOMEM); } - hdr = mpt_page; + hdr = mpt_page->vaddr; params.Action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; params.PageVersion = hdr->PageVersion; params.PageLength = 0; @@ -337,8 +390,7 @@ params.PageAddress = ext_page_req->page_address; params.ExtPageType = hdr->ExtPageType; params.ExtPageLength = hdr->ExtPageLength; - error = mpt_issue_cfg_req(mpt, req, ¶ms, - req->req_pbuf + MPT_RQSL(mpt), + error = mpt_issue_cfg_req(mpt, req, ¶ms, mpt_page->paddr, ext_page_req->len, TRUE, 5000); if (error != 0) { mpt_prt(mpt, "mpt_user_read_extcfg_page timed out\n"); @@ -346,19 +398,16 @@ } ext_page_req->ioc_status = req->IOCStatus; - if ((req->IOCStatus & MPI_IOCSTATUS_MASK) == MPI_IOCSTATUS_SUCCESS) { - bus_dmamap_sync(mpt->request_dmat, mpt->request_dmap, + if ((req->IOCStatus & MPI_IOCSTATUS_MASK) == MPI_IOCSTATUS_SUCCESS) + bus_dmamap_sync(mpt_page->tag, mpt_page->map, BUS_DMASYNC_POSTREAD); - memcpy(mpt_page, ((uint8_t *)req->req_vbuf)+MPT_RQSL(mpt), - ext_page_req->len); - } mpt_free_request(mpt, req); return (0); } static int mpt_user_write_cfg_page(struct mpt_softc *mpt, - struct mpt_cfg_page_req *page_req, void *mpt_page) + struct mpt_cfg_page_req *page_req, struct mpt_page_memory *mpt_page) { CONFIG_PAGE_HEADER *hdr; request_t *req; @@ -366,7 +415,7 @@ u_int hdr_attr; int error; - hdr = mpt_page; + hdr = mpt_page->vaddr; hdr_attr = hdr->PageType & MPI_CONFIG_PAGEATTR_MASK; if (hdr_attr != MPI_CONFIG_PAGEATTR_CHANGEABLE && hdr_attr != MPI_CONFIG_PAGEATTR_PERSISTENT) { @@ -386,8 +435,7 @@ if (req == NULL) return (ENOMEM); - memcpy(((caddr_t)req->req_vbuf) + MPT_RQSL(mpt), mpt_page, - page_req->len); + bus_dmamap_sync(mpt_page->tag, mpt_page->map, BUS_DMASYNC_PREWRITE); /* * There isn't any point in restoring stripped out attributes @@ -406,8 +454,7 @@ #else params.PageType = hdr->PageType; #endif - error = mpt_issue_cfg_req(mpt, req, ¶ms, - req->req_pbuf + MPT_RQSL(mpt), + error = mpt_issue_cfg_req(mpt, req, ¶ms, mpt_page->paddr, page_req->len, TRUE, 5000); if (error != 0) { mpt_prt(mpt, "mpt_write_cfg_page timed out\n"); @@ -466,7 +513,7 @@ */ static int mpt_user_raid_action(struct mpt_softc *mpt, struct mpt_raid_action *raid_act, - void *buf) + struct mpt_page_memory *mpt_page) { request_t *req; struct mpt_user_raid_action_result *res; @@ -486,12 +533,10 @@ rap->VolumeBus = raid_act->volume_bus; rap->PhysDiskNum = raid_act->phys_disk_num; se = (SGE_SIMPLE32 *)&rap->ActionDataSGE; - if (buf != 0 && raid_act->len != 0) { - memcpy(((caddr_t)req->req_vbuf) + MPT_RQSL(mpt) + - sizeof(struct mpt_user_raid_action_result), buf, - raid_act->len); - se->Address = req->req_pbuf + MPT_RQSL(mpt) + - sizeof(struct mpt_user_raid_action_result); + if (mpt_page->vaddr != NULL && raid_act->len != 0) { + bus_dmamap_sync(mpt_page->tag, mpt_page->map, + BUS_DMASYNC_PREWRITE); + se->Address = mpt_page->paddr; MPI_pSGE_SET_LENGTH(se, raid_act->len); MPI_pSGE_SET_FLAGS(se, (MPI_SGE_FLAGS_SIMPLE_ELEMENT | MPI_SGE_FLAGS_LAST_ELEMENT | MPI_SGE_FLAGS_END_OF_BUFFER | @@ -526,9 +571,9 @@ raid_act->action_status = res->action_status; bcopy(res->action_data, raid_act->action_data, sizeof(res->action_data)); - if (buf != NULL) - memcpy(buf, ((uint8_t *)req->req_vbuf) + MPT_RQSL(mpt) + - sizeof(struct mpt_user_raid_action_result), raid_act->len); + if (mpt_page->vaddr != NULL) + bus_dmamap_sync(mpt_page->tag, mpt_page->map, + BUS_DMASYNC_POSTREAD); mpt_free_request(mpt, req); return (0); } @@ -545,6 +590,7 @@ struct mpt_cfg_page_req *page_req; struct mpt_ext_cfg_page_req *ext_page_req; struct mpt_raid_action *raid_act; + struct mpt_page_memory mpt_page; #ifdef __amd64__ struct mpt_cfg_page_req32 *page_req32; struct mpt_cfg_page_req page_req_swab; @@ -553,14 +599,13 @@ struct mpt_raid_action32 *raid_act32; struct mpt_raid_action raid_act_swab; #endif - void *mpt_page; int error; >>> TRUNCATED FOR MAIL (1000 lines) <<< From julian at FreeBSD.org Thu Jul 3 01:28:06 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 01:28:10 2008 Subject: PERFORCE change 144528 for review Message-ID: <200807030128.m631S5Pj042841@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144528 Change 144528 by julian@julian_trafmon1 on 2008/07/03 01:27:39 IF-commit2@144527 Affected files ... .. //depot/projects/vimage-commit3/src/sys/amd64/amd64/bpf_jit_machdep.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/amd64/bpf_jit_machdep.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/amd64/mem.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/amd64/minidump_machdep.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/amd64/pmap.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/amd64/trap.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/conf/GENERIC#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/include/iodev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/include/memdev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/include/pmap.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/include/pmc_mdep.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/include/stack.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/include/vmparam.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/arm/include/memdev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/Makefile.inc#1 branch .. //depot/projects/vimage-commit3/src/sys/boot/arm/Makefile.inc#1 branch .. //depot/projects/vimage-commit3/src/sys/boot/arm/at91/Makefile.inc#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/efi/Makefile.inc#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/i386/Makefile.inc#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/i386/boot2/boot2.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/i386/loader/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/ia64/Makefile.inc#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/ia64/common/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/ia64/efi/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/ia64/ski/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/ofw/Makefile.inc#1 branch .. //depot/projects/vimage-commit3/src/sys/boot/pc98/Makefile.inc#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/pc98/boot2/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/pc98/loader/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/powerpc/Makefile.inc#1 branch .. //depot/projects/vimage-commit3/src/sys/boot/powerpc/ofw/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/sparc64/Makefile.inc#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/sparc64/loader/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/uboot/Makefile.inc#1 branch .. //depot/projects/vimage-commit3/src/sys/compat/pecoff/imgact_pecoff.c#2 delete .. //depot/projects/vimage-commit3/src/sys/compat/pecoff/imgact_pecoff.h#2 delete .. //depot/projects/vimage-commit3/src/sys/conf/NOTES#2 integrate .. //depot/projects/vimage-commit3/src/sys/conf/files#2 integrate .. //depot/projects/vimage-commit3/src/sys/conf/kern.mk#2 integrate .. //depot/projects/vimage-commit3/src/sys/conf/kern.pre.mk#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/aac/aac.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/aac/aac_pci.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/acpi_support/acpi_asus.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/agp/agp_i810.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ce/ceddk.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ce/if_ce.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cp/cpddk.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cp/if_cp.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ctau/ctddk.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ctau/if_ct.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cx/cxddk.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cx/if_cx.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/et/if_et.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/et/if_etreg.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/et/if_etvar.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/fe/if_fe.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/fe/if_fe_cbus.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/fe/if_fe_isa.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/fe/if_fe_pccard.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/fe/if_fevar.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/gem/if_gem.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/io/iodev.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/mfi/mfi.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/mii/miidevs#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/mii/rgephy.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/mii/rgephyreg.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/mii/truephy.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/mii/truephyreg.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/mpt/mpt_pci.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/mpt/mpt_user.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/re/if_re.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/sound/pci/atiixp.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/usbdevs#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/uscanner.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/wpi/if_wpi.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/fs/devfs/devfs_rule.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/fs/smbfs/smbfs_node.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/geom/journal/g_journal.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/geom/virstor/g_virstor.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/i386/conf/GENERIC#2 integrate .. //depot/projects/vimage-commit3/src/sys/i386/i386/bpf_jit_machdep.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/i386/i386/bpf_jit_machdep.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/i386/include/iodev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/i386/include/memdev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/ia64/include/memdev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_alq.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_cpuset.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_descrip.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_intr.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_jail.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_lockf.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_umtx.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_xxx.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/kern/link_elf_obj.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/stack_protector.c#1 branch .. //depot/projects/vimage-commit3/src/sys/kern/subr_bus.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/sysv_sem.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/uipc_sem.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/uipc_shm.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/uipc_socket.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/vfs_aio.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/vfs_syscalls.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/mips/include/iodev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/mips/include/memdev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/ath_rate_amrr/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/et/Makefile#1 branch .. //depot/projects/vimage-commit3/src/sys/modules/mii/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/nfslockd/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/pecoff/Makefile#2 delete .. //depot/projects/vimage-commit3/src/sys/modules/ralfw/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/sem/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/net/if.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/net/if_bridge.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/net/if_gre.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/net/if_gre.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/net/if_loop.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/net/if_var.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/netgraph/netgraph.h#4 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/in.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/libalias/alias.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/libalias/alias_db.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/libalias/alias_ftp.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/udp_usrreq.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/netinet6/in6_rmx.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/netinet6/ip6_input.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet6/ip6_ipsec.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netipsec/key.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/nfsclient/nfs.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/nfsclient/nfs_node.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/nfsclient/nfs_vfsops.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/nfsclient/nfs_vnops.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/nfsclient/nfsmount.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/nfsclient/nfsnode.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/nfsserver/nfs_syscalls.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/nlm/nlm.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/nlm/nlm_advlock.c#1 branch .. //depot/projects/vimage-commit3/src/sys/nlm/nlm_prot.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/nlm/nlm_prot_clnt.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/nlm/nlm_prot_impl.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/nlm/nlm_prot_server.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/pci/if_rlreg.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/pci/viapm.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/powerpc/include/memdev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/auth_unix.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/authunix_prot.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/clnt.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/clnt_dg.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/clnt_rc.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/clnt_vc.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/rpcb_clnt.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/svc_vc.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac/mac_framework.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac/mac_policy.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac/mac_posix_sem.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac_biba/mac_biba.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac_mls/mac_mls.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac_stub/mac_stub.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac_test/mac_test.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/sparc64/include/in_cksum.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sparc64/include/memdev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sun4v/include/in_cksum.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sun4v/include/memdev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/bus.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/fcntl.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/file.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/jail.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/ksem.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/lockf.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/param.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/priv.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/semaphore.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/socketvar.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/umtx.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/user.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/vm/vm_kern.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/vm/vm_map.c#2 integrate Differences ... ==== //depot/projects/vimage-commit3/src/sys/amd64/amd64/bpf_jit_machdep.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.c,v 1.4 2006/01/03 20:26:02 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.c,v 1.6 2008/06/24 20:12:12 jkim Exp $"); #include "opt_bpf.h" @@ -132,11 +132,11 @@ /* create the procedure header */ PUSH(RBP); - MOVrq(RBP, RSP); - MOVoqd(RBP, -8, ESI); - MOVoqd(RBP, -12, EDX); + MOVrq(RSP, RBP); + MOVdoq(ESI, -8, RBP); + MOVdoq(EDX, -12, RBP); PUSH(RBX); - MOVrq(RBX, RDI); + MOVrq(RDI, RBX); for (i = 0; i < nins; i++) { stream.bpf_pc++; @@ -146,7 +146,7 @@ return NULL; case BPF_RET|BPF_K: - MOVid(EAX, ins->k); + MOVid(ins->k, EAX); POP(RBX); LEAVE_RET(); break; @@ -157,119 +157,119 @@ break; case BPF_LD|BPF_W|BPF_ABS: - MOVid(ECX, ins->k); - MOVrd(ESI, ECX); - ADDib(ECX, sizeof(int)); - CMPodd(ECX, RBP, -12); + MOVid(ins->k, ECX); + MOVrd(ECX, ESI); + ADDib(sizeof(int), ECX); + CMPoqd(-12, RBP, ECX); JLEb(5); - ZERO_EAX(); + ZEROrd(EAX); POP(RBX); LEAVE_RET(); - MOVobd(EAX, RBX, RSI); + MOVobd(RBX, RSI, EAX); BSWAP(EAX); break; case BPF_LD|BPF_H|BPF_ABS: - ZERO_EAX(); - MOVid(ECX, ins->k); - MOVrd(ESI, ECX); - ADDib(ECX, sizeof(short)); - CMPodd(ECX, RBP, -12); + ZEROrd(EAX); + MOVid(ins->k, ECX); + MOVrd(ECX, ESI); + ADDib(sizeof(short), ECX); + CMPoqd(-12, RBP, ECX); JLEb(3); POP(RBX); LEAVE_RET(); - MOVobw(AX, RBX, RSI); + MOVobw(RBX, RSI, AX); SWAP_AX(); break; case BPF_LD|BPF_B|BPF_ABS: - ZERO_EAX(); - MOVid(ECX, ins->k); - CMPodd(ECX, RBP, -12); + ZEROrd(EAX); + MOVid(ins->k, ECX); + CMPoqd(-12, RBP, ECX); JLEb(3); POP(RBX); LEAVE_RET(); - MOVobb(AL, RBX, RCX); + MOVobb(RBX, RCX, AL); break; case BPF_LD|BPF_W|BPF_LEN: - MOVodd(EAX, RBP, -8); + MOVoqd(-8, RBP, EAX); break; case BPF_LDX|BPF_W|BPF_LEN: - MOVodd(EDX, RBP, -8); + MOVoqd(-8, RBP, EDX); break; case BPF_LD|BPF_W|BPF_IND: - MOVid(ECX, ins->k); - ADDrd(ECX, EDX); - MOVrd(ESI, ECX); - ADDib(ECX, sizeof(int)); - CMPodd(ECX, RBP, -12); + MOVid(ins->k, ECX); + ADDrd(EDX, ECX); + MOVrd(ECX, ESI); + ADDib(sizeof(int), ECX); + CMPoqd(-12, RBP, ECX); JLEb(5); - ZERO_EAX(); + ZEROrd(EAX); POP(RBX); LEAVE_RET(); - MOVobd(EAX, RBX, RSI); + MOVobd(RBX, RSI, EAX); BSWAP(EAX); break; case BPF_LD|BPF_H|BPF_IND: - ZERO_EAX(); - MOVid(ECX, ins->k); - ADDrd(ECX, EDX); - MOVrd(ESI, ECX); - ADDib(ECX, sizeof(short)); - CMPodd(ECX, RBP, -12); + ZEROrd(EAX); + MOVid(ins->k, ECX); + ADDrd(EDX, ECX); + MOVrd(ECX, ESI); + ADDib(sizeof(short), ECX); + CMPoqd(-12, RBP, ECX); JLEb(3); POP(RBX); LEAVE_RET(); - MOVobw(AX, RBX, RSI); + MOVobw(RBX, RSI, AX); SWAP_AX(); break; case BPF_LD|BPF_B|BPF_IND: - ZERO_EAX(); - MOVid(ECX, ins->k); - ADDrd(ECX, EDX); - CMPodd(ECX, RBP, -12); + ZEROrd(EAX); + MOVid(ins->k, ECX); + ADDrd(EDX, ECX); + CMPoqd(-12, RBP, ECX); JLEb(3); POP(RBX); LEAVE_RET(); - MOVobb(AL, RBX, RCX); + MOVobb(RBX, RCX, AL); break; case BPF_LDX|BPF_MSH|BPF_B: - MOVid(ECX, ins->k); - CMPodd(ECX, RBP, -12); + MOVid(ins->k, ECX); + CMPoqd(-12, RBP, ECX); JLEb(5); - ZERO_EAX(); + ZEROrd(EAX); POP(RBX); LEAVE_RET(); - ZERO_EDX(); - MOVobb(DL, RBX, RCX); - ANDib(DL, 0xf); - SHLib(EDX, 2); + ZEROrd(EDX); + MOVobb(RBX, RCX, DL); + ANDib(0xf, DL); + SHLib(2, EDX); break; case BPF_LD|BPF_IMM: - MOVid(EAX, ins->k); + MOVid(ins->k, EAX); break; case BPF_LDX|BPF_IMM: - MOVid(EDX, ins->k); + MOVid(ins->k, EDX); break; case BPF_LD|BPF_MEM: - MOViq(RCX, (uintptr_t)mem); - MOVid(ESI, ins->k * 4); - MOVobd(EAX, RCX, RSI); + MOViq((uintptr_t)mem, RCX); + MOVid(ins->k * 4, ESI); + MOVobd(RCX, RSI, EAX); break; case BPF_LDX|BPF_MEM: - MOViq(RCX, (uintptr_t)mem); - MOVid(ESI, ins->k * 4); - MOVobd(EDX, RCX, RSI); + MOViq((uintptr_t)mem, RCX); + MOVid(ins->k * 4, ESI); + MOVobd(RCX, RSI, EDX); break; case BPF_ST: @@ -278,15 +278,15 @@ * be optimized if the previous instruction * was already of this type */ - MOViq(RCX, (uintptr_t)mem); - MOVid(ESI, ins->k * 4); - MOVomd(RCX, RSI, EAX); + MOViq((uintptr_t)mem, RCX); + MOVid(ins->k * 4, ESI); + MOVomd(EAX, RCX, RSI); break; case BPF_STX: - MOViq(RCX, (uintptr_t)mem); - MOVid(ESI, ins->k * 4); - MOVomd(RCX, RSI, EDX); + MOViq((uintptr_t)mem, RCX); + MOVid(ins->k * 4, ESI); + MOVomd(EDX, RCX, RSI); break; case BPF_JMP|BPF_JA: @@ -295,7 +295,7 @@ break; case BPF_JMP|BPF_JGT|BPF_K: - CMPid(EAX, ins->k); + CMPid(ins->k, EAX); /* 5 is the size of the following JMP */ JG(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5 ); @@ -304,7 +304,7 @@ break; case BPF_JMP|BPF_JGE|BPF_K: - CMPid(EAX, ins->k); + CMPid(ins->k, EAX); JGE(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -312,7 +312,7 @@ break; case BPF_JMP|BPF_JEQ|BPF_K: - CMPid(EAX, ins->k); + CMPid(ins->k, EAX); JE(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -320,8 +320,8 @@ break; case BPF_JMP|BPF_JSET|BPF_K: - MOVrd(ECX, EAX); - ANDid(ECX, ins->k); + MOVrd(EAX, ECX); + ANDid(ins->k, ECX); JE(stream.refs[stream.bpf_pc + ins->jf] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jt] - @@ -329,7 +329,7 @@ break; case BPF_JMP|BPF_JGT|BPF_X: - CMPrd(EAX, EDX); + CMPrd(EDX, EAX); JA(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -337,7 +337,7 @@ break; case BPF_JMP|BPF_JGE|BPF_X: - CMPrd(EAX, EDX); + CMPrd(EDX, EAX); JAE(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -345,7 +345,7 @@ break; case BPF_JMP|BPF_JEQ|BPF_X: - CMPrd(EAX, EDX); + CMPrd(EDX, EAX); JE(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -353,8 +353,8 @@ break; case BPF_JMP|BPF_JSET|BPF_X: - MOVrd(ECX, EAX); - ANDrd(ECX, EDX); + MOVrd(EAX, ECX); + ANDrd(EDX, ECX); JE(stream.refs[stream.bpf_pc + ins->jf] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jt] - @@ -362,46 +362,46 @@ break; case BPF_ALU|BPF_ADD|BPF_X: - ADDrd(EAX, EDX); + ADDrd(EDX, EAX); break; case BPF_ALU|BPF_SUB|BPF_X: - SUBrd(EAX, EDX); + SUBrd(EDX, EAX); break; case BPF_ALU|BPF_MUL|BPF_X: + MOVrd(EDX, ECX); + MULrd(EDX); MOVrd(ECX, EDX); - MULrd(EDX); - MOVrd(EDX, ECX); break; case BPF_ALU|BPF_DIV|BPF_X: - CMPid(EDX, 0); + CMPid(0, EDX); JNEb(5); - ZERO_EAX(); + ZEROrd(EAX); POP(RBX); LEAVE_RET(); + MOVrd(EDX, ECX); + ZEROrd(EDX); + DIVrd(ECX); MOVrd(ECX, EDX); - ZERO_EDX(); - DIVrd(ECX); - MOVrd(EDX, ECX); break; case BPF_ALU|BPF_AND|BPF_X: - ANDrd(EAX, EDX); + ANDrd(EDX, EAX); break; case BPF_ALU|BPF_OR|BPF_X: - ORrd(EAX, EDX); + ORrd(EDX, EAX); break; case BPF_ALU|BPF_LSH|BPF_X: - MOVrd(ECX, EDX); + MOVrd(EDX, ECX); SHL_CLrb(EAX); break; case BPF_ALU|BPF_RSH|BPF_X: - MOVrd(ECX, EDX); + MOVrd(EDX, ECX); SHR_CLrb(EAX); break; @@ -414,34 +414,34 @@ break; case BPF_ALU|BPF_MUL|BPF_K: + MOVrd(EDX, ECX); + MOVid(ins->k, EDX); + MULrd(EDX); MOVrd(ECX, EDX); - MOVid(EDX, ins->k); - MULrd(EDX); - MOVrd(EDX, ECX); break; case BPF_ALU|BPF_DIV|BPF_K: + MOVrd(EDX, ECX); + ZEROrd(EDX); + MOVid(ins->k, ESI); + DIVrd(ESI); MOVrd(ECX, EDX); - ZERO_EDX(); - MOVid(ESI, ins->k); - DIVrd(ESI); - MOVrd(EDX, ECX); break; case BPF_ALU|BPF_AND|BPF_K: - ANDid(EAX, ins->k); + ANDid(ins->k, EAX); break; case BPF_ALU|BPF_OR|BPF_K: - ORid(EAX, ins->k); + ORid(ins->k, EAX); break; case BPF_ALU|BPF_LSH|BPF_K: - SHLib(EAX, (ins->k) & 255); + SHLib((ins->k) & 0xff, EAX); break; case BPF_ALU|BPF_RSH|BPF_K: - SHRib(EAX, (ins->k) & 255); + SHRib((ins->k) & 0xff, EAX); break; case BPF_ALU|BPF_NEG: @@ -449,11 +449,11 @@ break; case BPF_MISC|BPF_TAX: - MOVrd(EDX, EAX); + MOVrd(EAX, EDX); break; case BPF_MISC|BPF_TXA: - MOVrd(EAX, EDX); + MOVrd(EDX, EAX); break; } ins++; ==== //depot/projects/vimage-commit3/src/sys/amd64/amd64/bpf_jit_machdep.h#2 (text+ko) ==== @@ -28,7 +28,7 @@ * (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: src/sys/amd64/amd64/bpf_jit_machdep.h,v 1.3 2005/12/06 20:11:07 jkim Exp $ + * $FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.h,v 1.5 2008/06/24 20:12:12 jkim Exp $ */ #ifndef _BPF_JIT_MACHDEP_H_ @@ -104,254 +104,252 @@ * native Instruction Macros */ -/* mov r32,i32 */ -#define MOVid(r32, i32) do { \ +/* movl i32,r32 */ +#define MOVid(i32, r32) do { \ emitm(&stream, (11 << 4) | (1 << 3) | (r32 & 0x7), 1); \ emitm(&stream, i32, 4); \ } while (0) -/* mov r64,i64 */ -#define MOViq(r64, i64) do { \ +/* movq i64,r64 */ +#define MOViq(i64, r64) do { \ emitm(&stream, 0x48, 1); \ emitm(&stream, (11 << 4) | (1 << 3) | (r64 & 0x7), 1); \ emitm(&stream, i64, 4); \ emitm(&stream, (i64 >> 32), 4); \ } while (0) -/* mov dr32,sr32 */ -#define MOVrd(dr32, sr32) do { \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ +/* movl sr32,dr32 */ +#define MOVrd(sr32, dr32) do { \ + emitm(&stream, 0x89, 1); \ emitm(&stream, \ - (3 << 6) | ((dr32 & 0x7) << 3) | (sr32 & 0x7), 1); \ + (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1); \ } while (0) -/* mov dr64,sr64 */ -#define MOVrq(dr64, sr64) do { \ - emitm(&stream, 0x48, 1); \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ +/* movq sr64,dr64 */ +#define MOVrq(sr64, dr64) do { \ + emitm(&stream, 0x8948, 2); \ emitm(&stream, \ - (3 << 6) | ((dr64 & 0x7) << 3) | (sr64 & 0x7), 1); \ + (3 << 6) | ((sr64 & 0x7) << 3) | (dr64 & 0x7), 1); \ } while (0) -/* mov dr32,sr64[off] */ -#define MOVodd(dr32, sr64, off) do { \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ +/* movl off(sr64),dr32 */ +#define MOVoqd(off, sr64, dr32) do { \ + emitm(&stream, 0x8b, 1); \ emitm(&stream, \ (1 << 6) | ((dr32 & 0x7) << 3) | (sr64 & 0x7), 1); \ emitm(&stream, off, 1); \ } while (0) -/* mov dr64[off],sr32 */ -#define MOVoqd(dr64, off, sr32) do { \ - emitm(&stream, (8 << 4) | 1 | (1 << 3), 1); \ +/* movl sr32,off(dr64) */ +#define MOVdoq(sr32, off, dr64) do { \ + emitm(&stream, 0x89, 1); \ emitm(&stream, \ (1 << 6) | ((sr32 & 0x7) << 3) | (dr64 & 0x7), 1); \ emitm(&stream, off, 1); \ } while (0) -/* mov dr32,sr64[or64] */ -#define MOVobd(dr32, sr64, or64) do { \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ +/* movl (sr64,or64,1),dr32 */ +#define MOVobd(sr64, or64, dr32) do { \ + emitm(&stream, 0x8b, 1); \ emitm(&stream, ((dr32 & 0x7) << 3) | 4, 1); \ emitm(&stream, ((or64 & 0x7) << 3) | (sr64 & 0x7), 1); \ } while (0) -/* mov dr16,sr64[or64] */ -#define MOVobw(dr32, sr64, or64) do { \ - emitm(&stream, 0x66, 1); \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ - emitm(&stream, ((dr32 & 0x7) << 3) | 4, 1); \ +/* movw (sr64,or64,1),dr16 */ +#define MOVobw(sr64, or64, dr16) do { \ + emitm(&stream, 0x8b66, 2); \ + emitm(&stream, ((dr16 & 0x7) << 3) | 4, 1); \ emitm(&stream, ((or64 & 0x7) << 3) | (sr64 & 0x7), 1); \ } while (0) -/* mov dr8,sr64[or64] */ -#define MOVobb(dr8, sr64, or64) do { \ +/* movb (sr64,or64,1),dr8 */ +#define MOVobb(sr64, or64, dr8) do { \ emitm(&stream, 0x8a, 1); \ emitm(&stream, ((dr8 & 0x7) << 3) | 4, 1); \ emitm(&stream, ((or64 & 0x7) << 3) | (sr64 & 0x7), 1); \ } while (0) -/* mov [dr64][or64],sr32 */ -#define MOVomd(dr64, or64, sr32) do { \ +/* movl sr32,(dr64,or64,1) */ +#define MOVomd(sr32, dr64, or64) do { \ emitm(&stream, 0x89, 1); \ emitm(&stream, ((sr32 & 0x7) << 3) | 4, 1); \ emitm(&stream, ((or64 & 0x7) << 3) | (dr64 & 0x7), 1); \ } while (0) -/* bswap dr32 */ +/* bswapl dr32 */ #define BSWAP(dr32) do { \ emitm(&stream, 0xf, 1); \ emitm(&stream, (0x19 << 3) | dr32, 1); \ } while (0) -/* xchg al,ah */ +/* xchgb %al,%ah */ #define SWAP_AX() do { \ - emitm(&stream, 0x86, 1); \ - emitm(&stream, 0xc4, 1); \ + emitm(&stream, 0xc486, 2); \ } while (0) -/* push r64 */ +/* pushq r64 */ #define PUSH(r64) do { \ emitm(&stream, (5 << 4) | (0 << 3) | (r64 & 0x7), 1); \ } while (0) -/* pop r64 */ +/* popq r64 */ #define POP(r64) do { \ emitm(&stream, (5 << 4) | (1 << 3) | (r64 & 0x7), 1); \ } while (0) -/* leave/ret */ +/* leaveq/retq */ #define LEAVE_RET() do { \ - emitm(&stream, 0xc9, 1); \ - emitm(&stream, 0xc3, 1); \ + emitm(&stream, 0xc3c9, 2); \ } while (0) -/* add dr32,sr32 */ -#define ADDrd(dr32, sr32) do { \ - emitm(&stream, 0x03, 1); \ +/* addl sr32,dr32 */ +#define ADDrd(sr32, dr32) do { \ + emitm(&stream, 0x01, 1); \ emitm(&stream, \ - (3 << 6) | ((dr32 & 0x7) << 3) | (sr32 & 0x7), 1); \ + (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1); \ } while (0) -/* add eax,i32 */ +/* addl i32,%eax */ #define ADD_EAXi(i32) do { \ emitm(&stream, 0x05, 1); \ emitm(&stream, i32, 4); \ } while (0) -/* add r32,i32 */ -#define ADDid(r32, i32) do { \ +/* addl i32,r32 */ +#define ADDid(i32, r32) do { \ emitm(&stream, 0x81, 1); \ emitm(&stream, (24 << 3) | r32, 1); \ emitm(&stream, i32, 4); \ } while (0) -/* add r32,i8 */ -#define ADDib(r32, i8) do { \ +/* addl i8,r32 */ +#define ADDib(i8, r32) do { \ emitm(&stream, 0x83, 1); \ emitm(&stream, (24 << 3) | r32, 1); \ emitm(&stream, i8, 1); \ } while (0) -/* sub dr32,sr32 */ -#define SUBrd(dr32, sr32) do { \ - emitm(&stream, 0x2b, 1); \ +/* subl sr32,dr32 */ +#define SUBrd(sr32, dr32) do { \ + emitm(&stream, 0x29, 1); \ emitm(&stream, \ - (3 << 6) | ((dr32 & 0x7) << 3) | (sr32 & 0x7), 1); \ + (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1); \ } while (0) -/* sub eax,i32 */ +/* subl i32,%eax */ #define SUB_EAXi(i32) do { \ emitm(&stream, 0x2d, 1); \ emitm(&stream, i32, 4); \ } while (0) -/* mul r32 */ +/* mull r32 */ #define MULrd(r32) do { \ emitm(&stream, 0xf7, 1); \ emitm(&stream, (7 << 5) | (r32 & 0x7), 1); \ } while (0) -/* div r32 */ +/* divl r32 */ #define DIVrd(r32) do { \ emitm(&stream, 0xf7, 1); \ emitm(&stream, (15 << 4) | (r32 & 0x7), 1); \ } while (0) -/* and r8,i8 */ -#define ANDib(r8, i8) do { \ - emitm(&stream, 0x80, 1); \ - emitm(&stream, (7 << 5) | r8, 1); \ +/* andb i8,r8 */ +#define ANDib(i8, r8) do { \ + if (r8 == AL) { \ + emitm(&stream, 0x24, 1); \ + } else { \ + emitm(&stream, 0x80, 1); \ + emitm(&stream, (7 << 5) | r8, 1); \ + } \ emitm(&stream, i8, 1); \ } while (0) -/* and r32,i32 */ -#define ANDid(r32, i32) do { \ +/* andl i32,r32 */ +#define ANDid(i32, r32) do { \ if (r32 == EAX) { \ emitm(&stream, 0x25, 1); \ - emitm(&stream, i32, 4); \ } else { \ emitm(&stream, 0x81, 1); \ emitm(&stream, (7 << 5) | r32, 1); \ - emitm(&stream, i32, 4); \ } \ + emitm(&stream, i32, 4); \ } while (0) -/* and dr32,sr32 */ -#define ANDrd(dr32, sr32) do { \ - emitm(&stream, 0x23, 1); \ +/* andl sr32,dr32 */ +#define ANDrd(sr32, dr32) do { \ + emitm(&stream, 0x21, 1); \ emitm(&stream, \ - (3 << 6) | ((dr32 & 0x7) << 3) | (sr32 & 0x7), 1); \ + (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1); \ } while (0) -/* or dr32,sr32 */ -#define ORrd(dr32, sr32) do { \ - emitm(&stream, 0x0b, 1); \ +/* orl sr32,dr32 */ +#define ORrd(sr32, dr32) do { \ + emitm(&stream, 0x09, 1); \ emitm(&stream, \ - (3 << 6) | ((dr32 & 0x7) << 3) | (sr32 & 0x7), 1); \ + (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1); \ } while (0) -/* or r32,i32 */ -#define ORid(r32, i32) do { \ +/* orl i32,r32 */ +#define ORid(i32, r32) do { \ if (r32 == EAX) { \ emitm(&stream, 0x0d, 1); \ - emitm(&stream, i32, 4); \ } else { \ emitm(&stream, 0x81, 1); \ emitm(&stream, (25 << 3) | r32, 1); \ - emitm(&stream, i32, 4); \ } \ + emitm(&stream, i32, 4); \ } while (0) -/* shl r32,i8 */ -#define SHLib(r32, i8) do { \ +/* shll i8,r32 */ +#define SHLib(i8, r32) do { \ emitm(&stream, 0xc1, 1); \ emitm(&stream, (7 << 5) | (r32 & 0x7), 1); \ emitm(&stream, i8, 1); \ } while (0) -/* shl dr32,cl */ +/* shll %cl,dr32 */ #define SHL_CLrb(dr32) do { \ emitm(&stream, 0xd3, 1); \ emitm(&stream, (7 << 5) | (dr32 & 0x7), 1); \ } while (0) -/* shr r32,i8 */ -#define SHRib(r32, i8) do { \ +/* shrl i8,r32 */ +#define SHRib(i8, r32) do { \ emitm(&stream, 0xc1, 1); \ emitm(&stream, (29 << 3) | (r32 & 0x7), 1); \ emitm(&stream, i8, 1); \ } while (0) -/* shr dr32,cl */ +/* shrl %cl,dr32 */ #define SHR_CLrb(dr32) do { \ emitm(&stream, 0xd3, 1); \ emitm(&stream, (29 << 3) | (dr32 & 0x7), 1); \ } while (0) -/* neg r32 */ +/* negl r32 */ #define NEGd(r32) do { \ emitm(&stream, 0xf7, 1); \ emitm(&stream, (27 << 3) | (r32 & 0x7), 1); \ } while (0) -/* cmp dr32,sr64[off] */ -#define CMPodd(dr32, sr64, off) do { \ - emitm(&stream, (3 << 4) | 3 | (1 << 3), 1); \ +/* cmpl off(sr64),dr32 */ +#define CMPoqd(off, sr64, dr32) do { \ + emitm(&stream, 0x3b, 1); \ emitm(&stream, \ (1 << 6) | ((dr32 & 0x7) << 3) | (sr64 & 0x7), 1); \ emitm(&stream, off, 1); \ } while (0) -/* cmp dr32,sr32 */ -#define CMPrd(dr32, sr32) do { \ - emitm(&stream, 0x3b, 1); \ +/* cmpl sr32,dr32 */ +#define CMPrd(sr32, dr32) do { \ + emitm(&stream, 0x39, 1); \ emitm(&stream, \ - (3 << 6) | ((dr32 & 0x7) << 3) | (sr32 & 0x7), 1); \ + (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1); \ } while (0) -/* cmp dr32,i32 */ -#define CMPid(dr32, i32) do { \ +/* cmpl i32,dr32 */ +#define CMPid(i32, dr32) do { \ if (dr32 == EAX){ \ emitm(&stream, 0x3d, 1); \ emitm(&stream, i32, 4); \ @@ -362,7 +360,7 @@ } \ } while (0) -/* jne off32 */ +/* jne off8 */ #define JNEb(off8) do { \ emitm(&stream, 0x75, 1); \ emitm(&stream, off8, 1); \ @@ -370,15 +368,13 @@ /* je off32 */ #define JE(off32) do { \ - emitm(&stream, 0x0f, 1); \ - emitm(&stream, 0x84, 1); \ + emitm(&stream, 0x840f, 2); \ emitm(&stream, off32, 4); \ } while (0) /* jle off32 */ #define JLE(off32) do { \ - emitm(&stream, 0x0f, 1); \ - emitm(&stream, 0x8e, 1); \ + emitm(&stream, 0x8e0f, 2); \ emitm(&stream, off32, 4); \ } while (0) @@ -390,29 +386,25 @@ /* ja off32 */ #define JA(off32) do { \ >>> TRUNCATED FOR MAIL (1000 lines) <<< From trasz at FreeBSD.org Thu Jul 3 05:17:58 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Thu Jul 3 05:18:00 2008 Subject: PERFORCE change 144531 for review Message-ID: <200807030517.m635HvJm077159@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144531 Change 144531 by trasz@trasz_traszkan on 2008/07/03 05:17:32 Add support for the new ACLs to mount(8). Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/sbin/mount/mntopts.h#2 edit .. //depot/projects/soc2008/trasz_nfs4acl/sbin/mount/mount.c#2 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/sbin/mount/mntopts.h#2 (text+ko) ==== @@ -54,6 +54,7 @@ #define MOPT_SNAPSHOT { "snapshot", 0, MNT_SNAPSHOT, 0 } #define MOPT_MULTILABEL { "multilabel", 0, MNT_MULTILABEL, 0 } #define MOPT_ACLS { "acls", 0, MNT_ACLS, 0 } +#define MOPT_NFS4ACLS { "nfs4acls", 0, MNT_NFS4ACLS, 0 } /* Control flags. */ #define MOPT_FORCE { "force", 0, MNT_FORCE, 0 } @@ -87,7 +88,8 @@ MOPT_NOCLUSTERR, \ MOPT_NOCLUSTERW, \ MOPT_MULTILABEL, \ - MOPT_ACLS + MOPT_ACLS, \ + MOPT_NFS4ACLS void getmntopts(const char *, const struct mntopt *, int *, int *); void rmslashes(char *, char *); ==== //depot/projects/soc2008/trasz_nfs4acl/sbin/mount/mount.c#2 (text+ko) ==== @@ -107,6 +107,7 @@ { MNT_SOFTDEP, "soft-updates" }, { MNT_MULTILABEL, "multilabel" }, { MNT_ACLS, "acls" }, + { MNT_NFS4ACLS, "nfs4acls" }, { MNT_GJOURNAL, "gjournal" }, { 0, NULL } }; @@ -877,6 +878,7 @@ if (flags & MNT_SUIDDIR) res = catopt(res, "suiddir"); if (flags & MNT_MULTILABEL) res = catopt(res, "multilabel"); if (flags & MNT_ACLS) res = catopt(res, "acls"); + if (flags & MNT_NFS4ACLS) res = catopt(res, "nfs4acls"); return (res); } From julian at FreeBSD.org Thu Jul 3 08:17:59 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 08:18:00 2008 Subject: PERFORCE change 144536 for review Message-ID: <200807030817.m638HwNe098388@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144536 Change 144536 by julian@julian_trafmon1 on 2008/07/03 08:17:38 Fix bad integration Affected files ... .. //depot/projects/vimage/src/sys/netinet/tcp_syncache.h#11 edit Differences ... ==== //depot/projects/vimage/src/sys/netinet/tcp_syncache.h#11 (text+ko) ==== @@ -52,7 +52,7 @@ void syncache_chkrst(struct in_conninfo *, struct tcphdr *); void syncache_badack(struct in_conninfo *); int syncache_pcbcount(void); -int syncache_pcblist(struct sysctl_req *req, int max_pcbs, int *pcbs_exported); +int syncache_pcblist(struct sysctl_req *req, int max_pcbs, int *pcbs_exported); struct syncache { From julian at FreeBSD.org Thu Jul 3 08:26:07 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 08:26:10 2008 Subject: PERFORCE change 144537 for review Message-ID: <200807030826.m638Q62M099184@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144537 Change 144537 by julian@julian_trafmon1 on 2008/07/03 08:25:39 shuffle includes Affected files ... .. //depot/projects/vimage/src/sys/netinet6/in6_gif.c#9 edit .. //depot/projects/vimage/src/sys/netinet6/vinet6.h#16 edit Differences ... ==== //depot/projects/vimage/src/sys/netinet6/in6_gif.c#9 (text+ko) ==== @@ -58,11 +58,11 @@ #endif #include #ifdef INET6 -#include #include #include #include #include +#include #endif #include #include ==== //depot/projects/vimage/src/sys/netinet6/vinet6.h#16 (text+ko) ==== @@ -38,6 +38,7 @@ #include #include #include +#include #include #define INIT_VNET_INET6(vnet) \ From julian at FreeBSD.org Thu Jul 3 09:14:57 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 09:14:59 2008 Subject: PERFORCE change 144541 for review Message-ID: <200807030914.m639EuHi013839@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144541 Change 144541 by julian@julian_trafmon1 on 2008/07/03 09:14:25 ifnet_byindex() is no longer a macro so it can not be onthe LHS. use ifnet_setbyindex() instead. Affected files ... .. //depot/projects/vimage/src/sys/kern/kern_vimage.c#64 edit Differences ... ==== //depot/projects/vimage/src/sys/kern/kern_vimage.c#64 (text+ko) ==== @@ -293,7 +293,7 @@ do { INIT_VNET_NET(curvnet); - ifnet_byindex(ifp->if_index) = NULL; + ifnet_setbyindex(ifp->if_index, NULL); /* XXX: should be locked with if_findindex() */ while (V_if_index > 0 && ifnet_byindex(V_if_index) == NULL) V_if_index--; @@ -319,7 +319,7 @@ V_if_index = ifp->if_index; if (V_if_index >= V_if_indexlim) if_grow(); - ifnet_byindex(ifp->if_index) = ifp; + ifnet_setbyindex(ifp->if_index, ifp); /* Rename the ifnet */ if (new_vnet == ifp->if_home_vnet) { From julian at FreeBSD.org Thu Jul 3 09:22:04 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 09:22:06 2008 Subject: PERFORCE change 144542 for review Message-ID: <200807030922.m639M3CU015158@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144542 Change 144542 by julian@julian_trafmon1 on 2008/07/03 09:21:09 make ifnet_setbyindex non-static Affected files ... .. //depot/projects/vimage/src/sys/net/if.c#29 edit .. //depot/projects/vimage/src/sys/net/if_var.h#15 edit Differences ... ==== //depot/projects/vimage/src/sys/net/if.c#29 (text+ko) ==== @@ -198,7 +198,7 @@ return (ifp); } -static void +void ifnet_setbyindex(u_short idx, struct ifnet *ifp) { ==== //depot/projects/vimage/src/sys/net/if_var.h#15 (text+ko) ==== @@ -650,6 +650,7 @@ struct cdev *ife_dev; }; +void ifnet_setbyindex(u_short idx, struct ifnet *ifp); struct ifnet *ifnet_byindex(u_short idx); /* * Given the index, ifaddr_byindex() returns the one and only From julian at FreeBSD.org Thu Jul 3 09:32:14 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 09:32:17 2008 Subject: PERFORCE change 144543 for review Message-ID: <200807030932.m639WD4A026172@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144543 Change 144543 by julian@julian_trafmon1 on 2008/07/03 09:31:58 ifnet_byindex and friends need INIT_VNET_NET() Affected files ... .. //depot/projects/vimage/src/sys/net/if.c#30 edit Differences ... ==== //depot/projects/vimage/src/sys/net/if.c#30 (text+ko) ==== @@ -151,12 +151,12 @@ static int if_indexlim; static struct knlist ifklist; -#endif /* !VIMAGE */ /* * Table of ifnet/cdev by index. Locked with ifnet_lock. */ static struct ifindex_entry *ifindex_table = NULL; +#endif /* !VIMAGE */ static void filt_netdetach(struct knote *kn); static int filt_netdev(struct knote *kn, long hint); @@ -190,10 +190,11 @@ struct ifnet * ifnet_byindex(u_short idx) { + INIT_VNET_NET(curvnet); struct ifnet *ifp; IFNET_RLOCK(); - ifp = ifindex_table[idx].ife_ifnet; + ifp = V_ifindex_table[idx].ife_ifnet; IFNET_RUNLOCK(); return (ifp); } @@ -202,9 +203,10 @@ ifnet_setbyindex(u_short idx, struct ifnet *ifp) { + INIT_VNET_NET(curvnet); IFNET_WLOCK_ASSERT(); - ifindex_table[idx].ife_ifnet = ifp; + V_ifindex_table[idx].ife_ifnet = ifp; } struct ifaddr * @@ -221,10 +223,11 @@ struct cdev * ifdev_byindex(u_short idx) { + INIT_VNET_NET(curvnet); struct cdev *cdev; IFNET_RLOCK(); - cdev = ifindex_table[idx].ife_dev; + cdev = V_ifindex_table[idx].ife_dev; IFNET_RUNLOCK(); return (cdev); } @@ -233,8 +236,9 @@ ifdev_setbyindex(u_short idx, struct cdev *cdev) { + INIT_VNET_NET(curvnet); IFNET_WLOCK(); - ifindex_table[idx].ife_dev = cdev; + V_ifindex_table[idx].ife_dev = cdev; IFNET_WUNLOCK(); } @@ -268,7 +272,6 @@ static int netioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) { - INIT_VNET_NET(curvnet); struct ifnet *ifp; int error, idx; @@ -379,15 +382,8 @@ vnet_net_iattach(NULL); #endif IFNET_LOCK_INIT(); -#ifdef VIMAGE - if (IS_DEFAULT_VNET(curvnet)) { - INIT_VNET_NET(curvnet); -#endif ifdev_setbyindex(0, make_dev(&net_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "network")); -#ifdef VIMAGE - } -#endif if_clone_init(); } From hselasky at FreeBSD.org Thu Jul 3 09:36:18 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 09:36:21 2008 Subject: PERFORCE change 144544 for review Message-ID: <200807030936.m639aIee030283@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144544 Change 144544 by hselasky@hselasky_laptop001 on 2008/07/03 09:36:05 USB ethernet related: - Add check for interface index to all probe functions. - Fix locking in miibus and ioctl callbacks to avoid recursive locking. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2_reg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2_reg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2_reg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2_reg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2_reg.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2_reg.h#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#3 (text+ko) ==== @@ -471,8 +471,15 @@ { struct aue_softc *sc = device_get_softc(dev); uint16_t i; + uint8_t do_unlock; - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } /* * The Am79C901 HomePNA PHY actually contains @@ -519,8 +526,9 @@ i = aue_cfg_csr_read_2(sc, AUE_PHY_DATA); done: - mtx_unlock(&(sc->sc_mtx)); /* XXX */ - + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } return (i); } @@ -529,11 +537,18 @@ { struct aue_softc *sc = device_get_softc(dev); uint16_t i; + uint8_t do_unlock; if (phy == 3) { return (0); } - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } aue_cfg_csr_write_2(sc, AUE_PHY_DATA, data); aue_cfg_csr_write_1(sc, AUE_PHY_ADDR, phy); @@ -554,8 +569,9 @@ } } - mtx_unlock(&(sc->sc_mtx)); /* XXX */ - + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } return (0); } @@ -564,8 +580,15 @@ { struct aue_softc *sc = device_get_softc(dev); struct mii_data *mii = GET_MII(sc); + uint8_t do_unlock; - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } AUE_CFG_CLRBIT(sc, AUE_CTL0, AUE_CTL0_RX_ENB | AUE_CTL0_TX_ENB); @@ -594,8 +617,9 @@ auxmode = aue_cfg_miibus_readreg(dev, 0, 0x1b); aue_cfg_miibus_writereg(dev, 0, 0x1b, auxmode | 0x04); } - mtx_unlock(&(sc->sc_mtx)); /* XXX */ - + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } return; } @@ -705,7 +729,10 @@ if (uaa->usb2_mode != USB_MODE_HOST) { return (ENXIO); } - if (uaa->info.bConfigIndex != 0) { + if (uaa->info.bConfigIndex != AUE_CONFIG_INDEX) { + return (ENXIO); + } + if (uaa->info.bIfaceIndex != AUE_IFACE_IDX) { return (ENXIO); } return (usb2_lookup_id_by_uaa(aue_devs, sizeof(aue_devs), uaa)); @@ -1402,11 +1429,9 @@ struct mii_data *mii; int error = 0; - mtx_lock(&(sc->sc_mtx)); - switch (command) { case SIOCSIFFLAGS: - + mtx_lock(&(sc->sc_mtx)); if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) { usb2_config_td_queue_command @@ -1424,13 +1449,16 @@ &aue_cfg_stop, 0, 0); } } + mtx_unlock(&(sc->sc_mtx)); break; case SIOCADDMULTI: case SIOCDELMULTI: + mtx_lock(&(sc->sc_mtx)); usb2_config_td_queue_command (&(sc->sc_config_td), &aue_config_copy, &aue_cfg_setmulti, 0, 0); + mtx_unlock(&(sc->sc_mtx)); break; case SIOCGIFMEDIA: @@ -1448,9 +1476,6 @@ error = ether_ioctl(ifp, command, data); break; } - - mtx_unlock(&(sc->sc_mtx)); - return (error); } ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2_reg.h#3 (text+ko) ==== @@ -49,7 +49,7 @@ #define AUE_UR_READREG 0xF0 #define AUE_UR_WRITEREG 0xF1 -#define AUE_CONFIG_NO 1 +#define AUE_CONFIG_INDEX 0 /* config number 1 */ #define AUE_IFACE_IDX 0 /* ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#3 (text+ko) ==== @@ -325,8 +325,15 @@ { struct axe_softc *sc = device_get_softc(dev); uint16_t val; + uint8_t do_unlock; - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } #if 0 /* @@ -357,8 +364,9 @@ sc->sc_phyaddrs[0] = phy; } done: - mtx_unlock(&(sc->sc_mtx)); /* XXX */ - + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } return (val); } @@ -366,17 +374,25 @@ axe_cfg_miibus_writereg(device_t dev, int phy, int reg, int val) { struct axe_softc *sc = device_get_softc(dev); + uint8_t do_unlock; val = htole16(val); - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } axe_cfg_cmd(sc, AXE_CMD_MII_OPMODE_SW, 0, 0, NULL); axe_cfg_cmd(sc, AXE_CMD_MII_WRITE_REG, reg, phy, &val); axe_cfg_cmd(sc, AXE_CMD_MII_OPMODE_HW, 0, 0, NULL); - mtx_unlock(&(sc->sc_mtx)); /* XXX */ - + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } return (0); } @@ -386,8 +402,15 @@ struct axe_softc *sc = device_get_softc(dev); struct mii_data *mii = GET_MII(sc); uint16_t val; + uint8_t do_unlock; - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } if ((mii->mii_media_active & IFM_GMASK) == IFM_FDX) val = AXE_MEDIA_FULL_DUPLEX; @@ -411,8 +434,9 @@ } } axe_cfg_cmd(sc, AXE_CMD_WRITE_MEDIA, 0, val, NULL); - - mtx_unlock(&(sc->sc_mtx)); /* XXX */ + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } return; } @@ -467,10 +491,8 @@ struct axe_softc *sc = ifp->if_softc; mtx_lock(&(sc->sc_mtx)); - ifmr->ifm_active = sc->sc_media_active; ifmr->ifm_status = sc->sc_media_status; - mtx_unlock(&(sc->sc_mtx)); return; @@ -550,7 +572,10 @@ if (uaa->usb2_mode != USB_MODE_HOST) { return (ENXIO); } - if (uaa->info.bConfigIndex != 0) { + if (uaa->info.bConfigIndex != AXE_CONFIG_IDX) { + return (ENXIO); + } + if (uaa->info.bIfaceIndex != AXE_IFACE_IDX) { return (ENXIO); } return (usb2_lookup_id_by_uaa(axe_devs, sizeof(axe_devs), uaa)); @@ -1364,11 +1389,9 @@ struct mii_data *mii; int error = 0; - mtx_lock(&(sc->sc_mtx)); - switch (command) { case SIOCSIFFLAGS: - + mtx_lock(&(sc->sc_mtx)); if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) { usb2_config_td_queue_command @@ -1386,13 +1409,16 @@ &axe_cfg_stop, 0, 0); } } + mtx_unlock(&(sc->sc_mtx)); break; case SIOCADDMULTI: case SIOCDELMULTI: + mtx_lock(&(sc->sc_mtx)); usb2_config_td_queue_command (&(sc->sc_config_td), &axe_config_copy, &axe_cfg_setmulti, 0, 0); + mtx_unlock(&(sc->sc_mtx)); break; case SIOCGIFMEDIA: @@ -1410,9 +1436,6 @@ error = ether_ioctl(ifp, command, data); break; } - - mtx_unlock(&(sc->sc_mtx)); - return (error); } ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2_reg.h#3 (text+ko) ==== @@ -143,7 +143,7 @@ #define AXE_CTL_READ 0x01 #define AXE_CTL_WRITE 0x02 -#define AXE_CONFIG_NO 1 +#define AXE_CONFIG_IDX 0 /* config number 1 */ #define AXE_IFACE_IDX 0 /* The interrupt endpoint is currently unused by the ASIX part. */ ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#3 (text+ko) ==== @@ -514,11 +514,6 @@ /* start the interrupt transfer, if any */ mtx_lock(&(sc->sc_mtx)); -#ifdef CDCE_DO_BENCHMARK - usb2_transfer_start(sc->sc_xfer[0]); - usb2_transfer_start(sc->sc_xfer[1]); - device_printf(dev, "benchmarking enabled\n"); -#endif usb2_transfer_start(sc->sc_xfer[4]); mtx_unlock(&(sc->sc_mtx)); @@ -953,14 +948,14 @@ cdce_suspend(device_t dev) { device_printf(dev, "Suspending\n"); - return 0; + return (0); } static int cdce_resume(device_t dev) { device_printf(dev, "Resuming\n"); - return 0; + return (0); } static int @@ -969,10 +964,9 @@ struct cdce_softc *sc = ifp->if_softc; int error = 0; - mtx_lock(&(sc->sc_mtx)); - switch (command) { case SIOCSIFFLAGS: + mtx_lock(&(sc->sc_mtx)); if (ifp->if_flags & IFF_UP) { if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { cdce_init_cb(sc); @@ -982,6 +976,7 @@ cdce_stop(sc); } } + mtx_unlock(&(sc->sc_mtx)); break; case SIOCSIFMEDIA: @@ -994,9 +989,6 @@ error = ether_ioctl(ifp, command, data); break; } - - mtx_unlock(&(sc->sc_mtx)); - return (error); } ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#3 (text+ko) ==== @@ -385,7 +385,10 @@ if (uaa->usb2_mode != USB_MODE_HOST) { return (ENXIO); } - if (uaa->info.bConfigIndex != 0) { + if (uaa->info.bConfigIndex != CUE_CONFIG_IDX) { + return (ENXIO); + } + if (uaa->info.bIfaceIndex != CUE_IFACE_IDX) { return (ENXIO); } return (usb2_lookup_id_by_uaa(cue_devs, sizeof(cue_devs), uaa)); @@ -842,10 +845,9 @@ struct cue_softc *sc = ifp->if_softc; int error = 0; - mtx_lock(&(sc->sc_mtx)); - switch (command) { case SIOCSIFFLAGS: + mtx_lock(&(sc->sc_mtx)); if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) { usb2_config_td_queue_command @@ -863,22 +865,22 @@ &cue_cfg_stop, 0, 0); } } + mtx_unlock(&(sc->sc_mtx)); break; case SIOCADDMULTI: case SIOCDELMULTI: + mtx_lock(&(sc->sc_mtx)); usb2_config_td_queue_command (&(sc->sc_config_td), &cue_config_copy, &cue_cfg_promisc_upd, 0, 0); + mtx_unlock(&(sc->sc_mtx)); break; default: error = ether_ioctl(ifp, command, data); break; } - - mtx_unlock(&(sc->sc_mtx)); - return (error); } ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2_reg.h#3 (text+ko) ==== @@ -109,7 +109,7 @@ #define CUE_CTL_READ 0x01 #define CUE_CTL_WRITE 0x02 -#define CUE_CONFIG_NO 1 +#define CUE_CONFIG_IDX 0 /* config number 1 */ #define CUE_IFACE_IDX 0 /* The interrupt endpoint is currently unused by the KLSI part. */ ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#3 (text+ko) ==== @@ -443,10 +443,13 @@ struct usb2_attach_arg *uaa = device_get_ivars(dev); if (uaa->usb2_mode != USB_MODE_HOST) { - return ((ENXIO)); + return (ENXIO); + } + if (uaa->info.bConfigIndex != KUE_CONFIG_IDX) { + return (ENXIO); } - if (uaa->info.bConfigIndex != 0) { - return ((ENXIO)); + if (uaa->info.bIfaceIndex != KUE_IFACE_IDX) { + return (ENXIO); } return (usb2_lookup_id_by_uaa(kue_devs, sizeof(kue_devs), uaa)); } @@ -881,10 +884,9 @@ struct kue_softc *sc = ifp->if_softc; int error = 0; - mtx_lock(&(sc->sc_mtx)); - switch (command) { case SIOCSIFFLAGS: + mtx_lock(&(sc->sc_mtx)); if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) { usb2_config_td_queue_command @@ -902,22 +904,22 @@ &kue_cfg_stop, 0, 0); } } + mtx_unlock(&(sc->sc_mtx)); break; case SIOCADDMULTI: case SIOCDELMULTI: + mtx_lock(&(sc->sc_mtx)); usb2_config_td_queue_command (&(sc->sc_config_td), &kue_config_copy, &kue_cfg_promisc_upd, 0, 0); + mtx_unlock(&(sc->sc_mtx)); break; default: error = ether_ioctl(ifp, command, data); break; } - - mtx_unlock(&(sc->sc_mtx)); - return (error); } ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2_reg.h#3 (text+ko) ==== @@ -111,7 +111,7 @@ #define KUE_CTL_READ 0x01 #define KUE_CTL_WRITE 0x02 -#define KUE_CONFIG_NO 1 +#define KUE_CONFIG_IDX 0 /* config number 1 */ #define KUE_IFACE_IDX 0 /* The interrupt endpoint is currently unused by the KLSI part. */ ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2.c#3 (text+ko) ==== @@ -370,11 +370,18 @@ struct rue_softc *sc = device_get_softc(dev); uint16_t rval; uint16_t ruereg; + uint8_t do_unlock; if (phy != 0) { /* RTL8150 supports PHY == 0, only */ return (0); } - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } switch (reg) { case MII_BMCR: @@ -408,8 +415,9 @@ rval = rue_cfg_csr_read_2(sc, ruereg); done: - mtx_unlock(&(sc->sc_mtx)); /* XXX */ - + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } return (rval); } @@ -418,11 +426,18 @@ { struct rue_softc *sc = device_get_softc(dev); uint16_t ruereg; + uint8_t do_unlock; if (phy != 0) { /* RTL8150 supports PHY == 0, only */ return (0); } - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } switch (reg) { case MII_BMCR: @@ -454,8 +469,9 @@ } rue_cfg_csr_write_2(sc, ruereg, data); done: - mtx_unlock(&(sc->sc_mtx)); /* XXX */ - + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } return (0); } @@ -476,8 +492,15 @@ struct rue_softc *sc = device_get_softc(dev); struct mii_data *mii = GET_MII(sc); uint16_t bmcr; + uint8_t do_unlock; - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } RUE_CFG_CLRBIT(sc, RUE_CR, (RUE_CR_RE | RUE_CR_TE)); @@ -497,7 +520,9 @@ RUE_CFG_SETBIT(sc, RUE_CR, (RUE_CR_RE | RUE_CR_TE)); - mtx_unlock(&(sc->sc_mtx)); /* XXX */ + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } #endif return; } @@ -599,10 +624,13 @@ struct usb2_attach_arg *uaa = device_get_ivars(dev); if (uaa->usb2_mode != USB_MODE_HOST) { - return ((ENXIO)); + return (ENXIO); + } + if (uaa->info.bConfigIndex != RUE_CONFIG_IDX) { + return (ENXIO); } - if (uaa->info.bConfigIndex != 0) { - return ((ENXIO)); + if (uaa->info.bIfaceIndex != RUE_IFACE_IDX) { + return (ENXIO); } return (usb2_lookup_id_by_uaa(rue_devs, sizeof(rue_devs), uaa)); } @@ -1236,10 +1264,10 @@ struct mii_data *mii; int error = 0; - mtx_lock(&(sc->sc_mtx)); - switch (command) { case SIOCSIFFLAGS: + + mtx_lock(&(sc->sc_mtx)); if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) { usb2_config_td_queue_command @@ -1257,13 +1285,16 @@ &rue_cfg_stop, 0, 0); } } + mtx_unlock(&(sc->sc_mtx)); break; case SIOCADDMULTI: case SIOCDELMULTI: + mtx_lock(&(sc->sc_mtx)); usb2_config_td_queue_command (&(sc->sc_config_td), &rue_config_copy, &rue_cfg_promisc_upd, 0, 0); + mtx_unlock(&(sc->sc_mtx)); break; case SIOCGIFMEDIA: @@ -1281,9 +1312,6 @@ error = ether_ioctl(ifp, command, data); break; } - - mtx_unlock(&(sc->sc_mtx)); - return (error); } ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2_reg.h#3 (text+ko) ==== @@ -26,7 +26,7 @@ * $FreeBSD: src/sys/dev/usb/if_ruereg.h,v 1.8 2007/07/09 20:56:39 imp Exp $ */ -#define RUE_CONFIG_NO 1 +#define RUE_CONFIG_IDX 0 /* config number 1 */ #define RUE_IFACE_IDX 0 #define RUE_ENDPT_MAX 6 ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2.c#3 (text+ko) ==== @@ -244,10 +244,13 @@ struct usb2_attach_arg *uaa = device_get_ivars(dev); if (uaa->usb2_mode != USB_MODE_HOST) { - return ((ENXIO)); + return (ENXIO); + } + if (uaa->info.bConfigIndex != UDAV_CONFIG_INDEX) { + return (ENXIO); } - if (uaa->info.bConfigIndex != 0) { - return ((ENXIO)); + if (uaa->info.bIfaceIndex != UDAV_IFACE_INDEX) { + return (ENXIO); } return (usb2_lookup_id_by_uaa(udav_devs, sizeof(udav_devs), uaa)); } @@ -1036,10 +1039,9 @@ struct mii_data *mii; int error = 0; - mtx_lock(&(sc->sc_mtx)); - switch (cmd) { case SIOCSIFFLAGS: + mtx_lock(&(sc->sc_mtx)); if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) { usb2_config_td_queue_command @@ -1057,13 +1059,16 @@ &udav_cfg_stop, 0, 0); } } + mtx_unlock(&(sc->sc_mtx)); break; case SIOCADDMULTI: case SIOCDELMULTI: + mtx_lock(&(sc->sc_mtx)); usb2_config_td_queue_command (&(sc->sc_config_td), &udav_config_copy, &udav_cfg_promisc_upd, 0, 0); + mtx_unlock(&(sc->sc_mtx)); break; case SIOCGIFMEDIA: @@ -1081,9 +1086,6 @@ error = ether_ioctl(ifp, cmd, data); break; } - - mtx_unlock(&(sc->sc_mtx)); - return (error); } @@ -1246,14 +1248,21 @@ udav_cfg_miibus_readreg(device_t dev, int phy, int reg) { struct udav_softc *sc = device_get_softc(dev); + uint16_t data16; uint8_t val[2]; - uint16_t data16; + uint8_t do_unlock; /* XXX: one PHY only for the internal PHY */ if (phy != 0) { return (0); } - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } /* select internal PHY and set PHY register address */ udav_cfg_csr_write1(sc, UDAV_EPAR, @@ -1270,8 +1279,9 @@ /* retrieve the result from data registers */ udav_cfg_csr_read(sc, UDAV_EPDRL, val, 2); - mtx_unlock(&(sc->sc_mtx)); /* XXX */ - + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } data16 = (val[0] | (val[1] << 8)); DPRINTF(10, "phy=%d reg=0x%04x => 0x%04x\n", @@ -1285,12 +1295,19 @@ { struct udav_softc *sc = device_get_softc(dev); uint8_t val[2]; + uint8_t do_unlock; /* XXX: one PHY only for the internal PHY */ if (phy != 0) { return (0); } - mtx_lock(&(sc->sc_mtx)); /* XXX */ + /* avoid recursive locking */ + if (mtx_owned(&(sc->sc_mtx))) { + do_unlock = 0; + } else { + mtx_lock(&(sc->sc_mtx)); + do_unlock = 1; + } /* select internal PHY and set PHY register address */ udav_cfg_csr_write1(sc, UDAV_EPAR, @@ -1309,8 +1326,9 @@ /* end write command */ UDAV_CFG_CLRBIT(sc, UDAV_EPCR, UDAV_EPCR_ERPRW); - mtx_unlock(&(sc->sc_mtx)); /* XXX */ - + if (do_unlock) { + mtx_unlock(&(sc->sc_mtx)); + } return (0); } ==== //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2_reg.h#3 (text+ko) ==== @@ -32,7 +32,7 @@ */ #define UDAV_IFACE_INDEX 0 -#define UDAV_CONFIG_NO 1 +#define UDAV_CONFIG_INDEX 0 /* config number 1 */ #define UDAV_ENDPT_MAX 6 /* units */ From julian at FreeBSD.org Thu Jul 3 09:39:22 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 09:39:24 2008 Subject: PERFORCE change 144545 for review Message-ID: <200807030939.m639dLMS030562@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144545 Change 144545 by julian@julian_trafmon1 on 2008/07/03 09:38:44 Aint kepping up with -current fun? Affected files ... .. //depot/projects/vimage/src/sys/net80211/ieee80211.c#16 edit .. //depot/projects/vimage/src/sys/netinet6/in6_src.c#17 edit .. //depot/projects/vimage/src/sys/nlm/nlm_advlock.c#2 edit Differences ... ==== //depot/projects/vimage/src/sys/net80211/ieee80211.c#16 (text+ko) ==== @@ -219,7 +219,6 @@ void ieee80211_ifattach(struct ieee80211com *ic) { - INIT_VNET_NET(curvnet); struct ifnet *ifp = ic->ic_ifp; struct sockaddr_dl *sdl; struct ifaddr *ifa; ==== //depot/projects/vimage/src/sys/netinet6/in6_src.c#17 (text+ko) ==== @@ -455,7 +455,6 @@ struct ifnet **retifp, struct rtentry **retrt, int clone, int norouteok) { - INIT_VNET_NET(curvnet); INIT_VNET_INET6(curvnet); int error = 0; struct ifnet *ifp = NULL; ==== //depot/projects/vimage/src/sys/nlm/nlm_advlock.c#2 (text+ko) ==== @@ -25,6 +25,7 @@ * SUCH DAMAGE. */ +#include "opt_vimage.h" #include __FBSDID("$FreeBSD: src/sys/nlm/nlm_advlock.c,v 1.1 2008/06/26 10:21:54 dfr Exp $"); @@ -42,6 +43,7 @@ #include #include #include +#include #include #include @@ -1218,11 +1220,11 @@ return (EOVERFLOW); } - snprintf(oh_space, 32, "%d@%s", svid, hostname); + snprintf(oh_space, 32, "%d@%s", svid, G_hostname); oh_len = strlen(oh_space); memset(lock, 0, sizeof(*lock)); - lock->caller_name = hostname; + lock->caller_name = G_hostname; lock->fh.n_len = fhlen; lock->fh.n_bytes = fh; lock->oh.n_len = oh_len; From hselasky at FreeBSD.org Thu Jul 3 09:44:27 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 09:44:29 2008 Subject: PERFORCE change 144546 for review Message-ID: <200807030944.m639iQ1W030980@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144546 Change 144546 by hselasky@hselasky_laptop001 on 2008/07/03 09:43:46 USB WLAN module related - add interface index checks in probe function. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#3 (text+ko) ==== @@ -427,6 +427,9 @@ if (uaa->info.bConfigIndex != 0) { return (ENXIO); } + if (uaa->info.bIfaceIndex != RT2573_IFACE_INDEX) { + return (ENXIO); + } return (usb2_lookup_id_by_uaa(rum_devs, sizeof(rum_devs), uaa)); } ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#3 (text+ko) ==== @@ -420,6 +420,9 @@ if (uaa->info.bConfigIndex != 0) { return (ENXIO); } + if (uaa->info.bIfaceIndex != RAL_IFACE_INDEX) { + return (ENXIO); + } return (usb2_lookup_id_by_uaa(ural_devs, sizeof(ural_devs), uaa)); } ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#3 (text+ko) ==== @@ -1036,6 +1036,9 @@ if (uaa->info.bConfigIndex != 0) { return (ENXIO); } + if (uaa->info.bIfaceIndex != ZYD_IFACE_INDEX) { + return (ENXIO); + } return (usb2_lookup_id_by_uaa(zyd_devs, sizeof(zyd_devs), uaa)); } From hselasky at FreeBSD.org Thu Jul 3 13:50:35 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 13:50:40 2008 Subject: PERFORCE change 144550 for review Message-ID: <200807031350.m63DoYhq065273@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144550 Change 144550 by hselasky@hselasky_laptop001 on 2008/07/03 13:49:34 More and more USB devices come with autoinstall. Most of the time we just want to ignore these autoinstall disks. This patch implements a small SCSI driver that will look for mass storage devices in the first USB configuration. If it finds a USB CD-ROM USB device and there are more USB configurations, it will skip this configuration. Potentially we could also use this small SCSI driver to automatically test for USB mass storage quirks. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#8 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_msctest.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_msctest.h#1 add .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_parse.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_parse.h#2 edit .. //depot/projects/usb/src/sys/modules/usb2/core/Makefile#4 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#8 (text+ko) ==== @@ -44,6 +44,7 @@ #include #include #include +#include #include @@ -1507,23 +1508,36 @@ if (udev->flags.usb2_mode == USB_MODE_HOST) { uint8_t config_index; + uint8_t config_quirk; /* - * most USB devices should attach to config index 0 by + * Most USB devices should attach to config index 0 by * default */ - if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_1)) { + if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_0)) { + config_index = 1; + config_quirk = 1; + } else if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_1)) { config_index = 1; + config_quirk = 1; } else if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_2)) { config_index = 2; + config_quirk = 1; } else if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_3)) { config_index = 3; + config_quirk = 1; } else if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_4)) { config_index = 4; + config_quirk = 1; } else { config_index = 0; + config_quirk = 0; } +repeat_set_config: + + DPRINTF(0, "setting config %u\n", config_index); + /* get the USB device configured */ sx_xlock(udev->default_sx + 1); err = usb2_set_config_index(udev, config_index); @@ -1533,8 +1547,34 @@ "configuration index %u: %s, port %u, addr %u\n", config_index, usb2_errstr(err), udev->port_no, udev->address); + + } else if ((!config_quirk) && + ((config_index + 1) < udev->ddesc.bNumConfigurations)) { + + if ((udev->cdesc->bNumInterface < 2) && + (usb2_get_no_endpoints(udev->cdesc) == 0)) { + DPRINTF(-1, "Found no endpoints " + "(trying next config)!\n"); + config_index++; + goto repeat_set_config; + } + if (config_index == 0) { + /* + * Try to figure out if we have an + * auto-install disk there: + */ + if (usb2_test_autoinstall(udev, 0) == 0) { + DPRINTF(-1, "Found possible auto-install " + "disk (trying next config)\n"); + config_index++; + goto repeat_set_config; + } + } } + } else { + err = 0; /* set success */ } + DPRINTF(0, "new dev (addr %d), udev=%p, parent_hub=%p\n", udev->address, udev, udev->parent_hub); @@ -1542,8 +1582,6 @@ usb2_bus_port_set_device(bus, parent_hub ? parent_hub->hub->ports + port_index : NULL, udev, device_index); - err = 0; /* set success */ - done: if (err) { /* free device */ ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_parse.c#2 (text+ko) ==== @@ -159,6 +159,25 @@ } /*------------------------------------------------------------------------* + * usb2_get_no_endpoints + * + * This function will count the total number of endpoints available. + *------------------------------------------------------------------------*/ +uint16_t +usb2_get_no_endpoints(struct usb2_config_descriptor *cd) +{ + struct usb2_descriptor *desc = NULL; + uint16_t count = 0; + + while ((desc = usb2_desc_foreach(cd, desc))) { + if (desc->bDescriptorType == UDESC_ENDPOINT) { + count++; + } + } + return (count); +} + +/*------------------------------------------------------------------------* * usb2_get_no_alts * * Return value: ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_parse.h#2 (text+ko) ==== @@ -29,6 +29,7 @@ struct usb2_descriptor *usb2_desc_foreach(struct usb2_config_descriptor *cd, struct usb2_descriptor *desc); struct usb2_interface_descriptor *usb2_find_idesc(struct usb2_config_descriptor *cd, uint8_t iface_index, uint8_t alt_index); struct usb2_endpoint_descriptor *usb2_find_edesc(struct usb2_config_descriptor *cd, uint8_t iface_index, uint8_t alt_index, uint8_t ep_index); +uint16_t usb2_get_no_endpoints(struct usb2_config_descriptor *cd); uint16_t usb2_get_no_alts(struct usb2_config_descriptor *cd, uint8_t ifaceno); #endif /* _USB2_PARSE_H_ */ ==== //depot/projects/usb/src/sys/modules/usb2/core/Makefile#4 (text+ko) ==== @@ -5,6 +5,7 @@ KMOD= usb2_core SRCS= SRCS+= bus_if.h usb2_if.h device_if.h vnode_if.h opt_usb.h opt_bus.h +SRCS+= usb2_if.c SRCS+= usb2_busdma.c SRCS+= usb2_compat_linux.c SRCS+= usb2_config_td.c @@ -19,6 +20,7 @@ SRCS+= usb2_hub.c SRCS+= usb2_lookup.c SRCS+= usb2_mbuf.c +SRCS+= usb2_msctest.c SRCS+= usb2_parse.c SRCS+= usb2_process.c SRCS+= usb2_request.c From hselasky at FreeBSD.org Thu Jul 3 19:26:15 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 19:26:18 2008 Subject: PERFORCE change 144564 for review Message-ID: <200807031926.m63JQERN009865@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144564 Change 144564 by hselasky@hselasky_laptop001 on 2008/07/03 19:25:36 New USB storage module is finished. - mostly symbol renaming - some minor changes Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#9 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#5 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_ioctl.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/ata-usb2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/urio2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/usb2_storage.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/storage/usb2_storage.h#1 add .. //depot/projects/usb/src/sys/dev/usb2/storage/ustorage2_fs.c#2 edit .. //depot/projects/usb/src/sys/modules/usb2/storage/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#9 (text+ko) ==== @@ -1515,7 +1515,7 @@ * default */ if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_0)) { - config_index = 1; + config_index = 0; config_quirk = 1; } else if (usb2_test_quirk(&uaa, UQ_CFG_INDEX_1)) { config_index = 1; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#5 (text+ko) ==== @@ -793,7 +793,7 @@ return (0); } -static int +int ugen_do_request(struct usb2_fifo *f, struct usb2_ctl_request *ur) { int error; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.h#2 (text+ko) ==== @@ -27,5 +27,6 @@ #define _USB2_GENERIC_H_ extern struct usb2_fifo_methods usb2_ugen_methods; +int ugen_do_request(struct usb2_fifo *f, struct usb2_ctl_request *ur); #endif /* _USB2_GENERIC_H_ */ ==== //depot/projects/usb/src/sys/dev/usb2/include/usb2_ioctl.h#4 (text+ko) ==== @@ -39,7 +39,7 @@ #define USB_SHORT_XFER_OK 0x0004 /* allow short reads */ #define USB_DELAY_STATUS_STAGE 0x0010 /* insert delay before STATUS stage */ uint16_t ucr_actlen; /* actual length transferred */ - uint8_t ucr_addr; + uint8_t ucr_addr; /* zero - currently not used */ struct usb2_device_request ucr_request; }; ==== //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.h#3 (text+ko) ==== @@ -73,7 +73,9 @@ /* select configuration index 3 by default */ \ m(n, UQ_CFG_INDEX_3) \ /* select configuration index 4 by default */ \ - m(n, UQ_CFG_INDEX_4) + m(n, UQ_CFG_INDEX_4) \ + /* select configuration index 0 by default */ \ + m(n, UQ_CFG_INDEX_0) USB_MAKE_ENUM(USB_QUIRK); ==== //depot/projects/usb/src/sys/dev/usb2/storage/ata-usb2.c#2 (text) ==== @@ -30,21 +30,26 @@ #include __FBSDID("$FreeBSD: src/sys/dev/ata/ata-usb.c,v 1.8 2008/04/10 13:05:05 sos Exp $"); -#include "opt_ata.h" -#include -#include -#include -#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + #include #include #include +#include #include -#include -#include -#include -#include - #include #include @@ -82,7 +87,7 @@ } __packed; /* USB-ATA 'controller' softc */ -struct atausb_softc { +struct atausb2_softc { struct bbb_cbw cbw; struct bbb_csw csw; struct mtx locked_mtx; @@ -104,7 +109,7 @@ #define ATAUSB_T_MAX ATAUSB_T_BBB_MAX - struct usbd_xfer *xfer[ATAUSB_T_MAX]; + struct usb2_xfer *xfer[ATAUSB_T_MAX]; caddr_t ata_data; device_t dev; @@ -113,7 +118,7 @@ uint32_t ata_bytecount; uint8_t last_xfer_no; - uint8_t usb_speed; + uint8_t usb2_speed; uint8_t intr_stalled; uint8_t maxlun; uint8_t iface_no; @@ -124,24 +129,24 @@ /* prototypes */ -static device_probe_t atausb_probe; -static device_attach_t atausb_attach; -static device_detach_t atausb_detach; +static device_probe_t atausb2_probe; +static device_attach_t atausb2_attach; +static device_detach_t atausb2_detach; -static usbd_callback_t atausb_t_bbb_reset1_callback; -static usbd_callback_t atausb_t_bbb_reset2_callback; -static usbd_callback_t atausb_t_bbb_reset3_callback; -static usbd_callback_t atausb_t_bbb_command_callback; -static usbd_callback_t atausb_t_bbb_data_read_callback; -static usbd_callback_t atausb_t_bbb_data_rd_cs_callback; -static usbd_callback_t atausb_t_bbb_data_write_callback; -static usbd_callback_t atausb_t_bbb_data_wr_cs_callback; -static usbd_callback_t atausb_t_bbb_status_callback; -static usbd_callback_t atausb_tr_error; +static usb2_callback_t atausb2_t_bbb_reset1_callback; +static usb2_callback_t atausb2_t_bbb_reset2_callback; +static usb2_callback_t atausb2_t_bbb_reset3_callback; +static usb2_callback_t atausb2_t_bbb_command_callback; +static usb2_callback_t atausb2_t_bbb_data_read_callback; +static usb2_callback_t atausb2_t_bbb_data_rd_cs_callback; +static usb2_callback_t atausb2_t_bbb_data_write_callback; +static usb2_callback_t atausb2_t_bbb_data_wr_cs_callback; +static usb2_callback_t atausb2_t_bbb_status_callback; +static usb2_callback_t atausb2_tr_error; -static void atausb_cancel_request(struct atausb_softc *sc); -static void atausb_transfer_start(struct atausb_softc *sc, uint8_t xfer_no); -static void atausb_t_bbb_data_clear_stall_callback(struct usbd_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); +static void atausb2_cancel_request(struct atausb2_softc *sc); +static void atausb2_transfer_start(struct atausb2_softc *sc, uint8_t xfer_no); +static void atausb2_t_bbb_data_clear_stall_callback(struct usb2_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); static int ata_usbchannel_begin_transaction(struct ata_request *request); static int ata_usbchannel_end_transaction(struct ata_request *request); @@ -156,15 +161,15 @@ * USB frontend part */ -struct usbd_config atausb_config[ATAUSB_T_BBB_MAX] = { +struct usb2_config atausb2_config[ATAUSB_T_BBB_MAX] = { [ATAUSB_T_BBB_RESET1] = { .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_reset1_callback, + .mh.callback = &atausb2_t_bbb_reset1_callback, .mh.timeout = 5000, /* 5 seconds */ .mh.interval = 500, /* 500 milliseconds */ }, @@ -173,9 +178,9 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_reset2_callback, + .mh.callback = &atausb2_t_bbb_reset2_callback, .mh.timeout = 5000, /* 5 seconds */ .mh.interval = 50, /* 50 milliseconds */ }, @@ -184,9 +189,9 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_reset3_callback, + .mh.callback = &atausb2_t_bbb_reset3_callback, .mh.timeout = 5000, /* 5 seconds */ .mh.interval = 50, /* 50 milliseconds */ }, @@ -197,7 +202,7 @@ .direction = UE_DIR_OUT, .mh.bufsize = sizeof(struct bbb_cbw), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_command_callback, + .mh.callback = &atausb2_t_bbb_command_callback, .mh.timeout = 5000, /* 5 seconds */ }, @@ -207,7 +212,7 @@ .direction = UE_DIR_IN, .mh.bufsize = ATAUSB_BULK_SIZE, .mh.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, - .mh.callback = &atausb_t_bbb_data_read_callback, + .mh.callback = &atausb2_t_bbb_data_read_callback, .mh.timeout = 0, /* overwritten later */ }, @@ -215,9 +220,9 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_data_rd_cs_callback, + .mh.callback = &atausb2_t_bbb_data_rd_cs_callback, .mh.timeout = 5000, /* 5 seconds */ }, @@ -227,7 +232,7 @@ .direction = UE_DIR_OUT, .mh.bufsize = ATAUSB_BULK_SIZE, .mh.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, - .mh.callback = &atausb_t_bbb_data_write_callback, + .mh.callback = &atausb2_t_bbb_data_write_callback, .mh.timeout = 0, /* overwritten later */ }, @@ -235,9 +240,9 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, - .mh.callback = &atausb_t_bbb_data_wr_cs_callback, + .mh.callback = &atausb2_t_bbb_data_wr_cs_callback, .mh.timeout = 5000, /* 5 seconds */ }, @@ -247,45 +252,42 @@ .direction = UE_DIR_IN, .mh.bufsize = sizeof(struct bbb_csw), .mh.flags = {.short_xfer_ok = 1,}, - .mh.callback = &atausb_t_bbb_status_callback, + .mh.callback = &atausb2_t_bbb_status_callback, .mh.timeout = 5000, /* ms */ }, }; -static devclass_t atausb_devclass; +static devclass_t atausb2_devclass; -static device_method_t atausb_methods[] = { - DEVMETHOD(device_probe, atausb_probe), - DEVMETHOD(device_attach, atausb_attach), - DEVMETHOD(device_detach, atausb_detach), +static device_method_t atausb2_methods[] = { + DEVMETHOD(device_probe, atausb2_probe), + DEVMETHOD(device_attach, atausb2_attach), + DEVMETHOD(device_detach, atausb2_detach), {0, 0} }; -static driver_t atausb_driver = { +static driver_t atausb2_driver = { .name = "atausb", - .methods = atausb_methods, - .size = sizeof(struct atausb_softc), + .methods = atausb2_methods, + .size = sizeof(struct atausb2_softc), }; -DRIVER_MODULE(atausb, uhub, atausb_driver, atausb_devclass, 0, 0); -MODULE_DEPEND(atausb, usb, 1, 1, 1); +DRIVER_MODULE(atausb, ushub, atausb2_driver, atausb2_devclass, 0, 0); +MODULE_DEPEND(atausb, usb2_core, 1, 1, 1); MODULE_VERSION(atausb, 1); static int -atausb_probe(device_t dev) +atausb2_probe(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); - usb_interface_descriptor_t *id; + struct usb2_attach_arg *uaa = device_get_ivars(dev); + struct usb2_interface_descriptor *id; - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - if (uaa->iface == NULL) { - return (UMATCH_NONE); - } - id = usbd_get_interface_descriptor(uaa->iface); + id = usb2_get_interface_descriptor(uaa->iface); if ((!id) || (id->bInterfaceClass != UICLASS_MASS)) { - return (UMATCH_NONE); + return (ENXIO); } switch (id->bInterfaceSubClass) { case UISUBCLASS_QIC157: @@ -299,24 +301,24 @@ case UIPROTO_MASS_CBI_I: case UIPROTO_MASS_BBB: case UIPROTO_MASS_BBB_OLD: - return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO); + return (0); default: - return (UMATCH_IFACECLASS_IFACESUBCLASS); + return (0); } break; default: - return (UMATCH_IFACECLASS); + return (0); } } static int -atausb_attach(device_t dev) +atausb2_attach(device_t dev) { - struct atausb_softc *sc = device_get_softc(dev); - struct usb_attach_arg *uaa = device_get_ivars(dev); - usb_interface_descriptor_t *id; + struct atausb2_softc *sc = device_get_softc(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); + struct usb2_interface_descriptor *id; const char *proto, *subclass; - usb_device_request_t request; + struct usb2_device_request request; uint16_t i; uint8_t maxlun; uint8_t has_intr; @@ -325,16 +327,16 @@ if (sc == NULL) { return (ENOMEM); } - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); sc->dev = dev; sc->maxlun = 0; sc->locked_ch = NULL; sc->restart_ch = NULL; - sc->usb_speed = usbd_get_speed(uaa->device); + sc->usb2_speed = usb2_get_speed(uaa->device); mtx_init(&(sc->locked_mtx), "ATAUSB lock", NULL, (MTX_DEF | MTX_RECURSE)); - id = usbd_get_interface_descriptor(uaa->iface); + id = usb2_get_interface_descriptor(uaa->iface); switch (id->bInterfaceProtocol) { case UIPROTO_MASS_BBB: case UIPROTO_MASS_BBB_OLD: @@ -377,15 +379,16 @@ (strcmp(subclass, "ATAPI") && strcmp(subclass, "SCSI"))) { goto detach; } - err = usbd_transfer_setup(uaa->device, &(uaa->iface_index), sc->xfer, - atausb_config, ATAUSB_T_BBB_MAX, sc, &(sc->locked_mtx)); + err = usb2_transfer_setup(uaa->device, &(uaa->info.bIfaceIndex), + sc->xfer, atausb2_config, ATAUSB_T_BBB_MAX, sc, + &(sc->locked_mtx)); /* skip reset first time */ sc->last_xfer_no = ATAUSB_T_BBB_COMMAND; if (err) { device_printf(sc->dev, "could not setup required " - "transfers, %s\n", usbd_errstr(err)); + "transfers, %s\n", usb2_errstr(err)); goto detach; } /* get number of devices so we can add matching channels */ @@ -394,12 +397,12 @@ USETW(request.wValue, 0); USETW(request.wIndex, sc->iface_no); USETW(request.wLength, sizeof(maxlun)); - err = usbd_do_request(uaa->device, &usb_global_lock, &request, &maxlun); + err = usb2_do_request(uaa->device, &Giant, &request, &maxlun); if (err) { if (bootverbose) { device_printf(sc->dev, "get maxlun not supported %s\n", - usbd_errstr(err)); + usb2_errstr(err)); } } else { sc->maxlun = maxlun; @@ -421,20 +424,20 @@ return (0); detach: - atausb_detach(dev); + atausb2_detach(dev); return (ENXIO); } static int -atausb_detach(device_t dev) +atausb2_detach(device_t dev) { - struct atausb_softc *sc = device_get_softc(dev); + struct atausb2_softc *sc = device_get_softc(dev); device_t *children; int nchildren, i; /* teardown our statemachine */ - usbd_transfer_unsetup(sc->xfer, ATAUSB_T_MAX); + usb2_transfer_unsetup(sc->xfer, ATAUSB_T_MAX); /* detach & delete all children, if any */ @@ -449,32 +452,32 @@ } static void -atausb_transfer_start(struct atausb_softc *sc, uint8_t xfer_no) +atausb2_transfer_start(struct atausb2_softc *sc, uint8_t xfer_no) { if (atausbdebug) { device_printf(sc->dev, "BBB transfer %d\n", xfer_no); } if (sc->xfer[xfer_no]) { sc->last_xfer_no = xfer_no; - usbd_transfer_start(sc->xfer[xfer_no]); + usb2_transfer_start(sc->xfer[xfer_no]); } else { - atausb_cancel_request(sc); + atausb2_cancel_request(sc); } return; } static void -atausb_t_bbb_reset1_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_reset1_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; - usb_device_request_t req; + struct atausb2_softc *sc = xfer->priv_sc; + struct usb2_device_request req; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: - atausb_transfer_start(sc, ATAUSB_T_BBB_RESET2); + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + atausb2_transfer_start(sc, ATAUSB_T_BBB_RESET2); return; - case USBD_ST_SETUP: + case USB_ST_SETUP: req.bmRequestType = UT_WRITE_CLASS_INTERFACE; req.bRequest = 0xff; /* bulk-only reset */ USETW(req.wValue, 0); @@ -482,79 +485,79 @@ req.wIndex[1] = 0; USETW(req.wLength, 0); - usbd_copy_in(xfer->frbuffers, 0, &req, sizeof(req)); + usb2_copy_in(xfer->frbuffers, 0, &req, sizeof(req)); xfer->frlengths[0] = sizeof(req); xfer->nframes = 1; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - atausb_tr_error(xfer); + atausb2_tr_error(xfer); return; } } static void -atausb_t_bbb_reset2_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_reset2_callback(struct usb2_xfer *xfer) { - atausb_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_RESET3, + atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_RESET3, ATAUSB_T_BBB_DATA_READ); return; } static void -atausb_t_bbb_reset3_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_reset3_callback(struct usb2_xfer *xfer) { - atausb_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_COMMAND, + atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_COMMAND, ATAUSB_T_BBB_DATA_WRITE); return; } static void -atausb_t_bbb_data_clear_stall_callback(struct usbd_xfer *xfer, +atausb2_t_bbb_data_clear_stall_callback(struct usb2_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: - atausb_transfer_start(sc, next_xfer); + atausb2_transfer_start(sc, next_xfer); return; - case USBD_ST_SETUP: - if (usbd_clear_stall_callback(xfer, sc->xfer[stall_xfer])) { + case USB_ST_SETUP: + if (usb2_clear_stall_callback(xfer, sc->xfer[stall_xfer])) { goto tr_transferred; } return; default: /* Error */ - atausb_tr_error(xfer); + atausb2_tr_error(xfer); return; } } static void -atausb_t_bbb_command_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_command_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; struct ata_request *request = sc->ata_request; struct ata_channel *ch; uint32_t tag; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: - atausb_transfer_start + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + atausb2_transfer_start (sc, ((request->flags & ATA_R_READ) ? ATAUSB_T_BBB_DATA_READ : (request->flags & ATA_R_WRITE) ? ATAUSB_T_BBB_DATA_WRITE : ATAUSB_T_BBB_STATUS)); return; - case USBD_ST_SETUP: + case USB_ST_SETUP: sc->status_try = 0; @@ -574,30 +577,30 @@ bzero(sc->cbw.cdb, 16); bcopy(request->u.atapi.ccb, sc->cbw.cdb, 12); /* XXX SOS */ - usbd_copy_in(xfer->frbuffers, 0, &(sc->cbw), sizeof(sc->cbw)); + usb2_copy_in(xfer->frbuffers, 0, &(sc->cbw), sizeof(sc->cbw)); xfer->frlengths[0] = sizeof(sc->cbw); - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); } return; default: /* Error */ - atausb_tr_error(xfer); + atausb2_tr_error(xfer); return; } } static void -atausb_t_bbb_data_read_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_data_read_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; uint32_t max_bulk = xfer->max_data_length; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: - usbd_copy_out(xfer->frbuffers, 0, + usb2_copy_out(xfer->frbuffers, 0, sc->ata_data, xfer->actlen); sc->ata_bytecount -= xfer->actlen; @@ -608,14 +611,14 @@ /* short transfer */ sc->ata_bytecount = 0; } - case USBD_ST_SETUP: + case USB_ST_SETUP: if (atausbdebug > 1) { device_printf(sc->dev, "%s: max_bulk=%d, ata_bytecount=%d\n", __FUNCTION__, max_bulk, sc->ata_bytecount); } if (sc->ata_bytecount == 0) { - atausb_transfer_start(sc, ATAUSB_T_BBB_STATUS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_STATUS); return; } if (max_bulk > sc->ata_bytecount) { @@ -624,14 +627,14 @@ xfer->timeout = sc->timeout; xfer->frlengths[0] = max_bulk; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { - atausb_tr_error(xfer); + if (xfer->error == USB_ERR_CANCELLED) { + atausb2_tr_error(xfer); } else { - atausb_transfer_start(sc, ATAUSB_T_BBB_DATA_RD_CS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_DATA_RD_CS); } return; @@ -639,34 +642,34 @@ } static void -atausb_t_bbb_data_rd_cs_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_data_rd_cs_callback(struct usb2_xfer *xfer) { - atausb_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS, + atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS, ATAUSB_T_BBB_DATA_READ); return; } static void -atausb_t_bbb_data_write_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_data_write_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; uint32_t max_bulk = xfer->max_data_length; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: sc->ata_bytecount -= xfer->actlen; sc->ata_data += xfer->actlen; sc->ata_donecount += xfer->actlen; - case USBD_ST_SETUP: + case USB_ST_SETUP: if (atausbdebug > 1) { device_printf(sc->dev, "%s: max_bulk=%d, ata_bytecount=%d\n", __FUNCTION__, max_bulk, sc->ata_bytecount); } if (sc->ata_bytecount == 0) { - atausb_transfer_start(sc, ATAUSB_T_BBB_STATUS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_STATUS); return; } if (max_bulk > sc->ata_bytecount) { @@ -675,17 +678,17 @@ xfer->timeout = sc->timeout; xfer->frlengths[0] = max_bulk; - usbd_copy_in(xfer->frbuffers, 0, + usb2_copy_in(xfer->frbuffers, 0, sc->ata_data, max_bulk); - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { - atausb_tr_error(xfer); + if (xfer->error == USB_ERR_CANCELLED) { + atausb2_tr_error(xfer); } else { - atausb_transfer_start(sc, ATAUSB_T_BBB_DATA_WR_CS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_DATA_WR_CS); } return; @@ -693,27 +696,27 @@ } static void -atausb_t_bbb_data_wr_cs_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_data_wr_cs_callback(struct usb2_xfer *xfer) { - atausb_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS, + atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS, ATAUSB_T_BBB_DATA_WRITE); return; } static void -atausb_t_bbb_status_callback(struct usbd_xfer *xfer) +atausb2_t_bbb_status_callback(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; struct ata_request *request = sc->ata_request; uint32_t residue; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: if (xfer->actlen < sizeof(sc->csw)) { bzero(&(sc->csw), sizeof(sc->csw)); } - usbd_copy_out(xfer->frbuffers, 0, &(sc->csw), xfer->actlen); + usb2_copy_out(xfer->frbuffers, 0, &(sc->csw), xfer->actlen); if (request->flags & (ATA_R_READ | ATA_R_WRITE)) { request->donecount = sc->ata_donecount; @@ -778,19 +781,19 @@ mtx_lock(xfer->priv_mtx); return; - case USBD_ST_SETUP: + case USB_ST_SETUP: xfer->frlengths[0] = xfer->max_data_length; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: tr_error: - if ((xfer->error == USBD_ERR_CANCELLED) || + if ((xfer->error == USB_ERR_CANCELLED) || (sc->status_try)) { - atausb_tr_error(xfer); + atausb2_tr_error(xfer); } else { sc->status_try = 1; - atausb_transfer_start(sc, ATAUSB_T_BBB_DATA_RD_CS); + atausb2_transfer_start(sc, ATAUSB_T_BBB_DATA_RD_CS); } return; @@ -798,7 +801,7 @@ } static void -atausb_cancel_request(struct atausb_softc *sc) +atausb2_cancel_request(struct atausb2_softc *sc) { struct ata_request *request; @@ -821,19 +824,19 @@ } static void -atausb_tr_error(struct usbd_xfer *xfer) +atausb2_tr_error(struct usb2_xfer *xfer) { - struct atausb_softc *sc = xfer->priv_sc; + struct atausb2_softc *sc = xfer->priv_sc; - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { if (atausbdebug) { device_printf(sc->dev, "transfer failed, %s, in state %d " - "-> BULK reset\n", usbd_errstr(xfer->error), + "-> BULK reset\n", usb2_errstr(xfer->error), sc->last_xfer_no); } } - atausb_cancel_request(sc); + atausb2_cancel_request(sc); return; } @@ -858,7 +861,7 @@ static int ata_usbchannel_begin_transaction(struct ata_request *request) { - struct atausb_softc *sc = + struct atausb2_softc *sc = device_get_softc(device_get_parent(request->parent)); int error; @@ -906,7 +909,7 @@ sc->ata_data = request->data; sc->ata_donecount = 0; - usbd_transfer_start(sc->xfer[sc->last_xfer_no]); + usb2_transfer_start(sc->xfer[sc->last_xfer_no]); error = ATA_OP_CONTINUES; } else { request->result = EIO; @@ -1034,10 +1037,10 @@ static void ata_usbchannel_setmode(device_t parent, device_t dev) { - struct atausb_softc *sc = device_get_softc(GRANDPARENT(dev)); + struct atausb2_softc *sc = device_get_softc(GRANDPARENT(dev)); struct ata_device *atadev = device_get_softc(dev); - if (sc->usb_speed == USB_SPEED_HIGH) + if (sc->usb2_speed == USB_SPEED_HIGH) atadev->mode = ATA_USB2; else atadev->mode = ATA_USB1; @@ -1047,7 +1050,7 @@ static int ata_usbchannel_locking(device_t dev, int flags) { - struct atausb_softc *sc = device_get_softc(device_get_parent(dev)); + struct atausb2_softc *sc = device_get_softc(device_get_parent(dev)); struct ata_channel *ch = device_get_softc(dev); int res = -1; ==== //depot/projects/usb/src/sys/dev/usb2/storage/umass2.c#2 (text+ko) ==== @@ -102,17 +102,20 @@ * umass_cam_cb again to complete the CAM command. */ -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include -#include "usbdevs.h" - #include #include #include @@ -157,8 +160,8 @@ #define UDMASS_ALL 0xffff0000 /* all of the above */ static int umass_debug = 0; -SYSCTL_NODE(_hw_usb, OID_AUTO, umass, CTLFLAG_RW, 0, "USB umass"); -SYSCTL_INT(_hw_usb_umass, OID_AUTO, debug, CTLFLAG_RW, +SYSCTL_NODE(_hw_usb2, OID_AUTO, umass, CTLFLAG_RW, 0, "USB umass"); +SYSCTL_INT(_hw_usb2_umass, OID_AUTO, debug, CTLFLAG_RW, &umass_debug, 0, "umass debug level"); #else #define DIF(...) do { } while (0) @@ -927,9 +930,9 @@ umass_cbi_sbl_t sbl; /* status block */ device_t sc_dev; - struct usbd_device *sc_udev; + struct usb2_device *sc_udev; struct cam_sim *sc_sim; /* SCSI Interface Module */ - struct usbd_xfer *sc_xfer[UMASS_T_MAX]; + struct usb2_xfer *sc_xfer[UMASS_T_MAX]; /* * The command transform function is used to convert the SCSI @@ -962,35 +965,35 @@ static device_attach_t umass_attach; static device_detach_t umass_detach; -static usbd_callback_t umass_tr_error; -static usbd_callback_t umass_t_bbb_reset1_callback; -static usbd_callback_t umass_t_bbb_reset2_callback; -static usbd_callback_t umass_t_bbb_reset3_callback; -static usbd_callback_t umass_t_bbb_command_callback; -static usbd_callback_t umass_t_bbb_data_read_callback; -static usbd_callback_t umass_t_bbb_data_rd_cs_callback; -static usbd_callback_t umass_t_bbb_data_write_callback; -static usbd_callback_t umass_t_bbb_data_wr_cs_callback; -static usbd_callback_t umass_t_bbb_status_callback; -static usbd_callback_t umass_t_cbi_reset1_callback; -static usbd_callback_t umass_t_cbi_reset2_callback; -static usbd_callback_t umass_t_cbi_reset3_callback; -static usbd_callback_t umass_t_cbi_reset4_callback; -static usbd_callback_t umass_t_cbi_command_callback; -static usbd_callback_t umass_t_cbi_data_read_callback; -static usbd_callback_t umass_t_cbi_data_rd_cs_callback; -static usbd_callback_t umass_t_cbi_data_write_callback; -static usbd_callback_t umass_t_cbi_data_wr_cs_callback; -static usbd_callback_t umass_t_cbi_status_callback; +static usb2_callback_t umass_tr_error; +static usb2_callback_t umass_t_bbb_reset1_callback; +static usb2_callback_t umass_t_bbb_reset2_callback; +static usb2_callback_t umass_t_bbb_reset3_callback; +static usb2_callback_t umass_t_bbb_command_callback; +static usb2_callback_t umass_t_bbb_data_read_callback; +static usb2_callback_t umass_t_bbb_data_rd_cs_callback; +static usb2_callback_t umass_t_bbb_data_write_callback; +static usb2_callback_t umass_t_bbb_data_wr_cs_callback; +static usb2_callback_t umass_t_bbb_status_callback; +static usb2_callback_t umass_t_cbi_reset1_callback; +static usb2_callback_t umass_t_cbi_reset2_callback; +static usb2_callback_t umass_t_cbi_reset3_callback; +static usb2_callback_t umass_t_cbi_reset4_callback; +static usb2_callback_t umass_t_cbi_command_callback; +static usb2_callback_t umass_t_cbi_data_read_callback; +static usb2_callback_t umass_t_cbi_data_rd_cs_callback; +static usb2_callback_t umass_t_cbi_data_write_callback; +static usb2_callback_t umass_t_cbi_data_wr_cs_callback; +static usb2_callback_t umass_t_cbi_status_callback; static void umass_cancel_ccb(struct umass_softc *sc); static void umass_init_shuttle(struct umass_softc *sc); static void umass_reset(struct umass_softc *sc); -static void umass_t_bbb_data_clear_stall_callback(struct usbd_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); +static void umass_t_bbb_data_clear_stall_callback(struct usb2_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); static void umass_command_start(struct umass_softc *sc, uint8_t dir, void *data_ptr, uint32_t data_len, uint32_t data_timeout, umass_callback_t *callback, union ccb *ccb); static uint8_t umass_bbb_get_max_lun(struct umass_softc *sc); static void umass_cbi_start_status(struct umass_softc *sc); -static void umass_t_cbi_data_clear_stall_callback(struct usbd_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); +static void umass_t_cbi_data_clear_stall_callback(struct usb2_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); static int umass_cam_attach_sim(struct umass_softc *sc); static void umass_cam_rescan_callback(struct cam_periph *periph, union ccb *ccb); static void umass_cam_rescan(struct umass_softc *sc); @@ -1017,13 +1020,13 @@ #endif >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Thu Jul 3 19:53:43 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 19:53:45 2008 Subject: PERFORCE change 144566 for review Message-ID: <200807031953.m63Jrgen012084@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144566 Change 144566 by hselasky@hselasky_laptop001 on 2008/07/03 19:52:56 Style changes by "usb_style.sh". Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/storage/ata-usb2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/urio2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/usb2_storage.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/storage/ustorage2_fs.c#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/storage/ata-usb2.c#3 (text) ==== @@ -379,8 +379,8 @@ (strcmp(subclass, "ATAPI") && strcmp(subclass, "SCSI"))) { goto detach; } - err = usb2_transfer_setup(uaa->device, &(uaa->info.bIfaceIndex), - sc->xfer, atausb2_config, ATAUSB_T_BBB_MAX, sc, + err = usb2_transfer_setup(uaa->device, &(uaa->info.bIfaceIndex), + sc->xfer, atausb2_config, ATAUSB_T_BBB_MAX, sc, &(sc->locked_mtx)); /* skip reset first time */ ==== //depot/projects/usb/src/sys/dev/usb2/storage/urio2.c#3 (text+ko) ==== @@ -238,7 +238,7 @@ error = usb2_fifo_attach(uaa->device, sc, &(sc->sc_mtx), &urio_fifo_methods, &(sc->sc_fifo), - device_get_unit(dev), 0 - 1, uaa->info.bIfaceIndex); + device_get_unit(dev), 0 - 1, uaa->info.bIfaceIndex); if (error) { goto detach; } ==== //depot/projects/usb/src/sys/dev/usb2/storage/usb2_storage.h#2 (text+ko) ==== @@ -24,6 +24,6 @@ */ #ifndef _USB2_STORAGE_H_ -#define _USB2_STORAGE_H_ +#define _USB2_STORAGE_H_ -#endif /* _USB2_STORAGE_H_ */ +#endif /* _USB2_STORAGE_H_ */ ==== //depot/projects/usb/src/sys/dev/usb2/storage/ustorage2_fs.c#3 (text+ko) ==== @@ -328,12 +328,15 @@ if (sc->sc_unit == 0) { if (ustorage_fs_ramdisk == NULL) { - /* allocate a memory image for our ramdisk until further */ - ustorage_fs_ramdisk = - malloc(USTORAGE_FS_RAM_SECT << 9, M_USB, M_ZERO | M_WAITOK); - if (ustorage_fs_ramdisk == NULL) { - return (ENOMEM); - } + /* + * allocate a memory image for our ramdisk until + * further + */ + ustorage_fs_ramdisk = + malloc(USTORAGE_FS_RAM_SECT << 9, M_USB, M_ZERO | M_WAITOK); + if (ustorage_fs_ramdisk == NULL) { + return (ENOMEM); + } } sc->sc_lun[0].memory_image = ustorage_fs_ramdisk; sc->sc_lun[0].num_sectors = USTORAGE_FS_RAM_SECT; From hselasky at FreeBSD.org Thu Jul 3 20:14:03 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 20:14:06 2008 Subject: PERFORCE change 144567 for review Message-ID: <200807032014.m63KE2OV014759@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144567 Change 144567 by hselasky@hselasky_laptop001 on 2008/07/03 20:13:05 Finished new USB image module. - mostly symbol renaming Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/image/usb2_image.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/image/usb2_image.h#1 add .. //depot/projects/usb/src/sys/dev/usb2/image/uscanner2.c#2 edit .. //depot/projects/usb/src/sys/modules/usb2/image/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/image/uscanner2.c#2 (text+ko) ==== @@ -45,41 +45,36 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include +#include +#include +#include +#include -#include -#include -#include +#define USB_DEBUG_VAR uscanner_debug -#include "usbdevs.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -/* - * uscanner debugging statements. - */ #ifdef USB_DEBUG static int uscanner_debug = 0; -SYSCTL_NODE(_hw_usb, OID_AUTO, uscanner, CTLFLAG_RW, 0, "USB uscanner"); -SYSCTL_INT(_hw_usb_uscanner, OID_AUTO, uscanner, CTLFLAG_RW, &uscanner_debug, +SYSCTL_NODE(_hw_usb2, OID_AUTO, uscanner, CTLFLAG_RW, 0, "USB uscanner"); +SYSCTL_INT(_hw_usb2_uscanner, OID_AUTO, uscanner, CTLFLAG_RW, &uscanner_debug, 0, "uscanner debug level"); - -#define DPRINTF(n, fmt, ...) do { \ - if (uscanner_debug > (n)) { \ - printf("%s: " fmt, __FUNCTION__ \ - ,## __VA_ARGS__); \ - } \ - } while (0) -#else -#define DPRINTF(...) #endif /* * uscanner transfers macros definition. */ -#define USCANNER_BSIZE (1 << 16) +#define USCANNER_BSIZE (1 << 15) #define USCANNER_IFQ_MAXLEN 2 #define USCANNER_N_TRANSFER 4 @@ -94,19 +89,11 @@ */ #define USCANNER_FLAG_KEEP_OPEN 0x04 - /* - * uscanner driver specific structures. - */ -struct uscanner_info { - struct usb_devno devno; - uint8_t flags; -}; - struct uscanner_softc { - struct usb_cdev sc_cdev; + struct usb2_fifo_sc sc_fifo; struct mtx sc_mtx; - struct usbd_xfer *sc_xfer[USCANNER_N_TRANSFER]; + struct usb2_xfer *sc_xfer[USCANNER_N_TRANSFER]; uint8_t sc_flags; /* Used to prevent stalls */ }; @@ -121,33 +108,42 @@ /* * Prototypes for xfer transfer callbacks. */ -static usbd_callback_t uscanner_read_callback; -static usbd_callback_t uscanner_read_clear_stall_callback; -static usbd_callback_t uscanner_write_callback; -static usbd_callback_t uscanner_write_clear_stall_callback; +static usb2_callback_t uscanner_read_callback; +static usb2_callback_t uscanner_read_clear_stall_callback; +static usb2_callback_t uscanner_write_callback; +static usb2_callback_t uscanner_write_clear_stall_callback; /* * Prototypes for the character device handling routines. */ -static int32_t -uscanner_open(struct usb_cdev *cdev, int32_t fflags, - int32_t devtype, struct thread *td); -static void uscanner_start_read(struct usb_cdev *cdev); -static void uscanner_start_write(struct usb_cdev *cdev); -static void uscanner_stop_read(struct usb_cdev *cdev); -static void uscanner_stop_write(struct usb_cdev *cdev); +static usb2_fifo_close_t uscanner_close; +static usb2_fifo_cmd_t uscanner_start_read; +static usb2_fifo_cmd_t uscanner_start_write; +static usb2_fifo_cmd_t uscanner_stop_read; +static usb2_fifo_cmd_t uscanner_stop_write; +static usb2_fifo_open_t uscanner_open; + +static struct usb2_fifo_methods uscanner_fifo_methods = { + .f_close = &uscanner_close, + .f_open = &uscanner_open, + .f_start_read = &uscanner_start_read, + .f_start_write = &uscanner_start_write, + .f_stop_read = &uscanner_stop_read, + .f_stop_write = &uscanner_stop_write, + .basename[0] = "uscanner", +}; /* * xfer transfers array. Resolve-stalling callbacks are marked as control * transfers. */ -static const struct usbd_config uscanner_config[USCANNER_N_TRANSFER] = { +static const struct usb2_config uscanner_config[USCANNER_N_TRANSFER] = { [0] = { .type = UE_BULK, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_OUT, .mh.bufsize = USCANNER_BSIZE, - .mh.flags = {.pipe_bof = 1,.proxy_buffer = 1,.force_short_xfer = 1,}, + .mh.flags = {.pipe_bof = 1,.force_short_xfer = 1,.proxy_buffer = 1,.force_short_xfer = 1,}, .mh.callback = &uscanner_write_callback, }, @@ -164,7 +160,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, .mh.callback = &uscanner_write_clear_stall_callback, .mh.timeout = 1000, @@ -175,7 +171,7 @@ .type = UE_CONTROL, .endpoint = 0x00, .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, .mh.callback = &uscanner_read_clear_stall_callback, .mh.timeout = 1000, @@ -198,190 +194,166 @@ .size = sizeof(struct uscanner_softc), }; -DRIVER_MODULE(uscanner, uhub, uscanner_driver, uscanner_devclass, usbd_driver_load, 0); -MODULE_DEPEND(uscanner, usb, 1, 1, 1); +DRIVER_MODULE(uscanner, ushub, uscanner_driver, uscanner_devclass, NULL, 0); +MODULE_DEPEND(uscanner, usb2_core, 1, 1, 1); /* - * USB scanners probing array. It determines flags too. + * USB scanners device IDs */ -static const struct uscanner_info uscanner_devs[] = { +static const struct usb2_device_id uscanner_devs[] = { /* Acer */ - {{USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_320U}, 0}, - {{USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_640U}, 0}, - {{USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_640BT}, 0}, - {{USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_620U}, 0}, - {{USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_1240U}, 0}, - {{USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_C310U}, 0}, - {{USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_4300U}, 0}, + {USB_VPI(USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_320U, 0)}, + {USB_VPI(USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_640U, 0)}, + {USB_VPI(USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_640BT, 0)}, + {USB_VPI(USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_620U, 0)}, + {USB_VPI(USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_1240U, 0)}, + {USB_VPI(USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_C310U, 0)}, + {USB_VPI(USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_4300U, 0)}, /* AGFA */ - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1236U}, 0}, - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U}, 0}, - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U2}, 0}, - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANTOUCH}, 0}, - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE40}, 0}, - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE50}, 0}, - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE20}, 0}, - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE25}, 0}, - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE26}, 0}, - {{USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE52}, 0}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1236U, 0)}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U, 0)}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCAN1212U2, 0)}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANTOUCH, 0)}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE40, 0)}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE50, 0)}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE20, 0)}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE25, 0)}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE26, 0)}, + {USB_VPI(USB_VENDOR_AGFA, USB_PRODUCT_AGFA_SNAPSCANE52, 0)}, /* Avision */ - {{USB_VENDOR_AVISION, USB_PRODUCT_AVISION_1200U}, 0}, + {USB_VPI(USB_VENDOR_AVISION, USB_PRODUCT_AVISION_1200U, 0)}, /* Canon */ - {{USB_VENDOR_CANON, USB_PRODUCT_CANON_N656U}, 0}, - {{USB_VENDOR_CANON, USB_PRODUCT_CANON_N676U}, 0}, - {{USB_VENDOR_CANON, USB_PRODUCT_CANON_N1220U}, 0}, - {{USB_VENDOR_CANON, USB_PRODUCT_CANON_D660U}, 0}, - {{USB_VENDOR_CANON, USB_PRODUCT_CANON_N1240U}, 0}, - {{USB_VENDOR_CANON, USB_PRODUCT_CANON_LIDE25}, 0}, + {USB_VPI(USB_VENDOR_CANON, USB_PRODUCT_CANON_N656U, 0)}, + {USB_VPI(USB_VENDOR_CANON, USB_PRODUCT_CANON_N676U, 0)}, + {USB_VPI(USB_VENDOR_CANON, USB_PRODUCT_CANON_N1220U, 0)}, + {USB_VPI(USB_VENDOR_CANON, USB_PRODUCT_CANON_D660U, 0)}, + {USB_VPI(USB_VENDOR_CANON, USB_PRODUCT_CANON_N1240U, 0)}, + {USB_VPI(USB_VENDOR_CANON, USB_PRODUCT_CANON_LIDE25, 0)}, /* Epson */ - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_636}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_610}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1200}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1240}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1250}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1270}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1600}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1640}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_640U}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1650}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1660}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1670}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1260}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_RX425}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_3200}, USCANNER_FLAG_KEEP_OPEN}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_GT9700F}, USCANNER_FLAG_KEEP_OPEN}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_CX5400}, 0}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_636, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_610, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1200, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1240, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1250, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1270, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1600, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1640, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_640U, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1650, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1660, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1670, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_1260, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_RX425, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_3200, USCANNER_FLAG_KEEP_OPEN)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_GT9700F, USCANNER_FLAG_KEEP_OPEN)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_CX5400, 0)}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_GT9300UF}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_2480}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_3500}, USCANNER_FLAG_KEEP_OPEN}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_3590}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_4200}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_4800}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_4990}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_5000}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_6000}, 0}, - {{USB_VENDOR_EPSON, USB_PRODUCT_EPSON_DX8400}, 0}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_GT9300UF, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_2480, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_3500, USCANNER_FLAG_KEEP_OPEN)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_3590, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_4200, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_4800, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_4990, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_5000, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_6000, 0)}, + {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_DX8400, 0)}, /* HP */ - {{USB_VENDOR_HP, USB_PRODUCT_HP_2200C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_3300C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_3400CSE}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_4100C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_4200C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_4300C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_4670V}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_S20}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_5200C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_5300C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_5400C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_6200C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_6300C}, 0}, - {{USB_VENDOR_HP, USB_PRODUCT_HP_82x0C}, 0}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_2200C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_3300C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_3400CSE, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_4100C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_4200C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_4300C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_4670V, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_S20, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_5200C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_5300C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_5400C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_6200C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_6300C, 0)}, + {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_82x0C, 0)}, /* Kye */ - {{USB_VENDOR_KYE, USB_PRODUCT_KYE_VIVIDPRO}, 0}, + {USB_VPI(USB_VENDOR_KYE, USB_PRODUCT_KYE_VIVIDPRO, 0)}, /* Microtek */ - {{USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_X6U}, 0}, - {{USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_336CX}, 0}, - {{USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_336CX2}, 0}, - {{USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_C6}, 0}, - {{USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_V6USL}, 0}, - {{USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_V6USL2}, 0}, - {{USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_V6UL}, 0}, + {USB_VPI(USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_X6U, 0)}, + {USB_VPI(USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_336CX, 0)}, + {USB_VPI(USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_336CX2, 0)}, + {USB_VPI(USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_C6, 0)}, + {USB_VPI(USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_V6USL, 0)}, + {USB_VPI(USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_V6USL2, 0)}, + {USB_VPI(USB_VENDOR_MICROTEK, USB_PRODUCT_MICROTEK_V6UL, 0)}, /* Minolta */ - {{USB_VENDOR_MINOLTA, USB_PRODUCT_MINOLTA_5400}, 0}, + {USB_VPI(USB_VENDOR_MINOLTA, USB_PRODUCT_MINOLTA_5400, 0)}, /* Mustek */ - {{USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200CU}, 0}, - {{USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_BEARPAW1200F}, 0}, - {{USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_BEARPAW1200TA}, 0}, - {{USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_600USB}, 0}, - {{USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_600CU}, 0}, - {{USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200USB}, 0}, - {{USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200UB}, 0}, - {{USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200USBPLUS}, 0}, - {{USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200CUPLUS}, 0}, + {USB_VPI(USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200CU, 0)}, + {USB_VPI(USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_BEARPAW1200F, 0)}, + {USB_VPI(USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_BEARPAW1200TA, 0)}, + {USB_VPI(USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_600USB, 0)}, + {USB_VPI(USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_600CU, 0)}, + {USB_VPI(USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200USB, 0)}, + {USB_VPI(USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200UB, 0)}, + {USB_VPI(USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200USBPLUS, 0)}, + {USB_VPI(USB_VENDOR_MUSTEK, USB_PRODUCT_MUSTEK_1200CUPLUS, 0)}, /* National */ - {{USB_VENDOR_NATIONAL, USB_PRODUCT_NATIONAL_BEARPAW1200}, 0}, - {{USB_VENDOR_NATIONAL, USB_PRODUCT_NATIONAL_BEARPAW2400}, 0}, + {USB_VPI(USB_VENDOR_NATIONAL, USB_PRODUCT_NATIONAL_BEARPAW1200, 0)}, + {USB_VPI(USB_VENDOR_NATIONAL, USB_PRODUCT_NATIONAL_BEARPAW2400, 0)}, /* Nikon */ - {{USB_VENDOR_NIKON, USB_PRODUCT_NIKON_LS40}, 0}, + {USB_VPI(USB_VENDOR_NIKON, USB_PRODUCT_NIKON_LS40, 0)}, /* Primax */ - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2X300}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2E300}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2300}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2E3002}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_9600}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_600U}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_6200}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_19200}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_1200U}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G600}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_636I}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2600}, 0}, - {{USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2E600}, 0}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2X300, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2E300, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2300, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2E3002, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_9600, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_600U, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_6200, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_19200, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_1200U, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G600, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_636I, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2600, 0)}, + {USB_VPI(USB_VENDOR_PRIMAX, USB_PRODUCT_PRIMAX_G2E600, 0)}, /* Scanlogic */ - {{USB_VENDOR_SCANLOGIC, USB_PRODUCT_SCANLOGIC_336CX}, 0}, + {USB_VPI(USB_VENDOR_SCANLOGIC, USB_PRODUCT_SCANLOGIC_336CX, 0)}, /* Ultima */ - {{USB_VENDOR_ULTIMA, USB_PRODUCT_ULTIMA_1200UBPLUS}, 0}, + {USB_VPI(USB_VENDOR_ULTIMA, USB_PRODUCT_ULTIMA_1200UBPLUS, 0)}, /* UMAX */ - {{USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA1220U}, 0}, - {{USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA1236U}, 0}, - {{USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA2000U}, 0}, - {{USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA2100U}, 0}, - {{USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA2200U}, 0}, - {{USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA3400}, 0}, + {USB_VPI(USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA1220U, 0)}, + {USB_VPI(USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA1236U, 0)}, + {USB_VPI(USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA2000U, 0)}, + {USB_VPI(USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA2100U, 0)}, + {USB_VPI(USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA2200U, 0)}, + {USB_VPI(USB_VENDOR_UMAX, USB_PRODUCT_UMAX_ASTRA3400, 0)}, /* Visioneer */ - {{USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_3000}, 0}, - {{USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_5300}, 0}, - {{USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_7600}, 0}, - {{USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_6100}, 0}, - {{USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_6200}, 0}, - {{USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_8100}, 0}, - {{USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_8600}, 0} + {USB_VPI(USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_3000, 0)}, + {USB_VPI(USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_5300, 0)}, + {USB_VPI(USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_7600, 0)}, + {USB_VPI(USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_6100, 0)}, + {USB_VPI(USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_6200, 0)}, + {USB_VPI(USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_8100, 0)}, + {USB_VPI(USB_VENDOR_VISIONEER, USB_PRODUCT_VISIONEER_8600, 0)} }; /* - * It returns vendor and product ids. - */ -static inline const struct uscanner_info * -uscanner_lookup(uint16_t v, uint16_t p) -{ - return ((const struct uscanner_info *)usb_lookup(uscanner_devs, v, p)); -} - -/* * uscanner device probing method. */ static int uscanner_probe(device_t dev) { - struct usb_attach_arg *uaa; - usb_interface_descriptor_t *id; + struct usb2_attach_arg *uaa; DPRINTF(10, "\n"); uaa = device_get_ivars(dev); - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - if (uaa->iface == NULL) { - return (UMATCH_NONE); + /* Give other class drivers a chance for multifunctional scanners. */ + if (uaa->use_generic == 0) { + return (ENXIO); } - id = usbd_get_interface_descriptor(uaa->iface); - if (id == NULL) { - return (UMATCH_NONE); - } - /* - * There isn't a specific UICLASS for scanners, many vendors use - * UICLASS_VENDOR, so detecting the right interface is not so easy. - * But certainly we can exclude PRINTER and MASS - which some - * multifunction devices implement. - */ - if ((id->bInterfaceClass == UICLASS_PRINTER) || - (id->bInterfaceClass == UICLASS_MASS)) { - return (UMATCH_NONE); - } - return ((uscanner_lookup(uaa->vendor, uaa->product) != NULL) ? - UMATCH_VENDOR_PRODUCT : UMATCH_NONE); + return (usb2_lookup_id_by_uaa(uscanner_devs, sizeof(uscanner_devs), uaa)); } /* @@ -390,11 +362,9 @@ static int uscanner_attach(device_t dev) { - struct usb_attach_arg *uaa; + struct usb2_attach_arg *uaa; struct uscanner_softc *sc; - const char *p_buf[2]; - char buf[32]; - int32_t unit; + int unit; int error; uaa = device_get_ivars(dev); @@ -402,46 +372,34 @@ unit = device_get_unit(dev); /* - * A first path softc structure filling. sc_cdev and - * sc_xfer are filled later with appropriate functions. + * A first path softc structure filling. sc_fifo and + * sc_xfer are initialised later. */ - sc->sc_flags = uscanner_lookup(uaa->vendor, uaa->product)->flags; + sc->sc_flags = USB_GET_DRIVER_INFO(uaa); mtx_init(&(sc->sc_mtx), "uscanner mutex", NULL, MTX_DEF | MTX_RECURSE); /* * Announce the device: */ - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); /* * Setup the transfer. */ - if ((error = usbd_transfer_setup(uaa->device, &(uaa->iface_index), sc->sc_xfer, + if ((error = usb2_transfer_setup(uaa->device, &(uaa->info.bIfaceIndex), sc->sc_xfer, uscanner_config, USCANNER_N_TRANSFER, sc, &(sc->sc_mtx)))) { device_printf(dev, "could not setup transfers, " - "error=%s\n", usbd_errstr(error)); + "error=%s\n", usb2_errstr(error)); goto detach; } - /* - * Setup the character device for USB scanner. - */ - snprintf(buf, sizeof(buf), "uscanner%u", unit); - p_buf[0] = buf; - p_buf[1] = NULL; + /* set interface permissions */ + usb2_set_iface_perm(uaa->device, uaa->info.bIfaceIndex, + UID_ROOT, GID_OPERATOR, 0644); - sc->sc_cdev.sc_start_read = &uscanner_start_read; - sc->sc_cdev.sc_stop_read = &uscanner_stop_read; - sc->sc_cdev.sc_start_write = &uscanner_start_write; - sc->sc_cdev.sc_stop_write = &uscanner_stop_write; - sc->sc_cdev.sc_open = &uscanner_open; - sc->sc_cdev.sc_flags |= (USB_CDEV_FLAG_WAKEUP_RD_IMMED | - USB_CDEV_FLAG_WAKEUP_WR_IMMED); - - if ((error = usb_cdev_attach(&(sc->sc_cdev), sc, &(sc->sc_mtx), p_buf, - UID_ROOT, GID_OPERATOR, 0644, USCANNER_BSIZE, USCANNER_IFQ_MAXLEN, - USCANNER_BSIZE, USCANNER_IFQ_MAXLEN))) { - device_printf(dev, "error setting the " - "char device!\n"); + error = usb2_fifo_attach(uaa->device, sc, &(sc->sc_mtx), + &uscanner_fifo_methods, &(sc->sc_fifo), + unit, 0 - 1, uaa->info.bIfaceIndex); + if (error) { goto detach; } return (0); @@ -461,8 +419,8 @@ sc = device_get_softc(dev); - usb_cdev_detach(&(sc->sc_cdev)); - usbd_transfer_unsetup(sc->sc_xfer, USCANNER_N_TRANSFER); + usb2_fifo_detach(&(sc->sc_fifo)); + usb2_transfer_unsetup(sc->sc_xfer, USCANNER_N_TRANSFER); mtx_destroy(&(sc->sc_mtx)); return (0); @@ -472,56 +430,57 @@ * Reading callback. Implemented as an "in" bulk transfer. */ static void -uscanner_read_callback(struct usbd_xfer *xfer) +uscanner_read_callback(struct usb2_xfer *xfer) { struct uscanner_softc *sc; - struct usbd_mbuf *m; + struct usb2_fifo *f; sc = xfer->priv_sc; + f = sc->sc_fifo.fp[USB_FIFO_RX]; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: - usb_cdev_put_data(&(sc->sc_cdev), xfer->frbuffers, 0, + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + usb2_fifo_put_data(f, xfer->frbuffers, 0, xfer->actlen, 1); - case USBD_ST_SETUP: + case USB_ST_SETUP: /* * If reading is in stall, just jump to clear stall callback and * solve the situation. */ if (sc->sc_flags & USCANNER_FLAG_READ_STALL) { - usbd_transfer_start(sc->sc_xfer[3]); - return; + usb2_transfer_start(sc->sc_xfer[3]); + break; } - USBD_IF_POLL(&(sc->sc_cdev).sc_rdq_free, m); - if (m) { + if (usb2_fifo_put_bytes_max(f) != 0) { xfer->frlengths[0] = xfer->max_data_length; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); } - return; + break; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { sc->sc_flags |= USCANNER_FLAG_READ_STALL; - usbd_transfer_start(sc->sc_xfer[3]); + usb2_transfer_start(sc->sc_xfer[3]); } - return; + break; } + return; } /* * Removing stall on reading callback. */ static void -uscanner_read_clear_stall_callback(struct usbd_xfer *xfer) +uscanner_read_clear_stall_callback(struct usb2_xfer *xfer) { struct uscanner_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer[1]; + struct usb2_xfer *xfer_other = sc->sc_xfer[1]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { + if (usb2_clear_stall_callback(xfer, xfer_other)) { DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~USCANNER_FLAG_READ_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } @@ -530,56 +489,59 @@ * Writing callback. Implemented as an "out" bulk transfer. */ static void -uscanner_write_callback(struct usbd_xfer *xfer) +uscanner_write_callback(struct usb2_xfer *xfer) { struct uscanner_softc *sc; + struct usb2_fifo *f; uint32_t actlen; sc = xfer->priv_sc; + f = sc->sc_fifo.fp[USB_FIFO_TX]; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_SETUP: - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_SETUP: + case USB_ST_TRANSFERRED: /* * If writing is in stall, just jump to clear stall callback and * solve the situation. */ if (sc->sc_flags & USCANNER_FLAG_WRITE_STALL) { - usbd_transfer_start(sc->sc_xfer[2]); - return; + usb2_transfer_start(sc->sc_xfer[2]); + break; } /* * Write datas, setup and perform hardware transfer. */ - if (usb_cdev_get_data(&(sc->sc_cdev), xfer->frbuffers, 0, + if (usb2_fifo_get_data(f, xfer->frbuffers, 0, xfer->max_data_length, &actlen, 0)) { xfer->frlengths[0] = actlen; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); } - return; + break; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { sc->sc_flags |= USCANNER_FLAG_WRITE_STALL; - usbd_transfer_start(sc->sc_xfer[2]); + usb2_transfer_start(sc->sc_xfer[2]); } - return; + break; } + return; } /* * Removing stall on writing callback. */ static void -uscanner_write_clear_stall_callback(struct usbd_xfer *xfer) +uscanner_write_clear_stall_callback(struct usb2_xfer *xfer) { struct uscanner_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer[0]; + struct usb2_xfer *xfer_other = sc->sc_xfer[0]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { + if (usb2_clear_stall_callback(xfer, xfer_other)) { DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~USCANNER_FLAG_WRITE_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } @@ -587,13 +549,12 @@ /* * uscanner character device opening method. */ -static int32_t -uscanner_open(struct usb_cdev *cdev, int32_t fflags, int32_t devtype, - struct thread *td) +static int +uscanner_open(struct usb2_fifo *fifo, int fflags, struct thread *td) { struct uscanner_softc *sc; - sc = cdev->sc_priv_ptr; + sc = fifo->priv_sc0; if (!(sc->sc_flags & USCANNER_FLAG_KEEP_OPEN)) { if (fflags & FWRITE) { @@ -603,55 +564,78 @@ sc->sc_flags |= USCANNER_FLAG_READ_STALL; } } + if (fflags & FREAD) { + if (usb2_fifo_alloc_buffer(fifo, + sc->sc_xfer[1]->max_data_length, + USCANNER_IFQ_MAXLEN)) { + return (ENOMEM); + } + } + if (fflags & FWRITE) { + if (usb2_fifo_alloc_buffer(fifo, + sc->sc_xfer[0]->max_data_length, + USCANNER_IFQ_MAXLEN)) { + return (ENOMEM); + } + } return (0); } +static void +uscanner_close(struct usb2_fifo *fifo, int fflags, struct thread *td) +{ + if (fflags & (FREAD | FWRITE)) { + usb2_fifo_free_buffer(fifo); + } + return; +} + /* * uscanner character device start reading method. */ static void -uscanner_start_read(struct usb_cdev *cdev) +uscanner_start_read(struct usb2_fifo *fifo) { struct uscanner_softc *sc; - sc = cdev->sc_priv_ptr; - usbd_transfer_start(sc->sc_xfer[1]); + sc = fifo->priv_sc0; + usb2_transfer_start(sc->sc_xfer[1]); } /* * uscanner character device start writing method. */ static void -uscanner_start_write(struct usb_cdev *cdev) +uscanner_start_write(struct usb2_fifo *fifo) { struct uscanner_softc *sc; - sc = cdev->sc_priv_ptr; - usbd_transfer_start(sc->sc_xfer[0]); + sc = fifo->priv_sc0; + usb2_transfer_start(sc->sc_xfer[0]); } /* * uscanner character device stop reading method. */ static void -uscanner_stop_read(struct usb_cdev *cdev) +uscanner_stop_read(struct usb2_fifo *fifo) { struct uscanner_softc *sc; - sc = cdev->sc_priv_ptr; - usbd_transfer_stop(sc->sc_xfer[3]); - usbd_transfer_stop(sc->sc_xfer[1]); + sc = fifo->priv_sc0; + usb2_transfer_stop(sc->sc_xfer[3]); + usb2_transfer_stop(sc->sc_xfer[1]); } /* * uscanner character device stop writing method. */ static void -uscanner_stop_write(struct usb_cdev *cdev) +uscanner_stop_write(struct usb2_fifo *fifo) { struct uscanner_softc *sc; - sc = cdev->sc_priv_ptr; - usbd_transfer_stop(sc->sc_xfer[2]); - usbd_transfer_stop(sc->sc_xfer[0]); + sc = fifo->priv_sc0; + usb2_transfer_stop(sc->sc_xfer[2]); + usb2_transfer_stop(sc->sc_xfer[0]); } ==== //depot/projects/usb/src/sys/modules/usb2/image/Makefile#2 (text+ko) ==== @@ -1,0 +1,13 @@ +S= ${.CURDIR}/../../.. + +.PATH: $S/dev/usb2/image + +KMOD= usb2_image +SRCS= +SRCS+= bus_if.h usb2_if.h device_if.h vnode_if.h +SRCS+= opt_usb.h opt_bus.h + +SRCS+= usb2_image.c +SRCS+= uscanner2.c + +.include From hselasky at FreeBSD.org Thu Jul 3 20:36:26 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 20:36:29 2008 Subject: PERFORCE change 144569 for review Message-ID: <200807032036.m63KaPQp016655@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144569 Change 144569 by hselasky@hselasky_laptop001 on 2008/07/03 20:35:44 The misc. USB module is finished. - mostly symbol renaming. - some minor code changes to ufm2.c Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/misc/ufm2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/misc/usb2_misc.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/misc/usb2_misc.h#1 add .. //depot/projects/usb/src/sys/modules/usb2/misc/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.c#2 (text+ko) ==== @@ -57,37 +57,36 @@ * */ -#include -#include -#include -#include +#include +#include +#include +#include +#include + +#define USB_DEBUG_VAR udbp_debug -#include -#include -#include +#include +#include +#include +#include +#include +#include -#include "usbdevs.h" +#include #include +#include #include -#include -#include #include +#include + #ifdef USB_DEBUG -#define DPRINTF(sc,n,fmt,...) do { \ - if (udbp_debug > (n)) \ - printf("%s:%s: " fmt, (sc)->sc_name, \ - __FUNCTION__,## __VA_ARGS__); \ -} while (0) - static int udbp_debug = 0; -SYSCTL_NODE(_hw_usb, OID_AUTO, udbp, CTLFLAG_RW, 0, "USB udbp"); -SYSCTL_INT(_hw_usb_udbp, OID_AUTO, debug, CTLFLAG_RW, +SYSCTL_NODE(_hw_usb2, OID_AUTO, udbp, CTLFLAG_RW, 0, "USB udbp"); +SYSCTL_INT(_hw_usb2_udbp, OID_AUTO, debug, CTLFLAG_RW, &udbp_debug, 0, "udbp debug level"); -#else -#define DPRINTF(...) do { } while (0) #endif #define UDBP_TIMEOUT 2000 /* timeout on outbound transfers, in @@ -107,7 +106,7 @@ struct ng_bt_mbufq sc_xmitq_hipri; /* hi-priority transmit queue */ struct ng_bt_mbufq sc_xmitq; /* low-priority transmit queue */ - struct usbd_xfer *sc_xfer[UDBP_T_MAX]; + struct usb2_xfer *sc_xfer[UDBP_T_MAX]; node_p sc_node; /* back pointer to node */ hook_p sc_hook; /* pointer to the hook */ struct mbuf *sc_bulk_in_buffer; @@ -124,20 +123,18 @@ /* prototypes */ -static int - udbp_modload(module_t mod, int event, void *data); +static int udbp_modload(module_t mod, int event, void *data); static device_probe_t udbp_probe; static device_attach_t udbp_attach; static device_detach_t udbp_detach; -static usbd_callback_t udbp_bulk_read_callback; -static usbd_callback_t udbp_bulk_read_clear_stall_callback; -static usbd_callback_t udbp_bulk_write_callback; -static usbd_callback_t udbp_bulk_write_clear_stall_callback; +static usb2_callback_t udbp_bulk_read_callback; +static usb2_callback_t udbp_bulk_read_clear_stall_callback; +static usb2_callback_t udbp_bulk_write_callback; +static usb2_callback_t udbp_bulk_write_clear_stall_callback; -static void - udbp_bulk_read_complete(node_p node, hook_p hook, void *arg1, int arg2); +static void udbp_bulk_read_complete(node_p node, hook_p hook, void *arg1, int arg2); static ng_constructor_t ng_udbp_constructor; static ng_rcvmsg_t ng_udbp_rcvmsg; @@ -150,6 +147,7 @@ /* Parse type for struct ngudbpstat */ static const struct ng_parse_struct_field ng_udbp_stat_type_fields[] = NG_UDBP_STATS_TYPE_INFO; + static const struct ng_parse_type ng_udbp_stat_type = { &ng_parse_struct_type, &ng_udbp_stat_type_fields @@ -189,7 +187,7 @@ }; /* USB config */ -static const struct usbd_config udbp_config[UDBP_T_MAX] = { +static const struct usb2_config udbp_config[UDBP_T_MAX] = { [UDBP_T_WR] = { .type = UE_BULK, @@ -214,7 +212,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, .mh.callback = &udbp_bulk_write_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ @@ -225,7 +223,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.flags = {}, .mh.callback = &udbp_bulk_read_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ @@ -249,9 +247,9 @@ .size = sizeof(struct udbp_softc), }; -DRIVER_MODULE(udbp, uhub, udbp_driver, udbp_devclass, udbp_modload, 0); +DRIVER_MODULE(udbp, ushub, udbp_driver, udbp_devclass, udbp_modload, 0); MODULE_DEPEND(udbp, netgraph, NG_ABI_VERSION, NG_ABI_VERSION, NG_ABI_VERSION); -MODULE_DEPEND(udbp, usb, 1, 1, 1); +MODULE_DEPEND(udbp, usb2_core, 1, 1, 1); static int udbp_modload(module_t mod, int event, void *data) @@ -265,14 +263,11 @@ printf("%s: Could not register " "Netgraph node type, error=%d\n", NG_UDBP_NODE_TYPE, error); - } else - error = usbd_driver_load(mod, event, data); + } break; case MOD_UNLOAD: error = ng_rmtype(&ng_udbp_typestruct); - if (error == 0) - error = usbd_driver_load(mod, event, data); break; default: @@ -285,14 +280,11 @@ static int udbp_probe(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - if (!uaa->iface) - return (UMATCH_NONE); - /* * XXX Julian, add the id of the device if you have one to test * things with. run 'usbdevs -v' and note the 3 ID's that appear. @@ -301,47 +293,47 @@ * compare the revision id in the device descriptor with 0x101 Or go * search the file usbdevs.h. Maybe the device is already in there. */ - if (((uaa->vendor == USB_VENDOR_NETCHIP) && - (uaa->product == USB_PRODUCT_NETCHIP_TURBOCONNECT))) - return (UMATCH_VENDOR_PRODUCT); + if (((uaa->info.idVendor == USB_VENDOR_NETCHIP) && + (uaa->info.idProduct == USB_PRODUCT_NETCHIP_TURBOCONNECT))) + return (0); - if (((uaa->vendor == USB_VENDOR_PROLIFIC) && - ((uaa->product == USB_PRODUCT_PROLIFIC_PL2301) || - (uaa->product == USB_PRODUCT_PROLIFIC_PL2302)))) - return (UMATCH_VENDOR_PRODUCT); + if (((uaa->info.idVendor == USB_VENDOR_PROLIFIC) && + ((uaa->info.idProduct == USB_PRODUCT_PROLIFIC_PL2301) || + (uaa->info.idProduct == USB_PRODUCT_PROLIFIC_PL2302)))) + return (0); - if ((uaa->vendor == USB_VENDOR_ANCHOR) && - (uaa->product == USB_PRODUCT_ANCHOR_EZLINK)) - return (UMATCH_VENDOR_PRODUCT); + if ((uaa->info.idVendor == USB_VENDOR_ANCHOR) && + (uaa->info.idProduct == USB_PRODUCT_ANCHOR_EZLINK)) + return (0); - if ((uaa->vendor == USB_VENDOR_GENESYS) && - (uaa->product == USB_PRODUCT_GENESYS_GL620USB)) - return (UMATCH_VENDOR_PRODUCT); + if ((uaa->info.idVendor == USB_VENDOR_GENESYS) && + (uaa->info.idProduct == USB_PRODUCT_GENESYS_GL620USB)) + return (0); - return (UMATCH_NONE); + return (ENXIO); } static int udbp_attach(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); struct udbp_softc *sc = device_get_softc(dev); - int32_t error; + int error; if (sc == NULL) { return (ENOMEM); } - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); snprintf(sc->sc_name, sizeof(sc->sc_name), "%s", device_get_nameunit(dev)); mtx_init(&(sc->sc_mtx), "udbp lock", NULL, MTX_DEF | MTX_RECURSE); - error = usbd_transfer_setup(uaa->device, &(uaa->iface_index), + error = usb2_transfer_setup(uaa->device, &(uaa->info.bIfaceIndex), sc->sc_xfer, udbp_config, UDBP_T_MAX, sc, &(sc->sc_mtx)); if (error) { - DPRINTF(sc, 0, "error=%s\n", usbd_errstr(error)); + DPRINTF(0, "error=%s\n", usb2_errstr(error)); goto detach; } NG_BT_MBUFQ_INIT(&(sc->sc_xmitq), UDBP_Q_MAXLEN); @@ -390,7 +382,7 @@ } /* free USB transfers, if any */ - usbd_transfer_unsetup(sc->sc_xfer, UDBP_T_MAX); + usb2_transfer_unsetup(sc->sc_xfer, UDBP_T_MAX); mtx_destroy(&(sc->sc_mtx)); @@ -409,13 +401,13 @@ } static void -udbp_bulk_read_callback(struct usbd_xfer *xfer) +udbp_bulk_read_callback(struct usb2_xfer *xfer) { struct udbp_softc *sc = xfer->priv_sc; struct mbuf *m; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: /* allocate new mbuf */ @@ -432,32 +424,32 @@ } m->m_pkthdr.len = m->m_len = xfer->actlen; - usbd_copy_out(xfer->frbuffers, 0, m->m_data, xfer->actlen); + usb2_copy_out(xfer->frbuffers, 0, m->m_data, xfer->actlen); sc->sc_bulk_in_buffer = m; - DPRINTF(sc, 0, "received package %d " + DPRINTF(0, "received package %d " "bytes\n", xfer->actlen); - case USBD_ST_SETUP: + case USB_ST_SETUP: tr_setup: if (sc->sc_bulk_in_buffer) { ng_send_fn(sc->sc_node, NULL, &udbp_bulk_read_complete, NULL, 0); return; } if (sc->sc_flags & UDBP_FLAG_READ_STALL) { - usbd_transfer_start(sc->sc_xfer[UDBP_T_RD_CS]); + usb2_transfer_start(sc->sc_xfer[UDBP_T_RD_CS]); return; } xfer->frlengths[0] = xfer->max_data_length; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ sc->sc_flags |= UDBP_FLAG_READ_STALL; - usbd_transfer_start(sc->sc_xfer[UDBP_T_RD_CS]); + usb2_transfer_start(sc->sc_xfer[UDBP_T_RD_CS]); } return; @@ -465,15 +457,15 @@ } static void -udbp_bulk_read_clear_stall_callback(struct usbd_xfer *xfer) +udbp_bulk_read_clear_stall_callback(struct usb2_xfer *xfer) { struct udbp_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer[UDBP_T_RD]; + struct usb2_xfer *xfer_other = sc->sc_xfer[UDBP_T_RD]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UDBP_FLAG_READ_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } @@ -498,7 +490,7 @@ if ((sc->sc_hook == NULL) || NG_HOOK_NOT_VALID(sc->sc_hook)) { - DPRINTF(sc, 0, "No upstream hook\n"); + DPRINTF(0, "No upstream hook\n"); goto done; } sc->sc_packets_in++; @@ -513,7 +505,7 @@ } /* start USB bulk-in transfer, if not already started */ - usbd_transfer_start(sc->sc_xfer[UDBP_T_RD]); + usb2_transfer_start(sc->sc_xfer[UDBP_T_RD]); mtx_unlock(&(sc->sc_mtx)); @@ -521,19 +513,19 @@ } static void -udbp_bulk_write_callback(struct usbd_xfer *xfer) +udbp_bulk_write_callback(struct usb2_xfer *xfer) { struct udbp_softc *sc = xfer->priv_sc; struct mbuf *m; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: sc->sc_packets_out++; - case USBD_ST_SETUP: + case USB_ST_SETUP: if (sc->sc_flags & UDBP_FLAG_WRITE_STALL) { - usbd_transfer_start(sc->sc_xfer[UDBP_T_WR_CS]); + usb2_transfer_start(sc->sc_xfer[UDBP_T_WR_CS]); return; } /* get next mbuf, if any */ @@ -542,33 +534,33 @@ if (m == NULL) { NG_BT_MBUFQ_DEQUEUE(&(sc->sc_xmitq), m); if (m == NULL) { - DPRINTF(sc, 0, "Data queue is empty\n"); + DPRINTF(0, "Data queue is empty\n"); return; } } if (m->m_pkthdr.len > MCLBYTES) { - DPRINTF(sc, 0, "truncating large packet " + DPRINTF(0, "truncating large packet " "from %d to %d bytes\n", m->m_pkthdr.len, MCLBYTES); m->m_pkthdr.len = MCLBYTES; } - usbd_m_copy_in(xfer->frbuffers, 0, m, 0, m->m_pkthdr.len); + usb2_m_copy_in(xfer->frbuffers, 0, m, 0, m->m_pkthdr.len); xfer->frlengths[0] = m->m_pkthdr.len; m_freem(m); - DPRINTF(sc, 0, "packet out: %d bytes\n", + DPRINTF(0, "packet out: %d bytes\n", xfer->frlengths[0]); - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ sc->sc_flags |= UDBP_FLAG_WRITE_STALL; - usbd_transfer_start(sc->sc_xfer[UDBP_T_WR_CS]); + usb2_transfer_start(sc->sc_xfer[UDBP_T_WR_CS]); } return; @@ -576,15 +568,15 @@ } static void -udbp_bulk_write_clear_stall_callback(struct usbd_xfer *xfer) +udbp_bulk_write_clear_stall_callback(struct usb2_xfer *xfer) { struct udbp_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer[UDBP_T_WR]; + struct usb2_xfer *xfer_other = sc->sc_xfer[UDBP_T_WR]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UDBP_FLAG_WRITE_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } @@ -683,7 +675,7 @@ error = EINVAL; break; } - DPRINTF(sc, 0, "flags = 0x%08x\n", + DPRINTF(0, "flags = 0x%08x\n", *((uint32_t *)msg->data)); break; default: @@ -743,7 +735,7 @@ /* * start bulk-out transfer, if not already started: */ - usbd_transfer_start(sc->sc_xfer[UDBP_T_WR]); + usb2_transfer_start(sc->sc_xfer[UDBP_T_WR]); error = 0; } @@ -811,10 +803,10 @@ UDBP_FLAG_WRITE_STALL); /* start bulk-in transfer */ - usbd_transfer_start(sc->sc_xfer[UDBP_T_RD]); + usb2_transfer_start(sc->sc_xfer[UDBP_T_RD]); /* start bulk-out transfer */ - usbd_transfer_start(sc->sc_xfer[UDBP_T_WR]); + usb2_transfer_start(sc->sc_xfer[UDBP_T_WR]); mtx_unlock(&(sc->sc_mtx)); @@ -841,12 +833,12 @@ } else { /* stop bulk-in transfer */ - usbd_transfer_stop(sc->sc_xfer[UDBP_T_RD_CS]); - usbd_transfer_stop(sc->sc_xfer[UDBP_T_RD]); + usb2_transfer_stop(sc->sc_xfer[UDBP_T_RD_CS]); + usb2_transfer_stop(sc->sc_xfer[UDBP_T_RD]); /* stop bulk-out transfer */ - usbd_transfer_stop(sc->sc_xfer[UDBP_T_WR_CS]); - usbd_transfer_stop(sc->sc_xfer[UDBP_T_WR]); + usb2_transfer_stop(sc->sc_xfer[UDBP_T_WR_CS]); + usb2_transfer_stop(sc->sc_xfer[UDBP_T_WR]); /* cleanup queues */ NG_BT_MBUFQ_DRAIN(&sc->sc_xmitq); ==== //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.h#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb2/misc/ufm2.c#2 (text+ko) ==== @@ -32,47 +32,34 @@ __FBSDID("$FreeBSD: src/sys/dev/usb/ufm.c,v 1.36 2007/06/21 14:42:33 imp Exp $"); -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include -#include -#include +#define USB_DEBUG_VAR usb2_debug -#include "usbdevs.h" - -#include - -#ifdef USB_DEBUG -#define DPRINTF(sc,n,fmt,...) \ - do { if (ufm_debug > (n)) { \ - printf("%s:%s: " fmt, (sc)->sc_name, \ - __FUNCTION__,## __VA_ARGS__); } } while (0) +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -static int ufm_debug = 0; - -SYSCTL_NODE(_hw_usb, OID_AUTO, ufm, CTLFLAG_RW, 0, "USB ufm"); -SYSCTL_INT(_hw_usb_ufm, OID_AUTO, debug, CTLFLAG_RW, - &ufm_debug, 0, "ufm debug level"); -#else -#define DPRINTF(...) do { } while (0) -#endif - #define UFM_CMD0 0x00 #define UFM_CMD_SET_FREQ 0x01 #define UFM_CMD2 0x02 struct ufm_softc { - struct usb_cdev sc_cdev; + struct usb2_fifo_sc sc_fifo; struct mtx sc_mtx; - struct usbd_device *sc_udev; + struct usb2_device *sc_udev; uint32_t sc_unit; uint32_t sc_freq; @@ -86,32 +73,22 @@ static device_attach_t ufm_attach; static device_detach_t ufm_detach; -static int32_t -ufm_open(struct usb_cdev *dev, int32_t fflags, - int32_t devtype, struct thread *td); +static usb2_fifo_ioctl_t ufm_ioctl; +static usb2_fifo_open_t ufm_open; -static int -ufm_do_req(struct ufm_softc *sc, int32_t fflags, uint8_t request, - uint16_t value, uint16_t index, uint8_t *retbuf); -static int - ufm_set_freq(struct ufm_softc *sc, caddr_t addr, int32_t fflags); +static struct usb2_fifo_methods ufm_fifo_methods = { + .f_ioctl = &ufm_ioctl, + .f_open = &ufm_open, + .basename[0] = "ufm", +}; -static int - ufm_get_freq(struct ufm_softc *sc, caddr_t addr, int32_t fflags); +static int ufm_do_req(struct ufm_softc *sc, uint8_t request, uint16_t value, uint16_t index, uint8_t *retbuf); +static int ufm_set_freq(struct ufm_softc *sc, void *addr); +static int ufm_get_freq(struct ufm_softc *sc, void *addr); +static int ufm_start(struct ufm_softc *sc, void *addr); +static int ufm_stop(struct ufm_softc *sc, void *addr); +static int ufm_get_stat(struct ufm_softc *sc, void *addr); -static int - ufm_start(struct ufm_softc *sc, caddr_t addr, int32_t fflags); - -static int - ufm_stop(struct ufm_softc *sc, caddr_t addr, int32_t fflags); - -static int - ufm_get_stat(struct ufm_softc *sc, caddr_t addr, int32_t fflags); - -static int -ufm_ioctl(struct usb_cdev *dev, u_long cmd, caddr_t addr, - int32_t fflags, struct thread *td); - static devclass_t ufm_devclass; static device_method_t ufm_methods[] = { @@ -127,35 +104,30 @@ .size = sizeof(struct ufm_softc), }; -MODULE_DEPEND(ufm, usb, 1, 1, 1); -DRIVER_MODULE(ufm, uhub, ufm_driver, ufm_devclass, usbd_driver_load, 0); +MODULE_DEPEND(ufm, usb2_core, 1, 1, 1); +DRIVER_MODULE(ufm, ushub, ufm_driver, ufm_devclass, NULL, 0); static int ufm_probe(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - if (uaa->iface == NULL) { - return (UMATCH_NONE); + if ((uaa->info.idVendor == USB_VENDOR_CYPRESS) && + (uaa->info.idProduct == USB_PRODUCT_CYPRESS_FMRADIO)) { + return (0); } - if ((uaa->vendor == USB_VENDOR_CYPRESS) && - (uaa->product == USB_PRODUCT_CYPRESS_FMRADIO)) { - return (UMATCH_VENDOR_PRODUCT); - } - return (UMATCH_NONE); + return (ENXIO); } static int ufm_attach(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); struct ufm_softc *sc = device_get_softc(dev); - const char *p_buf[2]; - char buf[16]; - int32_t error; + int error; if (sc == NULL) { return (ENOMEM); @@ -168,18 +140,15 @@ mtx_init(&(sc->sc_mtx), "ufm lock", NULL, MTX_DEF | MTX_RECURSE); - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); - snprintf(buf, sizeof(buf), "ufm%d", sc->sc_unit); + /* set interface permissions */ + usb2_set_iface_perm(uaa->device, uaa->info.bIfaceIndex, + UID_ROOT, GID_OPERATOR, 0644); - p_buf[0] = buf; - p_buf[1] = NULL; - - sc->sc_cdev.sc_open = &ufm_open; - sc->sc_cdev.sc_ioctl = &ufm_ioctl; - - error = usb_cdev_attach(&(sc->sc_cdev), sc, &(sc->sc_mtx), p_buf, - UID_ROOT, GID_OPERATOR, 0644, 0, 0, 0, 0); + error = usb2_fifo_attach(uaa->device, sc, &(sc->sc_mtx), + &ufm_fifo_methods, &(sc->sc_fifo), + device_get_unit(dev), 0 - 1, uaa->info.bIfaceIndex); if (error) { goto detach; } @@ -195,16 +164,15 @@ { struct ufm_softc *sc = device_get_softc(dev); - usb_cdev_detach(&(sc->sc_cdev)); + usb2_fifo_detach(&(sc->sc_fifo)); mtx_destroy(&(sc->sc_mtx)); return (0); } -static int32_t -ufm_open(struct usb_cdev *dev, int32_t fflags, - int32_t devtype, struct thread *td) +static int +ufm_open(struct usb2_fifo *dev, int fflags, struct thread *td) { if ((fflags & (FWRITE | FREAD)) != (FWRITE | FREAD)) { return (EACCES); @@ -213,12 +181,12 @@ } static int -ufm_do_req(struct ufm_softc *sc, int32_t fflags, uint8_t request, +ufm_do_req(struct ufm_softc *sc, uint8_t request, uint16_t value, uint16_t index, uint8_t *retbuf) { - int32_t error; + int error; - usb_device_request_t req; + struct usb2_device_request req; uint8_t buf[1]; req.bmRequestType = UT_READ_VENDOR_DEVICE; @@ -227,7 +195,7 @@ USETW(req.wIndex, index); USETW(req.wLength, 1); - error = usbd_do_request(sc->sc_udev, NULL, &req, buf); + error = usb2_do_request(sc->sc_udev, NULL, &req, buf); if (retbuf) { *retbuf = buf[0]; @@ -239,7 +207,7 @@ } static int -ufm_set_freq(struct ufm_softc *sc, caddr_t addr, int32_t fflags) +ufm_set_freq(struct ufm_softc *sc, void *addr) { int freq = *(int *)addr; @@ -257,12 +225,12 @@ freq = (freq + 10700001) / 12500; /* This appears to set the frequency */ - if (ufm_do_req(sc, fflags, UFM_CMD_SET_FREQ, + if (ufm_do_req(sc, UFM_CMD_SET_FREQ, freq >> 8, freq, NULL) != 0) { return (EIO); } /* Not sure what this does */ - if (ufm_do_req(sc, fflags, UFM_CMD0, + if (ufm_do_req(sc, UFM_CMD0, 0x96, 0xb7, NULL) != 0) { return (EIO); } @@ -270,7 +238,7 @@ } static int -ufm_get_freq(struct ufm_softc *sc, caddr_t addr, int32_t fflags) +ufm_get_freq(struct ufm_softc *sc, void *addr) { int *valp = (int *)addr; @@ -281,15 +249,15 @@ } static int -ufm_start(struct ufm_softc *sc, caddr_t addr, int32_t fflags) +ufm_start(struct ufm_softc *sc, void *addr) { uint8_t ret; - if (ufm_do_req(sc, fflags, UFM_CMD0, + if (ufm_do_req(sc, UFM_CMD0, 0x00, 0xc7, &ret)) { return (EIO); } - if (ufm_do_req(sc, fflags, UFM_CMD2, + if (ufm_do_req(sc, UFM_CMD2, 0x01, 0x00, &ret)) { return (EIO); } @@ -300,13 +268,13 @@ } static int -ufm_stop(struct ufm_softc *sc, caddr_t addr, int32_t fflags) +ufm_stop(struct ufm_softc *sc, void *addr) { - if (ufm_do_req(sc, fflags, UFM_CMD0, + if (ufm_do_req(sc, UFM_CMD0, 0x16, 0x1C, NULL)) { return (EIO); } - if (ufm_do_req(sc, fflags, UFM_CMD2, + if (ufm_do_req(sc, UFM_CMD2, 0x00, 0x00, NULL)) { return (EIO); } @@ -314,7 +282,7 @@ } static int -ufm_get_stat(struct ufm_softc *sc, caddr_t addr, int32_t fflags) +ufm_get_stat(struct ufm_softc *sc, void *addr) { uint8_t ret; @@ -323,9 +291,11 @@ * will be valid, so sleep that amount. */ - usbd_pause_mtx(NULL, 250); + mtx_lock(&(sc->sc_mtx)); + usb2_pause_mtx(&(sc->sc_mtx), USB_MS_HZ / 4); + mtx_unlock(&(sc->sc_mtx)); - if (ufm_do_req(sc, fflags, UFM_CMD0, + if (ufm_do_req(sc, UFM_CMD0, 0x00, 0x24, &ret)) { return (EIO); } @@ -335,33 +305,31 @@ } static int -ufm_ioctl(struct usb_cdev *dev, u_long cmd, caddr_t addr, - int32_t fflags, struct thread *td) +ufm_ioctl(struct usb2_fifo *fifo, u_long cmd, void *addr, + int fflags, struct thread *td) { - struct ufm_softc *sc = dev->sc_priv_ptr; + struct ufm_softc *sc = fifo->priv_sc0; int error = 0; - usb_cdev_unlock(dev, fflags); - switch (cmd) { case FM_SET_FREQ: - error = ufm_set_freq(sc, addr, fflags); + error = ufm_set_freq(sc, addr); break; case FM_GET_FREQ: - error = ufm_get_freq(sc, addr, fflags); + error = ufm_get_freq(sc, addr); break; case FM_START: - error = ufm_start(sc, addr, fflags); + error = ufm_start(sc, addr); break; case FM_STOP: - error = ufm_stop(sc, addr, fflags); + error = ufm_stop(sc, addr); break; case FM_GET_STAT: - error = ufm_get_stat(sc, addr, fflags); + error = ufm_get_stat(sc, addr); break; default: error = ENOTTY; break; } - return (usb_cdev_lock(dev, fflags, error)); + return (error); } ==== //depot/projects/usb/src/sys/modules/usb2/misc/Makefile#2 (text+ko) ==== @@ -1,0 +1,14 @@ +S= ${.CURDIR}/../../.. + +.PATH: $S/dev/usb2/misc + +KMOD= usb2_misc +SRCS= +SRCS+= bus_if.h usb2_if.h device_if.h vnode_if.h +SRCS+= opt_usb.h opt_bus.h opt_netgraph.h + +SRCS+= usb2_misc.c +SRCS+= ufm2.c +SRCS+= udbp2.c + +.include From hselasky at FreeBSD.org Thu Jul 3 20:52:42 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 20:52:45 2008 Subject: PERFORCE change 144570 for review Message-ID: <200807032052.m63KqfML027798@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144570 Change 144570 by hselasky@hselasky_laptop001 on 2008/07/03 20:52:27 The USB NDIS module is complete. - symbol renaming NOTE: The module is not complete and there is an ongoing project at FreeBSD P4 to fix this. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/ndis/if_ndis_usb2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/ndis/usb2_ndis.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/ndis/usb2_ndis.h#1 add .. //depot/projects/usb/src/sys/modules/usb2/ndis/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/ndis/if_ndis_usb2.c#2 (text+ko) ==== @@ -33,20 +33,14 @@ #include __FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis_usb.c,v 1.9 2007/06/18 22:24:32 imp Exp $"); -#include -#include -#include -#include -#include -#include +#include +#include + +#include + #include -#include +#include -#include -#include -#include -#include - #include #include #include @@ -62,14 +56,13 @@ #include #include #include + #include -__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis_usb.c,v 1.5 2005/04/24 20:21:22 wpaul Exp $"); +MODULE_DEPEND(ndis, usb2_core, 1, 1, 1); -MODULE_DEPEND(ndis, usb, 1, 1, 1); - -static device_probe_t ndisusb_probe; -static device_attach_t ndisusb_attach; +static device_probe_t ndisusb2_probe; +static device_attach_t ndisusb2_attach; static struct resource_list *ndis_get_resource_list(device_t, device_t); extern device_attach_t ndis_attach; @@ -83,8 +76,8 @@ static device_method_t ndis_methods[] = { /* Device interface */ - DEVMETHOD(device_probe, ndisusb_probe), - DEVMETHOD(device_attach, ndisusb_attach), + DEVMETHOD(device_probe, ndisusb2_probe), + DEVMETHOD(device_attach, ndisusb2_attach), DEVMETHOD(device_detach, ndis_detach), DEVMETHOD(device_shutdown, ndis_shutdown), @@ -104,27 +97,24 @@ static devclass_t ndis_devclass; -DRIVER_MODULE(ndis, uhub, ndis_driver, ndis_devclass, ndisdrv_modevent, 0); +DRIVER_MODULE(ndis, ushub, ndis_driver, ndis_devclass, ndisdrv_modevent, 0); static int -ndisusb_probe(device_t dev) +ndisusb2_probe(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); if (windrv_lookup(0, "USB Bus") == NULL) { - return (UMATCH_NONE); + return (ENXIO); } - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - if (uaa->iface != NULL) { - return (UMATCH_NONE); - } - return (UMATCH_NONE); + return (ENXIO); } static int -ndisusb_attach(device_t dev) +ndisusb2_attach(device_t dev) { struct ndis_softc *sc = device_get_softc(dev); driver_object *drv; ==== //depot/projects/usb/src/sys/modules/usb2/ndis/Makefile#2 (text+ko) ==== @@ -1,0 +1,13 @@ +S= ${.CURDIR}/../../.. + +.PATH: $S/dev/usb2/ndis + +KMOD= usb2_ndis +SRCS= +SRCS+= bus_if.h usb2_if.h device_if.h vnode_if.h +SRCS+= opt_usb.h opt_bus.h + +SRCS+= usb2_ndis.c +SRCS+= if_ndis_usb2.c + +.include From hselasky at FreeBSD.org Thu Jul 3 21:03:54 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 21:03:56 2008 Subject: PERFORCE change 144571 for review Message-ID: <200807032103.m63L3r7C029794@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144571 Change 144571 by hselasky@hselasky_laptop001 on 2008/07/03 21:03:18 Looks like I forgot to commit the USB serial Makefile. Affected files ... .. //depot/projects/usb/src/sys/modules/usb2/serial/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/modules/usb2/serial/Makefile#2 (text+ko) ==== @@ -1,0 +1,28 @@ +S= ${.CURDIR}/../../.. + +.PATH: $S/dev/usb2/serial + +KMOD= usb2_serial +SRCS= +SRCS+= bus_if.h usb2_if.h device_if.h vnode_if.h +SRCS+= opt_usb.h opt_bus.h opt_compat.h +SRCS+= usb2_serial.c + +SRCS+= uark2.c +SRCS+= ubsa2.c +SRCS+= ubser2.c +SRCS+= uchcom2.c +SRCS+= ucycom2.c +SRCS+= ufoma2.c +SRCS+= uftdi2.c +SRCS+= ugensa2.c +SRCS+= uipaq2.c +SRCS+= ulpt2.c +SRCS+= umct2.c +SRCS+= umodem2.c +SRCS+= umoscom2.c +SRCS+= uplcom2.c +SRCS+= uvisor2.c +SRCS+= uvscom2.c + +.include From hselasky at FreeBSD.org Thu Jul 3 21:25:18 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 21:25:22 2008 Subject: PERFORCE change 144572 for review Message-ID: <200807032125.m63LPEIp031557@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144572 Change 144572 by hselasky@hselasky_laptop001 on 2008/07/03 21:24:47 IFC @ 144568 Affected files ... .. //depot/projects/usb/src/sys/amd64/amd64/bpf_jit_machdep.c#2 integrate .. //depot/projects/usb/src/sys/amd64/amd64/bpf_jit_machdep.h#2 integrate .. //depot/projects/usb/src/sys/amd64/amd64/mem.c#3 integrate .. //depot/projects/usb/src/sys/amd64/amd64/minidump_machdep.c#4 integrate .. //depot/projects/usb/src/sys/amd64/amd64/pmap.c#10 integrate .. //depot/projects/usb/src/sys/amd64/amd64/trap.c#9 integrate .. //depot/projects/usb/src/sys/amd64/conf/GENERIC#11 integrate .. //depot/projects/usb/src/sys/amd64/include/iodev.h#2 integrate .. //depot/projects/usb/src/sys/amd64/include/memdev.h#2 integrate .. //depot/projects/usb/src/sys/amd64/include/pmap.h#5 integrate .. //depot/projects/usb/src/sys/amd64/include/pmc_mdep.h#3 integrate .. //depot/projects/usb/src/sys/amd64/include/stack.h#2 integrate .. //depot/projects/usb/src/sys/amd64/include/vmparam.h#7 integrate .. //depot/projects/usb/src/sys/arm/at91/if_ate.c#8 integrate .. //depot/projects/usb/src/sys/arm/include/memdev.h#2 integrate .. //depot/projects/usb/src/sys/arm/xscale/i8134x/crb_machdep.c#3 integrate .. //depot/projects/usb/src/sys/arm/xscale/i8134x/i81342_pci.c#2 integrate .. //depot/projects/usb/src/sys/arm/xscale/pxa/files.pxa#2 integrate .. //depot/projects/usb/src/sys/arm/xscale/pxa/pxa_machdep.c#2 integrate .. //depot/projects/usb/src/sys/arm/xscale/pxa/pxa_obio.c#2 integrate .. //depot/projects/usb/src/sys/arm/xscale/pxa/pxa_space.c#2 integrate .. //depot/projects/usb/src/sys/boot/Makefile.inc#1 branch .. //depot/projects/usb/src/sys/boot/arm/Makefile.inc#1 branch .. //depot/projects/usb/src/sys/boot/arm/at91/Makefile.inc#5 integrate .. //depot/projects/usb/src/sys/boot/efi/Makefile.inc#2 integrate .. //depot/projects/usb/src/sys/boot/i386/Makefile.inc#3 integrate .. //depot/projects/usb/src/sys/boot/i386/boot2/boot2.c#5 integrate .. //depot/projects/usb/src/sys/boot/i386/libi386/time.c#2 integrate .. //depot/projects/usb/src/sys/boot/i386/loader/Makefile#4 integrate .. //depot/projects/usb/src/sys/boot/ia64/Makefile.inc#2 integrate .. //depot/projects/usb/src/sys/boot/ia64/common/Makefile#2 integrate .. //depot/projects/usb/src/sys/boot/ia64/efi/Makefile#3 integrate .. //depot/projects/usb/src/sys/boot/ia64/ski/Makefile#3 integrate .. //depot/projects/usb/src/sys/boot/ofw/Makefile.inc#1 branch .. //depot/projects/usb/src/sys/boot/pc98/Makefile.inc#3 integrate .. //depot/projects/usb/src/sys/boot/pc98/boot2/Makefile#2 integrate .. //depot/projects/usb/src/sys/boot/pc98/loader/Makefile#3 integrate .. //depot/projects/usb/src/sys/boot/powerpc/Makefile.inc#1 branch .. //depot/projects/usb/src/sys/boot/powerpc/ofw/Makefile#2 integrate .. //depot/projects/usb/src/sys/boot/sparc64/Makefile.inc#2 integrate .. //depot/projects/usb/src/sys/boot/sparc64/loader/Makefile#2 integrate .. //depot/projects/usb/src/sys/boot/uboot/Makefile.inc#1 branch .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c#2 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#2 integrate .. //depot/projects/usb/src/sys/compat/ndis/subr_ndis.c#8 integrate .. //depot/projects/usb/src/sys/compat/ndis/subr_ntoskrnl.c#8 integrate .. //depot/projects/usb/src/sys/compat/pecoff/imgact_pecoff.c#5 delete .. //depot/projects/usb/src/sys/compat/pecoff/imgact_pecoff.h#2 delete .. //depot/projects/usb/src/sys/conf/NOTES#14 integrate .. //depot/projects/usb/src/sys/conf/files#28 integrate .. //depot/projects/usb/src/sys/conf/files.i386#9 integrate .. //depot/projects/usb/src/sys/conf/files.pc98#9 integrate .. //depot/projects/usb/src/sys/conf/kern.mk#7 integrate .. //depot/projects/usb/src/sys/conf/kern.pre.mk#10 integrate .. //depot/projects/usb/src/sys/conf/newvers.sh#4 integrate .. //depot/projects/usb/src/sys/conf/options.i386#7 integrate .. //depot/projects/usb/src/sys/conf/options.pc98#6 integrate .. //depot/projects/usb/src/sys/ddb/db_ps.c#6 integrate .. //depot/projects/usb/src/sys/dev/aac/aac.c#5 integrate .. //depot/projects/usb/src/sys/dev/aac/aac_pci.c#6 integrate .. //depot/projects/usb/src/sys/dev/acpi_support/acpi_asus.c#5 integrate .. //depot/projects/usb/src/sys/dev/agp/agp_i810.c#3 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-all.c#9 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-chipset.c#10 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-pci.c#7 integrate .. //depot/projects/usb/src/sys/dev/bce/if_bce.c#10 integrate .. //depot/projects/usb/src/sys/dev/bce/if_bcefw.h#5 integrate .. //depot/projects/usb/src/sys/dev/bce/if_bcereg.h#7 integrate .. //depot/projects/usb/src/sys/dev/ce/ceddk.h#2 integrate .. //depot/projects/usb/src/sys/dev/ce/if_ce.c#5 integrate .. //depot/projects/usb/src/sys/dev/ciss/ciss.c#10 integrate .. //depot/projects/usb/src/sys/dev/cp/cpddk.h#2 integrate .. //depot/projects/usb/src/sys/dev/cp/if_cp.c#5 integrate .. //depot/projects/usb/src/sys/dev/ctau/ctddk.h#2 integrate .. //depot/projects/usb/src/sys/dev/ctau/if_ct.c#5 integrate .. //depot/projects/usb/src/sys/dev/cx/cxddk.h#2 integrate .. //depot/projects/usb/src/sys/dev/cx/if_cx.c#5 integrate .. //depot/projects/usb/src/sys/dev/et/if_et.c#1 branch .. //depot/projects/usb/src/sys/dev/et/if_etreg.h#1 branch .. //depot/projects/usb/src/sys/dev/et/if_etvar.h#1 branch .. //depot/projects/usb/src/sys/dev/ex/if_ex.c#2 integrate .. //depot/projects/usb/src/sys/dev/ex/if_ex_isa.c#3 integrate .. //depot/projects/usb/src/sys/dev/ex/if_ex_pccard.c#3 integrate .. //depot/projects/usb/src/sys/dev/ex/if_exvar.h#3 integrate .. //depot/projects/usb/src/sys/dev/fe/if_fe.c#5 integrate .. //depot/projects/usb/src/sys/dev/fe/if_fe_cbus.c#2 integrate .. //depot/projects/usb/src/sys/dev/fe/if_fe_isa.c#2 integrate .. //depot/projects/usb/src/sys/dev/fe/if_fe_pccard.c#3 integrate .. //depot/projects/usb/src/sys/dev/fe/if_fevar.h#3 integrate .. //depot/projects/usb/src/sys/dev/gem/if_gem.c#8 integrate .. //depot/projects/usb/src/sys/dev/if_ndis/if_ndis.c#8 integrate .. //depot/projects/usb/src/sys/dev/if_ndis/if_ndisvar.h#5 integrate .. //depot/projects/usb/src/sys/dev/io/iodev.c#2 integrate .. //depot/projects/usb/src/sys/dev/ixgbe/ixgbe.h#4 integrate .. //depot/projects/usb/src/sys/dev/ixgbe/tcp_lro.c#2 delete .. //depot/projects/usb/src/sys/dev/ixgbe/tcp_lro.h#2 delete .. //depot/projects/usb/src/sys/dev/mfi/mfi.c#10 integrate .. //depot/projects/usb/src/sys/dev/mii/brgphy.c#9 integrate .. //depot/projects/usb/src/sys/dev/mii/miidevs#9 integrate .. //depot/projects/usb/src/sys/dev/mii/rgephy.c#6 integrate .. //depot/projects/usb/src/sys/dev/mii/rgephyreg.h#3 integrate .. //depot/projects/usb/src/sys/dev/mii/truephy.c#1 branch .. //depot/projects/usb/src/sys/dev/mii/truephyreg.h#1 branch .. //depot/projects/usb/src/sys/dev/mpt/mpt_pci.c#8 integrate .. //depot/projects/usb/src/sys/dev/mpt/mpt_user.c#2 integrate .. //depot/projects/usb/src/sys/dev/nmdm/nmdm.c#4 integrate .. //depot/projects/usb/src/sys/dev/re/if_re.c#8 integrate .. //depot/projects/usb/src/sys/dev/si/si.c#4 integrate .. //depot/projects/usb/src/sys/dev/si/si.h#3 integrate .. //depot/projects/usb/src/sys/dev/smc/if_smc.c#2 integrate .. //depot/projects/usb/src/sys/dev/smc/if_smcvar.h#2 integrate .. //depot/projects/usb/src/sys/dev/snp/snp.c#5 integrate .. //depot/projects/usb/src/sys/dev/sound/pci/atiixp.h#4 integrate .. //depot/projects/usb/src/sys/dev/tx/if_tx.c#3 integrate .. //depot/projects/usb/src/sys/dev/tx/if_txvar.h#2 integrate .. //depot/projects/usb/src/sys/dev/usb/ehci.c#80 integrate .. //depot/projects/usb/src/sys/dev/usb/uplcom.c#43 integrate .. //depot/projects/usb/src/sys/dev/usb/usbdevs#19 integrate .. //depot/projects/usb/src/sys/dev/usb/uscanner.c#29 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#5 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usbdevs#2 edit .. //depot/projects/usb/src/sys/dev/usb2/image/uscanner2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devid.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devtable.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/serial/uplcom2.c#3 edit .. //depot/projects/usb/src/sys/dev/vkbd/vkbd.c#4 integrate .. //depot/projects/usb/src/sys/dev/wpi/if_wpi.c#5 integrate .. //depot/projects/usb/src/sys/fs/cd9660/cd9660_vnops.c#2 integrate .. //depot/projects/usb/src/sys/fs/devfs/devfs_devs.c#7 integrate .. //depot/projects/usb/src/sys/fs/devfs/devfs_int.h#5 integrate .. //depot/projects/usb/src/sys/fs/devfs/devfs_rule.c#5 integrate .. //depot/projects/usb/src/sys/fs/devfs/devfs_vnops.c#9 integrate .. //depot/projects/usb/src/sys/fs/ntfs/ntfs_ihash.c#3 integrate .. //depot/projects/usb/src/sys/fs/smbfs/smbfs_node.c#6 integrate .. //depot/projects/usb/src/sys/fs/tmpfs/tmpfs_subr.c#4 integrate .. //depot/projects/usb/src/sys/geom/journal/g_journal.c#5 integrate .. //depot/projects/usb/src/sys/geom/part/g_part.c#7 integrate .. //depot/projects/usb/src/sys/geom/part/g_part.h#6 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_apm.c#7 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_bsd.c#3 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_gpt.c#7 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_if.m#3 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_mbr.c#4 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_pc98.c#3 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_vtoc8.c#3 integrate .. //depot/projects/usb/src/sys/geom/virstor/g_virstor.c#2 integrate .. //depot/projects/usb/src/sys/i386/acpica/acpi_machdep.c#6 integrate .. //depot/projects/usb/src/sys/i386/conf/GENERIC#10 integrate .. //depot/projects/usb/src/sys/i386/conf/NOTES#10 integrate .. //depot/projects/usb/src/sys/i386/i386/bpf_jit_machdep.c#2 integrate .. //depot/projects/usb/src/sys/i386/i386/bpf_jit_machdep.h#2 integrate .. //depot/projects/usb/src/sys/i386/include/iodev.h#2 integrate .. //depot/projects/usb/src/sys/i386/include/memdev.h#2 integrate .. //depot/projects/usb/src/sys/i386/include/pecoff_machdep.h#2 delete .. //depot/projects/usb/src/sys/ia64/include/memdev.h#2 integrate .. //depot/projects/usb/src/sys/kern/kern_alq.c#7 integrate .. //depot/projects/usb/src/sys/kern/kern_conf.c#7 integrate .. //depot/projects/usb/src/sys/kern/kern_cpuset.c#3 integrate .. //depot/projects/usb/src/sys/kern/kern_descrip.c#10 integrate .. //depot/projects/usb/src/sys/kern/kern_dtrace.c#2 integrate .. //depot/projects/usb/src/sys/kern/kern_intr.c#9 integrate .. //depot/projects/usb/src/sys/kern/kern_jail.c#6 integrate .. //depot/projects/usb/src/sys/kern/kern_lockf.c#6 integrate .. //depot/projects/usb/src/sys/kern/kern_umtx.c#9 integrate .. //depot/projects/usb/src/sys/kern/kern_xxx.c#4 integrate .. //depot/projects/usb/src/sys/kern/link_elf_obj.c#8 integrate .. //depot/projects/usb/src/sys/kern/stack_protector.c#1 branch .. //depot/projects/usb/src/sys/kern/subr_bus.c#11 integrate .. //depot/projects/usb/src/sys/kern/sysv_sem.c#7 integrate .. //depot/projects/usb/src/sys/kern/uipc_debug.c#4 integrate .. //depot/projects/usb/src/sys/kern/uipc_sem.c#8 integrate .. //depot/projects/usb/src/sys/kern/uipc_shm.c#2 integrate .. //depot/projects/usb/src/sys/kern/uipc_socket.c#10 integrate .. //depot/projects/usb/src/sys/kern/vfs_aio.c#8 integrate .. //depot/projects/usb/src/sys/kern/vfs_export.c#5 integrate .. //depot/projects/usb/src/sys/kern/vfs_mount.c#9 integrate .. //depot/projects/usb/src/sys/kern/vfs_syscalls.c#9 integrate .. //depot/projects/usb/src/sys/mips/include/iodev.h#2 integrate .. //depot/projects/usb/src/sys/mips/include/memdev.h#2 integrate .. //depot/projects/usb/src/sys/modules/Makefile#15 integrate .. //depot/projects/usb/src/sys/modules/ath_rate_amrr/Makefile#5 integrate .. //depot/projects/usb/src/sys/modules/et/Makefile#1 branch .. //depot/projects/usb/src/sys/modules/ixgbe/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/mii/Makefile#6 integrate .. //depot/projects/usb/src/sys/modules/nfslockd/Makefile#2 integrate .. //depot/projects/usb/src/sys/modules/pecoff/Makefile#2 delete .. //depot/projects/usb/src/sys/modules/ralfw/Makefile#2 integrate .. //depot/projects/usb/src/sys/modules/sem/Makefile#2 integrate .. //depot/projects/usb/src/sys/net/if.c#9 integrate .. //depot/projects/usb/src/sys/net/if_bridge.c#8 integrate .. //depot/projects/usb/src/sys/net/if_gre.c#7 integrate .. //depot/projects/usb/src/sys/net/if_gre.h#3 integrate .. //depot/projects/usb/src/sys/net/if_loop.c#8 integrate .. //depot/projects/usb/src/sys/net/if_tap.c#6 integrate .. //depot/projects/usb/src/sys/net/if_tun.c#6 integrate .. //depot/projects/usb/src/sys/net/if_var.h#7 integrate .. //depot/projects/usb/src/sys/netgraph/netgraph.h#6 integrate .. //depot/projects/usb/src/sys/netinet/in.c#8 integrate .. //depot/projects/usb/src/sys/netinet/ip_input.c#10 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias.c#5 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias_db.c#6 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias_ftp.c#5 integrate .. //depot/projects/usb/src/sys/netinet/sctp.h#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_asconf.c#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_auth.c#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_bsd_addr.c#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_bsd_addr.h#6 integrate .. //depot/projects/usb/src/sys/netinet/sctp_cc_functions.c#4 integrate .. //depot/projects/usb/src/sys/netinet/sctp_header.h#6 integrate .. //depot/projects/usb/src/sys/netinet/sctp_indata.c#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_input.c#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_lock_bsd.h#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_os_bsd.h#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_output.c#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_pcb.c#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_pcb.h#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_peeloff.c#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_sysctl.c#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_sysctl.h#6 integrate .. //depot/projects/usb/src/sys/netinet/sctp_timer.c#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_uio.h#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_usrreq.c#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_var.h#8 integrate .. //depot/projects/usb/src/sys/netinet/sctputil.c#8 integrate .. //depot/projects/usb/src/sys/netinet/tcp_lro.c#1 branch .. //depot/projects/usb/src/sys/netinet/tcp_lro.h#1 branch .. //depot/projects/usb/src/sys/netinet/tcp_syncache.c#11 integrate .. //depot/projects/usb/src/sys/netinet/udp_usrreq.c#9 integrate .. //depot/projects/usb/src/sys/netinet6/frag6.c#6 integrate .. //depot/projects/usb/src/sys/netinet6/in6_rmx.c#6 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_forward.c#6 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_input.c#9 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_ipsec.c#4 integrate .. //depot/projects/usb/src/sys/netinet6/sctp6_usrreq.c#8 integrate .. //depot/projects/usb/src/sys/netipsec/key.c#4 integrate .. //depot/projects/usb/src/sys/nfsclient/nfs.h#4 integrate .. //depot/projects/usb/src/sys/nfsclient/nfs_node.c#6 integrate .. //depot/projects/usb/src/sys/nfsclient/nfs_vfsops.c#8 integrate .. //depot/projects/usb/src/sys/nfsclient/nfs_vnops.c#9 integrate .. //depot/projects/usb/src/sys/nfsclient/nfsmount.h#3 integrate .. //depot/projects/usb/src/sys/nfsclient/nfsnode.h#5 integrate .. //depot/projects/usb/src/sys/nfsserver/nfs_syscalls.c#7 integrate .. //depot/projects/usb/src/sys/nlm/nlm.h#2 integrate .. //depot/projects/usb/src/sys/nlm/nlm_advlock.c#1 branch .. //depot/projects/usb/src/sys/nlm/nlm_prot.h#2 integrate .. //depot/projects/usb/src/sys/nlm/nlm_prot_clnt.c#2 integrate .. //depot/projects/usb/src/sys/nlm/nlm_prot_impl.c#3 integrate .. //depot/projects/usb/src/sys/nlm/nlm_prot_server.c#2 integrate .. //depot/projects/usb/src/sys/pc98/conf/NOTES#8 integrate .. //depot/projects/usb/src/sys/pc98/include/pecoff_machdep.h#2 delete .. //depot/projects/usb/src/sys/pci/if_rl.c#7 integrate .. //depot/projects/usb/src/sys/pci/if_rlreg.h#8 integrate .. //depot/projects/usb/src/sys/pci/nfsmb.c#7 integrate .. //depot/projects/usb/src/sys/pci/viapm.c#6 integrate .. //depot/projects/usb/src/sys/powerpc/booke/pmap.c#3 integrate .. //depot/projects/usb/src/sys/powerpc/include/memdev.h#2 integrate .. //depot/projects/usb/src/sys/powerpc/powermac/grackle.c#4 integrate .. //depot/projects/usb/src/sys/powerpc/powermac/macio.c#4 integrate .. //depot/projects/usb/src/sys/powerpc/powermac/uninorth.c#5 integrate .. //depot/projects/usb/src/sys/rpc/auth_unix.c#2 integrate .. //depot/projects/usb/src/sys/rpc/authunix_prot.c#2 integrate .. //depot/projects/usb/src/sys/rpc/clnt.h#2 integrate .. //depot/projects/usb/src/sys/rpc/clnt_dg.c#2 integrate .. //depot/projects/usb/src/sys/rpc/clnt_rc.c#2 integrate .. //depot/projects/usb/src/sys/rpc/clnt_vc.c#2 integrate .. //depot/projects/usb/src/sys/rpc/rpcb_clnt.c#2 integrate .. //depot/projects/usb/src/sys/rpc/svc_vc.c#2 integrate .. //depot/projects/usb/src/sys/security/audit/audit_pipe.c#7 integrate .. //depot/projects/usb/src/sys/security/audit/audit_worker.c#8 integrate .. //depot/projects/usb/src/sys/security/mac/mac_framework.h#6 integrate .. //depot/projects/usb/src/sys/security/mac/mac_inet.c#7 integrate .. //depot/projects/usb/src/sys/security/mac/mac_policy.h#6 integrate .. //depot/projects/usb/src/sys/security/mac/mac_posix_sem.c#6 integrate .. //depot/projects/usb/src/sys/security/mac_biba/mac_biba.c#6 integrate .. //depot/projects/usb/src/sys/security/mac_lomac/mac_lomac.c#7 integrate .. //depot/projects/usb/src/sys/security/mac_mls/mac_mls.c#7 integrate .. //depot/projects/usb/src/sys/security/mac_stub/mac_stub.c#7 integrate .. //depot/projects/usb/src/sys/security/mac_test/mac_test.c#7 integrate .. //depot/projects/usb/src/sys/sparc64/include/in_cksum.h#2 integrate .. //depot/projects/usb/src/sys/sparc64/include/memdev.h#2 integrate .. //depot/projects/usb/src/sys/sun4v/include/in_cksum.h#2 integrate .. //depot/projects/usb/src/sys/sun4v/include/memdev.h#2 integrate .. //depot/projects/usb/src/sys/sys/apm.h#3 integrate .. //depot/projects/usb/src/sys/sys/bus.h#6 integrate .. //depot/projects/usb/src/sys/sys/conf.h#7 integrate .. //depot/projects/usb/src/sys/sys/fcntl.h#3 integrate .. //depot/projects/usb/src/sys/sys/file.h#5 integrate .. //depot/projects/usb/src/sys/sys/ioctl.h#2 integrate .. //depot/projects/usb/src/sys/sys/ioctl_compat.h#3 integrate .. //depot/projects/usb/src/sys/sys/jail.h#5 integrate .. //depot/projects/usb/src/sys/sys/ksem.h#2 integrate .. //depot/projects/usb/src/sys/sys/lockf.h#4 integrate .. //depot/projects/usb/src/sys/sys/mount.h#8 integrate .. //depot/projects/usb/src/sys/sys/param.h#11 integrate .. //depot/projects/usb/src/sys/sys/priv.h#6 integrate .. //depot/projects/usb/src/sys/sys/semaphore.h#2 integrate .. //depot/projects/usb/src/sys/sys/socketvar.h#7 integrate .. //depot/projects/usb/src/sys/sys/systm.h#9 integrate .. //depot/projects/usb/src/sys/sys/ttychars.h#2 delete .. //depot/projects/usb/src/sys/sys/ttydev.h#2 delete .. //depot/projects/usb/src/sys/sys/umtx.h#8 integrate .. //depot/projects/usb/src/sys/sys/user.h#5 integrate .. //depot/projects/usb/src/sys/vm/vm_kern.c#7 integrate .. //depot/projects/usb/src/sys/vm/vm_map.c#10 integrate .. //depot/projects/usb/src/sys/vm/vnode_pager.c#9 integrate Differences ... ==== //depot/projects/usb/src/sys/amd64/amd64/bpf_jit_machdep.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.c,v 1.4 2006/01/03 20:26:02 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.c,v 1.6 2008/06/24 20:12:12 jkim Exp $"); #include "opt_bpf.h" @@ -132,11 +132,11 @@ /* create the procedure header */ PUSH(RBP); - MOVrq(RBP, RSP); - MOVoqd(RBP, -8, ESI); - MOVoqd(RBP, -12, EDX); + MOVrq(RSP, RBP); + MOVdoq(ESI, -8, RBP); + MOVdoq(EDX, -12, RBP); PUSH(RBX); - MOVrq(RBX, RDI); + MOVrq(RDI, RBX); for (i = 0; i < nins; i++) { stream.bpf_pc++; @@ -146,7 +146,7 @@ return NULL; case BPF_RET|BPF_K: - MOVid(EAX, ins->k); + MOVid(ins->k, EAX); POP(RBX); LEAVE_RET(); break; @@ -157,119 +157,119 @@ break; case BPF_LD|BPF_W|BPF_ABS: - MOVid(ECX, ins->k); - MOVrd(ESI, ECX); - ADDib(ECX, sizeof(int)); - CMPodd(ECX, RBP, -12); + MOVid(ins->k, ECX); + MOVrd(ECX, ESI); + ADDib(sizeof(int), ECX); + CMPoqd(-12, RBP, ECX); JLEb(5); - ZERO_EAX(); + ZEROrd(EAX); POP(RBX); LEAVE_RET(); - MOVobd(EAX, RBX, RSI); + MOVobd(RBX, RSI, EAX); BSWAP(EAX); break; case BPF_LD|BPF_H|BPF_ABS: - ZERO_EAX(); - MOVid(ECX, ins->k); - MOVrd(ESI, ECX); - ADDib(ECX, sizeof(short)); - CMPodd(ECX, RBP, -12); + ZEROrd(EAX); + MOVid(ins->k, ECX); + MOVrd(ECX, ESI); + ADDib(sizeof(short), ECX); + CMPoqd(-12, RBP, ECX); JLEb(3); POP(RBX); LEAVE_RET(); - MOVobw(AX, RBX, RSI); + MOVobw(RBX, RSI, AX); SWAP_AX(); break; case BPF_LD|BPF_B|BPF_ABS: - ZERO_EAX(); - MOVid(ECX, ins->k); - CMPodd(ECX, RBP, -12); + ZEROrd(EAX); + MOVid(ins->k, ECX); + CMPoqd(-12, RBP, ECX); JLEb(3); POP(RBX); LEAVE_RET(); - MOVobb(AL, RBX, RCX); + MOVobb(RBX, RCX, AL); break; case BPF_LD|BPF_W|BPF_LEN: - MOVodd(EAX, RBP, -8); + MOVoqd(-8, RBP, EAX); break; case BPF_LDX|BPF_W|BPF_LEN: - MOVodd(EDX, RBP, -8); + MOVoqd(-8, RBP, EDX); break; case BPF_LD|BPF_W|BPF_IND: - MOVid(ECX, ins->k); - ADDrd(ECX, EDX); - MOVrd(ESI, ECX); - ADDib(ECX, sizeof(int)); - CMPodd(ECX, RBP, -12); + MOVid(ins->k, ECX); + ADDrd(EDX, ECX); + MOVrd(ECX, ESI); + ADDib(sizeof(int), ECX); + CMPoqd(-12, RBP, ECX); JLEb(5); - ZERO_EAX(); + ZEROrd(EAX); POP(RBX); LEAVE_RET(); - MOVobd(EAX, RBX, RSI); + MOVobd(RBX, RSI, EAX); BSWAP(EAX); break; case BPF_LD|BPF_H|BPF_IND: - ZERO_EAX(); - MOVid(ECX, ins->k); - ADDrd(ECX, EDX); - MOVrd(ESI, ECX); - ADDib(ECX, sizeof(short)); - CMPodd(ECX, RBP, -12); + ZEROrd(EAX); + MOVid(ins->k, ECX); + ADDrd(EDX, ECX); + MOVrd(ECX, ESI); + ADDib(sizeof(short), ECX); + CMPoqd(-12, RBP, ECX); JLEb(3); POP(RBX); LEAVE_RET(); - MOVobw(AX, RBX, RSI); + MOVobw(RBX, RSI, AX); SWAP_AX(); break; case BPF_LD|BPF_B|BPF_IND: - ZERO_EAX(); - MOVid(ECX, ins->k); - ADDrd(ECX, EDX); - CMPodd(ECX, RBP, -12); + ZEROrd(EAX); + MOVid(ins->k, ECX); + ADDrd(EDX, ECX); + CMPoqd(-12, RBP, ECX); JLEb(3); POP(RBX); LEAVE_RET(); - MOVobb(AL, RBX, RCX); + MOVobb(RBX, RCX, AL); break; case BPF_LDX|BPF_MSH|BPF_B: - MOVid(ECX, ins->k); - CMPodd(ECX, RBP, -12); + MOVid(ins->k, ECX); + CMPoqd(-12, RBP, ECX); JLEb(5); - ZERO_EAX(); + ZEROrd(EAX); POP(RBX); LEAVE_RET(); - ZERO_EDX(); - MOVobb(DL, RBX, RCX); - ANDib(DL, 0xf); - SHLib(EDX, 2); + ZEROrd(EDX); + MOVobb(RBX, RCX, DL); + ANDib(0xf, DL); + SHLib(2, EDX); break; case BPF_LD|BPF_IMM: - MOVid(EAX, ins->k); + MOVid(ins->k, EAX); break; case BPF_LDX|BPF_IMM: - MOVid(EDX, ins->k); + MOVid(ins->k, EDX); break; case BPF_LD|BPF_MEM: - MOViq(RCX, (uintptr_t)mem); - MOVid(ESI, ins->k * 4); - MOVobd(EAX, RCX, RSI); + MOViq((uintptr_t)mem, RCX); + MOVid(ins->k * 4, ESI); + MOVobd(RCX, RSI, EAX); break; case BPF_LDX|BPF_MEM: - MOViq(RCX, (uintptr_t)mem); - MOVid(ESI, ins->k * 4); - MOVobd(EDX, RCX, RSI); + MOViq((uintptr_t)mem, RCX); + MOVid(ins->k * 4, ESI); + MOVobd(RCX, RSI, EDX); break; case BPF_ST: @@ -278,15 +278,15 @@ * be optimized if the previous instruction * was already of this type */ - MOViq(RCX, (uintptr_t)mem); - MOVid(ESI, ins->k * 4); - MOVomd(RCX, RSI, EAX); + MOViq((uintptr_t)mem, RCX); + MOVid(ins->k * 4, ESI); + MOVomd(EAX, RCX, RSI); break; case BPF_STX: - MOViq(RCX, (uintptr_t)mem); - MOVid(ESI, ins->k * 4); - MOVomd(RCX, RSI, EDX); + MOViq((uintptr_t)mem, RCX); + MOVid(ins->k * 4, ESI); + MOVomd(EDX, RCX, RSI); break; case BPF_JMP|BPF_JA: @@ -295,7 +295,7 @@ break; case BPF_JMP|BPF_JGT|BPF_K: - CMPid(EAX, ins->k); + CMPid(ins->k, EAX); /* 5 is the size of the following JMP */ JG(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5 ); @@ -304,7 +304,7 @@ break; case BPF_JMP|BPF_JGE|BPF_K: - CMPid(EAX, ins->k); + CMPid(ins->k, EAX); JGE(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -312,7 +312,7 @@ break; case BPF_JMP|BPF_JEQ|BPF_K: - CMPid(EAX, ins->k); + CMPid(ins->k, EAX); JE(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -320,8 +320,8 @@ break; case BPF_JMP|BPF_JSET|BPF_K: - MOVrd(ECX, EAX); - ANDid(ECX, ins->k); + MOVrd(EAX, ECX); + ANDid(ins->k, ECX); JE(stream.refs[stream.bpf_pc + ins->jf] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jt] - @@ -329,7 +329,7 @@ break; case BPF_JMP|BPF_JGT|BPF_X: - CMPrd(EAX, EDX); + CMPrd(EDX, EAX); JA(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -337,7 +337,7 @@ break; case BPF_JMP|BPF_JGE|BPF_X: - CMPrd(EAX, EDX); + CMPrd(EDX, EAX); JAE(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -345,7 +345,7 @@ break; case BPF_JMP|BPF_JEQ|BPF_X: - CMPrd(EAX, EDX); + CMPrd(EDX, EAX); JE(stream.refs[stream.bpf_pc + ins->jt] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jf] - @@ -353,8 +353,8 @@ break; case BPF_JMP|BPF_JSET|BPF_X: - MOVrd(ECX, EAX); - ANDrd(ECX, EDX); + MOVrd(EAX, ECX); + ANDrd(EDX, ECX); JE(stream.refs[stream.bpf_pc + ins->jf] - stream.refs[stream.bpf_pc] + 5); JMP(stream.refs[stream.bpf_pc + ins->jt] - @@ -362,46 +362,46 @@ break; case BPF_ALU|BPF_ADD|BPF_X: - ADDrd(EAX, EDX); + ADDrd(EDX, EAX); break; case BPF_ALU|BPF_SUB|BPF_X: - SUBrd(EAX, EDX); + SUBrd(EDX, EAX); break; case BPF_ALU|BPF_MUL|BPF_X: + MOVrd(EDX, ECX); + MULrd(EDX); MOVrd(ECX, EDX); - MULrd(EDX); - MOVrd(EDX, ECX); break; case BPF_ALU|BPF_DIV|BPF_X: - CMPid(EDX, 0); + CMPid(0, EDX); JNEb(5); - ZERO_EAX(); + ZEROrd(EAX); POP(RBX); LEAVE_RET(); + MOVrd(EDX, ECX); + ZEROrd(EDX); + DIVrd(ECX); MOVrd(ECX, EDX); - ZERO_EDX(); - DIVrd(ECX); - MOVrd(EDX, ECX); break; case BPF_ALU|BPF_AND|BPF_X: - ANDrd(EAX, EDX); + ANDrd(EDX, EAX); break; case BPF_ALU|BPF_OR|BPF_X: - ORrd(EAX, EDX); + ORrd(EDX, EAX); break; case BPF_ALU|BPF_LSH|BPF_X: - MOVrd(ECX, EDX); + MOVrd(EDX, ECX); SHL_CLrb(EAX); break; case BPF_ALU|BPF_RSH|BPF_X: - MOVrd(ECX, EDX); + MOVrd(EDX, ECX); SHR_CLrb(EAX); break; @@ -414,34 +414,34 @@ break; case BPF_ALU|BPF_MUL|BPF_K: + MOVrd(EDX, ECX); + MOVid(ins->k, EDX); + MULrd(EDX); MOVrd(ECX, EDX); - MOVid(EDX, ins->k); - MULrd(EDX); - MOVrd(EDX, ECX); break; case BPF_ALU|BPF_DIV|BPF_K: + MOVrd(EDX, ECX); + ZEROrd(EDX); + MOVid(ins->k, ESI); + DIVrd(ESI); MOVrd(ECX, EDX); - ZERO_EDX(); - MOVid(ESI, ins->k); - DIVrd(ESI); - MOVrd(EDX, ECX); break; case BPF_ALU|BPF_AND|BPF_K: - ANDid(EAX, ins->k); + ANDid(ins->k, EAX); break; case BPF_ALU|BPF_OR|BPF_K: - ORid(EAX, ins->k); + ORid(ins->k, EAX); break; case BPF_ALU|BPF_LSH|BPF_K: - SHLib(EAX, (ins->k) & 255); + SHLib((ins->k) & 0xff, EAX); break; case BPF_ALU|BPF_RSH|BPF_K: - SHRib(EAX, (ins->k) & 255); + SHRib((ins->k) & 0xff, EAX); break; case BPF_ALU|BPF_NEG: @@ -449,11 +449,11 @@ break; case BPF_MISC|BPF_TAX: - MOVrd(EDX, EAX); + MOVrd(EAX, EDX); break; case BPF_MISC|BPF_TXA: - MOVrd(EAX, EDX); + MOVrd(EDX, EAX); break; } ins++; ==== //depot/projects/usb/src/sys/amd64/amd64/bpf_jit_machdep.h#2 (text+ko) ==== @@ -28,7 +28,7 @@ * (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: src/sys/amd64/amd64/bpf_jit_machdep.h,v 1.3 2005/12/06 20:11:07 jkim Exp $ + * $FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.h,v 1.5 2008/06/24 20:12:12 jkim Exp $ */ #ifndef _BPF_JIT_MACHDEP_H_ @@ -104,254 +104,252 @@ * native Instruction Macros */ -/* mov r32,i32 */ -#define MOVid(r32, i32) do { \ +/* movl i32,r32 */ +#define MOVid(i32, r32) do { \ emitm(&stream, (11 << 4) | (1 << 3) | (r32 & 0x7), 1); \ emitm(&stream, i32, 4); \ } while (0) -/* mov r64,i64 */ -#define MOViq(r64, i64) do { \ +/* movq i64,r64 */ +#define MOViq(i64, r64) do { \ emitm(&stream, 0x48, 1); \ emitm(&stream, (11 << 4) | (1 << 3) | (r64 & 0x7), 1); \ emitm(&stream, i64, 4); \ emitm(&stream, (i64 >> 32), 4); \ } while (0) -/* mov dr32,sr32 */ -#define MOVrd(dr32, sr32) do { \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ +/* movl sr32,dr32 */ +#define MOVrd(sr32, dr32) do { \ + emitm(&stream, 0x89, 1); \ emitm(&stream, \ - (3 << 6) | ((dr32 & 0x7) << 3) | (sr32 & 0x7), 1); \ + (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1); \ } while (0) -/* mov dr64,sr64 */ -#define MOVrq(dr64, sr64) do { \ - emitm(&stream, 0x48, 1); \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ +/* movq sr64,dr64 */ +#define MOVrq(sr64, dr64) do { \ + emitm(&stream, 0x8948, 2); \ emitm(&stream, \ - (3 << 6) | ((dr64 & 0x7) << 3) | (sr64 & 0x7), 1); \ + (3 << 6) | ((sr64 & 0x7) << 3) | (dr64 & 0x7), 1); \ } while (0) -/* mov dr32,sr64[off] */ -#define MOVodd(dr32, sr64, off) do { \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ +/* movl off(sr64),dr32 */ +#define MOVoqd(off, sr64, dr32) do { \ + emitm(&stream, 0x8b, 1); \ emitm(&stream, \ (1 << 6) | ((dr32 & 0x7) << 3) | (sr64 & 0x7), 1); \ emitm(&stream, off, 1); \ } while (0) -/* mov dr64[off],sr32 */ -#define MOVoqd(dr64, off, sr32) do { \ - emitm(&stream, (8 << 4) | 1 | (1 << 3), 1); \ +/* movl sr32,off(dr64) */ +#define MOVdoq(sr32, off, dr64) do { \ + emitm(&stream, 0x89, 1); \ emitm(&stream, \ (1 << 6) | ((sr32 & 0x7) << 3) | (dr64 & 0x7), 1); \ emitm(&stream, off, 1); \ } while (0) -/* mov dr32,sr64[or64] */ -#define MOVobd(dr32, sr64, or64) do { \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ +/* movl (sr64,or64,1),dr32 */ +#define MOVobd(sr64, or64, dr32) do { \ + emitm(&stream, 0x8b, 1); \ emitm(&stream, ((dr32 & 0x7) << 3) | 4, 1); \ emitm(&stream, ((or64 & 0x7) << 3) | (sr64 & 0x7), 1); \ } while (0) -/* mov dr16,sr64[or64] */ -#define MOVobw(dr32, sr64, or64) do { \ - emitm(&stream, 0x66, 1); \ - emitm(&stream, (8 << 4) | 3 | (1 << 3), 1); \ - emitm(&stream, ((dr32 & 0x7) << 3) | 4, 1); \ +/* movw (sr64,or64,1),dr16 */ +#define MOVobw(sr64, or64, dr16) do { \ + emitm(&stream, 0x8b66, 2); \ + emitm(&stream, ((dr16 & 0x7) << 3) | 4, 1); \ emitm(&stream, ((or64 & 0x7) << 3) | (sr64 & 0x7), 1); \ } while (0) -/* mov dr8,sr64[or64] */ -#define MOVobb(dr8, sr64, or64) do { \ +/* movb (sr64,or64,1),dr8 */ +#define MOVobb(sr64, or64, dr8) do { \ emitm(&stream, 0x8a, 1); \ emitm(&stream, ((dr8 & 0x7) << 3) | 4, 1); \ emitm(&stream, ((or64 & 0x7) << 3) | (sr64 & 0x7), 1); \ } while (0) -/* mov [dr64][or64],sr32 */ -#define MOVomd(dr64, or64, sr32) do { \ +/* movl sr32,(dr64,or64,1) */ +#define MOVomd(sr32, dr64, or64) do { \ emitm(&stream, 0x89, 1); \ emitm(&stream, ((sr32 & 0x7) << 3) | 4, 1); \ emitm(&stream, ((or64 & 0x7) << 3) | (dr64 & 0x7), 1); \ } while (0) -/* bswap dr32 */ +/* bswapl dr32 */ #define BSWAP(dr32) do { \ emitm(&stream, 0xf, 1); \ emitm(&stream, (0x19 << 3) | dr32, 1); \ } while (0) -/* xchg al,ah */ +/* xchgb %al,%ah */ #define SWAP_AX() do { \ - emitm(&stream, 0x86, 1); \ - emitm(&stream, 0xc4, 1); \ + emitm(&stream, 0xc486, 2); \ } while (0) -/* push r64 */ +/* pushq r64 */ #define PUSH(r64) do { \ emitm(&stream, (5 << 4) | (0 << 3) | (r64 & 0x7), 1); \ } while (0) -/* pop r64 */ +/* popq r64 */ #define POP(r64) do { \ emitm(&stream, (5 << 4) | (1 << 3) | (r64 & 0x7), 1); \ } while (0) -/* leave/ret */ +/* leaveq/retq */ #define LEAVE_RET() do { \ - emitm(&stream, 0xc9, 1); \ - emitm(&stream, 0xc3, 1); \ + emitm(&stream, 0xc3c9, 2); \ } while (0) -/* add dr32,sr32 */ -#define ADDrd(dr32, sr32) do { \ - emitm(&stream, 0x03, 1); \ +/* addl sr32,dr32 */ +#define ADDrd(sr32, dr32) do { \ + emitm(&stream, 0x01, 1); \ emitm(&stream, \ - (3 << 6) | ((dr32 & 0x7) << 3) | (sr32 & 0x7), 1); \ + (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1); \ } while (0) -/* add eax,i32 */ +/* addl i32,%eax */ #define ADD_EAXi(i32) do { \ emitm(&stream, 0x05, 1); \ emitm(&stream, i32, 4); \ } while (0) -/* add r32,i32 */ -#define ADDid(r32, i32) do { \ +/* addl i32,r32 */ +#define ADDid(i32, r32) do { \ emitm(&stream, 0x81, 1); \ emitm(&stream, (24 << 3) | r32, 1); \ emitm(&stream, i32, 4); \ } while (0) -/* add r32,i8 */ -#define ADDib(r32, i8) do { \ +/* addl i8,r32 */ +#define ADDib(i8, r32) do { \ emitm(&stream, 0x83, 1); \ emitm(&stream, (24 << 3) | r32, 1); \ emitm(&stream, i8, 1); \ } while (0) -/* sub dr32,sr32 */ -#define SUBrd(dr32, sr32) do { \ - emitm(&stream, 0x2b, 1); \ +/* subl sr32,dr32 */ +#define SUBrd(sr32, dr32) do { \ + emitm(&stream, 0x29, 1); \ emitm(&stream, \ - (3 << 6) | ((dr32 & 0x7) << 3) | (sr32 & 0x7), 1); \ + (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1); \ } while (0) -/* sub eax,i32 */ +/* subl i32,%eax */ #define SUB_EAXi(i32) do { \ emitm(&stream, 0x2d, 1); \ emitm(&stream, i32, 4); \ } while (0) -/* mul r32 */ +/* mull r32 */ #define MULrd(r32) do { \ emitm(&stream, 0xf7, 1); \ emitm(&stream, (7 << 5) | (r32 & 0x7), 1); \ } while (0) -/* div r32 */ +/* divl r32 */ #define DIVrd(r32) do { \ emitm(&stream, 0xf7, 1); \ emitm(&stream, (15 << 4) | (r32 & 0x7), 1); \ } while (0) -/* and r8,i8 */ -#define ANDib(r8, i8) do { \ - emitm(&stream, 0x80, 1); \ - emitm(&stream, (7 << 5) | r8, 1); \ +/* andb i8,r8 */ +#define ANDib(i8, r8) do { \ + if (r8 == AL) { \ + emitm(&stream, 0x24, 1); \ + } else { \ + emitm(&stream, 0x80, 1); \ + emitm(&stream, (7 << 5) | r8, 1); \ + } \ emitm(&stream, i8, 1); \ } while (0) -/* and r32,i32 */ -#define ANDid(r32, i32) do { \ +/* andl i32,r32 */ +#define ANDid(i32, r32) do { \ if (r32 == EAX) { \ emitm(&stream, 0x25, 1); \ - emitm(&stream, i32, 4); \ } else { \ emitm(&stream, 0x81, 1); \ emitm(&stream, (7 << 5) | r32, 1); \ - emitm(&stream, i32, 4); \ } \ + emitm(&stream, i32, 4); \ } while (0) -/* and dr32,sr32 */ -#define ANDrd(dr32, sr32) do { \ - emitm(&stream, 0x23, 1); \ +/* andl sr32,dr32 */ +#define ANDrd(sr32, dr32) do { \ + emitm(&stream, 0x21, 1); \ emitm(&stream, \ >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Thu Jul 3 22:32:26 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 22:32:28 2008 Subject: PERFORCE change 144575 for review Message-ID: <200807032232.m63MWPdl038849@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144575 Change 144575 by hselasky@hselasky_laptop001 on 2008/07/03 22:31:42 Remove some old files. Affected files ... .. //depot/projects/usb/src/sys/dev/sound/pcm.old/ac97.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/ac97.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/ac97_if.m#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/ac97_patch.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/ac97_patch.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/buffer.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/buffer.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/channel.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/channel.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/channel_if.m#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/dsp.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/dsp.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/fake.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/feeder.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/feeder.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/feeder_fmt.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/feeder_if.m#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/feeder_rate.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/feeder_volume.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/mixer.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/mixer.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/mixer_if.m#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/sndstat.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/sound.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/sound.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/vchan.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/pcm.old/vchan.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/usb.old/uaudio.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/usb.old/uaudio.h#2 delete .. //depot/projects/usb/src/sys/dev/sound/usb.old/uaudio_pcm.c#2 delete .. //depot/projects/usb/src/sys/dev/sound/usb.old/uaudioreg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/FILES#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/dsbr100io.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ehci.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ehci_pci.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ehcireg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ehcivar.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/hid.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/hid.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_aue.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_auereg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_axe.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_axereg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_cdce.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_cdcereg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_cue.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_cuereg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_kue.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_kuereg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_rue.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_ruereg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_udav.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_udavreg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_ural.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_uralreg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/if_uralvar.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/kue_fw.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ohci.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ohci_pci.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ohcireg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ohcivar.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/rio500_usb.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/sl811hs.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/sl811hsreg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/sl811hsvar.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/slhci_pccard.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ubsa.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ubser.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ubser.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ucom.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ucomvar.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ucycom.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/udbp.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/udbp.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ufm.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ufoma.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uftdi.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uftdireg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ugen.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ugraphire_rdesc.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uhci.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uhci_pci.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uhcireg.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uhcivar.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uhid.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uhub.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ukbd.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ulpt.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/umass.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/umct.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/umodem.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/ums.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uplcom.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/urio.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb_ethersubr.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb_ethersubr.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb_if.m#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb_mem.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb_mem.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb_port.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb_quirks.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb_quirks.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usb_subr.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usbcdc.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usbdevs#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usbdi.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usbdi.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usbdi_util.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usbdi_util.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usbdivar.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/usbhid.h#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uscanner.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uvisor.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uvscom.c#2 delete .. //depot/projects/usb/src/sys/dev/usb.old/uxb360gp_rdesc.h#2 delete Differences ... From hselasky at FreeBSD.org Thu Jul 3 22:39:33 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 22:39:36 2008 Subject: PERFORCE change 144577 for review Message-ID: <200807032239.m63MdX1X039515@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144577 Change 144577 by hselasky@hselasky_laptop001 on 2008/07/03 22:38:57 This is the first step making the old USB stack compile together with the new USB stack. Remove files that did not initially exist in the old USB stack. Note that all of these files now reside under /sys/dev/usb2 . Affected files ... .. //depot/projects/usb/src/sys/arm/at91/at91_udp.c#7 delete .. //depot/projects/usb/src/sys/dev/usb/README#37 delete .. //depot/projects/usb/src/sys/dev/usb/at9100_dci.c#19 delete .. //depot/projects/usb/src/sys/dev/usb/at9100_dci.h#5 delete .. //depot/projects/usb/src/sys/dev/usb/ehci.h#27 delete .. //depot/projects/usb/src/sys/dev/usb/if_kuefw.h#7 delete .. //depot/projects/usb/src/sys/dev/usb/if_rumfw.h#3 delete .. //depot/projects/usb/src/sys/dev/usb/ohci.h#22 delete .. //depot/projects/usb/src/sys/dev/usb/ugensa.c#23 delete .. //depot/projects/usb/src/sys/dev/usb/uhci.h#22 delete .. //depot/projects/usb/src/sys/dev/usb/umoscom.c#19 delete .. //depot/projects/usb/src/sys/dev/usb/usb_cdc.h#9 delete .. //depot/projects/usb/src/sys/dev/usb/usb_cdev.c#20 delete .. //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.c#27 delete .. //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.h#9 delete .. //depot/projects/usb/src/sys/dev/usb/usb_hid.c#16 delete .. //depot/projects/usb/src/sys/dev/usb/usb_hid.h#11 delete .. //depot/projects/usb/src/sys/dev/usb/usb_rdesc.h#4 delete .. //depot/projects/usb/src/sys/dev/usb/usb_requests.c#22 delete .. //depot/projects/usb/src/sys/dev/usb/usb_style.sh#5 delete .. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#104 delete .. //depot/projects/usb/src/sys/dev/usb/usb_template.c#17 delete .. //depot/projects/usb/src/sys/dev/usb/usb_template.h#10 delete .. //depot/projects/usb/src/sys/dev/usb/usb_template_cdce.c#8 delete .. //depot/projects/usb/src/sys/dev/usb/usb_template_msc.c#3 delete .. //depot/projects/usb/src/sys/dev/usb/usb_template_mtp.c#2 delete .. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#127 delete .. //depot/projects/usb/src/sys/dev/usb/uss820_dci.c#14 delete .. //depot/projects/usb/src/sys/dev/usb/uss820_dci.h#7 delete .. //depot/projects/usb/src/sys/dev/usb/uss820_dci_pccard.c#3 delete .. //depot/projects/usb/src/sys/dev/usb/ustorage_fs.c#4 delete .. //depot/projects/usb/src/sys/modules/ugensa/Makefile#5 delete .. //depot/projects/usb/src/sys/modules/umoscom/Makefile#5 delete .. //depot/projects/usb/src/sys/modules/uss820_dci/Makefile#2 delete .. //depot/projects/usb/src/sys/modules/ustorage_fs/Makefile#2 delete Differences ... From hselasky at FreeBSD.org Thu Jul 3 23:00:59 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 23:01:02 2008 Subject: PERFORCE change 144578 for review Message-ID: <200807032300.m63N0sFN041397@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144578 Change 144578 by hselasky@hselasky_laptop001 on 2008/07/03 23:00:00 This is the second step making the old USB stack compile together with the new USB stack. Restore old USB stack. Note that the new USB stack now resides under /sys/dev/usb2 . Affected files ... .. //depot/projects/usb/src/sys/amd64/conf/NOTES#11 integrate .. //depot/projects/usb/src/sys/arm/at91/files.at91#5 integrate .. //depot/projects/usb/src/sys/arm/at91/ohci_atmelarm.c#17 integrate .. //depot/projects/usb/src/sys/arm/conf/KB920X#9 integrate .. //depot/projects/usb/src/sys/conf/NOTES#15 integrate .. //depot/projects/usb/src/sys/conf/files#29 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-usb.c#37 integrate .. //depot/projects/usb/src/sys/dev/if_ndis/if_ndis_usb.c#8 integrate .. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#34 integrate .. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.h#7 integrate .. //depot/projects/usb/src/sys/dev/sound/usb/uaudio_pcm.c#10 integrate .. //depot/projects/usb/src/sys/dev/sound/usb/uaudioreg.h#8 integrate .. //depot/projects/usb/src/sys/dev/usb/FILES#3 branch .. //depot/projects/usb/src/sys/dev/usb/dsbr100io.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb/ehci.c#81 integrate .. //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#36 integrate .. //depot/projects/usb/src/sys/dev/usb/ehcireg.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/ehcivar.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/hid.c#5 branch .. //depot/projects/usb/src/sys/dev/usb/hid.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/if_aue.c#48 integrate .. //depot/projects/usb/src/sys/dev/usb/if_auereg.h#15 integrate .. //depot/projects/usb/src/sys/dev/usb/if_axe.c#51 integrate .. //depot/projects/usb/src/sys/dev/usb/if_axereg.h#19 integrate .. //depot/projects/usb/src/sys/dev/usb/if_cdce.c#51 integrate .. //depot/projects/usb/src/sys/dev/usb/if_cdcereg.h#18 integrate .. //depot/projects/usb/src/sys/dev/usb/if_cue.c#44 integrate .. //depot/projects/usb/src/sys/dev/usb/if_cuereg.h#14 integrate .. //depot/projects/usb/src/sys/dev/usb/if_kue.c#46 integrate .. //depot/projects/usb/src/sys/dev/usb/if_kuereg.h#13 integrate .. //depot/projects/usb/src/sys/dev/usb/if_rue.c#43 integrate .. //depot/projects/usb/src/sys/dev/usb/if_ruereg.h#14 integrate .. //depot/projects/usb/src/sys/dev/usb/if_rum.c#34 integrate .. //depot/projects/usb/src/sys/dev/usb/if_rumreg.h#6 integrate .. //depot/projects/usb/src/sys/dev/usb/if_rumvar.h#8 integrate .. //depot/projects/usb/src/sys/dev/usb/if_udav.c#47 integrate .. //depot/projects/usb/src/sys/dev/usb/if_udavreg.h#12 integrate .. //depot/projects/usb/src/sys/dev/usb/if_ural.c#60 integrate .. //depot/projects/usb/src/sys/dev/usb/if_uralreg.h#17 integrate .. //depot/projects/usb/src/sys/dev/usb/if_uralvar.h#23 integrate .. //depot/projects/usb/src/sys/dev/usb/if_zyd.c#42 integrate .. //depot/projects/usb/src/sys/dev/usb/if_zydfw.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb/if_zydreg.h#17 integrate .. //depot/projects/usb/src/sys/dev/usb/kue_fw.h#5 branch .. //depot/projects/usb/src/sys/dev/usb/ohci.c#65 integrate .. //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#31 integrate .. //depot/projects/usb/src/sys/dev/usb/ohcireg.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/ohcivar.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/rio500_usb.h#8 integrate .. //depot/projects/usb/src/sys/dev/usb/rt2573_ucode.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/sl811hs.c#8 integrate .. //depot/projects/usb/src/sys/dev/usb/sl811hsreg.h#4 integrate .. //depot/projects/usb/src/sys/dev/usb/sl811hsvar.h#6 integrate .. //depot/projects/usb/src/sys/dev/usb/slhci_pccard.c#7 integrate .. //depot/projects/usb/src/sys/dev/usb/uark.c#24 integrate .. //depot/projects/usb/src/sys/dev/usb/ubsa.c#42 integrate .. //depot/projects/usb/src/sys/dev/usb/ubser.c#31 integrate .. //depot/projects/usb/src/sys/dev/usb/ubser.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/uchcom.c#24 integrate .. //depot/projects/usb/src/sys/dev/usb/ucom.c#31 integrate .. //depot/projects/usb/src/sys/dev/usb/ucomvar.h#16 integrate .. //depot/projects/usb/src/sys/dev/usb/ucycom.c#35 integrate .. //depot/projects/usb/src/sys/dev/usb/udbp.c#27 integrate .. //depot/projects/usb/src/sys/dev/usb/udbp.h#9 integrate .. //depot/projects/usb/src/sys/dev/usb/ufm.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb/ufoma.c#41 integrate .. //depot/projects/usb/src/sys/dev/usb/uftdi.c#38 integrate .. //depot/projects/usb/src/sys/dev/usb/uftdireg.h#8 integrate .. //depot/projects/usb/src/sys/dev/usb/ugen.c#43 integrate .. //depot/projects/usb/src/sys/dev/usb/ugraphire_rdesc.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/uhci.c#63 integrate .. //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#33 integrate .. //depot/projects/usb/src/sys/dev/usb/uhcireg.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/uhcivar.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/uhid.c#33 integrate .. //depot/projects/usb/src/sys/dev/usb/uhub.c#34 integrate .. //depot/projects/usb/src/sys/dev/usb/uipaq.c#26 integrate .. //depot/projects/usb/src/sys/dev/usb/ukbd.c#44 integrate .. //depot/projects/usb/src/sys/dev/usb/ulpt.c#45 integrate .. //depot/projects/usb/src/sys/dev/usb/umass.c#49 integrate .. //depot/projects/usb/src/sys/dev/usb/umct.c#33 integrate .. //depot/projects/usb/src/sys/dev/usb/umodem.c#43 integrate .. //depot/projects/usb/src/sys/dev/usb/ums.c#45 integrate .. //depot/projects/usb/src/sys/dev/usb/uplcom.c#44 integrate .. //depot/projects/usb/src/sys/dev/usb/urio.c#27 integrate .. //depot/projects/usb/src/sys/dev/usb/usb.c#36 integrate .. //depot/projects/usb/src/sys/dev/usb/usb.h#33 integrate .. //depot/projects/usb/src/sys/dev/usb/usb_ethersubr.c#6 branch .. //depot/projects/usb/src/sys/dev/usb/usb_ethersubr.h#5 branch .. //depot/projects/usb/src/sys/dev/usb/usb_if.m#5 integrate .. //depot/projects/usb/src/sys/dev/usb/usb_mem.c#3 branch .. //depot/projects/usb/src/sys/dev/usb/usb_mem.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/usb_port.h#27 integrate .. //depot/projects/usb/src/sys/dev/usb/usb_quirks.c#18 integrate .. //depot/projects/usb/src/sys/dev/usb/usb_quirks.h#8 integrate .. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#107 integrate .. //depot/projects/usb/src/sys/dev/usb/usbcdc.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/usbdevs#20 integrate .. //depot/projects/usb/src/sys/dev/usb/usbdi.c#3 branch .. //depot/projects/usb/src/sys/dev/usb/usbdi.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/usbdi_util.c#3 branch .. //depot/projects/usb/src/sys/dev/usb/usbdi_util.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/usbdivar.h#3 branch .. //depot/projects/usb/src/sys/dev/usb/usbhid.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb/uscanner.c#30 integrate .. //depot/projects/usb/src/sys/dev/usb/uslcom.c#4 integrate .. //depot/projects/usb/src/sys/dev/usb/uvisor.c#37 integrate .. //depot/projects/usb/src/sys/dev/usb/uvscom.c#40 integrate .. //depot/projects/usb/src/sys/dev/usb/uxb360gp_rdesc.h#3 branch .. //depot/projects/usb/src/sys/modules/Makefile#16 integrate .. //depot/projects/usb/src/sys/modules/ata/atausb/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/aue/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/axe/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/cdce/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/cue/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/if_ndis/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/kue/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/ndis/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/netgraph/bluetooth/ubt/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/netgraph/bluetooth/ubtbcmfw/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/rue/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/rum/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/slhci/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/sound/driver/uaudio/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/uark/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/ubsa/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/ubser/Makefile#5 integrate .. //depot/projects/usb/src/sys/modules/uchcom/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/ucom/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/ucycom/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/udav/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/udbp/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/ufm/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/ufoma/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/uftdi/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/ugen/Makefile#7 integrate .. //depot/projects/usb/src/sys/modules/uhid/Makefile#5 integrate .. //depot/projects/usb/src/sys/modules/uipaq/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/ukbd/Makefile#7 integrate .. //depot/projects/usb/src/sys/modules/ulpt/Makefile#5 integrate .. //depot/projects/usb/src/sys/modules/umass/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/umct/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/umodem/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/ums/Makefile#5 integrate .. //depot/projects/usb/src/sys/modules/uplcom/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/ural/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/urio/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/usb/Makefile#10 integrate .. //depot/projects/usb/src/sys/modules/uscanner/Makefile#4 integrate .. //depot/projects/usb/src/sys/modules/uslcom/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/uvisor/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/uvscom/Makefile#3 integrate .. //depot/projects/usb/src/sys/modules/zyd/Makefile#3 integrate .. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/TODO#3 integrate .. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#28 integrate .. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h#11 integrate .. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#23 integrate .. //depot/projects/usb/src/sys/pc98/conf/NOTES#9 integrate Differences ... ==== //depot/projects/usb/src/sys/amd64/conf/NOTES#11 (text+ko) ==== @@ -306,6 +306,7 @@ # nfe: nVidia nForce MCP on-board Ethernet Networking (BSD open source) # nve: nVidia nForce MCP on-board Ethernet Networking # ral: Ralink Technology IEEE 802.11 wireless adapter +# ural: Ralink Technology RT2500USB IEEE 802.11 wireless adapter # wpi: Intel 3945ABG Wireless LAN controller device ed ==== //depot/projects/usb/src/sys/arm/at91/files.at91#5 (text) ==== @@ -12,7 +12,7 @@ dependency "spibus_if.h" arm/at91/at91_tc.c optional at91_tc arm/at91/at91_twi.c optional at91_twi -arm/at91/at91_udp.c optional at9100_dci +arm/at91/at91_udp.c optional at91_udp arm/at91/if_ate.c optional ate arm/at91/ohci_atmelarm.c optional ohci arm/at91/uart_bus_at91usart.c optional uart ==== //depot/projects/usb/src/sys/arm/at91/ohci_atmelarm.c#17 (text) ==== @@ -25,31 +25,36 @@ #include __FBSDID("$FreeBSD: src/sys/arm/at91/ohci_atmelarm.c,v 1.4 2007/10/29 21:01:50 imp Exp $"); -#include "opt_bus.h" - #include #include #include -#include +#include +#include +#include +#include #include -#include -#include +#include +#include +#include -#include #include -#include -#include +#include +#include +#include + +#include +#include #include -#define MEM_RID 0 +#define MEM_RID 0 -static device_probe_t ohci_atmelarm_probe; -static device_attach_t ohci_atmelarm_attach; -static device_detach_t ohci_atmelarm_detach; +static int ohci_atmelarm_attach(device_t dev); +static int ohci_atmelarm_detach(device_t dev); -struct at91_ohci_softc { - struct ohci_softc sc_ohci; /* must be first */ +struct at91_ohci_softc +{ + struct ohci_softc sc_ohci; struct at91_pmc_clock *iclk; struct at91_pmc_clock *fclk; }; @@ -57,7 +62,7 @@ static int ohci_atmelarm_probe(device_t dev) { - device_set_desc(dev, "AT91 integrated OHCI controller"); + device_set_desc(dev, "AT91 integrated ohci controller"); return (BUS_PROBE_DEFAULT); } @@ -68,99 +73,96 @@ int err; int rid; - if (sc == NULL) { - return (ENXIO); - } - /* get all DMA memory */ - - if (usbd_bus_mem_alloc_all(&(sc->sc_ohci.sc_bus), - device_get_dma_tag(dev), &ohci_iterate_hw_softc)) { - return ENOMEM; - } + sc->iclk = at91_pmc_clock_ref("ohci_clk"); sc->fclk = at91_pmc_clock_ref("uhpck"); - sc->sc_ohci.sc_dev = dev; - rid = MEM_RID; - sc->sc_ohci.sc_io_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, - &rid, RF_ACTIVE); - - if (!(sc->sc_ohci.sc_io_res)) { + sc->sc_ohci.io_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->sc_ohci.io_res == NULL) { err = ENOMEM; goto error; } - sc->sc_ohci.sc_io_tag = rman_get_bustag(sc->sc_ohci.sc_io_res); - sc->sc_ohci.sc_io_hdl = rman_get_bushandle(sc->sc_ohci.sc_io_res); - sc->sc_ohci.sc_io_size = rman_get_size(sc->sc_ohci.sc_io_res); + sc->sc_ohci.iot = rman_get_bustag(sc->sc_ohci.io_res); + sc->sc_ohci.ioh = rman_get_bushandle(sc->sc_ohci.io_res); rid = 0; - sc->sc_ohci.sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, + sc->sc_ohci.irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE); - if (!(sc->sc_ohci.sc_irq_res)) { + if (sc->sc_ohci.irq_res == NULL) { + err = ENOMEM; goto error; } sc->sc_ohci.sc_bus.bdev = device_add_child(dev, "usb", -1); - if (!(sc->sc_ohci.sc_bus.bdev)) { + if (sc->sc_ohci.sc_bus.bdev == NULL) { + err = ENOMEM; goto error; } - device_set_ivars(sc->sc_ohci.sc_bus.bdev, &(sc->sc_ohci.sc_bus)); - device_set_softc(sc->sc_ohci.sc_bus.bdev, &(sc->sc_ohci.sc_bus)); + device_set_ivars(sc->sc_ohci.sc_bus.bdev, &sc->sc_ohci.sc_bus); - strlcpy(sc->sc_ohci.sc_vendor, "Atmel", sizeof(sc->sc_ohci.sc_vendor)); + /* Allocate a parent dma tag for DMA maps */ + err = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, + BUS_SPACE_MAXSIZE_32BIT, USB_DMA_NSEG, BUS_SPACE_MAXSIZE_32BIT, 0, + NULL, NULL, &sc->sc_ohci.sc_bus.parent_dmatag); + if (err) { + device_printf(dev, "Could not allocate parent DMA tag (%d)\n", + err); + err = ENXIO; + goto error; + } - err = usbd_config_td_setup(&(sc->sc_ohci.sc_config_td), sc, - &(sc->sc_ohci.sc_bus.mtx), NULL, 0, 4); + /* Allocate a dma tag for transfer buffers */ + err = bus_dma_tag_create(sc->sc_ohci.sc_bus.parent_dmatag, 1, 0, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, + BUS_SPACE_MAXSIZE_32BIT, USB_DMA_NSEG, BUS_SPACE_MAXSIZE_32BIT, 0, + busdma_lock_mutex, &Giant, &sc->sc_ohci.sc_bus.buffer_dmatag); if (err) { - device_printf(dev, "could not setup config thread!\n"); + device_printf(dev, "Could not allocate transfer tag (%d)\n", + err); + err = ENXIO; goto error; } -#if (__FreeBSD_version >= 700031) - err = bus_setup_intr(dev, sc->sc_ohci.sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, - NULL, (void *)ohci_interrupt, sc, &(sc->sc_ohci.sc_intr_hdl)); -#else - err = bus_setup_intr(dev, sc->sc_ohci.sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, - (void *)ohci_interrupt, sc, &(sc->sc_ohci.sc_intr_hdl)); -#endif + + err = bus_setup_intr(dev, sc->sc_ohci.irq_res, INTR_TYPE_BIO, NULL, + ohci_intr, sc, &sc->sc_ohci.ih); if (err) { - sc->sc_ohci.sc_intr_hdl = NULL; + err = ENXIO; goto error; } + strlcpy(sc->sc_ohci.sc_vendor, "Atmel", sizeof(sc->sc_ohci.sc_vendor)); + /* * turn on the clocks from the AT91's point of view. Keep the unit in reset. */ at91_pmc_clock_enable(sc->iclk); at91_pmc_clock_enable(sc->fclk); - bus_space_write_4(sc->sc_ohci.sc_io_tag, sc->sc_ohci.sc_io_hdl, - OHCI_CONTROL, 0); + bus_space_write_4(sc->sc_ohci.iot, sc->sc_ohci.ioh, OHCI_CONTROL, 0); - err = ohci_init(&(sc->sc_ohci)); + err = ohci_init(&sc->sc_ohci); if (!err) { + sc->sc_ohci.sc_flags |= OHCI_SCFLG_DONEINIT; err = device_probe_and_attach(sc->sc_ohci.sc_bus.bdev); } + +error:; if (err) { - goto error; + ohci_atmelarm_detach(dev); + return (err); } - return (0); - -error: - ohci_atmelarm_detach(dev); - return (ENXIO); + return (err); } static int ohci_atmelarm_detach(device_t dev) { struct at91_ohci_softc *sc = device_get_softc(dev); - int err; - if (sc->sc_ohci.sc_bus.bdev) { - device_detach(sc->sc_ohci.sc_bus.bdev); - device_delete_child(dev, sc->sc_ohci.sc_bus.bdev); - sc->sc_ohci.sc_bus.bdev = NULL; + if (sc->sc_ohci.sc_flags & OHCI_SCFLG_DONEINIT) { + ohci_detach(&sc->sc_ohci, 0); + sc->sc_ohci.sc_flags &= ~OHCI_SCFLG_DONEINIT; } - /* during module unload there are lots of children leftover */ - device_delete_all_children(dev); /* * Put the controller into reset, then disable clocks and do @@ -171,36 +173,36 @@ * clocks after we disable them, so the system could, in * theory, reuse them. */ - bus_space_write_4(sc->sc_ohci.sc_io_tag, sc->sc_ohci.sc_io_hdl, - OHCI_CONTROL, 0); - + bus_space_write_4(sc->sc_ohci.iot, sc->sc_ohci.ioh, OHCI_CONTROL, 0); at91_pmc_clock_disable(sc->fclk); at91_pmc_clock_disable(sc->iclk); at91_pmc_clock_deref(sc->fclk); at91_pmc_clock_deref(sc->iclk); - if (sc->sc_ohci.sc_irq_res && sc->sc_ohci.sc_intr_hdl) { - /* - * only call ohci_detach() after ohci_init() - */ - ohci_detach(&(sc->sc_ohci)); + if (sc->sc_ohci.ih) { + bus_teardown_intr(dev, sc->sc_ohci.irq_res, sc->sc_ohci.ih); + sc->sc_ohci.ih = NULL; + } + + if (sc->sc_ohci.sc_bus.parent_dmatag != NULL) + bus_dma_tag_destroy(sc->sc_ohci.sc_bus.parent_dmatag); + if (sc->sc_ohci.sc_bus.buffer_dmatag != NULL) + bus_dma_tag_destroy(sc->sc_ohci.sc_bus.buffer_dmatag); - err = bus_teardown_intr(dev, sc->sc_ohci.sc_irq_res, sc->sc_ohci.sc_intr_hdl); - sc->sc_ohci.sc_intr_hdl = NULL; + if (sc->sc_ohci.sc_bus.bdev) { + device_delete_child(dev, sc->sc_ohci.sc_bus.bdev); + sc->sc_ohci.sc_bus.bdev = NULL; } - if (sc->sc_ohci.sc_irq_res) { - bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_ohci.sc_irq_res); - sc->sc_ohci.sc_irq_res = NULL; + if (sc->sc_ohci.irq_res) { + bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_ohci.irq_res); + sc->sc_ohci.irq_res = NULL; } - if (sc->sc_ohci.sc_io_res) { - bus_release_resource(dev, SYS_RES_MEMORY, MEM_RID, - sc->sc_ohci.sc_io_res); - sc->sc_ohci.sc_io_res = NULL; + if (sc->sc_ohci.io_res) { + bus_release_resource(dev, SYS_RES_MEMORY, MEM_RID, sc->sc_ohci.io_res); + sc->sc_ohci.io_res = NULL; + sc->sc_ohci.iot = 0; + sc->sc_ohci.ioh = 0; } - usbd_config_td_unsetup(&(sc->sc_ohci.sc_config_td)); - - usbd_bus_mem_free_all(&(sc->sc_ohci.sc_bus), &ohci_iterate_hw_softc); - return (0); } ==== //depot/projects/usb/src/sys/arm/conf/KB920X#9 (text) ==== @@ -93,8 +93,7 @@ device bpf # USB support -device ohci # OHCI localbus->USB interface (Host Mode) -device at9100_dci # ADCI localbus->USB interface (Device Mode) +device ohci # OHCI localbus->USB interface device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device ugen # Generic ==== //depot/projects/usb/src/sys/conf/NOTES#15 (text+ko) ==== @@ -2409,8 +2409,6 @@ device ufm # Generic USB device driver device ugen -# Generic USB serial driver -device ugensa # Human Interface Device (anything with buttons and dials) device uhid # USB keyboard @@ -2442,8 +2440,6 @@ device uftdi # USB support for some Windows CE based serial communication. device uipaq -# USB support for MOSCHIP serial port adapters -device umoscom # USB support for Prolific PL-2303 serial adapters device uplcom # USB support for Silicon Laboratories CP2101/CP2102 based USB serial adapters ==== //depot/projects/usb/src/sys/conf/files#29 (text+ko) ==== @@ -1265,9 +1265,9 @@ dev/ubsec/ubsec.c optional ubsec # # USB support -dev/usb/at9100_dci.c optional at9100_dci dev/usb/ehci.c optional ehci dev/usb/ehci_pci.c optional ehci pci +dev/usb/hid.c optional usb dev/usb/if_aue.c optional aue dev/usb/if_axe.c optional axe dev/usb/if_cdce.c optional cdce @@ -1288,11 +1288,10 @@ dev/usb/ucom.c optional ucom dev/usb/ucycom.c optional ucycom dev/usb/udbp.c optional udbp +dev/usb/ufoma.c optional ufoma dev/usb/ufm.c optional ufm -dev/usb/ufoma.c optional ufoma dev/usb/uftdi.c optional uftdi dev/usb/ugen.c optional ugen -dev/usb/ugensa.c optional ugensa dev/usb/uhci.c optional uhci dev/usb/uhci_pci.c optional uhci pci dev/usb/uhid.c optional uhid @@ -1303,31 +1302,21 @@ dev/usb/umass.c optional umass dev/usb/umct.c optional umct dev/usb/umodem.c optional umodem -dev/usb/umoscom.c optional umoscom dev/usb/ums.c optional ums dev/usb/uplcom.c optional uplcom dev/usb/urio.c optional urio dev/usb/usb.c optional usb -dev/usb/usb_cdev.c optional usb -dev/usb/usb_hid.c optional usb +dev/usb/usb_ethersubr.c optional usb dev/usb/usb_if.m optional usb +dev/usb/usb_mem.c optional usb dev/usb/usb_quirks.c optional usb -dev/usb/usb_requests.c optional usb dev/usb/usb_subr.c optional usb -dev/usb/usb_template.c optional usb -dev/usb/usb_template_cdce.c optional usb -dev/usb/usb_template_msc.c optional usb -dev/usb/usb_transfer.c optional usb -dev/usb/usb_compat_linux.c optional usb +dev/usb/usbdi.c optional usb +dev/usb/usbdi_util.c optional usb dev/usb/uscanner.c optional uscanner dev/usb/uslcom.c optional uslcom -dev/usb/uss820_dci.c optional uss820_dci -dev/usb/uss820_dci_pccard.c optional uss820_dci pccard -dev/usb/ustorage_fs.c optional ustorage_fs dev/usb/uvisor.c optional uvisor dev/usb/uvscom.c optional uvscom -# End of USB support -# dev/utopia/idtphy.c optional utopia dev/utopia/suni.c optional utopia dev/utopia/utopia.c optional utopia ==== //depot/projects/usb/src/sys/dev/ata/ata-usb.c#37 (text) ==== @@ -2,9 +2,6 @@ * Copyright (c) 2006 - 2008 Søren Schmidt * All rights reserved. * - * Copyright (c) 2006 Hans Petter Selasky - * All rights reserved. - * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -32,1075 +29,946 @@ #include "opt_ata.h" #include +#include #include #include +#include +#include +#include +#include #include -#include -#include +#include #include +#include #include - +#include +#include +#include #include #include -#include -#include - +#include +#include +#include #include #include -#define ATAUSB_BULK_SIZE (1<<17) - /* Command Block Wrapper */ struct bbb_cbw { - uint8_t signature[4]; -#define CBWSIGNATURE 0x43425355 + u_int8_t signature[4]; +#define CBWSIGNATURE 0x43425355 - uint8_t tag[4]; - uint8_t transfer_length[4]; - uint8_t flags; -#define CBWFLAGS_OUT 0x00 -#define CBWFLAGS_IN 0x80 + u_int8_t tag[4]; + u_int8_t transfer_length[4]; + u_int8_t flags; +#define CBWFLAGS_OUT 0x00 +#define CBWFLAGS_IN 0x80 - uint8_t lun; - uint8_t length; -#define CBWCDBLENGTH 16 + u_int8_t lun; + u_int8_t length; +#define CBWCDBLENGTH 16 - uint8_t cdb[CBWCDBLENGTH]; -} __packed; + u_int8_t cdb[CBWCDBLENGTH]; +}; /* Command Status Wrapper */ struct bbb_csw { - uint8_t signature[4]; -#define CSWSIGNATURE 0x53425355 + u_int8_t signature[4]; +#define CSWSIGNATURE 0x53425355 - uint8_t tag[4]; - uint8_t residue[4]; - uint8_t status; -#define CSWSTATUS_GOOD 0x0 -#define CSWSTATUS_FAILED 0x1 -#define CSWSTATUS_PHASE 0x2 -} __packed; + u_int8_t tag[4]; + u_int8_t residue[4]; + u_int8_t status; +#define CSWSTATUS_GOOD 0x0 +#define CSWSTATUS_FAILED 0x1 +#define CSWSTATUS_PHASE 0x2 +}; /* USB-ATA 'controller' softc */ struct atausb_softc { - struct bbb_cbw cbw; - struct bbb_csw csw; - struct mtx locked_mtx; + device_t dev; /* base device */ + usbd_interface_handle iface; /* interface */ + int ifaceno; /* interface number */ + u_int8_t bulkin; /* endpoint address's */ + u_int8_t bulkout; + u_int8_t bulkirq; + usbd_pipe_handle bulkin_pipe; /* pipe handle's */ + usbd_pipe_handle bulkout_pipe; + usbd_pipe_handle bulkirq_pipe; + int maxlun; + int timeout; + struct ata_request *ata_request; + usb_device_request_t usb_request; + struct bbb_cbw cbw; + struct bbb_csw csw; - struct ata_channel *locked_ch; - struct ata_channel *restart_ch; - struct ata_request *ata_request; +#define ATAUSB_T_BBB_CBW 0 +#define ATAUSB_T_BBB_DATA 1 +#define ATAUSB_T_BBB_DCLEAR 2 +#define ATAUSB_T_BBB_CSW1 3 +#define ATAUSB_T_BBB_CSW2 4 +#define ATAUSB_T_BBB_SCLEAR 5 +#define ATAUSB_T_BBB_RESET1 6 +#define ATAUSB_T_BBB_RESET2 7 +#define ATAUSB_T_BBB_RESET3 8 +#define ATAUSB_T_MAX 9 + usbd_xfer_handle transfer[ATAUSB_T_MAX]; -#define ATAUSB_T_BBB_RESET1 0 -#define ATAUSB_T_BBB_RESET2 1 -#define ATAUSB_T_BBB_RESET3 2 -#define ATAUSB_T_BBB_COMMAND 3 -#define ATAUSB_T_BBB_DATA_READ 4 -#define ATAUSB_T_BBB_DATA_RD_CS 5 -#define ATAUSB_T_BBB_DATA_WRITE 6 -#define ATAUSB_T_BBB_DATA_WR_CS 7 -#define ATAUSB_T_BBB_STATUS 8 -#define ATAUSB_T_BBB_MAX 9 + int state; +#define ATAUSB_S_ATTACH 0 +#define ATAUSB_S_IDLE 1 +#define ATAUSB_S_BBB_COMMAND 2 +#define ATAUSB_S_BBB_DATA 3 +#define ATAUSB_S_BBB_DCLEAR 4 +#define ATAUSB_S_BBB_STATUS1 5 +#define ATAUSB_S_BBB_SCLEAR 6 +#define ATAUSB_S_BBB_STATUS2 7 +#define ATAUSB_S_BBB_RESET1 8 +#define ATAUSB_S_BBB_RESET2 9 +#define ATAUSB_S_BBB_RESET3 10 +#define ATAUSB_S_DETACH 11 -#define ATAUSB_T_MAX ATAUSB_T_BBB_MAX - - struct usbd_xfer *xfer[ATAUSB_T_MAX]; - caddr_t ata_data; - device_t dev; - - uint32_t timeout; - uint32_t ata_donecount; - uint32_t ata_bytecount; - - uint8_t last_xfer_no; - uint8_t usb_speed; - uint8_t intr_stalled; - uint8_t maxlun; - uint8_t iface_no; - uint8_t status_try; + struct mtx locked_mtx; + struct ata_channel *locked_ch; + struct ata_channel *restart_ch; }; -static const int atausbdebug = 0; +static int atausbdebug = 0; -/* prototypes */ - -static device_probe_t atausb_probe; -static device_attach_t atausb_attach; -static device_detach_t atausb_detach; - -static usbd_callback_t atausb_t_bbb_reset1_callback; -static usbd_callback_t atausb_t_bbb_reset2_callback; -static usbd_callback_t atausb_t_bbb_reset3_callback; -static usbd_callback_t atausb_t_bbb_command_callback; -static usbd_callback_t atausb_t_bbb_data_read_callback; -static usbd_callback_t atausb_t_bbb_data_rd_cs_callback; -static usbd_callback_t atausb_t_bbb_data_write_callback; -static usbd_callback_t atausb_t_bbb_data_wr_cs_callback; -static usbd_callback_t atausb_t_bbb_status_callback; -static usbd_callback_t atausb_tr_error; +/* prototypes*/ +static usbd_status atausb_start(struct atausb_softc *sc, usbd_pipe_handle pipe, void *buffer, int buflen, int flags, usbd_xfer_handle xfer); +static usbd_status atausb_ctl_start(struct atausb_softc *sc, usbd_device_handle udev, usb_device_request_t *req, void *buffer, int buflen, int flags, usbd_xfer_handle xfer); +static void atausb_clear_stall(struct atausb_softc *sc, u_int8_t endpt, usbd_pipe_handle pipe, int state, usbd_xfer_handle xfer); +static void atausb_bbb_reset(struct atausb_softc *sc); +static int atausb_bbb_start(struct ata_request *request); +static void atausb_bbb_finish(usbd_xfer_handle xfer, usbd_private_handle priv, usbd_status err); +int ata_usbchannel_begin_transaction(struct ata_request *request); +int ata_usbchannel_end_transaction(struct ata_request *request); -static void atausb_cancel_request(struct atausb_softc *sc); -static void atausb_transfer_start(struct atausb_softc *sc, uint8_t xfer_no); -static void atausb_t_bbb_data_clear_stall_callback(struct usbd_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer); -static int ata_usbchannel_begin_transaction(struct ata_request *request); -static int ata_usbchannel_end_transaction(struct ata_request *request); -static device_probe_t ata_usbchannel_probe; -static device_attach_t ata_usbchannel_attach; -static device_detach_t ata_usbchannel_detach; - -static ata_setmode_t ata_usbchannel_setmode; -static ata_locking_t ata_usbchannel_locking; - /* * USB frontend part */ - -struct usbd_config atausb_config[ATAUSB_T_BBB_MAX] = { - - [ATAUSB_T_BBB_RESET1] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), - .mh.flags = {}, - .mh.callback = &atausb_t_bbb_reset1_callback, - .mh.timeout = 5000, /* 5 seconds */ - .mh.interval = 500, /* 500 milliseconds */ - }, - - [ATAUSB_T_BBB_RESET2] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), - .mh.flags = {}, - .mh.callback = &atausb_t_bbb_reset2_callback, - .mh.timeout = 5000, /* 5 seconds */ - .mh.interval = 50, /* 50 milliseconds */ - }, - - [ATAUSB_T_BBB_RESET3] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), - .mh.flags = {}, - .mh.callback = &atausb_t_bbb_reset3_callback, - .mh.timeout = 5000, /* 5 seconds */ - .mh.interval = 50, /* 50 milliseconds */ - }, - - [ATAUSB_T_BBB_COMMAND] = { - .type = UE_BULK, - .endpoint = UE_ADDR_ANY, - .direction = UE_DIR_OUT, - .mh.bufsize = sizeof(struct bbb_cbw), - .mh.flags = {}, - .mh.callback = &atausb_t_bbb_command_callback, - .mh.timeout = 5000, /* 5 seconds */ - }, - - [ATAUSB_T_BBB_DATA_READ] = { - .type = UE_BULK, - .endpoint = UE_ADDR_ANY, - .direction = UE_DIR_IN, - .mh.bufsize = ATAUSB_BULK_SIZE, - .mh.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, - .mh.callback = &atausb_t_bbb_data_read_callback, - .mh.timeout = 0, /* overwritten later */ - }, - - [ATAUSB_T_BBB_DATA_RD_CS] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), - .mh.flags = {}, - .mh.callback = &atausb_t_bbb_data_rd_cs_callback, - .mh.timeout = 5000, /* 5 seconds */ - }, - - [ATAUSB_T_BBB_DATA_WRITE] = { - .type = UE_BULK, - .endpoint = UE_ADDR_ANY, - .direction = UE_DIR_OUT, - .mh.bufsize = ATAUSB_BULK_SIZE, - .mh.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, - .mh.callback = &atausb_t_bbb_data_write_callback, - .mh.timeout = 0, /* overwritten later */ - }, - - [ATAUSB_T_BBB_DATA_WR_CS] = { - .type = UE_CONTROL, - .endpoint = 0x00, /* Control pipe */ - .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), - .mh.flags = {}, - .mh.callback = &atausb_t_bbb_data_wr_cs_callback, - .mh.timeout = 5000, /* 5 seconds */ - }, - - [ATAUSB_T_BBB_STATUS] = { - .type = UE_BULK, - .endpoint = UE_ADDR_ANY, - .direction = UE_DIR_IN, - .mh.bufsize = sizeof(struct bbb_csw), - .mh.flags = {.short_xfer_ok = 1,}, - .mh.callback = &atausb_t_bbb_status_callback, - .mh.timeout = 5000, /* ms */ - }, -}; - -static devclass_t atausb_devclass; - -static device_method_t atausb_methods[] = { - DEVMETHOD(device_probe, atausb_probe), - DEVMETHOD(device_attach, atausb_attach), - DEVMETHOD(device_detach, atausb_detach), - {0, 0} -}; - -static driver_t atausb_driver = { - .name = "atausb", - .methods = atausb_methods, - .size = sizeof(struct atausb_softc), -}; - +USB_DECLARE_DRIVER(atausb); DRIVER_MODULE(atausb, uhub, atausb_driver, atausb_devclass, 0, 0); -MODULE_DEPEND(atausb, usb, 1, 1, 1); MODULE_VERSION(atausb, 1); static int -atausb_probe(device_t dev) +atausb_match(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); - usb_interface_descriptor_t *id; + struct usb_attach_arg *uaa = device_get_ivars(dev); + usb_interface_descriptor_t *id; + + if (uaa->iface == NULL) + return UMATCH_NONE; + + id = usbd_get_interface_descriptor(uaa->iface); + if (!id || id->bInterfaceClass != UICLASS_MASS) + return UMATCH_NONE; - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); - } - if (uaa->iface == NULL) { - return (UMATCH_NONE); - } - id = usbd_get_interface_descriptor(uaa->iface); - if ((!id) || (id->bInterfaceClass != UICLASS_MASS)) { - return (UMATCH_NONE); - } - switch (id->bInterfaceSubClass) { - case UISUBCLASS_QIC157: - case UISUBCLASS_RBC: - case UISUBCLASS_SCSI: - case UISUBCLASS_SFF8020I: - case UISUBCLASS_SFF8070I: - case UISUBCLASS_UFI: - switch (id->bInterfaceProtocol) { - case UIPROTO_MASS_CBI: - case UIPROTO_MASS_CBI_I: - case UIPROTO_MASS_BBB: - case UIPROTO_MASS_BBB_OLD: - return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO); - default: - return (UMATCH_IFACECLASS_IFACESUBCLASS); - } - break; + switch (id->bInterfaceSubClass) { + case UISUBCLASS_QIC157: + case UISUBCLASS_RBC: + case UISUBCLASS_SCSI: + case UISUBCLASS_SFF8020I: + case UISUBCLASS_SFF8070I: + case UISUBCLASS_UFI: + switch (id->bInterfaceProtocol) { + case UIPROTO_MASS_CBI: + case UIPROTO_MASS_CBI_I: + case UIPROTO_MASS_BBB: + case UIPROTO_MASS_BBB_OLD: + return UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO; default: - return (UMATCH_IFACECLASS); + return UMATCH_IFACECLASS_IFACESUBCLASS; } + break; + default: + return UMATCH_IFACECLASS; + } } static int atausb_attach(device_t dev) { - struct atausb_softc *sc = device_get_softc(dev); - struct usb_attach_arg *uaa = device_get_ivars(dev); - usb_interface_descriptor_t *id; - const char *proto, *subclass; - usb_device_request_t request; - uint16_t i; - uint8_t maxlun; - uint8_t has_intr; - int err; + struct atausb_softc *sc = device_get_softc(dev); + struct usb_attach_arg *uaa = device_get_ivars(dev); + usb_interface_descriptor_t *id; + usb_endpoint_descriptor_t *ed; + usbd_device_handle udev; + usb_device_request_t request; + char devinfo[1024], *proto, *subclass; + u_int8_t maxlun; + int err, i; - if (sc == NULL) { - return (ENOMEM); - } - usbd_set_device_desc(dev); + sc->dev = dev; + usbd_devinfo(uaa->device, 0, devinfo); + device_set_desc_copy(dev, devinfo); + sc->bulkin = sc->bulkout = sc->bulkirq = -1; + sc->bulkin_pipe = sc->bulkout_pipe= sc->bulkirq_pipe = NULL; + sc->iface = uaa->iface; >>> TRUNCATED FOR MAIL (1000 lines) <<< From hselasky at FreeBSD.org Thu Jul 3 23:07:05 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 23:07:07 2008 Subject: PERFORCE change 144579 for review Message-ID: <200807032307.m63N74RK043015@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144579 Change 144579 by hselasky@hselasky_laptop001 on 2008/07/03 23:06:53 Style. Affected files ... .. //depot/projects/usb/src/sys/arm/at91/at91_piovar.h#6 edit Differences ... ==== //depot/projects/usb/src/sys/arm/at91/at91_piovar.h#6 (text+ko) ==== @@ -25,21 +25,18 @@ /* $FreeBSD: src/sys/arm/at91/at91_piovar.h,v 1.2 2006/07/14 22:22:57 imp Exp $ */ #ifndef ARM_AT91_AT91_PIOVAR_H -#define ARM_AT91_AT91_PIOVAR_H +#define ARM_AT91_AT91_PIOVAR_H -void at91_pio_use_periph_a(uint32_t pio, uint32_t periph_a_mask, int use_pullup); -void at91_pio_use_periph_b(uint32_t pio, uint32_t periph_b_mask, int use_pullup); -void at91_pio_use_gpio(uint32_t pio, uint32_t gpio_mask); -void at91_pio_gpio_input(uint32_t pio, uint32_t input_enable_mask); -void at91_pio_gpio_output(uint32_t pio, uint32_t output_enable_mask, - int use_pullup); -void at91_pio_gpio_set(uint32_t pio, uint32_t data_mask); -void at91_pio_gpio_clear(uint32_t pio, uint32_t data_mask); -uint8_t at91_pio_gpio_get(uint32_t pio, uint32_t data_mask); -void at91_pio_gpio_set_deglitch(uint32_t pio, uint32_t data_mask, - int use_deglitch); -void at91_pio_gpio_set_interrupt(uint32_t pio, uint32_t data_mask, - int enable_interrupt); +void at91_pio_use_periph_a(uint32_t pio, uint32_t periph_a_mask, int use_pullup); +void at91_pio_use_periph_b(uint32_t pio, uint32_t periph_b_mask, int use_pullup); +void at91_pio_use_gpio(uint32_t pio, uint32_t gpio_mask); +void at91_pio_gpio_input(uint32_t pio, uint32_t input_enable_mask); +void at91_pio_gpio_output(uint32_t pio, uint32_t output_enable_mask, int use_pullup); +void at91_pio_gpio_set(uint32_t pio, uint32_t data_mask); +void at91_pio_gpio_clear(uint32_t pio, uint32_t data_mask); +uint8_t at91_pio_gpio_get(uint32_t pio, uint32_t data_mask); +void at91_pio_gpio_set_deglitch(uint32_t pio, uint32_t data_mask, int use_deglitch); +void at91_pio_gpio_set_interrupt(uint32_t pio, uint32_t data_mask, int enable_interrupt); uint32_t at91_pio_gpio_clear_interrupt(uint32_t pio); -#endif /* ARM_AT91_AT91_PIOVAR_H */ +#endif /* ARM_AT91_AT91_PIOVAR_H */ From julian at FreeBSD.org Thu Jul 3 23:52:51 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 23:52:53 2008 Subject: PERFORCE change 144582 for review Message-ID: <200807032352.m63NqoA7046735@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144582 Change 144582 by julian@julian_trafmon1 on 2008/07/03 23:51:53 Add missing ';' Affected files ... .. //depot/projects/vimage/src/sys/contrib/pf/net/pfvar.h#5 edit Differences ... ==== //depot/projects/vimage/src/sys/contrib/pf/net/pfvar.h#5 (text+ko) ==== @@ -1861,8 +1861,7 @@ #ifdef VIMAGE struct vnet_pf { struct vnet *parent_vnet; - -} +}; #endif /* From hselasky at FreeBSD.org Thu Jul 3 23:58:58 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Thu Jul 3 23:59:01 2008 Subject: PERFORCE change 144583 for review Message-ID: <200807032358.m63NwvT0047191@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144583 Change 144583 by hselasky@hselasky_laptop001 on 2008/07/03 23:58:39 Hook in USB2 modules and drivers into the default build. Make USB2 default for KB920X based boards. Affected files ... .. //depot/projects/usb/src/sys/arm/conf/KB920X#10 edit .. //depot/projects/usb/src/sys/conf/files#30 edit .. //depot/projects/usb/src/sys/modules/Makefile#17 edit Differences ... ==== //depot/projects/usb/src/sys/arm/conf/KB920X#10 (text) ==== @@ -92,42 +92,31 @@ device icee device bpf + +device sound # sound support + # USB support -device ohci # OHCI localbus->USB interface -device usb # USB Bus (required) -#device udbp # USB Double Bulk Pipe devices -device ugen # Generic -device uhid # "Human Interface Devices" -device ulpt # Printer -device umass # Disks/Mass storage - Requires scbus and da -device ural # Ralink Technology RT2500USB wireless NICs -device rum # Ralink Technology RT2501USB wireless NICs -device urio # Diamond Rio 500 MP3 player -device uscanner # Scanners +device at91rm9200 +device usb2_core +device usb2_controller # EHCI/OHCI/UHCI/AT91DCI +device usb2_storage # UMASS +device usb2_ethernet +device usb2_wlan +device usb2_serial +device usb2_quirk # USB quirks +device usb2_template # Device Side Mode USB templates +device usb2_image # Scanner support +device usb2_sound # USB sound and MIDI + # USB Ethernet, requires miibus -device miibus -device aue # ADMtek USB Ethernet -device axe # ASIX Electronics USB Ethernet -device cdce # Generic USB over Ethernet -device cue # CATC USB Ethernet -device kue # Kawasaki LSI USB Ethernet -device rue # RealTek RTL8150 USB Ethernet -device udav -# usb serial -device ucom -device uark -device ubsa -device ubser -device uftdi -device uipaq -device uplcom -device uvisor -device uvscom +device miibus + # SCSI peripherals device scbus # SCSI bus (required for SCSI) device da # Direct Access (disks) device cd # CD device pass # Passthrough device (direct SCSI access) + # Wireless NIC cards device wlan # 802.11 support device wlan_wep # 802.11 WEP support ==== //depot/projects/usb/src/sys/conf/files#30 (text+ko) ==== @@ -1317,6 +1317,145 @@ dev/usb/uslcom.c optional uslcom dev/usb/uvisor.c optional uvisor dev/usb/uvscom.c optional uvscom +# +# USB2 controller drivers +# +dev/usb2/controller/at91dci.c optional usb2_core usb2_controller +dev/usb2/controller/at91dci_atmelarm.c optional usb2_core usb2_controller at91rm9200 +dev/usb2/controller/ehci2.c optional usb2_core usb2_controller +dev/usb2/controller/ehci2_pci.c optional usb2_core usb2_controller pci +dev/usb2/controller/ohci2.c optional usb2_core usb2_controller +dev/usb2/controller/ohci2_atmelarm.c optional usb2_core usb2_controller at91rm9200 +dev/usb2/controller/ohci2_pci.c optional usb2_core usb2_controller pci +dev/usb2/controller/uhci2.c optional usb2_core usb2_controller +dev/usb2/controller/uhci2_pci.c optional usb2_core usb2_controller pci +dev/usb2/controller/usb2_controller.c optional usb2_core usb2_controller +dev/usb2/controller/uss820dci.c optional usb2_core usb2_controller +dev/usb2/controller/uss820dci_pccard.c optional usb2_core usb2_controller pccard +# +# USB2 storage drivers +# +# NOTE: ata-usb conflicts with umass +# dev/usb2/storage/ata-usb2.c optional usb2_core usb2_storage +# +dev/usb2/storage/umass2.c optional usb2_core usb2_storage +dev/usb2/storage/urio2.c optional usb2_core usb2_storage +dev/usb2/storage/usb2_storage.c optional usb2_core usb2_storage +dev/usb2/storage/ustorage2_fs.c optional usb2_core usb2_storage +# +# USB2 NDIS driver +# +dev/usb2/ndis/if_ndis_usb2.c optional usb2_core usb2_ndis +dev/usb2/ndis/usb2_ndis.c optional usb2_core usb2_ndis +# +# USB2 core +# +dev/usb2/core/usb2_busdma.c optional usb2_core +dev/usb2/core/usb2_compat_linux.c optional usb2_core +dev/usb2/core/usb2_config_td.c optional usb2_core +dev/usb2/core/usb2_core.c optional usb2_core +dev/usb2/core/usb2_debug.c optional usb2_core +dev/usb2/core/usb2_dev.c optional usb2_core +dev/usb2/core/usb2_device.c optional usb2_core +dev/usb2/core/usb2_dynamic.c optional usb2_core +dev/usb2/core/usb2_error.c optional usb2_core +dev/usb2/core/usb2_generic.c optional usb2_core +dev/usb2/core/usb2_handle_request.c optional usb2_core +dev/usb2/core/usb2_hub.c optional usb2_core +dev/usb2/core/usb2_if.m optional usb2_core +dev/usb2/core/usb2_lookup.c optional usb2_core +dev/usb2/core/usb2_mbuf.c optional usb2_core +dev/usb2/core/usb2_msctest.c optional usb2_core +dev/usb2/core/usb2_parse.c optional usb2_core +dev/usb2/core/usb2_process.c optional usb2_core +dev/usb2/core/usb2_request.c optional usb2_core +dev/usb2/core/usb2_sw_transfer.c optional usb2_core +dev/usb2/core/usb2_transfer.c optional usb2_core +dev/usb2/core/usb2_util.c optional usb2_core +# +# USB2 ethernet drivers +# +dev/usb2/ethernet/if_aue2.c optional usb2_core usb2_ethernet +dev/usb2/ethernet/if_axe2.c optional usb2_core usb2_ethernet +dev/usb2/ethernet/if_cdce2.c optional usb2_core usb2_ethernet +dev/usb2/ethernet/if_cue2.c optional usb2_core usb2_ethernet +dev/usb2/ethernet/if_kue2.c optional usb2_core usb2_ethernet +dev/usb2/ethernet/if_rue2.c optional usb2_core usb2_ethernet +dev/usb2/ethernet/if_udav2.c optional usb2_core usb2_ethernet +dev/usb2/ethernet/usb2_ethernet.c optional usb2_core usb2_ethernet +# +# USB2 WLAN drivers +# +dev/usb2/wlan/if_rum2.c optional usb2_core usb2_wlan +dev/usb2/wlan/if_ural2.c optional usb2_core usb2_wlan +dev/usb2/wlan/if_zyd2.c optional usb2_core usb2_wlan +dev/usb2/wlan/usb2_wlan.c optional usb2_core usb2_wlan +# +# USB2 serial and parallel port drivers +# +dev/usb2/serial/uark2.c optional usb2_core usb2_serial +dev/usb2/serial/ubsa2.c optional usb2_core usb2_serial +dev/usb2/serial/ubser2.c optional usb2_core usb2_serial +dev/usb2/serial/uchcom2.c optional usb2_core usb2_serial +dev/usb2/serial/ucycom2.c optional usb2_core usb2_serial +dev/usb2/serial/ufoma2.c optional usb2_core usb2_serial +dev/usb2/serial/uftdi2.c optional usb2_core usb2_serial +dev/usb2/serial/ugensa2.c optional usb2_core usb2_serial +dev/usb2/serial/uipaq2.c optional usb2_core usb2_serial +dev/usb2/serial/ulpt2.c optional usb2_core usb2_serial +dev/usb2/serial/umct2.c optional usb2_core usb2_serial +dev/usb2/serial/umodem2.c optional usb2_core usb2_serial +dev/usb2/serial/umoscom2.c optional usb2_core usb2_serial +dev/usb2/serial/uplcom2.c optional usb2_core usb2_serial +dev/usb2/serial/usb2_serial.c optional usb2_core usb2_serial +dev/usb2/serial/uvisor2.c optional usb2_core usb2_serial +dev/usb2/serial/uvscom2.c optional usb2_core usb2_serial +# +# USB2 bluetooth drivers +# +dev/usb2/bluetooth/usb2_bluetooth.c optional usb2_core usb2_bluetooth +dev/usb2/bluetooth/ng_ubt2.c optional usb2_core usb2_bluetooth +dev/usb2/bluetooth/ubtbcmfw2.c optional usb2_core usb2_bluetooth + +# +# USB2 misc drivers +# +dev/usb2/misc/usb2_misc.c optional usb2_core usb2_misc +dev/usb2/misc/ufm2.c optional usb2_core usb2_misc +dev/usb2/misc/udbp2.c optional usb2_core usb2_misc +# +# USB2 input drivers +# +dev/usb2/input/uhid2.c optional usb2_core usb2_input +dev/usb2/input/ukbd2.c optional usb2_core usb2_input +dev/usb2/input/ums2.c optional usb2_core usb2_input +dev/usb2/input/usb2_hid.c optional usb2_core usb2_input +dev/usb2/input/usb2_input.c optional usb2_core usb2_input +# +# USB2 quirks +# +dev/usb2/quirk/usb2_quirk.c optional usb2_core usb2_quirk +# +# USB2 templates +# +dev/usb2/template/usb2_template.c optional usb2_core usb2_template +dev/usb2/template/usb2_template_cdce.c optional usb2_core usb2_template +dev/usb2/template/usb2_template_msc.c optional usb2_core usb2_template +dev/usb2/template/usb2_template_mtp.c optional usb2_core usb2_template +# +# USB2 image drivers +# +dev/usb2/image/usb2_image.c optional usb2_core usb2_image +dev/usb2/image/uscanner2.c optional usb2_core usb2_image +# +# USB2 sound and MIDI drivers +# +dev/usb2/sound/usb2_sound.c optional usb2_core usb2_sound +dev/usb2/sound/uaudio2.c optional usb2_core usb2_sound +dev/usb2/sound/uaudio2_pcm.c optional usb2_core usb2_sound +# +# USB2 END +# dev/utopia/idtphy.c optional utopia dev/utopia/suni.c optional utopia dev/utopia/utopia.c optional utopia ==== //depot/projects/usb/src/sys/modules/Makefile#17 (text+ko) ==== @@ -301,6 +301,7 @@ ural \ urio \ usb \ + usb2 \ uscanner \ uslcom \ utopia \ From julian at FreeBSD.org Thu Jul 3 23:58:58 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Thu Jul 3 23:59:01 2008 Subject: PERFORCE change 144584 for review Message-ID: <200807032358.m63NwvvS047196@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144584 Change 144584 by julian@julian_trafmon1 on 2008/07/03 23:58:40 make up our mind abut ipstealth on a vimage basis Affected files ... .. //depot/projects/vimage/src/sys/netinet/ip_fastfwd.c#9 edit .. //depot/projects/vimage/src/sys/netinet/ip_input.c#26 edit .. //depot/projects/vimage/src/sys/netinet/ip_options.c#10 edit .. //depot/projects/vimage/src/sys/netinet/vinet.h#22 edit Differences ... ==== //depot/projects/vimage/src/sys/netinet/ip_fastfwd.c#9 (text+ko) ==== @@ -400,7 +400,7 @@ * Check TTL */ #ifdef IPSTEALTH - if (!ipstealth) { + if (!V_ipstealth) { #endif if (ip->ip_ttl <= IPTTLDEC) { icmp_error(m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS, 0, 0); ==== //depot/projects/vimage/src/sys/netinet/ip_input.c#26 (text+ko) ==== @@ -677,7 +677,7 @@ * IPSTEALTH: Process non-routing options only * if the packet is destined for us. */ - if (ipstealth && hlen > sizeof (struct ip) && + if (V_ipstealth && hlen > sizeof (struct ip) && ip_dooptions(m, 1)) return; #endif /* IPSTEALTH */ @@ -1331,7 +1331,7 @@ return; } #ifdef IPSTEALTH - if (!ipstealth) { + if (!V_ipstealth) { #endif if (ip->ip_ttl <= IPTTLDEC) { icmp_error(m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS, @@ -1382,7 +1382,7 @@ } #ifdef IPSTEALTH - if (!ipstealth) { + if (!V_ipstealth) { #endif ip->ip_ttl -= IPTTLDEC; #ifdef IPSTEALTH ==== //depot/projects/vimage/src/sys/netinet/ip_options.c#10 (text+ko) ==== @@ -155,7 +155,7 @@ case IPOPT_LSRR: case IPOPT_SSRR: #ifdef IPSTEALTH - if (ipstealth && pass > 0) + if (V_ipstealth && pass > 0) break; #endif if (optlen < IPOPT_OFFSET + sizeof(*cp)) { @@ -194,7 +194,7 @@ break; } #ifdef IPSTEALTH - if (ipstealth) + if (V_ipstealth) goto dropit; #endif if (!ip_dosourceroute) { @@ -257,7 +257,7 @@ case IPOPT_RR: #ifdef IPSTEALTH - if (ipstealth && pass == 0) + if (V_ipstealth && pass == 0) break; #endif if (optlen < IPOPT_OFFSET + sizeof(*cp)) { @@ -294,7 +294,7 @@ case IPOPT_TS: #ifdef IPSTEALTH - if (ipstealth && pass == 0) + if (V_ipstealth && pass == 0) break; #endif code = cp - (u_char *)ip; ==== //depot/projects/vimage/src/sys/netinet/vinet.h#22 (text+ko) ==== @@ -66,6 +66,7 @@ int _sameprefixcarponly; int _ipforwarding; + int _ipstealth; int _ipfastforward_active; int _ipsendredirects; int _ip_defttl; @@ -201,6 +202,7 @@ #define V_sameprefixcarponly VNET_INET(sameprefixcarponly) #define V_ipforwarding VNET_INET(ipforwarding) +#define V_ipstealth VNET_INET(ipstealth) #define V_ipfastforward_active VNET_INET(ipfastforward_active) #define V_ipsendredirects VNET_INET(ipsendredirects) #define V_ip_defttl VNET_INET(ip_defttl) From julian at FreeBSD.org Fri Jul 4 00:02:01 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Fri Jul 4 00:02:03 2008 Subject: PERFORCE change 144585 for review Message-ID: <200807040002.m64020Jf047552@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144585 Change 144585 by julian@julian_trafmon1 on 2008/07/04 00:01:06 Make up mind on ipstealth per vimage Affected files ... .. //depot/projects/vimage-devel/src/sys/netinet/ip_fastfwd.c#3 integrate .. //depot/projects/vimage-devel/src/sys/netinet/ip_input.c#3 integrate .. //depot/projects/vimage-devel/src/sys/netinet/ip_options.c#3 integrate .. //depot/projects/vimage-devel/src/sys/netinet/vinet.h#3 integrate Differences ... ==== //depot/projects/vimage-devel/src/sys/netinet/ip_fastfwd.c#3 (text+ko) ==== @@ -400,7 +400,7 @@ * Check TTL */ #ifdef IPSTEALTH - if (!ipstealth) { + if (!V_ipstealth) { #endif if (ip->ip_ttl <= IPTTLDEC) { icmp_error(m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS, 0, 0); ==== //depot/projects/vimage-devel/src/sys/netinet/ip_input.c#3 (text+ko) ==== @@ -677,7 +677,7 @@ * IPSTEALTH: Process non-routing options only * if the packet is destined for us. */ - if (ipstealth && hlen > sizeof (struct ip) && + if (V_ipstealth && hlen > sizeof (struct ip) && ip_dooptions(m, 1)) return; #endif /* IPSTEALTH */ @@ -1331,7 +1331,7 @@ return; } #ifdef IPSTEALTH - if (!ipstealth) { + if (!V_ipstealth) { #endif if (ip->ip_ttl <= IPTTLDEC) { icmp_error(m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS, @@ -1382,7 +1382,7 @@ } #ifdef IPSTEALTH - if (!ipstealth) { + if (!V_ipstealth) { #endif ip->ip_ttl -= IPTTLDEC; #ifdef IPSTEALTH ==== //depot/projects/vimage-devel/src/sys/netinet/ip_options.c#3 (text+ko) ==== @@ -155,7 +155,7 @@ case IPOPT_LSRR: case IPOPT_SSRR: #ifdef IPSTEALTH - if (ipstealth && pass > 0) + if (V_ipstealth && pass > 0) break; #endif if (optlen < IPOPT_OFFSET + sizeof(*cp)) { @@ -194,7 +194,7 @@ break; } #ifdef IPSTEALTH - if (ipstealth) + if (V_ipstealth) goto dropit; #endif if (!ip_dosourceroute) { @@ -257,7 +257,7 @@ case IPOPT_RR: #ifdef IPSTEALTH - if (ipstealth && pass == 0) + if (V_ipstealth && pass == 0) break; #endif if (optlen < IPOPT_OFFSET + sizeof(*cp)) { @@ -294,7 +294,7 @@ case IPOPT_TS: #ifdef IPSTEALTH - if (ipstealth && pass == 0) + if (V_ipstealth && pass == 0) break; #endif code = cp - (u_char *)ip; ==== //depot/projects/vimage-devel/src/sys/netinet/vinet.h#3 (text+ko) ==== @@ -66,6 +66,7 @@ int _sameprefixcarponly; int _ipforwarding; + int _ipstealth; int _ipfastforward_active; int _ipsendredirects; int _ip_defttl; @@ -201,6 +202,7 @@ #define V_sameprefixcarponly VNET_INET(sameprefixcarponly) #define V_ipforwarding VNET_INET(ipforwarding) +#define V_ipstealth VNET_INET(ipstealth) #define V_ipfastforward_active VNET_INET(ipfastforward_active) #define V_ipsendredirects VNET_INET(ipsendredirects) #define V_ip_defttl VNET_INET(ip_defttl) From julian at FreeBSD.org Fri Jul 4 00:06:05 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Fri Jul 4 00:06:06 2008 Subject: PERFORCE change 144586 for review Message-ID: <200807040006.m64064jV049062@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144586 Change 144586 by julian@julian_trafmon1 on 2008/07/04 00:05:52 catch up with 'vimage' branch a bit Affected files ... .. //depot/projects/vimage-devel/src/sys/contrib/pf/net/pfvar.h#3 integrate .. //depot/projects/vimage-devel/src/sys/net/if.c#5 integrate .. //depot/projects/vimage-devel/src/sys/net/if_var.h#4 integrate .. //depot/projects/vimage-devel/src/sys/net80211/ieee80211.c#5 integrate .. //depot/projects/vimage-devel/src/sys/netinet6/in6_src.c#3 integrate .. //depot/projects/vimage-devel/src/sys/nlm/nlm_advlock.c#2 integrate Differences ... ==== //depot/projects/vimage-devel/src/sys/contrib/pf/net/pfvar.h#3 (text+ko) ==== @@ -1861,8 +1861,7 @@ #ifdef VIMAGE struct vnet_pf { struct vnet *parent_vnet; - -} +}; #endif /* ==== //depot/projects/vimage-devel/src/sys/net/if.c#5 (text+ko) ==== @@ -151,12 +151,12 @@ static int if_indexlim; static struct knlist ifklist; -#endif /* !VIMAGE */ /* * Table of ifnet/cdev by index. Locked with ifnet_lock. */ static struct ifindex_entry *ifindex_table = NULL; +#endif /* !VIMAGE */ static void filt_netdetach(struct knote *kn); static int filt_netdev(struct knote *kn, long hint); @@ -190,21 +190,23 @@ struct ifnet * ifnet_byindex(u_short idx) { + INIT_VNET_NET(curvnet); struct ifnet *ifp; IFNET_RLOCK(); - ifp = ifindex_table[idx].ife_ifnet; + ifp = V_ifindex_table[idx].ife_ifnet; IFNET_RUNLOCK(); return (ifp); } -static void +void ifnet_setbyindex(u_short idx, struct ifnet *ifp) { + INIT_VNET_NET(curvnet); IFNET_WLOCK_ASSERT(); - ifindex_table[idx].ife_ifnet = ifp; + V_ifindex_table[idx].ife_ifnet = ifp; } struct ifaddr * @@ -221,10 +223,11 @@ struct cdev * ifdev_byindex(u_short idx) { + INIT_VNET_NET(curvnet); struct cdev *cdev; IFNET_RLOCK(); - cdev = ifindex_table[idx].ife_dev; + cdev = V_ifindex_table[idx].ife_dev; IFNET_RUNLOCK(); return (cdev); } @@ -233,8 +236,9 @@ ifdev_setbyindex(u_short idx, struct cdev *cdev) { + INIT_VNET_NET(curvnet); IFNET_WLOCK(); - ifindex_table[idx].ife_dev = cdev; + V_ifindex_table[idx].ife_dev = cdev; IFNET_WUNLOCK(); } @@ -268,7 +272,6 @@ static int netioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) { - INIT_VNET_NET(curvnet); struct ifnet *ifp; int error, idx; @@ -379,15 +382,8 @@ vnet_net_iattach(NULL); #endif IFNET_LOCK_INIT(); -#ifdef VIMAGE - if (IS_DEFAULT_VNET(curvnet)) { - INIT_VNET_NET(curvnet); -#endif ifdev_setbyindex(0, make_dev(&net_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "network")); -#ifdef VIMAGE - } -#endif if_clone_init(); } ==== //depot/projects/vimage-devel/src/sys/net/if_var.h#4 (text+ko) ==== @@ -650,6 +650,7 @@ struct cdev *ife_dev; }; +void ifnet_setbyindex(u_short idx, struct ifnet *ifp); struct ifnet *ifnet_byindex(u_short idx); /* * Given the index, ifaddr_byindex() returns the one and only ==== //depot/projects/vimage-devel/src/sys/net80211/ieee80211.c#5 (text+ko) ==== @@ -219,7 +219,6 @@ void ieee80211_ifattach(struct ieee80211com *ic) { - INIT_VNET_NET(curvnet); struct ifnet *ifp = ic->ic_ifp; struct sockaddr_dl *sdl; struct ifaddr *ifa; ==== //depot/projects/vimage-devel/src/sys/netinet6/in6_src.c#3 (text+ko) ==== @@ -455,7 +455,6 @@ struct ifnet **retifp, struct rtentry **retrt, int clone, int norouteok) { - INIT_VNET_NET(curvnet); INIT_VNET_INET6(curvnet); int error = 0; struct ifnet *ifp = NULL; ==== //depot/projects/vimage-devel/src/sys/nlm/nlm_advlock.c#2 (text+ko) ==== @@ -25,6 +25,7 @@ * SUCH DAMAGE. */ +#include "opt_vimage.h" #include __FBSDID("$FreeBSD: src/sys/nlm/nlm_advlock.c,v 1.1 2008/06/26 10:21:54 dfr Exp $"); @@ -42,6 +43,7 @@ #include #include #include +#include #include #include @@ -1218,11 +1220,11 @@ return (EOVERFLOW); } - snprintf(oh_space, 32, "%d@%s", svid, hostname); + snprintf(oh_space, 32, "%d@%s", svid, G_hostname); oh_len = strlen(oh_space); memset(lock, 0, sizeof(*lock)); - lock->caller_name = hostname; + lock->caller_name = G_hostname; lock->fh.n_len = fhlen; lock->fh.n_bytes = fh; lock->oh.n_len = oh_len; From julian at FreeBSD.org Fri Jul 4 00:13:13 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Fri Jul 4 00:13:15 2008 Subject: PERFORCE change 144587 for review Message-ID: <200807040013.m640DCIi049676@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144587 Change 144587 by julian@julian_trafmon1 on 2008/07/04 00:12:43 remove un-needed '&' in SYSCTL_V_INT Affected files ... .. //depot/projects/vimage/src/sys/netipsec/ipsec.c#21 edit Differences ... ==== //depot/projects/vimage/src/sys/netipsec/ipsec.c#21 (text+ko) ==== @@ -185,7 +185,7 @@ int ipsec_integrity = 0; #endif SYSCTL_V_INT(V_NET, vnet_ipsec,_net_inet_ipsec, OID_AUTO, test_integrity, - CTLFLAG_RW, &ipsec_integrity, 0, "Emulate man-in-the-middle attack"); + CTLFLAG_RW, ipsec_integrity, 0, "Emulate man-in-the-middle attack"); #endif #ifndef VIMAGE From julian at FreeBSD.org Fri Jul 4 00:15:15 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Fri Jul 4 00:15:17 2008 Subject: PERFORCE change 144588 for review Message-ID: <200807040015.m640FEWm049847@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144588 Change 144588 by julian@julian_trafmon1 on 2008/07/04 00:14:20 remove un-needed '&' Affected files ... .. //depot/projects/vimage-devel/src/sys/netipsec/ipsec.c#3 integrate Differences ... ==== //depot/projects/vimage-devel/src/sys/netipsec/ipsec.c#3 (text+ko) ==== @@ -185,7 +185,7 @@ int ipsec_integrity = 0; #endif SYSCTL_V_INT(V_NET, vnet_ipsec,_net_inet_ipsec, OID_AUTO, test_integrity, - CTLFLAG_RW, &ipsec_integrity, 0, "Emulate man-in-the-middle attack"); + CTLFLAG_RW, ipsec_integrity, 0, "Emulate man-in-the-middle attack"); #endif #ifndef VIMAGE From julian at FreeBSD.org Fri Jul 4 00:33:33 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Fri Jul 4 00:33:36 2008 Subject: PERFORCE change 144590 for review Message-ID: <200807040033.m640XWx2051634@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144590 Change 144590 by julian@julian_trafmon1 on 2008/07/04 00:33:26 try merge in changes without destroying anything Affected files ... .. //depot/projects/vimage-devel/src/sys/kern/kern_exit.c#5 integrate .. //depot/projects/vimage-devel/src/sys/kern/kern_linker.c#4 integrate .. //depot/projects/vimage-devel/src/sys/kern/kern_vimage.c#5 integrate .. //depot/projects/vimage-devel/src/sys/kern/kern_xxx.c#6 integrate .. //depot/projects/vimage-devel/src/sys/net/if_loop.c#4 integrate .. //depot/projects/vimage-devel/src/sys/netinet/tcp_syncache.h#4 integrate .. //depot/projects/vimage-devel/src/sys/netinet6/in6_gif.c#3 integrate .. //depot/projects/vimage-devel/src/sys/netinet6/in6_rmx.c#4 integrate .. //depot/projects/vimage-devel/src/sys/netinet6/ip6_ipsec.c#4 integrate .. //depot/projects/vimage-devel/src/sys/netinet6/vinet6.h#3 integrate .. //depot/projects/vimage-devel/src/sys/rpc/authunix_prot.c#4 integrate .. //depot/projects/vimage-devel/src/sys/sys/vimage.h#8 integrate Differences ... ==== //depot/projects/vimage-devel/src/sys/kern/kern_exit.c#5 (text+ko) ==== ==== //depot/projects/vimage-devel/src/sys/kern/kern_linker.c#4 (text+ko) ==== ==== //depot/projects/vimage-devel/src/sys/kern/kern_vimage.c#5 (text+ko) ==== @@ -293,7 +293,7 @@ do { INIT_VNET_NET(curvnet); - ifnet_byindex(ifp->if_index) = NULL; + ifnet_setbyindex(ifp->if_index, NULL); /* XXX: should be locked with if_findindex() */ while (V_if_index > 0 && ifnet_byindex(V_if_index) == NULL) V_if_index--; @@ -319,7 +319,7 @@ V_if_index = ifp->if_index; if (V_if_index >= V_if_indexlim) if_grow(); - ifnet_byindex(ifp->if_index) = ifp; + ifnet_setbyindex(ifp->if_index, ifp); /* Rename the ifnet */ if (new_vnet == ifp->if_home_vnet) { ==== //depot/projects/vimage-devel/src/sys/kern/kern_xxx.c#6 (text+ko) ==== ==== //depot/projects/vimage-devel/src/sys/net/if_loop.c#4 (text+ko) ==== ==== //depot/projects/vimage-devel/src/sys/netinet/tcp_syncache.h#4 (text+ko) ==== @@ -40,18 +40,18 @@ #ifdef VIMAGE void syncache_destroy(void); #endif -void syncache_unreach(struct in_conninfo *, struct tcphdr *); -int syncache_expand(struct in_conninfo *, struct tcpopt *, - struct tcphdr *, struct socket **, struct mbuf *); -void syncache_add(struct in_conninfo *, struct tcpopt *, - struct tcphdr *, struct inpcb *, struct socket **, struct mbuf *); -void syncache_offload_add(struct in_conninfo *, struct tcpopt *, - struct tcphdr *, struct inpcb *, struct socket **, - struct toe_usrreqs *tu, void *toepcb); -void syncache_chkrst(struct in_conninfo *, struct tcphdr *); -void syncache_badack(struct in_conninfo *); -int syncache_pcbcount(void); -int syncache_pcblist(struct sysctl_req *req, int max_pcbs, +void syncache_unreach(struct in_conninfo *, struct tcphdr *); +int syncache_expand(struct in_conninfo *, struct tcpopt *, + struct tcphdr *, struct socket **, struct mbuf *); +void syncache_add(struct in_conninfo *, struct tcpopt *, + struct tcphdr *, struct inpcb *, struct socket **, struct mbuf *); +void syncache_offload_add(struct in_conninfo *, struct tcpopt *, + struct tcphdr *, struct inpcb *, struct socket **, + struct toe_usrreqs *tu, void *toepcb); +void syncache_chkrst(struct in_conninfo *, struct tcphdr *); +void syncache_badack(struct in_conninfo *); +int syncache_pcbcount(void); +int syncache_pcblist(struct sysctl_req *req, int max_pcbs, int *pcbs_exported); struct syncache { ==== //depot/projects/vimage-devel/src/sys/netinet6/in6_gif.c#3 (text+ko) ==== @@ -58,11 +58,11 @@ #endif #include #ifdef INET6 -#include #include #include #include #include +#include #endif #include #include ==== //depot/projects/vimage-devel/src/sys/netinet6/in6_rmx.c#4 (text+ko) ==== ==== //depot/projects/vimage-devel/src/sys/netinet6/ip6_ipsec.c#4 (text+ko) ==== ==== //depot/projects/vimage-devel/src/sys/netinet6/vinet6.h#3 (text+ko) ==== @@ -32,14 +32,13 @@ #define _NETINET6_VINET6_H_ #include -#include -#include #include #include #include #include #include #include +#include #include #define INIT_VNET_INET6(vnet) \ ==== //depot/projects/vimage-devel/src/sys/rpc/authunix_prot.c#4 (text+ko) ==== ==== //depot/projects/vimage-devel/src/sys/sys/vimage.h#8 (text+ko) ==== From hselasky at FreeBSD.org Fri Jul 4 01:51:45 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 01:51:59 2008 Subject: PERFORCE change 144591 for review Message-ID: <200807040146.m641kYuZ099801@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144591 Change 144591 by hselasky@hselasky_laptop001 on 2008/07/04 01:45:46 Compile fix. Correct header files included. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2_pcm.c#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#4 (text+ko) ==== @@ -73,6 +73,7 @@ #include #include +#include #include /* for bootverbose */ @@ -80,9 +81,6 @@ #include #include "feeder_if.h" -#include -#include - #ifdef USB_DEBUG static int uaudio_debug = 0; ==== //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2_pcm.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ #include #include -#include +#include #include "mixer_if.h" From jb at FreeBSD.org Fri Jul 4 02:06:55 2008 From: jb at FreeBSD.org (John Birrell) Date: Fri Jul 4 02:07:04 2008 Subject: PERFORCE change 144592 for review Message-ID: <200807040206.m6426smw066602@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144592 Change 144592 by jb@freebsd3 on 2008/07/04 02:06:00 IFC Affected files ... .. //depot/projects/dtrace/doc/el_GR.ISO8859-7/flyer/Makefile#1 branch .. //depot/projects/dtrace/doc/el_GR.ISO8859-7/flyer/flyer.tex#1 branch .. //depot/projects/dtrace/doc/en_US.ISO8859-1/articles/contributors/contrib.committers.sgml#49 integrate .. //depot/projects/dtrace/doc/en_US.ISO8859-1/books/handbook/serialcomms/chapter.sgml#11 integrate .. //depot/projects/dtrace/doc/en_US.ISO8859-1/share/sgml/authors.ent#40 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/books/handbook/eresources/chapter.sgml#4 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/mailing-lists.ent#5 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/transtable.xml#3 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-dev-model.xml#3 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-linux-license.xml#3 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-more-information.xml#1 branch .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-organization.xml#3 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-recent-releases.xml#3 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-release-process.xml#3 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-users.xml#3 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/what-is-freebsd.xml#3 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/freebsd-general/slides.xml#3 integrate .. //depot/projects/dtrace/doc/mn_MN.UTF-8/books/handbook/serialcomms/chapter.sgml#5 integrate .. //depot/projects/dtrace/doc/share/pgpkeys/nwhitehorn.key#1 branch .. //depot/projects/dtrace/doc/share/pgpkeys/pgpkeys-developers.sgml#40 integrate .. //depot/projects/dtrace/doc/share/pgpkeys/pgpkeys.ent#38 integrate .. //depot/projects/dtrace/doc/zh_TW.Big5/books/handbook/jails/chapter.sgml#2 integrate .. //depot/projects/dtrace/ports/MOVED#99 integrate .. //depot/projects/dtrace/ports/Mk/bsd.gecko.mk#1 branch .. //depot/projects/dtrace/ports/Mk/bsd.gnome.mk#14 integrate .. //depot/projects/dtrace/ports/Mk/bsd.port.mk#19 integrate .. //depot/projects/dtrace/ports/Tools/portbuild/errorlogs/index.shtml#2 integrate .. //depot/projects/dtrace/ports/UPDATING#81 integrate .. //depot/projects/dtrace/src/ObsoleteFiles.inc#48 integrate .. //depot/projects/dtrace/src/etc/periodic/security/800.loginfail#5 integrate .. //depot/projects/dtrace/src/lib/libarchive/archive_read_support_format_zip.c#16 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_compat_gtar_1.tgz.uu#2 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_compat_zip_1.zip.uu#2 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_pax_filename_encoding.tar.gz.uu#2 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_read_format_gtar_sparse_1_13.tgz.uu#2 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17.tgz.uu#2 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17_posix00.tgz.uu#2 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17_posix01.tgz.uu#2 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17_posix10.tgz.uu#2 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17_posix10_modified.tar.uu#2 integrate .. //depot/projects/dtrace/src/lib/libarchive/test/test_read_format_tar_empty_filename.tar.uu#2 integrate .. //depot/projects/dtrace/src/lib/libc/net/getaddrinfo.3#5 integrate .. //depot/projects/dtrace/src/lib/libc/sys/mkdir.2#9 integrate .. //depot/projects/dtrace/src/lib/libutil/Makefile#8 integrate .. //depot/projects/dtrace/src/lib/libutil/hexdump.3#1 branch .. //depot/projects/dtrace/src/lib/libutil/hexdump.c#1 branch .. //depot/projects/dtrace/src/lib/libutil/libutil.h#8 integrate .. //depot/projects/dtrace/src/sbin/Makefile#12 integrate .. //depot/projects/dtrace/src/sbin/dhclient/dhclient.c#9 integrate .. //depot/projects/dtrace/src/sbin/geom/Makefile#7 integrate .. //depot/projects/dtrace/src/sbin/quotacheck/preen.c#6 integrate .. //depot/projects/dtrace/src/sbin/quotacheck/quotacheck.c#9 integrate .. //depot/projects/dtrace/src/sbin/sconfig/sconfig.c#6 integrate .. //depot/projects/dtrace/src/secure/usr.bin/bdes/bdes.ps#4 integrate .. //depot/projects/dtrace/src/share/man/man4/snd_emu10kx.4#7 integrate .. //depot/projects/dtrace/src/share/man/man4/uftdi.4#6 integrate .. //depot/projects/dtrace/src/share/misc/committers-doc.dot#7 integrate .. //depot/projects/dtrace/src/share/misc/committers-ports.dot#7 integrate .. //depot/projects/dtrace/src/share/misc/committers-src.dot#12 integrate .. //depot/projects/dtrace/src/sys/amd64/amd64/pmap.c#49 integrate .. //depot/projects/dtrace/src/sys/amd64/include/vmparam.h#8 integrate .. //depot/projects/dtrace/src/sys/boot/i386/boot2/boot2.c#10 integrate .. //depot/projects/dtrace/src/sys/compat/pecoff/imgact_pecoff.c#9 delete .. //depot/projects/dtrace/src/sys/compat/pecoff/imgact_pecoff.h#4 delete .. //depot/projects/dtrace/src/sys/dev/bm/if_bm.c#2 integrate .. //depot/projects/dtrace/src/sys/dev/bm/if_bmreg.h#2 integrate .. //depot/projects/dtrace/src/sys/dev/bm/if_bmvar.h#2 integrate .. //depot/projects/dtrace/src/sys/dev/ce/ceddk.h#4 integrate .. //depot/projects/dtrace/src/sys/dev/ce/if_ce.c#7 integrate .. //depot/projects/dtrace/src/sys/dev/cp/cpddk.h#4 integrate .. //depot/projects/dtrace/src/sys/dev/cp/if_cp.c#7 integrate .. //depot/projects/dtrace/src/sys/dev/ctau/ctddk.h#4 integrate .. //depot/projects/dtrace/src/sys/dev/ctau/if_ct.c#9 integrate .. //depot/projects/dtrace/src/sys/dev/cx/cxddk.h#4 integrate .. //depot/projects/dtrace/src/sys/dev/cx/if_cx.c#9 integrate .. //depot/projects/dtrace/src/sys/dev/mii/rgephy.c#11 integrate .. //depot/projects/dtrace/src/sys/dev/mii/rgephyreg.h#5 integrate .. //depot/projects/dtrace/src/sys/dev/mpt/mpt_pci.c#20 integrate .. //depot/projects/dtrace/src/sys/dev/mpt/mpt_user.c#2 integrate .. //depot/projects/dtrace/src/sys/dev/re/if_re.c#21 integrate .. //depot/projects/dtrace/src/sys/dev/usb/usb_ethersubr.c#7 integrate .. //depot/projects/dtrace/src/sys/fs/smbfs/smbfs_node.c#9 integrate .. //depot/projects/dtrace/src/sys/geom/virstor/g_virstor.c#2 integrate .. //depot/projects/dtrace/src/sys/kern/kern_alq.c#10 integrate .. //depot/projects/dtrace/src/sys/kern/kern_poll.c#9 integrate .. //depot/projects/dtrace/src/sys/kern/uipc_debug.c#3 integrate .. //depot/projects/dtrace/src/sys/kern/uipc_socket.c#26 integrate .. //depot/projects/dtrace/src/sys/kern/uipc_usrreq.c#23 integrate .. //depot/projects/dtrace/src/sys/modules/pecoff/Makefile#4 delete .. //depot/projects/dtrace/src/sys/net/if_bridge.c#29 integrate .. //depot/projects/dtrace/src/sys/net/if_ppp.c#11 integrate .. //depot/projects/dtrace/src/sys/net/netisr.c#7 integrate .. //depot/projects/dtrace/src/sys/net/netisr.h#5 integrate .. //depot/projects/dtrace/src/sys/net/rtsock.c#12 integrate .. //depot/projects/dtrace/src/sys/netatalk/ddp_usrreq.c#8 integrate .. //depot/projects/dtrace/src/sys/netgraph/ng_base.c#23 integrate .. //depot/projects/dtrace/src/sys/netinet/if_ether.c#17 integrate .. //depot/projects/dtrace/src/sys/netinet/ip_input.c#14 integrate .. //depot/projects/dtrace/src/sys/netinet/udp_usrreq.c#19 integrate .. //depot/projects/dtrace/src/sys/netinet6/frag6.c#12 integrate .. //depot/projects/dtrace/src/sys/netinet6/ip6_forward.c#10 integrate .. //depot/projects/dtrace/src/sys/netinet6/ip6_input.c#11 integrate .. //depot/projects/dtrace/src/sys/netipx/ipx_input.c#6 integrate .. //depot/projects/dtrace/src/sys/netnatm/natm_proto.c#5 integrate .. //depot/projects/dtrace/src/sys/nfsserver/nfs_syscalls.c#11 integrate .. //depot/projects/dtrace/src/sys/nlm/nlm_prot_impl.c#10 integrate .. //depot/projects/dtrace/src/sys/pci/if_rlreg.h#16 integrate .. //depot/projects/dtrace/src/sys/sys/socketvar.h#12 integrate .. //depot/projects/dtrace/src/tools/regression/lib/msun/Makefile#10 integrate .. //depot/projects/dtrace/src/tools/regression/lib/msun/test-fmaxmin.c#1 branch .. //depot/projects/dtrace/src/tools/regression/lib/msun/test-fmaxmin.t#1 branch .. //depot/projects/dtrace/src/usr.bin/cpio/cpio.c#3 integrate .. //depot/projects/dtrace/src/usr.bin/gzip/gzip.1#2 integrate .. //depot/projects/dtrace/src/usr.bin/gzip/unbzip2.c#2 integrate .. //depot/projects/dtrace/src/usr.bin/gzip/znew#3 integrate .. //depot/projects/dtrace/src/usr.bin/ldd/ldd.1#6 integrate .. //depot/projects/dtrace/src/usr.bin/ldd/ldd.c#4 integrate .. //depot/projects/dtrace/src/usr.bin/su/su.1#6 integrate .. //depot/projects/dtrace/src/usr.bin/unzip/unzip.1#2 integrate .. //depot/projects/dtrace/src/usr.bin/unzip/unzip.c#2 integrate .. //depot/projects/dtrace/src/usr.sbin/edquota/edquota.c#6 integrate .. //depot/projects/dtrace/src/usr.sbin/mountd/exports.5#5 integrate .. //depot/projects/dtrace/src/usr.sbin/pmcstat/pmcstat.c#8 integrate .. //depot/projects/dtrace/src/usr.sbin/quot/quot.c#5 integrate .. //depot/projects/dtrace/src/usr.sbin/quotaon/quotaon.c#5 integrate .. //depot/projects/dtrace/src/usr.sbin/repquota/repquota.c#5 integrate .. //depot/projects/dtrace/src/usr.sbin/wpa/wpa_supplicant/Makefile#10 integrate .. //depot/projects/dtrace/src/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5#6 integrate .. //depot/projects/dtrace/www/en/developers.sgml#39 integrate .. //depot/projects/dtrace/www/ru/send-pr.sgml#5 integrate .. //depot/projects/dtrace/www/share/sgml/news.xml#54 integrate .. //depot/projects/dtrace/www/share/sgml/press.xml#23 integrate Differences ... ==== //depot/projects/dtrace/doc/en_US.ISO8859-1/articles/contributors/contrib.committers.sgml#49 (text+ko) ==== @@ -1,4 +1,4 @@ - + @@ -1832,19 +1832,6 @@ Also, the dial timeout for tip is 60 seconds. Your modem should use something less, or else tip will think there is a communication problem. Try ATS7=45&W. - - - As shipped, tip does not yet support - Hayes modems fully. The solution is to edit the file - tipconf.h in the directory - /usr/src/usr.bin/tip/tip. Obviously you need the - source distribution to do this. - - Edit the line #define HAYES 0 to - #define HAYES 1. Then make and - make install. Everything works nicely after - that. - ==== //depot/projects/dtrace/doc/en_US.ISO8859-1/share/sgml/authors.ent#40 (text+ko) ==== @@ -13,7 +13,7 @@ builds for the other languages, and we will poke fun of you in public. - $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.452 2008/06/23 11:42:41 erik Exp $ + $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.453 2008/07/03 14:50:22 nwhitehorn Exp $ --> aaron@FreeBSD.org"> @@ -780,6 +780,8 @@ nsouch@FreeBSD.org"> +nwhitehorn@FreeBSD.org"> + nyan@FreeBSD.org"> obraun@FreeBSD.org"> ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/books/handbook/eresources/chapter.sgml#4 (text+ko) ==== @@ -1,13 +1,13 @@ @@ -653,6 +653,14 @@ + &a.virtualization.name; + A &os; részérõl + támogatott különbözõ + virtualizációs technológiák + tárgyalása + + + &a.vuxml.name; A VuXML infrastruktúra tárgyalása @@ -1977,6 +1985,32 @@ + + &a.virtualization.name; + + + A &os; részérõl + támogatott különbözõ + virtualizációs + technológiák + + Ezen a levelezési listán elsõsorban + a &os; által támogatott + virtualizációs megoldásokat vitatjuk + meg. Ennek keretében egyrészt az ehhez + kapcsolódó alapvetõ funkciók + megvalósítása valamint további + újítások kerülnek a + középpontba, másrészt a + felhasználók számára ezzel + létrehoztunk egy fórumot a + felmerülõ problémák + megoldására és az alkalmazási + lehetõségek + megbeszelésére. + + + ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/mailing-lists.ent#5 (text+ko) ==== @@ -1,13 +1,13 @@ @@ -429,6 +429,10 @@ FreeBSD vendors pre-release coordination levelezési lista"> freebsd-vendors"> + +Discussion of various virtualization techniques supported by FreeBSD levelezési lista"> +freebsd-virtualization"> + FreeBSD VuXML levelezési lista"> freebsd-vuxml"> ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/transtable.xml#3 (text+ko) ==== @@ -1,5 +1,5 @@ - + - $FreeBSD: doc/hu_HU.ISO8859-2/share/sgml/transtable.xml,v 1.2 2008/06/25 11:28:10 gabor Exp $ + $FreeBSD: doc/hu_HU.ISO8859-2/share/sgml/transtable.xml,v 1.3 2008/06/30 19:46:58 pgj Exp $ ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-dev-model.xml#3 (text+ko) ==== @@ -1,15 +1,16 @@ - + - A FreeBSD fejlesztési model + A FreeBSD fejlesztési model - + Áttekintés A FreeBSD fejlesztése két párhuzamos @@ -29,15 +30,16 @@ + - A FreeBSD fejlesztési model + A FreeBSD fejlesztési model - A csapat Fejlesztõk ezrei világszerte @@ -47,29 +49,34 @@ Csak a committerek rendelkeznek írási joggal a CVS repository-hoz. - 324 committer összesen (beleértve a + 353 committer összesen (beleértve a forrás, dokumentáció és ports jogokat) - 212 aktív committer az src/ területen + 181 aktív committer az src/ területen az elmúlt 12 hónapban - 165 aktív committer az src/sys/ területen + 147 aktív committer az src/sys/ területen az elmúlt 12 hónapban - A FreeBSD fejlesztési model + A FreeBSD fejlesztési model - A hibák + kezelése - A felhasználók és külsõ - fejlesztõk a GNATS rendszeren keresztül küldhetnek - hibajavításokat, fejlesztéseket, vagy - probléma-jelentéseket. + A felhasználók és a + külsõ, közvetlen CVS + hozzáféréssel nem rendelkezõ + fejlesztõk a GNATS rendszerén keresztül + küldhetnek hibajavításokat, + fejlesztési javaslatokat vagy + hibajelentéseket. - Online form az elküldéshez, send-pr parancs - alapértelmetetten a FreeBSD rendszereken, ... + Formái: interneten keresztül, a FreeBSD + rendszereken alapból elérhetõ + send-pr paranccsal stb. ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-linux-license.xml#3 (text+ko) ==== @@ -1,9 +1,9 @@ - + ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-organization.xml#3 (text+ko) ==== @@ -1,9 +1,9 @@ - + @@ -16,13 +16,43 @@ hogy a projekt pozitív irányban fejlõdjön tovább. + A FreeBSD Port Management Team + felelõs a FreeBSD Portgyûjtemény + mûködõképességének, + frissességének és + sokszínûségének + megõrzéséért. Emellett felügyeli + a rajta dolgozó committerek és fejlesztõk + munkáját. + + A FreeBSD Documentation Engineering + Team felelõs a Dokumentációs + Projektben dolgozó committerek számára + kitûzött célok + meghatározásáért és + felügyeletéért. + A FreeBSD Core Team egy 9 fejlesztõbõl álló csoport, amelyet a committerek választanak 2 évre. - A FreeBSD Release Engineering - Team fejlesztõk egy kisebb csoportja, amely - a kiadási folyamat szervezéséért - felel. + A FreeBSD Release Engineering Team + fejlesztõk egy kisebb csoportja, amely a kiadási + folyamat szervezéséért felel. + + A FreeBSD Security Team tagjai + felelõsek azért, hogy felhívják a + közösség figyelmét a FreeBSD src + és portok forrásait érintõ + hibákra, biztonsági résekre és + veszélyekre, illetve a FreeBSD rendszerek + biztonságos üzemeltetésével + kapcsolatos információkat gyûjtik össze + és közvetítik. Emellett még a FreeBSD + biztonságosságát fenyegetõ + hibák elhárításáért + és biztonsági figyelmeztetések + összeállításáért + felelnek. ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-recent-releases.xml#3 (text+ko) ==== @@ -1,33 +1,36 @@ - + Újabb kiadások - + - A FreeBSD 4.X-STABLE továbbra is fejlõdik - funkcionalitásában, teljesítményében - és stabilitásában. + A FreeBSD 6.X-STABLE + továbbra is fejlõdik funkcionalitásában, + teljesítményében és + stabilitásában. - FreeBSD 4.9 (2003. október) - FreeBSD 4.10 (2004. május) + FreeBSD 6.1 (2006. május) + FreeBSD 6.2 (2007. január) - A FreeBSD 5.X-CURRENT kockázatosabb fejlesztésen - megy keresztül, a -STABLE állapot közelében - jár. - - FreeBSD 5.0 (2003. január) - FreeBSD 5.1 (2003. június) - FreeBSD 5.2 (2004. január) - FreeBSD 5.2.1 (2004. február) + A FreeBSD 7.X-STABLE a + legfrissebb stabil fejlesztési ág, rengeteg izgalmas + tesztelnivaló újítással. + + FreeBSD 7.0 (2008. január) + + A FreeBSD 8.X-CURRENT + kockázatosabb fejlesztésen megy keresztül, a + -STABLE állapot közelében + jár. ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-release-process.xml#3 (text+ko) ==== @@ -1,31 +1,21 @@ - + A FreeBSD kiadási folyamata - A Stable kiadások a -STABLE - fejlesztõi ágból készülnek - hozzávetõlegesen 4 hónaponként. + A Stabil kiadások 4 havonta a + -STABLE fejlesztési ágból + készülnek. - A fõbb új verziók (3.0, 4.0, 5.0, ...) - sokkal hosszabb idõközönként jelennek meg, - amikor az adott kiadás fejlesztési céljai - már mind elkészültek. - - - 3.0 - 1998. október - 4.0 - 2000. március - 5.0 - 2003. január - - - + A nagyobb verziók (6.0, 7.0 stb.) 18 havonta + jelennek meg. Az átmeneti idõszakban az elõzõ fõ verziói alverziói továbbra is megjelennek, ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/freebsd-users.xml#3 (text+ko) ==== @@ -1,9 +1,9 @@ - + @@ -21,14 +21,15 @@ Az Apple a Linux-szal szemben a FreeBSD-t választotta a Mac OS X rendszer Unix magjának. - A Netcraft szerint közel 2,5 millió aktív - oldal használ FreeBSD-t hálózati - kiszolgálóként -- körülbelül egy - millióan többen, mint Red Hat Linuxot - - . + A Netcraft szerint közel 2,5 millió + aktív oldal használ FreeBSD-t hálózati + kiszolgálóként -- körülbelül + egy millióan többen, mint Red Hat + Linuxot + + . Csak az elõzõ évben körülbelül egy millió új FreeBSD kiszolgálót ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/common/what-is-freebsd.xml#3 (text+ko) ==== @@ -1,9 +1,9 @@ - + @@ -26,7 +26,7 @@ felhasználást a nyílt- és zárt forrású termékekben. - i386, ia64, amd64, sparc64, alpha + amd64, i386, ia64, pc98, powerpc, sparc64 ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/slides/freebsd-general/slides.xml#3 (text+ko) ==== @@ -1,11 +1,11 @@ - + + ]> - + @@ -37,19 +39,26 @@ - KövesdánGáborgabor@FreeBSD.org - 2004. szeptember 9., csütörtök - 2004 FreeBSD Mall, Inc. + + Kövesdán + Gábor + gabor@FreeBSD.org + 2008. január 3., csütörtök + + 2004-2008 + FreeBSD Mall, Inc. + -Kivonat + + Kivonat + Mi az a FreeBSD? Ki használ FreeBSD-t? A FreeBSD fejlesztési model FreeBSD kiadások / elágazások terminológiája Újabb FreeBSD kiadások - FreeBSD 5.3 @@ -58,6 +67,7 @@ + &slides.what-is-freebsd; @@ -65,26 +75,12 @@ &slides.freebsd-dev-model; +&slides.freebsd-organization; + &slides.freebsd-release-process; - - &slides.freebsd-recent-releases; - - -&slides.freebsd-organization; - - - -&slides.freebsd-5.3; - -Bõvebb információ - - - FreeBSD Kézikönyv - FreeBSD Mall, Inc. - - +&slides.freebsd-more-information; ==== //depot/projects/dtrace/doc/mn_MN.UTF-8/books/handbook/serialcomms/chapter.sgml#5 (text+ko) ==== @@ -1,9 +1,9 @@ @@ -1774,18 +1774,6 @@ Ð‘Ð°Ñ tip-ийн хувьд залгах хугацаа нь 60 Ñекунд байдаг. Таны модем нь үүнÑÑÑ Ð±Ð°Ð³Ñ‹Ð³ ашиглах Ñ‘Ñтой бөгөөд Ñ‚ÑгÑхгүй бол tip холбоонд аÑуудал байна гÑж үзÑÑ… болно. ATS7=45&W гÑж үзÑÑÑ€Ñй. - - - tip нь Hayes модемуудыг бүрÑн гүйцÑд - дÑмждÑггүй. Үүний шийдÑл нь /usr/src/usr.bin/tip/tip - Ñан дахь tipconf.h файлыг заÑварлах Ñвдал - юм. Танд мÑдÑÑж үүнийг хийхийн тулд ÑÑ… түгÑÑлт байх шаардлагатай. - - #define HAYES 0 мөрийг - #define HAYES 1 болгон заÑварлана. Дараа нь - make хийгÑÑд make install хийнÑ. - Түүний дараа бүгд Ñайхан ажиллах болно. - ==== //depot/projects/dtrace/doc/share/pgpkeys/pgpkeys-developers.sgml#40 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -1338,3 +1338,9 @@ &a.ivoras; &pgpkey.ivoras; + + + &a.nwhitehorn; + &pgpkey.nwhitehorn; + + ==== //depot/projects/dtrace/doc/share/pgpkeys/pgpkeys.ent#38 (text+ko) ==== @@ -1,5 +1,5 @@ - + @@ -202,6 +202,7 @@ + ==== //depot/projects/dtrace/doc/zh_TW.Big5/books/handbook/jails/chapter.sgml#2 (text+ko) ==== @@ -1,7 +1,7 @@ )]
* New build -failures on 7.x-current +failures on 7.x-stable [i386 ()] [sparc64 ()] [ia64 ()] @@ -74,17 +74,18 @@ [amd64 ()] >>> TRUNCATED FOR MAIL (1000 lines) <<< From pgj at FreeBSD.org Fri Jul 4 05:29:19 2008 From: pgj at FreeBSD.org (Gabor Pali) Date: Fri Jul 4 05:29:26 2008 Subject: PERFORCE change 144596 for review Message-ID: <200807040529.m645TIt3041246@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144596 Change 144596 by pgj@disznohal on 2008/07/04 05:28:36 Minor nits Affected files ... .. //depot/projects/docproj_hu/www/hu/advocacy/index.sgml#5 edit .. //depot/projects/docproj_hu/www/hu/advocacy/myths.sgml#5 edit .. //depot/projects/docproj_hu/www/hu/community/mailinglists.sgml#8 edit .. //depot/projects/docproj_hu/www/hu/community/newsgroups.sgml#8 edit .. //depot/projects/docproj_hu/www/hu/community/webresources.sgml#5 edit Differences ... ==== //depot/projects/docproj_hu/www/hu/advocacy/index.sgml#5 (text+ko) ==== @@ -2,7 +2,7 @@ - + ]> ==== //depot/projects/docproj_hu/www/hu/advocacy/myths.sgml#5 (text+ko) ==== @@ -2,7 +2,7 @@ - + %developers; ==== //depot/projects/docproj_hu/www/hu/community/mailinglists.sgml#8 (text+ko) ==== @@ -2,7 +2,7 @@ - + ]> ==== //depot/projects/docproj_hu/www/hu/community/newsgroups.sgml#8 (text+ko) ==== @@ -2,7 +2,7 @@ - + ]> ==== //depot/projects/docproj_hu/www/hu/community/webresources.sgml#5 (text+ko) ==== @@ -2,7 +2,7 @@ - + ]> From pgj at FreeBSD.org Fri Jul 4 05:30:21 2008 From: pgj at FreeBSD.org (Gabor Pali) Date: Fri Jul 4 05:30:31 2008 Subject: PERFORCE change 144597 for review Message-ID: <200807040530.m645UK9p041381@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144597 Change 144597 by pgj@disznohal on 2008/07/04 05:30:08 Rework in www/hu/{copyright, developers, docproj, support} Affected files ... .. //depot/projects/docproj_hu/www/hu/copyright/copyright.sgml#4 edit .. //depot/projects/docproj_hu/www/hu/developers/cvs.sgml#6 edit .. //depot/projects/docproj_hu/www/hu/docproj/doc-set.sgml#4 edit .. //depot/projects/docproj_hu/www/hu/docproj/docproj.sgml#5 edit .. //depot/projects/docproj_hu/www/hu/docproj/hungarian.sgml#3 edit .. //depot/projects/docproj_hu/www/hu/docproj/sgml.sgml#4 edit .. //depot/projects/docproj_hu/www/hu/docproj/submitting.sgml#4 edit .. //depot/projects/docproj_hu/www/hu/docproj/who.sgml#4 edit .. //depot/projects/docproj_hu/www/hu/support/bugreports.sgml#5 edit .. //depot/projects/docproj_hu/www/hu/support/webresources.sgml#4 edit Differences ... ==== //depot/projects/docproj_hu/www/hu/copyright/copyright.sgml#4 (text+ko) ==== @@ -2,7 +2,8 @@ - + ]> @@ -17,13 +18,13 @@

-

A FreeBSD Licensz

-

A FreeBSD Dokumentációs Licensz

-

Védjegyek Jegyzéke

-

A BSD Licensz

-

A BSD Démon

-

A FreeBSD Ports Collection terjesztésének - korlátozásai

+

A &os; licenc

+

A &os; dokumentációs licenc

+

A védjegyek jegyzéke

+

A BSD licensz

+

A BSD démon

+

A &os; portok terjesztésének korlátozásai

GNU GENERAL PUBLIC LICENSE

GNU LIBRARY GENERAL PUBLIC LICENSE

==== //depot/projects/docproj_hu/www/hu/developers/cvs.sgml#6 (text+ko) ==== @@ -2,7 +2,7 @@ - + ]> @@ -16,50 +16,61 @@ &header;

A CVS - (Concurrent Version System) az az eszköz, amelyet a forrás - kezeléséhez használunk. Minden - változás (a hozzátartozó - naplóüzenettel együtt, amely leírja a - változtatás célját) itt - tárolódik a FreeBSD 2.0 óta. A lentebb - említett webes felület segítségével - a forrás könnyen böngészhetõ. A CVS - teljes másolata, vagy a benne lévõ fejlesztési - ágak bármelyike elérhetõ az itt felsorolt + (Concurrent Version System) az az eszköz, amelyet a + forrás kezeléséhez használunk. Minden + változás (az adott változtatás + célját leíró + naplóüzenettel együtt) itt + tárolódik a &os; 2.0 óta. A lentebb + említett webes felület + segítségével a forrás könnyen + böngészhetõ. A CVS teljes másolata, vagy + a benne lévõ fejlesztési ágak + bármelyike elérhetõ az itt felsorolt módszerekkel:

    -
  • CVSup: - egy kevés erõforrást igénylõ megoldás - (Modula-3 nyelven íródott).
  • +
  • CVSup: + egy kevés erõforrást igénylõ + megoldás (Modula-3 nyelven íródott).
  • -
  • AnonCVS: - a CVSup-nál több erõforrást igénylõ - (több ideig tartó, nagyobb hálózati forgalmat +
  • AnonCVS: + a CVSup megoldásánál több + erõforrást igénylõ (több ideig + tartó, nagyobb hálózati forgalmat bonyolító) módszer, de kis részek - letöltésekor könnyebben használható, - és csak a cvs eszközöket igényli, amelyek - a FreeBSD-vel együtt települnek.
  • + letöltésekor könnyebben + használható, és csak a &os;-vel együtt + települõ szabványos CVS eszközöket + igényli. -
  • CTM: +
  • CTM: egy nagyon kis erõforrást igénylõ - megoldás, batch módú eléréssel - (alapvetõen patcheket használ e-mailen + megoldás, kötegelt (batch) módú + eléréssel (alapvetõen a + módosításokat kapjuk meg e-mailen keresztül).
  • CVSWeb felület: - a forrás egyszerû böngészésére - használható, ha egy konkrét - változást, vagy fájlverziót keres.
  • + a forrás egyszerû + böngészésére + használható, amikor egy konkrét + változtatást, vagy + állományverziót keresünk benne.
-

A CVS web felület tükrei az alábbi helyeken is - elérhetõek: +

A CVS web felület tükrözései az + alábbi helyeken is elérhetõek: + Amerikai Egyesült Államok, Kalifornia + Japán, Kanada, - Japán, - Portugália, - USA/California és - Ukrajna.

+ Portugália + és Ukrajna.

&footer; ==== //depot/projects/docproj_hu/www/hu/docproj/doc-set.sgml#4 (text+ko) ==== @@ -1,7 +1,8 @@ - + ]> @@ -15,45 +16,49 @@ &header; -

A FreeBSD dokumentációja három fõ +

A &os; dokumentációja három fõ kategóriára osztható:

  1. A man oldalak

    -

    A projekt ezzel nem igazán foglalkozik, mert ez az - alaprendszer részét képezi. Kivételt - képez ez alól a japán csapat, õk - lefordítják ezeket az oldalakat is. Nincs - akadálya azonban, hogy mások is így - tegyenek.

    +

    A projekt ezzel nem igazán foglalkozik, mert ez az + alaprendszer részét képezi. Kivételt + képez ez alól a japán csapat, õk + lefordítják ezeket az oldalakat is. Nincs + akadálya azonban, hogy mások is így + tegyenek.

    -

    Nem arról van szó, hogy a man oldalak nem fontosak, - egyáltalán nem! Egyszerûen csak annyira - kötõdnek a FreeBSD néhány - részéhez, hogy a legtöbb esetben a legalkalmasabb - ember, aki lefordíthatná ezeket az, - aki a FreeBSD azon részét írta.

  2. +

    Nem arról van szó, hogy a man oldalak nem fontosak, + egyáltalán nem! Egyszerûen csak annyira + kötõdnek a &os; néhány + részéhez, hogy a legtöbb esetben a + legalkalmasabb ember, aki lefordíthatná ezeket az, + aki a &os; azon részét írta.

    -
  3. A könyvek

    +
  4. +

    Könyvek

    -

    A projekt sok olyan dokumentációval rendelkezik, - melyek már "könyv terjedelmûek", vagy azok - lesznek. Ezek közé tartozik a FreeBSD GYIK és - a FreeBSD Kézikönyv.

    +

    A projekt sok olyan dokumentációval rendelkezik, + melyek már ,,könyv terjedelmûek'', vagy azok + lesznek. Ezek közé tartozik a &os; GYIK és a + &os; kézikönyv.

    -
  5. A cikkek

    +
  6. +

    Cikkek

    -

    Hatalmas - a FreeBSD-t érintõ - - információ-mennyiség érhetõ el - rövidebb cikkek formájában -- más - projektek oktatóanyagaihoz vagy HOGYAN - leírásaihoz hasonlóan.

    +

    A &os;-t érintõ hatalmas + információmennyiség érhetõ el + rövidebb cikkek formájában, hasonlóan + más projektek oktatóanyagaihoz vagy HOGYAN + leírásaihoz.

- - FreeBSD Dokumentációs Projekt - kezdõlap + + A &os; Dokumentációs Projekt kezdõlapja &footer; ==== //depot/projects/docproj_hu/www/hu/docproj/docproj.sgml#5 (text+ko) ==== @@ -17,36 +17,40 @@

Áttekintés

-

Egy új és összetett operációs rendszer - kezelését elsajátítani mindig nehéz - feladat, függetlenül a grafikus felület - szépségétõl. Ez alól a FreeBSD sem - kivétel.

+

Egy új és összetett operációs + rendszer kezelését elsajátítani mindig + nehéz feladat, függetlenül a grafikus + felület szépségétõl. Ez + alól a &os; sem kivétel.

Míg számos könyv létezik, amelynek - témája a BSD Unix (és általánosabban - &unix;), a FreeBSD-nek megvannak az egyedi szolgáltatásai, - eljárásai és furcsa szokásai.

+ témája a BSD Unix (és a &unix; úgy + általánosságban), a &os;-nek megvannak az + egyedi szolgáltatásai, eljárásai + és furcsa szokásai.

-

Ezen kívül néhány felhasználónak - a FreeBSD lesz az elsõ Unix-szerû rendszere, tehát egy - magas színvonalú, pontos dokumentáció +

Ezenkívül néhány + felhasználónak a &os; lesz az elsõ + Unix-szerû rendszere, tehát egy magas + színvonalú, pontos dokumentáció elérhetõsége elengedhetetlen követelmény.

-

A FreeBSD Dokumentációs Projekt eme hiány - betöltését szolgálja, méghozzá +

A &os; Dokumentációs Projekt ennek + hiányának megszûntetését + szolgálja, méghozzá kétféleképpen:

  1. A Dokumentációs Projekt tagjai dokumentációkat írnak és tesznek - elérhetõvé a FreeBSD Dokumentációs - Csomagba történõ - illesztéséhez.

  2. + elérhetõvé a &os; + dokumentációs készletének + részeként.

    -
  3. A Dokumentációs Projekt tagjai megvitatják - és rendszerezik a FreeBSD Dokumentáció +

  4. A Dokumentációs Projekt tagjai + megvitatják és rendszerezik a &os; + dokumentációs készletének megjelenését és összeállítását.

@@ -54,52 +58,61 @@ - +

A dokumentáció részét + képezõ több projekt is jelenleg + folyamatban van. Amennyiben idõnk engedi, + nézzük át ezt a listát, + hátha mi magunk is tudunk valamiben + segíteni!

+

Jelenlegi - feladatok

+
+

Jelenlegi + feladatok

-

Több - a dokumentáció részét - képezõ - projekt van jelenleg is folyamatban. - Amennyiben ideje engedi, kérjük tekintse át a - következõ listát, hogy lássa, van-e olyan - terület, amelyben Ön is tud - segíteni!

-

Kik vagyunk és hogyan csatlakozhat?

+

Kik vagyunk és hogyan lehet hozzánk csatlakozni?

Az oldal bemutatja a Dokumentációs Projekt - szerkesztõit, és leírja, hogyan csatlakozhat - hozzánk.

+ szerkesztõit, és leírja hogyan csatlakozhatunk + hozzájuk.

-

A FreeBSD Dokumentáció

+

A &os; dokumentációja

-

A FreeBSD Dokumentáció egységeinek és a - Dokumentációs Projekt ezen részeken végzett - munkájának leírása.

+

A &os; dokumentáció elemeinek és a + Dokumentációs Projekt ezen részeken + végzett munkájának leírása.

-

Az SGML és a Dokumentációs - Projekt

+

Az SGML és a Dokumentációs Projekt

A projekt az SGML nyelvet használja a - dokumentációhoz. Ezt mutatja be ez az oldal, és - az érdeklõdõket további SGML forrásokhoz - irányítja.

+ dokumentációhoz. Ezt mutatja be ez az oldal, + és az érdeklõdõket további SGML + ismeretek felé kalauzolja.

-

Dokumentáció - beküldése

+

Dokumentáció beküldése

-

Dokumentáció beküldése a legjobb módja - annak, hogy segítse a FreeBSD használatát. Ez az - oldal a dokumentáció beküldésének - mikéntjét tárgyalja, tehát ajánlott, - hogy minél elõbb vessen rá egy pillantást.

+

A dokumentáció beküldése a legjobb + módja annak, hogy segítsük a &os; + használatát. Ez az oldal a + dokumentáció beküldésének + mikéntjét tárgyalja, tehát + ajánlott, hogy elsõként erre vessünk egy + pillantást.

-

Fordítások

+

Fordítások

-

A FreeBSD dokumentáció fordításai, honlapok, - Kézikönyv, man oldalak és GYIK.

+

A &os; dokumentációjának + fordításai, honlapok, a kézikönyv, man + oldalak és a GYIK.

&footer; ==== //depot/projects/docproj_hu/www/hu/docproj/hungarian.sgml#3 (text+ko) ==== @@ -2,7 +2,7 @@ - + ]> @@ -12,36 +12,43 @@ &header; -

A Projekt Célja

+

A Projekt célja

-

A FreeBSD Dokumentációs Projekt által - létrehozott dokumentációk minden témát - felölelnek, de ezek a dokumentumok az angol nyelv amerikai - követelményei szerint íródtak, hiszen az - angol nyelv vált az informatika "hivatalos" nyelvévé. - A FreeBSD Magyar Dokumentációs Projekt célja, hogy - egy egységes magyar nyelvû dokumentációt - nyújtson az angol nyelvismerettel egyáltalán nem - rendelkezõ, vagy angol nyelvet kevésbé jól - értõ felhasználók számára.

+

A &os; Dokumentációs Projekt által + létrehozott dokumentációk felölelnek + ugyan minden témát, de ezek a dokumentumok az angol + nyelv amerikai követelményei szerint + íródtak, hiszen az angol nyelv vált az + informatika ,,hivatalos'' nyelvévé. A Magyar &os; + Dokumentációs Projekt célja, hogy egy + egységes magyar nyelvû dokumentációt + nyújtson az angol nyelvismerettel egyáltalán + nem rendelkezõ, vagy angol nyelvet kevésbé + jól értõ felhasználók + számára.

-

Hogyan segíthet?

+

Hogyan segíthetünk?

-

Lefordíthat egy még le nem fordított angol - nyelvû dokumentumot, vagy saját maga is írhat - új dokumentumokat. Mind az angol, mind a magyar nyelvû - dokumentumok SGML nyelven készülnek, - így az angol nyelv ismerete mellett az SGML nyelv alapjaival is - tisztában kell lennie, valamint követnie kell az - A - FreeBSD Dokumentációs Projekt Irányelvei - Kezdõknek könyv tartalmi és formai - elõírásait.

+

Lefordíthatunk egy még le nem fordított + angol nyelvû dokumentumot, vagy akár saját magunk + is írhatunk új dokumentumokat. Mind az angol, mind + a magyar nyelvû dokumentumok SGML + nyelven készülnek, így az angol nyelv ismerete + mellett az SGML nyelv alapjaival is tisztában kell + lennünk, valamint követnünk kell az A &os; + Dokumentációs Projekt irányelvei + kezdõknek címû könyv tartalmi és + formai elõírásait.

Kapcsolat

-

Kövesdán Gábor <gabor@FreeBSD.org> +

Kövesdán Gábor <gabor@FreeBSD.org>

+ +

Páli Gábor <pgj@FreeBSD.org>

&footer; ==== //depot/projects/docproj_hu/www/hu/docproj/sgml.sgml#4 (text+ko) ==== @@ -1,7 +1,7 @@ - + ]> @@ -14,207 +14,231 @@ &header; -

A Dokumentációs Projekt az SGML nyelvet használja, mint - alapvetõ eszközt a dokumentáció - bemutatásához.

+

A dokumentációs munkákhoz a + Dokumentációs Projekt az SGML nyelvet + használja mint alapvetõ eszközt.

Az SGML jelentése: Standard Generalized Markup Language.

-

Dióhéjban, (és elnézést - mindenkitõl, akit sért a következõ - kijelentés) az SGML egy nyelv további nyelvek - létrehozására.

+

Dióhéjban (és elnézést + kérünk mindenki SGML szakértõtõl, akit + sért a következõ kijelentés) úgy + foglalhatnánk össze, hogy az SGML egy olyan nyelv, + amellyel további nyelveket hozhatunk létre.

-

Talán Ön is használta már az SGML-t, - anélkül, hogy tudott volna róla. A HTML, amely - nyelven a honlapok készülnek, rendelkezik formális - leírással, amely SGML nyelven íródott. Mikor - HTML nyelven ír, nem az SGML nyelvet használja - (és fordítva sem), csak egy olyan nyelvet, amelynek - szabályait az SGML segítségével - fektették le.

+

Talán már mi magunk is használtuk az SGML-t + anélkül, hogy tudtunk volna róla. A honlapok + készítésére használt HTML nyelv + például olyan formális + leírással rendelkezik, amely az SGML nyelven + íródott. Természetesen ez nem azt + jelenti, hogy amikor HTML nyelven írunk valamit, akkor az + SGML nyelvet használjuk (és fordítva sem). + Ez csupán egy olyan nyelv, amelynek szabályait az + SGML segítségével fektették le.

-

Sok leíró nyelv létezik, melynek alapjait SGML - nyelven írták. A HTML az egyik ezek közül. - Egy másik példa erre a "DocBook". Ez egy olyan nyelv, - melyet technikai leírások írásához - terveztek, és mint ilyen, sok taggel rendelkezik (amelyek így - néznek ki: <Tag tartalma>), a technikai - leírások megfelelõ formázásához. - A FreeBSD Dokumentációs Projekt ezt használja, - kiegészítve néhány új elemmel a - még nagyobb precizitás érdekében.

+

Sok leíró nyelv létezik, melynek alapjait + SGML nyelven írták. A HTML az egyik ezek + közül. Egy másik példa erre a + ,,DocBook''. Ez egy olyan nyelv, melyet kifejezetten mûszaki + leírások írásához terveztek, + és mint ilyen, a megfelelõ formázáshoz + nagyon sok ilyen típusú (tehát + <a tag tartalma> alakú) taggel + rendelkezik. A &os; Dokumentációs Projekt ezt + használja, és a nagyon pontosság + érdekében még kiegészítette + néhány új elemmel is.

-

A következõ példa bemutatja, hogyan írhat - bekezdést a HTML nyelv segítségével - (a tartalomtól eltekintve, csak a tageket nézze):

+

A következõ példa bemutatja hogyan + írhatunk meg egy bekezdést a HTML nyelv + segítségével (a tartalom most nem fontos, + csak a tagek):

-
A rendszer a jelszavak tárolására a
-        /etc/passwd fájlt használja.  Ennek
-        módosításához a vipw
-        használata ajánlott.  Amennyiben csak egy új
-        felhasználót akar felvenni a rendszerbe,
-        használhatja az adduser parancsot.

- ]]>
+
A rendszer a jelszavak tárolására az
+      /etc/passwd állományt használja.
+      Ennek módosításához a
+      vipw használata ajánlott.
+      Amennyiben csak egy új felhasználót akarunk
+      felvenni a rendszerbe, használjuk az
+      adduser parancsot.

+]]>

Ugyanez a bekezdés a DocBook leírónyelvet használva így néz ki:

A rendszer a jelszavak tárolására a
-	/etc/passwd fájlt használja.  Ennek
-	módosításához a vipw
-	használata ajánlott.  Amennyiben csak egy új
-	felhasználót akar felvenni a rendszerbe,
-	használhatja az adduser parancsot.
-    ]]>
+ A rendszer a jelszavak tárolására az + /etc/passwd állományt + használja. Ennek módosításához + a vipw használata ajánlott. + Amennyiben csak egy új felhasználót akarunk + felvenni a rendszerbe, használjuk az + adduser parancsot. +]]> -

Amint látja, a DocBook sokkal "kifejezõbb" a HTML-nél. - A HTML példában a fájlnév - megjelenítése "typewriter" betûtípussal - történik. A DocBook ugyanezt - "fájlnév"-ként képes kezelni, - függetlenül attól, hogy a fájlnév - leírását itt nem tárgyaljuk.

+

Láthatjuk, hogy a DocBook sokkal ,,kifejezõbb'' a + HTML-nél. A HTML példában az + állománynév megjelenítése + ,,typewriter'' betûtípussal történik. A + DocBook ugyanezt ,,állománynévként'' + képes kezelni függetlenül attól, hogy az + állománynevek formázását itt + nem tárgyaljuk.

Ennek a sokkal kifejezõbb jelölési rendszernek rengeteg elõnye van:

  • -

    Nem félreérthetõ vagy ellentmondásos.

    - -

    Nem tölt idõt azon gondolkodva, hogy "Hmm, vajon egy - fájlnév megjelenítéséhez 'tt', - 'b', vagy 'em' lenne megfelelõbb?"

    +

    Nem félreérthetõ vagy + ellentmondásos.

    + +

    Nem töltünk el idõt feleslegesen azon + gondolkodva, hogy ,,Hmm, vajon egy állomány + megjelenítéséhez a 'tt', 'b', vagy 'em' + lenne megfelelõbb?''

    -

    Ehelyett a megfelelõ taget használhatja a megfelelõ - helyen.

    +

    Ehelyett egyszerûen csak a megfelelõ taget + használjuk a megfelelõ helyen.

    -

    A DocBookból más formátumokba (HTML, - PostScript®, stb.) történõ - átalakítás során biztos lehet abban, - hogy minden <filename> ugyanúgy fog kinézni.

    +

    Biztosak lehetünk benne, hogy a minden <filename> + taggel megjelölt rész ugyanúgy fog + kinézni, amikor DocBookból más + formátumokba (HTML, PostScript® stb.) + alakítjuk át.

  • -

    Elfelejthet a dokumentum tálalásának - módjával foglalkozni, így - kizárólag a tartalomra koncentrálhat.

    +

    Nem kell a dokumentum megjelenésével + foglalkoznunk, így kizárólag a tartalomra + tudunk koncentrálni.

  • -

    Mivel a dokumentáció leírásának - módja egyáltalán nem kötött, ugyanaz - a dokumentáció több más formátumban - is könnyedén elõállítható - — egyszerû szöveg, HTML, PostScript®, RTF, PDF, - stb.

  • +

    Mivel a dokumentáció + leírásának módja + egyáltalán nem kötött, ugyanaz a + dokumentáció több más + formátumban is könnyedén + elõállítható — egyszerû + szöveg, HTML, PostScript®, RTF, PDF stb.

    +
  • -

    A dokumentáció sokkal intelligensebb, tehát - intelligensebb feladatokra használható. - Például lehetséges egy olyan - tárgymutató automatikus - elõállítása, amely a +

    A dokumentáció is így sokkal + ,,intelligensebb'', tehát bonyolultabb is feladatokra + felhasználható. Például + lehetséges egy olyan tárgymutató + automatikus elõállítása, amely a dokumentáció összes parancsát - tartalmazza.

  • + tartalmazza.

    +
-

Ez olyan, mint a Microsoft® Word stílusai, csak +

Ez olyan, mint a Microsoft® Word stíluslapjai, csak mérhetetlenül sokoldalúbb.

-

Természetesen a sokoldalúságnak ára van:

+

Természetesen ennek a sokoldalúságnak + ára an:

  • -

    Mivel a használható tagek száma sokkal nagyobb, - tovább tart megtanulásuk és alkalmazásuk +

    Mivel a használható tagek száma sokkal + nagyobb, tovább tart megtanulásuk és + alkalmazásuk hatékony elsajátítása is.

    -

    Egy jó módszere az SGML és a DocBook - elsajátításának az, ha sok példa - dokumentáció forrásában - megfigyeljük, más szerzõk hogyan írtak le - hasonló információt.

    +

    Egy jó módszer az SGML és a DocBook + elsajátítására az, ha a + dokumentációk forrásaiban + megfigyeljük, más szerzõk hogyan írtak + le hasonló információt.

  • -

    Az átalakítás nem egyszerû.

  • +

    Az átalakítás nem egyszerû.

    +
-

Mi a teendõ, ha nem ismeri a DocBook rendszert? - Hozzájárulhat mással is?

+

Mi a teendõ, ha nem ismerjük a DocBook rendszert? + Hozzá tudunk járulni mással is?

-

Természetesen igen. Bármely dokumentáció jobb a - nem létezõ dokumentációnál. Amennyiben - rendelkezik néhány közlésre szánt - dokumentációval, de azok nem DocBook nyelven - íródtak, ne aggódjon!

+

Természetesen igen, hiszen bármely + dokumentáció jobb a nem létezõ + dokumentációnál. Ne aggódjunk, ha a + közlésre szánt dokumentáció nem + DocBook nyelven íródott!

-

Küldje el a - dokumentációt, mint normális esetben. A projekt - egy másik tagja elõ fogja venni a javasolt - dokumentációt, elvégzi a konvertálást - és közzéteszi. Kis szerencsével az így - elkészült szöveget is elküldik Önnek! - Ez hasznos lehet, mert így megtekintheti a - dokumentáció "elõtte és utána" - változatát, és remélhetõen tanul - egy keveset a leíró folyamatból.

+

Az eddig megszokottakhoz hasonlóan küldjünk el a + dokumentációt. A projekt egy másik tagja + elõ fogja venni a javasolt dokumentációt, + elvégzi a konvertálást és + közzéteszi. Kis szerencsével az így + elkészült szöveget is visszaküldik! Ez + hasznos lehet, mert így láthatjuk a + dokumentáció ,,elõtte és utána'' + változatát, és remélhetõen + tanulhatunk egy keveset a folyamatról.

Ez nyilvánvalóan lelassítja a - közzétételi folyamatot, mivel a beküldött - dokumentációt még konvertálni kell. - Így pár órába, vagy pár - napba is beletelhet, mire elbírálásra - kerül.

+ közzétételi folyamatot, mivel a + beküldött dokumentációt még + konvertálni kell. Így pár + órába, vagy pár napba is beletelhet, mire + elbírálásra kerül.

-

További információk az SGML-rõl és a - DocBookról

+

További információk az SGML és a + DocBook nyelvekrõl

-

Elõször is olvassa el a - A FreeBSD - Dokumentációs Projekt Irányelvei - Kezdõknek címû könyvet. Ennek - célja, hogy átfogó leírást - nyújtson minden, a FreeBSD dokumentációja kapcsán +

Elsõként olvassuk el a A &os; Dokumentációs Projekt irányelvei kezdõknek + címû könyvet. Ennek célja, hogy + átfogó leírást nyújtson minden, + a &os; dokumentációja kapcsán felmerülõ kérdések megválaszolásához. Igen hosszú - leírás, amely kisebb oldalakra van tagolva, de - lehetõsége van megtekinteni egy oldalként, - egészben.

+ leírás, amely kisebb részekre szedtek + szét, de lehetõségünk van megtekinteni + akár egészben + is.

http://www.oasis-open.org/cover/sgml-xml.html
-

Az SGML/XML honlap. Számtalan hivatkozás az SGML-rõl.

+

Az SGML/XML honlapja. Számtalan hivatkozás + szól az SGML nyelvrõl.

http://www-sul.stanford.edu/tools/tutorials/html2.0/gentle.html
-

"Gentle Introduction to SGML". Ajánlott olvasmány - mindenkinek, aki közelebbrõl akar megismerkedni az SGML - nyelvvel, a kezdõk szemszögébõl nézve.

+

"Gentle Introduction to SGML". Ajánlott + olvasmány mindenkinek, aki az SGML nyelvvel a kezdõk + szemszögébõl nézve szeretne + közelebbrõl megismerkedni.

http://www.oasis-open.org/docbook/
-

A DocBook DTD-t az OASIS gondozza. Ezek az oldalak azoknak - szólnak, akik az SGML nyelvet már - elsajátították és a DocBook-ot - tanulmányoznák.

+

A DocBook DTD-t az OASIS tartja karban. Ezek az oldalak + azoknak szólnak, akik az SGML nyelvet már + elsajátították és a DocBook nyelvet + is tanulmányoznák.

-

FreeBSD Dokumentációs Projekt kezdõlap + A &os; Dokumentációs Projekt kezdõlapja + &footer; ==== //depot/projects/docproj_hu/www/hu/docproj/submitting.sgml#4 (text+ko) ==== @@ -2,8 +2,8 @@ - + ]> @@ -16,183 +16,195 @@ &header; -

Írtam néhány dokumentációt. Hogyan - nyújthatom be közlésre?

+

Hogyan lehet beküldeni dokumentációt?

+ +

Elõször is szeretnénk megköszönni, + hogy erre fordítottuk az idõnket!

-

Elõször is, köszönjük hogy erre fordította - idejét!

+

Az elkészített dokumentációt + valamilyen módon elérhetõvé kell tenni. + Amennyiben lehetséges, helyezzünk el egy FTP oldalon + vagy webcímen.

-

A dokumentációt elérhetõvé kell tennie. - Amennyiben lehetõsége van rá, kérjük - helyezze el egy FTP vagy webcímen.

+

Ezt követõen írjunk levelet a + freebsd-doc levelezési listára, amelyben + röviden ismertetjük a dokumentációt + és hivatkozunk a pontos helyére, majd várjunk + a visszajelzésre.

-

Ezt követõen írjon levelet a FreeBSD-doc - levelezõlistára, a dokumentáció rövid - ismertetõjével és pontos helyére való - hivatkozással, majd várjon a visszajelzésre.

+

Amennyiben valamilyen okból kifolyólag nem + áll módunkban elhelyezni a dokumentációt + FTP vagy webhelyen, közvetlenül is + elküldhetjük a freebsd-doc levelezési + lista címére is. Ebben az esetben viszont + lehetõleg csak egyszerû szöveges dokumentumokat + küldjünk.

-

Amennyiben valamilyen okból kifolyólag nem áll - módjában elhelyezni a dokumentációt FTP vagy - webhelyen, elküldheti közvetlenül a FreeBSD-doc - levelezõlistára. Ebben az esetben kérjük csak - egyszerû szöveges dokumentumokat küldjön.

- -

Elõfordulhat, hogy más levelezõ listákon is - megvitatnák a dokumentációt, tehát - kérjük továbbítsa azt azokra is. - Például egy cikk a CVSup - használatáról, arról, hogyan tarthatjuk - a forrásainkat frissen, további +

Elõfordulhat, hogy más levelezési + listákon is megvitatnák a dokumentációt, + tehát érdemes azokra is elküldeni egy + másolatot belõle. Például egy olyan + cikk, amely arról szól, hogy a CVSup hogyan + tarthatjuk a forrásainkat frissen, további érdeklõdésre tarthat számot a - FreeBSD-current és a FreeBSD-stable + freebsd-current és a freebsd-stable listákon is.

- -

Miután a dokumentációját - átnézték és lehetõséget kapott, - hogy megvitassák, készen áll a - közzétételre.

- -

Ehhez nem kell mást tennie, csak csomagolja egy tar - fájlba! Amennyiben tehát a dokumentáció - három fájlból áll, elso, - masodik illetve harmadik, és szeretne egyetlen - doc.tar állományt készíteni - belõlük, adja ki a következõ parancsot:

+ +

Miután a dokumentációt + átnézték, tegyünk eleget a vele + kapcsolatban beérkezett javaslatoknak, és már + készen is áll a közzétételre.

+ +

Ehhez nem kell mást tennünk, csak csomagoljuk be egy + tar állományba. Ha például + tehát a dokumentáció három + állományból áll, mint az + elso, masodik, illetve harmadik, + és ezekbõl szeretnénk egyetlen doc.tar + állományt készíteni, akkor adjuk ki az + ehhez szükséges parancsot:

       % tar cf doc.tar elso masodik harmadik
     
-

ami éppen erre való. Ezután - tömörítse a tar fájlt az alábbi - paranccsal:

+

Ezután tömörítsük az így + kapott tar állományt az alábbi paranccsal:

       % gzip -9 doc.tar
     
-

ami elõállítja a doc.tar.gz - tömörített állományt.

+

Így elõáll a doc.tar.gz + tömörített állomány.

-

Végül pedig kódolja az állományt, - nehogy egy levelezõprogram jóvoltából - darabokra essen.

+

Végül pedig kódoljuk az + állományt, nehogy véletlenül egy + levelezõprogram szétcincálja.

       % uuencode doc.tar.gz doc.tar.gz > doc.uue
     
-

Ezt követõen tudatnia kell a Dokumentációs - Projekttel az új dokumentáció - létezését. Ennek megfelelõ módja a - send-pr parancs használata, ami - valószínûleg telepítve van a - számítógépére. A - WWW hibabejelentõ ûrlap - is hasznos lehet.

+

Ezt követõen tudatnunk kell a + Dokumentációs Projekttel az új + dokumentáció létezését. Ennek + megfelelõ módja a send-pr parancs + használata, amely valószínûleg + már el is érhetõ a + számítógépünkön. Erre + viszont a hibajelentõ >>> TRUNCATED FOR MAIL (1000 lines) <<< From julian at FreeBSD.org Fri Jul 4 08:31:24 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Fri Jul 4 08:31:31 2008 Subject: PERFORCE change 144601 for review Message-ID: <200807040831.m648VNoB062773@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144601 Change 144601 by julian@julian_trafmon1 on 2008/07/04 08:31:21 Make LINT compile (with SCTP removed) Affected files ... .. //depot/projects/vimage/src/sys/compat/linux/linux_socket.c#5 edit .. //depot/projects/vimage/src/sys/compat/svr4/svr4_sockio.c#2 edit .. //depot/projects/vimage/src/sys/compat/svr4/svr4_stat.c#2 edit .. //depot/projects/vimage/src/sys/contrib/altq/altq/altq_subr.c#4 edit .. //depot/projects/vimage/src/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#6 edit .. //depot/projects/vimage/src/sys/contrib/pf/net/pf.c#11 edit .. //depot/projects/vimage/src/sys/contrib/pf/net/pf_if.c#7 edit .. //depot/projects/vimage/src/sys/contrib/pf/net/pf_ioctl.c#12 edit .. //depot/projects/vimage/src/sys/dev/ie/if_ie.c#5 edit .. //depot/projects/vimage/src/sys/dev/syscons/daemon/daemon_saver.c#3 edit .. //depot/projects/vimage/src/sys/i386/ibcs2/ibcs2_socksys.c#2 edit .. //depot/projects/vimage/src/sys/kern/kern_poll.c#6 edit .. //depot/projects/vimage/src/sys/net/bridgestp.c#9 edit .. //depot/projects/vimage/src/sys/net/if_bridge.c#12 edit .. //depot/projects/vimage/src/sys/net/if_ef.c#3 edit .. //depot/projects/vimage/src/sys/netgraph/atm/ng_atm.c#2 edit .. //depot/projects/vimage/src/sys/netipsec/xform_ah.c#12 edit .. //depot/projects/vimage/src/sys/netipsec/xform_esp.c#11 edit .. //depot/projects/vimage/src/sys/nfsclient/bootp_subr.c#7 edit .. //depot/projects/vimage/src/sys/sys/vimage.h#58 edit Differences ... ==== //depot/projects/vimage/src/sys/compat/linux/linux_socket.c#5 (text+ko) ==== @@ -32,6 +32,7 @@ /* XXX we use functions that might not exist. */ #include "opt_compat.h" #include "opt_inet6.h" +#include "opt_vimage.h" #include #include @@ -50,6 +51,9 @@ #include #include #include +#include + +#include #include #include @@ -57,6 +61,7 @@ #ifdef INET6 #include #include +#include #endif #ifdef COMPAT_LINUX32 @@ -545,6 +550,10 @@ static int linux_socket(struct thread *td, struct linux_socket_args *args) { +#ifndef KLD_MODULE + INIT_VNET_INET6(curvnet); +#endif + struct linux_socket_args linux_args; struct socket_args /* { int domain; @@ -588,7 +597,7 @@ * XXX: Avoid undefined symbol error with an IPv4 only * kernel. */ - && ip6_v6only + && V_ip6_v6only #endif ) { int v6only; ==== //depot/projects/vimage/src/sys/compat/svr4/svr4_sockio.c#2 (text+ko) ==== @@ -26,6 +26,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_sockio.c,v 1.18 2006/08/04 21:15:09 brooks Exp $"); @@ -36,9 +38,11 @@ #include #include #include +#include + #include +#include - #include #include #include @@ -87,6 +91,7 @@ switch (cmd) { case SVR4_SIOCGIFNUM: { + INIT_VNET_NET(curvnet); struct ifnet *ifp; struct ifaddr *ifa; int ifnum = 0; @@ -103,7 +108,7 @@ * entry per physical interface? */ IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) + TAILQ_FOREACH(ifp, &V_ifnet, if_link) if (TAILQ_EMPTY(&ifp->if_addrhead)) ifnum++; else ==== //depot/projects/vimage/src/sys/compat/svr4/svr4_stat.c#2 (text+ko) ==== @@ -26,6 +26,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_stat.c,v 1.23 2006/09/02 08:18:22 rwatson Exp $"); @@ -43,6 +45,7 @@ #include #include #include +#include #include @@ -411,6 +414,8 @@ struct thread *td; struct svr4_sys_systeminfo_args *uap; { + INIT_VPROCG(TD_TO_VPROCG(td)); + char *str = NULL; int error = 0; register_t *retval = td->td_retval; @@ -426,7 +431,7 @@ break; case SVR4_SI_HOSTNAME: - str = hostname; + str = V_hostname; break; case SVR4_SI_RELEASE: @@ -454,7 +459,7 @@ break; case SVR4_SI_SRPC_DOMAIN: - str = domainname; + str = V_domainname; break; case SVR4_SI_PLATFORM: ==== //depot/projects/vimage/src/sys/contrib/altq/altq/altq_subr.c#4 (text+ko) ==== @@ -29,11 +29,10 @@ #if defined(__FreeBSD__) || defined(__NetBSD__) #include "opt_altq.h" -#if (__FreeBSD__ != 2) -#include "opt_inet.h" #ifdef __FreeBSD__ #include "opt_inet6.h" -#endif +#include "opt_inet.h" +#include "opt_vimage.h" #endif #endif /* __FreeBSD__ || __NetBSD__ */ @@ -49,10 +48,12 @@ #include #include #include +#include #include #include #include +#include #include #include @@ -460,7 +461,9 @@ #if defined(__FreeBSD__) && (__FreeBSD_version >= 500000) IFNET_RLOCK(); #endif - for (ifp = TAILQ_FIRST(&ifnet); ifp; ifp = TAILQ_NEXT(ifp, if_list)) { + VNET_ITERLOOP_BEGIN(); + INIT_VNET_NET(curvnet); + for (ifp = TAILQ_FIRST(&V_ifnet); ifp; ifp = TAILQ_NEXT(ifp, if_list)) { /* read from if_snd unlocked */ if (!TBR_IS_ENABLED(&ifp->if_snd)) continue; @@ -468,6 +471,7 @@ if (!IFQ_IS_EMPTY(&ifp->if_snd) && ifp->if_start != NULL) (*ifp->if_start)(ifp); } + VNET_ITERLOOP_END() #if defined(__FreeBSD__) && (__FreeBSD_version >= 500000) IFNET_RUNLOCK(); #endif ==== //depot/projects/vimage/src/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#6 (text+ko) ==== @@ -25,6 +25,9 @@ # include "opt_random_ip_id.h" #endif #include +#if __FreeBSD_version > 800000 +# include "opt_vimage.h" +#endif #if defined(__FreeBSD__) && !defined(__FreeBSD_version) # if defined(IPFILTER_LKM) # ifndef __FreeBSD_cc_version @@ -115,8 +118,17 @@ #endif extern int ip_optcopy __P((struct ip *, struct ip *)); +#if __FreeBSD_version > 800000 +# include +# include +#endif #if (__FreeBSD_version > 460000) +#ifndef VIMAGE extern int path_mtu_discovery; +#define V_path_mtu_discovery path_mtu_discovery +#define V_ip_defttl ip_defttl +#define V_ipforwarding ipforwarding +#endif #endif # ifdef IPFILTER_M_IPFILTER @@ -233,8 +245,10 @@ bzero((char *)frcache, sizeof(frcache)); fr_running = 1; - if (fr_control_forwarding & 1) - ipforwarding = 1; + if (fr_control_forwarding & 1) { + INIT_VNET_INET(curvnet); + V_ipforwarding = 1; + } SPL_X(s); #if (__FreeBSD_version >= 300000) @@ -256,8 +270,10 @@ #ifdef USE_SPL int s; #endif - if (fr_control_forwarding & 2) - ipforwarding = 0; + if (fr_control_forwarding & 2) { + INIT_VNET_INET(curvnet); + V_ipforwarding = 0; + } SPL_NET(s); @@ -635,6 +651,7 @@ fr_info_t *fin; mb_t *m, **mpp; { + INIT_VNET_INET(curvnet); fr_info_t fnew; ip_t *ip, *oip; int hlen; @@ -652,11 +669,11 @@ ip->ip_tos = oip->ip_tos; ip->ip_id = fin->fin_ip->ip_id; #if (__FreeBSD_version > 460000) - ip->ip_off = path_mtu_discovery ? IP_DF : 0; + ip->ip_off = V_path_mtu_discovery ? IP_DF : 0; #else ip->ip_off = 0; #endif - ip->ip_ttl = ip_defttl; + ip->ip_ttl = V_ip_defttl; ip->ip_sum = 0; hlen = sizeof(*oip); break; ==== //depot/projects/vimage/src/sys/contrib/pf/net/pf.c#11 (text+ko) ==== @@ -38,6 +38,7 @@ #ifdef __FreeBSD__ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_vimage.h" #include __FBSDID("$FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.54 2008/05/09 23:02:55 julian Exp $"); @@ -91,6 +92,7 @@ #include #include #include +#include #else #include #endif @@ -118,6 +120,7 @@ #include #include #include +#include #ifndef __FreeBSD__ #include @@ -137,6 +140,7 @@ #ifdef __FreeBSD__ #include #include +#include #endif #endif /* INET6 */ @@ -1757,6 +1761,7 @@ u_int8_t flags, u_int16_t win, u_int16_t mss, u_int8_t ttl, int tag, u_int16_t rtag, struct ether_header *eh, struct ifnet *ifp) { + INIT_VNET_INET(curvnet); struct mbuf *m; int len, tlen; #ifdef INET @@ -1916,13 +1921,13 @@ h->ip_hl = sizeof(*h) >> 2; h->ip_tos = IPTOS_LOWDELAY; #ifdef __FreeBSD__ - h->ip_off = path_mtu_discovery ? IP_DF : 0; + h->ip_off = V_path_mtu_discovery ? IP_DF : 0; h->ip_len = len; #else h->ip_off = htons(ip_mtudisc ? IP_DF : 0); h->ip_len = htons(len); #endif - h->ip_ttl = ttl ? ttl : ip_defttl; + h->ip_ttl = ttl ? ttl : V_ip_defttl; h->ip_sum = 0; if (eh == NULL) { #ifdef __FreeBSD__ @@ -2920,6 +2925,7 @@ pf_socket_lookup(int direction, struct pf_pdesc *pd) #endif { + INIT_VNET_INET(curvnet); struct pf_addr *saddr, *daddr; u_int16_t sport, dport; #ifdef __FreeBSD__ @@ -2953,7 +2959,7 @@ sport = pd->hdr.tcp->th_sport; dport = pd->hdr.tcp->th_dport; #ifdef __FreeBSD__ - pi = &tcbinfo; + pi = &V_tcbinfo; #else tb = &tcbtable; #endif @@ -2964,7 +2970,7 @@ sport = pd->hdr.udp->uh_sport; dport = pd->hdr.udp->uh_dport; #ifdef __FreeBSD__ - pi = &udbinfo; + pi = &V_udbinfo; #else tb = &udbtable; #endif @@ -3099,10 +3105,11 @@ u_int16_t pf_get_mss(struct mbuf *m, int off, u_int16_t th_off, sa_family_t af) { + INIT_VNET_INET(curvnet); int hlen; u_int8_t hdr[60]; u_int8_t *opt, optlen; - u_int16_t mss = tcp_mssdflt; + u_int16_t mss = V_tcp_mssdflt; hlen = th_off << 2; /* hlen <= sizeof(hdr) */ if (hlen <= sizeof(struct tcphdr)) @@ -3138,6 +3145,7 @@ pf_calc_mss(struct pf_addr *addr, sa_family_t af, u_int16_t offer) { #ifdef INET + INIT_VNET_INET(curvnet); struct sockaddr_in *dst; struct route ro; #endif /* INET */ @@ -3147,7 +3155,7 @@ #endif /* INET6 */ struct rtentry *rt = NULL; int hlen = 0; /* make the compiler happy */ - u_int16_t mss = tcp_mssdflt; + u_int16_t mss = V_tcp_mssdflt; switch (af) { #ifdef INET @@ -3195,7 +3203,7 @@ if (rt && rt->rt_ifp) { mss = rt->rt_ifp->if_mtu - hlen - sizeof(struct tcphdr); - mss = max(tcp_mssdflt, mss); + mss = max(V_tcp_mssdflt, mss); RTFREE(rt); } mss = min(mss, offer); @@ -3240,6 +3248,7 @@ struct ifqueue *ifq) #endif { + INIT_VNET_INET(curvnet); struct pf_rule *nr = NULL; struct pf_addr *saddr = pd->src, *daddr = pd->dst; struct tcphdr *th = pd->hdr.tcp; @@ -3251,7 +3260,7 @@ u_short reason; int rewrite = 0; int tag = -1, rtableid = -1; - u_int16_t mss = tcp_mssdflt; + u_int16_t mss = V_tcp_mssdflt; int asd = 0; int match = 0; @@ -6078,6 +6087,7 @@ pf_route(struct mbuf **m, struct pf_rule *r, int dir, struct ifnet *oifp, struct pf_state *s, struct pf_pdesc *pd) { + INIT_VNET_INET(curvnet); struct mbuf *m0, *m1; struct route iproute; struct route *ro = NULL; @@ -6135,7 +6145,7 @@ if (r->rt == PF_FASTROUTE) { in_rtalloc(ro, 0); if (ro->ro_rt == 0) { - ipstat.ips_noroute++; + V_ipstat.ips_noroute++; goto bad; } @@ -6266,7 +6276,7 @@ if ((ifp->if_capabilities & IFCAP_CSUM_IPv4) && ifp->if_bridge == NULL) { m0->m_pkthdr.csum_flags |= M_IPV4_CSUM_OUT; - ipstat.ips_outhwcsum++; + V_ipstat.ips_outhwcsum++; } else { ip->ip_sum = 0; ip->ip_sum = in_cksum(m0, ip->ip_hl << 2); @@ -6285,7 +6295,7 @@ * Must be able to put at least 8 bytes per fragment. */ if (ip->ip_off & htons(IP_DF)) { - ipstat.ips_cantfrag++; + V_ipstat.ips_cantfrag++; if (r->rt != PF_DUPTO) { #ifdef __FreeBSD__ /* icmp_error() expects host byte ordering */ @@ -6342,7 +6352,7 @@ } if (error == 0) - ipstat.ips_fragmented++; + V_ipstat.ips_fragmented++; done: if (r->rt != PF_DUPTO) @@ -6615,18 +6625,30 @@ if (sum) { switch (p) { case IPPROTO_TCP: - tcpstat.tcps_rcvbadsum++; + { + INIT_VNET_INET(curvnet); + V_tcpstat.tcps_rcvbadsum++; break; + } case IPPROTO_UDP: - udpstat.udps_badsum++; + { + INIT_VNET_INET(curvnet); + V_udpstat.udps_badsum++; break; + } case IPPROTO_ICMP: - icmpstat.icps_checksum++; + { + INIT_VNET_INET(curvnet); + V_icmpstat.icps_checksum++; break; + } #ifdef INET6 case IPPROTO_ICMPV6: - icmp6stat.icp6s_checksum++; + { + INIT_VNET_INET6(curvnet); + V_icmp6stat.icp6s_checksum++; break; + } #endif /* INET6 */ } return (1); ==== //depot/projects/vimage/src/sys/contrib/pf/net/pf_if.c#7 (text+ko) ==== @@ -35,6 +35,7 @@ #if defined(__FreeBSD__) #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_vimage.h" #include __FBSDID("$FreeBSD: src/sys/contrib/pf/net/pf_if.c,v 1.15 2008/03/29 00:24:36 mlaier Exp $"); @@ -54,9 +55,11 @@ #include #endif #include +#include #include #include +#include #include #include @@ -109,8 +112,10 @@ void pfi_detach_group_event(void * __unused, struct ifg_group *); void pfi_ifaddr_event(void * __unused, struct ifnet *); +#ifndef VIMAGE extern struct ifgrouphead ifg_head; #endif +#endif RB_PROTOTYPE(pfi_ifhead, pfi_kif, pfik_tree, pfi_if_compare); RB_GENERATE(pfi_ifhead, pfi_kif, pfik_tree, pfi_if_compare); @@ -121,6 +126,7 @@ void pfi_initialize(void) { + INIT_VNET_NET(curvnet); if (pfi_all != NULL) /* already initialized */ return; @@ -141,9 +147,9 @@ struct ifnet *ifp; IFNET_RLOCK(); - TAILQ_FOREACH(ifg, &ifg_head, ifg_next) + TAILQ_FOREACH(ifg, &V_ifg_head, ifg_next) pfi_attach_ifgroup(ifg); - TAILQ_FOREACH(ifp, &ifnet, if_link) + TAILQ_FOREACH(ifp, &V_ifnet, if_link) pfi_attach_ifnet(ifp); IFNET_RUNLOCK(); ==== //depot/projects/vimage/src/sys/contrib/pf/net/pf_ioctl.c#12 (text+ko) ==== @@ -38,6 +38,7 @@ #ifdef __FreeBSD__ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_vimage.h" #include __FBSDID("$FreeBSD: src/sys/contrib/pf/net/pf_ioctl.c,v 1.33 2008/06/05 19:30:20 mlaier Exp $"); @@ -96,11 +97,14 @@ #ifndef __FreeBSD__ #include #include +#else +#include #endif #include #include #include +#include #include #include @@ -3703,6 +3707,7 @@ pf_check6_in(void *arg, struct mbuf **m, struct ifnet *ifp, int dir, struct inpcb *inp) { + INIT_VNET_NET(curvnet); /* * IPv6 is not affected by ip_len/ip_off byte order changes. */ @@ -3713,7 +3718,7 @@ * order to support scoped addresses. In order to support stateful * filtering we have change this to lo0 as it is the case in IPv4. */ - chk = pf_test6(PF_IN, (*m)->m_flags & M_LOOP ? &loif[0] : ifp, m, + chk = pf_test6(PF_IN, (*m)->m_flags & M_LOOP ? &V_loif[0] : ifp, m, NULL, inp); if (chk && *m) { m_freem(*m); ==== //depot/projects/vimage/src/sys/dev/ie/if_ie.c#5 (text+ko) ==== ==== //depot/projects/vimage/src/sys/dev/syscons/daemon/daemon_saver.c#3 (text+ko) ==== @@ -28,6 +28,8 @@ * $FreeBSD: src/sys/dev/syscons/daemon/daemon_saver.c,v 1.24 2007/12/29 23:26:57 wkoszek Exp $ */ +#include "opt_vimage.h" + #include #include #include @@ -36,6 +38,7 @@ #include #include #include +#include #include @@ -350,10 +353,10 @@ static int daemon_init(video_adapter_t *adp) { - messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 + + messagelen = strlen(G_hostname) + 3 + strlen(ostype) + 1 + strlen(osrelease); message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK); - sprintf(message, "%s - %s %s", hostname, ostype, osrelease); + sprintf(message, "%s - %s %s", G_hostname, ostype, osrelease); blanked = 0; switch (adp->va_mode) { case M_PC98_80x25: ==== //depot/projects/vimage/src/sys/i386/ibcs2/ibcs2_socksys.c#2 (text+ko) ==== @@ -23,6 +23,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/i386/ibcs2/ibcs2_socksys.c,v 1.22 2006/11/06 13:41:59 rwatson Exp $"); @@ -32,6 +34,7 @@ #include #include #include +#include #include #include @@ -171,15 +174,16 @@ struct thread *td; struct setipdomainname_args *uap; { + INIT_VPROCG(TD_TO_VPROCG(td)); char hname[MAXHOSTNAMELEN], *ptr; int error, sctl[2], hlen; /* W/out a hostname a domain-name is nonsense */ - if ( strlen(hostname) == 0 ) + if ( strlen(V_hostname) == 0 ) return EINVAL; /* Get the host's unqualified name (strip off the domain) */ - snprintf(hname, sizeof(hname), "%s", hostname); + snprintf(hname, sizeof(hname), "%s", V_hostname); ptr = index(hname, '.'); if ( ptr != NULL ) { ptr++; ==== //depot/projects/vimage/src/sys/kern/kern_poll.c#6 (text+ko) ==== @@ -25,6 +25,8 @@ * SUCH DAMAGE. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/kern/kern_poll.c,v 1.32 2008/03/16 10:58:05 rwatson Exp $"); @@ -37,9 +39,11 @@ #include #include #include +#include #include /* for IFF_* flags */ #include /* for NETISR_POLL */ +#include /* for ifnet pointer */ #include #include @@ -522,6 +526,7 @@ static int poll_switch(SYSCTL_HANDLER_ARGS) { + INIT_VNET_NET(curvnet); struct ifnet *ifp; int error; int val = polling; @@ -539,7 +544,7 @@ polling = val; IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) { + TAILQ_FOREACH(ifp, &V_ifnet, if_link) { if (ifp->if_capabilities & IFCAP_POLLING) { struct ifreq ifr; ==== //depot/projects/vimage/src/sys/net/bridgestp.c#9 (text+ko) ==== @@ -34,6 +34,8 @@ * ISO/IEC 802.1D-2004, June 9, 2004. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/net/bridgestp.c,v 1.40 2007/12/09 20:47:12 thompsa Exp $"); @@ -49,12 +51,14 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include @@ -2016,6 +2020,7 @@ void bstp_reinit(struct bstp_state *bs) { + INIT_VNET_NET(curvnet); struct bstp_port *bp; struct ifnet *ifp, *mif; u_char *e_addr; @@ -2031,7 +2036,7 @@ * value. */ IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) { + TAILQ_FOREACH(ifp, &V_ifnet, if_link) { if (ifp->if_type != IFT_ETHER) continue; ==== //depot/projects/vimage/src/sys/net/if_bridge.c#12 (text+ko) ==== @@ -80,6 +80,7 @@ #include "opt_inet.h" #include "opt_inet6.h" #include "opt_carp.h" +#include "opt_vimage.h" #include #include @@ -100,6 +101,7 @@ #include #include #include +#include #include #include @@ -113,10 +115,12 @@ #include #include #include +#include #include #ifdef INET6 #include #include +#include #endif #ifdef DEV_CARP #include @@ -127,10 +131,12 @@ #include #include #include +#include #include #include #include +#include /* * Size of the route hash table. Must be a power of two. @@ -2977,9 +2983,10 @@ } if (IPFW_LOADED && pfil_ipfw != 0 && dir == PFIL_OUT && ifp != NULL) { + INIT_VNET_IPFW(curvnet); error = -1; args.rule = ip_dn_claim_rule(*mp); - if (args.rule != NULL && fw_one_pass) + if (args.rule != NULL && V_fw_one_pass) goto ipfwpass; /* packet already partially processed */ args.m = *mp; @@ -3161,6 +3168,7 @@ static int bridge_ip_checkbasic(struct mbuf **mp) { + INIT_VNET_INET(curvnet); struct mbuf *m = *mp; struct ip *ip; int len, hlen; @@ -3173,12 +3181,12 @@ if ((m = m_copyup(m, sizeof(struct ip), (max_linkhdr + 3) & ~3)) == NULL) { /* XXXJRT new stat, please */ - ipstat.ips_toosmall++; + V_ipstat.ips_toosmall++; goto bad; } } else if (__predict_false(m->m_len < sizeof (struct ip))) { if ((m = m_pullup(m, sizeof (struct ip))) == NULL) { - ipstat.ips_toosmall++; + V_ipstat.ips_toosmall++; goto bad; } } @@ -3186,17 +3194,17 @@ if (ip == NULL) goto bad; if (ip->ip_v != IPVERSION) { - ipstat.ips_badvers++; + V_ipstat.ips_badvers++; goto bad; } hlen = ip->ip_hl << 2; if (hlen < sizeof(struct ip)) { /* minimum header length */ - ipstat.ips_badhlen++; + V_ipstat.ips_badhlen++; goto bad; } if (hlen > m->m_len) { if ((m = m_pullup(m, hlen)) == 0) { - ipstat.ips_badhlen++; + V_ipstat.ips_badhlen++; goto bad; } ip = mtod(m, struct ip *); @@ -3213,7 +3221,7 @@ } } if (sum) { - ipstat.ips_badsum++; + V_ipstat.ips_badsum++; goto bad; } @@ -3224,7 +3232,7 @@ * Check for additional length bogosity */ if (len < hlen) { - ipstat.ips_badlen++; + V_ipstat.ips_badlen++; goto bad; } @@ -3234,7 +3242,7 @@ * Drop packet if shorter than we expect. */ if (m->m_pkthdr.len < len) { - ipstat.ips_tooshort++; + V_ipstat.ips_tooshort++; goto bad; } @@ -3256,6 +3264,7 @@ static int bridge_ip6_checkbasic(struct mbuf **mp) { + INIT_VNET_INET6(curvnet); struct mbuf *m = *mp; struct ip6_hdr *ip6; @@ -3270,14 +3279,14 @@ if ((m = m_copyup(m, sizeof(struct ip6_hdr), (max_linkhdr + 3) & ~3)) == NULL) { /* XXXJRT new stat, please */ - ip6stat.ip6s_toosmall++; + V_ip6stat.ip6s_toosmall++; in6_ifstat_inc(inifp, ifs6_in_hdrerr); goto bad; } } else if (__predict_false(m->m_len < sizeof(struct ip6_hdr))) { struct ifnet *inifp = m->m_pkthdr.rcvif; if ((m = m_pullup(m, sizeof(struct ip6_hdr))) == NULL) { - ip6stat.ip6s_toosmall++; + V_ip6stat.ip6s_toosmall++; in6_ifstat_inc(inifp, ifs6_in_hdrerr); goto bad; } @@ -3286,7 +3295,7 @@ ip6 = mtod(m, struct ip6_hdr *); if ((ip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION) { - ip6stat.ip6s_badvers++; + V_ip6stat.ip6s_badvers++; in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_hdrerr); goto bad; } @@ -3346,8 +3355,10 @@ m_freem(m); } - if (error == 0) - ipstat.ips_fragmented++; + if (error == 0) { + INIT_VNET_INET(curvnet); + V_ipstat.ips_fragmented++; + } return (error); ==== //depot/projects/vimage/src/sys/net/if_ef.c#3 (text+ko) ==== @@ -29,6 +29,7 @@ #include "opt_inet.h" #include "opt_ipx.h" #include "opt_ef.h" +#include "opt_vimage.h" #include #include @@ -39,6 +40,7 @@ #include #include #include +#include #include #include @@ -49,6 +51,7 @@ #include #include #include +#include #ifdef INET #include @@ -489,35 +492,40 @@ int error = 0, d; IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) { - if (ifp->if_type != IFT_ETHER) continue; - EFDEBUG("Found interface %s\n", ifp->if_xname); - efl = (struct ef_link*)malloc(sizeof(struct ef_link), - M_IFADDR, M_WAITOK | M_ZERO); - if (efl == NULL) { - error = ENOMEM; - break; - } + { + VNET_ITERLOOP_BEGIN_QUIET(); + INIT_VNET_NET(curvnet); + TAILQ_FOREACH(ifp, &V_ifnet, if_link) { + if (ifp->if_type != IFT_ETHER) continue; + EFDEBUG("Found interface %s\n", ifp->if_xname); + efl = (struct ef_link*)malloc(sizeof(struct ef_link), + M_IFADDR, M_WAITOK | M_ZERO); + if (efl == NULL) { + error = ENOMEM; + break; + } - efl->el_ifp = ifp; >>> TRUNCATED FOR MAIL (1000 lines) <<< From julian at FreeBSD.org Fri Jul 4 08:36:29 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Fri Jul 4 08:36:36 2008 Subject: PERFORCE change 144603 for review Message-ID: <200807040836.m648aSre063240@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144603 Change 144603 by julian@julian_trafmon1 on 2008/07/04 08:36:03 IFC a bunch of corrections from the vimage branch Affected files ... .. //depot/projects/vimage-devel/src/sys/compat/linux/linux_socket.c#2 integrate .. //depot/projects/vimage-devel/src/sys/compat/svr4/svr4_sockio.c#2 integrate .. //depot/projects/vimage-devel/src/sys/compat/svr4/svr4_stat.c#2 integrate .. //depot/projects/vimage-devel/src/sys/contrib/altq/altq/altq_subr.c#2 integrate .. //depot/projects/vimage-devel/src/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#2 integrate .. //depot/projects/vimage-devel/src/sys/contrib/pf/net/pf.c#2 integrate .. //depot/projects/vimage-devel/src/sys/contrib/pf/net/pf_if.c#2 integrate .. //depot/projects/vimage-devel/src/sys/contrib/pf/net/pf_ioctl.c#2 integrate .. //depot/projects/vimage-devel/src/sys/dev/ie/if_ie.c#2 integrate .. //depot/projects/vimage-devel/src/sys/dev/syscons/daemon/daemon_saver.c#2 integrate .. //depot/projects/vimage-devel/src/sys/i386/ibcs2/ibcs2_socksys.c#2 integrate .. //depot/projects/vimage-devel/src/sys/kern/kern_poll.c#2 integrate .. //depot/projects/vimage-devel/src/sys/net/bridgestp.c#2 integrate .. //depot/projects/vimage-devel/src/sys/net/if_bridge.c#2 integrate .. //depot/projects/vimage-devel/src/sys/net/if_ef.c#2 integrate .. //depot/projects/vimage-devel/src/sys/netgraph/atm/ng_atm.c#2 integrate .. //depot/projects/vimage-devel/src/sys/netipsec/xform_ah.c#3 integrate .. //depot/projects/vimage-devel/src/sys/netipsec/xform_esp.c#3 integrate .. //depot/projects/vimage-devel/src/sys/nfsclient/bootp_subr.c#2 integrate .. //depot/projects/vimage-devel/src/sys/sys/vimage.h#9 edit Differences ... ==== //depot/projects/vimage-devel/src/sys/compat/linux/linux_socket.c#2 (text+ko) ==== @@ -32,6 +32,7 @@ /* XXX we use functions that might not exist. */ #include "opt_compat.h" #include "opt_inet6.h" +#include "opt_vimage.h" #include #include @@ -50,6 +51,9 @@ #include #include #include +#include + +#include #include #include @@ -57,6 +61,7 @@ #ifdef INET6 #include #include +#include #endif #ifdef COMPAT_LINUX32 @@ -545,6 +550,10 @@ static int linux_socket(struct thread *td, struct linux_socket_args *args) { +#ifndef KLD_MODULE + INIT_VNET_INET6(curvnet); +#endif + struct linux_socket_args linux_args; struct socket_args /* { int domain; @@ -588,7 +597,7 @@ * XXX: Avoid undefined symbol error with an IPv4 only * kernel. */ - && ip6_v6only + && V_ip6_v6only #endif ) { int v6only; ==== //depot/projects/vimage-devel/src/sys/compat/svr4/svr4_sockio.c#2 (text+ko) ==== @@ -26,6 +26,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_sockio.c,v 1.18 2006/08/04 21:15:09 brooks Exp $"); @@ -36,9 +38,11 @@ #include #include #include +#include + #include +#include - #include #include #include @@ -87,6 +91,7 @@ switch (cmd) { case SVR4_SIOCGIFNUM: { + INIT_VNET_NET(curvnet); struct ifnet *ifp; struct ifaddr *ifa; int ifnum = 0; @@ -103,7 +108,7 @@ * entry per physical interface? */ IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) + TAILQ_FOREACH(ifp, &V_ifnet, if_link) if (TAILQ_EMPTY(&ifp->if_addrhead)) ifnum++; else ==== //depot/projects/vimage-devel/src/sys/compat/svr4/svr4_stat.c#2 (text+ko) ==== @@ -26,6 +26,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_stat.c,v 1.23 2006/09/02 08:18:22 rwatson Exp $"); @@ -43,6 +45,7 @@ #include #include #include +#include #include @@ -411,6 +414,8 @@ struct thread *td; struct svr4_sys_systeminfo_args *uap; { + INIT_VPROCG(TD_TO_VPROCG(td)); + char *str = NULL; int error = 0; register_t *retval = td->td_retval; @@ -426,7 +431,7 @@ break; case SVR4_SI_HOSTNAME: - str = hostname; + str = V_hostname; break; case SVR4_SI_RELEASE: @@ -454,7 +459,7 @@ break; case SVR4_SI_SRPC_DOMAIN: - str = domainname; + str = V_domainname; break; case SVR4_SI_PLATFORM: ==== //depot/projects/vimage-devel/src/sys/contrib/altq/altq/altq_subr.c#2 (text+ko) ==== @@ -29,11 +29,10 @@ #if defined(__FreeBSD__) || defined(__NetBSD__) #include "opt_altq.h" -#if (__FreeBSD__ != 2) -#include "opt_inet.h" #ifdef __FreeBSD__ #include "opt_inet6.h" -#endif +#include "opt_inet.h" +#include "opt_vimage.h" #endif #endif /* __FreeBSD__ || __NetBSD__ */ @@ -49,10 +48,12 @@ #include #include #include +#include #include #include #include +#include #include #include @@ -460,7 +461,9 @@ #if defined(__FreeBSD__) && (__FreeBSD_version >= 500000) IFNET_RLOCK(); #endif - for (ifp = TAILQ_FIRST(&ifnet); ifp; ifp = TAILQ_NEXT(ifp, if_list)) { + VNET_ITERLOOP_BEGIN(); + INIT_VNET_NET(curvnet); + for (ifp = TAILQ_FIRST(&V_ifnet); ifp; ifp = TAILQ_NEXT(ifp, if_list)) { /* read from if_snd unlocked */ if (!TBR_IS_ENABLED(&ifp->if_snd)) continue; @@ -468,6 +471,7 @@ if (!IFQ_IS_EMPTY(&ifp->if_snd) && ifp->if_start != NULL) (*ifp->if_start)(ifp); } + VNET_ITERLOOP_END() #if defined(__FreeBSD__) && (__FreeBSD_version >= 500000) IFNET_RUNLOCK(); #endif ==== //depot/projects/vimage-devel/src/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#2 (text+ko) ==== @@ -25,6 +25,9 @@ # include "opt_random_ip_id.h" #endif #include +#if __FreeBSD_version > 800000 +# include "opt_vimage.h" +#endif #if defined(__FreeBSD__) && !defined(__FreeBSD_version) # if defined(IPFILTER_LKM) # ifndef __FreeBSD_cc_version @@ -115,8 +118,17 @@ #endif extern int ip_optcopy __P((struct ip *, struct ip *)); +#if __FreeBSD_version > 800000 +# include +# include +#endif #if (__FreeBSD_version > 460000) +#ifndef VIMAGE extern int path_mtu_discovery; +#define V_path_mtu_discovery path_mtu_discovery +#define V_ip_defttl ip_defttl +#define V_ipforwarding ipforwarding +#endif #endif # ifdef IPFILTER_M_IPFILTER @@ -233,8 +245,10 @@ bzero((char *)frcache, sizeof(frcache)); fr_running = 1; - if (fr_control_forwarding & 1) - ipforwarding = 1; + if (fr_control_forwarding & 1) { + INIT_VNET_INET(curvnet); + V_ipforwarding = 1; + } SPL_X(s); #if (__FreeBSD_version >= 300000) @@ -256,8 +270,10 @@ #ifdef USE_SPL int s; #endif - if (fr_control_forwarding & 2) - ipforwarding = 0; + if (fr_control_forwarding & 2) { + INIT_VNET_INET(curvnet); + V_ipforwarding = 0; + } SPL_NET(s); @@ -635,6 +651,7 @@ fr_info_t *fin; mb_t *m, **mpp; { + INIT_VNET_INET(curvnet); fr_info_t fnew; ip_t *ip, *oip; int hlen; @@ -652,11 +669,11 @@ ip->ip_tos = oip->ip_tos; ip->ip_id = fin->fin_ip->ip_id; #if (__FreeBSD_version > 460000) - ip->ip_off = path_mtu_discovery ? IP_DF : 0; + ip->ip_off = V_path_mtu_discovery ? IP_DF : 0; #else ip->ip_off = 0; #endif - ip->ip_ttl = ip_defttl; + ip->ip_ttl = V_ip_defttl; ip->ip_sum = 0; hlen = sizeof(*oip); break; ==== //depot/projects/vimage-devel/src/sys/contrib/pf/net/pf.c#2 (text+ko) ==== @@ -38,6 +38,7 @@ #ifdef __FreeBSD__ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_vimage.h" #include __FBSDID("$FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.54 2008/05/09 23:02:55 julian Exp $"); @@ -91,6 +92,7 @@ #include #include #include +#include #else #include #endif @@ -118,6 +120,7 @@ #include #include #include +#include #ifndef __FreeBSD__ #include @@ -137,6 +140,7 @@ #ifdef __FreeBSD__ #include #include +#include #endif #endif /* INET6 */ @@ -1757,6 +1761,7 @@ u_int8_t flags, u_int16_t win, u_int16_t mss, u_int8_t ttl, int tag, u_int16_t rtag, struct ether_header *eh, struct ifnet *ifp) { + INIT_VNET_INET(curvnet); struct mbuf *m; int len, tlen; #ifdef INET @@ -1916,13 +1921,13 @@ h->ip_hl = sizeof(*h) >> 2; h->ip_tos = IPTOS_LOWDELAY; #ifdef __FreeBSD__ - h->ip_off = path_mtu_discovery ? IP_DF : 0; + h->ip_off = V_path_mtu_discovery ? IP_DF : 0; h->ip_len = len; #else h->ip_off = htons(ip_mtudisc ? IP_DF : 0); h->ip_len = htons(len); #endif - h->ip_ttl = ttl ? ttl : ip_defttl; + h->ip_ttl = ttl ? ttl : V_ip_defttl; h->ip_sum = 0; if (eh == NULL) { #ifdef __FreeBSD__ @@ -2920,6 +2925,7 @@ pf_socket_lookup(int direction, struct pf_pdesc *pd) #endif { + INIT_VNET_INET(curvnet); struct pf_addr *saddr, *daddr; u_int16_t sport, dport; #ifdef __FreeBSD__ @@ -2953,7 +2959,7 @@ sport = pd->hdr.tcp->th_sport; dport = pd->hdr.tcp->th_dport; #ifdef __FreeBSD__ - pi = &tcbinfo; + pi = &V_tcbinfo; #else tb = &tcbtable; #endif @@ -2964,7 +2970,7 @@ sport = pd->hdr.udp->uh_sport; dport = pd->hdr.udp->uh_dport; #ifdef __FreeBSD__ - pi = &udbinfo; + pi = &V_udbinfo; #else tb = &udbtable; #endif @@ -3099,10 +3105,11 @@ u_int16_t pf_get_mss(struct mbuf *m, int off, u_int16_t th_off, sa_family_t af) { + INIT_VNET_INET(curvnet); int hlen; u_int8_t hdr[60]; u_int8_t *opt, optlen; - u_int16_t mss = tcp_mssdflt; + u_int16_t mss = V_tcp_mssdflt; hlen = th_off << 2; /* hlen <= sizeof(hdr) */ if (hlen <= sizeof(struct tcphdr)) @@ -3138,6 +3145,7 @@ pf_calc_mss(struct pf_addr *addr, sa_family_t af, u_int16_t offer) { #ifdef INET + INIT_VNET_INET(curvnet); struct sockaddr_in *dst; struct route ro; #endif /* INET */ @@ -3147,7 +3155,7 @@ #endif /* INET6 */ struct rtentry *rt = NULL; int hlen = 0; /* make the compiler happy */ - u_int16_t mss = tcp_mssdflt; + u_int16_t mss = V_tcp_mssdflt; switch (af) { #ifdef INET @@ -3195,7 +3203,7 @@ if (rt && rt->rt_ifp) { mss = rt->rt_ifp->if_mtu - hlen - sizeof(struct tcphdr); - mss = max(tcp_mssdflt, mss); + mss = max(V_tcp_mssdflt, mss); RTFREE(rt); } mss = min(mss, offer); @@ -3240,6 +3248,7 @@ struct ifqueue *ifq) #endif { + INIT_VNET_INET(curvnet); struct pf_rule *nr = NULL; struct pf_addr *saddr = pd->src, *daddr = pd->dst; struct tcphdr *th = pd->hdr.tcp; @@ -3251,7 +3260,7 @@ u_short reason; int rewrite = 0; int tag = -1, rtableid = -1; - u_int16_t mss = tcp_mssdflt; + u_int16_t mss = V_tcp_mssdflt; int asd = 0; int match = 0; @@ -6078,6 +6087,7 @@ pf_route(struct mbuf **m, struct pf_rule *r, int dir, struct ifnet *oifp, struct pf_state *s, struct pf_pdesc *pd) { + INIT_VNET_INET(curvnet); struct mbuf *m0, *m1; struct route iproute; struct route *ro = NULL; @@ -6135,7 +6145,7 @@ if (r->rt == PF_FASTROUTE) { in_rtalloc(ro, 0); if (ro->ro_rt == 0) { - ipstat.ips_noroute++; + V_ipstat.ips_noroute++; goto bad; } @@ -6266,7 +6276,7 @@ if ((ifp->if_capabilities & IFCAP_CSUM_IPv4) && ifp->if_bridge == NULL) { m0->m_pkthdr.csum_flags |= M_IPV4_CSUM_OUT; - ipstat.ips_outhwcsum++; + V_ipstat.ips_outhwcsum++; } else { ip->ip_sum = 0; ip->ip_sum = in_cksum(m0, ip->ip_hl << 2); @@ -6285,7 +6295,7 @@ * Must be able to put at least 8 bytes per fragment. */ if (ip->ip_off & htons(IP_DF)) { - ipstat.ips_cantfrag++; + V_ipstat.ips_cantfrag++; if (r->rt != PF_DUPTO) { #ifdef __FreeBSD__ /* icmp_error() expects host byte ordering */ @@ -6342,7 +6352,7 @@ } if (error == 0) - ipstat.ips_fragmented++; + V_ipstat.ips_fragmented++; done: if (r->rt != PF_DUPTO) @@ -6615,18 +6625,30 @@ if (sum) { switch (p) { case IPPROTO_TCP: - tcpstat.tcps_rcvbadsum++; + { + INIT_VNET_INET(curvnet); + V_tcpstat.tcps_rcvbadsum++; break; + } case IPPROTO_UDP: - udpstat.udps_badsum++; + { + INIT_VNET_INET(curvnet); + V_udpstat.udps_badsum++; break; + } case IPPROTO_ICMP: - icmpstat.icps_checksum++; + { + INIT_VNET_INET(curvnet); + V_icmpstat.icps_checksum++; break; + } #ifdef INET6 case IPPROTO_ICMPV6: - icmp6stat.icp6s_checksum++; + { + INIT_VNET_INET6(curvnet); + V_icmp6stat.icp6s_checksum++; break; + } #endif /* INET6 */ } return (1); ==== //depot/projects/vimage-devel/src/sys/contrib/pf/net/pf_if.c#2 (text+ko) ==== @@ -35,6 +35,7 @@ #if defined(__FreeBSD__) #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_vimage.h" #include __FBSDID("$FreeBSD: src/sys/contrib/pf/net/pf_if.c,v 1.15 2008/03/29 00:24:36 mlaier Exp $"); @@ -54,9 +55,11 @@ #include #endif #include +#include #include #include +#include #include #include @@ -109,8 +112,10 @@ void pfi_detach_group_event(void * __unused, struct ifg_group *); void pfi_ifaddr_event(void * __unused, struct ifnet *); +#ifndef VIMAGE extern struct ifgrouphead ifg_head; #endif +#endif RB_PROTOTYPE(pfi_ifhead, pfi_kif, pfik_tree, pfi_if_compare); RB_GENERATE(pfi_ifhead, pfi_kif, pfik_tree, pfi_if_compare); @@ -121,6 +126,7 @@ void pfi_initialize(void) { + INIT_VNET_NET(curvnet); if (pfi_all != NULL) /* already initialized */ return; @@ -141,9 +147,9 @@ struct ifnet *ifp; IFNET_RLOCK(); - TAILQ_FOREACH(ifg, &ifg_head, ifg_next) + TAILQ_FOREACH(ifg, &V_ifg_head, ifg_next) pfi_attach_ifgroup(ifg); - TAILQ_FOREACH(ifp, &ifnet, if_link) + TAILQ_FOREACH(ifp, &V_ifnet, if_link) pfi_attach_ifnet(ifp); IFNET_RUNLOCK(); ==== //depot/projects/vimage-devel/src/sys/contrib/pf/net/pf_ioctl.c#2 (text+ko) ==== @@ -38,6 +38,7 @@ #ifdef __FreeBSD__ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_vimage.h" #include __FBSDID("$FreeBSD: src/sys/contrib/pf/net/pf_ioctl.c,v 1.33 2008/06/05 19:30:20 mlaier Exp $"); @@ -96,11 +97,14 @@ #ifndef __FreeBSD__ #include #include +#else +#include #endif #include #include #include +#include #include #include @@ -3703,6 +3707,7 @@ pf_check6_in(void *arg, struct mbuf **m, struct ifnet *ifp, int dir, struct inpcb *inp) { + INIT_VNET_NET(curvnet); /* * IPv6 is not affected by ip_len/ip_off byte order changes. */ @@ -3713,7 +3718,7 @@ * order to support scoped addresses. In order to support stateful * filtering we have change this to lo0 as it is the case in IPv4. */ - chk = pf_test6(PF_IN, (*m)->m_flags & M_LOOP ? &loif[0] : ifp, m, + chk = pf_test6(PF_IN, (*m)->m_flags & M_LOOP ? &V_loif[0] : ifp, m, NULL, inp); if (chk && *m) { m_freem(*m); ==== //depot/projects/vimage-devel/src/sys/dev/ie/if_ie.c#2 (text+ko) ==== ==== //depot/projects/vimage-devel/src/sys/dev/syscons/daemon/daemon_saver.c#2 (text+ko) ==== @@ -28,6 +28,8 @@ * $FreeBSD: src/sys/dev/syscons/daemon/daemon_saver.c,v 1.24 2007/12/29 23:26:57 wkoszek Exp $ */ +#include "opt_vimage.h" + #include #include #include @@ -36,6 +38,7 @@ #include #include #include +#include #include @@ -350,10 +353,10 @@ static int daemon_init(video_adapter_t *adp) { - messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 + + messagelen = strlen(G_hostname) + 3 + strlen(ostype) + 1 + strlen(osrelease); message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK); - sprintf(message, "%s - %s %s", hostname, ostype, osrelease); + sprintf(message, "%s - %s %s", G_hostname, ostype, osrelease); blanked = 0; switch (adp->va_mode) { case M_PC98_80x25: ==== //depot/projects/vimage-devel/src/sys/i386/ibcs2/ibcs2_socksys.c#2 (text+ko) ==== @@ -23,6 +23,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/i386/ibcs2/ibcs2_socksys.c,v 1.22 2006/11/06 13:41:59 rwatson Exp $"); @@ -32,6 +34,7 @@ #include #include #include +#include #include #include @@ -171,15 +174,16 @@ struct thread *td; struct setipdomainname_args *uap; { + INIT_VPROCG(TD_TO_VPROCG(td)); char hname[MAXHOSTNAMELEN], *ptr; int error, sctl[2], hlen; /* W/out a hostname a domain-name is nonsense */ - if ( strlen(hostname) == 0 ) + if ( strlen(V_hostname) == 0 ) return EINVAL; /* Get the host's unqualified name (strip off the domain) */ - snprintf(hname, sizeof(hname), "%s", hostname); + snprintf(hname, sizeof(hname), "%s", V_hostname); ptr = index(hname, '.'); if ( ptr != NULL ) { ptr++; ==== //depot/projects/vimage-devel/src/sys/kern/kern_poll.c#2 (text+ko) ==== @@ -25,6 +25,8 @@ * SUCH DAMAGE. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/kern/kern_poll.c,v 1.32 2008/03/16 10:58:05 rwatson Exp $"); @@ -37,9 +39,11 @@ #include #include #include +#include #include /* for IFF_* flags */ #include /* for NETISR_POLL */ +#include /* for ifnet pointer */ #include #include @@ -522,6 +526,7 @@ static int poll_switch(SYSCTL_HANDLER_ARGS) { + INIT_VNET_NET(curvnet); struct ifnet *ifp; int error; int val = polling; @@ -539,7 +544,7 @@ polling = val; IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) { + TAILQ_FOREACH(ifp, &V_ifnet, if_link) { if (ifp->if_capabilities & IFCAP_POLLING) { struct ifreq ifr; ==== //depot/projects/vimage-devel/src/sys/net/bridgestp.c#2 (text+ko) ==== @@ -34,6 +34,8 @@ * ISO/IEC 802.1D-2004, June 9, 2004. */ +#include "opt_vimage.h" + #include __FBSDID("$FreeBSD: src/sys/net/bridgestp.c,v 1.40 2007/12/09 20:47:12 thompsa Exp $"); @@ -49,12 +51,14 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include @@ -2016,6 +2020,7 @@ void bstp_reinit(struct bstp_state *bs) { + INIT_VNET_NET(curvnet); struct bstp_port *bp; struct ifnet *ifp, *mif; u_char *e_addr; @@ -2031,7 +2036,7 @@ * value. */ IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) { + TAILQ_FOREACH(ifp, &V_ifnet, if_link) { if (ifp->if_type != IFT_ETHER) continue; ==== //depot/projects/vimage-devel/src/sys/net/if_bridge.c#2 (text+ko) ==== @@ -80,6 +80,7 @@ #include "opt_inet.h" #include "opt_inet6.h" #include "opt_carp.h" +#include "opt_vimage.h" #include #include @@ -100,6 +101,7 @@ #include #include #include +#include #include #include @@ -113,10 +115,12 @@ #include #include #include +#include #include #ifdef INET6 #include #include +#include #endif #ifdef DEV_CARP #include @@ -127,10 +131,12 @@ #include #include #include +#include #include #include #include +#include /* * Size of the route hash table. Must be a power of two. @@ -2977,9 +2983,10 @@ } if (IPFW_LOADED && pfil_ipfw != 0 && dir == PFIL_OUT && ifp != NULL) { + INIT_VNET_IPFW(curvnet); error = -1; args.rule = ip_dn_claim_rule(*mp); - if (args.rule != NULL && fw_one_pass) + if (args.rule != NULL && V_fw_one_pass) goto ipfwpass; /* packet already partially processed */ args.m = *mp; @@ -3161,6 +3168,7 @@ static int bridge_ip_checkbasic(struct mbuf **mp) { + INIT_VNET_INET(curvnet); struct mbuf *m = *mp; struct ip *ip; int len, hlen; @@ -3173,12 +3181,12 @@ if ((m = m_copyup(m, sizeof(struct ip), (max_linkhdr + 3) & ~3)) == NULL) { /* XXXJRT new stat, please */ - ipstat.ips_toosmall++; + V_ipstat.ips_toosmall++; goto bad; } } else if (__predict_false(m->m_len < sizeof (struct ip))) { if ((m = m_pullup(m, sizeof (struct ip))) == NULL) { - ipstat.ips_toosmall++; + V_ipstat.ips_toosmall++; goto bad; } } @@ -3186,17 +3194,17 @@ if (ip == NULL) goto bad; if (ip->ip_v != IPVERSION) { - ipstat.ips_badvers++; + V_ipstat.ips_badvers++; goto bad; } hlen = ip->ip_hl << 2; if (hlen < sizeof(struct ip)) { /* minimum header length */ - ipstat.ips_badhlen++; + V_ipstat.ips_badhlen++; goto bad; } if (hlen > m->m_len) { if ((m = m_pullup(m, hlen)) == 0) { - ipstat.ips_badhlen++; + V_ipstat.ips_badhlen++; goto bad; } ip = mtod(m, struct ip *); @@ -3213,7 +3221,7 @@ } } if (sum) { - ipstat.ips_badsum++; + V_ipstat.ips_badsum++; goto bad; } @@ -3224,7 +3232,7 @@ * Check for additional length bogosity */ if (len < hlen) { - ipstat.ips_badlen++; + V_ipstat.ips_badlen++; goto bad; } @@ -3234,7 +3242,7 @@ * Drop packet if shorter than we expect. */ if (m->m_pkthdr.len < len) { - ipstat.ips_tooshort++; + V_ipstat.ips_tooshort++; goto bad; } @@ -3256,6 +3264,7 @@ static int bridge_ip6_checkbasic(struct mbuf **mp) { + INIT_VNET_INET6(curvnet); struct mbuf *m = *mp; struct ip6_hdr *ip6; @@ -3270,14 +3279,14 @@ if ((m = m_copyup(m, sizeof(struct ip6_hdr), (max_linkhdr + 3) & ~3)) == NULL) { /* XXXJRT new stat, please */ - ip6stat.ip6s_toosmall++; + V_ip6stat.ip6s_toosmall++; in6_ifstat_inc(inifp, ifs6_in_hdrerr); goto bad; } } else if (__predict_false(m->m_len < sizeof(struct ip6_hdr))) { struct ifnet *inifp = m->m_pkthdr.rcvif; if ((m = m_pullup(m, sizeof(struct ip6_hdr))) == NULL) { - ip6stat.ip6s_toosmall++; + V_ip6stat.ip6s_toosmall++; in6_ifstat_inc(inifp, ifs6_in_hdrerr); goto bad; } @@ -3286,7 +3295,7 @@ ip6 = mtod(m, struct ip6_hdr *); if ((ip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION) { - ip6stat.ip6s_badvers++; + V_ip6stat.ip6s_badvers++; in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_hdrerr); goto bad; } @@ -3346,8 +3355,10 @@ m_freem(m); } - if (error == 0) - ipstat.ips_fragmented++; + if (error == 0) { + INIT_VNET_INET(curvnet); + V_ipstat.ips_fragmented++; + } return (error); ==== //depot/projects/vimage-devel/src/sys/net/if_ef.c#2 (text+ko) ==== @@ -29,6 +29,7 @@ #include "opt_inet.h" #include "opt_ipx.h" #include "opt_ef.h" +#include "opt_vimage.h" #include #include @@ -39,6 +40,7 @@ #include #include #include +#include #include #include @@ -49,6 +51,7 @@ #include #include #include +#include #ifdef INET #include @@ -489,35 +492,40 @@ int error = 0, d; IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) { - if (ifp->if_type != IFT_ETHER) continue; - EFDEBUG("Found interface %s\n", ifp->if_xname); - efl = (struct ef_link*)malloc(sizeof(struct ef_link), - M_IFADDR, M_WAITOK | M_ZERO); - if (efl == NULL) { - error = ENOMEM; - break; - } + { + VNET_ITERLOOP_BEGIN_QUIET(); + INIT_VNET_NET(curvnet); + TAILQ_FOREACH(ifp, &V_ifnet, if_link) { + if (ifp->if_type != IFT_ETHER) continue; + EFDEBUG("Found interface %s\n", ifp->if_xname); + efl = (struct ef_link*)malloc(sizeof(struct ef_link), + M_IFADDR, M_WAITOK | M_ZERO); + if (efl == NULL) { + error = ENOMEM; + break; + } - efl->el_ifp = ifp; >>> TRUNCATED FOR MAIL (1000 lines) <<< From julian at FreeBSD.org Fri Jul 4 08:50:44 2008 From: julian at FreeBSD.org (Julian Elischer) Date: Fri Jul 4 08:50:51 2008 Subject: PERFORCE change 144604 for review Message-ID: <200807040850.m648ohGK073647@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144604 Change 144604 by julian@julian_trafmon1 on 2008/07/04 08:50:33 fix typo in basevnet Affected files ... .. //depot/projects/vimage-commit3/src/sys/sys/vimage.h#3 edit Differences ... ==== //depot/projects/vimage-commit3/src/sys/sys/vimage.h#3 (text+ko) ==== @@ -50,7 +50,7 @@ #define curvnet curthread->td_vnet -#define basevnet thread0.td_ucred->cr_vimage->v_vnet +#define basevnet thread0.td_ucred->cr_vimage->v_net #define basevprocg thread0.td_ucred->cr_vimage->v_procg #define basevcpu thread0.td_ucred->cr_vimage->v_cpu From hselasky at FreeBSD.org Fri Jul 4 09:21:19 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 09:21:26 2008 Subject: PERFORCE change 144605 for review Message-ID: <200807040921.m649LIeu077135@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144605 Change 144605 by hselasky@hselasky_laptop001 on 2008/07/04 09:21:14 Fix a witness issue with Giant. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#6 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_request.c#6 (text+ko) ==== @@ -289,7 +289,9 @@ } if (mtx) { mtx_unlock(mtx); - mtx_assert(mtx, MA_NOTOWNED); + if (mtx != &Giant) { + mtx_assert(mtx, MA_NOTOWNED); + } } /* * Grab the default sx-lock so that serialisation From trasz at FreeBSD.org Fri Jul 4 09:46:45 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Fri Jul 4 09:46:52 2008 Subject: PERFORCE change 144607 for review Message-ID: <200807040946.m649kiW5079425@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144607 Change 144607 by trasz@trasz_traszkan on 2008/07/04 09:45:48 Fix obvious bug in ACL recalculation. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#3 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#3 (text+ko) ==== @@ -429,29 +429,29 @@ if (entry->ae_tag == ACL_USER && entry->ae_id == file_owner_id) amode = amode >> 3; - if (entry->ae_perm | ACL_READ_DATA) { - if (amode | ACL_READ) + if (entry->ae_perm & ACL_READ_DATA) { + if (amode & ACL_READ) previous->ae_perm &= ~ACL_READ_DATA; else previous->ae_perm |= ACL_READ_DATA; } - if (entry->ae_perm | ACL_WRITE_DATA) { - if (amode | ACL_WRITE) + if (entry->ae_perm & ACL_WRITE_DATA) { + if (amode & ACL_WRITE) previous->ae_perm &= ~ACL_WRITE_DATA; else previous->ae_perm |= ACL_WRITE_DATA; } - if (entry->ae_perm | ACL_APPEND_DATA) { - if (amode | ACL_WRITE) + if (entry->ae_perm & ACL_APPEND_DATA) { + if (amode & ACL_WRITE) previous->ae_perm &= ~ACL_APPEND_DATA; else previous->ae_perm |= ACL_APPEND_DATA; } - if (entry->ae_perm | ACL_EXECUTE) { - if (amode | ACL_EXECUTE) + if (entry->ae_perm & ACL_EXECUTE) { + if (amode & ACL_EXECUTE) previous->ae_perm &= ~ACL_EXECUTE; else previous->ae_perm |= ACL_EXECUTE; From trasz at FreeBSD.org Fri Jul 4 12:16:15 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Fri Jul 4 12:16:22 2008 Subject: PERFORCE change 144608 for review Message-ID: <200807041216.m64CGEML096317@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144608 Change 144608 by trasz@trasz_traszkan on 2008/07/04 12:15:35 Remove incorrect check, which was breaking inheritance. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#4 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#4 (text+ko) ==== @@ -753,10 +753,6 @@ parent_entry = &(parent_aclp->acl_entry[i]); if (((parent_entry->ae_flags & - ACL_ENTRY_DIRECTORY_INHERIT) == 0) && is_directory) - continue; - - if (((parent_entry->ae_flags & ACL_ENTRY_FILE_INHERIT) == 0) && !is_directory) continue; From hselasky at FreeBSD.org Fri Jul 4 13:14:14 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 13:14:20 2008 Subject: PERFORCE change 144611 for review Message-ID: <200807041314.m64DEDC6011338@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144611 Change 144611 by hselasky@hselasky_laptop001 on 2008/07/04 13:13:46 Improve booting from removable devices. Affected files ... .. //depot/projects/usb/src/sys/kern/vfs_mount.c#10 edit Differences ... ==== //depot/projects/usb/src/sys/kern/vfs_mount.c#10 (text+ko) ==== @@ -58,6 +58,7 @@ #include #include #include +#include #include #include @@ -148,10 +149,7 @@ /* legacy find-root code */ char *rootdevnames[2] = {NULL, NULL}; -#ifndef ROOTDEVNAME -# define ROOTDEVNAME NULL -#endif -static const char *ctrootdevname = ROOTDEVNAME; +static const char *ctrootdevname = NULL; /* * --------------------------------------------------------------------- @@ -1613,7 +1611,10 @@ vfs_mountroot(void) { char *cp; - int error, i, asked = 0; + int error; + uint8_t i; + uint8_t asked = 0; + uint8_t timeout = 16; root_mount_prepare(); @@ -1631,6 +1632,11 @@ asked = 1; } + retry: +#ifdef ROOTDEVNAME + ctrootdevname = ROOTDEVNAME; +#endif + /* * The root filesystem information is compiled in, and we are * booted with instructions to use it. @@ -1684,9 +1690,24 @@ * Everything so far has failed, prompt on the console if we haven't * already tried that. */ - if (!asked) + if (!asked) { + if (--timeout) { + /* + * Improve booting from removable devices + * having USB in mind. + */ + printf("Waiting %u more seconds for boot " + "device. Press any key for boot " + "prompt.\r", timeout); + pause("WROOT", hz); + if (cncheckc() == -1) { + goto retry; + } + printf("\n"); + } if (!vfs_mountroot_ask()) goto mounted; + } panic("Root mount failed, startup aborted."); From hselasky at FreeBSD.org Fri Jul 4 13:15:15 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 13:15:36 2008 Subject: PERFORCE change 144612 for review Message-ID: <200807041315.m64DFEse011470@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144612 Change 144612 by hselasky@hselasky_laptop001 on 2008/07/04 13:14:33 Improve kernel devfs symlink support. Affected files ... .. //depot/projects/usb/src/sys/fs/devfs/devfs_devs.c#8 edit .. //depot/projects/usb/src/sys/kern/kern_conf.c#8 edit .. //depot/projects/usb/src/sys/sys/conf.h#8 edit Differences ... ==== //depot/projects/usb/src/sys/fs/devfs/devfs_devs.c#8 (text+ko) ==== @@ -350,7 +350,6 @@ struct cdev_priv *cdp; struct devfs_dirent *de; struct devfs_dirent *dd; - struct cdev *pdev; int j; char *q, *s; @@ -436,10 +435,9 @@ de->de_gid = 0; de->de_mode = 0755; de->de_dirent->d_type = DT_LNK; - pdev = cdp->cdp_c.si_parent; - j = strlen(pdev->si_name) + 1; + j = strlen(cdp->cdp_c.si_symlink) + 1; de->de_symlink = malloc(j, M_DEVFS, M_WAITOK); - bcopy(pdev->si_name, de->de_symlink, j); + bcopy(cdp->cdp_c.si_symlink, de->de_symlink, j); } else { de->de_uid = cdp->cdp_c.si_uid; de->de_gid = cdp->cdp_c.si_gid; ==== //depot/projects/usb/src/sys/kern/kern_conf.c#8 (text+ko) ==== @@ -690,7 +690,7 @@ printf("WARNING: Device name truncated! (%s)\n", dev->__si_namebuf); } - + dev->si_flags |= SI_NAMED; #ifdef MAC if (cr != NULL) @@ -758,7 +758,6 @@ dev_dependsl(struct cdev *pdev, struct cdev *cdev) { - cdev->si_parent = pdev; cdev->si_flags |= SI_CHILD; LIST_INSERT_HEAD(&pdev->si_children, cdev, si_siblings); } @@ -773,35 +772,81 @@ dev_unlock(); } -struct cdev * -make_dev_alias(struct cdev *pdev, const char *fmt, ...) +static struct cdev * +make_dev_alias_symlink(const char *target, struct cdev *pdev, const char *fmt, va_list ap) { struct cdev *dev; - va_list ap; int i; dev = devfs_alloc(); dev_lock(); dev->si_flags |= SI_ALIAS; dev->si_flags |= SI_NAMED; - va_start(ap, fmt); - i = vsnrprintf(dev->__si_namebuf, sizeof dev->__si_namebuf, 32, fmt, ap); - if (i > (sizeof dev->__si_namebuf - 1)) { + i = sizeof(dev->__si_namebuf); + i -= vsnrprintf(dev->__si_namebuf, i, 32, fmt, ap); + if (i < 1) { printf("WARNING: Device name truncated! (%s)\n", dev->__si_namebuf); + i = 1; } - va_end(ap); + if (target == NULL) { + /* use parent device name */ + dev->si_symlink = pdev->si_name; + } else { + if (i < 2) { + i = 1; + } else { + /* make sure there is a NUL between the strings */ + i --; + } + /* use specified target name */ + dev->si_symlink = dev->__si_namebuf + + sizeof(dev->__si_namebuf) - i; + i -= strlcpy(dev->si_symlink, target, i); + if (i < 1) { + printf("WARNING: Symlink name truncated! (%s)\n", + dev->si_symlink); + i = 1; + } + } devfs_create(dev); clean_unrhdrl(devfs_inos); dev_unlock(); - dev_depends(pdev, dev); + + if (pdev != NULL) { + dev_depends(pdev, dev); + } notify_create(dev); return (dev); } +struct cdev * +make_dev_alias(struct cdev *pdev, const char *fmt, ...) +{ + struct cdev *dev; + va_list ap; + + va_start(ap, fmt); + dev = make_dev_alias_symlink(NULL, pdev, fmt, ap); + va_end(ap); + return (dev); +} + +struct cdev * +make_dev_symlink(const char *target, const char *fmt, ...) +{ + struct cdev *dev; + va_list ap; + + va_start(ap, fmt); + dev = make_dev_alias_symlink(target, NULL, fmt, ap); + va_end(ap); + return (dev); +} + static void destroy_devl(struct cdev *dev) { ==== //depot/projects/usb/src/sys/sys/conf.h#8 (text+ko) ==== @@ -77,7 +77,7 @@ LIST_ENTRY(cdev) si_clone; LIST_HEAD(, cdev) si_children; LIST_ENTRY(cdev) si_siblings; - struct cdev *si_parent; + char *si_symlink; /* symbolic link name */ char *si_name; void *si_drv1, *si_drv2; struct cdevsw *si_devsw; @@ -273,6 +273,8 @@ struct ucred *_cr, uid_t _uid, gid_t _gid, int _mode, const char *_fmt, ...) __printflike(8, 9); struct cdev *make_dev_alias(struct cdev *_pdev, const char *_fmt, ...) __printflike(2, 3); +struct cdev *make_dev_symlink(const char *target, const char *fmt, ...) __printflike(2, 3); + void dev_lock(void); void dev_unlock(void); void setconf(void); From hselasky at FreeBSD.org Fri Jul 4 13:15:15 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 13:15:36 2008 Subject: PERFORCE change 144613 for review Message-ID: <200807041315.m64DFEZJ011475@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144613 Change 144613 by hselasky@hselasky_laptop001 on 2008/07/04 13:14:56 Take advantage of new kernel symlink support. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#10 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.h#5 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#10 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.h#4 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#10 (text+ko) ==== @@ -453,10 +453,19 @@ void usb2_fifo_free(struct usb2_fifo *f) { + uint8_t n; + if (f == NULL) { /* be NULL safe */ return; } + /* destroy symlink devices, if any */ + for (n = 0; n != 2; n++) { + if (f->symlink[n]) { + destroy_dev(f->symlink[n]); + f->symlink[n] = NULL; + } + } mtx_lock(&usb2_ref_lock); /* delink ourselves to stop calls from userland */ @@ -1666,7 +1675,7 @@ mtx_unlock(&usb2_ref_lock); if (snprintf(src, sizeof(src), - "/dev/" USB_DEVICE_NAME "%u.%u.%u.%u", + USB_DEVICE_NAME "%u.%u.%u.%u", device_get_unit(udev->bus->bdev), udev->device_index, iface_index, @@ -1680,27 +1689,31 @@ } if (subunit == 0xFFFF) { if (snprintf(buf, sizeof(buf), - "/dev/%s%u%s", pm->basename[n], + "%s%u%s", pm->basename[n], unit, pm->postfix[n] ? pm->postfix[n] : "")) { /* ignore */ } } else { if (snprintf(buf, sizeof(buf), - "/dev/%s%u.%u%s", pm->basename[n], + "%s%u.%u%s", pm->basename[n], unit, subunit, pm->postfix[n] ? pm->postfix[n] : "")) { /* ignore */ } } - if (kern_unlink(curthread, buf, UIO_SYSSPACE)) { - /* ignore */ + /* + * Distribute the symbolic links into two FIFO structures: + */ + if (n & 1) { + f_rx->symlink[n / 2] = + make_dev_symlink(src, "%s", buf); + } else { + f_tx->symlink[n / 2] = + make_dev_symlink(src, "%s", buf); } - if (kern_symlink(curthread, src, buf, UIO_SYSSPACE)) { - /* ignore */ - } - printf("Symlink: %s -> %s\n", buf, src); + DPRINTF(0, "Symlink: %s -> %s\n", buf, src); } DPRINTF(1, "attached %p/%p\n", f_tx, f_rx); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.h#5 (text+ko) ==== @@ -72,6 +72,7 @@ struct cv cv_io; struct cv cv_drain; struct usb2_fifo_methods *methods; + struct cdev *symlink[2]; /* our symlinks */ struct proc *async_p; /* process that wants SIGIO */ struct usb2_device *udev; struct usb2_xfer *xfer[2]; ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#10 (text+ko) ==== @@ -28,6 +28,7 @@ #include #include #include +#include #define USB_DEBUG_VAR usb2_debug @@ -1582,6 +1583,22 @@ usb2_bus_port_set_device(bus, parent_hub ? parent_hub->hub->ports + port_index : NULL, udev, device_index); + /* make a symlink for UGEN */ + if (snprintf(scratch_ptr, scratch_size, + USB_DEVICE_NAME "%u.%u.0.0", + device_get_unit(udev->bus->bdev), + udev->device_index)) { + /* ignore */ + } + udev->ugen_symlink = + make_dev_symlink(scratch_ptr, "ugen%u.%u", + device_get_unit(udev->bus->bdev), + udev->device_index); + + printf("ugen%u.%u: <%s> at %s\n", + device_get_unit(udev->bus->bdev), + udev->device_index, udev->manufacturer, + device_get_nameunit(udev->bus->bdev)); done: if (err) { /* free device */ @@ -1610,6 +1627,13 @@ bus = udev->bus; /* + * Destroy UGEN symlink, if any + */ + if (udev->ugen_symlink) { + destroy_dev(udev->ugen_symlink); + udev->ugen_symlink = NULL; + } + /* * Unregister our device first which will prevent any further * references: */ ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.h#4 (text+ko) ==== @@ -108,6 +108,7 @@ struct usb2_temp_data *usb2_template_ptr; struct usb2_pipe *pipe_curr; /* current clear stall pipe */ struct usb2_fifo *fifo[USB_FIFO_MAX]; + struct cdev *ugen_symlink; /* our generic symlink */ uint16_t refcount; #define USB_DEV_REF_MAX 0xffff From hselasky at FreeBSD.org Fri Jul 4 13:21:21 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 13:21:30 2008 Subject: PERFORCE change 144614 for review Message-ID: <200807041321.m64DLKSO011939@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144614 Change 144614 by hselasky@hselasky_laptop001 on 2008/07/04 13:20:43 If port power failed once it is likely to fail again. Only set port power if there was no previous port power failure. This is will improve the situation when you unplug the USB HUB too early. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#9 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#9 (text+ko) ==== @@ -736,10 +736,11 @@ if (!UHD_NOT_REMOV(&hubdesc, portno)) { removable++; } - /* turn the power on */ - err = usb2_req_set_port_feature - (udev, &Giant, portno, UHF_PORT_POWER); - + if (!err) { + /* turn the power on */ + err = usb2_req_set_port_feature + (udev, &Giant, portno, UHF_PORT_POWER); + } if (err) { DPRINTF(-1, "port %d power on failed, %s\n", portno, usb2_errstr(err)); From trasz at FreeBSD.org Fri Jul 4 13:24:24 2008 From: trasz at FreeBSD.org (Edward Tomasz Napierala) Date: Fri Jul 4 13:24:30 2008 Subject: PERFORCE change 144615 for review Message-ID: <200807041324.m64DOOWE012142@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144615 Change 144615 by trasz@trasz_traszkan on 2008/07/04 13:23:48 Fix previous fix. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#5 edit Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#5 (text+ko) ==== @@ -756,6 +756,11 @@ ACL_ENTRY_FILE_INHERIT) == 0) && !is_directory) continue; + if ((parent_entry->ae_flags & + (ACL_ENTRY_DIRECTORY_INHERIT | + ACL_ENTRY_FILE_INHERIT)) == 0) + continue; + KASSERT(child_aclp->acl_cnt < ACL_MAX_ENTRIES, "child_aclp->acl_cnt < ACL_MAX_ENTRIES"); child_aclp->acl_entry[child_aclp->acl_cnt] = *parent_entry; From hselasky at FreeBSD.org Fri Jul 4 14:02:04 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 14:02:10 2008 Subject: PERFORCE change 144621 for review Message-ID: <200807041402.m64E23eO015225@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144621 Change 144621 by hselasky@hselasky_laptop001 on 2008/07/04 14:02:00 Compile fix. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#6 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#6 (text+ko) ==== @@ -76,7 +76,6 @@ static int ugen_get_cdesc(struct usb2_fifo *f, struct usb2_gen_descriptor *pgd); static int ugen_get_sdesc(struct usb2_fifo *f, struct usb2_gen_descriptor *ugd); static int usb2_gen_fill_deviceinfo(struct usb2_fifo *f, struct usb2_device_info *di); -static int ugen_do_request(struct usb2_fifo *f, struct usb2_ctl_request *ur); static int ugen_re_enumerate(struct usb2_fifo *f); static int ugen_iface_ioctl(struct usb2_fifo *f, u_long cmd, void *addr); static int ugen_ctrl_ioctl(struct usb2_fifo *f, u_long cmd, void *addr, int fflags); From hselasky at FreeBSD.org Fri Jul 4 14:05:07 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 14:05:13 2008 Subject: PERFORCE change 144622 for review Message-ID: <200807041405.m64E56rr016620@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144622 Change 144622 by hselasky@hselasky_laptop001 on 2008/07/04 14:04:22 Compile fix (more). Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#7 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_generic.c#7 (text+ko) ==== @@ -42,6 +42,7 @@ #include #include #include +#include #include #include From gabor at FreeBSD.org Fri Jul 4 14:22:39 2008 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Fri Jul 4 14:22:46 2008 Subject: PERFORCE change 144625 for review Message-ID: <200807041422.m64EMcqh018046@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144625 Change 144625 by gabor@gabor_server on 2008/07/04 14:22:18 - Add --no-ignore-file-name-case (default) - First try to add --ignore-file-name-case, doesn't work correctly yet Affected files ... .. //depot/projects/soc2008/gabor_textproc/diff/diff.c#8 edit .. //depot/projects/soc2008/gabor_textproc/diff/diff.h#4 edit .. //depot/projects/soc2008/gabor_textproc/diff/diffdir.c#4 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/diff/diff.c#8 (text+ko) ==== @@ -47,6 +47,7 @@ int aflag, bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag; int sflag, tflag, Tflag, wflag; int format, status; +int fcase_behave = FCASE_SENSITIVE; unsigned long long context; char *start, *ifdefname, *diffargs, *label[2], *ignore_pats; struct stat stb1, stb2; @@ -55,14 +56,16 @@ enum { HELP_OPT = CHAR_MAX + 1, - NORMAL_OPT + NORMAL_OPT, + FCASE_SENSITIVE_OPT, + FCASE_IGNORE_OPT }; #define OPTIONS "0123456789abC:cdD:efhI:iL:lnNPpqrS:sTtU:uvwX:x:" static struct option longopts[] = { + { "ignore-file-name-case", no_argument, NULL, FCASE_IGNORE_OPT }, + { "no-ignore-file-name-case", no_argument, NULL, FCASE_SENSITIVE_OPT }, /* XXX: UNIMPLEMENTED - { "ignore-file-name-case", no_argument, NULL, OPT_IGN_FN_CASE }, - { "no-ignore-file-name-case", no_argument, NULL, OPT_NIGN_FN_CASE }, { "strip-trailing-cr", no_argument, NULL, OPT_STRIPCR }, */ { "normal", no_argument, NULL, NORMAL_OPT }, /* XXX: UNIMPLEMENTED @@ -249,6 +252,10 @@ case 'x': push_excludes(optarg); break; + case FCASE_SENSITIVE_OPT: + break; + case FCASE_IGNORE_OPT: + fcase_behave = FCASE_IGNORE; case NORMAL_OPT: /* compatibility, this is the default */ break; ==== //depot/projects/soc2008/gabor_textproc/diff/diff.h#4 (text+ko) ==== @@ -70,6 +70,13 @@ #define D_SKIPPED1 8 /* path1 was a special file */ #define D_SKIPPED2 9 /* path2 was a special file */ +/* + * Values of the the filename case-sensitivity + */ + +#define FCASE_SENSITIVE 0 /* Case-sensitive */ +#define FCASE_IGNORE 1 /* Case-insensitive */ + struct excludes { char *pattern; struct excludes *next; @@ -78,6 +85,7 @@ extern int aflag, bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag, sflag, tflag, Tflag, wflag; extern int format, status; +extern int fcase_behave; extern unsigned long long context; extern char *start, *ifdefname, *diffargs, *label[2], *ignore_pats; extern struct stat stb1, stb2; ==== //depot/projects/soc2008/gabor_textproc/diff/diffdir.c#4 (text+ko) ==== @@ -108,8 +108,12 @@ dent1 = *dp1; dent2 = *dp2; - pos = dent1 == NULL ? 1 : dent2 == NULL ? -1 : - strcmp(dent1->d_name, dent2->d_name); + if (fcase_behave == FCASE_SENSITIVE) + pos = dent1 == NULL ? 1 : dent2 == NULL ? -1 : + strcmp(dent1->d_name, dent2->d_name); + else + pos = dent1 == NULL ? 1 : dent2 == NULL ? -1 : + strcasecmp(dent1->d_name, dent2->d_name); if (pos == 0) { /* file exists in both dirs, diff it */ diffit(dent1, path1, dirlen1, path2, dirlen2); From hselasky at FreeBSD.org Fri Jul 4 14:32:50 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 14:32:55 2008 Subject: PERFORCE change 144626 for review Message-ID: <200807041432.m64EWn3I020102@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144626 Change 144626 by hselasky@hselasky_laptop001 on 2008/07/04 14:32:07 Move HID parsing routines into the USB core, hence they are used by both usb2_input and usb2_serial. And we don't want a dependancy between these two modules. Affected files ... .. //depot/projects/usb/src/sys/conf/files#31 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hid.c#1 add .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hid.h#3 add .. //depot/projects/usb/src/sys/dev/usb2/input/uhid2.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/input/ukbd2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/input/ums2.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/input/usb2_hid.c#3 delete .. //depot/projects/usb/src/sys/dev/usb2/input/usb2_input.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/input/usb2_input.h#2 delete .. //depot/projects/usb/src/sys/dev/usb2/serial/ucycom2.c#3 edit .. //depot/projects/usb/src/sys/modules/usb2/core/Makefile#5 edit .. //depot/projects/usb/src/sys/modules/usb2/input/Makefile#3 edit Differences ... ==== //depot/projects/usb/src/sys/conf/files#31 (text+ko) ==== @@ -1361,6 +1361,7 @@ dev/usb2/core/usb2_error.c optional usb2_core dev/usb2/core/usb2_generic.c optional usb2_core dev/usb2/core/usb2_handle_request.c optional usb2_core +dev/usb2/core/usb2_hid.c optional usb2_core dev/usb2/core/usb2_hub.c optional usb2_core dev/usb2/core/usb2_if.m optional usb2_core dev/usb2/core/usb2_lookup.c optional usb2_core @@ -1429,7 +1430,6 @@ dev/usb2/input/uhid2.c optional usb2_core usb2_input dev/usb2/input/ukbd2.c optional usb2_core usb2_input dev/usb2/input/ums2.c optional usb2_core usb2_input -dev/usb2/input/usb2_hid.c optional usb2_core usb2_input dev/usb2/input/usb2_input.c optional usb2_core usb2_input # # USB2 quirks ==== //depot/projects/usb/src/sys/dev/usb2/input/uhid2.c#4 (text+ko) ==== @@ -67,6 +67,7 @@ #include #include #include +#include #include #include @@ -722,7 +723,7 @@ } if (sc->sc_repdesc_ptr == NULL) { - error = hid_read_report_desc_from_usb + error = usb2_req_get_hid_desc (uaa->device, &Giant, &(sc->sc_repdesc_ptr), &(sc->sc_repdesc_size), M_USBDEV, uaa->info.bIfaceIndex); ==== //depot/projects/usb/src/sys/dev/usb2/input/ukbd2.c#3 (text+ko) ==== @@ -63,6 +63,7 @@ #include #include #include +#include #include ==== //depot/projects/usb/src/sys/dev/usb2/input/ums2.c#3 (text+ko) ==== @@ -60,6 +60,7 @@ #include #include #include +#include #include @@ -377,7 +378,7 @@ (id->bInterfaceClass != UICLASS_HID)) { return (ENXIO); } - error = hid_read_report_desc_from_usb + error = usb2_req_get_hid_desc (uaa->device, &Giant, &d_ptr, &d_len, M_TEMP, uaa->info.bIfaceIndex); @@ -436,7 +437,7 @@ DPRINTF(0, "error=%s\n", usb2_errstr(err)); goto detach; } - err = hid_read_report_desc_from_usb + err = usb2_req_get_hid_desc (uaa->device, &Giant, &d_ptr, &d_len, M_TEMP, uaa->info.bIfaceIndex); ==== //depot/projects/usb/src/sys/dev/usb2/input/usb2_input.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb2/serial/ucycom2.c#3 (text+ko) ==== @@ -52,11 +52,10 @@ #include #include #include +#include #include -#include - #define UCYCOM_MAX_IOLEN (1024 + 2) /* bytes */ #define UCYCOM_ENDPT_MAX 3 /* units */ @@ -173,7 +172,6 @@ DRIVER_MODULE(ucycom, ushub, ucycom_driver, ucycom_devclass, NULL, 0); MODULE_DEPEND(ucycom, usb2_core, 1, 1, 1); -MODULE_DEPEND(ucycom, usb2_input, 1, 1, 1); MODULE_DEPEND(ucycom, ucom, UCOM_MINVER, UCOM_PREFVER, UCOM_MAXVER); /* @@ -235,7 +233,7 @@ /* get report descriptor */ - error = hid_read_report_desc_from_usb + error = usb2_req_get_hid_desc (uaa->device, &Giant, &urd_ptr, &urd_len, M_USBDEV, UCYCOM_IFACE_INDEX); ==== //depot/projects/usb/src/sys/modules/usb2/core/Makefile#5 (text+ko) ==== @@ -17,6 +17,7 @@ SRCS+= usb2_error.c SRCS+= usb2_generic.c SRCS+= usb2_handle_request.c +SRCS+= usb2_hid.c SRCS+= usb2_hub.c SRCS+= usb2_lookup.c SRCS+= usb2_mbuf.c ==== //depot/projects/usb/src/sys/modules/usb2/input/Makefile#3 (text+ko) ==== @@ -9,7 +9,6 @@ SRCS+= uhid2.c SRCS+= ukbd2.c SRCS+= ums2.c -SRCS+= usb2_hid.c SRCS+= usb2_input.c .include From hselasky at FreeBSD.org Fri Jul 4 14:37:55 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 14:38:01 2008 Subject: PERFORCE change 144627 for review Message-ID: <200807041437.m64Ebs2K020572@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144627 Change 144627 by hselasky@hselasky_laptop001 on 2008/07/04 14:37:39 Compile fixes. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hid.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hid.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/input/usb2_input.h#3 add Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hid.c#2 (text+ko) ==== @@ -54,8 +54,7 @@ #include #include #include - -#include +#include static void hid_clear_local(struct hid_item *); ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_hid.h#4 (text+ko) ==== @@ -25,8 +25,8 @@ * SUCH DAMAGE. */ -#ifndef _USB2_HID_H_ -#define _USB2_HID_H_ +#ifndef _USB2_CORE_HID_H_ +#define _USB2_CORE_HID_H_ struct usb2_hid_descriptor; struct usb2_config_descriptor; @@ -85,4 +85,4 @@ struct usb2_hid_descriptor *hid_get_descriptor_from_usb(struct usb2_config_descriptor *cd, struct usb2_interface_descriptor *id); usb2_error_t usb2_req_get_hid_desc(struct usb2_device *udev, struct mtx *mtx, void **descp, uint16_t *sizep, usb2_malloc_type mem, uint8_t iface_index); -#endif /* _USB2_HID_H_ */ +#endif /* _USB2_CORE_HID_H_ */ From gabor at FreeBSD.org Fri Jul 4 14:44:02 2008 From: gabor at FreeBSD.org (Gabor Kovesdan) Date: Fri Jul 4 14:44:08 2008 Subject: PERFORCE change 144629 for review Message-ID: <200807041444.m64Ei1sH021080@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144629 Change 144629 by gabor@gabor_server on 2008/07/04 14:43:10 - Use small caps in messages Affected files ... .. //depot/projects/soc2008/gabor_textproc/grep/nls/pt_BR.ISO8859-1.msg#3 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/grep/nls/pt_BR.ISO8859-1.msg#3 (text+ko) ==== @@ -12,8 +12,8 @@ 8 "parênteses nâo balanceados" 9 "contexto está fora da escala" 10 "FreeBSD grep 2.5.1\n" -11 "Opcão não conhecida de --binary-files" -12 "Arquivo binário %s casa com o padrão\n" +11 "opcão não conhecida de --binary-files" +12 "arquivo binário %s casa com o padrão\n" 12 "el valor está fora da escala" -13 "Opcão não conhecida de -d ou --directory" -14 "Opcão não conhecida de --color" +13 "opcão não conhecida de -d ou --directory" +14 "opcão não conhecida de --color" From hselasky at FreeBSD.org Fri Jul 4 15:23:50 2008 From: hselasky at FreeBSD.org (Hans Petter Selasky) Date: Fri Jul 4 15:23:57 2008 Subject: PERFORCE change 144633 for review Message-ID: <200807041523.m64FNoJv025823@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144633 Change 144633 by hselasky@hselasky_laptop001 on 2008/07/04 15:23:40 Compile fixes for Sparc64 target architecture. Affected files ... .. //depot/projects/usb/src/sys/compat/ndis/ntoskrnl_var.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#10 edit .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#4 edit Differences ... ==== //depot/projects/usb/src/sys/compat/ndis/ntoskrnl_var.h#4 (text+ko) ==== @@ -117,6 +117,7 @@ /* Note: assumes x86 page size of 4K. */ +#ifndef PAGE_SHIFT #if PAGE_SIZE == 4096 #define PAGE_SHIFT 12 #elif PAGE_SIZE == 8192 @@ -124,6 +125,7 @@ #else #error PAGE_SHIFT undefined! #endif +#endif #define SPAN_PAGES(ptr, len) \ ((uint32_t)((((uintptr_t)(ptr) & (PAGE_SIZE - 1)) + \ ==== //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#10 (text+ko) ==== @@ -1165,7 +1165,7 @@ /* the size of the SETUP structure is hardcoded ! */ if (xfer->frlengths[0] != sizeof(struct usb2_device_request)) { - DPRINTF(-1, "Wrong framelength %u != %u\n", + DPRINTF(-1, "Wrong framelength %u != %zu\n", xfer->frlengths[0], sizeof(struct usb2_device_request)); goto error; ==== //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#4 (text+ko) ==== @@ -1273,7 +1273,7 @@ ural_tx_freem(m); return; } - DPRINTF(0, " %u %u (out)\n", sizeof(sc->sc_tx_desc), m->m_pkthdr.len); + DPRINTF(0, " %zu %u (out)\n", sizeof(sc->sc_tx_desc), m->m_pkthdr.len); bcopy(&(sc->sc_tx_desc), mm->m_data, sizeof(sc->sc_tx_desc)); mm->m_len = sizeof(sc->sc_tx_desc); From remko at FreeBSD.org Fri Jul 4 16:26:06 2008 From: remko at FreeBSD.org (Remko Lodder) Date: Fri Jul 4 16:26:14 2008 Subject: PERFORCE change 144640 for review Message-ID: <200807041626.m64GQ5TR032094@repoman.freebsd.org> http://perforce.freebsd.org/chv.cgi?CH=144640 Change 144640 by remko@remko_nakur on 2008/07/04 16:25:11 Rene translated the last part, it's ready for review. Affected files ... .. //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/mail/chapter.sgml#6 edit Differences ... ==== //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/mail/chapter.sgml#6 (text+ko) ==== @@ -2160,12 +2160,181 @@ fetchmail gebruiken - + fetchmail + + fetchmail is een volwaardige + client voor IMAP en POP + welke gebruikers in staat stelt om automatisch mail van + IMAP- en POP-servers op afstand + naar plaatselijke postbussen te downloaden; daar kan het + gemakkelijker worden benaderd. fetchmail + kan met de port mail/fetchmail worden + geïnstalleerd, en biedt verschillende mogelijkheden, + waaronder: + + + + Ondersteuning voor POP3, + APOP, KPOP, + IMAP, ETRN, en + ODMR protocollen. + + + + De mogelijkheid om mail via SMTP door + te sturen, wat filteren, doorsturen, en aliassen toestaat om + normaal te functioneren. + + + + Kan in daemon-modus gedraaid worden om periodiek op + nieuwe berichten te controleren. + + + + Kan verschillende postbussen ophalen en ze afhankelijk + van de instellingen naar verschillende plaatselijke + gebruikers doorsturen. + + + + Hoewel het niet de bedoeling van dit document is om alle + mogelijkheden van fetchmail uit te + leggen, zullen sommige basismogelijkheden worden uitgelegd. Het + gereedschap fetchmail heeft een + instellingenbestand .fetchmailrc nodig om + correct te kunnen werken. Dit bestand bevat zowel informatie + over de server als de inloggegevens. Vanwege de gevoelige aard + van de inhoud van dit bestand is het aan te raden om het met het + volgende commando alleen leesbaar te maken voor de eigenaar ervan + : + + &prompt.user; chmod 600 .fetchmailrc + + Het volgende .fetchmailrc dient als een + voorbeeld voor het downloaden van een postbus van een enkele + gebruiker via POP. Het vertelt + fetchmail om met example.com te verbinden als gebruiker + joesoap met wachtwoord XXX + . Dit voorbeeld gaat ervan uit dat de gebruiker + joesoap ook een gebruiker is op het + plaatselijke systeem. + + poll example.com protocol pop3 username "joesoap" password "XXX" + + Het volgende voorbeeld legt verbinding met meerdere + POP- en IMAP-servers en stuurt de + mail door naar verschillende plaatselijke gebruikers indien van + toepassing: + + poll example.com proto pop3: +user "joesoap", with password "XXX", is "jsoap" here; +user "andrea", with password "XXXX"; +poll example2.net proto imap: +user "john", with password "XXXXX", is "myth" here; + + Het gereedschap fetchmail kan in + daemon-modus worden gedraad met de vlag + gevolgd door het interval (in seconden) waarmee + fetchmail de servers die in het bestand + .fetchmailrc vermeld staan dient te vragen. + Het volgende voorbeeld zorgt ervoor dat fetchmail + elke 600 seconden vraagt: + + &prompt.user; fetchmail -d 600 + + Meer informatie over fetchmail is + te vinden op . + + + + + Marc + Silver + Bijgedragen door + + + + procmail gebruiken - + + procmail + + Het gereedschap procmail is een + zeer krachtig gereedschap voor het filteren van binnenkomende + mail. Het stelt gebruikers in staat om regels te + definiëren welke aan binnenkomende mail gekoppeld kunnen + worden om specifieke taken uit te voeren of om de mail naar + alternatieve postbussen en/of emailadressen door te sturen. + procmail kan met de port mail/procmail geïnstalleerd + worden. Eenmaal geïnstalleerd kan het direct met de meeste + MTAs geïntegreerd worden; raadpleeg de + documentatie van de MTA voor meer informatie. + Als alternatief kan procmail + geïntegreerd worden door de volgende regel aan het bestand + .forward in de thuismap van de gebruiker + die procmail gebruikt toe te voegen: + + + "|exec /usr/local/bin/procmail || exit 75" + + De volgende sectie geeft wat basisregels van + procmailmet een korte beschrijving ervan. Deze, + en andere, regels dienen in het bestand + .procmailrc geplaatst te worden, welke zich + in de thuismap van de gebruiker dient te bevinden. + + De meerderheid van deze regels kan ook in de hulppagina + &man.procmailex.5; gevonden worden. + + Stuur alle mail van user@example.com door naar + het externe adres goodmail@example2.com