surfaceflinger 进程启动

本文详细介绍了Android 8.1系统中SurfaceFlinger进程的启动过程,包括其在surfaceflinger.rc配置文件中的定义、main_surfaceflinger.cpp的main方法逻辑,以及SurfaceFlinger对象的获取、初始化和运行。SurfaceFlinger作为系统关键服务,负责图形层的合成与显示,其启动涉及ServiceManager、GpuService、OpenGL等多个组件的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

surfaceflinger进程

surfaceflinger是一个守护进程,开机启动。

surfaceflinger代码的路径如下,

frameworks\native\services\surfaceflinger

在android 8.1系统中, surfaceflinger进程对应的配置不是在init.rc中,而是在surfaceflinger.rc中,如下,

service surfaceflinger /system/bin/surfaceflinger
    class core animation
    user system
    group graphics drmrpc readproc
    onrestart restart zygote
    writepid /dev/stune/foreground/tasks
socket pdx/system/vr/display/client     
stream 0666 system graphics u:object_r:pdx_display_client_endpoint_socket:s0
socket pdx/system/vr/display/manager    
stream 0666 system graphics u:object_r:pdx_display_manager_endpoint_socket:s0
socket pdx/system/vr/display/vsync      
stream 0666 system graphics u:object_r:pdx_display_vsync_endpoint_socket:s0

需要注意的是,这里面有3个socket,用于跨进程通信。

Surfaceflinger进程的入口方法为main_surfaceflinger.cpp的main方法,主要逻辑如下,

1,启动服务,

startHidlServices();
signal(SIGPIPE, SIG_IGN); //当对端(客户端/服务端)的socket关闭时,防止进程退出。

2,设置最大线程池个数并启动线程池,

ProcessState::self()->setThreadPoolMaxThreadCount(4);//线程池个数为4
// start the thread pool
sp<ProcessState> ps(ProcessState::self());
ps->startThreadPool();

3,获取SurfaceFlinger服务对象,设置优先权以及线程的优先级,最后初始化SurfaceFlinger服务,

sp<SurfaceFlinger> flinger = DisplayUtils::getInstance()->getSFInstance();
setpriority(PRIO_PROCESS, 0, PRIORITY_URGENT_DISPLAY);
set_sched_policy(0, SP_FOREGROUND);
if (cpusets_enabled()) set_cpuset
SurfaceFlingerSurfaceFlinger SurfaceFlinger SurfaceFlinger SurfaceFlinger SurfaceFlingerSurfaceFlinger 服务是在 服务是在 服务是在 SystemSystemSystemSystemSystem 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 进程启动的,并且负责统一管理设备帧缓冲区。 SurfaceFlingerSurfaceFlinger SurfaceFlinger SurfaceFlinger SurfaceFlinger SurfaceFlingerSurfaceFlinger 服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件服务在启动的过程中, 会创建两个线其一用来监控制台事件而另外一个线程用来渲染系统的 而另外一个线程用来渲染系统的 而另外一个线程用来渲染系统的 而另外一个线程用来渲染系统的 而另外一个线程用来渲染系统的 而另外一个线程用来渲染系统的 而另外一个线程用来渲染系统的 UI 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值