2016-09-05 12 views
5

私はsysfsインタフェースを使って文字列を渡す必要があるLinuxデバイスドライバを開発しています。 sysfs属性は文字列形式のデータを受け入れることができますか(echo "somedata" > sysfs_interfaceのようなもの)?Linuxデバイスドライバでsysfs属性が数値以外の値を取ることはできますか?

私はこれを実装しましたが正常に動作しているようですが、これが有効であることを確認したいと思います(はカーネルコミュニティで受け付けています)。 sysfsの属性は文字列形式でデータを受け入れることはでき

+0

[MCVE]あなたはあなたのソリューションが有効であるかどうか[そう]決定したい場合は、実装したものを入力してください。 [ask] – xenteros

答えて

7

...

はい。
実際には、それはechoを使用するとsysfsが受け付けるものです。 echo 0を使用すると、出力は2バイト、0x30(数字の0のASCIIコード)と0x0A(改行)になります。

たとえば、GPIO LEDインターフェイスでは、キーワードを使用してトリガーをレポートして選択します。

# cat /sys/class/leds/d8/trigger 
none nand-disk mmc0 timer [heartbeat] gpio 

(括弧キーワードは、ハートビートタイマーを現在の選択を示します。)

# echo none > /sys/class/leds/d8/trigger 
# cat /sys/class/leds/d8/trigger 
[none] nand-disk mmc0 timer heartbeat gpio 

...(echo "somedata" > sysfs_interfaceのようなもの)

あなたも必要ありません。引用符を使用する。
LEDトリガーをnoneに設定した上記の例を参照してください。これらは、カスタムインターフェイスです


補遺...

はありません、これはメインラインです。

...サブシステムによって提供されるものはどうですか?

公式の答えがLinux Documentation/filesystems/sysfs.txtからである:

Attributes should be ASCII text files, preferably with only one value 
per file. 
+0

これはカスタムインターフェイスですが、サブシステムが提供するものはどうですか?led susbsystemの "brightness"属性と同じですか? – Raulp

+0

@Raulp - 補遺を参照してください。 – sawdust

+0

私は同意し、あなたの答えを受け入れる!任意のアイデアどのようにシステムの定義された属性の配列は、同様のタイプの属性のそれぞれの下に表示されるようにすることができます。例えば4つのチャネルがあり、私は明るさがすべてのチャネルに表示されるようにしたい。新しい質問として! – Raulp

関連する問題