linux-um archives
 help / color / mirror / Atom feed
* [uml-devel] GIT pull on work_struct reduction tree
       [not found] <20061122130222.24778.62947.stgit@warthog.cambridge.redhat.com>
@ 2006-12-05 19:52 ` David Howells
  2006-12-05 20:16   ` Andrew Morton
  0 siblings, 1 reply; 4+ messages in thread
From: David Howells @ 2006-12-05 19:52 UTC (permalink / raw)
  To: torvalds, akpm, linux-kernel
  Cc: David Howells, jdike, linux-arm-kernel, user-mode-linux-devel


Hi Linus,

I've brought the work_struct reduction patches up to date.  They're in a GIT
tree for you to pull when you're ready.

Note that I've added three #errors into the code for functions that queue bits
of their stack and then return without waiting:

	arch/arm/mach-omap1/board-h3.c: h3_transceiver_mode()
	arch/arm/mach-omap2/board-h4.c: h4_transceiver_mode()
	arch/um/drivers/net_kern.c: uml_net_interrupt()

David

---
The following changes since commit e62438630ca37539c8cc1553710bbfaa3cf960a7:
  Matthew Wilcox:
        Centralise definitions of sector_t and blkcnt_t

are found in the git repository at:

  git://git.infradead.org/users/dhowells/workq-2.6.git

