Blame lib/lib.c

Packit d37888
/* lib.c */
Packit d37888
/* This is a generated file.  Please modify `lib.pl' */
Packit d37888
Packit d37888
#include <config.h>
Packit d37888
Packit d37888
#include <glibtop.h>
Packit d37888
#include <glibtop/error.h>
Packit d37888
#include <glibtop/open.h>
Packit d37888
Packit d37888
#include <glibtop/sysdeps.h>
Packit d37888
#include <glibtop/union.h>
Packit d37888
#include <glib/gi18n-lib.h>
Packit d37888
Packit d37888
#include <glibtop/command.h>
Packit d37888
Packit d37888
/* Some required fields are missing. */
Packit d37888
Packit d37888
static void
Packit d37888
_glibtop_missing_feature (glibtop *server, const char *feature,
Packit d37888
			  const guint64 present, guint64 *required)
Packit d37888
{
Packit d37888
	guint64 old_required = *required;
Packit d37888
Packit d37888
	/* Return if we have all required fields. */
Packit d37888
	if ((~present & old_required) == 0)
Packit d37888
		return;
Packit d37888
Packit d37888
	switch (server->error_method) {
Packit d37888
	case GLIBTOP_ERROR_METHOD_WARN_ONCE:
Packit d37888
		*required &= present;
Packit d37888
	case GLIBTOP_ERROR_METHOD_WARN:
Packit d37888
		glibtop_warn_r (server,
Packit d37888
				_("glibtop_get_%s (): Client requested "
Packit d37888
				  "field mask %05lx, but only have %05lx."),
Packit d37888
				 feature, (unsigned long) old_required,
Packit d37888
				 (unsigned long) present);
Packit d37888
		break;
Packit d37888
	case GLIBTOP_ERROR_METHOD_ABORT:
Packit d37888
		glibtop_error_r (server,
Packit d37888
				 _("glibtop_get_%s (): Client requested "
Packit d37888
				  "field mask %05lx, but only have %05lx."),
Packit d37888
				 feature, (unsigned long) old_required,
Packit d37888
				 (unsigned long) present);
Packit d37888
		break;
Packit d37888
	}
Packit d37888
}
Packit d37888
Packit d37888
/* Library functions. */
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_CPU), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_CPU)))
Packit d37888
	{
Packit d37888
		const void *send_ptr = NULL;
Packit d37888
		const size_t send_size = 0;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_CPU,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_cpu), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_CPU)
Packit d37888
		glibtop_get_cpu_s (server, buf);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_cpu");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.cpu)
Packit d37888
		_glibtop_missing_feature (server, "cpu", buf->flags,
Packit d37888
					  &server->required.cpu);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_mem_l (glibtop *server, glibtop_mem *buf)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_MEM), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_MEM)))
Packit d37888
	{
Packit d37888
		const void *send_ptr = NULL;
Packit d37888
		const size_t send_size = 0;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_MEM,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_mem), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_MEM)
Packit d37888
		glibtop_get_mem_s (server, buf);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_mem");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.mem)
Packit d37888
		_glibtop_missing_feature (server, "mem", buf->flags,
Packit d37888
					  &server->required.mem);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_swap_l (glibtop *server, glibtop_swap *buf)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_SWAP), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_SWAP)))
Packit d37888
	{
Packit d37888
		const void *send_ptr = NULL;
Packit d37888
		const size_t send_size = 0;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_SWAP,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_swap), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_SWAP)
Packit d37888
		glibtop_get_swap_s (server, buf);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_swap");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.swap)
Packit d37888
		_glibtop_missing_feature (server, "swap", buf->flags,
Packit d37888
					  &server->required.swap);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_uptime_l (glibtop *server, glibtop_uptime *buf)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_UPTIME), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_UPTIME)))
Packit d37888
	{
Packit d37888
		const void *send_ptr = NULL;
Packit d37888
		const size_t send_size = 0;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_UPTIME,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_uptime), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_UPTIME)
Packit d37888
		glibtop_get_uptime_s (server, buf);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_uptime");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.uptime)
Packit d37888
		_glibtop_missing_feature (server, "uptime", buf->flags,
Packit d37888
					  &server->required.uptime);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_LOADAVG), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_LOADAVG)))
