Some more daemon stuff.

This commit is contained in:
Martin Baulig
1998-06-18 19:06:55 +00:00
parent b54a5d2dfd
commit 71187a5e51
5 changed files with 297 additions and 309 deletions

View File

@@ -52,14 +52,14 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_cpu (&data.cpu); glibtop_get_cpu (&data.cpu);
fprintf (stderr, "CPU (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu\n", printf ("CPU (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu\n",
data.cpu.flags, data.cpu.total, data.cpu.user, data.cpu.nice, data.cpu.flags, data.cpu.total, data.cpu.user, data.cpu.nice,
data.cpu.sys, data.cpu.idle, data.cpu.frequency); data.cpu.sys, data.cpu.idle, data.cpu.frequency);
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_mem (&data.mem); glibtop_get_mem (&data.mem);
fprintf (stderr, "Memory (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n", printf ("Memory (0x%08lx): %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
data.mem.flags, data.mem.total, data.mem.used, data.mem.free, data.mem.flags, data.mem.total, data.mem.used, data.mem.free,
data.mem.shared, data.mem.buffer, data.mem.cached, data.mem.shared, data.mem.buffer, data.mem.cached,
data.mem.user, data.mem.locked); data.mem.user, data.mem.locked);
@@ -67,26 +67,26 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_swap (&data.swap); glibtop_get_swap (&data.swap);
fprintf (stderr, "Swap (0x%08lx): %lu, %lu, %lu\n", data.swap.flags, printf ("Swap (0x%08lx): %lu, %lu, %lu\n", data.swap.flags,
data.swap.total, data.swap.used, data.swap.free); data.swap.total, data.swap.used, data.swap.free);
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_uptime (&data.uptime); glibtop_get_uptime (&data.uptime);
fprintf (stderr, "Uptime (0x%08lx): %f, %f\n", data.uptime.flags, printf ("Uptime (0x%08lx): %f, %f\n", data.uptime.flags,
data.uptime.uptime, data.uptime.idletime); data.uptime.uptime, data.uptime.idletime);
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_loadavg (&data.loadavg); glibtop_get_loadavg (&data.loadavg);
fprintf (stderr, "Loadavg (0x%08lx): %f, %f, %f\n", data.loadavg.flags, printf ("Loadavg (0x%08lx): %f, %f, %f\n", data.loadavg.flags,
data.loadavg.loadavg [0], data.loadavg.loadavg [1], data.loadavg.loadavg [0], data.loadavg.loadavg [1],
data.loadavg.loadavg [2]); data.loadavg.loadavg [2]);
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_shm_limits (&data.shm_limits); glibtop_get_shm_limits (&data.shm_limits);
fprintf (stderr, "Shm Limits (0x%08lx): %ld, %ld, %ld, %ld, %ld\n", printf ("Shm Limits (0x%08lx): %ld, %ld, %ld, %ld, %ld\n",
data.shm_limits.flags, data.shm_limits.shmmax, data.shm_limits.flags, data.shm_limits.shmmax,
data.shm_limits.shmmin, data.shm_limits.shmmni, data.shm_limits.shmmin, data.shm_limits.shmmni,
data.shm_limits.shmseg, data.shm_limits.shmall); data.shm_limits.shmseg, data.shm_limits.shmall);
@@ -94,7 +94,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_msg_limits (&data.msg_limits); glibtop_get_msg_limits (&data.msg_limits);
fprintf (stderr, "Msg Limits (0x%08lx): %ld, %ld, %ld, %ld, %ld, %ld, %ld\n", printf ("Msg Limits (0x%08lx): %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
data.msg_limits.flags, data.msg_limits.msgpool, data.msg_limits.flags, data.msg_limits.msgpool,
data.msg_limits.msgmap, data.msg_limits.msgmax, data.msg_limits.msgmap, data.msg_limits.msgmax,
data.msg_limits.msgmnb, data.msg_limits.msgmni, data.msg_limits.msgmnb, data.msg_limits.msgmni,
@@ -103,7 +103,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_sem_limits (&data.sem_limits); glibtop_get_sem_limits (&data.sem_limits);
fprintf (stderr, "Sem Limits (0x%08lx): " printf ("Sem Limits (0x%08lx): "
"%ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n", "%ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
data.sem_limits.flags, data.sem_limits.semmap, data.sem_limits.flags, data.sem_limits.semmap,
data.sem_limits.semmni, data.sem_limits.semmns, data.sem_limits.semmni, data.sem_limits.semmns,
@@ -112,11 +112,11 @@ main (int argc, char *argv [])
data.sem_limits.semusz, data.sem_limits.semvmx, data.sem_limits.semusz, data.sem_limits.semvmx,
data.sem_limits.semaem); data.sem_limits.semaem);
fprintf (stderr, "\n"); printf ("\n");
glibtop_get_sysdeps (&sysdeps); glibtop_get_sysdeps (&sysdeps);
fprintf (stderr, "Sysdeps (0x%08lx): %lu, %lu, %lu, %lu, %lu, " printf ("Sysdeps (0x%08lx): %lu, %lu, %lu, %lu, %lu, "
"%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n", "%lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu, %lu\n",
sysdeps.flags, sysdeps.cpu, sysdeps.mem, sysdeps.swap, sysdeps.flags, sysdeps.cpu, sysdeps.mem, sysdeps.swap,
sysdeps.uptime, sysdeps.loadavg, sysdeps.shm_limits, sysdeps.uptime, sysdeps.loadavg, sysdeps.shm_limits,
@@ -126,19 +126,19 @@ main (int argc, char *argv [])
sysdeps.proc_time, sysdeps.proc_signal, sysdeps.proc_time, sysdeps.proc_signal,
sysdeps.proc_kernel, sysdeps.proc_segment); sysdeps.proc_kernel, sysdeps.proc_segment);
fprintf (stderr, "\n"); printf ("\n");
ptr = glibtop_get_proclist (&data.proclist); ptr = glibtop_get_proclist (&data.proclist);
fprintf (stderr, "Proclist (0x%08lx): %ld, %ld, %ld\n", printf ("Proclist (0x%08lx): %ld, %ld, %ld\n",
data.proclist.flags, data.proclist.number, data.proclist.flags, data.proclist.number,
data.proclist.size, data.proclist.total); data.proclist.size, data.proclist.total);
if (ptr) { if (ptr) {
fprintf (stderr, "\nProcess: "); printf ("\nProcess: ");
for (i = 0; i < data.proclist.number; i++) for (i = 0; i < data.proclist.number; i++)
fprintf (stderr, "%s%u", i ? ", " : "", ptr [i]); printf ("%s%u", i ? ", " : "", ptr [i]);
fprintf (stderr, "\n"); printf ("\n");
} }
glibtop_free (ptr); glibtop_free (ptr);
@@ -146,12 +146,12 @@ main (int argc, char *argv [])
pid = getpid (); pid = getpid ();
ppid = getppid (); ppid = getppid ();
fprintf (stderr, "\n"); printf ("\n");
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_state (&data.proc_state, pid); glibtop_get_proc_state (&data.proc_state, pid);
fprintf (stderr, "Proc_State PID %5u (0x%08lx): '%s', %c, %u, %u\n", printf ("Proc_State PID %5u (0x%08lx): '%s', %c, %u, %u\n",
pid, data.proc_state.flags, data.proc_state.cmd, pid, data.proc_state.flags, data.proc_state.cmd,
data.proc_state.state, data.proc_state.uid, data.proc_state.state, data.proc_state.uid,
data.proc_state.gid); data.proc_state.gid);
@@ -159,7 +159,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_uid (&data.proc_uid, pid); glibtop_get_proc_uid (&data.proc_uid, pid);
fprintf (stderr, "Proc_Uid PID %5u (0x%08lx): " printf ("Proc_Uid PID %5u (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", "%d %d %d %d %d %d %d %d %d %d %d %d\n",
pid, data.proc_uid.flags, data.proc_uid.uid, pid, data.proc_uid.flags, data.proc_uid.uid,
data.proc_uid.euid, data.proc_uid.gid, data.proc_uid.euid, data.proc_uid.gid,
@@ -172,7 +172,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_mem (&data.proc_mem, pid); glibtop_get_proc_mem (&data.proc_mem, pid);
fprintf (stderr, "Proc_Mem PID %5u (0x%08lx): " printf ("Proc_Mem PID %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld\n", pid, data.proc_mem.flags, "%ld %ld %ld %ld %ld %ld\n", pid, data.proc_mem.flags,
data.proc_mem.size, data.proc_mem.vsize, data.proc_mem.size, data.proc_mem.vsize,
data.proc_mem.resident, data.proc_mem.share, data.proc_mem.resident, data.proc_mem.share,
@@ -181,7 +181,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_time (&data.proc_time, pid); glibtop_get_proc_time (&data.proc_time, pid);
fprintf (stderr, "Proc_Time PID %5u (0x%08lx): " printf ("Proc_Time PID %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld %ld\n", pid, data.proc_time.flags, "%ld %ld %ld %ld %ld %ld %ld\n", pid, data.proc_time.flags,
data.proc_time.start_time, data.proc_time.utime, data.proc_time.start_time, data.proc_time.utime,
data.proc_time.stime, data.proc_time.cutime, data.proc_time.stime, data.proc_time.cutime,
@@ -191,7 +191,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_signal (&data.proc_signal, pid); glibtop_get_proc_signal (&data.proc_signal, pid);
fprintf (stderr, "Proc_Signal PID %5u (0x%08lx): " printf ("Proc_Signal PID %5u (0x%08lx): "
"%d %d %d %d\n", pid, data.proc_signal.flags, "%d %d %d %d\n", pid, data.proc_signal.flags,
data.proc_signal.signal, data.proc_signal.blocked, data.proc_signal.signal, data.proc_signal.blocked,
data.proc_signal.sigignore, data.proc_signal.sigcatch); data.proc_signal.sigignore, data.proc_signal.sigcatch);
@@ -199,7 +199,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_kernel (&data.proc_kernel, pid); glibtop_get_proc_kernel (&data.proc_kernel, pid);
fprintf (stderr, "Proc_Kernel PID %5u (0x%08lx): " printf ("Proc_Kernel PID %5u (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", pid, "%lu %lu %lu %lu %lu %lu %lu %lu\n", pid,
data.proc_kernel.flags, data.proc_kernel.k_flags, data.proc_kernel.flags, data.proc_kernel.k_flags,
data.proc_kernel.min_flt, data.proc_kernel.maj_flt, data.proc_kernel.min_flt, data.proc_kernel.maj_flt,
@@ -210,19 +210,19 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_segment (&data.proc_segment, pid); glibtop_get_proc_segment (&data.proc_segment, pid);
fprintf (stderr, "Proc_Segment PID %5u (0x%08lx): " printf ("Proc_Segment PID %5u (0x%08lx): "
"%ld %ld %ld %ld %lu %lu %lu\n", pid, data.proc_segment.flags, "%ld %ld %ld %ld %lu %lu %lu\n", pid, data.proc_segment.flags,
data.proc_segment.trs, data.proc_segment.lrs, data.proc_segment.trs, data.proc_segment.lrs,
data.proc_segment.drs, data.proc_segment.dt, data.proc_segment.drs, data.proc_segment.dt,
data.proc_segment.start_code, data.proc_segment.end_code, data.proc_segment.start_code, data.proc_segment.end_code,
data.proc_segment.start_stack); data.proc_segment.start_stack);
fprintf (stderr, "\n"); printf ("\n");
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_state (&data.proc_state, ppid); glibtop_get_proc_state (&data.proc_state, ppid);
fprintf (stderr, "Proc_State PPID %5u (0x%08lx): '%s', %c, %u, %u\n", printf ("Proc_State PPID %5u (0x%08lx): '%s', %c, %u, %u\n",
ppid, data.proc_state.flags, data.proc_state.cmd, ppid, data.proc_state.flags, data.proc_state.cmd,
data.proc_state.state, data.proc_state.uid, data.proc_state.state, data.proc_state.uid,
data.proc_state.gid); data.proc_state.gid);
@@ -230,7 +230,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_uid (&data.proc_uid, ppid); glibtop_get_proc_uid (&data.proc_uid, ppid);
fprintf (stderr, "Proc_Uid PPID %5u (0x%08lx): " printf ("Proc_Uid PPID %5u (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", "%d %d %d %d %d %d %d %d %d %d %d %d\n",
ppid, data.proc_uid.flags, data.proc_uid.uid, ppid, data.proc_uid.flags, data.proc_uid.uid,
data.proc_uid.euid, data.proc_uid.gid, data.proc_uid.euid, data.proc_uid.gid,
@@ -243,7 +243,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_mem (&data.proc_mem, ppid); glibtop_get_proc_mem (&data.proc_mem, ppid);
fprintf (stderr, "Proc_Mem PPID %5u (0x%08lx): " printf ("Proc_Mem PPID %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld\n", ppid, data.proc_mem.flags, "%ld %ld %ld %ld %ld %ld\n", ppid, data.proc_mem.flags,
data.proc_mem.size, data.proc_mem.vsize, data.proc_mem.size, data.proc_mem.vsize,
data.proc_mem.resident, data.proc_mem.share, data.proc_mem.resident, data.proc_mem.share,
@@ -252,7 +252,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_time (&data.proc_time, ppid); glibtop_get_proc_time (&data.proc_time, ppid);
fprintf (stderr, "Proc_Time PPID %5u (0x%08lx): " printf ("Proc_Time PPID %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld %ld\n", ppid, data.proc_time.flags, "%ld %ld %ld %ld %ld %ld %ld\n", ppid, data.proc_time.flags,
data.proc_time.start_time, data.proc_time.utime, data.proc_time.start_time, data.proc_time.utime,
data.proc_time.stime, data.proc_time.cutime, data.proc_time.stime, data.proc_time.cutime,
@@ -262,7 +262,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_signal (&data.proc_signal, ppid); glibtop_get_proc_signal (&data.proc_signal, ppid);
fprintf (stderr, "Proc_Signal PPID %5u (0x%08lx): " printf ("Proc_Signal PPID %5u (0x%08lx): "
"%d %d %d %d\n", ppid, data.proc_signal.flags, "%d %d %d %d\n", ppid, data.proc_signal.flags,
data.proc_signal.signal, data.proc_signal.blocked, data.proc_signal.signal, data.proc_signal.blocked,
data.proc_signal.sigignore, data.proc_signal.sigcatch); data.proc_signal.sigignore, data.proc_signal.sigcatch);
@@ -270,7 +270,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_kernel (&data.proc_kernel, ppid); glibtop_get_proc_kernel (&data.proc_kernel, ppid);
fprintf (stderr, "Proc_Kernel PPID %5u (0x%08lx): " printf ("Proc_Kernel PPID %5u (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", ppid, "%lu %lu %lu %lu %lu %lu %lu %lu\n", ppid,
data.proc_kernel.flags, data.proc_kernel.k_flags, data.proc_kernel.flags, data.proc_kernel.k_flags,
data.proc_kernel.min_flt, data.proc_kernel.maj_flt, data.proc_kernel.min_flt, data.proc_kernel.maj_flt,
@@ -281,19 +281,19 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_segment (&data.proc_segment, ppid); glibtop_get_proc_segment (&data.proc_segment, ppid);
fprintf (stderr, "Proc_Segment PPID %5u (0x%08lx): " printf ("Proc_Segment PPID %5u (0x%08lx): "
"%ld %ld %ld %ld %lu %lu %lu\n", ppid, data.proc_segment.flags, "%ld %ld %ld %ld %lu %lu %lu\n", ppid, data.proc_segment.flags,
data.proc_segment.trs, data.proc_segment.lrs, data.proc_segment.trs, data.proc_segment.lrs,
data.proc_segment.drs, data.proc_segment.dt, data.proc_segment.drs, data.proc_segment.dt,
data.proc_segment.start_code, data.proc_segment.end_code, data.proc_segment.start_code, data.proc_segment.end_code,
data.proc_segment.start_stack); data.proc_segment.start_stack);
fprintf (stderr, "\n"); printf ("\n");
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_state (&data.proc_state, 1); glibtop_get_proc_state (&data.proc_state, 1);
fprintf (stderr, "Proc_State INIT %5u (0x%08lx): '%s', %c, %u, %u\n", printf ("Proc_State INIT %5u (0x%08lx): '%s', %c, %u, %u\n",
1, data.proc_state.flags, data.proc_state.cmd, 1, data.proc_state.flags, data.proc_state.cmd,
data.proc_state.state, data.proc_state.uid, data.proc_state.state, data.proc_state.uid,
data.proc_state.gid); data.proc_state.gid);
@@ -301,7 +301,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_uid (&data.proc_uid, 1); glibtop_get_proc_uid (&data.proc_uid, 1);
fprintf (stderr, "Proc_Uid INIT %5u (0x%08lx): " printf ("Proc_Uid INIT %5u (0x%08lx): "
"%d %d %d %d %d %d %d %d %d %d %d %d\n", "%d %d %d %d %d %d %d %d %d %d %d %d\n",
1, data.proc_uid.flags, data.proc_uid.uid, 1, data.proc_uid.flags, data.proc_uid.uid,
data.proc_uid.euid, data.proc_uid.gid, data.proc_uid.euid, data.proc_uid.gid,
@@ -314,7 +314,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_mem (&data.proc_mem, 1); glibtop_get_proc_mem (&data.proc_mem, 1);
fprintf (stderr, "Proc_Mem INIT %5u (0x%08lx): " printf ("Proc_Mem INIT %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld\n", 1, data.proc_mem.flags, "%ld %ld %ld %ld %ld %ld\n", 1, data.proc_mem.flags,
data.proc_mem.size, data.proc_mem.vsize, data.proc_mem.size, data.proc_mem.vsize,
data.proc_mem.resident, data.proc_mem.share, data.proc_mem.resident, data.proc_mem.share,
@@ -323,7 +323,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_time (&data.proc_time, 1); glibtop_get_proc_time (&data.proc_time, 1);
fprintf (stderr, "Proc_Time INIT %5u (0x%08lx): " printf ("Proc_Time INIT %5u (0x%08lx): "
"%ld %ld %ld %ld %ld %ld %ld\n", 1, data.proc_time.flags, "%ld %ld %ld %ld %ld %ld %ld\n", 1, data.proc_time.flags,
data.proc_time.start_time, data.proc_time.utime, data.proc_time.start_time, data.proc_time.utime,
data.proc_time.stime, data.proc_time.cutime, data.proc_time.stime, data.proc_time.cutime,
@@ -333,7 +333,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_signal (&data.proc_signal, 1); glibtop_get_proc_signal (&data.proc_signal, 1);
fprintf (stderr, "Proc_Signal INIT %5u (0x%08lx): " printf ("Proc_Signal INIT %5u (0x%08lx): "
"%d %d %d %d\n", 1, data.proc_signal.flags, "%d %d %d %d\n", 1, data.proc_signal.flags,
data.proc_signal.signal, data.proc_signal.blocked, data.proc_signal.signal, data.proc_signal.blocked,
data.proc_signal.sigignore, data.proc_signal.sigcatch); data.proc_signal.sigignore, data.proc_signal.sigcatch);
@@ -341,7 +341,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_kernel (&data.proc_kernel, 1); glibtop_get_proc_kernel (&data.proc_kernel, 1);
fprintf (stderr, "Proc_Kernel INIT %5u (0x%08lx): " printf ("Proc_Kernel INIT %5u (0x%08lx): "
"%lu %lu %lu %lu %lu %lu %lu %lu\n", 1, "%lu %lu %lu %lu %lu %lu %lu %lu\n", 1,
data.proc_kernel.flags, data.proc_kernel.k_flags, data.proc_kernel.flags, data.proc_kernel.k_flags,
data.proc_kernel.min_flt, data.proc_kernel.maj_flt, data.proc_kernel.min_flt, data.proc_kernel.maj_flt,
@@ -352,7 +352,7 @@ main (int argc, char *argv [])
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
glibtop_get_proc_segment (&data.proc_segment, 1); glibtop_get_proc_segment (&data.proc_segment, 1);
fprintf (stderr, "Proc_Segment INIT %5u (0x%08lx): " printf ("Proc_Segment INIT %5u (0x%08lx): "
"%ld %ld %ld %ld %lu %lu %lu\n", 1, data.proc_segment.flags, "%ld %ld %ld %ld %lu %lu %lu\n", 1, data.proc_segment.flags,
data.proc_segment.trs, data.proc_segment.lrs, data.proc_segment.trs, data.proc_segment.lrs,
data.proc_segment.drs, data.proc_segment.dt, data.proc_segment.drs, data.proc_segment.dt,

View File

@@ -71,7 +71,8 @@ union _glibtop_response_union
struct _glibtop_response struct _glibtop_response
{ {
size_t data_size; off_t offset;
size_t size, data_size;
union _glibtop_response_union u; union _glibtop_response_union u;
}; };

View File

@@ -32,7 +32,6 @@ glibtop_call_l (glibtop *server, unsigned command, size_t send_size, void *send_
{ {
glibtop_command cmnd; glibtop_command cmnd;
glibtop_response response; glibtop_response response;
void *ptr;
glibtop_init_r (&server, 0, 0); glibtop_init_r (&server, 0, 0);
@@ -47,24 +46,34 @@ glibtop_call_l (glibtop *server, unsigned command, size_t send_size, void *send_
* of two. */ * of two. */
#ifdef DEBUG #ifdef DEBUG
fprintf (stderr, "COMMAND: send_size = %d; command = %d; sizeof (cmnd) = %d\n", // fprintf (stderr, "COMMAND: send_size = %d; command = %d; sizeof (cmnd) = %d\n",
send_size, command, sizeof (glibtop_command)); // send_size, command, sizeof (glibtop_command));
#endif #endif
if (send_size <= _GLIBTOP_PARAM_SIZE) {
if (send_size <= _GLIBTOP_PARAM_SIZE)
memcpy (cmnd.parameter, send_buf, send_size); memcpy (cmnd.parameter, send_buf, send_size);
else
cmnd.size = send_size; cmnd.size = send_size;
} else {
cmnd.data_size = send_size;
}
glibtop_write_l (server, sizeof (glibtop_command), &cmnd); glibtop_write_l (server, sizeof (glibtop_command), &cmnd);
glibtop_write_l (server, send_size, send_buf); // glibtop_write_l (server, cmnd.data_size, send_buf);
glibtop_read_l (server, sizeof (glibtop_response), &response); glibtop_read_l (server, sizeof (glibtop_response), &response);
/* glibtop_read_l (server, recv_size, recv_buf); */ fprintf (stderr, "RESPONSE: %d - %d\n", response.offset, response.data_size);
/* ptr = glibtop_read_data_l (server); */ if (recv_buf)
memcpy (recv_buf, ((char *) &response) + response.offset, recv_size);
if (response.data_size) {
void *ptr = glibtop_malloc_r (server, response.data_size);
glibtop_read_l (server, response.data_size, ptr);
return ptr;
}
return NULL; return NULL;
} }

View File

@@ -33,11 +33,9 @@ void
glibtop_open_l (glibtop *server, const char *program_name, glibtop_open_l (glibtop *server, const char *program_name,
const unsigned long features, const unsigned flags) const unsigned long features, const unsigned flags)
{ {
char version [BUFSIZ], buffer [BUFSIZ]; char version [BUFSIZ], buffer [BUFSIZ], *temp, *temp2;
char *server_command, *server_rsh, *temp;
char *server_host, *server_user;
glibtop_sysdeps sysdeps; glibtop_sysdeps sysdeps;
int connect_type; int connect_type, ret;
memset (server, 0, sizeof (glibtop)); memset (server, 0, sizeof (glibtop));
@@ -45,132 +43,87 @@ glibtop_open_l (glibtop *server, const char *program_name,
/* Is the user allowed to override the server ? */ /* Is the user allowed to override the server ? */
if ((flags & GLIBTOP_OPEN_NO_OVERRIDE) == 0) { if (flags & GLIBTOP_OPEN_NO_OVERRIDE)
connect_type = glibtop_make_connection
(NULL, (u_short) 0, &server->socket);
#ifdef INTERNET_DOMAIN_SOCKETS
if (connect_type == (int) CONN_INTERNET) {
fprintf (stderr, "Calling GLITOP_CMND_SYSDEPS ...\n");
glibtop_call_l (server, GLIBTOP_CMND_SYSDEPS, 0, NULL,
sizeof (glibtop_sysdeps), &sysdeps);
server->features = sysdeps.features;
fprintf (stderr, "Features: %lu\n", server->features);
return; return;
}
#endif /* INTERNET_DOMAIN_SOCKETS */
/* Try to get data from environment. */ /* Try to get data from environment. */
temp = getenv ("LIBGTOP_SERVER") ? temp = getenv ("LIBGTOP_SERVER") ?
getenv ("LIBGTOP_SERVER") : GTOP_SERVER; getenv ("LIBGTOP_SERVER") : GTOP_SERVER;
server_command = glibtop_malloc_r (server, strlen (temp) + 1); server->server_command = glibtop_strdup_r (server, temp);
strcpy (server_command, temp);
temp = getenv ("LIBGTOP_RSH") ? temp = getenv ("LIBGTOP_RSH") ?
getenv ("LIBGTOP_RSH") : "rsh"; getenv ("LIBGTOP_RSH") : "rsh";
server_rsh = glibtop_malloc_r (server, strlen (temp) + 1); server->server_rsh = glibtop_strdup_r (server, temp);
strcpy (server_rsh, temp); /* If the first character of 'server_command' is a colon,
* the first field is the method to connect to the server. */
/* Extract host and user information. */ if (server->server_command [0] == ':') {
temp = strstr (server_command, ":"); /* Everything up to the next colon is the method. */
if (temp) { temp = strstr (server->server_command+1, ":");
*temp = 0; if (temp) *temp = 0;
server_host = server_command;
server_command = temp+1;
temp = strstr (server_host, "@"); /* Dispatch method. */
if (temp) { if (!strcmp (server->server_command+1, "direct")) {
*temp = 0;
server_user = server_host; /* Use sysdeps dir instead of connecting to server
server_host = temp+1; * even if using the server would be required on
* the current system. */
return;
} else if (!strcmp (server->server_command+1, "inet")) {
/* Connect to internet server. */
if (temp == NULL) {
server->server_host = glibtop_strdup_r
(server, "localhost");
} else { } else {
server_user = NULL; temp2 = strstr (temp+1, ":");
if (temp2) *temp2 = 0;
server->server_host = glibtop_strdup_r
(server, temp+1);
temp = temp2;
} }
if (temp == NULL) {
server->server_port = DEFAULT_PORT;
} else { } else {
server_host = NULL; temp2 = strstr (temp+1, ":");
server_user = NULL; if (temp2) *temp2 = 0;
ret = sscanf (temp+1, "%d", &server->server_port);
if (ret != 1)
server->server_port = DEFAULT_PORT;
temp = temp2 ? temp2 + 1 : temp2;
} }
/* Store everything in `server'. */ fprintf (stderr, "Connecting to '%s' port %d.\n",
server->server_host, server->server_port);
server->server_command = server_command; connect_type = glibtop_make_connection
server->server_host = server_host; (server->server_host, server->server_port,
server->server_user = server_user; &server->socket);
server->server_rsh = server_rsh;
}
/* Get server features. */ server->features = -1;
if (server->server_host == NULL) {
server->features = glibtop_server_features;
if (server->features == 0)
return; return;
} }
/* Fork and exec server. */
if (pipe (server->input) || pipe (server->output))
glibtop_error_r (server, _("cannot make a pipe: %s\n"),
strerror (errno));
server->pid = fork ();
if (server->pid < 0) {
glibtop_error_r (server, _("%s: fork failed: %s\n"),
strerror (errno));
} else if (server->pid == 0) {
close (0); close (1); /* close (2); */
close (server->input [0]); close (server->output [1]);
dup2 (server->input [1], 1); /* dup2 (server->input [1], 2); */
dup2 (server->output [0], 0);
if (server_host) {
if (server_user) {
execl (server->server_rsh, "-l",
server->server_user, server->server_host,
server->server_command, NULL);
} else {
execl (server->server_rsh,
server->server_host, server_command, NULL);
} }
} else {
execl (server->server_command, NULL);
}
_exit (2);
}
fprintf (stderr, "PID: %d\n", server->pid);
close (server->input [1]);
close (server->output [0]);
sprintf (version, "%s server %s ready.\n", PACKAGE, VERSION);
glibtop_read_l (server, strlen (version), buffer);
if (memcmp (version, buffer, strlen (version)))
glibtop_error_r (server, _("server version is not %s"), VERSION);
fprintf (stderr, "Calling GLITOP_CMND_SYSDEPS ...\n");
glibtop_call_l (server, GLIBTOP_CMND_SYSDEPS, 0, NULL, glibtop_call_l (server, GLIBTOP_CMND_SYSDEPS, 0, NULL,
sizeof (glibtop_sysdeps), &sysdeps); sizeof (glibtop_sysdeps), &sysdeps);
server->features = sysdeps.features; server->features = sysdeps.features;
fprintf (stderr, "Features: %lu\n", server->features);
} }

View File

@@ -23,10 +23,35 @@
/* Reads some data from server. */ /* Reads some data from server. */
static void
do_read (int s, void *ptr, size_t total_size)
{
int nread;
size_t already_read = 0, remaining = total_size;
while (already_read < total_size) {
nread = recv (s, ptr, remaining, 0);
if (nread == 0) {
close (s);
continue;
}
if (nread <= 0) {
glibtop_error_io ("recv");
return;
}
already_read += nread;
remaining -= nread;
(char *) ptr += nread;
}
}
void void
glibtop_read_l (glibtop *server, size_t size, void *buf) glibtop_read_l (glibtop *server, size_t size, void *buf)
{ {
int ret; int ret = 0;
glibtop_init_r (&server, 0, 0); glibtop_init_r (&server, 0, 0);
@@ -35,7 +60,7 @@ glibtop_read_l (glibtop *server, size_t size, void *buf)
#endif #endif
if (server->socket) { if (server->socket) {
ret = recv (server->socket, buf, size, 0); do_read (server->socket, buf, size);
} else { } else {
ret = read (server->input [0], buf, size); ret = read (server->input [0], buf, size);
} }