Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 7.6. Workqueues

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

struct workqueue_struct *create_workqueue(const char *name);

struct workqueue_struct *create_singlethread_workqueue(const char *name);

armagetron 31.10.10 в 10:02

0

DECLARE_WORK(name, void (*function)(void *), void *data);

armagetron 31.10.10 в 10:03

0

INIT_WORK(struct work_struct *work, void (*function)(void *), void *data);

PREPARE_WORK(struct work_struct *work, void (*function)(void *), void *data);

armagetron 31.10.10 в 10:03

0

int queue_work(struct workqueue_struct *queue, struct work_struct *work);

int queue_delayed_work(struct workqueue_struct *queue,

struct work_struct *work, unsigned long delay);

armagetron 31.10.10 в 10:03

0

int cancel_delayed_work(struct work_struct *work);

armagetron 31.10.10 в 10:03

0

void flush_workqueue(struct workqueue_struct *queue);

armagetron 31.10.10 в 10:03

0

void destroy_workqueue(struct workqueue_struct *queue);

armagetron 31.10.10 в 10:03

0

/* this line is in jiq_init( ) */

INIT_WORK(&jiq_work, jiq_print_wq, &jiq_data);

armagetron 31.10.10 в 10:03

0

int schedule_work(struct work_struct *work);

armagetron 31.10.10 в 10:03

0

prepare_to_wait(&jiq_wait, &wait, TASK_INTERRUPTIBLE);

schedule_work(&jiq_work);

schedule( );

finish_wait(&jiq_wait, &wait);

armagetron 31.10.10 в 10:03

0

static void jiq_print_wq(void *ptr)

{

struct clientdata *data = (struct clientdata *) ptr;

if (! jiq_print (ptr))

return;

if (data->delay)

schedule_delayed_work(&jiq_work, data->delay);

else

schedule_work(&jiq_work);

}

armagetron 31.10.10 в 10:03

0

int schedule_delayed_work(struct work_struct *work, unsigned long delay);

Если вы посмотрите на вывод этих двух устройств, то он выглядит примерно так:

armagetron 31.10.10 в 10:04

0

% cat /proc/jiqwq

time delta preempt pid cpu command

1113043 0 0 7 1 events/1

1113043 0 0 7 1 events/1

1113043 0 0 7 1 events/1

1113043 0 0 7 1 events/1

1113043 0 0 7 1 events/1

% cat /proc/jiqwqdelay

time delta preempt pid cpu command

1122066 1 0 6 0 events/0

PAGE 208

1122067 1 0 6 0 events/0

1122068 1 0 6 0 events/0

1122069 1 0 6 0 events/0

1122070 1 0 6 0 events/0

armagetron 31.10.10 в 10:04

0
Минутку...