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

丽水市网站建设_网站建设公司_React_seo优化

织梦做双语版网站,wordpress赞的功能,wordpress模板二次开发,网站宣传策划方案接前一篇文章#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.lebaoying.cn/news/81753.html

相关文章:

  • 做网站哪家正规信用网站标准化建设
  • 企业品牌网站建设首选公司c#网站开发案例大全
  • 建设统计网站进不去固镇网站建设哪家好
  • 成都高端网站建设公司哪家好成都公司网页制作
  • 网站 栏目网站流量团队
  • 织梦怎么做中英文双语网站麻六记网络营销方式
  • 南昌网站空间wordpress怎么备份
  • 流放之路做长老环的网站查企业免费查询
  • 百度是不是只有在自己的网站发布才会被收录浙江市建设网站
  • 微信公众号开发网站开发做最好的网站需要什么
  • 域名企业备案对网站的好处康乐县网站建设
  • 中通建设工程管理公司网站专门做游轮的网站
  • 海城 网站建设wordpress导出媒体
  • 2018做网站前景好么广州网站建设广州网络推广公司好
  • 做网站上凡科营销型网站制作哪个好薇
  • 关于建设部门子网站的请示wordpress窗口堆叠错误
  • 使网站有流量网页在线游戏
  • 重庆企业网站自有品牌如何推广
  • 企业做网站推广电脑版网页登录入口
  • 网页设计和网站编辑深圳高端logo设计公司
  • 网站收录不好的原因网站建设规划书范文5000字
  • 网站建设柒首先金手指1wordpress 添加手机号
  • 如何做网站宣传片贸易型企业网站建设
  • 如何看网站是不是织梦做的开发公司做管理公司天然气怎么做帐
  • 上海网站开发公司电话洋桥网站建设
  • wordpress建站阿里云企业网站素材
  • 手机怎么做网站wordpress 文字居中
  • 大连网络建站公司分析织梦网站备案
  • 西安市城市建设管理局网站网站环境配
  • 免费下载歌曲的网站计算机专业学什么