0
votes

Qui a appelé TTY_OPEN () dans le noyau Linux?

Pour les pilotes de souris, de clavier et de joystick, il peut appeler x appeler "ouvert" puis à l'aide de ces pilotes.

(Lorsque je vérifie Centos 7 (mode texte uniquement) dans VirtualBox, je n'ai pas vu X après exécuté LSOF / Dev / Entrée / Event2 (clavier), mais mon clavier travaille toujours)

Que diriez-vous de TTY_OPEN ()?

Selon une trace d'appel, nous pouvons connaître à peu près la séquence: (au moins, nous connaissons quelqu'un appelé 'sys_open') https://bugzilla.redhat.com/show_bug.cgi?id=630464

Cependant, je ne sais toujours pas qui appelle «ouvert»?


1 commentaires

Tout processus d'ouverture / DEV / TTYN, comme par exemple init, qui commence alors à un getty ou similaire. Et il y a openvt , qui alloue et ouvre un VT et commence une coquille dessus.


3 Réponses :


2
votes

Lorsque je vérifie Centos 7, le mode texte uniquement, dans VirtualBox, je n'ai pas vu X après exécuté LSOF / Dev / Entrée / Event2 (clavier), mais mon clavier fonctionne toujours

C'est parce que vous utilisez le console virtuelle puis, l'un des / Dev / TTYN périphériques. Celles-ci sont directement câblées au sous-système d'événement d'entrée Linux à l'intérieur du noyau lui-même (par le module VT ); essentiellement tous les appareils semblables à un clavier agissent comme des entrées sur le terminal virtuel actuellement actif.

x elle-même utilise une console virtuelle, pour que le noyau puisse basculer entre elle et toutes les consoles virtuelles basées sur le texte.

Du TTY_OPEN () ?

Si vous exécutez sudo lsof / dev / tty [0-9] , vous pouvez voir quels processus accèdent à une console virtuelle.

Les processus avec getty dans leur nom sont ceux qui fournissent des terminaux de connexion. (Ceux qui sont utilisés avec des bornes en série sont très similaires; en fait, de nombreux programmes getty peuvent gérer à la fois des consoles virtuelles et des terminaux de série.) Lorsque vous vous connectez, ce getty lance login (programme!), Qui démarre à son tour la coque par défaut définie pour cet utilisateur (voir getent passwd nom d'utilisateur ; c'est le dernier champ , et ce doit être celui qui est énuméré dans / etc / coquilles à autorisé).

Le noyau lui-même prend en charge la passation d'une console virtuelle différente via Ctrl + alt + fn (F1 pour TTY1, F2 pour TTY2, et bientôt). Si vous utilisez des pilotes graphiques appropriés, vous pouvez même basculer entre Xorg et consoles virtuelles. (Habituellement, Xorg est exécuté sur TTY6 ou TTY7, mais cela varie de la distribution à la distribution.) Le Ctrl + alt + et Ctrl + alt + peut également être utilisé pour passer à la console virtuelle précédente ou suivante.


0 commentaires

0
votes

Merci d'un animal nominal pour les informations.

Je traçant Linux 2.0 ( https://mirrors.rge.kernel.org/pub/linux/kernel/v2.0/ ), peut-être un peu différent. Désolé, je ne trouve pas de source en ligne Linux 2.0 pour relier la référence. P>

pour le clavier, en mode texte, je pense que personne n'appelle "ouvert" dans le noyau, Dans 'int tty_init (void)' (tty_io.c), il appellera "kbd_init ();" Ensuite, nous pouvons voir: p>

open("/dev/tty1",O_RDWR,0);


0 commentaires

0
votes

tty _ * Les routines sont unix matériels indépendants pour implémenter l'interface du terminal dans le noyau. Ils sont responsables des disciplines de la TTY, des trucs de contrôle de la tâche et du traitement de caractères de la bouche (y compris la génération de signaux sur CTRL-C , par exemple), ils implémentent également l'interface sur les paires TTY / PTY et le comme.

Il s'agit de code courant pour inclure toutes les fonctionnalités communes des pilotes de terminal dans n'importe quel type de matériel que vous pouvez avoir joint pour (la console clavier / affichage n'est qu'un exemple, mais vous avez au moins des interfaces UART RS-232C, Dongles série USB, Multiplexeurs de ligne série PCI, etc.)

Fonctionnalité terminale Dates de l'ancien V7 Unix et de nombreuses améliorations provenant de BSD UNIX (comme le contrôle du travail)

D'ailleurs, la mise en œuvre Linux de l'interface série n'est pas très bonne, vous devriez examiner la mise en œuvre de la BSD pour un bon.


0 commentaires