Commit Graph

82 Commits

Author SHA1 Message Date
Axel Dörfler
704df541ac No longer uses private VM API to the base address of the idle thread stacks.
Renamed the idle thread and their stack areas.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9844 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 11:12:05 +00:00
Axel Dörfler
4002d2d272 Improved state_to_text() output to match the states in get_thread_info().
Improved the threads list: despite looking much better, it now also prints
out the semaphore number a thread is waiting on.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9530 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 12:50:48 +00:00
Axel Dörfler
e88a0f0885 thread_init() now calls the new arch_thread_init() function.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9509 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-25 22:30:44 +00:00
Axel Dörfler
ddccb72483 Improved the kernel debugger's "thread" command: it will now dump the current
thread if no arguments were given.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9462 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-23 17:09:51 +00:00
Axel Dörfler
6a70123a9d Big update, but everything is related:
- we now have a working process group/session model. Implemented related syscalls
  and the kernel backend, some POSIX process functions are now available in the
  kernel as well.
- dying teams now monitor their exitus by leaving death_entry structures in
  their parent team.
- Implemented wait_for_child() for pid == -1 and pid > 0; IOW waiting for process
  groups is missing yet. Hasn't yet been tested intensively.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9350 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 14:46:12 +00:00
Axel Dörfler
1956e69d13 Moved the thread::sem fields into their own sub-structure for clarity.
Some minor cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9328 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-13 15:19:08 +00:00
Axel Dörfler
c2289a8876 Changed the way a dying thread propagates its exit status and reason: we
no longer abuse the semaphore mechanism to carry an extra status value,
instead, wait_for_thread() registers a death_entry with the thread that
will be filled upon exit.
Removed delete_sem_etc() as it's no longer of use or available.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-13 14:52:52 +00:00
Axel Dörfler
822e4e0b41 suspend_thread() and resume_thread() no longer have the B_DO_NOT_RESCHEDULE
flag set.
Fixes _user_wait_for_thread() which returned an invalid return code in case
of error.
Some minor cosmetics.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9321 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-13 13:10:27 +00:00
Axel Dörfler
a52cce2963 Moved thread_kthread_{entry|exit}() to where they are found easier.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9294 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 03:55:46 +00:00
Axel Dörfler
da504d877d Removed team::_aspace_id since it already has a direct pointer to it.
Changed the way a vm_address_space is deleted: instead of having to explicitly
call vm_delete_aspace(), the last vm_put_aspace() will remove it.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9255 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-07 17:17:04 +00:00
Axel Dörfler
0f5095f9f9 Now uses thread::user_stack_size instead of STACK_SIZE. This also fixes a
potential bug if MAIN_STACK_SIZE and STACK_SIZE would have been different.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9190 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-04 22:41:34 +00:00
Axel Dörfler
d5b3917b25 Introduced new thread_entry_func type.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8778 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-01 15:48:36 +00:00
Axel Dörfler
4a847f30c5 Added exit_thread().
Changed thread_atkernel_exit() to look less broken - the way and when it's
called should still be investigated: NewOS looks a lot cleaner here.
create_thread() now creates the kernel stack upfront, so that it can easily
bail out of that fails. The user stack creation now makes use of B_BASE_ADDRESS
and is therefore a lot better and simpler. In case user stack creation failed,
it should now be able to handle that a lot more gracefully - but that hasn't
been tested yet...
Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7897 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-06-11 01:45:33 +00:00
Axel Dörfler
706d99ca73 This patch from Jack Burton should finally fix the interrupt problems on
thread exit - get_death_stack() now returns the interrupt state so that
it can be restored correctly later.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7865 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-06-08 22:07:08 +00:00
Stefano Ceccherini
f59a054710 Should always count to 10 before committing. Another comment
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7856 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-06-08 14:26:22 +00:00
Stefano Ceccherini
741f96a162 Added a comment
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7855 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-06-08 14:03:38 +00:00
Axel Dörfler
d018f3568f Implemented rename_thread() and _user_rename_thread() (as pointed out by Jack Burton).
The syscall is not yet connected, and the code has not yet been tested.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7179 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-06 21:38:45 +00:00
Axel Dörfler
0f00c4fff9 Renamed global variables to match our coding style guide.
Removed thread_kill_thread_nowait().
Renamed thread_init_percpu().
Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7011 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-17 15:29:45 +00:00
Axel Dörfler
15edae152e Completed find_thread() implementation, courtesy of Starr Kline.
Added some comments.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7007 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-17 15:08:36 +00:00
Axel Dörfler
a206c3746f Lowered the thread priority boost on death.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7004 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-17 00:43:16 +00:00
Axel Dörfler
8e14887212 Moved some dprintf()s to use the TRACE() macro.
Also fixed compilation with tracing enabled.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6999 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-16 03:14:48 +00:00
Axel Dörfler
974982d56d Factored out two functions out of thread_exit() (in team.c).
Incorporated NewOS change 1930: sends the parent SIGCHLD if the team
goes away.
create_thread() now returns B_BAD_TEAM_ID when the team is in death state
instead of ERR_TASK_PROC_DELETED.
Cleaned headers.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6997 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-16 02:50:25 +00:00
Axel Dörfler
2f6684aaee Fixed _user_find_thread(NULL), courtesy of Jack Burton.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6939 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-09 15:45:34 +00:00
Axel Dörfler
135d20a96e Now properly shuts down the thread message cache in thread_exit(),
its semaphores get deleted, thanks to Jack Burton for reporting.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6904 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-05 12:55:27 +00:00
Axel Dörfler
0ff38616f4 Renamed syscalls to new scheme.
Changed thread_kill_thread() to the BeOS compatible kill_thread() function.
Added missing _user_kill_thread().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-03 01:00:16 +00:00
Axel Dörfler
1748ad5db7 Added find_thread() (does not yet work with name != NULL).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6860 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-02 17:40:14 +00:00
Axel Dörfler
f9e9fb76f0 On second thought, it would be strange if the pattern used everywhere
else is not found here. The BeOS kernel also exports these two *_etc()
functions, and we might want to do that, too.
{receive|send}_data() are now interruptible from userland, but not when
called from the kernel.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6700 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-23 06:29:59 +00:00
Axel Dörfler
592a6437f2 receive_data() is now interruptible (as reported by Starr Kline) - not tested!
Cleaned up _get_thread_info() & _get_next_thread_info() - factored out
the thread_info setup into fill_thread_info().
Is now using team_is_alive() instead of team_get_team_struct().
Replaced SYS_MAX_OS_NAME_LEN with B_OS_NAME_LENGTH.
Banned strncpy() in favor for strlcpy().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6683 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-23 03:46:42 +00:00
Axel Dörfler
38afe35e66 Renamed CHECK_USER_ADDRESS() to IS_USER_ADDRESS() to make its function more clear.
Added our license to the updated source files.
Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6672 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-22 14:52:59 +00:00
Axel Dörfler
c8ec205b7b Include kernel_args.h instead of stage2.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4969 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-07 23:12:37 +00:00
Axel Dörfler
20b82fcf5b Minor change: corrected the debug output in wait_for_thread().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4893 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-01 01:38:00 +00:00
shatty
b89786b69e change to public resource.h
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4772 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-09-20 20:47:27 +00:00
Axel Dörfler
8655936935 Replaced some more vm_*() calls with BeOS compatible ones.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4355 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-08-20 15:55:56 +00:00
beveloper
40ac5c5195 cvs server: Up-to-date check failed for `src/kernel/core/vm/vm.c'
cvs [server aborted]: correct above errors first!
cvs commit: saving log message in /tmp/cvsFPtfaj


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4344 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-08-20 02:48:15 +00:00
Axel Dörfler
cbc1309c68 Replaced some more vm_create_anonymous_region() with create_area() and
create_area_etc().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-08-19 17:38:13 +00:00
Axel Dörfler
7b25ddd21a Replaced calls to vm_create_anonymous_region() with the BeOS compatible
create_area() where possible.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4318 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-08-19 14:28:11 +00:00
Axel Dörfler
b2704e693c boot headers have been moved, some cleanups, dbg_save_registers() renamed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-05-03 16:20:38 +00:00
Axel Dörfler
08b73e5905 Added another argument parameter for the thread creation code. Helps
implementing a more efficient on_exit_thread().
Note, this extra parameter is currently only used for user space code,
not yet in the kernel; thus on_exit_thread() is not available in the kernel.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3075 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-04-18 09:38:28 +00:00
Philippe Houdoin
f3eabb6abd Backport time tracking fix from NewOS:
thread code now properly traces time spent in user vs kernel mode. The code was
just plain broken before
http://www.newos.org/cgi-bin/perfbrowse.perl?@describe+1704


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2599 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-29 21:59:37 +00:00
Axel Dörfler
88b64a6feb Big cleanup.
Now directly exports (as is, most of) the kernel thread API.
Now has user_*() functions where needed.
Moved thread_set_priority() from scheduler.c to set_thread_priority().
Renamed thread_wait_on_thread() to wait_for_thread().
user_get_thread_info() now uses user_strlcpy() instead of user_strncpy().
Fixed the snooze() implementation - it now returns B_OK where appropriate. Now all snooze()
calls will call snooze_etc().
New private call spawn_kernel_thread_etc() to replace thread_create_kernel_thread_etc().
Moved some functions around.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2578 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-27 03:17:36 +00:00
Axel Dörfler
1da55179ee thread_exit() now removes the registered images when the team goes down.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2427 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-12 16:30:09 +00:00
Axel Dörfler
4fff689f48 Some minor updates:
arch_cpu: could have used the TLS_SIZE macro in one place, removed
a now unused variable, assignments to tss_loaded are now booleans.
thread.c: added the new fields to _dump_thread_info().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-08 09:27:55 +00:00
Axel Dörfler
20726b7fb1 _create_thread() now correctly allocates the stack with REGION_ADDR_EXACT_ADDRESS
from the USER_STACK_REGION (until B_BASE_ADDRESS is available), made it much better
readable. It now grows from the lower USER_STACK_REGION up to the start of the main
thread's stack location.
Calls arch_thread_tls_init() and accounts for the TLS area in the stack region.
Added some comments, some cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2382 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:48:01 +00:00
Axel Dörfler
1d661e3285 Just slightly changed a comment; there was more, but I removed that, and
I was too lazy to revert that little change back, so that I would be able
to write this short paragraph explaining what I've done.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2364 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:10:03 +00:00
Philippe Houdoin
a4d52d3edf Add missing headers/os/drivers/KernelExport.h functions here and there.
Some int -> cpu_state cleanup on the way, and implement the
B_KDEBUG_CONT and B_KDEBUG_QUIT features in our kernel debugger.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2173 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-07 00:25:50 +00:00
Axel Dörfler
424880282f Fixed a warning.
Replaced "int state" with "cpu_status state" where appropriate.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2160 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-04 16:40:07 +00:00
Axel Dörfler
1291a19d84 thread->page_faults_allowed is now initialized.
Updated due to the ioctx -> io_context change.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2143 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 14:11:35 +00:00
Axel Dörfler
750a82c5d3 Added new debug output macros (TRACE()).
thread_exit() for now prints a warning if it was called with interrupts
disabled.
Fixed a bug in thread_exit2() that restored the interrupts too early,
instead of simply enabling them (and restoring them later) [found by
Marcus O. great debug additions].
Fixes for the khash changes.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2119 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:42:52 +00:00
Daniel Reinhold
89feafabe5 fixed call to thread_get_current_thread_id()
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2014 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-19 06:44:51 +00:00
Daniel Reinhold
715f76df9e added sys_get_current_thread_id() -- for libroot compatibility
some minor rearrangement (sys_xxx() calls now placed together)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1997 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-18 02:04:57 +00:00