eisaconf.c (16322) | eisaconf.c (17971) |
---|---|
1/* 2 * EISA bus probe and attach routines 3 * 4 * Copyright (c) 1995, 1996 Justin T. Gibbs. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 14 unchanged lines hidden (view full) --- 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 * | 1/* 2 * EISA bus probe and attach routines 3 * 4 * Copyright (c) 1995, 1996 Justin T. Gibbs. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 14 unchanged lines hidden (view full) --- 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 * |
31 * $Id: eisaconf.c,v 1.19 1996/04/20 21:21:49 gibbs Exp $ | 31 * $Id: eisaconf.c,v 1.20 1996/06/12 05:02:41 gpalmer Exp $ |
32 */ 33#include <sys/param.h> 34#include <sys/systm.h> 35#include <sys/devconf.h> 36#include <sys/kernel.h> 37#include <sys/sysctl.h> 38#include <sys/conf.h> /* For kdc_isa */ 39#include <sys/malloc.h> --- 655 unchanged lines hidden (view full) --- 695 resvaddr_t *node; 696 void *buf; /* Temporary externalizing buffer */ 697 void *bufp; /* Current offset in the buffer */ 698 void *offset; /* Offset relative to target address space */ 699 void *ioa_prev; /* Prev Node entries relative to target address space */ 700 void *ma_prev; /* Prev Node entries relative to target address space */ 701 int retval; 702 | 32 */ 33#include <sys/param.h> 34#include <sys/systm.h> 35#include <sys/devconf.h> 36#include <sys/kernel.h> 37#include <sys/sysctl.h> 38#include <sys/conf.h> /* For kdc_isa */ 39#include <sys/malloc.h> --- 655 unchanged lines hidden (view full) --- 695 resvaddr_t *node; 696 void *buf; /* Temporary externalizing buffer */ 697 void *bufp; /* Current offset in the buffer */ 698 void *offset; /* Offset relative to target address space */ 699 void *ioa_prev; /* Prev Node entries relative to target address space */ 700 void *ma_prev; /* Prev Node entries relative to target address space */ 701 int retval; 702 |
703 offset = req->oldptr + req->oldidx; | 703 offset = (char *)req->oldptr + req->oldidx; |
704 buf = malloc(kdc->kdc_datalen, M_TEMP, M_NOWAIT); 705 if (!buf) 706 return 0; 707 708 bufp = buf; 709 bcopy(kdc->kdc_eisa, bufp, sizeof(struct eisa_device)); 710 e_dev = bufp; 711 712 /* Calculate initial prev nodes */ | 704 buf = malloc(kdc->kdc_datalen, M_TEMP, M_NOWAIT); 705 if (!buf) 706 return 0; 707 708 bufp = buf; 709 bcopy(kdc->kdc_eisa, bufp, sizeof(struct eisa_device)); 710 e_dev = bufp; 711 712 /* Calculate initial prev nodes */ |
713 ioa_prev = offset + ((void *)&(e_dev->ioconf.ioaddrs.lh_first) 714 - (void *)e_dev); 715 ma_prev = offset + ((void *)&(e_dev->ioconf.maddrs.lh_first) 716 - (void *)e_dev); | 713 ioa_prev = (char *)offset + ((char *)&(e_dev->ioconf.ioaddrs.lh_first) 714 - (char *)e_dev); 715 ma_prev = (char *)offset + ((char *)&(e_dev->ioconf.maddrs.lh_first) 716 - (char *)e_dev); |
717 | 717 |
718 offset += sizeof(*e_dev); 719 bufp += sizeof(*e_dev); | 718 offset = (char *)offset + sizeof(*e_dev); 719 bufp = (char *)bufp + sizeof(*e_dev); |
720 721 if (e_dev->ioconf.ioaddrs.lh_first) { 722 node = e_dev->ioconf.ioaddrs.lh_first; 723 e_dev->ioconf.ioaddrs.lh_first = offset; 724 for(;node;node = node->links.le_next) { 725 resvaddr_t *out_node; 726 727 bcopy(node, bufp, sizeof(resvaddr_t)); 728 out_node = (resvaddr_t *)bufp; | 720 721 if (e_dev->ioconf.ioaddrs.lh_first) { 722 node = e_dev->ioconf.ioaddrs.lh_first; 723 e_dev->ioconf.ioaddrs.lh_first = offset; 724 for(;node;node = node->links.le_next) { 725 resvaddr_t *out_node; 726 727 bcopy(node, bufp, sizeof(resvaddr_t)); 728 out_node = (resvaddr_t *)bufp; |
729 bufp += sizeof(resvaddr_t); 730 offset += sizeof(resvaddr_t); | 729 bufp = (char *)bufp + sizeof(resvaddr_t); 730 offset = (char *)offset + sizeof(resvaddr_t); |
731 732 out_node->links.le_prev = ioa_prev; | 731 732 out_node->links.le_prev = ioa_prev; |
733 ioa_prev += sizeof(resvaddr_t); | 733 ioa_prev = (char *)ioa_prev + sizeof(resvaddr_t); |
734 735 if (out_node->links.le_next) 736 out_node->links.le_next = offset; 737 } 738 } 739 if (e_dev->ioconf.maddrs.lh_first) { 740 node = e_dev->ioconf.maddrs.lh_first; 741 e_dev->ioconf.maddrs.lh_first = offset; 742 for(;node;node = node->links.le_next) { 743 resvaddr_t *out_node; 744 745 bcopy(node, bufp, sizeof(resvaddr_t)); 746 out_node = (resvaddr_t *)bufp; | 734 735 if (out_node->links.le_next) 736 out_node->links.le_next = offset; 737 } 738 } 739 if (e_dev->ioconf.maddrs.lh_first) { 740 node = e_dev->ioconf.maddrs.lh_first; 741 e_dev->ioconf.maddrs.lh_first = offset; 742 for(;node;node = node->links.le_next) { 743 resvaddr_t *out_node; 744 745 bcopy(node, bufp, sizeof(resvaddr_t)); 746 out_node = (resvaddr_t *)bufp; |
747 bufp += sizeof(resvaddr_t); 748 offset += sizeof(resvaddr_t); | 747 bufp = (char *)bufp + sizeof(resvaddr_t); 748 offset = (char *)offset + sizeof(resvaddr_t); |
749 750 out_node->links.le_prev = ma_prev; | 749 750 out_node->links.le_prev = ma_prev; |
751 ma_prev += sizeof(resvaddr_t); | 751 ma_prev = (char *)ma_prev + sizeof(resvaddr_t); |
752 753 if (out_node->links.le_next) 754 out_node->links.le_next = offset; 755 } 756 } 757 758 retval = SYSCTL_OUT(req, buf, kdc->kdc_datalen); 759 free(buf, M_TEMP); 760 return retval; 761} | 752 753 if (out_node->links.le_next) 754 out_node->links.le_next = offset; 755 } 756 } 757 758 retval = SYSCTL_OUT(req, buf, kdc->kdc_datalen); 759 free(buf, M_TEMP); 760 return retval; 761} |