]> git.proxmox.com Git - ceph.git/blob - ceph/src/pmdk/src/librpmem/librpmem.c
import ceph 16.2.7
[ceph.git] / ceph / src / pmdk / src / librpmem / librpmem.c
1 // SPDX-License-Identifier: BSD-3-Clause
2 /* Copyright 2016-2019, Intel Corporation */
3
4 /*
5 * librpmem.c -- entry points for librpmem
6 */
7
8 #include <stdio.h>
9 #include <stdint.h>
10
11 #include "librpmem.h"
12
13 #include "rpmem.h"
14 #include "rpmem_common.h"
15 #include "rpmem_util.h"
16 #include "rpmem_fip.h"
17 #include "util.h"
18 #include "out.h"
19
20 /*
21 * librpmem_init -- load-time initialization for librpmem
22 *
23 * Called automatically by the run-time loader.
24 */
25 ATTR_CONSTRUCTOR
26 void
27 librpmem_init(void)
28 {
29 util_init();
30 out_init(RPMEM_LOG_PREFIX, RPMEM_LOG_LEVEL_VAR, RPMEM_LOG_FILE_VAR,
31 RPMEM_MAJOR_VERSION, RPMEM_MINOR_VERSION);
32 LOG(3, NULL);
33 rpmem_util_cmds_init();
34
35 rpmem_util_get_env_max_nlanes(&Rpmem_max_nlanes);
36 rpmem_util_get_env_wq_size(&Rpmem_wq_size);
37 }
38
39 /*
40 * librpmem_fini -- librpmem cleanup routine
41 *
42 * Called automatically when the process terminates.
43 */
44 ATTR_DESTRUCTOR
45 void
46 librpmem_fini(void)
47 {
48 LOG(3, NULL);
49 rpmem_util_cmds_fini();
50 out_fini();
51 }
52
53 /*
54 * rpmem_check_version -- see if library meets application version requirements
55 */
56 const char *
57 rpmem_check_version(unsigned major_required, unsigned minor_required)
58 {
59 LOG(3, "major_required %u minor_required %u",
60 major_required, minor_required);
61
62 if (major_required != RPMEM_MAJOR_VERSION) {
63 ERR("librpmem major version mismatch (need %u, found %u)",
64 major_required, RPMEM_MAJOR_VERSION);
65 return out_get_errormsg();
66 }
67
68 if (minor_required > RPMEM_MINOR_VERSION) {
69 ERR("librpmem minor version mismatch (need %u, found %u)",
70 minor_required, RPMEM_MINOR_VERSION);
71 return out_get_errormsg();
72 }
73
74 return NULL;
75 }
76
77 /*
78 * rpmem_errormsg -- return the last error message
79 */
80 const char *
81 rpmem_errormsg(void)
82 {
83 return out_get_errormsg();
84 }