Commit 68980641 authored by Tor Didriksen's avatar Tor Didriksen

merge 5.5.28-release => 5.5

parents fefc29a6 a619bfad
......@@ -62,24 +62,8 @@ void thd_set_mysys_var(THD *thd, st_my_thread_var *mysys_var);
ulong thd_get_net_wait_timeout(THD *thd);
my_socket thd_get_fd(THD *thd);
/* Interface class for global thread list iteration */
class Thread_iterator
{
public:
Thread_iterator() : m_iterator(threads) {}
THD* next()
{
THD* tmp = m_iterator++;
return tmp;
}
private:
/*
Don't allow copying of this class.
*/
Thread_iterator(const Thread_iterator&);
void operator=(const Thread_iterator&);
I_List_iterator<THD> m_iterator;
};
THD *first_global_thread();
THD *next_global_thread(THD *thd);
/* Print to the MySQL error log */
void sql_print_error(const char *format, ...);
......
......@@ -601,6 +601,21 @@ I_List<THD> threads;
Rpl_filter* rpl_filter;
Rpl_filter* binlog_filter;
THD *first_global_thread()
{
if (threads.is_empty())
return NULL;
return threads.head();
}
THD *next_global_thread(THD *thd)
{
if (threads.is_last(thd))
return NULL;
struct ilink *next= thd->next;
return static_cast<THD*>(next);
}
struct system_variables global_system_variables;
struct system_variables max_system_variables;
struct system_status_var global_status_var;
......
......@@ -585,6 +585,9 @@ class base_ilist
inline void empty() { first= &last; last.prev= &first; }
base_ilist() { empty(); }
inline bool is_empty() { return first == &last; }
// Returns true if p is the last "real" object in the list,
// i.e. p->next points to the sentinel.
inline bool is_last(ilink *p) { return p->next == NULL || p->next == &last; }
inline void append(ilink *a)
{
first->prev= &a->next;
......@@ -660,6 +663,7 @@ class I_List :private base_ilist
{
public:
I_List() :base_ilist() {}
inline bool is_last(T *p) { return base_ilist::is_last(p); }
inline void empty() { base_ilist::empty(); }
inline bool is_empty() { return base_ilist::is_empty(); }
inline void append(T* a) { base_ilist::append(a); }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment