midpi3test.c
来自「This is a resource based on j2me embedde」· C语言 代码 · 共 136 行
C
136 行
/* * * * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. *//** * @file * * Native functions for the I3 test framework. */#include <kni.h>#include <sni.h>#include <stdio.h>static jint refSemReady = -1; /* ref ID for the semReady semaphore */static jint refSemContinue = -1; /* ref ID for the semContinue semaphore *//** * Initializes semaphores for cross-isolate synchronization. * <p> * Java declaration: * <pre> * init0(Lcom/sun/cldc/util/Semaphore;Lcom/sun/cldc/util/Semaphore;)V * </pre> * Java parameters: * <pre> * semReady the semaphore the slave releases when its values * ready to have their assertions checked * semContinue the semaphore the master releases when the slave is * allowed to continue * </pre> */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_midp_i3test_IsolateSynch_init0(void) { if (refSemReady != -1 || refSemContinue != -1) { KNI_ThrowNew("java/lang/IllegalStateException", NULL); KNI_ReturnVoid(); } KNI_StartHandles(2); KNI_DeclareHandle(semReady); KNI_DeclareHandle(semContinue); KNI_GetParameterAsObject(1, semReady); KNI_GetParameterAsObject(2, semContinue); refSemReady = SNI_AddStrongReference(semReady); if (refSemReady == -1) { KNI_FatalError("refSemReady: out of memory"); } refSemContinue = SNI_AddStrongReference(semContinue); if (refSemReady == -1) { KNI_FatalError("refSemContinue: out of memory"); } KNI_EndHandles(); KNI_ReturnVoid();}/** * getSemReady0(V)Lcom/sun/cldc/util/Semaphore; */KNIEXPORT KNI_RETURNTYPE_OBJECTJava_com_sun_midp_i3test_IsolateSynch_getSemReady0() { KNI_StartHandles(1); KNI_DeclareHandle(sem); if (refSemReady == -1) { KNI_ReleaseHandle(sem); } else { SNI_GetReference(refSemReady, sem); } KNI_EndHandlesAndReturnObject(sem);}/** * getSemContinue0(V)Lcom/sun/cldc/util/Semaphore; */KNIEXPORT KNI_RETURNTYPE_OBJECTJava_com_sun_midp_i3test_IsolateSynch_getSemContinue0() { KNI_StartHandles(1); KNI_DeclareHandle(sem); if (refSemContinue == -1) { KNI_ReleaseHandle(sem); } else { SNI_GetReference(refSemContinue, sem); } KNI_EndHandlesAndReturnObject(sem);}/** * fini0(V)V */KNIEXPORT KNI_RETURNTYPE_VOIDJava_com_sun_midp_i3test_IsolateSynch_fini0() { if (refSemReady != -1) { SNI_DeleteReference(refSemReady); refSemReady = -1; } if (refSemContinue != -1) { SNI_DeleteReference(refSemContinue); refSemContinue = -1; } KNI_ReturnVoid();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?