public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: frysk.sys.Fork.* return a ProcessIdentifier.
Date: Wed, 06 Feb 2008 22:25:00 -0000	[thread overview]
Message-ID: <20080206222513.9556.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  72daf237213a1f1758262e493f709c74a7f37630 (commit)
      from  24d8dca03611b748442112923bd6aeb02c9b249d (commit)

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

- Log -----------------------------------------------------------------
commit 72daf237213a1f1758262e493f709c74a7f37630
Author: Andrew Cagney <cagney@redhat.com>
Date:   Wed Feb 6 17:24:04 2008 -0500

    frysk.sys.Fork.* return a ProcessIdentifier.
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-02-06  Andrew Cagney  <cagney@redhat.com>
    
    	* LinuxPtraceHost.java: Update to match frysk.sys.Fork.
    	* TestRefresh.java: Ditto.
    
    frysk-core/frysk/testbed/ChangeLog
    2008-02-06  Andrew Cagney  <cagney@redhat.com>
    
    	* OffspringType.java: Update to match frysk.sys.Fork.
    	* SynchronizedOffspring.java: Ditto.
    
    frysk-sys/frysk/sys/ChangeLog
    2008-02-06  Andrew Cagney  <cagney@redhat.com>
    
    	* Wait.java (drain(ProcessIdentifier))
    	(drainNoHang(ProcessIdentifier))
    	(wait(ProcessIdentifier,WaitBuilder,SignalBuilder,long,boolean))
    	(waitAll(ProcessIdentifier, WaitBuilder)): New.
    	* Fork.java (exec, daemon, ptrace): Return a ProcessIdentifier.
    	* cni/Fork.cxx: Update.
    	* TestWait.java: Update.
    	* TestFork.java: Update.
    	* TestPtrace.java: Update.
    
    frysk-sys/frysk/testbed/ChangeLog
    2008-02-06  Andrew Cagney  <cagney@redhat.com>
    
    	* TestTearDownProcess.java: Update to match frysk.sys.Fork.

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

Summary of changes:
 frysk-core/frysk/proc/live/ChangeLog               |    5 +
 frysk-core/frysk/proc/live/LinuxPtraceHost.java    |    6 +-
 frysk-core/frysk/testbed/ChangeLog                 |    5 +
 frysk-core/frysk/testbed/OffspringType.java        |   30 +++++---
 .../frysk/testbed/SynchronizedOffspring.java       |   14 ++--
 frysk-sys/frysk/sys/ChangeLog                      |   10 +++
 frysk-sys/frysk/sys/Fork.java                      |   26 +++----
 frysk-sys/frysk/sys/TestFork.java                  |   17 ++--
 frysk-sys/frysk/sys/TestPtrace.java                |   44 +++++------
 frysk-sys/frysk/sys/TestWait.java                  |   16 ++--
 frysk-sys/frysk/sys/Wait.java                      |   79 +++++++++++--------
 frysk-sys/frysk/sys/cni/Fork.cxx                   |   27 ++++---
 frysk-sys/frysk/testbed/ChangeLog                  |    4 +
 frysk-sys/frysk/testbed/TestTearDownProcess.java   |   63 +++++++---------
 14 files changed, 193 insertions(+), 153 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index 9f54dab..01f0b15 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,3 +1,8 @@
+2008-02-06  Andrew Cagney  <cagney@redhat.com>
+
+	* LinuxPtraceHost.java: Update to match frysk.sys.Fork.
+	* TestRefresh.java: Ditto.
+
 2008-01-31  Andrew Cagney  <cagney@redhat.com>
 
 	* LinuxPtraceHost.java (requestRefresh(Set,HostRefreshBuilder))
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceHost.java b/frysk-core/frysk/proc/live/LinuxPtraceHost.java
index 3a7ddd3..14a7e16 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceHost.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceHost.java
@@ -52,6 +52,7 @@ import java.util.Iterator;
 import frysk.proc.TaskId;
 import frysk.proc.Task;
 import frysk.proc.TaskObserver.Attached;
