Subversion Repositories HelenOS

Rev

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.