The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Краткая справка

Краткая справка

Предыдущая  Содержание  Следующая V*D*V

Эта глава представляет следующие символы, связанные с управлением оборудованием:

 

#include <linux/kernel.h>

void barrier(void)

Этот "программный" барьер памяти просит через эту инструкцию компилятор считать всю память нестабильной.

 

#include <asm/system.h>

void rmb(void);

void read_barrier_depends(void);

void wmb(void);

void mb(void);

Аппаратные барьеры памяти. Они просят через эту инструкцию процессор (и компилятор) выгрузить все чтения, записи памяти, или и то и другое.

 

#include <asm/io.h>

unsigned inb(unsigned port);

void outb(unsigned char byte, unsigned port);

unsigned inw(unsigned port);

void outw(unsigned short word, unsigned port);

unsigned inl(unsigned port);

void outl(unsigned doubleword, unsigned port);

Функции, которые используются для чтения и записи портов ввода/вывода. Они также могут быть вызваны программами пространства пользователя при условии, что они имеют правильные привилегии для доступа к портам.

unsigned inb_p(unsigned port);

...

Если после операции ввода/вывода необходима небольшая задержка, вы можете использовать шесть аналогичных предыдущему набору функций с паузой; эти функции с паузой имеют имена, оканчивающиеся на _p.

void insb(unsigned port, void *addr, unsigned long count);

void outsb(unsigned port, void *addr, unsigned long count);

void insw(unsigned port, void *addr, unsigned long count);

void outsw(unsigned port, void *addr, unsigned long count);

void insl(unsigned port, void *addr, unsigned long count);

void outsl(unsigned port, void *addr, unsigned long count);

"Строковые функции" оптимизированы для передачи данных из входного порта в область памяти, или наоборот. Такие передачи осуществляются чтением или записью в тот же порт count раз.

 

#include <linux/ioport.h>

struct resource *request_region(unsigned long start, unsigned long len, char *name);

void release_region(unsigned long start, unsigned long len);

int check_region(unsigned long start, unsigned long len);

Распределители ресурсов для портов ввода/вывода. (Не рекомендуемая) функция check возвращает 0 при успехе и меньше 0 в случае ошибки.

struct resource *request_mem_region(unsigned long start, unsigned long len, char *name);

void release_mem_region(unsigned long start, unsigned long len);

int check_mem_region(unsigned long start, unsigned long len);

Функции, которые занимаются распределением ресурсов для областей памяти.

 

#include <asm/io.h>

void *ioremap(unsigned long phys_addr, unsigned long size);

void *ioremap_nocache(unsigned long phys_addr, unsigned long size);

void iounmap(void *virt_addr);

ioremap переназначает физический диапазон адресов в виртуальное адресное пространство процессора, делая его доступным для ядра. iounmap освобождает назначения, когда они больше не требуются.

 

#include <asm/io.h>

unsigned int ioread8(void *addr);

unsigned int ioread16(void *addr);

unsigned int ioread32(void *addr);

void iowrite8(u8 value, void *addr);

void iowrite16(u16 value, void *addr);

void iowrite32(u32 value, void *addr);

Функции доступа, которые используются для работы с памятью ввода/вывода.

void ioread8_rep(void *addr, void *buf, unsigned long count);

void ioread16_rep(void *addr, void *buf, unsigned long count);

void ioread32_rep(void *addr, void *buf, unsigned long count);

void iowrite8_rep(void *addr, const void *buf, unsigned long count);

void iowrite16_rep(void *addr, const void *buf, unsigned long count);

void iowrite32_rep(void *addr, const void *buf, unsigned long count);

"Повторяющие" версии примитивов ввода/вывода для памяти.

unsigned readb(address);

unsigned readw(address);

unsigned readl(address);

void writeb(unsigned value, address);

void writew(unsigned value, address);

void writel(unsigned value, address);

Старые, небезопасные для типа данных функции для доступа к памяти ввода/вывода.

memset_io(address, value, count);

memcpy_fromio(dest, source, nbytes);

memcpy_toio(dest, source, nbytes);

Функции, работающие с блоками памяти ввода/вывода.

void *ioport_map(unsigned long port, unsigned int count);

void ioport_unmap(void *addr);

Автор драйвера, который хочет рассматривать порты ввода/вывода, как будто они память ввода/вывода, может передать эти порты в ioport_map. Отображение, когда больше не требуется, должно завершаться (с помощью ioport_unmap).

 

Предыдущая  Содержание  Следующая