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

📄 jvm_runtime.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 4 页
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2001
*
*****************************************************************************/

/*****************************************************************************
 *
 * Filename:
 * ---------
 *   jvm_runtime.c
 *
 * Project:
 * --------
 *   Maui_Software
 *
 * Description:
 * ------------
 *   This file implements JAL system service APIs
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/

/*************************************************************************
 * Include Header iles
 *************************************************************************/
#include "jal.h"
#include "jvm_interface.h"
#include "jvm_internal.h"
#include "jam_msg_handler.h"
#include "rtc_sw.h"
#include "gpt_sw.h"
#ifdef DATACACHE_FBBR_ON
#include "intrCtrl.h"
#include "cache_sw.h"
#endif /* DATACACHE_FBBR_ON */ /* defined(__MTK_TARGET__) && defined(MT6228) */
#include "app_crc.h "

/*************************************************************************
 * Global Definition and Declaration
 *************************************************************************/
/* January 1, year 1 (Gregorian) */
#define GREGORIAN_DAY_TO_JULIAN_DAY                   (1721426)
/* January 1, 1970 */
#define JAN_1_1970_GREGORIAN_DAY_TO_JULIAN_DAY           (2440588)
/* (24 * 60 * 60 * 1000) */
#define MILISPERDAT                             (86400000)

/* Julian calendar. Gregorian calendar */
short const NUM_DAYS[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
short const LEAP_NUM_DAYS[] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};

/* If allocate Java heap from static memory, use pointer address directly */
long *javaheap_space;
kal_uint32 javaheap_size;
long *javaruntime_space;
kal_uint32 javaruntime_size;

unsigned max_java_use_space;

static kal_uint32 _jvm_log_index;
kal_char _jvm_log_buffer[JVM_DEBUG_STRINGBUFFER_SIZE];

#if DATACACHE_FBBR_ON
static kal_int32 saveFBBRvalue;
static kal_bool FBBR_initialized = KAL_FALSE;
#endif /* DATACACHE_FBBR_ON */ 

extern kal_uint32 EnableFBBR(void);
extern void DisableFBBR(kal_uint32 val);
extern kal_bool is_jvm_in_busy;

static kal_uint8 jvm_imsi[17];
static kal_int32 jvm_imsi_error;

extern kal_eventgrpid J2ME_general_event_group;

/* Timer ID */
#define JVM_BASE_TIMER_ID 0x0000
#define MAX_NUM_OF_JVM_TIMER 20

typedef struct
{
    eventid event_id;
    kal_timer_func_ptr callback_func;
    void *arg;
} jvm_timer_table_struct;

jvm_timer_table_struct jvm_timer_table[MAX_NUM_OF_JVM_TIMER];
event_scheduler *jvm_event_scheduler_ptr;
stack_timer_struct jvm_base_timer;
extern kal_mutexid J2ME_timer_mutex;

/*************************************************************************
 * Function Definition
 *************************************************************************/


/*****************************************************************************
 * FUNCTION
 *  jvm_allocate_heap
 * DESCRIPTION
 *  
 * PARAMETERS
 *  size        [IN]        
 * RETURNS
 *  
 *****************************************************************************/
kal_uint32 *jvm_allocate_heap(long size)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint32 *heap_ptr = (kal_uint32*) javaheap_space;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return (kal_uint32*) heap_ptr;
}


/*****************************************************************************
 * FUNCTION
 *  jvm_release_heap
 * DESCRIPTION
 *  
 * PARAMETERS
 *  space       [?] 
 * RETURNS
 *  void
 *****************************************************************************/
void jvm_release_heap(kal_uint32 *space)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
}


/*****************************************************************************
 * FUNCTION
 *  jvm_get_heap_size
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_uint32 jvm_get_heap_size()
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return javaheap_size;
}


/*****************************************************************************
 * FUNCTION
 *  jvm_get_calendar_time
 * DESCRIPTION
 *  Get the system time in ms since 1900
 * PARAMETERS
 *  calendar_time       [?] 
 * RETURNS
 *  void
 *****************************************************************************/
void jvm_get_calendar_time(kal_uint32 *calendar_time)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    t_rtc sys_time;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_mem_set(&sys_time, 0, sizeof(t_rtc));

    /* Save system time */
    RTC_GetTime((t_rtc*) & sys_time);

    calendar_time[YEAR] = sys_time.rtc_year + 100;  /* In CLDC, year is from 00; that is, 1 is 1901 */
    calendar_time[MONTH] = sys_time.rtc_mon - 1;    /* In CLDC, month is from 0 to 11 */
    calendar_time[DAY_OF_MONTH] = sys_time.rtc_day;
    calendar_time[HOUR] = sys_time.rtc_hour;
    calendar_time[MINUTE] = sys_time.rtc_min;
    calendar_time[SECOND] = sys_time.rtc_sec;

⌨️ 快捷键说明

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