在什麼情況下,可以在Linux 2.6串行驅動程序中快速連續調用兩次uart_ops.start_tx()操作?串行驅動程序start_tx()對於單個寫入調用兩次
2
A
回答
1
不應該有任何問題快速連續多次調用它。如果由競爭處理器完成,start_tx()
在port->lock
上執行自旋鎖。如果按順序完成,特定於uart的驅動程序將檢查它是否已經啓動。 (來自linux-2.6.27.8/drivers/mmc/card/sdio_uart.c
):
if (!(port->ier & UART_IER_THRI)) {
port->ier |= UART_IER_THRI;
sdio_out(port, UART_IER, port->ier);
}
從更高級別的角度來看,請參閱串行芯檢查如果發射機已經啓動,以及用於啓動它的適當性(linux-2.6.27.8/drivers/serial/serial_core.c
):
static void __uart_start(struct tty_struct *tty)
{
struct uart_state *state = tty->driver_data;
struct uart_port *port = state->port;
if (!uart_circ_empty(&state->info->xmit) && state->info->xmit.buf &&
!tty->stopped && !tty->hw_stopped)
port->ops->start_tx(port);
}
0
我在這個領域工作在較舊的內核上,2.6.10。在用戶空間假設'寫'的情況下,我也看到了對驅動程序的start_tx函數的2次(或更多次)調用。通過stty,我關閉了tty層中的任何'opost'。之後,我看到每個寫入只有一個start_tx。我懷疑行紀律層正在添加對start_tx的調用。
我知道的軼事,但認爲它可能有幫助。
相關問題
- 1. mongodb allanbank異步驅動程序回調被調用兩次
- 2. 用於SAM7串行的嵌入式Linux USB驅動程序
- 3. 將TCP寫入RS232驅動程序
- 4. Cyclejs讀取/寫入websocket驅動程序?
- 5. 替代寫入ODBC驅動程序
- 6. iOS的寫入設備驅動程序
- 7. MongoDB C#驅動程序WriteConcernException對於readOnly = false的用戶寫入未經授權
- 8. 寫一個GSM調制解調器驅動程序?
- 9. 哪個C#驅動程序用於Mongo?
- 10. 處理兩個JDBC驅動程序的通用JDBC驅動程序
- 11. 獲取org.openqa.selenium.remote.SessionNotFoundException對於IE驅動程序
- 12. USB串行/ CDC功能驅動程序
- 13. c#.NET串行驅動程序性能
- 14. 固定字符串的自動增量值對於每次調用程序
- 15. 使用PHP驅動程序深入查詢MongoDB子集兩級深入使用PHP驅動程序
- 16. 多個設備,單個驅動程序
- 17. 如何使用DMA從Linux設備驅動程序寫入硬盤驅動器
- 18. 關於JDBC驅動程序
- 19. 用C寫入USB驅動器的便攜式應用程序#
- 20. 防止兩個python程序一次寫入同一文件
- 21. xorg輸入驅動程序
- 22. LabVIEW「驅動程序」 - 入門
- 23. 寫碼器用於在MongoDB中的Java驅動程序
- 24. 無法應用程式載入由於ODBC驅動程序
- 25. Android應用程序:調用AsyncTask兩次?
- 26. 分割地圖調用兩臺Linux設備驅動程序
- 27. 如何啓動自寫驅動程序
- 28. 如何從兩個程序同時寫入單個xml文件?
- 29. 使用java驅動程序異步寫入到documentdb
- 30. 如何使用jdbc驅動程序寫入事務?