diff options
Diffstat (limited to 'usr/src/lib/libdtrace_jni')
| -rw-r--r-- | usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java b/usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java index 7cc72a019c..c6a1f41dad 100644 --- a/usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java +++ b/usr/src/lib/libdtrace_jni/java/src/org/opensolaris/os/dtrace/LocalConsumer.java @@ -157,6 +157,7 @@ public class LocalConsumer implements Consumer { private State state = State.INIT; private boolean stopCalled; + private boolean abortCalled; // // Per-consumer lock used in native code to prevent conflict between @@ -307,6 +308,10 @@ public class LocalConsumer implements Consumer { state = State.OPEN; setOptions(DEFAULT_OPTIONS); + if (abortCalled) { + _interrupt(); + } + if (logger.isLoggable(Level.INFO)) { logger.info("consumer table count: " + _openCount()); } @@ -846,10 +851,13 @@ public class LocalConsumer implements Consumer { } } - public void + public synchronized void abort() { - _interrupt(); + if ((state != State.INIT) && (state != State.CLOSED)) { + _interrupt(); + } + abortCalled = true; } /** |
