diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2013-12-01 17:02:28 +0100 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2013-12-16 12:07:03 +0100 |
commit | 5e3ef5153fe6aa2190ffa185009fa45e3549469d (patch) | |
tree | d009aabe571cc66de3dc6127e384e1a7923a8a6b /header.c | |
parent | b39ae10e7d9c9db61822fe48585dbc2fdbbcc5d2 (diff) | |
download | mig-5e3ef5153fe6aa2190ffa185009fa45e3549469d.tar.gz mig-5e3ef5153fe6aa2190ffa185009fa45e3549469d.tar.bz2 mig-5e3ef5153fe6aa2190ffa185009fa45e3549469d.zip |
Generate a x_server_routine in the sheader so it can be inlined
* header.c (WriteServerHeader): Emit a x_server_routine that can be
inlined.
* server.c (WriteEpilog): Export the x_routines array so it can be
used from the inlined x_server_routine.
Diffstat (limited to 'header.c')
-rw-r--r-- | header.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -154,6 +154,8 @@ WriteServerHeader(FILE *file, const statement_t *stats) const char *protect = strconcat(SubsystemName, "_server_"); WriteProlog(file, protect); + fprintf(file, "#include <mach/mig_errors.h>\n"); /* For mig_routine_t. */ + for (stat = stats; stat != stNULL; stat = stat->stNext) switch (stat->stKind) { @@ -170,6 +172,14 @@ WriteServerHeader(FILE *file, const statement_t *stats) fatal("WriteServerHeader(): bad statement_kind_t (%d)", (int) stat->stKind); } + fprintf(file, "\n"); + + /* + * Include the x_server_routine function so it can be inlined. + */ + fprintf(file, "extern mig_routine_t %s_routines[];\n", ServerDemux); + WriteSubsystemServerRoutine(file, "extern inline"); + WriteEpilog(file, protect); } |