dynamic sysfs callbacks
PATCH 2/3 dynamic sysfs callbacks
The previous patch will result in warnings about invalid pointer types when used with the currently defined sysfs callbacks. The following patch updates all sysfs callbacks adding the void * parameter to their function signature. The patch was generated by the following perl & shell script and is 436K uncompressed, so I'm linking to it:
Note that this patch affects the following files:
net/core/net-sysfs.cnet/bridge/br_sysfs_br.cnet/bluetooth/hci_sysfs.c arch/sh/drivers/dma/dma-sysfs.c arch/arm/common/amba.carch/arm/kernel/ecard.carch/arm/kernel/time.carch/ppc/kernel/pci.carch/ppc/syslib/of_device.carch/ppc/syslib/ocp.carch/ia64/sn/kernel/tiocx.c arch/arm26/kernel/ecard.c arch/ppc64/kernel/of_device.c arch/ppc64/kernel/pci.carch/ppc64/kernel/vio.carch/ppc64/kernel/sysfs.c arch/parisc/kernel/drivers.c arch/x86_64/kernel/mce.cdrivers/w1/w1.cdrivers/w1/w1_smem.cdrivers/w1/w1_therm.c drivers/sh/superhyway/superhyway-sysfs.c drivers/i2c/i2c-core.c drivers/i2c/chips/w83l785ts.c drivers/i2c/chips/max1619.c drivers/i2c/chips/smsc47m1.c drivers/i2c/chips/w83781d.c drivers/i2c/chips/smsc47b397.c drivers/i2c/chips/it87.cdrivers/i2c/chips/lm63.cdrivers/i2c/chips/lm75.cdrivers/i2c/chips/lm77.cdrivers/i2c/chips/lm78.cdrivers/i2c/chips/lm80.cdrivers/i2c/chips/lm83.cdrivers/i2c/chips/lm85.cdrivers/i2c/chips/lm87.cdrivers/i2c/chips/lm90.cdrivers/i2c/chips/lm92.c drivers/i2c/chips/adm1021.c drivers/i2c/chips/adm1025.c drivers/i2c/chips/adm1026.c drivers/i2c/chips/adm1031.c drivers/i2c/chips/w83627hf.c drivers/i2c/chips/gl518sm.c drivers/i2c/chips/asb100.c drivers/i2c/chips/gl520sm.c drivers/i2c/chips/pcf8574.c drivers/i2c/chips/pcf8591.c drivers/i2c/chips/fscher.c drivers/i2c/chips/fscpos.c drivers/i2c/chips/ds1621.c drivers/i2c/chips/sis5595.c drivers/i2c/chips/via686a.c drivers/i2c/chips/pc87360.cdrivers/i2c/i2c-dev.cdrivers/dio/dio-sysfs.cdrivers/mca/mca-bus.cdrivers/mmc/mmc_sysfs.cdrivers/pci/pci-sysfs.c drivers/pci/hotplug/cpqphp_sysfs.c drivers/pci/hotplug/shpchp_sysfs.c drivers/pci/probe.cdrivers/pnp/interface.cdrivers/pnp/card.cdrivers/usb/core/sysfs.c drivers/usb/host/ehci-dbg.c drivers/usb/host/ohci-dbg.c drivers/usb/misc/phidgetkit.c drivers/usb/misc/cytherm.c drivers/usb/misc/phidgetservo.c drivers/usb/misc/usbled.c drivers/usb/input/aiptek.c drivers/usb/media/sn9c102_core.c drivers/usb/media/ov511.c drivers/usb/media/stv680.c drivers/usb/storage/scsiglue.c drivers/usb/gadget/file_storage.c drivers/usb/gadget/net2280.c drivers/usb/gadget/dummy_hcd.c drivers/usb/gadget/pxa2xx_udc.c drivers/usb/serial/ftdi_sio.c drivers/base/interface.cdrivers/base/cpu.cdrivers/base/power/sysfs.c drivers/base/firmware_class.cdrivers/base/node.cdrivers/base/dmapool.cdrivers/char/drm/drm_sysfs.cdrivers/char/tpm/tpm.cdrivers/char/mwave/mwavedd.cdrivers/char/hvcs.cdrivers/char/mbcs.cdrivers/eisa/eisa-bus.cdrivers/s390/cio/cmf.cdrivers/s390/cio/ccwgroup.cdrivers/s390/cio/chsc.cdrivers/s390/cio/device.cdrivers/s390/net/lcs.cdrivers/s390/net/qeth_sys.c drivers/s390/net/netiucv.cdrivers/s390/net/claw.cdrivers/s390/net/cu3088.c drivers/s390/net/ctcmain.c drivers/s390/char/raw3270.c drivers/s390/char/vmlogrdr.c drivers/s390/char/tape_core.c drivers/s390/scsi/zfcp_sysfs_driver.c drivers/s390/scsi/zfcp_scsi.c drivers/s390/scsi/zfcp_sysfs_port.c drivers/s390/scsi/zfcp_sysfs_unit.c drivers/s390/scsi/zfcp_sysfs_adapter.c drivers/s390/block/dasd_devmap.c drivers/s390/block/dcssblk.c drivers/scsi/arm/powertec.c drivers/scsi/arm/eesox.c drivers/scsi/lpfc/lpfc_attr.cdrivers/scsi/st.cdrivers/scsi/scsi_debug.c drivers/scsi/scsi_transport_fc.cdrivers/scsi/ipr.cdrivers/scsi/ibmvscsi/ibmvscsi.c drivers/scsi/scsi_transport_spi.c drivers/scsi/3w-xxxx.cdrivers/scsi/3w-9xxx.cdrivers/scsi/scsi_sysfs.cdrivers/scsi/ncr53c8xx.c drivers/scsi/pcmcia/sym53c500_cs.c drivers/scsi/osst.cdrivers/scsi/53c700.c drivers/scsi/scsi_transport_iscsi.c drivers/scsi/megaraid/megaraid_mbox.c drivers/cpufreq/cpufreq_ondemand.c drivers/cpufreq/freq_table.c drivers/cpufreq/cpufreq_userspace.c drivers/cpufreq/cpufreq_stats.c drivers/cpufreq/cpufreq.c drivers/infiniband/hw/mthca/mthca_provider.c drivers/infiniband/ulp/ipoib/ipoib_main.c drivers/infiniband/ulp/ipoib/ipoib_vlan.c drivers/infiniband/core/sysfs.c drivers/infiniband/core/user_mad.c drivers/block/aoe/aoeblk.cdrivers/block/ub.cdrivers/block/genhd.cdrivers/block/viodasd.cdrivers/block/genhd.c.orig drivers/input/mouse/psmouse.h drivers/input/serio/serio.c drivers/input/gameport/gameport.c drivers/input/keyboard/atkbd.c drivers/media/video/bttv-driver.c drivers/media/video/videodev.c drivers/video/fbsysfs.cdrivers/video/gbefb.cdrivers/video/w100fb.c drivers/video/backlight/lcd.c drivers/video/backlight/backlight.c drivers/zorro/zorro-sysfs.c drivers/message/i2o/device.c drivers/message/fusion/mptscsih.c drivers/firmware/efivars.c drivers/ieee1394/nodemgr.cdrivers/ieee1394/sbp2.cdrivers/parisc/pdc_stable.cdrivers/pcmcia/ds.cdrivers/pcmcia/m32r_cfc.cdrivers/pcmcia/m32r_pcc.cdrivers/pcmcia/i82365.cdrivers/pcmcia/soc_common.c drivers/pcmcia/rsrc_nonstatic.c drivers/pcmcia/socket_sysfs.c drivers/macintosh/therm_pm72.c drivers/macintosh/therm_windtunnel.c drivers/macintosh/therm_adt746x.ckernel/ksysfs.ckernel/power/disk.ckernel/power/main.c Documentation/firmware_class/firmware_sample_firmware_class.c Documentation/filesystems/sysfs.txt include/asm-ppc/ocp.h
Following are shell/perl script used to update the source tree:
#!/bin/sh
find linux-2.6.12-rc4-sysfsdyncallback-autoupdate -type f -exec ./updatedyncallback.pl {} \; 2>&1 |tee subs.log
#!/usr/bin/perl
use strict;
my $infile=shift;
if(!defined $infile){
open(IN,"<&STDIN") or die "Could not open an input stream";
}else{
open(IN,"<$infile") or die "Could not open an input stream";
}my $subs = 0;
my $code = "";
while(<IN>){$code.=$_};
close(IN);
$code =~ s/(static[\s\\]+?ssize_t[\s\\]+?[^(;]+?\(\s*?struct[\s\\]+?(?:device|device_driver|subsystem|gendisk|module_attribute|sysdev_attribute|class|class_device|bus_type|cpufreq_policy|subsystem|sys_device)[\s\\]*?\*[^,);]*?,[\s\\]*?char[\s\\]*?\*[^,);]*?)[\s\\]*?\)/$1, void *sdata)/gs && $subs++;
$code =~ s/(static[\s\\]+?ssize_t[\s\\]+?[^(;]+?\(\s*?struct[\s\\]+?(?:device|device_driver|subsystem|gendisk|module_attribute|sysdev_attribute|class|class_device|bus_type|cpufreq_policy|subsystem|sys_device)[\s\\]*?\*[^,);]*?,[\s\\]*?const[\s\\]+?char[\s\\]*?\*[^,);]*?[\s\\]*?,[\s\\]*size_t[^,);]*?)[\s\\]*\)/$1, void *sdata)/gs && $subs++;
if($subs){
if(!defined $infile){
open(OUT,">&STDOUT") or die "Could not open an output stream";
}else{
open(OUT,">$infile") or die "Could not open an output stream";
}
$|;
print OUT $code;
close(OUT);
$infile && print STDOUT "$infile updated.\n";
}