Packit d37888
	{
Packit d37888
		const void *send_ptr = NULL;
Packit d37888
		const size_t send_size = 0;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_LOADAVG,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_loadavg), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_LOADAVG)
Packit d37888
		glibtop_get_loadavg_s (server, buf);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_loadavg");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.loadavg)
Packit d37888
		_glibtop_missing_feature (server, "loadavg", buf->flags,
Packit d37888
					  &server->required.loadavg);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_shm_limits_l (glibtop *server, glibtop_shm_limits *buf)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_SHM_LIMITS), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_SHM_LIMITS)))
Packit d37888
	{
Packit d37888
		const void *send_ptr = NULL;
Packit d37888
		const size_t send_size = 0;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_SHM_LIMITS,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_shm_limits), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_SHM_LIMITS)
Packit d37888
		glibtop_get_shm_limits_s (server, buf);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_shm_limits");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.shm_limits)
Packit d37888
		_glibtop_missing_feature (server, "shm_limits", buf->flags,
Packit d37888
					  &server->required.shm_limits);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_msg_limits_l (glibtop *server, glibtop_msg_limits *buf)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_MSG_LIMITS), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_MSG_LIMITS)))
Packit d37888
	{
Packit d37888
		const void *send_ptr = NULL;
Packit d37888
		const size_t send_size = 0;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_MSG_LIMITS,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_msg_limits), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_MSG_LIMITS)
Packit d37888
		glibtop_get_msg_limits_s (server, buf);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_msg_limits");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.msg_limits)
Packit d37888
		_glibtop_missing_feature (server, "msg_limits", buf->flags,
Packit d37888
					  &server->required.msg_limits);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_sem_limits_l (glibtop *server, glibtop_sem_limits *buf)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_SEM_LIMITS), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_SEM_LIMITS)))
Packit d37888
	{
Packit d37888
		const void *send_ptr = NULL;
Packit d37888
		const size_t send_size = 0;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_SEM_LIMITS,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_sem_limits), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_SEM_LIMITS)
Packit d37888
		glibtop_get_sem_limits_s (server, buf);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_sem_limits");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.sem_limits)
Packit d37888
		_glibtop_missing_feature (server, "sem_limits", buf->flags,
Packit d37888
					  &server->required.sem_limits);
Packit d37888
}
Packit d37888
Packit d37888
pid_t*
Packit d37888
glibtop_get_proclist_l (glibtop *server, glibtop_proclist *buf,
Packit d37888
                        gint64 which, gint64 arg)
Packit d37888
{
Packit d37888
	pid_t* retval = (pid_t*) 0;
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROCLIST), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROCLIST)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			gint64 buf_which;
Packit d37888
			gint64 buf_arg;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_which = which;
Packit d37888
		param_buf.buf_arg = arg;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		retval = glibtop_call_l (server, GLIBTOP_CMND_PROCLIST,
Packit d37888
				         send_size, send_ptr,
Packit d37888
				         sizeof (glibtop_proclist), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROCLIST)
Packit d37888
		retval = glibtop_get_proclist_s (server, buf, which, arg);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proclist");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proclist)
Packit d37888
		_glibtop_missing_feature (server, "proclist", buf->flags,
Packit d37888
					  &server->required.proclist);
Packit d37888
Packit d37888
	/* Now we can return. */
Packit d37888
Packit d37888
	return retval;
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_proc_state_l (glibtop *server, glibtop_proc_state *buf,
Packit d37888
                          pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_STATE), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_STATE)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_PROC_STATE,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_proc_state), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_STATE)
Packit d37888
		glibtop_get_proc_state_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_state");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_state)
Packit d37888
		_glibtop_missing_feature (server, "proc_state", buf->flags,
Packit d37888
					  &server->required.proc_state);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_proc_uid_l (glibtop *server, glibtop_proc_uid *buf,
Packit d37888
                        pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_UID), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_UID)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_PROC_UID,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_proc_uid), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_UID)
Packit d37888
		glibtop_get_proc_uid_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_uid");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_uid)
Packit d37888
		_glibtop_missing_feature (server, "proc_uid", buf->flags,
Packit d37888
					  &server->required.proc_uid);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_proc_mem_l (glibtop *server, glibtop_proc_mem *buf,
Packit d37888
                        pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_MEM), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_MEM)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_PROC_MEM,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_proc_mem), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_MEM)
