⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pci.agent

📁 这是关于usb等方面的热拔插源代码
💻 AGENT
字号:
#!/bin/sh## PCI-specific hotplug policy agent.## This should handle 2.4.* PCI (including Cardbus)  hotplugging,# with a consistent framework for adding device and driver specific# treatments.## Kernel Cardbus/PCI params are:#	#	ACTION=%s [add or remove]#	PCI_CLASS=%06X#	PCI_ID=%04X:%04X#	PCI_SLOT_NAME=%s#	PCI_SUBSYS_ID=%04X:%04X## If /proc is mounted, /proc/bus/pci/$PCI_SLOT_NAME is almost the name# of the binary device descriptor file ... just change ':' to '/'.## On systems using Linux 2.4.* kernels, be sure to use the right# modutils (2.4.1+).### HISTORY:## 26-Feb-2001	Cleanup, support comments (Gioele Barabucci)# 13-Jan-2001	Initial version of "new" hotplug agent; needs#		retesting.# 17-Jan-2001	Update to latest kernel syntax (Dan Zink)# 15-Feb-2001	Remove use of "<<" (Adam Richter)## $Id: pci.agent,v 1.15 2004/03/26 22:36:38 kroah Exp $#cd /etc/hotplug. ./hotplug.functions# generated by modutils, for current 2.4.x kernelsMAP_CURRENT=$MODULE_DIR/modules.pcimap# accumulates list of modules we may care aboutDRIVERS=if [ "$PCI_CLASS" = ""  -o "$PCI_CLASS" = "" ]; then    mesg Bad PCI agent invocation    exit 1fi## Each modules.usbmap format line corresponds to one entry in a# MODULE_DEVICE_TABLE(pci,...) declaration in a kernel file.## Think of it as a database column with up to three "match specs"# to associate kernel modules with particular devices or classes# of device.  The match specs provide a reasonably good filtering# mechanism, but some driver probe() routines need to provide# extra filtering.#pci_convert_vars (){    pci_class=$((0x$PCI_CLASS))    set $(echo $PCI_ID | sed -e 's/\([^:]*\):\(.*\)/\1 \2/')    pci_id_vendor=$((0x$1))    pci_id_device=$((0x$2))    set $(echo $PCI_SUBSYS_ID | sed -e 's/\([^:]*\):\(.*\)/\1 \2/')    pci_subid_vendor=$((0x$1))    pci_subid_device=$((0x$2))}PCI_ANY=$((0xffffffff))## stdin is "modules.pcimap" syntax# on return, ONE matching module was added to $DRIVERS#pci_map_modules (){    local module ignored    # comment line lists (current) pci_device_id field names    read ignored    # look at each pci_device_id entry    # collect one match in $DRIVERS    while read module vendor device subvendor subdevice class class_mask ignored    do	# comments are lines that start with "#" ...	# be careful, they still get parsed by bash!	case "$module" in	\#*) continue ;;	esac	# convert the fields from hex to dec	vendor=$(($vendor)); device=$(($device))	subvendor=$(($subvendor)); subdevice=$(($subdevice))	class=$(($class)); class_mask=$(($class_mask))	: checkmatch $module	: vendor $vendor $pci_id_vendor	if [ $vendor -ne $PCI_ANY -a $vendor -ne $pci_id_vendor ]; then	    continue	fi	: device $device $pci_id_device	if [ $device -ne $PCI_ANY -a $device -ne $pci_id_device ]; then	    continue	fi	: sub-vendor $subvendor $pci_subid_vendor	if [ $subvendor -ne $PCI_ANY -a $subvendor -ne $pci_subid_vendor ]; then	    continue	fi	: sub-device $subdevice $pci_subid_device	if [ $subdevice -ne $PCI_ANY -a $subdevice -ne $pci_subid_device ]; then	    continue	fi	class_temp=$(($pci_class & $class_mask))	if [ $class_temp -eq $class ]; then	    DRIVERS="$module $DRIVERS"	    : drivers $DRIVERS	    break	fi    done}## What to do with this PCI hotplug event?#case $ACTION inadd)    pci_convert_vars    LABEL="PCI slot $PCI_SLOT_NAME"    # on 2.4 systems, modutils maintains MAP_CURRENT    if [ -r $MAP_CURRENT ]; then    	load_drivers pci $MAP_CURRENT "$LABEL"    fi    if [ "$DRIVERS" = "" ]; then	debug_mesg "... no modules for $LABEL"	exit 2    fi    ;;*)    debug_mesg PCI $ACTION event not supported    exit 1    ;;esac

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -