GPIO_LINEINFO_CHANGED_READ

警告

此ioctl是GPIO字元裝置使用者空間API (v1)的一部分,並且已被GPIO_V2_LINEINFO_CHANGED_READ取代。

名稱

GPIO_LINEINFO_CHANGED_READ - 從晶片讀取受監視線路的線路資訊更改事件。

概要

int read(int chip_fd, void *buf, size_t count)

引數

chip_fd

open()返回的GPIO字元裝置的檔案描述符。

buf

包含events的緩衝區。

count

buf中可用的位元組數,必須至少為gpioline_info_changed事件的大小。

描述

從晶片讀取受監視線路的線路資訊更改事件。

注意

通常不需要監視線路資訊更改,通常僅由系統監視元件執行。

這些事件與線路的請求狀態或配置的更改有關,而不是其值。 使用GPIO_LINEEVENT_DATA_READ線上路值更改時接收事件。

必須使用GPIO_GET_LINEINFO_WATCH_IOCTL監視線路才能生成資訊更改事件。 隨後,線路的請求,釋放或重新配置將生成資訊更改事件。

核心在事件發生時對其進行時間戳記,並將其儲存在緩衝區中,使用者空間可以使用read()方便地從該緩衝區讀取事件。

核心事件緩衝區的大小固定為每個chip_fd 32個事件。

如果事件突發發生的速度快於使用者空間讀取事件的速度,則緩衝區可能會溢位。 如果發生溢位,則會丟棄最新的事件。 無法從使用者空間檢測到溢位。

從緩衝區讀取的事件始終以核心檢測到的相同順序排列,包括單個chip_fd監視多個線路時。

為了最大程度地減少將事件從核心複製到使用者空間所需的呼叫次數,read()支援複製多個事件。 複製的事件數是核心緩衝區中可用的事件數和使用者空間緩衝區(buf)中容納的事件數中的較小者。

如果沒有可用事件,並且尚未設定chip_fd為**O_NONBLOCK**,則read()將阻塞。

可以透過使用poll()或等效項檢查chip_fd是否可讀來測試是否存在事件。

首次新增到5.7中。

返回值

成功時,讀取的位元組數,這將是gpioline_info_changed事件大小的倍數。

錯誤時為-1,並適當設定errno變數。 常見的錯誤程式碼在GPIO錯誤程式碼中描述。