David Howells:
      WorkStruct: Separate delayable and non-delayable events.
      WorkStruct: Typedef the work function prototype
      WorkStruct: Merge the pending bit into the wq_data pointer
      WorkStruct: Pass the work_struct pointer instead of context data
      WorkStruct: make allyesconfig
      Merge branch 'master' of git://git.kernel.org/.../torvalds/linux-2.6
      Merge branch 'master' of git://git.kernel.org/.../torvalds/linux-2.6
      WorkQueue: Fix up arch-specific work items where possible

 arch/arm/common/sharpsl_pm.c                    |   22 +-
 arch/arm/mach-omap1/board-h3.c                  |    3 
 arch/arm/mach-omap1/board-nokia770.c            |    6 -
 arch/arm/mach-omap1/leds-osk.c                  |    4 
 arch/arm/mach-omap2/board-h4.c                  |    3 
 arch/arm/mach-pxa/akita-ioexp.c                 |    6 -
 arch/i386/kernel/cpu/mcheck/non-fatal.c         |    6 -
 arch/i386/kernel/smpboot.c                      |   11 +
 arch/i386/kernel/tsc.c                          |    4 
 arch/ia64/hp/sim/simserial.c                    |    4 
 arch/ia64/kernel/mca.c                          |    8 -
 arch/ia64/kernel/smpboot.c                      |   12 +
 arch/mips/kernel/kspd.c                         |    4 
 arch/powerpc/platforms/embedded6xx/ls_uart.c    |    4 
 arch/powerpc/platforms/powermac/backlight.c     |   12 +
 arch/powerpc/platforms/pseries/eeh_event.c      |    6 -
 arch/ppc/8260_io/fcc_enet.c                     |   21 +-
 arch/ppc/8xx_io/fec.c                           |   21 +-
 arch/s390/appldata/appldata_base.c              |    6 -
 arch/um/drivers/chan_kern.c                     |    2 
 arch/um/drivers/mconsole_kern.c                 |    4 
 arch/um/drivers/net_kern.c                      |    1 
 arch/um/drivers/port_kern.c                     |    4 
 arch/x86_64/kernel/mce.c                        |    6 -
 arch/x86_64/kernel/smpboot.c                    |   12 +
 arch/x86_64/kernel/time.c                       |    4 
 block/as-iosched.c                              |    7 -
 block/cfq-iosched.c                             |    8 +
 block/ll_rw_blk.c                               |    8 -
 crypto/cryptomgr.c                              |    7 -
 drivers/acpi/osl.c                              |   25 +--
 drivers/ata/libata-core.c                       |   25 +--
 drivers/ata/libata-eh.c                         |    2 
 drivers/ata/libata-scsi.c                       |   14 +
 drivers/ata/libata.h                            |    4 
 drivers/atm/idt77252.c                          |    9 +
 drivers/block/aoe/aoe.h                         |    2 
 drivers/block/aoe/aoecmd.c                      |    4 
 drivers/block/aoe/aoedev.c                      |    2 
 drivers/block/floppy.c                          |   10 +
 drivers/block/paride/pd.c                       |    8 -
 drivers/block/paride/pseudo.h                   |   10 +
 drivers/block/sx8.c                             |    7 -
 drivers/block/ub.c                              |    8 -
 drivers/bluetooth/bcm203x.c                     |    7 -
 drivers/char/cyclades.c                         |    9 +
 drivers/char/drm/via_dmablit.c                  |    6 -
 drivers/char/epca.c                             |    8 -
 drivers/char/esp.c                              |   14 +
 drivers/char/genrtc.c                           |    4 
 drivers/char/hvsi.c                             |   16 +-
 drivers/char/ip2/i2lib.c                        |   12 +
 drivers/char/ip2/ip2main.c                      |   23 +-
 drivers/char/isicom.c                           |   12 +
 drivers/char/moxa.c                             |    8 -
 drivers/char/mxser.c                            |    9 +
 drivers/char/pcmcia/synclink_cs.c               |    8 -
 drivers/char/random.c                           |    6 -
 drivers/char/sonypi.c                           |    4 
 drivers/char/specialix.c                        |   14 +
 drivers/char/synclink.c                         |    9 +
 drivers/char/synclink_gt.c                      |   10 +
 drivers/char/synclinkmp.c                       |    8 -
 drivers/char/sysrq.c                            |    4 
 drivers/char/tpm/tpm.c                          |    6 -
 drivers/char/tty_io.c                           |   31 ++-
 drivers/char/vt.c                               |    6 -
 drivers/connector/cn_queue.c                    |    8 +
 drivers/connector/connector.c                   |   31 ++-
 drivers/cpufreq/cpufreq.c                       |   10 +
 drivers/cpufreq/cpufreq_conservative.c          |    7 -
 drivers/cpufreq/cpufreq_ondemand.c              |   28 ++-
 drivers/i2c/chips/ds1374.c                      |   12 +
 drivers/ieee1394/hosts.c                        |    9 +
 drivers/ieee1394/hosts.h                        |    2 
 drivers/ieee1394/sbp2.c                         |   28 ++-
 drivers/ieee1394/sbp2.h                         |    2 
 drivers/infiniband/core/addr.c                  |    6 -
 drivers/infiniband/core/cache.c                 |    7 -
 drivers/infiniband/core/cm.c                    |   19 +-
 drivers/infiniband/core/cma.c                   |   10 +
 drivers/infiniband/core/iwcm.c                  |    6 -
 drivers/infiniband/core/mad.c                   |   25 +--
 drivers/infiniband/core/mad_priv.h              |    2 
 drivers/infiniband/core/mad_rmpp.c              |   18 +-
 drivers/infiniband/core/sa_query.c              |   10 +
 drivers/infiniband/core/uverbs_mem.c            |    7 -
 drivers/infiniband/hw/ipath/ipath_user_pages.c  |    7 -
 drivers/infiniband/hw/mthca/mthca_catas.c       |    4 
 drivers/infiniband/ulp/ipoib/ipoib.h            |   16 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c         |   25 +--
 drivers/infiniband/ulp/ipoib/ipoib_main.c       |   10 +
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c  |   22 +-
 drivers/infiniband/ulp/iser/iser_verbs.c        |   10 +
 drivers/infiniband/ulp/srp/ib_srp.c             |    7 -
 drivers/input/keyboard/atkbd.c                  |    6 -
 drivers/input/keyboard/lkkbd.c                  |    6 -
 drivers/input/keyboard/sunkbd.c                 |    6 -
 drivers/input/mouse/psmouse-base.c              |    7 -
 drivers/input/serio/libps2.c                    |    6 -
 drivers/isdn/act2000/capi.c                     |    4 
 drivers/isdn/act2000/capi.h                     |    2 
 drivers/isdn/act2000/module.c                   |   18 +-
 drivers/isdn/capi/kcapi.c                       |   14 +
 drivers/isdn/hisax/amd7930_fn.c                 |    7 -
 drivers/isdn/hisax/config.c                     |    9 +
 drivers/isdn/hisax/hfc4s8s_l1.c                 |    5 -
 drivers/isdn/hisax/hfc_2bds0.c                  |    9 +
 drivers/isdn/hisax/hfc_pci.c                    |    6 -
 drivers/isdn/hisax/hfc_sx.c                     |    6 -
 drivers/isdn/hisax/icc.c                        |    6 -
 drivers/isdn/hisax/isac.c                       |    6 -
 drivers/isdn/hisax/isar.c                       |    6 -
 drivers/isdn/hisax/isdnl1.c                     |    6 -
 drivers/isdn/hisax/w6692.c                      |    6 -
 drivers/isdn/i4l/isdn_net.c                     |    6 -
 drivers/isdn/pcbit/drv.c                        |    4 
 drivers/isdn/pcbit/layer2.c                     |    6 -
 drivers/isdn/pcbit/pcbit.h                      |    2 
 drivers/macintosh/rack-meter.c                  |   16 +-
 drivers/macintosh/smu.c                         |    4 
 drivers/md/dm-crypt.c                           |    8 -
 drivers/md/dm-mpath.c                           |   18 +-
 drivers/md/dm-raid1.c                           |    4 
 drivers/md/dm-snap.c                            |    9 +
 drivers/md/kcopyd.c                             |    4 
 drivers/media/dvb/b2c2/flexcop-pci.c            |    9 +
 drivers/media/dvb/cinergyT2/cinergyT2.c         |   18 +-
 drivers/media/dvb/dvb-core/dvb_net.c            |   19 +-
 drivers/media/dvb/dvb-usb/dvb-usb-remote.c      |    7 -
 drivers/media/dvb/dvb-usb/dvb-usb.h             |    2 
 drivers/media/video/cpia_pp.c                   |   20 ++
 drivers/media/video/cx88/cx88-input.c           |    6 -
 drivers/media/video/ir-kbd-i2c.c                |    6 -
 drivers/media/video/pvrusb2/pvrusb2-context.c   |   13 +
 drivers/media/video/saa6588.c                   |    6 -
 drivers/media/video/saa7134/saa7134-empress.c   |    9 +
 drivers/message/fusion/mptfc.c                  |   14 +
 drivers/message/fusion/mptlan.c                 |   29 ++-
 drivers/message/fusion/mptsas.c                 |   25 +--
 drivers/message/fusion/mptspi.c                 |   14 +
 drivers/message/i2o/driver.c                    |    2 
 drivers/message/i2o/exec-osm.c                  |   13 +
 drivers/message/i2o/i2o_block.c                 |   15 +-
 drivers/message/i2o/i2o_block.h                 |    2 
 drivers/misc/tifm_7xx1.c                        |   18 +-
 drivers/mmc/mmc.c                               |   14 +
 drivers/mmc/mmc.h                               |    2 
 drivers/mmc/mmc_sysfs.c                         |   10 -
 drivers/mmc/tifm_sd.c                           |   28 ++-
 drivers/net/8139too.c                           |   26 +--
 drivers/net/bnx2.c                              |    6 -
 drivers/net/cassini.c                           |    6 -
 drivers/net/chelsio/common.h                    |    2 
 drivers/net/chelsio/cphy.h                      |    2 
 drivers/net/chelsio/cxgb2.c                     |   16 +-
 drivers/net/chelsio/my3126.c                    |    8 +
 drivers/net/e100.c                              |    8 -
 drivers/net/e1000/e1000_main.c                  |   10 +
 drivers/net/ehea/ehea_main.c                    |    9 +
 drivers/net/hamradio/baycom_epp.c               |   14 +
 drivers/net/irda/mcs7780.c                      |    6 -
 drivers/net/irda/sir-dev.h                      |    2 
 drivers/net/irda/sir_dev.c                      |    8 -
 drivers/net/iseries_veth.c                      |   12 +
 drivers/net/ixgb/ixgb_main.c                    |   10 +
 drivers/net/myri10ge/myri10ge.c                 |    7 -
 drivers/net/netxen/netxen_nic.h                 |    3 
 drivers/net/netxen/netxen_nic_init.c            |    5 -
 drivers/net/netxen/netxen_nic_main.c            |   19 +-
 drivers/net/ns83820.c                           |   10 +
 drivers/net/pcmcia/xirc2ps_cs.c                 |   12 +
 drivers/net/phy/phy.c                           |    9 +
 drivers/net/plip.c                              |   38 ++--
 drivers/net/qla3xxx.c                           |   20 +-
 drivers/net/qla3xxx.h                           |    4 
 drivers/net/r8169.c                             |   23 +-
 drivers/net/s2io.c                              |   16 +-
 drivers/net/s2io.h                              |    2 
 drivers/net/sis190.c                            |   13 +
 drivers/net/skge.c                              |   15 +-
 drivers/net/skge.h                              |    2 
 drivers/net/smc91x.c                            |   15 +-
 drivers/net/spider_net.c                        |    9 +
 drivers/net/sungem.c                            |    6 -
 drivers/net/tg3.c                               |    6 -
 drivers/net/tlan.c                              |   23 ++
 drivers/net/tlan.h                              |    1 
 drivers/net/tulip/21142.c                       |    7 -
 drivers/net/tulip/timer.c                       |    7 -
 drivers/net/tulip/tulip.h                       |    7 -
 drivers/net/tulip/tulip_core.c                  |    3 
 drivers/net/wan/pc300_tty.c                     |   23 +-
 drivers/net/wireless/bcm43xx/bcm43xx.h          |    2 
 drivers/net/wireless/bcm43xx/bcm43xx_main.c     |   20 +-
 drivers/net/wireless/hostap/hostap.h            |    2 
 drivers/net/wireless/hostap/hostap_ap.c         |   19 +-
 drivers/net/wireless/hostap/hostap_hw.c         |   21 +-
 drivers/net/wireless/hostap/hostap_info.c       |    6 -
 drivers/net/wireless/hostap/hostap_main.c       |    8 -
 drivers/net/wireless/ipw2100.c                  |   47 +++--
 drivers/net/wireless/ipw2100.h                  |   10 +
 drivers/net/wireless/ipw2200.c                  |  227 ++++++++++++-----------
 drivers/net/wireless/ipw2200.h                  |   16 +-
 drivers/net/wireless/orinoco.c                  |   28 ++-
 drivers/net/wireless/prism54/isl_ioctl.c        |    8 +
 drivers/net/wireless/prism54/isl_ioctl.h        |    4 
 drivers/net/wireless/prism54/islpci_dev.c       |    5 -
 drivers/net/wireless/prism54/islpci_eth.c       |    4 
 drivers/net/wireless/prism54/islpci_eth.h       |    2 
 drivers/net/wireless/prism54/islpci_mgt.c       |    2 
 drivers/net/wireless/zd1211rw/zd_mac.c          |   30 ++-
 drivers/net/wireless/zd1211rw/zd_mac.h          |    6 -
 drivers/oprofile/cpu_buffer.c                   |    9 +
 drivers/oprofile/cpu_buffer.h                   |    2 
 drivers/pci/hotplug/shpchp.h                    |    4 
 drivers/pci/hotplug/shpchp_core.c               |    2 
 drivers/pci/hotplug/shpchp_ctrl.c               |   19 +-
 drivers/pci/pcie/aer/aerdrv.c                   |    2 
 drivers/pci/pcie/aer/aerdrv.h                   |    2 
 drivers/pci/pcie/aer/aerdrv_core.c              |    8 -
 drivers/pcmcia/ds.c                             |    7 -
 drivers/rtc/rtc-dev.c                           |    7 -
 drivers/scsi/NCR5380.c                          |   11 +
 drivers/scsi/NCR5380.h                          |    4 
 drivers/scsi/aha152x.c                          |    4 
 drivers/scsi/imm.c                              |   12 +
 drivers/scsi/ipr.c                              |    9 +
 drivers/scsi/libiscsi.c                         |    7 -
 drivers/scsi/libsas/sas_discover.c              |   22 +-
 drivers/scsi/libsas/sas_event.c                 |   14 +
 drivers/scsi/libsas/sas_init.c                  |    6 -
 drivers/scsi/libsas/sas_internal.h              |   12 +
 drivers/scsi/libsas/sas_phy.c                   |   45 +++--
 drivers/scsi/libsas/sas_port.c                  |   30 ++-
 drivers/scsi/ppa.c                              |   12 +
 drivers/scsi/qla4xxx/ql4_os.c                   |    7 -
 drivers/scsi/scsi_scan.c                        |    7 -
 drivers/scsi/scsi_sysfs.c                       |   10 +
 drivers/scsi/scsi_transport_fc.c                |   60 +++---
 drivers/scsi/scsi_transport_iscsi.c             |    8 +
 drivers/scsi/scsi_transport_spi.c               |    7 -
 drivers/spi/pxa2xx_spi.c                        |    9 +
 drivers/spi/spi_bitbang.c                       |    7 -
 drivers/usb/atm/cxacru.c                        |   12 +
 drivers/usb/atm/speedtch.c                      |   15 +-
 drivers/usb/atm/ueagle-atm.c                    |    6 -
 drivers/usb/class/cdc-acm.c                     |    6 -
 drivers/usb/core/hub.c                          |   20 +-
 drivers/usb/core/message.c                      |    7 -
 drivers/usb/core/usb.c                          |    9 +
 drivers/usb/gadget/ether.c                      |    6 -
 drivers/usb/host/u132-hcd.c                     |   62 ++----
 drivers/usb/input/hid-core.c                    |    7 -
 drivers/usb/misc/appledisplay.c                 |   11 +
 drivers/usb/misc/ftdi-elan.c                    |   86 +++------
 drivers/usb/misc/phidgetkit.c                   |   21 +-
 drivers/usb/misc/phidgetmotorcontrol.c          |   11 +
 drivers/usb/net/kaweth.c                        |    9 +
 drivers/usb/net/pegasus.c                       |    6 -
 drivers/usb/net/pegasus.h                       |    2 
 drivers/usb/net/usbnet.c                        |    7 -
 drivers/usb/serial/aircable.c                   |   13 +
 drivers/usb/serial/digi_acceleport.c            |   14 +
 drivers/usb/serial/ftdi_sio.c                   |   19 +-
 drivers/usb/serial/keyspan_pda.c                |   22 +-
 drivers/usb/serial/usb-serial.c                 |    7 -
 drivers/usb/serial/whiteheat.c                  |   15 +-
 drivers/video/console/fbcon.c                   |    6 -
 drivers/video/pxafb.c                           |    7 -
 fs/9p/mux.c                                     |   16 +-
 fs/aio.c                                        |   16 +-
 fs/bio.c                                        |    6 -
 fs/file.c                                       |    6 -
 fs/gfs2/glock.c                                 |    8 -
 fs/ncpfs/inode.c                                |    8 -
 fs/ncpfs/sock.c                                 |   20 +-
 fs/nfs/client.c                                 |    2 
 fs/nfs/namespace.c                              |    8 -
 fs/nfs/nfs4_fs.h                                |    2 
 fs/nfs/nfs4renewd.c                             |    5 -
 fs/nfsd/nfs4state.c                             |    7 -
 fs/ocfs2/alloc.c                                |    9 +
 fs/ocfs2/cluster/heartbeat.c                    |   10 +
 fs/ocfs2/cluster/quorum.c                       |    4 
 fs/ocfs2/cluster/tcp.c                          |   78 ++++----
 fs/ocfs2/cluster/tcp_internal.h                 |    8 -
 fs/ocfs2/dlm/dlmcommon.h                        |    2 
 fs/ocfs2/dlm/dlmdomain.c                        |    2 
 fs/ocfs2/dlm/dlmrecovery.c                      |    5 -
 fs/ocfs2/dlm/userdlm.c                          |   10 +
 fs/ocfs2/journal.c                              |    7 -
 fs/ocfs2/journal.h                              |    2 
 fs/ocfs2/ocfs2.h                                |    2 
 fs/ocfs2/super.c                                |    2 
 fs/reiserfs/journal.c                           |   12 +
 fs/xfs/linux-2.6/xfs_aops.c                     |   21 +-
 fs/xfs/linux-2.6/xfs_buf.c                      |    9 +
 include/asm-arm/arch-omap/irda.h                |    2 
 include/linux/aio.h                             |    2 
 include/linux/connector.h                       |    4 
 include/linux/i2o.h                             |    2 
 include/linux/kbd_kern.h                        |    2 
 include/linux/libata.h                          |    7 -
 include/linux/mmc/host.h                        |    2 
 include/linux/ncp_fs_sb.h                       |    8 -
 include/linux/netpoll.h                         |    2 
 include/linux/nfs_fs_sb.h                       |    2 
 include/linux/reiserfs_fs_sb.h                  |    3 
 include/linux/relay.h                           |    2 
 include/linux/sunrpc/rpc_pipe_fs.h              |    2 
 include/linux/sunrpc/xprt.h                     |    2 
 include/linux/tty.h                             |    2 
 include/linux/usb.h                             |    2 
 include/linux/workqueue.h                       |  145 ++++++++++++---
 include/net/ieee80211softmac.h                  |    4 
 include/net/inet_timewait_sock.h                |    2 
 include/net/sctp/structs.h                      |    2 
 include/scsi/libsas.h                           |   23 ++
 include/scsi/scsi_transport_fc.h                |    4 
 include/scsi/scsi_transport_iscsi.h             |    2 
 include/sound/ac97_codec.h                      |    2 
 include/sound/ak4114.h                          |    2 
 ipc/util.c                                      |    7 +
 kernel/kmod.c                                   |   16 +-
 kernel/kthread.c                                |   13 +
 kernel/power/poweroff.c                         |    4 
 kernel/relay.c                                  |   10 +
 kernel/sys.c                                    |    4 
 kernel/workqueue.c                              |  109 +++++++----
 mm/slab.c                                       |   12 +
 mm/swap.c                                       |    4 
 net/atm/lec.c                                   |    9 +
 net/atm/lec.h                                   |    2 
 net/bluetooth/hci_sysfs.c                       |   12 +
 net/bridge/br_if.c                              |   10 +
 net/bridge/br_private.h                         |    2 
 net/core/link_watch.c                           |   13 +
 net/core/netpoll.c                              |   11 +
 net/dccp/minisocks.c                            |    3 
 net/ieee80211/softmac/ieee80211softmac_assoc.c  |   18 +-
 net/ieee80211/softmac/ieee80211softmac_auth.c   |   23 +-
 net/ieee80211/softmac/ieee80211softmac_event.c  |   12 +
 net/ieee80211/softmac/ieee80211softmac_module.c |    4 
 net/ieee80211/softmac/ieee80211softmac_priv.h   |   13 +
 net/ieee80211/softmac/ieee80211softmac_scan.c   |   13 +
 net/ieee80211/softmac/ieee80211softmac_wx.c     |    6 -
 net/ipv4/inet_timewait_sock.c                   |    5 -
 net/ipv4/ipvs/ip_vs_ctl.c                       |    6 -
 net/ipv4/tcp_minisocks.c                        |    3 
 net/irda/ircomm/ircomm_tty.c                    |   11 +
 net/sctp/associola.c                            |   11 +
 net/sctp/endpointola.c                          |   10 +
 net/sctp/inqueue.c                              |    9 -
 net/sunrpc/cache.c                              |    8 -
 net/sunrpc/rpc_pipe.c                           |    8 +
 net/sunrpc/sched.c                              |    8 -
 net/sunrpc/xprt.c                               |    7 -
 net/sunrpc/xprtsock.c                           |   20 +-
 net/xfrm/xfrm_policy.c                          |    8 -
 net/xfrm/xfrm_state.c                           |    8 -
 security/keys/key.c                             |    6 -
 sound/aoa/aoa-gpio.h                            |    2 
 sound/aoa/core/snd-aoa-gpio-feature.c           |   16 +-
 sound/aoa/core/snd-aoa-gpio-pmf.c               |   16 +-
 sound/i2c/other/ak4114.c                        |    8 -
 sound/pci/ac97/ac97_codec.c                     |    7 -
 sound/pci/hda/hda_codec.c                       |   10 +
 sound/pci/hda/hda_local.h                       |    1 
 sound/ppc/tumbler.c                             |    8 +
 370 files changed, 2343 insertions(+), 1851 deletions(-)

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [uml-devel] GIT pull on work_struct reduction tree
  2006-12-05 19:52 ` [uml-devel] GIT pull on work_struct reduction tree David Howells
@ 2006-12-05 20:16   ` Andrew Morton
  2006-12-05 21:05     ` Stefan Richter
  2006-12-05 21:41     ` David Howells
  0 siblings, 2 replies; 4+ messages in thread
