linux 2.6シリアルドライバでは、どのような状況でuart_ops.start_tx()操作を連続して2回連続して呼び出すことができますか?シリアルドライバstart_tx()1回の書き込みで2回呼び出される操作
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'を無効にしました。その後、私は各書き込みごとに1つのstart_txしか見ませんでした。私は、ライン規律層がstart_txへの呼び出しを追加していると思われます。
私は知っていますが、助けてくれると思っていました。
関連する問題
- 1. 1回のリダイレクトで2回の操作
- 2. UILongPressGestureが2回呼び出される
- 3. 2回呼び出されるSpringコントローラメソッド
- 4. WebApi 2回呼び出されるアクションフィルタ
- 5. MVC3 - 毎回2回呼び出されるコントローラのインデックスアクション
- 6. Python:出力スクリプトを2回読み込み、csvに2列書き込む
- 7. PHP:foreachの本体での操作は複数回呼び出されますか?
- 8. PrintStream.close()はなぜ2回呼び出されるのですか?
- 9. なぜペイントメソッドが2回呼び出されたのですか?
- 10. Zend Frameworkのアクションが2回呼び出される
- 11. NSNotificationのオブザーバ(itemDidFinishPlaying)2回呼び出されるランダムに
- 12. jsファイルが2回呼び出されるのを防ぐ
- 13. タブホストのタブonCreateメソッドが2回呼び出される
- 14. MVCコントローラのアクションが2回呼び出される
- 15. クリックするとインタースティシャルが1回呼び出されます。
- 16. Wordpress - 1ページでwp_get_recent_postを2回呼び出す
- 17. iPadでjQuery - click-eventが2回呼び出されました
- 18. onCreateOptionsMenu()はフラグメント内で2回呼び出されました
- 19. flatMap()はシングルイベントで2回呼び出されます
- 20. accepts_nested_attributes_forがモデルで2回呼び出されました
- 21. BroadcastReceiver onReceive()が2回呼び出される
- 22. jquery draggable関数が2回呼び出される
- 23. shouldAutorotateToInterfaceOrientation起動時に2回呼び出される
- 24. Djangoビューが2回呼び出される...時々
- 25. PHP Zend Controllerプラグインが2回呼び出される
- 26. Xcode/ios5 - 2回呼び出されるロングタッチジェスチャ
- 27. UIManagedDocumentシングルトンコードopenWithCompletionHandlerが2回呼び出されてクラッシュする
- 28. PerformFetchWithCompletionHandlerがXcodeでシミュレートするときに2回呼び出される
- 29. JQueryUIが1つのidに2回の.accordionを呼び出す
- 30. $ httpサービスの角度ファクトリが2回呼び出されます