關于宏v4l2_subdev_call的拆解

struct v4l2_subdev *sd結構體?

struct v4l2_subdev {
#if defined(CONFIG_MEDIA_CONTROLLER)struct media_entity entity;
#endifstruct list_head list;struct module *owner;bool owner_v4l2_dev;u32 flags;struct v4l2_device *v4l2_dev;const struct v4l2_subdev_ops *ops;const struct v4l2_subdev_internal_ops *internal_ops;struct v4l2_ctrl_handler *ctrl_handler;char name[V4L2_SUBDEV_NAME_SIZE];u32 grp_id;void *dev_priv;void *host_priv;struct video_device *devnode;struct device *dev;struct fwnode_handle *fwnode;struct list_head async_list;struct v4l2_async_subdev *asd;struct v4l2_async_notifier *notifier;struct v4l2_async_notifier *subdev_notifier;struct v4l2_subdev_platform_data *pdata;
};

sd->ops

    if(sd->ops == NULL){DEBUG_CORE("sd->ops NULL");break;}

然后看看?v4l2_subdev_ops 的定義

static const struct v4l2_subdev_ops ov5645_subdev_ops = {.core = &ov5645_core_ops,.video = &ov5645_video_ops,.pad = &ov5645_subdev_pad_ops,
};
  if(sd->ops->core == NULL){DEBUG_CORE("sd->ops->core NULL");break;}

最后判斷ioctl是否為空

if(sd->ops->core->ioctl == NULL){DEBUG_CORE("sd->ops->core NULL");break;}sd->ops->core->ioctl(sd, ctrl->id, &ctrl->val);

小結

最后把 v4l2_subdev_call(sd, core, ioctl, ctrl->id,ctrl->val);

轉換為了?sd->ops->core->ioctl(sd, ctrl->id, &ctrl->val);

轉換這個主要是為了空指針檢查。解決問題了以后,還是用原來的宏就行了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43229.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43229.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43229.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數字滾動動畫~

前言 數字從0.00滾動到某個數值的動畫 實現&#xff08;React版本&#xff09; Dom <div className"number" ref{numberRef}>0.00</div> JS const _initNumber () > {const targetNumber 15454547.69;const duration 1500;const numberElement…

vivado DRIVE、EDIF_EXTRA_SEARCH_PATHS

驅動器 DRIVE指定配置有I/O的輸出緩沖器的輸出緩沖器驅動強度&#xff08;mA&#xff09; 支持可編程輸出驅動強度的標準。 體系結構支持 所有架構。 適用對象 ?端口&#xff08;get_Ports&#xff09; 連接到輸出緩沖器的輸出或雙向端口 價值觀 整數值&#xff1a; ? 2 ? 4…

【UML用戶指南】-33-對體系結構建模-系統和模型

目錄 1、系統和子系統 2、模型和視圖 3、跟蹤 4、常用建模技術 4.1、對系統的體系結構建模 4.2、對系統的系統建模 模型是對現實世界的簡化——即對系統的抽象&#xff0c;建立模型的目的是為了更好地理解系統。 1、系統和子系統 一個系統可能被分解成一組子系統&#…

09.C2W4.Word Embeddings with Neural Networks

往期文章請點這里 目錄 OverviewBasic Word RepresentationsIntegersOne-hot vectors Word EmbeddingsMeaning as vectorsWord embedding vectors Word embedding processWord Embedding MethodsBasic word embedding methodsAdvanced word embedding methods Continuous Bag-…

esp32硬件電路設計

ESP-IDF 入門指南 | 樂鑫科技 (espressif.com) ESP32-DevKitC V4 入門指南 - ESP32 - — ESP-IDF 編程指南 v5.1 文檔 (espressif.com)

每日一題~abc356(對于一串連續數字 找規律)

添加鏈接描述 題意&#xff1a;對于給定的n,m 。計算0~n 每一個數和m & 之后&#xff0c;得到的數 的二進制中 1的個數的和。 一位一位的算。最多是60位。 我們只需要計算 在 1-n這些數上&#xff0c;有多少個數 第i位 為1. 因為是連續的自然數&#xff0c;每一位上1 的…

Linux下的misc設備驅動

文章目錄 前言一、misc是什么&#xff1f;二、調用API1.注冊2.注銷 三、驅動框架總結 前言 misc設備即雜項設備&#xff0c;Linux系統中類似按鍵、觸摸屏都有專門框架處理&#xff0c;類似adc、蜂鳴器等設備無法明確其屬于什么類型&#xff0c;一般就歸屬于雜項設備&#xff0…

Sqli-labs合集之環境搭建

Sqli-labs的搭建 搭建第一個SQL注入學習靶場環境&#xff1a; 軟件&#xff1a;sqli-labs 安裝過程&#xff1a; 1.源碼地址&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based.&#xff1b; 2.將壓縮包解壓到phpst…

PyCharm\VsCode——Python第三方庫下載換源

