kernel/fd: use function table to identify file descriptor type

It allows introducing new file descriptor types without editing enumeration every time. Anonymous FDs will be needed for Mesa
OpenGL/Vulkan drivers to reference GPU memory buffers and other driver objects that can be referenced as FDs from userland.

This change breaks private VFS API compatibility.
No behavior changes intended.

Change-Id: Iac109aad420b0b6aae704b38619436e01dcf4969
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7838
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
X512
2024-07-23 20:23:19 +00:00
committed by waddlesplash
parent e33e65b36e
commit 65a86bce72
8 changed files with 125 additions and 168 deletions
+4 -4
View File
@@ -1053,7 +1053,7 @@ cache_prefetch(dev_t mountID, ino_t vnodeID, off_t offset, size_t size)
extern "C" void
cache_node_opened(struct vnode* vnode, int32 fdType, VMCache* cache,
cache_node_opened(struct vnode* vnode, VMCache* cache,
dev_t mountID, ino_t parentID, ino_t vnodeID, const char* name)
{
if (sCacheModule == NULL || sCacheModule->node_opened == NULL)
@@ -1066,13 +1066,13 @@ cache_node_opened(struct vnode* vnode, int32 fdType, VMCache* cache,
size = cache->virtual_end;
}
sCacheModule->node_opened(vnode, fdType, mountID, parentID, vnodeID, name,
sCacheModule->node_opened(vnode, mountID, parentID, vnodeID, name,
size);
}
extern "C" void
cache_node_closed(struct vnode* vnode, int32 fdType, VMCache* cache,
cache_node_closed(struct vnode* vnode, VMCache* cache,
dev_t mountID, ino_t vnodeID)
{
if (sCacheModule == NULL || sCacheModule->node_closed == NULL)
@@ -1083,7 +1083,7 @@ cache_node_closed(struct vnode* vnode, int32 fdType, VMCache* cache,
// ToDo: set accessType
}
sCacheModule->node_closed(vnode, fdType, mountID, vnodeID, accessType);
sCacheModule->node_closed(vnode, mountID, vnodeID, accessType);
}