Commit Graph

81 Commits

Author SHA1 Message Date
mainzelm 1599136ffa Added map, for-each, member, assoc to srfi-1-interface 2002-09-04 08:23:47 +00:00
sperber 33c14d7901 First stab at implementing SELECT/SELECT!:
- extend the VM interrupts to distinguish between read and write
  events
- add new ADD-PENDING-CHANNEL instruction to the VM
- add WAIT-FOR-CHANNELS procedure to the run-time system
- implement SELECT and SELECT! on top of that in newports.scm

This runs some basic tests, but in general should be considered
largely untested.

Moreover, SELECT/SELECT! never detect any exceptional conditions---the
returned vectors are always empty.  This is because the VM doesn't
really track those, and it's unclear whether it would be worth the
effort.
2002-08-20 14:03:01 +00:00
sperber ac343ba970 Replace Martin's implementation of selective blocking by the one in
Scheme 48 1.0.1.

Namely, instead of associating a list of queues with every thread, we
associate a single cell, holding the thread.  That cell is stored in
thread queues, and once a thread is made runnable again, the cell is
set to #f.  The thread-queue accessors ignore cells containing #f.

Implement an experimental OBTAIN-LOCK-MULTIPLE to test the whole
thing.
2002-08-16 14:11:50 +00:00
mainzelm 8f1dfb6935 Ensure that newspace is the space in front when dumping an image the
prevent relocation on startup.
2002-08-15 16:35:26 +00:00
mainzelm 4e5b87209d Added ignore-port-locks? flag to output-port-forcers and use it in
flush-all-ports-no-threads.
2002-06-26 11:25:33 +00:00
mainzelm bbfd094bbd Queue os-signal events. 2002-06-10 08:46:08 +00:00
mainzelm aed248d24b First version of libscsh. 2002-05-16 14:50:46 +00:00
sperber 1d35626709 Redo the forking-without-the-threads fix in a way not involving
command levels (as there *are* no command levels for things like scsh
-c):

There's now a new asynchronous event, similar to SPAWN, called NARROW.
It spawns off a new scheduler with just one thread (which runs the
thunk provided as an argument to NARROW) and blocks the current one
until the narrowed scheduler finishes.

For this to work, two schedulers need to be in place: the root
scheduler which performs the housekeeping, and another one inside that
which is the one the program uses---otherwise it's the root scheduler
that's blocked, and that means no housekeeping gets done.  This is
trivially the case for interactive mode, as the command-levels all
have their own schedulers, but we also need to make sure scsh's entry
point fires up its own initial scheduler.
2002-05-03 13:42:36 +00:00
sperber 2a302178e6 Provide names for housekeeping threads for better debugging. 2002-05-03 13:36:15 +00:00
sperber 104ed36666 Export PRESERVE-THREAD-FLUIDS from THREAD-FLUIDS. 2002-04-12 14:29:25 +00:00
mainzelm fe5c9a3783 Cells for thread-env's fluid-cell-{ref,set!}. 2002-04-04 08:45:28 +00:00
mainzelm ea31d95dbc All the SRFIs from S48 0.57. 2002-04-04 08:44:49 +00:00
mainzelm 66a5384a98 alt/ from S48 0.57. 2002-04-04 08:36:20 +00:00
mainzelm ffa5461a39 Added fluid-cell-ref and fluid-cell-set!. 2002-04-04 08:22:20 +00:00
mainzelm 06b68b7c5e Cells as stob (from S48 0.57). 2002-04-04 08:13:53 +00:00
mainzelm 6f083d7205 Small renamer for clarity. 2002-04-04 08:09:15 +00:00
mainzelm 5aee745efb New module language from S48 0.57. 2002-04-03 12:17:19 +00:00
sperber b4312d028c Be even more thorough about releasing port locks after exceptions. 2002-02-28 08:29:04 +00:00
sperber f5d853712b Remove STEAL-CHANNEL-PORT! which has been unused for a while now and
uncomfortably shared code with STEAL-PORT!
2002-02-28 08:28:32 +00:00
sperber 12ced00589 Make sure port locks get released after I/O errors. 2002-02-26 14:40:21 +00:00
mainzelm 150031d918 Revive these wonderful debugging tools. 2002-02-12 07:54:22 +00:00
sperber baf1dbbf76 Pass optional arguments from FORK-THREAD to SPAWN. 2002-02-04 11:34:17 +00:00
mainzelm 2b1d8a3d01 Let s48-do-gc return 0 so the PreScheme compiler will emit the correct
signature of the function.
2002-02-01 10:25:50 +00:00
sperber 7c026ff0b4 Fix external-call-from-callback problem leading to spurious
gc-protection-mismatch exceptions.
2002-01-27 20:20:53 +00:00
mainzelm 284d89fe12 Added hook to align cwd and umask for the S48 system. 2001-12-19 09:14:15 +00:00
mainzelm 8bba3a13e1 Adjust top of stack as well. 2001-12-04 13:06:12 +00:00
sperber 136e313af7 New implementation of (no-inheritance) thread-local cells and thread
fluids.

