998 Commits

Author SHA1 Message Date
Brian Anderson
ae8ea4a78b rt: Add constructors and destructors for stacks 2012-02-09 19:00:15 -08:00
Brian Anderson
b98df86c09 rt: Move some stack manipulation functions into rust_task 2012-02-09 19:00:15 -08:00
Brian Anderson
4bd8f8d936 rt: Rename new_stack to next_stack, del_stack to prev_stack 2012-02-09 19:00:15 -08:00
Brian Anderson
889a783494 rt: Remove rust_task::rust_sp 2012-02-09 19:00:15 -08:00
Brian Anderson
d39ea47746 rt: Remove rust_task_user struct 2012-02-09 19:00:15 -08:00
Brian Anderson
1dad32c015 rt: Remove unused builtins 2012-02-09 19:00:15 -08:00
Brian Anderson
d756b01619 rt: Add a function for configuring task notification 2012-02-09 19:00:15 -08:00
Brian Anderson
e0d5b92b84 rt: Begin moving stack-building functions to rust_stack.cpp 2012-02-09 19:00:15 -08:00
Brian Anderson
2983e77383 rt: Remove unused context functions 2012-02-09 19:00:15 -08:00
Jyun-Yan You
b778dac197 fix build on freebsd 2012-02-09 18:41:57 -08:00
Brian Anderson
149d1d4a6e core: Add a test for blocking in native code 2012-02-08 15:42:51 -08:00
Brian Anderson
35ba9715fa core: Add task::spawn_sched
This function creates a new scheduler with a specified number of threads and
immediately executes a task on it. The scheduler is configured to terminate
when the task dies. This is the minimum API necessary to enable blocking C
calls.
2012-02-08 15:42:51 -08:00
Brian Anderson
2f4e7c157e rt: Export a scheduler API 2012-02-08 15:42:51 -08:00
Brian Anderson
f2a1aa2649 rt: Hold schedulers in a map 2012-02-08 15:42:51 -08:00
Brian Anderson
028af5cb6c rt: Change the lifecycle of tasks and schedulers for various reasons
This is in preparation for giving schedulers their own life cycle separate
from the kernel.

Tasks must be deleted before their scheduler thread, so we can't let the
scheduler exit before all its tasks have been cleaned up. In this scheme,
the scheduler will unregister tasks with the kernel when they are reaped,
then drop their ref on the task (there may still be others). When the task
ref count hits zero, the task will request to be unregistered from the
scheduler, which is responsible for deleting the task.

Instead of having the kernel tell the scheduler to exit, let the scheduler
decide when to exit. For now it will exit when all of its tasks are
unregistered.
2012-02-08 15:42:51 -08:00
Brian Anderson
ebc3646c39 rt: Start schedulers immediately upon creation 2012-02-08 15:42:51 -08:00
Brian Anderson
7685e5de94 rt: Refactor the rust_kernel interface a bit 2012-02-08 15:42:47 -08:00
Brian Anderson
ad80823a6c rt: Introduce scheduler ids 2012-02-08 15:33:40 -08:00
Brian Anderson
c76b81cddf rt: Delete schedulers immediately upon release
This will be needed once we support dynamically changing schedulers.
2012-02-08 15:33:40 -08:00
Brian Anderson
f39e64d56a rt: Change the scheme used for terminating the kernel
Instead of joining on the scheduler threads, instead keep a count of active
schedulers. When there are no more schedulers raise a signal for the main
thread to continue.