From: Andrew Morton @ 2006-12-05 20:16 UTC (permalink / raw)
  To: David Howells
  Cc: jdike, torvalds, linux-kernel, user-mode-linux-devel,
	linux-arm-kernel

On Tue, 05 Dec 2006 19:52:43 +0000
David Howells <dhowells@redhat.com> wrote:

> I've brought the work_struct reduction patches up to date.  They're in a GIT
> tree for you to pull when you're ready.

Given that I (and probably many others) now have a pile of build errors to
fix, it would be nice to have a short-but-full description of what one must
do to fix those up, please.

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [uml-devel] GIT pull on work_struct reduction tree
  2006-12-05 20:16   ` Andrew Morton
@ 2006-12-05 21:05     ` Stefan Richter
  2006-12-05 21:41     ` David Howells
  1 sibling, 0 replies; 4+ messages in thread
From: Stefan Richter @ 2006-12-05 21:05 UTC (permalink / raw)
  To: Andrew Morton
  Cc: jdike, user-mode-linux-devel, linux-kernel, David Howells,
	torvalds, linux-arm-kernel

Andrew Morton wrote:
> On Tue, 05 Dec 2006 19:52:43 +0000
> David Howells <dhowells@redhat.com> wrote:
> 
>> I've brought the work_struct reduction patches up to date.  They're in a GIT
>> tree for you to pull when you're ready.
> 
> Given that I (and probably many others) now have a pile of build errors to
> fix, it would be nice to have a short-but-full description of what one must
> do to fix those up, please.

And how is the merge to be timed anyway? IOW will the manual merging
have to be done by people like Andrew and me, or by David, or by Linus?

(I wanted to set up a 2.6.19"-final" based linux1394-2.6.git branch for
Linus to pull from tomorrow or in the latter half of this week. There
will be conflicts between mine and David's stuff, although nothing
serious. I'm just asking to make it as smooth as possible.)
-- 
Stefan Richter
-=====-=-==- ==-- --=-=
http://arcgraph.de/sr/

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [uml-devel] GIT pull on work_struct reduction tree
  2006-12-05 20:16   ` Andrew Morton
  2006-12-05 21:05     ` Stefan Richter
@ 2006-12-05 21:41     ` David Howells
  1 sibling, 0 replies; 4+ messages in thread
