commit: r486 - in libspreadutil/trunk: . include src
[email protected] Mon, 05 Mar 2012 17:48:30 -0500
| Newsgroups | gmane.network.spread.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: jonathan Date: 2012-03-05 17:48:30 -0500 (Mon, 05 Mar 2012) New Revision: 486 Modified: libspreadutil/trunk/Changelog libspreadutil/trunk/include/spu_memory.h libspreadutil/trunk/src/events.c libspreadutil/trunk/src/memory.c Log: Add obj_name field to Mem_init_object() function. This is API change. Modified: libspreadutil/trunk/Changelog =================================================================== --- libspreadutil/trunk/Changelog 2012-03-05 21:15:49 UTC (rev 485) +++ libspreadutil/trunk/Changelog 2012-03-05 22:48:30 UTC (rev 486) @@ -1,3 +1,9 @@ +Mon Mar 5 17:21:14 2012 Jonathan Stanton <[email protected]> + + * src/memory.c (Mem_init_object): Add "obj_name" field to Mem_init_object() to provide a + nice name to print in error messages. This replaces the hard-coded string names in + Objnum_to_String(). This is a API change. + March 04, 2012 -------------- Complete changes to add new independant configure based build system for the library, with support for windows and autoconf systems. Modified: libspreadutil/trunk/include/spu_memory.h =================================================================== --- libspreadutil/trunk/include/spu_memory.h 2012-03-05 21:15:49 UTC (rev 485) +++ libspreadutil/trunk/include/spu_memory.h 2012-03-05 22:48:30 UTC (rev 486) @@ -50,17 +50,17 @@ * Function Declarations ************************************/ -/* Input: valid object type, size of object, threshold/watermark value for this object, +/* Input: valid object type, name of object, size of object, threshold/watermark value for this object, * number of initial objects to create * Output: error code * Effects: registers type, sets watermark for type,creates initial memory buffers and updates global vars * Should ONLY be called once per execution of the program, but must be called before any other * memory management function is used on that object */ -int Mem_init_object(int32u obj_type, int32u size, unsigned int threshold, unsigned int initial); +int Mem_init_object(int32u obj_type, char *obj_name, int32u size, unsigned int threshold, unsigned int initial); /* This calls Mem_init_object and if any error results it EXIT's with a printed error */ -void Mem_init_object_abort( int32u obj_type, int32u size, unsigned int threshold, unsigned int initial ); +void Mem_init_object_abort( int32u obj_type, char *obj_name, int32u size, unsigned int threshold, unsigned int initial ); /* This initializes the status reporting of the memory module and should be called from * status.c after the Group, Recod, and RefRecord objects are mem_init'ed. Modified: libspreadutil/trunk/src/events.c =================================================================== --- libspreadutil/trunk/src/events.c 2012-03-05 21:15:49 UTC (rev 485) +++ libspreadutil/trunk/src/events.c 2012-03-05 22:48:30 UTC (rev 486) @@ -127,7 +127,7 @@ Time_queue = NULL; - ret = Mem_init_object(TIME_EVENT, sizeof(time_event), 100,0); + ret = Mem_init_object(TIME_EVENT, "time_event", sizeof(time_event), 100,0); if (ret < 0) { Alarm(EXIT, "E_Init: Failure to Initialize TIME_EVENT memory objects\n"); Modified: libspreadutil/trunk/src/memory.c =================================================================== --- libspreadutil/trunk/src/memory.c 2012-03-05 21:15:49 UTC (rev 485) +++ libspreadutil/trunk/src/memory.c 2012-03-05 22:48:30 UTC (rev 486) @@ -84,6 +84,10 @@ size_t block_len; } mem_header; +#define MAX_OBJNAME 35 +#define DEFAULT_OBJNAME "Unknown Obj" + + /* NOTE: Only num_obj_inpool is updated when debugging is turned off * (i.e. define NDEBUG) it is NECESSARY to track buffer pool size */ @@ -92,6 +96,7 @@ bool exist; /* 1 = object registered, 0 = unused object number */ size_t size; /* size of object in bytes (should be from sizeof so aligned ) */ unsigned int threshold; + char obj_name[MAX_OBJNAME + 1]; /* Name of the object */ #ifndef NDEBUG unsigned int bytes_allocated; unsigned int max_bytes; @@ -266,23 +271,21 @@ return; #endif } -void Mem_init_object_abort( int32u obj_type, int32u size, unsigned int threshold, unsigned int initial ) +void Mem_init_object_abort( int32u obj_type, char *obj_name, int32u size, unsigned int threshold, unsigned int initial ) { - char *obj_name; int ret; - ret = Mem_init_object( obj_type, size, threshold, initial ); + ret = Mem_init_object( obj_type, obj_name, size, threshold, initial ); if (ret < 0 ) { - obj_name = Objnum_to_String( obj_type ); Alarm( EXIT, "Mem_init_object_abort: Failed to initialize a/an %s object\n", obj_name); } } -/* Input: valid object type, threshold/watermark value for this object, initial objects to create +/* Input: valid object type, name of object, threshold/watermark value for this object, initial objects to create * Output: none * Effects: sets watermark for type,creates initial memory buffers and updates global vars * Should ONLY be called once per execution of the program */ -int Mem_init_object(int32u obj_type, int32u size, unsigned int threshold, unsigned int initial) +int Mem_init_object(int32u obj_type, char *obj_name, int32u size, unsigned int threshold, unsigned int initial) { int mem_error = 0; #ifdef SPREAD_STATUS @@ -321,6 +324,14 @@ Mem[obj_type].exist = TRUE; Mem[obj_type].size = size; Mem[obj_type].threshold = threshold; + + if (obj_name == NULL || strlen(obj_name) > MAX_OBJNAME) { + strncpy(Mem[obj_type].obj_name, DEFAULT_OBJNAME, MAX_OBJNAME); + } else { + strncpy(Mem[obj_type].obj_name, obj_name, MAX_OBJNAME); + } + Mem[obj_type].obj_name[MAX_OBJNAME] = '\0'; + /* Only enabled when MEM_DISABLE_CACHE set. Disable threshold so all memory is dellocated at dispose() */ #ifdef MEM_DISABLE_CACHE Mem[obj_type].threshold = 0; @@ -823,100 +834,12 @@ char *Objnum_to_String(int32u oid) { + if (Mem[oid].exist) { + return(Mem[oid].obj_name); + } else { + return("NO SUCH OBJECT"); + } -#if ( SPREAD_PROTOCOL == 3 ) - - switch(oid) - { - case BASE_OBJ: - return("base_obj"); - case PACK_HEAD_OBJ: - return("pack_head_obj"); - case MESSAGE_OBJ: - return("message_obj"); - case MSG_FRAG_OBJ: - return("msg_frag_obj"); - case RET_REQ_OBJ: - return("ret_req_obj"); - case LINK_ACK_OBJ: - return("link_ack_obj"); - case ARU_UPDATE_OBJ: - return("aru_update_obj"); - case TOKEN_HEAD_OBJ: - return("token_head_obj"); - case TOKEN_BODY_OBJ: - return("token_body_obj"); - case JOIN_OBJ: - return("join_obj"); - case REFER_OBJ: - return("refer_obj"); - case ALIVE_OBJ: - return("alive_obj"); - case SCATTER: - return("scatter"); - case QUEUE_ELEMENT: - return("queue_element"); - case QUEUE: - return("queue"); - case RETRANS_ENTRY: - return("retrans_entry"); - case RING_LINK_OBJ: - return("ring_link_obj"); - case HOP_LINK_OBJ: - return("hop_link_obj"); - case MESSAGE_LINK: - return("message_link"); - case DOWN_LINK: - return("down_link"); - case TREE_NODE: - return("tree_node"); - case MESSAGE_FRAG_LIST: - return("message_frag_list"); - case LBUCKET: - return("leaky_bucket"); - case GROUP: - return("group"); - case MEMBER: - return("member"); - case MSG_LIST_ENTRY: - return("msg_list_entry"); - case SESS_SEQ_ENTRY: - return("sess_seq_entry"); - case TIME_EVENT: - return("time_event"); - case ROUTE_WEIGHTS: - return("route_weights"); - case PROF_FUNCT: - return("prof_funct"); - case QUEUE_SET: - return("queue_set"); - case MQUEUE_ELEMENT: - return("mqueue_element"); - case TCP_LINK_OBJ: - return("tcp_link_object"); - case MESSAGE_META_OBJ: - return("message_meta_object"); - case PROC_RECORD: - return("proc_info"); - case SYS_SCATTER: - return("sys_scatter"); - case STAT_RECORD: - return("status_record"); - case STAT_GROUP: - return("status_group"); - case STAT_REFRECORD: - return("status_refrecord"); - case STATETRANS_OBJ: - return("statetrans_obj"); - case PACKET_BODY: - return("packet_body"); - case SESSION_AUTH_INFO: - return("session_auth_info"); - default: - return("Unknown_obj"); - } -#endif - return("Unknown_obj"); }