更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
path_cache.h
浏览该文件的文档.
1/*
2 * Copyright (c) 2021-2021 Huawei Device Co., Ltd. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification,
5 * are permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * 3. Neither the name of the copyright holder nor the names of its contributors may be used
15 * to endorse or promote products derived from this software without specific prior written
16 * permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
20 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#ifndef _PATH_CACHE_H
32#define _PATH_CACHE_H
33
34#include "los_list.h"
35#include "fs/mount.h"
36#include "vnode.h"
37
38struct PathCache {//路径缓存
39 struct Vnode *parentVnode; /* vnode points to the cache */
40 struct Vnode *childVnode; /* vnode the cache points to */
41 LIST_ENTRY parentEntry; /* list entry for cache list in the parent vnode */
42 LIST_ENTRY childEntry; /* list entry for cache list in the child vnode */
43 LIST_ENTRY hashEntry; /* list entry for buckets in the hash table */
44 uint8_t nameLen; /* length of path component */
45#ifdef LOSCFG_DEBUG_VERSION
46 int hit; /* cache hit count*/
47#endif
48 char name[0]; /* path component name */
49};
50
51int PathCacheInit(void);
52int PathCacheFree(struct PathCache *cache);
53struct PathCache *PathCacheAlloc(struct Vnode *parent, struct Vnode *vnode, const char *name, uint8_t len);
54int PathCacheLookup(struct Vnode *parent, const char *name, int len, struct Vnode **vnode);
55void VnodePathCacheFree(struct Vnode *vnode);
56void PathCacheMemoryDump(void);
57void PathCacheDump(void);
59#ifdef LOSCFG_DEBUG_VERSION
60void ResetPathCacheHitInfo(int *hit, int *try);
61#endif
62
63#endif /* _PATH_CACHE_H */
双向链表由内联函数实现 http://weharmonyos.com/openharmony/zh-cn/device-dev/kernel/kernel-small-apx-dll....
void PathCacheMemoryDump(void)
Definition: path_cache.c:81
void VnodePathCacheFree(struct Vnode *vnode)
和长辈,晚辈告别,从此不再是父亲和孩子.
Definition: path_cache.c:199
void ResetPathCacheHitInfo(int *hit, int *try)
Definition: path_cache.c:46
int PathCacheFree(struct PathCache *cache)
Definition: path_cache.c:147
LIST_HEAD * GetPathCacheList(void)
Definition: path_cache.c:208
int PathCacheLookup(struct Vnode *parent, const char *name, int len, struct Vnode **vnode)
Definition: path_cache.c:162
int PathCacheInit(void)
Definition: path_cache.c:58
struct PathCache * PathCacheAlloc(struct Vnode *parent, struct Vnode *vnode, const char *name, uint8_t len)
Definition: path_cache.c:112
void PathCacheDump(void)
Definition: path_cache.c:66
struct Vnode * childVnode
Definition: path_cache.h:40
LIST_ENTRY childEntry
Definition: path_cache.h:42
uint8_t nameLen
Definition: path_cache.h:44
char name[0]
Definition: path_cache.h:48
LIST_ENTRY hashEntry
Definition: path_cache.h:43
LIST_ENTRY parentEntry
Definition: path_cache.h:41
struct Vnode * parentVnode
Definition: path_cache.h:39
vnode并不包含文件名,因为 vnode和文件名是 1:N 的关系
Definition: vnode.h:164