Changeset 5be1923 in mainline for generic/src/proc
- Timestamp:
- 2006-03-14T12:11:28Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d3e7ff4
- Parents:
- 4bb4836d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
generic/src/proc/task.c
r4bb4836d r5be1923 27 27 */ 28 28 29 #include <main/uinit.h> 29 30 #include <proc/thread.h> 30 31 #include <proc/task.h> … … 39 40 #include <ipc/ns.h> 40 41 #include <memstr.h> 42 43 #include <elf.h> 41 44 42 45 SPINLOCK_INITIALIZE(tasks_lock); … … 60 63 * @param as Task's address space. 61 64 * 62 * @return New task's structure on success, NULL on failure.65 * @return New task's structure 63 66 * 64 67 */ … … 89 92 } 90 93 94 /** Create new task with 1 thread and run it 95 * 96 * @return Task of the running program or NULL on error 97 */ 98 task_t * task_run_program(void *program_addr) 99 { 100 as_t *as; 101 as_area_t *a; 102 int rc; 103 thread_t *t; 104 task_t *task; 105 106 as = as_create(0); 107 108 rc = elf_load((elf_header_t *) config.init_addr, as); 109 if (rc != EE_OK) { 110 as_free(as); 111 return NULL; 112 } 113 114 task = task_create(as); 115 t = thread_create(uinit, (void *)((elf_header_t *) config.init_addr)->e_entry, 116 task, THREAD_USER_STACK); 117 118 /* 119 * Create the data as_area. 120 */ 121 a = as_area_create(as, AS_AREA_STACK, 1, USTACK_ADDRESS); 122 123 thread_ready(t); 124 125 return task; 126 }
Note:
See TracChangeset
for help on using the changeset viewer.