Surfaceflinger初始化
源码:android 14
在/frameworks/native/services/surfaceflinger/路径下可以看到 与surfaceflinger 很多相关的文件
如:
SurfaceFlinger.cpp
SurfaceFlinger.h
Layer.cpp
Layer.h
main_surfaceflinger.cpp等
Surfaceflinger的初始化就是在 main_surfaceflinger 中完成的。
/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp
int main(int, char**) {
80 signal(SIGPIPE, SIG_IGN);
81
82 hardware::configureRpcThreadpool(1 /* maxThreads */,
83 false /* callerWillJoin */);
84
85 startGraphicsAllocatorService();
86
87 // When SF is launched in its own process, limit the number of
88 // binder threads to 4.
89 ProcessState::self()->setThreadPoolMaxThreadCount(4);
90
91 // Set uclamp.min setting on all threads, maybe an overkill but we want
92 // to cover important threads like RenderEngine.
93 if (SurfaceFlinger::setSchedAttr(true) != NO_ERROR) {
94 ALOGW("Failed to set uclamp.min during boot: %s", strerror(errno));
95 }
96
97 // The binder threadpool we start will inherit sched policy and priority
98 // of (this) creating thread. We want the binder thread pool to have
99 // SCHED_FIFO policy and priority 1 (lowest RT priority)
100 // Once the pool is created we reset this thread's priority back to
101 // original.
102 int newPriority = 0;
103