bug-gnulib
[Top][All Lists]
Advanced

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

new module 'sys_resource'


From: Bruno Haible
Subject: new module 'sys_resource'
Date: Fri, 13 Apr 2012 01:13:04 +0200
User-agent: KMail/4.7.4 (Linux/3.1.0-1.2-desktop; KDE/4.7.4; x86_64; ; )

It looks reasonable to define a getrusage() replacement for native Windows
in gnulib. libgfortran (in GCC) has such a replacement already.

First comes a <sys/resource.h> substitute.
Reference: 
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_resource.h.html


2012-04-12  Bruno Haible  <address@hidden>

        New module 'sys_resource'.
        * lib/sys_resource.in.h: New file.
        * m4/sys_resource_h.m4: New file.
        * modules/sys_resource: New file.
        * doc/posix-headers/sys_resource.texi: Mention the new module.

============================ lib/sys_resource.in.h ============================
/* Substitute for <sys/resource.h>.
   Copyright (C) 2012 Free Software Foundation, Inc.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */

# if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
# endif
@PRAGMA_COLUMNS@

#ifndef address@hidden@_SYS_RESOURCE_H

#if @HAVE_SYS_RESOURCE_H@

/* On FreeBSD 5.0, <sys/resource.h> assumes prior inclusion of <sys/types.h>
   and <sys/time.h>.  */
# include <sys/types.h>
# include <sys/time.h>

/* The include_next requires a split double-inclusion guard.  */
# @INCLUDE_NEXT@ @NEXT_SYS_RESOURCE_H@

#endif

#ifndef address@hidden@_SYS_RESOURCE_H
#define address@hidden@_SYS_RESOURCE_H

#if address@hidden@
/* A platform that lacks <sys/resource.h>.  */

/* Get 'struct timeval'.  */
# include <sys/time.h>

/* Define the RUSAGE_* constants.  */
# define RUSAGE_SELF 0
# define RUSAGE_CHILDREN -1

# ifdef __cplusplus
extern "C" {
# endif

# if !GNULIB_defined_struct_rusage
/* All known platforms that lack <sys/resource.h> also lack any declaration
   of struct rusage in any other header.  */
struct rusage
{
  struct timeval ru_utime;      /* CPU time used in user mode */
  struct timeval ru_stime;      /* CPU time used in system mode (kernel) */
  long ru_maxrss;
  long ru_ixrss;
  long ru_idrss;
  long ru_isrss;
  long ru_minflt;
  long ru_majflt;
  long ru_nswap;
  long ru_inblock;
  long ru_oublock;
  long ru_msgsnd;
  long ru_msgrcv;
  long ru_nsignals;
  long ru_nvcsw;
  long ru_nivcsw;
};
#  define GNULIB_defined_struct_rusage 1
# endif

# ifdef __cplusplus
}
# endif

#endif

#endif /* address@hidden@_SYS_RESOURCE_H */
#endif /* address@hidden@_SYS_RESOURCE_H */
============================ m4/sys_resource_h.m4 =============================
# sys_resource_h.m4 serial 1
dnl Copyright (C) 2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

AC_DEFUN([gl_HEADER_SYS_RESOURCE],
[
  AC_REQUIRE([gl_SYS_RESOURCE_H_DEFAULTS])
  dnl <sys/resource.h> is always overridden, because of GNULIB_POSIXCHECK.
  gl_CHECK_NEXT_HEADERS([sys/resource.h])
  if test $ac_cv_header_sys_resource_h = yes; then
    HAVE_SYS_RESOURCE_H=1
  else
    HAVE_SYS_RESOURCE_H=0
  fi
  AC_SUBST([HAVE_SYS_RESOURCE_H])
])

AC_DEFUN([gl_SYS_RESOURCE_MODULE_INDICATOR],
[
  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
  AC_REQUIRE([gl_SYS_RESOURCE_H_DEFAULTS])
  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
  dnl Define it also as a C macro, for the benefit of the unit tests.
  gl_MODULE_INDICATOR_FOR_TESTS([$1])
])

AC_DEFUN([gl_SYS_RESOURCE_H_DEFAULTS],
[
])
============================ modules/sys_resource =============================
Description:
A POSIX-like <sys/resource.h>.

Files:
lib/sys_resource.in.h
m4/sys_resource_h.m4

Depends-on:
include_next
sys_time

configure.ac:
gl_HEADER_SYS_RESOURCE
AC_PROG_MKDIR_P

Makefile.am:
BUILT_SOURCES += sys/resource.h

# We need the following in order to create <sys/resource.h> when the system
# doesn't have one.
sys/resource.h: sys_resource.in.h $(top_builddir)/config.status
        $(AM_V_at)$(MKDIR_P) sys
        $(AM_V_GEN)rm -f address@hidden $@ && \
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
          sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
              -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_SYS_RESOURCE_H''@|$(NEXT_SYS_RESOURCE_H)|g' \
              -e 's|@''HAVE_SYS_RESOURCE_H''@|$(HAVE_SYS_RESOURCE_H)|g' \
              < $(srcdir)/sys_resource.in.h; \
        } > address@hidden && \
        mv -f address@hidden $@
MOSTLYCLEANFILES += sys/resource.h sys/resource.h-t
MOSTLYCLEANDIRS += sys

Include:
<sys/resource.h>

License:
LGPL

Maintainer:
Bruno Haible
===============================================================================
--- doc/posix-headers/sys_resource.texi.orig    Thu Apr 12 20:57:01 2012
+++ doc/posix-headers/sys_resource.texi Thu Apr 12 20:15:29 2012
@@ -3,20 +3,19 @@
 
 POSIX specification:@* 
@url{http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_resource.h.html}
 
-Gnulib module: ---
+Gnulib module: sys_resource
 
 Portability problems fixed by Gnulib:
 @itemize
address@hidden itemize
-
-Portability problems not fixed by Gnulib:
address@hidden
 @item
 This header file is missing on some platforms:
 mingw, MSVC 9.
-
 @item
 On some platforms, this header file requires that <sys/types.h> and
 <sys/time.h> already be included:
 FreeBSD 5.0.
 @end itemize
+
+Portability problems not fixed by Gnulib:
address@hidden
address@hidden itemize




reply via email to

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