看板 LinuxDev 關於我們 聯絡資訊
我有個driver,會產生1個device node:AAA,兩個input device:BBB和CCC, 我有實作AAA的fops.poll函數,讓其回傳(POLLIN | POLLRDNORM) 因為driver內部會有兩種類型的資料,如果上層App需要B類型的資料, 就會讀取input device:BBB(EV_ABS);如果上層App需要C類型的資料,就會 讀取input device:CCC(EV_REL) 我用個App同時讀取兩種類型的資料,在讀取的時候會去判斷pollfd的revents 是否有變成POLLIN,如果有才真正去讀值。 我讀取input device:BBB時候,能夠正常的讀到資料;但是去讀CCC時則除了 一開始的第一次能讀到外,就都讀取不到了(driver有一直往上送) 而去debug時發現,第二次後CCC的revents不會變成POLLIN,而導致資料讀取 失敗。 想請問,有哪些原因會導致CCC收不到之後的資料呢? 或是說driver只能容許生成一個input device呢? 如果只能生成一個input device,那可以同時開啟並且收取不同的資料嗎? 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.82.10