xref: /aosp_15_r20/external/deqp/framework/delibs/deutil/deDynamicLibrary.h (revision 35238bce31c2a825756842865a792f8cf7f89930)
1  #ifndef _DEDYNAMICLIBRARY_H
2  #define _DEDYNAMICLIBRARY_H
3  /*-------------------------------------------------------------------------
4   * drawElements Utility Library
5   * ----------------------------
6   *
7   * Copyright 2014 The Android Open Source Project
8   *
9   * Licensed under the Apache License, Version 2.0 (the "License");
10   * you may not use this file except in compliance with the License.
11   * You may obtain a copy of the License at
12   *
13   *      http://www.apache.org/licenses/LICENSE-2.0
14   *
15   * Unless required by applicable law or agreed to in writing, software
16   * distributed under the License is distributed on an "AS IS" BASIS,
17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   * See the License for the specific language governing permissions and
19   * limitations under the License.
20   *
21   *//*!
22   * \file
23   * \brief Dynamic link library abstraction.
24   *//*--------------------------------------------------------------------*/
25  
26  #include "deDefs.h"
27  
28  DE_BEGIN_EXTERN_C
29  
30  /* Dynamic link library. */
31  typedef struct deDynamicLibrary_s deDynamicLibrary;
32  
33  /*--------------------------------------------------------------------*//*!
34   * \brief Open dynamic library.
35   * \param fileName Name or path to dynamic library.
36   * \return Dynamic library handle, or DE_NULL on failure.
37   *
38   * This function opens and loads dynamic library to current process.
39   * If library is already loaded, its reference count will be increased.
40   *//*--------------------------------------------------------------------*/
41  deDynamicLibrary *deDynamicLibrary_open(const char *fileName);
42  
43  /*--------------------------------------------------------------------*//*!
44   * \brief Load function symbol from dynamic library.
45   * \param library Dynamic library
46   * \param symbolName Name of function symbol
47   * \return Function pointer or DE_NULL on failure
48   * \note Returned pointers will be invalidated if dynamic library is
49   *       unloaded.
50   *//*--------------------------------------------------------------------*/
51  deFunctionPtr deDynamicLibrary_getFunction(const deDynamicLibrary *library, const char *symbolName);
52  
53  /*--------------------------------------------------------------------*//*!
54   * \brief Close dynamic library.
55   * \param library Dynamic library
56   *
57   * Closing library handle decrements reference count. Library is unloaded
58   * from process if reference count reaches zero.
59   *//*--------------------------------------------------------------------*/
60  void deDynamicLibrary_close(deDynamicLibrary *library);
61  
62  DE_END_EXTERN_C
63  
64  #endif /* _DEDYNAMICLIBRARY_H */
65