Commit Graph

1038 Commits

Author SHA1 Message Date
Axel Dörfler
85b750f216 Implemented first test implementation of the new block cache and transaction API.
Moved from mutexes to benaphores.
Removed partial write support of the old API.
remove_cached_device_blocks() will now actually free all remaining blocks.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9895 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-10 02:03:39 +00:00
Axel Dörfler
4f727c8fb6 New function hash_remove_first() makes emptying a hash table much simpler.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9892 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-10 01:56:22 +00:00
Axel Dörfler
43576fd35b Removed some debugging output that shouldn't have made it into the repository.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9886 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-09 13:57:03 +00:00
Axel Dörfler
3407cab7da Temporarily added initialization of the system time conversion factor (x86)
to the arch independent section (pure laziness + I am not yet sure how this
will look like on other platforms).
Fixed the clone_area() command: B_CLONE_ADDRESS must not be used in the
same address space, because the area creation then can only fail.
Added an explanation on why the area is cloned at all.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9885 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-09 13:50:52 +00:00
Jérôme Duval
06dae80951 clean up of region=>area, addr_type=>addressSpec, fixed compile errors when trace is active
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9884 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-09 13:42:12 +00:00
Jérôme Duval
b138834ceb added a read only cloned area for real time data. untested yet.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9880 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-09 12:44:53 +00:00
Axel Dörfler
3f345c7e95 Implemented clone_area() and _user_clone_area(). Not tested, but should work.
Added some missing consts.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 19:26:43 +00:00
Axel Dörfler
5b532f8614 Added fs_volume.h header, "resolved" one of the last old ERR_* error codes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 18:35:47 +00:00
Axel Dörfler
b9be02df0c vm_area_for() did not work correctly; apparently, I had chosen the wrong area_for()
like implementation to copy from...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9863 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 15:05:10 +00:00
Axel Dörfler
534d8fbcc7 Fine-graded debug output. Debug output disabled by default.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9862 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 14:37:07 +00:00
Axel Dörfler
13dee31361 Now uses create_area() instead of vm_create_anonymous_region().
The page_stats debugger command now understands queue names as well.
Some minor cleanup, improved error checking.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9861 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 14:34:35 +00:00
Axel Dörfler
1c11f7ea8a Got rid of regions - we're now back in area-land.
Renamed vm_area::lock to vm_area::protection to be less confusing - wiring
is still called wiring, though (might be renamed to lock later, as that's
how BeOS calls it).
Renamed some global variables to match our naming scheme.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9860 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 14:25:09 +00:00
Axel Dörfler
df9445ba48 Replaced region_id with area_id.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9859 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 14:17:19 +00:00
Axel Dörfler
98cc327660 Replaced region_id with area_id.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9857 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 14:11:46 +00:00
Axel Dörfler
070f286492 Use create_area() instead of vm_create_anonymous_region().
Some minor other cosmetic changes.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9856 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 14:06:50 +00:00
Axel Dörfler
a13f918460 No need to have the kernel daemon run immediately.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9855 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 14:03:19 +00:00
Axel Dörfler
07bdb9c6ea Got rid of gSemRegion as it is never really used.
Renamed all static global variables to have the 's' prefix.
acquire_sem_etc() now fails if B_RELATIVE_TIMEOUT and B_ABSOLUTE_TIMEOUT
are both set.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9854 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 13:57:40 +00:00
Axel Dörfler
148a8e0c57 Renamed *_stack_region_id with *_stack_area, also replaced region_id with area_id.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9853 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 13:53:34 +00:00
Axel Dörfler
877547cdb0 Renamed *_stack_region_id with *_stack_area, also replaced region_id with area_id.
Fixed a bug in snooze_etc(): it could define both, B_ABSOLUTE_TIMEOUT and
B_RELATIVE_TIMEOUT at the same time.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9852 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 13:52:11 +00:00
Axel Dörfler
99bd520827 Now makes use of the real_time_data structure.
No longer crashes due to architectural VM restrictions (ie. the area
is kernel only but writable now - should be cloned).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 11:48:04 +00:00
Axel Dörfler
6aa419e55f Correctly implemented find_area() and area_for(), available for userland
and the kernel.
create_area() can now only create kernel areas.
_user_create_area() now directly calls vm_create_anonymous_region().
Removed broken find_region_by_address() and find_region_by_name().
Removed vm_find_region_by_name().
Renamed the idle thread stack areas.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9848 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 11:20:20 +00:00
Axel Dörfler
bcf9ffef0b Fixed a possible crashing bug.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9847 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 11:17:06 +00:00
Axel Dörfler
8bce4da9ee Replaced vm_find_region_by_name() with find_area().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9846 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 11:15:07 +00:00
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
3f97e14d42 Fixed a comment as pointed out by Jerome.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9843 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-08 10:17:41 +00:00
Jérôme Duval
d104cdcbae Moved sBootTime to an area, so that userland can clone it
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9811 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-06 17:37:00 +00:00
Axel Dörfler
d2170152b1 _user_set_real_time_clock() can now return an error. It currently even
will do this if this function is called by anyone other than the root
user.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9804 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-05 16:08:00 +00:00
Axel Dörfler
fe5b39146f Neither unregister_wait_for_any() nor register_wait_for_any() returned
status.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9799 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-04 16:42:16 +00:00
Axel Dörfler
bd00cbc6a9 Updated the PPC stuff to recent changes in other parts.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9798 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-04 16:41:32 +00:00
Ingo Weinhold
90072e721d Always define the symbols needed for basic C++ features. If we link against libgcc.a the symbols from there are simply overridden.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9778 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-03 17:33:17 +00:00
Axel Dörfler
ba44a1e8e1 Changed the way the stores commit their memory: there is no special handling
for temporary memory anymore, it's the store's responsibility to do that
correctly now, and that functionality is reached via the vm_cache using
vm_cache_set_minimal_commitment().
Therefore, the vm_store commit() function now returns a status instead of
the size that could be commited.
Replaced the max_commit mechanism with one that cares about the available
memory, stores can reserve and unreserve such memory. The anonymous_commit()
will now fail in case it could not reserve the needed amount of memory.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9777 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-03 17:24:41 +00:00
Axel Dörfler
2786541fbe Fixed a crashing bug in fill_sem_info() - if it was called for a semaphore
with an empty queue, it crashed. sem_info::latest_holder is obviously not
set correctly, and should be fixed.
Some cosmetics.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9771 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-03 15:33:01 +00:00
Axel Dörfler
9d171dd8f9 Implemented _{user|kern}_{read|write}v() functions.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9765 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-03 14:54:10 +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
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
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