public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cmoller@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Massive update from my local working copy into the frysk tree. Date: Mon, 18 Feb 2008 17:53:00 -0000 [thread overview] Message-ID: <20080218175259.10925.qmail@sourceware.org> (raw) 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 <utracer.h> + </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 <utracer.h> + </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 <utracer.h> + </funcsynopsisinfo> hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-02-18 17:53 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080218175259.10925.qmail@sourceware.org \ --to=cmoller@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).