PageRenderTime 34ms CodeModel.GetById 18ms app.highlight 11ms RepoModel.GetById 1ms app.codeStats 1ms

/External/Mysql-5.0/include/thr_alarm.h

http://awoe.googlecode.com/
C++ Header | 110 lines | 73 code | 21 blank | 16 comment | 2 complexity | 072e32d07690a2a5552006cbae2d08be MD5 | raw file
  1/* Copyright (C) 2000 MySQL AB
  2
  3   This program is free software; you can redistribute it and/or modify
  4   it under the terms of the GNU General Public License as published by
  5   the Free Software Foundation; version 2 of the License.
  6
  7   This program is distributed in the hope that it will be useful,
  8   but WITHOUT ANY WARRANTY; without even the implied warranty of
  9   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 10   GNU General Public License for more details.
 11
 12   You should have received a copy of the GNU General Public License
 13   along with this program; if not, write to the Free Software
 14   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
 15
 16/* Prototypes when using thr_alarm library functions */
 17
 18#ifndef _thr_alarm_h
 19#define _thr_alarm_h
 20#ifdef	__cplusplus
 21extern "C" {
 22#endif
 23
 24#ifndef USE_ALARM_THREAD
 25#define USE_ONE_SIGNAL_HAND		/* One must call process_alarm */
 26#endif
 27#ifdef HAVE_rts_threads
 28#undef USE_ONE_SIGNAL_HAND
 29#define USE_ALARM_THREAD
 30#define THR_SERVER_ALARM SIGUSR1
 31#else
 32#define THR_SERVER_ALARM SIGALRM
 33#endif
 34
 35typedef struct st_alarm_info
 36{
 37  ulong next_alarm_time;
 38  uint active_alarms;
 39  uint max_used_alarms;
 40} ALARM_INFO;
 41
 42void thr_alarm_info(ALARM_INFO *info);
 43
 44#if defined(DONT_USE_THR_ALARM) || !defined(THREAD)
 45
 46#define USE_ALARM_THREAD
 47#undef USE_ONE_SIGNAL_HAND
 48
 49typedef my_bool thr_alarm_t;
 50typedef my_bool ALARM;
 51
 52#define thr_alarm_init(A) (*(A))=0
 53#define thr_alarm_in_use(A) (*(A) != 0)
 54#define thr_end_alarm(A)
 55#define thr_alarm(A,B,C) ((*(A)=1)-1)
 56/* The following should maybe be (*(A)) */
 57#define thr_got_alarm(A) 0
 58#define init_thr_alarm(A)
 59#define thr_alarm_kill(A)
 60#define resize_thr_alarm(N)
 61#define end_thr_alarm(A)
 62
 63#else
 64#if defined(__WIN__)
 65typedef struct st_thr_alarm_entry
 66{
 67  rf_SetTimer crono;
 68} thr_alarm_entry;
 69
 70#else /* System with posix threads */
 71
 72typedef int thr_alarm_entry;
 73
 74#define thr_got_alarm(thr_alarm) (**(thr_alarm))
 75
 76#endif /* __WIN__ */
 77
 78typedef thr_alarm_entry* thr_alarm_t;
 79
 80typedef struct st_alarm {
 81  ulong expire_time;
 82  thr_alarm_entry alarmed;		/* set when alarm is due */
 83  pthread_t thread;
 84  my_thread_id thread_id;
 85  my_bool malloced;
 86} ALARM;
 87
 88extern uint thr_client_alarm;
 89extern pthread_t alarm_thread;
 90
 91#define thr_alarm_init(A) (*(A))=0
 92#define thr_alarm_in_use(A) (*(A)!= 0)
 93void init_thr_alarm(uint max_alarm);
 94void resize_thr_alarm(uint max_alarms);
 95my_bool thr_alarm(thr_alarm_t *alarmed, uint sec, ALARM *buff);
 96void thr_alarm_kill(my_thread_id thread_id);
 97void thr_end_alarm(thr_alarm_t *alarmed);
 98void end_thr_alarm(my_bool free_structures);
 99sig_handler process_alarm(int);
100#ifndef thr_got_alarm
101my_bool thr_got_alarm(thr_alarm_t *alrm);
102#endif
103
104
105#endif /* DONT_USE_THR_ALARM */
106
107#ifdef	__cplusplus
108}
109#endif /* __cplusplus */
110#endif /* _thr_alarm_h */