Commit Graph

229 Commits

Author SHA1 Message Date
Gareth Daniel Smith c9f8ae02bc add a seeded random number generator so that sequences of random numbers can be easily reproduced (for https://github.com/mozilla/rust/issues/2379) 2012-05-21 17:38:05 -07:00
Erick Tryzelaar e7ca3e4db0 expose tzset 2012-05-19 10:08:43 -07:00
Brian Anderson 7277cd7198 core: Add task::unkillable 2012-05-15 16:13:42 -07:00
Brian Anderson beb1a59f82 core: Add comm::recv_chan to receive from a channel 2012-05-03 16:38:16 -07:00
Brian Anderson 46cc11ea88 core: Serialize all access to the environment using a weak global task 2012-04-30 17:34:29 -07:00
Brian Anderson 01dc4a8b26 core: Add priv::weaken_task 2012-04-07 19:56:41 -07:00
Brian Anderson 63942c969d core: Add priv::chan_from_global_ptr
This allows singleton, globally accessible tasks to be created
2012-04-06 17:44:26 -07:00
Erick Tryzelaar 4a4889859e std: add localtime/gmtime support. 2012-04-03 22:43:10 -07:00
Erick Tryzelaar 44c7386376 std: fix a typo. 2012-04-03 22:43:09 -07:00
Erick Tryzelaar 4871f11439 std: change timeval to ns resolution timespec
This lets us use the more precise clock_gettime on posix
machines.
2012-04-03 22:43:08 -07:00
Erick Tryzelaar 7aae7320db std: change time::timeval to be {sec: i64, usec: i32}.
It's possible to have negative times if expressing time before 1970, so
we should use signed types. Other platforms can return times at a higher
resolution, so we should use 64 bits.
2012-04-03 22:43:08 -07:00
Brian Anderson e325146eb4 Merge remote-tracking branch 'brson/mainthread'
Conflicts:
	src/rt/rust_kernel.cpp
	src/rt/rust_scheduler.cpp
	src/rt/rust_scheduler.h
2012-04-03 20:30:01 -07:00
Jon Morton 632a4c9326 Refactor includes structure, getting rid of rust_internal.h
Many changes to code structure are included:
- removed TIME_SLICE_IN_MS
- removed sychronized_indexed_list
- removed region_owned
- kernel_owned move to kernel.h, task_owned moved to task.h
- global configs moved to rust_globals.h
- changed #pragma once to standard guard in rust_upcall.h
- got rid of memory.h
2012-04-03 16:02:38 -07:00
Brian Anderson bef72447e7 core: Add a scheduler mode, osmain, to spawn onto the main scheduler 2012-04-03 14:28:30 -07:00
Jon Morton 33a949eed6 Add global rust_get_current_task
Previously two methods existed: rust_sched_loop::get_task and rust_task::get_task_from_tcb. Merge both of them into one, trying the faster one (tcb) first, and if that fails, the slower one from the tls.
2012-04-02 14:21:08 -07:00
Jon Morton 413994ea3e replace assertion macros with plain asserts 2012-04-01 21:14:16 -05:00
Brian Anderson 243790836a rt: Rename rust_task_thread to rust_sched_loop
This class no longer represents a thread; it just schedules tasks.
2012-03-31 19:51:29 -07:00
Graydon Hoare 855c99ea75 Some tests for passing and returning structures by value on x64. Close #1402. Close #1970. 2012-03-20 16:44:56 -07:00
Brian Anderson 561511e628 core: Channels are just port ids 2012-03-15 11:10:53 -07:00
Brian Anderson 1366d65660 rt: Remove remaining uses of rust_kernel::get_task_by_id 2012-03-15 11:10:52 -07:00
Brian Anderson b278d675a2 rt: Look up ports through a single port table
Instead of a two-level lookup, just use one big table
2012-03-15 11:10:52 -07:00
Brian Anderson dc0b9f44e2 rt: Change the rust_port refcounting scheme to avoid races
Hopefully...
2012-03-06 17:14:40 -08:00
Brian Anderson ee991cae81 rt: Add a hack to fix a port detach bug 2012-03-05 20:02:25 -08:00
Brian Anderson 958c321083 rt: Fix the atomic get_ref_count method to avoid races 2012-03-05 19:39:56 -08:00
Brian Anderson 1347d04bb0 rt: Properly block tasks while waiting for port detach 2012-03-05 19:39:56 -08:00
Brian Anderson 4c4a2320eb rt: Make rust_port_detach less contentious
It still utterly dominates some benchmarks with busy waiting, but at least it
doesn't create lock contention while doing so.
2012-03-05 19:39:56 -08:00
Brian Anderson e08f46db68 rt: Move receive code into rust_port 2012-03-05 19:39:56 -08:00
Brian Anderson 77295c56c5 rt: Simplify the recv interface 2012-03-05 19:39:56 -08:00
Brian Anderson 8e0efce0da rt: Move some code from rust_port_detach into rust_port::detach 2012-03-05 19:39:56 -08:00
Brian Anderson e3ccac8ed3 rt: Renome rust_task::lock to port_lock 2012-03-05 19:39:55 -08:00
Graydon Hoare 6c87c34277 Remove dead code from rt (debug_obj, rust_obj, rust_closure, rust_box_obj, rust_vtable) 2012-03-05 15:50:11 -08:00
Brian Anderson f4ce965ce7 rt: Port ref counts are protected by the task lock. Ick. 2012-03-02 16:33:33 -08:00
Niko Matsakis def72bda47 retool inline encoding to handle methods, fix tests 2012-03-02 06:47:25 -08:00
Niko Matsakis 7d0958f70f add the ability to snag the frame so we can verify that we are inlining 2012-02-29 11:54:47 -08:00
Brian Anderson 4220dcf1e9 core: New task API 2012-02-20 18:58:04 -08:00
Chris Peterson 3d202d7eae rt: rename nano_time() builtin to match time::precise_time_ns() 2012-02-18 01:39:42 -08:00
Chris Peterson 123a920f59 std: Fix Windows system time conversion for get_time() 2012-02-18 01:21:26 -08:00
Brian Anderson b2cfb7ef82 rt: Add rust_port_select function 2012-02-16 11:12:22 -08:00
Brian Anderson d5e7f0d113 rt: Don't kill tasks while they are in a callback from C 2012-02-14 11:24:09 -08:00
Brian Anderson 214cdd0dee rustc: Translate crust functions 2012-02-14 11:24:09 -08:00
Brian Anderson 4cc1e31f74 rt: Add a Rust callback debugging function 2012-02-14 11:24:09 -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
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
Graydon Hoare 93450abb4b Make process-spawning take environments and working directories, remove procsrv task from compiletest. 2012-02-07 19:57:03 -08: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