bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH mig v2] header: add definitions for RPC presence and IDs


From: Samuel Thibault
Subject: Re: [PATCH mig v2] header: add definitions for RPC presence and IDs
Date: Tue, 28 Jan 2025 22:53:40 +0100

Applied, thanks!

Luca Dariz, le lun. 06 janv. 2025 14:46:49 +0100, a ecrit:
> This allows to check at compilation time for some rpc (as done for
> example in glibc for thread_set/get_name() and host_page_size()).
> Also the IDs can be useful for testing purposes, or when assembling
> messages manually.
> ---
>  header.c     | 14 ++++++++++++++
>  mig_string.h |  1 +
>  string.c     | 11 +++++++++++
>  3 files changed, 26 insertions(+)
> 
> diff --git a/header.c b/header.c
> index 8190376..4781e86 100644
> --- a/header.c
> +++ b/header.c
> @@ -82,13 +82,20 @@ WriteEpilog(FILE *file, const char *protect)
>  static void
>  WriteUserRoutine(FILE *file, const routine_t *rt)
>  {
> +    char *defName = strupper(rt->rtUserName);
>      fprintf(file, "\n");
>      fprintf(file, "/* %s %s */\n", rtRoutineKindToStr(rt->rtKind), 
> rt->rtName);
> +    fprintf(file, "#define MIG_RPC_HAVE_%s\n", defName);
> +    fprintf(file, "#define MIG_RPC_REQUEST_ID_%s %d\n",
> +            defName, rt->rtNumber + SubsystemBase);
> +    fprintf(file, "#define MIG_RPC_REPLY_ID_%s %d\n",
> +            defName, rt->rtNumber + SubsystemBase + 100);
>      WriteMigExternal(file);
>      fprintf(file, "%s %s\n", ReturnTypeStr(rt), rt->rtUserName);
>      fprintf(file, "(\n");
>      WriteList(file, rt->rtArgs, WriteUserVarDecl, akbUserArg, ",\n", "\n");
>      fprintf(file, ");\n");
> +    strfree(defName);
>  }
>  
>  void
> @@ -137,14 +144,21 @@ WriteRoutineList(FILE *file, const statement_t *stats)
>  static void
>  WriteServerRoutine(FILE *file, const routine_t *rt)
>  {
> +    char *defName = strupper(rt->rtServerName);
>      fprintf(file, "\n");
>      fprintf(file, "/* %s %s */\n", rtRoutineKindToStr(rt->rtKind), 
> rt->rtName);
> +    fprintf(file, "#define MIG_RPC_HAVE_%s\n", defName);
> +    fprintf(file, "#define MIG_RPC_REQUEST_ID_%s %d\n",
> +            defName, rt->rtNumber + SubsystemBase);
> +    fprintf(file, "#define MIG_RPC_REPLY_ID_%s %d\n",
> +            defName, rt->rtNumber + SubsystemBase + 100);
>      WriteMigExternal(file);
>      fprintf(file, "%s %s\n", ReturnTypeStr(rt), rt->rtServerName);
>      fprintf(file, "(\n");
>      WriteList(file, rt->rtArgs, WriteServerVarDecl,
>             akbServerArg, ",\n", "\n");
>      fprintf(file, ");\n");
> +    strfree(defName);
>  }
>  
>  void
> diff --git a/mig_string.h b/mig_string.h
> index 920171c..fc1dd72 100644
> --- a/mig_string.h
> +++ b/mig_string.h
> @@ -44,5 +44,6 @@ extern void strfree(string_t string);
>  
>  extern const char *strbool(bool v);
>  extern const char *strstring(const_string_t string);
> +extern char *strupper(const_string_t string);
>  
>  #endif       /* _MIG_STRING_H */
> diff --git a/string.c b/string.c
> index e182948..eeaaba2 100644
> --- a/string.c
> +++ b/string.c
> @@ -27,6 +27,7 @@
>  #include <sys/types.h>
>  #include <stdbool.h>
>  #include <stdlib.h>
> +#include <ctype.h>
>  
>  #include "error.h"
>  #include "mig_string.h"
> @@ -77,3 +78,13 @@ strstring(const_string_t string)
>      else
>       return string;
>  }
> +
> +char *
> +strupper(const_string_t string)
> +{
> +    string_t upper = strmake(string);
> +
> +    for (int i=0; i<strlen(upper); i++)
> +        upper[i] = toupper(upper[i]);
> +    return upper;
> +}
> -- 
> 2.39.5
> 
> 

-- 
Samuel
<v> je viens d'inventer mutt version magritte :D
<y> ?
<v> dans mutt
<v> tape "cceci" return



reply via email to

[Prev in Thread] Current Thread [Next in Thread]