delaywork的一次使用错误

M2是我现在手上的一个案子,M2是内部的一个项目编号,作为产品生产销售的公司,具体信息我不能透露太多。本人第一次完完全全经历项目,遇到了很多细节和匪夷所思的问题,有些能很快解决,有些却纠结大半个月。今天说其中一个。


大致情况:

M2:MID

上层:Android 2.3.1

底层:Linux2.6.32


Bug来自工厂一次可靠性实验:

3M2试产(改电阻) 20110818.015415开关机试验2011.09.16-09.171010/10开关机几次后就出现无法开机现象(需要复位后才能开机)待技术部确认 不合格
因为此问题最棘手的是,随机性,100次约为5次左右。


在反复的开关机的实验中抓到很珍贵的Log信息:

EXT3-fs: mounted filesystem with ordered data mode.
[    4.713116] kjournald starting.  Commit interval 5 seconds
[    4.836572] rk29_serial_set_termios:fcr=0xa1,irq=67
[    4.838803] enabling adb
[    4.841372] adb_open
[    5.295416] .324.. MMC0 receive the message No-Media from VOLD.====xbw[sd_mmc]====
# [   12.913451] warning: `zygote' uses 32-bit capabilities (legacy support in use)
[   17.415278] =======================================================
[   17.418686] ==== Launching Wi-Fi driver! (Powered by Rockchip) ====
[   17.435423] =======================================================
[   17.438920] wifi_set_power = 1
[   17.460898] rk29sdk_wifi_power: 1
[   17.826254] request_suspend_state: wakeup (3->0) at 17832423423 (2011-09-19 06:30:41.652839811 UTC)
[   18.053054] wifi turn on power
[   18.053260] wifi_set_carddetect = 1
[   18.069395] rk29sdk_wifi_set_carddetect:1
[   18.070566] mmc1, card_present 1
[   18.113884] mmc1: slot status change detected(0-1)
[   18.124244] 
[   18.124250] Dongle Host Driver, version 4.218.248.18
[   18.313963] 
[   18.313968] drivers/mmc/core/core.c...1106..  ===== mmc_rescan Begin....======xbw[mmc1]=====
[   18.393902] 
[   18.393907] mmc_rescan..1137..  ===== Begin to identify card as SDIO-card===xbw[mmc1]===
[   18.571046] rk29_sdmmc_change_clk_div..1440..  newDiv=1, newCLK=21428Khz====xbw[sdio]=====
[   18.644096] mmc1: new SDIO card at address 0001
[   18.666879] DHD: dongle ram size is set to 294912(orig 294912)
[   19.308749] Firmware version = wl0: Dec 20 2010 19:21:39 version 4.218.248.18
[   19.508731] wlan0: Broadcom Dongle Host Driver mac=b4:07:f9:d5:93:a0
[   19.516548] mmc_rescan..1148..  ===== Initialize SDIO successfully. ===xbw[mmc1]===
[   20.035529] mma8452_start::enter
[   21.357267] STA connect received 1
[   51.614472] init: no such service 'runtime'
[   51.628075] init: sys_prop: mis-match msg size recieved: -1 expected: 128
[   51.699391] init: untracked pid 159 exited
[   51.702508] init: untracked pid 149 exited
[   51.706173] init: untracked pid 140 exited
[   51.709021] init: untracked pid 192 exited
[   51.715958] binder: release 83:83 transaction 4935 in, still active
[   51.719380] binder: send failed reply for transaction 4935 to 387:453
[   51.734442] init: untracked pid 162 exited
[   51.760795] alarm_release: clear alarm, pending 0
[   51.762659] alarm_release: clear alarm, pending 0
[   51.767394] alarm_release: clear alarm, pending 0
[   51.772136] alarm_release: clear alarm, pending 0
[   51.780937] init: untracked pid 83 exited
[   51.788400] init: untracked pid 404 exited
[   51.803922] init: untracked pid 333 exited
[   51.805719] init: untracked pid 416 exited
[   51.814087] init: untracked pid 427 exited
[   51.819959] init: untracked pid 365 exited
[   51.821515] init: untracked pid 395 exited
[   51.825824] init: untracked pid 376 exited
[   51.836678] init: untracked pid 315 exited
[   51.849368] init: untracked pid 301 exited
[   51.856276] init: untracked pid 290 exited
[   51.857961] init: untracked pid 282 exited
[   51.861976] init: untracked pid 211 exited
[   51.866390] init: untracked pid 253 exited
[   51.870352] init: untracked pid 350 exited
[   51.875233] init: untracked pid 438 exited
[   51.883476] init: untracked pid 387 exited
[   52.775618] devpts: called with bogus options
[   52.799922] tmpfs: No value for mount option 'relatime'
[   52.805878] tmpfs: No value for mount option 'relatime'
[   52.904340] RESTART_DEBUG : sys_reboot->430->cmd=4321fedc
[   52.909298] rknand_buffer_shutdown pWriteQueue->count = 2!!
[   52.912885] rknand_buffer_shutdown pReadQueue->count = 0!!
[   52.917950] FtlCacheWriteBack
[   52.931844] rknand_buffer_thread exit ... done
[   52.933461] rknand_buffer_reboot exit !!
[   52.937446] VPU: shutdown...done
[   52.941548]  cs42l52  reg =0x2, val=0x0
[   52.945345]  cs42l52  reg =0x3, val=0x0
[   52.949059] run here: cs42l52_i2c_shutdown (Koffu)
[   52.952949] DWC_OTG: dwc_otg_driver_shutdown:: disconnect USB
[   53.174128] drv_exit : gpu clk_disable... done!
[   53.185799] drv_exit : gpu power off... done!
[   53.426360] rk29_fb_io_disable 
[   53.428049] Unable to handle kernel NULL pointer dereference at virtual address 0000003c
[   53.434849] pgd = c0404000
[   53.437392] [0000003c] *pgd=00000000
[   53.440951] Internal error: Oops: 17 [#1] PREEMPT
[   53.445625] last sysfs file: /sys/power/wake_lock
[   53.450304] Modules linked in: wlan rk29xxnand_ko(P)
[   53.455253] CPU: 0    Tainted: P        W   (2.6.32.27 #408)
[   53.460897] PC is at soc_cs42l52_read+0x14/0x68
[   53.465391] LR is at soc_codec_detect_hp+0x14/0xc4
[   53.470159] pc : [<c06ec584>]    lr : [<c06ec92c>]    psr: 60000013
[   53.470171] sp : d2829f68  ip : d2a6bf6c  fp : c11d4eb8
[   53.481593] r10: 00000000  r9 : c11d4ebc  r8 : d2829f94
[   53.486795] r7 : c06ec918  r6 : d2802c88  r5 : d2802c80  r4 : 00000031
[   53.493294] r3 : 0000c350  r2 : d2829f77  r1 : 00000031  r0 : 00000000
[   53.499797] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[   53.507076] Control: 10c5387d  Table: 6e66c019  DAC: 00000017
[   53.512793] 
[   53.512798] PC: 0xc06ec504:
[   53.517037] c504  e2822010 1affffeb e3530020 9a000001 e3e00015 e8bd87f0 e1a04083 e59f2044
[   53.525183] c524  e2844001 e3a01005 e082e184 e7926203 e7d27184 e5de3001 e5de5004 e5de4002
[   53.533329] c544  e1a03203 e5de2003 e1833117 e58c6024 e1833005 e1833184 e1832082 ebffff90
[   53.541476] c564  e3a00000 e8bd87f0 c07e7bf8 e92d401f e30c3350 e1a04001 e58d3000 e28d200f
[   53.549623] c584  e590003c e6ef1071 e3a03001 ebfe3265 e3500000 da000007 e3540031 0a000003
[   53.557769] c5a4  e1a01004 e59f0020 e5dd200f eb02e9db e5dd000f ea000002 e59f0010 eb02e9d7
[   53.565916] c5c4  e3e00000 e28dd010 e8bd8010 c0894ef0 c0894f0f e92d4070 e5904080 e1a05001
[   53.574063] c5e4  e3a0100d e1a00004 ebffffdf e3550000 e3a0100d e20020fc 11a00004 13822003
[   53.582211] 
[   53.582217] LR: 0xc06ec8ac:
[   53.586456] c8ac  e5933000 e5930038 e3500000 0a000000 ebf85dbd e59f4044 e5940000 ebf85dba
[   53.594603] c8cc  e59f0040 e3a03000 e5843000 eb02e911 e2840014 ebf714c0 e3500000 0a000005
[   53.602749] c8ec  e10f3000 f10c0080 e5942004 e3c22001 e5842004 e121f003 e3a00000 e8bd8070
[   53.610896] c90c  c11d4eb4 c090f8f8 c0894fa1 e92d4070 e59f40b0 e3a01031 e5940000 ebffff10
[   53.619043] c92c  e5d43044 e2005008 e1530005 1a000004 e3a000c8 ebf7001a e1a01000 e2840004
[   53.627189] c94c  ea00001e e3550000 e5c45044 1a00000f e1a02005 e3a01020 e5940000 ebfffe8e
[   53.635336] c96c  e1a02005 e3a01021 e5940000 ebfffe8a e1a02005 e3a0101e e5940000 ebfffe86
[   53.643483] c98c  e5940000 e1a02005 e3a0101f ea000006 e3a01020 e3a02018 e5940000 ebfffe7e
[   53.651631] 
[   53.651636] SP: 0xd2829ee8:
[   53.655876] 9ee8  00000067 d2829f24 5e28cc75 00000015 d2829f14 c095934c ffff9faf 00000000
[   53.664023] 9f08  d2a6a000 ffffffff d2829f54 d2802c88 c06ec918 c0484a6c 00000000 00000031
[   53.672169] 9f28  d2829f77 0000c350 00000031 d2802c80 d2802c88 c06ec918 d2829f94 c11d4ebc
[   53.680316] 9f48  00000000 c11d4eb8 d2a6bf6c d2829f68 c06ec92c c06ec584 60000013 ffffffff
[   53.688463] 9f68  0000c350 00000031 d2802c80 60000013 c11d4eb4 c06ec92c d2828000 d2802c80
[   53.696609] 9f88  d2802c88 c04b99cc 000008de 00000000 d281e8c0 c04bd3dc d2829fa0 d2829fa0
[   53.704756] 9fa8  d2802c80 d2821f58 d2829fd4 c04b984c d2802c80 00000000 00000000 00000000
[   53.712903] 9fc8  00000000 c04bd1bc 00000000 00000000 d2829fd8 d2829fd8 00000000 00000000
[   53.721052] 
[   53.721057] IP: 0xd2a6beec:
[   53.725296] beec  00000000 00000000 00000000 00000000 00000000 00000601 d2a6a000 d29019c0
[   53.733443] bf0c  00000000 d2a6bf10 d2a6bf10 c067391c d2802c80 d2a6bf20 d2a6bf20 c0673900
[   53.741589] bf2c  00000000 00200200 ffff9f93 c04b95e4 d2a6bf1c c093a640 00000000 00000000
[   53.749736] bf4c  00000000 00000000 00000000 ffffffff ffffff64 0000009c 00002664 00000001
[   53.757883] bf6c  d2a6bf6c d2a6bf6c 00000001 d2a6bf78 d2a6bf78 00000000 00000001 d2a6bf88
[   53.766030] bf8c  d2a6bf88 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   53.774176] bfac  00000000 00000000 00000000 00000000 00000000 00000011 c04abf94 d2a6bfc8
[   53.782323] bfcc  d2a6bfc8 d2a35c00 00000000 00000000 00000000 00000000 00000000 00000000
[   53.790471] 
[   53.790476] FP: 0xc11d4e38:
[   53.794716] 4e38  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   53.802863] 4e58  d2aa49c0 d2aa4940 00000000 d2aa45c0 d2aa44c0 00000000 d2aa43c0 00000000
[   53.811010] 4e78  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   53.819156] 4e98  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   53.827303] 4eb8  d2802c80 c11d4ebc c11d4ebc c06ec918 00000000 00200200 ffff9f9c c04b95e4
[   53.835449] 4ed8  c11d4eb8 c093a640 00000000 00000000 00000000 00000000 00000000 ffffffff
[   53.843596] 4ef8  00000000 00000000 00000000 00000000 c08dce70 d30c8000 00000000 c08e0a60
[   53.851743] 4f18  c08e0a60 00000000 c11d50c0 c11d50a0 00000000 00000000 00000000 00000000
[   53.859892] 
[   53.859897] R2: 0xd2829ef7:
[   53.864136] 9ef4  00000015 d2829f14 c095934c ffff9faf 00000000 d2a6a000 ffffffff d2829f54
[   53.872283] 9f14  d2802c88 c06ec918 c0484a6c 00000000 00000031 d2829f77 0000c350 00000031
[   53.880429] 9f34  d2802c80 d2802c88 c06ec918 d2829f94 c11d4ebc 00000000 c11d4eb8 d2a6bf6c
[   53.888576] 9f54  d2829f68 c06ec92c c06ec584 60000013 ffffffff 0000c350 00000031 d2802c80
[   53.896723] 9f74  60000013 c11d4eb4 c06ec92c d2828000 d2802c80 d2802c88 c04b99cc 000008de
[   53.904870] 9f94  00000000 d281e8c0 c04bd3dc d2829fa0 d2829fa0 d2802c80 d2821f58 d2829fd4
[   53.913016] 9fb4  c04b984c d2802c80 00000000 00000000 00000000 00000000 c04bd1bc 00000000
[   53.921163] 9fd4  00000000 d2829fd8 d2829fd8 00000000 00000000 00000000 00000000 00000000
[   53.929309] 9ff4  c048599c ffffffff ffffffff 00000000 00000001 00000000 d281e480 c08e50d0
[   53.937458] 
[   53.937463] R5: 0xd2802c00:
[   53.941703] 2c00  c73b8040 ca4bc000 d220f040 d2818000 d2802c10 d2802c10 00000021 00000040
[   53.949849] 2c20  00000000 00000000 00000000 ffff9fec 00000000 7bffdfff ffffffff ffffffef
[   53.957996] 2c40  d2802c40 d2802c40 d282bfa0 d282bfa0 00000000 d2801cc0 d281e480 00000000
[   53.966143] 2c60  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   53.974289] 2c80  d2802c80 d2802c80 d2802c88 d2802c88 c11d4eb8 d2801c80 d281e8c0 00000000
[   53.982436] 2ca0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   53.990583] 2cc0  d3004000 d3006000 00000006 d2802ccd d281a5cc cb8da40c d281a5d8 00200200
[   53.998729] 2ce0  d2aacba0 d2802d20 d2801c80 d2aacbac c04ff550 ffffbfff ffffffff ffdff4ff
[   54.006878] 
[   54.006883] R6: 0xd2802c08:
[   54.011123] 2c08  d220f040 d2818000 d2802c10 d2802c10 00000021 00000040 00000000 00000000
[   54.019270] 2c28  00000000 ffff9fec 00000000 7bffdfff ffffffff ffffffef d2802c40 d2802c40
[   54.027416] 2c48  d282bfa0 d282bfa0 00000000 d2801cc0 d281e480 00000000 00000000 00000000
[   54.035563] 2c68  00000000 00000000 00000000 00000000 00000000 00000000 d2802c80 d2802c80
[   54.043709] 2c88  d2802c88 d2802c88 c11d4eb8 d2801c80 d281e8c0 00000000 00000000 00000000
[   54.051856] 2ca8  00000000 00000000 00000000 00000000 00000000 00000000 d3004000 d3006000
[   54.060003] 2cc8  00000006 d2802ccd d281a5cc cb8da40c d281a5d8 00200200 d2aacba0 d2802d20
[   54.068149] 2ce8  d2801c80 d2aacbac c04ff550 ffffbfff ffffffff ffdff4ff d3000000 d3002000
[   54.076298] 
[   54.076303] R7: 0xc06ec898:
[   54.080543] c898  e593005c e1500002 0a000000 ebf85dc3 e59f305c e5933000 e5930038 e3500000
[   54.088689] c8b8  0a000000 ebf85dbd e59f4044 e5940000 ebf85dba e59f0040 e3a03000 e5843000
[   54.096836] c8d8  eb02e911 e2840014 ebf714c0 e3500000 0a000005 e10f3000 f10c0080 e5942004
[   54.104983] c8f8  e3c22001 e5842004 e121f003 e3a00000 e8bd8070 c11d4eb4 c090f8f8 c0894fa1
[   54.113129] c918  e92d4070 e59f40b0 e3a01031 e5940000 ebffff10 e5d43044 e2005008 e1530005
[   54.121276] c938  1a000004 e3a000c8 ebf7001a e1a01000 e2840004 ea00001e e3550000 e5c45044
[   54.129423] c958  1a00000f e1a02005 e3a01020 e5940000 ebfffe8e e1a02005 e3a01021 e5940000
[   54.137569] c978  ebfffe8a e1a02005 e3a0101e e5940000 ebfffe86 e5940000 e1a02005 e3a0101f
[   54.145717] 
[   54.145723] R8: 0xd2829f14:
[   54.149963] 9f14  d2802c88 c06ec918 c0484a6c 00000000 00000031 d2829f77 0000c350 00000031
[   54.158109] 9f34  d2802c80 d2802c88 c06ec918 d2829f94 c11d4ebc 00000000 c11d4eb8 d2a6bf6c
[   54.166256] 9f54  d2829f68 c06ec92c c06ec584 60000013 ffffffff 0000c350 00000031 d2802c80
[   54.174403] 9f74  60000013 c11d4eb4 c06ec92c d2828000 d2802c80 d2802c88 c04b99cc 000008de
[   54.182549] 9f94  00000000 d281e8c0 c04bd3dc d2829fa0 d2829fa0 d2802c80 d2821f58 d2829fd4
[   54.190696] 9fb4  c04b984c d2802c80 00000000 00000000 00000000 00000000 c04bd1bc 00000000
[   54.198843] 9fd4  00000000 d2829fd8 d2829fd8 00000000 00000000 00000000 00000000 00000000
[   54.206989] 9ff4  c048599c ffffffff ffffffff 00000000 00000001 00000000 d281e480 c08e50d0
[   54.215138] 
[   54.215143] R9: 0xc11d4e3c:
[   54.219383] 4e3c  00000000 00000000 00000000 00000000 00000000 00000000 00000000 d2aa49c0
[   54.227529] 4e5c  d2aa4940 00000000 d2aa45c0 d2aa44c0 00000000 d2aa43c0 00000000 00000000
[   54.235676] 4e7c  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   54.243823] 4e9c  00000000 00000000 00000000 00000000 00000000 00000000 00000000 d2802c80
[   54.251969] 4ebc  c11d4ebc c11d4ebc c06ec918 00000000 00200200 ffff9f9c c04b95e4 c11d4eb8
[   54.260116] 4edc  c093a640 00000000 00000000 00000000 00000000 00000000 ffffffff 00000000
[   54.268263] 4efc  00000000 00000000 00000000 c08dce70 d30c8000 00000000 c08e0a60 c08e0a60
[   54.276409] 4f1c  00000000 c11d50c0 c11d50a0 00000000 00000000 00000000 00000000 00000000
[   54.284563] Process events/0 (pid: 5, stack limit = 0xd28282f0)
[   54.290455] Stack: (0xd2829f68 to 0xd282a000)
[   54.294796] 9f60:                   0000c350 00000031 d2802c80 60000013 c11d4eb4 c06ec92c
[   54.302944] 9f80: d2828000 d2802c80 d2802c88 c04b99cc 000008de 00000000 d281e8c0 c04bd3dc
[   54.311091] 9fa0: d2829fa0 d2829fa0 d2802c80 d2821f58 d2829fd4 c04b984c d2802c80 00000000
[   54.319236] 9fc0: 00000000 00000000 00000000 c04bd1bc 00000000 00000000 d2829fd8 d2829fd8
[   54.327382] 9fe0: 00000000 00000000 00000000 00000000 00000000 c048599c ffffffff ffffffff
[   54.335549] [<c06ec584>] (soc_cs42l52_read+0x14/0x68) from [<c06ec92c>] (soc_codec_detect_hp+0x14/0xc4)
[   54.344898] [<c06ec92c>] (soc_codec_detect_hp+0x14/0xc4) from [<c04b99cc>] (worker_thread+0x180/0x22c)
[   54.354174] [<c04b99cc>] (worker_thread+0x180/0x22c) from [<c04bd1bc>] (kthread+0x78/0x80)
[   54.362411] [<c04bd1bc>] (kthread+0x78/0x80) from [<c048599c>] (kernel_thread_exit+0x0/0x8)
[   54.370718] Code: e30c3350 e1a04001 e58d3000 e28d200f (e590003c) 
[   54.389967] ---[ end trace da227214a82491b9 ]---
[   54.391725] Kernel panic - not syncing: Fatal exception
[   54.396963] [<c048a18c>] (unwind_backtrace+0x0/0xd8) from [<c07a6c4c>] (panic+0x58/0x130)
[   54.405101] [<c07a6c4c>] (panic+0x58/0x130) from [<c0488990>] (die+0x284/0x2c0)
[   54.412357] [<c0488990>] (die+0x284/0x2c0) from [<c048b098>] (__do_kernel_fault+0x64/0x74)
[   54.420599] [<c048b098>] (__do_kernel_fault+0x64/0x74) from [<c048b268>] (do_page_fault+0x1c0/0x1d4)
[   54.429706] [<c048b268>] (do_page_fault+0x1c0/0x1d4) from [<c04842c0>] (do_DataAbort+0x34/0x94)
[   54.438366] [<c04842c0>] (do_DataAbort+0x34/0x94) from [<c0484a6c>] (__dabt_svc+0x4c/0x60)
[   54.446593] Exception stack(0xd2829f20 to 0xd2829f68)
[   54.451612] 9f20: 00000000 00000031 d2829f77 0000c350 00000031 d2802c80 d2802c88 c06ec918
[   54.459777] 9f40: d2829f94 c11d4ebc 00000000 c11d4eb8 d2a6bf6c d2829f68 c06ec92c c06ec584
[   54.467913] 9f60: 60000013 ffffffff

