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/ioctl.h>

Объявляет все макросы, которые используются для определения команд ioctl. В настоящее время он подключается с помощью <linux/fs.h>.

_IOC_NRBITS

_IOC_TYPEBITS

_IOC_SIZEBITS

_IOC_DIRBITS

Число бит, доступное для различных битовых полей команд ioctl. Есть также ещё четыре макроса, которые определяют MASKи и четыре, определяющие SHIFTы, но они в основном для внутреннего пользования. _IOC_SIZEBITS является важным значением для проверки, так как оно меняется в зависимости от архитектуры.

_IOC_NONE

_IOC_READ

_IOC_WRITE

Возможные значения битового поля "направление". "Чтение" и "Запись" являются разными битами и могут быть сложены командой OR (ИЛИ) для указания чтения/записи. Значения базируются на 0.

_IOC(dir,type,nr,size)

_IO(type,nr)

_IOR(type,nr,size)

_IOW(type,nr,size)

_IOWR(type,nr,size)

Макросы, используемые для создания команд ioctl.

_IOC_DIR(nr)

_IOC_TYPE(nr)

_IOC_NR(nr)

_IOC_SIZE(nr)

Макросы, которые используются для декодирования команд. В частности, _IOC_TYPE(nr) является комбинацией по ИЛИ для _IOC_READ и _IOC_WRITE.

 

#include <asm/uaccess.h>

int access_ok(int type, const void *addr, unsigned long size);

Проверяет, что указатель в пользовательском пространстве является верным. access_ok возвращает ненулевое значение, если доступ будет разрешён.

VERIFY_READ

VERIFY_WRITE

Возможные значения аргумента type в access_ok. VERIFY_WRITE является надстройкой VERIFY_READ.

 

#include <asm/uaccess.h>

int put_user(datum,ptr);

int get_user(local,ptr);

int __put_user(datum,ptr);

int __get_user(local,ptr);

Макросы, которые используются для хранения и получения данных в или из пространства пользователя. Передаваемое количество байт зависит от sizeof(*ptr). Обычные версии сначала вызывают access_ok, в то время как специальные версии (__put_user и __get_user) предполагают, что access_ok уже вызывалась

 

#include <linux/capability.h>

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

int capable(int capability);

Возвращает ненулевое значение, если этот процесс имеет данное разрешение.

 

#include <linux/wait.h>

typedef struct { /* ... */ } wait_queue_head_t;

void init_waitqueue_head(wait_queue_head_t *queue);

DECLARE_WAIT_QUEUE_HEAD(queue);

Определяет тип для очереди ожидания Linux. wait_queue_head_t должен быть явно проинициализирован либо init_waitqueue_head во время выполнения, либо DECLARE_WAIT_QUEUE_HEAD во время компиляции.

void wait_event(wait_queue_head_t q, int condition);

int wait_event_interruptible(wait_queue_head_t q, int condition);

int wait_event_timeout(wait_queue_head_t q, int condition, int time);

int wait_event_interruptible_timeout(wait_queue_head_t q, int condition, int time);

Помещает процесс в сон в данной очереди, пока данное condition (условие) оценивается как истинное значение.

void wake_up(struct wait_queue *q);

void wake_up_interruptible(struct wait_queue *q);

void wake_up_nr(struct wait_queue *q, int nr);

void wake_up_interruptible_nr(struct wait_queue *q, int nr);

void wake_up_all(struct wait_queue *q);

void wake_up_interruptible_all(struct wait_queue *q);

void wake_up_interruptible_sync(struct wait_queue *q);

Пробуждает процессы, которые являются спящими в очереди q. Форма _interruptible пробуждает только прерываемые процессы. Как правило, пробуждается только один ожидающий эксклюзивно, но это поведение можно изменить с помощью форм _nr или _all. Версия _sync не переключает процессор перед возвратом.

 

#include <linux/sched.h>

set_current_state(int state);

Устанавливает состояние выполнения для текущего процесса. TASK_RUNNING означает, что он готов к запуску, а состояниями сна являются TASK_INTERRUPTIBLE и TASK_UNINTERRUPTIBLE.

void schedule(void);

Выбирает работающий процесс из очереди выполнения. Выбранный процесс может быть current (текущим) или любым другим.

typedef struct { /* ... */ } wait_queue_t;

init_waitqueue_entry(wait_queue_t *entry, struct task_struct *task);

Тип wait_queue_t используется для помещения процесса в очередь ожидания.

void prepare_to_wait(wait_queue_head_t *queue, wait_queue_t *wait, int state);

void prepare_to_wait_exclusive(wait_queue_head_t *queue, wait_queue_t *wait, int state);

void finish_wait(wait_queue_head_t *queue, wait_queue_t *wait);

Вспомогательные функции, которые могут быть использованы в коде для ручного управления сном.

void sleep_on(wiat_queue_head_t *queue);

void interruptible_sleep_on(wiat_queue_head_t *queue);

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

 

#include <linux/poll.h>

void poll_wait(struct file *filp, wait_queue_head_t *q, poll_table *p)

Помещает текущий процесс в очередь ожидания сразу, без планировщика. Предназначена для использования методом poll драйверами устройств.

int fasync_helper(struct inode *inode, struct file *filp, int mode, struct fasync_struct **fa);

"Помощник" для реализации метода устройства fasync. Аргумент mode является тем же значением, которое передаётся в метод, а fa указывает на зависимую от устройства fasync_struct *.

void kill_fasync(struct fasync_struct *fa, int sig, int band);

Если драйвер поддерживает асинхронное уведомление, эта функция может быть использована для отправки сигнала процессам, зарегистрированным в fa.

int nonseekable_open(struct inode *inode, struct file *filp);

loff_t no_llseek(struct file *file, loff_t offset, int whence);

nonseekable_open должна быть вызвана в методе open любого устройства, которое не поддерживает произвольный доступ. Такие устройства должны также использовать no_llseek как свой метод llseek.

 

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