Newsgroup: it.comp.os.linux.iniziare
Titolo: Chiudere seriale

Salve,
ho un piccolo problema.
Ho bisogno di chiudere una seriale da bash, senno' sono costretto a
riavviare il sistema.
Sapete dirmi come?
grazie

 riavviare il sistema.
Uh?
Koza tu folere tire kon "kiutere zeriale" ? :-)
Perche' non parti dal problema, invece che dalla tua soluzione?
lsof ti puo' dare il processo che sta usando la seriale.
kill lo puo' uccidere.
Puo' bastare?
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 Perche' non parti dal problema, invece che dalla tua soluzione?
Si, scusami hai ragione.
Allora il problema è il seguente.
Abbiamo un programma, sviluppato da noi, che a quanto pare sbaglia
"qualcosa" e non chiude correttamente la seriale sulla quale stava
lavorando.
Purtroppo al momento dell'errore il programma cessa e la seriale,
credo, rimanga aperta anche se il programma è morto.
Il comando lsof purtroppo non è disponibile perchè utilizziamo un
sistemare minimale di gentoo.
Secondo me la soluzione tampone (per evitare di riavviare il sistema...
è un 486) può essere un comando che chiuda correttamente la seriale.
Ma non so quale sia.
Grazie

fuser -k -m /dev/ttyS0
PS: Koza tu folere tire kon "kiutere zeriale" ? :-)

fuser -k -m /dev/ttyS0
PS: Koza tu folere tire kon "kiutere zeriale" ? :-)
PS2: non tutti i sistemi hanno lsof

 
un'altra e rimuovere da sotto il naso il driver della seriale con rmmod
-- 
       _
.-._.=\-.
(_)=='(_)______________/ helix \___

 Ma non so quale sia.
	close()
ma ha bisogno del file descriptor che ti viene dato dalla rispettiva open.
Quindi non lo puoi fare a meno di usare brute-force quindi i registru 
dell'UART o il driver.


 PS: Koza tu folere tire kon "kiutere zeriale" ? :-)
farla smettere di trasmettere/ricevere dati

 Ma non so quale sia.
Non esiste.
Il comando per chiudere un file/device, presuppone l'uso di un file
descriptor, che dal di fuori del programma NON hai.
Riassunto:
Installa lsof e vedi se davvero non c'e' ancora un processo *vivo* che
tiene occupata la seriale.
Prova, nel caso, rimuovendo il modulo che gestisce la seriale.
Modifica il tuo programma perche' testi, all'avvio, l'errore sulla open,
ed eventualmente riutilizzi il device.


 Purtroppo al momento dell'errore il programma cessa 
cessa nel senso che muore?
il programma ce l'ha un sighandler?

 farla smettere di trasmettere/ricevere dati
Dati pochi, supposizioni tante.
Se il programma che comunicava è morto, è probabile che la seriale ha smesso
di trasmettere ed è stata chiusa, il tuo problema potrebbe essere che la
seriale rimane in stato non resettato, per cui il programma si trova con la
seriale in uno stato che non si aspetta e si incasina.
Puoi provare con ' setserial ', magari impostandola la resetta.
Auguri.

 farla smettere di trasmettere/ricevere dati
soluzione hardware, anzi arduer: toglila dallo slot.
-- 
bye... 'roby
*Origin: trapezoid: a device to catch zoids (2:333/333)

 Puoi provare con ' setserial ', magari impostandola la resetta.
Purtroppo manca nel sistema anche questo comando :\

 ed eventualmente riutilizzi il device.
Bene speravo in una soluzione tampone che non mi facesse cambiare una
riga di codice in questa fase dello sviluppo/test.
Ciao

 riga di codice in questa fase dello sviluppo/test.
La soluzione tampone potrebbe anche esistere, ma se non hai nessuno
strumento usabile, c'e' poco da tamponare.


 Qui sotto parli di sviluppo/test.
Scusami roberto ma siamo su due lunghezze d'onda differenti.
Non credi che per te sia difficile giudicare quando non si sa di cosa
si sta parlando?
Cmq fa nulla, problema risolto.

 
Contento per te.
Se poi volessi condividere con il resto del mondo anche il _come_,
chi ci dovesse passare la prossima volta avrebbe uno spunto per la
soluzione.


 soluzione.
Problemi di protocollo
bastava settare il registro 7305 bit 7 dello UMAC per dirgli che era
finita
l'operazione di scrittura e potevo liberare la seriale.
Spero possa tornare utile.