#include <dirent.h>
#endif])
+OPENAFS_HAVE_STRUCT_FIELD(struct rusage, ru_idrss,
+[#ifdef HAVE_SYS_RESOURCE_H
+#include <sys/resource.h>
+#endif])
+
dnl Eventually, this will look for the system one, or for OpenSSL
LIB_hcrypto="-lafshcrypto"
LDFLAGS_hcrypto="-L\$(TOP_LIBDIR)"
include @TOP_OBJDIR@/src/config/Makefile.pthread
include @TOP_OBJDIR@/src/config/Makefile.libtool
-LT_objs = assert.lo casestrcpy.lo dict.lo rbtree.lo uuid.lo
+LT_objs = assert.lo casestrcpy.lo dict.lo proc.lo rbtree.lo uuid.lo
LT_libs = $(LIB_hcrypto) $(LIB_roken)
HEADERS = $(TOP_INCDIR)/afs/opr.h \
$(TOP_INCDIR)/opr/jhash.h \
$(TOP_INCDIR)/opr/lock.h \
$(TOP_INCDIR)/opr/lockstub.h \
+ $(TOP_INCDIR)/opr/proc.h \
$(TOP_INCDIR)/opr/queue.h \
$(TOP_INCDIR)/opr/rbtree.h \
$(TOP_INCDIR)/opr/time.h \
$(TOP_INCDIR)/opr/lockstub.h: ${srcdir}/lockstub.h
$(INSTALL_DATA) $? $@
+$(TOP_INCDIR)/opr/proc.h: ${srcdir}/proc.h
+ $(INSTALL_DATA) $? $@
+
$(TOP_INCDIR)/opr/queue.h: ${srcdir}/queue.h
$(INSTALL_DATA) $? $@
$(INCFILEDIR)\opr_assert.h \
$(DESTDIR)\include\opr\dict.h \
$(DESTDIR)\include\opr\jhash.h \
+ $(DESTDIR)\include\opr\proc.h \
$(DESTDIR)\include\opr\queue.h \
$(DESTDIR)\include\opr\rbtree.h \
$(DESTDIR)\include\opr\time.h \
$(OUT)\assert.obj \
$(OUT)\casestrcpy.obj \
$(OUT)\dict.obj \
+ $(OUT)\proc.obj \
$(OUT)\rbtree.obj \
$(OUT)\uuid.obj \
$(OUT)\AFS_component_version_number.obj
--- /dev/null
+/*
+ * Copyright (C) 2014 by the Massachusetts Institute of Technology.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <afsconfig.h>
+#include <afs/param.h>
+
+
+#ifndef AFS_NT40_ENV
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_RESOURCE_H
+#include <sys/resource.h>
+#endif
+
+/*
+ * Return a measure of the size of the process, in kilobytes.
+ * This is inherently a vague sort of measure, and the different paths
+ * have different actual meanings, but perhaps it is useful for comparing
+ * different logs on the same host.
+ */
+afs_int32
+opr_procsize(void)
+{
+#ifdef AFS_NT40_ENV
+ return -1;
+#elif HAVE_STRUCT_RUSAGE_RU_IDRSS
+ struct rusage usage;
+ if (getrusage(RUSAGE_SELF, &usage) != 0)
+ return -1;
+ else
+ return usage.ru_idrss;
+#else
+ return (int)((long)sbrk(0) >> 10);
+#endif
+}