当前位置: 首页 > news >正文

网站开发要学的代码广告公司简称

网站开发要学的代码,广告公司简称,重庆聚百思网站开发,软件定制 开发接前一篇文章#xff1a;libdrm全解析三十九 —— 源码全解析#xff08;36#xff09; 本文参考以下博文#xff1a; DRM 驱动程序开发#xff08;VKMS#xff09; 特此致谢#xff01; 前一篇文章讲解完了资源的释放流程中的munmap()和drmIoctl(DRM_IOCTL_MODE_DEST…接前一篇文章libdrm全解析三十九 —— 源码全解析36 本文参考以下博文 DRM 驱动程序开发VKMS 特此致谢 前一篇文章讲解完了资源的释放流程中的munmap()和drmIoctl(DRM_IOCTL_MODE_DESTROY_DUMB)本回讲解drmModeFreeConnector函数。drmModeFreeConnector()与drmModeGetConnector()是一对。 drmModeFreeConnector函数在xf86drmMode.c中代码如下 drm_public void drmModeFreeConnector(drmModeConnectorPtr ptr) {if (!ptr)return;drmFree(ptr-encoders);drmFree(ptr-prop_values);drmFree(ptr-props);drmFree(ptr-modes);drmFree(ptr); } 可见drmModeFreeConnector函数并没有想象中与之专门对应的DRM_IOCTL_MODE_FREE_CONNECTOR宏而是调用了drmFree函数释放了多个分配的空间。 前文讲过drmFree函数在xf86drm.c中代码如下 drm_public void drmFree(void *pt) {free(pt); } 就是free函数的简单封装。 drmModeFreeConnector函数的作用是释放drmModeGetConnector函数中分配的各个空间。 为了便于理解再次贴出drmModeGetConnector函数代码在xf86drmMode.c中如下 /** Connector manipulation*/ static drmModeConnectorPtr _drmModeGetConnector(int fd, uint32_t connector_id, int probe) {struct drm_mode_get_connector conn, counts;drmModeConnectorPtr r NULL;struct drm_mode_modeinfo stack_mode;memclear(conn);conn.connector_id connector_id;if (!probe) {conn.count_modes 1;conn.modes_ptr VOID2U64(stack_mode);}if (drmIoctl(fd, DRM_IOCTL_MODE_GETCONNECTOR, conn))return 0;retry:counts conn;if (conn.count_props) {conn.props_ptr VOID2U64(drmMalloc(conn.count_props*sizeof(uint32_t)));if (!conn.props_ptr)goto err_allocs;conn.prop_values_ptr VOID2U64(drmMalloc(conn.count_props*sizeof(uint64_t)));if (!conn.prop_values_ptr)goto err_allocs;}if (conn.count_modes) {conn.modes_ptr VOID2U64(drmMalloc(conn.count_modes*sizeof(struct drm_mode_modeinfo)));if (!conn.modes_ptr)goto err_allocs;} else {conn.count_modes 1;conn.modes_ptr VOID2U64(stack_mode);}if (conn.count_encoders) {conn.encoders_ptr VOID2U64(drmMalloc(conn.count_encoders*sizeof(uint32_t)));if (!conn.encoders_ptr)goto err_allocs;}if (drmIoctl(fd, DRM_IOCTL_MODE_GETCONNECTOR, conn))goto err_allocs;/* The number of available connectors and etc may have changed with a* hotplug event in between the ioctls, in which case the field is* silently ignored by the kernel.*/if (counts.count_props conn.count_props ||counts.count_modes conn.count_modes ||counts.count_encoders conn.count_encoders) {drmFree(U642VOID(conn.props_ptr));drmFree(U642VOID(conn.prop_values_ptr));if (U642VOID(conn.modes_ptr) ! stack_mode)drmFree(U642VOID(conn.modes_ptr));drmFree(U642VOID(conn.encoders_ptr));goto retry;}if(!(r drmMalloc(sizeof(*r)))) {goto err_allocs;}r-connector_id conn.connector_id;r-encoder_id conn.encoder_id;r-connection conn.connection;r-mmWidth conn.mm_width;r-mmHeight conn.mm_height;/* convert subpixel from kernel to userspace */r-subpixel conn.subpixel 1;r-count_modes conn.count_modes;r-count_props conn.count_props;r-props drmAllocCpy(U642VOID(conn.props_ptr), conn.count_props, sizeof(uint32_t));r-prop_values drmAllocCpy(U642VOID(conn.prop_values_ptr), conn.count_props, sizeof(uint64_t));r-modes drmAllocCpy(U642VOID(conn.modes_ptr), conn.count_modes, sizeof(struct drm_mode_modeinfo));r-count_encoders conn.count_encoders;r-encoders drmAllocCpy(U642VOID(conn.encoders_ptr), conn.count_encoders, sizeof(uint32_t));r-connector_type conn.connector_type;r-connector_type_id conn.connector_type_id;if ((r-count_props !r-props) ||(r-count_props !r-prop_values) ||(r-count_modes !r-modes) ||(r-count_encoders !r-encoders)) {drmFree(r-props);drmFree(r-prop_values);drmFree(r-modes);drmFree(r-encoders);drmFree(r);r 0;}err_allocs:drmFree(U642VOID(conn.prop_values_ptr));drmFree(U642VOID(conn.props_ptr));if (U642VOID(conn.modes_ptr) ! stack_mode)drmFree(U642VOID(conn.modes_ptr));drmFree(U642VOID(conn.encoders_ptr));return r; } 资源释放流程中的其余函数将在后续文章中进行解析。
http://www.yutouwan.com/news/265570/

相关文章:

  • 织梦网站图片怎么修改wordpress安装方法
  • 建设一个网站需要哪些人员参与外贸网站自建站
  • 江门网站推广技巧设计师必备的6个网站
  • 网站页面设计原则博客做资讯类网站
  • 网站权重分析广州短视频运营培训
  • 注册网站登录如何做网页链接
  • 99到家微网站什么做的廉江网站开发公司
  • 手机怎么制作软件app河南网站优化要多少钱
  • 建设部特种作业证网站查询wordpress cdc
  • 杭州公司网站开发网站建设费用 无形资产
  • 网站怎么更新文章淄博学校网站建设定制
  • 广东省建设工程合同备案网站宜宾网站开发招聘
  • 电商网站设计培训推广赚钱小程序
  • 网站建设及推广方案pptwordpress手机菜单导航
  • 三亚网站建设方案潍坊网站制作在线
  • 公司名称起名大全免费小明seo教程
  • 微网站开发一般费用多少钱互诺 网站好吗
  • 自己做的网站打开超慢给自己女朋友做的网站
  • 免费怎么制作公司网站Spring做网站和什么
  • 做移动网站排名软件北京市住房及城乡建设网站
  • 网站别人能打开我打不开html5网站在线制作
  • 东莞网站免费制作wordpress扫码登录
  • python数据分析做网站wordpress 帮助手册
  • 大连手机网站制作网站树状栏目有点
  • 网站建设前的需求分析少儿编程收费价目表
  • 手机网站开发环境搭建wordpress用户中心主题
  • 建设网站的推广的软文网页模板psd素材
  • 添加网站图标wordpress 主页地址函数
  • 海南网站运营公司crm系统管理
  • wordpress制作网站怎样申请建立自助网站