*** empty log message ***
This commit is contained in:
@@ -309,12 +309,16 @@ main (int argc, char *argv [])
|
|||||||
glibtop_get_proc_signal (&data.proc_signal, pid);
|
glibtop_get_proc_signal (&data.proc_signal, pid);
|
||||||
|
|
||||||
printf ("Proc_Signal PID %5d (0x%08lx): "
|
printf ("Proc_Signal PID %5d (0x%08lx): "
|
||||||
"%lu %lu %lu %lu\n", (int) pid,
|
"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
|
||||||
(unsigned long) data.proc_signal.flags,
|
(unsigned long) data.proc_signal.flags,
|
||||||
(unsigned long) data.proc_signal.signal,
|
(unsigned long) data.proc_signal.signal [0],
|
||||||
(unsigned long) data.proc_signal.blocked,
|
(unsigned long) data.proc_signal.signal [1],
|
||||||
(unsigned long) data.proc_signal.sigignore,
|
(unsigned long) data.proc_signal.blocked [0],
|
||||||
(unsigned long) data.proc_signal.sigcatch);
|
(unsigned long) data.proc_signal.blocked [1],
|
||||||
|
(unsigned long) data.proc_signal.sigignore [0],
|
||||||
|
(unsigned long) data.proc_signal.sigignore [1],
|
||||||
|
(unsigned long) data.proc_signal.sigcatch [0],
|
||||||
|
(unsigned long) data.proc_signal.sigcatch [1]);
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||||
@@ -419,12 +423,17 @@ main (int argc, char *argv [])
|
|||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
glibtop_get_proc_signal (&data.proc_signal, ppid);
|
glibtop_get_proc_signal (&data.proc_signal, ppid);
|
||||||
|
|
||||||
printf ("Proc_Signal PPID %5d (0x%08lx): %lu %lu %lu %lu\n",
|
printf ("Proc_Signal PPID %5d (0x%08lx): "
|
||||||
|
"%lx %lx %lx %lx %lx %lx %lx %lx\n",
|
||||||
(int) ppid, (unsigned long) data.proc_signal.flags,
|
(int) ppid, (unsigned long) data.proc_signal.flags,
|
||||||
(unsigned long) data.proc_signal.signal,
|
(unsigned long) data.proc_signal.signal [0],
|
||||||
(unsigned long) data.proc_signal.blocked,
|
(unsigned long) data.proc_signal.signal [1],
|
||||||
(unsigned long) data.proc_signal.sigignore,
|
(unsigned long) data.proc_signal.blocked [0],
|
||||||
(unsigned long) data.proc_signal.sigcatch);
|
(unsigned long) data.proc_signal.blocked [1],
|
||||||
|
(unsigned long) data.proc_signal.sigignore [0],
|
||||||
|
(unsigned long) data.proc_signal.sigignore [1],
|
||||||
|
(unsigned long) data.proc_signal.sigcatch [0],
|
||||||
|
(unsigned long) data.proc_signal.sigcatch [1]);
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
|
glibtop_get_proc_kernel (&data.proc_kernel, ppid);
|
||||||
@@ -530,12 +539,16 @@ main (int argc, char *argv [])
|
|||||||
glibtop_get_proc_signal (&data.proc_signal, 1);
|
glibtop_get_proc_signal (&data.proc_signal, 1);
|
||||||
|
|
||||||
printf ("Proc_Signal INIT %5d (0x%08lx): "
|
printf ("Proc_Signal INIT %5d (0x%08lx): "
|
||||||
"%lu %lu %lu %lu\n", 1,
|
"%lx %lx %lx %lx %lx %lx %lx %lx\n", 1,
|
||||||
(unsigned long) data.proc_signal.flags,
|
(unsigned long) data.proc_signal.flags,
|
||||||
(unsigned long) data.proc_signal.signal,
|
(unsigned long) data.proc_signal.signal [0],
|
||||||
(unsigned long) data.proc_signal.blocked,
|
(unsigned long) data.proc_signal.signal [1],
|
||||||
(unsigned long) data.proc_signal.sigignore,
|
(unsigned long) data.proc_signal.blocked [0],
|
||||||
(unsigned long) data.proc_signal.sigcatch);
|
(unsigned long) data.proc_signal.blocked [1],
|
||||||
|
(unsigned long) data.proc_signal.sigignore [0],
|
||||||
|
(unsigned long) data.proc_signal.sigignore [1],
|
||||||
|
(unsigned long) data.proc_signal.sigcatch [0],
|
||||||
|
(unsigned long) data.proc_signal.sigcatch [1]);
|
||||||
|
|
||||||
for (c = 0; c < PROFILE_COUNT; c++)
|
for (c = 0; c < PROFILE_COUNT; c++)
|
||||||
glibtop_get_proc_kernel (&data.proc_kernel, 1);
|
glibtop_get_proc_kernel (&data.proc_kernel, 1);
|
||||||
|
@@ -116,12 +116,16 @@ output (pid_t pid)
|
|||||||
glibtop_get_proc_signal (&data.proc_signal, pid);
|
glibtop_get_proc_signal (&data.proc_signal, pid);
|
||||||
|
|
||||||
printf ("Proc_Signal PID %5d (0x%08lx): "
|
printf ("Proc_Signal PID %5d (0x%08lx): "
|
||||||
"%lu %lu %lu %lu\n", (int) pid,
|
"%lx %lx %lx %lx %lx %lx %lx %lx\n", (int) pid,
|
||||||
(unsigned long) data.proc_signal.flags,
|
(unsigned long) data.proc_signal.flags,
|
||||||
(unsigned long) data.proc_signal.signal,
|
(unsigned long) data.proc_signal.signal [0],
|
||||||
(unsigned long) data.proc_signal.blocked,
|
(unsigned long) data.proc_signal.signal [1],
|
||||||
(unsigned long) data.proc_signal.sigignore,
|
(unsigned long) data.proc_signal.blocked [0],
|
||||||
(unsigned long) data.proc_signal.sigcatch);
|
(unsigned long) data.proc_signal.blocked [1],
|
||||||
|
(unsigned long) data.proc_signal.sigignore [0],
|
||||||
|
(unsigned long) data.proc_signal.sigignore [1],
|
||||||
|
(unsigned long) data.proc_signal.sigcatch [0],
|
||||||
|
(unsigned long) data.proc_signal.sigcatch [1]);
|
||||||
|
|
||||||
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
glibtop_get_proc_kernel (&data.proc_kernel, pid);
|
||||||
|
|
||||||
|
@@ -58,6 +58,7 @@ static libgtop_proc_state_t libgtop_proc_state;
|
|||||||
static libgtop_proc_kernel_t libgtop_proc_kernel;
|
static libgtop_proc_kernel_t libgtop_proc_kernel;
|
||||||
static libgtop_proc_segment_t libgtop_proc_segment;
|
static libgtop_proc_segment_t libgtop_proc_segment;
|
||||||
static libgtop_proc_mem_t libgtop_proc_mem;
|
static libgtop_proc_mem_t libgtop_proc_mem;
|
||||||
|
static libgtop_proc_signal_t libgtop_proc_signal;
|
||||||
|
|
||||||
static ctl_table libgtop_table[];
|
static ctl_table libgtop_table[];
|
||||||
static ctl_table libgtop_root_table[] = {
|
static ctl_table libgtop_root_table[] = {
|
||||||
@@ -89,6 +90,8 @@ ctl_table libgtop_table[] = {
|
|||||||
sizeof (libgtop_proc_segment), 0444, NULL, NULL, &proc_ctl_handler},
|
sizeof (libgtop_proc_segment), 0444, NULL, NULL, &proc_ctl_handler},
|
||||||
{LIBGTOP_PROC_MEM, NULL, &libgtop_proc_mem,
|
{LIBGTOP_PROC_MEM, NULL, &libgtop_proc_mem,
|
||||||
sizeof (libgtop_proc_mem), 0444, NULL, NULL, &proc_ctl_handler},
|
sizeof (libgtop_proc_mem), 0444, NULL, NULL, &proc_ctl_handler},
|
||||||
|
{LIBGTOP_PROC_SIGNAL, NULL, &libgtop_proc_signal,
|
||||||
|
sizeof (libgtop_proc_signal), 0444, NULL, NULL, &proc_ctl_handler},
|
||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -467,6 +470,48 @@ get_statm (struct task_struct *tsk, libgtop_proc_mem_t *proc_mem)
|
|||||||
proc_mem->dt = dt;
|
proc_mem->dt = dt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
collect_sigign_sigcatch (struct task_struct *p, sigset_t *ign,
|
||||||
|
sigset_t *catch)
|
||||||
|
{
|
||||||
|
struct k_sigaction *k;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
sigemptyset(ign);
|
||||||
|
sigemptyset(catch);
|
||||||
|
|
||||||
|
if (p->sig) {
|
||||||
|
k = p->sig->action;
|
||||||
|
for (i = 1; i <= _NSIG; ++i, ++k) {
|
||||||
|
if (k->sa.sa_handler == SIG_IGN)
|
||||||
|
sigaddset(ign, i);
|
||||||
|
else if (k->sa.sa_handler != SIG_DFL)
|
||||||
|
sigaddset(catch, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
task_sig (struct task_struct *p, libgtop_proc_signal_t *proc_signal)
|
||||||
|
{
|
||||||
|
sigset_t ignore, catch;
|
||||||
|
int i, nsig;
|
||||||
|
|
||||||
|
if (_NSIG_WORDS > LIBGTOP_NSIG)
|
||||||
|
nsig = LIBGTOP_NSIG;
|
||||||
|
else
|
||||||
|
nsig = _NSIG_WORDS;
|
||||||
|
|
||||||
|
collect_sigign_sigcatch (p, &ignore, &catch);
|
||||||
|
|
||||||
|
for (i = 0; i < nsig; i++) {
|
||||||
|
proc_signal->signal [i] = p->signal.sig [i];
|
||||||
|
proc_signal->blocked [i] = p->blocked.sig [i];
|
||||||
|
proc_signal->ignore [i] = ignore.sig [i];
|
||||||
|
proc_signal->catch [i] = catch.sig [i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
libgtop_sysctl (ctl_table *table, int nlen, int *name)
|
libgtop_sysctl (ctl_table *table, int nlen, int *name)
|
||||||
{
|
{
|
||||||
@@ -618,8 +663,11 @@ libgtop_sysctl_proc (ctl_table *table, int nlen, int *name,
|
|||||||
libgtop_proc_state_t *proc_state;
|
libgtop_proc_state_t *proc_state;
|
||||||
libgtop_proc_kernel_t *proc_kernel;
|
libgtop_proc_kernel_t *proc_kernel;
|
||||||
libgtop_proc_segment_t *proc_segment;
|
libgtop_proc_segment_t *proc_segment;
|
||||||
|
libgtop_proc_signal_t *proc_signal;
|
||||||
libgtop_proc_mem_t *proc_mem;
|
libgtop_proc_mem_t *proc_mem;
|
||||||
|
#ifdef __SMP__
|
||||||
int i;
|
int i;
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (table->ctl_name) {
|
switch (table->ctl_name) {
|
||||||
case LIBGTOP_PROC_STATE:
|
case LIBGTOP_PROC_STATE:
|
||||||
@@ -736,6 +784,12 @@ libgtop_sysctl_proc (ctl_table *table, int nlen, int *name,
|
|||||||
proc_mem->rss = tsk->mm->rss << PAGE_SHIFT;
|
proc_mem->rss = tsk->mm->rss << PAGE_SHIFT;
|
||||||
proc_mem->rlim = tsk->rlim ? tsk->rlim[RLIMIT_RSS].rlim_cur : 0;
|
proc_mem->rlim = tsk->rlim ? tsk->rlim[RLIMIT_RSS].rlim_cur : 0;
|
||||||
break;
|
break;
|
||||||
|
case LIBGTOP_PROC_SIGNAL:
|
||||||
|
proc_signal = table->data;
|
||||||
|
memset (proc_signal, 0, sizeof (libgtop_proc_signal_t));
|
||||||
|
|
||||||
|
task_sig (tsk, proc_signal);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@@ -14,7 +14,8 @@ enum {
|
|||||||
LIBGTOP_PROC_STATE,
|
LIBGTOP_PROC_STATE,
|
||||||
LIBGTOP_PROC_KERNEL,
|
LIBGTOP_PROC_KERNEL,
|
||||||
LIBGTOP_PROC_SEGMENT,
|
LIBGTOP_PROC_SEGMENT,
|
||||||
LIBGTOP_PROC_MEM
|
LIBGTOP_PROC_MEM,
|
||||||
|
LIBGTOP_PROC_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -27,6 +28,8 @@ enum {
|
|||||||
LIBGTOP_PROCLIST_RUID
|
LIBGTOP_PROCLIST_RUID
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define LIBGTOP_NSIG 4
|
||||||
|
|
||||||
#define LIBGTOP_PROCLIST_MASK 15
|
#define LIBGTOP_PROCLIST_MASK 15
|
||||||
|
|
||||||
#define LIBGTOP_EXCLUDE_IDLE 0x1000
|
#define LIBGTOP_EXCLUDE_IDLE 0x1000
|
||||||
@@ -44,6 +47,7 @@ typedef struct libgtop_proc_state libgtop_proc_state_t;
|
|||||||
typedef struct libgtop_proc_kernel libgtop_proc_kernel_t;
|
typedef struct libgtop_proc_kernel libgtop_proc_kernel_t;
|
||||||
typedef struct libgtop_proc_segment libgtop_proc_segment_t;
|
typedef struct libgtop_proc_segment libgtop_proc_segment_t;
|
||||||
typedef struct libgtop_proc_mem libgtop_proc_mem_t;
|
typedef struct libgtop_proc_mem libgtop_proc_mem_t;
|
||||||
|
typedef struct libgtop_proc_signal libgtop_proc_signal_t;
|
||||||
|
|
||||||
struct libgtop_cpu
|
struct libgtop_cpu
|
||||||
{
|
{
|
||||||
@@ -138,4 +142,12 @@ struct libgtop_proc_mem
|
|||||||
unsigned long rss, rlim;
|
unsigned long rss, rlim;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct libgtop_proc_signal
|
||||||
|
{
|
||||||
|
unsigned long signal [LIBGTOP_NSIG];
|
||||||
|
unsigned long blocked [LIBGTOP_NSIG];
|
||||||
|
unsigned long ignore [LIBGTOP_NSIG];
|
||||||
|
unsigned long catch [LIBGTOP_NSIG];
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -35,22 +35,39 @@
|
|||||||
|
|
||||||
BEGIN_LIBGTOP_DECLS
|
BEGIN_LIBGTOP_DECLS
|
||||||
|
|
||||||
int glibtop_get_proc_data_stat_s (glibtop *server, libgtop_stat_t *stat);
|
int
|
||||||
int glibtop_get_proc_data_mem_s (glibtop *server, libgtop_mem_t *mem);
|
glibtop_get_proc_data_stat_s (glibtop *server, libgtop_stat_t *stat);
|
||||||
int glibtop_get_proc_data_swap_s (glibtop *server, libgtop_swap_t *swap);
|
|
||||||
int glibtop_get_proc_data_proclist_s (glibtop *server,
|
|
||||||
libgtop_proclist_t *proclist,
|
|
||||||
u_int64_t which, u_int64_t arg);
|
|
||||||
int glibtop_get_proc_data_proc_state_s (glibtop *server,
|
|
||||||
libgtop_proc_state_t *proc_state,
|
|
||||||
pid_t pid);
|
|
||||||
int glibtop_get_proc_data_proc_mem_s (glibtop *server,
|
|
||||||
libgtop_proc_mem_t *proc_mem,
|
|
||||||
pid_t pid);
|
|
||||||
int glibtop_get_proc_data_proc_kernel_s (glibtop *server,
|
|
||||||
libgtop_proc_kernel_t *proc_kernel,
|
|
||||||
pid_t pid);
|
|
||||||
|
|
||||||
|
int
|
||||||
|
glibtop_get_proc_data_mem_s (glibtop *server, libgtop_mem_t *mem);
|
||||||
|
|
||||||
|
int
|
||||||
|
glibtop_get_proc_data_swap_s (glibtop *server, libgtop_swap_t *swap);
|
||||||
|
|
||||||
|
int
|
||||||
|
glibtop_get_proc_data_proclist_s (glibtop *server,
|
||||||
|
libgtop_proclist_t *proclist,
|
||||||
|
u_int64_t which, u_int64_t arg);
|
||||||
|
|
||||||
|
int
|
||||||
|
glibtop_get_proc_data_proc_state_s (glibtop *server,
|
||||||
|
libgtop_proc_state_t *proc_state,
|
||||||
|
pid_t pid);
|
||||||
|
|
||||||
|
int
|
||||||
|
glibtop_get_proc_data_proc_mem_s (glibtop *server,
|
||||||
|
libgtop_proc_mem_t *proc_mem,
|
||||||
|
pid_t pid);
|
||||||
|
|
||||||
|
int
|
||||||
|
glibtop_get_proc_data_proc_signal_s (glibtop *server,
|
||||||
|
libgtop_proc_signal_t *proc_signal,
|
||||||
|
pid_t pid);
|
||||||
|
|
||||||
|
int
|
||||||
|
glibtop_get_proc_data_proc_kernel_s (glibtop *server,
|
||||||
|
libgtop_proc_kernel_t *proc_kernel,
|
||||||
|
pid_t pid);
|
||||||
|
|
||||||
END_LIBGTOP_DECLS
|
END_LIBGTOP_DECLS
|
||||||
|
|
||||||
|
@@ -115,6 +115,22 @@ glibtop_get_proc_data_proc_mem_s (glibtop *server,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
glibtop_get_proc_data_proc_signal_s (glibtop *server,
|
||||||
|
libgtop_proc_signal_t *proc_signal,
|
||||||
|
pid_t pid)
|
||||||
|
{
|
||||||
|
int name [3] = { CTL_LIBGTOP, LIBGTOP_PROC_SIGNAL, pid };
|
||||||
|
size_t size = sizeof (libgtop_proc_signal_t);
|
||||||
|
|
||||||
|
if (sysctl (name, 3, proc_signal, &size, NULL, 0)) {
|
||||||
|
glibtop_warn_io_r (server, "sysctl (libgtop/proc_signal)");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
glibtop_get_proc_data_proc_kernel_s (glibtop *server,
|
glibtop_get_proc_data_proc_kernel_s (glibtop *server,
|
||||||
libgtop_proc_kernel_t *proc_kernel,
|
libgtop_proc_kernel_t *proc_kernel,
|
||||||
|
@@ -24,14 +24,20 @@
|
|||||||
#include <glibtop.h>
|
#include <glibtop.h>
|
||||||
#include <glibtop/procsignal.h>
|
#include <glibtop/procsignal.h>
|
||||||
|
|
||||||
static const unsigned long _glibtop_sysdeps_proc_signal = 0;
|
#include <glibtop_private.h>
|
||||||
|
|
||||||
|
static const unsigned long _glibtop_sysdeps_proc_signal =
|
||||||
|
(1 << GLIBTOP_PROC_SIGNAL_SIGNAL) +
|
||||||
|
(1 << GLIBTOP_PROC_SIGNAL_BLOCKED) +
|
||||||
|
(1 << GLIBTOP_PROC_SIGNAL_SIGIGNORE) +
|
||||||
|
(1 << GLIBTOP_PROC_SIGNAL_SIGCATCH);
|
||||||
|
|
||||||
/* Init function. */
|
/* Init function. */
|
||||||
|
|
||||||
void
|
void
|
||||||
glibtop_init_proc_signal_s (glibtop *server)
|
glibtop_init_proc_signal_s (glibtop *server)
|
||||||
{
|
{
|
||||||
server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal;
|
server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provides detailed information about a process. */
|
/* Provides detailed information about a process. */
|
||||||
@@ -40,5 +46,20 @@ void
|
|||||||
glibtop_get_proc_signal_s (glibtop *server, glibtop_proc_signal *buf,
|
glibtop_get_proc_signal_s (glibtop *server, glibtop_proc_signal *buf,
|
||||||
pid_t pid)
|
pid_t pid)
|
||||||
{
|
{
|
||||||
memset (buf, 0, sizeof (glibtop_proc_signal));
|
libgtop_proc_signal_t proc_signal;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
memset (buf, 0, sizeof (glibtop_proc_signal));
|
||||||
|
|
||||||
|
if (glibtop_get_proc_data_proc_signal_s (server, &proc_signal, pid))
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; i < 1; i++) {
|
||||||
|
buf->signal [i] = proc_signal.signal [i];
|
||||||
|
buf->blocked [i] = proc_signal.blocked [i];
|
||||||
|
buf->sigignore [i] = proc_signal.ignore [i];
|
||||||
|
buf->sigcatch [i] = proc_signal.catch [i];
|
||||||
|
}
|
||||||
|
|
||||||
|
buf->flags = _glibtop_sysdeps_proc_signal;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user