Subversion Repositories HelenOS

Rev

Rev 3690 | Rev 3773 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3690 Rev 3772
Line 223... Line 223...
223
 */
223
 */
224
static int loader_load(ipc_callid_t rid, ipc_call_t *request)
224
static int loader_load(ipc_callid_t rid, ipc_call_t *request)
225
{
225
{
226
    int rc;
226
    int rc;
227
 
227
 
-
 
228
    printf("Load program '%s'\n", pathname);
-
 
229
 
228
    rc = elf_load_file(pathname, 0, 0, &prog_info);
230
    rc = elf_load_file(pathname, 0, 0, &prog_info);
229
    if (rc < 0) {
231
    if (rc < 0) {
230
        printf("Failed to load executable '%s'.\n", pathname);
232
        printf("Failed to load executable '%s'.\n", pathname);
231
        ipc_answer_0(rid, EINVAL);
233
        ipc_answer_0(rid, EINVAL);
232
        return 1;
234
        return 1;
233
    }
235
    }
234
 
236
 
-
 
237
    printf("Create PCB\n");
-
 
238
 
235
    elf_create_pcb(&prog_info, &pcb);
239
    elf_create_pcb(&prog_info, &pcb);
236
 
240
 
-
 
241
    printf("Fill args\n");
-
 
242
 
237
    pcb.argc = argc;
243
    pcb.argc = argc;
238
    pcb.argv = argv;
244
    pcb.argv = argv;
239
 
245
 
-
 
246
    printf("Check interp\n");
-
 
247
 
240
    if (prog_info.interp == NULL) {
248
    if (prog_info.interp == NULL) {
241
        /* Statically linked program */
249
        /* Statically linked program */
242
        is_dyn_linked = false;
250
        is_dyn_linked = false;
243
        ipc_answer_0(rid, EOK);
251
        ipc_answer_0(rid, EOK);
244
        return 0;
252
        return 0;
Line 280... Line 288...
280
 
288
 
281
        ipc_answer_0(rid, EOK);
289
        ipc_answer_0(rid, EOK);
282
        program_run(interp_info.entry, &pcb);
290
        program_run(interp_info.entry, &pcb);
283
 
291
 
284
    } else {
292
    } else {
-
 
293
        printf("Run static program\n");
285
        /* Statically linked program */
294
        /* Statically linked program */
286
        close_console();
295
        close_console();
287
        ipc_answer_0(rid, EOK);
296
        ipc_answer_0(rid, EOK);
288
        program_run(prog_info.entry, &pcb);
297
        program_run(prog_info.entry, &pcb);
289
    }
298
    }