aboutsummaryrefslogtreecommitdiff
path: root/utils.h
diff options
context:
space:
mode:
authorFlavio Cruz <flaviocruz@gmail.com>2022-11-04 01:29:37 -0400
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-11-05 22:21:04 +0100
commit3902cb2fcae6e2028252b5d2016bf0e99ed74980 (patch)
tree6f48ad0f9567569680529367b843e6e8abbece90 /utils.h
parent68b3d8fe3a9595b7a5cb2bb6bc5973ba26139704 (diff)
downloadmig-3902cb2fcae6e2028252b5d2016bf0e99ed74980.tar.gz
mig-3902cb2fcae6e2028252b5d2016bf0e99ed74980.tar.bz2
mig-3902cb2fcae6e2028252b5d2016bf0e99ed74980.zip
Add support to define structures in mig.
Basic syntax is presented below and allows users to define nested structured types by using simpler or structure types as members. Mig will use the C padding and alignment rules to produce the same size as the corresponding C structures. type timespec_t = struct { uint32_t tv_sec; uint32_t tv_nsec; }; This allows us to build stubs that are more easily adaptable to other architectures. Message-Id: <Y2SjQSMOINY8I5Dy@viriathus>
Diffstat (limited to 'utils.h')
-rw-r--r--utils.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/utils.h b/utils.h
index a5673b0..64e2ebf 100644
--- a/utils.h
+++ b/utils.h
@@ -27,8 +27,19 @@
#ifndef _UTILS_H
#define _UTILS_H
+#include "routine.h"
+
/* stuff used by more than one of header.c, user.c, server.c */
+#define MAX(a,b) \
+ ({ __typeof__ (a) _a = (a); \
+ __typeof__ (b) _b = (b); \
+ _a > _b ? _a : _b; })
+#define MIN(a,b) \
+ ({ __typeof__ (a) _a = (a); \
+ __typeof__ (b) _b = (b); \
+ _a > _b ? _b : _a; })
+
typedef void write_list_fn_t(FILE *file, const argument_t *arg);
extern void WriteImport(FILE *file, const_string_t filename);