#include "device.h" #include "libc.h" i32 vm_register_device(VM *vm, const char *path, const char *type, void *data, DeviceOps *ops, u32 size) { Device *dev; if (vm->dc >= DEVICES_SIZE) return -1; dev = &vm->devices[vm->dc]; dev->handle = vm->dc++; strcopy(dev->path, path, DEVICE_PATH_MAX_LENGTH); dev->path[DEVICE_PATH_MAX_LENGTH - 1] = '\0'; strcopy(dev->type, type, DEVICE_TYPE_MAX_LENGTH); dev->type[DEVICE_TYPE_MAX_LENGTH - 1] = '\0'; dev->data = data; dev->ops = ops; dev->size = size; dev->flags = 0; return dev->handle; } /* Find device by path */ Device *find_device_by_path(VM *vm, const char *path) { u32 i; for (i = 0; i < vm->dc; i++) { if (streq(vm->devices[i].path, path)) { return &vm->devices[i]; } } return NULL; }