? ? ? ? ?set_user_nice
? ? ? ? SYSCALL_DEFINE1_nice!
? ? ? ? binder_do_set_priority
? ? ? ? call_usermodehelper_exec_async!
? ? ? ? create_worker
? ? ? ? khugepaged!
? ? ? ? ksm_scan_thread!
? ? ? ? loop_prepare_queue
? ? ? ? normalize_rt_tasks
? ? ? ? rescuer_thread!
? ? ? ? set_one_prio
? ? ? ? watchdog
? ? ? SYSCALL_DEFINE3_setpriority!
? ? ? binder_restore_priority
? ? ? binder_set_priority
? ? ? get_unbound_pool
? ? ? loop_set_fd
? ? ? maybe_create_worker
? ? ? sysrq_handle_unrt!
? ? ? task_tick_rt!
? ? ? workqueue_init
? ? ? workqueue_prepare_cpu!
? ? ? alloc_unbound_pwq
? ? ? binder_thread_read
? ? ? binder_transaction
? ? ? binder_transaction_priority
? ? ? kernel_init_freeable
? ? ? lo_ioctl
? ? ? manage_workers
? ? apply_wqattrs_prepare
? ? binder_ioctl_write_read
? ? binder_proc_transaction
? ? binder_thread_read
? ? binder_thread_write
? ? integrity_read_file!
? ? kernel_init!
? ? lo_compat_ioctl!
? ? worker_thread!
? ? wq_update_unbound_numa
? ? apply_workqueue_attrs_locked
? ? binder_ioctl!
? ? binder_ioctl_write_read
? ? binder_transaction
? ? workqueue_apply_unbound_cpumask
? ? workqueue_init
? ? workqueue_offline_cpu!
? ? workqueue_online_cpu!
? apply_workqueue_attrs
? binder_ioctl!
? binder_thread_write
? kernel_init_freeable
? workqueue_set_unbound_cpumask
? wq_cpumask_store!
? wq_nice_store!
? wq_numa_store!
? alloc_and_link_pwqs
? binder_ioctl_write_read
? integrity_read_file!
? kernel_init!
? wq_unbound_cpumask_store!
__alloc_workqueue_key
binder_ioctl!
__alloc_workqueue_key!
這個(gè)靜態(tài)分析調(diào)用堆椩艹郏看起來(lái)就方便多了
一個(gè)空格表示一層
后面帶!表示沒(méi)有調(diào)用者了
從這個(gè)分析來(lái)看 binder? workq? loop設(shè)備? setpriority 會(huì)調(diào)整優(yōu)先級(jí)饼煞,基本就了解哪些場(chǎng)景會(huì)觸發(fā)調(diào)整優(yōu)先級(jí)