為什么要換源&#xff1f; Python第三方庫下載默認鏡像源在國外&#xff0c;因為特殊的原因在國內的你我利用這個鏡像源往往速度會非常地慢&#xff0c;因此為了提速將這個默認鏡像源換成國內的鏡像源是非常有必要的。 鏡像源的種類有哪些&#xff1f; 國外鏡像源——官方 http…

Python基礎學習筆記——異常

目錄 一、bug的簡介二、異常捕獲預處理機制1. 繼承2. 捕獲與預處理3. 嵌套與傳遞 一、bug的簡介 1947年&#xff0c;世界第一部萬用計算機的進化版——馬克2號&#xff08;Mark II&#xff09;的程序運行發生了異常&#xff0c;計算機程序之母格蕾絲經調試后&#xff0c;發現是…

C#實用的工具類庫

Masuit.Tools Masuit.Tools大都是靜態類&#xff0c;加密解密&#xff0c;反射操作&#xff0c;樹結構&#xff0c;文件探測&#xff0c;權重隨機篩選算法&#xff0c;分布式短id&#xff0c;表達式樹&#xff0c;linq擴展&#xff0c;文件壓縮&#xff0c;多線程下載&#xf…

非線性系列(三)—— 非線性求解器算法分類

1. 總體認知 CAE中的非線性方程組求解主要依賴牛頓法&#xff08;及牛頓法的變體&#xff09;&#xff0c;步驟如下 以線搜索方法為例&#xff0c;流程如下: 2. 方法分類 適用范圍大類小類描述牛頓法雅可比矩陣難獲取擬牛頓法 Broyden&#xff08;Secant method&#xff09;、…

DP(1) | Java | LeetCode 509, 70, 746 做題總結

509. 斐波那契數 https://leetcode.cn/problems/fibonacci-number/ 確定dp數組&#xff08;dp table&#xff09;以及下標的含義 dp[i] 第i個斐波那契數值為dp[i] 確定遞推公式 題目說了 F(n) F(n - 1) F(n - 2)dp數組如何初始化 題目說了 F(0) 0&#xff0c;F(1) 1確定遍歷…

15. Revit API: Transaction(事務)與 Failures(故障處理)

前言 UI講完&#xff0c;回到DB這塊兒。在Document那篇&#xff0c;提到增刪改查操作都是在Document上&#xff0c;是對Documet進行操作。 看到“增刪改查”這四個&#xff0c;想到什么了沒有&#xff1f; 數據庫&#xff08;DB&#xff09;嘛~話說那本經典的紅皮數據庫的書叫…

網絡安全----防御----防火墻安全策略組網

防火墻組網 要求&#xff1a; 1&#xff0c;DMz區內的服務器&#xff0c;辦公區僅能在辦公時間內(9:00-18:00)可以訪問&#xff0c;生產區的設備全天可以訪問。 2&#xff0c;生產區不允許訪問互聯網&#xff0c;辦公區和游客區允許訪問互聯網 3&#xff0c;辦公區設備10.0.…

計算機網絡之廣域網

廣域網特點: 主要提供面向通信的服務&#xff0c;支持用戶使用計算機進行遠距離的信息交換。 覆蓋范圍廣,通信的距離遠&#xff0c;需要考慮的因素增多&#xff0c; 線路的冗余、媒體帶寬的利用和差錯處理問題。 由電信部門或公司負責組建、管理和維護&#xff0c;并向全社會…

友思特方案 | 低延遲GigE Vision解決方案:用于紅外設備、醫療和工業級探測面板

導讀 維持實時視頻系統軟硬件的長期成本效益&#xff0c;是該系統在醫療、工業等領域廣泛應用的前提。友思特低延遲GigE Vision解決方案創新性地突破了這一難題&#xff0c;提供高帶寬且高可靠性的端到端網絡鏈接&#xff0c;有效降低了開發成本、復雜性和時間。 引言 雖然實…

DDoS攻擊詳解

DDoS 攻擊&#xff0c;其本質是通過操控大量的傀儡主機或者被其掌控的網絡設備&#xff0c;向目標系統如潮水般地發送海量的請求或數據。這種行為的目的在于竭盡全力地耗盡目標系統的網絡帶寬、系統資源以及服務能力&#xff0c;從而致使目標系統無法正常地為合法用戶提供其所應…

leetcode--從前序與中序遍歷序列構造二叉樹

leetcode地址&#xff1a;從前序與中序遍歷序列構造二叉樹 給定兩個整數數組 preorder 和 inorder &#xff0c;其中 preorder 是二叉樹的先序遍歷&#xff0c; inorder 是同一棵樹的中序遍歷&#xff0c;請構造二叉樹并返回其根節點。 示例 1: 輸入: preorder [3,9,20,15,…

vue學習day05-watch偵聽器(監視器)、Vue生命周期和生命周期的四個階段、、工程化開發和腳手架Vue cli

13、watch偵聽器&#xff08;監視器&#xff09; &#xff08;1&#xff09;作用&#xff1a;監視數據變化&#xff0c;執行一些業務邏輯或異步操作 &#xff08;2&#xff09;語法&#xff1a; 1&#xff09;簡寫語法——簡單數據類型&#xff0c;直接監視 ① Watch:{ 數…