Line data Source code
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 39 : ftl_df_get_obj_id(void *base, void *df_obj_ptr) 26 : { 27 39 : assert(base <= df_obj_ptr); 28 39 : 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 121 : ftl_df_get_obj_ptr(void *base, ftl_df_obj_id df_obj_id) 41 : { 42 121 : assert(df_obj_id != FTL_DF_OBJ_ID_INVALID); 43 121 : return (void *)((uintptr_t)base + df_obj_id); 44 : } 45 : 46 : #endif /* FTL_DF_H */