
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_lang_PosixProcess$ProcessManager__
#define __java_lang_PosixProcess$ProcessManager__

#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();
  void addToLiveProcesses(::java::lang::PosixProcess *);
  void startExecuting(::java::lang::PosixProcess *);
  void waitUntilReady();
public:
  void run();
private:
  void init();
  void waitForSignal();
  jboolean reap(::java::lang::PosixProcess *);
  void signalReaper();
  ::java::util::LinkedList * __attribute__((aligned(__alignof__( ::java::lang::Thread)))) queue;
  ::java::util::LinkedList * liveProcesses;
  jboolean ready;
public: // actually package-private
  static ::gnu::gcj::RawDataManaged * nativeData;
public:
  static ::java::lang::Class class$;
};

#endif // __java_lang_PosixProcess$ProcessManager__
