Przewodnik po plikach podsystemu WEJSCIA-WYJSCIA
Do strony głównej
Przewodnik po plikach
podsystemu WEJŚCIA-WYJŚCIA
Urządzenia
znakowe
Urządzenia
blokowe
Terminale
Urządzenia znakowe
include/asm-i386/irq.h
Plik zawiera makra wykorzystane następnie w pliku irq.c.
Makra te definiują obsługę przerwań sprzętowych najniższego
poziomu.
arch/i386/kernel/irq.c
Implementacja procedur obsługi przerwań sprzętowych (IRQ).
Główne funkcje:
static inline void mask_irq(unsigned int irq_nr)
maskuje irq o zadanym numerze
static inline void unmask_irq(unsigned int irq_nr)
odmaskowuje irq o zadanym numerze
void disable_irq(unsigned int irq_nr)
wyłącza przerwanie pod ochroną cli
void enable_irq(unsigned int irq_nr)
włącza przerwanie pod ochroną cli
int setup_x86_irq(int irq, struct irqaction * new)
instalacja nowej funkcji obsługi dla danego irq; wywoływana przez
request_irq(...)
int request_irq(unsigned int irq,
void (*handler)(int, void *, struct pt_regs *),
unsigned long irqflags,
const char * devname,
void *dev_id)
instaluje funkcję obsługi przerwania; wywołuje setup_x86_irq(...)
void free_irq(unsigned int irq, void *dev_id)
usuwa obsługę przerwania
unsigned long probe_irq_on (void)
zwraca maskę przerwań, które są aktywne i nie mają zdefiniowanej
procedury obsługi
int probe_irq_off (unsigned long irqs)
pobiera maskę irqs przerwań , a zwraca najmniejszy numer przerwania, które wystąpiło
void init_IRQ(void)
inicjuje obsługę IRQ
drivers/char/random.c
kod generatora liczb losowych
Urządzenia blokowe, Powrót do początku
linux/fs/block_dev.c
implementacja funkcji obsługujących czytanie i pisanie z urządzeń
blokowychGłówne funkcje:
int block_write(struct inode * inode, struct file * filp,
const char * buf, int count)
zarządza zapisywaniem danych na urządzeniu blokowym
int block_read(struct inode * inode, struct file * filp,
char * buf, int count)
zarządza odczytywaniem danych z urządzenia blokowego
linux/drivers/block/ll_rw_blk.c
implementacja funkcji obsługujących kolejki żądań do dysku oraz ich
obsługi
Główne funkcje:
void ll_rw_block(int rw, int nr, struct buffer_head * bh[])
ustanawia żądanie przeczytania z dysku danej liczby sektorów
static void make_request(int major,int rw, struct buffer_head * bh)
tworzy żądanie dla dysku
void add_request(struct blk_dev_struct * dev, struct request * req)
wkłada zlecenie na odpowiednie miejsce w kolejce żądań
void ll_rw_swap_file(int rw, kdev_t dev, unsigned int *b, int nb,
char *buf)
ustanawia żądania dla pliku wymiany
int blk_dev_init(void)
inicjuje urządzenia blokowe, tworzy kolejki żądań, inicjuje procedury
strategii itp.
linux/drivers/block/hd.c
implementacja funkcji obsługi przerwań do dysku (niskiego poziomu)
implementacja funkcji kontroli stanu dysku i kontrolera
realizacja komunikacji pomiędzy dyskiem i kontrolerem
Główne funkcje:
void hd_setup(char *str, int *ints)
zbiera dane o typie i rodzaju dysku
static void identify_intr(void)
pobiera fizyczne dane dysku
static void reset_controller(void)
resetuje kontroler
static void reset_hd(void)
resetuje dysk
int do_special_op (unsigned int dev)
wywołuje specjalną operację dla dysku
static void hd_request(void)
pobiera kolejne żądanie do dysku z kolejki zadań
static int hd_ioctl(struct inode * inode, struct file * file,
unsigned int cmd, unsigned long arg)
kontroluje parametry pracy dysku
static void hd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
odczytuje informacje o twardych dyskach i umieszcza je w hd_gendisk
static int hd_open(struct inode * inode, struct file * filp)
otwiera urządzenie
static void hd_release(struct inode * inode, struct file * file)
zwalnia i zamyka urządzenie
Terminale, Powrót do początku
linux/include/linux/tty.h
definicje struktur danych i makra dla terminali
linux/drivers/char/tty_io.c
implementacja funkcji obsługujących strukturę file_operations dla terminali;
tty_read, tty_open
include/asm-i386/termios.h
definicje struktury termio dotyczącej znaków sterujących; funkcje inline
przerabiających termio na termios
linux/drivers/char/n_tty.c
implementacja funkcji obsługujących dyscyplinę linii N_TTY
linux/drivers/char/pty.c
implementacja funkcji obsługujących pseudoterminale
Główne funkcje:
static void pty_close(struct tty_struct * tty, struct file *
filp)
zamyka pseudoterminal
static int pty_write(struct tty_struct * tty, int from_user,
const unsigned char *buf, int count)
pisze do pseudoterminala
int pty_open(struct tty_struct *tty, struct file * filp)
otwiera pseudoterminal
int pty_init(void)
inicjuje pseudoterminal
linux/drivers/char/tty_ioctl.c
implementacja funkcji n_tty_ioctl() i innych dla dyscypliny linii N_TTY
Główna funkcja:
int n_tty_ioctl(struct tty_struct * tty, struct file * file,
unsigned int cmd, unsigned long arg)
ogsługuje dyscyplinę linii N_TTY
linux/drivers/char/console_struct.h
deklaracja struktury vc_data
linux/drivers/char/console.c
implementacja funkcji obsługujących konsole
Główne funkcje:
void do_keyboard_interrupt(void)
wywołuje przerwanie
int vc_allocate(unsigned int console)
int vc_cons_allocated(unsigned int console)
int vc_resize(unsigned long lines, unsigned long cols)
void vc_disallocate(unsigned int currcons)
zarządzają pamięcią konsoli
unsigned long con_init(unsigned long)
int con_open(struct tty_struct *tty, struct file * filp)
void con_write(struct tty_struct * tty)
void console_print(const char * b)
void update_screen(int new_console)
obsługują konsolę
void do_blank_screen(int)
void do_unblank_screen(void)
void poke_blanked_console(void)
wygaszanie ekranu
void mouse_report(struct tty_struct * tty, int butt, int mrx, int
mry)
int mouse_reporting(void)
obsługa myszy
Powrót do początku
Autor: Michał Olszewik.
Wyszukiwarka
Podobne podstrony:
13 pliki iniUAS 13 zaoer4p2 5 13C w7 pliki operacje we wyBudownictwo Ogolne II zaoczne wyklad 13 ppozch04 (13)model ekonometryczny zatrudnienie (13 stron)Logistyka (13 stron)Stereochemia 13więcej podobnych podstron