这是很重要的Oops信息,关于Linux内核中如果看懂Oops信息,此处不讲,有机会再整理出来再分享。


从信息可以 看出,

 PC is at soc_cs42l52_read+0x14/0x68
LR is at soc_codec_detect_hp+0x14/0xc4
问题是出在soc_codec_detect_hp函数里面。

该函数是我自己在原厂提供的驱动的基础上添加的一个功能,是通过一个WorkQueues来监测是否有耳机插入,从而来控制耳机和喇叭的不同的扩大增益。但WorkQueues是内核很重要的一种机制,操作不慎会导致内核崩溃等问题,我出现的问题,也就是这个问题。


其实这个问题,在以前的调试过程中也出现过,所以,我在驱动的关机函数中,添加一个对这个Job回收资源的函数,查看一些资源,使用了cancel_delay_work(&delaywork),在那之后,关机由于Codec驱动导致系统崩溃的问题再也没有出现。直到昨天的试验报告。


使用串口再次认真的跟踪,以及参数内核其它支持的内核的驱动,我换用另外一个函数即cancel_delay_work_sync(&delaywork)代替原来的cancle_delay_work(&delaywork)。再次重复的模拟开关机,手机20次左右,果然没有了,最后,我叫我的组的上层软工帮我写了一个自己重启的机器,自动执行开关机。大约3个小时后,再无之前的问题出现。为了进一步验证,我还原为原来的状态,即使用cancle_delay_work(),使用关机apk大约6分种的时候重现了该问题。


