All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Campbell <ian.campbell@citrix.com>
To: Wei Liu <wei.liu2@citrix.com>
Cc: Ian Jackson <ian.jackson@eu.citrix.com>, xen-devel@lists.xen.org
Subject: Re: [PATCH v7 18/21] libxlu: record location when parsing values
Date: Wed, 11 Mar 2015 15:12:49 +0000	[thread overview]
Message-ID: <1426086769.21353.268.camel@citrix.com> (raw)
In-Reply-To: <1425905497-30835-19-git-send-email-wei.liu2@citrix.com>

On Mon, 2015-03-09 at 12:51 +0000, Wei Liu wrote:
> Originally only setting has line number recorded. Since we're moving to
> more sophisticated API, record the location for individual value. It is
> useful for error reporting.
> 
> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> Cc: Ian Campbell <ian.campbell@citrix.com>
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>

I'm leaving this one to Ian.

Do we need to rerun something (bison/flex?) on commit?

> ---
> Changes in v7:
> 1. Use yylloc in empty rule.
> 1. Use YYLTYPE instead of individual line / column values.
> ---
>  tools/libxl/libxlu_cfg.c      | 14 ++++++++++----
>  tools/libxl/libxlu_cfg_i.h    |  5 +++--
>  tools/libxl/libxlu_cfg_y.c    |  6 +++---
>  tools/libxl/libxlu_cfg_y.y    |  6 +++---
>  tools/libxl/libxlu_internal.h |  2 ++
>  5 files changed, 21 insertions(+), 12 deletions(-)
> 
> diff --git a/tools/libxl/libxlu_cfg.c b/tools/libxl/libxlu_cfg.c
> index 611f5ec..858f894 100644
> --- a/tools/libxl/libxlu_cfg.c
> +++ b/tools/libxl/libxlu_cfg.c
> @@ -311,16 +311,19 @@ const char *xlu_cfg_get_listitem(const XLU_ConfigList *list, int entry) {
>  }
>  
> 
> -XLU_ConfigValue *xlu__cfg_string_mk(CfgParseContext *ctx, char *atom)
> +XLU_ConfigValue *xlu__cfg_string_mk(CfgParseContext *ctx, char *atom,
> +                                    YYLTYPE *loc)
>  {
>      XLU_ConfigValue *value = NULL;
>  
>      if (ctx->err) goto x;
>  
> -    value = malloc(sizeof(*value));
> +    value = malloc(sizeof(*value)+sizeof(*loc));
>      if (!value) goto xe;
>      value->type = XLU_STRING;
>      value->u.string = atom;
> +    value->loc = (YYLTYPE *)(value+1);
> +    memcpy(value->loc, loc, sizeof(*loc));
>  
>      return value;
>  
> @@ -333,7 +336,8 @@ XLU_ConfigValue *xlu__cfg_string_mk(CfgParseContext *ctx, char *atom)
>  }
>  
>  XLU_ConfigValue *xlu__cfg_list_mk(CfgParseContext *ctx,
> -                                  XLU_ConfigValue *val)
> +                                  XLU_ConfigValue *val,
> +                                  YYLTYPE *loc)
>  {
>      XLU_ConfigValue *value = NULL;
>      XLU_ConfigValue **values = NULL;
> @@ -344,12 +348,14 @@ XLU_ConfigValue *xlu__cfg_list_mk(CfgParseContext *ctx,
>      if (!values) goto xe;
>      values[0] = val;
>  
> -    value = malloc(sizeof(*value));
> +    value = malloc(sizeof(*value)+sizeof(*loc));
>      if (!value) goto xe;
>      value->type = XLU_LIST;
>      value->u.list.nvalues = 1;
>      value->u.list.avalues = 1;
>      value->u.list.values = values;
> +    value->loc = (YYLTYPE *)(value+1);
> +    memcpy(value->loc, loc, sizeof(*loc));
>  
>      return value;
>  
> diff --git a/tools/libxl/libxlu_cfg_i.h b/tools/libxl/libxlu_cfg_i.h
> index 11dc33f..1b59b33 100644
> --- a/tools/libxl/libxlu_cfg_i.h
> +++ b/tools/libxl/libxlu_cfg_i.h
> @@ -26,9 +26,10 @@ void xlu__cfg_set_free(XLU_ConfigSetting *set);
>  void xlu__cfg_set_store(CfgParseContext*, char *name,
>                          XLU_ConfigValue *val, int lineno);
>  XLU_ConfigValue *xlu__cfg_string_mk(CfgParseContext *ctx,
> -                                    char *atom);
> +                                    char *atom, YYLTYPE *loc);
>  XLU_ConfigValue *xlu__cfg_list_mk(CfgParseContext *ctx,
> -                                  XLU_ConfigValue *val);
> +                                  XLU_ConfigValue *val,
> +                                  YYLTYPE *loc);
>  void xlu__cfg_list_append(CfgParseContext *ctx,
>                            XLU_ConfigValue *list,
>                            XLU_ConfigValue *val);
> diff --git a/tools/libxl/libxlu_cfg_y.c b/tools/libxl/libxlu_cfg_y.c
> index b05e48b..fbfdd0f 100644
> --- a/tools/libxl/libxlu_cfg_y.c
> +++ b/tools/libxl/libxlu_cfg_y.c
> @@ -1515,7 +1515,7 @@ yyreduce:
>  
>  /* Line 1806 of yacc.c  */
>  #line 62 "libxlu_cfg_y.y"
> -    { (yyval.value)= xlu__cfg_string_mk(ctx,(yyvsp[(1) - (1)].string)); }
> +    { (yyval.value)= xlu__cfg_string_mk(ctx,(yyvsp[(1) - (1)].string),&(yylsp[(1) - (1)])); }
>      break;
>  
>    case 13:
> @@ -1543,7 +1543,7 @@ yyreduce:
>  
>  /* Line 1806 of yacc.c  */
>  #line 68 "libxlu_cfg_y.y"
> -    { (yyval.value)= xlu__cfg_list_mk(ctx,NULL); }
> +    { (yyval.value)= xlu__cfg_list_mk(ctx,NULL,&yylloc); }
>      break;
>  
>    case 17:
> @@ -1564,7 +1564,7 @@ yyreduce:
>  
>  /* Line 1806 of yacc.c  */
>  #line 72 "libxlu_cfg_y.y"
> -    { (yyval.value)= xlu__cfg_list_mk(ctx,(yyvsp[(1) - (2)].value)); }
> +    { (yyval.value)= xlu__cfg_list_mk(ctx,(yyvsp[(1) - (2)].value),&(yylsp[(1) - (2)])); }
>      break;
>  
>    case 20:
> diff --git a/tools/libxl/libxlu_cfg_y.y b/tools/libxl/libxlu_cfg_y.y
> index 4a5ca3a..a923f76 100644
> --- a/tools/libxl/libxlu_cfg_y.y
> +++ b/tools/libxl/libxlu_cfg_y.y
> @@ -59,17 +59,17 @@ assignment: IDENT '=' value { xlu__cfg_set_store(ctx,$1,$3,@3.first_line); }
>  endstmt: NEWLINE
>   |      ';'
>  
> -value:  atom                         { $$= xlu__cfg_string_mk(ctx,$1); }
> +value:  atom                         { $$= xlu__cfg_string_mk(ctx,$1,&@1); }
>   |      '[' nlok valuelist ']'       { $$= $3; }
>  
>  atom:   STRING                   { $$= $1; }
>   |      NUMBER                   { $$= $1; }
>  
> -valuelist: /* empty */           { $$= xlu__cfg_list_mk(ctx,NULL); }
> +valuelist: /* empty */           { $$= xlu__cfg_list_mk(ctx,NULL,&yylloc); }
>   |      values                  { $$= $1; }
>   |      values ',' nlok         { $$= $1; }
>  
> -values: value nlok                  { $$= xlu__cfg_list_mk(ctx,$1); }
> +values: value nlok                  { $$= xlu__cfg_list_mk(ctx,$1,&@1); }
>   |      values ',' nlok value nlok  { xlu__cfg_list_append(ctx,$1,$4); $$= $1; }
>  
>  nlok:
> diff --git a/tools/libxl/libxlu_internal.h b/tools/libxl/libxlu_internal.h
> index 092a17a..cc1d400 100644
> --- a/tools/libxl/libxlu_internal.h
> +++ b/tools/libxl/libxlu_internal.h
> @@ -38,12 +38,14 @@ typedef struct XLU_ConfigList {
>      XLU_ConfigValue **values;
>  } XLU_ConfigList;
>  
> +typedef struct YYLTYPE YYLTYPE;
>  struct XLU_ConfigValue {
>      enum XLU_ConfigValueType type;
>      union {
>          char *string;
>          XLU_ConfigList list;
>      } u;
> +    YYLTYPE *loc;
>  };
>  
>  typedef struct XLU_ConfigSetting { /* transparent */

  reply	other threads:[~2015-03-11 15:12 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-09 12:51 [PATCH v7 00/21] Virtual NUMA for PV and HVM Wei Liu
2015-03-09 12:51 ` [PATCH v7 01/21] xen: make two memory hypercalls vNUMA-aware Wei Liu
2015-03-09 13:22   ` Jan Beulich
2015-03-09 13:29     ` Wei Liu
2015-03-09 13:52       ` Jan Beulich
2015-03-09 13:59         ` Wei Liu
2015-03-09 12:51 ` [PATCH v7 02/21] libxc: duplicate snippet to allocate p2m_host array Wei Liu
2015-03-09 15:06   ` Konrad Rzeszutek Wilk
2015-03-11 15:02   ` Ian Campbell
2015-03-09 12:51 ` [PATCH v7 03/21] libxc: add p2m_size to xc_dom_image Wei Liu
2015-03-09 12:51 ` [PATCH v7 04/21] libxc: allocate memory with vNUMA information for PV guest Wei Liu
2015-03-09 12:51 ` [PATCH v7 05/21] libxl: introduce vNUMA types Wei Liu
2015-03-09 12:51 ` [PATCH v7 06/21] libxl: add vmemrange to libxl__domain_build_state Wei Liu
2015-03-09 12:51 ` [PATCH v7 07/21] libxl: introduce libxl__vnuma_config_check Wei Liu
2015-03-09 12:51 ` [PATCH v7 08/21] libxl: x86: factor out e820_host_sanitize Wei Liu
2015-03-09 12:51 ` [PATCH v7 09/21] libxl: functions to build vmemranges for PV guest Wei Liu
2015-03-09 12:51 ` [PATCH v7 10/21] libxl: build, check and pass vNUMA info to Xen " Wei Liu
2015-03-09 12:51 ` [PATCH v7 11/21] libxc: indentation change to xc_hvm_build_x86.c Wei Liu
2015-03-09 12:51 ` [PATCH v7 12/21] libxc: allocate memory with vNUMA information for HVM guest Wei Liu
2015-03-09 12:51 ` [PATCH v7 13/21] libxl: build, check and pass vNUMA info to Xen " Wei Liu
2015-03-09 12:51 ` [PATCH v7 14/21] libxl: disallow memory relocation when vNUMA is enabled Wei Liu
2015-03-09 12:51 ` [PATCH v7 15/21] libxl: define LIBXL_HAVE_VNUMA Wei Liu
2015-03-11 15:03   ` Ian Campbell
2015-03-09 12:51 ` [PATCH v7 16/21] libxlu: rework internal representation of setting Wei Liu
2015-03-09 12:51 ` [PATCH v7 17/21] libxlu: nested list support Wei Liu
2015-03-09 12:51 ` [PATCH v7 18/21] libxlu: record location when parsing values Wei Liu
2015-03-11 15:12   ` Ian Campbell [this message]
2015-03-11 15:16     ` Wei Liu
2015-03-11 15:36       ` Ian Campbell
2015-03-09 12:51 ` [PATCH v7 19/21] libxlu: introduce new APIs Wei Liu
2015-03-09 12:51 ` [PATCH v7 20/21] xl: introduce xcalloc Wei Liu
2015-03-09 12:51 ` [PATCH v7 21/21] xl: vNUMA support Wei Liu
2015-03-11 15:12   ` Ian Campbell
2015-03-11 20:14     ` Wei Liu
2015-03-12 10:00       ` Ian Campbell
2015-03-12 10:50         ` Wei Liu
2015-03-12 10:58           ` Ian Campbell
2015-03-12 13:22       ` Dario Faggioli
2015-03-12 13:37         ` Wei Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1426086769.21353.268.camel@citrix.com \
    --to=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.