int process() { int32_t cpt = 10; int pid = sys_fork(); if (pid == -1) { // failed, should not happen } else if (pid == 0) { // Child cpt--; sys_nop(); } else { // Parent cpt++; sys_nop(); } return 0; }
static int handle_syscall(vm_t* vm, seL4_Word length) { seL4_Word syscall, ip; seL4_UserContext regs; seL4_CPtr tcb; int err; syscall = seL4_GetMR(EXCEPT_IPC_SYS_MR_SYSCALL), ip = seL4_GetMR(EXCEPT_IPC_SYS_MR_PC); tcb = vm_get_tcb(vm); err = seL4_TCB_ReadRegisters(tcb, false, 0, sizeof(regs) / sizeof(regs.pc), ®s); assert(!err); regs.pc += 4; DSTRACE("Syscall %d from [%s]\n", syscall, vm->name); switch (syscall) { case 65: sys_pa_to_ipa(vm, ®s); break; case 66: sys_ipa_to_pa(vm, ®s); break; case 67: sys_nop(vm, ®s); break; default: printf("%sBad syscall from [%s]: scno "DFMT" at PC: 0x"XFMT"%s\n", CERROR, vm->name, syscall, ip, CNORMAL); return -1; } err = seL4_TCB_WriteRegisters(tcb, false, 0, sizeof(regs) / sizeof(regs.pc), ®s); assert(!err); return 0; }
void adc_handle_buffer(volatile uint16_t *dst, int len) { sys_nop(); }
void spis_select(spis_t *spis, void *param) { sys_nop(); }