tty_ldisc.h

Lemur zaprasza

#ifndef _LINUX_TTY_LDISC_H
#define _LINUX_TTY_LDISC_H

/*
* Definitions for the tty line discipline
*/

#include
#include



struct tty_ldisc
{
int magic;
int num;
int flags;

int (*open)(struct tty_struct *);
void (*close)(struct tty_struct *);
void (*flush_buffer)(struct tty_struct *tty);
/* oproznia bufor wejsciowy i przekazuje znaki do procesu, o ile ktos na nie
bedzie czekal wpp. traci je bezpowrotnie*/
int (*chars_in_buffer)(struct tty_struct *tty);
/* podaje liczbe znakow zgromadzonych w buforze */
int (*read)(struct tty_struct * tty, struct file * file,
unsigned char * buf, unsigned int nr);
int (*write)(struct tty_struct * tty, struct file * file,
const unsigned char * buf, unsigned int nr);
int (*ioctl)(struct tty_struct * tty, struct file * file,
unsigned int cmd, unsigned long arg);
void (*set_termios)(struct tty_struct *tty, struct termios * old);
int (*select)(struct tty_struct * tty, struct inode * inode,
struct file * file, int sel_type,
struct select_table_struct *wait);
/* wolana przez tty_select, gdy w odniesieni do derminala uzyjemy funkcji
select(...)

/* Powyzsze funkcje sa wolane "z gory" tzn przez
procedury obslugi terminala , ktore z kolei sa wolane przez procesy. */

/* Natomiast 3 ponizsze funkcje sa wolane "z dolu" tzn. zwykle w wyniku
przerwania zgloszonego przez urzadzenie jest wywolywana jedna z tych funkcji
raczej nie bezposrednio a przez jedna z procedur xxx_bottom_half).
*/
void (*receive_buf)(struct tty_struct *, const unsigned char *cp,
char *fp, int count);
/* Ta funkcja ma odebrac znaki zgromadzone w buforze (flip w tty_struct) i
obrobic je */
int (*receive_room)(struct tty_struct *);

/* ta funkcja zwraca ile jescze moze przyjac znaczkow od sterownika "z dolu"
(we wszystkich innych, zdefiniowanych w Linux'ie dyscyplinach nie robi ona
dokladnie nic poza zwroceniem wartosci 65535). */
void (*write_wakeup)(struct tty_struct *);
/* Dzieki tej funkcji jest mozliwe zastosowanie nastepujacego schematu: proces
zleca wykonanie operacji pisania, wstawia sie na kolejke procesow spiacych i
wykonuje schuedule(). Natomiast sterownik po zakonczeniu pisania zglasza
przerwanie, ktorego procedura obslugi powoduje wywolanie wlasnie tej funkcji
(byc moze przez "bottom_half") Nie zauwazylem aby ta funkcj byl implementowana w ktorejkolwiek z Linux'owych dyscyplin. */
};

#define TTY_LDISC_MAGIC 0x5403

#define LDISC_FLAG_DEFINED 0x00000001

#endif /* _LINUX_TTY_LDISC_H */
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza