#include "jove.h" #include "lib/printf.h" #include "lib/virtterm.h" #include "syscall.h" static int s_syscall_vtt_write( jove_owned_obj_t *vtt, size_t payload_bytes, void *payload_data) { if(payload_bytes < sizeof(struct syscall_vtt_write)) { kprintf("syscall_vtt_write: message is too small for this syscall!\n"); return EOOB; } struct syscall_vtt_write *payload = payload_data; if(payload_bytes < sizeof(struct syscall_vtt_write) + payload->len) { kprintf("syscall_vtt_write: message is to small for payload! (%i vs %i)\n", payload->len, payload_bytes); return EOOB; } return vt_write(vtt, payload->data, payload->len); } int _syscall_handle_vtt( jove_owned_obj_t *pcb_obj, jove_owned_obj_t *objdir, jove_owned_obj_t *message_obj, jove_owned_obj_t *target_obj, struct syscall_header *header, size_t bytes_left, void *payload_data) { switch(header->callid) { case 0: return s_syscall_vtt_write(target_obj, bytes_left, payload_data); default: kprintf("syscall_vtt: vtt object does not support syscall %i\n", header->callid); return EOOB; } }