xref: /spdk/lib/ftl/utils/ftl_df.h (revision 784b9d48746955f210926648a0131f84f58de76f)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (C) 2022 Intel Corporation.
3  *   All rights reserved.
4  */
5 
6 #ifndef FTL_DF_H
7 #define FTL_DF_H
8 
9 #include "spdk/stdinc.h"
10 
11 /* Durable format (df) object is an offset */
12 typedef uint64_t ftl_df_obj_id;
13 
14 #define FTL_DF_OBJ_ID_INVALID ((ftl_df_obj_id)-1)
15 
16 /**
17  * @brief Convert df object ptr to df object id
18  *
19  * @param base		allocation base address
20  * @param df_obj_ptr	df object ptr
21  *
22  * @return df object id
23  */
24 static inline ftl_df_obj_id
25 ftl_df_get_obj_id(void *base, void *df_obj_ptr)
26 {
27 	assert(base <= df_obj_ptr);
28 	return ((char *)df_obj_ptr - (char *)base);
29 }
30 
31 /**
32  * @brief Convert df object id to df object ptr
33  *
34  * @param base		allocation base address
35  * @param df_obj_id	df object id
36  *
37  * @return df object ptr
38  */
39 static inline void *
40 ftl_df_get_obj_ptr(void *base, ftl_df_obj_id df_obj_id)
41 {
42 	assert(df_obj_id != FTL_DF_OBJ_ID_INVALID);
43 	return ((char *)base + df_obj_id);
44 }
45 
46 #endif /* FTL_DF_H */
47