到此,从现象看,似乎是改了对地方。但,学习,不能就些罢手,要“不求甚求”

通过内核查找,对两个函数有如下说明:

先来看cancle_delay_work_sync()

/**
 * cancel_delayed_work_sync - reliably kill off a delayed work.
 * @dwork: the delayed work struct
 *
 * Returns true if @dwork was pending.
 *
 * It is possible to use this function if @dwork rearms itself via queue_work()
 * or queue_delayed_work(). See also the comment for cancel_work_sync().
 */
int cancel_delayed_work_sync(struct delayed_work *dwork)
{
	return __cancel_work_timer(&dwork->work, &dwork->timer);
}
不难看出,cancle_delayed_work_sync()是reliably 杀掉一个Delayed Work.



/*
 * Kill off a pending schedule_delayed_work().  Note that the work callback
 * function may still be running on return from cancel_delayed_work(), unless
 * it returns 1 and the work doesn't re-arm itself. Run flush_workqueue() or
 * cancel_work_sync() to wait on it.
 */
static inline int cancel_delayed_work(struct delayed_work *work)
{
	int ret;

	ret = del_timer_sync(&work->timer);
	if (ret)
		work_clear_pending(&work->work);
	return ret;
}
从注释信息中,也可以看出该函数是杀掉一个pending(挂起)的delay work.故在使用的场合还是有不同的。


最后,随机性问题,三个小时在一台机器上也不能说明问题,为了验证该问题,一方面,我在我这台机器上,执行开关机动作一个晚上,明天上班的时候再看结果,另一方面,通知工厂在较多的机器去验证该问题。


好,就到这里,有最新将更新。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可夫小子

感谢大佬!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值