ps-package-defs.scm 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. ; Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. ; Authors: Richard Kelsey, Jonathan Rees, Marcus Crestani, Mike Sperber,
  3. ; Martin Gasbichler
  4. (define-structures ((vm-utilities vm-utilities-interface))
  5. (open prescheme)
  6. (files (util vm-utilities))
  7. (begin
  8. (define-syntax assert
  9. (lambda (exp rename compare)
  10. 0))
  11. ))
  12. (define-structures ((external external-interface))
  13. (open prescheme)
  14. (begin
  15. (define extended-vm
  16. (external "s48_extended_vm" (=> (integer integer) integer)))
  17. (define external-call
  18. (external "s48_external_call" (=> (integer integer integer address)
  19. integer)))
  20. (define external-call-2
  21. (external "s48_external_call_2" (=> (integer integer integer address)
  22. integer)))
  23. (define schedule-interrupt
  24. (external "s48_schedule_alarm_interrupt" (=> (integer) integer)))
  25. ;; implemented in C, wrapper around s48-dequeue-external-event/unsafe!
  26. (define dequeue-external-event!
  27. (external "s48_dequeue_external_event" (=> () integer boolean)))
  28. (define cheap-time
  29. (external "CHEAP_TIME" (=> () integer)))
  30. (define real-time
  31. (external "s48_real_time" (=> () integer integer)))
  32. (define run-time
  33. (external "s48_run_time" (=> () integer integer)))
  34. (define get-os-string-encoding
  35. (external "s48_get_os_string_encoding" (=> () (^ char))))
  36. (define host-architecture
  37. (external "S48_HOST_ARCHITECTURE" (^ char)))
  38. (define s48-call-native-procedure
  39. (external "s48_call_native_procedure" (=> (integer integer) integer)))
  40. (define s48-invoke-native-continuation
  41. (external "s48_invoke_native_continuation" (=> (integer integer) integer)))
  42. (define s48-jump-native
  43. (external "s48_jump_to_native_address" (=> (integer integer) integer)))
  44. (define s48-native-return
  45. (external "((long)&s48_native_return)" integer))
  46. (define get-proposal-lock!
  47. (external "GET_PROPOSAL_LOCK" (=> () null)))
  48. (define release-proposal-lock!
  49. (external "RELEASE_PROPOSAL_LOCK" (=> () null)))
  50. (define shared-ref
  51. (external "SHARED_REF" (=> (integer) integer)))
  52. (define real-shared-set!
  53. (external "SHARED_SETB" (=> (integer integer) null)))
  54. (define-syntax shared-set!
  55. (syntax-rules ()
  56. ((shared-set! x v)
  57. (real-shared-set! x v))))
  58. ; for use in C functions usable from external code, defined as
  59. ; PreScheme procedures
  60. (define argument-type-violation
  61. ;; value
  62. (external "s48_argument_type_violation" (=> (integer) null)))
  63. (define range-violation
  64. ;; value, min, max
  65. (external "s48_range_violation" (=> (integer integer integer) null)))
  66. ; Lots of bignum stuff. This should be moved to its own interface.
  67. (define export-key
  68. (external "s48_export_key" (=> (integer) integer)))
  69. (define external-bignum-make-cached-constants
  70. (external "s48_bignum_make_cached_constants" (=> () null)))
  71. (define external-bignum-add
  72. (external "(char *)s48_bignum_add" (=> (address address) address)))
  73. (define external-bignum-subtract
  74. (external "(char *)s48_bignum_subtract" (=> (address address) address)))
  75. (define external-bignum-multiply
  76. (external "(char *)s48_bignum_multiply" (=> (address address) address)))
  77. (define external-bignum-quotient
  78. (external "(char *)s48_bignum_quotient" (=> (address address) address)))
  79. (define external-bignum-remainder
  80. (external "(char *)s48_bignum_remainder" (=> (address address) address)))
  81. (define external-bignum-divide
  82. (external "s48_bignum_divide" (=> (address address)
  83. boolean address address)))
  84. (define external-bignum-equal?
  85. (external "s48_bignum_equal_p" (=> (address address) boolean)))
  86. (define external-bignum-compare
  87. (external "s48_bignum_compare" (=> (address address) integer)))
  88. (define external-bignum-test
  89. (external "s48_bignum_test" (=> (address) integer)))
  90. (define external-bignum-negate
  91. (external "(char *) s48_bignum_negate" (=> (address) address)))
  92. (define external-bignum-arithmetic-shift
  93. (external "(char *) s48_bignum_arithmetic_shift"
  94. (=> (address integer) address)))
  95. (define external-bignum-bitwise-not
  96. (external "(char *) s48_bignum_bitwise_not"
  97. (=> (address) address)))
  98. (define external-bignum-bit-count
  99. (external "s48_bignum_bit_count"
  100. (=> (address) integer)))
  101. (define external-bignum-bitwise-and
  102. (external "(char *) s48_bignum_bitwise_and"
  103. (=> (address address) address)))
  104. (define external-bignum-bitwise-ior
  105. (external "(char *) s48_bignum_bitwise_ior"
  106. (=> (address address) address)))
  107. (define external-bignum-bitwise-xor
  108. (external "(char *) s48_bignum_bitwise_xor"
  109. (=> (address address) address)))
  110. (define external-bignum-from-long
  111. (external "(char *) s48_long_to_bignum" (=> (integer) address)))
  112. (define external-bignum-from-unsigned-long
  113. (external "(char *) s48_ulong_to_bignum" (=> (unsigned-integer) address)))
  114. (define external-bignum->long
  115. (external "s48_bignum_to_long" (=> (address) integer)))
  116. (define external-bignum-fits-in-word?
  117. (external "s48_bignum_fits_in_word_p" (=> (address integer boolean)
  118. boolean)))
  119. ;; external call interface
  120. (define trace-external-calls
  121. (external "s48_trace_external_calls" (=> () null)))
  122. ))
  123. (define-structures ((channel-io channel-interface)
  124. (events event-interface))
  125. (open prescheme)
  126. (files (data ps-channel)))