1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * db_vers_c.x 24 * 25 * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 26 * Use is subject to license terms. 27 */ 28 29 %#pragma ident "%Z%%M% %I% %E% SMI" 30 31 #if RPC_HDR 32 %#ifndef _DB_VERS_H 33 %#define _DB_VERS_H 34 #endif /* RPC_HDR */ 35 36 %/* 'vers' is the version identifier. */ 37 38 % 39 %#include "nisdb_rw.h" 40 % 41 #if RPC_HDR || RPC_XDR 42 #ifdef USINGC 43 struct vers { 44 u_int vers_high; 45 u_int vers_low; 46 u_int time_sec; 47 u_int time_usec; 48 __nisdb_rwlock_t vers_rwlock; 49 }; 50 #endif /* USINGC */ 51 #endif /* RPC_HDR */ 52 53 #ifndef USINGC 54 #ifdef RPC_HDR 55 %class vers { 56 % unsigned int vers_high; /* major version number, tracks checkpoints */ 57 % unsigned int vers_low; /* minor version number, tracks updates. */ 58 % unsigned int time_sec; /* time stamp */ 59 % unsigned int time_usec; 60 % STRUCTRWLOCK(vers); 61 % public: 62 %/* No argument constructor. All entries initialized to zero. */ 63 % vers() { 64 % vers_high = vers_low = time_sec = time_usec = 0; 65 % INITRW(vers); 66 % } 67 % 68 %/* Constructor that makes copy of 'other'. */ 69 % vers( vers *other ); 70 % 71 %/* Constructor: create version with specified version numbers */ 72 % vers( unsigned int high, unsigned int low) { 73 % vers_high = high; vers_low = low; time_sec = time_usec = 0; 74 % INITRW(vers); 75 % } 76 % 77 %/* Creates new 'vers' with next higher minor version. 78 % If minor version exceeds MAXLOW, bump up major version instead. 79 % Set timestamp to that of the current time. */ 80 % vers* nextminor(); 81 % 82 %/* Creates new 'vers' with next higher major version. 83 % Set timestamp to that of the current time. */ 84 % vers* nextmajor(); 85 % 86 %/* Set this 'vers' to hold values found in 'others'. */ 87 % void assign( vers *other ); 88 % 89 %/* Predicate indicating whether this vers is earlier than 'other' in 90 % terms of version numbers. */ 91 % bool_t earlier_than( vers *other ); 92 % 93 %/* Print the value of this 'vers' to specified file. */ 94 % void print( FILE *file ); 95 % 96 %/* Zero out this vers. */ 97 % void zero(); 98 % 99 %/* Predicate indicating whether this vers is equal to 'other'. */ 100 % bool_t equal( vers *other); 101 % 102 %/* Locking methods */ 103 % 104 % int acqexcl(void) { 105 % return (WLOCK(vers)); 106 % } 107 % 108 % int relexcl(void) { 109 % return (WULOCK(vers)); 110 % } 111 % 112 % int acqnonexcl(void) { 113 % return (RLOCK(vers)); 114 % } 115 % 116 % int relnonexcl(void) { 117 % return (RULOCK(vers)); 118 % } 119 %}; 120 #endif /* RPC_HDR */ 121 #endif /* USINGC */ 122 123 #if RPC_HDR 124 %#endif /* VERS_H */ 125 #endif /* RPC_HDR */