Tim Chevalier
c814df0bd6
Comments only: annotate FIXMEs
2012-06-21 16:03:28 -07:00
Michael Sullivan
4c0d41cffa
Add a malloc_dyn upcall for dynamically sized allocations on the shared heap.
2012-06-13 17:59:21 -07:00
Brian Anderson
f717100fc7
rt: Start tasks, ports and scheds at 1, assert when we see 0. Closes #2321
2012-05-07 14:32:36 -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
Jeff Olson
577b888e4b
rt: remove unneccesary c++ functions and rust_kernel data, re: global loop
2012-04-27 22:19:30 -07:00
Jeff Olson
253fad7788
replace impl of globa_async_handle with one using atomic compare-and-swap
2012-04-20 15:23:22 -07:00
Jeff Olson
9a5d1974dc
don't use ::malloc for initializing the global_async_handle in rust_kernel
2012-04-20 15:23:22 -07:00
Jeff Olson
e0f110aa12
clean and trying the global loop test as two separate loop lifetimes..
...
.. seeing an occasional valgrind/barf spew on some invalid read/writes..
need to investigate further.. i think its related to my poor citizen
conduct, re: pointers stashed in rust_kernel..
2012-04-20 15:23:22 -07:00
Jeff Olson
c6667c06c3
add needed fields for global libuv loop + bindings to manage from rust
...
adding two pointers fields to rust_kernel :(
.. have to do manual malloc/free for one of the fields, which feels wrong
2012-04-20 15:23:21 -07:00
Brian Anderson
53f5c0c623
rt: Delete some incorrect comments
2012-04-20 14:00:13 -07:00
Brian Anderson
4357e1fd60
rt: Take the weak_task_lock in end_weak_tasks
...
Don't remember why it's commented out. Probably an oversight.
2012-04-20 13:59:31 -07:00
Brian Anderson
01dc4a8b26
core: Add priv::weaken_task
2012-04-07 19:56:41 -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
Brian Anderson
4cf7efc8f7
rt: Fix bugs in the osmain scheduler
2012-04-03 20:24:29 -07:00
Brian Anderson
c0e12854ed
rt: Fix bugs in the osmain scheduler
2012-04-03 18:01:13 -07:00
Brian Anderson
4f4b7b10bb
rt: Futz with headers to satisfy FreeBSD
2012-04-03 16:02:38 -07:00
Jon Morton
72ffb4b446
fix 'I don't know how C works'
2012-04-03 16:02:38 -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
e1858882a4
rt: Run a single-threaded scheduler on the main thread
2012-04-02 15:35:47 -07:00
Jon Morton
bcb9269d84
rt: cleanup passing around of rust_env
2012-04-02 03:11:58 -05:00
Jon Morton
128a8b6ed5
remove rust_srv
2012-04-01 22:18:40 -05:00
Jon Morton
413994ea3e
replace assertion macros with plain asserts
2012-04-01 21:14:16 -05:00
Brian Anderson
fb528dd7d6
rt: Allow some schedulers to stay alive even without tasks to execute
2012-04-01 16:57:14 -07:00
Brian Anderson
e78396850d
Merge remote-tracking branch 'brson/mainthread'
...
Conflicts:
src/rt/rust_sched_loop.cpp
src/rt/rust_shape.cpp
src/rt/rust_task.cpp
2012-04-01 00:15:04 -07:00
Brian Anderson
21064637ed
rt: Fix whitespace
2012-03-31 23:12:06 -07:00
Brian Anderson
218dd08469
rt: Introduce rust_sched_reaper
...
This just moves the responsibility for joining with scheduler threads
off to a worker thread. This will be needed when we allow tasks to be
scheduled on the main thread.
2012-03-31 19:51:29 -07:00
Graydon Hoare
2aaca455b9
Tidy up multiple declarations and STDC_FOO_MACROS guards in headers.
2012-03-28 14:26:51 -07:00
Graydon Hoare
c141e7a068
Fix some gcc-4.4-isms, should build now on 4.1+.
2012-03-28 13:52:47 -07:00
Brian Anderson
b247de6458
rt: Remove lock_held_by_current_thread
2012-03-18 17:03:35 -07:00
Brian Anderson
c414b78afe
rt: Remove the kernel task table
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
5df44bd066
rt: Remove rust_kernel::live_tasks. Unused
2012-03-01 14:53:20 -08:00
Brian Anderson
b3f77bf927
rt: Change the way the kernel exits to avoid pthread leaks
...
This makes the kernel join every scheduler thread before exiting in order to
ensure that all threads are completely terminated before the process exits. On
my machine, for 32-bit targets, this was causing regular valgrind errors.
2012-02-27 14:25:32 -08:00
Brian Anderson
0667fb4e63
rt: Make rust_task::ref_count private
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
Jyun-Yan You
b778dac197
fix build on freebsd
2012-02-09 18:41:57 -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
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
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
8d881967a2
rt: Extract rust_scheduler from rust_task_thread
2012-02-03 23:48:12 -08:00