Changes in kernel/generic/src/proc/program.c [f8fb03b:f8b69a1e] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/proc/program.c
rf8fb03b rf8b69a1e 49 49 #include <lib/elf_load.h> 50 50 #include <str.h> 51 #include <str_error.h> 51 52 #include <log.h> 52 53 #include <syscall/copy.h> … … 98 99 if (!area) { 99 100 free(kernel_uarg); 100 task_ destroy(prg->task);101 task_release(prg->task); 101 102 prg->task = NULL; 102 103 return ENOMEM; … … 118 119 free(kernel_uarg); 119 120 as_area_destroy(as, virt); 120 task_ destroy(prg->task);121 task_release(prg->task); 121 122 prg->task = NULL; 122 123 return ELIMIT; … … 142 143 * 143 144 */ 144 errno_t program_create_from_image(void *image_addr, char *name, program_t *prg)145 errno_t program_create_from_image(void *image_addr, size_t image_size, char *name, program_t *prg) 145 146 { 146 147 as_t *as = as_create(0); … … 156 157 } 157 158 158 returnprogram_create(as, ((elf_header_t *) image_addr)->e_entry,159 errno_t rc = program_create(as, ((elf_header_t *) image_addr)->e_entry, 159 160 name, prg); 161 162 if (rc == EOK) { 163 prg->task->debug_sections = calloc(1, sizeof(debug_sections_t)); 164 if (prg->task->debug_sections != NULL) 165 *prg->task->debug_sections = get_debug_sections(image_addr, image_size); 166 } 167 168 return rc; 160 169 } 161 170 … … 203 212 void program_ready(program_t *prg) 204 213 { 205 thread_ready(prg->main_thread); 214 thread_start(prg->main_thread); 215 thread_detach(prg->main_thread); 216 prg->main_thread = NULL; 206 217 } 207 218 … … 241 252 program_ready(&prg); 242 253 254 task_release(prg.task); 255 243 256 return EOK; 244 257 }
Note:
See TracChangeset
for help on using the changeset viewer.