Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LIBPROCSTAT(3)		    Library Functions Manual		LIBPROCSTAT(3)

NAME
       procstat_close,	       procstat_freeadvlock,	    procstat_freeargv,
       procstat_freeauxv,	 procstat_freeenvv,	   procstat_freefiles,
       procstat_freegroups,	 procstat_freekstack,	   procstat_freeprocs,
       procstat_freeptlwpinfo,	 procstat_freevmmap,   procstat_get_pipe_info,
       procstat_get_pts_info,	procstat_get_sem_info,	procstat_get_shm_info,
       procstat_get_socket_info, procstat_get_vnode_info, procstat_getadvlock,
       procstat_getargv,	  procstat_getauxv,	     procstat_getenvv,
       procstat_getfiles,	 procstat_getgroups,	   procstat_getkstack,
       procstat_getosrel,	procstat_getpathname,	    procstat_getprocs,
       procstat_getptlwpinfo,	   procstat_getrlimit,	    procstat_getumask,
       procstat_getvmmap,	 procstat_open_core,	    procstat_open_kvm,
       procstat_open_sysctl -- library interface for file and process informa-
       tion retrieval

LIBRARY
       Process and Files Information Retrieval (libprocstat, -lprocstat)

SYNOPSIS
       #include	<sys/param.h>
       #include	<sys/queue.h>
       #include	<sys/socket.h>
       #include	<libprocstat.h>

       void
       procstat_close(struct procstat *procstat);

       void
       procstat_freeadvlock(struct	       procstat		    *procstat,
	   struct advlock_list *list);

       void
       procstat_freeargv(struct	procstat *procstat);

       void
       procstat_freeauxv(struct	procstat *procstat, Elf_Auxinfo	*auxv);

       void
       procstat_freeenvv(struct	procstat *procstat);

       void
       procstat_freefiles(struct procstat *procstat,
	   struct filestat_list	*head);

       void
       procstat_freegroups(struct procstat *procstat, gid_t *groups);

       void
       procstat_freekstack(struct procstat *procstat,
	   struct kinfo_kstack *kkstp);

       void
       procstat_freeprocs(struct procstat *procstat, struct kinfo_proc *p);

       void
       procstat_freevmmap(struct procstat *procstat,
	   struct kinfo_vmentry	*vmmap);

       void
       procstat_freeptlwpinfo(struct procstat *procstat,
	   struct ptrace_lwpinfo *pl);

       int
       procstat_get_pipe_info(struct procstat *procstat, struct	filestat *fst,
	   struct pipestat *pipe, char *errbuf);

       int
       procstat_get_pts_info(struct procstat *procstat,	 struct	filestat *fst,
	   struct ptsstat *pts,	char *errbuf);

       int
       procstat_get_sem_info(struct procstat *procstat,	 struct	filestat *fst,
	   struct semstat *sem,	char *errbuf);

       int
       procstat_get_shm_info(struct procstat *procstat,	 struct	filestat *fst,
	   struct shmstat *shm,	char *errbuf);

       int
       procstat_get_socket_info(struct procstat	*procstat,
	   struct filestat *fst, struct	sockstat *sock,	char *errbuf);

       int
       procstat_get_vnode_info(struct procstat *procstat,
	   struct filestat *fst, struct	vnstat *vn, char *errbuf);

       struct advlock_list *
       procstat_getadvlock(struct procstat *procstat);

       char **
       procstat_getargv(struct procstat	*procstat,
	   const struct	kinfo_proc *kp,	size_t nchr);

       Elf_Auxinfo *
       procstat_getauxv(struct procstat	*procstat,	struct kinfo_proc *kp,
	   unsigned int	*count);

       char **
       procstat_getenvv(struct procstat	*procstat,
	   const struct	kinfo_proc *kp,	size_t nchr);

       struct filestat_list *
       procstat_getfiles(struct	procstat *procstat,	struct kinfo_proc *kp,
	   int mmapped);

       gid_t *
       procstat_getgroups(struct procstat *procstat,	struct kinfo_proc *kp,
	   unsigned int	*count);

       struct kinfo_kstack *
       procstat_getkstack(struct procstat *procstat,	struct kinfo_proc *kp,
	   unsigned int	*count);

       int
       procstat_getosrel(struct	procstat *procstat,	struct kinfo_proc *kp,
	   int *osrelp);

       int
       procstat_getpathname(struct procstat *procstat,	struct kinfo_proc *kp,
	   char	*pathname, size_t maxlen);

       struct kinfo_proc *
       procstat_getprocs(struct	procstat *procstat,	int what,     int arg,
	   unsigned int	*count);

       struct ptrace_lwpinfo *
       procstat_getptlwpinfo(struct procstat *procstat,	unsigned int *count);

       int
       procstat_getrlimit(struct procstat *procstat,	struct kinfo_proc *kp,
	   int which, struct rlimit* rlimit);

       int
       procstat_getumask(struct	procstat *procstat,	struct kinfo_proc *kp,
	   unsigned short *maskp);

       struct kinfo_vmentry *
       procstat_getvmmap(struct	procstat *procstat,	struct kinfo_proc *kp,
	   unsigned int	*count);

       struct procstat *
       procstat_open_core(const	char *filename);

       struct procstat *
       procstat_open_kvm(const char *nlistf, const char	*memf);

       struct procstat *
       procstat_open_sysctl(void);

