Exemple #1
0
void
refos_setup_dataspace_stdio(char *dspacePath)
{
#if defined(SEL4_DEBUG_KERNEL) && defined(CONFIG_REFOS_SYS_FORCE_DEBUGPUTCHAR)
    return;
#else
    /* Find the path and connect to it. */
    refosIOState.stdioSession = serv_connect_no_pbuffer(dspacePath);
    if (!refosIOState.stdioSession.error == ESUCCESS || !refosIOState.stdioSession.serverSession) {
        seL4_DebugPrintf("Failed to connect to [%s]. Error: %d %s.\n", dspacePath,
                         refosIOState.stdioSession.error, refos_error_str(refosIOState.stdioSession.error));
#if defined(SEL4_DEBUG_KERNEL)
        seL4_DebugHalt();
#endif
        while (1);
    }

    /* Open the dataspace at the Resolved mount point. */
    int error;
    refosIOState.stdioDataspace = data_open(refosIOState.stdioSession.serverSession,
                                            refosIOState.stdioSession.serverMountPoint.dspaceName, 0, 0, 0, &error);
    if (error || !refosIOState.stdioDataspace) {
        seL4_DebugPrintf("Failed to open dataspace [%s].\n",
                         refosIOState.stdioSession.serverMountPoint.dspaceName);
#if defined(SEL4_DEBUG_KERNEL)
        seL4_DebugHalt();
#endif
        while (1);
    }
#endif
}
Exemple #2
0
static void
sel4_abort(void)
{
#if defined(CONFIG_DEBUG_BUILD) && defined(CONFIG_LIB_PLAYGROUND_SYS_DEBUG_HALT)
    printf("seL4 root server abort()ed\n");
    seL4_DebugHalt();
#endif
    while (1); /* We don't return after this */
}
Exemple #3
0
void
sys_abort(void)
{
    seL4_DebugPrintf("RefOS HALT.\n");

#if defined(SEL4_DEBUG_KERNEL) 
    seL4_DebugHalt();
#endif

    while (1); /* We don't return after this */
}
Exemple #4
0
void abort(void) {
    sos_debug_print(ABORT_MSG, 0, strlen(ABORT_MSG), 0);
    seL4_DebugHalt();
    while (1)
        ; /* We don't return after this */
}
Exemple #5
0
int
main_continued(void)
{
    vm_t vm;
    int err;

    /* setup for restart with a setjmp */
    while (setjmp(restart_jmp_buf) != 0) {
        reset_resources();
    }
    restart_tcb = camkes_get_tls()->tcb_cap;
    restart_event_reg_callback(restart_event, NULL);

    err = vmm_init();
    assert(!err);

    print_cpio_info();

    /* Create the VM */
    err = vm_create(VM_NAME, VM_PRIO, _fault_endpoint, VM_BADGE,
                    &_vka, &_simple, &_vspace, &_io_ops, &vm);
    if (err) {
        printf("Failed to create VM\n");
        seL4_DebugHalt();
        return -1;
    }

    /* HACK: See if we have a "RAM device" for 1-1 mappings */
    map_unity_ram(&vm);

    /* Load system images */
    printf("Loading Linux: \'%s\' dtb: \'%s\'\n", VM_LINUX_NAME, VM_LINUX_DTB_NAME);
    err = load_linux(&vm, VM_LINUX_NAME, VM_LINUX_DTB_NAME);
    if (err) {
        printf("Failed to load VM image\n");
        seL4_DebugHalt();
        return -1;
    }

    vm_vchan_setup(&vm);

    /* Power on */
    printf("Starting VM\n\n");
    err = vm_start(&vm);
    if (err) {
        printf("Failed to start VM\n");
        seL4_DebugHalt();
        return -1;
    }

    /* Loop forever, handling events */
    while (1) {
        seL4_MessageInfo_t tag;
        seL4_Word sender_badge;

        tag = seL4_Wait(_fault_endpoint, &sender_badge);
        if (sender_badge == 0) {
            seL4_Word label;
            label = seL4_MessageInfo_get_label(tag);
            if (label == IRQ_MESSAGE_LABEL) {
                irq_server_handle_irq_ipc(_irq_server);
            } else {
                printf("Unknown label (%d) for IPC badge %d\n", label, sender_badge);
            }
        } else if (sender_badge == VUSB_NBADGE) {
            vusb_notify();
        } else {
            assert(sender_badge == VM_BADGE);
            err = vm_event(&vm, tag);
            if (err) {
                /* Shutdown */
                vm_stop(&vm);
                seL4_DebugHalt();
                while (1);
            }
        }
    }

    return 0;
}