home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / kaffe-0.5p4-src.tgz / tar.out / contrib / kaffe / lib / native / java.lang / Runtime.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  3KB  |  150 lines

  1. /*
  2.  * java.lang.Runtime.c
  3.  *
  4.  * Copyright (c) 1996 Systems Architecture Research Centre,
  5.  *           City University, London, UK.
  6.  *
  7.  * See the file "license.terms" for information on usage and redistribution
  8.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  9.  *
  10.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, February 1996.
  11.  */
  12.  
  13. #include "config.h"
  14. #include <stdio.h>
  15. #include <string.h>
  16. #include <stdlib.h>
  17. #include <native.h>
  18. #include "defs.h"
  19. #include "files.h"
  20. #include "java.lang.stubs/Runtime.h"
  21.  
  22. #define    LIBRARY_PREFIX    "/libkaffe_"
  23.  
  24. extern char* getLibraryPath(void);
  25.  
  26. /*
  27.  * Initialise the linker and return the search path for shared libraries.
  28.  */
  29. struct Hjava_lang_String*
  30. java_lang_Runtime_initializeLinkerInternal(struct Hjava_lang_Runtime* this)
  31. {
  32.     char* libraryPath;
  33.  
  34.     libraryPath = getLibraryPath();
  35.     return (makeJavaString(libraryPath, strlen(libraryPath)));
  36. }
  37.  
  38. /*
  39.  * Construct a library name.
  40.  */
  41. struct Hjava_lang_String*
  42. java_lang_Runtime_buildLibName(struct Hjava_lang_Runtime* this, struct Hjava_lang_String* s1, struct Hjava_lang_String* s2)
  43. {
  44.     char lib[MAXLIBPATH];
  45.     char str[MAXPATHLEN];
  46.  
  47.     /*
  48.      * Note. Although the code below will build a library string, if
  49.      * it doesn't fit into the buffer, it will truncate the path
  50.      * silently.
  51.      */
  52.     javaString2CString(s1, str, sizeof(str));
  53.     strncpy(lib, str, MAXLIBPATH-1);
  54.     strncat(lib, LIBRARY_PREFIX, MAXLIBPATH-1);
  55.     javaString2CString(s2, str, sizeof(str));
  56.     strncat(lib, str, MAXLIBPATH-1);
  57.     strncat(lib, LIBRARYSUFFIX, MAXLIBPATH-1);
  58.     lib[MAXLIBPATH-1] = 0;
  59.  
  60.     return (makeJavaString(lib, strlen(lib)));
  61. }
  62.  
  63. /*
  64.  * Load in a library file.
  65.  */
  66. jint /* bool */
  67. java_lang_Runtime_loadFileInternal(struct Hjava_lang_Runtime* this, struct Hjava_lang_String* s1)
  68. {
  69.     char lib[MAXPATHLEN];
  70.     int r;
  71.  
  72.     javaString2CString(s1, lib, sizeof(lib));
  73.     r = loadNativeLibrary(lib);
  74.  
  75.     return (r == 0 ? 1 : 0);
  76. }
  77.  
  78. /*
  79.  * Exit - is this just a thread or the whole thing?
  80.  */
  81. void
  82. java_lang_Runtime_exitInternal(struct Hjava_lang_Runtime* r, jint v)
  83. {
  84.     exit (v);
  85. }
  86.  
  87. /*
  88.  * Exec another program.
  89.  */
  90. struct Hjava_lang_Process*
  91. java_lang_Runtime_execInternal(struct Hjava_lang_Runtime* this, HArrayOfObject* args, HArrayOfObject* envs)
  92. {
  93.     abort();
  94. }
  95.  
  96. /*
  97.  * Free memory.
  98.  */
  99. jlong
  100. java_lang_Runtime_freeMemory(struct Hjava_lang_Runtime* this)
  101. {
  102.     return (JLONG_ZERO);
  103. }
  104.  
  105. /*
  106.  * Total memory.
  107.  */
  108. jlong
  109. java_lang_Runtime_totalMemory(struct Hjava_lang_Runtime* this)
  110. {
  111.     return (JLONG_ZERO);
  112. }
  113.  
  114. /*
  115.  * Run the garbage collector.
  116.  */
  117. void
  118. java_lang_Runtime_gc(struct Hjava_lang_Runtime* this)
  119. {
  120.     invokeGarbageCollector();
  121. }
  122.  
  123. /*
  124.  * Run any pending finialized methods.
  125.  *  Finalising is part of the garbage collection system - so just run that.
  126.  */
  127. void
  128. java_lang_Runtime_runFinalization(struct Hjava_lang_Runtime* this)
  129. {
  130.     invokeGarbageCollector();
  131. }
  132.  
  133. /*
  134.  * Enable/disable tracing of instructions.
  135.  */
  136. void
  137. java_lang_Runtime_traceInstructions(struct Hjava_lang_Runtime* this, jint on)
  138. {
  139.     abort();
  140. }
  141.  
  142. /*
  143.  * Enable/disable tracing of method calls.
  144.  */
  145. void
  146. java_lang_Runtime_traceMethodCalls(struct Hjava_lang_Runtime* this, jint on)
  147. {
  148.     abort();
  149. }
  150.