• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef HDF_LOAD_VDI_H
17 #define HDF_LOAD_VDI_H
18 
19 #include "hdf_base.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif /* __cplusplus */
24 
25 struct HdfVdiBase {
26     uint32_t moduleVersion;
27     const char *moduleName;
28     int (*CreateVdiInstance)(struct HdfVdiBase *vdiBase);
29     int (*DestoryVdiInstance)(struct HdfVdiBase *vdiBase);
30 };
31 
32 struct HdfVdiObject {
33     uintptr_t dlHandler;
34     struct HdfVdiBase *vdiBase;
35 };
36 
37 #define HDF_INVALID_VERSION 0xFFFFFFFF
38 
39 /* The parameter is the library name with a suffix */
40 struct HdfVdiObject *HdfLoadVdi(const char *libName);
41 
42 /*
43  * The caller needs to confirm whether the version number is expected,
44  * and ensure that the structure inside the vdi is the same as the structure to be converted,
45  * Otherwise, it may cause crash issues.
46  */
47 uint32_t HdfGetVdiVersion(const struct HdfVdiObject *vdiObj);
48 
49 void HdfCloseVdi(struct HdfVdiObject *vdiObj);
50 
51 #define HDF_VDI_INIT(module) struct HdfVdiBase *hdfVdiDesc = (struct HdfVdiBase *)&(module)
52 
53 #ifdef __cplusplus
54 }
55 #endif /* __cplusplus */
56 
57 #endif /* HDF_LOAD_VDI_H */
58 
59