From 95839f5c9276596236cd5b6658465e588e2811e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 3 Aug 2005 17:25:03 +0000 Subject: [PATCH] The file cache now has another init method that is called after the boot device becomes available. Currently, it opens the "launch_speedup" module (if available), later it should consult a settings file for what to do. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13894 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/file_cache.h | 1 + src/system/kernel/cache/file_cache.cpp | 20 ++++++++++++++++---- src/system/kernel/fs/vfs.cpp | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/headers/private/kernel/file_cache.h b/headers/private/kernel/file_cache.h index 1ec48f613a..0daab3082a 100644 --- a/headers/private/kernel/file_cache.h +++ b/headers/private/kernel/file_cache.h @@ -44,6 +44,7 @@ extern void cache_node_closed(void *vnode, int32 fdType, vm_cache_ref *cache, extern void cache_node_launched(size_t argCount, char * const *args); extern void cache_prefetch_vnode(void *vnode, off_t offset, size_t size); extern void cache_prefetch(mount_id mountID, vnode_id vnodeID, off_t offset, size_t size); +extern status_t file_cache_init_post_boot_device(void); extern status_t file_cache_init(void); extern vm_store *vm_create_vnode_store(void *vnode); diff --git a/src/system/kernel/cache/file_cache.cpp b/src/system/kernel/cache/file_cache.cpp index afb10aa3a2..c50c65c19c 100644 --- a/src/system/kernel/cache/file_cache.cpp +++ b/src/system/kernel/cache/file_cache.cpp @@ -898,7 +898,7 @@ extern "C" void cache_node_opened(void *vnode, int32 fdType, vm_cache_ref *cache, mount_id mountID, vnode_id parentID, vnode_id vnodeID, const char *name) { - if (sCacheModule == NULL) + if (sCacheModule == NULL || sCacheModule->node_opened == NULL) return; off_t size = -1; @@ -916,7 +916,7 @@ extern "C" void cache_node_closed(void *vnode, int32 fdType, vm_cache_ref *cache, mount_id mountID, vnode_id vnodeID) { - if (sCacheModule == NULL) + if (sCacheModule == NULL || sCacheModule->node_closed == NULL) return; int32 accessType = 0; @@ -931,7 +931,7 @@ cache_node_closed(void *vnode, int32 fdType, vm_cache_ref *cache, extern "C" void cache_node_launched(size_t argCount, char * const *args) { - if (sCacheModule == NULL) + if (sCacheModule == NULL || sCacheModule->node_launched == NULL) return; sCacheModule->node_launched(argCount, args); @@ -939,10 +939,22 @@ cache_node_launched(size_t argCount, char * const *args) extern "C" status_t -file_cache_init(void) +file_cache_init_post_boot_device(void) { // ToDo: get cache module out of driver settings + if (get_module("file_cache/launch_speedup/v1", (module_info **)&sCacheModule) == B_OK) { + dprintf("** opened launch speedup\n"); + } else + dprintf("** could not open launch speedup!\n"); + + return B_OK; +} + + +extern "C" status_t +file_cache_init(void) +{ register_generic_syscall(CACHE_SYSCALLS, file_cache_control, 1, 0); return B_OK; } diff --git a/src/system/kernel/fs/vfs.cpp b/src/system/kernel/fs/vfs.cpp index e6df620eff..7cdb829376 100644 --- a/src/system/kernel/fs/vfs.cpp +++ b/src/system/kernel/fs/vfs.cpp @@ -2867,6 +2867,7 @@ vfs_mount_boot_file_system(kernel_args *args) _kern_create_symlink(-1, path, "/boot", 0); } + file_cache_init_post_boot_device(); return B_OK; }