Changes in kernel/generic/src/proc/task.c [e535eeb:d3808d3] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/proc/task.c
re535eeb rd3808d3 1 1 /* 2 * Copyright (c) 20 01-2004Jakub Jermar2 * Copyright (c) 2010 Jakub Jermar 3 3 * All rights reserved. 4 4 * … … 210 210 btree_create(&ta->futexes); 211 211 212 /* 213 * Get a reference to the address space. 214 */ 215 as_hold(ta->as); 216 212 217 ipl = interrupts_disable(); 213 atomic_inc(&as->refcount);214 218 spinlock_lock(&tasks_lock); 215 219 ta->taskid = ++task_counter; … … 250 254 * Drop our reference to the address space. 251 255 */ 252 if (atomic_predec(&t->as->refcount) == 0) 253 as_destroy(t->as); 256 as_release(t->as); 254 257 255 258 slab_free(task_slab, t); 256 TASK = NULL; 259 } 260 261 /** Hold a reference to a task. 262 * 263 * Holding a reference to a task prevents destruction of that task. 264 * 265 * @param t Task to be held. 266 */ 267 void task_hold(task_t *t) 268 { 269 atomic_inc(&t->refcount); 270 } 271 272 /** Release a reference to a task. 273 * 274 * The last one to release a reference to a task destroys the task. 275 * 276 * @param t Task to be released. 277 */ 278 void task_release(task_t *t) 279 { 280 if ((atomic_predec(&t->refcount)) == 0) 281 task_destroy(t); 257 282 } 258 283
Note:
See TracChangeset
for help on using the changeset viewer.