+import frysk.sys.ProcessIdentifier;
 import frysk.proc.Manager;
 import java.util.logging.Level;
 import frysk.sys.Fork;
@@ -244,7 +245,8 @@ public class LinuxPtraceHost extends LiveHost {
 	Manager.eventLoop.add(new Event() {
 		public void execute() {
 		    logger.log(Level.FINE, "{0} sendCreateAttachedProc\n", this);
-		    int pid = Fork.ptrace(stdin, stdout, stderr, args);
+		    ProcessIdentifier pid
+			= Fork.ptrace(stdin, stdout, stderr, args);
 		    // See if the Host knows about this task.
 		    TaskId myTaskId = new TaskId(Tid.get());
 		    Task myTask = get(myTaskId);
@@ -253,7 +255,7 @@ public class LinuxPtraceHost extends LiveHost {
 			Proc myProc = getSelf();
 			myTask = new LinuxPtraceTask(myProc, myTaskId);
 		    }
-		    LinuxPtraceProc proc = new LinuxPtraceProc (myTask, new ProcId(pid));
+		    LinuxPtraceProc proc = new LinuxPtraceProc (myTask, new ProcId(pid.intValue()));
 		    new LinuxPtraceTask(proc, attachedObserver);
 		}
 	    });
diff --git a/frysk-core/frysk/testbed/ChangeLog b/frysk-core/frysk/testbed/ChangeLog
index 3c18689..265a881 100644
--- a/frysk-core/frysk/testbed/ChangeLog
+++ b/frysk-core/frysk/testbed/ChangeLog
@@ -1,3 +1,8 @@
+2008-02-06  Andrew Cagney  <cagney@redhat.com>
+
+	* OffspringType.java: Update to match frysk.sys.Fork.
+	* SynchronizedOffspring.java: Ditto.
+
 2008-01-25  Andrew Cagney  <cagney@redhat.com>
 
 	* TestIsa.java: New.
diff --git a/frysk-core/frysk/testbed/OffspringType.java b/frysk-core/frysk/testbed/OffspringType.java
index fb7352c..f86e20e 100644
--- a/frysk-core/frysk/testbed/OffspringType.java
+++ b/frysk-core/frysk/testbed/OffspringType.java
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2007, Red Hat Inc.
+// Copyright 2007, 2008, Red Hat Inc.
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -44,17 +44,23 @@ import frysk.proc.Manager;
 import frysk.proc.TaskObserver;
 import frysk.proc.Action;
 import frysk.proc.Task;
+import frysk.sys.ProcessIdentifier;
+import frysk.sys.ProcessIdentifierFactory;
 
 public abstract class OffspringType {
     private OffspringType() { }
-    public abstract int startOffspring(String stdin, String stdout,
-				       String stderr, String[] argv);
+    public abstract ProcessIdentifier startOffspring(String stdin,
+						     String stdout,
+						     String stderr,
+						     String[] argv);
     /**
      * Create a daemon offspring.
      */
     static public final OffspringType DAEMON = new OffspringType() {
-	    public int startOffspring (String stdin, String stdout,
-				       String stderr, String[] argv) {
+	    public ProcessIdentifier startOffspring(String stdin,
+						    String stdout,
+						    String stderr,
+						    String[] argv) {
 		return Fork.daemon(stdin, stdout, stderr, argv);
 	    }
 	};
@@ -62,8 +68,10 @@ public abstract class OffspringType {
      * Create a child offspring.
      */
     static public final OffspringType CHILD = new OffspringType() {
-	    public int startOffspring (String stdin, String stdout,
-				       String stderr, String[] argv) {
+	    public ProcessIdentifier startOffspring(String stdin,
+						    String stdout,
+						    String stderr,
+						    String[] argv) {
 		return Fork.exec(stdin, stdout, stderr, argv);
 	    }
 	};
@@ -71,8 +79,10 @@ public abstract class OffspringType {
      * Create a running attached child offspring.
      */
     static protected final OffspringType ATTACHED_CHILD = new OffspringType() {
-	    public int startOffspring (String stdin, String stdout,
-				       String stderr, String[] argv) {
+	    public ProcessIdentifier startOffspring(String stdin,
+						    String stdout,
+						    String stderr,
+						    String[] argv) {
 		// Capture the child process id as it flys past.
 		class TidObserver
 		    extends TaskObserverBase
@@ -93,7 +103,7 @@ public abstract class OffspringType {
 						       tidObserver);
 		TestLib.assertRunUntilStop("starting attached child");
 		// Return that captured TID.
-		return tidObserver.tid;
+		return ProcessIdentifierFactory.createFIXME(tidObserver.tid);
 	    }
 	};
 }
diff --git a/frysk-core/frysk/testbed/SynchronizedOffspring.java b/frysk-core/frysk/testbed/SynchronizedOffspring.java
index 2027803..75d7307 100644
--- a/frysk-core/frysk/testbed/SynchronizedOffspring.java
+++ b/frysk-core/frysk/testbed/SynchronizedOffspring.java
@@ -40,6 +40,7 @@
 package frysk.testbed;
 
 import frysk.sys.Signal;
+import frysk.sys.ProcessIdentifier;
 import frysk.proc.Manager;
 import java.util.logging.Level;
 
@@ -57,20 +58,21 @@ public class SynchronizedOffspring
     // mask all the way down to the exec'ed child.
     public static final Signal START_ACK = Signal.HUP;
 
-    private final int pid;
+    private final ProcessIdentifier pid;
+
     /**
      * Return the ProcessID of the child.
      */
-    public int getPid () {
-	return pid;
+    public int getPid() {
+	return pid.intValue();
     }
 
     /**
      * Create a child process (using startChild), return once the
      * process is running. Wait for acknowledge SIG.
      */
-    protected SynchronizedOffspring (OffspringType type,
-				     Signal sig, String[] argv) {
+    protected SynchronizedOffspring(OffspringType type,
+				    Signal sig, String[] argv) {
 	logger.log(Level.FINE, "{0} new ...\n", this);
 	SignalWaiter ack = new SignalWaiter(Manager.eventLoop, sig,
 					    "startOffspring");
@@ -81,7 +83,7 @@ public class SynchronizedOffspring
 	TearDownProcess.add(pid);
 	ack.assertRunUntilSignaled();
 	logger.log(Level.FINE, "{0} ... new pid {1,number,integer}\n",
-		   new Object[] {this, new Integer(pid) });
+		   new Object[] { this, pid });
     }
 
     public SynchronizedOffspring(Signal sig, String[] argv) {
diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog
index 043f839..366fbc7 100644
--- a/frysk-sys/frysk/sys/ChangeLog
+++ b/frysk-sys/frysk/sys/ChangeLog
@@ -1,5 +1,15 @@
 2008-02-06  Andrew Cagney  <cagney@redhat.com>
 
+	* Wait.java (drain(ProcessIdentifier))
+	(drainNoHang(ProcessIdentifier))
+	(wait(ProcessIdentifier,WaitBuilder,SignalBuilder,long,boolean))
+	(waitAll(ProcessIdentifier, WaitBuilder)): New.
+	* Fork.java (exec, daemon, ptrace): Return a ProcessIdentifier.
+	* cni/Fork.cxx: Update.
+	* TestWait.java: Update.
+	* TestFork.java: Update.
+	* TestPtrace.java: Update.
+
 	* cni/Errno.hxx (tryGarbageCollect(int&): Delete.
 	(tryGarbageCollect(int&,int,const char*)): Delete.
 	(tryGarbageCollect(int&,int,const char*,const char*,int)): Delete.
diff --git a/frysk-sys/frysk/sys/Fork.java b/frysk-sys/frysk/sys/Fork.java
index 14b0977..587147c 100644
--- a/frysk-sys/frysk/sys/Fork.java
+++ b/frysk-sys/frysk/sys/Fork.java
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2005, 2007, Red Hat Inc.
+// Copyright 2005, 2007, 2008, Red Hat Inc.
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -44,22 +44,20 @@ package frysk.sys;
  * sort of exec.
  */
 
-public final class Fork
-{
+public final class Fork {
     /**
      * Create a child process running ARGV[0] with arguments
      * ARGV[1..].
      *
      * Also wire up IN, OUT, and ERR.
      */
-    public static native int exec (String in, String out, String err,
-				   String[] argv);
+    public static native ProcessIdentifier exec(String in, String out,
+						String err, String[] argv);
     /**
      * Create a child process running ARGV[0] with arguments
      * ARGV[1..].
      */
-    public static final int exec (String[] argv)
-    {
+    public static final ProcessIdentifier exec(String[] argv) {
 	return exec (null, null, null, argv);
     }
 
@@ -69,14 +67,13 @@ public final class Fork
      *
      * Also wire up IN, OUT, and ERR.
      */
-    public static native int ptrace (String in, String out, String err,
-				     String[] argv);
+    public static native ProcessIdentifier ptrace(String in, String out,
+						  String err, String[] argv);
     /**
      * Create a child process running ARGV[0] with arguments
      * ARGV[1...]; mark the process for tracing.
      */
-    public static final int ptrace (String[] argv)
-    {
+    public static final ProcessIdentifier ptrace(String[] argv) {
 	return ptrace (null, null, null, argv);
     }
 
@@ -86,14 +83,13 @@ public final class Fork
      *
      * Also wire up IN, OUT, and ERR.
      */
-    public static native int daemon (String in, String out, String err,
-				     String[] argv);
+    public static native ProcessIdentifier daemon(String in, String out,
+						  String err, String[] argv);
     /**
      * Create a "daemon" process running ARGV[0] with arguments
      * ARGV[1...]; a daemon has process ID 1 as its parent.
      */
-    public static final int daemon (String[] argv)
-    {
+    public static final ProcessIdentifier daemon(String[] argv) {
 	return daemon (null, null, null, argv);
     }
 }
diff --git a/frysk-sys/frysk/sys/TestFork.java b/frysk-sys/frysk/sys/TestFork.java
index 308b785..0ab8809 100644
--- a/frysk-sys/frysk/sys/TestFork.java
+++ b/frysk-sys/frysk/sys/TestFork.java
@@ -75,13 +75,14 @@ public class TestFork
 	assertTrue("SIGHUP masked",
 		   new SignalSet().getProcMask().contains(Signal.HUP));
 	logger.log(Level.FINE, "Creating funit-procmask to check the mask\n");
-	int pid = Fork.exec(null, "/dev/null", null,
-			    new String[] {
-				Config.getPkgLibFile("funit-procmask")
-				.getPath(),
-				"-n",
-				"1"
-			    });
+	ProcessIdentifier pid
+	    = Fork.exec(null, "/dev/null", null,
+			new String[] {
+			    Config.getPkgLibFile("funit-procmask")
+			    .getPath(),
+			    "-n",
+			    "1"
+			});
 	TearDownProcess.add(pid);
 	// Capture the child's status; to see if it was correct.
 	class ExitStatus extends UnhandledWaitBuilder {
@@ -111,7 +112,7 @@ public class TestFork
 		  },
 		  getTimeoutMilliseconds());
 	// (a timeout will also fail with the below)
-	assertEquals("pid", pid, exitStatus.pid);
+	assertEquals("pid", pid.intValue(), exitStatus.pid);
 	assertEquals("signal", null, exitStatus.signal);
 	assertEquals("status", 0, exitStatus.status);
     }
diff --git a/frysk-sys/frysk/sys/TestPtrace.java b/frysk-sys/frysk/sys/TestPtrace.java
index 97c016f..7b9a8b8 100644
--- a/frysk-sys/frysk/sys/TestPtrace.java
+++ b/frysk-sys/frysk/sys/TestPtrace.java
@@ -61,52 +61,48 @@ public class TestPtrace
 	TearDownProcess.tearDown ();
     }
  
-    public void testChildContinue ()
-    {
-	final int pid = Fork.ptrace(null, null, null,
-				    new String[] { "/bin/true" });
-	assertTrue ("pid", pid > 0);
-	TearDownProcess.add (pid);
+    public void testChildContinue() {
+	final ProcessIdentifier pid
+	    = Fork.ptrace(null, null, null,
+			  new String[] {
+			      "/bin/true"
+			  });
+	assertTrue("pid", pid.intValue() > 0);
+	TearDownProcess.add(pid);
 	
 	// The initial stop.
-	Wait.waitAll (pid, new UnhandledWaitBuilder ()
-	    {
-		private final int id = pid;
-		protected void unhandled (String why)
-		{
+	Wait.waitAll(pid, new UnhandledWaitBuilder() {
+		private final ProcessIdentifier id = pid;
+		protected void unhandled(String why) {
 		    fail (why);
 		}
 		public void stopped(int pid, Signal signal) {
-		    assertEquals("stopped pid", id, pid);
+		    assertEquals("stopped pid", id.intValue(), pid);
 		    assertEquals("stopped sig", Signal.TRAP, signal);
 		}
 	    });
 
 	Ptrace.singleStep(pid, Signal.NONE);
-	Wait.waitAll (pid, new UnhandledWaitBuilder ()
-	    {
-		private final int id = pid;
-		protected void unhandled (String why)
-		{
+	Wait.waitAll(pid, new UnhandledWaitBuilder() {
+		private final ProcessIdentifier id = pid;
+		protected void unhandled(String why) {
 		    fail (why);
 		}
 		public void stopped(int pid, Signal signal) {
-		    assertEquals("stopped pid", id, pid);
+		    assertEquals("stopped pid", id.intValue(), pid);
 		    assertEquals("stopped sig", Signal.TRAP, signal);
 		}
 	    });
 
 	Ptrace.cont(pid, Signal.TERM);
-	Wait.waitAll (pid, new UnhandledWaitBuilder ()
-	    {
-		private final int id = pid;
-		protected void unhandled (String why)
-		{
+	Wait.waitAll(pid, new UnhandledWaitBuilder() {
+		private final ProcessIdentifier id = pid;
+		protected void unhandled(String why) {
 		    fail (why);
 		}
 		public void terminated(int pid, Signal signal, int status,
 				       boolean coreDumped) {
-		    assertEquals("terminated pid", id, pid);
+		    assertEquals("terminated pid", id.intValue(), pid);
 		    assertEquals("terminated signal", Signal.TERM, signal);
 		    assertEquals("terminated status", -Signal.TERM.intValue(),
 				 status);
diff --git a/frysk-sys/frysk/sys/TestWait.java b/frysk-sys/frysk/sys/TestWait.java
index ab51104..d52f655 100644
--- a/frysk-sys/frysk/sys/TestWait.java
+++ b/frysk-sys/frysk/sys/TestWait.java
@@ -108,11 +108,11 @@ public class TestWait
 
     public void testNoTimeout() {
 	WaitOnChild waitOnChild = new WaitOnChild ();
-	int pid = Fork.exec (new String[] { "/bin/false" });
+	ProcessIdentifier pid = Fork.exec(new String[] { "/bin/false" });
 	assertFalse("timeout",
-		    Wait.waitAll (getTimeoutMilliseconds (), waitOnChild,
-				  unhandledSignalBuilder));
-	assertEquals ("pid", pid, waitOnChild.pid);
+		    Wait.waitAll(getTimeoutMilliseconds (), waitOnChild,
+				 unhandledSignalBuilder));
+	assertEquals ("pid", pid.intValue(), waitOnChild.pid);
     }
 
 
@@ -167,20 +167,20 @@ public class TestWait
 
     public void testWaitExit0() {
 	WaitOnChild waitOnChild = new WaitOnChild();
-	int pid = Fork.exec(new String[] { "/bin/true" });
+	ProcessIdentifier pid = Fork.exec(new String[] { "/bin/true" });
 	Wait.waitAll(getTimeoutMilliseconds(), waitOnChild,
 		     unhandledSignalBuilder);
-	assertEquals("pid", pid, waitOnChild.pid);
+	assertEquals("pid", pid.intValue(), waitOnChild.pid);
 	assertEquals("signal", null, waitOnChild.signal);
 	assertEquals("status", 0, waitOnChild.status);
     }
 
     public void testWaitExit1() {
 	WaitOnChild waitOnChild = new WaitOnChild();
-	int pid = Fork.exec(new String[] { "/bin/false" });
+	ProcessIdentifier pid = Fork.exec(new String[] { "/bin/false" });
 	Wait.waitAll(getTimeoutMilliseconds(), waitOnChild,
 		     unhandledSignalBuilder);
-	assertEquals("pid", pid, waitOnChild.pid);
+	assertEquals("pid", pid.intValue(), waitOnChild.pid);
 	assertEquals("signal", null, waitOnChild.signal);
 	assertEquals("status", 1, waitOnChild.status);
     }
diff --git a/frysk-sys/frysk/sys/Wait.java b/frysk-sys/frysk/sys/Wait.java
index 74235e6..80c1a10 100644
--- a/frysk-sys/frysk/sys/Wait.java
+++ b/frysk-sys/frysk/sys/Wait.java
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2005, 2007, Red Hat Inc.
+// Copyright 2005, 2007, 2008, Red Hat Inc.
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -46,15 +46,13 @@ import java.util.logging.Logger;
  * tasks.
  */
 
-public final class Wait
-{
+public final class Wait {
     private static Logger logger;
     /**
      * Finds, and returns the logger, but only when logging is
      * enabled..
      */
-    static Logger getLogger ()
-    {
+    static Logger getLogger() {
 	// Seems that when calling a native static methods this isn't
 	// initialized, force it.
 	if (logger == null)
@@ -69,18 +67,18 @@ public final class Wait
     /**
      * Add Sig to the set of signals checked during poll.
      */
-    public static native void signalAdd (Signal sig);
+    public static native void signalAdd(Signal sig);
     /**
      * Empty the set of signals, and file descriptors, checked during
      * poll.
      */
-    public static native void signalEmpty ();
+    public static native void signalEmpty();
 
     /**
      * Read in all the pending wait events, and then pass them to the
      * observer.  If there is no outstanding event return immediatly.
      */
-    public native static void waitAllNoHang (WaitBuilder builder);
+    public native static void waitAllNoHang(WaitBuilder builder);
     /**
      * Wait for a waitpid or signal event.  Returns when at least one
      * event has been received, or the specified timeout has expired.
@@ -97,45 +95,60 @@ public final class Wait
      * Return true if the timeout expired; note that waitpid events
      * may have also been processed.
      */
-    public static native boolean wait (int pid,
-				       WaitBuilder waitBuilder,
-				       SignalBuilder signalBuilder,
-				       long millisecondTimeout,
-				       boolean ignoreECHILD);
-    public static boolean wait (int pid,
-				WaitBuilder waitBuilder,
-				SignalBuilder signalBuilder,
-				long millisecondTimeout) {
+    public static boolean wait(ProcessIdentifier pid,
+			       WaitBuilder waitBuilder,
+			       SignalBuilder signalBuilder,


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


                 reply	other threads:[~2008-02-06 22:25 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=20080206222513.9556.qmail@sourceware.org \
    --to=cagney@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: link
Be 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).