Rev 3063 | Rev 3186 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3063 | Rev 3137 | ||
---|---|---|---|
Line 43... | Line 43... | ||
43 | #include <mm/slab.h> |
43 | #include <mm/slab.h> |
44 | #include <atomic.h> |
44 | #include <atomic.h> |
45 | #include <synch/spinlock.h> |
45 | #include <synch/spinlock.h> |
46 | #include <synch/waitq.h> |
46 | #include <synch/waitq.h> |
47 | #include <arch.h> |
47 | #include <arch.h> |
- | 48 | #include <arch/barrier.h> |
|
48 | #include <panic.h> |
49 | #include <panic.h> |
49 | #include <adt/avl.h> |
50 | #include <adt/avl.h> |
50 | #include <adt/btree.h> |
51 | #include <adt/btree.h> |
51 | #include <adt/list.h> |
52 | #include <adt/list.h> |
52 | #include <ipc/ipc.h> |
53 | #include <ipc/ipc.h> |
Line 258... | Line 259... | ||
258 | 259 | ||
259 | int rc = copy_from_uspace(kimage, image, size); |
260 | int rc = copy_from_uspace(kimage, image, size); |
260 | if (rc != EOK) |
261 | if (rc != EOK) |
261 | return rc; |
262 | return rc; |
262 | 263 | ||
- | 264 | /* |
|
- | 265 | * Not very efficient and it would be better to call it on code only, |
|
- | 266 | * but this whole function is a temporary hack anyway and one day it |
|
- | 267 | * will go in favor of the userspace dynamic loader. |
|
- | 268 | */ |
|
- | 269 | smc_coherence_block(kimage, size); |
|
- | 270 | ||
- | 271 | uspace_arg_t *kernel_uarg; |
|
263 | uspace_arg_t *kernel_uarg = (uspace_arg_t *) malloc(sizeof(uspace_arg_t), 0); |
272 | kernel_uarg = (uspace_arg_t *) malloc(sizeof(uspace_arg_t), 0); |
264 | if (kernel_uarg == NULL) { |
273 | if (kernel_uarg == NULL) { |
265 | free(kimage); |
274 | free(kimage); |
266 | return ENOMEM; |
275 | return ENOMEM; |
267 | } |
276 | } |
268 | 277 | ||
Line 440... | Line 449... | ||
440 | uint64_t cycles; |
449 | uint64_t cycles; |
441 | char suffix; |
450 | char suffix; |
442 | order(task_get_accounting(t), &cycles, &suffix); |
451 | order(task_get_accounting(t), &cycles, &suffix); |
443 | 452 | ||
444 | #ifdef __32_BITS__ |
453 | #ifdef __32_BITS__ |
445 | printf("%-6" PRIu64 " %-10s %-3" PRIu32 " %10p %10p %9" PRIu64 "%c %7ld %6ld", |
454 | printf("%-6" PRIu64 " %-10s %-3" PRIu32 " %10p %10p %9" PRIu64 |
446 | t->taskid, t->name, t->context, t, t->as, cycles, suffix, |
455 | "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as, cycles, |
447 | atomic_get(&t->refcount), atomic_get(&t->active_calls)); |
456 | suffix, atomic_get(&t->refcount), atomic_get(&t->active_calls)); |
448 | #endif |
457 | #endif |
449 | 458 | ||
450 | #ifdef __64_BITS__ |
459 | #ifdef __64_BITS__ |
451 | printf("%-6" PRIu64 " %-10s %-3" PRIu32 " %18p %18p %9" PRIu64 "%c %7ld %6ld", |
460 | printf("%-6" PRIu64 " %-10s %-3" PRIu32 " %18p %18p %9" PRIu64 |
452 | t->taskid, t->name, t->context, t, t->as, cycles, suffix, |
461 | "%c %7ld %6ld", t->taskid, t->name, t->context, t, t->as, cycles, |
453 | atomic_get(&t->refcount), atomic_get(&t->active_calls)); |
462 | suffix, atomic_get(&t->refcount), atomic_get(&t->active_calls)); |
454 | #endif |
463 | #endif |
455 | 464 | ||
456 | for (j = 0; j < IPC_MAX_PHONES; j++) { |
465 | for (j = 0; j < IPC_MAX_PHONES; j++) { |
457 | if (t->phones[j].callee) |
466 | if (t->phones[j].callee) |
458 | printf(" %d:%p", j, t->phones[j].callee); |
467 | printf(" %d:%p", j, t->phones[j].callee); |