0

Android シェルでキャラクター デバイスに書き込もうとしています。しかし、mksh は、すべての操作に対して「不明なエラー 517」で応答します。問題を追跡するためにstraceを使用しようとしましたが、役に立ちません。これは、AOS 4.4 の全範囲のデバイス ノードでも発生しますが、4.2 では発生しません。

これが私がすることです:

# chmod 666 /dev/smd0
Unable to open /dev/smd0: Unknown error 517

# cat /dev/smd0
tmp-mksh: cat: /dev/smd0: Unknown error 517

デバイスはそこにあり、作成 (mknod) と削除の両方ができるので、私が見る限り許可の問題ではありません。

# ls /dev/smd0
crw-rw----    1 1000     1000      222,   0 Feb 13  2014 /dev/smd0

私がstraceで取得するのは次のとおりです。

ioctl(10</dev/tty>, SNDCTL_TMR_STOP or TCSETSW, {c_iflags=0x500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
ioctl(10</dev/tty>, TIOCSPGRP, [23069]) = 0
[pid 23069] open("/dev/smd0", O_RDONLY|O_LARGEFILE) = -1 EPROBE_DEFER (Unknown error 517)
[pid 23069] open("/dev/smd0", O_WRONLY|O_LARGEFILE) = -1 EPROBE_DEFER (Unknown error 517)
[pid 23069] write(2</dev/pts/5>, "Unable to open /dev/smd0: Unknown error 517\n", 44) = 44

shf.cファイルのmkshソースを調べても、洞察は得られません。

EPROBE_DEFERLinuxカーネルソースのファイルにもタグが見つかりました: ../include/linux/errno.h

#define EPROBE_DEFER    517     /* Driver requests probe retry */

この問題を引き起こす可能性のあるアイデアはありますか?

4

2 に答える 2

3

あなたが発見したように、517は linux error の値でありEPROBE_DEFER、デバイス ドライバーが Linux カーネルに特定のデバイスを後でプローブするように指示していることを意味します。Linux カーネルは、ドライバーprobe()がデバイスを使用できるように準備する必要がある場合に、ドライバーのメソッドを呼び出します。

残念ながら、EPROBE_DEFERプローブを再試行する必要がある理由や、再試行した場合に成功するために何をする必要があるかについては説明していません。ここにそれについて不平を言うスレッドがあります。

于 2015-12-05T02:00:44.823 に答える