/* * memtoy.h -- local header template for memory toy/tool */ /* * Copyright (c) 2005 Hewlett-Packard, Inc * All rights reserved. */ /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _MEMTOY_H #define _MEMTOY_H #include <sys/types.h> #include <sys/time.h> #include <setjmp.h> #include <signal.h> #include "segment.h" #include "version.h" #define BOGUS_SIZE ((size_t)-1) typedef enum {false=0, true} bool; /* * program global data */ typedef struct global_context { char *program_name; /* argv[0] - for reference in messages */ unsigned long options; /* command line options, ... */ siginfo_t *siginfo; /* signal info, if signalled != 0 */ char *signame; /* name of signal, if any */ sigjmp_buf sigjmp_env; /* embedded setjmp buffer */ bool sigjmp; /* sigsetjmp is "armed" */ size_t pagesize; /* system page size for mmap, ... */ int numa_max_node; /* if >0, numa supported */ segment_t **seglist; /* list of known segments */ segment_t *seg_avail; /* an available segment */ char *cmd_name; /* currently executing command */ #ifdef _DEBUG unsigned long debug; /* debug enablement flags */ #endif } glctx_t; extern glctx_t glctx; #define OPTION_VERBOSE 0x0001 #define OPTION_INTERACTIVE 0x0100 /* * Danger, Will Robinson!! -- hardcoded variable 'gcp' */ #define set_option(OPT) gcp->options |= (OPTION_##OPT) #define clear_option(OPT) gcp->options &= ~(OPION_##OPTT) #define is_option(OPT) ((gcp->options & OPTION_##OPT) != 0) #define show_option(opt, off, on) ( !is_option(opt) ? #off : #on ) #define signalled(GCP) (GCP->siginfo != NULL) /* * different between start and end time in microseconds */ static unsigned long tv_diff_usec(struct timeval *stp, struct timeval *etp) { return ((1000000L * (etp)->tv_sec + (etp)->tv_usec) - (1000000L * (stp)->tv_sec + (stp)->tv_usec)); } /* * memtoy.c */ extern void die(int, char*, ... ); extern void vprint(char*, ...); extern void reset_signal(void); extern void wait_for_signal(const char*); /* * commands.c */ extern void process_commands(void); extern void wait_for_signal(const char *); extern void touch_memory(bool, unsigned long*, size_t); #endif