Changeset 62b6d17 in mainline for kernel/generic/src/proc/thread.c
- Timestamp:
- 2006-12-14T16:47:36Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- aeaebcc
- Parents:
- 55cc9bc
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/proc/thread.c
r55cc9bc r62b6d17 124 124 125 125 spinlock_lock(&THREAD->lock); 126 thread_update_accounting(); 127 uint64_t cycles = THREAD->cycles; 128 THREAD->cycles = 0; 129 spinlock_unlock(&THREAD->lock); 130 131 spinlock_lock(&TASK->lock); 132 TASK->cycles += cycles; 133 spinlock_unlock(&TASK->lock); 126 if (!THREAD->uncounted) { 127 thread_update_accounting(); 128 uint64_t cycles = THREAD->cycles; 129 THREAD->cycles = 0; 130 spinlock_unlock(&THREAD->lock); 131 132 spinlock_lock(&TASK->lock); 133 TASK->cycles += cycles; 134 spinlock_unlock(&TASK->lock); 135 } else 136 spinlock_unlock(&THREAD->lock); 134 137 135 138 interrupts_restore(ipl); … … 303 306 * Create a new thread. 304 307 * 305 * @param func Thread's implementing function. 306 * @param arg Thread's implementing function argument. 307 * @param task Task to which the thread belongs. 308 * @param flags Thread flags. 309 * @param name Symbolic name. 308 * @param func Thread's implementing function. 309 * @param arg Thread's implementing function argument. 310 * @param task Task to which the thread belongs. 311 * @param flags Thread flags. 312 * @param name Symbolic name. 313 * @param uncounted Thread's accounting doesn't affect accumulated task accounting. 310 314 * 311 315 * @return New thread's structure on success, NULL on failure. 312 316 * 313 317 */ 314 thread_t *thread_create(void (* func)(void *), void *arg, task_t *task, int flags, char *name )318 thread_t *thread_create(void (* func)(void *), void *arg, task_t *task, int flags, char *name, bool uncounted) 315 319 { 316 320 thread_t *t; … … 345 349 t->ticks = -1; 346 350 t->cycles = 0; 351 t->uncounted = uncounted; 347 352 t->priority = -1; /* start in rq[0] */ 348 353 t->cpu = NULL; … … 650 655 } 651 656 652 if ((t = thread_create(uinit, kernel_uarg, TASK, THREAD_FLAG_USPACE, namebuf ))) {657 if ((t = thread_create(uinit, kernel_uarg, TASK, THREAD_FLAG_USPACE, namebuf, false))) { 653 658 tid = t->tid; 654 659 thread_ready(t);
Note:
See TracChangeset
for help on using the changeset viewer.