public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Massive update from my local working copy into the frysk tree.
@ 2008-02-18 17:53 cmoller
  0 siblings, 0 replies; only message in thread
From: cmoller @ 2008-02-18 17:53 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  d599db9bb2a2410232f96c688c9d795a2c9d590b (commit)
      from  cc9ac95bda7b3ebb504f9be9b67168c7aa6d6ee3 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit d599db9bb2a2410232f96c688c9d795a2c9d590b
Author: Chris Moller <moller@hotbox.mollernet.net>
Date:   Mon Feb 18 12:52:48 2008 -0500

    Massive update from my local working copy into the frysk tree.

-----------------------------------------------------------------------

Summary of changes:
 frysk-utrace/utracer/aux/bitter.c                  |   44 ++++++++
 frysk-utrace/utracer/aux/fp.c                      |    9 ++
 frysk-utrace/utracer/aux/mallocer.c                |    7 ++
 frysk-utrace/utracer/aux/pf.c                      |    6 +
 frysk-utrace/utracer/aux/spinner.c                 |   10 ++
 frysk-utrace/utracer/aux/testsyscall               |  Bin 0 -> 6142 bytes
 frysk-utrace/utracer/aux/testsyscall.c             |   71 +++++++++++++
 frysk-utrace/utracer/aux/tryopt.c                  |   42 ++++++++
 frysk-utrace/utracer/aux/ts                        |  Bin 0 -> 5439 bytes
 frysk-utrace/utracer/aux/ts.c                      |   25 +++++
 frysk-utrace/utracer/judb/tjudb                    |   11 ++
 .../utracer/utracer/docs/utracer_check_pid.sgml    |    7 ++
 .../utracer/docs/utracer_check_pid_body.sgml       |   95 ++++++++++++++++++
 .../utracer/utracer/docs/utracer_close.sgml        |    7 ++
 .../utracer/utracer/docs/utracer_close_body.sgml   |   46 +++++++++
 .../utracer/utracer/docs/utracer_detach.sgml       |    7 ++
 .../utracer/utracer/docs/utracer_detach_body.sgml  |   93 +++++++++++++++++
 .../utracer/utracer/docs/utracer_get_pids.sgml     |    7 ++
 .../utracer/docs/utracer_get_pids_body.sgml        |   94 ++++++++++++++++++
 frysk-utrace/utracer/utracer/docs/utracer_run.sgml |    7 ++
 .../utracer/utracer/docs/utracer_run_body.sgml     |   81 +++++++++++++++
 .../utracer/utracer/docs/utracer_sync.sgml         |    7 ++
 .../utracer/utracer/docs/utracer_sync_body.sgml    |  104 ++++++++++++++++++++
 .../utracer/utracer/docs/utracer_unregister.sgml   |    7 --
 .../utracer/docs/utracer_unregister_body.sgml      |   70 -------------
 .../utracer/utracer/docs/utracer_xref.sgml         |   41 ++++++++
 26 files changed, 821 insertions(+), 77 deletions(-)
 create mode 100644 frysk-utrace/utracer/aux/bitter.c
 create mode 100644 frysk-utrace/utracer/aux/fp.c
 create mode 100644 frysk-utrace/utracer/aux/mallocer.c
 create mode 100644 frysk-utrace/utracer/aux/pf.c
 create mode 100644 frysk-utrace/utracer/aux/spinner.c
 create mode 100755 frysk-utrace/utracer/aux/testsyscall
 create mode 100644 frysk-utrace/utracer/aux/testsyscall.c
 create mode 100644 frysk-utrace/utracer/aux/tryopt.c
 create mode 100755 frysk-utrace/utracer/aux/ts
 create mode 100644 frysk-utrace/utracer/aux/ts.c
 create mode 100755 frysk-utrace/utracer/judb/tjudb
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_check_pid.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_check_pid_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_close.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_close_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_detach.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_detach_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_get_pids.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_get_pids_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_run.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_run_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_sync.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_sync_body.sgml
 delete mode 100644 frysk-utrace/utracer/utracer/docs/utracer_unregister.sgml
 delete mode 100644 frysk-utrace/utracer/utracer/docs/utracer_unregister_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_xref.sgml

