⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kni.h

📁 Nucleus_2_kvm_Hello 是kvm移植到Nucleus系统的源代码。。。好东西啊
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 1998-2002 Sun Microsystems, Inc. All Rights Reserved. * * This software is the confidential and proprietary information of Sun * Microsystems, Inc. ("Confidential Information").  You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Sun. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING * THIS SOFTWARE OR ITS DERIVATIVES. * * Use is subject to license terms. *//*======================================================================= * SYSTEM:    KVM * SUBSYSTEM: K Native Interface (KNI) * FILE:      kni.h * OVERVIEW:  KNI definitions and declarations * AUTHORS:   Efren A. Serra, Antero Taivalsaari *=======================================================================*//*======================================================================= * KNI is an implementation-level native function interface  * for CLDC-category VMs.  KNI is intended to be significantly * more lightweight than JNI, so we have made some compromises: * * - Compile-time interface with static linking. * - Source-level (no binary level) compatibility. * - No argument marshalling. Arguments are read explicitly, *   and return values are set explicitly. * - No invocation API (cannot call Java from native code). * - No class definition support. * - Limited object allocation support (strings only). * - Limited array region access for arrays of a primitive type. * - No monitorenter/monitorexit support. * - Limited error handling and exception support.  *   KNI functions do not throw exceptions, but return error *   values/null instead, or go fatal for severe errors. * - Exceptions can be thrown explicitly, but no direct  *   exception manipulation is supported. * * An important goal for the KNI implementation for the * KVM is backwards compatibility.  All the native functions  * written for the KVM using the earlier pre-KNI style should  * still work. *=======================================================================*/#ifndef _KNI_H_#define _KNI_H_/*========================================================================= * Include files *=======================================================================*/#include "global.h"/*========================================================================= * Definitions and declarations *=======================================================================*//* * KNI primitive data types * * Note: jlong is defined in machine_md.h, since its definition  * varies from one machine/compiler to another. */typedef unsigned char  jboolean;typedef signed char    jbyte;typedef unsigned short jchar;typedef short          jshort;typedef long           jint;typedef float          jfloat;typedef double         jdouble;typedef long           jsize;/* * KNI reference data types *  * Note: jfieldID and jobject are intended to be opaque * types.  The programmer should not make any assumptions * about the actual type of these types, since the actual * type may vary from one KNI implementation to another. *  * In the KVM implementation of KNI, we use the corresponding * KVM-specific types to make debugging easier. */typedef FIELD   jfieldID;typedef cell**  jobject;typedef jobject jclass;typedef jobject jthrowable;typedef jobject jstring;typedef jobject jarray;typedef jarray  jbooleanArray;typedef jarray  jbyteArray;typedef jarray  jcharArray;typedef jarray  jshortArray;typedef jarray  jintArray;typedef jarray  jlongArray;typedef jarray  jfloatArray;typedef jarray  jdoubleArray;typedef jarray  jobjectArray;/* * KNI return types * * The KNI implementation uses these type declarations * to define the actual machine-specific return type of * a KNI function. * * Note: KNI return types are intended to be opaque types. * On the KVM, all these return types are defined as 'void', * but their definition may vary from one VM to another. */typedef void KNI_RETURNTYPE_VOID;typedef void KNI_RETURNTYPE_BOOLEAN;typedef void KNI_RETURNTYPE_BYTE;typedef void KNI_RETURNTYPE_CHAR;typedef void KNI_RETURNTYPE_SHORT;typedef void KNI_RETURNTYPE_INT;typedef void KNI_RETURNTYPE_LONG;typedef void KNI_RETURNTYPE_FLOAT;typedef void KNI_RETURNTYPE_DOUBLE;typedef void KNI_RETURNTYPE_OBJECT;/* * jboolean constants */#define KNI_TRUE  1#define KNI_FALSE 0/* * Return values for KNI functions. * Values correspond to JNI. */#define KNI_OK           0                 /* Success */#define KNI_ERR          (-1)              /* Unknown error */#define KNI_ENOMEM       (-4)              /* Not enough memory */#define KNI_EINVAL       (-6)              /* Invalid arguments */#ifdef __cplusplus# define KNIEXPORT extern "C"#else# define KNIEXPORT extern#endif /* __cplusplus *//* * Version information */#define KNI_VERSION 0x00010000 /* KNI version 1.0 *//*========================================================================= * KNI functions (refer to KNI Specification for details) *=======================================================================*//* Version information */KNIEXPORT jint     KNI_GetVersion();/* Class and interface operations */KNIEXPORT void     KNI_FindClass(const char* name, jclass classHandle);KNIEXPORT void     KNI_GetSuperClass(jclass classHandle, jclass superclassHandle);KNIEXPORT jboolean KNI_IsAssignableFrom(jclass classHandle1, jclass classHandle2);/* Exceptions and errors */KNIEXPORT jint     KNI_ThrowNew(const char* name, const char* message);KNIEXPORT void     KNI_FatalError(const char* message);/* Object operations */KNIEXPORT void     KNI_GetObjectClass(jobject objectHandle, jclass classHandle);KNIEXPORT jboolean KNI_IsInstanceOf(jobject objectHandle, jclass classHandle);/* Instance field access */KNIEXPORT jfieldID KNI_GetFieldID(jclass classHandle, const char* name, const char* signature);KNIEXPORT jboolean KNI_GetBooleanField(jobject objectHandle, jfieldID fieldID);KNIEXPORT jbyte    KNI_GetByteField(jobject objectHandle, jfieldID fieldID);KNIEXPORT jchar    KNI_GetCharField(jobject objectHandle, jfieldID fieldID);KNIEXPORT jshort   KNI_GetShortField(jobject objectHandle, jfieldID fieldID);KNIEXPORT jint     KNI_GetIntField(jobject objectHandle, jfieldID fieldID);KNIEXPORT jfloat   KNI_GetFloatField(jobject objectHandle, jfieldID fieldID);KNIEXPORT jlong    KNI_GetLongField(jobject objectHandle, jfieldID fieldID);KNIEXPORT jdouble  KNI_GetDoubleField(jobject objectHandle, jfieldID fieldID);KNIEXPORT void     KNI_GetObjectField(jobject objectHandle, jfieldID fieldID, jobject toHandle);KNIEXPORT void     KNI_SetBooleanField(jobject objectHandle, jfieldID fieldID, jboolean value);KNIEXPORT void     KNI_SetByteField(jobject objectHandle, jfieldID fieldID, jbyte value);KNIEXPORT void     KNI_SetCharField(jobject objectHandle, jfieldID fieldID, jchar value);KNIEXPORT void     KNI_SetShortField(jobject objectHandle, jfieldID fieldID, jshort value);KNIEXPORT void     KNI_SetIntField(jobject objectHandle, jfieldID fieldID, jint value);KNIEXPORT void     KNI_SetFloatField(jobject objectHandle, jfieldID fieldID, jfloat value);KNIEXPORT void     KNI_SetLongField(jobject objectHandle, jfieldID fieldID, jlong value);KNIEXPORT void     KNI_SetDoubleField(jobject objectHandle, jfieldID fieldID, jdouble value);KNIEXPORT void     KNI_SetObjectField(jobject objectHandle, jfieldID fieldID, jobject fromHandle);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -