]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pmdk/src/libpmemobj/pmemops.h
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright 2016-2020, Intel Corporation */
4 #ifndef LIBPMEMOBJ_PMEMOPS_H
5 #define LIBPMEMOBJ_PMEMOPS_H 1
15 typedef int (*persist_fn
)(void *base
, const void *, size_t, unsigned);
16 typedef int (*flush_fn
)(void *base
, const void *, size_t, unsigned);
17 typedef void (*drain_fn
)(void *base
);
19 typedef void *(*memcpy_fn
)(void *base
, void *dest
, const void *src
, size_t len
,
21 typedef void *(*memmove_fn
)(void *base
, void *dest
, const void *src
, size_t len
,
23 typedef void *(*memset_fn
)(void *base
, void *dest
, int c
, size_t len
,
26 typedef int (*remote_read_fn
)(void *ctx
, uintptr_t base
, void *dest
, void *addr
,
30 /* for 'master' replica: with or without data replication */
31 persist_fn persist
; /* persist function */
32 flush_fn flush
; /* flush function */
33 drain_fn drain
; /* drain function */
34 memcpy_fn memcpy
; /* persistent memcpy function */
35 memmove_fn memmove
; /* persistent memmove function */
36 memset_fn memset
; /* persistent memset function */
47 static force_inline
int
48 pmemops_xpersist(const struct pmem_ops
*p_ops
, const void *d
, size_t s
,
51 return p_ops
->persist(p_ops
->base
, d
, s
, flags
);
54 static force_inline
void
55 pmemops_persist(const struct pmem_ops
*p_ops
, const void *d
, size_t s
)
57 (void) pmemops_xpersist(p_ops
, d
, s
, 0);
60 static force_inline
int
61 pmemops_xflush(const struct pmem_ops
*p_ops
, const void *d
, size_t s
,
64 return p_ops
->flush(p_ops
->base
, d
, s
, flags
);
67 static force_inline
void
68 pmemops_flush(const struct pmem_ops
*p_ops
, const void *d
, size_t s
)
70 (void) pmemops_xflush(p_ops
, d
, s
, 0);
73 static force_inline
void
74 pmemops_drain(const struct pmem_ops
*p_ops
)
76 p_ops
->drain(p_ops
->base
);
79 static force_inline
void *
80 pmemops_memcpy(const struct pmem_ops
*p_ops
, void *dest
,
81 const void *src
, size_t len
, unsigned flags
)
83 return p_ops
->memcpy(p_ops
->base
, dest
, src
, len
, flags
);
86 static force_inline
void *
87 pmemops_memmove(const struct pmem_ops
*p_ops
, void *dest
,
88 const void *src
, size_t len
, unsigned flags
)
90 return p_ops
->memmove(p_ops
->base
, dest
, src
, len
, flags
);
93 static force_inline
void *
94 pmemops_memset(const struct pmem_ops
*p_ops
, void *dest
, int c
,
95 size_t len
, unsigned flags
)
97 return p_ops
->memset(p_ops
->base
, dest
, c
, len
, flags
);