From 292f1e462fb93371edac5ca1a291a2572870e36c Mon Sep 17 00:00:00 2001 From: mquinson Date: Tue, 14 Sep 2004 09:58:23 +0000 Subject: [PATCH] Add a layer over the system headers to simplify portability git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@415 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/xbt/sysdep.h | 64 ++++++++++++++++++++++++++++++++++++++++++++ src/xbt/sysdep.c | 51 +++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 include/xbt/sysdep.h create mode 100644 src/xbt/sysdep.c diff --git a/include/xbt/sysdep.h b/include/xbt/sysdep.h new file mode 100644 index 0000000000..2d7c63cd63 --- /dev/null +++ b/include/xbt/sysdep.h @@ -0,0 +1,64 @@ +/* $Id$ */ + +/* gras/sysdep.h -- all system dependency */ +/* no system header should be loaded out of this file so that we have only */ +/* one file to check when porting to another OS */ + +/* Authors: Martin Quinson */ +/* Copyright (C) 2004 the OURAGAN project. */ + +/* This program is free software; you can redistribute it and/or modify it + under the terms of the license (GNU LGPL) which comes with this package. */ + + +#ifndef _GRAS_SYSDEP_H +#define _GRAS_SYSDEP_H + +#include /* Included directly for speed */ + +#include /* FIXME: remove */ +#include /* FIXME: remove */ + +#ifdef __cplusplus +extern "C" +#endif + +void* gras_malloc (long int bytes); +void* gras_malloc0 (long int bytes); +void* gras_realloc (void *memory, long int bytes); +void gras_free (void *memory); + +#define gras_new(type, count) ((type*)gras_malloc (sizeof (type) * (count))) +#define gras_new0(type, count) ((type*)gras_malloc0 (sizeof (type) * (count))) + +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) +#define _GRAS_GNUC_PRINTF( format_idx, arg_idx ) \ + __attribute__((__format__ (__printf__, format_idx, arg_idx))) +#define _GRAS_GNUC_SCANF( format_idx, arg_idx ) \ + __attribute__((__format__ (__scanf__, format_idx, arg_idx))) +#define _GRAS_GNUC_FORMAT( arg_idx ) \ + __attribute__((__format_arg__ (arg_idx))) +#define _GRAS_GNUC_NORETURN \ + __attribute__((__noreturn__)) +#else /* !__GNUC__ */ +#define _GRAS_GNUC_PRINTF( format_idx, arg_idx ) +#define _GRAS_GNUC_SCANF( format_idx, arg_idx ) +#define _GRAS_GNUC_FORMAT( arg_idx ) +#define _GRAS_GNUC_NORETURN +#endif /* !__GNUC__ */ + +void gras_abort(void) _GRAS_GNUC_NORETURN; + +/* FIXME: This is a very good candidate to rewrite (along with a proper string stuff) + but I'm too lazy right now, so copy the definition */ +long int strtol(const char *nptr, char **endptr, int base); +double strtod(const char *nptr, char **endptr); +int atoi(const char *nptr); + + + +#ifdef __cplusplus +} +#endif + +#endif /* _GRAS_SYSDEP_H */ diff --git a/src/xbt/sysdep.c b/src/xbt/sysdep.c new file mode 100644 index 0000000000..2ac0871508 --- /dev/null +++ b/src/xbt/sysdep.c @@ -0,0 +1,51 @@ +/* $Id$ */ + +/* gras/sysdep.h -- all system dependency */ +/* no system header should be loaded out of this file so that we have only */ +/* one file to check when porting to another OS */ + +/* Authors: Martin Quinson */ +/* Copyright (C) 2004 the OURAGAN project. */ + +/* This program is free software; you can redistribute it and/or modify it + under the terms of the license (GNU LGPL) which comes with this package. */ + +#include "gras_private.h" + +#include + +GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(sysdep, gros, "System dependency"); + +/**** + **** Memory management + ****/ + +void* gras_malloc (long int bytes) { + return bytes == 0 ? NULL : (void*) malloc ((size_t) bytes); +} +void* gras_malloc0 (long int bytes) { + return bytes == 0 ? NULL : (void*) calloc ((size_t) bytes, 1); +} + +void* gras_realloc (void *memory, long int bytes) { + if (bytes == 0) { + gras_free(memory); + return NULL; + } else { + return (void*) realloc (memory, (size_t) bytes); + } +} + +void gras_free (void *memory) { + if (memory) { + free (memory); + } +} + +/**** + **** Misc + ****/ + +void gras_abort(void) { + abort(); +} -- 2.20.1