|
|
1.1 ! root 1: /* ! 2: * Virtio 9p ! 3: * ! 4: * Copyright IBM, Corp. 2010 ! 5: * ! 6: * Authors: ! 7: * Gautham R Shenoy <[email protected]> ! 8: * ! 9: * This work is licensed under the terms of the GNU GPL, version 2. See ! 10: * the COPYING file in the top-level directory. ! 11: * ! 12: */ ! 13: #include <stdio.h> ! 14: #include <string.h> ! 15: #include "qemu-fsdev.h" ! 16: #include "qemu-queue.h" ! 17: #include "osdep.h" ! 18: #include "qemu-common.h" ! 19: ! 20: static QTAILQ_HEAD(FsTypeEntry_head, FsTypeListEntry) fstype_entries = ! 21: QTAILQ_HEAD_INITIALIZER(fstype_entries); ! 22: ! 23: static FsTypeTable FsTypes[] = { ! 24: { .name = "local", .ops = &local_ops}, ! 25: }; ! 26: ! 27: int qemu_fsdev_add(QemuOpts *opts) ! 28: { ! 29: struct FsTypeListEntry *fsle; ! 30: int i; ! 31: ! 32: if (qemu_opts_id(opts) == NULL) { ! 33: fprintf(stderr, "fsdev: No id specified\n"); ! 34: return -1; ! 35: } ! 36: ! 37: for (i = 0; i < ARRAY_SIZE(FsTypes); i++) { ! 38: if (strcmp(FsTypes[i].name, qemu_opt_get(opts, "fstype")) == 0) { ! 39: break; ! 40: } ! 41: } ! 42: ! 43: if (i == ARRAY_SIZE(FsTypes)) { ! 44: fprintf(stderr, "fsdev: fstype %s not found\n", ! 45: qemu_opt_get(opts, "fstype")); ! 46: return -1; ! 47: } ! 48: ! 49: if (qemu_opt_get(opts, "security_model") == NULL) { ! 50: fprintf(stderr, "fsdev: No security_model specified.\n"); ! 51: return -1; ! 52: } ! 53: ! 54: fsle = qemu_malloc(sizeof(*fsle)); ! 55: ! 56: fsle->fse.fsdev_id = qemu_strdup(qemu_opts_id(opts)); ! 57: fsle->fse.path = qemu_strdup(qemu_opt_get(opts, "path")); ! 58: fsle->fse.security_model = qemu_strdup(qemu_opt_get(opts, ! 59: "security_model")); ! 60: fsle->fse.ops = FsTypes[i].ops; ! 61: ! 62: QTAILQ_INSERT_TAIL(&fstype_entries, fsle, next); ! 63: return 0; ! 64: ! 65: } ! 66: ! 67: FsTypeEntry *get_fsdev_fsentry(char *id) ! 68: { ! 69: struct FsTypeListEntry *fsle; ! 70: ! 71: QTAILQ_FOREACH(fsle, &fstype_entries, next) { ! 72: if (strcmp(fsle->fse.fsdev_id, id) == 0) { ! 73: return &fsle->fse; ! 74: } ! 75: } ! 76: return NULL; ! 77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.