summaryrefslogtreecommitdiff
path: root/lib/libmemstat/memstat_malloc.c
Commit message (Collapse)AuthorAgeFilesLines
* malloc: move malloc_type_internal into malloc_typeMateusz Guzik2020-11-061-9/+8
| | | | | | | | | | | | | | | | According to code comments the original motivation was to allow for malloc_type_internal changes without ABI breakage. This can be trivially accomplished by providing spare fields and versioning the struct, as implemented in the patch below. The upshots are one less memory indirection on each alloc and disappearance of mt_zone. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D27104 Notes: svn path=/head/; revision=367432
* malloc: export kernel zones instead of relying on them being power-of-2Mateusz Guzik2020-11-021-1/+130
| | | | | | | | Reviewed by: markj (previous version) Differential Revision: https://reviews.freebsd.org/D27026 Notes: svn path=/head/; revision=367274
* libmemstat: adjust for per-cpu stats after r338899Mateusz Guzik2018-10-111-26/+40
| | | | | | | | | | | Reported by: yuripv Reviewed by: kib, markj Approved by: re (gjb) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D17490 Notes: svn path=/head/; revision=339320
* lib: further adoption of SPDX licensing ID tags.Pedro F. Giffuni2017-11-261-0/+2
| | | | | | | | | | | | | | | Mainly focus on files that use BSD 2-Clause license, however the tool I was using mis-identified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Notes: svn path=/head/; revision=326219
* Get rid of MAXCPU knowledge used for internal needs only. Switch toSergey Kandaurov2011-08-011-21/+15
| | | | | | | | | | | | | | dynamic memory allocation to hold per-CPU memory types data (sized to mp_maxid for UMA, and to mp_maxcpus for malloc to match the kernel). That fixes libmemstat with arbitrary large MAXCPU values and therefore eliminates MEMSTAT_ERROR_TOOMANYCPUS error type. Reviewed by: jhb Approved by: re (kib) Notes: svn path=/head/; revision=224569
* Update the KVM backend for malloc stats to catch up to the internal structureJohn Baldwin2009-05-151-6/+5
| | | | | | | | | BI change from the addition of DTrace malloc(9) probes. Submitted by: Ben Kelly ben of wanderview dot com Notes: svn path=/head/; revision=192148
* Make pointer argument to kread_string() const since the kernel structureRobert Watson2007-05-211-3/+4
| | | | | | | | | | field is const, and then employ __DECONST before getting into the kvm code. This eliminates a gcc 4.2 warning about losing constification. __DECONST advice from: sam Notes: svn path=/head/; revision=169838
* Teach libmemstat(3) how to extract malloc(9) statistics using kvm(3),Robert Watson2005-08-061-0/+180
| | | | | | | | | | | | so that libmemstat can be used to view full memory statistics from kernel core dumps and /dev/mem. This is provided via a new query function, memstat_kvm_malloc(), which is also automatically invoked by memstat_kvm_all(). A kvm handle must be passed in. This will allow malloc(9)-specific code to be removed from vmstat(8). Notes: svn path=/head/; revision=148789
* Correct two libmemstat(3) bugs:Robert Watson2005-08-011-1/+1
| | | | | | | | | | | | | | | | | | | | | - Move memory_type_list flushing logic from memstat_mtl_free() to _memstat_mtl_empty(), a libmemstat-internal function that can be called from other parts of the library. Invoke _memstat_mtl_empty() from memstat_mtl_free(), which also frees the containing list structure. Invoke _memstat_mtl_empty() instead of memstat_mtl_free() in various error cases in memstat_malloc.c and memstat_uma.c, which previously resulted in the list being freed prematurely. - Reverse the order of updating the mt_kegfree and mt_free fields of the memory_type in memstat_uma.c, otherwise keg free items won't be counted properly for non-secondary zones. MFC after: 3 days Notes: svn path=/head/; revision=148619
* Introduce more formal error handling for libmemstat(3):Robert Watson2005-07-241-29/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Define a set of libmemstat(3) error constants, which are used by all libmemstat(3) methods except for memstat_mtl_alloc(), which allocates a memory type list and may return ENOMEM via errno. - Define a per-memory_type_list current error value, which is set when a call associated with a memory list fails. This requires wrapping a structure around the queue(9) list head data structure, but this change is not visible to libmemstat(3) consumers due to using access methods. - Add a new accessor method, memstat_mtl_geterror() to retrieve the error number. - Consistently set the error number in a number of failure modes where previously some combination of setting errno and printf'ing error descriptions was used. libmemstat(3) will now no longer print to stdio under any circumstances. Returns of NULL/-1 for errors remain the same. This avoids use of stdio, misuse of error numbers, and should make it easier to program a libmemstat(3) consumer able to print useful error messages. Currently, no error-to-string function is provided, as I'm unsure how to address internationalization concerns. MFC after: 1 day Notes: svn path=/head/; revision=148357
* Prefix two non-static libmemstat(3) internal functions with '_' symbols, toRobert Watson2005-07-231-7/+2
| | | | | | | | | | try and discourage use outside the library. Remove duplicate declaration of memstat_mtl_free() from memstat_internal.h, as it's not internal, and the memstat.h definition suffices. Notes: svn path=/head/; revision=148354
* Re-spell wronge less wrongly as wrong.Robert Watson2005-07-151-2/+2
| | | | | | | | Submitted by: jkoshy MFC after: 1 week Notes: svn path=/head/; revision=148038
* Add libmemstat(3), a library for use by debugging and monitoringRobert Watson2005-07-141-0/+240
applications in tracking kernel memory statistics. It provides an abstracted interface to uma(9) and malloc(9) statistics, wrapped around the recently added binary stream sysctls for the allocators. Using this interface, it is easy to build monitoring tools, query specific memory types for usage information, etc. Facilities are provided for binding caller-provided data to memory types, incremental updates of memory types, and queries that span multiple allocators. Support for additional allocators is (relatively) easy to add. The API for libmemstat(3) will probably change some over time as consumers are written, and requirements evolve. It is written to avoid encoding ABIs for data structure layout into consuming applications for this reason. MFC after: 1 week Notes: svn path=/head/; revision=147997