Packit d37888
		glibtop_get_proc_mem_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_mem");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_mem)
Packit d37888
		_glibtop_missing_feature (server, "proc_mem", buf->flags,
Packit d37888
					  &server->required.proc_mem);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_proc_time_l (glibtop *server, glibtop_proc_time *buf,
Packit d37888
                         pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_TIME), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_TIME)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_PROC_TIME,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_proc_time), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_TIME)
Packit d37888
		glibtop_get_proc_time_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_time");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_time)
Packit d37888
		_glibtop_missing_feature (server, "proc_time", buf->flags,
Packit d37888
					  &server->required.proc_time);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_proc_signal_l (glibtop *server, glibtop_proc_signal *buf,
Packit d37888
                           pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_SIGNAL), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_SIGNAL)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_PROC_SIGNAL,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_proc_signal), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_SIGNAL)
Packit d37888
		glibtop_get_proc_signal_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_signal");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_signal)
Packit d37888
		_glibtop_missing_feature (server, "proc_signal", buf->flags,
Packit d37888
					  &server->required.proc_signal);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_proc_kernel_l (glibtop *server, glibtop_proc_kernel *buf,
Packit d37888
                           pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_KERNEL), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_KERNEL)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_PROC_KERNEL,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_proc_kernel), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_KERNEL)
Packit d37888
		glibtop_get_proc_kernel_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_kernel");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_kernel)
Packit d37888
		_glibtop_missing_feature (server, "proc_kernel", buf->flags,
Packit d37888
					  &server->required.proc_kernel);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_proc_segment_l (glibtop *server, glibtop_proc_segment *buf,
Packit d37888
                            pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_SEGMENT), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_SEGMENT)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_PROC_SEGMENT,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_proc_segment), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_SEGMENT)
Packit d37888
		glibtop_get_proc_segment_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_segment");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_segment)
Packit d37888
		_glibtop_missing_feature (server, "proc_segment", buf->flags,
Packit d37888
					  &server->required.proc_segment);
Packit d37888
}
Packit d37888
Packit d37888
char *
Packit d37888
glibtop_get_proc_args_l (glibtop *server, glibtop_proc_args *buf,
Packit d37888
                         pid_t pid, unsigned max_len)
Packit d37888
{
Packit d37888
	char * retval = (char *) 0;
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_ARGS), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_ARGS)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
			unsigned buf_max_len;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
		param_buf.buf_max_len = max_len;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		retval = glibtop_call_l (server, GLIBTOP_CMND_PROC_ARGS,
Packit d37888
				         send_size, send_ptr,
Packit d37888
				         sizeof (glibtop_proc_args), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_ARGS)
Packit d37888
		retval = glibtop_get_proc_args_s (server, buf, pid, max_len);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_args");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_args)
Packit d37888
		_glibtop_missing_feature (server, "proc_args", buf->flags,
Packit d37888
					  &server->required.proc_args);
Packit d37888
Packit d37888
	/* Now we can return. */
Packit d37888
Packit d37888
	return retval;
Packit d37888
}
Packit d37888
Packit d37888
glibtop_map_entry *
Packit d37888
glibtop_get_proc_map_l (glibtop *server, glibtop_proc_map *buf,
Packit d37888
                        pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_map_entry * retval = (glibtop_map_entry *) 0;
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_MAP), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_MAP)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		retval = glibtop_call_l (server, GLIBTOP_CMND_PROC_MAP,
Packit d37888
				         send_size, send_ptr,
Packit d37888
				         sizeof (glibtop_proc_map), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_MAP)
Packit d37888
		retval = glibtop_get_proc_map_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_map");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_map)
Packit d37888
		_glibtop_missing_feature (server, "proc_map", buf->flags,
Packit d37888
					  &server->required.proc_map);
Packit d37888
Packit d37888
	/* Now we can return. */
Packit d37888
Packit d37888
	return retval;
