Событие в ядре

Тема в разделе "WASM.UNIX", создана пользователем kamatoz, 23 ноя 2006.

  1. kamatoz

    kamatoz New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2004
    Сообщения:
    31
    Адрес:
    Russia
    Проблема - поток в ядре должен ждать события, из другова потока ядра, и по таймауту выходить
    аналог юзермодных WaitForSingleObject() и Event из винды
    я вижу решение следующим образом
    1) делаем занятый семафор
    2) запускаем таймер на необходимое время по истечению которого освобождаем семафор
    3) этот же семафор освобождаем во втором потоке если необходимо

    мож кто знает как это проще сделать?
     
  2. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Да. Использовать KEVENT и KeWaitForSingleObject() (если ждать надо на PASSIVE_LEVEL)
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    [deleted]
     
  4. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    kamatoz
    Sorry, думал ты про винду спрашиваешь
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    gilg
    хе, я название раздела тоже проглядел =)
     
  6. int_0dh

    int_0dh New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    21
    Адрес:
    Russia
    Если речь идет о ядре Linux 2.6.x, то тебе возможно подошли бы completion`s (см include/linux/completion.h)

    один поток ждет события по wait_for_completion_timeout()
    другой поток(потоки) делают(или не делают) complete()