1 /* 2 * memtoy.h -- local header template for memory toy/tool 3 */ 4 /* 5 * Copyright (c) 2005 Hewlett-Packard, Inc 6 * All rights reserved. 7 */ 8 9 /* 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program; if not, write to the Free Software 22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23 */ 24 #ifndef _MEMTOY_H 25 #define _MEMTOY_H 26 #include <sys/types.h> 27 #include <sys/time.h> 28 29 #include <setjmp.h> 30 #include <signal.h> 31 32 #include "segment.h" 33 #include "version.h" 34 35 #define BOGUS_SIZE ((size_t)-1) 36 37 typedef enum {false=0, true} bool; 38 39 /* 40 * program global data 41 */ 42 typedef struct global_context { 43 char *program_name; /* argv[0] - for reference in messages */ 44 45 unsigned long options; /* command line options, ... */ 46 47 siginfo_t *siginfo; /* signal info, if signalled != 0 */ 48 char *signame; /* name of signal, if any */ 49 sigjmp_buf sigjmp_env; /* embedded setjmp buffer */ 50 bool sigjmp; /* sigsetjmp is "armed" */ 51 52 size_t pagesize; /* system page size for mmap, ... */ 53 54 int numa_max_node; /* if >0, numa supported */ 55 56 segment_t **seglist; /* list of known segments */ 57 segment_t *seg_avail; /* an available segment */ 58 59 char *cmd_name; /* currently executing command */ 60 61 #ifdef _DEBUG 62 unsigned long debug; /* debug enablement flags */ 63 #endif 64 } glctx_t; 65 66 extern glctx_t glctx; 67 68 #define OPTION_VERBOSE 0x0001 69 #define OPTION_INTERACTIVE 0x0100 70 71 /* 72 * Danger, Will Robinson!! -- hardcoded variable 'gcp' 73 */ 74 #define set_option(OPT) gcp->options |= (OPTION_##OPT) 75 #define clear_option(OPT) gcp->options &= ~(OPION_##OPTT) 76 #define is_option(OPT) ((gcp->options & OPTION_##OPT) != 0) 77 78 #define show_option(opt, off, on) ( !is_option(opt) ? #off : #on ) 79 80 #define signalled(GCP) (GCP->siginfo != NULL) 81 82 /* 83 * different between start and end time in microseconds 84 */ 85 static unsigned long tv_diff_usec(struct timeval *stp, struct timeval *etp) 86 { 87 return ((1000000L * (etp)->tv_sec + (etp)->tv_usec) - 88 (1000000L * (stp)->tv_sec + (stp)->tv_usec)); 89 } 90 91 92 /* 93 * memtoy.c 94 */ 95 extern void die(int, char*, ... ); 96 extern void vprint(char*, ...); 97 extern void reset_signal(void); 98 extern void wait_for_signal(const char*); 99 100 /* 101 * commands.c 102 */ 103 extern void process_commands(void); 104 extern void wait_for_signal(const char *); 105 extern void touch_memory(bool, unsigned long*, size_t); 106 107 #endif 108