Changeset 6f4495f5 in mainline for kernel/generic/src/synch/futex.c
- Timestamp:
- 2007-01-27T17:32:13Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1ba41c5
- Parents:
- 51baa8a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/synch/futex.c
r51baa8a r6f4495f5 103 103 * 104 104 * @param uaddr Userspace address of the futex counter. 105 * @param usec If non-zero, number of microseconds this thread is willing to sleep. 105 * @param usec If non-zero, number of microseconds this thread is willing to 106 * sleep. 106 107 * @param flags Select mode of operation. 107 108 * 108 * @return One of ESYNCH_TIMEOUT, ESYNCH_OK_ATOMIC and ESYNCH_OK_BLOCKED. See synch.h.109 * 109 * @return One of ESYNCH_TIMEOUT, ESYNCH_OK_ATOMIC and ESYNCH_OK_BLOCKED. See 110 * synch.h. If there is no physical mapping for uaddr ENOENT is returned. 110 111 */ 111 112 unative_t sys_futex_sleep_timeout(uintptr_t uaddr, uint32_t usec, int flags) … … 135 136 futex = futex_find(paddr); 136 137 137 return (unative_t) waitq_sleep_timeout(&futex->wq, usec, flags | SYNCH_FLAGS_INTERRUPTIBLE); 138 return (unative_t) waitq_sleep_timeout(&futex->wq, usec, flags | 139 SYNCH_FLAGS_INTERRUPTIBLE); 138 140 } 139 141 … … 243 245 */ 244 246 futex->refcount++; 245 btree_insert(&TASK->futexes, paddr, futex, leaf); 247 btree_insert(&TASK->futexes, paddr, futex, 248 leaf); 246 249 } 247 250 mutex_unlock(&TASK->futexes_lock); … … 272 275 /** Compute hash index into futex hash table. 273 276 * 274 * @param key Address where the key (i.e. physical address of futex counter) is stored. 277 * @param key Address where the key (i.e. physical address of futex counter) is 278 * stored. 275 279 * 276 280 * @return Index into futex hash table. … … 283 287 /** Compare futex hash table item with a key. 284 288 * 285 * @param key Address where the key (i.e. physical address of futex counter) is stored. 289 * @param key Address where the key (i.e. physical address of futex counter) is 290 * stored. 286 291 * 287 292 * @return True if the item matches the key. False otherwise. … … 317 322 mutex_lock(&TASK->futexes_lock); 318 323 319 for (cur = TASK->futexes.leaf_head.next; cur != &TASK->futexes.leaf_head; cur = cur->next) { 324 for (cur = TASK->futexes.leaf_head.next; 325 cur != &TASK->futexes.leaf_head; cur = cur->next) { 320 326 btree_node_t *node; 321 327 int i;
Note:
See TracChangeset
for help on using the changeset viewer.