Commit Graph

1688 Commits

Author SHA1 Message Date
Axel Dörfler
c0126bf6e4 Now uses the prototype definitions of libroot_private.h instead of defining
them locally.
Added __init_fork().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9306 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 16:35:02 +00:00
Axel Dörfler
0214622f56 Renamed __init__dlfcn() to __init_dlfcn(), moved prototype to libroot_private.h header.
Made it less vulnerable to thread-safety issues; it could occassionally return an
error when there was an error in a concurrent dlfcn function.
Renamed global static variables to have the "s" prefix.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9305 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 16:33:45 +00:00
Axel Dörfler
320f1cc118 Renamed __init__image() to __init_image(), moved prototype to libroot_private.h header.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9304 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 16:31:35 +00:00
Axel Dörfler
fdbd1b5d7b fork_team() is working now! It might not be 100% complete (signal handling),
but the kernel part seems to work good enough for now.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9296 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 04:03:52 +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
adf29fcdda Removed the broken arch_thread::current_iframe field and switched to the
same mechanism as NewOS, ie. using the iframe "stack" pointer (using the
new i386_get_current_iframe() function).
Implemented fork() support functions arch_{store|restore}_fork_frame().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9292 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 03:52:53 +00:00
Axel Dörfler
21942ca92a The arch_thread::current_iframe was not only redundant, but also incorrectly
maintained. Removed it completely.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9291 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 03:48:51 +00:00
Axel Dörfler
27d0a0aaff Implemented new i386_restore_frame_from_syscall() function needed by fork().
Added some comments.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9290 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 03:47:09 +00:00
Axel Dörfler
8bf77a7332 _get_next_area_info() skipped every second area if they were adjacent.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9289 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 02:50:30 +00:00
Axel Dörfler
d3ddbef95c vm_copy_on_write_area() did not correctly set the upper cache_ref - vm_cache's
pointer to the ref was not set (resulting in a crash).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9282 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-11 12:23:02 +00:00
Axel Dörfler
41dbd5191c Fixed vm_copy_area() when B_CLONE_ADDRESS was specified (insert_area() does not
know about this specifier, it has to be replaced by B_EXACT_ADDRESS).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9281 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-11 12:02:20 +00:00
Axel Dörfler
71eeb427c3 Implemented team_get_address_space() which gets you a pointer to the
team's address space - for internal use, anyway.
Added a ToDo: item to exec_team() to remind me of alarms and signals.
Started implementing fork_team() based on team_create_team() - it's not
completed (or even works), though.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9279 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-10 17:30:42 +00:00
Axel Dörfler
7bb329730d vm_delete_areas() didn't do any locking, but the address space region list
must not be accessed without it.
Implemented _get_next_area_info() and _user_get_next_area_info().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9277 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-10 17:23:54 +00:00
Axel Dörfler
b9d74a6b88 Added vm_delete_aspace() again - unlike before, it now also puts the last
reference to the address space, so that the calling team deletion function
doesn't have to do this.
delete_address_space() doesn't have to delete any areas anymore, since
at the point it's called, there is no area anymore, anyway: each area
holds a reference to the address space.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9276 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-10 17:21:38 +00:00
Axel Dörfler
b492de88e3 I've already switched the page pointer to vm_cache, so this comment was
not necessary anymore.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9268 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-08 23:27:04 +00:00
Axel Dörfler
adf3b19660 resize_area() must unmap the area beyond the new size, if the area has shrinked.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9267 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-08 23:19:33 +00:00
Axel Dörfler
ed3d2e92e8 Added tests for vm_copy_area() and resize_area().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9266 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-08 23:12:55 +00:00
Axel Dörfler
ad07c81011 vm_cache_resize() now requires you to have the vm_cache_ref lock held.
This actually reflects the only usage of this function anyway, and thus,
fixes the resize_area() function.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9265 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-08 23:11:50 +00:00
Axel Dörfler
f774bf16ea Implemented vm_copy_area(), mainly a support function for fork().
vm_page no longer keeps a pointer to the vm_cache_ref but to the vm_cache.
This cleans the page handling when having to make an area copy-on-write;
regions belong to vm_cache_ref, pages to vm_cache.
Fixed some return types.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9264 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-08 22:56:51 +00:00
Axel Dörfler
c77c1efff5 Removed the broken vm_resize_region() and implemented it properly in resize_area(),
some ToDo-items are left.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9260 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-08 15:16:29 +00:00
Axel Dörfler
d0f673c8e2 Implemented vm_cache_resize(): it removes all pages outside the current bounds.
It currently checks for temporary caches, but it should really only be used
with regions for anonymous memory.
Fixed some return types.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9259 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-08 15:10:50 +00:00
Axel Dörfler
6978315d3a B_EXACT_KERNEL_ADDRESS doesn't really make a lot of sense.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-08 01:16:54 +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
1a705b91b7 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@9254 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-07 17:11:54 +00:00
Axel Dörfler
894e120a01 Moved everything from vm.c belonging to vm_address_space into a separate file.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-07 16:15:49 +00:00
Axel Dörfler
d82bfbadd6 Small test app for the execl() function.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9251 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-07 15:39:37 +00:00
Axel Dörfler
acfca1a3f5 We now have a working exec_team() function (the backend of the exec() function family)!
Should be tested and verified more intensively, though.
Moved the creation, initialization, and deletion of the team_arg structure out of
team_create_team(); it's now also used by exec_team().
Renamed kfree_strings_array() to free_strings_array().
Renamed the fields of the team_arg structure to be more in sync with the names used
at other places.
Fixed the routine that copied the environment/arguments into the userland space.
Improved and fixed the user_copy_strings_array() function.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-07 15:34:17 +00:00
Axel Dörfler
5ad2b8edae Added exec() support function vm_delete_areas(); factored that code out
of vm_delete_aspace() (which now calls it).
Fixed some return types.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9248 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-07 15:15:08 +00:00
Axel Dörfler
5c41c39314 Implemented exec() support function vfs_exec_io_context() which closes all
file descriptors that have O_CLOEXEC set.
Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9242 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-07 14:47:58 +00:00
Axel Dörfler
3a459a1998 The internally used copy_arguments() accidently left out the first argument.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9240 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-07 14:42:25 +00:00
Axel Dörfler
2f49ba7d28 Removed strnicmp.o from librld.a, also removed some string functions that
shouldn't be used in anything that we control (like strncpy()).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9223 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-06 01:14:05 +00:00
Axel Dörfler
44fbee8356 We already have strncasecmp(), and we don't need strnicmp().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9222 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-06 00:36:17 +00:00
Axel Dörfler
3451283511 Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9221 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-06 00:14:41 +00:00
Axel Dörfler
7f5c5fd42b The search path feature now works properly. The path found is now propagated
back to load_container() so that map_image() has the chance to succeed.
The FATAL() macro now uses dprintf() instead of printf() when TRACE_RLD is defined.
Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9218 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 23:29:04 +00:00
Ingo Weinhold
5741bcb5d8 * Eliminated fs_mount::mount_point. It wasn't really used anyway, only
in dir_vnode_to_path() which does now continue until hitting "/".
* Refactored common volume root to mount point resolution code into a
  separate function.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9210 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 16:08:31 +00:00
