Deleted Added
full compact
subr_bus.c (47537) subr_bus.c (47578)
1/*-
2 * Copyright (c) 1997,1998 Doug Rabson
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 1997,1998 Doug Rabson
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $Id: subr_bus.c,v 1.26 1999/05/22 14:57:15 dfr Exp $
26 * $Id: subr_bus.c,v 1.27 1999/05/27 07:18:41 dfr Exp $
27 */
28
29#include <sys/param.h>
30#include <sys/queue.h>
31#include <sys/malloc.h>
32#include <sys/kernel.h>
33#include <sys/module.h>
34#include <sys/sysctl.h>

--- 564 unchanged lines hidden (view full) ---

599 dev->ops = &null_ops;
600 dev->driver = NULL;
601 dev->devclass = NULL;
602 dev->unit = unit;
603 dev->nameunit = NULL;
604 dev->desc = NULL;
605 dev->busy = 0;
606 dev->flags = DF_ENABLED;
27 */
28
29#include <sys/param.h>
30#include <sys/queue.h>
31#include <sys/malloc.h>
32#include <sys/kernel.h>
33#include <sys/module.h>
34#include <sys/sysctl.h>

--- 564 unchanged lines hidden (view full) ---

599 dev->ops = &null_ops;
600 dev->driver = NULL;
601 dev->devclass = NULL;
602 dev->unit = unit;
603 dev->nameunit = NULL;
604 dev->desc = NULL;
605 dev->busy = 0;
606 dev->flags = DF_ENABLED;
607 dev->order = 0;
607 if (unit == -1)
608 dev->flags |= DF_WILDCARD;
609 if (name) {
610 dev->flags |= DF_FIXEDCLASS;
611 devclass_add_device(dc, dev);
612 }
613 dev->ivars = ivars;
614 dev->softc = NULL;

--- 14 unchanged lines hidden (view full) ---

629 } else
630 printf(" not found");
631 printf("\n");
632}
633
634device_t
635device_add_child(device_t dev, const char *name, int unit, void *ivars)
636{
608 if (unit == -1)
609 dev->flags |= DF_WILDCARD;
610 if (name) {
611 dev->flags |= DF_FIXEDCLASS;
612 devclass_add_device(dc, dev);
613 }
614 dev->ivars = ivars;
615 dev->softc = NULL;

--- 14 unchanged lines hidden (view full) ---

630 } else
631 printf(" not found");
632 printf("\n");
633}
634
635device_t
636device_add_child(device_t dev, const char *name, int unit, void *ivars)
637{
637 device_t child;
638
639 PDEBUG(("%s at %s as unit %d with%s ivars",
640 name, DEVICENAME(dev), unit, (ivars? "":"out")));
641
642 child = make_device(dev, name, unit, ivars);
643
644 if (child)
645 TAILQ_INSERT_TAIL(&dev->children, child, link);
646 else
647 PDEBUG(("%s failed", name));
648
649 return child;
638 return device_add_child_ordered(dev, 0, name, unit, ivars);
650}
651
652device_t
639}
640
641device_t
653device_add_child_after(device_t dev, device_t place, const char *name,
654 int unit, void *ivars)
642device_add_child_ordered(device_t dev, int order,
643 const char *name, int unit, void *ivars)
655{
656 device_t child;
644{
645 device_t child;
646 device_t place;
657
647
658 PDEBUG(("%s at %s after %s as unit %d with%s ivars",
659 name, DEVICENAME(dev), DEVICENAME(place), unit, (ivars? "":"out")));
648 PDEBUG(("%s at %s with order %d as unit %d with%s ivars",
649 name, DEVICENAME(dev), order, unit, (ivars? "":"out")));
660
661 child = make_device(dev, name, unit, ivars);
662 if (child == NULL)
663 return child;
650
651 child = make_device(dev, name, unit, ivars);
652 if (child == NULL)
653 return child;
654 child->order = order;
664
655
656 TAILQ_FOREACH(place, &dev->children, link)
657 if (place->order > order)
658 break;
659
665 if (place) {
660 if (place) {
666 TAILQ_INSERT_AFTER(&dev->children, place, child, link);
661 /*
662 * The device 'place' is the first device whose order is
663 * greater than the new child.
664 */
665 TAILQ_INSERT_BEFORE(place, child, link);
667 } else {
666 } else {
668 TAILQ_INSERT_HEAD(&dev->children, child, link);
667 /*
668 * The new child's order is greater or equal to the order of
669 * any existing device. Add the child to the tail of the list.
670 */
671 TAILQ_INSERT_TAIL(&dev->children, child, link);
669 }
670
671 return child;
672}
673
674int
675device_delete_child(device_t dev, device_t child)
676{

--- 1672 unchanged lines hidden ---
672 }
673
674 return child;
675}
676
677int
678device_delete_child(device_t dev, device_t child)
679{

--- 1672 unchanged lines hidden ---