corda/src/system.h

51 lines
962 B
C
Raw Normal View History

#ifndef SYSTEM_H
#define SYSTEM_H
#include "common.h"
namespace vm {
class System {
public:
2007-06-20 21:27:22 +00:00
typedef intptr_t Status;
class Thread {
public:
virtual ~Thread() { }
virtual void run() = 0;
};
class Monitor {
public:
virtual ~Monitor() { }
virtual bool tryAcquire(void* id) = 0;
virtual void acquire(void* id) = 0;
virtual void release(void* id) = 0;
virtual void wait(void* id) = 0;
virtual void notify(void* id) = 0;
virtual void notifyAll(void* id) = 0;
virtual void dispose() = 0;
};
virtual ~System() { }
virtual bool success(Status) = 0;
2007-06-22 02:13:17 +00:00
virtual void* tryAllocate(unsigned size) = 0;
2007-06-20 19:20:25 +00:00
virtual void free(const void*) = 0;
virtual Status start(Thread*) = 0;
virtual Status make(Monitor**) = 0;
2007-06-18 04:25:42 +00:00
virtual void abort() = 0;
2007-06-20 19:20:25 +00:00
void* allocate(unsigned size) {
2007-06-22 02:13:17 +00:00
void* p = tryAllocate(size);
if (p == 0) {
2007-06-20 19:20:25 +00:00
abort();
}
return p;
}
};
} // namespace vm
#endif//SYSTEM_H