cvs commit: patches/pciutils pciutils-2.1.11-buffersize-1.patch pciutils-2.1.11-pcimodules-1.patch pciutils-2.1.11-sharedir-1.patch pciutils-2.1.11-unused-1.patch

jim at linuxfromscratch.org jim at linuxfromscratch.org
Sun Oct 5 15:11:34 PDT 2003


jim         03/10/05 16:11:34

  Added:       pciutils pciutils-2.1.11-buffersize-1.patch
                        pciutils-2.1.11-pcimodules-1.patch
                        pciutils-2.1.11-sharedir-1.patch
                        pciutils-2.1.11-unused-1.patch
  Log:
  Added: pciutils patches buffersize pcimodules sharedir unused
  
  Revision  Changes    Path
  1.1                  patches/pciutils/pciutils-2.1.11-buffersize-1.patch
  
  Index: pciutils-2.1.11-buffersize-1.patch
  ===================================================================
  Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
  Date: 2003-09-29
  Initial Package Version: 2.1.11
  Origin: Mandrake CVS
  Description: Increases Buffersize when reading /proc
  
   
  diff -Naur pciutils-2.1.11.orig/lib/proc.c pciutils-2.1.11/lib/proc.c
  --- pciutils-2.1.11.orig/lib/proc.c	2002-12-26 20:24:08.000000000 +0000
  +++ pciutils-2.1.11/lib/proc.c	2003-09-29 16:27:20.000000000 +0000
  @@ -183,7 +183,7 @@
   
     if (a->cached_dev != d || a->fd_rw < rw)
       {
  -      char buf[256];
  +      char buf[512];
         if (a->fd >= 0)
   	close(a->fd);
         if (snprintf(buf, sizeof(buf), "%s/%02x/%02x.%d", a->method_params[PCI_ACCESS_PROC_BUS_PCI],
  
  
  
  1.1                  patches/pciutils/pciutils-2.1.11-pcimodules-1.patch
  
  Index: pciutils-2.1.11-pcimodules-1.patch
  ===================================================================
  Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
  Date: 2003-09-29
  Initial Package Version: 2.1.11
  Origin: Mandrake CVS
  Description: New Utility. pcimodules loads all kernal pci modules
  	     for PCI devices currently plugged into any PCI slot.
   
  Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
  Date: 2003-09-29
  Initial Package Version: 2.1.11
  Origin: Mandrake CVS
  Description: Adds pcimodules, which loads all pci modules that 
  	     associated in PCI devices in a system.
  
   
  diff -Naur pciutils-2.1.11.orig/Makefile pciutils-2.1.11/Makefile
  --- pciutils-2.1.11.orig/Makefile	2003-01-04 12:53:01.000000000 +0000
  +++ pciutils-2.1.11/Makefile	2003-09-29 16:43:51.000000000 +0000
  @@ -31,7 +31,7 @@
   
   export
   
  -all: lib lspci setpci lspci.8 setpci.8 update-pciids update-pciids.8 pci.ids
  +all: lib lspci setpci pcimodules lspci.8 setpci.8 update-pciids update-pciids.8 pcimodules.8 pci.ids
   
   lib: lib/config.h
   	$(MAKE) -C lib all
  @@ -39,6 +39,7 @@
   lib/config.h:
   	cd lib && ./configure $(SHAREDIR) $(VERSION)
   
  +pcimodules: pcimodules.o common.o lib/$(PCILIB)
   lspci: lspci.o common.o lib/$(PCILIB)
   setpci: setpci.o common.o lib/$(PCILIB)
   
  @@ -60,14 +61,15 @@
   # -c is ignored on Linux, but required on FreeBSD
   	$(DIRINSTALL) -m 755 $(SBINDIR) $(SHAREDIR) $(MANDIR)/man8
   	$(INSTALL) -c -m 755 -s lspci setpci $(SBINDIR)
  +	$(INSTALL) -c -m 755 pcimodules $(SBINDIR)
   	$(INSTALL) -c -m 755 update-pciids $(SBINDIR)
   	$(INSTALL) -c -m 644 pci.ids $(SHAREDIR)
  -	$(INSTALL) -c -m 644 lspci.8 setpci.8 update-pciids.8 $(MANDIR)/man8
  +	$(INSTALL) -c -m 644 lspci.8 setpci.8 update-pciids.8 pcimodules.8 $(MANDIR)/man8
   
   uninstall: all
  -	rm -f $(SBINDIR)/lspci $(SBINDIR)/setpci $(SBINDIR)/update-pciids
  +	rm -f $(SBINDIR)/lspci $(SBINDIR)/setpci $(SBINDIR)/update-pciids $(SBINDIR)/pcimodules
   	rm -f $(SHAREDIR)/pci.ids
  -	rm -f $(MANDIR)/man8/lspci.8 $(MANDIR)/man8/setpci.8 $(MANDIR)/man8/update-pciids.8
  +	rm -f $(MANDIR)/man8/lspci.8 $(MANDIR)/man8/setpci.8 $(MANDIR)/man8/update-pciids.8 $(MANDIR)/man8/pcimodules.8
   
   get-ids:
   	cp ~/tree/pciids/pci.ids pci.ids
  diff -Naur pciutils-2.1.11.orig/pcimodules.c pciutils-2.1.11/pcimodules.c
  --- pciutils-2.1.11.orig/pcimodules.c	1970-01-01 00:00:00.000000000 +0000
  +++ pciutils-2.1.11/pcimodules.c	2003-09-29 16:41:53.000000000 +0000
  @@ -0,0 +1,183 @@
  +/*
  + *	pcimodules:  Load all kernel modules for PCI device currently
  + *      plugged into any PCI slot.
  + *
  + *	Copyright 2000 Yggdrasil Computing, Incorporated
  + *	This file may be copied under the terms and conditions of version 
  + *      two of the GNU General Public License, as published by the Free
  + *      Software Foundation (Cambridge, Massachusetts, USA).
  + *
  + *      This file is based on pciutils/lib/example.c, which has the following
  + *      authorship and copyright statement:
  + *
  + *		Written by Martin Mares and put to public domain. You can do
  + *		with it anything you want, but I don't give you any warranty.
  + */
  +
  +#include <stdlib.h>
  +#include <stdio.h>
  +#include <malloc.h>
  +#include <string.h>
  +#include <unistd.h>
  +#include <sys/utsname.h>
  +#include <sys/param.h>
  +#include <sys/types.h>
  +
  +#define _GNU_SOURCE
  +#include <getopt.h>
  +
  +#include "pciutils.h"
  +
  +#define MODDIR	"/lib/modules"
  +#define PCIMAP	"modules.pcimap"
  +
  +#define LINELENGTH	8000 
  +
  +#define DEVICE_ANY	0xffffffff
  +#define VENDOR_ANY	0xffffffff
  +
  +#include "lib/pci.h"
  +
  +struct pcimap_entry {
  +	unsigned int vendor, subsys_vendor, dev, subsys_dev, class, class_mask;
  +	char *module;
  +	struct pcimap_entry *next;
  +};
  +
  +static struct pcimap_entry *pcimap_list = NULL;
  +
  +#define OPT_STRING "h"
  +static struct option long_options[] = {
  +	{"class",	required_argument,	NULL, 'c'},
  +	{"classmask",	required_argument,	NULL, 'm'},
  +	{"help",	no_argument,		NULL, 'h'},
  +	{ 0,		0,			0, 	0}
  +};
  +
  +static unsigned long desired_class;
  +static unsigned long desired_classmask; /* Default is 0: accept all classes.*/
  +
  +void
  +read_pcimap(void)
  +{
  +	struct utsname utsname;
  +	char filename[MAXPATHLEN];
  +	FILE *pcimap_file;
  +	char line[LINELENGTH];
  +	struct pcimap_entry *entry;
  +	unsigned int driver_data;
  +	char *prevmodule = "";
  +	char module[LINELENGTH];
  +
  +	if (uname(&utsname) < 0) {
  +		perror("uname");
  +		exit(1);
  +	}
  +	sprintf(filename, "%s/%s/%s", MODDIR, utsname.release, PCIMAP);
  +	if ((pcimap_file = fopen(filename, "r")) == NULL) {
  +		perror(filename);
  +		exit(1);
  +	}
  +
  +	while(fgets(line, LINELENGTH, pcimap_file) != NULL) {
  +		if (line[0] == '#')
  +			continue;
  +
  +		entry = xmalloc(sizeof(struct pcimap_entry));
  +
  +		if (sscanf(line, "%s 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x",
  +			   module,
  +			   &entry->vendor, &entry->dev,
  +			   &entry->subsys_vendor, &entry->subsys_dev,
  +			   &entry->class, &entry->class_mask,
  +			   &driver_data) != 8) {
  +			fprintf (stderr,
  +				"modules.pcimap unparsable line: %s.\n", line);
  +			free(entry);
  +			continue;
  +		}
  +
  +		/* Optimize memory allocation a bit, in case someday we
  +		   have Linux systems with ~100,000 modules.  It also
  +		   allows us to just compare pointers to avoid trying
  +		   to load a module twice. */
  +		if (strcmp(module, prevmodule) != 0) {
  +			prevmodule = xmalloc(strlen(module)+1);
  +			strcpy(prevmodule, module);
  +		}
  +		entry->module = prevmodule;
  +		entry->next = pcimap_list;
  +		pcimap_list = entry;
  +	}
  +	fclose(pcimap_file);
  +}
  +
  +/* Return a filled in pci_access->dev tree, with the device classes
  +   stored in dev->aux.
  +*/
  +static void
  +match_pci_modules(void)
  +{
  +	struct pci_access *pacc;
  +	struct pci_dev *dev;
  +	unsigned int class, subsys_dev, subsys_vendor;
  +	struct pcimap_entry *map;
  +	const char *prevmodule = "";
  +
  +	pacc = pci_alloc();		/* Get the pci_access structure */
  +	/* Set all options you want -- here we stick with the defaults */
  +	pci_init(pacc);		/* Initialize the PCI library */
  +	pci_scan_bus(pacc);	/* We want to get the list of devices */
  +  	for(dev=pacc->devices; dev; dev=dev->next) {
  +		pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES);
  +		class = (pci_read_word(dev, PCI_CLASS_DEVICE) << 8)
  +			| pci_read_byte(dev, PCI_CLASS_PROG);
  +		subsys_dev = pci_read_word(dev, PCI_SUBSYSTEM_ID);
  +		subsys_vendor = pci_read_word(dev,PCI_SUBSYSTEM_VENDOR_ID);
  +		for(map = pcimap_list; map != NULL; map = map->next) {
  +			if (((map->class ^ class) & map->class_mask) == 0 &&
  +			    ((desired_class ^ class) & desired_classmask)==0 &&
  +			    (map->dev == DEVICE_ANY ||
  +			     map->dev == dev->device_id) &&
  +			    (map->vendor == VENDOR_ANY ||
  +			     map->vendor == dev->vendor_id) &&
  +			    (map->subsys_dev == DEVICE_ANY ||
  +			     map->subsys_dev == subsys_dev) &&
  +			    (map->subsys_vendor == VENDOR_ANY ||
  +			     map->subsys_vendor == subsys_vendor) &&
  +			    prevmodule != map->module) {
  +				printf("%s\n", map->module);
  +				prevmodule = map->module;
  +			}
  +		}
  +
  +	}
  +	pci_cleanup(pacc);
  +}
  +
  +int
  +main (int argc, char **argv)
  +{
  +	int opt_index = 0;
  +	int opt;
  +
  +	while ((opt = getopt_long(argc, argv, OPT_STRING, long_options,
  +		           &opt_index)) != -1) {
  +		switch(opt) {
  +			case 'c':
  +				desired_class = strtol(optarg, NULL, 0);
  +				break;
  +			case 'm':
  +				desired_classmask = strtol(optarg, NULL, 0);
  +				break;
  +			case 'h':
  +				printf ("Usage: pcimodules [--help]\n"
  +					"  Lists kernel modules corresponding to PCI devices currently plugged"
  +					"  into the computer.\n");
  +		}
  +	}	
  +
  +	read_pcimap();
  +	match_pci_modules();
  +	return 0;
  +}
  diff -Naur pciutils-2.1.11.orig/pcimodules.man pciutils-2.1.11/pcimodules.man
  --- pciutils-2.1.11.orig/pcimodules.man	1970-01-01 00:00:00.000000000 +0000
  +++ pciutils-2.1.11/pcimodules.man	2003-09-29 16:41:53.000000000 +0000
  @@ -0,0 +1,92 @@
  +.TH pcimodules 8 "@TODAY@" "@VERSION@" "Linux PCI Utilities"
  +.IX pcimodules
  +.SH NAME
  +pcimodules \- List kernel driver modules available for all currently plugged
  +in PCI devices
  +.SH SYNOPSIS
  +.B pcimodules
  +.RB [ --class class_id ]
  +.RB [ --classmask mask ]
  +.RB [ --help ]
  +.SH DESCRIPTION
  +.B pcimodules
  +lists all driver modules for all currently plugged in PCI devices.
  +.B pcimodules
  +should be run at boot time, and whenever a PCI device is "hot plugged"
  +into the system.  This can be done by the following Bourne shell syntax:
  +.IP
  +	for module in $(pcimodules) ; do
  +.IP
  +		modprobe -s -k "$module"
  +.IP
  +	done
  +.PP
  +When a PCI device is removed from the system, the Linux kernel will
  +decrement a usage count on PCI driver module.  If this count drops
  +to zero (i.e., there are no PCI drivers), then the
  +.B modprobe -r
  +process that is normally configured to run from cron every few minutes
  +will eventually remove the unneeded module.
  +.PP
  +The --class and --classmask arguments can be used to limit the search
  +to certain classes of PCI devices.  This is useful, for example, to
  +generate a list of ethernet card drivers to be loaded when the kernel
  +has indicated that it is trying to resolve an unknown network interface.
  +.PP
  +Modules are listed in the order in which the PCI devices are physically
  +arranged so that the computer owner can arrange things like having scsi
  +device 0 be on a controller that is not alphabetically the first scsi
  +controller.
  +.SH OPTIONS
  +.TP
  +.B --class class --classmask mask
  +.PP
  +--class and --classmask limit the search to PCI
  +cards in particular classes.  These arguments are always used together.
  +The arguments to --class and --classmask
  +can be given as hexadecimal numbers by prefixing a leading "0x".
  +Note that the classes used by pcimodules are in "Linux" format,
  +meaning the class value that you see with lspci would be shifted
  +left eight bits, with the new low eight bits programming interface ID.
  +An examples of how to use class and classmask is provided below.
  +.B --help, -h
  +Print a help message and exit.
  +.SH EXAMPLES
  +.TP
  +pcimodules
  +lists all modules corresponding to currently plugged in PCI devices.
  +.TP
  +pcimodules --class 0x200000 --classmask 0xffff00
  +lists all modules corresponding to currently plugged in ethernet PCI devices.
  +.SH FILES
  +.TP
  +.B /lib/modules/<kernel-version>/modules.pcimap
  +This file is automatically generated by
  +.B depmod,
  +and used by
  +.B pcimodules
  +to determine which modules correspond to which PCI ID's.
  +.TP
  +.B /proc/bus/pci
  +An interface to PCI bus configuration space provided by the post-2.1.82 Linux
  +kernels. Contains per-bus subdirectories with per-card config space files and a
  +.I devices
  +file containing a list of all PCI devices.
  +
  +.SH SEE ALSO
  +.BR lspci (8)
  +
  +.SH MAINTAINER
  +The Linux PCI Utilities are maintained by Martin Mares <mj at suse.cz>.
  +
  +.SH AUTHOR
  +.B pcimodules
  +was written by Adam J. Richter <adam at yggdrasil.com>, based on public
  +domain example code by Martin Mares <mj at suse.cz>.
  +
  +.SH COPYRIGHT
  +.B pcimodules
  +is copyright 2000, Yggdrasil Computing, Incorporated, and may
  +be copied under the terms and conditions of version 2 of the GNU
  +General Public License as published by the Free Software Foundation
  +(Cambrige, Massachusetts, United States of America).
  
  
  
  1.1                  patches/pciutils/pciutils-2.1.11-sharedir-1.patch
  
  Index: pciutils-2.1.11-sharedir-1.patch
  ===================================================================
  Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
  Date: 2003-09-29
  Initial Package Version: 2.1.11
  Origin: Jim Gifford
  Description: Moves pci.ids to /usr/share/misc
  
  diff -Naur pciutils-2.1.11.orig/Makefile pciutils-2.1.11/Makefile
  --- pciutils-2.1.11.orig/Makefile	2003-01-04 12:53:01.000000000 +0000
  +++ pciutils-2.1.11/Makefile	2003-09-29 16:52:27.000000000 +0000
  @@ -12,7 +12,7 @@
   
   PREFIX=/usr/local
   SBINDIR=$(PREFIX)/sbin
  -SHAREDIR=$(PREFIX)/share
  +SHAREDIR=$(PREFIX)/share/misc
   MANDIR=$(shell if [ -d $(PREFIX)/share/man ] ; then echo $(PREFIX)/share/man ; else echo $(PREFIX)/man ; fi)
   INSTALL=install
   DIRINSTALL=install -d
  diff -Naur pciutils-2.1.11.orig/lib/configure pciutils-2.1.11/lib/configure
  --- pciutils-2.1.11.orig/lib/configure	2003-01-04 12:29:23.000000000 +0000
  +++ pciutils-2.1.11/lib/configure	2003-09-29 16:33:19.000000000 +0000
  @@ -10,7 +10,7 @@
   }
   
   echo_n "Configuring libpci for your system..."
  -sharedir=${1:-/usr/share}
  +sharedir=${1:-/usr/share/misc}
   version=${2:-0.0}
   sys=`uname -s`
   rel=`uname -r`
  
  
  
  1.1                  patches/pciutils/pciutils-2.1.11-unused-1.patch
  
  Index: pciutils-2.1.11-unused-1.patch
  ===================================================================
  Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
  Date: 2003-09-29
  Initial Package Version: 2.1.11
  Origin: Mandrake CVS
  Description: Fixes all Compile Variable Issues
   
  diff -Naur pciutils-2.1.11.orig/lib/access.c pciutils-2.1.11/lib/access.c
  --- pciutils-2.1.11.orig/lib/access.c	2003-01-04 11:04:39.000000000 +0000
  +++ pciutils-2.1.11/lib/access.c	2003-09-29 16:37:36.000000000 +0000
  @@ -116,7 +116,7 @@
   }
   
   static void
  -pci_null_debug(char * UNUSED msg, ...)
  +pci_null_debug(char * msg UNUSED, ...)
   {
   }
   
  diff -Naur pciutils-2.1.11.orig/lib/dump.c pciutils-2.1.11/lib/dump.c
  --- pciutils-2.1.11.orig/lib/dump.c	2002-03-30 15:39:25.000000000 +0000
  +++ pciutils-2.1.11/lib/dump.c	2003-09-29 16:37:36.000000000 +0000
  @@ -70,12 +70,12 @@
   }
   
   static void
  -dump_cleanup(struct pci_access * UNUSED a)
  +dump_cleanup(struct pci_access * a UNUSED)
   {
   }
   
   static void
  -dump_scan(struct pci_access * UNUSED a)
  +dump_scan(struct pci_access * a UNUSED)
   {
   }
   
  @@ -97,7 +97,7 @@
   }
   
   static int
  -dump_write(struct pci_dev * UNUSED d, int UNUSED pos, byte * UNUSED buf, int UNUSED len)
  +dump_write(struct pci_dev * d UNUSED, int pos UNUSED, byte * buf UNUSED, int len UNUSED)
   {
     d->access->error("Writing to dump files is not supported.");
     return 0;
  diff -Naur pciutils-2.1.11.orig/lib/filter.c pciutils-2.1.11/lib/filter.c
  --- pciutils-2.1.11.orig/lib/filter.c	2002-03-30 15:39:25.000000000 +0000
  +++ pciutils-2.1.11/lib/filter.c	2003-09-29 16:37:36.000000000 +0000
  @@ -14,7 +14,7 @@
   #include "internal.h"
   
   void
  -pci_filter_init(struct pci_access * UNUSED a, struct pci_filter *f)
  +pci_filter_init(struct pci_access * a UNUSED, struct pci_filter *f)
   {
     f->bus = f->slot = f->func = -1;
     f->vendor = f->device = -1;
  diff -Naur pciutils-2.1.11.orig/lib/i386-ports.c pciutils-2.1.11/lib/i386-ports.c
  --- pciutils-2.1.11.orig/lib/i386-ports.c	2002-03-30 15:39:25.000000000 +0000
  +++ pciutils-2.1.11/lib/i386-ports.c	2003-09-29 16:37:36.000000000 +0000
  @@ -36,7 +36,7 @@
   }
   
   static void
  -conf12_cleanup(struct pci_access * UNUSED a)
  +conf12_cleanup(struct pci_access * a UNUSED)
   {
     iopl(3);
     intel_iopl_set = -1;
  
  
  



More information about the patches mailing list