3.1. 數字電視通用功能¶
3.1.1. DVB 裝置¶
這些函式負責處理 DVB 裝置節點。
-
enum dvb_device_type¶
數字電視裝置的型別
常量
DVB_DEVICE_SEC數字電視獨立通用介面 (CI)
DVB_DEVICE_FRONTEND數字電視前端。
DVB_DEVICE_DEMUX數字電視解複用器。
DVB_DEVICE_DVR數字電視數字影片錄影 (DVR)。
DVB_DEVICE_CA數字電視條件訪問 (CA)。
DVB_DEVICE_NET數字電視網路。
DVB_DEVICE_VIDEO數字電視影片解碼器。已棄用。僅在 av7110-av 上使用。
DVB_DEVICE_AUDIO數字電視音訊解碼器。已棄用。僅在 av7110-av 上使用。
DVB_DEVICE_OSD數字電視螢幕顯示 (OSD)。已棄用。僅在 av7110 上使用。
-
struct dvb_adapter¶
表示使用 Linux DVB API 的數字電視介面卡
定義:
struct dvb_adapter {
int num;
struct list_head list_head;
struct list_head device_list;
const char *name;
u8 proposed_mac [6];
void* priv;
struct device *device;
struct module *module;
int mfe_shared;
struct dvb_device *mfe_dvbdev;
struct mutex mfe_lock;
#if defined(CONFIG_MEDIA_CONTROLLER_DVB);
struct mutex mdev_lock;
struct media_device *mdev;
struct media_entity *conn;
struct media_pad *conn_pads;
#endif;
};
成員
num介面卡的編號
list_head包含 DVB 介面卡的列表
device_list包含 DVB 裝置的列表
name介面卡的名稱
proposed_mac介面卡建議的 MAC 地址
priv私有資料
device指向
struct device的指標module指向 struct module 的指標
mfe_shared指示互斥前端。1 = 傳統排除行為:阻止任何 open() 呼叫 2 = 增強的排除行為,模擬繁忙前端的標準行為:允許只讀共享,否則當任何前端已經以寫入訪問方式開啟時,立即返回 -EBUSY。
mfe_dvbdev正在使用的前端裝置,在 MFE 的情況下
mfe_lock用於在使用 MFE 時防止使用其他前端的鎖。
mdev_lock保護對 mdev 指標的訪問。
mdev指向
struct media_device的指標,在使用媒體控制器時使用。conn射頻聯結器。僅當裝置沒有單獨的調諧器時才使用。
conn_pads指向與 conn 關聯的
struct media_pad的指標;
-
struct dvb_device¶
表示 DVB 裝置節點
定義:
struct dvb_device {
struct list_head list_head;
struct kref ref;
const struct file_operations *fops;
struct dvb_adapter *adapter;
enum dvb_device_type type;
int minor;
u32 id;
int readers;
int writers;
int users;
wait_queue_head_t wait_queue;
int (*kernel_ioctl)(struct file *file, unsigned int cmd, void *arg);
#if defined(CONFIG_MEDIA_CONTROLLER_DVB);
const char *name;
struct media_intf_devnode *intf_devnode;
unsigned tsout_num_entities;
struct media_entity *entity, *tsout_entity;
struct media_pad *pads, *tsout_pads;
#endif;
void *priv;
};
成員
list_head包含所有 DVB 裝置的列表頭
ref此裝置的引用計數
fops指向 struct file_operations 的指標
adapter指向持有此裝置節點的介面卡的指標
type裝置的型別,由
enum dvb_device_type定義。minor裝置節點次裝置號。主裝置號始終為 DVB_MAJOR。
id裝置 ID 號,在介面卡內部
readers由呼叫者初始化。每次以只讀模式呼叫 open() 都會使此計數器減一。
writers由呼叫者初始化。每次以讀/寫模式呼叫 open() 都會使此計數器減一。
users由呼叫者初始化。每次以任何模式呼叫 open() 都會使此計數器減一。
wait_queue等待佇列,用於等待 DVB API 呼叫者內部的某些事件
kernel_ioctl用於處理來自使用者空間的 ioctl 呼叫的回撥函式。
name要在媒體控制器中用於裝置的名稱
intf_devnode指向 media_intf_devnode 的指標。由 dvbdev 核心用於儲存 MC 裝置節點介面
tsout_num_entities傳輸流輸出實體的數量
entity指向與裝置節點關聯的
struct media_entity的指標tsout_entity包含與每個 TS 輸出節點關聯的 MC 實體的陣列
pads指向與 entity 關聯的
struct media_pad的指標;tsout_pads包含每個 tsout_entity 的源焊盤的陣列
priv私有資料
描述
此結構由 DVB 核心(前端、CA、net、解複用器)用於建立裝置節點。通常,驅動程式不應直接初始化此結構。
-
struct dvbdevfops_node¶
在 dvbdevfops_list 中註冊的 fops 節點
定義:
struct dvbdevfops_node {
struct file_operations *fops;
enum dvb_device_type type;
const struct dvb_device *template;
struct list_head list_head;
};
成員
fops為 ->owner 註冊動態分配的 fops
typedvb_device 的型別
template用於註冊的 dvb_device
list_headdvbdevfops_list 的 list_head
-
struct dvb_device *dvb_device_get(struct dvb_device *dvbdev)¶
增加 dvb_device 引用
引數
struct dvb_device *dvbdev指向
struct dvb_device的指標
-
void dvb_device_put(struct dvb_device *dvbdev)¶
減少 dvb_device 引用
引數
struct dvb_device *dvbdev指向
struct dvb_device的指標
-
int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct module *module, struct device *device, short *adapter_nums)¶
註冊新的 DVB 介面卡
引數
struct dvb_adapter *adap指向
struct dvb_adapter的指標const char *name介面卡的名稱
struct module *module在呼叫者處使用 THIS_MODULE 初始化
struct device *device指向與裝置驅動程式對應的
struct device的指標short *adapter_nums包含 dvb_register_adapter 的編號列表的陣列;用於從中選擇。通常,使用以下內容初始化:DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nums)
-
int dvb_unregister_adapter(struct dvb_adapter *adap)¶
登出 DVB 介面卡
引數
struct dvb_adapter *adap指向
struct dvb_adapter的指標
-
int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, const struct dvb_device *template, void *priv, enum dvb_device_type type, int demux_sink_pads)¶
註冊新的 DVB 裝置
引數
struct dvb_adapter *adap指向
struct dvb_adapter的指標struct dvb_device **pdvbdev指向將儲存新的
struct dvb_device的位置的指標const struct dvb_device *template用於建立
pdvbdev的模板;void *priv私有資料
enum dvb_device_type type裝置的型別,由
enum dvb_device_type定義。int demux_sink_pads解複用器輸出的數量,用於透過媒體控制器建立 TS 輸出。
-
void dvb_remove_device(struct dvb_device *dvbdev)¶
刪除已註冊的 DVB 裝置
-
void dvb_unregister_device(struct dvb_device *dvbdev)¶
登出 DVB 裝置
引數
struct dvb_device *dvbdev指向
struct dvb_device的指標
-
int dvb_create_media_graph(struct dvb_adapter *adap, bool create_rf_connector)¶
為裝置的數字電視部分建立媒體圖。
引數
struct dvb_adapter *adap指向
struct dvb_adapter的指標bool create_rf_connector如果為真,則也會建立射頻聯結器
描述
此函式檢查媒體控制器實體中的所有 DVB 相關函式,併為媒體圖建立所需的連結。它能夠處理多個調諧器或多個前端,但如果裝置有多個調諧器和多個前端,或者裝置有多個複用器,則不會建立連結。在這種情況下,呼叫方驅動程式應手動建立剩餘的連結。
-
void dvb_register_media_controller(struct dvb_adapter *adap, struct media_device *mdev)¶
在 DVB 介面卡處註冊媒體控制器
引數
struct dvb_adapter *adap指向
struct dvb_adapter的指標struct media_device *mdev指向
struct media_device的指標
-
struct media_device *dvb_get_media_controller(struct dvb_adapter *adap)¶
獲取關聯的媒體控制器
引數
struct dvb_adapter *adap指向
struct dvb_adapter的指標
引數
struct inode *inode指向
struct inode的指標。struct file *file指向
struct file的指標。
描述
檢查 DVB 裝置節點是否仍然有效,許可權是否正確,並遞增負使用計數。
引數
struct inode *inode指向
struct inode的指標。struct file *file指向
struct file的指標。
描述
檢查 DVB 裝置節點是否仍然有效,許可權是否正確,並遞減負使用計數。
引數
struct file *file指向
struct file的指標。unsigned int cmdIoctl 名稱。
unsigned long argIoctl 引數。
描述
檢查 DVB 裝置節點和 struct dvbdev.kernel_ioctl 是否仍然有效。如果有效,則呼叫 dvb_usercopy()。
-
int dvb_usercopy(struct file *file, unsigned int cmd, unsigned long arg, int (*func)(struct file *file, unsigned int cmd, void *arg))¶
在發出 ioctl 時,從/向用戶空間記憶體複製資料。
引數
struct file *file指向 struct
file的指標。unsigned int cmdIoctl 名稱。
unsigned long argIoctl 引數。
int (*func)(struct file *file, unsigned int cmd, void *arg)實際處理 ioctl 的函式
描述
輔助函式,使用 ioctl 方向和大小從使用者空間複製。然後,它呼叫 func,如果需要,將資料複製回用戶空間。
-
struct i2c_client *dvb_module_probe(const char *module_name, const char *name, struct i2c_adapter *adap, unsigned char addr, void *platform_data)¶
用於探測 I2C 模組的輔助例程
引數
const char *module_name要探測的 I2C 模組的名稱
const char *nameI2C 模組的可選名稱。用於除錯目的。如果為
NULL,則預設為 module_name。struct i2c_adapter *adap指向描述將繫結模組的 I2C 介面卡的
struct i2c_adapter的指標。unsigned char addr介面卡的 I2C 地址,以 7 位表示法。
void *platform_data要傳遞給探測的 I2C 模組的平臺數據。
描述
此函式將 I2C 裝置繫結到 DVB 核心。所有使用 I2C 匯流排控制硬體的驅動程式都應使用此函式。使用 dvb_module_probe() 繫結的模組應使用 dvb_module_release() 解繫結。
注意
過去,DVB 模組(主要是前端)透過 dvb_attach() 宏繫結,該宏使用 I2C 底層函式進行醜陋的駭客攻擊。這種用法已棄用,並將很快刪除。相反,請使用此例程。
返回
成功時,返回一個指向繫結的 I2C 裝置的
struct i2c_client。NULL否則。
-
void dvb_module_release(struct i2c_client *client)¶
釋放使用
dvb_module_probe()分配的 I2C 裝置。
引數
struct i2c_client *client指向要釋放的 I2C 客戶端的
struct i2c_client的指標。可以為NULL。
描述
此函式應用於釋放 dvb_module_probe() 保留的所有資源,並解除 I2C 硬體的繫結。
-
dvb_attach¶
dvb_attach (FUNCTION, ARGS...)
將 DVB 前端附加到 DVB 核心。
引數
FUNCTION要呼叫的前端模組上的函式。
ARGS...FUNCTION 引數。
描述
此輔助函式在執行時載入前端模組,並在其中使用 ARGS 執行 FUNCTION 函式。由於它會遞增符號使用計數,因此在取消註冊時,應呼叫 dvb_detach()。
注意
過去,DVB 模組(主要是前端)透過 dvb_attach() 宏繫結,該宏使用 I2C 底層函式進行醜陋的駭客攻擊。這種用法已棄用,並將很快刪除。相反,您應該使用 dvb_module_probe()。
-
dvb_detach¶
dvb_detach (FUNC)
分離透過
dvb_attach()載入的 DVB 前端
3.1.2. 數字電視環形緩衝區¶
這些例程實現用於處理數字電視資料並將其從/向用戶空間複製的環形緩衝區。
注意
出於效能原因,讀取和寫入例程不會檢查緩衝區大小和/或可用/空閒的位元組數。這必須在呼叫這些例程之前完成。例如
/* write @buflen: bytes */ free = dvb_ringbuffer_free(rbuf); if (free >= buflen) count = dvb_ringbuffer_write(rbuf, buffer, buflen); else /* do something */ /* read min. 1000, max. @bufsize: bytes */ avail = dvb_ringbuffer_avail(rbuf); if (avail >= 1000) count = dvb_ringbuffer_read(rbuf, buffer, min(avail, bufsize)); else /* do something */
如果只有一個讀取器和一個寫入器,則無需鎖定讀取或寫入操作。必須相互鎖定兩個或多個讀取器。重新整理緩衝區算作讀取操作。重置緩衝區算作讀取和寫入操作。必須相互鎖定兩個或多個寫入器。
-
struct dvb_ringbuffer¶
描述 DVB 框架中使用的環形緩衝區
定義:
struct dvb_ringbuffer {
u8 *data;
ssize_t size;
ssize_t pread;
ssize_t pwrite;
int error;
wait_queue_head_t queue;
spinlock_t lock;
};
成員
data寫入環形緩衝區資料的區域
size環形緩衝區的大小
pread要讀取的下一個位置
pwrite要寫入的下一個位置
error由環形緩衝區客戶端用於指示發生了錯誤。
queue環形緩衝區客戶端用於指示緩衝區已滿的等待佇列
鎖用於保護環形緩衝區的自旋鎖
-
void dvb_ringbuffer_init(struct dvb_ringbuffer *rbuf, void *data, size_t len)¶
初始化環形緩衝區、鎖和佇列
引數
struct dvb_ringbuffer *rbuf指向
struct dvb_ringbuffer的指標void *data指向將儲存資料的緩衝區的指標
size_t len從環形緩衝區到 buf 的位元組數
-
int dvb_ringbuffer_empty(struct dvb_ringbuffer *rbuf)¶
測試緩衝區是否為空
引數
struct dvb_ringbuffer *rbuf指向
struct dvb_ringbuffer的指標
-
ssize_t dvb_ringbuffer_free(struct dvb_ringbuffer *rbuf)¶
返回緩衝區中空閒位元組的數量
-
ssize_t dvb_ringbuffer_avail(struct dvb_ringbuffer *rbuf)¶
返回緩衝區中等待的位元組數
-
void dvb_ringbuffer_reset(struct dvb_ringbuffer *rbuf)¶
將環形緩衝區重置為初始狀態
-
void dvb_ringbuffer_flush(struct dvb_ringbuffer *rbuf)¶
重新整理緩衝區
引數
struct dvb_ringbuffer *rbuf指向
struct dvb_ringbuffer的指標
-
void dvb_ringbuffer_flush_spinlock_wakeup(struct dvb_ringbuffer *rbuf)¶
重新整理受自旋鎖保護的緩衝區並喚醒等待任務
引數
struct dvb_ringbuffer *rbuf指向
struct dvb_ringbuffer的指標
-
DVB_RINGBUFFER_PEEK¶
DVB_RINGBUFFER_PEEK (rbuf, offs)
檢視緩衝區中位元組 offs
引數
rbuf指向
struct dvb_ringbuffer的指標offs環形緩衝區內的偏移量
-
DVB_RINGBUFFER_SKIP¶
DVB_RINGBUFFER_SKIP (rbuf, num)
將讀取指標前進 num 位元組
引數
rbuf指向
struct dvb_ringbuffer的指標num要前進的位元組數
-
ssize_t dvb_ringbuffer_read_user(struct dvb_ringbuffer *rbuf, u8 __user *buf, size_t len)¶
將緩衝區讀取到使用者指標中
引數
struct dvb_ringbuffer *rbuf指向
struct dvb_ringbuffer的指標u8 __user *buf指向將儲存資料的緩衝區的指標
size_t len從環形緩衝區到 buf 的位元組數
描述
此變體假設緩衝區是使用者空間中的記憶體。因此,它將在內部呼叫 copy_to_user()。
返回
傳輸的位元組數或 -EFAULT
-
void dvb_ringbuffer_read(struct dvb_ringbuffer *rbuf, u8 *buf, size_t len)¶
將緩衝區讀取到指標中
引數
struct dvb_ringbuffer *rbuf指向
struct dvb_ringbuffer的指標u8 *buf指向將儲存資料的緩衝區的指標
size_t len從環形緩衝區到 buf 的位元組數
描述
此變體假設緩衝區是核心空間中的記憶體
返回
傳輸的位元組數或 -EFAULT
-
DVB_RINGBUFFER_WRITE_BYTE¶
DVB_RINGBUFFER_WRITE_BYTE (rbuf, byte)
將單個位元組寫入環形緩衝區
引數
rbuf指向
struct dvb_ringbuffer的指標位元組要寫入的位元組
-
ssize_t dvb_ringbuffer_write(struct dvb_ringbuffer *rbuf, const u8 *buf, size_t len)¶
將緩衝區寫入環形緩衝區
引數
struct dvb_ringbuffer *rbuf指向
struct dvb_ringbuffer的指標const u8 *buf指向將讀取資料的緩衝區的指標
size_t len從環形緩衝區到 buf 的位元組數
描述
此變體假設緩衝區是核心空間中的記憶體
返回
傳輸的位元組數或 -EFAULT
-
ssize_t dvb_ringbuffer_write_user(struct dvb_ringbuffer *rbuf, const u8 __user *buf, size_t len)¶
寫入透過使用者指標接收的緩衝區
引數
struct dvb_ringbuffer *rbuf指向
struct dvb_ringbuffer的指標const u8 __user *buf指向將讀取資料的緩衝區的指標
size_t len從環形緩衝區到 buf 的位元組數
描述
此變體假設緩衝區是使用者空間中的記憶體。因此,它將在內部呼叫 copy_from_user()。
返回
傳輸的位元組數或 -EFAULT
-
ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8 *buf, size_t len)¶
將資料包寫入環形緩衝區。
引數
struct dvb_ringbuffer *rbuf要寫入的環形緩衝區。
u8 *buf要寫入的緩衝區。
size_t len緩衝區長度(當前限制為最大 65535 位元組)。
返回
寫入的位元組數,或 -EFAULT、-ENOMEM、-EINVAL。
-
ssize_t dvb_ringbuffer_pkt_read_user(struct dvb_ringbuffer *rbuf, size_t idx, int offset, u8 __user *buf, size_t len)¶
從環形緩衝區中的資料包讀取。
引數
struct dvb_ringbuffer *rbuf相關的環形緩衝區。
size_t idx由
dvb_ringbuffer_pkt_next()返回的資料包索引。int offset要從中讀取的資料包中的偏移量。
u8 __user *buf資料的目標緩衝區。
size_t len目標緩衝區的大小。
返回
讀取的位元組數,或 -EFAULT。
描述
注意
與 dvb_ringbuffer_read() 不同,這 不會 更新環形緩衝區中的讀取指標。您必須使用 dvb_ringbuffer_pkt_dispose() 將資料包標記為不再需要。
-
ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx, int offset, u8 *buf, size_t len)¶
從環形緩衝區中的資料包讀取。
引數
struct dvb_ringbuffer *rbuf相關的環形緩衝區。
size_t idx由
dvb_ringbuffer_pkt_next()返回的資料包索引。int offset要從中讀取的資料包中的偏移量。
u8 *buf資料的目標緩衝區。
size_t len目標緩衝區的大小。
注意
與 dvb_ringbuffer_read_user() 不同,這 確實 更新了環形緩衝區中的讀取指標。
返回
讀取的位元組數,或 -EFAULT。
-
void dvb_ringbuffer_pkt_dispose(struct dvb_ringbuffer *rbuf, size_t idx)¶
處理環形緩衝區中的資料包。
引數
struct dvb_ringbuffer *rbuf相關的環形緩衝區。
size_t idx由
dvb_ringbuffer_pkt_next()返回的資料包索引。
-
ssize_t dvb_ringbuffer_pkt_next(struct dvb_ringbuffer *rbuf, size_t idx, size_t *pktlen)¶
獲取環形緩衝區中下一個資料包的索引。
引數
struct dvb_ringbuffer *rbuf相關的環形緩衝區。
size_t idx上一個資料包索引,或 -1 以返回第一個資料包索引。
size_t *pktlen成功後,將被更新以包含資料包的長度(以位元組為單位)。返回資料包索引(如果 >=0),如果沒有可用的資料包,則返回 -1。
3.1.3. 數字電視 VB2 處理程式¶
-
enum dvb_buf_type¶
數字電視記憶體對映緩衝區型別
常量
DVB_BUF_TYPE_CAPTURE緩衝區由核心填充,包含接收到的數字電視流
-
enum dvb_vb2_states¶
用於控制 VB2 狀態機的狀態
常量
DVB_VB2_STATE_NONEVB2 引擎尚未初始化、初始化失敗或 VB2 已釋放。
DVB_VB2_STATE_INITVB2 引擎已初始化。
DVB_VB2_STATE_REQBUFS已請求緩衝區
DVB_VB2_STATE_STREAMONVB2 正在流式傳輸。呼叫者不應直接檢查它。相反,他們應該使用
dvb_vb2_is_streaming()。
注意
描述
呼叫者不應直接接觸狀態機。這在 dvb_vb2.c 內部處理。
-
struct dvb_buffer¶
v4l2 的影片緩衝區資訊。
定義:
struct dvb_buffer {
struct vb2_buffer vb;
struct list_head list;
};
成員
vb嵌入式結構
vb2_buffer。liststruct dvb_buffer的列表。
-
struct dvb_vb2_ctx¶
VB2 處理程式的控制結構
定義:
struct dvb_vb2_ctx {
struct vb2_queue vb_q;
struct mutex mutex;
spinlock_t slock;
struct list_head dvb_q;
struct dvb_buffer *buf;
int offset;
int remain;
int state;
int buf_siz;
int buf_cnt;
int nonblocking;
enum dmx_buffer_flags flags;
u32 count;
char name[DVB_VB2_NAME_MAX + 1];
};
成員
vb_q指向具有 videobuf2 佇列的
struct vb2_queue的指標。mutex用於序列化 vb2 操作的互斥鎖。由 vb2 核心
wait_prepare和wait_finish操作使用。slock用於保護 dvb_vb2.c 中的緩衝區填充的自旋鎖。
dvb_q尚未填充的緩衝區的列表。
buf指向當前正在填充的緩衝區的指標。
offsetbuf 中要填充的下一個位置的索引。
remainbuf 中還剩多少位元組要填充。
state由
enum dvb_vb2_states定義的緩衝區狀態的位掩碼。buf_siz每個 VB2 緩衝區的大小。
buf_cntVB2 緩衝區的數量。
nonblocking如果與零不同,則裝置以非阻塞模式執行。
flags由
enum dmx_buffer_flags定義的緩衝區標誌。僅在DMX_DQBUF處填充。DMX_QBUF應該將此欄位清零。count填充緩衝區的單調計數器。有助於識別資料流丟失。僅在
DMX_DQBUF處填充。DMX_QBUF應該將此欄位清零。name裝置型別的名稱。目前,它可以是“dvr”或“demux_filter”。
-
int dvb_vb2_init(struct dvb_vb2_ctx *ctx, const char *name, int non_blocking)¶
初始化 VB2 處理程式
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
const char *nameVB2 處理程式的名稱
int non_blocking如果不為零,則表示裝置處於非阻塞模式
-
int dvb_vb2_release(struct dvb_vb2_ctx *ctx)¶
釋放 VB2 處理程式分配的資源,並將 ctx 置於 DVB_VB2_STATE_NONE 狀態。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
-
int dvb_vb2_is_streaming(struct dvb_vb2_ctx *ctx)¶
檢查 VB2 處理程式是否正在流式傳輸
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
返回
如果不流式傳輸,則為 0,否則為 1。
-
int dvb_vb2_fill_buffer(struct dvb_vb2_ctx *ctx, const unsigned char *src, int len, enum dmx_buffer_flags *buffer_flags)¶
填充 VB2 緩衝區
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
const unsigned char *src資料儲存的位置
int len要從 src 複製的位元組數
enum dmx_buffer_flags *buffer_flags指向由
enum dmx_buffer_flags定義的緩衝區標誌的指標。可以為 NULL。
-
__poll_t dvb_vb2_poll(struct dvb_vb2_ctx *ctx, struct file *file, poll_table *wait)¶
用於數字電視緩衝區處理的
vb2_core_streamon()的包裝器。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
struct file *file傳遞給輪詢檔案操作處理程式的
struct file引數。poll_table *wait傳遞給輪詢檔案操作處理程式的
poll_table等待引數。
描述
實現輪詢 syscall() 邏輯。
-
int dvb_vb2_stream_on(struct dvb_vb2_ctx *ctx)¶
用於數字電視緩衝區處理的
vb2_core_streamon()的包裝器。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
描述
啟動 dvb 流式傳輸
-
int dvb_vb2_stream_off(struct dvb_vb2_ctx *ctx)¶
用於數字電視緩衝區處理的
vb2_core_streamoff()的包裝器。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
描述
停止 dvb 流式傳輸
-
int dvb_vb2_reqbufs(struct dvb_vb2_ctx *ctx, struct dmx_requestbuffers *req)¶
用於數字電視緩衝區處理的
vb2_core_reqbufs()的包裝器。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
struct dmx_requestbuffers *req從使用者空間傳遞的
struct dmx_requestbuffers,以便處理DMX_REQBUFS。
描述
透過請求多個緩衝區來啟動流式傳輸。如果 req->count 為零,也用於釋放先前請求的緩衝區。
-
int dvb_vb2_querybuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b)¶
用於數字電視緩衝區處理的
vb2_core_querybuf()的包裝器。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
struct dmx_buffer *b從使用者空間傳遞的
struct dmx_buffer,以便處理DMX_QUERYBUF。
-
int dvb_vb2_expbuf(struct dvb_vb2_ctx *ctx, struct dmx_exportbuffer *exp)¶
用於數字電視緩衝區處理的
vb2_core_expbuf()的包裝器。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
struct dmx_exportbuffer *exp從使用者空間傳遞的
struct dmx_exportbuffer,以便處理DMX_EXPBUF。
描述
將緩衝區匯出為檔案描述符。
-
int dvb_vb2_qbuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b)¶
用於數字電視緩衝區處理的
vb2_core_qbuf()的包裝器。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
struct dmx_buffer *b為了處理
DMX_QBUF,從使用者空間傳遞的struct dmx_buffer。
描述
根據使用者空間請求,將數字電視緩衝區入隊
-
int dvb_vb2_dqbuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b)¶
用於數字電視緩衝區處理的
vb2_core_dqbuf()的包裝器。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
struct dmx_buffer *b為了處理
DMX_DQBUF,從使用者空間傳遞的struct dmx_buffer。
描述
將數字電視緩衝區出隊到使用者空間
-
int dvb_vb2_mmap(struct dvb_vb2_ctx *ctx, struct vm_area_struct *vma)¶
用於數字電視緩衝區處理的
vb2_mmap()的包裝器。
引數
struct dvb_vb2_ctx *ctxVB2 處理程式的控制結構
struct vm_area_struct *vma指向
struct vm_area_struct的指標,該指標帶有傳遞給驅動程式中 mmap 檔案操作處理程式的 vma。
描述
將數字電視影片緩衝區對映到應用程式地址空間。