PLIKI (13)





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 ini
UAS 13 zao
er4p2 5 13
C w7 pliki operacje we wy
Budownictwo Ogolne II zaoczne wyklad 13 ppoz
ch04 (13)
model ekonometryczny zatrudnienie (13 stron)
Logistyka (13 stron)
Stereochemia 13

więcej podobnych podstron