Changeset 96c30c8 in mainline for kernel/generic/include/synch/waitq.h


Ignore:
Timestamp:
2018-06-28T15:45:37Z (6 years ago)
Author:
Jiří Zárevúcky <jiri.zarevucky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
331d024
Parents:
82453b29
git-author:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-06-28 15:36:29)
git-committer:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-06-28 15:45:37)
Message:

Turn ipc_poke() into a regular wakeup on the waitq.

With prior behavior of ignoring the poke when no thread is blocking,
a thread could go to sleep just after a poke meant for it and sleep
indefinitely despite there being work to do.

After the change, worst case scenario, thread enters ipc wait, exits
immediately due to a previous poke, finds no work to do and enters ipc wait
again (possibly repeating the spurious wakeup a few times).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/synch/waitq.h

    r82453b29 r96c30c8  
    8282extern void _waitq_wakeup_unsafe(waitq_t *, wakeup_mode_t);
    8383extern void waitq_interrupt_sleep(struct thread *);
    84 extern void waitq_unsleep(waitq_t *);
    8584extern int waitq_count_get(waitq_t *);
    8685extern void waitq_count_set(waitq_t *, int val);
Note: See TracChangeset for help on using the changeset viewer.