/*
* Copyright (c) 2001
- * Politecnico di Torino. All rights reserved.
+ * Politecnico di Torino. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that: (1) source code distributions
#endif
/* error codes */
-#define TME_ERROR 0
-#define TME_SUCCESS 1
-#define TME_TRUE 2
-#define TME_FALSE 3
+#define TME_ERROR 0
+#define TME_SUCCESS 1
+#define TME_TRUE 2
+#define TME_FALSE 3
/* some constants */
-#define DEFAULT_MEM_EX_SIZE 65536
-#define MAX_TME_DATA_BLOCKS 4
-#define TME_NONE_ACTIVE 0xffffffff
-#define DELTA_READ 2 /* secs */
-
-#define TME_LUT_ENTRIES 0x00000000
-#define TME_MAX_FILL_STATE 0x00000001 /*potrebbe servire per un thread a passive level!?!?! */
-#define TME_REHASHING_VALUE 0x00000002
-#define TME_KEY_LEN 0x00000003
-#define TME_SHARED_MEMORY_BLOCKS 0x00000004
-#define TME_FILLED_ENTRIES 0x00000005
-#define TME_BLOCK_SIZE 0x00000006
-#define TME_EXTRA_SEGMENT_SIZE 0x00000007
-#define TME_LOOKUP_CODE 0x00000008
-#define TME_OUT_LUT_EXEC 0x00000009
-#define TME_FILLED_BLOCKS 0x0000000a
-#define TME_DEFAULT_EXEC 0x0000000b
-#define TME_LUT_BASE_ADDRESS 0x0000000c
-#define TME_SHARED_MEMORY_BASE_ADDRESS 0x0000000d
-#define TME_EXTRA_SEGMENT_BASE_ADDRESS 0x0000000e
-#define TME_LAST_FOUND 0x0000000f /* contains the offset of the last found entry */
-#define TME_LAST_FOUND_BLOCK 0x00000010
+#define DEFAULT_MEM_EX_SIZE 65536
+#define MAX_TME_DATA_BLOCKS 4
+#define TME_NONE_ACTIVE 0xffffffff
+#define DELTA_READ 2 /* secs */
+
+#define TME_LUT_ENTRIES 0x00000000
+#define TME_MAX_FILL_STATE 0x00000001 /*potrebbe servire per un thread a passive level!?!?! */
+#define TME_REHASHING_VALUE 0x00000002
+#define TME_KEY_LEN 0x00000003
+#define TME_SHARED_MEMORY_BLOCKS 0x00000004
+#define TME_FILLED_ENTRIES 0x00000005
+#define TME_BLOCK_SIZE 0x00000006
+#define TME_EXTRA_SEGMENT_SIZE 0x00000007
+#define TME_LOOKUP_CODE 0x00000008
+#define TME_OUT_LUT_EXEC 0x00000009
+#define TME_FILLED_BLOCKS 0x0000000a
+#define TME_DEFAULT_EXEC 0x0000000b
+#define TME_LUT_BASE_ADDRESS 0x0000000c
+#define TME_SHARED_MEMORY_BASE_ADDRESS 0x0000000d
+#define TME_EXTRA_SEGMENT_BASE_ADDRESS 0x0000000e
+#define TME_LAST_FOUND 0x0000000f /* contains the offset of the last found entry */
+#define TME_LAST_FOUND_BLOCK 0x00000010
/* TME default values */
-#define TME_LUT_ENTRIES_DEFAULT 32007
-#define TME_REHASHING_VALUE_DEFAULT 1
-#define TME_SHARED_MEMORY_BLOCKS_DEFAULT 16000
-#define TME_BLOCK_SIZE_DEFAULT 64
-#define TME_EXTRA_SEGMENT_SIZE_DEFAULT 0
-#define TME_LOOKUP_CODE_DEFAULT 0
-#define TME_OUT_LUT_EXEC_DEFAULT 0
-#define TME_DEFAULT_EXEC_DEFAULT 0
-#define TME_MAX_FILL_STATE_DEFAULT 15000
+#define TME_LUT_ENTRIES_DEFAULT 32007
+#define TME_REHASHING_VALUE_DEFAULT 1
+#define TME_SHARED_MEMORY_BLOCKS_DEFAULT 16000
+#define TME_BLOCK_SIZE_DEFAULT 64
+#define TME_EXTRA_SEGMENT_SIZE_DEFAULT 0
+#define TME_LOOKUP_CODE_DEFAULT 0
+#define TME_OUT_LUT_EXEC_DEFAULT 0
+#define TME_DEFAULT_EXEC_DEFAULT 0
+#define TME_MAX_FILL_STATE_DEFAULT 15000
#define IS_VALIDATED(src,index) (src&(1<<index))
typedef struct __RECORD
{
- uint32 block;
- uint32 exec_fcn;
+ uint32 block;
+ uint32 exec_fcn;
}
- RECORD, *PRECORD;
+ RECORD, *PRECORD;
/* TME data registers */
struct __TME_DATA
{
- uint32 lut_entries;
- uint32 max_fill_state;
- uint32 rehashing_value;
- uint32 key_len;
- uint32 shared_memory_blocks;
- uint32 filled_entries;
- uint32 block_size;
- uint32 extra_segment_size;
- uint32 filled_blocks;
- lut_fcn lookup_code;
- uint32 default_exec;
- uint32 out_lut_exec;
- uint8 *lut_base_address;
- uint8 *shared_memory_base_address;
- uint8 *extra_segment_base_address;
- struct timeval last_read;
- uint32 enable_deletion;
- uint8 *last_found;
+ uint32 lut_entries;
+ uint32 max_fill_state;
+ uint32 rehashing_value;
+ uint32 key_len;
+ uint32 shared_memory_blocks;
+ uint32 filled_entries;
+ uint32 block_size;
+ uint32 extra_segment_size;
+ uint32 filled_blocks;
+ lut_fcn lookup_code;
+ uint32 default_exec;
+ uint32 out_lut_exec;
+ uint8 *lut_base_address;
+ uint8 *shared_memory_base_address;
+ uint8 *extra_segment_base_address;
+ struct timeval last_read;
+ uint32 enable_deletion;
+ uint8 *last_found;
};
typedef struct __TME_DATA TME_DATA,*PTME_DATA;
/* TME core */
typedef struct __TME_CORE
{
- uint32 working;
- uint32 active;
- uint32 validated_blocks;
- TME_DATA block_data[MAX_TME_DATA_BLOCKS];
- uint32 active_read;
-
+ uint32 working;
+ uint32 active;
+ uint32 validated_blocks;
+ TME_DATA block_data[MAX_TME_DATA_BLOCKS];
+ uint32 active_read;
+
} TME_CORE, *PTME_CORE;
static __inline int32 IS_DELETABLE(void *timestamp, TME_DATA *data)
{
- struct timeval *ts=(struct timeval*)timestamp;
-
- if (data->enable_deletion==FALSE)
- return FALSE;
- if (data->filled_entries<data->max_fill_state)
- return FALSE;
- if ((ts->tv_sec+DELTA_READ)<data->last_read.tv_sec)
- return TRUE;
- return FALSE;
+ struct timeval *ts=(struct timeval*)timestamp;
+
+ if (data->enable_deletion==FALSE)
+ return FALSE;
+ if (data->filled_entries<data->max_fill_state)
+ return FALSE;
+ if ((ts->tv_sec+DELTA_READ)<data->last_read.tv_sec)
+ return TRUE;
+ return FALSE;
}
/* functions to manage TME */