1
/*****************************************************************************
3
Copyright (C) 1995, 2009, Innobase Oy. All Rights Reserved.
5
This program is free software; you can redistribute it and/or modify it under
6
the terms of the GNU General Public License as published by the Free Software
7
Foundation; version 2 of the License.
9
This program is distributed in the hope that it will be useful, but WITHOUT
10
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
13
You should have received a copy of the GNU General Public License along with
14
this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
15
St, Fifth Floor, Boston, MA 02110-1301 USA
17
*****************************************************************************/
19
/******************************************************************//**
20
@file include/fut0lst.ic
1
/**********************************************************************
21
2
File-based list utilities
23
6
Created 11/28/1995 Heikki Tuuri
24
7
***********************************************************************/
43
26
last element of the list; undefined
46
/********************************************************************//**
29
/************************************************************************
47
30
Writes a file address. */
52
fil_faddr_t* faddr, /*!< in: pointer to file faddress */
53
fil_addr_t addr, /*!< in: file address */
54
mtr_t* mtr) /*!< in: mini-transaction handle */
35
fil_faddr_t* faddr, /* in: pointer to file faddress */
36
fil_addr_t addr, /* in: file address */
37
mtr_t* mtr) /* in: mini-transaction handle */
56
39
ut_ad(faddr && mtr);
57
40
ut_ad(mtr_memo_contains_page(mtr, faddr, MTR_MEMO_PAGE_X_FIX));
88
/********************************************************************//**
71
/************************************************************************
89
72
Initializes a list base node. */
94
flst_base_node_t* base, /*!< in: pointer to base node */
95
mtr_t* mtr) /*!< in: mini-transaction handle */
77
flst_base_node_t* base, /* in: pointer to base node */
78
mtr_t* mtr) /* in: mini-transaction handle */
97
80
ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
101
84
flst_write_addr(base + FLST_LAST, fil_addr_null, mtr);
104
/********************************************************************//**
87
/************************************************************************
111
const flst_base_node_t* base, /*!< in: pointer to base node */
112
mtr_t* mtr) /*!< in: mini-transaction handle */
94
const flst_base_node_t* base, /* in: pointer to base node */
95
mtr_t* mtr) /* in: mini-transaction handle */
114
97
return(mtr_read_ulint(base + FLST_LEN, MLOG_4BYTES, mtr));
117
/********************************************************************//**
118
Gets list first node address.
119
@return file address */
100
/************************************************************************
101
Gets list first node address. */
124
const flst_base_node_t* base, /*!< in: pointer to base node */
125
mtr_t* mtr) /*!< in: mini-transaction handle */
106
/* out: file address */
107
const flst_base_node_t* base, /* in: pointer to base node */
108
mtr_t* mtr) /* in: mini-transaction handle */
127
110
return(flst_read_addr(base + FLST_FIRST, mtr));
130
/********************************************************************//**
131
Gets list last node address.
132
@return file address */
113
/************************************************************************
114
Gets list last node address. */
137
const flst_base_node_t* base, /*!< in: pointer to base node */
138
mtr_t* mtr) /*!< in: mini-transaction handle */
119
/* out: file address */
120
const flst_base_node_t* base, /* in: pointer to base node */
121
mtr_t* mtr) /* in: mini-transaction handle */
140
123
return(flst_read_addr(base + FLST_LAST, mtr));
143
/********************************************************************//**
144
Gets list next node address.
145
@return file address */
126
/************************************************************************
127
Gets list next node address. */
148
130
flst_get_next_addr(
149
131
/*===============*/
150
const flst_node_t* node, /*!< in: pointer to node */
151
mtr_t* mtr) /*!< in: mini-transaction handle */
132
/* out: file address */
133
const flst_node_t* node, /* in: pointer to node */
134
mtr_t* mtr) /* in: mini-transaction handle */
153
136
return(flst_read_addr(node + FLST_NEXT, mtr));
156
/********************************************************************//**
157
Gets list prev node address.
158
@return file address */
139
/************************************************************************
140
Gets list prev node address. */
161
143
flst_get_prev_addr(
162
144
/*===============*/
163
const flst_node_t* node, /*!< in: pointer to node */
164
mtr_t* mtr) /*!< in: mini-transaction handle */
145
/* out: file address */
146
const flst_node_t* node, /* in: pointer to node */
147
mtr_t* mtr) /* in: mini-transaction handle */
166
149
return(flst_read_addr(node + FLST_PREV, mtr));