#include "hwcl.h"
+static class cl_mem_error_registry mem_error_registry;
+
/*
* 3rd version of memory system
*/
/* All of memory errors */
-class cl_error_class *cl_error_mem::error_mem_class;
-
cl_error_mem::cl_error_mem(class cl_memory *amem, t_addr aaddr)
{
mem= amem;
addr= aaddr;
- if (NULL == error_mem_class)
- error_mem_class= new cl_error_class(err_error, "memory", classification, ERROR_OFF);
- classification= error_mem_class;
+ classification= mem_error_registry.find("memory");
}
/* Invalid address in memory access */
-class cl_error_class *cl_error_mem_invalid_address::error_mem_invalid_address_class;
-
cl_error_mem_invalid_address::
cl_error_mem_invalid_address(class cl_memory *amem, t_addr aaddr):
cl_error_mem(amem, aaddr)
{
- if (NULL == error_mem_invalid_address_class)
- error_mem_invalid_address_class= new cl_error_class(err_error, "invalid_address", classification);
- classification= error_mem_invalid_address_class;
+ classification= mem_error_registry.find("invalid_address");
}
void
/* Non-decoded address space access */
-class cl_error_class *cl_error_mem_non_decoded::error_mem_non_decoded_class;
-
cl_error_mem_non_decoded::
cl_error_mem_non_decoded(class cl_memory *amem, t_addr aaddr):
cl_error_mem(amem, aaddr)
{
- if (NULL == error_mem_non_decoded_class)
- error_mem_non_decoded_class= new cl_error_class(err_error, "non_decoded", classification);
- classification= error_mem_non_decoded_class;
+ classification= mem_error_registry.find("non_decoded");
}
void
cmd_fprintf(f, " in memory %s.\n", mem->get_name());
}
+cl_mem_error_registry::cl_mem_error_registry(void)
+{
+ class cl_error_class *prev = mem_error_registry.find("non-classified");
+ prev = register_error(new cl_error_class(err_error, "memory", prev, ERROR_OFF));
+ prev = register_error(new cl_error_class(err_error, "invalid_address", prev));
+ prev = register_error(new cl_error_class(err_error, "non_decoded", prev));
+}
+
/* End of mem.cc */