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 (void *)((uintptr_t)base + df_obj_id); 44 } 45 46 #endif /* FTL_DF_H */ 47