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 (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22/* 23 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27#include <stdio.h> 28#include <stdlib.h> 29#ifdef DEBUG 30#include <time.h> 31#endif 32 33#include "isns_server.h" 34#include "isns_cache.h" 35#include "isns_obj.h" 36#include "isns_log.h" 37 38#ifndef TARGET_DATA_STORE 39#define TARGET_DATA_STORE xml 40#endif 41 42#define TARGET_src(TARGET) XTARGET_src(TARGET) 43#define XTARGET_src(TARGET) XXTARGET_src(TARGET/data.c) 44#define XXTARGET_src(TARGET) #TARGET 45 46#include TARGET_src(TARGET_DATA_STORE) 47 48#define TARGET_func(func) XTARGET_func(TARGET_DATA_STORE, func) 49#define XTARGET_func(TARGET, func) XXTARGET_func(TARGET, func) 50#define XXTARGET_func(TARGET, func) TARGET ## func 51 52#ifdef DEBUG 53static time_t total_time = 0; 54static clock_t total_clock = 0; 55extern int verbose_tc; 56#endif 57 58int 59target_init_data( 60) 61{ 62 return (TARGET_func(_init_data)()); 63} 64 65int 66target_load_obj( 67 void **p, 68 isns_obj_t **objp, 69 uchar_t *phase 70) 71{ 72 return (TARGET_func(_load_obj)(p, objp, phase)); 73} 74 75int 76target_add_obj( 77 const isns_obj_t *obj 78) 79{ 80 int status; 81#ifdef DEBUG 82 time_t t; 83 clock_t c; 84 if (verbose_tc != 0) { 85 t = time(NULL); 86 c = clock(); 87 } 88#endif 89 status = TARGET_func(_add_obj)(obj); 90#ifdef DEBUG 91 if (verbose_tc != 0) { 92 t = time(NULL) - t; 93 c = clock() - c; 94 total_time += t; 95 total_clock += c; 96 printf("time %d clock %.4lf -adding one object\n", 97 t, c / (double)CLOCKS_PER_SEC); 98 } 99#endif 100 return (status); 101} 102 103int 104target_modify_obj( 105 const isns_obj_t *obj 106) 107{ 108 int status; 109#ifdef DEBUG 110 time_t t; 111 clock_t c; 112 if (verbose_tc != 0) { 113 t = time(NULL); 114 c = clock(); 115 } 116#endif 117 status = TARGET_func(_modify_obj)(obj); 118#ifdef DEBUG 119 if (verbose_tc != 0) { 120 t = time(NULL) - t; 121 c = clock() - c; 122 total_time += t; 123 total_clock += c; 124 printf("time %d clock %.4lf -updating one object\n", 125 t, c / (double)CLOCKS_PER_SEC); 126 } 127#endif 128 return (status); 129} 130 131int 132target_delete_obj( 133 const isns_obj_t *obj 134) 135{ 136 int status; 137#ifdef DEBUG 138 time_t t; 139 clock_t c; 140 if (verbose_tc != 0) { 141 t = time(NULL); 142 c = clock(); 143 } 144#endif 145 status = TARGET_func(_delete_obj)(obj); 146#ifdef DEBUG 147 if (verbose_tc != 0) { 148 t = time(NULL) - t; 149 c = clock() - c; 150 total_time += t; 151 total_clock += c; 152 printf("time %d clock %.4lf -deleting one object\n", 153 t, c / (double)CLOCKS_PER_SEC); 154 } 155#endif 156 return (status); 157} 158 159int 160target_delete_assoc( 161 const isns_obj_t *obj 162) 163{ 164 int status; 165#ifdef DEBUG 166 time_t t; 167 clock_t c; 168 if (verbose_tc != 0) { 169 t = time(NULL); 170 c = clock(); 171 } 172#endif 173 status = TARGET_func(_delete_assoc)(obj); 174#ifdef DEBUG 175 if (verbose_tc != 0) { 176 t = time(NULL) - t; 177 c = clock() - c; 178 total_time += t; 179 total_clock += c; 180 printf("time %d clock %.4lf -deleting one membership\n", 181 t, c / (double)CLOCKS_PER_SEC); 182 } 183#endif 184 return (status); 185} 186 187int 188target_update_commit( 189) 190{ 191 int status; 192#ifdef DEBUG 193 time_t t; 194 clock_t c; 195 if (verbose_tc != 0) { 196 t = time(NULL); 197 c = clock(); 198 } 199#endif 200 status = TARGET_func(_update_commit)(); 201#ifdef DEBUG 202 if (verbose_tc != 0) { 203 t = time(NULL) - t; 204 c = clock() - c; 205 total_time += t; 206 total_clock += c; 207 printf("time %d clock %.4lf -flushing the data\n", 208 t, c / (double)CLOCKS_PER_SEC); 209 printf("time %d clock %.4lf -total update\n", 210 total_time, total_clock / (double)CLOCKS_PER_SEC); 211 total_time = 0; 212 total_clock = 0; 213 } 214#endif 215 return (status); 216} 217 218int 219target_update_retreat( 220) 221{ 222 int status; 223#ifdef DEBUG 224 time_t t; 225 clock_t c; 226 if (verbose_tc != 0) { 227 t = time(NULL); 228 c = clock(); 229 } 230#endif 231 status = TARGET_func(_update_retreat)(); 232#ifdef DEBUG 233 if (verbose_tc != 0) { 234 t = time(NULL) - t; 235 c = clock() - c; 236 total_time += t; 237 total_clock += c; 238 printf("time %d clock %.4lf -flushing the data\n", 239 t, c / (double)CLOCKS_PER_SEC); 240 printf("time %d clock %.4lf -total update\n", 241 total_time, total_clock / (double)CLOCKS_PER_SEC); 242 total_time = 0; 243 total_clock = 0; 244 } 245#endif 246 return (status); 247} 248