Commit Graph

1966 Commits

Author SHA1 Message Date
Axel Dörfler
d7fe004a2a The kernel string functions are now part of kernel_posix.o.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9734 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-02 01:41:09 +00:00
Axel Dörfler
eed194ef81 The kernel no longer links against posix_string.o, but has it's own subset now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9733 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-02 01:37:16 +00:00
Axel Dörfler
ed85746ace If available, main2() will now execute the Bootscript. If not, it will fall
back to the old "init" command.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 21:44:23 +00:00
Axel Dörfler
e27751d3df Fixed a stupid bug in create_team_thread_start(): it copied the env variables
in the wrong direction for some time now, corrupting the argument area (user
apps would crash).
B_SYSTEM_TEAM is now reserved, so that no team can be created there.
Fixed some warnings when debug output is enabled.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 21:38:56 +00:00
Axel Dörfler
7a577b56a1 Now starts a login shell.
Renamed console_reader() function to keyboard_reader().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 21:35:10 +00:00
Axel Dörfler
0759a7e5da pipefs_create() now also allows to open an existing pipe.
The inode now keeps track of the number of readers/writers.
Inode::BytesInChain() is now only used protected by the request lock.
Implemented some missing POSIX demands:
- when the last writer is closed, all waiting read requests are aborted
- pipefs_write() now returns EPIPE and signals the current thread with
  SIGPIPE in case there are no readers left
- pipefs_read() will now return 0 in case there are no writers and no
  unread buffers left in the pipe.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9717 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 20:36:09 +00:00
Axel Dörfler
fa00c58619 Fixed a potential memory leak in devfs_open().
Correctly implemented devfs_create() - it will now open the an already
existing file if O_EXCL is not set, and no longer fail with EROFS.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9716 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 20:20:37 +00:00
Axel Dörfler
7adec93fe8 Added some minor debug output, and a ToDo comment for file_seek().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9714 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 19:48:40 +00:00
Axel Dörfler
de0807a907 Now uses the file name to build the area name, and not the full path anymore.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9707 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 15:24:39 +00:00
Axel Dörfler
e4211d820c Fixed another bad bug in the file cache: when one iovec would have to be
divided into several parts, it could happen that overwrite the whole data
portion with data beyond the part that should have been read.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 15:20:27 +00:00
Axel Dörfler
b4fd3816c8 Fixed the stupid bug that prevented you to see what you typed in when bash
was running. Thanks a lot to Jerome Duval who found this!
Since TTY ECHO mode doesn't look too well with the old shell, it will directly
start "sh" now, which should be the bash.
No longer prints out the TTY used when started, but now sets (as usually
done in BeOS) the TTY environment variable.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9697 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 03:51:21 +00:00
Axel Dörfler
ffc27ddbe7 fs_mount_volume() changed the order of arguments to be more intuitive.
Removed the fs_initialize_volume() function, as it's probably not going
to be needed.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9695 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 01:03:04 +00:00
Axel Dörfler
eef883acab Semaphores created in the kernel always belong to the kernel; there is
absolutely no reason to move them to B_SYSTEM_TEAM (additionally, during
startup, set_sem_owner() may crash).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9693 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 00:52:27 +00:00
Axel Dörfler
efdc9c95d0 Replaced SYS_MAX_PATH_LEN with B_PATH_NAME_LENGTH.
Changed the last argument of _kern_mount() to be a string rather than a void pointer.
Greatly reduced the stack usage of _user_mount(); it now uses KPath instead
of on stack paths. It now also copies the parameter argument on the heap.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9692 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-01 00:35:27 +00:00
Axel Dörfler
6f5f688cde Thanks to Ingo, symbolic links are now correctly read all the time.
devfs_read_link() and rootfs_read_link() could write beyond the buffer
size passed in (off by one).
The comment for _kern_read_link() didn't fit to what the function really
did.
common_read_link() no longer null terminates the link - it's the file
system's responsibility to do that.
fs_read_link() is not supposed to return the length of the link anymore,
but only B_OK for success.

