xref: /spdk/lib/ftl/utils/ftl_df.h (revision 588dfe314bb83d86effdf67ec42837b11c2620bf)
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