First 500 lines of diff:
diff --git a/frysk-utrace/utracer/aux/bitter.c b/frysk-utrace/utracer/aux/bitter.c
new file mode 100644
index 0000000..fd68584
--- /dev/null
+++ b/frysk-utrace/utracer/aux/bitter.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <alloca.h>
+#include <strings.h>
+
+void
+show_bitvec (unsigned long * bitvec, int nr_longs)
+{
+  int i;
+  for (i = 0; i < nr_longs; i++) fprintf (stderr, "%08x ", bitvec[i]);
+  fprintf (stderr, "\n");
+}
+
+#define set_bit(bv, b) (bv[(b)/(8*sizeof(long))] |= (1<<((b)%(8*sizeof(long)))))
+#define test_bit(bv, b) (bv[(b)/(8*sizeof(long))] & (1<<((b)%(8*sizeof(long)))))
+#define clear_bit(bv, b) (bv[(b)/(8*sizeof(long))] &= ~(1<<((b)%(8*sizeof(long)))))
+
+main (int ac, char * av[])
+{
+  unsigned long * bitvec;
+  int nr_bits		= atoi (av[1]);
+  int bit_to_set	= atoi (av[2]);
+  int bit_to_clear	= atoi (av[3]);
+  int bit_to_test	= atoi (av[4]);
+  int nr_bits_per_long	= 8 * sizeof(long);
+  int nr_longs		= (nr_bits + (nr_bits_per_long -1))/nr_bits_per_long;
+
+  fprintf (stderr, "nr_longs = %d\n", nr_longs);
+
+  bitvec = alloca (nr_longs * sizeof(long));
+  bzero (bitvec, nr_longs * sizeof(long));
+
+  show_bitvec (bitvec, nr_longs);
+
+  if (bit_to_set < nr_bits) set_bit (bitvec, bit_to_set);
+  show_bitvec (bitvec, nr_longs);
+
+  if (bit_to_clear < nr_bits) clear_bit (bitvec, bit_to_clear);
+  show_bitvec (bitvec, nr_longs);
+
+  if (bit_to_test < nr_bits)
+    fprintf (stderr, "bit %d is %s\n", bit_to_test,
+	     (test_bit (bitvec, bit_to_test) ? "on" : "off"));
+}
diff --git a/frysk-utrace/utracer/aux/fp.c b/frysk-utrace/utracer/aux/fp.c
new file mode 100644
index 0000000..1a4454b
--- /dev/null
+++ b/frysk-utrace/utracer/aux/fp.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+main()
+{
+  double result;
+  
+  asm ("FLDPI");
+  asm ("FSTP %[result]" : [result] "=f" (result));
+}
diff --git a/frysk-utrace/utracer/aux/mallocer.c b/frysk-utrace/utracer/aux/mallocer.c
new file mode 100644
index 0000000..32661ea
--- /dev/null
+++ b/frysk-utrace/utracer/aux/mallocer.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+#include <malloc.h>
+
+main()
+{
+  char * ggg = malloc (64);
+}
diff --git a/frysk-utrace/utracer/aux/pf.c b/frysk-utrace/utracer/aux/pf.c
new file mode 100644
index 0000000..c094522
--- /dev/null
+++ b/frysk-utrace/utracer/aux/pf.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+main (int ac, char * av[])
+{
+  fprintf (stderr, "\"%.*s\"\n", atoi (av[1]), av[2]);
+}
diff --git a/frysk-utrace/utracer/aux/spinner.c b/frysk-utrace/utracer/aux/spinner.c
new file mode 100644
index 0000000..924110c
--- /dev/null
+++ b/frysk-utrace/utracer/aux/spinner.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+#include <unistd.h>
+
+main()
+{
+  while(1) {
+    fprintf (stderr, "tick\n");
+    sleep (1);
+  }
+}
diff --git a/frysk-utrace/utracer/aux/testsyscall b/frysk-utrace/utracer/aux/testsyscall
new file mode 100755
index 0000000..b901213
Binary files /dev/null and b/frysk-utrace/utracer/aux/testsyscall differ
diff --git a/frysk-utrace/utracer/aux/testsyscall.c b/frysk-utrace/utracer/aux/testsyscall.c
new file mode 100644
index 0000000..84eaf80
--- /dev/null
+++ b/frysk-utrace/utracer/aux/testsyscall.c
@@ -0,0 +1,71 @@
+#include <stdio.h>
+#include <error.h>
+#include <errno.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+
+
+/*
+ * for write:
+ *
+ *	orig_eax = syscall nr (4)
+ *	eax = rc (-ENOSYS = -38)
+ *	ebx = fd (1 for stdout)
+ *	ecx = addr of string
+ *	edx = length of string
+ *
+ * for read:
+ *
+ *	orig_eax = syscall nr (4)
+ *	eax = rc (-ENOSYS = -38)
+ *	ebx = fd (6 for opened file)
+ *	ecx = addr of string
+ *	edx = length of string (4096 for buffered read)
+ *
+ * for open
+ *
+ *	orig_eax = syscall nr (5)
+ *	eax = rc (-ENOSYS = -38)
+ *
+ * for close
+ *
+ *	orig_eax = syscall nr (6)
+ *	eax = rc (-ENOSYS = -38)
+ *	ebx = fd (6 for opened file)
+ *
+ * for alloca
+ *
+ *	orig_eax = syscall nr (45 == brk)
+ *	eax = rc (-ENOSYS = -38)
+ *
+ */
+
+char arg1[] = {"one"};
+char arg2[] = {"two"};
+char arg3[] = {"three"};
+
+char * val[] = {
+  arg1,
+  arg2,
+  arg3,
+  NULL
+};
+
+main()
+{
+#define BSIZE 256
+  char * bffr = malloc (BSIZE);
+  FILE * file = fopen ("./aux/testsyscall.c", "r");
+  if (!file) error (1, errno, "fopen");
+
+  fprintf (stderr, "bffr = %08x\n", file);
+  
+  vfprintf (stdout, "%s %s %s\n", (va_list)val);
+
+  while (fgets (bffr, BSIZE, file)) fprintf (stdout, "%s", bffr);
+
+  fclose (file);
+  free (bffr);
+  _exit (0);
+}
diff --git a/frysk-utrace/utracer/aux/tryopt.c b/frysk-utrace/utracer/aux/tryopt.c
new file mode 100644
index 0000000..cddb789
--- /dev/null
+++ b/frysk-utrace/utracer/aux/tryopt.c
@@ -0,0 +1,42 @@
+#define _GNU_SOURCE
+#include <getopt.h>
+#include <stdio.h>
+#include <unistd.h>
+
+main (int ac, char * av[])
+{
+  int run = 1;
+
+  fprintf (stderr, "pass 1\n");
+  while (1 == run) {
+    int val = getopt_long (ac, av, "a:m:w:l:r", NULL, NULL);
+    switch (val) {
+    case 'a':
+      fprintf (stderr, "got an a: %s\n", optarg);
+      break;
+    case 'm':
+      fprintf (stderr, "got an m: %s\n", optarg);
+      break;
+    case 'r':
+      run = 0;
+      break;
+    }
+  }
+
+  fprintf (stderr, "pass 2\n");
+  while (1 == run) {
+    int val = getopt_long (ac, av, "a:m:w:l:r", NULL, NULL);
+    switch (val) {
+    case 'a':
+      fprintf (stderr, "got an a: %s\n", optarg);
+      break;
+    case 'm':
+      fprintf (stderr, "got an m: %s\n", optarg);
+      break;
+    case 'r':
+      _exit (0);
+      break;
+    }
+  }
+}
+
diff --git a/frysk-utrace/utracer/aux/ts b/frysk-utrace/utracer/aux/ts
new file mode 100755
index 0000000..c57d42f
Binary files /dev/null and b/frysk-utrace/utracer/aux/ts differ
diff --git a/frysk-utrace/utracer/aux/ts.c b/frysk-utrace/utracer/aux/ts.c
new file mode 100644
index 0000000..9d858e0
--- /dev/null
+++ b/frysk-utrace/utracer/aux/ts.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <malloc.h>
+#include <alloca.h>
+
+char * arg1 = "one\n";
+
+main()
+{
+  char * arg2 = "two\n";
+  char * arg3 = malloc(8);
+  char * arg4 = alloca(8);
+
+  bzero (arg3, 8);
+  bzero (arg4, 8);
+  strcpy (arg3, "three\n");
+  strcpy (arg4, "four\n");
+
+  write (fileno(stdout), arg1, strlen(arg1));
+  write (fileno(stdout), arg2, strlen(arg2));
+  write (fileno(stdout), arg3, strlen(arg3));
+  write (fileno(stdout), arg4, strlen(arg4));
+  _exit (0);
+}
diff --git a/frysk-utrace/utracer/judb/tjudb b/frysk-utrace/utracer/judb/tjudb
new file mode 100755
index 0000000..5861786
--- /dev/null
+++ b/frysk-utrace/utracer/judb/tjudb
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+stty sane
+
+lsmod | grep -q utracer
+if (( $? != 0 )); then sudo /sbin/insmod ../utracer/module/utracer.ko; fi
+
+./Judb
+
+sudo /sbin/rmmod ../utracer/module/utracer.ko
+
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_check_pid.sgml b/frysk-utrace/utracer/utracer/docs/utracer_check_pid.sgml
new file mode 100644
index 0000000..0d57708
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_check_pid.sgml
@@ -0,0 +1,7 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.2//EN" [
+<!ENTITY checkpid SYSTEM "utracer_check_pid_body.sgml">
+]>
+
+<refentry id="utracercheckpid">
+  &checkpid;
+</refentry>
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_check_pid_body.sgml b/frysk-utrace/utracer/utracer/docs/utracer_check_pid_body.sgml
new file mode 100644
index 0000000..1e32674
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_check_pid_body.sgml
@@ -0,0 +1,95 @@
+<refmeta>
+  <refentrytitle>utracer_check_pid</refentrytitle>
+  <manvolnum>2</manvolnum>
+</refmeta>
+
+<refnamediv>
+  <refname>utracer_check_pid</refname>
+  <refpurpose>verifies that a specified pid is attached to a specified
+  client</refpurpose> 
+</refnamediv>
+
+<refsynopsisdiv>
+  <funcsynopsis>
+    <funcsynopsisinfo>
+      #include &lt;utracer.h&gt;
+    </funcsynopsisinfo>
+    <funcprototype>
+      <funcdef>long <function>utracer_check_pid</function></funcdef>
+      <paramdef>long <parameter>client_pid</parameter></paramdef>
+      <paramdef>long <parameter>traced_pid</parameter></paramdef>
+    </funcprototype>
+  </funcsynopsis>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+  <para>
+    The <function>utracer_check_pid</function>() function verifies that the
+    process specified by the <parameter>traced_pid</parameter> parameter
+    is attached to the client specified by the
+    <parameter>client_pid</parameter> parameter.
+  </para>
+</refsect1>
+
+<refsect1>
+  <title>Return Value</title>
+  <para>
+    If successful, <function>utracer_check_pid</function>() returns zero,
+    indicating that the process specified by <parameter>traced_pid</parameter>
+    exists and is attached to the specified client.  If the call is not
+    successful, it will return a -1 and set <varname>errno</varname>.  The
+    value of <varname>errno</varname> will be either of those appropriate to
+    the <function>open</function>() system call (q.v.) or one of the following
+    (some of which are unique to the utracer module).
+  </para>
+</refsect1>
+
+<refsect1>
+  <title>Errors</title>
+  <variablelist>
+      
+    <varlistentry>
+      <term><constant>ESRCH</constant></term>
+      <listitem>
+	<para>
+	  The traced process no longer exists.
+	</para>
+      </listitem>
+    </varlistentry>
+      
+    <varlistentry>
+      <term><constant>UTRACER_ETRACING</constant></term>
+      <listitem>
+	<para>
+	  The process specified by the <parameter>client_pid</parameter>
+          parameter either doesn't exist or isn't registered as a utracer
+          client.
+	</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><constant>UTRACER_ETRACED</constant></term>
+      <listitem>
+        <para>
+          The process specified by the <parameter>traced_pid</parameter>
+          parameter has not been registered (via
+          <function>utracer_attach</function>()) with utracer.
+        </para>
+      </listitem>
+    </varlistentry>
+      
+    <varlistentry>
+      <term><constant>UTRACER_EENGINE</constant></term>
+      <listitem>
+	<para>
+	  The process specified by the <parameter>traced_pid</parameter>
+          parameter is no longer attached.
+	</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refsect1>
+
+&xref;
+
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_close.sgml b/frysk-utrace/utracer/utracer/docs/utracer_close.sgml
new file mode 100644
index 0000000..a9003ea
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_close.sgml
@@ -0,0 +1,7 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.2//EN" [
+<!ENTITY unregister SYSTEM "utracer_close_body.sgml">
+]>
+
+<refentry id="utracerclose">
+  &close;
+</refentry>
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_close_body.sgml b/frysk-utrace/utracer/utracer/docs/utracer_close_body.sgml
new file mode 100644
index 0000000..eee76a5
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_close_body.sgml
@@ -0,0 +1,46 @@
+<refmeta>
+  <refentrytitle>utracer_close</refentrytitle>
+  <manvolnum>2</manvolnum>
+</refmeta>
+
+<refnamediv>
+  <refname>utracer_close</refname>
+  <refpurpose>close a connection to the utracer kernel module</refpurpose> 
+</refnamediv>
+
+<refsynopsisdiv>
+  <funcsynopsis>
+    <funcsynopsisinfo>
+      #include &lt;utracer.h&gt;
+    </funcsynopsisinfo>
+    <funcprototype>
+      <funcdef>int <function>utracer_close</function></funcdef>
+      <paramdef>long <parameter>client_pid</parameter></paramdef>
+    </funcprototype>
+  </funcsynopsis>
+</refsynopsisdiv>
+
+<refsect1>
+  <title>Description</title>
+  <para>
+    <function>utracer_close</function>() is used to close the connection
+    previously opened by <function>utracer_open</function>() to the utracer
+    kernel module.  The parameter <parameter>client_pid</parameter> must be the
+    value returned by a successful <function>utracer_open</function>() call.
+  </para>
+</refsect1>
+
+<refsect1>
+  <title>Return Value</title>
+  <para>
+    If successful, <function>utracer_close</function>() returns a zero;
+    otherwise a -1 is returned and <varname>errno</varname> is set with a value
+    determined by an <function>ioctl</function>() call (q.v.) or to
+    <errorname>UTRACER_ETRACING</errorname> if either the parameter
+    <parameter>pid</parameter> is invalid or does not refer to a previously
+    established connection.
+  </para>
+</refsect1>
+
+&xref;
+
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_detach.sgml b/frysk-utrace/utracer/utracer/docs/utracer_detach.sgml
new file mode 100644
index 0000000..39a0a8d
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_detach.sgml
@@ -0,0 +1,7 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.2//EN" [
+<!ENTITY detach SYSTEM "utracer_detach_body.sgml">
+]>
+
+<refentry id="utracerdetach">
+  &detach;
+</refentry>
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_detach_body.sgml b/frysk-utrace/utracer/utracer/docs/utracer_detach_body.sgml
new file mode 100644
index 0000000..69dada9
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_detach_body.sgml
@@ -0,0 +1,93 @@
+<refmeta>
+  <refentrytitle>utracer_detach</refentrytitle>
+  <manvolnum>2</manvolnum>
+</refmeta>
+
+<refnamediv>
+  <refname>utracer_detach</refname>
+  <refpurpose>detach a specified process from a specified client</refpurpose> 
+</refnamediv>
+
+<refsynopsisdiv>
+  <funcsynopsis>
+    <funcsynopsisinfo>
+      #include &lt;utracer.h&gt;
+    </funcsynopsisinfo>


hooks/post-receive
--
frysk system monitor/debugger


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-02-18 17:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-18 17:53 [SCM] master: Massive update from my local working copy into the frysk tree cmoller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).