Find the answer to your Linux question:
Results 1 to 3 of 3
I got a little bit confusion that wait_event_interruptible is not a funciton, but a Macro. wait_event_interruptible is often used like the following: if (wait_event_interruptible(*(sk->sk_sleep), (sk->sk_state != TCP_SYN_SENT))) if (wait_event_interruptible(self->query_wait, (self->iriap ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    Sep 2009
    Posts
    8

    Unhappy Regarding : wait_event_interruptible. maybe it's a easy question.


    I got a little bit confusion that wait_event_interruptible is not a funciton, but a Macro.

    wait_event_interruptible is often used like the following:

    if (wait_event_interruptible(*(sk->sk_sleep),
    (sk->sk_state != TCP_SYN_SENT)))

    if (wait_event_interruptible(self->query_wait,
    (self->iriap == NULL)))


    How come it can work well?!

    It will be like this when compiling.

    if ( wait_event_interruptible is expanded as the following code )


    In Linux source code, we can see:
    #define wait_event_interruptible(wq, condition) \
    ({ \
    int __ret = 0; \
    if (!(condition)) \
    __wait_event_interruptible(wq, condition, __ret); \
    __ret; \
    })

    #define __wait_event_interruptible_timeout(wq, condition, ret) \
    do { \
    DEFINE_WAIT(__wait); \
    \
    for (; { \
    prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \
    if (condition) \
    break; \
    if (!signal_pending(current)) { \
    ret = schedule_timeout(ret); \
    if (!ret) \
    break; \
    continue; \
    } \
    ret = -ERESTARTSYS; \
    break; \
    } \
    finish_wait(&wq, &__wait); \
    } while (0)

  2. #2
    Just Joined!
    Join Date
    Sep 2009
    Posts
    8

    No one help me. so sad :-(

    No one help me. so sad

  3. #3
    Just Joined!
    Join Date
    Sep 2009
    Posts
    8

    On one konws....

    On one konws....

  4. $spacer_open
    $spacer_close

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •