Home | History | Annotate | Download | only in jdwp

Lines Matching refs:state

76     JdwpState* state = NULL;
81 state = (JdwpState*) calloc(1, sizeof(JdwpState));
83 state->params = *pParams;
85 state->requestSerial = 0x10000000;
86 state->eventSerial = 0x20000000;
87 dvmDbgInitMutex(&state->threadStartLock);
88 dvmDbgInitMutex(&state->attachLock);
89 dvmDbgInitMutex(&state->serialLock);
90 dvmDbgInitMutex(&state->eventLock);
91 state->eventThreadId = 0;
92 dvmDbgInitMutex(&state->eventThreadLock);
93 dvmDbgInitCond(&state->threadStartCond);
94 dvmDbgInitCond(&state->attachCond);
95 dvmDbgInitCond(&state->eventThreadCond);
100 state->transport = dvmJdwpSocketTransport();
104 state->transport = dvmJdwpAndroidAdbTransport();
113 if (!dvmJdwpNetStartup(state, pParams))
120 dvmDbgLockMutex(&state->threadStartLock);
122 dvmDbgLockMutex(&state->attachLock);
128 if (!dvmCreateInternalThread(&state->debugThreadHandle, "JDWP",
129 jdwpThreadStart, state))
131 /* state is getting tossed, but unlock these anyway for cleanliness */
132 dvmDbgUnlockMutex(&state->threadStartLock);
134 dvmDbgUnlockMutex(&state->attachLock);
142 dvmDbgCondWait(&state->threadStartCond, &state->threadStartLock);
143 dvmDbgUnlockMutex(&state->threadStartLock);
156 dvmDbgCondWait(&state->attachCond, &state->attachLock);
157 dvmDbgUnlockMutex(&state->attachLock);
160 if (!dvmJdwpIsActive(state)) {
174 return state;
177 dvmJdwpShutdown(state); // frees state
182 * Reset all session-related state. There should not be an active connection
188 void dvmJdwpResetState(JdwpState* state)
192 dvmJdwpUnregisterAll(state);
193 assert(state->eventList == NULL);
199 if (state->eventThreadId != 0) {
200 ALOGW("WARNING: resetting state while event in progress");
206 * Tell the JDWP thread to shut down. Frees "state".
208 void dvmJdwpShutdown(JdwpState* state)
212 if (state == NULL)
215 if (dvmJdwpIsTransportDefined(state)) {
216 if (dvmJdwpIsConnected(state))
217 dvmJdwpPostVMDeath(state);
224 dvmJdwpNetShutdown(state);
226 if (state->debugThreadStarted) {
227 state->run = false;
228 if (pthread_join(state->debugThreadHandle, &threadReturn) != 0) {
235 dvmJdwpNetFree(state);
236 state->netState = NULL;
238 assert(state->netState == NULL);
240 dvmJdwpResetState(state);
241 free(state);
247 bool dvmJdwpIsActive(JdwpState* state)
249 return dvmJdwpIsConnected(state);
258 JdwpState* state = (JdwpState*) arg;
263 * Finish initializing "state", then notify the creating thread that
266 state->debugThreadHandle = dvmThreadSelf()->handle;
267 state->run = true;
268 android_atomic_release_store(true, &state->debugThreadStarted);
270 dvmDbgLockMutex(&state->threadStartLock);
271 dvmDbgCondBroadcast(&state->threadStartCond);
272 dvmDbgUnlockMutex(&state->threadStartLock);
274 /* set the thread state to VMWAIT so GCs don't wait for us */
285 while (state->run) {
288 if (state->params.server) {
293 if (!dvmJdwpAcceptConnection(state))
302 if (!dvmJdwpEstablishConnection(state)) {
304 dvmDbgLockMutex(&state->attachLock);
305 dvmDbgCondBroadcast(&state->attachCond);
306 dvmDbgUnlockMutex(&state->attachLock);
324 if (!dvmJdwpProcessIncoming(state)) /* blocking read */
327 if (first && !dvmJdwpAwaitingHandshake(state)) {
332 state->debugThreadId = dvmDbgGetThreadSelfId();
335 dvmDbgLockMutex(&state->attachLock);
336 dvmDbgCondBroadcast(&state->attachCond);
337 dvmDbgUnlockMutex(&state->attachLock);
341 dvmJdwpCloseConnection(state);
343 if (state->ddmActive) {
344 state->ddmActive = false;
346 /* broadcast the disconnect; must be in RUNNING state */
352 /* release session state, e.g. remove breakpoint instructions */
353 dvmJdwpResetState(state);
362 if (!state->params.server)
363 state->run = false;
377 pthread_t dvmJdwpGetDebugThread(JdwpState* state)
379 if (state == NULL)
382 return state->debugThreadHandle;
392 * suspend calls. It would be nice to just sit in the suspended state, but
428 s8 dvmJdwpLastDebuggerActivity(JdwpState* state)
435 s8 last = dvmQuasiAtomicRead64(&state->lastActivityWhen);