From: David Howells @ 2006-12-05 21:41 UTC (permalink / raw)
  To: Andrew Morton
  Cc: jdike, user-mode-linux-devel, linux-kernel, David Howells,
	torvalds, linux-arm-kernel

Andrew Morton <akpm@osdl.org> wrote:

> > I've brought the work_struct reduction patches up to date.  They're in a GIT
> > tree for you to pull when you're ready.
> 
> Given that I (and probably many others) now have a pile of build errors to
> fix, it would be nice to have a short-but-full description of what one must
> do to fix those up, please.

Okay.

 (1) Any work_struct struct that has one of the following called upon it:

	queue_delayed_work()
	queue_delayed_work_on()
	schedule_delayed_work()
	schedule_delayed_work_on()
	cancel_rearming_delayed_work()
	cancel_rearming_delayed_workqueue()
	cancel_delayed_work()

     needs changing into a delayed_work struct.

     Note that cancel_delayed_work() is often called where it'll be ineffective
     - I think people misunderstand what it does.

 (2) A delayed_work struct must be initialised with:

	__DELAYED_WORK_INITIALIZER
	DECLARE_DELAYED_WORK
	INIT_DELAYED_WORK

     Rather than:

	__WORK_INITIALIZER
	DECLARE_WORK
	INIT_WORK

     Those only apply to work_struct (non-delayable work).

 (3) The initialisation functions no longer take a data argument, and this
     should be deleted.

 (4) Anywhere one of the following is called on a delayed_work struct:

	queue_work()
	queue_work_on()
	schedule_work()
	schedule_work_on()

     it must be converted to the equivalent one of:

	queue_delayed_work()
	queue_delayed_work_on()
	schedule_delayed_work()
	schedule_delayed_work_on()

     and given a 0 timeout argument as an additional argument.  This just
     queues the work item and doesn't set the timer.

 (5) Anywhere the work item's pending flag is examined directly with:

	test_bit(0, &work->pending)

     This should be replaced with the appropriate one of:

	work_pending(work)
	delayed_work_pending(work)

 (6) The work function _must_ be changed to conform to the following prototype:

	void foo_work_func(struct work_struct *work)
	{
		...
	}

     This applies to both work_struct and delayed_work handlers.

     (a) If the arbitary datum previously passed to the initialiser was NULL,
     	 then the work argument should just be ignored.

     (b) If the datum was the address of the structure containing the
     	 work_struct, then something like the following should be used:

	struct foo {
		struct work_struct worker;
		...
	};

	void foo_work_func(struct work_struct *work)
	{
		struct foo *foo = container_of(work, struct foo, worker);
		...
	}

	 If the work_struct can be placed at the beginning of the containing
	 structure this will eliminate the subtraction instruction
	 container_of() might otherwise require.

     (c) If the datum was the address of the structure containing the
     	 delayed_work, then something like the following should be used:

	struct foo {
		struct delayed_work worker;
		...
	};

	void foo_work_func(struct work_struct *work)
	{
		struct foo *foo = container_of(work, struct foo, worker.work);
		...
	}

	 NOTE!  There's an extra ".work" in the container_of() because the
	 work_struct pointed to is embedded within the delayed_work.

     (d) If the datum is not a pointer to the container, but the container is
     	 guaranteed to exist whilst the work handler runs, then the datum can
     	 be stored in an extra variable in the container.

	 The handler would then be formed as for (b) or (c), and the extra
	 variable accessed after the container_of() line.

	 Quite often there's a linked pair of structures, with a work_struct in
	 one being initialised with the address of the other as its datum.  The
	 typical case is struct net_device and the private data.  In this case
	 just adding a back pointer from the private data to the net_device
	 struct seems to work.

     (e) If the auxiliary datum is totally unrelated and can't be stored in an
     	 extra variable because the container might go away, then the
     	 work_struct or delayed_work should be initialised with one of these
     	 instead:

	DECLARE_WORK_NAR
	DECLARE_DELAYED_WORK_NAR
	INIT_WORK_NAR
	INIT_DELAYED_WORK_NAR
	__WORK_INITIALIZER_NAR
	__DELAYED_WORK_INITIALIZER_NAR

	 These take the same arguments as the normal initialisers, but set a
	 flag in the work_struct to indicate that the pending flag is not to be
	 cleared before the work function is called.

	 The datum is then stored in an extra variable in the container:
	
	struct foo {
		struct work_struct worker;
		void *worker_data;
		...
	};

	 And a work item is initialised with something like this:

	void thing(struct foo *foo)
	{
		...
		INIT_WORK_NAR(&foo->worker, foo_work_func);
		foo->worker_data = silly_data;
		...
	}

	 And then the work function releases the work item itself when it has
	 extracted the auxiliary data:

	void foo_work_func(struct work_struct *work)
	{
		struct foo *foo = container_of(work, struct foo, worker);
		void *silly_data = foo->worker_data;
		work_release(work);
		...
	}

	 As an added bonus, you can have multiple auxiliary data if you so
	 desire.  You're not limited to a single word.

 (7) If the work function was being called directly, then rather than passing
     in the auxiliary datum, you have to pass in the address of the work_struct
     instead.  So for a work_struct, you'd change:

	void call_work(struct foo *foo)
	{
		...
	-	foo_work_func(foo);
	+	foo_work_func(&foo->worker);
		...
	}

     And for a delayed_work, you'd do:

	void call_work(struct foo *foo)
	{
		...
	-	foo_work_func(foo);
	+	foo_work_func(&foo->worker.work);
		...
	}

David

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-12-05 21:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20061122130222.24778.62947.stgit@warthog.cambridge.redhat.com>
2006-12-05 19:52 ` [uml-devel] GIT pull on work_struct reduction tree David Howells
2006-12-05 20:16   ` Andrew Morton
2006-12-05 21:05     ` Stefan Richter
2006-12-05 21:41     ` David Howells

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox