1 /*-
2 * Copyright (c) 1999, 2020 Oracle and/or its affiliates. All rights reserved.
3 *
4 * See the file LICENSE for license information.
5 *
6 * $Id$
7 */
8
9 #include "db_config.h"
10
11 #include "db_int.h"
12 #include "dbinc/db_page.h"
13 #include "dbinc/db_swap.h"
14 #include "dbinc/db_am.h"
15 #include "dbinc/qam.h"
16
17 /*
18 * __qam_mswap --
19 * Swap the bytes on the queue metadata page.
20 *
21 * PUBLIC: int __qam_mswap __P((ENV *, PAGE *));
22 */
23 int
__qam_mswap(env,pg)24 __qam_mswap(env, pg)
25 ENV *env;
26 PAGE *pg;
27 {
28 u_int8_t *p;
29
30 COMPQUIET(env, NULL);
31
32 __db_metaswap(pg);
33 p = (u_int8_t *)pg + sizeof(DBMETA);
34
35 SWAP32(p); /* first_recno */
36 SWAP32(p); /* cur_recno */
37 SWAP32(p); /* re_len */
38 SWAP32(p); /* re_pad */
39 SWAP32(p); /* rec_page */
40 SWAP32(p); /* page_ext */
41 p += 91 * sizeof(u_int32_t); /* unused */
42 SWAP32(p); /* crypto_magic */
43
44 return (0);
45 }
46
47 /*
48 * __qam_pgin_out --
49 * Convert host-specific page layout to/from the host-independent format
50 * stored on disk.
51 * We only need to fix up a few fields in the header
52 *
53 * PUBLIC: int __qam_pgin_out __P((ENV *, db_pgno_t, void *, DBT *));
54 */
55 int
__qam_pgin_out(env,pg,pp,cookie)56 __qam_pgin_out(env, pg, pp, cookie)
57 ENV *env;
58 db_pgno_t pg;
59 void *pp;
60 DBT *cookie;
61 {
62 DB_PGINFO *pginfo;
63 QPAGE *h;
64
65 COMPQUIET(pg, 0);
66 pginfo = (DB_PGINFO *)cookie->data;
67 if (!F_ISSET(pginfo, DB_AM_SWAP))
68 return (0);
69
70 h = pp;
71 if (h->type == P_QAMMETA)
72 return (__qam_mswap(env, pp));
73
74 M_32_SWAP(h->lsn.file);
75 M_32_SWAP(h->lsn.offset);
76 M_32_SWAP(h->pgno);
77
78 return (0);
79 }
80