예제 #1
0
JNIEXPORT jstring JNICALL Java_com_max2idea_android_limbo_jni_VMExecutor_stop(
		JNIEnv* env, jobject thiz) {
	char res_msg[MSG_BUFSIZE + 1] = { 0 };

	if (handle == NULL)
		return (*env)->NewStringUTF(env, "VM not running");

	jclass c = (*env)->GetObjectClass(env, thiz);
	jfieldID fid = (*env)->GetFieldID(env, c, "restart", "I");
	int restart_int = (*env)->GetIntField(env, thiz, fid);

	typedef void (*stop_vm_t)();
	dlerror();
	stop_vm_t stop_vm = (stop_vm_t) dlsym(handle, "stop_vm");
	const char *dlsym_error = dlerror();
	if (dlsym_error) {
		LOGV("Cannot load symbol 'stop_vm': %s\n", dlsym_error);
//        dlclose(handle);
//        handle = NULL;
		return (*env)->NewStringUTF(env, res_msg);
	}

	stop_vm(!restart_int);

	if (restart_int)
		sprintf(res_msg, "VM Restart Request");
	else
		sprintf(res_msg, "VM Stop Request");
	LOGV(res_msg);

	started = restart_int;

	return (*env)->NewStringUTF(env, res_msg);
}
예제 #2
0
파일: emonk_drv.c 프로젝트: kocolosk/emonk
static void
emonk_stop(ErlDrvData handle)
{
    emonk_drv_t* drv = (emonk_drv_t*) handle;
    stop_vm(drv->vm);
    driver_free(drv);
}
예제 #3
0
//-----------------------------------------------------------------------------
// name: ~miniAudicle()
// desc: ...
//-----------------------------------------------------------------------------
miniAudicle::~miniAudicle()
{
    if( vm_on )
        stop_vm();

    delete class_names;
    
    // log
    EM_log( CK_LOG_INFO, "miniAudicle instance destroyed..." );
}