/********************************************************************** File-based utilities (c) 1995 Innobase Oy Created 12/13/1995 Heikki Tuuri ***********************************************************************/ #include "sync0rw.h" #include "buf0buf.h" /************************************************************************ Gets a pointer to a file address and latches the page. */ UNIV_INLINE byte* fut_get_ptr( /*========*/ /* out: pointer to a byte in a frame; the file page in the frame is bufferfixed and latched */ ulint space, /* in: space id */ fil_addr_t addr, /* in: file address */ ulint rw_latch, /* in: RW_S_LATCH, RW_X_LATCH */ mtr_t* mtr) /* in: mtr handle */ { buf_block_t* block; byte* ptr; ut_ad(addr.boffset < UNIV_PAGE_SIZE); ut_ad((rw_latch == RW_S_LATCH) || (rw_latch == RW_X_LATCH)); block = buf_page_get(space, addr.page, rw_latch, mtr); ptr = buf_block_get_frame(block) + addr.boffset; #ifdef UNIV_SYNC_DEBUG buf_block_dbg_add_level(block, SYNC_NO_ORDER_CHECK); #endif /* UNIV_SYNC_DEBUG */ return(ptr); }