From 92ce7b918ab8170a80f79cecdf00b2bcbd2bd858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 2 Feb 2005 06:30:07 +0000 Subject: [PATCH] Improved capabilities of the file cache modules. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11209 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/cache/file_cache.cpp | 38 ++++++++++++++++++++-------- src/kernel/core/team.c | 5 ++++ 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/kernel/core/cache/file_cache.cpp b/src/kernel/core/cache/file_cache.cpp index 131efe76ab..80de52cba2 100644 --- a/src/kernel/core/cache/file_cache.cpp +++ b/src/kernel/core/cache/file_cache.cpp @@ -682,28 +682,46 @@ out: extern "C" void -cache_node_opened(vm_cache_ref *cache, mount_id mountID, vnode_id vnodeID) +cache_node_opened(void *vnode, int32 fdType, vm_cache_ref *cache, mount_id mountID, + vnode_id parentID, vnode_id vnodeID, const char *name) { - if (cache == NULL) + if (sCacheModule == NULL) return; - file_cache_ref *ref = (file_cache_ref *)((vnode_store *)cache->cache->store)->file_cache_ref; + off_t size = -1; + if (cache != NULL) { + file_cache_ref *ref = (file_cache_ref *)((vnode_store *)cache->cache->store)->file_cache_ref; + if (ref != NULL) + size = ref->cache->cache->virtual_size; + } - if (ref != NULL && sCacheModule != NULL) - sCacheModule->node_opened(mountID, vnodeID, ref->cache->cache->virtual_size); + sCacheModule->node_opened(vnode, fdType, mountID, parentID, vnodeID, name, size); } extern "C" void -cache_node_closed(vm_cache_ref *cache, mount_id mountID, vnode_id vnodeID) +cache_node_closed(void *vnode, int32 fdType, vm_cache_ref *cache, + mount_id mountID, vnode_id vnodeID) { - if (cache == NULL) + if (sCacheModule == NULL) return; - file_cache_ref *ref = (file_cache_ref *)((vnode_store *)cache->cache->store)->file_cache_ref; + int32 accessType = 0; + if (cache != NULL) { + // ToDo: set accessType + } - if (ref != NULL && sCacheModule != NULL) - sCacheModule->node_closed(mountID, vnodeID); + sCacheModule->node_closed(vnode, fdType, mountID, vnodeID, accessType); +} + + +extern "C" void +cache_node_launched(size_t argCount, char * const *args) +{ + if (sCacheModule == NULL) + return; + + sCacheModule->node_launched(argCount, args); } diff --git a/src/kernel/core/team.c b/src/kernel/core/team.c index bbaccc81b9..0c44a6a516 100644 --- a/src/kernel/core/team.c +++ b/src/kernel/core/team.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -1014,6 +1015,8 @@ load_image_etc(int32 argCount, char **args, int32 envCount, char **env, int32 pr if (err < B_OK) goto err3; + cache_node_launched(argCount, args); + // cut the path from the main thread name threadName = strrchr(args[0], '/'); if (threadName != NULL) @@ -1099,6 +1102,8 @@ exec_team(int32 argCount, char **args, int32 envCount, char **env) remove_images(team); vfs_exec_io_context(team->io_context); + cache_node_launched(argCount, args); + // rename the team strlcpy(team->name, args[0], B_OS_NAME_LENGTH);