108 lines
2.9 KiB
C
108 lines
2.9 KiB
C
/*
|
|
* 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
|