Newsgroup: it.comp.os.linux.sys
Titolo: HD led su keybord leds

Volevo far illuminare uno qualsiasi dei led della tasiera allo stesso 
modo dell'HD led posto sul case (la lucetta rossa x intenderci) in modo 
da vederlo direttamente sulla tastiera.
Sapete se c'è un modo X uno che ha una Slackware 10 con Kernel 2.6.7?
Grazie 1000


Senza spelare cavi ? mhhh dubito ...
Il sistema operativo puo senz'altro attivare o disattivare le funzioni 
blocca maiuscolo, blucnum e bloc scorr ma dubito seriamente possa 
accendere la luce senza attivare la relativa funzione.

 da vederlo direttamente sulla tastiera.
Una volta avevo un programmino che lo faceva con il traffico di
un'interfaccai di rete, forse qualcuno ne ha scritto uno analogo per i
dischi fissi.
Google che dice ?
Ciao
Teo

 da vederlo direttamente sulla tastiera.
Per ottenere un'effetto simile a quello del led del case dovresti
mettere del codice per controllare il led della tastiera nell'ISR del
canale ide (in pratica una porcata). Puoi fare una cosa fatta in casa
con la bash:
channel=0
int=0
while true; do
	sleep 0.1
	line=`cat /proc/interrupts | grep ide$channel`
	newint=`echo $line | cut -f2 -d: | sed s/ide[0-9]//g | sed s/[^0-9]//g`
	if [ $int -eq 0 ]; then
		int=$newint
		continue
	elif [ $int -eq $newint ]; then
		setleds +scroll
		setleds -scroll
	fi
	int=$newint
done
Pero`:
* l'overhead per pilotare i led della tastiera e` molto alto (e` una
  periferica lenta)
* funziona solo per il terminale su cui e` in esecuzione, dovresti fare
  un ciclo su tutti i tty in uso ed usare setleds +scroll < $currtty
  (altro overhead)
Se diminuisci il tempo di sleep (es. 0.01) l'effetto e` piu` bello, ma
in pratica usi il 100% della CPU solo per quello ;)
Luca
-- 
Home: 
http://kronoz.cjb.net
"La teoria e` quando sappiamo come funzionano le cose ma non funzionano.
 La pratica e` quando le cose funzionano ma non sappiamo perche`.
 Abbiamo unito la teoria e la pratica: le cose non funzionano piu` e non
 sappiamo il perche`." -- A. Einstein

 con la bash:
cosě funziona:
int=0
while true; do
        usleep 10000
        newint=`cat /proc/interrupts | grep ide0 | awk '{ print $2 }'`
        if [ $int -eq 0 ]; then
                int=$newint
                continue
        elif [ $int != $newint ]; then
                setleds +scroll
                setleds -scroll
        fi
        int=$newint
done
mettevi -eq invece che != e c'era qualcosa che non andava nella selezione di
newint dall'output di cat ma non ti so dire cosa perchč awk mi sembrava piů
comodo č lo cambiato senza sbattermici granchč.. :)
ho provato a lanciarlo in background e il processore non ne risente se
l'accesso al disco č minimo.. ho lanciato un find / -name tar giusto per prova
e ksoftirqd schizza a 20-25% di utilizzo della cpu.. cosa vuol dire?!? sono i
numerosi accessi a /proc/interrupt?
-- 
[Filippo...........................]
[Linux User #342745................]
[remove ANTISPAM for reply.........]
        ==[...penguin powered...]==

 done
Bello ... lo stavo provando per la scheda di rete ( che non ha led sul 
mio portatile sigh ) ...fatto 2 modifiche funziona, bello, comodo e 
tutto quanto ... solo 1 cosa ... a te sleep accetta valori frazionari ?

 numerosi accessi a /proc/interrupt?
No, quelli sono abbanstaza irrilevanti, come ho detto:
* l'overhead per pilotare i led della tastiera e` molto alto (e` una
  periferica lenta)
ci sono inoltre di mezzo 3 syscalls per ogni esecuzione di setleds (10
usec per syscall piu` o meno), quindi 6 per ciclo. In totale fanno
600usec ogni secondo solo per pilotare i led.
Incidono molto anche i tempi delle fork+exec necessarie per lo spawn di cat,
sed e setleds (siano sui 180~200usec per ogni fork+exec).
Luca
-- 
Home: 
http://kronoz.cjb.net
This message will self distruct in 5 seconds.