File:  [Qemu by Fabrice Bellard] / qemu / qemu-option.h
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 18:24:31 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu1000, qemu0151, qemu0150, qemu0141, qemu0140, qemu0130, HEAD
qemu 0.13.0

    1: /*
    2:  * Commandline option parsing functions
    3:  *
    4:  * Copyright (c) 2003-2008 Fabrice Bellard
    5:  * Copyright (c) 2009 Kevin Wolf <kwolf@redhat.com>
    6:  *
    7:  * Permission is hereby granted, free of charge, to any person obtaining a copy
    8:  * of this software and associated documentation files (the "Software"), to deal
    9:  * in the Software without restriction, including without limitation the rights
   10:  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   11:  * copies of the Software, and to permit persons to whom the Software is
   12:  * furnished to do so, subject to the following conditions:
   13:  *
   14:  * The above copyright notice and this permission notice shall be included in
   15:  * all copies or substantial portions of the Software.
   16:  *
   17:  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   18:  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   19:  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
   20:  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   21:  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   22:  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   23:  * THE SOFTWARE.
   24:  */
   25: 
   26: #ifndef QEMU_OPTIONS_H
   27: #define QEMU_OPTIONS_H
   28: 
   29: #include <stdint.h>
   30: #include "qemu-queue.h"
   31: #include "qdict.h"
   32: 
   33: enum QEMUOptionParType {
   34:     OPT_FLAG,
   35:     OPT_NUMBER,
   36:     OPT_SIZE,
   37:     OPT_STRING,
   38: };
   39: 
   40: typedef struct QEMUOptionParameter {
   41:     const char *name;
   42:     enum QEMUOptionParType type;
   43:     union {
   44:         uint64_t n;
   45:         char* s;
   46:     } value;
   47:     const char *help;
   48: } QEMUOptionParameter;
   49: 
   50: 
   51: const char *get_opt_name(char *buf, int buf_size, const char *p, char delim);
   52: const char *get_opt_value(char *buf, int buf_size, const char *p);
   53: int get_next_param_value(char *buf, int buf_size,
   54:                          const char *tag, const char **pstr);
   55: int get_param_value(char *buf, int buf_size,
   56:                     const char *tag, const char *str);
   57: int check_params(char *buf, int buf_size,
   58:                  const char * const *params, const char *str);
   59: 
   60: 
   61: /*
   62:  * The following functions take a parameter list as input. This is a pointer to
   63:  * the first element of a QEMUOptionParameter array which is terminated by an
   64:  * entry with entry->name == NULL.
   65:  */
   66: 
   67: QEMUOptionParameter *get_option_parameter(QEMUOptionParameter *list,
   68:     const char *name);
   69: int set_option_parameter(QEMUOptionParameter *list, const char *name,
   70:     const char *value);
   71: int set_option_parameter_int(QEMUOptionParameter *list, const char *name,
   72:     uint64_t value);
   73: QEMUOptionParameter *append_option_parameters(QEMUOptionParameter *dest,
   74:     QEMUOptionParameter *list);
   75: QEMUOptionParameter *parse_option_parameters(const char *param,
   76:     QEMUOptionParameter *list, QEMUOptionParameter *dest);
   77: void free_option_parameters(QEMUOptionParameter *list);
   78: void print_option_parameters(QEMUOptionParameter *list);
   79: void print_option_help(QEMUOptionParameter *list);
   80: 
   81: /* ------------------------------------------------------------------ */
   82: 
   83: typedef struct QemuOpt QemuOpt;
   84: typedef struct QemuOpts QemuOpts;
   85: typedef struct QemuOptsList QemuOptsList;
   86: 
   87: enum QemuOptType {
   88:     QEMU_OPT_STRING = 0,  /* no parsing (use string as-is)                        */
   89:     QEMU_OPT_BOOL,        /* on/off                                               */
   90:     QEMU_OPT_NUMBER,      /* simple number                                        */
   91:     QEMU_OPT_SIZE,        /* size, accepts (K)ilo, (M)ega, (G)iga, (T)era postfix */
   92: };
   93: 
   94: typedef struct QemuOptDesc {
   95:     const char *name;
   96:     enum QemuOptType type;
   97:     const char *help;
   98: } QemuOptDesc;
   99: 
  100: struct QemuOptsList {
  101:     const char *name;
  102:     const char *implied_opt_name;
  103:     QTAILQ_HEAD(, QemuOpts) head;
  104:     QemuOptDesc desc[];
  105: };
  106: 
  107: const char *qemu_opt_get(QemuOpts *opts, const char *name);
  108: int qemu_opt_get_bool(QemuOpts *opts, const char *name, int defval);
  109: uint64_t qemu_opt_get_number(QemuOpts *opts, const char *name, uint64_t defval);
  110: uint64_t qemu_opt_get_size(QemuOpts *opts, const char *name, uint64_t defval);
  111: int qemu_opt_set(QemuOpts *opts, const char *name, const char *value);
  112: typedef int (*qemu_opt_loopfunc)(const char *name, const char *value, void *opaque);
  113: int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque,
  114:                      int abort_on_failure);
  115: 
  116: QemuOpts *qemu_opts_find(QemuOptsList *list, const char *id);
  117: QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id, int fail_if_exists);
  118: void qemu_opts_reset(QemuOptsList *list);
  119: void qemu_opts_loc_restore(QemuOpts *opts);
  120: int qemu_opts_set(QemuOptsList *list, const char *id,
  121:                   const char *name, const char *value);
  122: const char *qemu_opts_id(QemuOpts *opts);
  123: void qemu_opts_del(QemuOpts *opts);
  124: int qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc);
  125: int qemu_opts_do_parse(QemuOpts *opts, const char *params, const char *firstname);
  126: QemuOpts *qemu_opts_parse(QemuOptsList *list, const char *params, int permit_abbrev);
  127: QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const QDict *qdict);
  128: QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict);
  129: 
  130: typedef int (*qemu_opts_loopfunc)(QemuOpts *opts, void *opaque);
  131: int qemu_opts_print(QemuOpts *opts, void *dummy);
  132: int qemu_opts_foreach(QemuOptsList *list, qemu_opts_loopfunc func, void *opaque,
  133:                       int abort_on_failure);
  134: 
  135: #endif

unix.superglobalmegacorp.com