New implementation of syslog.

Both are to be compatible with what's actually probably going into
Scheme 48.
2001-12-03 15:21:46 +00:00
sperber b5180b35af Make naming consistent with current Scheme 48:
argtype -> argument_type
argnumber -> argument_number
2001-12-03 15:19:48 +00:00
mainzelm 1ed75d8531 Let thread-uid->thread invoke the GC if it encounters multiple threads with the same uid. 2001-11-08 10:24:41 +00:00
mainzelm 405512e0db Expported the rest of the port-handler accessors. 2001-10-25 07:24:42 +00:00
mainzelm fe6a9db1e5 Renamed scsh-events to sigevents. 2001-10-18 09:02:52 +00:00
mainzelm 59bd2ab6e4 Peek on char-source-input-ports does not work. Added error message to report this. 2001-10-05 16:25:41 +00:00
mainzelm 9552e7900a A thread may life in multiple queues. 2001-10-04 11:16:15 +00:00
mainzelm 2e3dd4b65c Fixed small typo. 2001-09-12 13:42:29 +00:00
sperber 7a45d9cc01 Change from Richard, Scheme 48 0.56 -> 0.56.9:
Define exception handler for TIME opcode.
2001-07-10 13:13:27 +00:00
mainzelm 569dbe6649 Bug fix by Richard for finite types used within macros. 2001-07-09 14:15:51 +00:00
mainzelm 68eb897e20 Merged in macro expander changes from Scheme 48 0.56. 2001-07-09 14:15:05 +00:00
mainzelm 8b44999d55 Really fixed the bug in sleep. The previous fix was totally broken. 2001-06-07 16:14:29 +00:00
mainzelm fd264012b9 Added argument conversion for sleep (prevents a core dump on inexact numbers). 2001-05-30 15:55:55 +00:00
sperber 8f02923726 Added thread-fluids which are a cross between thread cells and fluids.
They encapsulate thread-local state and have a binding construct
analogous to LET-FLUID.
2001-05-28 13:44:48 +00:00
sperber 1e212d78a4 Bug fix:
I had forgotten to mark the thread-cell value environment as read-only
when it's passed on to a spawned thread.  Do that now.
2001-05-28 13:31:01 +00:00
sperber 21a8e255eb Added thread-cells structure for thread-local cells.
These can be used (together with fluids) to implement something akin
to PLT's and Chez's parameters for holding thread-local state such as
CWD, syslog channel, etc.
2001-05-22 14:58:15 +00:00
mainzelm 384c28fab4 Hand out the port and not just port-data to the handler. 2001-04-09 07:55:50 +00:00
mainzelm 5d4b66daf4 Upgraded inliner from 0.54. There is still a bug as a call to error must not be the last expression of a procedure. No fix for now, use (if #t (error ...)) as a workaround 2001-03-25 12:08:45 +00:00
mainzelm 0b00ab0380 Upgraded inliner from 0.54. There is still a bug as a call to error must not be the last expression of a procedure. No fix for now, use (if #t (error ...)) as a workaround 2001-03-25 11:21:58 +00:00
mainzelm 25f395c1d0 * New package definitions now that we have SRFI-13 and 14
* Introduced the nomenclature "sigevent"
2001-03-23 12:45:31 +00:00
mainzelm 9b4bb8a19d Adapted some of Richard's changes for char-ready? and output-port-ready?. 2001-03-23 10:59:07 +00:00
mainzelm 9035313159 Added nested multi-line comments. The implementation has two
drawbacks:
1.) Since # and | may be part of an identifier, a#|bla|# is
read as a#|bla|# not as a.

2.) The REPL won't read a comment for its own, it will wait for
another value:
>#|bla|#

3
3
>
2001-01-12 18:16:42 +00:00
mainzelm eb89a60d2c Replaced Scheme 48 with Scsh in user dialog. 2001-01-11 15:05:04 +00:00
mainzelm c1d6d368e5 Built the event system directly into the RTS. Built sighandlers above
it. Removed machinery in low-interrupt.
2001-01-09 15:52:52 +00:00