Philippe Houdoin
178f20f0f6 Experimental search paths $PATH, $LIBRARY_PATH, $ADDON_PATH support.
As we currently don't have these environment variables set at init time, their values
are hardcoded for the moment.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9207 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 14:43:41 +00:00
Axel Dörfler
d590ff3d36 We now have a working fcntl() function.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9202 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 13:40:13 +00:00
Axel Dörfler
d6571884c7 Added basic fcntl() functions and syscalls.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9201 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 13:36:44 +00:00
Axel Dörfler
c7a0c0f9e1 Added set_flags() support where needed. devfs now uses the ioctl() mechanism
via B_SET_(NON)BLOCKING_IO to notify the device about any access mode changes.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9199 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 13:24:12 +00:00
Axel Dörfler
ae1b76c11e I didn't like the BeOS field names, but I forgot them in the comments.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9197 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 13:18:48 +00:00
Axel Dörfler
3db167c4d2 %ebp was not saved which resulted in a crash on longjmp().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9196 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 13:15:41 +00:00
Axel Dörfler
a4611f9d2b The BSD setjmp() implementation was not at all BeOS compatible. This one
is now.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9195 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 13:08:03 +00:00
Philippe Houdoin
a889bb181d Add thread-safe strtok_r() function.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9192 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-04 23:44:15 +00:00
Axel Dörfler
40cc0ebde2 Added an endless loop detection; it will now store up to 16 stack positions
and will check against those. This fixes the rare case an interrupt frame
could cause before.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9191 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-04 22:52:56 +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
57bf060563 Fixed another stupid bug in the file cache: when the first read was a partial
read over two blocks, some memory behind that memory could be trashed.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9188 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-04 21:03:31 +00:00
Ingo Weinhold
93d412b087 Refactored the intel partitioning module.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9159 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-02 15:35:25 +00:00
Axel Dörfler
7740b91858 Ported over consoled from NewOS. It's a very simple replacement for the
Terminal application that uses our TTY driver.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9153 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-01 17:33:29 +00:00
Axel Dörfler
2c8b3014ef Moved select events to Select.h. Now includes that header, too.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9142 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-01 00:31:20 +00:00
Ingo Weinhold
b4c1459318 Make use of the newly introduced generated syscall numbers header.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9135 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-30 23:30:29 +00:00