DESCRIPTION
       The  libprocstat	 library contains the API for runtime file and process
       information retrieval from the running kernel via the sysctl(3) library
       backend,	and for	post-mortem analysis via the kvm(3)  library  backend,
       or  from	 the process core(5) file, searching for statistics in special
       elf(3) note sections.

       The procstat_open_kvm() and procstat_open_sysctl()  functions  use  the
       kvm(3)  or  sysctl(3)  library routines,	respectively, to access	kernel
       state information used to retrieve processes  and  files	 states.   The
       procstat_open_core()  uses  elf(3) routines to access statistics	stored
       as a set	of notes in a process core(5) file, written by the  kernel  at
       the  moment of the process abnormal termination.	 The filename argument
       is the process core file	name.  The nlistf argument is  the  executable
       image of	the kernel being examined.  If this argument is	NULL, the cur-
       rently running kernel is	assumed.  The memf argument is the kernel mem-
       ory  device  file.  If this argument is NULL, then /dev/mem is assumed.
       See kvm_open(3) for more	details.  The functions	 dynamically  allocate
       and  return  a  procstat	 structure  pointer  used  in  the rest	of the
       libprocstat library routines until the  corresponding  procstat_close()
       call  that  cleans  up the resources allocated by the procstat_open_*()
       functions.

       The procstat_getprocs() function	gets a pointer to the procstat	struc-
       ture  from one of the procstat_open_*() functions and returns a dynami-
       cally allocated (sub-)set of active processes in	the kernel  filled  in
       to  array of kinfo_proc structures.  The	what and arg arguments consti-
       tute a filtering	predicate as described in  the	kvm_getprocs(3)	 func-
       tion.  The number of processes found is returned	in the reference para-
       meter cnt.  The caller is responsible to	free the allocated memory with
       a subsequent procstat_freeprocs() function call.

       The  procstat_getptlwpinfo()  function  gets  a pointer to the procstat
       structure from the procstat_open_core() function	and returns a  dynami-
       cally  allocated	 set  of  signals  intercepted	by  a  process	in the
       process's core file.  The number	of processes found is returned in  the
       reference  parameter  cnt.  The caller is responsible to	free the allo-
       cated memory with a subsequent procstat_freeptlwpinfo() function	call.

       The procstat_getargv() function gets a pointer to the  procstat	struc-
       ture  from  one	of  the	 procstat_open_*()  functions,	a  pointer  to
       kinfo_proc   structure	from   the    array    obtained	   from	   the
       procstat_getprocs()  function,  and  returns a null-terminated argument
       vector that corresponds to the command line  arguments  passed  to  the
       process.	 The nchr argument indicates the maximum number	of characters,
       including  null	bytes, to use in building the strings.	If this	amount
       is exceeded, the	string causing the overflow is truncated and the  par-
       tial  result is returned.  This is handy	for programs that print	only a
       one line	summary	of a command and should	not copy out large amounts  of
       text  only  to ignore it.  If nchr is zero, no limit is imposed and all
       argument	strings	are returned.  The values  of  the  returned  argument
       vector  refer  the  strings  stored in the procstat internal buffer.  A
       subsequent call of the function with the	same  procstat	argument  will
       reuse  the  buffer.   To	 free the allocated memory procstat_freeargv()
       function	call can be used, or it	will be	released on procstat_close().

       The procstat_getenvv() function is similar  to  procstat_getargv()  but
       returns the vector of environment strings.  The caller may free the al-
       located memory with a subsequent	procstat_freeenvv() function call.

       The  procstat_getauxv()	function gets a	pointer	to the procstat	struc-
       ture, a pointer to kinfo_proc structure,	and returns the	auxiliary vec-
       tor as a	dynamically allocated  array  of  Elf_Auxinfo  elements.   The
       caller  is  responsible	to free	the allocated memory with a subsequent
       procstat_freeauxv() function call.

       The procstat_getfiles() function	gets a pointer to the procstat	struc-
       ture initialized	with one of the	procstat_open_*() functions, a pointer
       to   kinfo_proc	 structure   from   the	  array	  obtained   from  the
       procstat_getprocs()  function,  and  returns  a	dynamically  allocated
       linked  list  of	 filled	 in  filestat_list structures using the	STAILQ
       macros defined in queue(3).  The	caller is responsible to free the  al-
       located memory with a subsequent	procstat_freefiles() function call.

       The procstat_getgroups()	function gets a	pointer	to the procstat	struc-
       ture, a pointer to kinfo_proc structure,	and returns the	process	groups
       as  a dynamically allocated array of gid_t elements.  The caller	is re-
       sponsible  to   free   the   allocated	memory	 with	a   subsequent
       procstat_freegroups() function call.

       The procstat_getkstack()	function gets a	pointer	to the procstat	struc-
       ture initialized	with one of the	procstat_open_*() functions, a pointer
       to  kinfo_proc structure, and returns kernel stacks of the process as a
       dynamically allocated array of kinfo_kstack structures.	The caller  is
       responsible   to	  free	 the   allocated   memory  with	 a  subsequent
       procstat_freekstack() function call.

       The procstat_getosrel() function	gets a pointer to the procstat	struc-
       ture,  a	pointer	to kinfo_proc structure, and returns osrel date	in the
       3rd reference parameter.

       The procstat_getpathname() function gets	 a  pointer  to	 the  procstat
       structure,  a  pointer  to kinfo_proc structure,	and copies the path of
       the process executable to pathname buffer, limiting to  maxlen  charac-
       ters.

       The procstat_getrlimit()	function gets a	pointer	to the procstat	struc-
       ture,  a	pointer	to kinfo_proc structure, resource index	which, and re-
       turns the actual	resource limit in the 4th reference parameter.

       The procstat_getumask() function	gets a pointer to the procstat	struc-
       ture,  a	pointer	to kinfo_proc structure, and returns the process umask
       in the 3rd reference parameter.

       The procstat_getvmmap() function	gets a pointer to the procstat	struc-
       ture initialized	with one of the	procstat_open_*() functions, a pointer
       to  kinfo_proc structure, and returns VM	layout of the process as a dy-
       namically allocated array of kinfo_vmentry structures.  The  caller  is
       responsible   to	  free	 the   allocated   memory  with	 a  subsequent
       procstat_freevmmap() function call.

       The procstat_getadvlock() function returns a dynamically	allocated list
       of struct advlock structures, providing a snapshot of the currently ac-
       quired advisory locks in	the system.  Both  locally  acquired  POSIX  (
       fcntl(2))  and  BSD-style  (  flock(2))	locks are reported, as well as
       locks established by remote file	 system	 protocols.   For  each	 lock,
       unique  identifiers for the locked file and its mount point are guaran-
       teed to be provided.  If	a path for  the	 locked	 file  can  be	recon-
       structed, it is provided	as well.  The returned list must be freed with
       the procstat_freeadvlock() function.

       The	    procstat_get_pipe_info(),	      procstat_get_pts_info(),
       procstat_get_sem_info(),			      procstat_get_shm_info(),
       procstat_get_socket_info()  and procstat_get_vnode_info() functions are
       used to retrieve	information about pipes, pseudo-terminals, semaphores,
       shared memory objects, sockets, and vnodes, respectively.  Each of them
       have a similar interface	API.  The procstat argument is a  pointer  ob-
       tained from one of procstat_open_*() functions.	The filestat fst argu-
       ment  is	 an  element  of  STAILQ  linked  list	as  obtained  from the
       procstat_getfiles()  function.	The  filestat  structure  contains   a
       fs_type	field  that specifies a	file type and a	corresponding function
       to be called among the procstat_get_*_info function family.  The	actual
       object is returned in the 3rd reference parameter.  The errbuf argument
       indicates an actual error message in case of failure.

	     PS_FST_TYPE_FIFO	   procstat_get_vnode_info
	     PS_FST_TYPE_VNODE	   procstat_get_vnode_info
	     PS_FST_TYPE_SOCKET	   procstat_get_socket_info
	     PS_FST_TYPE_PIPE	   procstat_get_pipe_info
	     PS_FST_TYPE_PTS	   procstat_get_pts_info
	     PS_FST_TYPE_SEM	   procstat_get_sem_info
	     PS_FST_TYPE_SHM	   procstat_get_shm_info

SEE ALSO
       fstat(1), fuser(1), pipe(2), shm_open(2),  socket(2),  elf(3),  kvm(3),
       queue(3), sem_open(3), sysctl(3), pts(4), core(5), vnode(9)

HISTORY
       The libprocstat library appeared	in FreeBSD 9.0.

AUTHORS
       The    libprocstat    library	was   written	by   Stanislav	 Sedov
       <stas@FreeBSD.org>.

       This manual page	was written by Sergey Kandaurov	<pluknet@FreeBSD.org>.

FreeBSD	13.2			 April 3, 2022			LIBPROCSTAT(3)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=procstat_getargv&sektion=3&manpath=FreeBSD+14.2-RELEASE+and+Ports>

home | help