Commit Graph

854 Commits

Author SHA1 Message Date
Ingo Weinhold
1dae20235b If the /..' is /' then the name of the root node should consequently be
`.'. This fixes the _kern_open_parent_dir() syscall for the root directory.

I realized, that rootfs_read_dir() doesn't return the entries `.' and `..',
unlike Be's rootfs. Shall I add those, Axel?


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8895 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-08 21:31:18 +00:00
Axel Dörfler
bd80f1c775 Now handles NULL cookies for the VM fs calls gracefully (in case someone
would want to mmap() a device directly).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8884 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-07 15:39:03 +00:00
Axel Dörfler
dc3089f8ff Added a "cookie" parameter to the fs_read|write|has_page[s]().
This has the advantage that the device can now be access in the right context.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8876 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-06 22:48:58 +00:00
Axel Dörfler
dd6cb90eac Added a "cookie" parameter to the fs_read|write|has_page[s]().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8875 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-06 22:34:08 +00:00
Axel Dörfler
68085f7cec Added a "cookie" parameter to the fs_read|write|has_page[s]().
Fixed the calculation of the amount of bytes read in bootfs_read_pages().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8874 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-06 22:32:00 +00:00
Axel Dörfler
2829b349c6 Added a "cookie" parameter to the vfs_read|write|has_page[s]().
Added an vfs_get_cookie_from_fd() call to at least temporarily support the
cookie as in the original devfs (not sure yet how this changes).
Implemented vfs_get_file_map() which calls the corresponding FS function.
Moved vfs_get_vnode_cache() around.
vfs_get_vnode() temporarily does its job unlocked - its only to be used (safely)
from within the file cache, but this should definitely be done better.
Fixed a bug in get_vnode_name() - it did not support getting the name of
a root directory; it didn't pass the call through to the parent file system.
Fixed a bug in _user_entry_ref_to_path() which would add another "/" for
files immediately under the root (ie. "df" showed "//boot" as mount point
for the boot partition).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8873 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-06 22:29:20 +00:00
Axel Dörfler
55efd37df7 Added the file_cache.cpp file to the build.
_KERNEL_MODE is already defined when using kernel build rules, no need
to do it here manually.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-06 22:05:46 +00:00
Axel Dörfler
e02c12f0b3 Added a "cookie" parameter to the vfs_read|write|has_page[s]().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-06 22:03:47 +00:00
Axel Dörfler
f72376a8dd The beginnings of a file cache. Read-only is already working fine; very
basic and with a temporary API.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8859 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-06 01:23:57 +00:00
Axel Dörfler
7f2ba8be02 Now clears out any remainders of the pages in the iovecs if the request
couldn't be satisfied completely (ie. because the file size is not a
multiple of the page size).
It's no longer necessary to implement this functionality in the file systems.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8858 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-05 14:57:54 +00:00
Axel Dörfler
14d725bb50 The VM fs interface has changed to better match the one of the device interface.
Added a new fs call for the file cache.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-04 17:48:11 +00:00
Axel Dörfler
33657fc8ac No longer gets the old device_hooks but a pnp_devfs_driver_hooks structure
to be able to call device functions.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-04 17:47:08 +00:00
Axel Dörfler
f363b7231f Eliminated the internal device_info structure - the devfs will now store the
node and its interface directly. It will also convert the old interface into
the new one to simplify the implementation.
devfs_open() now contains the former pnp_devfs_open() as well.
devfs_publish_device() no longer passes the "ident" parameter to its lower
layers - it will be removed.
The VM fs interface has changed to better match the one of the device interface.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8849 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-04 17:46:10 +00:00
Axel Dörfler
26de720c84 The VM store interface has changed to better match the one of the device interface.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8848 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-04 17:41:42 +00:00
Axel Dörfler
c66a5d50b7 "Improved" a commentary.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8847 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-04 17:36:50 +00:00
Axel Dörfler
b8d0a6779d pnp_node_info is now a little bit more public and can now be found in kdevice_manager.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8846 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-04 17:35:15 +00:00
Axel Dörfler
f6d0f5ea94 Accidently activated debug output with the last change.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8835 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 19:27:20 +00:00
Axel Dörfler
f3165b2826 Removed the vm_store::data field. Cleaned up the files a bit, removed
unused headers.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8834 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 19:08:47 +00:00
Axel Dörfler
80249479d4 No longer needed, we're now using the vnode store in ../cache/vnode_store.cpp.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8831 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 17:06:47 +00:00
Axel Dörfler
5ad8418606 Now uses the new vnode store.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8830 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 17:05:21 +00:00
Axel Dörfler
447a16653a Added a basic vnode store, more or less the same as the old one.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8829 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 17:04:09 +00:00
Axel Dörfler
21c6ae44d3 vfs_get_vnode_cache() was pretty broken, and didn't returned the correct
cache pointer in most cases.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8825 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 15:55:41 +00:00
Axel Dörfler
103d0293a9 Moved this file to ../cache/block_cache.cpp.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8824 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 15:40:10 +00:00
Axel Dörfler
35df9fef55 Removed cache.cpp from the build.
Removed unnecessary grist from source files.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8823 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 15:39:14 +00:00
Axel Dörfler
e521a22974 Added the "cache" subdirectory to the build.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8821 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 15:36:35 +00:00
Axel Dörfler
3a976c2844 Adds block_cache.cpp to the build.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8820 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 15:35:32 +00:00
Axel Dörfler
125f4d5101 Implemented a "block map" that can efficiently map contiguous blocks to
addresses.
Not yet used - might be used instead of the vm_cache page caching for the file cache.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8819 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 15:34:24 +00:00
Axel Dörfler
6a3016d2ab Moved the block cache to this file (from ../vm/cache.cpp).
It still contains a very dump version of a BeOS compatible block cache.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8818 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 15:32:20 +00:00
Axel Dörfler
4872592920 Changed the way the vnode cache is set - it's now cleaner and can no longer
allocate a cache twice.
The VFS is now responsible for allocating the cache object - it will call
the VM to do that if necessary.
Added another accessor call to a pointer to the VFS private vnode object.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8817 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 14:11:04 +00:00
Axel Dörfler
2f1cbcf862 Changed the way the vnode cache is set - it's now cleaner and can no longer
allocate a cache twice. Now handles resource shortages gracefully.
Added small description to _vm_map_file().
Minor other cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8816 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-03 14:09:26 +00:00
Axel Dörfler
74cbf93e61 Added and improved lots of comments in vm_soft_fault().
Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8800 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-02 15:13:15 +00:00
Axel Dörfler
05835518ae Added a function prototype and description on how the userland waitpid()
functionality could be supported.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8790 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-02 01:41:06 +00:00
Axel Dörfler
d5b3917b25 Introduced new thread_entry_func type.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8778 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-01 15:48:36 +00:00
Axel Dörfler
d32f5c2e8b Added probably broken implementation of sigprocmask().
Renamed syscalls to the new scheme.
Some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8770 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-01 12:05:09 +00:00
Axel Dörfler
7ac08f006f The user image ELF loader is now silent when compiled without TRACE_ELF defined as long as no serious error occurs.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8737 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-31 04:56:15 +00:00
Axel Dörfler
1980b54a21 Fixed a stupid bug in list_move_to_list(): it did not work for empty lists.
The kernel no longer trashes memory when you delete a port without any
messages in its queue (i.e. you can now safely link against libbe.so :)).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-31 04:45:02 +00:00
Axel Dörfler
0ebb4701b9 fs_read_info() will now also succeed if the file system in question does
not support the read_fs_info() function - only the values that the VFS
does know about are filled in, then.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8735 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-31 03:41:29 +00:00
Axel Dörfler
d885b0a17c Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8732 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-30 23:34:22 +00:00
Ingo Weinhold
48d046ac05 * Fixed usage of user_strlcpy() in several places.
* null-terminated the result of common_read_link().
* Fixed return value of _user_read_link().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8705 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-29 11:58:04 +00:00
Ingo Weinhold
f57dcf3200 Several follow-up changes required by the changes either to the VFS
syscalls or to the syscall mechanism (which exposed naming and parameter
inconsistencies).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8704 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 20:51:47 +00:00
Ingo Weinhold
383cdedbd2 Several follow-up changes required by the changes either to the VFS
syscalls or to the syscall mechanism (which exposed naming and parameter
inconsistencies).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8703 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 20:45:00 +00:00
Ingo Weinhold
9955b99a86 Several VFS related syscalls have been changed, added or removed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8701 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 20:38:39 +00:00
Ingo Weinhold
6fec58934a We automatically generate what information are available from syscalls.h,
which from now on relieves us from the duty to maintain syscalls.S and
syscalls.c manually. Either includes a generated file.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8699 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 20:34:43 +00:00
Axel Dörfler
a48a5ab889 devfs now supports the I/O scheduler mechanism and automatically uses it
for all raw disk devices.
Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8685 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 13:33:31 +00:00
Axel Dörfler
6e3462b57e Added I/O scheduler to the build.
Removed unnecessary grist from source files.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8684 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 13:31:42 +00:00
Axel Dörfler
d3efd9a6ef Implemented the basic I/O scheduler architecture - doesn't schedule anything
yet, though (instead, it directly performs all requests, so there is no
functional difference to the previous mechanism).
devfs and the file cache will directly access the I/O scheduler. There is
one scheduler per raw disk device; devfs detects that automatically, and
all I/O will go through the scheduler, then.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8683 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 13:28:29 +00:00
Axel Dörfler
c96488c21d Now compiles fine as C++ file (fixed min() usage).
Added our license.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8681 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-27 17:57:43 +00:00
Axel Dörfler
ba74984309 Renamed devfs.c to devfs.cpp - it's now compiled as C++ file to allow usage
of kernel internal C++ API.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8680 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-27 17:46:48 +00:00
Axel Dörfler
ded78bc1ef Made changes to let this file be compiled as C++ file as well without warnings.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8679 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-27 17:44:08 +00:00
Axel Dörfler
96a34bfa35 Improved debug output - you know get the exact address of a page fault, not
rounded to the page offset.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8633 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-24 21:47:11 +00:00