Arnd Bergmann noted that he's working on removing the BKL from the Linux kernel, "I've spent some time continuing the work of the people on Cc and many others to remove the big kernel lock from Linux and I now have [a] bkl-removal branch in my git tree". He went on to explain that his branch is working, and lets him run the Linux kernel, "on [a] quad-core machine with the only users of the BKL being mostly obscure device driver modules." Arnd noted that this effort has a long history, "the oldest patch in this series is roughly eight years old and is Willy's patch to remove the BKL from fs/locks.c, and I took a series of patches from Jan that removes it from most of the VFS."
Arnd noted that his patch adds a global mutex to the TTY layer, which he called the 'Big TTY Mutex' and described as, "the basic idea here is to make recursive locking and the release-on-sleep explicit, so every mutex_lock, wait_event, workqueue_flush and schedule in the TTY layer now explicitly releases the BTM before blocking." Alan Cox suggested that this portion of the patch was best dropped for now, "it would be nice to get the other bits in first removing BKL from most of the kernel and building kernels which are non BKL except for the tty layer. That (after Ingo's box from hell has run it a bit) would reasonably test the assertion that the tty layer has no BKL requirements that are driven by [code] external to tty layer code." Andrew Morton suggested that the patches be pushed upstream to their appropriate maintainers for an additional sanity check, "Seems that there might be a few tricksy bits in here. Please do push at least the non-obvious parts out to the relevant people."
From: Arnd Bergmann Subject: [GIT, RFC] Killing the Big Kernel Lock Date: Mar 24, 2:40 pm 2010 I've spent some time continuing the work of the people on Cc and many others to remove the big kernel lock from Linux and I now have bkl-removal branch in my git tree at git://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git that lets me run a kernel on my quad-core machine with the only users of the BKL being mostly obscure device driver modules. The oldest patch in this series is roughly eight years old and is Willy's patch to remove the BKL from fs/locks.c, and I took a series of patches from Jan that removes it from most of the VFS. The other non-obvious changes are: - all file operations that either have an .ioctl method or do not have their own .llseek method used to implicitly require the BKL. I've changed that so they need to explicitly set .llseek = default_llseek, .unlocked_ioctl = default_ioctl, and changed all the code that either has supplied a .ioctl method or looks like it needs the BKL somewhere else, meaning the default_llseek function might actually do something. - The block layer now has a global bkldev_mutex that is used in all block drivers in place of the BKL. The only recursive instance of the BKL was __blkdev_get(), which is now called with the blkdev_mutex held instead of grabbing the BKL. This has some possible performance implications that need to be looked into. - The init/main.c code no longer take the BKL. I figured that this was completely unnecessary because there is no other code running at the same time that takes the BKL. - The most invasive change is in the TTY layer, which has a new global mutex (sorry!). I know that Alan has plans of his own to remove the BKL from this subsystem, so my patches may not go anywhere, but they seem to work fine for me. I've called the new lock the 'Big TTY Mutex' (BTM), a name that probably makes more sense if you happen to speak German. The basic idea here is to make recursive locking and the release-on-sleep explicit, so every mutex_lock, wait_event, workqueue_flush and schedule in the TTY layer now explicitly releases the BTM before blocking. - All drivers that still require the BKL are now listed as 'depends on BKL' in Kconfig, and you can set that symbol to 'y', 'm' or 'n'. If the lock itself is a module, only other modules can use it, and /proc/modules will tell you exactly which ones those are. I've thought about adding a module_init function in that module that will taint the kernel, but so far I haven't done that. - Included is a debugfs file that gives statistics over the BKL usage from early boot on. This is now obsolete and will not get merged, but I'm including it for reference. Frederic has volunteered to help merging all of this upstream, which I very much welcome. The shape that the tree is in now is very inconsistent, especially some of the bits at the end are a bit dodgy and all of it needs more testing. I've built-tested an allmodconfig kernel with CONFIG_BKL disabled on x86_64, i386, powerpc64, powerpc32, s390 and arm to make sure I catch all the modules that depend on BKL, and I've been running various versions of this tree on my desktop machine over the last few weeks while adding stuff. Arnd --- Arnd Bergmann (44): input: kill BKL, fix input_open_file locking ptrace: kill BKL procfs: kill BKL in llseek random: forbid llseek on random chardev x86/microcode: use nonseekable_open perf_event: use nonseekable_open dm: use nonseekable_open vgaarb: use nonseekable_open kvm: don't require BKL nvram: kill BKL do_coredump: do not take BKL hpet: kill BKL, add compat_ioctl proc/pci: kill BKL autofs/autofs4: move compat_ioctl handling into fs usb/mon: kill BKL usage fat: push down BKL sunrpc: push down BKL pcmcia: push down BKL vfs: kill BKL in default_llseek BKL: introduce CONFIG_BKL. bkl-removal: make fops->ioctl and default_llseek optional x86: update defconfig to CONFIG_BKL=m bkl removal: make unlocked_ioctl mandatory bkl removal: use default_llseek in code that uses the BKL BKL removal: mark remaining users as 'depends on BKL' tty: replace BKL with a new tty_lock tty: make atomic_write_lock release tty_lock tty: make tty_port->mutex nest under tty_lock tty: make termios mutex nest under tty_lock tty: make ldisc_mutex nest under tty_lock tty: never hold tty_lock() while getting tty_mutex ppp: use big tty mutex tty: release tty lock when blocking tty: implement BTM as mutex instead of BKL briq_panel: do not use BTM affs: remove leftover unlock_kernel kvm: don't require BKL block: replace BKL with global mutex init: kill BKL usage debug: instrument big kernel lock BKL removal: make the BKL modular Matthew Wilcox (1): [RFC] Remove BKL from fs/locks.c Jan Blunck (19): JFS: Free sbi memory in error path BKL: Explicitly add BKL around get_sb/fill_super BKL: Remove outdated comment and include BKL: Remove BKL from Amiga FFS BKL: Remove BKL from BFS BKL: Remove BKL from CifsFS BKL: Remove BKL from ext3 fill_super() BKL: Remove BKL from ext3_put_super() and ext3_remount() BKL: Remove BKL from ext4 filesystem BKL: Remove smp_lock.h from exofs BKL: Remove BKL from HFS BKL: Remove BKL from HFS+ BKL: Remove BKL from JFS BKL: Remove BKL from NILFS2 BKL: Remove BKL from NTFS BKL: Remove BKL from cgroup BKL: Remove BKL from do_new_mount() ext2: Add ext2_sb_info s_lock spinlock BKL: Remove BKL from ext2 filesystem --
From: Alan Cox Subject: Re: [GIT, RFC] Killing the Big Kernel Lock Date: Mar 24, 3:10 pm 2010 > - The most invasive change is in the TTY layer, which has a new global > mutex (sorry!). I know that Alan has plans of his own to remove the BKL > from this subsystem, so my patches may not go anywhere, but they seem > to work fine for me. > I've called the new lock the 'Big TTY Mutex' (BTM), a name that probably > makes more sense if you happen to speak German. Chuckle (I don't but I looked it up) > The basic idea here is to make recursive locking and the release-on-sleep > explicit, so every mutex_lock, wait_event, workqueue_flush and schedule > in the TTY layer now explicitly releases the BTM before blocking. I'm not sure if that is actually the path of sanity (yours at least), nor the right way to whack the other BKL users whose use is horrible but essentially private. It would be nice to get the other bits in first removing BKL from most of the kernel and building kernels which are non BKL except for the tty layer. That (after Ingo's box from hell has run it a bit) would reasonably test the assertion that the tty layer has no BKL requirements that are driven by external to tty layer code. That to me would test the biggest question of all and be a reasonably good base from which to then either apply the tty BTM patches or attack the problem properly with the BKL localised to one subtree. Alan --
From: Arnd Bergmann Subject: Re: [GIT, RFC] Killing the Big Kernel Lock Date: Mar 24, 3:25 pm 2010 On Wednesday 24 March 2010 23:10:16 Alan Cox wrote: > > The basic idea here is to make recursive locking and the release-on-sleep > > explicit, so every mutex_lock, wait_event, workqueue_flush and schedule > > in the TTY layer now explicitly releases the BTM before blocking. > > I'm not sure if that is actually the path of sanity (yours at least), nor > the right way to whack the other BKL users whose use is horrible but > essentially private. > > It would be nice to get the other bits in first removing BKL from most of > the kernel and building kernels which are non BKL except for the tty > layer. That (after Ingo's box from hell has run it a bit) would > reasonably test the assertion that the tty layer has no BKL requirements > that are driven by external to tty layer code. Yes, we can do that by applying all patches except 'tty: implement BTM as mutex instead of BKL', which is the only one in the tty section of my series that should really change the behaviour. Building a kernel with all other BKL users gone currently implies disabling usbcore, videodev, soundcore, i4l and capi, as well as a large number of obsolete device drivers. The only ones that I can imagine still interacting with the tty code are the ISDN drivers, and even those look pretty unlikely. > That to me would test the biggest question of all and be a reasonably > good base from which to then either apply the tty BTM patches or attack > the problem properly with the BKL localised to one subtree. We could also make the 'tty: implement BTM as mutex instead of BKL' patch a config option that makes it possible to test it out some more while conservative users just continue to get the BKL semantics. Arnd --
From: Andrew Morton Subject: Re: [GIT, RFC] Killing the Big Kernel Lock Date: Mar 24, 2:07 pm 2010 On Wed, 24 Mar 2010 22:40:54 +0100 Arnd Bergmann <arnd@arndb.de> wrote: > I've spent some time continuing the work of the people on Cc and many others > to remove the big kernel lock from Linux <looks inside ptrace.c> Seems that there might be a few tricksy bits in here. Please do push at least the non-obvious parts out to the relevant people. It'd be interesting to see the overall diffstat? --
From: Arnd Bergmann Subject: Re: [GIT, RFC] Killing the Big Kernel Lock Date: Mar 25, 3:26 am 2010 On Wednesday 24 March 2010, Andrew Morton wrote: > On Wed, 24 Mar 2010 22:40:54 +0100 Arnd Bergmann <arnd@arndb.de> wrote: > > > I've spent some time continuing the work of the people on Cc and many others > > to remove the big kernel lock from Linux > > <looks inside ptrace.c> > > Seems that there might be a few tricksy bits in here. Please do push > at least the non-obvious parts out to the relevant people. Sure, that is certainly the plan. Regarding the ptrace bits, this is one of a handful of places where the BKL was put in by someone a really long time ago but with the rest of the series applied, it becomes evident that there is nothing whatsoever that it serializes with, so removing the BKL here does not make the situation worse. It could still be a bug that needs to be fixed by adding a new serialization method no matter if the BKL is there or not. > It'd be interesting to see the overall diffstat? Let me give you three separate diffstats. One is for the trivial pushdown of the BKL into all the ioctl and llseek functions as well as marking all remaining users as 'depends on BKL' in Kconfig, the second one is for the TTY layer conversion to the Big TTY Mutex and the third one is all the rest. Arnd --- Big TTY Mutex conversion: drivers/char/Makefile | 2 + drivers/char/amiserial.c | 16 ++-- drivers/char/cyclades.c | 20 ++-- drivers/char/epca.c | 4 +- drivers/char/isicom.c | 10 +- drivers/char/istallion.c | 20 ++-- drivers/char/mxser.c | 10 +- drivers/char/n_hdlc.c | 16 ++-- drivers/char/n_r3964.c | 10 +- drivers/char/pty.c | 8 +- drivers/char/riscom8.c | 8 +- drivers/char/rocket.c | 8 +- drivers/char/serial167.c | 4 +- drivers/char/specialix.c | 10 +- drivers/char/stallion.c | 12 ++-- drivers/char/sx.c | 12 ++-- drivers/char/synclink.c | 10 ++- drivers/char/synclink_gt.c | 8 +- drivers/char/synclinkmp.c | 12 ++-- drivers/char/tty_buffer.c | 2 +- drivers/char/tty_io.c | 123 +++++++++++++++------------ drivers/char/tty_ioctl.c | 36 ++++---- drivers/char/tty_ldisc.c | 53 +++++++----- drivers/char/tty_lock.c | 100 ++++++++++++++++++++++ drivers/char/tty_port.c | 6 +- drivers/char/vc_screen.c | 4 +- drivers/char/vt.c | 4 +- drivers/char/vt_ioctl.c | 12 ++-- drivers/isdn/i4l/isdn_common.c | 20 ++-- drivers/isdn/i4l/isdn_tty.c | 8 +- drivers/net/irda/irtty-sir.c | 5 +- drivers/net/ppp_generic.c | 29 +++--- drivers/serial/68360serial.c | 4 +- drivers/serial/crisv10.c | 8 +- drivers/serial/serial_core.c | 42 +++++----- drivers/staging/strip/strip.c | 2 +- drivers/usb/class/cdc-acm.c | 2 +- drivers/usb/serial/usb-serial.c | 18 ++-- drivers/video/console/vgacon.c | 4 +- include/linux/init_task.h | 1 + include/linux/sched.h | 1 + include/linux/tty.h | 180 +++++++++++++++++++++++++++++++++++++++ kernel/fork.c | 1 + ioctl/llseek pushdown, Kconfig: 43 files changed, 590 insertions(+), 275 deletions(-) Documentation/DocBook/kernel-hacking.tmpl | 2 +- Documentation/filesystems/vfs.txt | 3 +- arch/arm/kernel/etm.c | 1 - arch/cris/arch-v10/drivers/ds1302.c | 3 - arch/cris/arch-v10/drivers/gpio.c | 2 - arch/cris/arch-v10/drivers/i2c.c | 2 - arch/cris/arch-v10/drivers/pcf8563.c | 3 - arch/cris/arch-v10/drivers/sync_serial.c | 4 +- arch/cris/arch-v32/drivers/cryptocop.c | 4 +- arch/cris/arch-v32/drivers/i2c.c | 2 - arch/cris/arch-v32/drivers/mach-a3/gpio.c | 2 - arch/cris/arch-v32/drivers/mach-fs/gpio.c | 2 - arch/cris/arch-v32/drivers/pcf8563.c | 5 +- arch/cris/arch-v32/drivers/sync_serial.c | 4 +- arch/ia64/kernel/perfmon.c | 2 - arch/ia64/sn/kernel/sn2/sn_hwperf.c | 2 - arch/m68k/bvme6000/rtc.c | 2 - arch/m68k/mvme16x/rtc.c | 2 - arch/powerpc/platforms/iseries/Kconfig | 1 - arch/s390/Kconfig | 1 - arch/um/drivers/harddog_kern.c | 2 - arch/um/drivers/hostaudio_kern.c | 3 - arch/um/drivers/mmapper_kern.c | 3 - arch/x86/Kconfig | 3 +- arch/x86/kvm/Kconfig | 1 - drivers/block/DAC960.c | 3 +- drivers/block/Kconfig | 6 +- drivers/block/paride/pg.c | 2 - drivers/block/paride/pt.c | 2 - drivers/block/pktcdvd.c | 3 - drivers/char/Kconfig | 25 +- drivers/char/apm-emulation.c | 2 - drivers/char/applicom.c | 2 - drivers/char/ds1302.c | 1 - drivers/char/ds1620.c | 2 - drivers/char/dtlk.c | 2 - drivers/char/generic_nvram.c | 2 - drivers/char/genrtc.c | 2 - drivers/char/i8k.c | 2 - drivers/char/ip2/ip2main.c | 1 - drivers/char/ipmi/Kconfig | 2 - drivers/char/ipmi/ipmi_devintf.c | 2 - drivers/char/ipmi/ipmi_watchdog.c | 2 - drivers/char/istallion.c | 1 - drivers/char/lp.c | 1 - drivers/char/mmtimer.c | 1 - drivers/char/nwflash.c | 1 - drivers/char/pcmcia/Kconfig | 4 +- drivers/char/raw.c | 4 - drivers/char/rio/rio_linux.c | 1 - drivers/char/stallion.c | 1 - drivers/char/sx.c | 1 - drivers/char/uv_mmtimer.c | 1 - drivers/char/viotape.c | 1 - drivers/crypto/Kconfig | 2 +- drivers/firewire/Kconfig | 1 - drivers/firewire/core-cdev.c | 2 - drivers/gpu/drm/Kconfig | 5 +- drivers/gpu/drm/i810/i810_dma.c | 2 - drivers/gpu/drm/i830/i830_dma.c | 2 - drivers/hid/Kconfig | 2 +- drivers/hid/usbhid/Kconfig | 2 +- drivers/hid/usbhid/hiddev.c | 3 +- drivers/hwmon/Kconfig | 2 +- drivers/hwmon/fschmd.c | 2 - drivers/ide/Kconfig | 1 - drivers/ide/ide-tape.c | 1 - drivers/ieee1394/Kconfig | 6 +- drivers/ieee1394/dv1394.c | 2 - drivers/ieee1394/raw1394.c | 2 - drivers/ieee1394/video1394.c | 4 +- drivers/infiniband/Kconfig | 6 +- drivers/infiniband/core/ucm.c | 2 - drivers/infiniband/core/ucma.c | 2 - drivers/infiniband/core/user_mad.c | 3 - drivers/infiniband/core/uverbs_main.c | 11 +- drivers/input/joystick/Kconfig | 2 +- drivers/input/misc/Kconfig | 13 +- drivers/input/misc/hp_sdc_rtc.c | 2 - drivers/input/misc/uinput.c | 1 - drivers/input/mouse/Kconfig | 4 +- drivers/input/serio/Kconfig | 1 - drivers/input/tablet/Kconfig | 8 +- drivers/input/touchscreen/Kconfig | 2 +- drivers/isdn/Kconfig | 2 - drivers/isdn/capi/Kconfig | 2 +- drivers/isdn/capi/capi.c | 1 - drivers/isdn/divert/divert_procfs.c | 2 - drivers/isdn/hardware/eicon/Kconfig | 2 +- drivers/isdn/hysdn/Kconfig | 2 +- drivers/isdn/i4l/Kconfig | 1 - drivers/isdn/i4l/isdn_common.c | 1 - drivers/isdn/mISDN/Kconfig | 1 - drivers/isdn/mISDN/timerdev.c | 3 - drivers/macintosh/Kconfig | 7 +- drivers/macintosh/ans-lcd.c | 2 - drivers/macintosh/nvram.c | 2 - drivers/macintosh/via-pmu.c | 2 - drivers/media/Kconfig | 5 +- drivers/media/dvb/bt8xx/Kconfig | 2 +- drivers/media/dvb/bt8xx/dst_ca.c | 1 - drivers/media/dvb/dvb-core/dmxdev.c | 3 - drivers/media/dvb/dvb-core/dvb_ca_en50221.c | 3 - drivers/media/dvb/dvb-core/dvb_frontend.c | 5 +- drivers/media/dvb/dvb-core/dvb_net.c | 3 - drivers/media/dvb/firewire/Kconfig | 2 +- drivers/media/dvb/firewire/firedtv-ci.c | 3 - drivers/media/dvb/ttpci/Kconfig | 2 +- drivers/media/dvb/ttpci/av7110.c | 3 - drivers/media/dvb/ttpci/av7110_av.c | 5 - drivers/media/dvb/ttpci/av7110_ca.c | 3 - drivers/media/video/Kconfig | 13 +- drivers/media/video/cpia.c | 2 - drivers/media/video/v4l2-dev.c | 2 - drivers/message/fusion/Kconfig | 2 +- drivers/message/i2o/Kconfig | 2 +- drivers/misc/Kconfig | 2 +- drivers/mtd/Kconfig | 1 - drivers/mtd/mtdchar.c | 1 - drivers/mtd/ubi/Kconfig | 2 +- drivers/mtd/ubi/cdev.c | 2 - drivers/net/Kconfig | 1 - drivers/net/appletalk/Kconfig | 1 - drivers/net/ppp_generic.c | 4 +- drivers/net/wan/Kconfig | 2 +- drivers/net/wireless/Kconfig | 4 +- drivers/net/wireless/airo.c | 9 - drivers/net/wireless/ray_cs.c | 3 - drivers/pci/hotplug/Kconfig | 2 +- drivers/pcmcia/Kconfig | 3 +- drivers/platform/x86/Kconfig | 1 - drivers/pnp/isapnp/Kconfig | 2 +- drivers/rtc/Kconfig | 1 - drivers/rtc/rtc-m41t80.c | 1 - drivers/s390/block/Kconfig | 2 +- drivers/s390/char/Kconfig | 2 +- drivers/s390/char/fs3270.c | 1 - drivers/s390/char/tape_char.c | 2 +- drivers/s390/cio/chsc_sch.c | 2 - drivers/s390/crypto/zcrypt_api.c | 1 - drivers/s390/scsi/zfcp_cfdc.c | 2 - drivers/sbus/char/envctrl.c | 1 - drivers/sbus/char/openprom.c | 1 - drivers/scsi/3w-9xxx.c | 2 - drivers/scsi/3w-sas.c | 2 - drivers/scsi/3w-xxxx.c | 2 - drivers/scsi/Kconfig | 28 +- drivers/scsi/aacraid/linit.c | 1 - drivers/scsi/dpt_i2o.c | 2 - drivers/scsi/gdth.c | 2 - drivers/scsi/megaraid.c | 2 - drivers/scsi/megaraid/Kconfig.megaraid | 6 +- drivers/scsi/megaraid/megaraid_mm.c | 2 - drivers/scsi/megaraid/megaraid_sas.c | 1 - drivers/scsi/mpt2sas/Kconfig | 2 +- drivers/scsi/mpt2sas/mpt2sas_ctl.c | 1 - drivers/scsi/osd/Kconfig | 2 +- drivers/scsi/osd/osd_uld.c | 2 - drivers/scsi/osst.c | 2 - drivers/scsi/pmcraid.c | 2 - drivers/scsi/st.c | 1 - drivers/spi/spidev.c | 2 - drivers/staging/comedi/comedi_fops.c | 2 - drivers/staging/dream/pmem.c | 3 - drivers/staging/dream/qdsp5/audio_aac.c | 2 - drivers/staging/dream/qdsp5/audio_mp3.c | 2 - drivers/staging/poch/poch.c | 3 - drivers/staging/sep/sep_driver.c | 2 - drivers/staging/vme/devices/vme_user.c | 2 - drivers/telephony/Kconfig | 2 +- drivers/telephony/ixj.c | 1 - drivers/usb/Kconfig | 2 +- drivers/usb/class/Kconfig | 1 - drivers/usb/class/usblp.c | 2 - drivers/usb/gadget/Kconfig | 2 - drivers/usb/gadget/printer.c | 1 - drivers/usb/host/Kconfig | 2 +- drivers/usb/misc/Kconfig | 8 +- drivers/usb/misc/idmouse.c | 2 - drivers/usb/misc/iowarrior.c | 1 - drivers/usb/misc/rio500.c | 1 - drivers/usb/misc/sisusbvga/Kconfig | 2 +- fs/adfs/Kconfig | 1 - fs/afs/Kconfig | 1 - fs/autofs/Kconfig | 1 - fs/autofs/root.c | 1 - fs/autofs4/Kconfig | 1 - fs/autofs4/dev-ioctl.c | 2 - fs/btrfs/super.c | 1 - fs/coda/Kconfig | 1 - fs/coda/pioctl.c | 3 - fs/coda/psdev.c | 2 - fs/ecryptfs/Kconfig | 1 - fs/ecryptfs/file.c | 2 - fs/ecryptfs/miscdev.c | 2 - fs/fat/Kconfig | 3 - fs/freevxfs/Kconfig | 1 - fs/hfsplus/Kconfig | 1 - fs/hfsplus/dir.c | 2 - fs/hfsplus/inode.c | 2 - fs/hpfs/Kconfig | 1 - fs/ioctl.c | 11 +- fs/isofs/Kconfig | 1 - fs/jffs2/Kconfig | 1 - fs/ncpfs/Kconfig | 1 - fs/ncpfs/dir.c | 2 - fs/ncpfs/file.c | 1 - fs/nfs/Kconfig | 2 +- fs/nfsd/Kconfig | 1 - fs/ocfs2/Kconfig | 1 - fs/qnx4/Kconfig | 1 - fs/read_write.c | 34 + fs/reiserfs/Kconfig | 1 - fs/smbfs/Kconfig | 1 - fs/smbfs/dir.c | 2 - fs/smbfs/file.c | 1 - fs/squashfs/Kconfig | 1 - fs/udf/Kconfig | 1 - fs/udf/dir.c | 2 - fs/udf/file.c | 1 - fs/ufs/Kconfig | 2 +- include/linux/fs.h | 5 + kernel/power/Kconfig | 2 +- lib/Kconfig.debug | 2 +- lib/kernel_lock.c | 37 +- net/bluetooth/hidp/Kconfig | 1 - net/ipx/Kconfig | 1 - net/irda/Kconfig | 2 +- net/irda/irnet/Kconfig | 2 +- net/socket.c | 1 - net/sunrpc/Kconfig | 4 +- net/wanrouter/Kconfig | 2 +- net/x25/Kconfig | 2 +- sound/Kconfig | 2 +- sound/core/control.c | 2 - sound/core/oss/pcm_oss.c | 2 - sound/core/pcm_native.c | 2 - sound/core/seq/seq_clientmgr.c | 2 - sound/oss/au1550_ac97.c | 30 +- sound/oss/dmasound/dmasound_core.c | 2 - sound/oss/msnd_pinnacle.c | 2 - sound/oss/sh_dac_audio.c | 3 - sound/oss/swarm_cs4297a.c | 3 - sound/oss/vwsnd.c | 2 - sound/soc/soc-core.c | 2 - virt/kvm/kvm_main.c | 1 - 248 files changed, 190 insertions(+), 516 deletions(-) The rest: arch/arm/lib/uaccess_with_memcpy.c | 1 + arch/x86/configs/x86_64_defconfig | 29 +- arch/x86/kernel/microcode_core.c | 6 +- block/bsg.c | 2 - block/compat_ioctl.c | 8 +- block/ioctl.c | 24 +- drivers/block/DAC960.c | 4 +- drivers/block/aoe/aoechr.c | 6 +- drivers/block/cciss.c | 4 +- drivers/block/paride/pg.c | 4 +- drivers/block/paride/pt.c | 16 +- drivers/char/briq_panel.c | 1 + drivers/char/dsp56k.c | 1 + drivers/char/hpet.c | 96 +++-- drivers/char/mwave/mwavedd.c | 1 + drivers/char/nvram.c | 7 +- drivers/char/pcmcia/cm4000_cs.c | 1 + drivers/char/pcmcia/cm4040_cs.c | 1 + drivers/char/random.c | 2 + drivers/char/snsc.c | 1 + drivers/char/tlclk.c | 1 + drivers/char/toshiba.c | 1 + drivers/char/xilinx_hwicap/xilinx_hwicap.c | 1 + drivers/gpu/vga/vgaarb.c | 4 +- drivers/hid/hidraw.c | 1 + drivers/input/serio/serio_raw.c | 1 + drivers/isdn/capi/capifs.c | 10 +- drivers/md/dm-ioctl.c | 2 + drivers/media/dvb/dvb-core/dvbdev.c | 1 + drivers/misc/phantom.c | 1 + drivers/pci/proc.c | 4 +- drivers/pcmcia/pcmcia_ioctl.c | 23 +- drivers/sbus/char/display7seg.c | 1 + drivers/sbus/char/jsflash.c | 20 +- drivers/scsi/aacraid/linit.c | 1 + drivers/scsi/ch.c | 1 + drivers/scsi/sg.c | 22 +- drivers/usb/core/file.c | 1 + drivers/usb/core/inode.c | 5 + drivers/usb/gadget/inode.c | 12 +- drivers/usb/misc/usblcd.c | 1 + drivers/usb/mon/mon_bin.c | 14 +- drivers/watchdog/cpwd.c | 1 + fs/adfs/super.c | 8 +- fs/affs/super.c | 14 +- fs/afs/super.c | 5 + fs/autofs/root.c | 67 +++- fs/autofs4/root.c | 69 +++- fs/bad_inode.c | 4 + fs/bfs/inode.c | 7 +- fs/block_dev.c | 20 +- fs/cifs/cifsfs.c | 9 +- fs/coda/inode.c | 8 +- fs/compat_ioctl.c | 43 +-- fs/ecryptfs/main.c | 4 + fs/exec.c | 6 - fs/exofs/super.c | 1 - fs/ext2/inode.c | 5 +- fs/ext2/super.c | 58 ++- fs/ext3/super.c | 12 - fs/ext4/super.c | 11 - fs/fat/dir.c | 11 +- fs/fat/fat.h | 2 +- fs/fat/file.c | 33 ++- fs/fat/namei_msdos.c | 7 +- fs/fat/namei_vfat.c | 7 +- fs/freevxfs/vxfs_lookup.c | 1 + fs/freevxfs/vxfs_super.c | 7 +- fs/hfs/super.c | 6 +- fs/hfsplus/super.c | 5 - fs/hpfs/super.c | 8 +- fs/hppfs/hppfs.c | 2 +- fs/ioctl.c | 2 + fs/isofs/dir.c | 1 + fs/isofs/inode.c | 8 +- fs/jffs2/super.c | 11 +- fs/jfs/super.c | 22 +- fs/locks.c | 110 +++-- fs/namespace.c | 2 - fs/ncpfs/inode.c | 8 +- fs/nfs/super.c | 24 + fs/nilfs2/ioctl.c | 1 - fs/nilfs2/super.c | 10 - fs/ntfs/super.c | 24 +- fs/ocfs2/stack_user.c | 1 + fs/ocfs2/super.c | 5 + fs/proc/base.c | 10 +- fs/proc/inode.c | 8 +- fs/qnx4/dir.c | 1 + fs/qnx4/inode.c | 8 +- fs/read_write.c | 8 + fs/reiserfs/super.c | 4 + fs/smbfs/inode.c | 5 + fs/squashfs/super.c | 6 + fs/super.c | 3 - fs/udf/super.c | 8 +- fs/ufs/super.c | 5 + include/linux/auto_fs.h | 1 + include/linux/blkdev.h | 6 + include/linux/ext2_fs_sb.h | 6 + include/linux/fs.h | 2 + include/linux/sched.h | 2 + include/linux/smp_lock.h | 57 ++- init/main.c | 5 - kernel/cgroup.c | 4 - kernel/perf_event.c | 2 + kernel/ptrace.c | 10 - kernel/sched.c | 17 + kernel/trace/blktrace.c | 14 +- kernel/trace/trace.c | 8 - lib/Kconfig.debug | 17 + lib/Makefile | 4 + lib/kernel_lock.c | 104 +----- lib/kernel_lock_core.c | 307 +++++++++++++ net/sunrpc/cache.c | 30 +- net/sunrpc/rpc_pipe.c | 9 +- sound/core/timer.c | 5 +- sound/sound_core.c | 1 + virt/kvm/kvm_main.c | 6 + 120 files changed, 1156 insertions(+), 540 deletions(-) --
From: Jiri Kosina Subject: Re: [GIT, RFC] Killing the Big Kernel Lock Date: Mar 25, 5:55 am 2010 On Wed, 24 Mar 2010, Arnd Bergmann wrote: > I've spent some time continuing the work of the people on Cc and many others > to remove the big kernel lock from Linux and I now have bkl-removal branch > in my git tree at git://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git > that lets me run a kernel on my quad-core machine with the only users of the BKL > being mostly obscure device driver modules. config USB tristate "Support for Host-side USB" depends on USB_ARCH_HAS_HCD && BKL Well, that's very interesting definition of "obscure" :) -- Jiri Kosina SUSE Labs, Novell Inc. --
From: Arnd Bergmann Subject: Re: [GIT, RFC] Killing the Big Kernel Lock Date: Mar 25, 6:06 am 2010 On Thursday 25 March 2010, Jiri Kosina wrote: > On Wed, 24 Mar 2010, Arnd Bergmann wrote: > > > I've spent some time continuing the work of the people on Cc and many others > > to remove the big kernel lock from Linux and I now have bkl-removal branch > > in my git tree at git://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git > > that lets me run a kernel on my quad-core machine with the only users of the BKL > > being mostly obscure device driver modules. > > config USB > tristate "Support for Host-side USB" > depends on USB_ARCH_HAS_HCD && BKL > > Well, that's very interesting definition of "obscure" :) > That's why I said /mostly/ obscure modules. There are soundcore, usb-core, drm, vfat and a few other very common ones, along with many obscure ones. Arnd --
From: Andi Kleen Subject: Re: [GIT, RFC] Killing the Big Kernel Lock Date: Mar 28, 2:58 pm 2010 Jiri Kosina <jkosina@suse.cz> writes: > On Wed, 24 Mar 2010, Arnd Bergmann wrote: > >> I've spent some time continuing the work of the people on Cc and many others >> to remove the big kernel lock from Linux and I now have bkl-removal branch >> in my git tree at git://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git >> that lets me run a kernel on my quad-core machine with the only users of the BKL >> being mostly obscure device driver modules. > > config USB > tristate "Support for Host-side USB" > depends on USB_ARCH_HAS_HCD && BKL > > Well, that's very interesting definition of "obscure" :) From a quick grep at least EHCI doesn't seem to need it? Except for those two guys in core/*.c: /* keep API that guarantees BKL */ lock_kernel(); retval = driver->ioctl(intf, ctl->ioctl_code, buf); unlock_kernel(); if (retval == -ENOIOCTLCMD) retval = -ENOTTY; I guess that could be just moved into the low level modules with unlocked_ioctl And one use in the usbfs which seems quite bogus and can be probably removed. -Andi -- ak@linux.intel.com -- Speaking for myself only. --
From: Arnd Bergmann Subject: Re: [GIT, RFC] Killing the Big Kernel Lock Date: Mar 25, 6:38 am 2010 On Thursday 25 March 2010, Arnd Bergmann wrote: > On Thursday 25 March 2010, Jiri Kosina wrote: > > config USB > > tristate "Support for Host-side USB" > > depends on USB_ARCH_HAS_HCD && BKL > > > > Well, that's very interesting definition of "obscure" :) > > > > That's why I said /mostly/ obscure modules. There are soundcore, usb-core, drm, > vfat and a few other very common ones, along with many obscure ones. FWIW, this is the full list of 148 modules that require the BKL in an x86 allmodconfig, which is probably the configuration with the largest code coverage. Arnd sound/soundcore.ko sound/soc/snd-soc-core.ko sound/oss/sound.ko sound/oss/msnd_pinnacle.ko sound/oss/msnd_classic.ko sound/core/snd.ko sound/core/snd-pcm.ko sound/core/seq/snd-seq.ko sound/core/oss/snd-pcm-oss.ko net/x25/x25.ko net/wanrouter/wanrouter.ko net/sunrpc/sunrpc.ko net/irda/irnet/irnet.ko net/irda/irda.ko net/ipx/ipx.ko net/appletalk/appletalk.ko fs/ufs/ufs.ko fs/udf/udf.ko fs/squashfs/squashfs.ko fs/smbfs/smbfs.ko fs/reiserfs/reiserfs.ko fs/qnx4/qnx4.ko fs/ocfs2/ocfs2_stack_user.ko fs/ocfs2/ocfs2.ko fs/nfsd/nfsd.ko fs/nfs/nfs.ko fs/ncpfs/ncpfs.ko fs/lockd/lockd.ko fs/jffs2/jffs2.ko fs/isofs/isofs.ko fs/hpfs/hpfs.ko fs/hfsplus/hfsplus.ko fs/freevxfs/freevxfs.ko fs/fat/vfat.ko fs/fat/msdos.ko fs/fat/fat.ko fs/ecryptfs/ecryptfs.ko fs/coda/coda.ko fs/autofs4/autofs4.ko fs/autofs/autofs.ko fs/afs/kafs.ko fs/adfs/adfs.ko drivers/usb/misc/usblcd.ko drivers/usb/misc/sisusbvga/sisusbvga.ko drivers/usb/misc/rio500.ko drivers/usb/misc/iowarrior.ko drivers/usb/misc/idmouse.ko drivers/usb/host/uhci-hcd.ko drivers/usb/gadget/gadgetfs.ko drivers/usb/gadget/g_printer.ko drivers/usb/core/usbcore.ko drivers/usb/class/usblp.ko drivers/telephony/ixj.ko drivers/scsi/st.ko drivers/scsi/scsi_tgt.ko drivers/scsi/pmcraid.ko drivers/scsi/osst.ko drivers/scsi/osd/osd.ko drivers/scsi/mpt2sas/mpt2sas.ko drivers/scsi/megaraid/megaraid_sas.ko drivers/scsi/megaraid/megaraid_mm.ko drivers/scsi/megaraid.ko drivers/scsi/gdth.ko drivers/scsi/dpt_i2o.ko drivers/scsi/ch.ko drivers/scsi/aacraid/aacraid.ko drivers/scsi/3w-xxxx.ko drivers/scsi/3w-sas.ko drivers/scsi/3w-9xxx.ko drivers/rtc/rtc-m41t80.ko drivers/pci/hotplug/cpqphp.ko drivers/net/wireless/ray_cs.ko drivers/net/wireless/airo.ko drivers/net/wan/cosa.ko drivers/net/ppp_generic.ko drivers/mtd/ubi/ubi.ko drivers/mtd/mtdchar.ko drivers/misc/phantom.ko drivers/message/i2o/i2o_config.ko drivers/message/fusion/mptctl.ko drivers/media/video/zoran/zr36067.ko drivers/media/video/videodev.ko drivers/media/video/usbvision/usbvision.ko drivers/media/video/usbvideo/vicam.ko drivers/media/video/tlg2300/poseidon.ko drivers/media/video/stv680.ko drivers/media/video/stradis.ko drivers/media/video/stkwebcam.ko drivers/media/video/se401.ko drivers/media/video/s2255drv.ko drivers/media/video/pwc/pwc.ko drivers/media/video/dabusb.ko drivers/media/video/cx88/cx8800.ko drivers/media/video/cx88/cx88-blackbird.ko drivers/media/video/cx23885/cx23885.ko drivers/media/video/cpia.ko drivers/media/video/bt8xx/bttv.ko drivers/media/radio/si470x/radio-usb-si470x.ko drivers/media/dvb/ttpci/dvb-ttpci.ko drivers/media/dvb/firewire/firedtv.ko drivers/media/dvb/dvb-core/dvb-core.ko drivers/media/dvb/bt8xx/dst_ca.ko drivers/isdn/mISDN/mISDN_core.ko drivers/isdn/i4l/isdn.ko drivers/isdn/hysdn/hysdn.ko drivers/isdn/hardware/eicon/divas.ko drivers/isdn/hardware/eicon/diva_mnt.ko drivers/isdn/hardware/eicon/diva_idi.ko drivers/isdn/divert/dss1_divert.ko drivers/isdn/capi/capifs.ko drivers/isdn/capi/capi.ko drivers/input/serio/serio_raw.ko drivers/input/misc/uinput.ko drivers/infiniband/core/rdma_ucm.ko drivers/infiniband/core/ib_uverbs.ko drivers/infiniband/core/ib_umad.ko drivers/infiniband/core/ib_ucm.ko drivers/ieee1394/video1394.ko drivers/ieee1394/raw1394.ko drivers/ieee1394/dv1394.ko drivers/ide/ide-tape.ko drivers/hwmon/fschmd.ko drivers/hid/usbhid/usbhid.ko drivers/hid/hid.ko drivers/gpu/drm/i830/i830.ko drivers/gpu/drm/i810/i810.ko drivers/gpu/drm/drm.ko drivers/firewire/firewire-core.ko drivers/char/toshiba.ko drivers/char/tlclk.ko drivers/char/stallion.ko drivers/char/raw.ko drivers/char/ppdev.ko drivers/char/pcmcia/cm4040_cs.ko drivers/char/pcmcia/cm4000_cs.ko drivers/char/mwave/mwave.ko drivers/char/lp.ko drivers/char/istallion.ko drivers/char/ipmi/ipmi_watchdog.ko drivers/char/ipmi/ipmi_devintf.ko drivers/char/ip2/ip2.ko drivers/char/i8k.ko drivers/char/dtlk.ko drivers/char/applicom.ko drivers/block/pktcdvd.ko drivers/block/paride/pt.ko drivers/block/paride/pg.ko drivers/block/DAC960.ko --

