Changes in / [fb04cd90:4585bda] in mainline


Ignore:
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/proc/program.h

    rfb04cd90 r4585bda  
    5050        struct task *task;           /**< Program task */
    5151        struct thread *main_thread;  /**< Program main thread */
     52        unsigned int loader_status;  /**< Binary loader error status */
    5253} program_t;
    5354
  • kernel/generic/src/lib/rd.c

    rfb04cd90 r4585bda  
    3838 */
    3939
     40#include <print.h>
    4041#include <lib/rd.h>
    4142#include <mm/frame.h>
     
    6667        sysinfo_set_item_val("rd.size", NULL, size);
    6768        sysinfo_set_item_val("rd.address.physical", NULL, (sysarg_t) base);
     69       
     70        printf("RAM disk at %p (size %zu bytes)\n", (void *) base, size);
    6871}
    6972
  • kernel/generic/src/main/kinit.c

    rfb04cd90 r4585bda  
    201201                str_cpy(namebuf + INIT_PREFIX_LEN,
    202202                    TASK_NAME_BUFLEN - INIT_PREFIX_LEN, name);
    203 
     203               
    204204                /*
    205205                 * Create virtual memory mappings for init task images.
     
    236236                        init_rd((void *) init.tasks[i].paddr, init.tasks[i].size);
    237237                } else
    238                         printf("init[%zu]: Init binary load failed (error %d)\n", i, rc);
     238                        printf("init[%zu]: Init binary load failed "
     239                            "(error %d, loader status %u)\n", i, rc,
     240                            programs[i].loader_status);
    239241        }
    240242       
  • kernel/generic/src/proc/program.c

    rfb04cd90 r4585bda  
    8080        kernel_uarg->uspace_uarg = NULL;
    8181       
     82        prg->loader_status = EE_OK;
    8283        prg->task = task_create(as, name);
    8384        if (!prg->task)
     
    111112 * executable image. The task is returned in *task.
    112113 *
    113  * @param image_addr Address of an executable program image.
    114  * @param name       Name to set for the program's task.
    115  * @param prg        Buffer for storing program info. If image_addr
    116  *                   points to a loader image, p->task will be set to
    117  *                   NULL and EOK will be returned.
     114 * @param[in]  image_addr Address of an executable program image.
     115 * @param[in]  name       Name to set for the program's task.
     116 * @param[out] prg        Buffer for storing program info.
     117 *                        If image_addr points to a loader image,
     118 *                        prg->task will be set to NULL and EOK
     119 *                        will be returned.
    118120 *
    119121 * @return EOK on success or negative error code.
     
    126128                return ENOMEM;
    127129       
    128         unsigned int rc = elf_load((elf_header_t *) image_addr, as, 0);
    129         if (rc != EE_OK) {
     130        prg->loader_status = elf_load((elf_header_t *) image_addr, as, 0);
     131        if (prg->loader_status != EE_OK) {
    130132                as_destroy(as);
    131133                prg->task = NULL;
    132134                prg->main_thread = NULL;
    133135               
    134                 if (rc != EE_LOADER)
     136                if (prg->loader_status != EE_LOADER)
    135137                        return ENOTSUP;
    136138               
     
    140142               
    141143                program_loader = image_addr;
    142                 LOG("Registered program loader at %p",
    143                     (void *) image_addr);
     144                printf("Program loader at %p\n", (void *) image_addr);
    144145               
    145146                return EOK;
     
    171172        }
    172173       
    173         unsigned int rc = elf_load((elf_header_t *) program_loader, as,
     174        prg->loader_status = elf_load((elf_header_t *) program_loader, as,
    174175            ELD_F_LOADER);
    175         if (rc != EE_OK) {
     176        if (prg->loader_status != EE_OK) {
    176177                as_destroy(as);
    177                 printf("Cannot spawn loader (%s)\n", elf_error(rc));
     178                printf("Cannot spawn loader (%s)\n",
     179                    elf_error(prg->loader_status));
    178180                return ENOENT;
    179181        }
  • tools/toolchain.sh

    rfb04cd90 r4585bda  
    149149        echo " sparc64    SPARC V9"
    150150        echo " all        build all targets"
    151         echo " parallel   same as 'all', but in parallel"
     151        echo " parallel   same as 'all', but all in parallel"
     152        echo " 2-way      same as 'all', but 2-way parallel"
    152153        echo
    153154        echo "The toolchain will be installed to the directory specified by"
     
    431432                wait
    432433                ;;
     434        "2-way")
     435                prepare
     436                build_target "amd64" "amd64-linux-gnu" &
     437                build_target "arm32" "arm-linux-gnueabi" &
     438                wait
     439               
     440                build_target "ia32" "i686-pc-linux-gnu" &
     441                build_target "ia64" "ia64-pc-linux-gnu" &
     442                wait
     443               
     444                build_target "mips32" "mipsel-linux-gnu" &
     445                build_target "mips32eb" "mips-linux-gnu" &
     446                wait
     447               
     448                build_target "mips64" "mips64el-linux-gnu" &
     449                build_target "ppc32" "ppc-linux-gnu" &
     450                wait
     451               
     452                build_target "ppc64" "ppc64-linux-gnu" &
     453                build_target "sparc64" "sparc64-linux-gnu" &
     454                wait
     455                ;;
    433456        *)
    434457                show_usage
Note: See TracChangeset for help on using the changeset viewer.