2015-07-11 10:30:00 +05:30
|
|
|
/*
|
|
|
|
* slab.h - slab related functions for libproc
|
|
|
|
*
|
|
|
|
* Copyright (C) 1998-2005 Albert Cahalan
|
|
|
|
* Copyright (C) 2015 Craig Small <csmall@enc.com.au>
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library 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
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
*/
|
|
|
|
|
2004-01-25 04:03:56 +05:30
|
|
|
#ifndef _PROC_SLAB_H
|
|
|
|
#define _PROC_SLAB_H
|
|
|
|
|
2015-07-04 10:29:59 +05:30
|
|
|
__BEGIN_DECLS
|
|
|
|
|
2015-07-11 10:30:00 +05:30
|
|
|
enum slabs_item {
|
2015-07-21 10:30:00 +05:30
|
|
|
PROCPS_SLABS_OBJS, // u_int
|
|
|
|
PROCPS_SLABS_AOBJS, // u_int
|
|
|
|
PROCPS_SLABS_PAGES, // u_int
|
|
|
|
PROCPS_SLABS_SLABS, // u_int
|
|
|
|
PROCPS_SLABS_ASLABS, // u_int
|
|
|
|
PROCPS_SLABS_CACHES, // u_int
|
|
|
|
PROCPS_SLABS_ACACHES, // u_int
|
|
|
|
PROCPS_SLABS_SIZE_AVG, // u_int
|
|
|
|
PROCPS_SLABS_SIZE_MIN, // u_int
|
|
|
|
PROCPS_SLABS_SIZE_MAX, // u_int
|
|
|
|
PROCPS_SLABS_SIZE_TOTAL, // ul_int
|
|
|
|
PROCPS_SLABS_SIZE_ACTIVE, // ul_int
|
|
|
|
PROCPS_SLABS_noop, // n/a
|
|
|
|
PROCPS_SLABS_stack_end // n/a
|
2015-07-04 10:29:59 +05:30
|
|
|
};
|
|
|
|
|
2015-07-11 10:30:00 +05:30
|
|
|
enum slabnode_item {
|
2015-07-21 10:30:00 +05:30
|
|
|
PROCPS_SLABNODE_SIZE, // ul_int
|
|
|
|
PROCPS_SLABNODE_OBJS, // u_int
|
|
|
|
PROCPS_SLABNODE_AOBJS, // u_int
|
|
|
|
PROCPS_SLABNODE_OBJ_SIZE, // u_int
|
|
|
|
PROCPS_SLABNODE_OBJS_PER_SLAB, // u_int
|
|
|
|
PROCPS_SLABNODE_PAGES_PER_SLAB, // u_int
|
|
|
|
PROCPS_SLABNODE_SLABS, // u_int
|
|
|
|
PROCPS_SLABNODE_ASLABS, // u_int
|
|
|
|
PROCPS_SLABNODE_USE, // u_int
|
|
|
|
PROCPS_SLABNODE_NAME, // str
|
|
|
|
PROCPS_SLABNODE_noop, // n/a
|
|
|
|
PROCPS_SLABNODE_stack_end // n/a
|
2004-01-25 04:03:56 +05:30
|
|
|
};
|
|
|
|
|
2015-07-04 10:29:59 +05:30
|
|
|
struct procps_slabinfo;
|
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slabnode_stack {
|
|
|
|
struct slab_result *head;
|
2004-01-25 04:03:56 +05:30
|
|
|
};
|
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slab_result {
|
|
|
|
int item;
|
2015-07-11 10:30:00 +05:30
|
|
|
union {
|
2015-07-21 10:30:00 +05:30
|
|
|
unsigned int u_int;
|
|
|
|
unsigned long ul_int;
|
2015-07-11 10:30:00 +05:30
|
|
|
char *str;
|
|
|
|
} result;
|
2015-07-04 10:29:59 +05:30
|
|
|
};
|
|
|
|
|
|
|
|
int procps_slabinfo_new (struct procps_slabinfo **info);
|
|
|
|
int procps_slabinfo_read (struct procps_slabinfo *info);
|
|
|
|
|
|
|
|
int procps_slabinfo_ref (struct procps_slabinfo *info);
|
|
|
|
int procps_slabinfo_unref (struct procps_slabinfo **info);
|
|
|
|
|
2015-07-11 10:30:00 +05:30
|
|
|
unsigned long procps_slabs_get (
|
|
|
|
struct procps_slabinfo *info,
|
|
|
|
enum slabs_item item);
|
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
int procps_slabs_getstack (
|
2015-07-11 10:30:00 +05:30
|
|
|
struct procps_slabinfo *info,
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slab_result *these);
|
2015-07-11 10:30:00 +05:30
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
int procps_slabnode_count (struct procps_slabinfo *info);
|
2015-07-11 10:30:00 +05:30
|
|
|
|
|
|
|
const char *procps_slabnode_getname (
|
|
|
|
struct procps_slabinfo *info,
|
|
|
|
int nodeid);
|
|
|
|
|
|
|
|
unsigned long procps_slabnode_get (
|
|
|
|
struct procps_slabinfo *info,
|
|
|
|
enum slabnode_item item,
|
|
|
|
int nodeid);
|
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
int procps_slabnode_getstack (
|
2015-07-11 10:30:00 +05:30
|
|
|
struct procps_slabinfo *info,
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slab_result *these,
|
2015-07-11 10:30:00 +05:30
|
|
|
int nodeid);
|
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
int procps_slabnode_stack_fill (
|
2015-07-11 10:30:00 +05:30
|
|
|
struct procps_slabinfo *info,
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slabnode_stack *stack,
|
2015-07-11 10:30:00 +05:30
|
|
|
int nodeid);
|
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
int procps_slabnode_stacks_fill (
|
2015-07-11 10:30:00 +05:30
|
|
|
struct procps_slabinfo *info,
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slabnode_stack **stacks,
|
|
|
|
int maxstacks);
|
2015-07-11 10:30:00 +05:30
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slabnode_stack *procps_slabnode_stack_alloc (
|
2015-07-11 10:30:00 +05:30
|
|
|
struct procps_slabinfo *info,
|
|
|
|
int maxitems,
|
|
|
|
enum slabnode_item *items);
|
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slabnode_stack **procps_slabnode_stacks_alloc (
|
2015-07-11 10:30:00 +05:30
|
|
|
struct procps_slabinfo *info,
|
2015-07-21 10:30:00 +05:30
|
|
|
int maxstacks,
|
2015-07-11 10:30:00 +05:30
|
|
|
int maxitems,
|
|
|
|
enum slabnode_item *items);
|
|
|
|
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slabnode_stack **procps_slabnode_stacks_sort (
|
2015-07-11 10:30:00 +05:30
|
|
|
struct procps_slabinfo *info,
|
2015-07-21 10:30:00 +05:30
|
|
|
struct slabnode_stack **stacks,
|
|
|
|
int numstacked,
|
2015-07-11 10:30:00 +05:30
|
|
|
enum slabnode_item sort);
|
2015-07-04 10:29:59 +05:30
|
|
|
|
|
|
|
__END_DECLS
|
|
|
|
|
2004-01-25 04:03:56 +05:30
|
|
|
#endif /* _PROC_SLAB_H */
|