Packit d37888
}
Packit d37888
Packit d37888
glibtop_open_files_entry *
Packit d37888
glibtop_get_proc_open_files_l (glibtop *server, glibtop_proc_open_files *buf,
Packit d37888
                               pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_open_files_entry * retval = (glibtop_open_files_entry *) 0;
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_OPEN_FILES), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_OPEN_FILES)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		retval = glibtop_call_l (server, GLIBTOP_CMND_PROC_OPEN_FILES,
Packit d37888
				         send_size, send_ptr,
Packit d37888
				         sizeof (glibtop_proc_open_files), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_OPEN_FILES)
Packit d37888
		retval = glibtop_get_proc_open_files_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_open_files");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_open_files)
Packit d37888
		_glibtop_missing_feature (server, "proc_open_files", buf->flags,
Packit d37888
					  &server->required.proc_open_files);
Packit d37888
Packit d37888
	/* Now we can return. */
Packit d37888
Packit d37888
	return retval;
Packit d37888
}
Packit d37888
Packit d37888
glibtop_mountentry *
Packit d37888
glibtop_get_mountlist_l (glibtop *server, glibtop_mountlist *buf,
Packit d37888
                         int all_fs)
Packit d37888
{
Packit d37888
	glibtop_mountentry * retval = (glibtop_mountentry *) 0;
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_MOUNTLIST), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_MOUNTLIST)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			int buf_all_fs;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_all_fs = all_fs;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		retval = glibtop_call_l (server, GLIBTOP_CMND_MOUNTLIST,
Packit d37888
				         send_size, send_ptr,
Packit d37888
				         sizeof (glibtop_mountlist), buf);
Packit d37888
	} else {
Packit d37888
		retval = glibtop_get_mountlist_s (server, buf, all_fs);
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.mountlist)
Packit d37888
		_glibtop_missing_feature (server, "mountlist", buf->flags,
Packit d37888
					  &server->required.mountlist);
Packit d37888
Packit d37888
	/* Now we can return. */
Packit d37888
Packit d37888
	return retval;
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_fsusage_l (glibtop *server, glibtop_fsusage *buf,
Packit d37888
                       const char *mount_dir)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_FSUSAGE), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_FSUSAGE)))
Packit d37888
	{
Packit d37888
Packit d37888
	const void *send_ptr = mount_dir;
Packit d37888
Packit d37888
	const size_t send_size =
Packit d37888
		strlen (mount_dir) + 1;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_FSUSAGE,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_fsusage), buf);
Packit d37888
	} else {
Packit d37888
		glibtop_get_fsusage_s (server, buf, mount_dir);
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.fsusage)
Packit d37888
		_glibtop_missing_feature (server, "fsusage", buf->flags,
Packit d37888
					  &server->required.fsusage);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_netload_l (glibtop *server, glibtop_netload *buf,
Packit d37888
                       const char *interface)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_NETLOAD), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_NETLOAD)))
Packit d37888
	{
Packit d37888
Packit d37888
	const void *send_ptr = interface;
Packit d37888
Packit d37888
	const size_t send_size =
Packit d37888
		strlen (interface) + 1;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_NETLOAD,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_netload), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_NETLOAD)
Packit d37888
		glibtop_get_netload_s (server, buf, interface);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_netload");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.netload)
Packit d37888
		_glibtop_missing_feature (server, "netload", buf->flags,
Packit d37888
					  &server->required.netload);
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_ppp_l (glibtop *server, glibtop_ppp *buf,
Packit d37888
                   unsigned short device)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PPP), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PPP)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			unsigned short buf_device;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_device = device;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_PPP,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_ppp), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PPP)
Packit d37888
		glibtop_get_ppp_s (server, buf, device);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_ppp");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.ppp)
Packit d37888
		_glibtop_missing_feature (server, "ppp", buf->flags,
Packit d37888
					  &server->required.ppp);
Packit d37888
}
Packit d37888
Packit d37888
char **
Packit d37888
glibtop_get_netlist_l (glibtop *server, glibtop_netlist *buf)
Packit d37888
{
Packit d37888
	char ** retval = (char **) 0;
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_NETLIST), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_NETLIST)))
Packit d37888
	{
Packit d37888
		const void *send_ptr = NULL;
Packit d37888
		const size_t send_size = 0;
Packit d37888
Packit d37888
		retval = glibtop_call_l (server, GLIBTOP_CMND_NETLIST,
Packit d37888
				         send_size, send_ptr,
Packit d37888
				         sizeof (glibtop_netlist), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_NETLIST)
Packit d37888
		retval = glibtop_get_netlist_s (server, buf);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_netlist");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.netlist)
Packit d37888
		_glibtop_missing_feature (server, "netlist", buf->flags,
Packit d37888
					  &server->required.netlist);
Packit d37888
Packit d37888
	/* Now we can return. */
Packit d37888
Packit d37888
	return retval;
Packit d37888
}
Packit d37888
Packit d37888
char **
Packit d37888
glibtop_get_proc_wd_l (glibtop *server, glibtop_proc_wd *buf,
Packit d37888
                       pid_t pid)