It lives!
Oh, Jeremy! I had just about given up on Kerneltrap. Great to see updates!
Indeed
... I've almost given up on kernel trap.
Good to see it up and running again.
- Gilboa
KernelTrap gets updated?!
KernelTrap gets updated?! What is this, an April Fools joke?
I hope not! :)
out with BKL?
april 1
The BKL removal is no joke
LWN had an article covering the same (but covering different aspects of it) a couple days ago. This article's legit. :-)
I like having both KT and LWN handy, since they give me different perspectives. Welcome back, KT!
yay!
news again! :)
many thanks Jeremy!
GOOD
GOOD
jKIVJlu
fvLGPmnO
werrrewr
101117042018PMSilkroad Gold | SRO Gold | Silkroad online gold |
[心肝宝贝].8
我
,ugg kopen
我为你付出所有的
我的担忧
我的揭密
我的呼吸
你的笑
绝对地蜜意
你的哭
相对地惋惜
由于你
让我清楚性命的真理
可晓得
你的不警惕
会让我
伤心一辈子
我是乐意为了你
今生永不渝
为我你要好好自己维护自己
缓缓地学习不要干焦急
一步一步走出每一个谷底
坚韧不拔
为我你要好好本人珍重身材
在每一段的路总回想深悟你
心肝法宝
不要猜忌最爱就是你
不要疑惑最爱的是你
你
你是我毕生的独一
你的声音
你的激励
我的意思
假如没好好的身体
你我怎能永远在一起
外面的风跟雨
已不断忘却
17岁男孩花式滑水横穿英吉利海峡(图)
英国17岁男
环球网记者贺娟娟报道,mp3 suppliers,据英国《每日电讯报》9月7日消息,英国17岁男孩将入选世界吉尼斯记录,原因是他是世界第一人使用花式滑水的方式越过英吉利海峡的。
报道称,mp4 suppliers,这位名叫爱德华・博松的男孩在5日的时候,成功使用花式划水穿越了英吉利海峡。他目前正上高中。尽管14次从滑板上滑落,但他最终赢得了成功。虽然之前已经有很多人成功穿越了英吉利海峡,但目前为止还没有人使用他的这种方式穿越。
证实之后,爱德华・博松将正式的入选吉尼斯,名称为“最快使用花式滑水越过英吉利海峡者”。爱德华・博松的梦想是到剑桥读大学,并向儿童慈善机构捐助1000英镑。目前,他需要向吉尼斯提供他穿越当日的档案,包括录影带、图片、时间记录以及见证人的陈述。
4岁女童从16楼坠下仅右腿骨折(图)
婷婷在医院接受治疗 婷婷从这栋楼的第16楼坠地
专家分析,应该是很多偶然因素救了小女孩的命
昨日上午,在成都羊西线附近一小区,家住16楼的婷婷不慎从飘窗摔下楼。不幸中的万幸是,在送入省医院做完各项检查后,医生发现她只有右腿骨折。
小女孩捡回一条命,让家人喜出望外。同时,很多人觉得简直不可思议:从16楼摔下,为什么只有腿部骨折?
4岁女孩从16楼坠下
昨日中午12点,省医院急诊科。“医生,快救救我女儿!”刘兵夫妻俩泪如泉涌。
他们的女儿婷婷从120救护车上被抬下来,右腿固定着木板,眼睛一睁一闭。
“乖乖,你几岁了?”为了不让小女孩睡着,医护人员问她。
“4岁。”婷婷说。医生立即给她进行各项检查。
在等待检查结果的过程中,婷婷全身插着管子,意识有些模糊,吓坏了一旁的父母。
“婷婷,不要睡,妈妈带你去海洋世界。”母亲唐家田(音)捧着女儿的脸,凑在她耳边不停地说话,试图让孩子保持清醒。父亲刘兵则跪在病床前,紧紧握着孩子的小手:“幺儿,加油,坚强点,discount mp3!”
婷婷时不时努力睁开眼睛,点头表示回答。不一会儿,来了一群亲人,看见意识模糊的婷婷,所有人都紧张万分。
不久前,4岁的婷婷意外地从16楼摔下。
检查全身只有右腿骨折
下午2点,医生拿着检查报告出来了:“从各项检查来看,颅内和腹腔都没有出血,全身只有右腿骨折。”
在场的所有人都长长地松了一口气,刘兵夫妇更是激动得哭出声来。
医生说,婷婷之所以意识有些模糊,主要是因为经历了从16楼掉下来的剧烈变化,需要一个缓冲过程,此外各项检查也让她有些疲惫,家人不必太担心。
10多分钟后,婷婷渐渐清醒起来,眼睛大大地睁着,看着周围的亲人,舔舔嘴巴说要喝水。
“乖乖,你眼睛好漂亮,睁着不能闭哦。”听见有人表扬,她露出笑意。
“婷婷,你真的是从16楼摔下来的吗?”很多人觉得不可思议,轻声问她。婷婷点点头。她说自己当时趴在窗台上看爸爸回来没有,结果不知怎么就掉下去了。
女儿坠楼父亲回家才发现
“早知道这样,我无论如何也要带她一起出门。”婷婷的父亲刘兵懊悔不已。
他说,昨日上午,他和女儿在家。10点过,他要出门去趟银行,让婷婷跟他一起去。
可女儿盯着电视不动:“爸爸,我就在家里。”他特地关好窗户锁好门,然后下楼,留下婷婷一个人在家。
出门前,刘兵还专门嘱咐女儿:“乖乖在家看电视,哪里也别去。”
20多分钟后,刘兵回家,电视机前没有婷婷。他还以为孩子在跟他捉迷藏,就打开衣柜到处找。找了几个房间都没看见女儿,他有些慌了。
突然,他看到飘窗窗户打开了,立即跑到窗边往下看,眼前的一幕令他几乎晕厥过去:婷婷躺在楼下草地上!
他双腿发颤奔到楼下,草坪上留着点点血迹,婷婷不能动弹,只微弱地喊了声“爸爸”。刘兵立即拨打了120。
“你从窗户摔下来了?”刘兵颤抖着问女儿。婷婷点点头。他仰天一看,天啊,16层楼接近50米高,“我当时心里一阵发麻,孩子的命还保得住吗?”
无阻拦物直接摔在草地上
虽然得知女儿只是右腿骨折,但刘兵还是一脸愧疚。
“以前有人劝我给飘窗安防护栏,早知道这么做就好了。”他说,自己从外地来成都做生意,为了婷婷上学方便,才买了现在的房子。家里的飘窗窗台不到1米高,婷婷轻轻松松就翻上去了。
之前刘兵和妻子多次发现婷婷在飘窗上玩,当时就提醒她“上面危险,不准再翻”。亲朋到家里来参观时,觉得飘窗是很大的安全隐患,建议他们装上防护栏。刘兵后来一拖再拖,就忘记了。
16楼高空坠下无大碍,是不是有雨棚、树枝等阻拦,起到了缓冲作用?昨日下午,华西都市报记者来到婷婷出事的楼下,16楼的窗户还开着。
从16楼到地面,没有雨棚、树枝等阻拦物。婷婷坠楼的位置在一块较隐蔽的草坪,与过道有一堵1米左右的围墙隔着。
这块草坪长满厚厚的草,踩上去十分松软。保洁员得知婷婷只是右腿骨折,大为吃惊:“这小女娃娃命好大!”
无论如何,很多人都觉得难以置信:从16楼摔下竟还能活命?
多种因素救了她一命
婷婷不是第一个从高楼坠下奇迹生还的例子。
2008年6月,河南一名建筑工人从24楼坠落,虽身受重伤,但捡回了一条命;2009年7月9日,2岁半的简阳女孩朱鑫萍从21楼坠落,奇迹生还,仅肝、脾挫伤,左股骨骨折;今年7月26日,新西兰一名少年从16楼跌落至水泥地面,只受了些轻伤。
朱鑫萍落地时掉在了刚翻过的松软泥土上,而那位新西兰少年坠落时先摔在停车场顶棚上,这些都起了缓冲作用。可婷婷从16楼坠下,中途没有阻挡物,是什么原因让她奇迹生还呢?
四川大学生物力学专家蒋文涛说,很多偶然因素救了小女孩的命,mp4 outlet。首先,草坪松软是很重要的因素,可以在女孩落地时起很大的缓冲作用。其次,小女孩是腿着地,也有缓冲作用,如果换成头部、腹部、背部,都可能造成致命损伤。加上4岁女孩的骨头很柔软,也加大了缓冲。再次,如果腿着地时与地面垂直,也可能造成关节、内脏极大损伤,以此判断婷婷落地时,右腿可能与地面成一定斜度,才未造成严重后果。
女孩以108公里时速落地
成都实验外国语学校(西区)物理老师蒋国恩用物理公式计算了4岁小女孩婷婷落在水泥地时,双腿可能承受的冲击力。
婷婷的体重(m)约为15公斤,坠落的高度(h)约为48米,她坠落的过程属于自由落体运动。
1.计算下落时间t:
根据自由落体运动公式h=1/2gt[公式h等于二分之一乘g再乘t的平方。h是物体下落的高度,g是重力加速度,t是物体下落的时间。物体做自由落体运动,在(t)时间内下落的高度就是用这个公式计算的。重力加速度g约等于10米每二次方秒]得出:
0.5×10×t=48,得出下落时间t约等于3秒。
2.计算落地速度v:
根据重力加速度公式,计算出落地速度约为108km/h(忽略空气作用)。
3.根据动量公式,计算落地时的动量mv约为465kgm/s(按接触水泥地面来算)。
4.根据冲量公式:FT=mv,推导出F=(mv)/T,则计算结果为F=4650牛顿。如果是双脚着地,相当于465公斤的物体压在这两只脚上。
蒋国恩推测,小女孩落地时应是双腿着地,并伴随一个翻滚过程,增大了受力面积。并且,草地的柔软度在一定程度上大大减少了冲击力。两只脚受力不均,所以只有一条腿骨折。
华西都市报记者 刘晓娜 摄影 刘陈平
会计从业资格证代考.代考网QQ1500351883通用替考网
注册建筑师代考.专业代考网QQ1500351883通用替考网
新托福考试必备8条实用考场小贴士
1、考试采取早签早考原则,所以对于害怕听力部分受到别人影响的同学尽量早到考场排队,早点开考。不过如果过早得话,就很难在厕所偷听口语题了。
2、一进考场在阅读之前就要调试话筒。不过晚来的同学在其他同学开始考阅读的时候调试话筒,会有些影响,一定要集中注意力;
3、每个人开始的时间不一样,所以具体休息的时间不一样,具体休息时间是在听力结束以后。
4、休息的时候就要缠住监考老师,因为上厕所原则上要求一个人回来,下一个人才能去,所以缠住老师是为了让他会记住你,这样就会让你先出去,否则要等很长时间。
5、虽然每个人开始的时间不一样,但是各部分可以答题的时间是固定的,不能跨去做题,顺序是阅读、听力、口语、作文。
6、写完作文之后问你是否提交本次成绩,不要点错,否则就白考了。
7、中间根本没有时间吃东西,考试之前要吃饱。考下来很累,接近虚脱状态。
8、很多同学发现北美或者其他地区的已经考过的IBT考题在大陆地区有重复,甚至有位同学发现10月6号新加坡的新托福 (blog) 考试和10月8号大陆地区一模一样。我们姑且保守的猜测ETS在全球的考试时间排的是很慢的,但是分配到每个国家,时间就分散了。所以请大家要注意观察机经,可能为我们的成功再增添一份筹码。
通用代考网专业从事代考网、替考网、雅思代考、托福代考、中级会计师代考、自考代考、造价员代考、职称英语代考、公务员代考、二级建造师代考、会计从业资格证代考、证劵资格证代考、监理工程师代考、咨询工程师代考、注册建筑师代考、环境评估工程师代考、北京代考,上海代考,天津代考,南京代考,武汉代考,广东代考等各大城市各种职称认证考试的代考工作!通用代考网(www.tydkw.com)始终坚持考生第一,盈利第二的原则,获得广大客户的支持与认可,现发展成国内知名的替考机构和一手操作团队、国内考试咨询拳头品牌! 欢迎各大考生前来咨询,咨询在线QQ:1500351883,您的满意就是我们最大的动力!
在英戈从地狱中已经运行了一点
这(在英戈从地狱中已经运行了一点),将合理的测试断言的TTY层没有被驱动的[代码]外部TTY层代码BKL的要求。'安德鲁莫顿建议补丁推到上游去其相应的维护者额外完整性检查,'似乎有可能是一些调皮位在这里。请做俯卧撑至少非显而易见零件进行有关人民。
çeviri ingilizce türkçe
çeviri ingilizce türkçe sözlük ehliyet ehliyet sınav sonuçları
心痛的感觉
太可怕了,我最最信任的人,我深深爱着的人,就在我还没来得及享受二人世界的婚姻生活的时候,让我对婚姻开始厌烦;在我还在憧憬我的美好未来的时候,他让我对我的未来变的一塌糊涂;在我还没来得及体味幸福是什么的时候,他在我心上狠狠的插了一刀,健康,让我永远也不能康复……恨他、怨他,多么无情的一个男人。那么多的委屈却不能跟任何人讲,人是自己选的,路也是自己选的,能怨谁呢,只能怪自己有眼无珠。
离婚的念头在心里生生息息很多次,我俩在同一个公司,领导对我们都很器重,特别是我的家人,如果做了最坏的决定,我解脱的是我一个人,伤的却是所有人。因此,所有的苦和痛我自己忍着,任凭心里有多痛我都要忍着。
在这个时候,我真想有机会能离开他一段时间,或许这样对谁都好,但又无可奈何。我也想忘记、也想每天都过得开开心心,也想再次用的我真心去感化他,但信任这个东西就像一张被褶皱的纸,及时抚平了依旧会有痕迹。看到他我的心就会痛,真的好难受、好痛苦。真想自己突然失忆,这样痛的感觉就没有了。