📄 jvm_runtime.c
字号:
/*****************************************************************************
* 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 + -