Packit d37888
{
Packit d37888
	char ** retval = (char **) 0;
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_WD), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_WD)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		retval = glibtop_call_l (server, GLIBTOP_CMND_PROC_WD,
Packit d37888
				         send_size, send_ptr,
Packit d37888
				         sizeof (glibtop_proc_wd), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_WD)
Packit d37888
		retval = glibtop_get_proc_wd_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_wd");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_wd)
Packit d37888
		_glibtop_missing_feature (server, "proc_wd", buf->flags,
Packit d37888
					  &server->required.proc_wd);
Packit d37888
Packit d37888
	/* Now we can return. */
Packit d37888
Packit d37888
	return retval;
Packit d37888
}
Packit d37888
Packit d37888
guint16*
Packit d37888
glibtop_get_proc_affinity_l (glibtop *server, glibtop_proc_affinity *buf,
Packit d37888
                             pid_t pid)
Packit d37888
{
Packit d37888
	guint16* retval = (guint16*) 0;
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_AFFINITY), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_AFFINITY)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		retval = glibtop_call_l (server, GLIBTOP_CMND_PROC_AFFINITY,
Packit d37888
				         send_size, send_ptr,
Packit d37888
				         sizeof (glibtop_proc_affinity), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_AFFINITY)
Packit d37888
		retval = glibtop_get_proc_affinity_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_affinity");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_affinity)
Packit d37888
		_glibtop_missing_feature (server, "proc_affinity", buf->flags,
Packit d37888
					  &server->required.proc_affinity);
Packit d37888
Packit d37888
	/* Now we can return. */
Packit d37888
Packit d37888
	return retval;
Packit d37888
}
Packit d37888
Packit d37888
void
Packit d37888
glibtop_get_proc_io_l (glibtop *server, glibtop_proc_io *buf,
Packit d37888
                       pid_t pid)
Packit d37888
{
Packit d37888
	glibtop_init_r (&server, (1 << GLIBTOP_SYSDEPS_PROC_IO), 0);
Packit d37888
Packit d37888
	/* If neccessary, we ask the server for the requested
Packit d37888
	 * feature. If not, we call the sysdeps function. */
Packit d37888
Packit d37888
	if ((server->flags & _GLIBTOP_INIT_STATE_SERVER) &&
Packit d37888
	    (server->features & (1 << GLIBTOP_SYSDEPS_PROC_IO)))
Packit d37888
	{
Packit d37888
		struct {
Packit d37888
			pid_t buf_pid;
Packit d37888
		} param_buf;
Packit d37888
Packit d37888
		param_buf.buf_pid = pid;
Packit d37888
Packit d37888
		const void *send_ptr = &param_buf;
Packit d37888
		const size_t send_size = sizeof param_buf;
Packit d37888
Packit d37888
		glibtop_call_l (server, GLIBTOP_CMND_PROC_IO,
Packit d37888
				send_size, send_ptr,
Packit d37888
				sizeof (glibtop_proc_io), buf);
Packit d37888
	} else {
Packit d37888
#if (!GLIBTOP_SUID_PROC_IO)
Packit d37888
		glibtop_get_proc_io_s (server, buf, pid);
Packit d37888
#else
Packit d37888
		errno = ENOSYS;
Packit d37888
		glibtop_error_io_r (server, "glibtop_get_proc_io");
Packit d37888
#endif
Packit d37888
	}
Packit d37888
Packit d37888
	/* Make sure that all required fields are present. */
Packit d37888
Packit d37888
	if (buf->flags & server->required.proc_io)
Packit d37888
		_glibtop_missing_feature (server, "proc_io", buf->flags,
Packit d37888
					  &server->required.proc_io);
Packit d37888
}
Packit d37888