Rev 2787 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2787 | Rev 3606 | ||
|---|---|---|---|
| Line 113... | Line 113... | ||
| 113 | { |
113 | { |
| 114 | futex_t *futex; |
114 | futex_t *futex; |
| 115 | uintptr_t paddr; |
115 | uintptr_t paddr; |
| 116 | pte_t *t; |
116 | pte_t *t; |
| 117 | ipl_t ipl; |
117 | ipl_t ipl; |
| - | 118 | int rc; |
|
| 118 | 119 | ||
| 119 | ipl = interrupts_disable(); |
120 | ipl = interrupts_disable(); |
| 120 | 121 | ||
| 121 | /* |
122 | /* |
| 122 | * Find physical address of futex counter. |
123 | * Find physical address of futex counter. |
| Line 132... | Line 133... | ||
| 132 | page_table_unlock(AS, true); |
133 | page_table_unlock(AS, true); |
| 133 | 134 | ||
| 134 | interrupts_restore(ipl); |
135 | interrupts_restore(ipl); |
| 135 | 136 | ||
| 136 | futex = futex_find(paddr); |
137 | futex = futex_find(paddr); |
| 137 | 138 | ||
| - | 139 | #ifdef CONFIG_UDEBUG |
|
| - | 140 | udebug_stoppable_begin(); |
|
| - | 141 | #endif |
|
| 138 | return (unative_t) waitq_sleep_timeout(&futex->wq, usec, flags | |
142 | rc = waitq_sleep_timeout(&futex->wq, usec, flags | |
| 139 | SYNCH_FLAGS_INTERRUPTIBLE); |
143 | SYNCH_FLAGS_INTERRUPTIBLE); |
| - | 144 | ||
| - | 145 | #ifdef CONFIG_UDEBUG |
|
| - | 146 | udebug_stoppable_end(); |
|
| - | 147 | #endif |
|
| - | 148 | return (unative_t) rc; |
|
| 140 | } |
149 | } |
| 141 | 150 | ||
| 142 | /** Wakeup one thread waiting in futex wait queue. |
151 | /** Wakeup one thread waiting in futex wait queue. |
| 143 | * |
152 | * |
| 144 | * @param uaddr Userspace address of the futex counter. |
153 | * @param uaddr Userspace address of the futex counter. |