bufdefs.h
上传用户:dgyhgb
上传日期:2007-01-07
资源大小:676k
文件大小:4k
源码类别:

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  *  bufdefs.c  - This file contains structures describing objects of the
  3.  *               pool of buffers
  4.  *               Kernel of GNU SQL-server. Buffer
  5.  *
  6.  *  This file is a part of GNU SQL Server
  7.  *
  8.  *  Copyright (c) 1996, 1997, Free Software Foundation, Inc
  9.  *  Developed at the Institute of System Programming
  10.  *  This file is written by  Vera Ponomarenko
  11.  *
  12.  *  This program is free software; you can redistribute it and/or modify
  13.  *  it under the terms of the GNU General Public License as published by
  14.  *  the Free Software Foundation; either version 2 of the License, or
  15.  *  (at your option) any later version.
  16.  *
  17.  *  This program is distributed in the hope that it will be useful,
  18.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20.  *  GNU General Public License for more details.
  21.  *
  22.  *  You should have received a copy of the GNU General Public License
  23.  *  along with this program; if not, write to the Free Software
  24.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  25.  *
  26.  *  Contacts:   gss@ispras.ru
  27.  *
  28.  */
  29. #ifndef __bufdefs_h__
  30. #define __bufdefs_h__
  31. /* $Id: bufdefs.h,v 1.245 1997/03/31 03:46:38 kml Exp $ */
  32. /*****************************************************************************
  33.                                   TYPES
  34.                               RELATED STRUCTURES
  35. ***************************** page descriptor *******************************/
  36. struct PAGE
  37. {
  38.   struct PAGE *p_next;
  39.   struct PAGE *p_prev; /* ring of pages with the same page address */
  40.   u2_t p_seg;
  41.   u2_t p_page; /* full page number */
  42.   u2_t p_status; /* status of page: 0 or number of weak locks */
  43.   u2_t p_ltype; /* lock type */
  44.   struct WAIT *p_queue; /* last in queue */
  45.   struct BUFF *p_buf;
  46. };
  47. /****************************** waiting lock ********************************/
  48. struct WAIT
  49. {
  50.   struct WAIT *w_next; /* next in queue */
  51.   i4_t w_conn; /* connection to user */
  52.   u2_t w_type; /* type of lock */
  53.   u2_t w_tact; /* tact when lock came in */
  54.   u2_t w_prget; /* get page or not */
  55. };
  56. /*************************** buffer descriptor ******************************/
  57. struct des_seg
  58. { /* segment identifier */
  59.   i4_t keyseg;
  60.   i4_t idseg;
  61. };
  62. struct BUFF
  63. {
  64.   struct BUFF *b_next;
  65.   struct BUFF *b_prev; /* priority ring */
  66.   i4_t b_status; /* status and number of users */
  67.   struct PAGE *b_page; /* page descriptor */
  68.   struct des_seg *b_seg; /* segment identifier */
  69.   i4_t b_micro; /* reference to microlog */
  70.   char b_prmod;
  71. };
  72. /*****************************************************************************
  73.                                  CONSTANTS
  74. */
  75. #define NO 0
  76. #define YES 1 /* logical */
  77. #define BUF_MOD  1 /* modifyed buffer */
  78. #define BUF_NMOD 0 /* nonmodifyed buffer */
  79. #define GOOD 0
  80. #define BAD 1 /* answers */
  81. #define NO_SEGS 0 /* absense of segments */
  82. #define NULL_CONN 0 /* absense of connection */
  83. #define NULL_MICRO 0 /* absense of reference to microlog */
  84. #if 0  /* has already declared in inpop.h */
  85.  #define BACKUP -1 /* backup indicator */
  86. #endif
  87. #define HASHSIZE 256
  88. #define PRIORITIES 3 /* there are 3 priorities of buffers */
  89. #define EMP 0
  90. #define FREE 1
  91. #define LOCKED 2
  92. #define USED 3 /* priorities or types of buffers */
  93. /*****************************************************************************
  94.                                    MACROS
  95. */
  96. #define WORD_BD 1
  97. #define wd_bd(x) ((x+wodr_bd-1)&~(word_bd-1))
  98. /***************************** the end **************************************/
  99. #endif