re PR libgcj/29324 (add wait handling hook)
PR libgcj/29324 * include/posix-threads.h (_Jv_BlockSigchld): Declare. (_Jv_UnBlockSigchld): Same. * posix-threads.cc: Include posix-threads.h. (block_sigchld) Rename to... (_Jv_BlockSigchld) ... this. (_Jv_UnBlockSigchld): New function. (_Jv_InitThreads): Call _Jv_BlockSigchld in place of block_sigchld. (_Jv_ThreadStart): Same. * java/lang/PosixProcess$ProcessManager.h: Regenerate. * java/lang/PosixProcess.java: Clean up imports. (ProcessManager): Make final. (ProcessManager.queue): Genericise and make private. (ProcessManager.pidToProcess): Remove. (ProcessManager.liveProcesses): New field. (ProcessManager.reaperPID): Remove. (ProcessManager.nativeData): New field. (ProcessManager.removeProcessFromMap): Remove. (ProcessManager.addProcessToMap):Remove. (ProcessManager.addToLiveProcesses): New method. (ProcessManager.run): Rewritten. (ProcessManager.reap): Change method signature, (getErrorStream): Correct formatting. (getInputStream): Same. (spawn): Add process to liveProcesses list. (pid): Make package private. * java/lang/PosixProcess.h: Regenerate. * java/lang/natPosixProcess.cc: Include posix.h and posix-threads.h. Add useing namespace java::lang. (ProcessManagerInternal): New struct. (sigchld_handler): Rewritten. (init): Rewritten. (waitForSignal): Same. (reap): Same. (signalReaper): Same. (nativeDestroy): Call kill as ::kill. (nativeSpawn): Correct formatting. * classpath/lib/java/lang/PosixProcess$EOFInputStream.class: Regenerate. * classpath/lib/java/lang/PosixProcess.class: Same. * classpath/lib/java/lang/PosixProcess$ProcessManager.class: Same. From-SVN: r124638
This commit is contained in:
parent
c4160806e1
commit
8c0dbf3490
10 changed files with 244 additions and 168 deletions
|
@ -7,31 +7,37 @@
|
|||
#pragma interface
|
||||
|
||||
#include <java/lang/Thread.h>
|
||||
extern "Java"
|
||||
{
|
||||
namespace gnu
|
||||
{
|
||||
namespace gcj
|
||||
{
|
||||
class RawDataManaged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class java::lang::PosixProcess$ProcessManager : public ::java::lang::Thread
|
||||
{
|
||||
|
||||
public: // actually package-private
|
||||
PosixProcess$ProcessManager();
|
||||
private:
|
||||
::java::lang::PosixProcess * removeProcessFromMap(jlong);
|
||||
public: // actually package-private
|
||||
virtual void addProcessToMap(::java::lang::PosixProcess *);
|
||||
virtual void startExecuting(::java::lang::PosixProcess *);
|
||||
virtual void waitUntilReady();
|
||||
void addToLiveProcesses(::java::lang::PosixProcess *);
|
||||
void startExecuting(::java::lang::PosixProcess *);
|
||||
void waitUntilReady();
|
||||
public:
|
||||
virtual void run();
|
||||
void run();
|
||||
private:
|
||||
void init();
|
||||
void waitForSignal();
|
||||
jboolean reap();
|
||||
jboolean reap(::java::lang::PosixProcess *);
|
||||
void signalReaper();
|
||||
public: // actually package-private
|
||||
::java::util::List * __attribute__((aligned(__alignof__( ::java::lang::Thread)))) queue;
|
||||
private:
|
||||
::java::util::Map * pidToProcess;
|
||||
::java::util::LinkedList * __attribute__((aligned(__alignof__( ::java::lang::Thread)))) queue;
|
||||
::java::util::LinkedList * liveProcesses;
|
||||
jboolean ready;
|
||||
jlong reaperPID;
|
||||
public: // actually package-private
|
||||
static ::gnu::gcj::RawDataManaged * nativeData;
|
||||
public:
|
||||
static ::java::lang::Class class$;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue