Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 May 2011 14:29:25 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r221662 - projects/largeSMP/lib/libmemstat
Message-ID:  <201105081429.p48ETPvo050219@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Sun May  8 14:29:25 2011
New Revision: 221662
URL: http://svn.freebsd.org/changeset/base/221662

Log:
  Revert MAXCPU introduction. In userland it is always 1.
  
  Noted by:	marcel

Modified:
  projects/largeSMP/lib/libmemstat/memstat.c
  projects/largeSMP/lib/libmemstat/memstat.h
  projects/largeSMP/lib/libmemstat/memstat_internal.h
  projects/largeSMP/lib/libmemstat/memstat_malloc.c
  projects/largeSMP/lib/libmemstat/memstat_uma.c

Modified: projects/largeSMP/lib/libmemstat/memstat.c
==============================================================================
--- projects/largeSMP/lib/libmemstat/memstat.c	Sun May  8 14:23:21 2011	(r221661)
+++ projects/largeSMP/lib/libmemstat/memstat.c	Sun May  8 14:29:25 2011	(r221662)
@@ -193,7 +193,7 @@ _memstat_mt_reset_stats(struct memory_ty
 	mtp->mt_zonefree = 0;
 	mtp->mt_kegfree = 0;
 
-	for (i = 0; i < MAXCPU; i++) {
+	for (i = 0; i < MEMSTAT_MAXCPU; i++) {
 		mtp->mt_percpu_alloc[i].mtp_memalloced = 0;
 		mtp->mt_percpu_alloc[i].mtp_memfreed = 0;
 		mtp->mt_percpu_alloc[i].mtp_numallocs = 0;

Modified: projects/largeSMP/lib/libmemstat/memstat.h
==============================================================================
--- projects/largeSMP/lib/libmemstat/memstat.h	Sun May  8 14:23:21 2011	(r221661)
+++ projects/largeSMP/lib/libmemstat/memstat.h	Sun May  8 14:29:25 2011	(r221662)
@@ -30,6 +30,12 @@
 #define	_MEMSTAT_H_
 
 /*
+ * Number of CPU slots in library-internal data structures.  This should be
+ * at least value of MAXCPU from param.h
+ */
+#define	MEMSTAT_MAXCPU	32
+
+/*
  * Amount of caller data to maintain for each caller data slot.  Applications
  * must not request more than this number of caller save data, or risk
  * corrupting internal libmemstat(3) data structures.  A compile time check

Modified: projects/largeSMP/lib/libmemstat/memstat_internal.h
==============================================================================
--- projects/largeSMP/lib/libmemstat/memstat_internal.h	Sun May  8 14:23:21 2011	(r221661)
+++ projects/largeSMP/lib/libmemstat/memstat_internal.h	Sun May  8 14:29:25 2011	(r221662)
@@ -100,11 +100,11 @@ struct memory_type {
 		uint64_t	 mtp_sizemask;	/* Per-CPU mt_sizemask. */
 		void		*mtp_caller_pointer[MEMSTAT_MAXCALLER];
 		uint64_t	 mtp_caller_uint64[MEMSTAT_MAXCALLER];
-	}	mt_percpu_alloc[MAXCPU];
+	}	mt_percpu_alloc[MEMSTAT_MAXCPU];
 
 	struct {
 		uint64_t	 mtp_free;	/* Per-CPU cache free items. */
-	}	mt_percpu_cache[MAXCPU];
+	}	mt_percpu_cache[MEMSTAT_MAXCPU];
 
 	LIST_ENTRY(memory_type)	mt_list;	/* List of types. */
 };

Modified: projects/largeSMP/lib/libmemstat/memstat_malloc.c
==============================================================================
--- projects/largeSMP/lib/libmemstat/memstat_malloc.c	Sun May  8 14:23:21 2011	(r221661)
+++ projects/largeSMP/lib/libmemstat/memstat_malloc.c	Sun May  8 14:29:25 2011	(r221662)
@@ -96,7 +96,7 @@ retry:
 		return (-1);
 	}
 
-	if (maxcpus > MAXCPU) {
+	if (maxcpus > MEMSTAT_MAXCPU) {
 		list->mtl_error = MEMSTAT_ERROR_TOOMANYCPUS;
 		return (-1);
 	}
@@ -160,7 +160,7 @@ retry:
 		return (-1);
 	}
 
-	if (mtshp->mtsh_maxcpus > MAXCPU) {
+	if (mtshp->mtsh_maxcpus > MEMSTAT_MAXCPU) {
 		list->mtl_error = MEMSTAT_ERROR_TOOMANYCPUS;
 		free(buffer);
 		return (-1);
@@ -295,7 +295,7 @@ memstat_kvm_malloc(struct memory_type_li
 	void *kmemstatistics;
 	int hint_dontsearch, j, mp_maxcpus, ret;
 	char name[MEMTYPE_MAXNAME];
-	struct malloc_type_stats mts[MAXCPU], *mtsp;
+	struct malloc_type_stats mts[MEMSTAT_MAXCPU], *mtsp;
 	struct malloc_type_internal *mtip;
 	struct malloc_type type, *typep;
 	kvm_t *kvm;
@@ -322,7 +322,7 @@ memstat_kvm_malloc(struct memory_type_li
 		return (-1);
 	}
 
-	if (mp_maxcpus > MAXCPU) {
+	if (mp_maxcpus > MEMSTAT_MAXCPU) {
 		list->mtl_error = MEMSTAT_ERROR_TOOMANYCPUS;
 		return (-1);
 	}
@@ -348,6 +348,11 @@ memstat_kvm_malloc(struct memory_type_li
 			list->mtl_error = ret;
 			return (-1);
 		}
+
+		/*
+		 * Since our compile-time value for MAXCPU may differ from the
+		 * kernel's, we populate our own array.
+		 */
 		mtip = type.ks_handle;
 		ret = kread(kvm, mtip->mti_stats, mts, mp_maxcpus *
 		    sizeof(struct malloc_type_stats), 0);

Modified: projects/largeSMP/lib/libmemstat/memstat_uma.c
==============================================================================
--- projects/largeSMP/lib/libmemstat/memstat_uma.c	Sun May  8 14:23:21 2011	(r221661)
+++ projects/largeSMP/lib/libmemstat/memstat_uma.c	Sun May  8 14:29:25 2011	(r221662)
@@ -27,7 +27,6 @@
  */
 
 #include <sys/param.h>
-#include <sys/cpuset.h>
 #include <sys/sysctl.h>
 
 #define	LIBMEMSTAT	/* Cause vm_page.h not to include opt_vmpage.h */
@@ -106,7 +105,7 @@ retry:
 		return (-1);
 	}
 
-	if (maxcpus > MAXCPU) {
+	if (maxcpus > MEMSTAT_MAXCPU) {
 		list->mtl_error = MEMSTAT_ERROR_TOOMANYCPUS;
 		return (-1);
 	}
@@ -170,7 +169,7 @@ retry:
 		return (-1);
 	}
 
-	if (ushp->ush_maxcpus > MAXCPU) {
+	if (ushp->ush_maxcpus > MEMSTAT_MAXCPU) {
 		list->mtl_error = MEMSTAT_ERROR_TOOMANYCPUS;
 		free(buffer);
 		return (-1);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105081429.p48ETPvo050219>