| /*************************************************************************/ |
| /* */ |
| /* Copyright (c) 1994 Stanford University */ |
| /* */ |
| /* All rights reserved. */ |
| /* */ |
| /* Permission is given to use, copy, and modify this software for any */ |
| /* non-commercial purpose as long as this copyright notice is not */ |
| /* removed. All other uses, including redistribution in whole or in */ |
| /* part, are forbidden without prior written permission. */ |
| /* */ |
| /* This software is provided with absolutely no warranty and no */ |
| /* support. */ |
| /* */ |
| /*************************************************************************/ |
| |
| #ifndef _Memory_H |
| #define _Memory_H 1 |
| |
| #include "defs.h" |
| #include "particle.h" |
| #include "box.h" |
| |
| #define MAX_LOCKS 2048 |
| |
| EXTERN_ENV |
| |
| typedef struct _G_Mem g_mem; |
| |
| struct _G_Mem |
| { |
| LOCKDEC(io_lock) |
| LOCKDEC(mal_lock) |
| LOCKDEC(single_lock) |
| LOCKDEC(count_lock) |
| long count; |
| ALOCKDEC(lock_array, MAX_LOCKS) |
| BARDEC(synch) |
| volatile long *i_array; |
| volatile double *d_array; |
| real f_array[MAX_PROCS][NUM_DIM_POW_2]; |
| real max_x; |
| real min_x; |
| real max_y; |
| real min_y; |
| long id; |
| }; |
| extern g_mem *G_Memory; |
| |
| typedef struct _Local_Memory local_memory; |
| struct _Local_Memory { |
| long pad_begin[PAD_SIZE]; |
| |
| box *B_Heap; |
| long Index_B_Heap; |
| long Max_B_Heap; |
| |
| particle **Particles; |
| long Num_Particles; |
| long Max_Particles; |
| |
| box *Childless_Partition; |
| box *Parent_Partition[MAX_LEVEL]; |
| long Max_Parent_Level; |
| |
| box *Local_Grid; |
| real Local_X_Max; |
| real Local_X_Min; |
| real Local_Y_Max; |
| real Local_Y_Min; |
| |
| long Total_Work; |
| long Min_Work; |
| long Max_Work; |
| |
| long Time_Step; |
| double Time; |
| unsigned long init_done_times; |
| time_info Timing[MAX_TIME_STEPS]; |
| |
| long pad_end[PAD_SIZE]; |
| }; |
| extern local_memory Local[MAX_PROCS]; |
| |
| extern void InitGlobalMemory(void); |
| |
| #endif /* _Memory_H */ |