qam_conv.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:1k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1999, 2000
  5.  * Sleepycat Software.  All rights reserved.
  6.  */
  7. #include "db_config.h"
  8. #ifndef lint
  9. static const char revid[] = "$Id: qam_conv.c,v 11.6 2000/11/16 23:40:57 ubell Exp $";
  10. #endif /* not lint */
  11. #ifndef NO_SYSTEM_INCLUDES
  12. #include <sys/types.h>
  13. #endif
  14. #include "db_int.h"
  15. #include "db_page.h"
  16. #include "qam.h"
  17. #include "db_swap.h"
  18. #include "db_am.h"
  19. /*
  20.  * __qam_mswap --
  21.  * Swap the bytes on the queue metadata page.
  22.  *
  23.  * PUBLIC: int __qam_mswap __P((PAGE *));
  24.  */
  25. int
  26. __qam_mswap(pg)
  27. PAGE *pg;
  28. {
  29. u_int8_t *p;
  30.  __db_metaswap(pg);
  31.  p = (u_int8_t *)pg + sizeof(DBMETA);
  32. SWAP32(p); /* first_recno */
  33. SWAP32(p); /* cur_recno */
  34. SWAP32(p); /* re_len */
  35. SWAP32(p); /* re_pad */
  36. SWAP32(p); /* rec_page */
  37. SWAP32(p); /* page_ext */
  38. return (0);
  39. }
  40. /*
  41.  * __qam_pgin_out --
  42.  * Convert host-specific page layout to/from the host-independent format
  43.  * stored on disk.
  44.  *  We only need to fix up a few fields in the header
  45.  *
  46.  * PUBLIC: int __qam_pgin_out __P((DB_ENV *, db_pgno_t, void *, DBT *));
  47.  */
  48. int
  49. __qam_pgin_out(dbenv, pg, pp, cookie)
  50. DB_ENV *dbenv;
  51. db_pgno_t pg;
  52. void *pp;
  53. DBT *cookie;
  54. {
  55. DB_PGINFO *pginfo;
  56. QPAGE *h;
  57. COMPQUIET(pg, 0);
  58. COMPQUIET(dbenv, NULL);
  59. pginfo = (DB_PGINFO *)cookie->data;
  60. if (!pginfo->needswap)
  61. return (0);
  62. h = pp;
  63. if (h->type == P_QAMMETA)
  64.     return (__qam_mswap(pp));
  65. M_32_SWAP(h->lsn.file);
  66. M_32_SWAP(h->lsn.offset);
  67. M_32_SWAP(h->pgno);
  68. return (0);
  69. }