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

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  *  strml.h -  Structures of Joutnals
  3.  *             Kernel of GNU SQL-server
  4.  *                
  5.  *  This file is a part of GNU SQL Server
  6.  *
  7.  *  Copyright (c) 1996, 1997, Free Software Foundation, Inc
  8.  *  Developed at the Institute of System Programming
  9.  *  This file is written by Vera Ponomarenko
  10.  * 
  11.  *  This program is free software; you can redistribute it and/or modify
  12.  *  it under the terms of the GNU General Public License as published by
  13.  *  the Free Software Foundation; either version 2 of the License, or
  14.  *  (at your option) any later version.
  15.  *
  16.  *  This program is distributed in the hope that it will be useful,
  17.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  *  GNU General Public License for more details.
  20.  *
  21.  *  You should have received a copy of the GNU General Public License
  22.  *  along with this program; if not, write to the Free Software
  23.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  24.  *
  25.  *  Contacts: gss@ispras.ru
  26.  *
  27.  */
  28. /* $Id: strml.h,v 1.245 1997/03/31 03:46:38 kml Exp $ */
  29. #ifndef __STRML_H__
  30. #define __STRML_H__
  31. #include "setup_os.h"
  32. #include <sys/types.h>
  33. #include <signal.h>
  34. #if HAVE_UNISTD_H
  35. #include <unistd.h>
  36. #endif
  37. #if TIME_WITH_SYS_TIME
  38. # include <sys/time.h>
  39. # include <time.h>
  40. #else
  41. # if HAVE_SYS_TIME_H
  42. #  include <sys/time.h>
  43. # else
  44. #  include <time.h>
  45. # endif
  46. #endif
  47. #define RTPAGE  7           /* page-top       size (in bytes)*/
  48. #define RTBLK   2           /* jour-block-top size (in bytes)*/
  49. #define RTJOUR  5           /* MJ-journal-top size (in bytes)*/
  50. #define RPAGE       (BD_PAGESIZE*2)
  51. #define SIGN_CONT   1
  52. #define SIGN_NOCONT 0
  53. struct ADBL {
  54.     u2_t npage;
  55.     u2_t cm;
  56. };
  57. struct TOPJOUR {
  58.     struct ADBL AKLJF;
  59.     char pxr;
  60. };
  61. struct ADREC {
  62.     u2_t razm;
  63.     char block [RPAGE];
  64. };
  65. struct TOPPAGE {
  66.     i4_t  version_number;
  67.     u2_t lastb_off;
  68.     char  sign_cont; 
  69. };
  70. #define ADM_SEND(tp, len, err_txt)  {
  71.   sbuf.mtype = tp;                        
  72.   if (msgsnd (msqida, (MSGBUFP)&sbuf, len, 0) < 0)  
  73.     { perror (err_txt); exit (1);  }           
  74.   kill(parent, SIGUSR1);
  75. }
  76.                                
  77. #define ANSW_WAIT 10000 /* maximum of time for waiting answer */
  78. #define DEFAULT_ACCESS_RIGHTS 0660
  79. #ifndef EXIT
  80. #define EXIT exit (1)
  81. #endif
  82. #define MSG_INIT(id, key, str)              
  83.  {                                          
  84.   time_t tm = time (NULL);                  
  85.   while (1)                                 
  86.     {                                       
  87.       if ((id = msgget (key, DEFAULT_ACCESS_RIGHTS)) >= 0)   
  88. break;                              
  89.       if (tm + ANSW_WAIT < time (NULL))     
  90. {                                   
  91.   perror (str);                     
  92.   EXIT;                             
  93. }                                   
  94.       sleep (1);                            
  95.     }                                       
  96.  }
  97. #endif