From 83efd208460f3d9e09d3040c05b5a6855cc9be7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 26 Sep 2002 03:36:04 +0000 Subject: [PATCH] The private data field in struct file_descriptor is now a union (that can currently hold a pointer to a fs_mount, or a vnode). Updated the index_dir part of the fs API. Added FDTYPE_INDEX_DIR in fd.h. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1188 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/kernel/fs_interface.h | 10 +++++----- headers/private/kernel/fd.h | 9 +++++++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/headers/os/kernel/fs_interface.h b/headers/os/kernel/fs_interface.h index 69ace075bb..9e2dba67c7 100644 --- a/headers/os/kernel/fs_interface.h +++ b/headers/os/kernel/fs_interface.h @@ -119,11 +119,11 @@ typedef struct fs_ops { status_t (*remove_attr)(fs_volume fs, fs_vnode file, const char *name); /* index directory & index operations */ - status_t (*open_index_dir)(fs_volume fs, fs_vnode v, fs_cookie *cookie, int oflags); - status_t (*close_index_dir)(fs_volume fs, fs_vnode v, fs_cookie cookie); - status_t (*free_index_dir_cookie)(fs_volume fs, fs_vnode v, fs_cookie cookie); - status_t (*read_index_dir)(fs_volume fs, fs_vnode v, fs_cookie cookie, struct dirent *buffer, size_t bufferSize, uint32 *_num); - status_t (*rewind_index_dir)(fs_volume fs, fs_vnode v, fs_cookie cookie); + status_t (*open_index_dir)(fs_volume fs, fs_cookie *cookie); + status_t (*close_index_dir)(fs_volume fs, fs_cookie cookie); + status_t (*free_index_dir_cookie)(fs_volume fs, fs_cookie cookie); + status_t (*read_index_dir)(fs_volume fs, fs_cookie cookie, struct dirent *buffer, size_t bufferSize, uint32 *_num); + status_t (*rewind_index_dir)(fs_volume fs, fs_cookie cookie); status_t (*create_index)(fs_volume fs, const char *name, uint32 type, int flags); status_t (*remove_index)(fs_volume fs, const char *name); diff --git a/headers/private/kernel/fd.h b/headers/private/kernel/fd.h index ee090b65f4..cb8f7a0062 100644 --- a/headers/private/kernel/fd.h +++ b/headers/private/kernel/fd.h @@ -14,6 +14,7 @@ struct file_descriptor; +struct fs_mount; struct vnode; /** The I/O context of a process/team, holds the fd array */ @@ -43,7 +44,10 @@ struct file_descriptor { int32 type; /* descriptor type */ int32 ref_count; struct fd_ops *ops; - struct vnode *vnode; + union { + struct vnode *vnode; + struct fs_mount *mount; + } u; void *cookie; int32 open_mode; }; @@ -55,8 +59,9 @@ enum fd_types { FDTYPE_FILE = 1, FDTYPE_ATTR, FDTYPE_DIR, - FDTYPE_ATTRDIR, + FDTYPE_ATTR_DIR, FDTYPE_INDEX, + FDTYPE_INDEX_DIR, FDTYPE_QUERY, FDTYPE_SOCKET };