Note, we deviate slightly from POSIX here, where even a buffer too small
would be filled, and no terminating null byte has to be written at all.
We always return an error in case the buffer is too small, and the link
is not partially copied into the buffer.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9652 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-29 13:11:46 +00:00
Axel Dörfler
eeb4323204 Implemented devfs_unpublish_partition() and devfs_unpublish_file_device().
Made the FS internal API a bit more consistent.
Removed devfs_unlink(), and devfs_rename() (which was just returning EROFS
anyway) - the devfs now appears completely read-only to the user. All
changes are triggered by kernel internal APIs (most usually through either
the devfs itself (old style drivers), the disk_device_manager, or the
standard device_manager).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9645 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-29 02:24:30 +00:00
Axel Dörfler
e876e8c516 Implemented devfs_publish_file_device(); it should actually work, but I haven't tested it yet.
Also implemented the now needed devfs_read_link() function.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9644 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-29 01:58:08 +00:00
Axel Dörfler
433c716b82 Removed the empty function stubs from this file (and basically moved there
where they belong). Lazy Ingo ;-)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9642 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-29 01:43:15 +00:00
Axel Dörfler
554e58f0d4 Added new functions devfs_[un]publish_file_device() - they're not implemented
yet, though, and just return B_ERROR.
devfs_unpublish_partition() now also returns B_ERROR since it's not yet
implemented.
Refactored the device publishing code, so that implementing devfs_publish_file_device()
will become easy.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9639 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-29 01:41:16 +00:00
Ingo Weinhold
de278b48c4 Now implements the _user_*() functions for the DDM syscalls.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9636 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-29 01:38:17 +00:00
Ingo Weinhold
7146639259 DDM syscalls added.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-29 01:37:37 +00:00
Ingo Weinhold
7fb2963ae4 * Added vfs_normalize_path() service call.
* Added resolve_mount_point_to_volume_root() which does what
  resolve_volume_root_to_mount_point() did. IOW the latter one didn't
  do what it advertised.
* Fixed dir_vnode_to_path(). Basically broken due to the broken
  resolve_volume_root_to_mount_point(), but also compared potentially
  unrelated vnode IDs (belonging to different volumes).
* Fixed get_dir_path_and_leaf(). It didn't deal correctly with paths
  ending in '/' (including the root dir).
* fs_mount() does now accept a NULL fsName, getting the FS name from
  the DDM in this case.
* fs_mount() now also supports mounting file images; it lets the DDM
  create a file device for them.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9629 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 22:31:43 +00:00
