kernel
mtk_agpsd
[ccci1/chr]write error done on ttyC2, l=26 r=-19
/vendor/etc/init/mtk_agpsd.rc
on post-fs-data
mkdir /data/agps_supl 0771 gps system
service agpsd /vendor/bin/mtk_agpsd
class main
socket agpsd stream 660 gps system
socket agpsd2 stream 660 gps inet
socket agpsd3 stream 660 gps inet
user gps
group gps radio inet sdcard_r sdcard_rw misc system
stop agpsd
wdtk
每隔20秒1次。
[wdk-c] cpu=1,lbit=0x2,cbit=0xf,0,1,771100078,[1271090987183]
[thread:247][RT:1271091038491] 2025-03-26 10:29:17.603658 UTC;android time 2025-03-26 18 :29:17.603658
[wdk-c] cpu=0,lbit=0x3,cbit=0xf,0,1,771100078,[1271094292568]
[wdk-c] cpu=2,lbit=0x7,cbit=0xf,0,1,771100078,[1271094302799]
[wdk-k] cpu=3,lbit=0xf,cbit=0xf,0,1,771100078,[1271094308799]
drivers/watchdog/mediatek/wdk/wd_common_drv.c
481 static void kwdt_process_kick(int local_bit, int cpu, char msg_buf[])
482 {
483 local_bit = kick_bit;
484 if ((local_bit & (1 << cpu)) == 0) {
485 /* pr_debug("[wdk] set kick_bit\n"); */
486 local_bit |= (1 << cpu);
487 /* aee_rr_rec_wdk_kick_jiffies(jiffies); */
488 }
489
490 /*
491 * do not print message with spinlock held to
492 * avoid bulk of delayed printk happens here
493 */
494 snprintf(msg_buf, WK_MAX_MSG_SIZE,
495 "[wdk-c] cpu=%d,lbit=0x%x,cbit=0x%x,%d,%d,%lld,[%lld]\n",
496 cpu, local_bit, wk_check_kick_bit(), lasthpg_cpu, lasthpg_act,
497 lasthpg_t, sched_clock());
498
499 if (local_bit == wk_check_kick_bit()) {
500 msg_buf[5] = 'k';
501 mtk_wdt_restart(WD_TYPE_NORMAL);/* for KICK external wdt */
502 local_bit = 0;
503 }
504
505 kick_bit = local_bit;
506 spin_unlock(&lock);
507
508 /*
509 * [wdt-c]: mark local bit only.
510 * [wdt-k]: kick watchdog actaully, this log is more important thus
511 * using printk_deferred to ensure being printed.
512 */
513 if (msg_buf[5] != 'k')
514 pr_info("%s", msg_buf);
515 else
516 printk_deferred("%s", msg_buf);
517
518 #ifdef CONFIG_LOCAL_WDT
519 printk_deferred("[wdk] cpu:%d, kick local wdt,RT[%lld]\n",
520 cpu, sched_clock());
521 /* kick local wdt */
522 mpcore_wdt_restart(WD_TYPE_NORMAL);
523 #endif
524 }
/proc/wdk
# cat /proc/wdk
mode interval timeout enable
2 20 -1 1
write
%d %d %d %d %d
mode, kinterval, timeout, debug_sleep, en
MIN_KICK_INTERVAL 1
MAX_KICK_INTERVAL 30
36 enum ext_wdt_mode {
37 WDT_IRQ_ONLY_MODE,
38 WDT_HW_REBOOT_ONLY_MODE,
39 WDT_DUAL_MODE,
40 };
/proc/mrdump_rst
write
%d %d %d
mrdump_rst_source, mode, en
mrdump_rst_source(%d) value need smaller than 2
mrdump_rst_mode(%d) value should be smaller than 2
61 #define MRDUMP_SYSRESETB 0
62 #define MRDUMP_EINTRST 1
watchdog
每隔30秒1次。system_server进程中有个watchdog线程每30秒喂一次狗,持续5分钟没喂狗,内核hang_detect线程检测到系统挂起,创建dump_last_thread线程,打印backtrace。busybox pstree -p `pidof system_server`。
AEEIOCTL_RT_MON_Kick ( 300)
[Hang_Detect] hang_detect enabled 10
ioctl
265 /* QHQ RT Monitor */
266 if (cmd == AEEIOCTL_RT_MON_Kick) {
267 pr_info("AEEIOCTL_RT_MON_Kick ( %d)\n", (int)arg);
268 aee_kernel_RT_Monitor_api((int)arg);
269 return ret;
270 }
271 /* QHQ RT Monitor end */
api
HD_INTER 30,检测间隔30秒。
| lParam | hd_detect_enabled | hang_detect_counter | hd_timeout |
| 0 | 0 | = hd_timeout | |
| & 0x1000 | </ |

最低0.47元/天 解锁文章
1227

被折叠的 条评论
为什么被折叠?



