Rev |
Age |
Author |
Path |
Log message |
Diff |
Changes |
2682 |
6113 d 11 h |
jermar |
/trunk/uspace/ |
Fix type in declaration of VFS node rwlock.
Introduce a dedicated type for futexes. Make the existing futex code use this
newly introduced type and fix formatting in futex.c. |
|
/trunk/uspace/lib/libc/generic/futex.c /trunk/uspace/lib/libc/include/futex.h /trunk/uspace/srv/vfs/vfs.h
|
2681 |
6113 d 12 h |
jermar |
/trunk/uspace/ |
Turn the namespace futex into rwlock. |
|
/trunk/uspace/lib/libc/include/rwlock.h /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_unlink.c
|
2680 |
6113 d 12 h |
jermar |
/trunk/uspace/ |
Add basic rwlock API for uspace so that VFS can be designed/implemented using
this API. So far, the implementation of this API merely wraps futexes into
rwlocks. Real rwlocks are wanted by ticket #54.
Using the new rwlock API, replace the VFS node content futex with an rwlock.
Lock the contents rwlock as reader on reads and as writer on writes. |
|
/trunk/uspace/lib/libc/include/rwlock.h
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_node.c /trunk/uspace/srv/vfs/vfs_rdwr.c
|
2679 |
6117 d 5 h |
jermar |
/trunk/uspace/srv/vfs/ |
Rename unlink_futex to namespace_futex and introduce a new futex for serializing
concurrent access to a VFS node's contents by multiple clients. |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_node.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_rdwr.c /trunk/uspace/srv/vfs/vfs_unlink.c
|
2678 |
6119 d 8 h |
jermar |
/trunk/uspace/ |
The IPC_M_SHARE_* and IPC_M_DATA_* calls pass through 3 stages. Rename the send,
receive and deliver wrappers to names ending with 'start', 'receive' and
'finalize', respectively. This should make it clearer for dummies. |
|
/trunk/uspace/app/klog/klog.c /trunk/uspace/app/tester/devmap/devmap1.c /trunk/uspace/lib/libc/generic/ipc.c /trunk/uspace/lib/libc/generic/time.c /trunk/uspace/lib/libc/generic/vfs.c /trunk/uspace/lib/libc/include/ipc/ipc.h /trunk/uspace/lib/libfs/libfs.c /trunk/uspace/srv/console/console.c /trunk/uspace/srv/console/gcons.c /trunk/uspace/srv/devmap/devmap.c /trunk/uspace/srv/fs/tmpfs/tmpfs_ops.c /trunk/uspace/srv/rd/rd.c /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_register.c
|
2677 |
6119 d 8 h |
jermar |
/trunk/ |
Rename IPC_M_AS_AREA_SEND to IPC_M_SHARE_OUT. Rename IPC_M_AS_AREA_RECV to
IPC_M_SHARE_IN. Provide user-friendly wrappers for these methods so that even
dummies can get it right. Some applications using simpler protocols still use
these methods directly. |
|
/trunk/kernel/generic/include/ipc/ipc.h /trunk/kernel/generic/src/ipc/sysipc.c /trunk/uspace/app/klog/klog.c /trunk/uspace/lib/libc/generic/ipc.c /trunk/uspace/lib/libc/generic/time.c /trunk/uspace/lib/libc/include/ipc/ipc.h /trunk/uspace/lib/libfs/libfs.c /trunk/uspace/srv/console/console.c /trunk/uspace/srv/console/gcons.c /trunk/uspace/srv/fb/ega.c /trunk/uspace/srv/fb/fb.c /trunk/uspace/srv/ns/ns.c /trunk/uspace/srv/rd/rd.c /trunk/uspace/srv/vfs/vfs_register.c
|
2676 |
6119 d 15 h |
jermar |
/trunk/ |
Simplify the IPC_M_DATA_WRITE protocol. Do not pass the source address space
virtual address to the recipient. This feature was not used anyway. Now
IPC_M_DATA_WRITE and IPC_M_DATA_READ are feature-aligned. |
|
/trunk/kernel/generic/include/ipc/ipc.h /trunk/kernel/generic/src/ipc/sysipc.c /trunk/uspace/lib/libc/generic/ipc.c /trunk/uspace/lib/libc/include/ipc/ipc.h /trunk/uspace/srv/devmap/devmap.c /trunk/uspace/srv/fs/tmpfs/tmpfs_ops.c /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_rdwr.c /trunk/uspace/srv/vfs/vfs_register.c
|
2666 |
6125 d 5 h |
jermar |
/trunk/uspace/srv/ |
VFS and TMPFS support for VFS_WRITE. |
|
/trunk/uspace/srv/vfs/vfs_rdwr.c
/trunk/uspace/srv/vfs/vfs_read.c
/trunk/uspace/srv/fs/tmpfs/tmpfs.h /trunk/uspace/srv/fs/tmpfs/tmpfs_ops.c /trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2663 |
6127 d 3 h |
jermar |
/trunk/uspace/ |
Reimplement VFS_READ using IPC_M_DATA_READ. |
|
/trunk/uspace/lib/libc/generic/ipc.c /trunk/uspace/srv/fs/tmpfs/tmpfs_ops.c /trunk/uspace/srv/vfs/vfs_read.c
|
2660 |
6127 d 5 h |
jermar |
/trunk/ |
Rename IPC_M_DATA_SEND to IPC_M_DATA_WRITE. Now, when we also add
IPC_M_DATA_READ, it will not clash and cause confusion with userspace wrappers
such as ipc_data_receive(). Rename the forementioned wrappers to
ipc_data_write_send(), ipc_data_write_receive() and ipc_data_write_deliver(). |
|
/trunk/kernel/generic/include/ipc/ipc.h /trunk/kernel/generic/src/ipc/sysipc.c /trunk/uspace/app/tester/devmap/devmap1.c /trunk/uspace/app/tester/vfs/vfs1.c /trunk/uspace/lib/libc/generic/ipc.c /trunk/uspace/lib/libc/include/ipc/ipc.h /trunk/uspace/lib/libfs/libfs.c /trunk/uspace/srv/devmap/devmap.c /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_register.c
|
2659 |
6128 d 2 h |
jermar |
/trunk/uspace/srv/vfs/ |
After VFS_READ, update the position pointer in the open file. |
|
/trunk/uspace/srv/vfs/vfs_read.c
|
2658 |
6128 d 2 h |
jermar |
/trunk/uspace/srv/ |
VFS work.
Foundation for TMPFS-side VFS_READ and fixes in VFS-side VFS_READ. |
|
/trunk/uspace/srv/fs/tmpfs/tmpfs.c /trunk/uspace/srv/fs/tmpfs/tmpfs.h /trunk/uspace/srv/fs/tmpfs/tmpfs_ops.c /trunk/uspace/srv/vfs/vfs_read.c
|
2657 |
6128 d 5 h |
jermar |
/trunk/uspace/ |
VFS work.
Cleaner VFS_MOUNT protocol. |
|
/trunk/uspace/app/tester/vfs/vfs1.c /trunk/uspace/srv/vfs/vfs_mount.c
|
2654 |
6131 d 8 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Don't hang up the connection to VFS after VFS_MOUNT. |
|
/trunk/uspace/srv/vfs/vfs.c
|
2653 |
6131 d 8 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Index of the last PLB character of a pathname was not correctly calculated. |
|
/trunk/uspace/srv/vfs/vfs_lookup.c
|
2652 |
6131 d 8 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Fix VFS node hash function to hash only within the limits of its supposed
ranges. |
|
/trunk/uspace/srv/vfs/vfs_node.c
|
2651 |
6131 d 8 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work. Releas the FS phone earlier. |
|
/trunk/uspace/srv/vfs/vfs_mount.c
|
2650 |
6131 d 8 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work. FS info futex must be initialized. |
|
/trunk/uspace/srv/vfs/vfs_register.c
|
2641 |
6136 d 7 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
During VFS_REGISTER, use strncmp() instead of strcmp().
Add one excessive convenience byte to vfs_info.name to support the
above-mentioned change. In case the fs name spans all available
characters, make sure this convenience byte is zero. |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_register.c
|
2637 |
6146 d 5 h |
cejka |
/trunk/ |
Extended IPC_M_CONNECT_TO_ME to use 3 user defined parameters.
Phone identifier is passed in ARG5. |
|
/trunk/kernel/generic/include/ipc/ipc.h /trunk/kernel/generic/src/ipc/ipc.c /trunk/kernel/generic/src/ipc/ipcrsc.c /trunk/kernel/generic/src/ipc/sysipc.c /trunk/uspace/app/tester/devmap/devmap1.c /trunk/uspace/app/tester/ipc/register.c /trunk/uspace/lib/libc/generic/ipc.c /trunk/uspace/lib/libc/include/ipc/ipc.h /trunk/uspace/srv/console/console.c /trunk/uspace/srv/devmap/devmap.c /trunk/uspace/srv/fb/main.c /trunk/uspace/srv/fs/fat/fat.c /trunk/uspace/srv/kbd/generic/kbd.c /trunk/uspace/srv/ns/ns.c /trunk/uspace/srv/pci/pci.c /trunk/uspace/srv/rd/rd.c /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs_register.c
|
2635 |
6148 d 5 h |
cejka |
/trunk/ |
Function ipc_connect_me_to sends 3 user defined arguments now.
One argument added also to ipc_forward_fast.
Fixed devmap and improved its test. |
|
/trunk/kernel/generic/include/ipc/ipc.h /trunk/kernel/generic/include/ipc/sysipc.h /trunk/kernel/generic/src/ipc/sysipc.c /trunk/uspace/app/tester/devmap/devmap1.c /trunk/uspace/app/tester/ipc/connect.c /trunk/uspace/lib/libc/generic/async.c /trunk/uspace/lib/libc/generic/io/stream.c /trunk/uspace/lib/libc/generic/ipc.c /trunk/uspace/lib/libc/include/ipc/ipc.h /trunk/uspace/srv/console/console.c /trunk/uspace/srv/devmap/devmap.c /trunk/uspace/srv/devmap/devmap.h /trunk/uspace/srv/fs/fat/fat.c /trunk/uspace/srv/ns/ns.c /trunk/uspace/srv/vfs/vfs_read.c
|
2625 |
6156 d 6 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Proto implementation of VFS_READ. |
|
/trunk/uspace/srv/vfs/vfs_read.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2624 |
6156 d 6 h |
jermar |
/trunk/uspace/srv/vfs/ |
Add sanity checks to functions using file descriptors as indices into files. |
|
/trunk/uspace/srv/vfs/vfs_file.c
|
2619 |
6160 d 4 h |
jermar |
/trunk/ |
Modify ipc_answer_*() to make use of all six syscall arguments. The recommended
means of answering calls is via the ipc_answer_m() macros (where m denotes the
number of return arguments) that automatically decide between the fast register
version or the slow universal version of ipc_answer(). |
|
/trunk/kernel/generic/include/ipc/sysipc.h /trunk/kernel/generic/include/syscall/syscall.h /trunk/kernel/generic/src/ipc/sysipc.c /trunk/kernel/generic/src/syscall/syscall.c /trunk/uspace/app/tester/ipc/answer.c /trunk/uspace/app/tester/ipc/register.c /trunk/uspace/app/tester/ipc/send_async.c /trunk/uspace/lib/libc/generic/async.c /trunk/uspace/lib/libc/generic/ipc.c /trunk/uspace/lib/libc/include/ipc/ipc.h /trunk/uspace/srv/console/console.c /trunk/uspace/srv/devmap/devmap.c /trunk/uspace/srv/fb/ega.c /trunk/uspace/srv/fb/fb.c /trunk/uspace/srv/fb/main.c /trunk/uspace/srv/fb/sysio.c /trunk/uspace/srv/fs/fat/fat.c /trunk/uspace/srv/kbd/generic/kbd.c /trunk/uspace/srv/ns/ns.c /trunk/uspace/srv/pci/pci.c /trunk/uspace/srv/rd/rd.c /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_register.c
|
2600 |
6169 d 12 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
vfs_grab_phone() must disable fibril preemption in order to avoid deadlock with
other fibrils of the same thread that might be trying to vfs_grab_phone() too. |
|
/trunk/uspace/srv/vfs/vfs_register.c
|
2597 |
6173 d 6 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Increment reference counters for the VFS nodes representing the mount point and
the root of the mounted filesystem, respectively, during VFS_MOUNT. Take the
unlink_futex when transforming the triplet into a VFS node. |
|
/trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_unlink.c
|
2596 |
6174 d 8 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Implement VFS node hash table management. |
|
/trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_node.c
|
2593 |
6176 d 5 h |
jermar |
/trunk/uspace/srv/vfs/ |
A lot of more VFS prototyping.
VFS_OPEN gets reasonably complete, fix a limitation that prevented file
structures from being shared by multiple file descriptors, add functions for
file descriptor management, introduce unlink_futex and two new VFS operations
VFS_UNLINK and VFS_RENAME. |
|
/trunk/uspace/srv/vfs/vfs_file.c /trunk/uspace/srv/vfs/vfs_unlink.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_node.c /trunk/uspace/srv/vfs/vfs_open.c
|
2590 |
6177 d 8 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Start implementing VFS side of VFS_OPEN.
Add vfs_node.c to contain VFS node related internal functions. |
|
/trunk/uspace/srv/vfs/vfs_node.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_register.c
|
2589 |
6177 d 10 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Allocate the open filess array dynamically and protect access to it via a
per-connection futex. Defer its allocation until the client makes a first
VFS_OPEN request.
Actually call vfs_mount() and vfs_open(), respectively, when the VFS_MOUNT and
VFS_OPEN requests, respectively, are received from the client. |
|
/trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_open.c
|
2588 |
6177 d 10 h |
jermar |
/trunk/uspace/ |
Add ipc_answer_fast_[01] macros so that ipc_answer_fast() users don't have to
write zero arguments all the time. |
|
/trunk/uspace/lib/libc/include/ipc/ipc.h /trunk/uspace/srv/fs/fat/fat.c /trunk/uspace/srv/ns/ns.c /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_register.c
|
2587 |
6177 d 11 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Introduce the notion of VFS_PAIR which corresponds to a file system instance,
and VFS_TRIPLET, which corresponds to a file system node. Separate vfs_triplet_t
and vfs_node_t as the former one is the stateless counterpart of the latter. |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_mount.c
|
2576 |
6185 d 5 h |
jermar |
/trunk/uspace/srv/vfs/ |
Specify the width of the printed text in an argument to printf(). |
|
/trunk/uspace/srv/vfs/vfs_register.c
|
2569 |
6207 d 12 h |
jermar |
/trunk/uspace/ |
Tiny refinement of if-else_if-else statement in vfs_register.c. |
|
/trunk/uspace/lib/libc/generic/async.c /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs_mount.c
|
2567 |
6208 d 18 h |
jermar |
/trunk/uspace/srv/vfs/ |
Don't explicitly answer the IPC_M_DATA_SEND call in VFS_REGISTER.
It is done automatically in ipc_data_deliver(). |
|
/trunk/uspace/srv/vfs/vfs_register.c
|
2560 |
6212 d 7 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Start VFS_OPEN. |
|
/trunk/uspace/srv/vfs/vfs_open.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2554 |
6213 d 3 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Add the missing bits of VFS-side VFS_MOUNT. |
|
/trunk/uspace/srv/vfs/vfs_mount.c
|
2553 |
6213 d 5 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Prevent race conditions when checking rootfs by taking a newly introduced
rootfs_futex. |
|
/trunk/uspace/srv/vfs/vfs_mount.c
|
2552 |
6213 d 5 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
This is a checkpoint commit.
It introduces initial, still incomplete, code for VFS-side VFS_MOUNT request. |
|
/trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_mount.c
|
2550 |
6213 d 8 h |
cejka |
/trunk/ |
Fixed naming convention in IPC. |
|
/trunk/kernel/generic/include/ipc/ipc.h /trunk/uspace/lib/libc/include/ipc/fb.h /trunk/uspace/srv/devmap/devmap.c /trunk/uspace/srv/devmap/devmap.h /trunk/uspace/srv/vfs/vfs.h
|