Ingo Weinhold
c06238cbd6 * Reworked publishing/unpublishing of the device. This is now basically
done by (currently not existing) devfs functions.
* Overridden GetMediaStatus() and GetGeometry() to return useful data.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9627 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 22:22:04 +00:00
Ingo Weinhold
1e2e4b3c71 Re-added support for file devices.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9626 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 22:18:20 +00:00
Ingo Weinhold
cba3b01fdf Added support for path normalization.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9625 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 22:16:41 +00:00
Axel Dörfler
2c4f728f7e Added our preliminary mount replacements.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9567 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 17:00:29 +00:00
Ingo Weinhold
da87ac8c9a Added KFileDiskDevice to the build again. Fixed compile errors. It won't work yet, though.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9566 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 16:05:22 +00:00
Ingo Weinhold
4303e367b2 Now we need to explicitly disable RTTI in the boot loader, since it is generally enabled in the kernel.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9565 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 16:03:12 +00:00
Ingo Weinhold
6a6164e712 Renamed RecursiveLockAutoLocker to RecursiveLocker. Don't mount the standard file systems read-only anymore -- they either aren't or know better anyway.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9563 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 15:57:04 +00:00
Ingo Weinhold
e5452be634 Cleaned up GetPath(). In the kernel we no longer prefix the partition path names with "obos_" or "haiku_".
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9561 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 15:13:08 +00:00
Ingo Weinhold
0402530222 Extended Append() to also allow adding parts of path components. Added leaf component manipulation. Now always chop trailing slashes off the path.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9560 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 15:09:48 +00:00
Axel Dörfler
9902467dac Fixed the build in case debug output was enabled.
Moved the debug macros into the program flow, so that they don't look so
temporary :)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9557 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-28 00:32:10 +00:00
Ingo Weinhold
480742bd7a KPath added to the build.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9556 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 22:15:11 +00:00
Ingo Weinhold
f3604f65e7 * Added missing `flags' parameter for the mount functions.
* fs_mount() and fs_unmount() are now aware of partitions. A device to
  be mounted is looked up by the DDM and the mount state and mount
  cookie of the corresponding KPartition are updated accordingly.
  Still missing is support for mounting files. Moreover the device path
  needs to be normalized.
* Added RecursiveLockAutoLocker class to ease the `goto errN' pain a bit.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9555 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 22:11:57 +00:00
Ingo Weinhold
5de8542789 Since the kernel links against libgcc.a and we use some C++ features that cause functions of libgcc.a to be included that use a couple of formerly undefined symbols (stderr, fprintf, abort, debugger) those had to be added to kernel_cpp.cpp. We don't build the kernel utils as static library anymore, since libgcc.a is listed at the end of the link command line and trying to change that would be a bit ugly. For C++ in the boot loader nothing changes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9554 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 22:07:00 +00:00
Ingo Weinhold
2cee54a863 Use KPath now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9553 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:59:54 +00:00
Ingo Weinhold
8ece359269 Uses KPath now, which significantly reduces the stack footprint.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9552 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:59:05 +00:00
Ingo Weinhold
1766c66484 Added header directories needed now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9551 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:57:23 +00:00
Ingo Weinhold
92eb857652 Used KPath where possible.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9550 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:56:38 +00:00
Ingo Weinhold
92221d2425 KPath is used now where possible.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9549 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:56:05 +00:00
Ingo Weinhold
1b5f626633 * Changes to use KPath where possible now.
* Made GetMediaStatus() a bit more robust. If the ioctl fails (e.g. if it
  is not implemented as in Thomas' drivers), it gets the device geometry
  and does not fail, if the device is not removable.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9546 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:52:33 +00:00
Ingo Weinhold
0707c10377 KPartition::GetPath() now uses the new KPath class, which makes it more convenient to use.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9545 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:48:47 +00:00
Ingo Weinhold
534145b30c Flags are now passed to _kern_mount().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9543 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:44:05 +00:00
Ingo Weinhold
d68a188e6d Added class KPath. Convenient wrapper for a fixed-sized path buffer.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9541 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:41:16 +00:00
Ingo Weinhold
42b568aeb5 Moved to headers/private/kernel/disk_device_manager, since it is included by KDiskDevice.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9540 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 21:38:01 +00:00
Axel Dörfler
c045a66d75 Gosh, didn't even find the time to adapt map_page()'s comment to the new world.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9538 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 17:13:20 +00:00
Axel Dörfler
48ac51f886 Added support to map more than 4 MB in the kernel space. This became necessary
to be able to have more than 1280x1024x8 resolutions. The best solution, however,
would be to map the graphics memory outside of the kernel space, anyway.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9537 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 16:44:04 +00:00
Axel Dörfler
1b50789288 Running a menu may change the currently selected entry, so we need to update its saved index.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9536 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 16:42:05 +00:00
Axel Dörfler
a7fb02e6a2 No longer enables video mode when in debug mode (when a menu came up before
it switched to the logo mode afterwards).
Improved and broke the second call of platform_switch_to_logo() with a
different video mode: it now at least works when switching to a lower
resolution.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 16:25:30 +00:00
Axel Dörfler
0ec71451f5 Added a more or less clean implementation of devfs_publish_partition(); might
be changed later.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9532 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 15:21:11 +00:00
Axel Dörfler
b81068c0c8 Turns out that the interrupts were temporarily turned on during startup,
and that main2() cannot therefore just wait until interrupts become
enabled.
Now, the main2() thread is resumed after interrupts are turned on.
I am not yet sure if this is really necessary, but I have the feeling that it is.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9531 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 14:00:40 +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
f048d50953 Padding was broken for strings and characters since the move to vsnprintf().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9529 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 12:47:16 +00:00
Axel Dörfler
162eda1e2f Fixed a bug that would select a non-selectable entry when wrapping around
the "cursor".
Now disables serial output when the boot menu is shown.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9528 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 01:08:48 +00:00
Axel Dörfler
c9e4e71f10 Implemented optional additional serial output in the boot loader.
When the debug boot option is set, or ENABLE_SERIAL defined on compile time,
the serial port 1 is activated.
It will also read the serial base port info from the BIOS data and use
that if any ports are reported (will fall back to 0x3f8 if not).
Right now, a fixed baud rate of 115200 and 8n1 is used.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9527 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 01:06:33 +00:00
Axel Dörfler
628e5a0374 The new fSuperItem menu field is now maintained, ie. Menu::Superitem() and
Menu::Supermenu() now work.
Added function to find an item by label.
The boot volume menu now actually lets you choose a different boot volume.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-27 00:59:56 +00:00
Axel Dörfler
b229567a92 Now puts out a message if the kernel doesn't fit to the boot loader.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-26 23:31:48 +00:00
Axel Dörfler
c32cb87156 Moved arch_dbg_con_init() to the end of the file.
Added the new arch_dbg_con_early_boot_message() function.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9518 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-26 23:30:51 +00:00
Axel Dörfler
8083619cf7 Since the additional 512 bytes of dprintf() on the stack can potentially
change the flow of things, it now has its own buffer, and fills it with
interrupts disabled (everything comes at a price).
Now uses the safe vsnprintf() instead of vsprintf() which could crash
the kernel.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9510 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-25 22:53:37 +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
f9fea8ac78 A clean FPU state is now saved during init, and copied into every fresh
thread. That also allows kernel threads to use the FPU as well.
arch_thread_enter_uspace() no longer needs to initialize the FPU.
i386_stack_init() is now only called once, in arch_thread_init(), as
thought.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9508 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-25 22:29:00 +00:00
Axel Dörfler
ad2a2999a9 In early boot mode, open_module_list() is not able to find everything we
want it to find; therefore, we're now using get_next_loaded_module_name().
Added a temporary suffix to the FS DDM modules (disk_device/v1) - they
might get merged with the standard FS interface modules.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9503 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-25 13:53:52 +00:00
Axel Dörfler
06eec38c23 Added a table with the names of the standard interrupts on x86: they are
now printed out when an unhandled exception is taken.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-24 14:42:43 +00:00
Axel Dörfler
3ae4fa637a Now also prints the size of every stack frame, as well as the kernel and
eventual user stack regions of the thread.
The registers are no longer jumping around depending on the length of their values.
Removed some unused or doubly included headers.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-24 14:02:51 +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
8c3666d980 Renamed heap_init_postsem() to _post_sem(), added new heap_init_post_thread().
We now have a working periodic wall checker, enabled by USE_CHECKING_WALL.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-23 13:59:27 +00:00
Axel Dörfler
842b03d549 Now calls vm_free_kernel_args().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-23 13:53:13 +00:00
Axel Dörfler
25c4f39f68 Implemented vm_free_kernel_args() which frees all arguments from the kernel_args arguments
list (but not the structure itself).
Now calls heap_init_post_thread(), heap_init_post_sem() was called ..._postsem() before.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9457 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-23 13:52:42 +00:00
Axel Dörfler
4a3a8d94e5 Add a different approach to calm down page fault handling when debug output is enabled.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9443 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-21 02:44:07 +00:00
Axel Dörfler
89e31dce3b kernel_args_malloc() now actually maintain the kernel_args ranges correctly.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9442 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-21 02:40:43 +00:00
Axel Dörfler
a17b2346d0 Now makes use of sMaxVirtualAddress to calm down gcc.
arch_cpu.h no longer includes kernel.h, so we have to do this for the
ROUNDUP()/ROUNDOWN() macros.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9441 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-21 02:35:37 +00:00
Axel Dörfler
8a37c740eb Renamed some init2() functions to init_post_vm() to make clearer when and why
they are called.
Fixed some return types (mostly from int to status_t).
Some minor other cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9440 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-21 01:50:09 +00:00
Axel Dörfler
d330cc09e2 Renamed some init2() functions to init_post_vm() to make clearer when and why
they are called.
Introduced a cpu_init_post_vm() that will now call arch_init_post_vm() instead
of letting main() doing it.
Fixed some return types (mostly from int to status_t).
Some minor other cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9439 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-21 01:45:43 +00:00
Axel Dörfler
93048e141e The decision to put reserved regions along real ones proves problematic: fixed
three code locations that didn't handle them properly (when iterating over all
areas).
That and the fact that unmap_and_free_physical_pages() is no longer broken now
leads to the boot region being unmapped and freed properly as intended before.
That revealed another bug: the boot loader region was disposed too early, we
need a few other components pick up boot loader resources first; it now happens
in vm_init_post_sem().
allocate_kernel_args() was also broken, and actually didn't try to allocate
kernel args areas, but tried to reallocate all the virtual allocated ranges
of the boot loader...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9437 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-21 01:38:37 +00:00
Axel Dörfler
3433f318e0 Disabled the USE_WALL checking by default.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-20 10:53:03 +00:00
Axel Dörfler
3cbdc52595 Replaced PAGE_SIZE with B_PAGE_SIZE.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9432 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-20 00:28:48 +00:00
Axel Dörfler
4d41be9656 Replaced addr with addr_t.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9431 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-20 00:26:49 +00:00
Axel Dörfler
7605ddddf0 Replaced all remaining PAGE_SIZE with B_PAGE_SIZE and "addr" with addr_t.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9430 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-20 00:19:38 +00:00
Axel Dörfler
64807a40c3 As Thomas and I found out in a late debugging session, the VM handled the
boot loaders passed in memory completely wrong (for example, the premapped
graphics buffer could be mapped to the same region as some thread stacks,
just because the VM did not use its knowledge about that mapping): the boot
loader regions are now reserved so that they cannot be overwritten
with other regions anymore. The kernel_args arguments are now tracked, and
areas are created for them (they are not yet freed, though). arch_vm_init_end()
must now call the new vm_free_unused_boot_loader_range() to free any remaining
parts of the memory not yet mapped in by any areas.
Renamed a lot of init functions (ie. postsem to post_sem, init2 to post_area),
also updated because of the vm_translation_map*() arch_vm_translation_map*() move.
B_ALREADY_WIRED can now only be used during kernel startup (it's a private flag).
Replaced PAGE_SIZE with B_PAGE_SIZE.
Some minor cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9429 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 23:51:42 +00:00
Axel Dörfler
be84cd391c Renamed vm_alloc_from_ka_struct() to vm_alloc_from_kernel_args().
Replaced PAGE_SIZE with B_PAGE_SIZE.
Changed some return types to status_t.
Added proper debugging macro instead of dprintf() usage - disabled
debugging output.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9428 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 23:41:48 +00:00
Axel Dörfler
952d67454e Now make sure that the kernel address space translation map is initialized
correctly by calling arch_vm_translation_map_init_kernel_map_post_sem().
dump_aspace() now behaves like all debugging functions should behave: it
now accepts decimal numbers as well as hexadecimal numbers as IDs.
vm_translation_map_create() was renamed to arch_translation_map_init_map().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9427 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 23:38:05 +00:00
Axel Dörfler
189a0b84e6 Renamed all externally available functions to have the arch_ prefix.
Moved some functions around, so that the public functions come last.
Renamed the internal vm_translation_map_quick_query() to early_query(),
renamed vm_translation_map_quick_map() to arch_vm_translation_map_early_map().
Removed the _module part of the initialization functions.
Added a function that completes the initialization of the kernel map (it
creates the map's lock, which was just not done before).
arch_vm_translation_map_init_map() will now fail with an appropriate
error code if the map's lock couldn't be created for anything that
is not the kernel map.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9426 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 23:35:30 +00:00
Axel Dörfler
10abe59096 Since only the arch dependent code may know how much memory the boot
loader preallocated, arch_vm_init_end() (formerly called _endvm())
now calls the new vm_free_unused_boot_loader_range() with the correct
parameters.
Moved the creation of the DMA area from 0-0xa0000 into arch_vm_init_post_area().
Changed return types to status_t rather than just having "int" stand
for a status code.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 23:25:32 +00:00
Axel Dörfler
8d7e89291f The VM init calls were renamed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9424 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 23:21:07 +00:00
Axel Dörfler
027c6be29f Updated due to changes to the kernel_args frame buffer structure.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9422 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 23:07:19 +00:00
Axel Dörfler
11f838fbf7 Updated due to changes to the kernel_args frame buffer structure.
Most importantly, it now always uses map_physical_memory(), and no longer
relies on eventually mapped data by the boot loader (that the VM didn't
know about).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9418 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 17:17:04 +00:00
Axel Dörfler
9f89132031 Updated due to changes to the kernel_args frame buffer structure.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9417 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 17:13:09 +00:00
Axel Dörfler
184d298298 Now maintains the new kernel_args addr_range array in the kernel_args structure.
Exports the new insert_address_range() function as declared in boot/addr_range.h.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9416 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 17:11:23 +00:00
Axel Dörfler
1e25c041ec Removed kernel_args::str initialization, since it is no longer there.
Added a kMaxKernelSize constant to be able to change that limit a bit
easier.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9415 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 17:08:31 +00:00
Axel Dörfler
a3a0808085 Updates due to the changed frame buffer part in kernel_args.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9414 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 17:07:01 +00:00
Axel Dörfler
8df71f7876 Fixed compilation with debug output enabled.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9407 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-19 00:31:54 +00:00
Axel Dörfler
db01e67532 Added a comment about what vm_alloc_from_ka_struct() is used for.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9400 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-18 15:56:08 +00:00
Axel Dörfler
0d2dca3b56 That requirement hasn't changed with the name :)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9399 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-18 15:43:16 +00:00
Axel Dörfler
2fdc57b522 BeGeistert checkin: fixed broken allocation length as found by the USE_WALL
feature.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9398 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-18 15:39:21 +00:00
Axel Dörfler
cc0c987a28 No longer relies on certain allocation aligments of malloc(), and instead
uses the new memalign() call.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9397 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-18 15:36:31 +00:00
Axel Dörfler
09ff55a821 BeGeistert checkin: we now have memalign() - and because of that, the
USE_WALL feature can now be used.
Started implementing a USE_CHECKING_WALLS feature, that has a kernel
daemon running that periodically checks the walls of *all* memory
allocations - does not work yet (because of some initialization order
problems).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9396 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-18 15:29:17 +00:00
Axel Dörfler
e1e5a66bc2 BeGeistert checkin: wait_for_child() does now work as expected for any
team and process group IDs as well.
Added a ToDo item that process groups do only work well as long as
their group leader is still active.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9394 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-18 15:16:00 +00:00
Axel Dörfler
b767f41204 BeGeistert checkin: if B_RELEASE_ALL is used, the "count" argument should be
ignored completely (so that zero and below become valid).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-18 15:14:03 +00:00
Axel Dörfler
85fa73ff32 stdio does work, too.
Now uses waitpid() instead of wait_for_thread() - and surprise, it doesn't
work yet :)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9372 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-15 17:00:51 +00:00
Axel Dörfler
2b6c3301f7 Forgot to put the forked team into its parent group in fork_team() - which
resulted in a nice crash on exit.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9371 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-15 16:14:51 +00:00
Axel Dörfler
8cab02c5ce Removed the TRACEPFAULT macro, as it's not really that useful.
Fixed some warnings with debug output enabled.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9370 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-15 16:06:14 +00:00
Axel Dörfler
8593dcc214 Being on a kernel stack doesn't mean we didn't come from userland: we now
no longer pop %fs from the iframe in that case, too.
When we restore a custom stack, however, we'll now pop %fs from the iframe
as such strange threads may even do their own business with it.
Added some comments.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9369 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-15 15:50:41 +00:00
Axel Dörfler
d296d770a3 %fs won't be adopted from the iframe anymore, we don't need to change it there.
We also should disable interrupts in arch_restore_fork_frame().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9368 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-15 15:47:34 +00:00
Axel Dörfler
ba9c55b555 Sure, that bug waited *that* long to pop up.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9367 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-15 14:20:51 +00:00
Axel Dörfler
a7fa05a54b Since arguments may on the stack even in the kernel, load_image() now
always copies the arguments and environment arrays.
No need for the "owns_arrays" in team_arg anymore - it now always owns
them.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9363 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-15 01:52:07 +00:00
Axel Dörfler
4578da13a4 main() now waits until interrupts are available before bringing the device drivers up.
Switched to load_image() instad of using the old team_create_team() to start "init".


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9361 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 18:18:22 +00:00
Axel Dörfler
bd4b903e57 Switched from the old team_create_team() to a load_image() compatible mechanism.
The path name is now always taken from the provided argument list (except for
_user_exec() which now replaces args[0] with the path argument).
The team_arg structure know nows if it must delete its arguments or not - this
also fixes a memory leak in case team_create_team() failed when invoked from
userland.
load_image() is now also exported for the kernel.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 18:07:04 +00:00
Axel Dörfler
4496669366 Added minimal fork() test app.
Enhanced exec_test.c to use some process functions as well.
Switched to load_image() instead of using the old _kern_create_team() syscall.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9359 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 17:52:41 +00:00
Axel Dörfler
dc0f47e390 Implemented load_image() using the new _kern_load_image() syscall.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9358 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 17:49:58 +00:00
Axel Dörfler
beee70da41 Changed system() to use load_image() instead of the old _kern_create_team() syscall.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9357 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 17:47:49 +00:00
Axel Dörfler
eb89cb7f1d The currently predefined PATH variable missed its single most important path (/bin) :).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9355 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 17:44:09 +00:00
Axel Dörfler
4711148ca9 wait_for_child() can now also wait on children in the current or any other
process ID (in the current session).
get_death_entry() could call free() with interrupts disabled; now follows
the same mechanism as chosen with the groups (ie. it returns a pointer
to a death_entry to be freed by the calling function).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9354 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 15:42:56 +00:00
Axel Dörfler
38cd9a7521 send_signal_etc() is now capable of broadcasting a signal to all teams in
the specified process group (by passing in a negative pid, as in BeOS).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9351 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 14:48:40 +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
f197107a3d B_RELEASE_ALL is now a bit faster if it has nothing to do.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9349 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 14:37:39 +00:00
Axel Dörfler
d67750858c Implemented all remaining process related functions from unistd.h using the new syscalls.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 14:36:45 +00:00
Axel Dörfler
b51a65027b Fixed a warning.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9343 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-14 14:24:42 +00:00
Axel Dörfler
48e64cd7c8 Added two experimental release_sem_etc() flags (both should stay, but they
may be renamed):
- B_RELEASE_ALL: the semaphore count is set to 0, all waiting threads are released
  (the "count" argument of release_etc_sem() is ignored then)