This will be required once schedulers can be added and removed from the
running kernel.
2012-02-08 15:33:40 -08:00
Brian Anderson
6eafe5d772 rt: Remove is_running flag from rust_thread. Unused 2012-02-08 15:33:40 -08:00
Brian Anderson
fad3de5900 rt: Remove rust_scheduler::rval. Unused 2012-02-08 15:33:40 -08:00
Niko Matsakis
6e680e36a7 deprecate old style box shape strings 2012-02-08 13:10:20 -08:00
Niko Matsakis
a6dde7766e fix bug that causes premature pops from obstack
basically, the alignment step did not check if it walked off
the end of the buffer
2012-02-08 12:55:19 -08:00
Niko Matsakis
526e73d7f8 make shape code use the tydesc found in the box, not the shape str 2012-02-08 09:14:59 -08:00
Brian Anderson
9b01620e8d rt: Don't ignore result of chdir. Fail hard for now with a FIXME
My gcc won't let the result of this function be ignored.
2012-02-07 20:28:57 -08:00
Graydon Hoare
93450abb4b Make process-spawning take environments and working directories, remove procsrv task from compiletest. 2012-02-07 19:57:03 -08:00
Magnus Auvinen
3e9859362b made leak an intrinsic to avoid a c-call. added memmove and memcpy intrinsics 2012-02-07 15:08:54 -08:00
Marijn Haverbeke
47143ee24a Stop storing cmp glue in tydescs
There's no such thing anymore, we can simply call upcalls.cmp_type.
2012-02-07 14:37:10 +01:00
Marijn Haverbeke
b28a5552e3 Reuse monomorphized functions for different box types
The free glue for opaque boxes will pick the actual tydesc out of the
box, and call its glue.

Issue #1736
2012-02-07 14:36:02 +01:00
Brian Anderson
3bd0338c19 Revert "log to stderr instead of stdout"
This is causing mysterious hangs on windows. Issue #1769.

This reverts commit d65eabd5de4c41e4bc93b9c6c03d6278299ceb76.
2012-02-06 18:29:58 -08:00
Kevin Cantu
6be25c8a0c Adding str::reserve 2012-02-05 14:56:16 -08:00
Kevin Cantu
d3dfe8758d Making vec::reserve reserve precisely the size given (untested) 2012-02-05 14:56:16 -08:00
Brian Anderson
e818406072 rt: Expand rust_kernel::live_tasks to a uintptr_t 2012-02-04 01:15:00 -08:00
Brian Anderson
9fa950ec53 rt: Stop using atomic ops on rust_kernel::live_tasks
These ops are all done within spitting distance of a suitable lock,
so just protect it with the lock.
2012-02-04 00:31:43 -08:00
Brian Anderson
21d783c338 rt: Make isaac_init not a template 2012-02-03 23:48:12 -08:00
Brian Anderson
f7a727e861 rt: Remove some silly locks in rust_scheduler 2012-02-03 23:48:12 -08:00
Brian Anderson
c7777f4fd9 rt: Add sanity checks when we hit the max task/port id 2012-02-03 23:48:12 -08:00
Brian Anderson
12fa90888e rt: Clean up the way the kernel tracks tasks 2012-02-03 23:48:12 -08:00
Brian Anderson
e7f00b6493 rt: Do all task creation through a scheduler 2012-02-03 23:48:12 -08:00
Brian Anderson
bf250bec7c rt: Create new tasks through the current thread's scheduler 2012-02-03 23:48:12 -08:00
Brian Anderson
3d0e7a7af3 rt: Add a field to rust_task to hold its scheduler 2012-02-03 23:48:12 -08:00
Brian Anderson
8d881967a2 rt: Extract rust_scheduler from rust_task_thread 2012-02-03 23:48:12 -08:00
Brian Anderson
f94339cc1c rt: Rename rust_scheduler to rust_task_thread 2012-02-03 23:48:12 -08:00
Ted Horst
d65eabd5de log to stderr instead of stdout
includes rustc diagnostics
runtest updated to check stderr for errors
2012-02-03 20:55:53 -08:00
Marijn Haverbeke
c1b075d042 Remove experimental GC code
It's been sitting unused long enough to have bitrotted completely.
2012-02-03 11:34:12 +01:00
Brian Anderson
1ea184285e rt: Change the win32 event object to an auto-reset event
The way I read the docs, having this be a manual reset event means
that after the first time it's signalled it stays that way until reset,
and we never, ever reset it.
2012-02-02 18:30:06 -08:00
Brian Anderson
3b4dd26ff1 rt: Remove lock_and_signal::signal_all 2012-02-02 18:29:03 -08:00
Brian Anderson
9c33f2c561 rt: Remove lock_and_signal::timed_wait 2012-02-02 18:25:49 -08:00
Brian Anderson
cd774fc5fa rt: Stop waking up the scheduler on a timer 2012-02-02 18:23:01 -08:00