2016-09-05 69 views
5

Sysfs arabirimini kullanarak bir karakter dizesi iletmem gereken bir Linux aygıt sürücüsü geliştiriyorum. Sysfs öznitelikleri verileri bir dize biçiminde kabul edebilir mi (echo "somedata" > sysfs_interface gibi bir şey)?Bir sysfs özniteliği, Linux Aygıt Sürücüsünde sayısal olmayan bir değer alabilir mi?

Yukarıda uygulamıştım ve iyi çalışıyor gibi görünüyor, ancak bunun geçerli olduğunu ( çekirdek topluluğunda kabul edilebilir ) emin olmak isterim. sysfs nitelikler bir dize biçiminde veri kabul Can

+0

İstersen çözüm geçerli olup olmadığını [böylece] karar vermek [MCVE] Uyguladığınız ne veriniz. [sor] – xenteros

cevap

7

...

Evet.
Aslında bu, echo'u kullandığınızda sysfs'nin kabul ettiği durumdur. echo 0 kullandığınızda, çıkış iki bayttır, 0x30 (sıfır basamağı için ASCII kodu) ve 0x0A (bir satırsonu). Örneğin, GPIO LED arabirimi raporlamak ve tetiği seçmek için anahtar kelimeler kullanır.

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

(parantez anahtar kelime geçerli seçimi, kalp atışı sayacı gösterir.)

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

... (echo "somedata" > sysfs_interface gibi bir şey)

bile gerek yok Alıntı işaretlerini kullanmak.
LED tetikleyiciyi none olarak ayarlamak için yukarıdaki örneğe bakın. Bu özel arayüzler olan


EK ...

Hayır, bu ana hat içindedir.

... ancak alt sistem tarafından sağlanandan ne haber?

Yetkisiz yanıt Linux Documentation/filesystems/sysfs.txt şöyledir:

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

bunlar özel arabirimlerdir, ancak alt sistem tarafından sağlanandan ne anlıyorsunuz? Led susbsystem'in "parlaklık" özelliği gibi? – Raulp

+0

@Raulp - Bakınız addendum. – sawdust

+0

Katılıyorum ve cevabınızı kabul ediyorum! herhangi bir fikir, sistem özniteliği dizisi, benzer öznitelik türlerinin her birinin altında görünecek şekilde nasıl yapılabilir, örneğin 4 kanal vardır ve her kanalda görünmesini istediğim parlaklığı istiyorum. yeni bir soru olarak. !! – Raulp