From owner-svn-src-projects@FreeBSD.ORG Sun May 8 14:29:26 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2CD221065672; Sun, 8 May 2011 14:29:26 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1F4B98FC08; Sun, 8 May 2011 14:29:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p48ETQwq050225; Sun, 8 May 2011 14:29:26 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p48ETPvo050219; Sun, 8 May 2011 14:29:25 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201105081429.p48ETPvo050219@svn.freebsd.org> From: Attilio Rao Date: Sun, 8 May 2011 14:29:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r221662 - projects/largeSMP/lib/libmemstat X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 May 2011 14:29:26 -0000 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 -#include #include #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);