- B_RELEASE_IF_WAITING_ONLY: the semaphore count is only decreased if there
  are any waiting threads; ie. the semaphore is signaled
Together, they will make the pthread_cond_*() functions easy to implement, and
they come in handy at other places, too.
Removed release_threads variable in release_sem_etc(), as it was useless.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-13 15:55:30 +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
386977d795 Removed delete_sem_etc(), there is no thread::sem_deleted_retcode anymore.
Also removed syscall for that function (shouldn't have been there in the
first place, anyway).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9325 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-13 14:56:44 +00:00
Axel Dörfler
c8e662b19c Changed some thread exit related fields.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9324 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-13 14:54:51 +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
Philippe Houdoin
def78b567a Add setenv() & co to librld.a as our runtime linker will need them...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9316 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-13 09:49:14 +00:00
Axel Dörfler
4609c64d48 The %fs register is used by user space TLS - it is CPU dependent, and must
not be restored from the iframe; it will be set by the scheduling code.
This is only of concern on SMP machines and could prevent TLS from working.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9310 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 22:42:22 +00:00
Axel Dörfler
2740dedc5b Added thread-safe pthread_atfork() support.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9309 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 16:44:40 +00:00
Axel Dörfler
81d4f788a2 Added and implemented atfork() - note, this function is not part of POSIX
and should go away over time.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9308 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 16:37:39 +00:00
Axel Dörfler
10031c3053 Added and implemented pthread_atfork().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9307 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-12 16:36:12 +00:00
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
Ingo Weinhold
89e53cea26 It is now understood where the _kern_restore_signal_frame() is used.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9132 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-30 23:25:55 +00:00
Axel Dörfler
8b41e11557 Fixed a possible deadlock (the requests benaphore is now unlocked before
waiting on the write semaphore).
The write functions didn't change the buffer address on a partial write
which could lead to corruption in the pipe data.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9111 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-29 14:30:53 +00:00
Axel Dörfler
a83d9efacf Some changes to debug output.
Fixed a warning that popped up if TRACE_VM was defined.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9110 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-29 14:24:44 +00:00
Axel Dörfler
8b2f07b69e Removed sleep(), it now uses spin() from cpu.cpp - which is the exact same thing anyway.
This fixes the build as unistd.h defined sleep() as well.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9108 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-29 12:51:34 +00:00
Axel Dörfler
f3df760478 Fixed the return type of user_memcpy() and friends.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9105 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-29 10:47:46 +00:00
Axel Dörfler
f7bc46254a readwrite() was broken when it had to load more than one missing page at once.
It now prints a warning if the device driver doesn't handle iovecs correctly.
Again, this could lead to very strange behaviour.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9092 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-28 16:30:25 +00:00
Axel Dörfler
410c1c159f Calmed down the soon to be removed driver loader (to be replaced by a better
version in devfs directly).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9086 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-28 03:42:07 +00:00
Axel Dörfler
da63fa920a device_open() gets the relative path from devfs mount point, not just the
name of the node.
devfs_read_stat() now (presumably temporary) sets the size of the device
for partitions and reports a block device rather than a character device
if the size unequals zero.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9085 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-28 03:22:56 +00:00
Axel Dörfler
af069b1a47 isatty() and ctermid() now actually work correctly.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9084 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-28 01:51:01 +00:00
Axel Dörfler
14d1496a7f sysconf(), pathconf(), and fpathconf() now at least do marginally useful things.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9053 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-24 00:16:51 +00:00
Axel Dörfler
2f524aed3a Reworked some TTY support functions. Added tcgetattr() function.
tcsendbreak() now ignores the "duration" parameter.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9052 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-23 23:52:36 +00:00
Axel Dörfler
98ac7a9709 Removed the termios subdirectory; it's replaced by posix/termios.c.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9051 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-23 23:49:53 +00:00
Axel Dörfler
cf46507317 The termios support is now part of the posix_main.o object file.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9050 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-23 23:48:50 +00:00
Axel Dörfler
2627eeff81 Joined the former termios/termios.c and termios/tcsetattr.c together to termios.c.
Added it to the build.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9048 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-23 23:45:03 +00:00
Axel Dörfler
a78a421de8 Renamed sleep() to spin() as that's what it does, and sleep() also doesn't
like unistd.h.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9040 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-23 13:43:57 +00:00
Axel Dörfler
fe29b8929a Some cosmetics for booting with qemu.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9020 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-21 12:09:36 +00:00
Ingo Weinhold
3b554981d3 * Corrected sMountMutex comment.
* Turned sMountOpMutex into a recursive lock.
* Re-inserted sMountOpLock locking in vnode_path_to_vnode(). It doesn't
  deadlock on mounting anymore. :-P
* Added a check in fs_mount(), whether the mount point is a directory. If
  it wasn't, in general it wouldn't be possible to get its parent
  directory.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8993 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-17 12:29:27 +00:00
Axel Dörfler
452ba3abd1 Just like any other mount point, "/" should not be remounted - dunno
why that was there before. Thanks to Ingo for pointing this out.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8981 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-16 15:34:26 +00:00
Axel Dörfler
fbb0ac2170 fork() now at least calls _kern_fork(), but would not even be complete
if that one worked.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8975 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-15 15:48:28 +00:00
Axel Dörfler
f845dd4e4f Implemented userland part of execve().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8974 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-15 15:46:56 +00:00
Axel Dörfler
41f37da0fd Added empty and non-working syscalls for _user_fork(), _user_wait_for_child(),
and _user_exec().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8973 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-15 15:45:37 +00:00
Axel Dörfler
25258635f7 Implemented waitpid() a bit more; it now calls the _kern_wait_for_child() syscall.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8972 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-15 15:44:06 +00:00